Fully match malloc.c
This commit is contained in:
parent
237bf72a2c
commit
33cc13b687
4 changed files with 60 additions and 4 deletions
|
|
@ -5952,7 +5952,7 @@ lbl_801D3B0C = .sbss:0x801D3B0C; // type:object size:0x4 data:4byte
|
|||
lbl_801D3B10 = .sbss:0x801D3B10; // type:object size:0x4 data:4byte
|
||||
lbl_801D3B14 = .sbss:0x801D3B14; // type:object size:0x4 data:4byte
|
||||
lbl_801D3B18 = .sbss:0x801D3B18; // type:object size:0x4 data:4byte
|
||||
lbl_801D3B1C = .sbss:0x801D3B1C; // type:object size:0x4 data:4byte
|
||||
currentHeapHandle = .sbss:0x801D3B1C; // type:object size:0x4 data:4byte
|
||||
lbl_801D3B20 = .sbss:0x801D3B20; // type:object size:0x8 data:4byte
|
||||
lbl_801D3B28 = .sbss:0x801D3B28; // type:object size:0x4 data:4byte
|
||||
lbl_801D3B2C = .sbss:0x801D3B2C; // type:object size:0x2 data:2byte
|
||||
|
|
|
|||
|
|
@ -222,7 +222,8 @@ config.libs = [
|
|||
"cflags": cflags_game,
|
||||
"host": False,
|
||||
"objects": [
|
||||
Object(NonMatching, "game/malloc.c"),
|
||||
Object(Matching, "game/malloc.c"),
|
||||
Object(NonMatching, "game/memory.c"),
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,5 +28,11 @@ void HuMemDCFlush(int heap);
|
|||
|
||||
void *HuMemHeapInit(void *ptr, u32 size);
|
||||
void *HuMemMemoryAlloc(void *heap_ptr, u32 size, void *retaddr);
|
||||
void *HuMemMemoryAllocNum(void *heap_ptr, u32 size, u32 num, void *retaddr);
|
||||
void HuMemMemoryFree(void *ptr, void *retaddr);
|
||||
void HuMemMemoryFreeNum(void *heap_ptr, u32 num, void *retaddr);
|
||||
u32 HuMemUsedMemorySizeGet(void *heap_ptr);
|
||||
u32 HuMemUsedMemoryBlockGet(void *heap_ptr);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
#include "common.h"
|
||||
|
||||
extern int __OSCurrHeap;
|
||||
extern int currentHeapHandle;
|
||||
|
||||
static u32 HeapSizeTbl[5] = { 0x240000, 0x140000, 0xA80000, 0x580000, 0x6B1C0 };
|
||||
static u32 HeapSizeTbl[5] = { 0x240000, 0x140000, 0xA80000, 0x580000, 0 };
|
||||
static void *HeapTbl[5];
|
||||
|
||||
void HuMemInitAll(void)
|
||||
|
|
@ -18,7 +19,7 @@ void HuMemInitAll(void)
|
|||
}
|
||||
HeapTbl[i] = HuMemInit(ptr, HeapSizeTbl[i]);
|
||||
}
|
||||
free_size = OSCheckHeap(__OSCurrHeap);
|
||||
free_size = OSCheckHeap(currentHeapHandle);
|
||||
OSReport("HuMem> left memory space %dKB(%d)\n", free_size/1024, free_size);
|
||||
ptr = OSAllocFromHeap(__OSCurrHeap, free_size);
|
||||
if(ptr == NULL) {
|
||||
|
|
@ -55,3 +56,51 @@ void *HuMemDirectMalloc(int heap, u32 size)
|
|||
size = (size+31) & 0xFFFFFFE0;
|
||||
return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr);
|
||||
}
|
||||
|
||||
void *HuMemDirectMallocNum(int heap, u32 size, u32 num)
|
||||
{
|
||||
register void *retaddr;
|
||||
asm {
|
||||
mflr retaddr
|
||||
}
|
||||
size = (size+31) & 0xFFFFFFE0;
|
||||
return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr);
|
||||
}
|
||||
|
||||
void HuMemDirectFree(void *ptr)
|
||||
{
|
||||
register void *retaddr;
|
||||
asm {
|
||||
mflr retaddr
|
||||
}
|
||||
HuMemMemoryFree(ptr, retaddr);
|
||||
}
|
||||
|
||||
void HuMemDirectFreeNum(int heap, u32 num)
|
||||
{
|
||||
register void *retaddr;
|
||||
asm {
|
||||
mflr retaddr
|
||||
}
|
||||
HuMemMemoryFreeNum(HeapTbl[heap], num, retaddr);
|
||||
}
|
||||
|
||||
u32 HuMemUsedMallocSizeGet(int heap)
|
||||
{
|
||||
return HuMemUsedMemorySizeGet(HeapTbl[heap]);
|
||||
}
|
||||
|
||||
u32 HuMemUsedMallocBlockGet(int heap)
|
||||
{
|
||||
return HuMemUsedMemoryBlockGet(HeapTbl[heap]);
|
||||
}
|
||||
|
||||
u32 HuMemHeapSizeGet(int heap)
|
||||
{
|
||||
return HeapSizeTbl[heap];
|
||||
}
|
||||
|
||||
void *HuMemHeapPtrGet(int heap)
|
||||
{
|
||||
return HeapTbl[heap];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue