aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-22 16:15:45 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:13:57 -0800
commitfc504928677049f0ad3f1fd4e0bb3908172df8f3 (patch)
treef55fc6a9061b0eac3f0465df412286caf83b3fbd /arch
parent[SPARC64]: Create a seperate kernel TSB for 4MB/256MB mappings. (diff)
downloadlinux-dev-fc504928677049f0ad3f1fd4e0bb3908172df8f3.tar.xz
linux-dev-fc504928677049f0ad3f1fd4e0bb3908172df8f3.zip
[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')
-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:
mov %g6, %l1
wrpr %g0, 0x0, %tl
- wrpr %g0, RTRAP_PSTATE, %pstate
661: nop
.section .sun4v_1insn_patch, "ax"
@@ -341,6 +340,8 @@ user_rtt_fill_fixup:
SET_GL(0)
.previous
+ wrpr %g0, RTRAP_PSTATE, %pstate
+
mov %l1, %g6
ldx [%g6 + TI_TASK], %g4
LOAD_PER_CPU_BASE(%g5, %g6, %g1, %g2, %g3)