
Coprocessor Interface
ARM DDI 0144B
Copyright 1999, 2000 ARM Limited. All rights reserved.
7-7
WAIT
If there is a coprocessor attached that can execute the instruction but not
immediately, the coprocessor handshake signals must be driven to
indicate that the ARM940T processor core must stall until the
coprocessor can catch up. This is known as the
busy-wait
condition.
In this case, the ARM940T processor core loops in an IDLE state, waiting
for
CHSEX[1:0]
to be driven to another state, or for an interrupt to occur.
If
CHSEX[1:0]
changes to ABSENT, the undefined instruction
exception is taken. If
CHSEX[1:0]
changes to GO or LAST, the
instruction proceeds as described below.
If an interrupt occurs, the ARM940T processor core is forced out of the
busy-wait state. This is indicated to the coprocessor by the
CPPASS
signal going LOW. The instruction is restarted later and so the
coprocessor must not commit to the instruction (change any of the
coprocessor states) until it has seen
CPPASS
go HIGH, and the
handshake signals indicate the GO or LAST condition.
GO
The GO state indicates that the coprocessor can execute the instruction
immediately, and that it requires another cycle of execution. Both the
ARM940T processor core and the coprocessor must also consider the
state of the
CPPASS
signal before actually committing to the instruction.
For an
LDC
or
STC
instruction, the coprocessor instruction must drive the
handshake signals with GO when two or more words still have to be
transferred. When only one more word is required, the coprocessor must
drive the handshake signals with the LAST condition.
In phase 2 of the Execute stage, the ARM940T processor core outputs the
address for the
LDC
/
STC
. Also in this phase,
DnMREQ
is driven LOW,
indicating to the memory system that a memory access is required at the
data end of the device. The timing for the data on
CPDOUT[31:0]
for an
LDC
and
CPDIN[31:0]
for an
STC
is as shown in Figure 7-2 on page 7-5.
LAST
An
LDC
or
STC
can be used for more than one item of data. If this is the
case, possibly after busy-waiting, the coprocessor must drive the
coprocessor handshake signals with a number of GO states, and in the
penultimate cycle LAST. The LAST indicating that the next transfer is
the final one. If there is only one transfer, the sequence is
[WAIT,[WAIT,...]],LAST.