diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index e273ccfe89..7cfd91d3e7 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -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(JitInterface::ExceptionType::PairedQuantize)); MOVP2R(X1, &JitInterface::CompileExceptionCheck); BLR(X1); - B(dispatcher); + B(dispatcher_no_check); SwitchToNearCode(); SetJumpTarget(no_fail); js.assumeNoPairedQuantize = true; diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index 13200e0d6a..6a20d6a345 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -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 } } }