Skip to main content

kernel/arch/x86_64/interrupts/exceptions/
_12_stack_segment_fault.rs

1// SPDX-License-Identifier: GPL-3.0-only
2//! Stack-segment fault exception handler (vector 12, `#SS`).
3//!
4//! Authors: MarioS271
5
6use crate::lib::panic_codes::PanicCode;
7use crate::lib::types::fmt_buffer::FmtBuffer;
8use crate::lib::panic::kernel_panic;
9use core::fmt::Write;
10use x86_64::structures::idt::InterruptStackFrame;
11
12/// Panic with the error code and interrupt stack frame.
13pub extern "x86-interrupt" fn handler(
14    isf: InterruptStackFrame, error_code: u64
15) {
16    let mut fmt_buffer = FmtBuffer::<512>::new();
17    let _ = write!(&mut fmt_buffer, "Error Code: {}\n{:#?}\n", error_code, isf);
18    kernel_panic(
19        PanicCode::StackSegmentFault,
20        fmt_buffer.as_str(),
21    );
22}