use lazy_static::lazy_static; use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame}; lazy_static! { static ref IDT: InterruptDescriptorTable = { let mut idt = InterruptDescriptorTable::new(); unsafe { idt.double_fault .set_handler_fn(double_fault_handler) .set_stack_index(crate::gdt::DOUBLE_FAULT_INST_INDEX); } idt }; } pub fn init() { IDT.load(); } extern "x86-interrupt" fn double_fault_handler( stack_frame: InterruptStackFrame, _error_code: u64, ) -> ! { panic!("Double fault: {:#?}", stack_frame); }