43a44
> #endif
46d46
< #endif
627,632c627,628
< #if !FULL_SYSTEM
< Process *p = tc->getProcessPtr();
< TlbEntry entry;
< bool success = p->pTable->lookup(vaddr, entry);
< if (!success) {
< panic("Tried to execute unmapped address %#x.\n", vaddr);
---
> if (FullSystem) {
> SparcFaultBase::invoke(tc, inst);
634,636c630,639
< Addr alignedVaddr = p->pTable->pageAlign(vaddr);
< tc->getITBPtr()->insert(alignedVaddr, 0 /*partition id*/,
< p->M5_pid /*context id*/, false, entry.pte);
---
> Process *p = tc->getProcessPtr();
> TlbEntry entry;
> bool success = p->pTable->lookup(vaddr, entry);
> if (!success) {
> panic("Tried to execute unmapped address %#x.\n", vaddr);
> } else {
> Addr alignedVaddr = p->pTable->pageAlign(vaddr);
> tc->getITBPtr()->insert(alignedVaddr, 0 /*partition id*/,
> p->M5_pid /*context id*/, false, entry.pte);
> }
638,640d640
< #else
< SparcFaultBase::invoke(tc, inst);
< #endif
646,655c646,647
< #if !FULL_SYSTEM
< Process *p = tc->getProcessPtr();
< TlbEntry entry;
< bool success = p->pTable->lookup(vaddr, entry);
< if (!success) {
< if (p->fixupStackFault(vaddr))
< success = p->pTable->lookup(vaddr, entry);
< }
< if (!success) {
< panic("Tried to access unmapped address %#x.\n", vaddr);
---
> if (FullSystem) {
> SparcFaultBase::invoke(tc, inst);
657,659c649,662
< Addr alignedVaddr = p->pTable->pageAlign(vaddr);
< tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/,
< p->M5_pid /*context id*/, false, entry.pte);
---
> Process *p = tc->getProcessPtr();
> TlbEntry entry;
> bool success = p->pTable->lookup(vaddr, entry);
> if (!success) {
> if (p->fixupStackFault(vaddr))
> success = p->pTable->lookup(vaddr, entry);
> }
> if (!success) {
> panic("Tried to access unmapped address %#x.\n", vaddr);
> } else {
> Addr alignedVaddr = p->pTable->pageAlign(vaddr);
> tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/,
> p->M5_pid /*context id*/, false, entry.pte);
> }
661,663d663
< #else
< SparcFaultBase::invoke(tc, inst);
< #endif