aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/i386/tls.h
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/i386/tls.h')
-rw-r--r--linuxthreads/sysdeps/i386/tls.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/linuxthreads/sysdeps/i386/tls.h b/linuxthreads/sysdeps/i386/tls.h
index 870832c6f0..ed5e634a82 100644
--- a/linuxthreads/sysdeps/i386/tls.h
+++ b/linuxthreads/sysdeps/i386/tls.h
@@ -42,7 +42,7 @@ typedef struct
/* We can support TLS only if the floating-stack support is available. */
-#if FLOATING_STACKS && defined HAVE_TLS_SUPPORT
+#ifdef HAVE_TLS_SUPPORT
/* Get system call information. */
# include <sysdep.h>
@@ -94,11 +94,16 @@ typedef struct
/* Return the address of the dtv for the current thread. */
-# define THREAD_DTV() \
+# if FLOATING_STACKS
+# define THREAD_DTV() \
({ struct _pthread_descr_struct *__descr; \
THREAD_GETMEM (__descr, p_header.data.dtvp); })
+# else
+# define THREAD_DTV() \
+ ({ struct _pthread_descr_struct *__descr = thread_self (); \
+ THREAD_GETMEM (__descr, p_header.data.dtvp); })
+# endif
-
-#endif
+#endif /* HAVE_TLS_SUPPORT */
#endif /* tls.h */