From: Sebastian Huber Date: Sun, 16 Feb 2014 11:12:38 +0000 (+0100) Subject: hw/timer/grlib_gptimer: Avoid integer overflows X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9d5614d582d23ec96b167583557bf3f25f64f050;p=qemu.git hw/timer/grlib_gptimer: Avoid integer overflows The GPTIMER uses 32-bit registers. Use a 64-bit operation to get the ptimer count, otherwise we end up with a count of 0 for GPTIMER counter values of 0xffffffff. Use the GPTIMER counter value for tracing to avoid an overflow of the 32-bit value passed to trace_grlib_gptimer_enable(). Reviewed-by: Fabien Chouteau Signed-off-by: Sebastian Huber Signed-off-by: Michael Tokarev --- diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index 74c16d6c90..7672d3ad8a 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -106,9 +106,9 @@ static void grlib_gptimer_enable(GPTimer *timer) /* ptimer is triggered when the counter reach 0 but GPTimer is triggered at underflow. Set count + 1 to simulate the GPTimer behavior. */ - trace_grlib_gptimer_enable(timer->id, timer->counter + 1); + trace_grlib_gptimer_enable(timer->id, timer->counter); - ptimer_set_count(timer->ptimer, timer->counter + 1); + ptimer_set_count(timer->ptimer, (uint64_t)timer->counter + 1); ptimer_run(timer->ptimer, 1); }