diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-06-26 16:18:56 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-07-03 09:47:19 +0000 |
commit | 89530735d115578d7e88f1bba1f299becb1350ca (patch) | |
tree | 1a557ed0ea48e2222b34deea66a36274d39aa2d0 /configs | |
parent | 3212bdf3a89addef371bd7d3f43c322b002644db (diff) | |
download | gem5-89530735d115578d7e88f1bba1f299becb1350ca.tar.xz |
config: Clean up core timing model discovery
Instead of hard-coding timing models in CpuConfig.py, use
introspection to find them in the cores.arm model package.
Change-Id: I6642dc9cbc3f5beeeec748e716c9426c233d51ea
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3944
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'configs')
-rw-r--r-- | configs/common/CpuConfig.py | 29 | ||||
-rw-r--r-- | configs/common/cores/arm/__init__.py | 12 |
2 files changed, 18 insertions, 23 deletions
diff --git a/configs/common/CpuConfig.py b/configs/common/CpuConfig.py index 4def9fdda..731ba4f26 100644 --- a/configs/common/CpuConfig.py +++ b/configs/common/CpuConfig.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012 ARM Limited +# Copyright (c) 2012, 2017 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -110,28 +110,11 @@ def config_etrace(cpu_cls, cpu_list, options): fatal("%s does not support data dependency tracing. Use a CPU model of" " type or inherited from DerivO3CPU.", cpu_cls) -# The ARM detailed CPU is special in the sense that it doesn't exist -# in the normal object hierarchy, so we have to add it manually. -try: - from cores.arm.O3_ARM_v7a import O3_ARM_v7a_3 - _cpu_classes["O3_ARM_v7a_3"] = O3_ARM_v7a_3 -except: - pass - -# The calibrated ex5-model cores -try: - from cores.arm.ex5_LITTLE import ex5_LITTLE - _cpu_classes["ex5_LITTLE"] = ex5_LITTLE -except: - pass - -try: - from cores.arm.ex5_big import ex5_big - _cpu_classes["ex5_big"] = ex5_big -except: - pass - - # Add all CPUs in the object hierarchy. for name, cls in inspect.getmembers(m5.objects, is_cpu_class): _cpu_classes[name] = cls + +import cores.arm +for mod_name, module in inspect.getmembers(cores.arm, inspect.ismodule): + for name, cls in inspect.getmembers(module, is_cpu_class): + _cpu_classes[name] = cls diff --git a/configs/common/cores/arm/__init__.py b/configs/common/cores/arm/__init__.py index 7a2173eab..96388f731 100644 --- a/configs/common/cores/arm/__init__.py +++ b/configs/common/cores/arm/__init__.py @@ -34,3 +34,15 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Authors: Andreas Sandberg + +from pkgutil import iter_modules +from importlib import import_module + +_cpu_modules = [ + name for _, name, ispkg in iter_modules(__path__) if not ispkg +] + +for c in _cpu_modules: + import_module("." + c, package=__package__) + +__all__ = _cpu_modules |