26 lines
518 B
ArmAsm
26 lines
518 B
ArmAsm
/* START: Sets up the inner and outer loop. The outer loop is anything between
|
|
the calls to macros START and END, while the inner loop is the code between
|
|
labels 2: and 3: (both *INCLUDED*). */
|
|
.macro START
|
|
ldrs 2f
|
|
ldre 3f
|
|
1: ldrc r2
|
|
nop
|
|
.endm
|
|
|
|
/* END: Finishes the outer loop and adds strides. */
|
|
.macro END
|
|
dt r1
|
|
add r4, r3
|
|
bf.s 1b
|
|
add r6, r5
|
|
.endm
|
|
|
|
/* EPILOGUE: Finishes the call by reloading registers saved in the prologue. */
|
|
.macro EPILOGUE
|
|
mov.l @r15+, r9
|
|
mov r3, r0
|
|
rts
|
|
mov.l @r15+, r8
|
|
.endm
|