[U-Boot] armv8: define get_ticks() for the ARMv8 Generic Timer

Tom Rini trini at konsulko.com
Mon Nov 7 02:14:22 CET 2016


On Thu, Nov 03, 2016 at 12:56:25AM +0000, Andre Przywara wrote:

> For 64-bit ARM systems we provide just a timer_read_counter()
> implementation and rely on the generic non-uclass get_ticks() function
> in lib/time.c to call the former.
> However this function is actually not 64-bit safe, as it assumes a
> "long" to be 32-bit. Beside the fact that the resulting uint64_t
> isn't bigger than "long" on 64-bit architectures and thus combining two
> counters makes no sense, we get all kind of weird results when we try
> to OR in the high value shifted by _32_ bits.
> So let's avoid that function at all and provide a straight forward
> get_ticks() implementation for ARMv8, which also is in line with ARMv7.
> 
> This fixes occasional immediate time-out expiration issues I see on the
> Pine64 board. The root cause of this needs to be investigated, but this
> fix looks like the right thing anyway.
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161106/a06bc697/attachment.sig>


More information about the U-Boot mailing list