Merge branch 'master' of git://www.denx.de/git/u-boot-cfi-flash
[oweals/u-boot.git] / cpu / s3c44b0 / interrupts.c
index 4328feb4e36b55ccc67e84489077df46fd438a52..5d2c13d97f88ec51aa9a37f079e2219705a27887 100644 (file)
@@ -29,8 +29,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
-
 /* we always count down the max. */
 #define TIMER_LOAD_VAL 0xffff
 
@@ -221,15 +219,22 @@ ulong get_timer_masked (void)
 void udelay_masked (unsigned long usec)
 {
        ulong tmo;
+       ulong endtime;
+       signed long diff;
 
-       tmo = usec / 1000;
-       tmo *= CFG_HZ;
-       tmo /= 8;
-
-       tmo += get_timer (0);
+       if (usec >= 1000) {
+               tmo = usec / 1000;
+               tmo *= CFG_HZ;
+               tmo /= 8;
+       } else {
+               tmo = usec * CFG_HZ;
+               tmo /= (1000*8);
+       }
 
-       reset_timer_masked ();
+       endtime = get_timer(0) + tmo;
 
-       while (get_timer_masked () < tmo)
-               /*NOP*/;
+       do {
+               ulong now = get_timer_masked ();
+               diff = endtime - now;
+       } while (diff >= 0);
 }