mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-04 20:06:41 +01:00
MMU: Use MSR.IR for instruction reads.
This commit is contained in:
parent
c12725c916
commit
a0da6788a3
@ -172,7 +172,8 @@ T MMU::ReadFromHardware(u32 em_address)
|
|||||||
|
|
||||||
bool wi = false;
|
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<flag>(em_address);
|
auto translated_addr = TranslateAddress<flag>(em_address);
|
||||||
if (!translated_addr.Success())
|
if (!translated_addr.Success())
|
||||||
@ -516,7 +517,7 @@ std::optional<ReadResult<u32>> MMU::HostTryReadInstruction(const Core::CPUThread
|
|||||||
case RequestedAddressSpace::Effective:
|
case RequestedAddressSpace::Effective:
|
||||||
{
|
{
|
||||||
const u32 value = mmu.ReadFromHardware<XCheckTLBFlag::OpcodeNoException, u32>(address);
|
const u32 value = mmu.ReadFromHardware<XCheckTLBFlag::OpcodeNoException, u32>(address);
|
||||||
return ReadResult<u32>(!!mmu.m_ppc_state.msr.DR, value);
|
return ReadResult<u32>(!!mmu.m_ppc_state.msr.IR, value);
|
||||||
}
|
}
|
||||||
case RequestedAddressSpace::Physical:
|
case RequestedAddressSpace::Physical:
|
||||||
{
|
{
|
||||||
@ -525,7 +526,7 @@ std::optional<ReadResult<u32>> MMU::HostTryReadInstruction(const Core::CPUThread
|
|||||||
}
|
}
|
||||||
case RequestedAddressSpace::Virtual:
|
case RequestedAddressSpace::Virtual:
|
||||||
{
|
{
|
||||||
if (!mmu.m_ppc_state.msr.DR)
|
if (!mmu.m_ppc_state.msr.IR)
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
const u32 value = mmu.ReadFromHardware<XCheckTLBFlag::OpcodeNoException, u32>(address);
|
const u32 value = mmu.ReadFromHardware<XCheckTLBFlag::OpcodeNoException, u32>(address);
|
||||||
return ReadResult<u32>(true, value);
|
return ReadResult<u32>(true, value);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user