X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=arch%2Farm%2Fpthread_arch.h;h=e689ea212ae22e148788deec9e74f5b2e9f49f7d;hb=22359b54ab9a3ff0a854490f3eb0fcb838e785af;hp=6657e198eed3edbf1cf99d10b6eb011774d2c279;hpb=749a06b4c55d823d8a74b4e3f607c65006db271b;p=musl diff --git a/arch/arm/pthread_arch.h b/arch/arm/pthread_arch.h index 6657e198..e689ea21 100644 --- a/arch/arm/pthread_arch.h +++ b/arch/arm/pthread_arch.h @@ -4,8 +4,8 @@ static inline pthread_t __pthread_self() { char *p; - __asm__ __volatile__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) ); - return (void *)(p+8-sizeof(struct pthread)); + __asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) ); + return (void *)(p-sizeof(struct pthread)); } #else @@ -18,15 +18,16 @@ static inline pthread_t __pthread_self() static inline pthread_t __pthread_self() { - extern uintptr_t __attribute__((__visibility__("hidden"))) __a_gettp_ptr; + extern hidden uintptr_t __a_gettp_ptr; register uintptr_t p __asm__("r0"); - __asm__ __volatile__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" ); - return (void *)(p+8-sizeof(struct pthread)); + __asm__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" ); + return (void *)(p-sizeof(struct pthread)); } #endif #define TLS_ABOVE_TP -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8) +#define GAP_ABOVE_TP 8 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) #define MC_PC arm_pc