diff options
Diffstat (limited to 'Source/Kernel/SyscallManager')
-rw-r--r-- | Source/Kernel/SyscallManager/IDT.ns.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/Kernel/SyscallManager/IDT.ns.cpp b/Source/Kernel/SyscallManager/IDT.ns.cpp index 7c4b5cb..e9e60d7 100644 --- a/Source/Kernel/SyscallManager/IDT.ns.cpp +++ b/Source/Kernel/SyscallManager/IDT.ns.cpp @@ -72,7 +72,9 @@ extern "C" void interrupt_handler(registers_t regs) { if (regs.int_no >= 40) outb(0xA0, 0x20); outb(0x20, 0x20); + asm volatile("sti"); //Make handling preemtible Dev::handleIRQ(regs, (regs.int_no - 32)); + asm volatile("cli"); doSwitch = doSwitch or Task::IRQwakeup(regs.int_no - 32); } if (regs.int_no == 64) { |