mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 21:39:52 +00:00
ARM64: Fix and turn on basic block linking
This commit is contained in:
parent
5dff3f8c89
commit
57e759a605
@ -255,10 +255,9 @@ const u8 *Arm64Jit::DoJit(u32 em_address, JitBlock *b)
|
||||
} else if (jo.enableBlocklink) {
|
||||
b->checkedEntry = GetCodePtr();
|
||||
MOVI2R(SCRATCH1, js.blockStart);
|
||||
// A conditional branch can't reach all the way to the dispatcher :/
|
||||
//FixupBranch skip = B(CC_GE);
|
||||
//B((const void *)outerLoopPCInSCRATCH1, SCRATCH2);
|
||||
//SetJumpTarget(skip);
|
||||
FixupBranch skip = B(CC_GE);
|
||||
B((const void *)outerLoopPCInSCRATCH1);
|
||||
SetJumpTarget(skip);
|
||||
} else {
|
||||
// No block linking, no need to add headers to blocks.
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ namespace MIPSComp
|
||||
struct Arm64JitOptions
|
||||
{
|
||||
Arm64JitOptions() {
|
||||
enableBlocklink = false;
|
||||
enableBlocklink = true;
|
||||
useBackJump = false;
|
||||
useForwardJump = false;
|
||||
cachePointers = true;
|
||||
|
@ -445,7 +445,9 @@ void JitBlockCache::LinkBlockExits(int i) {
|
||||
b.linkStatus[e] = true;
|
||||
#elif defined(ARM64)
|
||||
ARM64XEmitter emit(b.exitPtrs[e]);
|
||||
// TODO ARM64 - must be done before enabling block linking
|
||||
emit.B(blocks_[destinationBlock].checkedEntry);
|
||||
emit.FlushIcache();
|
||||
b.linkStatus[e] = true;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user