xref: /inferno-os/libkern/memmove.c (revision 715a866f4203b352703247b51de6e9e29894384b)
1 #include	<lib9.h>
2 
3 /* for testing only */
4 void*
memcpy(void * a1,void * a2,ulong n)5 memcpy(void *a1, void *a2, ulong n)
6 {
7 	return memmove(a1, a2, n);
8 }
9 
10 void*
memmove(void * a1,void * a2,ulong n)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