diff options
Diffstat (limited to 'arch/arm/lib/delay.S')
-rw-r--r-- | arch/arm/lib/delay.S | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/lib/delay.S b/arch/arm/lib/delay.S index 8d6a8762ab88..3c9a05c8d20b 100644 --- a/arch/arm/lib/delay.S +++ b/arch/arm/lib/delay.S | |||
@@ -25,11 +25,15 @@ ENTRY(__udelay) | |||
25 | ldr r2, .LC1 | 25 | ldr r2, .LC1 |
26 | mul r0, r2, r0 | 26 | mul r0, r2, r0 |
27 | ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06 | 27 | ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06 |
28 | mov r1, #-1 | ||
28 | ldr r2, .LC0 | 29 | ldr r2, .LC0 |
29 | ldr r2, [r2] @ max = 0x01ffffff | 30 | ldr r2, [r2] @ max = 0x01ffffff |
31 | add r0, r0, r1, lsr #32-14 | ||
30 | mov r0, r0, lsr #14 @ max = 0x0001ffff | 32 | mov r0, r0, lsr #14 @ max = 0x0001ffff |
33 | add r2, r2, r1, lsr #32-10 | ||
31 | mov r2, r2, lsr #10 @ max = 0x00007fff | 34 | mov r2, r2, lsr #10 @ max = 0x00007fff |
32 | mul r0, r2, r0 @ max = 2^32-1 | 35 | mul r0, r2, r0 @ max = 2^32-1 |
36 | add r0, r0, r1, lsr #32-6 | ||
33 | movs r0, r0, lsr #6 | 37 | movs r0, r0, lsr #6 |
34 | moveq pc, lr | 38 | moveq pc, lr |
35 | 39 | ||