summaryrefslogtreecommitdiff
path: root/src/heapbar.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/heapbar.S')
-rw-r--r--src/heapbar.S37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/heapbar.S b/src/heapbar.S
index 4e728e2..45dcc19 100644
--- a/src/heapbar.S
+++ b/src/heapbar.S
@@ -46,6 +46,7 @@ doHeapBar:
ori r3, r3, GameHeap1@l
lwz r3, 0(r3)
li r4, HEAP_EGGRootMEM1
+ li r5, 0
bl asmProcessHeap
#lwz r3, 0x1C(this)
@@ -55,12 +56,14 @@ doHeapBar:
ori r3, r3, GameHeap2@l
lwz r3, 0(r3)
li r4, HEAP_EGGRootMEM2
+ li r5, 0
bl asmProcessHeap
lis r3, ArchiveHeap@h
ori r3, r3, ArchiveHeap@l
lwz r3, 0(r3)
li r4, HEAP_Archive
+ li r5, 0
bl asmProcessHeap
lis r3, dSys_c__RootHeapMEM2@h
@@ -84,18 +87,21 @@ doHeapBar:
blr
+.global asmProcessHeap
asmProcessHeap:
- stwu sp, -0x10(sp)
+ stwu sp, -0x20(sp)
mflr r0
- stw r0, 0x14(sp)
+ stw r0, 0x24(sp)
- stw r31, 0xC(sp)
- stw r30, 0x8(sp)
+ stw r31, 0x1C(sp)
+ stw r30, 0x18(sp)
+ stw r29, 0x14(sp)
mr r31, r3
mr r30, r4
+ mr r29, r5
# get all the required data from the heap
# cppProcessHeap(u32 freeSize, u32 heapSize, int heapID, char *name)
@@ -119,16 +125,29 @@ asmProcessHeap:
sub r4, r8, r7 # heapSize = heapEnd - heapStart probably
# now do it
+ cmpwi r29, 1
+ beq justreport
bl cppProcessHeap
-
- lwz r30, 0x8(sp)
- lwz r31, 0xC(sp)
- lwz r0, 0x14(sp)
+ b gdhbdgdfg
+justreport:
+ mr r5, r4
+ mr r4, r3
+ lis r3, dgdfgdfg@h
+ ori r3, r3, dgdfgdfg@l
+ crclr 4*cr1+eq
+ bl OSReport
+gdhbdgdfg:
+
+ lwz r29, 0x14(sp)
+ lwz r30, 0x18(sp)
+ lwz r31, 0x1C(sp)
+ lwz r0, 0x24(sp)
mtlr r0
- addi sp, sp, 0x10
+ addi sp, sp, 0x20
blr
.data
THE_THING: .string "A thing: %x - %x and %x\n"
+dgdfgdfg: .string "FREE: %x SIZE: %x\n"
.align 4