From 1e0a7fd0997ad5454d3fee480ceb392c4b49c064 Mon Sep 17 00:00:00 2001 From: Matheus Castanho Date: Mon, 19 Oct 2020 11:06:56 -0300 Subject: 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 --- sysdeps/powerpc/nptl/tls.h | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'sysdeps/powerpc') diff --git a/sysdeps/powerpc/nptl/tls.h b/sysdeps/powerpc/nptl/tls.h index 261eecf..d585968 100644 --- a/sysdeps/powerpc/nptl/tls.h +++ b/sysdeps/powerpc/nptl/tls.h @@ -29,8 +29,24 @@ #else /* __ASSEMBLER__ */ # include +# define __ASSEMBLY__ +# include #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 -- cgit v1.1