aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r--arch/powerpc/include/asm/ppc_asm.h4
-rw-r--r--arch/powerpc/include/asm/reg.h15
-rw-r--r--arch/powerpc/include/asm/timex.h4
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) \
43690: mftb dest; \ 43690: mfspr dest, SPRN_TBRL; \
437BEGIN_FTR_SECTION_NESTED(96); \ 437BEGIN_FTR_SECTION_NESTED(96); \
438 cmpwi dest,0; \ 438 cmpwi dest,0; \
439 beq- 90b; \ 439 beq- 90b; \
440END_FTR_SECTION_NESTED(CPU_FTR_CELL_TB_BUG, CPU_FTR_CELL_TB_BUG, 96) 440END_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}