faults.hh revision 5224
12131SN/A/* 25224Sksewell@umich.edu * Copyright (c) 2007 MIPS Technologies, Inc. 35224Sksewell@umich.edu * All rights reserved. 42131SN/A * 55224Sksewell@umich.edu * Redistribution and use in source and binary forms, with or without 65224Sksewell@umich.edu * modification, are permitted provided that the following conditions are 75224Sksewell@umich.edu * met: redistributions of source code must retain the above copyright 85224Sksewell@umich.edu * notice, this list of conditions and the following disclaimer; 95224Sksewell@umich.edu * redistributions in binary form must reproduce the above copyright 105224Sksewell@umich.edu * notice, this list of conditions and the following disclaimer in the 115224Sksewell@umich.edu * documentation and/or other materials provided with the distribution; 125224Sksewell@umich.edu * neither the name of the copyright holders nor the names of its 135224Sksewell@umich.edu * contributors may be used to endorse or promote products derived from 145224Sksewell@umich.edu * this software without specific prior written permission. 152131SN/A * 165224Sksewell@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 175224Sksewell@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185224Sksewell@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195224Sksewell@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 205224Sksewell@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215224Sksewell@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225224Sksewell@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235224Sksewell@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245224Sksewell@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255224Sksewell@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265224Sksewell@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu * 285224Sksewell@umich.edu * Authors: Gabe Black 295224Sksewell@umich.edu * Korey Sewell 305222Sksewell@umich.edu * Jaidev Patwardhan 312131SN/A */ 322131SN/A 332239SN/A#ifndef __MIPS_FAULTS_HH__ 342239SN/A#define __MIPS_FAULTS_HH__ 352131SN/A 362131SN/A#include "sim/faults.hh" 372447SN/A 382447SN/A// The design of the "name" and "vect" functions is in sim/faults.hh 392447SN/A 402447SN/Anamespace MipsISA 412447SN/A{ 422447SN/Atypedef const Addr FaultVect; 432131SN/A 442239SN/Aclass MipsFault : public FaultBase 452131SN/A{ 462447SN/A protected: 472447SN/A virtual bool skipFaultingInstruction() {return false;} 482447SN/A virtual bool setRestartAddress() {return true;} 492131SN/A public: 505222Sksewell@umich.edu Addr BadVAddr; 515222Sksewell@umich.edu Addr EntryHi_Asid; 525222Sksewell@umich.edu Addr EntryHi_VPN2; 535222Sksewell@umich.edu Addr EntryHi_VPN2X; 545222Sksewell@umich.edu Addr Context_BadVPN2; 552447SN/A#if FULL_SYSTEM 565222Sksewell@umich.edu void invoke(ThreadContext * tc) {}; 575222Sksewell@umich.edu void setExceptionState(ThreadContext *,uint8_t); 585222Sksewell@umich.edu void setHandlerPC(Addr,ThreadContext *); 592447SN/A#endif 602447SN/A virtual FaultVect vect() = 0; 612447SN/A virtual FaultStat & countStat() = 0; 622131SN/A}; 632131SN/A 642447SN/Aclass MachineCheckFault : public MipsFault 652131SN/A{ 662447SN/A private: 672447SN/A static FaultName _name; 682447SN/A static FaultVect _vect; 692447SN/A static FaultStat _count; 702131SN/A public: 714695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 722447SN/A FaultVect vect() {return _vect;} 732447SN/A FaultStat & countStat() {return _count;} 745222Sksewell@umich.edu bool isMachineCheckFault() {return true;} 755222Sksewell@umich.edu}; 765222Sksewell@umich.edu 775222Sksewell@umich.educlass NonMaskableInterrupt : public MipsFault 785222Sksewell@umich.edu{ 795222Sksewell@umich.edu private: 805222Sksewell@umich.edu static FaultName _name; 815222Sksewell@umich.edu static FaultVect _vect; 825222Sksewell@umich.edu static FaultStat _count; 835222Sksewell@umich.edu public: 845222Sksewell@umich.edu FaultName name() const {return _name;} 855222Sksewell@umich.edu FaultVect vect() {return _vect;} 865222Sksewell@umich.edu FaultStat & countStat() {return _count;} 875222Sksewell@umich.edu bool isNonMaskableInterrupt() {return true;} 882447SN/A}; 892131SN/A 902447SN/Aclass AlignmentFault : public MipsFault 912131SN/A{ 922447SN/A private: 932447SN/A static FaultName _name; 942447SN/A static FaultVect _vect; 952447SN/A static FaultStat _count; 962131SN/A public: 974695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 982447SN/A FaultVect vect() {return _vect;} 992447SN/A FaultStat & countStat() {return _count;} 1005222Sksewell@umich.edu bool isAlignmentFault() {return true;} 1012447SN/A}; 1022131SN/A 1035222Sksewell@umich.educlass AddressErrorFault : public MipsFault 1045222Sksewell@umich.edu{ 1055222Sksewell@umich.edu private: 1065222Sksewell@umich.edu static FaultName _name; 1075222Sksewell@umich.edu static FaultVect _vect; 1085222Sksewell@umich.edu static FaultStat _count; 1095222Sksewell@umich.edu public: 1105222Sksewell@umich.edu FaultName name() const {return _name;} 1115222Sksewell@umich.edu FaultVect vect() {return _vect;} 1125222Sksewell@umich.edu FaultStat & countStat() {return _count;} 1135222Sksewell@umich.edu#if FULL_SYSTEM 1145222Sksewell@umich.edu void invoke(ThreadContext * tc); 1155222Sksewell@umich.edu#endif 1165222Sksewell@umich.edu 1175222Sksewell@umich.edu}; 1185222Sksewell@umich.educlass StoreAddressErrorFault : public MipsFault 1195222Sksewell@umich.edu{ 1205222Sksewell@umich.edu private: 1215222Sksewell@umich.edu static FaultName _name; 1225222Sksewell@umich.edu static FaultVect _vect; 1235222Sksewell@umich.edu static FaultStat _count; 1245222Sksewell@umich.edu public: 1255222Sksewell@umich.edu FaultName name() const {return _name;} 1265222Sksewell@umich.edu FaultVect vect() {return _vect;} 1275222Sksewell@umich.edu FaultStat & countStat() {return _count;} 1285222Sksewell@umich.edu#if FULL_SYSTEM 1295222Sksewell@umich.edu void invoke(ThreadContext * tc); 1305222Sksewell@umich.edu#endif 1315222Sksewell@umich.edu 1325222Sksewell@umich.edu}; 1334661Sksewell@umich.educlass UnimplementedOpcodeFault : public MipsFault 1344661Sksewell@umich.edu{ 1354661Sksewell@umich.edu private: 1364661Sksewell@umich.edu static FaultName _name; 1374661Sksewell@umich.edu static FaultVect _vect; 1384661Sksewell@umich.edu static FaultStat _count; 1394661Sksewell@umich.edu public: 1404695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 1414661Sksewell@umich.edu FaultVect vect() {return _vect;} 1424661Sksewell@umich.edu FaultStat & countStat() {return _count;} 1434661Sksewell@umich.edu}; 1444661Sksewell@umich.edu 1452447SN/A 1465222Sksewell@umich.educlass TLBRefillIFetchFault : public MipsFault 1472447SN/A{ 1482447SN/A private: 1495222Sksewell@umich.edu Addr vaddr; 1502447SN/A static FaultName _name; 1512447SN/A static FaultVect _vect; 1522447SN/A static FaultStat _count; 1532131SN/A public: 1544695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 1552447SN/A FaultVect vect() {return _vect;} 1562447SN/A FaultStat & countStat() {return _count;} 1574661Sksewell@umich.edu void invoke(ThreadContext * tc); 1582447SN/A}; 1595222Sksewell@umich.educlass TLBInvalidIFetchFault : public MipsFault 1604661Sksewell@umich.edu{ 1614661Sksewell@umich.edu private: 1625222Sksewell@umich.edu Addr vaddr; 1634661Sksewell@umich.edu static FaultName _name; 1644661Sksewell@umich.edu static FaultVect _vect; 1654661Sksewell@umich.edu static FaultStat _count; 1664661Sksewell@umich.edu public: 1674695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 1684661Sksewell@umich.edu FaultVect vect() {return _vect;} 1694661Sksewell@umich.edu FaultStat & countStat() {return _count;} 1704661Sksewell@umich.edu void invoke(ThreadContext * tc); 1714661Sksewell@umich.edu}; 1724661Sksewell@umich.edu 1732447SN/Aclass NDtbMissFault : public MipsFault 1742131SN/A{ 1752447SN/A private: 1762447SN/A static FaultName _name; 1772447SN/A static FaultVect _vect; 1782447SN/A static FaultStat _count; 1792131SN/A public: 1804695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 1812447SN/A FaultVect vect() {return _vect;} 1822447SN/A FaultStat & countStat() {return _count;} 1832447SN/A}; 1842131SN/A 1852447SN/Aclass PDtbMissFault : public MipsFault 1862131SN/A{ 1872447SN/A private: 1882447SN/A static FaultName _name; 1892447SN/A static FaultVect _vect; 1902447SN/A static FaultStat _count; 1912131SN/A public: 1924695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 1932447SN/A FaultVect vect() {return _vect;} 1942447SN/A FaultStat & countStat() {return _count;} 1952447SN/A}; 1962131SN/A 1972447SN/Aclass DtbPageFault : public MipsFault 1982131SN/A{ 1992447SN/A private: 2002447SN/A static FaultName _name; 2012447SN/A static FaultVect _vect; 2022447SN/A static FaultStat _count; 2032131SN/A public: 2044695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 2052447SN/A FaultVect vect() {return _vect;} 2062447SN/A FaultStat & countStat() {return _count;} 2072447SN/A}; 2082131SN/A 2092447SN/Aclass DtbAcvFault : public MipsFault 2102131SN/A{ 2112447SN/A private: 2122447SN/A static FaultName _name; 2132447SN/A static FaultVect _vect; 2142447SN/A static FaultStat _count; 2152131SN/A public: 2164695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 2172447SN/A FaultVect vect() {return _vect;} 2182447SN/A FaultStat & countStat() {return _count;} 2192447SN/A}; 2202131SN/A 2215222Sksewell@umich.educlass CacheErrorFault : public MipsFault 2225222Sksewell@umich.edu{ 2235222Sksewell@umich.edu private: 2245222Sksewell@umich.edu Addr vaddr; 2255222Sksewell@umich.edu static FaultName _name; 2265222Sksewell@umich.edu static FaultVect _vect; 2275222Sksewell@umich.edu static FaultStat _count; 2285222Sksewell@umich.edu public: 2295222Sksewell@umich.edu FaultName name() const {return _name;} 2305222Sksewell@umich.edu FaultVect vect() {return _vect;} 2315222Sksewell@umich.edu FaultStat & countStat() {return _count;} 2325222Sksewell@umich.edu void invoke(ThreadContext * tc); 2335222Sksewell@umich.edu}; 2345222Sksewell@umich.edu 2355222Sksewell@umich.edu 2365222Sksewell@umich.edu 2375222Sksewell@umich.edu 2385222Sksewell@umich.edustatic inline Fault genMachineCheckFault() 2395222Sksewell@umich.edu{ 2405222Sksewell@umich.edu return new MachineCheckFault; 2415222Sksewell@umich.edu} 2425222Sksewell@umich.edu 2435222Sksewell@umich.edustatic inline Fault genAlignmentFault() 2445222Sksewell@umich.edu{ 2455222Sksewell@umich.edu return new AlignmentFault; 2465222Sksewell@umich.edu} 2475222Sksewell@umich.edu 2485222Sksewell@umich.educlass ResetFault : public MipsFault 2495222Sksewell@umich.edu{ 2505222Sksewell@umich.edu private: 2515222Sksewell@umich.edu static FaultName _name; 2525222Sksewell@umich.edu static FaultVect _vect; 2535222Sksewell@umich.edu static FaultStat _count; 2545222Sksewell@umich.edu public: 2555222Sksewell@umich.edu FaultName name() const {return _name;} 2565222Sksewell@umich.edu FaultVect vect() {return _vect;} 2575222Sksewell@umich.edu FaultStat & countStat() {return _count;} 2585222Sksewell@umich.edu void invoke(ThreadContext * tc); 2595222Sksewell@umich.edu 2605222Sksewell@umich.edu}; 2615222Sksewell@umich.educlass SystemCallFault : public MipsFault 2625222Sksewell@umich.edu{ 2635222Sksewell@umich.edu private: 2645222Sksewell@umich.edu static FaultName _name; 2655222Sksewell@umich.edu static FaultVect _vect; 2665222Sksewell@umich.edu static FaultStat _count; 2675222Sksewell@umich.edu public: 2685222Sksewell@umich.edu FaultName name() const {return _name;} 2695222Sksewell@umich.edu FaultVect vect() {return _vect;} 2705222Sksewell@umich.edu FaultStat & countStat() {return _count;} 2715222Sksewell@umich.edu void invoke(ThreadContext * tc); 2725222Sksewell@umich.edu}; 2735222Sksewell@umich.edu 2745222Sksewell@umich.educlass SoftResetFault : public MipsFault 2755222Sksewell@umich.edu{ 2765222Sksewell@umich.edu private: 2775222Sksewell@umich.edu static FaultName _name; 2785222Sksewell@umich.edu static FaultVect _vect; 2795222Sksewell@umich.edu static FaultStat _count; 2805222Sksewell@umich.edu public: 2815222Sksewell@umich.edu FaultName name() const {return _name;} 2825222Sksewell@umich.edu FaultVect vect() {return _vect;} 2835222Sksewell@umich.edu FaultStat & countStat() {return _count;} 2845222Sksewell@umich.edu void invoke(ThreadContext * tc); 2855222Sksewell@umich.edu}; 2865222Sksewell@umich.educlass DebugSingleStep : public MipsFault 2875222Sksewell@umich.edu{ 2885222Sksewell@umich.edu private: 2895222Sksewell@umich.edu static FaultName _name; 2905222Sksewell@umich.edu static FaultVect _vect; 2915222Sksewell@umich.edu static FaultStat _count; 2925222Sksewell@umich.edu public: 2935222Sksewell@umich.edu FaultName name() const {return _name;} 2945222Sksewell@umich.edu FaultVect vect() {return _vect;} 2955222Sksewell@umich.edu FaultStat & countStat() {return _count;} 2965222Sksewell@umich.edu void invoke(ThreadContext * tc); 2975222Sksewell@umich.edu}; 2985222Sksewell@umich.educlass DebugInterrupt : public MipsFault 2995222Sksewell@umich.edu{ 3005222Sksewell@umich.edu private: 3015222Sksewell@umich.edu static FaultName _name; 3025222Sksewell@umich.edu static FaultVect _vect; 3035222Sksewell@umich.edu static FaultStat _count; 3045222Sksewell@umich.edu public: 3055222Sksewell@umich.edu FaultName name() const {return _name;} 3065222Sksewell@umich.edu FaultVect vect() {return _vect;} 3075222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3085222Sksewell@umich.edu void invoke(ThreadContext * tc); 3095222Sksewell@umich.edu}; 3105222Sksewell@umich.edu 3115222Sksewell@umich.educlass CoprocessorUnusableFault : public MipsFault 3125222Sksewell@umich.edu{ 3135222Sksewell@umich.edu private: 3145222Sksewell@umich.edu static FaultName _name; 3155222Sksewell@umich.edu static FaultVect _vect; 3165222Sksewell@umich.edu static FaultStat _count; 3175222Sksewell@umich.edu int coProcID; 3185222Sksewell@umich.edu public: 3195222Sksewell@umich.edu FaultName name() const {return _name;} 3205222Sksewell@umich.edu FaultVect vect() {return _vect;} 3215222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3225222Sksewell@umich.edu void invoke(ThreadContext * tc); 3235222Sksewell@umich.edu CoprocessorUnusableFault(int _procid){ coProcID = _procid;} 3245222Sksewell@umich.edu}; 3255222Sksewell@umich.edu 3265222Sksewell@umich.educlass ReservedInstructionFault : public MipsFault 3275222Sksewell@umich.edu{ 3285222Sksewell@umich.edu private: 3295222Sksewell@umich.edu static FaultName _name; 3305222Sksewell@umich.edu static FaultVect _vect; 3315222Sksewell@umich.edu static FaultStat _count; 3325222Sksewell@umich.edu public: 3335222Sksewell@umich.edu FaultName name() const {return _name;} 3345222Sksewell@umich.edu FaultVect vect() {return _vect;} 3355222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3365222Sksewell@umich.edu void invoke(ThreadContext * tc); 3375222Sksewell@umich.edu}; 3385222Sksewell@umich.edu 3395222Sksewell@umich.educlass ThreadFault : public MipsFault 3405222Sksewell@umich.edu{ 3415222Sksewell@umich.edu private: 3425222Sksewell@umich.edu static FaultName _name; 3435222Sksewell@umich.edu static FaultVect _vect; 3445222Sksewell@umich.edu static FaultStat _count; 3455222Sksewell@umich.edu public: 3465222Sksewell@umich.edu FaultName name() const {return _name;} 3475222Sksewell@umich.edu FaultVect vect() {return _vect;} 3485222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3495222Sksewell@umich.edu void invoke(ThreadContext * tc); 3505222Sksewell@umich.edu}; 3515222Sksewell@umich.edu 3525222Sksewell@umich.edu 3535222Sksewell@umich.educlass ArithmeticFault : public MipsFault 3545222Sksewell@umich.edu{ 3555222Sksewell@umich.edu protected: 3565222Sksewell@umich.edu bool skipFaultingInstruction() {return true;} 3575222Sksewell@umich.edu private: 3585222Sksewell@umich.edu static FaultName _name; 3595222Sksewell@umich.edu static FaultVect _vect; 3605222Sksewell@umich.edu static FaultStat _count; 3615222Sksewell@umich.edu public: 3625222Sksewell@umich.edu FaultName name() const {return _name;} 3635222Sksewell@umich.edu FaultVect vect() {return _vect;} 3645222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3655222Sksewell@umich.edu#if FULL_SYSTEM 3665222Sksewell@umich.edu void invoke(ThreadContext * tc); 3675222Sksewell@umich.edu#endif 3685222Sksewell@umich.edu}; 3695222Sksewell@umich.edu 3705222Sksewell@umich.educlass InterruptFault : public MipsFault 3715222Sksewell@umich.edu{ 3725222Sksewell@umich.edu protected: 3735222Sksewell@umich.edu bool setRestartAddress() {return false;} 3745222Sksewell@umich.edu private: 3755222Sksewell@umich.edu static FaultName _name; 3765222Sksewell@umich.edu static FaultVect _vect; 3775222Sksewell@umich.edu static FaultStat _count; 3785222Sksewell@umich.edu public: 3795222Sksewell@umich.edu FaultName name() const {return _name;} 3805222Sksewell@umich.edu FaultVect vect() {return _vect;} 3815222Sksewell@umich.edu FaultStat & countStat() {return _count;} 3825222Sksewell@umich.edu 3835222Sksewell@umich.edu#if FULL_SYSTEM 3845222Sksewell@umich.edu void invoke(ThreadContext * tc); 3855222Sksewell@umich.edu#endif 3865222Sksewell@umich.edu 3875222Sksewell@umich.edu //void invoke(ThreadContext * tc); 3885222Sksewell@umich.edu}; 3895222Sksewell@umich.edu 3905222Sksewell@umich.educlass TrapFault : public MipsFault 3915222Sksewell@umich.edu{ 3925222Sksewell@umich.edu private: 3935222Sksewell@umich.edu static FaultName _name; 3945222Sksewell@umich.edu static FaultVect _vect; 3955222Sksewell@umich.edu static FaultStat _count; 3965222Sksewell@umich.edu public: 3975222Sksewell@umich.edu FaultName name() const {return _name;} 3985222Sksewell@umich.edu FaultVect vect() {return _vect;} 3995222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4005222Sksewell@umich.edu#if FULL_SYSTEM 4015222Sksewell@umich.edu void invoke(ThreadContext * tc); 4025222Sksewell@umich.edu#endif 4035222Sksewell@umich.edu}; 4045222Sksewell@umich.edu 4055222Sksewell@umich.educlass BreakpointFault : public MipsFault 4065222Sksewell@umich.edu{ 4075222Sksewell@umich.edu private: 4085222Sksewell@umich.edu static FaultName _name; 4095222Sksewell@umich.edu static FaultVect _vect; 4105222Sksewell@umich.edu static FaultStat _count; 4115222Sksewell@umich.edu public: 4125222Sksewell@umich.edu FaultName name() const {return _name;} 4135222Sksewell@umich.edu FaultVect vect() {return _vect;} 4145222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4155222Sksewell@umich.edu#if FULL_SYSTEM 4165222Sksewell@umich.edu void invoke(ThreadContext * tc); 4175222Sksewell@umich.edu#endif 4185222Sksewell@umich.edu}; 4195222Sksewell@umich.edu 4205222Sksewell@umich.educlass ItbRefillFault : public MipsFault 4215222Sksewell@umich.edu{ 4225222Sksewell@umich.edu private: 4235222Sksewell@umich.edu static FaultName _name; 4245222Sksewell@umich.edu static FaultVect _vect; 4255222Sksewell@umich.edu static FaultStat _count; 4265222Sksewell@umich.edu public: 4275222Sksewell@umich.edu FaultName name() const {return _name;} 4285222Sksewell@umich.edu FaultVect vect() {return _vect;} 4295222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4305222Sksewell@umich.edu#if FULL_SYSTEM 4315222Sksewell@umich.edu void invoke(ThreadContext * tc); 4325222Sksewell@umich.edu#endif 4335222Sksewell@umich.edu}; 4345222Sksewell@umich.educlass DtbRefillFault : public MipsFault 4355222Sksewell@umich.edu{ 4365222Sksewell@umich.edu private: 4375222Sksewell@umich.edu static FaultName _name; 4385222Sksewell@umich.edu static FaultVect _vect; 4395222Sksewell@umich.edu static FaultStat _count; 4405222Sksewell@umich.edu public: 4415222Sksewell@umich.edu FaultName name() const {return _name;} 4425222Sksewell@umich.edu FaultVect vect() {return _vect;} 4435222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4445222Sksewell@umich.edu#if FULL_SYSTEM 4455222Sksewell@umich.edu void invoke(ThreadContext * tc); 4465222Sksewell@umich.edu#endif 4475222Sksewell@umich.edu}; 4485222Sksewell@umich.edu 4495222Sksewell@umich.educlass ItbPageFault : public MipsFault 4505222Sksewell@umich.edu{ 4515222Sksewell@umich.edu private: 4525222Sksewell@umich.edu static FaultName _name; 4535222Sksewell@umich.edu static FaultVect _vect; 4545222Sksewell@umich.edu static FaultStat _count; 4555222Sksewell@umich.edu public: 4565222Sksewell@umich.edu FaultName name() const {return _name;} 4575222Sksewell@umich.edu FaultVect vect() {return _vect;} 4585222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4595222Sksewell@umich.edu#if FULL_SYSTEM 4605222Sksewell@umich.edu void invoke(ThreadContext * tc); 4615222Sksewell@umich.edu#endif 4625222Sksewell@umich.edu}; 4635222Sksewell@umich.edu 4645222Sksewell@umich.educlass ItbInvalidFault : public MipsFault 4655222Sksewell@umich.edu{ 4665222Sksewell@umich.edu private: 4675222Sksewell@umich.edu static FaultName _name; 4685222Sksewell@umich.edu static FaultVect _vect; 4695222Sksewell@umich.edu static FaultStat _count; 4705222Sksewell@umich.edu public: 4715222Sksewell@umich.edu FaultName name() const {return _name;} 4725222Sksewell@umich.edu FaultVect vect() {return _vect;} 4735222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4745222Sksewell@umich.edu#if FULL_SYSTEM 4755222Sksewell@umich.edu void invoke(ThreadContext * tc); 4765222Sksewell@umich.edu#endif 4775222Sksewell@umich.edu 4785222Sksewell@umich.edu}; 4795222Sksewell@umich.educlass TLBModifiedFault : public MipsFault 4805222Sksewell@umich.edu{ 4815222Sksewell@umich.edu private: 4825222Sksewell@umich.edu static FaultName _name; 4835222Sksewell@umich.edu static FaultVect _vect; 4845222Sksewell@umich.edu static FaultStat _count; 4855222Sksewell@umich.edu public: 4865222Sksewell@umich.edu FaultName name() const {return _name;} 4875222Sksewell@umich.edu FaultVect vect() {return _vect;} 4885222Sksewell@umich.edu FaultStat & countStat() {return _count;} 4895222Sksewell@umich.edu#if FULL_SYSTEM 4905222Sksewell@umich.edu void invoke(ThreadContext * tc); 4915222Sksewell@umich.edu#endif 4925222Sksewell@umich.edu 4935222Sksewell@umich.edu}; 4945222Sksewell@umich.edu 4955222Sksewell@umich.educlass DtbInvalidFault : public MipsFault 4965222Sksewell@umich.edu{ 4975222Sksewell@umich.edu private: 4985222Sksewell@umich.edu static FaultName _name; 4995222Sksewell@umich.edu static FaultVect _vect; 5005222Sksewell@umich.edu static FaultStat _count; 5015222Sksewell@umich.edu public: 5025222Sksewell@umich.edu FaultName name() const {return _name;} 5035222Sksewell@umich.edu FaultVect vect() {return _vect;} 5045222Sksewell@umich.edu FaultStat & countStat() {return _count;} 5055222Sksewell@umich.edu#if FULL_SYSTEM 5065222Sksewell@umich.edu void invoke(ThreadContext * tc); 5075222Sksewell@umich.edu#endif 5085222Sksewell@umich.edu 5095222Sksewell@umich.edu}; 5105222Sksewell@umich.edu 5115222Sksewell@umich.educlass FloatEnableFault : public MipsFault 5125222Sksewell@umich.edu{ 5135222Sksewell@umich.edu private: 5145222Sksewell@umich.edu static FaultName _name; 5155222Sksewell@umich.edu static FaultVect _vect; 5165222Sksewell@umich.edu static FaultStat _count; 5175222Sksewell@umich.edu public: 5185222Sksewell@umich.edu FaultName name() const {return _name;} 5195222Sksewell@umich.edu FaultVect vect() {return _vect;} 5205222Sksewell@umich.edu FaultStat & countStat() {return _count;} 5215222Sksewell@umich.edu}; 5225222Sksewell@umich.edu 5232447SN/Aclass ItbMissFault : public MipsFault 5242131SN/A{ 5252447SN/A private: 5262447SN/A static FaultName _name; 5272447SN/A static FaultVect _vect; 5282447SN/A static FaultStat _count; 5292131SN/A public: 5304695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 5312447SN/A FaultVect vect() {return _vect;} 5322447SN/A FaultStat & countStat() {return _count;} 5332447SN/A}; 5342131SN/A 5352447SN/Aclass ItbAcvFault : public MipsFault 5362131SN/A{ 5372447SN/A private: 5382447SN/A static FaultName _name; 5392447SN/A static FaultVect _vect; 5402447SN/A static FaultStat _count; 5412131SN/A public: 5424695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 5432447SN/A FaultVect vect() {return _vect;} 5442447SN/A FaultStat & countStat() {return _count;} 5452447SN/A}; 5462131SN/A 5472447SN/Aclass IntegerOverflowFault : public MipsFault 5482447SN/A{ 5492447SN/A private: 5502447SN/A static FaultName _name; 5512447SN/A static FaultVect _vect; 5522447SN/A static FaultStat _count; 5532447SN/A public: 5544695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 5552447SN/A FaultVect vect() {return _vect;} 5562447SN/A FaultStat & countStat() {return _count;} 5572447SN/A}; 5582447SN/A 5594661Sksewell@umich.educlass DspStateDisabledFault : public MipsFault 5604661Sksewell@umich.edu{ 5614661Sksewell@umich.edu private: 5624661Sksewell@umich.edu static FaultName _name; 5634661Sksewell@umich.edu static FaultVect _vect; 5644661Sksewell@umich.edu static FaultStat _count; 5654661Sksewell@umich.edu public: 5664695Sgblack@eecs.umich.edu FaultName name() const {return _name;} 5674661Sksewell@umich.edu FaultVect vect() {return _vect;} 5684661Sksewell@umich.edu FaultStat & countStat() {return _count;} 5694661Sksewell@umich.edu void invoke(ThreadContext * tc); 5704661Sksewell@umich.edu}; 5714661Sksewell@umich.edu 5722447SN/A} // MipsISA namespace 5732131SN/A 5745222Sksewell@umich.edu#endif // __MIPS_FAULTS_HH__ 575