[U-Boot] [PATCH V5 1/3] arm: Add support for MB86R0x SoCs
Matthias Weißer
weisserm at arcor.de
Mon Aug 9 08:55:37 CEST 2010
Hello Wolfgang
Am 07.08.2010 23:35, schrieb Wolfgang Denk:
> Dear Matthias Weisser,
>
> In message<1280734550-18403-2-git-send-email-weisserm at arcor.de> you wrote:
>> +void __udelay(unsigned long usec)
>> +{
>> + unsigned long long tmp;
>> + ulong tmo;
>> +
>> + 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.
Can you point me to an example where the timer stuff is done right? I
see it done differently on nearly all ARM SOCs.
Thanks for the review
Matthias
More information about the U-Boot
mailing list