summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/cycles.h
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2012-01-14 23:32:03 +0000
committerCarl Hetherington <carl@carlh.net>2012-01-14 23:32:03 +0000
commit381346ba5f732519c89dc51b03d84ad6decfe6f2 (patch)
tree1aff1885ff6d4fe67b29b332f8df2de896e3fc87 /libs/ardour/ardour/cycles.h
parent36ec03358fd3f124217416f3db67f9f1aba72aa9 (diff)
Try to fix previous commit on 32-bit.
git-svn-id: svn://localhost/ardour2/branches/3.0@11248 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/cycles.h')
-rw-r--r--libs/ardour/ardour/cycles.h16
1 files changed, 16 insertions, 0 deletions
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