From a3f5003f88e547a57e0d3ba66446a2cee15ad5e8 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Thu, 26 Apr 2018 17:17:37 +0200 Subject: [PATCH] Read time from timer register on armv6, armv7. Same improvement as on aarch64. --- client/TracyProfiler.hpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index a8853aac..287c8434 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -23,7 +23,7 @@ # define TRACY_HW_TIMER #endif -#if defined __aarch64__ +#if defined __aarch64__ || __ARM_ARCH >= 6 # define TRACY_HW_TIMER #endif @@ -68,7 +68,12 @@ public: static tracy_force_inline int64_t GetTime( uint32_t& cpu ) { #ifdef TRACY_HW_TIMER -# if defined __aarch64__ +# if __ARM_ARCH >= 6 + int64_t t; + cpu = 0xFFFFFFFF; + asm volatile ( "mrrc p15, 1, %Q0, %R0, c14" : "=r" (t) ); + return t; +# elif defined __aarch64__ int64_t t; cpu = 0xFFFFFFFF; asm volatile ( "mrs %0, cntvct_el0" : "=r" (t) ); @@ -90,7 +95,11 @@ public: static tracy_force_inline int64_t GetTime() { #ifdef TRACY_HW_TIMER -# if defined __aarch64__ +# if __ARM_ARCH >= 6 + int64_t t; + asm volatile ( "mrrc p15, 1, %Q0, %R0, c14" : "=r" (t) ); + return t; +# elif defined __aarch64__ int64_t t; asm volatile ( "mrs %0, cntvct_el0" : "=r" (t) ); return t;