faults.hh (8567:d154cd83c353) faults.hh (8568:83f728db3332)
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * Copyright (c) 2007 MIPS Technologies, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 77 unchanged lines hidden (view full) ---

86};
87
88class NonMaskableInterrupt : public MipsFault<NonMaskableInterrupt>
89{
90 public:
91 bool isNonMaskableInterrupt() {return true;}
92};
93
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * Copyright (c) 2007 MIPS Technologies, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 77 unchanged lines hidden (view full) ---

86};
87
88class NonMaskableInterrupt : public MipsFault<NonMaskableInterrupt>
89{
90 public:
91 bool isNonMaskableInterrupt() {return true;}
92};
93
94class AlignmentFault : public MipsFault<AlignmentFault>
95{
96 public:
97 bool isAlignmentFault() {return true;}
98};
99
100class AddressErrorFault : public MipsFault<AddressErrorFault>
101{
102 public:
103 AddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
104#if FULL_SYSTEM
105 void invoke(ThreadContext * tc,
106 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
107#endif

--- 5 unchanged lines hidden (view full) ---

113 public:
114 StoreAddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
115#if FULL_SYSTEM
116 void invoke(ThreadContext * tc,
117 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
118#endif
119};
120
94class AddressErrorFault : public MipsFault<AddressErrorFault>
95{
96 public:
97 AddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
98#if FULL_SYSTEM
99 void invoke(ThreadContext * tc,
100 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
101#endif

--- 5 unchanged lines hidden (view full) ---

107 public:
108 StoreAddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
109#if FULL_SYSTEM
110 void invoke(ThreadContext * tc,
111 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
112#endif
113};
114
121class UnimplementedOpcodeFault : public MipsFault<UnimplementedOpcodeFault> {};
122
123class TLBRefillIFetchFault : public MipsFault<TLBRefillIFetchFault>
124{
125 public:
126 void invoke(ThreadContext * tc,
127 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
128};
129
130class TLBInvalidIFetchFault : public MipsFault<TLBInvalidIFetchFault>
131{
132 public:
133 void invoke(ThreadContext * tc,
134 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
135};
136
137class NDtbMissFault : public MipsFault<NDtbMissFault> {};
138class PDtbMissFault : public MipsFault<PDtbMissFault> {};
139class DtbPageFault : public MipsFault<DtbPageFault> {};
140class DtbAcvFault : public MipsFault<DtbAcvFault> {};
141
142static inline Fault genMachineCheckFault()
143{
144 return new MachineCheckFault;
145}
146
115static inline Fault genMachineCheckFault()
116{
117 return new MachineCheckFault;
118}
119
147static inline Fault genAlignmentFault()
148{
149 return new AlignmentFault;
150}
151
152class ResetFault : public MipsFault<ResetFault>
153{
154 public:
155 void invoke(ThreadContext * tc,
156 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
157
158};
159

--- 8 unchanged lines hidden (view full) ---

168
169class SoftResetFault : public MipsFault<SoftResetFault>
170{
171 public:
172 void invoke(ThreadContext * tc,
173 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
174};
175
120class ResetFault : public MipsFault<ResetFault>
121{
122 public:
123 void invoke(ThreadContext * tc,
124 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
125
126};
127

--- 8 unchanged lines hidden (view full) ---

136
137class SoftResetFault : public MipsFault<SoftResetFault>
138{
139 public:
140 void invoke(ThreadContext * tc,
141 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
142};
143
176class DebugSingleStep : public MipsFault<DebugSingleStep>
177{
178 public:
179 void invoke(ThreadContext * tc,
180 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
181};
182
183class DebugInterrupt : public MipsFault<DebugInterrupt>
184{
185 public:
186 void invoke(ThreadContext * tc,
187 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
188};
189
190class CoprocessorUnusableFault : public MipsFault<CoprocessorUnusableFault>
191{
192 protected:
193 int coProcID;
194 public:
195 CoprocessorUnusableFault(int _procid) : coProcID(_procid)
196 {}
197

--- 10 unchanged lines hidden (view full) ---

208
209class ThreadFault : public MipsFault<ThreadFault>
210{
211 public:
212 void invoke(ThreadContext * tc,
213 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
214};
215
144class CoprocessorUnusableFault : public MipsFault<CoprocessorUnusableFault>
145{
146 protected:
147 int coProcID;
148 public:
149 CoprocessorUnusableFault(int _procid) : coProcID(_procid)
150 {}
151

--- 10 unchanged lines hidden (view full) ---

162
163class ThreadFault : public MipsFault<ThreadFault>
164{
165 public:
166 void invoke(ThreadContext * tc,
167 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
168};
169
216class ArithmeticFault : public MipsFault<ArithmeticFault>
170class IntegerOverflowFault : public MipsFault<IntegerOverflowFault>
217{
218 protected:
219 bool skipFaultingInstruction() {return true;}
220 public:
221#if FULL_SYSTEM
222 void invoke(ThreadContext * tc,
223 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
224#endif

--- 57 unchanged lines hidden (view full) ---

282 contextBadVPN2 = vpn >> 2;
283 }
284#if FULL_SYSTEM
285 void invoke(ThreadContext * tc,
286 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
287#endif
288};
289
171{
172 protected:
173 bool skipFaultingInstruction() {return true;}
174 public:
175#if FULL_SYSTEM
176 void invoke(ThreadContext * tc,
177 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
178#endif

--- 57 unchanged lines hidden (view full) ---

236 contextBadVPN2 = vpn >> 2;
237 }
238#if FULL_SYSTEM
239 void invoke(ThreadContext * tc,
240 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
241#endif
242};
243
290class ItbPageFault : public MipsFault<ItbPageFault>
291{
292 public:
293#if FULL_SYSTEM
294 void invoke(ThreadContext * tc,
295 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
296#endif
297};
298
299class ItbInvalidFault : public MipsFault<ItbInvalidFault>
300{
301 public:
302 ItbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
303 {
304 entryHiAsid = asid;
305 entryHiVPN2 = vpn >> 2;
306 entryHiVPN2X = vpn & 0x3;

--- 35 unchanged lines hidden (view full) ---

342 contextBadVPN2 = vpn >> 2;
343 }
344#if FULL_SYSTEM
345 void invoke(ThreadContext * tc,
346 StaticInst::StaticInstPtr inst = nullStaticInstPtr);
347#endif
348};
349
244class ItbInvalidFault : public MipsFault<ItbInvalidFault>
245{
246 public:
247 ItbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
248 {
249 entryHiAsid = asid;
250 entryHiVPN2 = vpn >> 2;
251 entryHiVPN2X = vpn & 0x3;

--- 35 unchanged lines hidden (view full) ---

287 contextBadVPN2 = vpn >> 2;
288 }
289#if FULL_SYSTEM
290 void invoke(ThreadContext * tc,
291 StaticInst::StaticInstPtr inst = nullStaticInstPtr);
292#endif
293};
294
350class FloatEnableFault : public MipsFault<FloatEnableFault> {};
351class ItbMissFault : public MipsFault<ItbMissFault> {};
352class ItbAcvFault : public MipsFault<ItbAcvFault> {};
353class IntegerOverflowFault : public MipsFault<IntegerOverflowFault> {};
354
355class DspStateDisabledFault : public MipsFault<DspStateDisabledFault>
356{
357 public:
358 void invoke(ThreadContext * tc,
359 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
360};
361
362} // namespace MipsISA
363
364#endif // __MIPS_FAULTS_HH__
295class DspStateDisabledFault : public MipsFault<DspStateDisabledFault>
296{
297 public:
298 void invoke(ThreadContext * tc,
299 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
300};
301
302} // namespace MipsISA
303
304#endif // __MIPS_FAULTS_HH__