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