summaryrefslogtreecommitdiff
path: root/kernel/src/interrupts/table.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2019-11-08 22:50:13 +0100
committerDennis Kobert <dennis@kobert.dev>2019-11-08 22:50:13 +0100
commit933abe8bc6f9480bcdea39c6bdd1a4e937402a06 (patch)
treeb6679b8e3c68fd71e59ec3ba22fe086525ddd3bc /kernel/src/interrupts/table.rs
parentf3dcfa225a6e3b7e6916e9b5a22db9090275d065 (diff)
Add InterruptStackTable
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
};
}