diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2018-02-12 11:23:59 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2018-02-12 11:23:59 -0500 |
commit | 100cb2f84ac5c44a904f7d7145cdc2ce1dcf59ba (patch) | |
tree | 73079f311b8ff81069bfd615eed0b55c52a5e4b6 /src/heap.c | |
parent | 025ed8530ce92d4a2282af8bba1b9e3e93afbb99 (diff) |
libinterp, actually works
Diffstat (limited to 'src/heap.c')
-rw-r--r-- | src/heap.c | 44 |
1 files changed, 28 insertions, 16 deletions
@@ -1,23 +1,35 @@ #include <heap.h> #include <stm32l476xx.h> -#define HEAP_SIZE (16 * 1024) - -static uint32_t offset = 0; +#define HEAP_SIZE (64 * 1024) uint8_t heap[HEAP_SIZE]; -void heap_init(void) +void *_sbrk(int inc) { - // what to do... -} + static uint8_t *hend; + uint8_t *prev; -uint32_t heap_available(void) -{ - return HEAP_SIZE - offset; + if (hend == 0) + hend = heap; + + prev = hend; + hend += inc; + + return prev; } -void *malloc(uint32_t size) +//void heap_init(void) +//{ + // what to do... +//} + +//uint32_t heap_available(void) +//{ +// return HEAP_SIZE - offset; +//} + +/*void *malloc(uint32_t size) { void *alloc = &heap[offset]; offset += size; @@ -26,11 +38,11 @@ void *malloc(uint32_t size) void *calloc(uint32_t count, uint32_t size) { - /*uint32_t total = count * size; - void *alloc = hmalloc(total); - for (uint32_t i = 0; i < total; i++) - ((uint8_t *)alloc)[i] = 0; - return alloc;*/ + //uint32_t total = count * size; + //void *alloc = hmalloc(total); + //for (uint32_t i = 0; i < total; i++) + // ((uint8_t *)alloc)[i] = 0; + //return alloc; // calloc broke return malloc(count * size); @@ -39,4 +51,4 @@ void *calloc(uint32_t count, uint32_t size) void free(void *ptr) { (void)ptr; -} +}*/ |