Merge pull request #9299 from JosJuice/jitarm64-downcount
JitArm64: Do downcount immediately before jumping to dispatcher
This commit is contained in:
commit
1827a0738b
|
@ -299,8 +299,8 @@ void JitArm64::FreeStack()
|
|||
void JitArm64::WriteExit(u32 destination, bool LK, u32 exit_address_after_return)
|
||||
{
|
||||
Cleanup();
|
||||
DoDownCount();
|
||||
EndTimeProfile(js.curBlock);
|
||||
DoDownCount();
|
||||
|
||||
LK &= m_enable_blr_optimization;
|
||||
|
||||
|
@ -341,8 +341,8 @@ void JitArm64::WriteExit(Arm64Gen::ARM64Reg dest, bool LK, u32 exit_address_afte
|
|||
MOV(DISPATCHER_PC, dest);
|
||||
|
||||
Cleanup();
|
||||
DoDownCount();
|
||||
EndTimeProfile(js.curBlock);
|
||||
DoDownCount();
|
||||
|
||||
LK &= m_enable_blr_optimization;
|
||||
|
||||
|
@ -427,17 +427,16 @@ void JitArm64::WriteBLRExit(Arm64Gen::ARM64Reg dest)
|
|||
|
||||
SetJumpTarget(no_match);
|
||||
|
||||
DoDownCount();
|
||||
|
||||
ResetStack();
|
||||
|
||||
DoDownCount();
|
||||
|
||||
B(dispatcher);
|
||||
}
|
||||
|
||||
void JitArm64::WriteExceptionExit(u32 destination, bool only_external)
|
||||
{
|
||||
Cleanup();
|
||||
DoDownCount();
|
||||
|
||||
LDR(INDEX_UNSIGNED, W30, PPC_REG, PPCSTATE_OFF(Exceptions));
|
||||
MOVI2R(DISPATCHER_PC, destination);
|
||||
|
@ -455,6 +454,7 @@ void JitArm64::WriteExceptionExit(u32 destination, bool only_external)
|
|||
SetJumpTarget(no_exceptions);
|
||||
|
||||
EndTimeProfile(js.curBlock);
|
||||
DoDownCount();
|
||||
|
||||
B(dispatcher);
|
||||
}
|
||||
|
@ -465,7 +465,6 @@ void JitArm64::WriteExceptionExit(ARM64Reg dest, bool only_external)
|
|||
MOV(DISPATCHER_PC, dest);
|
||||
|
||||
Cleanup();
|
||||
DoDownCount();
|
||||
|
||||
LDR(INDEX_UNSIGNED, W30, PPC_REG, PPCSTATE_OFF(Exceptions));
|
||||
FixupBranch no_exceptions = CBZ(W30);
|
||||
|
@ -482,6 +481,7 @@ void JitArm64::WriteExceptionExit(ARM64Reg dest, bool only_external)
|
|||
SetJumpTarget(no_exceptions);
|
||||
|
||||
EndTimeProfile(js.curBlock);
|
||||
DoDownCount();
|
||||
|
||||
B(dispatcher);
|
||||
}
|
||||
|
@ -658,7 +658,7 @@ void JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
|
|||
MOVI2R(W0, static_cast<u32>(JitInterface::ExceptionType::PairedQuantize));
|
||||
MOVP2R(X1, &JitInterface::CompileExceptionCheck);
|
||||
BLR(X1);
|
||||
B(dispatcher);
|
||||
B(dispatcher_no_check);
|
||||
SwitchToNearCode();
|
||||
SetJumpTarget(no_fail);
|
||||
js.assumeNoPairedQuantize = true;
|
||||
|
|
|
@ -594,12 +594,8 @@ void CheckExternalExceptions()
|
|||
else
|
||||
{
|
||||
DEBUG_ASSERT_MSG(POWERPC, 0, "Unknown EXT interrupt: Exceptions == %08x", exceptions);
|
||||
|
||||
// TODO: Re-enable this on ARM64 after fixing https://bugs.dolphin-emu.org/issues/12327
|
||||
#ifndef _M_ARM_64
|
||||
ERROR_LOG_FMT(POWERPC, "Unknown EXTERNAL INTERRUPT exception: Exceptions == {:08x}",
|
||||
exceptions);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue