summaryrefslogtreecommitdiff
path: root/teensy/malloc0.c
diff options
context:
space:
mode:
authorDave Hylands <dhylands@gmail.com>2014-01-06 00:20:11 -0800
committerJohn R. Lenton <jlenton@gmail.com>2014-01-07 22:51:08 +0000
commitb6e9c7c6970971cc0aeadd38cdf287352c97ddf6 (patch)
treeb9755f0fddff8f943ebafe33305a921bcfce0b5a /teensy/malloc0.c
parentb59fa2da28e13d4b38ff799bc330dd6291a49ff7 (diff)
Initial support for Teensy 3.1
Diffstat (limited to 'teensy/malloc0.c')
-rw-r--r--teensy/malloc0.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/teensy/malloc0.c b/teensy/malloc0.c
new file mode 100644
index 000000000..1a6cb708e
--- /dev/null
+++ b/teensy/malloc0.c
@@ -0,0 +1,57 @@
+#include <stdint.h>
+#include "std.h"
+#include "mpconfig.h"
+#include "gc.h"
+
+#if 0
+static uint32_t mem = 0;
+
+void *malloc(size_t n) {
+ if (mem == 0) {
+ extern uint32_t _heap_start;
+ mem = (uint32_t)&_heap_start; // need to use big ram block so we can execute code from it (is it true that we can't execute from CCM?)
+ }
+ void *ptr = (void*)mem;
+ mem = (mem + n + 3) & (~3);
+ if (mem > 0x20000000 + 0x18000) {
+ void __fatal_error(const char*);
+ __fatal_error("out of memory");
+ }
+ return ptr;
+}
+
+void free(void *ptr) {
+}
+
+void *realloc(void *ptr, size_t n) {
+ return malloc(n);
+}
+
+#endif
+
+void *calloc(size_t sz, size_t n) {
+ char *ptr = malloc(sz * n);
+ for (int i = 0; i < sz * n; i++) {
+ ptr[i] = 0;
+ }
+ return ptr;
+}
+
+void *malloc(size_t n) {
+ void *m = gc_alloc(n);
+ return m;
+}
+
+void free(void *ptr) {
+ gc_free(ptr);
+}
+
+void *realloc(void *ptr, size_t n) {
+ return gc_realloc(ptr, n);
+}
+
+void __assert_func(void) {
+ printf("\nASSERT FAIL!");
+ for (;;) {
+ }
+}