Jit: Reload RMEM/MEM_REG on ISI exception

Aims to fix https://bugs.dolphin-emu.org/issues/13444.
This commit is contained in:
JosJuice 2023-12-27 16:39:00 +01:00
parent b1438c224f
commit 8fcf9969eb
2 changed files with 8 additions and 0 deletions

View File

@ -221,6 +221,9 @@ void Jit64AsmRoutineManager::Generate()
ABI_CallFunction(JitTrampoline);
ABI_PopRegistersAndAdjustStack({}, 0);
// If jitting triggered an ISI exception, MSR.DR may have changed
MOV(64, R(RMEM), PPCSTATE(mem_ptr));
JMP(dispatcher_no_check, Jump::Near);
SetJumpTarget(bail);

View File

@ -177,7 +177,12 @@ void JitArm64::GenerateAsm()
// Call JIT
ResetStack();
ABI_CallFunction(&JitTrampoline, this, DISPATCHER_PC);
LDR(IndexType::Unsigned, DISPATCHER_PC, PPC_REG, PPCSTATE_OFF(pc));
// If jitting triggered an ISI exception, MSR.DR may have changed
EmitUpdateMembase();
B(dispatcher_no_check);
SetJumpTarget(bail);