Difference between revisions of "HIPC"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 3: Line 3:
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|-
 
 
! Word || Description
 
! Word || Description
 
|-
 
|-
Line 15: Line 14:
 
=== Marshall type A ===
 
=== Marshall type A ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|-
 
 
! Word || Description
 
! Word || Description
 
|-
 
|-
Line 27: Line 25:
 
=== Marshall type B ===
 
=== Marshall type B ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|-
 
 
! Word || Description
 
! Word || Description
 
|-
 
|-
Line 37: Line 34:
 
=== Marshall type C ===
 
=== Marshall type C ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|-
 
 
! Word || Description
 
! Word || Description
 
|-
 
|-
Line 46: Line 42:
  
 
== Data Portion ==
 
== Data Portion ==
This is an array of u64's placed after the marshall header. But it's always aligned to 8 so sometimes there is a padding word inserted inbetween.
+
This is an array of u64's placed after the marshall header. But it's always aligned to 16 so sometimes there is padding words inserted inbetween.
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|-
 
 
! Word || Description
 
! Word || Description
 
|-
 
|-
Line 56: Line 51:
 
|-
 
|-
 
| ... || Non-marshalled data is placed here
 
| ... || Non-marshalled data is placed here
 +
|}
 +
 +
== Cmd header ==
 +
{| class="wikitable" border="1"
 +
! Cmd header 1 || Cmd header 2 || Description
 +
|-
 +
| 4 || 9 || Data portion size 20.
 +
|-
 +
| 4 || 10 || Data portion size 24.
 +
|-
 +
| 4 || 12 || Data portion size 32.
 +
|-
 +
| 4 || 14 || Data portion size 40.
 +
|-
 +
| 4 || 0x8000000C || Marshall words: (u32) 1. Data portion size 32.
 
|}
 
|}

Revision as of 13:54, 13 April 2017

Marshall Portion

This is an array of u32's.

Word Description
0 Cmd header part 1
1 Cmd header part 2
... Marshall descriptors

Marshall type A

Word Description
0 Word1 is written here.
1 Word0 is written here.
2 Weird mix.

Marshall type B

Word Description
0 Lower 32-bits of addr?
1 Upper 16bits: Size, Lower 16bits: Rest of addr?

Marshall type C

Word Description
0 Upper 16bits: Size, Lower 16: ?
1 ?

Data Portion

This is an array of u64's placed after the marshall header. But it's always aligned to 16 so sometimes there is padding words inserted inbetween.

Word Description
0 Magic ("SFCI")
1 Cmd id
... Non-marshalled data is placed here

Cmd header

Cmd header 1 Cmd header 2 Description
4 9 Data portion size 20.
4 10 Data portion size 24.
4 12 Data portion size 32.
4 14 Data portion size 40.
4 0x8000000C Marshall words: (u32) 1. Data portion size 32.