arm part from: https://github.com/facebook/rocksdb/issues/8609#issuecomment-1009572506 --- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h @@ -58,9 +58,6 @@ #include #include #include -#if defined(__powerpc__) -#include -#endif #if 0 static inline float toku_tdiff (struct timeval *a, struct timeval *b) { @@ -131,8 +128,12 @@ uint64_t result; __asm __volatile__("mrs %[rt], cntvct_el0" : [ rt ] "=r"(result)); return result; +#elif defined(__arm__) + uint32_t lo, hi; + __asm __volatile__("mrrc p15, 1, %[lo], %[hi], c14" : [ lo ] "=r" (lo), [hi] "=r" (hi)); + return (uint64_t)hi << 32 | lo; #elif defined(__powerpc__) - return __ppc_get_timebase(); + return __builtin_ppc_get_timebase(); #elif defined(__s390x__) uint64_t result; asm volatile("stckf %0" : "=Q"(result) : : "cc");