Adr*_*ang 2 c interrupt
我正在研究单片内核,并试图实现对CMOS时钟的支持.在阅读了这个主题后,我遇到了这行代码:
outb (0x70, (NMI_disable_bit << 7) | (selected CMOS register number));
我主要了解除了NMI_disable_bit部分之外发生了什么.这个片段的含义是什么?有人可以向我解释一下吗?
NMI_disable_bit
Mar*_*oom 6
当设置为1时,使用端口0x70的第7位,RTC RAM索引寄存器来禁用所有NMI源.
NMI是一个中断,不能被R/E/FLAGS寄存器中的IF中断标志屏蔽(例如,使用该cli指令),因此需要硬件辅助来禁用它. 端口0x70的第7位被否定,并与所有NMI源(或等效设计)进行AND运算.
cli
请注意,自Pentium Pro以来,NMI引脚已被LINT1引脚取代. 当LAPIC被禁用时,LINT1引脚恢复为NMI引脚,但如果LAPIC被使能,则术语NMI是本地中断1的同义词,软件可以编程每个LINT0/1引脚以触发各种事件(包括但不是限制为,NMI).
归档时间:
7 年,11 月 前
查看次数:
154 次
最近记录:
7 年,2 月 前