summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-08-09 20:45:25 -0400
committerGitHub <noreply@github.com>2023-08-09 20:45:25 -0400
commitcfa703f013a1e595a418e47ac05df06e9ae4f9b8 (patch)
tree6f22ff1f665ac5dfd8f62b321895f846af4bfab5 /src/boot
parentbd0c96e41818de39d243604f2a56bdee779956f2 (diff)
`malloc.c` (#42)
* malloc * match * bss * Fix naming * move __osMalloc to libc64 folder * move headers to libc64 folder
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/libc64/__osMalloc.c (renamed from src/boot/O2/__osMalloc.c)2
-rw-r--r--src/boot/libc64/malloc.c51
-rw-r--r--src/boot/ovlmgr.c2
3 files changed, 53 insertions, 2 deletions
diff --git a/src/boot/O2/__osMalloc.c b/src/boot/libc64/__osMalloc.c
index e30509e..3a4ae94 100644
--- a/src/boot/O2/__osMalloc.c
+++ b/src/boot/libc64/__osMalloc.c
@@ -1,4 +1,4 @@
-#include "osmalloc.h"
+#include "libc64/osmalloc.h"
#include "alignment.h"
#include "boot_functions.h"
#include "fault.h"
diff --git a/src/boot/libc64/malloc.c b/src/boot/libc64/malloc.c
new file mode 100644
index 0000000..c079153
--- /dev/null
+++ b/src/boot/libc64/malloc.c
@@ -0,0 +1,51 @@
+#include "libc64/malloc.h"
+#include "libc64/osmalloc.h"
+
+Arena malloc_arena;
+
+void* malloc(size_t size) {
+ return __osMalloc(&malloc_arena, size);
+}
+
+void* malloc_r(size_t size) {
+ return __osMallocR(&malloc_arena, size);
+}
+
+void* realloc(void* ptr, size_t size) {
+ return __osRealloc(&malloc_arena, ptr, size);
+}
+
+void free(void* ptr) {
+ __osFree(&malloc_arena, ptr);
+}
+
+void* calloc(s32 num, size_t size) {
+ void* ptr;
+ u32 n = num * size;
+
+ ptr = __osMalloc(&malloc_arena, n);
+ if (ptr != NULL) {
+ bzero(ptr, n);
+ }
+ return ptr;
+}
+
+void GetFreeArena(size_t* outMaxFree, size_t* outFree, size_t* outAlloc) {
+ __osGetFreeArena(&malloc_arena, outMaxFree, outFree, outAlloc);
+}
+
+s32 CheckArena(void) {
+ return __osCheckArena(&malloc_arena);
+}
+
+void MallocInit(void* heap, size_t size) {
+ __osMallocInit(&malloc_arena, heap, size);
+}
+
+void MallocCleanup(void) {
+ __osMallocCleanup(&malloc_arena);
+}
+
+s32 MallocIsInitialized(void) {
+ return __osMallocIsInitalized(&malloc_arena);
+}
diff --git a/src/boot/ovlmgr.c b/src/boot/ovlmgr.c
index 3d53ba4..5963228 100644
--- a/src/boot/ovlmgr.c
+++ b/src/boot/ovlmgr.c
@@ -3,7 +3,7 @@
#include "attributes.h"
#include "fault.h"
#include "loadfragment.h"
-#include "malloc.h"
+#include "libc64/malloc.h"
#include "m_malloc.h"
#include "sprintf.h"
#include "z_std_dma.h"