43d42
< #include "config/the_isa.hh"
49d47
< using namespace TheISA;
51,56d48
< EmulationPageTable::~EmulationPageTable()
< {
< for (auto &iter : pTable)
< delete iter.second;
< }
<
69,75c61,65
< if (clobber) {
< delete it->second;
< } else {
< // already mapped
< panic("EmulationPageTable::allocate: addr %#x already mapped",
< vaddr);
< }
---
> // already mapped
> panic_if(!clobber,
> "EmulationPageTable::allocate: addr %#x already mapped",
> vaddr);
> it->second = Entry(paddr, flags);
77c67
< it = pTable.emplace(vaddr, nullptr).first;
---
> pTable.emplace(vaddr, Entry(paddr, flags));
80,82d69
< it->second = new TheISA::TlbEntry(pid, vaddr, paddr,
< flags & Uncacheable,
< flags & ReadOnly);
105d91
< new_it->second->updateVaddr(new_vaddr);
116c102
< addr_maps->push_back(make_pair(iter.first, iter.second->pageStart()));
---
> addr_maps->push_back(make_pair(iter.first, iter.second.paddr));
124c110
< DPRINTF(MMU, "Unmapping page: %#x-%#x\n", vaddr, vaddr+ size);
---
> DPRINTF(MMU, "Unmapping page: %#x-%#x\n", vaddr, vaddr + size);
129d114
< delete it->second;
149c134
< TheISA::TlbEntry *
---
> const EmulationPageTable::Entry *
156c141
< return iter->second;
---
> return &(iter->second);
162c147
< TheISA::TlbEntry *entry = lookup(vaddr);
---
> const Entry *entry = lookup(vaddr);
167c152
< paddr = pageOffset(vaddr) + entry->pageStart();
---
> paddr = pageOffset(vaddr) + entry->paddr;
198c183,184
< pte.second->serialize(cp);
---
> paramOut(cp, "paddr", pte.second.paddr);
> paramOut(cp, "flags", pte.second.flags);
212,214d197
< TheISA::TlbEntry *entry = new TheISA::TlbEntry();
< entry->unserialize(cp);
<
216c199,203
< paramIn(cp, "vaddr", vaddr);
---
> UNSERIALIZE_SCALAR(vaddr);
> Addr paddr;
> uint64_t flags;
> UNSERIALIZE_SCALAR(paddr);
> UNSERIALIZE_SCALAR(flags);
218c205
< pTable[vaddr] = entry;
---
> pTable.emplace(vaddr, Entry(paddr, flags));