faults.hh (8591:8f23aeaf6a91) | faults.hh (8780:89e0822462a1) |
---|---|
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; --- 19 unchanged lines hidden (view full) --- 28 * Authors: Gabe Black 29 * Kevin Lim 30 */ 31 32#ifndef __ARCH_ALPHA_FAULTS_HH__ 33#define __ARCH_ALPHA_FAULTS_HH__ 34 35#include "arch/alpha/pagetable.hh" | 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; --- 19 unchanged lines hidden (view full) --- 28 * Authors: Gabe Black 29 * Kevin Lim 30 */ 31 32#ifndef __ARCH_ALPHA_FAULTS_HH__ 33#define __ARCH_ALPHA_FAULTS_HH__ 34 35#include "arch/alpha/pagetable.hh" |
36#include "config/full_system.hh" | |
37#include "mem/request.hh" 38#include "sim/faults.hh" 39 40// The design of the "name" and "vect" functions is in sim/faults.hh 41 42namespace AlphaISA { 43 44typedef const Addr FaultVect; 45 46class AlphaFault : public FaultBase 47{ 48 protected: 49 virtual bool skipFaultingInstruction() {return false;} 50 virtual bool setRestartAddress() {return true;} 51 public: | 36#include "mem/request.hh" 37#include "sim/faults.hh" 38 39// The design of the "name" and "vect" functions is in sim/faults.hh 40 41namespace AlphaISA { 42 43typedef const Addr FaultVect; 44 45class AlphaFault : public FaultBase 46{ 47 protected: 48 virtual bool skipFaultingInstruction() {return false;} 49 virtual bool setRestartAddress() {return true;} 50 public: |
52#if FULL_SYSTEM | |
53 void invoke(ThreadContext * tc, 54 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 51 void invoke(ThreadContext * tc, 52 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
55#endif | |
56 virtual FaultVect vect() = 0; 57 virtual FaultStat & countStat() = 0; 58}; 59 60class MachineCheckFault : public AlphaFault 61{ 62 private: 63 static FaultName _name; --- 42 unchanged lines hidden (view full) --- 106 107 protected: 108 bool skipFaultingInstruction() {return true;} 109 110 public: 111 FaultName name() const {return _name;} 112 FaultVect vect() {return _vect;} 113 FaultStat & countStat() {return _count;} | 53 virtual FaultVect vect() = 0; 54 virtual FaultStat & countStat() = 0; 55}; 56 57class MachineCheckFault : public AlphaFault 58{ 59 private: 60 static FaultName _name; --- 42 unchanged lines hidden (view full) --- 103 104 protected: 105 bool skipFaultingInstruction() {return true;} 106 107 public: 108 FaultName name() const {return _name;} 109 FaultVect vect() {return _vect;} 110 FaultStat & countStat() {return _count;} |
114#if FULL_SYSTEM | |
115 void invoke(ThreadContext * tc, 116 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 111 void invoke(ThreadContext * tc, 112 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
117#endif | |
118}; 119 120class InterruptFault : public AlphaFault 121{ 122 private: 123 static FaultName _name; 124 static FaultVect _vect; 125 static FaultStat _count; --- 16 unchanged lines hidden (view full) --- 142 143 public: 144 DtbFault(VAddr _vaddr, Request::Flags _reqFlags, uint64_t _flags) 145 : vaddr(_vaddr), reqFlags(_reqFlags), flags(_flags) 146 { } 147 FaultName name() const = 0; 148 FaultVect vect() = 0; 149 FaultStat & countStat() = 0; | 113}; 114 115class InterruptFault : public AlphaFault 116{ 117 private: 118 static FaultName _name; 119 static FaultVect _vect; 120 static FaultStat _count; --- 16 unchanged lines hidden (view full) --- 137 138 public: 139 DtbFault(VAddr _vaddr, Request::Flags _reqFlags, uint64_t _flags) 140 : vaddr(_vaddr), reqFlags(_reqFlags), flags(_flags) 141 { } 142 FaultName name() const = 0; 143 FaultVect vect() = 0; 144 FaultStat & countStat() = 0; |
150#if FULL_SYSTEM | |
151 void invoke(ThreadContext * tc, 152 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 145 void invoke(ThreadContext * tc, 146 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
153#endif | |
154}; 155 156class NDtbMissFault : public DtbFault 157{ 158 private: 159 static FaultName _name; 160 static FaultVect _vect; 161 static FaultStat _count; 162 163 public: 164 NDtbMissFault(VAddr vaddr, Request::Flags 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;} | 147}; 148 149class NDtbMissFault : public DtbFault 150{ 151 private: 152 static FaultName _name; 153 static FaultVect _vect; 154 static FaultStat _count; 155 156 public: 157 NDtbMissFault(VAddr vaddr, Request::Flags reqFlags, uint64_t flags) 158 : DtbFault(vaddr, reqFlags, flags) 159 { } 160 FaultName name() const {return _name;} 161 FaultVect vect() {return _vect;} 162 FaultStat & countStat() {return _count;} |
170#if !FULL_SYSTEM | |
171 void invoke(ThreadContext * tc, 172 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 163 void invoke(ThreadContext * tc, 164 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
173#endif | |
174}; 175 176class PDtbMissFault : public DtbFault 177{ 178 private: 179 static FaultName _name; 180 static FaultVect _vect; 181 static FaultStat _count; --- 60 unchanged lines hidden (view full) --- 242 protected: 243 Addr pc; 244 245 public: 246 ItbFault(Addr _pc) : pc(_pc) { } 247 FaultName name() const = 0; 248 FaultVect vect() = 0; 249 FaultStat & countStat() = 0; | 165}; 166 167class PDtbMissFault : public DtbFault 168{ 169 private: 170 static FaultName _name; 171 static FaultVect _vect; 172 static FaultStat _count; --- 60 unchanged lines hidden (view full) --- 233 protected: 234 Addr pc; 235 236 public: 237 ItbFault(Addr _pc) : pc(_pc) { } 238 FaultName name() const = 0; 239 FaultVect vect() = 0; 240 FaultStat & countStat() = 0; |
250#if FULL_SYSTEM | |
251 void invoke(ThreadContext * tc, 252 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 241 void invoke(ThreadContext * tc, 242 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
253#endif | |
254}; 255 256class ItbPageFault : public ItbFault 257{ 258 private: 259 static FaultName _name; 260 static FaultVect _vect; 261 static FaultStat _count; 262 263 public: 264 ItbPageFault(Addr pc) : ItbFault(pc) { } 265 FaultName name() const {return _name;} 266 FaultVect vect() {return _vect;} 267 FaultStat & countStat() {return _count;} | 243}; 244 245class ItbPageFault : public ItbFault 246{ 247 private: 248 static FaultName _name; 249 static FaultVect _vect; 250 static FaultStat _count; 251 252 public: 253 ItbPageFault(Addr pc) : ItbFault(pc) { } 254 FaultName name() const {return _name;} 255 FaultVect vect() {return _vect;} 256 FaultStat & countStat() {return _count;} |
268#if !FULL_SYSTEM | |
269 void invoke(ThreadContext * tc, 270 StaticInstPtr inst = StaticInst::nullStaticInstPtr); | 257 void invoke(ThreadContext * tc, 258 StaticInstPtr inst = StaticInst::nullStaticInstPtr); |
271#endif | |
272}; 273 274class ItbAcvFault : public ItbFault 275{ 276 private: 277 static FaultName _name; 278 static FaultVect _vect; 279 static FaultStat _count; --- 66 unchanged lines hidden --- | 259}; 260 261class ItbAcvFault : public ItbFault 262{ 263 private: 264 static FaultName _name; 265 static FaultVect _vect; 266 static FaultStat _count; --- 66 unchanged lines hidden --- |