mirror of https://github.com/zeldaret/tmc.git
44 lines
746 B
ArmAsm
44 lines
746 B
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
.syntax unified
|
|
.text
|
|
|
|
thumb_func_start fill_rq_stack
|
|
fill_rq_stack: // fill iqr and user stack with 'MCZ3'
|
|
adr r0, pool
|
|
ldm r0!, {r1, r2, r3}
|
|
loop1:
|
|
subs r2, #4
|
|
str r1, [r2]
|
|
cmp r2, r3
|
|
bgt loop1
|
|
bx lr
|
|
|
|
// unused
|
|
// returns the maximum values reached by irq stack (r0) and usr stack (r1)
|
|
check_stack_threshold:
|
|
adr r0, pool
|
|
ldm r0!, {r1, r2, r3}
|
|
loop2:
|
|
ldr r0, [r3]
|
|
adds r3, #4
|
|
cmp r0, r1 // cmp against magic
|
|
beq loop2
|
|
|
|
subs r2, #0xa0
|
|
loop3:
|
|
ldr r0, [r2]
|
|
adds r2, #4
|
|
cmp r0, r1 // cmp against magic
|
|
beq loop3
|
|
|
|
subs r1, r2, #4
|
|
subs r0, r3, #4
|
|
bx lr
|
|
|
|
.align 2, 0
|
|
pool:
|
|
.byte '3, 'Z, 'C, 'M // r1
|
|
.4byte irq_stack_begin // r2
|
|
.4byte usr_stack_top // r3
|