AuroraRuntime/Source/Extensions/Clocks.aarch64.cpp
2024-01-02 05:54:22 +00:00

31 lines
702 B
C++

/***
Copyright (C) 2024 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Clocks.aarch64.cpp
Date: 2024-01-02
Author: Reece
***/
#include <Source/RuntimeInternal.hpp>
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;
}