From 8d08b8e80440b310e623c0ae397065bf28d94d1e Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 12 Nov 2020 21:47:53 +0100 Subject: Traced some issues; disabled malloc alignment --- libc/mem.c | 53 +++++++++++++++++++++++++++-------------------------- libc/print.c | 5 ++--- 2 files changed, 29 insertions(+), 29 deletions(-) (limited to 'libc') diff --git a/libc/mem.c b/libc/mem.c index e87089f..ba7795f 100644 --- a/libc/mem.c +++ b/libc/mem.c @@ -58,29 +58,29 @@ int memcmp(const void *s1, const void *s2, u32 n) #ifdef kernel -#define ALIGNMENT 16ul -#define ALIGN_TYPE char -#define ALIGN_INFO sizeof(ALIGN_TYPE) * 16 - -#define ALIGN(ptr) \ - if (ALIGNMENT > 1) { \ - u32 diff; \ - ptr = (void *)((u32)ptr + ALIGN_INFO); \ - diff = (u32)ptr & (ALIGNMENT - 1); \ - if (diff != 0) { \ - diff = ALIGNMENT - diff; \ - ptr = (void *)((u32)ptr + diff); \ - } \ - *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)) = diff + ALIGN_INFO; \ - } - -#define UNALIGN(ptr) \ - if (ALIGNMENT > 1) { \ - u32 diff = *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)); \ - if (diff < (ALIGNMENT + ALIGN_INFO)) { \ - ptr = (void *)((u32)ptr - diff); \ - } \ - } +/* #define ALIGNMENT 1ul */ +/* #define ALIGN_TYPE char */ +/* #define ALIGN_INFO sizeof(ALIGN_TYPE) * 16 */ + +/* #define ALIGN(ptr) \ */ +/* if (ALIGNMENT > 1) { \ */ +/* u32 diff; \ */ +/* ptr = (void *)((u32)ptr + ALIGN_INFO); \ */ +/* diff = (u32)ptr & (ALIGNMENT - 1); \ */ +/* if (diff != 0) { \ */ +/* diff = ALIGNMENT - diff; \ */ +/* ptr = (void *)((u32)ptr + diff); \ */ +/* } \ */ +/* *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)) = diff + ALIGN_INFO; \ */ +/* } */ + +/* #define UNALIGN(ptr) \ */ +/* if (ALIGNMENT > 1) { \ */ +/* u32 diff = *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)); \ */ +/* if (diff < (ALIGNMENT + ALIGN_INFO)) { \ */ +/* ptr = (void *)((u32)ptr - diff); \ */ +/* } \ */ +/* } */ static u32 *heap; static u32 index; @@ -110,13 +110,13 @@ void *malloc(u32 size) if (size < 1) return NULL; - size = size + ALIGNMENT + ALIGN_INFO; + /* size = size + ALIGNMENT + ALIGN_INFO; */ heap[index] = size; index += size + 1; void *p = (void *)(heap + index - size); - ALIGN(p); + /* ALIGN(p); */ return p; } @@ -124,7 +124,8 @@ void *malloc(u32 size) // TODO: Implement free, realloc and find_smallest_hole void free(void *ptr) { - UNALIGN(ptr); + (void)ptr; + /* UNALIGN(ptr); */ } void *realloc(void *ptr, u32 size) diff --git a/libc/print.c b/libc/print.c index 84c4975..629a410 100644 --- a/libc/print.c +++ b/libc/print.c @@ -20,7 +20,7 @@ int vsprintf(char *str, const char *format, va_list ap) int i = 0; char buf = 0; - char format_buffer[20] = "\0"; + char format_buffer[20] = { '\0' }; for (; *format; format++) { if (ready_to_format) { @@ -79,8 +79,7 @@ int vsprintf(char *str, const char *format, va_list ap) int vprintf(const char *format, va_list ap) { - char buf[1024]; - memset(buf, 0, 1024); + char buf[1024] = { 0 }; int len = vsprintf(buf, format, ap); serial_print(buf); // TODO: Remove temporary serial print return len; -- cgit v1.2.3