| .. | .. |
|---|
| 17 | 17 | |
|---|
| 18 | 18 | static inline cycles_t get_cycles(void) |
|---|
| 19 | 19 | { |
|---|
| 20 | | -#ifdef __powerpc64__ |
|---|
| 21 | 20 | return mftb(); |
|---|
| 22 | | -#else |
|---|
| 23 | | - cycles_t ret; |
|---|
| 24 | | - |
|---|
| 25 | | - /* |
|---|
| 26 | | - * For the "cycle" counter we use the timebase lower half. |
|---|
| 27 | | - * Currently only used on SMP. |
|---|
| 28 | | - */ |
|---|
| 29 | | - |
|---|
| 30 | | - ret = 0; |
|---|
| 31 | | - |
|---|
| 32 | | - __asm__ __volatile__( |
|---|
| 33 | | -#ifdef CONFIG_PPC_8xx |
|---|
| 34 | | - "97: mftb %0\n" |
|---|
| 35 | | -#else |
|---|
| 36 | | - "97: mfspr %0, %2\n" |
|---|
| 37 | | -#endif |
|---|
| 38 | | - "99:\n" |
|---|
| 39 | | - ".section __ftr_fixup,\"a\"\n" |
|---|
| 40 | | - ".align 2\n" |
|---|
| 41 | | - "98:\n" |
|---|
| 42 | | - " .long %1\n" |
|---|
| 43 | | - " .long 0\n" |
|---|
| 44 | | - " .long 97b-98b\n" |
|---|
| 45 | | - " .long 99b-98b\n" |
|---|
| 46 | | - " .long 0\n" |
|---|
| 47 | | - " .long 0\n" |
|---|
| 48 | | - ".previous" |
|---|
| 49 | | - : "=r" (ret) : "i" (CPU_FTR_601), "i" (SPRN_TBRL)); |
|---|
| 50 | | - return ret; |
|---|
| 51 | | -#endif |
|---|
| 52 | 21 | } |
|---|
| 22 | +#define get_cycles get_cycles |
|---|
| 53 | 23 | |
|---|
| 54 | 24 | #endif /* __KERNEL__ */ |
|---|
| 55 | 25 | #endif /* _ASM_POWERPC_TIMEX_H */ |
|---|