-# Copyright (c) 2010-2012, 2015-2018 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:
def makeArmSystem(mem_mode, machine_type, num_cpus=1, mdesc=None,
dtb_filename=None, bare_metal=False, cmdline=None,
- external_memory="", ruby=False, security=False,
- ignore_dtb=False):
+ external_memory="", ruby=False, security=False):
assert machine_type
pci_devices = []
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 or ignore_dtb):
- 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':
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" \
# EOT character on UART will end the simulation
self.realview.uart[0].end_on_eot = True
else:
- if dtb_filename and not ignore_dtb:
+ if dtb_filename:
self.dtb_filename = binary(dtb_filename)
self.machine_type = machine_type if machine_type in ArmMachineType.map \
'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:
- self.realview.setupBootLoader(self.iobus, self, binary)
- elif ruby:
- self.realview.setupBootLoader(None, self, binary)
- else:
- self.realview.setupBootLoader(self.membus, self, binary)
+ self.realview.setupBootLoader(self, binary)
if hasattr(self.realview.gic, 'cpu_addr'):
self.gic_cpu_addr = self.realview.gic.cpu_addr
self.realview.attachIO(self.iobus)
elif ruby:
self._dma_ports = [ ]
- self.realview.attachOnChipIO(self.iobus, dma_ports=self._dma_ports)
+ 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