- pre3:
[davej-history.git] / arch / arm / lib / delay.S
blob5c33878d0c96b07048d7fc778e2ac148ec03d9f8
1 /*
2  * linux/arch/arm/lib/delay.S
3  *
4  * Copyright (C) 1995, 1996 Russell King
5  */
6 #include <linux/linkage.h>
7 #include <asm/assembler.h>
8                 .text
10 LC0:            .word   SYMBOL_NAME(loops_per_sec)
12 ENTRY(udelay)
13                 mov     r2, #0x1000
14                 orr     r2, r2, #0x00c6
15                 mul     r1, r0, r2
16                 ldr     r2, LC0
17                 ldr     r2, [r2]
18                 mov     r1, r1, lsr #11
19                 mov     r2, r2, lsr #11
20                 mul     r0, r1, r2
21                 movs    r0, r0, lsr #10
22                 RETINSTR(moveq,pc,lr)
24 @ Delay routine
25 ENTRY(__delay)
26                 subs    r0, r0, #1
27                 RETINSTR(movcc,pc,lr)
28                 subs    r0, r0, #1
29                 RETINSTR(movcc,pc,lr)
30                 subs    r0, r0, #1
31                 RETINSTR(movcc,pc,lr)
32                 subs    r0, r0, #1
33                 RETINSTR(movcc,pc,lr)
34                 subs    r0, r0, #1
35                 RETINSTR(movcc,pc,lr)
36                 subs    r0, r0, #1
37                 RETINSTR(movcc,pc,lr)
38                 subs    r0, r0, #1
39                 RETINSTR(movcc,pc,lr)
40                 subs    r0, r0, #1
41                 bcs     SYMBOL_NAME(__delay)
42                 RETINSTR(mov,pc,lr)