ref: d4f4b292ca9c8665ef938036340ff32bf5128755
dir: /libkern/memmove.c/
#include <lib9.h> /* for testing only */ void* memcpy(void *a1, void *a2, ulong n) { return memmove(a1, a2, n); } void* memmove(void *a1, void *a2, ulong n) { int m = (int)n; uchar *s, *d; d = a1; s = a2; if(d > s){ s += m; d += m; while(--m >= 0) *--d = *--s; } else{ while(--m >= 0) *d++ = *s++; } return a1; }