Alpha System: override startup(), instead of loadState()
authorNilay Vaish <nilay@cs.wisc.edu>
Fri, 17 Aug 2012 04:45:21 +0000 (23:45 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Fri, 17 Aug 2012 04:45:21 +0000 (23:45 -0500)
Alpha System was overriding loadState() function to setup some functional
event. The system tried to read/write to memory before the Ruby memory had
unserialized the state. With this patch, Alpha System overrides the
startup() function, and sets up functional events in this function. This
works because startup() is called after Ruby memory system has unserialized
the memory state.

src/arch/alpha/system.cc
src/arch/alpha/system.hh

index 51e1d7e07883eeea4237fcd7c8033261cd948603..ca3c2b078a0b0be164410bf2c7183f5b4a26b89d 100644 (file)
@@ -134,21 +134,14 @@ AlphaSystem::initState()
         virtProxy.write(addr+0x58, data);
     } else
         panic("could not find hwrpb\n");
-
-    // Setup all the function events now that we have a system and a symbol
-    // table
-    setupFuncEvents();
 }
 
 void
-AlphaSystem::loadState(Checkpoint *cp)
+AlphaSystem::startup()
 {
-    System::loadState(cp);
-
     // Setup all the function events now that we have a system and a symbol
     // table
     setupFuncEvents();
-
 }
 
 void
index d832dfe778935ad94663529249952f44790904a1..024d8bb47a88b1bc21caf4e8cf128d50b16152b4 100644 (file)
@@ -62,9 +62,9 @@ class AlphaSystem : public System
     virtual void serialize(std::ostream &os);
     virtual void unserialize(Checkpoint *cp, const std::string &section);
 
-    /** Override loadState to provide a path to call setupFuncEvents()
+    /** Override startup() to provide a path to call setupFuncEvents()
      */
-    virtual void loadState(Checkpoint *cp);
+    virtual void startup();
 
     /**
      * Set the m5AlphaAccess pointer in the console