diff --git a/src/arch/arm/faults.cc b/src/arch/arm/faults.cc index 5a7b8e8eaf..bd38fdccb1 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 3f61bc7221..508fd034ee 100644 --- a/src/arch/arm/faults.hh +++ b/src/arch/arm/faults.hh @@ -571,6 +571,7 @@ class SPAlignmentFault : public ArmFaultVals { public: SPAlignmentFault(); + bool routeToHyp(ThreadContext *tc) const override; }; /// System error (AArch64 only)