Am 18.12.2010 um 17:47 schrieb Richard W.M. Jones:

On Sat, Dec 18, 2010 at 05:25:26PM +0100, Andreas Färber wrote:
softfloat.h's int64 type has least-width semantics,
but this doesn't seem intended here, so use plain int64_t.

v3:
* Split off.

Cc: Richard W.M. Jones <rjo...@redhat.com>
Signed-off-by: Andreas Färber <andreas.faer...@web.de>
---
hw/wdt_ib700.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/wdt_ib700.c b/hw/wdt_ib700.c
index b6235eb..1248464 100644
--- a/hw/wdt_ib700.c
+++ b/hw/wdt_ib700.c
@@ -53,7 +53,7 @@ static void ib700_write_enable_reg(void *vp, uint32_t addr, uint32_t data)
       30, 28, 26, 24, 22, 20, 18, 16,
       14, 12, 10,  8,  6,  4,  2,  0
   };
-    int64 timeout;
+    int64_t timeout;

   ib700_debug("addr = %x, data = %x\n", addr, data);

The use of int64(_t) was just so that the timeout calculation in the
next two lines would not overflow:

 timeout = (int64_t) time_map[data & 0xF] * get_ticks_per_sec();
 qemu_mod_timer(s->timer, qemu_get_clock (vm_clock) + timeout);

and from you say it does seem like it was a mistake to use int64
instead of int64_t.

int64_t should be the right choice then.

ACK.

In more general terms, am I doing the timeout correctly in this code?

Being unfamiliar with both the timer code and this device, hard to say for me. You're taking the lower nibble of uint32_t data and indexing time_map[] with it, which contains 16 elements, so okay, upcast it to 64-bit and multiply it to ticks. Assuming that vm_clock works in ticks, adding the calculated timeout for the next expiry technically looks good. Except for the extra space. ;)

Care to provide a formal Reviewed-by or Acked-by? I'd respin it for Blue with updated description.

Thanks,
Andreas

Reply via email to