summaryrefslogtreecommitdiff
path: root/src/arch/arm/faults.cc
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2019-09-12 10:23:16 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-10-03 09:05:19 +0000
commitacd148a76c29a6e647dc2cc15ef17667c61f8de6 (patch)
treed00a7bbf6f4a5a740200949ac6024570f870f93e /src/arch/arm/faults.cc
parent79c9ae0306f227eb1bb7be2ff31ac912bf4fd4ca (diff)
downloadgem5-acd148a76c29a6e647dc2cc15ef17667c61f8de6.tar.xz
arch-arm: Set CM bit in DataAbort
The CM bit in a DataAbort ISS indicates whether the Data Abort came from a cache maintenance or address translation instruction. Change-Id: I8888520446550581c8dd0507a8989935db7047be Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21305 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/arch/arm/faults.cc')
-rw-r--r--src/arch/arm/faults.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/arch/arm/faults.cc b/src/arch/arm/faults.cc
index c5858c9ae..b006d12ca 100644
--- a/src/arch/arm/faults.cc
+++ b/src/arch/arm/faults.cc
@@ -1369,6 +1369,9 @@ DataAbort::iss() const
// Add on the data abort specific fields to the generic abort ISS value
val = AbortFault<DataAbort>::iss();
+
+ val |= cm << 8;
+
// ISS is valid if not caused by a stage 1 page table walk, and when taken
// to AArch64 only when directed to EL2
if (!s1ptw && stage2 && (!to64 || toEL == EL2)) {
@@ -1412,6 +1415,9 @@ DataAbort::annotate(AnnotationIDs id, uint64_t val)
isv = true;
ar = val;
break;
+ case CM:
+ cm = val;
+ break;
// Just ignore unknown ID's
default:
break;