diff options
Diffstat (limited to 'arm9/asm')
-rw-r--r-- | arm9/asm/NNS_FND_allocator.s | 65 | ||||
-rw-r--r-- | arm9/asm/NNS_FND_expheap_s.s (renamed from arm9/asm/NNS_FND_expheap.s) | 210 | ||||
-rw-r--r-- | arm9/asm/NNS_FND_heapcommon.s | 112 | ||||
-rw-r--r-- | arm9/asm/NNS_FND_list.s | 169 |
4 files changed, 6 insertions, 550 deletions
diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s deleted file mode 100644 index 537ce6a0..00000000 --- a/arm9/asm/NNS_FND_allocator.s +++ /dev/null @@ -1,65 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .rodata - ; static const in function - - .global sAllocatorFunc$7864 -sAllocatorFunc$7864: ; 0x020FF7CC - .word AllocatorAllocForExpHeap - .word AllocatorFreeForExpHeap - .text - - arm_func_start NNS_FndInitAllocatorForExpHeap -NNS_FndInitAllocatorForExpHeap: ; 0x020AE82C - ldr ip, _020AE848 ; =sAllocatorFunc$7864 - mov r3, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x4] - str r2, [r0, #0x8] - str r3, [r0, #0xc] - bx lr - .balign 4 -_020AE848: .word sAllocatorFunc$7864 - arm_func_end NNS_FndInitAllocatorForExpHeap - - arm_func_start NNS_FndFreeToAllocator -NNS_FndFreeToAllocator: ; 0x020AE84C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x4] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndFreeToAllocator - - arm_func_start NNS_FndAllocFromAllocator -NNS_FndAllocFromAllocator: ; 0x020AE868 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndAllocFromAllocator - - arm_func_start AllocatorFreeForExpHeap -AllocatorFreeForExpHeap: ; 0x020AE884 - ldr ip, _020AE890 ; =NNS_FndFreeToExpHeap - ldr r0, [r0, #0x4] - bx r12 - .balign 4 -_020AE890: .word NNS_FndFreeToExpHeap - arm_func_end AllocatorFreeForExpHeap - - arm_func_start AllocatorAllocForExpHeap -AllocatorAllocForExpHeap: ; 0x020AE894 - ldr ip, _020AE8A8 ; =NNS_FndAllocFromExpHeapEx - mov r2, r0 - ldr r0, [r2, #0x4] - ldr r2, [r2, #0x8] - bx r12 - .balign 4 -_020AE8A8: .word NNS_FndAllocFromExpHeapEx - arm_func_end AllocatorAllocForExpHeap diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap_s.s index e94dba38..494e3c21 100644 --- a/arm9/asm/NNS_FND_expheap.s +++ b/arm9/asm/NNS_FND_expheap_s.s @@ -2,6 +2,12 @@ .include "global.inc" .extern NNSi_FndInitHeapHead .extern NNSi_FndFinalizeHeap + .extern GetRegionOfMBlock + .extern RemoveMBlock + .extern InsertMBlock + .extern InitMBlock + .extern InitExpHeap + .extern AllocUsedBlockFromFreeBlock .text arm_func_start NNS_FndGetSizeForMBlockExpHeap @@ -377,207 +383,3 @@ _020AE270: add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} arm_func_end AllocFromHead - - arm_func_start AllocUsedBlockFromFreeBlock -AllocUsedBlockFromFreeBlock: ; 0x020AE298 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - mov r7, r0 - add r0, sp, #0x0 - mov r8, r1 - mov r6, r2 - mov r5, r3 - bl GetRegionOfMBlock - ldr r3, [sp, #0x4] - sub r4, r6, #0x10 - add r2, r5, r6 - mov r0, r7 - mov r1, r8 - str r4, [sp, #0x4] - str r3, [sp, #0xc] - str r2, [sp, #0x8] - bl RemoveMBlock - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x4] - mov r5, r0 - sub r0, r1, r2 - cmp r0, #0x10 - strcc r2, [sp, #0x4] - blo _020AE318 - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x0 - bl InitMBlock - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl InsertMBlock - mov r5, r0 -_020AE318: - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x8] - sub r0, r1, r0 - cmp r0, #0x10 - strcc r1, [sp, #0x8] - blo _020AE34C - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x8 - bl InitMBlock - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl InsertMBlock -_020AE34C: - ldr r0, [r7, #-0x4] - ldr r1, [sp, #0x4] - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - ldr r2, [sp, #0x8] - mov r0, r0, lsr #0x10 - sub r2, r2, r1 - ands r0, r0, #0x1 - beq _020AE378 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE378: - ldr r2, [sp, #0x8] - ldr r1, _020AE41C ; =0x00005544 - add r0, sp, #0x10 - str r4, [sp, #0x10] - str r2, [sp, #0x14] - bl InitMBlock - mov r1, r0 - ldrh r3, [r1, #0x2] - ldrh r2, [sp, #0x30] - add r0, r7, #0x8 - bic r3, r3, #0x8000 - strh r3, [r1, #0x2] - ldrh r3, [r1, #0x2] - and r2, r2, #0x1 - orr r2, r3, r2, lsl #0xf - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldr r3, [sp, #0x4] - bic r2, r2, #0x7f00 - strh r2, [r1, #0x2] - sub r2, r1, r3 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - ldrh r3, [r1, #0x2] - and r2, r2, #0x7f - orr r2, r3, r2, lsl #0x8 - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldrh r3, [r7, #0x10] - bic r2, r2, #0xff - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - and r3, r3, #0xff - orr r2, r2, r3 - strh r2, [r1, #0x2] - ldr r2, [r7, #0xc] - bl InsertMBlock - mov r0, r6 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020AE418: .word 0x00004652 -_020AE41C: .word 0x00005544 - arm_func_end AllocUsedBlockFromFreeBlock - - arm_func_start InitExpHeap -InitExpHeap: ; 0x020AE420 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r3, r1 - add r4, r5, #0x24 - str r2, [sp, #0x0] - ldr r1, _020AE498 ; =0x45585048 - add r2, r4, #0x14 - bl NNSi_FndInitHeapHead - mov r0, #0x0 - strh r0, [r4, #0x10] - strh r0, [r4, #0x12] - ldrh r2, [r4, #0x12] - ldr r1, _020AE49C ; =0x00004652 - add r0, sp, #0x4 - bic r2, r2, #0x1 - strh r2, [r4, #0x12] - ldr r2, [r5, #0x18] - str r2, [sp, #0x4] - ldr r2, [r5, #0x1c] - str r2, [sp, #0x8] - bl InitMBlock - str r0, [r5, #0x24] - str r0, [r4, #0x4] - mov r1, #0x0 - str r1, [r4, #0x8] - mov r0, r5 - str r1, [r4, #0xc] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AE498: .word 0x45585048 -_020AE49C: .word 0x00004652 - arm_func_end InitExpHeap - - arm_func_start InitMBlock -InitMBlock: ; 0x020AE4A0 - ldr r3, [r0, #0x0] - mov r2, #0x0 - strh r1, [r3, #0x0] - strh r2, [r3, #0x2] - ldr r1, [r0, #0x4] - add r0, r3, #0x10 - sub r0, r1, r0 - str r0, [r3, #0x4] - str r2, [r3, #0x8] - mov r0, r3 - str r2, [r3, #0xc] - bx lr - arm_func_end InitMBlock - - arm_func_start InsertMBlock -InsertMBlock: ; 0x020AE4D0 - str r2, [r1, #0x8] - cmp r2, #0x0 - ldrne r3, [r2, #0xc] - strne r1, [r2, #0xc] - ldreq r3, [r0, #0x0] - streq r1, [r0, #0x0] - str r3, [r1, #0xc] - cmp r3, #0x0 - strne r1, [r3, #0x8] - streq r1, [r0, #0x4] - mov r0, r1 - bx lr - arm_func_end InsertMBlock - - arm_func_start RemoveMBlock -RemoveMBlock: ; 0x020AE500 - ldr r2, [r1, #0x8] - ldr r1, [r1, #0xc] - cmp r2, #0x0 - strne r1, [r2, #0xc] - streq r1, [r0, #0x0] - cmp r1, #0x0 - strne r2, [r1, #0x8] - streq r2, [r0, #0x4] - mov r0, r2 - bx lr - arm_func_end RemoveMBlock - - arm_func_start GetRegionOfMBlock -GetRegionOfMBlock: ; 0x020AE528 - ldrh r2, [r1, #0x2] - add r3, r1, #0x10 - mov r2, r2, asr #0x8 - and r2, r2, #0x7f - mov r2, r2, lsl #0x10 - sub r2, r1, r2, lsr #0x10 - str r2, [r0, #0x0] - ldr r1, [r1, #0x4] - add r1, r1, r3 - str r1, [r0, #0x4] - bx lr - arm_func_end GetRegionOfMBlock diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s deleted file mode 100644 index ca3108d2..00000000 --- a/arm9/asm/NNS_FND_heapcommon.s +++ /dev/null @@ -1,112 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global sRootListInitialized -sRootListInitialized: ; 0x021CCD38 - .space 0x4 - - .global sRootList -sRootList: ; 0x021CCD3C - .space 0xc - .text - - arm_func_start NNSi_FndFinalizeHeap -NNSi_FndFinalizeHeap: ; 0x020ADC8C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FindListContainHeap - mov r1, r4 - bl NNS_FndRemoveListObject - ldmia sp!, {r4,pc} - arm_func_end NNSi_FndFinalizeHeap - - arm_func_start NNSi_FndInitHeapHead -NNSi_FndInitHeapHead: - stmdb sp!, {r4,lr} - mov r4, r0 - str r1, [r4, #0x0] - str r2, [r4, #0x18] - str r3, [r4, #0x1c] - mov r0, #0x0 - str r0, [r4, #0x20] - ldr r1, [r4, #0x20] - ldrh r0, [sp, #0x8] - bic r1, r1, #0xff - str r1, [r4, #0x20] - ldr r1, [r4, #0x20] - and r0, r0, #0xff - orr r2, r1, r0 - add r0, r4, #0xc - mov r1, #0x4 - str r2, [r4, #0x20] - bl NNS_FndInitList - ldr r0, _020ADD28 ; =sRootListInitialized - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020ADD14 - ldr r0, _020ADD2C ; =sRootList - mov r1, #0x4 - bl NNS_FndInitList - ldr r0, _020ADD28 ; =sRootListInitialized - mov r1, #0x1 - str r1, [r0, #0x0] -_020ADD14: - mov r0, r4 - bl FindListContainHeap - mov r1, r4 - bl NNS_FndAppendListObject - ldmia sp!, {r4,pc} - .balign 4 -_020ADD28: .word sRootListInitialized -_020ADD2C: .word sRootList - arm_func_end NNSi_FndInitHeapHead - - arm_func_start FindListContainHeap -FindListContainHeap: ; 0x020ADD30 - stmdb sp!, {r4,lr} - ldr r4, _020ADD54 ; =sRootList - mov r1, r0 - mov r0, r4 - bl FindContainHeap - cmp r0, #0x0 - addne r4, r0, #0xc - mov r0, r4 - ldmia sp!, {r4,pc} - .balign 4 -_020ADD54: .word sRootList - arm_func_end FindListContainHeap - - arm_func_start FindContainHeap -FindContainHeap: - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r1, #0x0 - mov r6, r0 - bl NNS_FndGetNextListObject - movs r4, r0 - beq _020ADDB8 -_020ADD74: - ldr r0, [r4, #0x18] - cmp r0, r5 - bhi _020ADDA4 - ldr r0, [r4, #0x1c] - cmp r5, r0 - bhs _020ADDA4 - mov r1, r5 - add r0, r4, #0xc - bl FindContainHeap - cmp r0, #0x0 - moveq r0, r4 - ldmia sp!, {r4-r6,pc} -_020ADDA4: - mov r0, r6 - mov r1, r4 - bl NNS_FndGetNextListObject - movs r4, r0 - bne _020ADD74 -_020ADDB8: - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - arm_func_end FindContainHeap diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s deleted file mode 100644 index 21999c11..00000000 --- a/arm9/asm/NNS_FND_list.s +++ /dev/null @@ -1,169 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .text - - arm_func_start NNS_FndGetPrevListObject -NNS_FndGetPrevListObject: ; 0x020ADA84 - cmp r1, #0x0 - ldreq r0, [r0, #0x4] - ldrneh r0, [r0, #0xa] - ldrne r0, [r1, r0] - bx lr - arm_func_end NNS_FndGetPrevListObject - - arm_func_start NNS_FndGetNextListObject -NNS_FndGetNextListObject: ; 0x020ADA98 - cmp r1, #0x0 - ldreq r0, [r0, #0x0] - ldrneh r0, [r0, #0xa] - addne r0, r1, r0 - ldrne r0, [r0, #0x4] - bx lr - arm_func_end NNS_FndGetNextListObject - - arm_func_start NNS_FndRemoveListObject -NNS_FndRemoveListObject: ; 0x020ADAB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xa] - ldr r3, [r1, r12] - add lr, r1, r12 - cmp r3, #0x0 - ldreq r1, [lr, #0x4] - streq r1, [r0, #0x0] - ldrne r2, [lr, #0x4] - addne r1, r3, r12 - strne r2, [r1, #0x4] - ldr r3, [lr, #0x4] - cmp r3, #0x0 - ldreq r1, [lr, #0x0] - streq r1, [r0, #0x4] - ldrneh r1, [r0, #0xa] - ldrne r2, [lr, #0x0] - strne r2, [r3, r1] - mov r1, #0x0 - str r1, [lr, #0x0] - str r1, [lr, #0x4] - ldrh r1, [r0, #0x8] - sub r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndRemoveListObject - - arm_func_start NNS_FndInsertListObject -NNS_FndInsertListObject: ; 0x020ADB18 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - bne _020ADB38 - mov r1, r2 - bl NNS_FndAppendListObject - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB38: - ldr r3, [r0, #0x0] - cmp r1, r3 - bne _020ADB54 - mov r1, r2 - bl NNS_FndPrependListObject - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB54: - ldrh lr, [r0, #0xa] - ldr r3, [r1, lr] - add r12, r2, lr - str r3, [r2, lr] - str r1, [r12, #0x4] - add r3, r3, lr - str r2, [r3, #0x4] - ldrh r3, [r0, #0xa] - str r2, [r1, r3] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndInsertListObject - - arm_func_start NNS_FndPrependListObject -NNS_FndPrependListObject: ; 0x020ADB8C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADBAC - bl SetFirstObject - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADBAC: - ldrh r3, [r0, #0xa] - mov r2, #0x0 - str r2, [r1, r3] - ldr r2, [r0, #0x0] - add r3, r1, r3 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x0] - str r1, [r3, r2] - str r1, [r0, #0x0] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndPrependListObject - - arm_func_start NNS_FndAppendListObject -NNS_FndAppendListObject: ; 0x020ADBE8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADC08 - bl SetFirstObject - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADC08: - ldrh r12, [r0, #0xa] - ldr r3, [r0, #0x4] - mov r2, #0x0 - str r3, [r1, r12] - add r3, r1, r12 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x4] - add r2, r3, r2 - str r1, [r2, #0x4] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end NNS_FndAppendListObject - - arm_func_start SetFirstObject -SetFirstObject: ; 0x020ADC48 - ldrh r3, [r0, #0xa] - mov r2, #0x0 - add r12, r1, r3 - str r2, [r12, #0x4] - str r2, [r1, r3] - str r1, [r0, #0x0] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - bx lr - arm_func_end SetFirstObject - - arm_func_start NNS_FndInitList -NNS_FndInitList: ; 0x020ADC74 - mov r2, #0x0 - str r2, [r0, #0x0] - str r2, [r0, #0x4] - strh r2, [r0, #0x8] - strh r1, [r0, #0xa] - bx lr - arm_func_end NNS_FndInitList |