Introduce an ultra-simple, non-overlapping, int-aligned bcopy called bcopyi().
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 20 Jun 2005 17:43:39 +0000 (17:43 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 20 Jun 2005 17:43:39 +0000 (17:43 +0000)
sys/i386/i386/bcopy.s
sys/i386/include/md_var.h
sys/platform/pc32/i386/bcopy.s
sys/platform/pc32/include/md_var.h

index 3c3cdda..26b5563 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/i386/i386/Attic/bcopy.s,v 1.6 2004/07/16 05:48:29 dillon Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/bcopy.s,v 1.7 2005/06/20 17:43:37 dillon Exp $
  */
 /*
  * bcopy(source:%esi, target:%edi, count:%ecx)
@@ -87,6 +87,25 @@ ENTRY(bcopyb)
        cld
        ret
 
+       /*
+        * bcopyi(s, d, len)    (NON OVERLAPPING)
+        *
+        * This is a dumb 32-bit-granular bcopy
+        */
+       ALIGN_TEXT
+ENTRY(bcopyi)
+       pushl   %esi
+       pushl   %edi
+       movl    12(%esp),%esi
+       movl    16(%esp),%edi
+       movl    20(%esp),%ecx
+       shrl    $2,%ecx
+       cld
+       rep
+       movsl
+       popl    %edi
+       popl    %esi
+       ret
 
        /*
         * If memcpy/bcopy is called as part of a copyin or copyout, the
index 033bbbf..b04c804 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $
- * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.14 2005/06/12 20:55:14 swildner Exp $
+ * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.15 2005/06/20 17:43:39 dillon Exp $
  */
 
 #ifndef _MACHINE_MD_VAR_H_
@@ -69,6 +69,7 @@ struct  mdglobaldata;
 struct  thread;
 
 void   bcopyb (const void *from, void *to, size_t len);
+void   bcopyi (const void *from, void *to, size_t len);
 void   busdma_swi (void);
 void   cpu_gdinit (struct mdglobaldata *gd, int cpu);
 void   cpu_halt (void);
index 077e0ce..8c65542 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/platform/pc32/i386/bcopy.s,v 1.6 2004/07/16 05:48:29 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/bcopy.s,v 1.7 2005/06/20 17:43:37 dillon Exp $
  */
 /*
  * bcopy(source:%esi, target:%edi, count:%ecx)
@@ -87,6 +87,25 @@ ENTRY(bcopyb)
        cld
        ret
 
+       /*
+        * bcopyi(s, d, len)    (NON OVERLAPPING)
+        *
+        * This is a dumb 32-bit-granular bcopy
+        */
+       ALIGN_TEXT
+ENTRY(bcopyi)
+       pushl   %esi
+       pushl   %edi
+       movl    12(%esp),%esi
+       movl    16(%esp),%edi
+       movl    20(%esp),%ecx
+       shrl    $2,%ecx
+       cld
+       rep
+       movsl
+       popl    %edi
+       popl    %esi
+       ret
 
        /*
         * If memcpy/bcopy is called as part of a copyin or copyout, the
index 3c20be3..441e363 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $
- * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.14 2005/06/12 20:55:14 swildner Exp $
+ * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.15 2005/06/20 17:43:39 dillon Exp $
  */
 
 #ifndef _MACHINE_MD_VAR_H_
@@ -69,6 +69,7 @@ struct  mdglobaldata;
 struct  thread;
 
 void   bcopyb (const void *from, void *to, size_t len);
+void   bcopyi (const void *from, void *to, size_t len);
 void   busdma_swi (void);
 void   cpu_gdinit (struct mdglobaldata *gd, int cpu);
 void   cpu_halt (void);