summaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-09-09 08:36:10 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-09-09 08:36:10 +0800
commit839ca6af79a729686feb1270bc49a5481480b2f6 (patch)
tree54e6dbc0e769caf0035975e1ce8ae4528ecb8239 /kernel/src
parentf90b1a24ed0907fc0f9f1c2ba1623b29740c9c9b (diff)
kernel: seperate idt
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/init/int.rs21
-rw-r--r--kernel/src/init/int/idt.rs20
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();
+}