diff --git a/Kernel/Arch/i386/CPU.cpp b/Kernel/Arch/i386/CPU.cpp index cf4d2259ab..69e4b1db53 100644 --- a/Kernel/Arch/i386/CPU.cpp +++ b/Kernel/Arch/i386/CPU.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include //#define PAGE_FAULT_DEBUG @@ -833,3 +834,13 @@ void __assertion_failed(const char* msg, const char* file, unsigned line, const ; } #endif + +NonMaskableInterruptDisabler::NonMaskableInterruptDisabler() +{ + IO::out8(0x70, IO::in8(0x70) | 0x80); +} + +NonMaskableInterruptDisabler::~NonMaskableInterruptDisabler() +{ + IO::out8(0x70, IO::in8(0x70) & 0x7F); +} diff --git a/Kernel/Arch/i386/CPU.h b/Kernel/Arch/i386/CPU.h index 80a08ebd79..87aebc3887 100644 --- a/Kernel/Arch/i386/CPU.h +++ b/Kernel/Arch/i386/CPU.h @@ -369,6 +369,12 @@ private: u32 m_flags; }; +class NonMaskableInterruptDisabler { +public: + NonMaskableInterruptDisabler(); + ~NonMaskableInterruptDisabler(); +}; + /* Map IRQ0-15 @ ISR 0x50-0x5F */ #define IRQ_VECTOR_BASE 0x50