Line 5: |
Line 5: |
| | 0x1 || [[#svcSetHeapSize]] || W1=size || W0=result, X1=outaddr | | | 0x1 || [[#svcSetHeapSize]] || W1=size || W0=result, X1=outaddr |
| |- | | |- |
− | | 0x2 || [[#svcProtectMemory]] || X0=addr, X1=size, W2=prot || W0=result | + | | 0x2 || [[#svcSetMemoryPermission]] || X0=addr, X1=size, W2=prot || W0=result |
| |- | | |- |
− | | 0x3 || [[#svcSetMemoryState]] || X0=addr, X1=size, W2=state0, W3=state1 || W0=result | + | | 0x3 || [[#svcSetMemoryAttribute]] || X0=addr, X1=size, W2=state0, W3=state1 || W0=result |
| |- | | |- |
− | | 0x4 || [[#svcMirrorStack]] || X0=dstaddr, X1=srcaddr, X2=size || W0=result | + | | 0x4 || [[#svcMapMemory]] || X0=dstaddr, X1=srcaddr, X2=size || W0=result |
| |- | | |- |
− | | 0x5 || svcUnmirrorStack || X0=dstaddr, X1=srcaddr, X2=size || W0=result | + | | 0x5 || svcunmapMemory || X0=dstaddr, X1=srcaddr, X2=size || W0=result |
| |- | | |- |
| | 0x6 || svcQueryMemory || X0=meminfo_ptr, X2=addr || W0=result, W1=pageinfo | | | 0x6 || svcQueryMemory || X0=meminfo_ptr, X2=addr || W0=result, W1=pageinfo |
Line 29: |
Line 29: |
| | 0xD || svcSetThreadPriority || W0=thread_handle, W1=prio || W0=result | | | 0xD || svcSetThreadPriority || W0=thread_handle, W1=prio || W0=result |
| |- | | |- |
− | | 0xE || svcGetThreadAffinityMask || W2=thread_handle || W0=result, W1=out, X2=out | + | | 0xE || svcGetThreadCoreMask || W2=thread_handle || W0=result, W1=out, X2=out |
| |- | | |- |
− | | 0xF || svcSetThreadAffinityMask || W0=thread_handle, W1=in, X2=in2 || W0=result | + | | 0xF || svcSetThreadCoreMask || W0=thread_handle, W1=in, X2=in2 || W0=result |
| |- | | |- |
| | 0x10 || svcGetCurrentProcessorNumber || None || W0/X0=cpuid | | | 0x10 || svcGetCurrentProcessorNumber || None || W0/X0=cpuid |
| |- | | |- |
− | | 0x11 || svcGetMemoryBlockSomethingA? || W0=handle || ? | + | | 0x11 || svcSignalEvent || W0=handle || ? |
| |- | | |- |
− | | 0x12 || svcGetMemoryBlockSomethingB? || W0=handle || ? | + | | 0x12 || svcClearEvent || W0=handle || ? |
| |- | | |- |
− | | 0x13 || svcMapMemoryBlock || W0=memblk_handle, X1=addr, X2=size, W3=perm || W0=result | + | | 0x13 || svcMapSharedMemory || W0=memblk_handle, X1=addr, X2=size, W3=perm || W0=result |
| |- | | |- |
− | | 0x14 || svcUnmapMemoryBlock || W0=memblk_handle, X1=addr, X2=size || W0=result | + | | 0x14 || svcUnmapSharedMemory || W0=memblk_handle, X1=addr, X2=size || W0=result |
| |- | | |- |
− | | 0x15 || [[#svcCreateMemoryMirror]] || X1=addr, X2=size, W3=perm || W0=result, W1=handle | + | | 0x15 || [[#svcCreateTransferMemory]] || X1=addr, X2=size, W3=perm || W0=result, W1=handle |
| |- | | |- |
| | 0x16 || svcCloseHandle || W0=handle || W0=result | | | 0x16 || svcCloseHandle || W0=handle || W0=result |
| |- | | |- |
− | | 0x17 || svcClearEvent || W0=handle || W0=result | + | | 0x17 || svcResetSignal || W0=handle || W0=result |
| |- | | |- |
− | | 0x18 || [[#svcWaitEvents]] || X1=handles_ptr, W2=num_handles. X3=timeout || W0=result, W1=handle_idx | + | | 0x18 || [[#svcWaitSynchronization]] || X1=handles_ptr, W2=num_handles. X3=timeout || W0=result, W1=handle_idx |
| |- | | |- |
− | | 0x19 || svcSignalEvent || W0=handle || W0=result | + | | 0x19 || svcCancelSynchronization || W0=handle || W0=result |
| |- | | |- |
− | | 0x1A || svcLockMutex || W0=cur_thread_handle, X1=ptr, W2=req_thread_handle || | + | | 0x1A || svcArbitrateLock || W0=cur_thread_handle, X1=ptr, W2=req_thread_handle || |
| |- | | |- |
− | | 0x1B || svcUnlockMutex || X0=ptr || | + | | 0x1B || svcArbitrateUnlock || X0=ptr || |
| |- | | |- |
− | | 0x1C || svcCondWait || X0=ptr0, X1=ptr, W2=thread_handle, X3=timeout || W0=result | + | | 0x1C || svcWaitProcessWideKeyAtomic || X0=ptr0, X1=ptr, W2=thread_handle, X3=timeout || W0=result |
| |- | | |- |
− | | 0x1D || svcCondBroadcast || X0=ptr, W1=value || W0=result | + | | 0x1D || svc:SignalProcessWideKey || X0=ptr, W1=value || W0=result |
| |- | | |- |
− | | .... || ? || ? || ? | + | | 0x1E || svcGetSystemTick || |
| |- | | |- |
| | 0x1F || svcConnectToPort || X1=port_name_str || W0=result, W1=handle | | | 0x1F || svcConnectToPort || X1=port_name_str || W0=result, W1=handle |
| |- | | |- |
− | | .... || ? || ? || ? | + | | 0x20 || svcSendSyncRequestLight || |
| |- | | |- |
| | 0x21 || svcSendSyncRequest || X0=handle || W0=result | | | 0x21 || svcSendSyncRequest || X0=handle || W0=result |
| |- | | |- |
− | | 0x22 || [[#svcSendSyncRequestByBuf]] || X0=cmdbufptr, X1=size, X2=handle || W0=result | + | | 0x22 || [[#svcSendSyncRequestWithUserBuffer]] || X0=cmdbufptr, X1=size, X2=handle || W0=result |
| |- | | |- |
− | | .... || ? || ? || ? | + | | 0x23 || svcSendAsyncRequestWithUserBuffer || |
| + | |- |
| + | | 0x24 || svcGetProcessId || |
| |- | | |- |
| | 0x25 || svcGetThreadId || W0=thread_handle || W0=result, X1=out | | | 0x25 || svcGetThreadId || W0=thread_handle || W0=result, X1=out |
Line 82: |
Line 84: |
| |- | | |- |
| | 0x29 || [[#svcGetInfo]] || X1=info_id, X2=handle, X3=info_sub_id || W0=result, X1=out | | | 0x29 || [[#svcGetInfo]] || X1=info_id, X2=handle, X3=info_sub_id || W0=result, X1=out |
| + | |- |
| + | | 0x2A || svcFlushEntireDataCache || |
| + | |- |
| + | | 0x2B || svcFlushDataCache || |
| + | |- |
| + | | .... || ? || ? || ? |
| + | |- |
| + | | 0x2F || svcGetLastThreadInfo || |
| + | |- |
| + | | 0x30 || svcGetResourceLimitLimitValue || |
| + | |- |
| + | | 0x31 || svcGetResourceLimitCurrentValue || |
| + | |- |
| + | | 0x32 || svcSetThreadActivity || |
| + | |- |
| + | | 0x33 || svcGetThreadContext3 || |
| + | |- |
| + | | .... || ? || ? || ? |
| + | |- |
| + | | 0x3C || svcDumpInfo || |
| |- | | |- |
| | .... || ? || ? || ? | | | .... || ? || ? || ? |
Line 88: |
Line 110: |
| |- | | |- |
| | 0x41 || svcAcceptSession || W1=port_handle || W0=result, W1=session_handle | | | 0x41 || svcAcceptSession || W1=port_handle || W0=result, W1=session_handle |
| + | |- |
| + | | 0x42 || svcReplyAndReceiveLight || |
| + | |- |
| + | | 0x43 || svcReplyAndReceive || X1=ptr_handles, W2=num_handles, X3=?, X4=timeout || W0=result, W1=handle_idx |
| + | |- |
| + | | 0x44 || ReplyAndReceiveWithUserBuffer|| X1=buf, X2=sz, X3=ptr_handles, W4=num_handles, X5=?, X6=timeout || W0=result, W1=handle_idx |
| + | |- |
| + | | 0x45 || svcCreateEvent || None || W0=result, W1=client_handle ?, W2=server_handle ? |
| |- | | |- |
| | .... || ? || ? || ? | | | .... || ? || ? || ? |
| |- | | |- |
− | | 0x43 || svcReplyAndReceive || X1=ptr_handles, W2=num_handles, X3=?, X4=timeout || W0=result, W1=handle_idx | + | | 0x4D || svcSleepSystem || |
| + | |- |
| + | | 0x4E || svcReadWriteRegister || |
| + | |- |
| + | | 0x4F || svcSetProcessActivity || |
| + | |- |
| + | | 0x50 || svcCreateSharedMemory || W1=size?, W2=perm0, W3=perm1 || W0=result, W1=handle |
| + | |- |
| + | | 0x51 || [[#svcMapTransferMemory]] || X0=mirror_handle, X1=addr, X2=size, W3=perm || W0=result |
| + | |- |
| + | | 0x52 || [[#svcUnmapTransferMemory]] || W0=mirror_handle, X1=addr, X2=size || W0=result |
| + | |- |
| + | | 0x53 || svcCreateInterruptEvent || |
| + | |- |
| + | | 0x54 || svcQueryPhysicalAddress || |
| + | |- |
| + | | 0x55 || svcQueryToMapping || |
| + | |- |
| + | | 0x56 || svcCreateDeviceAddressSpace || |
| + | |- |
| + | | 0x57 || svcAttachDeviceAddressSpace || |
| + | |- |
| + | | 0x58 || svcDetachDeviceAddressSpace || |
| + | |- |
| + | | 0x59 || svcMapDeviceAddressSpaceByForce || |
| + | |- |
| + | | 0x5A || svcMapDeviceAddressSpaceAligned || |
| + | |- |
| + | | 0x5B || svcMapDeviceAddressSpace || |
| + | |- |
| + | | 0x5C || svcUnmapDeviceAddressSpace || |
| + | |- |
| + | | 0x5D || svcInvalidateProcessDataCache || |
| + | |- |
| + | | 0x5E || svcStoreProcessDataCache || |
| + | |- |
| + | | 0x5F || svcFlushProcessDataCache || |
| + | |- |
| + | | 0x60 || svcDebugActiveProcess || |
| + | |- |
| + | | 0x61 || svcBreakDebugProcess || |
| + | |- |
| + | | 0x62 || svcTerminateDebugProcess || |
| + | |- |
| + | | 0x63 || svcGetDebugEvent || |
| + | |- |
| + | | 0x64 || svcContinueDebugEvent || |
| + | |- |
| + | | 0x65 || svcGetProcessList || |
| + | |- |
| + | | 0x66 || svcGetThreadList || |
| + | |- |
| + | | 0x67 || svcGetDebugThreadContext || |
| + | |- |
| + | | 0x68 || svcSetDebugThreadContext || |
| + | |- |
| + | | 0x69 || svcQueryDebugProcessMemory || |
| + | |- |
| + | | 0x6A || svcReadDebugProcessMemory || |
| + | |- |
| + | | 0x6B || svcWriteDebugProcessMemory || |
| |- | | |- |
− | | 0x44 || svcReplyAndReceiveByBuf || X1=buf, X2=sz, X3=ptr_handles, W4=num_handles, X5=?, X6=timeout || W0=result, W1=handle_idx | + | | 0x6C || svcSetHardwareBreakPoint || |
| |- | | |- |
− | | 0x45 || svcCreateEvent ? || None || W0=result, W1=client_handle ?, W2=server_handle ? | + | | 0x6D || svcGetDebugThreadParam || |
| |- | | |- |
| | .... || ? || ? || ? | | | .... || ? || ? || ? |
| |- | | |- |
− | | 0x50 || svcCreateMemoryBlock || W1=size?, W2=perm0, W3=perm1 || W0=result, W1=handle | + | | 0x70 || svcCreatePort || |
| + | |- |
| + | | 0x71 || svcManageNamedPort || |
| + | |- |
| + | | 0x72 || svcConnectToPort || |
| + | |- |
| + | | 0x73 || svcSetProcessMemoryPermission || |
| + | |- |
| + | | 0x74 || svcMapProcessMemory || |
| + | |- |
| + | | 0x75 || svcUnmapProcessMemory || |
| + | |- |
| + | | 0x76 || svcQueryProcessMemory || |
| + | |- |
| + | | 0x77 || svcMapProcessCodeMemory || |
| + | |- |
| + | | 0x78 || svcUnmapProcessCodeMemory || |
| + | |- |
| + | | 0x79 || svcCreateProcess || |
| + | |- |
| + | | 0x7A || svcStartProcess || |
| + | |- |
| + | | 0x7B || svcTerminateProcess || |
| + | |- |
| + | | 0x7C || svcGetProcessInfo || |
| + | |- |
| + | | 0x7D || svcCreateResourceLimit || |
| |- | | |- |
− | | 0x51 || [[#svcMapMemoryMirror]] || X0=mirror_handle, X1=addr, X2=size, W3=perm || W0=result | + | | 0x7E || svcSetResourceLimitLimitValue || |
| |- | | |- |
− | | 0x52 || [[#svcUnmapMemoryMirror]] || W0=mirror_handle, X1=addr, X2=size || W0=result | + | | 0x7F || svcCallSecureMonitor || |
| |} | | |} |
| | | |
Line 109: |
Line 225: |
| Size must be a multiple of 0x2000000. The heap base-address is written to out. | | Size must be a multiple of 0x2000000. The heap base-address is written to out. |
| | | |
− | == svcProtectMemory == | + | == svcSetMemoryPermission == |
| Bit2 of permission (exec) is not allowed. | | Bit2 of permission (exec) is not allowed. |
| | | |