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

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to