Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/src/exception.c

    r4bd3f45 r48a209a  
    161161}
    162162
     163/** Undefined instruction exception handler.
     164 *
     165 * Calls scheduler_fpu_lazy_request
     166 */
     167static void undef_insn_exception(unsigned int exc_no, istate_t *istate)
     168{
     169        if (!handle_if_fpu_exception()) {
     170                fault_if_from_uspace(istate, "Undefined instruction.");
     171                panic_badtrap(istate, exc_no, "Undefined instruction.");
     172        } else {
     173                /*
     174                 * Retry the failing instruction,
     175                 * ARM Architecture Reference Manual says on p.B1-1169
     176                 * that offset for undef instruction exception is 4
     177                 */
     178                istate->pc -= 4;
     179        }
     180}
     181
    163182/** Initializes exception handling.
    164183 *
     
    174193        install_exception_handlers();
    175194       
     195        exc_register(EXC_UNDEF_INSTR, "undefined instruction", true,
     196            (iroutine_t) undef_insn_exception);
    176197        exc_register(EXC_IRQ, "interrupt", true,
    177198            (iroutine_t) irq_exception);
Note: See TracChangeset for help on using the changeset viewer.