aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/lib/memset.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-25 20:47:58 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-25 20:47:58 -0400
commitffbf0ab1a648b867ce953cc43557090f679bb9c1 (patch)
treedf90a9fe3b46b636d977e9aa993efe5588436d1c /arch/m68k/lib/memset.c
parent73939bb56acef1c9e776a10f0aeea0456d6815f6 (diff)
parent66d857b08b8c3ed5c72c361f863cce77d2a978d7 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: m68k: merge m68k and m68knommu arch directories
Diffstat (limited to 'arch/m68k/lib/memset.c')
-rw-r--r--arch/m68k/lib/memset.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/arch/m68k/lib/memset.c b/arch/m68k/lib/memset.c
new file mode 100644
index 000000000000..1389bf455633
--- /dev/null
+++ b/arch/m68k/lib/memset.c
@@ -0,0 +1,47 @@
1#include <linux/types.h>
2
3void * memset(void * s, int c, size_t count)
4{
5 void *xs = s;
6 size_t temp;
7
8 if (!count)
9 return xs;
10 c &= 0xff;
11 c |= c << 8;
12 c |= c << 16;
13 if ((long) s & 1)
14 {
15 char *cs = s;
16 *cs++ = c;
17 s = cs;
18 count--;
19 }
20 if (count > 2 && (long) s & 2)
21 {
22 short *ss = s;
23 *ss++ = c;
24 s = ss;
25 count -= 2;
26 }
27 temp = count >> 2;
28 if (temp)
29 {
30 long *ls = s;
31 for (; temp; temp--)
32 *ls++ = c;
33 s = ls;
34 }
35 if (count & 2)
36 {
37 short *ss = s;
38 *ss++ = c;
39 s = ss;
40 }
41 if (count & 1)
42 {
43 char *cs = s;
44 *cs = c;
45 }
46 return xs;
47}