From 9ff53aa1fafba2dd2e8cc1e3dbabc14de91cc815 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 26 Aug 2026 18:32:21 +0800 Subject: [PATCH] =?UTF-8?q?debug(apic):=20=E8=AF=BB=E5=9B=9E=20LINT0=20?= =?UTF-8?q?=E4=B8=8E=20APIC=20BASE=20MSR=EF=BC=8C=E9=AA=8C=E8=AF=81=20EXTI?= =?UTF-8?q?NT=20=E9=85=8D=E7=BD=AE=E6=98=AF=E5=90=A6=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PIT 正常(cnt=1109)但中断不送达。读回验证: - lint0=0x700 → EXTINT 未屏蔽(正确);0x10700 → 被屏蔽;其它 → 写入失败 - apic_base_msr bit11 → APIC 使能状态 用后移除。 --- VKernel/Kernel/main.vp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/VKernel/Kernel/main.vp b/VKernel/Kernel/main.vp index 7d17b4e..42681d7 100644 --- a/VKernel/Kernel/main.vp +++ b/VKernel/Kernel/main.vp @@ -78,6 +78,14 @@ class ViperKernel: apic.early_init() serial.puts("[main] apic init done\n") + # [DBG] 读回 LAPIC LINT0 与 APIC BASE MSR,验证 EXTINT 配置(用后移除) + _lint0: t.CUInt32T = apic.read(0x350) + _apic_msr: t.CUInt64T = cpu.msr_read(apic.IA32_APIC_BASE) + _abuf: t.CArray[t.CChar, 96] + viperlib.snprintf(c.Addr(_abuf), 96, "[APIC] lint0=0x%x apic_base_msr=0x%lx\n", + _lint0, _apic_msr) + serial.puts(c.Addr(_abuf)) + asm.sti() serial.puts("[main] sti done\n")