Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Tom Rini <trini@ti.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/timer_defs.h>
+#include <div64.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 
        timer_diff = get_ticks() - gd->timer_reset_value;
 
-       return (timer_diff / (gd->timer_rate_hz / CONFIG_SYS_HZ)) - base;
+       return lldiv(timer_diff, (gd->timer_rate_hz / CONFIG_SYS_HZ)) - base;
 }
 
 void __udelay(unsigned long usec)
 {
        unsigned long long endtime;
 
-       endtime = ((unsigned long long)usec * gd->timer_rate_hz) / 1000000UL;
+       endtime = lldiv((unsigned long long)usec * gd->timer_rate_hz,
+                       1000000UL);
        endtime += get_ticks();
 
        while (get_ticks() < endtime)