summaryrefslogtreecommitdiff
path: root/lib/memmovev.c
blob: d2fc6835d463116366e10b65cbfac23cce794c72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string.h>

void *memmovev(volatile void *dest, const volatile void *src, size_t n)
{
	char *d = dest;
	const char *s = src;

	if (d == s)
		return d;

	if (d < s) {
		for (; n; n--)
			*d++ = *s++;
	} else {
		while (n)
			n--, d[n] = s[n];
	}

	return dest;
}