summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sim/debug.cc10
-rw-r--r--src/sim/debug.hh7
2 files changed, 17 insertions, 0 deletions
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<BreakPCEvent>(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
*/