Module Name: src
Committed By: matt
Date: Sun Feb 28 03:28:54 UTC 2010
Modified Files:
src/sys/arch/mips/mips [matt-nb5-mips64]: lock_stubs.S locore.S
mipsX_subr.S
Log Message:
Change from indirect calls to direct calls to spl* routines.
To generate a diff of this commit:
cvs rdiff -u -r1.9.18.9 -r1.9.18.10 src/sys/arch/mips/mips/lock_stubs.S
cvs rdiff -u -r1.167.38.16 -r1.167.38.17 src/sys/arch/mips/mips/locore.S
cvs rdiff -u -r1.26.36.1.2.28 -r1.26.36.1.2.29 \
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/lock_stubs.S
diff -u src/sys/arch/mips/mips/lock_stubs.S:1.9.18.9 src/sys/arch/mips/mips/lock_stubs.S:1.9.18.10
--- src/sys/arch/mips/mips/lock_stubs.S:1.9.18.9 Sat Feb 27 19:22:47 2010
+++ src/sys/arch/mips/mips/lock_stubs.S Sun Feb 28 03:28:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: lock_stubs.S,v 1.9.18.9 2010/02/27 19:22:47 snj Exp $ */
+/* $NetBSD: lock_stubs.S,v 1.9.18.10 2010/02/28 03:28:54 matt Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -254,8 +254,7 @@
* (only uses a0-a3 and v0-v1)
*/
move t3, ra # need to save ra
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLRAISE
- jalr t9
+ jal _C_LABEL(splraise)
move a0, ta0
move ra, t3 # move ra back
#ifdef PARANOIA
@@ -468,8 +467,7 @@
* call splraise (only uses a0-a3, v0-v1, and ra)
*/
move t3, ra
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLRAISE
- jalr t9
+ jal _C_LABEL(splraise)
nop
move ra, t3
@@ -630,17 +628,18 @@
#endif /* PARANOIA */
beq a0, a1, 1f # if oldspl == cpl
- move t9, ra # no reason to drop ipl
+ nop # no reason to drop ipl
bltz t0, 1f # there are still holders
- move t9, ra # so don't drop IPL
+ nop # so don't drop IPL
/*
* Mutex count is zero so we need to restore the old IPL
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLX
+ j _C_LABEL(splx)
+ nop
1:
- j t9
+ j ra
nop
#if defined(DIAGNOSTIC)
2:
Index: src/sys/arch/mips/mips/locore.S
diff -u src/sys/arch/mips/mips/locore.S:1.167.38.16 src/sys/arch/mips/mips/locore.S:1.167.38.17
--- src/sys/arch/mips/mips/locore.S:1.167.38.16 Thu Feb 25 05:45:12 2010
+++ src/sys/arch/mips/mips/locore.S Sun Feb 28 03:28:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.167.38.16 2010/02/25 05:45:12 matt Exp $ */
+/* $NetBSD: locore.S,v 1.167.38.17 2010/02/28 03:28:54 matt Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -148,8 +148,7 @@
/*
* Raise to IPLHIGH
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLHIGH
- jalr t9 # splhigh()
+ jal _C_LABEL(splhigh_noprof) # go to splhigh
nop
/*
* Now enable interrupts (but they are all masked).
@@ -236,8 +235,9 @@
/*
* Switch to new context.
*/
- PTR_L t9, _C_LABEL(mips_locoresw) + MIPSX_CPU_SWITCH_RESUME
- jalr t9
+ .globl _C_LABEL(__cpu_switchto_fixup)
+_C_LABEL(__cpu_switchto_fixup):
+ jal _C_LABEL(mips_cpu_switch_resume)
move a0, MIPS_CURLWP
PTR_L t2, L_CPU(MIPS_CURLWP)
@@ -247,7 +247,6 @@
/* Check for restartable atomic sequences (RAS) */
PTR_L a0, L_PROC(MIPS_CURLWP) # argument to ras_lookup
PTR_L s5, L_ADDR(MIPS_CURLWP)
- nop # patchable load deay slot
PTR_L v1, P_RASLIST(a0) # get raslist
beqz v1, 1f # skip call if empty
nop
@@ -374,7 +373,6 @@
PTR_L s1, L_CPU(MIPS_CURLWP) # get curcpu()
nop # patchable load delay slot
PTR_S MIPS_CURLWP, CPU_INFO_CURLWP(s1) # ...
- nop # patchable slot
move s2, sp # remember sp
move s3, t0 # remember curpcb
@@ -387,19 +385,18 @@
move MIPS_CURLWP, s0 # restore curlwp
PTR_S MIPS_CURLWP, CPU_INFO_CURLWP(s1) # ....
+ REG_L ra, CALLFRAME_RA(sp) # load early since we use it
+
REG_PROLOGUE
REG_L s0, U_PCB_CONTEXT+SF_REG_S0(s3) # restore the saved
- nop # patchable delay slot
REG_L s1, U_PCB_CONTEXT+SF_REG_S1(s3) # registers that we
- nop # patchable delay slot
REG_L s2, U_PCB_CONTEXT+SF_REG_S2(s3) # used
REG_L s3, U_PCB_CONTEXT+SF_REG_S3(s3)
REG_EPILOGUE
/*
- * Almost everything (all except sp) is restored so we ca retrn.
+ * Almost everything (all except sp) is restored so we can return.
*/
- REG_L ra, CALLFRAME_RA(sp)
j ra
PTR_ADDU sp, CALLFRAME_SIZ
END(softint_fast_dispatch)
Index: src/sys/arch/mips/mips/mipsX_subr.S
diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.28 src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.29
--- src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.28 Sat Feb 27 20:32:04 2010
+++ src/sys/arch/mips/mips/mipsX_subr.S Sun Feb 28 03:28:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.28 2010/02/27 20:32:04 snj Exp $ */
+/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.29 2010/02/28 03:28:54 matt Exp $ */
/*
* Copyright 2002 Wasabi Systems, Inc.
@@ -1117,8 +1117,7 @@
/*
* We first need to get to IPL_HIGH so that interrupts are masked.
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLHIGH
- jalr t9
+ jal _C_LABEL(splhigh_noprof)
nop
#ifdef PARANOIA
@@ -1234,8 +1233,7 @@
/*
* Restore IPL knowing interrupts are disabled
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLX
- jalr t9 # splx(ppl)
+ jal _C_LABEL(splx_noprof) # splx(ppl)
nop
#ifdef PARANOIA
@@ -1393,8 +1391,7 @@
/*
* We first need to get to IPL_HIGH so that interrupts are masked.
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLHIGH
- jalr t9 # splhigh()
+ jal _C_LABEL(splhigh_noprof) # splhigh()
nop
move s0, v0 # remember previous priority
@@ -1469,8 +1466,7 @@
/*
* Restore IPL knowing interrupts are off
*/
- PTR_L t9, _C_LABEL(mips_splsw) + SPLSW_SPLX
- jalr t9
+ jal _C_LABEL(splx_noprof)
move a0, s0 # fetch previous priority level
/*