k1om: aliasing rdtscp with rdtsc
authorReto Achermann <reto.achermann@inf.ethz.ch>
Thu, 18 Jun 2015 16:00:04 +0000 (18:00 +0200)
committerReto Achermann <reto.achermann@inf.ethz.ch>
Fri, 19 Jun 2015 10:09:30 +0000 (12:09 +0200)
on the Xeon Phi rdtscp instructions are not available. using rdtsc instead.

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>

include/arch/x86/barrelfish_kpi/asm_inlines_arch.h

index 9607f1b..f0475db 100644 (file)
@@ -25,6 +25,7 @@ static inline uint64_t rdtsc(void)
     return ((uint64_t)edx << 32) | eax;
 }
 
+#ifndef __k1om__
 /** \brief This code reads the cycle counter -- flushing the
     instruction pipeline first. Throws away the processor ID information. */
 static inline uint64_t rdtscp(void)
@@ -33,6 +34,13 @@ static inline uint64_t rdtscp(void)
     __asm volatile ("rdtscp" : "=a" (eax), "=d" (edx) :: "ecx");
     return ((uint64_t)edx << 32) | eax;
 }
+#else
+static inline uint64_t rdtscp(void)
+{
+    /* K1OM does not support rdtscp */
+    return rdtsc();
+}
+#endif
 
 static inline uint64_t rdpmc(uint32_t counter)
 {