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 15typedef unsigned long cycles_t; 16 17static 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#ifdef CONFIG_8xx 33 "97: mftb %0\n" 34#else 35 "97: mfspr %0, %2\n" 36#endif 37 "99:\n" 38 ".section __ftr_fixup,\"a\"\n" 39 ".align 2\n" 40 "98:\n" 41 " .long %1\n" 42 " .long 0\n" 43 " .long 97b-98b\n" 44 " .long 99b-98b\n" 45 " .long 0\n" 46 " .long 0\n" 47 ".previous" 48#ifdef CONFIG_8xx 49 : "=r" (ret) : "i" (CPU_FTR_601)); 50#else 51 : "=r" (ret) : "i" (CPU_FTR_601), "i" (SPRN_TBRL)); 52#endif 53 return ret; 54#endif 55} 56 57#endif /* __KERNEL__ */ 58#endif /* _ASM_POWERPC_TIMEX_H */ 59