From a7bcb7e62d8bc4026ad6442410a74cdb1eb86761 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 31 Jan 2022 02:50:27 +0000 Subject: [PATCH] Implement ottd_rdtsc for AARCH64 on GCC/clang --- src/cpu.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cpu.cpp b/src/cpu.cpp index d95c704e2a..d9d7ac2377 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -50,6 +50,17 @@ uint64 ottd_rdtsc() # define RDTSC_AVAILABLE #endif +/* rdtsc for AARCH64. Use GCC syntax */ +#if defined(__aarch64__) && !defined(RDTSC_AVAILABLE) +uint64 ottd_rdtsc() +{ + uint64 val; + asm volatile("mrs %0, cntvct_el0" : "=r" (val)); + return val; +} +# define RDTSC_AVAILABLE +#endif + /* rdtsc for PPC which has this not */ #if (defined(__POWERPC__) || defined(__powerpc__)) && !defined(RDTSC_AVAILABLE) uint64 ottd_rdtsc()