--- cpu/arm926ejs/davinci/timer.c.orig 2007-10-16 21:59:01.000000000 +0200 +++ cpu/arm926ejs/davinci/timer.c 2007-09-11 21:53:03.000000000 +0300 @@ -86,7 +86,10 @@ ulong get_timer(ulong base) { - return(get_timer_masked() - base); + ulong gtm = get_timer_masked(); + if(gtm < base) /* overflow; assume no more than one -- 159 seconds */ + gtm += (0xffffffffUL / TIMER_LOAD_VAL); + return gtm - base; } void set_timer(ulong t)