xref: /inferno-os/libkern/memmove.c (revision 49c7e6d3dd79dc7807b70e8f149798f28319957c)
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