From 5f2361f3afb5c8d15e0a5f262a0f8a7942084563 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 22 Apr 2013 13:20:31 -0400 Subject: arm: Enable support for triggering a sim panic on kernel panics Add the options 'panic_on_panic' and 'panic_on_oops' to the LinuxArmSystem SimObject. When these option are enabled, the simulator panics when the guest kernel panics or oopses. Enable panic on panic and panic on oops in ARM-based test cases. --- src/cpu/pc_event.cc | 12 ++++++++++++ src/cpu/pc_event.hh | 7 +++++++ 2 files changed, 19 insertions(+) (limited to 'src/cpu') 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__ -- cgit v1.2.3