[MIPS] Support for TLS register
Change-Id: I6b5194e5e379b573e3b1203d8015e20fb3edd647
Signed-off-by: Chris Dearman <chris@mips.com>
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index af19554..4658866 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -127,9 +127,20 @@
# define __get_tls() ( *((volatile void **) 0xffff0ff0) )
# endif
# endif /* !LIBC_STATIC */
-#else /* !ARM */
+#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; })
+#else
extern void* __get_tls( void );
-#endif /* !ARM */
+#endif
/* return the stack base and size, used by our malloc debugger */
extern void* __get_stack_base(int *p_stack_size);