system_malloc OK (#261)

* move system_malloc to boot_O2

* Rename StartHeap into SystemArena

* match

* fake system_malloc data

* fix return types

* Rename Alloc to Malloc

* Update tools/disasm/files.txt

Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>

* fix spec

Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>
This commit is contained in:
Anghelo Carvajal
2021-08-18 08:48:08 -04:00
committed by GitHub
parent 9eb438860c
commit 49922b4856
12 changed files with 88 additions and 60 deletions
+39 -10
View File
@@ -1,21 +1,50 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_Alloc.s")
Arena gSystemArena;
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_AllocR.s")
void* SystemArena_Malloc(u32 size) {
return __osMalloc(&gSystemArena, size);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_Realloc.s")
void* SystemArena_MallocR(u32 size) {
return __osMallocR(&gSystemArena, size);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_Free.s")
void* SystemArena_Realloc(void* oldPtr, u32 newSize) {
return __osRealloc(&gSystemArena, oldPtr, newSize);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_Calloc.s")
void SystemArena_Free(void* ptr) {
__osFree(&gSystemArena, ptr);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_AnalyzeArena.s")
void* SystemArena_Calloc(u32 elements, u32 size) {
void* ptr;
u32 totalSize = elements * size;
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_CheckArena.s")
ptr = __osMalloc(&gSystemArena, totalSize);
if (ptr != NULL) {
bzero(ptr, totalSize);
}
return ptr;
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_InitArena.s")
void SystemArena_AnalyzeArena(u32* maxFreeBlock, u32* bytesFree, u32* bytesAllocated) {
__osAnalyzeArena(&gSystemArena, maxFreeBlock, bytesFree, bytesAllocated);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_Cleanup.s")
u32 SystemArena_CheckArena(void) {
return __osCheckArena(&gSystemArena);
}
#pragma GLOBAL_ASM("asm/non_matchings/boot/system_malloc/StartHeap_IsInitialized.s")
void SystemArena_InitArena(void* start, u32 size) {
__osMallocInit(&gSystemArena, start, size);
}
void SystemArena_Cleanup(void) {
__osMallocCleanup(&gSystemArena);
}
u8 SystemArena_IsInitialized(void) {
return __osMallocIsInitalized(&gSystemArena);
}