summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2016-05-27 15:02:01 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2016-05-27 15:02:01 +0100
commit4a6bb821233e376e0ef9b2779243e968ce494dda (patch)
tree102aa2be0b6e5cdf87709c7934665ec4af6c9a76 /src
parent2ace05044cab3c7cf2a6d143b5927d47f3a9dc0a (diff)
downloadgem5-4a6bb821233e376e0ef9b2779243e968ce494dda.tar.xz
arm: Use the target EL state when determining fault format
We currently check the current state instead of the state of the target EL when determining how we report a fault. This breaks interprocessing since EL0 in aarch32 would report its fault status using the aarch32 registers even if EL1 is in aarch64. Fix this to report the fault using the format of the target EL. Change-Id: Ic080267ac210783d1e01c722a4ddaa687dce280e Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
Diffstat (limited to 'src')
-rw-r--r--src/arch/arm/faults.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/arch/arm/faults.cc b/src/arch/arm/faults.cc
index a2b1120ec..1b54a3e24 100644
--- a/src/arch/arm/faults.cc
+++ b/src/arch/arm/faults.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012-2014 ARM Limited
+ * Copyright (c) 2010, 2012-2014, 2016 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -948,7 +948,7 @@ AbortFault<T>::invoke(ThreadContext *tc, const StaticInstPtr &inst)
// try to set hsr etc. and are based upon source!
ArmFaultVals<T>::invoke(tc, inst);
- if (cpsr.width) { // AArch32
+ if (!this->to64) { // AArch32
if (cpsr.mode == MODE_HYP) {
tc->setMiscReg(T::HFarIndex, faultAddr);
} else if (stage2) {