/*** Copyright (C) 2024 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Clocks.aarch64.cpp Date: 2024-01-02 Author: Reece ***/ #include AUKN_SYM AuUInt64 ArmQueryClockCounter() { AuUInt64 uValue {}; #if defined(AURORA_COMPILER_MSVC) uValue = _ReadStatusReg(CNTVCT_EL0); #else asm volatile ("mrs %0, CNTVCT_EL0; isb; " : "=r" (uValue)); #endif return uValue; } AUKN_SYM AuUInt64 ArmQueryClockFrequency() { AuUInt64 uClockFreq {}; #if defined(defined(AURORA_COMPILER_MSVC)) uClockFreq = _ReadStatusReg(CNTFRQ_EL0); #else asm volatile ("mrs %0, CNTFRQ_EL0; isb; " : "=r" (uClockFreq)); #endif return uClockFreq; }