diff options
Diffstat (limited to 'configs/common/FSConfig.py')
-rw-r--r-- | configs/common/FSConfig.py | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index ee9bef929..b94a7394a 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -182,7 +182,7 @@ def makeSparcSystem(mem_mode, mdesc = None): return self -def makeArmSystem(mem_mode, machine_type, mdesc = None, +def makeArmSystem(mem_mode, machine_type, num_cpus = 1, mdesc = None, dtb_filename = None, bare_metal=False): assert machine_type @@ -209,12 +209,17 @@ def makeArmSystem(mem_mode, machine_type, mdesc = None, self.realview = RealViewPBX() elif machine_type == "RealView_EB": self.realview = RealViewEB() - elif machine_type == "VExpress_ELT": - self.realview = VExpress_ELT() elif machine_type == "VExpress_EMM": self.realview = VExpress_EMM() + if not dtb_filename: + dtb_filename = 'vexpress.aarch32.ll_20131205.0-gem5.%dcpu.dtb' % num_cpus elif machine_type == "VExpress_EMM64": 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..." + mdesc.diskname = 'linaro-minimal-aarch64.img' + if not dtb_filename: + dtb_filename = 'vexpress.aarch64.20140821.dtb' else: print "Unknown Machine Type" sys.exit(1) @@ -230,16 +235,32 @@ def makeArmSystem(mem_mode, machine_type, mdesc = None, except: self.realview.cf_ctrl.disks = [self.cf0] + 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]) + else: + self.mem_ranges.append(AddrRange(region[0], size=size_remain)) + size_remain = 0 + break + warn("Memory size specified spans more than one region. Creating" \ + " another memory controller for that range.") + + if size_remain > 0: + fatal("The currently selected ARM platforms doesn't support" \ + " the amount of DRAM you've selected. Please try" \ + " another platform") + if bare_metal: # EOT character on UART will end the simulation self.realview.uart.end_on_eot = True - self.mem_ranges = [AddrRange(self.realview.mem_start_addr, - size = mdesc.mem())] else: if machine_type == "VExpress_EMM64": - self.kernel = binary('vmlinux-3.16-aarch64-vexpress-emm64-pcie') + self.kernel = binary('vmlinux.aarch64.20140821') elif machine_type == "VExpress_EMM": - self.kernel = binary('vmlinux-3.3-arm-vexpress-emm-pcie') + self.kernel = binary('vmlinux.aarch32.ll_20131205.0-gem5') else: self.kernel = binary('vmlinux.arm.smp.fb.2.6.38.8') @@ -251,25 +272,6 @@ def makeArmSystem(mem_mode, machine_type, mdesc = None, 'lpj=19988480 norandmaps rw loglevel=8 ' + \ 'mem=%s root=/dev/sda1' % mdesc.mem() - 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]) - else: - self.mem_ranges.append(AddrRange(region[0], size=size_remain)) - size_remain = 0 - break - warn("Memory size specified spans more than one region. Creating" \ - " another memory controller for that range.") - - if size_remain > 0: - fatal("The currently selected ARM platforms doesn't support" \ - " the amount of DRAM you've selected. Please try" \ - " another platform") - - self.realview.setupBootLoader(self.membus, self, binary) self.gic_cpu_addr = self.realview.gic.cpu_addr self.flags_addr = self.realview.realview_io.pio_addr + 0x30 |