faults.hh revision 6019
16019Shines@cs.fsu.edu/* 26019Shines@cs.fsu.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan 36019Shines@cs.fsu.edu * Copyright (c) 2007-2008 The Florida State University 46019Shines@cs.fsu.edu * All rights reserved. 56019Shines@cs.fsu.edu * 66019Shines@cs.fsu.edu * Redistribution and use in source and binary forms, with or without 76019Shines@cs.fsu.edu * modification, are permitted provided that the following conditions are 86019Shines@cs.fsu.edu * met: redistributions of source code must retain the above copyright 96019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer; 106019Shines@cs.fsu.edu * redistributions in binary form must reproduce the above copyright 116019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer in the 126019Shines@cs.fsu.edu * documentation and/or other materials provided with the distribution; 136019Shines@cs.fsu.edu * neither the name of the copyright holders nor the names of its 146019Shines@cs.fsu.edu * contributors may be used to endorse or promote products derived from 156019Shines@cs.fsu.edu * this software without specific prior written permission. 166019Shines@cs.fsu.edu * 176019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 186019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 196019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 206019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 216019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 226019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 236019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 246019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 256019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 266019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 276019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 286019Shines@cs.fsu.edu * 296019Shines@cs.fsu.edu * Authors: Gabe Black 306019Shines@cs.fsu.edu * Stephen Hines 316019Shines@cs.fsu.edu */ 326019Shines@cs.fsu.edu 336019Shines@cs.fsu.edu#ifndef __ARM_FAULTS_HH__ 346019Shines@cs.fsu.edu#define __ARM_FAULTS_HH__ 356019Shines@cs.fsu.edu 366019Shines@cs.fsu.edu#include "sim/faults.hh" 376019Shines@cs.fsu.edu 386019Shines@cs.fsu.edu// The design of the "name" and "vect" functions is in sim/faults.hh 396019Shines@cs.fsu.edu 406019Shines@cs.fsu.edunamespace ArmISA 416019Shines@cs.fsu.edu{ 426019Shines@cs.fsu.edutypedef const Addr FaultVect; 436019Shines@cs.fsu.edu 446019Shines@cs.fsu.educlass ArmFault : public FaultBase 456019Shines@cs.fsu.edu{ 466019Shines@cs.fsu.edu protected: 476019Shines@cs.fsu.edu virtual bool skipFaultingInstruction() {return false;} 486019Shines@cs.fsu.edu virtual bool setRestartAddress() {return true;} 496019Shines@cs.fsu.edu public: 506019Shines@cs.fsu.edu Addr BadVAddr; 516019Shines@cs.fsu.edu Addr EntryHi_Asid; 526019Shines@cs.fsu.edu Addr EntryHi_VPN2; 536019Shines@cs.fsu.edu Addr EntryHi_VPN2X; 546019Shines@cs.fsu.edu Addr Context_BadVPN2; 556019Shines@cs.fsu.edu#if FULL_SYSTEM 566019Shines@cs.fsu.edu void invoke(ThreadContext * tc) {}; 576019Shines@cs.fsu.edu void setExceptionState(ThreadContext *,uint8_t); 586019Shines@cs.fsu.edu void setHandlerPC(Addr,ThreadContext *); 596019Shines@cs.fsu.edu#endif 606019Shines@cs.fsu.edu virtual FaultVect vect() = 0; 616019Shines@cs.fsu.edu virtual FaultStat & countStat() = 0; 626019Shines@cs.fsu.edu}; 636019Shines@cs.fsu.edu 646019Shines@cs.fsu.educlass MachineCheckFault : public ArmFault 656019Shines@cs.fsu.edu{ 666019Shines@cs.fsu.edu private: 676019Shines@cs.fsu.edu static FaultName _name; 686019Shines@cs.fsu.edu static FaultVect _vect; 696019Shines@cs.fsu.edu static FaultStat _count; 706019Shines@cs.fsu.edu public: 716019Shines@cs.fsu.edu FaultName name() const {return _name;} 726019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 736019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 746019Shines@cs.fsu.edu bool isMachineCheckFault() {return true;} 756019Shines@cs.fsu.edu}; 766019Shines@cs.fsu.edu 776019Shines@cs.fsu.educlass NonMaskableInterrupt : public ArmFault 786019Shines@cs.fsu.edu{ 796019Shines@cs.fsu.edu private: 806019Shines@cs.fsu.edu static FaultName _name; 816019Shines@cs.fsu.edu static FaultVect _vect; 826019Shines@cs.fsu.edu static FaultStat _count; 836019Shines@cs.fsu.edu public: 846019Shines@cs.fsu.edu FaultName name() const {return _name;} 856019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 866019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 876019Shines@cs.fsu.edu bool isNonMaskableInterrupt() {return true;} 886019Shines@cs.fsu.edu}; 896019Shines@cs.fsu.edu 906019Shines@cs.fsu.educlass AlignmentFault : public ArmFault 916019Shines@cs.fsu.edu{ 926019Shines@cs.fsu.edu private: 936019Shines@cs.fsu.edu static FaultName _name; 946019Shines@cs.fsu.edu static FaultVect _vect; 956019Shines@cs.fsu.edu static FaultStat _count; 966019Shines@cs.fsu.edu public: 976019Shines@cs.fsu.edu FaultName name() const {return _name;} 986019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 996019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1006019Shines@cs.fsu.edu bool isAlignmentFault() {return true;} 1016019Shines@cs.fsu.edu}; 1026019Shines@cs.fsu.edu 1036019Shines@cs.fsu.educlass AddressErrorFault : public ArmFault 1046019Shines@cs.fsu.edu{ 1056019Shines@cs.fsu.edu private: 1066019Shines@cs.fsu.edu static FaultName _name; 1076019Shines@cs.fsu.edu static FaultVect _vect; 1086019Shines@cs.fsu.edu static FaultStat _count; 1096019Shines@cs.fsu.edu public: 1106019Shines@cs.fsu.edu FaultName name() const {return _name;} 1116019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1126019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1136019Shines@cs.fsu.edu#if FULL_SYSTEM 1146019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 1156019Shines@cs.fsu.edu#endif 1166019Shines@cs.fsu.edu 1176019Shines@cs.fsu.edu}; 1186019Shines@cs.fsu.educlass StoreAddressErrorFault : public ArmFault 1196019Shines@cs.fsu.edu{ 1206019Shines@cs.fsu.edu private: 1216019Shines@cs.fsu.edu static FaultName _name; 1226019Shines@cs.fsu.edu static FaultVect _vect; 1236019Shines@cs.fsu.edu static FaultStat _count; 1246019Shines@cs.fsu.edu public: 1256019Shines@cs.fsu.edu FaultName name() const {return _name;} 1266019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1276019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1286019Shines@cs.fsu.edu#if FULL_SYSTEM 1296019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 1306019Shines@cs.fsu.edu#endif 1316019Shines@cs.fsu.edu 1326019Shines@cs.fsu.edu}; 1336019Shines@cs.fsu.educlass UnimplementedOpcodeFault : public ArmFault 1346019Shines@cs.fsu.edu{ 1356019Shines@cs.fsu.edu private: 1366019Shines@cs.fsu.edu static FaultName _name; 1376019Shines@cs.fsu.edu static FaultVect _vect; 1386019Shines@cs.fsu.edu static FaultStat _count; 1396019Shines@cs.fsu.edu public: 1406019Shines@cs.fsu.edu FaultName name() const {return _name;} 1416019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1426019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1436019Shines@cs.fsu.edu}; 1446019Shines@cs.fsu.edu 1456019Shines@cs.fsu.edu 1466019Shines@cs.fsu.educlass TLBRefillIFetchFault : public ArmFault 1476019Shines@cs.fsu.edu{ 1486019Shines@cs.fsu.edu private: 1496019Shines@cs.fsu.edu Addr vaddr; 1506019Shines@cs.fsu.edu static FaultName _name; 1516019Shines@cs.fsu.edu static FaultVect _vect; 1526019Shines@cs.fsu.edu static FaultStat _count; 1536019Shines@cs.fsu.edu public: 1546019Shines@cs.fsu.edu FaultName name() const {return _name;} 1556019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1566019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1576019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 1586019Shines@cs.fsu.edu}; 1596019Shines@cs.fsu.educlass TLBInvalidIFetchFault : public ArmFault 1606019Shines@cs.fsu.edu{ 1616019Shines@cs.fsu.edu private: 1626019Shines@cs.fsu.edu Addr vaddr; 1636019Shines@cs.fsu.edu static FaultName _name; 1646019Shines@cs.fsu.edu static FaultVect _vect; 1656019Shines@cs.fsu.edu static FaultStat _count; 1666019Shines@cs.fsu.edu public: 1676019Shines@cs.fsu.edu FaultName name() const {return _name;} 1686019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1696019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1706019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 1716019Shines@cs.fsu.edu}; 1726019Shines@cs.fsu.edu 1736019Shines@cs.fsu.educlass NDtbMissFault : public ArmFault 1746019Shines@cs.fsu.edu{ 1756019Shines@cs.fsu.edu private: 1766019Shines@cs.fsu.edu static FaultName _name; 1776019Shines@cs.fsu.edu static FaultVect _vect; 1786019Shines@cs.fsu.edu static FaultStat _count; 1796019Shines@cs.fsu.edu public: 1806019Shines@cs.fsu.edu FaultName name() const {return _name;} 1816019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1826019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1836019Shines@cs.fsu.edu}; 1846019Shines@cs.fsu.edu 1856019Shines@cs.fsu.educlass PDtbMissFault : public ArmFault 1866019Shines@cs.fsu.edu{ 1876019Shines@cs.fsu.edu private: 1886019Shines@cs.fsu.edu static FaultName _name; 1896019Shines@cs.fsu.edu static FaultVect _vect; 1906019Shines@cs.fsu.edu static FaultStat _count; 1916019Shines@cs.fsu.edu public: 1926019Shines@cs.fsu.edu FaultName name() const {return _name;} 1936019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 1946019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 1956019Shines@cs.fsu.edu}; 1966019Shines@cs.fsu.edu 1976019Shines@cs.fsu.educlass DtbPageFault : public ArmFault 1986019Shines@cs.fsu.edu{ 1996019Shines@cs.fsu.edu private: 2006019Shines@cs.fsu.edu static FaultName _name; 2016019Shines@cs.fsu.edu static FaultVect _vect; 2026019Shines@cs.fsu.edu static FaultStat _count; 2036019Shines@cs.fsu.edu public: 2046019Shines@cs.fsu.edu FaultName name() const {return _name;} 2056019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2066019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2076019Shines@cs.fsu.edu}; 2086019Shines@cs.fsu.edu 2096019Shines@cs.fsu.educlass DtbAcvFault : public ArmFault 2106019Shines@cs.fsu.edu{ 2116019Shines@cs.fsu.edu private: 2126019Shines@cs.fsu.edu static FaultName _name; 2136019Shines@cs.fsu.edu static FaultVect _vect; 2146019Shines@cs.fsu.edu static FaultStat _count; 2156019Shines@cs.fsu.edu public: 2166019Shines@cs.fsu.edu FaultName name() const {return _name;} 2176019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2186019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2196019Shines@cs.fsu.edu}; 2206019Shines@cs.fsu.edu 2216019Shines@cs.fsu.educlass CacheErrorFault : public ArmFault 2226019Shines@cs.fsu.edu{ 2236019Shines@cs.fsu.edu private: 2246019Shines@cs.fsu.edu Addr vaddr; 2256019Shines@cs.fsu.edu static FaultName _name; 2266019Shines@cs.fsu.edu static FaultVect _vect; 2276019Shines@cs.fsu.edu static FaultStat _count; 2286019Shines@cs.fsu.edu public: 2296019Shines@cs.fsu.edu FaultName name() const {return _name;} 2306019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2316019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2326019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 2336019Shines@cs.fsu.edu}; 2346019Shines@cs.fsu.edu 2356019Shines@cs.fsu.edu 2366019Shines@cs.fsu.edu 2376019Shines@cs.fsu.edu 2386019Shines@cs.fsu.edustatic inline Fault genMachineCheckFault() 2396019Shines@cs.fsu.edu{ 2406019Shines@cs.fsu.edu return new MachineCheckFault; 2416019Shines@cs.fsu.edu} 2426019Shines@cs.fsu.edu 2436019Shines@cs.fsu.edustatic inline Fault genAlignmentFault() 2446019Shines@cs.fsu.edu{ 2456019Shines@cs.fsu.edu return new AlignmentFault; 2466019Shines@cs.fsu.edu} 2476019Shines@cs.fsu.edu 2486019Shines@cs.fsu.educlass ResetFault : public ArmFault 2496019Shines@cs.fsu.edu{ 2506019Shines@cs.fsu.edu private: 2516019Shines@cs.fsu.edu static FaultName _name; 2526019Shines@cs.fsu.edu static FaultVect _vect; 2536019Shines@cs.fsu.edu static FaultStat _count; 2546019Shines@cs.fsu.edu public: 2556019Shines@cs.fsu.edu FaultName name() const {return _name;} 2566019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2576019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2586019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 2596019Shines@cs.fsu.edu 2606019Shines@cs.fsu.edu}; 2616019Shines@cs.fsu.educlass SystemCallFault : public ArmFault 2626019Shines@cs.fsu.edu{ 2636019Shines@cs.fsu.edu private: 2646019Shines@cs.fsu.edu static FaultName _name; 2656019Shines@cs.fsu.edu static FaultVect _vect; 2666019Shines@cs.fsu.edu static FaultStat _count; 2676019Shines@cs.fsu.edu public: 2686019Shines@cs.fsu.edu FaultName name() const {return _name;} 2696019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2706019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2716019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 2726019Shines@cs.fsu.edu}; 2736019Shines@cs.fsu.edu 2746019Shines@cs.fsu.educlass SoftResetFault : public ArmFault 2756019Shines@cs.fsu.edu{ 2766019Shines@cs.fsu.edu private: 2776019Shines@cs.fsu.edu static FaultName _name; 2786019Shines@cs.fsu.edu static FaultVect _vect; 2796019Shines@cs.fsu.edu static FaultStat _count; 2806019Shines@cs.fsu.edu public: 2816019Shines@cs.fsu.edu FaultName name() const {return _name;} 2826019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2836019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2846019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 2856019Shines@cs.fsu.edu}; 2866019Shines@cs.fsu.educlass DebugSingleStep : public ArmFault 2876019Shines@cs.fsu.edu{ 2886019Shines@cs.fsu.edu private: 2896019Shines@cs.fsu.edu static FaultName _name; 2906019Shines@cs.fsu.edu static FaultVect _vect; 2916019Shines@cs.fsu.edu static FaultStat _count; 2926019Shines@cs.fsu.edu public: 2936019Shines@cs.fsu.edu FaultName name() const {return _name;} 2946019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 2956019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 2966019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 2976019Shines@cs.fsu.edu}; 2986019Shines@cs.fsu.educlass DebugInterrupt : public ArmFault 2996019Shines@cs.fsu.edu{ 3006019Shines@cs.fsu.edu private: 3016019Shines@cs.fsu.edu static FaultName _name; 3026019Shines@cs.fsu.edu static FaultVect _vect; 3036019Shines@cs.fsu.edu static FaultStat _count; 3046019Shines@cs.fsu.edu public: 3056019Shines@cs.fsu.edu FaultName name() const {return _name;} 3066019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3076019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3086019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3096019Shines@cs.fsu.edu}; 3106019Shines@cs.fsu.edu 3116019Shines@cs.fsu.educlass CoprocessorUnusableFault : public ArmFault 3126019Shines@cs.fsu.edu{ 3136019Shines@cs.fsu.edu private: 3146019Shines@cs.fsu.edu static FaultName _name; 3156019Shines@cs.fsu.edu static FaultVect _vect; 3166019Shines@cs.fsu.edu static FaultStat _count; 3176019Shines@cs.fsu.edu int coProcID; 3186019Shines@cs.fsu.edu public: 3196019Shines@cs.fsu.edu FaultName name() const {return _name;} 3206019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3216019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3226019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3236019Shines@cs.fsu.edu CoprocessorUnusableFault(int _procid){ coProcID = _procid;} 3246019Shines@cs.fsu.edu}; 3256019Shines@cs.fsu.edu 3266019Shines@cs.fsu.educlass ReservedInstructionFault : public ArmFault 3276019Shines@cs.fsu.edu{ 3286019Shines@cs.fsu.edu private: 3296019Shines@cs.fsu.edu static FaultName _name; 3306019Shines@cs.fsu.edu static FaultVect _vect; 3316019Shines@cs.fsu.edu static FaultStat _count; 3326019Shines@cs.fsu.edu public: 3336019Shines@cs.fsu.edu FaultName name() const {return _name;} 3346019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3356019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3366019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3376019Shines@cs.fsu.edu}; 3386019Shines@cs.fsu.edu 3396019Shines@cs.fsu.educlass ThreadFault : public ArmFault 3406019Shines@cs.fsu.edu{ 3416019Shines@cs.fsu.edu private: 3426019Shines@cs.fsu.edu static FaultName _name; 3436019Shines@cs.fsu.edu static FaultVect _vect; 3446019Shines@cs.fsu.edu static FaultStat _count; 3456019Shines@cs.fsu.edu public: 3466019Shines@cs.fsu.edu FaultName name() const {return _name;} 3476019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3486019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3496019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3506019Shines@cs.fsu.edu}; 3516019Shines@cs.fsu.edu 3526019Shines@cs.fsu.edu 3536019Shines@cs.fsu.educlass ArithmeticFault : public ArmFault 3546019Shines@cs.fsu.edu{ 3556019Shines@cs.fsu.edu protected: 3566019Shines@cs.fsu.edu bool skipFaultingInstruction() {return true;} 3576019Shines@cs.fsu.edu private: 3586019Shines@cs.fsu.edu static FaultName _name; 3596019Shines@cs.fsu.edu static FaultVect _vect; 3606019Shines@cs.fsu.edu static FaultStat _count; 3616019Shines@cs.fsu.edu public: 3626019Shines@cs.fsu.edu FaultName name() const {return _name;} 3636019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3646019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3656019Shines@cs.fsu.edu#if FULL_SYSTEM 3666019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3676019Shines@cs.fsu.edu#endif 3686019Shines@cs.fsu.edu}; 3696019Shines@cs.fsu.edu 3706019Shines@cs.fsu.educlass InterruptFault : public ArmFault 3716019Shines@cs.fsu.edu{ 3726019Shines@cs.fsu.edu protected: 3736019Shines@cs.fsu.edu bool setRestartAddress() {return false;} 3746019Shines@cs.fsu.edu private: 3756019Shines@cs.fsu.edu static FaultName _name; 3766019Shines@cs.fsu.edu static FaultVect _vect; 3776019Shines@cs.fsu.edu static FaultStat _count; 3786019Shines@cs.fsu.edu public: 3796019Shines@cs.fsu.edu FaultName name() const {return _name;} 3806019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3816019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 3826019Shines@cs.fsu.edu 3836019Shines@cs.fsu.edu#if FULL_SYSTEM 3846019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 3856019Shines@cs.fsu.edu#endif 3866019Shines@cs.fsu.edu 3876019Shines@cs.fsu.edu //void invoke(ThreadContext * tc); 3886019Shines@cs.fsu.edu}; 3896019Shines@cs.fsu.edu 3906019Shines@cs.fsu.educlass TrapFault : public ArmFault 3916019Shines@cs.fsu.edu{ 3926019Shines@cs.fsu.edu private: 3936019Shines@cs.fsu.edu static FaultName _name; 3946019Shines@cs.fsu.edu static FaultVect _vect; 3956019Shines@cs.fsu.edu static FaultStat _count; 3966019Shines@cs.fsu.edu public: 3976019Shines@cs.fsu.edu FaultName name() const {return _name;} 3986019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 3996019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4006019Shines@cs.fsu.edu#if FULL_SYSTEM 4016019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4026019Shines@cs.fsu.edu#endif 4036019Shines@cs.fsu.edu}; 4046019Shines@cs.fsu.edu 4056019Shines@cs.fsu.educlass BreakpointFault : public ArmFault 4066019Shines@cs.fsu.edu{ 4076019Shines@cs.fsu.edu private: 4086019Shines@cs.fsu.edu static FaultName _name; 4096019Shines@cs.fsu.edu static FaultVect _vect; 4106019Shines@cs.fsu.edu static FaultStat _count; 4116019Shines@cs.fsu.edu public: 4126019Shines@cs.fsu.edu FaultName name() const {return _name;} 4136019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4146019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4156019Shines@cs.fsu.edu#if FULL_SYSTEM 4166019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4176019Shines@cs.fsu.edu#endif 4186019Shines@cs.fsu.edu}; 4196019Shines@cs.fsu.edu 4206019Shines@cs.fsu.educlass ItbRefillFault : public ArmFault 4216019Shines@cs.fsu.edu{ 4226019Shines@cs.fsu.edu private: 4236019Shines@cs.fsu.edu static FaultName _name; 4246019Shines@cs.fsu.edu static FaultVect _vect; 4256019Shines@cs.fsu.edu static FaultStat _count; 4266019Shines@cs.fsu.edu public: 4276019Shines@cs.fsu.edu FaultName name() const {return _name;} 4286019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4296019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4306019Shines@cs.fsu.edu#if FULL_SYSTEM 4316019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4326019Shines@cs.fsu.edu#endif 4336019Shines@cs.fsu.edu}; 4346019Shines@cs.fsu.educlass DtbRefillFault : public ArmFault 4356019Shines@cs.fsu.edu{ 4366019Shines@cs.fsu.edu private: 4376019Shines@cs.fsu.edu static FaultName _name; 4386019Shines@cs.fsu.edu static FaultVect _vect; 4396019Shines@cs.fsu.edu static FaultStat _count; 4406019Shines@cs.fsu.edu public: 4416019Shines@cs.fsu.edu FaultName name() const {return _name;} 4426019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4436019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4446019Shines@cs.fsu.edu#if FULL_SYSTEM 4456019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4466019Shines@cs.fsu.edu#endif 4476019Shines@cs.fsu.edu}; 4486019Shines@cs.fsu.edu 4496019Shines@cs.fsu.educlass ItbPageFault : public ArmFault 4506019Shines@cs.fsu.edu{ 4516019Shines@cs.fsu.edu private: 4526019Shines@cs.fsu.edu static FaultName _name; 4536019Shines@cs.fsu.edu static FaultVect _vect; 4546019Shines@cs.fsu.edu static FaultStat _count; 4556019Shines@cs.fsu.edu public: 4566019Shines@cs.fsu.edu FaultName name() const {return _name;} 4576019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4586019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4596019Shines@cs.fsu.edu#if FULL_SYSTEM 4606019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4616019Shines@cs.fsu.edu#endif 4626019Shines@cs.fsu.edu}; 4636019Shines@cs.fsu.edu 4646019Shines@cs.fsu.educlass ItbInvalidFault : public ArmFault 4656019Shines@cs.fsu.edu{ 4666019Shines@cs.fsu.edu private: 4676019Shines@cs.fsu.edu static FaultName _name; 4686019Shines@cs.fsu.edu static FaultVect _vect; 4696019Shines@cs.fsu.edu static FaultStat _count; 4706019Shines@cs.fsu.edu public: 4716019Shines@cs.fsu.edu FaultName name() const {return _name;} 4726019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4736019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4746019Shines@cs.fsu.edu#if FULL_SYSTEM 4756019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4766019Shines@cs.fsu.edu#endif 4776019Shines@cs.fsu.edu 4786019Shines@cs.fsu.edu}; 4796019Shines@cs.fsu.educlass TLBModifiedFault : public ArmFault 4806019Shines@cs.fsu.edu{ 4816019Shines@cs.fsu.edu private: 4826019Shines@cs.fsu.edu static FaultName _name; 4836019Shines@cs.fsu.edu static FaultVect _vect; 4846019Shines@cs.fsu.edu static FaultStat _count; 4856019Shines@cs.fsu.edu public: 4866019Shines@cs.fsu.edu FaultName name() const {return _name;} 4876019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 4886019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 4896019Shines@cs.fsu.edu#if FULL_SYSTEM 4906019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 4916019Shines@cs.fsu.edu#endif 4926019Shines@cs.fsu.edu 4936019Shines@cs.fsu.edu}; 4946019Shines@cs.fsu.edu 4956019Shines@cs.fsu.educlass DtbInvalidFault : public ArmFault 4966019Shines@cs.fsu.edu{ 4976019Shines@cs.fsu.edu private: 4986019Shines@cs.fsu.edu static FaultName _name; 4996019Shines@cs.fsu.edu static FaultVect _vect; 5006019Shines@cs.fsu.edu static FaultStat _count; 5016019Shines@cs.fsu.edu public: 5026019Shines@cs.fsu.edu FaultName name() const {return _name;} 5036019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5046019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5056019Shines@cs.fsu.edu#if FULL_SYSTEM 5066019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 5076019Shines@cs.fsu.edu#endif 5086019Shines@cs.fsu.edu 5096019Shines@cs.fsu.edu}; 5106019Shines@cs.fsu.edu 5116019Shines@cs.fsu.educlass FloatEnableFault : public ArmFault 5126019Shines@cs.fsu.edu{ 5136019Shines@cs.fsu.edu private: 5146019Shines@cs.fsu.edu static FaultName _name; 5156019Shines@cs.fsu.edu static FaultVect _vect; 5166019Shines@cs.fsu.edu static FaultStat _count; 5176019Shines@cs.fsu.edu public: 5186019Shines@cs.fsu.edu FaultName name() const {return _name;} 5196019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5206019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5216019Shines@cs.fsu.edu}; 5226019Shines@cs.fsu.edu 5236019Shines@cs.fsu.educlass ItbMissFault : public ArmFault 5246019Shines@cs.fsu.edu{ 5256019Shines@cs.fsu.edu private: 5266019Shines@cs.fsu.edu static FaultName _name; 5276019Shines@cs.fsu.edu static FaultVect _vect; 5286019Shines@cs.fsu.edu static FaultStat _count; 5296019Shines@cs.fsu.edu public: 5306019Shines@cs.fsu.edu FaultName name() const {return _name;} 5316019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5326019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5336019Shines@cs.fsu.edu}; 5346019Shines@cs.fsu.edu 5356019Shines@cs.fsu.educlass ItbAcvFault : public ArmFault 5366019Shines@cs.fsu.edu{ 5376019Shines@cs.fsu.edu private: 5386019Shines@cs.fsu.edu static FaultName _name; 5396019Shines@cs.fsu.edu static FaultVect _vect; 5406019Shines@cs.fsu.edu static FaultStat _count; 5416019Shines@cs.fsu.edu public: 5426019Shines@cs.fsu.edu FaultName name() const {return _name;} 5436019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5446019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5456019Shines@cs.fsu.edu}; 5466019Shines@cs.fsu.edu 5476019Shines@cs.fsu.educlass IntegerOverflowFault : public ArmFault 5486019Shines@cs.fsu.edu{ 5496019Shines@cs.fsu.edu private: 5506019Shines@cs.fsu.edu static FaultName _name; 5516019Shines@cs.fsu.edu static FaultVect _vect; 5526019Shines@cs.fsu.edu static FaultStat _count; 5536019Shines@cs.fsu.edu public: 5546019Shines@cs.fsu.edu FaultName name() const {return _name;} 5556019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5566019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5576019Shines@cs.fsu.edu}; 5586019Shines@cs.fsu.edu 5596019Shines@cs.fsu.educlass DspStateDisabledFault : public ArmFault 5606019Shines@cs.fsu.edu{ 5616019Shines@cs.fsu.edu private: 5626019Shines@cs.fsu.edu static FaultName _name; 5636019Shines@cs.fsu.edu static FaultVect _vect; 5646019Shines@cs.fsu.edu static FaultStat _count; 5656019Shines@cs.fsu.edu public: 5666019Shines@cs.fsu.edu FaultName name() const {return _name;} 5676019Shines@cs.fsu.edu FaultVect vect() {return _vect;} 5686019Shines@cs.fsu.edu FaultStat & countStat() {return _count;} 5696019Shines@cs.fsu.edu void invoke(ThreadContext * tc); 5706019Shines@cs.fsu.edu}; 5716019Shines@cs.fsu.edu 5726019Shines@cs.fsu.edu} // ArmISA namespace 5736019Shines@cs.fsu.edu 5746019Shines@cs.fsu.edu#endif // __ARM_FAULTS_HH__ 575