summaryrefslogtreecommitdiff
path: root/sim/system.cc
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2004-11-03 20:46:33 -0500
committerNathan Binkert <binkertn@umich.edu>2004-11-03 20:46:33 -0500
commitd82e0d11d12cdc75ab3c7a51a36630f5bd0c0e11 (patch)
tree64a77bbf08c9bfe7e7d21a8bf3ea5d2ff2a7495c /sim/system.cc
parent129b885abd30e72c0b3e19787da385af4af6e53e (diff)
downloadgem5-d82e0d11d12cdc75ab3c7a51a36630f5bd0c0e11.tar.xz
make activation of exec contexts happen in startup
the registration stuff all moves into BaseCPU cpu/base_cpu.cc: Move the registration stuff into the BaseCPU since all other CPUs use it. cpu/base_cpu.hh: Move the defer registration stuff into the BaseCPU since all other CPUs use it. cpu/simple_cpu/simple_cpu.cc: cpu/simple_cpu/simple_cpu.hh: registration stuff moved to base class sim/system.cc: the activation of exec contexts should happen at startup, not when they are registered. sim/system.hh: the system now has a startup function --HG-- extra : convert_revision : bb6a7c2da5a1ecf5fe7ede1078200bfe5245f8ef
Diffstat (limited to 'sim/system.cc')
-rw-r--r--sim/system.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/sim/system.cc b/sim/system.cc
index 9fdadf649..1b1a145c6 100644
--- a/sim/system.cc
+++ b/sim/system.cc
@@ -194,12 +194,6 @@ System::registerExecContext(ExecContext *xc)
int xcIndex = execContexts.size();
execContexts.push_back(xc);
- if (xcIndex == 0) {
- // activate with zero delay so that we start ticking right
- // away on cycle 0
- xc->activate(0);
- }
-
RemoteGDB *rgdb = new RemoteGDB(this, xc);
GDBListener *gdbl = new GDBListener(rgdb, 7000 + xcIndex);
gdbl->listen();
@@ -219,6 +213,16 @@ System::registerExecContext(ExecContext *xc)
}
void
+System::startup()
+{
+ if (!execContexts.empty()) {
+ // activate with zero delay so that we start ticking right
+ // away on cycle 0
+ execContexts[0]->activate(0);
+ }
+}
+
+void
System::replaceExecContext(ExecContext *xc, int xcIndex)
{
if (xcIndex >= execContexts.size()) {