From 950ae0b2a41603c262e4079b2478f1d0932132f4 Mon Sep 17 00:00:00 2001 From: plutoo Date: Mon, 27 Oct 2014 00:07:07 +0100 Subject: [PATCH] Added svcQueryMemory --- libctru/include/3ds/svc.h | 13 +++++++++++++ libctru/source/svc.s | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/libctru/include/3ds/svc.h b/libctru/include/3ds/svc.h index 402194d..ab1d1c3 100644 --- a/libctru/include/3ds/svc.h +++ b/libctru/include/3ds/svc.h @@ -23,9 +23,22 @@ typedef enum { MEMPERM_MAX =0xFFFFFFFF //force 4-byte } MemPerm; +typedef struct { + u32 base_addr; + u32 size; + u32 perm; + u32 state; +} MemInfo; + +typedef struct { + u32 flags; +} PageInfo; + + u32* getThreadCommandBuffer(void); s32 svcControlMemory(u32* addr_out, u32 addr0, u32 addr1, u32 size, MemOp op, MemPerm perm); +s32 svcQueryMemory(MemInfo* info, PageInfo* out, u32 addr); void __attribute__((noreturn)) svcExitProcess(); s32 svcCreateThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stack_top, s32 thread_priority, s32 processor_id); void __attribute__((noreturn)) svcExitThread(); diff --git a/libctru/source/svc.s b/libctru/source/svc.s index 1969ddc..2d777ad 100644 --- a/libctru/source/svc.s +++ b/libctru/source/svc.s @@ -22,6 +22,22 @@ svcControlMemory: ldr r4, [sp], #4 bx lr +.global svcQueryMemory +.type svcQueryMemory, %function +svcQueryMemory: + stmfd sp!, {r0,r1,r4-r6} + svc 2 + ldr r6, [sp] + str r1, [r6] + str r2, [r6,#4] + str r3, [r6,#8] + str r4, [r6,#0xc] + ldr r6, [sp,#4] + str r5, [r6] + add sp, sp, #8 + ldmfd sp!, {r4-r6} + bx lr + .global svcExitProcess .type svcExitProcess, %function svcExitProcess: