48 lines
		
	
	
	
		
			776 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			776 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_POWERPC_TIMEX_H
 | |
| #define _ASM_POWERPC_TIMEX_H
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| /*
 | |
|  * PowerPC architecture timex specifications
 | |
|  */
 | |
| 
 | |
| #include <asm/cputable.h>
 | |
| 
 | |
| #define CLOCK_TICK_RATE	1024000 /* Underlying HZ */
 | |
| 
 | |
| typedef unsigned long cycles_t;
 | |
| 
 | |
| static inline cycles_t get_cycles(void)
 | |
| {
 | |
| 	cycles_t ret;
 | |
| 
 | |
| #ifdef __powerpc64__
 | |
| 
 | |
| 	__asm__ __volatile__("mftb %0" : "=r" (ret) : );
 | |
| 
 | |
| #else
 | |
| 	/*
 | |
| 	 * For the "cycle" counter we use the timebase lower half.
 | |
| 	 * Currently only used on SMP.
 | |
| 	 */
 | |
| 
 | |
| 	ret = 0;
 | |
| 
 | |
| 	__asm__ __volatile__(
 | |
| 		"98:	mftb %0\n"
 | |
| 		"99:\n"
 | |
| 		".section __ftr_fixup,\"a\"\n"
 | |
| 		"	.long %1\n"
 | |
| 		"	.long 0\n"
 | |
| 		"	.long 98b\n"
 | |
| 		"	.long 99b\n"
 | |
| 		".previous"
 | |
| 		: "=r" (ret) : "i" (CPU_FTR_601));
 | |
| #endif
 | |
| 
 | |
| 	return ret;
 | |
| }
 | |
| 
 | |
| #endif	/* __KERNEL__ */
 | |
| #endif	/* _ASM_POWERPC_TIMEX_H */
 | 
