diff --git a/src/interrupts.rs b/src/interrupts.rs index f29b4273..08a2a516 100644 --- a/src/interrupts.rs +++ b/src/interrupts.rs @@ -3,7 +3,7 @@ // for a Windows system. #![cfg(not(windows))] -use crate::println; +use crate::{gdt, println}; use lazy_static::lazy_static; use x86_64::structures::idt::{ExceptionStackFrame, InterruptDescriptorTable}; @@ -12,6 +12,10 @@ lazy_static! { let mut idt = InterruptDescriptorTable::new(); idt.breakpoint.set_handler_fn(breakpoint_handler); idt.double_fault.set_handler_fn(double_fault_handler); + unsafe { + idt.double_fault.set_handler_fn(double_fault_handler) + .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); + } idt }; }