Exceptions
ARM DDI 0337G
Copyright © 2005-2008 ARM Limited. All rights reserved.
5-15
Unrestricted Access
Non-Confidential
5.7
Late-arriving
A late-arriving interrupt can pre-empt a previous interrupt if the first instruction of the
previous ISR has not entered the Execute stage, and the late-arriving interrupt has a
higher priority than the previous interrupt.
A late-arriving interrupt causes a new vector address fetch and ISR prefetch. State
saving is not performed for the late-arriving interrupt because it has already been
performed for the initial interrupt and so does not have to be repeated.
Figure 5-4 shows an example of late-arriving interrupts.
Figure 5-4 Late-arriving exception timing
In Figure 5-4,
INTISR[8]
pre-empts
INTISR[2]
. The state saving for
INTISR[2]
is
already done and is not required to be repeated. Figure 5-4 shows the latest point at
which
INTISR[8]
can pre-empt before the first instruction of the ISR for
INTISR[2]
enters Execute stage. A higher priority interrupt after that point is managed as a
pre-emption.
CURRPRI[7:0]
HRDATAI[31:0]
INTISR[2]
INTISR[8]
INTISR[9]
HADDRS[31:0]
HWDATAS[31:0]
HADDRI[31:0]
CLK
PC
r0
r1
r2
r12
r3
LR
100
500 504
600 604 608
100
500
600
Fetch of
ISR6
Fetch of
ISR12
First ISR instruction
is in Execute stage
1
2
3
6
4
5
7
8
9
12
10 11
13 14 15 16
19
17 18
20 21
24
22 23
25
ETMINSTAT[2:0]
ETMINTNUM[8:0]
000
100
000
001
8-cycle ISR entry
latency
018
024
025
104 108
FF
Fetch of
ISR15
09
SP+18
SP+1C
SP+0
SP+4
SP+8
SP+C
SP+10
SP+14
xPSR
0x48
0x60
0x64