1*37da2899SCharles.Forsyth #include <lib9.h>
2*37da2899SCharles.Forsyth
3*37da2899SCharles.Forsyth /* for testing only */
4*37da2899SCharles.Forsyth void*
memcpy(void * a1,void * a2,ulong n)5*37da2899SCharles.Forsyth memcpy(void *a1, void *a2, ulong n)
6*37da2899SCharles.Forsyth {
7*37da2899SCharles.Forsyth return memmove(a1, a2, n);
8*37da2899SCharles.Forsyth }
9*37da2899SCharles.Forsyth
10*37da2899SCharles.Forsyth void*
memmove(void * a1,void * a2,ulong n)11*37da2899SCharles.Forsyth memmove(void *a1, void *a2, ulong n)
12*37da2899SCharles.Forsyth {
13*37da2899SCharles.Forsyth int m = (int)n;
14*37da2899SCharles.Forsyth uchar *s, *d;
15*37da2899SCharles.Forsyth
16*37da2899SCharles.Forsyth d = a1;
17*37da2899SCharles.Forsyth s = a2;
18*37da2899SCharles.Forsyth if(d > s){
19*37da2899SCharles.Forsyth s += m;
20*37da2899SCharles.Forsyth d += m;
21*37da2899SCharles.Forsyth while(--m >= 0)
22*37da2899SCharles.Forsyth *--d = *--s;
23*37da2899SCharles.Forsyth }
24*37da2899SCharles.Forsyth else{
25*37da2899SCharles.Forsyth while(--m >= 0)
26*37da2899SCharles.Forsyth *d++ = *s++;
27*37da2899SCharles.Forsyth }
28*37da2899SCharles.Forsyth return a1;
29*37da2899SCharles.Forsyth }
30