37 lines
725 B
C
37 lines
725 B
C
#include <stddef.h>
|
|
#include "include/string_volatile.h"
|
|
|
|
volatile void *memmove_volatile(volatile void *dst, const volatile void *src, volatile size_t n) {
|
|
volatile char *d = dst;
|
|
volatile const char *s = src;
|
|
if(s < d) {
|
|
d += n;
|
|
s += n;
|
|
while(n--) {
|
|
*--d = *--s;
|
|
}
|
|
} else {
|
|
while(n--) {
|
|
*d++ = *s++;
|
|
}
|
|
}
|
|
return dst;
|
|
}
|
|
|
|
volatile void *memset_volatile(volatile void *dest, int c, volatile size_t n) {
|
|
volatile unsigned char *d = dest;
|
|
while(n--) {
|
|
*d++ = c;
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
volatile void *memcpy_volatile(volatile void *restrict dst, const volatile void *restrict src, volatile size_t n) {
|
|
volatile char *d = dst;
|
|
volatile const char *s = src;
|
|
while(n--) {
|
|
*d++ = *s++;
|
|
}
|
|
return dst;
|
|
}
|