From 0043b77ccd4aec9fc5d3dda155c35286caf67da3 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 5 May 2018 17:51:34 -0400 Subject: [PATCH] Gekko: Make UReg_MSR's single-argument constructor explicit Prevents implicit construction of MSR instances from integral values. This is beneficial, considering MSR values have an intended representation while a regular magic value doesn't. So make these conversions required to be explicit. --- Source/Core/Core/FifoPlayer/FifoPlayer.cpp | 2 +- Source/Core/Core/PowerPC/Gekko.h | 2 +- Source/Core/Core/PowerPC/PowerPC.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/FifoPlayer/FifoPlayer.cpp b/Source/Core/Core/FifoPlayer/FifoPlayer.cpp index 6f11ae9f41..e0c49d26b2 100644 --- a/Source/Core/Core/FifoPlayer/FifoPlayer.cpp +++ b/Source/Core/Core/FifoPlayer/FifoPlayer.cpp @@ -428,7 +428,7 @@ void FifoPlayer::LoadMemory() UReg_MSR newMSR; newMSR.DR = 1; newMSR.IR = 1; - MSR = newMSR.Hex; + MSR.Hex = newMSR.Hex; PowerPC::ppcState.spr[SPR_IBAT0U] = 0x80001fff; PowerPC::ppcState.spr[SPR_IBAT0L] = 0x00000002; PowerPC::ppcState.spr[SPR_DBAT0U] = 0x80001fff; diff --git a/Source/Core/Core/PowerPC/Gekko.h b/Source/Core/Core/PowerPC/Gekko.h index 6305ee4a3b..cdb3777ae1 100644 --- a/Source/Core/Core/PowerPC/Gekko.h +++ b/Source/Core/Core/PowerPC/Gekko.h @@ -378,7 +378,7 @@ union UReg_MSR u32 Hex = 0; UReg_MSR() = default; - UReg_MSR(u32 hex_) : Hex{hex_} {} + explicit UReg_MSR(u32 hex_) : Hex{hex_} {} }; #define FPRF_SHIFT 12 diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index e73ca4f0f6..dd82d7dd63 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -144,7 +144,7 @@ static void ResetRegisters() SystemTimers::TimeBaseSet(); // MSR should be 0x40, but we don't emulate BS1, so it would never be turned off :} - ppcState.msr = 0; + ppcState.msr.Hex = 0; rDEC = 0xFFFFFFFF; SystemTimers::DecrementerSet(); }