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