Allow executing code out of FakeVMEM.

Fixes regression from PR1856 (address translation).
This commit is contained in:
magumagu 2015-02-14 14:08:46 -08:00
parent 405444d4fe
commit 001bf9152e
1 changed files with 11 additions and 0 deletions

View File

@ -397,13 +397,24 @@ TryReadInstResult TryReadInstruction(u32 address)
{ {
int segment = address >> 28; int segment = address >> 28;
if ((segment == 0x8 || segment == 0x0) && (address & 0x0FFFFFFF) < Memory::REALRAM_SIZE) if ((segment == 0x8 || segment == 0x0) && (address & 0x0FFFFFFF) < Memory::REALRAM_SIZE)
{
address = address & 0x3FFFFFFF; address = address & 0x3FFFFFFF;
}
else if (segment == 0x9 && (address & 0x0FFFFFFF) < Memory::EXRAM_SIZE) else if (segment == 0x9 && (address & 0x0FFFFFFF) < Memory::EXRAM_SIZE)
{
address = address & 0x3FFFFFFF; address = address & 0x3FFFFFFF;
}
else if (Memory::bFakeVMEM && (segment == 0x7 || segment == 0x4))
{
u32 hex = bswap((*(const u32*)&Memory::m_pFakeVMEM[address & Memory::FAKEVMEM_MASK]));
return TryReadInstResult{ true, true, hex };
}
else else
{
return TryReadInstResult{ false, false, 0 }; return TryReadInstResult{ false, false, 0 };
} }
} }
}
else else
{ {
if (address & 0xC0000000) if (address & 0xC0000000)