作为一个学校项目,我正在为x86编写一个内核(使用qemu来模拟),我遇到了奇怪的问题。即使我已经在eflags寄存器中设置了中断标志,我仍然不会收到任何时钟中断(我使用qemu info register命令进行了检查,我看到了eflag=0x292,这意味着它已经设置)。
准确地说,当我在用户模式下运行自旋测试(while(1);program)时,我得到了一个时钟中断,但在那个中断之后,它停止了,qemu似乎没有更多的模拟!其他人也发生过这种事吗?是否有其他机制可以影响中断?有谁有线索吗?
小谢。
发布于 2013-05-08 19:14:12
显然,在x86中,您必须在每次中断后确认时钟中断。即,每次时钟中断后,必须向lapic发送确认。
发布于 2013-05-24 04:53:19
如果预期来自实时时钟的中断,则必须首先通过从REG_C (CMOS寄存器0x0C)读取数据来确认上一个中断。
https://stackoverflow.com/questions/16431837
复制相似问题