diff --git a/Source/ThirdParty/tracy/client/TracyProfiler.hpp b/Source/ThirdParty/tracy/client/TracyProfiler.hpp index 8892fb14f..b303a4503 100644 --- a/Source/ThirdParty/tracy/client/TracyProfiler.hpp +++ b/Source/ThirdParty/tracy/client/TracyProfiler.hpp @@ -177,6 +177,8 @@ public: # elif defined _WIN32 # ifdef TRACY_TIMER_QPC return GetTimeQpc(); +# elif defined(_M_ARM64) + if( HardwareSupportsInvariantTSC() ) return int64_t( _ReadStatusReg(ARM64_PMCCNTR_EL0) ); # else if( HardwareSupportsInvariantTSC() ) return int64_t( __rdtsc() ); # endif diff --git a/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp b/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp index 711505d21..e94957552 100644 --- a/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp +++ b/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp @@ -781,7 +781,9 @@ rpmalloc_set_main_thread(void) { static void _rpmalloc_spin(void) { -#if defined(_MSC_VER) +#if defined(_MSC_VER) && defined(_M_ARM64) + __isb(_ARM64_BARRIER_SY); +#elif defined(_MSC_VER) _mm_pause(); #elif defined(__x86_64__) || defined(__i386__) __asm__ volatile("pause" ::: "memory");