svn commit: r210096 - head/sys/mips/mips

Warner Losh imp at FreeBSD.org
Thu Jul 15 01:47:48 UTC 2010


Author: imp
Date: Thu Jul 15 01:47:47 2010
New Revision: 210096
URL: http://svn.freebsd.org/changeset/base/210096

Log:
  Remove one layer of indirection.  No need to call cpu_throw which then
  calls mips_cpu_call via an obfuscated assembler call.  Instead, delete
  the current cpu_throw, and rename mips_cpu_throw to cpu_throw.  This
  is nicer to the cache on each context switch (since fixed jumps can be
  prefected, while jumps through a register can't).  Incidentally, it
  also saves about 5 or 6 instructions.
  
  Reviewed by:	jmallet@

Modified:
  head/sys/mips/mips/db_trace.c
  head/sys/mips/mips/swtch.S
  head/sys/mips/mips/vm_machdep.c

Modified: head/sys/mips/mips/db_trace.c
==============================================================================
--- head/sys/mips/mips/db_trace.c	Thu Jul 15 01:18:37 2010	(r210095)
+++ head/sys/mips/mips/db_trace.c	Thu Jul 15 01:47:47 2010	(r210096)
@@ -168,9 +168,9 @@ loop:
 		subr = (uintptr_t)MipsTLBInvalidException;
 	else if (pcBetween(fork_trampoline, savectx))
 		subr = (uintptr_t)fork_trampoline;
-	else if (pcBetween(savectx, mips_cpu_throw))
+	else if (pcBetween(savectx, cpu_throw))
 		subr = (uintptr_t)savectx;
-	else if (pcBetween(mips_cpu_throw, cpu_switch))
+	else if (pcBetween(cpu_throw, cpu_switch))
 		subr = (uintptr_t)cpu_throw;
 	else if (pcBetween(cpu_switch, MipsSwitchFPState))
 		subr = (uintptr_t)cpu_switch;

Modified: head/sys/mips/mips/swtch.S
==============================================================================
--- head/sys/mips/mips/swtch.S	Thu Jul 15 01:18:37 2010	(r210095)
+++ head/sys/mips/mips/swtch.S	Thu Jul 15 01:47:47 2010	(r210096)
@@ -216,7 +216,7 @@ LEAF(savectx)
 	move	v0, zero
 END(savectx)
 
-NON_LEAF(mips_cpu_throw, CALLFRAME_SIZ, ra)
+NON_LEAF(cpu_throw, CALLFRAME_SIZ, ra)
 	mfc0	t0, MIPS_COP_0_STATUS		# t0 = saved status register
 	nop
 	nop
@@ -227,7 +227,7 @@ NON_LEAF(mips_cpu_throw, CALLFRAME_SIZ, 
 						# thread's context, so jump 
 						# right to action
 	nop					# BDSLOT
-END(mips_cpu_throw)
+END(cpu_throw)
 
 /*
  * cpu_switch(struct thread *old, struct thread *new, struct mutex *mtx);

Modified: head/sys/mips/mips/vm_machdep.c
==============================================================================
--- head/sys/mips/mips/vm_machdep.c	Thu Jul 15 01:18:37 2010	(r210095)
+++ head/sys/mips/mips/vm_machdep.c	Thu Jul 15 01:47:47 2010	(r210096)
@@ -543,14 +543,6 @@ cpu_set_user_tls(struct thread *td, void
 	return (0);
 }
 
-void
-cpu_throw(struct thread *old, struct thread *new)
-{
-
-	func_2args_asmmacro(&mips_cpu_throw, old, new);
-	panic("mips_cpu_throw() returned");
-}
-
 #ifdef DDB
 #include <ddb/ddb.h>
 


More information about the svn-src-head mailing list