summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2015-03-23 06:57:38 -0400
committerCurtis Dunham <Curtis.Dunham@arm.com>2015-03-23 06:57:38 -0400
commitbcea57afc38e6ae852ffa7df9f5fcab63e92ff0d (patch)
treeac653903e69c6f8e6015918bc2ed70843ba0cf5f
parent564482c78283c749dc537cb9c1b2d788bf306a82 (diff)
downloadgem5-bcea57afc38e6ae852ffa7df9f5fcab63e92ff0d.tar.xz
config: Add ability to exit simulation after initialization
When using gem5 as a slave simulator, it will not advance the clock on its own and depends on the master simulator calling simulate(). This new option lets us use the Python scripts to do all the configuration while stopping short of actually simulating anything.
-rw-r--r--configs/common/Options.py3
-rw-r--r--configs/common/Simulation.py7
2 files changed, 10 insertions, 0 deletions
diff --git a/configs/common/Options.py b/configs/common/Options.py
index 4cf1e6c5a..f110f7dfb 100644
--- a/configs/common/Options.py
+++ b/configs/common/Options.py
@@ -150,6 +150,9 @@ def addCommonOptions(parser):
parser.add_option("--init-param", action="store", type="int", default=0,
help="""Parameter available in simulation with m5
initparam""")
+ parser.add_option("--initialize-only", action="store_true", default=False,
+ help="""Exit after initialization. Do not simulate time.
+ Useful when gem5 is run as a library.""")
# Simpoint options
parser.add_option("--simpoint-profile", action="store_true",
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index 72d3d0e97..230701c23 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -581,6 +581,13 @@ def run(options, root, testsys, cpu_class):
cpt_starttick, checkpoint_dir = findCptDir(options, cptdir, testsys)
m5.instantiate(checkpoint_dir)
+ # Initialization is complete. If we're not in control of simulation
+ # (that is, if we're a slave simulator acting as a component in another
+ # 'master' simulator) then we're done here. The other simulator will
+ # call simulate() directly. --initialize-only is used to indicate this.
+ if options.initialize_only:
+ return
+
# Handle the max tick settings now that tick frequency was resolved
# during system instantiation
# NOTE: the maxtick variable here is in absolute ticks, so it must