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