diff --git a/kernel/src/arch/x86_64/CPU.cpp b/kernel/src/arch/x86_64/CPU.cpp index 3b5739c8..dec29b60 100644 --- a/kernel/src/arch/x86_64/CPU.cpp +++ b/kernel/src/arch/x86_64/CPU.cpp @@ -186,6 +186,7 @@ extern "C" void arch_interrupt_entry(Registers* regs) { SyscallArgs args = { regs->rdi, regs->rsi, regs->rdx, regs->r10, regs->r8, regs->r9 }; regs->rax = (u64)invoke_syscall(regs, args, regs->rax); + Scheduler::current()->process_pending_signals(regs); } else { diff --git a/kernel/src/sys/Syscall.cpp b/kernel/src/sys/Syscall.cpp index a19a35be..8deb1067 100644 --- a/kernel/src/sys/Syscall.cpp +++ b/kernel/src/sys/Syscall.cpp @@ -15,8 +15,6 @@ i64 invoke_syscall(Registers* regs, SyscallArgs args, u64 syscall) auto rc = syscalls[syscall](regs, args); - Scheduler::current()->process_pending_signals(regs); - if (rc.has_error()) return -rc.error(); return (i64)rc.value(); }