From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33347) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZfUZR-00031Q-TV for qemu-devel@nongnu.org; Fri, 25 Sep 2015 11:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZfUZM-00037b-3O for qemu-devel@nongnu.org; Fri, 25 Sep 2015 11:05:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41829) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZfUZL-00036Z-Oy for qemu-devel@nongnu.org; Fri, 25 Sep 2015 11:05:52 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id 5C58C9239B for ; Fri, 25 Sep 2015 15:05:51 +0000 (UTC) From: Laurent Vivier Date: Fri, 25 Sep 2015 16:09:07 +0200 Message-Id: <1443190150-17312-7-git-send-email-lvivier@redhat.com> In-Reply-To: <1443190150-17312-1-git-send-email-lvivier@redhat.com> References: <1443190150-17312-1-git-send-email-lvivier@redhat.com> Subject: [Qemu-devel] [PULL 6/9] arm: clarify the use of muldiv64() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: pbonzini@redhat.com Cc: Laurent Vivier , qemu-devel@nongnu.org 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 Acked-by: Peter Maydell --- 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 12ea88f..8367997 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, @@ -706,8 +708,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 */ @@ -745,8 +747,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 */ @@ -766,8 +768,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