|
@@ -10,6 +10,7 @@
|
|
|
#include <linux/linkage.h>
|
|
|
#include <asm/assembler.h>
|
|
|
#include <asm/delay.h>
|
|
|
+
|
|
|
.text
|
|
|
|
|
|
.LC0: .word loops_per_jiffy
|
|
@@ -17,7 +18,6 @@
|
|
|
|
|
|
/*
|
|
|
* r0 <= 2000
|
|
|
- * lpj <= 0x01ffffff (max. 3355 bogomips)
|
|
|
* HZ <= 1000
|
|
|
*/
|
|
|
|
|
@@ -25,16 +25,11 @@ ENTRY(__loop_udelay)
|
|
|
ldr r2, .LC1
|
|
|
mul r0, r2, r0
|
|
|
ENTRY(__loop_const_udelay) @ 0 <= r0 <= 0x7fffff06
|
|
|
- mov r1, #-1
|
|
|
ldr r2, .LC0
|
|
|
- ldr r2, [r2] @ max = 0x01ffffff
|
|
|
- add r0, r0, r1, lsr #32-14
|
|
|
- mov r0, r0, lsr #14 @ max = 0x0001ffff
|
|
|
- add r2, r2, r1, lsr #32-10
|
|
|
- mov r2, r2, lsr #10 @ max = 0x00007fff
|
|
|
- mul r0, r2, r0 @ max = 2^32-1
|
|
|
- add r0, r0, r1, lsr #32-6
|
|
|
- movs r0, r0, lsr #6
|
|
|
+ ldr r2, [r2]
|
|
|
+ umull r1, r0, r2, r0
|
|
|
+ adds r1, r1, #0xffffffff
|
|
|
+ adcs r0, r0, r0
|
|
|
reteq lr
|
|
|
|
|
|
/*
|