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

volatile void *memmovev(volatile void *dest, const volatile void *src, size_t n)
{
	volatile char *d = dest;
	volatile 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;
}