Skip to contentSkip to conversation

x86_64 trap table fixup

PATCH New Chris Wright 1 participant 1 message Jul 4, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 x86_64 trap table fixup

Recent header file cleanup (cset 2b6c1a8098078f7e53de7cf72227fddf01f0b2b6) broke x86_64. The cleanup removed a padding field in trap_info_t, so the trap table set the address for each trap handler to zero.

---

linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/traps.c +23 -23
diff -r f8acd354e129 linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/traps.c
@@ -910,31 +910,31 @@
 
 
 static trap_info_t trap_table[] = {
-        {  0, 0, (__KERNEL_CS|0x3), 0, (unsigned long)divide_error               },
-        {  1, 0, (__KERNEL_CS|0x3), 0, (unsigned long)debug                      },
-        {  3, 3, (__KERNEL_CS|0x3), 0, (unsigned long)int3                       },
-        {  4, 3, (__KERNEL_CS|0x3), 0, (unsigned long)overflow                   },
-        {  5, 3, (__KERNEL_CS|0x3), 0, (unsigned long)bounds                     },
-        {  6, 0, (__KERNEL_CS|0x3), 0, (unsigned long)invalid_op                 },
-        {  7, 0, (__KERNEL_CS|0x3), 0, (unsigned long)device_not_available       },
-        {  9, 0, (__KERNEL_CS|0x3), 0, (unsigned long)coprocessor_segment_overrun},
-        { 10, 0, (__KERNEL_CS|0x3), 0, (unsigned long)invalid_TSS                },
-        { 11, 0, (__KERNEL_CS|0x3), 0, (unsigned long)segment_not_present        },
-        { 12, 0, (__KERNEL_CS|0x3), 0, (unsigned long)stack_segment              },
-        { 13, 0, (__KERNEL_CS|0x3), 0, (unsigned long)general_protection         },
-        { 14, 0, (__KERNEL_CS|0x3), 0, (unsigned long)page_fault                 },
-        { 15, 0, (__KERNEL_CS|0x3), 0, (unsigned long)spurious_interrupt_bug     },
-        { 16, 0, (__KERNEL_CS|0x3), 0, (unsigned long)coprocessor_error          },
-        { 17, 0, (__KERNEL_CS|0x3), 0, (unsigned long)alignment_check            },
+        {  0, 0, (__KERNEL_CS|0x3), (unsigned long)divide_error               },
+        {  1, 0, (__KERNEL_CS|0x3), (unsigned long)debug                      },
+        {  3, 3, (__KERNEL_CS|0x3), (unsigned long)int3                       },
+        {  4, 3, (__KERNEL_CS|0x3), (unsigned long)overflow                   },
+        {  5, 3, (__KERNEL_CS|0x3), (unsigned long)bounds                     },
+        {  6, 0, (__KERNEL_CS|0x3), (unsigned long)invalid_op                 },
+        {  7, 0, (__KERNEL_CS|0x3), (unsigned long)device_not_available       },
+        {  9, 0, (__KERNEL_CS|0x3), (unsigned long)coprocessor_segment_overrun},
+        { 10, 0, (__KERNEL_CS|0x3), (unsigned long)invalid_TSS                },
+        { 11, 0, (__KERNEL_CS|0x3), (unsigned long)segment_not_present        },
+        { 12, 0, (__KERNEL_CS|0x3), (unsigned long)stack_segment              },
+        { 13, 0, (__KERNEL_CS|0x3), (unsigned long)general_protection         },
+        { 14, 0, (__KERNEL_CS|0x3), (unsigned long)page_fault                 },
+        { 15, 0, (__KERNEL_CS|0x3), (unsigned long)spurious_interrupt_bug     },
+        { 16, 0, (__KERNEL_CS|0x3), (unsigned long)coprocessor_error          },
+        { 17, 0, (__KERNEL_CS|0x3), (unsigned long)alignment_check            },
 #ifdef CONFIG_X86_MCE
-        { 18, 0, (__KERNEL_CS|0x3), 0, (unsigned long)machine_check              },
-#endif
-        { 19, 0, (__KERNEL_CS|0x3), 0, (unsigned long)simd_coprocessor_error     },
-        { SYSCALL_VECTOR,  3, (__KERNEL_CS|0x3), 0, (unsigned long)system_call   },
+        { 18, 0, (__KERNEL_CS|0x3), (unsigned long)machine_check              },
+#endif
+        { 19, 0, (__KERNEL_CS|0x3), (unsigned long)simd_coprocessor_error     },
+        { SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), (unsigned long)system_call   },
 #ifdef CONFIG_IA32_EMULATION
-	{ IA32_SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), 0, (unsigned long)ia32_syscall},
-#endif
-        {  0, 0,           0, 0,  0                                              }
+	{ IA32_SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), (unsigned long)ia32_syscall},
+#endif
+        {  0, 0,           0, 0                                              }
 };
 
 void __init trap_init(void)