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