From cc8cfb7b3ff432c2c303ac8b8d7d2a3ce611ddb4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 3 Dec 2024 17:48:07 +0100 Subject: [PATCH] The CPL checks introduced in build 6212 need to only be made in protected mode, fixes the Daewoo CB52X-SI. --- src/cpu/cpu.c | 4 ++-- src/cpu/x86_ops_misc.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index c8c018aed..aa7374186 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -2611,7 +2611,7 @@ cpu_ven_reset(void) void cpu_RDMSR(void) { - if (CPL) + if ((CPL || (cpu_state.eflags & VM_FLAG)) && (cr0 & 1)) x86gpf(NULL, 0); else switch (cpu_s->cpu_type) { case CPU_IBM386SLC: @@ -3468,7 +3468,7 @@ cpu_WRMSR(void) cpu_log("WRMSR %08X %08X%08X\n", ECX, EDX, EAX); - if (CPL) + if ((CPL || (cpu_state.eflags & VM_FLAG)) && (cr0 & 1)) x86gpf(NULL, 0); else switch (cpu_s->cpu_type) { case CPU_IBM386SLC: diff --git a/src/cpu/x86_ops_misc.h b/src/cpu/x86_ops_misc.h index f3e4bb353..c0b9de437 100644 --- a/src/cpu/x86_ops_misc.h +++ b/src/cpu/x86_ops_misc.h @@ -878,7 +878,7 @@ opINVD(uint32_t fetchdat) static int opWBINVD(uint32_t fetchdat) { - if (CPL) { + if ((CPL || (cpu_state.eflags & VM_FLAG)) && (cr0 & 1)) { x86gpf(NULL, 0); return 1; }