don't hardcode register r0/v1 when reading the TLS
this leads to much improved code when calling __get_tls()
Change-Id: I21d870fb33c33a921ca55c4e100772e0f7a8d1e4
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 56a0ac2..225a617 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -84,20 +84,17 @@
/* get the TLS */
#if defined(__arm__)
# define __get_tls() \
- ({ register unsigned int __val asm("r0"); \
- asm ("mrc p15, 0, r0, c13, c0, 3" : "=r"(__val) ); \
- (volatile void*)__val; })
+ ({ register unsigned int __val; \
+ asm ("mrc p15, 0, %0, c13, c0, 3" : "=r"(__val)); \
+ (volatile void*) __val; })
#elif defined(__mips__)
# define __get_tls() \
- ({ register unsigned int __val asm("v1"); \
- asm ( \
- " .set push\n" \
- " .set mips32r2\n" \
- " rdhwr %0,$29\n" \
- " .set pop\n" \
- : "=r"(__val) \
- ); \
- (volatile void*)__val; })
+ ({ register unsigned int __val; \
+ asm (" .set push\n" \
+ " .set mips32r2\n" \
+ " rdhwr %0,$29\n" \
+ " .set pop\n" : "=r"(__val)); \
+ (volatile void*) __val; })
#elif defined(__i386__)
# define __get_tls() \
({ register void* __val; \