summaryrefslogtreecommitdiff
path: root/arm7/asm/CARD_common.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/asm/CARD_common.s')
-rw-r--r--arm7/asm/CARD_common.s105
1 files changed, 105 insertions, 0 deletions
diff --git a/arm7/asm/CARD_common.s b/arm7/asm/CARD_common.s
new file mode 100644
index 00000000..be71fcdf
--- /dev/null
+++ b/arm7/asm/CARD_common.s
@@ -0,0 +1,105 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _0380912C
+_0380912C: ;0x0380912C
+ .space 0x03809140 - 0x0380912C
+
+ .global cardi_common
+cardi_common: ;0x03809140
+ .space 0x03809188 - 0x03809140
+
+ .global _03809188
+_03809188: ;0x03809188
+ .space 0x03809760 - 0x03809188
+
+ .global _03809760
+_03809760: ;0x03809760
+ .space 0x03809764 - 0x03809760
+
+ .section .text
+
+ arm_func_start CARD_GetRomHeader
+CARD_GetRomHeader: ; 0x037FFF20
+ ldr r0, _037FFF28 ; =0x027FFA80
+ bx lr
+_037FFF28: .word 0x027FFA80
+
+ arm_func_start CARD_SetThreadPriority
+CARD_SetThreadPriority: ; 0x037FFF2C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ ldr r6, _037FFF70 ; =cardi_common
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r5, [r6, #240] ; 0xf0
+ str r7, [r6, #240] ; 0xf0
+ add r0, r6, #72 ; 0x48
+ ldr r1, [r6, #240] ; 0xf0
+ bl OS_SetThreadPriority
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FFF70: .word cardi_common
+
+ arm_func_start CARD_Enable
+CARD_Enable: ; 0x037FFF74
+ ldr r1, _037FFF80 ; =_0380912C
+ str r0, [r1]
+ bx lr
+_037FFF80: .word _0380912C
+
+ arm_func_start CARDi_InitCommon
+CARDi_InitCommon: ; 0x037FFF84
+ stmfd sp!, {lr}
+ sub sp, sp, #12
+ mvn r1, #2
+ ldr r0, _0380001C ; =cardi_common
+ str r1, [r0, #12]
+ mov r2, #0
+ str r2, [r0, #16]
+ str r2, [r0, #28]
+ str r2, [r0]
+ str r2, [r0, #8]
+ str r2, [r0, #24]
+ str r2, [r0, #20]
+ str r2, [r0, #248] ; 0xf8
+ str r2, [r0, #244] ; 0xf4
+ mov r1, #4
+ str r1, [r0, #240] ; 0xf0
+ mov r1, #1024 ; 0x400
+ str r1, [sp]
+ ldr r0, [r0, #240] ; 0xf0
+ str r0, [sp, #4]
+ ldr r0, _03800020 ; =_03809188
+ ldr r1, _03800024 ; =CARDi_TaskThread
+ ldr r3, _03800028 ; =_03809760
+ bl OS_CreateThread
+ ldr r0, _03800020 ; =_03809188
+ bl OS_WakeupThreadDirect
+ mov r0, #11
+ ldr r1, _0380002C ; =CARDi_OnFifoRecv
+ bl PXI_SetFifoRecvCallback
+ ldr r0, _03800030 ; =0x027FFC40
+ ldrh r0, [r0]
+_03800000:
+ cmp r0, #2
+ beq _03800010
+ mov r0, #1
+ bl CARD_Enable
+_03800010:
+ add sp, sp, #12
+ ldmia sp!, {lr}
+ bx lr
+_0380001C: .word cardi_common
+_03800020: .word _03809188
+_03800024: .word CARDi_TaskThread
+_03800028: .word _03809760
+_0380002C: .word CARDi_OnFifoRecv
+_03800030: .word 0x027FFC40