From f5aeb0b43a05c8173dcd9f56e8264c453ee2b90c Mon Sep 17 00:00:00 2001 From: Ivan Tan Date: Tue, 13 May 2025 15:30:45 +0800 Subject: [PATCH] implement monotonic for aarch64 --- src/arch/aarch64/time.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/arch/aarch64/time.rs b/src/arch/aarch64/time.rs index 8bf457db66..54e2354b9f 100644 --- a/src/arch/aarch64/time.rs +++ b/src/arch/aarch64/time.rs @@ -1,4 +1,11 @@ +use crate::time::NANOS_PER_SEC; + pub fn monotonic_absolute() -> u128 { //TODO: aarch64 generic timer counter - *crate::time::OFFSET.lock() + let ticks: usize; + unsafe { core::arch::asm!("mrs {}, cntpct_el0", out(reg) ticks) }; + let freq: usize; + unsafe { core::arch::asm!("mrs {}, cntfrq_el0", out(reg) freq) }; + + ticks as u128 * NANOS_PER_SEC / freq as u128 }