summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-06-14 17:32:24 +0100
committerred031000 <rubenru09@aol.com>2020-06-14 17:34:02 +0100
commit7a7bce2bc77bf7886916787cb09f6d39704818c3 (patch)
treee707a1371a93def4ae868296b0f3415c0c0ef6bb
parent1406a7a34713f0305160583b056721a5dd525df7 (diff)
arm7 OS_spinLock
-rw-r--r--arm7/asm/OS_spinLock.s278
-rw-r--r--arm7/lib/include/MI_dma.h6
-rw-r--r--arm7/lib/include/OS_spinLock.h28
-rw-r--r--arm7/lib/include/mmap.h2
-rw-r--r--arm7/lib/include/syscall.h6
-rw-r--r--arm7/lib/src/OS_spinLock.c192
-rw-r--r--arm7/lib/src/OS_system.c3
-rw-r--r--arm9/lib/include/MI_dma.h8
-rw-r--r--arm9/lib/include/OS_spinLock.h13
-rw-r--r--arm9/lib/include/mmap.h1
-rw-r--r--arm9/lib/include/syscall.h6
-rw-r--r--arm9/lib/src/OS_spinLock.c4
-rw-r--r--include/nitro/MI_dma_shared.h (renamed from include/nitro/dma.h)16
-rw-r--r--include/nitro/OS_spinLock_shared.h24
-rw-r--r--include/nitro/mmap_shared.h2
15 files changed, 286 insertions, 303 deletions
diff --git a/arm7/asm/OS_spinLock.s b/arm7/asm/OS_spinLock.s
deleted file mode 100644
index bb15916e..00000000
--- a/arm7/asm/OS_spinLock.s
+++ /dev/null
@@ -1,278 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global _03807780
-_03807780: ;0x03807780
- .space 0x03807784 - 0x03807780
-
- .section .text
-
- arm_func_start OS_UnLockCartridge
-OS_UnLockCartridge: ; 0x037F8A18
- ldr r1, _037F8A20 ; =OS_UnlockCartridge
- bx r1
-_037F8A20: .word OS_UnlockCartridge
-
- arm_func_start OS_GetLockID
-OS_GetLockID: ; 0x037F8A24
- ldr r3, _037F8AB4 ; =0x027FFFB8
- ldr r1, [r3]
- mov r2, #0
- mov r0, #-2147483648 ; 0x80000000
-_037F8A34:
- tst r1, r0
- bne _037F8A50
- add r2, r2, #1
- cmp r2, #32
- beq _037F8A50
- mov r0, r0, lsr #1
- b _037F8A34
-_037F8A50:
- cmp r2, #32
- movne r0, #128 ; 0x80
- bne _037F8A98
- add r3, r3, #4
- ldr r1, [r3]
- mov r2, #0
- mov r0, #-2147483648 ; 0x80000000
-_037F8A6C:
- tst r1, r0
- bne _037F8A88
- add r2, r2, #1
- cmp r2, #32
- beq _037F8A88
- mov r0, r0, lsr #1
- b _037F8A6C
-_037F8A88:
- cmp r2, #32
- ldr r0, _037F8AB8 ; =0xFFFFFFFD
- bxeq lr
- mov r0, #160 ; 0xa0
-_037F8A98:
- add r0, r0, r2
- mov r1, #-2147483648 ; 0x80000000
- mov r1, r1, lsr r2
- ldr r2, [r3]
- bic r2, r2, r1
- str r2, [r3]
- bx lr
-_037F8AB4: .word 0x027FFFB8
-_037F8AB8: .word 0xFFFFFFFD
-
- arm_func_start OS_ReleaseLockID
-OS_ReleaseLockID: ; 0x037F8ABC
- ldr r3, _037F8AE8 ; =0x027FFFB8
- cmp r0, #160 ; 0xa0
- addpl r3, r3, #4
- subpl r0, r0, #160 ; 0xa0
- submi r0, r0, #128 ; 0x80
- mov r1, #-2147483648 ; 0x80000000
- mov r1, r1, lsr r0
- ldr r2, [r3]
- orr r2, r2, r1
- str r2, [r3]
- bx lr
-_037F8AE8: .word 0x027FFFB8
-
- arm_func_start OS_ReadOwnerOfLockWord
-OS_ReadOwnerOfLockWord: ; 0x037F8AEC
- ldrh r0, [r0, #4]
- bx lr
-
- arm_func_start OSi_FreeCartridgeBus
-OSi_FreeCartridgeBus: ;0x037F8AF4
- bx lr
-
- arm_func_start OSi_AllocateCartridgeBus
-OSi_AllocateCartridgeBus: ;0x037F8AF8
- bx lr
-
- arm_func_start OS_TryLockCartridge
-OS_TryLockCartridge: ; 0x037F8AFC
- ldr r1, _037F8B10 ; =0x027FFFE8
- ldr r2, _037F8B14 ; =OSi_AllocateCartridgeBus
- mov r3, #1
- ldr ip, _037F8B18 ; =OSi_DoTryLockByWord
- bx ip
-_037F8B10: .word 0x027FFFE8
-_037F8B14: .word OSi_AllocateCartridgeBus
-_037F8B18: .word OSi_DoTryLockByWord
-
- arm_func_start OS_UnlockCartridge
-OS_UnlockCartridge: ; 0x037F8B1C
- ldr r1, _037F8B30 ; =0x027FFFE8
- ldr r2, _037F8B34 ; =OSi_FreeCartridgeBus
- mov r3, #1
- ldr ip, _037F8B38 ; =OSi_DoUnlockByWord
- bx ip
-_037F8B30: .word 0x027FFFE8
-_037F8B34: .word OSi_FreeCartridgeBus
-_037F8B38: .word OSi_DoUnlockByWord
-
- arm_func_start OS_LockCartridge
-OS_LockCartridge: ; 0x037F8B3C
- ldr r1, _037F8B50 ; =0x027FFFE8
- ldr r2, _037F8B54 ; =OSi_AllocateCartridgeBus
- mov r3, #1
- ldr ip, _037F8B58 ; =OSi_DoLockByWord
- bx ip
-_037F8B50: .word 0x027FFFE8
-_037F8B54: .word OSi_AllocateCartridgeBus
-_037F8B58: .word OSi_DoLockByWord
-
- arm_func_start OSi_DoTryLockByWord
-OSi_DoTryLockByWord: ; 0x037F8B5C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r9, r0
- mov r8, r1
- mov r7, r2
- movs r6, r3
- beq _037F8B84
- bl OS_DisableInterrupts_IrqAndFiq
- mov r5, r0
- b _037F8B8C
-_037F8B84:
- bl OS_DisableInterrupts
- mov r5, r0
-_037F8B8C:
- mov r0, r9
- mov r1, r8
- bl MI_SwapWord
- movs r4, r0
- bne _037F8BB4
- cmp r7, #0
- beq _037F8BB0
- mov lr, pc
- bx r7
-_037F8BB0:
- strh r9, [r8, #4]
-_037F8BB4:
- cmp r6, #0
- beq _037F8BC8
- mov r0, r5
- bl OS_RestoreInterrupts_IrqAndFiq
- b _037F8BD0
-_037F8BC8:
- mov r0, r5
- bl OS_RestoreInterrupts
-_037F8BD0:
- mov r0, r4
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-
- arm_func_start OSi_DoUnlockByWord
-OSi_DoUnlockByWord: ; 0x037F8BE0
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r1
- mov r6, r2
- mov r5, r3
- ldrh r1, [r7, #4]
- cmp r0, r1
- mvnne r0, #1
- bne _037F8C60
- cmp r5, #0
- beq _037F8C18
- bl OS_DisableInterrupts_IrqAndFiq
- mov r4, r0
- b _037F8C20
-_037F8C18:
- bl OS_DisableInterrupts
- mov r4, r0
-_037F8C20:
- mov r0, #0
- strh r0, [r7, #4]
- cmp r6, #0
- beq _037F8C38
- mov lr, pc
- bx r6
-_037F8C38:
- mov r0, #0
- str r0, [r7]
- cmp r5, #0
- beq _037F8C54
- mov r0, r4
- bl OS_RestoreInterrupts_IrqAndFiq
- b _037F8C5C
-_037F8C54:
- mov r0, r4
- bl OS_RestoreInterrupts
-_037F8C5C:
- mov r0, #0
-_037F8C60:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start OSi_DoLockByWord
-OSi_DoLockByWord: ; 0x037F8C6C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, r3
- mov r4, #1024 ; 0x400
- b _037F8C90
-_037F8C88:
- mov r0, r4
- bl FUN_037F8CB4
-_037F8C90:
- mov r0, r8
- mov r1, r7
- mov r2, r6
- mov r3, r5
- bl OSi_DoTryLockByWord
- cmp r0, #0
- bgt _037F8C88
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start FUN_037F8CB4
-FUN_037F8CB4: ; 0x037F8CB4 ;part of the above func?
- ldr ip, _037F8CBC ; =SVC_WaitByLoop
- bx ip
-_037F8CBC: .word SVC_WaitByLoop
-
- arm_func_start OS_InitLock
-OS_InitLock: ; 0x037F8CC0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _037F8D38 ; =_03807780
- ldr r1, [r0]
- cmp r1, #0
- bne _037F8D2C
- mov r1, #1
- str r1, [r0]
- mov r0, #0
- ldr r4, _037F8D3C ; =0x027FFFF0
- strh r0, [r4, #6]
- mov r5, #1024 ; 0x400
- b _037F8CFC
-_037F8CF4:
- mov r0, r5
- bl FUN_037F8CB4
-_037F8CFC:
- ldrh r0, [r4, #4]
- cmp r0, #127 ; 0x7f
- bne _037F8CF4
- mvn r1, #0
- ldr r0, _037F8D40 ; =0x027FFFB8
- str r1, [r0]
- mov r0, #65536 ; 0x10000
- rsb r1, r0, #0
- ldr r0, _037F8D44 ; =0x027FFFBC
- str r1, [r0]
- mov r0, #191 ; 0xbf
- strh r0, [r4, #6]
-_037F8D2C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F8D38: .word _03807780
-_037F8D3C: .word 0x027FFFF0
-_037F8D40: .word 0x027FFFB8
-_037F8D44: .word 0x027FFFBC
diff --git a/arm7/lib/include/MI_dma.h b/arm7/lib/include/MI_dma.h
index b728f814..e65f0b89 100644
--- a/arm7/lib/include/MI_dma.h
+++ b/arm7/lib/include/MI_dma.h
@@ -1,7 +1,7 @@
-#ifndef GUARD_MI_DMA_H
-#define GUARD_MI_DMA_H
+#ifndef POKEDIAMOND_ARM7_MI_DMA_H
+#define POKEDIAMOND_ARM7_MI_DMA_H
-#include "nitro/dma.h"
+#include "nitro/MI_dma_shared.h"
#include "nitro/types.h"
void MI_StopDma(u32 channel);
diff --git a/arm7/lib/include/OS_spinLock.h b/arm7/lib/include/OS_spinLock.h
new file mode 100644
index 00000000..f7366d1f
--- /dev/null
+++ b/arm7/lib/include/OS_spinLock.h
@@ -0,0 +1,28 @@
+#ifndef POKEDIAMOND_ARM7_OS_SPINLOCK_H
+#define POKEDIAMOND_ARM7_OS_SPINLOCK_H
+
+#include "consts.h"
+#include "nitro/OS_spinLock_shared.h"
+#include "syscall.h"
+
+void OS_InitLock(void);
+void FUN_037F8CB4(s32 ct);
+s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq);
+s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ);
+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);
+void OSi_FreeCartridgeBus(void);
+u16 OS_ReadOwnerOfLockWord(OSLockWord * lock);
+s32 OS_UnLockCartridge(u16 lockID);
+s32 OS_GetLockID(void);
+void OS_ReleaseLockID(register u16 lockID);
+
+static inline void OSi_WaitByLoop(void)
+{
+ FUN_037F8CB4(0x1000 / 4);
+}
+
+#endif //POKEDIAMOND_ARM7_OS_SPINLOCK_H
diff --git a/arm7/lib/include/mmap.h b/arm7/lib/include/mmap.h
index 24d15ad7..064938e2 100644
--- a/arm7/lib/include/mmap.h
+++ b/arm7/lib/include/mmap.h
@@ -23,4 +23,6 @@
#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE)
+#define HW_LOCK_ID_FLAG_SUB (HW_MAIN_MEM + 0x007fffb8)
+
#endif //POKEDIAMOND_ARM7_MMAP_H
diff --git a/arm7/lib/include/syscall.h b/arm7/lib/include/syscall.h
new file mode 100644
index 00000000..55462cc7
--- /dev/null
+++ b/arm7/lib/include/syscall.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_ARM7_SYSCALL_H
+#define POKEDIAMOND_ARM7_SYSCALL_H
+
+void SVC_WaitByLoop(u32 ct);
+
+#endif //POKEDIAMOND_ARM7_SYSCALL_H
diff --git a/arm7/lib/src/OS_spinLock.c b/arm7/lib/src/OS_spinLock.c
new file mode 100644
index 00000000..2857de05
--- /dev/null
+++ b/arm7/lib/src/OS_spinLock.c
@@ -0,0 +1,192 @@
+#include "function_target.h"
+#include "OS_spinLock.h"
+#include "OS_system.h"
+#include "MI_swap.h"
+
+ARM_FUNC void OS_InitLock(void)
+{
+ static BOOL isInitialized = FALSE;
+
+ if (isInitialized)
+ return;
+ isInitialized = TRUE;
+
+ OSLockWord *lockp = (OSLockWord *)HW_INIT_LOCK_BUF;
+
+ lockp->extension = 0;
+ while (lockp->ownerID != 0x7f)
+ {
+ OSi_WaitByLoop();
+ }
+
+ ((u32 *)HW_LOCK_ID_FLAG_SUB)[0] = 0xffffffff;
+ ((u32 *)HW_LOCK_ID_FLAG_SUB)[1] = 0xffff0000;
+
+ lockp->extension = 0xbf;
+}
+
+ARM_FUNC void FUN_037F8CB4(s32 ct)
+{
+ SVC_WaitByLoop((u32)ct); //todo this should be linker generated, figure out why it broke
+}
+
+ARM_FUNC s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void),
+ BOOL disableFiq)
+{
+ s32 lastLockFlag;
+ while ((lastLockFlag = OSi_DoTryLockByWord(lockId, lockp, ctrlFuncp, disableFiq)) > 0) {
+ OSi_WaitByLoop();
+ }
+
+ return lastLockFlag;
+}
+
+ARM_FUNC s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
+ BOOL disableFIQ)
+{
+ if (lockID != lockp->ownerID)
+ {
+ return -2;
+ }
+
+ OSIntrMode lastIntrMode = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts();
+ lockp->ownerID = 0;
+ if (ctrlFuncp)
+ {
+ ctrlFuncp();
+ }
+ lockp->lockFlag = 0;
+ if (disableFIQ)
+ {
+ (void)OS_RestoreInterrupts_IrqAndFiq(lastIntrMode);
+ }
+ else
+ {
+ (void)OS_RestoreInterrupts(lastIntrMode);
+ }
+ return 0;
+}
+
+ARM_FUNC s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
+ BOOL disableFiq)
+{
+ OSIntrMode lastIntrMode = (disableFiq) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts();
+
+ s32 lastLockFlag = (s32)MI_SwapWord(lockID, (u32 *)&lockp->lockFlag);
+
+ if (!lastLockFlag)
+ {
+ if (ctrlFuncp)
+ {
+ ctrlFuncp();
+ }
+ lockp->ownerID = lockID;
+ }
+
+ if (disableFiq)
+ {
+ (void)OS_RestoreInterrupts_IrqAndFiq(lastIntrMode);
+ }
+ else
+ {
+ (void)OS_RestoreInterrupts(lastIntrMode);
+ }
+
+ 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(void)
+{
+ //noop
+}
+
+ARM_FUNC void OSi_FreeCartridgeBus(void)
+{
+ //noop
+}
+
+ARM_FUNC u16 OS_ReadOwnerOfLockWord(OSLockWord * lock)
+{
+ return lock->ownerID;
+}
+
+ARM_FUNC asm s32 OS_UnLockCartridge(u16 lockID)
+{
+ ldr r1, =OS_UnlockCartridge
+ bx r1
+}
+
+ARM_FUNC asm s32 OS_GetLockID(void)
+{
+ ldr r3, =HW_LOCK_ID_FLAG_SUB
+ ldr r1, [r3]
+ mov r2, #0
+ mov r0, #0x80000000
+_037F8A34:
+ tst r1, r0
+ bne _037F8A50
+ add r2, r2, #1
+ cmp r2, #32
+ beq _037F8A50
+ mov r0, r0, lsr #1
+ b _037F8A34
+_037F8A50:
+ cmp r2, #32
+ movne r0, #0x80
+ bne _037F8A98
+ add r3, r3, #4
+ ldr r1, [r3]
+ mov r2, #0
+ mov r0, #0x80000000
+_037F8A6C:
+ tst r1, r0
+ bne _037F8A88
+ add r2, r2, #1
+ cmp r2, #32
+ beq _037F8A88
+ mov r0, r0, lsr #1
+ b _037F8A6C
+_037F8A88:
+ cmp r2, #32
+ ldr r0, =0xFFFFFFFD
+ bxeq lr
+ mov r0, #160
+_037F8A98:
+ add r0, r0, r2
+ mov r1, #0x80000000
+ mov r1, r1, lsr r2
+ ldr r2, [r3]
+ bic r2, r2, r1
+ str r2, [r3]
+ bx lr
+}
+
+ARM_FUNC asm void OS_ReleaseLockID(register u16 lockID)
+{
+ ldr r3, =HW_LOCK_ID_FLAG_SUB
+ cmp r0, #0xa0
+ addpl r3, r3, #0x4
+ subpl r0, r0, #0xa0
+ submi r0, r0, #0x80
+ mov r1, #0x80000000
+ mov r1, r1, lsr r0
+ ldr r2, [r3, #0x0]
+ orr r2, r2, r1
+ str r2, [r3, #0x0]
+ bx lr
+}
diff --git a/arm7/lib/src/OS_system.c b/arm7/lib/src/OS_system.c
index 11417e91..503bd854 100644
--- a/arm7/lib/src/OS_system.c
+++ b/arm7/lib/src/OS_system.c
@@ -1,7 +1,6 @@
#include "function_target.h"
#include "OS_system.h"
-
-extern void FUN_037F8CB4(s32 count);
+#include "OS_spinLock.h"
ARM_FUNC asm OSIntrMode OS_EnableInterrupts(void)
{
diff --git a/arm9/lib/include/MI_dma.h b/arm9/lib/include/MI_dma.h
index eddcedbb..15dc2c06 100644
--- a/arm9/lib/include/MI_dma.h
+++ b/arm9/lib/include/MI_dma.h
@@ -1,6 +1,8 @@
-#ifndef NITRO_MI_DMA_H_
-#define NITRO_MI_DMA_H_
+#ifndef POKEDIAMOND_ARM9_MI_DMA_H
+#define POKEDIAMOND_ARM9_MI_DMA_H
+
+#include "nitro/MI_dma_shared.h"
typedef void (*MIDmaCallback)(void *);
-#endif //NITRO_MI_DMA_H_
+#endif //POKEDIAMOND_ARM9_MI_DMA_H
diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h
index 5dc47522..a5d27585 100644
--- a/arm9/lib/include/OS_spinLock.h
+++ b/arm9/lib/include/OS_spinLock.h
@@ -1,15 +1,10 @@
-#ifndef POKEDIAMOND_OS_SPINLOCK_H
-#define POKEDIAMOND_OS_SPINLOCK_H
+#ifndef POKEDIAMOND_ARM9_OS_SPINLOCK_H
+#define POKEDIAMOND_ARM9_OS_SPINLOCK_H
#include "nitro/types.h"
+#include "nitro/OS_spinLock_shared.h"
#include "syscall.h"
-typedef volatile struct OSLockWord {
- u32 lockFlag;
- u16 ownerID;
- u16 extension;
-} OSLockWord;
-
static inline void OSi_WaitByLoop(void)
{
SVC_WaitByLoop(0x1000 / 4);
@@ -38,4 +33,4 @@ s32 OS_UnLockCartridge(u16 lockID);
s32 OS_GetLockID(void);
void OS_ReleaseLockID(register u16 lockID);
-#endif //POKEDIAMOND_OS_SPINLOCK_H
+#endif //POKEDIAMOND_ARM9_OS_SPINLOCK_H
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index 6a5f23c5..5967695c 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -49,7 +49,6 @@ 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_CARD_LOCK_BUF (HW_MAIN_MEM + 0x007fffe0)
-#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM + 0x007fffe8)
#define HW_BUTTON_XY_BUF (HW_MAIN_MEM + 0x007fffa8)
diff --git a/arm9/lib/include/syscall.h b/arm9/lib/include/syscall.h
index 8561cabe..427134a7 100644
--- a/arm9/lib/include/syscall.h
+++ b/arm9/lib/include/syscall.h
@@ -1,6 +1,6 @@
-#ifndef NITRO_SYSCALL_H_
-#define NITRO_SYSCALL_H_
+#ifndef POKEDIAMOND_ARM9_SYSCALL_H
+#define POKEDIAMOND_ARM9_SYSCALL_H
void SVC_WaitByLoop(u32 ct);
-#endif //NITRO_SYSCALL_H_
+#endif //POKEDIAMOND_ARM9_SYSCALL_H
diff --git a/arm9/lib/src/OS_spinLock.c b/arm9/lib/src/OS_spinLock.c
index 5050a7bd..c0398be9 100644
--- a/arm9/lib/src/OS_spinLock.c
+++ b/arm9/lib/src/OS_spinLock.c
@@ -21,7 +21,7 @@ ARM_FUNC void OS_InitLock(void)
}
isInitialized = TRUE;
- OSLockWord* lockp = (OSLockWord *)0x027FFFF0;
+ OSLockWord* lockp = (OSLockWord *)HW_INIT_LOCK_BUF;
lockp->lockFlag = 0;
@@ -45,7 +45,7 @@ ARM_FUNC void OS_InitLock(void)
(void)OS_TryLockByWord(0x7f, lockp, NULL);
}
-ARM_FUNC s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), //should be static
+ARM_FUNC s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void),
BOOL disableFiq)
{
s32 lastLockFlag;
diff --git a/include/nitro/dma.h b/include/nitro/MI_dma_shared.h
index 32944cb3..e839417a 100644
--- a/include/nitro/dma.h
+++ b/include/nitro/MI_dma_shared.h
@@ -1,5 +1,17 @@
-#ifndef GUARD_DMA_H
-#define GUARD_DMA_H
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include MI_dma.h from the specific proc's lib
+ */
+
+#ifndef GUARD_DMA_SHARED_H
+#define GUARD_DMA_SHARED_H
#define REG_ADDR_DMA0SAD 0x040000b0
diff --git a/include/nitro/OS_spinLock_shared.h b/include/nitro/OS_spinLock_shared.h
new file mode 100644
index 00000000..31f0be32
--- /dev/null
+++ b/include/nitro/OS_spinLock_shared.h
@@ -0,0 +1,24 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include OS_spinLock.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_OS_SPINLOCK_SHARED_H
+#define POKEDIAMOND_OS_SPINLOCK_SHARED_H
+
+#include "nitro/types.h"
+
+typedef volatile struct OSLockWord {
+ u32 lockFlag;
+ u16 ownerID;
+ u16 extension;
+} OSLockWord;
+
+#endif //POKEDIAMOND_OS_SPINLOCK_SHARED_H
diff --git a/include/nitro/mmap_shared.h b/include/nitro/mmap_shared.h
index 587887bb..f7ba4fb4 100644
--- a/include/nitro/mmap_shared.h
+++ b/include/nitro/mmap_shared.h
@@ -20,6 +20,8 @@
#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40)
#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0)
+#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM + 0x007fffe8)
+#define HW_INIT_LOCK_BUF (HW_MAIN_MEM + 0x007ffff0)
#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
#endif //POKEDIAMOND_MMAP_SHARED_H