From 001bf9152ea513649518a14293406d2b2eb57b3c Mon Sep 17 00:00:00 2001 From: magumagu Date: Sat, 14 Feb 2015 14:08:46 -0800 Subject: [PATCH] Allow executing code out of FakeVMEM. Fixes regression from PR1856 (address translation). --- Source/Core/Core/PowerPC/MMU.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp index 9e63845cbe..8f7188a93a 100644 --- a/Source/Core/Core/PowerPC/MMU.cpp +++ b/Source/Core/Core/PowerPC/MMU.cpp @@ -397,11 +397,22 @@ TryReadInstResult TryReadInstruction(u32 address) { int segment = address >> 28; if ((segment == 0x8 || segment == 0x0) && (address & 0x0FFFFFFF) < Memory::REALRAM_SIZE) + { address = address & 0x3FFFFFFF; + } else if (segment == 0x9 && (address & 0x0FFFFFFF) < Memory::EXRAM_SIZE) + { 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 + { return TryReadInstResult{ false, false, 0 }; + } } } else