Align x86 TCB to 64 bytes (cache line size), important for Atom.
authorRoland McGrath <roland@hack.frob.com>
Sun, 14 Aug 2011 22:46:52 +0000 (15:46 -0700)
committerRoland McGrath <roland@hack.frob.com>
Mon, 15 Aug 2011 02:26:49 +0000 (19:26 -0700)
nptl/ChangeLog
nptl/sysdeps/i386/pthreaddef.h
nptl/sysdeps/x86_64/pthreaddef.h

index 1dc5f20..40d90e7 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-14  Roland McGrath  <roland@hack.frob.com>
+
+       * sysdeps/i386/pthreaddef.h (TCB_ALIGNMENT): Set to 64, optimal on Atom.
+       * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Likewise.
+
 2011-08-08  Andreas Schwab  <schwab@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned
index 43b771c..1e84066 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
 /* Minimal stack size after allocating thread descriptor and guard size.  */
 #define MINIMAL_REST_STACK     2048
 
-/* Alignment requirement for TCB.  */
-#define TCB_ALIGNMENT          16
+/* Alignment requirement for TCB.
+
+   Some processors such as Intel Atom pay a big penalty on every
+   access using a segment override if that segment's base is not
+   aligned to the size of a cache line.  (See Intel 64 and IA-32
+   Architectures Optimization Reference Manual, section 13.3.3.3,
+   "Segment Base".)  On such machines, a cache line is 64 bytes.  */
+#define TCB_ALIGNMENT          64
 
 
 /* Location of current stack frame.  */
index 8ec135c..9de4af2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2007,2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
 /* Minimal stack size after allocating thread descriptor and guard size.  */
 #define MINIMAL_REST_STACK     2048
 
-/* Alignment requirement for TCB.  Need to store post-AVX vector registers
-   in the TCB and we want the storage to be aligned at 32-byte.  */
-#define TCB_ALIGNMENT          32
+/* Alignment requirement for TCB.
+
+   We need to store post-AVX vector registers in the TCB and we want the
+   storage to be aligned to at least 32 bytes.
+
+   Some processors such as Intel Atom pay a big penalty on every
+   access using a segment override if that segment's base is not
+   aligned to the size of a cache line.  (See Intel 64 and IA-32
+   Architectures Optimization Reference Manual, section 13.3.3.3,
+   "Segment Base".)  On such machines, a cache line is 64 bytes.  */
+#define TCB_ALIGNMENT          64
 
 
 /* Location of current stack frame.  The frame pointer is not usable.  */