Messages in this thread Patch in this message | | | Date | Sun, 3 Nov 1996 18:54:53 -0800 | From | "Leonard N. Zubkoff" <> | Subject | Exception 15 |
| |
Well, wouldn't you know that I'd finally get hit by the spurious exception 15 bug today myself. Here's a new patch that ignores only exception 15.
Leonard
--- linux/arch/i386/kernel/traps.c- Sat Oct 5 04:25:51 1996 +++ linux/arch/i386/kernel/traps.c Sun Nov 3 11:19:43 1996 @@ -81,6 +81,7 @@ asmlinkage void coprocessor_error(void); asmlinkage void reserved(void); asmlinkage void alignment_check(void); +asmlinkage void spurious_interrupt_bug(void); int kstack_depth_to_print = 24; @@ -173,8 +174,8 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS, current) DO_ERROR(11, SIGBUS, "segment not present", segment_not_present, current) DO_ERROR(12, SIGBUS, "stack segment", stack_segment, current) -DO_ERROR(15, SIGSEGV, "reserved", reserved, current) DO_ERROR(17, SIGSEGV, "alignment check", alignment_check, current) +DO_ERROR(18, SIGSEGV, "reserved", reserved, current) asmlinkage void do_general_protection(struct pt_regs * regs, long error_code) { @@ -258,6 +259,12 @@ math_error(); } +asmlinkage void do_spurious_interrupt_bug(struct pt_regs * regs, + long error_code) +{ + printk("Ignoring P6 Local APIC Spurious Interrupt Bug...\n"); +} + /* * 'math_state_restore()' saves the current math information in the * old math state array, and gets the new ones from the current task @@ -343,7 +350,7 @@ set_trap_gate(12,&stack_segment); set_trap_gate(13,&general_protection); set_trap_gate(14,&page_fault); - set_trap_gate(15,&reserved); + set_trap_gate(15,&spurious_interrupt_bug); set_trap_gate(16,&coprocessor_error); set_trap_gate(17,&alignment_check); for (i=18;i<48;i++) --- linux/arch/i386/kernel/entry.S- Wed Jul 17 02:33:25 1996 +++ linux/arch/i386/kernel/entry.S Sun Nov 3 11:17:52 1996 @@ -503,6 +503,11 @@ pushl $ SYMBOL_NAME(do_page_fault) jmp error_code +ENTRY(spurious_interrupt_bug) + pushl $0 + pushl $ SYMBOL_NAME(do_spurious_interrupt_bug) + jmp error_code + .data ENTRY(sys_call_table) .long SYMBOL_NAME(sys_setup) /* 0 */
| |