summaryrefslogtreecommitdiff
path: root/kernel/lib/memmovev.c
blob: 65e627861cb13913d16edb482e57874be33e20b6 (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, register 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;
}