Module Name:    src
Committed By:   nisimura
Date:           Wed Dec 22 01:34:18 UTC 2010

Modified Files:
        src/sys/arch/mips/mips: locore.S locore_mips1.S mipsX_subr.S
            vm_machdep.c

Log Message:
- make sure cpu_switchto() not to touch MIPS_CURLWP register at newlwp
  switchframe restoration stage.
- discard MIPS_CURLWP assignments exposed in cpu_lwp_fork() and
  cpu_setfunc().
- use plain 'jal' instruction to call lwp_startup().


To generate a diff of this commit:
cvs rdiff -u -r1.172 -r1.173 src/sys/arch/mips/mips/locore.S
cvs rdiff -u -r1.70 -r1.71 src/sys/arch/mips/mips/locore_mips1.S
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/mips/mips/mipsX_subr.S
cvs rdiff -u -r1.130 -r1.131 src/sys/arch/mips/mips/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/mips/locore.S
diff -u src/sys/arch/mips/mips/locore.S:1.172 src/sys/arch/mips/mips/locore.S:1.173
--- src/sys/arch/mips/mips/locore.S:1.172	Sun Dec 20 03:40:27 2009
+++ src/sys/arch/mips/mips/locore.S	Wed Dec 22 01:34:17 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.172 2009/12/20 03:40:27 rmind Exp $	*/
+/*	$NetBSD: locore.S,v 1.173 2010/12/22 01:34:17 nisimura Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -247,7 +247,7 @@
 	REG_L	s4, PCB_CONTEXT+SF_REG_S4(a0)
 	REG_L	s5, PCB_CONTEXT+SF_REG_S5(a0)
 	REG_L	s6, PCB_CONTEXT+SF_REG_S6(a0)
-	REG_L	s7, PCB_CONTEXT+SF_REG_S7(a0)
+     /* REG_L	s7, PCB_CONTEXT+SF_REG_S7(a0)	don't touch MIPS_CURLWP */
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L	gp, PCB_CONTEXT+SF_REG_GP(a0)
 #endif

Index: src/sys/arch/mips/mips/locore_mips1.S
diff -u src/sys/arch/mips/mips/locore_mips1.S:1.70 src/sys/arch/mips/mips/locore_mips1.S:1.71
--- src/sys/arch/mips/mips/locore_mips1.S:1.70	Thu Nov 25 17:53:24 2010
+++ src/sys/arch/mips/mips/locore_mips1.S	Wed Dec 22 01:34:17 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_mips1.S,v 1.70 2010/11/25 17:53:24 matt Exp $	*/
+/*	$NetBSD: locore_mips1.S,v 1.71 2010/12/22 01:34:17 nisimura Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -1033,10 +1033,9 @@
 	addu	sp, sp, -CALLFRAME_SIZ
 
 	# Call lwp_startup(), with args from cpu_switchto()/cpu_setfunc()
-	la	t0, _C_LABEL(lwp_startup)
 	move	a0, v0
-	jal	ra, t0
-	move	a1, s7
+	jal	_C_LABEL(lwp_startup)
+	move	a1, MIPS_CURLWP
 
 	# Call the routine specified by cpu_setfunc()
 	jal	ra, s0			

Index: src/sys/arch/mips/mips/mipsX_subr.S
diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.36 src/sys/arch/mips/mips/mipsX_subr.S:1.37
--- src/sys/arch/mips/mips/mipsX_subr.S:1.36	Tue Jun 22 12:42:21 2010
+++ src/sys/arch/mips/mips/mipsX_subr.S	Wed Dec 22 01:34:17 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mipsX_subr.S,v 1.36 2010/06/22 12:42:21 simonb Exp $	*/
+/*	$NetBSD: mipsX_subr.S,v 1.37 2010/12/22 01:34:17 nisimura Exp $	*/
 
 /*
  * Copyright 2002 Wasabi Systems, Inc.
@@ -2018,10 +2018,9 @@
 	PTR_ADDU sp, sp, -CALLFRAME_SIZ
 
 	# Call lwp_startup(), with args from cpu_switchto()/cpu_setfunc()
-	PTR_LA	t0, _C_LABEL(lwp_startup)
 	move	a0, v0
-	jal	ra, t0
-	move	a1, s7
+	jal	_C_LABEL(lwp_startup)
+	move	a1, MIPS_CURLWP
 
 	# Call the routine specified by cpu_setfunc()
 	jal	ra, s0			

Index: src/sys/arch/mips/mips/vm_machdep.c
diff -u src/sys/arch/mips/mips/vm_machdep.c:1.130 src/sys/arch/mips/mips/vm_machdep.c:1.131
--- src/sys/arch/mips/mips/vm_machdep.c:1.130	Mon Dec 14 04:37:02 2009
+++ src/sys/arch/mips/mips/vm_machdep.c	Wed Dec 22 01:34:17 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.130 2009/12/14 04:37:02 matt Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.131 2010/12/22 01:34:17 nisimura Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.130 2009/12/14 04:37:02 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.131 2010/12/22 01:34:17 nisimura Exp $");
 
 #include "opt_ddb.h"
 
@@ -177,7 +177,6 @@
 	 */
 	pcb2->pcb_context.val[_L_S0] = (intptr_t)func;			/* S0 */
 	pcb2->pcb_context.val[_L_S1] = (intptr_t)arg;			/* S1 */
-	pcb2->pcb_context.val[MIPS_CURLWP_CARD - 16] = (intptr_t)l2;	/* S? */
 	pcb2->pcb_context.val[_L_SP] = (intptr_t)f;			/* SP */
 	pcb2->pcb_context.val[_L_RA] = (intptr_t)lwp_trampoline;	/* RA */
 #ifdef _LP64
@@ -199,7 +198,6 @@
 
 	pcb->pcb_context.val[_L_S0] = (intptr_t)func;			/* S0 */
 	pcb->pcb_context.val[_L_S1] = (intptr_t)arg;			/* S1 */
-	pcb->pcb_context.val[MIPS_CURLWP_CARD - 16] = (intptr_t)l;	/* S? */
 	pcb->pcb_context.val[_L_SP] = (intptr_t)f;			/* SP */
 	pcb->pcb_context.val[_L_RA] = (intptr_t)setfunc_trampoline;	/* RA */
 #ifdef _LP64

Reply via email to