ref: c5efe5b4b9f20aed762d309f6f41c4322376a0c0
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; }