diff --git a/libs/ardour/ardour/cycles.h b/libs/ardour/ardour/cycles.h index a0249f8665..01e1d55221 100644 --- a/libs/ardour/ardour/cycles.h +++ b/libs/ardour/ardour/cycles.h @@ -43,6 +43,8 @@ typedef uint64_t cycles_t; extern cycles_t cacheflush_time; +#if defined(__x86_64__) + #define rdtscll(lo, hi) \ __asm__ __volatile__("rdtsc" : "=a" (lo), "=d" (hi)) @@ -54,6 +56,20 @@ static inline cycles_t get_cycles (void) return lo; } +#else + +#define rdtscll(val) \ +__asm__ __volatile__("rdtsc" : "=A" (val)) + +static inline cycles_t get_cycles (void) +{ + cycles_t ret; + + rdtscll(ret); + return ret & 0xffffffff; +} +#endif + #elif defined(__powerpc__) #define CPU_FTR_601 0x00000100