47 #ifndef __ARM_FAULTS_HH__
48 #define __ARM_FAULTS_HH__
203 virtual uint32_t
iss()
const = 0;
268 const char *_mnemonic = NULL,
269 bool _disabled =
false) :
285 uint32_t
iss()
const;
303 uint32_t
iss()
const;
316 uint32_t
iss()
const;
402 uint8_t _source,
bool _stage2,
414 uint32_t
iss()
const;
430 _source, _stage2, _tranMethod)
465 uint32_t
iss()
const;
597 #endif // __ARM_FAULTS_HH__
ExceptionClass overrideEc
bool abortDisable(ThreadContext *tc)
HypervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
bool abortDisable(ThreadContext *tc)
static uint8_t aarch64FaultSources[NumFaultSources]
Encodings of the fault sources in AArch64 state.
Illegal Instruction Set State fault (AArch64 only)
virtual uint8_t armPcElrOffset()=0
bool routeToHyp(ThreadContext *tc) const
static const MiscRegIndex HFarIndex
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
bool routeToMonitor(ThreadContext *tc) const
ExceptionClass overrideEc
ExceptionClass ec(ThreadContext *tc) const
Stack pointer alignment fault (AArch64 only)
const uint16_t currELTOffset
DataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran)
virtual FaultOffset offset(ThreadContext *tc)=0
PCAlignmentFault(Addr _faultPC)
static bool opModeIsT(OperatingMode mode)
virtual FSR getFsr(ThreadContext *tc)
const OperatingMode nextMode
virtual bool abortDisable(ThreadContext *tc)
uint8_t thumbPcOffset(bool isHyp)
MiscRegIndex getFaultAddrReg64() const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
const uint16_t currELHOffset
ExceptionClass ec(ThreadContext *tc) const
bool abortDisable(ThreadContext *tc)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
void invoke(ThreadContext *tc, const StaticInstPtr &inst)
virtual bool fiqDisable(ThreadContext *tc)=0
This is a simple scalar statistic, like a counter.
PrefetchAbort(Addr _addr, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran)
VirtualDataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source)
AbortFault(Addr _faultAddr, bool _write, TlbEntry::DomainType _domain, uint8_t _source, bool _stage2, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran)
bool routeToHyp(ThreadContext *tc) const
virtual bool routeToHyp(ThreadContext *tc) const
Addr faultAddr
The virtual address the fault occured at.
static uint8_t shortDescFaultSources[NumFaultSources]
Encodings of the fault sources when the short-desc.
virtual FaultOffset offset64()=0
ExceptionClass overrideEc
SupervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
ExceptionClass ec(ThreadContext *tc) const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
ExceptionClass ec(ThreadContext *tc) const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
bool routeToMonitor(ThreadContext *tc) const
SecureMonitorCall(ExtMachInst _machInst)
TlbEntry::DomainType domain
PC alignment fault (AArch64 only)
UndefinedInstruction(ExtMachInst _machInst, bool _unknown, const char *_mnemonic=NULL, bool _disabled=false)
static uint8_t longDescFaultSources[NumFaultSources]
Encodings of the fault sources when the long-desc.
bool routeToHyp(ThreadContext *tc) const
const uint8_t thumbPcElrOffset
ArmFault::TranMethod tranMethod
System error (AArch64 only)
void annotate(AnnotationIDs id, uint64_t val)
UndefinedInstruction(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc, const char *_mnemonic=NULL)
ExceptionClass overrideEc
const uint16_t lowerEL32Offset
virtual void annotate(AnnotationIDs id, uint64_t val)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
bool routeToHyp(ThreadContext *tc) const
virtual bool abortDisable(ThreadContext *tc)=0
const uint16_t lowerEL64Offset
bool routeToMonitor(ThreadContext *tc) const
FSR getFsr(ThreadContext *tc)
ExceptionClass ec(ThreadContext *tc) const
MiscRegIndex getSyndromeReg64() const
bool routeToHyp(ThreadContext *tc) const
HypervisorCall(ExtMachInst _machInst, uint32_t _imm)
ExceptionClass ec(ThreadContext *tc) const
const uint8_t armPcElrOffset
virtual FaultStat & countStat()=0
virtual bool routeToMonitor(ThreadContext *tc) const =0
SecureMonitorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
virtual uint8_t thumbPcOffset(bool isHyp)=0
static const MiscRegIndex FarIndex
Addr OVAddr
Original virtual address.
Addr getVector64(ThreadContext *tc)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual bool routeToMonitor(ThreadContext *tc) const
void invoke64(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
const uint8_t thumbPcOffset
SupervisorCall(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
virtual OperatingMode nextMode()=0
virtual bool isStage2() const
virtual uint8_t thumbPcElrOffset()=0
bool routeToHyp(ThreadContext *tc) const
virtual uint32_t iss() const =0
static const MiscRegIndex HFarIndex
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
Addr getVector(ThreadContext *tc)
bool routeToHyp(ThreadContext *tc) const
ExceptionClass ec(ThreadContext *tc) const
virtual uint32_t iss() const
virtual ExceptionClass ec(ThreadContext *tc) const
uint8_t armPcOffset(bool isHyp)
ExceptionClass ec(ThreadContext *tc) const
uint8_t thumbPcElrOffset()
const uint8_t armPcOffset
void annotate(ArmFault::AnnotationIDs id, uint64_t val)
static const MiscRegIndex FarIndex
bool routeToMonitor(ThreadContext *tc) const
static const MiscRegIndex FsrIndex
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
virtual uint8_t armPcOffset(bool isHyp)=0
ExceptionClass ec(ThreadContext *tc) const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
FaultOffset offset(ThreadContext *tc)
FaultSource
Generic fault source enums used to index into {short/long/aarch64}DescFaultSources[] to get the actua...
IllegalInstSetStateFault()
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
bool routeToMonitor(ThreadContext *tc) const
virtual bool fiqDisable(ThreadContext *tc)
virtual void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg)
static StaticInstPtr nullStaticInstPtr
Pointer to a statically allocated "null" instruction object.
virtual ExceptionClass ec(ThreadContext *tc) const =0
static const MiscRegIndex FarIndex
bool fiqDisable(ThreadContext *tc)
Addr faultPC
The unaligned value of the PC.
static const MiscRegIndex FsrIndex
ExceptionClass overrideEc
static const MiscRegIndex HFarIndex
ArmFault(ExtMachInst _machInst=0, uint32_t _iss=0)
static const MiscRegIndex FsrIndex