From 71b1c6ce762260d023a799cc861ac6bfc8483c1e Mon Sep 17 00:00:00 2001 From: Dylan Johnson Date: Wed, 2 Sep 2015 13:34:19 -0500 Subject: sim: Add ability to break at specific kernel function Adds a GDB callable function that sets a breakpoint at the beginning of a kernel function. --- src/sim/debug.cc | 10 ++++++++++ src/sim/debug.hh | 7 +++++++ 2 files changed, 17 insertions(+) (limited to 'src/sim') diff --git a/src/sim/debug.cc b/src/sim/debug.cc index dd504778c..b3d73eff7 100644 --- a/src/sim/debug.cc +++ b/src/sim/debug.cc @@ -38,6 +38,8 @@ #include "sim/global_event.hh" #include "sim/sim_events.hh" #include "sim/sim_exit.hh" +#include "cpu/pc_event.hh" +#include "sim/system.hh" using namespace std; @@ -87,6 +89,14 @@ schedBreak(Tick when) warn("need to stop all queues"); } +void +breakAtKernelFunction(const char* funcName) +{ + System* curSystem = System::systemList[0]; + curSystem->addKernelFuncEvent(funcName, + "GDB scheduled break", true); +} + /// /// Function to cause the simulator to take a checkpoint from the debugger /// diff --git a/src/sim/debug.hh b/src/sim/debug.hh index fc9f0f55e..0d324698d 100644 --- a/src/sim/debug.hh +++ b/src/sim/debug.hh @@ -44,6 +44,13 @@ */ void schedBreak(Tick when); +/** + * Cause the simulator to execute a breakpoint when + * the given kernel function is reached + * @param funcName the name of the kernel function at which to break + */ +void breakAtKernelFunction(const char* funcName); + /** Cause the simulator to return to python to create a checkpoint * @param when the cycle to break */ -- cgit v1.2.3