summaryrefslogtreecommitdiff
path: root/kernel/src/interrupts/table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/interrupts/table.rs')
-rw-r--r--kernel/src/interrupts/table.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/src/interrupts/table.rs b/kernel/src/interrupts/table.rs
index 6472014..d417824 100644
--- a/kernel/src/interrupts/table.rs
+++ b/kernel/src/interrupts/table.rs
@@ -7,10 +7,17 @@ lazy_static! {
let mut idt = InterruptDescriptorTable::new();
idt.breakpoint
.set_handler_fn(super::exceptions::breakpoint_handler);
- idt.page_fault
- .set_handler_fn(super::exceptions::page_fault_handler);
idt.segment_not_present
.set_handler_fn(super::exceptions::segment_not_present_handler);
+ unsafe {
+ idt.double_fault
+ .set_handler_fn(super::exceptions::double_fault_handler)
+ .set_stack_index(super::gdt::DOUBLE_FAULT_IST_INDEX);
+ idt.page_fault
+ .set_handler_fn(super::exceptions::page_fault_handler)
+ .set_stack_index(super::gdt::PAGE_FAULT_IST_INDEX);
+ }
+
idt
};
}