[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