1
2
3
4
5
6
7
8
9
10#include <linux/linkage.h>
11#include <asm/assembler.h>
12#include <asm/delay.h>
13 .text
14
15.LC0: .word loops_per_jiffy
16.LC1: .word UDELAY_MULT
17
18
19
20
21
22
23
24ENTRY(__loop_udelay)
25 ldr r2, .LC1
26 mul r0, r2, r0
27ENTRY(__loop_const_udelay) @ 0 <= r0 <= 0x7fffff06
28 mov r1,
29 ldr r2, .LC0
30 ldr r2, [r2] @ max = 0x01ffffff
31 add r0, r0, r1, lsr
32 mov r0, r0, lsr
33 add r2, r2, r1, lsr
34 mov r2, r2, lsr
35 mul r0, r2, r0 @ max = 2^32-1
36 add r0, r0, r1, lsr
37 movs r0, r0, lsr
38 moveq pc, lr
39
40
41
42
43
44@ Delay routine
45ENTRY(__loop_delay)
46 subs r0, r0,
47
48 movls pc, lr
49 subs r0, r0,
50 movls pc, lr
51 subs r0, r0,
52 movls pc, lr
53 subs r0, r0,
54 movls pc, lr
55 subs r0, r0,
56 movls pc, lr
57 subs r0, r0,
58 movls pc, lr
59 subs r0, r0,
60 movls pc, lr
61 subs r0, r0,
62#endif
63 bhi __loop_delay
64 mov pc, lr
65ENDPROC(__loop_udelay)
66ENDPROC(__loop_const_udelay)
67ENDPROC(__loop_delay)
68