Jit64: Put the exception exit in twX into farcode.

As a byproduct, this fixes the dont_trap jump not having enough available jump distance to its target in some instances (eg. in Not64).
This commit is contained in:
Admiral H. Curtiss 2021-12-18 06:05:08 +01:00
parent 80ccb20931
commit 48560135b3
No known key found for this signature in database
GPG Key ID: F051B4C4044F33FB
1 changed files with 5 additions and 3 deletions

View File

@ -2559,9 +2559,11 @@ void Jit64::twX(UGeckoInstruction inst)
fixups.push_back(f); fixups.push_back(f);
} }
} }
FixupBranch dont_trap = J();
if (!fixups.empty())
{ {
SwitchToFarCode();
RCForkGuard gpr_guard = gpr.Fork(); RCForkGuard gpr_guard = gpr.Fork();
RCForkGuard fpr_guard = fpr.Fork(); RCForkGuard fpr_guard = fpr.Fork();
@ -2577,9 +2579,9 @@ void Jit64::twX(UGeckoInstruction inst)
fpr.Flush(); fpr.Flush();
WriteExceptionExit(); WriteExceptionExit();
}
SetJumpTarget(dont_trap); SwitchToNearCode();
}
if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE)) if (!analyzer.HasOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE))
{ {