summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/pc_event.cc12
-rw-r--r--src/cpu/pc_event.hh7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/cpu/pc_event.cc b/src/cpu/pc_event.cc
index c957fe4d5..837b17e34 100644
--- a/src/cpu/pc_event.cc
+++ b/src/cpu/pc_event.cc
@@ -158,3 +158,15 @@ sched_break_pc(Addr addr)
}
}
+
+PanicPCEvent::PanicPCEvent(PCEventQueue *q, const std::string &desc, Addr pc)
+ : PCEvent(q, desc, pc)
+{
+}
+
+void
+PanicPCEvent::process(ThreadContext *tc)
+{
+ StringWrap name(tc->getCpuPtr()->name() + ".panic_event");
+ panic(descr());
+}
diff --git a/src/cpu/pc_event.hh b/src/cpu/pc_event.hh
index c73fc3c5a..11fce2ca0 100644
--- a/src/cpu/pc_event.hh
+++ b/src/cpu/pc_event.hh
@@ -146,4 +146,11 @@ void sched_break_pc_sys(System *sys, Addr addr);
void sched_break_pc(Addr addr);
+class PanicPCEvent : public PCEvent
+{
+ public:
+ PanicPCEvent(PCEventQueue *q, const std::string &desc, Addr pc);
+ virtual void process(ThreadContext *tc);
+};
+
#endif // __PC_EVENT_HH__