[U-Boot] [PATCH] lib/time - fix "usec_to_tick" calculation for hi freq system timers

Alexey Brodkin Alexey.Brodkin at synopsys.com
Mon Dec 9 13:57:10 CET 2013


Current implementation works fine if "usec * get_tbclk()" fits in 32
bits. Otherwise result will be cut down to 32-bit.

Fix is obvious - first extend data type of either operand.

Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>

Cc: Rob Herring <rob.herring at calxeda.com>
Cc: Mischa Jonker <mjonker at synopsys.com>
---
 lib/time.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/time.c b/lib/time.c
index 09bb05a..80003c3 100644
--- a/lib/time.c
+++ b/lib/time.c
@@ -71,7 +71,7 @@ unsigned long __weak notrace timer_get_us(void)
 }
 static unsigned long long usec_to_tick(unsigned long usec)
 {
-	uint64_t tick = usec * get_tbclk();
+	uint64_t tick = (uint64_t)usec * get_tbclk();
 	usec *= get_tbclk();
 	do_div(tick, 1000000);
 	return tick;
-- 
1.8.4.2



More information about the U-Boot mailing list