summaryrefslogtreecommitdiff
path: root/configs/common/FSConfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'configs/common/FSConfig.py')
-rw-r--r--configs/common/FSConfig.py54
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