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
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
115static inline Fault genMachineCheckFault()
116{
117 return new MachineCheckFault;
118}
119
147static inline Fault genAlignmentFault()
148{
149 return new AlignmentFault;
150}
151
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
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>
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
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
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__