--- a/cpu/pxa/interrupts.c 2004-11-24 15:35:31.000000000 -0800 +++ a/cpu/pxa/interrupts.c 2005-02-06 22:26:07.899042412 -0800 @@ -191,20 +191,20 @@ void udelay_masked (unsigned long usec) { ulong tmo; + ulong base = get_timer(0); if (usec >= 1000) { tmo = usec / 1000; tmo *= CFG_HZ; tmo /= 1000; } else { tmo = usec * CFG_HZ; tmo /= (1000*1000); } - reset_timer_masked (); - while (tmo >= get_timer_masked ()) + while (get_timer(base) <= tmo) /*NOP*/; }