diff options
| author | MerryMage <MerryMage@users.noreply.github.com> | 2018-10-15 21:01:28 +0100 |
|---|---|---|
| committer | MerryMage <MerryMage@users.noreply.github.com> | 2018-10-28 17:57:44 +0000 |
| commit | 0cd85bbce77f0cdf6f142c88afaace095436abe0 (patch) | |
| tree | 8134f8e26dd2c57b0ac20497b16cfa132ba28ba3 /Source/Core | |
| parent | 453417ad8c02f71f498939d1f4fb5638bd6a4b97 (diff) | |
Jit_Branch: bcctrx
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp index 1852135008..a6ed9ffe73 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp @@ -219,10 +219,14 @@ void Jit64::bcctrx(UGeckoInstruction inst) if (inst.LK_3) MOV(32, PPCSTATE_LR, Imm32(js.compilerPC + 4)); // LR = PC + 4; - gpr.Flush(RegCache::FlushMode::MaintainState); - fpr.Flush(RegCache::FlushMode::MaintainState); - WriteExitDestInRSCRATCH(inst.LK_3, js.compilerPC + 4); - // Would really like to continue the block here, but it ends. TODO. + { + RCForkGuard gpr_guard = gpr.Fork(); + RCForkGuard fpr_guard = fpr.Fork(); + gpr.Flush(); + fpr.Flush(); + WriteExitDestInRSCRATCH(inst.LK_3, js.compilerPC + 4); + // Would really like to continue the block here, but it ends. TODO. + } SetJumpTarget(b); if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE)) |
