From ffb713285c7f5dbef5c43968df5d2636ca31822c Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 23 Apr 2026 02:37:27 +0000 Subject: [PATCH] [dynarmic] fix MWAIT push/pop not being handled properly on xbyak Signed-off-by: lizzie --- src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp index 7607bbaafc..0a3648422d 100644 --- a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp +++ b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp @@ -25,9 +25,9 @@ namespace Dynarmic { void EmitSpinLockLock(Xbyak::CodeGenerator& code, Xbyak::Reg64 ptr, Xbyak::Reg32 tmp, bool waitpkg) { // TODO: this is because we lack regalloc - so better to be safe :( if (waitpkg) { - code.push(Xbyak::util::eax); - code.push(Xbyak::util::ebx); - code.push(Xbyak::util::edx); + code.push(Xbyak::util::rax); + code.push(Xbyak::util::rbx); + code.push(Xbyak::util::rdx); } Xbyak::Label start, loop; code.jmp(start, code.T_NEAR); @@ -58,9 +58,9 @@ void EmitSpinLockLock(Xbyak::CodeGenerator& code, Xbyak::Reg64 ptr, Xbyak::Reg32 code.test(tmp, tmp); code.jnz(loop, code.T_NEAR); if (waitpkg) { - code.pop(Xbyak::util::edx); - code.pop(Xbyak::util::ebx); - code.pop(Xbyak::util::eax); + code.pop(Xbyak::util::rdx); + code.pop(Xbyak::util::rbx); + code.pop(Xbyak::util::rax); } }