Added MemInfo struct, based on the libctru one. Added some debug svcs.

This commit is contained in:
yellows8 2017-09-18 14:41:53 -04:00
parent 4fd0989bf3
commit b52787a4fa
2 changed files with 43 additions and 2 deletions

View File

@ -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);

View File

@ -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