1# Copyright (c) 2009-2018 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 --- 565 unchanged lines hidden (view full) --- 575 self._attach_io(self._on_chip_devices(), bus, *args, **kwargs) 576 if bridge: 577 bridge.ranges = self._off_chip_ranges 578 579 def attachIO(self, *args, **kwargs): 580 self._attach_io(self._off_chip_devices(), *args, **kwargs) 581 582 def setupBootLoader(self, mem_bus, cur_sys, loc): |
583 cur_sys.bootmem = SimpleMemory( 584 range = AddrRange('2GB', size = '64MB'), 585 conf_table_reported = False) 586 if mem_bus is not None: 587 cur_sys.bootmem.port = mem_bus.master |
588 cur_sys.boot_loader = loc('boot.arm') 589 cur_sys.atags_addr = 0x100 590 cur_sys.load_offset = 0 591 592 def generateDeviceTree(self, state): 593 node = FdtNode("/") # Things in this module need to end up in the root 594 node.append(FdtPropertyWords("interrupt-parent", 595 state.phandle(self.gic))) --- 372 unchanged lines hidden (view full) --- 968 InterruptLine=2, InterruptPin=2) 969 970 def enableMSIX(self): 971 self.gic = Pl390(dist_addr=0x2C001000, cpu_addr=0x2C002000, it_lines=512) 972 self.gicv2m = Gicv2m() 973 self.gicv2m.frames = [Gicv2mFrame(spi_base=256, spi_len=64, addr=0x2C1C0000)] 974 975 def setupBootLoader(self, mem_bus, cur_sys, loc): |
976 cur_sys.bootmem = SimpleMemory(range = AddrRange('64MB'), 977 conf_table_reported = False) 978 if mem_bus is not None: 979 cur_sys.bootmem.port = mem_bus.master |
980 if not cur_sys.boot_loader: 981 cur_sys.boot_loader = loc('boot_emm.arm') 982 cur_sys.atags_addr = 0x8000000 983 cur_sys.load_offset = 0x80000000 984 985class VExpress_EMM64(VExpress_EMM): 986 # Three memory regions are specified totalling 512GB 987 _mem_regions = [(Addr('2GB'), Addr('2GB')), (Addr('34GB'), Addr('30GB')), 988 (Addr('512GB'), Addr('480GB'))] 989 pci_host = GenericPciHost( 990 conf_base=0x30000000, conf_size='256MB', conf_device_bits=12, 991 pci_pio_base=0x2f000000) 992 993 def setupBootLoader(self, mem_bus, cur_sys, loc): |
994 cur_sys.bootmem = SimpleMemory(range=AddrRange(0, size='64MB'), 995 conf_table_reported=False) 996 if mem_bus is not None: 997 cur_sys.bootmem.port = mem_bus.master |
998 if not cur_sys.boot_loader: 999 cur_sys.boot_loader = loc('boot_emm.arm64') 1000 cur_sys.atags_addr = 0x8000000 1001 cur_sys.load_offset = 0x80000000 1002 |
1003class VExpress_GEM5_V1(RealView): 1004 """ 1005The VExpress gem5 memory map is loosely based on a modified 1006Versatile Express RS1 memory map. 1007 1008The gem5 platform has been designed to implement a subset of the 1009original Versatile Express RS1 memory map. Off-chip peripherals should, 1010when possible, adhere to the Versatile Express memory map. Non-PCI --- 151 unchanged lines hidden (view full) --- 1162 self.clock24MHz, 1163 ] 1164 1165 def attachPciDevice(self, device, *args, **kwargs): 1166 device.host = self.pci_host 1167 self._attach_device(device, *args, **kwargs) 1168 1169 def setupBootLoader(self, mem_bus, cur_sys, loc): |
1170 cur_sys.bootmem = SimpleMemory(range=AddrRange(0, size='64MB'), 1171 conf_table_reported=False) 1172 if mem_bus is not None: 1173 cur_sys.bootmem.port = mem_bus.master |
1174 if not cur_sys.boot_loader: 1175 cur_sys.boot_loader = [ loc('boot_emm.arm64'), loc('boot_emm.arm') ] 1176 cur_sys.atags_addr = 0x8000000 1177 cur_sys.load_offset = 0x80000000 1178 1179 # Setup m5ops. It's technically not a part of the boot 1180 # loader, but this is the only place we can configure the 1181 # system. --- 15 unchanged lines hidden --- |