Go to the documentation of this file.
42 #ifndef __ARM_FAULTS_HH__
43 #define __ARM_FAULTS_HH__
194 const uint16_t& currELTOffset_,
const uint16_t& currELHOffset_,
195 const uint16_t& lowerEL64Offset_,
196 const uint16_t& lowerEL32Offset_,
198 const uint8_t& thumbPcOffset_,
const uint8_t& armPcElrOffset_,
199 const uint8_t& thumbPcElrOffset_,
const bool& hypTrappable_,
200 const bool& abortDisable_,
const bool& fiqDisable_,
248 virtual uint32_t
iss()
const = 0;
312 const char *_mnemonic = NULL,
313 bool _disabled =
false) :
329 uint32_t
iss()
const override;
350 uint32_t
iss()
const override;
366 uint32_t
iss()
const override;
384 uint32_t
iss()
const override;
459 uint8_t _source,
bool _stage2,
475 uint32_t
iss()
const override;
493 _source, _stage2, _tranMethod, _debug)
524 _tranMethod, _debug_type),
532 uint32_t
iss()
const override;
650 uint32_t
iss()
const override;
664 uint32_t
iss()
const override;
730 #endif // __ARM_FAULTS_HH__
@ SynchronousExternalAbort
ExceptionClass ec(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
bool getFaultVAddr(Addr &va) const override
uint32_t vectorCatchFlag() const override
bool getFaultVAddr(Fault fault, Addr &va)
Returns true if the fault passed as a first argument was triggered by a memory access,...
static const MiscRegIndex FarIndex
uint32_t iss() const override
static uint8_t aarch64FaultSources[NumFaultSources]
Encodings of the fault sources in AArch64 state.
bool routeToMonitor(ThreadContext *tc) const override
Illegal Instruction Set State fault (AArch64 only)
virtual bool routeToMonitor(ThreadContext *tc) const =0
uint32_t vectorCatchFlag() const override
FaultOffset offset(ThreadContext *tc) override
ExceptionClass overrideEc
Addr getVector64(ThreadContext *tc)
ExceptionClass ec(ThreadContext *tc) const override
virtual uint32_t iss() const =0
static const MiscRegIndex FsrIndex
ExceptionClass ec(ThreadContext *tc) const override
bool abortDisable(ThreadContext *tc) override
virtual uint8_t thumbPcOffset(bool isHyp)=0
uint32_t iss() const override
Stack pointer alignment fault (AArch64 only)
bool routeToHyp(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
ExceptionClass overrideEc
bool routeToHyp(ThreadContext *tc) const override
FaultStat & countStat() override
bool routeToHyp(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
uint32_t iss() const override
SupervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
ExceptionClass ec(ThreadContext *tc) const override
SupervisorCall(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
static const MiscRegIndex HFarIndex
VirtualDataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source)
TlbEntry::DomainType domain
static const MiscRegIndex HFarIndex
PrefetchAbort(Addr _addr, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
MiscRegIndex getFaultAddrReg64() const
IllegalInstSetStateFault()
bool isStage2() const override
virtual Addr getVector(ThreadContext *tc)
SoftwareBreakpoint(ExtMachInst _mach_inst, uint32_t _iss)
ExceptionClass ec(ThreadContext *tc) const override
void annotate(AnnotationIDs id, uint64_t val) override
ExceptionClass ec(ThreadContext *tc) const override
virtual bool fiqDisable(ThreadContext *tc)=0
@ AsynchronousExternalAbort
virtual bool isStage2() const
uint32_t vectorCatchFlag() const override
virtual FaultOffset offset(ThreadContext *tc)=0
DataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug_type=ArmFault::NODEBUG)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
uint32_t vectorCatchFlag() const override
FaultSource
Generic fault source enums used to index into {short/long/aarch64}DescFaultSources[] to get the actua...
bool routeToHyp(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
ExceptionClass ec(ThreadContext *tc) const override
UndefinedInstruction(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc, const char *_mnemonic=NULL)
bool vectorCatch(ThreadContext *tc, const StaticInstPtr &inst)
bool routeToMonitor(ThreadContext *tc) const override
Addr getVector(ThreadContext *tc) override
bool abortDisable(ThreadContext *tc) override
const uint16_t currELTOffset
bool routeToHyp(ThreadContext *tc) const override
virtual void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg)
This is a simple scalar statistic, like a counter.
SecureMonitorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
uint32_t iss() const override
uint32_t vectorCatchFlag() const override
bool routeToHyp(ThreadContext *tc) const override
void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg) override
ArmFault(ExtMachInst _machInst=0, uint32_t _iss=0)
const uint16_t currELHOffset
virtual void annotate(AnnotationIDs id, uint64_t val)
ArmStaticInst * instrAnnotate(const StaticInstPtr &inst)
bool routeToHyp(ThreadContext *tc) const override
uint32_t iss() const override
ExceptionClass ec(ThreadContext *tc) const override
AbortFault(Addr _faultAddr, bool _write, TlbEntry::DomainType _domain, uint8_t _source, bool _stage2, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
SecureMonitorCall(ExtMachInst _machInst)
ArmFault::DebugType debug
FaultName name() const override
bool fiqDisable(ThreadContext *tc) override
virtual FaultStat & countStat()=0
FaultOffset offset64(ThreadContext *tc) override
ExceptionClass ec(ThreadContext *tc) const override
virtual FaultOffset offset64(ThreadContext *tc)=0
const uint8_t thumbPcOffset
PC alignment fault (AArch64 only)
const typedef char * FaultName
bool routeToHyp(ThreadContext *tc) const override
std::shared_ptr< FaultBase > Fault
bool routeToHyp(ThreadContext *tc) const override
MiscRegIndex getSyndromeReg64() const
HypervisorCall(ExtMachInst _machInst, uint32_t _imm)
uint8_t getFaultStatusCode(ThreadContext *tc) const
virtual uint8_t armPcElrOffset()=0
uint32_t iss() const override
void invoke64(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
bool fiqDisable(ThreadContext *tc) override
virtual OperatingMode nextMode()=0
System error (AArch64 only)
bool routeToMonitor(ThreadContext *tc) const override
static const MiscRegIndex FsrIndex
FSR getFsr(ThreadContext *tc) const override
const uint8_t thumbPcElrOffset
OperatingMode nextMode() override
uint32_t iss() const override
virtual uint32_t vectorCatchFlag() const
System error (AArch64 only)
bool routeToHyp(ThreadContext *tc) const override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
@ AsynchPtyErrOnMemoryAccess
static StaticInstPtr nullStaticInstPtr
Pointer to a statically allocated "null" instruction object.
bool routeToHyp(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
const uint16_t lowerEL64Offset
const uint8_t armPcOffset
bool abortDisable(ThreadContext *tc) override
ExceptionClass overrideEc
bool routeToHyp(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
const uint8_t armPcElrOffset
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
const uint16_t lowerEL32Offset
uint8_t armPcOffset(bool isHyp) override
static const MiscRegIndex HFarIndex
uint32_t vectorCatchFlag() const override
bool routeToMonitor(ThreadContext *tc) const override
SoftwareStepFault(ExtMachInst _mach_inst, bool is_ldx, bool stepped)
static const MiscRegIndex FarIndex
static const MiscRegIndex FsrIndex
ExceptionClass ec(ThreadContext *tc) const override
@ SynchPtyErrOnMemoryAccess
OperatingMode getToMode() const
virtual uint8_t thumbPcElrOffset()=0
void update(ThreadContext *tc)
virtual bool routeToMonitor(ThreadContext *tc) const override
uint32_t iss() const override
bool routeToHyp(ThreadContext *tc) const override
PCAlignmentFault(Addr _faultPC)
ExceptionClass ec(ThreadContext *tc) const override
HardwareBreakpoint(Addr _vaddr, uint32_t _iss)
bool routeToMonitor(ThreadContext *tc) const override
virtual ExceptionClass ec(ThreadContext *tc) const =0
void annotate(AnnotationIDs id, uint64_t val) override
virtual uint8_t armPcOffset(bool isHyp)=0
virtual FSR getFsr(ThreadContext *tc) const
ExceptionClass ec(ThreadContext *tc) const override
ArmFault::TranMethod tranMethod
@ SynchExtAbtOnTranslTableWalkLL
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
uint32_t vectorCatchFlag() const override
void annotate(ArmFault::AnnotationIDs id, uint64_t val) override
ExceptionClass overrideEc
uint32_t vectorCatchFlag() const override
virtual bool getFaultVAddr(Addr &va) const
Addr OVAddr
Original virtual address.
static const MiscRegIndex FarIndex
uint8_t thumbPcElrOffset() override
virtual bool routeToHyp(ThreadContext *tc) const
uint8_t armPcElrOffset() override
uint8_t thumbPcOffset(bool isHyp) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
HypervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
bool routeToHyp(ThreadContext *tc) const override
static uint8_t shortDescFaultSources[NumFaultSources]
Encodings of the fault sources when the short-desc.
ExceptionClass overrideEc
bool abortDisable(ThreadContext *tc) override
bool routeToHyp(ThreadContext *tc) const override
@ InstructionCacheMaintenance
static uint8_t longDescFaultSources[NumFaultSources]
Encodings of the fault sources when the long-desc.
bool routeToHyp(ThreadContext *tc) const override
const OperatingMode nextMode
void invoke(ThreadContext *tc, const StaticInstPtr &inst) override
@ SynchPtyErrOnTranslTableWalkLL
Watchpoint(ExtMachInst _mach_inst, Addr _vaddr, bool _write, bool _cm)
UndefinedInstruction(ExtMachInst _machInst, bool _unknown, const char *_mnemonic=NULL, bool _disabled=false)
bool routeToMonitor(ThreadContext *tc) const override
Addr faultPC
The unaligned value of the PC.
FaultVals(const FaultName &name_, const FaultOffset &offset_, const uint16_t &currELTOffset_, const uint16_t &currELHOffset_, const uint16_t &lowerEL64Offset_, const uint16_t &lowerEL32Offset_, const OperatingMode &nextMode_, const uint8_t &armPcOffset_, const uint8_t &thumbPcOffset_, const uint8_t &armPcElrOffset_, const uint8_t &thumbPcElrOffset_, const bool &hypTrappable_, const bool &abortDisable_, const bool &fiqDisable_, const ExceptionClass &ec_)
uint32_t iss() const override
virtual bool abortDisable(ThreadContext *tc)=0
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Addr faultAddr
The virtual address the fault occured at.
Generated on Wed Sep 30 2020 14:01:59 for gem5 by doxygen 1.8.17