42-archive/kernel-rs/src/arch/x86/macros.rs

36 lines
988 B
Rust

#[macro_export]
macro_rules! interrupt {
($name:ident, $func:block) => {
pub extern "x86-interrupt" fn $name(stack_frame: &mut ExceptionStackFrame)
{
println!("Exception: {}", stringify!($name));
println!("{:#?}", stack_frame);
flush!();
#[allow(unused_variables)]
fn inner(stack: &mut ExceptionStackFrame) {
$func
}
inner(stack_frame);
}
}
}
#[macro_export]
macro_rules! interrupt_err {
($name:ident, $func:block) => {
pub extern "x86-interrupt" fn $name(
stack_frame: &mut ExceptionStackFrame, _error_code: u32)
{
println!("Exception: {}", stringify!($name));
println!("{:#?}", stack_frame);
flush!();
#[allow(unused_variables)]
fn inner(stack: &mut ExceptionStackFrame) {
$func
}
inner(stack_frame);
}
}
}