Added svcCreateAddressArbiter() and svcArbitrateAddress()

This commit is contained in:
mtheall 2014-11-20 15:33:21 -06:00
parent 9d1181ef50
commit 919917b7ed
2 changed files with 28 additions and 0 deletions

View File

@ -34,6 +34,14 @@ typedef struct {
u32 flags;
} PageInfo;
typedef enum {
ARBITER_FREE =0,
ARBITER_ACQUIRE =1,
ARBITER_KERNEL2 =2,
ARBITER_ACQUIRE_TIMEOUT=3,
ARBITER_KERNEL4 =4,
} ArbitrationType;
u32* getThreadCommandBuffer(void);
@ -55,6 +63,8 @@ s32 svcClearTimer(Handle timer);
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 svcWaitSynchronization(Handle handle, s64 nanoseconds);
s32 svcWaitSynchronizationN(s32* out, Handle* handles, s32 handles_num, bool wait_all, s64 nanoseconds);
s32 svcCloseHandle(Handle handle);

View File

@ -153,6 +153,24 @@ svcUnmapMemoryBlock:
svc 0x20
bx lr
.global svcCreateAddressArbiter
.type svcCreateAddressArbiter, %function
svcCreateAddressArbiter:
svc 0x21
bx lr
.global svcArbitrateAddress
.type svcArbitrateAddress, %function
svcArbitrateAddress:
push {r4,r5}
add sp, #8
ldr r5, [sp]
ldr r4, [sp, #4]
sub sp, #8
svc 0x22
pop {r4,r5}
bx lr
.global svcCloseHandle
.type svcCloseHandle, %function
svcCloseHandle: