diff --git a/src/interrupts.rs b/src/interrupts.rs index 7a3beeb..e94bec1 100644 --- a/src/interrupts.rs +++ b/src/interrupts.rs @@ -1,5 +1,12 @@ -use x86_64::structures::idt::Idt; +use x86_64::structures::idt::{Idt, ExceptionStackFrame}; pub fn init() { let mut idt = Idt::new(); + idt.breakpoint.set_handler_fn(breakpoint_handler); +} + +extern "x86-interrupt" fn breakpoint_handler( + stack_frame: &mut ExceptionStackFrame) +{ + println!("EXCEPTION: BREAKPOINT\n{:#?}", stack_frame); } diff --git a/src/lib.rs b/src/lib.rs index efdff65..2496def 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,6 +5,7 @@ #![feature(unique)] #![feature(allocator_api)] #![feature(global_allocator)] +#![feature(abi_x86_interrupt)] #![no_std]