From ec22f3464c87b3d1b1688898053a569bc4839404 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 11 Nov 2019 18:42:59 +0100 Subject: Add expect fault handling --- kernel/src/interrupts/idt.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 kernel/src/interrupts/idt.rs (limited to 'kernel/src/interrupts/idt.rs') diff --git a/kernel/src/interrupts/idt.rs b/kernel/src/interrupts/idt.rs new file mode 100644 index 0000000..9541f22 --- /dev/null +++ b/kernel/src/interrupts/idt.rs @@ -0,0 +1,26 @@ +use lazy_static::lazy_static; +use x86_64::structures::idt::InterruptDescriptorTable; + +lazy_static! { + static ref IDT: InterruptDescriptorTable = { + let mut idt = InterruptDescriptorTable::new(); + idt.breakpoint + .set_handler_fn(super::exceptions::breakpoint_handler); + idt.segment_not_present + .set_handler_fn(super::exceptions::segment_not_present_handler); + unsafe { + idt.double_fault + .set_handler_fn(super::exceptions::double_fault_handler) + .set_stack_index(super::gdt::DOUBLE_FAULT_IST_INDEX); + idt.page_fault + .set_handler_fn(super::exceptions::page_fault_handler) + .set_stack_index(super::gdt::PAGE_FAULT_IST_INDEX); + } + + idt + }; +} + +pub fn init() { + IDT.load() +} -- cgit v1.2.3-54-g00ecf