diff --git src/mpid/ch3/channels/common/include/mv2_clock.h src/mpid/ch3/channels/common/include/mv2_clock.h index ac117c2..335d07f 100644 --- src/mpid/ch3/channels/common/include/mv2_clock.h +++ src/mpid/ch3/channels/common/include/mv2_clock.h @@ -81,7 +81,24 @@ static inline cycles_t get_cycles() asm volatile ("mov %0=ar.itc" : "=r" (ret)); return ret; } +#elif defined(__ARM_ARCH_7A__) +typedef unsigned long long cycles_t; +static inline cycles_t get_cycles(void) +{ + cycles_t clk; + asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (clk)); + return clk; +} +#elif defined(__aarch64__) +typedef unsigned long cycles_t; +static inline cycles_t get_cycles() +{ + cycles_t cval; + asm volatile("isb" : : : "memory"); + asm volatile("mrs %0, cntvct_el0" : "=r" (cval)); + return cval; +} #elif defined(__s390__) || defined(__s390x__) typedef unsigned long cycles_t; static inline cycles_t get_cycles()