blob: 45528abaa364dd897c106d979f8c37b6d994ea50 [file] [log] [blame]
Martin Rothfb8876d2022-08-07 15:12:12 -06001/* SPDX-License-Identifier: GPL-2.0-only */
2
Eric Biederman5cd81732004-03-11 15:01:31 +00003#include <string.h>
4void *memmove(void *vdest, const void *vsrc, size_t count)
5{
6 const char *src = vsrc;
7 char *dest = vdest;
Eric Biederman5cd81732004-03-11 15:01:31 +00008
9 if (dest <= src) {
Lee Leahy2f919ec2017-03-08 17:37:06 -080010 while (count--)
Eric Biederman5cd81732004-03-11 15:01:31 +000011 *dest++ = *src++;
Eric Biederman5cd81732004-03-11 15:01:31 +000012 } else {
13 src += count - 1;
14 dest += count - 1;
Lee Leahy45fde702017-03-08 18:02:24 -080015 while (count--)
Eric Biederman5cd81732004-03-11 15:01:31 +000016 *dest-- = *src--;
Eric Biederman5cd81732004-03-11 15:01:31 +000017 }
18 return vdest;
19}