Module Name:    src
Committed By:   matt
Date:           Sat Jan 30 23:49:31 UTC 2010

Modified Files:
        src/sys/arch/mips/conf [matt-nb5-mips64]: Makefile.mips
        src/sys/arch/mips/include [matt-nb5-mips64]: cpu.h types.h
        src/sys/arch/mips/mips [matt-nb5-mips64]: genassym.cf locore.S
            locore_mips1.S mipsX_subr.S vm_machdep.c

Log Message:
Change MIPS_CURLWP from s7 to t8.  In a MALTA64 kernel, s6 is used 9155 times
which means the compiler could really use s7 is was free to do so.  The least
used temporary was t8 (288 times).  Once the kernel was switched to use t8 for
MIPS_CURLWP, s7 was used 7524 times.

Additionally a MALTA32 kernel shrunk by 6205 instructions (24820 bytes) or
about 1% of its text size.

[For some reason, pre-change t1 was never used and post change t2 was never
used.  Not sure why.]


To generate a diff of this commit:
cvs rdiff -u -r1.50.24.4 -r1.50.24.5 src/sys/arch/mips/conf/Makefile.mips
cvs rdiff -u -r1.90.16.15 -r1.90.16.16 src/sys/arch/mips/include/cpu.h
cvs rdiff -u -r1.43.36.11 -r1.43.36.12 src/sys/arch/mips/include/types.h
cvs rdiff -u -r1.44.12.11 -r1.44.12.12 src/sys/arch/mips/mips/genassym.cf
cvs rdiff -u -r1.167.38.6 -r1.167.38.7 src/sys/arch/mips/mips/locore.S
cvs rdiff -u -r1.64.26.1.2.5 -r1.64.26.1.2.6 \
    src/sys/arch/mips/mips/locore_mips1.S
cvs rdiff -u -r1.26.36.1.2.20 -r1.26.36.1.2.21 \
    src/sys/arch/mips/mips/mipsX_subr.S
cvs rdiff -u -r1.121.6.1.2.7 -r1.121.6.1.2.8 \
    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/conf/Makefile.mips
diff -u src/sys/arch/mips/conf/Makefile.mips:1.50.24.4 src/sys/arch/mips/conf/Makefile.mips:1.50.24.5
--- src/sys/arch/mips/conf/Makefile.mips:1.50.24.4	Tue Jan 26 21:19:25 2010
+++ src/sys/arch/mips/conf/Makefile.mips	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.mips,v 1.50.24.4 2010/01/26 21:19:25 matt Exp $
+#	$NetBSD: Makefile.mips,v 1.50.24.5 2010/01/30 23:49:31 matt Exp $
 
 # Makefile for NetBSD
 #
@@ -46,7 +46,7 @@
 CPPFLAGS+=	-D${MACHINE}
 DEFGP?=		-G 0
 GP?=		${DEFGP}
-CFLAGS+=	${GP} -mno-abicalls -msoft-float -ffixed-23
+CFLAGS+=	${GP} -mno-abicalls -msoft-float -ffixed-24
 .if defined(LP64) && ${LP64} == "yes"
 .if ${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el"
 CFLAGS+=	-msym32 -mabi=64

Index: src/sys/arch/mips/include/cpu.h
diff -u src/sys/arch/mips/include/cpu.h:1.90.16.15 src/sys/arch/mips/include/cpu.h:1.90.16.16
--- src/sys/arch/mips/include/cpu.h:1.90.16.15	Tue Jan 26 21:19:25 2010
+++ src/sys/arch/mips/include/cpu.h	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.90.16.15 2010/01/26 21:19:25 matt Exp $	*/
+/*	$NetBSD: cpu.h,v 1.90.16.16 2010/01/30 23:49:31 matt Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -210,10 +210,10 @@
 #define	CPU_ARCH_MIPS64	(1 << 6)
 
 /* Note: must be kept in sync with -ffixed-?? Makefile.mips. */
-#define MIPS_CURLWP             $23
-#define MIPS_CURLWP_QUOTED      "$23"
-#define MIPS_CURLWP_CARD	23
-#define	MIPS_CURLWP_FRAME(x)	FRAME_S7(x)
+#define MIPS_CURLWP             $24
+#define MIPS_CURLWP_QUOTED      "$24"
+#define MIPS_CURLWP_LABEL	_L_T8
+#define MIPS_CURLWP_FRAME(x)	FRAME_T8(x)
 
 #ifndef _LOCORE
 

Index: src/sys/arch/mips/include/types.h
diff -u src/sys/arch/mips/include/types.h:1.43.36.11 src/sys/arch/mips/include/types.h:1.43.36.12
--- src/sys/arch/mips/include/types.h:1.43.36.11	Wed Jan 20 06:58:35 2010
+++ src/sys/arch/mips/include/types.h	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: types.h,v 1.43.36.11 2010/01/20 06:58:35 matt Exp $	*/
+/*	$NetBSD: types.h,v 1.43.36.12 2010/01/30 23:49:31 matt Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -116,11 +116,12 @@
 #define	_L_S5		5
 #define	_L_S6		6
 #define	_L_S7		7
-#define	_L_GP		8
-#define	_L_SP		9
-#define	_L_S8		10
-#define	_L_RA		11
-#define	_L_SR		12
+#define	_L_T8		8
+#define	_L_GP		9
+#define	_L_SP		10
+#define	_L_S8		11
+#define	_L_RA		12
+#define	_L_SR		13
 #endif
 
 typedef	volatile int		__cpu_simple_lock_t;

Index: src/sys/arch/mips/mips/genassym.cf
diff -u src/sys/arch/mips/mips/genassym.cf:1.44.12.11 src/sys/arch/mips/mips/genassym.cf:1.44.12.12
--- src/sys/arch/mips/mips/genassym.cf:1.44.12.11	Wed Jan 20 09:04:35 2010
+++ src/sys/arch/mips/mips/genassym.cf	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.44.12.11 2010/01/20 09:04:35 matt Exp $
+#	$NetBSD: genassym.cf,v 1.44.12.12 2010/01/30 23:49:31 matt Exp $
 #
 # Copyright (c) 1992, 1993
 #	The Regents of the University of California.  All rights reserved.
@@ -306,6 +306,7 @@
 define	SF_REG_S5	offsetof(label_t, val[_L_S5])
 define	SF_REG_S6	offsetof(label_t, val[_L_S6])
 define	SF_REG_S7	offsetof(label_t, val[_L_S7])
+define	SF_REG_T8	offsetof(label_t, val[_L_T8])
 define	SF_REG_GP	offsetof(label_t, val[_L_GP])
 define	SF_REG_SP	offsetof(label_t, val[_L_SP])
 define	SF_REG_S8	offsetof(label_t, val[_L_S8])

Index: src/sys/arch/mips/mips/locore.S
diff -u src/sys/arch/mips/mips/locore.S:1.167.38.6 src/sys/arch/mips/mips/locore.S:1.167.38.7
--- src/sys/arch/mips/mips/locore.S:1.167.38.6	Fri Jan 29 00:16:58 2010
+++ src/sys/arch/mips/mips/locore.S	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.167.38.6 2010/01/29 00:16:58 matt Exp $	*/
+/*	$NetBSD: locore.S,v 1.167.38.7 2010/01/30 23:49:31 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -178,6 +178,7 @@
 	REG_S	s5, U_PCB_CONTEXT+SF_REG_S5(a2)
 	REG_S	s6, U_PCB_CONTEXT+SF_REG_S6(a2)
 	REG_S	s7, U_PCB_CONTEXT+SF_REG_S7(a2)
+	REG_S	t8, U_PCB_CONTEXT+SF_REG_T8(a2)
 	REG_S	sp, U_PCB_CONTEXT+SF_REG_SP(a2)
 	REG_S	s8, U_PCB_CONTEXT+SF_REG_S8(a2)
 	REG_S	ra, U_PCB_CONTEXT+SF_REG_RA(a2)
@@ -244,6 +245,7 @@
 	REG_L	s5, U_PCB_CONTEXT+SF_REG_S5(a0)
 	REG_L	s6, U_PCB_CONTEXT+SF_REG_S6(a0)
 	REG_L	s7, U_PCB_CONTEXT+SF_REG_S7(a0)
+	REG_L	t8, U_PCB_CONTEXT+SF_REG_T8(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L	gp, U_PCB_CONTEXT+SF_REG_GP(a0)
 #endif
@@ -270,6 +272,7 @@
 	REG_S	s5, U_PCB_CONTEXT+SF_REG_S5(a0)
 	REG_S	s6, U_PCB_CONTEXT+SF_REG_S6(a0)
 	REG_S	s7, U_PCB_CONTEXT+SF_REG_S7(a0)
+	REG_S	t8, U_PCB_CONTEXT+SF_REG_T8(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_S	gp, U_PCB_CONTEXT+SF_REG_GP(a0)
 #endif
@@ -298,6 +301,7 @@
 	REG_S	s5, SF_REG_S5(a0)
 	REG_S	s6, SF_REG_S6(a0)
 	REG_S	s7, SF_REG_S7(a0)
+	REG_S	t8, SF_REG_T8(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_S	gp, SF_REG_GP(a0)
 #endif
@@ -323,6 +327,7 @@
 	REG_L	s5, SF_REG_S5(a0)
 	REG_L	s6, SF_REG_S6(a0)
 	REG_L	s7, SF_REG_S7(a0)
+	REG_L	t8, SF_REG_T8(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L	gp, 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.64.26.1.2.5 src/sys/arch/mips/mips/locore_mips1.S:1.64.26.1.2.6
--- src/sys/arch/mips/mips/locore_mips1.S:1.64.26.1.2.5	Wed Jan 20 06:58:36 2010
+++ src/sys/arch/mips/mips/locore_mips1.S	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_mips1.S,v 1.64.26.1.2.5 2010/01/20 06:58:36 matt Exp $	*/
+/*	$NetBSD: locore_mips1.S,v 1.64.26.1.2.6 2010/01/30 23:49:31 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -1034,7 +1034,7 @@
 	la	t0, _C_LABEL(lwp_startup)
 	move	a0, v0
 	jal	ra, t0
-	move	a1, s7
+	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.26.36.1.2.20 src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.21
--- src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.20	Wed Jan 20 06:58:36 2010
+++ src/sys/arch/mips/mips/mipsX_subr.S	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mipsX_subr.S,v 1.26.36.1.2.20 2010/01/20 06:58:36 matt Exp $	*/
+/*	$NetBSD: mipsX_subr.S,v 1.26.36.1.2.21 2010/01/30 23:49:31 matt Exp $	*/
 
 /*
  * Copyright 2002 Wasabi Systems, Inc.
@@ -1390,7 +1390,7 @@
 	REG_S	s4, FRAME_S4(a1)
 	REG_S	s5, FRAME_S5(a1)
 	REG_S	s6, FRAME_S6(a1)
-	#REG_S	s7, FRAME_S7(a1)		# MIPS_CURLWP_FRAME
+	REG_S	s7, FRAME_S7(a1)		# MIPS_CURLWP_FRAME
 	REG_S	s8, FRAME_S8(a1)
 	REG_L	a0, FRAME_EPC(a1)		# argument is interrupted PC
 #ifdef IPL_ICU_MASK
@@ -1431,7 +1431,7 @@
 	REG_L	s4, FRAME_S4(a1)
 	REG_L	s5, FRAME_S5(a1)
 	REG_L	s6, FRAME_S6(a1)
-	#REG_L	s7, FRAME_S7(a1)		# MIPS_CURLWP_FRAME
+	REG_L	s7, FRAME_S7(a1)		# MIPS_CURLWP_FRAME
 	REG_L	s8, FRAME_S8(a1)
  #	mtc0	a0, MIPS_COP_0_STATUS		# this should disable interrupts
 
@@ -2063,7 +2063,7 @@
 	PTR_LA	t0, _C_LABEL(lwp_startup)
 	move	a0, v0
 	jal	ra, t0
-	move	a1, s7
+	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.121.6.1.2.7 src/sys/arch/mips/mips/vm_machdep.c:1.121.6.1.2.8
--- src/sys/arch/mips/mips/vm_machdep.c:1.121.6.1.2.7	Thu Jan 28 01:57:45 2010
+++ src/sys/arch/mips/mips/vm_machdep.c	Sat Jan 30 23:49:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.121.6.1.2.7 2010/01/28 01:57:45 nisimura Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.121.6.1.2.8 2010/01/30 23:49:31 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -80,7 +80,7 @@
 #include "opt_coredump.h"
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.121.6.1.2.7 2010/01/28 01:57:45 nisimura Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.121.6.1.2.8 2010/01/30 23:49:31 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -173,7 +173,7 @@
 	pcb = &l2->l_addr->u_pcb;
 	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)l2;	/* S7 */
+	pcb->pcb_context.val[MIPS_CURLWP_LABEL] = (intptr_t)l2;		/* T8 */
 	pcb->pcb_context.val[_L_SP] = (intptr_t)f;			/* SP */
 	pcb->pcb_context.val[_L_RA] = (intptr_t)lwp_trampoline;		/* RA */
 #ifdef _LP64
@@ -198,7 +198,7 @@
 
 	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;	/* S7 */
+	pcb->pcb_context.val[MIPS_CURLWP_LABEL] = (intptr_t)l;		/* T8 */
 	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