summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libc/private/bionic_tls.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 225a617..61b894f 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -89,7 +89,8 @@ extern int __set_tls(void* ptr);
(volatile void*) __val; })
#elif defined(__mips__)
# define __get_tls() \
- ({ register unsigned int __val; \
+ /* On mips32r1, this goes via a kernel illegal instruction trap that's optimized for v1. */ \
+ ({ register unsigned int __val asm("v1"); \
asm (" .set push\n" \
" .set mips32r2\n" \
" rdhwr %0,$29\n" \