diff options
Diffstat (limited to 'arm7/asm/wram2.s')
-rw-r--r-- | arm7/asm/wram2.s | 2888 |
1 files changed, 0 insertions, 2888 deletions
diff --git a/arm7/asm/wram2.s b/arm7/asm/wram2.s index 57fd39e1..513bba1a 100644 --- a/arm7/asm/wram2.s +++ b/arm7/asm/wram2.s @@ -3,2894 +3,6 @@ .section .text - arm_func_start FUN_03801150 -FUN_03801150: ;@ 0x03801150 - stmfd sp!, {lr} - sub sp, sp, #4 - cmp r2, #0 - bne _038011B4 - sub r0, r0, #4 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _038011B4 - b _038011AC - b _038011B4 - b _03801188 - b _038011B4 - b _038011A0 - b _03801194 -_03801188: - mov r0, r1 - bl TP_AnalyzeCommand - b _038011B4 -_03801194: - mov r0, r1 - bl MIC_AnalyzeCommand - b _038011B4 -_038011A0: - mov r0, r1 - bl PM_AnalyzeCommand - b _038011B4 -_038011AC: - mov r0, r1 - bl NVRAM_AnalyzeCommand -_038011B4: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_038011C0 -FUN_038011C0: ;@ 0x038011C0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r6, _03801228 ;@ =_03809C5C - add r5, sp, #0 - mov r4, #1 -_038011D4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl OS_ReceiveMessage - ldr r0, [sp] - ldr r1, [r0] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _038011D4 - b _03801208 - b _03801220 - b _03801210 - b _03801218 -_03801208: - bl TP_ExecuteProcess - b _038011D4 -_03801210: - bl MIC_ExecuteProcess - b _038011D4 -_03801218: - bl PM_ExecuteProcess - b _038011D4 -_03801220: - bl NVRAM_ExecuteProcess - b _038011D4 -_03801228: .word _03809C5C - - arm_func_start SPIi_CheckEntry -SPIi_CheckEntry: ;@ 0x0380122C - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r0, _03801250 ;@ =_03809C5C - add r1, sp, #0 - mov r2, #0 - bl OS_ReadMessage - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03801250: .word _03809C5C - - arm_func_start SPIi_SetEntry -SPIi_SetEntry: ;@ 0x03801254 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r1 - ldrh r0, [sp, #24] - cmp r0, #4 - movhi r0, #0 - bhi _0380130C - bl OS_DisableInterrupts - ldr r2, _03801318 ;@ =_038099B0 - ldr r3, [r2, #1164] ;@ 0x48c - mov r1, #24 - mul ip, r3, r1 - ldr r3, _0380131C ;@ =_03809CBC - str r5, [r3, ip] - ldr r3, [r2, #1164] ;@ 0x48c - mul r5, r3, r1 - ldr r3, _03801320 ;@ =_03809CC0 - str r4, [r3, r5] - add r3, sp, #24 - bic r3, r3, #3 - add r6, r3, #4 - mov lr, #0 - ldrh ip, [sp, #24] - b _038012D4 -_038012B8: - add r6, r6, #4 - ldr r5, [r6, #-4] - ldr r4, [r2, #1164] ;@ 0x48c - mla r3, r4, r1, r2 - add r3, r3, lr, lsl #2 - str r5, [r3, #788] ;@ 0x314 - add lr, lr, #1 -_038012D4: - cmp lr, ip - blt _038012B8 - ldr r1, _03801318 ;@ =_038099B0 - ldr r4, [r1, #1164] ;@ 0x48c - add r2, r4, #1 - and r2, r2, #15 - str r2, [r1, #1164] ;@ 0x48c - bl OS_RestoreInterrupts - ldr r0, _03801324 ;@ =_03809C5C - ldr r2, _0380131C ;@ =_03809CBC - mov r1, #24 - mla r1, r4, r1, r2 - mov r2, #0 - bl OS_SendMessage -_0380130C: - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #16 - bx lr -_03801318: .word _038099B0 -_0380131C: .word _03809CBC -_03801320: .word _03809CC0 -_03801324: .word _03809C5C - - arm_func_start SPIi_ReleaseException -SPIi_ReleaseException: ;@ 0x03801328 - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r1, _03801364 ;@ =_038099B0 - ldr r2, [r1, #4] - cmp r2, r0 - bne _03801358 - mov r0, #5 - str r0, [r1, #4] - mov r0, #0 - str r0, [r1] - ldr r0, _03801368 ;@ =_03809E40 - bl OS_WakeupThread -_03801358: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03801364: .word _038099B0 -_03801368: .word _03809E40 - - arm_func_start SPIi_GetException -SPIi_GetException: ;@ 0x0380136C - mov r2, #1 - ldr r1, _03801380 ;@ =_038099B0 - str r2, [r1] - str r0, [r1, #4] - bx lr -_03801380: .word _038099B0 - - arm_func_start SPIi_CheckException -SPIi_CheckException: ;@ 0x03801384 - ldr r0, _0380139C ;@ =_038099B0 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr -_0380139C: .word _038099B0 - - arm_func_start SPIi_ReturnResult -SPIi_ReturnResult: ;@ 0x038013A0 - stmdb sp!, {r4, r5, r6, lr} - and r2, r0, #112 ;@ 0x70 - cmp r2, #48 ;@ 0x30 - bgt _038013E0 - cmp r2, #48 ;@ 0x30 - bge _03801434 - cmp r2, #16 - bgt _038013D4 - cmp r2, #16 - bge _0380141C - cmp r2, #0 - beq _0380141C - b _03801438 -_038013D4: - cmp r2, #32 - beq _03801434 - b _03801438 -_038013E0: - cmp r2, #80 ;@ 0x50 - bgt _038013FC - cmp r2, #80 ;@ 0x50 - bge _03801424 - cmp r2, #64 ;@ 0x40 - beq _03801424 - b _03801438 -_038013FC: - cmp r2, #96 ;@ 0x60 - bgt _03801410 - cmp r2, #96 ;@ 0x60 - beq _0380142C - b _03801438 -_03801410: - cmp r2, #112 ;@ 0x70 - beq _0380142C - b _03801438 -_0380141C: - mov r4, #6 - b _03801438 -_03801424: - mov r4, #9 - b _03801438 -_0380142C: - mov r4, #8 - b _03801438 -_03801434: - mov r4, #4 -_03801438: - and r0, r0, #255 ;@ 0xff - orr r0, r0, #128 ;@ 0x80 - mov r0, r0, lsl #8 - orr r2, r0, #50331648 ;@ 0x3000000 - and r0, r1, #255 ;@ 0xff - orr r6, r2, r0 - mov r5, #0 -_03801454: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03801454 - ldmia sp!, {r4, r5, r6, lr} - bx lr - - arm_func_start SPI_Unlock -SPI_Unlock: ;@ 0x03801474 - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r1, _038014D8 ;@ =_038099B0 - ldr r2, [r1] - cmp r2, #0 - beq _038014CC - ldr r2, [r1, #4] - cmp r2, #4 - bne _038014CC - ldr r1, [r1, #1176] ;@ 0x498 - cmp r1, r0 - bne _038014CC - bl OS_DisableInterrupts - mov r2, #5 - ldr r1, _038014D8 ;@ =_038099B0 - str r2, [r1, #4] - mov r2, #0 - str r2, [r1] - str r2, [r1, #1176] ;@ 0x498 - bl OS_RestoreInterrupts - ldr r0, _038014DC ;@ =_03809E40 - bl OS_WakeupThread -_038014CC: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_038014D8: .word _038099B0 -_038014DC: .word _03809E40 - - arm_func_start SPI_Lock -SPI_Lock: ;@ 0x038014E0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r7, r0 - ldr r5, _0380153C ;@ =_03809E40 - ldr r4, _03801540 ;@ =_038099B0 -_038014F4: - bl OS_DisableInterrupts - mov r6, r0 - ldr r1, [r4] - cmp r1, #0 - beq _03801518 - bl OS_RestoreInterrupts - mov r0, r5 - bl OS_SleepThread - b _038014F4 -_03801518: - mov r0, #4 - bl SPIi_GetException - ldr r0, _03801540 ;@ =_038099B0 - str r7, [r0, #1176] ;@ 0x498 - mov r0, r6 - bl OS_RestoreInterrupts - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_0380153C: .word _03809E40 -_03801540: .word _038099B0 - - arm_func_start SPI_Init -SPI_Init: ;@ 0x03801544 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r0, _03801640 ;@ =_038099AC - ldrh r1, [r0] - cmp r1, #0 - bne _03801634 - mov r1, #1 - strh r1, [r0] - mov r1, #0 - ldr r0, _03801644 ;@ =_038099B0 - str r1, [r0] - mov r1, #5 - str r1, [r0, #4] - bl TP_Init - bl NVRAM_Init - bl MIC_Init - bl PM_Init - bl PXI_Init - mov r0, #6 - ldr r1, _03801648 ;@ =FUN_03801150 - bl PXI_SetFifoRecvCallback - mov r0, #9 - ldr r1, _03801648 ;@ =FUN_03801150 - bl PXI_SetFifoRecvCallback - mov r0, #8 - ldr r1, _03801648 ;@ =FUN_03801150 - bl PXI_SetFifoRecvCallback - mov r0, #4 - ldr r1, _03801648 ;@ =FUN_03801150 - bl PXI_SetFifoRecvCallback - ldr r0, _0380164C ;@ =_03809C5C - ldr r1, _03801650 ;@ =_03809C7C - mov r2, #16 - bl OS_InitMessageQueue - mov r8, #0 - ldr r7, _03801654 ;@ =_03809CBC - mov r6, r8 - mov r5, #24 -_038015E0: - mla r0, r8, r5, r7 - mov r1, r6 - mov r2, r5 - bl MI_CpuFill8 - add r8, r8, #1 - cmp r8, #16 - blt _038015E0 - mov r2, #0 - ldr r0, _03801644 ;@ =_038099B0 - str r2, [r0, #1164] ;@ 0x48c - str r2, [r0, #1172] ;@ 0x494 - str r2, [r0, #1168] ;@ 0x490 - mov r0, #512 ;@ 0x200 - str r0, [sp] - str r4, [sp, #4] - ldr r0, _03801658 ;@ =_038099B8 - ldr r1, _0380165C ;@ =FUN_038011C0 - ldr r3, _0380164C ;@ =_03809C5C - bl OS_CreateThread - ldr r0, _03801658 ;@ =_038099B8 - bl OS_WakeupThreadDirect -_03801634: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr -_03801640: .word _038099AC -_03801644: .word _038099B0 -_03801648: .word FUN_03801150 -_0380164C: .word _03809C5C -_03801650: .word _03809C7C -_03801654: .word _03809CBC -_03801658: .word _038099B8 -_0380165C: .word FUN_038011C0 - - arm_func_start FUN_03801660 -FUN_03801660: ;@ 0x03801660 - stmfd sp!, {lr} - sub sp, sp, #4 - cmp r0, #0 - bne _03801680 - mov r0, #3 - mov r1, #2 - bl SPIi_ReturnResult - b _03801698 -_03801680: - ldr r1, _038016A4 ;@ =_03809E54 - str r0, [r1, #36] ;@ 0x24 - str r0, [r1, #40] ;@ 0x28 - mov r0, #3 - mov r1, #0 - bl SPIi_ReturnResult -_03801698: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_038016A4: .word _03809E54 - - arm_func_start FUN_038016A8 -FUN_038016A8: ;@ 0x038016A8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - mov r0, #0 - mov r1, #16 - mov r2, #1 - mov r3, r4 - bl SPIi_SetEntry - cmp r0, #0 - bne _0380170C - ldr r0, [sp] - bic r0, r0, #100663296 ;@ 0x6000000 - orr r0, r0, #100663296 ;@ 0x6000000 - str r0, [sp] - ldrh r1, [sp] - ldr r0, _03801718 ;@ =0x027FFFAA - strh r1, [r0] - ldrh r1, [sp, #2] - ldr r0, _0380171C ;@ =0x027FFFAC - strh r1, [r0] - mov r0, #16 - and r1, r4, #255 ;@ 0xff - mov r1, r1, lsl #16 - mov r1, r1, lsr #16 - bl SPIi_ReturnResult -_0380170C: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr -_03801718: .word 0x027FFFAA -_0380171C: .word 0x027FFFAC - - arm_func_start TP_ExecuteProcess -TP_ExecuteProcess: ;@ 0x03801720 - stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - sub sp, sp, #16 - mov sl, r0 - ldr r1, [sl, #4] - cmp r1, #2 - bhi _03801754 - cmp r1, #0 - beq _0380176C - cmp r1, #1 - beq _03801834 - cmp r1, #2 - beq _038018E0 - b _0380192C -_03801754: - cmp r1, #16 - bne _0380192C - ldr r0, _03801938 ;@ =_03809E54 - ldr r0, [r0, #32] - cmp r0, #2 - bne _0380192C -_0380176C: - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #0 - bl SPIi_CheckException - cmp r0, #0 - bne _038017A4 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, [sl, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #4 - bl SPIi_ReturnResult - b _0380192C -_038017A4: - mov r0, #0 - bl SPIi_GetException - mov r0, r4 - bl OS_RestoreInterrupts - add r0, sp, #8 - ldr r1, _03801938 ;@ =_03809E54 - ldr r1, [r1, #36] ;@ 0x24 - add r2, sp, #4 - bl TP_ExecSampling - add r0, sp, #8 - ldrh r1, [sp, #4] - bl FUN_03801954 - ldrh r1, [sp, #8] - ldr r0, _0380193C ;@ =0x027FFFAA - strh r1, [r0] - ldrh r1, [sp, #10] - ldr r0, _03801940 ;@ =0x027FFFAC - strh r1, [r0] - ldr r0, [sl, #4] - cmp r0, #0 - bne _0380180C - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #0 - bl SPIi_ReturnResult - b _03801828 -_0380180C: - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - ldr r1, [sl, #8] - and r1, r1, #255 ;@ 0xff - mov r1, r1, lsl #16 - mov r1, r1, lsr #16 - bl SPIi_ReturnResult -_03801828: - mov r0, #0 - bl SPIi_ReleaseException - b _0380192C -_03801834: - ldr r7, _03801938 ;@ =_03809E54 - ldr r0, [r7, #32] - cmp r0, #1 - bne _038018CC - mov r9, #0 - ldr r8, _03801944 ;@ =0x00000107 - ldr r6, _03801948 ;@ =_03809E80 - mov r5, #10 - ldr r4, _0380194C ;@ =FUN_038016A8 - b _0380189C -_0380185C: - mul r0, r9, r8 - bl _u32_div_f - ldr r1, [sl, #12] - add r0, r1, r0 - mov r1, r8 - bl _u32_div_f - add r2, r7, r9, lsl #1 - strh r1, [r2, #204] ;@ 0xcc - str r9, [sp] - mov r0, #40 ;@ 0x28 - mla r0, r9, r0, r6 - ldrsh r1, [r2, #204] ;@ 0xcc - mov r2, r5 - mov r3, r4 - bl OS_SetPeriodicVAlarm - add r9, r9, #1 -_0380189C: - ldr r1, [sl, #8] - cmp r9, r1 - bcc _0380185C - ldr r0, [sl, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #0 - bl SPIi_ReturnResult - mov r1, #2 - ldr r0, _03801938 ;@ =_03809E54 - str r1, [r0, #32] - b _0380192C -_038018CC: - mov r0, r1, lsl #16 - mov r0, r0, lsr #16 - mov r1, #3 - bl SPIi_ReturnResult - b _0380192C -_038018E0: - ldr r0, _03801938 ;@ =_03809E54 - ldr r0, [r0, #32] - cmp r0, #3 - bne _0380191C - ldr r0, _03801950 ;@ =0x54505641 - bl OS_CancelVAlarms - ldr r0, [sl, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #0 - bl SPIi_ReturnResult - mov r1, #0 - ldr r0, _03801938 ;@ =_03809E54 - str r1, [r0, #32] - b _0380192C -_0380191C: - mov r0, r1, lsl #16 - mov r0, r0, lsr #16 - mov r1, #3 - bl SPIi_ReturnResult -_0380192C: - add sp, sp, #16 - ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - bx lr -_03801938: .word _03809E54 -_0380193C: .word 0x027FFFAA -_03801940: .word 0x027FFFAC -_03801944: .word 0x00000107 -_03801948: .word _03809E80 -_0380194C: .word FUN_038016A8 -_03801950: .word 0x54505641 - - arm_func_start FUN_03801954 -FUN_03801954: ;@ 0x03801954 - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r0, [r0] - mov r2, r0, lsl #7 - movs r2, r2, lsr #31 - bne _03801984 - mov r1, #0 - ldr r0, _03801A3C ;@ =_03809E50 - strb r1, [r0] - ldr r0, _03801A40 ;@ =_03809E4C - strb r1, [r0] - b _03801A30 -_03801984: - mov r0, r0, lsl #5 - movs r0, r0, lsr #30 - beq _038019D4 - mov r2, #0 - ldr r0, _03801A40 ;@ =_03809E4C - strb r2, [r0] - ldr r0, _03801A3C ;@ =_03809E50 - ldrb r1, [r0] - add r1, r1, #1 - strb r1, [r0] - ldrb r1, [r0] - cmp r1, #4 - bcc _03801A30 - strb r2, [r0] - ldr r0, _03801A44 ;@ =_03809E54 - ldr r1, [r0, #36] ;@ 0x24 - cmp r1, #35 ;@ 0x23 - addlt r1, r1, #1 - strlt r1, [r0, #36] ;@ 0x24 - b _03801A30 -_038019D4: - mov lr, #0 - ldr r3, _03801A3C ;@ =_03809E50 - strb lr, [r3] - ldr r2, _03801A44 ;@ =_03809E54 - ldr ip, [r2, #36] ;@ 0x24 - cmp r1, ip, asr #1 - ldrge r0, _03801A40 ;@ =_03809E4C - strgeb lr, [r0] - bge _03801A30 - ldr r0, _03801A40 ;@ =_03809E4C - ldrb r1, [r0] - add r1, r1, #1 - strb r1, [r0] - ldrb r1, [r0] - cmp r1, #4 - bcc _03801A30 - strb lr, [r0] - ldr r0, [r2, #40] ;@ 0x28 - cmp ip, r0 - subgt r0, ip, #1 - strgt r0, [r2, #36] ;@ 0x24 - movgt r0, #3 - strgtb r0, [r3] -_03801A30: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03801A3C: .word _03809E50 -_03801A40: .word _03809E4C -_03801A44: .word _03809E54 - - arm_func_start TP_AnalyzeCommand -TP_AnalyzeCommand: ;@ 0x03801A48 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ands r1, r0, #33554432 ;@ 0x2000000 - beq _03801A78 - mov r4, #0 - mov r3, r4 - ldr r1, _03801C00 ;@ =_03809E54 -_03801A64: - mov r2, r4, lsl #1 - strh r3, [r1, r2] - add r4, r4, #1 - cmp r4, #16 - blt _03801A64 -_03801A78: - and r1, r0, #983040 ;@ 0xf0000 - mov r1, r1, lsr #16 - mov r1, r1, lsl #1 - ldr r2, _03801C00 ;@ =_03809E54 - strh r0, [r2, r1] - ands r0, r0, #16777216 ;@ 0x1000000 - beq _03801BF4 - ldrh r1, [r2] - and r0, r1, #65280 ;@ 0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #16 - cmp r4, #3 - addls pc, pc, r4, lsl #2 - b _03801BE8 - b _03801AD4 - b _03801AFC - b _03801B98 - b _03801AC0 -_03801AC0: - and r0, r1, #255 ;@ 0xff - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - bl FUN_03801660 - b _03801BF4 -_03801AD4: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SPIi_SetEntry - cmp r0, #0 - bne _03801BF4 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801BF4 -_03801AFC: - ldr r0, [r2, #32] - cmp r0, #0 - beq _03801B18 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _03801BF4 -_03801B18: - and r0, r1, #255 ;@ 0xff - mov r0, r0, lsl #16 - movs r3, r0, lsr #16 - beq _03801B30 - cmp r3, #4 - bls _03801B40 -_03801B30: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03801BF4 -_03801B40: - ldrh r1, [r2, #2] - ldr r0, _03801C04 ;@ =0x00000107 - cmp r1, r0 - bcc _03801B60 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03801BF4 -_03801B60: - str r1, [sp] - mov r0, #0 - mov r1, r4 - mov r2, #2 - bl SPIi_SetEntry - cmp r0, #0 - movne r1, #1 - ldrne r0, _03801C00 ;@ =_03809E54 - strne r1, [r0, #32] - bne _03801BF4 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801BF4 -_03801B98: - ldr r0, [r2, #32] - cmp r0, #2 - beq _03801BB4 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _03801BF4 -_03801BB4: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SPIi_SetEntry - cmp r0, #0 - movne r1, #3 - ldrne r0, _03801C00 ;@ =_03809E54 - strne r1, [r0, #32] - bne _03801BF4 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801BF4 -_03801BE8: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_03801BF4: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr -_03801C00: .word _03809E54 -_03801C04: .word 0x00000107 - - arm_func_start TP_Init -TP_Init: ;@ 0x03801C08 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r3, #0 - ldr r0, _03801CFC ;@ =_03809E54 - str r3, [r0, #32] - mov r1, #20 - str r1, [r0, #36] ;@ 0x24 - str r1, [r0, #40] ;@ 0x28 - mov r2, r3 -_03801C28: - mov r1, r3, lsl #1 - strh r2, [r0, r1] - add r3, r3, #1 - cmp r3, #16 - blt _03801C28 - bl OS_IsVAlarmAvailable - cmp r0, #0 - bne _03801C4C - bl OS_InitVAlarm -_03801C4C: - mov r7, #0 - ldr r6, _03801D00 ;@ =_03809E80 - ldr r5, _03801D04 ;@ =0x54505641 - mov r4, #40 ;@ 0x28 -_03801C5C: - mla r8, r7, r4, r6 - mov r0, r8 - bl OS_CreateVAlarm - mov r0, r8 - mov r1, r5 - bl OS_SetVAlarmTag - add r7, r7, #1 - cmp r7, #4 - blt _03801C5C - ldr r1, _03801D08 ;@ =0x040001C0 -_03801C84: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03801C84 - ldr r0, _03801D0C ;@ =0x00008A01 - strh r0, [r1] - mov r1, #132 ;@ 0x84 - ldr r0, _03801D10 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03801D08 ;@ =0x040001C0 -_03801CA8: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03801CA8 - mov r1, #0 - ldr r0, _03801D10 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03801D08 ;@ =0x040001C0 -_03801CC4: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03801CC4 - ldr r0, _03801D14 ;@ =0x00008201 - strh r0, [r1] - mov r1, #0 - ldr r0, _03801D10 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03801D08 ;@ =0x040001C0 -_03801CE8: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03801CE8 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr -_03801CFC: .word _03809E54 -_03801D00: .word _03809E80 -_03801D04: .word 0x54505641 -_03801D08: .word 0x040001C0 -_03801D0C: .word 0x00008A01 -_03801D10: .word 0x040001C2 -_03801D14: .word 0x00008201 - - arm_func_start TP_ExecSampling -TP_ExecSampling: ;@ 0x03801D18 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #12 - mov r7, r0 - movs r6, r1 - mov r5, r2 - mov r0, #0 - strh r0, [r5] - rsbmi r6, r6, #0 - bl FUN_03802160 - movs r4, r0 - bne _03801D94 - ldr r1, [r7] - mov r0, #4096 ;@ 0x1000 - rsb r0, r0, #0 - and r0, r1, r0 - str r0, [r7] - ldr r1, [r7] - ldr r0, _03801F4C ;@ =0xFF000FFF - and r0, r1, r0 - str r0, [r7] - ldr r0, [r7] - bic r0, r0, #16777216 ;@ 0x1000000 - str r0, [r7] - ldr r0, [r7] - bic r0, r0, #100663296 ;@ 0x6000000 - orr r0, r0, #100663296 ;@ 0x6000000 - str r0, [r7] - mov r1, #0 - ldr r0, _03801F50 ;@ =_03809F28 - strh r1, [r0] - b _03801F40 -_03801D94: - add r0, sp, #0 - mov r1, r6 - mov r2, #0 - add r3, sp, #2 - bl FUN_03801F68 - ldr r1, [r7] - bic r1, r1, #100663296 ;@ 0x6000000 - and r0, r0, #3 - orr r0, r1, r0, lsl #25 - str r0, [r7] - ldr r1, [r7] - mov r0, #4096 ;@ 0x1000 - rsb r0, r0, #0 - and r2, r1, r0 - ldrh r1, [sp] - ldr r0, _03801F54 ;@ =0x00000FFF - and r0, r1, r0 - orr r0, r2, r0 - str r0, [r7] - add r0, sp, #0 - mov r1, r6 - mov r2, #1 - add r3, sp, #4 - bl FUN_03801F68 - cmp r0, #2 - bne _03801E1C - ldr r0, [r7] - bic r1, r0, #100663296 ;@ 0x6000000 - mov r0, r0, lsl #5 - mov r0, r0, lsr #30 - orr r0, r0, #2 - and r0, r0, #3 - orr r0, r1, r0, lsl #25 - str r0, [r7] -_03801E1C: - ldr r1, [r7] - ldr r0, _03801F4C ;@ =0xFF000FFF - and r2, r1, r0 - ldrh r1, [sp] - ldr r0, _03801F54 ;@ =0x00000FFF - and r0, r1, r0 - orr r0, r2, r0, lsl #12 - str r0, [r7] - ldr r0, _03801F58 ;@ =0x00008A01 - ldr r3, _03801F5C ;@ =0x040001C0 - strh r0, [r3] - mov r6, #0 - mov r2, r6 - ldr r1, _03801F60 ;@ =0x040001C2 -_03801E54: - strh r2, [r1] -_03801E58: - ldrh r0, [r3] - ands r0, r0, #128 ;@ 0x80 - bne _03801E58 - add r6, r6, #1 - cmp r6, #12 - blt _03801E54 - ldr r0, _03801F64 ;@ =0x00008201 - strh r0, [r3] - mov r1, #0 - ldr r0, _03801F60 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03801F5C ;@ =0x040001C0 -_03801E88: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03801E88 - cmp r4, #2 - ldreq r0, [r7] - biceq r0, r0, #100663296 ;@ 0x6000000 - orreq r0, r0, #100663296 ;@ 0x6000000 - streq r0, [r7] - bl FUN_03802160 - cmp r0, #0 - beq _03801F20 - cmp r0, #1 - beq _03801EF0 - cmp r0, #2 - bne _03801F3C - ldr r0, [r7] - orr r0, r0, #16777216 ;@ 0x1000000 - str r0, [r7] - ldr r0, [r7] - bic r0, r0, #100663296 ;@ 0x6000000 - orr r0, r0, #100663296 ;@ 0x6000000 - str r0, [r7] - mov r1, #0 - ldr r0, _03801F50 ;@ =_03809F28 - strh r1, [r0] - b _03801F40 -_03801EF0: - ldr r0, [r7] - orr r0, r0, #16777216 ;@ 0x1000000 - str r0, [r7] - mov r1, #1 - ldr r0, _03801F50 ;@ =_03809F28 - strh r1, [r0] - ldrh r0, [sp, #4] - ldrh r1, [sp, #2] - cmp r1, r0 - movcc r1, r0 - strh r1, [r5] - b _03801F40 -_03801F20: - ldr r0, [r7] - bic r0, r0, #16777216 ;@ 0x1000000 - str r0, [r7] - mov r1, #0 - ldr r0, _03801F50 ;@ =_03809F28 - strh r1, [r0] - b _03801F40 -_03801F3C: - bl OS_Terminate -_03801F40: - add sp, sp, #12 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_03801F4C: .word 0xFF000FFF -_03801F50: .word _03809F28 -_03801F54: .word 0x00000FFF -_03801F58: .word 0x00008A01 -_03801F5C: .word 0x040001C0 -_03801F60: .word 0x040001C2 -_03801F64: .word 0x00008201 - - arm_func_start FUN_03801F68 -FUN_03801F68: ;@ 0x03801F68 - stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - sub sp, sp, #24 - cmp r2, #0 - moveq r5, #209 ;@ 0xd1 - moveq r6, #1 - movne r5, #145 ;@ 0x91 - movne r6, #2 -_03801F84: - ldr r4, _0380214C ;@ =0x040001C0 - ldrh r2, [r4] - ands r2, r2, #128 ;@ 0x80 - bne _03801F84 - ldr r2, _03802150 ;@ =0x00008A01 - strh r2, [r4] - and r5, r5, #255 ;@ 0xff - ldr r2, _03802154 ;@ =0x040001C2 - strh r5, [r2] -_03801FA8: - ldrh r2, [r4] - ands r2, r2, #128 ;@ 0x80 - bne _03801FA8 - mov r7, #0 - ldr ip, _0380214C ;@ =0x040001C0 - ldr lr, _03802154 ;@ =0x040001C2 - add r2, sp, #0 - mov r4, r7 - ldr r9, _03802158 ;@ =0x00007FF8 -_03801FCC: - strh r4, [lr] -_03801FD0: - ldrh r8, [ip] - ands r8, r8, #128 ;@ 0x80 - bne _03801FD0 - ldrh r8, [lr] - and r8, r8, #255 ;@ 0xff - mov r8, r8, lsl #16 - mov r8, r8, lsr #8 - str r8, [r2, r7, lsl #2] - strh r5, [lr] -_03801FF4: - ldrh r8, [ip] - ands r8, r8, #128 ;@ 0x80 - bne _03801FF4 - ldrh r8, [lr] - and r8, r8, #255 ;@ 0xff - mov r8, r8, lsl #16 - ldr sl, [r2, r7, lsl #2] - orr r8, sl, r8, lsr #16 - str r8, [r2, r7, lsl #2] - ldr r8, [r2, r7, lsl #2] - and r8, r8, r9 - mov r8, r8, asr #3 - str r8, [r2, r7, lsl #2] - add r7, r7, #1 - cmp r7, #5 - blt _03801FCC - ldr r2, _0380215C ;@ =0x00008201 - strh r2, [ip] - mov r2, #0 - strh r2, [lr] - ldr r4, _0380214C ;@ =0x040001C0 -_03802048: - ldrh r2, [r4] - ands r2, r2, #128 ;@ 0x80 - bne _03802048 - mov r8, #0 - mov r7, r8 - add r5, sp, #0 -_03802060: - add r9, r7, #1 - ldr r4, [r5, r7, lsl #2] - b _03802084 -_0380206C: - ldr r2, [r5, r9, lsl #2] - subs r2, r4, r2 - rsbmi r2, r2, #0 - cmp r2, r8 - movgt r8, r2 - add r9, r9, #1 -_03802084: - cmp r9, #5 - blt _0380206C - add r7, r7, #1 - cmp r7, #4 - blt _03802060 - strh r8, [r3] - mov r4, #0 - add r2, sp, #0 - b _0380211C -_038020A8: - add r3, r4, #1 - ldr r7, [r2, r4, lsl #2] - b _03802110 -_038020B4: - ldr r8, [r2, r3, lsl #2] - subs r5, r7, r8 - rsbmi r5, r5, #0 - cmp r5, r1 - bgt _0380210C - add r9, r3, #1 - b _03802104 -_038020D0: - ldr r5, [r2, r9, lsl #2] - subs sl, r7, r5 - rsbmi sl, sl, #0 - cmp sl, r1 - bgt _03802100 - add r1, r8, r7, lsl #1 - add r1, r5, r1 - mov r1, r1, asr #2 - bic r1, r1, #7 - strh r1, [r0] - mov r0, #0 - b _03802140 -_03802100: - add r9, r9, #1 -_03802104: - cmp r9, #5 - blt _038020D0 -_0380210C: - add r3, r3, #1 -_03802110: - cmp r3, #4 - blt _038020B4 - add r4, r4, #1 -_0380211C: - cmp r4, #3 - blt _038020A8 - ldr r2, [sp] - ldr r1, [sp, #16] - add r1, r2, r1 - mov r1, r1, asr #1 - bic r1, r1, #7 - strh r1, [r0] - mov r0, r6 -_03802140: - add sp, sp, #24 - ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - bx lr -_0380214C: .word 0x040001C0 -_03802150: .word 0x00008A01 -_03802154: .word 0x040001C2 -_03802158: .word 0x00007FF8 -_0380215C: .word 0x00008201 - - arm_func_start FUN_03802160 -FUN_03802160: ;@ 0x03802160 - stmfd sp!, {lr} - sub sp, sp, #4 - mov r0, #32768 ;@ 0x8000 - bl EXIi_SelectRcnt - ldr r1, _038022A4 ;@ =0x040001C0 -_03802174: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802174 - ldr r0, _038022A8 ;@ =0x00008A01 - strh r0, [r1] - mov r1, #132 ;@ 0x84 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_03802198: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802198 - mov r1, #0 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_038021B4: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038021B4 - ldr r0, _038022B0 ;@ =0x00008201 - strh r0, [r1] - mov r1, #0 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_038021D8: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038021D8 - ldr r0, _038022B4 ;@ =_03809F28 - ldrh r0, [r0] - cmp r0, #0 - bne _0380220C - ldr r0, _038022B8 ;@ =0x04000136 - ldrh r0, [r0] - ands r0, r0, #64 ;@ 0x40 - moveq r0, #1 - movne r0, #0 - b _03802298 -_0380220C: - ldr r0, _038022B8 ;@ =0x04000136 - ldrh r0, [r0] - ands r0, r0, #64 ;@ 0x40 - moveq r0, #1 - beq _03802298 - ldr r0, _038022A8 ;@ =0x00008A01 - strh r0, [r1] - mov r1, #132 ;@ 0x84 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_03802238: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802238 - mov r1, #0 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_03802254: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802254 - ldr r0, _038022B0 ;@ =0x00008201 - strh r0, [r1] - mov r1, #0 - ldr r0, _038022AC ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _038022A4 ;@ =0x040001C0 -_03802278: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802278 - ldr r0, _038022B8 ;@ =0x04000136 - ldrh r0, [r0] - ands r0, r0, #64 ;@ 0x40 - movne r0, #0 - moveq r0, #2 -_03802298: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_038022A4: .word 0x040001C0 -_038022A8: .word 0x00008A01 -_038022AC: .word 0x040001C2 -_038022B0: .word 0x00008201 -_038022B4: .word _03809F28 -_038022B8: .word 0x04000136 - - arm_func_start PM_ExecuteProcess -PM_ExecuteProcess: ;@ 0x038022BC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r4, r0 - bl OS_DisableInterrupts - mov r5, r0 - mov r0, #3 - bl SPIi_CheckException - cmp r0, #0 - bne _03802300 - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #4 - bl SPIi_ReturnResult - b _0380242C -_03802300: - mov r0, #3 - bl SPIi_GetException - mov r0, r5 - bl OS_RestoreInterrupts - ldr r1, [r4, #4] - sub r0, r1, #97 ;@ 0x61 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _03802414 - b _0380233C - b _03802414 - b _038023E0 - b _03802368 - b _038023A4 - b _03802408 -_0380233C: - mov r1, #1 - ldr r0, _03802438 ;@ =PMi_Work - str r1, [r0, #32] - ldr r1, [r4, #8] - ldr r0, _0380243C ;@ =PMi_TriggerBL - strh r1, [r0] - ldr r1, [r4, #12] - ldr r0, _03802440 ;@ =PMi_KeyPattern - strh r1, [r0] - bl PMi_DoSleep - b _03802424 -_03802368: - mov r1, #4 - ldr r0, _03802438 ;@ =PMi_Work - str r1, [r0, #32] - ldr r2, [r4, #8] - str r2, [r0, #40] ;@ 0x28 - ldr r1, [r4, #12] - str r1, [r0, #36] ;@ 0x24 - mov r0, r2, lsl #16 - mov r0, r0, lsr #16 - and r1, r1, #255 ;@ 0xff - bl PMi_SetRegister - mov r0, #100 ;@ 0x64 - mov r1, #0 - bl SPIi_ReturnResult - b _03802424 -_038023A4: - mov r1, #3 - ldr r0, _03802438 ;@ =PMi_Work - str r1, [r0, #32] - ldr r1, [r4, #8] - str r1, [r0, #40] ;@ 0x28 - mov r0, r1, lsl #16 - mov r4, r0, lsr #16 - mov r0, r4 - bl PMi_GetRegister - mov r1, r0 - add r0, r4, #112 ;@ 0x70 - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - bl SPIi_ReturnResult - b _03802424 -_038023E0: - mov r0, #2 - ldr r1, _03802438 ;@ =PMi_Work - str r0, [r1, #32] - ldr r0, [r4, #8] - str r0, [r1, #36] ;@ 0x24 - bl PMi_SwitchUtilityProc - mov r0, #99 ;@ 0x63 - mov r1, #0 - bl SPIi_ReturnResult - b _03802424 -_03802408: - ldr r0, [r4, #8] - bl PMi_SetLED - b _03802424 -_03802414: - mov r0, r1, lsl #16 - mov r0, r0, lsr #16 - mov r1, #1 - bl SPIi_ReturnResult -_03802424: - mov r0, #3 - bl SPIi_ReleaseException -_0380242C: - add sp, sp, #4 - ldmia sp!, {r4, r5, lr} - bx lr -_03802438: .word PMi_Work -_0380243C: .word PMi_TriggerBL -_03802440: .word PMi_KeyPattern - - arm_func_start PM_AnalyzeCommand -PM_AnalyzeCommand: ;@ 0x03802444 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ands r1, r0, #33554432 ;@ 0x2000000 - beq _03802474 - mov r4, #0 - mov r3, r4 - ldr r1, _03802610 ;@ =PMi_Work -_03802460: - mov r2, r4, lsl #1 - strh r3, [r1, r2] - add r4, r4, #1 - cmp r4, #16 - blt _03802460 -_03802474: - and r1, r0, #983040 ;@ 0xf0000 - mov r1, r1, lsr #16 - mov r1, r1, lsl #1 - ldr ip, _03802610 ;@ =PMi_Work - strh r0, [ip, r1] - ands r0, r0, #16777216 ;@ 0x1000000 - beq _03802604 - ldrh r3, [ip] - and r0, r3, #65280 ;@ 0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #16 - sub r0, r4, #96 ;@ 0x60 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _038025F8 - b _038024D0 - b _038024E0 - b _038025F8 - b _03802588 - b _0380251C - b _03802558 - b _038025C4 - b _038025DC -_038024D0: - mov r0, #96 ;@ 0x60 - mov r1, #0 - bl SPIi_ReturnResult - b _03802604 -_038024E0: - ldrh r1, [ip, #2] - ldr r0, _03802614 ;@ =0x0000FFFF - and r0, r1, r0 - str r0, [sp] - mov r0, #3 - mov r1, r4 - mov r2, #2 - and r3, r3, #255 ;@ 0xff - bl SPIi_SetEntry - cmp r0, #0 - bne _03802604 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03802604 -_0380251C: - ldrh r1, [ip, #2] - ldr r0, _03802614 ;@ =0x0000FFFF - and r0, r1, r0 - str r0, [sp] - mov r0, #3 - mov r1, r4 - mov r2, #2 - and r3, r3, #255 ;@ 0xff - bl SPIi_SetEntry - cmp r0, #0 - bne _03802604 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03802604 -_03802558: - mov r0, #3 - mov r1, r4 - mov r2, #1 - ldr ip, _03802614 ;@ =0x0000FFFF - and r3, r3, ip - bl SPIi_SetEntry - cmp r0, #0 - bne _03802604 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03802604 -_03802588: - mov r0, #3 - mov r1, r4 - mov r2, #1 - and lr, r3, #255 ;@ 0xff - ldrh ip, [ip, #2] - ldr r3, _03802614 ;@ =0x0000FFFF - and r3, ip, r3 - orr r3, r3, lr, lsl #16 - bl SPIi_SetEntry - cmp r0, #0 - bne _03802604 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03802604 -_038025C4: - and r0, r3, #255 ;@ 0xff - bl PM_SetLEDPattern - mov r0, #102 ;@ 0x66 - mov r1, #0 - bl SPIi_ReturnResult - b _03802604 -_038025DC: - bl PM_GetLEDPattern - mov r1, r0 - mov r0, #103 ;@ 0x67 - mov r1, r1, lsl #16 - mov r1, r1, lsr #16 - bl SPIi_ReturnResult - b _03802604 -_038025F8: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_03802604: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr -_03802610: .word PMi_Work -_03802614: .word 0x0000FFFF - - arm_func_start PM_Init -PM_Init: ;@ 0x03802618 - mov r1, #1 - ldr r0, _0380264C ;@ =PMi_Initialized - str r1, [r0] - mov r3, #0 - ldr r0, _03802650 ;@ =PMi_Work - str r3, [r0, #32] - mov r2, r3 -_03802634: - mov r1, r3, lsl #1 - strh r2, [r0, r1] - add r3, r3, #1 - cmp r3, #16 - blt _03802634 - bx lr -_0380264C: .word PMi_Initialized -_03802650: .word PMi_Work - - arm_func_start PMi_SendPxiCommand -PMi_SendPxiCommand: ;@ 0x03802654 - ldr r3, _03802678 ;@ =0x0000FFFF - and r3, r2, r3 - and r0, r0, #62914560 ;@ 0x3c00000 - mov r2, r0, lsl #22 - and r0, r1, #4128768 ;@ 0x3f0000 - orr r0, r2, r0, lsl #16 - orr r0, r3, r0 - ldr ip, _0380267C ;@ =PMi_SendPxiData - bx ip -_03802678: .word 0x0000FFFF -_0380267C: .word PMi_SendPxiData - - arm_func_start PMi_SendPxiData -PMi_SendPxiData: ;@ 0x03802680 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #8 - mov r4, #0 -_03802690: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _03802690 - ldmia sp!, {r4, r5, r6, lr} - bx lr - - arm_func_start PMi_ResetControl -PMi_ResetControl: ;@ 0x038026B0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - bl PMi_GetRegister - mvn r1, r4 - and r0, r0, r1 - and r1, r0, #255 ;@ 0xff - mov r0, #0 - bl PMi_SetRegister - ldmia sp!, {r4, lr} - bx lr - - arm_func_start PMi_SetControl -PMi_SetControl: ;@ 0x038026DC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - bl PMi_GetRegister - orr r1, r0, r4 - mov r0, #0 - bl PMi_SetRegister - ldmia sp!, {r4, lr} - bx lr - - arm_func_start PMi_GetRegister -PMi_GetRegister: ;@ 0x03802700 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, _0380278C ;@ =0x040001C0 -_0380270C: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _0380270C - bl FUN_03802808 - mov r0, #1 - bl FUN_03802820 - orr r0, r4, #128 ;@ 0x80 - and r0, r0, #255 ;@ 0xff - and r1, r0, #255 ;@ 0xff - ldr r0, _03802790 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _0380278C ;@ =0x040001C0 -_0380273C: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _0380273C - mov r0, #0 - bl FUN_03802820 - mov r1, #0 - ldr r0, _03802790 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _0380278C ;@ =0x040001C0 -_03802760: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03802760 - ldr r0, _03802790 ;@ =0x040001C2 - ldrh r0, [r0] - and r0, r0, #255 ;@ 0xff - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - and r0, r0, #255 ;@ 0xff - ldmia sp!, {r4, lr} - bx lr -_0380278C: .word 0x040001C0 -_03802790: .word 0x040001C2 - - arm_func_start PMi_SetRegister -PMi_SetRegister: ;@ 0x03802794 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - ldr r1, _03802800 ;@ =0x040001C0 -_038027A8: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038027A8 - bl FUN_03802808 - mov r0, #1 - bl FUN_03802820 - and r0, r5, #255 ;@ 0xff - and r1, r0, #255 ;@ 0xff - ldr r0, _03802804 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03802800 ;@ =0x040001C0 -_038027D4: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038027D4 - mov r0, #0 - bl FUN_03802820 - and r1, r4, #255 ;@ 0xff - ldr r0, _03802804 ;@ =0x040001C2 - strh r1, [r0] - add sp, sp, #4 - ldmia sp!, {r4, r5, lr} - bx lr -_03802800: .word 0x040001C0 -_03802804: .word 0x040001C2 - - arm_func_start FUN_03802808 -FUN_03802808: ;@ 0x03802808 - ldr r1, _03802818 ;@ =0x00008202 - ldr r0, _0380281C ;@ =0x040001C0 - strh r1, [r0] - bx lr -_03802818: .word 0x00008202 -_0380281C: .word 0x040001C0 - - arm_func_start FUN_03802820 -FUN_03802820: ;@ 0x03802820 - ldr r1, _03802834 ;@ =0x00008002 - orr r1, r1, r0, lsl #11 - ldr r0, _03802838 ;@ =0x040001C0 - strh r1, [r0] - bx lr -_03802834: .word 0x00008002 -_03802838: .word 0x040001C0 - - arm_func_start PMi_SetLED -PMi_SetLED: ;@ 0x0380283C - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #1 - beq _03802860 - cmp r4, #2 - beq _03802878 - cmp r4, #3 - beq _0380286C - b _0380288C -_03802860: - mov r0, #16 - bl PMi_ResetControl - b _03802890 -_0380286C: - mov r0, #48 ;@ 0x30 - bl PMi_SetControl - b _03802890 -_03802878: - mov r0, #32 - bl PMi_ResetControl - mov r0, #16 - bl PMi_SetControl - b _03802890 -_0380288C: - bl OS_Terminate -_03802890: - ldr r0, _038028A0 ;@ =PMi_LEDStatus - str r4, [r0] - ldmia sp!, {r4, lr} - bx lr -_038028A0: .word PMi_LEDStatus - - arm_func_start PMi_SwitchUtilityProc -PMi_SwitchUtilityProc: ;@ 0x038028A4 - stmfd sp!, {lr} - sub sp, sp, #4 - cmp r0, #15 - addls pc, pc, r0, lsl #2 - b _038029C4 - b _038029C4 - b _038028F8 - b _0380290C - b _03802920 - b _03802934 - b _03802940 - b _0380294C - b _03802958 - b _03802964 - b _03802970 - b _0380297C - b _03802988 - b _03802994 - b _038029A0 - b _038029B8 - b _038029AC -_038028F8: - mov r0, #1 - bl PM_SetLEDPattern - mov r0, #1 - bl PMi_SetLED - b _038029C4 -_0380290C: - mov r0, #3 - bl PM_SetLEDPattern - mov r0, #3 - bl PMi_SetLED - b _038029C4 -_03802920: - mov r0, #2 - bl PM_SetLEDPattern - mov r0, #2 - bl PMi_SetLED - b _038029C4 -_03802934: - mov r0, #4 - bl PMi_SetControl - b _038029C4 -_03802940: - mov r0, #4 - bl PMi_ResetControl - b _038029C4 -_0380294C: - mov r0, #8 - bl PMi_SetControl - b _038029C4 -_03802958: - mov r0, #8 - bl PMi_ResetControl - b _038029C4 -_03802964: - mov r0, #12 - bl PMi_SetControl - b _038029C4 -_03802970: - mov r0, #12 - bl PMi_ResetControl - b _038029C4 -_0380297C: - mov r0, #1 - bl PMi_SetControl - b _038029C4 -_03802988: - mov r0, #1 - bl PMi_ResetControl - b _038029C4 -_03802994: - mov r0, #2 - bl PMi_ResetControl - b _038029C4 -_038029A0: - mov r0, #2 - bl PMi_SetControl - b _038029C4 -_038029AC: - mov r0, #64 ;@ 0x40 - bl PMi_ResetControl - b _038029C4 -_038029B8: - bl SND_BeginSleep - mov r0, #64 ;@ 0x40 - bl PMi_SetControl -_038029C4: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr - - arm_func_start PMi_DoSleep -PMi_DoSleep: ;@ 0x038029D0 - stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - sub sp, sp, #4 - mov r5, #0 - ldr r0, _03802B94 ;@ =0x04000208 - ldrh r4, [r0] - strh r5, [r0] - bl OS_DisableInterrupts - mov r9, r0 - mvn r0, #-33554432 ;@ 0xfe000000 - bl OS_DisableIrqMask - mov r8, r0 - mov r0, r5 - bl PMi_GetRegister - mov r7, r0 - mov r0, #2 - bl PM_SetLEDPattern - mov r0, #2 - bl PMi_SetLED - mov r0, #2 - bl PMi_SetLED - bl SND_BeginSleep - mov r0, #1 - bl PMi_ResetControl - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r0, [r0] - ands r0, r0, #1 - beq _03802A58 - ldr r0, _03802B9C ;@ =PMi_KeyPattern - ldrh r0, [r0] - orr r1, r0, #16384 ;@ 0x4000 - ldr r0, _03802BA0 ;@ =0x04000132 - strh r1, [r0] - mov r0, #4096 ;@ 0x1000 - bl OS_EnableIrqMask -_03802A58: - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r0, [r0] - ands r0, r0, #4 - beq _03802A70 - mov r0, #4194304 ;@ 0x400000 - bl OS_EnableIrqMask -_03802A70: - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r0, [r0] - ands r0, r0, #2 - beq _03802AB4 - ldr r0, _03802BA4 ;@ =0x04000134 - ldrh r6, [r0] - mov r5, #1 - mov r0, #32768 ;@ 0x8000 - bl EXIi_SelectRcnt - mov r0, #64 ;@ 0x40 - mov r1, #0 - bl EXIi_SetBitRcnt0L - mov r0, #256 ;@ 0x100 - mov r1, r0 - bl EXIi_SetBitRcnt0L - mov r0, #128 ;@ 0x80 - bl OS_EnableIrqMask -_03802AB4: - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r0, [r0] - ands r0, r0, #8 - beq _03802ACC - mov r0, #1048576 ;@ 0x100000 - bl OS_EnableIrqMask -_03802ACC: - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r0, [r0] - ands r0, r0, #16 - beq _03802AE4 - mov r0, #8192 ;@ 0x2000 - bl OS_EnableIrqMask -_03802AE4: - mov r0, r9 - bl OS_RestoreInterrupts - ldr r1, _03802B94 ;@ =0x04000208 - ldrh r0, [r1] - mov r0, #1 - strh r0, [r1] - bl FUN_03802BAC - mov r0, #0 - mov r1, r7 - bl PMi_SetRegister - ldr r0, _03802B98 ;@ =PMi_TriggerBL - ldrh r1, [r0] - ands r0, r1, #32 - movne r0, #6 - moveq r0, #7 - ands r1, r1, #64 ;@ 0x40 - movne r7, #4 - moveq r7, #5 - bl PMi_SwitchUtilityProc - mov r0, r7 - bl PMi_SwitchUtilityProc - cmp r5, #0 - ldrne r0, _03802BA4 ;@ =0x04000134 - strneh r6, [r0] - mov r0, #1 - bl PMi_SetControl - bl SND_EndSleep - mov r1, #0 - ldr r0, _03802BA8 ;@ =PMi_Work - str r1, [r0, #32] - mov r0, #98 ;@ 0x62 - mov r2, r1 - bl PMi_SendPxiCommand - bl OS_DisableInterrupts - mov r0, r8 - bl OS_SetIrqMask - mov r0, r9 - bl OS_RestoreInterrupts - ldr r1, _03802B94 ;@ =0x04000208 - ldrh r0, [r1] - strh r4, [r1] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} - bx lr -_03802B94: .word 0x04000208 -_03802B98: .word PMi_TriggerBL -_03802B9C: .word PMi_KeyPattern -_03802BA0: .word 0x04000132 -_03802BA4: .word 0x04000134 -_03802BA8: .word PMi_Work - - arm_func_start FUN_03802BAC -FUN_03802BAC: ;@ 0x03802BAC - ldr ip, _03802BB4 ;@ =SVC_Stop - bx ip -_03802BB4: .word SVC_Stop - - arm_func_start PM_GetLEDPattern -PM_GetLEDPattern: ;@ 0x03802BB8 - ldr r0, _03802BC4 ;@ =PMi_BlinkPatternNo - ldr r0, [r0] - bx lr -_03802BC4: .word PMi_BlinkPatternNo - - arm_func_start PM_SetLEDPattern -PM_SetLEDPattern: ;@ 0x03802BC8 - cmp r0, #15 - ldrle r1, _03802BE4 ;@ =PMi_BlinkPatternNo - strle r0, [r1] - movle r1, #0 - ldrle r0, _03802BE8 ;@ =_03809F64 - strle r1, [r0] - bx lr -_03802BE4: .word PMi_BlinkPatternNo -_03802BE8: .word _03809F64 - - arm_func_start PM_SelfBlinkProc -PM_SelfBlinkProc: ;@ 0x03802BEC - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _03802D04 ;@ =PMi_BlinkPatternNo - ldr r3, [r0] - cmp r3, #0 - bne _03802C28 - mov r0, #3 - mov r1, #102 ;@ 0x66 - mov r2, #1 - mov r3, r2 - bl SPIi_SetEntry - cmp r0, #0 - beq _03802CFC - mov r0, #1 - bl PM_SetLEDPattern - b _03802CFC -_03802C28: - cmp r3, #4 - bge _03802C54 - ldr r0, _03802D08 ;@ =PMi_LEDStatus - ldr r0, [r0] - cmp r3, r0 - beq _03802CFC - mov r0, #3 - mov r1, #102 ;@ 0x66 - mov r2, #1 - bl SPIi_SetEntry - b _03802CFC -_03802C54: - ldr r6, _03802D0C ;@ =PMi_BlinkPatternData - sub r1, r3, #4 - mov r0, #12 - mul r5, r1, r0 - add r4, r6, r5 - ldr r0, _03802D10 ;@ =_03809F64 - ldr r0, [r0] - ldrh r1, [r4, #10] - bl _u32_div_f - ldr r5, [r6, r5] - ldr lr, [r4, #4] - mov r3, #0 - mov r2, #-2147483648 ;@ 0x80000000 - mov ip, r3, lsr r0 - rsb r1, r0, #32 - orr ip, ip, r2, lsl r1 - sub r1, r0, #32 - orr ip, ip, r2, lsr r1 - and r0, lr, r2, lsr r0 - and r1, r5, ip - cmp r0, r3 - cmpeq r1, r3 - movne r3, #1 - moveq r3, #2 - ldr r0, _03802D10 ;@ =_03809F64 - ldr r1, [r0] - add ip, r1, #1 - str ip, [r0] - ldrh r2, [r4, #8] - ldrh r1, [r4, #10] - mul r1, r2, r1 - cmp ip, r1 - movcs r1, #0 - strcs r1, [r0] - ldr r0, _03802D08 ;@ =PMi_LEDStatus - ldr r0, [r0] - cmp r3, r0 - beq _03802CFC - mov r0, #3 - mov r1, #102 ;@ 0x66 - mov r2, #1 - bl SPIi_SetEntry -_03802CFC: - ldmia sp!, {r4, r5, r6, lr} - bx lr -_03802D04: .word PMi_BlinkPatternNo -_03802D08: .word PMi_LEDStatus -_03802D0C: .word PMi_BlinkPatternData -_03802D10: .word _03809F64 - - arm_func_start FUN_03802D14 -FUN_03802D14: ;@ 0x03802D14 - stmdb sp!, {r4, r5, r6, r7, lr} - ldr r4, _03802E6C ;@ =_03809F6C - ldrh r5, [r4, #38] ;@ 0x26 - and r0, r5, #4 - cmp r0, #4 - ldrh r6, [r4, #56] ;@ 0x38 - ldrneh r7, [r4, #58] ;@ 0x3a - ldreq r7, _03802E70 ;@ =0x0000FFFF - bl SPIi_CheckEntry - cmp r0, #0 - bne _03802D80 - mov r0, #2 - bl SPIi_CheckException - cmp r0, #0 - beq _03802D80 - and r0, r5, #1 - cmp r0, #1 - bne _03802D70 - bl MIC_ExecSampling12 - tst r5, #2 - moveq r7, r0 - eorne r7, r0, #32768 ;@ 0x8000 - b _03802D80 -_03802D70: - bl MIC_ExecSampling8 - tst r5, #2 - moveq r7, r0 - eorne r7, r0, #128 ;@ 0x80 -_03802D80: - and r0, r5, #1 - ldr r3, _03802E74 ;@ =0x027FFC00 - ldr r1, [r4, #44] ;@ 0x2c - cmp r0, #1 - bne _03802DB0 - ldr r2, [r4, #40] ;@ 0x28 - strh r7, [r2, r1]! - str r2, [r3, #912] ;@ 0x390 - add r3, r3, #916 ;@ 0x394 - strh r7, [r3] - add r1, r1, #2 - b _03802DE8 -_03802DB0: - and r7, r7, #255 ;@ 0xff - tst r1, #1 - bne _03802DC8 - mov r6, r7 - add r1, r1, #1 - b _03802DE8 -_03802DC8: - orr r0, r6, r7, lsl #8 - ldr r2, [r4, #40] ;@ 0x28 - sub r1, r1, #1 - strh r0, [r2, r1]! - str r2, [r3, #912] ;@ 0x390 - add r3, r3, #916 ;@ 0x394 - strh r0, [r3] - add r1, r1, #2 -_03802DE8: - strh r6, [r4, #56] ;@ 0x38 - strh r7, [r4, #58] ;@ 0x3a - ldr r0, [r4, #48] ;@ 0x30 - cmp r1, r0 - movcs r1, #0 - str r1, [r4, #44] ;@ 0x2c - bcc _03802E64 - ldrh r0, [r4, #36] ;@ 0x24 - and r0, r0, #16 - cmp r0, #16 - bne _03802E24 - mov r0, #81 ;@ 0x51 - mov r1, #0 - bl SPIi_ReturnResult - b _03802E64 -_03802E24: - mov r0, #2 - mov r1, #66 ;@ 0x42 - mov r2, #0 - bl SPIi_SetEntry - cmp r0, #0 - bne _03802E4C - mov r0, #81 ;@ 0x51 - mov r1, #4 - bl SPIi_ReturnResult - b _03802E64 -_03802E4C: - mov r0, #4 - str r0, [r4, #32] - ldr r1, _03802E78 ;@ =0x0400010E - ldrh r0, [r1] - bic r0, r0, #128 ;@ 0x80 - strh r0, [r1] -_03802E64: - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_03802E6C: .word _03809F6C -_03802E70: .word 0x0000FFFF -_03802E74: .word 0x027FFC00 -_03802E78: .word 0x0400010E - - arm_func_start FUN_03802E7C -FUN_03802E7C: ;@ 0x03802E7C - stmfd sp!, {lr} - sub sp, sp, #4 - bl FUN_03802D14 - ldr r1, _03802EB0 ;@ =0x0380FFF8 - ldr r0, [r1] - orr r0, r0, #64 ;@ 0x40 - str r0, [r1] - mov r1, #64 ;@ 0x40 - ldr r0, _03802EB4 ;@ =0x04000214 - str r1, [r0] - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03802EB0: .word 0x0380FFF8 -_03802EB4: .word 0x04000214 - - arm_func_start MIC_ExecuteProcess -MIC_ExecuteProcess: ;@ 0x03802EB8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - ldr r2, [r5, #4] - cmp r2, #64 ;@ 0x40 - beq _03802EE4 - cmp r2, #65 ;@ 0x41 - beq _03802FB0 - cmp r2, #66 ;@ 0x42 - beq _0380304C - b _038030F0 -_03802EE4: - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #2 - bl SPIi_CheckException - cmp r0, #0 - bne _03802F1C - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, [r5, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #4 - bl SPIi_ReturnResult - b _038030F0 -_03802F1C: - mov r0, #2 - bl SPIi_GetException - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, [r5, #8] - and r0, r0, #1 - cmp r0, #1 - bne _03802F68 - bl MIC_ExecSampling12 - ldr r1, [r5, #8] - ands r1, r1, #2 - eorne r0, r0, #32768 ;@ 0x8000 - movne r0, r0, lsl #16 - movne r0, r0, lsr #16 - ldr r1, _038030FC ;@ =0x027FFF94 - strh r0, [r1] - ldr r0, _03803100 ;@ =0x027FFF90 - str r1, [r0] - b _03802F90 -_03802F68: - bl MIC_ExecSampling8 - ldr r1, [r5, #8] - ands r1, r1, #2 - eorne r0, r0, #128 ;@ 0x80 - movne r0, r0, lsl #16 - movne r0, r0, lsr #16 - ldr r1, _038030FC ;@ =0x027FFF94 - strh r0, [r1] - ldr r0, _03803100 ;@ =0x027FFF90 - str r1, [r0] -_03802F90: - ldr r0, [r5, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #0 - bl SPIi_ReturnResult - mov r0, #2 - bl SPIi_ReleaseException - b _038030F0 -_03802FB0: - ldr r0, _03803104 ;@ =_03809F6C - ldr r1, [r0, #32] - cmp r1, #1 - bne _03803038 - mov r1, #0 - strh r1, [r0, #58] ;@ 0x3a - strh r1, [r0, #56] ;@ 0x38 - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #64 ;@ 0x40 - bl OS_EnableIrqMask - mov r0, #64 ;@ 0x40 - ldr r1, _03803108 ;@ =FUN_03802E7C - bl MIC_SetIrqFunction - bl MIC_EnableMultipleInterrupt - ldr r0, _03803104 ;@ =_03809F6C - ldrh r2, [r0, #52] ;@ 0x34 - ldr r1, _0380310C ;@ =0x0400010C - strh r2, [r1] - ldrh r0, [r0, #54] ;@ 0x36 - orr r1, r0, #192 ;@ 0xc0 - ldr r0, _03803110 ;@ =0x0400010E - strh r1, [r0] - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, [r5, #4] - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r1, #0 - bl SPIi_ReturnResult - mov r1, #2 - ldr r0, _03803104 ;@ =_03809F6C - str r1, [r0, #32] - b _038030F0 -_03803038: - mov r0, r2, lsl #16 - mov r0, r0, lsr #16 - mov r1, #3 - bl SPIi_ReturnResult - b _038030F0 -_0380304C: - ldr r0, _03803104 ;@ =_03809F6C - ldr r1, [r0, #32] - sub r0, r1, #3 - cmp r0, #1 - bhi _038030CC - ldr r1, _03803110 ;@ =0x0400010E - ldrh r0, [r1] - bic r0, r0, #128 ;@ 0x80 - strh r0, [r1] - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #64 ;@ 0x40 - mov r1, #0 - bl MIC_SetIrqFunction - bl MIC_DisableMultipleInterrupt - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _03803104 ;@ =_03809F6C - ldr r0, [r0, #32] - cmp r0, #3 - bne _038030B0 - mov r0, #66 ;@ 0x42 - mov r1, #0 - bl SPIi_ReturnResult - b _038030BC -_038030B0: - mov r0, #81 ;@ 0x51 - mov r1, #0 - bl SPIi_ReturnResult -_038030BC: - mov r1, #0 - ldr r0, _03803104 ;@ =_03809F6C - str r1, [r0, #32] - b _038030F0 -_038030CC: - cmp r1, #3 - bne _038030E4 - mov r0, #66 ;@ 0x42 - mov r1, #3 - bl SPIi_ReturnResult - b _038030F0 -_038030E4: - mov r0, #81 ;@ 0x51 - mov r1, #3 - bl SPIi_ReturnResult -_038030F0: - add sp, sp, #4 - ldmia sp!, {r4, r5, lr} - bx lr -_038030FC: .word 0x027FFF94 -_03803100: .word 0x027FFF90 -_03803104: .word _03809F6C -_03803108: .word FUN_03802E7C -_0380310C: .word 0x0400010C -_03803110: .word 0x0400010E - - arm_func_start FUN_03803114 -FUN_03803114: ;@ 0x03803114 - cmp r0, #65536 ;@ 0x10000 - bcs _03803138 - mov r2, #0 - ldr r1, _038031B4 ;@ =_03809F6C - strh r2, [r1, #54] ;@ 0x36 - rsb r0, r0, #65536 ;@ 0x10000 - strh r0, [r1, #52] ;@ 0x34 - mov r0, #1 - bx lr -_03803138: - cmp r0, #4194304 ;@ 0x400000 - bcs _03803160 - mov r2, #1 - ldr r1, _038031B4 ;@ =_03809F6C - strh r2, [r1, #54] ;@ 0x36 - mov r0, r0, lsr #6 - rsb r0, r0, #65536 ;@ 0x10000 - strh r0, [r1, #52] ;@ 0x34 - mov r0, r2 - bx lr -_03803160: - cmp r0, #16777216 ;@ 0x1000000 - bcs _03803188 - mov r2, #2 - ldr r1, _038031B4 ;@ =_03809F6C - strh r2, [r1, #54] ;@ 0x36 - mov r0, r0, lsr #8 - rsb r0, r0, #65536 ;@ 0x10000 - strh r0, [r1, #52] ;@ 0x34 - mov r0, #1 - bx lr -_03803188: - cmp r0, #67108864 ;@ 0x4000000 - movcs r0, #0 - bxcs lr - mov r2, #3 - ldr r1, _038031B4 ;@ =_03809F6C - strh r2, [r1, #54] ;@ 0x36 - mov r0, r0, lsr #10 - rsb r0, r0, #65536 ;@ 0x10000 - strh r0, [r1, #52] ;@ 0x34 - mov r0, #1 - bx lr -_038031B4: .word _03809F6C - - arm_func_start MIC_AnalyzeCommand -MIC_AnalyzeCommand: ;@ 0x038031B8 - stmdb sp!, {r4, lr} - ands r1, r0, #33554432 ;@ 0x2000000 - beq _038031E4 - mov r4, #0 - mov r3, r4 - ldr r1, _03803478 ;@ =_03809F6C -_038031D0: - mov r2, r4, lsl #1 - strh r3, [r1, r2] - add r4, r4, #1 - cmp r4, #16 - blt _038031D0 -_038031E4: - and r1, r0, #983040 ;@ 0xf0000 - mov r1, r1, lsr #16 - mov r2, r1, lsl #1 - ldr r1, _03803478 ;@ =_03809F6C - strh r0, [r1, r2] - ands r0, r0, #16777216 ;@ 0x1000000 - beq _03803470 - ldrh r3, [r1] - and r0, r3, #65280 ;@ 0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #16 - sub r0, r4, #64 ;@ 0x40 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _03803464 - b _03803230 - b _03803270 - b _03803378 - b _038033DC -_03803230: - mov r0, #2 - mov r1, r4 - mov r2, #1 - and r3, r3, #255 ;@ 0xff - bl SPIi_SetEntry - cmp r0, #0 - bne _03803258 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult -_03803258: - mov r1, #0 - ldr r0, _0380347C ;@ =0x027FFF94 - strh r1, [r0] - ldr r0, _03803480 ;@ =0x027FFF90 - str r1, [r0] - b _03803470 -_03803270: - ldr r0, [r1, #32] - cmp r0, #0 - beq _0380328C - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _03803470 -_0380328C: - and r0, r3, #255 ;@ 0xff - strh r0, [r1, #36] ;@ 0x24 - ldrh r2, [r1, #2] - ldrh r0, [r1, #4] - orr r3, r0, r2, lsl #16 - cmp r3, #33554432 ;@ 0x2000000 - bcc _038032B0 - cmp r3, #37748736 ;@ 0x2400000 - bcc _038032C0 -_038032B0: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803470 -_038032C0: - str r3, [r1, #40] ;@ 0x28 - ldrh r2, [r1, #6] - ldrh r0, [r1, #8] - orr r2, r0, r2, lsl #16 - add r0, r3, r2 - cmp r0, #37748736 ;@ 0x2400000 - bls _038032EC - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803470 -_038032EC: - str r2, [r1, #48] ;@ 0x30 - ldrh r2, [r1, #10] - ldrh r0, [r1, #12] - orr r0, r0, r2, lsl #16 - bl FUN_03803114 - cmp r0, #0 - bne _03803318 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803470 -_03803318: - mov r2, #0 - ldr r0, _03803478 ;@ =_03809F6C - str r2, [r0, #44] ;@ 0x2c - ldrh r1, [r0, #36] ;@ 0x24 - and r1, r1, #7 - strh r1, [r0, #38] ;@ 0x26 - mov r0, #2 - mov r1, r4 - bl SPIi_SetEntry - cmp r0, #0 - bne _03803354 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03803470 -_03803354: - mov r1, #0 - ldr r0, _0380347C ;@ =0x027FFF94 - strh r1, [r0] - ldr r0, _03803480 ;@ =0x027FFF90 - str r1, [r0] - mov r1, #1 - ldr r0, _03803478 ;@ =_03809F6C - str r1, [r0, #32] - b _03803470 -_03803378: - ldr r0, [r1, #32] - cmp r0, #2 - beq _03803394 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _03803470 -_03803394: - mov r0, #2 - mov r1, r4 - mov r2, #0 - bl SPIi_SetEntry - cmp r0, #0 - bne _038033BC - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03803470 -_038033BC: - mov r1, #3 - ldr r0, _03803478 ;@ =_03809F6C - str r1, [r0, #32] - ldr r1, _03803484 ;@ =0x0400010E - ldrh r0, [r1] - bic r0, r0, #128 ;@ 0x80 - strh r0, [r1] - b _03803470 -_038033DC: - ldr r0, [r1, #32] - cmp r0, #2 - beq _038033F8 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _03803470 -_038033F8: - ldrh r2, [r1, #2] - ldrh r0, [r1, #4] - orr r0, r0, r2, lsl #16 - bl FUN_03803114 - cmp r0, #0 - bne _03803420 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803470 -_03803420: - bl OS_DisableInterrupts - ldr ip, _03803484 ;@ =0x0400010E - ldrh r1, [ip] - bic r1, r1, #128 ;@ 0x80 - strh r1, [ip] - ldr r1, _03803478 ;@ =_03809F6C - ldrh r3, [r1, #52] ;@ 0x34 - ldr r2, _03803488 ;@ =0x0400010C - strh r3, [r2] - ldrh r1, [r1, #54] ;@ 0x36 - orr r1, r1, #192 ;@ 0xc0 - strh r1, [ip] - bl OS_RestoreInterrupts - mov r0, r4 - mov r1, #0 - bl SPIi_ReturnResult - b _03803470 -_03803464: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_03803470: - ldmia sp!, {r4, lr} - bx lr -_03803478: .word _03809F6C -_0380347C: .word 0x027FFF94 -_03803480: .word 0x027FFF90 -_03803484: .word 0x0400010E -_03803488: .word 0x0400010C - - arm_func_start MIC_Init -MIC_Init: ;@ 0x0380348C - mov r3, #0 - ldr r0, _038034C4 ;@ =_03809F6C - str r3, [r0, #32] - mov r2, r3 -_0380349C: - mov r1, r3, lsl #1 - strh r2, [r0, r1] - add r3, r3, #1 - cmp r3, #16 - blt _0380349C - ldr r1, _038034C8 ;@ =0x0400010E - ldrh r0, [r1] - bic r0, r0, #128 ;@ 0x80 - strh r0, [r1] - bx lr -_038034C4: .word _03809F6C -_038034C8: .word 0x0400010E - - arm_func_start MIC_ExecSampling12 -MIC_ExecSampling12: ;@ 0x038034CC - ldr r1, _03803580 ;@ =0x040001C0 -_038034D0: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038034D0 - ldr r0, _03803584 ;@ =0x00008A01 - strh r0, [r1] - mov r1, #228 ;@ 0xe4 - ldr r0, _03803588 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03803580 ;@ =0x040001C0 -_038034F4: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038034F4 - mov r1, #0 - ldr r0, _03803588 ;@ =0x040001C2 - strh r1, [r0] - ldr r2, _03803580 ;@ =0x040001C0 -_03803510: - ldrh r0, [r2] - ands r0, r0, #128 ;@ 0x80 - bne _03803510 - ldr r1, _03803588 ;@ =0x040001C2 - ldrh r0, [r1] - and r0, r0, #255 ;@ 0xff - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r0, r0, lsl #24 - mov r3, r0, lsr #16 - ldr r0, _0380358C ;@ =0x00008201 - strh r0, [r2] - mov r0, #0 - strh r0, [r1] - ldr r1, _03803580 ;@ =0x040001C0 -_0380354C: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _0380354C - ldr r0, _03803588 ;@ =0x040001C2 - ldrh r0, [r0] - and r0, r0, #255 ;@ 0xff - mov r0, r0, lsl #16 - orr r1, r3, r0, lsr #16 - ldr r0, _03803590 ;@ =0x00007FF8 - and r0, r1, r0 - mov r0, r0, lsl #17 - mov r0, r0, lsr #16 - bx lr -_03803580: .word 0x040001C0 -_03803584: .word 0x00008A01 -_03803588: .word 0x040001C2 -_0380358C: .word 0x00008201 -_03803590: .word 0x00007FF8 - - arm_func_start MIC_ExecSampling8 -MIC_ExecSampling8: ;@ 0x03803594 - ldr r1, _03803648 ;@ =0x040001C0 -_03803598: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03803598 - ldr r0, _0380364C ;@ =0x00008A01 - strh r0, [r1] - mov r1, #236 ;@ 0xec - ldr r0, _03803650 ;@ =0x040001C2 - strh r1, [r0] - ldr r1, _03803648 ;@ =0x040001C0 -_038035BC: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _038035BC - mov r1, #0 - ldr r0, _03803650 ;@ =0x040001C2 - strh r1, [r0] - ldr r2, _03803648 ;@ =0x040001C0 -_038035D8: - ldrh r0, [r2] - ands r0, r0, #128 ;@ 0x80 - bne _038035D8 - ldr r1, _03803650 ;@ =0x040001C2 - ldrh r0, [r1] - and r0, r0, #255 ;@ 0xff - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - mov r0, r0, lsl #24 - mov r3, r0, lsr #16 - ldr r0, _03803654 ;@ =0x00008201 - strh r0, [r2] - mov r0, #0 - strh r0, [r1] - ldr r1, _03803648 ;@ =0x040001C0 -_03803614: - ldrh r0, [r1] - ands r0, r0, #128 ;@ 0x80 - bne _03803614 - ldr r0, _03803650 ;@ =0x040001C2 - ldrh r0, [r0] - and r0, r0, #255 ;@ 0xff - mov r0, r0, lsl #16 - orr r1, r3, r0, lsr #16 - ldr r0, _03803658 ;@ =0x00007F80 - and r0, r1, r0 - mov r0, r0, lsl #9 - mov r0, r0, lsr #16 - bx lr -_03803648: .word 0x040001C0 -_0380364C: .word 0x00008A01 -_03803650: .word 0x040001C2 -_03803654: .word 0x00008201 -_03803658: .word 0x00007F80 -_0380365C: - mov ip, #67108864 ;@ 0x4000000 - add r1, ip, #520 ;@ 0x208 - ldrh r0, [r1] - tst r0, r0 - bxeq lr - ldr r3, [ip, #528] ;@ 0x210 - ldr r1, [ip, #532] ;@ 0x214 - ands r2, r1, r3 - bxeq lr - ldr r0, _038037C8 ;@ =0x01DF3FFF - tst r2, r0 - streq r2, [ip, #532] ;@ 0x214 - bxeq lr - stmfd sp!, {lr} - mrs r0, SPSR - stmfd sp!, {r0} - stmdb sp, {sp, lr}^ - sub sp, sp, #8 - mov r0, #159 ;@ 0x9f - msr CPSR_c, r0 - ldr r1, _038037CC ;@ =OSi_ThreadInfo - ldrh r0, [r1, #2] - add r0, r0, #1 - strh r0, [r1, #2] - ldr r1, _038037D0 ;@ =_03809FA8 - cmp r0, #1 - moveq r0, sp - ldreq sp, [r1, #4] - streq r0, [r1, #4] - stmfd sp!, {r3} - ldr r1, _038037D4 ;@ =_038072C8 - ldr r0, [r1] - tst r0, r2 - strne r0, [ip, #532] ;@ 0x214 - ldrne r0, [r1, #4] - ldrne r3, _038037D8 ;@ =OS_IRQTable - ldrne r0, [r3, r0, lsl #2] - bne _03803738 - mov r3, #1 -_038036F8: - ldr r0, [r1, r3, lsl #3] - tst r0, r2 - addeq r3, r3, #1 - beq _038036F8 - str r0, [ip, #532] ;@ 0x214 - add r0, r1, r3, lsl #3 - ldr r2, [r0, #4] - ldr r3, _038037D8 ;@ =OS_IRQTable - ldr r0, [r3, r2, lsl #2] - ldr r2, _038037CC ;@ =OSi_ThreadInfo - ldrh r3, [r2, #2] - cmp r3, #1 - ldreq r2, [r1] - streq r2, [ip, #528] ;@ 0x210 - moveq r2, #31 - msreq CPSR_c, r2 -_03803738: - ldr r1, [ip, #528] ;@ 0x210 - stmfd sp!, {r1} - adr lr, _03803748 - bx r0 -_03803748: - mov r0, #159 ;@ 0x9f - msr CPSR_c, r0 - mov ip, #67108864 ;@ 0x4000000 - ldmia sp!, {r0} - ldr r1, [ip, #528] ;@ 0x210 - eor r2, r0, r1 - and r1, r2, r1 - and r0, r2, r0 - ldmia sp!, {r3} - orr r3, r3, r1 - bic r3, r3, r0 - str r3, [ip, #528] ;@ 0x210 - ldr r2, _038037CC ;@ =OSi_ThreadInfo - ldr r3, _038037D0 ;@ =_03809FA8 - ldrh r0, [r2, #2] - subs r1, r0, #1 - strh r1, [r2, #2] - moveq r0, sp - ldreq sp, [r3, #4] - streq r0, [r3, #4] - mov r0, #146 ;@ 0x92 - msr CPSR_c, r0 - ldmia sp, {sp, lr}^ - nop ;@ (mov r0, r0) - add sp, sp, #8 - ldmia sp!, {r0} - msr SPSR_fc, r0 - tst r1, r1 - ldreq r0, _038037DC ;@ =OS_IrqHandler_ThreadSwitch - addeq lr, pc, #0 - bxeq r0 - ldmia sp!, {pc} -_038037C8: .word 0x01DF3FFF -_038037CC: .word OSi_ThreadInfo -_038037D0: .word _03809FA8 -_038037D4: .word _038072C8 -_038037D8: .word OS_IRQTable -_038037DC: .word OS_IrqHandler_ThreadSwitch - - arm_func_start MIC_DisableMultipleInterrupt -MIC_DisableMultipleInterrupt: ;@ 0x038037E0 - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r0, _03803820 ;@ =0x0380FFFC - ldr r1, [r0] - ldr r0, _03803824 ;@ =_0380365C - cmp r1, r0 - bne _03803814 - bl OS_DisableInterrupts - ldr r1, _03803828 ;@ =_03809FA8 - ldr r2, [r1, #12] - ldr r1, _03803820 ;@ =0x0380FFFC - str r2, [r1] - bl OS_RestoreInterrupts -_03803814: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03803820: .word 0x0380FFFC -_03803824: .word _0380365C -_03803828: .word _03809FA8 - - arm_func_start MIC_EnableMultipleInterrupt -MIC_EnableMultipleInterrupt: ;@ 0x0380382C - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r0, _03803888 ;@ =0x0380FFFC - ldr r2, [r0] - ldr r0, _0380388C ;@ =_0380365C - cmp r2, r0 - beq _0380387C - mov r1, #0 - ldr r0, _03803890 ;@ =_03809FA8 - str r1, [r0] - ldr r1, _03803894 ;@ =0x0380FE80 - str r1, [r0, #4] - mov r1, #64 ;@ 0x40 - str r1, [r0, #8] - str r2, [r0, #12] - bl OS_DisableInterrupts - ldr r2, _0380388C ;@ =_0380365C - ldr r1, _03803888 ;@ =0x0380FFFC - str r2, [r1] - bl OS_RestoreInterrupts -_0380387C: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_03803888: .word 0x0380FFFC -_0380388C: .word _0380365C -_03803890: .word _03809FA8 -_03803894: .word 0x0380FE80 - - arm_func_start MIC_SetIrqFunction -MIC_SetIrqFunction: ;@ 0x03803898 - mov ip, #0 - ldr r2, _038038BC ;@ =OS_IRQTable -_038038A0: - ands r3, r0, #1 - strne r1, [r2, ip, lsl #2] - mov r0, r0, lsr #1 - add ip, ip, #1 - cmp ip, #25 - blt _038038A0 - bx lr -_038038BC: .word OS_IRQTable - arm_func_start CTRDGi_SendtoPxi CTRDGi_SendtoPxi: ;@ 0x038038C0 stmdb sp!, {r4, r5, r6, r7, lr} |