From b4d6f1314b3b322afabe85d848e09a36d4e7a47a Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 21 May 2020 20:23:26 +0100 Subject: OS_InitLock --- arm9/lib/include/OS_spinLock.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index 3bb8a1c2..7711b423 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -5,12 +5,21 @@ #ifndef POKEDIAMOND_OS_SPINLOCK_H #define POKEDIAMOND_OS_SPINLOCK_H +#include "types.h" +#include "syscall.h" + typedef volatile struct OSLockWord { u32 lockFlag; u16 ownerID; u16 extension; } OSLockWord; +static inline void OSi_WaitByLoop() +{ + SVC_WaitByLoop(0x1000 / 4); +} + +void OS_InitLock(); s32 OS_GetLockID(void); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3 From 3c62c1ee513696153e6c554c0d97557b56a4c997 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 21 May 2020 23:30:24 +0100 Subject: OSi_DoLockByWord --- arm9/lib/include/OS_spinLock.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index 7711b423..208cb677 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -20,6 +20,8 @@ static inline void OSi_WaitByLoop() } void OS_InitLock(); +s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFiq); s32 OS_GetLockID(void); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3 From 4516f9c24789221cb1a065d054520884f35c5a3d Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 22 May 2020 16:59:05 +0100 Subject: OSi_DoUnlockByWord and OS_TryLockByWord --- arm9/lib/include/OS_spinLock.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index 208cb677..c6e0e1fd 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -22,6 +22,9 @@ static inline void OSi_WaitByLoop() void OS_InitLock(); s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); +s32 OS_TryLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void)); +s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFIQ); s32 OS_GetLockID(void); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3 From 1a45d65f162615b48fd56d60af37ed5483aa9bba Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 22 May 2020 19:04:33 +0100 Subject: OSi_DoTryLockByWord and OS_UnlockByWord --- arm9/lib/include/OS_spinLock.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index c6e0e1fd..520b7b2f 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -25,6 +25,9 @@ s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), s32 OS_TryLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void)); s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ); +s32 OS_UnlockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void)); +s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFiq); s32 OS_GetLockID(void); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3 From d5bff2f511cd2657e62c0ba3fec0e6efd044bd08 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 22 May 2020 20:30:37 +0100 Subject: bunch of small cartridge funcs --- arm9/lib/include/OS_spinLock.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index 520b7b2f..eb94a010 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -28,6 +28,11 @@ s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), s32 OS_UnlockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void)); s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); +s32 OS_LockCartridge(u16 lockID); +s32 OS_UnlockCartridge(u16 lockID); +s32 OS_TryLockCartridge(u16 lockID); +void OSi_AllocateCartridgeBus(); +void OSi_FreeCartridgeBus(); s32 OS_GetLockID(void); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3 From 565fa0f53aaa22e30d5566e7c8bed1ac912f78ba Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 22 May 2020 23:56:59 +0100 Subject: finish OS_spinLock --- arm9/lib/include/OS_spinLock.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'arm9/lib/include/OS_spinLock.h') diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index eb94a010..eccc502b 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -14,12 +14,12 @@ typedef volatile struct OSLockWord { u16 extension; } OSLockWord; -static inline void OSi_WaitByLoop() +static inline void OSi_WaitByLoop(void) { SVC_WaitByLoop(0x1000 / 4); } -void OS_InitLock(); +void OS_InitLock(void); s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); s32 OS_TryLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void)); @@ -31,8 +31,15 @@ s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), s32 OS_LockCartridge(u16 lockID); s32 OS_UnlockCartridge(u16 lockID); s32 OS_TryLockCartridge(u16 lockID); -void OSi_AllocateCartridgeBus(); -void OSi_FreeCartridgeBus(); +void OSi_AllocateCartridgeBus(void); +void OSi_FreeCartridgeBus(void); +s32 OS_TryLockCard(u16 lockID); +s32 OS_UnlockCard(u16 lockID); +void OSi_AllocateCardBus(void); +void OSi_FreeCardBus(void); +u16 OS_ReadOwnerOfLockWord(OSLockWord * lock); +s32 OS_UnLockCartridge(u16 lockID); s32 OS_GetLockID(void); +void OS_ReleaseLockID(register u16 lockID); #endif //POKEDIAMOND_OS_SPINLOCK_H -- cgit v1.2.3