diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | lib/string.c | 38 | ||||
-rw-r--r-- | lib/string.h | 10 | ||||
-rw-r--r-- | setup.c | 6 |
4 files changed, 5 insertions, 51 deletions
@@ -14,7 +14,7 @@ CFLAGS = -std=c11 $(WARNINGS) -O2 -flto -MMD -MP -ffreestanding -nostdlib -Ilib LDFLAGS = -T layout.ld -O2 -flto -ffreestanding -nostdlib ASFLAGS = $(TARGET_ARCH) -OBJ := crt0.o vectors.o flashconf.o setup.o fmk.o lib/string.o lib/le.o usb/usb.o usb/endpt0.o usb/endpt1.o +OBJ := crt0.o vectors.o flashconf.o setup.o fmk.o lib/le.o usb/usb.o usb/endpt0.o usb/endpt1.o %.bin: % $(OBJCOPY) -O binary $< $@ diff --git a/lib/string.c b/lib/string.c deleted file mode 100644 index 25935b3..0000000 --- a/lib/string.c +++ /dev/null @@ -1,38 +0,0 @@ -#include <string.h> -#include <stddef.h> - -void *memcpy(void * restrict _dest, const void * restrict _src, size_t n) -{ - unsigned char *dest = _dest; - const unsigned char *src = _src; - - for (size_t i = 0; i < n; i++) - dest[i] = src[i]; - - return dest; -} - -void *memmove(void *_dest, const void *_src, size_t n) -{ - unsigned char *dest = _dest; - const unsigned char *src = _src; - - if (_src < _dest) { - for (size_t i = 0; i < n; i++) - dest[i] = src[i]; - } else { - for (size_t i = n; i > 0; i++) - dest[i - 1] = src[i - 1]; - } - - return dest; -} - -void *memset(void *_s, int _c, size_t n) -{ - unsigned char *s = _s, c = (unsigned char)_c; - for (size_t i = 0; i < n; i++) - s[i] = c; - - return _s; -} diff --git a/lib/string.h b/lib/string.h deleted file mode 100644 index 9c204dd..0000000 --- a/lib/string.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef LIB_STRING_H -#define LIB_STRING_H - -#include <stddef.h> - -void *memcpy(void * restrict dest, const void * restrict src, size_t n); -void *memmove(void *dest, const void *src, size_t n); -void *memset(void *s, int c, size_t n); - -#endif /* LIB_STRING_H */ @@ -31,8 +31,10 @@ void setup(void) UNSET_BIT(WDOG_STCTRLH, STCTRLH_WDOGEN); /* Copy data and clear bss */ - memcpy(_sdata, _ldata, _edata - _sdata); - memset(_sbss, 0, _ebss - _sbss); + for (size_t i = 0; i < (size_t)(_edata - _sdata); i++) + _sdata[i] = _ldata[i]; + for (size_t i = 0; i < (size_t)(_ebss - _sbss); i++) + _sbss[i] = 0; /* Enable port clocks */ SIM_SCGC5 |= BV(SCGC5_PORTE) | BV(SCGC5_PORTD) | BV(SCGC5_PORTC) |