
Programmer’s Model
ARM DDI 0165B
Copyright 2000 ARM Limited. All rights reserved.
2-23
Irrespective of whether exception entry is from ARM state or Thumb state, an IRQ
handler returns from the interrupt by executing:
SUBS PC,R14_irq,#4
You can disable IRQ exceptions within a privileged mode by setting the CPSR I flag.
When the I flag is clear, the ARM9E-S checks for a LOW level on the output of the
nIRQ register at the end of each instruction.
FIQs and IRQs are disabled when an IRQ occurs. Nested interrupts are allowed but it is
up to you to save any corruptible registers and to re-enable FIQs and interrupts.
2.9.7
Aborts
An abort indicates that the current memory access cannot be completed. An abort is
signaled by one of the two external abort input pins, IABORT and DABORT.
There are two types of abort:
IRQs are disabled when an abort occurs.
Prefetch Abort
This is signaled by an assertion on the IABORT input pin and checked at the end of
each instruction fetch.
When a Prefetch Abort occurs, the ARM9E-S marks the prefetched instruction as
invalid, but does not take the exception until the instruction reaches the Execute stage
of the pipeline. If the instruction is not executed, for example because a branch occurs
while it is in the pipeline, the abort does not take place.
After dealing with the cause of the abort, the handler executes the following instruction
irrespective of the processor operating state:
SUBS PC,R14_abt,#4
This action restores both the PC and the CPSR, and retries the aborted instruction.
Data Abort
This is signaled by an assertion on the DABORT input pin and checked at the end of
each data access, both read and write.