diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/heapbar.S | 37 |
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 |