faults.hh (8566:812d279f7b51) faults.hh (8567:d154cd83c353)
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

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

95{
96 public:
97 bool isAlignmentFault() {return true;}
98};
99
100class AddressErrorFault : public MipsFault<AddressErrorFault>
101{
102 public:
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

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

95{
96 public:
97 bool isAlignmentFault() {return true;}
98};
99
100class AddressErrorFault : public MipsFault<AddressErrorFault>
101{
102 public:
103 AddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
103#if FULL_SYSTEM
104 void invoke(ThreadContext * tc,
105 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
106#endif
107
108};
109
110class StoreAddressErrorFault : public MipsFault<StoreAddressErrorFault>
111{
112 public:
104#if FULL_SYSTEM
105 void invoke(ThreadContext * tc,
106 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
107#endif
108
109};
110
111class StoreAddressErrorFault : public MipsFault<StoreAddressErrorFault>
112{
113 public:
114 StoreAddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
113#if FULL_SYSTEM
114 void invoke(ThreadContext * tc,
115 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
116#endif
117};
118
119class UnimplementedOpcodeFault : public MipsFault<UnimplementedOpcodeFault> {};
120

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

249 void invoke(ThreadContext * tc,
250 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
251#endif
252};
253
254class ItbRefillFault : public MipsFault<ItbRefillFault>
255{
256 public:
115#if FULL_SYSTEM
116 void invoke(ThreadContext * tc,
117 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
118#endif
119};
120
121class UnimplementedOpcodeFault : public MipsFault<UnimplementedOpcodeFault> {};
122

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

251 void invoke(ThreadContext * tc,
252 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
253#endif
254};
255
256class ItbRefillFault : public MipsFault<ItbRefillFault>
257{
258 public:
259 ItbRefillFault(Addr asid, Addr vaddr, Addr vpn)
260 {
261 entryHiAsid = asid;
262 entryHiVPN2 = vpn >> 2;
263 entryHiVPN2X = vpn & 0x3;
264 badVAddr = vaddr;
265 contextBadVPN2 = vpn >> 2;
266 }
257#if FULL_SYSTEM
258 void invoke(ThreadContext * tc,
259 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
260#endif
261};
262
263class DtbRefillFault : public MipsFault<DtbRefillFault>
264{
265 public:
267#if FULL_SYSTEM
268 void invoke(ThreadContext * tc,
269 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
270#endif
271};
272
273class DtbRefillFault : public MipsFault<DtbRefillFault>
274{
275 public:
276 DtbRefillFault(Addr asid, Addr vaddr, Addr vpn)
277 {
278 entryHiAsid = asid;
279 entryHiVPN2 = vpn >> 2;
280 entryHiVPN2X = vpn & 0x3;
281 badVAddr = vaddr;
282 contextBadVPN2 = vpn >> 2;
283 }
266#if FULL_SYSTEM
267 void invoke(ThreadContext * tc,
268 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
269#endif
270};
271
272class ItbPageFault : public MipsFault<ItbPageFault>
273{
274 public:
275#if FULL_SYSTEM
276 void invoke(ThreadContext * tc,
277 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
278#endif
279};
280
281class ItbInvalidFault : public MipsFault<ItbInvalidFault>
282{
283 public:
284#if FULL_SYSTEM
285 void invoke(ThreadContext * tc,
286 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
287#endif
288};
289
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;
307 badVAddr = vaddr;
308 contextBadVPN2 = vpn >> 2;
309 }
284#if FULL_SYSTEM
285 void invoke(ThreadContext * tc,
286 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
287#endif
288};
289
290class TLBModifiedFault : public MipsFault<TLBModifiedFault>
291{
292 public:
310#if FULL_SYSTEM
311 void invoke(ThreadContext * tc,
312 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
313#endif
314};
315
316class TLBModifiedFault : public MipsFault<TLBModifiedFault>
317{
318 public:
319 TLBModifiedFault(Addr asid, Addr vaddr, Addr vpn)
320 {
321 entryHiAsid = asid;
322 entryHiVPN2 = vpn >> 2;
323 entryHiVPN2X = vpn & 0x3;
324 badVAddr = vaddr;
325 contextBadVPN2 = vpn >> 2;
326 }
293#if FULL_SYSTEM
294 void invoke(ThreadContext * tc,
295 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
296#endif
297};
298
299class DtbInvalidFault : public MipsFault<DtbInvalidFault>
300{
301 public:
327#if FULL_SYSTEM
328 void invoke(ThreadContext * tc,
329 StaticInstPtr inst = StaticInst::nullStaticInstPtr);
330#endif
331};
332
333class DtbInvalidFault : public MipsFault<DtbInvalidFault>
334{
335 public:
336 DtbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
337 {
338 entryHiAsid = asid;
339 entryHiVPN2 = vpn >> 2;
340 entryHiVPN2X = vpn & 0x3;
341 badVAddr = vaddr;
342 contextBadVPN2 = vpn >> 2;
343 }
302#if FULL_SYSTEM
303 void invoke(ThreadContext * tc,
304 StaticInst::StaticInstPtr inst = nullStaticInstPtr);
305#endif
306};
307
308class FloatEnableFault : public MipsFault<FloatEnableFault> {};
309class ItbMissFault : public MipsFault<ItbMissFault> {};

--- 13 unchanged lines hidden ---
344#if FULL_SYSTEM
345 void invoke(ThreadContext * tc,
346 StaticInst::StaticInstPtr inst = nullStaticInstPtr);
347#endif
348};
349
350class FloatEnableFault : public MipsFault<FloatEnableFault> {};
351class ItbMissFault : public MipsFault<ItbMissFault> {};

--- 13 unchanged lines hidden ---