Changes

3,531 bytes added ,  12:02, 30 October 2021
Add info about IOSU auxiliary vectors
Line 235: Line 235:  
The kernel is responsible for tasks such as as IPC handling, permissions' control, resource managers (/dev nodes) and much more.
 
The kernel is responsible for tasks such as as IPC handling, permissions' control, resource managers (/dev nodes) and much more.
 
[[IOSU_Syscalls|System calls]] are handled through the ARM undefined handler and mapped into their respective kernel functions.
 
[[IOSU_Syscalls|System calls]] are handled through the ARM undefined handler and mapped into their respective kernel functions.
 +
 +
=== 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"
 +
|-
 +
! Name
 +
! Value
 +
! Description
 +
|-
 +
| AT_ENTRY
 +
| 0x09
 +
| Entry point address
 +
|-
 +
| AT_UID
 +
| 0x0b
 +
| Module ID
 +
|-
 +
| AT_PRIORITY
 +
| 0x7d
 +
| Main thread priority
 +
|-
 +
| AT_STACK_SIZE
 +
| 0x7e
 +
| Main thread stack size
 +
|-
 +
| AT_STACK_ADDR
 +
| 0x7f
 +
| Main thread stack address
 +
|-
 +
| AT_MEM_PERM_MASK
 +
| 0x80
 +
|
 +
|}
 +
 +
==== 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
    
=== Threads ===
 
=== Threads ===