summaryrefslogtreecommitdiff
path: root/arm9/lib/src/OS_vramExclusive.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/src/OS_vramExclusive.c')
-rw-r--r--arm9/lib/src/OS_vramExclusive.c88
1 files changed, 0 insertions, 88 deletions
diff --git a/arm9/lib/src/OS_vramExclusive.c b/arm9/lib/src/OS_vramExclusive.c
deleted file mode 100644
index 5ce10f4a..00000000
--- a/arm9/lib/src/OS_vramExclusive.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "OS_vramExclusive.h"
-#include "function_target.h"
-#include "OS_system.h"
-
-static u32 OSi_vramExclusive;
-static u16 OSi_vramLockId[9];
-
-static u32 OsCountZeroBits(register u32 bitmap);
-
-ARM_FUNC static asm u32 OsCountZeroBits(register u32 bitmap)
-{
- clz r0, r0
- bx lr
-}
-
-ARM_FUNC void OSi_InitVramExclusive(void)
-{
- OSi_vramExclusive = 0x0000;
-
- for (s32 i = 0; i < 9; i++)
- {
- OSi_vramLockId[i] = 0;
- }
-}
-
-ARM_FUNC BOOL OSi_TryLockVram(u16 bank, u16 lockId)
-{
- u32 workMap;
- s32 zeroBits;
- OSIntrMode enabled = OS_DisableInterrupts();
-
- workMap = (u32)(bank & OSi_vramExclusive);
- while (TRUE)
- {
- zeroBits = (s32)(31 - OsCountZeroBits(workMap));
- if (zeroBits < 0)
- {
- break;
- }
- workMap &= ~(0x00000001 << zeroBits);
- if (OSi_vramLockId[zeroBits] != lockId)
- {
- (void)OS_RestoreInterrupts(enabled);
- return FALSE;
- }
- }
-
- workMap = (u32)(bank & 0x01ff);
- while (TRUE)
- {
- zeroBits = (s32)(31 - OsCountZeroBits(workMap));
- if (zeroBits < 0)
- {
- break;
- }
- workMap &= ~(0x00000001 << zeroBits);
- OSi_vramLockId[zeroBits] = lockId;
- OSi_vramExclusive |= (0x00000001 << zeroBits);
- }
-
- (void)OS_RestoreInterrupts(enabled);
- return TRUE;
-}
-
-ARM_FUNC void OSi_UnlockVram(u16 bank, u16 lockId)
-{
- u32 workMap;
- s32 zeroBits;
- OSIntrMode enabled = OS_DisableInterrupts();
-
- workMap = (u32)(bank & OSi_vramExclusive & 0x01ff);
- while (TRUE)
- {
- zeroBits = (s32)(31- OsCountZeroBits((u32)workMap));
- if (zeroBits < 0)
- {
- break;
- }
- workMap &= ~(0x00000001 << zeroBits);
- if (OSi_vramLockId[zeroBits] == lockId)
- {
- OSi_vramLockId[zeroBits] = 0;
- OSi_vramExclusive &= ~(0x00000001 << zeroBits);
- }
- }
-
- (void)OS_RestoreInterrupts(enabled);
-}