Remove PowerPC specific time reading function
authorYannick Brosseau <yannick.brosseau@gmail.com>
Thu, 10 Feb 2011 15:51:41 +0000 (10:51 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Thu, 10 Feb 2011 15:58:00 +0000 (10:58 -0500)
The PPC version of the trace_clock_read64 was using the TB register
which is not constant accross implementations. The currently
measured time base on PPC was not accurate.
So, for now, we rely on the CLOCK_MONOTONIC.

This patch remove a bunch of #ifdef for x86 and PPC, since we now rely on
the same base clock. It also fix the build on PPC that was currently broken

Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/ust/clock.h

index 04785fc34e7bf1154fa725129db3a0af20ba5668..5e558f8e767a44c21d34e9d90161e504fe7540b3 100644 (file)
@@ -39,7 +39,6 @@
    precision and monotonicity.
 */
 
-#if __i386__ || __x86_64__
 /* Only available for x86 arch */
 #define CLOCK_TRACE_FREQ  14
 #define CLOCK_TRACE  15
@@ -47,36 +46,10 @@ union lttng_timespec {
        struct timespec ts;
        u64 lttng_ts;
 };
-#endif /* __i386__ || __x86_64__ */
 
 extern int ust_clock_source;
 
 /* Choosing correct trace clock */
-#if __PPC__
-static __inline__ u64 trace_clock_read64(void)
-{
-       unsigned long tb_l;
-       unsigned long tb_h;
-       unsigned long tb_h2;
-       u64 tb;
-
-       __asm__ (
-               "1:\n\t"
-               "mftbu %[rhigh]\n\t"
-               "mftb %[rlow]\n\t"
-               "mftbu %[rhigh2]\n\t"
-               "cmpw %[rhigh],%[rhigh2]\n\t"
-               "bne 1b\n\t"
-               : [rhigh] "=r" (tb_h), [rhigh2] "=r" (tb_h2), [rlow] "=r" (tb_l));
-
-       tb = tb_h;
-       tb <<= 32;
-       tb |= tb_l;
-
-       return tb;
-}
-
-#else  /* !__PPC__ */
 
 static __inline__ u64 trace_clock_read64(void)
 {
@@ -101,17 +74,18 @@ static __inline__ u64 trace_clock_read64(void)
        return retval;
 }
 
-#endif /* __PPC__ */
 
 static __inline__ u64 trace_clock_frequency(void)
 {
        struct timespec ts;
        union lttng_timespec *lts = (union lttng_timespec *) &ts;
 
+#if __i386__ || __x86_64__
        if (likely(ust_clock_source == CLOCK_TRACE)) {
                clock_gettime(CLOCK_TRACE_FREQ, &ts);
                return lts->lttng_ts;
        }
+#endif
        return 1000000000LL;
 }
 
This page took 0.024523 seconds and 4 git commands to generate.