[glibc/arm/morello/main] aarch64: morello: nptl: fix thread pointer setup

Szabolcs Nagy nsz@sourceware.org
Fri Aug 5 19:34:59 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=01faa1bcd44274b672ab75f13fd7282c9ce9656d

commit 01faa1bcd44274b672ab75f13fd7282c9ce9656d
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date:   Wed Jul 13 12:15:16 2022 +0100

    aarch64: morello: nptl: fix thread pointer setup

Diff:
---
 sysdeps/aarch64/nptl/tls.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sysdeps/aarch64/nptl/tls.h b/sysdeps/aarch64/nptl/tls.h
index 8d62b31e23..92eb5a3b51 100644
--- a/sysdeps/aarch64/nptl/tls.h
+++ b/sysdeps/aarch64/nptl/tls.h
@@ -71,8 +71,13 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
+# ifdef __CHERI_PURE_CAPABILITY__
+# define TLS_INIT_TP(tcbp) \
+  ({ __asm __volatile ("msr ctpidr_el0, %0" : : "r" (tcbp)); NULL; })
+# else
 # define TLS_INIT_TP(tcbp) \
   ({ __asm __volatile ("msr tpidr_el0, %0" : : "r" (tcbp)); NULL; })
+# endif
 
 /* Value passed to 'clone' for initialization of the thread register.  */
 # define TLS_DEFINE_INIT_TP(tp, pd) void *tp = (pd) + 1


More information about the Glibc-cvs mailing list