refactor(gdt): setTSS64 改用 gdt_entry64 整体写入 TSS 描述符

以 gdt_entry64*(&gdt[num]) 复用同一地址写入 16 字节,替代原先手写拆分
gdt[num]/gdt[num+1] 的方式;语义与字节布局均不变。
This commit is contained in:
TermiNexus committed 2026-10-13 15:45:59 +08:00
1 parent 1c8d2e2c1d
commit 52728bc8da
1 file changed
+11 -12
+11 -12
View File
@@ -128,15 +128,14 @@ def setGate(num: int, base: uint64, limit: uint32, access: uint8, gran: uint8):
def setTSS64(num: int, base: uint64, limit: uint32):
global gdt
gdt[num].limit_low = limit & 0xFFFF
gdt[num].base_low = base & 0xFFFF
gdt[num].base_middle = (base >> 16) & 0xFF
gdt[num].access = 0x89
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
gdt[num + 1].base_middle = 0
gdt[num + 1].access = 0
gdt[num + 1].granularity = 0
gdt[num + 1].base_high = 0
# 64 位 TSS 描述符占 16 字节(GDT 两项),复用同一地址按 gdt_entry64 整体写入:
# 前 8 字节为常规描述符字段,后 8 字节为 base[63:32] + 保留 0
e: gdt_entry64* = gdt_entry64*(&gdt[num])
e.limit_low = limit & 0xFFFF
e.base_low = base & 0xFFFF
e.base_middle = (base >> 16) & 0xFF
e.access = 0x89
e.granularity = (limit >> 16) & 0x0F
e.base_high = (base >> 24) & 0xFF
e.base_upper = uint32(base >> 32)
e.reserved = 0