diff --git a/src/dynarmic/src/dynarmic/backend/x64/abi.cpp b/src/dynarmic/src/dynarmic/backend/x64/abi.cpp index 413af7b557..b7faaff911 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/abi.cpp +++ b/src/dynarmic/src/dynarmic/backend/x64/abi.cpp @@ -47,6 +47,8 @@ void ABI_PushRegistersAndAdjustStack(BlockOfCode& code, const size_t frame_size, const size_t num_xmms = (ABI_ALL_XMMS & regs).count(); const FrameInfo frame_info = CalculateFrameInfo(num_gprs, num_xmms, frame_size); + code.push(rbp); + code.mov(rbp, rsp); for (size_t i = 0; i < regs.size(); ++i) if (regs[i] && HostLocIsGPR(HostLoc(i))) code.push(HostLocToReg64(HostLoc(i))); @@ -87,6 +89,7 @@ void ABI_PopRegistersAndAdjustStack(BlockOfCode& code, const size_t frame_size, for (int32_t i = regs.size() - 1; i >= 0; --i) if (regs[i] && HostLocIsGPR(HostLoc(i))) code.pop(HostLocToReg64(HostLoc(i))); + code.pop(rbp); } void ABI_PushCalleeSaveRegistersAndAdjustStack(BlockOfCode& code, const std::size_t frame_size) {