x86_64系统GDT启用失败求助:三重故障与异常条目
x86_64系统GDT启用故障排查求助
我正在x86_64操作系统中尝试启用GDT,已编写相关代码实现GDT的定义与加载:
- 定义了128位的
gdt_entry结构、gdtr结构 - 实现了
gdt_setup、init_gdt初始化函数 - 用汇编编写了
gdt_flush和reloadSegments段重载函数
但调用reloadSegments函数时系统崩溃,通过GDB调试发现以下异常:
- 明明调用
gdt_setup初始化了第4个条目,但该条目实际不存在 - 出现了多余的第255个条目
- Qemu日志显示系统触发了Triple fault(三重故障)
我是基于osdev wiki定义的gdt_entry结构,现在疑问:该结构中的uint32_t base_upper和uint32_t reserved字段是否必需?希望得到问题排查与解决的帮助。
内容的提问来源于stack exchange,提问作者baponkar
相关产品推荐
相关产品推荐

