summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/CTRDG.s6
-rw-r--r--arm9/asm/CTRDG_backup.s2
-rw-r--r--arm9/asm/CTRDG_flash_AT29LV512.s6
-rw-r--r--arm9/asm/CTRDG_flash_LE39FW512.s8
-rw-r--r--arm9/asm/CTRDG_flash_MX29L010.s6
-rw-r--r--arm9/asm/CTRDG_flash_MX29L512.s2
-rw-r--r--arm9/asm/CTRDG_flash_common.s4
-rw-r--r--arm9/asm/OS_spinLock_asm.s64
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/lib/include/OS_spinLock.h5
-rw-r--r--arm9/lib/include/mmap.h1
-rw-r--r--arm9/lib/src/OS_spinLock.c27
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);
+}