svn commit: r334183 - in head/sys: conf i386/i386

Warner Losh imp at FreeBSD.org
Thu May 24 21:11:34 UTC 2018


Author: imp
Date: Thu May 24 21:11:33 2018
New Revision: 334183
URL: https://svnweb.freebsd.org/changeset/base/334183

Log:
  Make memmove and bcopy share code
  
  Make memmove the primary interface, but have bcopy be an alternative
  entry point that jumps into memmove. This will slightly pessimize
  bcopy calls, but those are about to get much rarer. Return dst always,
  but it will be ignored by bcopy callers. We can remove just the alt
  entry point if we ever remove bcopy entirely.
  
  Differential Revision: https://reviews.freebsd.org/D15374

Modified:
  head/sys/conf/files.i386
  head/sys/i386/i386/support.s

Modified: head/sys/conf/files.i386
==============================================================================
--- head/sys/conf/files.i386	Thu May 24 21:11:28 2018	(r334182)
+++ head/sys/conf/files.i386	Thu May 24 21:11:33 2018	(r334183)
@@ -553,7 +553,6 @@ kern/subr_sfbuf.c		standard
 libkern/divdi3.c		standard
 libkern/ffsll.c			standard
 libkern/flsll.c			standard
-libkern/memmove.c		standard
 libkern/memset.c		standard
 libkern/moddi3.c		standard
 libkern/qdivrem.c		standard

Modified: head/sys/i386/i386/support.s
==============================================================================
--- head/sys/i386/i386/support.s	Thu May 24 21:11:28 2018	(r334182)
+++ head/sys/i386/i386/support.s	Thu May 24 21:11:33 2018	(r334183)
@@ -146,6 +146,7 @@ ENTRY(fillw)
 END(fillw)
 
 /*
+ * memmove(dst, src, cnt) (return dst)
  * bcopy(src, dst, cnt)
  *  ws at tools.de     (Wolfgang Solfrank, TooLs GmbH) +49-228-985800
  */
@@ -156,6 +157,15 @@ ENTRY(bcopy)
 	pushl	%edi
 	movl	8(%ebp),%esi
 	movl	12(%ebp),%edi
+	jmp	1f
+ALTENTRY(memmove)
+	pushl	%ebp
+	movl	%esp,%ebp
+	pushl	%esi
+	pushl	%edi
+	movl	8(%ebp),%edi
+	movl	12(%ebp),%esi
+1:
 	movl	16(%ebp),%ecx
 
 	movl	%edi,%eax
@@ -172,6 +182,7 @@ ENTRY(bcopy)
 	movsb
 	popl	%edi
 	popl	%esi
+	movl	8(%ebp),%eax			/* return dst for memmove */
 	popl	%ebp
 	ret
 
@@ -194,6 +205,7 @@ ENTRY(bcopy)
 	popl	%edi
 	popl	%esi
 	cld
+	movl	8(%ebp),%eax			/* return dst for memmove */
 	popl	%ebp
 	ret
 END(bcopy)


More information about the svn-src-head mailing list