From 1c8d2e2c1d585f1d8d9a5ef8a35345c750e4b1fc Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 13 Oct 2026 15:44:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(gdt):=20TSS64=20=E6=8F=8F=E8=BF=B0=E7=AC=A6?= =?UTF-8?q?=20granularity=20=E7=BC=96=E7=A0=81=20limit=20=E9=AB=98=204=20?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原写法硬编码 0x00,丢弃 limit[19:16],当前 limit=103 侥幸正确, 改为 (limit >> 16) & 0x0F 以消除隐患。 --- VKernel/Kernel/intr/gdt.vp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VKernel/Kernel/intr/gdt.vp b/VKernel/Kernel/intr/gdt.vp index b3bebfd..193ff99 100644 --- a/VKernel/Kernel/intr/gdt.vp +++ b/VKernel/Kernel/intr/gdt.vp @@ -132,7 +132,7 @@ def setTSS64(num: int, base: uint64, limit: uint32): gdt[num].base_low = base & 0xFFFF gdt[num].base_middle = (base >> 16) & 0xFF gdt[num].access = 0x89 - gdt[num].granularity = 0x00 + gdt[num].granularity = (limit >> 16) & 0x0F gdt[num].base_high = (base >> 24) & 0xFF gdt[num + 1].limit_low = (base >> 32) & 0xFFFF gdt[num + 1].base_low = (base >> 48) & 0xFFFF