From 2a2fc4dffe0117ce874a6cf1dcc34321ed8add77 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 25 Jan 2023 01:02:04 +0100 Subject: kernel/virt: replace the virt_cpy api with a more foolproof one --- src/kernel/arch/amd64/interrupts/isr.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/kernel/arch/amd64/interrupts') diff --git a/src/kernel/arch/amd64/interrupts/isr.c b/src/kernel/arch/amd64/interrupts/isr.c index 519d783..994519d 100644 --- a/src/kernel/arch/amd64/interrupts/isr.c +++ b/src/kernel/arch/amd64/interrupts/isr.c @@ -17,6 +17,10 @@ bool isr_test_interrupt_called = false; static void log_interrupt(int interrupt, uint64_t *stackframe) { kprintf("interrupt %x, rip = k/%08x, cs 0x%x, code 0x%x\n", interrupt, stackframe[0], stackframe[1], stackframe[-1]); + if ((stackframe[1] & 0x3) == 0) { + uint64_t *stack = (void*)stackframe[3]; + kprintf("kernel rip = %p, *rip = %p\n", stack, *stack); + } if (interrupt == 0xe) { uint64_t addr = 0x69; asm("mov %%cr2, %0" : "=r"(addr)); @@ -54,7 +58,7 @@ void isr_stage3(int interrupt, uint64_t *stackframe) { default: if ((stackframe[1] & 0x3) == 0) { - mem_debugprint(); + // mem_debugprint(); log_interrupt(interrupt, stackframe); cpu_halt(); } else { -- cgit v1.2.3