diff --git a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp index b41884c579..5c105fedd8 100644 --- a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp +++ b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp @@ -59,9 +59,9 @@ void EmitSpinLockLock(Xbyak::CodeGenerator& code, Xbyak::Address ptr, Xbyak::Reg code.mov(tmp, 1); if (ptr.is64bitDisp()) { // if tmp is on eax, use ebx, otherwise use eax! - auto const other_tmp = tmp == Xbyak::util::eax - ? Xbyak::util::ebx - : Xbyak::util::eax; + auto const other_tmp = tmp.cvt32() == Xbyak::util::eax + ? Xbyak::util::rbx + : Xbyak::util::rax; code.push(other_tmp); code.mov(other_tmp, ptr.getDisp()); /*code.lock();*/ code.xchg(other_tmp, tmp); @@ -80,9 +80,9 @@ void EmitSpinLockLock(Xbyak::CodeGenerator& code, Xbyak::Address ptr, Xbyak::Reg code.mov(tmp, 1); if (ptr.is64bitDisp()) { // if tmp is on eax, use ebx, otherwise use eax! - auto const other_tmp = tmp == Xbyak::util::eax - ? Xbyak::util::ebx - : Xbyak::util::eax; + auto const other_tmp = tmp.cvt32() == Xbyak::util::eax + ? Xbyak::util::rbx + : Xbyak::util::rax; code.push(other_tmp); code.mov(other_tmp, ptr.getDisp()); /*code.lock();*/ code.xchg(other_tmp, tmp);