|
@@ -1120,7 +1120,7 @@
|
|
|
#if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E)
|
|
|
#define mftb() ({unsigned long rval; \
|
|
|
asm volatile( \
|
|
|
- "90: mftb %0;\n" \
|
|
|
+ "90: mfspr %0, %2;\n" \
|
|
|
"97: cmpwi %0,0;\n" \
|
|
|
" beq- 90b;\n" \
|
|
|
"99:\n" \
|
|
@@ -1134,18 +1134,23 @@
|
|
|
" .llong 0\n" \
|
|
|
" .llong 0\n" \
|
|
|
".previous" \
|
|
|
- : "=r" (rval) : "i" (CPU_FTR_CELL_TB_BUG)); rval;})
|
|
|
+ : "=r" (rval) \
|
|
|
+ : "i" (CPU_FTR_CELL_TB_BUG), "i" (SPRN_TBRL)); \
|
|
|
+ rval;})
|
|
|
#else
|
|
|
#define mftb() ({unsigned long rval; \
|
|
|
- asm volatile("mftb %0" : "=r" (rval)); rval;})
|
|
|
+ asm volatile("mfspr %0, %1" : \
|
|
|
+ "=r" (rval) : "i" (SPRN_TBRL)); rval;})
|
|
|
#endif /* !CONFIG_PPC_CELL */
|
|
|
|
|
|
#else /* __powerpc64__ */
|
|
|
|
|
|
#define mftbl() ({unsigned long rval; \
|
|
|
- asm volatile("mftbl %0" : "=r" (rval)); rval;})
|
|
|
+ asm volatile("mfspr %0, %1" : "=r" (rval) : \
|
|
|
+ "i" (SPRN_TBRL)); rval;})
|
|
|
#define mftbu() ({unsigned long rval; \
|
|
|
- asm volatile("mftbu %0" : "=r" (rval)); rval;})
|
|
|
+ asm volatile("mfspr %0, %1" : "=r" (rval) : \
|
|
|
+ "i" (SPRN_TBRU)); rval;})
|
|
|
#endif /* !__powerpc64__ */
|
|
|
|
|
|
#define mttbl(v) asm volatile("mttbl %0":: "r"(v))
|