From c7d2eb87ac5bd91de6eaf33df78db983c306fa2b Mon Sep 17 00:00:00 2001 From: Mihai Parparita Date: Thu, 7 Mar 2024 23:25:50 -0800 Subject: [PATCH] Initialize MMU recently used regions in ppc_mmu_init More encapsulated and allows re-initialization. --- cpu/ppc/ppcmmu.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/cpu/ppc/ppcmmu.cpp b/cpu/ppc/ppcmmu.cpp index 3116fee..a317b83 100644 --- a/cpu/ppc/ppcmmu.cpp +++ b/cpu/ppc/ppcmmu.cpp @@ -77,11 +77,11 @@ uint64_t num_entry_replacements = 0; // number of entry replacements #endif // TLB_PROFILING /** remember recently used physical memory regions for quicker translation. */ -AddressMapEntry last_read_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; -AddressMapEntry last_write_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; -AddressMapEntry last_exec_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; -AddressMapEntry last_ptab_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; -AddressMapEntry last_dma_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; +AddressMapEntry last_read_area; +AddressMapEntry last_write_area; +AddressMapEntry last_exec_area; +AddressMapEntry last_ptab_area; +AddressMapEntry last_dma_area; /** 601-style block address translation. */ static BATResult mpc601_block_address_translation(uint32_t la) @@ -2020,6 +2020,12 @@ static void invalidate_tlb_entries(std::array &tlb) { void ppc_mmu_init() { + last_read_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; + last_write_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; + last_exec_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; + last_ptab_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; + last_dma_area = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0, nullptr, nullptr}; + mmu_exception_handler = ppc_exception_handler; if (is_601) {