diff options
author | Rich Felker <dalias@aerifal.cx> | 2018-10-16 14:08:01 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2018-10-16 14:11:46 -0400 |
commit | a4a3e4dbc086eb58e5cf6118480ef4825788e231 (patch) | |
tree | 25d6ffb2cedf301bf69306e87b36aa5b3a68dbcb /arch/mips | |
parent | 7f01a734feddaabf366bc644c926e675656cab62 (diff) | |
download | musl-a4a3e4dbc086eb58e5cf6118480ef4825788e231.tar.gz musl-a4a3e4dbc086eb58e5cf6118480ef4825788e231.tar.bz2 musl-a4a3e4dbc086eb58e5cf6118480ef4825788e231.tar.xz musl-a4a3e4dbc086eb58e5cf6118480ef4825788e231.zip |
make thread-pointer-loading asm non-volatile
this will allow the compiler to cache and reuse the result, meaning we
no longer have to take care not to load it more than once for the sake
of archs where the load may be expensive.
depends on commit 1c84c99913bf1cd47b866ed31e665848a0da84a2 for
correctness, since otherwise the compiler could hoist loads during
stage 3 of dynamic linking before the initial thread-pointer setup.
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/pthread_arch.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/mips/pthread_arch.h b/arch/mips/pthread_arch.h index 5fea15ad..1e7839ea 100644 --- a/arch/mips/pthread_arch.h +++ b/arch/mips/pthread_arch.h @@ -2,10 +2,10 @@ static inline struct pthread *__pthread_self() { #if __mips_isa_rev < 2 register char *tp __asm__("$3"); - __asm__ __volatile__ (".word 0x7c03e83b" : "=r" (tp) ); + __asm__ (".word 0x7c03e83b" : "=r" (tp) ); #else char *tp; - __asm__ __volatile__ ("rdhwr %0, $29" : "=r" (tp) ); + __asm__ ("rdhwr %0, $29" : "=r" (tp) ); #endif return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); } |