VFP Instruction Execution
ARM DDI 0301H
Copyright © 2004-2009 ARM Limited. All rights reserved.
21-4
ID012310
Non-Confidential, Unrestricted Access
21.3
Interrupting the VFP11 coprocessor
Instructions are issued to the VFP11 coprocessor directly from the ARM prefetch unit. The
VFP11 coprocessor has no external interface beyond the ARM processor and cannot be
separately interrupted by external sources. Any interrupt that causes a change of flow in the
ARM11 processor is also reflected to the VFP11 coprocessor. Any VFP instruction that is
cancelled because of condition code failure in the ARM11 pipeline is also cancelled in the
VFP11 pipeline.
If the interrupt is the result of a Data Abort condition, the load or store operation that caused the
abort restarts after interrupt processing is complete. Load and store multiple instructions can
detect some exception conditions and interrupt the operation after the initial transfer. If the load
or store instruction is reissued after interrupt processing, it can restart with the initial transfer.
The source data is guaranteed to be unchanged, and no operations that depend on the load or
store data can execute until the load or store operation is complete.
When interrupt processing begins, there can be a delay before the VFP11 coprocessor is
available to the interrupt routine. Any prior short vector instruction that passes the ARM11
Execute 2 stage also passes the VFP11 Execute 1 stage and executes to completion
uninterrupted. The maximum delay during which the VFP11 coprocessor is unavailable is equal
to the time it takes to process a short vector of eight single-precision divide or square root
iterations. Such an operation can cause a delay of as many as 114 cycles after the short vector
divide or square root enters the VFP11 Execute 1 stage.
In systems that require fast response time and access to the VFP11 coprocessor by the service
routine, avoid short vector divide and short vector square root operations. All other instructions,
including short vector instructions, have little or no impact. Limiting the number of VFP11
registers that must be saved and used in the service routine also reduces startup time. If the
VFP11 coprocessor is not required in the service routine, you can disable it with EN bit,
FPEXC[30]. This eliminates the necessity of saving the VFP11 coprocessor state. See
Application Note 98, VFP Support Code
.