[U-Boot] [PATCH V5 1/3] arm: Add support for MB86R0x SoCs
Wolfgang Denk
wd at denx.de
Mon Aug 9 11:24:17 CEST 2010
Dear =?ISO-8859-1?Q?Matthias_Wei=DFer?=,
In message <4C5FA669.6070303 at arcor.de> you wrote:
>
> >> + tmo = usec_to_tick(usec);
> >> + tmp = get_ticks() + tmo; /* get current timestamp */
> >> +
> >> + while (get_ticks()< tmp) /* loop till event */
> >> + /*NOP*/;
> >
> > This is broken when the timer wraps around. Compare the limit against
> > the difference, to make use of unsigned arithmetics.
>
> Isn't this a theoretical problem? The timer increments with approx.
> 160kHz. get_ticks() returns a 64 bit value which wraps all ~ 3*10^6
> years. I don't expect my hardware to work that long without a reboot.
Such assumptions that problems might remain theoretical have cuased
enough real problems already. I mean, if it was difficult to write
correct code I might turn a blind eye, but why not fix it? It's a
trivial change...
> Can you point me to an example where the timer stuff is done right? I
> see it done differently on nearly all ARM SOCs.
Rule of a thumb: to copy from ARM means copying problems.
Use:
while ((get_ticks() - tmp) < tmo)
;
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Einstein argued that there must be simplified explanations of nature,
because God is not capricious or arbitrary. No such faith comforts
the software engineer. - Fred Brooks, Jr.
More information about the U-Boot
mailing list