diff --git a/drivers/rkflash/rk_sftl_arm_v7.S b/drivers/rkflash/rk_sftl_arm_v7.S index a8119e884d35..4fa6a0a457c8 100644 --- a/drivers/rkflash/rk_sftl_arm_v7.S +++ b/drivers/rkflash/rk_sftl_arm_v7.S @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2018 Rockchip Electronics Co. Ltd. - * date: 2020-09-25 +/* Copyright (c) 2018-2023 Rockchip Electronics Co. Ltd. + * date: 2023-04-11 */ .arch armv7-a .eabi_attribute 20, 1 @@ -14,133 +14,220 @@ .eabi_attribute 34, 1 .eabi_attribute 18, 2 .file "rk_sftl.c" + .text .syntax divided .syntax unified .global __aeabi_uidiv .arm .syntax unified - .text .align 2 .syntax unified .arm .fpu softvfp .type l2p_addr_tran, %function l2p_addr_tran: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L4 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r8, r1 - ldr r6, [r0, #4] - mov r9, r2 - ldrh r4, [r3, #8] - ldrh r5, [r3, #10] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L3 + mov r7, r1 + mov r8, r2 + ldrh r9, [r3, #8] + ldrh r6, [r3, #10] ldrh r3, [r3, #14] - lsr r7, r6, #10 - ubfx r6, r6, #0, #10 - uxth r0, r7 - uxth r7, r7 cmp r3, #4 - lsreq r4, r4, #1 - lsleq r5, r5, #1 - mov r1, r4 - uxtheq r5, r5 + lsleq r4, r6, #1 + lsreq r9, r9, #1 + mov r1, r9 + uxtheq r6, r4 + ldr r4, [r0, #4] + lsr r5, r4, #10 + ubfx r0, r4, #10, #16 bl __aeabi_uidiv uxth r0, r0 - mls r4, r0, r4, r7 - mla r4, r5, r4, r6 - str r4, [r8] - str r0, [r9] + uxth r5, r5 + ubfx r4, r4, #0, #10 + mls r5, r0, r9, r5 + mla r4, r6, r5, r4 + str r4, [r7] + str r0, [r8] mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L5: - .align 2 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} .L4: + .align 2 +.L3: .word .LANCHOR0 - .fnend .size l2p_addr_tran, .-l2p_addr_tran .align 2 + .syntax unified + .arm + .fpu softvfp + .type _copy_from_user, %function +_copy_from_user: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + mov r3, sp + bic ip, r3, #8128 + mov r6, r0 + bic ip, ip, #63 + mov r4, r2 + ldr r3, [ip, #8] + .syntax divided +@ 157 "./include/linux/uaccess.h" 1 + .syntax unified +adds r5, r1, r2; sbcscc r5, r5, r3; movcc r3, #0 +@ 0 "" 2 + .arm + .syntax unified + cmp r3, #0 + bne .L8 + .syntax divided +@ 89 "./arch/arm/include/asm/domain.h" 1 + mrc p15, 0, r7, c3, c0 @ get domain +@ 0 "" 2 + .arm + .syntax unified + bic r3, r7, #12 + orr r3, r3, #4 + .syntax divided +@ 99 "./arch/arm/include/asm/domain.h" 1 + mcr p15, 0, r3, c3, c0 @ set domain +@ 0 "" 2 +@ 102 "./arch/arm/include/asm/domain.h" 1 + isb +@ 0 "" 2 + .arm + .syntax unified + bl arm_copy_from_user + mov r5, r0 + .syntax divided +@ 99 "./arch/arm/include/asm/domain.h" 1 + mcr p15, 0, r7, c3, c0 @ set domain +@ 0 "" 2 +@ 102 "./arch/arm/include/asm/domain.h" 1 + isb +@ 0 "" 2 + .arm + .syntax unified + cmp r0, #0 + beq .L5 +.L6: + sub r4, r4, r5 + mov r2, r5 + add r0, r6, r4 + mov r1, #0 + bl memset +.L5: + mov r0, r5 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L8: + mov r5, r2 + b .L6 + .size _copy_from_user, .-_copy_from_user + .section .rodata.str1.1,"aMS",%progbits,1 +.LC0: + .ascii "SFTL version: 5.0.59 20221121\000" +.LC1: + .ascii "\012%s\012\000" +.LC2: + .ascii "act blk: %x %x %x %x %x %x\012\000" +.LC3: + .ascii "buf blk: %x %x %x %x %x %x\012\000" +.LC4: + .ascii "tmp blk: %x %x %x %x %x %x\012\000" +.LC5: + .ascii "gc blk: %x %x %x %x %x %x\012\000" +.LC6: + .ascii "free blk: %x %x %x\012\000" + .text + .align 2 .global ftl_print_sblk_info .syntax unified .arm .fpu softvfp .type ftl_print_sblk_info, %function ftl_print_sblk_info: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r3, r4, lr} - .save {r4, lr} - .pad #16 - ldr r4, .L8 - ldr r1, .L8+4 - ldr r0, .L8+8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #20 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L13 + ldr r1, .L13+4 + ldr r0, .L13+8 bl sftl_printk + ldr r0, .L13+12 ldrh r1, [r4, #24] - ldr ip, [r4, #72] - ldrb r3, [r4, #30] @ zero_extendqisi2 + ldr r2, [r4, #72] + lsl r3, r1, #1 + ldrh r3, [r2, r3] + str r3, [sp, #8] + ldrh r3, [r4, #28] + str r3, [sp, #4] + ldrb r3, [r4, #32] @ zero_extendqisi2 ldrh r2, [r4, #26] - lsl r0, r1, #1 - ldrh r0, [ip, r0] - str r0, [sp, #8] - ldrh r0, [r4, #28] - str r0, [sp, #4] - ldrb r0, [r4, #32] @ zero_extendqisi2 - str r0, [sp] - ldr r0, .L8+12 + str r3, [sp] + ldrb r3, [r4, #30] @ zero_extendqisi2 bl sftl_printk ldrh r1, [r4, #76] - ldr ip, [r4, #72] - ldrb r3, [r4, #82] @ zero_extendqisi2 + ldr r2, [r4, #72] + ldr r0, .L13+16 + lsl r3, r1, #1 + ldrh r3, [r2, r3] + str r3, [sp, #8] + ldrh r3, [r4, #80] + str r3, [sp, #4] + ldrb r3, [r4, #84] @ zero_extendqisi2 ldrh r2, [r4, #78] - lsl r0, r1, #1 - ldrh r0, [ip, r0] - str r0, [sp, #8] - ldrh r0, [r4, #80] - str r0, [sp, #4] - ldrb r0, [r4, #84] @ zero_extendqisi2 - str r0, [sp] - ldr r0, .L8+16 + str r3, [sp] + ldrb r3, [r4, #82] @ zero_extendqisi2 bl sftl_printk ldrh r1, [r4, #124] - ldr ip, [r4, #72] - ldrb r3, [r4, #130] @ zero_extendqisi2 + ldr r2, [r4, #72] + ldr r0, .L13+20 + lsl r3, r1, #1 + ldrh r3, [r2, r3] + str r3, [sp, #8] + ldrh r3, [r4, #128] + str r3, [sp, #4] + ldrb r3, [r4, #132] @ zero_extendqisi2 ldrh r2, [r4, #126] - lsl r0, r1, #1 - ldrh r0, [ip, r0] - str r0, [sp, #8] - ldrh r0, [r4, #128] - str r0, [sp, #4] - ldrb r0, [r4, #132] @ zero_extendqisi2 - str r0, [sp] - ldr r0, .L8+20 + str r3, [sp] + ldrb r3, [r4, #130] @ zero_extendqisi2 bl sftl_printk ldrh r1, [r4, #172] - ldr ip, [r4, #72] - ldrb r3, [r4, #178] @ zero_extendqisi2 + ldr r2, [r4, #72] + ldr r0, .L13+24 + lsl r3, r1, #1 + ldrh r3, [r2, r3] + str r3, [sp, #8] + ldrh r3, [r4, #176] + str r3, [sp, #4] + ldrb r3, [r4, #180] @ zero_extendqisi2 ldrh r2, [r4, #174] - lsl r0, r1, #1 - ldrh r0, [ip, r0] - str r0, [sp, #8] - ldrh r0, [r4, #176] - str r0, [sp, #4] - ldrb r0, [r4, #180] @ zero_extendqisi2 - str r0, [sp] - ldr r0, .L8+24 + str r3, [sp] + ldrb r3, [r4, #178] @ zero_extendqisi2 bl sftl_printk ldrh r3, [r4, #220] ldrh r2, [r4, #222] ldrh r1, [r4, #224] - ldr r0, .L8+28 - add sp, sp, #16 - @ sp needed - pop {r4, lr} - b sftl_printk -.L9: + ldr r0, .L13+28 + bl sftl_printk + sub sp, fp, #16 + ldmfd sp, {r4, fp, sp, pc} +.L14: .align 2 -.L8: +.L13: .word .LANCHOR0 .word .LC0 .word .LC1 @@ -149,7 +236,6 @@ ftl_print_sblk_info: .word .LC4 .word .LC5 .word .LC6 - .fnend .size ftl_print_sblk_info, .-ftl_print_sblk_info .align 2 .global Ftl_log2 @@ -158,24 +244,26 @@ ftl_print_sblk_info: .fpu softvfp .type Ftl_log2, %function Ftl_log2: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r1, #0 mov r2, #1 -.L11: - cmp r2, r0 +.L16: uxth r3, r1 + cmp r2, r0 add r1, r1, #1 - bls .L12 + bls .L17 sub r0, r3, #1 uxth r0, r0 - bx lr -.L12: + ldmfd sp, {fp, sp, pc} +.L17: lsl r2, r2, #1 - b .L11 - .fnend + b .L16 .size Ftl_log2, .-Ftl_log2 .align 2 .global FtlPrintInfo @@ -184,12 +272,14 @@ Ftl_log2: .fpu softvfp .type FtlPrintInfo, %function FtlPrintInfo: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - bx lr - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldmfd sp, {fp, sp, pc} .size FtlPrintInfo, .-FtlPrintInfo .align 2 .global FtlSysBlkNumInit @@ -198,11 +288,14 @@ FtlPrintInfo: .fpu softvfp .type FtlSysBlkNumInit, %function FtlSysBlkNumInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L15 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L20 cmp r0, #24 movcc r0, #24 ldrh r2, [r3, #232] @@ -211,17 +304,16 @@ FtlSysBlkNumInit: mul r2, r0, r2 sub r0, r1, r0 ldr r1, [r3, #248] - strh r0, [r3, #240] @ movhi - mov r0, #0 str r2, [r3, #236] + strh r0, [r3, #240] @ movhi sub r2, r1, r2 + mov r0, #0 str r2, [r3, #244] - bx lr -.L16: + ldmfd sp, {fp, sp, pc} +.L21: .align 2 -.L15: +.L20: .word .LANCHOR0 - .fnend .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .global __aeabi_idiv .align 2 @@ -231,172 +323,168 @@ FtlSysBlkNumInit: .fpu softvfp .type FtlConstantsInit, %function FtlConstantsInit: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - mov r3, r0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldrh ip, [r3, #14] - movw r5, #258 - ldr r4, .L32 - ldrh r0, [r0] - cmp ip, #4 - ldrh r7, [r3, #2] - ldrh lr, [r3, #4] - add r1, r4, #256 - ldrh r2, [r3, #6] - strh r0, [r4, #252] @ movhi - strh r7, [r4, #254] @ movhi - strh lr, [r1] @ movhi - strh r2, [r4, #242] @ movhi - strh ip, [r4, r5] @ movhi - bne .L18 - lsr r2, r2, #1 - strh r2, [r4, #242] @ movhi - mov r2, #8 - strh r2, [r4, r5] @ movhi -.L19: - ldr ip, .L32+4 - mov r2, #0 -.L20: - strb r2, [r2, ip] - add r2, r2, #1 - cmp r2, #32 - bne .L20 - ldr r2, .L32+8 - cmp r0, #1 - mov ip, #5 - ldrh r5, [r4, #242] - ldr r8, .L32+12 - mov lr, #0 - strh ip, [r2] @ movhi - movw ip, #294 - strheq r0, [r2] @ movhi - mov r2, #640 - ldrh r0, [r1] - mov r6, r8 - strh r2, [r6], #4 @ movhi - movw r2, #298 - strh lr, [r4, ip] @ movhi - str r3, [sp, #4] - smulbb r7, r7, r0 - smulbb r0, r0, r5 - uxth r7, r7 - uxth r0, r0 - strh r7, [r4, #232] @ movhi - strh r0, [r4, r2] @ movhi - bl Ftl_log2 - ldr r3, [sp, #4] - movw r2, #302 - strh r0, [r6] @ movhi - mov r6, r8 - add r8, r8, #24 - ldrh r10, [r3, #12] - strh r10, [r4, r2] @ movhi - movw r2, #306 - smulbb r1, r7, r10 - strh r10, [r8, #-16] @ movhi - strh r1, [r4, r2] @ movhi - movw r2, #258 - ldrh fp, [r4, r2] - mov r0, fp - bl Ftl_log2 - lsl r2, fp, #9 - ldr r3, [sp, #4] - movw r1, #310 - strh r0, [r6, #12]! @ movhi - uxth r2, r2 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L36 mov r9, r0 - mov r0, #5120 - strh r2, [r4, r1] @ movhi - lsr r2, r2, #8 - mul r1, r10, fp - strh r2, [r8, #-8] @ movhi - ldrh r2, [r3, #20] - movw r3, #314 + ldrh r2, [r0] + movw lr, #258 + add r1, r4, #256 + ldrh r6, [r0, #2] + ldrh ip, [r0, #4] + ldrh r3, [r0, #6] + ldrh r0, [r0, #14] + strh r2, [r4, #252] @ movhi + cmp r0, #4 + strh r6, [r4, #254] @ movhi + strh ip, [r1] @ movhi + strh r3, [r4, #242] @ movhi + strh r0, [r4, lr] @ movhi + bne .L23 + lsr r3, r3, #1 + strh r3, [r4, #242] @ movhi + mov r3, #8 + strh r3, [r4, lr] @ movhi +.L24: + ldr r0, .L36+4 + mov r3, #0 +.L25: + strb r3, [r0], #1 + add r3, r3, #1 + cmp r3, #32 + bne .L25 + movw r3, #294 + ldr r5, .L36+8 + ldrh r7, [r4, #242] + mov r0, #0 + strh r0, [r4, r3] @ movhi + mov r3, r5 + ldrh r0, [r1] + cmp r2, #1 + mov r8, r5 + add r5, r5, #28 + movne r2, #5 + strh r2, [r3], #4 @ movhi + mov r2, #640 + smulbb r6, r6, r0 + strh r2, [r3] @ movhi + smulbb r0, r0, r7 + movw r3, #298 + uxth r6, r6 + strh r6, [r4, #232] @ movhi + uxth r0, r0 + strh r0, [r4, r3] @ movhi + bl Ftl_log2 + ldrh r2, [r9, #12] + movw r3, #302 + strh r0, [r5, #-20] @ movhi + strh r2, [r5, #-16] @ movhi strh r2, [r4, r3] @ movhi - mul r3, r5, r7 - lsl r5, r5, #6 + movw r3, #306 + smulbb r1, r6, r2 + str r2, [fp, #-52] + strh r1, [r4, r3] @ movhi + movw r3, #258 + ldrh r1, [r4, r3] + str r1, [fp, #-48] + mov r0, r1 + bl Ftl_log2 + ldr r1, [fp, #-48] + ldr r2, [fp, #-52] + mov r10, r0 + strh r0, [r8, #16]! @ movhi + movw r0, #310 + lsl r3, r1, #9 + uxth r3, r3 + strh r3, [r4, r0] @ movhi + ldrh r0, [r9, #20] + mul r1, r2, r1 + lsr r3, r3, #8 + strh r3, [r5, #-8] @ movhi + movw r3, #314 + strh r0, [r4, r3] @ movhi + mul r3, r7, r6 str r3, [r4, #248] - mul r3, fp, r3 - mul r3, r10, r3 + mov r0, #5120 + lsl r7, r7, #6 + mul r3, r1, r3 asr r3, r3, #11 str r3, [r4, #316] bl __aeabi_idiv - uxth r0, r0 - movw r2, #322 - mov r1, r7 cmp r0, #4 - movls r3, #4 - strhhi r0, [r8] @ movhi - strhls r3, [r8] @ movhi + movw r2, #322 + strhgt r0, [r5] @ movhi + movle r3, #4 + strhle r3, [r5] @ movhi mov r3, #640 - asr r3, r3, r9 - add r9, r9, #9 - asr r5, r5, r9 - ldrh r0, [r8] + mov r1, r6 + asr r3, r3, r10 + add r10, r10, #9 add r3, r3, #2 strh r3, [r4, r2] @ movhi - ldr r3, .L32+16 - strh r5, [r3] @ movhi - uxth r5, r5 - mul r3, r7, r5 - add r5, r5, #8 + ldr r3, .L36+12 + asr r7, r7, r10 + ldrh r0, [r5] + strh r7, [r3] @ movhi + uxth r7, r7 + mul r3, r7, r6 str r3, [r4, #328] bl __aeabi_uidiv - uxtah r0, r5, r0 - cmp r7, #1 - addeq r0, r0, #4 - str r0, [r4, #228] + cmp r6, #1 + uxtah r7, r7, r0 + addne r7, r7, #8 + addeq r7, r7, #12 + str r7, [r4, #228] ldrh r0, [r4, #228] bl FtlSysBlkNumInit ldr r3, [r4, #228] - mov r0, #0 - str r0, [r4, #340] str r3, [r4, #332] - ldr r3, [r4, #244] - lsl r2, r3, #2 movw r3, #302 + ldr r2, [r4, #244] + mov r0, #0 ldrh r3, [r4, r3] - mul r3, r3, r2 - ldrh r2, [r6] + str r0, [r4, #340] + mul r3, r2, r3 + ldrh r2, [r8] add r2, r2, #9 + lsl r3, r3, #2 lsr r3, r3, r2 - ldr r2, .L32+20 + ldr r2, .L36+16 add r3, r3, #2 strh r3, [r2] @ movhi - mov r2, #32 movw r3, #338 + mov r2, #32 strh r2, [r4, r3] @ movhi - ldrh r3, [r8] + ldrh r3, [r5] add r3, r3, #3 - strh r3, [r8] @ movhi + strh r3, [r5] @ movhi ldr r3, [r4, #328] add r3, r3, #3 str r3, [r4, #328] - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L18: - cmp lr, #1 - cmpeq ip, #8 - lsreq r2, r2, #1 - strheq r2, [r4, #242] @ movhi - moveq r2, #2 - strheq r2, [r1] @ movhi - b .L19 -.L33: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L23: + cmp r0, #8 + cmpeq ip, #1 + lsreq r3, r3, #1 + strheq r3, [r4, #242] @ movhi + moveq r3, #2 + strheq r3, [r1] @ movhi + b .L24 +.L37: .align 2 -.L32: +.L36: .word .LANCHOR0 .word .LANCHOR0+260 .word .LANCHOR0+292 - .word .LANCHOR0+296 .word .LANCHOR0+324 .word .LANCHOR0+336 - .fnend .size FtlConstantsInit, .-FtlConstantsInit .align 2 .global IsBlkInVendorPart @@ -405,36 +493,38 @@ FtlConstantsInit: .fpu softvfp .type IsBlkInVendorPart, %function IsBlkInVendorPart: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L41 - add r3, r2, #344 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L44 + mov r1, r0 + add r2, r3, #344 + ldrh r0, [r2] + cmp r0, #0 + ldmfdeq sp, {fp, sp, pc} + ldr r2, [r3, #348] + add r3, r3, #320 ldrh r3, [r3] - cmp r3, #0 - beq .L40 - ldr r3, [r2, #348] - add r2, r2, #320 - ldrh r2, [r2] - add r2, r3, r2, lsl #1 -.L36: - cmp r3, r2 - bne .L37 + add r3, r2, r3, lsl #1 .L40: + cmp r2, r3 + bne .L41 mov r0, #0 - bx lr -.L37: - ldrh r1, [r3], #2 - cmp r0, r1 - bne .L36 - mov r0, #1 - bx lr -.L42: - .align 2 + ldmfd sp, {fp, sp, pc} .L41: + ldrh r0, [r2], #2 + cmp r1, r0 + bne .L40 + mov r0, #1 + ldmfd sp, {fp, sp, pc} +.L45: + .align 2 +.L44: .word .LANCHOR0 - .fnend .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 .global FtlCacheWriteBack @@ -443,13 +533,15 @@ IsBlkInVendorPart: .fpu softvfp .type FtlCacheWriteBack, %function FtlCacheWriteBack: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r0, #0 - bx lr - .fnend + ldmfd sp, {fp, sp, pc} .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 .global sftl_get_density @@ -458,20 +550,27 @@ FtlCacheWriteBack: .fpu softvfp .type sftl_get_density, %function sftl_get_density: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L45 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L48 ldr r0, [r3, #340] - bx lr -.L46: + ldmfd sp, {fp, sp, pc} +.L49: .align 2 -.L45: +.L48: .word .LANCHOR0 - .fnend .size sftl_get_density, .-sftl_get_density .global __aeabi_uidivmod + .section .rodata.str1.1 +.LC7: + .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" + .ascii "\000" + .text .align 2 .global FtlBbmMapBadBlock .syntax unified @@ -479,14 +578,16 @@ sftl_get_density: .fpu softvfp .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - .pad #12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L51 movw r3, #298 - ldr r4, .L49 mov r5, r0 ldrh r7, [r4, r3] mov r1, r7 @@ -495,34 +596,32 @@ FtlBbmMapBadBlock: mov r1, r7 mov r0, r5 bl __aeabi_uidivmod - add r2, r4, r6, lsl #2 - uxth r3, r1 - ldr r2, [r2, #380] - lsr r1, r3, #5 - and ip, r3, #31 - mov lr, #1 + add r3, r4, r6, lsl #2 + ubfx r0, r1, #5, #11 + and ip, r1, #31 add r4, r4, #352 - ldr r0, [r2, r1, lsl #2] - orr r0, r0, lr, lsl ip - str r0, [r2, r1, lsl #2] - mov r2, r6 - str r0, [sp] + mov lr, #1 + ldr r3, [r3, #380] + ldr r2, [r3, r0, lsl #2] + orr r2, r2, lr, lsl ip + str r2, [r3, r0, lsl #2] + uxth r3, r1 + ldr r0, .L51+4 mov r1, r5 - ldr r0, .L49+4 + str r2, [sp] + mov r2, r6 bl sftl_printk ldrh r3, [r4, #6] mov r0, #0 add r3, r3, #1 strh r3, [r4, #6] @ movhi - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, pc} -.L50: + sub sp, fp, #28 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L52: .align 2 -.L49: +.L51: .word .LANCHOR0 .word .LC7 - .fnend .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock .align 2 .global FtlBbmIsBadBlock @@ -531,35 +630,36 @@ FtlBbmMapBadBlock: .fpu softvfp .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L54 movw r3, #298 - ldr r5, .L53 - mov r7, r0 - ldrh r6, [r5, r3] - mov r1, r6 + mov r6, r0 + ldrh r7, [r5, r3] + mov r1, r7 bl __aeabi_uidivmod - mov r0, r7 + mov r0, r6 uxth r4, r1 - mov r1, r6 + mov r1, r7 bl __aeabi_uidiv uxth r0, r0 lsr r2, r4, #5 - add r5, r5, r0, lsl #2 and r4, r4, #31 + add r5, r5, r0, lsl #2 ldr r3, [r5, #380] ldr r0, [r3, r2, lsl #2] lsr r0, r0, r4 and r0, r0, #1 - pop {r4, r5, r6, r7, r8, pc} -.L54: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L55: .align 2 -.L53: +.L54: .word .LANCHOR0 - .fnend .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock .align 2 .global FtlBbtInfoPrint @@ -568,12 +668,14 @@ FtlBbmIsBadBlock: .fpu softvfp .type FtlBbtInfoPrint, %function FtlBbtInfoPrint: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - bx lr - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldmfd sp, {fp, sp, pc} .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .align 2 .global FtlBbtCalcTotleCnt @@ -582,36 +684,37 @@ FtlBbtInfoPrint: .fpu softvfp .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldr r3, .L64 movw r2, #298 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} mov r5, #0 mov r4, r5 - ldrh r2, [r3, r2] - ldrh r6, [r3, #254] - mul r6, r6, r2 -.L57: + ldrh r6, [r3, r2] + ldrh r3, [r3, #254] + mul r6, r3, r6 +.L58: uxth r0, r5 cmp r0, r6 - blt .L59 + blt .L60 mov r0, r4 - pop {r4, r5, r6, pc} -.L59: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L60: bl FtlBbmIsBadBlock cmp r0, #0 - add r5, r5, #1 addne r4, r4, #1 + add r5, r5, #1 uxthne r4, r4 - b .L57 + b .L58 .L65: .align 2 .L64: .word .LANCHOR0 - .fnend .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 2 .global V2P_block @@ -620,34 +723,35 @@ FtlBbtCalcTotleCnt: .fpu softvfp .type V2P_block, %function V2P_block: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r5, r1 - ldr r4, .L68 - mov r7, r0 - add r3, r4, #256 - ldrh r6, [r3] - mov r1, r6 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r8, .L67 + mov r4, r1 + mov r6, r0 + add r3, r8, #256 + ldrh r7, [r3] + mov r1, r7 bl __aeabi_uidiv movw r3, #298 - smulbb r5, r6, r5 - ldrh r4, [r4, r3] - mov r1, r6 - smulbb r4, r4, r0 - mov r0, r7 + smulbb r4, r7, r4 + mov r1, r7 + ldrh r5, [r8, r3] + smulbb r5, r5, r0 + mov r0, r6 bl __aeabi_uidivmod - add r0, r5, r1 - add r0, r4, r0 - uxth r0, r0 - pop {r4, r5, r6, r7, r8, pc} -.L69: - .align 2 + add r4, r4, r1 + add r4, r5, r4 + uxth r0, r4 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} .L68: + .align 2 +.L67: .word .LANCHOR0 - .fnend .size V2P_block, .-V2P_block .align 2 .global P2V_plane @@ -656,30 +760,31 @@ V2P_block: .fpu softvfp .type P2V_plane, %function P2V_plane: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L72 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L70 + mov r5, r0 add r2, r3, #256 - ldrh r5, [r2] + ldrh r6, [r2] movw r2, #298 ldrh r1, [r3, r2] bl __aeabi_uidiv - mov r1, r5 - smulbb r4, r0, r5 - mov r0, r6 + mov r1, r6 + smulbb r4, r0, r6 + mov r0, r5 bl __aeabi_uidivmod - add r1, r4, r1 - uxth r0, r1 - pop {r4, r5, r6, pc} -.L73: + add r0, r4, r1 + uxth r0, r0 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L71: .align 2 -.L72: +.L70: .word .LANCHOR0 - .fnend .size P2V_plane, .-P2V_plane .align 2 .global P2V_block_in_plane @@ -688,26 +793,28 @@ P2V_plane: .fpu softvfp .type P2V_block_in_plane, %function P2V_block_in_plane: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L73 movw r3, #298 - ldr r4, .L76 ldrh r1, [r4, r3] add r4, r4, #256 bl __aeabi_uidivmod - uxth r0, r1 + mov r0, r1 ldrh r1, [r4] + uxth r0, r0 bl __aeabi_uidiv uxth r0, r0 - pop {r4, pc} -.L77: + ldmfd sp, {r4, r5, fp, sp, pc} +.L74: .align 2 -.L76: +.L73: .word .LANCHOR0 - .fnend .size P2V_block_in_plane, .-P2V_block_in_plane .align 2 .global ftl_cmp_data_ver @@ -716,24 +823,26 @@ P2V_block_in_plane: .fpu softvfp .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc cmp r0, r1 - bls .L79 + bls .L76 sub r0, r0, r1 cmp r0, #-2147483648 movhi r0, #0 movls r0, #1 - bx lr -.L79: - sub r0, r1, r0 - cmp r0, #-2147483648 + ldmfd sp, {fp, sp, pc} +.L76: + sub r1, r1, r0 + cmp r1, #-2147483648 movls r0, #0 movhi r0, #1 - bx lr - .fnend + ldmfd sp, {fp, sp, pc} .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 .global FtlFreeSysBlkQueueEmpty @@ -742,20 +851,22 @@ ftl_cmp_data_ver: .fpu softvfp .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L82 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L79 ldrh r0, [r3, #6] clz r0, r0 lsr r0, r0, #5 - bx lr -.L83: + ldmfd sp, {fp, sp, pc} +.L80: .align 2 -.L82: +.L79: .word .LANCHOR0+412 - .fnend .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty .align 2 .global FtlFreeSysBlkQueueFull @@ -764,21 +875,23 @@ FtlFreeSysBlkQueueEmpty: .fpu softvfp .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L85 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L82 ldrh r0, [r3, #6] sub r0, r0, #1024 clz r0, r0 lsr r0, r0, #5 - bx lr -.L86: + ldmfd sp, {fp, sp, pc} +.L83: .align 2 -.L85: +.L82: .word .LANCHOR0+412 - .fnend .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull .align 2 .global FtlFreeSysBLkSort @@ -787,48 +900,49 @@ FtlFreeSysBlkQueueFull: .fpu softvfp .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L100 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L93 ldrh r2, [r3, #6] cmp r2, #0 - bxeq lr - ldr r2, .L100+4 + ldmfdeq sp, {r4, r5, fp, sp, pc} + ldr r2, .L93+4 mov r0, #0 - push {r4, lr} - .save {r4, lr} - mov r4, r0 ldrh r1, [r3, #2] - ldrh lr, [r2, #28] + mov lr, r0 + ldrh ip, [r2, #28] ldrh r2, [r3, #4] - and lr, lr, #31 -.L89: - uxth ip, r0 - add r0, r0, #1 - cmp lr, ip - bgt .L90 - cmp r4, #0 + and ip, ip, #31 +.L87: + uxth r4, r0 + cmp ip, r4 + bhi .L88 + cmp lr, #0 strhne r1, [r3, #2] @ movhi strhne r2, [r3, #4] @ movhi - pop {r4, pc} -.L90: - add ip, r3, r1, lsl #1 + ldmfd sp, {r4, r5, fp, sp, pc} +.L88: + add lr, r3, r1, lsl #1 add r1, r1, #1 + add r0, r0, #1 ubfx r1, r1, #0, #10 - ldrh r4, [ip, #8] - add ip, r3, r2, lsl #1 - strh r4, [ip, #8] @ movhi - mov r4, #1 - add r2, r2, r4 + ldrh r4, [lr, #8] + add lr, r3, r2, lsl #1 + add r2, r2, #1 + strh r4, [lr, #8] @ movhi ubfx r2, r2, #0, #10 - b .L89 -.L101: + mov lr, #1 + b .L87 +.L94: .align 2 -.L100: +.L93: .word .LANCHOR0+412 .word .LANCHOR0+2468 - .fnend .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 .global IsInFreeQueue @@ -837,42 +951,41 @@ FtlFreeSysBLkSort: .fpu softvfp .type IsInFreeQueue, %function IsInFreeQueue: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L112 - ldrh ip, [r3, #6] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r1, .L101 + ldrh ip, [r1, #6] cmp ip, #1024 - beq .L106 - str lr, [sp, #-4]! - .save {lr} - mov r1, #0 - ldrh lr, [r3, #2] -.L104: - cmp r1, ip - bcc .L105 + movne r2, #0 + ldrhne lr, [r1, #2] + bne .L97 +.L99: mov r0, #0 - ldr pc, [sp], #4 -.L105: - add r2, r1, lr - ubfx r2, r2, #0, #10 - add r2, r3, r2, lsl #1 - ldrh r2, [r2, #8] - cmp r2, r0 - beq .L107 - add r1, r1, #1 - b .L104 -.L106: - mov r0, #0 - bx lr -.L107: + ldmfd sp, {fp, sp, pc} +.L98: + add r3, lr, r2 + ubfx r3, r3, #0, #10 + add r3, r1, r3, lsl #1 + ldrh r3, [r3, #8] + cmp r3, r0 + beq .L100 + add r2, r2, #1 +.L97: + cmp ip, r2 + bhi .L98 + b .L99 +.L100: mov r0, #1 - ldr pc, [sp], #4 -.L113: + ldmfd sp, {fp, sp, pc} +.L102: .align 2 -.L112: +.L101: .word .LANCHOR0+412 - .fnend .size IsInFreeQueue, .-IsInFreeQueue .align 2 .global insert_data_list @@ -881,101 +994,105 @@ IsInFreeQueue: .fpu softvfp .type insert_data_list, %function insert_data_list: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r2, .L129 - ldrh r3, [r2, #240] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L117 + ldrh r3, [r4, #240] cmp r3, r0 - bls .L116 - mov r4, #6 - ldr r7, [r2, #2516] - mul r4, r4, r0 - mvn lr, #0 - add ip, r7, r4 - strh lr, [ip, #2] @ movhi - strh lr, [r7, r4] @ movhi - ldr r3, [r2, #2520] - cmp r3, #0 - streq ip, [r2, #2520] - beq .L116 - ldr r9, [r2, #72] - mov r1, r2 - lsl r2, r0, #1 - ldr r8, [r1, #2516] - movw r10, #65535 - ldrh r5, [r9, r2] - ldrh r2, [ip, #4] + bls .L105 + mov lr, #6 + ldr r5, [r4, #2516] + mvn ip, #0 + mul lr, lr, r0 + add r1, r5, lr + strh ip, [r1, #2] @ movhi + strh ip, [r5, lr] @ movhi + ldr r2, [r4, #2520] cmp r2, #0 - mulne lr, r2, r5 - sub r2, r3, r8 - asr r5, r2, #1 - ldr r2, .L129+4 - mul r2, r2, r5 - ldrh r5, [r1, #240] - str r5, [sp, #4] - mov r5, #0 - uxth r2, r2 -.L122: - ldr r6, [sp, #4] - add r5, r5, #1 - uxth r5, r5 - cmp r5, r6 - movls r6, #0 - movhi r6, #1 - cmp r0, r2 - orreq r6, r6, #1 + streq r1, [r4, #2520] + beq .L105 + ldr r8, [r4, #72] + lsl r3, r0, #1 + ldr r7, [r4, #2516] + movw r10, #65535 + ldrh r4, [r4, #240] + ldrh r6, [r8, r3] + ldrh r3, [r1, #4] + str r4, [fp, #-48] + mov r4, #0 + cmp r3, #0 + mulne ip, r3, r6 + sub r3, r2, r7 + ldr r6, .L117+4 + asr r3, r3, #1 + mul r3, r6, r3 + uxth r3, r3 +.L111: + sub r6, r0, r3 + add r4, r4, #1 + clz r6, r6 + ldr r9, [fp, #-48] + uxth r4, r4 + lsr r6, r6, #5 + cmp r4, r9 + orrhi r6, r6, #1 cmp r6, #0 - bne .L116 - ldrh r6, [r3, #4] - cmp r6, #0 - beq .L120 - lsl fp, r2, #1 - ldrh fp, [r9, fp] - mul r6, r6, fp - cmp r6, lr - bcs .L120 - ldrh r6, [r3] + bne .L105 + ldrh r9, [r2, #4] + cmp r9, #0 + beq .L109 + lsl r6, r3, #1 + ldrh r6, [r8, r6] + mul r6, r9, r6 + cmp r6, ip + bcs .L109 + ldrh r6, [r2] cmp r6, r10 - bne .L121 - strh r2, [ip, #2] @ movhi - strh r0, [r3] @ movhi - str ip, [r1, #2524] -.L116: + bne .L110 + strh r3, [r1, #2] @ movhi + ldr r3, .L117 + strh r0, [r2] @ movhi + str r1, [r3, #2524] +.L105: mov r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L121: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L110: mov r3, #6 - mov r2, r6 - mla r3, r3, r6, r8 - b .L122 -.L120: - strh r2, [r7, r4] @ movhi - ldrh r2, [r3, #2] - strh r2, [ip, #2] @ movhi - ldr r2, [r1, #2520] - cmp r3, r2 - ldrhne ip, [r3, #2] - movne r2, #6 - ldrne r1, [r1, #2516] - strheq r0, [r3, #2] @ movhi - streq ip, [r1, #2520] - mulne r2, r2, ip - strhne r0, [r1, r2] @ movhi - strhne r0, [r3, #2] @ movhi - b .L116 -.L130: + mla r2, r3, r6, r7 + mov r3, r6 + b .L111 +.L109: + strh r3, [r5, lr] @ movhi + ldr ip, .L117 + ldrh r3, [r2, #2] + strh r3, [r1, #2] @ movhi + ldr lr, [ip, #2520] + cmp r2, lr + strheq r0, [r2, #2] @ movhi + streq r1, [ip, #2520] + ldrne r1, [ip, #2516] + movne ip, #6 + mulne r3, ip, r3 + strhne r0, [r1, r3] @ movhi + strhne r0, [r2, #2] @ movhi + b .L105 +.L118: .align 2 -.L129: +.L117: .word .LANCHOR0 .word -1431655765 - .fnend .size insert_data_list, .-insert_data_list + .section .rodata.str1.1 +.LC8: + .ascii "\012!!!!! error @ func:%s - line:%d\012\000" + .text .align 2 .global INSERT_DATA_LIST .syntax unified @@ -983,33 +1100,34 @@ insert_data_list: .fpu softvfp .type INSERT_DATA_LIST, %function INSERT_DATA_LIST: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc bl insert_data_list - ldr r2, .L134 + ldr r2, .L121 add r1, r2, #2528 ldrh r2, [r2, #240] ldrh r3, [r1] add r3, r3, #1 uxth r3, r3 - cmp r2, r3 strh r3, [r1] @ movhi - popcs {r4, pc} + cmp r2, r3 + ldmfdcs sp, {fp, sp, pc} + ldr r1, .L121+4 mov r2, #214 - ldr r1, .L134+4 - ldr r0, .L134+8 - pop {r4, lr} - b sftl_printk -.L135: + ldr r0, .L121+8 + bl sftl_printk + ldmfd sp, {fp, sp, pc} +.L122: .align 2 -.L134: +.L121: .word .LANCHOR0 .word .LANCHOR1 .word .LC8 - .fnend .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .align 2 .global insert_free_list @@ -1018,75 +1136,78 @@ INSERT_DATA_LIST: .fpu softvfp .type insert_free_list, %function insert_free_list: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - movw r4, #65535 - cmp r0, r4 - beq .L137 - ldr r2, .L144 - mov r1, #6 - mul r5, r1, r0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + movw r8, #65535 + cmp r0, r8 + beq .L124 + ldr r1, .L131 + mov r6, #6 mvn r3, #0 - ldr r6, [r2, #2516] - mov ip, r2 - add lr, r6, r5 - strh r3, [lr, #2] @ movhi - strh r3, [r6, r5] @ movhi - ldr r3, [r2, #2532] + mul lr, r6, r0 + ldr r4, [r1, #2516] + add ip, r4, lr + strh r3, [ip, #2] @ movhi + strh r3, [r4, lr] @ movhi + ldr r3, [r1, #2532] cmp r3, #0 - streq lr, [r2, #2532] - beq .L137 - ldr r8, [r2, #2536] + bne .L125 +.L130: + str ip, [r1, #2532] + b .L124 +.L125: lsl r2, r0, #1 - ldr r7, [ip, #2516] - ldrh r9, [r8, r2] - sub r2, r3, r7 - asr r10, r2, #1 - ldr r2, .L144+4 - mul r2, r2, r10 - mov r10, r1 + ldr r7, [r1, #2536] + ldr r5, [r1, #2516] + ldr r10, .L131+4 + ldrh r9, [r7, r2] + sub r2, r3, r5 + asr r2, r2, #1 + mul r2, r10, r2 uxth r2, r2 -.L141: - lsl r1, r2, #1 - ldrh r1, [r8, r1] - cmp r1, r9 - bcs .L139 - ldrh r1, [r3] - cmp r1, r4 - bne .L140 - strh r2, [lr, #2] @ movhi +.L128: + lsl r10, r2, #1 + ldrh r10, [r7, r10] + cmp r10, r9 + bcs .L126 + ldrh r10, [r3] + cmp r10, r8 + bne .L127 + strh r2, [ip, #2] @ movhi strh r0, [r3] @ movhi -.L137: +.L124: mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L140: - mla r3, r10, r1, r7 - mov r2, r1 - b .L141 -.L139: - ldrh r1, [r3, #2] - strh r1, [lr, #2] @ movhi - strh r2, [r6, r5] @ movhi - ldr r2, [ip, #2532] - cmp r3, r2 - ldrhne lr, [r3, #2] - movne r2, #6 - ldrne r1, [ip, #2516] + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L127: + mla r3, r6, r10, r5 + mov r2, r10 + b .L128 +.L126: + ldrh r5, [r3, #2] + strh r5, [ip, #2] @ movhi + strh r2, [r4, lr] @ movhi + ldr r2, [r1, #2532] + cmp r2, r3 strheq r0, [r3, #2] @ movhi - streq lr, [ip, #2532] - mulne r2, r2, lr - strhne r0, [r1, r2] @ movhi - strhne r0, [r3, #2] @ movhi - b .L137 -.L145: + beq .L130 +.L129: + ldrh r2, [r3, #2] + mov ip, #6 + ldr r1, [r1, #2516] + mul r2, ip, r2 + strh r0, [r1, r2] @ movhi + strh r0, [r3, #2] @ movhi + b .L124 +.L132: .align 2 -.L144: +.L131: .word .LANCHOR0 .word -1431655765 - .fnend .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST @@ -1095,32 +1216,33 @@ insert_free_list: .fpu softvfp .type INSERT_FREE_LIST, %function INSERT_FREE_LIST: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc bl insert_free_list - ldr r2, .L149 + ldr r2, .L135 ldrh r3, [r2, #224] add r3, r3, #1 uxth r3, r3 strh r3, [r2, #224] @ movhi ldrh r2, [r2, #240] cmp r2, r3 - popcs {r4, pc} + ldmfdcs sp, {fp, sp, pc} + ldr r1, .L135+4 mov r2, #207 - ldr r1, .L149+4 - ldr r0, .L149+8 - pop {r4, lr} - b sftl_printk -.L150: + ldr r0, .L135+8 + bl sftl_printk + ldmfd sp, {fp, sp, pc} +.L136: .align 2 -.L149: +.L135: .word .LANCHOR0 .word .LANCHOR1+17 .word .LC8 - .fnend .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .align 2 .global List_remove_node @@ -1129,78 +1251,85 @@ INSERT_FREE_LIST: .fpu softvfp .type List_remove_node, %function List_remove_node: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r6, #6 - ldr r4, .L158 - mul r6, r6, r1 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r8, .L148 + mov r4, #6 movw r3, #65535 - mov r8, r0 - ldr r7, [r4, #2516] - add r5, r7, r6 - ldrh r2, [r5, #2] + mov r5, r0 + mul r4, r4, r1 + ldr r7, [r8, #2516] + add r6, r7, r4 + ldrh r2, [r6, #2] cmp r2, r3 - bne .L152 + bne .L138 ldr r3, [r0] - cmp r5, r3 - beq .L152 - mov r2, #372 - ldr r1, .L158+4 - ldr r0, .L158+8 - bl sftl_printk -.L152: - ldr r3, [r8] - movw r2, #65535 - cmp r5, r3 - ldrh r3, [r7, r6] - bne .L153 - cmp r3, r2 - ldrne r2, [r4, #2516] - movne r1, #6 - moveq r3, #0 - streq r3, [r8] - mlane r3, r1, r3, r2 - mvnne r2, #0 - strne r3, [r8] - strhne r2, [r3, #2] @ movhi -.L155: + cmp r6, r3 + bne .L139 +.L142: + ldrh r2, [r7, r4] + movw r3, #65535 + cmp r2, r3 + bne .L146 + mov r3, #0 + str r3, [r5] +.L144: mvn r3, #0 mov r0, #0 - strh r3, [r7, r6] @ movhi - strh r3, [r5, #2] @ movhi - pop {r4, r5, r6, r7, r8, pc} -.L153: - cmp r3, r2 - ldrh r1, [r5, #2] - bne .L156 - cmp r1, r3 - movne r3, #6 - ldrne r2, [r4, #2516] - mulne r1, r3, r1 - mvnne r3, #0 - strhne r3, [r2, r1] @ movhi - b .L155 -.L156: - ldr r0, [r4, #2516] + strh r3, [r7, r4] @ movhi + strh r3, [r6, #2] @ movhi + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L139: + ldr r1, .L148+4 + mov r2, #372 + ldr r0, .L148+8 + bl sftl_printk +.L138: + ldr r3, [r5] + ldrh r1, [r7, r4] + cmp r3, r6 + beq .L142 + movw r2, #65535 + ldrh r3, [r6, #2] + cmp r1, r2 + bne .L145 + cmp r3, r1 + beq .L144 mov r2, #6 - mla r3, r2, r3, r0 - strh r1, [r3, #2] @ movhi - ldrh r0, [r5, #2] - ldrh r1, [r7, r6] - ldr r3, [r4, #2516] - mul r2, r2, r0 - strh r1, [r3, r2] @ movhi - b .L155 -.L159: + ldr r1, [r8, #2516] + mul r3, r2, r3 + mvn r2, #0 + strh r2, [r1, r3] @ movhi + b .L144 +.L146: + ldr r3, [r8, #2516] + mov r1, #6 + mla r3, r1, r2, r3 + mvn r2, #0 + str r3, [r5] + strh r2, [r3, #2] @ movhi + b .L144 +.L145: + ldr r2, [r8, #2516] + mov r0, #6 + mla r2, r0, r1, r2 + strh r3, [r2, #2] @ movhi + mul r3, r0, r3 + ldr r2, [r8, #2516] + ldrh r1, [r7, r4] + strh r1, [r2, r3] @ movhi + b .L144 +.L149: .align 2 -.L158: +.L148: .word .LANCHOR0 .word .LANCHOR1+34 .word .LC8 - .fnend .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node @@ -1209,47 +1338,48 @@ List_remove_node: .fpu softvfp .type List_pop_index_node, %function List_pop_index_node: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldr r3, [r0] cmp r3, #0 - beq .L166 - ldr r2, .L171 - push {r4, lr} - .save {r4, lr} - movw lr, #65535 - mov r4, #6 - ldr r2, [r2, #2516] -.L162: + beq .L155 + ldr r2, .L159 + movw ip, #65535 + mov lr, #6 + ldr r4, [r2, #2516] +.L152: cmp r1, #0 - bne .L163 -.L165: - ldr r4, .L171+4 - sub r3, r3, r2 - asr r3, r3, #1 - mul r4, r4, r3 + beq .L153 + ldrh r2, [r3] + cmp r2, ip + bne .L154 +.L153: + sub r4, r3, r4 + ldr r3, .L159+4 + asr r4, r4, #1 + mul r4, r3, r4 uxth r1, r4 bl List_remove_node uxth r0, r4 - pop {r4, pc} -.L163: - ldrh ip, [r3] - cmp ip, lr - beq .L165 + ldmfd sp, {r4, r5, fp, sp, pc} +.L154: sub r1, r1, #1 - mla r3, r4, ip, r2 + mla r3, lr, r2, r4 uxth r1, r1 - b .L162 -.L166: + b .L152 +.L155: movw r0, #65535 - bx lr -.L172: + ldmfd sp, {r4, r5, fp, sp, pc} +.L160: .align 2 -.L171: +.L159: .word .LANCHOR0 .word -1431655765 - .fnend .size List_pop_index_node, .-List_pop_index_node .align 2 .global List_pop_head_node @@ -1258,13 +1388,16 @@ List_pop_index_node: .fpu softvfp .type List_pop_head_node, %function List_pop_head_node: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r1, #0 - b List_pop_index_node - .fnend + bl List_pop_index_node + ldmfd sp, {fp, sp, pc} .size List_pop_head_node, .-List_pop_head_node .align 2 .global List_get_gc_head_node @@ -1273,44 +1406,46 @@ List_pop_head_node: .fpu softvfp .type List_get_gc_head_node, %function List_get_gc_head_node: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L180 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r2, .L168 ldr r3, [r2, #2520] cmp r3, #0 - ldrne r1, [r2, #2516] - movne ip, #6 - movwne r2, #65535 - bne .L176 -.L179: + movwne r1, #65535 + movne lr, #6 + ldrne ip, [r2, #2516] + bne .L164 +.L167: movw r0, #65535 - bx lr -.L178: - sub r0, r0, #1 - mla r3, ip, r3, r1 - uxth r0, r0 -.L176: + ldmfd sp, {fp, sp, pc} +.L166: + sub r2, r0, #1 + mla r3, lr, r3, ip + uxth r0, r2 +.L164: cmp r0, #0 - beq .L177 + beq .L165 ldrh r3, [r3] - cmp r3, r2 - bne .L178 - b .L179 -.L177: - ldr r0, .L180+4 - sub r3, r3, r1 - asr r3, r3, #1 - mul r3, r0, r3 - uxth r0, r3 - bx lr -.L181: + cmp r3, r1 + bne .L166 + b .L167 +.L165: + sub r0, r3, ip + ldr r3, .L168+4 + asr r0, r0, #1 + mul r0, r3, r0 + uxth r0, r0 + ldmfd sp, {fp, sp, pc} +.L169: .align 2 -.L180: +.L168: .word .LANCHOR0 .word -1431655765 - .fnend .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 .global List_update_data_list @@ -1319,102 +1454,103 @@ List_get_gc_head_node: .fpu softvfp .type List_update_data_list, %function List_update_data_list: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - ldr r4, .L194 - ldrh r3, [r4, #24] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L181 + mov r4, r0 + ldrh r3, [r5, #24] cmp r3, r0 - beq .L184 - ldrh r3, [r4, #76] + beq .L172 + ldrh r3, [r5, #76] cmp r3, r0 - beq .L184 - ldrh r3, [r4, #124] + beq .L172 + ldrh r3, [r5, #124] cmp r3, r0 - beq .L184 + beq .L172 mov r7, #6 - ldr r9, [r4, #2516] + ldr r9, [r5, #2516] + ldr r3, [r5, #2520] mul r7, r7, r0 - ldr r3, [r4, #2520] add r8, r9, r7 cmp r8, r3 - beq .L184 - ldr r2, [r4, #72] + beq .L172 + ldr r2, [r5, #72] lsl r3, r0, #1 - ldrh r6, [r8, #4] - mov r5, r0 - ldrh r3, [r2, r3] + ldrh r6, [r2, r3] movw r2, #65535 - cmp r6, #0 + ldrh r3, [r8, #4] + cmp r3, #0 mvneq r6, #0 - mulne r6, r6, r3 + mulne r6, r3, r6 ldrh r3, [r8, #2] cmp r3, r2 - bne .L187 + bne .L175 ldrh r2, [r9, r7] cmp r2, r3 - bne .L187 + bne .L175 + ldr r1, .L181+4 movw r2, #463 - ldr r1, .L194+4 - ldr r0, .L194+8 + ldr r0, .L181+8 bl sftl_printk -.L187: +.L175: ldrh r3, [r8, #2] movw r2, #65535 cmp r3, r2 - bne .L188 + bne .L176 ldrh r2, [r9, r7] cmp r2, r3 - beq .L184 -.L188: + beq .L172 +.L176: mov r2, #6 - mul r2, r2, r3 - ldr r3, .L194+12 - asr r1, r2, #1 - mul r3, r3, r1 - ldr r1, [r4, #72] - lsl r3, r3, #1 - ldrh r0, [r1, r3] - ldr r1, [r4, #2516] - add r2, r1, r2 - ldrh r3, [r2, #4] + ldr r1, .L181+12 + mul r3, r2, r3 + asr r2, r3, #1 + mul r2, r1, r2 + ldr r1, [r5, #72] + lsl r2, r2, #1 + ldrh r2, [r1, r2] + ldr r1, [r5, #2516] + add r3, r1, r3 + ldrh r3, [r3, #4] cmp r3, #0 - mulne r3, r3, r0 mvneq r3, #0 + mulne r3, r3, r2 cmp r6, r3 - bcs .L184 - ldr r4, .L194+16 - mov r1, r5 - ldr r0, .L194+20 + bcs .L172 + ldr r5, .L181+16 + mov r1, r4 + ldr r0, .L181+20 bl List_remove_node - ldrh r3, [r4] + ldrh r3, [r5] cmp r3, #0 - bne .L190 + bne .L178 + ldr r1, .L181+4 movw r2, #474 - ldr r1, .L194+4 - ldr r0, .L194+8 + ldr r0, .L181+8 bl sftl_printk -.L190: - ldrh r3, [r4] - mov r0, r5 +.L178: + ldrh r3, [r5] + mov r0, r4 sub r3, r3, #1 - strh r3, [r4] @ movhi + strh r3, [r5] @ movhi bl INSERT_DATA_LIST -.L184: +.L172: mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L195: + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L182: .align 2 -.L194: +.L181: .word .LANCHOR0 .word .LANCHOR1+51 .word .LC8 .word -1431655765 .word .LANCHOR0+2528 .word .LANCHOR0+2520 - .fnend .size List_update_data_list, .-List_update_data_list .align 2 .global select_l2p_ram_region @@ -1423,90 +1559,92 @@ List_update_data_list: .fpu softvfp .type select_l2p_ram_region, %function select_l2p_ram_region: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L207 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L193 movw r2, #338 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} mov r1, #0 - mov r0, #12 - movw ip, #65535 + mov ip, #12 + movw lr, #65535 ldrh r2, [r3, r2] ldr r3, [r3, #2540] -.L197: + sub r0, r3, #12 +.L184: uxth r4, r1 - cmp r4, r2 - bcc .L199 + cmp r2, r4 + bhi .L186 mov r4, r2 + add r5, r3, #4 mov r1, #0 mov r0, #-2147483648 - mov r5, #12 -.L200: + mov r6, #12 +.L187: uxth lr, r1 - cmp lr, r2 - bcc .L202 - cmp r4, r2 - bcc .L198 - ldr r1, .L207+4 + cmp r2, lr + bhi .L189 + cmp r2, r4 + bhi .L185 + ldr r1, .L193+4 mov r4, r2 mvn r0, #0 ldrh r5, [r1] mov r1, #0 -.L203: +.L190: uxth ip, r1 - cmp ip, r2 - bcc .L205 - cmp r4, r2 - bcc .L198 - movw r2, #789 - ldr r1, .L207+8 - ldr r0, .L207+12 + cmp r2, ip + bhi .L192 + cmp r2, r4 + bhi .L185 + ldr r1, .L193+8 + mov r2, #796 + ldr r0, .L193+12 bl sftl_printk - b .L198 -.L199: + b .L185 +.L186: add r1, r1, #1 - mla lr, r0, r1, r3 - ldrh lr, [lr, #-12] - cmp lr, ip - bne .L197 -.L198: + mul r5, ip, r1 + ldrh r5, [r0, r5] + cmp r5, lr + bne .L184 +.L185: mov r0, r4 - pop {r4, r5, r6, pc} -.L202: - mla ip, r5, r1, r3 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L189: + mul ip, r6, r1 add r1, r1, #1 - ldr ip, [ip, #4] - cmp r0, ip - movls r6, #0 - movhi r6, #1 - cmp ip, #0 - movlt r6, #0 - cmp r6, #0 + ldr ip, [r5, ip] + mvn r7, ip + cmp ip, r0 + lsr r7, r7, #31 + movcs r7, #0 + cmp r7, #0 movne r0, ip movne r4, lr - b .L200 -.L205: + b .L187 +.L192: ldr lr, [r3, #4] - cmp r0, lr - bls .L204 + cmp lr, r0 + bcs .L191 ldrh r6, [r3] cmp r6, r5 movne r0, lr movne r4, ip -.L204: +.L191: add r1, r1, #1 add r3, r3, #12 - b .L203 -.L208: + b .L190 +.L194: .align 2 -.L207: +.L193: .word .LANCHOR0 .word .LANCHOR0+2544 .word .LANCHOR1+73 .word .LC8 - .fnend .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global FtlUpdateVaildLpn @@ -1515,128 +1653,100 @@ select_l2p_ram_region: .fpu softvfp .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L218 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L201 movw r1, #2546 - ldrh r2, [ip, r1] + ldrh r2, [r3, r1] cmp r2, #4 cmpls r0, #0 - bne .L210 + bne .L196 add r2, r2, #1 - strh r2, [ip, r1] @ movhi - bx lr -.L210: + strh r2, [r3, r1] @ movhi + ldmfd sp, {fp, sp, pc} +.L196: mov r2, #0 - str lr, [sp, #-4]! - .save {lr} - strh r2, [ip, r1] @ movhi - mov r3, ip + strh r2, [r3, r1] @ movhi + str r2, [r3, #2548] movw lr, #65535 - str r2, [ip, #2548] - ldrh r1, [ip, #240] - ldr r2, [ip, #72] + ldr r2, [r3, #72] + ldrh r1, [r3, #240] add r1, r2, r1, lsl #1 -.L211: +.L197: cmp r2, r1 - bne .L213 - ldr pc, [sp], #4 -.L213: + ldmfdeq sp, {fp, sp, pc} ldrh ip, [r2], #2 cmp ip, lr ldrne r0, [r3, #2548] addne r0, r0, ip strne r0, [r3, #2548] - b .L211 -.L219: + b .L197 +.L202: .align 2 -.L218: +.L201: .word .LANCHOR0 - .fnend .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 - .global ftl_get_blk_mode - .syntax unified - .arm - .fpu softvfp - .type ftl_get_blk_mode, %function -ftl_get_blk_mode: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L221 - lsr r2, r0, #5 - and r0, r0, #31 - ldr r3, [r3, #2552] - ldr r3, [r3, r2, lsl #2] - lsr r0, r3, r0 - and r0, r0, #1 - bx lr -.L222: - .align 2 -.L221: - .word .LANCHOR0 - .fnend - .size ftl_get_blk_mode, .-ftl_get_blk_mode - .align 2 .global ftl_sb_update_avl_pages .syntax unified .arm .fpu softvfp .type ftl_sb_update_avl_pages, %function ftl_sb_update_avl_pages: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L211 + add ip, r2, #8 mov r3, #0 - push {r4, r5, lr} - .save {r4, r5, lr} - strh r3, [r0, #4] @ movhi - add ip, r0, r2, lsl #1 movw r5, #65535 - ldr r3, .L231 - add ip, ip, #14 - ldrh lr, [r3, #232] -.L224: - cmp r2, lr - bcc .L226 - movw r2, #302 - add ip, r0, #16 - ldrh r3, [r3, r2] - movw r4, #65535 - sub r3, r3, #1 - sub r1, r3, r1 - mov r3, #0 - uxth r1, r1 -.L227: - uxth r2, r3 + add ip, r0, ip, lsl #1 + strh r3, [r0, #4] @ movhi + ldrh lr, [r4, #232] +.L204: cmp lr, r2 - bhi .L229 - pop {r4, r5, pc} -.L226: - ldrh r4, [ip, #2]! + bhi .L206 + movw r3, #302 + add ip, r0, #16 + mov r2, #0 + ldrh r3, [r4, r3] + movw r4, #65535 + sub r3, r3, r1 + sub r3, r3, #1 + sxth r3, r3 +.L207: + uxth r1, r2 + cmp lr, r1 + ldmfdls sp, {r4, r5, fp, sp, pc} + ldrh r1, [ip], #2 add r2, r2, #1 + cmp r1, r4 + ldrhne r1, [r0, #4] + addne r1, r3, r1 + strhne r1, [r0, #4] @ movhi + b .L207 +.L206: + ldrh r3, [ip], #2 + add r2, r2, #1 + cmp r3, r5 uxth r2, r2 - cmp r4, r5 - ldrhne r4, [r0, #4] - addne r4, r4, #1 - strhne r4, [r0, #4] @ movhi - b .L224 -.L229: - ldrh r2, [ip], #2 - add r3, r3, #1 - cmp r2, r4 - ldrhne r2, [r0, #4] - addne r2, r1, r2 - strhne r2, [r0, #4] @ movhi - b .L227 -.L232: + ldrhne r3, [r0, #4] + addne r3, r3, #1 + strhne r3, [r0, #4] @ movhi + b .L204 +.L212: .align 2 -.L231: +.L211: .word .LANCHOR0 - .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global FtlSlcSuperblockCheck @@ -1645,48 +1755,46 @@ ftl_sb_update_avl_pages: .fpu softvfp .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldrh r3, [r0, #4] cmp r3, #0 - bxeq lr - ldrh r2, [r0] - movw r3, #65535 - cmp r2, r3 - bxeq lr - ldrb r2, [r0, #6] @ zero_extendqisi2 - str lr, [sp, #-4]! - .save {lr} - mov lr, #0 - add r2, r0, r2, lsl #1 - ldrh r1, [r2, #16] - ldr r2, .L243 - ldrh ip, [r2, #232] - mov r2, r3 -.L236: - cmp r1, r2 - beq .L238 - ldr pc, [sp], #4 -.L238: + ldmfdeq sp, {fp, sp, pc} + ldrh r3, [r0] + movw r2, #65535 + cmp r3, r2 + ldmfdeq sp, {fp, sp, pc} + ldrb r3, [r0, #6] @ zero_extendqisi2 + mov ip, #0 + ldr r1, .L219 + add r3, r0, r3, lsl #1 + ldrh r1, [r1, #232] + ldrh r3, [r3, #16] +.L216: + cmp r3, r2 + ldmfdne sp, {fp, sp, pc} ldrb r3, [r0, #6] @ zero_extendqisi2 add r3, r3, #1 uxtb r3, r3 - cmp r3, ip strb r3, [r0, #6] + cmp r3, r1 + strbeq ip, [r0, #6] ldrheq r3, [r0, #2] - strbeq lr, [r0, #6] addeq r3, r3, #1 strheq r3, [r0, #2] @ movhi ldrb r3, [r0, #6] @ zero_extendqisi2 add r3, r0, r3, lsl #1 - ldrh r1, [r3, #16] - b .L236 -.L244: + ldrh r3, [r3, #16] + b .L216 +.L220: .align 2 -.L243: +.L219: .word .LANCHOR0 - .fnend .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global make_superblock @@ -1695,72 +1803,76 @@ FtlSlcSuperblockCheck: .fpu softvfp .type make_superblock, %function make_superblock: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r7, .L227 mov r4, r0 - ldr r6, .L252 ldrh r2, [r0] - ldrh r3, [r6, #240] + ldrh r3, [r7, #240] cmp r2, r3 - bcc .L246 - movw r2, #2150 - ldr r1, .L252+4 - ldr r0, .L252+8 + bcc .L222 + ldr r1, .L227+4 + movw r2, #2157 + ldr r0, .L227+8 bl sftl_printk -.L246: - ldrh r9, [r6, #232] - add r7, r4, #16 - ldr r10, .L252+12 - mvn r8, #0 - mov r5, #0 - strh r5, [r4, #4] @ movhi - strb r5, [r4, #7] -.L247: - uxth r3, r5 +.L222: + ldrh r6, [r7, #232] + mov r3, #0 + strh r3, [r4, #4] @ movhi + add r5, r4, #16 + strb r3, [r4, #7] + mvn r9, #0 + add r6, r4, r6, lsl #1 + ldr r3, .L227+12 + add r6, r6, #16 +.L223: ldrh r1, [r4] - cmp r9, r3 - bhi .L249 - movw r2, #302 - ldrb r3, [r4, #7] @ zero_extendqisi2 - ldrh r2, [r6, r2] + cmp r6, r5 + ldrb r8, [r4, #7] @ zero_extendqisi2 + bne .L225 + movw r3, #302 lsl r1, r1, #1 mov r0, #0 - smulbb r3, r3, r2 - strh r3, [r4, #4] @ movhi + ldrh r3, [r7, r3] + smulbb r8, r3, r8 mov r3, #0 strb r3, [r4, #9] - ldr r3, [r6, #2536] + ldr r3, [r7, #2536] + strh r8, [r4, #4] @ movhi ldrh r2, [r3, r1] movw r3, #10000 cmp r2, r3 movhi r3, #1 strbhi r3, [r4, #9] - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L249: - ldrb r0, [r10, r5] @ zero_extendqisi2 - add r7, r7, #2 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L225: + ldrb r0, [r3], #1 @ zero_extendqisi2 + add r5, r5, #2 + str r3, [fp, #-48] bl V2P_block - strh r8, [r7, #-2] @ movhi - mov fp, r0 + strh r9, [r5, #-2] @ movhi + mov r10, r0 bl FtlBbmIsBadBlock cmp r0, #0 - add r5, r5, #1 - strheq fp, [r7, #-2] @ movhi - ldrbeq r3, [r4, #7] @ zero_extendqisi2 - addeq r3, r3, #1 - strbeq r3, [r4, #7] - b .L247 -.L253: + addeq r8, r8, #1 + strheq r10, [r5, #-2] @ movhi + ldr r3, [fp, #-48] + strbeq r8, [r4, #7] + b .L223 +.L228: .align 2 -.L252: +.L227: .word .LANCHOR0 .word .LANCHOR1+95 .word .LC8 .word .LANCHOR0+260 - .fnend .size make_superblock, .-make_superblock .align 2 .global update_multiplier_value @@ -1769,52 +1881,52 @@ make_superblock: .fpu softvfp .type update_multiplier_value, %function update_multiplier_value: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L261 - movw r2, #302 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r5, #0 - mov r7, r0 - mov r4, r5 - mov r6, r3 - add r10, r3, #260 - ldrh r8, [r3, #232] - ldrh r9, [r3, r2] -.L255: - uxth r3, r5 - cmp r8, r3 - bhi .L257 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L237 + movw r3, #302 + mov r7, #0 + mov r5, r0 + add r8, r6, #260 + mov r4, r7 + ldrh r9, [r6, #232] + ldrh r10, [r6, r3] +.L230: + uxth r3, r7 + cmp r9, r3 + bhi .L232 cmp r4, #0 - moveq r0, r4 - beq .L258 + beq .L233 mov r1, r4 mov r0, #32768 bl __aeabi_idiv -.L258: - ldr r1, [r6, #2516] + uxth r4, r0 +.L233: + ldr r0, [r6, #2516] mov r3, #6 - mla r1, r3, r7, r1 - strh r0, [r1, #4] @ movhi + mla r5, r3, r5, r0 mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L257: - mov r1, r7 - ldrb r0, [r10, r5] @ zero_extendqisi2 + strh r4, [r5, #4] @ movhi + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L232: + mov r1, r5 + ldrb r0, [r8], #1 @ zero_extendqisi2 bl V2P_block + add r7, r7, #1 bl FtlBbmIsBadBlock cmp r0, #0 - add r5, r5, #1 - addeq r4, r4, r9 + addeq r4, r10, r4 uxtheq r4, r4 - b .L255 -.L262: + b .L230 +.L238: .align 2 -.L261: +.L237: .word .LANCHOR0 - .fnend .size update_multiplier_value, .-update_multiplier_value .align 2 .global GetFreeBlockMinEraseCount @@ -1823,30 +1935,32 @@ update_multiplier_value: .fpu softvfp .type GetFreeBlockMinEraseCount, %function GetFreeBlockMinEraseCount: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L266 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r2, .L242 ldr r0, [r2, #2532] cmp r0, #0 - bxeq lr + ldmfdeq sp, {fp, sp, pc} ldr r3, [r2, #2516] - sub r0, r0, r3 - ldr r3, .L266+4 - asr r0, r0, #1 - mul r0, r3, r0 - ldr r3, [r2, #2536] - uxth r0, r0 - lsl r0, r0, #1 - ldrh r0, [r3, r0] - bx lr -.L267: + ldr r2, [r2, #2536] + sub r3, r0, r3 + ldr r0, .L242+4 + asr r3, r3, #1 + mul r3, r0, r3 + uxth r3, r3 + lsl r3, r3, #1 + ldrh r0, [r2, r3] + ldmfd sp, {fp, sp, pc} +.L243: .align 2 -.L266: +.L242: .word .LANCHOR0 .word -1431655765 - .fnend .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 .global GetFreeBlockMaxEraseCount @@ -1855,56 +1969,191 @@ GetFreeBlockMinEraseCount: .fpu softvfp .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L280 - ldr r3, [r1, #2532] - cmp r3, #0 - beq .L274 - push {r4, r5, lr} - .save {r4, r5, lr} - mov r4, #6 - ldrh r2, [r1, #224] - movw r5, #65535 - ldr ip, [r1, #2516] - rsb r2, r2, r2, lsl #3 - sub r3, r3, ip - asr r2, r2, #3 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r1, .L251 + mov r2, r0 + ldr r0, [r1, #2532] + cmp r0, #0 + ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} + ldrh r3, [r1, #224] + mov r5, #6 + ldr lr, [r1, #2516] + movw r6, #65535 + rsb r3, r3, r3, lsl #3 + asr ip, r3, #3 + cmp r2, r3, asr #3 + sub r3, r0, lr + ldr r0, .L251+4 + uxthgt r2, ip + mov ip, #0 asr r3, r3, #1 - cmp r0, r2 - uxthgt r0, r2 - ldr r2, .L280+4 - mul r3, r2, r3 - mov r2, #0 + mul r3, r0, r3 uxth r3, r3 -.L271: - uxth lr, r2 - cmp r0, lr - bls .L273 - mul lr, r4, r3 - add r2, r2, #1 - ldrh lr, [ip, lr] - cmp lr, r5 - bne .L275 -.L273: - ldr r2, [r1, #2536] - lsl r3, r3, #1 - ldrh r0, [r2, r3] - pop {r4, r5, pc} -.L275: - mov r3, lr - b .L271 -.L274: +.L247: + uxth r4, ip mov r0, r3 - bx lr -.L281: + cmp r4, r2 + bcs .L248 + mul r3, r5, r3 + add ip, ip, #1 + ldrh r3, [lr, r3] + cmp r3, r6 + bne .L247 +.L248: + ldr r2, [r1, #2536] + lsl r3, r0, #1 + ldrh r0, [r2, r3] + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L252: .align 2 -.L280: +.L251: .word .LANCHOR0 .word -1431655765 - .fnend .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount + .section .rodata.str1.1 +.LC9: + .ascii "FLASH INFO:\012\000" +.LC10: + .ascii "Device Capacity: %d MB\012\000" +.LC11: + .ascii "FTL INFO:\012\000" +.LC12: + .ascii "g_MaxLpn = 0x%x\012\000" +.LC13: + .ascii "g_VaildLpn = 0x%x\012\000" +.LC14: + .ascii "read_page_count = 0x%x\012\000" +.LC15: + .ascii "discard_page_count = 0x%x\012\000" +.LC16: + .ascii "write_page_count = 0x%x\012\000" +.LC17: + .ascii "cache_write_count = 0x%x\012\000" +.LC18: + .ascii "l2p_write_count = 0x%x\012\000" +.LC19: + .ascii "gc_page_count = 0x%x\012\000" +.LC20: + .ascii "totle_write = %d MB\012\000" +.LC21: + .ascii "totle_read = %d MB\012\000" +.LC22: + .ascii "GSV = 0x%x\012\000" +.LC23: + .ascii "GDV = 0x%x\012\000" +.LC24: + .ascii "bad blk num = %d\012\000" +.LC25: + .ascii "free_superblocks = 0x%x\012\000" +.LC26: + .ascii "mlc_EC = 0x%x\012\000" +.LC27: + .ascii "slc_EC = 0x%x\012\000" +.LC28: + .ascii "avg_EC = 0x%x\012\000" +.LC29: + .ascii "sys_EC = 0x%x\012\000" +.LC30: + .ascii "max_EC = 0x%x\012\000" +.LC31: + .ascii "min_EC = 0x%x\012\000" +.LC32: + .ascii "PLT = 0x%x\012\000" +.LC33: + .ascii "POT = 0x%x\012\000" +.LC34: + .ascii "MaxSector = 0x%x\012\000" +.LC35: + .ascii "init_sys_blks_pp = 0x%x\012\000" +.LC36: + .ascii "sys_blks_pp = 0x%x\012\000" +.LC37: + .ascii "free sysblock = 0x%x\012\000" +.LC38: + .ascii "data_blks_pp = 0x%x\012\000" +.LC39: + .ascii "data_op_blks_pp = 0x%x\012\000" +.LC40: + .ascii "max_data_blks = 0x%x\012\000" +.LC41: + .ascii "Sys.id = 0x%x\012\000" +.LC42: + .ascii "Bbt.id = 0x%x\012\000" +.LC43: + .ascii "ACT.page = 0x%x\012\000" +.LC44: + .ascii "ACT.plane = 0x%x\012\000" +.LC45: + .ascii "ACT.id = 0x%x\012\000" +.LC46: + .ascii "ACT.mode = 0x%x\012\000" +.LC47: + .ascii "ACT.a_pages = 0x%x\012\000" +.LC48: + .ascii "ACT VPC = 0x%x\012\000" +.LC49: + .ascii "BUF.page = 0x%x\012\000" +.LC50: + .ascii "BUF.plane = 0x%x\012\000" +.LC51: + .ascii "BUF.id = 0x%x\012\000" +.LC52: + .ascii "BUF.mode = 0x%x\012\000" +.LC53: + .ascii "BUF.a_pages = 0x%x\012\000" +.LC54: + .ascii "BUF VPC = 0x%x\012\000" +.LC55: + .ascii "TMP.page = 0x%x\012\000" +.LC56: + .ascii "TMP.plane = 0x%x\012\000" +.LC57: + .ascii "TMP.id = 0x%x\012\000" +.LC58: + .ascii "TMP.mode = 0x%x\012\000" +.LC59: + .ascii "TMP.a_pages = 0x%x\012\000" +.LC60: + .ascii "GC.page = 0x%x\012\000" +.LC61: + .ascii "GC.plane = 0x%x\012\000" +.LC62: + .ascii "GC.id = 0x%x\012\000" +.LC63: + .ascii "GC.mode = 0x%x\012\000" +.LC64: + .ascii "GC.a_pages = 0x%x\012\000" +.LC65: + .ascii "WR_CHK = %x %x %x\012\000" +.LC66: + .ascii "Read Err Cnt = 0x%x\012\000" +.LC67: + .ascii "Prog Err Cnt = 0x%x\012\000" +.LC68: + .ascii "gc_free_blk_th= 0x%x\012\000" +.LC69: + .ascii "gc_merge_free_blk_th= 0x%x\012\000" +.LC70: + .ascii "gc_skip_write_count= 0x%x\012\000" +.LC71: + .ascii "gc_blk_index= 0x%x\012\000" +.LC72: + .ascii "free min EC= 0x%x\012\000" +.LC73: + .ascii "free max EC= 0x%x\012\000" +.LC74: + .ascii "GC__SB VPC = 0x%x\012\000" +.LC75: + .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" +.LC76: + .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" + .text .align 2 .global FtlPrintInfo2buf .syntax unified @@ -1912,519 +2161,518 @@ GetFreeBlockMaxEraseCount: .fpu softvfp .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r6, r0 - ldr r5, .L295 - add r4, r6, #12 - .pad #20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #20 - ldr r1, .L295+4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L265 + mov r7, r0 + ldr r1, .L265+4 + add r5, r7, #12 bl strcpy - ldr r3, [r5, #316] + ldr r2, .L265+8 + mov r0, r5 mov r1, #64 - ldr r2, .L295+8 - mov r0, r4 + ldr r3, [r6, #316] + add r8, r6, #352 bl snprintf - add r4, r4, r0 - ldr r1, .L295+12 - mov r0, r4 - add r4, r4, #10 + add r5, r5, r0 + ldr r1, .L265+12 + mov r0, r5 + add r5, r5, #10 bl strcpy - ldr r3, [r5, #2556] + ldr r3, [r6, #2552] + mov r0, r5 + ldr r2, .L265+16 mov r1, #64 - ldr r2, .L295+16 - mov r0, r4 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2548] - ldr r2, .L295+20 + add r5, r5, r0 + ldr r3, [r6, #2548] + mov r0, r5 + ldr r2, .L265+20 mov r1, #64 - mov r0, r4 - add r7, r5, #352 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2560] - ldr r2, .L295+24 + add r5, r5, r0 + ldr r3, [r6, #2556] + mov r0, r5 + ldr r2, .L265+24 mov r1, #64 - mov r0, r4 - ldr r8, .L295+28 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2564] - ldr r2, .L295+32 + add r5, r5, r0 + ldr r3, [r6, #2560] + mov r0, r5 + ldr r2, .L265+28 mov r1, #64 - mov r0, r4 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2568] - ldr r2, .L295+36 + add r5, r5, r0 + ldr r3, [r6, #2564] + mov r0, r5 + ldr r2, .L265+32 mov r1, #64 - mov r0, r4 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2572] - ldr r2, .L295+40 + add r5, r5, r0 + ldr r3, [r6, #2568] + mov r0, r5 + ldr r2, .L265+36 mov r1, #64 - mov r0, r4 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2576] - ldr r2, .L295+44 + add r5, r5, r0 + ldr r3, [r6, #2572] + mov r0, r5 + ldr r2, .L265+40 mov r1, #64 - mov r0, r4 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2580] - ldr r2, .L295+48 + add r5, r5, r0 + ldr r3, [r6, #2576] + mov r0, r5 + ldr r2, .L265+44 mov r1, #64 - mov r0, r4 bl snprintf - ldr r3, [r5, #2584] - add r4, r4, r0 - ldr r2, .L295+52 + ldr r3, [r6, #2580] + add r5, r5, r0 + ldr r2, .L265+48 + mov r0, r5 mov r1, #64 - mov r0, r4 lsr r3, r3, #11 bl snprintf - ldr r3, [r5, #2588] - add r4, r4, r0 - ldr r2, .L295+56 + ldr r3, [r6, #2584] + add r5, r5, r0 + ldr r2, .L265+52 + mov r0, r5 mov r1, #64 - mov r0, r4 lsr r3, r3, #11 bl snprintf - add r4, r4, r0 - ldr r3, [r5, #2592] - ldr r2, .L295+60 - mov r1, #64 + add r4, r5, r0 + ldr r3, [r6, #2588] mov r0, r4 + ldr r2, .L265+56 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2596] - ldr r2, .L295+64 - mov r1, #64 + ldr r3, [r6, #2592] mov r0, r4 + ldr r2, .L265+60 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r7, #6] - ldr r2, .L295+68 - mov r1, #64 + ldrh r3, [r8, #6] mov r0, r4 + ldr r2, .L265+64 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #224] - ldr r2, .L295+72 - mov r1, #64 + ldrh r3, [r6, #224] mov r0, r4 + ldr r2, .L265+68 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2600] - ldr r2, .L295+76 - mov r1, #64 + ldr r3, [r6, #2596] mov r0, r4 + ldr r2, .L265+72 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2604] - ldr r2, .L295+80 - mov r1, #64 + ldr r3, [r6, #2600] mov r0, r4 + ldr r2, .L265+76 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2608] - ldr r2, .L295+84 - mov r1, #64 + ldr r3, [r6, #2604] mov r0, r4 + ldr r2, .L265+80 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2612] - ldr r2, .L295+88 - mov r1, #64 + ldr r3, [r6, #2608] mov r0, r4 + ldr r2, .L265+84 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2616] - ldr r2, .L295+92 - mov r1, #64 + ldr r3, [r6, #2612] mov r0, r4 + ldr r2, .L265+88 + mov r1, #64 + ldr r5, .L265+92 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2620] - ldr r2, .L295+96 - mov r1, #64 + ldr r3, [r6, #2616] + ldr r2, .L265+96 mov r0, r4 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r8, #30] - ldr r2, .L295+100 - mov r1, #64 + ldrh r3, [r5, #30] mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrh r3, [r8, #28] - ldr r2, .L295+104 + ldr r2, .L265+100 mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldr r3, [r5, #340] - ldr r2, .L295+108 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldr r3, [r5, #332] - ldr r2, .L295+112 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldr r3, [r5, #228] - ldr r2, .L295+116 - mov r1, #64 - mov r0, r4 - bl snprintf - add r3, r5, #412 - add r4, r4, r0 - ldrh r3, [r3, #6] - mov r1, #64 - ldr r2, .L295+120 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrh r3, [r5, #240] - ldr r2, .L295+124 - mov r1, #64 - mov r0, r4 - bl snprintf - add r3, r5, #2624 - add r4, r4, r0 - ldrh r3, [r3] - mov r1, #64 - ldr r2, .L295+128 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldr r3, [r5, #244] - ldr r2, .L295+132 - mov r1, #64 - mov r0, r4 - bl snprintf - movw r3, #2628 - add r4, r4, r0 - ldrh r3, [r5, r3] - mov r1, #64 - ldr r2, .L295+136 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrh r3, [r7] - ldr r2, .L295+140 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrh r3, [r5, #26] - ldr r2, .L295+144 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrb r3, [r5, #30] @ zero_extendqisi2 - ldr r2, .L295+148 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrh r3, [r5, #24] - ldr r2, .L295+152 - mov r1, #64 - mov r0, r4 - bl snprintf - add r4, r4, r0 - ldrb r3, [r5, #32] @ zero_extendqisi2 - ldr r2, .L295+156 - mov r1, #64 - mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #28] - ldr r2, .L295+160 - mov r1, #64 mov r0, r4 + ldr r2, .L265+104 + mov r1, #64 bl snprintf - ldrh r3, [r5, #24] add r4, r4, r0 - ldr r2, [r5, #72] - mov r1, #64 + ldr r3, [r6, #340] mov r0, r4 + ldr r2, .L265+108 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldr r3, [r6, #332] + mov r0, r4 + ldr r2, .L265+112 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldr r3, [r6, #228] + mov r0, r4 + ldr r2, .L265+116 + mov r1, #64 + bl snprintf + add r3, r6, #412 + add r4, r4, r0 + ldr r2, .L265+120 + mov r0, r4 + mov r1, #64 + ldrh r3, [r3, #6] + bl snprintf + add r4, r4, r0 + ldrh r3, [r6, #240] + mov r0, r4 + ldr r2, .L265+124 + mov r1, #64 + bl snprintf + movw r3, #2620 + add r4, r4, r0 + ldr r2, .L265+128 + ldrh r3, [r6, r3] + mov r0, r4 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldr r3, [r6, #244] + mov r0, r4 + ldr r2, .L265+132 + mov r1, #64 + bl snprintf + add r3, r6, #2624 + add r4, r4, r0 + ldr r2, .L265+136 + mov r0, r4 + mov r1, #64 + ldrh r3, [r3] + bl snprintf + add r4, r4, r0 + ldrh r3, [r8] + mov r0, r4 + ldr r2, .L265+140 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldrh r3, [r6, #26] + mov r0, r4 + ldr r2, .L265+144 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldrb r3, [r6, #30] @ zero_extendqisi2 + mov r0, r4 + ldr r2, .L265+148 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldrh r3, [r6, #24] + mov r0, r4 + ldr r2, .L265+152 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldrb r3, [r6, #32] @ zero_extendqisi2 + mov r0, r4 + ldr r2, .L265+156 + mov r1, #64 + bl snprintf + add r4, r4, r0 + ldrh r3, [r6, #28] + mov r0, r4 + ldr r2, .L265+160 + mov r1, #64 + bl snprintf + ldrh r3, [r6, #24] + ldr r2, [r6, #72] + add r4, r4, r0 + mov r0, r4 + mov r1, #64 lsl r3, r3, #1 ldrh r3, [r2, r3] - ldr r2, .L295+164 + ldr r2, .L265+164 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #78] - ldr r2, .L295+168 - mov r1, #64 + ldrh r3, [r6, #78] mov r0, r4 + ldr r2, .L265+168 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #82] @ zero_extendqisi2 - ldr r2, .L295+172 - mov r1, #64 + ldrb r3, [r6, #82] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+172 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #76] - ldr r2, .L295+176 - mov r1, #64 + ldrh r3, [r6, #76] mov r0, r4 + ldr r2, .L265+176 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #84] @ zero_extendqisi2 - ldr r2, .L295+180 - mov r1, #64 + ldrb r3, [r6, #84] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+180 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #80] - ldr r2, .L295+184 - mov r1, #64 + ldrh r3, [r6, #80] mov r0, r4 + ldr r2, .L265+184 + mov r1, #64 bl snprintf - ldrh r3, [r5, #76] + ldrh r3, [r6, #76] + ldr r2, [r6, #72] add r4, r4, r0 - ldr r2, [r5, #72] - mov r1, #64 mov r0, r4 + mov r1, #64 lsl r3, r3, #1 ldrh r3, [r2, r3] - ldr r2, .L295+188 + ldr r2, .L265+188 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #126] - ldr r2, .L295+192 - mov r1, #64 + ldrh r3, [r6, #126] mov r0, r4 + ldr r2, .L265+192 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #130] @ zero_extendqisi2 - ldr r2, .L295+196 - mov r1, #64 + ldrb r3, [r6, #130] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+196 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #124] - ldr r2, .L295+200 - mov r1, #64 + ldrh r3, [r6, #124] mov r0, r4 + ldr r2, .L265+200 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #132] @ zero_extendqisi2 - ldr r2, .L295+204 - mov r1, #64 + ldrb r3, [r6, #132] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+204 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #128] - ldr r2, .L295+208 - mov r1, #64 + ldrh r3, [r6, #128] mov r0, r4 + ldr r2, .L265+208 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #174] - ldr r2, .L295+212 - mov r1, #64 + ldrh r3, [r6, #174] mov r0, r4 + ldr r2, .L265+212 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #178] @ zero_extendqisi2 - ldr r2, .L295+216 - mov r1, #64 + ldrb r3, [r6, #178] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+216 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #172] - ldr r2, .L295+220 - mov r1, #64 + ldrh r3, [r6, #172] mov r0, r4 + ldr r2, .L265+220 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrb r3, [r5, #180] @ zero_extendqisi2 - ldr r2, .L295+224 - mov r1, #64 + ldrb r3, [r6, #180] @ zero_extendqisi2 mov r0, r4 + ldr r2, .L265+224 + mov r1, #64 bl snprintf add r4, r4, r0 - ldrh r3, [r5, #176] - ldr r2, .L295+228 - mov r1, #64 + ldrh r3, [r6, #176] mov r0, r4 + ldr r2, .L265+228 + mov r1, #64 bl snprintf - ldr r3, [r5, #2720] + ldr r3, [r6, #2716] add r4, r4, r0 - ldr r2, .L295+232 - mov r1, #64 - mov r0, r4 str r3, [sp, #4] - ldr r3, [r5, #2728] + ldr r3, [r6, #2724] + mov r0, r4 + ldr r2, .L265+232 + mov r1, #64 str r3, [sp] - ldr r3, [r5, #2724] + ldr r3, [r6, #2720] bl snprintf add r4, r4, r0 - ldr r3, [r5, #2716] - ldr r2, .L295+236 - mov r1, #64 + ldr r3, [r6, #2712] mov r0, r4 + ldr r2, .L265+236 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #2740] - ldr r2, .L295+240 - mov r1, #64 + ldr r3, [r6, #2736] mov r0, r4 - bl snprintf - movw r3, #3156 - add r4, r4, r0 - ldrh r3, [r5, r3] + ldr r2, .L265+240 mov r1, #64 - ldr r2, .L295+244 + bl snprintf + add r3, r6, #3152 + add r4, r4, r0 + ldr r2, .L265+244 mov r0, r4 - bl snprintf - movw r3, #3158 - add r4, r4, r0 - ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L295+248 + ldrh r3, [r3] + bl snprintf + movw r3, #3154 + add r4, r4, r0 + ldr r2, .L265+248 + ldrh r3, [r6, r3] mov r0, r4 + mov r1, #64 bl snprintf add r4, r4, r0 - ldr r3, [r5, #3160] - ldr r2, .L295+252 - mov r1, #64 + ldr r3, [r6, #3156] mov r0, r4 - bl snprintf - movw r3, #3164 - add r4, r4, r0 - ldrh r3, [r5, r3] + ldr r2, .L265+252 + mov r1, #64 + bl snprintf + movw r3, #3160 + add r4, r4, r0 + ldr r2, .L265+256 + ldrh r3, [r6, r3] mov r1, #64 - ldr r2, .L295+256 mov r0, r4 bl snprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r2, .L295+260 + ldr r2, .L265+260 mov r3, r0 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 - ldrh r0, [r5, #224] + ldrh r0, [r6, #224] bl GetFreeBlockMaxEraseCount - ldr r2, .L295+264 + ldr r2, .L265+264 mov r3, r0 mov r1, #64 mov r0, r4 bl snprintf - ldr r3, .L295+268 + ldr r3, .L265+268 add r4, r4, r0 ldr r3, [r3] cmp r3, #1 - beq .L283 -.L288: - sub r0, r4, r6 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L283: - ldrh r3, [r5, #172] + beq .L254 +.L259: + sub r0, r4, r7 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L254: + ldrh r3, [r6, #172] movw r2, #65535 cmp r3, r2 - beq .L285 - ldr r2, [r5, #72] + beq .L256 + ldr r2, [r6, #72] lsl r3, r3, #1 mov r0, r4 mov r1, #64 ldrh r3, [r2, r3] - ldr r2, .L295+272 + ldr r2, .L265+272 bl snprintf add r4, r4, r0 -.L285: +.L256: mov r0, #0 - ldr r9, .L295+276 + ldr r10, .L265+276 bl List_get_gc_head_node uxth r0, r0 - mov r7, #0 - movw fp, #65535 - mov r10, #6 -.L287: - cmp r0, fp - beq .L286 - ldr r3, [r5, #2536] + mov r5, #0 + movw r9, #65535 +.L258: + ldr r3, [r6, #2516] + cmp r0, r9 + beq .L257 + mov r8, #6 lsl r2, r0, #1 - mul r8, r10, r0 - mov r1, #64 - ldrh r3, [r3, r2] - str r3, [sp, #12] - ldr r3, [r5, #2516] + ldr r1, [r6, #2536] + mul r8, r8, r0 + ldrh r1, [r1, r2] add r3, r3, r8 + str r1, [sp, #12] + mov r1, #64 ldrh r3, [r3, #4] str r3, [sp, #8] - ldr r3, [r5, #72] + ldr r3, [r6, #72] ldrh r3, [r3, r2] - mov r2, r9 + mov r2, r10 stm sp, {r0, r3} - mov r3, r7 + mov r3, r5 mov r0, r4 - add r7, r7, #1 + add r5, r5, #1 bl snprintf - ldr r3, [r5, #2516] - cmp r7, #16 + ldr r3, [r6, #2516] add r4, r4, r0 + cmp r5, #16 ldrh r0, [r3, r8] - bne .L287 -.L286: - ldr r2, [r5, #2516] - mov r7, #0 - ldr r3, [r5, #2532] + bne .L258 +.L257: + ldr r3, [r6, #2516] + mov r8, #0 + ldr r1, [r6, #2532] movw r9, #65535 - ldr fp, .L295+280 - mov r10, #6 - sub r3, r3, r2 - ldr r2, .L295+284 - asr r3, r3, #1 - mul r3, r2, r3 - uxth r3, r3 -.L289: - cmp r3, r9 - beq .L288 - ldr r1, [r5, #2536] - lsl r2, r3, #1 - mul r8, r10, r3 + ldr r10, .L265+280 + sub r1, r1, r3 + ldr r3, .L265+284 + asr r1, r1, #1 + mul r1, r3, r1 + uxth r1, r1 +.L260: + cmp r1, r9 + beq .L259 + ldr r2, [r6, #2536] + lsl r3, r1, #1 + mov r5, #6 mov r0, r4 - ldrh r2, [r1, r2] + ldrh r3, [r2, r3] + mul r5, r5, r1 + str r3, [sp, #8] + mov r2, r10 + ldr r3, [r6, #2516] + add r3, r3, r5 + ldrh r3, [r3, #4] + stm sp, {r1, r3} + mov r3, r8 mov r1, #64 - str r2, [sp, #8] - ldr r2, [r5, #2516] - add r2, r2, r8 - ldrh r2, [r2, #4] - str r3, [sp] - mov r3, r7 - add r7, r7, #1 - str r2, [sp, #4] - mov r2, fp + add r8, r8, #1 bl snprintf - cmp r7, #4 + cmp r8, #4 add r4, r4, r0 - beq .L288 - ldr r3, [r5, #2516] - ldrh r3, [r3, r8] - b .L289 -.L296: + beq .L259 + ldr r3, [r6, #2516] + ldrh r1, [r3, r5] + b .L260 +.L266: .align 2 -.L295: +.L265: .word .LANCHOR0 .word .LC9 .word .LC10 @@ -2432,7 +2680,6 @@ FtlPrintInfo2buf: .word .LC12 .word .LC13 .word .LC14 - .word .LANCHOR0+2468 .word .LC15 .word .LC16 .word .LC17 @@ -2449,6 +2696,7 @@ FtlPrintInfo2buf: .word .LC28 .word .LC29 .word .LC30 + .word .LANCHOR0+2468 .word .LC31 .word .LC32 .word .LC33 @@ -2497,8 +2745,11 @@ FtlPrintInfo2buf: .word .LC75 .word .LC76 .word -1431655765 - .fnend .size FtlPrintInfo2buf, .-FtlPrintInfo2buf + .section .rodata.str1.1 +.LC77: + .ascii "%s\012\000" + .text .align 2 .global rknand_proc_ftlread .syntax unified @@ -2506,35 +2757,41 @@ FtlPrintInfo2buf: .fpu softvfp .type rknand_proc_ftlread, %function rknand_proc_ftlread: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r0, #2048 - blt .L299 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r5, r1 - ldr r3, .L304 + cmp r0, #2048 + blt .L269 + ldr r3, .L270 + add r4, r5, #30 + ldr r2, .L270+4 mov r1, #64 mov r0, r5 - ldr r2, .L304+4 bl snprintf - add r4, r5, r0 mov r0, r4 bl FtlPrintInfo2buf add r0, r4, r0 sub r0, r0, r5 - pop {r4, r5, r6, pc} -.L299: + ldmfd sp, {r4, r5, fp, sp, pc} +.L269: mov r0, #0 - bx lr -.L305: + ldmfd sp, {r4, r5, fp, sp, pc} +.L271: .align 2 -.L304: +.L270: .word .LC0 .word .LC77 - .fnend .size rknand_proc_ftlread, .-rknand_proc_ftlread + .section .rodata.str1.1 +.LC78: + .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" + .ascii "\012\000" + .text .align 2 .global GetSwlReplaceBlock .syntax unified @@ -2542,175 +2799,176 @@ rknand_proc_ftlread: .fpu softvfp .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #28 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #28 - ldr r4, .L331 - ldr r2, [r4, #2608] - ldr r3, [r4, #2620] + push {lr} + bl __gnu_mcount_nc + ldr r4, .L296 + ldr r2, [r4, #2604] + ldr r3, [r4, #2616] cmp r2, r3 - bcs .L307 + bcs .L273 ldr r2, [r4, #2536] mov r3, #0 ldrh r1, [r4, #240] - str r3, [r4, #2600] sub r2, r2, #2 -.L308: - cmp r3, r1 - bcc .L309 - ldr r5, [r4, #2600] + str r3, [r4, #2596] +.L274: + ldr r5, [r4, #2596] + cmp r1, r3 + bhi .L275 mov r0, r5 bl __aeabi_uidiv - ldr r3, .L331+4 - str r0, [r4, #2608] - ldr r0, [r4, #2604] + ldr r3, .L296+4 + str r0, [r4, #2604] + ldr r0, [r4, #2600] ldrh r1, [r3] sub r0, r5, r0 bl __aeabi_uidiv - str r0, [r4, #2600] -.L310: - ldr r6, [r4, #2620] - ldr r7, [r4, #2608] + str r0, [r4, #2596] +.L276: + ldr r6, [r4, #2616] + ldr r9, [r4, #2604] add r3, r6, #256 - cmp r3, r7 - bls .L315 - ldr r2, [r4, #2616] + cmp r3, r9 + bls .L281 + ldr r2, [r4, #2612] add r3, r6, #768 cmp r3, r2 - bls .L315 -.L317: + bls .L281 +.L283: movw r5, #65535 -.L316: +.L282: mov r0, r5 - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L309: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L275: ldrh r0, [r2, #2]! add r3, r3, #1 - ldr ip, [r4, #2600] - add r0, r0, ip - str r0, [r4, #2600] - b .L308 -.L307: - ldr r3, [r4, #2616] + add r5, r0, r5 + str r5, [r4, #2596] + b .L274 +.L273: + ldr r3, [r4, #2612] cmp r2, r3 addhi r3, r3, #1 - strhi r3, [r4, #2616] + strhi r3, [r4, #2612] movhi r3, #0 - bls .L310 -.L312: + bls .L276 +.L278: ldrh r2, [r4, #240] - cmp r3, r2 - bcs .L310 - ldr r0, [r4, #2536] + cmp r2, r3 + bls .L276 lsl r1, r3, #1 + ldr r0, [r4, #2536] add r3, r3, #1 ldrh r2, [r0, r1] add r2, r2, #1 strh r2, [r0, r1] @ movhi - b .L312 -.L315: + b .L278 +.L281: ldrh r0, [r4, #224] add r0, r0, r0, lsl #1 - ubfx r0, r0, #2, #16 + lsr r0, r0, #2 bl GetFreeBlockMaxEraseCount add r3, r6, #64 - mov r9, r0 + mov r7, r0 cmp r0, r3 - bcc .L317 + bcc .L283 ldr r3, [r4, #2520] cmp r3, #0 - beq .L317 + beq .L283 ldrh r2, [r4, #240] - movw r1, #65535 - ldr lr, [r4, #2516] - mov r0, #0 - ldr r8, [r4, #2536] - mov fp, #6 - ldr r10, .L331+8 - str r2, [sp, #20] - mov r2, r1 -.L318: - ldrh ip, [r3] + movw r8, #65535 + ldr ip, [r4, #2516] + mov r1, #0 + ldr r10, [r4, #2536] + mov lr, #6 + str r2, [fp, #-48] + mov r2, r8 +.L284: + ldrh r0, [r3] movw r5, #65535 - cmp ip, r5 - bne .L321 + cmp r0, r5 + bne .L287 mov r5, r2 -.L320: +.L286: movw r3, #65535 cmp r5, r3 - beq .L317 - lsl fp, r5, #1 - ldrh r10, [r8, fp] - cmp r6, r10 - bcs .L322 + beq .L283 + lsl r1, r5, #1 + ldrh r2, [r10, r1] + cmp r6, r2 + bcs .L288 + str r2, [fp, #-52] + str r1, [fp, #-48] bl GetFreeBlockMinEraseCount + ldr r1, [fp, #-48] cmp r6, r0 - strcc r1, [r4, #2620] -.L322: - cmp r7, r10 - bls .L317 - add r3, r10, #128 - cmp r9, r3 - ble .L317 - add r3, r10, #256 + ldr r2, [fp, #-52] + strcc r8, [r4, #2616] +.L288: + cmp r9, r2 + bls .L283 + add r3, r2, #128 cmp r7, r3 - bhi .L323 - ldr r3, [r4, #2616] - add r10, r10, #768 - cmp r10, r3 - bcs .L317 -.L323: - str r9, [sp, #8] - mov r2, r7 - ldrh r3, [r8, fp] + ble .L283 + add r0, r2, #256 + ldr r3, [r4, #2612] + cmp r9, r0 + bhi .L289 + add r2, r2, #768 + cmp r2, r3 + bcs .L283 +.L289: + str r7, [sp, #8] + ldr r0, .L296+8 + ldrh r2, [r10, r1] + str r2, [sp, #4] + ldr r2, [r4, #72] + ldrh r2, [r2, r1] mov r1, r5 - ldr r0, .L331+12 - str r3, [sp, #4] - ldr r3, [r4, #72] - ldrh r3, [r3, fp] - str r3, [sp] - ldr r3, [r4, #2616] + str r2, [sp] + mov r2, r9 bl sftl_printk mov r3, #1 - str r3, [r4, #3168] - b .L316 -.L321: - add r0, r0, #1 - ldr r5, [sp, #20] - uxth r0, r0 - cmp r0, r5 - bhi .L317 + str r3, [r4, #3164] + b .L282 +.L287: + add r1, r1, #1 + ldr r5, [fp, #-48] + uxth r1, r1 + cmp r5, r1 + bcc .L283 ldrh r5, [r3, #4] cmp r5, #0 - beq .L319 - sub r3, r3, lr + beq .L285 + sub r3, r3, ip + ldr r5, .L296+12 asr r3, r3, #1 - mul r3, r10, r3 + mul r3, r5, r3 uxth r5, r3 lsl r3, r5, #1 - ldrh r3, [r8, r3] + ldrh r3, [r10, r3] cmp r6, r3 - bcs .L320 - cmp r1, r3 - movhi r1, r3 - movhi r2, r5 -.L319: - mla r3, fp, ip, lr - b .L318 -.L332: + bcs .L286 + cmp r3, r8 + movcc r8, r3 + movcc r2, r5 +.L285: + mla r3, lr, r0, ip + b .L284 +.L297: .align 2 -.L331: +.L296: .word .LANCHOR0 .word .LANCHOR0+292 - .word -1431655765 .word .LC78 - .fnend + .word -1431655765 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock @@ -2719,30 +2977,29 @@ GetSwlReplaceBlock: .fpu softvfp .type free_data_superblock, %function free_data_superblock: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc movw r2, #65535 cmp r0, r2 - beq .L336 - ldr r2, .L339 + beq .L299 + ldr r2, .L300 lsl r3, r0, #1 - push {r4, lr} - .save {r4, lr} mov r1, #0 ldr r2, [r2, #72] strh r1, [r2, r3] @ movhi bl INSERT_FREE_LIST +.L299: mov r0, #0 - pop {r4, pc} -.L336: - mov r0, #0 - bx lr -.L340: + ldmfd sp, {fp, sp, pc} +.L301: .align 2 -.L339: +.L300: .word .LANCHOR0 - .fnend .size free_data_superblock, .-free_data_superblock .align 2 .global get_new_active_ppa @@ -2751,113 +3008,113 @@ free_data_superblock: .fpu softvfp .type get_new_active_ppa, %function get_new_active_ppa: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movw r3, #65535 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldrh r2, [r0] + movw r3, #65535 mov r4, r0 cmp r2, r3 - bne .L342 - movw r2, #2785 - ldr r1, .L357 - ldr r0, .L357+4 + bne .L303 + ldr r1, .L317 + movw r2, #2792 + ldr r0, .L317+4 bl sftl_printk -.L342: - ldr r6, .L357+8 +.L303: + ldr r6, .L317+8 movw r3, #302 ldrh r2, [r4, #2] ldrh r3, [r6, r3] cmp r2, r3 - bne .L343 - movw r2, #2786 - ldr r1, .L357 - ldr r0, .L357+4 + bne .L304 + ldr r1, .L317 + movw r2, #2793 + ldr r0, .L317+4 bl sftl_printk -.L343: +.L304: ldrh r3, [r4, #4] cmp r3, #0 - bne .L344 - movw r2, #2787 - ldr r1, .L357 - ldr r0, .L357+4 + bne .L305 + ldr r1, .L317 + movw r2, #2794 + ldr r0, .L317+4 bl sftl_printk -.L344: - ldrb r2, [r4, #6] @ zero_extendqisi2 - mov r3, #0 - ldrh r1, [r6, #232] +.L305: + ldrb r3, [r4, #6] @ zero_extendqisi2 + mov r1, #0 + strb r1, [r4, #10] movw ip, #65535 - strb r3, [r4, #10] - add r2, r4, r2, lsl #1 - ldrh r0, [r2, #16] - mov r2, r3 -.L345: - cmp r0, ip - beq .L347 - movw r3, #302 - ldrh r5, [r4, #2] - ldrh ip, [r6, r3] + ldrh r0, [r6, #232] + add r3, r4, r3, lsl #1 + ldrh r5, [r3, #16] +.L306: + ldrh r2, [r4, #2] cmp r5, ip - movwcs r5, #65535 - bcs .L341 - ldrh r2, [r4, #4] - orr r5, r5, r0, lsl #10 - ldrb r3, [r4, #6] @ zero_extendqisi2 + beq .L308 + movw r3, #302 + ldrh ip, [r6, r3] + cmp ip, r2 + movwls r5, #65535 + bls .L302 + ldrh r3, [r4, #4] + orr r5, r2, r5, lsl #10 + ldrb r2, [r4, #6] @ zero_extendqisi2 movw lr, #65535 - sub r2, r2, #1 - uxth r2, r2 - strh r2, [r4, #4] @ movhi -.L350: - add r3, r3, #1 - uxtb r3, r3 - cmp r1, r3 - ldrheq r0, [r4, #2] - moveq r3, #0 - addeq r0, r0, #1 - strheq r0, [r4, #2] @ movhi - add r0, r4, r3, lsl #1 - ldrh r0, [r0, #16] - cmp r0, lr - beq .L350 - strb r3, [r4, #6] - cmp r2, #0 - ldrh r3, [r4, #2] - sub r3, r3, ip - clz r3, r3 - lsr r3, r3, #5 - moveq r3, #0 + sub r3, r3, #1 + uxth r3, r3 + strh r3, [r4, #4] @ movhi +.L311: + add r1, r2, #1 + uxtb r2, r1 + cmp r0, r2 + mov r1, r2 + moveq r2, #0 + ldrheq r1, [r4, #2] + addeq r1, r1, #1 + strheq r1, [r4, #2] @ movhi + add r1, r4, r2, lsl #1 + ldrh r1, [r1, #16] + cmp r1, lr + beq .L311 + strb r2, [r4, #6] cmp r3, #0 - beq .L341 - movw r2, #2810 - ldr r1, .L357 - ldr r0, .L357+4 + ldrh r2, [r4, #2] + sub r2, r2, ip + clz r2, r2 + lsr r2, r2, #5 + moveq r2, #0 + cmp r2, #0 + beq .L302 + ldr r1, .L317 + movw r2, #2817 + ldr r0, .L317+4 bl sftl_printk -.L341: +.L302: mov r0, r5 - pop {r4, r5, r6, pc} -.L347: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L308: ldrb r3, [r4, #6] @ zero_extendqisi2 add r3, r3, #1 uxtb r3, r3 - cmp r3, r1 strb r3, [r4, #6] - ldrheq r3, [r4, #2] - strbeq r2, [r4, #6] - addeq r3, r3, #1 - strheq r3, [r4, #2] @ movhi + cmp r3, r0 + strbeq r1, [r4, #6] + addeq r2, r2, #1 + strheq r2, [r4, #2] @ movhi ldrb r3, [r4, #6] @ zero_extendqisi2 add r3, r4, r3, lsl #1 - ldrh r0, [r3, #16] - b .L345 -.L358: + ldrh r5, [r3, #16] + b .L306 +.L318: .align 2 -.L357: +.L317: .word .LANCHOR1+111 .word .LC8 .word .LANCHOR0 - .fnend .size get_new_active_ppa, .-get_new_active_ppa .align 2 .global FtlGcBufInit @@ -2866,103 +3123,101 @@ get_new_active_ppa: .fpu softvfp .type FtlGcBufInit, %function FtlGcBufInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - mov lr, #12 - ldr r5, .L365 - mov r4, #1 - mov r6, #20 - mov r3, #0 - ldr r2, .L365+4 - str r3, [r2, #3172] -.L360: - ldrh r1, [r2, #232] - uxth r0, r3 - add ip, r3, #1 - cmp r0, r1 - bcc .L361 - ldr r4, .L365 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L325 + mov r1, #0 + ldr r6, .L325+4 + mov r4, #12 + mov r5, #1 + mov r7, #20 + str r1, [r3, #3168] +.L320: + ldrh r2, [r3, #232] + uxth r0, r1 + cmp r2, r0 + bhi .L321 + ldr r4, .L325+4 mov ip, #12 mov lr, #0 -.L362: - ldr r3, [r2, #3192] - cmp r1, r3 - bcc .L363 - pop {r4, r5, r6, r7, r8, r9, pc} -.L361: - uxth r3, r3 - ldr r7, [r2, #3176] - mul r0, lr, r3 - add r1, r7, r0 - str r4, [r1, #8] - ldrh r1, [r5] - mul r1, r3, r1 - add r8, r1, #3 - cmp r1, #0 - movlt r1, r8 - ldr r8, [r2, #3180] +.L322: + ldr r1, [r3, #3188] + cmp r2, r1 + ldmfdcs sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} + ldrh r0, [r4] + mul r5, ip, r2 + ldr r6, [r3, #3172] + add r1, r6, r5 + mul r0, r2, r0 + cmp r0, #0 + str lr, [r1, #8] + add r1, r0, #3 + movge r1, r0 + ldr r0, [r3, #3176] bic r1, r1, #3 - add r1, r8, r1 - str r1, [r7, r0] - ldr r1, .L365+8 - ldr r8, [r2, #3176] - ldrh r1, [r1] - add r7, r8, r0 - mul r1, r3, r1 - add r9, r1, #3 - cmp r1, #0 - movlt r1, r9 - ldr r9, [r2, #3184] + add r1, r0, r1 + str r1, [r6, r5] + ldr r1, [r3, #3172] + add r5, r1, r5 + ldr r1, .L325+8 + ldrh r0, [r1] + mul r0, r2, r0 + add r2, r2, #1 + cmp r0, #0 + add r1, r0, #3 + movge r1, r0 + ldr r0, [r3, #3180] bic r1, r1, #3 - add r1, r9, r1 - str r1, [r7, #4] - ldr r1, [r2, #3188] - mla r3, r6, r3, r1 - ldr r1, [r8, r0] - str r1, [r3, #8] - ldr r1, [r7, #4] - str r1, [r3, #12] - mov r3, ip - b .L360 -.L363: - mul r5, ip, r1 - ldr r6, [r2, #3176] - add r3, r6, r5 - str lr, [r3, #8] - ldrh r3, [r4] - mul r3, r1, r3 - add r0, r3, #3 - cmp r3, #0 - movlt r3, r0 - ldr r0, [r2, #3180] - bic r3, r3, #3 - add r3, r0, r3 - str r3, [r6, r5] - ldr r3, .L365+8 - ldr r0, [r2, #3176] - ldrh r3, [r3] - add r0, r0, r5 - mul r3, r1, r3 + uxth r2, r2 + add r1, r0, r1 + str r1, [r5, #4] + b .L322 +.L321: + uxth ip, r1 + ldrh lr, [r6] + ldr r8, [r3, #3172] add r1, r1, #1 - uxth r1, r1 - add r5, r3, #3 - cmp r3, #0 - movlt r3, r5 - ldr r5, [r2, #3184] - bic r3, r3, #3 - add r3, r5, r3 - str r3, [r0, #4] - b .L362 -.L366: + mul r0, r4, ip + mul lr, ip, lr + add r2, r8, r0 + cmp lr, #0 + str r5, [r2, #8] + add r2, lr, #3 + movge r2, lr + ldr lr, [r3, #3176] + bic r2, r2, #3 + add r2, lr, r2 + str r2, [r8, r0] + ldr r2, .L325+8 + ldr r8, [r3, #3172] + add lr, r8, r0 + ldrh r9, [r2] + mul r9, ip, r9 + cmp r9, #0 + add r2, r9, #3 + movge r2, r9 + ldr r9, [r3, #3180] + bic r2, r2, #3 + add r2, r9, r2 + str r2, [lr, #4] + ldr r2, [r3, #3184] + mla ip, r7, ip, r2 + ldr r2, [r8, r0] + str r2, [ip, #8] + ldr r2, [lr, #4] + str r2, [ip, #12] + b .L320 +.L326: .align 2 -.L365: - .word .LANCHOR0+310 +.L325: .word .LANCHOR0 + .word .LANCHOR0+310 .word .LANCHOR0+312 - .fnend .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlGcBufFree @@ -2971,44 +3226,45 @@ FtlGcBufInit: .fpu softvfp .type FtlGcBufFree, %function FtlGcBufFree: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L375 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L334 mov lr, #0 + mov r8, lr mov r5, #20 mov r7, #12 - mov r8, lr - ldr r6, [r3, #3192] - ldr r4, [r3, #3176] -.L368: + ldr r6, [r3, #3188] + ldr r4, [r3, #3172] +.L328: uxth r3, lr cmp r1, r3 - popls {r4, r5, r6, r7, r8, r9, r10, pc} + ldmfdls sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} mla ip, r5, r3, r0 mov r2, #0 -.L369: +.L329: uxth r3, r2 cmp r6, r3 - bls .L370 + bls .L330 mul r3, r7, r3 add r2, r2, #1 - ldr r10, [r4, r3] add r9, r4, r3 + ldr r10, [r4, r3] ldr r3, [ip, #8] cmp r10, r3 - bne .L369 + bne .L329 str r8, [r9, #8] -.L370: +.L330: add lr, lr, #1 - b .L368 -.L376: + b .L328 +.L335: .align 2 -.L375: +.L334: .word .LANCHOR0 - .fnend .size FtlGcBufFree, .-FtlGcBufFree .align 2 .global FtlGcBufAlloc @@ -3017,48 +3273,47 @@ FtlGcBufFree: .fpu softvfp .type FtlGcBufAlloc, %function FtlGcBufAlloc: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L385 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L344 mov ip, #0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} mov r6, #12 mov r7, #1 mov r8, #20 - ldr r4, [r3, #3192] - ldr r5, [r3, #3176] -.L378: + ldr r5, [r3, #3188] + ldr r4, [r3, #3172] +.L337: uxth r2, ip cmp r1, r2 - bhi .L382 - pop {r4, r5, r6, r7, r8, r9, pc} -.L382: + ldmfdls sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} mov lr, #0 -.L379: +.L338: uxth r3, lr - cmp r4, r3 - bls .L380 - mla r3, r6, r3, r5 + cmp r5, r3 + bls .L339 + mla r3, r6, r3, r4 add lr, lr, #1 ldr r9, [r3, #8] cmp r9, #0 - bne .L379 + bne .L338 mla r2, r8, r2, r0 ldr lr, [r3] str r7, [r3, #8] str lr, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L380: +.L339: add ip, ip, #1 - b .L378 -.L386: + b .L337 +.L345: .align 2 -.L385: +.L344: .word .LANCHOR0 - .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 .global IsBlkInGcList @@ -3067,31 +3322,33 @@ FtlGcBufAlloc: .fpu softvfp .type IsBlkInGcList, %function IsBlkInGcList: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L392 - ldr r3, [r2, #3196] - add r2, r2, #3200 - ldrh r2, [r2] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r2, .L351 + movw r1, #3196 + ldr r3, [r2, #3192] + ldrh r2, [r2, r1] add r2, r3, r2, lsl #1 -.L388: +.L347: cmp r3, r2 - bne .L390 + bne .L349 mov r0, #0 - bx lr -.L390: + ldmfd sp, {fp, sp, pc} +.L349: ldrh r1, [r3], #2 cmp r1, r0 - bne .L388 + bne .L347 mov r0, #1 - bx lr -.L393: + ldmfd sp, {fp, sp, pc} +.L352: .align 2 -.L392: +.L351: .word .LANCHOR0 - .fnend .size IsBlkInGcList, .-IsBlkInGcList .align 2 .global FtlGcUpdatePage @@ -3100,57 +3357,63 @@ IsBlkInGcList: .fpu softvfp .type FtlGcUpdatePage, %function FtlGcUpdatePage: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r4, r0 ubfx r0, r0, #10, #16 mov r5, r1 mov r6, r2 bl P2V_block_in_plane - ldr r3, .L399 + ldr r3, .L357 + movw r2, #3196 mov ip, #0 - add lr, r3, #3200 - ldr r1, [r3, #3196] - ldrh r7, [lr] - sub r2, r1, #2 -.L395: - uxth r8, ip - cmp r8, r7 - bcc .L397 - moveq ip, r8 - lsleq ip, ip, #1 - strheq r0, [r1, ip] @ movhi - ldrheq r2, [lr] - addeq r2, r2, #1 - strheq r2, [lr] @ movhi - b .L396 -.L397: - ldrh r8, [r2, #2]! - add ip, ip, #1 - cmp r8, r0 - bne .L395 -.L396: - movw ip, #3208 - mov r0, #12 - ldrh r2, [r3, ip] - mul r0, r0, r2 - ldr r2, [r3, #3204] - add r1, r2, r0 - stmib r1, {r5, r6} - str r4, [r2, r0] - ldrh r2, [r3, ip] + ldrh r7, [r3, r2] + ldr r2, [r3, #3192] + sub r1, r2, #2 +.L354: + uxth lr, ip + cmp r7, lr + bhi .L356 + bne .L355 + lsl ip, ip, #1 + movw r1, #3196 + strh r0, [r2, ip] @ movhi + ldrh r2, [r3, r1] add r2, r2, #1 - strh r2, [r3, ip] @ movhi - pop {r4, r5, r6, r7, r8, pc} -.L400: + strh r2, [r3, r1] @ movhi + b .L355 +.L356: + ldrh lr, [r1, #2]! + add ip, ip, #1 + cmp lr, r0 + bne .L354 +.L355: + movw r2, #3204 + mov r1, #12 + ldrh ip, [r3, r2] + mul ip, r1, ip + ldr r1, [r3, #3200] + add r0, r1, ip + stmib r0, {r5, r6} + str r4, [r1, ip] + ldrh r1, [r3, r2] + add r1, r1, #1 + strh r1, [r3, r2] @ movhi + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L358: .align 2 -.L399: +.L357: .word .LANCHOR0 - .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage + .section .rodata.str1.1 +.LC79: + .ascii "FtlGcRefreshBlock 0x%x\012\000" + .text .align 2 .global FtlGcRefreshBlock .syntax unified @@ -3158,38 +3421,43 @@ FtlGcUpdatePage: .fpu softvfp .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r1, r0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r4, r0 - ldr r0, .L405 + mov r1, r0 + ldr r0, .L362 bl sftl_printk - ldr r3, .L405+4 + ldr r3, .L362+4 ldrh r0, [r3, #222] - cmp r4, r0 - beq .L402 + cmp r0, r4 + beq .L360 ldrh r1, [r3, #220] - cmp r4, r1 - beq .L402 + cmp r1, r4 + beq .L360 movw r2, #65535 cmp r0, r2 strheq r4, [r3, #222] @ movhi - beq .L402 + beq .L360 cmp r1, r2 strheq r4, [r3, #220] @ movhi -.L402: +.L360: mov r0, #0 - pop {r4, pc} -.L406: + ldmfd sp, {r4, r5, fp, sp, pc} +.L363: .align 2 -.L405: +.L362: .word .LC79 .word .LANCHOR0 - .fnend .size FtlGcRefreshBlock, .-FtlGcRefreshBlock + .section .rodata.str1.1 +.LC80: + .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" + .text .align 2 .global FtlGcMarkBadPhyBlk .syntax unified @@ -3197,53 +3465,54 @@ FtlGcRefreshBlock: .fpu softvfp .type FtlGcMarkBadPhyBlk, %function FtlGcMarkBadPhyBlk: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r5, r0 - ldr r4, .L412 - movw r6, #3210 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L368 + movw r7, #3206 + mov r4, r0 bl P2V_block_in_plane - mov r2, r5 - mov r7, r0 - ldrh r1, [r4, r6] - ldr r0, .L412+4 + mov r2, r4 + mov r6, r0 + ldr r0, .L368+4 + ldrh r1, [r5, r7] bl sftl_printk - mov r0, r7 + mov r0, r6 bl FtlGcRefreshBlock - ldrh r3, [r4, r6] + ldr r1, .L368+8 + ldrh r3, [r5, r7] mov r2, #0 - ldr r0, .L412+8 -.L408: - uxth r1, r2 - cmp r3, r1 - bhi .L410 + mov r0, r1 +.L365: + uxth ip, r2 + cmp r3, ip + bhi .L367 cmp r3, #15 - movwls r2, #3210 - addls r1, r3, #1 - strhls r1, [r4, r2] @ movhi - lslls r3, r3, #1 - ldrls r2, .L412+8 - strhls r5, [r2, r3] @ movhi - b .L409 -.L410: + bhi .L366 + add r1, r3, #1 + lsl r3, r3, #1 + movw r2, #3206 + strh r4, [r0, r3] @ movhi + strh r1, [r5, r2] @ movhi + b .L366 +.L367: + ldrh ip, [r1], #2 add r2, r2, #1 - add r1, r0, r2, lsl #1 - ldrh r1, [r1, #-2] - cmp r1, r5 - bne .L408 -.L409: + cmp ip, r4 + bne .L365 +.L366: mov r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L413: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L369: .align 2 -.L412: +.L368: .word .LANCHOR0 .word .LC80 - .word .LANCHOR0+3212 - .fnend + .word .LANCHOR0+3208 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 2 .global FtlGcReFreshBadBlk @@ -3252,28 +3521,30 @@ FtlGcMarkBadPhyBlk: .fpu softvfp .type FtlGcReFreshBadBlk, %function FtlGcReFreshBadBlk: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movw r3, #3210 - ldr r4, .L421 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L376 + movw r3, #3206 ldrh r2, [r4, r3] cmp r2, #0 - beq .L415 + beq .L371 ldrh r1, [r4, #222] movw r3, #65535 cmp r1, r3 - bne .L415 - movw r3, #3246 - movw r5, #3246 + bne .L371 + movw r3, #3242 + movw r5, #3242 ldrh r1, [r4, r3] cmp r1, r2 movcs r2, #0 strhcs r2, [r4, r3] @ movhi + ldr r2, .L376+4 ldrh r3, [r4, r5] - ldr r2, .L421+4 lsl r3, r3, #1 ldrh r0, [r2, r3] bl P2V_block_in_plane @@ -3281,15 +3552,14 @@ FtlGcReFreshBadBlk: ldrh r3, [r4, r5] add r3, r3, #1 strh r3, [r4, r5] @ movhi -.L415: +.L371: mov r0, #0 - pop {r4, r5, r6, pc} -.L422: + ldmfd sp, {r4, r5, fp, sp, pc} +.L377: .align 2 -.L421: +.L376: .word .LANCHOR0 - .word .LANCHOR0+3212 - .fnend + .word .LANCHOR0+3208 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 2 .global ftl_malloc @@ -3298,17 +3568,16 @@ FtlGcReFreshBadBlk: .fpu softvfp .type ftl_malloc, %function ftl_malloc: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r1, .L424 - b __kmalloc -.L425: - .align 2 -.L424: - .word 6291649 - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + movw r1, #3265 + bl __kmalloc + ldmfd sp, {fp, sp, pc} .size ftl_malloc, .-ftl_malloc .align 2 .global ftl_free @@ -3317,13 +3586,28 @@ ftl_malloc: .fpu softvfp .type ftl_free, %function ftl_free: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b kfree - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + bl kfree + ldmfd sp, {fp, sp, pc} .size ftl_free, .-ftl_free + .section .rodata.str1.1 +.LC81: + .ascii "%s %p + 0x%x:\000" +.LC82: + .ascii "0x%08x,\000" +.LC83: + .ascii "0x%04x,\000" +.LC84: + .ascii "0x%02x,\000" +.LC85: + .ascii "\012\000" + .text .align 2 .global rknand_print_hex .syntax unified @@ -3331,66 +3615,78 @@ ftl_free: .fpu softvfp .type rknand_print_hex, %function rknand_print_hex: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r6, #0 - ldr fp, .L437 - mov r10, r0 - mov r7, r1 + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r10, .L389 + mov r7, #0 + mov r9, r0 + mov r5, r1 mov r8, r2 - mov r9, r3 - mov r5, r6 - mov r4, r6 -.L428: - cmp r4, r9 - bcc .L434 - ldr r0, .L437+4 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - b sftl_printk -.L434: - cmp r5, #0 - bne .L429 - mov r3, r6 - mov r2, r7 - mov r1, r10 - ldr r0, .L437+8 + mov r6, r7 + mov r4, r7 + str r3, [fp, #-48] +.L381: + ldr r3, [fp, #-48] + cmp r3, r4 + bhi .L387 + ldr r0, .L389+4 bl sftl_printk -.L429: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L387: + cmp r6, #0 + bne .L382 + ldr r0, .L389+8 + mov r3, r7 + mov r2, r5 + mov r1, r9 + bl sftl_printk +.L382: cmp r8, #4 - ldreq r1, [r7, r4, lsl #2] - ldreq r0, .L437+12 - beq .L436 + ldreq r1, [r5, r4, lsl #2] + ldreq r0, .L389+12 + beq .L388 cmp r8, #2 lsleq r3, r4, #1 - ldrbne r1, [r7, r4] @ zero_extendqisi2 - ldrne r0, .L437+16 - moveq r0, fp - ldrheq r1, [r7, r3] -.L436: - add r5, r5, #1 + movne r0, r10 + ldreq r0, .L389+16 + ldrheq r1, [r5, r3] + ldrbne r1, [r5, r4] @ zero_extendqisi2 +.L388: + add r6, r6, #1 bl sftl_printk - cmp r5, #15 - bls .L433 - mov r5, #0 - ldr r0, .L437+4 + cmp r6, #15 + bls .L386 + mov r6, #0 + ldr r0, .L389+4 bl sftl_printk -.L433: +.L386: add r4, r4, #1 - add r6, r6, r8 - b .L428 -.L438: + add r7, r7, r8 + b .L381 +.L390: .align 2 -.L437: - .word .LC83 +.L389: + .word .LC84 .word .LC85 .word .LC81 .word .LC82 - .word .LC84 - .fnend + .word .LC83 .size rknand_print_hex, .-rknand_print_hex + .section .rodata.str1.1 +.LC86: + .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" +.LC87: + .ascii "not free: w: d:\000" +.LC88: + .ascii "not free: w: s:\000" + .text .align 2 .global FlashEraseBlocks .syntax unified @@ -3398,111 +3694,111 @@ rknand_print_hex: .fpu softvfp .type FlashEraseBlocks, %function FlashEraseBlocks: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r2 - ldr r5, .L457 - .pad #28 - sub sp, sp, #28 - mov r4, r0 - mov fp, r0 - ldr r2, .L457+4 - mov r7, #0 - ldrh r9, [r5, #12] - mvn r10, #0 - ldr r3, [r2] - str r2, [sp, #4] - str r3, [sp, #20] - lsl r3, r9, #3 - str r3, [sp] -.L440: - cmp r7, r8 - beq .L444 - add r2, sp, #12 - add r1, sp, #16 - mov r0, fp + @ args = 0, pretend = 0, frame = 32 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #36 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r10, .L407 + bic r9, r3, #8128 + mov r5, r0 + bic r9, r9, #63 + mov r7, r2 + mov r4, #0 + ldr r3, [r9, #24] + str r3, [fp, #-48] + ldrh r3, [r10, #12] + str r3, [fp, #-64] + lsl r3, r3, #3 + str r3, [fp, #-68] + add r3, r2, r2, lsl #2 + str r3, [fp, #-72] +.L392: + ldr r3, [fp, #-72] + cmp r4, r3 + beq .L395 + sub r2, fp, #56 + sub r1, fp, #52 + add r0, r5, r4, lsl #2 + mov r6, r5 bl l2p_addr_tran - ldr r6, [sp, #12] - cmp r6, #0 - bne .L441 - ldr r2, [sp, #16] - ldr r3, [sp] + ldr r8, [fp, #-56] + cmp r8, #0 + bne .L393 + ldr r2, [fp, #-52] + ldr r3, [fp, #-68] cmp r3, r2 - bls .L441 - ldr r5, .L457+8 - ldr r7, .L457+12 - ldr r9, .L457+16 - b .L455 -.L443: + bls .L393 + ldr r5, .L407+4 + ldr r4, .L407+8 +.L394: mvn r3, #0 - ldr r2, [sp, #16] - str r3, [r4, #-20] + ldr r2, [fp, #-52] + str r3, [r6] mov r1, r5 - mov r0, r7 - add r6, r6, #1 + mov r0, r4 + add r8, r8, #1 bl sftl_printk + ldr r1, [r6, #8] + ldr r0, .L407+12 mov r3, #16 mov r2, #4 - ldr r1, [r4, #-12] - mov r0, r9 + add r6, r6, #20 bl rknand_print_hex mov r3, #4 - ldr r1, [r4, #-8] + ldr r1, [r6, #-8] mov r2, r3 - ldr r0, .L457+20 + ldr r0, .L407+16 bl rknand_print_hex -.L455: - cmp r6, r8 - add r4, r4, #20 - bne .L443 + cmp r7, r8 + bne .L394 bl dump_stack -.L444: - ldr r3, [sp, #4] - mov r0, #0 - ldr r2, [sp, #20] - ldr r3, [r3] +.L395: + ldr r2, [fp, #-48] + ldr r3, [r9, #24] cmp r2, r3 - beq .L451 + beq .L402 bl __stack_chk_fail -.L441: - ldr r2, [r5, #3252] - uxtb r0, r6 - ldr r1, [sp, #16] - blx r2 - subs r2, r0, #0 - movne r2, r10 - str r2, [fp] - ldrh r2, [r5, #14] - cmp r2, #4 - bne .L448 - ldr r1, [sp, #16] - ldr r2, [r5, #3252] - ldrb r0, [sp, #12] @ zero_extendqisi2 - add r1, r9, r1 +.L393: + ldr r2, [r10, #3248] + uxtb r0, r8 + ldr r1, [fp, #-52] blx r2 cmp r0, #0 - strne r10, [fp] -.L448: - add r7, r7, #1 - add fp, fp, #20 - b .L440 -.L451: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L458: + streq r0, [r5, r4, lsl #2] + mvnne r2, #0 + strne r2, [r5, r4, lsl #2] + ldrh r2, [r10, #14] + cmp r2, #4 + bne .L399 + ldr r1, [fp, #-52] + ldr r3, [fp, #-64] + ldr r2, [r10, #3248] + ldrb r0, [fp, #-56] @ zero_extendqisi2 + add r1, r3, r1 + blx r2 + cmp r0, #0 + mvnne r2, #0 + strne r2, [r5, r4, lsl #2] +.L399: + add r4, r4, #5 + b .L392 +.L402: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L408: .align 2 -.L457: +.L407: .word .LANCHOR0 - .word __stack_chk_guard .word .LANCHOR1+130 .word .LC86 .word .LC87 .word .LC88 - .fnend .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FtlFreeSysBlkQueueIn @@ -3511,41 +3807,43 @@ FlashEraseBlocks: .fpu softvfp .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc sub r3, r0, #1 movw r2, #65533 + mov r6, r0 uxth r3, r3 cmp r3, r2 - bxhi lr - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - ldr r6, .L472 - add r4, r6, #412 + ldmfdhi sp, {r4, r5, r6, r7, fp, sp, pc} + ldr r7, .L418 + add r4, r7, #412 ldrh r3, [r4, #6] cmp r3, #1024 - popeq {r4, r5, r6, r7, r8, pc} + ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} cmp r1, #0 - mov r5, r0 - beq .L461 + beq .L411 bl P2V_block_in_plane - mov r7, r0 - ldr r0, [r6, #3272] - lsl r3, r5, #10 + mov r5, r0 + ldr r0, [r7, #3268] + lsl r3, r6, #10 mov r2, #1 mov r1, r2 str r3, [r0, #4] bl FlashEraseBlocks - ldr r2, [r6, #2536] - lsl r0, r7, #1 - ldrh r3, [r2, r0] + lsl r3, r5, #1 + ldr r1, [r7, #2536] + ldrh r2, [r1, r3] + add r2, r2, #1 + strh r2, [r1, r3] @ movhi + ldr r3, [r7, #2608] add r3, r3, #1 - strh r3, [r2, r0] @ movhi - ldr r3, [r6, #2612] - add r3, r3, #1 - str r3, [r6, #2612] -.L461: + str r3, [r7, #2608] +.L411: ldrh r3, [r4, #6] add r3, r3, #1 strh r3, [r4, #6] @ movhi @@ -3553,15 +3851,19 @@ FtlFreeSysBlkQueueIn: add r2, r4, r3, lsl #1 add r3, r3, #1 ubfx r3, r3, #0, #10 - strh r5, [r2, #8] @ movhi strh r3, [r4, #4] @ movhi - pop {r4, r5, r6, r7, r8, pc} -.L473: + strh r6, [r2, #8] @ movhi + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L419: .align 2 -.L472: +.L418: .word .LANCHOR0 - .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn + .section .rodata.str1.1 +.LC89: + .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" + .ascii "\000" + .text .align 2 .global FtlFreeSysBlkQueueOut .syntax unified @@ -3569,56 +3871,61 @@ FtlFreeSysBlkQueueIn: .fpu softvfp .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldr r6, .L480 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L425 add r4, r6, #412 ldrh r2, [r4, #6] cmp r2, #0 movweq r5, #65535 - beq .L475 + beq .L421 ldrh r3, [r4, #2] sub r2, r2, #1 - ldr r0, [r6, #3272] + ldr r0, [r6, #3268] strh r2, [r4, #6] @ movhi mov r2, #1 add r1, r4, r3, lsl #1 add r3, r3, #1 ubfx r3, r3, #0, #10 + strh r3, [r4, #2] @ movhi ldrh r5, [r1, #8] mov r1, r2 - strh r3, [r4, #2] @ movhi lsl r3, r5, #10 str r3, [r0, #4] bl FlashEraseBlocks - ldr r3, [r6, #2612] - add r3, r3, #1 - str r3, [r6, #2612] -.L475: - sub r3, r5, #1 + ldr r3, [r6, #2608] movw r2, #65533 + add r3, r3, #1 + str r3, [r6, #2608] + sub r3, r5, #1 uxth r3, r3 cmp r3, r2 - bls .L476 + bls .L422 +.L421: ldrh r2, [r4, #6] mov r1, r5 - ldr r0, .L480+4 + ldr r0, .L425+4 bl sftl_printk -.L477: - b .L477 -.L476: +.L423: + b .L423 +.L422: mov r0, r5 - pop {r4, r5, r6, pc} -.L481: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L426: .align 2 -.L480: +.L425: .word .LANCHOR0 .word .LC89 - .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut + .section .rodata.str1.1 +.LC90: + .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" + .text .align 2 .global ftl_map_blk_alloc_new_blk .syntax unified @@ -3626,67 +3933,68 @@ FtlFreeSysBlkQueueOut: .fpu softvfp .type ftl_map_blk_alloc_new_blk, %function ftl_map_blk_alloc_new_blk: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r3, #0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldrh r1, [r0, #10] mov r4, r0 ldr r2, [r0, #12] -.L483: + mov r3, #0 +.L428: uxth r5, r3 - cmp r5, r1 - bcs .L486 + cmp r1, r5 + bls .L433 mov r7, r2 add r3, r3, #1 - ldrh r6, [r7] add r2, r2, #2 + ldrh r6, [r7] cmp r6, #0 - bne .L483 + bne .L428 bl FtlFreeSysBlkQueueOut sub r3, r0, #1 movw r2, #65533 - uxth r3, r3 mov r1, r0 + uxth r3, r3 strh r0, [r7] @ movhi cmp r3, r2 - bls .L484 - ldr r3, .L491 - ldr r0, .L491+4 + bls .L429 + ldr r3, .L435 + ldr r0, .L435+4 ldrh r2, [r3, #6] bl sftl_printk -.L485: - b .L485 -.L484: +.L430: + b .L430 +.L429: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi - strh r5, [r4] @ movhi add r3, r3, #1 str r3, [r4, #28] ldrh r3, [r4, #8] + strh r5, [r4] @ movhi add r3, r3, #1 strh r3, [r4, #8] @ movhi -.L486: ldrh r3, [r4, #10] cmp r3, r5 - bhi .L488 + bhi .L431 +.L433: + ldr r1, .L435+8 movw r2, #578 - ldr r1, .L491+8 - ldr r0, .L491+12 + ldr r0, .L435+12 bl sftl_printk -.L488: +.L431: mov r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L492: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L436: .align 2 -.L491: +.L435: .word .LANCHOR0+412 .word .LC90 .word .LANCHOR1+147 .word .LC8 - .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global ftl_memset @@ -3695,13 +4003,20 @@ ftl_map_blk_alloc_new_blk: .fpu softvfp .type ftl_memset, %function ftl_memset: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b memset - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + bl memset + ldmfd sp, {fp, sp, pc} .size ftl_memset, .-ftl_memset + .section .rodata.str1.1 +.LC91: + .ascii "%s error allocating memory. return -1\012\000" + .text .align 2 .global FtlMemInit .syntax unified @@ -3709,155 +4024,158 @@ ftl_memset: .fpu softvfp .type FtlMemInit, %function FtlMemInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L537 movw r3, #65535 - ldr r4, .L596 - movw r6, #306 mov r2, #32 + movw r6, #306 mov r5, #0 mov r7, #12 - str r3, [r4, #3280] - mvn r3, #0 - ldrh r0, [r4, r6] + mov r8, #80 add r9, r4, #312 + str r3, [r4, #3276] + mvn r3, #0 strh r3, [r4, #222] @ movhi strh r3, [r4, #220] @ movhi - movw r3, #3156 - strh r2, [r4, r3] @ movhi + add r3, r4, #3152 + ldrh r0, [r4, r6] + str r5, [r4, #2588] + strh r2, [r3] @ movhi + movw r3, #3154 mov r2, #128 - movw r3, #3158 lsl r0, r0, #1 strh r2, [r4, r3] @ movhi - movw r3, #3164 - strh r5, [r4, r3] @ movhi - movw r3, #3210 - strh r5, [r4, r3] @ movhi - movw r3, #3246 - strh r5, [r4, r3] @ movhi + movw r3, #3160 str r5, [r4, #2592] - str r5, [r4, #2596] - str r5, [r4, #2580] - str r5, [r4, #2568] - str r5, [r4, #2564] - str r5, [r4, #2572] + strh r5, [r4, r3] @ movhi + movw r3, #3206 str r5, [r4, #2576] + strh r5, [r4, r3] @ movhi + movw r3, #3242 + str r5, [r4, #2564] + strh r5, [r4, r3] @ movhi str r5, [r4, #2560] + str r5, [r4, #2568] + str r5, [r4, #2572] + str r5, [r4, #2556] + str r5, [r4, #2596] str r5, [r4, #2600] - str r5, [r4, #2604] + str r5, [r4, #2608] str r5, [r4, #2612] str r5, [r4, #2616] - str r5, [r4, #2620] - str r5, [r4, #3276] - str r5, [r4, #3168] + str r5, [r4, #3272] + str r5, [r4, #3164] + str r5, [r4, #3280] + str r5, [r4, #3156] str r5, [r4, #3284] - str r5, [r4, #3160] - str r5, [r4, #3288] bl ftl_malloc - str r0, [r4, #3196] + str r0, [r4, #3192] ldrh r0, [r4, r6] - mov r6, #20 mul r0, r7, r0 bl ftl_malloc - ldrh r3, [r4, #232] - str r0, [r4, #3204] - mul r6, r6, r3 - lsl r8, r6, #2 + ldrh r6, [r4, #232] + str r0, [r4, #3200] + mul r8, r8, r6 mov r0, r8 bl ftl_malloc + mov r3, #20 + str r0, [r4, #3288] + mul r6, r3, r6 + mov r0, r6 + bl ftl_malloc str r0, [r4, #3292] - mov r0, r6 + mov r0, r8 + movw r8, #310 bl ftl_malloc str r0, [r4, #3296] - mov r0, r8 - bl ftl_malloc - str r0, [r4, #3300] mov r0, r6 bl ftl_malloc - str r0, [r4, #3272] + str r0, [r4, #3268] mov r0, r6 bl ftl_malloc ldrh r3, [r4, #232] - movw r8, #310 ldrh r6, [r4, r8] - str r0, [r4, #3188] + str r0, [r4, #3184] lsl r3, r3, #1 mov r0, r6 add r3, r3, #1 - str r3, [r4, #3192] + str r3, [r4, #3188] + bl ftl_malloc + str r0, [r4, #3300] + mov r0, r6 bl ftl_malloc str r0, [r4, #3304] mov r0, r6 bl ftl_malloc str r0, [r4, #3308] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #3312] - ldr r0, [r4, #3192] + ldr r0, [r4, #3188] mul r0, r0, r6 bl ftl_malloc - str r0, [r4, #3180] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #3316] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #3320] - ldr r0, [r4, #3192] - mul r0, r7, r0 - bl ftl_malloc str r0, [r4, #3176] mov r0, r6 bl ftl_malloc - str r0, [r4, #3324] + str r0, [r4, #3312] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3316] + ldr r0, [r4, #3188] + mul r0, r7, r0 + bl ftl_malloc + str r0, [r4, #3172] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3320] mov r0, r6 bl ftl_malloc movw r3, #258 - str r0, [r4, #3328] + str r0, [r4, #3324] ldrh r0, [r4, r3] lsl r0, r0, #2 bl ftl_malloc - ldrh r3, [r9] - ldrh r6, [r4, #232] - str r0, [r4, #3332] - mul r6, r6, r3 + ldrh r3, [r4, #232] + ldrh r6, [r9] + str r0, [r4, #3328] + mul r6, r3, r6 mov r0, r6 bl ftl_malloc - str r0, [r4, #3336] + str r0, [r4, #3332] lsl r0, r6, #2 - add r6, r4, #3344 + movw r6, #3340 bl ftl_malloc ldrh r3, [r9] - str r0, [r4, #3340] - ldr r0, [r4, #3192] + str r0, [r4, #3336] + ldr r0, [r4, #3188] mul r0, r0, r3 bl ftl_malloc - str r0, [r4, #3184] + str r0, [r4, #3180] ldrh r0, [r4, #242] lsl r0, r0, #1 uxth r0, r0 - strh r0, [r6] @ movhi + strh r0, [r4, r6] @ movhi bl ftl_malloc - str r0, [r4, #3348] - ldrh r0, [r6] - ldr r3, .L596+4 + str r0, [r4, #3344] + ldrh r0, [r4, r6] add r0, r0, #544 add r0, r0, #3 - lsr r0, r0, #9 - strh r0, [r6] @ movhi - and r0, r3, r0, lsl #9 + lsr r3, r0, #9 + bic r0, r0, #508 + bic r0, r0, #3 + strh r3, [r4, r6] @ movhi bl ftl_malloc ldrh r6, [r4, #242] - str r0, [r4, #3352] + str r0, [r4, #3348] add r0, r0, #32 str r0, [r4, #2536] lsl r6, r6, #1 mov r0, r6 bl ftl_malloc - str r0, [r4, #3356] + str r0, [r4, #3352] mov r0, r6 bl ftl_malloc ldr r6, [r4, #328] @@ -3865,11 +4183,11 @@ FtlMemInit: lsl r6, r6, #1 mov r0, r6 bl ftl_malloc - str r0, [r4, #3360] + str r0, [r4, #3356] mov r0, r6 add r6, r4, #320 bl ftl_malloc - str r0, [r4, #3364] + str r0, [r4, #3360] ldrh r0, [r6] lsl r0, r0, #1 bl ftl_malloc @@ -3877,41 +4195,41 @@ FtlMemInit: ldrh r0, [r6] lsl r0, r0, #1 bl ftl_malloc - str r0, [r4, #3368] + str r0, [r4, #3364] ldrh r0, [r6] movw r6, #322 lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3372] + str r0, [r4, #3368] ldrh r0, [r4, r6] lsl r0, r0, #2 bl ftl_malloc ldrh r2, [r4, r6] mov r1, r5 - str r0, [r4, #3376] + str r0, [r4, #3372] movw r5, #338 + movw r6, #3388 lsl r2, r2, #2 bl ftl_memset add r3, r4, #336 ldrh r0, [r3] lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3380] + str r0, [r4, #3376] ldr r0, [r4, #328] lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3384] + str r0, [r4, #3380] ldrh r0, [r4, r5] mul r0, r7, r0 bl ftl_malloc ldrh r3, [r4, r5] - add r5, r4, #3392 str r0, [r4, #2540] ldrh r0, [r4, r8] mul r0, r0, r3 bl ftl_malloc ldrh r3, [r4, #242] - str r0, [r4, #3388] + str r0, [r4, #3384] mov r0, #6 mul r0, r0, r3 bl ftl_malloc @@ -3921,153 +4239,147 @@ FtlMemInit: ldrh r3, [r4, #254] add r0, r0, #31 asr r0, r0, #5 - strh r0, [r5] @ movhi + strh r0, [r4, r6] @ movhi mul r0, r0, r3 lsl r0, r0, #2 bl ftl_malloc - ldrh r2, [r5] - add ip, r4, #380 - ldrh lr, [r4, #254] - mov r3, #1 + ldrh r2, [r4, r6] + ldrh r3, [r4, #254] + mov r5, r0 str r0, [r4, #380] - lsl r2, r2, #2 - mov r1, r2 -.L495: - cmp r3, lr - bcc .L496 - ldr r2, .L596+8 - mov r1, #0 - add r3, r2, r3, lsl #2 - add r2, r2, #56 - add r3, r3, #24 -.L497: - cmp r2, r3 - bne .L498 - ldr r3, [r4, #3360] + mov r1, #1 + lsl ip, r2, #2 + add r2, r0, r2, lsl #2 + add r0, r4, #384 +.L439: + cmp r3, r1 + bhi .L440 cmp r3, #0 - bne .L499 -.L501: - ldr r1, .L596+12 - ldr r0, .L596+16 + ldr r0, .L537+4 + mov r1, #0 + moveq r3, #1 + rsb r2, r3, #8 + add r3, r3, #7 + lsl r2, r2, #2 + add r0, r0, r3, lsl #2 + bl memset + ldr r3, [r4, #3356] + cmp r3, #0 + bne .L441 +.L443: + ldr r1, .L537+8 + ldr r0, .L537+12 bl sftl_printk mvn r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L496: - ldr r0, [r4, #380] - add r3, r3, #1 - add r0, r0, r1 - add r1, r1, r2 - str r0, [ip, #4]! - b .L495 -.L498: - str r1, [r3, #4]! - b .L497 -.L499: - ldr r3, [r4, #3364] + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L440: + str r2, [r0], #4 + add r1, r1, #1 + add r2, r2, ip + b .L439 +.L441: + ldr r3, [r4, #3360] cmp r3, #0 - beq .L501 + beq .L443 + ldr r3, [r4, #3376] + cmp r3, #0 + beq .L443 ldr r3, [r4, #3380] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3384] - cmp r3, #0 - beq .L501 + beq .L443 ldr r3, [r4, #2540] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3388] + beq .L443 + ldr r3, [r4, #3384] cmp r3, #0 - beq .L501 + beq .L443 ldr r3, [r4, #2516] cmp r3, #0 - beq .L501 - ldr r3, [r4, #380] - cmp r3, #0 - beq .L501 + beq .L443 + cmp r5, #0 + beq .L443 ldr r3, [r4, #72] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3196] + beq .L443 + ldr r3, [r4, #3192] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3204] + beq .L443 + ldr r3, [r4, #3200] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3292] + beq .L443 + ldr r3, [r4, #3288] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3300] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3272] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3188] - cmp r3, #0 - beq .L501 + beq .L443 ldr r3, [r4, #3296] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3304] + beq .L443 + ldr r3, [r4, #3268] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3308] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3312] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3180] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3316] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3320] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3176] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3336] - cmp r3, #0 - beq .L501 - ldr r3, [r4, #3340] - cmp r3, #0 - beq .L501 + beq .L443 ldr r3, [r4, #3184] cmp r3, #0 - beq .L501 + beq .L443 + ldr r3, [r4, #3292] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3300] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3304] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3308] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3176] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3312] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3316] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3172] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3332] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3336] + cmp r3, #0 + beq .L443 + ldr r3, [r4, #3180] + cmp r3, #0 + beq .L443 ldr r3, [r4, #2536] cmp r3, #0 - beq .L501 - ldr r3, [r4, #3348] + beq .L443 + ldr r3, [r4, #3344] cmp r3, #0 - beq .L501 + beq .L443 ldr r3, [r4, #348] cmp r3, #0 - beq .L501 - ldr r3, .L596 + beq .L443 + ldr r3, .L537 + ldr r2, [r3, #3364] + cmp r2, #0 + beq .L443 ldr r2, [r3, #3368] cmp r2, #0 - beq .L501 - ldr r2, [r3, #3372] - cmp r2, #0 - beq .L501 - ldr r3, [r3, #3376] + beq .L443 + ldr r3, [r3, #3372] cmp r3, #0 - beq .L501 + beq .L443 mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L597: + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L538: .align 2 -.L596: +.L537: .word .LANCHOR0 - .word 33553920 .word .LANCHOR0+352 .word .LANCHOR1+173 .word .LC91 - .fnend .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap @@ -4076,56 +4388,57 @@ FtlMemInit: .fpu softvfp .type FtlBbt2Bitmap, %function FtlBbt2Bitmap: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L605 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r2, .L544 + movw r3, #3388 mov r4, r0 - ldr r7, .L605+4 - sub r5, r4, #2 + ldr r7, .L544+4 + sub r6, r4, #2 + ldr r8, .L544+8 add r4, r4, #1020 - mov r6, r1 - ldrh r2, [r3] + mov r5, r1 + ldrh r2, [r2, r3] add r4, r4, #2 - ldr r8, .L605+8 + mov r0, r5 mov r1, #0 - ldr r9, .L605+12 - mov r0, r6 lsl r2, r2, #2 bl ftl_memset -.L601: - ldrh r3, [r5, #2] +.L542: + ldrh r3, [r6, #2]! movw r2, #65535 cmp r3, r2 - popeq {r4, r5, r6, r7, r8, r9, r10, pc} + ldmfdeq sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} ldrh r2, [r7] cmp r2, r3 - bhi .L600 - mov r2, #74 + bhi .L541 + ldr r0, .L544+12 mov r1, r8 - mov r0, r9 + mov r2, #74 bl sftl_printk -.L600: - ldrh r3, [r5, #2]! +.L541: + ldrh r3, [r6] mov r0, #1 - cmp r4, r5 + cmp r4, r6 lsr r1, r3, #5 and r3, r3, #31 - ldr r2, [r6, r1, lsl #2] + ldr r2, [r5, r1, lsl #2] orr r3, r2, r0, lsl r3 - str r3, [r6, r1, lsl #2] - bne .L601 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L606: + str r3, [r5, r1, lsl #2] + bne .L542 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L545: .align 2 -.L605: - .word .LANCHOR0+3392 +.L544: + .word .LANCHOR0 .word .LANCHOR0+298 .word .LANCHOR1+184 .word .LC8 - .fnend .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 2 .global FtlBbtMemInit @@ -4134,11 +4447,14 @@ FtlBbt2Bitmap: .fpu softvfp .type FtlBbtMemInit, %function FtlBbtMemInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r0, .L608 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r0, .L547 mvn r2, #0 mov r1, #255 add r3, r0, #352 @@ -4147,12 +4463,12 @@ FtlBbtMemInit: mov r2, #0 strh r2, [r3, #6] @ movhi mov r2, #16 - b ftl_memset -.L609: + bl ftl_memset + ldmfd sp, {fp, sp, pc} +.L548: .align 2 -.L608: +.L547: .word .LANCHOR0 - .fnend .size FtlBbtMemInit, .-FtlBbtMemInit .align 2 .global FtlFreeSysBlkQueueInit @@ -4161,14 +4477,16 @@ FtlBbtMemInit: .fpu softvfp .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L612 - mov r2, #2048 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr ip, .L550 mov r4, #0 + mov r2, #2048 mov r1, r4 add r3, ip, #412 strh r0, [r3] @ movhi @@ -4178,12 +4496,11 @@ FtlFreeSysBlkQueueInit: strh r4, [r3, #6] @ movhi bl ftl_memset mov r0, r4 - pop {r4, pc} -.L613: + ldmfd sp, {r4, r5, fp, sp, pc} +.L551: .align 2 -.L612: +.L550: .word .LANCHOR0 - .fnend .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit .align 2 .global ftl_free_no_use_map_blk @@ -4192,105 +4509,101 @@ FtlFreeSysBlkQueueInit: .fpu softvfp .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r1, #0 + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc ldrh r2, [r0, #10] mov r4, r0 ldr r5, [r0, #20] - ldr r7, [r0, #12] + mov r1, #0 + ldr r8, [r0, #12] ldr r6, [r0, #24] lsl r2, r2, #1 mov r0, r5 bl ftl_memset mov r2, #0 -.L615: +.L553: ldrh r1, [r4, #6] uxth r3, r2 cmp r1, r3 - bhi .L619 - ldr r3, .L635 - mov r6, #0 - mov r8, r6 - mov r10, r6 + bhi .L557 + ldr r3, .L570 + mov r7, #0 + mov r10, r7 ldrh r2, [r3] ldrh r3, [r4] lsl r3, r3, #1 strh r2, [r5, r3] @ movhi - ldrh r9, [r5] -.L620: - ldrh r3, [r4, #10] - uxth r1, r6 - cmp r3, r1 - bhi .L624 - mov r0, r8 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L619: + ldrh r3, [r5] +.L558: + ldrh r1, [r4, #10] + uxth r2, r7 + cmp r1, r2 + bhi .L561 + mov r0, r10 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L557: uxth r3, r2 mov r1, #0 ldr r0, [r6, r3, lsl #2] ubfx r0, r0, #10, #16 -.L616: +.L554: ldrh ip, [r4, #10] uxth r3, r1 cmp ip, r3 addls r2, r2, #1 - bls .L615 -.L618: + bls .L553 +.L556: uxth r3, r1 add r1, r1, #1 lsl r3, r3, #1 - ldrh ip, [r7, r3] - adds lr, ip, #0 + ldrh ip, [r8, r3] + subs lr, ip, #0 movne lr, #1 - cmp r0, ip + cmp ip, r0 movne lr, #0 cmp lr, #0 ldrhne ip, [r5, r3] addne ip, ip, #1 strhne ip, [r5, r3] @ movhi - b .L616 -.L624: - uxth r3, r6 - lsl r3, r3, #1 - ldrh r2, [r5, r3] - cmp r9, r2 - bls .L621 - ldrh r0, [r7, r3] - add fp, r7, r3 + b .L554 +.L561: + uxth r6, r7 + lsl r6, r6, #1 + ldrh r9, [r5, r6] + cmp r9, r3 + bcs .L559 + ldrh r1, [r8, r6] + cmp r1, #0 + movne r10, r2 + movne r3, r9 +.L559: + cmp r9, #0 + bne .L560 + ldrh r0, [r8, r6] cmp r0, #0 - bne .L622 -.L623: - add r6, r6, #1 - b .L620 -.L621: - cmp r2, #0 - bne .L623 - ldrh r0, [r7, r3] - add fp, r7, r3 - cmp r0, #0 - beq .L623 -.L625: + beq .L560 mov r1, #1 + str r3, [fp, #-48] bl FtlFreeSysBlkQueueIn - strh r10, [fp] @ movhi - ldrh r3, [r4, #8] - sub r3, r3, #1 - strh r3, [r4, #8] @ movhi - b .L623 -.L622: - subs r9, r2, #0 - mov r8, r1 - beq .L625 - b .L623 -.L636: + strh r9, [r8, r6] @ movhi + ldr r3, [fp, #-48] + ldrh r2, [r4, #8] + sub r2, r2, #1 + strh r2, [r4, #8] @ movhi +.L560: + add r7, r7, #1 + b .L558 +.L571: .align 2 -.L635: +.L570: .word .LANCHOR0+304 - .fnend .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global FtlL2PDataInit @@ -4299,87 +4612,84 @@ ftl_free_no_use_map_blk: .fpu softvfp .type FtlL2PDataInit, %function FtlL2PDataInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L575 mov r1, #0 - ldr r4, .L641 - mvn r5, #0 + mvn r6, #0 ldr r2, [r4, #328] - ldr r0, [r4, #3364] + ldr r0, [r4, #3360] lsl r2, r2, #1 bl ftl_memset movw r3, #310 movw r2, #338 + ldr r0, [r4, #3384] ldrh r3, [r4, r3] mov r1, #255 ldrh r2, [r4, r2] - ldr r0, [r4, #3388] mul r2, r2, r3 bl ftl_memset - ldr r0, .L641+4 - mov r2, #0 - mov r3, r4 + ldr ip, .L575+4 + mov r3, #0 + mov r5, r3 + sub r7, ip, #28 mov lr, #12 - mov r4, r2 - sub r6, r0, #28 -.L638: - ldrh r7, [r0] - uxth r1, r2 - add ip, r2, #1 - cmp r7, r1 - bhi .L639 - ldr r2, .L641+8 - mvn r1, #0 - movw r0, #3396 - strh r1, [r3, r0] @ movhi - strh r1, [r2, #2] @ movhi - ldr r1, [r3, #328] - strh r1, [r2, #10] @ movhi - ldr r1, .L641+12 - strh r1, [r2, #4] @ movhi - ldrh r1, [r2, #44] - strh r1, [r2, #8] @ movhi - ldr r1, .L641+16 - ldrh r1, [r1] - strh r1, [r2, #6] @ movhi - ldr r2, [r3, #3360] - str r2, [r3, #3408] - ldr r2, [r3, #3384] - str r2, [r3, #3412] - ldr r2, [r3, #3364] - str r2, [r3, #3416] - ldr r2, [r3, #3380] - str r2, [r3, #3420] - pop {r4, r5, r6, r7, r8, pc} -.L639: - uxth r2, r2 - ldr r1, [r3, #2540] - mul r7, lr, r2 - add r8, r1, r7 - str r4, [r8, #4] - strh r5, [r1, r7] @ movhi - ldr r1, [r3, #2540] - add r1, r1, r7 - ldrh r7, [r6] - mul r2, r2, r7 - ldr r7, [r3, #3388] +.L573: + ldrh r1, [ip] + uxth r2, r3 + cmp r1, r2 + bhi .L574 + ldr r3, .L575+8 + ldr r2, [r4, #328] + strh r2, [r3, #10] @ movhi + mvn r2, #0 + str r2, [r4, #3392] + ldr r2, .L575+12 + strh r2, [r3, #4] @ movhi + movw r2, #3436 + ldrh r2, [r4, r2] + strh r2, [r3, #8] @ movhi + sub r2, r3, #3056 + ldrh r2, [r2] + strh r2, [r3, #6] @ movhi + ldr r3, [r4, #3356] + str r3, [r4, #3404] + ldr r3, [r4, #3380] + str r3, [r4, #3408] + ldr r3, [r4, #3360] + str r3, [r4, #3412] + ldr r3, [r4, #3376] + str r3, [r4, #3416] + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L574: + uxth r0, r3 + ldr r2, [r4, #2540] + add r3, r3, #1 + mul r1, lr, r0 + add r8, r2, r1 + str r5, [r8, #4] + strh r6, [r2, r1] @ movhi + ldr r2, [r4, #2540] + add r1, r2, r1 + ldrh r2, [r7] + mul r2, r0, r2 + ldr r0, [r4, #3384] bic r2, r2, #3 - add r2, r7, r2 + add r2, r0, r2 str r2, [r1, #8] - mov r2, ip - b .L638 -.L642: + b .L573 +.L576: .align 2 -.L641: +.L575: .word .LANCHOR0 .word .LANCHOR0+338 - .word .LANCHOR0+3396 + .word .LANCHOR0+3392 .word -3902 - .word .LANCHOR0+336 - .fnend .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 .global FtlVariablesInit @@ -4388,25 +4698,27 @@ FtlL2PDataInit: .fpu softvfp .type FtlVariablesInit, %function FtlVariablesInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L578 + movw r2, #3438 mvn r3, #0 - ldr r4, .L645 - movw r2, #3442 mov r5, #0 mov r1, r5 strh r3, [r4, r2] @ movhi - str r3, [r4, #3452] + str r3, [r4, #3448] add r3, r4, #344 + ldr r0, [r4, #348] + str r5, [r4, #3440] strh r5, [r3] @ movhi add r3, r4, #320 - ldrh r2, [r3] - ldr r0, [r4, #348] str r5, [r4, #3444] - str r5, [r4, #3448] + ldrh r2, [r3] lsl r2, r2, #1 bl ftl_memset ldrh r2, [r4, #242] @@ -4416,7 +4728,7 @@ FtlVariablesInit: bl ftl_memset ldrh r2, [r4, #242] mov r1, r5 - ldr r0, [r4, #3348] + ldr r0, [r4, #3344] lsl r2, r2, #1 bl ftl_memset add r0, r4, #2464 @@ -4424,20 +4736,18 @@ FtlVariablesInit: mov r2, #48 add r0, r0, #4 bl ftl_memset - add r0, r4, #2640 - mov r2, #512 mov r1, r5 - add r0, r0, #4 + mov r2, #512 + add r0, r4, #2640 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov r0, r5 - pop {r4, r5, r6, pc} -.L646: + ldmfd sp, {r4, r5, fp, sp, pc} +.L579: .align 2 -.L645: +.L578: .word .LANCHOR0 - .fnend .size FtlVariablesInit, .-FtlVariablesInit .align 2 .global SupperBlkListInit @@ -4446,132 +4756,132 @@ FtlVariablesInit: .fpu softvfp .type SupperBlkListInit, %function SupperBlkListInit: - .fnstart @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r2, #6 - ldr r4, .L659 - mov r5, #0 - .pad #20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #20 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L591 + mov r2, #6 + mov r5, #0 mov r1, #0 - ldr r10, .L659+4 + add r10, r4, #2528 mov r9, r5 + mov r7, r5 ldrh r3, [r4, #242] - mov r6, r5 ldr r0, [r4, #2516] - add fp, r4, #260 mul r2, r2, r3 bl ftl_memset - add r3, r4, #2528 str r5, [r4, #2532] str r5, [r4, #2520] str r5, [r4, #2524] - strh r5, [r3] @ movhi + strh r5, [r10] @ movhi strh r5, [r4, #224] @ movhi - str r3, [sp, #4] -.L648: +.L581: ldrh r3, [r4, #240] uxth r8, r5 cmp r8, r3 - bcs .L655 - ldrh r3, [r10] - ldrh r2, [r4, #232] - str r3, [sp] + bcs .L588 + ldrh r3, [r4, #232] + str r3, [fp, #-52] + ldr r3, .L591+4 + ldr r2, .L591+8 + ldrh r3, [r3] + str r3, [fp, #-48] mov r3, #0 - mov r7, r3 - b .L656 -.L650: + mov r6, r3 + b .L589 +.L583: + ldrb r0, [r2], #1 @ zero_extendqisi2 mov r1, r8 - ldrb r0, [fp, r3] @ zero_extendqisi2 - str r2, [sp, #12] - str r3, [sp, #8] + str r3, [fp, #-60] + str r2, [fp, #-56] bl V2P_block bl FtlBbmIsBadBlock cmp r0, #0 - ldr r3, [sp, #8] - ldreq r1, [sp] - ldr r2, [sp, #12] + ldr r3, [fp, #-60] + ldr r2, [fp, #-56] + ldreq r1, [fp, #-48] add r3, r3, #1 - addeq r7, r7, r1 - uxtheq r7, r7 -.L656: + addeq r6, r1, r6 + uxtheq r6, r6 +.L589: + ldr r0, [fp, #-52] uxth r1, r3 - cmp r2, r1 - bhi .L650 - cmp r7, #0 + cmp r0, r1 + bhi .L583 uxth r3, r5 - beq .L651 - mov r1, r7 + cmp r6, #0 + beq .L584 + mov r1, r6 mov r0, #32768 - str r3, [sp] + str r3, [fp, #-48] bl __aeabi_idiv - ldr r3, [sp] - uxth r7, r0 -.L652: - ldr r1, [r4, #2516] - mov r2, #6 - mla r2, r2, r3, r1 - strh r7, [r2, #4] @ movhi + ldr r3, [fp, #-48] + uxth r6, r0 +.L585: + ldr r2, [r4, #2516] + mov r1, #6 + mla r2, r1, r3, r2 + strh r6, [r2, #4] @ movhi ldrh r2, [r4, #24] cmp r2, r8 - beq .L653 + beq .L586 ldrh r2, [r4, #76] cmp r2, r8 - beq .L653 + beq .L586 ldrh r2, [r4, #124] cmp r2, r8 - beq .L653 + beq .L586 ldr r2, [r4, #72] lsl r3, r3, #1 ldrh r3, [r2, r3] cmp r3, #0 - bne .L654 + bne .L587 add r9, r9, #1 mov r0, r8 uxth r9, r9 bl INSERT_FREE_LIST -.L653: +.L586: add r5, r5, #1 - b .L648 -.L651: + b .L581 +.L584: ldr r1, [r4, #72] lsl r2, r3, #1 - mvn r0, #0 + mvn r0, #0 @ movhi strh r0, [r1, r2] @ movhi - b .L652 -.L654: - add r6, r6, #1 + b .L585 +.L587: + add r7, r7, #1 mov r0, r8 - uxth r6, r6 + uxth r7, r7 bl INSERT_DATA_LIST - b .L653 -.L655: - ldr r2, [sp, #4] + b .L586 +.L588: + strh r7, [r10] @ movhi + add r7, r7, r9 + cmp r7, r3 strh r9, [r4, #224] @ movhi - strh r6, [r2] @ movhi - add r6, r6, r9 - cmp r6, r3 - ble .L657 - movw r2, #2212 - ldr r1, .L659+8 - ldr r0, .L659+12 + ble .L590 + ldr r1, .L591+12 + movw r2, #2219 + ldr r0, .L591+16 bl sftl_printk -.L657: +.L590: mov r0, #0 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L660: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L592: .align 2 -.L659: +.L591: .word .LANCHOR0 .word .LANCHOR0+302 + .word .LANCHOR0+260 .word .LANCHOR1+198 .word .LC8 - .fnend .size SupperBlkListInit, .-SupperBlkListInit .align 2 .global FtlGcPageVarInit @@ -4580,36 +4890,37 @@ SupperBlkListInit: .fpu softvfp .type FtlGcPageVarInit, %function FtlGcPageVarInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L594 + movw r2, #3196 mov r3, #0 - ldr r4, .L663 movw r5, #306 mov r1, #255 - add r2, r4, #3200 - ldr r0, [r4, #3196] - strh r3, [r2] @ movhi - movw r2, #3208 + strh r3, [r4, r2] @ movhi + movw r2, #3204 + ldr r0, [r4, #3192] strh r3, [r4, r2] @ movhi ldrh r2, [r4, r5] lsl r2, r2, #1 bl ftl_memset ldrh r3, [r4, r5] mov r2, #12 - ldr r0, [r4, #3204] mov r1, #255 + ldr r0, [r4, #3200] mul r2, r2, r3 bl ftl_memset - pop {r4, r5, r6, lr} - b FtlGcBufInit -.L664: + bl FtlGcBufInit + ldmfd sp, {r4, r5, fp, sp, pc} +.L595: .align 2 -.L663: +.L594: .word .LANCHOR0 - .fnend .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 2 .global FlashGetBadBlockList @@ -4618,49 +4929,48 @@ FtlGcPageVarInit: .fpu softvfp .type FlashGetBadBlockList, %function FlashGetBadBlockList: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r2, #256 - ldr r5, .L673 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L603 mov r4, r0 - mov r6, r1 + mov r5, r1 + mov r2, #256 mov r1, #255 bl ftl_memset - ldr r3, [r5, #3248] - mov r1, r6 + mov r1, r5 + ldr r3, [r6, #3244] mov r0, r4 blx r3 uxth r0, r0 cmp r0, #50 - bls .L666 + bls .L597 + mov r0, r4 mov r2, #256 mov r1, #255 - mov r0, r4 bl ftl_memset mov r0, #0 -.L666: - ldrh r3, [r5, #14] +.L597: + ldrh r3, [r6, #14] cmp r3, #4 moveq r3, r4 addeq r1, r3, r0, lsl #1 - beq .L668 - pop {r4, r5, r6, pc} -.L669: + ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc} +.L599: + cmp r3, r1 + ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} ldrh r2, [r3] lsr r2, r2, #1 strh r2, [r3], #2 @ movhi -.L668: - cmp r3, r1 - bne .L669 - pop {r4, r5, r6, pc} -.L674: + b .L599 +.L604: .align 2 -.L673: +.L603: .word .LANCHOR0 - .fnend .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 .global ftl_memcpy @@ -4669,13 +4979,24 @@ FlashGetBadBlockList: .fpu softvfp .type ftl_memcpy, %function ftl_memcpy: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b memcpy - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + bl memcpy + ldmfd sp, {fp, sp, pc} .size ftl_memcpy, .-ftl_memcpy + .section .rodata.str1.1 +.LC92: + .ascii "FlashReadPages %x %x error_ecc_bits %d\012\000" +.LC93: + .ascii "data:\000" +.LC94: + .ascii "spare:\000" + .text .align 2 .global FlashReadPages .syntax unified @@ -4683,158 +5004,161 @@ ftl_memcpy: .fpu softvfp .type FlashReadPages, %function FlashReadPages: - .fnstart @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L717 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #28 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #28 - ldr r5, .L717+4 - mov r8, r1 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r6, .L647 + bic r7, r3, #8128 + ldr r10, .L647+4 + bic r7, r7, #63 + ldr r9, .L647+8 mov r4, r0 - mov r7, #0 - ldr r2, [r3] - mov fp, r3 - ldr r9, .L717+8 - ldr r10, .L717+12 - str r2, [sp, #20] - ldrh r2, [r5, #12] - str r2, [sp, #4] -.L677: - cmp r7, r8 - bne .L690 - ldr r2, [sp, #20] - mov r0, #0 - ldr r3, [fp] + str r1, [fp, #-68] + mov r8, #0 + ldr r3, [r7, #24] + str r3, [fp, #-48] + ldrh r3, [r6, #12] + str r3, [fp, #-64] +.L607: + ldr r3, [fp, #-68] + cmp r8, r3 + bne .L620 + ldr r2, [fp, #-48] + ldr r3, [r7, #24] cmp r2, r3 - beq .L691 + beq .L621 bl __stack_chk_fail -.L690: +.L620: ldr r3, [r4, #8] cmp r3, #0 - beq .L678 + beq .L608 ldr r3, [r4, #12] cmp r3, #0 - bne .L679 -.L678: - mov r2, #96 - ldr r1, .L717+16 + bne .L609 +.L608: + mov r1, r10 mov r0, r9 + mov r2, #96 bl sftl_printk -.L679: - add r2, sp, #12 - add r1, sp, #16 +.L609: + sub r2, fp, #56 + sub r1, fp, #52 mov r0, r4 bl l2p_addr_tran - ldr r0, [sp, #12] + ldr r0, [fp, #-56] cmp r0, #3 mvnhi r3, #0 strhi r3, [r4] - bhi .L681 - ldr r6, [r4, #8] + bhi .L611 + ldr r5, [r4, #8] uxtb r0, r0 ldr r3, [r4, #12] - ldr r1, [sp, #16] - tst r6, #63 - ldr ip, [r5, #3260] - ldrne r6, [r5, #3324] - mov r2, r6 + tst r5, #63 + ldr r1, [fp, #-52] + ldr ip, [r6, #3256] + ldrne r5, [r6, #3320] + mov r2, r5 blx ip str r0, [r4] - ldrh r3, [r5, #14] + ldrh r3, [r6, #14] cmp r3, #4 - bne .L684 - ldr r0, [sp, #4] - add r2, r6, #2048 + bne .L614 + ldr r0, [fp, #-64] + add r2, r5, #2048 ldr r3, [r4, #12] - ldr r1, [sp, #16] - ldr ip, [r5, #3260] + ldr r1, [fp, #-52] + ldr ip, [r6, #3256] add r3, r3, #8 add r1, r0, r1 - ldrb r0, [sp, #12] @ zero_extendqisi2 + ldrb r0, [fp, #-56] @ zero_extendqisi2 blx ip cmn r0, #1 - mov r1, r0 - beq .L685 + beq .L615 ldr r3, [r4, #12] ldr r2, [r3, #12] cmn r2, #1 - bne .L686 + bne .L616 ldr r2, [r3, #8] cmn r2, #1 - bne .L686 + bne .L616 ldr r3, [r3] cmn r3, #1 - beq .L686 -.L685: + beq .L616 +.L615: mvn r3, #0 +.L646: str r3, [r4] -.L686: - ldr r3, [r4] - sub r0, r1, #256 - clz r0, r0 - lsr r0, r0, #5 - cmn r3, #1 - moveq r0, #0 - cmp r0, #0 - movne r3, #256 - strne r3, [r4] +.L617: ldr r3, [r4] cmn r3, #1 cmpne r3, #256 - bne .L684 + bne .L614 ldr r1, [r4, #4] - ldr r2, [sp, #16] - ldr r0, .L717+20 + ldr r2, [fp, #-52] + ldr r0, .L647+12 bl sftl_printk ldr r1, [r4, #8] cmp r1, #0 - beq .L689 + beq .L619 mov r3, #4 - ldr r0, .L717+24 + ldr r0, .L647+16 mov r2, r3 bl rknand_print_hex -.L689: +.L619: ldr r1, [r4, #12] cmp r1, #0 - beq .L684 + beq .L614 mov r3, #4 - ldr r0, .L717+28 + ldr r0, .L647+20 mov r2, r3 bl rknand_print_hex -.L684: - ldr r3, [r5, #3324] - cmp r6, r3 - bne .L681 +.L614: + ldr r3, [r6, #3320] + cmp r3, r5 + bne .L611 ldr r0, [r4, #8] - cmp r6, r0 - beq .L681 - ldrh r2, [r10] - mov r1, r6 + cmp r0, r5 + beq .L611 + ldr r3, .L647+24 + mov r1, r5 + ldrh r2, [r3] lsl r2, r2, #9 bl ftl_memcpy -.L681: - add r7, r7, #1 +.L611: + add r8, r8, #1 add r4, r4, #20 - b .L677 -.L691: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L718: + b .L607 +.L616: + ldr r3, [r4] + sub r0, r0, #256 + clz r0, r0 + cmn r3, #1 + lsr r0, r0, #5 + moveq r0, #0 + cmp r0, #0 + beq .L617 + mov r3, #256 + b .L646 +.L621: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L648: .align 2 -.L717: - .word __stack_chk_guard +.L647: .word .LANCHOR0 - .word .LC8 - .word .LANCHOR0+258 .word .LANCHOR1+216 + .word .LC8 .word .LC92 .word .LC93 .word .LC94 - .fnend + .word .LANCHOR0+258 .size FlashReadPages, .-FlashReadPages .align 2 .global FtlLoadFactoryBbt @@ -4843,65 +5167,67 @@ FlashReadPages: .fpu softvfp .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r7, #0 - ldr r4, .L730 - add r6, r4, #360 - ldr r3, [r4, #3304] - ldr r8, [r4, #3336] - add r6, r6, #2 - sub r9, r6, #64 - add r10, r4, #3456 - str r3, [r4, #3464] - str r8, [r4, #3468] -.L720: - ldrh r3, [r4, #254] - cmp r7, r3 - bcc .L725 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L659 + mov r6, #0 + add r7, r5, #364 + sub r9, r7, #66 + ldr r3, [r5, #3300] + ldr r8, [r5, #3332] + str r3, [r5, #3460] + str r8, [r5, #3464] +.L650: + ldrh r3, [r5, #254] + cmp r3, r6 + bhi .L655 mov r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L725: - ldrh r5, [r9] + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L655: + ldrh r4, [r9] mvn r3, #0 - movw fp, #61664 - strh r3, [r6, #2]! @ movhi - add r5, r5, r3 - uxth r5, r5 -.L721: + ldr r10, .L659+4 + add r4, r4, r3 + strh r3, [r7] @ movhi + uxth r4, r4 +.L651: ldrh r3, [r9] sub r2, r3, #16 - cmp r5, r2 - ble .L723 - mla r3, r7, r3, r5 + cmp r4, r2 + ble .L653 + mla r3, r6, r3, r4 mov r2, #1 - mov r1, r2 mov r0, r10 + mov r1, r2 lsl r3, r3, #10 - str r3, [r4, #3460] + str r3, [r5, #3456] bl FlashReadPages - ldr r3, [r4, #3456] + ldr r3, [r5, #3452] cmn r3, #1 - beq .L722 - ldrh r3, [r8] - cmp r3, fp - bne .L722 - strh r5, [r6] @ movhi -.L723: - add r7, r7, #1 - b .L720 -.L722: - sub r5, r5, #1 - uxth r5, r5 - b .L721 -.L731: + beq .L652 + ldrh r2, [r8] + movw r3, #61664 + cmp r2, r3 + bne .L652 + strh r4, [r7] @ movhi +.L653: + add r6, r6, #1 + add r7, r7, #2 + b .L650 +.L652: + sub r4, r4, #1 + uxth r4, r4 + b .L651 +.L660: .align 2 -.L730: +.L659: .word .LANCHOR0 - .fnend + .word .LANCHOR0+3452 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 2 .global FtlGetLastWrittenPage @@ -4910,86 +5236,83 @@ FtlLoadFactoryBbt: .fpu softvfp .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: - .fnstart @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #92 - sub sp, sp, #92 - ldr r6, .L745 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #88 + push {lr} + bl __gnu_mcount_nc + mov r3, sp cmp r1, #1 + bic r6, r3, #8128 + mov r9, r1 + bic r6, r6, #63 movwne r2, #302 - lsl r8, r0, #10 - mov r7, r1 - ldr r3, [r6] - mov r0, sp - str r3, [sp, #84] - ldr r3, .L745+4 + lsl r7, r0, #10 + ldr r3, [r6, #24] + str r3, [fp, #-40] + ldr r3, .L674 addeq r2, r3, #304 - ldrhne r5, [r3, r2] - ldrheq r5, [r2] + ldrhne r4, [r3, r2] + ldrheq r4, [r2] mov r2, r1 - ldr r3, [r3, #3328] + ldr r3, [r3, #3324] mov r1, #1 - sub r5, r5, #1 - sxth r5, r5 - str r3, [sp, #8] - add r3, sp, #20 - str r3, [sp, #12] - orr r3, r5, r8 - str r3, [sp, #4] + sub r4, r4, #1 + str r3, [fp, #-116] + sub r3, fp, #104 + str r3, [fp, #-112] + sxth r4, r4 + orr r0, r4, r0, lsl #10 + str r0, [fp, #-120] + sub r0, fp, #124 bl FlashReadPages - ldr r3, [sp, #20] + ldr r3, [fp, #-104] cmn r3, #1 - moveq r9, #0 - beq .L736 -.L735: - ldr r2, [sp, #84] - mov r0, r5 - ldr r3, [r6] - cmp r2, r3 - beq .L740 - bl __stack_chk_fail -.L739: - add r3, r9, r5 - mov r2, r7 + bne .L665 + mov r8, #0 + b .L664 +.L668: + add r3, r8, r4 + mov r2, r9 + sub r0, fp, #124 + mov r1, #1 add r3, r3, r3, lsr #31 - mov r1, #1 - mov r0, sp - asr r4, r3, #1 - sxth r3, r4 - orr r3, r3, r8 - str r3, [sp, #4] + sbfx r5, r3, #1, #16 + orr r3, r7, r3, asr #1 + str r3, [fp, #-120] bl FlashReadPages - ldr r3, [sp, #20] + ldrd r2, [fp, #-104] + and r3, r3, r2 cmn r3, #1 - bne .L737 - ldr r3, [sp, #24] + bne .L666 + ldr r3, [fp, #-124] cmn r3, #1 - bne .L737 - ldr r3, [sp] - cmn r3, #1 - subne r4, r4, #1 - sxthne r5, r4 - bne .L736 -.L737: - add r4, r4, #1 - sxth r9, r4 -.L736: - cmp r9, r5 - ble .L739 - b .L735 -.L740: - add sp, sp, #92 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L746: + subne r4, r5, #1 + sxthne r4, r4 + bne .L664 +.L666: + add r5, r5, #1 + sxth r8, r5 +.L664: + cmp r8, r4 + ble .L668 +.L665: + ldr r2, [fp, #-40] + ldr r3, [r6, #24] + cmp r2, r3 + beq .L669 + bl __stack_chk_fail +.L669: + mov r0, r4 + sub sp, fp, #36 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L675: .align 2 -.L745: - .word __stack_chk_guard +.L674: .word .LANCHOR0 - .fnend .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 2 .global FtlScanSysBlk @@ -4998,127 +5321,120 @@ FtlGetLastWrittenPage: .fpu softvfp .type FtlScanSysBlk, %function FtlScanSysBlk: - .fnstart - @ args = 0, pretend = 0, frame = 32 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #28 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L756 + movw r3, #3436 mov r5, #0 - ldr r4, .L829 mov r1, r5 - .pad #36 - sub sp, sp, #36 + add r6, r4, #320 ldr r2, [r4, #328] - add r7, r4, #3440 - add r6, r4, #344 - ldr r0, [r4, #3384] - strh r5, [r7] @ movhi - add r8, r4, #320 - strh r5, [r6] @ movhi + strh r5, [r4, r3] @ movhi + add r3, r4, #344 + ldr r0, [r4, #3380] lsl r2, r2, #2 + strh r5, [r3] @ movhi bl ftl_memset ldr r2, [r4, #328] mov r1, r5 - ldr r0, [r4, #3360] + ldr r0, [r4, #3356] lsl r2, r2, #1 bl ftl_memset - ldrh r2, [r8] + ldrh r2, [r6] mov r1, r5 - ldr r0, [r4, #3372] + ldr r0, [r4, #3368] lsl r2, r2, #2 bl ftl_memset - ldrh r2, [r8] + ldrh r2, [r6] mov r1, r5 ldr r0, [r4, #348] - sub r5, r7, #812 lsl r2, r2, #1 bl ftl_memset + add r0, r4, #2624 mov r2, #16 mov r1, #255 - sub r0, r7, #812 bl ftl_memset ldrh r3, [r4, #240] - str r6, [sp, #16] - stmib sp, {r3, r7} -.L748: +.L755: + str r3, [fp, #-48] + ldr r2, [fp, #-48] ldrh r3, [r4, #242] - ldr r2, [sp, #4] cmp r3, r2 - bls .L789 - ldr r7, .L829+4 - mov r6, #0 - ldrh r2, [r4, #232] - mov r10, r6 - ldr r8, [r4, #3292] + bls .L716 + ldr r5, .L756+4 + mov r7, #0 + ldrh r6, [r4, #232] mov r9, #20 - ldrh r1, [r7], #-52 + ldr r8, [r4, #3288] + ldr r2, [r4, #3176] + ldrh r10, [r5], #-52 ldr r3, [r4, #3180] - ldr fp, [r4, #3184] - str r1, [sp, #12] - b .L790 -.L750: - ldr r1, [sp, #4] - ldrb r0, [r7, r6] @ zero_extendqisi2 - str r3, [sp, #28] - str r2, [sp, #24] + add r6, r6, r5 + b .L717 +.L679: + ldr r1, [fp, #-48] + ldrb r0, [r5], #1 @ zero_extendqisi2 + str r3, [fp, #-60] + str r2, [fp, #-56] bl V2P_block - str r0, [sp, #20] + str r0, [fp, #-52] bl FtlBbmIsBadBlock + ldr r2, [fp, #-56] + cmp r0, #0 + ldr r3, [fp, #-60] + bne .L717 + mla ip, r9, r7, r8 + ldr r1, [fp, #-52] + mul r0, r10, r7 + add r7, r7, #1 cmp r0, #0 - ldr r2, [sp, #24] - ldr r3, [sp, #28] - bne .L749 - ldr r1, [sp, #20] - mla r0, r9, r10, r8 lsl r1, r1, #10 - stmib r0, {r1, r3} - ldr r1, [sp, #12] - mul r1, r1, r10 - add ip, r1, #3 - cmp r1, #0 - movlt r1, ip + stmib ip, {r1, r2} + add r1, r0, #3 + movge r1, r0 + uxth r7, r7 bic r1, r1, #3 - add r1, fp, r1 - str r1, [r0, #12] - add r1, r10, #1 - uxth r10, r1 -.L749: - add r6, r6, #1 -.L790: - uxth r1, r6 - cmp r2, r1 - bhi .L750 - cmp r10, #0 - bne .L751 -.L788: - ldr r3, [sp, #4] + add r1, r3, r1 + str r1, [ip, #12] +.L717: + cmp r6, r5 + bne .L679 + cmp r7, #0 + bne .L680 +.L715: + ldr r3, [fp, #-48] add r3, r3, #1 uxth r3, r3 - str r3, [sp, #4] - b .L748 -.L751: - mov fp, #0 - mov r2, #1 - mov r1, r10 + b .L755 +.L680: + mov r1, r7 mov r0, r8 + mov r2, #1 bl FlashReadPages -.L752: - uxth r3, fp - cmp r10, r3 - bls .L788 + mov r3, #0 + str r3, [fp, #-52] +.L714: + ldr r3, [fp, #-52] mov r8, #20 - ldr r3, [r4, #3292] - mul r8, r8, fp + mul r8, r8, r3 + ldr r3, [r4, #3288] add r2, r3, r8 ldr r3, [r3, r8] - ldr r6, [r2, #4] - ldr r7, [r2, #12] + ldr r5, [r2, #4] + ldr r6, [r2, #12] cmn r3, #1 - ubfx r6, r6, #10, #16 - bne .L755 + ubfx r5, r5, #10, #16 + bne .L683 mov r9, #16 -.L757: - ldr r0, [r4, #3292] + movw r10, #65535 +.L685: + ldr r0, [r4, #3288] mov r2, #1 mov r1, r2 add r0, r0, r8 @@ -5126,373 +5442,374 @@ FtlScanSysBlk: add r3, r3, #1 str r3, [r0, #4] bl FlashReadPages - ldrh r3, [r7] - movw r2, #65535 - cmp r3, r2 - ldr r3, [r4, #3292] - bne .L754 + ldrh r3, [r6] + cmp r3, r10 + ldr r3, [r4, #3288] + bne .L682 mvn r2, #0 str r2, [r3, r8] - ldr r3, [r4, #3292] + ldr r3, [r4, #3288] ldr r3, [r3, r8] cmp r3, r2 - bne .L755 -.L756: - mov r1, #1 - b .L828 -.L754: + beq .L684 +.L683: + ldr r2, [r4, #2588] + ldr r3, [r6, #4] + cmn r2, #1 + beq .L732 + cmp r2, r3 + bhi .L686 +.L732: + cmn r3, #1 + addne r2, r3, #1 + strne r2, [r4, #2588] +.L686: + ldrh r2, [r6] + movw r1, #61634 + cmp r2, r1 + beq .L687 + bhi .L688 + movw r1, #61574 + cmp r2, r1 + beq .L689 + movw r1, #61604 + cmp r2, r1 + beq .L690 +.L691: + ldr r3, [fp, #-52] + add r3, r3, #1 + str r3, [fp, #-52] + ldrh r3, [fp, #-52] + cmp r7, r3 + bhi .L714 + b .L715 +.L682: ldr r3, [r3, r8] cmn r3, #1 - bne .L755 + bne .L683 sub r9, r9, #1 uxth r9, r9 cmp r9, #0 - bne .L757 - b .L756 -.L755: - ldr r2, [r4, #2592] - ldr r3, [r7, #4] - cmn r2, #1 - beq .L758 - cmp r2, r3 - bhi .L759 -.L758: - cmn r3, #1 - addne r2, r3, #1 - strne r2, [r4, #2592] -.L759: - ldrh r2, [r7] - movw r1, #61604 - cmp r2, r1 - beq .L761 - bhi .L762 - movw r3, #61574 - cmp r2, r3 - beq .L763 -.L760: - add fp, fp, #1 - b .L752 -.L762: - movw r3, #61634 - cmp r2, r3 - beq .L764 + bne .L685 +.L684: + mov r1, #1 + b .L753 +.L688: movw r3, #65535 cmp r2, r3 moveq r1, #0 - bne .L760 -.L828: - mov r0, r6 + bne .L691 +.L753: + mov r0, r5 bl FtlFreeSysBlkQueueIn - b .L760 -.L764: - ldr r3, [sp, #8] - ldrh r2, [r3] + b .L691 +.L687: + ldr r8, .L756+8 ldr r3, [r4, #328] + ldrh r2, [r8] cmp r2, r3 - bls .L766 - movw r2, #1225 - ldr r1, .L829+8 - ldr r0, .L829+12 + bls .L693 + ldr r1, .L756+12 + mov r2, #1232 + ldr r0, .L756+16 bl sftl_printk -.L766: - ldr r0, [r4, #328] - ldr r2, [sp, #8] - ldr ip, [r4, #3384] - ldrh r2, [r2] - uxth r1, r0 - sub r3, r1, #1 - sub r1, r1, r2 +.L693: + ldr lr, [r4, #328] + ldrh r1, [r8] + uxth r2, lr + sub r3, r2, #1 + sub r2, r2, r1 + sub r2, r2, #1 sxth r3, r3 - sub r1, r1, #1 - sxth r1, r1 -.L767: - cmp r3, r1 - bgt .L773 + sxth r2, r2 + str r2, [fp, #-60] + ldr r2, [r4, #3380] + str r2, [fp, #-56] + mov r2, r3 + ldr r0, [fp, #-56] + add r10, r0, #4 +.L694: + ldr r0, [fp, #-60] + cmp r0, r3 + bge .L699 + lsl r0, r2, #2 + str r0, [fp, #-64] + sub r0, r2, #1 + ldr r9, [r6, #4] + ldr ip, [r10, r0, lsl #2] + cmp r9, ip + bls .L695 + ldr r0, [fp, #-56] + ldr r0, [r0] + cmp r0, #0 + bne .L696 + cmp lr, r1 + addne r1, r1, #1 + strhne r1, [r8] @ movhi +.L696: + uxth lr, r3 + mov ip, #0 +.L697: + uxth r8, ip + ldr r0, [r4, #3380] + sxth r1, ip + cmp lr, r8 + bhi .L698 + ldr ip, [fp, #-64] + lsl r2, r2, #1 + ldr r1, [r6, #4] + str r1, [r0, ip] + ldr r1, [r4, #3356] + strh r5, [r1, r2] @ movhi +.L699: cmp r3, #0 - bge .L805 - b .L760 -.L773: - ldr r9, [r7, #4] - lsl lr, r3, #2 - ldr r8, [ip, r3, lsl #2] - cmp r9, r8 - bls .L768 - ldr r1, [ip] - cmp r1, #0 - bne .L769 - cmp r0, r2 - ldrne r1, .L829+16 - addne r2, r2, #1 - strhne r2, [r1] @ movhi -.L769: - uxth ip, r3 - mov r1, #0 -.L770: - uxth r0, r1 - sxth r2, r1 - cmp ip, r0 - bhi .L771 - ldr r1, [r7, #4] - cmp r3, #0 - ldr r2, [r4, #3384] - str r1, [r2, lr] - lsl r2, r3, #1 - ldr r1, [r4, #3360] - strh r6, [r1, r2] @ movhi - blt .L760 - ldr r2, .L829+16 - ldr r1, [r4, #328] - ldrh r2, [r2] - sub r1, r1, r2 - sub r1, r1, #1 - sxth r1, r1 - cmp r3, r1 - bgt .L760 -.L805: - ldr r1, [sp, #8] - add r2, r2, #1 - strh r2, [r1] @ movhi - ldr r2, [r4, #3384] - ldr r1, [r7, #4] + blt .L691 + ldr r0, .L756+8 + ldr r2, [r4, #328] + ldrh r1, [r0] + sub r2, r2, r1 + sub r2, r2, #1 + sxth r2, r2 + cmp r2, r3 + blt .L691 + ldr r2, [r4, #3380] + add r1, r1, #1 + strh r1, [r0] @ movhi + ldr r1, [r6, #4] str r1, [r2, r3, lsl #2] lsl r3, r3, #1 - ldr r2, [r4, #3360] -.L826: - strh r6, [r2, r3] @ movhi - b .L760 -.L771: - ldr r0, [r4, #3384] + ldr r2, [r4, #3356] +.L752: + strh r5, [r2, r3] @ movhi + b .L691 +.L698: add r1, r1, #1 - add r8, r0, r2, lsl #2 - ldr r8, [r8, #4] - str r8, [r0, r2, lsl #2] - lsl r2, r2, #1 - ldr r0, [r4, #3360] - add r8, r0, r2 - ldrh r8, [r8, #2] - strh r8, [r0, r2] @ movhi - b .L770 -.L768: + add ip, ip, #1 + ldr r8, [r0, r1, lsl #2] + add r0, r0, r1, lsl #2 + lsl r1, r1, #1 + str r8, [r0, #-4] + ldr r0, [r4, #3356] + ldrh r1, [r0, r1]! + strh r1, [r0, #-2] @ movhi + b .L697 +.L695: sub r3, r3, #1 + mov r2, r0 sxth r3, r3 - b .L767 -.L763: - ldr r3, [sp, #16] - ldr r8, .L829+20 - ldrh r2, [r3] - ldrh r3, [r8] - cmp r2, r3 - bls .L776 - movw r2, #1266 - ldr r1, .L829+8 - ldr r0, .L829+12 - bl sftl_printk -.L776: - ldr lr, .L829+24 + b .L694 +.L689: + ldr r8, .L756+20 ldrh r2, [r8] - ldr ip, [r4, #3372] - ldrh r1, [lr] + ldrh r3, [r8, #-24] + cmp r2, r3 + bls .L703 + ldr r1, .L756+12 + movw r2, #1273 + ldr r0, .L756+16 + bl sftl_printk +.L703: + ldrh r2, [r8, #-24] + ldrh r1, [r8] sub r0, r2, #1 + ldr ip, [r4, #3368] sxth r3, r0 sub r0, r0, r1 - str r0, [sp, #12] -.L777: - ldr r0, [sp, #12] +.L704: cmp r3, r0 - ble .L782 + ble .L709 + ldr r10, [r6, #4] + lsl lr, r3, #2 ldr r9, [ip, r3, lsl #2] - lsl r8, r3, #2 - ldr r0, [r7, #4] - cmp r0, r9 - bls .L778 + cmp r10, r9 + bls .L705 sub r2, r2, r1 ldr r0, [ip] clz r2, r2 - uxth ip, r3 lsr r2, r2, #5 cmp r0, #0 orrne r2, r2, #1 + uxth r0, r3 cmp r2, #0 addeq r1, r1, #1 - strheq r1, [lr] @ movhi + strheq r1, [r8] @ movhi mov r1, #0 -.L780: - uxth r0, r1 +.L707: + uxth r8, r1 + ldr ip, [r4, #3368] sxth r2, r1 - cmp ip, r0 - bhi .L781 - ldr r1, [r7, #4] - ldr r2, [r4, #3372] - str r1, [r2, r8] + cmp r0, r8 + bhi .L708 + ldr r2, [r6, #4] + str r2, [ip, lr] lsl r2, r3, #1 ldr r1, [r4, #348] - strh r6, [r1, r2] @ movhi -.L782: + strh r5, [r1, r2] @ movhi +.L709: cmp r3, #0 - blt .L760 - ldr r0, .L829+24 + blt .L691 + ldr r0, .L756+20 ldrh r2, [r0, #-24] ldrh r1, [r0] sub r2, r2, #1 sub r2, r2, r1 sxth r2, r2 - cmp r3, r2 - bgt .L760 + cmp r2, r3 + blt .L691 + ldr r2, [r4, #3368] add r1, r1, #1 - ldr r2, [r4, #3372] strh r1, [r0] @ movhi - ldr r1, [r7, #4] + ldr r1, [r6, #4] str r1, [r2, r3, lsl #2] lsl r3, r3, #1 ldr r2, [r4, #348] - b .L826 -.L781: - ldr r0, [r4, #3372] + b .L752 +.L708: + add r2, r2, #1 add r1, r1, #1 - add lr, r0, r2, lsl #2 - ldr lr, [lr, #4] - str lr, [r0, r2, lsl #2] + ldr r8, [ip, r2, lsl #2] + add ip, ip, r2, lsl #2 lsl r2, r2, #1 - ldr r0, [r4, #348] - add lr, r0, r2 - ldrh lr, [lr, #2] - strh lr, [r0, r2] @ movhi - b .L780 -.L778: + str r8, [ip, #-4] + ldr ip, [r4, #348] + ldrh r2, [ip, r2]! + strh r2, [ip, #-2] @ movhi + b .L707 +.L705: sub r3, r3, #1 sxth r3, r3 - b .L777 -.L761: - ldrh r1, [r5] + b .L704 +.L690: + ldr r8, .L756+24 movw r2, #65535 + ldrh r1, [r8] cmp r1, r2 - strheq r6, [r5] @ movhi - beq .L827 - ldrh r0, [r5, #4] + strheq r5, [r8] @ movhi + beq .L754 + ldrh r0, [r8, #4] cmp r0, r2 - beq .L785 + beq .L712 mov r1, #1 bl FtlFreeSysBlkQueueIn -.L785: - ldr r3, [r7, #4] - ldr r2, [r4, #2636] +.L712: + ldr r3, [r6, #4] + ldr r2, [r4, #2632] cmp r2, r3 - strhcs r6, [r5, #4] @ movhi - bcs .L760 - ldrh r3, [r5] - strh r6, [r5] @ movhi - strh r3, [r5, #4] @ movhi - ldr r3, [r7, #4] -.L827: - str r3, [r4, #2636] - b .L760 -.L789: - ldr r1, [r4, #3360] + strhcs r5, [r8, #4] @ movhi + bcs .L691 + ldrh r3, [r8] + strh r3, [r8, #4] @ movhi + strh r5, [r8] @ movhi + ldr r3, [r6, #4] +.L754: + str r3, [r4, #2632] + b .L691 +.L716: + ldr r1, [r4, #3356] ldrh r3, [r1] cmp r3, #0 - beq .L791 -.L794: + beq .L718 +.L721: ldr r0, [r4, #348] ldrh r2, [r0] cmp r2, #0 - beq .L792 -.L793: - ldr r3, [sp, #8] - ldrh r2, [r3] + beq .L719 +.L720: + movw r3, #3436 + ldrh r2, [r4, r3] ldr r3, [r4, #328] cmp r2, r3 - bls .L824 - movw r2, #1391 - ldr r1, .L829+8 - ldr r0, .L829+12 + bls .L750 + ldr r1, .L756+12 + movw r2, #1398 + ldr r0, .L756+16 bl sftl_printk -.L824: +.L750: mov r0, #0 - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L791: - ldr r2, .L829+16 - ldrh r2, [r2] + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L718: + movw r2, #3436 + ldrh r2, [r4, r2] cmp r2, #0 ldrne r0, [r4, #328] - beq .L794 -.L795: + beq .L721 +.L722: sxth r2, r3 cmp r2, r0 - bcs .L794 + bcs .L721 lsl ip, r2, #1 add r3, r3, #1 ldrh ip, [r1, ip] cmp ip, #0 - beq .L795 + beq .L722 mov r3, r2 mov lr, #0 -.L796: - ldr r1, [r4, #328] - cmp r3, r1 - bcs .L794 - ldr r0, [r4, #3360] - lsl r1, r3, #1 + b .L723 +.L724: sub ip, r3, r2 + ldr r0, [r4, #3356] + lsl r1, r3, #1 lsl r5, ip, #1 ldrh r6, [r0, r1] strh r6, [r0, r5] @ movhi - ldr r0, [r4, #3384] + ldr r0, [r4, #3380] ldr r5, [r0, r3, lsl #2] add r3, r3, #1 - sxth r3, r3 str r5, [r0, ip, lsl #2] - ldr r0, [r4, #3360] + sxth r3, r3 + ldr r0, [r4, #3356] strh lr, [r0, r1] @ movhi - b .L796 -.L792: - ldr r3, .L829+24 - ldrh r1, [r3] - cmp r1, #0 - ldrhne ip, [r3, #-24]! - movne r1, r3 - beq .L793 -.L801: +.L723: + ldr r1, [r4, #328] + cmp r3, r1 + bcc .L724 + b .L721 +.L719: + ldr r1, .L756+20 + ldrh r3, [r1] + cmp r3, #0 + ldrhne ip, [r1, #-24]! + beq .L720 +.L728: sxth r3, r2 - cmp r3, ip mov lr, r3 - bge .L793 + cmp r3, ip + bge .L720 lsl r5, r3, #1 add r2, r2, #1 ldrh r5, [r0, r5] cmp r5, #0 - beq .L801 + beq .L728 mov r5, #0 -.L802: +.L729: ldrh r2, [r1] cmp r3, r2 - bge .L793 + bge .L720 + sub ip, r3, lr ldr r0, [r4, #348] lsl r2, r3, #1 - sub ip, r3, lr lsl r6, ip, #1 ldrh r7, [r0, r2] strh r7, [r0, r6] @ movhi - ldr r0, [r4, #3372] + ldr r0, [r4, #3368] ldr r6, [r0, r3, lsl #2] add r3, r3, #1 - sxth r3, r3 str r6, [r0, ip, lsl #2] + sxth r3, r3 ldr r0, [r4, #348] strh r5, [r0, r2] @ movhi - b .L802 -.L830: + b .L729 +.L757: .align 2 -.L829: +.L756: .word .LANCHOR0 .word .LANCHOR0+312 + .word .LANCHOR0+3436 .word .LANCHOR1+231 .word .LC8 - .word .LANCHOR0+3440 - .word .LANCHOR0+320 .word .LANCHOR0+344 - .fnend + .word .LANCHOR0+2624 .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadBbt @@ -5501,179 +5818,199 @@ FtlScanSysBlk: .fpu softvfp .type FtlLoadBbt, %function FtlLoadBbt: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - ldr r4, .L864 - ldr r8, .L864+4 - ldr r3, [r4, #3304] - add r7, r4, #3456 - ldr r6, [r4, #3336] - str r3, [r4, #3464] - str r6, [r4, #3468] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L792 + ldr r7, .L792+4 + ldr r8, .L792+8 + ldr r3, [r4, #3300] + ldr r6, [r4, #3332] + str r3, [r4, #3460] + str r6, [r4, #3464] bl FtlBbtMemInit movw r3, #298 ldrh r5, [r4, r3] sub r5, r5, #1 uxth r5, r5 -.L832: - ldrh r3, [r8] +.L759: + ldrh r3, [r7] sub r3, r3, #16 cmp r5, r3 - ble .L835 + ble .L764 + mov r2, #1 + mov r0, r8 + mov r1, r2 lsl r3, r5, #10 - mov r2, #1 - mov r1, r2 - mov r0, r7 - str r3, [r4, #3460] + str r3, [r4, #3456] bl FlashReadPages - ldr r3, [r4, #3456] + ldr r3, [r4, #3452] cmn r3, #1 - bne .L833 - ldr r3, [r4, #3460] - mov r2, #1 - mov r1, r2 - mov r0, r7 - add r3, r3, #1 - str r3, [r4, #3460] - bl FlashReadPages -.L833: - ldr r3, [r4, #3456] - cmn r3, #1 - beq .L834 + beq .L760 +.L763: ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L834 + bne .L762 ldr r2, [r6, #4] - ldr r3, .L864+8 + ldr r3, .L792+12 str r2, [r4, #360] ldrh r2, [r6, #8] strh r5, [r3] @ movhi strh r2, [r3, #4] @ movhi -.L835: - ldr r5, .L864+8 +.L764: + ldr r5, .L792+12 movw r2, #65535 ldrh r3, [r5] cmp r3, r2 - beq .L849 + beq .L778 ldrh r3, [r5, #4] cmp r3, r2 - beq .L839 - lsl r3, r3, #10 + beq .L768 mov r2, #1 + ldr r0, .L792+8 mov r1, r2 - add r0, r5, #3104 - str r3, [r4, #3460] + lsl r3, r3, #10 + str r3, [r4, #3456] bl FlashReadPages - ldr r3, [r4, #3456] + ldr r3, [r4, #3452] cmn r3, #1 - beq .L839 + beq .L768 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L839 + bne .L768 ldr r3, [r6, #4] ldr r2, [r4, #360] cmp r3, r2 - ldrhhi r2, [r5, #4] - strhi r3, [r4, #360] - ldrhhi r3, [r6, #8] - strhhi r2, [r5] @ movhi - strhhi r3, [r5, #4] @ movhi -.L839: - ldr r8, .L864+12 - mov r1, #1 + bls .L768 + str r3, [r4, #360] + ldrh r2, [r5, #4] + ldrh r3, [r6, #8] + strh r2, [r5] @ movhi + strh r3, [r5, #4] @ movhi +.L768: ldrh r0, [r5] - movw r9, #61649 + mov r1, #1 + ldr r10, .L792+8 bl FtlGetLastWrittenPage - sxth r7, r0 - add r0, r0, #1 - strh r0, [r5, #2] @ movhi -.L841: - cmp r7, #0 - bge .L844 + sxth r9, r0 + mov r8, r0 + add r3, r9, #1 + mov r7, #0 + strh r3, [r5, #2] @ movhi +.L770: + sub r3, r8, r7 + tst r3, #32768 + beq .L773 + ldr r1, .L792+16 mov r2, #251 - ldr r1, .L864+16 - ldr r0, .L864+20 + ldr r0, .L792+20 bl sftl_printk -.L843: - ldrh r3, [r6, #10] +.L772: ldrh r0, [r6, #12] + ldrh r3, [r6, #10] strh r3, [r5, #6] @ movhi movw r3, #65535 cmp r0, r3 - beq .L846 + beq .L775 ldr r2, [r4, #228] cmp r0, r2 - beq .L846 - ldrh r3, [r4, #242] - lsr r3, r3, #2 - cmp r0, r3 - cmpcc r2, r3 - bcs .L846 + beq .L775 + ldrh r1, [r4, #242] + cmp r0, r1, lsr #2 + movcc r3, #1 + movcs r3, #0 + cmp r2, r1, lsr #2 + andcc r3, r3, #1 + movcs r3, #0 + cmp r3, #0 + beq .L775 bl FtlSysBlkNumInit -.L846: - ldr r6, .L864+24 +.L775: + ldr r6, .L792+24 mov r5, #0 - ldr r7, .L864+28 -.L847: + add r7, r6, #3008 +.L776: ldrh r3, [r4, #254] - cmp r5, r3 - bcc .L848 + cmp r3, r5 + bhi .L777 mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L834: + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L760: + ldr r3, [r4, #3456] + mov r2, #1 + mov r0, r8 + mov r1, r2 + add r3, r3, #1 + str r3, [r4, #3456] + bl FlashReadPages + ldr r3, [r4, #3452] + cmn r3, #1 + bne .L763 +.L762: sub r5, r5, #1 uxth r5, r5 - b .L832 -.L844: - ldrh r3, [r5] + b .L759 +.L773: + ldrh r2, [r5] + sub r3, r9, r7 + mov r0, r10 + orr r3, r3, r2, lsl #10 mov r2, #1 + str r3, [r4, #3456] mov r1, r2 - mov r0, r8 - orr r3, r7, r3, lsl #10 + ldr r3, [r4, #3300] str r3, [r4, #3460] - ldr r3, [r4, #3304] - str r3, [r4, #3464] bl FlashReadPages - ldr r3, [r4, #3456] + ldr r3, [r4, #3452] cmn r3, #1 - beq .L842 - ldrh r3, [r6] - cmp r3, r9 - beq .L843 -.L842: - sub r7, r7, #1 - sxth r7, r7 - b .L841 -.L848: + beq .L771 + ldrh r2, [r6] + movw r3, #61649 + cmp r2, r3 + beq .L772 +.L771: + add r7, r7, #1 + b .L770 +.L777: ldrh r2, [r7] - ldr r1, [r4, #3464] - ldr r0, [r6, #4]! + ldr r3, [r4, #3460] + ldr r0, [r6], #4 + mul r1, r5, r2 lsl r2, r2, #2 - mla r1, r5, r2, r1 add r5, r5, #1 + add r1, r3, r1, lsl #2 bl ftl_memcpy - b .L847 -.L849: + b .L776 +.L778: mvn r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L865: + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L793: .align 2 -.L864: +.L792: .word .LANCHOR0 .word .LANCHOR0+298 + .word .LANCHOR0+3452 .word .LANCHOR0+352 - .word .LANCHOR0+3456 .word .LANCHOR1+245 .word .LC8 - .word .LANCHOR0+376 - .word .LANCHOR0+3392 - .fnend + .word .LANCHOR0+380 .size FtlLoadBbt, .-FtlLoadBbt + .section .rodata.str1.1 +.LC95: + .ascii "prog read error: = %x\012\000" +.LC96: + .ascii "prog read REFRESH: = %x\012\000" +.LC97: + .ascii "prog read s error: = %x %x %x %x %x\012\000" +.LC98: + .ascii "prog read d error: = %x %x %x %x %x\012\000" + .text .align 2 .global FlashProgPages .syntax unified @@ -5681,215 +6018,233 @@ FtlLoadBbt: .fpu softvfp .type FlashProgPages, %function FlashProgPages: - .fnstart @ args = 0, pretend = 0, frame = 48 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #52 - sub sp, sp, #52 - ldr r6, .L905 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #60 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r6, .L833 + bic r3, r3, #8128 + mov r7, r0 + bic r3, r3, #63 mov r10, r1 mov r4, r0 mov r5, r0 - ldr r3, .L905+4 - mov r8, #0 - ldrh fp, [r6, #12] - mov r9, r6 - str r2, [sp, #8] - ldr r2, [r3] - str r3, [sp, #12] - str r2, [sp, #44] - lsl r2, fp, #3 - str r2, [sp, #4] -.L867: - cmp r8, r10 - bne .L881 - ldr r7, .L905+8 - mov r5, #0 - ldr r9, .L905+12 - ldr r10, .L905+16 -.L882: - cmp r8, r5 - beq .L875 - ldr r2, [r6, #3324] + str r2, [fp, #-88] + mov r9, #0 + ldr r3, [r3, #24] + str r3, [fp, #-48] + ldrh r3, [r6, #12] + str r3, [fp, #-80] + lsl r3, r3, #3 + str r3, [fp, #-84] +.L795: + cmp r9, r10 + bne .L808 + mov r0, #20 + ldr r5, .L833+4 + ldr r8, .L833+8 + mla r7, r0, r9, r7 +.L809: + cmp r7, r4 + beq .L802 + ldr r2, [r6, #3320] mov r3, #0 + sub r0, fp, #68 mov r1, #1 - add r0, sp, #24 str r3, [r2] - ldr r2, [r6, #3332] + ldr r2, [r6, #3328] str r3, [r2] + ldr r2, [fp, #-88] ldr r3, [r4, #4] - ldr r2, [sp, #8] - str r3, [sp, #28] - ldr r3, [r6, #3324] - str r3, [sp, #32] - ldr r3, [r6, #3332] - str r3, [sp, #36] + str r3, [fp, #-64] + ldr r3, [r6, #3320] + str r3, [fp, #-60] + ldr r3, [r6, #3328] + str r3, [fp, #-56] bl FlashReadPages - ldr fp, [sp, #24] - cmn fp, #1 - bne .L883 + ldr r9, [fp, #-68] + cmn r9, #1 + bne .L810 ldr r1, [r4, #4] - mov r0, r7 + mov r0, r5 bl sftl_printk - str fp, [r4] -.L883: - ldr fp, [sp, #24] - cmp fp, #256 - bne .L884 + str r9, [r4] +.L810: + ldr r9, [fp, #-68] + cmp r9, #256 + bne .L811 ldr r1, [r4, #4] - mov r0, r9 + mov r0, r8 bl sftl_printk - str fp, [r4] -.L884: + str r9, [r4] +.L811: ldr r3, [r4, #12] cmp r3, #0 - beq .L885 + beq .L812 + ldr r1, .L833 ldr r2, [r3] - ldr r3, [r6, #3332] - ldr r3, [r3] - cmp r2, r3 - beq .L885 + ldr r1, [r1, #3328] + ldr r0, [r1] + cmp r2, r0 + bne .L813 + ldr lr, [r3, #8] + ldr ip, [r1, #8] + cmp lr, ip + beq .L812 +.L813: + ldr r1, [r1, #4] + strd r0, [sp] + ldr r0, .L833+12 + ldr r3, [r3, #4] ldr r1, [r4, #4] - mov r0, r10 bl sftl_printk mvn r3, #0 str r3, [r4] -.L885: +.L812: ldr r3, [r4, #8] cmp r3, #0 - beq .L886 + beq .L814 + ldr r1, .L833 ldr r2, [r3] - ldr r3, [r6, #3324] - ldr r3, [r3] - cmp r2, r3 - beq .L886 + ldr r1, [r1, #3320] + ldr r0, [r1] + cmp r2, r0 + bne .L815 + ldr lr, [r3, #2048] + ldr ip, [r1, #2048] + cmp lr, ip + beq .L814 +.L815: + ldr r1, [r1, #4] + strd r0, [sp] + ldr r0, .L833+16 + ldr r3, [r3, #4] ldr r1, [r4, #4] - ldr r0, .L905+20 bl sftl_printk mvn r3, #0 str r3, [r4] -.L886: - add r5, r5, #1 +.L814: add r4, r4, #20 - b .L882 -.L881: + b .L809 +.L808: ldr r3, [r5, #8] cmp r3, #0 - beq .L868 + beq .L796 ldr r3, [r5, #12] cmp r3, #0 - bne .L869 -.L868: + bne .L797 +.L796: + ldr r1, .L833+20 mov r2, #148 - ldr r1, .L905+24 - ldr r0, .L905+28 + ldr r0, .L833+24 bl sftl_printk -.L869: - add r2, sp, #16 - add r1, sp, #20 +.L797: + sub r2, fp, #76 + sub r1, fp, #72 mov r0, r5 bl l2p_addr_tran - ldr r7, [sp, #16] - cmp r7, #3 - bls .L870 -.L904: + ldr r8, [fp, #-76] + cmp r8, #3 + bls .L798 +.L832: mvn r3, #0 str r3, [r5] - b .L871 -.L870: - cmp r7, #0 - bne .L872 - ldr r3, [sp, #20] - ldr r2, [sp, #4] + b .L799 +.L798: + cmp r8, #0 + bne .L800 + ldr r3, [fp, #-72] + ldr r2, [fp, #-84] cmp r2, r3 - bls .L872 - ldr r5, .L905+24 - ldr r6, .L905+32 - ldr r8, .L905+36 - b .L902 -.L874: + bls .L800 + ldr r6, .L833+20 + ldr r5, .L833+28 +.L801: + ldr r2, [r4, #4] mvn r3, #0 - ldr r2, [r4, #-16] - str r3, [r4, #-20] - mov r1, r5 - mov r0, r6 - add r7, r7, #1 + mov r1, r6 + str r3, [r4] + mov r0, r5 + add r8, r8, #1 bl sftl_printk + ldr r1, [r4, #8] + ldr r0, .L833+32 mov r3, #16 mov r2, #4 - ldr r1, [r4, #-12] - mov r0, r8 + add r4, r4, #20 bl rknand_print_hex mov r3, #4 ldr r1, [r4, #-8] mov r2, r3 - ldr r0, .L905+40 + ldr r0, .L833+36 bl rknand_print_hex -.L902: - cmp r7, r10 - add r4, r4, #20 - bne .L874 + cmp r10, r8 + bne .L801 bl dump_stack -.L875: - ldr r3, [sp, #12] - mov r0, #0 - ldr r2, [sp, #44] - ldr r3, [r3] +.L802: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] cmp r2, r3 - beq .L888 + beq .L817 bl __stack_chk_fail -.L872: +.L800: ldr r1, [r5, #8] tst r1, #63 - moveq r7, r1 - beq .L876 - ldr r7, [r9, #3324] - cmp r1, r7 - beq .L876 - ldr r3, .L905+44 - mov r0, r7 + moveq r8, r1 + beq .L803 + ldr r8, [r6, #3320] + cmp r8, r1 + beq .L803 + ldr r3, .L833+40 + mov r0, r8 ldrh r2, [r3] lsl r2, r2, #9 bl ftl_memcpy -.L876: +.L803: ldr r3, [r5, #12] - mov r2, r7 - ldr r1, [sp, #20] - ldrb r0, [sp, #16] @ zero_extendqisi2 - ldr ip, [r9, #3256] + mov r2, r8 + ldr r1, [fp, #-72] + ldrb r0, [fp, #-76] @ zero_extendqisi2 + ldr ip, [r6, #3252] blx ip cmp r0, #0 - mvnne r3, #0 streq r0, [r5] + mvnne r3, #0 strne r3, [r5] - ldrh r3, [r9, #14] + ldrh r3, [r6, #14] cmp r3, #4 - bne .L871 + bne .L799 + ldr r0, [fp, #-80] + add r2, r8, #2048 ldr r3, [r5, #12] - add r2, r7, #2048 - ldr r1, [sp, #20] - ldrb r0, [sp, #16] @ zero_extendqisi2 + ldr r1, [fp, #-72] + ldr ip, [r6, #3252] add r3, r3, #8 - ldr ip, [r9, #3256] - add r1, fp, r1 + add r1, r0, r1 + ldrb r0, [fp, #-76] @ zero_extendqisi2 blx ip cmp r0, #0 - bne .L904 -.L871: - add r8, r8, #1 + bne .L832 +.L799: + add r9, r9, #1 add r5, r5, #20 - b .L867 -.L888: - add sp, sp, #52 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L906: + b .L795 +.L817: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L834: .align 2 -.L905: +.L833: .word .LANCHOR0 - .word __stack_chk_guard .word .LC95 .word .LC96 .word .LC97 @@ -5900,7 +6255,6 @@ FlashProgPages: .word .LC87 .word .LC88 .word .LANCHOR0+258 - .fnend .size FlashProgPages, .-FlashProgPages .align 2 .global FtlLowFormatEraseBlock @@ -5909,236 +6263,234 @@ FlashProgPages: .fpu softvfp .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: - .fnstart @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, #0 - ldr r4, .L950 - mov r6, r1 - mov r7, r10 - mov r5, r10 - mov r9, #20 - .pad #20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #20 - add fp, r4, #312 - str r0, [sp, #4] - str r0, [r4, #3288] -.L908: - ldrh r1, [r4, #232] - uxth r3, r10 - cmp r1, r3 - bhi .L912 - cmp r7, #0 - beq .L907 - mov r8, #0 - mov r9, #20 - mov r2, r7 - mov r1, #0 - ldr r0, [r4, #3272] - bl FlashEraseBlocks -.L915: - uxth r3, r8 - cmp r7, r3 - bhi .L917 -.L918: - cmp r6, #0 - mov r8, #0 - ldrne r3, .L950+4 - mov fp, #20 - moveq r3, #2 - streq r6, [sp, #8] - streq r3, [sp, #12] - ldrhne r3, [r3] - strne r3, [sp, #12] - movne r3, #1 - strne r3, [sp, #8] -.L927: - mov r10, #0 - mov r7, r10 -.L919: - ldrh r1, [r4, #232] - uxth r3, r10 - cmp r1, r3 - bhi .L922 - cmp r7, #0 - beq .L907 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L877 mov r9, #0 - mov r3, #1 - ldr r2, [sp, #8] - mov r1, r7 - ldr r0, [r4, #3272] - bl FlashProgPages -.L924: - uxth r3, r9 - cmp r7, r3 - bhi .L926 - add r8, r8, #1 - ldr r2, [sp, #12] - uxth r3, r8 - cmp r2, r3 - bhi .L927 - mov r8, #0 - mov r9, #20 -.L928: - uxth r3, r8 - cmp r7, r3 - bhi .L930 - ldr r3, [sp, #4] - adds r6, r6, #0 - movne r6, #1 - cmp r3, #63 - orrls r6, r6, #1 + mov r6, r9 + mov r5, r9 + add r10, r4, #312 + strd r0, [fp, #-52] + mov r8, #20 + str r0, [r4, #3284] +.L836: + ldrh r1, [r4, #232] + uxth r2, r9 + cmp r1, r2 + bhi .L840 cmp r6, #0 - beq .L907 - mov r2, r7 - ldr r1, [sp, #8] - ldr r0, [r4, #3272] + beq .L835 + mov r7, #0 + mov r8, #20 + ldr r0, [r4, #3268] + mov r2, r6 + mov r1, #0 bl FlashEraseBlocks -.L907: - mov r0, r5 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L912: - uxth r3, r10 - ldr r0, [r4, #3272] - mov r2, #0 - mul r1, r9, r3 - add r3, r4, r3 - str r2, [r0, r1] - ldr r1, [sp, #4] - ldrb r0, [r3, #260] @ zero_extendqisi2 - bl V2P_block - cmp r6, #0 - mov r8, r0 - beq .L909 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L910 -.L909: - mov r0, r8 - bl FtlBbmIsBadBlock - cmp r0, #0 - addne r5, r5, #1 - uxthne r5, r5 - bne .L910 - ldr r1, [r4, #3272] - lsl r8, r8, #10 - ldr r3, [r4, #3320] - mla r1, r9, r7, r1 - str r3, [r1, #8] - ldrh r3, [fp] - str r8, [r1, #4] - mul r3, r7, r3 - add r7, r7, #1 - uxth r7, r7 - add r0, r3, #3 - cmp r3, #0 - movlt r3, r0 - ldr r0, [r4, #3340] - bic r3, r3, #3 - add r3, r0, r3 - str r3, [r1, #12] -.L910: - add r10, r10, #1 - b .L908 -.L917: - mul r3, r9, r8 - ldr r2, [r4, #3272] +.L844: + mul r3, r8, r7 + ldr r2, [r4, #3268] add r1, r2, r3 ldr r3, [r2, r3] cmn r3, #1 - bne .L916 + bne .L843 ldr r0, [r1, #4] add r5, r5, #1 uxth r5, r5 ubfx r0, r0, #10, #16 bl FtlBbmMapBadBlock -.L916: - add r8, r8, #1 - b .L915 -.L922: - uxth r3, r10 - ldr r0, [r4, #3272] - mov r2, #0 - mul r1, fp, r3 - add r3, r4, r3 - str r2, [r0, r1] - ldr r1, [sp, #4] - ldrb r0, [r3, #260] @ zero_extendqisi2 - bl V2P_block - cmp r6, #0 - mov r9, r0 - beq .L920 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L921 -.L920: - mov r0, r9 - bl FtlBbmIsBadBlock - cmp r0, #0 - bne .L921 - ldr r1, [r4, #3272] - add r9, r8, r9, lsl #10 - ldr r3, [r4, #3316] - mla r1, fp, r7, r1 - str r3, [r1, #8] - ldr r3, .L950+8 - str r9, [r1, #4] - ldrh r3, [r3] - mul r3, r7, r3 +.L843: add r7, r7, #1 - uxth r7, r7 - add r0, r3, #3 + uxth r3, r7 + cmp r6, r3 + bhi .L844 +.L845: + ldr r3, [fp, #-48] + mov r9, #0 cmp r3, #0 - movlt r3, r0 - ldr r0, [r4, #3320] - bic r3, r3, #3 - add r3, r0, r3 - str r3, [r1, #12] -.L921: - add r10, r10, #1 - b .L919 -.L926: - mul r3, fp, r9 - ldr r2, [r4, #3272] + moveq r3, #2 + movne r8, #1 + ldrne r3, .L877+4 + ldreq r8, [fp, #-48] + streq r3, [fp, #-56] + ldrhne r3, [r3] + strne r3, [fp, #-56] +.L853: + mov r10, #0 + mov r6, r10 +.L846: + ldrh r1, [r4, #232] + uxth r2, r10 + cmp r1, r2 + bhi .L849 + cmp r6, #0 + beq .L835 + mov r7, #0 + mov r10, #20 + ldr r0, [r4, #3268] + mov r2, r8 + mov r1, r6 + mov r3, #1 + bl FlashProgPages +.L852: + mul r3, r10, r7 + ldr r2, [r4, #3268] add r1, r2, r3 ldr r3, [r2, r3] cmp r3, #0 - beq .L925 + beq .L851 ldr r0, [r1, #4] add r5, r5, #1 uxth r5, r5 ubfx r0, r0, #10, #16 bl FtlBbmMapBadBlock -.L925: +.L851: + add r7, r7, #1 + uxth r3, r7 + cmp r6, r3 + bhi .L852 add r9, r9, #1 - b .L924 -.L930: - cmp r6, #0 - beq .L929 - mul r3, r9, r8 - ldr r2, [r4, #3272] + ldr r2, [fp, #-56] + uxth r3, r9 + cmp r2, r3 + bhi .L853 + mov r7, #0 + mov r9, #20 +.L855: + ldr r3, [fp, #-48] + cmp r3, #0 + beq .L854 + mul r3, r9, r7 + ldr r2, [r4, #3268] add r1, r2, r3 ldr r3, [r2, r3] cmp r3, #0 - bne .L929 + bne .L854 ldr r0, [r1, #4] mov r1, #1 ubfx r0, r0, #10, #16 bl FtlFreeSysBlkQueueIn -.L929: - add r8, r8, #1 - b .L928 -.L951: +.L854: + add r7, r7, #1 + uxth r3, r7 + cmp r6, r3 + bhi .L855 + ldr r3, [fp, #-48] + subs r1, r3, #0 + ldr r3, [fp, #-52] + movne r1, #1 + cmp r3, #63 + orrls r1, r1, #1 + cmp r1, #0 + beq .L835 + ldr r0, [r4, #3268] + mov r2, r6 + mov r1, r8 + bl FlashEraseBlocks +.L835: + mov r0, r5 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L840: + uxth r2, r9 + ldr r0, [r4, #3268] + mov r3, #0 + mul r1, r8, r2 + add r2, r4, r2 + str r3, [r0, r1] + ldr r1, [fp, #-52] + ldrb r0, [r2, #260] @ zero_extendqisi2 + bl V2P_block + ldr r3, [fp, #-48] + mov r7, r0 + cmp r3, #0 + beq .L837 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L838 +.L837: + mov r0, r7 + bl FtlBbmIsBadBlock + cmp r0, #0 + addne r5, r5, #1 + uxthne r5, r5 + bne .L838 + ldr r2, [r4, #3268] + lsl r7, r7, #10 + ldrh r0, [r10] + ldr r1, [r4, #3316] + mla r2, r8, r6, r2 + mul r0, r6, r0 + add r6, r6, #1 + cmp r0, #0 + uxth r6, r6 + str r1, [r2, #8] + add r1, r0, #3 + movge r1, r0 + ldr r0, [r4, #3336] + bic r1, r1, #3 + str r7, [r2, #4] + add r1, r0, r1 + str r1, [r2, #12] +.L838: + add r9, r9, #1 + b .L836 +.L849: + uxth r2, r10 + mov r3, #20 + ldr r0, [r4, #3268] + mul r1, r3, r2 + add r2, r4, r2 + mov r3, #0 + str r3, [r0, r1] + ldr r1, [fp, #-52] + ldrb r0, [r2, #260] @ zero_extendqisi2 + bl V2P_block + ldr r3, [fp, #-48] + mov r7, r0 + cmp r3, #0 + beq .L847 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L848 +.L847: + mov r0, r7 + bl FtlBbmIsBadBlock + cmp r0, #0 + bne .L848 + ldr r2, [r4, #3268] + mov r3, #20 + ldr r1, [r4, #3312] + add r7, r9, r7, lsl #10 + mla r2, r3, r6, r2 + ldr r3, .L877+8 + ldrh r0, [r3] + str r1, [r2, #8] + str r7, [r2, #4] + mul r0, r6, r0 + add r6, r6, #1 + cmp r0, #0 + add r1, r0, #3 + movge r1, r0 + ldr r0, [r4, #3316] + bic r1, r1, #3 + uxth r6, r6 + add r1, r0, r1 + str r1, [r2, #12] +.L848: + add r10, r10, #1 + b .L846 +.L878: .align 2 -.L950: +.L877: .word .LANCHOR0 .word .LANCHOR0+304 .word .LANCHOR0+312 - .fnend .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FlashTestBlk @@ -6147,83 +6499,90 @@ FtlLowFormatEraseBlock: .fpu softvfp .type FlashTestBlk, %function FlashTestBlk: - .fnstart @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L959 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #92 + push {lr} + bl __gnu_mcount_nc + mov r3, sp cmp r0, #11 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - .pad #88 - sub sp, sp, #88 - movls r4, #0 - mov r6, r3 - ldr r2, [r3] - str r2, [sp, #84] - bls .L952 - ldr r4, .L959+4 - mov r5, r0 + bic r6, r3, #8128 + mov r4, r0 + bic r6, r6, #63 + movls r5, #0 + ldr r3, [r6, #24] + str r3, [fp, #-32] + bls .L879 + ldr r5, .L885 + sub r0, fp, #96 mov r2, #32 - add r0, sp, #20 mov r1, #165 - str r0, [sp, #12] - ldr r3, [r4, #3328] - lsl r5, r5, #10 - str r3, [sp, #8] + str r0, [fp, #-104] + lsl r4, r4, #10 + ldr r3, [r5, #3324] + str r3, [fp, #-108] bl ftl_memset + ldr r0, [r5, #3324] mov r2, #8 mov r1, #90 - ldr r0, [r4, #3328] bl ftl_memset mov r2, #1 - mov r0, sp + sub r0, fp, #116 mov r1, r2 - str r5, [sp, #4] + str r4, [fp, #-112] bl FlashEraseBlocks mov r3, #1 - mov r0, sp + sub r0, fp, #116 mov r2, r3 mov r1, r3 bl FlashProgPages - ldr r3, [sp] + ldr r3, [fp, #-116] cmp r3, #0 - mvnne r4, #0 - bne .L954 - add r3, r5, #1 - mov r0, sp - str r3, [sp, #4] + mvnne r5, #0 + bne .L881 + add r3, r4, #1 + sub r0, fp, #116 + str r3, [fp, #-112] mov r3, #1 mov r2, r3 mov r1, r3 bl FlashProgPages - ldr r4, [sp] - adds r4, r4, #0 - movne r4, #1 - rsb r4, r4, #0 -.L954: + ldr r5, [fp, #-116] + subs r5, r5, #0 + movne r5, #1 + rsb r5, r5, #0 +.L881: + sub r0, fp, #116 mov r2, #1 mov r1, #0 - mov r0, sp - str r5, [sp, #4] + str r4, [fp, #-112] bl FlashEraseBlocks -.L952: - ldr r2, [sp, #84] - mov r0, r4 - ldr r3, [r6] +.L879: + ldr r2, [fp, #-32] + ldr r3, [r6, #24] cmp r2, r3 - beq .L955 + beq .L882 bl __stack_chk_fail -.L955: - add sp, sp, #88 - @ sp needed - pop {r4, r5, r6, pc} -.L960: +.L882: + mov r0, r5 + sub sp, fp, #24 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L886: .align 2 -.L959: - .word __stack_chk_guard +.L885: .word .LANCHOR0 - .fnend .size FlashTestBlk, .-FlashTestBlk + .section .rodata.str1.1 +.LC99: + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" +.LC100: + .ascii "FtlBbmTblFlush error:%x\012\000" +.LC101: + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" + .text .align 2 .global FtlBbmTblFlush .syntax unified @@ -6231,149 +6590,143 @@ FlashTestBlk: .fpu softvfp .type FtlBbmTblFlush, %function FtlBbmTblFlush: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L895 mov r5, #0 - ldr r4, .L974 mov r1, #0 - ldr r3, [r4, #3336] - add r6, r4, #376 - ldr r0, [r4, #3304] - add r7, r4, #3392 - str r3, [r4, #3468] - movw r3, #310 - ldrh r2, [r4, r3] - str r0, [r4, #3464] - bl ftl_memset -.L962: - ldrh r3, [r4, #254] - cmp r5, r3 - blt .L963 - ldr r7, [r4, #3468] - mov r2, #16 - mov r1, #255 - ldr r6, .L974+4 - ldr r10, .L974+8 - mov r5, #0 - mov r0, r7 - mov r8, r5 - bl ftl_memset - ldr r3, .L974+12 - sub r9, r6, #48 - strh r3, [r7] @ movhi - ldr r3, [r4, #360] - str r3, [r7, #4] - ldrh r3, [r6] - strh r3, [r7, #2] @ movhi - ldrh r3, [r6, #4] - strh r3, [r7, #8] @ movhi - ldrh r3, [r6, #6] - strh r3, [r7, #10] @ movhi - ldr r3, [r4, #228] - strh r3, [r7, #12] @ movhi - ldr r3, [r4, #2608] - strh r3, [r7, #14] @ movhi -.L964: - ldr r3, [r4, #3304] - mov fp, #0 - ldrh r2, [r6, #2] - ldrh r1, [r6] + add r6, r4, #380 + add r7, r6, #3008 + ldr r3, [r4, #3332] str r3, [r4, #3464] - ldr r3, [r4, #3336] - str fp, [r4, #3456] - str r3, [r4, #3468] - orr r3, r2, r1, lsl #10 - ldrh r0, [r7, #10] + movw r3, #310 + ldr r0, [r4, #3300] + ldrh r2, [r4, r3] + str r0, [r4, #3460] + bl ftl_memset +.L888: + ldrh r3, [r4, #254] + cmp r3, r5 + bgt .L889 + ldr r6, [r4, #3464] + mov r2, #16 + ldr r5, .L895+4 + mov r1, #255 + mov r0, r6 + mov r7, #0 + bl ftl_memset + ldr r3, .L895+8 + strh r3, [r6] @ movhi + mov r9, r5 + mov r8, r7 + ldr r3, [r4, #360] + str r3, [r6, #4] + ldrh r3, [r9], #-48 + strh r3, [r6, #2] @ movhi + ldr r3, [r4, #356] + str r3, [r6, #8] + ldr r3, [r4, #228] + strh r3, [r6, #12] @ movhi + ldr r3, [r4, #2604] + strh r3, [r6, #14] @ movhi +.L890: + ldr r3, [r4, #3300] + mov r10, #0 + ldrh r2, [r5, #2] + ldrh r1, [r5] str r3, [r4, #3460] - ldrh r3, [r6, #4] - str r0, [sp] - mov r0, r10 + ldr r3, [r4, #3332] + str r3, [r4, #3464] + orr r3, r2, r1, lsl #10 + str r3, [r4, #3456] + ldrh r3, [r6, #10] + str r3, [sp] + ldr r0, .L895+12 + ldrh r3, [r5, #4] + str r10, [r4, #3452] bl sftl_printk ldrh r3, [r9] - ldrh r2, [r6, #2] + ldrh r2, [r5, #2] sub r3, r3, #1 cmp r2, r3 - blt .L965 + blt .L891 ldr r3, [r4, #360] - ldrh r2, [r6] - ldr r0, [r4, #3272] + ldr r0, [r4, #3268] add r3, r3, #1 - strh fp, [r6, #2] @ movhi str r3, [r4, #360] - str r3, [r7, #4] - ldrh r3, [r6, #4] - strh r2, [r7, #8] @ movhi - strh r2, [r6, #4] @ movhi + str r3, [r6, #4] + ldrh r2, [r5] + ldrh r3, [r5, #4] + strh r2, [r6, #8] @ movhi + strh r2, [r5, #4] @ movhi mov r2, #1 - strh r3, [r6] @ movhi + strh r3, [r5] @ movhi mov r1, r2 lsl r3, r3, #10 - str r3, [r4, #3460] + str r3, [r4, #3456] str r3, [r0, #4] + strh r10, [r5, #2] @ movhi bl FlashEraseBlocks -.L965: +.L891: mov r3, #1 - ldr r0, .L974+16 + ldr r0, .L895+16 mov r2, r3 mov r1, r3 bl FlashProgPages - ldrh r3, [r6, #2] + ldrh r3, [r5, #2] + ldr r0, [r4, #3452] add r3, r3, #1 - strh r3, [r6, #2] @ movhi - ldr r3, [r4, #3456] - cmn r3, #1 - bne .L966 - add r5, r5, #1 - ldr r1, [r4, #3460] - uxth r5, r5 - ldr r0, .L974+20 + strh r3, [r5, #2] @ movhi + cmn r0, #1 + bne .L892 + add r7, r7, #1 + ldr r1, [r4, #3456] + ldr r0, .L895+20 + uxth r7, r7 bl sftl_printk - cmp r5, #3 - bls .L964 - mov r2, r5 - ldr r1, [r4, #3460] - ldr r0, .L974+24 + cmp r7, #3 + bls .L890 + ldr r1, [r4, #3456] + mov r2, r7 + ldr r0, .L895+24 bl sftl_printk -.L968: - b .L968 -.L963: +.L894: + b .L894 +.L889: ldrh r2, [r7] - ldr r3, [r4, #3464] - ldr r1, [r6, #4]! - mul r0, r2, r5 + ldr r3, [r4, #3460] + ldr r1, [r6], #4 + mul r0, r5, r2 lsl r2, r2, #2 add r5, r5, #1 add r0, r3, r0, lsl #2 bl ftl_memcpy - b .L962 -.L969: - mov r8, #1 - b .L964 -.L966: + b .L888 +.L892: add r8, r8, #1 - cmp r8, #1 - ble .L969 - cmp r3, #256 - beq .L964 - mov r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L975: + cmp r0, #256 + cmpne r8, #1 + movle r0, #1 + movgt r0, #0 + ble .L890 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L896: .align 2 -.L974: +.L895: .word .LANCHOR0 .word .LANCHOR0+352 - .word .LC99 .word -3887 - .word .LANCHOR0+3456 + .word .LC99 + .word .LANCHOR0+3452 .word .LC100 .word .LC101 - .fnend .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 .global allocate_data_superblock @@ -6382,246 +6735,250 @@ FtlBbmTblFlush: .fpu softvfp .type allocate_data_superblock, %function allocate_data_superblock: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L929 mov r5, r0 - ldr r4, .L1013 - .pad #20 - sub sp, sp, #20 - add fp, r4, #2528 -.L977: - ldr r2, .L1013+4 +.L898: + ldr r2, .L929+4 ldrh r3, [r4, #224] ldrh r2, [r2] add r3, r3, r2 ldrh r2, [r4, #240] cmp r3, r2 - ble .L978 - movw r2, #2660 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + ble .L899 + ldr r1, .L929+8 + movw r2, #2667 + ldr r0, .L929+12 bl sftl_printk -.L978: - ldr r3, .L1013+16 +.L899: + ldr r3, .L929+16 cmp r5, r3 movne r1, #0 - bne .L979 + bne .L900 ldrh r3, [r4, #224] - ldr r1, [r4, #3168] + ldr r1, [r4, #3164] mul r2, r1, r3 lsr r1, r3, #1 - add r1, r1, #1 + movw r3, #65535 add r1, r1, r2, lsr #2 uxth r1, r1 - cmp r1, #0 - subne r1, r1, #1 - uxthne r1, r1 -.L979: - ldr r0, .L1013+20 + cmp r1, r3 + moveq r1, #0 +.L900: + ldr r0, .L929+20 bl List_pop_index_node ldrh r3, [r4, #224] mov r6, r0 uxth r8, r0 cmp r3, #0 - bne .L980 - movw r2, #2669 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + bne .L901 + ldr r1, .L929+8 + movw r2, #2676 + ldr r0, .L929+12 bl sftl_printk -.L980: +.L901: ldrh r3, [r4, #224] sub r3, r3, #1 strh r3, [r4, #224] @ movhi ldrh r3, [r4, #240] cmp r3, r8 - bls .L977 + bls .L898 uxth r6, r6 ldr r3, [r4, #72] lsl r6, r6, #1 ldrh r7, [r3, r6] cmp r7, #0 - bne .L977 - strh r8, [r5] @ movhi + bne .L898 mov r0, r5 + strh r8, [r5] @ movhi bl make_superblock ldrb r3, [r5, #7] @ zero_extendqisi2 cmp r3, #0 - bne .L982 + bne .L903 ldr r3, [r4, #72] mvn r2, #0 mov r0, r8 strh r2, [r3, r6] @ movhi bl INSERT_DATA_LIST - ldrh r2, [fp] + ldr r2, .L929+4 ldrh r3, [r4, #224] + ldrh r2, [r2] add r3, r3, r2 ldrh r2, [r4, #240] cmp r3, r2 - ble .L977 - movw r2, #2683 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + ble .L898 + ldr r1, .L929+8 + movw r2, #2690 + ldr r0, .L929+12 bl sftl_printk - b .L977 -.L982: - ldrh r2, [fp] + b .L898 +.L903: + ldr r2, .L929+4 ldrh r3, [r4, #224] + ldrh r2, [r2] add r3, r3, r2 ldrh r2, [r4, #240] cmp r3, r2 - ble .L984 - movw r2, #2686 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + ble .L905 + ldr r1, .L929+8 + movw r2, #2693 + ldr r0, .L929+12 bl sftl_printk -.L984: - ldr r1, [r4, #3272] - mov r9, #20 - ldrh r2, [r4, #232] +.L905: + ldr r0, [r4, #3268] add r10, r5, #16 - mov r0, r10 - mov ip, #0 - mov r3, r1 - mla r2, r9, r2, r1 - str r2, [sp, #4] -.L985: - ldr r2, [sp, #4] - cmp r2, r3 - bne .L987 + ldrh r3, [r4, #232] + mov r9, r10 + str r3, [fp, #-48] + mov r2, r0 + mov r3, #0 + mov ip, r3 +.L906: + ldr lr, [fp, #-48] + uxth r1, r3 + cmp lr, r1 + bhi .L908 cmp r7, #0 - bne .L988 - movw r2, #2697 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + bne .L909 + ldr r1, .L929+8 + mov r2, #2704 + ldr r0, .L929+12 bl sftl_printk -.L988: +.L909: ldrh r3, [r4, #172] cmp r3, r8 - bne .L989 - movw r2, #2699 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + bne .L910 + ldr r1, .L929+8 + movw r2, #2706 + ldr r0, .L929+12 bl sftl_printk -.L989: - ldrb r3, [r5, #8] @ zero_extendqisi2 +.L910: ldr r1, [r4, #2536] - ldr r2, .L1013+24 - cmp r3, #0 + ldrb r2, [r5, #8] @ zero_extendqisi2 ldrh r3, [r1, r6] - bne .L990 + cmp r2, #0 + ldr r2, .L929+24 + bne .L911 cmp r3, #0 - ldrhne r0, [r2] moveq r3, #2 + ldrhne r0, [r2] addne r3, r3, r0 + uxthne r3, r3 + strh r3, [r1, r6] @ movhi + ldr r3, [r4, #2596] + add r3, r3, #1 + str r3, [r4, #2596] +.L913: + ldr r3, [r4, #2536] + ldr r1, [r4, #2612] + ldrh r2, [r2] + ldrh r3, [r3, r6] + ldr r0, [r4, #2596] + cmp r3, r1 + strhi r3, [r4, #2612] + ldr r3, [r4, #2600] + ldrh r1, [r4, #240] + mla r0, r0, r2, r3 + bl __aeabi_uidiv + ldr r2, [r4, #3348] + str r0, [r4, #2604] + ldr r0, [r4, #3268] + ldr r3, [r2, #16] + ldr ip, .L929+28 + add r3, r3, #1 + str r3, [r2, #16] + add r3, r0, #4 + mov r2, #0 +.L915: + uxth r1, r2 + add r3, r3, #20 + cmp r7, r1 + bhi .L916 + ldrb r1, [r5, #8] @ zero_extendqisi2 + mov r2, r7 + bl FlashEraseBlocks + mov r9, #0 + mov r3, r9 + mov r1, #20 +.L917: + uxth r2, r9 + cmp r7, r2 + bhi .L919 + cmp r3, #0 + ble .L920 + mov r0, r8 + bl update_multiplier_value + bl FtlBbmTblFlush +.L920: + ldrb r2, [r5, #7] @ zero_extendqisi2 + cmp r2, #0 + bne .L921 + ldr r3, [r4, #72] + mvn r2, #0 + strh r2, [r3, r6] @ movhi + b .L898 +.L908: + str ip, [r2, #8] + movw lr, #65535 + str ip, [r2, #12] + ldrh r1, [r9], #2 + cmp r1, lr + beq .L907 + mov lr, #20 + lsl r1, r1, #10 + mla lr, lr, r7, r0 + add r7, r7, #1 + uxth r7, r7 + str r1, [lr, #4] +.L907: + add r3, r3, #1 + add r2, r2, #20 + b .L906 +.L911: + add r3, r3, #1 strh r3, [r1, r6] @ movhi ldr r3, [r4, #2600] add r3, r3, #1 str r3, [r4, #2600] -.L993: - ldr r3, [r4, #2536] - ldr r1, [r4, #2616] - ldrh r2, [r2] - ldrh r3, [r3, r6] - ldr r0, [r4, #2600] - cmp r3, r1 - ldrh r1, [r4, #240] - strhi r3, [r4, #2616] - ldr r3, [r4, #2604] - mla r0, r0, r2, r3 - bl __aeabi_uidiv - ldr r2, [r4, #3352] - ldr r1, [r4, #3272] - str r0, [r4, #2608] - ldr r3, [r2, #16] - ldr r0, .L1013+28 - add r3, r3, #1 - str r3, [r2, #16] - mov r2, #20 - mla r2, r2, r7, r1 - add r3, r1, #4 - add r2, r2, #24 -.L995: - add r3, r3, #20 - cmp r2, r3 - bne .L996 - ldrb r1, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #3272] - mov r9, #0 - bl FlashEraseBlocks - mov r3, r9 - mov r1, #20 -.L997: - uxth r2, r9 - cmp r7, r2 - bhi .L999 - cmp r3, #0 - ble .L1000 - mov r0, r8 - bl update_multiplier_value - bl FtlBbmTblFlush -.L1000: - ldrb r2, [r5, #7] @ zero_extendqisi2 - cmp r2, #0 - bne .L1001 - ldr r3, [r4, #72] - mvn r2, #0 - strh r2, [r3, r6] @ movhi - b .L977 -.L987: - str ip, [r3, #8] - movw lr, #65535 - str ip, [r3, #12] - add r3, r3, #20 - ldrh r2, [r0], #2 - cmp r2, lr - mlane lr, r9, r7, r1 - lslne r2, r2, #10 - addne r7, r7, #1 - uxthne r7, r7 - strne r2, [lr, #4] - b .L985 -.L990: - add r3, r3, #1 - strh r3, [r1, r6] @ movhi - ldr r3, [r4, #2604] - add r3, r3, #1 - str r3, [r4, #2604] - b .L993 -.L996: + b .L913 +.L916: ldr r1, [r3, #-20] - and r1, r1, r0 + add r2, r2, #1 + and r1, r1, ip str r1, [r3, #-20] - b .L995 -.L999: + b .L915 +.L919: mul r2, r1, r9 - ldr r0, [r4, #3272] + ldr r0, [r4, #3268] add ip, r0, r2 ldr r2, [r0, r2] cmn r2, #1 - bne .L998 + bne .L918 ldr r0, [ip, #4] add r3, r3, #1 - str r1, [sp, #12] - str r2, [sp, #8] + str r2, [fp, #-52] + str r3, [fp, #-48] ubfx r0, r0, #10, #16 - str r3, [sp, #4] bl FtlBbmMapBadBlock - ldr r2, [sp, #8] - ldr r1, [sp, #12] - ldr r3, [sp, #4] + ldr r2, [fp, #-52] strh r2, [r10] @ movhi + mov r1, #20 + ldr r3, [fp, #-48] ldrb r2, [r5, #7] @ zero_extendqisi2 sub r2, r2, #1 strb r2, [r5, #7] -.L998: +.L918: add r9, r9, #1 add r10, r10, #2 - b .L997 -.L1001: + b .L917 +.L921: movw r3, #302 ldrh r3, [r4, r3] strh r8, [r5] @ movhi @@ -6629,35 +6986,34 @@ allocate_data_superblock: mov r2, #0 strh r2, [r5, #2] @ movhi strb r2, [r5, #6] - ldr r2, [r4, #2592] + ldr r2, [r4, #2588] uxth r3, r3 - ldr r1, [r4, #72] - strh r3, [r5, #4] @ movhi str r2, [r5, #12] add r2, r2, #1 - str r2, [r4, #2592] + str r2, [r4, #2588] + ldr r1, [r4, #72] ldrh r2, [r5] + strh r3, [r5, #4] @ movhi lsl r2, r2, #1 strh r3, [r1, r2] @ movhi ldrh r3, [r5, #4] cmp r3, #0 - beq .L1002 + beq .L922 ldrb r3, [r5, #7] @ zero_extendqisi2 cmp r3, #0 - bne .L1003 -.L1002: - mov r2, #2752 - ldr r1, .L1013+8 - ldr r0, .L1013+12 + bne .L923 +.L922: + ldr r1, .L929+8 + movw r2, #2759 + ldr r0, .L929+12 bl sftl_printk -.L1003: +.L923: mov r0, #0 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1014: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L930: .align 2 -.L1013: +.L929: .word .LANCHOR0 .word .LANCHOR0+2528 .word .LANCHOR1+271 @@ -6666,8 +7022,11 @@ allocate_data_superblock: .word .LANCHOR0+2532 .word .LANCHOR0+292 .word -1024 - .fnend .size allocate_data_superblock, .-allocate_data_superblock + .section .rodata.str1.1 +.LC102: + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" + .text .align 2 .global FtlGcFreeBadSuperBlk .syntax unified @@ -6675,80 +7034,90 @@ allocate_data_superblock: .fpu softvfp .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - movw r3, #3210 - ldr r6, .L1028 - ldrh r3, [r6, r3] + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #20 + push {lr} + bl __gnu_mcount_nc + ldr r9, .L939 + movw r3, #3206 + str r0, [fp, #-48] + ldrh r3, [r9, r3] cmp r3, #0 - beq .L1016 - ldr fp, .L1028+4 - mov r7, #0 - str r0, [sp, #4] - add r10, fp, #2 -.L1017: - ldrh r2, [r6, #232] - uxth r3, r7 - cmp r2, r3 - bhi .L1023 - bl FtlGcReFreshBadBlk -.L1016: + bne .L938 +.L933: mov r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1023: - uxtah r3, r6, r7 - ldr r1, [sp, #4] + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L937: + uxtah r3, r9, r7 + ldr r1, [fp, #-48] mov r8, #0 ldrb r0, [r3, #260] @ zero_extendqisi2 bl V2P_block - mov r9, r0 -.L1018: - ldrh r3, [fp] - uxth r4, r8 - cmp r3, r4 - addls r7, r7, #1 - bls .L1017 -.L1022: - uxth r5, r8 - lsl r3, r5, #1 - ldrh r3, [r10, r3] - cmp r3, r9 - bne .L1019 - mov r1, r9 - ldr r0, .L1028+8 + mov r4, r0 +.L934: + ldr r3, .L939+4 + uxth r2, r8 + ldrh r1, [r3] + cmp r1, r2 + bhi .L936 + add r7, r7, #1 +.L932: + ldrh r2, [r9, #232] + uxth r3, r7 + cmp r2, r3 + bhi .L937 + bl FtlGcReFreshBadBlk + b .L933 +.L936: + uxth r6, r8 + lsl r1, r6, #1 + add r3, r10, r6, lsl #1 + ldrh r1, [r10, r1] + cmp r1, r4 + bne .L935 + mov r1, r4 + ldr r0, .L939+8 + str r3, [fp, #-56] + str r2, [fp, #-52] bl sftl_printk - mov r0, r9 + mov r0, r4 bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh r1, [fp] - add r3, r10, r5, lsl #1 -.L1020: - cmp r4, r1 - bcc .L1021 - sub r1, r1, #1 - strh r1, [fp] @ movhi -.L1019: + ldr r3, .L939+4 + ldr r2, [fp, #-52] + add r1, r6, #1 + add r1, r10, r1, lsl #1 + ldrh r5, [r3] + ldr r3, [fp, #-56] + sub r0, r5, r2 + cmp r2, r5 + sub r5, r5, #1 + uxth r0, r0 + movhi r2, #0 + lslls r2, r0, #1 + mov r0, r3 + bl memmove + ldr r3, .L939+4 + strh r5, [r3] @ movhi +.L935: add r8, r8, #1 - b .L1018 -.L1021: - ldrh r0, [r3, #2]! - add r4, r4, #1 - uxth r4, r4 - strh r0, [r3, #-2] @ movhi - b .L1020 -.L1029: + b .L934 +.L938: + ldr r10, .L939+12 + mov r7, #0 + b .L932 +.L940: .align 2 -.L1028: +.L939: .word .LANCHOR0 - .word .LANCHOR0+3210 + .word .LANCHOR0+3206 .word .LC102 - .fnend + .word .LANCHOR0+3208 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 .global update_vpc_list @@ -6757,19 +7126,21 @@ FtlGcFreeBadSuperBlk: .fpu softvfp .type update_vpc_list, %function update_vpc_list: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L953 lsl r3, r0, #1 - ldr r4, .L1043 + mov r5, r0 ldr r2, [r4, #72] ldrh r3, [r2, r3] cmp r3, #0 - bne .L1031 + bne .L942 ldrh r3, [r4, #222] - mov r5, r0 cmp r3, r0 mvneq r3, #0 strheq r3, [r4, #222] @ movhi @@ -6781,29 +7152,29 @@ update_vpc_list: cmp r3, r0 mvneq r3, #0 strheq r3, [r4, #172] @ movhi - beq .L1035 + beq .L946 ldrh r3, [r4, #24] cmp r3, r0 - beq .L1040 + beq .L951 ldrh r3, [r4, #76] cmp r3, r0 - beq .L1040 + beq .L951 ldrh r3, [r4, #124] cmp r3, r0 - beq .L1040 -.L1035: - ldr r6, .L1043+4 + beq .L951 +.L946: + ldr r6, .L953+4 mov r1, r5 - ldr r0, .L1043+8 + ldr r0, .L953+8 bl List_remove_node ldrh r3, [r6] cmp r3, #0 - bne .L1037 - movw r2, #2828 - ldr r1, .L1043+12 - ldr r0, .L1043+16 + bne .L948 + ldr r1, .L953+12 + movw r2, #2835 + ldr r0, .L953+16 bl sftl_printk -.L1037: +.L948: ldrh r3, [r6] mov r0, r5 sub r3, r3, #1 @@ -6816,29 +7187,32 @@ update_vpc_list: add r3, r3, r2 ldrh r2, [r4, #240] cmp r3, r2 - ble .L1041 - movw r2, #2831 - ldr r1, .L1043+12 - ldr r0, .L1043+16 + ble .L952 + ldr r1, .L953+12 + movw r2, #2838 + ldr r0, .L953+16 bl sftl_printk -.L1041: +.L952: mov r0, #1 - pop {r4, r5, r6, pc} -.L1031: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L942: bl List_update_data_list -.L1040: +.L951: mov r0, #0 - pop {r4, r5, r6, pc} -.L1044: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L954: .align 2 -.L1043: +.L953: .word .LANCHOR0 .word .LANCHOR0+2528 .word .LANCHOR0+2520 .word .LANCHOR1+296 .word .LC8 - .fnend .size update_vpc_list, .-update_vpc_list + .section .rodata.str1.1 +.LC103: + .ascii "decrement_vpc_count %x = %d\012\000" + .text .align 2 .global decrement_vpc_count .syntax unified @@ -6846,84 +7220,85 @@ update_vpc_list: .fpu softvfp .type decrement_vpc_count, %function decrement_vpc_count: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc movw r3, #65535 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + ldr r6, .L967 + mov r5, r0 cmp r0, r3 - mov r6, r0 - ldr r4, .L1058 - beq .L1046 - ldr r3, [r4, #72] - lsl r5, r0, #1 - ldrh r2, [r3, r5] + beq .L956 + ldr r3, [r6, #72] + lsl r4, r0, #1 + ldrh r2, [r3, r4] cmp r2, #0 subne r2, r2, #1 - strhne r2, [r3, r5] @ movhi - bne .L1046 + strhne r2, [r3, r4] @ movhi + bne .L956 mov r1, r0 - ldr r0, .L1058+4 + ldr r0, .L967+4 bl sftl_printk - ldr r3, [r4, #72] - ldrh r5, [r3, r5] - cmp r5, #0 - beq .L1048 -.L1056: - mov r5, #0 -.L1045: - mov r0, r5 - pop {r4, r5, r6, r7, r8, pc} -.L1048: - movw r2, #2846 -.L1057: - ldr r1, .L1058+8 - ldr r0, .L1058+12 + ldr r3, [r6, #72] + ldrh r4, [r3, r4] + cmp r4, #0 + beq .L958 +.L965: + mov r4, #0 +.L955: + mov r0, r4 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L958: + movw r2, #2853 +.L966: + ldr r1, .L967+8 + ldr r0, .L967+12 bl sftl_printk - b .L1045 -.L1046: - movw r7, #3442 + b .L955 +.L956: + movw r7, #3438 movw r3, #65535 - ldrh r0, [r4, r7] + ldrh r0, [r6, r7] cmp r0, r3 - strheq r6, [r4, r7] @ movhi - beq .L1056 -.L1050: - cmp r6, r0 - beq .L1056 + strheq r5, [r6, r7] @ movhi + beq .L965 +.L960: + cmp r0, r5 + beq .L965 bl update_vpc_list - ldr r2, [r4, #2516] - adds r5, r0, #0 - ldr r3, [r4, #2520] - movne r5, #1 - ldr r1, [r4, #72] - strh r6, [r4, r7] @ movhi + ldr r2, [r6, #2516] + ldr r3, [r6, #2520] + subs r4, r0, #0 + ldr r1, [r6, #72] sub r3, r3, r2 - asr r2, r3, #1 - ldr r3, .L1058+16 - mul r3, r3, r2 + ldr r2, .L967+16 + strh r5, [r6, r7] @ movhi + movne r4, #1 + asr r3, r3, #1 + mul r3, r2, r3 uxth r2, r3 uxth r3, r3 + cmp r3, r5 lsl r2, r2, #1 - cmp r3, r6 ldrh r2, [r1, r2] clz r2, r2 lsr r2, r2, #5 moveq r2, #0 cmp r2, #0 - beq .L1045 - movw r2, #2862 - b .L1057 -.L1059: + beq .L955 + movw r2, #2869 + b .L966 +.L968: .align 2 -.L1058: +.L967: .word .LANCHOR0 .word .LC103 .word .LANCHOR1+312 .word .LC8 .word -1431655765 - .fnend .size decrement_vpc_count, .-decrement_vpc_count .align 2 .global FtlSuperblockPowerLostFix @@ -6932,47 +7307,50 @@ decrement_vpc_count: .fpu softvfp .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: - .fnstart @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #28 - sub sp, sp, #28 - ldr r7, .L1075 - mov r8, #0 - movw r2, #61589 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #24 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L981 + mov r3, sp + bic r8, r3, #8128 mov r4, r0 - ldr r5, .L1075+4 - ldr r3, [r7] - ldr r6, [r5, #3336] - str r3, [sp, #20] + bic r8, r8, #63 + mvn r0, #2 + mvn r1, #1 + mov r9, #0 + ldr r7, [r5, #3332] + movw r2, #61589 + ldr r3, [r8, #24] + str r3, [fp, #-40] mvn r3, #0 - str r3, [sp, #16] - ldr r3, [r5, #3304] - str r6, [sp, #12] - str r3, [sp, #8] - mvn r3, #2 - str r3, [r6, #8] - mvn r3, #1 - str r3, [r6, #12] - ldrh r3, [r0] - strh r8, [r6] @ movhi - strh r3, [r6, #2] @ movhi - ldr r3, [r5, #3304] + str r3, [fp, #-44] + ldr r3, [r5, #3300] + str r3, [fp, #-52] + str r7, [fp, #-48] + strd r0, [r7, #8] + ldrh r3, [r4] + strh r3, [r7, #2] @ movhi + strh r9, [r7] @ movhi + ldr r3, [r5, #3300] str r2, [r3] - ldr r2, .L1075+8 - ldr r3, [r5, #3304] + ldr r2, .L981+4 + ldr r3, [r5, #3300] str r2, [r3, #4] - ldrh r3, [r0, #4] - tst r3, #1 - moveq r9, #6 - movne r9, #7 -.L1066: + ldrh r6, [r4, #4] + and r6, r6, #1 + add r6, r6, #6 +.L970: ldrh r3, [r4, #4] + cmp r6, #0 + beq .L972 cmp r3, #0 - bne .L1062 -.L1063: + bne .L971 +.L972: ldrh r3, [r4] ldr r1, [r5, #72] ldrh r0, [r4, #4] @@ -6981,49 +7359,46 @@ FtlSuperblockPowerLostFix: sub r2, r2, r0 strh r2, [r1, r3] @ movhi movw r3, #302 + ldr r2, [fp, #-40] ldrh r3, [r5, r3] - ldr r2, [sp, #20] strh r3, [r4, #2] @ movhi mov r3, #0 strb r3, [r4, #6] strh r3, [r4, #4] @ movhi - ldr r3, [r7] + ldr r3, [r8, #24] cmp r2, r3 - beq .L1067 + beq .L976 bl __stack_chk_fail -.L1062: +.L971: mov r0, r4 bl get_new_active_ppa cmn r0, #1 - str r0, [sp, #4] - beq .L1063 - ldr r3, [r5, #2596] + str r0, [fp, #-56] + beq .L972 + ldr r3, [r5, #2592] mov r1, #1 - mov r0, sp - str r3, [r6, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, r8 - str r3, [r5, #2596] + str r3, [r7, #4] + sub r0, fp, #60 + cmn r3, #2 + add r2, r3, #1 + movne r3, r2 + moveq r3, r9 + str r3, [r5, #2592] mov r3, #0 mov r2, r3 + sub r6, r6, #1 bl FlashProgPages ldrh r0, [r4] bl decrement_vpc_count - subs r9, r9, #1 - bne .L1066 - b .L1063 -.L1067: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L1076: + b .L970 +.L976: + sub sp, fp, #36 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L982: .align 2 -.L1075: - .word __stack_chk_guard +.L981: .word .LANCHOR0 .word 305419896 - .fnend .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 .global FtlMakeBbt @@ -7032,202 +7407,197 @@ FtlSuperblockPowerLostFix: .fpu softvfp .type FtlMakeBbt, %function FtlMakeBbt: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - mov r9, #0 - ldr r8, .L1098 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r8, .L1002 + mov r7, #0 bl FtlBbtMemInit - sub r4, r8, #28 - sub r6, r8, #380 - sub r10, r8, #18 - mov r5, r6 - sub fp, r4, #54 + sub r9, r8, #16 + sub r4, r8, #380 bl FtlLoadFactoryBbt -.L1078: - ldrh r3, [r6, #254] - cmp r9, r3 - bcc .L1084 - ldr r7, .L1098+4 - mov r6, #0 -.L1085: - ldrh r3, [r7] - uxth r0, r6 - add r6, r6, #1 +.L984: + ldrh r3, [r4, #254] + cmp r3, r7 + bhi .L990 + ldr r6, .L1002+4 + mov r5, #0 +.L991: + ldrh r3, [r6] + uxth r0, r5 cmp r3, r0 - bhi .L1086 - ldrh r6, [r4, #12] + bhi .L992 + ldr r5, .L1002+8 movw r7, #65535 + ldrh r6, [r5, #12] sub r6, r6, #1 uxth r6, r6 -.L1087: - ldrh r3, [r4, #12] +.L993: + ldrh r3, [r5, #12] sub r3, r3, #48 cmp r6, r3 - ble .L1091 + ble .L997 mov r0, r6 bl FtlBbmIsBadBlock cmp r0, #1 - beq .L1088 + beq .L994 mov r0, r6 bl FlashTestBlk cmp r0, #0 - beq .L1089 + beq .L995 mov r0, r6 bl FtlBbmMapBadBlock -.L1088: +.L994: sub r6, r6, #1 uxth r6, r6 - b .L1087 -.L1084: - ldr r3, [r6, #3336] - movw r2, #65535 - ldr r0, [r6, #3304] - str r3, [sp, #4] - str r3, [r6, #3468] - ldrh r3, [r10, #2]! - str r0, [r6, #3464] - cmp r3, r2 - beq .L1079 - ldrh r7, [fp] + b .L993 +.L990: + ldrh r5, [r9] + ldr r3, [r4, #3332] + ldr r0, [r4, #3300] + str r3, [fp, #-48] + str r3, [r4, #3464] + movw r3, #65535 + ldr r10, .L1002+12 + cmp r5, r3 + str r0, [r4, #3460] + beq .L985 + ldrh r3, [r10] mov r2, #1 + ldr r0, .L1002+16 mov r1, r2 - ldr r0, .L1098+8 - mla r7, r9, r7, r3 - lsl r3, r7, #10 - str r3, [r6, #3460] + mla r5, r7, r3, r5 + lsl r3, r5, #10 + str r3, [r4, #3456] bl FlashReadPages - ldrh r2, [fp] - ldr r1, [r6, #3464] - ldr r0, [r8] + ldrh r2, [r10] + ldr r1, [r4, #3460] add r2, r2, #7 - asr r2, r2, #3 + ldr r0, [r8] + lsr r2, r2, #3 bl ftl_memcpy -.L1080: - uxth r0, r7 - add r9, r9, #1 +.L986: + uxth r0, r5 + add r7, r7, #1 add r8, r8, #4 + add r9, r9, #2 bl FtlBbmMapBadBlock - b .L1078 -.L1079: - mov r1, r9 + b .L984 +.L985: + mov r1, r7 bl FlashGetBadBlockList ldr r1, [r8] - ldr r0, [r6, #3464] + ldr r0, [r4, #3460] bl FtlBbt2Bitmap - ldrh r3, [fp] -.L1097: - sub r3, r3, #1 - uxth r3, r3 - str r3, [sp] -.L1081: - ldr r3, [sp] - ldrh r0, [fp] - smlabb r0, r0, r9, r3 + ldrh r6, [r10] +.L988: + sub r6, r6, #1 + uxth r6, r6 +.L987: + ldrh r0, [r10] + smlabb r0, r0, r7, r6 uxth r0, r0 bl FtlBbmIsBadBlock cmp r0, #1 - beq .L1082 - ldrh r3, [sp] + beq .L988 mov r2, #16 mov r1, #0 - ldr r0, [r5, #3336] - strh r3, [r10] @ movhi + ldr r0, [r4, #3332] + strh r6, [r9] @ movhi bl ftl_memset mov r2, #4096 mov r1, #0 - ldr r0, [r5, #3304] + ldr r0, [r4, #3300] bl ftl_memset - ldr r3, [sp, #4] - movw r2, 61664 @ movhi - strh r2, [r3] @ movhi + ldr r2, [fp, #-48] + ldr r3, .L1002+20 + strh r3, [r2] @ movhi mov r3, #0 - ldr r2, [sp, #4] - ldrh r7, [fp] str r3, [r2, #4] ldrh r3, [r10] - strh r3, [r2, #2] @ movhi - ldrh r3, [r10] + ldrh r5, [r9] + strh r5, [r2, #2] @ movhi ldr r1, [r8] - ldr r0, [r5, #3464] - mla r7, r9, r7, r3 - lsl r3, r7, #10 - str r3, [r5, #3460] - ldr r3, .L1098+12 + mla r5, r7, r3, r5 + ldr r0, [r4, #3460] + lsl r3, r5, #10 + str r3, [r4, #3456] + ldr r3, .L1002+24 ldrh r2, [r3] lsl r2, r2, #2 bl ftl_memcpy mov r2, #1 - ldr r0, .L1098+8 + ldr r0, .L1002+16 mov r1, r2 bl FlashEraseBlocks mov r3, #1 - ldr r0, .L1098+8 + ldr r0, .L1002+16 mov r2, r3 mov r1, r3 bl FlashProgPages - ldr r3, [r5, #3456] + ldr r3, [r4, #3452] + uxth r0, r5 cmn r3, #1 - bne .L1080 - uxth r0, r7 + bne .L986 bl FtlBbmMapBadBlock - b .L1081 -.L1082: - ldr r3, [sp] - b .L1097 -.L1086: + b .L987 +.L992: + add r5, r5, #1 bl FtlBbmMapBadBlock - b .L1085 -.L1089: - ldrh r3, [r4] + b .L991 +.L995: + ldrh r3, [r5] cmp r3, r7 - strheq r6, [r4] @ movhi - beq .L1088 -.L1090: - strh r6, [r4, #4] @ movhi -.L1091: - ldrh r3, [r4] + strheq r6, [r5] @ movhi + beq .L994 +.L996: + strh r6, [r5, #4] @ movhi +.L997: + ldr r0, [r4, #3268] mov r6, #0 - ldr r0, [r5, #3272] + ldrh r3, [r5] mov r1, #1 - str r6, [r5, #360] + str r6, [r4, #360] mov r2, #2 - strh r6, [r4, #2] @ movhi + strh r6, [r5, #2] @ movhi lsl r3, r3, #10 str r3, [r0, #4] - ldrh r3, [r4, #4] + ldrh r3, [r5, #4] lsl r3, r3, #10 str r3, [r0, #24] bl FlashEraseBlocks - ldrh r0, [r4] + ldrh r0, [r5] bl FtlBbmMapBadBlock - ldrh r0, [r4, #4] + ldrh r0, [r5, #4] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldr r3, [r5, #360] - ldrh r2, [r4, #4] - strh r6, [r4, #2] @ movhi + ldr r3, [r4, #360] + ldrh r2, [r5, #4] add r3, r3, #1 - str r3, [r5, #360] - ldrh r3, [r4] - strh r2, [r4] @ movhi - strh r3, [r4, #4] @ movhi + str r3, [r4, #360] + ldrh r3, [r5] + strh r6, [r5, #2] @ movhi + strh r2, [r5] @ movhi + strh r3, [r5, #4] @ movhi bl FtlBbmTblFlush mov r0, r6 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1099: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1003: .align 2 -.L1098: +.L1002: .word .LANCHOR0+380 .word .LANCHOR0+314 - .word .LANCHOR0+3456 - .word .LANCHOR0+3392 - .fnend + .word .LANCHOR0+352 + .word .LANCHOR0+298 + .word .LANCHOR0+3452 + .word -3872 + .word .LANCHOR0+3388 .size FtlMakeBbt, .-FtlMakeBbt .align 2 .global ftl_memcmp @@ -7236,12 +7606,15 @@ FtlMakeBbt: .fpu softvfp .type ftl_memcmp, %function ftl_memcmp: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b memcmp - .fnend + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + bl memcmp + ldmfd sp, {fp, sp, pc} .size ftl_memcmp, .-ftl_memcmp .align 2 .global js_hash @@ -7250,144 +7623,36 @@ ftl_memcmp: .fpu softvfp .type js_hash, %function js_hash: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L1104 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + mov r3, r0 add r1, r0, r1 -.L1102: - cmp r0, r1 - bne .L1103 - mov r0, r3 - bx lr -.L1103: - lsr r2, r3, #2 - ldrb ip, [r0], #1 @ zero_extendqisi2 - add r2, r2, r3, lsl #5 + ldr r0, .L1009 +.L1006: + cmp r3, r1 + ldmfdeq sp, {fp, sp, pc} + lsr r2, r0, #2 + ldrb ip, [r3], #1 @ zero_extendqisi2 + add r2, r2, r0, lsl #5 add r2, r2, ip - eor r3, r3, r2 - b .L1102 -.L1105: + eor r0, r0, r2 + b .L1006 +.L1010: .align 2 -.L1104: +.L1009: .word 1204201446 - .fnend .size js_hash, .-js_hash - .align 2 - .global Ftl_write_map_blk_to_last_page - .syntax unified - .arm - .fpu softvfp - .type Ftl_write_map_blk_to_last_page, %function -Ftl_write_map_blk_to_last_page: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - movw r2, #65535 - ldrh r3, [r0] - mov r4, r0 - ldr r5, [r0, #12] - cmp r3, r2 - bne .L1107 - ldrh r3, [r0, #8] - cmp r3, #0 - beq .L1108 - movw r2, #641 - ldr r1, .L1117 - ldr r0, .L1117+4 - bl sftl_printk -.L1108: - ldrh r3, [r4, #8] - add r3, r3, #1 - strh r3, [r4, #8] @ movhi - bl FtlFreeSysBlkQueueOut - mov r3, #0 - strh r0, [r5] @ movhi - strh r3, [r4, #2] @ movhi - strh r3, [r4] @ movhi - ldr r3, [r4, #28] - add r3, r3, #1 - str r3, [r4, #28] -.L1109: - mov r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L1107: - lsl r3, r3, #1 - ldr r7, [r0, #24] - mov r1, #255 - ldrh r8, [r5, r3] - ldrh r3, [r0, #2] - ldr r5, .L1117+8 - orr r3, r3, r8, lsl #10 - ldr r6, [r5, #3336] - str r3, [r5, #3460] - ldr r3, [r5, #3304] - str r6, [r5, #3468] - str r3, [r5, #3464] - ldr r3, [r0, #28] - str r3, [r6, #4] - ldr r3, .L1117+12 - strh r3, [r6, #8] @ movhi - ldrh r3, [r0, #4] - strh r8, [r6, #2] @ movhi - strh r3, [r6] @ movhi - add r3, r5, #304 - ldrh r2, [r3] - ldr r0, [r5, #3304] - lsl r2, r2, #3 - bl ftl_memset - mov r2, #0 - mov r3, r2 -.L1110: - ldrh r0, [r4, #6] - uxth r1, r2 - cmp r0, r1 - bhi .L1112 - movw r3, #310 - ldr r0, [r5, #3464] - ldrh r1, [r5, r3] - bl js_hash - mov r2, #1 - str r0, [r6, #12] - mov r3, #0 - mov r1, r2 - ldr r0, .L1117+16 - bl FlashProgPages - ldrh r3, [r4, #2] - mov r0, r4 - add r3, r3, #1 - strh r3, [r4, #2] @ movhi - bl ftl_map_blk_gc - b .L1109 -.L1112: - uxth r1, r2 - ldr r0, [r7, r1, lsl #2] - cmp r8, r0, lsr #10 - bne .L1111 - ldr r0, [r5, #3304] - add r3, r3, #1 - uxth r3, r3 - str r1, [r0, r3, lsl #3] - ldr r0, [r7, r1, lsl #2] - ldr r1, [r5, #3304] - add r1, r1, r3, lsl #3 - str r0, [r1, #4] -.L1111: - add r2, r2, #1 - b .L1110 -.L1118: - .align 2 -.L1117: - .word .LANCHOR1+332 - .word .LC8 - .word .LANCHOR0 - .word -1291 - .word .LANCHOR0+3456 - .fnend - .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .section .rodata.str1.1 +.LC104: + .ascii "FtlMapWritePage error = %x \012\000" +.LC105: + .ascii "FtlMapWritePage error = %x error count = %d\012\000" + .text .align 2 .global FtlMapWritePage .syntax unified @@ -7395,149 +7660,169 @@ Ftl_write_map_blk_to_last_page: .fpu softvfp .type FtlMapWritePage, %function FtlMapWritePage: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L1035 mov r4, r0 - ldr r5, .L1138 mov r7, r1 - mov r9, r2 + mov r8, r2 + lsl r10, r1, #2 + add r9, r5, #304 mov r6, #0 - add r8, r5, #304 - mov r10, r8 -.L1120: - ldr r3, [r5, #2576] +.L1012: + ldr r3, [r5, #2572] add r3, r3, #1 - str r3, [r5, #2576] - ldrh r3, [r8] + str r3, [r5, #2572] + ldrh r3, [r9] ldrh r2, [r4, #2] sub r3, r3, #1 cmp r2, r3 - bge .L1121 + bge .L1013 ldrh r2, [r4] movw r3, #65535 cmp r2, r3 - bne .L1122 -.L1121: + bne .L1014 +.L1013: mov r0, r4 bl Ftl_write_map_blk_to_last_page -.L1122: +.L1014: ldrh r3, [r4] ldr r2, [r4, #12] lsl r3, r3, #1 ldrh r3, [r2, r3] cmp r3, #0 - bne .L1123 + bne .L1015 + ldr r1, .L1035+4 mov r2, #700 - ldr r1, .L1138+4 - ldr r0, .L1138+8 + ldr r0, .L1035+8 bl sftl_printk -.L1123: +.L1015: ldrh r2, [r4] ldrh r3, [r4, #10] cmp r2, r3 - bcc .L1124 + bcc .L1016 + ldr r1, .L1035+4 movw r2, #701 - ldr r1, .L1138+4 - ldr r0, .L1138+8 + ldr r0, .L1035+8 bl sftl_printk -.L1124: +.L1016: ldrh r3, [r4] mov r1, #0 ldr r2, [r4, #12] - ldr r0, [r5, #3336] + ldr r0, [r5, #3332] lsl r3, r3, #1 ldrh r3, [r2, r3] ldrh r2, [r4, #2] - str r9, [r5, #3464] - str r3, [sp, #4] - str r0, [r5, #3468] + str r3, [fp, #-48] + str r8, [r5, #3460] orr r2, r2, r3, lsl #10 - str r2, [r5, #3460] + str r2, [r5, #3456] mov r2, #16 + str r0, [r5, #3464] bl ftl_memset - ldr r2, [r4, #28] - ldr fp, [r5, #3468] - ldr r3, [sp, #4] - str r2, [fp, #4] - strh r7, [fp, #8] @ movhi - ldrh r2, [r4, #4] - strh r3, [fp, #2] @ movhi - ldr r3, .L1138+12 - strh r2, [fp] @ movhi - ldr r0, [r5, #3464] + ldr r2, [r5, #3464] + ldr r1, [r4, #28] + ldr r3, [fp, #-48] + str r1, [r2, #4] + strh r7, [r2, #8] @ movhi + str r2, [fp, #-48] + ldrh r1, [r4, #4] + strh r3, [r2, #2] @ movhi + ldr r3, .L1035+12 + strh r1, [r2] @ movhi + ldr r0, [r5, #3460] ldrh r1, [r3] bl js_hash + ldr r2, [fp, #-48] mov r3, #1 - str r0, [fp, #12] - mov r2, r3 mov r1, r3 - ldr r0, .L1138+16 + str r0, [r2, #12] + mov r2, r3 + ldr r0, .L1035+16 bl FlashProgPages ldrh r3, [r4, #2] add r3, r3, #1 - uxth r3, r3 strh r3, [r4, #2] @ movhi - ldr r2, [r5, #3456] - cmn r2, #1 - bne .L1125 - ldr r1, [r5, #3460] + ldr r3, [r5, #3452] + cmn r3, #1 + bne .L1017 + ldr r1, [r5, #3456] add r6, r6, #1 - ldr r0, .L1138+20 - uxth r6, r6 + ldr r0, .L1035+20 bl sftl_printk ldrh r3, [r4, #2] + uxth r6, r6 cmp r3, #2 - ldrhls r3, [r10] + ldrhls r3, [r9] subls r3, r3, #1 strhls r3, [r4, #2] @ movhi cmp r6, #3 - bls .L1127 + bls .L1019 + ldr r1, [r5, #3456] mov r2, r6 - ldr r1, [r5, #3460] - ldr r0, .L1138+24 + ldr r0, .L1035+24 bl sftl_printk -.L1128: - b .L1128 -.L1127: +.L1020: + b .L1020 +.L1019: ldr r3, [r4, #32] cmp r3, #0 - beq .L1120 -.L1136: - b .L1136 -.L1125: + beq .L1012 +.L1022: + b .L1022 +.L1017: + ldr r3, [r4, #24] + ldr r2, [r5, #3456] + str r2, [r3, r10] + ldrh r3, [r4, #2] cmp r3, #1 - cmpne r2, #256 - beq .L1131 - ldr r0, [r4, #36] - cmp r0, #0 - beq .L1132 -.L1131: + beq .L1023 + ldr r3, [r5, #3452] + cmp r3, #256 + beq .L1023 + ldr r2, [r4, #36] + cmp r2, #0 + beq .L1024 +.L1023: mov r3, #0 str r3, [r4, #36] - b .L1120 -.L1132: - ldr r2, [r5, #3460] - ldr r3, [r4, #24] - str r2, [r3, r7, lsl #2] - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1139: + b .L1012 +.L1024: + cmn r3, #1 + bne .L1025 + ldr r1, .L1035+4 + movw r2, #745 + ldr r0, .L1035+8 + bl sftl_printk +.L1025: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1036: .align 2 -.L1138: +.L1035: .word .LANCHOR0 - .word .LANCHOR1+363 + .word .LANCHOR1+332 .word .LC8 .word .LANCHOR0+310 - .word .LANCHOR0+3456 + .word .LANCHOR0+3452 .word .LC104 .word .LC105 - .fnend .size FtlMapWritePage, .-FtlMapWritePage + .section .rodata.str1.1 +.LC106: + .ascii "region_id = %x phyAddr = %x\012\000" +.LC107: + .ascii "map_ppn:\000" +.LC108: + .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" + .text .align 2 .global load_l2p_region .syntax unified @@ -7545,119 +7830,115 @@ FtlMapWritePage: .fpu softvfp .type load_l2p_region, %function load_l2p_region: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r6, r0 - ldr r9, .L1148 - mov r10, r1 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r9, .L1046 + mov r5, r0 + mov r6, r1 ldrh r3, [r9] cmp r3, r0 - bcs .L1141 + bcs .L1038 + ldr r1, .L1046+4 movw r2, #485 - ldr r1, .L1148+4 - ldr r0, .L1148+8 + ldr r0, .L1046+8 bl sftl_printk -.L1141: - ldr r7, .L1148+12 - mov r5, #12 - ldr r3, [r7, #3380] - mov r4, r7 - ldr r8, [r3, r6, lsl #2] - cmp r8, #0 - bne .L1142 - mul r5, r5, r10 - ldr r3, [r7, #2540] - movw r2, #310 - mov r1, #255 - ldrh r2, [r7, r2] - add r3, r3, r5 +.L1038: + ldr r4, .L1046+12 + mov r1, #12 + mul r6, r1, r6 + ldr r3, [r4, #3376] + ldr r7, [r3, r5, lsl #2] + ldr r3, [r4, #2540] + cmp r7, #0 + add r3, r3, r6 ldr r0, [r3, #8] + bne .L1039 + movw r3, #310 + mov r1, #255 + ldrh r2, [r4, r3] bl ftl_memset - ldr r3, [r7, #2540] - strh r6, [r3, r5] @ movhi - ldr r3, [r7, #2540] - add r5, r3, r5 - str r8, [r5, #4] -.L1143: + ldr r3, [r4, #2540] + strh r5, [r3, r6] @ movhi + ldr r1, [r4, #2540] + add r6, r1, r6 + str r7, [r6, #4] +.L1040: mov r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L1142: - mul r5, r5, r10 - ldr r3, [r7, #2540] + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1039: + ldr r3, [r4, #3332] mov r2, #1 - add r0, r7, #3456 + str r0, [r4, #3460] mov r1, r2 - str r8, [r7, #3460] - add r3, r3, r5 - ldr r3, [r3, #8] - str r3, [r7, #3464] - ldr r3, [r7, #3336] - str r3, [r7, #3468] + ldr r0, .L1046+16 + str r3, [r4, #3464] + str r7, [r4, #3456] bl FlashReadPages - ldr r7, [r7, #3468] - ldrh r3, [r7, #8] - cmp r3, r6 - beq .L1144 - mov r2, r8 - mov r1, r6 - ldr r0, .L1148+16 + ldr r8, [r4, #3464] + ldrh r3, [r8, #8] + cmp r3, r5 + beq .L1041 + ldr r0, .L1046+20 + mov r2, r7 + mov r1, r5 bl sftl_printk mov r3, #4 - ldr r1, [r4, #3468] + ldr r1, [r4, #3464] mov r2, r3 - ldr r0, .L1148+20 + ldr r0, .L1046+24 bl rknand_print_hex ldrh r3, [r9] + ldr r1, [r4, #3376] mov r2, #4 - ldr r1, [r4, #3380] - ldr r0, .L1148+24 + ldr r0, .L1046+28 bl rknand_print_hex -.L1145: - ldrh r3, [r7, #8] - cmp r3, r6 - beq .L1146 +.L1042: + ldrh r3, [r8, #8] + cmp r3, r5 + beq .L1044 + ldr r1, .L1046+4 mov r2, #508 - ldr r1, .L1148+4 - ldr r0, .L1148+8 + ldr r0, .L1046+8 bl sftl_printk -.L1146: +.L1044: ldr r3, [r4, #2540] mov r1, #0 - add r2, r3, r5 + add r2, r3, r6 str r1, [r2, #4] - strh r6, [r3, r5] @ movhi - b .L1143 -.L1144: - ldr r3, [r4, #3456] + strh r5, [r3, r6] @ movhi + b .L1040 +.L1041: + ldr r3, [r4, #3452] cmp r3, #256 - bne .L1145 - mov r2, r8 - mov r1, r6 - ldr r0, .L1148+28 + bne .L1044 + mov r2, r7 + mov r1, r5 + ldr r0, .L1046+32 bl sftl_printk ldr r3, [r4, #2540] - mov r1, r6 - ldr r0, .L1148+32 - add r3, r3, r5 + mov r1, r5 + add r0, r4, #3392 + add r3, r3, r6 ldr r2, [r3, #8] bl FtlMapWritePage - b .L1145 -.L1149: + b .L1042 +.L1047: .align 2 -.L1148: +.L1046: .word .LANCHOR0+336 - .word .LANCHOR1+379 + .word .LANCHOR1+348 .word .LC8 .word .LANCHOR0 + .word .LANCHOR0+3452 .word .LC106 .word .LC94 .word .LC107 .word .LC108 - .word .LANCHOR0+3396 - .fnend .size load_l2p_region, .-load_l2p_region .align 2 .global ftl_map_blk_gc @@ -7666,12 +7947,14 @@ load_l2p_region: .fpu softvfp .type ftl_map_blk_gc, %function ftl_map_blk_gc: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc mov r4, r0 ldr r5, [r0, #12] ldr r10, [r0, #24] @@ -7680,147 +7963,261 @@ ftl_map_blk_gc: ldrh r2, [r4, #8] sub r3, r3, #5 cmp r2, r3 - blt .L1151 + blt .L1049 uxth r0, r0 lsl r0, r0, #1 ldrh r9, [r5, r0] cmp r9, #0 - beq .L1151 - ldr r3, [r4, #32] - cmp r3, #0 - bne .L1151 - mov r2, #1 - str r2, [r4, #32] - strh r3, [r5, r0] @ movhi + beq .L1049 + ldr r6, [r4, #32] + cmp r6, #0 + bne .L1049 + mov r3, #1 + str r3, [r4, #32] + strh r6, [r5, r0] @ movhi ldrh r3, [r4, #8] ldrh r2, [r4, #2] sub r3, r3, #1 strh r3, [r4, #8] @ movhi - ldr r3, .L1167 + ldr r3, .L1064 ldrh r3, [r3] cmp r2, r3 - bcc .L1152 + bcc .L1050 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L1152: - ldr r5, .L1167+4 - mov r6, #0 -.L1153: +.L1050: + ldr r5, .L1064+4 +.L1051: ldrh r2, [r4, #6] - uxth fp, r6 - cmp r2, fp - bhi .L1160 - mov r1, #1 + uxth r3, r6 + cmp r2, r3 + bhi .L1058 mov r0, r9 + mov r1, #1 bl FtlFreeSysBlkQueueIn mov r3, #0 str r3, [r4, #32] -.L1151: - ldr r3, .L1167 +.L1049: + ldr r3, .L1064 ldrh r2, [r4, #2] ldrh r3, [r3] cmp r2, r3 - bcc .L1161 + bcc .L1059 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L1161: +.L1059: mov r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1160: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1058: uxth r7, r6 + add r2, r10, r7, lsl #2 + str r2, [fp, #-48] ldr r2, [r10, r7, lsl #2] - add r3, r10, r7, lsl #2 - str r3, [sp, #4] cmp r9, r2, lsr #10 - bne .L1154 - ldr r2, [r5, #3308] - ldr r8, [r5, #3336] - ldr r0, .L1167+8 - str r2, [r5, #3464] - str r8, [r5, #3468] - ldr r2, [r10, r7, lsl #2] + bne .L1052 + ldr r2, [r5, #3304] + ldr r8, [r5, #3332] str r2, [r5, #3460] + str r8, [r5, #3464] + ldr r0, .L1064+8 + ldr r2, [r10, r7, lsl #2] + str r2, [r5, #3456] mov r2, #1 mov r1, r2 + str r3, [fp, #-52] bl FlashReadPages ldrh r2, [r8, #8] - cmp r2, fp - beq .L1155 + ldr r3, [fp, #-52] + cmp r2, r3 + beq .L1053 + ldr r1, .L1064+12 movw r2, #611 - ldr r1, .L1167+12 - ldr r0, .L1167+16 + ldr r0, .L1064+16 bl sftl_printk -.L1155: - ldr r2, [r5, #3456] + ldr r3, [fp, #-52] +.L1053: + ldr r2, [r5, #3452] cmn r2, #1 - bne .L1156 -.L1158: - ldr r2, [sp, #4] + bne .L1054 +.L1056: + ldr r2, [fp, #-48] mov r3, #0 str r3, [r2] -.L1157: - b .L1157 -.L1156: +.L1055: + b .L1055 +.L1054: ldrh r2, [r8, #8] - cmp r2, fp - bne .L1158 + cmp r2, r3 + bne .L1056 ldrh r2, [r8] ldrh r3, [r4, #4] cmp r2, r3 - bne .L1158 - ldr r2, [r5, #3464] + bne .L1056 + ldr r2, [r5, #3460] mov r1, r7 mov r0, r4 bl FtlMapWritePage -.L1154: +.L1052: add r6, r6, #1 - b .L1153 -.L1168: + b .L1051 +.L1065: .align 2 -.L1167: +.L1064: .word .LANCHOR0+304 .word .LANCHOR0 - .word .LANCHOR0+3456 - .word .LANCHOR1+395 + .word .LANCHOR0+3452 + .word .LANCHOR1+364 .word .LC8 - .fnend .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 2 + .global Ftl_write_map_blk_to_last_page + .syntax unified + .arm + .fpu softvfp + .type Ftl_write_map_blk_to_last_page, %function +Ftl_write_map_blk_to_last_page: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldrh r3, [r0] + movw r2, #65535 + ldr r5, [r0, #12] + mov r4, r0 + cmp r3, r2 + bne .L1067 + ldrh r3, [r0, #8] + cmp r3, #0 + beq .L1068 + ldr r1, .L1076 + movw r2, #641 + ldr r0, .L1076+4 + bl sftl_printk +.L1068: + ldrh r3, [r4, #8] + add r3, r3, #1 + strh r3, [r4, #8] @ movhi + bl FtlFreeSysBlkQueueOut + strh r0, [r5] @ movhi + mov r3, #0 + str r3, [r4] + ldr r3, [r4, #28] + add r3, r3, #1 + str r3, [r4, #28] +.L1069: + mov r0, #0 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1067: + lsl r3, r3, #1 + ldr r7, [r0, #24] + mov r1, #255 + ldrh r8, [r5, r3] + ldr r5, .L1076+8 + ldrh r3, [r0, #2] + ldr r6, [r5, #3332] + orr r3, r3, r8, lsl #10 + str r3, [r5, #3456] + ldr r3, [r5, #3300] + str r3, [r5, #3460] + ldr r3, [r0, #28] + str r6, [r5, #3464] + str r3, [r6, #4] + ldr r3, .L1076+12 + strh r3, [r6, #8] @ movhi + ldrh r3, [r0, #4] + strh r3, [r6] @ movhi + add r3, r5, #304 + strh r8, [r6, #2] @ movhi + ldrh r2, [r3] + ldr r0, [r5, #3300] + lsl r2, r2, #3 + bl ftl_memset + mov r2, #0 + mov r3, r2 +.L1070: + ldrh r0, [r4, #6] + uxth r1, r2 + cmp r0, r1 + bhi .L1072 + movw r3, #310 + ldr r0, [r5, #3460] + ldrh r1, [r5, r3] + bl js_hash + mov r2, #1 + str r0, [r6, #12] + mov r1, r2 + mov r3, #0 + ldr r0, .L1076+16 + bl FlashProgPages + ldrh r3, [r4, #2] + mov r0, r4 + add r3, r3, #1 + strh r3, [r4, #2] @ movhi + bl ftl_map_blk_gc + b .L1069 +.L1072: + uxth r1, r2 + ldr r0, [r7, r1, lsl #2] + cmp r8, r0, lsr #10 + bne .L1071 + add r3, r3, #1 + ldr r0, [r5, #3300] + uxth r3, r3 + str r1, [r0, r3, lsl #3] + ldr r0, [r7, r1, lsl #2] + ldr r1, [r5, #3300] + add r1, r1, r3, lsl #3 + str r0, [r1, #4] +.L1071: + add r2, r2, #1 + b .L1070 +.L1077: + .align 2 +.L1076: + .word .LANCHOR1+379 + .word .LC8 + .word .LANCHOR0 + .word -1291 + .word .LANCHOR0+3452 + .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .align 2 .global flush_l2p_region .syntax unified .arm .fpu softvfp .type flush_l2p_region, %function flush_l2p_region: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L1079 mov r4, #12 - ldr r5, .L1171 mul r4, r4, r0 - ldr r3, [r5, #2540] add r0, r5, #3392 - add r0, r0, #4 + ldr r3, [r5, #2540] add r2, r3, r4 ldrh r1, [r3, r4] ldr r2, [r2, #8] bl FtlMapWritePage - ldr r3, [r5, #2540] + ldr r0, [r5, #2540] + add r4, r0, r4 mov r0, #0 - add r4, r3, r4 ldr r3, [r4, #4] bic r3, r3, #-2147483648 str r3, [r4, #4] - pop {r4, r5, r6, pc} -.L1172: + ldmfd sp, {r4, r5, fp, sp, pc} +.L1080: .align 2 -.L1171: +.L1079: .word .LANCHOR0 - .fnend .size flush_l2p_region, .-flush_l2p_region .align 2 .global log2phys @@ -7829,114 +8226,109 @@ flush_l2p_region: .fpu softvfp .type log2phys, %function log2phys: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov fp, r0 - ldr r4, .L1187 - mov r6, r1 - mov r10, r2 - add r3, r4, #308 - ldrh r9, [r3] - ldr r3, [r4, #2556] - cmp r0, r3 - bcc .L1174 - movw r2, #813 - ldr r1, .L1187+4 - ldr r0, .L1187+8 - bl sftl_printk -.L1174: - ldr r3, [r4, #2556] - cmp fp, r3 - bcs .L1175 - add r9, r9, #7 - ldr r1, [r4, #2540] - lsr r7, fp, r9 - movw r3, #338 - ldrh r2, [r4, r3] - mov r8, #12 - uxth r7, r7 - mov r3, #0 -.L1176: - uxth r5, r3 - cmp r5, r2 - bcc .L1181 - bl select_l2p_ram_region - mul r8, r8, r0 - ldr r3, [r4, #2540] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1093 + mvn r6, #0 mov r5, r0 - ldrh r1, [r3, r8] - add r2, r3, r8 - movw r3, #65535 - cmp r1, r3 - beq .L1182 - ldr r3, [r2, #4] - cmp r3, #0 - bge .L1182 - bl flush_l2p_region -.L1182: - mov r1, r5 - mov r0, r7 - bl load_l2p_region - b .L1178 -.L1175: + mov r8, r1 + add r3, r4, #308 + mov r9, r2 + ldrh r3, [r3] + add r3, r3, #7 + lsr r7, r0, r3 + bic r6, r0, r6, lsl r3 + ldr r3, [r4, #2552] + uxth r7, r7 + uxth r6, r6 + cmp r3, r0 + bhi .L1082 + ldr r1, .L1093+4 + mov r2, #820 + ldr r0, .L1093+8 + bl sftl_printk + ldr r3, [r4, #2552] + cmp r3, r5 + bhi .L1082 mvn r0, #0 - cmp r10, #0 - streq r0, [r6] - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1181: + cmp r9, #0 + streq r0, [r8] + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1088: add r3, r3, #1 - mla r0, r8, r3, r1 - ldrh r0, [r0, #-12] + mul r0, r10, r3 + ldrh r0, [r2, r0] cmp r0, r7 - bne .L1176 -.L1178: - mvn r0, #0 - cmp r10, #0 - bic r0, fp, r0, lsl r9 - mov r3, #12 - uxth r0, r0 - bne .L1179 - ldr r2, [r4, #2540] - mla r3, r3, r5, r2 + bne .L1084 +.L1085: + mov r1, #12 + ldr r3, [r4, #2540] + cmp r9, #0 + mul r5, r1, r5 + add r3, r3, r5 ldr r3, [r3, #8] - ldr r3, [r3, r0, lsl #2] - str r3, [r6] -.L1180: - ldr r2, [r4, #2540] - mov r3, #12 + ldreq r3, [r3, r6, lsl #2] + streq r3, [r8] + beq .L1087 + ldr r2, [r8] + str r2, [r3, r6, lsl #2] + ldr r3, [r4, #2540] + add r3, r3, r5 + ldr r2, [r3, #4] + orr r2, r2, #-2147483648 + str r2, [r3, #4] + ldr r3, .L1093+12 + strh r7, [r3] @ movhi +.L1087: + ldr r1, [r4, #2540] mov r0, #0 - mla r5, r3, r5, r2 + add r5, r1, r5 ldr r3, [r5, #4] cmn r3, #1 addne r3, r3, #1 strne r3, [r5, #4] - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1179: - mul r3, r3, r5 + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1082: ldr r2, [r4, #2540] - ldr r1, [r6] - add r2, r2, r3 - ldr r2, [r2, #8] - str r1, [r2, r0, lsl #2] - ldr r2, [r4, #2540] - add r3, r2, r3 - ldr r2, [r3, #4] - orr r2, r2, #-2147483648 - str r2, [r3, #4] - ldr r3, .L1187+12 - strh r7, [r3] @ movhi - b .L1180 -.L1188: + movw r3, #338 + mov r10, #12 + sub r2, r2, #12 + ldrh r1, [r4, r3] + mov r3, #0 +.L1084: + uxth r5, r3 + cmp r1, r5 + bhi .L1088 + bl select_l2p_ram_region + mul r10, r10, r0 + ldr r3, [r4, #2540] + mov r5, r0 + add r2, r3, r10 + ldrh r1, [r3, r10] + movw r3, #65535 + cmp r1, r3 + beq .L1089 + ldr r3, [r2, #4] + cmp r3, #0 + bge .L1089 + bl flush_l2p_region +.L1089: + mov r1, r5 + mov r0, r7 + bl load_l2p_region + b .L1085 +.L1094: .align 2 -.L1187: +.L1093: .word .LANCHOR0 .word .LANCHOR1+410 .word .LC8 .word .LANCHOR0+2544 - .fnend .size log2phys, .-log2phys .align 2 .global FtlWriteDump_data @@ -7945,121 +8337,121 @@ log2phys: .fpu softvfp .type FtlWriteDump_data, %function FtlWriteDump_data: - .fnstart @ args = 0, pretend = 0, frame = 32 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #36 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #36 - ldr r4, .L1209 - ldr r7, .L1209+4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1114 + mov r3, sp + bic r8, r3, #8128 + bic r8, r8, #63 ldrh r2, [r4, #28] - ldr r3, [r7] + ldr r3, [r8, #24] cmp r2, #0 - str r3, [sp, #28] - beq .L1190 + str r3, [fp, #-48] + beq .L1096 ldrb r3, [r4, #32] @ zero_extendqisi2 cmp r3, #0 - bne .L1190 - movw r3, #302 - ldrb r1, [r4, #31] @ zero_extendqisi2 - ldrh r3, [r4, r3] - mul r3, r3, r1 + bne .L1096 + movw r1, #302 + ldrb r3, [r4, #31] @ zero_extendqisi2 + ldrh r1, [r4, r1] + mul r3, r1, r3 cmp r2, r3 - beq .L1190 - ldrb r8, [r4, #34] @ zero_extendqisi2 - cmp r8, #0 - bne .L1189 - ldr r6, [r4, #2556] - mov r2, r8 - add r1, sp, #4 - ldrh r9, [r4, #232] - sub r6, r6, #1 - mov r0, r6 + beq .L1096 + ldrb r9, [r4, #34] @ zero_extendqisi2 + cmp r9, #0 + bne .L1095 + ldr r7, [r4, #2552] + mov r2, r9 + sub r1, fp, #72 + ldrh r6, [r4, #232] + sub r7, r7, #1 + mov r0, r7 bl log2phys - ldr r3, [sp, #4] - ldr r5, [r4, #3336] - ldr r0, [r4, #3304] + ldr r5, [r4, #3332] + ldr r3, [fp, #-72] + ldr r0, [r4, #3300] + str r3, [fp, #-64] cmn r3, #1 - str r3, [sp, #12] - str r6, [sp, #24] - str r0, [sp, #16] - str r5, [sp, #20] - str r8, [r5, #4] - beq .L1192 - mov r2, r8 + str r7, [fp, #-52] + str r0, [fp, #-60] + str r5, [fp, #-56] + str r9, [r5, #4] + beq .L1098 + mov r2, r9 + sub r0, fp, #68 mov r1, #1 - add r0, sp, #8 bl FlashReadPages -.L1193: - ldr r10, .L1209+8 - mov r8, #0 - ldr r3, .L1209+12 - lsl r9, r9, #2 - mov fp, r8 +.L1099: + ldr r9, .L1114+4 + lsl r6, r6, #2 + ldr r3, .L1114+8 + mov r10, #0 strh r3, [r5] @ movhi -.L1194: - cmp r9, r8 - bne .L1198 -.L1195: +.L1100: + cmp r6, #0 + bne .L1104 +.L1101: mov r3, #1 -.L1208: +.L1113: strb r3, [r4, #34] -.L1189: - ldr r2, [sp, #28] - ldr r3, [r7] +.L1095: + ldr r2, [fp, #-48] + ldr r3, [r8, #24] cmp r2, r3 - beq .L1200 + beq .L1106 bl __stack_chk_fail -.L1192: +.L1098: movw r3, #310 mov r1, #255 ldrh r2, [r4, r3] bl ftl_memset - b .L1193 -.L1198: + b .L1099 +.L1104: ldrh r3, [r4, #28] cmp r3, #0 - beq .L1195 - ldr r3, [sp, #12] - mov r0, r10 - str r6, [r5, #8] - add r8, r8, #1 + beq .L1101 + ldr r3, [fp, #-64] + mov r0, r9 str r3, [r5, #12] + sub r6, r6, #1 ldrh r3, [r4, #24] strh r3, [r5, #2] @ movhi + str r7, [r5, #8] bl get_new_active_ppa - ldr r3, [r4, #2596] + ldr r3, [r4, #2592] + str r0, [fp, #-64] mov r1, #1 - str r0, [sp, #12] - add r0, sp, #8 + cmn r3, #2 + add r2, r3, #1 str r3, [r5, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, fp - str r3, [r4, #2596] + sub r0, fp, #68 + movne r3, r2 + moveq r3, r10 + str r3, [r4, #2592] mov r3, #0 mov r2, r3 bl FlashProgPages ldrh r0, [r4, #24] bl decrement_vpc_count - b .L1194 -.L1190: + b .L1100 +.L1096: mov r3, #0 - b .L1208 -.L1200: - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1210: + b .L1113 +.L1106: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1115: .align 2 -.L1209: +.L1114: .word .LANCHOR0 - .word __stack_chk_guard .word .LANCHOR0+24 .word -3947 - .fnend .size FtlWriteDump_data, .-FtlWriteDump_data .align 2 .global FtlReUsePrevPpa @@ -8068,86 +8460,94 @@ FtlWriteDump_data: .fpu softvfp .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - .pad #8 - mov r7, r0 - ldr r5, .L1222 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1126 + mov r6, r0 ubfx r0, r1, #10, #16 - str r1, [sp, #4] + str r1, [fp, #-40] bl P2V_block_in_plane - ldr r2, [r5, #72] - lsl r6, r0, #1 - ldrh r3, [r2, r6] + lsl r5, r0, #1 + mov r7, r0 + ldr r3, [r4, #72] + ldrh r2, [r3, r5] + cmp r2, #0 + addne r2, r2, #1 + strhne r2, [r3, r5] @ movhi + bne .L1118 + ldr r3, [r4, #2532] cmp r3, #0 - bne .L1212 - ldr r4, [r5, #2532] - cmp r4, #0 - beq .L1213 - ldr r1, [r5, #2516] + beq .L1118 + ldr r1, [r4, #2516] mov lr, #6 - ldr r2, .L1222+4 + ldr ip, .L1126+4 movw r8, #65535 - ldrh ip, [r5, #224] - sub r4, r4, r1 - asr r4, r4, #1 - mul r4, r2, r4 - uxth r4, r4 -.L1214: - uxth r2, r3 - cmp ip, r2 - bls .L1213 - cmp r4, r0 - bne .L1215 - mov r1, r4 - ldr r0, .L1222+8 + sub r3, r3, r1 + ldrh r0, [r4, #224] + asr r3, r3, #1 + mul r3, ip, r3 + uxth r3, r3 +.L1119: + uxth ip, r2 + cmp r0, ip + bls .L1118 + cmp r3, r7 + bne .L1120 + ldr r0, .L1126+8 + mov r1, r7 bl List_remove_node - ldrh r3, [r5, #224] + ldrh r3, [r4, #224] cmp r3, #0 - bne .L1216 - movw r2, #1735 - ldr r1, .L1222+12 - ldr r0, .L1222+16 + bne .L1121 + ldr r1, .L1126+12 + movw r2, #1742 + ldr r0, .L1126+16 bl sftl_printk -.L1216: - ldrh r3, [r5, #224] - mov r0, r4 - sub r3, r3, #1 - strh r3, [r5, #224] @ movhi - bl INSERT_DATA_LIST - ldr r2, [r5, #72] - ldrh r3, [r2, r6] -.L1212: - add r3, r3, #1 - strh r3, [r2, r6] @ movhi - b .L1213 -.L1215: - mul r4, lr, r4 - add r3, r3, #1 - ldrh r4, [r1, r4] - cmp r4, r8 - bne .L1214 -.L1213: - mov r2, #1 - add r1, sp, #4 +.L1121: + ldrh r3, [r4, #224] mov r0, r7 + sub r3, r3, #1 + strh r3, [r4, #224] @ movhi + bl INSERT_DATA_LIST + ldr r2, [r4, #72] + ldrh r3, [r2, r5] + add r3, r3, #1 + strh r3, [r2, r5] @ movhi +.L1118: + sub r1, fp, #40 + mov r0, r6 + mov r2, #1 bl log2phys - add sp, sp, #8 - @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L1223: + sub sp, fp, #32 + ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} +.L1120: + mul r3, lr, r3 + add r2, r2, #1 + ldrh r3, [r1, r3] + cmp r3, r8 + bne .L1119 + b .L1118 +.L1127: .align 2 -.L1222: +.L1126: .word .LANCHOR0 .word -1431655765 .word .LANCHOR0+2532 .word .LANCHOR1+419 .word .LC8 - .fnend .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .section .rodata.str1.1 +.LC109: + .ascii "data prev_ppa = %x error...................\012\000" +.LC110: + .ascii "spuer block %x vpn is 0\012 \000" + .text .align 2 .global FtlRecoverySuperblock .syntax unified @@ -8155,619 +8555,645 @@ FtlReUsePrevPpa: .fpu softvfp .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: - .fnstart - @ args = 0, pretend = 0, frame = 48 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1358 - movw r2, #65535 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #52 - sub sp, sp, #52 - ldr r3, [r3] - str r3, [sp, #44] + @ args = 0, pretend = 0, frame = 64 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #68 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + movw r1, #65535 + bic r3, r3, #8128 + mov r10, r0 + bic r3, r3, #63 + ldr r3, [r3, #24] + str r3, [fp, #-48] ldrh r3, [r0] - cmp r3, r2 - beq .L1226 - ldrh r3, [r0, #2] - mov fp, r0 - ldr r4, .L1358+4 - str r3, [sp, #12] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r1, [sp, #12] - str r3, [sp, #28] - movw r3, #302 - ldrh r3, [r4, r3] cmp r3, r1 + beq .L1130 + ldrh r3, [r0, #2] + ldr r5, .L1257 + str r3, [fp, #-72] + ldrb r3, [r0, #6] @ zero_extendqisi2 + str r3, [fp, #-92] + movw r3, #302 + ldrh r2, [r5, r3] + ldr r3, [fp, #-72] + cmp r2, r3 mov r3, #0 + strheq r2, [r0, #2] @ movhi strheq r3, [r0, #4] @ movhi ldrhne r0, [r0, #16] - bne .L1228 -.L1356: - strb r3, [fp, #6] -.L1226: - ldr r3, .L1358 - mov r0, #0 - ldr r2, [sp, #44] - ldr r3, [r3] + bne .L1132 +.L1255: + strb r3, [r10, #6] +.L1130: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] cmp r2, r3 - beq .L1294 + beq .L1196 bl __stack_chk_fail -.L1229: - uxth r1, r3 - add r1, fp, r1, lsl #1 - ldrh r0, [r1, #16] -.L1228: - cmp r0, r2 +.L1133: + uxth r2, r3 + add r2, r10, r2, lsl #1 + ldrh r0, [r2, #16] +.L1132: uxth r6, r3 + cmp r0, r1 add r3, r3, #1 - beq .L1229 + beq .L1133 mov r1, #1 bl FtlGetLastWrittenPage + mov r4, r0 cmn r0, #1 - mov r5, r0 - beq .L1230 - ldrh r3, [r4, #232] - mov r2, #0 - ldr r0, [r4, #3292] - mov r6, r2 - movw r8, #65535 - mov r9, #20 - str r3, [sp, #4] - ldr r3, [r4, #3180] - str r3, [sp, #8] + beq .L1134 + ldr r3, [r5, #3176] + add r2, r10, #16 + str r3, [fp, #-64] movw r3, #310 - ldrh lr, [r4, r3] - ldr r3, .L1358+8 - ldr r4, [r4, #3184] + ldr r0, [r5, #3288] + movw r8, #65535 + ldrh lr, [r5, r3] + mov r9, #20 + ldr r3, .L1257+4 + ldr r6, [r5, #3180] ldrh r7, [r3] - add r3, fp, #16 - mov ip, r3 - str r3, [sp, #24] -.L1231: - ldr r1, [sp, #4] - uxth r3, r2 - cmp r3, r1 - bcc .L1235 - ldr r4, .L1358+4 + add r3, r10, #16 + str r3, [fp, #-84] + ldrh r3, [r5, #232] + mov r5, #0 + add r3, r10, r3, lsl #1 + add r3, r3, #16 + str r3, [fp, #-68] +.L1135: + ldr r3, [fp, #-68] + cmp r3, r2 + bne .L1139 mov r2, #0 - mov r1, r6 - movw r9, #65535 + mov r1, r5 bl FlashReadPages - ldr r3, [r4, #2596] - uxth r2, r5 - ldr r8, [r4, #3292] - str r2, [sp, #8] - sub r3, r3, #1 - str r3, [sp, #4] - mov r7, r8 - mov r3, #0 -.L1236: - uxth r2, r3 - cmp r6, r2 - bhi .L1241 - addeq r3, r5, #1 + ldr r3, .L1257 + mov r8, #0 + ldr r6, [r3, #3288] + ldr r2, [r3, #2592] + mov r9, r6 + sub r2, r2, #1 + str r2, [fp, #-64] + movw r2, #65535 + str r2, [fp, #-80] + uxth r2, r4 + str r2, [fp, #-68] +.L1140: + uxth r2, r8 + cmp r5, r2 + bhi .L1145 + addeq r3, r4, #1 uxtheq r3, r3 - streq r3, [sp, #8] - bne .L1239 -.L1351: - ldr r0, [r8, #4] + streq r3, [fp, #-68] + bne .L1143 +.L1249: + ldr r0, [r6, #4] ubfx r0, r0, #10, #16 bl P2V_plane - movw r3, #302 - ldr r2, [sp, #8] - ldrh r3, [r4, r3] - str r0, [sp, #16] - ldr r1, [sp, #16] - cmp r3, r2 - ldr r0, [sp, #28] - ldrheq r3, [sp, #8] - ldr r2, [sp, #12] - strheq r3, [fp, #2] @ movhi - moveq r3, #0 - strbeq r3, [fp, #6] - strheq r3, [fp, #4] @ movhi - ldr r3, [sp, #8] - cmp r3, r2 - cmpeq r1, r0 - moveq r2, r1 - moveq r1, r3 - beq .L1357 - movw r3, #65535 - cmp r9, r3 - bne .L1245 - ldrb r3, [fp, #8] @ zero_extendqisi2 - cmp r3, #0 - bne .L1246 -.L1245: - ldr r3, [r4, #3452] - uxth r8, r5 - uxth r5, r5 - ldr r7, .L1358+4 - movw r9, #65535 - cmn r3, #1 - ldreq r3, [sp, #4] - streq r3, [r4, #3452] - ldr r3, [sp, #12] - add r3, r3, #7 - cmp r5, r3 - subgt r5, r8, #7 - ldrle r5, [sp, #12] - uxthgt r5, r5 -.L1249: - cmp r5, r8 - bhi .L1256 - mov r3, #0 - ldrh lr, [r7, #232] - ldr r0, [r7, #3292] - mov r6, r3 - ldr r1, [sp, #24] - mov ip, #20 - b .L1257 -.L1230: - ldr r3, [sp, #12] - cmp r3, #0 - beq .L1232 - movw r2, #1802 - ldr r1, .L1358+12 - ldr r0, .L1358+16 - bl sftl_printk -.L1232: - ldr r3, [sp, #28] - cmp r3, #0 - cmpne r6, r3 - beq .L1233 - movw r2, #1803 - ldr r1, .L1358+12 - ldr r0, .L1358+16 - bl sftl_printk -.L1233: - mov r3, #0 - strh r3, [fp, #2] @ movhi - b .L1356 -.L1235: - ldrh r3, [ip], #2 - cmp r3, r8 - beq .L1234 - mla r1, r9, r6, r0 - orr r3, r5, r3, lsl #10 - str r3, [r1, #4] - mul r3, lr, r6 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - ldr r10, [sp, #8] - bic r3, r3, #3 - add r3, r10, r3 - str r3, [r1, #8] - mul r3, r7, r6 - add r6, r6, #1 - uxth r6, r6 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - bic r3, r3, #3 - add r3, r4, r3 - str r3, [r1, #12] -.L1234: - add r2, r2, #1 - b .L1231 -.L1241: - ldr r2, [r7] - cmp r2, #0 - bne .L1237 - ldr r10, [r7, #12] - ldr r2, [r10, #4] - cmn r2, #1 - beq .L1238 - ldr r1, [r4, #2596] - mov r0, r2 - bl ftl_cmp_data_ver - cmp r0, #0 - addne r2, r2, #1 - strne r2, [r4, #2596] -.L1238: - ldr r2, [r10] - cmn r2, #1 - bne .L1240 -.L1239: - uxth r2, r5 - uxth r3, r3 - str r2, [sp, #8] - mov r2, #20 - mla r8, r2, r3, r8 - b .L1351 -.L1237: - ldr r9, [sp, #8] -.L1240: - add r3, r3, #1 - add r7, r7, #20 - b .L1236 -.L1251: - ldrh r2, [r1], #2 - add r3, r3, #1 - cmp r2, r9 - mlane r10, ip, r6, r0 - addne r6, r6, #1 - orrne r2, r5, r2, lsl #10 - uxthne r6, r6 - strne r2, [r10, #4] -.L1257: - uxth r2, r3 - cmp lr, r2 - bhi .L1251 + ldr r3, .L1257 + movw r2, #302 + ldr r1, [fp, #-68] + str r0, [fp, #-76] + ldrh r2, [r3, r2] + cmp r2, r1 + bne .L1147 mov r2, #0 - mov r1, r6 - bl FlashReadPages - ldr r3, [r7, #3292] - mov r2, #20 - mla r6, r2, r6, r3 -.L1252: - cmp r6, r3 - addeq r5, r5, #1 - uxtheq r5, r5 - beq .L1249 -.L1255: - ldr r2, [r3] + strh r1, [r10, #2] @ movhi + strb r2, [r10, #6] + strh r2, [r10, #4] @ movhi +.L1147: + sub r0, fp, #76 + ldr ip, [fp, #-92] + ldm r0, {r0, r1, r2} + cmp r2, r1 + cmpeq r0, ip + moveq r2, r0 + ldreq r1, [fp, #-68] + beq .L1256 + ldr r1, [fp, #-80] + movw r2, #65535 + cmp r1, r2 + bne .L1149 + ldrb r2, [r10, #8] @ zero_extendqisi2 cmp r2, #0 - bne .L1246 - ldr r2, [r3, #12] - ldrh r1, [r2] - cmp r1, r9 - beq .L1254 - ldr r2, [r2, #4] + bne .L1150 +.L1149: + ldr r2, [r3, #3448] + uxth r9, r4 + ldr r6, .L1257 cmn r2, #1 - strne r2, [r7, #3452] -.L1254: - add r3, r3, #20 - b .L1252 -.L1256: + ldreq r2, [fp, #-64] + streq r2, [r3, #3448] + uxth r2, r4 + ldr r3, [fp, #-72] + add r3, r3, #7 + cmp r3, r2 + sublt r4, r4, #7 + ldrge r4, [fp, #-72] + uxthlt r4, r4 +.L1153: + ldr r0, [r6, #3288] + cmp r4, r9 + ldrh ip, [r6, #232] + bls .L1198 mvn r3, #0 - str r3, [r7, #3452] -.L1246: - mov r2, #1 - movw r3, #3476 - strh r2, [r4, r3] @ movhi - ldr r9, [sp, #12] - ldr r4, .L1358+4 -.L1258: + str r3, [r6, #3448] +.L1150: + ldr r4, .L1257+8 + mov r3, #1 + ldr r9, [fp, #-72] + strh r3, [r4] @ movhi + sub r4, r4, #3472 +.L1161: ldrh ip, [r4, #232] mov r3, #0 - ldr r0, [r4, #3292] - mov r10, r3 - ldr r1, [sp, #24] + ldr r0, [r4, #3288] movw lr, #65535 + ldr r1, [fp, #-84] mov r5, #20 -.L1259: + str r3, [fp, #-80] +.L1162: uxth r2, r3 cmp ip, r2 - bhi .L1261 + bhi .L1164 + ldr r1, [fp, #-80] mov r2, #0 - mov r1, r10 bl FlashReadPages mov r3, #0 -.L1355: - str r3, [sp, #20] - ldrh r3, [sp, #20] - cmp r10, r3 - bhi .L1289 - ldr r3, .L1358+20 - add r9, r9, #1 - uxth r9, r9 +.L1254: + str r3, [fp, #-88] + ldr r2, [fp, #-80] + ldrh r3, [fp, #-88] + cmp r3, r2 + bcc .L1192 + add r3, r9, #1 + uxth r9, r3 + ldr r3, .L1257+12 ldrh r3, [r3] cmp r3, r9 - bne .L1258 - ldrh r2, [r4, #232] - movw r0, #65535 + bne .L1161 + ldrh r1, [r4, #232] mov r3, #0 - strh r9, [fp, #2] @ movhi - strh r3, [fp, #4] @ movhi -.L1290: - uxth r1, r3 + strh r9, [r10, #2] @ movhi + movw r0, #65535 + strh r3, [r10, #4] @ movhi +.L1193: + uxth r2, r3 cmp r1, r2 - bcs .L1226 - ldr r1, [sp, #24] - ldrh ip, [r1], #2 + bls .L1130 + ldr r2, [fp, #-84] + ldrh ip, [r2], #2 + str r2, [fp, #-84] + add r2, r3, #1 cmp ip, r0 - str r1, [sp, #24] - add r1, r3, #1 - bne .L1356 - mov r3, r1 - b .L1290 -.L1261: - ldrh r2, [r1], #2 - add r3, r3, #1 - cmp r2, lr - mlane r6, r5, r10, r0 - orrne r2, r9, r2, lsl #10 - addne r10, r10, #1 - uxthne r10, r10 - strne r2, [r6, #4] - b .L1259 -.L1289: - ldr r3, [sp, #20] - mov r6, #20 - ldr r8, [r4, #3292] - mul r6, r6, r3 - add r7, r8, r6 - ldr r5, [r7, #4] - ubfx r0, r5, #10, #16 - str r5, [sp, #40] - bl P2V_plane - ldr r3, [sp, #12] - cmp r9, r3 - bcc .L1263 - ldr r2, [sp, #28] - moveq r3, #1 - movne r3, #0 - cmp r2, r0 - movls r3, #0 - andhi r3, r3, #1 + bne .L1255 + mov r3, r2 + b .L1193 +.L1134: + ldr r3, [fp, #-72] cmp r3, #0 - bne .L1263 - ldr r3, [sp, #8] - ldr r2, [sp, #16] + beq .L1136 + ldr r1, .L1257+16 + movw r2, #1809 + ldr r0, .L1257+20 + bl sftl_printk +.L1136: + ldr r3, [fp, #-92] + cmp r3, #0 + cmpne r3, r6 + beq .L1137 + ldr r1, .L1257+16 + movw r2, #1810 + ldr r0, .L1257+20 + bl sftl_printk +.L1137: + mov r3, #0 + strh r3, [r10, #2] @ movhi + b .L1255 +.L1139: + ldrh r3, [r2], #2 + cmp r3, r8 + beq .L1135 + mla r1, r9, r5, r0 + orr r3, r4, r3, lsl #10 + mul ip, lr, r5 + cmp ip, #0 + str r3, [r1, #4] + add r3, ip, #3 + movge r3, ip + ldr ip, [fp, #-64] + bic r3, r3, #3 + add r3, ip, r3 + mul ip, r7, r5 + str r3, [r1, #8] + add r5, r5, #1 + cmp ip, #0 + add r3, ip, #3 + movge r3, ip + uxth r5, r5 + bic r3, r3, #3 + add r3, r6, r3 + str r3, [r1, #12] + b .L1135 +.L1145: + ldr r2, [r9] + cmp r2, #0 + bne .L1141 + ldr r2, [r9, #12] + ldr r7, [r2, #4] + cmn r7, #1 + beq .L1142 + ldr r1, [r3, #2592] + mov r0, r7 + str r2, [fp, #-76] + bl ftl_cmp_data_ver + ldr r3, .L1257 + cmp r0, #0 + ldr r2, [fp, #-76] + addne r7, r7, #1 + strne r7, [r3, #2592] +.L1142: + ldr r2, [r2] + cmn r2, #1 + bne .L1144 +.L1143: + uxth r3, r4 + str r3, [fp, #-68] + mov r3, #20 + mla r6, r3, r8, r6 + b .L1249 +.L1141: + ldr r2, [fp, #-68] + str r2, [fp, #-80] +.L1144: + add r8, r8, #1 + add r9, r9, #20 + b .L1140 +.L1155: + ldrh r2, [r1], #2 + cmp r2, lr + beq .L1154 + mla r8, r7, r5, r0 + add r5, r5, #1 + orr r2, r4, r2, lsl #10 + uxth r5, r5 + str r2, [r8, #4] +.L1154: + add r3, r3, #1 +.L1160: + uxth r2, r3 + cmp ip, r2 + bhi .L1155 + mov r2, #0 + mov r1, r5 + bl FlashReadPages + ldr r3, [r6, #3288] + mov r2, #0 + movw r0, #65535 +.L1156: + uxth r1, r2 + cmp r5, r1 + bhi .L1159 + add r4, r4, #1 + uxth r4, r4 + b .L1153 +.L1198: + mov r3, #0 + ldr r1, [fp, #-84] + mov r5, r3 + movw lr, #65535 + mov r7, #20 + b .L1160 +.L1159: + ldr r1, [r3] + cmp r1, #0 + bne .L1150 + ldr r1, [r3, #12] + ldrh ip, [r1] + cmp ip, r0 + beq .L1158 + ldr r1, [r1, #4] + cmn r1, #1 + strne r1, [r6, #3448] +.L1158: + add r2, r2, #1 + add r3, r3, #20 + b .L1156 +.L1164: + ldrh r2, [r1], #2 + cmp r2, lr + beq .L1163 + ldr r6, [fp, #-80] + orr r2, r9, r2, lsl #10 + mla r6, r5, r6, r0 + str r2, [r6, #4] + ldr r2, [fp, #-80] + add r2, r2, #1 + uxth r2, r2 + str r2, [fp, #-80] +.L1163: + add r3, r3, #1 + b .L1162 +.L1192: + ldr r3, [fp, #-88] + mov r5, #20 + ldr r8, [r4, #3288] + mul r5, r5, r3 + ldr r3, [fp, #-72] + add r7, r8, r5 + cmp r9, r3 + ldr r6, [r7, #4] + str r6, [fp, #-52] + bcc .L1166 + ubfx r0, r6, #10, #16 + bl P2V_plane + ldr r3, [fp, #-72] + ldr r2, [fp, #-92] + sub r3, r9, r3 + clz r3, r3 + cmp r2, r0 + lsr r3, r3, #5 + movls r3, #0 + cmp r3, #0 + bne .L1166 + ldr r3, [fp, #-68] + ldr r2, [fp, #-76] cmp r9, r3 cmpeq r2, r0 - beq .L1264 - ldr r3, [r8, r6] + bne .L1167 + ldr r3, [fp, #-68] + strb r2, [r10, #6] + mov r1, r3 + strh r3, [r10, #2] @ movhi +.L1256: + mov r0, r10 + bl ftl_sb_update_avl_pages + b .L1130 +.L1167: + ldr r3, [r8, r5] cmn r3, #1 - beq .L1265 + beq .L1168 ldr r7, [r7, #12] movw r3, #61589 - ldrh r2, [r7] - cmp r2, r3 - ldrhne r0, [fp] - bne .L1352 + ldrh r6, [r7] + cmp r6, r3 + ldrhne r0, [r10] + bne .L1251 ldr r3, [r7, #4] + str r3, [fp, #-64] cmn r3, #1 - str r3, [sp, #4] - beq .L1267 + beq .L1171 + ldr r1, [r4, #2592] mov r0, r3 - ldr r1, [r4, #2596] bl ftl_cmp_data_ver cmp r0, #0 - ldrne r3, [sp, #4] - addne r3, r3, #1 - strne r3, [r4, #2596] -.L1267: - ldrh r2, [r7] - movw r3, #61589 - cmp r2, r3 - beq .L1268 - movw r2, #1954 - ldr r1, .L1358+12 - ldr r0, .L1358+16 + beq .L1171 + ldr r3, [fp, #-64] + add r3, r3, #1 + str r3, [r4, #2592] + ldrh r3, [r7] + cmp r3, r6 + beq .L1171 + ldr r1, .L1257+16 + movw r2, #1961 + ldr r0, .L1257+20 bl sftl_printk -.L1268: - ldr r5, [r7, #8] - add r1, sp, #36 +.L1171: + ldr r6, [r7, #8] + sub r1, fp, #56 ldr r3, [r7, #12] mov r2, #0 - mov r0, r5 - str r3, [sp, #32] + mov r0, r6 + str r3, [fp, #-60] bl log2phys - ldr r1, [r4, #3452] + ldr r1, [r4, #3448] cmn r1, #1 - beq .L1269 - ldr r0, [sp, #4] + beq .L1173 + ldr r0, [fp, #-64] bl ftl_cmp_data_ver cmp r0, #0 - beq .L1269 - ldr r3, [sp, #32] + beq .L1173 + ldr r3, [fp, #-60] cmn r3, #1 - beq .L1270 - ldr r0, [r4, #3292] + beq .L1174 + ldr r0, [r4, #3288] mov r2, #0 mov r1, #1 - add r0, r0, r6 + add r0, r0, r5 str r3, [r0, #4] ldr r7, [r0, #12] bl FlashReadPages - ldr r2, [r4, #3292] - ldr r1, [r2, r6] - add r3, r2, r6 - cmn r1, #1 - bne .L1271 -.L1272: + ldr r8, [r4, #3288] + add r3, r8, r5 + ldr r2, [r8, r5] + cmn r2, #1 + bne .L1175 +.L1176: mvn r3, #0 - str r3, [sp, #32] -.L1279: - ldr r7, [sp, #32] - cmn r7, #1 - beq .L1263 -.L1293: - ubfx r0, r7, #10, #16 + str r3, [fp, #-60] +.L1183: + ldr r0, [fp, #-60] + cmn r0, #1 + beq .L1166 + ubfx r0, r0, #10, #16 bl P2V_block_in_plane ldrh r3, [r4, #240] mov r5, r0 cmp r3, r0 - bhi .L1285 - movw r2, #2059 - ldr r1, .L1358+12 - ldr r0, .L1358+16 + bhi .L1188 + ldr r1, .L1257+16 + movw r2, #2066 + ldr r0, .L1257+20 bl sftl_printk -.L1285: +.L1188: ldr r2, [r4, #72] lsl r3, r5, #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L1286 + beq .L1189 mov r0, r5 -.L1352: +.L1251: bl decrement_vpc_count - b .L1263 -.L1270: - ldr r3, [sp, #40] - ldr r2, [sp, #36] + b .L1166 +.L1174: + ldrd r2, [fp, #-56] cmp r2, r3 - bne .L1263 + bne .L1166 + sub r1, fp, #60 + mov r0, r6 mov r2, #1 - add r1, sp, #32 - mov r0, r5 bl log2phys -.L1263: - ldr r3, [sp, #20] +.L1166: + ldr r3, [fp, #-88] add r3, r3, #1 - b .L1355 -.L1271: - ldr r1, [r7, #8] - cmp r5, r1 - bne .L1272 - ldr r8, [r7, #4] - ldr r0, [r4, #3452] - mov r1, r8 + b .L1254 +.L1175: + ldr r2, [r7, #8] + str r2, [fp, #-100] + cmp r2, r6 + bne .L1176 + str r3, [fp, #-104] + ldr r3, [r7, #4] + ldr r0, [r4, #3448] + mov r1, r3 + str r3, [fp, #-96] bl ftl_cmp_data_ver cmp r0, #0 - beq .L1272 - ldr r1, [sp, #36] - ldr r0, [sp, #40] - cmp r1, r0 - bne .L1274 -.L1277: - ldr r1, [sp, #32] - mov r0, r5 - bl FtlReUsePrevPpa - b .L1272 -.L1274: - ldr r0, [sp, #32] - cmp r1, r0 - beq .L1272 - cmn r1, #1 - streq r1, [r2, r6] - beq .L1276 - str r1, [r3, #4] + beq .L1176 + ldr r0, [fp, #-52] + ldr r2, [fp, #-56] + ldr r1, [fp, #-60] + cmp r2, r0 + ldr r3, [fp, #-104] + ldreq r0, [fp, #-100] + beq .L1250 + cmp r2, r1 + beq .L1176 + cmn r2, #1 + streq r2, [r8, r5] + beq .L1180 + str r2, [r3, #4] + mov r0, r3 mov r2, #0 mov r1, #1 - mov r0, r3 ldr r7, [r3, #12] bl FlashReadPages -.L1276: - ldr r3, [r4, #3292] - ldr r3, [r3, r6] +.L1180: + ldr r3, [r4, #3288] + ldr r3, [r3, r5] cmn r3, #1 - beq .L1277 - ldr r3, [r7, #4] - ldr r0, [r4, #3452] - mov r1, r3 + beq .L1181 + ldr r5, [r7, #4] + ldr r0, [r4, #3448] + mov r1, r5 bl ftl_cmp_data_ver cmp r0, #0 - beq .L1277 - mov r1, r3 - mov r0, r8 + beq .L1181 + ldr r0, [fp, #-96] + mov r1, r5 bl ftl_cmp_data_ver cmp r0, #0 - beq .L1272 - b .L1277 -.L1269: - ldr r3, [sp, #40] - ldr r2, [sp, #36] + beq .L1176 +.L1181: + ldr r1, [fp, #-60] + mov r0, r6 +.L1250: + bl FtlReUsePrevPpa + b .L1176 +.L1173: + ldrd r2, [fp, #-56] cmp r2, r3 - beq .L1279 - ldr r1, [sp, #32] + beq .L1183 + ldr r1, [fp, #-60] cmn r1, #1 - beq .L1281 + beq .L1185 ldr r3, [r4, #248] cmp r3, r1, lsr #10 - ldrls r0, .L1358+24 - bls .L1354 -.L1281: + ldrls r0, .L1257+24 + bls .L1253 +.L1185: + sub r1, fp, #52 + mov r0, r6 mov r2, #1 - add r1, sp, #40 - mov r0, r5 bl log2phys - ldr r7, [sp, #36] + ldr r7, [fp, #-56] cmn r7, #1 - beq .L1279 - ldr r3, [sp, #32] + beq .L1183 + ldr r3, [fp, #-60] cmp r7, r3 - beq .L1293 + beq .L1183 ubfx r0, r7, #10, #16 bl P2V_block_in_plane ldrh r3, [r4, #24] cmp r3, r0 - beq .L1284 + beq .L1187 ldrh r3, [r4, #76] cmp r3, r0 - beq .L1284 + beq .L1187 ldrh r3, [r4, #124] cmp r3, r0 - bne .L1279 -.L1284: - ldr r0, [r4, #3292] + bne .L1183 +.L1187: + ldr r0, [r4, #3288] mov r2, #0 mov r1, #1 str r7, [r0, #4] - ldr r6, [r0, #12] + ldr r5, [r0, #12] bl FlashReadPages - ldr r3, [r4, #3292] + ldr r3, [r4, #3288] ldr r3, [r3] cmn r3, #1 - beq .L1279 - ldr r1, [r6, #4] - ldr r0, [sp, #4] + beq .L1183 + ldr r1, [r5, #4] + ldr r0, [fp, #-64] bl ftl_cmp_data_ver cmp r0, #0 - bne .L1279 + bne .L1183 + sub r1, fp, #56 + mov r0, r6 mov r2, #1 - add r1, sp, #36 - mov r0, r5 bl log2phys - b .L1279 -.L1286: - ldr r0, .L1358+28 + b .L1183 +.L1189: + ldr r0, .L1257+28 mov r1, r5 -.L1354: +.L1253: bl sftl_printk - b .L1263 -.L1265: - ldr r3, [r4, #3480] + b .L1166 +.L1168: + ldr r3, [r4, #3476] cmp r3, #31 addls r2, r4, r3, lsl #2 addls r3, r3, #1 - strls r3, [r4, #3480] - strls r5, [r2, #3484] - ldrh r0, [fp] + strls r3, [r4, #3476] + strls r6, [r2, #3480] + ldrh r0, [r10] bl decrement_vpc_count - ldr r3, [r4, #3452] + ldr r3, [r4, #3448] cmn r3, #1 - ldreq r3, [sp, #4] - beq .L1353 - ldr r2, [sp, #4] - cmp r2, r3 - bcs .L1263 + ldreq r3, [fp, #-64] + beq .L1252 + ldr r2, [fp, #-64] + cmp r3, r2 + bls .L1166 mov r3, r2 -.L1353: - str r3, [r4, #3452] - b .L1263 -.L1264: - ldrb r3, [sp, #16] @ zero_extendqisi2 - ldr r2, [sp, #16] - ldr r1, [sp, #8] - strb r3, [fp, #6] - ldrh r3, [sp, #8] - strh r3, [fp, #2] @ movhi -.L1357: - mov r0, fp - bl ftl_sb_update_avl_pages - b .L1226 -.L1294: - add sp, sp, #52 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1359: +.L1252: + str r3, [r4, #3448] + b .L1166 +.L1196: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1258: .align 2 -.L1358: - .word __stack_chk_guard +.L1257: .word .LANCHOR0 .word .LANCHOR0+312 + .word .LANCHOR0+3472 + .word .LANCHOR0+302 .word .LANCHOR1+435 .word .LC8 - .word .LANCHOR0+302 .word .LC109 .word .LC110 - .fnend .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .section .rodata.str1.1 +.LC111: + .ascii "...%s enter...\012\000" +.LC112: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" +.LC113: + .ascii "free blk vpc error %x = %x %x\012\000" + .text .align 2 .global ftl_check_vpc .syntax unified @@ -8775,137 +9201,135 @@ FtlRecoverySuperblock: .fpu softvfp .type ftl_check_vpc, %function ftl_check_vpc: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #20 - sub sp, sp, #20 - ldr r5, .L1386 + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r5, .L1284 + bic r6, r3, #8128 + ldr r1, .L1284+4 + bic r6, r6, #63 + ldr r0, .L1284+8 mov r4, #0 - ldr r6, .L1386+4 - ldr r3, [r5] - ldr r1, .L1386+8 - ldr r0, .L1386+12 - ldr r7, .L1386+16 - str r3, [sp, #12] + ldr r3, [r6, #24] + str r3, [fp, #-48] bl sftl_printk + ldr r0, .L1284+12 mov r2, #8192 mov r1, #0 - ldr r0, .L1386+16 bl ftl_memset - str r5, [sp, #4] - mov r5, r6 -.L1361: - ldr r3, [r6, #2556] - cmp r4, r3 - bcc .L1363 - ldr r8, .L1386+16 +.L1260: + ldr r3, [r5, #2552] + cmp r3, r4 + bhi .L1262 + ldr r9, .L1284+12 mov r4, #0 - ldr r10, .L1386+20 - mov r6, r4 - movw r9, #65535 -.L1364: + ldr r10, .L1284+16 + mov r7, r4 +.L1263: ldrh r2, [r5, #240] uxth r3, r4 cmp r2, r3 - bhi .L1366 + bhi .L1265 ldr r4, [r5, #2532] cmp r4, #0 - beq .L1367 - ldr r3, [r5, #2516] - mov r7, #0 + beq .L1266 + ldr r1, [r5, #2516] + mov r9, #0 ldrh r8, [r5, #224] - mov fp, #6 - ldr r9, .L1386+16 - sub r4, r4, r3 - ldr r3, .L1386+24 + sub r4, r4, r1 + ldr r1, .L1284+20 + ldr r10, .L1284+12 asr r4, r4, #1 - ldr r10, .L1386+28 - mul r4, r3, r4 + ldr r0, .L1284+24 + mul r4, r1, r4 uxth r4, r4 -.L1368: - uxth r3, r7 +.L1267: + uxth r3, r9 cmp r8, r3 - bls .L1367 + bls .L1266 ldr r2, [r5, #72] lsl r3, r4, #1 ldrh r2, [r2, r3] cmp r2, #0 - beq .L1369 - mov r6, #1 - ldrh r3, [r9, r3] + beq .L1268 + ldrh r3, [r10, r3] mov r1, r4 - mov r0, r10 bl sftl_printk -.L1369: - mul r4, fp, r4 - ldr r3, [r5, #2516] - add r7, r7, #1 - ldrh r4, [r3, r4] + ldr r0, .L1284+24 + mov r7, #1 +.L1268: + mov r3, #6 + ldr r2, [r5, #2516] + add r9, r9, #1 + mul r3, r3, r4 + ldrh r4, [r2, r3] movw r3, #65535 cmp r4, r3 - bne .L1368 -.L1367: - cmp r6, #0 - beq .L1360 - movw r2, #2387 - ldr r1, .L1386+8 - ldr r0, .L1386+32 + bne .L1267 +.L1266: + cmp r7, #0 + beq .L1259 + ldr r1, .L1284+4 + movw r2, #2394 + ldr r0, .L1284+28 bl sftl_printk -.L1360: - ldr r3, [sp, #4] - ldr r2, [sp, #12] - ldr r3, [r3] +.L1259: + ldr r2, [fp, #-48] + ldr r3, [r6, #24] cmp r2, r3 - beq .L1372 + beq .L1271 bl __stack_chk_fail -.L1363: - mov r2, #0 - add r1, sp, #8 +.L1262: + sub r1, fp, #52 mov r0, r4 + mov r2, #0 bl log2phys - ldr r0, [sp, #8] + ldr r0, [fp, #-52] cmn r0, #1 - beq .L1362 + beq .L1261 ubfx r0, r0, #10, #16 bl P2V_block_in_plane + ldr r2, .L1284+12 lsl r0, r0, #1 - ldrh r3, [r7, r0] + ldrh r3, [r2, r0] add r3, r3, #1 - strh r3, [r7, r0] @ movhi -.L1362: + strh r3, [r2, r0] @ movhi +.L1261: add r4, r4, #1 - b .L1361 -.L1366: + b .L1260 +.L1265: uxth r1, r4 ldr r3, [r5, #72] - lsl r7, r1, #1 - ldrh r2, [r3, r7] - ldrh r3, [r8, r7] + lsl r8, r1, #1 + ldrh r2, [r3, r8] + ldrh r3, [r9, r8] cmp r2, r3 - beq .L1365 + beq .L1264 mov r0, r10 bl sftl_printk ldr r3, [r5, #72] - ldrh r3, [r3, r7] - cmp r3, r9 - beq .L1365 - ldrh r2, [r8, r7] + movw r2, #65535 + ldrh r3, [r3, r8] + cmp r3, r2 + beq .L1264 + ldrh r2, [r9, r8] cmp r2, r3 - movhi r6, #1 -.L1365: + movhi r7, #1 +.L1264: add r4, r4, #1 - b .L1364 -.L1372: - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1387: + b .L1263 +.L1271: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1285: .align 2 -.L1386: - .word __stack_chk_guard +.L1284: .word .LANCHOR0 .word .LANCHOR1+457 .word .LC111 @@ -8914,8 +9338,16 @@ ftl_check_vpc: .word -1431655765 .word .LC113 .word .LC8 - .fnend .size ftl_check_vpc, .-ftl_check_vpc + .section .rodata.str1.1 +.LC114: + .ascii "ftl_scan_all_data = %x\012\000" +.LC115: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC116: + .ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" + .text .align 2 .global ftl_scan_all_data .syntax unified @@ -8923,70 +9355,71 @@ ftl_check_vpc: .fpu softvfp .type ftl_scan_all_data, %function ftl_scan_all_data: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #32 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r4, .L1295 + bic r6, r3, #8128 mov r5, #0 - ldr r6, .L1398 - .pad #36 - sub sp, sp, #36 + bic r6, r6, #63 + ldr r0, .L1295+4 mov r1, #0 - ldr r7, .L1398+4 - ldr r9, .L1398+8 - ldr r3, [r6] - mov r4, r7 - ldr r0, .L1398+12 - str r3, [sp, #28] + ldr r3, [r6, #24] + str r3, [fp, #-32] bl sftl_printk -.L1389: - ldr r3, [r7, #2556] - cmp r5, r3 - bcc .L1395 - ldr r2, [sp, #28] - ldr r3, [r6] +.L1287: + ldr r3, [r4, #2552] + cmp r3, r5 + bhi .L1293 + ldr r2, [fp, #-32] + ldr r3, [r6, #24] cmp r2, r3 - beq .L1396 + beq .L1294 bl __stack_chk_fail -.L1395: - mov r2, #0 - add r1, sp, #24 +.L1293: + sub r1, fp, #36 mov r0, r5 + mov r2, #0 bl log2phys ubfx r3, r5, #0, #11 cmp r3, #0 - bne .L1390 - ldr r2, [sp, #24] + bne .L1288 + ldr r2, [fp, #-36] mov r1, r5 - mov r0, r9 + ldr r0, .L1295+8 bl sftl_printk -.L1390: - ldr r3, [sp, #24] +.L1288: + ldr r3, [fp, #-36] cmn r3, #1 - beq .L1392 - str r3, [r4, #3460] + beq .L1290 + ldr r7, [r4, #3332] mov r2, #0 - ldr r3, [r4, #3304] + str r3, [r4, #3456] mov r1, #1 - ldr r8, [r4, #3336] - ldr r0, .L1398+16 - str r3, [r4, #3464] - str r5, [r4, #3472] - str r8, [r4, #3468] - str r2, [r4, #3456] + ldr r3, [r4, #3300] + ldr r0, .L1295+12 + str r3, [r4, #3460] + str r5, [r4, #3468] + str r7, [r4, #3464] + str r2, [r4, #3452] bl FlashReadPages - ldr r3, [r4, #3456] + ldr r3, [r4, #3452] cmn r3, #1 cmpne r3, #256 - beq .L1393 - ldr r3, [r8, #8] - cmp r5, r3 - beq .L1392 -.L1393: - ldr r2, [r4, #3464] - ldr r3, [r4, #3468] - ldr r0, .L1398+20 + beq .L1291 + ldr r3, [r7, #8] + cmp r3, r5 + beq .L1290 +.L1291: + ldr r2, [r4, #3460] + ldr r3, [r4, #3464] + ldr r0, .L1295+16 ldr r1, [r2, #4] str r1, [sp, #16] mov r1, r5 @@ -8998,27 +9431,28 @@ ftl_scan_all_data: str r2, [sp, #4] ldr r2, [r3, #4] str r2, [sp] + ldr r2, [r4, #3456] ldr r3, [r3] - ldr r2, [r4, #3460] bl sftl_printk -.L1392: +.L1290: add r5, r5, #1 - b .L1389 -.L1396: - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L1399: + b .L1287 +.L1294: + sub sp, fp, #28 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1296: .align 2 -.L1398: - .word __stack_chk_guard +.L1295: .word .LANCHOR0 - .word .LC115 .word .LC114 - .word .LANCHOR0+3456 + .word .LC115 + .word .LANCHOR0+3452 .word .LC116 - .fnend .size ftl_scan_all_data, .-ftl_scan_all_data + .section .rodata.str1.1 +.LC117: + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" + .text .align 2 .global FtlGcScanTempBlk .syntax unified @@ -9026,147 +9460,156 @@ ftl_scan_all_data: .fpu softvfp .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: - .fnstart @ args = 0, pretend = 0, frame = 56 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1434 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #60 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #60 + push {lr} + bl __gnu_mcount_nc + mov r3, sp mov r4, r0 - str r1, [sp, #12] - ldr r3, [r3] - str r3, [sp, #52] - ldr r3, .L1434+4 + bic r3, r3, #8128 + str r1, [fp, #-84] + bic r3, r3, #63 + ldr r3, [r3, #24] + str r3, [fp, #-48] + ldr r3, .L1329 ldrh r5, [r3, #4] movw r3, #65535 cmp r5, r3 - beq .L1426 + beq .L1322 cmp r5, #0 - bne .L1401 -.L1402: - bl FtlGcPageVarInit - b .L1403 -.L1426: - mov r5, #0 -.L1401: - ldr r2, .L1434+8 + beq .L1299 +.L1298: + ldr r2, .L1329+4 movw r3, #302 ldrh r3, [r2, r3] - ldr r2, [sp, #12] + ldr r2, [fp, #-84] cmp r3, r2 - beq .L1402 -.L1403: - ldr r6, .L1434+8 + bne .L1300 +.L1299: + bl FtlGcPageVarInit +.L1300: + ldr r6, .L1329+4 mov r3, #0 - str r3, [sp, #4] -.L1419: + str r3, [fp, #-80] +.L1317: ldrh r2, [r4] mov r3, #0 strb r3, [r4, #8] movw r3, #65535 cmp r2, r3 - beq .L1404 -.L1422: + beq .L1301 +.L1302: + ldr r3, [r6, #3176] + mov r7, #0 + str r3, [fp, #-88] + movw lr, #65535 + ldr r3, .L1329+8 + mov r8, #20 + ldr r0, [r6, #3288] + ldr r10, [r6, #3180] + ldrh r2, [r3] + ldrh r9, [r3, #2] ldrh r3, [r6, #232] - mov r2, #0 - ldr r0, [r6, #3292] - add ip, r4, #16 - ldr fp, [r6, #3184] - mov r8, r2 - str r3, [sp, #8] - movw r7, #65535 - ldr r3, [r6, #3180] - mov r9, #20 - str r3, [sp, #16] - ldr r3, .L1434+12 - ldrh r3, [r3] - str r3, [sp, #20] - ldr r3, .L1434+16 - ldrh lr, [r3] -.L1405: - ldr r1, [sp, #8] - uxth r3, r2 - cmp r1, r3 - bhi .L1407 - mov r10, #0 - mov r2, #0 - mov r1, r8 - bl FlashReadPages -.L1408: - uxth r3, r10 - cmp r8, r3 - bhi .L1420 - ldr r3, [sp, #4] - add r5, r5, #1 - uxth r5, r5 - add r3, r3, #1 - str r3, [sp, #4] - ldr r2, [sp, #4] - ldr r3, [sp, #12] + str r2, [fp, #-92] + add r2, r4, #16 + add r3, r4, r3, lsl #1 + add r3, r3, #16 + str r3, [fp, #-96] +.L1303: + ldr r3, [fp, #-96] cmp r3, r2 - ldr r2, .L1434+20 - bls .L1421 -.L1423: - ldrh r3, [r2] - cmp r3, r5 - bhi .L1422 -.L1404: - ldr r3, .L1434+4 - mvn r2, #0 - strh r5, [r4, #2] @ movhi - mov r1, r5 - mov r0, r4 - strh r2, [r3, #4] @ movhi + bne .L1305 + mov r10, #0 + mov r1, r7 mov r2, #0 - strb r2, [r4, #6] - bl ftl_sb_update_avl_pages - b .L1424 -.L1407: - ldrh r3, [ip], #2 - cmp r3, r7 - beq .L1406 - mla r1, r9, r8, r0 + bl FlashReadPages +.L1306: + uxth r3, r10 + cmp r7, r3 + bhi .L1318 + ldr r3, [fp, #-80] + add r5, r5, #1 + add r3, r3, #1 + str r3, [fp, #-80] + ldr r2, [fp, #-80] + uxth r5, r5 + ldr r3, [fp, #-84] + cmp r3, r2 + bhi .L1319 + ldr r2, .L1329 + movw r1, #65535 + ldrh r3, [r2, #4] + cmp r3, r1 + beq .L1319 + ldr r1, [fp, #-80] + add r3, r3, r1 + strh r3, [r2, #4] @ movhi + ldr r2, .L1329+4 + movw r3, #302 + ldrh r3, [r2, r3] + cmp r3, r5 + bls .L1301 +.L1320: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] + cmp r2, r3 + beq .L1321 + bl __stack_chk_fail +.L1322: + mov r5, #0 + b .L1298 +.L1305: + ldrh r3, [r2], #2 + cmp r3, lr + beq .L1303 + mla r1, r8, r7, r0 orr r3, r5, r3, lsl #10 str r3, [r1, #4] - ldr r3, [sp, #20] - mul r3, r3, r8 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - ldr r10, [sp, #16] + ldr r3, [fp, #-92] + mul ip, r3, r7 + cmp ip, #0 + add r3, ip, #3 + movge r3, ip + ldr ip, [fp, #-88] + bic r3, r3, #3 + add r3, ip, r3 + mul ip, r9, r7 + str r3, [r1, #8] + add r7, r7, #1 + cmp ip, #0 + add r3, ip, #3 + movge r3, ip + uxth r7, r7 bic r3, r3, #3 add r3, r10, r3 - str r3, [r1, #8] - mul r3, lr, r8 - add r8, r8, #1 - uxth r8, r8 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - bic r3, r3, #3 - add r3, fp, r3 str r3, [r1, #12] -.L1406: - add r2, r2, #1 - b .L1405 -.L1420: - mov r3, #20 - ldr r2, [r6, #3292] - mul fp, r3, r10 - ldr r7, [r2, fp] - add r1, r2, fp + b .L1303 +.L1318: + mov r9, #20 + ldr r2, [r6, #3288] + mul r9, r9, r10 + add r1, r2, r9 + ldr r2, [r2, r9] ldr r3, [r1, #4] - ldr r9, [r1, #12] - cmp r7, #0 - str r3, [sp, #8] - bne .L1409 - ldrh r1, [r9] - movw r2, #65535 - cmp r1, r2 - bne .L1410 -.L1432: + ldr r8, [r1, #12] + cmp r2, #0 + bne .L1307 + ldrh r0, [r8] + movw r1, #65535 + cmp r0, r1 + beq .L1327 + ldr r0, [r8, #8] + ldr r1, [r6, #2552] + cmp r0, r1 + bls .L1309 +.L1327: ldrh r3, [r4] mov r1, #0 ldr r2, [r6, #72] @@ -9179,103 +9622,98 @@ FtlGcScanTempBlk: strh r3, [r4] @ movhi strh r3, [r6, #172] @ movhi bl FtlGcPageVarInit - b .L1419 -.L1410: - ldr r0, [r9, #8] - ldr r2, [r6, #2556] - cmp r0, r2 - bhi .L1432 - mov r2, r7 - add r1, sp, #28 + b .L1317 +.L1309: + sub r1, fp, #72 + str r3, [fp, #-92] + str r2, [fp, #-88] bl log2phys - ldr r2, [r9, #12] - ldr r1, [sp, #28] - sub r0, r2, r1 - cmn r1, #1 - clz r0, r0 - lsr r0, r0, #5 - moveq r0, #0 - cmp r0, #0 - bne .L1413 -.L1418: - ldr r2, [r9, #8] -.L1433: - ldr r1, [sp, #8] + ldr r0, [fp, #-72] + ldr r1, [r8, #12] + cmn r0, #1 + ldr r2, [fp, #-88] + sub ip, r1, r0 + ldr r3, [fp, #-92] + clz ip, ip + lsr ip, ip, #5 + moveq ip, #0 + cmp ip, #0 + bne .L1311 +.L1316: + ldr r2, [r8, #8] +.L1328: + ldr r0, [r8, #12] + mov r1, r3 add r10, r10, #1 - ldr r0, [r9, #12] bl FtlGcUpdatePage - b .L1408 -.L1413: - str r2, [sp, #36] + b .L1306 +.L1311: + str r1, [fp, #-64] + sub r0, fp, #68 + ldr r1, [r6, #3316] + str r1, [fp, #-60] + ldr r1, [r6, #3336] + str r1, [fp, #-56] mov r1, #1 - ldr r2, [r6, #3320] - add r0, sp, #32 - str r2, [sp, #40] - ldr r2, [r6, #3340] - str r2, [sp, #44] - mov r2, r7 + str r3, [fp, #-92] + str r2, [fp, #-88] bl FlashReadPages - ldr r3, .L1434+24 - ldr r1, [r6, #3292] - ldrh r2, [r3] - add r3, r1, fp - ldr r1, [sp, #40] - lsl r2, r2, #7 -.L1415: - cmp r7, r2 - beq .L1418 - ldr r0, [r3, #8] - ldr ip, [r0, r7, lsl #2] - ldr r0, [r1, r7, lsl #2] - cmp ip, r0 - beq .L1416 - ldr r2, [sp, #36] + ldr r1, .L1329+12 + ldr r0, [r6, #3288] + ldr r2, [fp, #-88] + add r9, r0, r9 + ldr r3, [fp, #-92] + ldrh r1, [r1] + ldr r0, [fp, #-60] + lsl r1, r1, #7 +.L1313: + cmp r1, r2 + beq .L1316 + ldr ip, [r9, #8] + ldr lr, [ip, r2, lsl #2] + ldr ip, [r0, r2, lsl #2] + cmp lr, ip + beq .L1314 + ldr r2, [fp, #-64] ldrh r1, [r4] - ldr r0, .L1434+28 + ldr r0, .L1329+16 bl sftl_printk - b .L1432 -.L1416: - add r7, r7, #1 - b .L1415 -.L1409: + b .L1327 +.L1314: + add r2, r2, #1 + b .L1313 +.L1307: mvn r2, #0 - b .L1433 -.L1421: - ldr r1, .L1434+4 - movw r0, #65535 - ldrh r3, [r1, #4] - cmp r3, r0 - beq .L1423 - ldr r0, [sp, #4] - add r3, r3, r0 - strh r3, [r1, #4] @ movhi - ldrh r3, [r2] + b .L1328 +.L1319: + ldr r3, .L1329+20 + ldrh r3, [r3] cmp r3, r5 - bls .L1423 -.L1424: - ldr r3, .L1434 + bhi .L1302 +.L1301: + ldr r3, .L1329 + mvn r2, #0 + mov r1, r5 + mov r0, r4 + strh r5, [r4, #2] @ movhi + strh r2, [r3, #4] @ movhi + mov r2, #0 + strb r2, [r4, #6] + bl ftl_sb_update_avl_pages + b .L1320 +.L1321: mvn r0, #0 - ldr r2, [sp, #52] - ldr r3, [r3] - cmp r2, r3 - beq .L1425 - bl __stack_chk_fail -.L1425: - add sp, sp, #60 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1435: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1330: .align 2 -.L1434: - .word __stack_chk_guard +.L1329: .word .LANCHOR2 .word .LANCHOR0 .word .LANCHOR0+310 - .word .LANCHOR0+312 - .word .LANCHOR0+302 .word .LANCHOR0+258 .word .LC117 - .fnend + .word .LANCHOR0+302 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 .global FtlReadRefresh @@ -9284,127 +9722,124 @@ FtlGcScanTempBlk: .fpu softvfp .type FtlReadRefresh, %function FtlReadRefresh: - .fnstart @ args = 0, pretend = 0, frame = 96 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #100 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #100 - ldr r6, .L1454 - ldr r7, .L1454+4 - ldr r10, [r6, #2724] - mov r5, r6 - ldr r3, [r7] - cmp r10, #0 - str r3, [sp, #92] - beq .L1437 - ldr r2, [r6, #2728] - ldr r3, [r6, #2556] + push {lr} + bl __gnu_mcount_nc + ldr r5, .L1347 + mov r3, sp + bic r6, r3, #8128 + bic r6, r6, #63 + ldr r9, [r5, #2720] + ldr r3, [r6, #24] + str r3, [fp, #-48] + cmp r9, #0 + ldr r3, [r5, #2552] + beq .L1332 + ldr r2, [r5, #2724] cmp r2, r3 - bcs .L1438 + bcs .L1333 mov r4, #2048 -.L1443: - ldr r0, [r5, #2728] - ldr r3, [r5, #2556] +.L1338: + ldr r0, [r5, #2724] + ldr r3, [r5, #2552] cmp r0, r3 - bcc .L1439 -.L1442: + bcc .L1334 +.L1337: mvn r0, #0 -.L1436: - ldr r2, [sp, #92] - ldr r3, [r7] +.L1331: + ldr r2, [fp, #-48] + ldr r3, [r6, #24] cmp r2, r3 - beq .L1448 + beq .L1342 bl __stack_chk_fail -.L1439: +.L1334: mov r2, #0 - add r1, sp, #4 + sub r1, fp, #136 bl log2phys - ldr r2, [sp, #4] - ldr r3, [r5, #2728] - cmn r2, #1 + ldr r3, [r5, #2724] + ldr r2, [fp, #-136] add r3, r3, #1 - str r3, [r5, #2728] - beq .L1441 - str r3, [sp, #24] - add r0, sp, #96 - ldr r3, [r5, #3328] - mov r1, #1 - str r2, [sp, #12] + str r3, [r5, #2724] + cmn r2, #1 + beq .L1336 + str r2, [fp, #-128] + sub r0, fp, #132 + str r3, [fp, #-116] mov r2, #0 - str r2, [r0, #-88]! - str r3, [sp, #16] - add r3, sp, #28 - str r3, [sp, #20] + ldr r3, [r5, #3324] + mov r1, #1 + str r3, [fp, #-124] + sub r3, fp, #112 + str r2, [fp, #-132] + str r3, [fp, #-120] bl FlashReadPages - ldr r3, [sp, #8] + ldr r3, [fp, #-132] cmp r3, #256 - bne .L1442 - ldr r0, [sp, #4] + bne .L1337 + ldr r0, [fp, #-136] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock - b .L1442 -.L1441: + b .L1337 +.L1336: subs r4, r4, #1 - bne .L1443 - b .L1442 -.L1438: - ldr r3, [r6, #2560] + bne .L1338 + b .L1337 +.L1333: + ldr r3, [r5, #2556] mov r0, #0 - str r0, [r6, #2724] - str r0, [r6, #2728] - str r3, [r6, #2720] - b .L1436 -.L1437: - ldr r1, [r6, #2616] + str r3, [r5, #2716] + str r0, [r5, #2720] + str r0, [r5, #2724] + b .L1331 +.L1332: + ldr r2, .L1347+4 movw r4, #10000 - ldr r9, [r6, #2560] - ldr r8, [r6, #2720] + ldr r1, [r5, #2612] + ldr r8, [r5, #2556] cmp r1, r4 - ldr fp, .L1454+8 - add r3, r9, #1048576 + ldr r10, [r5, #2716] + ldrh r7, [r2, #28] + add r2, r8, #1048576 movhi r4, #31 movls r4, #63 - cmp r8, r3 - bhi .L1447 - ldr r3, [r6, #2556] - lsr r1, r1, #10 + cmp r10, r2 + bhi .L1341 mov r0, #1000 + lsr r1, r1, #10 add r1, r1, #1 mul r0, r0, r3 bl __aeabi_uidiv - add r0, r0, r8 - cmp r9, r0 - bhi .L1447 - ldrh r3, [fp, #28] - ands r0, r4, r3 - movne r0, r10 - bne .L1436 - ldr r2, [r6, #2744] - cmp r3, r2 - beq .L1436 -.L1447: - ldrh r3, [fp, #28] - mov r0, #0 - str r0, [r5, #2728] - str r9, [r5, #2720] - str r3, [r5, #2744] + add r0, r0, r10 + cmp r8, r0 + bhi .L1341 + ands r0, r4, r7 + movne r0, r9 + bne .L1331 + ldr r3, [r5, #2740] + cmp r3, r7 + beq .L1331 +.L1341: mov r3, #1 - str r3, [r5, #2724] - b .L1436 -.L1448: - add sp, sp, #100 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1455: + mov r0, #0 + str r7, [r5, #2740] + str r3, [r5, #2720] + str r0, [r5, #2724] + str r8, [r5, #2716] + b .L1331 +.L1342: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1348: .align 2 -.L1454: +.L1347: .word .LANCHOR0 - .word __stack_chk_guard .word .LANCHOR0+2468 - .fnend .size FtlReadRefresh, .-FtlReadRefresh .align 2 .global l2p_flush @@ -9413,40 +9848,41 @@ FtlReadRefresh: .fpu softvfp .type l2p_flush, %function l2p_flush: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L1353 mov r4, #0 - ldr r6, .L1461 - mov r7, #12 - ldr r5, .L1461+4 + ldr r5, .L1353+4 bl FtlWriteDump_data -.L1457: +.L1350: ldrh r3, [r5] uxth r0, r4 cmp r3, r0 - bhi .L1459 + bhi .L1352 mov r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L1459: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1352: ldr r2, [r6, #2540] uxth r3, r4 - mla r3, r7, r3, r2 + mov r1, #12 + mla r3, r1, r3, r2 ldr r3, [r3, #4] cmp r3, #0 - bge .L1458 + bge .L1351 bl flush_l2p_region -.L1458: +.L1351: add r4, r4, #1 - b .L1457 -.L1462: + b .L1350 +.L1354: .align 2 -.L1461: +.L1353: .word .LANCHOR0 .word .LANCHOR0+338 - .fnend .size l2p_flush, .-l2p_flush .align 2 .global FtlVendorPartWrite @@ -9455,115 +9891,112 @@ l2p_flush: .fpu softvfp .type FtlVendorPartWrite, %function FtlVendorPartWrite: - .fnstart @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1474 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r2 - ldr r4, .L1474+4 - .pad #108 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #108 - mov r6, r1 - add r1, r0, r1 - ldr r2, [r3] - str r3, [sp, #4] - str r2, [sp, #100] - ldrh r2, [r4] - cmp r1, r2 - mvnhi r9, #0 - bhi .L1463 - sub r4, r4, #296 - mov r8, r0 - add r3, r4, #308 - mov r9, #0 - ldrh r7, [r3] - lsr r7, r0, r7 - lsl fp, r7, #2 -.L1465: - cmp r6, #0 - bne .L1470 -.L1463: - ldr r3, [sp, #4] - mov r0, r9 - ldr r2, [sp, #100] - ldr r3, [r3] - cmp r2, r3 - beq .L1471 - bl __stack_chk_fail -.L1470: - ldr r3, [r4, #3376] - mov r0, r8 - ldr r2, [r3, fp] - ldr r3, .L1474+8 - str r2, [sp, #12] + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r7, .L1365 + bic r10, r3, #8128 + str r2, [fp, #-136] + bic r10, r10, #63 + add r2, r0, r1 + mov r6, r0 + mov r5, r1 + ldr r3, [r10, #24] + str r3, [fp, #-48] + mov r3, r7 + ldrh r8, [r3], #-12 + lsr r8, r0, r8 ldrh r3, [r3] + cmp r2, r3 + subls r7, r7, #308 + movls r9, #0 + bls .L1357 + mvn r9, #0 + b .L1355 +.L1362: + ldr r3, [r7, #3372] + mov r0, r6 + ldr r2, [r3, r8, lsl #2] + ldr r3, .L1365+4 + str r2, [fp, #-148] + ldrh r3, [r3] + str r3, [fp, #-144] mov r1, r3 - str r3, [sp, #8] bl __aeabi_uidivmod - ldr r3, [sp, #8] - ldr r2, [sp, #12] - str r1, [sp] - sub r5, r3, r1 - uxth r5, r5 - cmp r6, r5 - uxthcc r5, r6 + ldr r3, [fp, #-144] + ldr r2, [fp, #-148] + sub r4, r3, r1 + str r1, [fp, #-140] + ldr r0, [r7, #3308] + uxth r4, r4 + cmp r4, r5 + uxthhi r4, r5 cmp r2, #0 - cmpne r5, r3 + cmpne r3, r4 movne r1, #1 moveq r1, #0 - beq .L1467 - ldr r3, [r4, #3312] - add r0, sp, #16 - str r2, [sp, #20] + beq .L1359 + str r2, [fp, #-128] mov r2, #1 + str r0, [fp, #-124] mov r1, r2 - str r3, [sp, #24] - add r3, sp, #36 - str r3, [sp, #28] + sub r0, fp, #132 + sub r3, fp, #112 + str r3, [fp, #-120] bl FlashReadPages -.L1468: - lsl r3, r5, #9 - ldr r0, [r4, #3312] - mov r1, r10 +.L1360: + lsl r3, r4, #9 + ldr r0, [r7, #3308] mov r2, r3 - str r3, [sp, #8] - ldr r3, [sp] - sub r6, r6, r5 - add r8, r8, r5 - add fp, fp, #4 + str r3, [fp, #-144] + ldr r3, [fp, #-140] + sub r5, r5, r4 + ldr r1, [fp, #-136] + add r6, r6, r4 add r0, r0, r3, lsl #9 bl ftl_memcpy - mov r1, r7 - ldr r2, [r4, #3312] - ldr r0, .L1474+12 - add r7, r7, #1 + ldr r2, [r7, #3308] + mov r1, r8 + ldr r0, .L1365+8 bl FtlMapWritePage - ldr r3, [sp, #8] + ldr r2, [fp, #-136] + ldr r3, [fp, #-144] cmn r0, #1 + add r8, r8, #1 + add r3, r2, r3 mvneq r9, #0 - add r10, r10, r3 - b .L1465 -.L1467: - ldr r3, .L1474+16 - ldr r0, [r4, #3312] + str r3, [fp, #-136] +.L1357: + cmp r5, #0 + bne .L1362 +.L1355: + ldr r2, [fp, #-48] + ldr r3, [r10, #24] + cmp r2, r3 + beq .L1363 + bl __stack_chk_fail +.L1359: + ldr r3, .L1365+12 ldrh r2, [r3] bl ftl_memset - b .L1468 -.L1471: - add sp, sp, #108 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1475: + b .L1360 +.L1363: + mov r0, r9 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1366: .align 2 -.L1474: - .word __stack_chk_guard - .word .LANCHOR0+296 +.L1365: + .word .LANCHOR0+308 .word .LANCHOR0+258 - .word .LANCHOR0+3612 + .word .LANCHOR0+3608 .word .LANCHOR0+310 - .fnend .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 2 .global Ftl_save_ext_data @@ -9572,53 +10005,55 @@ FtlVendorPartWrite: .fpu softvfp .type Ftl_save_ext_data, %function Ftl_save_ext_data: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L1478 - ldr r2, .L1478+4 - ldr r1, [r3, #2644] - cmp r1, r2 - bxne lr - ldr r2, .L1478+8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r2, .L1369 + ldr r3, .L1369+4 + ldr r1, [r2, #2640] + cmp r1, r3 + ldmfdne sp, {fp, sp, pc} + ldr r3, .L1369+8 + add r2, r2, #2640 + str r3, [r2, #4] mov r1, #1 + ldr r3, [r2, #-60] mov r0, #0 - str r2, [r3, #2648] - ldr r2, [r3, #2584] - str r2, [r3, #2732] - ldr r2, [r3, #2588] - str r2, [r3, #2736] - ldr r2, [r3, #2580] - str r2, [r3, #2652] - ldr r2, [r3, #2568] - str r2, [r3, #2656] - ldr r2, [r3, #2560] - str r2, [r3, #2660] - ldr r2, [r3, #2576] - str r2, [r3, #2664] - ldr r2, [r3, #2604] - str r2, [r3, #2672] - ldr r2, [r3, #2612] - str r2, [r3, #2676] - ldr r2, [r3, #2564] - str r2, [r3, #2680] - ldr r2, [r3, #2572] - str r2, [r3, #2684] - ldr r2, [r3, #2616] - str r2, [r3, #2688] - ldr r2, [r3, #2620] - str r2, [r3, #2692] - ldr r2, .L1478+12 - b FtlVendorPartWrite -.L1479: + str r3, [r2, #88] + ldr r3, [r2, #-56] + str r3, [r2, #92] + ldr r3, [r2, #-64] + str r3, [r2, #8] + ldr r3, [r2, #-76] + str r3, [r2, #12] + ldr r3, [r2, #-84] + str r3, [r2, #16] + ldr r3, [r2, #-68] + str r3, [r2, #20] + ldr r3, [r2, #-40] + str r3, [r2, #28] + ldr r3, [r2, #-32] + str r3, [r2, #32] + ldr r3, [r2, #-80] + str r3, [r2, #36] + ldr r3, [r2, #-72] + str r3, [r2, #40] + ldr r3, [r2, #-28] + str r3, [r2, #44] + ldr r3, [r2, #-24] + str r3, [r2, #48] + bl FtlVendorPartWrite + ldmfd sp, {fp, sp, pc} +.L1370: .align 2 -.L1478: +.L1369: .word .LANCHOR0 .word 1179929683 - .word 1342177365 - .word .LANCHOR0+2644 - .fnend + .word 1342177369 .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 .global FtlEctTblFlush @@ -9627,37 +10062,37 @@ Ftl_save_ext_data: .fpu softvfp .type FtlEctTblFlush, %function FtlEctTblFlush: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1488 - movw r1, #3656 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L1376 + movw r1, #3652 ldrh r2, [r3, r1] cmp r2, #31 addls r2, r2, #1 - movhi r2, #32 strhls r2, [r3, r1] @ movhi - movls r2, #1 + ldr r2, [r3, #3348] + movls r1, #1 + movhi r1, #32 cmp r0, #0 - bne .L1482 - ldr r1, [r3, #3352] - ldr r0, [r1, #20] - ldr r1, [r1, #16] - add r2, r2, r0 - cmp r1, r2 - bcc .L1486 -.L1482: - push {r4, lr} - .save {r4, lr} + ldr ip, [r2, #16] + bne .L1373 + ldr r0, [r2, #20] + add r1, r1, r0 + cmp r1, ip + bhi .L1374 +.L1373: + ldr r1, .L1376+4 mov r0, #64 - ldr r2, [r3, #3352] - ldr r1, [r2, #16] - str r1, [r2, #20] - ldr r1, .L1488+4 str r1, [r2] - ldr r2, [r3, #3352] - ldr r3, .L1488+8 - ldrh r1, [r3] + str ip, [r2, #20] + movw r2, #3340 + ldrh r1, [r3, r2] + ldr r2, [r3, #3348] lsl r3, r1, #9 str r3, [r2, #12] ldr r3, [r2, #8] @@ -9667,18 +10102,14 @@ FtlEctTblFlush: str r3, [r2, #4] bl FtlVendorPartWrite bl Ftl_save_ext_data +.L1374: mov r0, #0 - pop {r4, pc} -.L1486: - mov r0, #0 - bx lr -.L1489: + ldmfd sp, {fp, sp, pc} +.L1377: .align 2 -.L1488: +.L1376: .word .LANCHOR0 .word 1112818501 - .word .LANCHOR0+3344 - .fnend .size FtlEctTblFlush, .-FtlEctTblFlush .align 2 .global sftl_vendor_write @@ -9687,14 +10118,21 @@ FtlEctTblFlush: .fpu softvfp .type sftl_vendor_write, %function sftl_vendor_write: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc add r0, r0, #256 - b FtlVendorPartWrite - .fnend + bl FtlVendorPartWrite + ldmfd sp, {fp, sp, pc} .size sftl_vendor_write, .-sftl_vendor_write + .section .rodata.str1.1 +.LC118: + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" + .text .align 2 .global FtlVendorPartRead .syntax unified @@ -9702,121 +10140,124 @@ sftl_vendor_write: .fpu softvfp .type FtlVendorPartRead, %function FtlVendorPartRead: - .fnstart @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1503 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r2 - ldr r5, .L1503+4 - .pad #108 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #108 - mov r7, r1 - add r1, r0, r1 - ldr r2, [r3] - str r3, [sp, #8] - str r2, [sp, #100] - ldrh r2, [r5] - cmp r1, r2 - mvnhi r9, #0 - bhi .L1491 - sub r5, r5, #296 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r6, .L1390 + bic r3, r3, #8128 + mov r9, r2 + bic r3, r3, #63 + str r3, [fp, #-136] + add r2, r0, r1 mov r8, r0 - add r3, r5, #308 - mov r9, #0 - ldrh r6, [r3] - lsr r6, r0, r6 - lsl fp, r6, #2 -.L1493: - cmp r7, #0 - bne .L1499 -.L1491: - ldr r3, [sp, #8] - mov r0, r9 - ldr r2, [sp, #100] - ldr r3, [r3] + mov r5, r1 + ldr r3, [r3, #24] + str r3, [fp, #-48] + mov r3, r6 + ldrh r7, [r3], #-12 + lsr r7, r0, r7 + ldrh r3, [r3] cmp r2, r3 - beq .L1500 - bl __stack_chk_fail -.L1499: - ldr r3, [r5, #3376] + subls r6, r6, #308 + movls r10, #0 + bls .L1381 + mvn r10, #0 + b .L1379 +.L1387: + ldr r2, .L1390+4 mov r0, r8 - ldr r3, [r3, fp] - str r3, [sp, #12] - ldr r3, .L1503+8 - ldrh r4, [r3] + ldr r3, [r6, #3372] + ldrh r4, [r2] + ldr r3, [r3, r7, lsl #2] mov r1, r4 + str r3, [fp, #-144] bl __aeabi_uidivmod sub r4, r4, r1 - ldr r3, [sp, #12] + ldr r3, [fp, #-144] uxth r4, r4 - str r1, [sp, #4] - cmp r7, r4 - uxthcc r4, r7 + str r1, [fp, #-140] + cmp r4, r5 + uxthhi r4, r5 cmp r3, #0 lsl r2, r4, #9 - str r2, [sp, #12] - beq .L1495 - ldr r2, [r5, #3312] - add r0, sp, #16 - str r3, [sp, #20] - str r3, [sp, #12] - str r2, [sp, #24] - add r2, sp, #36 - str r2, [sp, #28] + str r2, [fp, #-144] + beq .L1383 + ldr r2, [r6, #3308] + sub r0, fp, #132 + str r2, [fp, #-124] + sub r2, fp, #112 + str r2, [fp, #-120] mov r2, #1 mov r1, r2 + str r3, [fp, #-128] + str r3, [fp, #-148] bl FlashReadPages - ldr r2, [sp, #16] - ldr r3, [sp, #12] + ldr r2, [fp, #-132] + ldr r3, [fp, #-148] cmn r2, #1 - ldr r2, [r5, #3456] - mvneq r9, #0 + ldr r2, [r6, #3452] + mvneq r10, #0 cmp r2, #256 - bne .L1497 + bne .L1385 + ldr r0, .L1390+8 mov r2, r3 - mov r1, r6 - ldr r0, .L1503+12 + mov r1, r7 bl sftl_printk - ldr r2, [r5, #3312] - mov r1, r6 - ldr r0, .L1503+16 + ldr r2, [r6, #3308] + ldr r0, .L1390+12 + mov r1, r7 bl FtlMapWritePage -.L1497: - ldr r1, [r5, #3312] +.L1385: + ldr r1, [r6, #3308] lsl r2, r4, #9 - ldr r3, [sp, #4] - mov r0, r10 + ldr r3, [fp, #-140] + mov r0, r9 add r1, r1, r3, lsl #9 bl ftl_memcpy -.L1498: - add r6, r6, #1 - sub r7, r7, r4 +.L1386: + ldr r3, [fp, #-144] + add r7, r7, #1 + sub r5, r5, r4 add r8, r8, r4 - add r10, r10, r4, lsl #9 - add fp, fp, #4 - b .L1493 -.L1495: + add r9, r9, r3 +.L1381: + cmp r5, #0 + bne .L1387 +.L1379: + ldr r3, [fp, #-136] + ldr r2, [fp, #-48] + ldr r3, [r3, #24] + cmp r2, r3 + beq .L1388 + bl __stack_chk_fail +.L1383: lsl r2, r4, #9 mov r1, r3 - mov r0, r10 + mov r0, r9 bl ftl_memset - b .L1498 -.L1500: - add sp, sp, #108 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1504: + b .L1386 +.L1388: + mov r0, r10 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1391: .align 2 -.L1503: - .word __stack_chk_guard - .word .LANCHOR0+296 +.L1390: + .word .LANCHOR0+308 .word .LANCHOR0+258 .word .LC118 - .word .LANCHOR0+3612 - .fnend + .word .LANCHOR0+3608 .size FtlVendorPartRead, .-FtlVendorPartRead + .section .rodata.str1.1 +.LC119: + .ascii "no ect\000" + .text .align 2 .global FtlLoadEctTbl .syntax unified @@ -9824,41 +10265,42 @@ FtlVendorPartRead: .fpu softvfp .type FtlLoadEctTbl, %function FtlLoadEctTbl: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1394 + movw r5, #3340 mov r0, #64 - ldr r4, .L1508 - add r5, r4, #3344 - ldr r2, [r4, #3352] - ldrh r1, [r5] + ldr r2, [r4, #3348] + ldrh r1, [r4, r5] bl FtlVendorPartRead - ldr r3, [r4, #3352] + ldr r3, [r4, #3348] ldr r2, [r3] - ldr r3, .L1508+4 + ldr r3, .L1394+4 cmp r2, r3 - beq .L1506 - ldr r1, .L1508+8 - ldr r0, .L1508+12 + beq .L1393 + ldr r1, .L1394+8 + ldr r0, .L1394+12 bl sftl_printk - ldrh r2, [r5] + ldrh r2, [r4, r5] + ldr r0, [r4, #3348] mov r1, #0 - ldr r0, [r4, #3352] lsl r2, r2, #9 bl ftl_memset -.L1506: +.L1393: mov r0, #0 - pop {r4, r5, r6, pc} -.L1509: + ldmfd sp, {r4, r5, fp, sp, pc} +.L1395: .align 2 -.L1508: +.L1394: .word .LANCHOR0 .word 1112818501 .word .LC119 .word .LC77 - .fnend .size FtlLoadEctTbl, .-FtlLoadEctTbl .align 2 .global Ftl_load_ext_data @@ -9867,71 +10309,66 @@ FtlLoadEctTbl: .fpu softvfp .type Ftl_load_ext_data, %function Ftl_load_ext_data: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1398 mov r1, #1 - ldr r4, .L1514 mov r0, #0 - ldr r2, .L1514+4 + ldr r5, .L1398+4 + add r2, r4, #2640 bl FtlVendorPartRead - ldr r5, .L1514+8 - ldr r3, [r4, #2644] + ldr r3, [r4, #2640] cmp r3, r5 - beq .L1511 + beq .L1397 + add r0, r4, #2640 mov r2, #512 mov r1, #0 - ldr r0, .L1514+4 bl ftl_memset - str r5, [r4, #2644] -.L1511: - ldr r3, [r4, #2644] - cmp r3, r5 - bne .L1512 - ldr r3, [r4, #2732] - str r3, [r4, #2584] - ldr r3, [r4, #2736] - str r3, [r4, #2588] - ldr r3, [r4, #2652] + str r5, [r4, #2640] +.L1397: + ldr r2, [r4, #2672] + str r2, [r4, #2608] + ldr r2, [r4, #2676] + str r2, [r4, #2560] + ldr r2, [r4, #2680] + ldr r3, [r4, #2728] + str r2, [r4, #2568] + ldr r2, [r4, #2684] str r3, [r4, #2580] - ldr r3, [r4, #2656] - str r3, [r4, #2568] - ldr r3, [r4, #2660] - str r3, [r4, #2560] - ldr r3, [r4, #2664] + str r2, [r4, #2612] + ldr r3, [r4, #2732] + ldr r2, [r4, #2688] + str r3, [r4, #2584] + str r2, [r4, #2616] + ldr r3, [r4, #2648] + ldr r2, .L1398+8 str r3, [r4, #2576] - ldr r3, [r4, #2672] - str r3, [r4, #2604] - ldr r3, [r4, #2676] - str r3, [r4, #2612] - ldr r3, [r4, #2680] + ldr r3, [r4, #2652] str r3, [r4, #2564] - ldr r3, [r4, #2684] + ldr r3, [r4, #2656] + str r3, [r4, #2556] + ldr r3, [r4, #2660] + ldrh r2, [r2] str r3, [r4, #2572] - ldr r3, [r4, #2688] - str r3, [r4, #2616] - ldr r3, [r4, #2692] - str r3, [r4, #2620] -.L1512: - ldr r3, .L1514+12 - ldr r0, [r4, #2600] + ldr r0, [r4, #2596] + ldr r3, [r4, #2668] ldrh r1, [r4, #240] - ldrh r2, [r3] - ldr r3, [r4, #2604] + str r3, [r4, #2600] mla r0, r0, r2, r3 bl __aeabi_uidiv - str r0, [r4, #2608] - pop {r4, r5, r6, pc} -.L1515: + str r0, [r4, #2604] + ldmfd sp, {r4, r5, fp, sp, pc} +.L1399: .align 2 -.L1514: +.L1398: .word .LANCHOR0 - .word .LANCHOR0+2644 .word 1179929683 .word .LANCHOR0+292 - .fnend .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 .global sftl_vendor_read @@ -9940,13 +10377,16 @@ Ftl_load_ext_data: .fpu softvfp .type sftl_vendor_read, %function sftl_vendor_read: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc add r0, r0, #256 - b FtlVendorPartRead - .fnend + bl FtlVendorPartRead + ldmfd sp, {fp, sp, pc} .size sftl_vendor_read, .-sftl_vendor_read .align 2 .global FtlMapBlkWriteDump_data @@ -9955,53 +10395,58 @@ sftl_vendor_read: .fpu softvfp .type FtlMapBlkWriteDump_data, %function FtlMapBlkWriteDump_data: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc ldr r3, [r0, #36] + mov r4, r0 cmp r3, #0 - bxeq lr - mov r3, #0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - str r3, [r0, #36] - mov r5, r0 - ldr r3, .L1524 + ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} ldrh r6, [r0, #6] - ldr r2, [r0, #24] - ldr r1, [r3, #3336] - mov r4, r3 - ldr r0, [r3, #3308] + mov r2, #0 + ldr r5, .L1408 sub r6, r6, #1 + str r2, [r0, #36] + ldr r3, [r0, #24] uxth r6, r6 - str r1, [r3, #3468] - str r0, [r3, #3464] - ldr r2, [r2, r6, lsl #2] - cmp r2, #0 - str r2, [r3, #3460] - beq .L1519 + ldr r0, [r5, #3304] + ldr r2, [r5, #3332] + str r0, [r5, #3460] + str r2, [r5, #3464] + ldr r3, [r3, r6, lsl #2] + str r3, [r5, #3456] + cmp r3, #0 + beq .L1403 mov r2, #1 - add r0, r3, #3456 + ldr r0, .L1408+4 mov r1, r2 bl FlashReadPages -.L1520: - ldr r2, [r4, #3464] +.L1404: + ldr r2, [r5, #3460] mov r1, r6 - mov r0, r5 - pop {r4, r5, r6, lr} - b FtlMapWritePage -.L1519: + mov r0, r4 + bl FtlMapWritePage + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1403: movw r3, #310 mov r1, #255 - ldrh r2, [r4, r3] + ldrh r2, [r5, r3] bl ftl_memset - b .L1520 -.L1525: + b .L1404 +.L1409: .align 2 -.L1524: +.L1408: .word .LANCHOR0 - .fnend + .word .LANCHOR0+3452 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data + .section .rodata.str1.1 +.LC120: + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" + .text .align 2 .global FtlVpcTblFlush .syntax unified @@ -10009,179 +10454,178 @@ FtlMapBlkWriteDump_data: .fpu softvfp .type FtlVpcTblFlush, %function FtlVpcTblFlush: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1420 mov r6, #0 - ldr r4, .L1536 mov r1, #255 - ldr r5, .L1536+4 - ldr r3, [r4, #3304] + add r5, r4, #2624 add r9, r4, #304 - ldr r7, [r4, #3336] - mov fp, r9 - sub r8, r5, #160 - add r10, r9, #6 - str r3, [r4, #3464] - movw r3, #2628 - ldrh r3, [r4, r3] - str r7, [r4, #3468] - str r6, [r7, #12] + sub r8, r5, #156 + ldr r7, [r4, #3332] + ldr r3, [r4, #3300] + str r3, [r4, #3460] + ldrh r3, [r5] + str r7, [r4, #3464] strh r3, [r7, #2] @ movhi - ldr r3, .L1536+8 + ldr r3, .L1420+4 strh r3, [r7] @ movhi - ldr r3, [r4, #2636] - str r6, [r7, #8] - ldrh r2, [r4, #26] + str r6, [r7, #12] + ldr r3, [r4, #2632] str r3, [r7, #4] - ldr r3, .L1536+12 + ldr r3, .L1420+8 str r3, [r4, #2468] - ldr r3, .L1536+16 + ldr r3, .L1420+12 str r3, [r4, #2472] ldrh r3, [r5, #6] - strh r3, [r5, #-152] @ movhi + str r6, [r7, #8] + strh r3, [r5, #-148] @ movhi ldrh r3, [r4, #254] strb r3, [r4, #2478] ldrh r3, [r4, #24] - strh r3, [r5, #-146] @ movhi + ldrh r2, [r4, #26] + strh r3, [r5, #-142] @ movhi ldrb r3, [r4, #30] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 - ldrh r2, [r4, #78] - strh r3, [r5, #-144] @ movhi + strh r3, [r5, #-140] @ movhi ldrb r3, [r4, #32] @ zero_extendqisi2 strb r3, [r4, #2479] ldrh r3, [r4, #76] - strh r3, [r5, #-142] @ movhi + ldrh r2, [r4, #78] + strh r3, [r5, #-138] @ movhi ldrb r3, [r4, #82] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 - strh r3, [r5, #-140] @ movhi + strh r3, [r5, #-136] @ movhi ldrb r3, [r4, #84] @ zero_extendqisi2 strb r3, [r4, #2480] ldrh r3, [r4, #124] + strh r3, [r5, #-134] @ movhi ldrh r2, [r4, #126] - ldr r0, [r4, #3464] - strh r3, [r5, #-138] @ movhi ldrb r3, [r4, #130] @ zero_extendqisi2 + ldr r0, [r4, #3460] orr r3, r3, r2, lsl #6 - strh r3, [r5, #-136] @ movhi + strh r3, [r5, #-132] @ movhi ldrb r3, [r4, #132] @ zero_extendqisi2 strb r3, [r4, #2481] - ldr r3, [r4, #2600] - str r3, [r4, #2500] - ldr r3, [r4, #2592] - str r3, [r4, #2508] ldr r3, [r4, #2596] + str r3, [r4, #2500] + ldr r3, [r4, #2588] + str r3, [r4, #2508] + ldr r3, [r4, #2592] str r3, [r4, #2504] movw r3, #310 ldrh r2, [r4, r3] bl ftl_memset mov r1, r8 mov r2, #48 - ldr r0, [r4, #3464] - movw r8, #65535 + ldr r0, [r4, #3460] bl ftl_memcpy ldrh r2, [r4, #240] - ldr r0, [r4, #3464] + ldr r0, [r4, #3460] + movw r8, #65535 ldr r1, [r4, #72] lsl r2, r2, #1 add r0, r0, #48 bl ftl_memcpy mov r0, r6 bl FtlUpdateVaildLpn -.L1527: - ldr r3, [r4, #3304] +.L1411: ldrh r1, [r5, #2] ldrh r2, [r5] - str r3, [r4, #3464] - ldr r3, [r4, #3336] - str r3, [r4, #3468] - orr r3, r1, r2, lsl #10 + ldr r3, [r4, #3300] str r3, [r4, #3460] + ldr r3, [r4, #3332] + str r3, [r4, #3464] + orr r3, r1, r2, lsl #10 + str r3, [r4, #3456] ldrh r3, [r9] sub r3, r3, #1 cmp r1, r3 - blt .L1528 + blt .L1412 mov r3, #0 ldrh r8, [r5, #4] strh r3, [r5, #2] @ movhi strh r2, [r5, #4] @ movhi bl FtlFreeSysBlkQueueOut - ldr r3, [r4, #2592] - strh r0, [r5] @ movhi + ldr r3, [r4, #2588] + str r3, [r4, #2632] add r2, r3, #1 - str r3, [r4, #2636] - str r2, [r4, #2592] + strh r0, [r5] @ movhi + str r2, [r4, #2588] lsl r2, r0, #10 - str r2, [r4, #3460] + str r2, [r4, #3456] str r3, [r7, #4] strh r0, [r7, #2] @ movhi -.L1528: - ldrh r1, [r10] - ldr r0, [r4, #3304] +.L1412: + ldr r3, .L1420+16 + ldr r0, [r4, #3300] + ldrh r1, [r3] bl js_hash mov r3, #1 str r0, [r7, #12] mov r2, r3 mov r1, r3 - ldr r0, .L1536+20 + ldr r0, .L1420+20 bl FlashProgPages ldrh r3, [r5, #2] - ldr r2, [r4, #3456] + ldr r2, [r4, #3452] add r3, r3, #1 - uxth r3, r3 cmn r2, #1 + uxth r3, r3 strh r3, [r5, #2] @ movhi - bne .L1529 + bne .L1413 cmp r3, #1 - bne .L1530 - movw r2, #1138 - ldr r1, .L1536+24 - ldr r0, .L1536+28 + bne .L1415 + ldr r1, .L1420+24 + movw r2, #1145 + ldr r0, .L1420+28 bl sftl_printk -.L1530: ldrh r3, [r5, #2] - add r6, r6, #1 - uxth r6, r6 cmp r3, #1 - ldrheq r3, [fp] + ldrheq r3, [r9] subeq r3, r3, #1 strheq r3, [r5, #2] @ movhi +.L1415: + add r6, r6, #1 + uxth r6, r6 cmp r6, #3 - bls .L1527 + bls .L1411 + ldr r1, [r4, #3456] mov r2, r6 - ldr r1, [r4, #3460] - ldr r0, .L1536+32 + ldr r0, .L1420+32 bl sftl_printk -.L1533: - b .L1533 -.L1529: +.L1418: + b .L1418 +.L1413: cmp r2, #256 cmpne r3, #1 - beq .L1527 + beq .L1411 movw r3, #65535 cmp r8, r3 - beq .L1534 - mov r1, #1 + beq .L1419 mov r0, r8 + mov r1, #1 bl FtlFreeSysBlkQueueIn -.L1534: +.L1419: mov r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1537: + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1421: .align 2 -.L1536: +.L1420: .word .LANCHOR0 - .word .LANCHOR0+2628 .word -3932 .word 1179929683 - .word 1342177365 - .word .LANCHOR0+3456 + .word 1342177369 + .word .LANCHOR0+310 + .word .LANCHOR0+3452 .word .LANCHOR1+471 .word .LC8 .word .LC120 - .fnend .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlSysFlush @@ -10190,18 +10634,19 @@ FtlVpcTblFlush: .fpu softvfp .type FtlSysFlush, %function FtlSysFlush: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc bl l2p_flush mov r0, #1 bl FtlEctTblFlush bl FtlVpcTblFlush mov r0, #0 - pop {r4, pc} - .fnend + ldmfd sp, {fp, sp, pc} .size FtlSysFlush, .-FtlSysFlush .align 2 .global sftl_deinit @@ -10210,26 +10655,25 @@ FtlSysFlush: .fpu softvfp .type sftl_deinit, %function sftl_deinit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1546 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L1425 ldr r3, [r3] cmp r3, #1 - bne .L1543 - push {r4, lr} - .save {r4, lr} + bne .L1424 bl FtlSysFlush +.L1424: mov r0, #0 - pop {r4, pc} -.L1543: - mov r0, #0 - bx lr -.L1547: + ldmfd sp, {fp, sp, pc} +.L1426: .align 2 -.L1546: +.L1425: .word .LANCHOR2 - .fnend .size sftl_deinit, .-sftl_deinit .align 2 .global sftl_discard @@ -10238,112 +10682,115 @@ sftl_deinit: .fpu softvfp .type sftl_discard, %function sftl_discard: - .fnstart @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #20 - sub sp, sp, #20 - ldr r8, .L1566 - ldr r4, .L1566+4 - ldr r3, [r8] - str r3, [sp, #12] - ldr r3, [r4, #340] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #16 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r8, .L1444 + bic r7, r3, #8128 + mov r9, r0 + bic r7, r7, #63 + mov r4, r1 + ldr r3, [r7, #24] + str r3, [fp, #-40] + ldr r3, [r8, #340] cmp r3, r1 cmpcs r3, r0 - bls .L1558 + bls .L1437 add r2, r0, r1 - mov r7, r0 cmp r3, r2 - mov r5, r1 - bcc .L1558 + bcc .L1437 cmp r1, #31 - bhi .L1550 -.L1555: + bhi .L1429 +.L1434: mov r0, #0 -.L1548: - ldr r2, [sp, #12] - ldr r3, [r8] +.L1427: + ldr r2, [fp, #-40] + ldr r3, [r7, #24] cmp r2, r3 - beq .L1556 + beq .L1435 bl __stack_chk_fail -.L1550: +.L1429: movw r3, #258 - ldrh r6, [r4, r3] - mov r1, r6 + ldrh r5, [r8, r3] + mov r1, r5 bl __aeabi_uidiv - smulbb r3, r0, r6 - mov r9, r0 - sub r7, r7, r3 - uxth r7, r7 - cmp r7, #0 - beq .L1551 - sub r6, r6, r7 - add r9, r0, #1 - cmp r6, r5 - movcs r6, r5 - uxth r6, r6 - sub r5, r5, r6 -.L1551: - ldr r6, .L1566+8 + mov r6, r0 + smulbb r0, r0, r5 + sub r9, r9, r0 + uxth r9, r9 + cmp r9, #0 + beq .L1430 + sub r5, r5, r9 + add r6, r6, #1 + cmp r5, r4 + movcs r5, r4 + uxth r5, r5 + sub r4, r4, r5 +.L1430: + ldr r5, .L1444+4 mvn r3, #0 - str r3, [sp, #8] - mov r7, r6 -.L1552: - ldrh r3, [r6] - cmp r5, r3 - bcs .L1554 - ldr r3, [r4, #3660] + str r3, [fp, #-44] +.L1431: + ldrh r3, [r5] + cmp r3, r4 + bls .L1433 + ldr r3, [r8, #3656] cmp r3, #32 - bls .L1555 - mov r5, #0 - str r5, [r4, #3660] + bls .L1434 + mov r4, #0 + str r4, [r8, #3656] bl l2p_flush bl FtlVpcTblFlush - b .L1555 -.L1554: + b .L1434 +.L1433: + sub r1, fp, #48 + mov r0, r6 mov r2, #0 - add r1, sp, #4 - mov r0, r9 bl log2phys - ldr r3, [sp, #4] + ldr r3, [fp, #-48] cmn r3, #1 - beq .L1553 - ldr r3, [r4, #3660] + beq .L1432 + ldr r3, [r8, #3656] + sub r1, fp, #44 mov r2, #1 - add r1, sp, #8 - mov r0, r9 + mov r0, r6 add r3, r3, #1 - str r3, [r4, #3660] - ldr r3, [r4, #2564] + str r3, [r8, #3656] + ldr r3, [r8, #2560] add r3, r3, #1 - str r3, [r4, #2564] + str r3, [r8, #2560] bl log2phys - ldr r0, [sp, #4] + ldr r0, [fp, #-48] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl decrement_vpc_count -.L1553: - ldrh r3, [r7] - add r9, r9, #1 - sub r5, r5, r3 - b .L1552 -.L1558: +.L1432: + ldrh r3, [r5] + add r6, r6, #1 + sub r4, r4, r3 + b .L1431 +.L1437: mvn r0, #0 - b .L1548 -.L1556: - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L1567: + b .L1427 +.L1435: + sub sp, fp, #36 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1445: .align 2 -.L1566: - .word __stack_chk_guard +.L1444: .word .LANCHOR0 .word .LANCHOR0+258 - .fnend .size sftl_discard, .-sftl_discard + .section .rodata.str1.1 +.LC121: + .ascii "FtlCheckVpc %x = %x %x\012\000" + .text .align 2 .global FtlVpcCheckAndModify .syntax unified @@ -10351,130 +10798,130 @@ sftl_discard: .fpu softvfp .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: - .fnstart @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r4, .L1461 + bic r7, r3, #8128 + ldr r1, .L1461+4 + bic r7, r7, #63 + ldr r0, .L1461+8 mov r5, #0 - ldr r7, .L1584 - ldr r4, .L1584+4 - ldr r3, [r7] - ldr r1, .L1584+8 - ldr r0, .L1584+12 - str r3, [sp, #4] + ldr r3, [r7, #24] + str r3, [fp, #-48] bl sftl_printk ldrh r2, [r4, #242] mov r1, #0 - ldr r0, [r4, #3356] + ldr r0, [r4, #3352] lsl r2, r2, #1 bl ftl_memset -.L1569: - ldr r3, [r4, #2556] - cmp r5, r3 - bcc .L1571 - ldr r9, .L1584+16 +.L1447: + ldr r3, [r4, #2552] + cmp r3, r5 + bhi .L1449 + ldr r9, .L1461+12 mov r8, #0 - ldr r10, .L1584+20 - ldr fp, .L1584+8 -.L1572: + ldr r10, .L1461+16 +.L1450: ldrh r3, [r4, #240] uxth r5, r8 cmp r3, r5 - bhi .L1578 + bhi .L1456 bl l2p_flush bl FtlVpcTblFlush - ldr r2, [sp, #4] - ldr r3, [r7] + ldr r2, [fp, #-48] + ldr r3, [r7, #24] cmp r2, r3 - beq .L1579 + beq .L1457 bl __stack_chk_fail -.L1571: - mov r2, #0 - mov r1, sp +.L1449: + sub r1, fp, #52 mov r0, r5 + mov r2, #0 bl log2phys - ldr r0, [sp] + ldr r0, [fp, #-52] cmn r0, #1 - beq .L1570 + beq .L1448 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r2, [r4, #3356] + ldr r2, [r4, #3352] lsl r0, r0, #1 ldrh r3, [r2, r0] add r3, r3, #1 strh r3, [r2, r0] @ movhi -.L1570: +.L1448: add r5, r5, #1 - b .L1569 -.L1578: + b .L1447 +.L1456: uxth r1, r8 ldr r3, [r4, #72] movw r0, #65535 lsl r6, r1, #1 ldrh r2, [r3, r6] - ldr r3, [r4, #3356] + ldr r3, [r4, #3352] ldrh r3, [r3, r6] cmp r2, r0 cmpne r2, r3 - beq .L1574 + beq .L1452 mov r0, r9 bl sftl_printk ldrh r3, [r4, #24] cmp r3, r5 - beq .L1574 + beq .L1452 ldrh r3, [r4, #124] cmp r3, r5 - beq .L1574 + beq .L1452 ldrh r3, [r4, #76] cmp r3, r5 - beq .L1574 + beq .L1452 ldr r3, [r4, #72] - ldrh r2, [r3, r6] - cmp r2, #0 - ldr r2, [r4, #3356] + ldr r2, [r4, #3352] + ldrh r1, [r3, r6] ldrh r2, [r2, r6] + cmp r1, #0 strh r2, [r3, r6] @ movhi - bne .L1576 + bne .L1454 mov r1, r5 mov r0, r10 bl List_remove_node ldrh r3, [r4, #224] cmp r3, #0 - bne .L1577 - movw r2, #2323 - mov r1, fp - ldr r0, .L1584+24 + bne .L1455 + ldr r1, .L1461+4 + movw r2, #2330 + ldr r0, .L1461+20 bl sftl_printk -.L1577: +.L1455: ldrh r3, [r4, #224] mov r0, r5 sub r3, r3, #1 strh r3, [r4, #224] @ movhi bl INSERT_DATA_LIST -.L1574: +.L1452: add r8, r8, #1 - b .L1572 -.L1576: + b .L1450 +.L1454: mov r0, r5 bl update_vpc_list - b .L1574 -.L1579: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1585: + b .L1452 +.L1457: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1462: .align 2 -.L1584: - .word __stack_chk_guard +.L1461: .word .LANCHOR0 .word .LANCHOR1+486 .word .LC111 .word .LC121 .word .LANCHOR0+2532 .word .LC8 - .fnend .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 .global allocate_new_data_superblock @@ -10483,73 +10930,80 @@ FtlVpcCheckAndModify: .fpu softvfp .type allocate_new_data_superblock, %function allocate_new_data_superblock: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - ldr r4, .L1597 - ldrh r5, [r0] - ldrh r3, [r4, #240] - cmp r3, r5 - bcs .L1587 - movw r2, #2759 - ldr r1, .L1597+4 - ldr r0, .L1597+8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r6, .L1473 + mov r5, r0 + ldrh r4, [r0] + ldrh r3, [r6, #240] + cmp r3, r4 + bcs .L1464 + ldr r1, .L1473+4 + movw r2, #2766 + ldr r0, .L1473+8 bl sftl_printk -.L1587: +.L1464: movw r3, #65535 - cmp r5, r3 - beq .L1588 - ldr r2, [r4, #72] - lsl r3, r5, #1 - mov r0, r5 + cmp r4, r3 + beq .L1465 + ldr r2, [r6, #72] + lsl r3, r4, #1 + mov r0, r4 ldrh r3, [r2, r3] cmp r3, #0 - beq .L1589 + beq .L1466 bl INSERT_DATA_LIST -.L1588: +.L1465: mov r3, #1 - strb r3, [r6, #8] - movw r3, #3442 - ldrh r0, [r4, r3] + strb r3, [r5, #8] + movw r3, #3438 + ldrh r0, [r6, r3] movw r3, #65535 cmp r0, r3 - beq .L1590 - cmp r5, r0 - bne .L1591 - ldr r2, [r4, #72] - lsl r3, r0, #1 - ldrh r3, [r2, r3] + beq .L1467 + cmp r0, r4 + bne .L1468 + ldr r3, [r6, #72] + lsl r4, r4, #1 + ldrh r3, [r3, r4] cmp r3, #0 - beq .L1592 -.L1591: + beq .L1469 +.L1468: bl update_vpc_list -.L1592: +.L1469: + movw r3, #3438 mvn r2, #0 - movw r3, #3442 - strh r2, [r4, r3] @ movhi -.L1590: - mov r0, r6 + strh r2, [r6, r3] @ movhi +.L1467: + mov r0, r5 bl allocate_data_superblock bl l2p_flush mov r0, #0 bl FtlEctTblFlush bl FtlVpcTblFlush mov r0, #0 - pop {r4, r5, r6, pc} -.L1589: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1466: bl INSERT_FREE_LIST - b .L1588 -.L1598: + b .L1465 +.L1474: .align 2 -.L1597: +.L1473: .word .LANCHOR0 .word .LANCHOR1+507 .word .LC8 - .fnend .size allocate_new_data_superblock, .-allocate_new_data_superblock + .section .rodata.str1.1 +.LC122: + .ascii "FtlProgPages error %x = %d\012\000" +.LC123: + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" + .text .align 2 .global FtlProgPages .syntax unified @@ -10557,46 +11011,37 @@ allocate_new_data_superblock: .fpu softvfp .type FtlProgPages, %function FtlProgPages: - .fnstart @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r3 - ldr r6, .L1614 - .pad #20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #20 + push {lr} + bl __gnu_mcount_nc + mov r5, r3 + mov r3, sp + bic r6, r3, #8128 + ldr r9, .L1493 + bic r6, r6, #63 mov r7, #0 + mov r8, r7 mov r2, #0 - ldr fp, .L1614+4 mov r4, r0 - ldr r3, [r6] - mov r10, r1 - ldr r9, .L1614+8 - str r3, [sp, #12] + str r1, [fp, #-56] + ldr r3, [r6, #24] + str r3, [fp, #-48] ldrb r3, [r5, #9] @ zero_extendqisi2 bl FlashProgPages -.L1600: - cmp r7, r10 - bne .L1607 - ldr r3, .L1614+8 - ldrb r2, [r5, #6] @ zero_extendqisi2 - ldrh r3, [r3, #232] - cmp r2, r3 - bcc .L1599 - mov r2, #1000 - ldr r1, .L1614+12 - ldr r0, .L1614+16 - bl sftl_printk -.L1599: - ldr r2, [sp, #12] - ldr r3, [r6] - cmp r2, r3 - beq .L1609 - bl __stack_chk_fail -.L1602: +.L1476: + ldr r3, [fp, #-56] + cmp r8, r3 + beq .L1482 + ldr r10, .L1493+4 + b .L1483 +.L1478: ldr r1, [r4, #4] - mov r0, fp + mov r0, r10 bl sftl_printk ldr r0, [r4, #4] ubfx r0, r0, #10, #16 @@ -10604,77 +11049,93 @@ FtlProgPages: bl decrement_vpc_count ldrh r3, [r5, #4] cmp r3, #0 - bne .L1601 + bne .L1477 mov r0, r5 bl allocate_new_data_superblock -.L1601: +.L1477: mov r0, r5 + mov r7, #1 bl get_new_active_ppa - mov r2, #0 str r0, [r4, #4] - str r0, [sp, #8] - mov r1, #1 + str r0, [fp, #-52] + mov r2, #0 ldrb r3, [r5, #9] @ zero_extendqisi2 mov r0, r4 + mov r1, #1 bl FlashProgPages -.L1607: +.L1483: ldr r2, [r4] cmn r2, #1 cmpne r2, #256 - beq .L1602 + beq .L1478 ldrb r2, [r5, #6] @ zero_extendqisi2 ldrh r3, [r9, #232] cmp r2, r3 - bcc .L1603 - movw r2, #985 - ldr r1, .L1614+12 - ldr r0, .L1614+16 + bcc .L1479 + ldr r1, .L1493+8 + movw r2, #986 + ldr r0, .L1493+12 bl sftl_printk -.L1603: +.L1479: ldr r3, [r4, #4] - add r1, sp, #16 - mov r2, #1 + sub r1, fp, #52 ldr r0, [r4, #16] - str r3, [r1, #-8]! + mov r2, #1 + str r3, [fp, #-52] bl log2phys ldr r3, [r4, #12] - ldr r3, [r3, #12] - ubfx r0, r3, #10, #16 - str r3, [sp, #4] + ldr r0, [r3, #12] + cmn r0, #1 + beq .L1480 + ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, [sp, #4] - mov r8, r0 - cmn r3, #1 - beq .L1604 ldr r2, [r9, #72] lsl r3, r0, #1 + mov r10, r0 ldrh r2, [r2, r3] cmp r2, #0 - bne .L1605 + bne .L1481 mov r1, r0 - ldr r0, .L1614+20 + ldr r0, .L1493+16 bl sftl_printk -.L1605: - mov r0, r8 +.L1481: + mov r0, r10 bl decrement_vpc_count -.L1604: - add r7, r7, #1 +.L1480: + add r8, r8, #1 add r4, r4, #20 - b .L1600 -.L1609: - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1615: + b .L1476 +.L1482: + cmp r7, #0 + beq .L1484 + bl FtlSysFlush +.L1484: + ldr r3, .L1493 + ldrb r2, [r5, #6] @ zero_extendqisi2 + ldrh r3, [r3, #232] + cmp r2, r3 + bcc .L1475 + ldr r1, .L1493+8 + movw r2, #1005 + ldr r0, .L1493+12 + bl sftl_printk +.L1475: + ldr r2, [fp, #-48] + ldr r3, [r6, #24] + cmp r2, r3 + beq .L1486 + bl __stack_chk_fail +.L1486: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1494: .align 2 -.L1614: - .word __stack_chk_guard - .word .LC122 +.L1493: .word .LANCHOR0 + .word .LC122 .word .LANCHOR1+536 .word .LC8 .word .LC123 - .fnend .size FtlProgPages, .-FtlProgPages .align 2 .global FtlGcFreeTempBlock @@ -10683,98 +11144,102 @@ FtlProgPages: .fpu softvfp .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r6, .L1642 - ldr r4, .L1642+4 - ldr r3, [r6] + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #20 + push {lr} + bl __gnu_mcount_nc + mov r3, sp + ldr r4, .L1520 + bic r6, r3, #8128 + bic r6, r6, #63 ldrh r2, [r4, #124] - str r3, [sp, #4] + ldr r3, [r6, #24] + str r3, [fp, #-48] movw r3, #302 ldrh r1, [r4, r3] movw r3, #65535 cmp r2, r3 - bne .L1617 -.L1624: + bne .L1496 +.L1503: ldrh r2, [r4, #124] mov r3, #0 - str r3, [r4, #3448] + str r3, [r4, #3444] movw r3, #65535 cmp r2, r3 - bne .L1638 -.L1618: + bne .L1517 +.L1497: mov r0, #0 - b .L1616 -.L1617: + b .L1495 +.L1496: + ldr r5, .L1520+4 cmp r0, #0 - ldr r5, .L1642+8 - beq .L1620 + beq .L1499 ldrh r2, [r5, #4] cmp r2, r3 - beq .L1621 -.L1622: + beq .L1500 +.L1501: mov r1, #2 -.L1620: - ldr r0, .L1642+12 +.L1499: + ldr r0, .L1520+8 bl FtlGcScanTempBlk ldrh r2, [r5, #4] movw r3, #65535 - str r0, [sp] + str r0, [fp, #-52] cmp r2, r3 movne r0, #1 - beq .L1624 -.L1616: - ldr r2, [sp, #4] - ldr r3, [r6] + beq .L1503 +.L1495: + ldr r2, [fp, #-48] + ldr r3, [r6, #24] cmp r2, r3 - beq .L1633 + beq .L1512 bl __stack_chk_fail -.L1621: +.L1500: mov r3, #0 strh r3, [r5, #4] @ movhi ldrh r3, [r4, #224] cmp r3, #17 - bhi .L1622 - b .L1620 -.L1638: - movw r3, #3208 - ldrb r1, [r4, #131] @ zero_extendqisi2 + bhi .L1501 + b .L1499 +.L1517: + movw r3, #3204 + movw r1, #302 ldrh r2, [r4, r3] - movw r3, #302 - ldrh r3, [r4, r3] - mul r3, r3, r1 + ldrh r1, [r4, r1] + ldrb r3, [r4, #131] @ zero_extendqisi2 + mul r3, r1, r3 cmp r2, r3 - beq .L1625 + beq .L1504 + ldr r1, .L1520+12 mov r2, #164 - ldr r1, .L1642+16 - ldr r0, .L1642+20 + ldr r0, .L1520+16 bl sftl_printk -.L1625: +.L1504: movw r0, #302 - ldrb r2, [r4, #131] @ zero_extendqisi2 - ldrh r0, [r4, r0] - mov r5, #0 ldrh r3, [r4, #124] + ldrb r2, [r4, #131] @ zero_extendqisi2 + mov r5, #0 + ldrh r0, [r4, r0] mov r10, #12 - ldr r1, [r4, #72] - ldr r9, .L1642+24 - smulbb r2, r2, r0 lsl r3, r3, #1 + ldr r1, [r4, #72] + ldr r9, .L1520+20 + smulbb r2, r2, r0 strh r2, [r1, r3] @ movhi - movw r3, #3208 - ldr r2, [r4, #2580] + movw r3, #3204 + ldr r2, [r4, #2576] ldrh r3, [r4, r3] add r3, r3, r2 - str r3, [r4, #2580] -.L1626: + str r3, [r4, #2576] +.L1505: ldrh r2, [r9] uxth r3, r5 cmp r2, r3 - bhi .L1630 + bhi .L1509 movw r0, #65535 bl decrement_vpc_count ldrh r0, [r4, #124] @@ -10782,85 +11247,84 @@ FtlGcFreeTempBlock: lsl r3, r0, #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L1631 + beq .L1510 bl INSERT_DATA_LIST -.L1632: - ldr r7, .L1642+28 - movw r3, #3208 - mvn r8, #0 +.L1511: + movw r3, #3204 mov r5, #0 + mvn r7, #0 + strh r7, [r4, #124] @ movhi + strh r5, [r4, r3] @ movhi + movw r3, #3196 strh r5, [r4, r3] @ movhi - strh r5, [r7] @ movhi - sub r7, r7, #576 - strh r8, [r4, #124] @ movhi bl l2p_flush bl FtlVpcTblFlush - ldrh r3, [r7] + movw r3, #2620 ldrh r2, [r4, #224] - strh r8, [r4, #172] @ movhi + ldrh r3, [r4, r3] + strh r7, [r4, #172] @ movhi add r3, r3, r3, lsl #1 - cmp r2, r3, asr #2 + cmp r2, r3, lsr #2 + ldrgt r3, .L1520+24 movgt r2, #20 - movwgt r3, #3156 - strhgt r2, [r4, r3] @ movhi - b .L1618 -.L1630: + strhgt r2, [r3] @ movhi + b .L1497 +.L1509: uxth r8, r5 - ldr fp, [r4, #3204] - ldr r3, [r4, #2556] + ldr r3, [r4, #3200] + ldr r2, [r4, #2552] mul r8, r10, r8 - add r7, fp, r8 + add r7, r3, r8 ldr r0, [r7, #8] - cmp r0, r3 - bcc .L1627 -.L1640: + cmp r0, r2 + bcc .L1506 +.L1518: ldrh r0, [r4, #124] - b .L1641 -.L1627: + b .L1519 +.L1506: mov r2, #0 - mov r1, sp + sub r1, fp, #52 + str r3, [fp, #-56] bl log2phys - ldr r0, [fp, r8] - ldr r3, [sp] - cmp r0, r3 - bne .L1629 + ldr r3, [fp, #-56] + ldr r2, [fp, #-52] + ldr r0, [r3, r8] + cmp r0, r2 + bne .L1508 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - mov r2, #1 - mov r8, r0 add r1, r7, #4 + mov r8, r0 + mov r2, #1 ldr r0, [r7, #8] bl log2phys mov r0, r8 -.L1641: +.L1519: bl decrement_vpc_count - b .L1628 -.L1629: - ldr r2, [r7, #4] - cmp r3, r2 - bne .L1640 -.L1628: + b .L1507 +.L1508: + ldr r3, [r7, #4] + cmp r2, r3 + bne .L1518 +.L1507: add r5, r5, #1 - b .L1626 -.L1631: + b .L1505 +.L1510: bl INSERT_FREE_LIST - b .L1632 -.L1633: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1643: + b .L1511 +.L1512: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1521: .align 2 -.L1642: - .word __stack_chk_guard +.L1520: .word .LANCHOR0 .word .LANCHOR2 .word .LANCHOR0+124 .word .LANCHOR1+549 .word .LC8 - .word .LANCHOR0+3208 - .word .LANCHOR0+3200 - .fnend + .word .LANCHOR0+3204 + .word .LANCHOR0+3152 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 .global FtlGcPageRecovery @@ -10869,33 +11333,33 @@ FtlGcFreeTempBlock: .fpu softvfp .type FtlGcPageRecovery, %function FtlGcPageRecovery: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1524 movw r5, #302 - ldr r4, .L1647 - ldrh r1, [r4, r5] add r0, r4, #124 + ldrh r1, [r4, r5] bl FtlGcScanTempBlk ldrh r2, [r4, #126] ldrh r3, [r4, r5] cmp r2, r3 - popcc {r4, r5, r6, pc} - ldr r0, .L1647+4 + ldmfdcc sp, {r4, r5, fp, sp, pc} + add r0, r4, #3392 bl FtlMapBlkWriteDump_data mov r0, #0 bl FtlGcFreeTempBlock mov r3, #0 - str r3, [r4, #3448] - pop {r4, r5, r6, pc} -.L1648: + str r3, [r4, #3444] + ldmfd sp, {r4, r5, fp, sp, pc} +.L1525: .align 2 -.L1647: +.L1524: .word .LANCHOR0 - .word .LANCHOR0+3396 - .fnend .size FtlGcPageRecovery, .-FtlGcPageRecovery .align 2 .global FtlPowerLostRecovery @@ -10904,17 +11368,19 @@ FtlGcPageRecovery: .fpu softvfp .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1527 mov r5, #0 - ldr r4, .L1651 add r6, r4, #24 - str r5, [r4, #3480] - mov r0, r6 add r4, r4, #76 + mov r0, r6 + str r5, [r4, #3400] bl FtlRecoverySuperblock mov r0, r6 bl FtlSlcSuperblockCheck @@ -10926,12 +11392,11 @@ FtlPowerLostRecovery: movw r0, #65535 bl decrement_vpc_count mov r0, r5 - pop {r4, r5, r6, pc} -.L1652: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1528: .align 2 -.L1651: +.L1527: .word .LANCHOR0 - .fnend .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .align 2 .global Ftl_gc_temp_data_write_back @@ -10940,53 +11405,54 @@ FtlPowerLostRecovery: .fpu softvfp .type Ftl_gc_temp_data_write_back, %function Ftl_gc_temp_data_write_back: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r3, #0 - ldr r4, .L1662 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1537 mov r5, #0 mov r6, #20 + mov r3, #0 mov r2, r3 - ldr r1, [r4, #3172] - ldr r0, [r4, #3296] + ldr r1, [r4, #3168] + ldr r0, [r4, #3292] bl FlashProgPages -.L1654: - ldr r1, [r4, #3172] +.L1530: + ldr r1, [r4, #3168] uxth r3, r5 - cmp r1, r3 - bhi .L1657 - ldr r0, [r4, #3296] + ldr r2, [r4, #3292] + cmp r3, r1 + bcc .L1533 + mov r0, r2 bl FtlGcBufFree ldrh r3, [r4, #128] mov r0, #0 - str r0, [r4, #3172] + str r0, [r4, #3168] cmp r3, r0 - popne {r4, r5, r6, pc} + ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc} mov r0, #1 bl FtlGcFreeTempBlock mov r0, #1 - pop {r4, r5, r6, pc} -.L1657: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1533: mul r3, r6, r3 - ldr r2, [r4, #3296] add r5, r5, #1 add r1, r2, r3 ldr r2, [r2, r3] - ldr r0, [r1, #12] - ldr r1, [r1, #4] + ldr ip, [r1, #12] cmn r2, #1 - ldrne r2, [r0, #8] - ldr r0, [r0, #12] + ldr r1, [r1, #4] + ldr r0, [ip, #12] + ldrne r2, [ip, #8] bl FtlGcUpdatePage - b .L1654 -.L1663: + b .L1530 +.L1538: .align 2 -.L1662: +.L1537: .word .LANCHOR0 - .fnend .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 2 .global Ftl_get_new_temp_ppa @@ -10995,46 +11461,50 @@ Ftl_gc_temp_data_write_back: .fpu softvfp .type Ftl_get_new_temp_ppa, %function Ftl_get_new_temp_ppa: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1542 movw r3, #65535 - ldr r4, .L1668 ldrh r2, [r4, #124] cmp r2, r3 - beq .L1665 + beq .L1540 ldrh r3, [r4, #128] cmp r3, #0 - bne .L1666 -.L1665: + bne .L1541 +.L1540: mov r0, #0 mov r5, #0 bl FtlGcFreeTempBlock - ldr r0, .L1668+4 + ldr r0, .L1542+4 strb r5, [r4, #132] bl allocate_data_superblock - ldr r3, .L1668+8 - strh r5, [r3] @ movhi - movw r3, #3208 + movw r3, #3196 + strh r5, [r4, r3] @ movhi + movw r3, #3204 strh r5, [r4, r3] @ movhi bl l2p_flush mov r0, r5 bl FtlEctTblFlush bl FtlVpcTblFlush -.L1666: - ldr r0, .L1668+4 - pop {r4, r5, r6, lr} - b get_new_active_ppa -.L1669: +.L1541: + ldr r0, .L1542+4 + bl get_new_active_ppa + ldmfd sp, {r4, r5, fp, sp, pc} +.L1543: .align 2 -.L1668: +.L1542: .word .LANCHOR0 .word .LANCHOR0+124 - .word .LANCHOR0+3200 - .fnend .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .section .rodata.str1.1 +.LC124: + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" + .text .align 2 .global rk_ftl_garbage_collect .syntax unified @@ -11042,226 +11512,219 @@ Ftl_get_new_temp_ppa: .fpu softvfp .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: - .fnstart - @ args = 0, pretend = 0, frame = 40 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1800 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #52 - sub sp, sp, #52 - str r0, [sp, #20] - ldr r3, [r3] - str r3, [sp, #44] - ldr r3, .L1800+4 - ldr r0, [r3, #3276] + @ args = 0, pretend = 0, frame = 32 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #44 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1660 + mov r3, sp + bic r3, r3, #8128 + str r0, [fp, #-72] + bic r3, r3, #63 + ldr r0, [r4, #3272] + ldr r3, [r3, #24] cmp r0, #0 + str r3, [fp, #-48] movne r0, #0 - bne .L1670 - add r2, r3, #2528 - ldrh r2, [r2] - cmp r2, #47 - bls .L1670 - ldr r2, .L1800+8 - mov r4, r3 - ldrh r1, [r2, #4] - movw r2, #65535 - cmp r1, r2 - bne .L1672 -.L1675: + bne .L1544 + add r3, r4, #2528 + ldrh r3, [r3] + cmp r3, #47 + bls .L1544 + ldr r3, .L1660+4 + ldrh r2, [r3, #4] + movw r3, #65535 + cmp r2, r3 + bne .L1546 +.L1549: ldrh r3, [r4, #220] movw r2, #65535 cmp r3, r2 - bne .L1673 -.L1674: + bne .L1547 +.L1548: bl FtlReadRefresh - ldr r3, [r4, #3160] + ldrh r0, [r4, #124] + ldrh r5, [r4, #172] movw r6, #65535 - ldr r2, [sp, #20] + ldr r3, [r4, #3156] + and r5, r5, r0 + ldrh r0, [r4, #222] + ldr r2, [fp, #-72] add r3, r3, #1 - add r3, r3, r2, lsl #7 - ldrh r2, [r4, #172] - str r3, [r4, #3160] - cmp r2, r6 - bne .L1676 - ldrh r6, [r4, #124] - cmp r6, r2 - movne r6, r2 - bne .L1676 - ldrh r5, [r4, #222] + and r5, r5, r0 cmp r5, r6 - bne .L1676 + add r3, r3, r2, lsl #7 + movne r5, r6 + str r3, [r4, #3156] + bne .L1550 ldrh r2, [r4, #224] cmp r2, #24 movcc r2, #5120 movcs r2, #1024 cmp r3, r2 - movls r6, r5 - bls .L1676 - ldr r3, .L1800+12 - mov r8, #0 - str r8, [r4, #3160] - strh r8, [r3] @ movhi + bls .L1550 + movw r3, #3660 + mov r7, #0 + str r7, [r4, #3156] + strh r7, [r4, r3] @ movhi bl GetSwlReplaceBlock - cmp r0, r5 - mov r6, r0 - movne r5, r0 - bne .L1678 - movw r7, #3158 + mov r5, r0 + cmp r0, r6 + bne .L1552 + movw r6, #3154 ldrh r2, [r4, #224] - ldrh r3, [r4, r7] + ldrh r3, [r4, r6] cmp r2, r3 - bcs .L1679 + bcs .L1553 mov r0, #64 bl List_get_gc_head_node uxth r3, r0 - cmp r3, r6 - beq .L1681 + cmp r3, r5 + beq .L1555 mov r0, r3 ldr r3, [r4, #72] lsl r0, r0, #1 ldrh r3, [r3, r0] cmp r3, #7 - bhi .L1682 - mov r0, r8 + bhi .L1556 + mov r0, r7 bl List_get_gc_head_node - uxth r5, r0 + uxth r0, r0 mov r3, #128 - strh r3, [r4, r7] @ movhi - cmp r5, r6 - bne .L1678 -.L1681: - bl FtlGcReFreshBadBlk -.L1676: - movw r1, #65535 - ldr r2, [sp, #20] - sub r3, r6, r1 - clz r3, r3 - lsr r3, r3, #5 - cmp r2, #0 - movne r2, #0 - andeq r2, r3, #1 - cmp r2, #0 - beq .L1684 - ldrh r3, [r4, #224] - cmp r3, #24 - movhi r5, #1 - bhi .L1685 - movw r2, #302 - cmp r3, #16 - ldrh r5, [r4, r2] - lsrhi r5, r5, #5 - bhi .L1685 - cmp r3, #12 - lsrhi r5, r5, #4 - bhi .L1685 - cmp r3, #8 - lsrhi r5, r5, #2 -.L1685: - movw r2, #3156 - ldrh r1, [r4, r2] - cmp r1, r3 - bcs .L1689 - ldrh r3, [r4, #124] - movw r1, #65535 - cmp r3, r1 - bne .L1690 - ldrh r1, [r4, #222] - cmp r1, r3 - bne .L1690 - ldr r3, .L1800+12 - ldrh r0, [r3] - cmp r0, #0 - bne .L1691 - ldr r3, [r4, #2556] - ldr r1, [r4, #2548] - add r3, r3, r3, lsl #1 - cmp r1, r3, lsr #2 - movcs r3, #18 - bcs .L1794 -.L1691: - ldr r3, .L1800+16 - movw r2, #3156 - ldrh r3, [r3] - add r3, r3, r3, lsl #1 - asr r3, r3, #2 -.L1794: - strh r3, [r4, r2] @ movhi - mov r3, #0 - str r3, [r4, #3168] -.L1670: - ldr r3, .L1800 - ldr r2, [sp, #44] - ldr r3, [r3] + cmp r0, r5 + strh r3, [r4, r6] @ movhi + beq .L1555 + mov r5, r0 +.L1552: + ldr r1, .L1660+8 + lsl r2, r5, #1 + ldr r3, [r4, #72] + ldr r0, .L1660+12 + ldrh r1, [r1] + ldrh r3, [r3, r2] + str r1, [sp, #4] + ldr r1, [r4, #2536] + ldrh r2, [r1, r2] + mov r1, r5 + str r2, [sp] + ldrh r2, [r4, #224] + bl sftl_printk + b .L1555 +.L1546: + ldrh r2, [r4, #124] cmp r2, r3 - beq .L1748 - bl __stack_chk_fail -.L1672: - ldrh r3, [r3, #124] - cmp r3, r2 - beq .L1675 + beq .L1549 mov r0, #1 bl FtlGcFreeTempBlock cmp r0, #0 - beq .L1675 + beq .L1549 mov r0, #1 - b .L1670 -.L1673: + b .L1544 +.L1547: ldrh r1, [r4, #222] cmp r1, r2 strheq r3, [r4, #222] @ movhi mvneq r3, #0 strheq r3, [r4, #220] @ movhi - b .L1674 -.L1682: + b .L1548 +.L1556: mov r3, #64 -.L1793: - strh r3, [r4, r7] @ movhi - b .L1681 -.L1679: +.L1656: + strh r3, [r4, r6] @ movhi +.L1555: + bl FtlGcReFreshBadBlk +.L1550: + ldr r2, [fp, #-72] + movw r3, #65535 + cmp r2, #0 + cmpeq r5, r3 + moveq r2, #1 + movne r2, #0 + bne .L1558 + ldrh r3, [r4, #224] + cmp r3, #24 + movhi r6, #1 + bhi .L1559 + movw r2, #302 + cmp r3, #16 + ldrh r6, [r4, r2] + lsrhi r6, r6, #5 + bhi .L1559 + cmp r3, #12 + lsrhi r6, r6, #4 + bhi .L1559 + cmp r3, #8 + lsrhi r6, r6, #2 +.L1559: + ldr r2, .L1660+8 + ldrh r1, [r2] + cmp r1, r3 + bcs .L1562 + ldrh r1, [r4, #222] + ldrh r3, [r4, #124] + and r3, r3, r1 + movw r1, #65535 + cmp r3, r1 + bne .L1563 + movw r3, #3660 + ldrh r0, [r4, r3] + cmp r0, #0 + bne .L1564 + ldr r3, [r4, #2552] + ldr r1, [r4, #2548] + add r3, r3, r3, lsl #1 + cmp r1, r3, lsr #2 + movcs r3, #18 + bcs .L1565 +.L1564: + movw r3, #2620 + ldrh r3, [r4, r3] + add r3, r3, r3, lsl #1 + lsr r3, r3, #2 +.L1565: + strh r3, [r2] @ movhi + mov r3, #0 + str r3, [r4, #3164] +.L1544: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] + cmp r2, r3 + beq .L1619 + bl __stack_chk_fail +.L1553: mov r3, #80 - b .L1793 -.L1678: - movw r0, #3156 - ldr r3, [r4, #72] - ldrh r0, [r4, r0] - lsl r1, r5, #1 - ldrh r2, [r4, #224] - mov r6, r5 - ldrh r3, [r3, r1] - str r0, [sp, #4] - ldr r0, [r4, #2536] - ldrh r1, [r0, r1] - ldr r0, .L1800+20 - str r1, [sp] - mov r1, r5 - bl sftl_printk - b .L1681 -.L1690: - ldr r3, .L1800+16 - movw r2, #3156 - ldrh r3, [r3] + b .L1656 +.L1563: + movw r3, #2620 + ldrh r3, [r4, r3] add r3, r3, r3, lsl #1 asr r3, r3, #2 - strh r3, [r4, r2] @ movhi -.L1689: - movw r3, #3210 - movw r6, #65535 + strh r3, [r2] @ movhi +.L1562: + movw r3, #3206 + movw r5, #65535 ldrh r3, [r4, r3] cmp r3, #0 - addne r5, r5, #32 - uxthne r5, r5 -.L1695: + addne r6, r6, #32 + uxthne r6, r6 +.L1567: ldrh r3, [r4, #172] movw r2, #65535 cmp r3, r2 - bne .L1704 - cmp r6, r3 - strhne r6, [r4, #172] @ movhi - bne .L1706 + bne .L1575 + cmp r5, r3 + strhne r5, [r4, #172] @ movhi + bne .L1577 ldrh r3, [r4, #222] - cmp r3, r6 - beq .L1706 + cmp r3, r5 + beq .L1577 ldr r2, [r4, #72] lsl r3, r3, #1 ldrh r3, [r2, r3] @@ -11272,117 +11735,95 @@ rk_ftl_garbage_collect: strh r3, [r4, #172] @ movhi mvn r3, #0 strh r3, [r4, #222] @ movhi -.L1706: +.L1577: ldrh r0, [r4, #172] mov r3, #0 strb r3, [r4, #180] movw r3, #65535 cmp r0, r3 - beq .L1704 + beq .L1575 bl IsBlkInGcList - cmp r0, #0 - mvnne r3, #0 - strhne r3, [r4, #172] @ movhi - movw r3, #65535 - ldrh r2, [r4, #172] - cmp r2, r3 - beq .L1704 - ldr r0, .L1800+24 - bl make_superblock - mov r3, #0 - movw r2, #3666 - strh r3, [r4, r2] @ movhi - strh r3, [r4, #174] @ movhi - strb r3, [r4, #178] - ldrh r3, [r4, #172] - ldr r2, [r4, #72] - lsl r3, r3, #1 - ldrh r2, [r2, r3] - movw r3, #3668 - strh r2, [r4, r3] @ movhi -.L1704: + subs r7, r0, #0 + beq .L1580 + mvn r3, #0 + strh r3, [r4, #172] @ movhi +.L1575: ldrh r3, [r4, #172] ldrh r2, [r4, #24] cmp r2, r3 - beq .L1710 + beq .L1581 ldrh r2, [r4, #76] cmp r2, r3 - beq .L1710 + beq .L1581 ldrh r2, [r4, #124] cmp r2, r3 - bne .L1711 -.L1710: + bne .L1582 +.L1581: mvn r3, #0 strh r3, [r4, #172] @ movhi -.L1711: - ldr r7, .L1800+4 - mov r4, r7 -.L1746: - ldrh r2, [r7, #172] +.L1582: + ldr r4, .L1660 +.L1617: + ldrh r2, [r4, #172] movw r3, #65535 cmp r2, r3 - bne .L1712 - ldr fp, .L1800+28 + bne .L1583 + ldr r7, .L1660+16 mov r3, #0 - ldr r10, .L1800+32 - str r3, [r7, #3168] - mov r9, fp -.L1713: - ldrh r8, [fp] - mov r0, r8 + str r3, [r4, #3164] +.L1584: + ldrh r9, [r7] + mov r0, r9 bl List_get_gc_head_node - uxth r2, r0 - movw r1, #65535 - cmp r2, r1 - strh r2, [r4, #172] @ movhi - bne .L1714 + uxth r10, r0 + movw r3, #65535 + mov r8, r0 + cmp r10, r3 + strh r10, [r4, #172] @ movhi + bne .L1585 mov r3, #0 mov r0, #8 - strh r3, [fp] @ movhi - b .L1670 -.L1684: - ldrh r7, [r4, #124] - cmp r7, r1 - bne .L1761 + strh r3, [r7] @ movhi + b .L1544 +.L1558: + ldrh r6, [r4, #124] ldrh r1, [r4, #222] - cmp r1, r7 - movne r3, #0 - andeq r3, r3, #1 - cmp r3, #0 - beq .L1761 + and r6, r6, r1 + and r6, r6, r5 + cmp r6, r3 + bne .L1629 ldrh r3, [r4, #172] - cmp r3, r7 - beq .L1696 -.L1701: - mov r6, r7 -.L1761: - mov r5, #1 - b .L1695 -.L1696: - str r2, [r4, #3168] - movw r2, #3156 - ldrh r1, [r4, #224] - ldrh r3, [r4, r2] - ldr r5, .L1800+12 - cmp r1, r3 - bls .L1697 - ldrh r3, [r5] + cmp r3, r6 + beq .L1568 +.L1572: + mov r5, r6 +.L1629: + mov r6, #1 + b .L1567 +.L1568: + ldr r8, .L1660+8 + str r2, [r4, #3164] + ldrh r2, [r4, #224] + ldrh r3, [r8] + cmp r2, r3 + bls .L1569 + movw r3, #3660 + ldrh r3, [r4, r3] cmp r3, #0 - bne .L1698 - ldr r3, [r4, #2556] - ldr r1, [r4, #2548] + bne .L1570 + ldr r3, [r4, #2552] + ldr r2, [r4, #2548] add r3, r3, r3, lsl #1 - cmp r1, r3, lsr #2 + cmp r2, r3, lsr #2 movcs r3, #18 - bcs .L1795 -.L1698: - ldr r3, .L1800+16 - movw r2, #3156 - ldrh r3, [r3] + bcs .L1571 +.L1570: + movw r3, #2620 + ldrh r3, [r4, r3] add r3, r3, r3, lsl #1 - asr r3, r3, #2 -.L1795: - strh r3, [r4, r2] @ movhi + lsr r3, r3, #2 +.L1571: + strh r3, [r8] @ movhi bl FtlReadRefresh mov r0, #0 bl List_get_gc_head_node @@ -11391,155 +11832,154 @@ rk_ftl_garbage_collect: lsl r0, r0, #1 ldrh r3, [r3, r0] cmp r3, #4 - bls .L1697 -.L1797: - ldrh r0, [r5] - b .L1670 -.L1697: - ldrh r0, [r5] + bls .L1569 +.L1659: + movw r3, #3660 + ldrh r0, [r4, r3] + b .L1544 +.L1569: + movw r5, #3660 + ldrh r0, [r4, r5] cmp r0, #0 - bne .L1701 - ldr r8, .L1800+16 - movw r2, #3156 - ldrh r6, [r8] - sub r8, r8, #2320 - add r3, r6, r6, lsl #1 + bne .L1572 + movw r3, #2620 + ldrh r7, [r4, r3] + add r3, r7, r7, lsl #1 asr r3, r3, #2 - strh r3, [r4, r2] @ movhi + strh r3, [r8] @ movhi bl List_get_gc_head_node uxth r0, r0 ldr r3, [r4, #72] - ldrh r1, [r8] lsl r0, r0, #1 + ldrh r1, [r4, #232] ldrh r2, [r3, r0] - ldrh r3, [r4, #232] - mul r3, r3, r1 + ldr r3, .L1660+20 + ldrh r3, [r3] + mul r3, r1, r3 add r3, r3, r3, lsr #31 cmp r2, r3, asr #1 - ble .L1702 + ble .L1573 ldrh r3, [r4, #224] - sub r6, r6, #1 - cmp r3, r6 - blt .L1702 + sub r7, r7, #1 + cmp r3, r7 + blt .L1573 bl FtlReadRefresh - b .L1797 -.L1702: + ldrh r0, [r4, r5] + b .L1544 +.L1573: cmp r2, #0 - bne .L1701 + bne .L1572 movw r0, #65535 bl decrement_vpc_count ldrh r0, [r4, #224] add r0, r0, #1 - b .L1670 -.L1714: - str r0, [sp, #16] - mov r0, r2 - str r2, [sp, #12] - add r8, r8, #1 + b .L1544 +.L1585: + mov r0, r10 bl IsBlkInGcList + add r3, r9, #1 cmp r0, #0 - ldr r2, [sp, #12] - ldr r3, [sp, #16] - strhne r8, [fp] @ movhi - bne .L1713 uxth r3, r3 - ldrh lr, [r4, #232] - ldr r0, [r4, #72] + beq .L1586 +.L1657: + strh r3, [r7] @ movhi + b .L1584 +.L1586: + ldr r2, .L1660+24 uxth r8, r8 - lsl r1, r3, #1 - ldrh r3, [r10] - strh r8, [fp] @ movhi - ldrh ip, [r0, r1] - mul r3, lr, r3 - add lr, r3, r3, lsr #31 - cmp ip, lr, asr #1 - bgt .L1717 - cmp r8, #48 - cmphi ip, #8 - bls .L1718 - ldr ip, .L1800+36 - ldrh ip, [ip] - cmp ip, #35 - bhi .L1718 -.L1717: - mov ip, #0 - strh ip, [r9] @ movhi -.L1718: - ldrh r1, [r0, r1] - movw r0, #65535 - cmp r3, r1 - cmple r6, r0 - bne .L1719 - ldrh r3, [r9] - cmp r3, #3 - bhi .L1719 + ldrh ip, [r4, #232] + ldr r1, [r4, #72] + lsl r8, r8, #1 + strh r3, [r7] @ movhi + ldrh r2, [r2] + ldrh r0, [r1, r8] + mul r2, ip, r2 + add ip, r2, r2, lsr #31 + cmp r0, ip, asr #1 + bgt .L1588 + cmp r0, #8 + cmphi r3, #48 + bls .L1589 + ldr r3, .L1660+28 + ldrh r3, [r3] + cmp r3, #35 + bhi .L1589 +.L1588: + mov r3, #0 + strh r3, [r7] @ movhi +.L1589: + ldrh r3, [r1, r8] + movw r1, #65535 + cmp r2, r3 + cmple r5, r1 + bne .L1590 + ldrh r2, [r7] + cmp r2, #3 + bhi .L1590 mvn r3, #0 strh r3, [r4, #172] @ movhi mov r3, #0 - strh r3, [r9] @ movhi -.L1799: - ldr r3, .L1800+12 - b .L1798 -.L1719: - cmp r1, #0 - bne .L1720 + strh r3, [r7] @ movhi + b .L1659 +.L1590: + cmp r3, #0 + bne .L1591 movw r0, #65535 bl decrement_vpc_count - ldrh r3, [r9] + ldrh r3, [r7] add r3, r3, #1 - strh r3, [r9] @ movhi - b .L1713 -.L1720: + b .L1657 +.L1591: mov r3, #0 strb r3, [r4, #180] ldrh r3, [r4, #24] - cmp r3, r2 - bne .L1721 + cmp r3, r10 + bne .L1592 + ldr r1, .L1660+32 movw r2, #717 - ldr r1, .L1800+40 - ldr r0, .L1800+44 + ldr r0, .L1660+36 bl sftl_printk -.L1721: +.L1592: ldrh r2, [r4, #172] ldrh r3, [r4, #76] cmp r2, r3 - bne .L1722 + bne .L1593 + ldr r1, .L1660+32 movw r2, #718 - ldr r1, .L1800+40 - ldr r0, .L1800+44 + ldr r0, .L1660+36 bl sftl_printk -.L1722: +.L1593: ldrh r2, [r4, #172] ldrh r3, [r4, #124] cmp r2, r3 - bne .L1723 + bne .L1594 + ldr r1, .L1660+32 movw r2, #719 - ldr r1, .L1800+40 - ldr r0, .L1800+44 + ldr r0, .L1660+36 bl sftl_printk -.L1723: - ldr r0, .L1800+24 +.L1594: + ldr r0, .L1660+40 bl make_superblock + ldr r1, .L1660+44 ldrh r2, [r4, #172] mov r3, #0 - ldr r1, .L1800+48 ldr r0, [r4, #72] lsl r2, r2, #1 strh r3, [r1] @ movhi ldrh r2, [r0, r2] + strh r2, [r1, #2] @ movhi strh r3, [r4, #174] @ movhi strb r3, [r4, #178] - strh r2, [r1, #2] @ movhi -.L1712: +.L1583: mov r3, #1 - str r3, [r4, #3276] - ldr r3, .L1800+32 + str r3, [r4, #3272] + ldr r3, .L1660+24 ldrh r3, [r3] - str r3, [sp, #12] - ldr r3, [sp, #20] + str r3, [fp, #-64] + ldr r3, [fp, #-72] cmp r3, #0 - beq .L1724 - ldr r2, [sp, #12] + beq .L1595 + ldr r2, [fp, #-64] ldrh r3, [r4, #232] ldr r1, [r4, #72] mul r3, r2, r3 @@ -11547,254 +11987,266 @@ rk_ftl_garbage_collect: lsl r2, r2, #1 ldrh r2, [r1, r2] sub r3, r3, r2 - add r2, r3, #3 cmp r3, #0 - movlt r3, r2 - add r5, r5, r3, asr #2 - uxth r5, r5 -.L1724: + add r2, r3, #3 + movge r2, r3 + add r6, r6, r2, asr #2 + uxth r6, r6 +.L1595: ldrh r3, [r4, #174] - ldr r1, [sp, #12] - add r2, r3, r5 + ldr r1, [fp, #-64] + add r2, r3, r6 cmp r2, r1 movgt r2, r1 - subgt r5, r2, r3 + subgt r3, r2, r3 + uxthgt r6, r3 mov r3, #0 - uxthgt r5, r5 -.L1796: - str r3, [sp, #16] - ldrh r3, [sp, #16] - cmp r5, r3 - bls .L1734 - ldr r3, [sp, #16] +.L1658: + str r3, [fp, #-68] + ldrh r8, [r4, #174] + ldrh r3, [fp, #-68] + cmp r6, r3 + bls .L1605 + ldr r3, [fp, #-68] movw r9, #65535 - ldrh r8, [r7, #174] + ldrh ip, [r4, #232] mov r10, #20 - ldrh ip, [r7, #232] - ldr r0, [r7, #3188] add r8, r8, r3 + ldr r0, [r4, #3184] mov r3, #0 - ldr r1, .L1800+52 - mov fp, r3 - b .L1735 -.L1728: - ldrh r2, [r1, #2]! - add r3, r3, #1 + ldr r1, .L1660+48 + mov r7, r3 + b .L1606 +.L1599: + ldrh r2, [r1], #2 cmp r2, r9 - mlane lr, r10, fp, r0 - orrne r2, r8, r2, lsl #10 - strne r2, [lr, #4] - addne r2, fp, #1 - uxthne fp, r2 -.L1735: + beq .L1598 + mla lr, r10, r7, r0 + add r7, r7, #1 + orr r2, r8, r2, lsl #10 + uxth r7, r7 + str r2, [lr, #4] +.L1598: + add r3, r3, #1 +.L1606: uxth r2, r3 cmp ip, r2 - bhi .L1728 + bhi .L1599 mov r10, #0 - ldrb r2, [r7, #180] @ zero_extendqisi2 - mov r1, fp + ldrb r2, [r4, #180] @ zero_extendqisi2 + mov r1, r7 bl FlashReadPages -.L1729: +.L1600: uxth r3, r10 - cmp fp, r3 - ldrls r3, [sp, #16] + cmp r7, r3 + ldrls r3, [fp, #-68] addls r3, r3, #1 - bls .L1796 -.L1733: + bls .L1658 +.L1604: mov r8, #20 - ldr r3, [r7, #3188] + ldr r3, [r4, #3184] mul r8, r8, r10 add r2, r3, r8 ldr r3, [r3, r8] cmn r3, #1 - beq .L1730 + beq .L1601 ldr r9, [r2, #12] movw r3, #61589 ldrh r2, [r9] cmp r2, r3 - bne .L1730 + bne .L1601 ldr r3, [r9, #8] cmn r3, #1 - bne .L1731 + bne .L1602 + ldr r1, .L1660+32 movw r2, #753 - ldr r1, .L1800+40 - ldr r0, .L1800+44 - str r3, [sp, #24] + ldr r0, .L1660+36 + str r3, [fp, #-76] bl sftl_printk - ldr r3, [sp, #24] -.L1731: - mov r2, #0 - add r1, sp, #36 + ldr r3, [fp, #-76] +.L1602: + sub r1, fp, #56 mov r0, r3 + mov r2, #0 bl log2phys - ldr r1, [r4, #3188] - ldr r3, [sp, #36] + ldr r1, [r4, #3184] + ldr r3, [fp, #-56] add r1, r1, r8 ldr r2, [r1, #4] cmp r2, r3 - bne .L1730 - ldr r3, .L1800+48 - ldr r2, .L1800+48 - ldr r0, [r4, #3172] - ldrh r3, [r3] + bne .L1601 + ldr r2, .L1660+44 + ldr r0, [r4, #3168] ldr r1, [r1, #16] + ldrh r3, [r2] add r3, r3, #1 strh r3, [r2] @ movhi + ldr r3, [r4, #3292] mov r2, #20 - ldr r3, [r4, #3296] - str r2, [sp, #28] mla r3, r2, r0, r3 + str r3, [fp, #-76] str r1, [r3, #16] - str r3, [sp, #24] bl Ftl_get_new_temp_ppa - ldr r3, [sp, #24] - ldr r1, [r4, #3296] - ldr r2, [sp, #28] + ldr r3, [fp, #-76] + ldr r1, [r4, #3184] + mov r2, #20 str r0, [r3, #4] - ldr r3, [r4, #3172] - mla r3, r2, r3, r1 - ldr r2, [r4, #3188] - add r2, r2, r8 - ldr r1, [r2, #8] - str r1, [r3, #8] + add r1, r1, r8 + ldr r0, [r4, #3168] + ldr r3, [r4, #3292] + mla r3, r2, r0, r3 + ldr r2, [r1, #8] + str r2, [r3, #8] + ldr r2, [r1, #12] mov r1, #1 - ldr r2, [r2, #12] str r2, [r3, #12] - ldr r3, [sp, #36] + ldr r3, [fp, #-56] str r3, [r9, #12] ldrh r3, [r4, #124] strh r3, [r9, #2] @ movhi - ldr r3, [r4, #2596] - ldr r0, [r4, #3188] + ldr r3, [r4, #2592] + ldr r0, [r4, #3184] str r3, [r9, #4] - ldr r3, [r4, #3172] + ldr r3, [r4, #3168] add r0, r0, r8 add r3, r3, #1 - str r3, [r4, #3172] + str r3, [r4, #3168] bl FtlGcBufAlloc ldrb r2, [r4, #131] @ zero_extendqisi2 - ldr r3, [r4, #3172] + ldr r3, [r4, #3168] cmp r2, r3 - beq .L1732 + beq .L1603 ldrh r3, [r4, #128] cmp r3, #0 - bne .L1730 -.L1732: + bne .L1601 +.L1603: bl Ftl_gc_temp_data_write_back cmp r0, #0 - beq .L1730 - ldr r3, .L1800+4 + beq .L1601 + ldr r3, .L1660 mov r2, #0 - mvn r1, #0 - str r2, [r3, #3276] - strh r1, [r3, #172] @ movhi - strh r2, [r3, #174] @ movhi - add r3, r3, #3664 -.L1798: - ldrh r0, [r3] - b .L1670 -.L1730: + str r2, [r3, #3272] + movw r2, #65535 + str r2, [r3, #172] + movw r2, #3660 + ldrh r0, [r3, r2] + b .L1544 +.L1601: add r10, r10, #1 - b .L1729 -.L1734: - ldrh r3, [r7, #174] - add r5, r5, r3 - ldr r3, [sp, #12] - uxth r5, r5 - cmp r3, r5 - strh r5, [r7, #174] @ movhi - bhi .L1736 - ldr r3, [r7, #3172] + b .L1600 +.L1605: + add r6, r6, r8 + ldr r3, [fp, #-64] + uxth r6, r6 + strh r6, [r4, #174] @ movhi + cmp r3, r6 + bhi .L1607 + ldr r3, [r4, #3168] cmp r3, #0 - beq .L1737 + beq .L1608 bl Ftl_gc_temp_data_write_back cmp r0, #0 movne r3, #0 - strne r3, [r7, #3276] - bne .L1799 -.L1737: - ldr r3, .L1800+48 - ldrh r5, [r3] - cmp r5, #0 - bne .L1738 - ldrh r3, [r7, #172] - ldr r2, [r7, #72] + strne r3, [r4, #3272] + bne .L1659 +.L1608: + ldr r3, .L1660+44 + ldrh r6, [r3] + cmp r6, #0 + bne .L1609 + ldrh r3, [r4, #172] + ldr r2, [r4, #72] lsl r3, r3, #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L1738 -.L1739: - ldr r3, [r7, #2556] - cmp r5, r3 - bcs .L1744 - mov r2, #0 - add r1, sp, #40 - mov r0, r5 - bl log2phys - ldr r0, [sp, #40] - cmn r0, #1 - beq .L1740 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r7, #172] - cmp r3, r0 - bne .L1740 -.L1744: - ldr r3, [r7, #2556] - cmp r5, r3 - bcc .L1738 - ldrh r3, [r7, #172] + beq .L1609 +.L1610: + ldr r3, [r4, #2552] + cmp r6, r3 + bcc .L1613 +.L1615: + ldrh r3, [r4, #172] mov r1, #0 - ldr r2, [r7, #72] + ldr r2, [r4, #72] lsl r3, r3, #1 strh r1, [r2, r3] @ movhi - ldrh r0, [r7, #172] + ldrh r0, [r4, #172] bl update_vpc_list bl l2p_flush bl FtlVpcTblFlush -.L1738: +.L1609: mvn r3, #0 - strh r3, [r7, #172] @ movhi -.L1736: + strh r3, [r4, #172] @ movhi +.L1607: mov r3, #0 - str r3, [r7, #3276] - ldrh r3, [r7, #224] + str r3, [r4, #3272] + ldrh r3, [r4, #224] cmp r3, #2 - bhi .L1745 - ldr r3, .L1800+32 - ldrh r5, [r3] - b .L1746 -.L1740: - add r5, r5, #1 - b .L1739 -.L1745: - ldr r2, .L1800+12 - ldrh r0, [r2] + bhi .L1616 + ldr r3, .L1660+24 + ldrh r6, [r3] + b .L1617 +.L1613: + sub r1, fp, #52 + mov r0, r6 + mov r2, #0 + bl log2phys + ldr r0, [fp, #-52] + cmn r0, #1 + beq .L1611 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4, #172] + cmp r3, r0 + beq .L1612 +.L1611: + add r6, r6, #1 + b .L1610 +.L1612: + ldr r3, [r4, #2552] + cmp r6, r3 + bcc .L1609 + b .L1615 +.L1616: + movw r2, #3660 + ldrh r0, [r4, r2] cmp r0, #0 addeq r0, r3, #1 - b .L1670 -.L1748: - add sp, sp, #52 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1801: + b .L1544 +.L1580: + ldr r0, .L1660+40 + bl make_superblock + movw r3, #3662 + ldr r2, [r4, #72] + strh r7, [r4, r3] @ movhi + ldrh r3, [r4, #172] + strh r7, [r4, #174] @ movhi + strb r7, [r4, #178] + lsl r3, r3, #1 + ldrh r2, [r2, r3] + ldr r3, .L1660+52 + strh r2, [r3] @ movhi + b .L1575 +.L1619: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1661: .align 2 -.L1800: - .word __stack_chk_guard +.L1660: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+3664 - .word .LANCHOR0+2624 + .word .LANCHOR0+3152 .word .LC124 - .word .LANCHOR0+172 - .word .LANCHOR0+3164 + .word .LANCHOR0+3160 + .word .LANCHOR0+304 .word .LANCHOR0+302 - .word .LANCHOR0+3200 + .word .LANCHOR0+3196 .word .LANCHOR1+568 .word .LC8 - .word .LANCHOR0+3666 - .word .LANCHOR0+186 - .fnend + .word .LANCHOR0+172 + .word .LANCHOR0+3662 + .word .LANCHOR0+188 + .word .LANCHOR0+3664 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 2 .global FtlRead @@ -11803,293 +12255,293 @@ rk_ftl_garbage_collect: .fpu softvfp .type FtlRead, %function FtlRead: - .fnstart @ args = 0, pretend = 0, frame = 56 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r3 - ldr r3, .L1841 - cmp r0, #16 - .pad #60 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #60 + push {lr} + bl __gnu_mcount_nc + mov r8, r3 + mov r3, sp + bic r3, r3, #8128 mov r5, r1 - str r2, [sp, #4] - ldr r3, [r3] - str r3, [sp, #52] - bne .L1803 - mov r2, r10 - ldr r1, [sp, #4] + bic r3, r3, #63 + cmp r0, #16 + str r2, [fp, #-60] + ldr r3, [r3, #24] + str r3, [fp, #-48] + bne .L1663 + ldr r1, [fp, #-60] + mov r2, r8 add r0, r5, #256 bl FtlVendorPartRead mov r6, r0 -.L1802: - ldr r3, .L1841 - mov r0, r6 - ldr r2, [sp, #52] - ldr r3, [r3] +.L1662: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] cmp r2, r3 - beq .L1824 + beq .L1685 bl __stack_chk_fail -.L1803: - ldr r4, .L1841+4 - ldr r2, [sp, #4] +.L1663: + ldr r4, .L1703 + ldr r2, [fp, #-60] ldr r3, [r4, #340] - cmp r2, r3 - cmpls r1, r3 - movcs r9, #1 - movcc r9, #0 - bcs .L1826 - add r2, r1, r2 cmp r3, r2 - str r2, [sp, #12] - bcc .L1826 - ldr r3, .L1841+8 + cmpcs r3, r1 + movls r7, #1 + movhi r7, #0 + bls .L1687 + add r2, r1, r2 + str r2, [fp, #-64] + cmp r3, r2 + bcc .L1687 + ldr r3, .L1703+4 ldr r6, [r3] cmn r6, #1 - beq .L1802 + beq .L1662 movw r3, #258 mov r0, r5 ldrh r6, [r4, r3] - mov r8, r9 mov r1, r6 bl __aeabi_uidiv - ldr r3, [sp, #12] + ldr r3, [fp, #-64] mov r1, r6 - str r0, [sp, #16] - mov r6, r9 + str r0, [fp, #-72] sub r0, r3, #1 + mov r6, r7 bl __aeabi_uidiv - ldr r3, [sp, #16] - ldr r2, [sp, #4] - ldr r7, [sp, #16] + ldr r3, [fp, #-72] + ldr r2, [fp, #-60] rsb r3, r3, #1 - str r0, [sp, #20] + ldr r9, [fp, #-72] add r3, r3, r0 - str r9, [sp, #28] - str r3, [sp, #8] - ldr r3, [r4, #2588] - str r9, [sp, #24] + str r3, [fp, #-68] + ldr r3, [r4, #2584] + str r0, [fp, #-76] add r3, r3, r2 - ldr r2, [sp, #8] - str r3, [r4, #2588] - ldr r3, [r4, #2560] + ldr r2, [fp, #-68] + str r3, [r4, #2584] + ldr r3, [r4, #2556] + str r7, [fp, #-56] add r3, r3, r2 - str r3, [r4, #2560] -.L1805: - ldr r3, [sp, #8] + str r7, [fp, #-84] + str r3, [r4, #2556] + str r7, [fp, #-80] +.L1665: + ldr r3, [fp, #-68] cmp r3, #0 - bne .L1822 - ldr r3, .L1841+4 - movw r2, #3210 + bne .L1683 + ldr r3, .L1703 + movw r2, #3206 ldrh r2, [r3, r2] cmp r2, #0 - bne .L1823 + bne .L1684 ldrh r3, [r3, #224] cmp r3, #31 - bhi .L1802 -.L1823: + bhi .L1662 +.L1684: mov r1, #1 mov r0, #0 bl rk_ftl_garbage_collect - b .L1802 -.L1822: + b .L1662 +.L1683: + sub r1, fp, #52 + mov r0, r9 mov r2, #0 - add r1, sp, #48 - mov r0, r7 bl log2phys - ldr r3, [sp, #48] + ldr r3, [fp, #-52] cmn r3, #1 - moveq fp, #0 - beq .L1807 - ldr r2, [r4, #3292] - mov fp, #20 - mla fp, fp, r8, r2 - str r3, [fp, #4] - ldr r3, [sp, #16] - cmp r7, r3 - bne .L1811 - ldr r3, [r4, #3316] - mov r0, r5 - str r3, [fp, #8] - ldr r3, .L1841+12 - ldrh r3, [r3] - mov r1, r3 - str r3, [sp, #28] - bl __aeabi_uidivmod - ldr r3, [sp, #28] - str r1, [sp, #24] - sub r2, r3, r1 - ldr r1, [sp, #4] - cmp r1, r2 - movcc r2, r1 - cmp r2, r3 - str r2, [sp, #28] - streq r10, [fp, #8] -.L1812: - ldr r3, .L1841+16 - ldr r2, [r4, #3340] - str r7, [fp, #16] - ldrh r3, [r3] - mul r3, r8, r3 - add r8, r8, #1 - bic r3, r3, #3 - add r3, r2, r3 - str r3, [fp, #12] - b .L1810 -.L1809: - mla r0, r0, r7, fp - ldr r2, [sp, #12] + bne .L1700 + ldr r3, .L1703+8 + mov r10, #0 + b .L1666 +.L1669: + mla r0, r9, r0, r10 + ldr r1, [fp, #-64] cmp r5, r0 - movls r3, #1 - movhi r3, #0 - cmp r2, r0 - movls r3, #0 - cmp r3, #0 - beq .L1808 + movls r2, #1 + movhi r2, #0 + cmp r1, r0 + movls r2, #0 + cmp r2, #0 + beq .L1668 sub r0, r0, r5 mov r2, #512 mov r1, #0 - add r0, r10, r0, lsl #9 + add r0, r8, r0, lsl #9 bl ftl_memset -.L1808: - add fp, fp, #1 -.L1807: - ldr r3, .L1841+12 + ldr r3, .L1703+8 +.L1668: + add r10, r10, #1 +.L1666: ldrh r0, [r3] - cmp fp, r0 - bcc .L1809 -.L1810: - ldr r3, [sp, #8] - add r7, r7, #1 + cmp r0, r10 + bhi .L1669 +.L1670: + ldr r3, [fp, #-68] + add r9, r9, #1 subs r3, r3, #1 - str r3, [sp, #8] - beq .L1814 + str r3, [fp, #-68] + beq .L1675 ldrh r3, [r4, #232] - cmp r8, r3, lsl #2 - bne .L1805 -.L1814: - cmp r8, #0 - beq .L1805 + cmp r7, r3, lsl #2 + bne .L1665 +.L1675: + cmp r7, #0 + beq .L1665 + ldr r0, [r4, #3288] + mov r1, r7 mov r2, #0 - mov r1, r8 - ldr r0, [r4, #3292] - mov fp, #0 + mov r10, #0 bl FlashReadPages - lsl r3, r9, #9 - str r3, [sp, #40] - ldr r3, [sp, #24] + ldr r3, [fp, #-56] lsl r3, r3, #9 - str r3, [sp, #32] - ldr r3, [sp, #28] + str r3, [fp, #-96] + ldr r3, [fp, #-80] lsl r3, r3, #9 - str r3, [sp, #36] -.L1821: + str r3, [fp, #-88] + ldr r3, [fp, #-84] + lsl r3, r3, #9 + str r3, [fp, #-92] +.L1682: mov r3, #20 - ldr r2, [r4, #3292] - mul r3, r3, fp - ldr r0, [sp, #16] + ldr r2, [r4, #3288] + ldr r0, [fp, #-72] + mul r3, r3, r10 add r2, r2, r3 ldr r1, [r2, #16] - cmp r0, r1 - bne .L1816 + cmp r1, r0 + bne .L1677 ldr r1, [r2, #8] - ldr r2, [r4, #3316] + ldr r2, [r4, #3312] cmp r1, r2 - bne .L1817 - str r3, [sp, #44] - mov r0, r10 - ldr r3, [sp, #32] - ldr r2, [sp, #36] + bne .L1678 + str r3, [fp, #-100] + mov r0, r8 + ldrd r2, [fp, #-92] add r1, r1, r3 -.L1840: +.L1702: bl ftl_memcpy - ldr r3, [sp, #44] -.L1817: - ldr r1, [r4, #3292] + ldr r3, [fp, #-100] +.L1678: + ldr r1, [r4, #3288] add r2, r1, r3 ldr r0, [r2, #12] ldr ip, [r2, #16] ldr r0, [r0, #8] cmp ip, r0 - ldrne r0, [r4, #2716] + ldrne r0, [r4, #2712] addne r0, r0, #1 - strne r0, [r4, #2716] + strne r0, [r4, #2712] ldr ip, [r1, r3] cmn ip, #1 - ldreq r0, [r4, #2716] moveq r6, ip + ldreq r0, [r4, #2712] addeq r0, r0, #1 - streq r0, [r4, #2716] + streq r0, [r4, #2712] ldr r3, [r1, r3] cmp r3, #256 - bne .L1820 + bne .L1681 ldr r0, [r2, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L1820: - add fp, fp, #1 - cmp r8, fp - bne .L1821 - mov r8, #0 - b .L1805 -.L1811: - ldr r3, [sp, #20] - cmp r7, r3 - bne .L1813 - ldr r3, [r4, #3320] - ldr r1, [sp, #12] - str r3, [fp, #8] - ldr r3, .L1841+12 - ldrh r2, [r3] - mul r3, r2, r7 - sub r9, r1, r3 - cmp r2, r9 - bne .L1812 -.L1839: - sub r3, r3, r5 - add r3, r10, r3, lsl #9 - str r3, [fp, #8] - b .L1812 -.L1813: - ldr r3, .L1841+12 +.L1681: + add r10, r10, #1 + cmp r7, r10 + bne .L1682 + mov r7, #0 + b .L1665 +.L1700: + ldr r10, [r4, #3288] + mov r2, #20 + mla r10, r2, r7, r10 + str r3, [r10, #4] + ldr r3, [fp, #-72] + cmp r9, r3 + ldr r3, .L1703+8 + bne .L1671 + ldrh r3, [r3] + mov r0, r5 + ldr r2, [r4, #3312] + mov r1, r3 + str r2, [r10, #8] + str r3, [fp, #-84] + bl __aeabi_uidivmod + ldr r3, [fp, #-84] + str r1, [fp, #-80] + sub r2, r3, r1 + ldr r1, [fp, #-60] + cmp r1, r2 + movcc r2, r1 + str r2, [fp, #-84] + cmp r3, r2 + streq r8, [r10, #8] +.L1672: + ldr r3, .L1703+12 + ldr r2, [r4, #3336] + str r9, [r10, #16] ldrh r3, [r3] mul r3, r7, r3 - b .L1839 -.L1816: - ldr r0, [sp, #20] - cmp r0, r1 - bne .L1817 - ldr r1, [r2, #8] - ldr r2, [r4, #3320] + add r7, r7, #1 + bic r3, r3, #3 + add r3, r2, r3 + str r3, [r10, #12] + b .L1670 +.L1671: + ldrh r2, [r3] + ldr r1, [fp, #-76] + cmp r9, r1 + mul r3, r2, r9 + bne .L1673 + ldr r1, [fp, #-64] + sub r1, r1, r3 + str r1, [fp, #-56] cmp r1, r2 - bne .L1817 - str r3, [sp, #44] - ldr r3, .L1841+12 - ldr r2, [sp, #40] - ldrh r0, [r3] - ldr r3, [sp, #20] + ldrne r3, [r4, #3316] + bne .L1701 +.L1673: + sub r3, r3, r5 + add r3, r8, r3, lsl #9 +.L1701: + str r3, [r10, #8] + b .L1672 +.L1677: + ldr r0, [fp, #-76] + cmp r1, r0 + bne .L1678 + ldr r1, [r2, #8] + ldr r2, [r4, #3316] + cmp r1, r2 + bne .L1678 + ldr r2, .L1703+8 + str r3, [fp, #-100] + ldr r3, [fp, #-76] + ldrh r0, [r2] + ldr r2, [fp, #-96] mul r0, r3, r0 sub r0, r0, r5 - add r0, r10, r0, lsl #9 - b .L1840 -.L1826: + add r0, r8, r0, lsl #9 + b .L1702 +.L1687: mvn r6, #0 - b .L1802 -.L1824: - add sp, sp, #60 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1842: + b .L1662 +.L1685: + mov r0, r6 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1704: .align 2 -.L1841: - .word __stack_chk_guard +.L1703: .word .LANCHOR0 .word .LANCHOR2 .word .LANCHOR0+258 .word .LANCHOR0+312 - .fnend .size FtlRead, .-FtlRead .align 2 .global sftl_read @@ -12098,17 +12550,26 @@ FtlRead: .fpu softvfp .type sftl_read, %function sftl_read: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r3, r2 mov r2, r1 mov r1, r0 mov r0, #0 - b FtlRead - .fnend + bl FtlRead + ldmfd sp, {fp, sp, pc} .size sftl_read, .-sftl_read + .section .rodata.str1.1 +.LC125: + .ascii "FtlWrite: ecc error:%x %x %x\012\000" +.LC126: + .ascii "FtlWrite: lpa error:%x %x\012\000" + .text .align 2 .global FtlWrite .syntax unified @@ -12116,401 +12577,403 @@ sftl_read: .fpu softvfp .type FtlWrite, %function FtlWrite: - .fnstart - @ args = 0, pretend = 0, frame = 72 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #76 - sub sp, sp, #76 - str r3, [sp, #12] + @ args = 0, pretend = 0, frame = 80 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #84 + push {lr} + bl __gnu_mcount_nc + str r3, [fp, #-92] + mov r3, sp + bic r3, r3, #8128 + mov r8, r1 + bic r3, r3, #63 cmp r0, #16 - mov r10, r1 - ldr r3, .L1899 - str r2, [sp, #8] - ldr r3, [r3] - str r3, [sp, #68] - bne .L1845 - ldr r2, [sp, #12] - add r0, r10, #256 - ldr r1, [sp, #8] + str r2, [fp, #-88] + ldr r3, [r3, #24] + str r3, [fp, #-48] + bne .L1707 + ldr r2, [fp, #-92] + add r0, r8, #256 + ldr r1, [fp, #-88] bl FtlVendorPartWrite -.L1844: - ldr r3, .L1899 - ldr r2, [sp, #68] - ldr r3, [r3] +.L1706: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] cmp r2, r3 - beq .L1881 + beq .L1744 bl __stack_chk_fail -.L1845: - ldr r4, .L1899+4 - ldr r2, [sp, #8] +.L1707: + ldr r4, .L1759 + ldr r2, [fp, #-88] ldr r3, [r4, #340] - cmp r2, r3 - cmpls r1, r3 - bcs .L1883 + cmp r3, r2 + cmpcs r3, r1 + bls .L1746 add r6, r1, r2 cmp r3, r6 - bcc .L1883 - ldr r5, .L1899+8 + bcc .L1746 + ldr r5, .L1759+4 ldr r0, [r5] cmn r0, #1 - beq .L1844 + beq .L1706 mov r3, #2048 - mov r0, r10 - str r3, [r4, #3672] + str r3, [r4, #3668] movw r3, #258 + mov r0, r8 ldrh r7, [r4, r3] mov r1, r7 bl __aeabi_uidiv mov r1, r7 - str r0, [sp, #4] + str r0, [fp, #-84] sub r0, r6, #1 bl __aeabi_uidiv - ldr r2, [sp, #4] - str r0, [sp, #20] + ldr r2, [fp, #-84] + str r0, [fp, #-108] sub r3, r0, r2 - ldr r2, [sp, #8] - add fp, r3, #1 - str r3, [sp, #24] - ldr r3, [r4, #2584] + ldr r2, [fp, #-88] + str r3, [fp, #-104] + add r3, r3, #1 + str r3, [fp, #-80] + ldr r3, [r4, #2580] add r3, r3, r2 - str r3, [r4, #2584] - ldr r3, [r4, #2568] - add r3, r3, fp - str r3, [r4, #2568] + ldr r2, [fp, #-80] + str r3, [r4, #2580] + ldr r3, [r4, #2564] + add r3, r3, r2 + str r3, [r4, #2564] ldr r3, [r5, #8] cmp r3, #0 addeq r4, r4, #24 - beq .L1847 + beq .L1709 ldrh r3, [r4, #28] cmp r3, #0 addne r4, r4, #24 addeq r4, r4, #76 -.L1847: - ldr r7, [sp, #4] - ldr r5, .L1899+4 -.L1848: - cmp fp, #0 - bne .L1876 - ldr r1, [sp, #24] - mov r0, fp +.L1709: + ldr r6, [fp, #-84] + ldr r5, .L1759 +.L1710: + ldr r3, [fp, #-80] + cmp r3, #0 + bne .L1740 + mov r0, r3 + ldr r1, [fp, #-104] bl rk_ftl_garbage_collect ldrh r3, [r5, #224] cmp r3, #5 - movls r4, #256 - ldrls r6, .L1899+12 - bls .L1880 -.L1879: + bls .L1751 +.L1743: mov r0, #0 - b .L1844 -.L1876: + b .L1706 +.L1740: ldrb r2, [r4, #6] @ zero_extendqisi2 ldrh r3, [r5, #232] cmp r2, r3 - bcc .L1849 - movw r2, #1041 - ldr r1, .L1899+16 - ldr r0, .L1899+20 + bcc .L1711 + ldr r1, .L1759+8 + movw r2, #1046 + ldr r0, .L1759+12 bl sftl_printk -.L1849: - ldrh r2, [r4, #4] - cmp r2, #0 - bne .L1850 - ldr r3, .L1899+24 - ldr r6, .L1899+8 - cmp r4, r3 - bne .L1851 - ldrh r8, [r5, #80] - cmp r8, #0 - bne .L1852 - add r0, r4, #52 - bl allocate_new_data_superblock - str r8, [r6, #8] -.L1852: - ldr r0, .L1899+24 - bl allocate_new_data_superblock - ldr r4, .L1899+24 - ldr r2, [r6, #8] - add r3, r4, #52 - cmp r2, #0 - movne r4, r3 -.L1853: +.L1711: ldrh r3, [r4, #4] cmp r3, #0 - bne .L1850 + bne .L1712 + ldr r2, .L1759+16 + ldr r7, .L1759+4 + cmp r4, r2 + bne .L1713 + ldrh r9, [r5, #80] + cmp r9, #0 + bne .L1714 + add r0, r4, #52 + bl allocate_new_data_superblock + str r9, [r7, #8] +.L1714: + ldr r0, .L1759+16 + bl allocate_new_data_superblock + ldr r3, [r7, #8] + cmp r3, #0 + ldrne r4, .L1759+20 + bne .L1715 +.L1716: + ldr r4, .L1759+16 +.L1715: + ldrh r3, [r4, #4] + cmp r3, #0 + bne .L1712 mov r0, r4 bl allocate_new_data_superblock -.L1850: - ldrb r2, [r4, #7] @ zero_extendqisi2 +.L1712: ldrh r3, [r4, #4] + ldr r1, [fp, #-80] + ldrb r2, [r4, #7] @ zero_extendqisi2 + cmp r3, r1 + movcs r3, r1 lsl r2, r2, #2 - cmp r3, fp - movcs r3, fp cmp r2, r3 movcc r3, r2 ldrb r2, [r4, #6] @ zero_extendqisi2 - str r3, [sp, #36] + str r3, [fp, #-120] ldrh r3, [r5, #232] cmp r2, r3 - bcc .L1854 - movw r2, #1074 - ldr r1, .L1899+16 - ldr r0, .L1899+20 + bcc .L1717 + ldr r1, .L1759+8 + movw r2, #1079 + ldr r0, .L1759+12 bl sftl_printk -.L1854: - mov r3, #0 -.L1898: - str r3, [sp] - ldr r3, [sp] - ldr r2, [sp, #36] - cmp r3, r2 - bne .L1874 -.L1856: +.L1717: + mov r10, #0 +.L1718: + ldr r3, [fp, #-120] + cmp r3, r10 + bne .L1738 +.L1719: mov r3, r4 + ldr r0, [r5, #3296] + mov r1, r10 mov r2, #0 - ldr r1, [sp] - ldr r0, [r5, #3300] bl FtlProgPages - ldr r3, [sp] - cmp r3, fp - bls .L1875 - mov r2, #1152 - ldr r1, .L1899+16 - ldr r0, .L1899+20 + ldr r3, [fp, #-80] + cmp r3, r10 + bcs .L1739 + ldr r1, .L1759+8 + movw r2, #1157 + ldr r0, .L1759+12 bl sftl_printk -.L1875: - ldr r3, [sp] - sub fp, fp, r3 - b .L1848 -.L1851: - str r2, [r6, #8] - ldrh r2, [r5, #28] - cmp r2, #0 - movne r4, r3 - bne .L1850 +.L1739: + ldr r3, [fp, #-80] + sub r3, r3, r10 + str r3, [fp, #-80] + b .L1710 +.L1713: + str r3, [r7, #8] + ldrh r3, [r5, #28] + cmp r3, #0 + bne .L1716 mov r0, r4 bl allocate_new_data_superblock - b .L1853 -.L1874: + b .L1715 +.L1738: ldrh r3, [r4, #4] cmp r3, #0 - beq .L1856 + beq .L1719 + sub r1, fp, #72 mov r2, #0 - add r1, sp, #44 - mov r0, r7 - mov r8, #20 + mov r0, r6 bl log2phys mov r0, r4 bl get_new_active_ppa - ldr r2, .L1899+28 - ldr r1, [sp] - ldr r3, [sp] - ldrh r2, [r2] - mul r8, r8, r3 - ldr r3, [r5, #3300] - mul r1, r2, r1 - add r3, r3, r8 + mov r3, #20 + mul r3, r3, r10 + str r3, [fp, #-96] + ldr r2, [fp, #-96] + ldr r3, [r5, #3296] + add r3, r3, r2 + ldr r2, .L1759+24 str r0, [r3, #4] + ldrh r2, [r2] + str r6, [r3, #16] + mul r1, r10, r2 bic r1, r1, #3 - str r7, [r3, #16] - str r1, [sp, #28] - ldr r0, [sp, #28] - ldr r1, [r5, #3340] + str r1, [fp, #-112] + ldr r0, [fp, #-112] + ldr r1, [r5, #3336] + str r1, [fp, #-116] add r9, r1, r0 - str r1, [sp, #32] - str r9, [r3, #12] mov r1, #0 + str r9, [r3, #12] mov r0, r9 bl ftl_memset - ldr r3, [sp, #4] - ldr r2, [sp, #20] - cmp r7, r2 - cmpne r7, r3 - bne .L1857 - cmp r7, r3 - bne .L1858 - ldr r3, .L1899+32 - mov r0, r10 - ldrh r6, [r3] - mov r1, r6 - bl __aeabi_uidivmod - ldr r3, [sp, #8] - sub r6, r6, r1 - str r1, [sp, #16] - cmp r6, r3 - movcs r6, r3 -.L1859: - ldr r3, .L1899+32 + ldr r3, [fp, #-84] + ldr r2, [fp, #-108] + cmp r6, r2 + cmpne r6, r3 + ldr r3, .L1759+28 + bne .L1720 + ldr r2, [fp, #-84] ldrh r3, [r3] - cmp r6, r3 - ldr r3, [sp, #4] - bne .L1860 - cmp r7, r3 - ldr r3, [r5, #3300] - add r8, r3, r8 - ldreq r3, [sp, #12] - beq .L1895 - mul r6, r6, r7 - ldr r3, [sp, #12] - sub r6, r6, r10 - add r6, r3, r6, lsl #9 - str r6, [r8, #8] -.L1862: + cmp r6, r2 + bne .L1721 + mov r1, r3 + mov r0, r8 + str r3, [fp, #-124] + bl __aeabi_uidivmod + ldr r3, [fp, #-124] + ldr r2, [fp, #-88] + sub r7, r3, r1 + str r1, [fp, #-100] + cmp r7, r2 + movcs r7, r2 +.L1722: + ldr r0, [r5, #3296] + cmp r3, r7 + ldr r2, [fp, #-96] + add r0, r0, r2 + bne .L1723 + ldr r2, [fp, #-84] + cmp r6, r2 + mulne r3, r6, r3 + ldrne r2, [fp, #-92] + ldreq r3, [fp, #-92] + subne r3, r3, r8 + addne r3, r2, r3, lsl #9 + str r3, [r0, #8] +.L1725: ldrb r2, [r4, #6] @ zero_extendqisi2 ldrh r3, [r5, #232] cmp r2, r3 - bcc .L1871 - movw r2, #1143 - ldr r1, .L1899+16 - ldr r0, .L1899+20 + bcc .L1735 + ldr r1, .L1759+8 + movw r2, #1148 + ldr r0, .L1759+12 bl sftl_printk -.L1871: - ldr r3, .L1899+36 - ldr r2, [sp, #32] - ldr r1, [sp, #28] +.L1735: + ldr r2, [fp, #-116] + add r10, r10, #1 + ldr r1, [fp, #-112] + ldr r3, .L1759+32 strh r3, [r2, r1] @ movhi - ldr r3, [r5, #2596] - str r7, [r9, #8] - add r7, r7, #1 + str r6, [r9, #8] + add r6, r6, #1 + ldr r3, [r5, #2592] str r3, [r9, #4] - add r3, r3, #1 - cmn r3, #1 + cmn r3, #2 + add r2, r3, #1 + strne r2, [r5, #2592] moveq r3, #0 - str r3, [r5, #2596] - ldr r3, [sp, #44] + streq r3, [r5, #2592] + ldr r3, [fp, #-72] str r3, [r9, #12] ldrh r3, [r4] strh r3, [r9, #2] @ movhi - ldr r3, [sp] - add r3, r3, #1 - b .L1898 -.L1858: - ldr r3, [sp, #8] - add r6, r10, r3 - ldr r3, .L1899+32 - ldrh r2, [r3] - mov r3, #0 - str r3, [sp, #16] - smulbb r2, r2, r7 - sub r6, r6, r2 - uxth r6, r6 - b .L1859 -.L1860: - cmp r7, r3 - ldr r3, [r5, #3300] - ldreq r2, [r5, #3316] - ldrne r2, [r5, #3320] - add r3, r3, r8 - str r2, [r3, #8] - ldr r3, [sp, #44] - cmn r3, #1 - beq .L1865 - str r3, [sp, #52] - mov r1, #1 - ldr r3, [r5, #3300] - add r0, sp, #48 - str r7, [sp, #64] - add r3, r3, r8 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [sp, #56] + b .L1718 +.L1721: + ldr r2, [fp, #-88] + add r7, r8, r2 + smulbb r2, r6, r3 + sub r7, r7, r2 mov r2, #0 - str r3, [sp, #60] - bl FlashReadPages - ldr r3, [sp, #48] + str r2, [fp, #-100] + uxth r7, r7 + b .L1722 +.L1723: + ldr r3, [fp, #-84] + cmp r6, r3 + ldreq r3, [r5, #3312] + ldrne r3, [r5, #3316] + str r3, [r0, #8] + ldr r3, [fp, #-72] cmn r3, #1 - bne .L1866 - ldr r2, [r5, #2716] - ldr r0, .L1899+40 + beq .L1728 + str r6, [fp, #-52] + mov r2, #0 + str r3, [fp, #-64] + mov r1, #1 + ldr r3, [r0, #8] + str r3, [fp, #-60] + ldr r3, [r0, #12] + sub r0, fp, #68 + str r3, [fp, #-56] + bl FlashReadPages + ldr r3, [fp, #-68] + cmn r3, #1 + bne .L1729 + ldr r2, [r5, #2712] + ldr r0, .L1759+36 add r2, r2, #1 - str r2, [r5, #2716] - mov r2, r7 + str r2, [r5, #2712] + mov r2, r6 ldr r1, [r9, #8] bl sftl_printk -.L1869: - ldr r3, [sp, #4] - lsl r2, r6, #9 - cmp r7, r3 - bne .L1870 - ldr r3, [r5, #3300] - ldr r1, [sp, #12] - add r8, r3, r8 - ldr r3, [sp, #16] - ldr r0, [r8, #8] - add r0, r0, r3, lsl #9 -.L1896: - bl ftl_memcpy - b .L1862 -.L1866: - ldr r3, [r9, #8] - cmp r7, r3 - beq .L1868 - ldr r3, [r5, #2716] - mov r2, r7 - ldr r0, .L1899+44 - add r3, r3, #1 - str r3, [r5, #2716] - ldr r1, [r9, #8] - bl sftl_printk -.L1868: - ldr r3, [r9, #8] - cmp r7, r3 - beq .L1869 - movw r2, #1128 - ldr r1, .L1899+16 - ldr r0, .L1899+20 - bl sftl_printk - b .L1869 -.L1865: - ldr r3, [r5, #3300] - mov r1, #0 - ldr r2, .L1899+48 - add r3, r3, r8 - ldrh r2, [r2] +.L1733: + ldr r3, [fp, #-84] + lsl r2, r7, #9 + cmp r6, r3 + bne .L1734 + ldr r1, [fp, #-96] + ldr r3, [r5, #3296] + add r3, r3, r1 + ldr r1, [fp, #-92] ldr r0, [r3, #8] + ldr r3, [fp, #-100] + add r0, r0, r3, lsl #9 +.L1758: + bl ftl_memcpy + b .L1725 +.L1729: + ldr r3, [r9, #8] + cmp r3, r6 + beq .L1733 + ldr r3, [r5, #2712] + mov r2, r6 + ldr r0, .L1759+40 + add r3, r3, #1 + str r3, [r5, #2712] + ldr r1, [r9, #8] + bl sftl_printk + ldr r3, [r9, #8] + cmp r3, r6 + beq .L1733 + ldr r1, .L1759+8 + movw r2, #1133 + ldr r0, .L1759+12 + bl sftl_printk + b .L1733 +.L1728: + ldr r3, .L1759+44 + mov r1, #0 + ldr r0, [r0, #8] + ldrh r2, [r3] bl ftl_memset - b .L1869 -.L1870: - ldr r3, .L1899+32 + b .L1733 +.L1734: + ldr r3, .L1759+28 + ldr r0, [fp, #-96] ldrh r1, [r3] - ldr r3, [r5, #3300] - mul r1, r7, r1 - add r8, r3, r8 - ldr r3, [sp, #12] - ldr r0, [r8, #8] - sub r1, r1, r10 - add r1, r3, r1, lsl #9 - b .L1896 -.L1857: - ldr r3, [r5, #3300] - ldr r2, [sp, #12] - add r8, r3, r8 - ldr r3, .L1899+32 + ldr r3, [r5, #3296] + add r3, r3, r0 + ldr r0, [fp, #-92] + mul r1, r6, r1 + sub r1, r1, r8 + add r1, r0, r1, lsl #9 + ldr r0, [r3, #8] + b .L1758 +.L1720: ldrh r3, [r3] - mul r3, r7, r3 - sub r3, r3, r10 - add r3, r2, r3, lsl #9 -.L1895: - str r3, [r8, #8] - b .L1862 -.L1880: + ldr r1, [fp, #-96] + ldr r2, [r5, #3296] + mul r3, r6, r3 + add r2, r2, r1 + ldr r1, [fp, #-92] + sub r3, r3, r8 + add r3, r1, r3, lsl #9 + str r3, [r2, #8] + b .L1725 +.L1751: + ldr r6, .L1759+48 + mov r4, #256 +.L1741: + ldrh r2, [r5, #222] ldrh r3, [r5, #172] + and r3, r3, r2 movw r2, #65535 cmp r3, r2 - bne .L1878 - ldrh r2, [r5, #222] - cmp r2, r3 - bne .L1878 + bne .L1742 mov r0, #0 bl List_get_gc_head_node uxth r0, r0 bl FtlGcRefreshBlock -.L1878: - ldr r2, .L1899+52 +.L1742: + ldr r2, .L1759+52 mov r1, #1 - mov r3, #128 mov r0, r1 + mov r3, #128 strh r3, [r6] @ movhi strh r3, [r2] @ movhi bl rk_ftl_garbage_collect @@ -12519,35 +12982,33 @@ FtlWrite: bl rk_ftl_garbage_collect ldrh r3, [r5, #224] cmp r3, #2 - bhi .L1879 + bhi .L1743 subs r4, r4, #1 - bne .L1880 - b .L1879 -.L1883: + bne .L1741 + b .L1743 +.L1746: mvn r0, #0 - b .L1844 -.L1881: - add sp, sp, #76 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1900: + b .L1706 +.L1744: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1760: .align 2 -.L1899: - .word __stack_chk_guard +.L1759: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+3158 .word .LANCHOR1+591 .word .LC8 .word .LANCHOR0+24 + .word .LANCHOR0+76 .word .LANCHOR0+312 .word .LANCHOR0+258 .word -3947 .word .LC125 .word .LC126 .word .LANCHOR0+310 - .word .LANCHOR0+3156 - .fnend + .word .LANCHOR0+3154 + .word .LANCHOR0+3152 .size FtlWrite, .-FtlWrite .align 2 .global sftl_gc @@ -12556,15 +13017,23 @@ FtlWrite: .fpu softvfp .type sftl_gc, %function sftl_gc: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r1, #1 mov r0, r1 - b rk_ftl_garbage_collect - .fnend + bl rk_ftl_garbage_collect + ldmfd sp, {fp, sp, pc} .size sftl_gc, .-sftl_gc + .section .rodata.str1.1 +.LC127: + .ascii "%s hash error this.id =%x page =%x pre_id =%x hash " + .ascii "=%x hash_r =%x\012\000" + .text .align 2 .global FtlLoadSysInfo .syntax unified @@ -12572,266 +13041,273 @@ sftl_gc: .fpu softvfp .type FtlLoadSysInfo, %function FtlLoadSysInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #28 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1790 mov r1, #0 - ldr r4, .L1933 - .pad #20 - sub sp, sp, #20 - movw r6, #2628 - ldr r3, [r4, #3304] + add r6, r4, #2624 ldrh r2, [r4, #240] + ldr r3, [r4, #3300] + str r3, [r4, #3460] ldr r0, [r4, #72] - str r3, [r4, #3464] - ldr r3, [r4, #3336] lsl r2, r2, #1 - str r3, [r4, #3468] + ldr r3, [r4, #3332] + str r3, [r4, #3464] bl ftl_memset - ldrh r0, [r4, r6] + ldrh r0, [r6] movw r3, #65535 cmp r0, r3 - bne .L1903 -.L1914: + bne .L1763 +.L1775: mvn r0, #0 -.L1902: - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1903: +.L1762: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1763: mov r1, #1 - ldr r9, .L1933+4 + ldr r9, .L1790+4 bl FtlGetLastWrittenPage - ldr r10, .L1933+8 - add r8, r4, #3456 - ldrsh r6, [r4, r6] + ldr r10, .L1790+8 + ldrsh r7, [r6] sxth r5, r0 - ldr r7, .L1933+12 - add r0, r0, #1 - strh r0, [r7, #2] @ movhi -.L1905: + add r3, r5, #1 + strh r3, [r6, #2] @ movhi +.L1765: cmp r5, #0 - bge .L1911 - movw r2, #1467 - ldr r1, .L1933+16 - ldr r0, .L1933+20 + bge .L1772 + ldr r1, .L1790+12 + movw r2, #1474 + ldr r0, .L1790+16 bl sftl_printk - b .L1910 -.L1911: - orr r3, r5, r6, lsl #10 + b .L1771 +.L1772: + orr r3, r5, r7, lsl #10 mov r2, #1 + str r3, [r4, #3456] mov r1, r2 + ldr r3, [r4, #3300] + mov r0, r9 str r3, [r4, #3460] - mov r0, r8 - ldr r3, [r4, #3304] - str r3, [r4, #3464] bl FlashReadPages - ldr r3, [r4, #3468] - ldr fp, [r3, #12] - cmp fp, #0 - beq .L1906 - ldr r3, [r4, #3456] - cmn r3, #1 - beq .L1906 - ldrh r1, [r10] - ldr r0, [r4, #3464] + ldr r3, [r4, #3464] + ldr r3, [r3, #12] + str r3, [fp, #-48] + cmp r3, #0 + beq .L1766 + ldr r2, [r4, #3452] + cmn r2, #1 + beq .L1767 + ldr r8, .L1790+20 + ldr r0, [r4, #3460] + ldrh r1, [r8] bl js_hash - cmp fp, r0 - beq .L1906 + ldr r3, [fp, #-48] + cmp r3, r0 + beq .L1768 str r0, [sp, #8] - mov r2, r6 - str fp, [sp, #4] - ldrh r3, [r7, #4] - ldr r1, .L1933+16 - ldr r0, .L1933+24 + mov r2, r7 + str r3, [sp, #4] + ldr r1, .L1790+12 + ldrh r3, [r6, #4] str r3, [sp] mov r3, r5 + ldr r0, .L1790+24 bl sftl_printk cmp r5, #0 - bne .L1907 - ldrh r3, [r7, #4] - cmp r6, r3 - beq .L1907 - sxth r6, r3 - ldr r3, .L1933+28 - ldrh r5, [r3] -.L1909: + bne .L1769 + ldrh r3, [r6, #4] + cmp r7, r3 + sxthne r7, r3 + ldrhne r5, [r8, #-6] + bne .L1767 +.L1769: + mvn r3, #0 + str r3, [r4, #3452] +.L1767: sub r5, r5, #1 sxth r5, r5 - b .L1905 -.L1907: - mvn r3, #0 - str r3, [r4, #3456] -.L1906: - ldr r3, [r4, #3456] + b .L1765 +.L1766: + ldr r3, [r4, #3452] cmn r3, #1 - beq .L1909 - ldr r3, [r4, #3304] + beq .L1767 +.L1768: + ldr r3, [r4, #3300] ldr r3, [r3] - cmp r3, r9 - bne .L1909 - ldr r3, [r4, #3336] + cmp r3, r10 + bne .L1767 + ldr r3, [r4, #3332] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - bne .L1909 -.L1910: + bne .L1767 +.L1771: movw r2, #310 ldrh r3, [r4, #240] ldrh r2, [r4, r2] add r3, r3, #24 cmp r2, r3, lsl #1 - bcs .L1913 - movw r2, #1469 - ldr r1, .L1933+16 - ldr r0, .L1933+20 + bcs .L1774 + ldr r1, .L1790+12 + movw r2, #1476 + ldr r0, .L1790+16 bl sftl_printk -.L1913: - ldr r5, .L1933+32 +.L1774: + ldr r5, .L1790+28 mov r2, #48 - ldr r1, [r4, #3464] + ldr r1, [r4, #3460] mov r0, r5 bl ftl_memcpy ldrh r2, [r4, #240] - ldr r1, [r4, #3464] + ldr r1, [r4, #3460] ldr r0, [r4, #72] lsl r2, r2, #1 add r1, r1, #48 bl ftl_memcpy ldr r2, [r4, #2468] - ldr r3, .L1933+4 + ldr r3, .L1790+8 cmp r2, r3 - bne .L1914 + bne .L1775 ldrb r2, [r4, #2478] @ zero_extendqisi2 ldrh r3, [r4, #254] - ldrh r6, [r5, #8] + ldrh r7, [r5, #8] cmp r2, r3 - strh r6, [r7, #6] @ movhi - bne .L1914 + strh r7, [r6, #6] @ movhi + bne .L1775 movw r3, #302 movw r2, #258 + ldr r6, [r4, #244] ldrh r3, [r4, r3] - add r8, r5, #156 ldrh r2, [r4, r2] - ldr r7, [r4, #244] - str r6, [r4, #3676] - mul r3, r6, r3 ldrh r1, [r4, #232] - str r3, [r4, #2556] + str r7, [r4, #3672] + mul r3, r7, r3 + str r3, [r4, #2552] mul r3, r3, r2 str r3, [r4, #340] - sub r3, r8, #2272 + ldr r3, .L1790+32 ldrh r0, [r3, #6] - sub r0, r7, r0 - sub r0, r0, r6 + add r0, r0, r7 + sub r0, r6, r0 bl __aeabi_uidiv - cmp r6, r7 - strh r0, [r5, #156] @ movhi - bls .L1915 - movw r2, #1491 - ldr r1, .L1933+16 - ldr r0, .L1933+20 + movw r3, #2620 + cmp r7, r6 + strh r0, [r4, r3] @ movhi + bls .L1776 + ldr r1, .L1790+12 + movw r2, #1498 + ldr r0, .L1790+16 bl sftl_printk -.L1915: +.L1776: ldrh r3, [r5, #16] ldrh r1, [r5, #14] + strh r1, [r4, #24] @ movhi lsr r2, r3, #6 - and r3, r3, #63 - strb r3, [r4, #30] strh r2, [r4, #26] @ movhi ldrh r2, [r5, #18] - ldrb r3, [r4, #2479] @ zero_extendqisi2 - strh r1, [r4, #24] @ movhi + and r3, r3, #63 strh r2, [r4, #76] @ movhi ldrh r2, [r5, #20] - strb r3, [r4, #32] - mvn r3, #0 - strh r3, [r4, #172] @ movhi - mov r3, #0 - strh r3, [r4, #174] @ movhi + strb r3, [r4, #30] + ldrb r3, [r4, #2479] @ zero_extendqisi2 lsr r0, r2, #6 and r2, r2, #63 strb r2, [r4, #82] ldrb r2, [r4, #2480] @ zero_extendqisi2 - strh r0, [r4, #78] @ movhi - strb r3, [r4, #178] strb r2, [r4, #84] ldrh r2, [r5, #22] - strb r3, [r4, #180] - str r3, [r4, #2580] strh r2, [r4, #124] @ movhi ldrh r2, [r5, #24] - str r3, [r4, #2568] - str r3, [r4, #2560] - str r3, [r4, #2576] + strh r0, [r4, #78] @ movhi + strb r3, [r4, #32] + movw r3, #65535 lsr r0, r2, #6 and r2, r2, #63 strb r2, [r4, #130] ldrb r2, [r4, #2481] @ zero_extendqisi2 - str r3, [r4, #2604] - strh r0, [r4, #126] @ movhi strb r2, [r4, #132] ldr r2, [r4, #2500] - str r2, [r4, #2600] - str r3, [r4, #2616] - ldr r2, [r4, #2592] + str r3, [r4, #172] + mov r3, #0 + str r2, [r4, #2596] + strb r3, [r4, #178] + strb r3, [r4, #180] + str r3, [r4, #2576] + str r3, [r4, #2564] + str r3, [r4, #2556] str r3, [r4, #2572] + str r3, [r4, #2600] + str r3, [r4, #2612] + strh r0, [r4, #126] @ movhi + str r3, [r4, #2568] ldr r3, [r4, #2508] + ldr r2, [r4, #2588] cmp r3, r2 - ldr r2, [r4, #2596] - strhi r3, [r4, #2592] + ldr r2, [r4, #2592] + strhi r3, [r4, #2588] ldr r3, [r4, #2504] cmp r3, r2 - strhi r3, [r4, #2596] + strhi r3, [r4, #2592] movw r3, #65535 cmp r1, r3 - beq .L1918 - ldr r0, .L1933+36 + beq .L1779 + ldr r0, .L1790+36 bl make_superblock -.L1918: +.L1779: ldrh r2, [r4, #76] movw r3, #65535 cmp r2, r3 - beq .L1919 - ldr r0, .L1933+40 + beq .L1780 + ldr r0, .L1790+40 bl make_superblock -.L1919: +.L1780: ldrh r2, [r4, #124] movw r3, #65535 cmp r2, r3 - beq .L1920 - ldr r0, .L1933+44 + beq .L1781 + ldr r0, .L1790+44 bl make_superblock -.L1920: +.L1781: ldrh r2, [r4, #172] movw r3, #65535 cmp r2, r3 - beq .L1921 - ldr r0, .L1933+48 + beq .L1782 + ldr r0, .L1790+48 bl make_superblock -.L1921: +.L1782: mov r0, #0 - b .L1902 -.L1934: + b .L1762 +.L1791: .align 2 -.L1933: +.L1790: .word .LANCHOR0 + .word .LANCHOR0+3452 .word 1179929683 - .word .LANCHOR0+310 - .word .LANCHOR0+2628 .word .LANCHOR1+600 .word .LC8 + .word .LANCHOR0+310 .word .LC127 - .word .LANCHOR0+304 .word .LANCHOR0+2468 + .word .LANCHOR0+352 .word .LANCHOR0+24 .word .LANCHOR0+76 .word .LANCHOR0+124 .word .LANCHOR0+172 - .fnend .size FtlLoadSysInfo, .-FtlLoadSysInfo + .section .rodata.str1.1 +.LC128: + .ascii "%s last blk_id =%x page =%x hash error hash =%x has" + .ascii "h_r =%x\012\000" +.LC129: + .ascii "%s scan blk_id =%x page =%x hash error hash =%x has" + .ascii "h_r =%x\012\000" + .text .align 2 .global FtlMapTblRecovery .syntax unified @@ -12839,259 +13315,265 @@ FtlLoadSysInfo: .fpu softvfp .type FtlMapTblRecovery, %function FtlMapTblRecovery: - .fnstart @ args = 0, pretend = 0, frame = 32 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #44 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #44 - ldr r3, [r0, #24] + push {lr} + bl __gnu_mcount_nc + ldr r3, [r0, #12] mov r4, r0 + str r3, [fp, #-56] mov r1, #0 - mov r7, #0 - ldr r5, .L1977 - str r3, [sp, #12] ldr r3, [r0, #16] - ldr r8, [r0, #12] - add r10, r5, #304 - str r3, [sp, #24] + mov r6, #0 + str r3, [fp, #-64] ldrh r3, [r0, #6] - str r3, [sp, #16] + str r3, [fp, #-48] ldrh r3, [r0, #8] - ldr r0, [sp, #12] - str r3, [sp, #20] - ldr r3, [sp, #16] + ldr r5, .L1831 + str r3, [fp, #-60] + ldr r3, [fp, #-48] + ldr r9, [r0, #24] lsl r2, r3, #2 + mov r0, r9 bl ftl_memset - ldr r3, [r5, #3304] - ldr fp, [r5, #3336] - str r7, [r4, #32] - str r3, [r5, #3464] + ldr r3, [r5, #3300] + ldr r8, [r5, #3332] + str r3, [r5, #3460] mvn r3, #0 - str fp, [r5, #3468] - strh r3, [r4] @ movhi - strh r3, [r4, #2] @ movhi + str r8, [r5, #3464] + str r6, [r4, #32] + str r3, [r4] mov r3, #1 - str r7, [r4, #28] + str r6, [r4, #28] str r3, [r4, #36] -.L1936: - ldr r3, [sp, #20] - sxth r6, r7 - cmp r6, r3 - bge .L1955 - ldr r3, [sp, #20] - sub r3, r3, #1 - cmp r6, r3 - lsl r3, r6, #1 - bne .L1937 - ldrh r0, [r8, r3] +.L1793: + ldr r3, [fp, #-60] + sxth r7, r6 + uxth r10, r6 + cmp r7, r3 + bge .L1813 + ldr r2, [fp, #-56] + lsl r3, r7, #1 + add r2, r2, r7, lsl #1 + str r2, [fp, #-52] + ldr r2, [fp, #-60] + sub r2, r2, #1 + cmp r2, r7 + bne .L1794 + ldr r3, [fp, #-52] mov r1, #1 - add r9, r8, r3 - ldr r5, .L1977 + ldr r5, .L1831 + ldrh r0, [r3] bl FtlGetLastWrittenPage sxth r3, r0 - add r0, r0, #1 - strh r7, [r4] @ movhi - add r10, r5, #3456 - str r3, [sp, #20] - mov r7, #0 - ldr r3, [sp, #24] - strh r0, [r4, #2] @ movhi - ldr r3, [r3, r6, lsl #2] + str r3, [fp, #-56] + add r3, r3, #1 + strh r3, [r4, #2] @ movhi + ldr r3, [fp, #-64] + strh r10, [r4] @ movhi + mov r10, #0 + ldr r3, [r3, r7, lsl #2] str r3, [r4, #28] -.L1938: - ldr r3, [sp, #20] - sxth r8, r7 +.L1795: + ldr r3, [fp, #-56] + sxth r6, r10 add r2, r3, #1 - cmp r8, r2 - blt .L1941 -.L1955: + cmp r6, r2 + blt .L1799 +.L1813: mov r0, r4 bl ftl_free_no_use_map_blk - ldr r3, .L1977+4 + ldr r3, .L1831+4 ldrh r2, [r4, #2] ldrh r3, [r3] cmp r2, r3 - bne .L1943 + bne .L1801 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L1943: +.L1801: mov r0, r4 bl ftl_map_blk_gc mov r0, r4 bl ftl_map_blk_gc mov r0, #0 - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1941: - ldrh r2, [r9] - mov r0, r10 - orr r2, r8, r2, lsl #10 - str r2, [r5, #3460] + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1799: + ldr r3, [fp, #-52] + ldr r0, .L1831+8 + ldrh r2, [r3] + orr r2, r6, r2, lsl #10 + str r2, [r5, #3456] mov r2, #1 mov r1, r2 bl FlashReadPages - ldr r2, [r5, #3468] + ldr r2, [r5, #3464] ldr r2, [r2, #12] + str r2, [fp, #-60] cmp r2, #0 - str r2, [sp, #24] - beq .L1939 - ldr r1, [r5, #3456] + beq .L1796 + ldr r1, [r5, #3452] cmn r1, #1 - beq .L1939 - ldr r3, .L1977+8 - ldr r0, [r5, #3464] - ldrh r1, [r3] + beq .L1814 + ldr r1, .L1831+12 + ldr r0, [r5, #3460] + ldrh r1, [r1] bl js_hash - ldr r2, [sp, #24] + ldr r2, [fp, #-60] cmp r2, r0 - beq .L1939 + beq .L1798 + mov r3, r6 str r0, [sp, #4] - mov r3, r8 str r2, [sp] - mov r2, r6 - ldr r1, .L1977+12 - ldr r0, .L1977+16 + mov r2, r7 + ldr r1, .L1831+16 + ldr r0, .L1831+20 bl sftl_printk mvn r3, #0 - str r3, [r5, #3456] -.L1939: - ldr r3, [r5, #3456] + str r3, [r5, #3452] +.L1814: + add r10, r10, #1 + b .L1795 +.L1796: + ldr r3, [r5, #3452] cmn r3, #1 - beq .L1940 - ldrh r3, [fp, #8] - ldr r2, [sp, #16] - cmp r2, r3 - bls .L1940 - ldrh r1, [fp] + beq .L1814 +.L1798: + ldrh r3, [r8, #8] + ldr r2, [fp, #-48] + cmp r3, r2 + bcs .L1814 ldrh r2, [r4, #4] + ldrh r1, [r8] cmp r1, r2 - ldreq r2, [r5, #3460] - ldreq r1, [sp, #12] - streq r2, [r1, r3, lsl #2] -.L1940: - add r7, r7, #1 - b .L1938 -.L1937: - ldr r2, [r5, #3304] - ldr r0, .L1977+20 - str r2, [r5, #3464] - add r2, r8, r3 - str r2, [sp, #28] - ldrh r2, [r8, r3] - ldrh r3, [r10] + ldreq r2, [r5, #3456] + streq r2, [r9, r3, lsl #2] + b .L1814 +.L1794: + ldr r2, [r5, #3300] + str r2, [r5, #3460] + ldr r2, [fp, #-56] + ldr r0, .L1831+8 + ldrh r2, [r2, r3] + ldr r3, .L1831+4 + ldrh r3, [r3] sub r3, r3, #1 orr r3, r3, r2, lsl #10 mov r2, #1 mov r1, r2 - str r3, [r5, #3460] + str r3, [r5, #3456] bl FlashReadPages - ldr r3, [r5, #3456] + ldr r3, [r5, #3452] cmn r3, #1 - beq .L1957 - ldrh r2, [fp] + beq .L1817 + ldrh r2, [r8] ldrh r3, [r4, #4] cmp r2, r3 - bne .L1957 - ldrh r2, [fp, #8] + bne .L1817 + ldrh r2, [r8, #8] movw r3, #64245 cmp r2, r3 - beq .L1945 -.L1957: - mov r9, #0 -.L1946: - ldrh r2, [r10] - sxth r3, r9 - cmp r3, r2 - bge .L1953 - ldr r2, [sp, #28] - ldr r0, .L1977+20 - str r3, [sp, #36] + beq .L1818 +.L1817: + mov r10, #0 + b .L1809 +.L1805: + ldr r2, [r5, #3300] + lsl lr, ip, #3 + ldr r7, [fp, #-48] + add r1, r1, #1 + ldr r3, [r2, ip, lsl #3] + uxth ip, r3 + cmp r7, ip + addhi r2, r2, lr + movhi r3, ip + ldrhi r2, [r2, #4] + strhi r2, [r9, r3, lsl #2] +.L1803: + ldrh r3, [r0] + sxth ip, r1 + sub r3, r3, #1 + cmp ip, r3 + blt .L1805 +.L1811: + add r6, r6, #1 + b .L1793 +.L1818: + ldr r0, .L1831+4 + mov r1, #0 + b .L1803 +.L1810: + ldr r2, [fp, #-52] + ldr r0, .L1831+8 + str r3, [fp, #-72] ldrh r2, [r2] orr r2, r3, r2, lsl #10 - str r2, [r5, #3460] + str r2, [r5, #3456] mov r2, #1 mov r1, r2 bl FlashReadPages - ldr r2, [r5, #3468] + ldr r2, [r5, #3464] ldr r2, [r2, #12] + str r2, [fp, #-68] cmp r2, #0 - str r2, [sp, #32] - beq .L1950 - ldr r1, [r5, #3456] + beq .L1806 + ldr r1, [r5, #3452] cmn r1, #1 - beq .L1950 - ldr r1, .L1977+8 - ldr r0, [r5, #3464] + beq .L1815 + ldr r1, .L1831+12 + ldr r0, [r5, #3460] ldrh r1, [r1] bl js_hash - ldr r2, [sp, #32] + ldr r2, [fp, #-68] cmp r2, r0 - beq .L1950 + beq .L1808 + ldr r3, [fp, #-72] str r0, [sp, #4] str r2, [sp] - mov r2, r6 - ldr r3, [sp, #36] - ldr r1, .L1977+12 - ldr r0, .L1977+24 + mov r2, r7 + ldr r1, .L1831+16 + ldr r0, .L1831+24 bl sftl_printk mvn r3, #0 - str r3, [r5, #3456] -.L1950: - ldr r3, [r5, #3456] - cmn r3, #1 - beq .L1951 - ldrh r3, [fp, #8] - ldr r2, [sp, #16] - cmp r2, r3 - bls .L1951 - ldrh r1, [fp] - ldrh r2, [r4, #4] - cmp r1, r2 - ldreq r2, [r5, #3460] - ldreq r1, [sp, #12] - streq r2, [r1, r3, lsl #2] -.L1951: - add r9, r9, #1 - b .L1946 -.L1945: - mov r1, #0 - mov r0, #4 -.L1947: - ldrh r2, [r10] - sxth r3, r1 - sub r2, r2, #1 + str r3, [r5, #3452] +.L1815: + add r10, r10, #1 +.L1809: + ldr r2, .L1831+4 + sxth r3, r10 + ldrh r2, [r2] cmp r3, r2 - blt .L1949 -.L1953: - add r7, r7, #1 - b .L1936 -.L1949: - ldr ip, [r5, #3304] - add r1, r1, #1 - ldr r6, [sp, #16] - ldr r2, [ip, r3, lsl #3] - uxth lr, r2 - cmp r6, lr - addhi r3, r0, r3, lsl #3 - movhi r2, lr - ldrhi r3, [ip, r3] - ldrhi ip, [sp, #12] - strhi r3, [ip, r2, lsl #2] - b .L1947 -.L1978: + blt .L1810 + b .L1811 +.L1806: + ldr r3, [r5, #3452] + cmn r3, #1 + beq .L1815 +.L1808: + ldrh r3, [r8, #8] + ldr r2, [fp, #-48] + cmp r3, r2 + bcs .L1815 + ldrh r2, [r4, #4] + ldrh r1, [r8] + cmp r1, r2 + ldreq r2, [r5, #3456] + streq r2, [r9, r3, lsl #2] + b .L1815 +.L1832: .align 2 -.L1977: +.L1831: .word .LANCHOR0 .word .LANCHOR0+304 + .word .LANCHOR0+3452 .word .LANCHOR0+310 .word .LANCHOR1+615 .word .LC128 - .word .LANCHOR0+3456 .word .LC129 - .fnend .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 .global FtlLoadVonderInfo @@ -13100,18 +13582,20 @@ FtlMapTblRecovery: .fpu softvfp .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1981 - push {r4, lr} - .save {r4, lr} - add r2, r3, #320 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L1834 add r0, r3, #3600 + add r2, r3, #320 + add r0, r0, #8 ldrh r2, [r2] - add r0, r0, #12 strh r2, [r0, #10] @ movhi - ldr r2, .L1981+4 + ldr r2, .L1834+4 strh r2, [r0, #4] @ movhi add r2, r3, #344 ldrh r2, [r2] @@ -13120,22 +13604,21 @@ FtlLoadVonderInfo: ldrh r2, [r3, r2] strh r2, [r0, #6] @ movhi ldr r2, [r3, #348] - str r2, [r3, #3624] - ldr r2, [r3, #3372] - str r2, [r3, #3628] + str r2, [r3, #3620] ldr r2, [r3, #3368] + str r2, [r3, #3624] + ldr r2, [r3, #3364] + str r2, [r3, #3628] + ldr r2, [r3, #3372] str r2, [r3, #3632] - ldr r2, [r3, #3376] - str r2, [r3, #3636] bl FtlMapTblRecovery mov r0, #0 - pop {r4, pc} -.L1982: + ldmfd sp, {fp, sp, pc} +.L1835: .align 2 -.L1981: +.L1834: .word .LANCHOR0 .word -3962 - .fnend .size FtlLoadVonderInfo, .-FtlLoadVonderInfo .align 2 .global FtlLoadMapInfo @@ -13144,21 +13627,22 @@ FtlLoadVonderInfo: .fpu softvfp .type FtlLoadMapInfo, %function FtlLoadMapInfo: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc bl FtlL2PDataInit - ldr r0, .L1985 + ldr r0, .L1837 bl FtlMapTblRecovery mov r0, #0 - pop {r4, pc} -.L1986: + ldmfd sp, {fp, sp, pc} +.L1838: .align 2 -.L1985: - .word .LANCHOR0+3396 - .fnend +.L1837: + .word .LANCHOR0+3392 .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 2 .global FtlSysBlkInit @@ -13167,32 +13651,34 @@ FtlLoadMapInfo: .fpu softvfp .type FtlSysBlkInit, %function FtlSysBlkInit: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r2, #0 - ldr r4, .L2004 - movw r3, #3476 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1855 + mov r3, #0 + add r7, r4, #3472 ldrh r0, [r4, #236] - strh r2, [r4, r3] @ movhi + strh r3, [r7] @ movhi bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - movw r3, #2628 - ldrh r2, [r4, r3] + add r3, r4, #2624 + ldrh r2, [r3] movw r3, #65535 cmp r2, r3 - bne .L1988 -.L1990: - mvn r6, #0 -.L1987: - mov r0, r6 - pop {r4, r5, r6, pc} -.L1988: + bne .L1840 +.L1842: + mvn r5, #0 +.L1839: + mov r0, r5 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1840: bl FtlLoadSysInfo - subs r6, r0, #0 - bne .L1990 + subs r5, r0, #0 + bne .L1842 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -13202,29 +13688,30 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov r0, #1 bl FtlUpdateVaildLpn - ldr r2, [r4, #2540] movw r3, #338 - ldrh r1, [r4, r3] + ldr r2, [r4, #2540] mov r0, #12 - mov r3, r6 -.L1991: + ldrh r1, [r4, r3] + mov r3, r5 + add r2, r2, #4 +.L1843: cmp r3, r1 - bge .L1996 - mla ip, r0, r3, r2 - ldr ip, [ip, #4] + bge .L1848 + mul ip, r0, r3 + ldr ip, [r2, ip] cmp ip, #0 - bge .L1992 -.L1996: - ldr r5, .L2004+4 + bge .L1844 +.L1848: + ldr r6, .L1855+4 cmp r3, r1 - ldrh r2, [r5, #28] + ldrh r2, [r6, #28] add r2, r2, #1 - strh r2, [r5, #28] @ movhi - bge .L2002 -.L1993: - ldr r0, .L2004+8 + strh r2, [r6, #28] @ movhi + bge .L1854 +.L1845: + ldr r0, .L1855+8 bl FtlSuperblockPowerLostFix - ldr r0, .L2004+12 + ldr r0, .L1855+12 bl FtlSuperblockPowerLostFix ldrh r3, [r4, #24] ldr r1, [r4, #72] @@ -13232,69 +13719,65 @@ FtlSysBlkInit: lsl r3, r3, #1 ldrh r2, [r1, r3] sub r2, r2, r0 - movw r0, #302 strh r2, [r1, r3] @ movhi + movw r0, #302 ldrh r2, [r4, #76] - ldrh r3, [r4, r0] ldr ip, [r4, #72] - ldrh lr, [r4, #80] + ldrh r3, [r4, r0] lsl r2, r2, #1 strh r3, [r4, #26] @ movhi mov r3, #0 strb r3, [r4, #30] strh r3, [r4, #28] @ movhi + ldrh lr, [r4, #80] ldrh r1, [ip, r2] sub r1, r1, lr strh r1, [ip, r2] @ movhi strb r3, [r4, #82] strh r3, [r4, #80] @ movhi - ldrh r3, [r5, #30] + ldrh r3, [r6, #30] ldrh r2, [r4, r0] add r3, r3, #1 strh r2, [r4, #78] @ movhi - strh r3, [r5, #30] @ movhi + strh r3, [r6, #30] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush - b .L1997 -.L1992: + b .L1849 +.L1844: add r3, r3, #1 - b .L1991 -.L2002: - movw r3, #3476 - ldrh r3, [r4, r3] + b .L1843 +.L1854: + ldrh r3, [r7] cmp r3, #0 - bne .L1993 -.L1997: + bne .L1845 +.L1849: ldrh r0, [r4, #24] movw r3, #65535 cmp r0, r3 - beq .L1998 - ldrh r3, [r4, #28] - cmp r3, #0 - bne .L1998 + beq .L1850 + ldrh r2, [r4, #28] ldrh r3, [r4, #80] - cmp r3, #0 - bne .L1998 + orrs r3, r2, r3 + bne .L1850 bl FtlGcRefreshBlock ldrh r0, [r4, #76] bl FtlGcRefreshBlock bl FtlVpcTblFlush - ldr r0, .L2004+8 + ldr r0, .L1855+8 bl allocate_new_data_superblock - ldr r0, .L2004+12 + ldr r0, .L1855+12 bl allocate_new_data_superblock -.L1998: +.L1850: bl FtlVpcCheckAndModify - b .L1987 -.L2005: + b .L1839 +.L1856: .align 2 -.L2004: +.L1855: .word .LANCHOR0 .word .LANCHOR0+2468 .word .LANCHOR0+24 .word .LANCHOR0+76 - .fnend .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 .global ftl_low_format @@ -13303,155 +13786,156 @@ FtlSysBlkInit: .fpu softvfp .type ftl_low_format, %function ftl_low_format: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r4, .L1881 mov r3, #0 - ldr r4, .L2031 ldrh r0, [r4, #236] + str r3, [r4, #2588] str r3, [r4, #2592] - str r3, [r4, #2596] - str r3, [r4, #2608] + str r3, [r4, #2604] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cmp r0, #0 - beq .L2007 + beq .L1858 bl FtlMakeBbt -.L2007: - ldr r0, .L2031+4 +.L1858: + ldr r0, .L1881+4 mov r2, #0 - ldr ip, .L2031+8 -.L2008: + ldr ip, .L1881+8 +.L1859: ldrh r1, [r0] uxth r3, r2 add r2, r2, #1 cmp r3, r1, lsl #7 - blt .L2009 + blt .L1860 ldrh r6, [r4, #240] mov r5, #0 -.L2010: +.L1861: ldrh r3, [r4, #242] cmp r3, r6 - bhi .L2011 + bhi .L1862 ldrh r1, [r4, #232] sub r3, r5, #3 cmp r3, r1, lsl #1 - bge .L2012 -.L2016: + bge .L1863 +.L1867: mov r5, #0 - mov r7, r5 -.L2013: + mov r6, r5 +.L1864: ldrh r3, [r4, #240] uxth r0, r5 - add r5, r5, #1 cmp r3, r0 - bhi .L2017 - ldrh r3, [r4, #242] - ldrh r5, [r4, #232] + bhi .L1868 + ldrh r9, [r4, #232] + movw r8, #2620 ldr r10, [r4, #244] - str r3, [r4, #3288] - mov r1, r5 - ldr r6, .L2031+12 + ldrh r3, [r4, #242] + mov r1, r9 mov r0, r10 + str r3, [r4, #3284] bl __aeabi_uidiv - ubfx r8, r0, #5, #16 - mov r9, r0 - add r3, r8, #36 - str r0, [r4, #2556] - strh r3, [r6] @ movhi + ubfx r7, r0, #5, #16 + add r3, r7, #36 + strh r3, [r4, r8] @ movhi mov r3, #24 - mul r3, r3, r5 - cmp r7, r3 - ble .L2018 - mov r1, r5 - sub r0, r10, r7 + mov r5, r0 + str r0, [r4, #2552] + mul r3, r3, r9 + cmp r6, r3 + ble .L1869 + mov r1, r9 + sub r0, r10, r6 bl __aeabi_uidiv - str r0, [r4, #2556] - lsr r0, r0, #5 - add r0, r0, #24 - strh r0, [r6] @ movhi -.L2018: + lsr r3, r0, #5 + add r3, r3, #24 + str r0, [r4, #2552] + strh r3, [r4, r8] @ movhi +.L1869: movw r3, #294 ldrh r3, [r4, r3] cmp r3, #0 - beq .L2020 - ldrh r2, [r6] - add r2, r2, r3, lsr #1 - strh r2, [r6] @ movhi - mul r2, r5, r3 - cmp r7, r2 + beq .L1871 + movw r2, #2620 + ldrh r1, [r4, r2] + add r1, r1, r3, lsr #1 + strh r1, [r4, r2] @ movhi + mul r1, r9, r3 + cmp r6, r1 + strlt r5, [r4, #2552] addlt r3, r3, #32 - strlt r9, [r4, #2556] - addlt r3, r8, r3 - strhlt r3, [r6] @ movhi -.L2020: - ldrh r2, [r6] - ldr r3, [r4, #2556] - ldr r6, .L2031+16 - sub r3, r3, r2 - mul r5, r5, r3 + addlt r3, r7, r3 + strhlt r3, [r4, r2] @ movhi +.L1871: + movw r3, #2620 + ldr r1, [r4, #2552] + ldr r6, .L1881+12 + mvn r5, #0 + ldrh r3, [r4, r3] + sub r1, r1, r3 movw r3, #302 ldrh r3, [r4, r3] - str r5, [r4, #3676] - mul r5, r5, r3 + mul r1, r9, r1 + str r1, [r4, #3672] + mul r1, r1, r3 movw r3, #258 + str r1, [r4, #2552] ldrh r3, [r4, r3] - str r5, [r4, #2556] - mul r5, r5, r3 - str r5, [r4, #340] + mul r1, r1, r3 + str r1, [r4, #340] bl FtlBbmTblFlush ldrh r2, [r4, #242] mov r1, #0 ldr r0, [r4, #72] lsl r2, r2, #1 bl ftl_memset - mvn r2, #0 mov r3, #0 - mov r5, r2 + movw r2, #65535 str r3, [r4, #2548] - strh r3, [r4, #174] @ movhi strb r3, [r4, #178] strb r3, [r4, #180] - strh r3, [r4, #26] @ movhi strb r3, [r4, #30] - strh r3, [r4, #24] @ movhi + str r3, [r4, #24] mov r3, #1 - strh r2, [r4, #172] @ movhi + str r2, [r4, #172] strb r3, [r4, #32] -.L2022: +.L1873: mov r0, r6 bl make_superblock ldrb r3, [r4, #31] @ zero_extendqisi2 cmp r3, #0 ldrh r3, [r4, #24] - bne .L2023 - ldr r2, [r4, #72] + bne .L1874 lsl r3, r3, #1 + ldr r2, [r4, #72] strh r5, [r2, r3] @ movhi ldrh r3, [r4, #24] add r3, r3, #1 strh r3, [r4, #24] @ movhi - b .L2022 -.L2009: - ldr lr, [r4, #3316] + b .L1873 +.L1860: + ldr lr, [r4, #3312] mvn r1, r3 orr r1, r3, r1, lsl #16 str r1, [lr, r3, lsl #2] - ldr r1, [r4, #3320] + ldr r1, [r4, #3316] str ip, [r1, r3, lsl #2] - b .L2008 -.L2011: + b .L1859 +.L1862: mov r0, r6 mov r1, #1 - bl FtlLowFormatEraseBlock add r6, r6, #1 - add r5, r5, r0 - uxth r5, r5 + bl FtlLowFormatEraseBlock + add r5, r0, r5 uxth r6, r6 - b .L2010 -.L2012: + uxth r5, r5 + b .L1861 +.L1863: mov r0, r5 bl __aeabi_uidiv ldr r3, [r4, #332] @@ -13461,32 +13945,33 @@ ftl_low_format: ldrh r0, [r4, #236] bl FtlFreeSysBlkQueueInit ldrh r5, [r4, #240] -.L2014: +.L1865: ldrh r3, [r4, #242] cmp r3, r5 - bls .L2016 + bls .L1867 mov r0, r5 + add r5, r5, #1 mov r1, #1 + uxth r5, r5 + bl FtlLowFormatEraseBlock + b .L1865 +.L1868: + mov r1, #0 add r5, r5, #1 bl FtlLowFormatEraseBlock - uxth r5, r5 - b .L2014 -.L2017: - mov r1, #0 - bl FtlLowFormatEraseBlock - add r7, r7, r0 - uxth r7, r7 - b .L2013 -.L2023: - ldr r2, [r4, #2592] + add r6, r0, r6 + uxth r6, r6 + b .L1864 +.L1874: + ldr r2, [r4, #2588] lsl r3, r3, #1 - ldrh r1, [r4, #28] - mvn r5, #0 - ldr r6, .L2031+20 str r2, [r4, #36] + mvn r5, #0 add r2, r2, #1 - str r2, [r4, #2592] + str r2, [r4, #2588] ldr r2, [r4, #72] + ldrh r1, [r4, #28] + ldr r6, .L1881+16 strh r1, [r2, r3] @ movhi mov r3, #0 strh r3, [r4, #78] @ movhi @@ -13496,64 +13981,61 @@ ftl_low_format: strh r3, [r4, #76] @ movhi mov r3, #1 strb r3, [r4, #84] -.L2024: +.L1875: mov r0, r6 bl make_superblock ldrb r3, [r4, #83] @ zero_extendqisi2 cmp r3, #0 ldrh r3, [r4, #76] - bne .L2025 - ldr r2, [r4, #72] + bne .L1876 lsl r3, r3, #1 + ldr r2, [r4, #72] strh r5, [r2, r3] @ movhi ldrh r3, [r4, #76] add r3, r3, #1 strh r3, [r4, #76] @ movhi - b .L2024 -.L2025: - ldr r2, [r4, #2592] + b .L1875 +.L1876: + ldr r2, [r4, #2588] lsl r3, r3, #1 - ldrh r1, [r4, #80] - mvn r5, #0 str r2, [r4, #88] + mvn r5, #0 add r2, r2, #1 - str r2, [r4, #2592] + str r2, [r4, #2588] ldr r2, [r4, #72] + ldrh r1, [r4, #80] strh r1, [r2, r3] @ movhi strh r5, [r4, #124] @ movhi bl FtlFreeSysBlkQueueOut - ldr r3, .L2031+24 - movw r2, #2628 - strh r0, [r4, r2] @ movhi + ldr r3, .L1881+20 mov r2, #0 strh r2, [r3, #2] @ movhi - ldr r2, [r4, #3676] - strh r5, [r3, #4] @ movhi + ldr r2, [r4, #3672] strh r2, [r3, #6] @ movhi - ldr r3, [r4, #2592] - str r3, [r4, #2636] + strh r5, [r3, #4] @ movhi + strh r0, [r3] @ movhi + ldr r3, [r4, #2588] + str r3, [r4, #2632] add r3, r3, #1 - str r3, [r4, #2592] + str r3, [r4, #2588] bl FtlVpcTblFlush bl FtlSysBlkInit cmp r0, #0 mov r0, #0 - ldreq r3, .L2031+28 moveq r2, #1 + ldreq r3, .L1881+24 streq r2, [r3] - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2032: + ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1882: .align 2 -.L2031: +.L1881: .word .LANCHOR0 .word .LANCHOR0+258 .word 168778952 - .word .LANCHOR0+2624 .word .LANCHOR0+24 .word .LANCHOR0+76 - .word .LANCHOR0+2628 + .word .LANCHOR0+2624 .word .LANCHOR2 - .fnend .size ftl_low_format, .-ftl_low_format .align 2 .global sftl_init @@ -13562,16 +14044,18 @@ ftl_low_format: .fpu softvfp .type sftl_init, %function sftl_init: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L1887 mvn r3, #0 - ldr r4, .L2040 - ldr r5, .L2040+4 - ldr r1, .L2040+8 - ldr r0, .L2040+12 + ldr r4, .L1887+4 + ldr r1, .L1887+8 + ldr r0, .L1887+12 str r3, [r5] bl sftl_printk mov r0, r4 @@ -13582,34 +14066,41 @@ sftl_init: bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cmp r0, #0 - bne .L2037 + bne .L1884 bl FtlSysBlkInit cmp r0, #0 - bne .L2037 + bne .L1884 mov r3, #1 str r3, [r5] ldrh r3, [r4, #224] cmp r3, #15 - bhi .L2037 + bhi .L1884 movw r4, #8129 -.L2036: +.L1885: mov r1, #1 mov r0, #0 bl rk_ftl_garbage_collect subs r4, r4, #1 - bne .L2036 -.L2037: + bne .L1885 +.L1884: mov r0, #0 - pop {r4, r5, r6, pc} -.L2041: + ldmfd sp, {r4, r5, fp, sp, pc} +.L1888: .align 2 -.L2040: - .word .LANCHOR0 +.L1887: .word .LANCHOR2 + .word .LANCHOR0 .word .LC0 .word .LC77 - .fnend .size sftl_init, .-sftl_init + .section .rodata.str1.1 +.LC130: + .ascii "write_idblock %x %x\012\000" +.LC131: + .ascii "write_idblock fail! %x %x %x %x\012\000" +.LC132: + .ascii "%s idb buffer alloc fail\012\000" + .text .align 2 .global FtlWriteToIDB .syntax unified @@ -13617,381 +14108,388 @@ sftl_init: .fpu softvfp .type FtlWriteToIDB, %function FtlWriteToIDB: - .fnstart @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - add r8, r1, r0 - ldr r3, .L2103 - sub r10, r8, #1 - cmp r10, #63 - .pad #116 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #116 - movhi r9, #0 - movls r9, #1 - ldr r3, [r3] + push {lr} + bl __gnu_mcount_nc + mov r3, sp + add r8, r1, r0 + bic r3, r3, #8128 + sub r9, r8, #1 + bic r3, r3, #63 + cmp r9, #63 + ldr r5, .L1948 + mov r4, r0 + movhi r10, #0 + movls r10, #1 + ldr r3, [r3, #24] cmp r0, #576 - orrcs r9, r9, #1 - cmp r9, #0 - ldr r5, .L2103+4 - str r3, [sp, #108] - beq .L2043 - ldr r3, [r5, #3680] + orrcs r10, r10, #1 + mov r6, r1 + mov r7, r2 + cmp r10, #0 + str r3, [fp, #-48] + beq .L1890 + ldr r3, [r5, #3676] cmp r3, #0 - bne .L2044 -.L2102: + bne .L1891 +.L1947: mov r4, #0 - b .L2042 -.L2044: - ldr r7, [r5, #3684] - ldr r3, .L2103+8 - ldr r2, [r7] + b .L1889 +.L1891: + ldr r8, [r5, #3680] + ldr r3, .L1948+4 + ldr r2, [r8] cmp r2, r3 - bne .L2046 + bne .L1893 ldrh r1, [r5, #10] - add r0, r7, #260096 + add r0, r8, #260096 mov r2, #0 movw r3, #65023 -.L2050: +.L1897: ldr ip, [r0, #-4]! cmp ip, #0 - bne .L2047 - ldr ip, [r7, r2, lsl #2] + bne .L1894 + ldr ip, [r8, r2, lsl #2] add r2, r2, #1 cmp r2, #4096 sub r3, r3, #1 + str ip, [r0, #2048] movhi r2, #0 cmp r3, #4096 - str ip, [r0, #2048] - bne .L2050 - mov fp, #512 - b .L2049 -.L2047: + bne .L1897 + mov r3, #512 + b .L1946 +.L1894: add r3, r3, #127 - lsr fp, r3, #7 -.L2049: + lsr r3, r3, #7 +.L1946: + str r3, [fp, #-120] lsl r1, r1, #2 - add r0, fp, #4 - ldr r4, .L2103+4 + ldr r3, [fp, #-120] uxth r1, r1 + add r0, r3, #4 bl __aeabi_uidiv add r3, r0, #1 - mov r1, fp mov r2, r3 - ldr r0, .L2103+12 - str r3, [sp, #16] + ldr r1, [fp, #-120] + ldr r0, .L1948+8 + str r3, [fp, #-124] bl sftl_printk - lsl r3, fp, #7 - str r3, [sp, #28] + ldr r3, [fp, #-120] + lsl r3, r3, #7 + str r3, [fp, #-140] mov r3, #0 - str r3, [sp, #20] - str r3, [sp, #12] -.L2051: - ldr r3, [sp, #16] - ldr r2, [sp, #12] - add r3, r3, r2 + mov r10, r3 + str r3, [fp, #-128] +.L1898: + ldr r3, [fp, #-124] + add r3, r3, r10 + str r3, [fp, #-132] cmp r3, #8 - str r3, [sp, #24] - bls .L2073 - ldr r3, [sp, #20] + bls .L1920 + ldr r3, [fp, #-128] cmp r3, #0 - bne .L2074 -.L2046: - mvn fp, #0 -.L2074: - ldr r5, .L2103+4 - mov r3, #0 - mov r4, fp - ldr r0, [r5, #3684] - str r3, [r5, #3680] - bl kfree - ldr r0, [r5, #3688] - bl kfree -.L2042: - ldr r3, .L2103 - mov r0, r4 - ldr r2, [sp, #108] - ldr r3, [r3] - cmp r2, r3 - beq .L2081 - bl __stack_chk_fail -.L2073: + bne .L1919 +.L1893: + mvn r3, #0 + str r3, [fp, #-120] + b .L1919 +.L1920: + ldr r4, .L1948 mov r2, #512 mov r1, #0 - ldr r0, [r4, #3688] + ldr r0, [r4, #3684] bl memset - ldrh r6, [r4, #10] - ldr r3, [sp, #12] - mul r9, r6, r3 + ldrh r5, [r4, #10] + mul r3, r5, r10 + str r3, [fp, #-136] + ldr r3, [r4, #3260] + cmp r3, #0 + moveq r6, #6 + beq .L1899 ldr r3, [r4, #3264] cmp r3, #0 - moveq r8, #6 - beq .L2052 - ldr r3, [r4, #3268] - cmp r3, #0 - moveq r8, #6 - movne r8, #9 -.L2052: - mov r10, r9 - mov r5, #0 -.L2053: - ldr r3, [r4, #3252] - mov r1, r10 + moveq r6, #6 + movne r6, #9 +.L1899: + mul r9, r5, r10 + ldr r7, .L1948 + mov r4, #0 +.L1900: + ldr r3, [r7, #3248] + mov r1, r9 mov r0, #0 - add r5, r5, #1 + add r4, r4, #1 blx r3 - ldr r3, [sp, #16] - add r10, r10, r6 - cmp r3, r5 - bhi .L2053 - cmp r8, #9 - movne r5, #0 - bne .L2054 - ldr r5, [r4, #3688] + ldr r3, [fp, #-124] + add r9, r9, r5 + cmp r3, r4 + bhi .L1900 + cmp r6, #9 + movne r4, #0 + bne .L1901 + ldr r4, [r7, #3684] mov r2, #1024 mov r1, #0 - mov r0, r5 + mov r0, r4 bl ftl_memset - ldr r3, .L2103+16 + ldr r3, .L1948+12 + str r3, [r4] mov r1, #12 - mov r2, #4 - str r1, [r5, #4] - strb r2, [r5, #17] - add r0, r5, r1 - str r3, [r5] + str r1, [r4, #4] mov r3, #0 - ldrh r2, [r4, #10] - str r3, [r5, #12] - strb r3, [r5, #16] - strh r2, [r5, #18] @ movhi - mov r2, #16 - strb r3, [r5, #20] - strb r2, [r5, #21] - strh r3, [r5, #22] @ movhi + str r3, [r4, #12] + mov r3, #1024 + strh r3, [r4, #16] @ movhi + add r0, r4, r1 + ldrh r3, [r7, #10] + strh r3, [r4, #18] @ movhi + mov r3, #4096 + str r3, [r4, #20] bl js_hash - str r0, [r5, #8] -.L2054: - ldr r3, [sp, #16] - mov r10, r7 - mul r3, r6, r3 - mov r6, #0 - str r3, [sp, #32] -.L2055: - ldr r3, [sp, #32] - cmp r6, r3 - beq .L2062 - cmp r8, #9 - lslne r3, r6, #2 - addeq r3, r6, #1 - cmp r6, #0 - cmpeq r8, #9 - str r3, [sp, #44] + str r0, [r4, #8] +.L1901: + ldr r3, [fp, #-124] + mov r9, r8 + ldr r7, .L1948 + mul r3, r5, r3 + mov r5, #0 + str r3, [fp, #-144] +.L1902: + ldr r3, [fp, #-144] + cmp r5, r3 + beq .L1909 + cmp r6, #9 + addeq r3, r5, #1 + lslne r3, r5, #2 + cmp r5, #0 + cmpeq r6, #9 + str r3, [fp, #-112] movw r3, #61424 - str r3, [sp, #48] + str r3, [fp, #-108] moveq r0, #1 movne r0, #0 - bne .L2058 - ldr r3, [r4, #3264] + bne .L1905 + ldr r3, [r7, #3260] mov r0, #70 blx r3 - mov r2, r5 - add r3, sp, #44 - mov r1, r9 - ldr ip, [r4, #3256] + mov r2, r4 + ldr r1, [fp, #-136] + sub r3, fp, #112 + ldr ip, [r7, #3252] mov r0, #0 blx ip - ldr r3, [r4, #3264] - str r0, [sp, #36] - ldrb r0, [r4, #22] @ zero_extendqisi2 + ldr r3, [r7, #3260] + str r0, [fp, #-148] + ldrb r0, [r7, #22] @ zero_extendqisi2 blx r3 - ldr r2, [sp, #36] + ldr r2, [fp, #-148] cmn r2, #1 - bne .L2059 -.L2062: - ldrb r3, [r4, #14] @ zero_extendqisi2 - ldr r2, [sp, #12] - ldr r6, [r4, #3688] - str r3, [sp, #32] - ldrh r3, [r4, #10] - mul r9, r3, r2 - ldr r2, [r4, #3264] - cmp r2, #0 - moveq r8, #6 - beq .L2061 - ldr r2, [r4, #3268] - cmp r2, #0 - moveq r8, #6 - movne r8, #9 -.L2061: - ldr r2, [sp, #16] + bne .L1906 +.L1909: + ldr r3, .L1948 + ldrb r2, [r3, #14] @ zero_extendqisi2 + ldr r1, [r3, #3260] + str r2, [fp, #-136] + ldrh r2, [r3, #10] + cmp r1, #0 + ldr r9, [r3, #3684] + moveq r6, #6 + mul r7, r2, r10 + beq .L1908 + ldr r3, [r3, #3264] + cmp r3, #0 + moveq r6, #6 + movne r6, #9 +.L1908: + ldr r3, [fp, #-124] mov r5, #0 - mul r10, r3, r2 -.L2064: - cmp r5, r10 - beq .L2068 + ldr r4, .L1948 + mul r3, r2, r3 + str r3, [fp, #-144] +.L1911: + ldr r3, [fp, #-144] + cmp r5, r3 + beq .L1915 cmp r5, #0 - cmpeq r8, #9 + cmpeq r6, #9 moveq r0, #1 movne r0, #0 - bne .L2065 - ldr r3, [r4, #3264] + bne .L1912 + ldr r3, [r4, #3260] mov r0, #70 blx r3 - ldr r3, [r4, #3268] + ldr r3, [r4, #3264] mov r0, #2 blx r3 - mov r2, r6 - mov r1, r9 - ldr ip, [r4, #3260] - add r3, sp, #44 + mov r2, r9 + ldr ip, [r4, #3256] + mov r1, r7 + sub r3, fp, #112 mov r0, #0 blx ip - ldr r3, [r4, #3268] - ldr r0, [sp, #32] - blx r3 ldr r3, [r4, #3264] + ldr r0, [fp, #-136] + blx r3 + ldr r3, [r4, #3260] ldrb r0, [r4, #22] @ zero_extendqisi2 blx r3 - ldr r3, [r6] - ldr r2, .L2103+16 + ldr r3, [r9] + ldr r2, .L1948+12 cmp r3, r2 - beq .L2066 -.L2068: - ldr r0, [r4, #3688] - mov r3, r7 - mov r5, #0 + beq .L1913 +.L1915: + ldr r3, .L1948 + mov r4, #0 + ldr r0, [r3, #3684] + mov r3, r8 mov r2, r0 -.L2067: - mov r6, r2 - mov r8, r3 - ldr ip, [r6] +.L1914: + mov r5, r2 + mov r6, r3 add r2, r2, #4 - ldr r1, [r8] add r3, r3, #4 + ldr ip, [r5] + ldr r1, [r6] cmp ip, r1 - beq .L2070 + beq .L1917 mov r2, #512 mov r1, #0 bl memset - ldr r0, .L2103+20 - str r5, [sp] - ldr r1, [sp, #12] - ldr r3, [r8] - ldr r2, [r6] + str r4, [sp] + ldr r0, .L1948+16 + mov r1, r10 + ldr r3, [r6] + ldr r2, [r5] bl sftl_printk - ldrh r1, [r4, #10] + ldr r3, .L1948 mov r0, #0 - ldr r2, [sp, #12] - ldr r3, [r4, #3252] - mul r1, r2, r1 + ldrh r1, [r3, #10] + ldr r3, [r3, #3248] + mul r1, r10, r1 blx r3 -.L2071: - ldr r3, [sp, #24] - str r3, [sp, #12] - b .L2051 -.L2058: - add r3, sp, #44 - mov r2, r10 - add r1, r9, r6 +.L1918: + ldr r10, [fp, #-132] + b .L1898 +.L1905: + ldr r1, [fp, #-136] + sub r3, fp, #112 + ldr ip, [r7, #3252] + mov r2, r9 + add r1, r1, r5 + blx ip + cmn r0, #1 + beq .L1909 + add r9, r9, #2048 +.L1906: + add r5, r5, #1 + b .L1902 +.L1912: ldr ip, [r4, #3256] + sub r3, fp, #112 + mov r2, r9 + add r1, r7, r5 blx ip cmn r0, #1 - beq .L2062 - add r10, r10, #2048 -.L2059: - add r6, r6, #1 - b .L2055 -.L2065: - add r3, sp, #44 - mov r2, r6 - add r1, r9, r5 - ldr ip, [r4, #3260] - blx ip - cmn r0, #1 - beq .L2068 - ldr r2, [sp, #48] + beq .L1915 + ldr r1, [fp, #-108] movw r3, #61424 - cmp r2, r3 - bne .L2068 - add r6, r6, #2048 -.L2066: + cmp r1, r3 + bne .L1915 + add r9, r9, #2048 +.L1913: add r5, r5, #1 - b .L2064 -.L2070: - ldr r1, [sp, #28] - add r5, r5, #1 - cmp r5, r1 - bne .L2067 - ldr r3, [sp, #20] + b .L1911 +.L1917: + ldr r1, [fp, #-140] + add r4, r4, #1 + cmp r4, r1 + bcc .L1914 + ldr r3, [fp, #-128] add r3, r3, #1 + str r3, [fp, #-128] cmp r3, #5 - str r3, [sp, #20] - bls .L2071 - b .L2074 -.L2043: - cmp r0, #64 - mov r4, r0 - mov r6, r1 - mov r7, r2 - bne .L2075 - mov r0, #262144 - bl ftl_malloc - str r0, [r5, #3684] - mov r0, #262144 - bl ftl_malloc - ldr r3, [r5, #3684] - str r0, [r5, #3688] - cmp r3, #0 - cmpne r0, #0 - beq .L2076 - mov r2, #1 - mov r1, r9 - str r2, [r5, #3680] - mov r0, r3 - mov r2, #262144 - bl ftl_memset -.L2075: - ldr r3, [r5, #3680] - cmp r3, #0 - beq .L2102 - cmp r4, #63 + bls .L1918 +.L1919: + ldr r5, .L1948 + mov r3, #0 + ldr r4, [fp, #-120] + ldr r0, [r5, #3680] + str r3, [r5, #3676] + bl kfree ldr r0, [r5, #3684] - ldrhi r3, .L2103+24 - rsbls r1, r4, #64 - subls r6, r6, r1 - movhi r1, r7 - addls r1, r7, r1, lsl #9 - addhi r3, r4, r3 + bl kfree +.L1889: + mov r3, sp + ldr r2, [fp, #-48] + bic r3, r3, #8128 + bic r3, r3, #63 + ldr r3, [r3, #24] + cmp r2, r3 + beq .L1928 + bl __stack_chk_fail +.L1890: + cmp r0, #64 + bne .L1921 + mov r0, #262144 + bl ftl_malloc + str r0, [r5, #3680] + mov r0, #262144 + bl ftl_malloc + mov r3, r0 + str r0, [r5, #3684] + ldr r0, [r5, #3680] + cmp r0, #0 + cmpne r3, #0 + beq .L1922 + mov r1, r10 + mov r2, #262144 + mov r3, #1 + str r3, [r5, #3676] + bl ftl_memset +.L1923: + cmp r4, #63 + ldr r0, [r5, #3680] + sub r3, r4, #64 + rsbls r4, r4, #64 + addls r6, r6, r3 + addls r7, r7, r4, lsl #9 addhi r0, r0, r3, lsl #9 - cmp r10, #576 + cmp r9, #576 + mov r1, r7 rsbcs r8, r8, #576 addcs r6, r6, r8 lsl r2, r6, #9 bl ftl_memcpy - b .L2102 -.L2076: - ldr r1, .L2103+28 - ldr r0, .L2103+32 + b .L1947 +.L1922: + ldr r1, .L1948+20 + ldr r0, .L1948+24 bl sftl_printk - b .L2075 -.L2081: - add sp, sp, #116 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2104: +.L1921: + ldr r3, [r5, #3676] + cmp r3, #0 + bne .L1923 + b .L1947 +.L1928: + mov r0, r4 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1949: .align 2 -.L2103: - .word __stack_chk_guard +.L1948: .word .LANCHOR0 .word -52655045 .word .LC130 .word 1179535694 .word .LC131 - .word 8388544 .word .LANCHOR1+633 .word .LC132 - .fnend .size FtlWriteToIDB, .-FtlWriteToIDB .align 2 .global sftl_write @@ -14000,11 +14498,13 @@ FtlWriteToIDB: .fpu softvfp .type sftl_write, %function sftl_write: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r5, r1 mov r6, r2 mov r4, r0 @@ -14013,9 +14513,8 @@ sftl_write: mov r2, r5 mov r1, r4 mov r0, #0 - pop {r4, r5, r6, lr} - b FtlWrite - .fnend + bl FtlWrite + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} .size sftl_write, .-sftl_write .align 2 .global rk_sftl_vendor_dev_ops_register @@ -14024,23 +14523,25 @@ sftl_write: .fpu softvfp .type rk_sftl_vendor_dev_ops_register, %function rk_sftl_vendor_dev_ops_register: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L2110 - ldr r3, [r2, #3692] - cmp r3, #0 - streq r0, [r2, #3692] - moveq r0, r3 - streq r1, [r2, #3696] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L1954 + mov r2, r0 + ldr r0, [r3, #3688] + cmp r0, #0 + streq r2, [r3, #3688] + streq r1, [r3, #3692] mvnne r0, #0 - bx lr -.L2111: + ldmfd sp, {fp, sp, pc} +.L1955: .align 2 -.L2110: +.L1954: .word .LANCHOR0 - .fnend .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register .align 2 .global rk_sftl_vendor_storage_init @@ -14049,88 +14550,89 @@ rk_sftl_vendor_dev_ops_register: .fpu softvfp .type rk_sftl_vendor_storage_init, %function rk_sftl_vendor_storage_init: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r5, .L1965 mov r0, #65536 - ldr r5, .L2122 bl ftl_malloc cmp r0, #0 - str r0, [r5, #3700] - mvneq r9, #11 - beq .L2112 - ldr r10, .L2122+4 - mov r7, #0 - mov r6, r7 - mov r8, r7 -.L2116: - ldr r3, [r5, #3692] + mvneq r4, #11 + str r0, [r5, #3696] + beq .L1956 + ldr r9, .L1965+4 + mov r8, #0 + mov r7, r8 + mov r6, r8 +.L1960: + ldr r3, [r5, #3688] + lsl r0, r6, #7 + ldr r2, [r5, #3696] mov r1, #128 - ldr r2, [r5, #3700] + blx r3 + subs r4, r0, #0 + bne .L1958 + ldr r3, [r5, #3696] + ldr r2, [r3] + cmp r2, r9 + bne .L1959 + add r1, r3, #61440 + ldr r2, [r3, #4] + cmp r2, r7 + ldr r1, [r1, #4092] + sub r1, r1, r2 + clz r1, r1 + lsr r1, r1, #5 + movls r1, #0 + cmp r1, #0 + movne r8, r6 + movne r7, r2 +.L1959: + cmp r6, #1 + bne .L1964 + cmp r7, #0 + beq .L1961 + ldr r4, [r5, #3688] + mov r2, r3 lsl r0, r8, #7 - blx r3 - subs r9, r0, #0 - bne .L2114 - ldr r4, [r5, #3700] - ldr r3, [r4] - cmp r3, r10 - bne .L2115 - add r2, r4, #61440 - ldr r3, [r4, #4] - ldr r2, [r2, #4092] - cmp r3, r6 - sub r2, r2, r3 - clz r2, r2 - lsr r2, r2, #5 - movls r2, #0 - cmp r2, #0 - movne r7, r8 - movne r6, r3 -.L2115: - add r8, r8, #1 - cmp r8, #2 - bne .L2116 - cmp r6, #0 - beq .L2117 - ldr r3, [r5, #3692] - mov r2, r4 mov r1, #128 - lsl r0, r7, #7 - blx r3 - subs r9, r0, #0 - beq .L2112 -.L2114: - ldr r0, [r5, #3700] - mvn r9, #0 + blx r4 + subs r4, r0, #0 + beq .L1956 +.L1958: + ldr r0, [r5, #3696] + mvn r4, #0 bl kfree mov r3, #0 - str r3, [r5, #3700] - b .L2112 -.L2117: + str r3, [r5, #3696] + b .L1956 +.L1964: + mov r6, #1 + b .L1960 +.L1961: mov r2, #65536 - mov r1, r6 - mov r0, r4 + mov r1, r7 + mov r0, r3 bl memset - mov r3, #1 - add r2, r4, #61440 - str r3, [r4, #4] - str r10, [r4] - str r3, [r2, #4092] - ldr r3, .L2122+8 - strh r6, [r4, #12] @ movhi - strh r3, [r4, #14] @ movhi -.L2112: - mov r0, r9 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2123: + add r2, r0, #61440 + str r6, [r0, #4] + str r9, [r0] + str r6, [r2, #4092] + ldr r2, .L1965+8 + strh r2, [r0, #14] @ movhi +.L1956: + mov r0, r4 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1966: .align 2 -.L2122: +.L1965: .word .LANCHOR0 .word 1380668996 .word -1032 - .fnend .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init .align 2 .global rk_sftl_vendor_read @@ -14139,49 +14641,49 @@ rk_sftl_vendor_storage_init: .fpu softvfp .type rk_sftl_vendor_read, %function rk_sftl_vendor_read: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2134 - ldr ip, [r3, #3700] - cmp ip, #0 - beq .L2129 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r3, #0 - ldrh r4, [ip, #10] -.L2126: - cmp r3, r4 - bcc .L2128 - mvn r0, #0 - pop {r4, r5, r6, pc} -.L2128: - add lr, ip, r3, lsl #3 - ldrh r5, [lr, #16] - cmp r5, r0 - bne .L2127 - ldrh r4, [lr, #20] + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r3, .L1973 + mov r4, r0 mov r0, r1 - ldrh r1, [lr, #18] + ldr r3, [r3, #3696] + cmp r3, #0 + addne r5, r3, #16 + movne lr, #0 + ldrhne r1, [r3, #10] + bne .L1969 +.L1972: + mvn r0, #0 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1970: + add lr, lr, #1 +.L1969: + cmp r1, lr + bls .L1972 + lsl ip, lr, #3 + ldrh r6, [r5, ip] + cmp r6, r4 + bne .L1970 + add ip, r3, ip + ldrh r4, [ip, #20] + ldrh r1, [ip, #18] cmp r4, r2 movcs r4, r2 add r1, r1, #1024 mov r2, r4 - add r1, ip, r1 + add r1, r3, r1 bl memcpy mov r0, r4 - pop {r4, r5, r6, pc} -.L2127: - add r3, r3, #1 - b .L2126 -.L2129: - mvn r0, #0 - bx lr -.L2135: + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1974: .align 2 -.L2134: +.L1973: .word .LANCHOR0 - .fnend .size rk_sftl_vendor_read, .-rk_sftl_vendor_read .align 2 .global rk_sftl_vendor_write @@ -14190,45 +14692,50 @@ rk_sftl_vendor_read: .fpu softvfp .type rk_sftl_vendor_write, %function rk_sftl_vendor_write: - .fnstart @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #28 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 sub sp, sp, #28 - ldr r9, .L2156 - ldr r4, [r9, #3700] + push {lr} + bl __gnu_mcount_nc + ldr r9, .L1994 + mov r8, r1 + mov r7, r2 + str r0, [fp, #-52] + ldr r4, [r9, #3696] cmp r4, #0 - beq .L2151 - mov r8, r2 + beq .L1990 + add r3, r7, #63 ldrh r2, [r4, #10] - add r6, r8, #63 + bic r3, r3, #63 + str r3, [fp, #-48] ldrh r3, [r4, #8] - mov fp, r1 - bic r6, r6, #63 - mov r7, #0 - str r3, [sp, #4] -.L2138: - cmp r7, r2 - bcc .L2146 + mov r6, #0 + str r3, [fp, #-56] + add r3, r4, #16 +.L1977: + cmp r6, r2 + bcc .L1985 ldrh r1, [r4, #14] - cmp r6, r1 - bhi .L2151 + ldr r3, [fp, #-48] + cmp r1, r3 + bcc .L1990 add r3, r4, r2, lsl #3 - uxth r6, r6 - strh r0, [r3, #16] @ movhi - ldrh r2, [r4, #12] - strh r8, [r3, #20] @ movhi - strh r2, [r3, #18] @ movhi - add r2, r2, r6 - sub r6, r1, r6 - strh r2, [r4, #12] @ movhi - strh r6, [r4, #14] @ movhi - mov r2, r8 - ldrh r0, [r3, #18] - mov r1, fp + ldr r2, [fp, #-52] + strh r2, [r3, #16] @ movhi + ldrh r0, [r4, #12] + strh r0, [r3, #18] @ movhi + strh r7, [r3, #20] @ movhi + ldrh r3, [fp, #-48] + add r2, r0, r3 add r0, r0, #1024 + sub r3, r1, r3 + strh r2, [r4, #12] @ movhi + strh r3, [r4, #14] @ movhi + mov r2, r7 + mov r1, r8 add r0, r4, r0 bl memcpy ldrh r3, [r4, #10] @@ -14245,73 +14752,75 @@ rk_sftl_vendor_write: cmp r3, #1 movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, [r9, #3696] - b .L2155 -.L2146: - add r5, r4, r7, lsl #3 - ldrh r3, [r5, #16] - cmp r3, r0 - str r3, [sp, #8] - bne .L2139 - ldrh r1, [r5, #20] + ldr r3, [r9, #3692] + b .L1993 +.L1985: + lsl r5, r6, #3 + ldr r0, [fp, #-52] + ldrh r1, [r3, r5] + cmp r1, r0 + bne .L1978 + add r5, r4, r5 add r3, r4, #1024 + ldrh r1, [r5, #20] add r1, r1, #63 bic r1, r1, #63 - cmp r8, r1 - str r1, [sp, #12] - bls .L2140 + str r1, [fp, #-60] + cmp r7, r1 + bls .L1979 ldrh r1, [r4, #14] - cmp r6, r1 - subls r2, r2, #1 - ldrhls r10, [r5, #18] - strls r2, [sp, #16] - bls .L2141 -.L2151: + ldr r0, [fp, #-48] + cmp r1, r0 + subcs r2, r2, #1 + strcs r2, [fp, #-64] + ldrhcs r10, [r5, #18] + bcs .L1980 +.L1990: mvn r0, #0 - b .L2136 -.L2142: - ldrh r9, [r5, #20] - add r0, r3, r10 + b .L1975 +.L1981: ldrh r2, [r5, #16] - add r7, r7, #1 - ldrh r1, [r5, #18] - strh r9, [r5, #12] @ movhi - add r9, r9, #63 - bic r9, r9, #63 + add r0, r3, r10 strh r2, [r5, #8] @ movhi - strh r10, [r5, #10] @ movhi + add r6, r6, #1 + ldrh r2, [r5, #20] + ldrh r1, [r5, #18] + strh r2, [r5, #12] @ movhi + add r2, r2, #63 + strh r9, [r5, #10] @ movhi + bic r9, r2, #63 add r1, r3, r1 mov r2, r9 - str r3, [sp, #20] + str r3, [fp, #-68] bl memcpy - ldr r3, [sp, #20] + ldr r3, [fp, #-68] add r10, r10, r9 -.L2141: - ldr r2, [sp, #16] +.L1980: + ldr r2, [fp, #-64] + uxth r9, r10 add r5, r5, #8 - cmp r7, r2 - bcc .L2142 - ldrh r2, [sp, #8] - add r7, r4, r7, lsl #3 - uxth r5, r10 + cmp r2, r6 + bhi .L1981 + add r6, r4, r6, lsl #3 + ldr r2, [fp, #-52] uxtah r0, r3, r10 - strh r8, [r7, #20] @ movhi - strh r2, [r7, #16] @ movhi - mov r1, fp - strh r5, [r7, #18] @ movhi - mov r2, r8 + mov r1, r8 + strh r2, [r6, #16] @ movhi + mov r2, r7 + strh r9, [r6, #18] @ movhi + strh r7, [r6, #20] @ movhi bl memcpy - uxth r3, r6 - ldrh r6, [r4, #14] - add r5, r5, r3 - sub r6, r6, r3 - ldr r3, [sp, #12] - strh r5, [r4, #12] @ movhi - add r6, r6, r3 - strh r6, [r4, #14] @ movhi -.L2143: - ldr r3, [r4, #4] + ldrh r2, [fp, #-48] + ldrh r3, [r4, #14] + add r9, r2, r9 + strh r9, [r4, #12] @ movhi + sub r3, r3, r2 + ldr r2, [fp, #-60] + add r3, r3, r2 + strh r3, [r4, #14] @ movhi +.L1982: add r2, r4, #61440 + ldr r3, [r4, #4] add r3, r3, #1 str r3, [r4, #4] str r3, [r2, #4092] @@ -14321,36 +14830,38 @@ rk_sftl_vendor_write: cmp r3, #1 movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, .L2156 - ldr r3, [r3, #3696] -.L2155: - ldr r0, [sp, #4] + ldr r3, .L1994 + ldr r3, [r3, #3692] +.L1993: + ldr r0, [fp, #-56] mov r2, r4 mov r1, #128 lsl r0, r0, #7 blx r3 mov r0, #0 -.L2136: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2140: +.L1975: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1979: ldrh r0, [r5, #18] - mov r2, r8 - mov r1, fp + mov r2, r7 + mov r1, r8 add r0, r3, r0 bl memcpy - strh r8, [r5, #20] @ movhi - b .L2143 -.L2139: - add r7, r7, #1 - b .L2138 -.L2157: + strh r7, [r5, #20] @ movhi + b .L1982 +.L1978: + add r6, r6, #1 + b .L1977 +.L1995: .align 2 -.L2156: +.L1994: .word .LANCHOR0 - .fnend .size rk_sftl_vendor_write, .-rk_sftl_vendor_write + .section .rodata.str1.1 +.LC133: + .ascii "copy_from_user error %d %p %p\012\000" + .text .align 2 .global rk_sftl_vendor_storage_ioctl .syntax unified @@ -14358,172 +14869,147 @@ rk_sftl_vendor_write: .fpu softvfp .type rk_sftl_vendor_storage_ioctl, %function rk_sftl_vendor_storage_ioctl: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc mov r0, #4096 - mov r5, r2 + mov r4, r2 mov r6, r1 bl ftl_malloc - subs r4, r0, #0 - mvneq r5, #0 - beq .L2158 - ldr r3, .L2183 + subs r5, r0, #0 + mvneq r4, #0 + beq .L1996 + ldr r3, .L2014 cmp r6, r3 - beq .L2161 + beq .L1998 add r3, r3, #1 cmp r6, r3 - beq .L2162 -.L2180: - mvn r5, #13 - b .L2160 -.L2161: - ldr r6, .L2183+4 - mov r3, sp - and r3, r3, r6 - ldr r3, [r3, #8] - .syntax divided -@ 114 "./include/linux/uaccess.h" 1 - adds r2, r5, #8; sbcccs r2, r2, r3; movcc r3, #0 -@ 0 "" 2 - .arm - .syntax unified - cmp r3, #0 - mov r2, #8 - bne .L2163 - mov r1, r5 - bl arm_copy_from_user - subs r2, r0, #0 - beq .L2164 -.L2163: - rsb r0, r2, #8 - mov r1, #0 - add r0, r4, r0 - bl memset - mov r2, r5 - mov r1, #256 -.L2182: - ldr r0, .L2183+8 - bl sftl_printk - b .L2180 -.L2165: - mov r3, sp - uxth r2, r0 - and r6, r6, r3 - strh r0, [r4, #6] @ movhi - add r2, r2, #8 - ldr r3, [r6, #8] - .syntax divided -@ 132 "./include/linux/uaccess.h" 1 - adds r1, r5, r2; sbcccs r1, r1, r3; movcc r3, #0 -@ 0 "" 2 - .arm - .syntax unified - cmp r3, #0 - bne .L2180 + beq .L1999 +.L2012: + mvn r4, #13 +.L2000: mov r0, r5 + bl kfree +.L1996: + mov r0, r4 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1998: mov r1, r4 - bl arm_copy_to_user - subs r5, r0, #0 - beq .L2160 - b .L2180 -.L2162: - ldr r7, .L2183+4 - mov r3, sp - and r3, r3, r7 - ldr r3, [r3, #8] - .syntax divided -@ 114 "./include/linux/uaccess.h" 1 - adds r2, r5, #8; sbcccs r2, r2, r3; movcc r3, #0 -@ 0 "" 2 - .arm - .syntax unified - cmp r3, #0 mov r2, #8 - bne .L2167 - mov r1, r5 - bl arm_copy_from_user - subs r2, r0, #0 - beq .L2168 -.L2167: - rsb r0, r2, #8 - mov r1, #0 - add r0, r4, r0 - bl memset - mov r2, r5 - mov r1, #276 - b .L2182 -.L2164: - ldr r2, [r4] - ldr r3, .L2183+12 + bl _copy_from_user + cmp r0, #0 + beq .L2001 + mov r2, r4 + mov r1, #256 +.L2013: + ldr r0, .L2014+4 + bl sftl_printk + b .L2012 +.L2001: + ldr r2, [r5] + ldr r3, .L2014+8 cmp r2, r3 - bne .L2169 - ldrh r2, [r4, #6] - add r1, r4, #8 - ldrh r0, [r4, #4] + beq .L2002 +.L2003: + mvn r4, #0 + b .L2000 +.L2002: + ldrh r2, [r5, #6] + add r1, r5, #8 + ldrh r0, [r5, #4] bl rk_sftl_vendor_read cmn r0, #1 - bne .L2165 -.L2169: - mvn r5, #0 -.L2160: - mov r0, r4 - bl kfree -.L2158: - mov r0, r5 - pop {r4, r5, r6, r7, r8, pc} -.L2168: - ldr r2, [r4] - ldr r3, .L2183+12 - cmp r2, r3 - bne .L2169 - ldrh r6, [r4, #6] - movw r3, #4087 - cmp r6, r3 - bhi .L2169 + beq .L2003 mov r3, sp - add r6, r6, #8 - and r7, r7, r3 - ldr r3, [r7, #8] + strh r0, [r5, #6] @ movhi + bic r1, r3, #8128 + uxth r2, r0 + bic r1, r1, #63 + add r2, r2, #8 + ldr r3, [r1, #8] .syntax divided -@ 114 "./include/linux/uaccess.h" 1 - adds r2, r5, r6; sbcccs r2, r2, r3; movcc r3, #0 +@ 177 "./include/linux/uaccess.h" 1 + .syntax unified +adds r0, r4, r2; sbcscc r0, r0, r3; movcc r3, #0 @ 0 "" 2 .arm .syntax unified cmp r3, #0 - mov r2, r6 - bne .L2170 + bne .L2012 + .syntax divided +@ 89 "./arch/arm/include/asm/domain.h" 1 + mrc p15, 0, r6, c3, c0 @ get domain +@ 0 "" 2 + .arm + .syntax unified + bic r3, r6, #12 + orr r3, r3, #4 + .syntax divided +@ 99 "./arch/arm/include/asm/domain.h" 1 + mcr p15, 0, r3, c3, c0 @ set domain +@ 0 "" 2 +@ 102 "./arch/arm/include/asm/domain.h" 1 + isb +@ 0 "" 2 + .arm + .syntax unified mov r1, r5 mov r0, r4 - bl arm_copy_from_user - subs r2, r0, #0 - beq .L2171 -.L2170: - sub r6, r6, r2 - mov r1, #0 - add r0, r4, r6 - bl memset - mov r2, r5 - movw r1, #283 - b .L2182 -.L2171: - ldrh r2, [r4, #6] - add r1, r4, #8 - ldrh r0, [r4, #4] + bl arm_copy_to_user + mov r4, r0 + .syntax divided +@ 99 "./arch/arm/include/asm/domain.h" 1 + mcr p15, 0, r6, c3, c0 @ set domain +@ 0 "" 2 +@ 102 "./arch/arm/include/asm/domain.h" 1 + isb +@ 0 "" 2 + .arm + .syntax unified + cmp r0, #0 + beq .L2000 + b .L2012 +.L1999: + mov r1, r4 + mov r2, #8 + bl _copy_from_user + cmp r0, #0 + movne r2, r4 + movne r1, #276 + bne .L2013 + ldr r2, [r5] + ldr r3, .L2014+8 + cmp r2, r3 + bne .L2003 + ldrh r2, [r5, #6] + movw r3, #4087 + cmp r2, r3 + bhi .L2003 + add r2, r2, #8 + mov r1, r4 + mov r0, r5 + uxth r2, r2 + bl _copy_from_user + cmp r0, #0 + movne r2, r4 + movwne r1, #283 + bne .L2013 + ldrh r2, [r5, #6] + add r1, r5, #8 + ldrh r0, [r5, #4] bl rk_sftl_vendor_write - mov r5, r0 - b .L2160 -.L2184: + mov r4, r0 + b .L2000 +.L2015: .align 2 -.L2183: +.L2014: .word 1074034177 - .word -8192 .word .LC133 .word 1448232273 - .fnend .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl .align 2 .global rk_sftl_vendor_register @@ -14532,18 +15018,24 @@ rk_sftl_vendor_storage_ioctl: .fpu softvfp .type rk_sftl_vendor_register, %function rk_sftl_vendor_register: - .fnstart @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r0, .L2186 - b misc_register -.L2187: + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + push {lr} + bl __gnu_mcount_nc + ldr r0, .L2017 + bl misc_register + ldmfd sp, {fp, sp, pc} +.L2018: .align 2 -.L2186: +.L2017: .word .LANCHOR2+12 - .fnend .size rk_sftl_vendor_register, .-rk_sftl_vendor_register + .section .rodata.str1.1 +.LC134: + .ascii "vendor_storage\000" .global g_nand_ops .global g_nand_phy_info .global gc_ink_free_return_value @@ -14623,7 +15115,6 @@ rk_sftl_vendor_register: .global p_map_block_ver_table .global p_map_block_valid_page_count .global p_map_block_table - .global p_blk_mode_table .global p_valid_page_count_check_table .global p_valid_page_count_table .global g_totle_swl_count @@ -14694,164 +15185,164 @@ rk_sftl_vendor_register: .global c_ftl_nand_die_num .global c_ftl_nand_type .section .rodata - .align 3 + .align 2 .set .LANCHOR1,. + 0 - .type __func__.7564, %object - .size __func__.7564, 17 -__func__.7564: + .type __func__.30, %object + .size __func__.30, 17 +__func__.30: .ascii "INSERT_DATA_LIST\000" - .type __func__.7559, %object - .size __func__.7559, 17 -__func__.7559: + .type __func__.31, %object + .size __func__.31, 17 +__func__.31: .ascii "INSERT_FREE_LIST\000" - .type __func__.7595, %object - .size __func__.7595, 17 -__func__.7595: + .type __func__.29, %object + .size __func__.29, 17 +__func__.29: .ascii "List_remove_node\000" - .type __func__.7627, %object - .size __func__.7627, 22 -__func__.7627: + .type __func__.28, %object + .size __func__.28, 22 +__func__.28: .ascii "List_update_data_list\000" - .type __func__.7734, %object - .size __func__.7734, 22 -__func__.7734: + .type __func__.22, %object + .size __func__.22, 22 +__func__.22: .ascii "select_l2p_ram_region\000" - .type __func__.8057, %object - .size __func__.8057, 16 -__func__.8057: + .type __func__.14, %object + .size __func__.14, 16 +__func__.14: .ascii "make_superblock\000" - .type __func__.8233, %object - .size __func__.8233, 19 -__func__.8233: + .type __func__.8, %object + .size __func__.8, 19 +__func__.8: .ascii "get_new_active_ppa\000" - .type __func__.13957, %object - .size __func__.13957, 17 -__func__.13957: + .type __func__.1, %object + .size __func__.1, 17 +__func__.1: .ascii "FlashEraseBlocks\000" - .type __func__.7669, %object - .size __func__.7669, 26 -__func__.7669: + .type __func__.26, %object + .size __func__.26, 26 +__func__.26: .ascii "ftl_map_blk_alloc_new_blk\000" - .type __func__.7174, %object - .size __func__.7174, 11 -__func__.7174: + .type __func__.37, %object + .size __func__.37, 11 +__func__.37: .ascii "FtlMemInit\000" - .type __func__.7401, %object - .size __func__.7401, 14 -__func__.7401: + .type __func__.34, %object + .size __func__.34, 14 +__func__.34: .ascii "FtlBbt2Bitmap\000" - .type __func__.8078, %object - .size __func__.8078, 18 -__func__.8078: + .type __func__.13, %object + .size __func__.13, 18 +__func__.13: .ascii "SupperBlkListInit\000" - .type __func__.13914, %object - .size __func__.13914, 15 -__func__.13914: + .type __func__.3, %object + .size __func__.3, 15 +__func__.3: .ascii "FlashReadPages\000" - .type __func__.7846, %object - .size __func__.7846, 14 -__func__.7846: + .type __func__.19, %object + .size __func__.19, 14 +__func__.19: .ascii "FtlScanSysBlk\000" - .type __func__.7444, %object - .size __func__.7444, 11 -__func__.7444: + .type __func__.32, %object + .size __func__.32, 11 +__func__.32: .ascii "FtlLoadBbt\000" - .type __func__.13933, %object - .size __func__.13933, 15 -__func__.13933: + .type __func__.2, %object + .size __func__.2, 15 +__func__.2: .ascii "FlashProgPages\000" - .type __func__.8205, %object - .size __func__.8205, 25 -__func__.8205: + .type __func__.10, %object + .size __func__.10, 25 +__func__.10: .ascii "allocate_data_superblock\000" - .type __func__.8246, %object - .size __func__.8246, 16 -__func__.8246: + .type __func__.7, %object + .size __func__.7, 16 +__func__.7: .ascii "update_vpc_list\000" - .type __func__.8253, %object - .size __func__.8253, 20 -__func__.8253: + .type __func__.6, %object + .size __func__.6, 20 +__func__.6: .ascii "decrement_vpc_count\000" - .type __func__.7695, %object - .size __func__.7695, 31 -__func__.7695: - .ascii "Ftl_write_map_blk_to_last_page\000" - .type __func__.7709, %object - .size __func__.7709, 16 -__func__.7709: + .type __func__.23, %object + .size __func__.23, 16 +__func__.23: .ascii "FtlMapWritePage\000" - .type __func__.7636, %object - .size __func__.7636, 16 -__func__.7636: + .type __func__.27, %object + .size __func__.27, 16 +__func__.27: .ascii "load_l2p_region\000" - .type __func__.7680, %object - .size __func__.7680, 15 -__func__.7680: + .type __func__.25, %object + .size __func__.25, 15 +__func__.25: .ascii "ftl_map_blk_gc\000" - .type __func__.7751, %object - .size __func__.7751, 9 -__func__.7751: + .type __func__.24, %object + .size __func__.24, 31 +__func__.24: + .ascii "Ftl_write_map_blk_to_last_page\000" + .type __func__.21, %object + .size __func__.21, 9 +__func__.21: .ascii "log2phys\000" - .type __func__.7966, %object - .size __func__.7966, 16 -__func__.7966: + .type __func__.16, %object + .size __func__.16, 16 +__func__.16: .ascii "FtlReUsePrevPpa\000" - .type __func__.8000, %object - .size __func__.8000, 22 -__func__.8000: + .type __func__.15, %object + .size __func__.15, 22 +__func__.15: .ascii "FtlRecoverySuperblock\000" - .type __func__.8120, %object - .size __func__.8120, 14 -__func__.8120: + .type __func__.11, %object + .size __func__.11, 14 +__func__.11: .ascii "ftl_check_vpc\000" - .type __func__.7824, %object - .size __func__.7824, 15 -__func__.7824: + .type __func__.20, %object + .size __func__.20, 15 +__func__.20: .ascii "FtlVpcTblFlush\000" - .type __func__.8103, %object - .size __func__.8103, 21 -__func__.8103: + .type __func__.12, %object + .size __func__.12, 21 +__func__.12: .ascii "FtlVpcCheckAndModify\000" - .type __func__.8226, %object - .size __func__.8226, 29 -__func__.8226: + .type __func__.9, %object + .size __func__.9, 29 +__func__.9: .ascii "allocate_new_data_superblock\000" - .type __func__.7298, %object - .size __func__.7298, 13 -__func__.7298: + .type __func__.36, %object + .size __func__.36, 13 +__func__.36: .ascii "FtlProgPages\000" - .type __func__.8323, %object - .size __func__.8323, 19 -__func__.8323: + .type __func__.5, %object + .size __func__.5, 19 +__func__.5: .ascii "FtlGcFreeTempBlock\000" - .type __func__.8436, %object - .size __func__.8436, 23 -__func__.8436: + .type __func__.4, %object + .size __func__.4, 23 +__func__.4: .ascii "rk_ftl_garbage_collect\000" - .type __func__.7326, %object - .size __func__.7326, 9 -__func__.7326: + .type __func__.35, %object + .size __func__.35, 9 +__func__.35: .ascii "FtlWrite\000" - .type __func__.7898, %object - .size __func__.7898, 15 -__func__.7898: + .type __func__.18, %object + .size __func__.18, 15 +__func__.18: .ascii "FtlLoadSysInfo\000" - .type __func__.7920, %object - .size __func__.7920, 18 -__func__.7920: + .type __func__.17, %object + .size __func__.17, 18 +__func__.17: .ascii "FtlMapTblRecovery\000" - .type __func__.14076, %object - .size __func__.14076, 14 -__func__.14076: + .type __func__.0, %object + .size __func__.0, 14 +__func__.0: .ascii "FtlWriteToIDB\000" .space 1 .type rk_sftl_vendor_storage_fops, %object - .size rk_sftl_vendor_storage_fops, 160 + .size rk_sftl_vendor_storage_fops, 128 rk_sftl_vendor_storage_fops: - .space 36 + .space 40 .word rk_sftl_vendor_storage_ioctl .word rk_sftl_vendor_storage_ioctl - .space 116 + .space 80 .data .align 2 .set .LANCHOR2,. + 0 @@ -15110,10 +15601,6 @@ FtlUpdateVaildLpnCount: .type g_VaildLpn, %object .size g_VaildLpn, 4 g_VaildLpn: - .space 4 - .type p_blk_mode_table, %object - .size p_blk_mode_table, 4 -p_blk_mode_table: .space 4 .type g_MaxLpn, %object .size g_MaxLpn, 4 @@ -15507,281 +15994,5 @@ check_vpc_table: .size gp_last_act_superblock, 4 gp_last_act_superblock: .space 4 - .section .rodata.str1.1,"aMS",%progbits,1 -.LC0: - .ascii "SFTL version: 5.0.55 20200925\000" -.LC1: - .ascii "\012%s\012\000" -.LC2: - .ascii "act blk: %x %x %x %x %x %x\012\000" -.LC3: - .ascii "buf blk: %x %x %x %x %x %x\012\000" -.LC4: - .ascii "tmp blk: %x %x %x %x %x %x\012\000" -.LC5: - .ascii "gc blk: %x %x %x %x %x %x\012\000" -.LC6: - .ascii "free blk: %x %x %x\012\000" -.LC7: - .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" - .ascii "\000" -.LC8: - .ascii "\012!!!!! error @ func:%s - line:%d\012\000" -.LC9: - .ascii "FLASH INFO:\012\000" -.LC10: - .ascii "Device Capacity: %d MB\012\000" -.LC11: - .ascii "FTL INFO:\012\000" -.LC12: - .ascii "g_MaxLpn = 0x%x\012\000" -.LC13: - .ascii "g_VaildLpn = 0x%x\012\000" -.LC14: - .ascii "read_page_count = 0x%x\012\000" -.LC15: - .ascii "discard_page_count = 0x%x\012\000" -.LC16: - .ascii "write_page_count = 0x%x\012\000" -.LC17: - .ascii "cache_write_count = 0x%x\012\000" -.LC18: - .ascii "l2p_write_count = 0x%x\012\000" -.LC19: - .ascii "gc_page_count = 0x%x\012\000" -.LC20: - .ascii "totle_write = %d MB\012\000" -.LC21: - .ascii "totle_read = %d MB\012\000" -.LC22: - .ascii "GSV = 0x%x\012\000" -.LC23: - .ascii "GDV = 0x%x\012\000" -.LC24: - .ascii "bad blk num = %d\012\000" -.LC25: - .ascii "free_superblocks = 0x%x\012\000" -.LC26: - .ascii "mlc_EC = 0x%x\012\000" -.LC27: - .ascii "slc_EC = 0x%x\012\000" -.LC28: - .ascii "avg_EC = 0x%x\012\000" -.LC29: - .ascii "sys_EC = 0x%x\012\000" -.LC30: - .ascii "max_EC = 0x%x\012\000" -.LC31: - .ascii "min_EC = 0x%x\012\000" -.LC32: - .ascii "PLT = 0x%x\012\000" -.LC33: - .ascii "POT = 0x%x\012\000" -.LC34: - .ascii "MaxSector = 0x%x\012\000" -.LC35: - .ascii "init_sys_blks_pp = 0x%x\012\000" -.LC36: - .ascii "sys_blks_pp = 0x%x\012\000" -.LC37: - .ascii "free sysblock = 0x%x\012\000" -.LC38: - .ascii "data_blks_pp = 0x%x\012\000" -.LC39: - .ascii "data_op_blks_pp = 0x%x\012\000" -.LC40: - .ascii "max_data_blks = 0x%x\012\000" -.LC41: - .ascii "Sys.id = 0x%x\012\000" -.LC42: - .ascii "Bbt.id = 0x%x\012\000" -.LC43: - .ascii "ACT.page = 0x%x\012\000" -.LC44: - .ascii "ACT.plane = 0x%x\012\000" -.LC45: - .ascii "ACT.id = 0x%x\012\000" -.LC46: - .ascii "ACT.mode = 0x%x\012\000" -.LC47: - .ascii "ACT.a_pages = 0x%x\012\000" -.LC48: - .ascii "ACT VPC = 0x%x\012\000" -.LC49: - .ascii "BUF.page = 0x%x\012\000" -.LC50: - .ascii "BUF.plane = 0x%x\012\000" -.LC51: - .ascii "BUF.id = 0x%x\012\000" -.LC52: - .ascii "BUF.mode = 0x%x\012\000" -.LC53: - .ascii "BUF.a_pages = 0x%x\012\000" -.LC54: - .ascii "BUF VPC = 0x%x\012\000" -.LC55: - .ascii "TMP.page = 0x%x\012\000" -.LC56: - .ascii "TMP.plane = 0x%x\012\000" -.LC57: - .ascii "TMP.id = 0x%x\012\000" -.LC58: - .ascii "TMP.mode = 0x%x\012\000" -.LC59: - .ascii "TMP.a_pages = 0x%x\012\000" -.LC60: - .ascii "GC.page = 0x%x\012\000" -.LC61: - .ascii "GC.plane = 0x%x\012\000" -.LC62: - .ascii "GC.id = 0x%x\012\000" -.LC63: - .ascii "GC.mode = 0x%x\012\000" -.LC64: - .ascii "GC.a_pages = 0x%x\012\000" -.LC65: - .ascii "WR_CHK = %x %x %x\012\000" -.LC66: - .ascii "Read Err Cnt = 0x%x\012\000" -.LC67: - .ascii "Prog Err Cnt = 0x%x\012\000" -.LC68: - .ascii "gc_free_blk_th= 0x%x\012\000" -.LC69: - .ascii "gc_merge_free_blk_th= 0x%x\012\000" -.LC70: - .ascii "gc_skip_write_count= 0x%x\012\000" -.LC71: - .ascii "gc_blk_index= 0x%x\012\000" -.LC72: - .ascii "free min EC= 0x%x\012\000" -.LC73: - .ascii "free max EC= 0x%x\012\000" -.LC74: - .ascii "GC__SB VPC = 0x%x\012\000" -.LC75: - .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" -.LC76: - .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" -.LC77: - .ascii "%s\012\000" -.LC78: - .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" - .ascii "\012\000" -.LC79: - .ascii "FtlGcRefreshBlock 0x%x\012\000" -.LC80: - .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" -.LC81: - .ascii "%s %p + 0x%x:\000" -.LC82: - .ascii "0x%08x,\000" -.LC83: - .ascii "0x%04x,\000" -.LC84: - .ascii "0x%02x,\000" -.LC85: - .ascii "\012\000" -.LC86: - .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" -.LC87: - .ascii "not free: w: d:\000" -.LC88: - .ascii "not free: w: s:\000" -.LC89: - .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" - .ascii "\000" -.LC90: - .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC91: - .ascii "%s error allocating memory. return -1\012\000" -.LC92: - .ascii "FlashReadPages %x %x error_ecc_bits %d\012\000" -.LC93: - .ascii "data:\000" -.LC94: - .ascii "spare:\000" -.LC95: - .ascii "prog read error: = %x\012\000" -.LC96: - .ascii "prog read REFRESH: = %x\012\000" -.LC97: - .ascii "prog read s error: = %x %x %x\012\000" -.LC98: - .ascii "prog read d error: = %x %x %x\012\000" -.LC99: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" -.LC100: - .ascii "FtlBbmTblFlush error:%x\012\000" -.LC101: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" -.LC102: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" -.LC103: - .ascii "decrement_vpc_count %x = %d\012\000" -.LC104: - .ascii "FtlMapWritePage error = %x \012\000" -.LC105: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" -.LC106: - .ascii "region_id = %x phyAddr = %x\012\000" -.LC107: - .ascii "map_ppn:\000" -.LC108: - .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" -.LC109: - .ascii "data prev_ppa = %x error...................\012\000" -.LC110: - .ascii "spuer block %x vpn is 0\012 \000" -.LC111: - .ascii "...%s enter...\012\000" -.LC112: - .ascii "FtlCheckVpc2 %x = %x %x\012\000" -.LC113: - .ascii "free blk vpc error %x = %x %x\012\000" -.LC114: - .ascii "ftl_scan_all_data = %x\012\000" -.LC115: - .ascii "scan lpa = %x ppa= %x\012\000" -.LC116: - .ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" -.LC117: - .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" -.LC118: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" -.LC119: - .ascii "no ect\000" -.LC120: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" -.LC121: - .ascii "FtlCheckVpc %x = %x %x\012\000" -.LC122: - .ascii "FtlProgPages error %x = %d\012\000" -.LC123: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" -.LC124: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" -.LC125: - .ascii "FtlWrite: ecc error:%x %x %x\012\000" -.LC126: - .ascii "FtlWrite: lpa error:%x %x\012\000" -.LC127: - .ascii "%s hash error this.id =%x page =%x pre_id =%x hash " - .ascii "=%x hash_r =%x\012\000" -.LC128: - .ascii "%s last blk_id =%x page =%x hash error hash =%x has" - .ascii "h_r =%x\012\000" -.LC129: - .ascii "%s scan blk_id =%x page =%x hash error hash =%x has" - .ascii "h_r =%x\012\000" -.LC130: - .ascii "write_idblock %x %x\012\000" -.LC131: - .ascii "write_idblock fail! %x %x %x %x\012\000" -.LC132: - .ascii "%s idb buffer alloc fail\012\000" -.LC133: - .ascii "copy_from_user error %d %p %p\012\000" -.LC134: - .ascii "vendor_storage\000" + .ident "GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621" + .section .note.GNU-stack,"",%progbits