]> sourceware.org Git - glibc.git/commitdiff
powerpc: Use global register variable in <thread_pointer.h>
authorFlorian Weimer <fweimer@redhat.com>
Wed, 15 Dec 2021 15:06:25 +0000 (16:06 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Wed, 15 Dec 2021 15:06:25 +0000 (16:06 +0100)
A local register variable is merely a compiler hint, and so not
appropriate in this context.  Move the global register variable into
<thread_pointer.h> and include it from <tls.h>, as there can only
be one global definition for one particular register.

Fixes commit 8dbeb0561eeb876f557ac9eef5721912ec074ea5
("nptl: Add <thread_pointer.h> for defining __thread_pointer").

Reported-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Raphael M Zinsly <rzinsly@linux.ibm.com>
sysdeps/powerpc/nptl/thread_pointer.h
sysdeps/powerpc/nptl/tls.h

index 8fd5ba671f6f5e6426983a9ff9908311fd1311d6..4feba5961062cfaf1ed3ebedbeeaff22e85af56c 100644 (file)
 #ifndef _SYS_THREAD_POINTER_H
 #define _SYS_THREAD_POINTER_H
 
-static inline void *
-__thread_pointer (void)
-{
 #ifdef __powerpc64__
-  register void *__result asm ("r13");
+register void *__thread_register asm ("r13");
 #else
-  register void *__result asm ("r2");
+register void *__thread_register asm ("r2");
 #endif
-  return __result;
+
+static inline void *
+__thread_pointer (void)
+{
+  return __thread_register;
 }
 
 #endif /* _SYS_THREAD_POINTER_H */
index 63098f40483f52cccf4bf2d6d3990c58f694dbb9..d03fcb69831db5a8169bbe9d402fd2aeab0af86b 100644 (file)
@@ -26,6 +26,7 @@
 # include <stddef.h>
 # include <stdint.h>
 # include <dl-dtv.h>
+# include <thread_pointer.h>
 
 #else /* __ASSEMBLER__ */
 # include <tcb-offsets.h>
 #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__
This page took 0.047505 seconds and 5 git commands to generate.