From addd392113dbfebb8aefcadca34e03881572dcda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 4 Jun 2021 20:56:08 +0200 Subject: [PATCH] kernel/x86_64: clear carry, nested task and trap flags on syscall entry this is what's generally done on other OSes. Change-Id: I90f1a574172b8e020c9943468d2fd121e14dd062 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4047 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- src/system/kernel/arch/x86/64/syscalls.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/arch/x86/64/syscalls.cpp b/src/system/kernel/arch/x86/64/syscalls.cpp index f71e7ad7f5..4cb84a28aa 100644 --- a/src/system/kernel/arch/x86/64/syscalls.cpp +++ b/src/system/kernel/arch/x86/64/syscalls.cpp @@ -54,9 +54,10 @@ init_syscall_registers(void* dummy, int cpuNum) x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) | IA32_MSR_EFER_SYSCALL); - // Flags to clear upon entry. Want interrupts disabled and the direction - // flag cleared. + // Flags to clear upon entry. Want interrupts disabled and the carry, trap, + // nested task, direction and alignment check flags cleared. x86_write_msr(IA32_MSR_FMASK, X86_EFLAGS_INTERRUPT | X86_EFLAGS_DIRECTION + | X86_EFLAGS_NESTED_TASK | X86_EFLAGS_CARRY | X86_EFLAGS_TRAP | X86_EFLAGS_ALIGNMENT_CHECK); // Entry point address.