mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-27 17:39:34 -06:00
Merge pull request #13766 from JosJuice/powerpc-missing-updates
PowerPC: Add missing SDRUpdated/MSRUpdated calls
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user