From eca40ff053200039ed528f9b1530d44d8c90232f Mon Sep 17 00:00:00 2001 From: p-szafonimateusz Date: Wed, 27 Nov 2024 15:48:33 +0100 Subject: [PATCH] arch/x86_64/intel64: re-enable interrupts before syscall handle arch/x86_64/intel64: re-enable interrupts before syscall handle --- arch/x86_64/src/common/x86_64_syscall.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/x86_64/src/common/x86_64_syscall.c b/arch/x86_64/src/common/x86_64_syscall.c index 216727a2ca2c3..d00a1f324ad38 100644 --- a/arch/x86_64/src/common/x86_64_syscall.c +++ b/arch/x86_64/src/common/x86_64_syscall.c @@ -302,6 +302,15 @@ uint64_t *x86_64_syscall(uint64_t *regs) rtcb->xcp.saved_ursp = regs[REG_RSP]; #endif + /* Re-enable interrupts if enabled before. + * Current task RFLAGS are stored in R11. + */ + + if (regs[REG_R11] & X86_64_RFLAGS_IF) + { + up_irq_restore(X86_64_RFLAGS_IF); + } + /* Call syscall function */ ret = stub(nbr, arg1, arg2, arg3, arg4, arg5, arg6);