From a4a3e4dbc086eb58e5cf6118480ef4825788e231 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 16 Oct 2018 14:08:01 -0400 Subject: 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. --- arch/or1k/pthread_arch.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arch/or1k') diff --git a/arch/or1k/pthread_arch.h b/arch/or1k/pthread_arch.h index 521b9c53..1b806f89 100644 --- a/arch/or1k/pthread_arch.h +++ b/arch/or1k/pthread_arch.h @@ -3,10 +3,10 @@ static inline struct pthread *__pthread_self() { #ifdef __clang__ char *tp; - __asm__ __volatile__ ("l.ori %0, r10, 0" : "=r" (tp) ); + __asm__ ("l.ori %0, r10, 0" : "=r" (tp) ); #else register char *tp __asm__("r10"); - __asm__ __volatile__ ("" : "=r" (tp) ); + __asm__ ("" : "=r" (tp) ); #endif return (struct pthread *) (tp - sizeof(struct pthread)); } -- cgit v1.2.1