bool CSubSystem::IsCpuIdle() const { CBasicBlock* nextBlock = m_executor.FindBlockAt(m_EE.m_State.nPC); if(nextBlock && nextBlock->GetSelfLoopCount() > 5000) { return true; } else if(m_os->IsIdle() || m_isIdle) { return true; } return false; }
bool CSubSystem::IsCpuIdle() { if(m_bios->IsIdle()) { return true; } else { uint32 physicalPc = m_cpu.m_pAddrTranslator(&m_cpu, m_cpu.m_State.nPC); CBasicBlock* nextBlock = m_executor.FindBlockAt(physicalPc); if(nextBlock && nextBlock->GetSelfLoopCount() > 5000) { //Go a little bit faster if we're "stuck" return true; } } return false; }