micropython/stm/malloc0.c

57 lines
1.0 KiB
C
Raw Normal View History

2013-10-13 00:42:20 +01:00
#include <stdint.h>
#include "std.h"
2013-10-21 23:46:04 +01:00
#include "mpyconfig.h"
#include "gc.h"
2013-10-13 00:42:20 +01:00
2013-10-21 23:46:04 +01:00
#if 0
2013-10-13 00:42:20 +01:00
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?)
2013-10-13 00:42:20 +01:00
}
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) {
}
2013-10-21 23:46:04 +01:00
void *realloc(void *ptr, size_t n) {
return malloc(n);
}
#endif
2013-10-13 00:42:20 +01:00
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;
}
2013-10-21 23:46:04 +01:00
void *malloc(size_t n) {
return gc_alloc(n);
}
void free(void *ptr) {
gc_free(ptr);
2013-10-21 23:46:04 +01:00
}
2013-10-13 00:42:20 +01:00
void *realloc(void *ptr, size_t n) {
2013-10-21 23:46:04 +01:00
return gc_realloc(ptr, n);
2013-10-13 00:42:20 +01:00
}
void __assert_func() {
printf("\nASSERT FAIL!");
for (;;) {
}
}