75
SAM4CP [DATASHEET]
43051E–ATPL–08/14
When one exception preempts another, the exceptions are nested.
Sufficient priority means that the exception has more priority than any limits set by the mask registers, see
“Exception
Mask Registers”
. An exception with less priority than this is pending but is not handled by the processor.
When the processor takes an exception, unless the exception is a tail-chained or a late-arriving exception, the processor
pushes information onto the current stack. This operation is referred as
stacking
and the structure of eight data words is
referred to as
stack frame
.
When using floating-point routines, the Cortex-M4 processor automatically stacks the architected floating-point state on
exception entry.
Figure 12-1
shows the Cortex-M4 stack frame layout when floating-point state is preserved on the stack
as the result of an interrupt or an exception.
Note:
Where stack space for floating-point state is not allocated, the stack frame is the same as that of ARMv7-M
implementations without an FPU.
Figure 12-1
shows this stack frame also.
Figure 12-7.
Exception Stack Frame
Immediately after stacking, the stack pointer indicates the lowest address in the stack frame. The alignment of the stack
frame is controlled via the STKALIGN bit of the Configuration Control Register (CCR).
The stack frame includes the return address. This is the address of the next instruction in the interrupted program. This
value is restored to the PC at exception return so that the interrupted program resumes.
In parallel to the stacking operation, the processor performs a vector fetch that reads the exception handler start address
from the vector table. When stacking is complete, the processor starts executing the exception handler. At the same
time, the processor writes an EXC_RETURN value to the LR. This indicates which stack pointer corresponds to the stack
frame and what operation mode the processor was in before the entry occurred.
If no higher priority exception occurs during the exception entry, the processor starts executing the exception handler and
automatically changes the status of the corresponding pending interrupt to active.
If another higher priority exception occurs during the exception entry, the processor starts executing the exception
handler for this exception and does not change the pending status of the earlier exception. This is the late arrival case.
Pre-IRQ top of stack
xPSR
PC
LR
R12
R3
R2
R1
R0
{aligner}
IRQ top of stack
Decreasing
memory
address
xPSR
PC
LR
R12
R3
R2
R1
R0
S7
S6
S5
S4
S3
S2
S1
S0
S9
S8
FPSCR
S15
S14
S13
S12
S11
S10
{aligner}
IRQ top of stack
...
Exception frame with
floating-point storage
Exception frame without
floating-point storage
Pre-IRQ top of stack
...