PowerPC: Parametrize HID2 macro.

This commit is contained in:
Admiral H. Curtiss
2023-01-27 15:22:40 +01:00
parent 49eeb986c6
commit 6f0ab1b33e
5 changed files with 12 additions and 11 deletions
+3 -3
View File
@@ -91,9 +91,9 @@ void CBoot::SetupHID(bool is_wii)
// HID1 is initialized in PowerPC.cpp to 0x80000000
// HID2 is 0xe0000000
HID2.PSE = 1;
HID2.WPE = 1;
HID2.LSQE = 1;
HID2(PowerPC::ppcState).PSE = 1;
HID2(PowerPC::ppcState).WPE = 1;
HID2(PowerPC::ppcState).LSQE = 1;
// HID4 is 0 on GC and 0x83900000 on Wii
if (is_wii)
@@ -64,10 +64,11 @@ bool IsPairedSingleInstruction(UGeckoInstruction inst)
// but HID2.LSQE is not set.
bool IsInvalidPairedSingleExecution(UGeckoInstruction inst)
{
if (!HID2.PSE && IsPairedSingleInstruction(inst))
if (!HID2(PowerPC::ppcState).PSE && IsPairedSingleInstruction(inst))
return true;
return HID2.PSE && !HID2.LSQE && IsPairedSingleQuantizedNonIndexedInstruction(inst);
return HID2(PowerPC::ppcState).PSE && !HID2(PowerPC::ppcState).LSQE &&
IsPairedSingleQuantizedNonIndexedInstruction(inst);
}
void UpdatePC()
@@ -525,7 +525,7 @@ void Interpreter::dcbz(UGeckoInstruction inst)
void Interpreter::dcbz_l(UGeckoInstruction inst)
{
if (!HID2.LCE)
if (!HID2(PowerPC::ppcState).LCE)
{
GenerateProgramException(ProgramExceptionCause::IllegalInstruction);
return;
@@ -310,7 +310,7 @@ static void Helper_Dequantize(PowerPC::PowerPCState* ppcs, u32 addr, u32 instI,
void Interpreter::psq_l(UGeckoInstruction inst)
{
if (HID2.LSQE == 0)
if (HID2(PowerPC::ppcState).LSQE == 0)
{
GenerateProgramException(ProgramExceptionCause::IllegalInstruction);
return;
@@ -322,7 +322,7 @@ void Interpreter::psq_l(UGeckoInstruction inst)
void Interpreter::psq_lu(UGeckoInstruction inst)
{
if (HID2.LSQE == 0)
if (HID2(PowerPC::ppcState).LSQE == 0)
{
GenerateProgramException(ProgramExceptionCause::IllegalInstruction);
return;
@@ -341,7 +341,7 @@ void Interpreter::psq_lu(UGeckoInstruction inst)
void Interpreter::psq_st(UGeckoInstruction inst)
{
if (HID2.LSQE == 0)
if (HID2(PowerPC::ppcState).LSQE == 0)
{
GenerateProgramException(ProgramExceptionCause::IllegalInstruction);
return;
@@ -353,7 +353,7 @@ void Interpreter::psq_st(UGeckoInstruction inst)
void Interpreter::psq_stu(UGeckoInstruction inst)
{
if (HID2.LSQE == 0)
if (HID2(PowerPC::ppcState).LSQE == 0)
{
GenerateProgramException(ProgramExceptionCause::IllegalInstruction);
return;
+1 -1
View File
@@ -236,7 +236,7 @@ void UpdatePerformanceMonitor(u32 cycles, u32 num_load_stores, u32 num_fp_inst);
// Easy register access macros.
#define HID0(ppc_state) ((UReg_HID0&)(ppc_state).spr[SPR_HID0])
#define HID2 ((UReg_HID2&)PowerPC::ppcState.spr[SPR_HID2])
#define HID2(ppc_state) ((UReg_HID2&)(ppc_state).spr[SPR_HID2])
#define HID4 ((UReg_HID4&)PowerPC::ppcState.spr[SPR_HID4])
#define DMAU (*(UReg_DMAU*)&PowerPC::ppcState.spr[SPR_DMAU])
#define DMAL (*(UReg_DMAL*)&PowerPC::ppcState.spr[SPR_DMAL])