patch-2.3.39 linux/arch/ppc/kernel/entry.S

Next file: linux/arch/ppc/kernel/gemini_pci.c
Previous file: linux/arch/ppc/kernel/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.38/linux/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
@@ -291,11 +291,13 @@
 ret_from_syscall:
 	.globl	ret_from_except
 ret_from_except:
-0:	mfmsr	r30		/* Disable interrupts */
-	rlwinm	r30,r30,0,17,15	/* clear MSR_EE */
-	SYNC			/* Some chip revs need this... */
-	mtmsr	r30
-	SYNC
+0:	/* disable interrupts */	
+	lis	r30,int_control@h
+	ori	r30,r30,int_control@l
+	lwz	r30,0(r30)
+	mtlr	r30
+	blrl
+	
 	lwz	r5,_MSR(r1)
 	andi.	r5,r5,MSR_EE
 	beq	2f
@@ -317,9 +319,13 @@
 	bl	do_bottom_half
 	.globl	do_bottom_half_ret
 do_bottom_half_ret:
-2:	SYNC
-	mtmsr	r30		/* disable interrupts again */
-	SYNC
+2:	/* disable interrupts */	
+	lis	r30,int_control@h
+	ori	r30,r30,int_control@l
+	lwz	r30,0(r30)
+	mtlr	r30
+	blrl
+	
 	lwz	r3,_MSR(r1)	/* Returning to user mode? */
 	andi.	r3,r3,MSR_PR
 	beq+	10f		/* if so, check need_resched and signals */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)