about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-07-29 09:01:04 -0700
committerUlrich Drepper <drepper@redhat.com>2009-07-29 09:01:04 -0700
commit586fa886ad1473759cddf897691fd3c63a6d2360 (patch)
treecdf7ee2bdd0e4276d16c5feec9fed0a5dc9e783f /nptl
parent649bf1332071954cbae3e9159708aea1b7c9ae31 (diff)
downloadglibc-586fa886ad1473759cddf897691fd3c63a6d2360.tar.gz
glibc-586fa886ad1473759cddf897691fd3c63a6d2360.tar.xz
glibc-586fa886ad1473759cddf897691fd3c63a6d2360.zip
Fix x86-64 TCB alignment for future processor versions.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog10
-rw-r--r--nptl/sysdeps/x86_64/tls.h7
2 files changed, 13 insertions, 4 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 24fd28a0dc..20031b5ae6 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,9 +1,13 @@
 2009-07-29  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Define explicitly to 32.
+
 	* sysdeps/x86_64/tls.h (tcbhead_t): Add room for SSE registers the
-	dynamic linker might have to save.  Define RTLD_CHECK_FOREIGN_CALL,
-	RTLD_ENABLE_FOREIGN_CALL, RTLD_PREPARE_FOREIGN_CALL, and
-	RTLD_FINALIZE_FOREIGN_CALL.  Pretty printing.
+	dynamic linker might have to save.
+	Define RTLD_CHECK_FOREIGN_CALL, RTLD_ENABLE_FOREIGN_CALL,
+	RTLD_PREPARE_FOREIGN_CALL, and RTLD_FINALIZE_FOREIGN_CALL.  Pretty
+	printing.
+
 	* sysdeps/x86_64/tcb-offsets.sym: Add RTLD_SAVESPACE_SSE.
 
 2009-07-28  Ulrich Drepper  <drepper@redhat.com>
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index a51b77052a..4212038ab5 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -117,7 +117,12 @@ typedef struct
 # define TLS_TCB_SIZE sizeof (struct pthread)
 
 /* Alignment requirements for the TCB.  */
-# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+//# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+// Normally the above would be correct  But we have to store post-AVX
+// vector registers in the TCB and we want the storage to be aligned.
+// unfortunately there isn't yet a type for these values and hence no
+// 32-byte alignment requirement.  Make this explicit, for now.
+# define TLS_TCB_ALIGN 32
 
 /* The TCB can have any size and the memory following the address the
    thread pointer points to is unspecified.  Allocate the TCB there.  */