小编Kee*_*ame的帖子

如何以编程方式禁用不可屏蔽的中断?

我读过,为了根据英特尔的系统编程指南(第3卷第9.9章)暂时关闭分页,我应该先禁用中断,然后再执行其他操作。我可以使用cli轻松禁用可屏蔽中断,但是所有有关禁用NMI的手册都说

NMI中断可以通过外部电路禁用(软件必须保证在模式切换操作期间不会产生异常或中断。)

我在此OSDEV页面上找到了类似于C代码的用于禁用NMI的代码,但我不太明白它的含义。

void NMI_enable() {
    outb(0x70, inb(0x70) & 0x7F);
 }

 void NMI_disable() {
    outb(0x70, inb(0x70) | 0x80);
 }
Run Code Online (Sandbox Code Playgroud)

感觉代码没有上下文并且在不知道outb和inb函数做什么的情况下是没有意义的。

c x86-64 interrupt osdev nmi

5
推荐指数
2
解决办法
239
查看次数

标签 统计

c ×1

interrupt ×1

nmi ×1

osdev ×1

x86-64 ×1