faults.hh revision 2090
16899SN/A/*
26899SN/A * Copyright (c) 2003-2005 The Regents of The University of Michigan
36899SN/A * All rights reserved.
46899SN/A *
56899SN/A * Redistribution and use in source and binary forms, with or without
66899SN/A * modification, are permitted provided that the following conditions are
76899SN/A * met: redistributions of source code must retain the above copyright
86899SN/A * notice, this list of conditions and the following disclaimer;
96899SN/A * redistributions in binary form must reproduce the above copyright
106899SN/A * notice, this list of conditions and the following disclaimer in the
116899SN/A * documentation and/or other materials provided with the distribution;
126899SN/A * neither the name of the copyright holders nor the names of its
136899SN/A * contributors may be used to endorse or promote products derived from
146899SN/A * this software without specific prior written permission.
156899SN/A *
166899SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
176899SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
186899SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
196899SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
206899SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
216899SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
226899SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
236899SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
246899SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
256899SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
266899SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
276899SN/A */
286899SN/A
296899SN/A#ifndef __ALPHA_FAULTS_HH__
307053SN/A#define __ALPHA_FAULTS_HH__
317053SN/A
326899SN/A#include "sim/faults.hh"
337055SN/A#include "arch/isa_traits.hh" //For the Addr type
348229Snate@binkert.org
357454SN/Aclass AlphaFault : public Fault
367055SN/A{
377632SBrad.Beckmann@amd.compublic:
386899SN/A        AlphaFault(char * newName, int newId, Addr newVect) : Fault(newName, newId), vect(newVect) {;}
397053SN/A        TheISA::Addr vect;
406899SN/A};
418229Snate@binkert.org
428229Snate@binkert.orgextern class ResetFaultType : public AlphaFault
436899SN/A{
446899SN/Apublic:
457053SN/A        ResetFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
466899SN/A} * ResetFault;
477053SN/A
488922Swilliam.wang@arm.comextern class ArithmeticFaultType : public AlphaFault
497053SN/A{
507053SN/Apublic:
517053SN/A        ArithmeticFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
526899SN/A} * ArithmeticFault;
537053SN/A
548932SBrad.Beckmann@amd.comextern class InterruptFaultType : public AlphaFault
558932SBrad.Beckmann@amd.com{
568932SBrad.Beckmann@amd.compublic:
578932SBrad.Beckmann@amd.com        InterruptFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
588932SBrad.Beckmann@amd.com} * InterruptFault;
598932SBrad.Beckmann@amd.com
608950Sandreas.hansson@arm.comextern class NDtbMissFaultType : public AlphaFault
618950Sandreas.hansson@arm.com{
627053SN/Apublic:
636899SN/A        NDtbMissFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
647053SN/A} * NDtbMissFault;
656899SN/A
667053SN/Aextern class PDtbMissFaultType : public AlphaFault
677053SN/A{
688922Swilliam.wang@arm.compublic:
698922Swilliam.wang@arm.com        PDtbMissFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
707053SN/A} * PDtbMissFault;
716899SN/A
727053SN/Aextern class DtbPageFaultType : public AlphaFault
737053SN/A{
747053SN/Apublic:
757053SN/A        DtbPageFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
766899SN/A} * DtbPageFault;
777053SN/A
787053SN/Aextern class DtbAcvFaultType : public AlphaFault
797053SN/A{
807053SN/Apublic:
817053SN/A        DtbAcvFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
827053SN/A} * DtbAcvFault;
836899SN/A
847053SN/Aextern class ItbMissFaultType : public AlphaFault
857053SN/A{
867053SN/Apublic:
877053SN/A        ItbMissFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
887053SN/A} * ItbMissFault;
896899SN/A
907053SN/Aextern class ItbPageFaultType : public AlphaFault
917053SN/A{
927053SN/Apublic:
936899SN/A        ItbPageFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
948922Swilliam.wang@arm.com} * ItbPageFault;
958922Swilliam.wang@arm.com
966899SN/Aextern class ItbAcvFaultType : public AlphaFault
978950Sandreas.hansson@arm.com{
988950Sandreas.hansson@arm.compublic:
998932SBrad.Beckmann@amd.com        ItbAcvFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
1008932SBrad.Beckmann@amd.com} * ItbAcvFault;
1016899SN/A
1027053SN/Aextern class UnimplementedOpcodeFaultType : public AlphaFault
1036899SN/A{
1047053SN/Apublic:
1056899SN/A        UnimplementedOpcodeFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
1067053SN/A} * UnimplementedOpcodeFault;
1076899SN/A
1087055SN/Aextern class FloatEnableFaultType : public AlphaFault
1097053SN/A{
1107055SN/Apublic:
1116899SN/A        FloatEnableFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
1127055SN/A} * FloatEnableFault;
1138184Ssomayeh@cs.wisc.edu
1146899SN/Aextern class PalFaultType : public AlphaFault
1158832SAli.Saidi@ARM.com{
1167053SN/Apublic:
1177053SN/A        PalFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
1187053SN/A} * PalFault;
1197053SN/A
1207053SN/Aextern class IntegerOverflowFaultType : public AlphaFault
1216899SN/A{
1227053SN/Apublic:
1237053SN/A        IntegerOverflowFaultType(char * newName, int newId, Addr newVect) : AlphaFault(newName, newId, newVect) {;}
1247053SN/A} * IntegerOverflowFault;
1257053SN/A
1267053SN/Aextern Fault ** ListOfFaults[];
1277053SN/Aextern int NumFaults;
1287053SN/A
1297053SN/A#endif // __FAULTS_HH__
1307053SN/A