summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2018-10-15 21:01:28 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2018-10-28 17:57:44 +0000
commit0cd85bbce77f0cdf6f142c88afaace095436abe0 (patch)
tree8134f8e26dd2c57b0ac20497b16cfa132ba28ba3 /Source/Core
parent453417ad8c02f71f498939d1f4fb5638bd6a4b97 (diff)
Jit_Branch: bcctrx
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp12
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))