diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-09-09 08:36:10 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-09-09 08:36:10 +0800 |
| commit | 839ca6af79a729686feb1270bc49a5481480b2f6 (patch) | |
| tree | 54e6dbc0e769caf0035975e1ce8ae4528ecb8239 /kernel | |
| parent | f90b1a24ed0907fc0f9f1c2ba1623b29740c9c9b (diff) | |
kernel: seperate idt
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/src/init/int.rs | 21 | ||||
| -rw-r--r-- | kernel/src/init/int/idt.rs | 20 |
2 files changed, 21 insertions, 20 deletions
diff --git a/kernel/src/init/int.rs b/kernel/src/init/int.rs index 2512434..59f1e20 100644 --- a/kernel/src/init/int.rs +++ b/kernel/src/init/int.rs @@ -3,23 +3,4 @@ use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame}; use crate::printlnk; -pub static IDT: LazyLock<InterruptDescriptorTable> = LazyLock::new( - || { - let mut idt = InterruptDescriptorTable::new(); - idt.breakpoint.set_handler_fn(breakpoint_handler); - idt.double_fault.set_handler_fn(double_fault_handler); - idt - }, -); - -extern "x86-interrupt" fn double_fault_handler(stack_frame: InterruptStackFrame, error_code: u64) -> ! { - panic!("EXCEPTION: DOUBLE FAULT\n{stack_frame:#?}\nERROR CODE:{error_code}"); -} - -extern "x86-interrupt" fn breakpoint_handler(stack_frame: InterruptStackFrame) { - _ = printlnk!("EXCEPTION: BREAKPOINT\n{stack_frame:#?}"); -} - -pub fn init() { - IDT.load(); -} +pub mod idt; diff --git a/kernel/src/init/int/idt.rs b/kernel/src/init/int/idt.rs new file mode 100644 index 0000000..89228cf --- /dev/null +++ b/kernel/src/init/int/idt.rs @@ -0,0 +1,20 @@ +pub static IDT: LazyLock<InterruptDescriptorTable> = LazyLock::new( + || { + let mut idt = InterruptDescriptorTable::new(); + idt.breakpoint.set_handler_fn(breakpoint_handler); + idt.double_fault.set_handler_fn(double_fault_handler); + idt + }, +); + +extern "x86-interrupt" fn double_fault_handler(stack_frame: InterruptStackFrame, error_code: u64) -> ! { + panic!("EXCEPTION: DOUBLE FAULT\n{stack_frame:#?}\nERROR CODE:{error_code}"); +} + +extern "x86-interrupt" fn breakpoint_handler(stack_frame: InterruptStackFrame) { + _ = printlnk!("EXCEPTION: BREAKPOINT\n{stack_frame:#?}"); +} + +pub fn init() { + IDT.load(); +} |
