gem5
|
#include <faults.hh>
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 FaultStat & | countStat ()=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 |
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.
|
inline |
|
pure virtual |
Implemented in ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
inlinevirtual |
Reimplemented in ArmISA::DataAbort, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 189 of file faults.hh.
Referenced by ArmISA::Stage2MMU::Stage2Translation::finish(), ArmISA::TLB::getResultTe(), and ArmISA::Stage2MMU::readDataUntimed().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke64().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
pure virtual |
Implemented in ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::HypervisorTrap, ArmISA::HypervisorCall, ArmISA::SecureMonitorTrap, ArmISA::SupervisorTrap, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke(), and setSyndrome().
|
pure virtual |
Implemented in ArmISA::FastInterrupt, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
MiscRegIndex ArmISA::ArmFault::getFaultAddrReg64 | ( | ) | const |
Definition at line 373 of file faults.cc.
References ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::MISCREG_FAR_EL1, ArmISA::MISCREG_FAR_EL2, ArmISA::MISCREG_FAR_EL3, panic, and toEL.
Referenced by ArmISA::PCAlignmentFault::invoke().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 205 of file faults.hh.
Referenced by ArmISA::ISA::setMiscReg().
MiscRegIndex ArmISA::ArmFault::getSyndromeReg64 | ( | ) | const |
Definition at line 357 of file faults.cc.
References ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::MISCREG_ESR_EL1, ArmISA::MISCREG_ESR_EL2, ArmISA::MISCREG_ESR_EL3, panic, and toEL.
Referenced by invoke64().
|
protected |
Definition at line 298 of file faults.cc.
References X86ISA::base, ArmSystem::haveSecurity(), ArmISA::haveSecurity, ArmSystem::haveVirtualization(), ArmISA::HighVecs, ArmISA::MISCREG_CPSR, ArmISA::MISCREG_HVBAR, ArmISA::MISCREG_MVBAR, ArmISA::MISCREG_SCTLR, ArmISA::MISCREG_VBAR, ArmISA::MODE_HYP, ArmISA::MODE_MON, offset(), ThreadContext::readMiscReg(), and ThreadContext::readMiscRegNoEffect().
Referenced by invoke().
|
protected |
Definition at line 334 of file faults.cc.
References ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), ArmISA::MISCREG_VBAR_EL1, ArmISA::MISCREG_VBAR_EL2, ArmISA::MISCREG_VBAR_EL3, offset64(), panic, ThreadContext::readMiscReg(), and toEL.
Referenced by invoke64().
|
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 |
||
) |
Definition at line 592 of file faults.cc.
References armPcElrOffset(), ArmISA::CCREG_C, ArmISA::CCREG_GE, ArmISA::CCREG_NZ, ArmISA::CCREG_V, DPRINTF, ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, from64, RefCountingPtr< T >::get(), getSyndromeReg64(), getVector64(), ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), ArmISA::MISCREG_CPSR, ArmISA::MISCREG_ELR_EL1, ArmISA::MISCREG_ELR_EL2, ArmISA::MISCREG_ELR_EL3, ArmISA::MISCREG_SPSR_EL1, ArmISA::MISCREG_SPSR_EL2, ArmISA::MISCREG_SPSR_EL3, ArmISA::mode, ArmISA::MODE_FIQ, ArmISA::MODE_IRQ, FaultBase::name(), nextMode(), panic, pc, ThreadContext::pcState(), ArmISA::purifyTaggedAddr(), ThreadContext::readCCReg(), ThreadContext::readMiscReg(), ThreadContext::setMiscReg(), setSyndrome(), thumbPcElrOffset(), and toEL.
Referenced by invoke().
|
pure virtual |
Implemented in ArmISA::DataAbort, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by ArmISA::ISA::setMiscReg(), and setSyndrome().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 204 of file faults.hh.
Referenced by ArmISA::ISA::setMiscReg().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke(), and invoke64().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by getVector().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by getVector64().
|
inlinevirtual |
Reimplemented in ArmISA::SystemError, ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::SupervisorCall, and ArmISA::UndefinedInstruction.
Definition at line 195 of file faults.hh.
Referenced by invoke().
|
pure virtual |
Implemented in ArmISA::SystemError, ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
virtual |
Definition at line 389 of file faults.cc.
References bits(), ArmISA::cond, ArmISA::COND_AL, ArmISA::COND_UC, ArmISA::condCode, ec(), from64, ArmSystem::highestELIs64(), iss(), machInst, ThreadContext::setMiscReg(), and to64.
Referenced by invoke(), and invoke64().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke64().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< FlushPipe >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< ArmSev >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
static |
Encodings of the fault sources in AArch64 state.
Definition at line 119 of file faults.hh.
Referenced by ArmISA::AbortFault< T >::getFsr().
|
protected |
Definition at line 70 of file faults.hh.
Referenced by ArmISA::SupervisorCall::ec(), ArmISA::SecureMonitorCall::ec(), ArmISA::SecureMonitorTrap::ec(), ArmISA::HypervisorCall::ec(), invoke(), ArmISA::PCAlignmentFault::invoke(), invoke64(), ArmISA::SecureMonitorCall::iss(), ArmISA::ArmFaultVals< FastInterrupt >::offset64(), ArmISA::SystemError::routeToHyp(), ArmISA::PrefetchAbort::routeToMonitor(), ArmISA::DataAbort::routeToMonitor(), ArmISA::Interrupt::routeToMonitor(), ArmISA::FastInterrupt::routeToMonitor(), ArmISA::SystemError::routeToMonitor(), and setSyndrome().
|
protected |
Definition at line 72 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), invoke(), and ArmISA::ArmFaultVals< FastInterrupt >::offset64().
|
protected |
Definition at line 74 of file faults.hh.
Referenced by invoke(), and ArmISA::ArmFaultVals< FastInterrupt >::offset64().
|
protected |
Definition at line 67 of file faults.hh.
Referenced by ArmISA::ArmFaultVals< FastInterrupt >::iss(), ArmISA::UndefinedInstruction::iss(), and ArmISA::SupervisorCall::iss().
|
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().
|
protected |
Definition at line 66 of file faults.hh.
Referenced by ArmISA::UndefinedInstruction::invoke(), ArmISA::SupervisorCall::invoke(), ArmISA::UndefinedInstruction::iss(), ArmISA::SecureMonitorCall::iss(), and setSyndrome().
|
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().
|
protected |
Definition at line 71 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), invoke(), ArmISA::DataAbort::iss(), and setSyndrome().
|
protected |
Definition at line 73 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), getFaultAddrReg64(), getSyndromeReg64(), getVector64(), invoke(), invoke64(), ArmISA::DataAbort::iss(), and ArmISA::ArmFaultVals< FastInterrupt >::offset64().