[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64()
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() |
Date: |
Tue, 8 Sep 2015 14:55:25 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
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 <address@hidden>
> ---
> 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
>
>
- Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64(),
Laurent Vivier <=