From d321dc0a7401e7fa0069df014927ed543cb21fd7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Jul 2020 00:13:31 +0200 Subject: [PATCH] UserspaceEmulator: Fix too-wide accumulator used in 8/16 bit CMPXCHG --- DevTools/UserspaceEmulator/SoftCPU.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DevTools/UserspaceEmulator/SoftCPU.cpp b/DevTools/UserspaceEmulator/SoftCPU.cpp index 4e2d6bc817..a6d23af9f2 100644 --- a/DevTools/UserspaceEmulator/SoftCPU.cpp +++ b/DevTools/UserspaceEmulator/SoftCPU.cpp @@ -1074,7 +1074,7 @@ void SoftCPU::CMPSW(const X86::Instruction& insn) void SoftCPU::CMPXCHG_RM16_reg16(const X86::Instruction& insn) { auto current = insn.modrm().read16(*this, insn); - if (current == eax()) { + if (current == ax()) { set_zf(true); insn.modrm().write16(*this, insn, gpr16(insn.reg16())); } else { @@ -1098,7 +1098,7 @@ void SoftCPU::CMPXCHG_RM32_reg32(const X86::Instruction& insn) void SoftCPU::CMPXCHG_RM8_reg8(const X86::Instruction& insn) { auto current = insn.modrm().read8(*this, insn); - if (current == eax()) { + if (current == al()) { set_zf(true); insn.modrm().write8(*this, insn, gpr8(insn.reg8())); } else {