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)
  *  [email protected]     (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)
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to