summaryrefslogtreecommitdiff
path: root/configs/example
diff options
context:
space:
mode:
authorGabor Dozsa <gabor.dozsa@arm.com>2017-02-14 15:09:18 -0600
committerGabor Dozsa <gabor.dozsa@arm.com>2017-02-14 15:09:18 -0600
commit54c478c0b867c3021cc19190fd32575a8c092560 (patch)
treeac3137413f70d06389c3d43de9006188897d2dc7 /configs/example
parent80c17d0a8d5f95fd4501360c031384054460a7bf (diff)
downloadgem5-54c478c0b867c3021cc19190fd32575a8c092560.tar.xz
arm,config: Refactor the example big.LITTLE(tm) configuration
This patch prepares future extensions and customisation of the example big.LITTLE configuration script. It breaks out the major phases into functions so they can be called from other python scripts. Change-Id: I2cb7c207c410fe14602cf17af7482719abba6c24 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'configs/example')
-rw-r--r--configs/example/arm/fs_bigLITTLE.py35
1 files changed, 25 insertions, 10 deletions
diff --git a/configs/example/arm/fs_bigLITTLE.py b/configs/example/arm/fs_bigLITTLE.py
index 75cb44184..c542b8510 100644
--- a/configs/example/arm/fs_bigLITTLE.py
+++ b/configs/example/arm/fs_bigLITTLE.py
@@ -108,10 +108,7 @@ def createSystem(caches, kernel, bootscript, disks=[]):
return sys
-def main():
- parser = argparse.ArgumentParser(
- description="Generic ARM big.LITTLE configuration")
-
+def addOptions(parser):
parser.add_argument("--restore-from", type=str, default=None,
help="Restore from checkpoint")
parser.add_argument("--dtb", type=str, default=default_dtb,
@@ -138,10 +135,11 @@ def main():
help="Big CPU clock frequency")
parser.add_argument("--little-cpu-clock", type=str, default="1GHz",
help="Little CPU clock frequency")
+ return parser
- m5.ticks.fixGlobalFrequency()
- options = parser.parse_args()
+def build(options):
+ m5.ticks.fixGlobalFrequency()
kernel_cmd = [
"earlyprintk=pl011,0x1c090000",
@@ -208,20 +206,27 @@ def main():
# Linux device tree
system.dtb_filename = SysPaths.binary(options.dtb)
+ return root
+
+
+def instantiate(checkpoint_path=None):
# Get and load from the chkpt or simpoint checkpoint
- if options.restore_from is not None:
- m5.instantiate(options.restore_from)
+ if checkpoint_path is not None:
+ m5.util.inform("Restoring from checkpoint %s", checkpoint_path)
+ m5.instantiate(checkpoint_path)
else:
m5.instantiate()
+
+def run(checkpoint_dir=m5.options.outdir):
# start simulation (and drop checkpoints when requested)
while True:
event = m5.simulate()
exit_msg = event.getCause()
if exit_msg == "checkpoint":
print "Dropping checkpoint at tick %d" % m5.curTick()
- cpt_dir = os.path.join(m5.options.outdir, "cpt.%d" % m5.curTick())
- m5.checkpoint(os.path.join(cpt_dir))
+ cpt_dir = os.path.join(checkpoint_dir, "cpt.%d" % m5.curTick())
+ m5.checkpoint(cpt_dir)
print "Checkpoint done."
else:
print exit_msg, " @ ", m5.curTick()
@@ -230,5 +235,15 @@ def main():
sys.exit(event.getCode())
+def main():
+ parser = argparse.ArgumentParser(
+ description="Generic ARM big.LITTLE configuration")
+ addOptions(parser)
+ options = parser.parse_args()
+ root = build(options)
+ instantiate(options.restore_from)
+ run()
+
+
if __name__ == "__m5_main__":
main()