linux/arch/m68knommu/lib/memset.c
<<
>>
Prefs
   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