# Node ID 853fff736800d8185d2cf4f3e0d3a4637b118107 # Parent 349f4713289b23c6f953439ff91b795806fc260f diff --git a/src/mem/multi_level_page_table_impl.hh b/src/mem/multi_level_page_table_impl.hh --- a/src/mem/multi_level_page_table_impl.hh +++ b/src/mem/multi_level_page_table_impl.hh @@ -147,14 +147,13 @@ if (walk(vaddr, true, PTE_addr)) { PageTableEntry PTE = p.read(PTE_addr); Addr entry_paddr = pTableISAOps.getPnum(PTE); - if (!clobber && entry_paddr == 0) { - pTableISAOps.setPnum(PTE, paddr >> PageShift); - pTableISAOps.setPTEFields(PTE); - p.write(PTE_addr, PTE); - DPRINTF(MMU, "New mapping: %#x-%#x\n", vaddr, paddr); - } else { + if (!clobber && entry_paddr != 0) { fatal("address 0x%x already mapped to %x", vaddr, entry_paddr); } + pTableISAOps.setPnum(PTE, paddr >> PageShift); + pTableISAOps.setPTEFields(PTE); + p.write(PTE_addr, PTE); + DPRINTF(MMU, "New mapping: %#x-%#x\n", vaddr, paddr); eraseCacheEntry(vaddr); updateCache(vaddr, TlbEntry(pid, vaddr, paddr));