Hello Wolfgang

Am 07.08.2010 23:35, schrieb Wolfgang Denk:
> Dear Matthias Weisser,
>
> In message<1280734550-18403-2-git-send-email-weiss...@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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to