From 79dac89552e7ef0fa4376ba028b10ad7d2f1ca69 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 23 Feb 2011 15:10:48 -0600 Subject: ARM: Clarifies creation of Linux and baremetal ARM systems. makeArmSystem creates both bare-metal and Linux systems more cleanly. machine_type was never optional though listed as an optional argument; a system such as "RealView_PBX" must now be explicitly specified. Now that it is a required argument, the placement of the arguments has changed slightly requiring some changes to calls that create ARM systems. --- configs/common/FSConfig.py | 20 +++++++++++--------- configs/example/fs.py | 8 +++++--- tests/configs/realview-simple-atomic.py | 2 +- tests/configs/realview-simple-timing.py | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index f58fd3d2e..2c6696ea7 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -184,8 +184,9 @@ def makeSparcSystem(mem_mode, mdesc = None): return self -def makeLinuxArmSystem(mem_mode, mdesc = None, bare_metal=False, - machine_type = None): +def makeArmSystem(mem_mode, machine_type, mdesc = None, bare_metal=False): + assert machine_type + if bare_metal: self = ArmSystem() else: @@ -228,10 +229,15 @@ def makeLinuxArmSystem(mem_mode, mdesc = None, bare_metal=False, print "Unknown Machine Type" sys.exit(1) - if not bare_metal and machine_type: - self.machine_type = machine_type - elif bare_metal: + if bare_metal: + # EOT character on UART will end the simulation self.realview.uart.end_on_eot = True + else: + self.machine_type = machine_type + self.kernel = binary('vmlinux.arm') + self.boot_osflags = 'earlyprintk mem=128MB console=ttyAMA0' + \ + ' lpj=19988480 norandmaps slram=slram0,0x8000000,+0x8000000' + \ + ' mtdparts=slram0:- rw loglevel=8 root=/dev/mtdblock0' self.realview.attachOnChipIO(self.membus) self.realview.attachIO(self.iobus) @@ -239,10 +245,6 @@ def makeLinuxArmSystem(mem_mode, mdesc = None, bare_metal=False, self.intrctrl = IntrControl() self.terminal = Terminal() self.vncserver = VncServer() - self.kernel = binary('vmlinux.arm') - self.boot_osflags = 'earlyprintk mem=128MB console=ttyAMA0 lpj=19988480' + \ - ' norandmaps slram=slram0,0x8000000,+0x8000000' + \ - ' mtdparts=slram0:- rw loglevel=8 root=/dev/mtdblock0' return self diff --git a/configs/example/fs.py b/configs/example/fs.py index b392f1a91..420cf1f8b 100644 --- a/configs/example/fs.py +++ b/configs/example/fs.py @@ -134,8 +134,9 @@ elif buildEnv['TARGET_ISA'] == "x86": test_sys = makeLinuxX86System(test_mem_mode, options.num_cpus, bm[0]) setWorkCountOptions(test_sys, options) elif buildEnv['TARGET_ISA'] == "arm": - test_sys = makeLinuxArmSystem(test_mem_mode, bm[0], - bare_metal=options.bare_metal, machine_type=options.machine_type) + test_sys = makeArmSystem(test_mem_mode, + options.machine_type, bm[0], + bare_metal=options.bare_metal) else: fatal("incapable of building non-alpha or non-sparc full system!") @@ -184,7 +185,8 @@ if len(bm) == 2: elif buildEnv['TARGET_ISA'] == 'x86': drive_sys = makeX86System(drive_mem_mode, np, bm[1]) elif buildEnv['TARGET_ISA'] == 'arm': - drive_sys = makeLinuxArmSystem(drive_mem_mode, bm[1]) + drive_sys = makeArmSystem(drive_mem_mode, + machine_options.machine_type, bm[1]) drive_sys.cpu = DriveCPUClass(cpu_id=0) drive_sys.cpu.connectAllPorts(drive_sys.membus) if options.fastmem: diff --git a/tests/configs/realview-simple-atomic.py b/tests/configs/realview-simple-atomic.py index c20a67df7..ab6d612d4 100644 --- a/tests/configs/realview-simple-atomic.py +++ b/tests/configs/realview-simple-atomic.py @@ -68,7 +68,7 @@ class IOCache(BaseCache): #cpu cpu = AtomicSimpleCPU(cpu_id=0) #the system -system = FSConfig.makeLinuxArmSystem('atomic', None, False, "RealView_PBX") +system = FSConfig.makeArmSystem('atomic', "RealView_PBX", None, False) system.bridge.filter_ranges_a=[AddrRange(0, Addr.max)] system.bridge.filter_ranges_b=[AddrRange(0, size='128MB')] system.iocache = IOCache() diff --git a/tests/configs/realview-simple-timing.py b/tests/configs/realview-simple-timing.py index a1e363447..53b6ab2b2 100644 --- a/tests/configs/realview-simple-timing.py +++ b/tests/configs/realview-simple-timing.py @@ -69,7 +69,7 @@ class IOCache(BaseCache): #cpu cpu = TimingSimpleCPU(cpu_id=0) #the system -system = FSConfig.makeLinuxArmSystem('timing', None, False, "RealView_PBX") +system = FSConfig.makeArmSystem('timing', "RealView_PBX", None, False) system.cpu = cpu #create the l1/l2 bus -- cgit v1.2.3