Skip to content

Commit

Permalink
JitArm64: Move MMIO handler result before popping stack
Browse files Browse the repository at this point in the history
Otherwise we might throw the result away.
Fixes https://bugs.dolphin-emu.org/issues/13083.
  • Loading branch information
JosJuice committed Oct 29, 2022
1 parent b667931 commit 0660f12
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp
Expand Up @@ -78,9 +78,11 @@ class MMIOWriteCodeGenerator : public MMIO::WriteHandlingMethodVisitor<T>

m_emit->ABI_PushRegisters(m_gprs_in_use);
float_emit.ABI_PushRegisters(m_fprs_in_use, ARM64Reg::X1);

m_emit->MOVI2R(ARM64Reg::W1, m_address);
m_emit->MOV(ARM64Reg::W2, m_src_reg);
m_emit->BLR(m_emit->ABI_SetupLambda(lambda));

float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1);
m_emit->ABI_PopRegisters(m_gprs_in_use);
}
Expand Down Expand Up @@ -173,15 +175,16 @@ class MMIOReadCodeGenerator : public MMIO::ReadHandlingMethodVisitor<T>

m_emit->ABI_PushRegisters(m_gprs_in_use);
float_emit.ABI_PushRegisters(m_fprs_in_use, ARM64Reg::X1);

m_emit->MOVI2R(ARM64Reg::W1, m_address);
m_emit->BLR(m_emit->ABI_SetupLambda(lambda));
float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1);
m_emit->ABI_PopRegisters(m_gprs_in_use);

if (m_sign_extend)
m_emit->SBFM(m_dst_reg, ARM64Reg::W0, 0, sbits - 1);
else
m_emit->UBFM(m_dst_reg, ARM64Reg::W0, 0, sbits - 1);

float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1);
m_emit->ABI_PopRegisters(m_gprs_in_use);
}

ARM64XEmitter* m_emit;
Expand Down

0 comments on commit 0660f12

Please sign in to comment.