static uint64_t rtc_nanotime_read(void) { rtc_nanotime_t rnt, *rntp = &rtc_nanotime_info; uint64_t result; do { rtc_nanotime_load(rntp, &rnt); result = rnt.ns_base + _tsc_to_nanoseconds(rdtsc64() - rnt.tsc_base); } while (rntp->tsc_base != rnt.tsc_base); return (result); }