linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / arm / lib / delay.S
index 930a702..b3fb475 100644 (file)
@@ -9,32 +9,28 @@
  */
 #include <linux/linkage.h>
 #include <asm/assembler.h>
-#include <asm/param.h>
                .text
 
 .LC0:          .word   loops_per_jiffy
-.LC1:          .word   (2199023*HZ)>>11
 
 /*
- * r0  <= 2000
- * lpj <= 0x01ffffff (max. 3355 bogomips)
- * HZ  <= 1000
+ * 0 <= r0 <= 2000
  */
-
 ENTRY(__udelay)
-               ldr     r2, .LC1
+               mov     r2,     #0x6800
+               orr     r2, r2, #0x00db
                mul     r0, r2, r0
-ENTRY(__const_udelay)                          @ 0 <= r0 <= 0x7fffff06
+ENTRY(__const_udelay)                          @ 0 <= r0 <= 0x01ffffff
                ldr     r2, .LC0
-               ldr     r2, [r2]                @ max = 0x01ffffff
-               mov     r0, r0, lsr #14         @ max = 0x0001ffff
-               mov     r2, r2, lsr #10         @ max = 0x00007fff
+               ldr     r2, [r2]                @ max = 0x0fffffff
+               mov     r0, r0, lsr #11         @ max = 0x00003fff
+               mov     r2, r2, lsr #11         @ max = 0x0003ffff
                mul     r0, r2, r0              @ max = 2^32-1
                movs    r0, r0, lsr #6
-               moveq   pc, lr
+               RETINSTR(moveq,pc,lr)
 
 /*
- * loops = r0 * HZ * loops_per_jiffy / 1000000
+ * loops = (r0 * 0x10c6 * 100 * loops_per_jiffy) / 2^32
  *
  * Oh, if only we had a cycle counter...
  */
@@ -43,20 +39,20 @@ ENTRY(__const_udelay)                               @ 0 <= r0 <= 0x7fffff06
 ENTRY(__delay)
                subs    r0, r0, #1
 #if 0
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
-               movls   pc, lr
+               RETINSTR(movls,pc,lr)
                subs    r0, r0, #1
 #endif
                bhi     __delay
-               mov     pc, lr
+               RETINSTR(mov,pc,lr)