gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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< FlushPipe > 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< 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, 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)
 
void invoke64 (ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
 
virtual void annotate (AnnotationIDs id, uint64_t val)
 
virtual FaultStatcountStat ()=0
 
virtual FaultOffset offset (ThreadContext *tc)=0
 
virtual FaultOffset offset64 ()=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)
 
virtual void setSyndrome (ThreadContext *tc, MiscRegIndex syndrome_reg)
 
- Public Member Functions inherited from FaultBase
virtual FaultName name () const =0
 

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

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
 

Detailed Description

Definition at line 63 of file faults.hh.

Member Enumeration Documentation

Enumerator
S1PTW 
OVA 
SAS 
SSE 
SRT 
SF 
AR 

Definition at line 121 of file faults.hh.

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 84 of file faults.hh.

Enumerator
LpaeTran 
VmsaTran 
UnknownTran 

Definition at line 134 of file faults.hh.

Constructor & Destructor Documentation

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

Definition at line 174 of file faults.hh.

Member Function Documentation

virtual bool ArmISA::ArmFault::abortDisable ( ThreadContext tc)
pure virtual
virtual void ArmISA::ArmFault::annotate ( AnnotationIDs  id,
uint64_t  val 
)
inlinevirtual
virtual uint8_t ArmISA::ArmFault::armPcElrOffset ( )
pure virtual
virtual uint8_t ArmISA::ArmFault::armPcOffset ( bool  isHyp)
pure virtual
virtual FaultStat& ArmISA::ArmFault::countStat ( )
pure virtual
virtual ExceptionClass ArmISA::ArmFault::ec ( ThreadContext tc) const
pure virtual
virtual bool ArmISA::ArmFault::fiqDisable ( ThreadContext tc)
pure virtual
MiscRegIndex ArmISA::ArmFault::getFaultAddrReg64 ( ) const
virtual FSR ArmISA::ArmFault::getFsr ( ThreadContext tc)
inlinevirtual
MiscRegIndex ArmISA::ArmFault::getSyndromeReg64 ( ) const
Addr ArmISA::ArmFault::getVector ( ThreadContext tc)
protected
Addr ArmISA::ArmFault::getVector64 ( ThreadContext tc)
protected
void ArmISA::ArmFault::invoke ( ThreadContext tc,
const StaticInstPtr inst = StaticInst::nullStaticInstPtr 
)
virtual

Reimplemented from FaultBase.

Reimplemented in ArmISA::ArmSev, ArmISA::FlushPipe, 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 429 of file faults.cc.

References abortDisable(), ArmISA::ArmStaticInst::annotateFault(), armPcOffset(), ArmISA::CCREG_C, ArmISA::CCREG_GE, ArmISA::CCREG_NZ, ArmISA::CCREG_V, countStat(), DPRINTF, ec(), ArmISA::EC_UNKNOWN, ArmISA::EL2, ArmISA::EL3, ArmISA::ELIs64(), fiqDisable(), from64, fromEL, fromMode, FullSystem, RefCountingPtr< T >::get(), getVector(), ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), ArmSystem::highestEL(), ArmSystem::highestELIs64(), ArmISA::INTREG_LR, FaultBase::invoke(), invoke64(), M5_VAR_USED, 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(), nextMode(), ArmISA::opModeToEL(), panic, pc, ThreadContext::pcState(), ThreadContext::readCCReg(), ThreadContext::readIntReg(), ThreadContext::readMiscReg(), ThreadContext::readMiscRegNoEffect(), routeToHyp(), routeToMonitor(), ThreadContext::setIntReg(), ThreadContext::setMiscReg(), ThreadContext::setMiscRegNoEffect(), setSyndrome(), thumbPcOffset(), to64, and toEL.

Referenced by ArmISA::Reset::invoke(), ArmISA::UndefinedInstruction::invoke(), ArmISA::SupervisorCall::invoke(), ArmISA::SecureMonitorCall::invoke(), ArmISA::AbortFault< T >::invoke(), ArmISA::PCAlignmentFault::invoke(), and ArmISA::SystemError::invoke().

void ArmISA::ArmFault::invoke64 ( ThreadContext tc,
const StaticInstPtr inst = StaticInst::nullStaticInstPtr 
)
virtual uint32_t ArmISA::ArmFault::iss ( ) const
pure virtual
virtual bool ArmISA::ArmFault::isStage2 ( ) const
inlinevirtual
virtual OperatingMode ArmISA::ArmFault::nextMode ( )
pure virtual
virtual FaultOffset ArmISA::ArmFault::offset ( ThreadContext tc)
pure virtual
virtual FaultOffset ArmISA::ArmFault::offset64 ( )
pure virtual
virtual bool ArmISA::ArmFault::routeToHyp ( ThreadContext tc) const
inlinevirtual
virtual bool ArmISA::ArmFault::routeToMonitor ( ThreadContext tc) const
pure virtual
void ArmISA::ArmFault::setSyndrome ( ThreadContext tc,
MiscRegIndex  syndrome_reg 
)
virtual
virtual uint8_t ArmISA::ArmFault::thumbPcElrOffset ( )
pure virtual
virtual uint8_t ArmISA::ArmFault::thumbPcOffset ( bool  isHyp)
pure virtual

Member Data Documentation

uint8_t ArmISA::ArmFault::aarch64FaultSources
static

Encodings of the fault sources in AArch64 state.

Definition at line 119 of file faults.hh.

Referenced by ArmISA::AbortFault< T >::getFsr().

bool ArmISA::ArmFault::from64
protected
ExceptionLevel ArmISA::ArmFault::fromEL
protected
OperatingMode ArmISA::ArmFault::fromMode
protected

Definition at line 74 of file faults.hh.

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

uint32_t ArmISA::ArmFault::issRaw
protected
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 117 of file faults.hh.

Referenced by ArmISA::AbortFault< T >::getFsr().

ExtMachInst ArmISA::ArmFault::machInst
protected
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 114 of file faults.hh.

Referenced by ArmISA::AbortFault< T >::getFsr().

bool ArmISA::ArmFault::to64
protected
ExceptionLevel ArmISA::ArmFault::toEL
protected

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

Generated on Fri Jun 9 2017 13:04:24 for gem5 by doxygen 1.8.6