summaryrefslogtreecommitdiff
path: root/src/lib.c
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-02-03 14:36:26 -0500
committerFreya Murphy <freya@freyacat.org>2024-02-03 14:41:52 -0500
commit8e74123683072deed9ecd29e76037a16a47e3295 (patch)
tree2a4d6394688ed23b9360ff87c8d9861ab40da01d /src/lib.c
parentrefactor exception panic (diff)
downloadcorn-8e74123683072deed9ecd29e76037a16a47e3295.tar.gz
corn-8e74123683072deed9ecd29e76037a16a47e3295.tar.bz2
corn-8e74123683072deed9ecd29e76037a16a47e3295.zip
alloc on write paging, -O3 compile works, 'volatile' is the story of my life
Diffstat (limited to '')
-rw-r--r--src/lib.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib.c b/src/lib.c
index bd8e335..f91cbc2 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -15,6 +15,13 @@ void *memcpy(void *restrict dest, const void *restrict src, unsigned long n) {
return dest;
}
+volatile void *memcpyv(volatile void *dest, const volatile void *src, unsigned long n) {
+ volatile char *d = dest;
+ const volatile char *s = src;
+ for (; n; n--) *d++ = *s++;
+ return dest;
+}
+
void *memmove(void *dest, const void *src, unsigned long n) {
char *d = dest;
const char *s = src;
@@ -38,6 +45,14 @@ void *memset(void *restrict dest, int c, unsigned long n) {
return dest;
}
+volatile void *memsetv(volatile void *dest, int c, unsigned long n) {
+ volatile unsigned char *d = dest;
+ for (; n; n--) {
+ *d++ = c;
+ };
+ return dest;
+}
+
int strncmp(const char *restrict lhs, const char *restrict rhs, unsigned long n) {
const unsigned char *l=(void *)lhs, *r=(void *)rhs;
if (!n--) return 0;