.arch armv4
.text
.LC0: .word loops_per_jiffy
.LC1: .word UDELAY_MULT
SYM_TYPED_FUNC_START(__loop_udelay)
ldr r2, .LC1
mul r0, r2, r0 @ r0 = delay_us * UDELAY_MULT
b __loop_const_udelay
SYM_FUNC_END(__loop_udelay)
SYM_TYPED_FUNC_START(__loop_const_udelay) @ 0 <= r0 <= 0xfffffaf0
ldr r2, .LC0
ldr r2, [r2]
umull r1, r0, r2, r0 @ r0-r1 = r0 * loops_per_jiffy
adds r1, r1,
adcs r0, r0, r0 @ and right shift by 31
reteq lr
b __loop_delay
SYM_FUNC_END(__loop_const_udelay)
.align 3
@ Delay routine
SYM_TYPED_FUNC_START(__loop_delay)
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
retls lr
subs r0, r0,
bhi __loop_delay
ret lr
SYM_FUNC_END(__loop_delay)