Make sure we are still doing a tlb miss when executing from a non valid tlb location (even if we have valid code there)

This commit is contained in:
zilmar 2012-09-29 06:09:27 +10:00
parent c6c80c0f04
commit f0c7291cd7
1 changed files with 11 additions and 11 deletions

View File

@ -83,17 +83,6 @@ void CRecompiler::RecompilerMain_VirtualTable ( void )
while(!Done)
{
PCCompiledFunc_TABLE & table = FunctionTable()[PC >> 0xC];
DWORD TableEntry = (PC & 0xFFF) >> 2;
if (table)
{
CCompiledFunc * info = table[TableEntry];
if (info != NULL)
{
(info->Function())();
continue;
}
}
if (!_TransVaddr->ValidVaddr(PC))
{
_Reg->DoTLBMiss(false,PC);
@ -105,6 +94,17 @@ void CRecompiler::RecompilerMain_VirtualTable ( void )
continue;
}
PCCompiledFunc_TABLE & table = FunctionTable()[PC >> 0xC];
DWORD TableEntry = (PC & 0xFFF) >> 2;
if (table)
{
CCompiledFunc * info = table[TableEntry];
if (info != NULL)
{
(info->Function())();
continue;
}
}
CCompiledFunc * info = CompilerCode();
if (info == NULL || m_EndEmulation)
{