gem5  v20.0.0.3
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ArmISA::ArmFault Class Referenceabstract

#include <faults.hh>

Inheritance diagram for ArmISA::ArmFault:
FaultBase ArmISA::ArmFaultVals< ArmSev > ArmISA::ArmFaultVals< DataAbort > ArmISA::ArmFaultVals< FastInterrupt > ArmISA::ArmFaultVals< HypervisorCall > ArmISA::ArmFaultVals< HypervisorTrap > ArmISA::ArmFaultVals< IllegalInstSetStateFault > ArmISA::ArmFaultVals< Interrupt > ArmISA::ArmFaultVals< PCAlignmentFault > ArmISA::ArmFaultVals< PrefetchAbort > ArmISA::ArmFaultVals< Reset > ArmISA::ArmFaultVals< SecureMonitorCall > ArmISA::ArmFaultVals< SecureMonitorTrap > ArmISA::ArmFaultVals< SoftwareBreakpoint > ArmISA::ArmFaultVals< SPAlignmentFault > ArmISA::ArmFaultVals< SupervisorCall > ArmISA::ArmFaultVals< SupervisorTrap > ArmISA::ArmFaultVals< SystemError > ArmISA::ArmFaultVals< UndefinedInstruction > ArmISA::ArmFaultVals< VirtualDataAbort > ArmISA::ArmFaultVals< VirtualFastInterrupt > ArmISA::ArmFaultVals< VirtualInterrupt > ArmISA::ArmFaultVals< T >

Classes

struct  FaultVals
 

Public Types

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 }
 

Public Member Functions

 ArmFault (ExtMachInst _machInst=0, uint32_t _iss=0)
 
MiscRegIndex getSyndromeReg64 () const
 
MiscRegIndex getFaultAddrReg64 () const
 
void invoke (ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
 
void invoke64 (ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
 
void update (ThreadContext *tc)
 
ArmStaticInstinstrAnnotate (const StaticInstPtr &inst)
 
virtual void annotate (AnnotationIDs id, uint64_t val)
 
virtual FaultStatcountStat ()=0
 
virtual FaultOffset offset (ThreadContext *tc)=0
 
virtual FaultOffset offset64 (ThreadContext *tc)=0
 
virtual OperatingMode nextMode ()=0
 
virtual bool routeToMonitor (ThreadContext *tc) const =0
 
virtual bool routeToHyp (ThreadContext *tc) const
 
virtual uint8_t armPcOffset (bool isHyp)=0
 
virtual uint8_t thumbPcOffset (bool isHyp)=0
 
virtual uint8_t armPcElrOffset ()=0
 
virtual uint8_t thumbPcElrOffset ()=0
 
virtual bool abortDisable (ThreadContext *tc)=0
 
virtual bool fiqDisable (ThreadContext *tc)=0
 
virtual ExceptionClass ec (ThreadContext *tc) const =0
 
virtual uint32_t iss () const =0
 
virtual bool isStage2 () const
 
virtual FSR getFsr (ThreadContext *tc) const
 
virtual void setSyndrome (ThreadContext *tc, MiscRegIndex syndrome_reg)
 
virtual bool getFaultVAddr (Addr &va) const
 
- Public Member Functions inherited from FaultBase
virtual FaultName name () const =0
 
virtual ~FaultBase ()
 

Static Public Attributes

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

virtual Addr getVector (ThreadContext *tc)
 
Addr getVector64 (ThreadContext *tc)
 

Protected Attributes

ExtMachInst machInst
 
uint32_t issRaw
 
bool from64
 
bool to64
 
ExceptionLevel fromEL
 
ExceptionLevel toEL
 
OperatingMode fromMode
 
OperatingMode toMode
 
bool faultUpdated
 
bool hypRouted
 
bool span
 

Detailed Description

Definition at line 60 of file faults.hh.

Member Enumeration Documentation

◆ AnnotationIDs

Enumerator
S1PTW 
OVA 
SAS 
SSE 
SRT 
CM 
OFA 
SF 
AR 

Definition at line 127 of file faults.hh.

◆ FaultSource

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.

Enumerator
AlignmentFault 
InstructionCacheMaintenance 
SynchExtAbtOnTranslTableWalkLL 
SynchPtyErrOnTranslTableWalkLL 
TranslationLL 
AccessFlagLL 
DomainLL 
PermissionLL 
DebugEvent 
SynchronousExternalAbort 
TLBConflictAbort 
SynchPtyErrOnMemoryAccess 
AsynchronousExternalAbort 
AsynchPtyErrOnMemoryAccess 
AddressSizeLL 
PrefetchTLBMiss 
PrefetchUncacheable 
NumFaultSources 
FaultSourceInvalid 

Definition at line 90 of file faults.hh.

◆ TranMethod

Enumerator
LpaeTran 
VmsaTran 
UnknownTran 

Definition at line 145 of file faults.hh.

Constructor & Destructor Documentation

◆ ArmFault()

ArmISA::ArmFault::ArmFault ( ExtMachInst  _machInst = 0,
uint32_t  _iss = 0 
)
inline

Member Function Documentation

◆ abortDisable()

virtual bool ArmISA::ArmFault::abortDisable ( ThreadContext tc)
pure virtual

◆ annotate()

virtual void ArmISA::ArmFault::annotate ( AnnotationIDs  id,
uint64_t  val 
)
inlinevirtual

◆ armPcElrOffset()

virtual uint8_t ArmISA::ArmFault::armPcElrOffset ( )
pure virtual

◆ armPcOffset()

virtual uint8_t ArmISA::ArmFault::armPcOffset ( bool  isHyp)
pure virtual

◆ countStat()

virtual FaultStat& ArmISA::ArmFault::countStat ( )
pure virtual

◆ ec()

virtual ExceptionClass ArmISA::ArmFault::ec ( ThreadContext tc) const
pure virtual

◆ fiqDisable()

virtual bool ArmISA::ArmFault::fiqDisable ( ThreadContext tc)
pure virtual

◆ getFaultAddrReg64()

MiscRegIndex ArmISA::ArmFault::getFaultAddrReg64 ( ) const

◆ getFaultVAddr()

virtual bool ArmISA::ArmFault::getFaultVAddr ( Addr va) const
inlinevirtual

◆ getFsr()

virtual FSR ArmISA::ArmFault::getFsr ( ThreadContext tc) const
inlinevirtual

◆ getSyndromeReg64()

MiscRegIndex ArmISA::ArmFault::getSyndromeReg64 ( ) const

◆ getVector()

Addr ArmISA::ArmFault::getVector ( ThreadContext tc)
protectedvirtual

◆ getVector64()

Addr ArmISA::ArmFault::getVector64 ( ThreadContext tc)
protected

◆ instrAnnotate()

ArmStaticInst * ArmISA::ArmFault::instrAnnotate ( const StaticInstPtr inst)

Definition at line 708 of file faults.cc.

References ArmISA::ArmStaticInst::annotateFault(), and RefCountingPtr< T >::get().

Referenced by ArmFault(), invoke(), and invoke64().

◆ invoke()

void ArmISA::ArmFault::invoke ( ThreadContext tc,
const StaticInstPtr inst = StaticInst::nullStaticInstPtr 
)
overridevirtual

Reimplemented from FaultBase.

Reimplemented in ArmISA::ArmSev, ArmISA::SystemError, ArmISA::PCAlignmentFault, ArmISA::VirtualDataAbort, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, and ArmISA::Reset.

Definition at line 469 of file faults.cc.

References abortDisable(), armPcOffset(), ArmISA::CCREG_C, ArmISA::CCREG_GE, ArmISA::CCREG_NZ, ArmISA::CCREG_V, countStat(), csprintf(), DPRINTF, ec(), ArmISA::EC_UNKNOWN, fiqDisable(), FullSystem, getVector(), ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), instrAnnotate(), ArmISA::INTREG_LR, FaultBase::invoke(), invoke64(), ArmISA::MISCREG_CPSR, ArmISA::MISCREG_ELR_HYP, ArmISA::MISCREG_HSCTLR, ArmISA::MISCREG_HSR, ArmISA::MISCREG_LOCKFLAG, ArmISA::MISCREG_SCR, ArmISA::MISCREG_SCTLR, ArmISA::MISCREG_SEV_MAILBOX, ArmISA::MISCREG_SPSR_ABT, ArmISA::MISCREG_SPSR_FIQ, ArmISA::MISCREG_SPSR_HYP, ArmISA::MISCREG_SPSR_IRQ, ArmISA::MISCREG_SPSR_MON, ArmISA::MISCREG_SPSR_SVC, ArmISA::MISCREG_SPSR_UND, ArmISA::MODE_ABORT, ArmISA::MODE_FIQ, ArmISA::MODE_HYP, ArmISA::MODE_IRQ, ArmISA::MODE_MON, ArmISA::MODE_SVC, ArmISA::MODE_UNDEFINED, FaultBase::name(), panic, MipsISA::pc, ThreadContext::pcState(), ThreadContext::readCCReg(), ThreadContext::readIntReg(), ThreadContext::readMiscReg(), ThreadContext::readMiscRegNoEffect(), ThreadContext::setIntReg(), ThreadContext::setMiscReg(), ThreadContext::setMiscRegNoEffect(), setSyndrome(), span, thumbPcOffset(), to64, toMode, and update().

Referenced by ArmISA::AbortFault< DataAbort >::AbortFault(), ArmFault(), ArmISA::ArmSev::ArmSev(), ArmISA::Reset::invoke(), ArmISA::UndefinedInstruction::invoke(), ArmISA::SupervisorCall::invoke(), ArmISA::SecureMonitorCall::invoke(), ArmISA::AbortFault< DataAbort >::invoke(), ArmISA::PCAlignmentFault::invoke(), ArmISA::SystemError::invoke(), ArmISA::PCAlignmentFault::PCAlignmentFault(), ArmISA::SecureMonitorCall::SecureMonitorCall(), ArmISA::SupervisorCall::SupervisorCall(), ArmISA::UndefinedInstruction::UndefinedInstruction(), and ArmISA::VirtualDataAbort::VirtualDataAbort().

◆ invoke64()

void ArmISA::ArmFault::invoke64 ( ThreadContext tc,
const StaticInstPtr inst = StaticInst::nullStaticInstPtr 
)

◆ iss()

virtual uint32_t ArmISA::ArmFault::iss ( ) const
pure virtual

◆ isStage2()

virtual bool ArmISA::ArmFault::isStage2 ( ) const
inlinevirtual

◆ nextMode()

virtual OperatingMode ArmISA::ArmFault::nextMode ( )
pure virtual

◆ offset()

virtual FaultOffset ArmISA::ArmFault::offset ( ThreadContext tc)
pure virtual

◆ offset64()

virtual FaultOffset ArmISA::ArmFault::offset64 ( ThreadContext tc)
pure virtual

◆ routeToHyp()

virtual bool ArmISA::ArmFault::routeToHyp ( ThreadContext tc) const
inlinevirtual

◆ routeToMonitor()

virtual bool ArmISA::ArmFault::routeToMonitor ( ThreadContext tc) const
pure virtual

◆ setSyndrome()

void ArmISA::ArmFault::setSyndrome ( ThreadContext tc,
MiscRegIndex  syndrome_reg 
)
virtual

◆ thumbPcElrOffset()

virtual uint8_t ArmISA::ArmFault::thumbPcElrOffset ( )
pure virtual

◆ thumbPcOffset()

virtual uint8_t ArmISA::ArmFault::thumbPcOffset ( bool  isHyp)
pure virtual

◆ update()

void ArmISA::ArmFault::update ( ThreadContext tc)

Member Data Documentation

◆ aarch64FaultSources

uint8_t ArmISA::ArmFault::aarch64FaultSources
static

Encodings of the fault sources in AArch64 state.

Definition at line 125 of file faults.hh.

◆ faultUpdated

bool ArmISA::ArmFault::faultUpdated
protected

Definition at line 77 of file faults.hh.

Referenced by ArmISA::AbortFault< DataAbort >::getFaultStatusCode(), and update().

◆ from64

bool ArmISA::ArmFault::from64
protected

◆ fromEL

ExceptionLevel ArmISA::ArmFault::fromEL
protected

◆ fromMode

OperatingMode ArmISA::ArmFault::fromMode
protected

Definition at line 71 of file faults.hh.

Referenced by ArmISA::ArmFaultVals< FastInterrupt >::offset64(), and update().

◆ hypRouted

bool ArmISA::ArmFault::hypRouted
protected

◆ issRaw

uint32_t ArmISA::ArmFault::issRaw
protected

◆ longDescFaultSources

uint8_t ArmISA::ArmFault::longDescFaultSources
static

Encodings of the fault sources when the long-desc.

translation table format is in use (ARM ARM Issue C B3.13.3)

Definition at line 123 of file faults.hh.

◆ machInst

ExtMachInst ArmISA::ArmFault::machInst
protected

◆ shortDescFaultSources

uint8_t ArmISA::ArmFault::shortDescFaultSources
static

Encodings of the fault sources when the short-desc.

translation table format is in use (ARM ARM Issue C B3.13.3)

Definition at line 120 of file faults.hh.

◆ span

bool ArmISA::ArmFault::span
protected

Definition at line 80 of file faults.hh.

Referenced by invoke(), invoke64(), and update().

◆ to64

bool ArmISA::ArmFault::to64
protected

◆ toEL

ExceptionLevel ArmISA::ArmFault::toEL
protected

◆ toMode

OperatingMode ArmISA::ArmFault::toMode
protected

Definition at line 72 of file faults.hh.

Referenced by invoke(), and update().


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