OSDN Git Service

Always use v1 for MIPS TLS access.
authorElliott Hughes <enh@google.com>
Tue, 18 Jun 2013 20:26:22 +0000 (13:26 -0700)
committerElliott Hughes <enh@google.com>
Tue, 18 Jun 2013 20:26:22 +0000 (13:26 -0700)
Change-Id: Ic2850b90185cfbc5b0eff804c8b74a1c553c0852

libc/private/bionic_tls.h

index 225a617..61b894f 100644 (file)
@@ -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" \