X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/0a7de7458d150b5d4dffc935ba399be265ef0a1a..a991bd8d3e7fe02dbca0644054bab73c5b75324a:/libsyscall/wrappers/mach_continuous_time.c diff --git a/libsyscall/wrappers/mach_continuous_time.c b/libsyscall/wrappers/mach_continuous_time.c index 353ef0d87..e07aba3bf 100644 --- a/libsyscall/wrappers/mach_continuous_time.c +++ b/libsyscall/wrappers/mach_continuous_time.c @@ -59,11 +59,12 @@ kern_return_t _mach_continuous_hwclock(uint64_t *cont_time __unused) { #if defined(__arm64__) +#define ISB_SY 0xf uint8_t cont_hwclock = *((uint8_t*)_COMM_PAGE_CONT_HWCLOCK); - uint64_t timebase; if (cont_hwclock) { - __asm__ volatile ("isb\n" "mrs %0, CNTPCT_EL0" : "=r"(timebase)); - *cont_time = timebase; + volatile uint64_t *base_ptr = (volatile uint64_t*)_COMM_PAGE_CONT_HW_TIMEBASE; + __builtin_arm_isb(ISB_SY); + *cont_time = __builtin_arm_rsr64("CNTVCT_EL0") + *base_ptr; return KERN_SUCCESS; } #endif