From d9038ff837089bcef3623b362cbe8ea5e96b2d87 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 20 Dec 2005 15:28:51 +0000 Subject: * sysdeps/unix/sysv/linux/sh/sysdep.h: Include tls.h. (PTR_MANGLE, PTR_DEMANGLE): Define. (SYSCALL_ERROR_HANDLER): Fix typo. * sysdeps/sh/sh4/__longjmp.S: Use PTR_DEMANGLE if defined. * sysdeps/sh/sh3/__longjmp.S: Likewise. * sysdeps/sh/sh4/setjmp.S: Use PTR_MANGLE if defined. * sysdeps/sh/sh3/setjmp.S: Likewise. --- nptl/sysdeps/sh/tcb-offsets.sym | 1 + nptl/sysdeps/sh/tls.h | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'nptl') diff --git a/nptl/sysdeps/sh/tcb-offsets.sym b/nptl/sysdeps/sh/tcb-offsets.sym index 539789a817..4ad866335b 100644 --- a/nptl/sysdeps/sh/tcb-offsets.sym +++ b/nptl/sysdeps/sh/tcb-offsets.sym @@ -9,3 +9,4 @@ CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf) MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) TLS_PRE_TCB_SIZE sizeof (struct pthread) MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock) +POINTER_GUARD offsetof (tcbhead_t, pointer_guard) diff --git a/nptl/sysdeps/sh/tls.h b/nptl/sysdeps/sh/tls.h index e883bae993..49d105518a 100644 --- a/nptl/sysdeps/sh/tls.h +++ b/nptl/sysdeps/sh/tls.h @@ -41,7 +41,7 @@ typedef union dtv typedef struct { dtv_t *dtv; - void *private; + uintptr_t pointer_guard; } tcbhead_t; # define TLS_MULTIPLE_THREADS_IN_TCB 1 @@ -140,6 +140,19 @@ typedef struct # define THREAD_SETMEM_NC(descr, member, idx, value) \ descr->member[idx] = (value) +#define THREAD_GET_POINTER_GUARD() \ + ({ tcbhead_t *__tcbp; \ + __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ + __tcbp->pointer_guard;}) + #define THREAD_SET_POINTER_GUARD(value) \ + ({ tcbhead_t *__tcbp; \ + __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ + __tcbp->pointer_guard = (value);}) +#define THREAD_COPY_POINTER_GUARD(descr) \ + ({ tcbhead_t *__tcbp; \ + __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ + ((tcbhead_t *) (descr + 1))->pointer_guard = __tcbp->pointer_guard;}) + #endif /* __ASSEMBLER__ */ #endif /* tls.h */ -- cgit v1.2.3