Rev 3788 | Rev 3880 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3788 | Rev 3790 | ||
|---|---|---|---|
| Line 184... | Line 184... | ||
| 184 | default: |
184 | default: |
| 185 | desc = "unknown"; |
185 | desc = "unknown"; |
| 186 | break; |
186 | break; |
| 187 | } |
187 | } |
| 188 | 188 | ||
| 189 | fault_if_from_uspace(istate, "General Exception (%s)", desc); |
189 | fault_if_from_uspace(istate, "General Exception (%s).", desc); |
| 190 | 190 | ||
| 191 | dump_interrupted_context(istate); |
191 | dump_interrupted_context(istate); |
| 192 | panic("General Exception (%s)\n", desc); |
192 | panic("General Exception (%s).", desc); |
| 193 | } |
193 | } |
| 194 | 194 | ||
| 195 | void disabled_fp_register(uint64_t vector, istate_t *istate) |
195 | void disabled_fp_register(uint64_t vector, istate_t *istate) |
| 196 | { |
196 | { |
| 197 | #ifdef CONFIG_FPU_LAZY |
197 | #ifdef CONFIG_FPU_LAZY |
| 198 | scheduler_fpu_lazy_request(); |
198 | scheduler_fpu_lazy_request(); |
| 199 | #else |
199 | #else |
| 200 | fault_if_from_uspace(istate, "Interruption: %#hx (%s)", |
200 | fault_if_from_uspace(istate, "Interruption: %#hx (%s).", |
| 201 | (uint16_t) vector, vector_to_string(vector)); |
201 | (uint16_t) vector, vector_to_string(vector)); |
| 202 | dump_interrupted_context(istate); |
202 | dump_interrupted_context(istate); |
| 203 | panic("Interruption: %#hx (%s)\n", (uint16_t) vector, |
203 | panic("Interruption: %#hx (%s).", (uint16_t) vector, |
| 204 | vector_to_string(vector)); |
204 | vector_to_string(vector)); |
| 205 | #endif |
205 | #endif |
| 206 | } |
206 | } |
| 207 | 207 | ||
| 208 | void nop_handler(uint64_t vector, istate_t *istate) |
208 | void nop_handler(uint64_t vector, istate_t *istate) |
| Line 226... | Line 226... | ||
| 226 | istate->in3, istate->in4, istate->in5, istate->in6); |
226 | istate->in3, istate->in4, istate->in5, istate->in6); |
| 227 | } |
227 | } |
| 228 | 228 | ||
| 229 | void universal_handler(uint64_t vector, istate_t *istate) |
229 | void universal_handler(uint64_t vector, istate_t *istate) |
| 230 | { |
230 | { |
| 231 | fault_if_from_uspace(istate, "Interruption: %#hx (%s)", |
231 | fault_if_from_uspace(istate, "Interruption: %#hx (%s).", |
| 232 | (uint16_t) vector, vector_to_string(vector)); |
232 | (uint16_t) vector, vector_to_string(vector)); |
| 233 | dump_interrupted_context(istate); |
233 | dump_interrupted_context(istate); |
| 234 | panic("Interruption: %#hx (%s)\n", (uint16_t) vector, |
234 | panic("Interruption: %#hx (%s).", (uint16_t) vector, |
| 235 | vector_to_string(vector)); |
235 | vector_to_string(vector)); |
| 236 | } |
236 | } |
| 237 | 237 | ||
| 238 | static void end_of_local_irq(void) |
238 | static void end_of_local_irq(void) |
| 239 | { |
239 | { |
| Line 267... | Line 267... | ||
| 267 | irq = irq_dispatch_and_lock(ivr.vector); |
267 | irq = irq_dispatch_and_lock(ivr.vector); |
| 268 | if (irq) { |
268 | if (irq) { |
| 269 | irq->handler(irq, irq->arg); |
269 | irq->handler(irq, irq->arg); |
| 270 | spinlock_unlock(&irq->lock); |
270 | spinlock_unlock(&irq->lock); |
| 271 | } else { |
271 | } else { |
| 272 | panic("\nUnhandled Internal Timer Interrupt (%d)\n", |
272 | panic("Unhandled Internal Timer Interrupt (%d).", |
| 273 | ivr.vector); |
273 | ivr.vector); |
| 274 | } |
274 | } |
| 275 | break; |
275 | break; |
| 276 | default: |
276 | default: |
| 277 | irq = irq_dispatch_and_lock(ivr.vector); |
277 | irq = irq_dispatch_and_lock(ivr.vector); |