faults.hh revision 6019
16019Shines@cs.fsu.edu/*
26019Shines@cs.fsu.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan
36019Shines@cs.fsu.edu * Copyright (c) 2007-2008 The Florida State University
46019Shines@cs.fsu.edu * All rights reserved.
56019Shines@cs.fsu.edu *
66019Shines@cs.fsu.edu * Redistribution and use in source and binary forms, with or without
76019Shines@cs.fsu.edu * modification, are permitted provided that the following conditions are
86019Shines@cs.fsu.edu * met: redistributions of source code must retain the above copyright
96019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer;
106019Shines@cs.fsu.edu * redistributions in binary form must reproduce the above copyright
116019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer in the
126019Shines@cs.fsu.edu * documentation and/or other materials provided with the distribution;
136019Shines@cs.fsu.edu * neither the name of the copyright holders nor the names of its
146019Shines@cs.fsu.edu * contributors may be used to endorse or promote products derived from
156019Shines@cs.fsu.edu * this software without specific prior written permission.
166019Shines@cs.fsu.edu *
176019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
186019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
196019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
206019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
216019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
226019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
236019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
246019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
256019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
266019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
276019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
286019Shines@cs.fsu.edu *
296019Shines@cs.fsu.edu * Authors: Gabe Black
306019Shines@cs.fsu.edu *          Stephen Hines
316019Shines@cs.fsu.edu */
326019Shines@cs.fsu.edu
336019Shines@cs.fsu.edu#ifndef __ARM_FAULTS_HH__
346019Shines@cs.fsu.edu#define __ARM_FAULTS_HH__
356019Shines@cs.fsu.edu
366019Shines@cs.fsu.edu#include "sim/faults.hh"
376019Shines@cs.fsu.edu
386019Shines@cs.fsu.edu// The design of the "name" and "vect" functions is in sim/faults.hh
396019Shines@cs.fsu.edu
406019Shines@cs.fsu.edunamespace ArmISA
416019Shines@cs.fsu.edu{
426019Shines@cs.fsu.edutypedef const Addr FaultVect;
436019Shines@cs.fsu.edu
446019Shines@cs.fsu.educlass ArmFault : public FaultBase
456019Shines@cs.fsu.edu{
466019Shines@cs.fsu.edu  protected:
476019Shines@cs.fsu.edu    virtual bool skipFaultingInstruction() {return false;}
486019Shines@cs.fsu.edu    virtual bool setRestartAddress() {return true;}
496019Shines@cs.fsu.edu  public:
506019Shines@cs.fsu.edu    Addr BadVAddr;
516019Shines@cs.fsu.edu    Addr EntryHi_Asid;
526019Shines@cs.fsu.edu    Addr EntryHi_VPN2;
536019Shines@cs.fsu.edu    Addr EntryHi_VPN2X;
546019Shines@cs.fsu.edu    Addr Context_BadVPN2;
556019Shines@cs.fsu.edu#if FULL_SYSTEM
566019Shines@cs.fsu.edu  void invoke(ThreadContext * tc) {};
576019Shines@cs.fsu.edu  void setExceptionState(ThreadContext *,uint8_t);
586019Shines@cs.fsu.edu  void setHandlerPC(Addr,ThreadContext *);
596019Shines@cs.fsu.edu#endif
606019Shines@cs.fsu.edu    virtual FaultVect vect() = 0;
616019Shines@cs.fsu.edu    virtual FaultStat & countStat() = 0;
626019Shines@cs.fsu.edu};
636019Shines@cs.fsu.edu
646019Shines@cs.fsu.educlass MachineCheckFault : public ArmFault
656019Shines@cs.fsu.edu{
666019Shines@cs.fsu.edu  private:
676019Shines@cs.fsu.edu    static FaultName _name;
686019Shines@cs.fsu.edu    static FaultVect _vect;
696019Shines@cs.fsu.edu    static FaultStat _count;
706019Shines@cs.fsu.edu  public:
716019Shines@cs.fsu.edu    FaultName name() const {return _name;}
726019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
736019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
746019Shines@cs.fsu.edu    bool isMachineCheckFault() {return true;}
756019Shines@cs.fsu.edu};
766019Shines@cs.fsu.edu
776019Shines@cs.fsu.educlass NonMaskableInterrupt : public ArmFault
786019Shines@cs.fsu.edu{
796019Shines@cs.fsu.edu  private:
806019Shines@cs.fsu.edu    static FaultName _name;
816019Shines@cs.fsu.edu    static FaultVect _vect;
826019Shines@cs.fsu.edu    static FaultStat _count;
836019Shines@cs.fsu.edu  public:
846019Shines@cs.fsu.edu    FaultName name() const {return _name;}
856019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
866019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
876019Shines@cs.fsu.edu    bool isNonMaskableInterrupt() {return true;}
886019Shines@cs.fsu.edu};
896019Shines@cs.fsu.edu
906019Shines@cs.fsu.educlass AlignmentFault : public ArmFault
916019Shines@cs.fsu.edu{
926019Shines@cs.fsu.edu  private:
936019Shines@cs.fsu.edu    static FaultName _name;
946019Shines@cs.fsu.edu    static FaultVect _vect;
956019Shines@cs.fsu.edu    static FaultStat _count;
966019Shines@cs.fsu.edu  public:
976019Shines@cs.fsu.edu    FaultName name() const {return _name;}
986019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
996019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1006019Shines@cs.fsu.edu    bool isAlignmentFault() {return true;}
1016019Shines@cs.fsu.edu};
1026019Shines@cs.fsu.edu
1036019Shines@cs.fsu.educlass AddressErrorFault : public ArmFault
1046019Shines@cs.fsu.edu{
1056019Shines@cs.fsu.edu  private:
1066019Shines@cs.fsu.edu    static FaultName _name;
1076019Shines@cs.fsu.edu    static FaultVect _vect;
1086019Shines@cs.fsu.edu    static FaultStat _count;
1096019Shines@cs.fsu.edu  public:
1106019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1116019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1126019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1136019Shines@cs.fsu.edu#if FULL_SYSTEM
1146019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
1156019Shines@cs.fsu.edu#endif
1166019Shines@cs.fsu.edu
1176019Shines@cs.fsu.edu};
1186019Shines@cs.fsu.educlass StoreAddressErrorFault : public ArmFault
1196019Shines@cs.fsu.edu{
1206019Shines@cs.fsu.edu  private:
1216019Shines@cs.fsu.edu    static FaultName _name;
1226019Shines@cs.fsu.edu    static FaultVect _vect;
1236019Shines@cs.fsu.edu    static FaultStat _count;
1246019Shines@cs.fsu.edu  public:
1256019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1266019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1276019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1286019Shines@cs.fsu.edu#if FULL_SYSTEM
1296019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
1306019Shines@cs.fsu.edu#endif
1316019Shines@cs.fsu.edu
1326019Shines@cs.fsu.edu};
1336019Shines@cs.fsu.educlass UnimplementedOpcodeFault : public ArmFault
1346019Shines@cs.fsu.edu{
1356019Shines@cs.fsu.edu  private:
1366019Shines@cs.fsu.edu    static FaultName _name;
1376019Shines@cs.fsu.edu    static FaultVect _vect;
1386019Shines@cs.fsu.edu    static FaultStat _count;
1396019Shines@cs.fsu.edu  public:
1406019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1416019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1426019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1436019Shines@cs.fsu.edu};
1446019Shines@cs.fsu.edu
1456019Shines@cs.fsu.edu
1466019Shines@cs.fsu.educlass TLBRefillIFetchFault : public ArmFault
1476019Shines@cs.fsu.edu{
1486019Shines@cs.fsu.edu  private:
1496019Shines@cs.fsu.edu    Addr vaddr;
1506019Shines@cs.fsu.edu    static FaultName _name;
1516019Shines@cs.fsu.edu    static FaultVect _vect;
1526019Shines@cs.fsu.edu    static FaultStat _count;
1536019Shines@cs.fsu.edu  public:
1546019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1556019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1566019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1576019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
1586019Shines@cs.fsu.edu};
1596019Shines@cs.fsu.educlass TLBInvalidIFetchFault : public ArmFault
1606019Shines@cs.fsu.edu{
1616019Shines@cs.fsu.edu  private:
1626019Shines@cs.fsu.edu    Addr vaddr;
1636019Shines@cs.fsu.edu    static FaultName _name;
1646019Shines@cs.fsu.edu    static FaultVect _vect;
1656019Shines@cs.fsu.edu    static FaultStat _count;
1666019Shines@cs.fsu.edu  public:
1676019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1686019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1696019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1706019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
1716019Shines@cs.fsu.edu};
1726019Shines@cs.fsu.edu
1736019Shines@cs.fsu.educlass NDtbMissFault : public ArmFault
1746019Shines@cs.fsu.edu{
1756019Shines@cs.fsu.edu  private:
1766019Shines@cs.fsu.edu    static FaultName _name;
1776019Shines@cs.fsu.edu    static FaultVect _vect;
1786019Shines@cs.fsu.edu    static FaultStat _count;
1796019Shines@cs.fsu.edu  public:
1806019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1816019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1826019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1836019Shines@cs.fsu.edu};
1846019Shines@cs.fsu.edu
1856019Shines@cs.fsu.educlass PDtbMissFault : public ArmFault
1866019Shines@cs.fsu.edu{
1876019Shines@cs.fsu.edu  private:
1886019Shines@cs.fsu.edu    static FaultName _name;
1896019Shines@cs.fsu.edu    static FaultVect _vect;
1906019Shines@cs.fsu.edu    static FaultStat _count;
1916019Shines@cs.fsu.edu  public:
1926019Shines@cs.fsu.edu    FaultName name() const {return _name;}
1936019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
1946019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
1956019Shines@cs.fsu.edu};
1966019Shines@cs.fsu.edu
1976019Shines@cs.fsu.educlass DtbPageFault : public ArmFault
1986019Shines@cs.fsu.edu{
1996019Shines@cs.fsu.edu  private:
2006019Shines@cs.fsu.edu    static FaultName _name;
2016019Shines@cs.fsu.edu    static FaultVect _vect;
2026019Shines@cs.fsu.edu    static FaultStat _count;
2036019Shines@cs.fsu.edu  public:
2046019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2056019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2066019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2076019Shines@cs.fsu.edu};
2086019Shines@cs.fsu.edu
2096019Shines@cs.fsu.educlass DtbAcvFault : public ArmFault
2106019Shines@cs.fsu.edu{
2116019Shines@cs.fsu.edu  private:
2126019Shines@cs.fsu.edu    static FaultName _name;
2136019Shines@cs.fsu.edu    static FaultVect _vect;
2146019Shines@cs.fsu.edu    static FaultStat _count;
2156019Shines@cs.fsu.edu  public:
2166019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2176019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2186019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2196019Shines@cs.fsu.edu};
2206019Shines@cs.fsu.edu
2216019Shines@cs.fsu.educlass CacheErrorFault : public ArmFault
2226019Shines@cs.fsu.edu{
2236019Shines@cs.fsu.edu  private:
2246019Shines@cs.fsu.edu    Addr vaddr;
2256019Shines@cs.fsu.edu    static FaultName _name;
2266019Shines@cs.fsu.edu    static FaultVect _vect;
2276019Shines@cs.fsu.edu    static FaultStat _count;
2286019Shines@cs.fsu.edu  public:
2296019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2306019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2316019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2326019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
2336019Shines@cs.fsu.edu};
2346019Shines@cs.fsu.edu
2356019Shines@cs.fsu.edu
2366019Shines@cs.fsu.edu
2376019Shines@cs.fsu.edu
2386019Shines@cs.fsu.edustatic inline Fault genMachineCheckFault()
2396019Shines@cs.fsu.edu{
2406019Shines@cs.fsu.edu    return new MachineCheckFault;
2416019Shines@cs.fsu.edu}
2426019Shines@cs.fsu.edu
2436019Shines@cs.fsu.edustatic inline Fault genAlignmentFault()
2446019Shines@cs.fsu.edu{
2456019Shines@cs.fsu.edu    return new AlignmentFault;
2466019Shines@cs.fsu.edu}
2476019Shines@cs.fsu.edu
2486019Shines@cs.fsu.educlass ResetFault : public ArmFault
2496019Shines@cs.fsu.edu{
2506019Shines@cs.fsu.edu  private:
2516019Shines@cs.fsu.edu    static FaultName _name;
2526019Shines@cs.fsu.edu    static FaultVect _vect;
2536019Shines@cs.fsu.edu    static FaultStat _count;
2546019Shines@cs.fsu.edu  public:
2556019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2566019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2576019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2586019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
2596019Shines@cs.fsu.edu
2606019Shines@cs.fsu.edu};
2616019Shines@cs.fsu.educlass SystemCallFault : public ArmFault
2626019Shines@cs.fsu.edu{
2636019Shines@cs.fsu.edu  private:
2646019Shines@cs.fsu.edu    static FaultName _name;
2656019Shines@cs.fsu.edu    static FaultVect _vect;
2666019Shines@cs.fsu.edu    static FaultStat _count;
2676019Shines@cs.fsu.edu  public:
2686019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2696019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2706019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2716019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
2726019Shines@cs.fsu.edu};
2736019Shines@cs.fsu.edu
2746019Shines@cs.fsu.educlass SoftResetFault : public ArmFault
2756019Shines@cs.fsu.edu{
2766019Shines@cs.fsu.edu  private:
2776019Shines@cs.fsu.edu    static FaultName _name;
2786019Shines@cs.fsu.edu    static FaultVect _vect;
2796019Shines@cs.fsu.edu    static FaultStat _count;
2806019Shines@cs.fsu.edu  public:
2816019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2826019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2836019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2846019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
2856019Shines@cs.fsu.edu};
2866019Shines@cs.fsu.educlass DebugSingleStep : public ArmFault
2876019Shines@cs.fsu.edu{
2886019Shines@cs.fsu.edu  private:
2896019Shines@cs.fsu.edu    static FaultName _name;
2906019Shines@cs.fsu.edu    static FaultVect _vect;
2916019Shines@cs.fsu.edu    static FaultStat _count;
2926019Shines@cs.fsu.edu  public:
2936019Shines@cs.fsu.edu    FaultName name() const {return _name;}
2946019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
2956019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
2966019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
2976019Shines@cs.fsu.edu};
2986019Shines@cs.fsu.educlass DebugInterrupt : public ArmFault
2996019Shines@cs.fsu.edu{
3006019Shines@cs.fsu.edu  private:
3016019Shines@cs.fsu.edu    static FaultName _name;
3026019Shines@cs.fsu.edu    static FaultVect _vect;
3036019Shines@cs.fsu.edu    static FaultStat _count;
3046019Shines@cs.fsu.edu  public:
3056019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3066019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3076019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3086019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3096019Shines@cs.fsu.edu};
3106019Shines@cs.fsu.edu
3116019Shines@cs.fsu.educlass CoprocessorUnusableFault : public ArmFault
3126019Shines@cs.fsu.edu{
3136019Shines@cs.fsu.edu  private:
3146019Shines@cs.fsu.edu    static FaultName _name;
3156019Shines@cs.fsu.edu    static FaultVect _vect;
3166019Shines@cs.fsu.edu    static FaultStat _count;
3176019Shines@cs.fsu.edu    int coProcID;
3186019Shines@cs.fsu.edu  public:
3196019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3206019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3216019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3226019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3236019Shines@cs.fsu.edu    CoprocessorUnusableFault(int _procid){ coProcID = _procid;}
3246019Shines@cs.fsu.edu};
3256019Shines@cs.fsu.edu
3266019Shines@cs.fsu.educlass ReservedInstructionFault : public ArmFault
3276019Shines@cs.fsu.edu{
3286019Shines@cs.fsu.edu  private:
3296019Shines@cs.fsu.edu    static FaultName _name;
3306019Shines@cs.fsu.edu    static FaultVect _vect;
3316019Shines@cs.fsu.edu    static FaultStat _count;
3326019Shines@cs.fsu.edu  public:
3336019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3346019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3356019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3366019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3376019Shines@cs.fsu.edu};
3386019Shines@cs.fsu.edu
3396019Shines@cs.fsu.educlass ThreadFault : public ArmFault
3406019Shines@cs.fsu.edu{
3416019Shines@cs.fsu.edu  private:
3426019Shines@cs.fsu.edu    static FaultName _name;
3436019Shines@cs.fsu.edu    static FaultVect _vect;
3446019Shines@cs.fsu.edu    static FaultStat _count;
3456019Shines@cs.fsu.edu  public:
3466019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3476019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3486019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3496019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3506019Shines@cs.fsu.edu};
3516019Shines@cs.fsu.edu
3526019Shines@cs.fsu.edu
3536019Shines@cs.fsu.educlass ArithmeticFault : public ArmFault
3546019Shines@cs.fsu.edu{
3556019Shines@cs.fsu.edu  protected:
3566019Shines@cs.fsu.edu    bool skipFaultingInstruction() {return true;}
3576019Shines@cs.fsu.edu  private:
3586019Shines@cs.fsu.edu    static FaultName _name;
3596019Shines@cs.fsu.edu    static FaultVect _vect;
3606019Shines@cs.fsu.edu    static FaultStat _count;
3616019Shines@cs.fsu.edu  public:
3626019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3636019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3646019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3656019Shines@cs.fsu.edu#if FULL_SYSTEM
3666019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3676019Shines@cs.fsu.edu#endif
3686019Shines@cs.fsu.edu};
3696019Shines@cs.fsu.edu
3706019Shines@cs.fsu.educlass InterruptFault : public ArmFault
3716019Shines@cs.fsu.edu{
3726019Shines@cs.fsu.edu  protected:
3736019Shines@cs.fsu.edu    bool setRestartAddress() {return false;}
3746019Shines@cs.fsu.edu  private:
3756019Shines@cs.fsu.edu    static FaultName _name;
3766019Shines@cs.fsu.edu    static FaultVect _vect;
3776019Shines@cs.fsu.edu    static FaultStat _count;
3786019Shines@cs.fsu.edu  public:
3796019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3806019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3816019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
3826019Shines@cs.fsu.edu
3836019Shines@cs.fsu.edu#if FULL_SYSTEM
3846019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
3856019Shines@cs.fsu.edu#endif
3866019Shines@cs.fsu.edu
3876019Shines@cs.fsu.edu    //void invoke(ThreadContext * tc);
3886019Shines@cs.fsu.edu};
3896019Shines@cs.fsu.edu
3906019Shines@cs.fsu.educlass TrapFault : public ArmFault
3916019Shines@cs.fsu.edu{
3926019Shines@cs.fsu.edu  private:
3936019Shines@cs.fsu.edu    static FaultName _name;
3946019Shines@cs.fsu.edu    static FaultVect _vect;
3956019Shines@cs.fsu.edu    static FaultStat _count;
3966019Shines@cs.fsu.edu  public:
3976019Shines@cs.fsu.edu    FaultName name() const {return _name;}
3986019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
3996019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4006019Shines@cs.fsu.edu#if FULL_SYSTEM
4016019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4026019Shines@cs.fsu.edu#endif
4036019Shines@cs.fsu.edu};
4046019Shines@cs.fsu.edu
4056019Shines@cs.fsu.educlass BreakpointFault : public ArmFault
4066019Shines@cs.fsu.edu{
4076019Shines@cs.fsu.edu  private:
4086019Shines@cs.fsu.edu    static FaultName _name;
4096019Shines@cs.fsu.edu    static FaultVect _vect;
4106019Shines@cs.fsu.edu    static FaultStat _count;
4116019Shines@cs.fsu.edu  public:
4126019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4136019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4146019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4156019Shines@cs.fsu.edu#if FULL_SYSTEM
4166019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4176019Shines@cs.fsu.edu#endif
4186019Shines@cs.fsu.edu};
4196019Shines@cs.fsu.edu
4206019Shines@cs.fsu.educlass ItbRefillFault : public ArmFault
4216019Shines@cs.fsu.edu{
4226019Shines@cs.fsu.edu  private:
4236019Shines@cs.fsu.edu    static FaultName _name;
4246019Shines@cs.fsu.edu    static FaultVect _vect;
4256019Shines@cs.fsu.edu    static FaultStat _count;
4266019Shines@cs.fsu.edu  public:
4276019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4286019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4296019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4306019Shines@cs.fsu.edu#if FULL_SYSTEM
4316019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4326019Shines@cs.fsu.edu#endif
4336019Shines@cs.fsu.edu};
4346019Shines@cs.fsu.educlass DtbRefillFault : public ArmFault
4356019Shines@cs.fsu.edu{
4366019Shines@cs.fsu.edu  private:
4376019Shines@cs.fsu.edu    static FaultName _name;
4386019Shines@cs.fsu.edu    static FaultVect _vect;
4396019Shines@cs.fsu.edu    static FaultStat _count;
4406019Shines@cs.fsu.edu  public:
4416019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4426019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4436019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4446019Shines@cs.fsu.edu#if FULL_SYSTEM
4456019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4466019Shines@cs.fsu.edu#endif
4476019Shines@cs.fsu.edu};
4486019Shines@cs.fsu.edu
4496019Shines@cs.fsu.educlass ItbPageFault : public ArmFault
4506019Shines@cs.fsu.edu{
4516019Shines@cs.fsu.edu  private:
4526019Shines@cs.fsu.edu    static FaultName _name;
4536019Shines@cs.fsu.edu    static FaultVect _vect;
4546019Shines@cs.fsu.edu    static FaultStat _count;
4556019Shines@cs.fsu.edu  public:
4566019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4576019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4586019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4596019Shines@cs.fsu.edu#if FULL_SYSTEM
4606019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4616019Shines@cs.fsu.edu#endif
4626019Shines@cs.fsu.edu};
4636019Shines@cs.fsu.edu
4646019Shines@cs.fsu.educlass ItbInvalidFault : public ArmFault
4656019Shines@cs.fsu.edu{
4666019Shines@cs.fsu.edu  private:
4676019Shines@cs.fsu.edu    static FaultName _name;
4686019Shines@cs.fsu.edu    static FaultVect _vect;
4696019Shines@cs.fsu.edu    static FaultStat _count;
4706019Shines@cs.fsu.edu  public:
4716019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4726019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4736019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4746019Shines@cs.fsu.edu#if FULL_SYSTEM
4756019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4766019Shines@cs.fsu.edu#endif
4776019Shines@cs.fsu.edu
4786019Shines@cs.fsu.edu};
4796019Shines@cs.fsu.educlass TLBModifiedFault : public ArmFault
4806019Shines@cs.fsu.edu{
4816019Shines@cs.fsu.edu  private:
4826019Shines@cs.fsu.edu    static FaultName _name;
4836019Shines@cs.fsu.edu    static FaultVect _vect;
4846019Shines@cs.fsu.edu    static FaultStat _count;
4856019Shines@cs.fsu.edu  public:
4866019Shines@cs.fsu.edu    FaultName name() const {return _name;}
4876019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
4886019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
4896019Shines@cs.fsu.edu#if FULL_SYSTEM
4906019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
4916019Shines@cs.fsu.edu#endif
4926019Shines@cs.fsu.edu
4936019Shines@cs.fsu.edu};
4946019Shines@cs.fsu.edu
4956019Shines@cs.fsu.educlass DtbInvalidFault : public ArmFault
4966019Shines@cs.fsu.edu{
4976019Shines@cs.fsu.edu  private:
4986019Shines@cs.fsu.edu    static FaultName _name;
4996019Shines@cs.fsu.edu    static FaultVect _vect;
5006019Shines@cs.fsu.edu    static FaultStat _count;
5016019Shines@cs.fsu.edu  public:
5026019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5036019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5046019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5056019Shines@cs.fsu.edu#if FULL_SYSTEM
5066019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
5076019Shines@cs.fsu.edu#endif
5086019Shines@cs.fsu.edu
5096019Shines@cs.fsu.edu};
5106019Shines@cs.fsu.edu
5116019Shines@cs.fsu.educlass FloatEnableFault : public ArmFault
5126019Shines@cs.fsu.edu{
5136019Shines@cs.fsu.edu  private:
5146019Shines@cs.fsu.edu    static FaultName _name;
5156019Shines@cs.fsu.edu    static FaultVect _vect;
5166019Shines@cs.fsu.edu    static FaultStat _count;
5176019Shines@cs.fsu.edu  public:
5186019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5196019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5206019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5216019Shines@cs.fsu.edu};
5226019Shines@cs.fsu.edu
5236019Shines@cs.fsu.educlass ItbMissFault : public ArmFault
5246019Shines@cs.fsu.edu{
5256019Shines@cs.fsu.edu  private:
5266019Shines@cs.fsu.edu    static FaultName _name;
5276019Shines@cs.fsu.edu    static FaultVect _vect;
5286019Shines@cs.fsu.edu    static FaultStat _count;
5296019Shines@cs.fsu.edu  public:
5306019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5316019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5326019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5336019Shines@cs.fsu.edu};
5346019Shines@cs.fsu.edu
5356019Shines@cs.fsu.educlass ItbAcvFault : public ArmFault
5366019Shines@cs.fsu.edu{
5376019Shines@cs.fsu.edu  private:
5386019Shines@cs.fsu.edu    static FaultName _name;
5396019Shines@cs.fsu.edu    static FaultVect _vect;
5406019Shines@cs.fsu.edu    static FaultStat _count;
5416019Shines@cs.fsu.edu  public:
5426019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5436019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5446019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5456019Shines@cs.fsu.edu};
5466019Shines@cs.fsu.edu
5476019Shines@cs.fsu.educlass IntegerOverflowFault : public ArmFault
5486019Shines@cs.fsu.edu{
5496019Shines@cs.fsu.edu  private:
5506019Shines@cs.fsu.edu    static FaultName _name;
5516019Shines@cs.fsu.edu    static FaultVect _vect;
5526019Shines@cs.fsu.edu    static FaultStat _count;
5536019Shines@cs.fsu.edu  public:
5546019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5556019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5566019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5576019Shines@cs.fsu.edu};
5586019Shines@cs.fsu.edu
5596019Shines@cs.fsu.educlass DspStateDisabledFault : public ArmFault
5606019Shines@cs.fsu.edu{
5616019Shines@cs.fsu.edu  private:
5626019Shines@cs.fsu.edu    static FaultName _name;
5636019Shines@cs.fsu.edu    static FaultVect _vect;
5646019Shines@cs.fsu.edu    static FaultStat _count;
5656019Shines@cs.fsu.edu  public:
5666019Shines@cs.fsu.edu    FaultName name() const {return _name;}
5676019Shines@cs.fsu.edu    FaultVect vect() {return _vect;}
5686019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
5696019Shines@cs.fsu.edu    void invoke(ThreadContext * tc);
5706019Shines@cs.fsu.edu};
5716019Shines@cs.fsu.edu
5726019Shines@cs.fsu.edu} // ArmISA namespace
5736019Shines@cs.fsu.edu
5746019Shines@cs.fsu.edu#endif // __ARM_FAULTS_HH__
575