Adding upstream version 6.02~pre8+dfsg.
[syslinux-debian/hramrach.git] / memdisk / memset.c
blobaa00b5b167afbda94b1126c8391b30448914c881
1 /*
2 * memset.c
3 */
5 #include <string.h>
6 #include <stdint.h>
8 void *memset(void *dst, int c, size_t n)
10 char *q = dst;
12 #if defined(__i386__)
13 size_t nl = n >> 2;
14 asm volatile ("cld ; rep ; stosl ; movl %3,%0 ; rep ; stosb"
15 : "+c" (nl), "+D" (q)
16 : "a" ((unsigned char)c * 0x01010101U), "r" (n & 3));
17 #elif defined(__x86_64__)
18 size_t nq = n >> 3;
19 asm volatile ("cld ; rep ; stosq ; movl %3,%%ecx ; rep ; stosb"
20 :"+c" (nq), "+D" (q)
21 : "a" ((unsigned char)c * 0x0101010101010101U),
22 "r" ((uint32_t) n & 7));
23 #else
24 while (n--) {
25 *q++ = c;
27 #endif
29 return dst;