Intel
®
81341 and 81342 I/O Processors
December 2007
Developer’s Manual
Order Number: 315037-002US
417
Messaging Unit—Intel
®
81341 and 81342
4.5.4
Outbound Free Queue
The Outbound Free Queue holds free messages placed there by other processors for
the Intel XScale
®
processor to use. This queue is read from the queue tail by the Intel
XScale
®
processor. It is written to the queue head by external host I/O interface
agents on the 81341 and 81342’s internal bus through the Address Translation Unit
Chapter 2.0, “Address Translation Unit (PCI-X)”
or
Translation Unit (PCI Express)”
for more details on inbound ATU addressing and the
ATU). The tail pointer is maintained by the Intel XScale
®
processor. The head pointer is
maintained by the MU hardware.
For a host I/O interface write transaction that accesses the Outbound Queue Port, the
MU writes the data to the local memory address in the Outbound Free Head Pointer
Register. When the data written to the Outbound Queue Port is written to local memory,
the MU hardware increments the Outbound Free Head Pointer Register.
When the head
16
pointer and the tail
17
pointer become equal and the queue is full, the
MU may signal an interrupt to the Intel XScale
®
processor to register the queue full
condition. This interrupt is recorded in the Inbound Interrupt Status Register. The
interrupt is cleared when the Outbound Free Queue Full Interrupt bit is cleared and not
by writing to the head or tail pointers. The interrupt can be masked by the Inbound
Interrupt Mask Register. Software must be aware of the state of the Outbound Free
Queue Interrupt Mask bit to insure that the full condition is recognized by the core
processor.
From the time that a host I/O interface write transaction is received on the internal bus
by the MU until the data is written in local memory and the Outbound Free Head Pointer
Register is incremented, any internal bus transaction that attempts to access the
Outbound Free Queue Port is signalled a retry.
The Intel XScale
®
processor may read messages from the Outbound Free Queue by
reading the data from the local memory address in the Outbound Free Tail Pointer
Register. The processor must then increment the Outbound Free Tail Pointer Register.
When the Outbound Free Queue is full, the hardware must retry any write until a slot in
the queue becomes available.
16.During normal operation, the Outbound Free Queue Head Pointer is only managed by
hardware
.
Software
can also update the Head Pointer using the
“Outbound Free Head Pointer Register -
during initialization. However, the Outbound Free Queue logic does not make a distinction
on whether the Head Pointer is updated using hardware or software.
17.The Outbound Free Queue Tail Pointer is only managed by
software
using the
Tail Pointer Register - OFTPR”
during normal operation and initialization.