diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-04-29 23:00:35 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-29 23:00:35 +0300 |
commit | 356496df593888c3aa241af3bdaa994fe881cf07 (patch) | |
tree | 761763b649e35b089c7ff17d629e1e268bb2f086 /arm9/asm/OS_irqHandler.s | |
parent | 6278ec0cd56a76abff65fde8c9898bf759965baf (diff) | |
parent | 8791fd7453bba70773b07a048152935e816ad095 (diff) |
Merge branch 'master' into pikalax_work
Diffstat (limited to 'arm9/asm/OS_irqHandler.s')
-rw-r--r-- | arm9/asm/OS_irqHandler.s | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/arm9/asm/OS_irqHandler.s b/arm9/asm/OS_irqHandler.s new file mode 100644 index 00000000..9dd30869 --- /dev/null +++ b/arm9/asm/OS_irqHandler.s @@ -0,0 +1,47 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .dtcm + .balign 16, 0 + .global OSi_IrqThreadQueue +OSi_IrqThreadQueue: ; 027E0060 + + .section .text + + arm_func_start OS_WaitIrq +OS_WaitIrq: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + cmp r5, #0x0 + beq _020C9C3C + ldr r1, _020C9C80 ; =0x027E0000 + mvn r2, r4 + add r1, r1, #0x3000 + ldr r3, [r1, #0xff8] + and r2, r3, r2 + str r2, [r1, #0xff8] +_020C9C3C: + bl OS_RestoreInterrupts + ldr r1, _020C9C80 ; =0x027E0000 + add r0, r1, #0x3000 + ldr r0, [r0, #0xff8] + ands r0, r4, r0 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldr r0, _020C9C84 ; =0x00003FF8 + add r6, r1, r0 + ldr r5, _020C9C88 ; =0x027E0060 +_020C9C64: + mov r0, r5 + bl OS_SleepThread + ldr r0, [r6, #0x0] + ands r0, r4, r0 + beq _020C9C64 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9C80: .word 0x027E0000 +_020C9C84: .word 0x00003FF8 +_020C9C88: .word 0x027E0060 |