qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64()


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64()
Date: Tue, 8 Sep 2015 08:58:34 -0400 (EDT)


----- Messaggio originale -----
> Da: "Laurent Vivier" <address@hidden>
> A: address@hidden, "Stefan Hajnoczi" <address@hidden>, "Paolo Bonzini" 
> <address@hidden>,
> address@hidden
> Inviato: Martedì, 8 settembre 2015 14:55:25
> Oggetto: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64()
> 
> 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
> >  
> > 

Reviewed-by: Paolo Bonzini <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]