faults.hh revision 2175
17405SAli.Saidi@ARM.com/* 27405SAli.Saidi@ARM.com * Copyright (c) 2003-2005 The Regents of The University of Michigan 37405SAli.Saidi@ARM.com * All rights reserved. 47405SAli.Saidi@ARM.com * 57405SAli.Saidi@ARM.com * Redistribution and use in source and binary forms, with or without 67405SAli.Saidi@ARM.com * modification, are permitted provided that the following conditions are 77405SAli.Saidi@ARM.com * met: redistributions of source code must retain the above copyright 87405SAli.Saidi@ARM.com * notice, this list of conditions and the following disclaimer; 97405SAli.Saidi@ARM.com * redistributions in binary form must reproduce the above copyright 107405SAli.Saidi@ARM.com * notice, this list of conditions and the following disclaimer in the 117405SAli.Saidi@ARM.com * documentation and/or other materials provided with the distribution; 127405SAli.Saidi@ARM.com * neither the name of the copyright holders nor the names of its 137405SAli.Saidi@ARM.com * contributors may be used to endorse or promote products derived from 147405SAli.Saidi@ARM.com * this software without specific prior written permission. 157405SAli.Saidi@ARM.com * 167405SAli.Saidi@ARM.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 177405SAli.Saidi@ARM.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 187405SAli.Saidi@ARM.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 197405SAli.Saidi@ARM.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 207405SAli.Saidi@ARM.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 217405SAli.Saidi@ARM.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 227405SAli.Saidi@ARM.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 237405SAli.Saidi@ARM.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 247405SAli.Saidi@ARM.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 257405SAli.Saidi@ARM.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 267405SAli.Saidi@ARM.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 277405SAli.Saidi@ARM.com */ 287405SAli.Saidi@ARM.com 297405SAli.Saidi@ARM.com#ifndef __ALPHA_FAULTS_HH__ 307405SAli.Saidi@ARM.com#define __ALPHA_FAULTS_HH__ 317405SAli.Saidi@ARM.com 327405SAli.Saidi@ARM.com#include "sim/faults.hh" 337405SAli.Saidi@ARM.com 347405SAli.Saidi@ARM.com// The design of the "name" and "vect" functions is in sim/faults.hh 357405SAli.Saidi@ARM.com 367405SAli.Saidi@ARM.comnamespace AlphaISA 377405SAli.Saidi@ARM.com{ 387405SAli.Saidi@ARM.com 397405SAli.Saidi@ARM.comtypedef const Addr FaultVect; 407405SAli.Saidi@ARM.com 417405SAli.Saidi@ARM.comclass AlphaFault : public virtual FaultBase 427405SAli.Saidi@ARM.com{ 437405SAli.Saidi@ARM.com public: 447405SAli.Saidi@ARM.com#if FULL_SYSTEM 457405SAli.Saidi@ARM.com void ev5_trap(ExecContext * xc); 467427Sgblack@eecs.umich.edu#endif 477427Sgblack@eecs.umich.edu virtual FaultVect vect() = 0; 487427Sgblack@eecs.umich.edu}; 497427Sgblack@eecs.umich.edu 507427Sgblack@eecs.umich.educlass AlphaMachineCheckFault : 517427Sgblack@eecs.umich.edu public MachineCheckFault, 527427Sgblack@eecs.umich.edu public AlphaFault 537427Sgblack@eecs.umich.edu{ 547427Sgblack@eecs.umich.edu private: 557427Sgblack@eecs.umich.edu static FaultVect _vect; 567427Sgblack@eecs.umich.edu static FaultStat _stat; 577427Sgblack@eecs.umich.edu public: 587604SGene.Wu@arm.com#if FULL_SYSTEM 597427Sgblack@eecs.umich.edu void ev5_trap(ExecContext * xc); 607427Sgblack@eecs.umich.edu#endif 617427Sgblack@eecs.umich.edu FaultVect vect() {return _vect;} 627427Sgblack@eecs.umich.edu FaultStat & stat() {return _stat;} 637427Sgblack@eecs.umich.edu}; 647427Sgblack@eecs.umich.edu 657427Sgblack@eecs.umich.educlass AlphaAlignmentFault : 667427Sgblack@eecs.umich.edu public AlignmentFault, 677427Sgblack@eecs.umich.edu public AlphaFault 687427Sgblack@eecs.umich.edu{ 697427Sgblack@eecs.umich.edu private: 707427Sgblack@eecs.umich.edu static FaultVect _vect; 717427Sgblack@eecs.umich.edu static FaultStat _stat; 727427Sgblack@eecs.umich.edu public: 737427Sgblack@eecs.umich.edu#if FULL_SYSTEM 747427Sgblack@eecs.umich.edu void ev5_trap(ExecContext * xc); 757427Sgblack@eecs.umich.edu#endif 767427Sgblack@eecs.umich.edu FaultVect vect() {return _vect;} 777427Sgblack@eecs.umich.edu FaultStat & stat() {return _stat;} 787427Sgblack@eecs.umich.edu}; 797427Sgblack@eecs.umich.edu 807427Sgblack@eecs.umich.edustatic inline Fault genMachineCheckFault() 817427Sgblack@eecs.umich.edu{ 827427Sgblack@eecs.umich.edu return new AlphaMachineCheckFault; 837427Sgblack@eecs.umich.edu} 847427Sgblack@eecs.umich.edu 857427Sgblack@eecs.umich.edustatic inline Fault genAlignmentFault() 867427Sgblack@eecs.umich.edu{ 877427Sgblack@eecs.umich.edu return new AlphaAlignmentFault; 887427Sgblack@eecs.umich.edu} 897427Sgblack@eecs.umich.edu 907427Sgblack@eecs.umich.educlass ResetFault : public AlphaFault 917427Sgblack@eecs.umich.edu{ 927427Sgblack@eecs.umich.edu private: 937427Sgblack@eecs.umich.edu static FaultName _name; 947427Sgblack@eecs.umich.edu static FaultVect _vect; 957427Sgblack@eecs.umich.edu static FaultStat _stat; 967427Sgblack@eecs.umich.edu public: 977427Sgblack@eecs.umich.edu FaultName name() {return _name;} 987427Sgblack@eecs.umich.edu FaultVect vect() {return _vect;} 997427Sgblack@eecs.umich.edu FaultStat & stat() {return _stat;} 1007427Sgblack@eecs.umich.edu}; 1017427Sgblack@eecs.umich.edu 1027427Sgblack@eecs.umich.educlass ArithmeticFault : public AlphaFault 1037427Sgblack@eecs.umich.edu{ 1047427Sgblack@eecs.umich.edu private: 1057427Sgblack@eecs.umich.edu static FaultName _name; 1067427Sgblack@eecs.umich.edu static FaultVect _vect; 1077427Sgblack@eecs.umich.edu static FaultStat _stat; 1087427Sgblack@eecs.umich.edu public: 1097427Sgblack@eecs.umich.edu FaultName name() {return _name;} 1107427Sgblack@eecs.umich.edu FaultVect vect() {return _vect;} 1117427Sgblack@eecs.umich.edu FaultStat & stat() {return _stat;} 1127427Sgblack@eecs.umich.edu}; 1137427Sgblack@eecs.umich.edu 1147427Sgblack@eecs.umich.educlass InterruptFault : public AlphaFault 1157427Sgblack@eecs.umich.edu{ 1167427Sgblack@eecs.umich.edu private: 1177427Sgblack@eecs.umich.edu static FaultName _name; 1187427Sgblack@eecs.umich.edu static FaultVect _vect; 1197427Sgblack@eecs.umich.edu static FaultStat _stat; 1207427Sgblack@eecs.umich.edu public: 1217436Sdam.sunwoo@arm.com FaultName name() {return _name;} 1227436Sdam.sunwoo@arm.com FaultVect vect() {return _vect;} 1237436Sdam.sunwoo@arm.com FaultStat & stat() {return _stat;} 1247436Sdam.sunwoo@arm.com}; 1257436Sdam.sunwoo@arm.com 1267436Sdam.sunwoo@arm.comclass NDtbMissFault : public AlphaFault 1277436Sdam.sunwoo@arm.com{ 1287436Sdam.sunwoo@arm.com private: 1297436Sdam.sunwoo@arm.com static FaultName _name; 1307436Sdam.sunwoo@arm.com static FaultVect _vect; 1317436Sdam.sunwoo@arm.com static FaultStat _stat; 1327436Sdam.sunwoo@arm.com public: 1337436Sdam.sunwoo@arm.com FaultName name() {return _name;} 1347436Sdam.sunwoo@arm.com FaultVect vect() {return _vect;} 1357436Sdam.sunwoo@arm.com FaultStat & stat() {return _stat;} 1367436Sdam.sunwoo@arm.com}; 1377436Sdam.sunwoo@arm.com 1387436Sdam.sunwoo@arm.comclass PDtbMissFault : public AlphaFault 1397436Sdam.sunwoo@arm.com{ 1407436Sdam.sunwoo@arm.com private: 1417436Sdam.sunwoo@arm.com static FaultName _name; 1427436Sdam.sunwoo@arm.com static FaultVect _vect; 1437436Sdam.sunwoo@arm.com static FaultStat _stat; 1447436Sdam.sunwoo@arm.com public: 1457436Sdam.sunwoo@arm.com FaultName name() {return _name;} 1467436Sdam.sunwoo@arm.com FaultVect vect() {return _vect;} 1477436Sdam.sunwoo@arm.com FaultStat & stat() {return _stat;} 1487436Sdam.sunwoo@arm.com}; 1497436Sdam.sunwoo@arm.com 1507436Sdam.sunwoo@arm.comclass DtbPageFault : public AlphaFault 1517436Sdam.sunwoo@arm.com{ 1527436Sdam.sunwoo@arm.com private: 1537427Sgblack@eecs.umich.edu static FaultName _name; 1547427Sgblack@eecs.umich.edu static FaultVect _vect; 1557427Sgblack@eecs.umich.edu static FaultStat _stat; 1567405SAli.Saidi@ARM.com public: 1577405SAli.Saidi@ARM.com FaultName name() {return _name;} 1587405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 1597405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 1607405SAli.Saidi@ARM.com}; 1617405SAli.Saidi@ARM.com 1627405SAli.Saidi@ARM.comclass DtbAcvFault : public AlphaFault 1637405SAli.Saidi@ARM.com{ 1647405SAli.Saidi@ARM.com private: 1657405SAli.Saidi@ARM.com static FaultName _name; 1667405SAli.Saidi@ARM.com static FaultVect _vect; 1677405SAli.Saidi@ARM.com static FaultStat _stat; 1687405SAli.Saidi@ARM.com public: 1697405SAli.Saidi@ARM.com FaultName name() {return _name;} 1707405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 1717405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 1727405SAli.Saidi@ARM.com}; 1737405SAli.Saidi@ARM.com 1747405SAli.Saidi@ARM.comclass ItbMissFault : public AlphaFault 1757405SAli.Saidi@ARM.com{ 1767405SAli.Saidi@ARM.com private: 1777405SAli.Saidi@ARM.com static FaultName _name; 1787405SAli.Saidi@ARM.com static FaultVect _vect; 1797405SAli.Saidi@ARM.com static FaultStat _stat; 1807405SAli.Saidi@ARM.com public: 1817405SAli.Saidi@ARM.com FaultName name() {return _name;} 1827405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 1837405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 1847405SAli.Saidi@ARM.com}; 1857405SAli.Saidi@ARM.com 1867405SAli.Saidi@ARM.comclass ItbPageFault : public AlphaFault 1877405SAli.Saidi@ARM.com{ 1887405SAli.Saidi@ARM.com private: 1897405SAli.Saidi@ARM.com static FaultName _name; 1907405SAli.Saidi@ARM.com static FaultVect _vect; 1917405SAli.Saidi@ARM.com static FaultStat _stat; 1927405SAli.Saidi@ARM.com public: 1937405SAli.Saidi@ARM.com FaultName name() {return _name;} 1947405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 1957405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 1967405SAli.Saidi@ARM.com}; 1977405SAli.Saidi@ARM.com 1987405SAli.Saidi@ARM.comclass ItbAcvFault : public AlphaFault 1997405SAli.Saidi@ARM.com{ 2007405SAli.Saidi@ARM.com private: 2017405SAli.Saidi@ARM.com static FaultName _name; 2027405SAli.Saidi@ARM.com static FaultVect _vect; 2037405SAli.Saidi@ARM.com static FaultStat _stat; 2047405SAli.Saidi@ARM.com public: 2057405SAli.Saidi@ARM.com FaultName name() {return _name;} 2067405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 2077405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 2087405SAli.Saidi@ARM.com}; 2097405SAli.Saidi@ARM.com 2107405SAli.Saidi@ARM.comclass UnimplementedOpcodeFault : public AlphaFault 2117405SAli.Saidi@ARM.com{ 2127405SAli.Saidi@ARM.com private: 2137405SAli.Saidi@ARM.com static FaultName _name; 2147405SAli.Saidi@ARM.com static FaultVect _vect; 2157588SAli.Saidi@arm.com static FaultStat _stat; 2167588SAli.Saidi@arm.com public: 2177588SAli.Saidi@arm.com FaultName name() {return _name;} 2187583SAli.Saidi@arm.com FaultVect vect() {return _vect;} 2197583SAli.Saidi@arm.com FaultStat & stat() {return _stat;} 2207583SAli.Saidi@arm.com}; 2217583SAli.Saidi@arm.com 2227583SAli.Saidi@arm.comclass FloatEnableFault : public AlphaFault 2237583SAli.Saidi@arm.com{ 2247583SAli.Saidi@arm.com private: 2257583SAli.Saidi@arm.com static FaultName _name; 2267583SAli.Saidi@arm.com static FaultVect _vect; 2277583SAli.Saidi@arm.com static FaultStat _stat; 2287583SAli.Saidi@arm.com public: 2297583SAli.Saidi@arm.com FaultName name() {return _name;} 2307583SAli.Saidi@arm.com FaultVect vect() {return _vect;} 2317583SAli.Saidi@arm.com FaultStat & stat() {return _stat;} 2327405SAli.Saidi@ARM.com}; 2337405SAli.Saidi@ARM.com 2347405SAli.Saidi@ARM.comclass PalFault : public AlphaFault 2357405SAli.Saidi@ARM.com{ 2367405SAli.Saidi@ARM.com private: 2377405SAli.Saidi@ARM.com static FaultName _name; 2387405SAli.Saidi@ARM.com static FaultVect _vect; 2397405SAli.Saidi@ARM.com static FaultStat _stat; 2407405SAli.Saidi@ARM.com public: 2417405SAli.Saidi@ARM.com FaultName name() {return _name;} 2427405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 2437405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 2447405SAli.Saidi@ARM.com}; 2457405SAli.Saidi@ARM.com 2467405SAli.Saidi@ARM.comclass IntegerOverflowFault : public AlphaFault 2477405SAli.Saidi@ARM.com{ 2487405SAli.Saidi@ARM.com private: 2497405SAli.Saidi@ARM.com static FaultName _name; 2507405SAli.Saidi@ARM.com static FaultVect _vect; 2517405SAli.Saidi@ARM.com static FaultStat _stat; 2527405SAli.Saidi@ARM.com public: 2537405SAli.Saidi@ARM.com FaultName name() {return _name;} 2547405SAli.Saidi@ARM.com FaultVect vect() {return _vect;} 2557405SAli.Saidi@ARM.com FaultStat & stat() {return _stat;} 2567405SAli.Saidi@ARM.com}; 2577405SAli.Saidi@ARM.com 2587405SAli.Saidi@ARM.com} // AlphaISA namespace 2597405SAli.Saidi@ARM.com 2607405SAli.Saidi@ARM.com#endif // __FAULTS_HH__ 2617405SAli.Saidi@ARM.com