예제 #1
0
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;
}
예제 #2
0
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;
}