mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Remove print_error and use normal println in exception handlers
(cherry picked from commit 9b83b2853e)
This commit is contained in:
@@ -72,21 +72,17 @@ struct ExceptionStackFrame {
|
||||
stack_segment: u64,
|
||||
}
|
||||
|
||||
use vga_buffer::print_error;
|
||||
|
||||
extern "C" fn divide_by_zero_handler(stack_frame: *const ExceptionStackFrame) -> ! {
|
||||
unsafe {
|
||||
print_error(format_args!("EXCEPTION: DIVIDE BY ZERO\n{:#?}", *stack_frame));
|
||||
}
|
||||
let stack_frame = unsafe { &*stack_frame };
|
||||
println!("\nEXCEPTION: DIVIDE BY ZERO\n{:#?}", stack_frame);
|
||||
loop {}
|
||||
}
|
||||
|
||||
extern "C" fn invalid_opcode_handler(stack_frame: *const ExceptionStackFrame) -> ! {
|
||||
unsafe {
|
||||
print_error(format_args!("EXCEPTION: INVALID OPCODE at {:#x}\n{:#?}",
|
||||
(*stack_frame).instruction_pointer,
|
||||
*stack_frame));
|
||||
}
|
||||
let stack_frame = unsafe { &*stack_frame };
|
||||
println!("\nEXCEPTION: INVALID OPCODE at {:#x}\n{:#?}",
|
||||
stack_frame.instruction_pointer,
|
||||
stack_frame);
|
||||
loop {}
|
||||
}
|
||||
|
||||
@@ -101,13 +97,12 @@ bitflags! {
|
||||
}
|
||||
|
||||
extern "C" fn page_fault_handler(stack_frame: *const ExceptionStackFrame, error_code: u64) -> ! {
|
||||
let stack_frame = unsafe { &*stack_frame };
|
||||
use x86::controlregs;
|
||||
unsafe {
|
||||
print_error(format_args!("EXCEPTION: PAGE FAULT while accessing {:#x}\nerror code: \
|
||||
println!("\nEXCEPTION: PAGE FAULT while accessing {:#x}\nerror code: \
|
||||
{:?}\n{:#?}",
|
||||
controlregs::cr2(),
|
||||
unsafe { controlregs::cr2() },
|
||||
PageFaultErrorCode::from_bits(error_code).unwrap(),
|
||||
*stack_frame));
|
||||
}
|
||||
stack_frame);
|
||||
loop {}
|
||||
}
|
||||
|
||||
@@ -43,18 +43,6 @@ pub fn clear_screen() {
|
||||
}
|
||||
}
|
||||
|
||||
pub unsafe fn print_error(fmt: fmt::Arguments) {
|
||||
use core::fmt::Write;
|
||||
|
||||
let mut writer = Writer {
|
||||
column_position: 0,
|
||||
color_code: ColorCode::new(Color::Red, Color::Black),
|
||||
buffer: Unique::new(0xb8000 as *mut _),
|
||||
};
|
||||
writer.new_line();
|
||||
writer.write_fmt(fmt);
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[repr(u8)]
|
||||
|
||||
Reference in New Issue
Block a user