From: Gabriel Ganne Date: Mon, 20 Mar 2017 14:13:02 +0000 (+0100) Subject: armv8 - fix os_cpu_clock_frequency for armv8 X-Git-Tag: v17.04-rc1~16 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=1dc2f9284e5b5eb8b300d63cdb8f74ee36cdecb0;p=vpp.git armv8 - fix os_cpu_clock_frequency for armv8 System timer of ARMv8 runs at a different frequency than the CPU's. The frequency is fixed, typically in the range 1-50MHz. It can be read at CNTFRQ special register. Change-Id: I6a21a6a9e2df783559df0caec63d5525c2258227 Signed-off-by: Gabriel Ganne --- diff --git a/src/vppinfra/time.c b/src/vppinfra/time.c index 2bdb9da4b39..168d7375915 100644 --- a/src/vppinfra/time.c +++ b/src/vppinfra/time.c @@ -147,6 +147,12 @@ os_cpu_clock_frequency (void) if (clib_cpu_supports_invariant_tsc ()) return estimate_clock_frequency (1e-3); +#if defined (__aarch64__) + u64 tsc; + asm volatile ("mrs %0, CNTFRQ_EL0":"=r" (tsc)); + return (f64) tsc; +#endif + /* First try /sys version. */ cpu_freq = clock_frequency_from_sys_filesystem (); if (cpu_freq != 0)