clock: add k_cycle_get_64
This change adds `k_cycle_get_64()` on platforms that
support a 64-bit cycle counter.
The interface functions `arch_k_cycle_get_64()` and
`sys_clock_cycle_get_64()` are also introduced.
Fixes #39934
Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
diff --git a/drivers/timer/esp32c3_sys_timer.c b/drivers/timer/esp32c3_sys_timer.c
index ebeeb9c..bfa16b2 100644
--- a/drivers/timer/esp32c3_sys_timer.c
+++ b/drivers/timer/esp32c3_sys_timer.c
@@ -134,3 +134,15 @@
{
return systimer_ll_get_counter_value_low(SYSTIMER_COUNTER_1);
}
+
+uint64_t sys_clock_cycle_get_64(void)
+{
+ k_spinlock_key_t key = k_spin_lock(&lock);
+ uint64_t ret = systimer_ll_get_counter_value_low(SYSTIMER_COUNTER_1);
+
+ ret |= (uint64_t)systimer_ll_get_counter_value_high(SYSTIMER_COUNTER_1) << 32;
+
+ k_spin_unlock(&lock, key);
+
+ return ret;
+}