changeset 3ea92bc6393b in /z/repo/gem5 details: http://repo.gem5.org/gem5?cmd=changeset;node=3ea92bc6393b description: sim: remove kernel mapping check for baremetal workloads
Baremetal workloads are specified using the "kernel" parameter, but don't always have the correct address mappings. This patch adds a boolean flag to the system and bypasses the kernel addr mapping checks when running in baremetal mode. diffstat: src/sim/System.py | 2 ++ src/sim/system.cc | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diffs (49 lines): diff -r c7187ee80868 -r 3ea92bc6393b src/sim/System.py --- a/src/sim/System.py Wed Aug 13 06:57:31 2014 -0400 +++ b/src/sim/System.py Wed Aug 13 06:57:35 2014 -0400 @@ -84,6 +84,8 @@ init_param = Param.UInt64(0, "numerical value to pass into simulator") boot_osflags = Param.String("a", "boot flags to pass to the kernel") kernel = Param.String("", "file that contains the kernel code") + kernel_addr_check = Param.Bool(True, + "whether to address check on kernel (disable for baremetal)") readfile = Param.String("", "file to read startup script from") symbolfile = Param.String("", "file to get the symbols from") load_addr_mask = Param.UInt64(0xffffffffff, diff -r c7187ee80868 -r 3ea92bc6393b src/sim/system.cc --- a/src/sim/system.cc Wed Aug 13 06:57:31 2014 -0400 +++ b/src/sim/system.cc Wed Aug 13 06:57:35 2014 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2013 ARM Limited + * Copyright (c) 2011-2014 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -274,13 +274,19 @@ * Load the kernel code into memory */ if (params()->kernel != "") { - // Validate kernel mapping before loading binary - if (!(isMemAddr((kernelStart & loadAddrMask) + loadAddrOffset) && - isMemAddr((kernelEnd & loadAddrMask) + loadAddrOffset))) { - fatal("Kernel is mapped to invalid location (not memory). " - "kernelStart 0x(%x) - kernelEnd 0x(%x) %#x:%#x\n", kernelStart, - kernelEnd, (kernelStart & loadAddrMask) + loadAddrOffset, - (kernelEnd & loadAddrMask) + loadAddrOffset); + if (params()->kernel_addr_check) { + // Validate kernel mapping before loading binary + if (!(isMemAddr((kernelStart & loadAddrMask) + + loadAddrOffset) && + isMemAddr((kernelEnd & loadAddrMask) + + loadAddrOffset))) { + fatal("Kernel is mapped to invalid location (not memory). " + "kernelStart 0x(%x) - kernelEnd 0x(%x) %#x:%#x\n", + kernelStart, + kernelEnd, (kernelStart & loadAddrMask) + + loadAddrOffset, + (kernelEnd & loadAddrMask) + loadAddrOffset); + } } // Load program sections into memory kernel->loadSections(physProxy, loadAddrMask, loadAddrOffset); _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev