Module Name: src Committed By: matt Date: Mon Aug 24 05:18:03 UTC 2009
Modified Files: src/sys/arch/mips/mips [matt-nb5-mips64]: mipsX_subr.S Log Message: Don't bother saving/restore t0-t3/ta0-ta3 in the trapframe. Instead use the just saved s0-s7 to hold them. any function we call will preserve them and we just do moves on the way back. To generate a diff of this commit: cvs rdiff -u -r1.26.36.1.2.2 -r1.26.36.1.2.3 \ src/sys/arch/mips/mips/mipsX_subr.S 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/mipsX_subr.S diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.2 src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.3 --- src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.2 Mon Aug 24 04:04:53 2009 +++ src/sys/arch/mips/mips/mipsX_subr.S Mon Aug 24 05:18:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.2 2009/08/24 04:04:53 matt Exp $ */ +/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.3 2009/08/24 05:18:03 matt Exp $ */ /* * Copyright 2002 Wasabi Systems, Inc. @@ -861,15 +861,6 @@ REG_S a3, FRAME_A3(k1) PTR_L a0, CPUVAR(CURLWP) # 1st arg is curlwp mfhi v1 - REG_S t0, FRAME_T0(k1) # no need to save temp regs - REG_S t1, FRAME_T1(k1) - REG_S t2, FRAME_T2(k1) - REG_S t3, FRAME_T3(k1) - mfc0 a1, MIPS_COP_0_STATUS # 2nd arg is STATUS - REG_S ta0, FRAME_TA0(k1) - REG_S ta1, FRAME_TA1(k1) - REG_S ta2, FRAME_TA2(k1) - REG_S ta3, FRAME_TA3(k1) mfc0 a2, MIPS_COP_0_CAUSE # 3rd arg is CAUSE REG_S s0, FRAME_S0(k1) REG_S s1, FRAME_S1(k1) @@ -880,6 +871,15 @@ REG_S s5, FRAME_S5(k1) REG_S s6, FRAME_S6(k1) REG_S s7, FRAME_S7(k1) + move s0, t0 # since the saved registers + move s1, t1 # saved been saved we can + move s2, t2 # use them to stash most of + move s3, t3 # temporary registers + mfc0 a1, MIPS_COP_0_STATUS # 2nd arg is STATUS + move s4, ta0 + move s5, ta1 + move s6, ta2 + move s7, ta3 #REG_S t8, FRAME_T8(k1) #REG_S t9, FRAME_T9(k1) REG_S gp, FRAME_GP(k1) @@ -978,14 +978,14 @@ REG_L a1, FRAME_A1(k1) REG_L a2, FRAME_A2(k1) REG_L a3, FRAME_A3(k1) - REG_L t0, FRAME_T0(k1) - REG_L t1, FRAME_T1(k1) - REG_L t2, FRAME_T2(k1) - REG_L t3, FRAME_T3(k1) - REG_L ta0, FRAME_TA0(k1) - REG_L ta1, FRAME_TA1(k1) - REG_L ta2, FRAME_TA2(k1) - REG_L ta3, FRAME_TA3(k1) + move t0, s0 # restore the temps + move t1, s1 + move t2, s2 + move t3, s3 + move ta0, s4 + move ta1, s5 + move ta2, s6 + move ta3, s7 REG_L s0, FRAME_S0(k1) REG_L s1, FRAME_S1(k1) REG_L s2, FRAME_S2(k1)