summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/arm/faults.cc8
-rw-r--r--src/arch/arm/faults.hh1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/arch/arm/faults.cc b/src/arch/arm/faults.cc
index 5a7b8e8ea..bd38fdccb 100644
--- a/src/arch/arm/faults.cc
+++ b/src/arch/arm/faults.cc
@@ -1541,6 +1541,14 @@ PCAlignmentFault::routeToHyp(ThreadContext *tc) const
SPAlignmentFault::SPAlignmentFault()
{}
+bool
+SPAlignmentFault::routeToHyp(ThreadContext *tc) const
+{
+ assert(from64);
+ HCR hcr = tc->readMiscRegNoEffect(MISCREG_HCR_EL2);
+ return EL2Enabled(tc) && hcr.tge==1;
+}
+
SystemError::SystemError()
{}
diff --git a/src/arch/arm/faults.hh b/src/arch/arm/faults.hh
index 3f61bc722..508fd034e 100644
--- a/src/arch/arm/faults.hh
+++ b/src/arch/arm/faults.hh
@@ -571,6 +571,7 @@ class SPAlignmentFault : public ArmFaultVals<SPAlignmentFault>
{
public:
SPAlignmentFault();
+ bool routeToHyp(ThreadContext *tc) const override;
};
/// System error (AArch64 only)