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 ==