print rsp in nmi / loop end fault page

This commit is contained in:
2023-05-05 18:32:22 +02:00
parent fd31a78c01
commit 2f6e3c1187
3 changed files with 15 additions and 3 deletions

View File

@@ -43,6 +43,9 @@ interrupt_stack!(debug, @paranoid, |stack| {
nmi_handler!(non_maskable, |stack| {
println!("Non-maskable interrupt");
let rsp: usize;
core::arch::asm!("mov {}, rsp", out(reg) rsp);
println!("RSP: {:>016X}", rsp);
stack.dump();
});
@@ -142,6 +145,7 @@ interrupt_error!(page, |stack| {
stack.dump();
stack_trace();
ksignal(SIGSEGV);
loop{};
});
interrupt_stack!(fpu_fault, |stack| {

View File

@@ -480,7 +480,13 @@ macro_rules! nmi_handler {
$ code
}
}
fn frsp(){
unsafe {
let rsp: usize;
core::arch::asm!("mov {}, rsp", out(reg) rsp);
println!("FRSP: {:>016X}", rsp);
}
}
core::arch::asm!(concat!(
"
push rdx
@@ -577,17 +583,20 @@ macro_rules! nmi_handler {
pop_scratch!(),
swapgs_iff_ring3_fast!(),
"
//call {frsp}
7:
add rsp,$6*8
add rsp,$(6*8)
mov QWORD PTR 5*8[rsp], $0
//call {frsp}
iretq
",
),
inner = sym inner,
frsp = sym frsp,
GDT_KERNEL_CODE = const(crate::gdt::GDT_KERNEL_CODE),
GDT_KERNEL_DATA = const(crate::gdt::GDT_KERNEL_DATA),

View File

@@ -33,7 +33,6 @@ use self::flag::{MapFlags, PhysmapFlags, WaitFlags};
use self::number::*;
use crate::context::ContextId;
use crate::interrupt::exception::divide_by_zero;
use crate::interrupt::InterruptStack;
use crate::scheme::{FileHandle, SchemeNamespace, memory::MemoryScheme};