- real_name = _cpu_aliases.get(name, name)
-
- try:
- cpu_class = _cpu_classes[real_name]
- return cpu_class
- except KeyError:
- print "%s is not a valid CPU model." % (name,)
- sys.exit(1)
-
-def print_cpu_list():
- """Print a list of available CPU classes including their aliases."""
-
- print "Available CPU classes:"
- doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
- for name, cls in _cpu_classes.items():
- print "\t%s" % name
-
- # Try to extract the class documentation from the class help
- # string.
- doc = inspect.getdoc(cls)
- if doc:
- 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()
-
-# 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 O3_ARM_v7a import O3_ARM_v7a_3
- _cpu_classes["arm_detailed"] = 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