diff options
author | red031000 <rubenru09@aol.com> | 2020-05-22 20:30:37 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-05-22 20:30:37 +0100 |
commit | d5bff2f511cd2657e62c0ba3fec0e6efd044bd08 (patch) | |
tree | 3fbfc8ea8ffe30f419f65aa16f84ff209a7ed5d7 /arm9 | |
parent | 1a45d65f162615b48fd56d60af37ed5483aa9bba (diff) |
bunch of small cartridge funcs
Diffstat (limited to 'arm9')
-rw-r--r-- | arm9/asm/CTRDG.s | 6 | ||||
-rw-r--r-- | arm9/asm/CTRDG_backup.s | 2 | ||||
-rw-r--r-- | arm9/asm/CTRDG_flash_AT29LV512.s | 6 | ||||
-rw-r--r-- | arm9/asm/CTRDG_flash_LE39FW512.s | 8 | ||||
-rw-r--r-- | arm9/asm/CTRDG_flash_MX29L010.s | 6 | ||||
-rw-r--r-- | arm9/asm/CTRDG_flash_MX29L512.s | 2 | ||||
-rw-r--r-- | arm9/asm/CTRDG_flash_common.s | 4 | ||||
-rw-r--r-- | arm9/asm/OS_spinLock_asm.s | 64 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/lib/include/OS_spinLock.h | 5 | ||||
-rw-r--r-- | arm9/lib/include/mmap.h | 1 | ||||
-rw-r--r-- | arm9/lib/src/OS_spinLock.c | 27 |
12 files changed, 53 insertions, 80 deletions
diff --git a/arm9/asm/CTRDG.s b/arm9/asm/CTRDG.s index 8a1b57d9..4c3fd3be 100644 --- a/arm9/asm/CTRDG.s +++ b/arm9/asm/CTRDG.s @@ -128,7 +128,7 @@ _020DB290: _020DB294: ldr r0, _020DB2BC ; =UNK_021D6944 ldrh r0, [r0, #0x2] - bl OS_UnlockCartridge + bl OS_UnLockCartridge bl CTRDG_IsExisting _020DB2A4: ; 0x020DB2A4 cmp r0, #0x0 @@ -241,7 +241,7 @@ _020DB3F0: _020DB404: ldr r0, _020DB42C ; =UNK_021D6944 ldrh r0, [r0, #0x2] - bl OS_UnlockCartridge + bl OS_UnLockCartridge bl CTRDG_IsExisting _020DB414: ; 0x020DB414 cmp r0, #0x0 @@ -355,7 +355,7 @@ CTRDGi_UnlockByProcessor: ; 0x020DB568 ldr r1, [r4, #0x0] cmp r1, #0x0 bne _020DB580 - bl OS_UnlockCartridge + bl OS_UnLockCartridge _020DB580: ldr r0, [r4, #0x4] bl OS_RestoreInterrupts diff --git a/arm9/asm/CTRDG_backup.s b/arm9/asm/CTRDG_backup.s index 946a8cd6..03ed704a 100644 --- a/arm9/asm/CTRDG_backup.s +++ b/arm9/asm/CTRDG_backup.s @@ -54,7 +54,7 @@ CTRDG_IdentifyAgbBackup: ; 0x020DBD50 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] ldreq r5, _020DBEEC ; =UNK_02103FE8 - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge ldr r2, [r5, #0x0] mov r0, #0x1 ldrh r1, [r2, #0x38] diff --git a/arm9/asm/CTRDG_flash_AT29LV512.s b/arm9/asm/CTRDG_flash_AT29LV512.s index 1efaaf03..02585b07 100644 --- a/arm9/asm/CTRDG_flash_AT29LV512.s +++ b/arm9/asm/CTRDG_flash_AT29LV512.s @@ -287,7 +287,7 @@ _020DC92C: orr r0, r0, r5 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x24 ldmia sp!, {r4-r5,lr} @@ -428,7 +428,7 @@ _020DCB18: ldr r0, _020DCB84 ; =UNK_021D6B0C strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r5 add sp, sp, #0x24 ldmia sp!, {r4-r5,lr} @@ -495,7 +495,7 @@ CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 orr r0, r0, r5 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s index cb702648..77071a6d 100644 --- a/arm9/asm/CTRDG_flash_LE39FW512.s +++ b/arm9/asm/CTRDG_flash_LE39FW512.s @@ -122,7 +122,7 @@ CTRDGi_VerifyFlashErase: ; 0x020DCD94 orr r1, r1, r6 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 ldmia sp!, {r4-r6,lr} bx lr @@ -267,7 +267,7 @@ _020DCFD4: orr r1, r1, r5 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r8 add sp, sp, #0x24 ldmia sp!, {r4-r9,lr} @@ -379,7 +379,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 orr r0, r0, r5 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x28 ldmia sp!, {r4-r6,lr} @@ -447,7 +447,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC orr r0, r0, r5 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s index 1b566288..646121f3 100644 --- a/arm9/asm/CTRDG_flash_MX29L010.s +++ b/arm9/asm/CTRDG_flash_MX29L010.s @@ -183,7 +183,7 @@ _020DD4FC: orr r1, r1, r7 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r6 add sp, sp, #0x28 ldmia sp!, {r4-r8,lr} @@ -323,7 +323,7 @@ _020DD714: orr r0, r3, r0 strh r0, [r2, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge ldr r0, [sp, #0x4] add sp, sp, #0x34 ldmia sp!, {r4-r11,lr} @@ -391,7 +391,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C orr r0, r0, r5 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} diff --git a/arm9/asm/CTRDG_flash_MX29L512.s b/arm9/asm/CTRDG_flash_MX29L512.s index 38b1f5bf..f075c9f0 100644 --- a/arm9/asm/CTRDG_flash_MX29L512.s +++ b/arm9/asm/CTRDG_flash_MX29L512.s @@ -109,7 +109,7 @@ _020DD9B8: orr r1, r1, r7 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r6 add sp, sp, #0x28 ldmia sp!, {r4-r8,lr} diff --git a/arm9/asm/CTRDG_flash_common.s b/arm9/asm/CTRDG_flash_common.s index 80aff25a..8f1c400c 100644 --- a/arm9/asm/CTRDG_flash_common.s +++ b/arm9/asm/CTRDG_flash_common.s @@ -164,7 +164,7 @@ _020DC0D4: orr r0, r0, r7 strh r0, [r3, #0x0] ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, r4 add sp, sp, #0x24 ldmia sp!, {r4-r7,lr} @@ -253,7 +253,7 @@ _020DC22C: orr r1, r1, r8 strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge2 + bl OS_UnlockCartridge mov r0, #0x0 add sp, sp, #0x28 ldmia sp!, {r4-r8,lr} diff --git a/arm9/asm/OS_spinLock_asm.s b/arm9/asm/OS_spinLock_asm.s index 653c8380..783123fe 100644 --- a/arm9/asm/OS_spinLock_asm.s +++ b/arm9/asm/OS_spinLock_asm.s @@ -3,12 +3,12 @@ .text - arm_func_start OS_UnlockCartridge -OS_UnlockCartridge: ; 0x020CA094 - ldr r1, _020CA09C ; =OS_UnlockCartridge2 + arm_func_start OS_UnLockCartridge +OS_UnLockCartridge: ; 0x020CA094 + ldr r1, _020CA09C ; =OS_UnlockCartridge bx r1 .balign 4 -_020CA09C: .word OS_UnlockCartridge2 +_020CA09C: .word OS_UnlockCartridge arm_func_start OS_GetLockID OS_GetLockID: ; 0x020CA0A0 @@ -99,59 +99,3 @@ OS_TryLockCard: ; 0x020CA17C _020CA18C: .word OS_TryLockByWord _020CA190: .word 0x027FFFE0 _020CA194: .word OSi_AllocateCardBus - - arm_func_start OSi_FreeCartridgeBus -OSi_FreeCartridgeBus: ; 0x020CA198 - ldr r1, _020CA1AC ; =0x04000204 - ldrh r0, [r1, #0x0] - orr r0, r0, #0x80 - strh r0, [r1, #0x0] - bx lr - .balign 4 -_020CA1AC: .word 0x04000204 - - arm_func_start OSi_AllocateCartridgeBus -OSi_AllocateCartridgeBus: ; 0x020CA1B0 - ldr r1, _020CA1C4 ; =0x04000204 - ldrh r0, [r1, #0x0] - bic r0, r0, #0x80 - strh r0, [r1, #0x0] - bx lr - .balign 4 -_020CA1C4: .word 0x04000204 - - arm_func_start OS_TryLockCartridge -OS_TryLockCartridge: ; 0x020CA1C8 - ldr ip, _020CA1DC ; =OSi_DoTryLockByWord - ldr r1, _020CA1E0 ; =0x027FFFE8 - ldr r2, _020CA1E4 ; =OSi_AllocateCartridgeBus - mov r3, #0x1 - bx r12 - .balign 4 -_020CA1DC: .word OSi_DoTryLockByWord -_020CA1E0: .word 0x027FFFE8 -_020CA1E4: .word OSi_AllocateCartridgeBus - - arm_func_start OS_UnlockCartridge2 -OS_UnlockCartridge2: ; 0x020CA1E8 - ldr ip, _020CA1FC ; =OSi_DoUnlockByWord - ldr r1, _020CA200 ; =0x027FFFE8 - ldr r2, _020CA204 ; =OSi_FreeCartridgeBus - mov r3, #0x1 - bx r12 - .balign 4 -_020CA1FC: .word OSi_DoUnlockByWord -_020CA200: .word 0x027FFFE8 -_020CA204: .word OSi_FreeCartridgeBus - - arm_func_start OS_LockCartridge -OS_LockCartridge: ; 0x020CA208 - ldr ip, _020CA21C ; =OSi_DoLockByWord - ldr r1, _020CA220 ; =0x027FFFE8 - ldr r2, _020CA224 ; =OSi_AllocateCartridgeBus - mov r3, #0x1 - bx r12 - .balign 4 -_020CA21C: .word OSi_DoLockByWord -_020CA220: .word 0x027FFFE8 -_020CA224: .word OSi_AllocateCartridgeBus diff --git a/arm9/global.inc b/arm9/global.inc index e1be4932..c9776676 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6438,8 +6438,8 @@ .extern OS_TryLockMutex
.extern OS_UnlockByWord
.extern OS_UnlockCard
+.extern OS_UnLockCartridge
.extern OS_UnlockCartridge
-.extern OS_UnlockCartridge2
.extern OS_UnlockMutex
.extern OS_WaitIrq
.extern OS_WaitVBlankIntr
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 diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h index b316a1fa..b47d88b4 100644 --- a/arm9/lib/include/mmap.h +++ b/arm9/lib/include/mmap.h @@ -41,6 +41,7 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_LOCK_ID_FLAG_MAIN (HW_MAIN_MEM + 0x007fffb0) #define HW_SHARED_LOCK_BUF (HW_MAIN_MEM + 0x007fffc0) +#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM + 0x007fffe8) #define HW_BUTTON_XY_BUF (HW_MAIN_MEM + 0x007fffa8) 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); +} |