summaryrefslogtreecommitdiff
path: root/include/memory.h
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-08-10 05:15:50 -0400
committerGitHub <noreply@github.com>2019-08-10 05:15:50 -0400
commit9e969601456fb0ef392910d505e0e0673a902bd3 (patch)
treeaf8fdeb1c6cdf9cd8584f0d693a4049bfc408b9d /include/memory.h
parent250a331df9dbd312d572aaf0d629503417cfc9d4 (diff)
parentba6f243c728de5d5c024aeb177026bcc59909e2e (diff)
Merge pull request #4 from nullableVoidPtr/master
Overhaul
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..4b1e587
--- /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;
+ struct HeapDescriptor *parentHeap;
+ 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 HeapMemoryBlock *, u32);
+
+#endif // GUARD_MEMORY_H