gem5
v20.0.0.3
|
#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, 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) |
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 | 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 |
![]() | |
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 |
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 |
Definition at line 201 of file faults.hh.
References getFaultAddrReg64(), getSyndromeReg64(), instrAnnotate(), invoke(), invoke64(), StaticInst::nullStaticInstPtr, and update().
|
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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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 220 of file faults.hh.
References countStat(), ArmISA::ArmFault::FaultVals::nextMode, ArmISA::ArmFault::FaultVals::offset, offset64(), and routeToMonitor().
Referenced by ArmISA::DataAbort::DataAbort(), ArmISA::Stage2MMU::Stage2Translation::finish(), ArmISA::TLB::getResultTe(), ArmISA::AbortFault< DataAbort >::isStage2(), and ArmISA::Stage2MMU::readDataUntimed().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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 annotate(), and invoke().
|
pure virtual |
Implemented in 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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 362 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 ArmFault(), and ArmISA::PCAlignmentFault::invoke().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 238 of file faults.hh.
Referenced by ArmISA::AbortFault< DataAbort >::AbortFault(), and ArmISA::getFaultVAddr().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 236 of file faults.hh.
References setSyndrome().
Referenced by ArmISA::AbortFault< DataAbort >::AbortFault(), ArmISA::AbortFault< DataAbort >::invoke(), and ArmISA::ISA::setMiscReg().
MiscRegIndex ArmISA::ArmFault::getSyndromeReg64 | ( | ) | const |
Definition at line 346 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 ArmFault(), and invoke64().
|
protectedvirtual |
Reimplemented in ArmISA::Reset.
Definition at line 291 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 323 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 708 of file faults.cc.
References ArmISA::ArmStaticInst::annotateFault(), and RefCountingPtr< T >::get().
Referenced by ArmFault(), invoke(), and invoke64().
|
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().
void ArmISA::ArmFault::invoke64 | ( | ThreadContext * | tc, |
const StaticInstPtr & | inst = StaticInst::nullStaticInstPtr |
||
) |
Definition at line 614 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(), 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 ArmFault(), and invoke().
|
pure virtual |
Implemented in ArmISA::DataAbort, ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, ArmISA::AbortFault< DataAbort >, ArmISA::SupervisorTrap, ArmISA::SecureMonitorCall, ArmISA::SupervisorCall, ArmISA::UndefinedInstruction, ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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::AbortFault< DataAbort >::AbortFault(), ArmISA::DataAbort::DataAbort(), routeToHyp(), ArmISA::SecureMonitorCall::SecureMonitorCall(), ArmISA::ISA::setMiscReg(), setSyndrome(), ArmISA::SupervisorCall::SupervisorCall(), ArmISA::SupervisorTrap::SupervisorTrap(), and ArmISA::UndefinedInstruction::UndefinedInstruction().
|
inlinevirtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 235 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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(), and update().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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(), and ArmISA::Reset::getVector().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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 annotate(), ArmISA::ArmFaultVals< FastInterrupt >::countStat(), and getVector64().
|
inlinevirtual |
Reimplemented in ArmISA::SoftwareBreakpoint, ArmISA::SystemError, ArmISA::SPAlignmentFault, ArmISA::PCAlignmentFault, ArmISA::FastInterrupt, ArmISA::Interrupt, ArmISA::DataAbort, ArmISA::PrefetchAbort, ArmISA::SupervisorTrap, ArmISA::SupervisorCall, and ArmISA::UndefinedInstruction.
Definition at line 226 of file faults.hh.
References ArmISA::ArmFault::FaultVals::abortDisable, ArmISA::ArmFault::FaultVals::armPcElrOffset, ArmISA::ArmFault::FaultVals::armPcOffset, ArmISA::ArmFault::FaultVals::ec, ArmISA::ArmFault::FaultVals::fiqDisable, iss(), ArmISA::ArmFault::FaultVals::thumbPcElrOffset, and ArmISA::ArmFault::FaultVals::thumbPcOffset.
Referenced by ArmISA::DataAbort::DataAbort(), ArmISA::PCAlignmentFault::PCAlignmentFault(), ArmISA::PrefetchAbort::PrefetchAbort(), ArmISA::SupervisorCall::SupervisorCall(), ArmISA::SupervisorTrap::SupervisorTrap(), ArmISA::UndefinedInstruction::UndefinedInstruction(), and update().
|
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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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 annotate(), ArmISA::DataAbort::DataAbort(), ArmISA::PrefetchAbort::PrefetchAbort(), and update().
|
virtual |
Reimplemented in ArmISA::AbortFault< T >, ArmISA::AbortFault< VirtualDataAbort >, ArmISA::AbortFault< PrefetchAbort >, and ArmISA::AbortFault< DataAbort >.
Definition at line 378 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 getFsr(), invoke(), invoke64(), ArmISA::AbortFault< DataAbort >::isStage2(), and ArmISA::AbortFault< DataAbort >::setSyndrome().
|
pure virtual |
Implemented in ArmISA::ArmFaultVals< T >, ArmISA::ArmFaultVals< VirtualDataAbort >, ArmISA::ArmFaultVals< PrefetchAbort >, ArmISA::ArmFaultVals< Interrupt >, ArmISA::ArmFaultVals< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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< SoftwareBreakpoint >, ArmISA::ArmFaultVals< SupervisorCall >, ArmISA::ArmFaultVals< IllegalInstSetStateFault >, ArmISA::ArmFaultVals< HypervisorCall >, ArmISA::ArmFaultVals< Reset >, 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().
void ArmISA::ArmFault::update | ( | ThreadContext * | tc | ) |
Definition at line 419 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 ArmFault(), invoke(), and ArmISA::ISA::setMiscReg().
|
static |
|
protected |
Definition at line 77 of file faults.hh.
Referenced by ArmISA::AbortFault< DataAbort >::getFaultStatusCode(), and update().
|
protected |
Definition at line 67 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::SPAlignmentFault::routeToHyp(), ArmISA::SystemError::routeToHyp(), ArmISA::PrefetchAbort::routeToMonitor(), ArmISA::DataAbort::routeToMonitor(), ArmISA::Interrupt::routeToMonitor(), ArmISA::FastInterrupt::routeToMonitor(), ArmISA::SystemError::routeToMonitor(), setSyndrome(), and update().
|
protected |
Definition at line 69 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), ArmISA::ArmFaultVals< FastInterrupt >::offset64(), ArmISA::SoftwareBreakpoint::routeToHyp(), and update().
|
protected |
Definition at line 71 of file faults.hh.
Referenced by ArmISA::ArmFaultVals< FastInterrupt >::offset64(), and update().
|
protected |
Definition at line 79 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 |
|
protected |
Definition at line 63 of file faults.hh.
Referenced by ArmISA::SupervisorCall::invoke(), ArmISA::UndefinedInstruction::iss(), ArmISA::SecureMonitorCall::iss(), and setSyndrome().
|
static |
|
protected |
Definition at line 80 of file faults.hh.
Referenced by invoke(), invoke64(), and update().
|
protected |
Definition at line 68 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), ArmISA::AbortFault< DataAbort >::getFaultStatusCode(), invoke(), ArmISA::AbortFault< DataAbort >::invoke(), ArmISA::DataAbort::iss(), setSyndrome(), and update().
|
protected |
Definition at line 70 of file faults.hh.
Referenced by ArmISA::PrefetchAbort::ec(), ArmISA::DataAbort::ec(), getFaultAddrReg64(), getSyndromeReg64(), getVector64(), invoke64(), ArmISA::DataAbort::iss(), ArmISA::ArmFaultVals< FastInterrupt >::offset64(), and update().
|
protected |