From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57406) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZV3iI-0007Os-Oh for qemu-devel@nongnu.org; Thu, 27 Aug 2015 16:23:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZV3iH-00052Y-PJ for qemu-devel@nongnu.org; Thu, 27 Aug 2015 16:23:58 -0400 MIME-Version: 1.0 In-Reply-To: <1440703987-29012-7-git-send-email-lvivier@redhat.com> References: <1440703987-29012-1-git-send-email-lvivier@redhat.com> <1440703987-29012-7-git-send-email-lvivier@redhat.com> Date: Thu, 27 Aug 2015 13:23:56 -0700 Message-ID: From: Peter Crosthwaite Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [PATCH v3 6/9] arm: clarify the use of muldiv64() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: qemu-trivial@nongnu.org, Peter Maydell , "qemu-devel@nongnu.org Developers" On Thu, Aug 27, 2015 at 12:33 PM, Laurent Vivier wrote: > muldiv64() is used to convert microseconds into CPU ticks. > > But it is not clear and not commented. This patch uses macro > to clearly identify what is used: time, CPU frequency and ticks. > For an elapsed time and a given frequency, we compute how many ticks > we have. > > Signed-off-by: Laurent Vivier Reviewed-by: Peter Crosthwaite > --- > v2: replace "arm: remove muldiv64()" > target-arm/helper.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/target-arm/helper.c b/target-arm/helper.c > index 7df1f06..4455761 100644 > --- a/target-arm/helper.c > +++ b/target-arm/helper.c > @@ -12,6 +12,8 @@ > #include /* For crc32 */ > #include "exec/semihost.h" > > +#define ARM_CPU_FREQ 1000000000 /* FIXME: 1 GHz, should be configurable */ > + > #ifndef CONFIG_USER_ONLY > static inline bool get_phys_addr(CPUARMState *env, target_ulong address, > int access_type, ARMMMUIdx mmu_idx, > @@ -678,8 +680,8 @@ void pmccntr_sync(CPUARMState *env) > { > uint64_t temp_ticks; > > - temp_ticks = muldiv64(qemu_clock_get_us(QEMU_CLOCK_VIRTUAL), > - get_ticks_per_sec(), 1000000); > + temp_ticks = muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), > + ARM_CPU_FREQ, NANOSECONDS_PER_SECOND); > > if (env->cp15.c9_pmcr & PMCRD) { > /* Increment once every 64 processor clock cycles */ > @@ -717,8 +719,8 @@ static uint64_t pmccntr_read(CPUARMState *env, const ARMCPRegInfo *ri) > return env->cp15.c15_ccnt; > } > > - total_ticks = muldiv64(qemu_clock_get_us(QEMU_CLOCK_VIRTUAL), > - get_ticks_per_sec(), 1000000); > + total_ticks = muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), > + ARM_CPU_FREQ, NANOSECONDS_PER_SECOND); > > if (env->cp15.c9_pmcr & PMCRD) { > /* Increment once every 64 processor clock cycles */ > @@ -738,8 +740,8 @@ static void pmccntr_write(CPUARMState *env, const ARMCPRegInfo *ri, > return; > } > > - total_ticks = muldiv64(qemu_clock_get_us(QEMU_CLOCK_VIRTUAL), > - get_ticks_per_sec(), 1000000); > + total_ticks = muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), > + ARM_CPU_FREQ, NANOSECONDS_PER_SECOND); > > if (env->cp15.c9_pmcr & PMCRD) { > /* Increment once every 64 processor clock cycles */ > -- > 2.1.0 > >