faults.hh (4183:3d19c1d46946) | faults.hh (4695:a63378aed062) |
---|---|
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; --- 51 unchanged lines hidden (view full) --- 60 const TrapType trapType; 61 const FaultPriority priority; 62 const PrivilegeLevel nextPrivilegeLevel[NumLevels]; 63 FaultStat count; 64 }; 65#if FULL_SYSTEM 66 void invoke(ThreadContext * tc); 67#endif | 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; --- 51 unchanged lines hidden (view full) --- 60 const TrapType trapType; 61 const FaultPriority priority; 62 const PrivilegeLevel nextPrivilegeLevel[NumLevels]; 63 FaultStat count; 64 }; 65#if FULL_SYSTEM 66 void invoke(ThreadContext * tc); 67#endif |
68 virtual FaultName name() = 0; | |
69 virtual TrapType trapType() = 0; 70 virtual FaultPriority priority() = 0; 71 virtual FaultStat & countStat() = 0; 72 virtual PrivilegeLevel getNextLevel(PrivilegeLevel current) = 0; 73}; 74 75template<typename T> 76class SparcFault : public SparcFaultBase 77{ 78 protected: 79 static FaultVals vals; 80 public: | 68 virtual TrapType trapType() = 0; 69 virtual FaultPriority priority() = 0; 70 virtual FaultStat & countStat() = 0; 71 virtual PrivilegeLevel getNextLevel(PrivilegeLevel current) = 0; 72}; 73 74template<typename T> 75class SparcFault : public SparcFaultBase 76{ 77 protected: 78 static FaultVals vals; 79 public: |
81 FaultName name() {return vals.name;} | 80 FaultName name() const {return vals.name;} |
82 TrapType trapType() {return vals.trapType;} 83 FaultPriority priority() {return vals.priority;} 84 FaultStat & countStat() {return vals.count;} 85 PrivilegeLevel getNextLevel(PrivilegeLevel current) 86 { 87 return vals.nextPrivilegeLevel[current]; 88 } 89}; --- 38 unchanged lines hidden (view full) --- 128class CleanWindow : public SparcFault<CleanWindow> {}; 129 130class DivisionByZero : public SparcFault<DivisionByZero> {}; 131 132class InternalProcessorError : 133 public SparcFault<InternalProcessorError> 134{ 135 public: | 81 TrapType trapType() {return vals.trapType;} 82 FaultPriority priority() {return vals.priority;} 83 FaultStat & countStat() {return vals.count;} 84 PrivilegeLevel getNextLevel(PrivilegeLevel current) 85 { 86 return vals.nextPrivilegeLevel[current]; 87 } 88}; --- 38 unchanged lines hidden (view full) --- 127class CleanWindow : public SparcFault<CleanWindow> {}; 128 129class DivisionByZero : public SparcFault<DivisionByZero> {}; 130 131class InternalProcessorError : 132 public SparcFault<InternalProcessorError> 133{ 134 public: |
136 bool isMachineCheckFault() {return true;} | 135 bool isMachineCheckFault() const {return true;} |
137}; 138 139class InstructionInvalidTSBEntry : public SparcFault<InstructionInvalidTSBEntry> {}; 140 141class DataInvalidTSBEntry : public SparcFault<DataInvalidTSBEntry> {}; 142 143class DataAccessException : public SparcFault<DataAccessException> {}; 144 145//class DataAccessMMUMiss : public SparcFault<DataAccessMMUMiss> {}; 146 147class DataAccessError : public SparcFault<DataAccessError> {}; 148 149class DataAccessProtection : public SparcFault<DataAccessProtection> {}; 150 151class MemAddressNotAligned : 152 public SparcFault<MemAddressNotAligned> 153{ 154 public: | 136}; 137 138class InstructionInvalidTSBEntry : public SparcFault<InstructionInvalidTSBEntry> {}; 139 140class DataInvalidTSBEntry : public SparcFault<DataInvalidTSBEntry> {}; 141 142class DataAccessException : public SparcFault<DataAccessException> {}; 143 144//class DataAccessMMUMiss : public SparcFault<DataAccessMMUMiss> {}; 145 146class DataAccessError : public SparcFault<DataAccessError> {}; 147 148class DataAccessProtection : public SparcFault<DataAccessProtection> {}; 149 150class MemAddressNotAligned : 151 public SparcFault<MemAddressNotAligned> 152{ 153 public: |
155 bool isAlignmentFault() {return true;} | 154 bool isAlignmentFault() const {return true;} |
156}; 157 158class LDDFMemAddressNotAligned : public SparcFault<LDDFMemAddressNotAligned> {}; 159 160class STDFMemAddressNotAligned : public SparcFault<STDFMemAddressNotAligned> {}; 161 162class PrivilegedAction : public SparcFault<PrivilegedAction> {}; 163 --- 109 unchanged lines hidden --- | 155}; 156 157class LDDFMemAddressNotAligned : public SparcFault<LDDFMemAddressNotAligned> {}; 158 159class STDFMemAddressNotAligned : public SparcFault<STDFMemAddressNotAligned> {}; 160 161class PrivilegedAction : public SparcFault<PrivilegedAction> {}; 162 --- 109 unchanged lines hidden --- |