diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp index a069d14073..fdd370acc4 100644 --- a/Source/Core/Core/PowerPC/MMU.cpp +++ b/Source/Core/Core/PowerPC/MMU.cpp @@ -172,7 +172,8 @@ T MMU::ReadFromHardware(u32 em_address) bool wi = false; - if (!never_translate && m_ppc_state.msr.DR) + if (!never_translate && + (IsOpcodeFlag(flag) ? m_ppc_state.msr.IR.Value() : m_ppc_state.msr.DR.Value())) { auto translated_addr = TranslateAddress(em_address); if (!translated_addr.Success()) @@ -516,7 +517,7 @@ std::optional> MMU::HostTryReadInstruction(const Core::CPUThread case RequestedAddressSpace::Effective: { const u32 value = mmu.ReadFromHardware(address); - return ReadResult(!!mmu.m_ppc_state.msr.DR, value); + return ReadResult(!!mmu.m_ppc_state.msr.IR, value); } case RequestedAddressSpace::Physical: { @@ -525,7 +526,7 @@ std::optional> MMU::HostTryReadInstruction(const Core::CPUThread } case RequestedAddressSpace::Virtual: { - if (!mmu.m_ppc_state.msr.DR) + if (!mmu.m_ppc_state.msr.IR) return std::nullopt; const u32 value = mmu.ReadFromHardware(address); return ReadResult(true, value);