summaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/powerpc
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2004-09-22 21:21:10 +0000
committerRoland McGrath <roland@gnu.org>2004-09-22 21:21:10 +0000
commitb5707b44d25d7af61b0338c2a2206c036eaf7337 (patch)
treed8b9e865cbc78d64835a63959370865a2a043223 /linuxthreads/sysdeps/powerpc
parent4ff389feb39f2eb649530b843d478c80c27ab4cf (diff)
Changes and additions migrated from cvs.devel.redhat.com:/cvs/devel/glibc to fedora-branch
Diffstat (limited to 'linuxthreads/sysdeps/powerpc')
-rw-r--r--linuxthreads/sysdeps/powerpc/tls.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/linuxthreads/sysdeps/powerpc/tls.h b/linuxthreads/sysdeps/powerpc/tls.h
index f6eb48b434..fda953976e 100644
--- a/linuxthreads/sysdeps/powerpc/tls.h
+++ b/linuxthreads/sysdeps/powerpc/tls.h
@@ -64,11 +64,19 @@ typedef struct
# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
/* This is the size we need before TCB. */
-# define TLS_PRE_TCB_SIZE \
+# ifndef IS_IN_rtld
+# define TLS_PRE_TCB_SIZE \
(sizeof (struct _pthread_descr_struct) \
+ ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
+# else
+# include <nptl-struct-pthread.h>
+# define TLS_PRE_TCB_SIZE \
+ ((sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \
+ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) \
+ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
+# endif
-/* The following assumes that TP (R2 or R13) is points to the end of the
+/* The following assumes that TP (R2 or R13) points to the end of the
TCB + 0x7000 (per the ABI). This implies that TCB address is
TP - 0x7000. As we define TLS_DTV_AT_TP we can
assume that the pthread_descr is allocated immediately ahead of the