mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-13 07:03:40 +01:00
define variables in mallo.c
This commit is contained in:
parent
532cff43fb
commit
f71ceb29b4
26
src/malloc.c
26
src/malloc.c
@ -1,7 +1,7 @@
|
||||
#include "global.h"
|
||||
|
||||
extern void *gHeapStart;
|
||||
extern u32 gHeapSize;
|
||||
static void *sHeapStart;
|
||||
static u32 sHeapSize;
|
||||
|
||||
#define MALLOC_SYSTEM_ID 0xA3A3
|
||||
|
||||
@ -15,10 +15,10 @@ struct MemBlock {
|
||||
// Size of the block (not including this header struct).
|
||||
u32 size;
|
||||
|
||||
// Previous block pointer. Equals gHeapStart if this is the first block.
|
||||
// Previous block pointer. Equals sHeapStart if this is the first block.
|
||||
struct MemBlock *prev;
|
||||
|
||||
// Next block pointer. Equals gHeapStart if this is the last block.
|
||||
// Next block pointer. Equals sHeapStart if this is the last block.
|
||||
struct MemBlock *next;
|
||||
|
||||
// Data in the memory block. (Arrays of length 0 are a GNU extension.)
|
||||
@ -169,40 +169,40 @@ bool32 CheckMemBlockInternal(void *heapStart, void *pointer)
|
||||
|
||||
void InitHeap(void *heapStart, u32 heapSize)
|
||||
{
|
||||
gHeapStart = heapStart;
|
||||
gHeapSize = heapSize;
|
||||
sHeapStart = heapStart;
|
||||
sHeapSize = heapSize;
|
||||
PutFirstMemBlockHeader(heapStart, heapSize);
|
||||
}
|
||||
|
||||
void *Alloc(u32 size)
|
||||
{
|
||||
AllocInternal(gHeapStart, size);
|
||||
AllocInternal(sHeapStart, size);
|
||||
}
|
||||
|
||||
void *AllocZeroed(u32 size)
|
||||
{
|
||||
AllocZeroedInternal(gHeapStart, size);
|
||||
AllocZeroedInternal(sHeapStart, size);
|
||||
}
|
||||
|
||||
void Free(void *pointer)
|
||||
{
|
||||
FreeInternal(gHeapStart, pointer);
|
||||
FreeInternal(sHeapStart, pointer);
|
||||
}
|
||||
|
||||
bool32 CheckMemBlock(void *pointer)
|
||||
{
|
||||
return CheckMemBlockInternal(gHeapStart, pointer);
|
||||
return CheckMemBlockInternal(sHeapStart, pointer);
|
||||
}
|
||||
|
||||
bool32 CheckHeap()
|
||||
{
|
||||
struct MemBlock *pos = (struct MemBlock *)gHeapStart;
|
||||
struct MemBlock *pos = (struct MemBlock *)sHeapStart;
|
||||
|
||||
do {
|
||||
if (!CheckMemBlockInternal(gHeapStart, pos->data))
|
||||
if (!CheckMemBlockInternal(sHeapStart, pos->data))
|
||||
return FALSE;
|
||||
pos = pos->next;
|
||||
} while (pos != (struct MemBlock *)gHeapStart);
|
||||
} while (pos != (struct MemBlock *)sHeapStart);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1,12 +1,9 @@
|
||||
gUnknown_03000000: @ 3000000
|
||||
.space 0x4
|
||||
|
||||
gHeapStart: @ 3000004
|
||||
.space 0x4
|
||||
|
||||
gHeapSize: @ 3000008
|
||||
.space 0x8
|
||||
.include "src/malloc.o"
|
||||
|
||||
.align 4
|
||||
gDma3Requests: @ 3000010
|
||||
.space 0xC
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user