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