HIPC: Difference between revisions

No edit summary
No edit summary
Line 7: Line 7:
| 0 || 15-0 || IPC version? Always 4.
| 0 || 15-0 || IPC version? Always 4.
|-
|-
| 0 || 19-16 || Number of marshalls type X (each: 2 words). Type mask: 8
| 0 || 19-16 || Number of buf X descriptors (each: 2 words). Type mask: 9
|-
|-
| 0 || 23-20 || Number of buf descriptors (each: 3 words). Type mask: 5
| 0 || 23-20 || Number of buf A descriptors (each: 3 words). Type mask: 5
|-
|-
| 0 || 27-24 || Number of buf2 descriptors (each: 3 words). Type mask: 6
| 0 || 27-24 || Number of buf B descriptors (each: 3 words). Type mask: 6
|-
|-
| 0 || 31-28 || Number of marshalls type W (each: 3 words)
| 0 || 31-28 || Number of marshalls type W (each: 3 words)
Line 17: Line 17:
| 1 || 9-0 || Size of data portion in u32's.
| 1 || 9-0 || Size of data portion in u32's.
|-
|-
| 1 || 13-10 || ?
| 1 || 13-10 || If set to 2, enable buf C descriptor. Type mask: 0xA.
|-
|-
| 1 || 31 || Enable special descriptor.
| 1 || 31 || Enable special descriptor.
Line 25: Line 25:
| ... || || Type X descriptors, each one 2 words.
| ... || || Type X descriptors, each one 2 words.
|-
|-
| ... || || Buf descriptors, each one 3 words.
| ... || || Buf A descriptors, each one 3 words.
|-
|-
| ... || || Buf2 descriptors, each one 3 words.
| ... || || Buf B descriptors, each one 3 words.
|-
|-
| ... || || Type W descriptors, each one 3 words.
| ... || || Type W descriptors, each one 3 words.
Line 49: Line 49:
|}
|}


=== Buf descriptor ===
=== Buffer descriptor A/B ===
They fucked up this one, big time.
This packing is so unnecessarily complex.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 68: Line 68:
|}
|}


=== Descriptor type B ===
=== Buffer descriptor C ===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Word || Description
! Word || Bits || Description
|-
|-
| 0 || Lower 32-bits of addr?
| 0 || || Lower 32-bits of address.
|-
|-
| 1 || Upper 16bits: Size, Lower 16bits: Rest of addr?
| 1 || 15-0 || Rest of address.
|-
| 1 || 31-16 || Size
|}
|}


=== Descriptor type C ===
=== Buffer descriptor X ===
This one is packed even worse than A, they inserted the bit38-36 of the address ''on top'' of the counter field.
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Word || Description
! Word || Bits || Description
|-
|-
| 0 || Upper 16bits: Size, Lower 16: ?
| 0 || 5-0 || Bits 5-0 of counter.
|-
|-
| 1 || ?
| 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.
|}
|}