PageRenderTime 19ms CodeModel.GetById 15ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/m68knommu/lib/memset.c

https://bitbucket.org/evzijst/gittest
C | 47 lines | 45 code | 2 blank | 0 comment | 8 complexity | 86532b5936e23040124c8865b16f276f MD5 | raw file
 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}