diff options
author | red031000 <rubenru09@aol.com> | 2021-07-23 01:11:15 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-07-23 01:12:27 +0100 |
commit | 5bf13c7f48fe91c7902ce50250bc1a5a2398a2ae (patch) | |
tree | 2e91e60bdb7a9174b16d8ca1b532809d4ae2e5b6 /arm9/lib/src/OS_vramExclusive.c | |
parent | c2d91a2d997afd01fa4f40e1e16d5ee85557c9a8 (diff) |
separate out libs to libc, libnns and NitroSDK
Diffstat (limited to 'arm9/lib/src/OS_vramExclusive.c')
-rw-r--r-- | arm9/lib/src/OS_vramExclusive.c | 88 |
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); -} |