faults.hh revision 2223
16019Shines@cs.fsu.edu/*
212509Schuan.zhu@arm.com * Copyright (c) 2003-2005 The Regents of The University of Michigan
37093Sgblack@eecs.umich.edu * All rights reserved.
47093Sgblack@eecs.umich.edu *
57093Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
67093Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
77093Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
87093Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
97093Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
107093Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
117093Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
127093Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
137093Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
146019Shines@cs.fsu.edu * this software without specific prior written permission.
156019Shines@cs.fsu.edu *
166019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
176019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
186019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
196019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
206019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
216019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
226019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
236019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
246019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
256019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
266019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
276019Shines@cs.fsu.edu */
286019Shines@cs.fsu.edu
296019Shines@cs.fsu.edu#ifndef __ALPHA_FAULTS_HH__
306019Shines@cs.fsu.edu#define __ALPHA_FAULTS_HH__
316019Shines@cs.fsu.edu
326019Shines@cs.fsu.edu#include "sim/faults.hh"
336019Shines@cs.fsu.edu
346019Shines@cs.fsu.edu// The design of the "name" and "vect" functions is in sim/faults.hh
356019Shines@cs.fsu.edu
366019Shines@cs.fsu.edunamespace SparcISA
376019Shines@cs.fsu.edu{
386019Shines@cs.fsu.edu
396019Shines@cs.fsu.edutypedef const uint32_t TrapType;
406019Shines@cs.fsu.edutypedef const uint32_t FaultPriority;
416735Sgblack@eecs.umich.edu
426735Sgblack@eecs.umich.educlass SparcFault : public FaultBase
4310037SARM gem5 Developers{
4410037SARM gem5 Developers  public:
456019Shines@cs.fsu.edu#if FULL_SYSTEM
466019Shines@cs.fsu.edu    void invoke(ExecContext * xc);
476019Shines@cs.fsu.edu#endif
4811793Sbrandon.potter@amd.com    virtual TrapType trapType() = 0;
4911793Sbrandon.potter@amd.com    virtual FaultPriority priority() = 0;
5010037SARM gem5 Developers    virtual FaultStat & countStat() = 0;
5110037SARM gem5 Developers};
5210037SARM gem5 Developers
538229Snate@binkert.orgclass InternalProcessorError : public SparcFault
548229Snate@binkert.org{
556019Shines@cs.fsu.edu  private:
568232Snate@binkert.org    static FaultName _name;
578782Sgblack@eecs.umich.edu    static TrapType _trapType;
586019Shines@cs.fsu.edu    static FaultPriority _priority;
596019Shines@cs.fsu.edu    static FaultStat _count;
606019Shines@cs.fsu.edu  public:
616019Shines@cs.fsu.edu    FaultName name() {return _name;}
6210037SARM gem5 Developers    TrapType trapType() {return _trapType;}
6310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
6410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
6510037SARM gem5 Developers    bool isMachineCheckFault() {return true;}
6610037SARM gem5 Developers};
6710037SARM gem5 Developers
6810037SARM gem5 Developersclass MemAddressNotAligned : public SparcFault
6910037SARM gem5 Developers{
7010037SARM gem5 Developers  private:
7110037SARM gem5 Developers    static FaultName _name;
7210037SARM gem5 Developers    static TrapType _trapType;
7310037SARM gem5 Developers    static FaultPriority _priority;
7410037SARM gem5 Developers    static FaultStat _count;
7510037SARM gem5 Developers  public:
7610037SARM gem5 Developers    FaultName name() {return _name;}
7710037SARM gem5 Developers    TrapType trapType() {return _trapType;}
7810037SARM gem5 Developers    FaultPriority priority() {return _priority;}
7910037SARM gem5 Developers    FaultStat & countStat() {return _count;}
8010037SARM gem5 Developers    bool isAlignmentFault() {return true;}
8110037SARM gem5 Developers};
8210037SARM gem5 Developers
8310037SARM gem5 Developersstatic inline Fault genMachineCheckFault()
8410037SARM gem5 Developers{
8510037SARM gem5 Developers    return new InternalProcessorError;
8610037SARM gem5 Developers}
8710037SARM gem5 Developers
8810037SARM gem5 Developersstatic inline Fault genAlignmentFault()
8910037SARM gem5 Developers{
9010037SARM gem5 Developers    return new MemAddressNotAligned;
9110037SARM gem5 Developers}
9210037SARM gem5 Developers
9310037SARM gem5 Developersclass PowerOnReset : public SparcFault
9410037SARM gem5 Developers{
9510037SARM gem5 Developers  private:
9610037SARM gem5 Developers    static FaultName _name;
9710037SARM gem5 Developers    static TrapType _trapType;
9810037SARM gem5 Developers    static FaultPriority _priority;
9910037SARM gem5 Developers    static FaultStat _count;
10010037SARM gem5 Developers  public:
10110037SARM gem5 Developers    FaultName name() {return _name;}
1026019Shines@cs.fsu.edu    TrapType trapType() {return _trapType;}
10310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
10410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
10510037SARM gem5 Developers};
1066019Shines@cs.fsu.edu
10710037SARM gem5 Developersclass WatchDogReset : public SparcFault
10810037SARM gem5 Developers{
10910037SARM gem5 Developers  private:
11010037SARM gem5 Developers    static FaultName _name;
11110037SARM gem5 Developers    static TrapType _trapType;
11210037SARM gem5 Developers    static FaultPriority _priority;
11310037SARM gem5 Developers    static FaultStat _count;
11410037SARM gem5 Developers  public:
11510037SARM gem5 Developers    FaultName name() {return _name;}
11610037SARM gem5 Developers    TrapType trapType() {return _trapType;}
11710037SARM gem5 Developers    FaultPriority priority() {return _priority;}
11810037SARM gem5 Developers    FaultStat & countStat() {return _count;}
11910037SARM gem5 Developers};
12010037SARM gem5 Developers
12110037SARM gem5 Developersclass ExternallyInitiatedReset : public SparcFault
12210037SARM gem5 Developers{
12310037SARM gem5 Developers  private:
12410037SARM gem5 Developers    static FaultName _name;
12510037SARM gem5 Developers    static TrapType _trapType;
12610037SARM gem5 Developers    static FaultPriority _priority;
12710037SARM gem5 Developers    static FaultStat _count;
12810037SARM gem5 Developers  public:
12910037SARM gem5 Developers    FaultName name() {return _name;}
13010037SARM gem5 Developers    TrapType trapType() {return _trapType;}
13110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
13210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
13310037SARM gem5 Developers};
13410037SARM gem5 Developers
13510037SARM gem5 Developersclass SoftwareInitiatedReset : public SparcFault
13610037SARM gem5 Developers{
13710037SARM gem5 Developers  private:
13810037SARM gem5 Developers    static FaultName _name;
13910037SARM gem5 Developers    static TrapType _trapType;
14010037SARM gem5 Developers    static FaultPriority _priority;
14110037SARM gem5 Developers    static FaultStat _count;
14210037SARM gem5 Developers  public:
14310037SARM gem5 Developers    FaultName name() {return _name;}
14410037SARM gem5 Developers    TrapType trapType() {return _trapType;}
14510037SARM gem5 Developers    FaultPriority priority() {return _priority;}
14610037SARM gem5 Developers    FaultStat & countStat() {return _count;}
1476019Shines@cs.fsu.edu};
14810037SARM gem5 Developers
14910037SARM gem5 Developersclass REDStateException : public SparcFault
15010037SARM gem5 Developers{
1516019Shines@cs.fsu.edu  private:
15210037SARM gem5 Developers    static FaultName _name;
15310037SARM gem5 Developers    static TrapType _trapType;
15410037SARM gem5 Developers    static FaultPriority _priority;
15510037SARM gem5 Developers    static FaultStat _count;
15610037SARM gem5 Developers  public:
15710037SARM gem5 Developers    FaultName name() {return _name;}
15810037SARM gem5 Developers    TrapType trapType() {return _trapType;}
15910037SARM gem5 Developers    FaultPriority priority() {return _priority;}
16010037SARM gem5 Developers    FaultStat & countStat() {return _count;}
16110037SARM gem5 Developers};
16210037SARM gem5 Developers
16310037SARM gem5 Developersclass InstructionAccessException : public SparcFault
16410037SARM gem5 Developers{
16510037SARM gem5 Developers  private:
16610037SARM gem5 Developers    static FaultName _name;
16710037SARM gem5 Developers    static TrapType _trapType;
16810037SARM gem5 Developers    static FaultPriority _priority;
16910037SARM gem5 Developers    static FaultStat _count;
17010037SARM gem5 Developers  public:
17110037SARM gem5 Developers    FaultName name() {return _name;}
17210037SARM gem5 Developers    TrapType trapType() {return _trapType;}
17310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
17410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
17510037SARM gem5 Developers};
17610037SARM gem5 Developers
17710037SARM gem5 Developersclass InstructionAccessMMUMiss : public SparcFault
17810037SARM gem5 Developers{
17910037SARM gem5 Developers  private:
18010037SARM gem5 Developers    static FaultName _name;
18110037SARM gem5 Developers    static TrapType _trapType;
18210037SARM gem5 Developers    static FaultPriority _priority;
18310037SARM gem5 Developers    static FaultStat _count;
18410037SARM gem5 Developers  public:
18510037SARM gem5 Developers    FaultName name() {return _name;}
18610037SARM gem5 Developers    TrapType trapType() {return _trapType;}
18710037SARM gem5 Developers    FaultPriority priority() {return _priority;}
18810037SARM gem5 Developers    FaultStat & countStat() {return _count;}
18910037SARM gem5 Developers};
19010037SARM gem5 Developers
19110037SARM gem5 Developersclass InstructionAccessError : public SparcFault
19210037SARM gem5 Developers{
1936019Shines@cs.fsu.edu  private:
19410037SARM gem5 Developers    static FaultName _name;
19510037SARM gem5 Developers    static TrapType _trapType;
19610037SARM gem5 Developers    static FaultPriority _priority;
1976019Shines@cs.fsu.edu    static FaultStat _count;
19810037SARM gem5 Developers  public:
19910037SARM gem5 Developers    FaultName name() {return _name;}
20010037SARM gem5 Developers    TrapType trapType() {return _trapType;}
20110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
20210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
20310037SARM gem5 Developers};
20410037SARM gem5 Developers
20510037SARM gem5 Developersclass IllegalInstruction : public SparcFault
20610037SARM gem5 Developers{
20710037SARM gem5 Developers  private:
20810037SARM gem5 Developers    static FaultName _name;
20910037SARM gem5 Developers    static TrapType _trapType;
21010037SARM gem5 Developers    static FaultPriority _priority;
21110037SARM gem5 Developers    static FaultStat _count;
21210037SARM gem5 Developers  public:
21310037SARM gem5 Developers    FaultName name() {return _name;}
21410037SARM gem5 Developers    TrapType trapType() {return _trapType;}
21510037SARM gem5 Developers    FaultPriority priority() {return _priority;}
21610037SARM gem5 Developers    FaultStat & countStat() {return _count;}
21710037SARM gem5 Developers};
21810037SARM gem5 Developers
21910037SARM gem5 Developersclass PrivelegedOpcode : public SparcFault
22010037SARM gem5 Developers{
22110037SARM gem5 Developers  private:
22210037SARM gem5 Developers    static FaultName _name;
22310037SARM gem5 Developers    static TrapType _trapType;
22410037SARM gem5 Developers    static FaultPriority _priority;
22510037SARM gem5 Developers    static FaultStat _count;
22610037SARM gem5 Developers  public:
22710037SARM gem5 Developers    FaultName name() {return _name;}
22810037SARM gem5 Developers    TrapType trapType() {return _trapType;}
22910037SARM gem5 Developers    FaultPriority priority() {return _priority;}
23010037SARM gem5 Developers    FaultStat & countStat() {return _count;}
23110037SARM gem5 Developers};
23210037SARM gem5 Developers
23310037SARM gem5 Developersclass UnimplementedLDD : public SparcFault
23410037SARM gem5 Developers{
23510037SARM gem5 Developers  private:
23610037SARM gem5 Developers    static FaultName _name;
23710037SARM gem5 Developers    static TrapType _trapType;
23810037SARM gem5 Developers    static FaultPriority _priority;
23910037SARM gem5 Developers    static FaultStat _count;
24012512Sgiacomo.travaglini@arm.com  public:
24112512Sgiacomo.travaglini@arm.com    FaultName name() {return _name;}
24212512Sgiacomo.travaglini@arm.com    TrapType trapType() {return _trapType;}
24312512Sgiacomo.travaglini@arm.com    FaultPriority priority() {return _priority;}
24410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
24510037SARM gem5 Developers};
24610037SARM gem5 Developers
24710037SARM gem5 Developersclass UnimplementedSTD : public SparcFault
24810037SARM gem5 Developers{
24910037SARM gem5 Developers  private:
25010037SARM gem5 Developers    static FaultName _name;
25110037SARM gem5 Developers    static TrapType _trapType;
25210037SARM gem5 Developers    static FaultPriority _priority;
25310037SARM gem5 Developers    static FaultStat _count;
25410037SARM gem5 Developers  public:
25510037SARM gem5 Developers    FaultName name() {return _name;}
25610037SARM gem5 Developers    TrapType trapType() {return _trapType;}
25710037SARM gem5 Developers    FaultPriority priority() {return _priority;}
25810037SARM gem5 Developers    FaultStat & countStat() {return _count;}
25910037SARM gem5 Developers};
26010037SARM gem5 Developers
26110037SARM gem5 Developersclass FpDisabled : public SparcFault
26210037SARM gem5 Developers{
26310037SARM gem5 Developers  private:
26410037SARM gem5 Developers    static FaultName _name;
26510037SARM gem5 Developers    static TrapType _trapType;
26610037SARM gem5 Developers    static FaultPriority _priority;
26710037SARM gem5 Developers    static FaultStat _count;
26810037SARM gem5 Developers  public:
26910037SARM gem5 Developers    FaultName name() {return _name;}
27010037SARM gem5 Developers    TrapType trapType() {return _trapType;}
27110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
27210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
27310037SARM gem5 Developers};
27410037SARM gem5 Developers
27510037SARM gem5 Developersclass FpExceptionIEEE754 : public SparcFault
27610037SARM gem5 Developers{
27710037SARM gem5 Developers  private:
27810037SARM gem5 Developers    static FaultName _name;
27910037SARM gem5 Developers    static TrapType _trapType;
28012299Sandreas.sandberg@arm.com    static FaultPriority _priority;
28112299Sandreas.sandberg@arm.com    static FaultStat _count;
28212299Sandreas.sandberg@arm.com  public:
28312299Sandreas.sandberg@arm.com    FaultName name() {return _name;}
28412299Sandreas.sandberg@arm.com    TrapType trapType() {return _trapType;}
28510037SARM gem5 Developers    FaultPriority priority() {return _priority;}
28610037SARM gem5 Developers    FaultStat & countStat() {return _count;}
28710037SARM gem5 Developers};
28810037SARM gem5 Developers
28910037SARM gem5 Developersclass FpExceptionOther : public SparcFault
29010037SARM gem5 Developers{
29110037SARM gem5 Developers  private:
29210037SARM gem5 Developers    static FaultName _name;
29310037SARM gem5 Developers    static TrapType _trapType;
29410037SARM gem5 Developers    static FaultPriority _priority;
2956019Shines@cs.fsu.edu    static FaultStat _count;
29610037SARM gem5 Developers  public:
2977362Sgblack@eecs.umich.edu    FaultName name() {return _name;}
2986735Sgblack@eecs.umich.edu    TrapType trapType() {return _trapType;}
29910037SARM gem5 Developers    FaultPriority priority() {return _priority;}
3006019Shines@cs.fsu.edu    FaultStat & countStat() {return _count;}
30110037SARM gem5 Developers};
30210037SARM gem5 Developers
3037400SAli.Saidi@ARM.comclass TagOverflow : public SparcFault
3046735Sgblack@eecs.umich.edu{
3056735Sgblack@eecs.umich.edu  private:
30610037SARM gem5 Developers    static FaultName _name;
3076735Sgblack@eecs.umich.edu    static TrapType _trapType;
30810037SARM gem5 Developers    static FaultPriority _priority;
30910037SARM gem5 Developers    static FaultStat _count;
31010037SARM gem5 Developers  public:
31110037SARM gem5 Developers    FaultName name() {return _name;}
3127400SAli.Saidi@ARM.com    TrapType trapType() {return _trapType;}
31310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
31410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
31510037SARM gem5 Developers};
31610037SARM gem5 Developers
31710037SARM gem5 Developersclass DivisionByZero : public SparcFault
31810037SARM gem5 Developers{
31910037SARM gem5 Developers  private:
32010037SARM gem5 Developers    static FaultName _name;
32110037SARM gem5 Developers    static TrapType _trapType;
32210037SARM gem5 Developers    static FaultPriority _priority;
32310037SARM gem5 Developers    static FaultStat _count;
32410037SARM gem5 Developers  public:
32510037SARM gem5 Developers    FaultName name() {return _name;}
32610037SARM gem5 Developers    TrapType trapType() {return _trapType;}
32710037SARM gem5 Developers    FaultPriority priority() {return _priority;}
32810037SARM gem5 Developers    FaultStat & countStat() {return _count;}
32910037SARM gem5 Developers};
3306019Shines@cs.fsu.edu
3316019Shines@cs.fsu.educlass DataAccessException : public SparcFault
33210037SARM gem5 Developers{
33310037SARM gem5 Developers  private:
33410037SARM gem5 Developers    static FaultName _name;
33510037SARM gem5 Developers    static TrapType _trapType;
33610037SARM gem5 Developers    static FaultPriority _priority;
33710037SARM gem5 Developers    static FaultStat _count;
33810037SARM gem5 Developers  public:
33910037SARM gem5 Developers    FaultName name() {return _name;}
34010037SARM gem5 Developers    TrapType trapType() {return _trapType;}
34111574SCurtis.Dunham@arm.com    FaultPriority priority() {return _priority;}
34211574SCurtis.Dunham@arm.com    FaultStat & countStat() {return _count;}
34311574SCurtis.Dunham@arm.com};
34411574SCurtis.Dunham@arm.com
34510037SARM gem5 Developersclass DataAccessMMUMiss : public SparcFault
34610037SARM gem5 Developers{
34710037SARM gem5 Developers  private:
34810037SARM gem5 Developers    static FaultName _name;
34910037SARM gem5 Developers    static TrapType _trapType;
35010037SARM gem5 Developers    static FaultPriority _priority;
35110037SARM gem5 Developers    static FaultStat _count;
35212511Schuan.zhu@arm.com  public:
35310037SARM gem5 Developers    FaultName name() {return _name;}
35410037SARM gem5 Developers    TrapType trapType() {return _trapType;}
35510037SARM gem5 Developers    FaultPriority priority() {return _priority;}
35610037SARM gem5 Developers    FaultStat & countStat() {return _count;}
35710037SARM gem5 Developers};
35810037SARM gem5 Developers
35910037SARM gem5 Developersclass DataAccessError : public SparcFault
36010037SARM gem5 Developers{
36110037SARM gem5 Developers  private:
36210037SARM gem5 Developers    static FaultName _name;
36310037SARM gem5 Developers    static TrapType _trapType;
36410037SARM gem5 Developers    static FaultPriority _priority;
36510037SARM gem5 Developers    static FaultStat _count;
36610037SARM gem5 Developers  public:
36710037SARM gem5 Developers    FaultName name() {return _name;}
36810037SARM gem5 Developers    TrapType trapType() {return _trapType;}
36910037SARM gem5 Developers    FaultPriority priority() {return _priority;}
37010037SARM gem5 Developers    FaultStat & countStat() {return _count;}
37110037SARM gem5 Developers};
37210037SARM gem5 Developers
37310037SARM gem5 Developersclass DataAccessProtection : public SparcFault
37410037SARM gem5 Developers{
37510037SARM gem5 Developers  private:
37610037SARM gem5 Developers    static FaultName _name;
37710037SARM gem5 Developers    static TrapType _trapType;
37810037SARM gem5 Developers    static FaultPriority _priority;
37910037SARM gem5 Developers    static FaultStat _count;
38010037SARM gem5 Developers  public:
38110037SARM gem5 Developers    FaultName name() {return _name;}
38210037SARM gem5 Developers    TrapType trapType() {return _trapType;}
38310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
38410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
38510037SARM gem5 Developers};
38610037SARM gem5 Developers
38710037SARM gem5 Developersclass LDDFMemAddressNotAligned : public SparcFault
38810037SARM gem5 Developers{
38910037SARM gem5 Developers  private:
39010037SARM gem5 Developers    static FaultName _name;
39110037SARM gem5 Developers    static TrapType _trapType;
39210037SARM gem5 Developers    static FaultPriority _priority;
39312402Sgiacomo.travaglini@arm.com    static FaultStat _count;
39410037SARM gem5 Developers  public:
39510037SARM gem5 Developers    FaultName name() {return _name;}
39610037SARM gem5 Developers    TrapType trapType() {return _trapType;}
39710037SARM gem5 Developers    FaultPriority priority() {return _priority;}
39810037SARM gem5 Developers    FaultStat & countStat() {return _count;}
39910037SARM gem5 Developers};
40010037SARM gem5 Developers
40110037SARM gem5 Developersclass STDFMemAddressNotAligned : public SparcFault
40210037SARM gem5 Developers{
40310037SARM gem5 Developers  private:
40410037SARM gem5 Developers    static FaultName _name;
40510037SARM gem5 Developers    static TrapType _trapType;
40610037SARM gem5 Developers    static FaultPriority _priority;
40710037SARM gem5 Developers    static FaultStat _count;
40810037SARM gem5 Developers  public:
40910037SARM gem5 Developers    FaultName name() {return _name;}
41010037SARM gem5 Developers    TrapType trapType() {return _trapType;}
41110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
41210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
41310037SARM gem5 Developers};
41410037SARM gem5 Developers
41510037SARM gem5 Developersclass PrivelegedAction : public SparcFault
41610037SARM gem5 Developers{
41710037SARM gem5 Developers  private:
41810037SARM gem5 Developers    static FaultName _name;
41910037SARM gem5 Developers    static TrapType _trapType;
42010037SARM gem5 Developers    static FaultPriority _priority;
42110037SARM gem5 Developers    static FaultStat _count;
42210037SARM gem5 Developers  public:
42310037SARM gem5 Developers    FaultName name() {return _name;}
42410037SARM gem5 Developers    TrapType trapType() {return _trapType;}
42510037SARM gem5 Developers    FaultPriority priority() {return _priority;}
42610037SARM gem5 Developers    FaultStat & countStat() {return _count;}
42710037SARM gem5 Developers};
42810037SARM gem5 Developers
42910417Sandreas.hansson@arm.comclass LDQFMemAddressNotAligned : public SparcFault
4306019Shines@cs.fsu.edu{
43110037SARM gem5 Developers  private:
43210037SARM gem5 Developers    static FaultName _name;
43310037SARM gem5 Developers    static TrapType _trapType;
43410037SARM gem5 Developers    static FaultPriority _priority;
43510037SARM gem5 Developers    static FaultStat _count;
43610037SARM gem5 Developers  public:
43710037SARM gem5 Developers    FaultName name() {return _name;}
43810037SARM gem5 Developers    TrapType trapType() {return _trapType;}
43910037SARM gem5 Developers    FaultPriority priority() {return _priority;}
44010037SARM gem5 Developers    FaultStat & countStat() {return _count;}
44112402Sgiacomo.travaglini@arm.com};
44210037SARM gem5 Developers
44312402Sgiacomo.travaglini@arm.comclass STQFMemAddressNotAligned : public SparcFault
44411578SDylan.Johnson@ARM.com{
44512402Sgiacomo.travaglini@arm.com  private:
44612402Sgiacomo.travaglini@arm.com    static FaultName _name;
44710037SARM gem5 Developers    static TrapType _trapType;
44812402Sgiacomo.travaglini@arm.com    static FaultPriority _priority;
44912402Sgiacomo.travaglini@arm.com    static FaultStat _count;
45010037SARM gem5 Developers  public:
45110037SARM gem5 Developers    FaultName name() {return _name;}
45210037SARM gem5 Developers    TrapType trapType() {return _trapType;}
45310037SARM gem5 Developers    FaultPriority priority() {return _priority;}
45410037SARM gem5 Developers    FaultStat & countStat() {return _count;}
45510037SARM gem5 Developers};
45610037SARM gem5 Developers
45710037SARM gem5 Developersclass AsyncDataError : public SparcFault
45810037SARM gem5 Developers{
45910037SARM gem5 Developers  private:
46010037SARM gem5 Developers    static FaultName _name;
46110037SARM gem5 Developers    static TrapType _trapType;
46210037SARM gem5 Developers    static FaultPriority _priority;
46310037SARM gem5 Developers    static FaultStat _count;
46410037SARM gem5 Developers  public:
46510037SARM gem5 Developers    FaultName name() {return _name;}
4666735Sgblack@eecs.umich.edu    TrapType trapType() {return _trapType;}
4678782Sgblack@eecs.umich.edu    FaultPriority priority() {return _priority;}
4688782Sgblack@eecs.umich.edu    FaultStat & countStat() {return _count;}
4696735Sgblack@eecs.umich.edu};
4706019Shines@cs.fsu.edu
4716735Sgblack@eecs.umich.educlass EnumeratedFault : public SparcFault
47210037SARM gem5 Developers{
4738303SAli.Saidi@ARM.com  protected:
47410338SCurtis.Dunham@arm.com    uint32_t _n;
47510338SCurtis.Dunham@arm.com    virtual TrapType baseTrapType() = 0;
47610338SCurtis.Dunham@arm.com  public:
47710338SCurtis.Dunham@arm.com    EnumeratedFault(uint32_t n) : SparcFault() {_n = n;}
4788303SAli.Saidi@ARM.com    TrapType trapType() {return baseTrapType() + _n;}
4797720Sgblack@eecs.umich.edu};
4808205SAli.Saidi@ARM.com
4818205SAli.Saidi@ARM.comclass CleanWindow : public EnumeratedFault
4828205SAli.Saidi@ARM.com{
4836735Sgblack@eecs.umich.edu  private:
48410037SARM gem5 Developers    static FaultName _name;
48510037SARM gem5 Developers    static TrapType _baseTrapType;
48610037SARM gem5 Developers    static FaultPriority _priority;
48710037SARM gem5 Developers    static FaultStat _count;
48812398Sgiacomo.travaglini@arm.com    TrapType baseTrapType() {return _baseTrapType;}
48910037SARM gem5 Developers  public:
49010037SARM gem5 Developers    CleanWindow(uint32_t n) : EnumeratedFault(n) {;}
49110037SARM gem5 Developers    FaultName name() {return _name;}
49212402Sgiacomo.travaglini@arm.com    FaultPriority priority() {return _priority;}
49310037SARM gem5 Developers    FaultStat & countStat() {return _count;}
49412402Sgiacomo.travaglini@arm.com};
49510037SARM gem5 Developers
49612402Sgiacomo.travaglini@arm.comclass InterruptLevelN : public EnumeratedFault
49712402Sgiacomo.travaglini@arm.com{
49810037SARM gem5 Developers  private:
49912402Sgiacomo.travaglini@arm.com    static FaultName _name;
50010037SARM gem5 Developers    static TrapType _baseTrapType;
50110037SARM gem5 Developers    static FaultStat _count;
50210037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
50310037SARM gem5 Developers  public:
50410037SARM gem5 Developers    InterruptLevelN(uint32_t n) : EnumeratedFault(n) {;}
50510037SARM gem5 Developers    FaultName name() {return _name;}
50610037SARM gem5 Developers    FaultPriority priority() {return 32 - _n;}
50710037SARM gem5 Developers    FaultStat & countStat() {return _count;}
50810037SARM gem5 Developers};
50910037SARM gem5 Developers
51010037SARM gem5 Developersclass SpillNNormal : public EnumeratedFault
51110037SARM gem5 Developers{
51210037SARM gem5 Developers  private:
51310037SARM gem5 Developers    static FaultName _name;
51410037SARM gem5 Developers    static TrapType _baseTrapType;
51510037SARM gem5 Developers    static FaultPriority _priority;
51610037SARM gem5 Developers    static FaultStat _count;
51710037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
51810037SARM gem5 Developers  public:
51910037SARM gem5 Developers    SpillNNormal(uint32_t n) : EnumeratedFault(n) {;}
52010037SARM gem5 Developers    FaultName name() {return _name;}
52110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
52210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
52310037SARM gem5 Developers};
52410037SARM gem5 Developers
52510037SARM gem5 Developersclass SpillNOther : public EnumeratedFault
52610037SARM gem5 Developers{
52710037SARM gem5 Developers  private:
52810037SARM gem5 Developers    static FaultName _name;
52910037SARM gem5 Developers    static TrapType _baseTrapType;
53010037SARM gem5 Developers    static FaultPriority _priority;
53110037SARM gem5 Developers    static FaultStat _count;
53210037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
53310037SARM gem5 Developers  public:
5346735Sgblack@eecs.umich.edu    SpillNOther(uint32_t n) : EnumeratedFault(n) {;}
5356735Sgblack@eecs.umich.edu    FaultName name() {return _name;}
5366735Sgblack@eecs.umich.edu    FaultPriority priority() {return _priority;}
53710037SARM gem5 Developers    FaultStat & countStat() {return _count;}
5388518Sgeoffrey.blake@arm.com};
5398518Sgeoffrey.blake@arm.com
5406735Sgblack@eecs.umich.educlass FillNNormal : public EnumeratedFault
54110037SARM gem5 Developers{
54210037SARM gem5 Developers  private:
54310037SARM gem5 Developers    static FaultName _name;
54410037SARM gem5 Developers    static TrapType _baseTrapType;
54510037SARM gem5 Developers    static FaultPriority _priority;
54610037SARM gem5 Developers    static FaultStat _count;
54710037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
54810037SARM gem5 Developers  public:
54910037SARM gem5 Developers    FillNNormal(uint32_t n) : EnumeratedFault(n) {;}
55010037SARM gem5 Developers    FaultName name() {return _name;}
55110037SARM gem5 Developers    FaultPriority priority() {return _priority;}
55210037SARM gem5 Developers    FaultStat & countStat() {return _count;}
5536735Sgblack@eecs.umich.edu};
5546735Sgblack@eecs.umich.edu
5556735Sgblack@eecs.umich.educlass FillNOther : public EnumeratedFault
5566735Sgblack@eecs.umich.edu{
5576735Sgblack@eecs.umich.edu  private:
5586735Sgblack@eecs.umich.edu    static FaultName _name;
5596735Sgblack@eecs.umich.edu    static TrapType _baseTrapType;
5606735Sgblack@eecs.umich.edu    static FaultPriority _priority;
5616735Sgblack@eecs.umich.edu    static FaultStat _count;
56210037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
56310037SARM gem5 Developers  public:
56410037SARM gem5 Developers    FillNOther(uint32_t n) : EnumeratedFault(n) {;}
5656735Sgblack@eecs.umich.edu    FaultName name() {return _name;}
5666735Sgblack@eecs.umich.edu    FaultPriority priority() {return _priority;}
5676735Sgblack@eecs.umich.edu    FaultStat & countStat() {return _count;}
5686735Sgblack@eecs.umich.edu};
56910037SARM gem5 Developers
57010037SARM gem5 Developersclass TrapInstruction : public EnumeratedFault
57110037SARM gem5 Developers{
57210037SARM gem5 Developers  private:
57310037SARM gem5 Developers    static FaultName _name;
57410037SARM gem5 Developers    static TrapType _baseTrapType;
57510037SARM gem5 Developers    static FaultPriority _priority;
57610037SARM gem5 Developers    static FaultStat _count;
57710037SARM gem5 Developers    TrapType baseTrapType() {return _baseTrapType;}
57810037SARM gem5 Developers  public:
5796735Sgblack@eecs.umich.edu    TrapInstruction(uint32_t n) : EnumeratedFault(n) {;}
5806735Sgblack@eecs.umich.edu    FaultName name() {return _name;}
5817093Sgblack@eecs.umich.edu    FaultPriority priority() {return _priority;}
5827093Sgblack@eecs.umich.edu    FaultStat & countStat() {return _count;}
5837720Sgblack@eecs.umich.edu};
5847585SAli.Saidi@arm.com
5857720Sgblack@eecs.umich.edu} // SparcISA namespace
5867720Sgblack@eecs.umich.edu
5877720Sgblack@eecs.umich.edu#endif // __FAULTS_HH__
5887720Sgblack@eecs.umich.edu