diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/ArmSystem.py | 4 | ||||
-rw-r--r-- | src/arch/arm/system.cc | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index f76140bc9..568747725 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2012-2013, 2015-2017 ARM Limited +# Copyright (c) 2009, 2012-2013, 2015-2018 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -72,6 +72,8 @@ class ArmSystem(System): reset_addr_64 = Param.Addr(0x0, "Reset address if the highest implemented exception level is 64 bits " "(ARMv8)") + auto_reset_addr_64 = Param.Bool(False, + "Determine reset address from kernel entry point if no boot loader") phys_addr_range_64 = Param.UInt8(40, "Supported physical address range in bits when using AArch64 (ARMv8)") have_large_asid_64 = Param.Bool(False, diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc index 097a87b2b..50ac4aeeb 100644 --- a/src/arch/arm/system.cc +++ b/src/arch/arm/system.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2012-2013, 2015,2017 ARM Limited + * Copyright (c) 2010, 2012-2013, 2015,2017-2018 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -62,7 +62,9 @@ ArmSystem::ArmSystem(Params *p) _haveVirtualization(p->have_virtualization), _genericTimer(nullptr), _highestELIs64(p->highest_el_is_64), - _resetAddr64(p->reset_addr_64), + _resetAddr64(p->auto_reset_addr_64 ? + (kernelEntry & loadAddrMask) + loadAddrOffset : + p->reset_addr_64), _physAddrRange64(p->phys_addr_range_64), _haveLargeAsid64(p->have_large_asid_64), _m5opRange(p->m5ops_base ? |