summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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