diff -Nru linux-old/arch/i386/kernel/head.S linux-new/arch/i386/kernel/head.S
--- linux-old/arch/i386/kernel/head.S	2002-10-23 20:58:10.000000000 -0400
+++ linux-new/arch/i386/kernel/head.S	2002-10-23 21:07:26.000000000 -0400
@@ -455,5 +455,5 @@
 	.quad 0x0000000000000000	/* 0x90 not used */
 	.quad 0x0000000000000000	/* 0x98 not used */
 	/* Per CPU segments */
-	.fill NR_CPUS*4,8,0		/* space for TSS's and LDT's */
+	.fill NR_CPUS*16,8,0		/* space for TSS's and LDT's, 128byte aligned for new x86 CPUs */
 
diff -Nru linux-old/include/asm-i386/desc.h linux-new/include/asm-i386/desc.h
--- linux-old/include/asm-i386/desc.h	2002-10-23 20:58:12.000000000 -0400
+++ linux-new/include/asm-i386/desc.h	2002-10-23 21:06:08.000000000 -0400
@@ -1,4 +1,4 @@
-#ifndef __ARCH_DESC_H
+#ifndef __ARCH_DESC_H
 #define __ARCH_DESC_H
 
 #include <asm/ldt.h>
@@ -34,10 +34,15 @@
  *  21 - CPU#0 LDT
  *  22 - not used 
  *  23 - not used 
- *  24 - CPU#1 TSS                          <-- new cacheline 
- *  25 - CPU#1 LDT
+ *  24 - not used
+ *  25 - not used
  *  26 - not used 
  *  27 - not used 
+ *  .. - not used
+ *  28 - CPU#1 TSS                          <-- new cacheline 
+ *  29 - CPU#1 LDT
+ *  30 - not used
+ *  31 - not used
  *  ... NR_CPUS per-CPU TSS+LDT's if on SMP
  *
  * Entry into gdt where to find first TSS.
@@ -45,8 +50,8 @@
 #define __FIRST_TSS_ENTRY 20
 #define __FIRST_LDT_ENTRY (__FIRST_TSS_ENTRY+1)
 
-#define __TSS(n) (((n)<<2) + __FIRST_TSS_ENTRY)
-#define __LDT(n) (((n)<<2) + __FIRST_LDT_ENTRY)
+#define __TSS(n) (((n)<<4) + __FIRST_TSS_ENTRY)
+#define __LDT(n) (((n)<<4) + __FIRST_LDT_ENTRY)
 
 #ifndef __ASSEMBLY__
 struct desc_struct {
