diff options
Diffstat (limited to 'arch/m68k/lib/memset.c')
| -rw-r--r-- | arch/m68k/lib/memset.c | 47 | 
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 @@ +#include <linux/types.h> + +void * memset(void * s, int c, size_t count) +{ +  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; +}  | 
