Subversion Repositories HelenOS

Rev

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);