fix undefined behavior in scanf core
[musl] / arch / aarch64 / pthread_arch.h
index b2e2d8f..e64b126 100644 (file)
@@ -1,11 +1,12 @@
 static inline struct pthread *__pthread_self()
 {
        char *self;
-       __asm__ __volatile__ ("mrs %0,tpidr_el0" : "=r"(self));
-       return (void*)(self + 16 - sizeof(struct pthread));
+       __asm__ ("mrs %0,tpidr_el0" : "=r"(self));
+       return (void*)(self - sizeof(struct pthread));
 }
 
 #define TLS_ABOVE_TP
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 16)
+#define GAP_ABOVE_TP 16
+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))
 
 #define MC_PC pc