diff --git a/Cargo.lock b/Cargo.lock index fa8669ac..6d663476 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -248,13 +248,14 @@ version = "0.11.1" dependencies = [ "bit_field", "bitflags", - "x86_64-idt-default-handler", + "x86_64-idt-general-handler", ] [[package]] -name = "x86_64-idt-default-handler" +name = "x86_64-idt-general-handler" version = "0.1.0" dependencies = [ + "proc-macro2", "quote", "syn", ] diff --git a/src/interrupts.rs b/src/interrupts.rs index 2584d2f0..92bc4459 100644 --- a/src/interrupts.rs +++ b/src/interrupts.rs @@ -33,6 +33,7 @@ lazy_static! { static ref IDT: InterruptDescriptorTable = { let mut idt = InterruptDescriptorTable::new(); + idt::set_general_handler!(&mut idt, default_handler); idt.breakpoint.set_handler_fn(breakpoint_handler); idt.page_fault.set_handler_fn(page_fault_handler); unsafe { @@ -40,7 +41,6 @@ lazy_static! { .set_handler_fn(double_fault_handler) .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); } - idt::set_default_handler!(&mut idt, default_handler, 32..); idt }; } @@ -49,7 +49,7 @@ pub fn init_idt() { IDT.load(); } -fn default_handler(stack_frame: &mut InterruptStackFrame, index: u8) { +fn default_handler(stack_frame: &mut InterruptStackFrame, index: u8, error_code: Option) { if index == 32 { print!("{} ", index); } else {