【问题标题】:HLT instruction causes General Protection Fault in QEMUHLT 指令导致 QEMU 中的一般保护错误
【发布时间】:2014-01-09 13:42:28
【问题描述】:

我在 QEMU 下运行我的保护模式内核,它在尝试执行汇编程序 HLT 指令时导致一般保护错误。 EFLAGS 中 CPL 为 0,IOPL 为 0,启用中断。

这可能是 QEMU 问题还是我遗漏了什么?

在模拟 SMP(对称多处理器)时会发生这种情况。

【问题讨论】:

  • 在非 SMP 或中断关闭(在 CLI 之后)上相同。 qemu-kvm-0.14.1.
  • 真的,我有过这样的经历。如果 idt 有问题,也可能发生这种情况

标签: assembly x86 qemu


【解决方案1】:

检查代码段选择器的 DPL。

【讨论】:

    【解决方案2】:

    它可能没有帮助,但我们一直使用 asm ("hlt") 和 qemu non smp 并且它工作正常。

    但是调用它可能会导致有机会运行的中断。那么你确定 EIP 是 asm hlt 吗?如果是这样,您应该 objdump .o 以确保编译器生成了您认为的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2013-11-10
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2022-01-04
      • 2011-12-02
      相关资源
      最近更新 更多