Browse Source

[SPARC64]: Fix return from trap on SUN4V.

We need to set the global register set _AND_ disable
PSTATE_IE in %pstate.  The original patch sequence was
leaving PSTATE_IE enabled when returning to kernel mode,
oops.

This fixes the random register corruption being seen
on SUN4V.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 19 years ago
parent
commit
af02bec662
1 changed files with 3 additions and 1 deletions
  1. 3 1
      arch/sparc64/kernel/rtrap.S

+ 3 - 1
arch/sparc64/kernel/rtrap.S

@@ -234,8 +234,10 @@ rt_continue:	ldx			[%sp + PTREGS_OFF + PT_V9_G1], %g1
 
 
 		/* Normal globals are restored, go to trap globals.  */
 		/* Normal globals are restored, go to trap globals.  */
 661:		wrpr			%g0, RTRAP_PSTATE_AG_IRQOFF, %pstate
 661:		wrpr			%g0, RTRAP_PSTATE_AG_IRQOFF, %pstate
-		.section		.sun4v_1insn_patch, "ax"
+		nop
+		.section		.sun4v_2insn_patch, "ax"
 		.word			661b
 		.word			661b
+		wrpr			%g0, RTRAP_PSTATE_IRQOFF, %pstate
 		SET_GL(1)
 		SET_GL(1)
 		.previous
 		.previous