diff options
-rw-r--r-- | demo_functionality.c | 11 | ||||
-rw-r--r-- | strings.c | 15 | ||||
-rw-r--r-- | strings.h | 2 |
3 files changed, 17 insertions, 11 deletions
diff --git a/demo_functionality.c b/demo_functionality.c index 051ffd6..7a9139c 100644 --- a/demo_functionality.c +++ b/demo_functionality.c @@ -110,17 +110,6 @@ void demo_setup_PL0(void) puts("copied PL0 code to it's section"); } -// needed for array initialization in demo_go_unprivileged() -void *memset(void *s, int c, size_t n) -{ - char *mem = s; - - for (size_t i = 0; i < n; i++) - mem[i] = c; - - return s; -} - void demo_go_unprivileged(void) { uint32_t PL0_regs[14] = {0}; @@ -91,3 +91,18 @@ void memcpy(void *dst, void *src, size_t nbytes) for (iter *= 4; iter < nbytes; iter++) ((volatile uint8_t*) dst)[iter] = ((uint8_t*) src)[iter]; } + +// keep in mind memset is also needed for array initialization, like +// uint32_t buf[16] = {0}; +// gcc compiles this to memset call + +void *memset(void *s, int c, size_t n) +{ + volatile char *mem = s; + + for (size_t i = 0; i < n; i++) + mem[i] = c; + + return s; +} + @@ -26,4 +26,6 @@ size_t strlen(char string[]); void memcpy(void *dst, void *src, size_t nbytes); +void *memset(void *s, int c, size_t n); + #endif // STRINGS_H |