Tail-Chaining; Figure 5-3 Tail-Chaining Timing - ARM Cortex-M3 Technical Reference Manual

R2p0
Hide thumbs Also See for Cortex-M3:
Table of Contents

Advertisement

Exceptions
5.6

Tail-chaining

HADDRI[31:0]
HRDATAI[31:0]
CURRPRI[7:0]
ETMINSTAT[2:0]
ETMINTNUM[8:0]
5-14
Tail-chaining is back-to-back processing of exceptions without the overhead of state
saving and restoration between interrupts. The processor skips the pop of eight registers
and push of eight registers when exiting one ISR and entering another because this has
no effect on the stack contents.
The processor tail-chains if a pending interrupt has higher priority than all stacked
exceptions.
Figure 5-3 shows an example of tail-chaining. If a pending interrupt has higher priority
than the highest-priority stacked exception, the stack push or pop is omitted, and the
processor immediately fetches the vector for the pending interrupt. The ISR that is
tail-chained into starts execution six cycles after exiting the previous ISR.
CLK
INTISR[2]
Last instruction fetch of ISR (BX LR)
On return from the last ISR, INTISR[2] is of higher priority than any stacked ISR, or
other pended interrupt, and so the processor tail-chains to the ISR corresponding to
INTISR[2]. In the cycle that the ISR for INTISR[2] enters execute:
ETMINSTAT[2:0] indicates that the ISR has been entered (3'b001). This is a
1-cycle pulse.
CURRPRI[7:0] indicates the priority of the active interrupt. CURRPRI remains
asserted throughout the duration of the ISR.
ETMINTNUM[8:0] indicates the number of the active interrupt.
ETMINTNUM remains asserted throughout the duration of the ISR.
Figure 5-3 shows that there is a 6-cycle latency when returning from the last ISR to
executing the new ISR.
Copyright © 2005-2008 ARM Limited. All rights reserved.
01
000
010
17
Non-Confidential
100
18

Figure 5-3 Tail-chaining timing

ARM DDI 0337G
Unrestricted Access
02
001

Advertisement

Table of Contents
loading

Table of Contents