diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2014-10-29 23:18:26 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2014-10-29 23:18:26 -0500 |
commit | 3a5c975fd7a0e6c8f25067c1794581056c01c22c (patch) | |
tree | 37f6cac9722d80822d96e3714f64a551b378c023 /configs/common/FSConfig.py | |
parent | 9900629f83139ed213a440375ea32bc95333b8d9 (diff) | |
download | gem5-3a5c975fd7a0e6c8f25067c1794581056c01c22c.tar.xz |
arm: fix bare-metal memory setup.
The bare-metal configuration option still configured memory with the old scheme
that no-longer works. This change unifies the code so there aren't any differences.
Diffstat (limited to 'configs/common/FSConfig.py')
-rw-r--r-- | configs/common/FSConfig.py | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index ee9bef929..ab8a9e8fa 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -230,11 +230,27 @@ 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') @@ -251,25 +267,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 |