config: Remove support for CPU aliases.
This was added for backwards compatability, but it adds a decent amount of complexity. The table below shows what CPU class name to use in place of a given alias. +==========+========================================================+ | Alias | CPU class | +==========+========================================================+ | timing | TimingSimpleCPU | | atomic | AtomicSimpleCPU | | minor | MinorCPU | | detailed | DrivO3CPU | | kvm | ArmKvmCPU, ArmV8KvmCPU or X86KvmCPU, depending on arch | | trace | TraceCPU | +==========+========================================================+ Change-Id: I251c4f64b7869c6b64dd25b36967ae240f01ef08 Reviewed-on: https://gem5-review.googlesource.com/2940 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
@@ -38,28 +38,11 @@
|
||||
import m5.objects
|
||||
import inspect
|
||||
import sys
|
||||
from textwrap import TextWrapper
|
||||
from textwrap import TextWrapper
|
||||
|
||||
# Dictionary of mapping names of real CPU models to classes.
|
||||
_cpu_classes = {}
|
||||
|
||||
# CPU aliases. The CPUs listed here might not be compiled, we make
|
||||
# sure they exist before we add them to the CPU list. A target may be
|
||||
# specified as a tuple, in which case the first available CPU model in
|
||||
# the tuple will be used as the target.
|
||||
_cpu_aliases_all = [
|
||||
("timing", "TimingSimpleCPU"),
|
||||
("atomic", "AtomicSimpleCPU"),
|
||||
("minor", "MinorCPU"),
|
||||
("detailed", "DerivO3CPU"),
|
||||
("kvm", ("ArmKvmCPU", "ArmV8KvmCPU", "X86KvmCPU")),
|
||||
("trace", "TraceCPU"),
|
||||
]
|
||||
|
||||
# Filtered list of aliases. Only aliases for existing CPUs exist in
|
||||
# this list.
|
||||
_cpu_aliases = {}
|
||||
|
||||
|
||||
def is_cpu_class(cls):
|
||||
"""Determine if a class is a CPU that can be instantiated"""
|
||||
@@ -76,10 +59,8 @@ def is_cpu_class(cls):
|
||||
def get(name):
|
||||
"""Get a CPU class from a user provided class name or alias."""
|
||||
|
||||
real_name = _cpu_aliases.get(name, name)
|
||||
|
||||
try:
|
||||
cpu_class = _cpu_classes[real_name]
|
||||
cpu_class = _cpu_classes[name]
|
||||
return cpu_class
|
||||
except KeyError:
|
||||
print "%s is not a valid CPU model." % (name,)
|
||||
@@ -100,14 +81,9 @@ def print_cpu_list():
|
||||
for line in doc_wrapper.wrap(doc):
|
||||
print line
|
||||
|
||||
if _cpu_aliases:
|
||||
print "\nCPU aliases:"
|
||||
for alias, target in _cpu_aliases.items():
|
||||
print "\t%s => %s" % (alias, target)
|
||||
|
||||
def cpu_names():
|
||||
"""Return a list of valid CPU names."""
|
||||
return _cpu_classes.keys() + _cpu_aliases.keys()
|
||||
return _cpu_classes.keys()
|
||||
|
||||
def config_etrace(cpu_cls, cpu_list, options):
|
||||
if issubclass(cpu_cls, m5.objects.DerivO3CPU):
|
||||
@@ -137,22 +113,10 @@ def config_etrace(cpu_cls, cpu_list, options):
|
||||
# in the normal object hierarchy, so we have to add it manually.
|
||||
try:
|
||||
from O3_ARM_v7a import O3_ARM_v7a_3
|
||||
_cpu_classes["arm_detailed"] = O3_ARM_v7a_3
|
||||
_cpu_classes["O3_ARM_v7a_3"] = O3_ARM_v7a_3
|
||||
except:
|
||||
pass
|
||||
|
||||
# Add all CPUs in the object hierarchy.
|
||||
for name, cls in inspect.getmembers(m5.objects, is_cpu_class):
|
||||
_cpu_classes[name] = cls
|
||||
|
||||
for alias, target in _cpu_aliases_all:
|
||||
if isinstance(target, tuple):
|
||||
# Some aliases contain a list of CPU model sorted in priority
|
||||
# order. Use the first target that's available.
|
||||
for t in target:
|
||||
if t in _cpu_classes:
|
||||
_cpu_aliases[alias] = t
|
||||
break
|
||||
elif target in _cpu_classes:
|
||||
# Normal alias
|
||||
_cpu_aliases[alias] = target
|
||||
|
||||
Reference in New Issue
Block a user