diff options
-rw-r--r-- | arch/sparc/include/asm/backoff.h | 5 | ||||
-rw-r--r-- | arch/sparc/include/asm/processor_64.h | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/sparc/include/asm/backoff.h b/arch/sparc/include/asm/backoff.h index db3af0d30fb1..64b077b3b13b 100644 --- a/arch/sparc/include/asm/backoff.h +++ b/arch/sparc/include/asm/backoff.h | |||
@@ -13,7 +13,10 @@ | |||
13 | 13 | ||
14 | #define BACKOFF_SPIN(reg, tmp, label) \ | 14 | #define BACKOFF_SPIN(reg, tmp, label) \ |
15 | mov reg, tmp; \ | 15 | mov reg, tmp; \ |
16 | 88: brnz,pt tmp, 88b; \ | 16 | 88: rd %ccr, %g0; \ |
17 | rd %ccr, %g0; \ | ||
18 | rd %ccr, %g0; \ | ||
19 | brnz,pt tmp, 88b; \ | ||
17 | sub tmp, 1, tmp; \ | 20 | sub tmp, 1, tmp; \ |
18 | set BACKOFF_LIMIT, tmp; \ | 21 | set BACKOFF_LIMIT, tmp; \ |
19 | cmp reg, tmp; \ | 22 | cmp reg, tmp; \ |
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h index 4e5a483122a0..986563409469 100644 --- a/arch/sparc/include/asm/processor_64.h +++ b/arch/sparc/include/asm/processor_64.h | |||
@@ -196,7 +196,10 @@ extern unsigned long get_wchan(struct task_struct *task); | |||
196 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) | 196 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) |
197 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->u_regs[UREG_FP]) | 197 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->u_regs[UREG_FP]) |
198 | 198 | ||
199 | #define cpu_relax() barrier() | 199 | #define cpu_relax() asm volatile("rd %%ccr, %%g0\n\t" \ |
200 | "rd %%ccr, %%g0\n\t" \ | ||
201 | "rd %%ccr, %%g0" \ | ||
202 | ::: "memory") | ||
200 | 203 | ||
201 | /* Prefetch support. This is tuned for UltraSPARC-III and later. | 204 | /* Prefetch support. This is tuned for UltraSPARC-III and later. |
202 | * UltraSPARC-I will treat these as nops, and UltraSPARC-II has | 205 | * UltraSPARC-I will treat these as nops, and UltraSPARC-II has |