1 #ifndef _ASM_POWERPC_TIMEX_H 2 #define _ASM_POWERPC_TIMEX_H 3 4 #ifdef __KERNEL__ 5 6 /* 7 * PowerPC architecture timex specifications 8 */ 9 10 #include <asm/cputable.h> 11 #include <asm/reg.h> 12 13 #define CLOCK_TICK_RATE 1024000 /* Underlying HZ */ 14 15 typedef unsigned long cycles_t; 16 17 static inline cycles_t get_cycles(void) 18 { 19 #ifdef __powerpc64__ 20 return mftb(); 21 #else 22 cycles_t ret; 23 24 /* 25 * For the "cycle" counter we use the timebase lower half. 26 * Currently only used on SMP. 27 */ 28 29 ret = 0; 30 31 __asm__ __volatile__( 32 "97: mfspr %0, %2\n" 33 "99:\n" 34 ".section __ftr_fixup,\"a\"\n" 35 ".align 2\n" 36 "98:\n" 37 " .long %1\n" 38 " .long 0\n" 39 " .long 97b-98b\n" 40 " .long 99b-98b\n" 41 " .long 0\n" 42 " .long 0\n" 43 ".previous" 44 : "=r" (ret) : "i" (CPU_FTR_601), "i" (SPRN_TBRL)); 45 return ret; 46 #endif 47 } 48 49 #endif /* __KERNEL__ */ 50 #endif /* _ASM_POWERPC_TIMEX_H */ 51