我正在使用单片内核,并且正在尝试实现对CMOS时钟的支持。在阅读了该主题之后,我遇到了以下代码行:

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

除了NMI_disable_bit部分,我大部分都了解发生了什么。在此代码段中表示什么意思?有人可以向我解释吗?

最佳答案

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

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

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

关于c - 如何选择CMOS寄存器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46257153/

10-12 05:53