From 5bf13c7f48fe91c7902ce50250bc1a5a2398a2ae Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 23 Jul 2021 01:11:15 +0100 Subject: separate out libs to libc, libnns and NitroSDK --- arm9/lib/src/OS_vramExclusive.c | 88 ----------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 arm9/lib/src/OS_vramExclusive.c (limited to 'arm9/lib/src/OS_vramExclusive.c') 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); -} -- cgit v1.2.3