[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