implement monotonic for aarch64

This commit is contained in:
Ivan Tan
2025-05-13 15:30:45 +08:00
parent 407c0c1403
commit f5aeb0b43a
+8 -1
View File
@@ -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
}