SVC: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
|- | |- | ||
! Id | ! Id | ||
! NATIVE_FIRM ARM11 kernel notes | |||
! Enabled for the TWL_FIRM ARM11 kernel | |||
! Description | ! Description | ||
|- | |- | ||
| 0x1 | | 0x1 | ||
| | |||
| No | |||
| Result ControlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions) (outaddr is usually the same as the input addr0) | | Result ControlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions) (outaddr is usually the same as the input addr0) | ||
|- | |- | ||
| 0x2 | | 0x2 | ||
| | |||
| No | |||
| Result QueryMemory(MemoryInfo* info, PageInfo* out, u32 Addr) | | Result QueryMemory(MemoryInfo* info, PageInfo* out, u32 Addr) | ||
|- | |- | ||
| 0x3 | | 0x3 | ||
| | |||
| No | |||
| void ExitProcess(void) | | void ExitProcess(void) | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
| | |||
| No | |||
| Result GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount) | | Result GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount) | ||
|- | |- | ||
| 0x5 | | 0x5 | ||
| | |||
| No | |||
| Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount) | | Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount) | ||
|- | |- | ||
| 0x6 | | 0x6 | ||
| | |||
| No | |||
| Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process) | | Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process) | ||
|- | |- | ||
| 0x7 | | 0x7 | ||
| | |||
| No | |||
| Result SetProcessIdealProcessor(Handle process, s32 idealprocessor) | | Result SetProcessIdealProcessor(Handle process, s32 idealprocessor) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | |||
| Yes | |||
| Result [[#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid) | | Result [[#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid) | ||
|- | |- | ||
| 0x9 | | 0x9 | ||
| | |||
| Yes | |||
| void ExitThread(void) | | void ExitThread(void) | ||
|- | |- | ||
| 0xA | | 0xA | ||
| | |||
| Yes | |||
| void SleepThread(s64 nanoseconds) | | void SleepThread(s64 nanoseconds) | ||
|- | |- | ||
| 0xB | | 0xB | ||
| | |||
| Yes | |||
| Result GetThreadPriority(s32* priority, Handle thread) | | Result GetThreadPriority(s32* priority, Handle thread) | ||
|- | |- | ||
| 0xC | | 0xC | ||
| | |||
| Yes | |||
| Result SetThreadPriority(Handle thread, s32 priority) | | Result SetThreadPriority(Handle thread, s32 priority) | ||
|- | |- | ||
| 0xD | | 0xD | ||
| | |||
| No | |||
| Result GetThreadAffinityMask(u8* affinitymask, Handle thread, s32 processorcount) | | Result GetThreadAffinityMask(u8* affinitymask, Handle thread, s32 processorcount) | ||
|- | |- | ||
| 0xE | | 0xE | ||
| | |||
| No | |||
| Result SetThreadAffinityMask(Handle thread, u8* affinitymask, s32 processorcount) | | Result SetThreadAffinityMask(Handle thread, u8* affinitymask, s32 processorcount) | ||
|- | |- | ||
| 0xF | | 0xF | ||
| | |||
| No | |||
| Result GetThreadIdealProcessor(s32* processorid, Handle thread) | | Result GetThreadIdealProcessor(s32* processorid, Handle thread) | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| | |||
| No | |||
| Result SetThreadIdealProcessor(Handle thread, s32 processorid) | | Result SetThreadIdealProcessor(Handle thread, s32 processorid) | ||
|- | |- | ||
| 0x11 | | 0x11 | ||
| | |||
| No | |||
| s32 GetCurrentProcessorNumber(void) | | s32 GetCurrentProcessorNumber(void) | ||
|- | |- | ||
| 0x12 | | 0x12 | ||
| | |||
| No | |||
| Result Run(Handle process, StartupInfo* info) (This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.) | | Result Run(Handle process, StartupInfo* info) (This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.) | ||
|- | |- | ||
| 0x13 | | 0x13 | ||
| | |||
| Yes | |||
| Result CreateMutex(Handle* mutex, bool initialLocked) | | Result CreateMutex(Handle* mutex, bool initialLocked) | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
| | |||
| Yes | |||
| Result ReleaseMutex(Handle mutex) | | Result ReleaseMutex(Handle mutex) | ||
|- | |- | ||
| 0x15 | | 0x15 | ||
| | |||
| Yes | |||
| Result CreateSemaphore(Handle* semaphore, s32 initialCount, s32 maxCount) | | Result CreateSemaphore(Handle* semaphore, s32 initialCount, s32 maxCount) | ||
|- | |- | ||
| 0x16 | | 0x16 | ||
| | |||
| Yes | |||
| Result ReleaseSemaphore(s32* count, Handle semaphore, s32 releaseCount) | | Result ReleaseSemaphore(s32* count, Handle semaphore, s32 releaseCount) | ||
|- | |- | ||
| 0x17 | | 0x17 | ||
| | |||
| Yes | |||
| Result CreateEvent(Handle* event, ResetType resettype) | | Result CreateEvent(Handle* event, ResetType resettype) | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| | |||
| Yes | |||
| Result SignalEvent(Handle event) | | Result SignalEvent(Handle event) | ||
|- | |- | ||
| 0x19 | | 0x19 | ||
| | |||
| Yes | |||
| Result ClearEvent(Handle event) | | Result ClearEvent(Handle event) | ||
|- | |- | ||
| 0x1A | | 0x1A | ||
| | |||
| Yes | |||
| Result CreateTimer(Handle* timer, ResetType resettype) | | Result CreateTimer(Handle* timer, ResetType resettype) | ||
|- | |- | ||
| 0x1B | | 0x1B | ||
| | |||
| Yes | |||
| Result SetTimer(Handle timer, s64 initial, s64 interval) | | Result SetTimer(Handle timer, s64 initial, s64 interval) | ||
|- | |- | ||
| 0x1C | | 0x1C | ||
| | |||
| Yes | |||
| Result CancelTimer(Handle timer) | | Result CancelTimer(Handle timer) | ||
|- | |- | ||
| 0x1D | | 0x1D | ||
| | |||
| Yes | |||
| Result ClearTimer(Handle timer) | | Result ClearTimer(Handle timer) | ||
|- | |- | ||
| 0x1E | | 0x1E | ||
| | |||
| No | |||
| Result CreateMemoryBlock(Handle* memblock, u32 addr, u32 size, u32 mypermission, u32 otherpermission) | | Result CreateMemoryBlock(Handle* memblock, u32 addr, u32 size, u32 mypermission, u32 otherpermission) | ||
|- | |- | ||
| 0x1F | | 0x1F | ||
| | |||
| No | |||
| Result MapMemoryBlock(Handle memblock, u32 addr, u32 mypermissions, u32 otherpermission) | | Result MapMemoryBlock(Handle memblock, u32 addr, u32 mypermissions, u32 otherpermission) | ||
|- | |- | ||
| 0x20 | | 0x20 | ||
| | |||
| No | |||
| Result UnmapMemoryBlock(Handle memblock, u32 addr) | | Result UnmapMemoryBlock(Handle memblock, u32 addr) | ||
|- | |- | ||
| 0x21 | | 0x21 | ||
| | |||
| Yes | |||
| Result CreateAddressArbiter(Handle* arbiter) | | Result CreateAddressArbiter(Handle* arbiter) | ||
|- | |- | ||
| 0x22 | | 0x22 | ||
| | |||
| Yes | |||
| Result ArbitrateAddress(Handle arbiter, u32 addr, ArbitrationType type, s32 value) | | Result ArbitrateAddress(Handle arbiter, u32 addr, ArbitrationType type, s32 value) | ||
|- | |- | ||
| 0x23 | | 0x23 | ||
| | |||
| Yes | |||
| Result CloseHandle(Handle handle) | | Result CloseHandle(Handle handle) | ||
|- | |- | ||
| 0x24 | | 0x24 | ||
| | |||
| Yes | |||
| Result WaitSynchronization1(Handle handle, s64 nanoseconds) | | Result WaitSynchronization1(Handle handle, s64 nanoseconds) | ||
|- | |- | ||
| 0x25 | | 0x25 | ||
| | |||
| Yes | |||
| Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds) | | Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds) | ||
|- | |- | ||
| 0x26 | | 0x26 | ||
| | |||
| No | |||
| Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds) | | Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds) | ||
|- | |- | ||
| 0x27 | | 0x27 | ||
| | |||
| Yes | |||
| Result DuplicateHandle(Handle* out, Handle original) | | Result DuplicateHandle(Handle* out, Handle original) | ||
|- | |- | ||
| 0x28 | | 0x28 | ||
| | |||
| Yes | |||
| s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on) | | s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on) | ||
|- | |- | ||
| 0x29 | | 0x29 | ||
| | |||
| No | |||
| Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type) | | Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type) | ||
|- | |- | ||
| 0x2A | | 0x2A | ||
| | |||
| Yes | |||
| Result GetSystemInfo(s64* out, SystemInfoType type, s32 param) | | Result GetSystemInfo(s64* out, SystemInfoType type, s32 param) | ||
|- | |- | ||
| 0x2B | | 0x2B | ||
| | |||
| Yes | |||
| Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type) | | Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type) | ||
|- | |- | ||
| 0x2C | | 0x2C | ||
| | |||
| Yes | |||
| Result GetThreadInfo(s64* out, Handle thread, ThreadInfoType type) | | Result GetThreadInfo(s64* out, Handle thread, ThreadInfoType type) | ||
|- | |- | ||
| 0x2D | | 0x2D | ||
| | |||
| No | |||
| Result ConnectToPort(Handle* out, const char* portName) | | Result ConnectToPort(Handle* out, const char* portName) | ||
|- | |- | ||
| 0x2E | | 0x2E | ||
| Result SendSyncRequest1(Handle session | | Stubbed | ||
| No | |||
| Result SendSyncRequest1(Handle session) | |||
|- | |- | ||
| 0x2F | | 0x2F | ||
| Result SendSyncRequest2(Handle session | | Stubbed | ||
| No | |||
| Result SendSyncRequest2(Handle session) | |||
|- | |- | ||
| 0x30 | | 0x30 | ||
| Result SendSyncRequest3(Handle session | | Stubbed | ||
| No | |||
| Result SendSyncRequest3(Handle session) | |||
|- | |- | ||
| 0x31 | | 0x31 | ||
| Result SendSyncRequest4(Handle session | | Stubbed | ||
| No | |||
| Result SendSyncRequest4(Handle session) | |||
|- | |- | ||
| 0x32 | | 0x32 | ||
| | |||
| No | |||
| Result SendSyncRequest(Handle session) | | Result SendSyncRequest(Handle session) | ||
|- | |- | ||
| 0x33 | | 0x33 | ||
| | |||
| No | |||
| Result OpenProcess(Handle* process, u32 processId) | | Result OpenProcess(Handle* process, u32 processId) | ||
|- | |- | ||
| 0x34 | | 0x34 | ||
| | |||
| No | |||
| Result OpenThread(Handle* thread, Handle process, u32 threadId) | | Result OpenThread(Handle* thread, Handle process, u32 threadId) | ||
|- | |- | ||
| 0x35 | | 0x35 | ||
| | |||
| Yes | |||
| Result GetProcessId(u32* processId, Handle process) | | Result GetProcessId(u32* processId, Handle process) | ||
|- | |- | ||
| 0x36 | | 0x36 | ||
| | |||
| No | |||
| Result GetProcessIdOfThread(u32* processId, Handle thread) | | Result GetProcessIdOfThread(u32* processId, Handle thread) | ||
|- | |- | ||
| 0x37 | | 0x37 | ||
| | |||
| Yes | |||
| Result GetThreadId(u32* threadId, Handle thread) | | Result GetThreadId(u32* threadId, Handle thread) | ||
|- | |- | ||
| 0x38 | | 0x38 | ||
| | |||
| No | |||
| Result GetResourceLimit(Handle* resourceLimit, Handle process) | | Result GetResourceLimit(Handle* resourceLimit, Handle process) | ||
|- | |- | ||
| 0x39 | | 0x39 | ||
| | |||
| No | |||
| Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount) | | Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount) | ||
|- | |- | ||
| 0x3A | | 0x3A | ||
| | |||
| No | |||
| Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount) | | Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount) | ||
|- | |- | ||
| 0x3B | | 0x3B | ||
| | |||
| No | |||
| Result GetThreadContext(ThreadContext* context, Handle thread) (Stubbed) | | Result GetThreadContext(ThreadContext* context, Handle thread) (Stubbed) | ||
|- | |- | ||
| 0x3C | | 0x3C | ||
| | |||
| Yes | |||
| Break(BreakReason) | | Break(BreakReason) | ||
|- | |- | ||
| 0x3D | | 0x3D | ||
| | |||
| Yes | |||
| OutputDebugString(void const, int) (Does nothing on non-debug units) | | OutputDebugString(void const, int) (Does nothing on non-debug units) | ||
|- | |- | ||
| 0x3E | | 0x3E | ||
| | |||
| No | |||
| ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long) | | ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long) | ||
|- | |- | ||
| 0x47 | | 0x47 | ||
| | |||
| No | |||
| Result CreatePort(Handle* portServer, Handle* portClient, const char* name, s32 maxSessions) | | Result CreatePort(Handle* portServer, Handle* portClient, const char* name, s32 maxSessions) | ||
|- | |- | ||
| 0x48 | | 0x48 | ||
| | |||
| No | |||
| Result CreateSessionToPort(Handle* session, Handle port) | | Result CreateSessionToPort(Handle* session, Handle port) | ||
|- | |- | ||
| 0x49 | | 0x49 | ||
| | |||
| No | |||
| Result CreateSession(Handle* sessionServer, Handle* sessionClient) | | Result CreateSession(Handle* sessionServer, Handle* sessionClient) | ||
|- | |- | ||
| 0x4A | | 0x4A | ||
| | |||
| No | |||
| Result AcceptSession(Handle* session, Handle port) | | Result AcceptSession(Handle* session, Handle port) | ||
|- | |- | ||
| 0x4B | | 0x4B | ||
| | |||
| No | |||
| Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | | Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | ||
|- | |- | ||
| 0x4C | | 0x4C | ||
| | |||
| No | |||
| Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | | Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | ||
|- | |- | ||
| 0x4D | | 0x4D | ||
| | |||
| No | |||
| Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | | Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | ||
|- | |- | ||
| 0x4E | | 0x4E | ||
| | |||
| No | |||
| Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | | Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed) | ||
|- | |- | ||
| 0x4F | | 0x4F | ||
| | |||
| No | |||
| Result ReplyAndReceive(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) | | Result ReplyAndReceive(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) | ||
|- | |- | ||
| 0x50 | | 0x50 | ||
| | |||
| Yes | |||
| Result BindInterrupt(Interrupt name, Handle syncObject, s32 priority, bool isManualClear) | | Result BindInterrupt(Interrupt name, Handle syncObject, s32 priority, bool isManualClear) | ||
|- | |- | ||
| 0x51 | | 0x51 | ||
| | |||
| Yes | |||
| Result UnbindInterrupt(Interrupt name, Handle syncObject) | | Result UnbindInterrupt(Interrupt name, Handle syncObject) | ||
|- | |- | ||
| 0x52 | | 0x52 | ||
| | |||
| Yes | |||
| Result InvalidateProcessDataCache(Handle process, void* addr, u32 size) | | Result InvalidateProcessDataCache(Handle process, void* addr, u32 size) | ||
|- | |- | ||
| 0x53 | | 0x53 | ||
| | |||
| Yes | |||
| Result StoreProcessDataCache(Handle process, void const* addr, u32 size) | | Result StoreProcessDataCache(Handle process, void const* addr, u32 size) | ||
|- | |- | ||
| 0x54 | | 0x54 | ||
| | |||
| Yes | |||
| Result FlushProcessDataCache(Handle process, void const* addr, u32 size) | | Result FlushProcessDataCache(Handle process, void const* addr, u32 size) | ||
|- | |- | ||
| 0x55 | | 0x55 | ||
| | |||
| Yes | |||
| Result StartInterProcessDma(Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig& config ) | | Result StartInterProcessDma(Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig& config ) | ||
|- | |- | ||
| 0x56 | | 0x56 | ||
| | |||
| Yes | |||
| Result StopDma(Handle dma) | | Result StopDma(Handle dma) | ||
|- | |- | ||
| 0x57 | | 0x57 | ||
| | |||
| Yes | |||
| Result GetDmaState(DmaState* state, Handle dma) | | Result GetDmaState(DmaState* state, Handle dma) | ||
|- | |- | ||
| 0x58 | | 0x58 | ||
| | |||
| Yes | |||
| RestartDma(nn::Handle, void *, void const*, unsigned int, signed char) | | RestartDma(nn::Handle, void *, void const*, unsigned int, signed char) | ||
|- | |- | ||
| 0x60 | | 0x60 | ||
| | |||
| No | |||
| Result DebugActiveProcess(Handle* debug, u32 processID) | | Result DebugActiveProcess(Handle* debug, u32 processID) | ||
|- | |- | ||
| 0x61 | | 0x61 | ||
| | |||
| No | |||
| Result BreakDebugProcess(Handle debug) | | Result BreakDebugProcess(Handle debug) | ||
|- | |- | ||
| 0x62 | | 0x62 | ||
| | |||
| No | |||
| Result TerminateDebugProcess(Handle debug) | | Result TerminateDebugProcess(Handle debug) | ||
|- | |- | ||
| 0x63 | | 0x63 | ||
| | |||
| No | |||
| Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug) | | Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug) | ||
|- | |- | ||
| 0x64 | | 0x64 | ||
| | |||
| No | |||
| Result ContinueDebugEvent(Handle debug, u32 flags) | | Result ContinueDebugEvent(Handle debug, u32 flags) | ||
|- | |- | ||
| 0x65 | | 0x65 | ||
| | |||
| No | |||
| Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount) | | Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount) | ||
|- | |- | ||
| 0x66 | | 0x66 | ||
| | |||
| No | |||
| Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain) | | Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain) | ||
|- | |- | ||
| 0x67 | | 0x67 | ||
| | |||
| No | |||
| Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags) | | Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags) | ||
|- | |- | ||
| 0x68 | | 0x68 | ||
| | |||
| No | |||
| Result SetDebugThreadContext(Handle debug, u32 threadId, ThreadContext* context, u32 controlFlags) | | Result SetDebugThreadContext(Handle debug, u32 threadId, ThreadContext* context, u32 controlFlags) | ||
|- | |- | ||
| 0x69 | | 0x69 | ||
| | |||
| No | |||
| Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle process, u32 addr) | | Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle process, u32 addr) | ||
|- | |- | ||
| 0x6A | | 0x6A | ||
| | |||
| No | |||
| Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size) | | Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size) | ||
|- | |- | ||
| 0x6B | | 0x6B | ||
| | |||
| No | |||
| Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size) | | Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size) | ||
|- | |- | ||
| 0x6C | | 0x6C | ||
| | |||
| No | |||
| Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value) | | Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value) | ||
|- | |- | ||
| 0x6D | | 0x6D | ||
| | |||
| No | |||
| GetDebugThreadParam(long long *, int *, nn::Handle, unsigned int, nn::dmnt::DebugThreadParam) (Disabled on regular kernel) | | GetDebugThreadParam(long long *, int *, nn::Handle, unsigned int, nn::dmnt::DebugThreadParam) (Disabled on regular kernel) | ||
|- | |- | ||
| 0x70 | | 0x70 | ||
| | |||
| No | |||
| ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions) | | ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions) | ||
|- | |- | ||
| 0x71 | | 0x71 | ||
| | |||
| No | |||
| MapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr) | | MapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr) | ||
|- | |- | ||
| 0x72 | | 0x72 | ||
| | |||
| No | |||
| UnmapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr) | | UnmapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr) | ||
|- | |- | ||
| 0x73 | | 0x73 | ||
| | |||
| No | |||
| ? | | ? | ||
|- | |- | ||
| 0x74 | | 0x74 | ||
| Stubbed | | Stubbed | ||
| No | |||
| | |||
|- | |- | ||
| 0x75 | | 0x75 | ||
| | |||
| No | |||
| ? | | ? | ||
|- | |- | ||
| 0x76 | | 0x76 | ||
| | |||
| No | |||
| TerminateProcess(Handle) | | TerminateProcess(Handle) | ||
|- | |- | ||
| 0x77 | | 0x77 | ||
| | |||
| No | |||
| (Handle KProcess, Handle KResourceLimit) | | (Handle KProcess, Handle KResourceLimit) | ||
|- | |- | ||
| 0x78 | | 0x78 | ||
| | |||
| No | |||
| CreateResourceLimit(Handle *KResourceLimit) | | CreateResourceLimit(Handle *KResourceLimit) | ||
|- | |- | ||
| 0x79 | | 0x79 | ||
| | |||
| No | |||
| ? | | ? | ||
|- | |- | ||
| 0x7A | | 0x7A | ||
| | | Stubbed beginning with [[2.0.0-2]] | ||
| Yes | |||
| DisableExecuteNever(unsigned int Addr, unsigned int Size) | |||
|- | |- | ||
| 0x7C | | 0x7C | ||
| | |||
| Yes | |||
| KernelSetState(unsigned int Type, unsigned int Param0, unsigned int Param1, unsigned int Param2) (The Type determines the usage of each param) | | KernelSetState(unsigned int Type, unsigned int Param0, unsigned int Param1, unsigned int Param2) (The Type determines the usage of each param) | ||
|- | |- | ||
| 0x7D | | 0x7D | ||
| | |||
| No | |||
| QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr) | | QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr) | ||
|- | |- | ||
| 0xFF | | 0xFF | ||
| | |||
| Yes | |||
| Debug related (The Syscall access control mask doesn't apply for this SVC) | | Debug related (The Syscall access control mask doesn't apply for this SVC) | ||
|} | |} |