Added svc's.

This commit is contained in:
plutoo 2014-08-11 19:38:48 +02:00
parent a1741254cf
commit 470be6d4ba
2 changed files with 17 additions and 2 deletions

View File

@ -15,7 +15,6 @@ typedef enum{
}MEMORY_OPERATION; }MEMORY_OPERATION;
u32* getThreadCommandBuffer(void); u32* getThreadCommandBuffer(void);
Result svc_controlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions); //(outaddr is usually the same as the input addr0) Result svc_controlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions); //(outaddr is usually the same as the input addr0)
void svc_exitProcess(void); void svc_exitProcess(void);
Result svc_createThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stacktop, s32 threadpriority, s32 processorid); Result svc_createThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stacktop, s32 threadpriority, s32 processorid);
@ -23,6 +22,7 @@ typedef enum{
void svc_sleepThread(s64 ns); void svc_sleepThread(s64 ns);
Result svc_createMutex(Handle* mutex, bool initialLocked); Result svc_createMutex(Handle* mutex, bool initialLocked);
Result svc_releaseMutex(Handle handle); Result svc_releaseMutex(Handle handle);
Result svc_releaseSemaphore(s32* count, Handle semaphore, s32 releaseCount);
Result svc_createEvent(Handle* event, u8 resettype); Result svc_createEvent(Handle* event, u8 resettype);
Result svc_signalEvent(Handle handle); Result svc_signalEvent(Handle handle);
Result svc_clearEvent(Handle handle); Result svc_clearEvent(Handle handle);
@ -31,10 +31,10 @@ typedef enum{
Result svc_unmapMemoryBlock(Handle memblock, u32 addr); Result svc_unmapMemoryBlock(Handle memblock, u32 addr);
Result svc_waitSynchronization1(Handle handle, s64 nanoseconds); Result svc_waitSynchronization1(Handle handle, s64 nanoseconds);
Result svc_waitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds); Result svc_waitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds);
Result svc_arbitrateAddress(Handle arbiter, u32 addr, u8 type, s32 value, s64 nanoseconds);
Result svc_closeHandle(Handle handle); Result svc_closeHandle(Handle handle);
u64 svc_getSystemTick(); u64 svc_getSystemTick();
Result svc_getSystemInfo(s64* out, u32 type, s32 param); Result svc_getSystemInfo(s64* out, u32 type, s32 param);
Result svc_getProcessInfo(s64* out, Handle process, u32 type);
Result svc_connectToPort(volatile Handle* out, const char* portName); Result svc_connectToPort(volatile Handle* out, const char* portName);
Result svc_sendSyncRequest(Handle session); Result svc_sendSyncRequest(Handle session);
Result svc_getProcessId(u32 *out, Handle handle); Result svc_getProcessId(u32 *out, Handle handle);

View File

@ -67,6 +67,15 @@ svc_releaseMutex:
svc 0x14 svc 0x14
bx lr bx lr
.global svc_releaseSemaphore
.type svc_releaseSemaphore, %function
svc_releaseSemaphore:
str r0, [sp,#-4]!
svc 0x16
ldr r2, [sp], #4
str r1, [r2]
bx lr
.global svc_createEvent .global svc_createEvent
.type svc_createEvent, %function .type svc_createEvent, %function
svc_createEvent: svc_createEvent:
@ -110,6 +119,12 @@ svc_unmapMemoryBlock:
svc 0x20 svc 0x20
bx lr bx lr
.global svc_arbitrateAddress
.type svc_arbitrateAddress, %function
svc_arbitrateAddress:
svc 0x22
bx lr
.global svc_closeHandle .global svc_closeHandle
.type svc_closeHandle, %function .type svc_closeHandle, %function
svc_closeHandle: svc_closeHandle: