#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; | |
} |