kernel/arch/x86_64/interrupts/exceptions/
_14_page_fault.rs1use core::fmt::Write;
7use crate::panic::kernel_panic;
8use crate::types::panic_codes::PanicCode;
9use x86_64::structures::idt::{InterruptStackFrame, PageFaultErrorCode};
10use x86_64::registers::control::Cr2;
11use crate::types::fmt_buffer::FmtBuffer;
12
13pub extern "x86-interrupt" fn handler(
15 isf: InterruptStackFrame,
16 error_code: PageFaultErrorCode
17) {
18 let cr2_value = Cr2::read_raw();
19 let mut fmt_buffer = FmtBuffer::<512>::new();
20 let _ = write!(&mut fmt_buffer, "CR2: {}\nError Code:\n{:?}\n\n{:#?}", cr2_value, error_code, isf);
21 kernel_panic(
22 PanicCode::PageFault,
23 fmt_buffer.as_str(),
24 );
25}