faults.hh revision 2523
17860SN/A/*
27860SN/A * Copyright (c) 2003-2005 The Regents of The University of Michigan
37860SN/A * All rights reserved.
49988Snilay@cs.wisc.edu *
58825Snilay@cs.wisc.edu * Redistribution and use in source and binary forms, with or without
69988Snilay@cs.wisc.edu * modification, are permitted provided that the following conditions are
77935SN/A * met: redistributions of source code must retain the above copyright
87935SN/A * notice, this list of conditions and the following disclaimer;
97935SN/A * redistributions in binary form must reproduce the above copyright
107860SN/A * notice, this list of conditions and the following disclaimer in the
117860SN/A * documentation and/or other materials provided with the distribution;
127860SN/A * neither the name of the copyright holders nor the names of its
1310315Snilay@cs.wisc.edu * contributors may be used to endorse or promote products derived from
148825Snilay@cs.wisc.edu * this software without specific prior written permission.
159885Sstever@gmail.com *
169885Sstever@gmail.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
179988Snilay@cs.wisc.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
188825Snilay@cs.wisc.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
198825Snilay@cs.wisc.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2010315Snilay@cs.wisc.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
218825Snilay@cs.wisc.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2210038SAli.Saidi@ARM.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
239449SAli.Saidi@ARM.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
249449SAli.Saidi@ARM.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258464SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2610798Ssteve.reinhardt@amd.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278660SN/A */
288825Snilay@cs.wisc.edu
298825Snilay@cs.wisc.edu#ifndef __ALPHA_FAULTS_HH__
307935SN/A#define __ALPHA_FAULTS_HH__
317935SN/A
327935SN/A#include "sim/faults.hh"
337935SN/A
347935SN/A// The design of the "name" and "vect" functions is in sim/faults.hh
357935SN/A
367935SN/Anamespace SparcISA
378893Ssaidi@eecs.umich.edu{
387860SN/A
399885Sstever@gmail.comtypedef const uint32_t TrapType;
409885Sstever@gmail.comtypedef const uint32_t FaultPriority;
419885Sstever@gmail.com
4210315Snilay@cs.wisc.educlass SparcFault : public FaultBase
439988Snilay@cs.wisc.edu{
4410315Snilay@cs.wisc.edu  public:
459885Sstever@gmail.com#if FULL_SYSTEM
469885Sstever@gmail.com    void invoke(ExecContext * xc);
477860SN/A#endif
487860SN/A    virtual TrapType trapType() = 0;
4910038SAli.Saidi@ARM.com    virtual FaultPriority priority() = 0;
507860SN/A    virtual FaultStat & countStat() = 0;
5110451Snilay@cs.wisc.edu};
528210SN/A
5310451Snilay@cs.wisc.educlass InternalProcessorError : public SparcFault
5410451Snilay@cs.wisc.edu{
557860SN/A  private:
567860SN/A    static FaultName _name;
577860SN/A    static TrapType _trapType;
589481Snilay@cs.wisc.edu    static FaultPriority _priority;
597860SN/A    static FaultStat _count;
607860SN/A  public:
619885Sstever@gmail.com    FaultName name() {return _name;}
627860SN/A    TrapType trapType() {return _trapType;}
637860SN/A    FaultPriority priority() {return _priority;}
647860SN/A    FaultStat & countStat() {return _count;}
657860SN/A    bool isMachineCheckFault() {return true;}
667860SN/A};
677860SN/A
687860SN/Aclass MemAddressNotAligned : public SparcFault
6910451Snilay@cs.wisc.edu{
7010451Snilay@cs.wisc.edu  private:
7110451Snilay@cs.wisc.edu    static FaultName _name;
727860SN/A    static TrapType _trapType;
738825Snilay@cs.wisc.edu    static FaultPriority _priority;
747860SN/A    static FaultStat _count;
7510038SAli.Saidi@ARM.com  public:
767860SN/A    FaultName name() {return _name;}
779988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
7810451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
7910451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
8010451Snilay@cs.wisc.edu    bool isAlignmentFault() {return true;}
817860SN/A};
8210451Snilay@cs.wisc.edu
837860SN/Astatic inline Fault genMachineCheckFault()
847860SN/A{
857860SN/A    return new InternalProcessorError;
867860SN/A}
877860SN/A
887860SN/Astatic inline Fault genAlignmentFault()
897860SN/A{
907860SN/A    return new MemAddressNotAligned;
918825Snilay@cs.wisc.edu}
929449SAli.Saidi@ARM.com
937860SN/Aclass PowerOnReset : public SparcFault
947860SN/A{
9510038SAli.Saidi@ARM.com  private:
967860SN/A    static FaultName _name;
977860SN/A    static TrapType _trapType;
987860SN/A    static FaultPriority _priority;
997860SN/A    static FaultStat _count;
1007860SN/A  public:
1018825Snilay@cs.wisc.edu    FaultName name() {return _name;}
10210451Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
10310451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
10410451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
10510451Snilay@cs.wisc.edu};
10610451Snilay@cs.wisc.edu
1077860SN/Aclass WatchDogReset : public SparcFault
1087860SN/A{
1098825Snilay@cs.wisc.edu  private:
1107860SN/A    static FaultName _name;
1117860SN/A    static TrapType _trapType;
1127860SN/A    static FaultPriority _priority;
11310451Snilay@cs.wisc.edu    static FaultStat _count;
1147860SN/A  public:
11510451Snilay@cs.wisc.edu    FaultName name() {return _name;}
1169885Sstever@gmail.com    TrapType trapType() {return _trapType;}
1177860SN/A    FaultPriority priority() {return _priority;}
1187860SN/A    FaultStat & countStat() {return _count;}
1197860SN/A};
1207860SN/A
1217860SN/Aclass ExternallyInitiatedReset : public SparcFault
1227860SN/A{
1237860SN/A  private:
1247860SN/A    static FaultName _name;
1257860SN/A    static TrapType _trapType;
12610242Ssteve.reinhardt@amd.com    static FaultPriority _priority;
1277860SN/A    static FaultStat _count;
1288521SN/A  public:
1299449SAli.Saidi@ARM.com    FaultName name() {return _name;}
1307860SN/A    TrapType trapType() {return _trapType;}
1317860SN/A    FaultPriority priority() {return _priority;}
1327860SN/A    FaultStat & countStat() {return _count;}
1337860SN/A};
1347860SN/A
1357860SN/Aclass SoftwareInitiatedReset : public SparcFault
1367860SN/A{
1377860SN/A  private:
1389481Snilay@cs.wisc.edu    static FaultName _name;
13910798Ssteve.reinhardt@amd.com    static TrapType _trapType;
14010451Snilay@cs.wisc.edu    static FaultPriority _priority;
14110451Snilay@cs.wisc.edu    static FaultStat _count;
1429481Snilay@cs.wisc.edu  public:
1439481Snilay@cs.wisc.edu    FaultName name() {return _name;}
1449481Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
1459988Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
1469481Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
1479481Snilay@cs.wisc.edu};
1489481Snilay@cs.wisc.edu
1499481Snilay@cs.wisc.educlass REDStateException : public SparcFault
1509481Snilay@cs.wisc.edu{
1517860SN/A  private:
1527860SN/A    static FaultName _name;
1539885Sstever@gmail.com    static TrapType _trapType;
1548893Ssaidi@eecs.umich.edu    static FaultPriority _priority;
1557860SN/A    static FaultStat _count;
1569885Sstever@gmail.com  public:
15710636Snilay@cs.wisc.edu    FaultName name() {return _name;}
1589988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
1597860SN/A    FaultPriority priority() {return _priority;}
1609348SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
16110900Snilay@cs.wisc.edu};
1627860SN/A
16310451Snilay@cs.wisc.educlass InstructionAccessException : public SparcFault
1647860SN/A{
1658835SAli.Saidi@ARM.com  private:
1669348SAli.Saidi@ARM.com    static FaultName _name;
16710036SAli.Saidi@ARM.com    static TrapType _trapType;
16810451Snilay@cs.wisc.edu    static FaultPriority _priority;
1698835SAli.Saidi@ARM.com    static FaultStat _count;
1709885Sstever@gmail.com  public:
17110451Snilay@cs.wisc.edu    FaultName name() {return _name;}
17210451Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
1737860SN/A    FaultPriority priority() {return _priority;}
1748893Ssaidi@eecs.umich.edu    FaultStat & countStat() {return _count;}
1757860SN/A};
1769885Sstever@gmail.com
1779885Sstever@gmail.comclass InstructionAccessMMUMiss : public SparcFault
1789885Sstever@gmail.com{
1799885Sstever@gmail.com  private:
1809885Sstever@gmail.com    static FaultName _name;
1819988Snilay@cs.wisc.edu    static TrapType _trapType;
1829885Sstever@gmail.com    static FaultPriority _priority;
18310036SAli.Saidi@ARM.com    static FaultStat _count;
18410451Snilay@cs.wisc.edu  public:
1859885Sstever@gmail.com    FaultName name() {return _name;}
18610038SAli.Saidi@ARM.com    TrapType trapType() {return _trapType;}
18710038SAli.Saidi@ARM.com    FaultPriority priority() {return _priority;}
18810038SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
18910038SAli.Saidi@ARM.com};
19010038SAli.Saidi@ARM.com
19110798Ssteve.reinhardt@amd.comclass InstructionAccessError : public SparcFault
19210038SAli.Saidi@ARM.com{
19310038SAli.Saidi@ARM.com  private:
19410038SAli.Saidi@ARM.com    static FaultName _name;
19510038SAli.Saidi@ARM.com    static TrapType _trapType;
19610038SAli.Saidi@ARM.com    static FaultPriority _priority;
19710038SAli.Saidi@ARM.com    static FaultStat _count;
19810038SAli.Saidi@ARM.com  public:
19910038SAli.Saidi@ARM.com    FaultName name() {return _name;}
20010038SAli.Saidi@ARM.com    TrapType trapType() {return _trapType;}
20110038SAli.Saidi@ARM.com    FaultPriority priority() {return _priority;}
20210038SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
20310038SAli.Saidi@ARM.com};
20410038SAli.Saidi@ARM.com
20510038SAli.Saidi@ARM.comclass IllegalInstruction : public SparcFault
20610038SAli.Saidi@ARM.com{
20710038SAli.Saidi@ARM.com  private:
20810038SAli.Saidi@ARM.com    static FaultName _name;
20910038SAli.Saidi@ARM.com    static TrapType _trapType;
2107860SN/A    static FaultPriority _priority;
2117860SN/A    static FaultStat _count;
2128825Snilay@cs.wisc.edu  public:
2139988Snilay@cs.wisc.edu    FaultName name() {return _name;}
21410038SAli.Saidi@ARM.com    TrapType trapType() {return _trapType;}
2157860SN/A    FaultPriority priority() {return _priority;}
2168825Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
2178825Snilay@cs.wisc.edu};
2188825Snilay@cs.wisc.edu
2198825Snilay@cs.wisc.educlass PrivilegedOpcode : public SparcFault
2209885Sstever@gmail.com{
2219988Snilay@cs.wisc.edu  private:
22210038SAli.Saidi@ARM.com    static FaultName _name;
2239265SAli.Saidi@ARM.com    static TrapType _trapType;
2248825Snilay@cs.wisc.edu    static FaultPriority _priority;
2258893Ssaidi@eecs.umich.edu    static FaultStat _count;
2267860SN/A  public:
2277860SN/A    FaultName name() {return _name;}
2287860SN/A    TrapType trapType() {return _trapType;}
22910451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
23010451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
2319988Snilay@cs.wisc.edu};
2327860SN/A
2337860SN/Aclass UnimplementedLDD : public SparcFault
2347860SN/A{
2357860SN/A  private:
23610451Snilay@cs.wisc.edu    static FaultName _name;
2379988Snilay@cs.wisc.edu    static TrapType _trapType;
2387860SN/A    static FaultPriority _priority;
2397860SN/A    static FaultStat _count;
2407860SN/A  public:
2417860SN/A    FaultName name() {return _name;}
2429988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
2437860SN/A    FaultPriority priority() {return _priority;}
2447860SN/A    FaultStat & countStat() {return _count;}
24510900Snilay@cs.wisc.edu};
2467860SN/A
2477860SN/Aclass UnimplementedSTD : public SparcFault
2487860SN/A{
24910451Snilay@cs.wisc.edu  private:
25010451Snilay@cs.wisc.edu    static FaultName _name;
2519988Snilay@cs.wisc.edu    static TrapType _trapType;
25210451Snilay@cs.wisc.edu    static FaultPriority _priority;
2537860SN/A    static FaultStat _count;
2547860SN/A  public:
2557860SN/A    FaultName name() {return _name;}
2569988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
2577860SN/A    FaultPriority priority() {return _priority;}
2587860SN/A    FaultStat & countStat() {return _count;}
25910900Snilay@cs.wisc.edu};
2607860SN/A
2617860SN/Aclass FpDisabled : public SparcFault
2627860SN/A{
2639988Snilay@cs.wisc.edu  private:
2647860SN/A    static FaultName _name;
26510451Snilay@cs.wisc.edu    static TrapType _trapType;
26610900Snilay@cs.wisc.edu    static FaultPriority _priority;
26710451Snilay@cs.wisc.edu    static FaultStat _count;
26810451Snilay@cs.wisc.edu  public:
26910451Snilay@cs.wisc.edu    FaultName name() {return _name;}
27010451Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
27110451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
27210451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
27310900Snilay@cs.wisc.edu};
2747860SN/A
2757860SN/Aclass FpExceptionIEEE754 : public SparcFault
2767860SN/A{
27710451Snilay@cs.wisc.edu  private:
27810451Snilay@cs.wisc.edu    static FaultName _name;
2799988Snilay@cs.wisc.edu    static TrapType _trapType;
28010451Snilay@cs.wisc.edu    static FaultPriority _priority;
2817860SN/A    static FaultStat _count;
28210451Snilay@cs.wisc.edu  public:
2837860SN/A    FaultName name() {return _name;}
2849988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
28510451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
2867860SN/A    FaultStat & countStat() {return _count;}
28710900Snilay@cs.wisc.edu};
2887860SN/A
2897860SN/Aclass FpExceptionOther : public SparcFault
2907860SN/A{
29110451Snilay@cs.wisc.edu  private:
29210451Snilay@cs.wisc.edu    static FaultName _name;
2939988Snilay@cs.wisc.edu    static TrapType _trapType;
29410451Snilay@cs.wisc.edu    static FaultPriority _priority;
2957860SN/A    static FaultStat _count;
29610451Snilay@cs.wisc.edu  public:
2977860SN/A    FaultName name() {return _name;}
2989988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
29910451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
30010451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
30110900Snilay@cs.wisc.edu};
3027860SN/A
3037860SN/Aclass TagOverflow : public SparcFault
3047860SN/A{
30510451Snilay@cs.wisc.edu  private:
30610451Snilay@cs.wisc.edu    static FaultName _name;
3079988Snilay@cs.wisc.edu    static TrapType _trapType;
30810451Snilay@cs.wisc.edu    static FaultPriority _priority;
3097860SN/A    static FaultStat _count;
31010451Snilay@cs.wisc.edu  public:
3117860SN/A    FaultName name() {return _name;}
3129988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3137860SN/A    FaultPriority priority() {return _priority;}
31410451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
31510900Snilay@cs.wisc.edu};
3167860SN/A
31710451Snilay@cs.wisc.educlass DivisionByZero : public SparcFault
3187860SN/A{
3199988Snilay@cs.wisc.edu  private:
3207860SN/A    static FaultName _name;
32110451Snilay@cs.wisc.edu    static TrapType _trapType;
32210900Snilay@cs.wisc.edu    static FaultPriority _priority;
3237860SN/A    static FaultStat _count;
32410451Snilay@cs.wisc.edu  public:
3257860SN/A    FaultName name() {return _name;}
3269988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3277860SN/A    FaultPriority priority() {return _priority;}
32810451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
32910900Snilay@cs.wisc.edu};
3307860SN/A
33110451Snilay@cs.wisc.educlass DataAccessException : public SparcFault
3327860SN/A{
3339988Snilay@cs.wisc.edu  private:
3347860SN/A    static FaultName _name;
33510451Snilay@cs.wisc.edu    static TrapType _trapType;
33610900Snilay@cs.wisc.edu    static FaultPriority _priority;
3377860SN/A    static FaultStat _count;
33810451Snilay@cs.wisc.edu  public:
3397860SN/A    FaultName name() {return _name;}
3409988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3417860SN/A    FaultPriority priority() {return _priority;}
34210451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
34310900Snilay@cs.wisc.edu};
3447860SN/A
34510451Snilay@cs.wisc.educlass DataAccessMMUMiss : public SparcFault
3467860SN/A{
3479988Snilay@cs.wisc.edu  private:
3487860SN/A    static FaultName _name;
34910451Snilay@cs.wisc.edu    static TrapType _trapType;
35010900Snilay@cs.wisc.edu    static FaultPriority _priority;
3517860SN/A    static FaultStat _count;
35210451Snilay@cs.wisc.edu  public:
3537860SN/A    FaultName name() {return _name;}
3549988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3557860SN/A    FaultPriority priority() {return _priority;}
35610451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
35710900Snilay@cs.wisc.edu};
3587860SN/A
35910451Snilay@cs.wisc.educlass DataAccessError : public SparcFault
3607860SN/A{
3619988Snilay@cs.wisc.edu  private:
3627860SN/A    static FaultName _name;
36310451Snilay@cs.wisc.edu    static TrapType _trapType;
36410900Snilay@cs.wisc.edu    static FaultPriority _priority;
3657860SN/A    static FaultStat _count;
36610451Snilay@cs.wisc.edu  public:
3677860SN/A    FaultName name() {return _name;}
3689988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3697860SN/A    FaultPriority priority() {return _priority;}
37010451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
37110900Snilay@cs.wisc.edu};
3727860SN/A
37310451Snilay@cs.wisc.educlass DataAccessProtection : public SparcFault
3747860SN/A{
3759988Snilay@cs.wisc.edu  private:
3767860SN/A    static FaultName _name;
37710451Snilay@cs.wisc.edu    static TrapType _trapType;
37810900Snilay@cs.wisc.edu    static FaultPriority _priority;
3797860SN/A    static FaultStat _count;
38010451Snilay@cs.wisc.edu  public:
3817860SN/A    FaultName name() {return _name;}
3829988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3837860SN/A    FaultPriority priority() {return _priority;}
38410451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
38510900Snilay@cs.wisc.edu};
3867860SN/A
38710451Snilay@cs.wisc.educlass LDDFMemAddressNotAligned : public SparcFault
3887860SN/A{
3899988Snilay@cs.wisc.edu  private:
3907860SN/A    static FaultName _name;
39110451Snilay@cs.wisc.edu    static TrapType _trapType;
39210900Snilay@cs.wisc.edu    static FaultPriority _priority;
3937860SN/A    static FaultStat _count;
39410451Snilay@cs.wisc.edu  public:
3957860SN/A    FaultName name() {return _name;}
3969988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
3977860SN/A    FaultPriority priority() {return _priority;}
39810451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
39910900Snilay@cs.wisc.edu};
4007860SN/A
40110451Snilay@cs.wisc.educlass STDFMemAddressNotAligned : public SparcFault
4027860SN/A{
4039988Snilay@cs.wisc.edu  private:
4047860SN/A    static FaultName _name;
40510451Snilay@cs.wisc.edu    static TrapType _trapType;
40610900Snilay@cs.wisc.edu    static FaultPriority _priority;
4077860SN/A    static FaultStat _count;
40810451Snilay@cs.wisc.edu  public:
4097860SN/A    FaultName name() {return _name;}
4109988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
4117860SN/A    FaultPriority priority() {return _priority;}
41210451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
41310900Snilay@cs.wisc.edu};
4147860SN/A
41510451Snilay@cs.wisc.educlass PrivilegedAction : public SparcFault
4167860SN/A{
4179988Snilay@cs.wisc.edu  private:
4187860SN/A    static FaultName _name;
41910451Snilay@cs.wisc.edu    static TrapType _trapType;
42010900Snilay@cs.wisc.edu    static FaultPriority _priority;
4217860SN/A    static FaultStat _count;
42210451Snilay@cs.wisc.edu  public:
4237860SN/A    FaultName name() {return _name;}
4249988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
4257860SN/A    FaultPriority priority() {return _priority;}
42610451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
42710900Snilay@cs.wisc.edu};
4287860SN/A
42910451Snilay@cs.wisc.educlass LDQFMemAddressNotAligned : public SparcFault
4307860SN/A{
4319988Snilay@cs.wisc.edu  private:
4327860SN/A    static FaultName _name;
43310451Snilay@cs.wisc.edu    static TrapType _trapType;
43410900Snilay@cs.wisc.edu    static FaultPriority _priority;
4357860SN/A    static FaultStat _count;
43610451Snilay@cs.wisc.edu  public:
4377860SN/A    FaultName name() {return _name;}
4389988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
4397860SN/A    FaultPriority priority() {return _priority;}
4407860SN/A    FaultStat & countStat() {return _count;}
44110900Snilay@cs.wisc.edu};
4427860SN/A
44310451Snilay@cs.wisc.educlass STQFMemAddressNotAligned : public SparcFault
4447860SN/A{
4459988Snilay@cs.wisc.edu  private:
4467860SN/A    static FaultName _name;
44710451Snilay@cs.wisc.edu    static TrapType _trapType;
44810900Snilay@cs.wisc.edu    static FaultPriority _priority;
4497860SN/A    static FaultStat _count;
45010451Snilay@cs.wisc.edu  public:
4517860SN/A    FaultName name() {return _name;}
4529988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
45310451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
45410451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
45510900Snilay@cs.wisc.edu};
4567860SN/A
45710451Snilay@cs.wisc.educlass AsyncDataError : public SparcFault
4587860SN/A{
4599988Snilay@cs.wisc.edu  private:
46010451Snilay@cs.wisc.edu    static FaultName _name;
46110451Snilay@cs.wisc.edu    static TrapType _trapType;
46210900Snilay@cs.wisc.edu    static FaultPriority _priority;
4637860SN/A    static FaultStat _count;
46410451Snilay@cs.wisc.edu  public:
4657860SN/A    FaultName name() {return _name;}
4669988Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
46710451Snilay@cs.wisc.edu    FaultPriority priority() {return _priority;}
46810451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
46910900Snilay@cs.wisc.edu};
4707860SN/A
47110451Snilay@cs.wisc.educlass EnumeratedFault : public SparcFault
4727860SN/A{
4739988Snilay@cs.wisc.edu  protected:
47410451Snilay@cs.wisc.edu    uint32_t _n;
47510451Snilay@cs.wisc.edu    virtual TrapType baseTrapType() = 0;
47610900Snilay@cs.wisc.edu  public:
47710451Snilay@cs.wisc.edu    EnumeratedFault(uint32_t n) : SparcFault() {_n = n;}
47810451Snilay@cs.wisc.edu    TrapType trapType() {return baseTrapType() + _n;}
47910451Snilay@cs.wisc.edu};
48010451Snilay@cs.wisc.edu
48110451Snilay@cs.wisc.educlass CleanWindow : public EnumeratedFault
48210451Snilay@cs.wisc.edu{
48310900Snilay@cs.wisc.edu  private:
48410451Snilay@cs.wisc.edu    static FaultName _name;
48510451Snilay@cs.wisc.edu    static TrapType _baseTrapType;
48610451Snilay@cs.wisc.edu    static FaultPriority _priority;
48710451Snilay@cs.wisc.edu    static FaultStat _count;
48810451Snilay@cs.wisc.edu    TrapType baseTrapType() {return _baseTrapType;}
48910451Snilay@cs.wisc.edu  public:
49010900Snilay@cs.wisc.edu    CleanWindow(uint32_t n) : EnumeratedFault(n) {;}
4917860SN/A    FaultName name() {return _name;}
4927860SN/A    FaultPriority priority() {return _priority;}
4937860SN/A    FaultStat & countStat() {return _count;}
4949885Sstever@gmail.com};
4958893Ssaidi@eecs.umich.edu
4967860SN/Aclass InterruptLevelN : public EnumeratedFault
4979885Sstever@gmail.com{
49810636Snilay@cs.wisc.edu  private:
4999988Snilay@cs.wisc.edu    static FaultName _name;
50010798Ssteve.reinhardt@amd.com    static TrapType _baseTrapType;
50110451Snilay@cs.wisc.edu    static FaultStat _count;
50210900Snilay@cs.wisc.edu    TrapType baseTrapType() {return _baseTrapType;}
5037860SN/A  public:
50410451Snilay@cs.wisc.edu    InterruptLevelN(uint32_t n) : EnumeratedFault(n) {;}
5057860SN/A    FaultName name() {return _name;}
5068835SAli.Saidi@ARM.com    FaultPriority priority() {return 32 - _n;}
50710451Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
50810036SAli.Saidi@ARM.com};
50910451Snilay@cs.wisc.edu
5108835SAli.Saidi@ARM.comclass SpillNNormal : public EnumeratedFault
5119885Sstever@gmail.com{
51210451Snilay@cs.wisc.edu  private:
5137860SN/A    static FaultName _name;
5147860SN/A    static TrapType _baseTrapType;
5158893Ssaidi@eecs.umich.edu    static FaultPriority _priority;
5167860SN/A    static FaultStat _count;
5179885Sstever@gmail.com    TrapType baseTrapType() {return _baseTrapType;}
5189885Sstever@gmail.com  public:
5199885Sstever@gmail.com    SpillNNormal(uint32_t n) : EnumeratedFault(n) {;}
5209885Sstever@gmail.com    FaultName name() {return _name;}
5219885Sstever@gmail.com    FaultPriority priority() {return _priority;}
5229988Snilay@cs.wisc.edu    FaultStat & countStat() {return _count;}
52310451Snilay@cs.wisc.edu};
52410036SAli.Saidi@ARM.com
52510451Snilay@cs.wisc.educlass SpillNOther : public EnumeratedFault
5269885Sstever@gmail.com{
5278825Snilay@cs.wisc.edu  private:
5288825Snilay@cs.wisc.edu    static FaultName _name;
5299988Snilay@cs.wisc.edu    static TrapType _baseTrapType;
5308825Snilay@cs.wisc.edu    static FaultPriority _priority;
5319449SAli.Saidi@ARM.com    static FaultStat _count;
5329449SAli.Saidi@ARM.com    TrapType baseTrapType() {return _baseTrapType;}
5339988Snilay@cs.wisc.edu  public:
5349449SAli.Saidi@ARM.com    SpillNOther(uint32_t n) : EnumeratedFault(n) {;}
53510038SAli.Saidi@ARM.com    FaultName name() {return _name;}
53610038SAli.Saidi@ARM.com    FaultPriority priority() {return _priority;}
53710038SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
53810038SAli.Saidi@ARM.com};
53910038SAli.Saidi@ARM.com
54010038SAli.Saidi@ARM.comclass FillNNormal : public EnumeratedFault
54110038SAli.Saidi@ARM.com{
54210038SAli.Saidi@ARM.com  private:
54310038SAli.Saidi@ARM.com    static FaultName _name;
54410038SAli.Saidi@ARM.com    static TrapType _baseTrapType;
5459449SAli.Saidi@ARM.com    static FaultPriority _priority;
5469449SAli.Saidi@ARM.com    static FaultStat _count;
5479449SAli.Saidi@ARM.com    TrapType baseTrapType() {return _baseTrapType;}
5489449SAli.Saidi@ARM.com  public:
5499449SAli.Saidi@ARM.com    FillNNormal(uint32_t n) : EnumeratedFault(n) {;}
5509449SAli.Saidi@ARM.com    FaultName name() {return _name;}
55110038SAli.Saidi@ARM.com    FaultPriority priority() {return _priority;}
5529449SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
5539449SAli.Saidi@ARM.com};
55410038SAli.Saidi@ARM.com
5559449SAli.Saidi@ARM.comclass FillNOther : public EnumeratedFault
55610038SAli.Saidi@ARM.com{
55710038SAli.Saidi@ARM.com  private:
55810636Snilay@cs.wisc.edu    static FaultName _name;
55910038SAli.Saidi@ARM.com    static TrapType _baseTrapType;
56010038SAli.Saidi@ARM.com    static FaultPriority _priority;
56110038SAli.Saidi@ARM.com    static FaultStat _count;
56210038SAli.Saidi@ARM.com    TrapType baseTrapType() {return _baseTrapType;}
56310038SAli.Saidi@ARM.com  public:
56410038SAli.Saidi@ARM.com    FillNOther(uint32_t n) : EnumeratedFault(n) {;}
56510038SAli.Saidi@ARM.com    FaultName name() {return _name;}
56610798Ssteve.reinhardt@amd.com    FaultPriority priority() {return _priority;}
56710038SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
56810038SAli.Saidi@ARM.com};
56910038SAli.Saidi@ARM.com
57010038SAli.Saidi@ARM.comclass TrapInstruction : public EnumeratedFault
57110038SAli.Saidi@ARM.com{
57210038SAli.Saidi@ARM.com  private:
57310038SAli.Saidi@ARM.com    static FaultName _name;
57410038SAli.Saidi@ARM.com    static TrapType _baseTrapType;
57510038SAli.Saidi@ARM.com    static FaultPriority _priority;
57610038SAli.Saidi@ARM.com    static FaultStat _count;
57710038SAli.Saidi@ARM.com    TrapType baseTrapType() {return _baseTrapType;}
57810038SAli.Saidi@ARM.com  public:
57910038SAli.Saidi@ARM.com    TrapInstruction(uint32_t n) : EnumeratedFault(n) {;}
58010038SAli.Saidi@ARM.com    FaultName name() {return _name;}
58110038SAli.Saidi@ARM.com    FaultPriority priority() {return _priority;}
58210038SAli.Saidi@ARM.com    FaultStat & countStat() {return _count;}
58310038SAli.Saidi@ARM.com};
5849449SAli.Saidi@ARM.com
5857860SN/Aclass UnimpFault : public SparcFault
5867860SN/A{
5878825Snilay@cs.wisc.edu  private:
5889988Snilay@cs.wisc.edu    static FaultName _name;
58910038SAli.Saidi@ARM.com    static TrapType _trapType;
5907860SN/A    static FaultPriority _priority;
5918825Snilay@cs.wisc.edu    static FaultStat _count;
5928825Snilay@cs.wisc.edu    std::string panicStr;
5938825Snilay@cs.wisc.edu  public:
5948825Snilay@cs.wisc.edu    UnimpFault(std::string _str)
5959885Sstever@gmail.com        : panicStr(_str)
5969988Snilay@cs.wisc.edu    { }
59710038SAli.Saidi@ARM.com
5989265SAli.Saidi@ARM.com    FaultName name() {return _name;}
5998825Snilay@cs.wisc.edu    TrapType trapType() {return _trapType;}
6008893Ssaidi@eecs.umich.edu    FaultPriority priority() {return _priority;}
6017860SN/A    FaultStat & countStat() {return _count;}
6027860SN/A#if FULL_SYSTEM
6037860SN/A    void invoke(ExecContext * xc);
60410451Snilay@cs.wisc.edu#endif
6058893Ssaidi@eecs.umich.edu};
60610451Snilay@cs.wisc.edu
6079885Sstever@gmail.com
60810636Snilay@cs.wisc.edu} // SparcISA namespace
6099988Snilay@cs.wisc.edu
6107860SN/A#endif // __FAULTS_HH__
61110451Snilay@cs.wisc.edu