fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-powerpc / timex.h
index c02d15a..92dedde 100644 (file)
@@ -7,8 +7,8 @@
  * PowerPC architecture timex specifications
  */
 
-#include <linux/config.h>
 #include <asm/cputable.h>
+#include <asm/reg.h>
 
 #define CLOCK_TICK_RATE        1024000 /* Underlying HZ */
 
@@ -16,13 +16,11 @@ typedef unsigned long cycles_t;
 
 static inline cycles_t get_cycles(void)
 {
-       cycles_t ret;
-
 #ifdef __powerpc64__
-
-       __asm__ __volatile__("mftb %0" : "=r" (ret) : );
-
+       return mftb();
 #else
+       cycles_t ret;
+
        /*
         * For the "cycle" counter we use the timebase lower half.
         * Currently only used on SMP.
@@ -31,18 +29,19 @@ static inline cycles_t get_cycles(void)
        ret = 0;
 
        __asm__ __volatile__(
-               "98:    mftb %0\n"
+               "97:    mftb %0\n"
                "99:\n"
                ".section __ftr_fixup,\"a\"\n"
+               ".align 2\n"
+               "98:\n"
                "       .long %1\n"
                "       .long 0\n"
-               "       .long 98b\n"
-               "       .long 99b\n"
+               "       .long 97b-98b\n"
+               "       .long 99b-98b\n"
                ".previous"
                : "=r" (ret) : "i" (CPU_FTR_601));
-#endif
-
        return ret;
+#endif
 }
 
 #endif /* __KERNEL__ */