faults.hh (12259:f787f664d57a) faults.hh (12299:c54efdd48952)
1/*
2 * Copyright (c) 2010, 2012-2013, 2016-2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 531 unchanged lines hidden (view full) ---

540 public:
541 SystemError();
542 void invoke(ThreadContext *tc, const StaticInstPtr &inst =
543 StaticInst::nullStaticInstPtr) override;
544 bool routeToMonitor(ThreadContext *tc) const override;
545 bool routeToHyp(ThreadContext *tc) const override;
546};
547
1/*
2 * Copyright (c) 2010, 2012-2013, 2016-2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 531 unchanged lines hidden (view full) ---

540 public:
541 SystemError();
542 void invoke(ThreadContext *tc, const StaticInstPtr &inst =
543 StaticInst::nullStaticInstPtr) override;
544 bool routeToMonitor(ThreadContext *tc) const override;
545 bool routeToHyp(ThreadContext *tc) const override;
546};
547
548/// System error (AArch64 only)
549class SoftwareBreakpoint : public ArmFaultVals<SoftwareBreakpoint>
550{
551 public:
552 SoftwareBreakpoint(ExtMachInst _mach_inst, uint32_t _iss);
553
554 bool routeToHyp(ThreadContext *tc) const override;
555};
556
548// A fault that flushes the pipe, excluding the faulting instructions
549class ArmSev : public ArmFaultVals<ArmSev>
550{
551 public:
552 ArmSev () {}
553 void invoke(ThreadContext *tc, const StaticInstPtr &inst =
554 StaticInst::nullStaticInstPtr) override;
555};

--- 22 unchanged lines hidden (view full) ---

578template<> ArmFault::FaultVals ArmFaultVals<VirtualInterrupt>::vals;
579template<> ArmFault::FaultVals ArmFaultVals<FastInterrupt>::vals;
580template<> ArmFault::FaultVals ArmFaultVals<VirtualFastInterrupt>::vals;
581template<> ArmFault::FaultVals ArmFaultVals<SupervisorTrap>::vals;
582template<> ArmFault::FaultVals ArmFaultVals<SecureMonitorTrap>::vals;
583template<> ArmFault::FaultVals ArmFaultVals<PCAlignmentFault>::vals;
584template<> ArmFault::FaultVals ArmFaultVals<SPAlignmentFault>::vals;
585template<> ArmFault::FaultVals ArmFaultVals<SystemError>::vals;
557// A fault that flushes the pipe, excluding the faulting instructions
558class ArmSev : public ArmFaultVals<ArmSev>
559{
560 public:
561 ArmSev () {}
562 void invoke(ThreadContext *tc, const StaticInstPtr &inst =
563 StaticInst::nullStaticInstPtr) override;
564};

--- 22 unchanged lines hidden (view full) ---

587template<> ArmFault::FaultVals ArmFaultVals<VirtualInterrupt>::vals;
588template<> ArmFault::FaultVals ArmFaultVals<FastInterrupt>::vals;
589template<> ArmFault::FaultVals ArmFaultVals<VirtualFastInterrupt>::vals;
590template<> ArmFault::FaultVals ArmFaultVals<SupervisorTrap>::vals;
591template<> ArmFault::FaultVals ArmFaultVals<SecureMonitorTrap>::vals;
592template<> ArmFault::FaultVals ArmFaultVals<PCAlignmentFault>::vals;
593template<> ArmFault::FaultVals ArmFaultVals<SPAlignmentFault>::vals;
594template<> ArmFault::FaultVals ArmFaultVals<SystemError>::vals;
595template<> ArmFault::FaultVals ArmFaultVals<SoftwareBreakpoint>::vals;
586template<> ArmFault::FaultVals ArmFaultVals<ArmSev>::vals;
587
588
589} // namespace ArmISA
590
591#endif // __ARM_FAULTS_HH__
596template<> ArmFault::FaultVals ArmFaultVals<ArmSev>::vals;
597
598
599} // namespace ArmISA
600
601#endif // __ARM_FAULTS_HH__