diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2006-03-07 04:42:06 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2006-03-07 04:42:06 -0500 |
commit | ab67095b2a43b5f2d44d1e1a517d1079ddf9f104 (patch) | |
tree | 6e0cf0ec7d23cd9516d5b6486d47a10849375dc1 /sim | |
parent | fd69f40e209d1b77ce167bf59c189e513a6815f3 (diff) | |
parent | 5aa0669b52cb1a1e5fdb6a372d6b481ebb46b02a (diff) | |
download | gem5-ab67095b2a43b5f2d44d1e1a517d1079ddf9f104.tar.xz |
Merge gblack@m5.eecs.umich.edu:/bk/multiarch
into ewok.(none):/home/gblack/m5/multiarch
--HG--
extra : convert_revision : ead388289742233b5e4f0b37d979e54852cc99b2
Diffstat (limited to 'sim')
-rw-r--r-- | sim/faults.cc | 9 | ||||
-rw-r--r-- | sim/faults.hh | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/sim/faults.cc b/sim/faults.cc index 9b4a0ea7f..2b93353ce 100644 --- a/sim/faults.cc +++ b/sim/faults.cc @@ -28,10 +28,19 @@ #include "sim/faults.hh" #include "cpu/exec_context.hh" +#include "cpu/base.hh" #if !FULL_SYSTEM void FaultBase::invoke(ExecContext * xc) { fatal("fault (%s) detected @ PC 0x%08p", name(), xc->readPC()); } +#else +void FaultBase::invoke(ExecContext * xc) +{ + DPRINTF(Fault, "Fault %s at PC: %#x\n", name(), xc->regs.pc); + xc->cpu->recordEvent(csprintf("Fault %s", name())); + + assert(!xc->misspeculating()); +} #endif diff --git a/sim/faults.hh b/sim/faults.hh index 9e8d224cd..18601e8f1 100644 --- a/sim/faults.hh +++ b/sim/faults.hh @@ -51,9 +51,8 @@ class FaultBase : public RefCounted { public: virtual FaultName name() = 0; - virtual FaultStat & stat() = 0; #if FULL_SYSTEM - virtual void invoke(ExecContext * xc) = 0; + virtual void invoke(ExecContext * xc); #else virtual void invoke(ExecContext * xc); #endif |