diff options
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/ppc_asm.h | 4 | ||||
-rw-r--r-- | arch/powerpc/include/asm/reg.h | 15 | ||||
-rw-r--r-- | arch/powerpc/include/asm/timex.h | 4 |
3 files changed, 14 insertions, 9 deletions
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index 8fdd3da134e0..599545738af3 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h | |||
@@ -433,13 +433,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_601) | |||
433 | 433 | ||
434 | #if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E) | 434 | #if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E) |
435 | #define MFTB(dest) \ | 435 | #define MFTB(dest) \ |
436 | 90: mftb dest; \ | 436 | 90: mfspr dest, SPRN_TBRL; \ |
437 | BEGIN_FTR_SECTION_NESTED(96); \ | 437 | BEGIN_FTR_SECTION_NESTED(96); \ |
438 | cmpwi dest,0; \ | 438 | cmpwi dest,0; \ |
439 | beq- 90b; \ | 439 | beq- 90b; \ |
440 | END_FTR_SECTION_NESTED(CPU_FTR_CELL_TB_BUG, CPU_FTR_CELL_TB_BUG, 96) | 440 | END_FTR_SECTION_NESTED(CPU_FTR_CELL_TB_BUG, CPU_FTR_CELL_TB_BUG, 96) |
441 | #else | 441 | #else |
442 | #define MFTB(dest) mftb dest | 442 | #define MFTB(dest) mfspr dest, SPRN_TBRL |
443 | #endif | 443 | #endif |
444 | 444 | ||
445 | #ifndef CONFIG_SMP | 445 | #ifndef CONFIG_SMP |
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h index 55b03079d197..64264bf601f5 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h | |||
@@ -1120,7 +1120,7 @@ | |||
1120 | #if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E) | 1120 | #if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E) |
1121 | #define mftb() ({unsigned long rval; \ | 1121 | #define mftb() ({unsigned long rval; \ |
1122 | asm volatile( \ | 1122 | asm volatile( \ |
1123 | "90: mftb %0;\n" \ | 1123 | "90: mfspr %0, %2;\n" \ |
1124 | "97: cmpwi %0,0;\n" \ | 1124 | "97: cmpwi %0,0;\n" \ |
1125 | " beq- 90b;\n" \ | 1125 | " beq- 90b;\n" \ |
1126 | "99:\n" \ | 1126 | "99:\n" \ |
@@ -1134,18 +1134,23 @@ | |||
1134 | " .llong 0\n" \ | 1134 | " .llong 0\n" \ |
1135 | " .llong 0\n" \ | 1135 | " .llong 0\n" \ |
1136 | ".previous" \ | 1136 | ".previous" \ |
1137 | : "=r" (rval) : "i" (CPU_FTR_CELL_TB_BUG)); rval;}) | 1137 | : "=r" (rval) \ |
1138 | : "i" (CPU_FTR_CELL_TB_BUG), "i" (SPRN_TBRL)); \ | ||
1139 | rval;}) | ||
1138 | #else | 1140 | #else |
1139 | #define mftb() ({unsigned long rval; \ | 1141 | #define mftb() ({unsigned long rval; \ |
1140 | asm volatile("mftb %0" : "=r" (rval)); rval;}) | 1142 | asm volatile("mfspr %0, %1" : \ |
1143 | "=r" (rval) : "i" (SPRN_TBRL)); rval;}) | ||
1141 | #endif /* !CONFIG_PPC_CELL */ | 1144 | #endif /* !CONFIG_PPC_CELL */ |
1142 | 1145 | ||
1143 | #else /* __powerpc64__ */ | 1146 | #else /* __powerpc64__ */ |
1144 | 1147 | ||
1145 | #define mftbl() ({unsigned long rval; \ | 1148 | #define mftbl() ({unsigned long rval; \ |
1146 | asm volatile("mftbl %0" : "=r" (rval)); rval;}) | 1149 | asm volatile("mfspr %0, %1" : "=r" (rval) : \ |
1150 | "i" (SPRN_TBRL)); rval;}) | ||
1147 | #define mftbu() ({unsigned long rval; \ | 1151 | #define mftbu() ({unsigned long rval; \ |
1148 | asm volatile("mftbu %0" : "=r" (rval)); rval;}) | 1152 | asm volatile("mfspr %0, %1" : "=r" (rval) : \ |
1153 | "i" (SPRN_TBRU)); rval;}) | ||
1149 | #endif /* !__powerpc64__ */ | 1154 | #endif /* !__powerpc64__ */ |
1150 | 1155 | ||
1151 | #define mttbl(v) asm volatile("mttbl %0":: "r"(v)) | 1156 | #define mttbl(v) asm volatile("mttbl %0":: "r"(v)) |
diff --git a/arch/powerpc/include/asm/timex.h b/arch/powerpc/include/asm/timex.h index c55e14f7ef44..18908caa1f3b 100644 --- a/arch/powerpc/include/asm/timex.h +++ b/arch/powerpc/include/asm/timex.h | |||
@@ -29,7 +29,7 @@ static inline cycles_t get_cycles(void) | |||
29 | ret = 0; | 29 | ret = 0; |
30 | 30 | ||
31 | __asm__ __volatile__( | 31 | __asm__ __volatile__( |
32 | "97: mftb %0\n" | 32 | "97: mfspr %0, %2\n" |
33 | "99:\n" | 33 | "99:\n" |
34 | ".section __ftr_fixup,\"a\"\n" | 34 | ".section __ftr_fixup,\"a\"\n" |
35 | ".align 2\n" | 35 | ".align 2\n" |
@@ -41,7 +41,7 @@ static inline cycles_t get_cycles(void) | |||
41 | " .long 0\n" | 41 | " .long 0\n" |
42 | " .long 0\n" | 42 | " .long 0\n" |
43 | ".previous" | 43 | ".previous" |
44 | : "=r" (ret) : "i" (CPU_FTR_601)); | 44 | : "=r" (ret) : "i" (CPU_FTR_601), "i" (SPRN_TBRL)); |
45 | return ret; | 45 | return ret; |
46 | #endif | 46 | #endif |
47 | } | 47 | } |