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}
48