diff options
Diffstat (limited to 'src/arch/arm/insts/static_inst.hh')
-rw-r--r-- | src/arch/arm/insts/static_inst.hh | 39 |
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) {} |