diff options
Diffstat (limited to 'arm7/asm/OS_alloc.s')
-rw-r--r-- | arm7/asm/OS_alloc.s | 433 |
1 files changed, 0 insertions, 433 deletions
diff --git a/arm7/asm/OS_alloc.s b/arm7/asm/OS_alloc.s deleted file mode 100644 index 1c174548..00000000 --- a/arm7/asm/OS_alloc.s +++ /dev/null @@ -1,433 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global OSiHeapInfo -OSiHeapInfo: ;0x038078F8 - .space 0x0380791C - 0x038078F8 - - .section .text - - arm_func_start OS_CheckHeap -OS_CheckHeap: ; 0x037F9D88 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, #0 - mov r5, r6 - mvn r4, #0 - bl OS_DisableInterrupts - ldr r1, _037F9F34 ; =OSiHeapInfo - ldr ip, [r1, r8, lsl #2] - mov r1, r4 - cmp r7, r1 - ldreq r7, [ip] - ldr r2, [ip, #16] - cmp r2, #0 - beq _037F9F24 - cmp r7, #0 - blt _037F9F24 - ldr r1, [ip, #4] - cmp r7, r1 - bge _037F9F24 - mov r1, #12 - mul r1, r7, r1 - add r3, r2, r1 - ldr r2, [r2, r1] - cmp r2, #0 - blt _037F9F24 - ldr r1, [r3, #8] - cmp r1, #0 - beq _037F9E70 - ldr r7, [r1] - cmp r7, #0 - bne _037F9F24 - b _037F9E70 -_037F9E0C: - ldr r7, [ip, #8] - cmp r7, r1 - bhi _037F9F24 - ldr r7, [ip, #12] - cmp r1, r7 - bcs _037F9F24 - ands r7, r1, #31 - bne _037F9F24 - ldr lr, [r1, #4] - cmp lr, #0 - beq _037F9E44 - ldr r7, [lr] - cmp r7, r1 - bne _037F9F24 -_037F9E44: - ldr r7, [r1, #8] - cmp r7, #64 ; 0x40 - bcc _037F9F24 - ands r1, r7, #31 - bne _037F9F24 - add r6, r6, r7 - cmp r6, #0 - ble _037F9F24 - cmp r6, r2 - bgt _037F9F24 - mov r1, lr -_037F9E70: - cmp r1, #0 - bne _037F9E0C - ldr r1, [r3, #4] - cmp r1, #0 - beq _037F9F14 - ldr r3, [r1] - cmp r3, #0 - bne _037F9F24 - b _037F9F14 -_037F9E94: - ldr r3, [ip, #8] - cmp r3, r1 - bhi _037F9F24 - ldr r3, [ip, #12] - cmp r1, r3 - bcs _037F9F24 - ands r3, r1, #31 - bne _037F9F24 - ldr lr, [r1, #4] - cmp lr, #0 - beq _037F9ECC - ldr r3, [lr] - cmp r3, r1 - bne _037F9F24 -_037F9ECC: - ldr r7, [r1, #8] - cmp r7, #64 ; 0x40 - bcc _037F9F24 - ands r3, r7, #31 - bne _037F9F24 - cmp lr, #0 - beq _037F9EF4 - add r1, r1, r7 - cmp r1, lr - bcs _037F9F24 -_037F9EF4: - add r6, r6, r7 - sub r1, r7, #32 - add r5, r5, r1 - cmp r6, #0 - ble _037F9F24 - cmp r6, r2 - bgt _037F9F24 - mov r1, lr -_037F9F14: - cmp r1, #0 - bne _037F9E94 - cmp r6, r2 - moveq r4, r5 -_037F9F24: - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr -_037F9F34: .word OSiHeapInfo - - arm_func_start OS_CreateHeap -OS_CreateHeap: ; 0x037F9F38 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r4, r0 - mov r6, r1 - mov r5, r2 - bl OS_DisableInterrupts - ldr r1, _037F9FDC ; =OSiHeapInfo - ldr r7, [r1, r4, lsl #2] - add r1, r6, #31 - bic r6, r1, #31 - bic r5, r5, #31 - mov r4, #0 - ldr lr, [r7, #4] - mov r1, #12 - b _037F9FC0 -_037F9F74: - ldr r3, [r7, #16] - mul r2, r4, r1 - add ip, r3, r2 - ldr r2, [r3, r2] - cmp r2, #0 - bge _037F9FBC - sub r1, r5, r6 - str r1, [ip] - mov r2, #0 - str r2, [r6] - str r2, [r6, #4] - ldr r1, [ip] - str r1, [r6, #8] - str r6, [ip, #4] - str r2, [ip, #8] - bl OS_RestoreInterrupts - mov r0, r4 - b _037F9FD0 -_037F9FBC: - add r4, r4, #1 -_037F9FC0: - cmp r4, lr - blt _037F9F74 - bl OS_RestoreInterrupts - mvn r0, #0 -_037F9FD0: - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_037F9FDC: .word OSiHeapInfo - - arm_func_start OS_InitAlloc -OS_InitAlloc: ; 0x037F9FE0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r5, r1 - mov r4, r2 - mov r6, r3 - bl OS_DisableInterrupts - ldr r1, _037FA084 ; =OSiHeapInfo - str r5, [r1, r7, lsl #2] - mov r2, #12 - mul r1, r6, r2 - add r3, r5, #20 - str r3, [r5, #16] - str r6, [r5, #4] - mov r8, #0 - mvn lr, #0 - mov ip, r8 - b _037FA044 -_037FA024: - ldr r6, [r5, #16] - mul r3, r8, r2 - add r7, r6, r3 - str lr, [r6, r3] - str ip, [r7, #8] - ldr r3, [r7, #8] - str r3, [r7, #4] - add r8, r8, #1 -_037FA044: - ldr r3, [r5, #4] - cmp r8, r3 - blt _037FA024 - mvn r2, #0 - str r2, [r5] - ldr r2, [r5, #16] - add r1, r2, r1 - add r1, r1, #31 - bic r1, r1, #31 - str r1, [r5, #8] - bic r1, r4, #31 - str r1, [r5, #12] - bl OS_RestoreInterrupts - ldr r0, [r5, #8] - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr -_037FA084: .word OSiHeapInfo - - arm_func_start OS_SetCurrentHeap -OS_SetCurrentHeap: ; 0x037FA088 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r4, r0 - mov r5, r1 - bl OS_DisableInterrupts - ldr r1, _037FA0C0 ; =OSiHeapInfo - ldr r1, [r1, r4, lsl #2] - ldr r4, [r1] - str r5, [r1] - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r4, r5, lr} - bx lr -_037FA0C0: .word OSiHeapInfo - - arm_func_start OS_FreeToHeap -OS_FreeToHeap: ; 0x037FA0C4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r7, r0 - mov r4, r1 - mov r6, r2 - bl OS_DisableInterrupts - mov r5, r0 - ldr r0, _037FA134 ; =OSiHeapInfo - ldr r0, [r0, r7, lsl #2] - cmp r4, #0 - ldrlt r4, [r0] - sub r6, r6, #32 - ldr r1, [r0, #16] - mov r0, #12 - mla r7, r4, r0, r1 - ldr r0, [r7, #8] - mov r1, r6 - bl DLExtract - str r0, [r7, #8] - ldr r0, [r7, #4] - mov r1, r6 - bl DLInsert - str r0, [r7, #4] - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_037FA134: .word OSiHeapInfo - - arm_func_start OS_AllocFromHeap -OS_AllocFromHeap: ; 0x037FA138 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r6, r0 - mov r5, r1 - mov r7, r2 - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _037FA24C ; =OSiHeapInfo - ldr r1, [r1, r6, lsl #2] - cmp r1, #0 - bne _037FA170 - bl OS_RestoreInterrupts - mov r0, #0 - b _037FA240 -_037FA170: - cmp r5, #0 - ldrlt r5, [r1] - ldr r1, [r1, #16] - mov r0, #12 - mla r6, r5, r0, r1 - add r0, r7, #32 - add r0, r0, #31 - bic r7, r0, #31 - ldr r0, [r6, #4] - mov r5, r0 - b _037FA1AC -_037FA19C: - ldr r1, [r5, #8] - cmp r7, r1 - ble _037FA1B4 - ldr r5, [r5, #4] -_037FA1AC: - cmp r5, #0 - bne _037FA19C -_037FA1B4: - cmp r5, #0 - bne _037FA1CC - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0 - b _037FA240 -_037FA1CC: - ldr r1, [r5, #8] - sub r1, r1, r7 - cmp r1, #64 ; 0x40 - bcs _037FA1EC - mov r1, r5 - bl DLExtract - str r0, [r6, #4] - b _037FA224 -_037FA1EC: - str r7, [r5, #8] - add r2, r5, r7 - str r1, [r2, #8] - ldr r0, [r5] - str r0, [r5, r7] - ldr r0, [r5, #4] - str r0, [r2, #4] - ldr r0, [r2, #4] - cmp r0, #0 - strne r2, [r0] - ldr r0, [r2] - cmp r0, #0 - strne r2, [r0, #4] - streq r2, [r6, #4] -_037FA224: - ldr r0, [r6, #8] - mov r1, r5 - bl DLAddFront - str r0, [r6, #8] - mov r0, r4 - bl OS_RestoreInterrupts - add r0, r5, #32 -_037FA240: - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_037FA24C: .word OSiHeapInfo - - arm_func_start DLInsert -DLInsert: ; 0x037FA250 - stmfd sp!, {lr} - sub sp, sp, #4 - mov ip, r0 - mov lr, #0 - b _037FA274 -_037FA264: - cmp r1, ip - bls _037FA27C - mov lr, ip - ldr ip, [ip, #4] -_037FA274: - cmp ip, #0 - bne _037FA264 -_037FA27C: - str ip, [r1, #4] - str lr, [r1] - cmp ip, #0 - beq _037FA2BC - str r1, [ip] - ldr r3, [r1, #8] - add r2, r1, r3 - cmp r2, ip - bne _037FA2BC - ldr r2, [ip, #8] - add r2, r3, r2 - str r2, [r1, #8] - ldr ip, [ip, #4] - str ip, [r1, #4] - cmp ip, #0 - strne r1, [ip] -_037FA2BC: - cmp lr, #0 - beq _037FA2F4 - str r1, [lr, #4] - ldr r2, [lr, #8] - add r3, lr, r2 - cmp r3, r1 - bne _037FA2F8 - ldr r1, [r1, #8] - add r1, r2, r1 - str r1, [lr, #8] - str ip, [lr, #4] - cmp ip, #0 - strne lr, [ip] - b _037FA2F8 -_037FA2F4: - mov r0, r1 -_037FA2F8: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr - - arm_func_start DLExtract -DLExtract: ; 0x037FA304 - ldr r3, [r1, #4] - cmp r3, #0 - ldrne r2, [r1] - strne r2, [r3] - ldr r2, [r1] - cmp r2, #0 - ldreq r0, [r1, #4] - ldrne r1, [r1, #4] - strne r1, [r2, #4] - bx lr - - arm_func_start DLAddFront -DLAddFront: ; 0x037FA32C - str r0, [r1, #4] - mov r2, #0 - str r2, [r1] - cmp r0, #0 - strne r1, [r0] - mov r0, r1 - bx lr |