PERFORCE change 137020 for review

Randall R. Stewart rrs at FreeBSD.org
Thu Mar 6 19:51:15 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=137020

Change 137020 by rrs at rrs-mips2-jnpr on 2008/03/06 19:50:45

	Don't blast 0 in carefully disable ints and preserve
	       the rest of the SR.

Affected files ...

.. //depot/projects/mips2-jnpr/src/sys/mips/mips/swtch.S#16 edit

Differences ...

==== //depot/projects/mips2-jnpr/src/sys/mips/mips/swtch.S#16 (text+ko) ====

@@ -172,20 +172,23 @@
 	lw	a1, PC_CURPCB(a1)
 1:
 
-	.set	noat
-	li	v0, SR_EXL
+	mfc0	v0, COP_0_STATUS_REG	# set exeption level bit.
+	or	v0, SR_EXL
+	and     v0, ~(SR_INT_ENAB)
 	mtc0	v0, COP_0_STATUS_REG	# set exeption level bit.
 	nop
 	nop
 	nop
 	nop
-	RESTORE_U_PCB_REG(t0, MULLO, a1)
-	RESTORE_U_PCB_REG(t1, MULHI, a1)
+	.set	noat
+	move	k1, a1	
+	RESTORE_U_PCB_REG(t0, MULLO, k1)
+	RESTORE_U_PCB_REG(t1, MULHI, k1)
 	mtlo	t0
 	mthi	t1
-	RESTORE_U_PCB_REG(a0, PC, a1)
-	RESTORE_U_PCB_REG(AT, AST, a1)
-	RESTORE_U_PCB_REG(v0, V0, a1)
+	RESTORE_U_PCB_REG(a0, PC, k1)
+	RESTORE_U_PCB_REG(AT, AST, k1)
+	RESTORE_U_PCB_REG(v0, V0, k1)
 	_MTC0	a0, COP_0_EXC_PC	# set return address
 
 /*
@@ -193,7 +196,6 @@
  * after interrupts are disabled.  Otherwise it will get overwritten
  * by the interrupt code.
  */
-	move	k1, a1
 	RESTORE_U_PCB_REG(v1, V1, k1)
 	RESTORE_U_PCB_REG(a0, A0, k1)
 	RESTORE_U_PCB_REG(a1, A1, k1)
@@ -267,8 +269,7 @@
 	mfc0	t0, COP_0_STATUS_REG		# t0 = saved status register
 	nop
 	nop
-	
-	and	a3, t0, SR_KX
+	and     a3, t0, ~(SR_INT_ENAB)
 	mtc0	a3, COP_0_STATUS_REG		# Disable all interrupts
 	ITLBNOPFIX
 	j	mips_sw1			# We're not interested in old 
@@ -287,7 +288,7 @@
 	mfc0	t0, COP_0_STATUS_REG		# t0 = saved status register
 	nop
 	nop
-	and	a3, t0, SR_KX
+	and     a3, t0, ~(SR_INT_ENAB)	
 	mtc0	a3, COP_0_STATUS_REG		# Disable all interrupts
 	ITLBNOPFIX
 	beqz	a0, mips_sw1


More information about the p4-projects mailing list