2021-01-12 20:41:01 +00:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
#define ALIGNED(p) (!((long)p & (sizeof(long) - 1)))
|
|
|
|
|
#define QUADBLOCKSIZE (sizeof(long) << 2)
|
|
|
|
|
#define BLOCKSIZE (sizeof(long))
|
|
|
|
|
|
|
|
|
|
static void *memcpy_r(void *dest, const void *src, size_t sz)
|
|
|
|
|
{
|
|
|
|
|
unsigned char *d = dest;
|
|
|
|
|
const unsigned char *s = src;
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < sz; i++) {
|
|
|
|
|
size_t b = sz - i - 1;
|
|
|
|
|
d[b] = s[b];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return dest;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void *memmove(void *dest, const void *src, size_t n)
|
|
|
|
|
{
|
2022-01-06 11:37:49 +00:00
|
|
|
if (dest < src) {
|
2021-01-12 20:41:01 +00:00
|
|
|
return memcpy(dest, src, n);
|
|
|
|
|
} else {
|
|
|
|
|
return memcpy_r(dest, src, n);
|
|
|
|
|
}
|
|
|
|
|
}
|