patch-2.3.39 linux/arch/ppc/kernel/process.c

Next file: linux/arch/ppc/kernel/setup.c
Previous file: linux/arch/ppc/kernel/ppc4xx_pic.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.38/linux/arch/ppc/kernel/process.c linux/arch/ppc/kernel/process.c
@@ -287,6 +287,7 @@
 copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
 	    struct task_struct * p, struct pt_regs * regs)
 {
+	unsigned long msr;
 	struct pt_regs * childregs, *kregs;
 #ifdef __SMP__
 	extern void ret_from_smpfork(void);
@@ -310,7 +311,8 @@
 #else	
 	kregs->nip = (unsigned long)ret_from_syscall;
 #endif	
-	kregs->msr = MSR_KERNEL;
+	asm volatile("mfmsr %0" : "=r" (msr):);
+	kregs->msr = msr;
 	kregs->gpr[1] = (unsigned long)childregs - STACK_FRAME_OVERHEAD;
 	kregs->gpr[2] = (unsigned long)p;
 	

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