diff options
Diffstat (limited to 'linuxthreads/sysdeps/i386/tls.h')
-rw-r--r-- | linuxthreads/sysdeps/i386/tls.h | 13 |
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 */ |