summaryrefslogtreecommitdiff
path: root/euler/source/std/cstdlib.cpp
blob: cfb4b48182c23e9f1b7d250aae74919c0cf13728 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <euler/heap.hpp>
#include <cstdlib>

extern "C" [[noreturn]] void abort() noexcept {
  //TODO
  while (1)
    ;
}

extern "C" void *malloc(size_t size) {
  size_t *block = (size_t *)euler::heap::get_block(size + 8);
  *block = size;
  return block + 1;
}

extern "C" void free(void *ptr) {
  size_t *block = (size_t *)ptr - 1;
  euler::heap::return_block(block, *block + 8);
}