Loading...
pthreads/pthread_internals.h Libc-498 Libc-498.1.7
--- Libc/Libc-498/pthreads/pthread_internals.h
+++ Libc/Libc-498.1.7/pthreads/pthread_internals.h
@@ -367,7 +367,7 @@
 
 #include "pthread.h"
 
-#if defined(__i386__) || defined(__ppc64__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__ppc64__) || defined(__x86_64__) || defined(__arm__)
 /*
  * Inside libSystem, we can use r13 or %gs directly to get access to the
  * thread-specific data area. The current thread is in the first slot.
@@ -380,6 +380,9 @@
        asm("mov %%gs:%P1, %0" : "=r" (ret) : "i" (offsetof(struct _pthread, tsd[0])));
 #elif defined(__ppc64__)
 	register const pthread_t __pthread_self asm ("r13");
+	ret = __pthread_self;
+#elif defined(__arm__)
+	register const pthread_t __pthread_self asm ("r9");
 	ret = __pthread_self;
 #endif
        return ret;