summaryrefslogtreecommitdiff
path: root/sim/startup.cc
diff options
context:
space:
mode:
authorRon Dreslinski <rdreslin@umich.edu>2005-02-09 12:56:24 -0500
committerRon Dreslinski <rdreslin@umich.edu>2005-02-09 12:56:24 -0500
commit230a5a608dfb2204e2886a795e6bd8a30224b84f (patch)
tree81d312257237c4d13ad44836d55d2f192a479036 /sim/startup.cc
parentd9317dd348f3acd853d1e6a09c09f2a27ad5d707 (diff)
parentc4089562d5add225cd8275b59456eb7eb559b988 (diff)
downloadgem5-230a5a608dfb2204e2886a795e6bd8a30224b84f.tar.xz
Merger
cpu/simple_cpu/simple_cpu.hh: Merge --HG-- extra : convert_revision : 1b6003ac731051fefacb7d7a30c317553b4bf1bc
Diffstat (limited to 'sim/startup.cc')
-rw-r--r--sim/startup.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/sim/startup.cc b/sim/startup.cc
index ebb4c0bc0..7cc0ac8fb 100644
--- a/sim/startup.cc
+++ b/sim/startup.cc
@@ -29,20 +29,32 @@
#include <list>
#include "base/misc.hh"
-#include "sim/startup.hh"
#include "sim/debug.hh"
+#include "sim/startup.hh"
typedef std::list<StartupCallback *> startupq_t;
-startupq_t &startupq() { static startupq_t queue; return queue; }
-StartupCallback::StartupCallback() { startupq().push_back(this); }
-StartupCallback::~StartupCallback() { startupq().remove(this); }
+
+startupq_t *startupq = NULL;
+
+StartupCallback::StartupCallback()
+{
+ if (startupq == NULL)
+ startupq = new startupq_t;
+ startupq->push_back(this);
+}
+
+StartupCallback::~StartupCallback()
+{
+ startupq->remove(this);
+}
+
void StartupCallback::startup() { }
void
SimStartup()
{
- startupq_t::iterator i = startupq().begin();
- startupq_t::iterator end = startupq().end();
+ startupq_t::iterator i = startupq->begin();
+ startupq_t::iterator end = startupq->end();
while (i != end) {
(*i)->startup();