patch-2.1.65 linux/arch/i386/kernel/traps.c

Next file: linux/arch/i386/mm/fault.c
Previous file: linux/arch/i386/kernel/entry.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.64/linux/arch/i386/kernel/traps.c linux/arch/i386/kernel/traps.c
@@ -103,6 +103,7 @@
 asmlinkage void stack_segment(void);
 asmlinkage void general_protection(void);
 asmlinkage void page_fault(void);
+asmlinkage void page_fault_f00f(void);
 asmlinkage void coprocessor_error(void);
 asmlinkage void reserved(void);
 asmlinkage void alignment_check(void);
@@ -418,6 +419,14 @@
 	unsigned long page;
 
 	/*
+	 * We use a special page fault handler, to actually detect
+	 * 'bounced' traps/exceptions #0-6. This new page fault
+	 * handler is a few tens of cycles slower than the 'normal'
+	 * one.
+	 */
+	set_trap_gate(14,&page_fault_f00f);
+
+	/*
 	 * Allocate a new page in virtual address space, 
 	 * and move the IDT to have entry #7 starting at
 	 * the beginning of the page. We'll force a page
@@ -433,6 +442,7 @@
 	 */
 	idt = (struct desc_struct *)(page - 7*8);
 	__asm__ __volatile__("lidt %0": "=m" (idt_descr));
+
 }
 
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov