summaryrefslogtreecommitdiff
path: root/src/arch/arm/insts/static_inst.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/insts/static_inst.hh')
-rw-r--r--src/arch/arm/insts/static_inst.hh39
1 files changed, 37 insertions, 2 deletions
diff --git a/src/arch/arm/insts/static_inst.hh b/src/arch/arm/insts/static_inst.hh
index 9aed77c21..c68880c97 100644
--- a/src/arch/arm/insts/static_inst.hh
+++ b/src/arch/arm/insts/static_inst.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2013,2016-2017 ARM Limited
+ * Copyright (c) 2010-2013,2016-2018 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -434,14 +434,49 @@ class ArmStaticInst : public StaticInst
Fault trapWFx(ThreadContext *tc, CPSR cpsr, SCR scr, bool isWfe) const;
/**
+ * Check if SETEND instruction execution in aarch32 should be trapped.
+ *
+ * See aarch32/exceptions/traps/AArch32.CheckSETENDEnabled in the
+ * ARM ARM pseudocode library.
+ */
+ Fault checkSETENDEnabled(ThreadContext *tc, CPSR cpsr) const;
+
+ /**
+ * UNDEFINED behaviour in AArch32
+ *
+ * See aarch32/exceptions/traps/AArch32.UndefinedFault in the
+ * ARM ARM pseudocode library.
+ */
+ Fault undefinedFault32(ThreadContext *tc, ExceptionLevel el) const;
+
+ /**
+ * UNDEFINED behaviour in AArch64
+ *
+ * See aarch64/exceptions/traps/AArch64.UndefinedFault in the
+ * ARM ARM pseudocode library.
+ */
+ Fault undefinedFault64(ThreadContext *tc, ExceptionLevel el) const;
+
+ /**
* Get the new PSTATE from a SPSR register in preparation for an
* exception return.
*
* See shared/functions/system/SetPSTATEFromPSR in the ARM ARM
- * psueodcode library.
+ * pseudocode library.
*/
CPSR getPSTATEFromPSR(ThreadContext *tc, CPSR cpsr, CPSR spsr) const;
+ /**
+ * Return true if exceptions normally routed to EL1 are being handled
+ * at an Exception level using AArch64, because either EL1 is using
+ * AArch64 or TGE is in force and EL2 is using AArch64.
+ *
+ * See aarch32/exceptions/exceptions/AArch32.GeneralExceptionsToAArch64
+ * in the ARM ARM pseudocode library.
+ */
+ bool generalExceptionsToAArch64(ThreadContext *tc,
+ ExceptionLevel pstateEL) const;
+
public:
virtual void
annotateFault(ArmFault *fault) {}