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; --- 21 unchanged lines hidden (view full) --- 30 */ 31 32#ifndef __ALPHA_FAULTS_HH__ 33#define __ALPHA_FAULTS_HH__ 34 35#include "config/full_system.hh" 36#include "sim/faults.hh" 37 |
38#include "arch/alpha/pagetable.hh" |
39 40// The design of the "name" and "vect" functions is in sim/faults.hh 41 42namespace AlphaISA 43{ 44 45typedef const Addr FaultVect; 46 --- 86 unchanged lines hidden (view full) --- 133 public: 134 FaultName name() const {return _name;} 135 FaultVect vect() {return _vect;} 136 FaultStat & countStat() {return _count;} 137}; 138 139class DtbFault : public AlphaFault 140{ |
141 protected: |
142 AlphaISA::VAddr vaddr; 143 uint32_t reqFlags; 144 uint64_t flags; 145 public: 146 DtbFault(AlphaISA::VAddr _vaddr, uint32_t _reqFlags, uint64_t _flags) 147 : vaddr(_vaddr), reqFlags(_reqFlags), flags(_flags) 148 { } |
149 FaultName name() const = 0; 150 FaultVect vect() = 0; 151 FaultStat & countStat() = 0; 152#if FULL_SYSTEM 153 void invoke(ThreadContext * tc); 154#endif 155}; 156 157class NDtbMissFault : public DtbFault 158{ 159 private: 160 static FaultName _name; 161 static FaultVect _vect; 162 static FaultStat _count; 163 public: |
164 NDtbMissFault(AlphaISA::VAddr vaddr, uint32_t reqFlags, uint64_t flags) 165 : DtbFault(vaddr, reqFlags, flags) 166 { } |
167 FaultName name() const {return _name;} 168 FaultVect vect() {return _vect;} 169 FaultStat & countStat() {return _count;} |
170#if !FULL_SYSTEM 171 void invoke(ThreadContext * tc); 172#endif |
173}; 174 175class PDtbMissFault : public DtbFault 176{ 177 private: 178 static FaultName _name; 179 static FaultVect _vect; 180 static FaultStat _count; 181 public: |
182 PDtbMissFault(AlphaISA::VAddr vaddr, uint32_t reqFlags, uint64_t flags) 183 : DtbFault(vaddr, reqFlags, flags) 184 { } |
185 FaultName name() const {return _name;} 186 FaultVect vect() {return _vect;} 187 FaultStat & countStat() {return _count;} 188}; 189 190class DtbPageFault : public DtbFault 191{ 192 private: 193 static FaultName _name; 194 static FaultVect _vect; 195 static FaultStat _count; 196 public: |
197 DtbPageFault(AlphaISA::VAddr vaddr, uint32_t reqFlags, uint64_t flags) 198 : DtbFault(vaddr, reqFlags, flags) 199 { } |
200 FaultName name() const {return _name;} 201 FaultVect vect() {return _vect;} 202 FaultStat & countStat() {return _count;} 203}; 204 205class DtbAcvFault : public DtbFault 206{ 207 private: 208 static FaultName _name; 209 static FaultVect _vect; 210 static FaultStat _count; 211 public: |
212 DtbAcvFault(AlphaISA::VAddr vaddr, uint32_t reqFlags, uint64_t flags) 213 : DtbFault(vaddr, reqFlags, flags) 214 { } |
215 FaultName name() const {return _name;} 216 FaultVect vect() {return _vect;} 217 FaultStat & countStat() {return _count;} 218}; 219 220class DtbAlignmentFault : public DtbFault 221{ 222 private: 223 static FaultName _name; 224 static FaultVect _vect; 225 static FaultStat _count; 226 public: |
227 DtbAlignmentFault(AlphaISA::VAddr vaddr, uint32_t reqFlags, uint64_t flags) 228 : DtbFault(vaddr, reqFlags, flags) 229 { } |
230 FaultName name() const {return _name;} 231 FaultVect vect() {return _vect;} 232 FaultStat & countStat() {return _count;} 233}; 234 235class ItbFault : public AlphaFault 236{ |
237 protected: |
238 Addr pc; 239 public: 240 ItbFault(Addr _pc) 241 : pc(_pc) 242 { } 243 FaultName name() const = 0; 244 FaultVect vect() = 0; 245 FaultStat & countStat() = 0; 246#if FULL_SYSTEM 247 void invoke(ThreadContext * tc); 248#endif 249}; 250 |
251class ItbPageFault : public ItbFault 252{ 253 private: 254 static FaultName _name; 255 static FaultVect _vect; 256 static FaultStat _count; 257 public: 258 ItbPageFault(Addr pc) 259 : ItbFault(pc) 260 { } 261 FaultName name() const {return _name;} 262 FaultVect vect() {return _vect;} 263 FaultStat & countStat() {return _count;} |
264#if !FULL_SYSTEM 265 void invoke(ThreadContext * tc); 266#endif |
267}; 268 269class ItbAcvFault : public ItbFault 270{ 271 private: 272 static FaultName _name; 273 static FaultVect _vect; 274 static FaultStat _count; --- 62 unchanged lines hidden --- |