Changes

1,118 bytes added ,  00:00, 17 December 2024
no edit summary
Line 486: Line 486:  
| 0x4B || 0x4B || IOSError || GetUidGid || IOSProcessId id, u32 *uid, u32 *gid
 
| 0x4B || 0x4B || IOSError || GetUidGid || IOSProcessId id, u32 *uid, u32 *gid
 
|-
 
|-
| 0x4C || 0x4C || IOSError || TryFlushMem || MEM_WB_CLIENTS client
+
| 0x4C || 0x4C || IOSError || TryFlushMem || [[#MEM_WB_CLIENTS|MEM_WB_CLIENTS]] client
 
|-
 
|-
| 0x4D || 0x4D || IOSError || FlushMem || MEM_WB_CLIENTS client
+
| 0x4D || 0x4D || IOSError || FlushMem || [[#MEM_WB_CLIENTS|MEM_WB_CLIENTS]]client
 
|-
 
|-
 
| 0x4E || 0x4E || IOSError || IsMemDataPending || int client
 
| 0x4E || 0x4E || IOSError || IsMemDataPending || int client
 
|-
 
|-
| 0x4F || 0x4F || IOSError || InvalidateRdb || AHM_RB_CLIENTS client
+
| 0x4F || 0x4F || IOSError || InvalidateRdb || [[#AHM_RB_CLIENTS|AHM_RB_CLIENTS]] client
 
|-
 
|-
 
| 0x50 || 0x50 || IOSError || IOS_ClearandEnable || u32 id
 
| 0x50 || 0x50 || IOSError || IOS_ClearandEnable || u32 id
Line 612: Line 612:  
| 0x8A || 0x7E || IOSError || GetDynamicHeapAccess ||  
 
| 0x8A || 0x7E || IOSError || GetDynamicHeapAccess ||  
 
|-
 
|-
| 0x8B || 0x7F || IOSError || InitializeGpuConfiguration || void *out_buf, u32 size, IOSMessageQueueId id, u32 unk)
+
| 0x8B || 0x7F || IOSError || InitializeGpuConfiguration || void *out_buf, u32 size, IOSMessageQueueId id, u32 unk
 
|-
 
|-
 
| 0x8C || 0x80 || IOSError || FinishGpuConfiguration || IOSMessageQueueId id, bool panic
 
| 0x8C || 0x80 || IOSError || FinishGpuConfiguration || IOSMessageQueueId id, bool panic
Line 771: Line 771:  
=== __sys_read ===
 
=== __sys_read ===
 
Reads input from debugger stdin.
 
Reads input from debugger stdin.
  −
== Auxiliary Vectors ==
  −
The IOSU elf has a PH_NOTES section which contains a so called "mrg file".
  −
This "mrg file" contains auxiliary vectors for IOSU modules.
  −
  −
The vectors are parsed by IOS-KERNEL, before launching the modules.
  −
  −
The first 0xc bytes of the notes section make up a Elf32_Nhdr.
  −
After that there are 6 auxv_t for each module (14 in 5.5.X).
  −
  −
The following auxiliary vector types are used:
  −
{| class="wikitable"
  −
|-
  −
! Value
  −
! Name
  −
! Description
  −
|-
  −
| 0x09
  −
| AT_ENTRY
  −
| Entry point address
  −
|-
  −
| 0x0B
  −
| AT_UID
  −
| Module ID
  −
|-
  −
| 0x7D
  −
| AT_PRIORITY
  −
| Main thread priority
  −
|-
  −
| 0x7E
  −
| AT_STACK_SIZE
  −
| Main thread stack size
  −
|-
  −
| 0x7F
  −
| AT_STACK_ADDR
  −
| Main thread stack address
  −
|-
  −
| 0x80
  −
| AT_MEM_PERM_MASK
  −
| Memory permission mask
  −
|}
  −
  −
Auxiliary vectors from 5.5.X:
  −
  AT_UID:                0
  −
  AT_ENTRY:              0xFFFF0000
  −
  AT_PRIORITY:          0x0
  −
  AT_STACK_SIZE:        0x0
  −
  AT_STACK_ADDR:        0x00000000
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                1
  −
  AT_ENTRY:              0x05056718
  −
  AT_PRIORITY:          0x7C
  −
  AT_STACK_SIZE:        0x2000
  −
  AT_STACK_ADDR:        0x050BA4A0
  −
  AT_MEM_PERM_MASK:      0x000C0030
  −
  −
  AT_UID:                2
  −
  AT_ENTRY:              0xE600F848
  −
  AT_PRIORITY:          0x7D
  −
  AT_STACK_SIZE:        0x1000
  −
  AT_STACK_ADDR:        0xE7000000
  −
  AT_MEM_PERM_MASK:      0x00100000
  −
  −
  AT_UID:                3
  −
  AT_ENTRY:              0x04015EA4
  −
  AT_PRIORITY:          0x7B
  −
  AT_STACK_SIZE:        0x1000
  −
  AT_STACK_ADDR:        0x04028628
  −
  AT_MEM_PERM_MASK:      0x000C0030
  −
  −
  AT_UID:                4
  −
  AT_ENTRY:              0x1012E9E8
  −
  AT_PRIORITY:          0x6B
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0x104B92C8
  −
  AT_MEM_PERM_MASK:      0x00038600
  −
  −
  AT_UID:                5
  −
  AT_ENTRY:              0x107F6830
  −
  AT_PRIORITY:          0x55
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0x1114117C
  −
  AT_MEM_PERM_MASK:      0x001C5870
  −
  −
  AT_UID:                6
  −
  AT_ENTRY:              0x11F82D94
  −
  AT_PRIORITY:          0x75
  −
  AT_STACK_SIZE:        0x2000
  −
  AT_STACK_ADDR:        0x1214AB4C
  −
  AT_MEM_PERM_MASK:      0x00008180
  −
  −
  AT_UID:                7
  −
  AT_ENTRY:              0x123E4174
  −
  AT_PRIORITY:          0x50
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0x12804498
  −
  AT_MEM_PERM_MASK:      0x00002000
  −
  −
  AT_UID:                11
  −
  AT_ENTRY:              0xE22602FC
  −
  AT_PRIORITY:          0x32
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0xE22CB000
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                9
  −
  AT_ENTRY:              0xE108E930
  −
  AT_PRIORITY:          0x32
  −
  AT_STACK_SIZE:        0x1000
  −
  AT_STACK_ADDR:        0xE12E71A4
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                12
  −
  AT_ENTRY:              0xE3166B34
  −
  AT_PRIORITY:          0x32
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0xE31AF000
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                8
  −
  AT_ENTRY:              0xE00D8290
  −
  AT_PRIORITY:          0x32
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0xE0125390
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                10
  −
  AT_ENTRY:              0xE500D720
  −
  AT_PRIORITY:          0x46
  −
  AT_STACK_SIZE:        0x4000
  −
  AT_STACK_ADDR:        0xE506A900
  −
  AT_MEM_PERM_MASK:      0x00000000
  −
  −
  AT_UID:                13
  −
  AT_ENTRY:              0xE40168A4
  −
  AT_PRIORITY:          0x4B
  −
  AT_STACK_SIZE:        0x2000
  −
  AT_STACK_ADDR:        0xE415623C
  −
  AT_MEM_PERM_MASK:      0x00000000
      
== IOSContext ==
 
== IOSContext ==
Line 1,265: Line 1,125:  
| IOS_ERROR_UNKNOWN_VALUE
 
| IOS_ERROR_UNKNOWN_VALUE
 
|}
 
|}
 +
 +
== MEM_WB_CLIENTS ==
 +
{| class="wikitable"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0
 +
| IOS_WB_IOD
 +
|-
 +
| 1
 +
| IOS_WB_AIM
 +
|-
 +
| 2
 +
| IOS_WB_FLA
 +
|-
 +
| 3
 +
| IOS_WB_AES
 +
|-
 +
| 4
 +
| IOS_WB_SHA
 +
|-
 +
| 5
 +
| IOS_WB_EHCI
 +
|-
 +
| 6
 +
| IOS_WB_OHCI0
 +
|-
 +
| 7
 +
| IOS_WB_OHCI1
 +
|-
 +
| 8
 +
| IOS_WB_SD0
 +
|-
 +
| 9
 +
| IOS_WB_SD1
 +
|-
 +
| 10
 +
| IOS_WB_SD2
 +
|-
 +
| 11
 +
| IOS_WB_SD3
 +
|-
 +
| 12
 +
| IOS_WB_EHC1
 +
|-
 +
| 13
 +
| IOS_WB_OHCI10
 +
|-
 +
| 14
 +
| IOS_WB_EHC2
 +
|-
 +
| 15
 +
| IOS_WB_OHCI20
 +
|-
 +
| 16
 +
| IOS_WB_SATA
 +
|-
 +
| 17
 +
| IOS_WB_AESS
 +
|-
 +
| 18
 +
| IOS_WB_SHAS
 +
|-
 +
| 19
 +
| IOS_WB_DMAA
 +
|-
 +
| 20
 +
| IOS_WB_DMAB
 +
|-
 +
| 21
 +
| IOS_WB_DMAC
 +
|-
 +
| 22
 +
| IOS_WB_ALL
 +
|}
 +
 +
== AHM_RB_CLIENTS ==
 +
{| class="wikitable"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0
 +
| IOS_RB_IOD
 +
|-
 +
| 1
 +
| IOS_RB_IOI
 +
|-
 +
| 2
 +
| IOS_RB_AIM
 +
|-
 +
| 3
 +
| IOS_RB_FLA
 +
|-
 +
| 4
 +
| IOS_RB_AES
 +
|-
 +
| 5
 +
| IOS_RB_SHA
 +
|-
 +
| 6
 +
| IOS_RB_EHCI
 +
|-
 +
| 7
 +
| IOS_RB_OHCI0
 +
|-
 +
| 8
 +
| IOS_RB_OHCI1
 +
|-
 +
| 9
 +
| IOS_RB_SD0
 +
|-
 +
| 10
 +
| IOS_RB_SD1
 +
|-
 +
| 11
 +
| IOS_RB_SD2
 +
|-
 +
| 12
 +
| IOS_RB_SD3
 +
|-
 +
| 13
 +
| IOS_RB_EHC1
 +
|-
 +
| 14
 +
| IOS_RB_OHCI10
 +
|-
 +
| 15
 +
| IOS_RB_EHC2
 +
|-
 +
| 16
 +
| IOS_RB_OHCI20
 +
|-
 +
| 17
 +
| IOS_RB_SATA
 +
|-
 +
| 18
 +
| IOS_RB_AESS
 +
|-
 +
| 19
 +
| IOS_RB_SHAS
 +
|}
 +
 +
== Auxiliary Vectors ==
 +
The IOSU elf has a PH_NOTES section which contains a so called "mrg file".
 +
This "mrg file" contains auxiliary vectors for IOSU modules.
 +
 +
The vectors are parsed by IOS-KERNEL, before launching the modules.
 +
 +
The first 0xc bytes of the notes section make up a Elf32_Nhdr.
 +
After that there are 6 auxv_t for each module (14 in 5.5.X).
 +
 +
The following auxiliary vector types are used:
 +
{| class="wikitable"
 +
|-
 +
! Value
 +
! Name
 +
! Description
 +
|-
 +
| 0x09
 +
| AT_ENTRY
 +
| Entry point address
 +
|-
 +
| 0x0B
 +
| AT_UID
 +
| Module ID
 +
|-
 +
| 0x7D
 +
| AT_PRIORITY
 +
| Main thread priority
 +
|-
 +
| 0x7E
 +
| AT_STACK_SIZE
 +
| Main thread stack size
 +
|-
 +
| 0x7F
 +
| AT_STACK_ADDR
 +
| Main thread stack address
 +
|-
 +
| 0x80
 +
| AT_MEM_PERM_MASK
 +
| Memory permission mask
 +
|}
 +
 +
Auxiliary vectors from 5.5.X:
 +
  AT_UID:                0
 +
  AT_ENTRY:              0xFFFF0000
 +
  AT_PRIORITY:          0x0
 +
  AT_STACK_SIZE:        0x0
 +
  AT_STACK_ADDR:        0x00000000
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                1
 +
  AT_ENTRY:              0x05056718
 +
  AT_PRIORITY:          0x7C
 +
  AT_STACK_SIZE:        0x2000
 +
  AT_STACK_ADDR:        0x050BA4A0
 +
  AT_MEM_PERM_MASK:      0x000C0030
 +
 +
  AT_UID:                2
 +
  AT_ENTRY:              0xE600F848
 +
  AT_PRIORITY:          0x7D
 +
  AT_STACK_SIZE:        0x1000
 +
  AT_STACK_ADDR:        0xE7000000
 +
  AT_MEM_PERM_MASK:      0x00100000
 +
 +
  AT_UID:                3
 +
  AT_ENTRY:              0x04015EA4
 +
  AT_PRIORITY:          0x7B
 +
  AT_STACK_SIZE:        0x1000
 +
  AT_STACK_ADDR:        0x04028628
 +
  AT_MEM_PERM_MASK:      0x000C0030
 +
 +
  AT_UID:                4
 +
  AT_ENTRY:              0x1012E9E8
 +
  AT_PRIORITY:          0x6B
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0x104B92C8
 +
  AT_MEM_PERM_MASK:      0x00038600
 +
 +
  AT_UID:                5
 +
  AT_ENTRY:              0x107F6830
 +
  AT_PRIORITY:          0x55
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0x1114117C
 +
  AT_MEM_PERM_MASK:      0x001C5870
 +
 +
  AT_UID:                6
 +
  AT_ENTRY:              0x11F82D94
 +
  AT_PRIORITY:          0x75
 +
  AT_STACK_SIZE:        0x2000
 +
  AT_STACK_ADDR:        0x1214AB4C
 +
  AT_MEM_PERM_MASK:      0x00008180
 +
 +
  AT_UID:                7
 +
  AT_ENTRY:              0x123E4174
 +
  AT_PRIORITY:          0x50
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0x12804498
 +
  AT_MEM_PERM_MASK:      0x00002000
 +
 +
  AT_UID:                11
 +
  AT_ENTRY:              0xE22602FC
 +
  AT_PRIORITY:          0x32
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0xE22CB000
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                9
 +
  AT_ENTRY:              0xE108E930
 +
  AT_PRIORITY:          0x32
 +
  AT_STACK_SIZE:        0x1000
 +
  AT_STACK_ADDR:        0xE12E71A4
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                12
 +
  AT_ENTRY:              0xE3166B34
 +
  AT_PRIORITY:          0x32
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0xE31AF000
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                8
 +
  AT_ENTRY:              0xE00D8290
 +
  AT_PRIORITY:          0x32
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0xE0125390
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                10
 +
  AT_ENTRY:              0xE500D720
 +
  AT_PRIORITY:          0x46
 +
  AT_STACK_SIZE:        0x4000
 +
  AT_STACK_ADDR:        0xE506A900
 +
  AT_MEM_PERM_MASK:      0x00000000
 +
 +
  AT_UID:                13
 +
  AT_ENTRY:              0xE40168A4
 +
  AT_PRIORITY:          0x4B
 +
  AT_STACK_SIZE:        0x2000
 +
  AT_STACK_ADDR:        0xE415623C
 +
  AT_MEM_PERM_MASK:      0x00000000
    
== Exception Handling ==
 
== Exception Handling ==