2017-09-16 50 views
2

我的問題是非常簡單:如何選擇CMOS寄存器?

我正在研究單片內核,並試圖實現CMOS時鐘。閱讀的話題之後,我就翻過這行代碼:

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

我大多明白這是怎麼回事,除了NMI_disable_bit部分。這段代碼中的含義是什麼?有人可以向我解釋這一點嗎?

回答

6

當設置爲1時,使用RTC RAM索引寄存器的端口0x70的第7位來禁用所有的源NMIs

一個NMI是不能由IF被屏蔽的中斷 - 在R/E中斷標誌/標誌位寄存器(例如與cli指令),所以硬件輔助,需要將其禁用。
端口0x70的第7位與NMI的所有源(或等效設計)進行取反和與操作。

請注意,自從Pentium Pro以來,NMI引腳已被替換爲LINT1引腳。
LAPIC被禁用,LINT1引腳恢復到作爲NMI銷但如果啓用了LAPIC然後術語NMI爲本地中斷1的同義詞和軟件可每個LINT0/1銷編程以觸發各種事件(包括但不限於NMI)。