summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/arm/ArmSystem.py4
-rw-r--r--src/arch/arm/system.cc6
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 ?