diff --git a/nx/include/switch/svc.h b/nx/include/switch/svc.h index 270153b8..d36f54dc 100644 --- a/nx/include/switch/svc.h +++ b/nx/include/switch/svc.h @@ -73,4 +73,7 @@ Result svcGetProcessList(u32 *num_out, u64 *pids_out, u32 max_pids); Result svcQueryDebugProcessMemory(MemInfo* meminfo_ptr, u32* pageinfo, Handle debug, u64 addr); Result svcReadDebugProcessMemory(void* buffer, Handle debug, u64 addr, u64 size); Result svcManageNamedPort(Handle* portServer, const char* name, s32 maxSessions); +Result svcMapProcessMemory(void* dst, Handle proc, u64 src, u64 size); +Result svcCreateProcess(Handle* out, void* proc_info, u32* caps, u64 cap_num); +Result svcStartProcess(Handle proc, s32 main_prio, s32 default_cpu, u32 stack_size); u64 svcCallSecureMonitor(SecmonArgs* regs); diff --git a/nx/source/kernel/svc.s b/nx/source/kernel/svc.s index cf7a038c..b1151154 100644 --- a/nx/source/kernel/svc.s +++ b/nx/source/kernel/svc.s @@ -269,6 +269,24 @@ SVC_BEGIN svcManageNamedPort ret SVC_END +SVC_BEGIN svcMapProcessMemory + svc 0x74 + ret +SVC_END + +SVC_BEGIN svcCreateProcess + str x0, [sp, #-16]! + svc 0x79 + ldr x2, [sp], #16 + str w1, [x2] + ret +SVC_END + +SVC_BEGIN svcStartProcess + svc 0x7A + ret +SVC_END + SVC_BEGIN svcCallSecureMonitor str x0, [sp, #-16]! mov x8, x0 diff --git a/nx/source/services/fatal.c b/nx/source/services/fatal.c index 2e5f8e73..d99e23ff 100644 --- a/nx/source/services/fatal.c +++ b/nx/source/services/fatal.c @@ -27,7 +27,7 @@ void fatalSimple(Result err) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = 0; + raw->cmd_id = 1; raw->result = err; raw->unknown = 0;