summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/common/Simulation.py12
-rw-r--r--src/python/m5/simulate.py14
2 files changed, 9 insertions, 17 deletions
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index 8e1f84cdf..79e3066a8 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -190,8 +190,7 @@ def run(options, root, testsys, cpu_class):
for i in xrange(np):
testsys.cpu[i].max_insts_any_thread = offset
- m5.instantiate()
-
+ checkpoint_dir = None
if options.checkpoint_restore != None:
from os.path import isdir, exists
from os import listdir
@@ -212,10 +211,6 @@ def run(options, root, testsys, cpu_class):
"cpt.%s.%s" % (options.bench, inst))
if not exists(checkpoint_dir):
fatal("Unable to find checkpoint directory %s", checkpoint_dir)
-
- print "Restoring checkpoint ..."
- m5.restoreCheckpoint(checkpoint_dir)
- print "Done."
else:
dirs = listdir(cptdir)
expr = re.compile('cpt\.([0-9]*)')
@@ -234,10 +229,9 @@ def run(options, root, testsys, cpu_class):
## Adjust max tick based on our starting tick
maxtick = maxtick - int(cpts[cpt_num - 1])
+ checkpoint_dir = joinpath(cptdir, "cpt.%s" % cpts[cpt_num - 1])
- ## Restore the checkpoint
- m5.restoreCheckpoint(joinpath(cptdir,
- "cpt.%s" % cpts[cpt_num - 1]))
+ m5.instantiate(checkpoint_dir)
if options.standard_switch or cpu_class:
if options.standard_switch:
diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py
index 28ba10c0d..0cf0a254e 100644
--- a/src/python/m5/simulate.py
+++ b/src/python/m5/simulate.py
@@ -46,7 +46,7 @@ MaxTick = 2**63 - 1
# The final hook to generate .ini files. Called from the user script
# once the config is built.
-def instantiate():
+def instantiate(ckpt_dir=None):
root = objects.Root.getInstance()
if not root:
@@ -86,6 +86,11 @@ def instantiate():
# We're done registering statistics. Enable the stats package now.
stats.enable()
+ # Restore checkpoint (if any)
+ if ckpt_dir:
+ internal.core.unserializeAll(ckpt_dir)
+ need_resume.append(root)
+
# Reset to put the stats in a consistent state.
stats.reset()
@@ -160,13 +165,6 @@ def checkpoint(dir):
internal.core.serializeAll(dir)
resume(root)
-def restoreCheckpoint(dir):
- root = objects.Root.getInstance()
- print "Restoring from checkpoint"
- internal.core.unserializeAll(dir)
- need_resume.append(root)
- stats.reset()
-
def changeToAtomic(system):
if not isinstance(system, (objects.Root, objects.System)):
raise TypeError, "Parameter of type '%s'. Must be type %s or %s." % \