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 }