Define SVC functions as inlined functions
This commit is contained in:
parent
adcea034a5
commit
10410c93a1
@ -188,51 +188,366 @@ static inline u32* getThreadCommandBuffer(void)
|
|||||||
return (u32*)((u8*)getThreadLocalStorage() + 0x80);
|
return (u32*)((u8*)getThreadLocalStorage() + 0x80);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void __attribute__((noreturn)) svcExitProcess()
|
||||||
|
{
|
||||||
|
asm volatile("svc 0x03"
|
||||||
|
::: "lr");
|
||||||
|
__builtin_unreachable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void __attribute__((noreturn)) svcExitThread()
|
||||||
|
{
|
||||||
|
asm volatile("svc 0x09"
|
||||||
|
::: "lr");
|
||||||
|
__builtin_unreachable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void svcSleepThread(s64 ns)
|
||||||
|
{
|
||||||
|
register s64 r0 asm("r0") = ns;
|
||||||
|
|
||||||
|
asm volatile("svc 0x0A"
|
||||||
|
:: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcSetThreadPriority(Handle thread, s32 prio)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = thread;
|
||||||
|
register s32 r1 asm("r1") = prio;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x0C"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcReleaseMutex(Handle handle)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = handle;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x14"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcSignalEvent(Handle handle)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = handle;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x18"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcClearEvent(Handle handle)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = handle;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x19"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcSetTimer(Handle timer, s64 initial, s64 interval)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = timer;
|
||||||
|
register s64 r1 asm("r1") = initial;
|
||||||
|
register s64 r2 asm("r2") = interval;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x1B"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcCancelTimer(Handle timer)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = timer;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x1C"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcClearTimer(Handle timer)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = timer;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x1D"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcMapMemoryBlock(
|
||||||
|
Handle memblock, u32 addr, MemPerm my_perm, MemPerm other_perm)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = memblock;
|
||||||
|
register u32 r1 asm("r1") = addr;
|
||||||
|
register MemPerm r2 asm("r2") = my_perm;
|
||||||
|
register MemPerm r3 asm("r3") = other_perm;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x1F"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2), "r"(r3)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcUnmapMemoryBlock(Handle memblock, u32 addr)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = memblock;
|
||||||
|
register u32 r1 asm("r1") = addr;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x20"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcCreateAddressArbiter(Handle *arbiter)
|
||||||
|
{
|
||||||
|
register Handle *r0 asm("r0") = arbiter;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x21"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcCloseHandle(Handle handle)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = handle;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x23"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcWaitSynchronization(Handle handle, s64 nanoseconds)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = handle;
|
||||||
|
register s32 r1 asm("r1") = nanoseconds & 0xFFFFFFFF;
|
||||||
|
register s32 r2 asm("r2") = (nanoseconds >> 32) & 0xFFFFFFFF;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x24"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline u64 svcGetSystemTick()
|
||||||
|
{
|
||||||
|
register u32 r0 asm("r0");
|
||||||
|
register u32 r1 asm("r1");
|
||||||
|
|
||||||
|
asm volatile("svc 0x28"
|
||||||
|
: "=r"(r0), "=r"(r1)
|
||||||
|
:: "lr");
|
||||||
|
|
||||||
|
return r0 | ((u64)r1 << 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcSendSyncRequest(Handle session)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = session;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x32"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcOutputDebugString(const char* str, int length)
|
||||||
|
{
|
||||||
|
register const char *r0 asm("r0") = str;
|
||||||
|
register int r1 asm("r1") = length;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x3D"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcBreakDebugProcess(Handle debug)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = debug;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x61"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcTerminateDebugProcess(Handle debug)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = debug;
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x62"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcGetProcessDebugEvent(DebugEventInfo *info, Handle debug)
|
||||||
|
{
|
||||||
|
register DebugEventInfo *r0 asm("r0") = info;
|
||||||
|
register Handle r1 asm("r1") = debug;
|
||||||
|
register Result res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x63"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcContinueDebugEvent(Handle debug, u32 flags)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = debug;
|
||||||
|
register u32 r1 asm("r1") = flags;
|
||||||
|
register Result res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x64"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size)
|
||||||
|
{
|
||||||
|
register void* r0 asm("r0") = buffer;
|
||||||
|
register Handle r1 asm("r1") = debug;
|
||||||
|
register u32 r2 asm("r2") = addr;
|
||||||
|
register u32 r3 asm("r3") = size;
|
||||||
|
register Result res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x6A"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2), "r"(r3)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcMapProcessMemory(Handle process, u32 startAddr, u32 endAddr)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = process;
|
||||||
|
register u32 r1 asm("r1") = startAddr;
|
||||||
|
register u32 r2 asm("r2") = endAddr;
|
||||||
|
register Result res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x71"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Result svcUnmapProcessMemory(Handle process, u32 startAddr, u32 endAddr)
|
||||||
|
{
|
||||||
|
register Handle r0 asm("r0") = process;
|
||||||
|
register u32 r1 asm("r1") = startAddr;
|
||||||
|
register u32 r2 asm("r2") = endAddr;
|
||||||
|
register Result res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x72"
|
||||||
|
: "=r"(res)
|
||||||
|
: "r"(r0), "r"(r1), "r"(r2)
|
||||||
|
: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 svcGetProcessorID()
|
||||||
|
{
|
||||||
|
register s32 res asm("r0");
|
||||||
|
|
||||||
|
asm volatile("svc 0x11"
|
||||||
|
: "=r"(res)
|
||||||
|
:: "lr");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
s32 svcControlMemory(u32* addr_out, u32 addr0, u32 addr1, u32 size, MemOp op, MemPerm perm);
|
s32 svcControlMemory(u32* addr_out, u32 addr0, u32 addr1, u32 size, MemOp op, MemPerm perm);
|
||||||
s32 svcQueryMemory(MemInfo* info, PageInfo* out, u32 addr);
|
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);
|
s32 svcCreateThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stack_top, s32 thread_priority, s32 processor_id);
|
||||||
void __attribute__((noreturn)) svcExitThread();
|
|
||||||
void svcSleepThread(s64 ns);
|
|
||||||
s32 svcSetThreadPriority(Handle thread, s32 prio);
|
s32 svcSetThreadPriority(Handle thread, s32 prio);
|
||||||
s32 svcCreateMutex(Handle* mutex, bool initially_locked);
|
s32 svcCreateMutex(Handle* mutex, bool initially_locked);
|
||||||
s32 svcReleaseMutex(Handle handle);
|
|
||||||
s32 svcCreateSemaphore(Handle* semaphore, s32 initial_count, s32 max_count);
|
s32 svcCreateSemaphore(Handle* semaphore, s32 initial_count, s32 max_count);
|
||||||
s32 svcReleaseSemaphore(s32* count, Handle semaphore, s32 release_count);
|
s32 svcReleaseSemaphore(s32* count, Handle semaphore, s32 release_count);
|
||||||
s32 svcCreateEvent(Handle* event, u8 reset_type);
|
s32 svcCreateEvent(Handle* event, u8 reset_type);
|
||||||
s32 svcSignalEvent(Handle handle);
|
|
||||||
s32 svcClearEvent(Handle handle);
|
|
||||||
s32 svcCreateTimer(Handle* timer, u8 reset_type);
|
s32 svcCreateTimer(Handle* timer, u8 reset_type);
|
||||||
s32 svcSetTimer(Handle timer, s64 initial, s64 interval);
|
|
||||||
s32 svcCancelTimer(Handle timer);
|
|
||||||
s32 svcClearTimer(Handle timer);
|
|
||||||
s32 svcCreateMemoryBlock(Handle* memblock, u32 addr, u32 size, MemPerm my_perm, MemPerm other_perm);
|
s32 svcCreateMemoryBlock(Handle* memblock, u32 addr, u32 size, MemPerm my_perm, MemPerm other_perm);
|
||||||
s32 svcMapMemoryBlock(Handle memblock, u32 addr, MemPerm my_perm, MemPerm other_perm);
|
|
||||||
s32 svcUnmapMemoryBlock(Handle memblock, u32 addr);
|
|
||||||
s32 svcCreateAddressArbiter(Handle *arbiter);
|
|
||||||
s32 svcArbitrateAddress(Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds);
|
s32 svcArbitrateAddress(Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds);
|
||||||
s32 svcWaitSynchronization(Handle handle, s64 nanoseconds);
|
|
||||||
s32 svcWaitSynchronizationN(s32* out, Handle* handles, s32 handles_num, bool wait_all, s64 nanoseconds);
|
s32 svcWaitSynchronizationN(s32* out, Handle* handles, s32 handles_num, bool wait_all, s64 nanoseconds);
|
||||||
s32 svcCloseHandle(Handle handle);
|
|
||||||
s32 svcDuplicateHandle(Handle* out, Handle original);
|
s32 svcDuplicateHandle(Handle* out, Handle original);
|
||||||
u64 svcGetSystemTick();
|
|
||||||
s32 svcGetSystemInfo(s64* out, u32 type, s32 param);
|
s32 svcGetSystemInfo(s64* out, u32 type, s32 param);
|
||||||
s32 svcGetProcessInfo(s64* out, Handle process, u32 type);
|
s32 svcGetProcessInfo(s64* out, Handle process, u32 type);
|
||||||
s32 svcConnectToPort(volatile Handle* out, const char* portName);
|
s32 svcConnectToPort(volatile Handle* out, const char* portName);
|
||||||
s32 svcSendSyncRequest(Handle session);
|
|
||||||
Result svcOpenProcess(Handle* process, u32 processId);
|
Result svcOpenProcess(Handle* process, u32 processId);
|
||||||
s32 svcGetProcessId(u32 *out, Handle handle);
|
s32 svcGetProcessId(u32 *out, Handle handle);
|
||||||
s32 svcGetThreadId(u32 *out, Handle handle);
|
s32 svcGetThreadId(u32 *out, Handle handle);
|
||||||
s32 svcOutputDebugString(const char* str, int length);
|
|
||||||
Result svcCreatePort(Handle* portServer, Handle* portClient, const char* name, s32 maxSessions);
|
Result svcCreatePort(Handle* portServer, Handle* portClient, const char* name, s32 maxSessions);
|
||||||
Result svcDebugActiveProcess(Handle* debug, u32 processId);
|
Result svcDebugActiveProcess(Handle* debug, u32 processId);
|
||||||
Result svcBreakDebugProcess(Handle debug);
|
|
||||||
Result svcTerminateDebugProcess(Handle debug);
|
|
||||||
Result svcGetProcessDebugEvent(DebugEventInfo *info, Handle debug);
|
|
||||||
Result svcContinueDebugEvent(Handle debug, u32 flags);
|
|
||||||
Result svcGetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount);
|
Result svcGetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount);
|
||||||
Result svcReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size);
|
|
||||||
Result svcMapProcessMemory(Handle process, u32 startAddr, u32 endAddr);
|
|
||||||
Result svcUnmapProcessMemory(Handle process, u32 startAddr, u32 endAddr);
|
|
||||||
Result svcQueryProcessMemory(MemInfo* info, PageInfo* out, Handle process, u32 addr);
|
Result svcQueryProcessMemory(MemInfo* info, PageInfo* out, Handle process, u32 addr);
|
||||||
s32 svcGetProcessorID();
|
|
||||||
|
@ -29,12 +29,6 @@ svcQueryMemory:
|
|||||||
pop {r4-r6}
|
pop {r4-r6}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcExitProcess
|
|
||||||
.type svcExitProcess, %function
|
|
||||||
svcExitProcess:
|
|
||||||
svc 0x03
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateThread
|
.global svcCreateThread
|
||||||
.type svcCreateThread, %function
|
.type svcCreateThread, %function
|
||||||
svcCreateThread:
|
svcCreateThread:
|
||||||
@ -47,24 +41,6 @@ svcCreateThread:
|
|||||||
ldr r4, [sp], #4
|
ldr r4, [sp], #4
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcExitThread
|
|
||||||
.type svcExitThread, %function
|
|
||||||
svcExitThread:
|
|
||||||
svc 0x09
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcSleepThread
|
|
||||||
.type svcSleepThread, %function
|
|
||||||
svcSleepThread:
|
|
||||||
svc 0x0A
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcSetThreadPriority
|
|
||||||
.type svcSetThreadPriority, %function
|
|
||||||
svcSetThreadPriority:
|
|
||||||
svc 0x0C
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateMutex
|
.global svcCreateMutex
|
||||||
.type svcCreateMutex, %function
|
.type svcCreateMutex, %function
|
||||||
svcCreateMutex:
|
svcCreateMutex:
|
||||||
@ -74,12 +50,6 @@ svcCreateMutex:
|
|||||||
str r1, [r3]
|
str r1, [r3]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcReleaseMutex
|
|
||||||
.type svcReleaseMutex, %function
|
|
||||||
svcReleaseMutex:
|
|
||||||
svc 0x14
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateEvent
|
.global svcCreateEvent
|
||||||
.type svcCreateEvent, %function
|
.type svcCreateEvent, %function
|
||||||
svcCreateEvent:
|
svcCreateEvent:
|
||||||
@ -89,18 +59,6 @@ svcCreateEvent:
|
|||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcSignalEvent
|
|
||||||
.type svcSignalEvent, %function
|
|
||||||
svcSignalEvent:
|
|
||||||
svc 0x18
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcClearEvent
|
|
||||||
.type svcClearEvent, %function
|
|
||||||
svcClearEvent:
|
|
||||||
svc 0x19
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateTimer
|
.global svcCreateTimer
|
||||||
.type svcCreateTimer, %function
|
.type svcCreateTimer, %function
|
||||||
svcCreateTimer:
|
svcCreateTimer:
|
||||||
@ -110,24 +68,6 @@ svcCreateTimer:
|
|||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcSetTimer
|
|
||||||
.type svcSetTimer, %function
|
|
||||||
svcSetTimer:
|
|
||||||
svc 0x1B
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCancelTimer
|
|
||||||
.type svcCancelTimer, %function
|
|
||||||
svcCancelTimer:
|
|
||||||
svc 0x1C
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcClearTimer
|
|
||||||
.type svcClearTimer, %function
|
|
||||||
svcClearTimer:
|
|
||||||
svc 0x1D
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateMemoryBlock
|
.global svcCreateMemoryBlock
|
||||||
.type svcCreateMemoryBlock, %function
|
.type svcCreateMemoryBlock, %function
|
||||||
svcCreateMemoryBlock:
|
svcCreateMemoryBlock:
|
||||||
@ -138,24 +78,6 @@ svcCreateMemoryBlock:
|
|||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcMapMemoryBlock
|
|
||||||
.type svcMapMemoryBlock, %function
|
|
||||||
svcMapMemoryBlock:
|
|
||||||
svc 0x1F
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcUnmapMemoryBlock
|
|
||||||
.type svcUnmapMemoryBlock, %function
|
|
||||||
svcUnmapMemoryBlock:
|
|
||||||
svc 0x20
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateAddressArbiter
|
|
||||||
.type svcCreateAddressArbiter, %function
|
|
||||||
svcCreateAddressArbiter:
|
|
||||||
svc 0x21
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcArbitrateAddress
|
.global svcArbitrateAddress
|
||||||
.type svcArbitrateAddress, %function
|
.type svcArbitrateAddress, %function
|
||||||
svcArbitrateAddress:
|
svcArbitrateAddress:
|
||||||
@ -168,18 +90,6 @@ svcArbitrateAddress:
|
|||||||
pop {r4, r5}
|
pop {r4, r5}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcCloseHandle
|
|
||||||
.type svcCloseHandle, %function
|
|
||||||
svcCloseHandle:
|
|
||||||
svc 0x23
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcWaitSynchronization
|
|
||||||
.type svcWaitSynchronization, %function
|
|
||||||
svcWaitSynchronization:
|
|
||||||
svc 0x24
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcWaitSynchronizationN
|
.global svcWaitSynchronizationN
|
||||||
.type svcWaitSynchronizationN, %function
|
.type svcWaitSynchronizationN, %function
|
||||||
svcWaitSynchronizationN:
|
svcWaitSynchronizationN:
|
||||||
@ -203,12 +113,6 @@ svcDuplicateHandle:
|
|||||||
str r1, [r3]
|
str r1, [r3]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcGetSystemTick
|
|
||||||
.type svcGetSystemTick, %function
|
|
||||||
svcGetSystemTick:
|
|
||||||
svc 0x28
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcGetSystemInfo
|
.global svcGetSystemInfo
|
||||||
.type svcGetSystemInfo, %function
|
.type svcGetSystemInfo, %function
|
||||||
svcGetSystemInfo:
|
svcGetSystemInfo:
|
||||||
@ -241,12 +145,6 @@ svcConnectToPort:
|
|||||||
str r1, [r3]
|
str r1, [r3]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcSendSyncRequest
|
|
||||||
.type svcSendSyncRequest, %function
|
|
||||||
svcSendSyncRequest:
|
|
||||||
svc 0x32
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcOpenProcess
|
.global svcOpenProcess
|
||||||
.type svcOpenProcess, %function
|
.type svcOpenProcess, %function
|
||||||
svcOpenProcess:
|
svcOpenProcess:
|
||||||
@ -265,12 +163,6 @@ svcGetProcessId:
|
|||||||
str r1, [r3]
|
str r1, [r3]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcOutputDebugString
|
|
||||||
.type svcOutputDebugString, %function
|
|
||||||
svcOutputDebugString:
|
|
||||||
svc 0x3D
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcCreateSemaphore
|
.global svcCreateSemaphore
|
||||||
.type svcCreateSemaphore, %function
|
.type svcCreateSemaphore, %function
|
||||||
svcCreateSemaphore:
|
svcCreateSemaphore:
|
||||||
@ -319,30 +211,6 @@ svcDebugActiveProcess:
|
|||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcBreakDebugProcess
|
|
||||||
.type svcBreakDebugProcess, %function
|
|
||||||
svcBreakDebugProcess:
|
|
||||||
svc 0x61
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcTerminateDebugProcess
|
|
||||||
.type svcTerminateDebugProcess, %function
|
|
||||||
svcTerminateDebugProcess:
|
|
||||||
svc 0x62
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcGetProcessDebugEvent
|
|
||||||
.type svcGetProcessDebugEvent, %function
|
|
||||||
svcGetProcessDebugEvent:
|
|
||||||
svc 0x63
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcContinueDebugEvent
|
|
||||||
.type svcContinueDebugEvent, %function
|
|
||||||
svcContinueDebugEvent:
|
|
||||||
svc 0x64
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcGetProcessList
|
.global svcGetProcessList
|
||||||
.type svcGetProcessList, %function
|
.type svcGetProcessList, %function
|
||||||
svcGetProcessList:
|
svcGetProcessList:
|
||||||
@ -355,24 +223,6 @@ svcGetProcessList:
|
|||||||
add sp, sp, #8
|
add sp, sp, #8
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcReadProcessMemory
|
|
||||||
.type svcReadProcessMemory, %function
|
|
||||||
svcReadProcessMemory:
|
|
||||||
svc 0x6A
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcMapProcessMemory
|
|
||||||
.type svcMapProcessMemory, %function
|
|
||||||
svcMapProcessMemory:
|
|
||||||
svc 0x71
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcUnmapProcessMemory
|
|
||||||
.type svcUnmapProcessMemory, %function
|
|
||||||
svcUnmapProcessMemory:
|
|
||||||
svc 0x72
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.global svcQueryProcessMemory
|
.global svcQueryProcessMemory
|
||||||
.type svcQueryProcessMemory, %function
|
.type svcQueryProcessMemory, %function
|
||||||
svcQueryProcessMemory:
|
svcQueryProcessMemory:
|
||||||
@ -385,9 +235,3 @@ svcQueryProcessMemory:
|
|||||||
add sp, sp, #8
|
add sp, sp, #8
|
||||||
pop {r4-r6}
|
pop {r4-r6}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global svcGetProcessorID
|
|
||||||
.type svcGetProcessorID, %function
|
|
||||||
svcGetProcessorID:
|
|
||||||
svc 0x11
|
|
||||||
bx lr
|
|
||||||
|
Loading…
Reference in New Issue
Block a user