summaryrefslogtreecommitdiff
path: root/include/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/memory.h')
-rw-r--r--include/memory.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/include/memory.h b/include/memory.h
new file mode 100644
index 0000000..99b03e0
--- /dev/null
+++ b/include/memory.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_MEMORY_H
+#define GUARD_MEMORY_H
+
+#define HEAP_SIZE 0x24000
+
+struct HeapSettings
+{
+ u8 *start;
+ u32 size;
+};
+
+struct HeapMemoryBlock {
+ u8 *start;
+ s32 size;
+ s32 allocatedSize;
+};
+
+struct HeapFreeListElement
+{
+ u32 unk_atb;
+ u32 atb;
+ u32 grp;
+ struct HeapMemoryBlock block;
+};
+
+struct HeapDescriptor
+{
+ u32 unk0;
+ u32 unk4;
+ struct HeapFreeListElement *freeList;
+ s32 freeCount;
+ u32 freeListLength;
+ u8 *start;
+ u32 size;
+};
+
+void InitHeap(void);
+
+void MemoryClear8(u8 *dest, s32 size);
+void MemoryClear16(u16 *dest, s32 size);
+void MemoryClear32(u32 *dest, s32 size);
+void MemoryFill8(u8 *dest, u8 value, s32 size);
+void MemoryFill16(u16 *dest, u16 value, s32 size);
+void MemoryFill32(u32 *dest, u32 value, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+
+void InitHeapInternal(void);
+void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
+void InitSubHeap(struct HeapDescriptor *, struct HeapFreeListElement *, u32);
+
+#endif // GUARD_MEMORY_H \ No newline at end of file