Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #12107 from MikeIsAStar/retrieve-page-table-inform…
…ation-from-data-cache

Retrieve page table information from the data cache
  • Loading branch information
Pokechu22 committed Aug 16, 2023
2 parents a10d768 + 0bb5c88 commit 10c5da6
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
10 changes: 5 additions & 5 deletions Source/Core/Core/PowerPC/MMU.cpp
Expand Up @@ -1387,8 +1387,8 @@ void MMU::InvalidateTLBEntry(u32 address)
}

// Page Address Translation
MMU::TranslateAddressResult MMU::TranslatePageAddress(const EffectiveAddress address,
const XCheckTLBFlag flag, bool* wi)
template <const XCheckTLBFlag flag>
MMU::TranslateAddressResult MMU::TranslatePageAddress(const EffectiveAddress address, bool* wi)
{
// TLB cache
// This catches 99%+ of lookups in practice, so the actual page table entry code below doesn't
Expand Down Expand Up @@ -1441,11 +1441,11 @@ MMU::TranslateAddressResult MMU::TranslatePageAddress(const EffectiveAddress add

for (int i = 0; i < 8; i++, pteg_addr += 8)
{
const u32 pteg = m_memory.Read_U32(pteg_addr);
const u32 pteg = ReadFromHardware<flag, u32, true>(pteg_addr);

if (pte1.Hex == pteg)
{
UPTE_Hi pte2(m_memory.Read_U32(pteg_addr + 4));
UPTE_Hi pte2(ReadFromHardware<flag, u32, true>(pteg_addr + 4));

// set the access bits
switch (flag)
Expand Down Expand Up @@ -1643,7 +1643,7 @@ MMU::TranslateAddressResult MMU::TranslateAddress(u32 address)
if (TranslateBatAddress(IsOpcodeFlag(flag) ? m_ibat_table : m_dbat_table, &address, &wi))
return TranslateAddressResult{TranslateAddressResultEnum::BAT_TRANSLATED, address, wi};

return TranslatePageAddress(EffectiveAddress{address}, flag, &wi);
return TranslatePageAddress<flag>(EffectiveAddress{address}, &wi);
}

std::optional<u32> MMU::GetTranslatedAddress(u32 address)
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/Core/PowerPC/MMU.h
Expand Up @@ -292,8 +292,8 @@ class MMU
template <const XCheckTLBFlag flag>
TranslateAddressResult TranslateAddress(u32 address);

TranslateAddressResult TranslatePageAddress(const EffectiveAddress address,
const XCheckTLBFlag flag, bool* wi);
template <const XCheckTLBFlag flag>
TranslateAddressResult TranslatePageAddress(const EffectiveAddress address, bool* wi);

void GenerateDSIException(u32 effective_address, bool write);
void GenerateISIException(u32 effective_address);
Expand Down

0 comments on commit 10c5da6

Please sign in to comment.