gem5  v20.0.0.3
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)
 
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)
 
ArmStaticInstinstrAnnotate (const StaticInstPtr &inst)
 
virtual bool routeToHyp (ThreadContext *tc) 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
 
- Protected Attributes inherited from ArmISA::ArmFault
ExtMachInst machInst
 
uint32_t issRaw
 
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 }
 
- 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 >
template<>
ArmFault::FaultVals vals ("Reset", 0x000, 0x000, 0x000, 0x000, 0x000, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("Undefined Instruction", 0x004, 0x000, 0x200, 0x400, 0x600, MODE_UNDEFINED, 4, 2, 0, 0, true, false, false, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("Supervisor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 4, 2, 4, 2, true, false, false, EC_SVC_TO_HYP)
 
template<>
ArmFault::FaultVals vals ("Secure Monitor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_MON, 4, 4, 4, 4, false, true, true, EC_SMC_TO_HYP)
 
template<>
ArmFault::FaultVals vals ("Hypervisor Call", 0x008, 0x000, 0x200, 0x400, 0x600, MODE_HYP, 4, 4, 4, 4, true, false, false, EC_HVC)
 
template<>
ArmFault::FaultVals vals ("Prefetch Abort", 0x00C, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 4, 4, 0, 0, true, true, false, EC_PREFETCH_ABORT_TO_HYP)
 
template<>
ArmFault::FaultVals vals ("Data Abort", 0x010, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 8, 8, 0, 0, true, true, false, EC_DATA_ABORT_TO_HYP)
 
template<>
ArmFault::FaultVals vals ("Virtual Data Abort", 0x010, 0x000, 0x200, 0x400, 0x600, MODE_ABORT, 8, 8, 0, 0, true, true, false, EC_INVALID)
 
template<>
ArmFault::FaultVals vals ("Hypervisor Trap", 0x014, 0x000, 0x200, 0x400, 0x600, MODE_HYP, 0, 0, 0, 0, false, false, false, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("Secure Monitor Trap", 0x004, 0x000, 0x200, 0x400, 0x600, MODE_MON, 4, 2, 0, 0, false, false, false, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("IRQ", 0x018, 0x080, 0x280, 0x480, 0x680, MODE_IRQ, 4, 4, 0, 0, false, true, false, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("Virtual IRQ", 0x018, 0x080, 0x280, 0x480, 0x680, MODE_IRQ, 4, 4, 0, 0, false, true, false, EC_INVALID)
 
template<>
ArmFault::FaultVals vals ("FIQ", 0x01C, 0x100, 0x300, 0x500, 0x700, MODE_FIQ, 4, 4, 0, 0, false, true, true, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("Virtual FIQ", 0x01C, 0x100, 0x300, 0x500, 0x700, MODE_FIQ, 4, 4, 0, 0, false, true, true, EC_INVALID)
 
template<>
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)
 
template<>
ArmFault::FaultVals vals ("Supervisor Trap", 0x014, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, false, false, false, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals ("PC Alignment Fault", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_PC_ALIGNMENT)
 
template<>
ArmFault::FaultVals vals ("SP Alignment Fault", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_STACK_PTR_ALIGNMENT)
 
template<>
ArmFault::FaultVals vals ("SError", 0x000, 0x180, 0x380, 0x580, 0x780, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_SERROR)
 
template<>
ArmFault::FaultVals vals ("Software Breakpoint", 0x000, 0x000, 0x200, 0x400, 0x600, MODE_SVC, 0, 0, 0, 0, true, false, false, EC_SOFTWARE_BREAKPOINT)
 
template<>
ArmFault::FaultVals vals ("ArmSev Flush", 0x000, 0x000, 0x000, 0x000, 0x000, MODE_SVC, 0, 0, 0, 0, false, true, true, EC_UNKNOWN)
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
ArmFault::FaultVals vals
 
template<>
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 408 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 
)
inline

Definition at line 433 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 1165 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 1176 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 1114 of file faults.cc.

◆ getFaultVAddr()

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

Reimplemented from ArmISA::ArmFault.

Definition at line 1224 of file faults.cc.

◆ getFsr()

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

Reimplemented from ArmISA::ArmFault.

Definition at line 1140 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 1037 of file faults.cc.

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

◆ isMMUFault()

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

Definition at line 1207 of file faults.cc.

◆ iss()

template<class T >
uint32_t ArmISA::AbortFault< T >::iss ( ) const
overridevirtual

Reimplemented from ArmISA::ArmFaultVals< T >.

Definition at line 1195 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 450 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 1103 of file faults.cc.

Member Data Documentation

◆ domain

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

Definition at line 425 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 417 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 423 of file faults.hh.

◆ s1ptw

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

Definition at line 429 of file faults.hh.

◆ source

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

Definition at line 426 of file faults.hh.

◆ srcEncoded

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

Definition at line 427 of file faults.hh.

◆ stage2

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

Definition at line 428 of file faults.hh.

◆ tranMethod

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

Definition at line 430 of file faults.hh.

◆ write

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

Definition at line 424 of file faults.hh.


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

Generated on Fri Jul 3 2020 15:53:23 for gem5 by doxygen 1.8.13