summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2012-01-11 13:50:18 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2012-01-11 13:50:18 -0600
commit03229f25759898ea2f82ef3e4fe761c452a49701 (patch)
treec6225315ca2964bced98b476a60cb1d16fd61cc9
parentbf59a9298f6154cb85ebebabd4f45738caf29b35 (diff)
downloadgem5-03229f25759898ea2f82ef3e4fe761c452a49701.tar.xz
Config: Add support for restoring using a timing CPU
Currently there is an assumption that restoration from a checkpoint will happen by first restoring to an atomic CPU and then switching to a timing CPU. This patch adds support for directly restoring to a timing CPU. It adds a new option '--restore-with-cpu' which is used to specify the type of CPU to which the checkpoint should be restored to. It defaults to 'atomic' which was the case before.
-rw-r--r--configs/common/Options.py4
-rw-r--r--configs/common/Simulation.py10
2 files changed, 13 insertions, 1 deletions
diff --git a/configs/common/Options.py b/configs/common/Options.py
index ff4acbe37..1941875bc 100644
--- a/configs/common/Options.py
+++ b/configs/common/Options.py
@@ -85,6 +85,10 @@ parser.add_option("--work-end-checkpoint-count", action="store", type="int",
help="checkpoint at specified work end count")
parser.add_option("--work-cpus-checkpoint-count", action="store", type="int",
help="checkpoint and exit when active cpu count is reached")
+parser.add_option("--restore-with-cpu", action="store", type="choice",
+ default="atomic", choices = ["atomic", "timing",
+ "detailed", "inorder"],
+ help = "cpu type for restoring from a checkpoint")
# CPU Switching - default switch model goes from a checkpoint
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index 1897fa8cb..434fe8369 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -60,7 +60,15 @@ def setCPUClass(options):
test_mem_mode = 'atomic'
if not atomic:
- if options.checkpoint_restore != None or options.fast_forward:
+ if options.checkpoint_restore != None:
+ if options.restore_with_cpu != options.cpu_type:
+ CPUClass = TmpClass
+ class TmpClass(AtomicSimpleCPU): pass
+ else:
+ if options.restore_with_cpu != "atomic":
+ test_mem_mode = 'timing'
+
+ elif options.fast_forward:
CPUClass = TmpClass
class TmpClass(AtomicSimpleCPU): pass
else: