aboutsummaryrefslogtreecommitdiffstats
path: root/src/heap.c
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2018-02-12 11:23:59 -0500
committerClyne Sullivan <tullivan99@gmail.com>2018-02-12 11:23:59 -0500
commit100cb2f84ac5c44a904f7d7145cdc2ce1dcf59ba (patch)
tree73079f311b8ff81069bfd615eed0b55c52a5e4b6 /src/heap.c
parent025ed8530ce92d4a2282af8bba1b9e3e93afbb99 (diff)
libinterp, actually works
Diffstat (limited to 'src/heap.c')
-rw-r--r--src/heap.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/src/heap.c b/src/heap.c
index 746f0ef..8a18d38 100644
--- a/src/heap.c
+++ b/src/heap.c
@@ -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;
-}
+}*/