summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2006-03-07 20:01:34 -0500
committerKevin Lim <ktlim@umich.edu>2006-03-07 20:01:34 -0500
commit97c4a84985b0f9168f60f28d5cc96be448eef4fa (patch)
tree5d385f2410979c4b4b2164686c87b8a083ad108d /sim
parent11aead894d4186916b587b1449075f276319a235 (diff)
parentab67095b2a43b5f2d44d1e1a517d1079ddf9f104 (diff)
downloadgem5-97c4a84985b0f9168f60f28d5cc96be448eef4fa.tar.xz
Merge ktlim@zizzer:/bk/m5
into zamp.eecs.umich.edu:/z/ktlim2/m5-proxyxc arch/alpha/faults.cc: Hand merge. --HG-- rename : arch/alpha/linux_process.cc => arch/alpha/linux/process.cc rename : arch/alpha/tru64_process.cc => arch/alpha/tru64/process.cc extra : convert_revision : 6ea1fae5be0ebd02eff330423d16da63b790516d
Diffstat (limited to 'sim')
-rw-r--r--sim/faults.cc9
-rw-r--r--sim/faults.hh3
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