Go to the documentation of this file.
42 #ifndef __ARM_FAULTS_HH__
43 #define __ARM_FAULTS_HH__
198 const uint16_t& currELTOffset_,
const uint16_t& currELHOffset_,
199 const uint16_t& lowerEL64Offset_,
200 const uint16_t& lowerEL32Offset_,
202 const uint8_t& thumbPcOffset_,
const uint8_t& armPcElrOffset_,
203 const uint8_t& thumbPcElrOffset_,
const bool& hypTrappable_,
204 const bool& abortDisable_,
const bool& fiqDisable_,
252 virtual uint32_t
iss()
const = 0;
316 const char *_mnemonic = NULL,
317 bool _disabled =
false) :
333 uint32_t
iss()
const override;
354 uint32_t
iss()
const override;
370 uint32_t
iss()
const override;
388 uint32_t
iss()
const override;
463 uint8_t _source,
bool _stage2,
480 uint32_t
iss()
const override;
498 _source, _stage2, _tranMethod, _debug)
529 _tranMethod, _debug_type),
537 uint32_t
iss()
const override;
655 uint32_t
iss()
const override;
669 uint32_t
iss()
const override;
735 #endif // __ARM_FAULTS_HH__
const uint8_t thumbPcElrOffset
This is a simple scalar statistic, like a counter.
void annotate(ArmFault::AnnotationIDs id, uint64_t val) override
void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg) override
ExceptionClass ec(ThreadContext *tc) const override
bool routeToMonitor(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
uint8_t thumbPcElrOffset() override
bool routeToHyp(ThreadContext *tc) const override
const uint16_t lowerEL32Offset
uint8_t armPcOffset(bool isHyp) override
static const MiscRegIndex FsrIndex
Watchpoint(ExtMachInst _mach_inst, Addr _vaddr, bool _write, bool _cm)
AbortFault(Addr _faultAddr, bool _write, TlbEntry::DomainType _domain, uint8_t _source, bool _stage2, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
Addr faultPC
The unaligned value of the PC.
virtual bool abortDisable(ThreadContext *tc)=0
uint32_t vectorCatchFlag() const override
ExceptionClass overrideEc
ExceptionClass ec(ThreadContext *tc) const override
uint32_t vectorCatchFlag() const override
bool routeToHyp(ThreadContext *tc) const override
@ SynchExtAbtOnTranslTableWalkLL
uint32_t vectorCatchFlag() const override
uint32_t vectorCatchFlag() const override
static const MiscRegIndex HFarIndex
ExceptionClass ec(ThreadContext *tc) const override
ExceptionClass overrideEc
@ SynchronousExternalAbort
uint8_t thumbPcOffset(bool isHyp) override
bool abortDisable(ThreadContext *tc) override
uint32_t iss() const override
uint32_t vectorCatchFlag() const override
bool routeToHyp(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
UndefinedInstruction(ExtMachInst _machInst, bool _unknown, const char *_mnemonic=NULL, bool _disabled=false)
virtual uint8_t armPcElrOffset()=0
uint8_t getFaultStatusCode(ThreadContext *tc) const
bool routeToMonitor(ThreadContext *tc) const override
PC alignment fault (AArch64 only)
bool routeToMonitor(ThreadContext *tc) const override
@ SynchPtyErrOnMemoryAccess
virtual FaultOffset offset64(ThreadContext *tc)=0
bool routeToHyp(ThreadContext *tc) const override
ArmFault::DebugType debugType
static const MiscRegIndex FarIndex
OperatingMode getToMode() const
uint32_t iss() const override
uint32_t vectorCatchFlag() const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst) override
UndefinedInstruction(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc, const char *_mnemonic=NULL)
virtual void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg)
bool getFaultVAddr(Fault fault, Addr &va)
Returns true if the fault passed as a first argument was triggered by a memory access,...
const uint16_t currELTOffset
const uint8_t thumbPcOffset
ExceptionClass ec(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
Addr getVector64(ThreadContext *tc)
bool routeToMonitor(ThreadContext *tc) const override
@ AsynchronousExternalAbort
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
FSR getFsr(ThreadContext *tc) const override
uint32_t iss() const override
OperatingMode nextMode() override
virtual uint32_t iss() const =0
bool abortDisable(ThreadContext *tc) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual FaultStat & countStat()=0
ArmStaticInst * instrAnnotate(const StaticInstPtr &inst)
static const MiscRegIndex FarIndex
HypervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
const StaticInstPtr nullStaticInstPtr
Statically allocated null StaticInstPtr.
virtual uint8_t thumbPcElrOffset()=0
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual FaultOffset offset(ThreadContext *tc)=0
virtual uint8_t thumbPcOffset(bool isHyp)=0
std::shared_ptr< FaultBase > Fault
FaultSource
Generic fault source enums used to index into {short/long/aarch64}DescFaultSources[] to get the actua...
MiscRegIndex getSyndromeReg64() const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
TlbEntry::DomainType domain
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)
uint8_t armPcElrOffset() override
ExceptionClass ec(ThreadContext *tc) const override
uint32_t vectorCatchFlag() const override
ExceptionClass ec(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
virtual uint32_t vectorCatchFlag() const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
@ SynchPtyErrOnTranslTableWalkLL
static uint8_t shortDescFaultSources[NumFaultSources]
Encodings of the fault sources when the short-desc.
void update(ThreadContext *tc)
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_)
FaultOffset offset64(ThreadContext *tc) override
virtual bool getFaultVAddr(Addr &va) const
FaultStat & countStat() override
uint32_t iss() const override
bool routeToHyp(ThreadContext *tc) const override
uint32_t iss() const override
bool abortDisable(ThreadContext *tc) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
ExceptionClass overrideEc
SupervisorCall(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
const uint8_t armPcOffset
const uint16_t lowerEL64Offset
ArmFault(ExtMachInst _machInst=0, uint32_t _iss=0)
void annotate(AnnotationIDs id, uint64_t val) override
virtual OperatingMode nextMode()=0
bool fiqDisable(ThreadContext *tc) override
SupervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
SecureMonitorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
bool isStage2() const override
static const MiscRegIndex HFarIndex
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
SoftwareBreakpoint(ExtMachInst _mach_inst, uint32_t _iss)
PrefetchAbort(Addr _addr, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
System error (AArch64 only)
FaultOffset offset(ThreadContext *tc) override
@ AsynchPtyErrOnMemoryAccess
uint32_t iss() const override
PCAlignmentFault(Addr _faultPC)
ExceptionClass ec(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
virtual bool routeToMonitor(ThreadContext *tc) const override
static const MiscRegIndex FsrIndex
virtual FSR getFsr(ThreadContext *tc) const
@ InstructionCacheMaintenance
bool getFaultVAddr(Addr &va) const override
Addr OVAddr
Original virtual address.
bool routeToHyp(ThreadContext *tc) const override
const typedef char * FaultName
MiscRegIndex getFaultAddrReg64() const
HardwareBreakpoint(Addr _vaddr, uint32_t _iss)
Addr getVector(ThreadContext *tc) override
const uint16_t currELHOffset
Addr faultAddr
The virtual address the fault occured at.
static uint8_t aarch64FaultSources[NumFaultSources]
Encodings of the fault sources in AArch64 state.
ExceptionClass overrideEc
bool routeToHyp(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
void invoke64(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
bool routeToHyp(ThreadContext *tc) const override
void annotate(AnnotationIDs id, uint64_t val) override
System error (AArch64 only)
virtual Addr getVector(ThreadContext *tc)
FaultName name() const override
uint32_t iss() const override
Stack pointer alignment fault (AArch64 only)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
SecureMonitorCall(ExtMachInst _machInst)
SoftwareStepFault(ExtMachInst _mach_inst, bool is_ldx, bool stepped)
ExceptionClass ec(ThreadContext *tc) const override
virtual ExceptionClass ec(ThreadContext *tc) const =0
virtual void annotate(AnnotationIDs id, uint64_t val)
ExceptionClass ec(ThreadContext *tc) const override
uint32_t iss() const override
bool routeToMonitor(ThreadContext *tc) const override
VirtualDataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
const OperatingMode nextMode
HypervisorCall(ExtMachInst _machInst, uint32_t _imm)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual bool routeToHyp(ThreadContext *tc) const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
bool vectorCatch(ThreadContext *tc, const StaticInstPtr &inst)
bool routeToHyp(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
bool routeToMonitor(ThreadContext *tc) const override
bool routeToHyp(ThreadContext *tc) const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual uint8_t armPcOffset(bool isHyp)=0
bool routeToHyp(ThreadContext *tc) const override
ExceptionClass ec(ThreadContext *tc) const override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual bool routeToMonitor(ThreadContext *tc) const =0
IllegalInstSetStateFault()
virtual bool isStage2() const
static uint8_t longDescFaultSources[NumFaultSources]
Encodings of the fault sources when the long-desc.
static const MiscRegIndex HFarIndex
uint32_t vectorCatchFlag() const override
ExceptionClass overrideEc
bool fiqDisable(ThreadContext *tc) override
static const MiscRegIndex FsrIndex
uint32_t iss() const override
bool abortDisable(ThreadContext *tc) override
static const MiscRegIndex FarIndex
ExceptionClass ec(ThreadContext *tc) const override
ArmFault::TranMethod tranMethod
virtual bool fiqDisable(ThreadContext *tc)=0
Illegal Instruction Set State fault (AArch64 only)
const uint8_t armPcElrOffset
Generated on Tue Sep 7 2021 14:53:40 for gem5 by doxygen 1.8.17