-# Copyright (c) 2013 ARM Limited
+# Copyright (c) 2013-2020 ARM Limited
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: Lisa Hsu
from __future__ import print_function
from __future__ import absolute_import
from m5.defines import buildEnv
from m5.objects import *
-from .Benchmarks import *
-from . import CpuConfig
-from . import BPConfig
-from . import HWPConfig
-from . import MemConfig
-from . import PlatformConfig
+from common.Benchmarks import *
+from common import ObjectList
+
+vio_9p_help = """\
+Enable the Virtio 9P device and set the path to share. The default 9p path is
+m5ou5/9p/share, and it can be changed by setting VirtIO9p.root with --param. A
+sample guest mount command is: "mount -t 9p -o
+trans=virtio,version=9p2000.L,aname=<host-full-path> gem5 /mnt/9p" where
+"<host-full-path>" is the full path being shared on the host, and "gem5" is a
+fixed mount tag. This option requires the diod 9P server to be installed in the
+host PATH or selected with with: VirtIO9PDiod.diod.
+"""
def _listCpuTypes(option, opt, value, parser):
- CpuConfig.print_cpu_list()
+ ObjectList.cpu_list.print()
sys.exit(0)
def _listBPTypes(option, opt, value, parser):
- BPConfig.print_bp_list()
+ ObjectList.bp_list.print()
sys.exit(0)
def _listHWPTypes(option, opt, value, parser):
- HWPConfig.print_hwp_list()
+ ObjectList.hwp_list.print()
sys.exit(0)
def _listIndirectBPTypes(option, opt, value, parser):
- BPConfig.print_indirect_bp_list()
+ ObjectList.indirect_bp_list.print()
sys.exit(0)
def _listMemTypes(option, opt, value, parser):
- MemConfig.print_mem_list()
+ ObjectList.mem_list.print()
sys.exit(0)
def _listPlatformTypes(option, opt, value, parser):
- PlatformConfig.print_platform_list()
+ ObjectList.platform_list.print()
sys.exit(0)
# Add the very basic options that work also in the case of the no ISA
action="callback", callback=_listMemTypes,
help="List available memory types")
parser.add_option("--mem-type", type="choice", default="DDR3_1600_8x8",
- choices=MemConfig.mem_names(),
+ choices=ObjectList.mem_list.get_names(),
help = "type of memory to use")
parser.add_option("--mem-channels", type="int", default=1,
help = "number of memory channels")
default="512MB",
help="Specify the physical memory size (single memory)")
parser.add_option("--enable-dram-powerdown", action="store_true",
- help="Enable low-power states in DRAMCtrl")
+ help="Enable low-power states in DRAMInterface")
+ parser.add_option("--mem-channels-intlv", type="int", default=0,
+ help="Memory channels interleave")
parser.add_option("--memchecker", action="store_true")
action="callback", callback=_listCpuTypes,
help="List available CPU types")
parser.add_option("--cpu-type", type="choice", default="AtomicSimpleCPU",
- choices=CpuConfig.cpu_names(),
+ choices=ObjectList.cpu_list.get_names(),
help = "type of cpu to run with")
parser.add_option("--list-bp-types",
action="callback", callback=_listBPTypes,
action="callback", callback=_listIndirectBPTypes,
help="List available indirect branch predictor types")
parser.add_option("--bp-type", type="choice", default=None,
- choices=BPConfig.bp_names(),
+ choices=ObjectList.bp_list.get_names(),
help = """
type of branch predictor to run with
(if not set, use the default branch predictor of
the selected CPU)""")
- parser.add_option("--indirect-bp-type", type="choice",
- default="SimpleIndirectPredictor",
- choices=BPConfig.indirect_bp_names(),
+ parser.add_option("--indirect-bp-type", type="choice", default=None,
+ choices=ObjectList.indirect_bp_list.get_names(),
help = "type of indirect branch predictor to run with")
parser.add_option("--list-hwp-types",
action="callback", callback=_listHWPTypes,
help="List available hardware prefetcher types")
parser.add_option("--l1i-hwp-type", type="choice", default=None,
- choices=HWPConfig.hwp_names(),
+ choices=ObjectList.hwp_list.get_names(),
help = """
type of hardware prefetcher to use with the L1
instruction cache.
(if not set, use the default prefetcher of
the selected cache)""")
parser.add_option("--l1d-hwp-type", type="choice", default=None,
- choices=HWPConfig.hwp_names(),
+ choices=ObjectList.hwp_list.get_names(),
help = """
type of hardware prefetcher to use with the L1
data cache.
(if not set, use the default prefetcher of
the selected cache)""")
parser.add_option("--l2-hwp-type", type="choice", default=None,
- choices=HWPConfig.hwp_names(),
+ choices=ObjectList.hwp_list.get_names(),
help = """
type of hardware prefetcher to use with the L2 cache.
(if not set, use the default prefetcher of
parser.add_option("--work-cpus-checkpoint-count", action="store", type="int",
help="checkpoint and exit when active cpu count is reached")
parser.add_option("--restore-with-cpu", action="store", type="choice",
- default="AtomicSimpleCPU", choices=CpuConfig.cpu_names(),
+ default="AtomicSimpleCPU",
+ choices=ObjectList.cpu_list.get_names(),
help = "cpu type for restoring from a checkpoint")
parser.add_option("--arm-iset", default="arm", type="choice",
choices=["arm", "thumb", "aarch64"],
help="ARM instruction set.")
+ parser.add_option("--stats-root", action="append", default=[], help=
+ "If given, dump only stats of objects under the given SimObject. "
+ "SimObjects are identified with Python notation as in: "
+ "system.cpu[0].mmu. All elements of an array can be selected at "
+ "once with: system.cpu[:].mmu. If given multiple times, dump stats "
+ "that are present under any of the roots. If not given, dump all "
+ "stats. "
+ )
def addSEOptions(parser):
help="Redirect stdout to a file.")
parser.add_option("--errout", default="",
help="Redirect stderr to a file.")
- parser.add_option("--chroot", action="store", type="string", default="/",
+ parser.add_option("--chroot", action="store", type="string", default=None,
help="The chroot option allows a user to alter the " \
"search path for processes running in SE mode. " \
"Normally, the search path would begin at the " \
"for information or functionality. Instead of " \
"finding files on the __HOST__ filesystem, the " \
"process will find the user's replacment files.")
+ parser.add_option("--interp-dir", action="store", type="string",
+ default=None,
+ help="The interp-dir option is used for "
+ "setting the interpreter's path. This will "
+ "allow to load the guest dynamic linker/loader "
+ "itself from the elf binary. The option points to "
+ "the parent folder of the guest /lib in the "
+ "host fs")
+
+ parser.add_option("--redirects", action="append", type="string",
+ default=[],
+ help="A collection of one or more redirect paths "
+ "to be used in syscall emulation."
+ "Usage: gem5.opt [...] --redirects /dir1=/path/"
+ "to/host/dir1 --redirects /dir2=/path/to/host/dir2")
+ parser.add_option("--wait-gdb", default=False,
+ help="Wait for remote GDB to connect.")
+
def addFSOptions(parser):
- from .FSConfig import os_types
+ from common.FSConfig import os_types
# Simulation options
parser.add_option("--timesync", action="store_true",
action="callback", callback=_listPlatformTypes,
help="List available platform types")
parser.add_option("--machine-type", action="store", type="choice",
- choices=PlatformConfig.platform_names(),
- default="VExpress_EMM")
+ choices=ObjectList.platform_list.get_names(),
+ default="VExpress_GEM5_V1")
parser.add_option("--dtb-filename", action="store", type="string",
help="Specifies device tree blob file to use with device-tree-"\
"enabled kernels")
parser.add_option("--enable-context-switch-stats-dump", \
action="store_true", help="Enable stats dump at context "\
"switches and dump tasks file (required for Streamline)")
+ parser.add_option("--vio-9p", action="store_true", help=vio_9p_help)
+ parser.add_option("--bootloader", action='append',
+ help="executable file that runs before the --kernel")
# Benchmark options
parser.add_option("--dual", action="store_true",
"ethernet traffic")
# Disk Image Options
- parser.add_option("--disk-image", action="store", type="string", default=None,
- help="Path to the disk image to use.")
- parser.add_option("--root-device", action="store", type="string", default=None,
- help="OS device name for root partition")
+ parser.add_option("--disk-image", action="append", type="string",
+ default=[], help="Path to the disk images to use.")
+ parser.add_option("--root-device", action="store", type="string",
+ default=None, help="OS device name for root partition")
# Command line options
parser.add_option("--command-line", action="store", type="string",