2.5.3.7 Exception Entry and Return

Descriptions of exception handling use the following terms:

  • Preemption: When the processor is executing an exception handler, an exception can preempt the exception handler if its priority is higher than the priority of the exception being handled. See 2.5.3.6 Interrupt Priority Grouping for more information about preemption by an interrupt.

    When one exception preempts another, the exceptions are called nested exceptions. See 2.5.3.7.1 Exception Entry more information.

  • Return: This occurs when the exception handler is completed, and:
    • There is no pending exception with sufficient priority to be serviced
    • The completed exception handler was not handling a late-arriving exception.

    The processor pops the stack and restores the processor state to the state it had before the interrupt occurred. See 2.5.3.7.2 Exception Return for more information.

  • Tail-chaining: This mechanism speeds up exception servicing. On completion of an exception handler, if there is a pending exception that meets the requirements for exception entry, the stack pop is skipped and control transfers to the new exception handler.
  • Late-arriving: This mechanism speeds up preemption. If a higher priority exception occurs during state saving for a previous exception, the processor switches to handle the higher priority exception and initiates the vector fetch for that exception. State saving is not affected by late arrival because the state saved is the same for both exceptions. Therefore the state saving continues uninterrupted. The processor can accept a late arriving exception until the first instruction of the exception handler of the original exception enters the execute stage of the processor. On return from the exception handler of the late-arriving exception, the normal tail-chaining rules apply.