6

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

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

4

2 回答 2

3

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

于 2013-05-08T11:14:12.337 回答
0

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

于 2013-05-23T20:53:19.127 回答