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/src/OS_spinLock.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'arm9/lib/src/OS_spinLock.c') diff --git a/arm9/lib/src/OS_spinLock.c b/arm9/lib/src/OS_spinLock.c index aac5b295..9cda667f 100644 --- a/arm9/lib/src/OS_spinLock.c +++ b/arm9/lib/src/OS_spinLock.c @@ -9,8 +9,6 @@ #include "MI_exMemory.h" extern void MIi_CpuClear32(u32 param1, void * addr, u32 length); //not too sure about names -extern s32 OSi_DoTryLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), - BOOL disableFiq); extern u32 MI_SwapWord(u32 data, volatile u32* destp); ARM_FUNC void OS_InitLock() @@ -121,3 +119,28 @@ ARM_FUNC s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp return lastLockFlag; } + +ARM_FUNC s32 OS_LockCartridge(u16 lockID) +{ + return OSi_DoLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); +} + +ARM_FUNC s32 OS_UnlockCartridge(u16 lockID) +{ + return OSi_DoUnlockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE); +} + +ARM_FUNC s32 OS_TryLockCartridge(u16 lockID) +{ + return OSi_DoTryLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); +} + +ARM_FUNC void OSi_AllocateCartridgeBus() +{ + MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); +} + +ARM_FUNC void OSi_FreeCartridgeBus() +{ + MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); +} -- cgit v1.2.3