From cdee5e0e87512a31aed2413764e9d678da61941d Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 26 Aug 2026 22:22:56 +0800 Subject: [PATCH] =?UTF-8?q?debug(idt):=20=E9=9D=9E=20#GP/#PF=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=89=93=E5=8D=B0=20rip/rsp=EF=BC=8C=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=20tid=3D1=20#UD=20=E6=89=A7=E8=A1=8C=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VKernel/Kernel/intr/idt.vp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/VKernel/Kernel/intr/idt.vp b/VKernel/Kernel/intr/idt.vp index bba6858..eb001eb 100644 --- a/VKernel/Kernel/intr/idt.vp +++ b/VKernel/Kernel/intr/idt.vp @@ -142,6 +142,16 @@ def isrCommonhandler(interrupt: t.CInt): viperlib.snprintf(c.Addr(gp_buf), 140, "[GP] rip=0x%lx err=0x%lx rsp=0x%lx cr4=0x%lx cr0=0x%lx\n", gp_rip, gp_err, gp_rsp, gp_cr4, gp_cr0) serial.puts(gp_buf) + else: + # 其他异常(#UD 等):打印 rip/rsp 定位执行位置(isr.s 已保存 _fault_rip) + ex_rip: t.CUInt64T = 0 + ex_rsp: t.CUInt64T = 0 + c.Asm(f"""mov {c.AsmOut(ex_rip, t.ASM_DESCR.OUTPUT_REG)}, [_fault_rip] + mov {c.AsmOut(ex_rsp, t.ASM_DESCR.OUTPUT_REG)}, [_fault_rsp]""", + op=[t.ASM_DESCR.CLOBBER_RAX]) + ex_buf: t.CArray[t.CChar, 100] + viperlib.snprintf(c.Addr(ex_buf), 100, "[EX] int=%d rip=0x%lx rsp=0x%lx\n", interrupt, ex_rip, ex_rsp) + serial.puts(ex_buf) s: sched.Scheduler | t.CPtr = sched._sched_ptr # 如果调度器未初始化,直接进入安全停机状态 if s == 0: