From b52787a4fa5240cb07cec9ba72ab78888f2ccc6f Mon Sep 17 00:00:00 2001 From: yellows8 Date: Mon, 18 Sep 2017 14:41:53 -0400 Subject: [PATCH] Added MemInfo struct, based on the libctru one. Added some debug svcs. --- nx/include/switch/svc.h | 19 +++++++++++++++++-- nx/source/kernel/svc.s | 26 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/nx/include/switch/svc.h b/nx/include/switch/svc.h index e1e0ccce..17eeaa2e 100644 --- a/nx/include/switch/svc.h +++ b/nx/include/switch/svc.h @@ -18,6 +18,17 @@ static inline void* armGetTls(void) { return ret; } +typedef struct { + u64 base_addr; + u64 size; + u32 memorytype; + u32 memoryattribute; + u32 perm; + u32 devicerefcount; + u32 ipcrefcount; + u32 padding; +} MemInfo; + typedef struct _regs_t { u64 X0; @@ -31,7 +42,7 @@ typedef struct _regs_t } __attribute__((packed)) regs_t; Result svcSetHeapSize(void** out_addr, u64 size); -Result svcQueryMemory(u32 *meminfo_ptr, u32 *pageinfo, u64 addr); +Result svcQueryMemory(MemInfo* meminfo_ptr, u32 *pageinfo, u64 addr); void svcExitProcess() __attribute__((noreturn)); Result svcSleepThread(u64 nano); Result svcCloseHandle(Handle handle); @@ -50,5 +61,9 @@ Result svcAttachDeviceAddressSpace(u64 device, Handle handle); Result svcDetachDeviceAddressSpace(u64 device, Handle handle); Result svcMapDeviceAddressSpaceAligned(Handle handle, Handle proc_handle, u64 dev_addr, u64 dev_size, u64 map_addr, u64 perm); Result svcUnmapDeviceAddressSpace(Handle handle, Handle proc_handle, u64 map_addr, u64 map_size, u64 perm); -u64 svcCallSecureMonitor(regs_t *regs); +Result svcDebugActiveProcess(Handle* debug, u32 processID); +Result svcContinueDebugEvent(Handle debug, u32 flags, u64 unk); +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); +u64 svcCallSecureMonitor(regs_t *regs); diff --git a/nx/source/kernel/svc.s b/nx/source/kernel/svc.s index 564765d4..a58fda8a 100644 --- a/nx/source/kernel/svc.s +++ b/nx/source/kernel/svc.s @@ -147,6 +147,32 @@ SVC_BEGIN svcUnmapDeviceAddressSpace ret SVC_END +SVC_BEGIN svcDebugActiveProcess + str x0, [sp, #-16]! + svc 0x60 + ldr x2, [sp], #16 + str w1, [x2] + ret +SVC_END + +SVC_BEGIN svcContinueDebugEvent + svc 0x64 + ret +SVC_END + +SVC_BEGIN svcQueryDebugProcessMemory + str x1, [sp, #-16]! + svc 0x69 + ldr x2, [sp], #16 + str w1, [x2] + ret +SVC_END + +SVC_BEGIN svcReadDebugProcessMemory + svc 0x6A + ret +SVC_END + SVC_BEGIN svcManageNamedPort str x0, [sp, #-16]! svc 0x71