aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/rtrap.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-22 19:15:45 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:13:57 -0500
commitfc504928677049f0ad3f1fd4e0bb3908172df8f3 (patch)
treef55fc6a9061b0eac3f0465df412286caf83b3fbd /arch/sparc64/kernel/rtrap.S
parentd7744a09504d5ae84edc8289a02254e1f2102410 (diff)
[SPARC64]: Drop %gl to 0 before re-enabling PSTATE_IE in rtrap
If we take a window fault, on SUN4V set %gl to zero before we turn PSTATE_IE back on in %pstate. Otherwise if we take an interrupt we'll end up with corrupt register state. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/rtrap.S')
-rw-r--r--arch/sparc64/kernel/rtrap.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S
index 1e724fe172ae..7130e866f935 100644
--- a/arch/sparc64/kernel/rtrap.S
+++ b/arch/sparc64/kernel/rtrap.S
@@ -333,7 +333,6 @@ user_rtt_fill_fixup:
333 333
334 mov %g6, %l1 334 mov %g6, %l1
335 wrpr %g0, 0x0, %tl 335 wrpr %g0, 0x0, %tl
336 wrpr %g0, RTRAP_PSTATE, %pstate
337 336
338661: nop 337661: nop
339 .section .sun4v_1insn_patch, "ax" 338 .section .sun4v_1insn_patch, "ax"
@@ -341,6 +340,8 @@ user_rtt_fill_fixup:
341 SET_GL(0) 340 SET_GL(0)
342 .previous 341 .previous
343 342
343 wrpr %g0, RTRAP_PSTATE, %pstate
344
344 mov %l1, %g6 345 mov %l1, %g6
345 ldx [%g6 + TI_TASK], %g4 346 ldx [%g6 + TI_TASK], %g4
346 LOAD_PER_CPU_BASE(%g5, %g6, %g1, %g2, %g3) 347 LOAD_PER_CPU_BASE(%g5, %g6, %g1, %g2, %g3)