【问题标题】:x86 hardware Interrupt is not working on qemux86 硬件中断在 qemu 上不起作用
【发布时间】:2013-05-02 03:52:57
【问题描述】:

我正在为 x86 编写一个内核(使用 qemu 来模拟)作为一个学校项目,我遇到了奇怪的问题。 即使我在 eflags 寄存器中设置了中断标志,我仍然没有收到任何时钟中断(我使用 qemu info register 命令检查,我看到 eflag=0x292 这意味着它已设置)。

确切地说,当我在用户模式下运行自旋测试(while(1); 程序)时,我得到一个时钟中断,但在那之后,它停止了,qemu 似乎没有模拟更多!它发生在其他人身上吗?是否有另一种可以影响中断的机制? 有人知道吗?
谢。

【问题讨论】:

    标签: c x86 kernel qemu


    【解决方案1】:

    显然在 x86 中,您必须在每次中断后确认时钟中断。 即,必须在每次时钟中断后向 lapic 发送确认。

    【讨论】:

      【解决方案2】:

      如果您期望来自 RTC 的中断,您必须首先通过读取 REG_C(CMOS 寄存器 0x​​0C)来确认先前的中断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多