Deleted Added
sdiff udiff text old ( 8591:8f23aeaf6a91 ) new ( 8780:89e0822462a1 )
full compact
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:
52#if FULL_SYSTEM
53 void invoke(ThreadContext * tc,
54 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;}
114#if FULL_SYSTEM
115 void invoke(ThreadContext * tc,
116 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;
150#if FULL_SYSTEM
151 void invoke(ThreadContext * tc,
152 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;}
170#if !FULL_SYSTEM
171 void invoke(ThreadContext * tc,
172 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;
250#if FULL_SYSTEM
251 void invoke(ThreadContext * tc,
252 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;}
268#if !FULL_SYSTEM
269 void invoke(ThreadContext * tc,
270 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 ---