From a0da6788a36399f3e42a28dc6f1d5c28f549955c Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Sat, 19 Nov 2022 02:29:04 +0100 Subject: [PATCH] MMU: Use MSR.IR for instruction reads. --- Source/Core/Core/PowerPC/MMU.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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);