Merge pull request #13766 from JosJuice/powerpc-missing-updates

PowerPC: Add missing SDRUpdated/MSRUpdated calls
This commit is contained in:
JMC47
2025-06-24 16:36:49 -04:00
committed by GitHub
3 changed files with 13 additions and 1 deletions

View File

@ -447,9 +447,15 @@ void Expression::SynchronizeBindings(Core::System& system, SynchronizeDirection
break; break;
case VarBindingType::SPR: case VarBindingType::SPR:
if (dir == SynchronizeDirection::From) if (dir == SynchronizeDirection::From)
{
v->value = static_cast<double>(ppc_state.spr[bind->index]); v->value = static_cast<double>(ppc_state.spr[bind->index]);
}
else else
{
ppc_state.spr[bind->index] = static_cast<u32>(static_cast<s64>(v->value)); ppc_state.spr[bind->index] = static_cast<u32>(static_cast<s64>(v->value));
if (bind->index == SPR_SDR)
system.GetMMU().SDRUpdated();
}
break; break;
case VarBindingType::PCtr: case VarBindingType::PCtr:
if (dir == SynchronizeDirection::From) if (dir == SynchronizeDirection::From)
@ -457,9 +463,14 @@ void Expression::SynchronizeBindings(Core::System& system, SynchronizeDirection
break; break;
case VarBindingType::MSR: case VarBindingType::MSR:
if (dir == SynchronizeDirection::From) if (dir == SynchronizeDirection::From)
{
v->value = static_cast<double>(ppc_state.msr.Hex); v->value = static_cast<double>(ppc_state.msr.Hex);
}
else else
{
ppc_state.msr.Hex = static_cast<u32>(static_cast<s64>(v->value)); ppc_state.msr.Hex = static_cast<u32>(static_cast<s64>(v->value));
PowerPC::MSRUpdated(ppc_state);
}
break; break;
} }
} }

View File

@ -684,6 +684,7 @@ static void WriteRegister()
break; break;
case 104: case 104:
ppc_state.spr[SPR_SDR] = re32hex(bufptr); ppc_state.spr[SPR_SDR] = re32hex(bufptr);
system.GetMMU().SDRUpdated();
break; break;
case 105: case 105:
ppc_state.spr[SPR_ASR] = re64hex(bufptr); ppc_state.spr[SPR_ASR] = re64hex(bufptr);

View File

@ -102,7 +102,7 @@ void Interpreter::Trace(const UGeckoInstruction& inst)
"INTER PC: {:08x} SRR0: {:08x} SRR1: {:08x} CRval: {:016x} " "INTER PC: {:08x} SRR0: {:08x} SRR1: {:08x} CRval: {:016x} "
"FPSCR: {:08x} MSR: {:08x} LR: {:08x} {} {:08x} {}", "FPSCR: {:08x} MSR: {:08x} LR: {:08x} {} {:08x} {}",
m_ppc_state.pc, SRR0(m_ppc_state), SRR1(m_ppc_state), m_ppc_state.cr.fields[0], m_ppc_state.pc, SRR0(m_ppc_state), SRR1(m_ppc_state), m_ppc_state.cr.fields[0],
m_ppc_state.fpscr.Hex, m_ppc_state.msr.Hex, m_ppc_state.spr[8], regs, inst.hex, m_ppc_state.fpscr.Hex, m_ppc_state.msr.Hex, m_ppc_state.spr[SPR_LR], regs, inst.hex,
ppc_inst); ppc_inst);
} }