diff options
author | Benji Dial <benji@benjidial.net> | 2024-05-18 21:53:38 -0400 |
---|---|---|
committer | Benji Dial <benji@benjidial.net> | 2024-05-18 21:53:38 -0400 |
commit | b1a912a8a6ff472a49b2e0a09cfd433adfc2cb24 (patch) | |
tree | 5009d4415ba13e4baa37f3d0271852528130fd3b /euler/source/memory | |
parent | a8a80d326de9550b2a25b1255a2093ab43219ede (diff) | |
download | hilbert-os-b1a912a8a6ff472a49b2e0a09cfd433adfc2cb24.tar.gz |
reorganization, cross compiler
Diffstat (limited to 'euler/source/memory')
-rw-r--r-- | euler/source/memory/delete.cpp | 17 | ||||
-rw-r--r-- | euler/source/memory/new.cpp | 13 |
2 files changed, 30 insertions, 0 deletions
diff --git a/euler/source/memory/delete.cpp b/euler/source/memory/delete.cpp new file mode 100644 index 0000000..e4cc288 --- /dev/null +++ b/euler/source/memory/delete.cpp @@ -0,0 +1,17 @@ +#include <euler/heap.hpp> + +void operator delete(void *ptr) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete(void *ptr, uint64_t) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete[](void *ptr) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete[](void *ptr, uint64_t) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} diff --git a/euler/source/memory/new.cpp b/euler/source/memory/new.cpp new file mode 100644 index 0000000..931328f --- /dev/null +++ b/euler/source/memory/new.cpp @@ -0,0 +1,13 @@ +#include <euler/heap.hpp> + +void *operator new(uint64_t size) { + void *ptr = euler::alloc(size + 8); + *(uint64_t *)ptr = size + 8; + return (uint8_t *)ptr + 8; +} + +void *operator new[](uint64_t size) { + void *ptr = euler::alloc(size + 8); + *(uint64_t *)ptr = size + 8; + return (uint8_t *)ptr + 8; +} |