xref: /inferno-os/libkern/memmove.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 #include	<lib9.h>
2 
3 /* for testing only */
4 void*
5 memcpy(void *a1, void *a2, ulong n)
6 {
7 	return memmove(a1, a2, n);
8 }
9 
10 void*
11 memmove(void *a1, void *a2, ulong n)
12 {
13 	int m = (int)n;
14 	uchar *s, *d;
15 
16 	d = a1;
17 	s = a2;
18 	if(d > s){
19 		s += m;
20 		d += m;
21 		while(--m >= 0)
22 			*--d = *--s;
23 	}
24 	else{
25 		while(--m >= 0)
26 			*d++ = *s++;
27 	}
28 	return a1;
29 }
30 
31 /*
32 void
33 memset(void *a1, int c, ulong n)
34 {
35 	int m = (int)n;
36 	uchar *d;
37 
38 	d = a1;
39 	while(--m >= 0)
40 		*d++ = c;
41 }
42 */
43 
44