diff --git a/src/arch/x86_64/interrupt/exception.rs b/src/arch/x86_64/interrupt/exception.rs index fe4ef61..ef1346d 100644 --- a/src/arch/x86_64/interrupt/exception.rs +++ b/src/arch/x86_64/interrupt/exception.rs @@ -52,28 +52,19 @@ nmi_handler!(non_maskable, |stack| { use crate::info; use crate::time::realtime; - let req = syscall::TimeSpec { - tv_sec: 0, - tv_nsec: 0, - }; - let time = realtime(); info!("{} : Entering NMI", time); - // let mut rem = syscall::TimeSpec::default(); - // let _ = crate::syscall::time::nanosleep(&req, Some(&mut rem)); - // Page Fault let addr = 0xDEADC0DE as *const u8; let n = core::ptr::read(addr); println!("{}",n); + //loop{} // core::arch::asm!( // " // mov rdx, [0xDEADC0DE] // "); - // let mut rem = syscall::TimeSpec::default(); - // let _ = crate::syscall::time::nanosleep(&req, Some(&mut rem)); let time = realtime(); info!("{} : Exiting NMI", time); @@ -173,6 +164,8 @@ interrupt_error!(page, |stack| { println!(" Reserved write: {}", stack.code & 1 << 3 != 0); println!(" Instruction fetch: {}", stack.code & 1 << 4 != 0); // stack.dump(); + // stack.inner.iret.cs + // stack.inner.iret.rip stack_trace(); // ksignal(SIGSEGV); diff --git a/src/arch/x86_64/interrupt/handler.rs b/src/arch/x86_64/interrupt/handler.rs index fb05409..c9451bd 100644 --- a/src/arch/x86_64/interrupt/handler.rs +++ b/src/arch/x86_64/interrupt/handler.rs @@ -509,10 +509,10 @@ macro_rules! nmi_handler { " nested_nmi: /// ! repalce with address of repeat nmi and end repeat nmi - mov rdx, 0x080a3352 + mov rdx, 0x0806f292 cmp rdx, 8[rsp] ja 1f - mov rdx, 0x080a3377 + mov rdx, 0x0806f2b7 cmp rdx, 8[rsp] ja nested_nmi_out ", @@ -527,7 +527,7 @@ macro_rules! nmi_handler { pushf push {GDT_KERNEL_CODE} //replace address repeat nmi - push 0x080a3352 + push 0x0806f292 ", // nested nmi out " @@ -586,9 +586,9 @@ macro_rules! nmi_handler { " //call {frsp} 7: - add rsp,$(12*8) + add rsp,$(5*8) - mov QWORD PTR 5*8[rsp], $0 + mov QWORD PTR [rsp + 5 * 8], $0 //call {frsp} iretq