CPU: Fix assertion tripping in debug builds

This commit is contained in:
Stenzek 2024-08-19 22:03:07 +10:00
parent fefcfc906d
commit 18ca0da78d
No known key found for this signature in database

View file

@ -2306,11 +2306,12 @@ ALWAYS_INLINE_RELEASE void CPU::MemoryBreakpointCheck(VirtualMemoryAddress addre
template<PGXPMode pgxp_mode, bool debug> template<PGXPMode pgxp_mode, bool debug>
[[noreturn]] void CPU::ExecuteImpl() [[noreturn]] void CPU::ExecuteImpl()
{ {
for (;;) if (g_state.pending_ticks >= g_state.downcount)
{
TimingEvents::RunEvents(); TimingEvents::RunEvents();
while (g_state.pending_ticks < g_state.downcount) for (;;)
{
do
{ {
if constexpr (debug) if constexpr (debug)
{ {
@ -2350,7 +2351,7 @@ template<PGXPMode pgxp_mode, bool debug>
{ {
if (g_state.m_regs.v1 != g_state.m_regs.v0) if (g_state.m_regs.v1 != g_state.m_regs.v0)
printf("Got %08X Expected? %08X\n", g_state.m_regs.v1, g_state.m_regs.v0); printf("Got %08X Expected? %08X\n", g_state.m_regs.v1, g_state.m_regs.v0);
} }
#endif #endif
// execute the instruction we previously fetched // execute the instruction we previously fetched
@ -2369,7 +2370,9 @@ template<PGXPMode pgxp_mode, bool debug>
ExitExecution(); ExitExecution();
} }
} }
} } while (g_state.pending_ticks < g_state.downcount);
TimingEvents::RunEvents();
} }
} }