From 1dc2f9284e5b5eb8b300d63cdb8f74ee36cdecb0 Mon Sep 17 00:00:00 2001 From: Gabriel Ganne Date: Mon, 20 Mar 2017 15:13:02 +0100 Subject: 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 --- src/vppinfra/time.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/vppinfra/time.c') 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) -- cgit 1.2.3-korg