Skip to content

Commit

Permalink
Merge pull request #9299 from JosJuice/jitarm64-downcount
Browse files Browse the repository at this point in the history
JitArm64: Do downcount immediately before jumping to dispatcher
  • Loading branch information
degasus committed Dec 7, 2020
2 parents 2952f99 + 0cebbb5 commit 1827a07
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 11 deletions.
14 changes: 7 additions & 7 deletions Source/Core/Core/PowerPC/JitArm64/Jit.cpp
Expand Up @@ -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;

Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand All @@ -455,6 +454,7 @@ void JitArm64::WriteExceptionExit(u32 destination, bool only_external)
SetJumpTarget(no_exceptions);

EndTimeProfile(js.curBlock);
DoDownCount();

B(dispatcher);
}
Expand All @@ -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);
Expand All @@ -482,6 +481,7 @@ void JitArm64::WriteExceptionExit(ARM64Reg dest, bool only_external)
SetJumpTarget(no_exceptions);

EndTimeProfile(js.curBlock);
DoDownCount();

B(dispatcher);
}
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 0 additions & 4 deletions Source/Core/Core/PowerPC/PowerPC.cpp
Expand Up @@ -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
}
}
}
Expand Down

0 comments on commit 1827a07

Please sign in to comment.