Module Name: src Committed By: matt Date: Fri Jul 19 16:42:12 UTC 2013
Modified Files: src/common/lib/libc/arch/m68k/string: memset.S strcmp.S strncmp.S Log Message: With these changes, they now produce identical binary as before the coldfire changes. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/m68k/string/memset.S \ src/common/lib/libc/arch/m68k/string/strcmp.S \ src/common/lib/libc/arch/m68k/string/strncmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libc/arch/m68k/string/memset.S diff -u src/common/lib/libc/arch/m68k/string/memset.S:1.5 src/common/lib/libc/arch/m68k/string/memset.S:1.6 --- src/common/lib/libc/arch/m68k/string/memset.S:1.5 Thu Jul 18 22:42:50 2013 +++ src/common/lib/libc/arch/m68k/string/memset.S Fri Jul 19 16:42:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.5 2013/07/18 22:42:50 matt Exp $ */ +/* $NetBSD: memset.S,v 1.6 2013/07/19 16:42:12 matt Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ #if 0 RCSID("from: @(#)bzero.s 5.1 (Berkeley) 5/12/90") #else - RCSID("$NetBSD: memset.S,v 1.5 2013/07/18 22:42:50 matt Exp $") + RCSID("$NetBSD: memset.S,v 1.6 2013/07/19 16:42:12 matt Exp $") #endif #endif /* LIBC_SCCS and not lint */ @@ -76,11 +76,7 @@ ENTRY(memset) movl %d2,-(%sp) movl 8(%sp),%a0 | destination movl 16(%sp),%d1 | count -#ifdef __mcoldfire__ - mvzb 15(%sp),%d2 | zero extend fill character -#else movb 15(%sp),%d2 | get fill character -#endif /* * It isn't worth the overhead of aligning to {long}word boundries @@ -89,15 +85,15 @@ ENTRY(memset) cmpl #15,%d1 jlt Lbzbyte -#ifndef __mcoldfire__ - andb 0xff,%d2 | clear high bytes -#endif - movl %d2,%d0 - lsll #8,%d0 | shift to 8-15 - orl %d0,%d2 | merge so low word is done - movl %d2,%d0 | copy word - swap %d0 | swap it - orl %d0,%d2 | put it upper half + clrl %d0 + moveb %d2,%d0 + movel %d0,%d2 + lsll #8,%d0 + orl %d0,%d2 + lsll #8,%d0 + orl %d0,%d2 + lsll #8,%d0 + orl %d0,%d2 /* word align */ movl %a0,%d0 Index: src/common/lib/libc/arch/m68k/string/strcmp.S diff -u src/common/lib/libc/arch/m68k/string/strcmp.S:1.5 src/common/lib/libc/arch/m68k/string/strcmp.S:1.6 --- src/common/lib/libc/arch/m68k/string/strcmp.S:1.5 Thu Jul 18 22:42:50 2013 +++ src/common/lib/libc/arch/m68k/string/strcmp.S Fri Jul 19 16:42:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: strcmp.S,v 1.5 2013/07/18 22:42:50 matt Exp $ */ +/* $NetBSD: strcmp.S,v 1.6 2013/07/19 16:42:12 matt Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) && !defined(lint) - RCSID("$NetBSD: strcmp.S,v 1.5 2013/07/18 22:42:50 matt Exp $") + RCSID("$NetBSD: strcmp.S,v 1.6 2013/07/19 16:42:12 matt Exp $") #endif /* LIBC_SCCS and not lint */ #ifdef __mcoldfire__ @@ -69,10 +69,13 @@ L1: /* unrolled by 4 for 680[23]0's * jeq L1 L3: -#ifndef __mcoldfire__ - EXTBL(%d1) -#endif +#ifdef __mcoldfire__ movl %d1,%d0 +#else + scs %d0 + EXTBL(%d0) + movb %d1,%d0 +#endif rts L2: movq #0,%d0 Index: src/common/lib/libc/arch/m68k/string/strncmp.S diff -u src/common/lib/libc/arch/m68k/string/strncmp.S:1.5 src/common/lib/libc/arch/m68k/string/strncmp.S:1.6 --- src/common/lib/libc/arch/m68k/string/strncmp.S:1.5 Thu Jul 18 22:42:50 2013 +++ src/common/lib/libc/arch/m68k/string/strncmp.S Fri Jul 19 16:42:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: strncmp.S,v 1.5 2013/07/18 22:42:50 matt Exp $ */ +/* $NetBSD: strncmp.S,v 1.6 2013/07/19 16:42:12 matt Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) && !defined(lint) - RCSID("$NetBSD: strncmp.S,v 1.5 2013/07/18 22:42:50 matt Exp $") + RCSID("$NetBSD: strncmp.S,v 1.6 2013/07/19 16:42:12 matt Exp $") #endif /* LIBC_SCCS and not lint */ @@ -50,7 +50,9 @@ ENTRY(strncmp) jeq L4 movl 4(%sp),%a0 movl 8(%sp),%a1 +#ifdef __coldfire__ movl %d2,-(%sp) | save temp +#endif L1: /* unroll by 4 for m680[23]0's */ GETC((%a0)+,%d1) jeq L2 @@ -88,9 +90,11 @@ L2: SUBC((%a1),%d1) L3: #ifdef __mcoldfire__ movl (%sp)+,%d2 | restore temp + movl %d1,%d0 #else - EXTBL(%d1) + scs %d0 + EXTBL(%d0) + moveb %d1,%d0 #endif - movl %d1,%d0 rts END(strncmp)