如何选择CMOS寄存器?

时间:2017-09-16 18:29:34

标签: c interrupt

我正在研究单片内核,并试图实现对CMOS时钟的支持。在阅读了这个主题之后,我遇到了这行代码:

outb (0x70, (NMI_disable_bit << 7) | (selected CMOS register number));

除了NMI_disable_bit部分之外,我大部分时间都在理解发生了什么。这个片段的含义是什么?有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:6)

端口0x70的第7位,当设置为1时,使用RTC RAM索引寄存器来禁用NMIs的所有源。

NMI是一个无法被 IF 屏蔽的中断 - R / E / FLAGS寄存器中的中断标志(例如,使用cli指令),因此需要硬件辅助禁用它。
端口0x70的第7位被否定,并与所有NMI源(或等效设计)进行AND运算。

请注意,自Pentium Pro以来,NMI引脚已被 LINT1 引脚替换。
LAPIC被禁用时,LINT1引脚恢复为NMI引脚,但如果启用了LAPIC,则术语NMI是本地中断1 的同义词,软件可以对每个进行编程> LINT0 / 1 引脚触发各种事件(包括但不限于NMI)。