summaryrefslogtreecommitdiff
path: root/arm7/asm/dtcm.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/asm/dtcm.s')
-rw-r--r--arm7/asm/dtcm.s2862
1 files changed, 0 insertions, 2862 deletions
diff --git a/arm7/asm/dtcm.s b/arm7/asm/dtcm.s
index b639598d..a403919a 100644
--- a/arm7/asm/dtcm.s
+++ b/arm7/asm/dtcm.s
@@ -2,2868 +2,6 @@
.include "global.inc"
.section .text
- arm_func_start FUN_037F8000
-FUN_037F8000: ; 0x037F8000
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037F8028 ; =PMi_Initialized
- ldr r0, [r0]
- cmp r0, #0
- beq _037F801C
- bl PM_SelfBlinkProc
-_037F801C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F8028: .word PMi_Initialized
-
- arm_func_start FUN_037F802C
-FUN_037F802C: ; 0x037F802C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r8, #0
- bl FUN_037F81E8
- cmp r0, #0
- beq _037F80F8
- bl FUN_037F81C4
- mov r7, r0
- mov r9, r8
- mov r4, #1
- mov fp, #138 ; 0x8a
- mov r5, #112 ; 0x70
-_037F8060:
- add r6, sl, r9, lsl #8
- ldr r0, _037F81B4 ; =0x0000FFFF
- mov r1, r6
- mov r2, r5
- bl FUN_037F81B8
- mov r2, r6
- ldrh r1, [r2, #114] ; 0x72
- cmp r0, r1
- bne _037F80E0
- ldrh r0, [r2, #112] ; 0x70
- cmp r0, #128 ; 0x80
- bcs _037F80E0
- ldr r0, _037F81B4 ; =0x0000FFFF
- add r1, r6, #116 ; 0x74
- mov r2, fp
- bl FUN_037F81B8
- mov r3, r6
- ldrh r1, [r3, #254] ; 0xfe
- cmp r0, r1
- bne _037F80E0
- ldrh r2, [r3, #118] ; 0x76
- ldrb r0, [r3, #117] ; 0x75
- mov r1, r4, lsl r0
- ands r1, r1, r2
- beq _037F80E0
- ands r1, r7, r2
- ldrneh r1, [r6, #100] ; 0x64
- bicne r1, r1, #7
- andne r0, r0, #7
- orrne r0, r1, r0
- strneh r0, [r6, #100] ; 0x64
- orr r8, r8, r4, lsl r9
-_037F80E0:
- add r0, r9, #1
- mov r0, r0, lsl #16
- mov r9, r0, lsr #16
- cmp r9, #2
- bcc _037F8060
- b _037F8158
-_037F80F8:
- bl FUN_037F81C4
- cmp r0, #0
- movne r0, #3
- bne _037F81A8
- mov r7, r8
- mov r4, #1
- ldr r6, _037F81B4 ; =0x0000FFFF
- mov r5, #112 ; 0x70
-_037F8118:
- mov r0, r6
- add r1, sl, r7, lsl #8
- mov r2, r5
- bl FUN_037F81B8
- add r2, sl, r7, lsl #8
- ldrh r1, [r2, #114] ; 0x72
- cmp r0, r1
- bne _037F8144
- ldrh r0, [r2, #112] ; 0x70
- cmp r0, #128 ; 0x80
- orrcc r8, r8, r4, lsl r7
-_037F8144:
- add r0, r7, #1
- mov r0, r0, lsl #16
- mov r7, r0, lsr #16
- cmp r7, #2
- bcc _037F8118
-_037F8158:
- cmp r8, #1
- beq _037F8174
- cmp r8, #2
- beq _037F8174
- cmp r8, #3
- beq _037F817C
- b _037F81A4
-_037F8174:
- mov r0, r8
- b _037F81A8
-_037F817C:
- ldrh r0, [sl, #112] ; 0x70
- add r0, r0, #1
- and r0, r0, #127 ; 0x7f
- and r1, r0, #255 ; 0xff
- add r0, sl, #256 ; 0x100
- ldrh r0, [r0, #112] ; 0x70
- cmp r1, r0
- moveq r0, #2
- movne r0, #1
- b _037F81A8
-_037F81A4:
- mov r0, #0
-_037F81A8:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037F81B4: .word 0x0000FFFF
-
- arm_func_start FUN_037F81B8
-FUN_037F81B8: ; 0x037F81B8
- ldr ip, _037F81C0 ; =SVC_GetCRC16
- bx ip
-_037F81C0: .word SVC_GetCRC16
-
- arm_func_start FUN_037F81C4
-FUN_037F81C4: ; 0x037F81C4
- mov r0, #0
- ldr r1, _037F81E4 ; =0x027FFE1D
- ldrb r1, [r1]
- cmp r1, #128 ; 0x80
- orreq r0, r0, #64 ; 0x40
- moveq r0, r0, lsl #16
- moveq r0, r0, lsr #16
- bx lr
-_037F81E4: .word 0x027FFE1D
-
- arm_func_start FUN_037F81E8
-FUN_037F81E8: ; 0x037F81E8
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #29
- mov r1, #1
- add r2, sp, #0
- bl NVRAM_ReadDataBytes
- ldrb r0, [sp]
- cmp r0, #255 ; 0xff
- moveq r0, #0
- beq _037F821C
- ands r0, r0, #64 ; 0x40
- movne r0, #1
- moveq r0, #0
-_037F821C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_037F8228
-FUN_037F8228: ; 0x037F8228
- stmdb sp!, {r4, lr}
- sub sp, sp, #528 ; 0x210
- mov r0, #32
- mov r1, #2
- add r2, sp, #4
- bl NVRAM_ReadDataBytes
- ldr r0, [sp, #4]
- mov r0, r0, lsl #3
- str r0, [sp, #4]
- mov r1, #256 ; 0x100
- add r2, sp, #16
- bl NVRAM_ReadDataBytes
- ldr r0, [sp, #4]
- add r0, r0, #256 ; 0x100
- mov r1, #256 ; 0x100
- add r2, sp, #272 ; 0x110
- bl NVRAM_ReadDataBytes
- add r0, sp, #16
- bl FUN_037F802C
- cmp r0, #3
- blt _037F8290
- mvn r0, #0
- ldr r1, _037F83A4 ; =0x027FFC80
- mov r2, #116 ; 0x74
- bl MIi_CpuClear32
- b _037F834C
-_037F8290:
- cmp r0, #0
- beq _037F833C
- mov r2, r0, lsl #8
- ldr r1, _037F83A8 ; =0xFFFFFF2A
- add r1, sp, r1
- ldrb r1, [r1, r0, lsl #8]
- cmp r1, #10
- bcs _037F82DC
- mov ip, #10
- mov r3, #0
- add r1, sp, #16
- add r2, r1, r2
- b _037F82D0
-_037F82C4:
- add r1, r2, ip, lsl #1
- strh r3, [r1, #-252] ; 0xffffff04
- sub ip, ip, #1
-_037F82D0:
- ldrb r1, [r2, #-230] ; 0xffffff1a
- cmp ip, r1
- bgt _037F82C4
-_037F82DC:
- mov r2, r0, lsl #8
- ldr r1, _037F83AC ; =0xFFFFFF60
- add r1, sp, r1
- ldrb r1, [r1, r0, lsl #8]
- cmp r1, #26
- bcs _037F8320
- mov ip, #26
- mov r3, #0
- add r1, sp, #16
- add r2, r1, r2
- b _037F8314
-_037F8308:
- add r1, r2, ip, lsl #1
- strh r3, [r1, #-230] ; 0xffffff1a
- sub ip, ip, #1
-_037F8314:
- ldrb r1, [r2, #-176] ; 0xffffff50
- cmp ip, r1
- bgt _037F8308
-_037F8320:
- add r1, sp, #16
- sub r0, r0, #1
- add r0, r1, r0, lsl #8
- ldr r1, _037F83A4 ; =0x027FFC80
- mov r2, #116 ; 0x74
- bl MIi_CpuCopy32
- b _037F834C
-_037F833C:
- mov r0, #0
- ldr r1, _037F83A4 ; =0x027FFC80
- mov r2, #116 ; 0x74
- bl MIi_CpuClear32
-_037F834C:
- mov r0, #54 ; 0x36
- mov r1, #6
- add r2, sp, #8
- bl NVRAM_ReadDataBytes
- ldr r0, _037F83A4 ; =0x027FFC80
- add r4, r0, #116 ; 0x74
- add r0, sp, #8
- mov r1, r4
- mov r2, #6
- bl MI_CpuCopy8
- mov r0, #60 ; 0x3c
- mov r1, #2
- add r2, sp, #0
- bl NVRAM_ReadDataBytes
- ldrh r0, [sp]
- mov r0, r0, lsl #15
- mov r0, r0, lsr #16
- bl WMSP_GetAllowedChannel
- strh r0, [r4, #6]
- add sp, sp, #528 ; 0x210
- ldmia sp!, {r4, lr}
- bx lr
-_037F83A4: .word 0x027FFC80
-_037F83A8: .word 0xFFFFFF2A
-_037F83AC: .word 0xFFFFFF60
-
- arm_func_start FUN_037F83B0
-FUN_037F83B0: ; 0x037F83B0
- stmdb sp!, {r4, lr}
- mov r0, #8
- bl OS_GetArenaHi
- mov r4, r0
- mov r0, #8
- bl OS_GetArenaLo
- mov r1, r0
- mov r0, #8
- mov r2, r4
- mov r3, #1
- bl OS_InitAlloc
- mov r4, r0
- mov r0, #8
- bl OS_GetArenaHi
- mov r2, r0
- mov r0, r4
- mov r1, #0
- sub r2, r2, r4
- bl MI_CpuFill8
- mov r0, #8
- mov r1, r4
- bl OS_SetArenaLo
- mov r0, #8
- bl OS_GetArenaHi
- mov r4, r0
- mov r0, #8
- bl OS_GetArenaLo
- mov r1, r0
- mov r0, #8
- mov r2, r4
- bl OS_CreateHeap
- movs r4, r0
- bpl _037F8438
- bl FUN_037FB1F0
-_037F8438:
- mov r0, #8
- mov r1, r4
- bl OS_SetCurrentHeap
- mov r0, #8
- mov r1, r4
- bl OS_CheckHeap
- cmp r0, #8448 ; 0x2100
- bcs _037F845C
- bl FUN_037FB1F0
-_037F845C:
- mov r0, r4
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start NitroSpMain
-NitroSpMain: ; 0x037F8468
- stmdb sp!, {r4, lr}
- bl WVR_ShelterExtWram
- bl OS_Init
- bl OS_InitThread
- bl FUN_037F8228
- bl PXI_Init
- bl FUN_037F83B0
- mov r4, r0
- mov r0, #6
- bl SND_Init
- bl PAD_InitXYButton
- mov r0, #1
- ldr r1, _037F8524 ; =FUN_037F8000
- bl OS_SetIrqFunction
- mov r0, #1
- bl OS_EnableIrqMask
- ldr r1, _037F8528 ; =0x04000004
- ldrh r0, [r1]
- ldrh r0, [r1]
- orr r0, r0, #8
- strh r0, [r1]
- ldr r1, _037F852C ; =0x04000208
- ldrh r0, [r1]
- mov r0, #1
- strh r0, [r1]
- bl OS_EnableInterrupts
- mvn r0, #0
- bl FS_Init
- mov r0, #15
- bl CARD_SetThreadPriority
- mov r0, #12
- bl RTC_Init
- mov r0, r4
- bl WVR_Init
- mov r0, #2
- bl SPI_Init
- mov r4, #0
-_037F84FC:
- bl FUN_037F8530
- bl OS_IsResetOccurred
- cmp r0, #0
- beq _037F8518
- mov r0, r4
- bl CTRDG_VibPulseEdgeUpdate
- bl OS_ResetSystem
-_037F8518:
- bl CTRDG_CheckPullOut_Polling
- bl CARD_CheckPullOut_Polling
- b _037F84FC
-_037F8524: .word FUN_037F8000
-_037F8528: .word 0x04000004
-_037F852C: .word 0x04000208
-
- arm_func_start FUN_037F8530
-FUN_037F8530: ; 0x037F8530
- ldr ip, _037F8538 ; =SVC_Halt
- bx ip
-_037F8538: .word SVC_Halt
-
- arm_func_start OS_IrqHandler
-OS_IrqHandler: ; 0x037F853C
- stmfd sp!, {lr}
- mov ip, #67108864 ; 0x4000000
- add ip, ip, #528 ; 0x210
- ldr r1, [ip, #-8]
- cmp r1, #0
- ldmeqfd sp!, {pc}
- ldmia ip, {r1, r2}
- ands r1, r1, r2
- ldmeqfd sp!, {pc}
- mov r3, #1
- mov r0, #0
-_037F8568:
- ands r2, r1, r3, lsl r0
- addeq r0, r0, #1
- beq _037F8568
- str r2, [ip, #4]
- ldr r1, _037F8588 ; =OS_IRQTable
- ldr r0, [r1, r0, lsl #2]
- ldr lr, _037F858C ; =OS_IrqHandler_ThreadSwitch
- bx r0
-_037F8588: .word OS_IRQTable
-_037F858C: .word OS_IrqHandler_ThreadSwitch
-
- arm_func_start OS_IrqHandler_ThreadSwitch
-OS_IrqHandler_ThreadSwitch:
- ldr ip, _037F86AC ; =OSi_IrqThreadQueue
- mov r3, #0
- ldr ip, [ip]
- mov r2, #1
- cmp ip, #0
- beq _037F85E0
-_037F85A8:
- str r2, [ip, #72] ; 0x48
- str r3, [ip, #92] ; 0x5c
- str r3, [ip, #96] ; 0x60
- ldr r0, [ip, #100] ; 0x64
- str r3, [ip, #100] ; 0x64
- mov ip, r0
- cmp ip, #0
- bne _037F85A8
- ldr ip, _037F86AC ; =OSi_IrqThreadQueue
- str r3, [ip]
- str r3, [ip, #4]
- ldr ip, _037F86B0 ; =OSi_ThreadInfo
- mov r1, #1
- strh r1, [ip]
-_037F85E0:
- ldr ip, _037F86B0 ; =OSi_ThreadInfo
- ldrh r1, [ip]
- cmp r1, #0
- ldreq pc, [sp], #4 ; (ldreq pc, [sp], #4)
- mov r1, #0
- strh r1, [ip]
- mov r3, #210 ; 0xd2
- msr CPSR_c, r3
- add r2, ip, #8
- ldr r1, [r2]
-_037F8608:
- cmp r1, #0
- ldrneh r0, [r1, #72] ; 0x48
- cmpne r0, #1
- ldrne r1, [r1, #76] ; 0x4c
- bne _037F8608
- cmp r1, #0
- bne _037F8630
-_037F8624:
- mov r3, #146 ; 0x92
- msr CPSR_c, r3
- ldr pc, [sp], #4
-_037F8630:
- ldr r0, [ip, #4]
- cmp r1, r0
- beq _037F8624
- ldr r3, [ip, #12]
- cmp r3, #0
- beq _037F8658
-
- arm_func_start FUN_037F8648
-FUN_037F8648: ; 0x037F8648
- stmdb sp!, {r0, r1, ip}
- mov lr, pc
- bx r3
- ldmia sp!, {r0, r1, ip}
-_037F8658:
- str r1, [ip, #4]
- mrs r2, SPSR
- str r2, [r0, #0]!
- ldmib sp!, {r2, r3}
- stmib r0!, {r2, r3}
- ldmib sp!, {r2, r3, ip, lr}
- stmib r0!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^
- stmib r0!, {lr}
- mov r3, #211 ; 0xd3
- msr CPSR_c, r3
- stmib r0!, {sp}
- ldr sp, [r1, #68] ; 0x44
- mov r3, #210 ; 0xd2
- msr CPSR_c, r3
- ldr r2, [r1, #0]!
- msr SPSR_fc, r2
- ldr lr, [r1, #64] ; 0x40
- ldmib r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^
- nop ; (mov r0, r0)
- stmda sp!, {r0, r1, r2, r3, ip, lr}
- ldmia sp!, {pc}
-_037F86AC: .word OSi_IrqThreadQueue
-_037F86B0: .word OSi_ThreadInfo
-
- arm_func_start OSi_IrqVBlank
-OSi_IrqVBlank: ; 0x037F86B4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037F8700 ; =OSi_IrqCallbackInfo
- ldr r2, [r0, #96] ; 0x60
- ldr r1, _037F8704 ; =0x027FFC3C
- ldr r0, [r1]
- add r0, r0, #1
- str r0, [r1]
- cmp r2, #0
- beq _037F86E4
- mov lr, pc
- bx r2
-_037F86E4:
- ldr r1, _037F8708 ; =0x0380FFF8
- ldr r0, [r1]
- orr r0, r0, #1
- str r0, [r1]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F8700: .word OSi_IrqCallbackInfo
-_037F8704: .word 0x027FFC3C
-_037F8708: .word 0x0380FFF8
-
- arm_func_start OSi_IrqTimer3
-OSi_IrqTimer3: ; 0x037F870C
- mov r0, #7
- ldr ip, _037F8718 ; =OSi_IrqCallback
- bx ip
-_037F8718: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqTimer2
-OSi_IrqTimer2: ; 0x037F871C
- mov r0, #6
- ldr ip, _037F8728 ; =OSi_IrqCallback
- bx ip
-_037F8728: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqTimer1
-OSi_IrqTimer1: ; 0x037F872C
- mov r0, #5
- ldr ip, _037F8738 ; =OSi_IrqCallback
- bx ip
-_037F8738: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqTimer0
-OSi_IrqTimer0: ; 0x037F873C
- mov r0, #4
- ldr ip, _037F8748 ; =OSi_IrqCallback
- bx ip
-_037F8748: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqDma3
-OSi_IrqDma3: ; 0x037F874C
- mov r0, #3
- ldr ip, _037F8758 ; =OSi_IrqCallback
- bx ip
-_037F8758: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqDma2
-OSi_IrqDma2: ; 0x037F875C
- mov r0, #2
- ldr ip, _037F8768 ; =OSi_IrqCallback
- bx ip
-_037F8768: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqDma1
-OSi_IrqDma1: ; 0x037F876C
- mov r0, #1
- ldr ip, _037F8778 ; =OSi_IrqCallback
- bx ip
-_037F8778: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqDma0
-OSi_IrqDma0: ; 0x037F877C
- mov r0, #0
- ldr ip, _037F8788 ; =OSi_IrqCallback
- bx ip
-_037F8788: .word OSi_IrqCallback
-
- arm_func_start OSi_IrqCallback
-OSi_IrqCallback: ; 0x037F878C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r3, #1
- mov r2, r0, lsl #1
- ldr r1, _037F880C ; =_038075E4
- ldrh r1, [r1, r2]
- mov r5, r3, lsl r1
- mov r1, #12
- mul r4, r0, r1
- ldr r2, _037F8810 ; =OSi_IrqCallbackInfo
- ldr r1, [r2, r4]
- mov r0, #0
- str r0, [r2, r4]
- cmp r1, #0
- beq _037F87D8
- ldr r0, _037F8814 ; =_0380771C
- ldr r0, [r0, r4]
- mov lr, pc
- bx r1
-_037F87D8:
- ldr r1, _037F8818 ; =0x0380FFF8
- ldr r0, [r1]
- orr r0, r0, r5
- str r0, [r1]
- ldr r0, _037F881C ; =_03807718
- ldr r0, [r0, r4]
- cmp r0, #0
- bne _037F8800
- mov r0, r5
- bl OS_DisableIrqMask
-_037F8800:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F880C: .word _038075E4
-_037F8810: .word OSi_IrqCallbackInfo
-_037F8814: .word _0380771C
-_037F8818: .word 0x0380FFF8
-_037F881C: .word _03807718
-
- arm_func_start OS_IrqDummy
-OS_IrqDummy: ; 0x037F8820
- bx lr
-
- arm_func_start OS_ResetRequestIrqMask
-OS_ResetRequestIrqMask: ; 0x037F8824
- ldr ip, _037F8850 ; =0x04000208
- ldrh r3, [ip]
- mov r1, #0
- strh r1, [ip]
- ldr r2, _037F8854 ; =0x04000214
- ldr r1, [r2]
- str r0, [r2]
- ldrh r0, [ip]
- strh r3, [ip]
- mov r0, r1
- bx lr
-_037F8850: .word 0x04000208
-_037F8854: .word 0x04000214
-
- arm_func_start OS_DisableIrqMask
-OS_DisableIrqMask: ; 0x037F8858
- ldr ip, _037F888C ; =0x04000208
- ldrh r3, [ip]
- mov r1, #0
- strh r1, [ip]
- ldr r2, _037F8890 ; =0x04000210
- ldr r1, [r2]
- mvn r0, r0
- and r0, r1, r0
- str r0, [r2]
- ldrh r0, [ip]
- strh r3, [ip]
- mov r0, r1
- bx lr
-_037F888C: .word 0x04000208
-_037F8890: .word 0x04000210
-
- arm_func_start OS_EnableIrqMask
-OS_EnableIrqMask: ; 0x037F8894
- ldr ip, _037F88C4 ; =0x04000208
- ldrh r3, [ip]
- mov r1, #0
- strh r1, [ip]
- ldr r2, _037F88C8 ; =0x04000210
- ldr r1, [r2]
- orr r0, r1, r0
- str r0, [r2]
- ldrh r0, [ip]
- strh r3, [ip]
- mov r0, r1
- bx lr
-_037F88C4: .word 0x04000208
-_037F88C8: .word 0x04000210
-
- arm_func_start OS_SetIrqMask
-OS_SetIrqMask: ; 0x037F88CC
- ldr ip, _037F88F8 ; =0x04000208
- ldrh r3, [ip]
- mov r1, #0
- strh r1, [ip]
- ldr r2, _037F88FC ; =0x04000210
- ldr r1, [r2]
- str r0, [r2]
- ldrh r0, [ip]
- strh r3, [ip]
- mov r0, r1
- bx lr
-_037F88F8: .word 0x04000208
-_037F88FC: .word 0x04000210
-
- arm_func_start OSi_EnterTimerCallback
-OSi_EnterTimerCallback: ; 0x037F8900
- stmdb sp!, {r4, lr}
- mov r3, #12
- mul r4, r0, r3
- ldr r3, _037F8940 ; =_03807744
- str r1, [r3, r4]
- ldr r1, _037F8944 ; =_0380774C
- str r2, [r1, r4]
- mov r1, #1
- add r0, r0, #3
- mov r0, r1, lsl r0
- bl OS_EnableIrqMask
- mov r1, #1
- ldr r0, _037F8948 ; =_03807748
- str r1, [r0, r4]
- ldmia sp!, {r4, lr}
- bx lr
-_037F8940: .word _03807744
-_037F8944: .word _0380774C
-_037F8948: .word _03807748
-
- arm_func_start OS_SetIrqFunction
-OS_SetIrqFunction: ; 0x037F894C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r9, #0
- mov r7, r9
- ldr lr, _037F89E8 ; =OS_IRQTable
- ldr r4, _037F89EC ; =_03807774
- ldr r6, _037F89F0 ; =OSi_IrqCallbackInfo
- mov ip, r9
- mov r3, #1
- mov r2, #12
-_037F8974:
- ands r5, r0, #1
- beq _037F89CC
- mov r8, r7
- cmp r9, #8
- blt _037F8998
- cmp r9, #11
- suble r5, r9, #8
- mlale r8, r5, r2, r6
- ble _037F89BC
-_037F8998:
- cmp r9, #3
- blt _037F89B0
- cmp r9, #6
- addle r5, r9, #1
- mlale r8, r5, r2, r6
- ble _037F89BC
-_037F89B0:
- cmp r9, #0
- moveq r8, r4
- strne r1, [lr, r9, lsl #2]
-_037F89BC:
- cmp r8, #0
- strne r1, [r8]
- strne ip, [r8, #8]
- strne r3, [r8, #4]
-_037F89CC:
- mov r0, r0, lsr #1
- add r9, r9, #1
- cmp r9, #25
- blt _037F8974
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037F89E8: .word OS_IRQTable
-_037F89EC: .word _03807774
-_037F89F0: .word OSi_IrqCallbackInfo
-
- arm_func_start OS_InitIrqTable
-OS_InitIrqTable: ; 0x037F89F4
- mov r1, #0
- ldr r0, _037F8A10 ; =OSi_IrqThreadQueue
- str r1, [r0, #4]
- str r1, [r0]
- ldr r0, _037F8A14 ; =0x027FFC3C
- str r1, [r0]
- bx lr
-_037F8A10: .word OSi_IrqThreadQueue
-_037F8A14: .word 0x027FFC3C
-
- 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
-_037F8AF4:
- bx lr
-_037F8AF8:
- bx lr
-
- arm_func_start OS_TryLockCartridge
-OS_TryLockCartridge: ; 0x037F8AFC
- ldr r1, _037F8B10 ; =0x027FFFE8
- ldr r2, _037F8B14 ; =_037F8AF8
- mov r3, #1
- ldr ip, _037F8B18 ; =FUN_037F8B5C
- bx ip
-_037F8B10: .word 0x027FFFE8
-_037F8B14: .word _037F8AF8
-_037F8B18: .word FUN_037F8B5C
-
- arm_func_start OS_UnlockCartridge
-OS_UnlockCartridge: ; 0x037F8B1C
- ldr r1, _037F8B30 ; =0x027FFFE8
- ldr r2, _037F8B34 ; =_037F8AF4
- mov r3, #1
- ldr ip, _037F8B38 ; =FUN_037F8BE0
- bx ip
-_037F8B30: .word 0x027FFFE8
-_037F8B34: .word _037F8AF4
-_037F8B38: .word FUN_037F8BE0
-
- arm_func_start OS_LockCartridge
-OS_LockCartridge: ; 0x037F8B3C
- ldr r1, _037F8B50 ; =0x027FFFE8
- ldr r2, _037F8B54 ; =_037F8AF8
- mov r3, #1
- ldr ip, _037F8B58 ; =FUN_037F8C6C
- bx ip
-_037F8B50: .word 0x027FFFE8
-_037F8B54: .word _037F8AF8
-_037F8B58: .word FUN_037F8C6C
-
- arm_func_start FUN_037F8B5C
-FUN_037F8B5C: ; 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 FUN_037F8BE0
-FUN_037F8BE0: ; 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 FUN_037F8C6C
-FUN_037F8C6C: ; 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 FUN_037F8B5C
- cmp r0, #0
- bgt _037F8C88
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start FUN_037F8CB4
-FUN_037F8CB4: ; 0x037F8CB4
- 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
-
- arm_func_start OS_SetThreadDestructor
-OS_SetThreadDestructor: ; 0x037F8D48
- str r1, [r0, #152] ; 0x98
- bx lr
-
- arm_func_start OS_EnableScheduler
-OS_EnableScheduler: ; 0x037F8D50
- stmdb sp!, {r4, lr}
- bl OS_DisableInterrupts
- mov r4, #0
- ldr r1, _037F8D84 ; =OSi_RescheduleCount
- ldr r3, [r1]
- cmp r3, #0
- subne r2, r3, #1
- strne r2, [r1]
- movne r4, r3
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4, lr}
- bx lr
-_037F8D84: .word OSi_RescheduleCount
-
- arm_func_start OS_DisableScheduler
-OS_DisableScheduler: ; 0x037F8D88
- stmdb sp!, {r4, lr}
- bl OS_DisableInterrupts
- ldr r2, _037F8DBC ; =OSi_RescheduleCount
- ldr r3, [r2]
- mvn r1, #0
- cmp r3, r1
- addcc r1, r3, #1
- strcc r1, [r2]
- movcc r4, r3
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4, lr}
- bx lr
-_037F8DBC: .word OSi_RescheduleCount
-
- arm_func_start OS_SetSwitchThreadCallback
-OS_SetSwitchThreadCallback: ; 0x037F8DC0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _037F8DF0 ; =OSi_ThreadInfo
- ldr r4, [r1, #12]
- str r5, [r1, #12]
- bl OS_RestoreInterrupts
- mov r0, r4
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F8DF0: .word OSi_ThreadInfo
-_037F8DF4:
- ldr r2, [r0]
- mov r1, #0
- str r1, [r0]
- str r1, [r2, #148] ; 0x94
- mov r0, r2
- ldr ip, _037F8E10 ; =OS_WakeupThreadDirect
- bx ip
-_037F8E10: .word OS_WakeupThreadDirect
-
- arm_func_start OS_Sleep
-OS_Sleep: ; 0x037F8E14
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #52 ; 0x34
- mov r5, r0
- add r0, sp, #8
- bl OS_CreateAlarm
- ldr r0, _037F8EAC ; =OSi_CurrentThreadPtr
- ldr r0, [r0]
- ldr r0, [r0]
- str r0, [sp, #4]
- bl OS_DisableInterrupts
- mov r4, r0
- add r0, sp, #8
- ldr r1, [sp, #4]
- str r0, [r1, #148] ; 0x94
- add r1, sp, #4
- str r1, [sp]
- mov r2, #0
- ldr r1, _037F8EB0 ; =0x000082EA
- umull ip, r3, r5, r1
- mla r3, r5, r2, r3
- mla r3, r2, r1, r3
- mov r2, r3, lsr #6
- mov r1, ip, lsr #6
- orr r1, r1, r3, lsl #26
- ldr r3, _037F8EB4 ; =_037F8DF4
- bl OS_SetAlarm
- mov r5, #0
- b _037F8E8C
-_037F8E84:
- mov r0, r5
- bl OS_SleepThread
-_037F8E8C:
- ldr r0, [sp, #4]
- cmp r0, #0
- bne _037F8E84
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #52 ; 0x34
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F8EAC: .word OSi_CurrentThreadPtr
-_037F8EB0: .word 0x000082EA
-_037F8EB4: .word _037F8DF4
-
- arm_func_start OS_SetThreadPriority
-OS_SetThreadPriority: ; 0x037F8EB8
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r6, r0
- mov r5, r1
- ldr r0, _037F8F60 ; =OSi_ThreadInfo
- ldr r8, [r0, #8]
- mov r7, #0
- bl OS_DisableInterrupts
- mov r4, r0
- b _037F8EE4
-_037F8EDC:
- mov r7, r8
- ldr r8, [r8, #76] ; 0x4c
-_037F8EE4:
- cmp r8, #0
- beq _037F8EF4
- cmp r8, r6
- bne _037F8EDC
-_037F8EF4:
- cmp r8, #0
- beq _037F8F08
- ldr r0, _037F8F64 ; =OSi_IdleThread
- cmp r8, r0
- bne _037F8F18
-_037F8F08:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037F8F58
-_037F8F18:
- ldr r0, [r8, #84] ; 0x54
- cmp r0, r5
- beq _037F8F4C
- cmp r7, #0
- ldreq r1, [r6, #76] ; 0x4c
- ldreq r0, _037F8F60 ; =OSi_ThreadInfo
- streq r1, [r0, #8]
- ldrne r0, [r6, #76] ; 0x4c
- strne r0, [r7, #76] ; 0x4c
- str r5, [r6, #84] ; 0x54
- mov r0, r6
- bl FUN_037F9584
- bl FUN_037F945C
-_037F8F4C:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #1
-_037F8F58:
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037F8F60: .word OSi_ThreadInfo
-_037F8F64: .word OSi_IdleThread
-
- arm_func_start OS_RescheduleThread
-OS_RescheduleThread: ; 0x037F8F68
- stmdb sp!, {r4, lr}
- bl OS_DisableInterrupts
- mov r4, r0
- bl FUN_037F945C
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start OS_SelectThread
-OS_SelectThread: ; 0x037F8F88
- ldr r0, _037F8FB0 ; =OSi_ThreadInfo
- ldr r0, [r0, #8]
- b _037F8F98
-_037F8F94:
- ldr r0, [r0, #76] ; 0x4c
-_037F8F98:
- cmp r0, #0
- bxeq lr
- ldr r1, [r0, #72] ; 0x48
- cmp r1, #1
- bne _037F8F94
- bx lr
-_037F8FB0: .word OSi_ThreadInfo
-
- arm_func_start OS_WakeupThreadDirect
-OS_WakeupThreadDirect: ; 0x037F8FB4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- mov r0, #1
- str r0, [r5, #72] ; 0x48
- bl FUN_037F945C
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start OS_WakeupThread
-OS_WakeupThread: ; 0x037F8FE8
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, [r5]
- cmp r0, #0
- beq _037F9050
- mov r7, #1
- mov r6, #0
- b _037F9030
-_037F9014:
- mov r0, r5
- bl FUN_037F967C
- str r7, [r0, #72] ; 0x48
- str r6, [r0, #92] ; 0x5c
- str r6, [r0, #100] ; 0x64
- ldr r1, [r0, #100] ; 0x64
- str r1, [r0, #96] ; 0x60
-_037F9030:
- ldr r0, [r5]
- cmp r0, #0
- bne _037F9014
- mov r0, #0
- str r0, [r5, #4]
- ldr r0, [r5, #4]
- str r0, [r5]
- bl FUN_037F945C
-_037F9050:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start OS_SleepThread
-OS_SleepThread: ; 0x037F9064
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- bl OS_DisableInterrupts
- mov r5, r0
- ldr r0, _037F90B4 ; =OSi_CurrentThreadPtr
- ldr r0, [r0]
- ldr r4, [r0]
- cmp r6, #0
- beq _037F9098
- str r6, [r4, #92] ; 0x5c
- mov r0, r6
- mov r1, r4
- bl FUN_037F96B0
-_037F9098:
- mov r0, #0
- str r0, [r4, #72] ; 0x48
- bl FUN_037F945C
- mov r0, r5
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-_037F90B4: .word OSi_CurrentThreadPtr
-
- arm_func_start OS_IsThreadTerminated
-OS_IsThreadTerminated: ; 0x037F90B8
- ldr r0, [r0, #72] ; 0x48
- cmp r0, #2
- moveq r0, #1
- movne r0, #0
- bx lr
-
- arm_func_start OS_JoinThread
-OS_JoinThread: ; 0x037F90CC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, [r5, #72] ; 0x48
- cmp r0, #2
- beq _037F90F4
- add r0, r5, #128 ; 0x80
- bl OS_SleepThread
-_037F90F4:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037F9108
-FUN_037F9108: ; 0x037F9108
- stmdb sp!, {r4, lr}
- ldr r0, _037F9164 ; =OSi_CurrentThreadPtr
- ldr r0, [r0]
- ldr r4, [r0]
- bl OS_DisableScheduler
- mov r0, r4
- bl OSi_UnlockAllMutex
- ldr r0, [r4, #92] ; 0x5c
- cmp r0, #0
- beq _037F9138
- mov r1, r4
- bl FUN_037F961C
-_037F9138:
- mov r0, r4
- bl FUN_037F953C
- mov r0, #2
- str r0, [r4, #72] ; 0x48
- add r0, r4, #128 ; 0x80
- bl OS_WakeupThread
- bl OS_EnableScheduler
- bl OS_RescheduleThread
- bl FUN_037FB1F0
- ldmia sp!, {r4, lr}
- bx lr
-_037F9164: .word OSi_CurrentThreadPtr
-
- arm_func_start FUN_037F9168
-FUN_037F9168: ; 0x037F9168
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037F91AC ; =OSi_CurrentThreadPtr
- ldr r1, [r1]
- ldr r3, [r1]
- ldr r2, [r3, #152] ; 0x98
- cmp r2, #0
- beq _037F919C
- mov r1, #0
- str r1, [r3, #152] ; 0x98
- mov lr, pc
- bx r2
- bl OS_DisableInterrupts
-_037F919C:
- bl FUN_037F9108
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F91AC: .word OSi_CurrentThreadPtr
-
- arm_func_start FUN_037F91B0
-FUN_037F91B0: ; 0x037F91B0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- ldr r1, _037F9210 ; =OSi_StackForDestructor
- ldr r2, [r1]
- cmp r2, #0
- beq _037F91FC
- ldr r1, _037F9214 ; =FUN_037F9168
- bl OS_InitContext
- str r4, [r5, #4]
- ldr r0, [r5]
- orr r0, r0, #128 ; 0x80
- str r0, [r5]
- mov r0, #1
- str r0, [r5, #72] ; 0x48
- mov r0, r5
- bl OS_LoadContext
- b _037F9204
-_037F91FC:
- mov r0, r4
- bl FUN_037F9168
-_037F9204:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F9210: .word OSi_StackForDestructor
-_037F9214: .word FUN_037F9168
-
- arm_func_start OS_ExitThread
-OS_ExitThread: ; 0x037F9218
- stmfd sp!, {lr}
- sub sp, sp, #4
- bl OS_DisableInterrupts
- ldr r0, _037F9240 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- mov r1, #0
- bl FUN_037F91B0
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F9240: .word OSi_ThreadInfo
-
- arm_func_start OS_CreateThread
-OS_CreateThread: ; 0x037F9244
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r9, r0
- mov r8, r1
- mov r7, r2
- mov r6, r3
- bl OS_DisableInterrupts
- mov r4, r0
- bl FUN_037F9728
- ldr r1, [sp, #36] ; 0x24
- str r1, [r9, #84] ; 0x54
- str r0, [r9, #80] ; 0x50
- mov r0, #0
- str r0, [r9, #72] ; 0x48
- str r0, [r9, #88] ; 0x58
- mov r0, r9
- bl FUN_037F9584
- str r6, [r9, #120] ; 0x78
- ldr r0, [sp, #32]
- sub r5, r6, r0
- str r5, [r9, #116] ; 0x74
- mov r2, #0
- str r2, [r9, #124] ; 0x7c
- ldr r1, _037F9348 ; =0xD73BFDF7
- ldr r0, [r9, #120] ; 0x78
- str r1, [r0, #-4]
- ldr r1, _037F934C ; =0xFBDD37BB
- ldr r0, [r9, #116] ; 0x74
- str r1, [r0]
- str r2, [r9, #132] ; 0x84
- ldr r0, [r9, #132] ; 0x84
- str r0, [r9, #128] ; 0x80
- mov r0, r9
- mov r1, r8
- sub r2, r6, #4
- bl OS_InitContext
- str r7, [r9, #4]
- ldr r0, _037F9350 ; =OS_ExitThread
- str r0, [r9, #60] ; 0x3c
- mov r0, #0
- add r1, r5, #4
- ldr r2, [sp, #32]
- sub r2, r2, #8
- bl MIi_CpuClear32
- mov r1, #0
- str r1, [r9, #104] ; 0x68
- str r1, [r9, #108] ; 0x6c
- str r1, [r9, #112] ; 0x70
- mov r0, r9
- bl OS_SetThreadDestructor
- mov r0, #0
- str r0, [r9, #92] ; 0x5c
- str r0, [r9, #100] ; 0x64
- ldr r1, [r9, #100] ; 0x64
- str r1, [r9, #96] ; 0x60
- add r1, r9, #136 ; 0x88
- mov r2, #12
- bl MIi_CpuClear32
- mov r0, #0
- str r0, [r9, #148] ; 0x94
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037F9348: .word 0xD73BFDF7
-_037F934C: .word 0xFBDD37BB
-_037F9350: .word OS_ExitThread
-
- arm_func_start OS_InitThread
-OS_InitThread: ; 0x037F9354
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037F942C ; =OSi_IsThreadInitialized
- ldr r1, [r0]
- cmp r1, #0
- bne _037F9420
- mov r2, #1
- str r2, [r0]
- ldr r1, _037F9430 ; =_038077A0
- ldr r0, _037F9434 ; =OSi_CurrentThreadPtr
- str r1, [r0]
- mov r0, #16
- ldr r1, _037F9438 ; =OSi_LauncherThread
- str r0, [r1, #84] ; 0x54
- mov r0, #0
- str r0, [r1, #80] ; 0x50
- str r2, [r1, #72] ; 0x48
- str r0, [r1, #76] ; 0x4c
- str r0, [r1, #88] ; 0x58
- ldr r0, _037F943C ; =OSi_ThreadInfo
- str r1, [r0, #8]
- str r1, [r0, #4]
- ldr r2, _037F9440 ; =0x00000400
- cmp r2, #0
- ldrle r0, _037F9444 ; =FUN_037F8000
- suble r2, r0, r2
- ldrgt r1, _037F9448 ; =0x00000400
- ldrgt r0, _037F944C ; =0x0380FF80
- subgt r0, r0, r1
- subgt r2, r0, r2
- ldr r1, _037F9448 ; =0x00000400
- ldr r0, _037F944C ; =0x0380FF80
- sub r3, r0, r1
- ldr r1, _037F9438 ; =OSi_LauncherThread
- str r3, [r1, #120] ; 0x78
- str r2, [r1, #116] ; 0x74
- mov r0, #0
- str r0, [r1, #124] ; 0x7c
- ldr r2, _037F9450 ; =0xD73BFDF7
- str r2, [r3, #-4]
- ldr r3, _037F9454 ; =0xFBDD37BB
- ldr r2, [r1, #116] ; 0x74
- str r3, [r2]
- str r0, [r1, #132] ; 0x84
- str r0, [r1, #128] ; 0x80
- ldr r1, _037F943C ; =OSi_ThreadInfo
- strh r0, [r1]
- strh r0, [r1, #2]
- ldr r2, _037F9458 ; =0x027FFFA4
- str r1, [r2]
- bl OS_SetSwitchThreadCallback
-_037F9420:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F942C: .word OSi_IsThreadInitialized
-_037F9430: .word _038077A0
-_037F9434: .word OSi_CurrentThreadPtr
-_037F9438: .word OSi_LauncherThread
-_037F943C: .word OSi_ThreadInfo
-_037F9440: .word 0x00000400
-_037F9444: .word FUN_037F8000
-_037F9448: .word 0x00000400
-_037F944C: .word 0x0380FF80
-_037F9450: .word 0xD73BFDF7
-_037F9454: .word 0xFBDD37BB
-_037F9458: .word 0x027FFFA4
-
- arm_func_start FUN_037F945C
-FUN_037F945C: ; 0x037F945C
- stmdb sp!, {r4, r5, r6, lr}
- ldr r0, _037F952C ; =OSi_RescheduleCount
- ldr r0, [r0]
- cmp r0, #0
- bne _037F9524
- ldr r4, _037F9530 ; =OSi_ThreadInfo
- ldrh r0, [r4, #2]
- cmp r0, #0
- bne _037F948C
- bl OS_GetProcMode
- cmp r0, #18
- bne _037F9498
-_037F948C:
- mov r0, #1
- strh r0, [r4]
- b _037F9524
-_037F9498:
- ldr r0, _037F9534 ; =OSi_CurrentThreadPtr
- ldr r0, [r0]
- ldr r6, [r0]
- bl OS_SelectThread
- mov r5, r0
- cmp r6, r5
- beq _037F9524
- cmp r5, #0
- beq _037F9524
- ldr r0, [r6, #72] ; 0x48
- cmp r0, #2
- beq _037F94D8
- mov r0, r6
- bl OS_SaveContext
- cmp r0, #0
- bne _037F9524
-_037F94D8:
- ldr r0, _037F9538 ; =OSi_SystemCallbackInSwitchThread
- ldr r2, [r0]
- cmp r2, #0
- beq _037F94F8
- mov r0, r6
- mov r1, r5
- mov lr, pc
- bx r2
-_037F94F8:
- ldr r2, [r4, #12]
- cmp r2, #0
- beq _037F9514
- mov r0, r6
- mov r1, r5
- mov lr, pc
- bx r2
-_037F9514:
- ldr r0, _037F9530 ; =OSi_ThreadInfo
- str r5, [r0, #4]
- mov r0, r5
- bl OS_LoadContext
-_037F9524:
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-_037F952C: .word OSi_RescheduleCount
-_037F9530: .word OSi_ThreadInfo
-_037F9534: .word OSi_CurrentThreadPtr
-_037F9538: .word OSi_SystemCallbackInSwitchThread
-
- arm_func_start FUN_037F953C
-FUN_037F953C: ; 0x037F953C
- ldr r1, _037F9580 ; =OSi_ThreadInfo
- ldr r2, [r1, #8]
- mov r1, #0
- b _037F9554
-_037F954C:
- mov r1, r2
- ldr r2, [r2, #76] ; 0x4c
-_037F9554:
- cmp r2, #0
- beq _037F9564
- cmp r2, r0
- bne _037F954C
-_037F9564:
- cmp r1, #0
- ldreq r1, [r0, #76] ; 0x4c
- ldreq r0, _037F9580 ; =OSi_ThreadInfo
- streq r1, [r0, #8]
- ldrne r0, [r0, #76] ; 0x4c
- strne r0, [r1, #76] ; 0x4c
- bx lr
-_037F9580: .word OSi_ThreadInfo
-
- arm_func_start FUN_037F9584
-FUN_037F9584: ; 0x037F9584
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037F95E8 ; =OSi_ThreadInfo
- ldr r3, [r1, #8]
- mov lr, r3
- mov ip, #0
- b _037F95A8
-_037F95A0:
- mov ip, lr
- ldr lr, [lr, #76] ; 0x4c
-_037F95A8:
- cmp lr, #0
- beq _037F95C0
- ldr r2, [lr, #84] ; 0x54
- ldr r1, [r0, #84] ; 0x54
- cmp r2, r1
- bcc _037F95A0
-_037F95C0:
- cmp ip, #0
- streq r3, [r0, #76] ; 0x4c
- ldreq r1, _037F95E8 ; =OSi_ThreadInfo
- streq r0, [r1, #8]
- ldrne r1, [ip, #76] ; 0x4c
- strne r1, [r0, #76] ; 0x4c
- strne r0, [ip, #76] ; 0x4c
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F95E8: .word OSi_ThreadInfo
-
- arm_func_start OSi_RemoveMutexLinkFromQueue
-OSi_RemoveMutexLinkFromQueue: ; 0x037F95EC
- ldr r2, [r0]
- cmp r2, #0
- beq _037F9614
- ldr r1, [r2, #16]
- str r1, [r0]
- cmp r1, #0
- movne r0, #0
- strne r0, [r1, #20]
- moveq r1, #0
- streq r1, [r0, #4]
-_037F9614:
- mov r0, r2
- bx lr
-
- arm_func_start FUN_037F961C
-FUN_037F961C: ; 0x037F961C
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r2, [r0]
- mov lr, r2
- b _037F9664
-_037F9630:
- ldr ip, [lr, #100] ; 0x64
- cmp lr, r1
- bne _037F9660
- ldr r3, [lr, #96] ; 0x60
- cmp r2, lr
- streq ip, [r0]
- strne ip, [r3, #100] ; 0x64
- ldr r1, [r0, #4]
- cmp r1, lr
- streq r3, [r0, #4]
- strne r3, [ip, #96] ; 0x60
- b _037F966C
-_037F9660:
- mov lr, ip
-_037F9664:
- cmp lr, #0
- bne _037F9630
-_037F966C:
- mov r0, lr
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_037F967C
-FUN_037F967C: ; 0x037F967C
- ldr r2, [r0]
- cmp r2, #0
- beq _037F96A8
- ldr r1, [r2, #100] ; 0x64
- str r1, [r0]
- cmp r1, #0
- movne r0, #0
- strne r0, [r1, #96] ; 0x60
- moveq r1, #0
- streq r1, [r0, #4]
- streq r1, [r2, #92] ; 0x5c
-_037F96A8:
- mov r0, r2
- bx lr
-
- arm_func_start FUN_037F96B0
-FUN_037F96B0: ; 0x037F96B0
- ldr ip, [r0]
- b _037F96C4
-_037F96B8:
- cmp ip, r1
- bxeq lr
- ldr ip, [ip, #100] ; 0x64
-_037F96C4:
- cmp ip, #0
- beq _037F96DC
- ldr r3, [ip, #84] ; 0x54
- ldr r2, [r1, #84] ; 0x54
- cmp r3, r2
- bls _037F96B8
-_037F96DC:
- cmp ip, #0
- bne _037F9708
- ldr r2, [r0, #4]
- cmp r2, #0
- streq r1, [r0]
- strne r1, [r2, #100] ; 0x64
- str r2, [r1, #96] ; 0x60
- mov r2, #0
- str r2, [r1, #100] ; 0x64
- str r1, [r0, #4]
- bx lr
-_037F9708:
- ldr r2, [ip, #96] ; 0x60
- cmp r2, #0
- streq r1, [r0]
- strne r1, [r2, #100] ; 0x64
- str r2, [r1, #96] ; 0x60
- str ip, [r1, #100] ; 0x64
- str r1, [ip, #96] ; 0x60
- bx lr
-
- arm_func_start FUN_037F9728
-FUN_037F9728: ; 0x037F9728
- ldr r1, _037F973C ; =_0380778C
- ldr r0, [r1]
- add r0, r0, #1
- str r0, [r1]
- bx lr
-_037F973C: .word _0380778C
-
- arm_func_start OS_InitContext
-OS_InitContext: ; 0x037F9740
- add r1, r1, #4
- str r1, [r0, #64] ; 0x40
- str r2, [r0, #68] ; 0x44
- sub r2, r2, #64 ; 0x40
- tst r2, #4
- subne r2, r2, #4
- str r2, [r0, #56] ; 0x38
- ands r1, r1, #1
- movne r1, #63 ; 0x3f
- moveq r1, #31
- str r1, [r0]
- mov r1, #0
- str r1, [r0, #4]
- str r1, [r0, #8]
- str r1, [r0, #12]
- str r1, [r0, #16]
- str r1, [r0, #20]
- str r1, [r0, #24]
- str r1, [r0, #28]
- str r1, [r0, #32]
- str r1, [r0, #36] ; 0x24
- str r1, [r0, #40] ; 0x28
- str r1, [r0, #44] ; 0x2c
- str r1, [r0, #48] ; 0x30
- str r1, [r0, #52] ; 0x34
- str r1, [r0, #60] ; 0x3c
- bx lr
-
- arm_func_start OS_SaveContext
-OS_SaveContext: ; 0x037F97AC
- add r1, r0, #0
- mrs r2, CPSR
- str r2, [r1], #4
- mov r0, #211 ; 0xd3
- msr CPSR_c, r0
- str sp, [r1, #64] ; 0x40
- msr CPSR_c, r2
- mov r0, #1
- stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}
- adr r0, OS_LoadContext
- str r0, [r1, #60] ; 0x3c
- mov r0, #0
- bx lr
-
- arm_func_start OS_LoadContext
-OS_LoadContext: ; 0x037F97E0
- mrs r1, CPSR
- bic r1, r1, #31
- orr r1, r1, #211 ; 0xd3
- msr CPSR_c, r1
- ldr r1, [r0], #4
- msr SPSR_fsxc, r1
- ldr sp, [r0, #64] ; 0x40
- ldr lr, [r0, #60] ; 0x3c
- ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^
- nop ; (mov r0, r0)
- subs pc, lr, #4
-
- arm_func_start OS_ReadMessage
-OS_ReadMessage: ; 0x037F980C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r6, r0
- mov r5, r1
- mov r7, r2
- bl OS_DisableInterrupts
- mov r4, r0
- and r8, r7, #1
- add r7, r6, #8
- b _037F9850
-_037F9830:
- cmp r8, #0
- bne _037F9848
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037F987C
-_037F9848:
- mov r0, r7
- bl OS_SleepThread
-_037F9850:
- ldr r0, [r6, #28]
- cmp r0, #0
- beq _037F9830
- cmp r5, #0
- ldrne r1, [r6, #16]
- ldrne r0, [r6, #24]
- ldrne r0, [r1, r0, lsl #2]
- strne r0, [r5]
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #1
-_037F987C:
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start OS_ReceiveMessage
-OS_ReceiveMessage: ; 0x037F9884
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r6, r0
- mov r5, r1
- mov r7, r2
- bl OS_DisableInterrupts
- mov r4, r0
- and r8, r7, #1
- add r7, r6, #8
- b _037F98C8
-_037F98A8:
- cmp r8, #0
- bne _037F98C0
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037F991C
-_037F98C0:
- mov r0, r7
- bl OS_SleepThread
-_037F98C8:
- ldr r0, [r6, #28]
- cmp r0, #0
- beq _037F98A8
- cmp r5, #0
- ldrne r1, [r6, #16]
- ldrne r0, [r6, #24]
- ldrne r0, [r1, r0, lsl #2]
- strne r0, [r5]
- ldr r0, [r6, #24]
- add r0, r0, #1
- ldr r1, [r6, #20]
- bl _s32_div_f
- str r1, [r6, #24]
- ldr r0, [r6, #28]
- sub r0, r0, #1
- str r0, [r6, #28]
- mov r0, r6
- bl OS_WakeupThread
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #1
-_037F991C:
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start OS_SendMessage
-OS_SendMessage: ; 0x037F9924
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- mov r5, r1
- mov r7, r2
- bl OS_DisableInterrupts
- mov r4, r0
- and r7, r7, #1
- b _037F9968
-_037F9948:
- cmp r7, #0
- bne _037F9960
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037F99AC
-_037F9960:
- mov r0, r6
- bl OS_SleepThread
-_037F9968:
- ldr r2, [r6, #28]
- ldr r1, [r6, #20]
- cmp r1, r2
- ble _037F9948
- ldr r0, [r6, #24]
- add r0, r0, r2
- bl _s32_div_f
- ldr r0, [r6, #16]
- str r5, [r0, r1, lsl #2]
- ldr r0, [r6, #28]
- add r0, r0, #1
- str r0, [r6, #28]
- add r0, r6, #8
- bl OS_WakeupThread
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #1
-_037F99AC:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start OS_InitMessageQueue
-OS_InitMessageQueue: ; 0x037F99B8
- mov ip, #0
- str ip, [r0, #4]
- ldr r3, [r0, #4]
- str r3, [r0]
- str ip, [r0, #12]
- ldr r3, [r0, #12]
- str r3, [r0, #8]
- str r1, [r0, #16]
- str r2, [r0, #20]
- str ip, [r0, #24]
- str ip, [r0, #28]
- bx lr
-
- arm_func_start OSi_DequeueItem
-OSi_DequeueItem: ; 0x037F99E8
- ldr r2, [r1, #16]
- ldr r1, [r1, #20]
- cmp r2, #0
- streq r1, [r0, #112] ; 0x70
- strne r1, [r2, #20]
- cmp r1, #0
- streq r2, [r0, #108] ; 0x6c
- strne r2, [r1, #16]
- bx lr
-
- arm_func_start OSi_EnqueueTail
-OSi_EnqueueTail: ; 0x037F9A0C
- ldr r2, [r0, #112] ; 0x70
- cmp r2, #0
- streq r1, [r0, #108] ; 0x6c
- strne r1, [r2, #16]
- str r2, [r1, #20]
- mov r2, #0
- str r2, [r1, #16]
- str r1, [r0, #112] ; 0x70
- bx lr
-
- arm_func_start OSi_UnlockAllMutex
-OSi_UnlockAllMutex: ; 0x037F9A30
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- add r5, r6, #108 ; 0x6c
- mov r4, #0
- b _037F9A58
-_037F9A44:
- mov r0, r5
- bl OSi_RemoveMutexLinkFromQueue
- str r4, [r0, #12]
- str r4, [r0, #8]
- bl OS_WakeupThread
-_037F9A58:
- ldr r0, [r6, #108] ; 0x6c
- cmp r0, #0
- bne _037F9A44
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start OS_UnlockMutex
-OS_UnlockMutex: ; 0x037F9A6C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, _037F9AD8 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- ldr r1, [r5, #8]
- cmp r1, r0
- bne _037F9AC4
- ldr r1, [r5, #12]
- sub r1, r1, #1
- str r1, [r5, #12]
- ldr r1, [r5, #12]
- cmp r1, #0
- bne _037F9AC4
- mov r1, r5
- bl OSi_DequeueItem
- mov r0, #0
- str r0, [r5, #8]
- mov r0, r5
- bl OS_WakeupThread
-_037F9AC4:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037F9AD8: .word OSi_ThreadInfo
-
- arm_func_start OS_LockMutex
-OS_LockMutex: ; 0x037F9ADC
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, _037F9B64 ; =OSi_ThreadInfo
- ldr r7, [r0, #4]
- mov r6, #0
-_037F9AFC:
- ldr r0, [r5, #8]
- cmp r0, #0
- bne _037F9B28
- str r7, [r5, #8]
- ldr r0, [r5, #12]
- add r0, r0, #1
- str r0, [r5, #12]
- mov r0, r7
- mov r1, r5
- bl OSi_EnqueueTail
- b _037F9B50
-_037F9B28:
- cmp r0, r7
- ldreq r0, [r5, #12]
- addeq r0, r0, #1
- streq r0, [r5, #12]
- beq _037F9B50
- str r5, [r7, #104] ; 0x68
- mov r0, r5
- bl OS_SleepThread
- str r6, [r7, #104] ; 0x68
- b _037F9AFC
-_037F9B50:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037F9B64: .word OSi_ThreadInfo
-
- arm_func_start OS_InitMutex
-OS_InitMutex: ; 0x037F9B68
- mov r2, #0
- str r2, [r0, #4]
- ldr r1, [r0, #4]
- str r1, [r0]
- str r2, [r0, #8]
- str r2, [r0, #12]
- bx lr
-
- arm_func_start OS_Init
-OS_Init: ; 0x037F9B84
- stmfd sp!, {lr}
- sub sp, sp, #4
- bl OS_InitArena
- bl PXI_Init
- bl OS_InitLock
- bl OS_InitIrqTable
- bl OS_InitTick
- bl OS_InitAlarm
- bl OS_InitThread
- bl OS_InitReset
- bl CTRDG_Init
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start OS_SetArenaLo
-OS_SetArenaLo: ; 0x037F9BBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_SetArenaHi
-OS_SetArenaHi: ; 0x037F9BD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_GetInitArenaLo
-OS_GetInitArenaLo: ; 0x037F9BE4
- cmp r0, #1
- beq _037F9C00
- cmp r0, #7
- beq _037F9C08
- cmp r0, #8
- beq _037F9C18
- b _037F9C2C
-_037F9C00:
- ldr r0, _037F9C34 ; =0x027FAFCC
- bx lr
-_037F9C08:
- ldr r0, _037F9C38 ; =0x0380B92C
- cmp r0, #58720256 ; 0x03800000
- movhi r0, #58720256 ; 0x03800000
- bx lr
-_037F9C18:
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9C38 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- bx lr
-_037F9C2C:
- mov r0, #0
- bx lr
-_037F9C34: .word 0x027FAFCC
-_037F9C38: .word 0x0380B92C
-
- arm_func_start OS_GetInitArenaHi
-OS_GetInitArenaHi: ; 0x037F9C3C
- cmp r0, #1
- beq _037F9C58
- cmp r0, #7
- beq _037F9C60
- cmp r0, #8
- beq _037F9C68
- b _037F9CA0
-_037F9C58:
- ldr r0, _037F9CA8 ; =0x027FF000
- bx lr
-_037F9C60:
- mov r0, #58720256 ; 0x03800000
- bx lr
-_037F9C68:
- ldr r1, _037F9CAC ; =0x00000400
- ldr r0, _037F9CB0 ; =0x0380FF80
- sub r2, r0, r1
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9CB4 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- ldr r1, _037F9CB8 ; =0x00000400
- cmp r1, #0
- bxeq lr
- cmp r1, #0
- sublt r0, r0, r1
- subge r0, r2, r1
- bx lr
-_037F9CA0:
- mov r0, #0
- bx lr
-_037F9CA8: .word 0x027FF000
-_037F9CAC: .word 0x00000400
-_037F9CB0: .word 0x0380FF80
-_037F9CB4: .word 0x0380B92C
-_037F9CB8: .word 0x00000400
-
- arm_func_start OS_GetArenaLo
-OS_GetArenaLo: ; 0x037F9CBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_GetArenaHi
-OS_GetArenaHi: ; 0x037F9CD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_InitArena
-OS_InitArena: ; 0x037F9CE4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037F9D84 ; =_038078F4
- ldr r0, [r1]
- cmp r0, #0
- bne _037F9D78
- mov r0, #1
- str r0, [r1]
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaHi
- mov r0, #1
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaLo
- mov r0, #7
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaHi
- mov r0, #7
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaLo
- mov r0, #8
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaHi
- mov r0, #8
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaLo
-_037F9D78:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F9D84: .word _038078F4
-
- arm_func_start OS_CheckHeap
-OS_CheckHeap: ; 0x037F9D88
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r0
- mov r7, r1
- mov r6, #0
- mov r5, r6
- mvn r4, #0
- bl OS_DisableInterrupts
- ldr r1, _037F9F34 ; =OSiHeapInfo
- ldr ip, [r1, r8, lsl #2]
- mov r1, r4
- cmp r7, r1
- ldreq r7, [ip]
- ldr r2, [ip, #16]
- cmp r2, #0
- beq _037F9F24
- cmp r7, #0
- blt _037F9F24
- ldr r1, [ip, #4]
- cmp r7, r1
- bge _037F9F24
- mov r1, #12
- mul r1, r7, r1
- add r3, r2, r1
- ldr r2, [r2, r1]
- cmp r2, #0
- blt _037F9F24
- ldr r1, [r3, #8]
- cmp r1, #0
- beq _037F9E70
- ldr r7, [r1]
- cmp r7, #0
- bne _037F9F24
- b _037F9E70
-_037F9E0C:
- ldr r7, [ip, #8]
- cmp r7, r1
- bhi _037F9F24
- ldr r7, [ip, #12]
- cmp r1, r7
- bcs _037F9F24
- ands r7, r1, #31
- bne _037F9F24
- ldr lr, [r1, #4]
- cmp lr, #0
- beq _037F9E44
- ldr r7, [lr]
- cmp r7, r1
- bne _037F9F24
-_037F9E44:
- ldr r7, [r1, #8]
- cmp r7, #64 ; 0x40
- bcc _037F9F24
- ands r1, r7, #31
- bne _037F9F24
- add r6, r6, r7
- cmp r6, #0
- ble _037F9F24
- cmp r6, r2
- bgt _037F9F24
- mov r1, lr
-_037F9E70:
- cmp r1, #0
- bne _037F9E0C
- ldr r1, [r3, #4]
- cmp r1, #0
- beq _037F9F14
- ldr r3, [r1]
- cmp r3, #0
- bne _037F9F24
- b _037F9F14
-_037F9E94:
- ldr r3, [ip, #8]
- cmp r3, r1
- bhi _037F9F24
- ldr r3, [ip, #12]
- cmp r1, r3
- bcs _037F9F24
- ands r3, r1, #31
- bne _037F9F24
- ldr lr, [r1, #4]
- cmp lr, #0
- beq _037F9ECC
- ldr r3, [lr]
- cmp r3, r1
- bne _037F9F24
-_037F9ECC:
- ldr r7, [r1, #8]
- cmp r7, #64 ; 0x40
- bcc _037F9F24
- ands r3, r7, #31
- bne _037F9F24
- cmp lr, #0
- beq _037F9EF4
- add r1, r1, r7
- cmp r1, lr
- bcs _037F9F24
-_037F9EF4:
- add r6, r6, r7
- sub r1, r7, #32
- add r5, r5, r1
- cmp r6, #0
- ble _037F9F24
- cmp r6, r2
- bgt _037F9F24
- mov r1, lr
-_037F9F14:
- cmp r1, #0
- bne _037F9E94
- cmp r6, r2
- moveq r4, r5
-_037F9F24:
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037F9F34: .word OSiHeapInfo
-
- arm_func_start OS_CreateHeap
-OS_CreateHeap: ; 0x037F9F38
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r6, r1
- mov r5, r2
- bl OS_DisableInterrupts
- ldr r1, _037F9FDC ; =OSiHeapInfo
- ldr r7, [r1, r4, lsl #2]
- add r1, r6, #31
- bic r6, r1, #31
- bic r5, r5, #31
- mov r4, #0
- ldr lr, [r7, #4]
- mov r1, #12
- b _037F9FC0
-_037F9F74:
- ldr r3, [r7, #16]
- mul r2, r4, r1
- add ip, r3, r2
- ldr r2, [r3, r2]
- cmp r2, #0
- bge _037F9FBC
- sub r1, r5, r6
- str r1, [ip]
- mov r2, #0
- str r2, [r6]
- str r2, [r6, #4]
- ldr r1, [ip]
- str r1, [r6, #8]
- str r6, [ip, #4]
- str r2, [ip, #8]
- bl OS_RestoreInterrupts
- mov r0, r4
- b _037F9FD0
-_037F9FBC:
- add r4, r4, #1
-_037F9FC0:
- cmp r4, lr
- blt _037F9F74
- bl OS_RestoreInterrupts
- mvn r0, #0
-_037F9FD0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037F9FDC: .word OSiHeapInfo
-
- arm_func_start OS_InitAlloc
-OS_InitAlloc: ; 0x037F9FE0
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- mov r5, r1
- mov r4, r2
- mov r6, r3
- bl OS_DisableInterrupts
- ldr r1, _037FA084 ; =OSiHeapInfo
- str r5, [r1, r7, lsl #2]
- mov r2, #12
- mul r1, r6, r2
- add r3, r5, #20
- str r3, [r5, #16]
- str r6, [r5, #4]
- mov r8, #0
- mvn lr, #0
- mov ip, r8
- b _037FA044
-_037FA024:
- ldr r6, [r5, #16]
- mul r3, r8, r2
- add r7, r6, r3
- str lr, [r6, r3]
- str ip, [r7, #8]
- ldr r3, [r7, #8]
- str r3, [r7, #4]
- add r8, r8, #1
-_037FA044:
- ldr r3, [r5, #4]
- cmp r8, r3
- blt _037FA024
- mvn r2, #0
- str r2, [r5]
- ldr r2, [r5, #16]
- add r1, r2, r1
- add r1, r1, #31
- bic r1, r1, #31
- str r1, [r5, #8]
- bic r1, r4, #31
- str r1, [r5, #12]
- bl OS_RestoreInterrupts
- ldr r0, [r5, #8]
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FA084: .word OSiHeapInfo
-
- arm_func_start OS_SetCurrentHeap
-OS_SetCurrentHeap: ; 0x037FA088
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r5, r1
- bl OS_DisableInterrupts
- ldr r1, _037FA0C0 ; =OSiHeapInfo
- ldr r1, [r1, r4, lsl #2]
- ldr r4, [r1]
- str r5, [r1]
- bl OS_RestoreInterrupts
- mov r0, r4
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FA0C0: .word OSiHeapInfo
-
- arm_func_start OS_FreeToHeap
-OS_FreeToHeap: ; 0x037FA0C4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r4, r1
- mov r6, r2
- bl OS_DisableInterrupts
- mov r5, r0
- ldr r0, _037FA134 ; =OSiHeapInfo
- ldr r0, [r0, r7, lsl #2]
- cmp r4, #0
- ldrlt r4, [r0]
- sub r6, r6, #32
- ldr r1, [r0, #16]
- mov r0, #12
- mla r7, r4, r0, r1
- ldr r0, [r7, #8]
- mov r1, r6
- bl FUN_037FA304
- str r0, [r7, #8]
- ldr r0, [r7, #4]
- mov r1, r6
- bl FUN_037FA250
- str r0, [r7, #4]
- mov r0, r5
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FA134: .word OSiHeapInfo
-
- arm_func_start OS_AllocFromHeap
-OS_AllocFromHeap: ; 0x037FA138
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- mov r5, r1
- mov r7, r2
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r1, _037FA24C ; =OSiHeapInfo
- ldr r1, [r1, r6, lsl #2]
- cmp r1, #0
- bne _037FA170
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037FA240
-_037FA170:
- cmp r5, #0
- ldrlt r5, [r1]
- ldr r1, [r1, #16]
- mov r0, #12
- mla r6, r5, r0, r1
- add r0, r7, #32
- add r0, r0, #31
- bic r7, r0, #31
- ldr r0, [r6, #4]
- mov r5, r0
- b _037FA1AC
-_037FA19C:
- ldr r1, [r5, #8]
- cmp r7, r1
- ble _037FA1B4
- ldr r5, [r5, #4]
-_037FA1AC:
- cmp r5, #0
- bne _037FA19C
-_037FA1B4:
- cmp r5, #0
- bne _037FA1CC
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0
- b _037FA240
-_037FA1CC:
- ldr r1, [r5, #8]
- sub r1, r1, r7
- cmp r1, #64 ; 0x40
- bcs _037FA1EC
- mov r1, r5
- bl FUN_037FA304
- str r0, [r6, #4]
- b _037FA224
-_037FA1EC:
- str r7, [r5, #8]
- add r2, r5, r7
- str r1, [r2, #8]
- ldr r0, [r5]
- str r0, [r5, r7]
- ldr r0, [r5, #4]
- str r0, [r2, #4]
- ldr r0, [r2, #4]
- cmp r0, #0
- strne r2, [r0]
- ldr r0, [r2]
- cmp r0, #0
- strne r2, [r0, #4]
- streq r2, [r6, #4]
-_037FA224:
- ldr r0, [r6, #8]
- mov r1, r5
- bl FUN_037FA32C
- str r0, [r6, #8]
- mov r0, r4
- bl OS_RestoreInterrupts
- add r0, r5, #32
-_037FA240:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FA24C: .word OSiHeapInfo
-
- arm_func_start FUN_037FA250
-FUN_037FA250: ; 0x037FA250
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov ip, r0
- mov lr, #0
- b _037FA274
-_037FA264:
- cmp r1, ip
- bls _037FA27C
- mov lr, ip
- ldr ip, [ip, #4]
-_037FA274:
- cmp ip, #0
- bne _037FA264
-_037FA27C:
- str ip, [r1, #4]
- str lr, [r1]
- cmp ip, #0
- beq _037FA2BC
- str r1, [ip]
- ldr r3, [r1, #8]
- add r2, r1, r3
- cmp r2, ip
- bne _037FA2BC
- ldr r2, [ip, #8]
- add r2, r3, r2
- str r2, [r1, #8]
- ldr ip, [ip, #4]
- str ip, [r1, #4]
- cmp ip, #0
- strne r1, [ip]
-_037FA2BC:
- cmp lr, #0
- beq _037FA2F4
- str r1, [lr, #4]
- ldr r2, [lr, #8]
- add r3, lr, r2
- cmp r3, r1
- bne _037FA2F8
- ldr r1, [r1, #8]
- add r1, r2, r1
- str r1, [lr, #8]
- str ip, [lr, #4]
- cmp ip, #0
- strne lr, [ip]
- b _037FA2F8
-_037FA2F4:
- mov r0, r1
-_037FA2F8:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_037FA304
-FUN_037FA304: ; 0x037FA304
- ldr r3, [r1, #4]
- cmp r3, #0
- ldrne r2, [r1]
- strne r2, [r3]
- ldr r2, [r1]
- cmp r2, #0
- ldreq r0, [r1, #4]
- ldrne r1, [r1, #4]
- strne r1, [r2, #4]
- bx lr
-
- arm_func_start FUN_037FA32C
-FUN_037FA32C: ; 0x037FA32C
- str r0, [r1, #4]
- mov r2, #0
- str r2, [r1]
- cmp r0, #0
- strne r1, [r0]
- mov r0, r1
- bx lr
-
- arm_func_start OSi_SetTimerReserved
-OSi_SetTimerReserved: ; 0x037FA348
- ldr r1, _037FA360 ; =_0380791C
- ldrh r3, [r1]
- mov r2, #1
- orr r0, r3, r2, lsl r0
- strh r0, [r1]
- bx lr
-_037FA360: .word _0380791C
-
- arm_func_start OS_GetTick
-OS_GetTick: ; 0x037FA364
- stmfd sp!, {lr}
- sub sp, sp, #12
- bl OS_DisableInterrupts
- ldr r1, _037FA404 ; =0x04000100
- ldrh r1, [r1]
- strh r1, [sp]
- ldr r1, _037FA408 ; =OSi_TickCounter
- ldr ip, [r1]
- ldr r3, [r1, #4]
- ldr r2, _037FA40C ; =0x0000FFFF
- mvn r1, #0
- and r2, r3, r2
- and r1, ip, r1
- str r1, [sp, #4]
- str r2, [sp, #8]
- ldr r1, _037FA410 ; =0x04000214
- ldr r1, [r1]
- ands r1, r1, #8
- beq _037FA3D8
- ldrh r1, [sp]
- ands r1, r1, #32768 ; 0x8000
- bne _037FA3D8
- ldr r3, [sp, #4]
- ldr r2, [sp, #8]
- mov r1, #1
- adds r3, r3, r1
- adc r1, r2, #0
- str r3, [sp, #4]
- str r1, [sp, #8]
-_037FA3D8:
- bl OS_RestoreInterrupts
- ldr r2, [sp, #4]
- ldr r0, [sp, #8]
- mov r1, r0, lsl #16
- orr r1, r1, r2, lsr #16
- ldrh r0, [sp]
- orr r1, r1, r0, asr #31
- orr r0, r0, r2, lsl #16
- add sp, sp, #12
- ldmia sp!, {lr}
- bx lr
-_037FA404: .word 0x04000100
-_037FA408: .word OSi_TickCounter
-_037FA40C: .word 0x0000FFFF
-_037FA410: .word 0x04000214
-
- arm_func_start FUN_037FA414
-FUN_037FA414: ; 0x037FA414
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037FA488 ; =OSi_TickCounter
- ldr ip, [r1]
- ldr r2, [r1, #4]
- mov r3, #0
- mov r0, #1
- adds ip, ip, r0
- adc r0, r2, #0
- str ip, [r1]
- str r0, [r1, #4]
- ldr r0, _037FA48C ; =OSi_NeedResetTimer
- ldr r1, [r0]
- cmp r1, #0
- beq _037FA46C
- ldr r2, _037FA490 ; =0x04000102
- strh r3, [r2]
- ldr r1, _037FA494 ; =0x04000100
- strh r3, [r1]
- mov r1, #193 ; 0xc1
- strh r1, [r2]
- str r3, [r0]
-_037FA46C:
- mov r0, #0
- ldr r1, _037FA498 ; =FUN_037FA414
- mov r2, r0
- bl OSi_EnterTimerCallback
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FA488: .word OSi_TickCounter
-_037FA48C: .word OSi_NeedResetTimer
-_037FA490: .word 0x04000102
-_037FA494: .word 0x04000100
-_037FA498: .word FUN_037FA414
-
- arm_func_start OS_IsTickAvailable
-OS_IsTickAvailable: ; 0x037FA49C
- ldr r0, _037FA4A8 ; =_03807920
- ldrh r0, [r0]
- bx lr
-_037FA4A8: .word _03807920
-
- arm_func_start OS_InitTick
-OS_InitTick: ; 0x037FA4AC
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037FA528 ; =_03807920
- ldrh r1, [r0]
- cmp r1, #0
- bne _037FA51C
- mov r1, #1
- strh r1, [r0]
- mov r0, #0
- bl OSi_SetTimerReserved
- mov r2, #0
- ldr r0, _037FA52C ; =OSi_TickCounter
- str r2, [r0]
- str r2, [r0, #4]
- ldr r1, _037FA530 ; =0x04000102
- strh r2, [r1]
- ldr r0, _037FA534 ; =0x04000100
- strh r2, [r0]
- mov r0, #193 ; 0xc1
- strh r0, [r1]
- mov r0, #8
- ldr r1, _037FA538 ; =FUN_037FA414
- bl OS_SetIrqFunction
- mov r0, #8
- bl OS_EnableIrqMask
- mov r1, #0
- ldr r0, _037FA53C ; =OSi_NeedResetTimer
- str r1, [r0]
-_037FA51C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FA528: .word _03807920
-_037FA52C: .word OSi_TickCounter
-_037FA530: .word 0x04000102
-_037FA534: .word 0x04000100
-_037FA538: .word FUN_037FA414
-_037FA53C: .word OSi_NeedResetTimer
-
arm_func_start FUN_037FA540
FUN_037FA540: ; 0x037FA540
stmdb sp!, {r0, lr}