summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorskidau <skidau@gmail.com>2014-09-08 17:34:28 +1000
committerskidau <skidau@gmail.com>2014-09-08 17:34:28 +1000
commit9529667eae0eef033c4ed93cbc0bd43d5f5f5ca2 (patch)
tree10ee3c40cd1345cb5061f527b3646a7b516673ec /Source
parentd3a742eb38b71e172d9bf5cebbafcd811e1d3471 (diff)
parent38553964228feae195ea41cf26fd157594e4870c (diff)
Merge pull request #1032 from FioraAeterna/fixnocc
JIT: fix conditional-continue=off
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp8
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp6
2 files changed, 14 insertions, 0 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp
index ddeddb1fb4..fbe969370b 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp
@@ -192,7 +192,11 @@ void Jit64::bcctrx(UGeckoInstruction inst)
SetJumpTarget(b);
if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE))
+ {
+ gpr.Flush();
+ fpr.Flush();
WriteExit(js.compilerPC + 4);
+ }
}
}
@@ -239,5 +243,9 @@ void Jit64::bclrx(UGeckoInstruction inst)
SetJumpTarget( pCTRDontBranch );
if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE))
+ {
+ gpr.Flush();
+ fpr.Flush();
WriteExit(js.compilerPC + 4);
+ }
}
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
index 6a37e9bd29..2e05ce1623 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
@@ -426,6 +426,8 @@ void Jit64::cmpXX(UGeckoInstruction inst)
{
if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE))
{
+ gpr.Flush();
+ fpr.Flush();
WriteExit(js.next_compilerPC + 4);
}
}
@@ -2030,5 +2032,9 @@ void Jit64::twx(UGeckoInstruction inst)
SetJumpTarget(dont_trap);
if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE))
+ {
+ gpr.Flush();
+ fpr.Flush();
WriteExit(js.compilerPC + 4);
+ }
}