1# Copyright (c) 2010-2012, 2015 ARM Limited |
2# All rights reserved. 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license 9# terms below provided that you ensure that this notice is replicated --- 188 unchanged lines hidden (view full) --- 198 self.hypervisor_desc_bin = binary('1up-hv.bin') 199 self.partition_desc_bin = binary('1up-md.bin') 200 201 self.system_port = self.membus.slave 202 203 return self 204 205def makeArmSystem(mem_mode, machine_type, num_cpus=1, mdesc=None, |
206 dtb_filename=None, bare_metal=False, cmdline=None, 207 external_memory=""): |
208 assert machine_type 209 210 if bare_metal: 211 self = ArmSystem() 212 else: 213 self = LinuxArmSystem() 214 215 if not mdesc: --- 73 unchanged lines hidden (view full) --- 289 self.dtb_filename = binary(dtb_filename) 290 self.machine_type = machine_type 291 # Ensure that writes to the UART actually go out early in the boot 292 if not cmdline: 293 cmdline = 'earlyprintk=pl011,0x1c090000 console=ttyAMA0 ' + \ 294 'lpj=19988480 norandmaps rw loglevel=8 ' + \ 295 'mem=%(mem)s root=%(rootdev)s' 296 |
297 # When using external memory, gem5 writes the boot loader to nvmem 298 # and then SST will read from it, but SST can only get to nvmem from 299 # iobus, as gem5's membus is only used for initialization and 300 # SST doesn't use it. Attaching nvmem to iobus solves this issue. 301 # During initialization, system_port -> membus -> iobus -> nvmem. 302 if external_memory: 303 self.realview.setupBootLoader(self.iobus, self, binary) 304 else: 305 self.realview.setupBootLoader(self.membus, self, binary) |
306 self.gic_cpu_addr = self.realview.gic.cpu_addr 307 self.flags_addr = self.realview.realview_io.pio_addr + 0x30 308 309 # This check is for users who have previously put 'android' in 310 # the disk image filename to tell the config scripts to 311 # prepare the kernel with android-specific boot options. That 312 # behavior has been replaced with a more explicit option per 313 # the error message below. The disk can have any name now and --- 12 unchanged lines hidden (view full) --- 326 327 # release-specific tweaks 328 if 'kitkat' in mdesc.os_type(): 329 cmdline += " androidboot.hardware=gem5 qemu=1 qemu.gles=0 " + \ 330 "android.bootanim=0" 331 332 self.boot_osflags = fillInCmdline(mdesc, cmdline) 333 |
334 if external_memory: 335 # I/O traffic enters iobus 336 self.external_io = ExternalMaster(port_data="external_io", 337 port_type=external_memory) 338 self.external_io.port = self.iobus.slave 339 340 # Ensure iocache only receives traffic destined for (actual) memory. 341 self.iocache = ExternalSlave(port_data="iocache", 342 port_type=external_memory, 343 addr_ranges=self.mem_ranges) 344 self.iocache.port = self.iobus.master 345 346 # Let system_port get to nvmem and nothing else. 347 self.bridge.ranges = [self.realview.nvmem.range] 348 349 self.realview.attachOnChipIO(self.iobus) 350 else: 351 self.realview.attachOnChipIO(self.membus, self.bridge) |
352 self.realview.attachIO(self.iobus) 353 self.intrctrl = IntrControl() 354 self.terminal = Terminal() 355 self.vncserver = VncServer() 356 357 self.system_port = self.membus.slave 358 359 return self --- 288 unchanged lines hidden --- |