HIPC: Difference between revisions
No edit summary |
|||
Line 17: | Line 17: | ||
| 1 || 9-0 || Total word count (in u32's). | | 1 || 9-0 || Total word count (in u32's). | ||
|- | |- | ||
| 1 || 13-10 || Flags for | | 1 || 13-10 || Flags for buf C descriptor. | ||
|- | |- | ||
| 1 || 31 || Enable handle descriptor. | | 1 || 31 || Enable handle descriptor. | ||
Line 55: | Line 55: | ||
|} | |} | ||
=== Buffer descriptor A/B === | === Buffer descriptor X "Pointer" === | ||
This one is packed even worse than A, they inserted the bit38-36 of the address ''on top'' of the counter field. | |||
Officially, the counter is known as "receive index". This one writes to the buffer described in the ReceiveList. | |||
{| class="wikitable" border="1" | |||
! Word || Bits || Description | |||
|- | |||
| 0 || 5-0 || Bits 5-0 of counter. | |||
|- | |||
| 0 || 8-6 || Bit 38-36 of address. | |||
|- | |||
| 0 || 11-9 || Bits 11-9 of counter. | |||
|- | |||
| 0 || 15-12 || Bit 35-32 of address. | |||
|- | |||
| 0 || 31-16 || Size | |||
|- | |||
| 1 || || Lower 32-bits of address. | |||
|} | |||
=== Buffer descriptor A/B/W "Send"/"Receive"/"Exchange" === | |||
This packing is so unnecessarily complex. | This packing is so unnecessarily complex. | ||
Line 74: | Line 95: | ||
|} | |} | ||
=== Buffer descriptor C === | === Buffer descriptor C "ReceiveList" === | ||
There's a 4-bit flag in the main header controlling the behavior of C descriptors. | |||
If it has value 0, the C descriptor functionality is disabled. If it has value 1, there is no C descriptor. If it has value 2, there is a single C descriptor. | |||
Otherwise it has (flag-2) C descriptors. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Word || Bits || Description | ! Word || Bits || Description | ||
Line 83: | Line 110: | ||
|- | |- | ||
| 1 || 31-16 || Size | | 1 || 31-16 || Size | ||
|} | |} | ||