gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::ArmISA::ArmFault Class Referenceabstract

#include <faults.hh>

Inheritance diagram for gem5::ArmISA::ArmFault:
gem5::FaultBase gem5::ArmISA::ArmFaultVals< ArmSev > gem5::ArmISA::ArmFaultVals< DataAbort > gem5::ArmISA::ArmFaultVals< FastInterrupt > gem5::ArmISA::ArmFaultVals< HardwareBreakpoint > gem5::ArmISA::ArmFaultVals< HypervisorCall > gem5::ArmISA::ArmFaultVals< HypervisorTrap > gem5::ArmISA::ArmFaultVals< IllegalInstSetStateFault > gem5::ArmISA::ArmFaultVals< Interrupt > gem5::ArmISA::ArmFaultVals< PCAlignmentFault > gem5::ArmISA::ArmFaultVals< PrefetchAbort > gem5::ArmISA::ArmFaultVals< Reset > gem5::ArmISA::ArmFaultVals< SPAlignmentFault > gem5::ArmISA::ArmFaultVals< SecureMonitorCall > gem5::ArmISA::ArmFaultVals< SecureMonitorTrap > gem5::ArmISA::ArmFaultVals< SoftwareBreakpoint > gem5::ArmISA::ArmFaultVals< SoftwareStepFault > gem5::ArmISA::ArmFaultVals< SupervisorCall > gem5::ArmISA::ArmFaultVals< SupervisorTrap > gem5::ArmISA::ArmFaultVals< SystemError > gem5::ArmISA::ArmFaultVals< UndefinedInstruction > gem5::ArmISA::ArmFaultVals< VirtualDataAbort > gem5::ArmISA::ArmFaultVals< VirtualFastInterrupt > gem5::ArmISA::ArmFaultVals< VirtualInterrupt > gem5::ArmISA::ArmFaultVals< Watchpoint > gem5::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 }
 
enum  DebugType {
  NODEBUG = 0 , BRKPOINT , VECTORCATCH , WPOINT_CM ,
  WPOINT_NOCM
}
 

Public Member Functions

 ArmFault (ExtMachInst mach_inst=0, uint32_t _iss=0)
 
MiscRegIndex getSyndromeReg64 () const
 
void invoke (ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
 
void invoke32 (ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr)
 
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 void annotate (AnnotationIDs id, uint64_t val)
 
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 is_hyp)=0
 
virtual uint8_t thumbPcOffset (bool is_hyp)=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 bool il (ThreadContext *tc) const =0
 
virtual uint32_t iss () const =0
 
virtual uint32_t vectorCatchFlag () const
 
virtual bool isStage2 () const
 
virtual FSR getFsr (ThreadContext *tc) const
 
virtual void setSyndrome (ThreadContext *tc, MiscRegIndex syndrome_reg)
 
virtual bool getFaultVAddr (Addr &va) const
 
OperatingMode getToMode () const
 
- Public Member Functions inherited from gem5::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.
 
static uint8_t longDescFaultSources [NumFaultSources]
 Encodings of the fault sources when the long-desc.
 
static uint8_t aarch64FaultSources [NumFaultSources]
 Encodings of the fault sources in AArch64 state.
 

Protected Member Functions

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

Protected Attributes

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
 

Detailed Description

Definition at line 64 of file faults.hh.

Member Enumeration Documentation

◆ AnnotationIDs

Enumerator
S1PTW 
OVA 
SAS 
SSE 
SRT 
CM 
OFA 
SF 
AR 

Definition at line 132 of file faults.hh.

◆ DebugType

Enumerator
NODEBUG 
BRKPOINT 
VECTORCATCH 
WPOINT_CM 
WPOINT_NOCM 

Definition at line 157 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 95 of file faults.hh.

◆ TranMethod

Enumerator
LpaeTran 
VmsaTran 
UnknownTran 

Definition at line 150 of file faults.hh.

Constructor & Destructor Documentation

◆ ArmFault()

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

Definition at line 215 of file faults.hh.

Member Function Documentation

◆ abortDisable()

◆ annotate()

◆ armPcElrOffset()

◆ armPcOffset()

◆ ec()

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

Implemented in gem5::ArmISA::ArmFaultVals< T >, gem5::ArmISA::ArmFaultVals< ArmSev >, gem5::ArmISA::ArmFaultVals< DataAbort >, gem5::ArmISA::ArmFaultVals< FastInterrupt >, gem5::ArmISA::ArmFaultVals< HardwareBreakpoint >, gem5::ArmISA::ArmFaultVals< HypervisorCall >, gem5::ArmISA::ArmFaultVals< HypervisorTrap >, gem5::ArmISA::ArmFaultVals< IllegalInstSetStateFault >, gem5::ArmISA::ArmFaultVals< Interrupt >, gem5::ArmISA::ArmFaultVals< PCAlignmentFault >, gem5::ArmISA::ArmFaultVals< PrefetchAbort >, gem5::ArmISA::ArmFaultVals< Reset >, gem5::ArmISA::ArmFaultVals< SecureMonitorCall >, gem5::ArmISA::ArmFaultVals< SecureMonitorTrap >, gem5::ArmISA::ArmFaultVals< SoftwareBreakpoint >, gem5::ArmISA::ArmFaultVals< SoftwareStepFault >, gem5::ArmISA::ArmFaultVals< SPAlignmentFault >, gem5::ArmISA::ArmFaultVals< SupervisorCall >, gem5::ArmISA::ArmFaultVals< SupervisorTrap >, gem5::ArmISA::ArmFaultVals< SystemError >, gem5::ArmISA::ArmFaultVals< UndefinedInstruction >, gem5::ArmISA::ArmFaultVals< VirtualDataAbort >, gem5::ArmISA::ArmFaultVals< VirtualFastInterrupt >, gem5::ArmISA::ArmFaultVals< VirtualInterrupt >, gem5::ArmISA::ArmFaultVals< Watchpoint >, gem5::ArmISA::DataAbort, gem5::ArmISA::HardwareBreakpoint, gem5::ArmISA::HypervisorCall, gem5::ArmISA::HypervisorTrap, gem5::ArmISA::PrefetchAbort, gem5::ArmISA::SecureMonitorCall, gem5::ArmISA::SecureMonitorTrap, gem5::ArmISA::SoftwareBreakpoint, gem5::ArmISA::SoftwareStepFault, gem5::ArmISA::SupervisorCall, gem5::ArmISA::SupervisorTrap, gem5::ArmISA::UndefinedInstruction, and gem5::ArmISA::Watchpoint.

◆ fiqDisable()

◆ getFaultVAddr()

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

◆ getFsr()

◆ getSyndromeReg64()

MiscRegIndex gem5::ArmISA::ArmFault::getSyndromeReg64 ( ) const

◆ getToMode()

OperatingMode gem5::ArmISA::ArmFault::getToMode ( ) const
inline

Definition at line 256 of file faults.hh.

References toMode.

◆ getVector()

◆ getVector64()

◆ il()

virtual bool gem5::ArmISA::ArmFault::il ( ThreadContext * tc) const
pure virtual

◆ instrAnnotate()

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

Definition at line 711 of file faults.cc.

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

Referenced by invoke64().

◆ invoke()

◆ invoke32()

◆ invoke64()

◆ isResetSPSR()

bool gem5::ArmISA::ArmFault::isResetSPSR ( )
inline

Definition at line 231 of file faults.hh.

References bStep.

Referenced by invoke64().

◆ iss()

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

Implemented in gem5::ArmISA::ArmFaultVals< T >, gem5::ArmISA::ArmFaultVals< ArmSev >, gem5::ArmISA::ArmFaultVals< DataAbort >, gem5::ArmISA::ArmFaultVals< FastInterrupt >, gem5::ArmISA::ArmFaultVals< HardwareBreakpoint >, gem5::ArmISA::ArmFaultVals< HypervisorCall >, gem5::ArmISA::ArmFaultVals< HypervisorTrap >, gem5::ArmISA::ArmFaultVals< IllegalInstSetStateFault >, gem5::ArmISA::ArmFaultVals< Interrupt >, gem5::ArmISA::ArmFaultVals< PCAlignmentFault >, gem5::ArmISA::ArmFaultVals< PrefetchAbort >, gem5::ArmISA::ArmFaultVals< Reset >, gem5::ArmISA::ArmFaultVals< SecureMonitorCall >, gem5::ArmISA::ArmFaultVals< SecureMonitorTrap >, gem5::ArmISA::ArmFaultVals< SoftwareBreakpoint >, gem5::ArmISA::ArmFaultVals< SoftwareStepFault >, gem5::ArmISA::ArmFaultVals< SPAlignmentFault >, gem5::ArmISA::ArmFaultVals< SupervisorCall >, gem5::ArmISA::ArmFaultVals< SupervisorTrap >, gem5::ArmISA::ArmFaultVals< SystemError >, gem5::ArmISA::ArmFaultVals< UndefinedInstruction >, gem5::ArmISA::ArmFaultVals< VirtualDataAbort >, gem5::ArmISA::ArmFaultVals< VirtualFastInterrupt >, gem5::ArmISA::ArmFaultVals< VirtualInterrupt >, gem5::ArmISA::ArmFaultVals< Watchpoint >, gem5::ArmISA::DataAbort, gem5::ArmISA::PrefetchAbort, gem5::ArmISA::SecureMonitorCall, gem5::ArmISA::SoftwareStepFault, gem5::ArmISA::SupervisorCall, gem5::ArmISA::SupervisorTrap, gem5::ArmISA::UndefinedInstruction, and gem5::ArmISA::Watchpoint.

Referenced by gem5::ArmISA::ISA::addressTranslation(), gem5::ArmISA::ISA::addressTranslation64(), and setSyndrome().

◆ isStage2()

◆ nextMode()

◆ offset()

◆ offset64()

◆ routeToHyp()

◆ routeToMonitor()

◆ setSyndrome()

◆ thumbPcElrOffset()

◆ thumbPcOffset()

◆ update()

◆ vectorCatch()

bool gem5::ArmISA::ArmFault::vectorCatch ( ThreadContext * tc,
const StaticInstPtr & inst )

◆ vectorCatchFlag()

Member Data Documentation

◆ aarch64FaultSources

uint8_t gem5::ArmISA::ArmFault::aarch64FaultSources
static

Encodings of the fault sources in AArch64 state.

Definition at line 130 of file faults.hh.

Referenced by gem5::ArmISA::AbortFault< T >::getFaultStatusCode().

◆ bStep

◆ faultUpdated

bool gem5::ArmISA::ArmFault::faultUpdated
protected

Definition at line 82 of file faults.hh.

Referenced by update().

◆ from64

◆ fromEL

◆ fromMode

OperatingMode gem5::ArmISA::ArmFault::fromMode
protected

Definition at line 76 of file faults.hh.

Referenced by update().

◆ hypRouted

◆ issRaw

uint32_t gem5::ArmISA::ArmFault::issRaw
protected

◆ longDescFaultSources

uint8_t gem5::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 128 of file faults.hh.

Referenced by gem5::ArmISA::AbortFault< T >::getFaultStatusCode().

◆ machInst

◆ shortDescFaultSources

uint8_t gem5::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 125 of file faults.hh.

Referenced by gem5::ArmISA::AbortFault< T >::getFaultStatusCode().

◆ span

bool gem5::ArmISA::ArmFault::span
protected

Definition at line 85 of file faults.hh.

Referenced by invoke64(), and update().

◆ to64

bool gem5::ArmISA::ArmFault::to64
protected

◆ toEL

◆ toMode

OperatingMode gem5::ArmISA::ArmFault::toMode
protected

Definition at line 77 of file faults.hh.

Referenced by getToMode(), and update().


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

Generated on Tue Jun 18 2024 16:24:16 for gem5 by doxygen 1.11.0