Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libc/arch/i386/string Pull optimised code from memcpy.S
details: https://anonhg.NetBSD.org/src/rev/5c4469e8fbfc
branches: trunk
changeset: 573637:5c4469e8fbfc
user: dsl <dsl%NetBSD.org@localhost>
date: Thu Feb 03 22:35:11 2005 +0000
description:
Pull optimised code from memcpy.S
Maybe bcopy can be killed one day...
diffstat:
lib/libc/arch/i386/string/bcopy.S | 103 +------------------------------------
1 files changed, 3 insertions(+), 100 deletions(-)
diffs (108 lines):
diff -r d46677def561 -r 5c4469e8fbfc lib/libc/arch/i386/string/bcopy.S
--- a/lib/libc/arch/i386/string/bcopy.S Thu Feb 03 22:31:44 2005 +0000
+++ b/lib/libc/arch/i386/string/bcopy.S Thu Feb 03 22:35:11 2005 +0000
@@ -1,101 +1,4 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from locore.s.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <machine/asm.h>
-
-#if defined(LIBC_SCCS)
- RCSID("$NetBSD: bcopy.S,v 1.12 2003/08/07 16:42:08 agc Exp $")
-#endif
-
- /*
- * (ov)bcopy (src,dst,cnt)
- * ws%tools.de@localhost (Wolfgang Solfrank, TooLs GmbH) +49-228-985800
- */
+/* $NetBSD: bcopy.S,v 1.13 2005/02/03 22:35:11 dsl Exp $ */
-#ifdef MEMCOPY
-ENTRY(memcpy)
-#else
-#ifdef MEMMOVE
-ENTRY(memmove)
-#else
-ENTRY(bcopy)
-#endif
-#endif
- pushl %esi
- pushl %edi
-#if defined(MEMCOPY) || defined(MEMMOVE)
- movl 12(%esp),%edi
- movl 16(%esp),%esi
- movl %edi,%eax /* return value */
-#else
- movl 12(%esp),%esi
- movl 16(%esp),%edi
-#endif
- movl 20(%esp),%ecx
-#if defined(MEMCOPY)
- movl %ecx,%edx
-#else
- movl %edi,%edx
- subl %esi,%edx
- cmpl %ecx,%edx /* overlapping? */
- movl %ecx,%edx
- jb 1f
-#endif
- cld /* nope, copy forwards. */
- shrl $2,%ecx /* copy by words */
- rep
- movsl
- movl %edx,%ecx
- andl $3,%ecx /* any bytes left? */
- rep
- movsb
- popl %edi
- popl %esi
- ret
-1:
- addl %ecx,%edi /* copy backwards. */
- addl %ecx,%esi
- std
- andl $3,%ecx /* any fractional bytes? */
- decl %edi
- decl %esi
- rep
- movsb
- movl %edx,%ecx /* copy remainder by words */
- shrl $2,%ecx
- subl $3,%esi
- subl $3,%edi
- rep
- movsl
- popl %edi
- popl %esi
- cld
- ret
+#define BCOPY
+#include "memcpy.S"
Home |
Main Index |
Thread Index |
Old Index