diff options
author | Matheus Castanho <msc@linux.ibm.com> | 2020-10-19 11:06:56 -0300 |
---|---|---|
committer | Matheus Castanho <msc@linux.ibm.com> | 2020-11-24 14:15:01 -0300 |
commit | 1e0a7fd0997ad5454d3fee480ceb392c4b49c064 (patch) | |
tree | 7b8cd1d8bd55daaae0d6b60df1beae212ce28f49 | |
parent | 29fddfc7dfd6444fa61a256e9a0d0127545e1f2e (diff) | |
download | glibc-1e0a7fd0997ad5454d3fee480ceb392c4b49c064.tar glibc-1e0a7fd0997ad5454d3fee480ceb392c4b49c064.tar.gz glibc-1e0a7fd0997ad5454d3fee480ceb392c4b49c064.tar.bz2 glibc-1e0a7fd0997ad5454d3fee480ceb392c4b49c064.zip |
powerpc: Make PT_THREAD_POINTER available to assembly code
PT_THREAD_POINTER is currenty defined inside a #ifndef __ASSEMBLER__ block, but
its usage should not be limited to C code, as it can be useful when accessing
the TLS from assembly code as well.
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
-rw-r--r-- | sysdeps/powerpc/nptl/tls.h | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/sysdeps/powerpc/nptl/tls.h b/sysdeps/powerpc/nptl/tls.h index 261eecfd18..d585968d04 100644 --- a/sysdeps/powerpc/nptl/tls.h +++ b/sysdeps/powerpc/nptl/tls.h @@ -29,8 +29,24 @@ #else /* __ASSEMBLER__ */ # include <tcb-offsets.h> +# define __ASSEMBLY__ +# include <asm/ptrace.h> #endif /* __ASSEMBLER__ */ +#ifndef __powerpc64__ +/* Register r2 (tp) is reserved by the ABI as "thread pointer". */ +# define PT_THREAD_POINTER PT_R2 +# ifndef __ASSEMBLER__ +register void *__thread_register __asm__ ("r2"); +# endif + +#else /* __powerpc64__ */ +/* Register r13 (tp) is reserved by the ABI as "thread pointer". */ +# define PT_THREAD_POINTER PT_R13 +# ifndef __ASSEMBLER__ +register void *__thread_register __asm__ ("r13"); +# endif +#endif /* __powerpc64__ */ #ifndef __ASSEMBLER__ @@ -106,16 +122,6 @@ typedef struct (sizeof (struct pthread) \ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) -# ifndef __powerpc64__ -/* Register r2 (tp) is reserved by the ABI as "thread pointer". */ -register void *__thread_register __asm__ ("r2"); -# define PT_THREAD_POINTER PT_R2 -# else -/* Register r13 (tp) is reserved by the ABI as "thread pointer". */ -register void *__thread_register __asm__ ("r13"); -# define PT_THREAD_POINTER PT_R13 -# endif - /* The following assumes that TP (R2 or R13) points to the end of the TCB + 0x7000 (per the ABI). This implies that TCB address is TP - 0x7000. As we define TLS_DTV_AT_TP we can |