m68k: remove duplicate memset() implementation
authorGreg Ungerer <gerg@uclinux.org>
Mon, 28 Mar 2011 06:48:00 +0000 (16:48 +1000)
committerGreg Ungerer <gerg@uclinux.org>
Tue, 24 May 2011 00:03:49 +0000 (10:03 +1000)
Merging the mmu and non-mmu directories we ended up with duplicate
implementations of memset(). One is a little more optimized for the
>= 68020 case, but that can easily be inserted into a single
implementation of memset(). Clean up the exporting of this symbol
too, otherwise we end up exporting it twice on a no-mmu build.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/kernel/m68k_ksyms_no.c
arch/m68k/lib/Makefile
arch/m68k/lib/memset.c
arch/m68k/lib/string.c

index 39fe0a7aec3272a0f4708846e51dd948ad24d452..346bce63bbf3e56515e28337658a63670edc83c2 100644 (file)
@@ -36,7 +36,6 @@ EXPORT_SYMBOL(csum_partial_copy_nocheck);
    their interface isn't gonna change any time soon now, so
    it's OK to leave it out of version control.  */
 EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memset);
 
 /*
  * libgcc functions - functions that are used internally by the
index ec479a9b9d7b5e439055ba4f36fd3f1d67d81607..ac275d5e9e3cd799fd6aaadfc090641f34350821 100644 (file)
@@ -3,12 +3,13 @@
 # Makefile for m68k-specific library files..
 #
 
-lib-y  := ashldi3.o ashrdi3.o lshrdi3.o muldi3.o memmove.o checksum.o
+lib-y  := ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \
+          memset.o memmove.o checksum.o
 
 ifdef CONFIG_MMU
 lib-y  += string.o uaccess.o
 else
 lib-y  += mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \
-          memcpy.o memset.o delay.o
+          memcpy.o delay.o
 endif
 
index 1389bf455633a2ed0b752ce04d61bcb3a58c4a54..f649e6a2e644686966e3b7c4ed01b245292c04c6 100644 (file)
@@ -1,47 +1,75 @@
-#include <linux/types.h>
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file COPYING in the main directory of this archive
+ * for more details.
+ */
 
-void * memset(void * s, int c, size_t count)
+#include <linux/module.h>
+#include <linux/string.h>
+
+void *memset(void *s, int c, size_t count)
 {
-  void *xs = s;
-  size_t temp;
+       void *xs = s;
+       size_t temp;
 
-  if (!count)
-    return xs;
-  c &= 0xff;
-  c |= c << 8;
-  c |= c << 16;
-  if ((long) s & 1)
-    {
-      char *cs = s;
-      *cs++ = c;
-      s = cs;
-      count--;
-    }
-  if (count > 2 && (long) s & 2)
-    {
-      short *ss = s;
-      *ss++ = c;
-      s = ss;
-      count -= 2;
-    }
-  temp = count >> 2;
-  if (temp)
-    {
-      long *ls = s;
-      for (; temp; temp--)
-       *ls++ = c;
-      s = ls;
-    }
-  if (count & 2)
-    {
-      short *ss = s;
-      *ss++ = c;
-      s = ss;
-    }
-  if (count & 1)
-    {
-      char *cs = s;
-      *cs = c;
-    }
-  return xs;
+       if (!count)
+               return xs;
+       c &= 0xff;
+       c |= c << 8;
+       c |= c << 16;
+       if ((long)s & 1) {
+               char *cs = s;
+               *cs++ = c;
+               s = cs;
+               count--;
+       }
+       if (count > 2 && (long)s & 2) {
+               short *ss = s;
+               *ss++ = c;
+               s = ss;
+               count -= 2;
+       }
+       temp = count >> 2;
+       if (temp) {
+               long *ls = s;
+#if defined(__mc68020__) || defined(__mc68030__) || \
+    defined(__mc68040__) || defined(__mc68060__) || defined(__mcpu32__)
+               size_t temp1;
+               asm volatile (
+                       "       movel %1,%2\n"
+                       "       andw  #7,%2\n"
+                       "       lsrl  #3,%1\n"
+                       "       negw  %2\n"
+                       "       jmp   %%pc@(2f,%2:w:2)\n"
+                       "1:     movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "       movel %3,%0@+\n"
+                       "2:     dbra  %1,1b\n"
+                       "       clrw  %1\n"
+                       "       subql #1,%1\n"
+                       "       jpl   1b"
+                       : "=a" (ls), "=d" (temp), "=&d" (temp1)
+                       : "d" (c), "0" (ls), "1" (temp));
+#else
+               for (; temp; temp--)
+                       *ls++ = c;
+#endif
+               s = ls;
+       }
+       if (count & 2) {
+               short *ss = s;
+               *ss++ = c;
+               s = ss;
+       }
+       if (count & 1) {
+               char *cs = s;
+               *cs = c;
+       }
+       return xs;
 }
+EXPORT_SYMBOL(memset);
index 711fa743e6be7ea119d64e0e9d399f11794eeb45..6d2461237a16bace5f876c6de672e1c8deb13fd8 100644 (file)
@@ -21,67 +21,6 @@ char *strcat(char *dest, const char *src)
 }
 EXPORT_SYMBOL(strcat);
 
-void *memset(void *s, int c, size_t count)
-{
-       void *xs = s;
-       size_t temp, temp1;
-
-       if (!count)
-               return xs;
-       c &= 0xff;
-       c |= c << 8;
-       c |= c << 16;
-       if ((long)s & 1) {
-               char *cs = s;
-               *cs++ = c;
-               s = cs;
-               count--;
-       }
-       if (count > 2 && (long)s & 2) {
-               short *ss = s;
-               *ss++ = c;
-               s = ss;
-               count -= 2;
-       }
-       temp = count >> 2;
-       if (temp) {
-               long *ls = s;
-
-               asm volatile (
-                       "       movel %1,%2\n"
-                       "       andw  #7,%2\n"
-                       "       lsrl  #3,%1\n"
-                       "       negw  %2\n"
-                       "       jmp   %%pc@(2f,%2:w:2)\n"
-                       "1:     movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "       movel %3,%0@+\n"
-                       "2:     dbra  %1,1b\n"
-                       "       clrw  %1\n"
-                       "       subql #1,%1\n"
-                       "       jpl   1b"
-                       : "=a" (ls), "=d" (temp), "=&d" (temp1)
-                       : "d" (c), "0" (ls), "1" (temp));
-               s = ls;
-       }
-       if (count & 2) {
-               short *ss = s;
-               *ss++ = c;
-               s = ss;
-       }
-       if (count & 1) {
-               char *cs = s;
-               *cs = c;
-       }
-       return xs;
-}
-EXPORT_SYMBOL(memset);
-
 void *memcpy(void *to, const void *from, size_t n)
 {
        void *xto = to;