faults.hh (8572:62d4b366546f) faults.hh (8573:be51bef13962)
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

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

194{
195 public:
196#if FULL_SYSTEM
197 void invoke(ThreadContext * tc,
198 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
199#endif
200};
201
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

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

194{
195 public:
196#if FULL_SYSTEM
197 void invoke(ThreadContext * tc,
198 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
199#endif
200};
201
202class ItbRefillFault : public MipsFault<ItbRefillFault>
202class TlbRefillFault : public MipsFault<TlbRefillFault>
203{
203{
204 protected:
205 bool store;
204 public:
206 public:
205 ItbRefillFault(Addr asid, Addr vaddr, Addr vpn)
207 TlbRefillFault(Addr asid, Addr vaddr, Addr vpn, bool _store) :
208 store(_store)
206 {
207 entryHiAsid = asid;
208 entryHiVPN2 = vpn >> 2;
209 entryHiVPN2X = vpn & 0x3;
210 badVAddr = vaddr;
211 contextBadVPN2 = vpn >> 2;
212 }
213#if FULL_SYSTEM
214 void invoke(ThreadContext * tc,
215 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
216#endif
217};
218
209 {
210 entryHiAsid = asid;
211 entryHiVPN2 = vpn >> 2;
212 entryHiVPN2X = vpn & 0x3;
213 badVAddr = vaddr;
214 contextBadVPN2 = vpn >> 2;
215 }
216#if FULL_SYSTEM
217 void invoke(ThreadContext * tc,
218 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
219#endif
220};
221
219class DtbRefillFault : public MipsFault<DtbRefillFault>
222class TlbInvalidFault : public MipsFault<TlbInvalidFault>
220{
223{
224 protected:
225 bool store;
221 public:
226 public:
222 DtbRefillFault(Addr asid, Addr vaddr, Addr vpn)
227 TlbInvalidFault(Addr asid, Addr vaddr, Addr vpn, bool _store) :
228 store(_store)
223 {
224 entryHiAsid = asid;
225 entryHiVPN2 = vpn >> 2;
226 entryHiVPN2X = vpn & 0x3;
227 badVAddr = vaddr;
228 contextBadVPN2 = vpn >> 2;
229 }
230#if FULL_SYSTEM
231 void invoke(ThreadContext * tc,
232 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
233#endif
234};
235
229 {
230 entryHiAsid = asid;
231 entryHiVPN2 = vpn >> 2;
232 entryHiVPN2X = vpn & 0x3;
233 badVAddr = vaddr;
234 contextBadVPN2 = vpn >> 2;
235 }
236#if FULL_SYSTEM
237 void invoke(ThreadContext * tc,
238 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
239#endif
240};
241
236class ItbInvalidFault : public MipsFault<ItbInvalidFault>
237{
238 public:
239 ItbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
240 {
241 entryHiAsid = asid;
242 entryHiVPN2 = vpn >> 2;
243 entryHiVPN2X = vpn & 0x3;
244 badVAddr = vaddr;
245 contextBadVPN2 = vpn >> 2;
246 }
247#if FULL_SYSTEM
248 void invoke(ThreadContext * tc,
249 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
250#endif
251};
252
253class TLBModifiedFault : public MipsFault<TLBModifiedFault>
254{
255 public:
256 TLBModifiedFault(Addr asid, Addr vaddr, Addr vpn)
257 {
258 entryHiAsid = asid;
259 entryHiVPN2 = vpn >> 2;
260 entryHiVPN2X = vpn & 0x3;
261 badVAddr = vaddr;
262 contextBadVPN2 = vpn >> 2;
263 }
264#if FULL_SYSTEM
265 void invoke(ThreadContext * tc,
266 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
267#endif
268};
269
242class TLBModifiedFault : public MipsFault<TLBModifiedFault>
243{
244 public:
245 TLBModifiedFault(Addr asid, Addr vaddr, Addr vpn)
246 {
247 entryHiAsid = asid;
248 entryHiVPN2 = vpn >> 2;
249 entryHiVPN2X = vpn & 0x3;
250 badVAddr = vaddr;
251 contextBadVPN2 = vpn >> 2;
252 }
253#if FULL_SYSTEM
254 void invoke(ThreadContext * tc,
255 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
256#endif
257};
258
270class DtbInvalidFault : public MipsFault<DtbInvalidFault>
271{
272 public:
273 DtbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
274 {
275 entryHiAsid = asid;
276 entryHiVPN2 = vpn >> 2;
277 entryHiVPN2X = vpn & 0x3;
278 badVAddr = vaddr;
279 contextBadVPN2 = vpn >> 2;
280 }
281#if FULL_SYSTEM
282 void invoke(ThreadContext * tc,
283 StaticInst::StaticInstPtr inst = nullStaticInstPtr);
284#endif
285};
286
287class DspStateDisabledFault : public MipsFault<DspStateDisabledFault>
288{
289 public:
290 void invoke(ThreadContext * tc,
291 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
292};
293
294} // namespace MipsISA
295
296#endif // __MIPS_FAULTS_HH__
259class DspStateDisabledFault : public MipsFault<DspStateDisabledFault>
260{
261 public:
262 void invoke(ThreadContext * tc,
263 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
264};
265
266} // namespace MipsISA
267
268#endif // __MIPS_FAULTS_HH__