2 * linux/arch/arm/lib/delay.S
4 * Copyright (C) 1995, 1996 Russell King
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
10 #include <linux/linkage.h>
11 #include <asm/assembler.h>
12 #include <asm/delay.h>
16 .LC0: .word loops_per_jiffy
17 .LC1: .word UDELAY_MULT
20 * loops = r0 * HZ * loops_per_jiffy / 1000000
28 mul r0, r2, r0 @ r0 = delay_us * UDELAY_MULT
29 ENTRY(__loop_const_udelay) @ 0 <= r0 <= 0xfffffaf0
32 umull r1, r0, r2, r0 @ r0-r1 = r0 * loops_per_jiffy
33 adds r1, r1, #0xffffffff @ rounding up ...
34 adcs r0, r0, r0 @ and right shift by 31
60 ENDPROC(__loop_udelay)
61 ENDPROC(__loop_const_udelay)