summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2011-05-04 20:38:27 -0500
committerAli Saidi <Ali.Saidi@ARM.com>2011-05-04 20:38:27 -0500
commit8aff996db13d039e3021671718b55e3c56b1c95d (patch)
tree07eab0823f3b03b9acdc755292ee0b20853949ba /src/sim
parent77bea2fb42f246b26deedb39ce2786dafd50fe30 (diff)
downloadgem5-8aff996db13d039e3021671718b55e3c56b1c95d.tar.xz
Debug: Add a function to cause the simulator to create a checkpoint from GDB.
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/debug.cc12
-rw-r--r--src/sim/debug.hh18
2 files changed, 30 insertions, 0 deletions
diff --git a/src/sim/debug.cc b/src/sim/debug.cc
index e866c13e7..bd7924117 100644
--- a/src/sim/debug.cc
+++ b/src/sim/debug.cc
@@ -38,6 +38,7 @@
#include "sim/debug.hh"
#include "sim/eventq.hh"
#include "sim/sim_events.hh"
+#include "sim/sim_exit.hh"
using namespace std;
@@ -88,6 +89,17 @@ schedBreakCycle(Tick when)
warn("need to stop all queues");
}
+///
+/// Function to cause the simulator to take a checkpoint from the debugger
+///
+void
+takeCheckpoint(Tick when)
+{
+ if (!when)
+ when = curTick() + 1;
+ exitSimLoop("checkpoint", 0, when, 0);
+}
+
void
eventqDump()
{
diff --git a/src/sim/debug.hh b/src/sim/debug.hh
index ca7a606c6..0bec5ecf3 100644
--- a/src/sim/debug.hh
+++ b/src/sim/debug.hh
@@ -33,8 +33,26 @@
#include "base/types.hh"
+/** @file This file provides the definitions for some useful debugging
+ * functions. These are intended to be called from a debugger such as
+ * gdb.
+ */
+
+
+/** Cause the simulator to execute a breakpoint
+ * @param when the cycle to break
+ */
void schedBreakCycle(Tick when);
+/** Cause the simulator to return to python to create a checkpoint
+ * @param when the cycle to break
+ */
+void takeCheckpoint(Tick when);
+
+/** Dump all the events currently on the event queue
+ */
+void eventqDump();
+
int getRemoteGDBPort();
// Remote gdb base port. 0 disables remote gdb.
void setRemoteGDBPort(int port);