diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-05-16 12:36:28 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-16 12:36:28 +0300 |
commit | 87b69a90aa6b52c5022202f99a2d026c7cc57fac (patch) | |
tree | a713396ff4119271945e05ae48f281be0807d336 | |
parent | a728a3d62280db3c359e8eea68771dba361c2f2f (diff) | |
parent | f17569c9e1aac5dea4534abfc3506f2447b2129f (diff) |
Merge branch 'master' into pikalax_work
-rw-r--r-- | arm9/arm9.lcf | 5 | ||||
-rw-r--r-- | arm9/asm/SPI_mic.s | 528 | ||||
-rw-r--r-- | arm9/asm/SPI_pm.s (renamed from arm9/asm/libpm.s) | 32 | ||||
-rw-r--r-- | arm9/asm/SPI_tp.s (renamed from arm9/asm/libspi.s) | 527 |
4 files changed, 549 insertions, 543 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 0f1b6fda..9ae0d28a 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -216,8 +216,9 @@ SECTIONS { DGT_hash2.o (.text) DGT_sha1s_arm4cw.o (.text) CP_context.o (.text) - libspi.o (.text) - libpm.o (.text) + SPI_tp.o (.text) + SPI_mic.o (.text) + SPI_pm.o (.text) librtc.o (.text) libcard.o (.text) libwm.o (.text) diff --git a/arm9/asm/SPI_mic.s b/arm9/asm/SPI_mic.s new file mode 100644 index 00000000..f82afbcc --- /dev/null +++ b/arm9/asm/SPI_mic.s @@ -0,0 +1,528 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start MicWaitBusy +MicWaitBusy: ; 0x020D4408 + ldr ip, _020D441C ; =0x021D54B0 +_020D440C: + ldr r0, [r12, #0x0] + cmp r0, #0x1 + beq _020D440C + bx lr + .balign 4 +_020D441C: .word 0x021D54B0 + + arm_func_start MicGetResultCallback +MicGetResultCallback: ; 0x020D4420 + ldr r1, _020D442C ; =0x021D54B0 + str r0, [r1, #0xc] + bx lr + .balign 4 +_020D442C: .word 0x021D54B0 + + arm_func_start MicStopAutoSampling +MicStopAutoSampling: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D4460 ; =0x03004200 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D4448: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + add sp, sp, #4 + ldmfd sp!, {lr} + bx lr +_020D4460: .word 0x03004200 + + arm_func_start MicStartAutoSampling +MicStartAutoSampling: ; 0x020D4464 + stmdb sp!, {r4-r6,lr} + ldr ip, _020D4584 ; =0x02004100 + mov r6, r0 + mov r5, r1 + mov r4, r2 + orr r1, r3, r12 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D4488: + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r6, lsr #0x10 + orr r1, r0, #0x10000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r1, _020D4588 + mov r0, #0x9 + and r1, r6, r1 + orr r1, r1, #0x20000 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r5, lsr #0x10 + orr r1, r0, #0x30000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r1, _020D4588 + mov r0, #0x9 + and r1, r5, r1 + orr r1, r1, #0x40000 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r4, lsr #0x10 + orr r1, r0, #0x50000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r0, _020D4588 + ldr r1, _020D458C + and r0, r4, r0 + orr r1, r0, r1 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + ldmia sp!, {r4-r6, lr} + bx lr +_020D4584: .word 0x02004100 +_020D4588: .word 0x0000FFFF +_020D458C: .word 0x01060000 + + arm_func_start MicDoSampling +MicDoSampling: ; 0x020D4590 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D45C4 ; =0x03004000 + mov r2, #0x0 + orr r1, r0, r1 + mov r0, #0x9 + bl PXI_SendWordByFifo +_020D45AC: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr +_020D45C4: .word 0x03004000 + + arm_func_start MicCommonCallback +MicCommonCallback: ; 0x020D45C8 + stmdb sp!, {r4,lr} + mov r4, r1 + cmp r2, #0x0 + beq _020D4610 + ldr r0, _020D4700 ; =0x021D54B0 + ldr r2, _020D4700 ; =0x021D54B0 + ldr r1, [r0, #0x0] + ldr r12, [r2, #0x4] + cmp r1, #0x0 + movne r1, #0x0 + strne r1, [r0, #0x0] + cmp r12, #0x0 + beq _020D4610 + ldr r1, [r2, #0x8] + mov r3, #0x0 + mov r0, #0x6 + str r3, [r2, #0x4] + blx r12 +_020D4610: + and r0, r4, #0xff + mov r1, r0, lsl #0x10 + and r2, r4, #0x7f00 + mov r0, r2, lsl #0x8 + mov r1, r1, lsr #0x10 + cmp r1, #0x4 + mov r2, r0, lsr #0x10 + addls pc, pc, r1, lsl #0x2 + b _020D4670 +_020D4634: + b _020D4648 + b _020D4650 + b _020D4658 + b _020D4660 + b _020D4668 +_020D4648: + mov r0, #0x0 + b _020D4674 +_020D4650: + mov r0, #0x4 + b _020D4674 +_020D4658: + mov r0, #0x2 + b _020D4674 +_020D4660: + mov r0, #0x5 + b _020D4674 +_020D4668: + mov r0, #0x1 + b _020D4674 +_020D4670: + mov r0, #0x6 +_020D4674: + cmp r2, #0x51 + bne _020D46A0 + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x10] + cmp r2, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x14] + blx r2 + ldmia sp!, {r4,lr} + bx lr +_020D46A0: + cmp r2, #0x40 + bne _020D46C0 + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x18] + cmp r2, #0x0 + ldrne r1, _020D4704 ; =0x027FFF94 + ldrneh r1, [r1, #0x0] + strneh r1, [r2, #0x0] +_020D46C0: + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + movne r2, #0x0 + strne r2, [r1, #0x0] + ldr r2, _020D4700 ; =0x021D54B0 + ldr r4, [r2, #0x4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r2, #0x8] + mov r3, #0x0 + str r3, [r2, #0x4] + blx r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020D4700: .word 0x021D54B0 +_020D4704: .word 0x027FFF94 + + arm_func_start MIC_GetLastSamplingAddress +MIC_GetLastSamplingAddress: ; 0x020D4708 + ldr r0, _020D4714 ; =0x027FFF90 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020D4714: .word 0x027FFF90 + + arm_func_start MIC_StopAutoSampling +MIC_StopAutoSampling: ; 0x020D4718 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020D4754 ; =MicGetResultCallback + mov r1, #0x0 + bl MIC_StopAutoSamplingAsync + ldr r1, _020D4758 ; =0x021D54B0 + cmp r0, #0x0 + str r0, [r1, #0xc] + bne _020D4740 + bl MicWaitBusy +_020D4740: + ldr r0, _020D4758 ; =0x021D54B0 + ldr r0, [r0, #0xc] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D4754: .word MicGetResultCallback +_020D4758: .word 0x021D54B0 + + arm_func_start MIC_StopAutoSamplingAsync +MIC_StopAutoSamplingAsync: ; 0x020D475C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + ldr r1, _020D47C8 ; =0x021D54B0 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + beq _020D4794 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020D4794: + mov r2, #0x1 + str r2, [r1, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020D47C8 ; =0x021D54B0 + str r5, [r0, #0x4] + str r4, [r0, #0x8] + bl MicStopAutoSampling +_020D47B0: + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr +_020D47C8: .word 0x021D54B0 + + arm_func_start MIC_StartAutoSampling +MIC_StartAutoSampling: ; 0x020D47CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D4808 ; =MicGetResultCallback + mov r2, #0x0 + bl MIC_StartAutoSamplingAsync + ldr r1, _020D480C ; =0x021D54B0 + cmp r0, #0x0 + str r0, [r1, #0xc] + bne _020D47F4 + bl MicWaitBusy +_020D47F4: + ldr r0, _020D480C ; =0x021D54B0 + ldr r0, [r0, #0xc] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D4808: .word MicGetResultCallback +_020D480C: .word 0x021D54B0 + + arm_func_start MIC_StartAutoSamplingAsync +MIC_StartAutoSamplingAsync: ; 0x020D4810 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r0, [r7, #0x4] + mov r6, r1 + ands r0, r0, #0x1f + mov r5, r2 + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r1, [r7, #0x8] + ands r0, r1, #0x1f + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, [r7, #0xc] + cmp r0, #0x400 + addcc sp, sp, #0x4 + movcc r0, #0x2 + ldmccia sp!, {r4-r7,lr} + bxcc lr + ldr r0, [r7, #0x0] + cmp r0, #0x5 + addls pc, pc, r0, lsl #0x2 + b _020D48D8 +_020D4890: + b _020D48A8 + b _020D48B0 + b _020D48B8 + b _020D48C0 + b _020D48C8 + b _020D48D0 +_020D48A8: + mov r1, #0x0 + b _020D48E8 +_020D48B0: + mov r1, #0x1 + b _020D48E8 +_020D48B8: + mov r1, #0x2 + b _020D48E8 +_020D48C0: + mov r1, #0x3 + b _020D48E8 +_020D48C8: + mov r1, #0x5 + b _020D48E8 +_020D48D0: + mov r1, #0x7 + b _020D48E8 +_020D48D8: + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020D48E8: + ldr r0, [r7, #0x10] + cmp r0, #0x0 + orrne r0, r1, #0x10 + andne r0, r0, #0xff + andeq r0, r1, #0xff + and r4, r0, #0xff + bl OS_DisableInterrupts + ldr r1, _020D497C + ldr r2, [r1] + cmp r2, #0x0 + beq _020D4928 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4928: + mov r2, #0x1 + str r2, [r1] + bl OS_RestoreInterrupts + ldr r0, _020D497C + mov r3, r4 + str r6, [r0, #0x4] + str r5, [r0, #0x8] + ldr r1, [r7, #0x14] + str r1, [r0, #0x10] + ldr r1, [r7, #0x18] + str r1, [r0, #0x14] + ldr r0, [r7, #0x4] + ldr r1, [r7, #0x8] + ldr r2, [r7, #0xC] + bl MicStartAutoSampling + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020D497C: .word 0x021D54B0 + + arm_func_start MIC_DoSamplingAsync +MIC_DoSamplingAsync: ; 0x020D4980 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + cmp r0, #0x6 + mov r7, r1 + mov r6, r2 + mov r5, r3 + addge sp, sp, #0x4 + movge r0, #0x2 + ldmgeia sp!, {r4-r7,lr} + bxge lr + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020D49E4 +_020D49B4: + b _020D49C4 + b _020D49CC + b _020D49D4 + b _020D49DC +_020D49C4: + mov r4, #0x0 + b _020D49F4 +_020D49CC: + mov r4, #0x1 + b _020D49F4 +_020D49D4: + mov r4, #0x2 + b _020D49F4 +_020D49DC: + mov r4, #0x3 + b _020D49F4 +_020D49E4: + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020D49F4: + bl OS_DisableInterrupts + ldr r1, _020D4A58 + ldr r2, [r1] + cmp r2, #0x0 + beq _020D4A1C + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4A1C: + mov r2, #0x1 + str r2, [r1] + bl OS_RestoreInterrupts + ldr r1, _020D4A58 + mov r0, r4 + str r6, [r1, #0x4] + str r5, [r1, #0x8] + str r7, [r1, #0x18] + bl MicDoSampling + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4A58: .word 0x021D54B0 + + arm_func_start MIC_Init +MIC_Init: ; 0x020D4A5C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020D4AD8 ; =0x021D54AC + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r0, _020D4ADC ; =0x021D54B0 + mov r2, #0x0 + mov r3, #0x1 + strh r3, [r1, #0x0] + str r2, [r0, #0x0] + str r2, [r0, #0x4] + bl PXI_Init + mov r5, #0x9 + mov r4, #0x1 +_020D4AA0: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_020D4AAC: + cmp r0, #0x0 + beq _020D4AA0 + ldr r2, _020D4AE0 + mov r3, #0x0 + ldr r1, _020D4AE4 + mov r0, #0x9 + str r3, [r2] + bl PXI_SetFifoRecvCallback + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr +_020D4AD8: .word 0x021D54AC +_020D4ADC: .word 0x021D54B0 +_020D4AE0: .word 0x027FFF90 +_020D4AE4: .word MicCommonCallback diff --git a/arm9/asm/libpm.s b/arm9/asm/SPI_pm.s index 331c0fa9..adf17bbb 100644 --- a/arm9/asm/libpm.s +++ b/arm9/asm/SPI_pm.s @@ -25,22 +25,22 @@ _020D4B14: .word 0x021D54D8 arm_func_start PM_AppendPostSleepCallback PM_AppendPostSleepCallback: ; 0x020D4B18 - ldr ip, _020D4B28 ; =FUN_020D4BC4 + ldr ip, _020D4B28 ; =PMi_AppendList mov r1, r0 ldr r0, _020D4B2C ; =0x021D54E0 bx r12 .balign 4 -_020D4B28: .word FUN_020D4BC4 +_020D4B28: .word PMi_AppendList _020D4B2C: .word 0x021D54E0 arm_func_start PM_PrependPreSleepCallback PM_PrependPreSleepCallback: ; 0x020D4B30 - ldr ip, _020D4B40 ; =FUN_020D4C0C + ldr ip, _020D4B40 ; =PMi_PrependList mov r1, r0 ldr r0, _020D4B44 ; =0x021D54D8 bx r12 .balign 4 -_020D4B40: .word FUN_020D4C0C +_020D4B40: .word PMi_PrependList _020D4B44: .word 0x021D54D8 arm_func_start PMi_ExecuteList @@ -59,8 +59,8 @@ _020D4B58: ldmia sp!, {r4,lr} bx lr - arm_func_start FUN_020D4B78 -FUN_020D4B78: + arm_func_start PMi_DeleteList +PMi_DeleteList: cmp r0, #0x0 bxeq lr ldr r3, [r0] @@ -83,8 +83,8 @@ _020D4BB0: bne _020D4B90 bx lr - arm_func_start FUN_020D4BC4 -FUN_020D4BC4: ; 0x020D4BC4 + arm_func_start PMi_AppendList +PMi_AppendList: ; 0x020D4BC4 cmp r0, #0x0 bxeq lr ldr r2, [r0, #0x0] @@ -106,8 +106,8 @@ _020D4C00: str r1, [r2, #0x8] bx lr - arm_func_start FUN_020D4C0C -FUN_020D4C0C: ; 0x020D4C0C + arm_func_start PMi_PrependList +PMi_PrependList: ; 0x020D4C0C cmp r0, #0x0 ldrne r2, [r0, #0x0] strne r2, [r1, #0x8] @@ -508,23 +508,23 @@ _020D5120: arm_func_start PM_SetAmpGain PM_SetAmpGain: ; 0x020D5150 - ldr ip, _020D5164 ; =FUN_020D53DC + ldr ip, _020D5164 ; =PMi_WriteRegister mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 mov r0, #0x3 bx r12 .balign 4 -_020D5164: .word FUN_020D53DC +_020D5164: .word PMi_WriteRegister arm_func_start PM_SetAmp PM_SetAmp: ; 0x020D5168 - ldr ip, _020D517C ; =FUN_020D53DC + ldr ip, _020D517C ; =PMi_WriteRegister mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 mov r0, #0x2 bx r12 .balign 4 -_020D517C: .word FUN_020D53DC +_020D517C: .word PMi_WriteRegister arm_func_start PM_ForceToPowerOff PM_ForceToPowerOff: ; 0x020D5180 @@ -722,8 +722,8 @@ _020D53B4: .balign 4 _020D53D8: .word 0x0000FFFF - arm_func_start FUN_020D53DC -FUN_020D53DC: ; 0x020D53DC + arm_func_start PMi_WriteRegister +PMi_WriteRegister: ; 0x020D53DC stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, _020D5414 ; =PMi_DummyCallback diff --git a/arm9/asm/libspi.s b/arm9/asm/SPI_tp.s index 915bb22c..e9de5fa1 100644 --- a/arm9/asm/libspi.s +++ b/arm9/asm/SPI_tp.s @@ -1,6 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .section .text + + .text arm_func_start TP_CheckError TP_CheckError: ; 0x020D36C4 @@ -961,527 +962,3 @@ _020D43EC: _020D43FC: .word 0x021D5474 _020D4400: .word 0x027FFFAA _020D4404: .word 0x027FFFAC - - arm_func_start MicWaitBusy -MicWaitBusy: ; 0x020D4408 - ldr ip, _020D441C ; =0x021D54B0 -_020D440C: - ldr r0, [r12, #0x0] - cmp r0, #0x1 - beq _020D440C - bx lr - .balign 4 -_020D441C: .word 0x021D54B0 - - arm_func_start MicGetResultCallback -MicGetResultCallback: ; 0x020D4420 - ldr r1, _020D442C ; =0x021D54B0 - str r0, [r1, #0xc] - bx lr - .balign 4 -_020D442C: .word 0x021D54B0 - - arm_func_start MicStopAutoSampling -MicStopAutoSampling: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020D4460 ; =0x03004200 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo -_020D4448: - cmp r0, #0x0 - movge r0, #0x1 - movlt r0, #0x0 - add sp, sp, #4 - ldmfd sp!, {lr} - bx lr -_020D4460: .word 0x03004200 - - arm_func_start MicStartAutoSampling -MicStartAutoSampling: ; 0x020D4464 - stmdb sp!, {r4-r6,lr} - ldr ip, _020D4584 ; =0x02004100 - mov r6, r0 - mov r5, r1 - mov r4, r2 - orr r1, r3, r12 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo -_020D4488: - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - mov r0, r6, lsr #0x10 - orr r1, r0, #0x10000 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - ldr r1, _020D4588 - mov r0, #0x9 - and r1, r6, r1 - orr r1, r1, #0x20000 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - mov r0, r5, lsr #0x10 - orr r1, r0, #0x30000 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - ldr r1, _020D4588 - mov r0, #0x9 - and r1, r5, r1 - orr r1, r1, #0x40000 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - mov r0, r4, lsr #0x10 - orr r1, r0, #0x50000 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movlt r0, #0x0 - ldmltia sp!, {r4-r6, lr} - bxlt lr - ldr r0, _020D4588 - ldr r1, _020D458C - and r0, r4, r0 - orr r1, r0, r1 - mov r0, #0x9 - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r0, #0x1 - movlt r0, #0x0 - ldmia sp!, {r4-r6, lr} - bx lr -_020D4584: .word 0x02004100 -_020D4588: .word 0x0000FFFF -_020D458C: .word 0x01060000 - - arm_func_start MicDoSampling -MicDoSampling: ; 0x020D4590 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020D45C4 ; =0x03004000 - mov r2, #0x0 - orr r1, r0, r1 - mov r0, #0x9 - bl PXI_SendWordByFifo -_020D45AC: - cmp r0, #0x0 - movge r0, #0x1 - movlt r0, #0x0 - add sp, sp, #0x4 - ldmfd sp!, {lr} - bx lr -_020D45C4: .word 0x03004000 - - arm_func_start MicCommonCallback -MicCommonCallback: ; 0x020D45C8 - stmdb sp!, {r4,lr} - mov r4, r1 - cmp r2, #0x0 - beq _020D4610 - ldr r0, _020D4700 ; =0x021D54B0 - ldr r2, _020D4700 ; =0x021D54B0 - ldr r1, [r0, #0x0] - ldr r12, [r2, #0x4] - cmp r1, #0x0 - movne r1, #0x0 - strne r1, [r0, #0x0] - cmp r12, #0x0 - beq _020D4610 - ldr r1, [r2, #0x8] - mov r3, #0x0 - mov r0, #0x6 - str r3, [r2, #0x4] - blx r12 -_020D4610: - and r0, r4, #0xff - mov r1, r0, lsl #0x10 - and r2, r4, #0x7f00 - mov r0, r2, lsl #0x8 - mov r1, r1, lsr #0x10 - cmp r1, #0x4 - mov r2, r0, lsr #0x10 - addls pc, pc, r1, lsl #0x2 - b _020D4670 -_020D4634: - b _020D4648 - b _020D4650 - b _020D4658 - b _020D4660 - b _020D4668 -_020D4648: - mov r0, #0x0 - b _020D4674 -_020D4650: - mov r0, #0x4 - b _020D4674 -_020D4658: - mov r0, #0x2 - b _020D4674 -_020D4660: - mov r0, #0x5 - b _020D4674 -_020D4668: - mov r0, #0x1 - b _020D4674 -_020D4670: - mov r0, #0x6 -_020D4674: - cmp r2, #0x51 - bne _020D46A0 - ldr r1, _020D4700 ; =0x021D54B0 - ldr r2, [r1, #0x10] - cmp r2, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, [r1, #0x14] - blx r2 - ldmia sp!, {r4,lr} - bx lr -_020D46A0: - cmp r2, #0x40 - bne _020D46C0 - ldr r1, _020D4700 ; =0x021D54B0 - ldr r2, [r1, #0x18] - cmp r2, #0x0 - ldrne r1, _020D4704 ; =0x027FFF94 - ldrneh r1, [r1, #0x0] - strneh r1, [r2, #0x0] -_020D46C0: - ldr r1, _020D4700 ; =0x021D54B0 - ldr r2, [r1, #0x0] - cmp r2, #0x0 - movne r2, #0x0 - strne r2, [r1, #0x0] - ldr r2, _020D4700 ; =0x021D54B0 - ldr r4, [r2, #0x4] - cmp r4, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, [r2, #0x8] - mov r3, #0x0 - str r3, [r2, #0x4] - blx r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020D4700: .word 0x021D54B0 -_020D4704: .word 0x027FFF94 - - arm_func_start MIC_GetLastSamplingAddress -MIC_GetLastSamplingAddress: ; 0x020D4708 - ldr r0, _020D4714 ; =0x027FFF90 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020D4714: .word 0x027FFF90 - - arm_func_start MIC_StopAutoSampling -MIC_StopAutoSampling: ; 0x020D4718 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020D4754 ; =MicGetResultCallback - mov r1, #0x0 - bl MIC_StopAutoSamplingAsync - ldr r1, _020D4758 ; =0x021D54B0 - cmp r0, #0x0 - str r0, [r1, #0xc] - bne _020D4740 - bl MicWaitBusy -_020D4740: - ldr r0, _020D4758 ; =0x021D54B0 - ldr r0, [r0, #0xc] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D4754: .word MicGetResultCallback -_020D4758: .word 0x021D54B0 - - arm_func_start MIC_StopAutoSamplingAsync -MIC_StopAutoSamplingAsync: ; 0x020D475C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl OS_DisableInterrupts - ldr r1, _020D47C8 ; =0x021D54B0 - ldr r2, [r1, #0x0] - cmp r2, #0x0 - beq _020D4794 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r5,lr} - bx lr -_020D4794: - mov r2, #0x1 - str r2, [r1, #0x0] - bl OS_RestoreInterrupts - ldr r0, _020D47C8 ; =0x021D54B0 - str r5, [r0, #0x4] - str r4, [r0, #0x8] - bl MicStopAutoSampling -_020D47B0: - cmp r0, #0x0 - movne r0, #0x0 - moveq r0, #0x3 - add sp, sp, #0x4 - ldmia sp!, {r4-r5, lr} - bx lr -_020D47C8: .word 0x021D54B0 - - arm_func_start MIC_StartAutoSampling -MIC_StartAutoSampling: ; 0x020D47CC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020D4808 ; =MicGetResultCallback - mov r2, #0x0 - bl MIC_StartAutoSamplingAsync - ldr r1, _020D480C ; =0x021D54B0 - cmp r0, #0x0 - str r0, [r1, #0xc] - bne _020D47F4 - bl MicWaitBusy -_020D47F4: - ldr r0, _020D480C ; =0x021D54B0 - ldr r0, [r0, #0xc] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D4808: .word MicGetResultCallback -_020D480C: .word 0x021D54B0 - - arm_func_start MIC_StartAutoSamplingAsync -MIC_StartAutoSamplingAsync: ; 0x020D4810 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r0, [r7, #0x4] - mov r6, r1 - ands r0, r0, #0x1f - mov r5, r2 - addne sp, sp, #0x4 - movne r0, #0x2 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldr r1, [r7, #0x8] - ands r0, r1, #0x1f - addne sp, sp, #0x4 - movne r0, #0x2 - ldmneia sp!, {r4-r7,lr} - bxne lr - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x2 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, [r7, #0xc] - cmp r0, #0x400 - addcc sp, sp, #0x4 - movcc r0, #0x2 - ldmccia sp!, {r4-r7,lr} - bxcc lr - ldr r0, [r7, #0x0] - cmp r0, #0x5 - addls pc, pc, r0, lsl #0x2 - b _020D48D8 -_020D4890: - b _020D48A8 - b _020D48B0 - b _020D48B8 - b _020D48C0 - b _020D48C8 - b _020D48D0 -_020D48A8: - mov r1, #0x0 - b _020D48E8 -_020D48B0: - mov r1, #0x1 - b _020D48E8 -_020D48B8: - mov r1, #0x2 - b _020D48E8 -_020D48C0: - mov r1, #0x3 - b _020D48E8 -_020D48C8: - mov r1, #0x5 - b _020D48E8 -_020D48D0: - mov r1, #0x7 - b _020D48E8 -_020D48D8: - add sp, sp, #0x4 - mov r0, #0x2 - ldmia sp!, {r4-r7,lr} - bx lr -_020D48E8: - ldr r0, [r7, #0x10] - cmp r0, #0x0 - orrne r0, r1, #0x10 - andne r0, r0, #0xff - andeq r0, r1, #0xff - and r4, r0, #0xff - bl OS_DisableInterrupts - ldr r1, _020D497C - ldr r2, [r1] - cmp r2, #0x0 - beq _020D4928 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r7,lr} - bx lr -_020D4928: - mov r2, #0x1 - str r2, [r1] - bl OS_RestoreInterrupts - ldr r0, _020D497C - mov r3, r4 - str r6, [r0, #0x4] - str r5, [r0, #0x8] - ldr r1, [r7, #0x14] - str r1, [r0, #0x10] - ldr r1, [r7, #0x18] - str r1, [r0, #0x14] - ldr r0, [r7, #0x4] - ldr r1, [r7, #0x8] - ldr r2, [r7, #0xC] - bl MicStartAutoSampling - cmp r0, #0x0 - movne r0, #0x0 - moveq r0, #0x3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_020D497C: .word 0x021D54B0 - - arm_func_start MIC_DoSamplingAsync -MIC_DoSamplingAsync: ; 0x020D4980 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - cmp r0, #0x6 - mov r7, r1 - mov r6, r2 - mov r5, r3 - addge sp, sp, #0x4 - movge r0, #0x2 - ldmgeia sp!, {r4-r7,lr} - bxge lr - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020D49E4 -_020D49B4: - b _020D49C4 - b _020D49CC - b _020D49D4 - b _020D49DC -_020D49C4: - mov r4, #0x0 - b _020D49F4 -_020D49CC: - mov r4, #0x1 - b _020D49F4 -_020D49D4: - mov r4, #0x2 - b _020D49F4 -_020D49DC: - mov r4, #0x3 - b _020D49F4 -_020D49E4: - add sp, sp, #0x4 - mov r0, #0x2 - ldmia sp!, {r4-r7,lr} - bx lr -_020D49F4: - bl OS_DisableInterrupts - ldr r1, _020D4A58 - ldr r2, [r1] - cmp r2, #0x0 - beq _020D4A1C - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r7,lr} - bx lr -_020D4A1C: - mov r2, #0x1 - str r2, [r1] - bl OS_RestoreInterrupts - ldr r1, _020D4A58 - mov r0, r4 - str r6, [r1, #0x4] - str r5, [r1, #0x8] - str r7, [r1, #0x18] - bl MicDoSampling - cmp r0, #0x0 - movne r0, #0x0 - moveq r0, #0x3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_020D4A58: .word 0x021D54B0 - - arm_func_start MIC_Init -MIC_Init: ; 0x020D4A5C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020D4AD8 ; =0x021D54AC - ldrh r0, [r1, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,lr} - bxne lr - ldr r0, _020D4ADC ; =0x021D54B0 - mov r2, #0x0 - mov r3, #0x1 - strh r3, [r1, #0x0] - str r2, [r0, #0x0] - str r2, [r0, #0x4] - bl PXI_Init - mov r5, #0x9 - mov r4, #0x1 -_020D4AA0: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady -_020D4AAC: - cmp r0, #0x0 - beq _020D4AA0 - ldr r2, _020D4AE0 - mov r3, #0x0 - ldr r1, _020D4AE4 - mov r0, #0x9 - str r3, [r2] - bl PXI_SetFifoRecvCallback - add sp, sp, #0x4 - ldmia sp!, {r4-r5, lr} - bx lr -_020D4AD8: .word 0x021D54AC -_020D4ADC: .word 0x021D54B0 -_020D4AE0: .word 0x027FFF90 -_020D4AE4: .word MicCommonCallback |