aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-06 00:59:03 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:11:49 -0500
commit314981ac7177a933319e3c071a5cf0a579205e6e (patch)
tree11895da391ba91195d6d7a67debaa32a28c1215e
parent936f482af1743141d637483ec10eb881537c26dc (diff)
[SPARC64]: Kill all %pstate changes in context switch code.
They are totally unnecessary because: 1) Interrupts are already disabled when switch_to() runs. 2) We don't use hard-coded alternate globals any longer. This found a case in rtrap, which still assumed alternate global %g6 was current_thread_info(), and that is fixed by this changeset as well. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc64/kernel/rtrap.S5
-rw-r--r--include/asm-sparc64/system.h5
2 files changed, 4 insertions, 6 deletions
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S
index e6130956307f..a2fa277da62b 100644
--- a/arch/sparc64/kernel/rtrap.S
+++ b/arch/sparc64/kernel/rtrap.S
@@ -224,7 +224,8 @@ rt_continue: ldx [%sp + PTREGS_OFF + PT_V9_G1], %g1
224 ldx [%sp + PTREGS_OFF + PT_V9_G4], %g4 224 ldx [%sp + PTREGS_OFF + PT_V9_G4], %g4
225 ldx [%sp + PTREGS_OFF + PT_V9_G5], %g5 225 ldx [%sp + PTREGS_OFF + PT_V9_G5], %g5
226 brz,pt %l3, 1f 226 brz,pt %l3, 1f
227 nop 227 mov %g6, %l2
228
228 /* Must do this before thread reg is clobbered below. */ 229 /* Must do this before thread reg is clobbered below. */
229 LOAD_PER_CPU_BASE(%g5, %g6, %i0, %i1, %i2) 230 LOAD_PER_CPU_BASE(%g5, %g6, %i0, %i1, %i2)
2301: 2311:
@@ -238,6 +239,8 @@ rt_continue: ldx [%sp + PTREGS_OFF + PT_V9_G1], %g1
238 SET_GL(1) 239 SET_GL(1)
239 .previous 240 .previous
240 241
242 mov %l2, %g6
243
241 ldx [%sp + PTREGS_OFF + PT_V9_I0], %i0 244 ldx [%sp + PTREGS_OFF + PT_V9_I0], %i0
242 ldx [%sp + PTREGS_OFF + PT_V9_I1], %i1 245 ldx [%sp + PTREGS_OFF + PT_V9_I1], %i1
243 246
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h
index 26c0807af3e4..a18ec87a52c1 100644
--- a/include/asm-sparc64/system.h
+++ b/include/asm-sparc64/system.h
@@ -213,7 +213,6 @@ do { if (test_thread_flag(TIF_PERFCTR)) { \
213 task_thread_info(next); \ 213 task_thread_info(next); \
214 __asm__ __volatile__( \ 214 __asm__ __volatile__( \
215 "mov %%g4, %%g7\n\t" \ 215 "mov %%g4, %%g7\n\t" \
216 "wrpr %%g0, 0x95, %%pstate\n\t" \
217 "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \ 216 "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \
218 "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \ 217 "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \
219 "rdpr %%wstate, %%o5\n\t" \ 218 "rdpr %%wstate, %%o5\n\t" \
@@ -227,14 +226,10 @@ do { if (test_thread_flag(TIF_PERFCTR)) { \
227 "ldx [%%g6 + %3], %%o6\n\t" \ 226 "ldx [%%g6 + %3], %%o6\n\t" \
228 "ldub [%%g6 + %2], %%o5\n\t" \ 227 "ldub [%%g6 + %2], %%o5\n\t" \
229 "ldub [%%g6 + %4], %%o7\n\t" \ 228 "ldub [%%g6 + %4], %%o7\n\t" \
230 "mov %%g6, %%l2\n\t" \
231 "wrpr %%o5, 0x0, %%wstate\n\t" \ 229 "wrpr %%o5, 0x0, %%wstate\n\t" \
232 "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \ 230 "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \
233 "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \ 231 "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \
234 "wrpr %%g0, 0x94, %%pstate\n\t" \
235 "mov %%l2, %%g6\n\t" \
236 "ldx [%%g6 + %6], %%g4\n\t" \ 232 "ldx [%%g6 + %6], %%g4\n\t" \
237 "wrpr %%g0, 0x96, %%pstate\n\t" \
238 "brz,pt %%o7, 1f\n\t" \ 233 "brz,pt %%o7, 1f\n\t" \
239 " mov %%g7, %0\n\t" \ 234 " mov %%g7, %0\n\t" \
240 "b,a ret_from_syscall\n\t" \ 235 "b,a ret_from_syscall\n\t" \