[U-Boot-Users] [PATCH] Make sleep shell command is reliablefor all architectures

Scott Wood scottwood at freescale.com
Tue May 20 17:24:04 CEST 2008


McMullan, Jason wrote:
> On Tue, 2008-05-20 at 16:23 +0200, Wolfgang Denk wrote:
>> Well, even if this happens, it should not cause get_timer()  to  show
>> such problems. get_timer() returns an "unsigned long" and is counting
>> in milliseconds, so a wrap-around should take about 50 days.
> 
> Yes, but get_timer() is not guaranteed to return 0 to MAX_ULONG, as
> far as I can tell.
> 
> On MIPS (even after my CFG_HZ patch), get_timer() will only return
> 0 to 14316 on a 300MHZ machine, as the 32-bit MIPS tick timer that
> forms the MIPS time base wraps to 0 after 14.316 seconds.
> 
>> I tend to reject this patch because I think we should fix  the  cause
>> of  the  problems  rather than the symptoms - there are more areas in
>> the code that rely on sane behaviour of the get_timer() functione.
> 
> Well, then we've got a big problem on MIPS.

This can be fixed by maintaining the upper bits of the timebase in 
software, as long we can guarantee that get_timer() is called at least 
once per wraparound.  That is, remember the last value, and if the new 
value is less than the old value, increment the upper word.

-Scott




More information about the U-Boot mailing list