199,200c199,200
< TlbEntry *entry = p->pTable->lookup(pc);
< panic_if(!entry, "Tried to execute unmapped address %#x.\n", pc);
---
> const EmulationPageTable::Entry *pte = p->pTable->lookup(pc);
> panic_if(!pte, "Tried to execute unmapped address %#x.\n", pc);
203c203,206
< dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), *entry);
---
> TlbEntry entry(p->pTable->pid(), vaddr.page(), pte->paddr,
> pte->flags & EmulationPageTable::Uncacheable,
> pte->flags & EmulationPageTable::ReadOnly);
> dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), entry);
215,219c218,225
< TlbEntry *entry = p->pTable->lookup(vaddr);
< if (!entry && p->fixupStackFault(vaddr))
< entry = p->pTable->lookup(vaddr);
< panic_if(!entry, "Tried to access unmapped address %#x.\n", (Addr)vaddr);
< dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), *entry);
---
> const EmulationPageTable::Entry *pte = p->pTable->lookup(vaddr);
> if (!pte && p->fixupStackFault(vaddr))
> pte = p->pTable->lookup(vaddr);
> panic_if(!pte, "Tried to access unmapped address %#x.\n", (Addr)vaddr);
> TlbEntry entry(p->pTable->pid(), vaddr.page(), pte->paddr,
> pte->flags & EmulationPageTable::Uncacheable,
> pte->flags & EmulationPageTable::ReadOnly);
> dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), entry);