summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDentomologist <dentomologist@gmail.com>2026-05-07 17:21:50 -0700
committerGitHub <noreply@github.com>2026-05-07 17:21:50 -0700
commitd19952cc113940391ebcf264ced7ddc56310ba75 (patch)
treea4cf220a7dc26f22cc2fe6178b5752940fb99437
parent30a20d75d2190a26f34e54dce95431528959413e (diff)
parent058c7021b8d1f3a038ed8c0edc67fa22c8efc5fd (diff)
Merge pull request #14634 from JosJuice/jitarm64-msr-dr-bit
JitArm64: Fix DR check in MSRUpdated
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/Jit.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
index ce5dd96c74..5b61528fae 100644
--- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
@@ -471,8 +471,6 @@ void JitArm64::MSRUpdated(u32 msr)
void JitArm64::MSRUpdated(ARM64Reg msr)
{
- constexpr LogicalImm dr_bit(1ULL << UReg_MSR{}.DR.StartBit(), GPRSize::B32);
-
auto WA = gpr.GetScopedReg();
ARM64Reg XA = EncodeRegTo64(WA);
@@ -480,7 +478,7 @@ void JitArm64::MSRUpdated(ARM64Reg msr)
auto& memory = m_system.GetMemory();
MOVP2R(MEM_REG, jo.fastmem ? memory.GetLogicalBase() : memory.GetLogicalPageMappingsBase());
MOVP2R(XA, jo.fastmem ? memory.GetPhysicalBase() : memory.GetPhysicalPageMappingsBase());
- TST(msr, dr_bit);
+ TST(msr, LogicalImm(1ULL << UReg_MSR{}.DR.StartBit(), GPRSize::B32));
CSEL(MEM_REG, MEM_REG, XA, CCFlags::CC_NEQ);
STR(IndexType::Unsigned, MEM_REG, PPC_REG, PPCSTATE_OFF(mem_ptr));
@@ -499,7 +497,7 @@ void JitArm64::MSRUpdated(ARM64Reg msr)
MOV(WA, msr);
gpr.Flush(FlushMode::All, ARM64Reg::INVALID_REG);
fpr.Flush(FlushMode::All, ARM64Reg::INVALID_REG);
- FixupBranch dr_unset = TBZ(WA, dr_bit);
+ FixupBranch dr_unset = TBZ(WA, u8(UReg_MSR{}.DR.StartBit()));
static_assert(PPCSTATE_OFF(pagetable_update_pending) < 0x1000);
LDRB(IndexType::Unsigned, WA, PPC_REG, PPCSTATE_OFF(pagetable_update_pending));
FixupBranch update_not_pending = CBZ(WA);