diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp index b0e198cc45..af4dafb7b5 100644 --- a/Source/Core/Core/PowerPC/MMU.cpp +++ b/Source/Core/Core/PowerPC/MMU.cpp @@ -1216,7 +1216,7 @@ void MMU::SDRUpdated() WARN_LOG_FMT(POWERPC, "Invalid HTABORG: htaborg=0x{:08x} htabmask=0x{:08x}", htaborg, htabmask); m_ppc_state.pagetable_base = htaborg << 16; - m_ppc_state.pagetable_hashmask = ((htabmask << 10) | 0x3ff); + m_ppc_state.pagetable_mask = (htabmask << 16) | 0xffc0; } void MMU::SRUpdated() @@ -1363,7 +1363,7 @@ MMU::TranslateAddressResult MMU::TranslatePageAddress(const EffectiveAddress add pte1.H = 1; } - u32 pteg_addr = ((hash & m_ppc_state.pagetable_hashmask) << 6) | m_ppc_state.pagetable_base; + u32 pteg_addr = ((hash << 6) & m_ppc_state.pagetable_mask) | m_ppc_state.pagetable_base; for (int i = 0; i < 8; i++, pteg_addr += 8) { diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index 7de9869aee..affc339472 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -94,7 +94,7 @@ void PowerPCManager::DoState(PointerWrap& p) p.DoArray(m_ppc_state.spr); p.DoArray(m_ppc_state.tlb); p.Do(m_ppc_state.pagetable_base); - p.Do(m_ppc_state.pagetable_hashmask); + p.Do(m_ppc_state.pagetable_mask); p.Do(m_ppc_state.reserve); p.Do(m_ppc_state.reserve_address); @@ -274,7 +274,7 @@ void PowerPCManager::Init(CPUCore cpu_core) void PowerPCManager::Reset() { m_ppc_state.pagetable_base = 0; - m_ppc_state.pagetable_hashmask = 0; + m_ppc_state.pagetable_mask = 0; m_ppc_state.tlb = {}; ResetRegisters(); diff --git a/Source/Core/Core/PowerPC/PowerPC.h b/Source/Core/Core/PowerPC/PowerPC.h index 8232196af1..f2a0436ee2 100644 --- a/Source/Core/Core/PowerPC/PowerPC.h +++ b/Source/Core/Core/PowerPC/PowerPC.h @@ -178,7 +178,7 @@ struct PowerPCState std::array, NUM_TLBS> tlb; u32 pagetable_base = 0; - u32 pagetable_hashmask = 0; + u32 pagetable_mask = 0; InstructionCache iCache; bool m_enable_dcache = false; diff --git a/Source/Core/DolphinQt/Debugger/RegisterWidget.cpp b/Source/Core/DolphinQt/Debugger/RegisterWidget.cpp index 35253b49cd..80cd55f674 100644 --- a/Source/Core/DolphinQt/Debugger/RegisterWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/RegisterWidget.cpp @@ -494,7 +494,7 @@ void RegisterWidget::PopulateTable() 31, 5, RegisterType::pt_hashmask, "Hash Mask", [this] { const auto& ppc_state = m_system.GetPPCState(); - return (ppc_state.pagetable_hashmask << 6) | ppc_state.pagetable_base; + return ppc_state.pagetable_mask | ppc_state.pagetable_base; }, nullptr);