In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Cafe OS syscalls"

From WiiUBrew
Jump to navigation Jump to search
m (Marionumber1 moved page Cafe OS Kernel Syscalls to Cafe OS Syscalls: Consistency with IOSU Syscalls page, and it makes more sense anyway (where are syscalls implemented other than the kernel?))
(Added PPC syscalls)
Line 17: Line 17:
 
|-
 
|-
 
| 0x000A || SetCurrentFPUContext ||
 
| 0x000A || SetCurrentFPUContext ||
 +
|-
 +
| 0x000C || WriteGatherInit ||
 
|-
 
|-
 
| 0x000D || SetPerformanceMonitor ||
 
| 0x000D || SetPerformanceMonitor ||
Line 23: Line 25:
 
|-
 
|-
 
| 0x0012 || WriteRegister32Ex ||  
 
| 0x0012 || WriteRegister32Ex ||  
 +
|-
 +
| 0x0017 || WriteGatherGetPtr ||
 
|-
 
|-
 
| 0x0019 || GetSecurityLevel ||  
 
| 0x0019 || GetSecurityLevel ||  
Line 69: Line 73:
 
|-
 
|-
 
| 0x2000 || IPCKDriver_SubmitRequest ||  
 
| 0x2000 || IPCKDriver_SubmitRequest ||  
 +
|-
 +
| 0x2700 || GetNotifyTarget ||
 
|-
 
|-
 
| 0x2800 || ProcCtrl ||  
 
| 0x2800 || ProcCtrl ||  
Line 79: Line 85:
 
|-
 
|-
 
| 0x2F00 || GetCallArgs ||  
 
| 0x2F00 || GetCallArgs ||  
 +
|-
 +
| 0x3000 || GetAbsoluteSystemTimeInternal ||
 +
|-
 +
| 0x3100 || SetAbsoluteSystemTimeInternal ||
 
|-
 
|-
 
| 0x3800 || AllocVirtAddr ||  
 
| 0x3800 || AllocVirtAddr ||  
Line 103: Line 113:
 
|-
 
|-
 
| 0x4C00 || SetIABR ||
 
| 0x4C00 || SetIABR ||
 +
|-
 +
| 0x4D00 || GetProcessInfo ||
 
|-
 
|-
 
| 0x4E00 || GetCodegenVirtAddrRange ||  
 
| 0x4E00 || GetCodegenVirtAddrRange ||  
Line 139: Line 151:
 
|-
 
|-
 
| 0x6000 || OpenMCP || L
 
| 0x6000 || OpenMCP || L
 +
|-
 +
| 0x6400 || SetTimeInternal ||
 
|-
 
|-
 
| 0x6600 || ProfileEntry || L
 
| 0x6600 || ProfileEntry || L

Revision as of 22:56, 7 October 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
0x0006 LoadContext
0x0008 SetContext
0x0009 GetCurrentFPUContext
0x000A SetCurrentFPUContext
0x000C WriteGatherInit
0x000D SetPerformanceMonitor
0x0011 ReadRegister32Ex
0x0012 WriteRegister32Ex
0x0017 WriteGatherGetPtr
0x0019 GetSecurityLevel
0x0100 AppPanic L
0x0200 EffectiveToPhysical
0x0300 PhysicalToEffectiveCached
0x0400 PhysicalToEffectiveUncached
0x0500 ValidateAddrRange L
0x0600 UpdateCoretime
0x0800 SetUserModeExHandler
0x0B00 AllocateTimer
0x0C00 FreeTimer
0x0D00 PrimeTimer
0x0E00 StopTimer
0x0F00 LogLoadedRPLs
0x1200 DisableInterrupt
0x1400 ClearAndEnableInterrupt
0x1700 FindClosestSymbol L
0x1900 Exit/Halt
0x1A00 GetInfo
0x1B00 SetInfo
0x1D00 SendICI
0x1E00 IPCKDriver_{Loader|User}Open L
0x1F00 IPCKDriver_{Loader|User}Close L
0x2000 IPCKDriver_SubmitRequest
0x2700 GetNotifyTarget
0x2800 ProcCtrl
0x2900 GetForegroundBucket
0x2B00 PrepareTitle
0x2C00 ProcYield
0x2F00 GetCallArgs
0x3000 GetAbsoluteSystemTimeInternal
0x3100 SetAbsoluteSystemTimeInternal
0x3800 AllocVirtAddr
0x3900 FreeVirtAddr
0x3D00 MapMemory
0x3E00 UnmapMemory
0x3F00 LogBuffer L
0x4000 LogArgs L
0x4100 LogFunc L
0x4200 LogReportKernel L
0x4300 LogRetrieve
0x4900 SavesDone_ReadyToRelease
0x4B00 SetDABR
0x4C00 SetIABR
0x4D00 GetProcessInfo
0x4E00 GetCodegenVirtAddrRange
0x4F00 LoaderCall
0x5000 RPLLoaderResumeContext L
0x5200 WaitIopComplete L
0x5300 FlushCode L
0x5400 FlushData L
0x5500 UpdateHeartBeat L
0x5600 LogEntry L
0x5700 FastClearMemory L
0x5800 GetBusClockSpeed L
0x5900 GetSharedArea
0x5A00 SendPolicy
0x5B00 GetProcessIndex L
0x5C00 IPCKDriver_PollLoaderCompletion L
0x5D00 BlockLogSave
0x5E00 FinishInitAndPreload L
0x5F00 ContinueStartProcess L
0x6000 OpenMCP L
0x6400 SetTimeInternal
0x6600 ProfileEntry L
0x6700 RequestFastExit
0x6900 GetSwitchTarget
0x6E00 SwitchSecCodeGenMode
0x7000 GetTitleVersion
0x7200 ForceFullRelaunch
0x7400 get_mode_flags(?) L
0x7500 QueryVirtAddr
0x7600 GetCodegenCore
0x7700 GetSecCodeGenMode
0x7800 CodegenCopy
0x7F00 GetSystemMode
0x8100 ZeroProcessMemory
0x8200 HandleIopPowerEvents