gem5
v20.1.0.0
|
#include <faults.hh>
Classes | |
struct | FaultVals |
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) |
bool | isResetSPSR () |
bool | vectorCatch (ThreadContext *tc, const StaticInstPtr &inst) |
ArmStaticInst * | instrAnnotate (const StaticInstPtr &inst) |
virtual void | annotate (AnnotationIDs id, uint64_t val) |
virtual FaultStat & | countStat ()=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 | vectorCatchFlag () const |
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 |
OperatingMode | getToMode () 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 | bStep |
bool | from64 |
bool | to64 |
ExceptionLevel | fromEL |
ExceptionLevel | toEL |
OperatingMode | fromMode |
OperatingMode | toMode |
bool | faultUpdated |
bool | hypRouted |
bool | span |
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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::Watchpoint, and ArmISA::DataAbort.
Definition at line 233 of file faults.hh.
Referenced by ArmISA::Watchpoint::annotate(), 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
|
pure virtual |
Implemented in ArmISA::SoftwareStepFault, ArmISA::Watchpoint, ArmISA::HardwareBreakpoint, ArmISA::SoftwareBreakpoint, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
MiscRegIndex ArmISA::ArmFault::getFaultAddrReg64 | ( | ) | const |
Definition at line 379 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(), and ArmISA::Watchpoint::invoke().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 252 of file faults.hh.
Referenced by ArmISA::getFaultVAddr().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 250 of file faults.hh.
Referenced by ArmISA::ISA::addressTranslation(), and ArmISA::ISA::addressTranslation64().
MiscRegIndex ArmISA::ArmFault::getSyndromeReg64 | ( | ) | const |
Definition at line 363 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().
|
inline |
Definition at line 253 of file faults.hh.
References toMode.
Referenced by ArmISA::VectorCatch::exceptionTrapping().
|
protectedvirtual |
Reimplemented in ArmISA::Reset.
Definition at line 308 of file faults.cc.
References X86ISA::base, ArmSystem::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 340 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().
ArmStaticInst * ArmISA::ArmFault::instrAnnotate | ( | const StaticInstPtr & | inst | ) |
Definition at line 741 of file faults.cc.
References ArmISA::ArmStaticInst::annotateFault(), and RefCountingPtr< T >::get().
Referenced by invoke(), and invoke64().
|
overridevirtual |
Reimplemented from FaultBase.
Reimplemented in ArmISA::ArmSev, ArmISA::Watchpoint, ArmISA::HardwareBreakpoint, ArmISA::SystemError, ArmISA::PCAlignmentFault, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, ArmISA::Reset, and ArmISA::VirtualDataAbort.
Definition at line 486 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, update(), and vectorCatch().
Referenced by ArmISA::Reset::invoke(), ArmISA::UndefinedInstruction::invoke(), ArmISA::SupervisorCall::invoke(), ArmISA::SecureMonitorCall::invoke(), ArmISA::AbortFault< DataAbort >::invoke(), ArmISA::PCAlignmentFault::invoke(), ArmISA::SystemError::invoke(), ArmISA::HardwareBreakpoint::invoke(), and ArmISA::Watchpoint::invoke().
void ArmISA::ArmFault::invoke64 | ( | ThreadContext * | tc, |
const StaticInstPtr & | inst = StaticInst::nullStaticInstPtr |
||
) |
Definition at line 633 of file faults.cc.
References armPcElrOffset(), ArmISA::CCREG_C, ArmISA::CCREG_GE, ArmISA::CCREG_NZ, ArmISA::CCREG_V, csprintf(), DPRINTF, ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, from64, getSyndromeReg64(), getVector64(), ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), instrAnnotate(), isResetSPSR(), 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, MipsISA::pc, ThreadContext::pcState(), ArmISA::purifyTaggedAddr(), ThreadContext::readCCReg(), ThreadContext::readMiscReg(), ThreadContext::setMiscReg(), setSyndrome(), span, thumbPcElrOffset(), and toEL.
Referenced by invoke().
|
inline |
|
pure virtual |
Implemented in ArmISA::SoftwareStepFault, ArmISA::Watchpoint, ArmISA::DataAbort, ArmISA::AbortFault< T >, ArmISA::SupervisorTrap, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, and ArmISA::ArmFaultVals< T >.
Referenced by ArmISA::ISA::addressTranslation(), ArmISA::ISA::addressTranslation64(), and setSyndrome().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >.
Definition at line 249 of file faults.hh.
Referenced by ArmISA::ISA::addressTranslation(), and ArmISA::ISA::addressTranslation64().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke64(), and update().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by getVector64().
|
inlinevirtual |
Reimplemented in ArmISA::IllegalInstSetStateFault, ArmISA::SoftwareStepFault, ArmISA::Watchpoint, ArmISA::HardwareBreakpoint, ArmISA::SoftwareBreakpoint, ArmISA::SystemError, ArmISA::SPAlignmentFault, ArmISA::PCAlignmentFault, ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::HypervisorCall, ArmISA::SupervisorTrap, ArmISA::SupervisorCall, and ArmISA::UndefinedInstruction.
Definition at line 239 of file faults.hh.
Referenced by update().
|
pure virtual |
Implemented in ArmISA::SystemError, ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::HypervisorCall, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by update().
|
virtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 395 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(), invoke64(), and ArmISA::AbortFault< DataAbort >::setSyndrome().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, ArmISA::ArmFaultVals< UndefinedInstruction >, ArmISA::ArmFaultVals< HardwareBreakpoint >, ArmISA::ArmFaultVals< HypervisorTrap >, ArmISA::ArmFaultVals< VirtualFastInterrupt >, ArmISA::ArmFaultVals< PCAlignmentFault >, ArmISA::ArmFaultVals< DataAbort >, ArmISA::ArmFaultVals< SupervisorTrap >, ArmISA::ArmFaultVals< SPAlignmentFault >, ArmISA::ArmFaultVals< SecureMonitorCall >, ArmISA::ArmFaultVals< SystemError >, ArmISA::ArmFaultVals< SecureMonitorTrap >, ArmISA::ArmFaultVals< VirtualInterrupt >, ArmISA::ArmFaultVals< Watchpoint >, ArmISA::ArmFaultVals< ArmSev >, ArmISA::ArmFaultVals< SoftwareStepFault >, and ArmISA::ArmFaultVals< FastInterrupt >.
Referenced by invoke().
void ArmISA::ArmFault::update | ( | ThreadContext * | tc | ) |
Definition at line 436 of file faults.cc.
References ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::ELIs64(), faultUpdated, from64, fromEL, fromMode, ArmSystem::haveSecurity(), ArmSystem::haveVirtualization(), hypRouted, ArmISA::MISCREG_CPSR, ArmISA::MISCREG_HCR_EL2, ArmISA::MISCREG_ID_AA64MMFR1_EL1, ArmISA::MISCREG_SCTLR_EL1, ArmISA::MISCREG_SCTLR_EL2, ArmISA::MODE_HYP, ArmISA::MODE_MON, nextMode(), ArmISA::opModeToEL(), ThreadContext::readMiscReg(), ThreadContext::readMiscRegNoEffect(), routeToHyp(), routeToMonitor(), span, to64, toEL, and toMode.
Referenced by ArmISA::ISA::addressTranslation(), ArmISA::ISA::addressTranslation64(), and invoke().
bool ArmISA::ArmFault::vectorCatch | ( | ThreadContext * | tc, |
const StaticInstPtr & | inst | ||
) |
Definition at line 727 of file faults.cc.
References ArmISA::ISA::getSelfDebug(), ArmISA::VectorCatch::isVCMatch(), NoFault, and ArmISA::sd.
Referenced by invoke().
|
inlinevirtual |
Reimplemented in ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::HypervisorCall, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, and ArmISA::UndefinedInstruction.
Definition at line 247 of file faults.hh.
Referenced by ArmISA::VectorCatch::exceptionTrapping().
|
static |
Encodings of the fault sources in AArch64 state.
Definition at line 126 of file faults.hh.
Referenced by ArmISA::AbortFault< DataAbort >::getFaultStatusCode().
|
protected |
Definition at line 67 of file faults.hh.
Referenced by ArmISA::HypervisorCall::HypervisorCall(), isResetSPSR(), ArmISA::SecureMonitorCall::SecureMonitorCall(), ArmISA::SoftwareStepFault::SoftwareStepFault(), and ArmISA::SupervisorCall::SupervisorCall().
|
protected |
|
protected |
Definition at line 68 of file faults.hh.
Referenced by ArmISA::SupervisorCall::ec(), ArmISA::SecureMonitorCall::ec(), ArmISA::SecureMonitorTrap::ec(), ArmISA::HypervisorCall::ec(), ArmISA::SoftwareBreakpoint::ec(), ArmISA::PCAlignmentFault::invoke(), invoke64(), ArmISA::SecureMonitorCall::iss(), ArmISA::HypervisorCall::routeToHyp(), ArmISA::SPAlignmentFault::routeToHyp(), ArmISA::SystemError::routeToHyp(), ArmISA::HypervisorCall::routeToMonitor(), ArmISA::PrefetchAbort::routeToMonitor(), ArmISA::DataAbort::routeToMonitor(), ArmISA::Interrupt::routeToMonitor(), ArmISA::FastInterrupt::routeToMonitor(), ArmISA::SystemError::routeToMonitor(), setSyndrome(), and update().
|
protected |
Definition at line 70 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), ArmISA::HardwareBreakpoint::ec(), ArmISA::Watchpoint::ec(), ArmISA::SoftwareStepFault::ec(), ArmISA::UndefinedInstruction::routeToHyp(), ArmISA::SupervisorCall::routeToHyp(), ArmISA::HypervisorCall::routeToHyp(), ArmISA::PrefetchAbort::routeToHyp(), ArmISA::DataAbort::routeToHyp(), ArmISA::Interrupt::routeToHyp(), ArmISA::FastInterrupt::routeToHyp(), ArmISA::PCAlignmentFault::routeToHyp(), ArmISA::SystemError::routeToHyp(), ArmISA::SoftwareBreakpoint::routeToHyp(), ArmISA::HardwareBreakpoint::routeToHyp(), ArmISA::Watchpoint::routeToHyp(), ArmISA::SoftwareStepFault::routeToHyp(), ArmISA::IllegalInstSetStateFault::routeToHyp(), ArmISA::HypervisorCall::routeToMonitor(), ArmISA::SystemError::routeToMonitor(), and update().
|
protected |
|
protected |
Definition at line 80 of file faults.hh.
Referenced by ArmISA::UndefinedInstruction::ec(), ArmISA::SupervisorTrap::ec(), ArmISA::UndefinedInstruction::iss(), ArmISA::SupervisorTrap::iss(), and update().
|
protected |
Definition at line 64 of file faults.hh.
Referenced by ArmISA::ArmFaultVals< FastInterrupt >::iss(), ArmISA::UndefinedInstruction::iss(), ArmISA::SupervisorCall::iss(), and ArmISA::SupervisorTrap::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 124 of file faults.hh.
Referenced by ArmISA::AbortFault< DataAbort >::getFaultStatusCode().
|
protected |
Definition at line 63 of file faults.hh.
Referenced by 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 121 of file faults.hh.
Referenced by ArmISA::AbortFault< DataAbort >::getFaultStatusCode().
|
protected |
Definition at line 81 of file faults.hh.
Referenced by invoke(), invoke64(), and update().
|
protected |
Definition at line 69 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), invoke(), ArmISA::DataAbort::iss(), setSyndrome(), and update().
|
protected |
Definition at line 71 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), ArmISA::HardwareBreakpoint::ec(), ArmISA::Watchpoint::ec(), ArmISA::SoftwareStepFault::ec(), getFaultAddrReg64(), getSyndromeReg64(), getVector64(), ArmISA::HardwareBreakpoint::invoke(), invoke64(), ArmISA::DataAbort::iss(), and update().
|
protected |
Definition at line 73 of file faults.hh.
Referenced by getToMode(), invoke(), and update().