From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34462) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZIQt-0006MC-78 for qemu-devel@nongnu.org; Tue, 08 Sep 2015 08:55:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZZIQq-0006YY-24 for qemu-devel@nongnu.org; Tue, 08 Sep 2015 08:55:31 -0400 References: <1440703987-29012-1-git-send-email-lvivier@redhat.com> <1440703987-29012-8-git-send-email-lvivier@redhat.com> From: Laurent Vivier Message-ID: <55EEDABD.5090305@redhat.com> Date: Tue, 8 Sep 2015 14:55:25 +0200 MIME-Version: 1.0 In-Reply-To: <1440703987-29012-8-git-send-email-lvivier@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Stefan Hajnoczi , Paolo Bonzini , qemu-trivial@nongnu.org ping ? On 27/08/2015 21:33, Laurent Vivier wrote: > hpet defines a clock period in femtoseconds but > then converts it to nanoseconds to use the internal > timers. > > We can define the period in nanoseconds and use it > directly, this allows to remove muldiv64(). > > We only need to convert the period to femtoseconds > to put it in internal hpet capability register. > > Signed-off-by: Laurent Vivier > --- > hw/timer/hpet.c | 6 +++--- > include/hw/timer/hpet.h | 4 ++-- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c > index 2bb6221..3037bef 100644 > --- a/hw/timer/hpet.c > +++ b/hw/timer/hpet.c > @@ -126,12 +126,12 @@ static uint32_t hpet_time_after64(uint64_t a, uint64_t b) > > static uint64_t ticks_to_ns(uint64_t value) > { > - return (muldiv64(value, HPET_CLK_PERIOD, FS_PER_NS)); > + return value * HPET_CLK_PERIOD; > } > > static uint64_t ns_to_ticks(uint64_t value) > { > - return (muldiv64(value, FS_PER_NS, HPET_CLK_PERIOD)); > + return value / HPET_CLK_PERIOD; > } > > static uint64_t hpet_fixup_reg(uint64_t new, uint64_t old, uint64_t mask) > @@ -758,7 +758,7 @@ static void hpet_realize(DeviceState *dev, Error **errp) > /* 64-bit main counter; LegacyReplacementRoute. */ > s->capability = 0x8086a001ULL; > s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT; > - s->capability |= ((HPET_CLK_PERIOD) << 32); > + s->capability |= ((uint64_t)(HPET_CLK_PERIOD * FS_PER_NS) << 32); > > qdev_init_gpio_in(dev, hpet_handle_legacy_irq, 2); > qdev_init_gpio_out(dev, &s->pit_enabled, 1); > diff --git a/include/hw/timer/hpet.h b/include/hw/timer/hpet.h > index 773953b..d872909 100644 > --- a/include/hw/timer/hpet.h > +++ b/include/hw/timer/hpet.h > @@ -16,9 +16,9 @@ > #include "qom/object.h" > > #define HPET_BASE 0xfed00000 > -#define HPET_CLK_PERIOD 10000000ULL /* 10000000 femtoseconds == 10ns*/ > +#define HPET_CLK_PERIOD 10 /* 10 ns*/ > > -#define FS_PER_NS 1000000 > +#define FS_PER_NS 1000000 /* 1000000 femtoseconds == 1 ns */ > #define HPET_MIN_TIMERS 3 > #define HPET_MAX_TIMERS 32 > >