diff --git a/nx/include/switch.h b/nx/include/switch.h index 9b2c846f..c3779377 100644 --- a/nx/include/switch.h +++ b/nx/include/switch.h @@ -17,6 +17,8 @@ extern "C" { #include "switch/arm/tls.h" #include "switch/arm/cache.h" +#include "switch/arm/atomics.h" +#include "switch/arm/counter.h" #include "switch/kernel/svc.h" #include "switch/kernel/tmem.h" diff --git a/nx/include/switch/arm/counter.h b/nx/include/switch/arm/counter.h new file mode 100644 index 00000000..b54e092a --- /dev/null +++ b/nx/include/switch/arm/counter.h @@ -0,0 +1,18 @@ +/** + * @file counter.h + * @brief AArch64 system counter-timer. + * @author fincs + * @copyright libnx Authors + */ +#pragma once +#include "../types.h" + +/** + * @brief Gets the current system tick. + * @return The current system tick. + */ +static inline u64 armGetSystemTick(void) { + u64 ret; + __asm__ __volatile__ ("mrs %x[data], cntpct_el0" : [data] "=r" (ret)); + return ret; +}