diff options
Diffstat (limited to 'arm7/asm/CARD_common.s')
-rw-r--r-- | arm7/asm/CARD_common.s | 105 |
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 |