diff options
Diffstat (limited to 'kernel/src/interrupts/table.rs')
-rw-r--r-- | kernel/src/interrupts/table.rs | 11 |
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 }; } |