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:
parent
c6c80c0f04
commit
f0c7291cd7
|
@ -83,17 +83,6 @@ void CRecompiler::RecompilerMain_VirtualTable ( void )
|
||||||
|
|
||||||
while(!Done)
|
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))
|
if (!_TransVaddr->ValidVaddr(PC))
|
||||||
{
|
{
|
||||||
_Reg->DoTLBMiss(false,PC);
|
_Reg->DoTLBMiss(false,PC);
|
||||||
|
@ -105,6 +94,17 @@ void CRecompiler::RecompilerMain_VirtualTable ( void )
|
||||||
continue;
|
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();
|
CCompiledFunc * info = CompilerCode();
|
||||||
if (info == NULL || m_EndEmulation)
|
if (info == NULL || m_EndEmulation)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue