gem5  v20.1.0.0
Public Member Functions | Protected Attributes | List of all members
ArmISA::AbortFault< T > Class Template Reference

#include <faults.hh>

Inheritance diagram for ArmISA::AbortFault< T >:
ArmISA::ArmFaultVals< T > ArmISA::ArmFault FaultBase

Public Member Functions

 AbortFault (Addr _faultAddr, bool _write, TlbEntry::DomainType _domain, uint8_t _source, bool _stage2, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
 
bool getFaultVAddr (Addr &va) const override
 
void invoke (ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
 
FSR getFsr (ThreadContext *tc) const override
 
uint8_t getFaultStatusCode (ThreadContext *tc) const
 
bool abortDisable (ThreadContext *tc) override
 
uint32_t iss () const override
 
bool isStage2 () const override
 
void annotate (ArmFault::AnnotationIDs id, uint64_t val) override
 
void setSyndrome (ThreadContext *tc, MiscRegIndex syndrome_reg) override
 
bool isMMUFault () const
 
- Public Member Functions inherited from ArmISA::ArmFaultVals< T >
 ArmFaultVals (ExtMachInst _machInst=0, uint32_t _iss=0)
 
FaultName name () const override
 
FaultStatcountStat () override
 
FaultOffset offset (ThreadContext *tc) override
 
FaultOffset offset64 (ThreadContext *tc) override
 
OperatingMode nextMode () override
 
virtual bool routeToMonitor (ThreadContext *tc) const override
 
uint8_t armPcOffset (bool isHyp) override
 
uint8_t thumbPcOffset (bool isHyp) override
 
uint8_t armPcElrOffset () override
 
uint8_t thumbPcElrOffset () override
 
bool fiqDisable (ThreadContext *tc) override
 
ExceptionClass ec (ThreadContext *tc) const override
 
- Public Member Functions inherited from ArmISA::ArmFault
 ArmFault (ExtMachInst _machInst=0, uint32_t _iss=0)
 
MiscRegIndex getSyndromeReg64 () const
 
MiscRegIndex getFaultAddrReg64 () const
 
void invoke64 (ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
 
void update (ThreadContext *tc)
 
bool isResetSPSR ()
 
bool vectorCatch (ThreadContext *tc, const StaticInstPtr &inst)
 
ArmStaticInstinstrAnnotate (const StaticInstPtr &inst)
 
virtual bool routeToHyp (ThreadContext *tc) const
 
virtual uint32_t vectorCatchFlag () const
 
OperatingMode getToMode () const
 
- Public Member Functions inherited from FaultBase
virtual ~FaultBase ()
 

Protected Attributes

Addr faultAddr
 The virtual address the fault occured at. More...
 
Addr OVAddr
 Original virtual address. More...
 
bool write
 
TlbEntry::DomainType domain
 
uint8_t source
 
uint8_t srcEncoded
 
bool stage2
 
bool s1ptw
 
ArmFault::TranMethod tranMethod
 
ArmFault::DebugType debug
 
- Protected Attributes inherited from ArmISA::ArmFault
ExtMachInst machInst
 
uint32_t issRaw
 
bool bStep
 
bool from64
 
bool to64
 
ExceptionLevel fromEL
 
ExceptionLevel toEL
 
OperatingMode fromMode
 
OperatingMode toMode
 
bool faultUpdated
 
bool hypRouted
 
bool span
 

Additional Inherited Members

- Public Types inherited from ArmISA::ArmFault
enum  FaultSource {
  AlignmentFault = 0, InstructionCacheMaintenance, SynchExtAbtOnTranslTableWalkLL, SynchPtyErrOnTranslTableWalkLL = SynchExtAbtOnTranslTableWalkLL + 4,
  TranslationLL = SynchPtyErrOnTranslTableWalkLL + 4, AccessFlagLL = TranslationLL + 4, DomainLL = AccessFlagLL + 4, PermissionLL = DomainLL + 4,
  DebugEvent = PermissionLL + 4, SynchronousExternalAbort, TLBConflictAbort, SynchPtyErrOnMemoryAccess,
  AsynchronousExternalAbort, AsynchPtyErrOnMemoryAccess, AddressSizeLL, PrefetchTLBMiss = AddressSizeLL + 4,
  PrefetchUncacheable, NumFaultSources, FaultSourceInvalid = 0xff
}
 Generic fault source enums used to index into {short/long/aarch64}DescFaultSources[] to get the actual encodings based on the current register width state and the translation table format in use. More...
 
enum  AnnotationIDs {
  S1PTW, OVA, SAS, SSE,
  SRT, CM, OFA, SF,
  AR
}
 
enum  TranMethod { LpaeTran, VmsaTran, UnknownTran }
 
enum  DebugType {
  NODEBUG = 0, BRKPOINT, VECTORCATCH, WPOINT_CM,
  WPOINT_NOCM
}
 
- Static Public Attributes inherited from ArmISA::ArmFault
static uint8_t shortDescFaultSources [NumFaultSources]
 Encodings of the fault sources when the short-desc. More...
 
static uint8_t longDescFaultSources [NumFaultSources]
 Encodings of the fault sources when the long-desc. More...
 
static uint8_t aarch64FaultSources [NumFaultSources]
 Encodings of the fault sources in AArch64 state. More...
 
- Protected Member Functions inherited from ArmISA::ArmFaultVals< T >
ArmFault::FaultVals vals ("Reset", 0x000, 0x000, 0x000, 0x000, 0x000, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("Undefined Instruction", 0x004, 0x000, 0x200, 0x400, 0x600, MODE_UNDEFINED, 4, 2, 0, 0, true, false, false, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("Supervisor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 4, 2, 4, 2, true, false, false, EC_SVC_TO_HYP)
 
ArmFault::FaultVals vals ("Secure Monitor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_MON, 4, 4, 4, 4, false, true, true, EC_SMC_TO_HYP)
 
ArmFault::FaultVals vals ("Hypervisor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_HYP, 4, 4, 4, 4, true, false, false, EC_HVC)
 
ArmFault::FaultVals vals ("Prefetch Abort", 0x00C, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 4, 4, 0, 0, true, true, false, EC_PREFETCH_ABORT_TO_HYP)
 
ArmFault::FaultVals vals ("Data Abort", 0x010, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 8, 8, 0, 0, true, true, false, EC_DATA_ABORT_TO_HYP)
 
ArmFault::FaultVals vals ("Virtual Data Abort", 0x010, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 8, 8, 0, 0, true, true, false, EC_INVALID)
 
ArmFault::FaultVals vals ("Hypervisor Trap", 0x014, 0x000, 0x200, 0x400, 0x600, MODE_HYP, 0, 0, 0, 0, false, false, false, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("Secure Monitor Trap", 0x004, 0x000, 0x200, 0x400, 0x600, MODE_MON, 4, 2, 0, 0, false, false, false, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("IRQ", 0x018, 0x080, 0x280, 0x480, 0x680, MODE_IRQ, 4, 4, 0, 0, false, true, false, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("Virtual IRQ", 0x018, 0x080, 0x280, 0x480, 0x680, MODE_IRQ, 4, 4, 0, 0, false, true, false, EC_INVALID)
 
ArmFault::FaultVals vals ("FIQ", 0x01C, 0x100, 0x300, 0x500, 0x700, MODE_FIQ, 4, 4, 0, 0, false, true, true, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("Virtual FIQ", 0x01C, 0x100, 0x300, 0x500, 0x700, MODE_FIQ, 4, 4, 0, 0, false, true, true, EC_INVALID)
 
ArmFault::FaultVals vals ("Illegal Inst Set State Fault", 0x004, 0x000, 0x200, 0x400, 0x600, MODE_UNDEFINED, 4, 2, 0, 0, true, false, false, EC_ILLEGAL_INST)
 
ArmFault::FaultVals vals ("Supervisor Trap", 0x014, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, false, false, false, EC_UNKNOWN)
 
ArmFault::FaultVals vals ("PC Alignment Fault", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_PC_ALIGNMENT)
 
ArmFault::FaultVals vals ("SP Alignment Fault", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_STACK_PTR_ALIGNMENT)
 
ArmFault::FaultVals vals ("SError", 0x000, 0x180, 0x380, 0x580, 0x780, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_SERROR)
 
ArmFault::FaultVals vals ("Software Breakpoint", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_SOFTWARE_BREAKPOINT)
 
ArmFault::FaultVals vals ("Hardware Breakpoint", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_HW_BREAKPOINT)
 
ArmFault::FaultVals vals ("Watchpoint", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_WATCHPOINT)
 
ArmFault::FaultVals vals ("SoftwareStep", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_SOFTWARE_STEP)
 
ArmFault::FaultVals vals ("ArmSev Flush", 0x000, 0x000, 0x000, 0x000, 0x000, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_UNKNOWN)
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
ArmFault::FaultVals vals
 
- Protected Member Functions inherited from ArmISA::ArmFault
virtual Addr getVector (ThreadContext *tc)
 
Addr getVector64 (ThreadContext *tc)
 
- Static Protected Attributes inherited from ArmISA::ArmFaultVals< T >
static FaultVals vals
 

Detailed Description

template<class T>
class ArmISA::AbortFault< T >

Definition at line 432 of file faults.hh.

Constructor & Destructor Documentation

◆ AbortFault()

template<class T >
ArmISA::AbortFault< T >::AbortFault ( Addr  _faultAddr,
bool  _write,
TlbEntry::DomainType  _domain,
uint8_t  _source,
bool  _stage2,
ArmFault::TranMethod  _tranMethod = ArmFault::UnknownTran,
ArmFault::DebugType  _debug = ArmFault::NODEBUG 
)
inline

Definition at line 458 of file faults.hh.

Member Function Documentation

◆ abortDisable()

template<class T >
bool ArmISA::AbortFault< T >::abortDisable ( ThreadContext tc)
overridevirtual

Reimplemented from ArmISA::ArmFaultVals< T >.

Definition at line 1205 of file faults.cc.

◆ annotate()

template<class T >
void ArmISA::AbortFault< T >::annotate ( ArmFault::AnnotationIDs  id,
uint64_t  val 
)
overridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 1216 of file faults.cc.

Referenced by ArmISA::DataAbort::annotate().

◆ getFaultStatusCode()

template<class T >
uint8_t ArmISA::AbortFault< T >::getFaultStatusCode ( ThreadContext tc) const

Definition at line 1154 of file faults.cc.

◆ getFaultVAddr()

template<class T >
bool ArmISA::AbortFault< T >::getFaultVAddr ( Addr va) const
overridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 1264 of file faults.cc.

◆ getFsr()

template<class T >
FSR ArmISA::AbortFault< T >::getFsr ( ThreadContext tc) const
overridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 1180 of file faults.cc.

◆ invoke()

template<class T >
void ArmISA::AbortFault< T >::invoke ( ThreadContext tc,
const StaticInstPtr inst = StaticInst::nullStaticInstPtr 
)
overridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 1062 of file faults.cc.

Referenced by ArmISA::VirtualDataAbort::invoke().

◆ isMMUFault()

template<class T >
bool ArmISA::AbortFault< T >::isMMUFault

Definition at line 1247 of file faults.cc.

◆ iss()

template<class T >
uint32_t ArmISA::AbortFault< T >::iss
overridevirtual

Reimplemented from ArmISA::ArmFaultVals< T >.

Definition at line 1235 of file faults.cc.

Referenced by ArmISA::DataAbort::iss().

◆ isStage2()

template<class T >
bool ArmISA::AbortFault< T >::isStage2 ( ) const
inlineoverridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 476 of file faults.hh.

◆ setSyndrome()

template<class T >
void ArmISA::AbortFault< T >::setSyndrome ( ThreadContext tc,
MiscRegIndex  syndrome_reg 
)
overridevirtual

Reimplemented from ArmISA::ArmFault.

Definition at line 1143 of file faults.cc.

Member Data Documentation

◆ debug

template<class T >
ArmFault::DebugType ArmISA::AbortFault< T >::debug
protected

Definition at line 455 of file faults.hh.

◆ domain

template<class T >
TlbEntry::DomainType ArmISA::AbortFault< T >::domain
protected

Definition at line 449 of file faults.hh.

◆ faultAddr

template<class T >
Addr ArmISA::AbortFault< T >::faultAddr
protected

The virtual address the fault occured at.

If 2 stages of translation are being used then this is the intermediate physical address that is the starting point for the second stage of translation.

Definition at line 441 of file faults.hh.

◆ OVAddr

template<class T >
Addr ArmISA::AbortFault< T >::OVAddr
protected

Original virtual address.

If the fault was generated on the second stage of translation then this variable stores the virtual address used in the original stage 1 translation.

Definition at line 447 of file faults.hh.

◆ s1ptw

template<class T >
bool ArmISA::AbortFault< T >::s1ptw
protected

Definition at line 453 of file faults.hh.

◆ source

template<class T >
uint8_t ArmISA::AbortFault< T >::source
protected

Definition at line 450 of file faults.hh.

◆ srcEncoded

template<class T >
uint8_t ArmISA::AbortFault< T >::srcEncoded
protected

Definition at line 451 of file faults.hh.

◆ stage2

template<class T >
bool ArmISA::AbortFault< T >::stage2
protected

Definition at line 452 of file faults.hh.

Referenced by ArmISA::AbortFault< DataAbort >::isStage2().

◆ tranMethod

template<class T >
ArmFault::TranMethod ArmISA::AbortFault< T >::tranMethod
protected

Definition at line 454 of file faults.hh.

◆ write

template<class T >
bool ArmISA::AbortFault< T >::write
protected

Definition at line 448 of file faults.hh.


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:02:34 for gem5 by doxygen 1.8.17