faults.cc revision 2174
1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; 9 * redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution; 12 * neither the name of the copyright holders nor the names of its 13 * contributors may be used to endorse or promote products derived from 14 * this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29#include "arch/alpha/faults.hh" 30#include "cpu/exec_context.hh" 31 32namespace AlphaISA 33{ 34 35FaultName AlphaFault::_name = "alphafault"; 36FaultVect AlphaFault::_vect = 0x0000; 37FaultStat AlphaFault::_stat; 38 39FaultVect AlphaMachineCheckFault::_vect = 0x0401; 40FaultStat AlphaMachineCheckFault::_stat; 41 42FaultVect AlphaAlignmentFault::_vect = 0x0301; 43FaultStat AlphaAlignmentFault::_stat; 44 45FaultName ResetFault::_name = "reset"; 46FaultVect ResetFault::_vect = 0x0001; 47FaultStat ResetFault::_stat; 48 49FaultName ArithmeticFault::_name = "arith"; 50FaultVect ArithmeticFault::_vect = 0x0501; 51FaultStat ArithmeticFault::_stat; 52 53FaultName InterruptFault::_name = "interrupt"; 54FaultVect InterruptFault::_vect = 0x0101; 55FaultStat InterruptFault::_stat; 56 57FaultName NDtbMissFault::_name = "dtb_miss_single"; 58FaultVect NDtbMissFault::_vect = 0x0201; 59FaultStat NDtbMissFault::_stat; 60 61FaultName PDtbMissFault::_name = "dtb_miss_double"; 62FaultVect PDtbMissFault::_vect = 0x0281; 63FaultStat PDtbMissFault::_stat; 64 65FaultName DtbPageFault::_name = "dfault"; 66FaultVect DtbPageFault::_vect = 0x0381; 67FaultStat DtbPageFault::_stat; 68 69FaultName DtbAcvFault::_name = "dfault"; 70FaultVect DtbAcvFault::_vect = 0x0381; 71FaultStat DtbAcvFault::_stat; 72 73FaultName ItbMissFault::_name = "itbmiss"; 74FaultVect ItbMissFault::_vect = 0x0181; 75FaultStat ItbMissFault::_stat; 76 77FaultName ItbPageFault::_name = "itbmiss"; 78FaultVect ItbPageFault::_vect = 0x0181; 79FaultStat ItbPageFault::_stat; 80 81FaultName ItbAcvFault::_name = "iaccvio"; 82FaultVect ItbAcvFault::_vect = 0x0081; 83FaultStat ItbAcvFault::_stat; 84 85FaultName UnimplementedOpcodeFault::_name = "opdec"; 86FaultVect UnimplementedOpcodeFault::_vect = 0x0481; 87FaultStat UnimplementedOpcodeFault::_stat; 88 89FaultName FloatEnableFault::_name = "fen"; 90FaultVect FloatEnableFault::_vect = 0x0581; 91FaultStat FloatEnableFault::_stat; 92 93FaultName PalFault::_name = "pal"; 94FaultVect PalFault::_vect = 0x2001; 95FaultStat PalFault::_stat; 96 97FaultName IntegerOverflowFault::_name = "intover"; 98FaultVect IntegerOverflowFault::_vect = 0x0501; 99FaultStat IntegerOverflowFault::_stat; 100 101#if FULL_SYSTEM 102 103void AlphaFault::ev5_trap(ExecContext * xc) 104{ 105 xc->ev5_temp_trap(this); 106} 107 108void AlphaMachineCheckFault::ev5_trap(ExecContext * xc) 109{ 110 xc->ev5_temp_trap(this); 111} 112 113void AlphaAlignmentFault::ev5_trap(ExecContext * xc) 114{ 115 xc->ev5_temp_trap(this); 116} 117 118#endif 119 120} // namespace AlphaISA 121 122/*Fault * ListOfFaults[] = { 123 (Fault *)&NoFault, 124 (Fault *)&ResetFault, 125 (Fault *)&MachineCheckFault, 126 (Fault *)&ArithmeticFault, 127 (Fault *)&InterruptFault, 128 (Fault *)&NDtbMissFault, 129 (Fault *)&PDtbMissFault, 130 (Fault *)&AlignmentFault, 131 (Fault *)&DtbPageFault, 132 (Fault *)&DtbAcvFault, 133 (Fault *)&ItbMissFault, 134 (Fault *)&ItbPageFault, 135 (Fault *)&ItbAcvFault, 136 (Fault *)&UnimplementedOpcodeFault, 137 (Fault *)&FloatEnableFault, 138 (Fault *)&PalFault, 139 (Fault *)&IntegerOverflowFault, 140 }; 141 142int NumFaults = sizeof(ListOfFaults) / sizeof(Fault *);*/ 143