diff -r 26ece1659229 -r 3c56e583d926 src/sim/faults.hh --- a/src/sim/faults.hh Sat Sep 24 16:59:11 2011 -0700 +++ b/src/sim/faults.hh Sat Sep 24 16:59:31 2011 -0700 @@ -82,8 +82,6 @@ StaticInstPtr inst = StaticInst::nullStaticInstPtr); }; - -#if !FULL_SYSTEM class GenericPageTableFault : public FaultBase { private: @@ -105,6 +103,5 @@ void invoke(ThreadContext * tc, StaticInstPtr inst = StaticInst::nullStaticInstPtr); }; -#endif #endif // __FAULTS_HH__ diff -r 26ece1659229 -r 3c56e583d926 src/sim/faults.cc --- a/src/sim/faults.cc Sat Sep 24 16:59:11 2011 -0700 +++ b/src/sim/faults.cc Sat Sep 24 16:59:31 2011 -0700 @@ -38,18 +38,15 @@ #include "sim/faults.hh" #include "sim/process.hh" -#if !FULL_SYSTEM void FaultBase::invoke(ThreadContext * tc, StaticInstPtr inst) { - panic("fault (%s) detected @ PC %s", name(), tc->pcState()); + if (FULL_SYSTEM) { + DPRINTF(Fault, "Fault %s at PC: %s\n", name(), tc->pcState()); + assert(!tc->misspeculating()); + } else { + panic("fault (%s) detected @ PC %s", name(), tc->pcState()); + } } -#else -void FaultBase::invoke(ThreadContext * tc, StaticInstPtr inst) -{ - DPRINTF(Fault, "Fault %s at PC: %s\n", name(), tc->pcState()); - assert(!tc->misspeculating()); -} -#endif void UnimpFault::invoke(ThreadContext * tc, StaticInstPtr inst) { @@ -61,13 +58,15 @@ tc->pcState(tc->pcState()); } - -#if !FULL_SYSTEM void GenericPageTableFault::invoke(ThreadContext *tc, StaticInstPtr inst) { + bool handled = false; +#if !FULL_SYSTEM Process *p = tc->getProcessPtr(); - if (!p->fixupStackFault(vaddr)) + handled = p->fixupStackFault(vaddr); +#endif + if (!handled) panic("Page table fault when accessing virtual address %#x\n", vaddr); } @@ -76,4 +75,3 @@ { panic("Alignment fault when accessing virtual address %#x\n", vaddr); } -#endif