diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2024-01-01 22:09:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-01 22:09:05 +0100 |
| commit | 6e3a2324a4b018bc052aedebd149dc46afbc5699 (patch) | |
| tree | 5056a3f431fb56f03755ebd100d77094a6de321f /Source/Core | |
| parent | 043d868841affc0d2baff57e96c43e3551d0c6fe (diff) | |
| parent | 8fcf9969ebd53d6e5e13fa70e5d034ccb13af6ad (diff) | |
Merge pull request #12464 from JosJuice/jit-isi-membase
Jit: Reload RMEM/MEM_REG on ISI exception
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/PowerPC/Jit64/JitAsm.cpp | 3 | ||||
| -rw-r--r-- | Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp index 525d65cf70..7b0e3e8242 100644 --- a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp +++ b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp @@ -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); diff --git a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp index 87f8f3ae2e..cd93fccebf 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp @@ -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); |
