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

#include <faults.hh>

Inheritance diagram for gem5::ArmISA::AbortFault< T >:
gem5::ArmISA::ArmFaultVals< T > gem5::ArmISA::ArmFault gem5::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=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 gem5::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 gem5::ArmISA::ArmFault
 ArmFault (ExtMachInst _machInst=0, uint32_t _iss=0)
 
MiscRegIndex getSyndromeReg64 () const
 
MiscRegIndex getFaultAddrReg64 () const
 
void invoke64 (ThreadContext *tc, const StaticInstPtr &inst=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 gem5::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 debugType
 
- Protected Attributes inherited from gem5::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 gem5::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 gem5::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 gem5::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 gem5::ArmISA::ArmFault
virtual Addr getVector (ThreadContext *tc)
 
Addr getVector64 (ThreadContext *tc)
 
- Static Protected Attributes inherited from gem5::ArmISA::ArmFaultVals< T >
static FaultVals vals
 

Detailed Description

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

Definition at line 436 of file faults.hh.

Constructor & Destructor Documentation

◆ AbortFault()

template<class T >
gem5::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 462 of file faults.hh.

Member Function Documentation

◆ abortDisable()

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

Reimplemented from gem5::ArmISA::ArmFaultVals< T >.

Definition at line 1208 of file faults.cc.

◆ annotate()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 1219 of file faults.cc.

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

◆ getFaultStatusCode()

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

Definition at line 1157 of file faults.cc.

◆ getFaultVAddr()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 1267 of file faults.cc.

◆ getFsr()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 1183 of file faults.cc.

◆ invoke()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 1065 of file faults.cc.

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

◆ isMMUFault()

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

Definition at line 1250 of file faults.cc.

◆ iss()

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

Reimplemented from gem5::ArmISA::ArmFaultVals< T >.

Definition at line 1238 of file faults.cc.

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

◆ isStage2()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 481 of file faults.hh.

◆ setSyndrome()

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

Reimplemented from gem5::ArmISA::ArmFault.

Definition at line 1146 of file faults.cc.

Member Data Documentation

◆ debugType

template<class T >
ArmFault::DebugType gem5::ArmISA::AbortFault< T >::debugType
protected

Definition at line 459 of file faults.hh.

◆ domain

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

Definition at line 453 of file faults.hh.

◆ faultAddr

template<class T >
Addr gem5::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 445 of file faults.hh.

◆ OVAddr

template<class T >
Addr gem5::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 451 of file faults.hh.

◆ s1ptw

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

Definition at line 457 of file faults.hh.

◆ source

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

Definition at line 454 of file faults.hh.

◆ srcEncoded

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

Definition at line 455 of file faults.hh.

◆ stage2

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

Definition at line 456 of file faults.hh.

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

◆ tranMethod

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

Definition at line 458 of file faults.hh.

◆ write

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

Definition at line 452 of file faults.hh.


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

Generated on Tue Sep 21 2021 12:28:26 for gem5 by doxygen 1.8.17