126,10 → 126,9 |
ASSERT(vector <= VECTOR_MAX); |
|
if (vector >= VECTORS_16_BUNDLE_START) |
return vector_names_16_bundle[(vector - |
VECTORS_16_BUNDLE_START) / (16 * BUNDLE_SIZE)]; |
return vector_names_16_bundle[(vector-VECTORS_16_BUNDLE_START)/(16*BUNDLE_SIZE)]; |
else |
return vector_names_64_bundle[vector / (64 * BUNDLE_SIZE)]; |
return vector_names_64_bundle[vector/(64*BUNDLE_SIZE)]; |
} |
|
void dump_interrupted_context(istate_t *istate) |
142,17 → 141,12 |
|
putchar('\n'); |
printf("Interrupted context dump:\n"); |
printf("ar.bsp=%p\tar.bspstore=%p\n", istate->ar_bsp, |
istate->ar_bspstore); |
printf("ar.rnat=%#018llx\tar.rsc=%#018llx\n", istate->ar_rnat, |
istate->ar_rsc); |
printf("ar.ifs=%#018llx\tar.pfs=%#018llx\n", istate->ar_ifs, |
istate->ar_pfs); |
printf("cr.isr=%#018llx\tcr.ipsr=%#018llx\t\n", istate->cr_isr.value, |
istate->cr_ipsr); |
printf("ar.bsp=%p\tar.bspstore=%p\n", istate->ar_bsp, istate->ar_bspstore); |
printf("ar.rnat=%#018llx\tar.rsc=%#018llx\n", istate->ar_rnat, istate->ar_rsc); |
printf("ar.ifs=%#018llx\tar.pfs=%#018llx\n", istate->ar_ifs, istate->ar_pfs); |
printf("cr.isr=%#018llx\tcr.ipsr=%#018llx\t\n", istate->cr_isr.value, istate->cr_ipsr); |
|
printf("cr.iip=%#018llx, #%d\t(%s)\n", istate->cr_iip, |
istate->cr_isr.ei, iip); |
printf("cr.iip=%#018llx, #%d\t(%s)\n", istate->cr_iip, istate->cr_isr.ei, iip); |
printf("cr.iipa=%#018llx\t(%s)\n", istate->cr_iipa, iipa); |
printf("cr.ifa=%#018llx\t(%s)\n", istate->cr_ifa, ifa); |
} |
196,11 → 190,9 |
#ifdef CONFIG_FPU_LAZY |
scheduler_fpu_lazy_request(); |
#else |
fault_if_from_uspace(istate, "Interruption: %#hx (%s)", |
(uint16_t) vector, vector_to_string(vector)); |
fault_if_from_uspace(istate, "Interruption: %#hx (%s)", (uint16_t) vector, vector_to_string(vector)); |
dump_interrupted_context(istate); |
panic("Interruption: %#hx (%s)\n", (uint16_t) vector, |
vector_to_string(vector)); |
panic("Interruption: %#hx (%s)\n", (uint16_t) vector, vector_to_string(vector)); |
#endif |
} |
|
221,17 → 213,14 |
istate->cr_ipsr.ri++; |
} |
|
return syscall_handler(istate->in0, istate->in1, istate->in2, |
istate->in3, istate->in4, istate->in5, istate->in6); |
return syscall_handler(istate->in0, istate->in1, istate->in2, istate->in3, istate->in4); |
} |
|
void universal_handler(uint64_t vector, istate_t *istate) |
{ |
fault_if_from_uspace(istate, "Interruption: %#hx (%s)\n", |
(uint16_t) vector, vector_to_string(vector)); |
fault_if_from_uspace(istate,"Interruption: %#hx (%s)\n",(uint16_t) vector, vector_to_string(vector)); |
dump_interrupted_context(istate); |
panic("Interruption: %#hx (%s)\n", (uint16_t) vector, |
vector_to_string(vector)); |
panic("Interruption: %#hx (%s)\n", (uint16_t) vector, vector_to_string(vector)); |
} |
|
void external_interrupt(uint64_t vector, istate_t *istate) |
255,8 → 244,7 |
break; |
|
default: |
panic("\nUnhandled External Interrupt Vector %d\n", |
ivr.vector); |
panic("\nUnhandled External Interrupt Vector %d\n", ivr.vector); |
break; |
} |
} |