diff options
-rw-r--r-- | src/arch/arm/faults.hh | 130 |
1 files changed, 67 insertions, 63 deletions
diff --git a/src/arch/arm/faults.hh b/src/arch/arm/faults.hh index 6e7c92cf6..8d72dee91 100644 --- a/src/arch/arm/faults.hh +++ b/src/arch/arm/faults.hh @@ -183,7 +183,7 @@ class ArmFault : public FaultBase MiscRegIndex getFaultAddrReg64() const; void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; void invoke64(ThreadContext *tc, const StaticInstPtr &inst = StaticInst::nullStaticInstPtr); virtual void annotate(AnnotationIDs id, uint64_t val) {} @@ -215,13 +215,11 @@ class ArmFaultVals : public ArmFault public: ArmFaultVals<T>(ExtMachInst _machInst = 0, uint32_t _iss = 0) : ArmFault(_machInst, _iss) {} - FaultName name() const { return vals.name; } - FaultStat & countStat() { return vals.count; } - FaultOffset offset(ThreadContext *tc); + FaultName name() const override { return vals.name; } + FaultStat & countStat() override { return vals.count; } + FaultOffset offset(ThreadContext *tc) override; - FaultOffset - offset64() - { + FaultOffset offset64() override { if (toEL == fromEL) { if (opModeIsT(fromMode)) return vals.currELTOffset; @@ -233,25 +231,31 @@ class ArmFaultVals : public ArmFault } } - OperatingMode nextMode() { return vals.nextMode; } - virtual bool routeToMonitor(ThreadContext *tc) const { return false; } - uint8_t armPcOffset(bool isHyp) { return isHyp ? vals.armPcElrOffset - : vals.armPcOffset; } - uint8_t thumbPcOffset(bool isHyp) { return isHyp ? vals.thumbPcElrOffset - : vals.thumbPcOffset; } - uint8_t armPcElrOffset() { return vals.armPcElrOffset; } - uint8_t thumbPcElrOffset() { return vals.thumbPcElrOffset; } - virtual bool abortDisable(ThreadContext* tc) { return vals.abortDisable; } - virtual bool fiqDisable(ThreadContext* tc) { return vals.fiqDisable; } - virtual ExceptionClass ec(ThreadContext *tc) const { return vals.ec; } - virtual uint32_t iss() const { return issRaw; } + OperatingMode nextMode() override { return vals.nextMode; } + virtual bool routeToMonitor(ThreadContext *tc) const override { + return false; + } + uint8_t armPcOffset(bool isHyp) override { + return isHyp ? vals.armPcElrOffset + : vals.armPcOffset; + } + uint8_t thumbPcOffset(bool isHyp) override { + return isHyp ? vals.thumbPcElrOffset + : vals.thumbPcOffset; + } + uint8_t armPcElrOffset() override { return vals.armPcElrOffset; } + uint8_t thumbPcElrOffset() override { return vals.thumbPcElrOffset; } + bool abortDisable(ThreadContext* tc) override { return vals.abortDisable; } + bool fiqDisable(ThreadContext* tc) override { return vals.fiqDisable; } + ExceptionClass ec(ThreadContext *tc) const override { return vals.ec; } + uint32_t iss() const override { return issRaw; } }; class Reset : public ArmFaultVals<Reset> { public: void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; }; class UndefinedInstruction : public ArmFaultVals<UndefinedInstruction> @@ -279,10 +283,10 @@ class UndefinedInstruction : public ArmFaultVals<UndefinedInstruction> {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); - bool routeToHyp(ThreadContext *tc) const; - ExceptionClass ec(ThreadContext *tc) const; - uint32_t iss() const; + StaticInst::nullStaticInstPtr) override; + bool routeToHyp(ThreadContext *tc) const override; + ExceptionClass ec(ThreadContext *tc) const override; + uint32_t iss() const override; }; class SupervisorCall : public ArmFaultVals<SupervisorCall> @@ -297,10 +301,10 @@ class SupervisorCall : public ArmFaultVals<SupervisorCall> {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); - bool routeToHyp(ThreadContext *tc) const; - ExceptionClass ec(ThreadContext *tc) const; - uint32_t iss() const; + StaticInst::nullStaticInstPtr) override; + bool routeToHyp(ThreadContext *tc) const override; + ExceptionClass ec(ThreadContext *tc) const override; + uint32_t iss() const override; }; class SecureMonitorCall : public ArmFaultVals<SecureMonitorCall> @@ -311,9 +315,9 @@ class SecureMonitorCall : public ArmFaultVals<SecureMonitorCall> {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); - ExceptionClass ec(ThreadContext *tc) const; - uint32_t iss() const; + StaticInst::nullStaticInstPtr) override; + ExceptionClass ec(ThreadContext *tc) const override; + uint32_t iss() const override; }; class SupervisorTrap : public ArmFaultVals<SupervisorTrap> @@ -329,7 +333,7 @@ class SupervisorTrap : public ArmFaultVals<SupervisorTrap> overrideEc(_overrideEc) {} - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; }; class SecureMonitorTrap : public ArmFaultVals<SecureMonitorTrap> @@ -345,7 +349,7 @@ class SecureMonitorTrap : public ArmFaultVals<SecureMonitorTrap> overrideEc(_overrideEc) {} - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; }; class HypervisorCall : public ArmFaultVals<HypervisorCall> @@ -353,7 +357,7 @@ class HypervisorCall : public ArmFaultVals<HypervisorCall> public: HypervisorCall(ExtMachInst _machInst, uint32_t _imm); - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; }; class HypervisorTrap : public ArmFaultVals<HypervisorTrap> @@ -369,7 +373,7 @@ class HypervisorTrap : public ArmFaultVals<HypervisorTrap> overrideEc(_overrideEc) {} - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; }; template <class T> @@ -407,13 +411,13 @@ class AbortFault : public ArmFaultVals<T> {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; - FSR getFsr(ThreadContext *tc); - bool abortDisable(ThreadContext *tc); - uint32_t iss() const; - bool isStage2() const { return stage2; } - void annotate(ArmFault::AnnotationIDs id, uint64_t val); + FSR getFsr(ThreadContext *tc) override; + bool abortDisable(ThreadContext *tc) override; + uint32_t iss() const override; + bool isStage2() const override { return stage2; } + void annotate(ArmFault::AnnotationIDs id, uint64_t val) override; bool isMMUFault() const; }; @@ -430,10 +434,10 @@ class PrefetchAbort : public AbortFault<PrefetchAbort> _source, _stage2, _tranMethod) {} - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; // @todo: external aborts should be routed if SCR.EA == 1 - bool routeToMonitor(ThreadContext *tc) const; - bool routeToHyp(ThreadContext *tc) const; + bool routeToMonitor(ThreadContext *tc) const override; + bool routeToHyp(ThreadContext *tc) const override; }; class DataAbort : public AbortFault<DataAbort> @@ -458,12 +462,12 @@ class DataAbort : public AbortFault<DataAbort> isv(false), sas (0), sse(0), srt(0), sf(false), ar(false) {} - ExceptionClass ec(ThreadContext *tc) const; + ExceptionClass ec(ThreadContext *tc) const override; // @todo: external aborts should be routed if SCR.EA == 1 - bool routeToMonitor(ThreadContext *tc) const; - bool routeToHyp(ThreadContext *tc) const; - uint32_t iss() const; - void annotate(AnnotationIDs id, uint64_t val); + bool routeToMonitor(ThreadContext *tc) const override; + bool routeToHyp(ThreadContext *tc) const override; + uint32_t iss() const override; + void annotate(AnnotationIDs id, uint64_t val) override; }; class VirtualDataAbort : public AbortFault<VirtualDataAbort> @@ -478,15 +482,15 @@ class VirtualDataAbort : public AbortFault<VirtualDataAbort> AbortFault<VirtualDataAbort>(_addr, _write, _domain, _source, false) {} - void invoke(ThreadContext *tc, const StaticInstPtr &inst); + void invoke(ThreadContext *tc, const StaticInstPtr &inst) override; }; class Interrupt : public ArmFaultVals<Interrupt> { public: - bool routeToMonitor(ThreadContext *tc) const; - bool routeToHyp(ThreadContext *tc) const; - bool abortDisable(ThreadContext *tc); + bool routeToMonitor(ThreadContext *tc) const override; + bool routeToHyp(ThreadContext *tc) const override; + bool abortDisable(ThreadContext *tc) override; }; class VirtualInterrupt : public ArmFaultVals<VirtualInterrupt> @@ -498,10 +502,10 @@ class VirtualInterrupt : public ArmFaultVals<VirtualInterrupt> class FastInterrupt : public ArmFaultVals<FastInterrupt> { public: - bool routeToMonitor(ThreadContext *tc) const; - bool routeToHyp(ThreadContext *tc) const; - bool abortDisable(ThreadContext *tc); - bool fiqDisable(ThreadContext *tc); + bool routeToMonitor(ThreadContext *tc) const override; + bool routeToHyp(ThreadContext *tc) const override; + bool abortDisable(ThreadContext *tc) override; + bool fiqDisable(ThreadContext *tc) override; }; class VirtualFastInterrupt : public ArmFaultVals<VirtualFastInterrupt> @@ -520,7 +524,7 @@ class PCAlignmentFault : public ArmFaultVals<PCAlignmentFault> PCAlignmentFault(Addr _faultPC) : faultPC(_faultPC) {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; }; /// Stack pointer alignment fault (AArch64 only) @@ -536,9 +540,9 @@ class SystemError : public ArmFaultVals<SystemError> public: SystemError(); void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); - bool routeToMonitor(ThreadContext *tc) const; - bool routeToHyp(ThreadContext *tc) const; + StaticInst::nullStaticInstPtr) override; + bool routeToMonitor(ThreadContext *tc) const override; + bool routeToHyp(ThreadContext *tc) const override; }; // A fault that flushes the pipe, excluding the faulting instructions @@ -547,7 +551,7 @@ class FlushPipe : public ArmFaultVals<FlushPipe> public: FlushPipe() {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; }; // A fault that flushes the pipe, excluding the faulting instructions @@ -556,7 +560,7 @@ class ArmSev : public ArmFaultVals<ArmSev> public: ArmSev () {} void invoke(ThreadContext *tc, const StaticInstPtr &inst = - StaticInst::nullStaticInstPtr); + StaticInst::nullStaticInstPtr) override; }; /// Illegal Instruction Set State fault (AArch64 only) |