diff options
Diffstat (limited to 'arch/mips64/pthread_arch.h')
-rw-r--r-- | arch/mips64/pthread_arch.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/mips64/pthread_arch.h b/arch/mips64/pthread_arch.h index b42edbe3..e5812655 100644 --- a/arch/mips64/pthread_arch.h +++ b/arch/mips64/pthread_arch.h @@ -1,11 +1,11 @@ static inline struct pthread *__pthread_self() { -#ifdef __clang__ - char *tp; - __asm__ __volatile__ (".word 0x7c03e83b ; move %0, $3" : "=r" (tp) : : "$3" ); -#else +#if __mips_isa_rev < 2 register char *tp __asm__("$3"); __asm__ __volatile__ (".word 0x7c03e83b" : "=r" (tp) ); +#else + char *tp; + __asm__ __volatile__ ("rdhwr %0, $29" : "=r" (tp) ); #endif return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); } |