-# Copyright (c) 2010-2012, 2015-2017 ARM Limited
+# Copyright (c) 2010-2012, 2015-2019 ARM Limited
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
#
# Authors: Kevin Lim
+from __future__ import print_function
+from __future__ import absolute_import
+
from m5.objects import *
-from Benchmarks import *
from m5.util import *
-from common import PlatformConfig
+from .Benchmarks import *
+from . import ObjectList
# Populate to reflect supported os types per target ISA
os_types = { 'alpha' : [ 'linux' ],
self.intrctrl = IntrControl()
self.mem_mode = mem_mode
self.terminal = Terminal()
- self.kernel = binary('vmlinux')
self.pal = binary('ts_osfpal')
self.console = binary('console')
if not cmdline:
external_memory="", ruby=False, security=False):
assert machine_type
- default_dtbs = {
- "RealViewEB": None,
- "RealViewPBX": None,
- "VExpress_EMM": "vexpress.aarch32.ll_20131205.0-gem5.%dcpu.dtb" % num_cpus,
- "VExpress_EMM64": "vexpress.aarch64.20140821.dtb",
- }
-
- default_kernels = {
- "RealViewEB": "vmlinux.arm.smp.fb.2.6.38.8",
- "RealViewPBX": "vmlinux.arm.smp.fb.2.6.38.8",
- "VExpress_EMM": "vmlinux.aarch32.ll_20131205.0-gem5",
- "VExpress_EMM64": "vmlinux.aarch64.20140821",
- }
-
pci_devices = []
if bare_metal:
self.mem_mode = mem_mode
- platform_class = PlatformConfig.get(machine_type)
+ platform_class = ObjectList.platform_list.get(machine_type)
# Resolve the real platform name, the original machine_type
# variable might have been an alias.
machine_type = platform_class.__name__
self.realview = platform_class()
-
- if not dtb_filename and not bare_metal:
- try:
- dtb_filename = default_dtbs[machine_type]
- except KeyError:
- fatal("No DTB specified and no default DTB known for '%s'" % \
- machine_type)
+ self._bootmem = self.realview.bootmem
if isinstance(self.realview, VExpress_EMM64):
if os.path.split(mdesc.disk())[-1] == 'linux-aarch32-ael.img':
- print "Selected 64-bit ARM architecture, updating default disk image..."
+ print("Selected 64-bit ARM architecture, updating default "
+ "disk image...")
mdesc.diskname = 'linaro-minimal-aarch64.img'
self.mem_ranges = []
size_remain = long(Addr(mdesc.mem()))
for region in self.realview._mem_regions:
- if size_remain > long(region[1]):
- self.mem_ranges.append(AddrRange(region[0], size=region[1]))
- size_remain = size_remain - long(region[1])
+ if size_remain > long(region.size()):
+ self.mem_ranges.append(region)
+ size_remain = size_remain - long(region.size())
else:
- self.mem_ranges.append(AddrRange(region[0], size=size_remain))
+ self.mem_ranges.append(AddrRange(region.start, size=size_remain))
size_remain = 0
break
warn("Memory size specified spans more than one region. Creating" \
if bare_metal:
# EOT character on UART will end the simulation
- self.realview.uart.end_on_eot = True
+ self.realview.uart[0].end_on_eot = True
else:
- if machine_type in default_kernels:
- self.kernel = binary(default_kernels[machine_type])
-
if dtb_filename:
self.dtb_filename = binary(dtb_filename)
'lpj=19988480 norandmaps rw loglevel=8 ' + \
'mem=%(mem)s root=%(rootdev)s'
- # When using external memory, gem5 writes the boot loader to nvmem
- # and then SST will read from it, but SST can only get to nvmem from
- # iobus, as gem5's membus is only used for initialization and
- # SST doesn't use it. Attaching nvmem to iobus solves this issue.
- # During initialization, system_port -> membus -> iobus -> nvmem.
- if external_memory or ruby:
- self.realview.setupBootLoader(self.iobus, self, binary)
- else:
- self.realview.setupBootLoader(self.membus, self, binary)
- self.gic_cpu_addr = self.realview.gic.cpu_addr
+ self.realview.setupBootLoader(self, binary)
+
+ if hasattr(self.realview.gic, 'cpu_addr'):
+ self.gic_cpu_addr = self.realview.gic.cpu_addr
+
self.flags_addr = self.realview.realview_io.pio_addr + 0x30
# This check is for users who have previously put 'android' in
self.realview.attachIO(self.iobus)
elif ruby:
self._dma_ports = [ ]
- self.realview.attachOnChipIO(self.iobus, dma_ports=self._dma_ports)
- # Force Ruby to treat the boot ROM as an IO device.
- self.realview.nvmem.in_addr_map = False
+ self._mem_ports = [ ]
+ self.realview.attachOnChipIO(self.iobus,
+ dma_ports=self._dma_ports, mem_ports=self._mem_ports)
self.realview.attachIO(self.iobus, dma_ports=self._dma_ports)
else:
self.realview.attachOnChipIO(self.membus, self.bridge)
self.intrctrl = IntrControl()
self.mem_mode = mem_mode
self.terminal = Terminal()
- self.kernel = binary('mips/vmlinux')
self.console = binary('mips/console')
if not cmdline:
cmdline = 'root=/dev/hda1 console=ttyS0'
# Set up the Intel MP table
base_entries = []
ext_entries = []
- for i in xrange(numCPUs):
+ for i in range(numCPUs):
bp = X86IntelMPProcessor(
local_apic_id = i,
local_apic_version = 0x14,
if not cmdline:
cmdline = 'earlyprintk=ttyS0 console=ttyS0 lpj=7999923 root=/dev/hda1'
self.boot_osflags = fillInCmdline(mdesc, cmdline)
- self.kernel = binary('x86_64-vmlinux-2.6.22.9')
return self