mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 00:11:26 -05:00
split OS_alarm
This commit is contained in:
parent
a506ea6dd9
commit
fb33321cbe
|
|
@ -28,6 +28,7 @@ Autoload WRAM
|
|||
Object OS_alloc.o
|
||||
Object OS_timer.o
|
||||
Object OS_tick.o
|
||||
Object OS_alarm.o
|
||||
Object dtcm.o
|
||||
Object libsyscall.o
|
||||
Object dtcm2.o
|
||||
|
|
|
|||
359
arm7/asm/OS_alarm.s
Normal file
359
arm7/asm/OS_alarm.s
Normal file
|
|
@ -0,0 +1,359 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start OSi_AlarmHandler
|
||||
OSi_AlarmHandler: ; 0x037FA540
|
||||
stmdb sp!, {r0, lr}
|
||||
bl OSi_ArrangeTimer
|
||||
ldmia sp!, {r0, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start OSi_ArrangeTimer
|
||||
OSi_ArrangeTimer: ; 0x037FA550
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r1, #0
|
||||
ldr r0, _037FA644 ; =0x04000106
|
||||
strh r1, [r0]
|
||||
mov r0, #16
|
||||
bl OS_DisableIrqMask
|
||||
ldr r1, _037FA648 ; =0x0380FFF8
|
||||
ldr r0, [r1]
|
||||
orr r0, r0, #16
|
||||
str r0, [r1]
|
||||
bl OS_GetTick
|
||||
ldr r2, _037FA64C ; =_03807934
|
||||
ldr r4, [r2]
|
||||
cmp r4, #0
|
||||
beq _037FA638
|
||||
ldr ip, [r4, #12]
|
||||
ldr r3, [r4, #16]
|
||||
cmp r1, r3
|
||||
cmpeq r0, ip
|
||||
bcs _037FA5B0
|
||||
mov r0, r4
|
||||
bl OSi_SetTimer
|
||||
b _037FA638
|
||||
_037FA5B0:
|
||||
ldr r1, [r4, #24]
|
||||
str r1, [r2]
|
||||
cmp r1, #0
|
||||
moveq r0, #0
|
||||
streq r0, [r2, #4]
|
||||
movne r0, #0
|
||||
strne r0, [r1, #20]
|
||||
ldr r5, [r4]
|
||||
ldr r2, [r4, #28]
|
||||
ldr r1, [r4, #32]
|
||||
mov r0, #0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
streq r0, [r4]
|
||||
cmp r5, #0
|
||||
beq _037FA5FC
|
||||
ldr r0, [r4, #4]
|
||||
mov lr, pc
|
||||
bx r5
|
||||
_037FA5FC:
|
||||
ldr r2, [r4, #28]
|
||||
ldr r0, [r4, #32]
|
||||
mov r1, #0
|
||||
cmp r0, r1
|
||||
cmpeq r2, r1
|
||||
beq _037FA624
|
||||
str r5, [r4]
|
||||
mov r0, r4
|
||||
mov r2, r1
|
||||
bl OSi_InsertAlarm
|
||||
_037FA624:
|
||||
ldr r0, _037FA64C ; =_03807934
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _037FA638
|
||||
bl OSi_SetTimer
|
||||
_037FA638:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA644: .word 0x04000106
|
||||
_037FA648: .word 0x0380FFF8
|
||||
_037FA64C: .word _03807934
|
||||
|
||||
arm_func_start OS_CancelAlarm
|
||||
OS_CancelAlarm: ; 0x037FA650
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r5, r0
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
ldr r1, [r5]
|
||||
cmp r1, #0
|
||||
bne _037FA678
|
||||
bl OS_RestoreInterrupts
|
||||
b _037FA6D0
|
||||
_037FA678:
|
||||
ldr r0, [r5, #24]
|
||||
cmp r0, #0
|
||||
ldreq r2, [r5, #20]
|
||||
ldreq r1, _037FA6DC ; =_03807934
|
||||
streq r2, [r1, #4]
|
||||
ldrne r1, [r5, #20]
|
||||
strne r1, [r0, #20]
|
||||
ldr r1, [r5, #20]
|
||||
cmp r1, #0
|
||||
strne r0, [r1, #24]
|
||||
bne _037FA6B8
|
||||
ldr r1, _037FA6DC ; =_03807934
|
||||
str r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _037FA6B8
|
||||
bl OSi_SetTimer
|
||||
_037FA6B8:
|
||||
mov r0, #0
|
||||
str r0, [r5]
|
||||
str r0, [r5, #28]
|
||||
str r0, [r5, #32]
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
_037FA6D0:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA6DC: .word _03807934
|
||||
|
||||
arm_func_start OS_SetPeriodicAlarm
|
||||
OS_SetPeriodicAlarm: ; 0x037FA6E0
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
|
||||
sub sp, sp, #4
|
||||
movs r4, r0
|
||||
mov r9, r1
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
ldr r6, [sp, #32]
|
||||
beq _037FA70C
|
||||
ldr r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _037FA710
|
||||
_037FA70C:
|
||||
bl FUN_037FB1F0
|
||||
_037FA710:
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
str r7, [r4, #28]
|
||||
str r6, [r4, #32]
|
||||
str r9, [r4, #36] ; 0x24
|
||||
str r8, [r4, #40] ; 0x28
|
||||
ldr r0, [sp, #36] ; 0x24
|
||||
str r0, [r4]
|
||||
ldr r0, [sp, #40] ; 0x28
|
||||
str r0, [r4, #4]
|
||||
mov r0, r4
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
bl OSi_InsertAlarm
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_SetAlarm
|
||||
OS_SetAlarm: ; 0x037FA75C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
movs r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r8, r3
|
||||
beq _037FA780
|
||||
ldr r0, [r7]
|
||||
cmp r0, #0
|
||||
beq _037FA784
|
||||
_037FA780:
|
||||
bl FUN_037FB1F0
|
||||
_037FA784:
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
mov r0, #0
|
||||
str r0, [r7, #28]
|
||||
str r0, [r7, #32]
|
||||
str r8, [r7]
|
||||
ldr r0, [sp, #24]
|
||||
str r0, [r7, #4]
|
||||
bl OS_GetTick
|
||||
mov r2, r0
|
||||
mov r0, r7
|
||||
adds r3, r6, r2
|
||||
adc r2, r5, r1
|
||||
mov r1, r3
|
||||
bl OSi_InsertAlarm
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start OSi_InsertAlarm
|
||||
OSi_InsertAlarm: ; 0x037FA7D0
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
ldr r2, [r8, #28]
|
||||
ldr r1, [r8, #32]
|
||||
mov r0, #0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
beq _037FA84C
|
||||
bl OS_GetTick
|
||||
ldr r7, [r8, #36] ; 0x24
|
||||
ldr r6, [r8, #40] ; 0x28
|
||||
cmp r6, r1
|
||||
cmpeq r7, r0
|
||||
bcs _037FA84C
|
||||
ldr r5, [r8, #28]
|
||||
ldr r4, [r8, #32]
|
||||
subs r0, r0, r7
|
||||
sbc r1, r1, r6
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
bl _ll_udiv
|
||||
mov r2, #1
|
||||
adds r2, r0, r2
|
||||
adc r0, r1, #0
|
||||
umull r3, r1, r5, r2
|
||||
mla r1, r5, r0, r1
|
||||
mla r1, r4, r2, r1
|
||||
adds r7, r7, r3
|
||||
adc r6, r6, r1
|
||||
_037FA84C:
|
||||
str r7, [r8, #12]
|
||||
str r6, [r8, #16]
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
ldr r4, [r0]
|
||||
mov r1, #0
|
||||
b _037FA8B8
|
||||
_037FA864:
|
||||
ldr r2, [r4, #12]
|
||||
ldr r0, [r4, #16]
|
||||
subs r3, r7, r2
|
||||
sbc r2, r6, r0
|
||||
subs r0, r3, r1
|
||||
sbcs r0, r2, r1
|
||||
bge _037FA8B4
|
||||
ldr r0, [r4, #20]
|
||||
str r0, [r8, #20]
|
||||
str r8, [r4, #20]
|
||||
str r4, [r8, #24]
|
||||
ldr r0, [r8, #20]
|
||||
cmp r0, #0
|
||||
strne r8, [r0, #24]
|
||||
bne _037FA8F4
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
str r8, [r0]
|
||||
mov r0, r8
|
||||
bl OSi_SetTimer
|
||||
b _037FA8F4
|
||||
_037FA8B4:
|
||||
ldr r4, [r4, #24]
|
||||
_037FA8B8:
|
||||
cmp r4, #0
|
||||
bne _037FA864
|
||||
mov r0, #0
|
||||
str r0, [r8, #24]
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
ldr r1, [r0, #4]
|
||||
str r8, [r0, #4]
|
||||
str r1, [r8, #20]
|
||||
cmp r1, #0
|
||||
strne r8, [r1, #24]
|
||||
bne _037FA8F4
|
||||
str r8, [r0, #4]
|
||||
str r8, [r0]
|
||||
mov r0, r8
|
||||
bl OSi_SetTimer
|
||||
_037FA8F4:
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
||||
bx lr
|
||||
_037FA8FC: .word _03807934
|
||||
|
||||
arm_func_start OS_CreateAlarm
|
||||
OS_CreateAlarm: ; 0x037FA900
|
||||
mov r1, #0
|
||||
str r1, [r0]
|
||||
str r1, [r0, #8]
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_IsAlarmAvailable
|
||||
OS_IsAlarmAvailable: ; 0x037FA910
|
||||
ldr r0, _037FA91C ; =_03807930
|
||||
ldrh r0, [r0]
|
||||
bx lr
|
||||
_037FA91C: .word _03807930
|
||||
|
||||
arm_func_start OS_InitAlarm
|
||||
OS_InitAlarm: ; 0x037FA920
|
||||
stmfd sp!, {lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _037FA968 ; =_03807930
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _037FA95C
|
||||
mov r0, #1
|
||||
strh r0, [r1]
|
||||
bl OSi_SetTimerReserved
|
||||
mov r1, #0
|
||||
ldr r0, _037FA96C ; =_03807934
|
||||
str r1, [r0]
|
||||
str r1, [r0, #4]
|
||||
mov r0, #16
|
||||
bl OS_DisableIrqMask
|
||||
_037FA95C:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_037FA968: .word _03807930
|
||||
_037FA96C: .word _03807934
|
||||
|
||||
arm_func_start OSi_SetTimer
|
||||
OSi_SetTimer: ; 0x037FA970
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
bl OS_GetTick
|
||||
mov r2, #0
|
||||
ldr r3, _037FA9FC ; =0x04000106
|
||||
strh r2, [r3]
|
||||
ldr ip, [r4, #12]
|
||||
ldr r3, [r4, #16]
|
||||
subs r5, ip, r0
|
||||
sbc r4, r3, r1
|
||||
mov r0, #1
|
||||
ldr r1, _037FAA00 ; =OSi_AlarmHandler
|
||||
bl OSi_EnterTimerCallback
|
||||
mov r1, #0
|
||||
subs r0, r5, r1
|
||||
sbcs r0, r4, r1
|
||||
ldrlt r1, _037FAA04 ; =0x0000FFFE
|
||||
blt _037FA9D4
|
||||
mov r0, #65536 ; 0x10000
|
||||
subs r0, r5, r0
|
||||
sbcs r0, r4, r1
|
||||
mvnlt r0, r5
|
||||
movlt r0, r0, lsl #16
|
||||
movlt r1, r0, lsr #16
|
||||
_037FA9D4:
|
||||
ldr r0, _037FAA08 ; =0x04000104
|
||||
strh r1, [r0]
|
||||
mov r1, #193 ; 0xc1
|
||||
ldr r0, _037FA9FC ; =0x04000106
|
||||
strh r1, [r0]
|
||||
mov r0, #16
|
||||
bl OS_EnableIrqMask
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA9FC: .word 0x04000106
|
||||
_037FAA00: .word OSi_AlarmHandler
|
||||
_037FAA04: .word 0x0000FFFE
|
||||
_037FAA08: .word 0x04000104
|
||||
355
arm7/asm/dtcm.s
355
arm7/asm/dtcm.s
|
|
@ -2,361 +2,6 @@
|
|||
.include "global.inc"
|
||||
|
||||
.section .text
|
||||
arm_func_start FUN_037FA540
|
||||
FUN_037FA540: ; 0x037FA540
|
||||
stmdb sp!, {r0, lr}
|
||||
bl FUN_037FA550
|
||||
ldmia sp!, {r0, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start FUN_037FA550
|
||||
FUN_037FA550: ; 0x037FA550
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r1, #0
|
||||
ldr r0, _037FA644 ; =0x04000106
|
||||
strh r1, [r0]
|
||||
mov r0, #16
|
||||
bl OS_DisableIrqMask
|
||||
ldr r1, _037FA648 ; =0x0380FFF8
|
||||
ldr r0, [r1]
|
||||
orr r0, r0, #16
|
||||
str r0, [r1]
|
||||
bl OS_GetTick
|
||||
ldr r2, _037FA64C ; =_03807934
|
||||
ldr r4, [r2]
|
||||
cmp r4, #0
|
||||
beq _037FA638
|
||||
ldr ip, [r4, #12]
|
||||
ldr r3, [r4, #16]
|
||||
cmp r1, r3
|
||||
cmpeq r0, ip
|
||||
bcs _037FA5B0
|
||||
mov r0, r4
|
||||
bl FUN_037FA970
|
||||
b _037FA638
|
||||
_037FA5B0:
|
||||
ldr r1, [r4, #24]
|
||||
str r1, [r2]
|
||||
cmp r1, #0
|
||||
moveq r0, #0
|
||||
streq r0, [r2, #4]
|
||||
movne r0, #0
|
||||
strne r0, [r1, #20]
|
||||
ldr r5, [r4]
|
||||
ldr r2, [r4, #28]
|
||||
ldr r1, [r4, #32]
|
||||
mov r0, #0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
streq r0, [r4]
|
||||
cmp r5, #0
|
||||
beq _037FA5FC
|
||||
ldr r0, [r4, #4]
|
||||
mov lr, pc
|
||||
bx r5
|
||||
_037FA5FC:
|
||||
ldr r2, [r4, #28]
|
||||
ldr r0, [r4, #32]
|
||||
mov r1, #0
|
||||
cmp r0, r1
|
||||
cmpeq r2, r1
|
||||
beq _037FA624
|
||||
str r5, [r4]
|
||||
mov r0, r4
|
||||
mov r2, r1
|
||||
bl FUN_037FA7D0
|
||||
_037FA624:
|
||||
ldr r0, _037FA64C ; =_03807934
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _037FA638
|
||||
bl FUN_037FA970
|
||||
_037FA638:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA644: .word 0x04000106
|
||||
_037FA648: .word 0x0380FFF8
|
||||
_037FA64C: .word _03807934
|
||||
|
||||
arm_func_start OS_CancelAlarm
|
||||
OS_CancelAlarm: ; 0x037FA650
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r5, r0
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
ldr r1, [r5]
|
||||
cmp r1, #0
|
||||
bne _037FA678
|
||||
bl OS_RestoreInterrupts
|
||||
b _037FA6D0
|
||||
_037FA678:
|
||||
ldr r0, [r5, #24]
|
||||
cmp r0, #0
|
||||
ldreq r2, [r5, #20]
|
||||
ldreq r1, _037FA6DC ; =_03807934
|
||||
streq r2, [r1, #4]
|
||||
ldrne r1, [r5, #20]
|
||||
strne r1, [r0, #20]
|
||||
ldr r1, [r5, #20]
|
||||
cmp r1, #0
|
||||
strne r0, [r1, #24]
|
||||
bne _037FA6B8
|
||||
ldr r1, _037FA6DC ; =_03807934
|
||||
str r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _037FA6B8
|
||||
bl FUN_037FA970
|
||||
_037FA6B8:
|
||||
mov r0, #0
|
||||
str r0, [r5]
|
||||
str r0, [r5, #28]
|
||||
str r0, [r5, #32]
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
_037FA6D0:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA6DC: .word _03807934
|
||||
|
||||
arm_func_start OS_SetPeriodicAlarm
|
||||
OS_SetPeriodicAlarm: ; 0x037FA6E0
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
|
||||
sub sp, sp, #4
|
||||
movs r4, r0
|
||||
mov r9, r1
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
ldr r6, [sp, #32]
|
||||
beq _037FA70C
|
||||
ldr r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _037FA710
|
||||
_037FA70C:
|
||||
bl FUN_037FB1F0
|
||||
_037FA710:
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
str r7, [r4, #28]
|
||||
str r6, [r4, #32]
|
||||
str r9, [r4, #36] ; 0x24
|
||||
str r8, [r4, #40] ; 0x28
|
||||
ldr r0, [sp, #36] ; 0x24
|
||||
str r0, [r4]
|
||||
ldr r0, [sp, #40] ; 0x28
|
||||
str r0, [r4, #4]
|
||||
mov r0, r4
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
bl FUN_037FA7D0
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_SetAlarm
|
||||
OS_SetAlarm: ; 0x037FA75C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
movs r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r8, r3
|
||||
beq _037FA780
|
||||
ldr r0, [r7]
|
||||
cmp r0, #0
|
||||
beq _037FA784
|
||||
_037FA780:
|
||||
bl FUN_037FB1F0
|
||||
_037FA784:
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
mov r0, #0
|
||||
str r0, [r7, #28]
|
||||
str r0, [r7, #32]
|
||||
str r8, [r7]
|
||||
ldr r0, [sp, #24]
|
||||
str r0, [r7, #4]
|
||||
bl OS_GetTick
|
||||
mov r2, r0
|
||||
mov r0, r7
|
||||
adds r3, r6, r2
|
||||
adc r2, r5, r1
|
||||
mov r1, r3
|
||||
bl FUN_037FA7D0
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start FUN_037FA7D0
|
||||
FUN_037FA7D0: ; 0x037FA7D0
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
ldr r2, [r8, #28]
|
||||
ldr r1, [r8, #32]
|
||||
mov r0, #0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
beq _037FA84C
|
||||
bl OS_GetTick
|
||||
ldr r7, [r8, #36] ; 0x24
|
||||
ldr r6, [r8, #40] ; 0x28
|
||||
cmp r6, r1
|
||||
cmpeq r7, r0
|
||||
bcs _037FA84C
|
||||
ldr r5, [r8, #28]
|
||||
ldr r4, [r8, #32]
|
||||
subs r0, r0, r7
|
||||
sbc r1, r1, r6
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
bl _ll_udiv
|
||||
mov r2, #1
|
||||
adds r2, r0, r2
|
||||
adc r0, r1, #0
|
||||
umull r3, r1, r5, r2
|
||||
mla r1, r5, r0, r1
|
||||
mla r1, r4, r2, r1
|
||||
adds r7, r7, r3
|
||||
adc r6, r6, r1
|
||||
_037FA84C:
|
||||
str r7, [r8, #12]
|
||||
str r6, [r8, #16]
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
ldr r4, [r0]
|
||||
mov r1, #0
|
||||
b _037FA8B8
|
||||
_037FA864:
|
||||
ldr r2, [r4, #12]
|
||||
ldr r0, [r4, #16]
|
||||
subs r3, r7, r2
|
||||
sbc r2, r6, r0
|
||||
subs r0, r3, r1
|
||||
sbcs r0, r2, r1
|
||||
bge _037FA8B4
|
||||
ldr r0, [r4, #20]
|
||||
str r0, [r8, #20]
|
||||
str r8, [r4, #20]
|
||||
str r4, [r8, #24]
|
||||
ldr r0, [r8, #20]
|
||||
cmp r0, #0
|
||||
strne r8, [r0, #24]
|
||||
bne _037FA8F4
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
str r8, [r0]
|
||||
mov r0, r8
|
||||
bl FUN_037FA970
|
||||
b _037FA8F4
|
||||
_037FA8B4:
|
||||
ldr r4, [r4, #24]
|
||||
_037FA8B8:
|
||||
cmp r4, #0
|
||||
bne _037FA864
|
||||
mov r0, #0
|
||||
str r0, [r8, #24]
|
||||
ldr r0, _037FA8FC ; =_03807934
|
||||
ldr r1, [r0, #4]
|
||||
str r8, [r0, #4]
|
||||
str r1, [r8, #20]
|
||||
cmp r1, #0
|
||||
strne r8, [r1, #24]
|
||||
bne _037FA8F4
|
||||
str r8, [r0, #4]
|
||||
str r8, [r0]
|
||||
mov r0, r8
|
||||
bl FUN_037FA970
|
||||
_037FA8F4:
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
||||
bx lr
|
||||
_037FA8FC: .word _03807934
|
||||
|
||||
arm_func_start OS_CreateAlarm
|
||||
OS_CreateAlarm: ; 0x037FA900
|
||||
mov r1, #0
|
||||
str r1, [r0]
|
||||
str r1, [r0, #8]
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_IsAlarmAvailable
|
||||
OS_IsAlarmAvailable: ; 0x037FA910
|
||||
ldr r0, _037FA91C ; =_03807930
|
||||
ldrh r0, [r0]
|
||||
bx lr
|
||||
_037FA91C: .word _03807930
|
||||
|
||||
arm_func_start OS_InitAlarm
|
||||
OS_InitAlarm: ; 0x037FA920
|
||||
stmfd sp!, {lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _037FA968 ; =_03807930
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _037FA95C
|
||||
mov r0, #1
|
||||
strh r0, [r1]
|
||||
bl OSi_SetTimerReserved
|
||||
mov r1, #0
|
||||
ldr r0, _037FA96C ; =_03807934
|
||||
str r1, [r0]
|
||||
str r1, [r0, #4]
|
||||
mov r0, #16
|
||||
bl OS_DisableIrqMask
|
||||
_037FA95C:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_037FA968: .word _03807930
|
||||
_037FA96C: .word _03807934
|
||||
|
||||
arm_func_start FUN_037FA970
|
||||
FUN_037FA970: ; 0x037FA970
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
bl OS_GetTick
|
||||
mov r2, #0
|
||||
ldr r3, _037FA9FC ; =0x04000106
|
||||
strh r2, [r3]
|
||||
ldr ip, [r4, #12]
|
||||
ldr r3, [r4, #16]
|
||||
subs r5, ip, r0
|
||||
sbc r4, r3, r1
|
||||
mov r0, #1
|
||||
ldr r1, _037FAA00 ; =FUN_037FA540
|
||||
bl OSi_EnterTimerCallback
|
||||
mov r1, #0
|
||||
subs r0, r5, r1
|
||||
sbcs r0, r4, r1
|
||||
ldrlt r1, _037FAA04 ; =0x0000FFFE
|
||||
blt _037FA9D4
|
||||
mov r0, #65536 ; 0x10000
|
||||
subs r0, r5, r0
|
||||
sbcs r0, r4, r1
|
||||
mvnlt r0, r5
|
||||
movlt r0, r0, lsl #16
|
||||
movlt r1, r0, lsr #16
|
||||
_037FA9D4:
|
||||
ldr r0, _037FAA08 ; =0x04000104
|
||||
strh r1, [r0]
|
||||
mov r1, #193 ; 0xc1
|
||||
ldr r0, _037FA9FC ; =0x04000106
|
||||
strh r1, [r0]
|
||||
mov r0, #16
|
||||
bl OS_EnableIrqMask
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
bx lr
|
||||
_037FA9FC: .word 0x04000106
|
||||
_037FAA00: .word FUN_037FA540
|
||||
_037FAA04: .word 0x0000FFFE
|
||||
_037FAA08: .word 0x04000104
|
||||
|
||||
arm_func_start FUN_037FAA0C
|
||||
FUN_037FAA0C: ; 0x037FAA0C
|
||||
stmdb sp!, {r4, lr}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user