Difference between revisions of "Cafe OS Syscalls"

From WiiUBrew
Jump to: navigation, search
Line 1: Line 1:
 +
The kernel contains several different system call tables that controls the availability of syscalls to different process modes.
 +
 +
Access modes:
 +
* L: Loader
 +
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! # !! Name
+
! # !! Name !! Access
 
|-
 
|-
| 0x0000 || ConsoleWrite
+
| 0x0000 || ConsoleWrite || L
 
|-
 
|-
| 0x0011 || ReadRegister32Ex
+
| 0x0011 || ReadRegister32Ex ||
 
|-
 
|-
| 0x0012 || WriteRegister32Ex
+
| 0x0012 || WriteRegister32Ex ||
 
|-
 
|-
| 0x0019 || GetSecurityLevel
+
| 0x0019 || GetSecurityLevel ||
 
|-
 
|-
| 0x0100 || AppPanic
+
| 0x0100 || AppPanic || L
 
|-
 
|-
| 0x0500 || ValidateAddrRange
+
| 0x0500 || ValidateAddrRange || L
 
|-
 
|-
| 0x0800 || SetUserModeExHandler
+
| 0x0800 || SetUserModeExHandler ||
 
|-
 
|-
| 0x0B00 || AllocateTimer
+
| 0x0B00 || AllocateTimer ||
 
|-
 
|-
| 0x0C00 || FreeTimer
+
| 0x0C00 || FreeTimer ||
 
|-
 
|-
| 0x0D00 || PrimeTimer
+
| 0x0D00 || PrimeTimer ||
 
|-
 
|-
| 0x0E00 || StopTimer
+
| 0x0E00 || StopTimer ||
 
|-
 
|-
| 0x1200 || DisableInterrupt
+
| 0x1200 || DisableInterrupt ||
 
|-
 
|-
| 0x1400 || ClearAndEnableInterrupt
+
| 0x1400 || ClearAndEnableInterrupt ||
 
|-
 
|-
| 0x1700 || FindClosestSymbol
+
| 0x1700 || FindClosestSymbol || L
 
|-
 
|-
| 0x1A00 || <!--Kernel-->GetInfo
+
| 0x1A00 || <!--Kernel-->GetInfo ||
 
|-
 
|-
| 0x1D00 || <!--Kernel-->SendICI
+
| 0x1D00 || <!--Kernel-->SendICI ||
 
|-
 
|-
| 0x1E00 || IPCKDriver_LoaderOpen
+
| 0x1E00 || IPCKDriver_<nowiki>{Loader|User}</nowiki>Open || L
 
|-
 
|-
| 0x1F00 || IPCKDriver_LoaderClose
+
| 0x1F00 || IPCKDriver_<nowiki>{Loader|User}</nowiki>Close || L
 
|-
 
|-
| 0x2000 || IPCKDriver_SubmitRequest
+
| 0x2000 || IPCKDriver_SubmitRequest || L
 
|-
 
|-
| 0x2900 || GetForegroundBucket
+
| 0x2900 || GetForegroundBucket ||
 
|-
 
|-
| 0x2F00 || GetCallArgs
+
| 0x2F00 || GetCallArgs ||
 
|-
 
|-
| 0x3800 || AllocVirtAddr
+
| 0x3800 || AllocVirtAddr ||
 
|-
 
|-
| 0x3900 || FreeVirtAddr
+
| 0x3900 || FreeVirtAddr ||
 
|-
 
|-
| 0x3D00 || MapMemory
+
| 0x3D00 || MapMemory ||
 
|-
 
|-
| 0x3E00 || UnmapMemory
+
| 0x3E00 || UnmapMemory ||
 
|-
 
|-
| 0x3F00 || LogBuffer
+
| 0x3F00 || LogBuffer || L
 
|-
 
|-
| 0x4000 || LogArgs
+
| 0x4000 || LogArgs || L
 
|-
 
|-
| 0x4100 || LogFunc
+
| 0x4100 || LogFunc || L
 
|-
 
|-
| 0x4200 || LogReportKernel
+
| 0x4200 || LogReportKernel || L
 
|-
 
|-
| 0x4300 || LogRetrieve
+
| 0x4300 || LogRetrieve || L
 
|-
 
|-
| 0x4900 || SavesDone_ReadyToRelease
+
| 0x4900 || SavesDone_ReadyToRelease ||
 
|-
 
|-
| 0x5000 || RPLLoaderResumeContext
+
| 0x5000 || RPLLoaderResumeContext || L
 
|-
 
|-
| 0x5200 || WaitIopComplete
+
| 0x5200 || WaitIopComplete || L
 
|-
 
|-
| 0x5300 || FlushCode
+
| 0x5300 || FlushCode || L
 
|-
 
|-
| 0x5400 || FlushData
+
| 0x5400 || FlushData || L
 
|-
 
|-
| 0x5500 || UpdateHeartBeat
+
| 0x5500 || UpdateHeartBeat || L
 
|-
 
|-
| 0x5600 || LogEntry
+
| 0x5600 || LogEntry || L
 
|-
 
|-
| 0x5700 || FastClearMemory
+
| 0x5700 || FastClearMemory || L
 
|-
 
|-
| 0x5800 || GetBusClockSpeed
+
| 0x5800 || GetBusClockSpeed || L
 
|-
 
|-
| 0x5B00 || GetProcessIndex
+
| 0x5B00 || GetProcessIndex || L
 
|-
 
|-
| 0x5C00 || IPCKDriver_PollLoaderCompletion
+
| 0x5C00 || IPCKDriver_PollLoaderCompletion || L
 
|-
 
|-
| 0x5D00 || BlockLogSave
+
| 0x5D00 || BlockLogSave ||
 
|-
 
|-
| 0x5E00 || FinishInitAndPreload
+
| 0x5E00 || FinishInitAndPreload || L
 
|-
 
|-
| 0x5F00 || ContinueStartProcess
+
| 0x5F00 || ContinueStartProcess || L
 
|-
 
|-
| 0x6000 || OpenMCP
+
| 0x6000 || OpenMCP || L
 
|-
 
|-
| 0x6600 || ProfileEntry
+
| 0x6600 || ProfileEntry || L
 
|-
 
|-
| 0x6700 || RequestFastExit
+
| 0x6700 || RequestFastExit ||
 
|-
 
|-
| 0x6900 || GetSwitchTarget
+
| 0x6900 || GetSwitchTarget ||
 
|-
 
|-
| 0x6E00 || SwitchSecCodeGenMode
+
| 0x6E00 || SwitchSecCodeGenMode ||
 
|-
 
|-
| 0x7000 || GetTitleVersion
+
| 0x7000 || GetTitleVersion ||
 
|-
 
|-
| 0x7200 || ForceFullRelaunch
+
| 0x7200 || ForceFullRelaunch ||
 
|-
 
|-
| 0x7500 || QueryVirtAddr
+
| 0x7400 || get_mode_flags(?) || L
 
|-
 
|-
| 0x7700 || GetSecCodeGenMode
+
| 0x7500 || QueryVirtAddr ||  
 
|-
 
|-
| 0x7800 || CodegenCopy
+
| 0x7700 || GetSecCodeGenMode ||  
 
|-
 
|-
| 0x7F00 || GetSystemMode
+
| 0x7800 || CodegenCopy ||
 +
|-
 +
| 0x7F00 || GetSystemMode ||
 
|}
 
|}

Revision as of 12:35, 3 July 2015

The kernel contains several different system call tables that controls the availability of syscalls to different process modes.

Access modes:

  • L: Loader
# Name Access
0x0000 ConsoleWrite L
0x0011 ReadRegister32Ex
0x0012 WriteRegister32Ex
0x0019 GetSecurityLevel
0x0100 AppPanic L
0x0500 ValidateAddrRange L
0x0800 SetUserModeExHandler
0x0B00 AllocateTimer
0x0C00 FreeTimer
0x0D00 PrimeTimer
0x0E00 StopTimer
0x1200 DisableInterrupt
0x1400 ClearAndEnableInterrupt
0x1700 FindClosestSymbol L
0x1A00 GetInfo
0x1D00 SendICI
0x1E00 IPCKDriver_{Loader|User}Open L
0x1F00 IPCKDriver_{Loader|User}Close L
0x2000 IPCKDriver_SubmitRequest L
0x2900 GetForegroundBucket
0x2F00 GetCallArgs
0x3800 AllocVirtAddr
0x3900 FreeVirtAddr
0x3D00 MapMemory
0x3E00 UnmapMemory
0x3F00 LogBuffer L
0x4000 LogArgs L
0x4100 LogFunc L
0x4200 LogReportKernel L
0x4300 LogRetrieve L
0x4900 SavesDone_ReadyToRelease
0x5000 RPLLoaderResumeContext L
0x5200 WaitIopComplete L
0x5300 FlushCode L
0x5400 FlushData L
0x5500 UpdateHeartBeat L
0x5600 LogEntry L
0x5700 FastClearMemory L
0x5800 GetBusClockSpeed L
0x5B00 GetProcessIndex L
0x5C00 IPCKDriver_PollLoaderCompletion L
0x5D00 BlockLogSave
0x5E00 FinishInitAndPreload L
0x5F00 ContinueStartProcess L
0x6000 OpenMCP L
0x6600 ProfileEntry L
0x6700 RequestFastExit
0x6900 GetSwitchTarget
0x6E00 SwitchSecCodeGenMode
0x7000 GetTitleVersion
0x7200 ForceFullRelaunch
0x7400 get_mode_flags(?) L
0x7500 QueryVirtAddr
0x7700 GetSecCodeGenMode
0x7800 CodegenCopy
0x7F00 GetSystemMode