summaryrefslogtreecommitdiff
path: root/Source/Kernel/SyscallManager
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Kernel/SyscallManager')
-rw-r--r--Source/Kernel/SyscallManager/IDT.ns.cpp2
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) {