Intel
®
81341 and 81342 I/O Processors
December 2007
Developer’s Manual
Order Number: 315037-002US
827
Inter-Processor Messaging Unit—Intel
®
81341 and 81342
13.3.1.1 Send Queue Management
Following a initialization, the Send Queue registers are set to their default value. The
Send Queue will be configured and managed using the following steps:
1. Send Queue Upper/Lower Base Address Registers are written with the 36-bit local
address (Send_Q_Base) where the Send Queue is located.
2. Send Queue Size field of the Send Queue Control Register is set to the last index in
the queue of message pointers (Size).
3. A message is written to the local memory at the location pointed to by the message
pointer derived from the Put pointer and the Send_Q_Base.
27
— The Send Queue Not Full Interrupt may be used to inform the processor that
there are available slots in the Send Queue.
4. The Put Pointer is incremented one or more times and written back to the Send
Queue Get/Put Pointer register
Steps 3 and 4 may be repeated until the Send Queue is Full (Put Pointer — Get Pointer
equal to Size). If necessary, the Send Queue may be reinitialized by writing to the Send
Queue Reset bit in the Send Queue Control Register. The reinitialization won’t take
effect until both the Send Queue Reset bit and the Send Queue Reset Request bit (set
by the other processor) are set. When reinitialized, the Get/Put Pointers, the Send
Queue Reset bit, and the Send Queue Reset Request bit will be returned to their default
values.
13.3.1.2 Receive Queue Management
Following a initialization, the Receive Queue registers are set to their default value. The
Receive Queue will be configured and managed using the following steps:
1. Read the 36-bit local address (Receive_Q_Base) where the Receive Queue is
located from the Receive Queue Upper/Lower Base Address Registers.
2. Read the last index into the queue of messages from the Receive Queue Size field
(Size) of the Receive Queue Control Register.
3. A message is read from the local memory at the location pointed to by the message
pointer derived from the Get Pointer and the Receive_Q_Base.
28
— The Receive Queue Not Empty Interrupt may be used to inform the processor
that there are messages requiring service in the Receive Queue.
4. The Get Pointer is incremented and written back to the Receive Queue Get/Put
Pointer register.
Steps 3 and 4 may be repeated until the Receive Queue is empty (Put Pointer equal to
Get Pointer). If necessary, the Receive Queue may be reinitialized by writing to the
Receive Queue Reset bit in the Receive Queue Control Register. The reinitialization
won’t take effect until both the Receive Queue Reset bit and the Receive Queue Reset
Request bit (set by the other processor) are set. When reinitialized, the Get/Put
Pointers, the Receive Queue Reset bit, and the Receive Queue Reset Request bit will be
returned to their default values.
27.The method by which the user combines the Put Pointer and the Send_Q_Base to derive the
message pointer is not defined. The software needs to be aware of a message size.
28.The method by which the user combines the Get Pointer and the Receive_Q_Base to derive the
message pointer is not defined. The software needs to be aware of a message size.