From 00ef23b5700175830834f32cdd678e0b002a777d Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Fri, 25 Jan 2019 14:29:24 +0000 Subject: [PATCH] arch-arm, configs: Create single instance of DTB autogeneration This patch is rewriting the DTB autogeneration functions available in fs_bigLITTLE.py and fs.py as a single method in the GenericArmSystem so that other configuration scripts can make use of it. Change-Id: I492bbf77e6b0ac5c5fbdbc75c0eecba29bd63bda Signed-off-by: Giacomo Travaglini Reviewed-by: Andreas Sandberg Reviewed-on: https://gem5-review.googlesource.com/c/15958 Reviewed-by: Ciro Santilli Maintainer: Andreas Sandberg --- configs/example/arm/fs_bigLITTLE.py | 11 +---------- configs/example/fs.py | 11 +---------- src/arch/arm/ArmSystem.py | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/configs/example/arm/fs_bigLITTLE.py b/configs/example/arm/fs_bigLITTLE.py index 8cf89e3c7..f363872a3 100644 --- a/configs/example/arm/fs_bigLITTLE.py +++ b/configs/example/arm/fs_bigLITTLE.py @@ -261,16 +261,7 @@ def build(options): if options.dtb is not None: system.dtb_filename = SysPaths.binary(options.dtb) else: - def create_dtb_for_system(system, filename): - state = FdtState(addr_cells=2, size_cells=2, cpu_cells=1) - rootNode = system.generateDeviceTree(state) - - fdt = Fdt() - fdt.add_rootnode(rootNode) - dtb_filename = os.path.join(m5.options.outdir, filename) - return fdt.writeDtbFile(dtb_filename) - - system.dtb_filename = create_dtb_for_system(system, 'system.dtb') + system.generateDtb(m5.options.outdir, 'system.dtb') return root diff --git a/configs/example/fs.py b/configs/example/fs.py index 4d2165884..05eca87fb 100644 --- a/configs/example/fs.py +++ b/configs/example/fs.py @@ -360,19 +360,10 @@ if buildEnv['TARGET_ISA'] == "arm" and not options.bare_metal \ "with generation functionality.") # Generate a Device Tree - def create_dtb_for_system(system, filename): - state = FdtState(addr_cells=2, size_cells=2, cpu_cells=1) - rootNode = system.generateDeviceTree(state) - - fdt = Fdt() - fdt.add_rootnode(rootNode) - dtb_filename = os.path.join(m5.options.outdir, filename) - return fdt.writeDtbFile(dtb_filename) - for sysname in ('system', 'testsys', 'drivesys'): if hasattr(root, sysname): sys = getattr(root, sysname) - sys.dtb_filename = create_dtb_for_system(sys, '%s.dtb' % sysname) + sys.generateDtb(m5.options.outdir, '%s.dtb' % sysname) Simulation.setWorkCountOptions(test_sys, options) Simulation.run(options, root, test_sys, FutureClass) diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index bee38a41c..98ff95918 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -37,6 +37,7 @@ # Glenn Bergmans from m5.params import * +from m5.options import * from m5.SimObject import * from m5.util.fdthelper import * @@ -138,6 +139,19 @@ class GenericArmSystem(ArmSystem): panic_on_oops = Param.Bool(False, "Trigger a gem5 panic if the " \ "guest kernel oopses") + def generateDtb(self, outdir, filename): + """ + Autogenerate DTB. Arguments are the folder where the DTB + will be stored, and the name of the DTB file. + """ + state = FdtState(addr_cells=2, size_cells=2, cpu_cells=1) + rootNode = self.generateDeviceTree(state) + + fdt = Fdt() + fdt.add_rootnode(rootNode) + dtb_filename = os.path.join(outdir, filename) + self.dtb_filename = fdt.writeDtbFile(dtb_filename) + class LinuxArmSystem(GenericArmSystem): type = 'LinuxArmSystem' cxx_header = "arch/arm/linux/system.hh" -- 2.30.2