Line 548:
Line 548:
| 0x6A || 0x60 || u32 || GetIopCpuUtilization ||
| 0x6A || 0x60 || u32 || GetIopCpuUtilization ||
|-
|-
−
| 0x6B || 0x61 || IOSError || [[#GetThreadStackInfo|GetThreadStackInfo]] || IOSThreadId id, IOSThreadStackInfo *out_buf
+
| 0x6B || 0x61 || IOSError || GetThreadStackInfo || IOSThreadId id, [[#IOSThreadStackInfo|IOSThreadStackInfo]] *out
|-
|-
−
| 0x6C || 0x62 || IOSError || [[#IOS_ThreadProfileCommand|IOS_ThreadProfileCommand]] || u32 cmd, u32 unk
+
| 0x6C || 0x62 || IOSError || IOS_ThreadProfileCommand || [[#IOSThreadProfileCommand|IOSThreadProfileCommand]] cmd, void *data
|-
|-
−
| 0x6D || 0x63 || IOSError || IOS_GetThreadUtilization || IOSThreadUtilization *out_buf
+
| 0x6D || 0x63 || IOSError || IOS_GetThreadUtilization || [[#IOSThreadUtilization|IOSThreadUtilization]] *out
|-
|-
−
| 0x6E || 0x64 || IOSError || GetThreadContext || IOSThreadId id, IOSThreadContext *out_buf
+
| 0x6E || 0x64 || IOSError || GetThreadProfile || IOSThreadId id, [[#IOSThreadProfile|IOSThreadProfile]] *out
|-
|-
−
| 0x6F || 0x65 || u32 || GetThreadProfile || u32 count, IOSThreadProfile *out_buf
+
| 0x6F || 0x65 || IOSError || GetThreadProfiles || u32 max_profiles, [[#IOSThreadProfile|IOSThreadProfile]] *out
|-
|-
| 0x70 || || IOSError || GetIobContext || u32 id, IOSIobContext *out_buf
| 0x70 || || IOSError || GetIobContext || u32 id, IOSIobContext *out_buf
Line 588:
Line 588:
| 0x7E || 0x72 || void || Shutdown || bool reset
| 0x7E || 0x72 || void || Shutdown || bool reset
|-
|-
−
| 0x7F || 0x73 || void || Panic || char *panic_desc, u32 panic_desc_size
+
| 0x7F || 0x73 || void || IOS_Panic || char *panic_desc, u32 panic_desc_size
|-
|-
| 0x80 || 0x74 || void || Reset ||
| 0x80 || 0x74 || void || Reset ||
Line 600:
Line 600:
| 0x84 || 0x78 || IOSError || [[#LoadPpcApplication|LoadPpcApplication]] || u32 mem_id, u32 addr1, u32 size1, u32 addr2, u32 size2
| 0x84 || 0x78 || IOSError || [[#LoadPpcApplication|LoadPpcApplication]] || u32 mem_id, u32 addr1, u32 size1, u32 addr2, u32 size2
|-
|-
−
| 0x85 || 0x79 || IOSError || SetSecurityLevel || IOSSecurityLevel level
+
| 0x85 || 0x79 || IOSError || SetSecurityLevel || [[#IOSSecurityLevel|IOSSecurityLevel]] level
|-
|-
| 0x86 || 0x7A || IOSSecurityLevel || GetSecurityLevel ||
| 0x86 || 0x7A || IOSSecurityLevel || GetSecurityLevel ||
Line 675:
Line 675:
=== InitializePpc ===
=== InitializePpc ===
Fills range 0x00000000 to 0x00002000 in MEM1 with empty PPC branches
Fills range 0x00000000 to 0x00002000 in MEM1 with empty PPC branches
−
−
=== GetThreadStackInfo ===
−
Gets information on the specified thread's stack:
−
0x00(out_buf) == sys stack base
−
0x04(out_buf) == sys stack size (0x400)
−
0x08(out_buf) == sys stack used space
−
0x0C(out_buf) == user stack base
−
0x10(out_buf) == user stack size
−
0x14(out_buf) == user stack used space
−
−
=== IOS_ThreadProfileCommand ===
−
Issues a command to the thread profiling system. Valid commands are:
−
67h : Start profiling
−
64h : Stop profiling
−
65h : Stop profiling interval (disabled on retail?)
−
66h, 6Eh, 6Fh : Unknown
=== LoadSystemConfiguration ===
=== LoadSystemConfiguration ===
Line 871:
Line 855:
| 0xA8 || 0x8 ||
| 0xA8 || 0x8 ||
|-
|-
−
| 0xB0 || 0x4 || SysStackAddress
+
| 0xB0 || 0x4 || SysStackBase
|-
|-
−
| 0xB4 || 0x4 || UserStackAddress
+
| 0xB4 || 0x4 || UsrStackBase
|-
|-
−
| 0xB8 || 0x4 || UserStackSize
+
| 0xB8 || 0x4 || UsrStackSize
|-
|-
| 0xBC || 0x4 || IpcBufferPool
| 0xBC || 0x4 || IpcBufferPool
|-
|-
−
| 0xC0 || 0x4 || ProfiledCount
+
| 0xC0 || 0x4 || ScheduledCount
|-
|-
−
| 0xC4 || 0x4 || ProfiledTime
+
| 0xC4 || 0x4 || ScheduledTime
|}
|}
Line 913:
Line 897:
| 7
| 7
| Unknown
| Unknown
+
|}
+
+
== IOSThreadStackInfo ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || SysStackBase
+
|-
+
| 0x4 || 0x4 || SysStackSize
+
|-
+
| 0x8 || 0x4 || SysStackUsedSize
+
|-
+
| 0xC || 0x4 || UsrStackBase
+
|-
+
| 0x10 || 0x4 || UsrStackSize
+
|-
+
| 0x14 || 0x4 || UsrStackUsedSize
+
|}
+
+
== IOSThreadUtilization ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || MaxThreads
+
|-
+
| 0x4 || 0x4 || AllocatedThreads
+
|-
+
| 0x8 || 0x4 || MaxAllocatedThreads
+
|-
+
| 0xC || 0x4 || FaultedThreads
+
|}
+
+
== IOSThreadProfile ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || Tid
+
|-
+
| 0x4 || 0x4 || Pid
+
|-
+
| 0x8 || 0x4 || Priority
+
|-
+
| 0xC || 0x4 || State
+
|-
+
| 0x10 || 0x4 || ScheduledCount
+
|-
+
| 0x14 || 0x4 || TotalScheduledCount
+
|-
+
| 0x18 || 0x4 || ScheduledTime
+
|-
+
| 0x1C || 0x4 || TotalScheduledTime
+
|-
+
| 0x20 || 0x4 ||
+
|-
+
| 0x24 || 0x4 || Sp
+
|-
+
| 0x28 || 0x4 ||
+
|}
+
+
== IOSThreadTrace ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || Total
+
|-
+
| 0x4 || 0x4 || Idx
+
|-
+
| 0x8 || 0x4 || TimerVal
+
|-
+
| 0xC || 0x4 || TimerBase
+
|-
+
| 0x10 || 0x8 || UpTime
+
|-
+
| 0x18 || 0x4 || Flags
+
|-
+
| 0x1C || 0x1 * 180 || Pids
+
|}
+
+
== IOSThreadProfileCommand ==
+
{| class="wikitable"
+
|-
+
! Value
+
! Description
+
|-
+
| 100
+
|
+
|-
+
| 101
+
| ProfileEndEx
+
|-
+
| 102
+
|
+
|-
+
| 103
+
| ProfileStart
+
|-
+
| 104
+
|
+
|-
+
| 105
+
| SamplingProfileResume
+
|-
+
| 106
+
| SamplingProfileEnd
+
|-
+
| 107
+
| SamplingProfileStart
+
|-
+
| 108
+
|
+
|-
+
| 109
+
| SamplingProfileMark
+
|-
+
| 110
+
|
+
|-
+
| 111
+
|
|}
|}
Line 1,078:
Line 1,185:
|-
|-
| 0x18 || 0x4 || Microsecond
| 0x18 || 0x4 || Microsecond
+
|}
+
+
== IOSSecurityLevel ==
+
{| class="wikitable"
+
|-
+
! Value
+
! Description
+
|-
+
| 0
+
| None
+
|-
+
| 10
+
| Test
+
|-
+
| 20
+
| Dev
+
|-
+
| 30
+
| Prod
|}
|}