From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 31 Jan 2024 03:29:01 +0000 Subject: [PATCH] add lvds1024*800 --- kernel/drivers/rk_nand/rk_ftl_arm_v7.S | 33712 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 17,122 insertions(+), 16,590 deletions(-) diff --git a/kernel/drivers/rk_nand/rk_ftl_arm_v7.S b/kernel/drivers/rk_nand/rk_ftl_arm_v7.S index 65ad9ed..da6f8a9 100644 --- a/kernel/drivers/rk_nand/rk_ftl_arm_v7.S +++ b/kernel/drivers/rk_nand/rk_ftl_arm_v7.S @@ -5,10 +5,9 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * date: 2020-09-23 + * date: 2021-07-26 */ .arch armv7-a - .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 @@ -17,139 +16,246 @@ .eabi_attribute 26, 2 .eabi_attribute 30, 4 .eabi_attribute 34, 1 - .eabi_attribute 18, 4 - .file "rk_ftl_arm_v7.S" -#APP + .file "rk_ftl_arm_v7.c" .syntax unified .text .align 2 + .fpu softvfp + .type ndelay, %function +ndelay: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + ldr r3, .L2 + add r0, r0, #996 + add r0, r0, #3 + umull r0, r1, r0, r3 + ldr r3, .L2+4 + ldr r3, [r3, #8] + lsr r0, r1, #6 + bx r3 @ indirect register sibling call +.L3: + .align 2 +.L2: + .word 274877907 + .word arm_delay_ops + .fnend + .size ndelay, .-ndelay + .align 2 + .syntax unified + .arm + .fpu softvfp + .type flash_read_ecc, %function +flash_read_ecc: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L6 + push {r4, lr} + .save {r4, lr} + ldr r4, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + mov r0, #80 + ldrb r3, [r3, #4] @ zero_extendqisi2 + add r4, r4, r3, lsl #8 + mov r3, #122 + str r3, [r4, #2056] + bl ndelay + ldr r3, [r4, #2048] + ldr r0, [r4, #2048] + and r3, r3, #15 + and r0, r0, #15 + cmp r0, r3 + movcc r0, r3 + ldr r3, [r4, #2048] + and r3, r3, #15 + cmp r3, r0 + movcc r3, r0 + ldr r0, [r4, #2048] + and r0, r0, #15 + cmp r0, r3 + movcc r0, r3 + pop {r4, pc} +.L7: + .align 2 +.L6: + .word .LANCHOR0 + .fnend + .size flash_read_ecc, .-flash_read_ecc + .align 2 + .syntax unified + .arm + .fpu softvfp + .type ftl_set_blk_mode.part.9, %function +ftl_set_blk_mode.part.9: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + ldr r3, .L9 + lsr r1, r0, #5 + mov ip, #1 + and r0, r0, #31 + ldr r2, [r3, #32] + ldr r3, [r2, r1, lsl #2] + orr r0, r3, ip, lsl r0 + str r0, [r2, r1, lsl #2] + bx lr +.L10: + .align 2 +.L9: + .word .LANCHOR0 + .fnend + .size ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9 + .align 2 .global FlashMemCmp8 + .syntax unified + .arm + .fpu softvfp .type FlashMemCmp8, %function FlashMemCmp8: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L11 - str lr, [sp, #-4]! - .save {lr} - ldrb r3, [r3] @ zero_extendqisi2 + ldr r3, .L25 + ldrb r3, [r3, #36] @ zero_extendqisi2 cmp r3, #0 - beq .L4 + beq .L20 ldrb r3, [r1, #1] @ zero_extendqisi2 ldrb ip, [r0, #1] @ zero_extendqisi2 cmp ip, r3 movne r3, #0 - beq .L8 -.L4: + bne .L20 +.L24: + mov r0, #0 + bx lr +.L14: cmp r3, r2 - beq .L8 + bne .L16 + mov r0, #0 + ldr pc, [sp], #4 +.L20: + cmp r3, r2 + beq .L24 + str lr, [sp, #-4]! + .save {lr} +.L16: ldrb lr, [r0, r3] @ zero_extendqisi2 ldrb ip, [r1, r3] @ zero_extendqisi2 add r3, r3, #1 cmp lr, ip - beq .L4 + beq .L14 mov r0, r3 ldr pc, [sp], #4 -.L8: - mov r0, #0 - ldr pc, [sp], #4 -.L12: +.L26: .align 2 -.L11: +.L25: .word .LANCHOR0 .fnend .size FlashMemCmp8, .-FlashMemCmp8 .align 2 .global FlashRsvdBlkChk + .syntax unified + .arm + .fpu softvfp .type FlashRsvdBlkChk, %function FlashRsvdBlkChk: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L14 - ldrb r2, [r3, #1] @ zero_extendqisi2 - ldr r3, [r3, #4] - mul r3, r3, r2 - cmp r1, r3 - movcs r2, #0 - movcc r2, #1 + ldr r2, .L28 + ldrb ip, [r2, #37] @ zero_extendqisi2 + ldr r3, [r2, #40] + mul r3, r3, ip + cmp r3, r1 + movls r2, #0 + movhi r2, #1 cmp r0, #0 movne r2, #0 eor r0, r2, #1 bx lr -.L15: +.L29: .align 2 -.L14: +.L28: .word .LANCHOR0 .fnend .size FlashRsvdBlkChk, .-FlashRsvdBlkChk .align 2 .global FlashGetRandomizer + .syntax unified + .arm + .fpu softvfp .type FlashGetRandomizer, %function FlashGetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 and r3, r1, #127 - ldr r2, .L25 - stmfd sp!, {r4, lr} + ldr r2, .L39 + lsl r3, r3, #1 + push {r4, lr} .save {r4, lr} - mov r3, r3, asl #1 ldrh r4, [r2, r3] - ldr r3, .L25+4 - ldrb r3, [r3, #8] @ zero_extendqisi2 + ldr r3, .L39+4 + ldrb r3, [r3, #44] @ zero_extendqisi2 cmp r3, #0 - beq .L17 + beq .L30 bl FlashRsvdBlkChk cmp r0, #0 orrne r4, r4, #-1073741824 -.L17: +.L30: mov r0, r4 - ldmfd sp!, {r4, pc} -.L26: + pop {r4, pc} +.L40: .align 2 -.L25: +.L39: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashGetRandomizer, .-FlashGetRandomizer .align 2 .global FlashSetRandomizer + .syntax unified + .arm + .fpu softvfp .type FlashSetRandomizer, %function FlashSetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r2, .L50 and r3, r1, #127 - ldr r2, .L36 - stmfd sp!, {r4, r5, r6, lr} + lsl r3, r3, #1 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r3, r3, asl #1 mov r6, r0 ldrh r5, [r2, r3] - ldr r3, .L36+4 - ldrb r2, [r3, #8] @ zero_extendqisi2 + ldr r3, .L50+4 + ldrb r2, [r3, #44] @ zero_extendqisi2 mov r4, r3 cmp r2, #0 - beq .L28 + beq .L42 bl FlashRsvdBlkChk cmp r0, #0 orrne r5, r5, #-1073741824 -.L28: - add r4, r4, r6, asl #3 - ldr r3, [r4, #12] +.L42: + ldr r3, [r4, r6, lsl #3] str r5, [r3, #336] - ldmfd sp!, {r4, r5, r6, pc} -.L37: + pop {r4, r5, r6, pc} +.L51: .align 2 -.L36: +.L50: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 .global FlashBlockAlignInit + .syntax unified + .arm + .fpu softvfp .type FlashBlockAlignInit, %function FlashBlockAlignInit: .fnstart @@ -157,45 +263,49 @@ @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. cmp r0, #512 - ldr r3, .L44 + ldr r3, .L58 movhi r2, #1024 - bhi .L43 + bhi .L57 cmp r0, #256 movhi r2, #512 - bhi .L43 + bhi .L57 cmp r0, #128 - strls r0, [r3, #4] - bxls lr - mov r2, #256 -.L43: - str r2, [r3, #4] + movhi r2, #256 + bhi .L57 + str r0, [r3, #40] bx lr -.L45: +.L57: + str r2, [r3, #40] + bx lr +.L59: .align 2 -.L44: +.L58: .word .LANCHOR0 .fnend .size FlashBlockAlignInit, .-FlashBlockAlignInit .align 2 .global FlashReadCmd + .syntax unified + .arm + .fpu softvfp .type FlashReadCmd, %function FlashReadCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L49 + ldr ip, .L63 str lr, [sp, #-4]! .save {lr} - add r3, ip, r0, asl #3 - ldr ip, [ip, #44] - ldr r2, [r3, #12] - ldrb r3, [r3, #16] @ zero_extendqisi2 + add r2, ip, r0, lsl #3 + ldr r3, [ip, r0, lsl #3] + ldr ip, [ip, #48] + ldrb r2, [r2, #4] @ zero_extendqisi2 ldrb ip, [ip, #7] @ zero_extendqisi2 - mov r3, r3, asl #8 + lsl r2, r2, #8 cmp ip, #1 - addeq ip, r2, r3 - add r3, r2, r3 + addeq ip, r3, r2 moveq lr, #38 + add r3, r3, r2 mov r2, #0 streq lr, [ip, #2056] str r2, [r3, #2056] @@ -203,41 +313,44 @@ str r2, [r3, #2052] uxtb r2, r1 str r2, [r3, #2052] - mov r2, r1, lsr #8 + lsr r2, r1, #8 str r2, [r3, #2052] - mov r2, r1, lsr #16 + lsr r2, r1, #16 str r2, [r3, #2052] mov r2, #48 str r2, [r3, #2056] ldr lr, [sp], #4 b FlashSetRandomizer -.L50: +.L64: .align 2 -.L49: +.L63: .word .LANCHOR0 .fnend .size FlashReadCmd, .-FlashReadCmd .align 2 .global FlashReadDpDataOutCmd + .syntax unified + .arm + .fpu softvfp .type FlashReadDpDataOutCmd, %function FlashReadDpDataOutCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L56 - stmfd sp!, {r4, lr} + ldr ip, .L70 + push {r4, lr} .save {r4, lr} - add r3, ip, r0, asl #3 - ldrb ip, [ip, #64] @ zero_extendqisi2 uxtb r4, r1 - ldr r2, [r3, #12] - mov lr, r1, lsr #8 - ldrb r3, [r3, #16] @ zero_extendqisi2 + lsr lr, r1, #8 + add r2, ip, r0, lsl #3 + ldr r3, [ip, r0, lsl #3] + ldrb ip, [ip, #68] @ zero_extendqisi2 + ldrb r2, [r2, #4] @ zero_extendqisi2 cmp ip, #1 - mov ip, r1, lsr #16 - mov r3, r3, asl #8 - add r3, r2, r3 - bne .L52 + lsr ip, r1, #16 + lsl r2, r2, #8 + add r3, r3, r2 + bne .L66 mov r2, #6 str r2, [r3, #2056] mov r2, #0 @@ -246,8 +359,12 @@ str r4, [r3, #2052] str lr, [r3, #2052] str ip, [r3, #2052] - b .L55 -.L52: +.L69: + mov r2, #224 + str r2, [r3, #2056] + pop {r4, lr} + b FlashSetRandomizer +.L66: mov r2, #0 str r2, [r3, #2056] str r2, [r3, #2052] @@ -259,31 +376,31 @@ str ip, [r3, #2056] str r2, [r3, #2052] str r2, [r3, #2052] -.L55: - mov r2, #224 - str r2, [r3, #2056] - ldmfd sp!, {r4, lr} - b FlashSetRandomizer -.L57: + b .L69 +.L71: .align 2 -.L56: +.L70: .word .LANCHOR0 .fnend .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 .global FlashProgFirstCmd + .syntax unified + .arm + .fpu softvfp .type FlashProgFirstCmd, %function FlashProgFirstCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr ip, .L59 - mov r2, r1, lsr #16 - add ip, ip, r0, asl #3 - ldr r3, [ip, #12] - ldrb ip, [ip, #16] @ zero_extendqisi2 - add r3, r3, ip, asl #8 + ldr ip, .L74 + lsr r2, r1, #16 + str lr, [sp, #-4]! + .save {lr} + ldr r3, [ip, r0, lsl #3] + add ip, ip, r0, lsl #3 + ldrb ip, [ip, #4] @ zero_extendqisi2 + add r3, r3, ip, lsl #8 mov ip, #128 str ip, [r3, #2056] mov ip, #0 @@ -291,176 +408,225 @@ str ip, [r3, #2052] uxtb ip, r1 str ip, [r3, #2052] - mov ip, r1, lsr #8 + lsr ip, r1, #8 str ip, [r3, #2052] str r2, [r3, #2052] + ldr lr, [sp], #4 b FlashSetRandomizer -.L60: +.L75: .align 2 -.L59: +.L74: .word .LANCHOR0 .fnend .size FlashProgFirstCmd, .-FlashProgFirstCmd .align 2 .global FlashEraseCmd + .syntax unified + .arm + .fpu softvfp .type FlashEraseCmd, %function FlashEraseCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + ldr ip, .L82 + cmp r2, #0 str lr, [sp, #-4]! .save {lr} - cmp r2, #0 - ldr lr, .L67 - add r0, lr, r0, asl #3 - ldrb r3, [r0, #16] @ zero_extendqisi2 - ldr ip, [r0, #12] - mov r3, r3, asl #8 - beq .L62 - add r2, ip, r3 - mov r0, #96 - str r0, [r2, #2056] - uxtb r0, r1 - str r0, [r2, #2052] - mov r0, r1, lsr #8 - str r0, [r2, #2052] - mov r0, r1, lsr #16 - str r0, [r2, #2052] - ldr r2, [lr, #4] + ldr r3, [ip, r0, lsl #3] + add r0, ip, r0, lsl #3 + ldrb r0, [r0, #4] @ zero_extendqisi2 + lsl r0, r0, #8 + beq .L77 + add r2, r3, r0 + mov lr, #96 + str lr, [r2, #2056] + uxtb lr, r1 + str lr, [r2, #2052] + lsr lr, r1, #8 + str lr, [r2, #2052] + lsr lr, r1, #16 + str lr, [r2, #2052] + ldr r2, [ip, #40] add r1, r1, r2 -.L62: - add r3, ip, r3 +.L77: + add r3, r3, r0 mov r2, #96 str r2, [r3, #2056] uxtb r2, r1 str r2, [r3, #2052] - mov r2, r1, lsr #8 - mov r1, r1, lsr #16 + lsr r2, r1, #8 + lsr r1, r1, #16 str r2, [r3, #2052] - str r1, [r3, #2052] mov r2, #208 + str r1, [r3, #2052] str r2, [r3, #2056] ldr pc, [sp], #4 -.L68: +.L83: .align 2 -.L67: +.L82: .word .LANCHOR0 .fnend .size FlashEraseCmd, .-FlashEraseCmd .align 2 .global FlashProgDpSecondCmd + .syntax unified + .arm + .fpu softvfp .type FlashProgDpSecondCmd, %function FlashProgDpSecondCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L71 - mov r2, r1, lsr #16 - str lr, [sp, #-4]! - .save {lr} - add lr, ip, r0, asl #3 - ldrb ip, [ip, #59] @ zero_extendqisi2 - ldr r3, [lr, #12] - ldrb lr, [lr, #16] @ zero_extendqisi2 - add r3, r3, lr, asl #8 + push {r4, lr} + .save {r4, lr} + lsr r2, r1, #16 + ldr lr, .L86 + ldr r3, [lr, r0, lsl #3] + add ip, lr, r0, lsl #3 + ldrb r4, [ip, #4] @ zero_extendqisi2 + ldrb ip, [lr, #63] @ zero_extendqisi2 + add r3, r3, r4, lsl #8 str ip, [r3, #2056] mov ip, #0 str ip, [r3, #2052] str ip, [r3, #2052] uxtb ip, r1 str ip, [r3, #2052] - mov ip, r1, lsr #8 + lsr ip, r1, #8 str ip, [r3, #2052] str r2, [r3, #2052] - ldr lr, [sp], #4 + pop {r4, lr} b FlashSetRandomizer -.L72: +.L87: .align 2 -.L71: +.L86: .word .LANCHOR0 .fnend .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd .align 2 .global FlashProgSecondCmd + .syntax unified + .arm + .fpu softvfp .type FlashProgSecondCmd, %function FlashProgSecondCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r3, .L75 - add r0, r3, r0, asl #3 - ldr r3, .L75+4 - ldrb r5, [r0, #16] @ zero_extendqisi2 - ldr r4, [r0, #12] + ldr r3, .L90 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + ldr r0, .L90+4 + ldrb r5, [r3, #4] @ zero_extendqisi2 + ldr r3, .L90+8 + add r4, r4, r5, lsl #8 ldr r3, [r3, #4] - add r4, r4, r5, asl #8 - ldr r0, .L75+8 blx r3 mov r3, #16 str r3, [r4, #2056] - ldmfd sp!, {r3, r4, r5, pc} -.L76: + pop {r4, r5, r6, pc} +.L91: .align 2 -.L75: +.L90: .word .LANCHOR0 + .word 64424500 .word arm_delay_ops - .word 214748300 .fnend .size FlashProgSecondCmd, .-FlashProgSecondCmd .align 2 .global FlashProgDpFirstCmd + .syntax unified + .arm + .fpu softvfp .type FlashProgDpFirstCmd, %function FlashProgDpFirstCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L78 - add r0, r2, r0, asl #3 - ldrb r2, [r2, #58] @ zero_extendqisi2 - ldrb r1, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] - add r3, r3, r1, asl #8 + ldr r2, .L93 + ldr r3, [r2, r0, lsl #3] + add r0, r2, r0, lsl #3 + ldrb r2, [r2, #62] @ zero_extendqisi2 + ldrb r1, [r0, #4] @ zero_extendqisi2 + add r3, r3, r1, lsl #8 str r2, [r3, #2056] bx lr -.L79: +.L94: .align 2 -.L78: +.L93: .word .LANCHOR0 .fnend .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 + .global FlashReadStatus + .syntax unified + .arm + .fpu softvfp + .type FlashReadStatus, %function +FlashReadStatus: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L97 + mov r2, #112 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r5, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + mov r0, #80 + ldrb r4, [r3, #4] @ zero_extendqisi2 + add r3, r5, r4, lsl #8 + add r4, r4, #8 + str r2, [r3, #2056] + bl ndelay + ldr r0, [r5, r4, lsl #8] + pop {r4, r5, r6, pc} +.L98: + .align 2 +.L97: + .word .LANCHOR0 + .fnend + .size FlashReadStatus, .-FlashReadStatus + .align 2 .global js_hash + .syntax unified + .arm + .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, .L84 + ldr r3, .L102 add r1, r0, r1 -.L81: +.L100: cmp r0, r1 - beq .L83 - mov r2, r3, asl #5 - ldrb ip, [r0], #1 @ zero_extendqisi2 - add r2, r2, r3, lsr #2 - add r2, r2, ip - eor r3, r3, r2 - b .L81 -.L83: + bne .L101 mov r0, r3 bx lr -.L85: +.L101: + lsr r2, r3, #2 + ldrb ip, [r0], #1 @ zero_extendqisi2 + add r2, r2, r3, lsl #5 + add r2, r2, ip + eor r3, r3, r2 + b .L100 +.L103: .align 2 -.L84: +.L102: .word 1204201446 .fnend .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo + .syntax unified + .arm + .fpu softvfp .type FlashLoadIdbInfo, %function FlashLoadIdbInfo: .fnstart @@ -473,6 +639,9 @@ .size FlashLoadIdbInfo, .-FlashLoadIdbInfo .align 2 .global FlashPrintInfo + .syntax unified + .arm + .fpu softvfp .type FlashPrintInfo, %function FlashPrintInfo: .fnstart @@ -483,148 +652,350 @@ .fnend .size FlashPrintInfo, .-FlashPrintInfo .align 2 + .global ToshibaSetRRPara + .syntax unified + .arm + .fpu softvfp + .type ToshibaSetRRPara, %function +ToshibaSetRRPara: + .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} + add r9, r1, r1, lsl #2 + ldr r7, .L114 + mov r6, r0 + mov r5, #0 + add r7, r1, r7 +.L107: + ldr r8, .L114+4 + ldrb r3, [r8, #85] @ zero_extendqisi2 + cmp r5, r3 + bcc .L111 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L111: + ldr r4, .L114+8 + mov r3, #85 + str r3, [r6, #8] + mov r0, #200 + ldrsb r3, [r5, r4] + str r3, [r6, #4] + bl ndelay + ldrb r3, [r8, #84] @ zero_extendqisi2 + cmp r3, #34 + addeq r3, r5, r9 + addeq r4, r4, r3 + ldrsbeq r3, [r4, #5] + beq .L113 + cmp r3, #35 + addeq r3, r5, r9 + ldrsbne r3, [r7] + addeq r4, r4, r3 + ldrsbeq r3, [r4, #50] +.L113: + str r3, [r6] + add r5, r5, #1 + b .L107 +.L115: + .align 2 +.L114: + .word .LANCHOR1+396 + .word .LANCHOR0 + .word .LANCHOR1+256 + .fnend + .size ToshibaSetRRPara, .-ToshibaSetRRPara + .align 2 + .global SamsungSetRRPara + .syntax unified + .arm + .fpu softvfp + .type SamsungSetRRPara, %function +SamsungSetRRPara: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L120 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + mov r4, #0 + ldr r8, .L120+4 + mov r6, r0 + mov r7, r3 + mov r9, #161 + add r1, r3, r1, lsl #2 + mov r10, r4 + add r5, r1, #3 +.L117: + ldrb r3, [r8, #85] @ zero_extendqisi2 + cmp r4, r3 + bcc .L118 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L118: + str r9, [r6, #8] + mov r0, #300 + str r10, [r6] + ldrsb r3, [r7, r4] + add r4, r4, #1 + str r3, [r6] + ldrsb r3, [r5, #1]! + str r3, [r6] + bl ndelay + b .L117 +.L121: + .align 2 +.L120: + .word .LANCHOR1+404 + .word .LANCHOR0 + .fnend + .size SamsungSetRRPara, .-SamsungSetRRPara + .align 2 .global ftl_flash_suspend + .syntax unified + .arm + .fpu softvfp .type ftl_flash_suspend, %function ftl_flash_suspend: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L89 - ldr r2, [r3, #80] + ldr r3, .L123 + ldr r2, [r3, #88] ldr r1, [r2] - str r1, [r3, #84] - ldr r1, [r2, #4] - str r1, [r3, #88] - ldr r1, [r2, #8] str r1, [r3, #92] - ldr r1, [r2, #12] + ldr r1, [r2, #4] str r1, [r3, #96] - ldr r1, [r2, #304] + ldr r1, [r2, #8] str r1, [r3, #100] - ldr r1, [r2, #308] + ldr r1, [r2, #12] str r1, [r3, #104] + ldr r1, [r2, #304] + str r1, [r3, #108] + ldr r1, [r2, #308] + str r1, [r3, #112] ldr r1, [r2, #336] ldr r2, [r2, #344] - str r1, [r3, #108] - str r2, [r3, #112] + str r1, [r3, #116] + str r2, [r3, #120] bx lr -.L90: +.L124: .align 2 -.L89: +.L123: .word .LANCHOR0 .fnend .size ftl_flash_suspend, .-ftl_flash_suspend .global __aeabi_uidiv + .global __aeabi_uidivmod .align 2 .global LogAddr2PhyAddr + .syntax unified + .arm + .fpu softvfp .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: .fnstart @ args = 4, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r5, r0 - ldr r0, .L97 - mov r8, r3 - ldr ip, [r5, #4] - mov r9, r1 - mov r7, r2 - ldrh r3, [r0, #130] - bic ip, ip, #-2147483648 - ldrh r4, [r0, #128] - ubfx r6, ip, #10, #16 - ldrh r10, [r0, #4] - mov fp, r0 - str ip, [sp, #4] - smulbb r4, r4, r3 - ldrb r3, [r0] @ zero_extendqisi2 - mov r0, r6 - cmp r3, #1 - moveq r10, r10, asl #1 - uxth r4, r4 - uxtheq r10, r10 - mov r1, r4 + mov r9, r2 + ldr r4, .L131 + mov fp, r3 + mov r10, r1 + mov r7, r0 + ldr r5, [r0, #4] + ldrh r2, [r4, #136] + ldrh r3, [r4, #138] + ldrh r6, [r4, #40] + smulbb r3, r3, r2 + ldrb r2, [r4, #36] @ zero_extendqisi2 + uxth r3, r3 + cmp r2, #1 + lsleq r6, r6, #1 + ubfx r2, r5, #10, #16 + mov r1, r3 + str r3, [sp, #4] + mov r0, r2 + uxtheq r6, r6 + str r2, [sp] bl __aeabi_uidiv - cmp r9, #1 - uxth r0, r0 - ldr ip, [sp, #4] - smulbb r4, r0, r4 - rsb r6, r4, r6 - ubfx r4, ip, #0, #10 - uxth r6, r6 - bne .L93 - ldrb r3, [fp, #144] @ zero_extendqisi2 + ldr r3, [sp, #4] + uxth r8, r0 + ldr r2, [sp] + mov r1, r3 + mov r0, r2 + bl __aeabi_uidivmod + cmp r10, #1 + uxth r1, r1 + ubfx r0, r5, #0, #10 + bne .L127 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - ldreq r3, .L97 - addeq r4, r3, r4, asl #1 - ldreqh r4, [r4, #148] -.L93: - add ip, fp, r0, asl #2 + addeq r0, r4, r0, lsl #1 + ldrheq r0, [r0, #156] +.L127: + add r4, r4, r8, lsl #2 + ldr r3, [r4, #1180] + mla r6, r6, r1, r3 ldrb r3, [sp, #48] @ zero_extendqisi2 - ldr r1, [ip, #1172] cmp r3, #1 - mla r1, r10, r6, r1 - add r4, r1, r4 - str r4, [r7] - str r0, [r8] + add r0, r6, r0 + str r0, [r9] movls r0, #0 - ldrhi r0, [r5, #4] - ldrhi r3, [r5, #40] + str r8, [fp] + ldrhi r0, [r7, #4] + ldrhi r3, [r7, #40] addhi r0, r0, #1024 - rsbhi r0, r3, r0 + subhi r0, r0, r3 clzhi r0, r0 - movhi r0, r0, lsr #5 + lsrhi r0, r0, #5 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L98: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L132: .align 2 -.L97: +.L131: .word .LANCHOR0 .fnend .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 2 + .global FlashReadStatusEN + .syntax unified + .arm + .fpu softvfp + .type FlashReadStatusEN, %function +FlashReadStatusEN: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L146 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, [r3, r0, lsl #3] + add r0, r3, r0, lsl #3 + ldrb r5, [r0, #4] @ zero_extendqisi2 + ldr r0, [r3, #48] + ldrb r0, [r0, #8] @ zero_extendqisi2 + cmp r0, #2 + mov r0, r3 + lsl r3, r5, #8 + movne r2, #112 + add r5, r5, #8 + addne r3, r4, r3 + strne r2, [r3, #2056] + bne .L139 + cmp r2, #0 + add r3, r4, r3 + ldrbne r2, [r0, #66] @ zero_extendqisi2 + ldrbeq r2, [r0, #65] @ zero_extendqisi2 + str r2, [r3, #2056] + ldrb r0, [r0, #67] @ zero_extendqisi2 + cmp r0, #0 + movne r2, #0 + addne ip, r4, r5, lsl #8 + bne .L138 +.L139: + mov r0, #80 + bl ndelay + ldr r0, [r4, r5, lsl #8] + uxtb r0, r0 + pop {r4, r5, r6, pc} +.L140: + lsl r3, r2, #3 + add r2, r2, #1 + lsr r3, r1, r3 + uxtb r3, r3 + str r3, [ip, #4] +.L138: + cmp r2, r0 + bcc .L140 + b .L139 +.L147: + .align 2 +.L146: + .word .LANCHOR0 + .fnend + .size FlashReadStatusEN, .-FlashReadStatusEN + .align 2 + .global FlashWaitReadyEN + .syntax unified + .arm + .fpu softvfp + .type FlashWaitReadyEN, %function +FlashWaitReadyEN: + .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 r4, r0 + mov r5, r1 + mov r6, r2 +.L149: + mov r2, r6 + mov r1, r5 + mov r0, r4 + bl FlashReadStatusEN + cmp r0, #255 + beq .L149 + tst r0, #64 + popne {r4, r5, r6, pc} + mov r1, #3 + mov r0, #1 + bl usleep_range + b .L149 + .fnend + .size FlashWaitReadyEN, .-FlashWaitReadyEN + .align 2 .global FlashScheduleEnSet + .syntax unified + .arm + .fpu softvfp .type FlashScheduleEnSet, %function FlashScheduleEnSet: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L100 - ldr r2, [r3, #1204] - str r0, [r3, #1204] + ldr r3, .L156 + ldr r2, [r3, #1212] + str r0, [r3, #1212] mov r0, r2 bx lr -.L101: +.L157: .align 2 -.L100: +.L156: .word .LANCHOR0 .fnend .size FlashScheduleEnSet, .-FlashScheduleEnSet .align 2 .global FlashGetPageSize + .syntax unified + .arm + .fpu softvfp .type FlashGetPageSize, %function FlashGetPageSize: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L103 - ldr r3, [r3, #44] + ldr r3, .L159 + ldr r3, [r3, #48] ldrb r0, [r3, #9] @ zero_extendqisi2 bx lr -.L104: +.L160: .align 2 -.L103: +.L159: .word .LANCHOR0 .fnend .size FlashGetPageSize, .-FlashGetPageSize .align 2 .global NandcReadDontCaseBusyEn + .syntax unified + .arm + .fpu softvfp .type NandcReadDontCaseBusyEn, %function NandcReadDontCaseBusyEn: .fnstart @@ -636,107 +1007,122 @@ .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn .align 2 .global NandcGetChipIf + .syntax unified + .arm + .fpu softvfp .type NandcGetChipIf, %function NandcGetChipIf: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L107 - add r0, r3, r0, asl #3 - ldrb r2, [r0, #16] @ zero_extendqisi2 - ldr r0, [r0, #12] - add r2, r2, #8 - add r0, r0, r2, asl #8 + ldr r2, .L163 + add r3, r2, r0, lsl #3 + ldr r0, [r2, r0, lsl #3] + ldrb r3, [r3, #4] @ zero_extendqisi2 + add r3, r3, #8 + add r0, r0, r3, lsl #8 bx lr -.L108: +.L164: .align 2 -.L107: +.L163: .word .LANCHOR0 .fnend .size NandcGetChipIf, .-NandcGetChipIf .align 2 .global NandcSetDdrPara + .syntax unified + .arm + .fpu softvfp .type NandcSetDdrPara, %function NandcSetDdrPara: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L110 - ldr r2, [r3, #80] - mov r3, r0, asl #8 - orr r0, r3, r0, asl #16 - orr r3, r0, #1 - str r3, [r2, #304] + ldr r3, .L166 + ldr r2, [r3, #88] + lsl r3, r0, #8 + orr r0, r3, r0, lsl #16 + orr r0, r0, #1 + str r0, [r2, #304] bx lr -.L111: +.L167: .align 2 -.L110: +.L166: .word .LANCHOR0 .fnend .size NandcSetDdrPara, .-NandcSetDdrPara .align 2 .global NandcSetDdrDiv + .syntax unified + .arm + .fpu softvfp .type NandcSetDdrDiv, %function NandcSetDdrDiv: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L113 + ldr r3, .L169 orr r0, r0, #16640 - ldr r3, [r3, #80] + ldr r3, [r3, #88] str r0, [r3, #344] bx lr -.L114: +.L170: .align 2 -.L113: +.L169: .word .LANCHOR0 .fnend .size NandcSetDdrDiv, .-NandcSetDdrDiv .align 2 .global NandcSetDdrMode + .syntax unified + .arm + .fpu softvfp .type NandcSetDdrMode, %function NandcSetDdrMode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L118 + ldr r3, .L174 cmp r0, #0 - ldr r2, [r3, #80] + ldr r2, [r3, #88] ldr r3, [r2] bfieq r3, r0, #13, #1 orrne r3, r3, #253952 str r3, [r2] bx lr -.L119: +.L175: .align 2 -.L118: +.L174: .word .LANCHOR0 .fnend .size NandcSetDdrMode, .-NandcSetDdrMode .align 2 .global NandcSetMode + .syntax unified + .arm + .fpu softvfp .type NandcSetMode, %function NandcSetMode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L127 + ldr r3, .L183 ands r1, r0, #6 - ldr r2, [r3, #80] + ldr r2, [r3, #88] ldr r3, [r2] bfieq r3, r1, #13, #1 - beq .L123 - orr r3, r3, #24576 + beq .L179 movw r1, #8322 - bfc r3, #15, #1 + orr r3, r3, #24576 str r1, [r2, #344] + bfc r3, #15, #1 + ldr r1, .L183+4 orr r3, r3, #196608 - ldr r1, .L127+4 tst r0, #4 orrne r3, r3, #32768 str r1, [r2, #304] @@ -744,642 +1130,416 @@ str r1, [r2, #308] mov r1, #39 str r1, [r2, #308] -.L123: +.L179: str r3, [r2] mov r0, #0 bx lr -.L128: +.L184: .align 2 -.L127: +.L183: .word .LANCHOR0 .word 1052675 .fnend .size NandcSetMode, .-NandcSetMode .align 2 .global NandcFlashCs + .syntax unified + .arm + .fpu softvfp .type NandcFlashCs, %function NandcFlashCs: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L130 - add r0, r2, r0, asl #3 + ldr r3, .L186 mov r2, #1 - ldr r1, [r0, #12] - ldrb r0, [r0, #16] @ zero_extendqisi2 + ldr r1, [r3, r0, lsl #3] + add r0, r3, r0, lsl #3 + ldrb r0, [r0, #4] @ zero_extendqisi2 ldr r3, [r1] - mov r2, r2, asl r0 + lsl r2, r2, r0 bfi r3, r2, #0, #8 str r3, [r1] bx lr -.L131: +.L187: .align 2 -.L130: +.L186: .word .LANCHOR0 .fnend .size NandcFlashCs, .-NandcFlashCs .align 2 .global NandcFlashDeCs + .syntax unified + .arm + .fpu softvfp .type NandcFlashDeCs, %function NandcFlashDeCs: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L133 - add r0, r3, r0, asl #3 - ldr r2, [r0, #12] + ldr r3, .L189 + ldr r2, [r3, r0, lsl #3] ldr r3, [r2] bfc r3, #0, #8 bfc r3, #17, #1 str r3, [r2] bx lr -.L134: +.L190: .align 2 -.L133: +.L189: .word .LANCHOR0 .fnend .size NandcFlashDeCs, .-NandcFlashDeCs .align 2 - .global NandcDelayns - .type NandcDelayns, %function -NandcDelayns: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - add r0, r0, #996 - ldr r3, .L137 - add r0, r0, #3 - umull r0, r1, r0, r3 - ldr r3, .L137+4 - ldr r3, [r3, #8] - mov r0, r1, lsr #6 - blx r3 - mov r0, #0 - ldmfd sp!, {r3, pc} -.L138: - .align 2 -.L137: - .word 274877907 - .word arm_delay_ops - .fnend - .size NandcDelayns, .-NandcDelayns - .align 2 - .global FlashReadStatus - .type FlashReadStatus, %function -FlashReadStatus: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r2, #112 - ldr r3, .L141 - add r0, r3, r0, asl #3 - ldrb r4, [r0, #16] @ zero_extendqisi2 - ldr r5, [r0, #12] - mov r0, #80 - add r3, r5, r4, asl #8 - add r4, r4, #8 - str r2, [r3, #2056] - bl NandcDelayns - ldr r0, [r5, r4, asl #8] - ldmfd sp!, {r3, r4, r5, pc} -.L142: - .align 2 -.L141: - .word .LANCHOR0 - .fnend - .size FlashReadStatus, .-FlashReadStatus - .align 2 - .global ToshibaSetRRPara - .type ToshibaSetRRPara, %function -ToshibaSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - add r8, r1, r1, asl #2 - ldr r9, .L153 - mov r5, r0 - ldr r7, .L153+4 - mov r6, r1 - add r10, r9, #256 - mov r4, #0 -.L144: - ldrb r3, [r7, #1209] @ zero_extendqisi2 - cmp r4, r3 - bcs .L152 - mov r3, #85 - str r3, [r5, #8] - ldrsb r3, [r4, r10] - mov r0, #200 - str r3, [r5, #4] - bl NandcDelayns - ldrb r3, [r7, #1208] @ zero_extendqisi2 - cmp r3, #34 - addeq r3, r4, r8 - addeq r3, r10, r3 - beq .L151 - cmp r3, #35 - addne r3, r9, r6 - addne r3, r3, #400 - ldrnesb r3, [r3] - bne .L150 - ldr r3, .L153+8 - add r2, r4, r8 - add r3, r3, r2 -.L151: - ldrsb r3, [r3, #5] -.L150: - str r3, [r5] - add r4, r4, #1 - b .L144 -.L152: - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L154: - .align 2 -.L153: - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR1+304 - .fnend - .size ToshibaSetRRPara, .-ToshibaSetRRPara - .align 2 - .global SamsungSetRRPara - .type SamsungSetRRPara, %function -SamsungSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L160 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - add r1, r3, r1, asl #2 - ldr r8, .L160+4 - mov r4, #0 - add r5, r1, #3 - mov r6, r0 - mov r7, r3 - mov r9, #161 - mov r10, r4 -.L156: - ldrb r3, [r8, #1209] @ zero_extendqisi2 - cmp r4, r3 - bcs .L159 - str r9, [r6, #8] - mov r0, #300 - str r10, [r6] - ldrsb r3, [r7, r4] - add r4, r4, #1 - str r3, [r6] - ldrsb r3, [r5, #1]! - str r3, [r6] - bl NandcDelayns - b .L156 -.L159: - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L161: - .align 2 -.L160: - .word .LANCHOR1+408 - .word .LANCHOR0 - .fnend - .size SamsungSetRRPara, .-SamsungSetRRPara - .align 2 .global HynixSetRRPara + .syntax unified + .arm + .fpu softvfp .type HynixSetRRPara, %function HynixSetRRPara: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r6, r3 - ldr r5, .L171 - mov r9, r2 - ldr r4, .L171+4 - mov r7, r0 + mov r6, r0 + ldr r0, .L200 + mov r7, r3 mov r8, r1 - ldr r3, [r5, #44] - ldrb r2, [r3, #19] @ zero_extendqisi2 - mov r3, r0, asl #3 - cmp r2, #6 - addeq r4, r4, r0, asl #6 - addeq r4, r4, #20 - addeq r4, r4, r6, asl #2 - beq .L164 - cmp r2, #7 - bne .L165 - mov r2, #160 - mla r4, r2, r0, r4 - add r2, r6, r6, asl #2 - add r4, r4, #28 - add r4, r4, r2, asl #1 - b .L164 -.L165: - cmp r2, #8 - addne r2, r6, r3 - addeq r2, r6, r6, asl #2 - ldreq r4, .L171+8 - addne r4, r4, r2, asl #3 - addeq r4, r4, r2 - addne r4, r4, #20 -.L164: - add r3, r5, r3 - mov r0, r7 + mov r10, r2 + ldr r3, [r0, #48] + mov r5, r0 + add r4, r0, #1216 + ldrb r3, [r3, #19] @ zero_extendqisi2 + cmp r3, #6 + moveq r3, #20 + addeq r3, r3, r6, lsl #6 + addeq r3, r3, r7, lsl #2 + beq .L199 + cmp r3, #7 + bne .L194 + mov r3, #160 + mov r2, #28 + smlabb r2, r3, r6, r2 + mov r3, #10 + smlabb r3, r3, r7, r2 +.L199: + add r4, r4, r3 +.L193: + add r3, r5, r6, lsl #3 + ldr r9, [r5, r6, lsl #3] + mov r0, r6 + ldrb fp, [r3, #4] @ zero_extendqisi2 sub r8, r8, #1 - sub r4, r4, #1 - ldrb fp, [r3, #16] @ zero_extendqisi2 - ldr r10, [r3, #12] bl NandcFlashCs - sub ip, r9, #1 - add r9, r9, r8 - mov r3, fp, asl #8 - mov r2, #54 - add fp, r10, r3 - str r2, [fp, #2056] -.L167: - cmp ip, r9 - beq .L170 - ldrb r2, [ip, #1]! @ zero_extendqisi2 - mov r0, #200 - str r3, [sp, #4] - str r2, [fp, #2052] - str ip, [sp] - bl NandcDelayns - ldrsb r2, [r4, #1]! - str r2, [fp, #2048] - ldr r3, [sp, #4] - ldr ip, [sp] - b .L167 -.L170: - add r10, r10, r3 - mov r0, r7 + mov r3, #54 + add r8, r10, r8 + sub r4, r4, #1 + lsl fp, fp, #8 + add r0, r9, fp + str r3, [r0, #2056] + sub r3, r10, #1 + mov r10, r0 +.L196: + cmp r3, r8 + bne .L197 mov r3, #22 - add r5, r5, r7 - str r3, [r10, #2056] + add r9, r9, fp + mov r0, r6 + str r3, [r9, #2056] bl NandcFlashDeCs - strb r6, [r5, #2064] + add r0, r5, r6 + strb r7, [r0, #2068] add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L172: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L194: + cmp r3, #8 + addeq r4, r4, #28 + addeq r3, r7, r7, lsl #2 + beq .L199 + add r3, r7, #2 + add r3, r3, r6, lsl #3 + add r4, r4, r3, lsl #3 + add r4, r4, #4 + b .L193 +.L197: + ldrb r2, [r3, #1]! @ zero_extendqisi2 + mov r0, #200 + str r2, [r10, #2052] + str r3, [sp, #4] + bl ndelay + ldrsb r2, [r4, #1]! + ldr r3, [sp, #4] + str r2, [r10, #2048] + b .L196 +.L201: .align 2 -.L171: +.L200: .word .LANCHOR0 - .word .LANCHOR0+1210 - .word .LANCHOR0+1238 .fnend .size HynixSetRRPara, .-HynixSetRRPara .align 2 .global FlashSetReadRetryDefault + .syntax unified + .arm + .fpu softvfp .type FlashSetReadRetryDefault, %function FlashSetReadRetryDefault: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L181 - ldr r2, [r3, #44] - ldrb r2, [r2, #19] @ zero_extendqisi2 - sub r2, r2, #1 - cmp r2, #7 - bxhi lr - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r5, .L209 + ldr r3, [r5, #48] + ldrb r3, [r3, #19] @ zero_extendqisi2 + sub r3, r3, #1 + cmp r3, #7 + pophi {r4, r5, r6, r7, r8, pc} + ldr r7, .L209+4 + add r6, r5, #1216 mov r4, #0 - ldr r6, .L181+4 - mov r5, r3 -.L174: - ldrb r3, [r6, r4, asl #3] @ zero_extendqisi2 + add r6, r6, #4 +.L205: + ldrb r3, [r7, r4, lsl #3] @ zero_extendqisi2 uxtb r0, r4 cmp r3, #173 - bne .L175 - ldrb r1, [r5, #1211] @ zero_extendqisi2 + bne .L204 mov r3, #0 - ldr r2, .L181+8 + mov r2, r6 + ldrb r1, [r5, #1217] @ zero_extendqisi2 bl HynixSetRRPara -.L175: +.L204: add r4, r4, #1 cmp r4, #4 - bne .L174 - ldmfd sp!, {r4, r5, r6, pc} -.L182: + bne .L205 + pop {r4, r5, r6, r7, r8, pc} +.L210: .align 2 -.L181: +.L209: .word .LANCHOR0 - .word .LANCHOR0+2068 - .word .LANCHOR0+1214 + .word .LANCHOR0+2072 .fnend .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 2 - .global FlashReadStatusEN - .type FlashReadStatusEN, %function -FlashReadStatusEN: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L194 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - add r0, ip, r0, asl #3 - ldr r3, [ip, #44] - ldrb r5, [r0, #16] @ zero_extendqisi2 - ldr r4, [r0, #12] - ldrb r3, [r3, #8] @ zero_extendqisi2 - cmp r3, #2 - mov r3, r5, asl #8 - addne r3, r4, r3 - add r5, r5, #8 - movne r2, #112 - strne r2, [r3, #2056] - bne .L188 - cmp r2, #0 - add r3, r4, r3 - ldrneb r2, [ip, #62] @ zero_extendqisi2 - ldreqb r2, [ip, #61] @ zero_extendqisi2 - str r2, [r3, #2056] - ldrb r0, [ip, #63] @ zero_extendqisi2 - cmp r0, #0 - addne ip, r4, r5, asl #8 - movne r2, #0 - beq .L188 -.L187: - cmp r2, r0 - bcs .L188 - mov r3, r2, asl #3 - add r2, r2, #1 - mov r3, r1, lsr r3 - uxtb r3, r3 - str r3, [ip, #4] - b .L187 -.L188: - mov r0, #80 - bl NandcDelayns - ldr r0, [r4, r5, asl #8] - uxtb r0, r0 - ldmfd sp!, {r3, r4, r5, pc} -.L195: - .align 2 -.L194: - .word .LANCHOR0 - .fnend - .size FlashReadStatusEN, .-FlashReadStatusEN - .align 2 - .global FlashWaitReadyEN - .type FlashWaitReadyEN, %function -FlashWaitReadyEN: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r4, r0 - mov r5, r1 - mov r6, r2 -.L197: - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl FlashReadStatusEN - cmp r0, #255 - beq .L197 - tst r0, #64 - ldmnefd sp!, {r4, r5, r6, pc} - mov r0, #1 - mov r1, #3 - bl usleep_range - b .L197 - .fnend - .size FlashWaitReadyEN, .-FlashWaitReadyEN - .align 2 .global FlashWaitCmdDone + .syntax unified + .arm + .fpu softvfp .type FlashWaitCmdDone, %function FlashWaitCmdDone: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - ldr r5, .L211 - add r4, r5, r0, asl #4 - ldr r3, [r4, #2108] - ldrb r7, [r4, #2100] @ zero_extendqisi2 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r5, .L219 + add r4, r5, r0, lsl #4 + ldr r3, [r4, #2112] cmp r3, #0 - beq .L205 + beq .L213 + ldrb r7, [r4, #2104] @ zero_extendqisi2 mov r6, r0 + add r5, r5, r6, lsl #2 mov r0, r7 - add r5, r5, r6, asl #2 bl NandcFlashCs - ldr r1, [r4, #2104] + ldr r2, [r5, #1180] mov r0, r7 - ldr r2, [r5, #1172] + ldr r1, [r4, #2108] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - mov r5, r0 + mov r1, r0 mov r0, r7 bl NandcFlashDeCs - ldr r2, [r4, #2108] - sbfx r3, r5, #0, #1 - str r3, [r2] - mov r2, #0 - ldr r1, [r4, #2112] - str r2, [r4, #2108] - cmp r1, r2 - strne r3, [r1] - strne r2, [r4, #2112] -.L205: + ldr r3, [r4, #2112] + sbfx r0, r1, #0, #1 + str r0, [r3] + mov r3, #0 + ldr r2, [r4, #2116] + str r3, [r4, #2112] + cmp r2, r3 + strne r0, [r2] + strne r3, [r4, #2116] +.L213: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L212: + pop {r4, r5, r6, r7, r8, pc} +.L220: .align 2 -.L211: +.L219: .word .LANCHOR0 .fnend .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 - .type flash_read_ecc, %function -flash_read_ecc: + .global NandcDelayns + .syntax unified + .arm + .fpu softvfp + .type NandcDelayns, %function +NandcDelayns: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L215 - stmfd sp!, {r4, lr} + push {r4, lr} .save {r4, lr} - add r0, r2, r0, asl #3 - ldrb r4, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] - mov r0, #80 - add r4, r3, r4, asl #8 - mov r3, #122 - str r3, [r4, #2056] - bl NandcDelayns - ldr r3, [r4, #2048] - ldr r0, [r4, #2048] - and r3, r3, #15 - and r0, r0, #15 - cmp r0, r3 - movcc r0, r3 - ldr r3, [r4, #2048] - and r3, r3, #15 - cmp r0, r3 - movcc r0, r3 - ldr r3, [r4, #2048] - and r3, r3, #15 - cmp r0, r3 - movcc r0, r3 - ldmfd sp!, {r4, pc} -.L216: - .align 2 -.L215: - .word .LANCHOR0 + bl ndelay + mov r0, #0 + pop {r4, pc} .fnend - .size flash_read_ecc, .-flash_read_ecc + .size NandcDelayns, .-NandcDelayns .align 2 .global NandcWaitFlashReadyNoDelay + .syntax unified + .arm + .fpu softvfp .type NandcWaitFlashReadyNoDelay, %function NandcWaitFlashReadyNoDelay: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L223 - stmfd sp!, {r0, r1, r2, r4, r5, lr} + ldr r3, .L229 + push {r0, r1, r2, r4, r5, lr} .save {r4, r5, lr} .pad #12 - add r0, r3, r0, asl #3 - ldr r4, .L223+4 - ldr r5, [r0, #12] -.L219: + ldr r4, .L229+4 + ldr r5, [r3, r0, lsl #3] +.L225: ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #512 - bne .L220 + bne .L226 mov r0, #10 - bl NandcDelayns + bl ndelay subs r4, r4, #1 - bne .L219 + bne .L225 mvn r0, #0 - b .L218 -.L220: - mov r0, #0 -.L218: +.L223: add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, pc} -.L224: + pop {r4, r5, pc} +.L226: + mov r0, #0 + b .L223 +.L230: .align 2 -.L223: +.L229: .word .LANCHOR0 .word 100000 .fnend .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .align 2 .global NandcWaitFlashReady + .syntax unified + .arm + .fpu softvfp .type NandcWaitFlashReady, %function NandcWaitFlashReady: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L231 - stmfd sp!, {r0, r1, r2, r4, r5, lr} + push {r0, r1, r2, r4, r5, lr} .save {r4, r5, lr} .pad #12 - add r0, r3, r0, asl #3 - ldr r4, .L231+4 - ldr r5, [r0, #12] + ldr r3, .L237 + ldr r4, .L237+4 + ldr r5, [r3, r0, lsl #3] mov r0, #130 - bl NandcDelayns -.L227: + bl ndelay +.L233: ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #512 - bne .L228 - mov r0, #1 + bne .L234 mov r1, #2 + mov r0, #1 bl usleep_range subs r4, r4, #1 - bne .L227 + bne .L233 mvn r0, #0 - b .L226 -.L228: - mov r0, #0 -.L226: +.L231: add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, pc} -.L232: + pop {r4, r5, pc} +.L234: + mov r0, #0 + b .L231 +.L238: .align 2 -.L231: +.L237: .word .LANCHOR0 .word 100000 .fnend .size NandcWaitFlashReady, .-NandcWaitFlashReady .align 2 .global FlashReset + .syntax unified + .arm + .fpu softvfp .type FlashReset, %function FlashReset: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L235 - stmfd sp!, {r4, r5, r6, lr} + ldr r3, .L241 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - add r3, r3, r0, asl #3 mov r4, r0 - ldrb r6, [r3, #16] @ zero_extendqisi2 - ldr r5, [r3, #12] + ldr r5, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + ldrb r6, [r3, #4] @ zero_extendqisi2 bl NandcFlashCs mov r3, #255 mov r0, r4 - add r5, r5, r6, asl #8 + add r5, r5, r6, lsl #8 str r3, [r5, #2056] bl NandcWaitFlashReady mov r0, r4 - ldmfd sp!, {r4, r5, r6, lr} + pop {r4, r5, r6, lr} b NandcFlashDeCs -.L236: +.L242: .align 2 -.L235: +.L241: .word .LANCHOR0 .fnend .size FlashReset, .-FlashReset .align 2 .global flash_enter_slc_mode + .syntax unified + .arm + .fpu softvfp .type flash_enter_slc_mode, %function flash_enter_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - ldr r5, .L244 - ldrb r3, [r5, #144] @ zero_extendqisi2 + ldr r5, .L250 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - ldmeqfd sp!, {r4, r5, r6, r7, r8, pc} + popeq {r4, r5, r6, r7, r8, pc} mov r6, r0 bl NandcFlashCs - add r4, r5, r6, asl #3 - ldrb r3, [r4, #2068] @ zero_extendqisi2 - ldrb r8, [r4, #16] @ zero_extendqisi2 + add r3, r5, r6, lsl #3 + ldr r7, [r5, r6, lsl #3] + ldrb r8, [r3, #4] @ zero_extendqisi2 + ldrb r3, [r3, #2072] @ zero_extendqisi2 cmp r3, #44 - ldr r7, [r4, #12] - mov r8, r8, asl #8 - bne .L239 + lsl r8, r8, #8 + bne .L245 add r4, r7, r8 mov r3, #239 - mov r0, #50 str r3, [r4, #2056] mov r3, #145 str r3, [r4, #2052] - bl NandcDelayns + mov r0, #50 + bl ndelay mov r3, #0 mov r2, #1 str r3, [r4, #2048] @@ -1387,53 +1547,56 @@ str r2, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] - bl NandcDelayns -.L239: - add r7, r7, r8 + bl ndelay +.L245: mov r0, r6 + add r7, r7, r8 bl NandcWaitFlashReadyNoDelay mov r3, #218 mov r0, r6 str r3, [r7, #2056] bl NandcWaitFlashReady mov r3, #2 - strb r3, [r5, #2228] - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L245: + strb r3, [r5, #2232] + pop {r4, r5, r6, r7, r8, pc} +.L251: .align 2 -.L244: +.L250: .word .LANCHOR0 .fnend .size flash_enter_slc_mode, .-flash_enter_slc_mode .align 2 .global flash_exit_slc_mode + .syntax unified + .arm + .fpu softvfp .type flash_exit_slc_mode, %function flash_exit_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - ldr r5, .L253 - ldrb r3, [r5, #144] @ zero_extendqisi2 + ldr r5, .L259 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - ldmeqfd sp!, {r4, r5, r6, r7, r8, pc} + popeq {r4, r5, r6, r7, r8, pc} mov r6, r0 bl NandcFlashCs - add r4, r5, r6, asl #3 - ldrb r3, [r4, #2068] @ zero_extendqisi2 - ldrb r8, [r4, #16] @ zero_extendqisi2 + add r3, r5, r6, lsl #3 + ldr r7, [r5, r6, lsl #3] + ldrb r8, [r3, #4] @ zero_extendqisi2 + ldrb r3, [r3, #2072] @ zero_extendqisi2 cmp r3, #44 - ldr r7, [r4, #12] - mov r8, r8, asl #8 - bne .L248 + lsl r8, r8, #8 + bne .L254 add r4, r7, r8 mov r3, #239 - mov r0, #50 str r3, [r4, #2056] mov r3, #145 str r3, [r4, #2052] - bl NandcDelayns + mov r0, #50 + bl ndelay mov r3, #2 mov r0, #100 str r3, [r4, #2048] @@ -1442,32 +1605,35 @@ mov r3, #0 str r3, [r4, #2048] str r3, [r4, #2048] - bl NandcDelayns -.L248: - add r7, r7, r8 + bl ndelay +.L254: mov r0, r6 + add r7, r7, r8 bl NandcWaitFlashReadyNoDelay mov r3, #223 mov r0, r6 str r3, [r7, #2056] bl NandcWaitFlashReady mov r3, #0 - strb r3, [r5, #2228] - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L254: + strb r3, [r5, #2232] + pop {r4, r5, r6, r7, r8, pc} +.L260: .align 2 -.L253: +.L259: .word .LANCHOR0 .fnend .size flash_exit_slc_mode, .-flash_exit_slc_mode .align 2 .global FlashEraseBlock + .syntax unified + .arm + .fpu softvfp .type FlashEraseBlock, %function FlashEraseBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r4, r0 mov r5, r1 @@ -1484,138 +1650,140 @@ mov r1, r5 mov r0, r4 bl FlashReadStatus - mov r5, r0 + mov r1, r0 mov r0, r4 bl NandcFlashDeCs - and r0, r5, #1 - ldmfd sp!, {r4, r5, r6, pc} + and r0, r1, #1 + pop {r4, r5, r6, pc} .fnend .size FlashEraseBlock, .-FlashEraseBlock .align 2 .global FlashSetInterfaceMode + .syntax unified + .arm + .fpu softvfp .type FlashSetInterfaceMode, %function FlashSetInterfaceMode: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L280 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r0, r1, r2, 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 - ldrb fp, [r1, #2229] @ zero_extendqisi2 + .pad #12 mov lr, #0 - ldr r7, .L280+4 - mov r4, #239 - and r2, fp, #4 - and r3, fp, #1 - mov r5, #128 - str r3, [sp, #8] - mov r6, #1 - uxtb r3, r2 + ldr r4, .L286 + mov r5, #239 + mov r6, #128 + mov r7, #1 mov r8, #35 - mov r2, lr mov r9, #32 + ldrb r3, [r4, #2233] @ zero_extendqisi2 mov r10, #5 - str r3, [sp, #4] - add r3, r1, #12 - str r3, [sp, #12] -.L267: - ldr r3, [sp, #12] - ldrb ip, [lr, r7] @ zero_extendqisi2 - ldr r1, [r3, lr]! + and r2, r3, #4 + and r3, r3, #1 + str r2, [sp, #4] + mov r2, lr + str r3, [sp] +.L273: + ldr r1, .L286+4 + add r3, r4, lr + ldrb r3, [r3, #4] @ zero_extendqisi2 + ldrb ip, [lr, r1] @ zero_extendqisi2 cmp ip, #69 cmpne ip, #152 - ldrb r3, [r3, #4] @ zero_extendqisi2 - beq .L258 + beq .L264 cmp ip, #44 cmpne ip, #173 - bne .L259 -.L258: + bne .L265 +.L264: cmp r0, #1 - bne .L260 - ldr fp, [sp, #8] + ldr r1, [r4, lr] + bne .L266 + ldr fp, [sp] cmp fp, #0 - beq .L259 - mov r3, r3, asl #8 + beq .L265 + lsl r3, r3, #8 cmp ip, #173 add fp, r1, r3 - str r4, [fp, #2056] + str r5, [fp, #2056] streq r0, [fp, #2052] - beq .L279 + beq .L285 cmp ip, #44 streq r0, [fp, #2052] - strne r5, [fp, #2052] + strne r6, [fp, #2052] streq r10, [fp, #2048] strne r0, [fp, #2048] - b .L265 -.L260: - ldr fp, [sp, #4] - cmp fp, #0 - beq .L259 - mov r3, r3, asl #8 - cmp ip, #173 - add fp, r1, r3 - str r4, [fp, #2056] - streq r6, [fp, #2052] - streq r9, [fp, #2048] - beq .L265 - cmp ip, #44 - streq r6, [fp, #2052] - streq r8, [fp, #2048] - beq .L265 - str r5, [fp, #2052] -.L279: - str r2, [fp, #2048] -.L265: +.L271: add r3, r1, r3 str r2, [r3, #2048] str r2, [r3, #2048] str r2, [r3, #2048] -.L259: +.L265: add lr, lr, #8 cmp lr, #32 - bne .L267 + bne .L273 mov r0, #0 bl NandcWaitFlashReady mov r0, #0 - add sp, sp, #20 + add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L281: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L266: + ldr fp, [sp, #4] + cmp fp, #0 + beq .L265 + lsl r3, r3, #8 + cmp ip, #173 + add fp, r1, r3 + str r5, [fp, #2056] + streq r7, [fp, #2052] + streq r9, [fp, #2048] + beq .L271 + cmp ip, #44 + streq r7, [fp, #2052] + streq r8, [fp, #2048] + beq .L271 + str r6, [fp, #2052] +.L285: + str r2, [fp, #2048] + b .L271 +.L287: .align 2 -.L280: +.L286: .word .LANCHOR0 - .word .LANCHOR0+2068 + .word .LANCHOR0+2072 .fnend .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .align 2 .global FlashReadSpare + .syntax unified + .arm + .fpu softvfp .type FlashReadSpare, %function FlashReadSpare: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L284 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - add ip, ip, r0, asl #3 - ldr r3, .L284+4 + ldr ip, .L290 + ldr r3, .L290+4 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r5, r2 - ldrb r2, [ip, #16] @ zero_extendqisi2 - ldr r4, [ip, #12] - ldrb r3, [r3, #481] @ zero_extendqisi2 - add r4, r4, r2, asl #8 + ldr r4, [ip, r0, lsl #3] + add ip, ip, r0, lsl #3 + ldrb r3, [r3, #477] @ zero_extendqisi2 + ldrb r2, [ip, #4] @ zero_extendqisi2 + lsl r3, r3, #9 + add r4, r4, r2, lsl #8 mov r2, #0 - mov r3, r3, asl #9 str r2, [r4, #2056] str r3, [r4, #2052] - mov r3, r3, lsr #8 + lsr r3, r3, #8 str r3, [r4, #2052] uxtb r3, r1 str r3, [r4, #2052] - mov r3, r1, lsr #8 - mov r1, r1, lsr #16 + lsr r3, r1, #8 + lsr r1, r1, #16 str r3, [r4, #2052] mov r3, #48 str r1, [r4, #2052] @@ -1623,28 +1791,31 @@ bl NandcWaitFlashReady ldr r3, [r4, #2048] strb r3, [r5] - ldmfd sp!, {r3, r4, r5, pc} -.L285: + pop {r4, r5, r6, pc} +.L291: .align 2 -.L284: +.L290: .word .LANCHOR0 .word .LANCHOR1 .fnend .size FlashReadSpare, .-FlashReadSpare .align 2 .global SandiskProgTestBadBlock + .syntax unified + .arm + .fpu softvfp .type SandiskProgTestBadBlock, %function SandiskProgTestBadBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L288 - stmfd sp!, {r4, lr} + ldr r3, .L294 + push {r4, lr} .save {r4, lr} - add r2, r2, r0, asl #3 - ldrb r4, [r2, #16] @ zero_extendqisi2 - ldr r3, [r2, #12] - add r4, r3, r4, asl #8 + ldr r4, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + ldrb r3, [r3, #4] @ zero_extendqisi2 + add r4, r4, r3, lsl #8 mov r3, #162 str r3, [r4, #2056] mov r3, #128 @@ -1654,163 +1825,177 @@ str r3, [r4, #2052] uxtb r3, r1 str r3, [r4, #2052] - mov r3, r1, lsr #8 - mov r1, r1, lsr #16 + lsr r3, r1, #8 + lsr r1, r1, #16 str r3, [r4, #2052] - str r1, [r4, #2052] mov r3, #16 + str r1, [r4, #2052] str r3, [r4, #2056] bl NandcWaitFlashReady mov r3, #112 mov r0, #80 str r3, [r4, #2056] - bl NandcDelayns + bl ndelay ldr r0, [r4, #2048] and r0, r0, #1 - ldmfd sp!, {r4, pc} -.L289: + pop {r4, pc} +.L295: .align 2 -.L288: +.L294: .word .LANCHOR0 .fnend .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock .align 2 .global SandiskSetRRPara + .syntax unified + .arm + .fpu softvfp .type SandiskSetRRPara, %function SandiskSetRRPara: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} mov r3, #239 - mov r5, r0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} str r3, [r0, #8] mov r3, #17 + mov r5, r0 + mov r4, r1 str r3, [r0, #4] mov r0, #200 - mov r4, r1 - bl NandcDelayns - ldr r0, .L298 - ldr r1, .L298+4 - add r4, r4, r4, asl #2 - sub ip, r0, #48 + bl ndelay + ldr r0, .L303 + add r4, r4, r4, lsl #2 + ldr r1, .L303+4 mov r2, #0 -.L291: - ldrb r3, [r1, #1209] @ zero_extendqisi2 + sub ip, r0, #45 +.L297: + ldrb r3, [r1, #85] @ zero_extendqisi2 cmp r2, r3 - bcs .L297 - ldrb r3, [r1, #1208] @ zero_extendqisi2 + bcc .L300 + mov r0, #0 + pop {r4, r5, r6, lr} + b NandcWaitFlashReady +.L300: + ldrb r3, [r1, #84] @ zero_extendqisi2 cmp r3, #67 add r3, r2, r4 addeq r3, ip, r3 addne r3, r0, r3 - add r2, r2, #1 ldrsb r3, [r3, #5] + add r2, r2, #1 str r3, [r5] - b .L291 -.L297: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, lr} - b NandcWaitFlashReady -.L299: + b .L297 +.L304: .align 2 -.L298: - .word .LANCHOR1+304 +.L303: + .word .LANCHOR1+301 .word .LANCHOR0 .fnend .size SandiskSetRRPara, .-SandiskSetRRPara .align 2 .global micron_auto_read_calibration_config + .syntax unified + .arm + .fpu softvfp .type micron_auto_read_calibration_config, %function micron_auto_read_calibration_config: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r5, r0 + mov r6, r1 bl NandcWaitFlashReady - ldr r3, .L302 + ldr r0, .L307 + ldr r4, [r0, r5, lsl #3] + add r0, r0, r5, lsl #3 + ldrb r3, [r0, #4] @ zero_extendqisi2 mov r0, #200 - add r2, r3, r4, asl #3 - ldrb r4, [r2, #16] @ zero_extendqisi2 - ldr r3, [r2, #12] - add r4, r3, r4, asl #8 + add r4, r4, r3, lsl #8 mov r3, #239 str r3, [r4, #2056] mov r3, #150 str r3, [r4, #2052] - bl NandcDelayns - str r5, [r4, #2048] + bl ndelay mov r3, #0 + str r6, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] - ldmfd sp!, {r3, r4, r5, pc} -.L303: + pop {r4, r5, r6, pc} +.L308: .align 2 -.L302: +.L307: .word .LANCHOR0 .fnend .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .align 2 .global FlashEraseSLc2KBlocks + .syntax unified + .arm + .fpu softvfp .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #16 mov r5, #0 - ldr r8, .L316 - .pad #20 - sub sp, sp, #20 + ldr r8, .L320 mov r6, r0 mov r9, r1 mov r7, r5 -.L305: + ldr r10, .L320+4 +.L310: cmp r7, r9 - beq .L315 - rsb r3, r7, r9 + bne .L315 + mov r0, #0 + add sp, sp, #16 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L315: + sub r3, r9, r7 add r2, sp, #8 - add r0, r6, r5 - mov r1, #0 uxtb r3, r3 + mov r1, #0 + add r0, r6, r5 str r3, [sp] add r3, sp, #12 bl LogAddr2PhyAddr - ldrb r2, [r8, #2230] @ zero_extendqisi2 + ldrb r2, [r8, #2234] @ zero_extendqisi2 ldr r3, [sp, #12] - cmp r3, r2 - mvncs r3, #0 - strcs r3, [r6, r5] - bcs .L307 + cmp r2, r3 + mvnls r3, #0 + strls r3, [r6, r5] + bls .L312 add r2, r8, r3 - add r3, r8, r3, asl #4 - ldrb r4, [r2, #2232] @ zero_extendqisi2 - strb r4, [r3, #2100] + add r3, r8, r3, lsl #4 + ldrb r4, [r2, #2236] @ zero_extendqisi2 + strb r4, [r3, #2104] mov r0, r4 bl NandcWaitFlashReady mov r0, r4 bl NandcFlashCs mov r2, #0 - mov r0, r4 ldr r1, [sp, #8] + mov r0, r4 bl FlashEraseCmd mov r0, r4 bl NandcWaitFlashReady mov r0, r4 ldr r1, [sp, #8] bl FlashReadStatus - mov r2, #0 - ldr r3, [sp, #8] sbfx r0, r0, #0, #1 + ldr r1, [sp, #8] str r0, [r6, r5] + mov r2, #0 + ldr r3, [r8, #40] mov r0, r4 - ldr r1, [r8, #4] add r1, r1, r3 bl FlashEraseCmd mov r0, r4 @@ -1823,249 +2008,244 @@ strne r3, [r6, r5] ldr r3, [r6, r5] cmn r3, #1 - bne .L309 - ldr r0, .L316+4 + bne .L314 ldr r1, [sp, #8] + mov r0, r10 bl printk -.L309: +.L314: mov r0, r4 bl NandcFlashDeCs -.L307: +.L312: add r7, r7, #1 add r5, r5, #36 - b .L305 -.L315: - mov r0, #0 - add sp, sp, #20 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L317: + b .L310 +.L321: .align 2 -.L316: +.L320: .word .LANCHOR0 .word .LC1 .fnend .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks .align 2 .global FlashEraseBlocks + .syntax unified + .arm + .fpu softvfp .type FlashEraseBlocks, %function FlashEraseBlocks: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r8, r2 - ldr r4, .L354 - .pad #28 - sub sp, sp, #28 - ldrb r5, [r4] @ zero_extendqisi2 + ldr r4, .L355 + .pad #20 + sub sp, sp, #20 + ldrb r5, [r4, #36] @ zero_extendqisi2 cmp r5, #0 moveq r9, r0 moveq r10, r1 - moveq fp, r4 - beq .L319 + beq .L324 mov r1, r2 bl FlashEraseSLc2KBlocks - b .L320 -.L328: - mov r3, #36 - mov r1, #0 - mul r6, r3, r5 - add r2, sp, #16 - add r3, r9, r6 - str r3, [sp, #12] - rsb r3, r5, r8 - ldr r0, [sp, #12] - uxtb r3, r3 - str r3, [sp] - add r3, sp, #20 - bl LogAddr2PhyAddr - ldrb r3, [r4, #2230] @ zero_extendqisi2 - mov r7, r0 - ldr r0, [sp, #20] - cmp r0, r3 - mvncs r3, #0 - strcs r3, [r9, r6] - bcc .L351 .L322: - add r5, r5, #1 -.L319: - cmp r5, r8 - bcc .L328 - b .L352 -.L351: - ldrb r3, [fp, #2240] @ zero_extendqisi2 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L333: + mov r3, #36 + add r2, sp, #8 + mul r6, r3, r5 + sub r3, r8, r5 + uxtb r3, r3 + mov r1, #0 + str r3, [sp] + add r3, sp, #12 + add fp, r9, r6 + mov r0, fp + bl LogAddr2PhyAddr + ldrb r3, [r4, #2234] @ zero_extendqisi2 + mov r7, r0 + ldr r0, [sp, #12] + cmp r3, r0 + mvnls r3, #0 + strls r3, [r9, r6] + bls .L327 + ldrb r3, [r4, #2244] @ zero_extendqisi2 cmp r3, #0 - add r3, r4, r0, asl #4 - ldr r3, [r3, #2108] + add r3, r4, r0, lsl #4 moveq r7, #0 + ldr r3, [r3, #2112] cmp r3, #0 - beq .L324 + beq .L329 uxtb r0, r0 bl FlashWaitCmdDone -.L324: - ldr r2, [sp, #20] +.L329: + ldr r2, [sp, #12] cmp r7, #0 - ldr r0, [sp, #12] - addne ip, r6, #36 - addne ip, r9, ip - mov r3, r2, asl #4 + addne r6, r6, #36 + mov r0, #0 + addne r6, r9, r6 + lsl r3, r2, #4 add r2, r4, r2 add r1, r4, r3 add r3, r4, r3 - ldrb r6, [r2, #2232] @ zero_extendqisi2 + str r0, [r1, #2116] + ldr r0, [sp, #8] + strne r6, [r1, #2116] + ldrb r6, [r2, #2236] @ zero_extendqisi2 str r0, [r1, #2108] - mov r0, #0 - str r0, [r1, #2112] - ldr r0, [sp, #16] - strne ip, [r1, #2112] - strb r6, [r3, #2100] - str r0, [r1, #2104] + str fp, [r1, #2112] mov r0, r6 + strb r6, [r3, #2104] bl NandcFlashCs cmp r10, #1 mov r0, r6 - bne .L326 - ldrb r3, [fp, #144] @ zero_extendqisi2 + bne .L331 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L326 + beq .L331 bl flash_enter_slc_mode - b .L327 -.L326: - bl flash_exit_slc_mode -.L327: - ldr r3, [sp, #20] +.L332: + ldr r3, [sp, #12] mov r0, r6 - ldr r1, [sp, #16] + ldr r1, [sp, #8] add r5, r5, r7 - add r3, r4, r3, asl #2 - ldr r2, [r3, #1172] + add r3, r4, r3, lsl #2 + ldr r2, [r3, #1180] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - mov r0, r6 mov r2, r7 - ldr r1, [sp, #16] + ldr r1, [sp, #8] + mov r0, r6 bl FlashEraseCmd mov r0, r6 bl NandcFlashDeCs - b .L322 -.L352: - ldr r6, .L354 +.L327: + add r5, r5, #1 +.L324: + cmp r5, r8 + bcc .L333 + ldr r6, .L355+4 mov r5, #0 - ldr r7, .L354+4 -.L329: - ldrb r2, [r4, #2230] @ zero_extendqisi2 - ldr r3, .L354 - cmp r5, r2 - bcs .L353 +.L334: + ldrb r3, [r4, #2234] @ zero_extendqisi2 + cmp r5, r3 + bcc .L336 + ldr r3, [r4, #2248] + cmp r3, #0 + bne .L337 +.L338: + mov r0, #0 + b .L322 +.L331: + bl flash_exit_slc_mode + b .L332 +.L336: uxtb r0, r5 bl FlashWaitCmdDone cmp r10, #1 - bne .L330 - ldrb r3, [r6, #144] @ zero_extendqisi2 + bne .L335 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L330 - ldrb r0, [r7, r5, asl #4] @ zero_extendqisi2 + beq .L335 + ldrb r0, [r6, r5, lsl #4] @ zero_extendqisi2 bl flash_exit_slc_mode -.L330: +.L335: add r5, r5, #1 - b .L329 -.L353: - ldr r2, [r3, #2244] - cmp r2, #0 - bne .L332 -.L334: - mov r0, #0 - b .L320 -.L332: - ldrb r3, [r3, #2068] @ zero_extendqisi2 + b .L334 +.L337: + ldrb r3, [r4, #2072] @ zero_extendqisi2 cmp r3, #69 - bne .L334 - mov r3, #0 - mov r2, #36 - mov r1, r3 -.L333: + moveq r3, #0 + moveq r2, #36 + moveq r1, r3 + bne .L338 +.L339: cmp r3, r8 - beq .L334 + beq .L338 mul r0, r2, r3 add r3, r3, #1 str r1, [r9, r0] - b .L333 -.L320: - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L355: + b .L339 +.L356: .align 2 -.L354: +.L355: .word .LANCHOR0 - .word .LANCHOR0+2100 + .word .LANCHOR0+2104 .fnend .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FlashReadDpCmd + .syntax unified + .arm + .fpu softvfp .type FlashReadDpCmd, %function FlashReadDpCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r8, r0 - ldr r0, .L362 - mov r7, r1 + mov r7, r0 + ldr r0, .L363 + mov r8, r1 uxtb r10, r2 - mov r9, r2, lsr #8 - add r3, r0, r8, asl #3 - mov r5, r2, lsr #16 - ldrb r1, [r0, #64] @ zero_extendqisi2 - uxtb lr, r7 - ldr r4, [r3, #12] - mov ip, r7, lsr #8 - ldrb r3, [r3, #16] @ zero_extendqisi2 - cmp r1, #1 - ldr r2, [r0, #44] - mov r1, r7, lsr #16 - mov r3, r3, asl #8 + lsr r9, r2, #8 + lsr r6, r2, #16 + uxtb lr, r8 + ldr r2, [r0, #48] + lsr ip, r8, #8 + add r1, r0, r7, lsl #3 + ldr r3, [r0, r7, lsl #3] + ldrb r4, [r1, #4] @ zero_extendqisi2 + ldrb r1, [r0, #68] @ zero_extendqisi2 ldrb r2, [r2, #7] @ zero_extendqisi2 - bne .L357 + cmp r1, #1 + lsl r4, r4, #8 + lsr r1, r8, #16 + bne .L358 cmp r2, #1 - addeq r2, r4, r3 - add r4, r4, r3 - moveq r6, #38 - streq r6, [r2, #2056] - mov r6, #0 - ldrb r3, [r0, #57] @ zero_extendqisi2 - ldrb r2, [r0, #56] @ zero_extendqisi2 - mov r0, r8 + addeq r2, r3, r4 + moveq r5, #38 + add r4, r3, r4 + streq r5, [r2, #2056] + ldrb r3, [r0, #61] @ zero_extendqisi2 + mov r5, #0 + ldrb r2, [r0, #60] @ zero_extendqisi2 + mov r0, r7 str r2, [r4, #2056] - str r6, [r4, #2052] - str r6, [r4, #2052] + str r5, [r4, #2052] + str r5, [r4, #2052] str lr, [r4, #2052] str ip, [r4, #2052] str r1, [r4, #2052] str r3, [r4, #2056] bl NandcWaitFlashReady - str r6, [r4, #2056] mov r3, #48 - str r6, [r4, #2052] - str r6, [r4, #2052] + str r5, [r4, #2056] + str r5, [r4, #2052] + str r5, [r4, #2052] str r10, [r4, #2052] str r9, [r4, #2052] - str r5, [r4, #2052] + str r6, [r4, #2052] str r3, [r4, #2056] - b .L359 -.L357: +.L360: + mov r1, r8 + mov r0, r7 + pop {r4, r5, r6, r7, r8, r9, r10, lr} + b FlashSetRandomizer +.L358: cmp r2, #1 - addeq r2, r4, r3 - add r3, r4, r3 - moveq r6, #38 - streq r6, [r2, #2056] - ldrb r2, [r0, #56] @ zero_extendqisi2 + addeq r2, r3, r4 + moveq r5, #38 + streq r5, [r2, #2056] + add r3, r3, r4 + ldrb r2, [r0, #60] @ zero_extendqisi2 str r2, [r3, #2056] - ldrb r2, [r0, #57] @ zero_extendqisi2 + ldrb r2, [r0, #61] @ zero_extendqisi2 str lr, [r3, #2052] str ip, [r3, #2052] str r1, [r3, #2052] @@ -2073,132 +2253,140 @@ mov r2, #48 str r10, [r3, #2052] str r9, [r3, #2052] - str r5, [r3, #2052] + str r6, [r3, #2052] str r2, [r3, #2056] -.L359: - mov r0, r8 - mov r1, r7 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - b FlashSetRandomizer -.L363: + b .L360 +.L364: .align 2 -.L362: +.L363: .word .LANCHOR0 .fnend .size FlashReadDpCmd, .-FlashReadDpCmd .align 2 .global ftl_flash_de_init + .syntax unified + .arm + .fpu softvfp .type ftl_flash_de_init, %function ftl_flash_de_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} + push {r4, lr} + .save {r4, lr} mov r0, #0 - ldr r4, .L375 + ldr r4, .L376 bl NandcWaitFlashReady bl FlashSetReadRetryDefault - ldr r0, [r4, #2248] + ldr r0, [r4, #2252] cmp r0, #0 - beq .L365 + beq .L366 mov r0, #0 bl flash_enter_slc_mode - b .L366 -.L365: - bl flash_exit_slc_mode -.L366: - ldrb r3, [r4, #2252] @ zero_extendqisi2 - ldr r5, .L375 +.L367: + ldrb r3, [r4, #2256] @ zero_extendqisi2 cmp r3, #0 - beq .L367 - ldrb r3, [r5, #2229] @ zero_extendqisi2 + beq .L368 + ldrb r3, [r4, #2233] @ zero_extendqisi2 tst r3, #1 - beq .L367 + beq .L368 mov r0, #1 bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode mov r3, #0 - strb r3, [r5, #2252] -.L367: - ldr r3, [r4, #12] + strb r3, [r4, #2256] +.L368: + ldr r3, [r4] mov r0, #0 str r0, [r3, #336] - ldmfd sp!, {r3, r4, r5, pc} -.L376: + pop {r4, pc} +.L366: + bl flash_exit_slc_mode + b .L367 +.L377: .align 2 -.L375: +.L376: .word .LANCHOR0 .fnend .size ftl_flash_de_init, .-ftl_flash_de_init .align 2 .global NandcRandmzSel + .syntax unified + .arm + .fpu softvfp .type NandcRandmzSel, %function NandcRandmzSel: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L378 - add r0, r3, r0, asl #3 - ldr r3, [r0, #12] + ldr r3, .L379 + ldr r3, [r3, r0, lsl #3] str r1, [r3, #336] bx lr -.L379: +.L380: .align 2 -.L378: +.L379: .word .LANCHOR0 .fnend .size NandcRandmzSel, .-NandcRandmzSel .global __aeabi_idiv .align 2 .global NandcTimeCfg + .syntax unified + .arm + .fpu softvfp .type NandcTimeCfg, %function NandcTimeCfg: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, lr} + push {r4, lr} .save {r4, lr} mov r4, r0 mov r0, #0 bl rknand_get_clk_rate - ldr r1, .L391 + ldr r1, .L392 bl __aeabi_idiv - ldr r3, .L391+4 - ldr r3, [r3, #80] + ldr r3, .L392+4 cmp r0, #250 movwgt r2, #8354 - bgt .L389 - cmp r0, #220 + ldr r3, [r3, #88] bgt .L390 + cmp r0, #220 + ble .L384 +.L391: + movw r2, #8322 + b .L390 +.L384: cmp r0, #185 movwgt r2, #4226 - bgt .L389 + bgt .L390 cmp r0, #160 movwgt r2, #4194 - bgt .L389 + bgt .L390 cmp r4, #35 movwls r2, #4193 - bls .L389 + bls .L390 cmp r4, #99 movwls r2, #4225 - bls .L389 + bhi .L391 .L390: - movw r2, #8322 -.L389: str r2, [r3, #4] - ldmfd sp!, {r4, pc} -.L392: + pop {r4, pc} +.L393: .align 2 -.L391: +.L392: .word 1000000 .word .LANCHOR0 .fnend .size NandcTimeCfg, .-NandcTimeCfg .align 2 .global FlashTimingCfg + .syntax unified + .arm + .fpu softvfp .type FlashTimingCfg, %function FlashTimingCfg: .fnstart @@ -2209,249 +2397,266 @@ sub r3, r3, #33 bic r3, r3, #32 cmp r3, #1 - bls .L394 + bls .L395 movw r3, #8322 cmp r0, r3 - bne .L395 -.L394: - ldr r3, .L396 - ldr r3, [r3, #80] - str r0, [r3, #4] + bne .L396 .L395: - ldr r3, .L396+4 - ldrb r0, [r3, #493] @ zero_extendqisi2 - b NandcTimeCfg -.L397: - .align 2 + ldr r3, .L397 + ldr r3, [r3, #88] + str r0, [r3, #4] .L396: + ldr r3, .L397+4 + ldrb r0, [r3, #489] @ zero_extendqisi2 + b NandcTimeCfg +.L398: + .align 2 +.L397: .word .LANCHOR0 .word .LANCHOR1 .fnend .size FlashTimingCfg, .-FlashTimingCfg .align 2 .global NandcInit + .syntax unified + .arm + .fpu softvfp .type NandcInit, %function NandcInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r1, #0 - ldr r3, .L401 + ldr r3, .L402 mov r2, #1 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r1, #0 mov r5, #0 - str r1, [r3, #16] mov r4, r3 - str r0, [r3, #12] - str r2, [r3, #24] + str r2, [r3, #12] mov r2, #2 - str r0, [r3, #20] - str r2, [r3, #32] + str r2, [r3, #20] mov r2, #3 - str r0, [r3, #28] - str r0, [r3, #36] - str r0, [r3, #80] - str r2, [r3, #40] + stm r3, {r0, r1} + str r0, [r3, #8] + str r0, [r3, #16] + str r0, [r3, #24] + str r0, [r3, #88] + str r2, [r3, #28] ldr r2, [r0] and r2, r2, #253952 ubfx ip, r2, #13, #1 bfi r2, r1, #13, #1 ldr r1, [r0, #352] orr r2, r2, #256 - str ip, [r3, #2256] + str ip, [r3, #2260] movw ip, #2049 ubfx r1, r1, #16, #4 - str r1, [r3, #2260] + str r1, [r3, #2264] ldr r1, [r0, #352] cmp r1, ip - str r1, [r3, #2264] + str r1, [r3, #2268] moveq r3, #8 - streq r3, [r4, #2260] + streq r3, [r4, #2264] str r2, [r0] mov r0, #40 - ldr r3, [r4, #80] + ldr r3, [r4, #88] str r5, [r3, #336] bl NandcTimeCfg - ldr r3, [r4, #80] + ldr r3, [r4, #88] movw r2, #8322 mov r0, #36864 str r2, [r3, #344] - ldr r2, .L401+4 + ldr r2, .L402+4 str r2, [r3, #304] bl ftl_malloc - str r5, [r4, #2296] - str r5, [r4, #2304] - str r0, [r4, #2268] str r0, [r4, #2272] - add r0, r0, #32768 str r0, [r4, #2276] - ldmfd sp!, {r3, r4, r5, pc} -.L402: + add r0, r0, #32768 + str r0, [r4, #2280] + str r5, [r4, #2300] + str r5, [r4, #2308] + pop {r4, r5, r6, pc} +.L403: .align 2 -.L401: +.L402: .word .LANCHOR0 .word 1579009 .fnend .size NandcInit, .-NandcInit .align 2 .global NandcGetTimeCfg + .syntax unified + .arm + .fpu softvfp .type NandcGetTimeCfg, %function NandcGetTimeCfg: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L405 + ldr ip, .L406 str lr, [sp, #-4]! .save {lr} - ldr lr, [ip, #80] + ldr lr, [ip, #88] ldr lr, [lr, #4] str lr, [r0] - ldr r0, [ip, #80] + ldr r0, [ip, #88] ldr r0, [r0] str r0, [r1] - ldr r1, [ip, #80] + ldr r1, [ip, #88] ldr r1, [r1, #304] str r1, [r2] - ldr r1, [ip, #80] + ldr r1, [ip, #88] ldr r2, [r1, #308] ldr r1, [r1, #344] uxtb r2, r2 - orr r2, r2, r1, asl #16 + orr r2, r2, r1, lsl #16 str r2, [r3] ldr pc, [sp], #4 -.L406: +.L407: .align 2 -.L405: +.L406: .word .LANCHOR0 .fnend .size NandcGetTimeCfg, .-NandcGetTimeCfg .align 2 .global NandcBchSel + .syntax unified + .arm + .fpu softvfp .type NandcBchSel, %function NandcBchSel: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L415 - mov r1, #1 - ldr r2, [r3, #80] - str r0, [r3, #2308] - mov r3, #0 - str r1, [r2, #8] - mov r1, #16 - cmp r0, r1 - bfi r3, r1, #8, #8 - bfc r3, #18, #1 - bne .L408 -.L411: + ldr r3, .L416 + mov ip, #1 + mov r1, #0 + ldr r2, [r3, #88] + str r0, [r3, #2312] + mov r3, r1 + str ip, [r2, #8] + mov ip, #16 + cmp r0, ip + bfi r3, ip, #8, #8 + bfi r3, r1, #18, #1 + bne .L409 +.L412: bfc r3, #4, #1 - b .L409 -.L408: - cmp r0, #24 - orreq r3, r3, #16 - beq .L409 - cmp r0, #40 - orr r3, r3, #262144 - orr r3, r3, #16 - beq .L411 -.L409: +.L410: orr r3, r3, #1 str r3, [r2, #12] bx lr -.L416: +.L409: + cmp r0, #24 + orreq r3, r3, #16 + beq .L410 + cmp r0, #40 + orr r3, r3, #262144 + orr r3, r3, #16 + bne .L410 + b .L412 +.L417: .align 2 -.L415: +.L416: .word .LANCHOR0 .fnend .size NandcBchSel, .-NandcBchSel .align 2 .global FlashBchSel + .syntax unified + .arm + .fpu softvfp .type FlashBchSel, %function FlashBchSel: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L418 - strb r0, [r3, #2312] + ldr r3, .L419 + strb r0, [r3, #2316] b NandcBchSel -.L419: +.L420: .align 2 -.L418: +.L419: .word .LANCHOR0 .fnend .size FlashBchSel, .-FlashBchSel .align 2 .global ftl_flash_resume + .syntax unified + .arm + .fpu softvfp .type ftl_flash_resume, %function ftl_flash_resume: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L429 - stmfd sp!, {r4, r5, r6, lr} + ldr r3, .L430 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r5, #0 - ldr r2, [r3, #80] + ldr r6, .L430+4 mov r4, r3 - ldr r1, [r3, #84] - ldr r6, .L429+4 - str r1, [r2] - ldr r1, [r3, #88] - ldr r2, [r3, #80] - str r1, [r2, #4] + ldr r2, [r3, #88] ldr r1, [r3, #92] - str r1, [r2, #8] + str r1, [r2] ldr r1, [r3, #96] - str r1, [r2, #12] + ldr r2, [r3, #88] + str r1, [r2, #4] ldr r1, [r3, #100] - str r1, [r2, #304] + str r1, [r2, #8] ldr r1, [r3, #104] - str r1, [r2, #308] + str r1, [r2, #12] ldr r1, [r3, #108] - str r1, [r2, #336] + str r1, [r2, #304] ldr r1, [r3, #112] + str r1, [r2, #308] + ldr r1, [r3, #116] + str r1, [r2, #336] + ldr r1, [r3, #120] str r1, [r2, #344] -.L422: - ldrb r3, [r6, r5, asl #3] @ zero_extendqisi2 +.L423: + ldrb r3, [r6, r5, lsl #3] @ zero_extendqisi2 sub r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L421 + bhi .L422 uxtb r0, r5 bl FlashReset -.L421: +.L422: add r5, r5, #1 cmp r5, #4 - bne .L422 - ldrb r3, [r4, #2252] @ zero_extendqisi2 - ldr r5, .L429 + bne .L423 + ldrb r3, [r4, #2256] @ zero_extendqisi2 cmp r3, #0 - beq .L423 + beq .L424 mov r0, #1 bl NandcSetMode - ldrb r0, [r5, #2229] @ zero_extendqisi2 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r5, #2229] @ zero_extendqisi2 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl NandcSetMode - ldrb r0, [r5, #101] @ zero_extendqisi2 + ldrb r0, [r4, #109] @ zero_extendqisi2 bl NandcSetDdrPara -.L423: - ldr r3, [r4, #44] - ldmfd sp!, {r4, r5, r6, lr} +.L424: + ldr r3, [r4, #48] + pop {r4, r5, r6, lr} ldrb r0, [r3, #20] @ zero_extendqisi2 b FlashBchSel -.L430: +.L431: .align 2 -.L429: +.L430: .word .LANCHOR0 - .word .LANCHOR0+2068 + .word .LANCHOR0+2072 .fnend .size ftl_flash_resume, .-ftl_flash_resume .align 2 .global ftl_nandc_get_irq_status + .syntax unified + .arm + .fpu softvfp .type ftl_nandc_get_irq_status, %function ftl_nandc_get_irq_status: .fnstart @@ -2464,6 +2669,9 @@ .size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status .align 2 .global rk_nandc_flash_ready + .syntax unified + .arm + .fpu softvfp .type rk_nandc_flash_ready, %function rk_nandc_flash_ready: .fnstart @@ -2481,6 +2689,9 @@ .size rk_nandc_flash_ready, .-rk_nandc_flash_ready .align 2 .global NandcIqrWaitFlashReady + .syntax unified + .arm + .fpu softvfp .type NandcIqrWaitFlashReady, %function NandcIqrWaitFlashReady: .fnstart @@ -2492,6 +2703,9 @@ .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady .align 2 .global rk_nandc_flash_xfer_completed + .syntax unified + .arm + .fpu softvfp .type rk_nandc_flash_xfer_completed, %function rk_nandc_flash_xfer_completed: .fnstart @@ -2509,6 +2723,9 @@ .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed .align 2 .global NandcSendDumpDataStart + .syntax unified + .arm + .fpu softvfp .type NandcSendDumpDataStart, %function NandcSendDumpDataStart: .fnstart @@ -2518,10 +2735,10 @@ ldr r2, [r0, #16] .pad #8 sub sp, sp, #8 - ldr r3, .L437 + ldr r3, .L438 str r2, [sp, #4] ldr r2, [sp, #4] - bic r2, r2, #4 + bfc r2, #2, #1 str r2, [sp, #4] ldr r2, [sp, #4] str r2, [r0, #16] @@ -2531,14 +2748,17 @@ add sp, sp, #8 @ sp needed bx lr -.L438: +.L439: .align 2 -.L437: +.L438: .word 538969130 .fnend .size NandcSendDumpDataStart, .-NandcSendDumpDataStart .align 2 .global NandcSendDumpDataDone + .syntax unified + .arm + .fpu softvfp .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: .fnstart @@ -2547,12 +2767,12 @@ @ link register save eliminated. .pad #8 sub sp, sp, #8 -.L440: +.L441: ldr r3, [r0, #8] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #1048576 - beq .L440 + beq .L441 add sp, sp, #8 @ sp needed bx lr @@ -2560,155 +2780,152 @@ .size NandcSendDumpDataDone, .-NandcSendDumpDataDone .align 2 .global NandcXferStart + .syntax unified + .arm + .fpu softvfp .type NandcXferStart, %function NandcXferStart: .fnstart - @ args = 8, pretend = 0, frame = 24 + @ args = 8, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov lr, #16 - ldr r5, .L462 - mov r4, #0 - .pad #28 - sub sp, sp, #28 - add r0, r5, r0, asl #3 - ldr r8, [sp, #64] - ldr r6, [r0, #12] - ldrb r0, [r0, #16] @ zero_extendqisi2 - ldr ip, [sp, #68] + mov ip, #16 + ldr r4, .L463 + mov r5, #0 + .pad #20 + sub sp, sp, #20 + ldr r8, [sp, #56] + ldr r6, [r4, r0, lsl #3] + add r0, r4, r0, lsl #3 ldr r7, [r6, #12] - bfi r7, lr, #8, #8 - bfi r7, r4, #3, #1 - bfi r4, r1, #1, #1 - orr r4, r4, #8 + ldrb r0, [r0, #4] @ zero_extendqisi2 + bfi r7, ip, #8, #8 + bfi r7, r5, #3, #1 + bfi r5, r1, #1, #1 bfi r7, r0, #5, #3 + orr r5, r5, #8 mov r0, #1 - bfi r4, r0, #5, #2 - orr r4, r4, #536870912 - mov r3, r3, lsr r0 - orr r4, r4, #1024 - bfi r4, r3, #4, #1 - ldr r3, [r5, #2260] + bfi r5, r0, #5, #2 + lsr r3, r3, r0 + orr r5, r5, #536870912 + orr r5, r5, #1024 + bfi r5, r3, #4, #1 + ldr r3, [r4, #2264] cmp r3, #3 - bls .L445 + bls .L446 ldr r3, [r6, #16] - str r3, [sp, #20] - ldr r3, [sp, #20] - bic r3, r3, #4 - str r3, [sp, #20] - adds r3, ip, #0 - movne r3, #1 - cmp ip, #0 - cmpeq r8, #0 - str r3, [sp, #8] - beq .L446 + str r3, [sp, #12] + ldr r3, [sp, #12] + bfc r3, #2, #1 + str r3, [sp, #12] + ldr r3, [sp, #60] + cmp r8, #0 + cmpeq r3, #0 + beq .L447 cmp r1, #0 - bne .L447 -.L455: + bne .L448 +.L456: add r2, r2, #1 cmp r8, #0 - mov r2, r2, asr #1 + asr r2, r2, #1 movne r0, r8 - bfi r4, r2, #22, #6 - ldreq r0, [r5, #2272] - b .L449 + bfi r5, r2, #22, #6 + ldreq r0, [r4, #2276] +.L450: + ldr r3, [r4, #2280] + ubfx r10, r5, #22, #5 + mov r9, r1 + mov r2, r1 + lsl r1, r10, #10 + str r0, [r4, #2284] + str r3, [r4, #2288] + bl rknand_dma_map_single + mov r2, r9 + str r0, [r4, #2292] + lsl r1, r10, #7 + ldr r0, [r4, #2288] + bl rknand_dma_map_single + mov r3, #1 + str r0, [r4, #2296] + str r3, [r4, #2300] + mov r2, #16 + ldr r3, [r4, #2292] + tst r8, #3 + clz r1, r9 + lsr r1, r1, #5 + str r3, [r6, #20] + ldr r3, [r4, #2296] + str r3, [r6, #24] + mov r3, #0 + str r3, [sp, #12] + ldr r3, [sp, #12] + bfi r3, r2, #9, #5 + moveq r2, #2 + str r3, [sp, #12] + ldr r3, [sp, #12] + orr r3, r3, #448 + str r3, [sp, #12] + ldreq r3, [sp, #12] + bfieq r3, r2, #3, #3 + streq r3, [sp, #12] + ldr r3, [sp, #12] + orr r3, r3, #4 + str r3, [sp, #12] + ldr r3, [sp, #12] + bfi r3, r1, #1, #1 + str r3, [sp, #12] + ldr r3, [sp, #12] + orr r3, r3, #1 + str r3, [sp, #12] .L447: - ldr r3, [r5, #2308] - mov r9, r5 + ldr r3, [sp, #12] + str r3, [r6, #16] +.L446: + str r7, [r6, #12] + str r5, [r6, #8] + orr r5, r5, #4 + str r5, [r6, #8] + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L448: + ldr r3, [r4, #2312] + lsr r10, r2, #1 + ldr ip, [sp, #60] cmp r3, #25 movcc r3, #64 movcs r3, #128 str r3, [sp, #4] - mov r3, r2, lsr #1 - str r3, [sp, #12] mov r3, #0 mov r0, r3 -.L451: - ldr lr, [sp, #12] - cmp r0, lr - bcs .L455 - ldr lr, [sp, #8] - mov r10, r3, lsr #2 +.L452: + cmp r0, r10 + bcs .L456 + ldr lr, [sp, #60] add r0, r0, #1 cmp lr, #0 - ldrneh fp, [ip, #2] - mvneq fp, #0 - ldrneh lr, [ip], #4 - ldreq lr, [r9, #2276] - orrne lr, lr, fp, asl #16 - ldrne fp, [r9, #2276] - streq fp, [lr, r10, asl #2] - strne lr, [fp, r10, asl #2] + bic lr, r3, #3 + ldrne fp, [ip], #4 @ unaligned + mvneq r9, #0 + ldrne r9, [r4, #2280] + ldreq fp, [r4, #2280] + strne fp, [r9, lr] + streq r9, [fp, lr] ldr lr, [sp, #4] add r3, r3, lr - b .L451 -.L449: - ldr r3, [r5, #2276] - ubfx r10, r4, #22, #5 - mov r9, r1 - str r0, [r5, #2280] - mov r2, r9 - mov r1, r10, asl #10 - str r3, [r5, #2284] - bl rknand_dma_map_single - mov r2, r9 - mov r1, r10, asl #7 - clz r9, r9 - mov r9, r9, lsr #5 - str r0, [r5, #2288] - ldr r0, [r5, #2284] - bl rknand_dma_map_single - mov r3, #1 - str r3, [r5, #2296] - tst r8, #3 - ldr r3, [r5, #2288] - str r0, [r5, #2292] - str r3, [r6, #20] - ldr r3, [r5, #2292] - str r3, [r6, #24] - mov r3, #0 - str r3, [sp, #20] - ldr r3, [sp, #20] - bic r3, r3, #15872 - orr r3, r3, #8192 - str r3, [sp, #20] - ldr r3, [sp, #20] - orr r3, r3, #448 - str r3, [sp, #20] - ldreq r3, [sp, #20] - biceq r3, r3, #56 - orreq r3, r3, #16 - streq r3, [sp, #20] - ldr r3, [sp, #20] - orr r3, r3, #4 - str r3, [sp, #20] - ldr r3, [sp, #20] - bic r3, r3, #2 - orr r9, r3, r9, asl #1 - str r9, [sp, #20] - ldr r3, [sp, #20] - orr r3, r3, #1 - str r3, [sp, #20] -.L446: - ldr r3, [sp, #20] - str r3, [r6, #16] -.L445: - str r7, [r6, #12] - str r4, [r6, #8] - orr r4, r4, #4 - str r4, [r6, #8] - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L463: + b .L452 +.L464: .align 2 -.L462: +.L463: .word .LANCHOR0 .fnend .size NandcXferStart, .-NandcXferStart .align 2 .global Ftl_log2 + .syntax unified + .arm + .fpu softvfp .type Ftl_log2, %function Ftl_log2: .fnstart @@ -2717,20 +2934,24 @@ @ link register save eliminated. mov r1, #0 mov r2, #1 -.L465: +.L466: cmp r2, r0 uxth r3, r1 add r1, r1, #1 - movls r2, r2, asl #1 - bls .L465 -.L467: + bls .L467 sub r0, r3, #1 uxth r0, r0 bx lr +.L467: + lsl r2, r2, #1 + b .L466 .fnend .size Ftl_log2, .-Ftl_log2 .align 2 .global FtlPrintInfo + .syntax unified + .arm + .fpu softvfp .type FtlPrintInfo, %function FtlPrintInfo: .fnstart @@ -2742,507 +2963,534 @@ .size FtlPrintInfo, .-FtlPrintInfo .align 2 .global FtlSysBlkNumInit + .syntax unified + .arm + .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, .L471 - cmp r0, #23 - movw r1, #2330 - add r2, r3, #2320 - movls r0, #24 + ldr r3, .L470 + movw r2, #2324 + movw r1, #2334 + cmp r0, #24 + movcc r0, #24 + ldrh r2, [r3, r2] ldrh r1, [r3, r1] - ldrh r2, [r2] - str r0, [r3, #2316] - mul r2, r2, r0 - rsb r0, r0, r1 - movw r1, #2328 + str r0, [r3, #2320] + mul r2, r0, r2 + sub r0, r1, r0 + movw r1, #2332 strh r0, [r3, r1] @ movhi mov r0, #0 - ldr r1, [r3, #2336] - str r2, [r3, #2324] - rsb r2, r2, r1 - str r2, [r3, #2332] + ldr r1, [r3, #2340] + str r2, [r3, #2328] + sub r2, r1, r2 + str r2, [r3, #2336] bx lr -.L472: - .align 2 .L471: + .align 2 +.L470: .word .LANCHOR0 .fnend .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 .global FtlConstantsInit + .syntax unified + .arm + .fpu softvfp .type FtlConstantsInit, %function FtlConstantsInit: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2340 - ldr r4, .L502 - movw r1, #2344 - ldrh r6, [r0, #8] + movw r3, #2344 + ldr r4, .L500 + movw r1, #2348 mov r5, r0 - ldrh r2, [r0, #10] .pad #20 sub sp, sp, #20 + ldrh r6, [r0, #8] + ldrh r2, [r0, #10] ldrh lr, [r0, #14] strh r6, [r4, r3] @ movhi - movw r3, #2342 + movw r3, #2346 strh r2, [r4, r3] @ movhi ldrh r3, [r0, #12] - ldr r0, .L502+4 + ldr r0, .L500+4 strh r3, [r4, r1] @ movhi - movw r1, #2330 + movw r1, #2334 strh lr, [r4, r1] @ movhi mov r1, #0 -.L474: +.L473: strb r1, [r1, r0] add r1, r1, #1 cmp r1, #32 - bne .L474 + bne .L473 ldrh r0, [r5, #14] ldrh r1, [r5, #20] cmp r1, r0, lsr #8 - bcs .L475 + bcs .L474 uxtb r10, r3 - ldr r9, .L502+4 - mov r1, r10, asl #1 + ldr r9, .L500+4 + lsl r1, r10, #1 uxtb r1, r1 - str r1, [sp, #4] + str r1, [sp] sub r1, r2, #1 mul r1, r3, r1 - str r1, [sp] + str r1, [sp, #8] mov r1, #0 -.L476: +.L475: cmp r1, r3 - bcs .L478 - ldr ip, [sp] - uxtb r0, r1 - rsb r7, r3, r1 - add ip, r1, ip + bcs .L477 + ldr ip, [sp, #8] + sub r7, r1, r3 add r7, r9, r7 - add ip, r9, ip - str ip, [sp, #8] - mov ip, #0 + uxtb r0, r1 str r7, [sp, #12] + add ip, r1, ip + add ip, r9, ip + str ip, [sp, #4] + mov ip, #0 mov r8, ip -.L479: - cmp r8, r2 - add ip, ip, r3 - bcs .L501 + b .L478 +.L476: ldr r7, [sp, #12] - add fp, r0, r10 + add fp, r10, r0 add r8, r8, #1 strb r0, [r7, ip] - ldr r7, [sp, #8] - strb fp, [r7, ip] ldr r7, [sp, #4] - add r0, r0, r7 + strb fp, [r7, ip] + ldr r7, [sp] + add r0, r7, r0 uxtb r0, r0 - b .L479 -.L501: - add r1, r1, #1 - b .L476 .L478: - movw r1, #2342 - mov r2, r2, asl #1 + cmp r8, r2 + add ip, ip, r3 + bcc .L476 + add r1, r1, #1 + b .L475 +.L477: + lsl r2, r2, #1 + movw r1, #2346 + lsr lr, lr, #1 strh r2, [r4, r1] @ movhi - movw r2, #2330 - mov lr, lr, lsr #1 + movw r2, #2334 strh lr, [r4, r2] @ movhi -.L475: - cmp r6, #1 - movw r2, #2380 +.L474: + ldr fp, .L500+8 + movw r2, #2382 + ldrb r9, [r4, #36] @ zero_extendqisi2 mov r1, #5 strh r1, [r4, r2] @ movhi - movw r1, #2382 - mov r0, #0 - strh r0, [r4, r1] @ movhi - ldreq r1, .L502 - ldrb r9, [r4] @ zero_extendqisi2 - ldr r8, .L502+8 - streqh r6, [r1, r2] @ movhi - movw r1, #2342 - ldrh r7, [r4, r1] + cmp r6, #1 + mov r1, #0 + strheq r6, [r4, r2] @ movhi + strh r1, [fp] @ movhi cmp r9, #0 - mov r2, #4352 - strh r2, [r8] @ movhi - movne r2, #384 - strneh r2, [r8] @ movhi - smulbb r7, r7, r3 - ldr r2, .L502 - ldrh r10, [r5, #16] - add r1, r2, #2320 - str r2, [sp, #8] - uxth r7, r7 - strh r7, [r1] @ movhi - movw r1, #2330 - ldrh r6, [r4, r1] - movw r1, #2386 - smulbb r0, r7, r10 - smulbb r3, r6, r3 - strh r3, [r4, r1] @ movhi - movw r3, #2388 + mov r1, #4352 + movw r2, #2386 + strh r1, [r4, r2] @ movhi + movne r1, #384 + strhne r1, [r4, r2] @ movhi + movw r2, #2346 + ldrh r7, [r4, r2] + movw r2, #2324 + ldrh r8, [r5, #16] ldrh r1, [r5, #18] - strh r10, [r4, r3] @ movhi - movw r3, #2390 - strh r1, [r4, r3] @ movhi - movw r3, #2392 - strh r0, [r4, r3] @ movhi - movw r0, #2394 - ldrh r3, [r5, #20] + smulbb r7, r7, r3 str r1, [sp, #4] - strh r3, [r4, r0] @ movhi + uxth r7, r7 + strh r7, [r4, r2] @ movhi + movw r2, #2334 + ldrh r6, [r4, r2] + movw r2, #2388 + smulbb r3, r3, r6 + strh r3, [r4, r2] @ movhi + smulbb r2, r7, r8 + movw r3, #2390 + strh r8, [r4, r3] @ movhi + movw r3, #2392 + strh r1, [r4, r3] @ movhi + movw r3, #2394 + strh r2, [r4, r3] @ movhi + movw r2, #2396 + ldrh r3, [r5, #20] mov r0, r3 + strh r3, [r4, r2] @ movhi str r3, [sp] bl Ftl_log2 - movw ip, #2398 - cmp r6, #1024 ldr r3, [sp] - mov fp, r0 - movw r0, #2396 - ldr r2, [sp, #8] - strh fp, [r4, r0] @ movhi - mov r0, r3, asl #9 + movw r2, #2398 + strh r0, [r4, r2] @ movhi + mov r10, r0 + ldr r0, .L500+12 + cmp r6, #1024 ldr r1, [sp, #4] - uxth r0, r0 - strh r0, [r4, ip] @ movhi - add ip, r2, #2400 - mov r0, r0, lsr #8 - strh r0, [ip] @ movhi + lsl r2, r3, #9 + uxth r2, r2 + mul r1, r3, r1 + strh r2, [r0] @ movhi + lsr r2, r2, #8 movw r0, #2402 - ldrh ip, [r5, #26] - mul r1, r1, r3 - ldr r5, .L502 - strh ip, [r4, r0] @ movhi - movwhi ip, #2382 - mul r0, r6, r7 - str r0, [r4, #2336] - uxtbhi r0, r6 - strhih r0, [r2, ip] @ movhi - movw r2, #2382 - ldrh r2, [r4, r2] - ldrh r0, [r8] - rsb r2, r2, r6 - mov r6, r6, asl #6 - mul r2, r2, r7 - mov r0, r0, asl #3 + strh r2, [r4, r0] @ movhi + movw r2, #2404 + ldrh r0, [r5, #26] + strh r0, [r4, r2] @ movhi + mul r2, r6, r7 + str r2, [r4, #2340] + uxtbhi r2, r6 + strhhi r2, [fp] @ movhi + ldrh r2, [fp] + sub r2, r6, r2 + lsl r6, r6, #6 + mul r2, r7, r2 mul r2, r3, r2 - mul r10, r10, r2 - mov r10, r10, asr #11 - str r10, [r4, #2404] + mul r8, r8, r2 + movw r2, #2386 + ldrh r0, [r4, r2] + asr r8, r8, #11 + lsl r0, r0, #3 + str r8, [r4, #2408] bl __aeabi_idiv - movw r3, #2408 - mov r1, r7 - ldr r10, .L502 uxth r0, r0 + movw r3, #2412 + mov r1, r7 cmp r0, #4 - strhih r0, [r5, r3] @ movhi movls r2, #4 - strlsh r2, [r5, r3] @ movhi + strhhi r0, [r4, r3] @ movhi + strhls r2, [r4, r3] @ movhi cmp r9, #0 - movw r2, #2410 - movne r3, #640 - strneh r3, [r8] @ movhi - ldrh r3, [r8] - mov r3, r3, asr fp - add fp, fp, #9 - mov r0, r6, asr fp + movne r2, #640 + movwne r3, #2386 + strhne r2, [r4, r3] @ movhi + movw r3, #2386 + ldrh r3, [r4, r3] + movw r2, #2414 + asr r3, r3, r10 + add r10, r10, #9 + asr r6, r6, r10 add r3, r3, #2 strh r3, [r4, r2] @ movhi + ldr r3, .L500+16 + strh r6, [r3] @ movhi + uxth r6, r6 + mul r3, r6, r7 + add r6, r6, #8 + str r3, [r4, #2420] movw r3, #2412 - strh r0, [r4, r3] @ movhi - uxth r0, r0 - add r6, r0, #8 - mul r3, r7, r0 - str r3, [r4, #2416] - movw r3, #2408 ldrh r0, [r4, r3] bl __aeabi_uidiv - cmp r7, #1 uxtah r0, r6, r0 - ldr r6, .L502 + cmp r7, #1 + add r3, r4, #2320 addeq r0, r0, #4 - str r0, [r10, #2316] - ldr r3, [r4, #2316] - uxth r0, r3 + str r0, [r4, #2320] + ldrh r0, [r3] bl FtlSysBlkNumInit - ldr r3, [r4, #2316] - ldr r2, [r4, #2332] + ldr r5, [r4, #2336] + movw r2, #2390 + ldr r3, [r4, #2320] mov r0, #2048 - str r3, [r4, #2420] - movw r3, #2388 - ldrh r3, [r4, r3] - mov r2, r2, asl #2 - mul r3, r3, r2 - movw r2, #2396 + str r3, [r4, #2424] + lsl r3, r5, #2 ldrh r5, [r4, r2] - add r5, r5, #9 - mov r5, r3, lsr r5 - movw r3, #2424 + mul r5, r5, r3 + movw r3, #2398 + ldrh r3, [r4, r3] + add r3, r3, #9 + lsr r5, r5, r3 + movw r3, #2428 add r5, r5, #2 uxth r5, r5 strh r5, [r4, r3] @ movhi - movw r3, #2394 - ldrh r7, [r4, r3] - mov r1, r7 + movw r3, #2396 + ldrh r6, [r4, r3] + mov r1, r6 bl __aeabi_idiv - movw r1, #2408 + movw r1, #2412 + movw r3, #2430 ldrh r2, [r4, r1] - movw r3, #2426 - ldrb ip, [r4, #144] @ zero_extendqisi2 - cmp ip, #0 strh r0, [r4, r3] @ movhi mov r3, #0 - str r3, [r4, #2428] + str r3, [r4, #2432] + ldrb ip, [r4, #152] @ zero_extendqisi2 add r3, r2, #3 strh r3, [r4, r1] @ movhi + ldr r3, [r4, #2420] + cmp ip, #0 addne r2, r2, #4 - ldr r3, [r4, #2416] - strneh r2, [r6, r1] @ movhi add r0, r3, #3 + strhne r2, [r4, r1] @ movhi + str r0, [r4, #2420] addne r3, r3, #5 - str r0, [r4, #2416] - bne .L500 + bne .L499 cmp r0, #7 - bhi .L489 + bhi .L488 mov r3, #8 -.L500: - str r3, [r6, #2416] -.L489: - ldr r2, .L502+12 +.L499: + str r3, [r4, #2420] +.L488: + movw r2, #2436 mov r3, #0 - mov r0, #0 - strh r3, [r2] @ movhi - movw r3, #2328 + strh r3, [r4, r2] @ movhi + movw r3, #2332 ldrh r1, [r4, r3] - mov r3, r1, lsr #3 - add r3, r3, r1, asl #1 + mov r0, #0 + lsr r3, r1, #3 + add r3, r3, r1, lsl #1 add r3, r3, #52 - add r5, r3, r5, asl #2 - cmp r5, r7, asl #9 + add r5, r3, r5, lsl #2 + cmp r5, r6, lsl #9 movcc r3, #1 - strcch r3, [r2] @ movhi + strhcc r3, [r4, r2] @ movhi add sp, sp, #20 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L503: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L501: .align 2 -.L502: +.L500: .word .LANCHOR0 - .word .LANCHOR0+2348 + .word .LANCHOR0+2350 .word .LANCHOR0+2384 - .word .LANCHOR0+2432 + .word .LANCHOR0+2400 + .word .LANCHOR0+2416 .fnend .size FtlConstantsInit, .-FtlConstantsInit .align 2 .global IsBlkInVendorPart + .syntax unified + .arm + .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, .L511 - movw r3, #2434 + ldr r2, .L509 + movw r3, #2438 ldrh r3, [r2, r3] cmp r3, #0 - beq .L510 - movw r1, #2408 - ldr r3, [r2, #2436] + beq .L508 + movw r1, #2412 + ldr r3, [r2, #2440] ldrh r2, [r2, r1] - add r2, r3, r2, asl #1 -.L506: + add r2, r3, r2, lsl #1 +.L504: cmp r3, r2 - beq .L510 + bne .L505 +.L508: + mov r0, #0 + bx lr +.L505: ldrh r1, [r3], #2 - cmp r1, r0 - bne .L506 + cmp r0, r1 + bne .L504 mov r0, #1 bx lr .L510: - mov r0, #0 - bx lr -.L512: .align 2 -.L511: +.L509: .word .LANCHOR0 .fnend .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 .global FtlCacheMetchLpa + .syntax unified + .arm + .fpu softvfp .type FtlCacheMetchLpa, %function FtlCacheMetchLpa: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L520 - ldr r3, [r2, #2440] + ldr r2, .L521 + ldr r3, [r2, #2444] cmp r3, #0 - beq .L516 - stmfd sp!, {r4, r5, lr} + beq .L514 + push {r4, r5, lr} .save {r4, r5, lr} mov r5, #36 - ldr r4, [r2, #2444] + ldr r4, [r2, #2448] mov r2, #0 -.L515: +.L513: mla ip, r5, r2, r4 ldr lr, [ip, #16] - cmp lr, r0 - movcc ip, #0 - movcs ip, #1 cmp lr, r1 movhi ip, #0 + movls ip, #1 + cmp lr, r0 + movcc ip, #0 cmp ip, #0 - bne .L517 - add r2, r2, #1 - cmp r2, r3 bne .L515 + add r2, r2, #1 + cmp r3, r2 + bne .L513 mov r0, ip - ldmfd sp!, {r4, r5, pc} -.L516: + pop {r4, r5, pc} +.L514: mov r0, r3 bx lr -.L517: +.L515: mov r0, #1 - ldmfd sp!, {r4, r5, pc} -.L521: + pop {r4, r5, pc} +.L522: .align 2 -.L520: +.L521: .word .LANCHOR0 .fnend .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 2 .global FtlGetCap + .syntax unified + .arm + .fpu softvfp .type FtlGetCap, %function FtlGetCap: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L523 - ldr r0, [r3, #2428] + ldr r3, .L524 + ldr r0, [r3, #2432] bx lr -.L524: +.L525: .align 2 -.L523: +.L524: .word .LANCHOR0 .fnend .size FtlGetCap, .-FtlGetCap .align 2 .global FtlGetCapacity + .syntax unified + .arm + .fpu softvfp .type FtlGetCapacity, %function FtlGetCapacity: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L526 - ldr r0, [r3, #2428] + ldr r3, .L527 + ldr r0, [r3, #2432] bx lr -.L527: +.L528: .align 2 -.L526: +.L527: .word .LANCHOR0 .fnend .size FtlGetCapacity, .-FtlGetCapacity .align 2 .global ftl_get_density + .syntax unified + .arm + .fpu softvfp .type ftl_get_density, %function ftl_get_density: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L529 - ldr r0, [r3, #2428] + ldr r3, .L530 + ldr r0, [r3, #2432] bx lr -.L530: +.L531: .align 2 -.L529: +.L530: .word .LANCHOR0 .fnend .size ftl_get_density, .-ftl_get_density .align 2 .global FtlGetLpn + .syntax unified + .arm + .fpu softvfp .type FtlGetLpn, %function FtlGetLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L532 - ldr r0, [r3, #2448] + ldr r3, .L533 + ldr r0, [r3, #2452] bx lr -.L533: +.L534: .align 2 -.L532: +.L533: .word .LANCHOR0 .fnend .size FtlGetLpn, .-FtlGetLpn .align 2 .global FtlBbmMapBadBlock + .syntax unified + .arm + .fpu softvfp .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, lr} - .save {r4, r5, r6, lr} - .pad #8 - movw r3, #2386 - ldr r5, .L536 - mov r6, r0 - ldrh r4, [r5, r3] - mov r1, r4 + push {r0, r1, r2, r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + .pad #12 + movw r3, #2388 + ldr r4, .L537 + mov r5, r0 + ldrh r7, [r4, r3] + mov r1, r7 bl __aeabi_uidiv - uxth r2, r0 - smulbb r3, r2, r4 - add r1, r5, r2, asl #2 - mov r4, #1 - ldr ip, [r1, #2480] - rsb r3, r3, r6 - uxth r3, r3 - and r1, r3, #31 - mov lr, r3, lsr #5 - ldr r0, [ip, lr, asl #2] - orr r1, r0, r4, asl r1 - ldr r0, .L536+4 - str r1, [ip, lr, asl #2] - str r1, [sp] - mov r1, r6 + uxth r6, r0 + mov r1, r7 + mov r0, r5 + bl __aeabi_uidivmod + add r2, r4, r6, lsl #2 + uxth r3, r1 + ldr r2, [r2, #2484] + lsr r1, r3, #5 + and ip, r3, #31 + mov lr, #1 + 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 r1, r5 + ldr r0, .L537+4 bl printk - add r2, r5, #2448 + add r3, r4, #2448 mov r0, #0 - ldrh r3, [r2, #10] - add r3, r3, r4 - strh r3, [r2, #10] @ movhi - add sp, sp, #8 + ldrh r2, [r3, #14] + add r2, r2, #1 + strh r2, [r3, #14] @ movhi + add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, pc} -.L537: + pop {r4, r5, r6, r7, pc} +.L538: .align 2 -.L536: +.L537: .word .LANCHOR0 .word .LC2 .fnend .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock - .global __aeabi_uidivmod .align 2 .global FtlBbmIsBadBlock + .syntax unified + .arm + .fpu softvfp .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - movw r3, #2386 - ldr r5, .L540 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + movw r3, #2388 + ldr r5, .L541 mov r7, r0 ldrh r6, [r5, r3] mov r1, r6 @@ -3251,23 +3499,26 @@ uxth r4, r1 mov r1, r6 bl __aeabi_uidiv - mov r2, r4, lsr #5 - and r4, r4, #31 uxth r0, r0 - add r5, r5, r0, asl #2 - ldr r3, [r5, #2480] - ldr r0, [r3, r2, asl #2] - mov r0, r0, lsr r4 + lsr r2, r4, #5 + add r5, r5, r0, lsl #2 + and r4, r4, #31 + ldr r3, [r5, #2484] + ldr r0, [r3, r2, lsl #2] + lsr r0, r0, r4 and r0, r0, #1 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L541: + pop {r4, r5, r6, r7, r8, pc} +.L542: .align 2 -.L540: +.L541: .word .LANCHOR0 .fnend .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock .align 2 .global FtlBbtInfoPrint + .syntax unified + .arm + .fpu softvfp .type FtlBbtInfoPrint, %function FtlBbtInfoPrint: .fnstart @@ -3279,34 +3530,37 @@ .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .align 2 .global FtlBbtCalcTotleCnt + .syntax unified + .arm + .fpu softvfp .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + ldr r3, .L552 + movw r2, #2388 + movw r1, #2346 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - movw r3, #2386 - ldr r4, .L552 mov r5, #0 - ldrh r6, [r4, r3] - movw r3, #2342 - ldrh r3, [r4, r3] mov r4, r5 - mul r6, r3, r6 -.L544: + ldrh r2, [r3, r2] + ldrh r6, [r3, r1] + mul r6, r6, r2 +.L545: uxth r0, r5 cmp r0, r6 - bge .L551 + blt .L547 + mov r0, r4 + pop {r4, r5, r6, pc} +.L547: bl FtlBbmIsBadBlock - add r5, r5, #1 cmp r0, #0 + add r5, r5, #1 addne r4, r4, #1 uxthne r4, r4 - b .L544 -.L551: - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} + b .L545 .L553: .align 2 .L552: @@ -3315,29 +3569,34 @@ .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 2 .global V2P_block + .syntax unified + .arm + .fpu softvfp .type V2P_block, %function V2P_block: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - movw r3, #2344 - ldr r6, .L556 - mov r4, r1 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + movw r3, #2348 + ldr r4, .L556 + mov r5, r1 mov r7, r0 - ldrh r5, [r6, r3] - mov r1, r5 - bl __aeabi_uidivmod - mov r0, r7 - smlabb r4, r4, r5, r1 - mov r1, r5 + ldrh r6, [r4, r3] + mov r1, r6 bl __aeabi_uidiv - movw r3, #2386 - ldrh r3, [r6, r3] - smlabb r0, r3, r0, r4 + movw r3, #2388 + smulbb r5, r6, r5 + ldrh r4, [r4, r3] + mov r1, r6 + smulbb r4, r4, r0 + mov r0, r7 + bl __aeabi_uidivmod + add r0, r5, r1 + add r0, r4, r0 uxth r0, r0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} + pop {r4, r5, r6, r7, r8, pc} .L557: .align 2 .L556: @@ -3346,18 +3605,21 @@ .size V2P_block, .-V2P_block .align 2 .global P2V_plane + .syntax unified + .arm + .fpu softvfp .type P2V_plane, %function P2V_plane: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 ldr r3, .L560 - movw r2, #2344 - stmfd sp!, {r4, r5, r6, lr} + movw r2, #2348 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 ldrh r5, [r3, r2] - movw r2, #2386 + movw r2, #2388 ldrh r1, [r3, r2] bl __aeabi_uidiv mov r1, r5 @@ -3366,7 +3628,7 @@ bl __aeabi_uidivmod add r1, r4, r1 uxth r0, r1 - ldmfd sp!, {r4, r5, r6, pc} + pop {r4, r5, r6, pc} .L561: .align 2 .L560: @@ -3375,23 +3637,26 @@ .size P2V_plane, .-P2V_plane .align 2 .global P2V_block_in_plane + .syntax unified + .arm + .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 - stmfd sp!, {r4, lr} + push {r4, lr} .save {r4, lr} - movw r3, #2386 + movw r3, #2388 ldr r4, .L564 ldrh r1, [r4, r3] bl __aeabi_uidivmod - movw r3, #2344 + movw r3, #2348 uxth r0, r1 ldrh r1, [r4, r3] bl __aeabi_uidiv uxth r0, r0 - ldmfd sp!, {r4, pc} + pop {r4, pc} .L565: .align 2 .L564: @@ -3400,6 +3665,9 @@ .size P2V_block_in_plane, .-P2V_block_in_plane .align 2 .global ftl_cmp_data_ver + .syntax unified + .arm + .fpu softvfp .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: .fnstart @@ -3408,13 +3676,13 @@ @ link register save eliminated. cmp r0, r1 bls .L567 - rsb r0, r1, r0 + sub r0, r0, r1 cmp r0, #-2147483648 movhi r0, #0 movls r0, #1 bx lr .L567: - rsb r0, r0, r1 + sub r0, r1, r0 cmp r0, #-2147483648 movls r0, #0 movhi r0, #1 @@ -3423,6 +3691,9 @@ .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 .global FtlFreeSysBlkQueueEmpty + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: .fnstart @@ -3432,16 +3703,19 @@ ldr r3, .L570 ldrh r0, [r3, #6] clz r0, r0 - mov r0, r0, lsr #5 + lsr r0, r0, #5 bx lr .L571: .align 2 .L570: - .word .LANCHOR0+2512 + .word .LANCHOR0+2516 .fnend .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty .align 2 .global FtlFreeSysBlkQueueFull + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: .fnstart @@ -3452,291 +3726,307 @@ ldrh r0, [r3, #6] sub r0, r0, #1024 clz r0, r0 - mov r0, r0, lsr #5 + lsr r0, r0, #5 bx lr .L574: .align 2 .L573: - .word .LANCHOR0+2512 + .word .LANCHOR0+2516 .fnend .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull .align 2 .global FtlFreeSysBlkQueueIn + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} sub r3, r0, #1 movw r2, #65533 - mov r7, r0 uxth r3, r3 cmp r3, r2 - ldmhifd sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, .L585 + bxhi lr + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r4, .L588 ldrh r3, [r4, #6] cmp r3, #1024 - ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + popeq {r4, r5, r6, r7, r8, pc} cmp r1, #0 + mov r5, r0 beq .L577 - ldr r5, .L585+4 - ldr r3, [r5, #-3616] + ldr r6, .L588+4 + ldr r3, [r6, #-3612] cmp r3, #0 bne .L577 bl P2V_block_in_plane - mov r1, #1 - mov r3, r7, asl #10 - mov r2, r1 - mov r6, r0 - ldr r0, [r5, #-3612] + mov r7, r0 + ldr r0, [r6, #-3608] + lsl r3, r5, #10 + mov r2, #1 + mov r1, r2 str r3, [r0, #4] bl FlashEraseBlocks - ldr r1, [r5, #-3608] - mov r3, r6, asl #1 - ldrh r2, [r1, r3] - add r2, r2, #1 - strh r2, [r1, r3] @ movhi - ldr r3, [r5, #-3604] + ldr r2, [r6, #-3604] + lsl r0, r7, #1 + ldrh r3, [r2, r0] add r3, r3, #1 - str r3, [r5, #-3604] + strh r3, [r2, r0] @ movhi + ldr r3, [r6, #-3600] + add r3, r3, #1 + str r3, [r6, #-3600] .L577: ldrh r3, [r4, #6] add r3, r3, #1 strh r3, [r4, #6] @ movhi ldrh r3, [r4, #4] - add r2, r4, r3, asl #1 + 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 - strh r7, [r2, #8] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L586: + pop {r4, r5, r6, r7, r8, pc} +.L589: .align 2 -.L585: - .word .LANCHOR0+2512 +.L588: + .word .LANCHOR0+2516 .word .LANCHOR2 .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 2 .global FtlFreeSysBLkSort + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L600 - ldrh ip, [r3, #28] - ldr r3, .L600+4 + ldr r3, .L603 ldrh r2, [r3, #6] cmp r2, #0 bxeq lr - stmfd sp!, {r4, lr} - .save {r4, lr} + ldr r2, .L603+4 mov r0, #0 - ldrh r1, [r3, #2] - and ip, ip, #31 - ldrh r2, [r3, #4] + push {r4, lr} + .save {r4, lr} mov r4, r0 -.L589: - uxth lr, r0 + ldrh r1, [r3, #2] + ldrh lr, [r2, #28] + ldrh r2, [r3, #4] + and lr, lr, #31 +.L592: + uxth ip, r0 add r0, r0, #1 cmp lr, ip - bge .L599 - add lr, r3, r1, asl #1 + bgt .L593 + cmp r4, #0 + strhne r1, [r3, #2] @ movhi + strhne r2, [r3, #4] @ movhi + pop {r4, pc} +.L593: + add ip, r3, r1, lsl #1 add r1, r1, #1 ubfx r1, r1, #0, #10 - ldrh r4, [lr, #8] - add lr, r3, r2, asl #1 - strh r4, [lr, #8] @ movhi + ldrh r4, [ip, #8] + add ip, r3, r2, lsl #1 + strh r4, [ip, #8] @ movhi mov r4, #1 add r2, r2, r4 ubfx r2, r2, #0, #10 - b .L589 -.L599: - cmp r4, #0 - strneh r1, [r3, #2] @ movhi - strneh r2, [r3, #4] @ movhi - ldmfd sp!, {r4, pc} -.L601: + b .L592 +.L604: .align 2 -.L600: - .word .LANCHOR2-3600 - .word .LANCHOR0+2512 +.L603: + .word .LANCHOR0+2516 + .word .LANCHOR2-3596 .fnend .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 .global FtlFreeSysBlkQueueOut + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - ldr r7, .L613 - add r4, r7, #2512 - mov r8, r4 -.L603: + ldr r4, .L616 + ldr r8, .L616+4 + mov r7, r4 +.L606: ldrh r1, [r4, #6] cmp r1, #0 - beq .L604 - ldr r5, .L613+4 + beq .L607 + ldr r5, .L616+8 sub r1, r1, #1 ldrh r3, [r4, #2] strh r1, [r4, #6] @ movhi - ldr r10, [r5, #-3616] - add r2, r4, r3, asl #1 + ldr r10, [r5, #-3612] + add r2, r4, r3, lsl #1 add r3, r3, #1 cmp r10, #0 ubfx r3, r3, #0, #10 ldrh r6, [r2, #8] strh r3, [r4, #2] @ movhi - bne .L605 + bne .L608 mov r0, r6 bl P2V_block_in_plane - mov r3, r6, asl #10 mov r9, r0 - ldr r0, [r5, #-3612] + ldr r0, [r5, #-3608] + lsl r3, r6, #10 str r3, [r0, #4] - ldrb r3, [r7, #144] @ zero_extendqisi2 + ldrb r3, [r8, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L606 - mov r1, r10 + beq .L609 mov r2, #1 + mov r1, r10 bl FlashEraseBlocks -.L606: - mov r1, #1 - ldr r0, [r5, #-3612] - mov r2, r1 +.L609: + mov r2, #1 + ldr r0, [r5, #-3608] + mov r1, r2 bl FlashEraseBlocks - ldr r1, [r5, #-3608] - mov r3, r9, asl #1 - ldrh r2, [r1, r3] - add r2, r2, #1 - strh r2, [r1, r3] @ movhi - ldr r3, [r5, #-3604] + ldr r2, [r5, #-3604] + lsl r0, r9, #1 + ldrh r3, [r2, r0] add r3, r3, #1 - str r3, [r5, #-3604] - b .L605 -.L604: - ldr r0, .L613+8 - bl printk -.L607: - b .L607 -.L605: + strh r3, [r2, r0] @ movhi + ldr r3, [r5, #-3600] + add r3, r3, #1 + str r3, [r5, #-3600] +.L608: sub r3, r6, #1 movw r2, #65533 uxth r3, r3 cmp r3, r2 - bls .L608 + bls .L611 + ldrh r2, [r7, #6] mov r1, r6 - ldrh r2, [r8, #6] - ldr r0, .L613+12 + ldr r0, .L616+12 bl printk - b .L603 -.L608: + b .L606 +.L607: + ldr r0, .L616+16 + bl printk +.L610: + b .L610 +.L611: mov r0, r6 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L614: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L617: .align 2 -.L613: +.L616: + .word .LANCHOR0+2516 .word .LANCHOR0 .word .LANCHOR2 - .word .LC3 .word .LC4 + .word .LC3 .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 .global test_node_in_list + .syntax unified + .arm + .fpu softvfp .type test_node_in_list, %function test_node_in_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L621 + ldr r3, .L624 str lr, [sp, #-4]! .save {lr} movw lr, #65535 - ldr ip, [r3, #-3552] ldr r2, [r0] - ldr r3, .L621+4 - rsb r0, ip, r2 - mov r0, r0, asr #1 + ldr ip, [r3, #-3548] + sub r3, r2, ip + asr r0, r3, #1 + ldr r3, .L624+4 mul r3, r3, r0 mov r0, #6 uxth r3, r3 -.L617: - cmp r1, r3 - beq .L618 +.L620: + cmp r3, r1 + beq .L621 ldrh r3, [r2] cmp r3, lr - beq .L619 + beq .L622 mla r2, r0, r3, ip - b .L617 -.L618: + b .L620 +.L621: mov r0, #1 ldr pc, [sp], #4 -.L619: +.L622: mov r0, #0 ldr pc, [sp], #4 -.L622: +.L625: .align 2 -.L621: +.L624: .word .LANCHOR2 .word -1431655765 .fnend .size test_node_in_list, .-test_node_in_list .align 2 .global insert_data_list + .syntax unified + .arm + .fpu softvfp .type insert_data_list, %function insert_data_list: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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, #2328 - ldr r5, .L640 - ldrh r3, [r5, r3] + movw r3, #2332 + ldr r4, .L642 + ldrh r3, [r4, r3] cmp r3, r0 - bls .L625 - ldr r2, .L640+4 + bls .L628 + ldr r2, .L642+4 mov lr, #6 mul lr, lr, r0 mvn ip, #0 - ldr r6, [r2, #-3552] - mov r10, r2 + ldr r6, [r2, #-3548] + mov r5, r2 add r1, r6, lr strh ip, [r1, #2] @ movhi strh ip, [r6, lr] @ movhi - ldr r3, [r2, #-3548] + ldr r3, [r2, #-3544] cmp r3, #0 - beq .L639 - ldr r8, [r2, #-3544] - mov r4, r0, asl #1 + streq r1, [r2, #-3544] + beq .L628 + ldr r8, [r2, #-3540] + lsl r10, r0, #1 ldrh r2, [r1, #4] - ldrh r7, [r8, r4] + ldrh r7, [r8, r10] cmp r2, #0 mulne ip, r2, r7 - ldr r7, [r10, #-3552] - ldr r2, .L640+8 - rsb r9, r7, r3 - mov r9, r9, asr #1 + ldr r7, [r5, #-3548] + sub r2, r3, r7 + asr r9, r2, #1 + ldr r2, .L642+8 mul r2, r2, r9 - movw r9, #2328 - ldrh r5, [r5, r9] - ldr r9, [r10, #-3608] - add r4, r9, r4 - str r4, [sp, #4] + movw r9, #2332 + ldrh r4, [r4, r9] + ldr r9, [r5, #-3604] + str r4, [sp] uxth r2, r2 + add r4, r9, r10 + str r4, [sp, #4] mov r4, #0 - str r5, [sp] -.L634: - add r4, r4, #1 +.L637: ldr r5, [sp] + add r4, r4, #1 uxth r4, r4 cmp r4, r5 movls r5, #0 @@ -3744,64 +4034,60 @@ cmp r0, r2 orreq r5, r5, #1 cmp r5, #0 - bne .L625 - mov r10, r2, asl #1 + bne .L628 + lsl r10, r2, #1 ldrh r5, [r3, #4] ldrh fp, [r8, r10] cmp r5, #0 mvneq r5, #0 mulne r5, r5, fp - cmp r5, ip - bne .L630 + cmp ip, r5 + bne .L633 ldr r5, [sp, #4] ldrh r10, [r9, r10] ldrh r5, [r5] cmp r10, r5 - bcc .L632 - b .L631 -.L630: - bhi .L631 -.L632: + bcc .L635 +.L634: + strh r2, [r6, lr] @ movhi + ldr ip, .L642+4 + ldrh r2, [r3, #2] + strh r2, [r1, #2] @ movhi + ldr r2, [ip, #-3544] + cmp r3, r2 + ldrhne lr, [r3, #2] + movne r2, #6 + ldrne r1, [ip, #-3548] + strheq r0, [r3, #2] @ movhi + streq r1, [ip, #-3544] + mulne r2, r2, lr + strhne r0, [r1, r2] @ movhi + strhne r0, [r3, #2] @ movhi + b .L628 +.L633: + bcc .L634 +.L635: ldrh r5, [r3] movw r10, #65535 cmp r5, r10 - streqh r2, [r1, #2] @ movhi - streqh r0, [r3] @ movhi - ldreq r3, .L640+4 - streq r1, [r3, #-3540] - beq .L625 -.L633: - mov r3, #6 - mov r2, r5 - mla r3, r3, r5, r7 - b .L634 -.L631: - strh r2, [r6, lr] @ movhi - ldrh r2, [r3, #2] + bne .L636 strh r2, [r1, #2] @ movhi - ldr r2, .L640+4 - ldr ip, [r2, #-3548] - cmp r3, ip - bne .L635 - strh r0, [r3, #2] @ movhi -.L639: - str r1, [r2, #-3548] - b .L625 -.L635: - ldrh ip, [r3, #2] - ldr r1, [r2, #-3552] - mov r2, #6 - mul r2, r2, ip - strh r0, [r1, r2] @ movhi - strh r0, [r3, #2] @ movhi -.L625: + strh r0, [r3] @ movhi + ldr r3, .L642+4 + str r1, [r3, #-3536] +.L628: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L641: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L636: + mov r3, #6 + mov r2, r5 + mla r3, r3, r5, r7 + b .L637 +.L643: .align 2 -.L640: +.L642: .word .LANCHOR0 .word .LANCHOR2 .word -1431655765 @@ -3809,180 +4095,193 @@ .size insert_data_list, .-insert_data_list .align 2 .global INSERT_DATA_LIST + .syntax unified + .arm + .fpu softvfp .type INSERT_DATA_LIST, %function INSERT_DATA_LIST: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} bl insert_data_list - ldr r2, .L644 - ldrh r3, [r2] + ldr r2, .L646 + ldrh r3, [r2, #-12] add r3, r3, #1 - strh r3, [r2] @ movhi - ldmfd sp!, {r3, pc} -.L645: + strh r3, [r2, #-12] @ movhi + pop {r4, pc} +.L647: .align 2 -.L644: - .word .LANCHOR2-3536 +.L646: + .word .LANCHOR2-3520 .fnend .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .align 2 .global insert_free_list + .syntax unified + .arm + .fpu softvfp .type insert_free_list, %function insert_free_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + 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 .L647 - ldr r2, .L655 - mov lr, #6 - mul r6, lr, r0 + beq .L649 + ldr r2, .L656 + mov r1, #6 + mul r5, r1, r0 mvn r3, #0 - ldr r7, [r2, #-3552] - mov r5, r2 - add ip, r7, r6 - strh r3, [ip, #2] @ movhi - strh r3, [r7, r6] @ movhi - ldr r3, [r2, #-3532] + ldr r6, [r2, #-3548] + mov ip, r2 + add lr, r6, r5 + strh r3, [lr, #2] @ movhi + strh r3, [r6, r5] @ movhi + ldr r3, [r2, #-3528] cmp r3, #0 - beq .L654 - ldr r9, [r2, #-3608] - mov r2, r0, asl #1 - ldr r8, [r5, #-3552] - rsb r1, r8, r3 - ldrh r10, [r9, r2] - ldr r2, .L655+4 - mov r1, r1, asr #1 - mul r1, r2, r1 - uxth r2, r1 -.L651: - mov r1, r2, asl #1 - ldrh r1, [r9, r1] - cmp r1, r10 - bcs .L649 + streq lr, [r2, #-3528] + beq .L649 + ldr r8, [r2, #-3604] + lsl r2, r0, #1 + ldr r7, [ip, #-3548] + ldrh r9, [r8, r2] + sub r2, r3, r7 + asr r10, r2, #1 + ldr r2, .L656+4 + mul r2, r2, r10 + mov r10, r1 + uxth r2, r2 +.L653: + lsl r1, r2, #1 + ldrh r1, [r8, r1] + cmp r1, r9 + bcs .L651 ldrh r1, [r3] cmp r1, r4 - streqh r2, [ip, #2] @ movhi - streqh r0, [r3] @ movhi - beq .L647 -.L650: - mla r3, lr, r1, r8 - mov r2, r1 - b .L651 -.L649: - ldrh r1, [r3, #2] - strh r1, [ip, #2] @ movhi - strh r2, [r7, r6] @ movhi - ldr r1, [r5, #-3532] - ldr r2, .L655 - cmp r3, r1 bne .L652 - strh r0, [r3, #2] @ movhi -.L654: - str ip, [r2, #-3532] - b .L647 -.L652: - ldrh ip, [r3, #2] - ldr r1, [r2, #-3552] - mov r2, #6 - mul r2, r2, ip - strh r0, [r1, r2] @ movhi - strh r0, [r3, #2] @ movhi -.L647: + strh r2, [lr, #2] @ movhi + strh r0, [r3] @ movhi +.L649: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L656: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L652: + mla r3, r10, r1, r7 + mov r2, r1 + b .L653 +.L651: + ldrh r1, [r3, #2] + strh r1, [lr, #2] @ movhi + strh r2, [r6, r5] @ movhi + ldr r2, [ip, #-3528] + cmp r3, r2 + ldrhne lr, [r3, #2] + movne r2, #6 + ldrne r1, [ip, #-3548] + strheq r0, [r3, #2] @ movhi + streq lr, [ip, #-3528] + mulne r2, r2, lr + strhne r0, [r1, r2] @ movhi + strhne r0, [r3, #2] @ movhi + b .L649 +.L657: .align 2 -.L655: +.L656: .word .LANCHOR2 .word -1431655765 .fnend .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST + .syntax unified + .arm + .fpu softvfp .type INSERT_FREE_LIST, %function INSERT_FREE_LIST: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} bl insert_free_list - ldr r2, .L659 - ldrh r3, [r2, #-8] + ldr r2, .L660 + ldrh r3, [r2, #-4] add r3, r3, #1 - strh r3, [r2, #-8] @ movhi - ldmfd sp!, {r3, pc} -.L660: + strh r3, [r2, #-4] @ movhi + pop {r4, pc} +.L661: .align 2 -.L659: +.L660: .word .LANCHOR2-3520 .fnend .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .align 2 .global List_remove_node + .syntax unified + .arm + .fpu softvfp .type List_remove_node, %function List_remove_node: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, lr} + push {r4, r5, lr} .save {r4, r5, lr} mov ip, #6 - ldr r4, .L667 - movw r5, #65535 + ldr r4, .L668 mul r1, ip, r1 + movw r5, #65535 ldr r3, [r0] - ldr r2, [r4, #-3552] + ldr r2, [r4, #-3548] add lr, r2, r1 cmp lr, r3 ldrh r3, [r2, r1] - bne .L662 + bne .L663 cmp r3, r5 mlane r3, ip, r3, r2 moveq r3, #0 streq r3, [r0] strne r3, [r0] mvnne r0, #0 - strneh r0, [r3, #2] @ movhi - b .L664 -.L662: - cmp r3, r5 - ldrh r0, [lr, #2] - bne .L665 - cmp r0, r3 - mulne r0, ip, r0 - mvnne r3, #0 - strneh r3, [r2, r0] @ movhi - b .L664 + strhne r0, [r3, #2] @ movhi .L665: - mla r3, ip, r3, r2 - strh r0, [r3, #2] @ movhi - ldrh r5, [lr, #2] - ldrh r0, [r2, r1] - ldr r3, [r4, #-3552] - mul ip, ip, r5 - strh r0, [r3, ip] @ movhi -.L664: mvn r3, #0 mov r0, #0 strh r3, [r2, r1] @ movhi strh r3, [lr, #2] @ movhi - ldmfd sp!, {r4, r5, pc} -.L668: + pop {r4, r5, pc} +.L663: + cmp r3, r5 + ldrh r0, [lr, #2] + bne .L666 + cmp r0, r3 + mulne r3, ip, r0 + mvnne r0, #0 + strhne r0, [r2, r3] @ movhi + b .L665 +.L666: + mla r3, ip, r3, r2 + strh r0, [r3, #2] @ movhi + ldrh r3, [lr, #2] + ldrh r5, [r2, r1] + ldr r0, [r4, #-3548] + mul r3, ip, r3 + strh r5, [r0, r3] @ movhi + b .L665 +.L669: .align 2 -.L667: +.L668: .word .LANCHOR2 .fnend .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node + .syntax unified + .arm + .fpu softvfp .type List_pop_index_node, %function List_pop_index_node: .fnstart @@ -3990,1133 +4289,1182 @@ @ frame_needed = 0, uses_anonymous_args = 0 ldr r3, [r0] cmp r3, #0 - beq .L675 - ldr r2, .L678 - movw ip, #65535 - stmfd sp!, {r4, lr} + beq .L676 + ldr r2, .L681 + push {r4, lr} .save {r4, lr} - mov lr, #6 - ldr r4, [r2, #-3552] -.L671: - cmp r1, #0 - bne .L672 -.L674: - rsb r4, r4, r3 - ldr r3, .L678+4 - mov r4, r4, asr #1 - mul r4, r3, r4 - uxth r4, r4 - mov r1, r4 - bl List_remove_node - mov r0, r4 - ldmfd sp!, {r4, pc} + movw lr, #65535 + mov r4, #6 + ldr r2, [r2, #-3548] .L672: - ldrh r2, [r3] - cmp r2, ip - beq .L674 - sub r1, r1, #1 - mla r3, lr, r2, r4 - uxth r1, r1 - b .L671 + cmp r1, #0 + bne .L673 .L675: + ldr r4, .L681+4 + sub r3, r3, r2 + asr r3, r3, #1 + mul r4, r4, r3 + uxth r1, r4 + bl List_remove_node + uxth r0, r4 + pop {r4, pc} +.L673: + ldrh ip, [r3] + cmp ip, lr + beq .L675 + sub r1, r1, #1 + mla r3, r4, ip, r2 + uxth r1, r1 + b .L672 +.L676: movw r0, #65535 bx lr -.L679: +.L682: .align 2 -.L678: +.L681: .word .LANCHOR2 .word -1431655765 .fnend .size List_pop_index_node, .-List_pop_index_node .align 2 .global List_get_gc_head_node + .syntax unified + .arm + .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, .L687 - ldr r3, [r2, #-3548] + ldr r2, .L689 + ldr r3, [r2, #-3544] cmp r3, #0 - ldrne r1, [r2, #-3552] + ldrne r1, [r2, #-3548] movne ip, #6 movwne r2, #65535 - beq .L685 -.L682: - cmp r0, #0 - beq .L683 - ldrh r3, [r3] - cmp r3, r2 - subne r0, r0, #1 - mlane r3, ip, r3, r1 - uxthne r0, r0 - bne .L682 -.L685: + bne .L685 +.L688: movw r0, #65535 bx lr -.L683: - rsb r3, r1, r3 - ldr r0, .L687+4 - mov r3, r3, asr #1 - mul r0, r0, r3 - uxth r0, r0 - bx lr -.L688: - .align 2 .L687: + sub r0, r0, #1 + mla r3, ip, r3, r1 + uxth r0, r0 +.L685: + cmp r0, #0 + beq .L686 + ldrh r3, [r3] + cmp r3, r2 + bne .L687 + b .L688 +.L686: + ldr r0, .L689+4 + sub r3, r3, r1 + asr r3, r3, #1 + mul r3, r0, r3 + uxth r0, r3 + bx lr +.L690: + .align 2 +.L689: .word .LANCHOR2 .word -1431655765 .fnend .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 .global List_update_data_list + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r3, .L697 - sub r2, r3, #3520 - ldrh r2, [r2, #-4] + ldr r3, .L699 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + sub r5, r3, #3520 + ldrh r2, [r5] cmp r2, r0 - beq .L690 + beq .L692 sub r2, r3, #3472 - ldrh r2, [r2, #-4] + ldrh r2, [r2] cmp r2, r0 - beq .L690 + beq .L692 sub r2, r3, #3424 - ldrh r2, [r2, #-4] + ldrh r2, [r2] cmp r2, r0 - beq .L690 + beq .L692 mov lr, #6 - ldr r1, [r3, #-3552] + ldr r1, [r3, #-3548] mul lr, lr, r0 - ldr r2, [r3, #-3548] + ldr r2, [r3, #-3544] add ip, r1, lr cmp ip, r2 - beq .L690 - ldr r4, [r3, #-3544] - mov r3, r0, asl #1 - ldrh r2, [r4, r3] - ldrh r3, [ip, #4] - ldrh ip, [ip, #2] - cmp r3, #0 - mulne r2, r3, r2 + beq .L692 + ldr r4, [r3, #-3540] + lsl r3, r0, #1 + ldrh r2, [ip, #4] + ldrh r3, [r4, r3] + cmp r2, #0 mvneq r2, #0 - movw r3, #65535 - cmp ip, r3 - bne .L692 - ldrh r3, [r1, lr] + mulne r2, r2, r3 + ldrh r3, [ip, #2] + movw ip, #65535 cmp r3, ip - beq .L690 -.L692: - mov r3, #6 - mul ip, r3, ip - ldr r3, .L697+4 + bne .L694 + ldrh ip, [r1, lr] + cmp ip, r3 + beq .L692 +.L694: + mov ip, #6 + mul ip, ip, r3 + ldr r3, .L699+4 + asr lr, ip, #1 add r1, r1, ip - mov lr, ip, asr #1 mul r3, r3, lr - mov r3, r3, asl #1 + lsl r3, r3, #1 ldrh lr, [r4, r3] ldrh r3, [r1, #4] cmp r3, #0 mulne r3, r3, lr mvneq r3, #0 cmp r2, r3 - bcs .L690 - ldr r5, .L697+8 + bcs .L692 mov r4, r0 - mov r1, r4 - sub r0, r5, #12 + mov r1, r0 + ldr r0, .L699+8 bl List_remove_node - ldrh r3, [r5] + ldrh r3, [r5, #-12] mov r0, r4 sub r3, r3, #1 - strh r3, [r5] @ movhi + strh r3, [r5, #-12] @ movhi bl INSERT_DATA_LIST -.L690: +.L692: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L698: + pop {r4, r5, r6, pc} +.L700: .align 2 -.L697: +.L699: .word .LANCHOR2 .word -1431655765 - .word .LANCHOR2-3536 + .word .LANCHOR2-3544 .fnend .size List_update_data_list, .-List_update_data_list .align 2 .global ftl_map_blk_alloc_new_blk + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r3, #0 ldrh r1, [r0, #10] ldr r2, [r0, #12] -.L700: +.L702: uxth r5, r3 cmp r5, r1 - bcs .L703 + bcs .L705 mov r7, r2 add r3, r3, #1 ldrh r6, [r7] add r2, r2, #2 cmp r6, #0 - bne .L700 + bne .L702 mov r4, r0 bl FtlFreeSysBlkQueueOut - movw r2, #65533 sub r3, r0, #1 + movw r2, #65533 + uxth r3, r3 mov r1, r0 strh r0, [r7] @ movhi - uxth r3, r3 cmp r3, r2 - bls .L701 - ldr r3, .L707 - ldr r0, .L707+4 + bls .L703 + ldr r3, .L709 + ldr r0, .L709+4 ldrh r2, [r3, #6] bl printk -.L702: - b .L702 -.L701: +.L704: + b .L704 +.L703: 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 -.L703: +.L705: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L708: + pop {r4, r5, r6, r7, r8, pc} +.L710: .align 2 -.L707: - .word .LANCHOR0+2512 +.L709: + .word .LANCHOR0+2516 .word .LC5 .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global select_l2p_ram_region + .syntax unified + .arm + .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 r2, .L725 - movw r3, #2426 - stmfd sp!, {r4, r5, r6, lr} + ldr r2, .L722 + movw r3, #2430 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r1, #0 - ldrh r2, [r2, r3] mov ip, #12 - ldr r3, .L725+4 movw lr, #65535 - ldr r3, [r3, #-3380] -.L710: + ldrh r2, [r2, r3] + ldr r3, .L722+4 + ldr r3, [r3, #-3376] +.L712: uxth r0, r1 cmp r0, r2 - bcs .L722 - add r1, r1, #1 - mla r4, ip, r1, r3 - ldrh r4, [r4, #-12] - cmp r4, lr - bne .L710 - ldmfd sp!, {r4, r5, r6, pc} -.L722: + bcc .L714 mov r0, r2 mov r1, #0 mov ip, #-2147483648 mov r5, #12 -.L713: +.L715: uxth r4, r1 cmp r4, r2 - bcs .L723 + bcc .L717 + cmp r0, r2 + popcc {r4, r5, r6, pc} + ldr r1, .L722+8 + mov r0, r2 + mvn ip, #0 + ldrh r5, [r1, #-12] + mov r1, #0 +.L718: + uxth lr, r1 + cmp lr, r2 + bcc .L720 + pop {r4, r5, r6, pc} +.L714: + add r1, r1, #1 + mla r4, ip, r1, r3 + ldrh r4, [r4, #-12] + cmp r4, lr + bne .L712 + pop {r4, r5, r6, pc} +.L717: mla lr, r5, r1, r3 add r1, r1, #1 ldr lr, [lr, #4] - cmp lr, ip - mvn r6, lr - mov r6, r6, lsr #31 - movcs r6, #0 + cmp ip, lr + movls r6, #0 + movhi r6, #1 + cmp lr, #0 + movlt r6, #0 cmp r6, #0 movne ip, lr movne r0, r4 - b .L713 -.L723: - cmp r0, r2 - ldmccfd sp!, {r4, r5, r6, pc} - ldr r1, .L725+8 - mov r0, r2 - mvn ip, #0 - ldrh r5, [r1] - mov r1, #0 -.L716: - uxth lr, r1 - cmp lr, r2 - bcs .L724 + b .L715 +.L720: ldr r4, [r3, #4] - cmp r4, ip - bcs .L717 + cmp ip, r4 + bls .L719 ldrh r6, [r3] cmp r6, r5 movne ip, r4 movne r0, lr -.L717: +.L719: add r1, r1, #1 add r3, r3, #12 - b .L716 -.L724: - ldmfd sp!, {r4, r5, r6, pc} -.L726: + b .L718 +.L723: .align 2 -.L725: +.L722: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2-3376 + .word .LANCHOR2-3360 .fnend .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global FtlUpdateVaildLpn + .syntax unified + .arm + .fpu softvfp .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L735 + ldr r3, .L733 sub r1, r3, #3360 - ldrh r2, [r1, #-14] + ldrh r2, [r1, #-10] cmp r2, #4 cmpls r0, #0 - addeq r2, r2, #1 - streqh r2, [r1, #-14] @ movhi - bxeq lr - ldr r0, .L735+4 + bne .L725 + add r2, r2, #1 + strh r2, [r1, #-10] @ movhi + bx lr +.L725: + ldr r0, .L733+4 mov r2, #0 str lr, [sp, #-4]! .save {lr} - movw ip, #65535 - strh r2, [r1, #-14] @ movhi - movw r1, #2328 - ldrh r0, [r0, r1] - str r2, [r3, #-3372] - ldr r2, [r3, #-3544] - add r0, r2, r0, asl #1 -.L729: - cmp r2, r0 - beq .L734 - ldrh r1, [r2], #2 - cmp r1, ip - ldrne lr, [r3, #-3372] - addne r1, r1, lr - strne r1, [r3, #-3372] - b .L729 -.L734: + movw lr, #65535 + strh r2, [r1, #-10] @ movhi + movw r1, #2332 + str r2, [r3, #-3368] + ldrh r1, [r0, r1] + ldr r2, [r3, #-3540] + add r1, r2, r1, lsl #1 +.L726: + cmp r2, r1 + bne .L728 ldr pc, [sp], #4 -.L736: +.L728: + ldrh ip, [r2], #2 + cmp ip, lr + ldrne r0, [r3, #-3368] + addne r0, r0, ip + strne r0, [r3, #-3368] + b .L726 +.L734: .align 2 -.L735: +.L733: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 .global ftl_set_blk_mode + .syntax unified + .arm + .fpu softvfp .type ftl_set_blk_mode, %function ftl_set_blk_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L741 - mov r3, r0, lsr #5 cmp r1, #0 - and r0, r0, #31 - uxth r3, r3 + mov r3, r0 + beq .L736 + b ftl_set_blk_mode.part.9 +.L736: + ldr r2, .L737 + lsr r0, r0, #5 + and r3, r3, #31 mov ip, #1 - ldr r1, [r2, #-3368] - ldr r2, [r1, r3, asl #2] - orrne r0, r2, ip, asl r0 - biceq r0, r2, ip, asl r0 - str r0, [r1, r3, asl #2] + ldr r1, [r2, #32] + ldr r2, [r1, r0, lsl #2] + bic r3, r2, ip, lsl r3 + str r3, [r1, r0, lsl #2] bx lr -.L742: +.L738: .align 2 -.L741: - .word .LANCHOR2 +.L737: + .word .LANCHOR0 .fnend .size ftl_set_blk_mode, .-ftl_set_blk_mode .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, .L744 - mov r2, r0, lsr #5 + ldr r3, .L740 + lsr r2, r0, #5 and r0, r0, #31 - ldr r3, [r3, #-3368] - ldr r3, [r3, r2, asl #2] - mov r0, r3, lsr r0 + ldr r3, [r3, #32] + ldr r3, [r3, r2, lsl #2] + lsr r0, r3, r0 and r0, r0, #1 bx lr -.L745: +.L741: .align 2 -.L744: - .word .LANCHOR2 +.L740: + .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 mov r3, #0 + movw ip, #2324 strh r3, [r0, #4] @ movhi - ldr r3, .L756 - stmfd sp!, {r4, r5, lr} + ldr r3, .L750 + push {r4, r5, lr} .save {r4, r5, lr} - movw r4, #65535 - ldrh lr, [r3] - add r3, r2, #7 - add r3, r0, r3, asl #1 -.L747: - cmp r2, lr - bcs .L754 - ldrh ip, [r3, #2]! - add r2, r2, #1 - cmp ip, r4 - uxth r2, r2 - ldrneh ip, [r0, #4] - addne ip, ip, #1 - strneh ip, [r0, #4] @ movhi - b .L747 -.L754: - ldr r2, .L756+4 - movw r3, #2388 - add ip, r0, #14 movw r5, #65535 - ldrh r4, [r2, r3] - mov r2, #0 -.L750: - uxth r3, r2 - cmp r3, lr - bcs .L755 - ldrh r3, [ip, #2]! + ldrh lr, [r3, ip] + add ip, r0, r2, lsl #1 + add ip, ip, #14 +.L743: + cmp r2, lr + bcc .L745 + movw r2, #2390 + 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 +.L746: + uxth r2, r3 + cmp lr, r2 + bhi .L748 + pop {r4, r5, pc} +.L745: + ldrh r4, [ip, #2]! add r2, r2, #1 - cmp r3, r5 - ldrneh r3, [r0, #4] - addne r3, r4, r3 - subne r3, r3, #1 - rsbne r3, r1, r3 - strneh r3, [r0, #4] @ movhi - b .L750 -.L755: - ldmfd sp!, {r4, r5, pc} -.L757: + uxth r2, r2 + cmp r4, r5 + ldrhne r4, [r0, #4] + addne r4, r4, #1 + strhne r4, [r0, #4] @ movhi + b .L743 +.L748: + 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 .L746 +.L751: .align 2 -.L756: - .word .LANCHOR0+2320 +.L750: .word .LANCHOR0 .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global make_superblock + .syntax unified + .arm + .fpu softvfp .type make_superblock, %function make_superblock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - add r6, r0, #16 - ldr r7, .L772 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r3, #2324 + ldr r6, .L765 mov r4, r0 + add r7, r0, #16 mvn r9, #0 + ldr r10, .L765+4 mov r5, #0 + ldrh r8, [r6, r3] strh r5, [r0, #4] @ movhi - ldrh r8, [r7], #28 strb r5, [r0, #7] -.L759: +.L753: uxth r3, r5 - cmp r3, r8 - bcs .L771 - ldrb r0, [r7, r5] @ zero_extendqisi2 - add r6, r6, #2 - ldrh r1, [r4] - add r5, r5, #1 - bl V2P_block - strh r9, [r6, #-2] @ movhi - mov r10, r0 - bl FtlBbmIsBadBlock - cmp r0, #0 - streqh r10, [r6, #-2] @ movhi - ldreqb r3, [r4, #7] @ zero_extendqisi2 - addeq r3, r3, #1 - streqb r3, [r4, #7] - b .L759 -.L771: - ldr r3, .L772+4 - movw r2, #2388 - ldrb r1, [r4, #7] @ zero_extendqisi2 - ldrh r2, [r3, r2] - smulbb r2, r1, r2 - strh r2, [r4, #4] @ movhi - mov r2, #0 - strb r2, [r4, #9] - ldr r2, [r3, #2244] - cmp r2, #0 - beq .L762 - ldr r1, .L772+8 - ldrh r2, [r4] - ldr r1, [r1, #-3608] - mov r2, r2, asl #1 - ldrh r2, [r1, r2] - cmp r2, #79 - movls r2, #1 - strlsb r2, [r4, #9] -.L762: - ldrb r3, [r3] @ zero_extendqisi2 + cmp r8, r3 + bhi .L755 + movw r2, #2390 + ldrb r3, [r4, #7] @ zero_extendqisi2 + ldrh r2, [r6, r2] + smulbb r3, r3, r2 + strh r3, [r4, #4] @ movhi + mov r3, #0 + strb r3, [r4, #9] + ldr r3, [r6, #2248] + cmp r3, #0 + beq .L756 + ldrh r3, [r4] + ldr r2, .L765+8 + ldr r2, [r2, #-3604] + lsl r3, r3, #1 + ldrh r3, [r2, r3] + cmp r3, #79 + movls r3, #1 + strbls r3, [r4, #9] +.L756: + ldrb r3, [r6, #36] @ zero_extendqisi2 mov r0, #0 cmp r3, #0 movne r3, #1 - strneb r3, [r4, #9] - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L773: + strbne r3, [r4, #9] + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L755: + ldrb r0, [r10, r5] @ zero_extendqisi2 + add r7, r7, #2 + ldrh r1, [r4] + add r5, r5, #1 + bl V2P_block + strh r9, [r7, #-2] @ movhi + mov fp, r0 + bl FtlBbmIsBadBlock + cmp r0, #0 + strheq fp, [r7, #-2] @ movhi + ldrbeq r3, [r4, #7] @ zero_extendqisi2 + addeq r3, r3, #1 + strbeq r3, [r4, #7] + b .L753 +.L766: .align 2 -.L772: - .word .LANCHOR0+2320 +.L765: .word .LANCHOR0 + .word .LANCHOR0+2350 .word .LANCHOR2 .fnend .size make_superblock, .-make_superblock .align 2 .global update_multiplier_value + .syntax unified + .arm + .fpu softvfp .type update_multiplier_value, %function update_multiplier_value: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} + ldr r3, .L774 + movw r2, #2324 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r5, #0 - ldr r3, .L784 + ldr r9, .L774+4 mov r6, r0 - ldr r9, .L784+4 mov r4, r5 - add r2, r3, #2320 - ldrh r7, [r2] - movw r2, #2388 + ldrh r7, [r3, r2] + movw r2, #2390 ldrh r8, [r3, r2] -.L775: +.L768: uxth r3, r5 - cmp r3, r7 - bcs .L783 - ldrb r0, [r9, r5] @ zero_extendqisi2 - mov r1, r6 - bl V2P_block - add r5, r5, #1 - bl FtlBbmIsBadBlock - cmp r0, #0 - addeq r4, r4, r8 - uxtheq r4, r4 - b .L775 -.L783: + cmp r7, r3 + bhi .L770 cmp r4, #0 - beq .L778 + moveq r0, r4 + beq .L771 mov r1, r4 mov r0, #32768 bl __aeabi_idiv - uxth r4, r0 -.L778: - ldr r3, .L784+8 +.L771: + ldr r3, .L774+8 mov r2, #6 - mov r0, #0 - ldr r3, [r3, #-3552] + ldr r3, [r3, #-3548] mla r6, r2, r6, r3 - strh r4, [r6, #4] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L785: + strh r0, [r6, #4] @ movhi + mov r0, #0 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L770: + mov r1, r6 + ldrb r0, [r9, r5] @ zero_extendqisi2 + bl V2P_block + bl FtlBbmIsBadBlock + cmp r0, #0 + add r5, r5, #1 + addeq r4, r4, r8 + uxtheq r4, r4 + b .L768 +.L775: .align 2 -.L784: +.L774: .word .LANCHOR0 - .word .LANCHOR0+2348 + .word .LANCHOR0+2350 .word .LANCHOR2 .fnend .size update_multiplier_value, .-update_multiplier_value .align 2 .global GetFreeBlockMinEraseCount + .syntax unified + .arm + .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, .L789 - ldr r0, [r2, #-3532] + ldr r2, .L779 + ldr r0, [r2, #-3528] cmp r0, #0 bxeq lr - ldr r3, [r2, #-3552] - rsb r0, r3, r0 - ldr r3, .L789+4 - mov r0, r0, asr #1 + ldr r3, [r2, #-3548] + sub r0, r0, r3 + ldr r3, .L779+4 + asr r0, r0, #1 mul r0, r3, r0 - ldr r3, [r2, #-3608] + ldr r3, [r2, #-3604] uxth r0, r0 - mov r0, r0, asl #1 + lsl r0, r0, #1 ldrh r0, [r3, r0] bx lr -.L790: +.L780: .align 2 -.L789: +.L779: .word .LANCHOR2 .word -1431655765 .fnend .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 .global GetFreeBlockMaxEraseCount + .syntax unified + .arm + .fpu softvfp .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L801 - ldr r3, [r1, #-3532] + ldr r1, .L793 + ldr r3, [r1, #-3528] cmp r3, #0 - beq .L797 + beq .L787 sub r2, r1, #3520 - stmfd sp!, {r4, r5, lr} + push {r4, r5, lr} .save {r4, r5, lr} + ldrh r2, [r2, #-4] mov r4, #6 - ldrh r2, [r2, #-8] movw r5, #65535 - ldr ip, [r1, #-3552] - rsb r2, r2, r2, asl #3 - rsb r3, ip, r3 - mov r2, r2, asr #3 - mov r3, r3, asr #1 + ldr ip, [r1, #-3548] + rsb r2, r2, r2, lsl #3 + sub r3, r3, ip + asr r2, r2, #3 + asr r3, r3, #1 cmp r0, r2 uxthgt r0, r2 - ldr r2, .L801+4 + ldr r2, .L793+4 mul r3, r2, r3 mov r2, #0 uxth r3, r3 -.L794: +.L784: uxth lr, r2 - cmp lr, r0 - bcs .L796 + cmp r0, lr + bls .L786 mul lr, r4, r3 add r2, r2, #1 ldrh lr, [ip, lr] cmp lr, r5 - bne .L798 -.L796: - ldr r2, [r1, #-3608] - mov r3, r3, asl #1 + bne .L788 +.L786: + ldr r2, [r1, #-3604] + lsl r3, r3, #1 ldrh r0, [r2, r3] - ldmfd sp!, {r4, r5, pc} -.L798: + pop {r4, r5, pc} +.L788: mov r3, lr - b .L794 -.L797: + b .L784 +.L787: mov r0, r3 bx lr -.L802: +.L794: .align 2 -.L801: +.L793: .word .LANCHOR2 .word -1431655765 .fnend .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 .global FtlPrintInfo2buf + .syntax unified + .arm + .fpu softvfp .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r7, r0 - ldr r8, .L814 - add r4, r7, #12 - ldr r1, .L814+4 - .pad #32 - sub sp, sp, #32 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r9, .L808 + add r5, r8, #12 + .pad #36 + sub sp, sp, #36 + ldr r1, .L808+4 bl strcpy - mov r0, r4 - ldr r1, .L814+8 - ldr r2, [r8, #116] + ldr r2, [r9, #124] + mov r0, r5 + ldr r1, .L808+8 bl sprintf - ldr r1, .L814+12 - ldr r2, [r8, #2404] - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + ldr r2, [r9, #2408] + mov r0, r5 + ldr r1, .L808+12 bl sprintf - ldr r3, .L814+16 - ldr r3, [r3, #504] + ldr r3, .L808+16 + add r5, r5, r0 + ldr r3, [r3, #500] cmp r3, #1 - add r4, r4, r0 - bne .L809 - add r0, sp, #16 - add r1, sp, #20 - add r2, sp, #24 + subne r0, r5, r8 + bne .L795 add r3, sp, #28 + add r2, sp, #24 + add r1, sp, #20 + add r0, sp, #16 bl NandcGetTimeCfg - mov r0, r4 - ldr r1, .L814+20 - ldr r6, .L814+24 - sub r10, r6, #3520 - ldr r3, [sp, #24] - ldr r2, [sp, #16] - str r3, [sp] ldr r3, [sp, #28] + mov r0, r5 + ldr r2, [sp, #16] + ldr r1, .L808+20 str r3, [sp, #4] + ldr r3, [sp, #24] + ldr r7, .L808+24 + str r3, [sp] ldr r3, [sp, #20] + sub r10, r7, #3520 bl sprintf - ldr r1, .L814+28 - add r4, r4, r0 - add r5, r4, #10 - mov r0, r4 - sub r4, r6, #3600 + add r6, r5, r0 + ldr r1, .L808+28 + mov r0, r6 + add r6, r6, #10 bl strcpy - mov r0, r5 - ldr r1, .L814+32 - ldr r2, [r8, #2448] + ldr r2, [r9, #2452] + mov r0, r6 + ldr r1, .L808+32 + sub r4, r7, #3584 bl sprintf - ldr r1, .L814+36 - ldr r2, [r6, #-3372] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3368] + ldr r1, .L808+36 + mov r0, r6 bl sprintf - ldr r1, .L814+40 - ldr r2, [r6, #-3364] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3364] + ldr r1, .L808+40 + mov r0, r6 bl sprintf - ldr r1, .L814+44 - ldr r2, [r6, #-3360] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3360] + ldr r1, .L808+44 + mov r0, r6 bl sprintf - ldr r1, .L814+48 - ldr r2, [r6, #-3356] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3356] + ldr r1, .L808+48 + mov r0, r6 bl sprintf - ldr r1, .L814+52 - ldr r2, [r6, #-3352] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3352] + ldr r1, .L808+52 + mov r0, r6 bl sprintf - ldr r1, .L814+56 - ldr r2, [r6, #-3348] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3348] + ldr r1, .L808+56 + mov r0, r6 bl sprintf - ldr r1, .L814+60 - ldr r2, [r6, #-3344] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3344] + ldr r1, .L808+60 + mov r0, r6 bl sprintf - ldr r2, [r6, #-3340] - ldr r1, .L814+64 - mov r2, r2, lsr #11 - add r5, r5, r0 - mov r0, r5 + ldr r2, [r7, #-3340] + add r6, r6, r0 + ldr r1, .L808+64 + mov r0, r6 + sub r5, r7, #3280 + lsr r2, r2, #11 bl sprintf - ldr r2, [r6, #-3336] - ldr r1, .L814+68 - mov r2, r2, lsr #11 - add r5, r5, r0 - mov r0, r5 + ldr r2, [r7, #-3336] + add r6, r6, r0 + ldr r1, .L808+68 + mov r0, r6 + lsr r2, r2, #11 bl sprintf - ldr r1, .L814+72 - ldr r2, [r6, #-3332] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3332] + ldr r1, .L808+72 + mov r0, r6 bl sprintf - ldr r1, .L814+76 - ldr r2, [r6, #-3328] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3328] + ldr r1, .L808+76 + mov r0, r6 bl sprintf - add r5, r5, r0 + add r6, r6, r0 bl FtlBbtCalcTotleCnt - ldr r2, .L814+80 - ldr r1, .L814+84 - ldrh r2, [r2, #6] + ldr r2, .L808+80 mov r3, r0 - mov r0, r5 + ldr r1, .L808+84 + mov r0, r6 + ldrh r2, [r2, #6] bl sprintf - ldr r1, .L814+88 - ldrh r2, [r10, #-8] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+92 - ldr r2, [r6, #-3324] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+96 - ldr r2, [r6, #-3320] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+100 - ldr r2, [r6, #-3316] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+104 - ldr r2, [r6, #-3604] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+108 - ldr r2, [r6, #-3312] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+112 - ldr r2, [r6, #-3308] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldrh r2, [r4, #30] - ldr r1, .L814+116 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldrh r2, [r4, #28] - ldr r1, .L814+120 - sub r4, r6, #3296 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+124 - ldr r2, [r8, #2428] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+128 - ldr r2, [r8, #2420] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+132 - ldr r2, [r8, #2316] - add r5, r5, r0 - mov r0, r5 - bl sprintf - add r3, r8, #2512 - ldr r1, .L814+136 - ldrh r2, [r3, #6] - add r5, r5, r0 - mov r0, r5 - bl sprintf - movw r3, #2328 - ldrh r2, [r8, r3] - ldr r1, .L814+140 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldrh r2, [r4, #-8] - ldr r1, .L814+144 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+148 - ldr r2, [r8, #2332] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldrh r2, [r4, #-4] - ldr r1, .L814+152 - add r5, r5, r0 - mov r0, r5 - bl sprintf - movw r3, #2452 - ldrh r2, [r8, r3] - ldr r1, .L814+156 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldrh r2, [r4, #-226] - ldr r1, .L814+160 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+164 - ldrb r2, [r6, #-3518] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L814+168 + add r6, r6, r0 ldrh r2, [r10, #-4] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L808+88 + mov r0, r6 bl sprintf - ldr r1, .L814+172 - ldrb r2, [r6, #-3516] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3324] + ldr r1, .L808+92 + mov r0, r6 bl sprintf - ldrh r2, [r4, #-224] - ldr r1, .L814+176 - sub r4, r6, #3472 - sub r9, r4, #4 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3320] + ldr r1, .L808+96 + mov r0, r6 bl sprintf - ldrh r3, [r10, #-4] - ldr r2, [r6, #-3544] - ldr r1, .L814+180 - mov r3, r3, asl #1 - ldrh r2, [r2, r3] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3316] + ldr r1, .L808+100 + mov r0, r6 bl sprintf - ldrh r2, [r4, #-2] - ldr r1, .L814+184 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3600] + ldr r1, .L808+104 + mov r0, r6 bl sprintf - ldr r1, .L814+188 - ldrb r2, [r6, #-3470] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldr r2, [r7, #-3312] + ldr r1, .L808+108 + mov r0, r6 bl sprintf + add r6, r6, r0 + ldr r2, [r7, #-3308] + ldr r1, .L808+112 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #18] + ldr r1, .L808+116 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #16] + ldr r1, .L808+120 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r9, #2432] + ldr r1, .L808+124 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r9, #2424] + ldr r1, .L808+128 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r9, #2320] + ldr r1, .L808+132 + mov r0, r6 + bl sprintf + ldr r3, .L808+136 + add r6, r6, r0 + ldr r1, .L808+140 + mov r0, r6 + sub r4, r7, #3296 + ldrh r2, [r3, #6] + bl sprintf + movw r3, #2332 + add r6, r6, r0 + ldrh r2, [r9, r3] + mov r0, r6 + ldr r1, .L808+144 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #-8] + ldr r1, .L808+148 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r9, #2336] + ldr r1, .L808+152 + mov r0, r6 + bl sprintf + add r6, r6, r0 ldrh r2, [r4, #-4] - ldr r1, .L814+192 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L808+156 + mov r0, r6 bl sprintf - ldr r1, .L814+196 - ldrb r2, [r6, #-3468] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + movw r3, #2456 + add r6, r6, r0 + ldrh r2, [r9, r3] + mov r0, r6 + ldr r1, .L808+160 + sub r4, r7, #3472 bl sprintf - ldrh r2, [r9, #4] - ldr r1, .L814+200 - sub r9, r6, #3424 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r10, #2] + ldr r1, .L808+164 + mov r0, r6 bl sprintf - ldrh r3, [r4, #-4] - ldr r2, [r6, #-3544] - ldr r1, .L814+204 - mov r3, r3, asl #1 + add r6, r6, r0 + ldrb r2, [r7, #-3514] @ zero_extendqisi2 + ldr r1, .L808+168 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r10] + ldr r1, .L808+172 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r7, #-3512] @ zero_extendqisi2 + ldr r1, .L808+176 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r10, #4] + ldr r1, .L808+180 + mov r0, r6 + bl sprintf + ldrh r3, [r10] + add r6, r6, r0 + ldr r2, [r7, #-3540] + mov r0, r6 + ldr r1, .L808+184 + lsl r3, r3, #1 ldrh r2, [r2, r3] - add r5, r5, r0 - mov r0, r5 bl sprintf - ldrh r2, [r4, #46] - ldr r1, .L814+208 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r4, #2] + ldr r1, .L808+188 + mov r0, r6 bl sprintf - ldr r1, .L814+212 - ldrb r2, [r6, #-3422] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrb r2, [r7, #-3466] @ zero_extendqisi2 + ldr r1, .L808+192 + mov r0, r6 bl sprintf - ldrh r2, [r9, #-4] - ldr r1, .L814+216 - sub r9, r6, #3280 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r4] + ldr r1, .L808+196 + mov r0, r6 bl sprintf - ldr r1, .L814+220 - ldrb r2, [r6, #-3420] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrb r2, [r7, #-3464] @ zero_extendqisi2 + ldr r1, .L808+200 + mov r0, r6 bl sprintf - ldrh r2, [r4, #48] - ldr r1, .L814+224 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r4, #4] + ldr r1, .L808+204 + mov r0, r6 bl sprintf - ldrh r2, [r4, #190] - ldr r1, .L814+228 - add r5, r5, r0 - mov r0, r5 + ldrh r3, [r4] + add r6, r6, r0 + ldr r2, [r7, #-3540] + mov r0, r6 + ldr r1, .L808+208 + sub r4, r7, #3424 + lsl r3, r3, #1 + ldrh r2, [r2, r3] bl sprintf - ldr r1, .L814+232 - ldrb r2, [r6, #-3278] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r4, #2] + ldr r1, .L808+212 + mov r0, r6 bl sprintf - ldr r1, .L814+236 - ldrh r2, [r9, #-4] - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrb r2, [r7, #-3418] @ zero_extendqisi2 + ldr r1, .L808+216 + mov r0, r6 bl sprintf - ldr r1, .L814+240 - ldrb r2, [r6, #-3276] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrh r2, [r4] + ldr r1, .L808+220 + mov r0, r6 bl sprintf - ldrh r2, [r4, #192] - ldr r1, .L814+244 - add r5, r5, r0 - mov r0, r5 + add r6, r6, r0 + ldrb r2, [r7, #-3416] @ zero_extendqisi2 + ldr r1, .L808+224 + mov r0, r6 bl sprintf - ldr r1, [r6, #-3148] - ldr r3, [r8, #2244] - ldr r2, [r6, #-3236] - orr r2, r3, r2, asl #8 - ldr r3, [r6, #-3152] - str r1, [sp] - add r5, r5, r0 - ldr r1, [r6, #-3156] - mov r0, r5 - str r1, [sp, #4] - ldr r1, .L814+248 + add r6, r6, r0 + ldrh r2, [r4, #4] + ldr r1, .L808+228 + mov r0, r6 bl sprintf - ldr r1, .L814+252 - ldr r2, [r6, #-3160] - add r4, r5, r0 - sub r5, r6, #2704 + add r6, r6, r0 + ldrh r2, [r5, #-2] + ldr r1, .L808+232 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r7, #-3278] @ zero_extendqisi2 + ldr r1, .L808+236 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #-4] + ldr r1, .L808+240 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r7, #-3276] @ zero_extendqisi2 + ldr r1, .L808+244 + mov r0, r6 + bl sprintf + sub r4, r5, #4 + add r6, r6, r0 + ldrh r2, [r4, #4] + mov r0, r6 + ldr r1, .L808+248 + bl sprintf + ldr r3, [r7, #-3160] + add r6, r6, r0 + ldr r2, [r9, #2248] + mov r0, r6 + ldr r1, [r7, #-2724] + str r3, [sp, #4] + ldr r3, [r7, #-3152] + orr r2, r2, r1, lsl #8 + ldr r1, .L808+252 + str r3, [sp] + ldr r3, [r7, #-3156] + bl sprintf + add r4, r6, r0 + ldr r2, [r7, #-3164] + ldr r1, .L808+256 mov r0, r4 bl sprintf - ldr r1, .L814+256 - ldr r2, [r6, #-3136] add r4, r4, r0 + ldr r2, [r7, #-3140] + ldr r1, .L808+260 mov r0, r4 bl sprintf - sub r3, r6, #2720 - ldr r1, .L814+260 + sub r3, r7, #2720 + add r4, r4, r0 ldrh r2, [r3] + mov r0, r4 + ldr r1, .L808+264 + sub r6, r7, #2704 + bl sprintf add r4, r4, r0 + ldrh r2, [r6, #-14] + ldr r1, .L808+268 mov r0, r4 bl sprintf - ldr r1, .L814+264 - ldrh r2, [r5, #-14] add r4, r4, r0 + ldr r2, [r7, #-2716] + ldr r1, .L808+272 mov r0, r4 bl sprintf - ldr r1, .L814+268 - ldr r2, [r6, #-2716] add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r1, .L814+272 - ldrh r2, [r5, #-8] - add r4, r4, r0 + ldrh r2, [r6, #-8] + ldr r1, .L808+276 mov r0, r4 bl sprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r1, .L814+276 + ldr r1, .L808+280 mov r2, r0 mov r0, r4 bl sprintf add r4, r4, r0 - ldrh r0, [r10, #-8] + ldrh r0, [r10, #-4] bl GetFreeBlockMaxEraseCount - ldr r1, .L814+280 + ldr r1, .L808+284 mov r2, r0 mov r0, r4 bl sprintf - ldrh r3, [r9, #-4] + ldrh r3, [r5, #-4] movw r2, #65535 - cmp r3, r2 add r4, r4, r0 - beq .L806 - ldr r2, [r6, #-3544] - mov r3, r3, asl #1 + cmp r3, r2 + beq .L798 + ldr r2, [r7, #-3540] + lsl r3, r3, #1 mov r0, r4 - ldr r1, .L814+284 + ldr r1, .L808+288 ldrh r2, [r2, r3] bl sprintf add r4, r4, r0 -.L806: +.L798: mov r0, #0 - mov r5, #0 + ldr r9, .L808+292 bl List_get_gc_head_node - movw r10, #65535 - mov r9, #6 uxth r3, r0 -.L808: - cmp r3, r10 - beq .L807 - ldr r2, [r6, #-3544] - mov r1, r3, asl #1 - mul r8, r9, r3 + mov r5, #0 + movw fp, #65535 + mov r10, #6 +.L800: + cmp r3, fp + beq .L799 + ldr r2, [r7, #-3604] + lsl r1, r3, #1 + mul r6, r10, r3 mov r0, r4 ldrh r2, [r2, r1] - str r2, [sp] - ldr r2, [r6, #-3552] - add r2, r2, r8 + str r2, [sp, #8] + ldr r2, [r7, #-3548] + add r2, r2, r6 ldrh r2, [r2, #4] str r2, [sp, #4] - ldr r2, [r6, #-3608] + ldr r2, [r7, #-3540] ldrh r2, [r2, r1] - ldr r1, .L814+288 - str r2, [sp, #8] + mov r1, r9 + str r2, [sp] mov r2, r5 bl sprintf add r5, r5, #1 - ldr r3, [r6, #-3552] + ldr r3, [r7, #-3548] cmp r5, #16 - ldrh r3, [r3, r8] add r4, r4, r0 - bne .L808 -.L807: - ldr r2, [r6, #-3552] + ldrh r3, [r3, r6] + bne .L800 +.L799: + ldr r2, [r7, #-3548] mov r5, #0 - ldr r3, [r6, #-3532] - movw r10, #65535 - mov r9, #6 - rsb r3, r2, r3 - ldr r2, .L814+292 - mov r3, r3, asr #1 + ldr r3, [r7, #-3528] + movw r9, #65535 + ldr fp, .L808+296 + mov r10, #6 + sub r3, r3, r2 + ldr r2, .L808+300 + asr r3, r3, #1 mul r3, r2, r3 uxth r3, r3 -.L810: - cmp r3, r10 - beq .L809 - mul r8, r9, r3 - ldr r2, [r6, #-3552] - ldr r1, [r6, #-3608] +.L802: + cmp r3, r9 + beq .L801 + ldr r1, [r7, #-3604] + lsl r2, r3, #1 + mul r6, r10, r3 mov r0, r4 - add r2, r2, r8 + ldrh r2, [r1, r2] + mov r1, fp + str r2, [sp, #4] + ldr r2, [r7, #-3548] + add r2, r2, r6 ldrh r2, [r2, #4] str r2, [sp] - mov r2, r3, asl #1 - ldrh r2, [r1, r2] - ldr r1, .L814+296 - str r2, [sp, #4] mov r2, r5 - bl sprintf add r5, r5, #1 - ldr r3, [r6, #-3552] + bl sprintf cmp r5, #4 - ldrh r3, [r3, r8] add r4, r4, r0 - bne .L810 -.L809: - rsb r0, r7, r4 - add sp, sp, #32 + ldrne r3, [r7, #-3548] + ldrhne r3, [r3, r6] + bne .L802 +.L801: + sub r0, r4, r8 +.L795: + add sp, sp, #36 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L815: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L809: .align 2 -.L814: +.L808: .word .LANCHOR0 .word .LC6 .word .LC7 @@ -5137,7 +5485,7 @@ .word .LC20 .word .LC21 .word .LC22 - .word .LANCHOR0+2452 + .word .LANCHOR0+2456 .word .LC23 .word .LC24 .word .LC25 @@ -5151,6 +5499,7 @@ .word .LC33 .word .LC34 .word .LC35 + .word .LANCHOR0+2516 .word .LC36 .word .LC37 .word .LC38 @@ -5190,237 +5539,243 @@ .word .LC72 .word .LC73 .word .LC74 - .word -1431655765 .word .LC75 + .word -1431655765 .fnend .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 2 .global ftl_proc_ftl_read + .syntax unified + .arm + .fpu softvfp .type ftl_proc_ftl_read, %function ftl_proc_ftl_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r5, r0 - ldr r1, .L818 - ldr r2, .L818+4 + ldr r2, .L812 + ldr r1, .L812+4 bl sprintf add r4, r5, r0 mov r0, r4 bl FtlPrintInfo2buf add r0, r4, r0 - rsb r0, r5, r0 - ldmfd sp!, {r3, r4, r5, pc} -.L819: + sub r0, r0, r5 + pop {r4, r5, r6, pc} +.L813: .align 2 -.L818: +.L812: .word .LC76 .word .LC77 .fnend .size ftl_proc_ftl_read, .-ftl_proc_ftl_read .align 2 .global GetSwlReplaceBlock + .syntax unified + .arm + .fpu softvfp .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r4, .L850 + ldr r4, .L842 ldr r2, [r4, #-3316] ldr r3, [r4, #-3308] cmp r2, r3 - bcs .L821 - ldr r2, .L850+4 - movw r1, #2328 - ldr r0, [r4, #-3608] + bcs .L815 + ldr r0, .L842+4 + movw r2, #2332 mov r3, #0 str r3, [r4, #-3324] - ldrh r1, [r2, r1] - sub r0, r0, #2 - mov r5, r2 -.L822: + ldrh r1, [r0, r2] + mov r6, r0 + ldr r2, [r4, #-3604] + sub r2, r2, #2 +.L816: cmp r3, r1 - bcs .L849 - ldrh r2, [r0, #2]! - add r3, r3, #1 - ldr ip, [r4, #-3324] - add r2, r2, ip - str r2, [r4, #-3324] - b .L822 -.L849: - ldr r6, [r4, #-3324] - mov r0, r6 + bcc .L817 + ldr r5, [r4, #-3324] + mov r0, r5 bl __aeabi_uidiv - movw r3, #2380 - ldrh r1, [r5, r3] str r0, [r4, #-3316] + movw r3, #2382 ldr r0, [r4, #-3320] - rsb r0, r0, r6 + ldrh r1, [r6, r3] + sub r0, r5, r0 bl __aeabi_uidiv str r0, [r4, #-3324] - b .L824 -.L821: - ldr r3, [r4, #-3312] - cmp r2, r3 - bls .L824 - ldr ip, .L850+8 - add r3, r3, #1 - str r3, [r4, #-3312] - mov r3, #0 -.L826: - ldrh r2, [ip] - cmp r3, r2 - bcs .L824 - ldr r0, [r4, #-3608] - mov r1, r3, asl #1 - add r3, r3, #1 - ldrh r2, [r0, r1] - add r2, r2, #1 - strh r2, [r0, r1] @ movhi - b .L826 -.L824: - ldr r6, [r4, #-3308] +.L818: + ldr r5, [r4, #-3308] ldr r8, [r4, #-3316] - add r3, r6, #256 + add r3, r5, #256 cmp r3, r8 - bls .L829 - ldr r2, .L850 - add r3, r6, #768 - ldr r2, [r2, #-3312] + bls .L823 + ldr r2, [r4, #-3312] + add r3, r5, #768 cmp r3, r2 - bls .L829 - ldr r3, .L850+4 - cmp r6, #40 - ldr r2, [r3, #2244] + bls .L823 + ldr r3, .L842+4 + cmp r5, #40 + ldr r2, [r3, #2248] movls r3, #0 movhi r3, #1 cmp r2, #0 orreq r3, r3, #1 cmp r3, #0 - beq .L829 -.L831: - movw r0, #65535 - b .L830 -.L829: - ldr r5, .L850 - sub r3, r5, #3520 - ldrh r0, [r3, #-8] - add r0, r0, r0, asl #1 - ubfx r0, r0, #2, #16 - bl GetFreeBlockMaxEraseCount - add r1, r6, #64 - cmp r0, r1 - mov r9, r0 - movcs r1, #0 - movcc r1, #1 - cmp r6, #40 - movls r1, #0 - cmp r1, #0 - bne .L831 - ldr r3, [r5, #-3548] - cmp r3, #0 - beq .L831 - ldr r0, .L850+4 - movw r2, #2328 - ldr ip, .L850+12 - movw r7, #65535 - ldr r10, [r5, #-3608] - mov lr, #6 - ldrh r2, [r0, r2] - ldr r0, [r5, #-3552] - mov r5, r7 - str r2, [sp, #20] -.L832: - ldrh r2, [r3] - movw fp, #65535 - cmp r2, fp - beq .L834 - add r1, r1, #1 - ldr fp, [sp, #20] - uxth r1, r1 - cmp r1, fp - bhi .L831 - ldrh fp, [r3, #4] - cmp fp, #0 - beq .L833 - rsb r3, r0, r3 - mov r3, r3, asr #1 - mul r3, ip, r3 - uxth r3, r3 - mov fp, r3, asl #1 - ldrh fp, [r10, fp] - cmp fp, r6 - bls .L838 - cmp fp, r7 - movcc r7, fp - movcc r5, r3 -.L833: - mla r3, lr, r2, r0 - b .L832 -.L838: - mov r5, r3 -.L834: - movw r3, #65535 - cmp r5, r3 - beq .L831 - mov r3, r5, asl #1 - ldrh fp, [r10, r3] - cmp fp, r6 - bls .L836 - str r3, [sp, #20] - bl GetFreeBlockMinEraseCount - ldr r3, [sp, #20] - cmp r0, r6 - strhi r7, [r4, #-3308] -.L836: - cmp fp, r8 - bcs .L831 - add r2, fp, #128 - cmp r9, r2 - ble .L831 - add r2, fp, #256 - cmp r2, r8 - bcc .L837 - ldr r2, [r4, #-3312] - add fp, fp, #768 - cmp fp, r2 - bcs .L831 -.L837: - ldr r2, [r4, #-3544] - mov r1, r5 - ldr r0, .L850+16 - ldrh r2, [r2, r3] - str r2, [sp] - mov r2, r8 - ldrh r3, [r10, r3] - stmib sp, {r3, r9} - ldr r3, [r4, #-3312] - bl printk - mov r0, r5 - mov r3, #1 - str r3, [r4, #-2708] -.L830: + beq .L823 +.L825: + movw r6, #65535 +.L824: + mov r0, r6 add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L851: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L817: + ldrh r0, [r2, #2]! + add r3, r3, #1 + ldr ip, [r4, #-3324] + add r0, r0, ip + str r0, [r4, #-3324] + b .L816 +.L815: + ldr r3, [r4, #-3312] + cmp r2, r3 + bls .L818 + ldr ip, .L842+8 + add r3, r3, #1 + str r3, [r4, #-3312] + mov r3, #0 +.L820: + ldrh r2, [ip] + cmp r3, r2 + bcs .L818 + ldr r0, [r4, #-3604] + lsl r1, r3, #1 + add r3, r3, #1 + ldrh r2, [r0, r1] + add r2, r2, #1 + strh r2, [r0, r1] @ movhi + b .L820 +.L823: + ldr r3, .L842+12 + ldrh r0, [r3, #-4] + add r0, r0, r0, lsl #1 + ubfx r0, r0, #2, #16 + bl GetFreeBlockMaxEraseCount + add r1, r5, #64 + mov r10, r0 + cmp r0, r1 + movcs r1, #0 + movcc r1, #1 + cmp r5, #40 + movls r1, #0 + cmp r1, #0 + bne .L825 + ldr r3, [r4, #-3544] + cmp r3, #0 + beq .L825 + ldr r0, .L842+4 + movw r2, #2332 + ldr ip, [r4, #-3548] + movw r7, #65535 + ldr r9, [r4, #-3604] + mov fp, #6 + ldrh r2, [r0, r2] + ldr lr, .L842+16 + str r2, [sp, #20] + mov r2, r7 +.L826: + ldrh r0, [r3] + movw r6, #65535 + cmp r0, r6 + bne .L829 + mov r6, r2 +.L828: + movw r3, #65535 + cmp r6, r3 + beq .L825 + lsl fp, r6, #1 + ldrh r1, [r9, fp] + cmp r5, r1 + bcs .L830 + bl GetFreeBlockMinEraseCount + cmp r5, r0 + strcc r7, [r4, #-3308] +.L830: + cmp r8, r1 + bls .L825 + add r3, r1, #128 + cmp r10, r3 + ble .L825 + add r3, r1, #256 + cmp r8, r3 + bhi .L831 + ldr r3, [r4, #-3312] + add r1, r1, #768 + cmp r1, r3 + bcs .L825 +.L831: + str r10, [sp, #8] + mov r2, r8 + ldrh r3, [r9, fp] + mov r1, r6 + ldr r0, .L842+20 + str r3, [sp, #4] + ldr r3, [r4, #-3540] + ldrh r3, [r3, fp] + str r3, [sp] + ldr r3, [r4, #-3312] + bl printk + mov r3, #1 + str r3, [r4, #-2708] + b .L824 +.L829: + add r1, r1, #1 + ldr r6, [sp, #20] + uxth r1, r1 + cmp r1, r6 + bhi .L825 + ldrh r6, [r3, #4] + cmp r6, #0 + beq .L827 + sub r3, r3, ip + asr r3, r3, #1 + mul r3, lr, r3 + uxth r6, r3 + lsl r3, r6, #1 + ldrh r3, [r9, r3] + cmp r5, r3 + bcs .L828 + cmp r7, r3 + movhi r7, r3 + movhi r2, r6 +.L827: + mla r3, fp, r0, ip + b .L826 +.L843: .align 2 -.L850: +.L842: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2328 + .word .LANCHOR0+2332 + .word .LANCHOR2-3520 .word -1431655765 .word .LC78 .fnend .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock + .syntax unified + .arm + .fpu softvfp .type free_data_superblock, %function free_data_superblock: .fnstart @@ -5428,467 +5783,494 @@ @ frame_needed = 0, uses_anonymous_args = 0 movw r2, #65535 cmp r0, r2 - stmfd sp!, {r3, lr} - .save {r3, lr} - beq .L853 - ldr r2, .L855 - mov r3, r0, asl #1 + beq .L847 + ldr r2, .L850 + lsl r3, r0, #1 + push {r4, lr} + .save {r4, lr} mov r1, #0 - ldr r2, [r2, #-3544] + ldr r2, [r2, #-3540] strh r1, [r2, r3] @ movhi bl INSERT_FREE_LIST -.L853: mov r0, #0 - ldmfd sp!, {r3, pc} -.L856: + pop {r4, pc} +.L847: + mov r0, #0 + bx lr +.L851: .align 2 -.L855: +.L850: .word .LANCHOR2 .fnend .size free_data_superblock, .-free_data_superblock .align 2 .global FtlGcBufInit + .syntax unified + .arm + .fpu softvfp .type FtlGcBufInit, %function FtlGcBufInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L865 + ldr ip, .L858 mov r3, #0 - ldr r1, .L865+4 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r2, .L858+4 + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - add r7, ip, #78 - mov r5, #12 - mov r6, #1 - mov r8, #36 - str r3, [r1, #-2704] -.L858: - ldrh r2, [ip] - add r4, r3, #1 - uxth r3, r3 - cmp r3, r2 - bcs .L863 - mul r0, r5, r3 - ldr lr, [r1, #-2700] - add r2, lr, r0 - str r6, [r2, #8] - ldrh r2, [r7] - mul r2, r2, r3 - add r9, r2, #3 - cmp r2, #0 - movlt r2, r9 - ldr r9, [r1, #-2696] - bic r2, r2, #3 - add r2, r9, r2 - str r2, [lr, r0] - ldr r2, .L865+8 - ldr r9, [r1, #-2700] - ldrh r2, [r2] - add lr, r9, r0 - mul r2, r2, r3 - add r10, r2, #3 - cmp r2, #0 - movlt r2, r10 - ldr r10, [r1, #-2692] - bic r2, r2, #3 - add r2, r10, r2 - str r2, [lr, #4] - ldr r2, [r1, #-2688] - mla r3, r8, r3, r2 - ldr r2, [r9, r0] - str r2, [r3, #8] - ldr r2, [lr, #4] - str r2, [r3, #12] - mov r3, r4 - b .L858 -.L863: - ldr r0, .L865+4 + mov r4, #12 + mov r5, #1 + add r6, ip, #76 + mov r7, #36 + str r3, [r2, #-2704] +.L853: + ldrh r1, [ip] + uxth r0, r3 + add lr, r3, #1 + cmp r0, r1 + bcc .L854 + ldr r4, .L858+8 mov ip, #12 - ldr r4, .L865+12 mov lr, #0 -.L860: - ldr r3, [r1, #-2684] - cmp r2, r3 - bcs .L864 - mul r5, ip, r2 - ldr r7, [r0, #-2700] - add r3, r7, r5 +.L855: + ldr r3, [r2, #-2684] + cmp r1, r3 + bcc .L856 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L854: + uxth r3, r3 + ldr r8, [r2, #-2700] + mul r0, r4, r3 + add r1, r8, r0 + str r5, [r1, #8] + ldrh r1, [r6] + mul r1, r3, r1 + add r9, r1, #3 + cmp r1, #0 + movlt r1, r9 + ldr r9, [r2, #-2696] + bic r1, r1, #3 + add r1, r9, r1 + str r1, [r8, r0] + ldr r1, .L858+12 + ldr r9, [r2, #-2700] + ldrh r1, [r1] + add r8, r9, r0 + mul r1, r3, r1 + add r10, r1, #3 + cmp r1, #0 + movlt r1, r10 + ldr r10, [r2, #-2692] + bic r1, r1, #3 + add r1, r10, r1 + str r1, [r8, #4] + ldr r1, [r2, #-2688] + mla r3, r7, r3, r1 + ldr r1, [r9, r0] + str r1, [r3, #8] + ldr r1, [r8, #4] + str r1, [r3, #12] + mov r3, lr + b .L853 +.L856: + mul r5, ip, r1 + ldr r6, [r2, #-2700] + add r3, r6, r5 str lr, [r3, #8] ldrh r3, [r4] - mul r3, r3, r2 - add r6, r3, #3 + mul r3, r1, r3 + add r0, r3, #3 cmp r3, #0 - movlt r3, r6 - ldr r6, [r0, #-2696] + movlt r3, r0 + ldr r0, [r2, #-2696] bic r3, r3, #3 - add r3, r6, r3 - str r3, [r7, r5] - ldr r3, .L865+8 - ldr r6, [r0, #-2700] + add r3, r0, r3 + str r3, [r6, r5] + ldr r3, .L858+12 + ldr r0, [r2, #-2700] ldrh r3, [r3] - add r5, r6, r5 - mul r3, r3, r2 - add r2, r2, #1 - uxth r2, r2 - add r6, r3, #3 + add r0, r0, r5 + mul r3, r1, r3 + add r1, r1, #1 + uxth r1, r1 + add r5, r3, #3 cmp r3, #0 - movlt r3, r6 - ldr r6, [r0, #-2692] + movlt r3, r5 + ldr r5, [r2, #-2692] bic r3, r3, #3 - add r3, r6, r3 - str r3, [r5, #4] - b .L860 -.L864: - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L866: + add r3, r5, r3 + str r3, [r0, #4] + b .L855 +.L859: .align 2 -.L865: - .word .LANCHOR0+2320 +.L858: + .word .LANCHOR0+2324 .word .LANCHOR2 .word .LANCHOR0+2400 - .word .LANCHOR0+2398 + .word .LANCHOR0+2402 .fnend .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlGcBufFree + .syntax unified + .arm + .fpu softvfp .type FtlGcBufFree, %function FtlGcBufFree: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L875 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r3, .L868 + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} mov lr, #0 - ldr r6, [r3, #-2684] mov r5, #36 + mov r7, #12 + mov r8, lr + ldr r6, [r3, #-2684] ldr r4, [r3, #-2700] - mov r7, lr - mov r8, #12 -.L868: - uxth ip, lr - cmp ip, r1 - ldmcsfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} - mla ip, r5, ip, r0 +.L861: + uxth r3, lr + cmp r1, r3 + popls {r4, r5, r6, r7, r8, r9, r10, pc} + mla ip, r5, r3, r0 mov r2, #0 -.L869: +.L862: uxth r3, r2 - cmp r3, r6 - bcs .L870 - mul r3, r8, r3 + cmp r6, r3 + bls .L863 + mul r3, r7, r3 add r2, r2, #1 - add r9, r4, r3 ldr r10, [r4, r3] + add r9, r4, r3 ldr r3, [ip, #8] cmp r10, r3 - bne .L869 - str r7, [r9, #8] -.L870: + bne .L862 + str r8, [r9, #8] +.L863: add lr, lr, #1 - b .L868 -.L876: + b .L861 +.L869: .align 2 -.L875: +.L868: .word .LANCHOR2 .fnend .size FtlGcBufFree, .-FtlGcBufFree .align 2 .global FtlGcBufAlloc + .syntax unified + .arm + .fpu softvfp .type FtlGcBufAlloc, %function FtlGcBufAlloc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L886 + ldr r3, .L878 mov ip, #0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} mov r6, #12 - ldr r4, [r3, #-2684] mov r7, #1 - ldr r5, [r3, #-2700] mov r8, #36 -.L878: + ldr r4, [r3, #-2684] + ldr r5, [r3, #-2700] +.L871: uxth r2, ip - cmp r2, r1 - bcs .L885 + cmp r1, r2 + bhi .L875 + pop {r4, r5, r6, r7, r8, r9, pc} +.L875: mov lr, #0 -.L879: +.L872: uxth r3, lr - cmp r3, r4 - bcs .L880 + cmp r4, r3 + bls .L873 mla r3, r6, r3, r5 add lr, lr, #1 ldr r9, [r3, #8] cmp r9, #0 - bne .L879 + bne .L872 mla r2, r8, r2, r0 ldr lr, [r3] str r7, [r3, #8] str lr, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L880: +.L873: add ip, ip, #1 - b .L878 -.L885: - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L887: + b .L871 +.L879: .align 2 -.L886: +.L878: .word .LANCHOR2 .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 .global IsBlkInGcList + .syntax unified + .arm + .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, .L894 + ldr r2, .L885 + ldr r3, [r2, #-2680] sub r2, r2, #2672 - ldr r3, [r2, #-8] ldrh r2, [r2, #-4] - add r2, r3, r2, asl #1 -.L889: + add r2, r3, r2, lsl #1 +.L881: cmp r3, r2 - beq .L893 - ldrh r1, [r3], #2 - cmp r1, r0 - bne .L889 - mov r0, #1 - bx lr -.L893: + bne .L883 mov r0, #0 bx lr -.L895: +.L883: + ldrh r1, [r3], #2 + cmp r1, r0 + bne .L881 + mov r0, #1 + bx lr +.L886: .align 2 -.L894: +.L885: .word .LANCHOR2 .fnend .size IsBlkInGcList, .-IsBlkInGcList .align 2 .global FtlGcUpdatePage + .syntax unified + .arm + .fpu softvfp .type FtlGcUpdatePage, %function FtlGcUpdatePage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r4, r0 ubfx r0, r0, #10, #16 mov r5, r1 mov r6, r2 bl P2V_block_in_plane - ldr r2, .L904 - mov lr, #0 - sub r3, r2, #2672 - ldr r8, [r2, #-2680] - ldrh r1, [r3, #-4] - sub r7, r8, #2 -.L897: - uxth ip, lr - cmp ip, r1 - bcs .L901 - ldrh r9, [r7, #2]! - add lr, lr, #1 - cmp r9, r0 - bne .L897 -.L901: - cmp ip, r1 - moveq ip, ip, asl #1 - streqh r0, [r8, ip] @ movhi - ldreqh ip, [r3, #-4] - addeq ip, ip, #1 - streqh ip, [r3, #-4] @ movhi -.L899: - ldr r3, .L904+4 - mov ip, #12 + ldr r2, .L892 + mov r3, #0 + sub ip, r2, #2672 + ldr lr, [r2, #-2680] + ldrh r7, [ip, #-4] + sub r1, lr, #2 +.L888: + uxth r8, r3 + cmp r8, r7 + bcc .L890 + moveq r3, r8 + lsleq r3, r3, #1 + strheq r0, [lr, r3] @ movhi + ldrheq r3, [ip, #-4] + addeq r3, r3, #1 + strheq r3, [ip, #-4] @ movhi + b .L889 +.L890: + ldrh r8, [r1, #2]! + add r3, r3, #1 + cmp r8, r0 + bne .L888 +.L889: + ldr r0, .L892+4 + mov r3, #12 ldr r2, [r2, #-2672] - ldrh r1, [r3, #-12] - mul ip, ip, r1 - add r1, r2, ip + ldrh r1, [r0, #-12] + mul r3, r3, r1 + add r1, r2, r3 stmib r1, {r5, r6} - str r4, [r2, ip] - ldrh r2, [r3, #-12] - add r2, r2, #1 - strh r2, [r3, #-12] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L905: + str r4, [r2, r3] + ldrh r3, [r0, #-12] + add r3, r3, #1 + strh r3, [r0, #-12] @ movhi + pop {r4, r5, r6, r7, r8, pc} +.L893: .align 2 -.L904: +.L892: .word .LANCHOR2 .word .LANCHOR2-2656 .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage .align 2 .global FtlGcRefreshOpenBlock + .syntax unified + .arm + .fpu softvfp .type FtlGcRefreshOpenBlock, %function FtlGcRefreshOpenBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r5, r0 - ldr r4, .L914 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, .L902 ldrh r3, [r4, #-10] cmp r3, r0 - beq .L908 + beq .L896 ldrh r3, [r4, #-8] cmp r3, r0 - beq .L908 + beq .L896 ldrh r3, [r4, #-6] cmp r3, r0 - beq .L908 + beq .L896 ldrh r3, [r4, #-4] cmp r3, r0 - beq .L908 - ldr r0, .L914+4 - mov r1, r5 + beq .L896 + mov r5, r0 + mov r1, r0 + ldr r0, .L902+4 bl printk ldrh r2, [r4, #-10] movw r3, #65535 cmp r2, r3 - streqh r5, [r4, #-10] @ movhi - beq .L908 + strheq r5, [r4, #-10] @ movhi + beq .L896 ldrh r2, [r4, #-8] cmp r2, r3 - streqh r5, [r4, #-8] @ movhi - beq .L908 + strheq r5, [r4, #-8] @ movhi + beq .L896 ldrh r2, [r4, #-6] cmp r2, r3 - streqh r5, [r4, #-6] @ movhi - beq .L908 + strheq r5, [r4, #-6] @ movhi + beq .L896 ldrh r2, [r4, #-4] cmp r2, r3 - streqh r5, [r4, #-4] @ movhi -.L908: + strheq r5, [r4, #-4] @ movhi +.L896: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L915: + pop {r4, r5, r6, pc} +.L903: .align 2 -.L914: +.L902: .word .LANCHOR2-2656 .word .LC79 .fnend .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 2 .global FtlGcRefreshBlock + .syntax unified + .arm + .fpu softvfp .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r5, r0 - ldr r4, .L927 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, .L915 ldrh r3, [r4, #-10] cmp r3, r0 - beq .L924 + beq .L912 ldrh r3, [r4, #-8] cmp r3, r0 - beq .L924 + beq .L912 ldrh r3, [r4, #-6] cmp r3, r0 - beq .L924 + beq .L912 ldrh r3, [r4, #-4] cmp r3, r0 - beq .L924 - ldr r0, .L927+4 - mov r1, r5 + beq .L912 + mov r5, r0 + mov r1, r0 + ldr r0, .L915+4 bl printk ldrh r2, [r4, #-10] movw r3, #65535 cmp r2, r3 - streqh r5, [r4, #-10] @ movhi - beq .L924 + strheq r5, [r4, #-10] @ movhi + beq .L912 ldrh r2, [r4, #-8] cmp r2, r3 - streqh r5, [r4, #-8] @ movhi - beq .L924 + strheq r5, [r4, #-8] @ movhi + beq .L912 ldrh r2, [r4, #-6] cmp r2, r3 - streqh r5, [r4, #-6] @ movhi - beq .L924 + strheq r5, [r4, #-6] @ movhi + beq .L912 ldrh r2, [r4, #-4] cmp r2, r3 - bne .L925 + bne .L913 strh r5, [r4, #-4] @ movhi -.L924: +.L912: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L925: + pop {r4, r5, r6, pc} +.L913: mvn r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L928: + pop {r4, r5, r6, pc} +.L916: .align 2 -.L927: +.L915: .word .LANCHOR2-2656 .word .LC79 .fnend .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 .global FtlGcMarkBadPhyBlk + .syntax unified + .arm + .fpu softvfp .type FtlGcMarkBadPhyBlk, %function FtlGcMarkBadPhyBlk: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r5, r0 + ldr r6, .L926 bl P2V_block_in_plane - ldr r6, .L939 - mov r2, r5 sub r7, r6, #2656 - ldrh r1, [r7, #-2] mov r4, r0 - ldr r0, .L939+4 + mov r2, r5 + ldrh r1, [r7, #-2] + ldr r0, .L926+4 bl printk mov r0, r4 bl FtlGcRefreshBlock - ldr r3, .L939+8 - ldr r3, [r3, #2244] + ldr r3, .L926+8 + ldr r3, [r3, #2248] cmp r3, #0 mov r3, r7 - beq .L930 - ldr r1, [r6, #-3608] - mov r4, r4, asl #1 + beq .L918 + ldr r1, [r6, #-3604] + lsl r4, r4, #1 ldrh r2, [r1, r4] cmp r2, #39 subhi r2, r2, #40 - strhih r2, [r1, r4] @ movhi -.L930: + strhhi r2, [r1, r4] @ movhi +.L918: ldrh r2, [r3, #-2] mov r1, #0 -.L931: +.L919: uxth r0, r1 - cmp r0, r2 - bcs .L938 - add r1, r1, #1 - add r0, r3, r1, asl #1 - ldrh r0, [r0, #-2] - cmp r0, r5 - bne .L931 - b .L932 -.L938: + cmp r2, r0 + bhi .L921 cmp r2, #15 addls r1, r2, #1 - movls r2, r2, asl #1 - strlsh r1, [r3, #-2] @ movhi - strlsh r5, [r3, r2] @ movhi -.L932: + lslls r2, r2, #1 + strhls r1, [r3, #-2] @ movhi + strhls r5, [r3, r2] @ movhi + b .L920 +.L921: + add r1, r1, #1 + add r0, r3, r1, lsl #1 + ldrh r0, [r0, #-2] + cmp r0, r5 + bne .L919 +.L920: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L940: + pop {r4, r5, r6, r7, r8, pc} +.L927: .align 2 -.L939: +.L926: .word .LANCHOR2 .word .LC80 .word .LANCHOR0 @@ -5896,28 +6278,31 @@ .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 2 .global FtlGcReFreshBadBlk + .syntax unified + .arm + .fpu softvfp .type FtlGcReFreshBadBlk, %function FtlGcReFreshBadBlk: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L949 + ldr r3, .L938 ldrh r2, [r3, #-2] cmp r2, #0 - beq .L948 + beq .L935 ldrh r0, [r3, #-10] movw r1, #65535 cmp r0, r1 - bne .L948 - stmfd sp!, {r4, lr} + bne .L935 + push {r4, lr} .save {r4, lr} add r4, r3, #48 ldrh r1, [r4, #-14] cmp r1, r2 movcs r2, #0 - strcsh r2, [r4, #-14] @ movhi + strhcs r2, [r4, #-14] @ movhi ldrh r2, [r4, #-14] - mov r2, r2, asl #1 + lsl r2, r2, #1 ldrh r0, [r3, r2] bl P2V_block_in_plane bl FtlGcRefreshBlock @@ -5925,18 +6310,21 @@ mov r0, #0 add r3, r3, #1 strh r3, [r4, #-14] @ movhi - ldmfd sp!, {r4, pc} -.L948: + pop {r4, pc} +.L935: mov r0, #0 bx lr -.L950: +.L939: .align 2 -.L949: +.L938: .word .LANCHOR2-2656 .fnend .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 2 .global ftl_memset + .syntax unified + .arm + .fpu softvfp .type ftl_memset, %function ftl_memset: .fnstart @@ -5948,459 +6336,470 @@ .size ftl_memset, .-ftl_memset .align 2 .global BuildFlashLsbPageTable + .syntax unified + .arm + .fpu softvfp .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 cmp r0, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r4, r1 - bne .L953 - ldr r3, .L996 -.L954: - mov r2, r0, asl #1 + bne .L942 + ldr r3, .L998 +.L943: + lsl r2, r0, #1 strh r0, [r2, r3] @ movhi add r0, r0, #1 cmp r0, #512 - bne .L954 -.L958: + bne .L943 +.L949: + ldr r5, .L998+4 mov r1, #255 - ldr r0, .L996+4 mov r2, #2048 uxth r4, r4 + sub r0, r5, #12 + sub r5, r5, #12 bl ftl_memset + ldr r1, .L998 mov r3, #0 - ldr r1, .L996 - ldr r0, .L996+4 - b .L955 -.L953: +.L944: + uxth r2, r3 + cmp r4, r2 + bhi .L977 + pop {r4, r5, r6, pc} +.L942: cmp r0, #1 - bne .L956 - ldr ip, .L996 + bne .L945 + ldr r1, .L998 mov r3, #0 -.L957: +.L948: + cmp r3, #3 uxth r2, r3 - mov lr, r3, asl #1 - cmp r2, #3 - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 + bls .L946 + tst r2, #1 + movne r0, #3 + moveq r0, #2 + rsb r2, r0, r2, lsl #1 + uxth r2, r2 +.L946: + lsl r0, r3, #1 add r3, r3, #1 - movne r1, #2 - moveq r1, #3 - cmp r0, #0 - rsb r1, r1, r2, asl #1 - movne r2, r1 - cmp r3, #512 - strh r2, [lr, ip] @ movhi - bne .L957 - b .L958 -.L956: - cmp r0, #2 - bne .L959 - ldr r1, .L996 - mov r3, #0 -.L960: - uxth r2, r3 - mov r0, r3, asl #1 - cmp r2, #1 - add r3, r3, #1 - mov ip, r2, asl #1 - subhi r2, ip, #1 cmp r3, #512 strh r2, [r0, r1] @ movhi - bne .L960 - b .L958 -.L959: + bne .L948 + b .L949 +.L945: + cmp r0, #2 + bne .L950 + ldr r1, .L998 + mov r2, #0 +.L952: + uxth r3, r2 + cmp r2, #1 + lsl r0, r2, #1 + add r2, r2, #1 + lslhi r3, r3, #1 + subhi r3, r3, #1 + uxthhi r3, r3 + cmp r2, #512 + strh r3, [r0, r1] @ movhi + bne .L952 + b .L949 +.L950: cmp r0, #3 - bne .L961 - ldr ip, .L996 + bne .L953 + ldr r1, .L998 mov r3, #0 -.L962: +.L956: + cmp r3, #5 uxth r2, r3 - mov lr, r3, asl #1 - cmp r2, #5 - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 + bls .L954 + tst r2, #1 + movne r0, #5 + moveq r0, #4 + rsb r2, r0, r2, lsl #1 + uxth r2, r2 +.L954: + lsl r0, r3, #1 add r3, r3, #1 - movne r1, #4 - moveq r1, #5 - cmp r0, #0 - rsb r1, r1, r2, asl #1 - movne r2, r1 cmp r3, #512 - strh r2, [lr, ip] @ movhi - bne .L962 - b .L958 -.L961: + strh r2, [r0, r1] @ movhi + bne .L956 + b .L949 +.L953: cmp r0, #4 mov r3, #0 - bne .L963 - ldr r2, .L996+8 - strh r3, [r2, #148] @ movhi + bne .L957 + ldr r2, .L998+8 + strh r3, [r2, #156] @ movhi mov r3, #1 - strh r0, [r2, #156] @ movhi - strh r3, [r2, #150] @ movhi - mov r3, #2 - strh r3, [r2, #152] @ movhi - mov r3, #3 - strh r3, [r2, #154] @ movhi - mov r3, #5 strh r3, [r2, #158] @ movhi - mov r3, #7 + mov r3, #2 strh r3, [r2, #160] @ movhi + mov r3, #3 + strh r3, [r2, #162] @ movhi + mov r3, #5 + strh r3, [r2, #166] @ movhi + mov r3, #7 + strh r3, [r2, #168] @ movhi mov r3, #8 - strh r3, [r2, #162]! @ movhi -.L964: + strh r0, [r2, #164] @ movhi + strh r3, [r2, #170]! @ movhi +.L959: tst r3, #1 movne r1, #7 moveq r1, #6 - rsb r1, r1, r3, asl #1 + rsb r1, r1, r3, lsl #1 add r3, r3, #1 - strh r1, [r2, #2]! @ movhi uxth r3, r3 + strh r1, [r2, #2]! @ movhi cmp r3, #512 - bne .L964 - b .L958 -.L963: + bne .L959 + b .L949 +.L957: cmp r0, #5 - bne .L965 - ldr r2, .L996 -.L966: - mov r1, r3, asl #1 - strh r3, [r1, r2] @ movhi + bne .L960 + ldr r2, .L998+8 + add r1, r2, #156 +.L961: + lsl r0, r3, #1 + strh r3, [r0, r1] @ movhi add r3, r3, #1 cmp r3, #16 - bne .L966 - ldr r2, .L996+12 -.L967: + bne .L961 + add r2, r2, #186 +.L962: strh r3, [r2, #2]! @ movhi add r3, r3, #2 uxth r3, r3 cmp r3, #1008 - bne .L967 - b .L958 -.L965: + bne .L962 + b .L949 +.L960: cmp r0, #6 - bne .L968 - ldr r1, .L996+16 -.L969: - cmp r3, #5 - add r2, r3, r3, asl #1 - movls r0, #0 - movhi r0, #1 - bics ip, r0, r3 - movne ip, #10 - moveq ip, #12 - cmp r0, #0 - subne r2, r2, ip - moveq r2, r3 - add r3, r3, #1 - strh r2, [r1, #2]! @ movhi + bne .L963 + ldr r0, .L998 + mov r1, r3 +.L966: + cmp r1, #5 + uxth r2, r1 + bls .L964 + tst r2, #1 + movne r2, #12 + moveq r2, #10 + sub r2, r3, r2 + uxth r2, r2 +.L964: + lsl ip, r1, #1 + add r1, r1, #1 + cmp r1, #512 + add r3, r3, #3 + strh r2, [ip, r0] @ movhi uxth r3, r3 - cmp r3, #512 - bne .L969 - b .L958 -.L968: + bne .L966 + b .L949 +.L963: cmp r0, #9 - bne .L970 - ldr r2, .L996+8 + bne .L967 + ldr r2, .L998+8 movw r1, #1021 - strh r3, [r2, #148] @ movhi + strh r3, [r2, #156] @ movhi mov r3, #1 - strh r3, [r2, #150] @ movhi - mov r3, #2 - strh r3, [r2, #152]! @ movhi - mov r3, #3 + strh r3, [r2, #158] @ movhi + mov r3, r2 + mov r2, #2 + strh r2, [r3, #160]! @ movhi + mov r2, #3 +.L968: + strh r2, [r3, #2]! @ movhi + add r2, r2, #2 + uxth r2, r2 + cmp r2, r1 + bne .L968 + b .L949 +.L967: + cmp r0, #10 + bne .L969 + ldr r2, .L998+8 + add r1, r2, #156 +.L970: + lsl r0, r3, #1 + strh r3, [r0, r1] @ movhi + add r3, r3, #1 + cmp r3, #63 + bne .L970 + add r2, r2, #280 + movw r1, #961 .L971: strh r3, [r2, #2]! @ movhi add r3, r3, #2 uxth r3, r3 cmp r3, r1 bne .L971 - b .L958 -.L970: - cmp r0, #10 - bne .L972 - ldr r2, .L996 -.L973: - mov r1, r3, asl #1 - strh r3, [r1, r2] @ movhi - add r3, r3, #1 - cmp r3, #63 - bne .L973 - ldr r2, .L996+20 - movw r1, #961 -.L974: - strh r3, [r2, #2]! @ movhi - add r3, r3, #2 - uxth r3, r3 - cmp r3, r1 - bne .L974 - b .L958 -.L972: + b .L949 +.L969: cmp r0, #11 - bne .L975 - ldr r2, .L996 + bne .L972 + ldr r2, .L998+8 mov r3, #0 -.L976: - mov r1, r3, asl #1 - strh r3, [r1, r2] @ movhi + add r1, r2, #156 +.L973: + lsl r0, r3, #1 + strh r3, [r0, r1] @ movhi add r3, r3, #1 cmp r3, #8 - bne .L976 - ldr r1, .L996+24 -.L977: - tst r3, #1 - movne r2, #7 - moveq r2, #6 - rsb r2, r2, r3, asl #1 - add r3, r3, #1 - strh r2, [r1, #2]! @ movhi - uxth r3, r3 - cmp r3, #512 - bne .L977 - b .L958 + bne .L973 + add r2, r2, #170 .L975: + tst r3, #1 + movne r1, #7 + moveq r1, #6 + rsb r1, r1, r3, lsl #1 + add r3, r3, #1 + uxth r3, r3 + strh r1, [r2, #2]! @ movhi + cmp r3, #512 + bne .L975 + b .L949 +.L972: cmp r0, #12 - bne .L958 - ldr r3, .L996+8 + bne .L949 + ldr r3, .L998+8 mov r2, #0 - strh r2, [r3, #148] @ movhi + strh r2, [r3, #156] @ movhi mov r2, #1 - strh r2, [r3, #150] @ movhi + strh r2, [r3, #158] @ movhi mov r2, #2 - strh r2, [r3, #152] @ movhi + strh r2, [r3, #160] @ movhi mov r2, #3 - strh r2, [r3, #154]! @ movhi + strh r2, [r3, #162]! @ movhi mov r2, #4 -.L978: +.L976: sub r1, r2, #1 add r1, r1, r2, lsr #1 add r2, r2, #1 - strh r1, [r3, #2]! @ movhi uxth r2, r2 + strh r1, [r3, #2]! @ movhi cmp r2, #512 - bne .L978 - b .L958 -.L955: - uxth r2, r3 - cmp r2, r4 - bcs .L995 - mov r2, r3, asl #1 + bne .L976 + b .L949 +.L977: + lsl r2, r3, #1 add r3, r3, #1 ldrh r2, [r2, r1] - mov ip, r2, asl #1 - strh r2, [r0, ip] @ movhi - b .L955 -.L995: - ldmfd sp!, {r4, pc} -.L997: + lsl r0, r2, #1 + strh r2, [r5, r0] @ movhi + b .L944 +.L999: .align 2 -.L996: - .word .LANCHOR0+148 - .word .LANCHOR2-2620 +.L998: + .word .LANCHOR0+156 + .word .LANCHOR2-2608 .word .LANCHOR0 - .word .LANCHOR0+178 - .word .LANCHOR0+146 - .word .LANCHOR0+272 - .word .LANCHOR0+162 .fnend .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 2 .global FlashDieInfoInit + .syntax unified + .arm + .fpu softvfp .type FlashDieInfoInit, %function FlashDieInfoInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L1015 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r6, #0 - ldr r3, .L1013 - ldr r5, .L1013+4 - ldr r9, .L1013+8 + ldr r4, .L1015+4 + ldr r10, .L1015+8 ldrh r0, [r3, #10] - strb r6, [r5, #2230] - mov r7, r5 - strb r6, [r9, #-572] + strb r6, [r4, #2234] + strb r6, [r10, #-572] bl FlashBlockAlignInit - mov r1, r6 mov r2, #8 - ldr r0, .L1013+12 - bl ftl_memset mov r1, r6 + ldr r0, .L1015+12 + bl ftl_memset mov r2, #32 - ldr r0, .L1013+16 - bl ftl_memset - ldr r0, .L1013+20 mov r1, r6 - mov r2, #128 + ldr r0, .L1015+16 bl ftl_memset - ldr r4, [r5, #44] - ldr fp, .L1013+24 - add r8, r4, #1 -.L1000: - mov r0, r8 - add r1, fp, r6, asl #3 - ldrb r2, [r4] @ zero_extendqisi2 - bl FlashMemCmp8 - ldr r10, .L1013+24 - cmp r0, #0 - bne .L999 - ldrb r3, [r7, #2230] @ zero_extendqisi2 - add r2, r7, r3, asl #2 - str r0, [r2, #1172] - add r2, r3, #1 - add r3, r7, r3 - strb r2, [r7, #2230] - strb r6, [r3, #2232] -.L999: - add r6, r6, #1 - cmp r6, #4 - bne .L1000 - ldrb r3, [r5, #2230] @ zero_extendqisi2 - ldr r7, .L1013+4 - strb r3, [r9, #-572] - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #2 - beq .L1001 -.L1005: - ldrb r3, [r4, #13] @ zero_extendqisi2 - ldrb r2, [r5, #2230] @ zero_extendqisi2 - smulbb r2, r2, r3 - ldrh r3, [r4, #14] - smulbb r3, r2, r3 - ldr r2, .L1013+28 - strh r3, [r2, #-2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1001: - ldr r9, [r7, #4] - mov r6, #0 -.L1004: - mov r0, r8 - add r1, r10, r6, asl #3 - ldrb r2, [r4] @ zero_extendqisi2 - bl FlashMemCmp8 - cmp r0, #0 - bne .L1002 - ldrb r1, [r4, #13] @ zero_extendqisi2 - ldrh r3, [r4, #14] - ldrb r2, [r7, #2230] @ zero_extendqisi2 - mul r1, r9, r1 - and r3, r3, #65280 - add r0, r7, r2, asl #2 - mul r3, r3, r1 - str r3, [r0, #1172] - ldrb r1, [r4, #23] @ zero_extendqisi2 - cmp r1, #0 - movne r3, r3, asl #1 - strne r3, [r0, #1172] - add r3, r2, #1 - add r2, r5, r2 - strb r3, [r5, #2230] - strb r6, [r2, #2232] + mov r2, #128 + mov r1, r6 + ldr r0, .L1015+20 + bl ftl_memset + ldr r9, .L1015+24 + ldr r5, [r4, #48] + mov r8, r9 + add r7, r5, #1 .L1002: + ldrb r2, [r5] @ zero_extendqisi2 + add r1, r9, r6, lsl #3 + mov r0, r7 + bl FlashMemCmp8 + cmp r0, #0 + bne .L1001 + ldrb r3, [r4, #2234] @ zero_extendqisi2 + add r2, r4, r3, lsl #2 + str r0, [r2, #1180] + add r2, r3, #1 + add r3, r4, r3 + strb r2, [r4, #2234] + strb r6, [r3, #2236] +.L1001: add r6, r6, #1 cmp r6, #4 + bne .L1002 + ldrb r3, [r4, #2234] @ zero_extendqisi2 + strb r3, [r10, #-572] + ldrb r3, [r5, #8] @ zero_extendqisi2 + cmp r3, #2 + beq .L1003 +.L1007: + ldrh r2, [r5, #14] + ldrb r3, [r4, #2234] @ zero_extendqisi2 + smulbb r3, r3, r2 + ldrb r2, [r5, #13] @ zero_extendqisi2 + smulbb r3, r3, r2 + ldr r2, .L1015+28 + strh r3, [r2, #-2] @ movhi + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1003: + ldr r9, [r4, #40] + mov r6, #0 +.L1006: + ldrb r2, [r5] @ zero_extendqisi2 + add r1, r8, r6, lsl #3 + mov r0, r7 + bl FlashMemCmp8 + cmp r0, #0 bne .L1004 - b .L1005 -.L1014: + ldrh r3, [r5, #14] + ldrb r2, [r4, #2234] @ zero_extendqisi2 + and r1, r3, #65280 + ldrb r3, [r5, #13] @ zero_extendqisi2 + mul r3, r9, r3 + mul r3, r3, r1 + add r1, r4, r2, lsl #2 + str r3, [r1, #1180] + ldrb r0, [r5, #23] @ zero_extendqisi2 + cmp r0, #0 + lslne r3, r3, #1 + strne r3, [r1, #1180] + add r3, r2, #1 + add r2, r4, r2 + strb r3, [r4, #2234] + strb r6, [r2, #2236] +.L1004: + add r6, r6, #1 + cmp r6, #4 + bne .L1006 + b .L1007 +.L1016: .align 2 -.L1013: - .word .LANCHOR1+472 +.L1015: + .word .LANCHOR1+468 .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2232 - .word .LANCHOR0+1172 - .word .LANCHOR0+2100 - .word .LANCHOR0+2068 + .word .LANCHOR0+2236 + .word .LANCHOR0+1180 + .word .LANCHOR0+2104 + .word .LANCHOR0+2072 .word .LANCHOR2-568 .fnend .size FlashDieInfoInit, .-FlashDieInfoInit .align 2 .global ftl_read_flash_info + .syntax unified + .arm + .fpu softvfp .type ftl_read_flash_info, %function ftl_read_flash_info: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, lr} + push {r4, lr} .save {r4, lr} - mov r1, #0 mov r2, #11 + mov r1, #0 mov r4, r0 bl ftl_memset - ldr r2, .L1020 - ldr r0, .L1020+4 + ldr r2, .L1021 mov ip, #1 - ldr r3, [r2, #44] - ldrb r1, [r3, #9] @ zero_extendqisi2 - ldr r3, [r2, #4] - smulbb r3, r1, r3 + ldr r0, .L1021+4 + ldr r3, [r2, #48] + ldr r1, [r2, #40] + ldrb r3, [r3, #9] @ zero_extendqisi2 + smulbb r3, r3, r1 strh r3, [r4, #4] @ unaligned - ldrb r3, [r2, #2312] @ zero_extendqisi2 + ldrb r3, [r2, #2316] @ zero_extendqisi2 strb r3, [r4, #7] - ldr r3, [r2, #2428] + ldr r3, [r2, #2432] str r3, [r4] @ unaligned - ldr r3, [r2, #44] + ldr r3, [r2, #48] ldrb r1, [r3, #9] @ zero_extendqisi2 strb r1, [r4, #6] mov r1, #32 strb r1, [r4, #8] - ldrb r1, [r2, #2230] @ zero_extendqisi2 + ldrb r1, [r2, #2234] @ zero_extendqisi2 ldrb r3, [r3, #7] @ zero_extendqisi2 strb r3, [r4, #9] mov r3, #0 strb r3, [r4, #10] -.L1016: +.L1018: uxtb r2, r3 - cmp r2, r1 - bcs .L1019 + cmp r1, r2 + bhi .L1019 + pop {r4, pc} +.L1019: ldrb lr, [r3, r0] @ zero_extendqisi2 add r3, r3, #1 ldrb r2, [r4, #10] @ zero_extendqisi2 - orr r2, r2, ip, asl lr + orr r2, r2, ip, lsl lr strb r2, [r4, #10] - b .L1016 -.L1019: - ldmfd sp!, {r4, pc} -.L1021: + b .L1018 +.L1022: .align 2 -.L1020: +.L1021: .word .LANCHOR0 - .word .LANCHOR0+2232 + .word .LANCHOR0+2236 .fnend .size ftl_read_flash_info, .-ftl_read_flash_info .align 2 .global FtlMemInit + .syntax unified + .arm + .fpu softvfp .type FtlMemInit, %function FtlMemInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r6, #0 - ldr r4, .L1127 + ldr r4, .L1126 mvn r2, #0 - ldr r5, .L1127+4 mov r1, #32 - sub r3, r4, #568 mov r0, #1024 + ldr r5, .L1126+4 + mov r8, #12 + sub r3, r4, #568 str r6, [r4, #-564] - add r7, r5, #2320 strh r6, [r3] @ movhi movw r3, #65535 str r3, [r4, #-556] sub r3, r4, #2656 - str r6, [r4, #-3236] - mov r8, #36 strh r2, [r3, #-10] @ movhi + movw r9, #2324 strh r2, [r3, #-8] @ movhi + mov r7, #36 strh r2, [r3, #-6] @ movhi strh r2, [r3, #-4] @ movhi sub r2, r4, #2720 @@ -6409,12 +6808,11 @@ strh r1, [r2] @ movhi sub r2, r4, #2704 strh r6, [r3] @ movhi - sub r3, r4, #2608 - strh r6, [r2, #-8] @ movhi mov r1, #128 - strh r6, [r3, #-14] @ movhi - movw r3, #2394 + sub r3, r4, #2608 strh r1, [r2, #-14] @ movhi + strh r6, [r2, #-8] @ movhi + str r6, [r4, #-2724] str r6, [r4, #-3332] str r6, [r4, #-3328] str r6, [r4, #-3344] @@ -6425,7 +6823,7 @@ str r6, [r4, #-3364] str r6, [r4, #-3324] str r6, [r4, #-3320] - str r6, [r4, #-3604] + str r6, [r4, #-3600] str r6, [r4, #-3312] str r6, [r4, #-3308] str r6, [r4, #-560] @@ -6433,27 +6831,29 @@ str r6, [r4, #-552] str r6, [r4, #-2716] str r6, [r4, #-548] + strh r6, [r3, #-14] @ movhi + movw r3, #2396 ldrh r1, [r5, r3] bl __aeabi_idiv - ldrh r10, [r7] - str r6, [r5, #2440] - movw r6, #2392 - mov r9, r10, asl #2 - cmp r0, r9 + movw r3, #2324 + str r6, [r5, #2444] + ldrh r3, [r5, r3] + movw r6, #2394 str r0, [r4, #-540] + lsl r3, r3, #2 + cmp r0, r3 ldrh r0, [r5, r6] - strhi r9, [r4, #-540] - mov r9, #12 - mov r0, r0, asl #1 + strhi r3, [r4, #-540] + lsl r0, r0, #1 bl ftl_malloc str r0, [r4, #-2680] ldrh r0, [r5, r6] - mul r0, r9, r0 + mul r0, r8, r0 bl ftl_malloc - ldrh r6, [r7] - mul r6, r8, r6 - mov r10, r6, asl #3 + ldrh r6, [r5, r9] str r0, [r4, #-2672] + mul r6, r7, r6 + lsl r10, r6, #3 mov r0, r10 bl ftl_malloc str r0, [r4, #-536] @@ -6462,421 +6862,437 @@ str r0, [r4, #-532] mov r0, r10 bl ftl_malloc - movw r10, #2398 str r0, [r4, #-528] mov r0, r6 bl ftl_malloc - str r0, [r4, #-3612] + str r0, [r4, #-3608] mov r0, r6 bl ftl_malloc str r0, [r4, #-2688] + movw r10, #2402 ldr r0, [r4, #-540] - mul r0, r8, r0 + ldr r6, .L1126+8 + mul r0, r7, r0 bl ftl_malloc - ldrh r6, [r5, r10] - ldrh r3, [r7] - movw r8, #2330 - mov r3, r3, asl #1 + ldrh r3, [r5, r9] + ldrh r7, [r6] + str r0, [r5, #2448] + lsl r3, r3, #1 + mov r0, r7 add r3, r3, #1 str r3, [r4, #-2684] - str r0, [r5, #2444] - mov r0, r6 bl ftl_malloc str r0, [r4, #-524] - mov r0, r6 + mov r0, r7 bl ftl_malloc str r0, [r4, #-520] - mov r0, r6 + mov r0, r7 bl ftl_malloc str r0, [r4, #-516] ldr r0, [r4, #-2684] - mul r0, r0, r6 + mul r0, r0, r7 bl ftl_malloc str r0, [r4, #-2696] ldr r0, [r4, #-540] - mul r0, r0, r6 + mul r0, r0, r7 bl ftl_malloc str r0, [r4, #-512] - mov r0, r6 + mov r0, r7 bl ftl_malloc str r0, [r4, #-508] - mov r0, r6 + mov r0, r7 bl ftl_malloc - ldr r6, .L1127+8 str r0, [r4, #-504] ldr r0, [r4, #-2684] - mul r0, r9, r0 + mul r0, r8, r0 bl ftl_malloc - ldrh r3, [r6] - ldrh r7, [r7] - mul r7, r7, r3 + ldrh r3, [r5, r10] + ldrh r7, [r5, r9] + movw r9, #2334 str r0, [r4, #-2700] + mul r7, r7, r3 mov r0, r7 bl ftl_malloc str r0, [r4, #-500] - mov r0, r7, asl #3 + lsl r0, r7, #3 + ldr r7, .L1126+12 bl ftl_malloc - ldrh r3, [r6] - ldr r7, .L1127+12 + ldrh r3, [r5, r10] str r0, [r4, #-496] ldr r0, [r4, #-2684] mul r0, r0, r3 bl ftl_malloc - ldrh r3, [r6], #80 + ldrh r3, [r5, r10] str r0, [r4, #-2692] ldr r0, [r4, #-540] mul r0, r0, r3 bl ftl_malloc str r0, [r4, #-492] - ldrh r0, [r5, r8] - mov r0, r0, asl #1 + ldrh r0, [r5, r9] + lsl r0, r0, #1 uxth r0, r0 strh r0, [r7] @ movhi bl ftl_malloc str r0, [r4, #-484] ldrh r0, [r7] + ldr r3, .L1126+16 add r0, r0, #544 add r0, r0, #3 - mov r0, r0, lsr #9 + lsr r0, r0, #9 strh r0, [r7] @ movhi - mov r0, r0, asl #9 + and r0, r3, r0, lsl #9 bl ftl_malloc - ldrh fp, [r5, r8] - mov fp, fp, asl #1 + ldrh r10, [r5, r9] str r0, [r4, #-480] add r0, r0, #32 - str r0, [r4, #-3608] - mov r0, fp + str r0, [r4, #-3604] + lsl r10, r10, #1 + mov r0, r10 bl ftl_malloc str r0, [r4, #-476] - mov r0, fp + mov r0, r10 bl ftl_malloc - ldr fp, [r5, #2416] - mov fp, fp, asl #1 - str r0, [r4, #-3544] - mov r0, fp + ldr r10, [r5, #2420] + str r0, [r4, #-3540] + lsl r10, r10, #1 + mov r0, r10 bl ftl_malloc str r0, [r4, #-472] - mov r0, fp + mov r0, r10 bl ftl_malloc - movw fp, #2408 str r0, [r4, #-468] - ldrh r0, [r5, r8] - mov r0, r0, lsr #3 + movw r10, #2412 + ldrh r0, [r5, r9] + lsr r0, r0, #3 add r0, r0, #4 bl ftl_malloc - str r0, [r4, #-3368] - ldrh r0, [r5, fp] - mov r0, r0, asl #1 + str r0, [r5, #32] + ldrh r0, [r5, r10] + lsl r0, r0, #1 bl ftl_malloc - str r0, [r5, #2436] - ldrh r0, [r5, fp] - mov r0, r0, asl #1 + str r0, [r5, #2440] + ldrh r0, [r5, r10] + lsl r0, r0, #1 bl ftl_malloc str r0, [r4, #-464] - ldrh r0, [r5, fp] - movw fp, #2410 - mov r0, r0, asl #2 + ldrh r0, [r5, r10] + movw r10, #2414 + lsl r0, r0, #2 bl ftl_malloc str r0, [r4, #-460] - ldrh r0, [r5, fp] - mov r0, r0, asl #2 + ldrh r0, [r5, r10] + lsl r0, r0, #2 bl ftl_malloc - ldrh r2, [r5, fp] + ldrh r2, [r5, r10] mov r1, #0 - mov r2, r2, asl #2 str r0, [r4, #-456] + lsl r2, r2, #2 bl ftl_memset - movw r3, #2424 - ldrh fp, [r5, r3] - mov fp, fp, asl #2 - mov r0, fp + movw r3, #2428 + ldrh r10, [r5, r3] + lsl r10, r10, #2 + mov r0, r10 bl ftl_malloc str r0, [r4, #-452] - mov r0, fp + mov r0, r10 bl ftl_malloc - movw fp, #2426 str r0, [r4, #-448] - ldr r0, [r5, #2416] - mov r0, r0, asl #2 + movw r10, #2430 + ldr r0, [r5, #2420] + lsl r0, r0, #2 bl ftl_malloc str r0, [r4, #-444] - ldrh r0, [r5, fp] - mul r0, r9, r0 - bl ftl_malloc - ldrh r3, [r5, fp] - str r0, [r4, #-3380] ldrh r0, [r5, r10] + mul r0, r8, r0 + mov r8, r6 + add r6, r6, #56 + bl ftl_malloc + ldrh r3, [r5, r10] + str r0, [r4, #-3376] + ldrh r0, [r8], #84 mul r0, r0, r3 bl ftl_malloc - ldrh r3, [r5, r8] - movw r8, #2342 + ldrh r3, [r5, r9] + movw r9, #2346 str r0, [r4, #-440] mov r0, #6 mul r0, r0, r3 bl ftl_malloc - movw r3, #2386 - ldrh r3, [r5, r3] - add r3, r3, #31 - mov r3, r3, asr #5 - strh r3, [r7, #52]! @ movhi - str r0, [r4, #-3552] - ldrh r0, [r5, r8] + movw r3, #2388 + str r0, [r4, #-3548] + ldrh r0, [r5, r3] + ldrh r3, [r5, r9] + add r0, r0, #31 + asr r0, r0, #5 + strh r0, [r7, #52]! @ movhi mul r0, r0, r3 - mov r0, r0, asl #2 + lsl r0, r0, #2 bl ftl_malloc ldrh r2, [r7] - ldrh ip, [r5, r8] mov r3, #1 - mov r2, r2, asl #2 + ldrh ip, [r5, r9] + str r0, [r5, #2484] + lsl r2, r2, #2 mov r1, r2 - str r0, [r5, #2480] -.L1024: +.L1025: cmp r3, ip - bcs .L1125 - ldr r0, [r5, #2480] + bcc .L1026 + add r6, r6, r3, lsl #2 + ldr r3, .L1126+20 + mov r2, #0 + add r6, r6, #24 +.L1027: + cmp r3, r6 + bne .L1028 + ldr r3, [r4, #-472] + cmp r3, #0 + bne .L1029 +.L1031: + ldr r1, .L1126+24 + ldr r0, .L1126+28 + bl printk + mvn r0, #0 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1026: + ldr r0, [r5, #2484] add r3, r3, #1 add r0, r0, r1 add r1, r1, r2 - str r0, [r6, #4]! - b .L1024 -.L1125: - ldr r2, .L1127+16 - mov r1, #0 -.L1026: - cmp r3, #8 - addne r0, r2, r3, asl #2 - addne r3, r3, #1 - strne r1, [r0, #28] - bne .L1026 -.L1126: - ldr r2, [r4, #-472] - ldr r3, .L1127 - cmp r2, #0 - bne .L1028 -.L1030: - ldr r1, .L1127+20 - ldr r0, .L1127+24 - bl printk - mvn r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} + str r0, [r8, #4]! + b .L1025 .L1028: - ldr r2, [r3, #-468] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-452] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-444] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-3380] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-440] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-3552] - cmp r2, #0 - beq .L1030 - ldr r2, [r5, #2480] - cmp r2, #0 - beq .L1030 - ldr r3, [r3, #-3544] + str r2, [r6, #4]! + b .L1027 +.L1029: + ldr r3, [r4, #-468] cmp r3, #0 - beq .L1030 - ldr r2, [r4, #-2680] - ldr r3, .L1127 - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-2672] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-536] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-528] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-3612] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-2688] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-532] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-524] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-520] - cmp r2, #0 - beq .L1030 - ldr r3, [r3, #-516] + beq .L1031 + ldr r3, [r4, #-452] cmp r3, #0 - beq .L1030 - ldr r2, [r4, #-2696] - ldr r3, .L1127 - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-508] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-504] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-2700] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-500] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-496] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-2692] - cmp r2, #0 - beq .L1030 - ldr r2, [r3, #-3608] - cmp r2, #0 - beq .L1030 - ldr r3, [r3, #-484] + beq .L1031 + ldr r3, [r4, #-444] cmp r3, #0 - beq .L1030 - ldr r3, .L1127+4 - ldr r3, [r3, #2436] + beq .L1031 + ldr r3, [r4, #-3376] cmp r3, #0 - beq .L1030 - ldr r3, .L1127 + beq .L1031 + ldr r3, [r4, #-440] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-3548] + cmp r3, #0 + beq .L1031 + ldr r3, [r5, #2484] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-3540] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2680] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2672] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-536] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-528] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-3608] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2688] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-532] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-524] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-520] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-516] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2696] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-508] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-504] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2700] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-500] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-496] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-2692] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-3604] + cmp r3, #0 + beq .L1031 + ldr r3, [r4, #-484] + cmp r3, #0 + beq .L1031 + ldr r3, .L1126+4 + ldr r3, [r3, #2440] + cmp r3, #0 + beq .L1031 + ldr r3, .L1126 ldr r2, [r3, #-464] cmp r2, #0 - beq .L1030 + beq .L1031 ldr r2, [r3, #-460] cmp r2, #0 - beq .L1030 + beq .L1031 ldr r3, [r3, #-456] cmp r3, #0 - beq .L1030 + beq .L1031 mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1128: - .align 2 + pop {r4, r5, r6, r7, r8, r9, r10, pc} .L1127: + .align 2 +.L1126: .word .LANCHOR2 .word .LANCHOR0 .word .LANCHOR0+2400 .word .LANCHOR2-488 - .word .LANCHOR0+2452 + .word 33553920 + .word .LANCHOR0+2512 .word .LANCHOR3 .word .LC81 .fnend .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap + .syntax unified + .arm + .fpu softvfp .type FtlBbt2Bitmap, %function FtlBbt2Bitmap: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1135 - stmfd sp!, {r4, r5, r6, lr} + ldr r3, .L1134 + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r4, r0 - ldrh r2, [r3] - mov r0, r1 mov r5, r1 + mov r4, r0 mov r1, #0 + mov r0, r5 movw r6, #65535 - mov r2, r2, asl #2 + ldrh r2, [r3] + lsl r2, r2, #2 bl ftl_memset - add r3, r4, #1020 - ldr ip, .L1135+4 - add r3, r3, #2 - sub r1, r4, #2 + ldr ip, .L1134+4 + add r0, r4, #1020 + sub r2, r4, #2 + add r0, r0, #2 mov r4, #1 -.L1131: - ldrh r2, [r1, #2]! - cmp r2, r6 - ldmeqfd sp!, {r4, r5, r6, pc} - mov lr, r2, lsr #5 - and r2, r2, #31 - cmp r1, r3 - ldr r0, [r5, lr, asl #2] - orr r2, r0, r4, asl r2 - str r2, [r5, lr, asl #2] - ldrh r2, [ip, #6] - add r2, r2, #1 - strh r2, [ip, #6] @ movhi - bne .L1131 - ldmfd sp!, {r4, r5, r6, pc} -.L1136: - .align 2 +.L1130: + ldrh r3, [r2, #2]! + cmp r3, r6 + popeq {r4, r5, r6, pc} + lsr lr, r3, #5 + and r3, r3, #31 + cmp r2, r0 + ldr r1, [r5, lr, lsl #2] + orr r3, r1, r4, lsl r3 + str r3, [r5, lr, lsl #2] + ldrh r3, [ip, #6] + add r3, r3, #1 + strh r3, [ip, #6] @ movhi + bne .L1130 + pop {r4, r5, r6, pc} .L1135: + .align 2 +.L1134: .word .LANCHOR2-436 - .word .LANCHOR0+2452 + .word .LANCHOR0+2456 .fnend .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 2 .global FtlBbtMemInit + .syntax unified + .arm + .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, .L1138 - movw r3, #2452 + ldr r2, .L1137 + movw r3, #2456 mvn r1, #0 - add r2, r0, r3 - strh r1, [r0, r3] @ movhi + add r0, r2, r3 + strh r1, [r2, r3] @ movhi mov r3, #0 - add r0, r0, #2464 - strh r3, [r2, #6] @ movhi - mov r1, #255 mov r2, #16 + strh r3, [r0, #6] @ movhi + mov r1, #255 + add r0, r0, #12 b ftl_memset -.L1139: - .align 2 .L1138: + .align 2 +.L1137: .word .LANCHOR0 .fnend .size FtlBbtMemInit, .-FtlBbtMemInit .align 2 .global FtlFreeSysBlkQueueInit + .syntax unified + .arm + .fpu softvfp .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1142 - mov r2, #2048 - stmfd sp!, {r4, lr} + ldr r1, .L1141 + movw r2, #2516 + push {r4, lr} .save {r4, lr} mov r4, #0 + add r3, r1, r2 + strh r0, [r1, r2] @ movhi + mov r2, #2048 mov r1, r4 + add r0, r3, #8 strh r4, [r3, #2] @ movhi strh r4, [r3, #4] @ movhi strh r4, [r3, #6] @ movhi - strh r0, [r3], #8 @ movhi - mov r0, r3 bl ftl_memset mov r0, r4 - ldmfd sp!, {r4, pc} -.L1143: - .align 2 + pop {r4, pc} .L1142: - .word .LANCHOR0+2512 + .align 2 +.L1141: + .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit .align 2 .global ftl_free_no_use_map_blk + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 ldrh r2, [r0, #10] @@ -6884,165 +7300,148 @@ ldr r5, [r0, #20] ldr r7, [r0, #12] ldr r6, [r0, #24] - mov r2, r2, asl #1 + lsl r2, r2, #1 mov r0, r5 bl ftl_memset mov r2, #0 -.L1145: +.L1144: ldrh r1, [r4, #6] uxth r3, r2 cmp r1, r3 - bls .L1165 - ldr r0, [r6, r3, asl #2] + bhi .L1148 + ldr r2, .L1164 + movw r3, #2392 + mov r6, #0 + mov r8, r6 + mov r10, r6 + ldrh r2, [r2, r3] + ldrh r3, [r4] + lsl r3, r3, #1 + strh r2, [r5, r3] @ movhi + ldrh r9, [r5] +.L1149: + ldrh r3, [r4, #10] + uxth r1, r6 + cmp r3, r1 + bhi .L1153 + mov r0, r8 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1148: + uxth r3, r2 mov r1, #0 + ldr r0, [r6, r3, lsl #2] ubfx r0, r0, #10, #16 -.L1146: +.L1145: ldrh ip, [r4, #10] uxth r3, r1 cmp ip, r3 - bls .L1166 - mov r3, r3, asl #1 + addls r2, r2, #1 + bls .L1144 +.L1147: + uxth r3, r1 add r1, r1, #1 + lsl r3, r3, #1 ldrh ip, [r7, r3] - rsb lr, ip, r0 - cmp ip, #0 - clz lr, lr - mov lr, lr, lsr #5 - moveq lr, #0 + adds lr, ip, #0 + movne lr, #1 + cmp r0, ip + movne lr, #0 cmp lr, #0 - ldrneh ip, [r5, r3] + ldrhne ip, [r5, r3] addne ip, ip, #1 - strneh ip, [r5, r3] @ movhi - b .L1146 -.L1166: - add r2, r2, #1 + strhne ip, [r5, r3] @ movhi b .L1145 -.L1165: - ldr r2, .L1168 - movw r3, #2390 - mov r8, #0 - mov r1, r8 - mov fp, r8 - ldrh r2, [r2, r3] - ldrh r3, [r4] - mov r3, r3, asl #1 - strh r2, [r5, r3] @ movhi - ldrh r9, [r5] -.L1150: - ldrh r3, [r4, #10] - uxth r6, r8 - cmp r3, r6 - bls .L1167 - mov r2, r6, asl #1 - ldrh r3, [r5, r2] - cmp r9, r3 - bls .L1151 - ldrh r0, [r7, r2] - add r10, r7, r2 +.L1153: + uxth r3, r6 + lsl r3, r3, #1 + ldrh r2, [r5, r3] + cmp r9, r2 + bls .L1150 + ldrh r0, [r7, r3] + add fp, r7, r3 cmp r0, #0 - bne .L1152 - b .L1153 -.L1151: - cmp r3, #0 - bne .L1153 - ldrh r0, [r7, r2] - add r10, r7, r2 - cmp r0, #0 - movne r6, r1 - beq .L1153 - b .L1155 + bne .L1151 .L1152: - cmp r3, #0 - movne r1, r6 - movne r9, r3 - bne .L1153 - mov r9, r3 -.L1155: + add r6, r6, #1 + b .L1149 +.L1150: + cmp r2, #0 + bne .L1152 + ldrh r0, [r7, r3] + add fp, r7, r3 + cmp r0, #0 + beq .L1152 +.L1154: mov r1, #1 bl FtlFreeSysBlkQueueIn - strh fp, [r10] @ movhi + strh r10, [fp] @ movhi ldrh r3, [r4, #8] - mov r1, r6 sub r3, r3, #1 strh r3, [r4, #8] @ movhi -.L1153: - add r8, r8, #1 - b .L1150 -.L1167: - mov r0, r1 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1169: + b .L1152 +.L1151: + subs r9, r2, #0 + mov r8, r1 + beq .L1154 + b .L1152 +.L1165: .align 2 -.L1168: +.L1164: .word .LANCHOR0 .fnend .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global FtlL2PDataInit + .syntax unified + .arm + .fpu softvfp .type FtlL2PDataInit, %function FtlL2PDataInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r1, #0 - ldr r5, .L1175 - mvn r6, #0 - ldr r4, .L1175+4 - ldr r2, [r5, #2416] - ldr r0, [r4, #-468] - mov r2, r2, asl #1 + ldr r4, .L1170 + mvn r7, #0 + ldr r5, .L1170+4 + ldr r2, [r4, #2420] + add r6, r4, #2400 + ldr r0, [r5, #-468] + lsl r2, r2, #1 bl ftl_memset - movw r3, #2398 - movw r2, #2426 - ldrh r3, [r5, r3] - ldrh r2, [r5, r2] + movw r2, #2430 + ldrh r3, [r6] + ldrh r2, [r4, r2] mov r1, #255 - ldr r0, [r4, #-440] + ldr r0, [r5, #-440] mul r2, r2, r3 bl ftl_memset - ldr ip, .L1175+8 - mov r1, #0 - mov r3, r4 - sub r7, ip, #28 - mov r4, #12 - mov r5, r1 -.L1171: - ldrh r2, [ip] - add lr, r1, #1 - uxth r1, r1 - ldr r0, .L1175 - cmp r2, r1 - bls .L1174 - mul r0, r4, r1 - ldr r2, [r3, #-3380] - add r8, r2, r0 - str r5, [r8, #4] - strh r6, [r2, r0] @ movhi - ldr r2, [r3, #-3380] - add r0, r2, r0 - ldrh r2, [r7] - mul r2, r1, r2 - ldr r1, [r3, #-440] - bic r2, r2, #3 - add r2, r1, r2 - mov r1, lr - str r2, [r0, #8] - b .L1171 -.L1174: - ldr r2, .L1175+12 + mov r2, #0 + mov r3, r5 + mov r1, r6 + add ip, r6, #30 + mov r5, #12 + mov r6, r2 +.L1167: + ldrh r8, [ip] + uxth r0, r2 + add lr, r2, #1 + cmp r8, r0 + bhi .L1168 + ldr r2, .L1170+8 mvn r1, #0 strh r1, [r2, #2] @ movhi strh r1, [r2] @ movhi - ldr r1, [r0, #2416] + ldr r1, [r4, #2420] strh r1, [r2, #10] @ movhi - ldr r1, .L1175+16 + ldr r1, .L1170+12 strh r1, [r2, #4] @ movhi ldrh r1, [r2, #44] strh r1, [r2, #8] @ movhi - movw r1, #2424 - ldrh r1, [r0, r1] + movw r1, #2428 + ldrh r1, [r4, r1] strh r1, [r2, #6] @ movhi ldr r2, [r3, #-472] str r2, [r3, #-420] @@ -7052,236 +7451,249 @@ str r2, [r3, #-412] ldr r2, [r3, #-452] str r2, [r3, #-408] - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1176: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1168: + uxth r2, r2 + ldr r8, [r3, #-3376] + mul r0, r5, r2 + add r9, r8, r0 + str r6, [r9, #4] + strh r7, [r8, r0] @ movhi + ldr r8, [r3, #-3376] + add r0, r8, r0 + ldrh r8, [r1] + mul r2, r2, r8 + ldr r8, [r3, #-440] + bic r2, r2, #3 + add r2, r8, r2 + str r2, [r0, #8] + mov r2, lr + b .L1167 +.L1171: .align 2 -.L1175: +.L1170: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2426 .word .LANCHOR2-432 .word -3902 .fnend .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 .global FtlVariablesInit + .syntax unified + .arm + .fpu softvfp .type FtlVariablesInit, %function FtlVariablesInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mvn r3, #0 - ldr r5, .L1179 + ldr r5, .L1174 mov r4, #0 - ldr r6, .L1179+4 mov r1, r4 + movw r7, #2334 + ldr r6, .L1174+4 sub r2, r5, #380 - movw r7, #2330 str r3, [r5, #-368] strh r3, [r2] @ movhi - movw r3, #2434 + movw r3, #2438 strh r4, [r6, r3] @ movhi - movw r3, #2408 + movw r3, #2412 ldrh r2, [r6, r3] - ldr r0, [r6, #2436] + ldr r0, [r6, #2440] str r4, [r5, #-384] - mov r2, r2, asl #1 str r4, [r5, #-376] + lsl r2, r2, #1 str r4, [r5, #-372] - str r4, [r6, #2244] + str r4, [r6, #2248] bl ftl_memset ldrh r2, [r6, r7] mov r1, r4 - ldr r0, [r5, #-3608] - mov r2, r2, asl #1 + ldr r0, [r5, #-3604] + lsl r2, r2, #1 bl ftl_memset ldrh r2, [r6, r7] mov r1, r4 ldr r0, [r5, #-484] - mov r2, r2, asl #1 + lsl r2, r2, #1 bl ftl_memset + sub r0, r5, #3584 mov r1, r4 - sub r0, r5, #3600 mov r2, #48 + sub r0, r0, #12 bl ftl_memset - mov r1, r4 - mov r2, #512 sub r0, r5, #3232 + mov r2, #512 + mov r1, r4 + sub r0, r0, #4 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov r0, r4 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1180: + pop {r4, r5, r6, r7, r8, pc} +.L1175: .align 2 -.L1179: +.L1174: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlVariablesInit, .-FtlVariablesInit .align 2 .global SupperBlkListInit + .syntax unified + .arm + .fpu softvfp .type SupperBlkListInit, %function SupperBlkListInit: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2330 - ldr r10, .L1193 + movw r3, #2334 + ldr r6, .L1187 + mov r4, #0 mov r2, #6 - ldr r6, .L1193+4 + .pad #20 + sub sp, sp, #20 + ldr r5, .L1187+4 mov r1, #0 - .pad #28 - sub sp, sp, #28 - mov r7, #0 - ldrh r3, [r10, r3] - mov r4, r7 - ldr r0, [r6, #-3552] - mov r8, r7 - mov r9, r7 - mov r5, r6 + ldrh r3, [r6, r3] + mov r9, r4 + mov r10, r4 + ldr r0, [r5, #-3548] + sub r7, r5, #3520 mul r2, r2, r3 bl ftl_memset - sub r3, r6, #3520 - sub r1, r6, #3536 - mov fp, r6 - strh r7, [r3, #-8] @ movhi - sub r3, r6, #568 - str r7, [r6, #-3532] - str r7, [r6, #-3548] - str r7, [r6, #-3540] - strh r7, [r1] @ movhi - strh r7, [r3] @ movhi - str r10, [sp, #8] - str r1, [sp, #12] -.L1182: - ldr r3, .L1193+8 - uxth r7, r4 - sxth r10, r7 - ldrh r2, [r3] - cmp r10, r2 - bge .L1189 - sub r3, r3, #8 - ldr r2, .L1193+12 - mov ip, r7 + sub r3, r5, #568 + str r4, [r5, #-3528] + str r4, [r5, #-3544] + str r4, [r5, #-3536] + strh r4, [r7, #-12] @ movhi + strh r4, [r7, #-4] @ movhi + strh r4, [r3] @ movhi + str r6, [sp] +.L1177: + ldr r3, .L1187+8 + sxth r8, r4 ldrh r3, [r3] - str r3, [sp] - ldrh r3, [r2] - mov r2, #0 - mov r6, r2 - str r3, [sp, #4] -.L1190: + cmp r8, r3 + bge .L1184 + ldr r3, .L1187+12 + uxth r1, r4 + mov fp, #0 + mov r6, fp + str r1, [sp, #4] + ldrh r2, [r3] + add r3, r3, #66 + ldrh r3, [r3] + b .L1185 +.L1179: + str r3, [sp, #12] + add fp, fp, #1 ldr r3, [sp] - sxth r1, r2 - cmp r1, r3 - bge .L1192 - ldr r3, [sp, #8] - str r2, [sp, #20] - add r1, r3, r1 - str ip, [sp, #16] - ldrb r0, [r1, #2348] @ zero_extendqisi2 - mov r1, ip + str r2, [sp, #8] + add r0, r3, r1 + ldr r1, [sp, #4] + ldrb r0, [r0, #2350] @ zero_extendqisi2 bl V2P_block bl FtlBbmIsBadBlock + ldr r3, [sp, #12] cmp r0, #0 - ldr r2, [sp, #20] - ldr ip, [sp, #16] - ldreq r3, [sp, #4] - add r2, r2, #1 + ldr r2, [sp, #8] addeq r6, r3, r6 - uxtheq r6, r6 - b .L1190 -.L1192: + sxtheq r6, r6 +.L1185: + sxth r1, fp + cmp r1, r2 + blt .L1179 cmp r6, #0 - beq .L1185 - sxth r1, r6 + lsl fp, r8, #1 + ldreq r3, [r5, #-3540] + mvneq r2, #0 + strheq r2, [r3, fp] @ movhi + beq .L1181 + mov r1, r6 mov r0, #32768 bl __aeabi_idiv - uxth r6, r0 - b .L1186 -.L1185: - sxth r7, r7 - ldr r2, [r5, #-3544] - mvn r1, #0 - mov r7, r7, asl #1 - strh r1, [r2, r7] @ movhi -.L1186: - mov r1, r10, asl #1 - ldr r2, [r5, #-3552] - add r0, r1, r10 - add r2, r2, r0, asl #1 - strh r6, [r2, #4] @ movhi - ldr r2, .L1193+16 - ldrh r0, [r2] - cmp r10, r0 - beq .L1187 - ldrh r0, [r2, #48] - cmp r10, r0 - beq .L1187 - ldrh r2, [r2, #96] - cmp r10, r2 - beq .L1187 - ldr r3, [fp, #-3544] + sxth r6, r0 +.L1181: + ldr r2, [r5, #-3548] + add r3, fp, r8 + add r3, r2, r3, lsl #1 + strh r6, [r3, #4] @ movhi + ldrh r3, [r7] + cmp r8, r3 + beq .L1182 + ldr r3, .L1187+16 + ldrh r3, [r3] + cmp r8, r3 + beq .L1182 + ldr r3, .L1187+20 + ldrh r3, [r3] + cmp r8, r3 + beq .L1182 + ldr r3, [r5, #-3540] uxth r0, r4 - ldrh r3, [r3, r1] + ldrh r3, [r3, fp] cmp r3, #0 - bne .L1188 - add r8, r8, #1 - uxth r8, r8 - bl INSERT_FREE_LIST - b .L1187 -.L1188: + bne .L1183 add r9, r9, #1 uxth r9, r9 - bl INSERT_DATA_LIST -.L1187: + bl INSERT_FREE_LIST +.L1182: add r4, r4, #1 + b .L1177 +.L1183: + add r10, r10, #1 + uxth r10, r10 + bl INSERT_DATA_LIST b .L1182 -.L1189: - ldr r3, [sp, #12] +.L1184: mov r0, #0 - strh r9, [r3] @ movhi - ldr r3, .L1193+20 - strh r8, [r3, #-8] @ movhi - add sp, sp, #28 + strh r10, [r7, #-12] @ movhi + strh r9, [r7, #-4] @ movhi + add sp, sp, #20 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1194: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1188: .align 2 -.L1193: +.L1187: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2328 - .word .LANCHOR0+2388 - .word .LANCHOR2-3524 - .word .LANCHOR2-3520 + .word .LANCHOR0+2332 + .word .LANCHOR0+2324 + .word .LANCHOR2-3472 + .word .LANCHOR2-3424 .fnend .size SupperBlkListInit, .-SupperBlkListInit .align 2 .global FtlGcPageVarInit + .syntax unified + .arm + .fpu softvfp .type FtlGcPageVarInit, %function FtlGcPageVarInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r3, #0 - ldr r4, .L1197 - movw r5, #2392 - ldr r6, .L1197+4 + ldr r4, .L1191 + movw r5, #2394 mov r1, #255 + ldr r6, .L1191+4 sub r2, r4, #2672 ldr r0, [r4, #-2680] strh r3, [r2, #-4] @ movhi sub r2, r4, #2656 strh r3, [r2, #-12] @ movhi ldrh r2, [r6, r5] - mov r2, r2, asl #1 + lsl r2, r2, #1 bl ftl_memset ldrh r3, [r6, r5] mov r2, #12 @@ -7289,17 +7701,20 @@ mov r1, #255 mul r2, r2, r3 bl ftl_memset - ldmfd sp!, {r4, r5, r6, lr} + pop {r4, r5, r6, lr} b FtlGcBufInit -.L1198: +.L1192: .align 2 -.L1197: +.L1191: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 2 .global ftl_memcpy + .syntax unified + .arm + .fpu softvfp .type ftl_memcpy, %function ftl_memcpy: .fnstart @@ -7311,158 +7726,155 @@ .size ftl_memcpy, .-ftl_memcpy .align 2 .global FlashReadIdbData + .syntax unified + .arm + .fpu softvfp .type FlashReadIdbData, %function FlashReadIdbData: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} mov r2, #2048 - ldr r1, .L1202 + ldr r1, .L1196 bl ftl_memcpy mov r0, #0 - ldmfd sp!, {r3, pc} -.L1203: + pop {r4, pc} +.L1197: .align 2 -.L1202: +.L1196: .word .LANCHOR2-364 .fnend .size FlashReadIdbData, .-FlashReadIdbData .align 2 .global FlashLoadPhyInfoInRam + .syntax unified + .arm + .fpu softvfp .type FlashLoadPhyInfoInRam, %function FlashLoadPhyInfoInRam: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r4, #0 - ldr r8, .L1217 -.L1208: - mov r7, r4, asl #5 - ldr r1, .L1217+4 - add r0, r7, #1 - ldrb r2, [r8, r4, asl #5] @ zero_extendqisi2 - add r0, r8, r0 - ldr r6, .L1217+8 + ldr r5, .L1207 + ldr r9, .L1207+4 + add r6, r5, #504 +.L1201: + lsl r8, r4, #5 + ldrb r2, [r6, r4, lsl #5] @ zero_extendqisi2 + mov r1, r9 + add r0, r8, #1 + add r0, r6, r0 bl FlashMemCmp8 - add r9, r6, #508 - subs r5, r0, #0 - bne .L1205 - adds r9, r9, r7 - beq .L1211 - add r4, r6, r7 - mov r3, r5 - ldr r1, .L1217+12 - ldrb r2, [r4, #530] @ zero_extendqisi2 - b .L1210 -.L1205: - add r4, r4, #1 - cmp r4, #86 - bne .L1208 - b .L1211 -.L1216: + subs r7, r0, #0 + bne .L1199 + add r5, r5, r8 + ldr r2, .L1207+8 + ldrb r0, [r5, #526] @ zero_extendqisi2 + add r6, r6, r8 + mov r3, r7 + mov r1, r2 +.L1200: + ldrb ip, [r2, r3, lsl #5] @ zero_extendqisi2 + cmp ip, r0 + beq .L1203 add r3, r3, #1 cmp r3, #4 - beq .L1209 -.L1210: - ldrb r0, [r1, r3, asl #5] @ zero_extendqisi2 - cmp r0, r2 - bne .L1216 -.L1209: - ldr r4, .L1217+16 + bne .L1200 +.L1203: + ldr r4, .L1207+12 + add r1, r1, r3, lsl #5 mov r2, #32 - ldr r1, .L1217+12 - ldr r0, .L1217+20 - add r1, r1, r3, asl #5 + ldr r0, .L1207+16 bl ftl_memcpy - mov r0, r4 - mov r1, r9 mov r2, #32 + mov r1, r6 + mov r0, r4 bl ftl_memcpy ldrh r0, [r4, #10] bl FlashBlockAlignInit - b .L1206 -.L1211: - mvn r5, #0 -.L1206: - mov r0, r5 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L1218: + b .L1198 +.L1199: + add r4, r4, #1 + cmp r4, #86 + bne .L1201 + mvn r7, #0 +.L1198: + mov r0, r7 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1208: .align 2 -.L1217: - .word .LANCHOR1+508 - .word .LANCHOR0+2068 +.L1207: .word .LANCHOR1 - .word .LANCHOR1+3260 - .word .LANCHOR1+472 - .word .LANCHOR0+48 + .word .LANCHOR0+2072 + .word .LANCHOR1+3256 + .word .LANCHOR1+468 + .word .LANCHOR0+52 .fnend .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .align 2 .global NandcCopy1KB + .syntax unified + .arm + .fpu softvfp .type NandcCopy1KB, %function NandcCopy1KB: .fnstart @ args = 4, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 cmp r1, #1 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r4, r2 add r2, r0, #4096 - ldr r5, [sp, #16] add r6, r0, #512 - add r2, r2, r4, asl #9 - bne .L1220 + add r0, r2, r4, lsl #9 + ldr r5, [sp, #16] + bne .L1210 cmp r3, #0 - beq .L1221 - mov r0, r2 + beq .L1211 + mov r2, #1024 mov r1, r3 - mov r2, #1024 bl ftl_memcpy -.L1221: +.L1211: cmp r5, #0 - ldmeqfd sp!, {r4, r5, r6, pc} - ldrb r3, [r5, #2] @ zero_extendqisi2 - mov r4, r4, lsr #1 - ldrb r2, [r5, #1] @ zero_extendqisi2 - add r4, r4, r4, asl #1 - mov r3, r3, asl #16 - orr r2, r3, r2, asl #8 - ldrb r3, [r5] @ zero_extendqisi2 - orr r3, r2, r3 - ldrb r2, [r5, #3] @ zero_extendqisi2 - orr r3, r3, r2, asl #24 - str r3, [r6, r4, asl #4] - ldmfd sp!, {r4, r5, r6, pc} -.L1220: + lsrne r4, r4, #1 + ldrne r3, [r5] @ unaligned + addne r4, r4, r4, lsl #1 + strne r3, [r6, r4, lsl #4] + pop {r4, r5, r6, pc} +.L1210: cmp r3, #0 - beq .L1224 - mov r1, r2 - mov r0, r3 + beq .L1214 + mov r1, r0 mov r2, #1024 + mov r0, r3 bl ftl_memcpy -.L1224: +.L1214: cmp r5, #0 - ldmeqfd sp!, {r4, r5, r6, pc} - mov r4, r4, lsr #1 - add r4, r4, r4, asl #1 - ldr r3, [r6, r4, asl #4] - mov r2, r3, lsr #8 + popeq {r4, r5, r6, pc} + lsr r4, r4, #1 + add r4, r4, r4, lsl #1 + ldr r3, [r6, r4, lsl #4] strb r3, [r5] + lsr r2, r3, #8 strb r2, [r5, #1] - mov r2, r3, lsr #16 - mov r3, r3, lsr #24 + lsr r2, r3, #16 + lsr r3, r3, #24 strb r2, [r5, #2] strb r3, [r5, #3] - ldmfd sp!, {r4, r5, r6, pc} + pop {r4, r5, r6, pc} .fnend .size NandcCopy1KB, .-NandcCopy1KB .align 2 .global ftl_memcpy32 + .syntax unified + .arm + .fpu softvfp .type ftl_memcpy32, %function ftl_memcpy32: .fnstart @@ -7470,18 +7882,22 @@ @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. mov r3, #0 -.L1237: +.L1227: cmp r3, r2 - ldrne ip, [r1, r3, asl #2] - strne ip, [r0, r3, asl #2] - addne r3, r3, #1 - bne .L1237 -.L1239: + bne .L1228 bx lr +.L1228: + ldr ip, [r1, r3, lsl #2] + str ip, [r0, r3, lsl #2] + add r3, r3, #1 + b .L1227 .fnend .size ftl_memcpy32, .-ftl_memcpy32 .align 2 .global ftl_memcmp + .syntax unified + .arm + .fpu softvfp .type ftl_memcmp, %function ftl_memcmp: .fnstart @@ -7493,52 +7909,60 @@ .size ftl_memcmp, .-ftl_memcmp .align 2 .global timer_get_time + .syntax unified + .arm + .fpu softvfp .type timer_get_time, %function timer_get_time: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L1242 + ldr r3, .L1231 ldr r0, [r3] b jiffies_to_msecs -.L1243: +.L1232: .align 2 -.L1242: +.L1231: .word jiffies .fnend .size timer_get_time, .-timer_get_time .align 2 .global FlashSramLoadStore + .syntax unified + .arm + .fpu softvfp .type FlashSramLoadStore, %function FlashSramLoadStore: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L1248 + ldr ip, .L1238 cmp r2, #0 moveq r2, r3 ldr ip, [ip, #1684] add ip, ip, #4096 - add r1, ip, r1 - beq .L1247 - str lr, [sp, #-4]! + add ip, ip, r1 + moveq r1, ip + strne lr, [sp, #-4]! .save {lr} - mov lr, r0 - mov r0, r1 - mov r1, lr - ldr lr, [sp], #4 - mov r2, r3 -.L1247: + movne r1, r0 + ldrne lr, [sp], #4 + movne r2, r3 + movne r0, ip +.L1237: b ftl_memcpy -.L1249: +.L1239: .align 2 -.L1248: +.L1238: .word .LANCHOR2 .fnend .size FlashSramLoadStore, .-FlashSramLoadStore .align 2 .global FlashCs123Init + .syntax unified + .arm + .fpu softvfp .type FlashCs123Init, %function FlashCs123Init: .fnstart @@ -7549,7 +7973,51 @@ .fnend .size FlashCs123Init, .-FlashCs123Init .align 2 + .global ftl_dma32_malloc + .syntax unified + .arm + .fpu softvfp + .type ftl_dma32_malloc, %function +ftl_dma32_malloc: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + cmp r0, #8192 + ble .L1242 + b ftl_malloc +.L1242: + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + add r4, r0, #63 + ldr r5, .L1246 + bic r4, r4, #63 + ldr r3, [r5, #1688] + cmp r4, r3 + ble .L1243 + mov r0, #16384 + bl ftl_malloc + mov r3, #16384 + str r0, [r5, #1692] + str r3, [r5, #1688] +.L1243: + ldr r3, [r5, #1688] + ldr r0, [r5, #1692] + sub r3, r3, r4 + add r4, r0, r4 + str r3, [r5, #1688] + str r4, [r5, #1692] + pop {r4, r5, r6, pc} +.L1247: + .align 2 +.L1246: + .word .LANCHOR2 + .fnend + .size ftl_dma32_malloc, .-ftl_dma32_malloc + .align 2 .global rk_nand_suspend + .syntax unified + .arm + .fpu softvfp .type rk_nand_suspend, %function rk_nand_suspend: .fnstart @@ -7561,6 +8029,9 @@ .size rk_nand_suspend, .-rk_nand_suspend .align 2 .global rk_nand_resume + .syntax unified + .arm + .fpu softvfp .type rk_nand_resume, %function rk_nand_resume: .fnstart @@ -7572,23 +8043,29 @@ .size rk_nand_resume, .-rk_nand_resume .align 2 .global rk_ftl_get_capacity + .syntax unified + .arm + .fpu softvfp .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L1254 - ldr r0, [r3, #2428] + ldr r3, .L1251 + ldr r0, [r3, #2432] bx lr -.L1255: +.L1252: .align 2 -.L1254: +.L1251: .word .LANCHOR0 .fnend .size rk_ftl_get_capacity, .-rk_ftl_get_capacity .align 2 .global rk_nandc_get_irq_status + .syntax unified + .arm + .fpu softvfp .type rk_nandc_get_irq_status, %function rk_nandc_get_irq_status: .fnstart @@ -7601,6 +8078,9 @@ .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status .align 2 .global rknand_proc_ftlread + .syntax unified + .arm + .fpu softvfp .type rknand_proc_ftlread, %function rknand_proc_ftlread: .fnstart @@ -7612,6 +8092,9 @@ .size rknand_proc_ftlread, .-rknand_proc_ftlread .align 2 .global ReadFlashInfo + .syntax unified + .arm + .fpu softvfp .type ReadFlashInfo, %function ReadFlashInfo: .fnstart @@ -7623,266 +8106,275 @@ .size ReadFlashInfo, .-ReadFlashInfo .align 2 .global rknand_print_hex + .syntax unified + .arm + .fpu softvfp .type rknand_print_hex, %function rknand_print_hex: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r5, #0 - mov r9, r0 + ldr r7, .L1266 + mov r10, r0 mov r6, r1 - mov r7, r2 - mov r8, r3 + mov r8, r2 + ldr fp, .L1266+4 + mov r9, r3 mov r4, r5 -.L1260: - cmp r4, r8 - beq .L1269 +.L1257: + cmp r4, r9 + bne .L1263 + ldr r1, .L1266+4 + ldr r0, .L1266+8 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + b printk +.L1263: cmp r5, #0 - bne .L1261 - ldr r0, .L1270 - mov r1, r9 - mov r2, r6 + bne .L1258 mov r3, r4 + mov r2, r6 + mov r1, r10 + ldr r0, .L1266+12 bl printk -.L1261: - cmp r7, #4 - ldreq r0, .L1270+4 - ldreq r1, [r6, r4, asl #2] - beq .L1268 - cmp r7, #2 - moveq r3, r4, asl #1 - ldreq r0, .L1270+4 - ldreqsh r1, [r6, r3] - ldrne r0, .L1270+4 - ldrneb r1, [r6, r4] @ zero_extendqisi2 -.L1268: +.L1258: + cmp r8, #4 + ldreq r1, [r6, r4, lsl #2] + beq .L1265 + cmp r8, #2 + lsleq r3, r4, #1 + ldrbne r1, [r6, r4] @ zero_extendqisi2 + ldrsheq r1, [r6, r3] +.L1265: + mov r0, r7 add r5, r5, #1 bl printk cmp r5, #15 - bls .L1265 - ldr r0, .L1270+8 + bls .L1262 mov r5, #0 - ldr r1, .L1270+12 + mov r1, fp + ldr r0, .L1266+8 bl printk -.L1265: +.L1262: add r4, r4, #1 - b .L1260 -.L1269: - ldr r0, .L1270+8 - ldr r1, .L1270+12 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - b printk -.L1271: + b .L1257 +.L1267: .align 2 -.L1270: - .word .LC82 +.L1266: .word .LC83 - .word .LC76 .word .LC84 + .word .LC77 + .word .LC82 .fnend .size rknand_print_hex, .-rknand_print_hex .align 2 .global HynixGetReadRetryDefault + .syntax unified + .arm + .fpu softvfp .type HynixGetReadRetryDefault, %function HynixGetReadRetryDefault: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - cmp r0, #2 - ldr r7, .L1381 mvn r3, #83 + ldr r7, .L1384 + cmp r0, #2 mvn r1, #82 mvn r2, #81 - .pad #44 - sub sp, sp, #44 + .pad #60 + sub sp, sp, #60 mov r4, r0 - strb r3, [r7, #1214] - mvn r3, #80 - strb r0, [r7, #1210] - strb r1, [r7, #1215] - strb r2, [r7, #1216] - strb r3, [r7, #1217] - bne .L1273 - mvn r3, #88 - strb r3, [r7, #1214] - ldr r3, .L1381+4 - mvn r2, #8 - mov r5, #7 - strb r2, [r3, #3405] - b .L1334 -.L1273: - cmp r0, #3 - bne .L1275 - mvn r3, #79 - strb r3, [r7, #1214] - mvn r3, #78 - strb r3, [r7, #1215] - mvn r3, #77 - strb r3, [r7, #1216] - mvn r3, #76 - strb r3, [r7, #1217] - mvn r3, #75 - strb r3, [r7, #1218] - mvn r3, #74 - strb r3, [r7, #1219] - mvn r3, #73 strb r3, [r7, #1220] - mvn r3, #72 - b .L1375 -.L1275: - cmp r0, #4 - bne .L1276 - mvn r0, #51 - strb r1, [r7, #1219] - strb r0, [r7, #1214] - mvn r0, #64 - strb r2, [r7, #1220] - strb r0, [r7, #1215] - mvn r0, #85 + mvn r3, #80 strb r0, [r7, #1216] - mvn r0, #84 - strb r0, [r7, #1217] - mvn r0, #50 - strb r0, [r7, #1218] -.L1375: - mov r5, #8 + strb r1, [r7, #1221] + strb r2, [r7, #1222] + strb r3, [r7, #1223] + bne .L1269 + mvn r3, #88 + mov r5, #7 + strb r3, [r7, #1220] + mvn r2, #8 + ldr r3, .L1384+4 + strb r2, [r3, #3401] +.L1334: + mov r6, #4 + b .L1270 +.L1269: + cmp r0, #3 + bne .L1271 + mvn r3, #79 + strb r3, [r7, #1220] + mvn r3, #78 strb r3, [r7, #1221] + mvn r3, #77 + strb r3, [r7, #1222] + mvn r3, #76 + strb r3, [r7, #1223] + mvn r3, #75 + strb r3, [r7, #1224] + mvn r3, #74 + strb r3, [r7, #1225] + mvn r3, #73 + strb r3, [r7, #1226] + mvn r3, #72 +.L1379: + mov r5, #8 + strb r3, [r7, #1227] mov r6, r5 - b .L1274 -.L1276: +.L1270: + sub r3, r4, #1 + cmp r3, #1 + bhi .L1276 + ldr fp, .L1384+8 + mov r10, #0 + ldr r2, .L1384+12 +.L1277: + ldrb r1, [r7, #2234] @ zero_extendqisi2 + uxtb r3, r10 + cmp r1, r3 + bhi .L1283 +.L1284: + ldr r3, .L1384 + strb r6, [r3, #1217] + strb r5, [r3, #1218] + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1271: + cmp r0, #4 + bne .L1272 + mvn r0, #51 + strb r1, [r7, #1225] + strb r0, [r7, #1220] + mvn r0, #64 + strb r0, [r7, #1221] + mvn r0, #85 + strb r0, [r7, #1222] + mvn r0, #84 + strb r0, [r7, #1223] + mvn r0, #50 + strb r0, [r7, #1224] + strb r2, [r7, #1226] + b .L1379 +.L1272: cmp r0, #5 - bne .L1277 + bne .L1273 mov r3, #56 mov r5, #8 - strb r3, [r7, #1214] + strb r3, [r7, #1220] mov r3, #57 - strb r3, [r7, #1215] + strb r3, [r7, #1221] mov r3, #58 - strb r3, [r7, #1216] + strb r3, [r7, #1222] mov r3, #59 - strb r3, [r7, #1217] + strb r3, [r7, #1223] b .L1334 -.L1277: +.L1273: cmp r0, #6 - bne .L1278 + bne .L1274 mov r3, #14 mov r5, #12 - strb r3, [r7, #1214] + strb r3, [r7, #1220] mov r3, #15 - strb r3, [r7, #1215] + strb r3, [r7, #1221] mov r3, #16 - strb r3, [r7, #1216] + strb r3, [r7, #1222] mov r3, #17 - strb r3, [r7, #1217] + strb r3, [r7, #1223] b .L1334 -.L1278: +.L1274: cmp r0, #7 - bne .L1279 + bne .L1275 mvn r3, #79 mov r5, #12 - strb r3, [r7, #1214] - mov r6, #10 - mvn r3, #78 - strb r3, [r7, #1215] - mvn r3, #77 - strb r3, [r7, #1216] - mvn r3, #76 - strb r3, [r7, #1217] - mvn r3, #75 - strb r3, [r7, #1218] - mvn r3, #74 - strb r3, [r7, #1219] - mvn r3, #73 strb r3, [r7, #1220] - mvn r3, #72 + mvn r3, #78 strb r3, [r7, #1221] - mvn r3, #43 + mvn r3, #77 strb r3, [r7, #1222] - mvn r3, #42 + mvn r3, #76 strb r3, [r7, #1223] - b .L1274 -.L1279: + mvn r3, #75 + strb r3, [r7, #1224] + mvn r3, #74 + strb r3, [r7, #1225] + mvn r3, #73 + strb r3, [r7, #1226] + mvn r3, #72 + strb r3, [r7, #1227] + mvn r3, #43 + strb r3, [r7, #1228] + mvn r3, #42 + strb r3, [r7, #1229] + mov r6, #10 + b .L1270 +.L1275: cmp r0, #8 mov r5, #7 bne .L1334 mov r3, #6 - strb r5, [r7, #1215] - strb r3, [r7, #1214] - mov r5, #50 + strb r5, [r7, #1221] + strb r3, [r7, #1220] mov r3, #9 - strb r0, [r7, #1216] - strb r3, [r7, #1217] - mov r6, #5 + strb r3, [r7, #1223] mov r3, #10 - strb r3, [r7, #1218] - b .L1274 -.L1334: - mov r6, #4 -.L1274: - sub r3, r4, #1 - cmp r3, #1 - bhi .L1371 - ldr r10, .L1381+8 - mov r9, #0 -.L1280: - ldrb r1, [r7, #2230] @ zero_extendqisi2 - uxtb r2, r9 - ldr r3, .L1381 - cmp r1, r2 - bls .L1287 - add r2, r3, r2 - ldr r4, .L1381+12 - ldr r1, .L1381+16 - mov ip, #55 - ldrb r2, [r2, #2232] @ zero_extendqisi2 - add r3, r3, r2, asl #3 - add r4, r4, r2, asl #6 - add r4, r4, #20 - ldrb r8, [r3, #16] @ zero_extendqisi2 - ldr r0, [r3, #12] - mov fp, r4 - mov r2, r4 - add r8, r0, r8, asl #8 -.L1282: - str ip, [r8, #2056] - mov r0, #80 - ldrb r3, [r1, #1]! @ zero_extendqisi2 - str r2, [sp, #12] - str ip, [sp, #8] - str r3, [r8, #2052] - str r1, [sp, #4] - str r1, [sp, #16] - bl NandcDelayns - ldr r3, [r8, #2048] - ldr r2, [sp, #12] - ldmib sp, {r1, ip} - strb r3, [r2], #1 - rsb r3, r4, r2 - uxtb r3, r3 - cmp r3, r6 - bcc .L1282 - mov r2, #0 + strb r0, [r7, #1222] + mov r5, #50 + strb r3, [r7, #1224] + mov r6, #5 + b .L1270 .L1283: - add r0, r10, r2 + add r3, r7, r3 + mov r8, #0 + ldrb r3, [r3, #2236] @ zero_extendqisi2 + mov r1, #55 + ldr r9, [r7, r3, lsl #3] + add r4, fp, r3, lsl #6 + add r3, r7, r3, lsl #3 + ldrb r3, [r3, #4] @ zero_extendqisi2 + add r4, r4, #20 + add r9, r9, r3, lsl #8 +.L1278: + add r3, fp, r8 + str r1, [r9, #2056] + ldrb r3, [r3, #4] @ zero_extendqisi2 + mov r0, #80 + str r2, [sp, #4] + str r1, [sp] + str r3, [r9, #2052] + bl ndelay + ldr r3, [r9, #2048] + ldm sp, {r1, r2} + strb r3, [r4, r8] + add r8, r8, #1 + uxtb r3, r8 + cmp r6, r3 + bhi .L1278 + mov r0, r4 + mov r1, #0 +.L1281: mov r3, #1 -.L1284: - ldrb r1, [r0, r3, asl #2] @ zero_extendqisi2 - ldrb ip, [fp] @ zero_extendqisi2 - add r1, r1, ip - strb r1, [fp, r3, asl #3] + add lr, r2, r1 +.L1280: + ldrb ip, [lr, r3, lsl #2] @ zero_extendqisi2 + ldrb r8, [r0] @ zero_extendqisi2 + add ip, ip, r8 + strb ip, [r0, r3, lsl #3] add r3, r3, #1 cmp r3, #7 - bne .L1284 - add r2, r2, #1 - add fp, fp, #1 - cmp r2, #4 - bne .L1283 + bne .L1280 + add r1, r1, #1 + add r0, r0, #1 + cmp r1, #4 + bne .L1281 mov r3, #0 - add r9, r9, #1 + add r10, r10, #1 strb r3, [r4, #16] strb r3, [r4, #24] strb r3, [r4, #32] @@ -7890,102 +8382,71 @@ strb r3, [r4, #48] strb r3, [r4, #41] strb r3, [r4, #49] - b .L1280 -.L1371: + b .L1277 +.L1276: sub r3, r4, #3 cmp r3, #5 - bhi .L1287 - smulbb r2, r6, r5 - mov r3, r2, asl #4 - mov r2, r2, asr #1 - str r3, [sp, #36] - mov r3, r2, asl #1 - str r3, [sp, #8] + bhi .L1284 + smulbb r3, r6, r5 + ldr r8, .L1384 + asr r2, r3, #1 + lsl r3, r3, #4 + str r3, [sp, #48] + lsl r3, r2, #2 + str r2, [sp, #4] + str r3, [sp, #40] + lsl r3, r2, #1 + str r3, [sp, #28] mov r3, #0 -.L1379: - str r3, [sp, #16] - ldrb r3, [sp, #16] @ zero_extendqisi2 - str r3, [sp, #12] - ldr r3, .L1381 - ldr r2, [sp, #12] - ldrb r3, [r3, #2230] @ zero_extendqisi2 + str r3, [sp, #24] + add r3, r8, #1216 + add r3, r3, #28 + str r3, [sp, #52] +.L1285: + ldrb r3, [sp, #24] @ zero_extendqisi2 + str r3, [sp, #8] + ldr r2, [sp, #8] + ldrb r3, [r8, #2234] @ zero_extendqisi2 cmp r3, r2 - bhi .L1332 -.L1287: - ldr r3, .L1381 - strb r6, [r3, #1211] - strb r5, [r3, #1212] - add sp, sp, #44 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1332: - ldr r2, [sp, #12] - ldr r3, .L1381 - add r3, r3, r2 - ldrb r10, [r3, #2232] @ zero_extendqisi2 - ldr r3, .L1381 - add r3, r3, r10, asl #3 - mov r0, r10 - ldrb fp, [r3, #16] @ zero_extendqisi2 - ldr r8, [r3, #12] + bls .L1284 + ldr r3, [sp, #8] + add r3, r8, r3 + ldrb r9, [r3, #2236] @ zero_extendqisi2 + ldr fp, [r8, r9, lsl #3] + mov r0, r9 + add r3, r8, r9, lsl #3 + ldrb r10, [r3, #4] @ zero_extendqisi2 mov r3, #255 - mov r9, fp, asl #8 - add r7, r8, r9 + add r7, fp, r10, lsl #8 str r3, [r7, #2056] bl NandcWaitFlashReady cmp r4, #7 - ldreq r3, .L1381+12 - moveq r7, #160 - mlaeq r7, r7, r10, r3 - addeq r3, r7, #28 - beq .L1376 -.L1289: - cmp r4, #8 - beq .L1291 - ldr r3, .L1381+12 - add r7, r3, r10, asl #6 - add r3, r7, #20 -.L1376: + bne .L1286 + ldr r3, .L1384+8 + mov r0, #160 + mla r0, r0, r9, r3 + add r3, r0, #28 +.L1380: str r3, [sp, #20] cmp r4, #4 - add r3, r8, fp, asl #8 + add r3, fp, r10, lsl #8 mov r2, #54 str r2, [r3, #2056] - bne .L1292 - add r9, r8, r9 - mov r3, #255 - str r3, [r9, #2052] - mov r3, #64 - str r3, [r9, #2048] - mov r3, #204 - b .L1377 -.L1292: - sub r2, r4, #5 - cmp r2, #1 - bhi .L1294 - ldr r2, .L1381 - ldrb r2, [r2, #1214] @ zero_extendqisi2 + bne .L1289 + mov r2, #255 str r2, [r3, #2052] - mov r2, #82 + mov r2, #64 str r2, [r3, #2048] - b .L1293 -.L1294: - cmp r4, #7 - bne .L1293 - add r9, r8, r9 - mov r3, #174 - str r3, [r9, #2052] - mov r3, #0 - str r3, [r9, #2048] - mov r3, #176 -.L1377: - str r3, [r9, #2052] - mov r3, #77 - str r3, [r9, #2048] -.L1293: - add r3, r8, fp, asl #8 - cmp r4, #6 + mov r2, #204 +.L1381: + str r2, [r3, #2052] + mov r2, #77 +.L1382: + str r2, [r3, #2048] +.L1290: + add r3, fp, r10, lsl #8 mov r2, #22 + cmp r4, #6 str r2, [r3, #2056] mov r2, #23 str r2, [r3, #2056] @@ -8004,174 +8465,153 @@ mov r2, #0 str r2, [r3, #2052] .L1333: - add r3, r8, fp, asl #8 + add r3, fp, r10, lsl #8 mov r2, #48 - mov r0, r10 + mov r0, r9 str r2, [r3, #2056] bl NandcWaitFlashReady sub r3, r4, #5 - cmp r3, #1 - movhi r3, #0 - movls r3, #1 - str r3, [sp, #24] - sub r3, r4, #8 - clz r3, r3 - mov r3, r3, lsr #5 - str r3, [sp, #4] - ldr r2, [sp, #4] - ldr r3, [sp, #24] - orrs r3, r3, r2 - movne ip, #16 - bne .L1297 + cmp r4, #8 + cmpne r3, #1 + str r3, [sp, #44] + movls r2, #16 + bls .L1294 cmp r4, #7 - movne ip, #2 - moveq ip, #32 -.L1297: - ldr r3, .L1381+20 - add r0, r8, fp, asl #8 - ldr r3, [r3, #1688] - mov r1, r3 -.L1298: - ldr r2, [r0, #2048] - strb r2, [r1], #1 - rsb r2, r3, r1 - uxtb r2, r2 - cmp r2, ip - bcc .L1298 - ldr r2, [sp, #4] - cmp r2, #0 - beq .L1299 + moveq r2, #32 + movne r2, #2 +.L1294: + ldr r3, .L1384+16 + sub r2, r2, #1 + add ip, fp, r10, lsl #8 + ldr r3, [r3, #1696] + str ip, [sp] + sub r1, r3, #1 + uxtab r2, r3, r2 + mov r0, r1 +.L1295: + ldr ip, [sp] + ldr ip, [ip, #2048] + strb ip, [r0, #1]! + cmp r2, r0 + bne .L1295 + cmp r4, #8 + bne .L1296 mov r2, #0 -.L1301: - ldrb ip, [r3, r2, asl #2] @ zero_extendqisi2 +.L1298: + ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2 uxtb r1, r2 - cmp ip, #50 - beq .L1300 - add ip, r3, r2, asl #2 - ldrb ip, [ip, #1] @ zero_extendqisi2 - cmp ip, #5 - beq .L1300 + cmp r0, #50 + beq .L1297 + add r0, r3, r2, lsl #2 + ldrb r0, [r0, #1] @ zero_extendqisi2 + cmp r0, #5 + beq .L1297 add r2, r2, #1 cmp r2, #8 - bne .L1301 - b .L1302 -.L1300: - cmp r1, #6 - bls .L1303 -.L1302: - ldr r0, .L1381+24 - mov r1, #0 - bl printk -.L1304: - b .L1304 + bne .L1298 .L1299: + mov r1, #0 + ldr r0, .L1384+20 + bl printk +.L1301: + b .L1301 +.L1286: + cmp r4, #8 + beq .L1288 + ldr r3, .L1384+8 + add r0, r3, r9, lsl #6 + add r3, r0, #20 + b .L1380 +.L1289: + sub r2, r4, #5 + cmp r2, #1 + ldrbls r2, [r8, #1220] @ zero_extendqisi2 + strls r2, [r3, #2052] + movls r2, #82 + bls .L1382 cmp r4, #7 - bne .L1305 - ldr r2, [sp, #4] -.L1307: - ldrb ip, [r3, r2, asl #2] @ zero_extendqisi2 - uxtb r1, r2 - cmp ip, #12 - beq .L1306 - add ip, r3, r2, asl #2 - ldrb ip, [ip, #1] @ zero_extendqisi2 - cmp ip, #10 - beq .L1306 - add r2, r2, #1 - cmp r2, #8 - bne .L1307 - b .L1308 -.L1306: - cmp r1, #7 - bne .L1303 -.L1308: - ldr r0, .L1381+24 - mov r1, #0 - bl printk -.L1309: - b .L1309 -.L1305: - cmp r4, #6 - bne .L1303 - sub r2, r3, #1 - add r3, r3, #7 -.L1310: - ldrb r1, [r2, #1]! @ zero_extendqisi2 - cmp r1, #12 - beq .L1303 - ldrb r1, [r2, #8] @ zero_extendqisi2 - cmp r1, #4 - beq .L1303 - cmp r2, r3 - bne .L1310 - ldr r0, .L1381+24 - mov r1, #0 - bl printk -.L1312: - b .L1312 -.L1303: - ldr r1, .L1381+20 - ldr ip, [sp, #36] - ldr r2, [r1, #1688] - add ip, r2, ip + bne .L1290 + mov r2, #174 + str r2, [r3, #2052] + mov r2, #0 + str r2, [r3, #2048] + mov r2, #176 + b .L1381 +.L1297: + cmp r1, #6 + bhi .L1299 +.L1300: + ldr r1, .L1384+16 + ldr r2, [r1, #1696] mov r3, r2 +.L1310: + ldr ip, [sp, #48] + sub r0, r3, r2 + cmp r0, ip + blt .L1311 + ldr r3, [sp, #28] + ldr r1, [r1, #1696] + add r0, r1, r3 + mov r3, #8 .L1313: - cmp r3, ip - ldrne lr, [r0, #2048] - strneb lr, [r3], #1 + mov lr, r0 + mov ip, #0 +.L1312: + ldrh r7, [lr] + add ip, ip, #1 + mvn r7, r7 + strh r7, [lr], #2 @ movhi + ldr r7, [sp, #4] + cmp r7, ip + bgt .L1312 + ldr ip, [sp, #40] + subs r3, r3, #1 + add r0, r0, ip bne .L1313 -.L1380: - ldr r3, [r1, #1688] - mov r0, #8 - ldr r1, [sp, #8] - add r1, r3, r1 - str r1, [sp, #28] -.L1316: - ldr ip, [sp, #8] - add lr, r1, ip -.L1315: - ldrh ip, [r1] - mvn ip, ip - strh ip, [r1], #2 @ movhi - cmp r1, lr - bne .L1315 - ldr ip, [sp, #8] - subs r0, r0, #1 - add r1, r1, ip - bne .L1316 -.L1317: + str r1, [sp, #12] + str r3, [sp, #16] +.L1319: mov ip, #0 mov r0, ip -.L1320: - mov r1, #1 - mov lr, #0 - mov r1, r1, asl r0 - mov r7, #16 - str r7, [sp, #32] - mov r7, lr .L1318: - ldrh r9, [r3, lr] - and r9, r9, r1 - cmp r9, r1 + mov lr, #1 + mov r7, #16 + lsl lr, lr, r0 + str r7, [sp, #36] + mov r7, #0 + str lr, [sp, #32] + ldr lr, [sp, #12] +.L1316: + ldrh r3, [lr] + mov r1, r3 + ldr r3, [sp, #32] + bics r3, r3, r1 + ldr r3, [sp, #28] addeq r7, r7, #1 - ldr r9, [sp, #8] - add lr, lr, r9 - ldr r9, [sp, #32] - subs r9, r9, #1 - str r9, [sp, #32] - bne .L1318 + add lr, lr, r3 + ldr r3, [sp, #36] + subs r3, r3, #1 + str r3, [sp, #36] + bne .L1316 cmp r7, #8 add r0, r0, #1 - orrhi ip, ip, r1 + ldrhi r3, [sp, #32] + orrhi ip, ip, r3 uxthhi ip, ip cmp r0, #16 - bne .L1320 - ldr r1, [sp, #28] + bne .L1318 + ldr r3, [sp, #12] strh ip, [r3], #2 @ movhi + str r3, [sp, #12] + ldr r3, [sp, #16] + add r3, r3, #1 + str r3, [sp, #16] + ldr r1, [sp, #16] + ldr r3, [sp, #4] cmp r3, r1 - bne .L1317 - ldr r3, .L1381+20 - ldr r1, [r3, #1688] + bgt .L1319 + ldr r3, .L1384+16 + ldr r1, [r3, #1696] mov r3, #0 sub r0, r1, #4 add ip, r1, #28 @@ -8179,91 +8619,141 @@ ldr lr, [r0, #4]! cmp lr, #0 addeq r3, r3, #1 - cmp r0, ip + cmp ip, r0 bne .L1322 cmp r3, #7 ble .L1323 - ldr r0, .L1381+28 - mov r2, #1 + ldr r0, .L1384+24 mov r3, #1024 + mov r2, #1 bl rknand_print_hex - ldr r0, .L1381+24 mov r1, #0 + ldr r0, .L1384+20 bl printk .L1324: b .L1324 +.L1296: + cmp r4, #7 + bne .L1302 + mov r2, #0 +.L1304: + ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2 + uxtb r1, r2 + cmp r0, #12 + beq .L1303 + add r0, r3, r2, lsl #2 + ldrb r0, [r0, #1] @ zero_extendqisi2 + cmp r0, #10 + beq .L1303 + add r2, r2, #1 + cmp r2, #8 + bne .L1304 +.L1305: + mov r1, #0 + ldr r0, .L1384+20 + bl printk +.L1306: + b .L1306 +.L1303: + cmp r1, #6 + bls .L1300 + b .L1305 +.L1302: + cmp r4, #6 + bne .L1300 + add r3, r3, #7 +.L1307: + ldrb r2, [r1, #1]! @ zero_extendqisi2 + cmp r2, #12 + beq .L1300 + ldrb r2, [r1, #8] @ zero_extendqisi2 + cmp r2, #4 + beq .L1300 + cmp r3, r1 + bne .L1307 + mov r1, #0 + ldr r0, .L1384+20 + bl printk +.L1309: + b .L1309 +.L1311: + ldr r0, [sp] + ldr r0, [r0, #2048] + strb r0, [r3], #1 + b .L1310 .L1323: cmp r4, #6 - moveq r0, #4 + moveq ip, #4 beq .L1325 cmp r4, #7 - moveq r0, #10 + moveq ip, #10 beq .L1325 - ldr r3, [sp, #4] - cmp r3, #0 - moveq r0, #8 - movne r0, #5 + cmp r4, #8 + moveq ip, #5 + movne ip, #8 .L1325: - sub r9, r6, #1 - ldr r1, [sp, #20] - mov ip, #0 - uxtb r9, r9 - add r9, r9, #1 + sub r3, r6, #1 + ldr r0, [sp, #20] + uxtb r3, r3 + mov lr, #0 + add r3, r3, #1 + str r3, [sp, #12] .L1326: - mov r7, r1 - mov r3, r2 + mov r3, r0 + mov r1, r2 .L1327: - ldrb lr, [r3], #1 @ zero_extendqisi2 - strb lr, [r7], #1 - rsb lr, r2, r3 - uxtb lr, lr - cmp lr, r6 - bcc .L1327 - add ip, ip, #1 - add r2, r2, r9 - cmp ip, r5 - add r1, r1, r0 - blt .L1326 - add r7, r8, fp, asl #8 + ldrb r7, [r1], #1 @ zero_extendqisi2 + strb r7, [r3], #1 + sub r7, r1, r2 + uxtb r7, r7 + cmp r6, r7 + bhi .L1327 + ldr r3, [sp, #12] + add lr, lr, #1 + cmp r5, lr + add r0, r0, ip + add r2, r2, r3 + bgt .L1326 + add r10, fp, r10, lsl #8 mov r3, #255 - mov r0, r10 - str r3, [r7, #2056] + mov r0, r9 + str r3, [r10, #2056] + bl NandcWaitFlashReady + ldr r3, [sp, #44] + cmp r3, #1 + bhi .L1329 + mov r3, #54 + ldr r2, [sp] + str r3, [r10, #2056] + mvn r1, #0 + ldrb r3, [r8, #1220] @ zero_extendqisi2 + ldr r0, [sp, #8] + str r3, [r2, #2052] + mov r3, #0 + str r3, [r2, #2048] + mov r3, #22 + str r3, [r10, #2056] + bl FlashReadCmd +.L1330: + mov r0, r9 bl NandcWaitFlashReady ldr r3, [sp, #24] - cmp r3, #0 - beq .L1329 - mov r3, #54 - str r3, [r7, #2056] - ldr r3, .L1381 - mvn r1, #0 - ldr r0, [sp, #12] - ldrb r3, [r3, #1214] @ zero_extendqisi2 - str r3, [r7, #2052] - mov r3, #0 - str r3, [r7, #2048] - mov r3, #22 - str r3, [r7, #2056] - bl FlashReadCmd - b .L1330 -.L1329: - ldr r3, [sp, #4] - cmp r3, #0 - movne r3, #190 - moveq r3, #56 - str r3, [r7, #2056] -.L1330: - mov r0, r10 - bl NandcWaitFlashReady - ldr r3, [sp, #16] add r3, r3, #1 - b .L1379 -.L1291: + str r3, [sp, #24] + b .L1285 +.L1329: + cmp r4, #8 + moveq r3, #190 + movne r3, #56 + str r3, [r10, #2056] + b .L1330 +.L1288: mov r3, #120 mov r2, #23 str r3, [r7, #2056] - mov r1, #25 mov r3, #0 str r3, [r7, #2052] + mov r1, #25 str r3, [r7, #2052] str r3, [r7, #2052] str r2, [r7, #2056] @@ -8279,25 +8769,26 @@ str r1, [r7, #2052] str r2, [r7, #2052] str r3, [r7, #2052] - ldr r3, .L1381+32 + ldr r3, [sp, #52] str r3, [sp, #20] b .L1333 -.L1382: +.L1385: .align 2 -.L1381: +.L1384: .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR1+3388 - .word .LANCHOR0+1210 - .word .LANCHOR0+1213 + .word .LANCHOR0+1216 + .word .LANCHOR1+3384 .word .LANCHOR2 .word .LC85 .word .LC86 - .word .LANCHOR0+1238 .fnend .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 2 .global FlashGetReadRetryDefault + .syntax unified + .arm + .fpu softvfp .type FlashGetReadRetryDefault, %function FlashGetReadRetryDefault: .fnstart @@ -8308,226 +8799,227 @@ bxeq lr sub r2, r3, #1 cmp r2, #7 - bhi .L1385 + bhi .L1388 b HynixGetReadRetryDefault -.L1385: +.L1388: cmp r3, #49 - bne .L1386 - ldr r2, .L1397 - ldr r0, .L1397+4 - ldr r1, .L1397+8 - strb r3, [r2, #1210] + bne .L1389 + ldr r2, .L1400 + ldr r1, .L1400+4 + strb r3, [r2, #1216] mov r3, #4 - strb r3, [r2, #1211] + strb r3, [r2, #1217] mov r3, #15 - strb r3, [r2, #1212] + strb r3, [r2, #1218] mov r2, #64 - b .L1395 -.L1386: +.L1398: + ldr r0, .L1400+8 + b ftl_memcpy +.L1389: sub r2, r3, #65 cmp r3, #33 cmpne r2, #1 - ldrls r2, .L1397 - strlsb r3, [r2, #1210] - movls r3, #4 - bls .L1396 -.L1387: - cmp r3, #34 - cmpne r3, #67 - bne .L1388 - ldr r2, .L1397 - strb r3, [r2, #1210] - mov r3, #5 -.L1396: - strb r3, [r2, #1211] + bhi .L1390 + ldr r2, .L1400 + strb r3, [r2, #1216] + mov r3, #4 +.L1399: + strb r3, [r2, #1217] mov r3, #7 - ldr r0, .L1397+4 - strb r3, [r2, #1212] + strb r3, [r2, #1218] mov r2, #45 - ldr r1, .L1397+12 - b .L1395 -.L1388: - cmp r3, #35 - cmpne r3, #68 + ldr r1, .L1400+12 + b .L1398 +.L1390: + cmp r3, #67 + cmpne r3, #34 + ldreq r2, .L1400 + strbeq r3, [r2, #1216] + moveq r3, #5 + beq .L1399 +.L1391: + cmp r3, #68 + cmpne r3, #35 bxne lr - ldr r2, .L1397 - ldr r0, .L1397+4 - ldr r1, .L1397+16 - strb r3, [r2, #1210] + ldr r2, .L1400 + ldr r1, .L1400+16 + strb r3, [r2, #1216] mov r3, #5 - strb r3, [r2, #1211] + strb r3, [r2, #1217] mov r3, #17 - strb r3, [r2, #1212] + strb r3, [r2, #1218] mov r2, #95 -.L1395: - b ftl_memcpy -.L1398: + b .L1398 +.L1401: .align 2 -.L1397: +.L1400: .word .LANCHOR0 - .word .LANCHOR0+1214 - .word .LANCHOR1+408 + .word .LANCHOR1+404 + .word .LANCHOR0+1220 .word .LANCHOR1+256 - .word .LANCHOR1+304 + .word .LANCHOR1+301 .fnend .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .align 2 .global NandcXferComp + .syntax unified + .arm + .fpu softvfp .type NandcXferComp, %function NandcXferComp: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, lr} - .save {r4, r5, r6, lr} + push {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} .pad #8 - ldr r5, .L1439 - add r0, r5, r0, asl #3 - ldr r3, [r5, #2260] - ldr r4, [r0, #12] + ldr r5, .L1442 + ldr r3, [r5, #2264] + ldr r4, [r5, r0, lsl #3] cmp r3, #3 - bls .L1430 + bls .L1433 ldr r3, [r4, #16] tst r3, #4 - beq .L1430 + beq .L1433 ldr r6, [r4, #16] ldr r3, [r4, #8] ubfx r6, r6, #1, #1 cmp r6, #0 str r3, [sp] - movne r6, #0 - beq .L1412 -.L1402: + beq .L1404 + ldr r7, .L1442+4 + mov r6, #0 + ldr r8, .L1442+8 +.L1405: ldr r2, [r4, #28] ldr r3, [sp] ubfx r2, r2, #16, #5 ubfx r3, r3, #22, #6 cmp r2, r3 - bge .L1410 - ldr r3, [r5, #2260] + bge .L1413 + ldr r3, [r5, #2264] cmp r3, #5 - bhi .L1403 -.L1406: + bhi .L1406 +.L1409: add r6, r6, #1 - bic r3, r6, #-16777216 - cmp r3, #0 - bne .L1405 + bics r3, r6, #-16777216 + bne .L1408 ldr r2, [r4, #28] mov r1, r6 ldr r3, [sp] + mov r0, r7 ubfx r2, r2, #16, #5 - ldr r0, .L1439+4 ubfx r3, r3, #22, #6 bl printk - ldr r0, .L1439+8 - mov r1, r4 - mov r2, #4 mov r3, #512 + mov r2, #4 + mov r1, r4 + mov r0, r8 bl rknand_print_hex +.L1408: + mov r1, #5 + mov r0, #1 + bl usleep_range b .L1405 -.L1403: +.L1406: ldr r3, [r4] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #8192 - beq .L1406 + beq .L1409 ldr r3, [sp, #4] tst r3, #131072 - beq .L1406 -.L1410: - ldr r3, [r5, #2296] - ldr r4, .L1439 + beq .L1409 +.L1413: + ldr r3, [r5, #2300] cmp r3, #0 - beq .L1411 + beq .L1414 ldr r1, [sp] mov r2, #0 - ldr r0, [r4, #2288] + ldr r0, [r5, #2292] ubfx r1, r1, #22, #5 - mov r1, r1, asl #10 + lsl r1, r1, #10 bl rknand_dma_unmap_single - ldr r0, [r4, #2292] - mov r2, #0 ldr r1, [sp] + mov r2, #0 + ldr r0, [r5, #2296] ubfx r1, r1, #22, #5 - mov r1, r1, asl #7 + lsl r1, r1, #7 bl rknand_dma_unmap_single - b .L1411 -.L1405: - mov r0, #1 - mov r1, #5 - bl usleep_range - b .L1402 .L1414: + mov r3, #0 + str r3, [r5, #2300] +.L1402: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L1404: + ldr r7, .L1442+12 + ldr r8, .L1442+8 +.L1415: + ldr r3, [sp] + tst r3, #1048576 + beq .L1417 + ldr r3, [r5, #2308] + cmp r3, #0 + beq .L1418 + mov r0, r4 + bl NandcSendDumpDataStart +.L1418: + ldr r3, [r5, #2300] + cmp r3, #0 + beq .L1419 + ldr r1, [sp] + mov r2, #1 + ldr r0, [r5, #2292] + ubfx r1, r1, #22, #5 + lsl r1, r1, #10 + bl rknand_dma_unmap_single + ldr r1, [sp] + mov r2, #1 + ldr r0, [r5, #2296] + ubfx r1, r1, #22, #5 + lsl r1, r1, #7 + bl rknand_dma_unmap_single +.L1419: + ldr r3, [r5, #2308] + cmp r3, #0 + beq .L1414 + mov r0, r4 + bl NandcSendDumpDataDone + b .L1414 +.L1417: ldr r3, [r4, #8] add r6, r6, #1 str r3, [sp] - bic r3, r6, #-16777216 - cmp r3, #0 - bne .L1413 + bics r3, r6, #-16777216 + bne .L1416 ldr r2, [sp] mov r1, r6 ldr r3, [r4, #28] - ldr r0, .L1439+12 + mov r0, r7 ubfx r3, r3, #16, #5 bl printk - ldr r0, .L1439+8 - mov r1, r4 - mov r2, #4 mov r3, #512 + mov r2, #4 + mov r1, r4 + mov r0, r8 bl rknand_print_hex -.L1413: - mov r0, #1 - mov r1, #5 - bl usleep_range -.L1412: - ldr r3, [sp] - tst r3, #1048576 - beq .L1414 - ldr r3, [r5, #2304] - cmp r3, #0 - beq .L1415 - mov r0, r4 - bl NandcSendDumpDataStart -.L1415: - ldr r3, [r5, #2296] - ldr r6, .L1439 - cmp r3, #0 - beq .L1416 - ldr r1, [sp] - mov r2, #1 - ldr r0, [r6, #2288] - ubfx r1, r1, #22, #5 - mov r1, r1, asl #10 - bl rknand_dma_unmap_single - ldr r0, [r6, #2292] - mov r2, #1 - ldr r1, [sp] - ubfx r1, r1, #22, #5 - mov r1, r1, asl #7 - bl rknand_dma_unmap_single .L1416: - ldr r3, [r5, #2304] - cmp r3, #0 - beq .L1411 - mov r0, r4 - bl NandcSendDumpDataDone -.L1411: - mov r3, #0 - str r3, [r5, #2296] - b .L1399 -.L1430: + mov r1, #5 + mov r0, #1 + bl usleep_range + b .L1415 +.L1433: ldr r3, [r4, #8] str r3, [sp] ldr r3, [sp] tst r3, #1048576 - beq .L1430 -.L1399: - add sp, sp, #8 - @ sp needed - ldmfd sp!, {r4, r5, r6, pc} -.L1440: + beq .L1433 + b .L1402 +.L1443: .align 2 -.L1439: +.L1442: .word .LANCHOR0 .word .LC87 .word .LC88 @@ -8536,306 +9028,306 @@ .size NandcXferComp, .-NandcXferComp .align 2 .global NandcXferData + .syntax unified + .arm + .fpu softvfp .type NandcXferData, %function NandcXferData: .fnstart @ args = 4, pretend = 0, frame = 80 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r3 - ldr r6, .L1489 - tst r10, #63 + tst r3, #63 + ldr r9, .L1484 .pad #92 sub sp, sp, #92 - mov r9, r0 - add r3, r6, r0, asl #3 + mov r7, r0 mov r5, r1 - mov r7, r2 - ldr r8, [r3, #12] - bne .L1442 - ldr r3, [sp, #128] - cmp r3, #0 - bne .L1443 - add r0, sp, #24 - mov r1, #255 - mov r2, #64 - bl ftl_memset - add r3, sp, #24 - str r3, [sp, #128] -.L1443: - ldr r3, [sp, #128] - mov r0, r9 - mov r1, r5 - mov r2, r7 - str r10, [sp] - str r3, [sp, #4] - mov r3, #0 - bl NandcXferStart - mov r0, r9 - mov r1, r5 - bl NandcXferComp - cmp r5, #0 - movne fp, #0 - bne .L1444 - ldr r3, [r6, #2308] - mov r0, r7, lsr #1 - mov r2, r5 - mov r1, r5 - cmp r3, #25 - ldr r3, [sp, #128] - movcc lr, #64 - movcs lr, #128 -.L1446: - cmp r1, r0 - add r3, r3, #4 - add ip, r2, lr - bcs .L1487 - ldr r4, [r6, #2276] - mov r2, r2, lsr #2 - add r1, r1, #1 - ldr r2, [r4, r2, asl #2] - mov r4, r2, lsr #8 - strb r2, [r3, #-4] - strb r4, [r3, #-3] - mov r4, r2, lsr #16 - mov r2, r2, lsr #24 - strb r4, [r3, #-2] - strb r2, [r3, #-1] - mov r2, ip - b .L1446 -.L1487: - ldr r0, [r6, #2308] - mov r2, #0 - ldr r1, [r6, #2260] - mov r7, r7, lsr #2 - mov fp, r2 -.L1448: - cmp r2, r7 - bcs .L1444 - cmp r0, #0 - beq .L1444 - add r3, r2, #8 - ldr r3, [r8, r3, asl #2] - str r3, [sp, #20] - ldr r3, [sp, #20] - tst r3, #4 - bne .L1472 - ldr r4, [sp, #20] - ubfx r4, r4, #15, #1 + str r2, [sp, #8] + mov r8, r3 + ldr r4, [sp, #128] + ldr r6, [r9, r0, lsl #3] + bne .L1445 cmp r4, #0 - bne .L1472 - cmp r1, #5 - bls .L1450 - ldr ip, [sp, #20] - ldr r4, [sp, #20] - ldr r3, [sp, #20] - ubfx ip, ip, #3, #5 - ldr lr, [sp, #20] - ubfx r4, r4, #27, #1 - ubfx r3, r3, #16, #5 - ubfx lr, lr, #29, #1 - orr ip, ip, r4, asl #5 - orr r3, r3, lr, asl #5 - cmp ip, r3 - ldr r3, [sp, #20] - ldrhi r4, [sp, #20] - ubfxhi r3, r3, #3, #5 - ldrls r4, [sp, #20] - ubfxls r3, r3, #16, #5 - ubfxhi r4, r4, #27, #1 - ubfxls r4, r4, #29, #1 - b .L1486 -.L1450: - cmp r1, #3 - bls .L1452 - ldr ip, [sp, #20] - ldr r4, [sp, #20] - ldr r3, [sp, #20] - ubfx ip, ip, #3, #5 - ldr lr, [sp, #20] - ubfx r4, r4, #28, #1 - ubfx r3, r3, #16, #5 - ubfx lr, lr, #30, #1 - orr ip, ip, r4, asl #5 - orr r3, r3, lr, asl #5 - cmp ip, r3 - ldr r3, [sp, #20] - ldrhi r4, [sp, #20] - ubfxhi r3, r3, #3, #5 - ldrls r4, [sp, #20] - ubfxls r3, r3, #16, #5 - ubfxhi r4, r4, #28, #1 - ubfxls r4, r4, #30, #1 -.L1486: - orr r4, r3, r4, asl #5 -.L1452: - cmp fp, r4 - movcc fp, r4 - b .L1449 -.L1472: - mvn fp, #0 -.L1449: - add r2, r2, #1 - b .L1448 -.L1444: + bne .L1446 + mov r2, #64 + mov r1, #255 + add r0, sp, #24 + bl ftl_memset + add r4, sp, #24 +.L1446: mov r3, #0 - str r3, [r8, #16] - b .L1455 -.L1442: - cmp r1, #1 - mov r4, #0 - bne .L1484 - mov fp, r4 -.L1456: - cmp r4, r7 - bcs .L1488 - ldr r2, [sp, #128] - cmp r10, #0 - addne r3, r10, r4, asl #9 - ldr r1, [sp, #128] - moveq r3, r10 - cmp r2, #0 - and ip, r4, #3 - mov r0, r8 - movne r2, #2 - moveq r2, #0 - mla r2, r4, r2, r1 - mov r1, #1 - str ip, [sp, #8] - add r4, r4, #2 - str r2, [sp] - mov r2, ip - bl NandcCopy1KB - mov r0, r9 - mov r1, #1 - mov r2, #2 - ldr ip, [sp, #8] - str fp, [sp] - str fp, [sp, #4] - mov r3, ip - bl NandcXferStart - mov r0, r9 - mov r1, #1 - bl NandcXferComp - b .L1456 -.L1488: - mov fp, #0 - b .L1455 -.L1484: - str r4, [sp] - mov r1, r4 - str r4, [sp, #4] - mov r2, #2 - mov r3, r4 - mov fp, r4 - bl NandcXferStart - str r10, [sp, #8] -.L1461: - cmp r4, r7 - bcs .L1455 - mov r0, r9 + ldr r2, [sp, #8] mov r1, r5 - bl NandcXferComp - ldr r3, [r8, #32] - add ip, r4, #2 - cmp ip, r7 - str r3, [sp, #20] - bcs .L1462 - mov r3, #0 - mov r0, r9 - str r3, [sp] - mov r1, r3 - str r3, [sp, #4] - mov r2, #2 - and r3, ip, #3 - str ip, [sp, #12] + mov r0, r7 + str r4, [sp, #4] + str r8, [sp] bl NandcXferStart - ldr ip, [sp, #12] -.L1462: - ldr r3, [sp, #20] - tst r3, #4 - mvnne fp, #0 - bne .L1463 - ldr r2, [sp, #20] - ldr r3, [sp, #20] - ubfx r2, r2, #3, #5 - ubfx r3, r3, #27, #1 - orr r3, r2, r3, asl #5 - cmp fp, r3 - movcc fp, r3 -.L1463: - ldr r1, [sp, #128] - cmp r10, #0 - ldr r3, [sp, #8] - sub r2, ip, #2 - moveq r3, #0 - ldr r0, [sp, #128] - cmp r1, #0 - and r2, r2, #3 - str ip, [sp, #12] - movne r1, #2 - moveq r1, #0 - mla r4, r4, r1, r0 - mov r0, r8 - mov r1, #0 - str r4, [sp] - bl NandcCopy1KB - ldr ip, [sp, #12] - ldr r3, [sp, #8] - mov r4, ip - add r3, r3, #1024 - str r3, [sp, #8] - b .L1461 -.L1455: - ldr r3, [r6, #2260] - clz r5, r5 - cmp r3, #5 - mov r5, r5, lsr #5 - movls r5, #0 + mov r1, r5 + mov r0, r7 + bl NandcXferComp cmp r5, #0 - beq .L1467 - ldr r3, [r8] + movne r9, #0 + bne .L1447 + ldr r3, [r9, #2312] + mov r2, r5 + cmp r3, #25 + ldr r3, [sp, #8] + movcc ip, #64 + movcs ip, #128 + lsr r1, r3, #1 + mov r3, r5 +.L1449: + cmp r2, r1 + add r4, r4, #4 + add r0, ip, r3 + bcc .L1450 + ldr r3, [sp, #8] + mov r2, #0 + ldr r1, [r9, #2312] + ldr ip, [r9, #2264] + mov r9, r2 + lsr r0, r3, #2 +.L1451: + cmp r2, r0 + bcs .L1447 + cmp r1, #0 + bne .L1457 +.L1447: + mov r3, #0 + str r3, [r6, #16] +.L1458: + ldr r3, .L1484 + ldr r3, [r3, #2264] + cmp r3, #5 + movls r3, #0 + movhi r3, #1 + cmp r5, #0 + movne r3, #0 + cmp r3, #0 + beq .L1444 + ldr r3, [r6] and r2, r3, #139264 cmp r2, #139264 + mvneq r9, #0 orreq r3, r3, #131072 - streq r3, [r8] - mvneq fp, #0 -.L1467: - mov r0, fp + streq r3, [r6] +.L1444: + mov r0, r9 add sp, sp, #92 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1490: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1450: + ldr lr, [r9, #2280] + bic r3, r3, #3 + add r2, r2, #1 + ldr r3, [lr, r3] + strb r3, [r4, #-4] + lsr lr, r3, #8 + strb lr, [r4, #-3] + lsr lr, r3, #16 + lsr r3, r3, #24 + strb lr, [r4, #-2] + strb r3, [r4, #-1] + mov r3, r0 + b .L1449 +.L1457: + add r3, r2, #8 + ldr r3, [r6, r3, lsl #2] + str r3, [sp, #20] + ldr r3, [sp, #20] + tst r3, #4 + bne .L1473 + ldr r3, [sp, #20] + ubfx r3, r3, #15, #1 + cmp r3, #0 + bne .L1473 + cmp ip, #5 + bls .L1453 + ldr lr, [sp, #20] + ldr r7, [sp, #20] + ldr r3, [sp, #20] + ldr r4, [sp, #20] + ubfx lr, lr, #3, #5 + ubfx r7, r7, #27, #1 + ubfx r3, r3, #16, #5 + orr lr, lr, r7, lsl #5 + ubfx r4, r4, #29, #1 + orr r3, r3, r4, lsl #5 + cmp lr, r3 + ldr r3, [sp, #20] + ldrhi lr, [sp, #20] + ldrls lr, [sp, #20] + ubfxhi r3, r3, #3, #5 + ubfxls r3, r3, #16, #5 + ubfxhi lr, lr, #27, #1 + ubfxls lr, lr, #29, #1 +.L1483: + orr r3, r3, lr, lsl #5 +.L1455: + cmp r9, r3 + movcc r9, r3 +.L1452: + add r2, r2, #1 + b .L1451 +.L1453: + cmp ip, #3 + bls .L1455 + ldr lr, [sp, #20] + ldr r7, [sp, #20] + ldr r3, [sp, #20] + ldr r4, [sp, #20] + ubfx lr, lr, #3, #5 + ubfx r7, r7, #28, #1 + ubfx r3, r3, #16, #5 + orr lr, lr, r7, lsl #5 + ubfx r4, r4, #30, #1 + orr r3, r3, r4, lsl #5 + cmp lr, r3 + ldr r3, [sp, #20] + ldrhi lr, [sp, #20] + ldrls lr, [sp, #20] + ubfxhi r3, r3, #3, #5 + ubfxls r3, r3, #16, #5 + ubfxhi lr, lr, #28, #1 + ubfxls lr, lr, #30, #1 + b .L1483 +.L1473: + mvn r9, #0 + b .L1452 +.L1445: + cmp r1, #1 + bne .L1459 + mov r9, #0 + cmp r4, #0 + mov r10, r9 + movne r3, #4 + moveq r3, #0 + str r3, [sp, #12] +.L1460: + ldr r3, [sp, #8] + cmp r9, r3 + movcs r9, #0 + bcs .L1458 +.L1462: + cmp r8, #0 + and fp, r9, #3 + addne r3, r8, r9, lsl #9 + moveq r3, r8 + str r4, [sp] + mov r2, fp + mov r1, #1 + mov r0, r6 + bl NandcCopy1KB + mov r3, fp + mov r2, #2 + mov r1, #1 + mov r0, r7 + str r10, [sp, #4] + add r9, r9, #2 + str r10, [sp] + bl NandcXferStart + mov r1, #1 + mov r0, r7 + bl NandcXferComp + ldr r3, [sp, #12] + add r4, r4, r3 + b .L1460 +.L1459: + mov r10, #0 + mov r2, #2 + mov r3, r10 + str r10, [sp, #4] + str r10, [sp] + mov r1, r10 + bl NandcXferStart + mov fp, r8 + cmp r4, r10 + mov r9, r10 + movne r3, #4 + moveq r3, r10 + str r3, [sp, #12] +.L1463: + ldr r3, [sp, #8] + cmp r10, r3 + bcs .L1458 + mov r1, r5 + mov r0, r7 + bl NandcXferComp + ldr r3, [r6, #32] + add r10, r10, #2 + str r3, [sp, #20] + ldr r3, [sp, #8] + cmp r3, r10 + bls .L1464 + mov r3, #0 + mov r2, #2 + str r3, [sp, #4] + mov r1, #0 + str r3, [sp] + mov r0, r7 + and r3, r10, #3 + bl NandcXferStart +.L1464: + ldr r3, [sp, #20] + tst r3, #4 + mvnne r9, #0 + bne .L1465 + ldr r3, [sp, #20] + ldr r2, [sp, #20] + ubfx r3, r3, #3, #5 + ubfx r2, r2, #27, #1 + orr r3, r3, r2, lsl #5 + cmp r9, r3 + movcc r9, r3 +.L1465: + cmp r8, #0 + sub r2, r10, #2 + movne r3, fp + str r4, [sp] + moveq r3, #0 + and r2, r2, #3 + mov r1, #0 + mov r0, r6 + bl NandcCopy1KB + ldr r3, [sp, #12] + add fp, fp, #1024 + add r4, r4, r3 + b .L1463 +.L1485: .align 2 -.L1489: +.L1484: .word .LANCHOR0 .fnend .size NandcXferData, .-NandcXferData .align 2 .global FlashReadRawPage + .syntax unified + .arm + .fpu softvfp .type FlashReadRawPage, %function FlashReadRawPage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + push {r0, r1, r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1494 + ldr r3, .L1489 subs r4, r0, #0 mov r6, r1 mov r7, r2 - ldrb r5, [r3, #481] @ zero_extendqisi2 - bne .L1492 - ldr r2, .L1494+4 - ldrb r3, [r2, #1] @ zero_extendqisi2 - ldr r2, [r2, #4] - mul r2, r2, r3 - cmp r1, r2 - movcc r5, #4 -.L1492: + ldrb r5, [r3, #477] @ zero_extendqisi2 + bne .L1487 + ldr r1, .L1489+4 + ldrb r3, [r1, #37] @ zero_extendqisi2 + ldr r0, [r1, #40] + mul r0, r0, r3 + cmp r0, r6 + movhi r5, #4 +.L1487: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 @@ -8845,181 +9337,177 @@ bl FlashReadCmd mov r0, r4 bl NandcWaitFlashReady - mov r2, r5 - mov r1, #0 mov r3, r7 - mov r0, r4 + mov r2, r5 str r8, [sp] + mov r1, #0 + mov r0, r4 bl NandcXferData - mov r5, r0 + mov r1, r0 mov r0, r4 bl NandcFlashDeCs - mov r0, r5 + mov r0, r1 add sp, sp, #8 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1495: + pop {r4, r5, r6, r7, r8, pc} +.L1490: .align 2 -.L1494: +.L1489: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashReadRawPage, .-FlashReadRawPage .align 2 .global FlashDdrTunningRead + .syntax unified + .arm + .fpu softvfp .type FlashDdrTunningRead, %function FlashDdrTunningRead: .fnstart @ args = 4, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r7, r3 - ldr r4, .L1523 + ldr r4, .L1517 .pad #20 sub sp, sp, #20 - mov r10, r0 mov fp, r2 - str r1, [sp] - ldr r3, [r4, #80] + stm sp, {r0, r1} + ldr r3, [r4, #88] ldr r3, [r3, #304] - str r3, [sp, #8] - ldr r3, [r4, #2260] + str r3, [sp, #12] + ldr r3, [r4, #2264] cmp r3, #8 ldr r3, [sp, #56] - movcc r9, #6 - movcs r9, #12 + movcc r10, #6 + movcs r10, #12 cmp r3, #0 - moveq r6, #1024 - beq .L1498 + moveq r5, #1024 + beq .L1493 mov r0, #1 bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode - mov r0, r10 + ldr r0, [sp] bl FlashReset - mov r2, fp mov r3, r7 - mov r0, r10 - ldr r1, [sp] + mov r2, fp + ldm sp, {r0, r1} bl FlashReadRawPage - mov r6, r0 - ldrb r0, [r4, #2229] @ zero_extendqisi2 + mov r5, r0 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r4, #2229] @ zero_extendqisi2 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl NandcSetMode - cmn r6, #1 - bne .L1499 -.L1508: - mvn r6, #0 - b .L1500 -.L1499: - mov r2, r6 - ldr r0, .L1523+4 - ldr r1, [sp] + cmn r5, #1 + bne .L1494 +.L1503: + mvn r5, #0 +.L1491: + mov r0, r5 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1494: + mov r2, r5 + ldr r1, [sp, #4] + ldr r0, .L1517+4 bl printk - cmp r6, #9 - addls r4, r4, r10, asl #3 - ldrls r3, [r4, #12] - ldr r4, .L1523+8 + cmp r5, #9 + ldrls r3, [sp] + ldrls r3, [r4, r3, lsl #3] ldrls r2, [r3, #3840] ldrls r2, [r3] orrls r2, r2, #131072 strls r2, [r3] - ldr r3, [r4, #1692] + ldr r2, .L1517+8 + ldr r3, [r2, #1700] add r3, r3, #1 - str r3, [r4, #1692] cmp r3, #2048 + str r3, [r2, #1700] movcs r7, #0 - strcs r7, [r4, #1692] + strcs r7, [r2, #1700] movcs fp, r7 - bcc .L1500 -.L1498: - mov r4, #0 + bcc .L1491 +.L1493: + mov r9, #0 mvn r8, #0 - mov ip, r4 - mov r5, r4 - str r4, [sp, #4] -.L1506: - uxtb r0, r9 - str ip, [sp, #12] + mov r6, r9 + mov r4, r9 + str r9, [sp, #8] +.L1501: + uxtb r0, r10 bl NandcSetDdrPara mov r3, r7 - mov r0, r10 mov r2, fp - ldr r1, [sp] + ldm sp, {r0, r1} bl FlashReadRawPage - add r3, r6, #1 + add r3, r5, #1 cmp r0, r3 - ldr ip, [sp, #12] - bhi .L1502 + bhi .L1497 cmp r0, #2 - bhi .L1512 - add r5, r5, #1 - cmp r5, #9 - bls .L1512 - rsb r4, r5, r9 - mov r6, r0 + bhi .L1507 + add r4, r4, #1 + cmp r4, #9 + bls .L1507 + mov r3, r6 + mov r5, r0 + sub r6, r10, r4 mov r8, #0 - b .L1504 -.L1502: - ldr r3, [sp, #4] - cmp r3, r5 - bcs .L1513 - cmp r5, #7 - rsb ip, r5, r4 - bhi .L1514 - str r5, [sp, #4] - b .L1513 -.L1512: - mov r8, #0 - mov r4, r9 - mov r6, r0 - mov r7, r8 - mov fp, r8 - b .L1503 -.L1513: - mov r5, #0 -.L1503: - add r9, r9, #2 - cmp r9, #69 - bls .L1506 -.L1504: - ldr r3, [sp, #4] - cmp r3, r5 - movcs r4, ip - b .L1505 -.L1514: - mov r4, ip -.L1505: - cmp r4, #0 - beq .L1507 - ldr r0, .L1523+12 - mov r1, r4 +.L1499: + ldr r2, [sp, #8] + cmp r4, r2 + movls r6, r3 +.L1500: + cmp r6, #0 + beq .L1502 + mov r1, r6 + ldr r0, .L1517+12 bl printk - uxtb r0, r4 + uxtb r0, r6 bl NandcSetDdrPara -.L1507: +.L1502: cmn r8, #1 - bne .L1500 - ldr r0, .L1523+16 - mov r1, r10 - ldr r2, [sp] + bne .L1491 + ldm sp, {r1, r2} + ldr r0, .L1517+16 bl printk ldr r3, [sp, #56] cmp r3, #0 - beq .L1508 - ldr r3, [sp, #8] + beq .L1503 + ldr r3, [sp, #12] ubfx r0, r3, #8, #8 bl NandcSetDdrPara -.L1500: - mov r0, r6 - add sp, sp, #20 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1524: + b .L1491 +.L1497: + ldr r3, [sp, #8] + cmp r4, r3 + bls .L1508 + cmp r4, #7 + sub r6, r9, r4 + bhi .L1500 + str r4, [sp, #8] +.L1508: + mov r4, #0 + b .L1498 +.L1507: + mov r8, #0 + mov r9, r10 + mov r5, r0 + mov r7, r8 + mov fp, r8 +.L1498: + add r10, r10, #2 + cmp r10, #69 + bls .L1501 + mov r3, r6 + mov r6, r9 + b .L1499 +.L1518: .align 2 -.L1523: +.L1517: .word .LANCHOR0 .word .LC90 .word .LANCHOR2 @@ -9029,110 +9517,110 @@ .size FlashDdrTunningRead, .-FlashDdrTunningRead .align 2 .global FlashReadPage + .syntax unified + .arm + .fpu softvfp .type FlashReadPage, %function FlashReadPage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r5, r0 mov r6, r1 - mov r8, r2 - mov r7, r3 + mov r7, r2 + mov r8, r3 bl FlashReadRawPage cmn r0, #1 mov r4, r0 - bne .L1526 - ldr r9, .L1546 - ldrb fp, [r9, #8] @ zero_extendqisi2 + bne .L1520 + ldr r9, .L1539 + ldrb fp, [r9, #44] @ zero_extendqisi2 mov r10, r9 cmp fp, #0 - bne .L1527 -.L1529: - ldrb r3, [r10, #2252] @ zero_extendqisi2 - ldr r9, .L1546 + bne .L1521 +.L1523: + ldrb r3, [r10, #2256] @ zero_extendqisi2 cmp r3, #0 - beq .L1526 - b .L1545 -.L1527: - mov r3, #0 - mov r0, r5 - strb r3, [r9, #8] + beq .L1520 + ldr r3, [r10, #88] + mov r2, r7 mov r1, r6 - mov r2, r8 - mov r3, r7 - bl FlashReadRawPage - strb fp, [r9, #8] - cmn r0, #1 - movne r4, r0 - beq .L1529 - b .L1526 -.L1545: - ldr r3, [r9, #80] mov r0, r5 - mov r1, r6 - mov r2, r8 - ldr r10, [r3, #304] + ldr r9, [r3, #304] mov r3, #1 str r3, [sp] - mov r3, r7 + mov r3, r8 bl FlashDdrTunningRead cmn r0, #1 mov r4, r0 - beq .L1530 - ldrb r3, [r9, #2312] @ zero_extendqisi2 + beq .L1524 + ldrb r3, [r10, #2316] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1526 -.L1530: - ubfx r0, r10, #8, #8 + bls .L1520 +.L1524: + ubfx r0, r9, #8, #8 bl NandcSetDdrPara -.L1526: - ldr r9, .L1546+4 - ldr ip, [r9, #1696] - adds r3, ip, #0 + b .L1520 +.L1521: + mov r3, #0 + mov r2, r7 + strb r3, [r9, #44] + mov r1, r6 + mov r3, r8 + mov r0, r5 + bl FlashReadRawPage + cmn r0, #1 + strb fp, [r9, #44] + movne r4, r0 + beq .L1523 +.L1520: + ldr r9, .L1539+4 + ldr r10, [r9, #1704] + adds r3, r10, #0 movne r3, #1 cmn r4, #1 movne r3, #0 cmp r3, #0 - beq .L1531 + beq .L1519 + mov r3, r8 + mov r2, r7 mov r1, r6 - mov r2, r8 - mov r3, r7 mov r0, r5 - blx ip - mov r2, r5 + blx r10 mov r3, r6 mov r4, r0 - ldr r0, .L1546+8 - mov r1, r4 + mov r1, r0 + mov r2, r5 + ldr r0, .L1539+8 bl printk cmn r4, #1 - bne .L1531 - ldr r3, .L1546 - ldrb r3, [r3, #144] @ zero_extendqisi2 + bne .L1519 + ldr r3, .L1539 + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L1531 + beq .L1519 mov r0, r5 bl flash_enter_slc_mode - ldr ip, [r9, #1696] - mov r0, r5 + ldr r4, [r9, #1704] + mov r3, r8 + mov r2, r7 mov r1, r6 - mov r2, r8 - mov r3, r7 - blx ip + mov r0, r5 + blx r4 mov r4, r0 mov r0, r5 bl flash_exit_slc_mode -.L1531: +.L1519: mov r0, r4 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1547: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1540: .align 2 -.L1546: +.L1539: .word .LANCHOR0 .word .LANCHOR2 .word .LC93 @@ -9140,587 +9628,601 @@ .size FlashReadPage, .-FlashReadPage .align 2 .global FlashDdrParaScan + .syntax unified + .arm + .fpu softvfp .type FlashDdrParaScan, %function FlashDdrParaScan: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + push {r0, r1, r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} .pad #8 - mov r7, r0 - ldr r5, .L1558 - mov r6, r1 + mov r6, r0 + ldr r5, .L1551 mov r4, #0 - ldrb r0, [r5, #2229] @ zero_extendqisi2 + mov r7, r1 + ldrb r0, [r5, #2233] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r5, #2229] @ zero_extendqisi2 + ldrb r0, [r5, #2233] @ zero_extendqisi2 bl NandcSetMode - mov r1, r6 - mov r2, r4 mov r3, r4 - mov r0, r7 + mov r2, r4 + mov r1, r7 str r4, [sp] + mov r0, r6 bl FlashDdrTunningRead mov r3, r4 - mov r1, r6 - mov r2, r4 mov r8, r0 - mov r0, r7 + mov r2, r4 + mov r1, r7 + mov r0, r6 bl FlashReadRawPage + cmn r8, #1 + cmnne r0, #1 mov r3, r5 - cmn r0, #1 - cmnne r8, #1 - bne .L1549 - ldrb r2, [r5, #2229] @ zero_extendqisi2 + bne .L1542 + ldrb r2, [r5, #2233] @ zero_extendqisi2 tst r2, #1 - beq .L1549 + beq .L1542 mov r0, #1 bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode - strb r4, [r5, #2252] - b .L1550 -.L1549: - mov r2, #1 - strb r2, [r3, #2252] -.L1550: + strb r4, [r5, #2256] +.L1543: mov r0, #0 add sp, sp, #8 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1559: + pop {r4, r5, r6, r7, r8, pc} +.L1542: + mov r2, #1 + strb r2, [r3, #2256] + b .L1543 +.L1552: .align 2 -.L1558: +.L1551: .word .LANCHOR0 .fnend .size FlashDdrParaScan, .-FlashDdrParaScan .align 2 .global FlashLoadPhyInfo + .syntax unified + .arm + .fpu softvfp .type FlashLoadPhyInfo, %function FlashLoadPhyInfo: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r3, #60 .pad #20 sub sp, sp, #20 - ldr r3, .L1576 - mov r4, #0 - ldr r7, .L1576+4 - mov r9, #4 - ldr r5, .L1576+8 - mvn r8, #0 - ldr r0, [r3] @ unaligned - ldr r3, [r7, #4] - str r4, [r5, #1704] - mov r6, r5 - str r0, [sp, #12] @ unaligned - mov r0, r4 + ldr r6, .L1568 + mov r5, #0 + mov r8, #4 + strb r3, [sp, #12] + mov r3, #40 + strb r3, [sp, #13] + mov r3, #24 + strb r3, [sp, #14] + mov r3, #16 + ldr r4, .L1568+4 + mvn r7, #0 + strb r3, [sp, #15] + mov r0, r5 + ldr r3, [r6, #40] + str r5, [r4, #1712] str r3, [sp, #4] - ldr r3, [r5, #1688] - str r3, [r5, #1700] + ldr r3, [r4, #1696] + str r3, [r4, #1708] bl flash_enter_slc_mode -.L1561: - add fp, r4, #1 - mov r10, #0 -.L1563: - add r3, sp, #12 - ldrb r0, [r3, r10] @ zero_extendqisi2 +.L1554: + add fp, r5, #1 + mov r9, #0 + add r10, sp, #12 +.L1556: + ldrb r0, [r10, r9] @ zero_extendqisi2 bl FlashBchSel - mov r0, #0 - mov r1, r4 - ldr r2, [r5, #1688] - mov r3, r0 + mov r3, #0 + ldr r2, [r4, #1696] + mov r1, r5 + mov r0, r3 bl FlashReadRawPage cmn r0, #1 - bne .L1562 - mov r0, #0 + bne .L1555 + mov r3, #0 + ldr r2, [r4, #1696] mov r1, fp - ldr r2, [r6, #1688] - mov r3, r0 + mov r0, r3 bl FlashReadRawPage cmn r0, #1 - bne .L1562 - add r10, r10, #1 - cmp r10, #4 - beq .L1564 - b .L1563 -.L1565: - add r0, fp, #12 - movw r1, #2036 - bl js_hash - ldr r3, [fp, #8] - cmp r3, r0 - mvnne r8, #0 - bne .L1564 - ldr r8, .L1576+12 - add r1, fp, #160 - mov r2, #32 + bne .L1555 + add r9, r9, #1 + cmp r9, #4 + bne .L1556 +.L1557: + ldr r3, [sp, #4] + subs r8, r8, #1 + add r5, r5, r3 + bne .L1554 mov r0, r8 - bl ftl_memcpy - ldr r1, [r6, #1700] + b .L1567 +.L1558: + movw r1, #2036 + add r0, r9, #12 + bl js_hash + ldr r3, [r9, #8] + cmp r3, r0 + mvnne r7, #0 + bne .L1557 mov r2, #32 - ldr r0, .L1576+16 + add r1, r9, #160 + ldr r0, .L1568+8 + bl ftl_memcpy + ldr r1, [r4, #1708] + mov r2, #32 + ldr r0, .L1568+12 add r1, r1, #192 bl ftl_memcpy - ldr r1, [r6, #1700] + ldr r1, [r4, #1708] mov r2, #852 - ldr r0, .L1576+20 + ldr r0, .L1568+16 add r1, r1, #224 bl ftl_memcpy - ldrh r0, [r8, #10] + ldr r3, .L1568+8 + ldrh r0, [r3, #10] bl FlashBlockAlignInit - ldr r8, [r6, #1700] - str r4, [r6, #1704] - mov r0, r4 - ldr r1, [r7, #4] - ldr r3, [r8, #1076] - strb r3, [r7, #2252] + ldr r7, [r4, #1708] + mov r0, r5 + str r5, [r4, #1712] + ldr r1, [r6, #40] + ldr r3, [r7, #1076] + strb r3, [r6, #2256] bl __aeabi_uidiv add r0, r0, #1 cmp r0, #1 - strhi r0, [r6, #1708] movls r3, #2 - strls r3, [r6, #1708] - ldrh r3, [r8, #14] - mov r8, #0 - strb r3, [r5, #1712] -.L1564: - ldr r3, [sp, #4] - subs r9, r9, #1 - add r4, r4, r3 - bne .L1561 - mov r0, r9 -.L1575: + strhi r0, [r4, #1716] + strls r3, [r4, #1716] + ldrh r3, [r7, #14] + mov r7, #0 + strb r3, [r4, #1720] + b .L1557 +.L1555: + ldr r9, [r4, #1708] + ldr r2, .L1568+20 + ldr r3, [r9] + cmp r3, r2 + bne .L1557 + cmp r7, #0 + bne .L1558 + ldr r1, [r6, #40] + mov r0, r5 + bl __aeabi_uidiv + add r0, r0, #1 + str r0, [r4, #1716] + mov r0, r7 +.L1567: bl flash_exit_slc_mode - mov r0, r8 + mov r0, r7 add sp, sp, #20 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1562: - ldr fp, [r5, #1700] - ldr r2, .L1576+24 - ldr r3, [fp] - cmp r3, r2 - bne .L1564 - cmp r8, #0 - bne .L1565 - mov r0, r4 - ldr r1, [r7, #4] - bl __aeabi_uidiv - ldr r3, .L1576+8 - add r0, r0, #1 - str r0, [r3, #1708] - mov r0, r8 - b .L1575 -.L1577: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1569: .align 2 -.L1576: - .word .LANCHOR3+11 +.L1568: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR1+472 - .word .LANCHOR0+48 - .word .LANCHOR0+1210 + .word .LANCHOR1+468 + .word .LANCHOR0+52 + .word .LANCHOR0+1216 .word 1312902724 .fnend .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 2 .global ToshibaReadRetrial + .syntax unified + .arm + .fpu softvfp .type ToshibaReadRetrial, %function ToshibaReadRetrial: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r4, .L1598 .pad #28 sub sp, sp, #28 - mov r9, r0 mov fp, r3 + str r1, [sp, #12] str r2, [sp, #8] - str r1, [sp, #16] bl NandcWaitFlashReady - ldr r4, .L1607 - add r3, r4, r9, asl #3 - ldrb r2, [r3, #16] @ zero_extendqisi2 - ldr r6, [r3, #12] - ldrb r3, [r4, #1208] @ zero_extendqisi2 - add r7, r2, #8 + add r3, r4, r8, lsl #3 + ldr r6, [r4, r8, lsl #3] + ldrb r1, [r3, #4] @ zero_extendqisi2 + ldrb r3, [r4, #84] @ zero_extendqisi2 + add r7, r1, #8 sub r3, r3, #67 - add r7, r6, r7, asl #8 + add r7, r6, r7, lsl #8 cmp r3, #1 - mov r3, r2, asl #8 - str r3, [sp, #12] - movls r3, #0 - strls r3, [sp, #4] - bls .L1579 - ldrb r5, [r4, #2252] @ zero_extendqisi2 + lsl r3, r1, #8 + movls r5, #0 + str r3, [sp, #16] + bls .L1571 + ldrb r5, [r4, #2256] @ zero_extendqisi2 cmp r5, #0 - streq r5, [sp, #4] - beq .L1580 + beq .L1572 + mov r5, #1 mov r0, #0 - str r2, [sp, #20] bl NandcSetDdrMode - mov r3, #1 - ldr r2, [sp, #20] - str r3, [sp, #4] -.L1580: - ldr r3, [sp, #12] - mov r1, #92 +.L1572: + lsl r3, r1, #8 + mov r2, #92 add r3, r6, r3 - str r1, [r3, #2056] - mov r1, #197 - str r1, [r3, #2056] -.L1579: - mov r8, #1 - mvn r10, #0 - mov r3, r2, asl #8 + str r2, [r3, #2056] + mov r2, #197 + str r2, [r3, #2056] +.L1571: + mvn r3, #0 + mov r9, #1 + str r3, [sp, #4] + lsl r3, r1, #8 str r3, [sp, #20] -.L1581: - ldr r3, .L1607+4 - ldrb r3, [r3, #1713] @ zero_extendqisi2 +.L1573: + ldr r3, .L1598+4 + ldrb r3, [r3, #1721] @ zero_extendqisi2 add r3, r3, #1 - cmp r8, r3 - bcs .L1606 - ldrb r3, [r4, #1208] @ zero_extendqisi2 + cmp r9, r3 + bcc .L1582 + ldr r10, [sp, #4] +.L1581: + ldrb r2, [r4, #84] @ zero_extendqisi2 + mov r1, #0 mov r0, r7 - uxtb r1, r8 + sub r2, r2, #67 + cmp r2, #1 + bhi .L1583 + bl SandiskSetRRPara +.L1584: + ldr r3, [sp, #16] + mov r2, #255 + add r6, r6, r3 + str r2, [r6, #2056] + ldrb r2, [r4, #2316] @ zero_extendqisi2 + add r2, r2, r2, lsl #1 + cmp r10, r2, asr #2 + bcc .L1585 + cmn r10, #1 + movne r10, #256 +.L1585: + mov r0, r8 + bl NandcWaitFlashReady + cmp r5, #0 + beq .L1570 + mov r0, #4 + bl NandcSetDdrMode +.L1570: + mov r0, r10 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1582: + ldrb r3, [r4, #84] @ zero_extendqisi2 + mov r0, r7 + uxtb r1, r9 sub r3, r3, #67 cmp r3, #1 - bhi .L1582 + bhi .L1574 bl SandiskSetRRPara - b .L1583 -.L1582: - bl ToshibaSetRRPara -.L1583: - ldrb r3, [r4, #1208] @ zero_extendqisi2 +.L1575: + ldrb r3, [r4, #84] @ zero_extendqisi2 cmp r3, #34 - bne .L1584 - ldr r3, .L1607+4 - ldrb r3, [r3, #1713] @ zero_extendqisi2 + bne .L1576 + ldr r3, .L1598+4 + ldrb r3, [r3, #1721] @ zero_extendqisi2 sub r3, r3, #3 - cmp r8, r3 + cmp r9, r3 ldreq r3, [sp, #20] moveq r2, #179 addeq r3, r6, r3 streq r2, [r3, #2056] -.L1584: - ldr r3, [sp, #12] +.L1576: + ldr r3, [sp, #16] mov r2, #38 + cmp r5, #0 add r3, r6, r3 str r2, [r3, #2056] mov r2, #93 str r2, [r3, #2056] - ldr r3, [sp, #4] - cmp r3, #0 - beq .L1585 + beq .L1577 mov r0, #4 bl NandcSetDdrMode - mov r0, r9 mov r3, fp - ldr r1, [sp, #16] ldr r2, [sp, #8] + ldr r1, [sp, #12] + mov r0, r8 bl FlashReadRawPage - mov r5, r0 + mov r10, r0 mov r0, #0 bl NandcSetDdrMode - b .L1586 -.L1585: - mov r0, r9 - ldr r1, [sp, #16] - ldr r2, [sp, #8] - mov r3, fp - bl FlashReadRawPage - mov r5, r0 -.L1586: - cmn r5, #1 - beq .L1587 - ldrb r2, [r4, #2312] @ zero_extendqisi2 +.L1578: cmn r10, #1 - moveq r10, r5 - add r2, r2, r2, asl #1 - cmp r5, r2, asr #2 - bcc .L1589 + beq .L1579 + ldrb r2, [r4, #2316] @ zero_extendqisi2 + ldr r3, [sp, #4] + add r2, r2, r2, lsl #1 + cmn r3, #1 + moveq r3, r10 + cmp r10, r2, asr #2 + str r3, [sp, #4] + bcc .L1581 mov fp, #0 str fp, [sp, #8] -.L1587: - add r8, r8, #1 - b .L1581 -.L1606: - mov r5, r10 -.L1589: - ldrb r2, [r4, #1208] @ zero_extendqisi2 - mov r0, r7 - mov r1, #0 - sub r2, r2, #67 - cmp r2, #1 - bhi .L1591 - bl SandiskSetRRPara - b .L1592 -.L1591: +.L1579: + add r9, r9, #1 + b .L1573 +.L1574: bl ToshibaSetRRPara -.L1592: - ldr r3, [sp, #12] - mov r2, #255 - add r6, r6, r3 - str r2, [r6, #2056] - ldrb r2, [r4, #2312] @ zero_extendqisi2 - add r2, r2, r2, asl #1 - cmp r5, r2, asr #2 - bcc .L1593 - cmn r5, #1 - movne r5, #256 -.L1593: - mov r0, r9 - bl NandcWaitFlashReady - ldr r3, [sp, #4] - cmp r3, #0 - beq .L1594 - mov r0, #4 - bl NandcSetDdrMode -.L1594: - mov r0, r5 - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1608: + b .L1575 +.L1577: + mov r3, fp + ldr r2, [sp, #8] + ldr r1, [sp, #12] + mov r0, r8 + bl FlashReadRawPage + mov r10, r0 + b .L1578 +.L1583: + bl ToshibaSetRRPara + b .L1584 +.L1599: .align 2 -.L1607: +.L1598: .word .LANCHOR0 .word .LANCHOR2 .fnend .size ToshibaReadRetrial, .-ToshibaReadRetrial .align 2 .global SamsungReadRetrial + .syntax unified + .arm + .fpu softvfp .type SamsungReadRetrial, %function SamsungReadRetrial: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {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, r0 - ldr r5, .L1623 - mov r10, r2 - mov r8, r3 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r5, .L1614 + mov r9, r3 mov fp, r1 + mov r10, r2 bl NandcWaitFlashReady - add r2, r5, r9, asl #3 - ldr ip, .L1623+4 mov r7, #1 - ldrb r3, [r2, #16] @ zero_extendqisi2 mvn r4, #0 - ldr r6, [r2, #12] - add r3, r3, #8 - add r6, r6, r3, asl #8 -.L1610: - ldrb r3, [ip, #1713] @ zero_extendqisi2 + add r3, r5, r8, lsl #3 + ldrb r6, [r3, #4] @ zero_extendqisi2 + add r3, r6, #8 + ldr r6, [r5, r8, lsl #3] + add r6, r6, r3, lsl #8 +.L1601: + ldr r3, .L1614+4 + ldrb r3, [r3, #1721] @ zero_extendqisi2 add r3, r3, #1 cmp r7, r3 - bcs .L1613 - mov r0, r6 - uxtb r1, r7 - str ip, [sp, #4] - bl SamsungSetRRPara - mov r0, r9 - mov r1, fp - mov r2, r10 - mov r3, r8 - bl FlashReadRawPage - cmn r0, #1 - ldr ip, [sp, #4] - beq .L1611 - ldrb r3, [r5, #2312] @ zero_extendqisi2 - cmn r4, #1 - moveq r4, r0 - add r3, r3, r3, asl #1 - cmp r0, r3, asr #2 - bcc .L1616 - mov r8, #0 - mov r10, r8 -.L1611: - add r7, r7, #1 - b .L1610 -.L1616: - mov r4, r0 -.L1613: - mov r0, r6 + bcc .L1605 +.L1604: mov r1, #0 + mov r0, r6 bl SamsungSetRRPara - ldrb r3, [r5, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 cmp r4, r3, asr #2 - bcc .L1615 + bcc .L1600 cmn r4, #1 movne r4, #256 -.L1615: +.L1600: mov r0, r4 - add sp, sp, #12 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1624: + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1605: + uxtb r1, r7 + mov r0, r6 + bl SamsungSetRRPara + mov r3, r9 + mov r2, r10 + mov r1, fp + mov r0, r8 + bl FlashReadRawPage + cmn r0, #1 + beq .L1602 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + cmn r4, #1 + moveq r4, r0 + add r3, r3, r3, lsl #1 + cmp r0, r3, asr #2 + bcc .L1608 + mov r9, #0 + mov r10, r9 +.L1602: + add r7, r7, #1 + b .L1601 +.L1608: + mov r4, r0 + b .L1604 +.L1615: .align 2 -.L1623: +.L1614: .word .LANCHOR0 .word .LANCHOR2 .fnend .size SamsungReadRetrial, .-SamsungReadRetrial .align 2 .global MicronReadRetrial + .syntax unified + .arm + .fpu softvfp .type MicronReadRetrial, %function MicronReadRetrial: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 -.L1627: - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} +.L1618: + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r3 - ldr r3, .L1651 - mov fp, r2 - .pad #36 - sub sp, sp, #36 - mov r6, r0 - mov r10, #0 - ldrb r5, [r3, #2312] @ zero_extendqisi2 - ldrb r3, [r3, #144] @ zero_extendqisi2 - str r1, [sp, #20] + mov r7, r3 + ldr r3, .L1642 + mov r10, r2 + .pad #44 + sub sp, sp, #44 + mov r5, r0 + ldr fp, .L1642 + ldrb r2, [r3, #2316] @ zero_extendqisi2 + ldrb r3, [r3, #152] @ zero_extendqisi2 + str r1, [sp, #28] cmp r3, #0 - addeq r5, r5, r5, asl #1 - ldrne r2, .L1651+4 - ubfxeq r5, r5, #2, #8 - smullne r2, r3, r5, r2 - uxtbne r5, r3 - ldr r3, .L1651 - add r3, r3, r0, asl #3 - str r3, [sp, #24] -.L1637: - mov r0, r6 + ldrne r3, .L1642+4 + addeq r2, r2, r2, lsl #1 + asreq r3, r2, #2 + smullne r2, r3, r2, r3 + str r3, [sp, #12] + mov r3, #0 + str r3, [sp, #16] + add r3, fp, r0, lsl #3 + str r3, [sp, #36] +.L1628: + mov r0, r5 mov r9, #0 bl NandcWaitFlashReady + ldr r3, [fp, r5, lsl #3] mvn r4, #0 - ldr r3, [sp, #24] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [sp, #24] - ldrb r3, [r3, #16] @ zero_extendqisi2 - str r3, [sp, #16] - ldr r2, [sp, #16] - ldr r3, [sp, #12] - add r7, r3, r2, asl #8 -.L1628: - ldr r3, .L1651+8 - ldrb r3, [r3, #1713] @ zero_extendqisi2 + str r3, [sp, #20] + ldr r3, [sp, #36] + ldrb r3, [r3, #4] @ zero_extendqisi2 + str r3, [sp, #24] + ldr r2, [sp, #24] + ldr r3, [sp, #20] + add r6, r3, r2, lsl #8 +.L1619: + ldr r3, .L1642+8 + ldrb r3, [r3, #1721] @ zero_extendqisi2 cmp r9, r3 - bcs .L1631 + bcc .L1623 +.L1622: + ldr r3, [sp, #20] + mov r0, #200 + ldr r2, [sp, #24] + add r6, r3, r2, lsl #8 + mov r3, #239 + str r3, [r6, #2056] + mov r3, #137 + str r3, [r6, #2052] + bl ndelay + mov r3, #0 + str r3, [r6, #2048] + str r3, [r6, #2048] + str r3, [r6, #2048] + str r3, [r6, #2048] + ldr r3, [sp, #12] + cmp r4, r3 + bcc .L1624 + cmn r4, #1 + movne r4, #256 +.L1624: + cmn r4, #1 + movne r6, #0 + moveq r6, #1 + cmp r4, #256 + movne r1, r6 + orreq r1, r6, #1 + cmp r1, #0 + beq .L1625 + mov r3, r9 + str r4, [sp] + ldr r2, [sp, #28] + mov r1, r9 + ldr r0, .L1642+12 + bl printk + ldr r3, [sp, #16] + cmp r3, #0 + bne .L1626 + ldrb r3, [fp, #152] @ zero_extendqisi2 + cmp r3, #0 + moveq r6, #0 + andne r6, r6, #1 + cmp r6, #0 + beq .L1616 + mov r1, #3 + mov r0, r5 + bl micron_auto_read_calibration_config + mov r3, #1 + str r3, [sp, #16] + b .L1628 +.L1623: mov r3, #239 mov r0, #200 - str r3, [r7, #2056] + str r3, [r6, #2056] mov r3, #137 - str r3, [r7, #2052] - bl NandcDelayns - mov ip, #0 + str r3, [r6, #2052] + mov r8, #0 + bl ndelay add r3, r9, #1 - mov r0, r6 - str r3, [r7, #2048] - mov r2, fp - str ip, [r7, #2048] - str ip, [r7, #2048] - str ip, [r7, #2048] - str r3, [sp, #8] - mov r3, r8 - ldr r1, [sp, #20] - str ip, [sp, #28] + mov r2, r10 + str r3, [r6, #2048] + mov r0, r5 + str r8, [r6, #2048] + str r3, [sp, #32] + mov r3, r7 + str r8, [r6, #2048] + ldr r1, [sp, #28] + str r8, [r6, #2048] bl FlashReadRawPage cmn r0, #1 - beq .L1629 - cmn r4, #1 - ldr ip, [sp, #28] - moveq r4, r0 - cmp r0, r5 - bcc .L1639 - mov r8, ip - mov fp, ip -.L1629: - ldr r9, [sp, #8] - b .L1628 -.L1639: - mov r4, r0 - mov r8, ip - mov fp, ip -.L1631: - ldr r2, [sp, #16] - mov r0, #200 + beq .L1620 ldr r3, [sp, #12] - add r7, r3, r2, asl #8 - mov r3, #239 - str r3, [r7, #2056] - mov r3, #137 - str r3, [r7, #2052] - bl NandcDelayns - cmp r4, r5 - mov r3, #0 - str r3, [r7, #2048] - str r3, [r7, #2048] - str r3, [r7, #2048] - str r3, [r7, #2048] - bcc .L1633 cmn r4, #1 - movne r4, #256 -.L1633: - cmn r4, #1 - movne r7, #0 - moveq r7, #1 - cmp r4, #256 - movne r1, r7 - orreq r1, r7, #1 - cmp r1, #0 - beq .L1634 - str r4, [sp] - mov r1, r9 - ldr r0, .L1651+12 - mov r3, r9 - ldr r2, [sp, #20] - bl printk - cmp r10, #0 - bne .L1635 - ldr r3, .L1651 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cmp r3, #0 - moveq r7, #0 - andne r7, r7, #1 - cmp r7, #0 - beq .L1644 - mov r0, r6 - mov r1, #3 - bl micron_auto_read_calibration_config - mov r10, #1 - b .L1637 -.L1635: - mov r0, r6 + moveq r4, r0 + cmp r0, r3 + bcc .L1630 + mov r7, r8 + mov r10, r8 +.L1620: + ldr r9, [sp, #32] + b .L1619 +.L1630: + mov r4, r0 + mov r7, r8 + mov r10, r8 + b .L1622 +.L1626: mov r1, #0 + mov r0, r5 bl micron_auto_read_calibration_config cmn r4, #1 movne r4, #256 - b .L1644 -.L1634: - cmp r10, #0 - beq .L1644 - mov r0, r6 +.L1616: + mov r0, r4 + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1625: + ldr r3, [sp, #16] + cmp r3, #0 + beq .L1616 + mov r0, r5 mov r4, #256 bl micron_auto_read_calibration_config -.L1644: - mov r0, r4 - add sp, sp, #36 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1652: + b .L1616 +.L1643: .align 2 -.L1651: +.L1642: .word .LANCHOR0 .word 1431655766 .word .LANCHOR2 @@ -9729,296 +10231,299 @@ .size MicronReadRetrial, .-MicronReadRetrial .align 2 .global HynixReadRetrial + .syntax unified + .arm + .fpu softvfp .type HynixReadRetrial, %function HynixReadRetrial: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r8, r3 - ldr r5, .L1671 - mov r10, r2 - mov r7, r0 - mov fp, r1 - add r2, r5, r0 + mov r9, r3 + ldr r5, .L1662 + mov r8, #0 mvn r6, #0 - ldr r3, [r5, #44] - ldrb r4, [r2, #1222] @ zero_extendqisi2 - ldrb r9, [r5, #1212] @ zero_extendqisi2 + mov fp, r2 + mov r7, r0 + str r1, [sp, #4] + ldr r3, [r5, #48] + add r2, r5, r0 + ldrb r4, [r2, #1228] @ zero_extendqisi2 + ldrb r10, [r5, #1218] @ zero_extendqisi2 ldrb r3, [r3, #19] @ zero_extendqisi2 sub r3, r3, #7 cmp r3, #1 - ldrlsb r4, [r2, #1230] @ zero_extendqisi2 + ldrbls r4, [r2, #1236] @ zero_extendqisi2 bl NandcWaitFlashReady - mov ip, #0 -.L1655: - cmp ip, r9 - bcs .L1659 - add r4, r4, #1 - mov r0, r7 - ldrb r1, [r5, #1211] @ zero_extendqisi2 - uxtb r4, r4 - ldr r2, .L1671+4 - cmp r4, r9 - str ip, [sp, #4] - movcs r4, #0 - mov r3, r4 - bl HynixSetRRPara - mov r0, r7 - mov r1, fp - mov r2, r10 - mov r3, r8 - bl FlashReadRawPage - cmn r0, #1 - ldr ip, [sp, #4] - beq .L1657 - ldrb r3, [r5, #2312] @ zero_extendqisi2 - cmn r6, #1 - moveq r6, r0 - add r3, r3, r3, asl #1 - cmp r0, r3, asr #2 - bcc .L1664 - mov r8, #0 - mov r10, r8 -.L1657: - add ip, ip, #1 - b .L1655 -.L1664: - mov r6, r0 -.L1659: - ldr r3, [r5, #44] +.L1646: + cmp r8, r10 + bcc .L1651 +.L1650: + ldr r3, [r5, #48] add r7, r5, r7 ldrb r3, [r3, #19] @ zero_extendqisi2 sub r3, r3, #7 cmp r3, #1 - ldrb r3, [r5, #2312] @ zero_extendqisi2 - strlsb r4, [r7, #1230] - strhib r4, [r7, #1222] - add r3, r3, r3, asl #1 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + strbls r4, [r7, #1236] + strbhi r4, [r7, #1228] + add r3, r3, r3, lsl #1 cmp r6, r3, asr #2 - bcc .L1663 + bcc .L1644 cmn r6, #1 movne r6, #256 -.L1663: +.L1644: mov r0, r6 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1672: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1651: + add r4, r4, #1 + ldr r2, .L1662+4 + uxtb r4, r4 + ldrb r1, [r5, #1217] @ zero_extendqisi2 + mov r0, r7 + cmp r10, r4 + movls r4, #0 + mov r3, r4 + bl HynixSetRRPara + mov r3, r9 + mov r2, fp + ldr r1, [sp, #4] + mov r0, r7 + bl FlashReadRawPage + cmn r0, #1 + beq .L1648 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + cmn r6, #1 + moveq r6, r0 + add r3, r3, r3, lsl #1 + cmp r0, r3, asr #2 + bcc .L1655 + mov r9, #0 + mov fp, r9 +.L1648: + add r8, r8, #1 + b .L1646 +.L1655: + mov r6, r0 + b .L1650 +.L1663: .align 2 -.L1671: +.L1662: .word .LANCHOR0 - .word .LANCHOR0+1214 + .word .LANCHOR0+1220 .fnend .size HynixReadRetrial, .-HynixReadRetrial .align 2 + .syntax unified + .arm + .fpu softvfp .type samsung_read_retrial, %function samsung_read_retrial: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 mov r10, r0 mov fp, r2 - mov r8, r3 - str r1, [sp, #12] + mov r9, r3 + str r1, [sp, #16] bl NandcWaitFlashReady - ldr r3, .L1703 - add r2, r3, r10, asl #3 - ldr r4, [r2, #12] - ldrb r2, [r2, #16] @ zero_extendqisi2 - str r2, [sp, #8] - ldrb r2, [r3, #2228] @ zero_extendqisi2 - str r3, [sp, #16] + ldr r3, .L1694 + ldr r2, [r3, r10, lsl #3] + str r3, [sp, #20] + str r2, [sp, #12] + add r2, r3, r10, lsl #3 + ldrb r6, [r2, #4] @ zero_extendqisi2 + ldrb r2, [r3, #2232] @ zero_extendqisi2 cmp r2, #0 - bne .L1674 - ldr r3, [sp, #8] - mvn r5, #0 - mov r6, #1 - mov r9, r3, asl #8 - add r7, r4, r9 -.L1678: + bne .L1665 + ldr r3, [sp, #12] + lsl r8, r6, #8 + mvn r4, #0 + mov r7, #1 + add r5, r3, r8 +.L1669: mov r3, #239 - str r3, [r7, #2056] + mov r6, #0 + str r3, [r5, #2056] mov r3, #141 - str r3, [r7, #2052] - ldr r3, .L1703+4 - mov ip, #0 - mov r0, r10 - ldr r1, [sp, #12] + str r3, [r5, #2052] mov r2, fp - str ip, [sp, #20] - ldrsb r3, [r6, r3] - str r3, [r7, #2048] - mov r3, r8 - str ip, [r7, #2048] - str ip, [r7, #2048] - str ip, [r7, #2048] + ldr r3, .L1694+4 + mov r0, r10 + ldr r1, [sp, #16] + ldrsb r3, [r7, r3] + str r3, [r5, #2048] + mov r3, r9 + str r6, [r5, #2048] + str r6, [r5, #2048] + str r6, [r5, #2048] bl FlashReadRawPage cmn r0, #1 - beq .L1675 - ldr r3, [sp, #16] - cmn r5, #1 - moveq r5, r0 - ldrb r3, [r3, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 + beq .L1666 + ldr r3, [sp, #20] + cmn r4, #1 + moveq r4, r0 + ldrb r3, [r3, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1686 - ldr ip, [sp, #20] - mov r8, ip - mov fp, ip -.L1675: - add r6, r6, #1 - cmp r6, #26 - bne .L1678 - b .L1677 -.L1686: - mov r5, r0 -.L1677: - add r9, r4, r9 + bcc .L1677 + mov r9, r6 + mov fp, r6 +.L1666: + add r7, r7, #1 + cmp r7, #26 + bne .L1669 +.L1668: + ldr r3, [sp, #12] + add r8, r3, r8 mov r3, #239 - str r3, [r9, #2056] - ldr r3, [sp, #8] - add r4, r4, r3, asl #8 + str r3, [r8, #2056] mov r3, #141 - b .L1702 -.L1674: - ldr r3, [sp, #8] - mvn r5, #0 - ldr r7, .L1703+8 - mov r6, #1 - mov ip, r3, asl #8 - add r9, r4, ip -.L1683: - mov r3, #239 - str r3, [r9, #2056] - mov r3, #137 - str r3, [r9, #2052] - ldrb r3, [r7, #4] @ zero_extendqisi2 - mov r0, r10 - ldr r1, [sp, #12] - mov r2, fp - str ip, [sp, #20] - str r3, [r9, #2048] - ldrb r3, [r7, #5] @ zero_extendqisi2 - str r3, [r9, #2048] - ldrb r3, [r7, #6] @ zero_extendqisi2 - str r3, [r9, #2048] - ldrb r3, [r7, #7] @ zero_extendqisi2 - str r3, [r9, #2048] - mov r3, r8 - bl FlashReadRawPage - cmn r0, #1 - ldr ip, [sp, #20] - beq .L1680 - ldr r3, [sp, #16] - cmn r5, #1 - moveq r5, r0 - ldrb r3, [r3, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp r0, r3, asr #2 - bcc .L1687 - mov r8, #0 - mov fp, r8 -.L1680: - add r6, r6, #1 - add r7, r7, #4 - cmp r6, #26 - bne .L1683 - b .L1682 -.L1687: - mov r5, r0 -.L1682: - add ip, r4, ip - mov r3, #239 - str r3, [ip, #2056] - ldr r3, [sp, #8] - add r4, r4, r3, asl #8 - mov r3, #137 -.L1702: - str r3, [r4, #2052] +.L1693: + str r3, [r5, #2052] mov r3, #0 - str r3, [r4, #2048] - str r3, [r4, #2048] - str r3, [r4, #2048] - str r3, [r4, #2048] - ldr r3, [sp, #16] - ldrb r3, [r3, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp r5, r3, asr #2 - bcc .L1684 - cmn r5, #1 - movne r5, #256 -.L1684: - cmn r5, #1 - cmpne r5, #256 - bne .L1685 - str r5, [sp] - mov r1, r6 - ldr r0, .L1703+12 - mov r3, r6 - ldr r2, [sp, #12] + str r3, [r5, #2048] + str r3, [r5, #2048] + str r3, [r5, #2048] + str r3, [r5, #2048] + ldr r3, .L1694 + ldrb r3, [r3, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r4, r3, asr #2 + bcc .L1675 + cmn r4, #1 + movne r4, #256 +.L1675: + cmn r4, #1 + cmpne r4, #256 + bne .L1676 + str r4, [sp] + mov r3, r7 + ldr r2, [sp, #16] + mov r1, r7 + ldr r0, .L1694+8 bl printk -.L1685: +.L1676: mov r0, r10 bl NandcWaitFlashReady - mov r0, r5 + mov r0, r4 add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1704: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1677: + mov r4, r0 + b .L1668 +.L1665: + ldr r3, [sp, #12] + lsl r6, r6, #8 + ldr r8, .L1694+12 + mvn r4, #0 + mov r7, #1 + add r5, r3, r6 +.L1674: + mov r3, #239 + mov r2, fp + str r3, [r5, #2056] + mov r3, #137 + str r3, [r5, #2052] + mov r0, r10 + ldrb r3, [r8, #4] @ zero_extendqisi2 + ldr r1, [sp, #16] + str r3, [r5, #2048] + ldrb r3, [r8, #5] @ zero_extendqisi2 + str r3, [r5, #2048] + ldrb r3, [r8, #6] @ zero_extendqisi2 + str r3, [r5, #2048] + ldrb r3, [r8, #7] @ zero_extendqisi2 + str r3, [r5, #2048] + mov r3, r9 + bl FlashReadRawPage + cmn r0, #1 + beq .L1671 + ldr r3, .L1694 + cmn r4, #1 + moveq r4, r0 + ldrb r3, [r3, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r0, r3, asr #2 + bcc .L1678 + mov r9, #0 + mov fp, r9 +.L1671: + add r7, r7, #1 + add r8, r8, #4 + cmp r7, #26 + bne .L1674 +.L1673: + ldr r3, [sp, #12] + add r6, r3, r6 + mov r3, #239 + str r3, [r6, #2056] + mov r3, #137 + b .L1693 +.L1678: + mov r4, r0 + b .L1673 +.L1695: .align 2 -.L1703: +.L1694: .word .LANCHOR0 - .word .LANCHOR3+16 - .word .LANCHOR3+44 + .word .LANCHOR3+11 .word .LC95 + .word .LANCHOR3+37 .fnend .size samsung_read_retrial, .-samsung_read_retrial .align 2 .global FlashProgPage + .syntax unified + .arm + .fpu softvfp .type FlashProgPage, %function FlashProgPage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + push {r0, r1, r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1709 + ldr r3, .L1700 subs r4, r0, #0 mov r5, r1 mov r7, r2 - ldrb r6, [r3, #481] @ zero_extendqisi2 - bne .L1706 - ldr r2, .L1709+4 - ldrb r3, [r2, #1] @ zero_extendqisi2 - ldr r1, [r2, #4] - mul r1, r1, r3 - cmp r5, r1 - bcs .L1706 - ldrb r3, [r2] @ zero_extendqisi2 + ldrb r6, [r3, #477] @ zero_extendqisi2 + bne .L1697 + ldr r1, .L1700+4 + ldrb r3, [r1, #37] @ zero_extendqisi2 + ldr r0, [r1, #40] + mul r0, r0, r3 + cmp r0, r5 + bls .L1697 + ldrb r3, [r1, #36] @ zero_extendqisi2 cmp r3, #0 movne r6, #4 -.L1706: +.L1697: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 bl NandcFlashCs - mov r0, r4 mov r1, r5 - bl FlashProgFirstCmd - mov r2, r6 - mov r3, r7 mov r0, r4 - mov r1, #1 + bl FlashProgFirstCmd + mov r3, r7 + mov r2, r6 str r8, [sp] + mov r1, #1 + mov r0, r4 bl NandcXferData mov r1, r5 mov r0, r4 @@ -10028,287 +10533,288 @@ mov r1, r5 mov r0, r4 bl FlashReadStatus - mov r5, r0 + mov r1, r0 mov r0, r4 bl NandcFlashDeCs - and r0, r5, #1 + and r0, r1, #1 add sp, sp, #8 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1710: + pop {r4, r5, r6, r7, r8, pc} +.L1701: .align 2 -.L1709: +.L1700: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashProgPage, .-FlashProgPage .align 2 .global FlashSavePhyInfo + .syntax unified + .arm + .fpu softvfp .type FlashSavePhyInfo, %function FlashSavePhyInfo: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {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 r4, .L1725 - ldr r5, .L1725+4 - ldr r8, .L1725+8 - ldr r3, [r4, #1688] - mov fp, r4 - ldrb r0, [r4, #1714] @ zero_extendqisi2 - mov r10, r5 - str r3, [r4, #1700] + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r4, .L1716 + ldr r5, .L1716+4 + ldr r3, [r4, #1696] + ldrb r0, [r4, #1722] @ zero_extendqisi2 + ldr r8, .L1716+8 + str r3, [r4, #1708] bl FlashBchSel - mov r1, #0 mov r2, #2048 - ldr r0, [r4, #1688] + mov r1, #0 + ldr r0, [r4, #1696] bl ftl_memset - ldr r3, [r4, #1700] - ldr r1, .L1725+12 + ldr r3, [r4, #1708] mov r2, #32 + ldr r1, .L1716+12 str r8, [r3] - ldr r0, [r4, #1700] - ldrb r3, [r5, #2230] @ zero_extendqisi2 + ldr r0, [r4, #1708] + ldrb r3, [r5, #2234] @ zero_extendqisi2 add r0, r0, #16 strh r3, [r0, #-4] @ movhi - ldrb r3, [r5, #1] @ zero_extendqisi2 + ldrb r3, [r5, #37] @ zero_extendqisi2 strh r3, [r0, #-2] @ movhi - ldrb r3, [r5, #2252] @ zero_extendqisi2 + ldrb r3, [r5, #2256] @ zero_extendqisi2 str r3, [r0, #1060] bl ftl_memcpy - ldr r0, [r4, #1700] - ldr r1, .L1725+16 + ldr r0, [r4, #1708] mov r2, #8 + ldr r1, .L1716+16 add r0, r0, #80 bl ftl_memcpy - ldr r0, [r4, #1700] - ldr r1, .L1725+20 + ldr r0, [r4, #1708] mov r2, #32 + ldr r1, .L1716+20 add r0, r0, #96 bl ftl_memcpy - ldr r0, [r4, #1700] - ldr r1, .L1725+24 + ldr r0, [r4, #1708] mov r2, #32 + ldr r1, .L1716+24 add r0, r0, #160 bl ftl_memcpy - ldr r0, [r4, #1700] - add r1, r5, #48 + ldr r0, [r4, #1708] mov r2, #32 + add r1, r5, #52 add r0, r0, #192 bl ftl_memcpy - ldr r0, [r4, #1700] + ldr r0, [r4, #1708] mov r2, #852 - ldr r1, .L1725+28 + add r1, r5, #1216 add r0, r0, #224 bl ftl_memcpy - ldr r6, [r4, #1700] + ldr r6, [r4, #1708] movw r1, #2036 add r0, r6, #12 bl js_hash movw r3, #1592 - str r3, [r6, #4] - ldr r3, [r4, #1716] - str r3, [r4, #1700] str r0, [r6, #8] - mov r0, #0 - bl flash_enter_slc_mode + str r3, [r6, #4] mov r6, #0 + ldr r3, [r4, #1724] mov r7, r6 -.L1717: - ldr r1, [r5, #4] mov r0, #0 - mov r2, r0 + str r3, [r4, #1708] + bl flash_enter_slc_mode +.L1708: + ldr r1, [r5, #40] + mov r2, #0 + mov r0, r2 mul r1, r1, r7 bl FlashEraseBlock - ldrb r9, [r5, #144] @ zero_extendqisi2 + ldrb r9, [r5, #152] @ zero_extendqisi2 cmp r9, #0 - beq .L1712 + beq .L1703 mov r9, #0 -.L1713: - ldr r1, [r5, #4] - mov r0, #0 - ldr r2, [r4, #1688] - mov r3, r0 +.L1704: + ldr r1, [r5, #40] + mov r3, #0 + ldr r2, [r4, #1696] + mov r0, r3 mla r1, r1, r7, r9 add r9, r9, #1 bl FlashProgPage cmp r9, #10 - bne .L1713 - b .L1714 -.L1712: - ldr r1, [r10, #4] - mov r3, r9 - ldr r2, [r4, #1688] - mov r0, r9 - mul r1, r1, r7 - bl FlashProgPage - ldr r1, [r10, #4] - mov r0, r9 - ldr r2, [r4, #1688] - mov r3, r9 - mul r1, r1, r7 - add r1, r1, #1 - bl FlashProgPage -.L1714: - ldr r1, [r5, #4] - mov r0, #0 - ldr r2, [r4, #1716] - mov r3, r0 + bne .L1704 +.L1705: + ldr r1, [r5, #40] + mov r3, #0 + ldr r2, [r4, #1724] + mov r0, r3 + add r10, r7, #1 mul r1, r1, r7 bl FlashReadRawPage - add r2, r7, #1 cmn r0, #1 - beq .L1715 - ldr r9, [fp, #1700] + beq .L1706 + ldr r9, [r4, #1708] ldr r3, [r9] cmp r3, r8 - bne .L1715 - add r0, r9, #12 + bne .L1706 movw r1, #2036 - str r2, [sp, #4] + add r0, r9, #12 bl js_hash ldr r3, [r9, #8] cmp r3, r0 - ldr r2, [sp, #4] - bne .L1715 - ldr r3, [r10, #4] + bne .L1706 + ldr r3, [r5, #40] cmp r6, #1 - str r2, [fp, #1708] - mul r7, r3, r7 - str r7, [fp, #1704] - beq .L1718 + str r10, [r4, #1716] + mul r7, r7, r3 + str r7, [r4, #1712] + beq .L1709 mov r6, #1 -.L1715: - cmp r2, #4 - mov r7, r2 - bne .L1717 - b .L1716 -.L1718: - mov r6, #2 -.L1716: +.L1706: + cmp r10, #4 + mov r7, r10 + bne .L1708 +.L1707: mov r0, #0 bl flash_exit_slc_mode clz r0, r6 - mov r0, r0, lsr #5 + lsr r0, r0, #5 rsb r0, r0, #0 - add sp, sp, #12 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1726: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1703: + ldr r1, [r5, #40] + mov r3, r9 + ldr r2, [r4, #1696] + mov r0, r9 + mul r1, r1, r7 + bl FlashProgPage + ldr r1, [r5, #40] + mov r3, r9 + ldr r2, [r4, #1696] + mov r0, r9 + mul r1, r1, r7 + add r1, r1, #1 + bl FlashProgPage + b .L1705 +.L1709: + mov r6, #2 + b .L1707 +.L1717: .align 2 -.L1725: +.L1716: .word .LANCHOR2 .word .LANCHOR0 .word 1312902724 - .word .LANCHOR0+2068 - .word .LANCHOR0+2232 - .word .LANCHOR0+1172 - .word .LANCHOR1+472 - .word .LANCHOR0+1210 + .word .LANCHOR0+2072 + .word .LANCHOR0+2236 + .word .LANCHOR0+1180 + .word .LANCHOR1+468 .fnend .size FlashSavePhyInfo, .-FlashSavePhyInfo .align 2 .global FlashReadIdbDataRaw + .syntax unified + .arm + .fpu softvfp .type FlashReadIdbDataRaw, %function FlashReadIdbDataRaw: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r0 - ldr r3, .L1747 + mov r3, #60 .pad #20 sub sp, sp, #20 - ldr r4, .L1747+4 - ldr r0, [r3] @ unaligned - ldr r3, [r4, #2248] - ldrb r10, [r4, #2312] @ zero_extendqisi2 + ldr r4, .L1737 + mov r10, r0 + strb r3, [sp, #12] + mov r3, #40 + strb r3, [sp, #13] + mov r3, #24 + strb r3, [sp, #14] + mov r3, #16 + strb r3, [sp, #15] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + str r3, [sp, #4] + ldr r3, [r4, #2252] cmp r3, #0 - str r0, [sp, #12] @ unaligned - beq .L1728 + beq .L1719 mov r0, #0 bl flash_enter_slc_mode -.L1728: - mov r0, r9 - mov r1, #0 - mov r2, #2048 +.L1719: + ldr r6, .L1737+4 mvn r8, #0 - bl ftl_memset mov r5, #2 -.L1729: - ldrb r3, [r4, #1] @ zero_extendqisi2 - cmp r5, r3 - bcs .L1733 - ldr fp, .L1747+8 - mov r7, #0 -.L1731: - add r3, sp, #12 - ldr r6, .L1747+8 - ldrb ip, [r7, r3] @ zero_extendqisi2 - mov r0, ip - str ip, [sp, #4] - bl FlashBchSel - ldr r1, [r4, #4] - mov r0, #0 - ldr r2, [fp, #1688] - mov r3, r0 - mul r1, r1, r5 - bl FlashReadRawPage - cmn r0, #1 - ldr ip, [sp, #4] - bne .L1730 - add r7, r7, #1 - cmp r7, #4 - bne .L1731 - b .L1732 -.L1730: - ldr r3, [r6, #1688] - ldr r2, .L1747+12 - ldr r3, [r3] - cmp r3, r2 - bne .L1732 - mov r1, ip - ldr r0, .L1747+16 - bl printk mov r2, #2048 - mov r0, r9 - ldr r1, [r6, #1688] - bl ftl_memcpy - ldr r3, [r6, #1688] - ldr r2, .L1747+4 - ldr r3, [r3, #512] - strb r3, [r2, #1] - ldr r3, [r6, #1708] - cmp r3, r5 - bls .L1736 - str r5, [r6, #1708] - bl FlashSavePhyInfo - mov r8, #0 -.L1732: - add r5, r5, #1 - b .L1729 -.L1736: - mov r8, #0 -.L1733: + mov r1, #0 mov r0, r10 + bl ftl_memset +.L1720: + ldrb r3, [r4, #37] @ zero_extendqisi2 + cmp r5, r3 + bcc .L1725 +.L1724: + ldr r0, [sp, #4] bl FlashBchSel - ldr r3, [r4, #2248] + ldr r3, [r4, #2252] cmp r3, #0 - beq .L1740 + beq .L1718 mov r0, #0 bl flash_exit_slc_mode -.L1740: +.L1718: mov r0, r8 add sp, sp, #20 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1748: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1725: + mov r7, #0 + add fp, sp, #12 +.L1722: + ldrb r9, [r7, fp] @ zero_extendqisi2 + mov r0, r9 + bl FlashBchSel + ldr r1, [r4, #40] + mov r3, #0 + ldr r2, [r6, #1696] + mov r0, r3 + mul r1, r1, r5 + bl FlashReadRawPage + cmn r0, #1 + bne .L1721 + add r7, r7, #1 + cmp r7, #4 + bne .L1722 +.L1723: + add r5, r5, #1 + b .L1720 +.L1728: + mov r8, #0 + b .L1724 +.L1721: + ldr r3, [r6, #1696] + ldr r2, .L1737+8 + ldr r3, [r3] + cmp r3, r2 + bne .L1723 + mov r1, r9 + ldr r0, .L1737+12 + bl printk + mov r2, #2048 + ldr r1, [r6, #1696] + mov r0, r10 + bl ftl_memcpy + ldr r3, [r6, #1696] + ldr r3, [r3, #512] + strb r3, [r4, #37] + ldr r3, [r6, #1716] + cmp r5, r3 + bcs .L1728 + str r5, [r6, #1716] + mov r8, #0 + bl FlashSavePhyInfo + b .L1723 +.L1738: .align 2 -.L1747: - .word .LANCHOR3+11 +.L1737: .word .LANCHOR0 .word .LANCHOR2 .word -52655045 @@ -10317,846 +10823,823 @@ .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 2 .global FlashInit + .syntax unified + .arm + .fpu softvfp .type FlashInit, %function FlashInit: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r0 - .pad #20 - sub sp, sp, #20 + mov r7, r0 + ldr r5, .L1837 + .pad #28 + sub sp, sp, #28 + mov r0, #32768 + mov r6, #0 + bl ftl_malloc + str r0, [r5, #1696] mov r0, #32768 bl ftl_malloc - ldr r8, .L1848 - ldr r4, .L1848+4 - mov r7, #0 - add r9, r4, #12 - str r0, [r8, #1688] - mov r0, #32768 - bl ftl_malloc - str r0, [r8, #1716] + str r0, [r5, #1724] mov r0, #4096 - bl ftl_malloc - str r0, [r8, #1720] + bl ftl_dma32_malloc + str r0, [r5, #1728] mov r0, #32768 bl ftl_malloc - str r0, [r8, #1724] + ldr r4, .L1837+4 + mov r8, r6 + str r0, [r5, #1732] mov r0, #4096 - bl ftl_malloc + bl ftl_dma32_malloc + ldr fp, .L1837+8 mov r3, #50 - str r7, [r8, #1708] - strb r3, [r4, #1] - strb r3, [r8, #1712] + str r0, [r5, #1736] + mov r0, r7 + ldr r7, .L1837+12 + strb r3, [r4, #37] + strb r3, [r5, #1720] mov r3, #128 - strb r7, [r4, #2252] - str r3, [r4, #4] + str r3, [r4, #40] mov r3, #60 - str r7, [r8, #1692] - strb r7, [r4] - strb r7, [r8, #1732] - strb r3, [r8, #1714] - str r0, [r8, #1728] - mov r0, r5 + str r6, [r5, #1716] + strb r6, [r4, #2256] + str r6, [r5, #1700] + strb r6, [r4, #36] + strb r6, [r5, #1740] + strb r3, [r5, #1722] bl NandcInit - ldr r5, .L1848+8 -.L1755: - add r3, r9, r7, asl #3 - uxtb fp, r7 - ldr r6, [r9, r7, asl #3] - ldrb r10, [r3, #4] @ zero_extendqisi2 - mov r0, fp +.L1745: + add r2, r4, r6, lsl #3 + uxtb r9, r6 + ldr r10, [r4, r6, lsl #3] + ldrb r2, [r2, #4] @ zero_extendqisi2 + mov r0, r9 + str r2, [sp, #20] bl FlashReset - mov r0, fp + mov r0, r9 bl NandcFlashCs + ldr r2, [sp, #20] mov r3, #144 - add r6, r6, r10, asl #8 mov r0, #200 - mov r10, #0 - str r3, [r6, #2056] - str r10, [r6, #2052] - bl NandcDelayns - ldr r2, [r6, #2048] + add r10, r10, r2, lsl #8 + str r3, [r10, #2056] + str r8, [r10, #2052] + bl ndelay + ldr r2, [r10, #2048] uxtb r2, r2 - strb r2, [r5] - ldr r1, [r6, #2048] + strb r2, [r7] cmp r2, #44 - strb r1, [r5, #1] - ldr r1, [r6, #2048] - strb r1, [r5, #2] - ldr r1, [r6, #2048] - strb r1, [r5, #3] - ldr r1, [r6, #2048] - strb r1, [r5, #4] - ldr r1, [r6, #2048] - strb r1, [r5, #5] - bne .L1750 + ldr r1, [r10, #2048] + strb r1, [r7, #1] + ldr r1, [r10, #2048] + strb r1, [r7, #2] + ldr r1, [r10, #2048] + strb r1, [r7, #3] + ldr r1, [r10, #2048] + strb r1, [r7, #4] + ldr r1, [r10, #2048] + strb r1, [r7, #5] + bne .L1740 mov r2, #239 mov r0, #200 - str r2, [r6, #2056] + str r2, [r10, #2056] mov r2, #1 - str r2, [r6, #2052] - bl NandcDelayns + str r2, [r10, #2052] + bl ndelay mov r2, #4 - str r2, [r6, #2048] - str r10, [r6, #2048] - str r10, [r6, #2048] - str r10, [r6, #2048] -.L1750: - mov r0, fp + str r2, [r10, #2048] + str r8, [r10, #2048] + str r8, [r10, #2048] + str r8, [r10, #2048] +.L1740: + mov r0, r9 bl NandcFlashDeCs - ldrb r2, [r5] @ zero_extendqisi2 + ldrb r2, [r7] @ zero_extendqisi2 sub r3, r2, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1751 - ldrb r1, [r5, #2] @ zero_extendqisi2 - ldrb r3, [r5, #1] @ zero_extendqisi2 - ldr r0, .L1848+12 - str r1, [sp] - ldrb r1, [r5, #3] @ zero_extendqisi2 - str r1, [sp, #4] - ldrb r1, [r5, #4] @ zero_extendqisi2 - str r1, [sp, #8] - ldrb r1, [r5, #5] @ zero_extendqisi2 + bhi .L1741 + ldrb r1, [r7, #5] @ zero_extendqisi2 + mov r0, fp + ldrb r3, [r7, #1] @ zero_extendqisi2 str r1, [sp, #12] - add r1, r7, #1 + ldrb r1, [r7, #4] @ zero_extendqisi2 + str r1, [sp, #8] + ldrb r1, [r7, #3] @ zero_extendqisi2 + str r1, [sp, #4] + ldrb r1, [r7, #2] @ zero_extendqisi2 + str r1, [sp] + add r1, r6, #1 bl printk -.L1751: - cmp r7, #0 - bne .L1752 - ldrb r3, [r4, #2068] @ zero_extendqisi2 +.L1741: + cmp r6, #0 + bne .L1742 + ldrb r3, [r4, #2072] @ zero_extendqisi2 sub r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1802 - ldr r3, .L1848+4 - ldrb r3, [r3, #2069] @ zero_extendqisi2 + bhi .L1792 + ldrb r3, [r4, #2073] @ zero_extendqisi2 cmp r3, #255 - beq .L1802 -.L1752: - ldrb r3, [r5] @ zero_extendqisi2 - add r7, r7, #1 - add r5, r5, #8 + beq .L1792 +.L1742: + ldrb r3, [r7] @ zero_extendqisi2 + add r6, r6, #1 + add r7, r7, #8 cmp r3, #181 moveq r3, #44 - streqb r3, [r5, #-8] - cmp r7, #4 - bne .L1755 - ldrb r3, [r4, #2068] @ zero_extendqisi2 + strbeq r3, [r7, #-8] + cmp r6, #4 + bne .L1745 + ldrb r3, [r4, #2072] @ zero_extendqisi2 cmp r3, #173 - beq .L1756 - ldr r3, .L1848+4 - ldr r0, [r3, #2256] + beq .L1746 + ldr r0, [r4, #2260] bl NandcSetDdrMode -.L1756: +.L1746: mov r2, #852 - ldr r0, .L1848+16 mov r1, #0 - ldr r5, .L1848+20 + ldr r0, .L1837+16 bl ftl_memset - ldr r2, [r4, #2264] - ldr r0, .L1848+24 - cmp r2, r5 - add r3, r0, #472 - str r3, [r4, #44] + ldr r6, .L1837+20 + ldr r2, .L1837+24 + ldr r0, [r4, #2268] + add r3, r2, #468 + cmp r0, r6 + str r3, [r4, #48] mov r3, #0 - strb r3, [r4, #8] - bne .L1757 - ldrb r3, [r0, #491] @ zero_extendqisi2 + strb r3, [r4, #44] + bne .L1747 + ldrb r3, [r2, #487] @ zero_extendqisi2 cmp r3, #50 - ldrne r3, .L1848+4 - movne r1, #1 - strne r1, [r3, #2248] -.L1757: - ldrb r6, [r4, #2069] @ zero_extendqisi2 - sub ip, r6, #218 - cmp r6, #161 - cmpne r6, #241 - clz ip, ip - and r1, r6, #253 - moveq r3, #1 - movne r3, #0 - mov ip, ip, lsr #5 - orr r3, ip, r3 - cmp r1, #209 - orreq r3, r3, #1 - cmp r3, #0 - bne .L1758 - cmp r6, #220 - bne .L1759 - ldr r3, .L1848+4 - ldrb r3, [r3, #2071] @ zero_extendqisi2 - cmp r3, #149 - bne .L1759 -.L1758: - mov lr, #16 - strb lr, [r4, #1] - strb lr, [r8, #1714] + movne r3, #1 + strne r3, [r4, #2252] +.L1747: + ldrb r3, [r4, #2073] @ zero_extendqisi2 + cmp r3, #241 + cmpne r3, #161 + and ip, r3, #253 + moveq r1, #1 + movne r1, #0 + cmp r3, #218 + orreq r1, r1, #1 + cmp ip, #209 + orreq r1, r1, #1 + cmp r1, #0 + bne .L1748 + cmp r3, #220 + bne .L1749 + ldrb r1, [r4, #2075] @ zero_extendqisi2 + cmp r1, #149 + bne .L1749 +.L1748: + mov ip, #16 mov r1, #1 - ldrb lr, [r4, #2068] @ zero_extendqisi2 - strb r1, [r4] - cmp lr, #152 - ldr r3, .L1848 - strb lr, [r0, #3417] - strb r6, [r0, #3418] - bne .L1761 - ldr r7, .L1848+4 - movw lr, #2072 - ldrsb lr, [r7, lr] - cmp lr, #0 - strltb r1, [r3, #1732] - movge r1, #24 - strgeb r1, [r3, #1714] -.L1761: - movw r3, #2049 - cmp r2, r5 - cmpne r2, r3 - moveq r3, #16 - streqb r3, [r8, #1714] - cmp ip, #0 - ldrne r3, .L1848+28 - movne r2, #2048 - strneh r2, [r3, #14] @ movhi - mvnne r3, #37 - bne .L1842 -.L1765: - cmp r6, #220 - bne .L1767 - ldr r3, .L1848+28 - mov r2, #4096 - strh r2, [r3, #14] @ movhi - mvn r3, #35 -.L1842: - strb r3, [r0, #3418] - b .L1766 -.L1767: - cmp r6, #211 - ldreq r3, .L1848+28 - moveq r2, #4096 - streqh r2, [r3, #14] @ movhi - moveq r3, #2 - streqb r3, [r0, #3429] -.L1766: - ldr r1, .L1848+32 + strb ip, [r4, #37] + strb ip, [r5, #1722] + ldrb ip, [r4, #2072] @ zero_extendqisi2 + strb r1, [r4, #36] + strb r3, [r2, #3414] + cmp ip, #152 + strb ip, [r2, #3413] + bne .L1751 + ldrb ip, [r4, #2076] @ zero_extendqisi2 + lsrs ip, ip, #7 + moveq r1, #24 + strbne r1, [r5, #1740] + strbeq r1, [r5, #1722] +.L1751: + movw r1, #2049 + cmp r0, r1 + cmpne r0, r6 + moveq r1, #16 + strbeq r1, [r5, #1722] + cmp r3, #218 + bne .L1755 + ldr r3, .L1837+28 + mov r1, #2048 + strh r1, [r3, #14] @ movhi + mvn r3, #37 +.L1831: + strb r3, [r2, #3414] +.L1756: mov r2, #32 - ldr r0, .L1848+36 + ldr r1, .L1837+32 + ldr r0, .L1837+36 bl ftl_memcpy - ldr r0, .L1848+40 + ldr r1, .L1837+28 mov r2, #32 - add r1, r0, #2944 + sub r0, r1, #2944 bl ftl_memcpy -.L1759: - ldrb r3, [r4] @ zero_extendqisi2 - ldr r6, .L1848+4 +.L1749: + ldrb r3, [r4, #36] @ zero_extendqisi2 cmp r3, #0 - bne .L1768 + bne .L1759 bl FlashLoadPhyInfoInRam cmp r0, #0 - bne .L1770 - ldr r3, [r6, #44] + bne .L1761 + ldr r3, [r4, #48] ldrh r3, [r3, #16] - mov r3, r3, lsr #8 + lsr r3, r3, #8 tst r3, #1 and r0, r3, #7 - strb r0, [r6, #2229] - bne .L1770 + strb r0, [r4, #2233] + bne .L1761 mov r3, #1 - strb r3, [r6, #2252] + strb r3, [r4, #2256] bl FlashSetInterfaceMode - ldrb r0, [r6, #2229] @ zero_extendqisi2 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl NandcSetMode -.L1770: - ldr r3, [r4, #44] - ldr r6, .L1848+4 +.L1761: + ldr r3, [r4, #48] ldrb r3, [r3, #26] @ zero_extendqisi2 - strb r3, [r4, #144] + strb r3, [r4, #152] bl FlashLoadPhyInfo cmp r0, #0 - beq .L1768 - ldr r3, [r6, #2256] + beq .L1759 + ldr r3, [r4, #2260] cmp r3, #0 - beq .L1773 + beq .L1764 mov r0, #1 bl FlashSetInterfaceMode mov r0, #1 - b .L1843 -.L1773: - ldrb r0, [r6, #2229] @ zero_extendqisi2 - bl FlashSetInterfaceMode - ldrb r0, [r6, #2229] @ zero_extendqisi2 -.L1843: +.L1832: bl NandcSetMode bl FlashLoadPhyInfo cmp r0, #0 - beq .L1768 + beq .L1759 mov r0, #1 - ldr r6, .L1848+4 bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode - ldr r3, [r4, #44] - ldr r0, .L1848+44 + ldr r3, [r4, #48] + ldr r0, .L1837+40 ldrh r1, [r3, #14] bl printk bl FlashLoadPhyInfoInRam cmn r0, #1 - beq .L1816 + beq .L1739 bl FlashDieInfoInit - ldr r3, [r6, #44] + ldr r3, [r4, #48] ldrb r0, [r3, #19] @ zero_extendqisi2 bl FlashGetReadRetryDefault - ldr r3, .L1848+48 - ldr r2, [r6, #44] + ldr r3, .L1837+44 + ldr r2, [r4, #48] ldrh r3, [r3, #-2] ldrb r1, [r2, #9] @ zero_extendqisi2 add r3, r3, #4080 add r3, r3, #15 cmp r1, r3, asr #12 ldrh r3, [r2, #14] - blt .L1775 + blt .L1766 add r0, r3, #255 cmp r1, r0, asr #8 - bge .L1776 -.L1775: + bge .L1767 +.L1766: bic r3, r3, #255 strh r3, [r2, #14] @ movhi -.L1776: - ldrb r3, [r4, #2229] @ zero_extendqisi2 +.L1767: + ldrb r3, [r4, #2233] @ zero_extendqisi2 tst r3, #6 - beq .L1777 + beq .L1768 bl FlashSavePhyInfo mov r0, #0 bl flash_enter_slc_mode + ldr r1, [r5, #1712] mov r0, #0 - ldr r1, [r8, #1704] bl FlashDdrParaScan mov r0, #0 bl flash_exit_slc_mode -.L1777: - bl FlashSavePhyInfo .L1768: - ldr r2, [r4, #44] - ldr r7, .L1848+4 - ldr r6, .L1848 - ldrb r3, [r2, #26] @ zero_extendqisi2 - ldrh r0, [r2, #10] - ldrb r9, [r2, #18] @ zero_extendqisi2 - strb r3, [r4, #144] - ldrh r3, [r2, #16] - ubfx r1, r3, #7, #1 - strb r1, [r4, #8] - ubfx r1, r3, #3, #1 - strb r1, [r8, #1733] - ubfx r1, r3, #4, #1 + bl FlashSavePhyInfo +.L1759: + ldr r7, [r4, #48] + ldrb r3, [r7, #26] @ zero_extendqisi2 + ldrb r1, [r7, #12] @ zero_extendqisi2 + ldrh r0, [r7, #10] + strb r3, [r4, #152] + ldrh r3, [r7, #16] + ubfx r2, r3, #7, #1 + strb r2, [r4, #44] + ubfx r2, r3, #3, #1 + strb r2, [r5, #1741] + ubfx r2, r3, #4, #1 ubfx r3, r3, #8, #3 - strb r1, [r4, #2240] - strb r3, [r4, #2229] + strb r2, [r4, #2244] + strb r3, [r4, #2233] mov r3, #0 - ldrb r1, [r2, #12] @ zero_extendqisi2 - str r3, [r8, #1696] + str r3, [r5, #1704] bl __aeabi_idiv mov r1, r0 - mov r0, r9 + ldrb r0, [r7, #18] @ zero_extendqisi2 bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr r3, [r4, #44] + ldr r3, [r4, #48] ldrh r2, [r3, #16] tst r2, #64 - beq .L1779 + beq .L1770 ldrb r0, [r3, #19] @ zero_extendqisi2 - ldrb r3, [r7, #1211] @ zero_extendqisi2 - strb r0, [r7, #1208] - strb r3, [r7, #1209] - ldrb r3, [r7, #1212] @ zero_extendqisi2 - strb r3, [r6, #1713] + ldrb r3, [r4, #1217] @ zero_extendqisi2 + strb r0, [r4, #84] + strb r3, [r4, #85] + ldrb r3, [r4, #1218] @ zero_extendqisi2 + strb r3, [r5, #1721] sub r3, r0, #1 cmp r3, #7 - bhi .L1780 - ldr r3, .L1848+52 - str r3, [r6, #1696] + bhi .L1771 + ldr r3, .L1837+48 + str r3, [r5, #1704] sub r3, r0, #5 cmp r0, #8 cmpne r3, #1 - sub r6, r0, #8 - clz r6, r6 movls r3, #1 - strls r3, [r7, #2304] + strls r3, [r4, #2308] cmp r0, #7 - mov r6, r6, lsr #5 - ldreq r6, .L1848+56 - beq .L1783 - ldr r3, .L1848+56 - cmp r6, #0 - sub r2, r3, #8 - movne r6, r3 - moveq r6, r2 -.L1783: - sub r2, r6, #1 - add r6, r6, #31 - mov r3, #0 -.L1784: - ldrsb r1, [r2, #1]! - cmp r1, #0 - addeq r3, r3, #1 - cmp r2, r6 - bne .L1784 - cmp r3, #27 - bls .L1779 + ldr r3, .L1837+16 + beq .L1793 + cmp r0, #8 + addne r3, r3, #20 + bne .L1773 +.L1793: + add r3, r3, #28 +.L1773: + sub r1, r3, #1 + mov r2, #0 + add r3, r3, #31 +.L1775: + ldrsb ip, [r1, #1]! + cmp ip, #0 + addeq r2, r2, #1 + cmp r3, r1 + bne .L1775 + cmp r2, #27 + bls .L1770 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L1779 -.L1780: - sub r3, r0, #17 - cmp r3, #2 - bhi .L1786 - ldr r3, .L1848+60 - cmp r0, #19 - str r3, [r6, #1696] - moveq r3, #15 - bne .L1847 - b .L1845 -.L1786: - sub r3, r0, #65 - cmp r0, #33 - cmpne r3, #1 - bhi .L1788 - ldr r3, .L1848+64 - str r3, [r6, #1696] - mov r3, #4 - strb r3, [r7, #1209] -.L1847: - mov r3, #7 -.L1845: - strb r3, [r6, #1713] - b .L1779 -.L1788: - sub r2, r0, #67 - sub r3, r0, #34 - cmp r2, #1 - movhi r2, #0 - movls r2, #1 - cmp r3, #1 - movhi r3, r2 - orrls r3, r2, #1 - cmp r3, #0 - beq .L1789 - ldr r3, .L1848+64 - cmp r0, #68 - cmpne r0, #35 - str r3, [r6, #1696] - movne r3, #7 - moveq r3, #17 +.L1770: + ldr r3, [r4, #2268] + cmp r3, r6 + bne .L1785 + ldrb r2, [r4, #152] @ zero_extendqisi2 cmp r2, #0 - strb r3, [r6, #1713] - movne r3, #4 - moveq r3, #5 - strb r3, [r4, #1209] - b .L1779 -.L1789: - cmp r0, #49 - ldreq r3, .L1848+68 - streq r3, [r6, #1696] - beq .L1779 - cmp r0, #50 - streq r3, [r7, #2248] - ldreq r2, .L1848+72 - streq r2, [r6, #1696] -.L1779: - ldr r2, [r4, #2264] - ldr r3, .L1848+4 - cmp r2, r5 - bne .L1794 - ldrb r1, [r3, #144] @ zero_extendqisi2 - cmp r1, #0 - ldrne r3, [r3, #44] + ldrne r2, [r4, #48] movne r1, #0 - strneb r1, [r3, #18] -.L1794: - ldrb r1, [r4, #2068] @ zero_extendqisi2 - ldr r3, .L1848+4 - cmp r1, #44 - bne .L1795 - ldrb r1, [r3, #2252] @ zero_extendqisi2 - cmp r1, #0 - beq .L1795 - cmp r2, r5 - bne .L1796 - ldrb r3, [r3, #144] @ zero_extendqisi2 + strbne r1, [r2, #18] +.L1785: + ldrb r2, [r4, #2072] @ zero_extendqisi2 + cmp r2, #44 + bne .L1786 + ldrb r2, [r4, #2256] @ zero_extendqisi2 + cmp r2, #0 + beq .L1786 + cmp r3, r6 + bne .L1787 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L1795 -.L1796: - mov r0, #1 + bne .L1786 +.L1787: mov r3, #0 - strb r3, [r4, #2252] + mov r0, #1 + strb r3, [r4, #2256] bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode -.L1795: - ldrb r3, [r4, #2229] @ zero_extendqisi2 +.L1786: + ldrb r3, [r4, #2233] @ zero_extendqisi2 tst r3, #6 - beq .L1797 - ldr r2, .L1848+4 - ldrb r2, [r2, #2252] @ zero_extendqisi2 + beq .L1788 + ldrb r2, [r4, #2256] @ zero_extendqisi2 cmp r2, #0 - bne .L1798 + bne .L1789 tst r3, #1 - bne .L1797 -.L1798: + bne .L1788 +.L1789: mov r0, #0 bl flash_enter_slc_mode + ldr r1, [r5, #1712] mov r0, #0 - ldr r1, [r8, #1704] bl FlashDdrParaScan mov r0, #0 bl flash_exit_slc_mode -.L1797: - ldr r3, [r4, #44] - mov r7, #16 - ldr r6, .L1848+4 +.L1788: + ldr r3, [r4, #48] + mov r6, #16 ldrb r0, [r3, #20] @ zero_extendqisi2 bl FlashBchSel - ldr r0, .L1848+76 + ldr r0, .L1837+52 bl FlashReadIdbDataRaw - ldr r0, .L1848+80 - strb r7, [r4, #1] + ldr r0, .L1837+56 + strb r6, [r4, #37] bl FlashTimingCfg - ldr r5, [r4, #44] - ldrb r2, [r4, #2069] @ zero_extendqisi2 + ldr r5, [r4, #48] + ldrb r2, [r4, #2073] @ zero_extendqisi2 ldrb r3, [r5, #12] @ zero_extendqisi2 - ldrh r8, [r5, #14] - strh r3, [r4, #124] @ movhi - ldrb r3, [r5, #7] @ zero_extendqisi2 - str r3, [r4, #120] - mov r3, r2, asl r7 - orr r2, r3, r2, asl #8 - ldrb r3, [r4, #2068] @ zero_extendqisi2 - orr r3, r2, r3 - ldrb r2, [r4, #2071] @ zero_extendqisi2 - orr r3, r3, r2, asl #24 - str r3, [r4, #116] - ldrb r3, [r4, #2230] @ zero_extendqisi2 - strh r3, [r4, #126] @ movhi - ldrb r3, [r5, #13] @ zero_extendqisi2 - strh r8, [r4, #130] @ movhi - strh r3, [r4, #128] @ movhi - ldrh r3, [r5, #10] + ldrh r7, [r5, #14] strh r3, [r4, #132] @ movhi + ldrb r3, [r5, #7] @ zero_extendqisi2 + str r3, [r4, #128] + lsl r3, r2, r6 + orr r3, r3, r2, lsl #8 + ldrb r2, [r4, #2072] @ zero_extendqisi2 + orr r3, r3, r2 + ldrb r2, [r4, #2075] @ zero_extendqisi2 + orr r3, r3, r2, lsl #24 + str r3, [r4, #124] + ldrb r3, [r4, #2234] @ zero_extendqisi2 + strh r3, [r4, #134] @ movhi + ldrb r3, [r5, #13] @ zero_extendqisi2 + strh r7, [r4, #138] @ movhi + strh r3, [r4, #136] @ movhi + ldrh r3, [r5, #10] + strh r3, [r4, #140] @ movhi ldrb r1, [r5, #12] @ zero_extendqisi2 ldrh r0, [r5, #10] bl __aeabi_idiv - strh r0, [r4, #134] @ movhi + strh r0, [r4, #142] @ movhi ldrb r2, [r5, #9] @ zero_extendqisi2 - strh r2, [r4, #136] @ movhi - ldrb r1, [r5, #9] @ zero_extendqisi2 - ldrh r3, [r5, #10] - smulbb r3, r1, r3 + strh r2, [r4, #144] @ movhi + ldrh r1, [r5, #10] + ldrb r3, [r5, #9] @ zero_extendqisi2 + smulbb r3, r3, r1 mov r1, #512 - strh r1, [r4, #140] @ movhi - ldrb r1, [r4, #1] @ zero_extendqisi2 - strh r1, [r4, #142] @ movhi + strh r1, [r4, #148] @ movhi + ldrb r1, [r4, #37] @ zero_extendqisi2 uxth r3, r3 - ldrb r1, [r4] @ zero_extendqisi2 - strh r3, [r4, #138] @ movhi + strh r1, [r4, #150] @ movhi + ldrb r1, [r4, #36] @ zero_extendqisi2 + strh r3, [r4, #146] @ movhi cmp r1, #1 - bne .L1800 - mov r3, r3, asl #1 - mov r8, r8, lsr #1 - mov r2, r2, asl #1 - strh r3, [r6, #138] @ movhi - strb r7, [r6, #1] + bne .L1790 + lsl r3, r3, #1 + lsr r1, r7, #1 + lsl r2, r2, #1 + strb r6, [r4, #37] + strh r3, [r4, #146] @ movhi mov r3, #8 - strh r8, [r6, #130] @ movhi - strh r2, [r6, #136] @ movhi - strh r3, [r6, #142] @ movhi -.L1800: + strh r1, [r4, #138] @ movhi + strh r2, [r4, #144] @ movhi + strh r3, [r4, #150] @ movhi +.L1790: ldrb r0, [r5, #20] @ zero_extendqisi2 bl FlashBchSel bl ftl_flash_suspend mov r0, #0 - b .L1816 -.L1802: - mvn r0, #1 -.L1816: - add sp, sp, #20 +.L1739: + add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1849: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1755: + cmp r3, #220 + ldreq r3, .L1837+28 + moveq r1, #4096 + strheq r1, [r3, #14] @ movhi + mvneq r3, #35 + beq .L1831 +.L1757: + cmp r3, #211 + ldreq r3, .L1837+28 + moveq r1, #4096 + strheq r1, [r3, #14] @ movhi + moveq r3, #2 + strbeq r3, [r2, #3425] + b .L1756 +.L1764: + ldrb r0, [r4, #2233] @ zero_extendqisi2 + bl FlashSetInterfaceMode + ldrb r0, [r4, #2233] @ zero_extendqisi2 + b .L1832 +.L1771: + sub r3, r0, #17 + cmp r3, #2 + bhi .L1777 + ldr r3, .L1837+60 + cmp r0, #19 + str r3, [r5, #1704] + moveq r3, #15 + beq .L1834 +.L1836: + mov r3, #7 +.L1834: + strb r3, [r5, #1721] + b .L1770 +.L1777: + sub r3, r0, #65 + cmp r0, #33 + cmpne r3, #1 + ldrls r3, .L1837+64 + strls r3, [r5, #1704] + movls r3, #4 + strbls r3, [r4, #85] + bls .L1836 +.L1779: + sub r3, r0, #67 + sub r2, r0, #34 + uxtb r3, r3 + cmp r3, #1 + cmphi r2, #1 + movls r2, #1 + movhi r2, #0 + bhi .L1780 + ldr r2, .L1837+64 + cmp r0, #68 + cmpne r0, #35 + str r2, [r5, #1704] + movne r2, #7 + moveq r2, #17 + cmp r3, #1 + movls r3, #4 + movhi r3, #5 + strb r2, [r5, #1721] + strb r3, [r4, #85] + b .L1770 +.L1780: + cmp r0, #49 + ldreq r3, .L1837+68 + streq r3, [r5, #1704] + beq .L1770 + cmp r0, #50 + ldreq r3, .L1837+72 + streq r2, [r4, #2252] + streq r3, [r5, #1704] + b .L1770 +.L1792: + mvn r0, #1 + b .L1739 +.L1838: .align 2 -.L1848: +.L1837: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2068 .word .LC97 - .word .LANCHOR0+1210 + .word .LANCHOR0+2072 + .word .LANCHOR0+1216 .word 1446522928 .word .LANCHOR1 - .word .LANCHOR1+3416 - .word .LANCHOR1+3292 - .word .LANCHOR0+48 - .word .LANCHOR1+472 + .word .LANCHOR1+3412 + .word .LANCHOR1+3288 + .word .LANCHOR0+52 .word .LC98 .word .LANCHOR2-568 .word HynixReadRetrial - .word .LANCHOR0+1238 + .word .LANCHOR2-364 + .word 150000 .word MicronReadRetrial .word ToshibaReadRetrial .word SamsungReadRetrial .word samsung_read_retrial - .word .LANCHOR2-364 - .word 150000 .fnend .size FlashInit, .-FlashInit .align 2 .global FlashPageProgMsbFFData + .syntax unified + .arm + .fpu softvfp .type FlashPageProgMsbFFData, %function FlashPageProgMsbFFData: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r7, r1 - ldr r1, .L1867 + mov r8, r0 + ldr r5, .L1855 + mov r9, r1 mov r4, r2 - mov r6, r0 - ldrb r2, [r1, #144] @ zero_extendqisi2 - mov r5, r1 - ldr r3, [r1, #44] - cmp r2, #0 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L1840 + ldr r3, [r5, #2252] + cmp r3, #0 + popne {r4, r5, r6, r7, r8, r9, r10, pc} +.L1840: + ldr r3, [r5, #48] ldrb r3, [r3, #19] @ zero_extendqisi2 - beq .L1851 - ldr r2, [r1, #2248] - cmp r2, #0 - ldmnefd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L1851: sub r2, r3, #5 cmp r3, #50 cmpne r2, #2 - bls .L1852 + bls .L1841 sub r2, r3, #19 - tst r2, #239 - moveq r2, #1 - movne r2, #0 - cmp r3, #68 - movne r3, r2 - orreq r3, r2, #1 - cmp r3, #0 - ldmeqfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L1852: - ldr r8, .L1867+4 - movw r10, #65535 - ldr r9, .L1867+8 -.L1854: - ldr r3, [r5, #44] + and r2, r2, #239 + cmp r2, #0 + cmpne r3, #68 + popne {r4, r5, r6, r7, r8, r9, r10, pc} +.L1841: + ldr r6, .L1855+4 + sub r7, r6, #2608 + sub r7, r7, #12 +.L1843: + ldr r3, [r5, #48] ldrh r3, [r3, #10] cmp r3, r4 - bls .L1866 - mov r3, r4, asl #1 - ldrh r3, [r9, r3] - cmp r3, r10 - ldmnefd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} - mov r1, #255 + bhi .L1844 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1844: + lsl r3, r4, #1 + ldrh r2, [r7, r3] + movw r3, #65535 + cmp r2, r3 + popne {r4, r5, r6, r7, r8, r9, r10, pc} mov r2, #32768 - ldr r0, [r8, #1716] + mov r1, #255 + ldr r0, [r6, #1724] bl ftl_memset - ldr r2, [r8, #1716] - add r1, r4, r7 + ldr r3, [r6, #1724] + add r1, r4, r9 + mov r0, r8 add r4, r4, #1 - mov r0, r6 - mov r3, r2 uxth r4, r4 + mov r2, r3 bl FlashProgPage - b .L1854 -.L1866: - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L1868: + b .L1843 +.L1856: .align 2 -.L1867: +.L1855: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2-2620 .fnend .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .align 2 .global FlashReadSlc2KPages + .syntax unified + .arm + .fpu softvfp .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1920 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L1906 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r4, r0 + ldr r8, .L1906+4 + mov r9, #0 .pad #36 sub sp, sp, #36 - ldrb r3, [r3, #481] @ zero_extendqisi2 - mov r4, r0 - mov r8, #0 + ldr fp, .L1906+8 + ldrb r3, [r3, #477] @ zero_extendqisi2 str r1, [sp, #16] str r2, [sp, #20] str r3, [sp, #12] -.L1870: +.L1858: ldr r3, [sp, #16] - cmp r8, r3 - beq .L1919 + cmp r9, r3 + bne .L1878 + mov r0, #0 + add sp, sp, #36 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1878: ldr r3, [sp, #16] add r2, sp, #28 - mov r0, r4 ldr r1, [sp, #20] - rsb r3, r8, r3 - ldr r9, .L1920+4 + mov r0, r4 + sub r3, r3, r9 uxtb r3, r3 str r3, [sp] add r3, sp, #24 - mov fp, r9 bl LogAddr2PhyAddr - ldrb r2, [r9, #2230] @ zero_extendqisi2 + ldrb r2, [r8, #2234] @ zero_extendqisi2 ldr r3, [sp, #24] - cmp r3, r2 - mvncs r3, #0 - strcs r3, [r4] - bcs .L1872 - add r3, r9, r3 + cmp r2, r3 + mvnls r3, #0 + strls r3, [r4] + bls .L1860 + add r3, r8, r3 mov r7, #0 - ldrb r5, [r3, #2232] @ zero_extendqisi2 - mov r0, r5 + ldrb r6, [r3, #2236] @ zero_extendqisi2 + mov r0, r6 bl NandcWaitFlashReady - mov r0, r5 + mov r0, r6 bl NandcFlashCs -.L1873: +.L1861: ldr r1, [sp, #28] - mov r0, r5 + mov r0, r6 bl FlashReadCmd - mov r0, r5 + mov r0, r6 bl NandcWaitFlashReady ldr r3, [r4, #12] - mov r0, r5 mov r1, #0 - str r3, [sp] ldr r2, [sp, #12] + mov r0, r6 + str r3, [sp] ldr r3, [r4, #8] bl NandcXferData - ldr r3, .L1920+8 - ldrb r3, [r3, #1732] @ zero_extendqisi2 + ldrb r3, [fp, #1740] @ zero_extendqisi2 + mov r5, r0 cmp r3, #0 - mov r6, r0 - beq .L1874 - mov r0, r5 + beq .L1862 + mov r0, r6 bl flash_read_ecc cmp r0, #5 - movhi r6, #256 -.L1874: + movhi r5, #256 +.L1862: cmp r7, #9 - cmnls r6, #1 + cmnls r5, #1 moveq r3, #1 movne r3, #0 addeq r7, r7, #1 - beq .L1873 -.L1875: + beq .L1861 +.L1863: cmp r7, #0 mov r7, r3 - movne r6, #256 -.L1877: - ldr r3, [sp, #28] - mov r0, r5 - ldr r1, [fp, #4] + movne r5, #256 +.L1865: + ldr r3, [r8, #40] + mov r0, r6 + ldr r1, [sp, #28] add r1, r1, r3 bl FlashReadCmd - mov r0, r5 + mov r0, r6 bl NandcWaitFlashReady ldr r3, [r4, #8] - ldr r2, [r4, #12] - mov r0, r5 - cmp r3, #0 mov r1, #0 + ldr r2, [r4, #12] + mov r0, r6 + cmp r3, #0 addne r3, r3, #2048 cmp r2, #0 addne r2, r2, #8 str r2, [sp] ldr r2, [sp, #12] bl NandcXferData - ldr r3, .L1920+8 - ldrb r2, [r3, #1732] @ zero_extendqisi2 - cmp r2, #0 + ldrb r2, [fp, #1740] @ zero_extendqisi2 mov r10, r0 - beq .L1880 - mov r0, r5 + cmp r2, #0 + beq .L1868 + mov r0, r6 bl flash_read_ecc cmp r0, #5 movhi r10, #256 -.L1880: +.L1868: cmp r7, #9 cmnls r10, #1 addeq r7, r7, #1 - beq .L1877 -.L1881: + beq .L1865 +.L1869: cmp r7, #0 - mov r0, r5 + mov r0, r6 movne r10, #256 bl NandcFlashDeCs - ldrb r2, [r9, #2312] @ zero_extendqisi2 - cmp r10, r6 - movcs r3, r10 - movcc r3, r6 - add r2, r2, r2, asl #1 - cmp r3, r2, asr #2 - bls .L1883 - cmn r3, #1 - movne r3, #256 -.L1883: - cmp r3, #256 - cmnne r3, #1 + ldrb r3, [r8, #2316] @ zero_extendqisi2 + cmp r5, r10 + movcc r5, r10 + add r3, r3, r3, lsl #1 + cmp r5, r3, asr #2 + bls .L1871 + cmn r5, #1 + movne r5, #256 +.L1871: + cmp r5, #256 + cmnne r5, #1 movne r3, #0 - str r3, [r4] + streq r5, [r4] + strne r3, [r4] ldr r3, [r4, #12] cmp r3, #0 - beq .L1886 + beq .L1874 ldr r2, [r3, #12] cmn r2, #1 - bne .L1886 + bne .L1874 ldr r2, [r3, #8] cmn r2, #1 - bne .L1886 + bne .L1874 ldr r3, [r3] cmn r3, #1 strne r2, [r4] -.L1886: +.L1874: ldr r3, [r4] cmn r3, #1 - bne .L1872 + bne .L1860 ldr r1, [r4, #4] - ldr r0, .L1920+12 - ldrb r2, [r9, #2312] @ zero_extendqisi2 + ldrb r2, [r8, #2316] @ zero_extendqisi2 + ldr r0, .L1906+12 bl printk ldr r1, [r4, #8] cmp r1, #0 - beq .L1888 - ldr r0, .L1920+16 - mov r2, #4 + beq .L1876 mov r3, #8 + mov r2, #4 + ldr r0, .L1906+16 bl rknand_print_hex -.L1888: +.L1876: ldr r1, [r4, #12] cmp r1, #0 - beq .L1872 - mov r2, #4 - ldr r0, .L1920+20 - mov r3, r2 + beq .L1860 + mov r3, #4 + ldr r0, .L1906+20 + mov r2, r3 bl rknand_print_hex -.L1872: - add r8, r8, #1 +.L1860: + add r9, r9, #1 add r4, r4, #36 - b .L1870 -.L1919: - mov r0, #0 - add sp, sp, #36 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1921: + b .L1858 +.L1907: .align 2 -.L1920: +.L1906: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 @@ -11167,2042 +11650,2030 @@ .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 .global FlashReadPages + .syntax unified + .arm + .fpu softvfp .type FlashReadPages, %function FlashReadPages: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1997 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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, .L1997+4 - ldrb r3, [r3, #481] @ zero_extendqisi2 - str r1, [sp, #20] - ldrb r8, [r6] @ zero_extendqisi2 - str r3, [sp, #16] - ldrb r3, [r6, #8] @ zero_extendqisi2 - cmp r8, #0 - str r2, [sp, #24] - str r3, [sp, #28] - beq .L1959 + ldr r4, .L1979 + str r1, [sp, #24] + ldrb r9, [r4, #36] @ zero_extendqisi2 + str r2, [sp, #28] + cmp r9, #0 + bne .L1909 + ldr r3, .L1979+4 + mov fp, r0 + ldr r10, .L1979+8 + str r9, [sp, #8] + ldrb r3, [r3, #477] @ zero_extendqisi2 + str r3, [sp, #20] + ldrb r3, [r4, #44] @ zero_extendqisi2 + str r3, [sp, #36] +.L1910: + ldr r3, [sp, #8] + ldr r2, [sp, #24] + cmp r3, r2 + bcc .L1943 + mov r0, #0 + b .L1908 +.L1909: bl FlashReadSlc2KPages - b .L1992 -.L1959: - ldr r10, .L1997+8 - mov r9, r0 - mov fp, r8 -.L1923: - ldr r3, [sp, #20] - cmp fp, r3 - bcs .L1995 +.L1908: + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1943: + ldr r2, [sp, #8] mov r3, #36 - add r2, sp, #44 - mul r3, r3, fp - ldr r1, [sp, #24] - add r7, r9, r3 - str r3, [sp, #8] - mov r0, r7 - ldr r3, [r7, #4] + ldr r1, [sp, #28] + mul r3, r3, r2 + add r8, fp, r3 str r3, [sp, #12] - ldr r3, [sp, #20] - rsb r3, fp, r3 + ldr r3, [sp, #24] + mov r0, r8 + ldr r7, [r8, #4] + sub r3, r3, r2 + add r2, sp, #44 uxtb r3, r3 str r3, [sp] add r3, sp, #40 bl LogAddr2PhyAddr - ldrb r2, [r6, #2230] @ zero_extendqisi2 + ldrb r2, [r4, #2234] @ zero_extendqisi2 + mov r6, r0 ldr r3, [sp, #40] - mov r5, r0 - cmp r3, r2 - ldrcs r2, [sp, #8] - mvncs r3, #0 - strcs r3, [r9, r2] - bcs .L1926 - add r3, r6, r3 - ldrb r4, [r3, #2232] @ zero_extendqisi2 - ldrb r3, [r10, #1733] @ zero_extendqisi2 + cmp r2, r3 + ldrls r2, [sp, #12] + mvnls r3, #0 + strls r3, [fp, r2] + bls .L1913 + add r3, r4, r3 + ldrb r5, [r3, #2236] @ zero_extendqisi2 + ldrb r3, [r10, #1741] @ zero_extendqisi2 + mov r0, r5 cmp r3, #0 - mov r0, r4 - moveq r5, #0 + moveq r6, #0 bl NandcWaitFlashReady - ldr r3, .L1997+4 - ldr r3, [r3, #44] + ldr r3, [r4, #48] ldrb r2, [r3, #19] @ zero_extendqisi2 sub r3, r2, #1 cmp r3, #7 - bhi .L1928 + bhi .L1915 sub r2, r2, #7 - add r1, r6, r4 + add r1, r4, r5 cmp r2, #1 - ldr r2, .L1997+4 - ldrb r3, [r1, #1222] @ zero_extendqisi2 - add r2, r2, r4 - ldrlsb r3, [r1, #1230] @ zero_extendqisi2 - ldrb r2, [r2, #2064] @ zero_extendqisi2 + add r2, r4, r5 + ldrb r3, [r1, #1228] @ zero_extendqisi2 + ldrb r2, [r2, #2068] @ zero_extendqisi2 + ldrbls r3, [r1, #1236] @ zero_extendqisi2 cmp r2, r3 - beq .L1928 - mov r0, r4 - ldrb r1, [r6, #1211] @ zero_extendqisi2 - ldr r2, .L1997+12 + beq .L1915 + ldr r2, .L1979+12 + mov r0, r5 + ldrb r1, [r4, #1217] @ zero_extendqisi2 bl HynixSetRRPara -.L1928: - mov r0, r4 +.L1915: + mov r0, r5 + lsr r7, r7, #31 bl NandcFlashCs - mov r0, r4 - ldr r3, [sp, #12] - ldr r2, [sp, #24] - mov r3, r3, lsr #31 - cmp r2, #1 - orreq r3, r3, #1 - str r3, [sp, #12] + ldr r3, [sp, #28] + mov r0, r5 + cmp r3, #1 + orreq r7, r7, #1 + cmp r7, #0 + str r7, [sp, #16] + beq .L1917 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L1930 - ldr r3, .L1997+4 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L1930 + beq .L1917 bl flash_enter_slc_mode - b .L1931 -.L1930: - bl flash_exit_slc_mode -.L1931: +.L1923: ldr r1, [sp, #44] cmn r1, #1 - cmpeq r4, #255 + cmpeq r5, #255 moveq r3, #0 movne r3, #1 - moveq r5, r3 - beq .L1933 - cmp r5, #0 - beq .L1934 - ldr r2, [r6, #4] - mov r0, r4 + moveq r6, r3 + beq .L1919 + cmp r6, #0 + beq .L1920 + ldr r2, [r4, #40] + mov r0, r5 add r2, r1, r2 bl FlashReadDpCmd - b .L1935 -.L1934: - mov r0, r4 - bl FlashReadCmd -.L1935: - mov r0, r4 +.L1921: + mov r0, r5 bl NandcWaitFlashReady - cmp r5, #0 - beq .L1933 - mov r0, r4 + cmp r6, #0 + beq .L1919 ldr r1, [sp, #44] + mov r0, r5 bl FlashReadDpDataOutCmd -.L1933: - ldr r3, [r7, #12] - mov r0, r4 - ldr r2, [sp, #16] +.L1919: + ldr r3, [r8, #12] mov r1, #0 + ldr r2, [sp, #20] + mov r0, r5 str r3, [sp] - ldr r3, [r7, #8] + ldr r3, [r8, #8] bl NandcXferData - ldrb r2, [r6, #8] @ zero_extendqisi2 - adds r2, r2, #0 + ldrb r3, [r4, #44] @ zero_extendqisi2 + mov r7, r0 + adds r2, r3, #0 movne r2, #1 cmn r0, #1 - mov ip, r0 movne r2, #0 cmp r2, #0 - movne r3, #0 - strneb r3, [r6, #8] - movne r5, r3 - bne .L1931 -.L1936: - cmp r5, #0 - beq .L1937 - ldr r3, .L1997+4 - str r0, [sp, #32] - mov r0, r4 - str r2, [sp, #36] - ldr r1, [r3, #4] - ldr r3, [sp, #44] + str r2, [sp, #32] + beq .L1922 + mov r3, #0 + mov r6, #0 + strb r3, [r4, #44] + b .L1923 +.L1917: + bl flash_exit_slc_mode + b .L1923 +.L1920: + mov r0, r5 + bl FlashReadCmd + b .L1921 +.L1922: + cmp r6, #0 + beq .L1924 + ldr r3, [r4, #40] + mov r0, r5 + ldr r1, [sp, #44] add r1, r1, r3 bl FlashReadDpDataOutCmd - mov r0, r4 - ldr r3, [sp, #8] - ldr r2, [sp, #36] + ldr r3, [sp, #12] + mov r0, r5 + ldr r1, [sp, #32] add r3, r3, #36 - add r3, r9, r3 - ldr r1, [r3, #12] - str r1, [sp] - mov r1, r2 + add r3, fp, r3 + ldr r2, [r3, #12] + str r2, [sp] + ldr r2, [sp, #20] ldr r3, [r3, #8] - ldr r2, [sp, #16] bl NandcXferData cmn r0, #1 - ldr ip, [sp, #32] - mov r8, r0 - moveq r5, #0 -.L1937: - mov r0, r4 - str ip, [sp, #32] + mov r9, r0 + moveq r6, #0 +.L1924: + mov r0, r5 bl NandcFlashDeCs - ldr ip, [sp, #32] - ldrb r3, [sp, #28] @ zero_extendqisi2 - cmn ip, #1 - strb r3, [r6, #8] - bne .L1944 - ldrb r3, [r6, #2252] @ zero_extendqisi2 + ldrb r3, [sp, #36] @ zero_extendqisi2 + cmn r7, #1 + strb r3, [r4, #44] + bne .L1925 + ldrb r3, [r4, #2256] @ zero_extendqisi2 cmp r3, #0 - bne .L1939 -.L1943: - ldr r5, [r10, #1696] - cmp r5, #0 - bne .L1940 - b .L1996 -.L1939: - ldr r3, [r6, #80] - mov r0, r4 + bne .L1926 +.L1930: + ldr r6, [r10, #1704] + cmp r6, #0 + bne .L1927 + ldr r3, [r8, #12] + mov r0, r5 + ldr r2, [r8, #8] ldr r1, [sp, #44] - ldr r5, [r3, #304] + bl FlashReadRawPage + mov r7, r0 +.L1931: + cmp r7, #256 + cmnne r7, #1 + ldreq r3, [sp, #12] + movne r3, #0 + ldrne r2, [sp, #12] + streq r7, [fp, r3] + strne r3, [fp, r2] + ldr r3, [sp, #12] + ldr r3, [fp, r3] + cmn r3, #1 + bne .L1938 + ldr r1, [r8, #4] + ldrb r2, [r4, #2316] @ zero_extendqisi2 + ldr r0, .L1979+16 + bl printk + ldr r1, [r8, #12] + cmp r1, #0 + beq .L1938 + mov r3, #4 + ldr r0, .L1979+20 + mov r2, r3 + bl rknand_print_hex +.L1938: + cmp r6, #0 + beq .L1940 + ldrb r3, [r4, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r9, r3, asr #2 + bls .L1941 + ldr r3, [r10, #1704] + cmp r3, #0 + moveq r9, #256 +.L1941: + ldr r3, [sp, #12] + cmp r9, #256 + cmnne r9, #1 + movne r2, #0 + add r3, r3, #36 + streq r9, [fp, r3] + strne r2, [fp, r3] +.L1940: + ldr r3, [sp, #8] + add r3, r3, r6 + str r3, [sp, #8] + ldr r3, [sp, #16] + cmp r3, #0 + beq .L1913 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L1913 + mov r0, r5 + bl flash_exit_slc_mode +.L1913: + ldr r3, [sp, #8] + add r3, r3, #1 + str r3, [sp, #8] + b .L1910 +.L1926: + ldr r3, [r4, #88] + mov r0, r5 + ldr r1, [sp, #44] + ldr r6, [r3, #304] mov r3, #1 str r3, [sp] - ldr r2, [r7, #8] - ldr r3, [r7, #12] + ldr r3, [r8, #12] + ldr r2, [r8, #8] bl FlashDdrTunningRead cmn r0, #1 - mov ip, r0 - beq .L1942 - ldrb r3, [r6, #2312] @ zero_extendqisi2 + mov r7, r0 + beq .L1929 + ldrb r3, [r4, #2316] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1962 -.L1942: - ubfx r0, r5, #8, #8 - str ip, [sp, #32] + bls .L1946 +.L1929: + ubfx r0, r6, #8, #8 bl NandcSetDdrPara - ldr ip, [sp, #32] - cmn ip, #1 - beq .L1943 - b .L1962 -.L1940: - mov r0, r4 + cmn r7, #1 + beq .L1930 +.L1946: + mov r6, #0 +.L1925: + ldrb r3, [r4, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r7, r3, asr #2 + bls .L1931 + ldr r3, [r10, #1704] + cmp r3, #0 + moveq r7, #256 + b .L1931 +.L1927: + ldr r3, [r8, #12] + mov r0, r5 + ldr r2, [r8, #8] ldr r1, [sp, #44] - ldr r2, [r7, #8] - ldr r3, [r7, #12] - blx r5 + blx r6 cmn r0, #1 - mov ip, r0 - bne .L1964 - ldr r3, [r6, #44] + mov r7, r0 + bne .L1948 + ldr r3, [r4, #48] ldrb r3, [r3, #19] @ zero_extendqisi2 sub r3, r3, #1 cmp r3, #7 - bhi .L1946 - mov r0, r4 - ldrb r1, [r6, #1211] @ zero_extendqisi2 - ldr r2, .L1997+12 + bhi .L1932 mov r3, #0 + ldr r2, .L1979+12 + ldrb r1, [r4, #1217] @ zero_extendqisi2 + mov r0, r5 bl HynixSetRRPara -.L1946: +.L1932: + ldr r3, [r8, #12] + mov r0, r5 + ldr r2, [r8, #8] ldr r1, [sp, #44] - mov r0, r4 - ldr r2, [r7, #8] - ldr r3, [r7, #12] bl FlashReadRawPage - ldr r1, [r7, #4] - ldrb r2, [r6, #2312] @ zero_extendqisi2 - mov ip, r0 - ldr r0, .L1997+16 - mov r3, ip - str ip, [sp, #32] + ldrb r2, [r4, #2316] @ zero_extendqisi2 + mov r7, r0 + mov r3, r0 + ldr r1, [r8, #4] + ldr r0, .L1979+24 bl printk - ldr ip, [sp, #32] - cmn ip, #1 - bne .L1964 - ldrb r5, [r6, #144] @ zero_extendqisi2 - cmp r5, #0 - beq .L1945 - ldr r3, [sp, #12] - mov r0, r4 + cmn r7, #1 + bne .L1948 + ldrb r6, [r4, #152] @ zero_extendqisi2 + cmp r6, #0 + beq .L1931 + ldr r3, [sp, #16] + mov r0, r5 cmp r3, #0 - beq .L1947 + beq .L1933 bl flash_enter_slc_mode - b .L1948 -.L1947: - bl flash_exit_slc_mode +.L1934: + ldr r6, [r10, #1704] + mov r0, r5 + ldr r3, [r8, #12] + ldr r2, [r8, #8] + ldr r1, [sp, #44] + blx r6 + mov r7, r0 .L1948: - ldr ip, [r10, #1696] - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r7, #8] - ldr r3, [r7, #12] - blx ip - mov ip, r0 - b .L1964 -.L1996: - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r7, #8] - ldr r3, [r7, #12] - bl FlashReadRawPage - mov ip, r0 - b .L1945 -.L1962: - mov r5, #0 -.L1944: - ldrb r3, [r6, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp ip, r3, asr #2 - bls .L1945 - ldr r3, [r10, #1696] - cmp r3, #0 - moveq ip, #256 - b .L1945 -.L1964: - mov r5, #0 -.L1945: - cmp ip, #256 - cmnne ip, #1 - ldreq r3, [sp, #8] - movne r3, #0 - ldrne r2, [sp, #8] - streq ip, [r9, r3] - strne r3, [r9, r2] - ldr r3, [sp, #8] - ldr r3, [r9, r3] - cmn r3, #1 - bne .L1952 - ldr r1, [r7, #4] - ldr r0, .L1997+20 - ldrb r2, [r6, #2312] @ zero_extendqisi2 - bl printk - ldr r1, [r7, #12] - cmp r1, #0 - beq .L1952 - mov r2, #4 - ldr r0, .L1997+24 - mov r3, r2 - bl rknand_print_hex -.L1952: - cmp r5, #0 - beq .L1954 - ldrb r3, [r6, #2312] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp r8, r3, asr #2 - bls .L1955 - ldr r3, [r10, #1696] - cmp r3, #0 - moveq r8, #256 -.L1955: - ldr r3, [sp, #8] - cmp r8, #256 - cmnne r8, #1 - add r3, r3, #36 - movne r2, #0 - streq r8, [r9, r3] - strne r2, [r9, r3] -.L1954: - ldr r3, [sp, #12] - add fp, fp, r5 - cmp r3, #0 - beq .L1926 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L1926 - mov r0, r4 + mov r6, #0 + b .L1931 +.L1933: bl flash_exit_slc_mode -.L1926: - add fp, fp, #1 - b .L1923 -.L1995: - mov r0, #0 -.L1992: - add sp, sp, #52 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1998: + b .L1934 +.L1980: .align 2 -.L1997: - .word .LANCHOR1 +.L1979: .word .LANCHOR0 + .word .LANCHOR1 .word .LANCHOR2 - .word .LANCHOR0+1214 - .word .LC102 + .word .LANCHOR0+1220 .word .LC99 .word .LC101 + .word .LC102 .fnend .size FlashReadPages, .-FlashReadPages .align 2 .global FlashLoadFactorBbt + .syntax unified + .arm + .fpu softvfp .type FlashLoadFactorBbt, %function FlashLoadFactorBbt: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r2, #16 - ldr r4, .L2012 + ldr r8, .L1993 .pad #60 sub sp, sp, #60 - ldr r0, .L2012+4 mov r1, #0 - ldr r10, .L2012+8 - mov r5, #0 - ldrh r3, [r4, #130] mvn fp, #0 - ldrh r6, [r4, #128] + ldr r10, .L1993+4 + mov r5, #0 + ldrh r3, [r8, #136] mov r9, r5 - mov r8, r4 + ldrh r6, [r8, #138] + ldr r0, .L1993+8 smulbb r6, r6, r3 bl ftl_memset - ldr r3, [r10, #1720] + ldr r3, [r10, #1728] uxth r6, r6 - add r2, r6, fp - str r3, [sp, #32] - uxth r3, r2 str r5, [sp, #28] - str r3, [sp, #4] -.L2000: - ldrb r3, [r8, #2230] @ zero_extendqisi2 + str r3, [sp, #32] + add r3, r6, fp + uxth r3, r3 + str r3, [sp, #8] +.L1982: + ldrb r3, [r8, #2234] @ zero_extendqisi2 uxtb r7, r5 cmp r3, r7 - bls .L2011 - mul ip, r6, r7 - ldr r4, [sp, #4] - sub r3, r6, #12 -.L2001: - cmp r4, r3 - ble .L2003 - add r2, ip, r4 - mov r1, #1 - add r0, sp, #20 - str r3, [sp, #12] - mov r2, r2, asl #10 - str r2, [sp, #24] - mov r2, r1 - str ip, [sp, #8] - bl FlashReadPages - ldr r2, [sp, #20] - ldr ip, [sp, #8] - cmn r2, #1 - ldr r3, [sp, #12] - beq .L2002 - ldr r2, [r10, #1720] - ldrh r1, [r2] - movw r2, #61664 - cmp r1, r2 - bne .L2002 - mov r1, r7 - ldr r0, .L2012+12 - mov r2, r4 - mov r7, r7, asl #1 - bl printk - ldr r3, .L2012+4 - add r9, r9, #1 - strh r4, [r3, r7] @ movhi - uxth r9, r9 - b .L2003 -.L2002: - sub r4, r4, #1 - uxth r4, r4 - b .L2001 -.L2003: - ldrb r3, [r8, #2230] @ zero_extendqisi2 - add r5, r5, #1 - cmp r3, r9 - moveq fp, #0 - b .L2000 -.L2011: + bhi .L1988 mov r0, fp add sp, sp, #60 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2013: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1988: + ldr r4, [sp, #8] + mul r3, r7, r6 + sub r2, r6, #12 + str r2, [sp, #4] +.L1983: + ldr r2, [sp, #4] + cmp r4, r2 + ble .L1985 + add r2, r4, r3 + add r0, sp, #20 + lsl r2, r2, #10 + str r3, [sp, #12] + str r2, [sp, #24] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [sp, #20] + ldr r3, [sp, #12] + cmn r2, #1 + beq .L1984 + ldr r2, [r10, #1728] + ldrh r1, [r2] + movw r2, #61664 + cmp r1, r2 + bne .L1984 + mov r1, r7 + mov r2, r4 + ldr r0, .L1993+12 + add r9, r9, #1 + bl printk + uxth r9, r9 + ldr r3, .L1993+8 + lsl r7, r7, #1 + strh r4, [r3, r7] @ movhi +.L1985: + ldrb r3, [r8, #2234] @ zero_extendqisi2 + add r5, r5, #1 + cmp r3, r9 + moveq fp, #0 + b .L1982 +.L1984: + sub r4, r4, #1 + uxth r4, r4 + b .L1983 +.L1994: .align 2 -.L2012: +.L1993: .word .LANCHOR0 - .word .LANCHOR2+1736 .word .LANCHOR2 + .word .LANCHOR2+1742 .word .LC103 .fnend .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 2 .global FlashProgSlc2KPages + .syntax unified + .arm + .fpu softvfp .type FlashProgSlc2KPages, %function FlashProgSlc2KPages: .fnstart - @ args = 0, pretend = 0, frame = 56 + @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2044 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L2023 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #68 - sub sp, sp, #68 - ldr r8, .L2044+4 - mov r6, r1 - ldrb r3, [r3, #481] @ zero_extendqisi2 - mov r9, r2 + mov r10, r1 + ldr r9, .L2023+4 + .pad #60 + sub sp, sp, #60 + mov r8, r2 mov r4, r0 - mov r10, r0 + ldrb fp, [r3, #477] @ zero_extendqisi2 + mov r6, r0 mov r7, #0 - mov fp, r8 - str r3, [sp, #12] -.L2015: +.L1996: + cmp r7, r10 + bne .L2002 + ldr r5, .L2023+8 + mov r6, #0 + ldr r9, .L2023+12 +.L2003: cmp r7, r6 - beq .L2042 - rsb r3, r7, r6 - add r2, sp, #20 - mov r0, r10 - mov r1, r9 + bne .L2010 + mov r0, #0 + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2002: + sub r3, r10, r7 + add r2, sp, #12 uxtb r3, r3 + mov r1, r8 + mov r0, r6 str r3, [sp] - add r3, sp, #24 + add r3, sp, #16 bl LogAddr2PhyAddr - ldrb r2, [r8, #2230] @ zero_extendqisi2 - ldr r3, [sp, #24] - cmp r3, r2 - mvncs r3, #0 - strcs r3, [r10] - bcs .L2017 - add r3, r8, r3 - ldrb r5, [r3, #2232] @ zero_extendqisi2 + ldrb r2, [r9, #2234] @ zero_extendqisi2 + ldr r3, [sp, #16] + cmp r2, r3 + mvnls r3, #0 + strls r3, [r6] + bls .L1998 + add r3, r9, r3 + ldrb r5, [r3, #2236] @ zero_extendqisi2 mov r0, r5 bl NandcWaitFlashReady mov r0, r5 bl NandcFlashCs mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #12] bl FlashProgFirstCmd - ldr r3, [r10, #12] + ldr r3, [r6, #12] + mov r2, fp mov r1, #1 mov r0, r5 - ldr r2, [sp, #12] str r3, [sp] - ldr r3, [r10, #8] + ldr r3, [r6, #8] bl NandcXferData mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #12] bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #12] bl FlashReadStatus - ldr r3, [sp, #20] sbfx r0, r0, #0, #1 - str r0, [r10] + ldr r1, [sp, #12] + str r0, [r6] mov r0, r5 - ldr r1, [r8, #4] + ldr r3, [r9, #40] add r1, r1, r3 bl FlashProgFirstCmd - ldr r3, [r10, #8] - ldr r2, [r10, #12] + ldr r3, [r6, #8] mov r1, #1 - cmp r3, #0 + ldr r2, [r6, #12] mov r0, r5 + cmp r3, #0 addne r3, r3, #2048 cmp r2, #0 addne r2, r2, #8 str r2, [sp] - ldr r2, [sp, #12] + mov r2, fp bl NandcXferData - ldr r1, [fp, #4] + ldr r3, [r9, #40] mov r0, r5 - ldr r3, [sp, #20] + ldr r1, [sp, #12] add r1, r1, r3 bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #12] bl FlashReadStatus tst r0, #1 mov r0, r5 mvnne r3, #0 - strne r3, [r10] + strne r3, [r6] bl NandcFlashDeCs -.L2017: +.L1998: add r7, r7, #1 - add r10, r10, #36 - b .L2015 -.L2042: - ldr r5, .L2044+8 - mov r7, #0 - mov r8, r5 -.L2022: - cmp r7, r6 - beq .L2043 + add r6, r6, #36 + b .L1996 +.L2010: ldr r3, [r4] cmn r3, #1 - bne .L2023 + bne .L2004 ldr r1, [r4, #4] - ldr r0, .L2044+12 + ldr r0, .L2023+16 bl printk - b .L2024 -.L2023: - rsb r3, r7, r6 - mov r1, r9 - add r2, sp, #20 - mov r0, r4 +.L2005: + add r6, r6, #1 + add r4, r4, #36 + b .L2003 +.L2004: + sub r3, r7, r6 + add r2, sp, #12 uxtb r3, r3 + mov r1, r8 + mov r0, r4 str r3, [sp] - add r3, sp, #24 + add r3, sp, #16 bl LogAddr2PhyAddr - ldr r2, [r5, #1724] + ldr r2, [r5, #1732] mov r3, #0 mov lr, r4 + add ip, sp, #20 str r3, [r2] - ldr r2, [r5, #1728] + ldr r2, [r5, #1736] str r3, [r2] ldmia lr!, {r0, r1, r2, r3} - add ip, sp, #28 stmia ip!, {r0, r1, r2, r3} ldmia lr!, {r0, r1, r2, r3} stmia ip!, {r0, r1, r2, r3} - add r0, sp, #28 + mov r2, r8 ldr r3, [lr] mov r1, #1 - mov r2, r9 + add r0, sp, #20 str r3, [ip] - ldr r3, [r5, #1724] - str r3, [sp, #36] - ldr r3, [r5, #1728] - str r3, [sp, #40] + ldr r3, [r5, #1732] + str r3, [sp, #28] + ldr r3, [r5, #1736] + str r3, [sp, #32] bl FlashReadPages - ldr r10, [sp, #28] + ldr r10, [sp, #20] cmn r10, #1 - bne .L2025 - ldr r0, .L2044+16 + bne .L2006 ldr r1, [r4, #4] + ldr r0, .L2023+20 bl printk str r10, [r4] -.L2025: - ldr r10, [sp, #28] +.L2006: + ldr r10, [sp, #20] cmp r10, #256 - bne .L2026 - ldr r0, .L2044+20 + bne .L2007 ldr r1, [r4, #4] + ldr r0, .L2023+24 bl printk str r10, [r4] -.L2026: +.L2007: ldr r3, [r4, #12] cmp r3, #0 - beq .L2027 + beq .L2008 ldr r2, [r3] - ldr r3, [r8, #1728] + ldr r3, [r5, #1736] ldr r3, [r3] cmp r2, r3 - beq .L2027 - ldr r0, .L2044+24 + beq .L2008 ldr r1, [r4, #4] + ldr r0, .L2023+28 bl printk mvn r3, #0 str r3, [r4] -.L2027: +.L2008: ldr r3, [r4, #8] cmp r3, #0 - beq .L2024 + beq .L2005 ldr r2, [r3] - ldr r3, [r8, #1724] + ldr r3, [r5, #1732] ldr r3, [r3] cmp r2, r3 - beq .L2024 - ldr r0, .L2044+28 + beq .L2005 ldr r1, [r4, #4] + mov r0, r9 bl printk mvn r3, #0 str r3, [r4] + b .L2005 .L2024: - add r7, r7, #1 - add r4, r4, #36 - b .L2022 -.L2043: - mov r0, #0 - add sp, sp, #68 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2045: .align 2 -.L2044: +.L2023: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 + .word .LC108 .word .LC104 .word .LC105 .word .LC106 .word .LC107 - .word .LC108 .fnend .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 2 .global FtlLoadFactoryBbt + .syntax unified + .arm + .fpu softvfp .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r7, #0 - ldr r5, .L2058 - ldr r6, .L2058+4 + ldr r5, .L2036 + ldr r6, .L2036+4 ldr r3, [r5, #-524] - sub r9, r6, #76 ldr r8, [r5, #-500] sub r10, r6, #120 - mov fp, r9 - str r3, [r5, #1760] - str r8, [r5, #1764] -.L2047: + sub r9, r6, #78 + str r3, [r5, #1768] + str r8, [r5, #1772] +.L2026: ldrh r3, [r10] cmp r7, r3 - bcs .L2057 - ldrh r4, [r9] - mvn r3, #0 - movw ip, #61664 - strh r3, [r6, #2]! @ movhi - add r4, r4, r3 - uxth r4, r4 -.L2048: - ldrh r3, [fp] - sub r2, r3, #16 - cmp r4, r2 - ble .L2050 - mla r3, r3, r7, r4 - mov r1, #1 - ldr r0, .L2058+8 - mov r2, r1 - str ip, [sp, #4] - mov r3, r3, asl #10 - str r3, [r5, #1756] - bl FlashReadPages - ldr r3, [r5, #1752] - cmn r3, #1 - ldr ip, [sp, #4] - beq .L2049 - ldrh r3, [r8] - cmp r3, ip - streqh r4, [r6] @ movhi - beq .L2050 -.L2049: - sub r4, r4, #1 - uxth r4, r4 - b .L2048 -.L2050: - add r7, r7, #1 - b .L2047 -.L2057: + bcc .L2031 mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2059: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2031: + ldrh r4, [r9] + mvn r3, #0 + ldr fp, .L2036+8 + strh r3, [r6, #2]! @ movhi + add r4, r4, r3 + movw r3, #61664 + uxth r4, r4 +.L2027: + ldrh r2, [r9] + sub r1, r2, #16 + cmp r4, r1 + ble .L2029 + mla r2, r7, r2, r4 + str r3, [sp, #4] + mov r0, fp + lsl r2, r2, #10 + str r2, [r5, #1764] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #1760] + ldr r3, [sp, #4] + cmn r2, #1 + beq .L2028 + ldrh r2, [r8] + cmp r2, r3 + bne .L2028 + strh r4, [r6] @ movhi +.L2029: + add r7, r7, #1 + b .L2026 +.L2028: + sub r4, r4, #1 + uxth r4, r4 + b .L2027 +.L2037: .align 2 -.L2058: +.L2036: .word .LANCHOR2 - .word .LANCHOR0+2462 - .word .LANCHOR2+1752 + .word .LANCHOR0+2466 + .word .LANCHOR2+1760 .fnend .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 2 .global FtlGetLastWrittenPage + .syntax unified + .arm + .fpu softvfp .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: .fnstart @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2051 cmp r1, #1 - ldr r3, .L2073 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + movweq r2, #2392 + movwne r2, #2390 + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - movweq r2, #2390 - movwne r2, #2388 + lsl r8, r0, #10 + ldrh r5, [r3, r2] .pad #104 sub sp, sp, #104 - ldrh r4, [r3, r2] - mov r8, r1 add r3, sp, #40 - mov r6, r0, asl #10 - sub r5, r4, #1 + mov r2, r1 str r3, [sp, #16] - add r0, sp, #4 + mov r7, r1 + sub r5, r5, #1 + mov r6, #0 + sxth r5, r5 mov r1, #1 - uxth r5, r5 - mov r2, r8 - mov r7, #0 - str r7, [sp, #12] - sxth r3, r5 - orr r3, r3, r6 + add r0, sp, #4 + str r6, [sp, #12] + orr r3, r5, r8 str r3, [sp, #8] bl FlashReadPages ldr r3, [sp, #40] cmn r3, #1 - bne .L2063 -.L2064: - sxth r4, r7 - sxth r3, r5 - cmp r4, r3 - bgt .L2063 - add r4, r4, r3 - add r0, sp, #4 + bne .L2041 +.L2042: + cmp r6, r5 + ble .L2045 +.L2041: + mov r0, r5 + add sp, sp, #104 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L2045: + add r3, r6, r5 + mov r2, r7 + add r3, r3, r3, lsr #31 mov r1, #1 - mov r2, r8 - add r4, r4, r4, lsr #31 - mov r4, r4, asr #1 + add r0, sp, #4 + asr r4, r3, #1 sxth r3, r4 - orr r3, r3, r6 + orr r3, r3, r8 str r3, [sp, #8] bl FlashReadPages ldr r3, [sp, #40] cmn r3, #1 - bne .L2065 + bne .L2043 ldr r3, [sp, #44] cmn r3, #1 - bne .L2065 + bne .L2043 ldr r3, [sp, #4] cmn r3, #1 subne r4, r4, #1 - uxthne r5, r4 - bne .L2064 -.L2065: - add r3, r4, #1 - uxth r7, r3 - b .L2064 -.L2063: - sxth r0, r5 - add sp, sp, #104 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2074: + sxthne r5, r4 + bne .L2042 +.L2043: + add r4, r4, #1 + sxth r6, r4 + b .L2042 +.L2052: .align 2 -.L2073: +.L2051: .word .LANCHOR0 .fnend .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 2 .global FtlLoadBbt + .syntax unified + .arm + .fpu softvfp .type FtlLoadBbt, %function FtlLoadBbt: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} - ldr r4, .L2108 - ldr r7, .L2108+4 - ldr r8, .L2108+8 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r4, .L2085 + ldr r5, .L2085+4 ldr r3, [r4, #-524] - mov r9, r4 - ldr r6, [r4, #-500] - str r3, [r4, #1760] - str r6, [r4, #1764] + add r8, r4, #1760 + ldr r7, [r4, #-500] + ldr r9, .L2085+8 + str r3, [r4, #1768] + str r7, [r4, #1772] bl FtlBbtMemInit - movw r3, #2386 - ldrh r5, [r7, r3] - sub r5, r5, #1 - uxth r5, r5 -.L2076: - ldrh r3, [r8] + movw r3, #2388 + ldrh r6, [r5, r3] + sub r6, r6, #1 + uxth r6, r6 +.L2054: + ldrh r3, [r9] sub r3, r3, #48 - cmp r5, r3 - ble .L2079 - mov r1, #1 - ldr r0, .L2108+12 - mov r2, r1 - mov r3, r5, asl #10 - str r3, [r4, #1756] + cmp r6, r3 + ble .L2057 + lsl r3, r6, #10 + mov r2, #1 + mov r1, r2 + mov r0, r8 + str r3, [r4, #1764] bl FlashReadPages - ldr r3, [r4, #1752] + ldr r3, [r4, #1760] cmn r3, #1 - bne .L2077 - ldr r3, [r9, #1756] - mov r1, #1 - ldr r0, .L2108+12 - mov r2, r1 + bne .L2055 + ldr r3, [r4, #1764] + mov r2, #1 + mov r1, r2 + mov r0, r8 add r3, r3, #1 - str r3, [r9, #1756] + str r3, [r4, #1764] bl FlashReadPages -.L2077: - ldr r3, [r4, #1752] +.L2055: + ldr r3, [r4, #1760] cmn r3, #1 - beq .L2078 - ldrh r2, [r6] + beq .L2056 + ldrh r2, [r7] movw r3, #61649 cmp r2, r3 - bne .L2078 - movw r3, #2452 - strh r5, [r7, r3] @ movhi - ldr r3, [r6, #4] - str r3, [r7, #2460] - ldr r3, .L2108+16 - ldrh r2, [r6, #8] + bne .L2056 + movw r3, #2456 + strh r6, [r5, r3] @ movhi + ldr r3, [r7, #4] + str r3, [r5, #2464] + ldr r3, .L2085+12 + ldrh r2, [r7, #8] strh r2, [r3, #4] @ movhi - b .L2079 -.L2078: - sub r5, r5, #1 - uxth r5, r5 - b .L2076 -.L2079: - movw r9, #2452 +.L2057: + movw r8, #2456 movw r2, #65535 - ldrh r3, [r7, r9] - ldr r8, .L2108+4 + ldrh r3, [r5, r8] + ldr r6, .L2085+12 cmp r3, r2 - ldr r5, .L2108+16 - beq .L2093 - ldrh r3, [r5, #4] + beq .L2071 + ldrh r3, [r6, #4] cmp r3, r2 - beq .L2083 - mov r1, #1 - ldr r0, .L2108+12 - mov r2, r1 - mov r3, r3, asl #10 - str r3, [r4, #1756] + beq .L2061 + lsl r3, r3, #10 + mov r2, #1 + mov r1, r2 + ldr r0, .L2085+16 + str r3, [r4, #1764] bl FlashReadPages - ldr r3, [r4, #1752] + ldr r3, [r4, #1760] cmn r3, #1 - beq .L2083 - ldrh r2, [r6] + beq .L2061 + ldrh r2, [r7] movw r3, #61649 cmp r2, r3 - bne .L2083 - ldr r3, [r6, #4] - ldr r2, [r8, #2460] + bne .L2061 + ldr r3, [r7, #4] + ldr r2, [r5, #2464] cmp r3, r2 - strhi r3, [r8, #2460] - ldrhih r2, [r5, #4] - ldrhih r3, [r6, #8] - strhih r2, [r8, r9] @ movhi - strhih r3, [r5, #4] @ movhi -.L2083: - movw r3, #2452 + ldrhhi r2, [r6, #4] + strhi r3, [r5, #2464] + ldrhhi r3, [r7, #8] + strhhi r2, [r5, r8] @ movhi + strhhi r3, [r6, #4] @ movhi +.L2061: + ldr r9, .L2085+16 + movw r3, #2456 mov r1, #1 - ldrh r0, [r7, r3] - movw r8, #61649 + ldrh r0, [r5, r3] + movw r10, #61649 bl FtlGetLastWrittenPage - uxth r7, r0 + sxth r8, r0 add r0, r0, #1 - strh r0, [r5, #2] @ movhi -.L2085: - sxth r3, r7 - cmp r3, #0 - blt .L2090 - ldrh r2, [r5] - mov r1, #1 - ldr r0, .L2108+12 - orr r3, r3, r2, asl #10 - str r3, [r4, #1756] - ldr r3, [r4, #-524] - mov r2, r1 - str r3, [r4, #1760] - bl FlashReadPages - ldr r3, [r4, #1752] - cmn r3, #1 - beq .L2086 + strh r0, [r6, #2] @ movhi +.L2063: + cmp r8, #0 + blt .L2068 ldrh r3, [r6] - cmp r3, r8 - bne .L2086 -.L2090: - ldrh r2, [r6, #10] - ldrh r0, [r6, #12] - ldr r3, .L2108+4 - strh r2, [r5, #6] @ movhi - movw r2, #65535 - cmp r0, r2 - bne .L2087 - b .L2088 -.L2086: - sub r7, r7, #1 - uxth r7, r7 - b .L2085 -.L2087: - ldr r2, [r3, #2316] - cmp r0, r2 - beq .L2088 - movw r1, #2330 - ldrh r3, [r3, r1] - mov r3, r3, lsr #2 + mov r2, #1 + mov r1, r2 + mov r0, r9 + orr r3, r8, r3, lsl #10 + str r3, [r4, #1764] + ldr r3, [r4, #-524] + str r3, [r4, #1768] + bl FlashReadPages + ldr r3, [r4, #1760] + cmn r3, #1 + beq .L2064 + ldrh r3, [r7] + cmp r3, r10 + bne .L2064 +.L2068: + ldrh r3, [r7, #10] + ldrh r0, [r7, #12] + strh r3, [r6, #6] @ movhi + movw r3, #65535 cmp r0, r3 - cmpcc r2, r3 - bcs .L2088 - bl FtlSysBlkNumInit -.L2088: - ldr r6, .L2108+20 + bne .L2065 +.L2066: + ldr r6, .L2085+20 mov r5, #0 - ldr r8, .L2108+24 + ldr r8, .L2085+24 sub r7, r6, #134 -.L2091: +.L2069: ldrh r3, [r7] cmp r5, r3 - bcs .L2107 - ldrh r2, [r8] - ldr r1, [r4, #1760] - ldr r0, [r6, #4]! - mov r2, r2, asl #2 - mla r1, r5, r2, r1 - bl ftl_memcpy - add r5, r5, #1 - b .L2091 -.L2107: + bcc .L2070 mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L2093: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2056: + sub r6, r6, #1 + uxth r6, r6 + b .L2054 +.L2064: + sub r8, r8, #1 + sxth r8, r8 + b .L2063 +.L2065: + ldr r2, [r5, #2320] + cmp r0, r2 + beq .L2066 + movw r3, #2334 + ldrh r3, [r5, r3] + lsr r3, r3, #2 + cmp r2, r3 + cmpcc r0, r3 + bcs .L2066 + bl FtlSysBlkNumInit + b .L2066 +.L2070: + ldrh r2, [r8] + ldr r1, [r4, #1768] + ldr r0, [r6, #4]! + lsl r2, r2, #2 + mla r1, r5, r2, r1 + add r5, r5, #1 + bl ftl_memcpy + b .L2069 +.L2071: mvn r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L2109: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2086: .align 2 -.L2108: +.L2085: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2386 - .word .LANCHOR2+1752 - .word .LANCHOR0+2452 - .word .LANCHOR0+2476 + .word .LANCHOR0+2388 + .word .LANCHOR0+2456 + .word .LANCHOR2+1760 + .word .LANCHOR0+2480 .word .LANCHOR2-436 .fnend .size FtlLoadBbt, .-FtlLoadBbt .align 2 .global FtlScanSysBlk + .syntax unified + .arm + .fpu softvfp .type FtlScanSysBlk, %function FtlScanSysBlk: .fnstart - @ args = 0, pretend = 0, frame = 32 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, #0 - ldr r7, .L2196 - mov r1, r5 - ldr r4, .L2196+4 - .pad #36 - sub sp, sp, #36 - movw r6, #2408 - ldr r2, [r7, #2416] - sub r3, r4, #388 + mov r6, #0 + ldr r5, .L2166 + movw r3, #2438 + mov r1, r6 + .pad #28 + sub sp, sp, #28 + ldr r4, .L2166+4 + movw r8, #2412 + ldr r2, [r5, #2420] + strh r6, [r5, r3] @ movhi + sub r7, r4, #388 ldr r0, [r4, #-444] - mov r8, r4 - strh r5, [r3] @ movhi - movw r3, #2434 - mov r2, r2, asl #2 - strh r5, [r7, r3] @ movhi + strh r6, [r7] @ movhi + lsl r2, r2, #2 bl ftl_memset - ldr r2, [r7, #2416] - mov r1, r5 + ldr r2, [r5, #2420] + mov r1, r6 ldr r0, [r4, #-472] - mov r2, r2, asl #1 + lsl r2, r2, #1 bl ftl_memset - ldrh r2, [r7, r6] - mov r1, r5 + ldrh r2, [r5, r8] + mov r1, r6 ldr r0, [r4, #-460] - mov r2, r2, asl #2 + lsl r2, r2, #2 bl ftl_memset - ldrh r2, [r7, r6] - ldr r0, [r7, #2436] - mov r1, r5 - mov r2, r2, asl #1 + ldrh r2, [r5, r8] + mov r1, r6 + ldr r0, [r5, #2440] + lsl r2, r2, #1 bl ftl_memset - ldr r0, .L2196+8 - mov r1, #255 + sub r0, r4, #3296 mov r2, #16 + mov r1, #255 + sub r0, r0, #4 bl ftl_memset - movw r3, #2328 - ldrh r3, [r7, r3] - str r7, [sp, #16] - mov r7, r4 - str r3, [sp, #4] -.L2111: - ldr r3, .L2196+12 - ldr r2, [sp, #4] - ldr r1, .L2196 + movw r3, #2332 + str r7, [sp] + ldrh fp, [r5, r3] + str r5, [sp, #4] +.L2088: + ldr r3, .L2166+8 + ldr r2, .L2166 ldrh r3, [r3] - cmp r3, r2 - mov r0, r1 - bls .L2152 - add r3, r1, #2320 - add r1, r1, #2400 - ldr r0, [r4, #-2692] - mov r5, #0 - ldrh ip, [r3] - sub r6, r1, #52 - ldr r3, [r4, #-536] - mov fp, r5 - ldr r2, [r4, #-2696] - mov r9, #36 + cmp r3, fp + bls .L2128 + ldr r1, [r4, #-2692] + mov r6, #0 + ldr r3, .L2166+12 + mov r5, r6 + ldr r7, [r4, #-536] + mov r8, #36 + str r1, [sp, #8] + ldr r1, .L2166+16 + ldrh r2, [r3] + ldr r3, [r4, #-2696] ldrh r10, [r1] - str r0, [sp, #8] -.L2153: - uxth r1, r5 - cmp r1, ip - bcs .L2191 - ldr r1, [sp, #4] - ldrb r0, [r6, r5] @ zero_extendqisi2 - str r2, [sp, #28] - str r3, [sp, #24] - str ip, [sp, #20] + sub r9, r1, #52 + b .L2129 +.L2090: + mov r1, fp + ldrb r0, [r9, r6] @ zero_extendqisi2 + str r3, [sp, #20] + str r2, [sp, #16] bl V2P_block str r0, [sp, #12] bl FtlBbmIsBadBlock cmp r0, #0 + ldr r2, [sp, #16] + ldr r3, [sp, #20] + bne .L2089 ldr r1, [sp, #12] - ldr ip, [sp, #20] - ldr r3, [sp, #24] - ldr r2, [sp, #28] - bne .L2112 - mla r0, r9, fp, r3 - mov r1, r1, asl #10 - stmib r0, {r1, r2} - mul r1, r10, fp - add lr, r1, #3 - cmp r1, #0 - movlt r1, lr - ldr lr, [sp, #8] - bic r1, r1, #3 - add r1, lr, r1 - str r1, [r0, #12] - add r0, fp, #1 - uxth fp, r0 -.L2112: + mla r0, r8, r5, r7 + lsl r1, r1, #10 + stmib r0, {r1, r3} + mul r1, r10, r5 add r5, r5, #1 - b .L2153 -.L2191: - cmp fp, #0 - beq .L2115 - ldr r0, [r4, #-536] - mov r1, fp + uxth r5, r5 + add ip, r1, #3 + cmp r1, #0 + movlt r1, ip + ldr ip, [sp, #8] + bic r1, r1, #3 + add r1, ip, r1 + str r1, [r0, #12] +.L2089: + add r6, r6, #1 +.L2129: + uxth r1, r6 + cmp r2, r1 + bhi .L2090 + cmp r5, #0 + bne .L2091 +.L2127: + add r3, fp, #1 + uxth fp, r3 + b .L2088 +.L2091: + mov r8, #0 mov r2, #1 + mov r1, r5 + mov r0, r7 bl FlashReadPages - mov r3, #0 -.L2189: - str r3, [sp, #8] - ldrh r3, [sp, #8] - cmp r3, fp - bcs .L2115 - ldr r3, [sp, #8] +.L2092: + uxth r3, r8 + cmp r5, r3 + bls .L2127 mov r9, #36 - mul r9, r9, r3 ldr r3, [r4, #-536] + mul r9, r9, r8 add r2, r3, r9 ldr r3, [r3, r9] - ldr r5, [r2, #4] + ldr r6, [r2, #4] + ldr r7, [r2, #12] cmn r3, #1 - ldr r6, [r2, #12] - ubfx r5, r5, #10, #16 - bne .L2118 + ubfx r6, r6, #10, #16 + bne .L2095 mov r10, #16 - movw ip, #65535 -.L2117: +.L2097: ldr r0, [r4, #-536] - mov r1, #1 - mov r2, r1 - str ip, [sp, #12] + mov r2, #1 + mov r1, r2 add r0, r0, r9 ldr r3, [r0, #4] add r3, r3, #1 str r3, [r0, #4] bl FlashReadPages - ldrh r3, [r6] - ldr ip, [sp, #12] - cmp r3, ip - ldreq r3, [r8, #-536] - mvneq r2, #0 - streq r2, [r3, r9] - beq .L2118 -.L2119: - ldr r3, [r7, #-536] + ldrh r3, [r7] + movw r2, #65535 + cmp r3, r2 + ldr r3, [r4, #-536] + bne .L2094 + mvn r2, #0 + str r2, [r3, r9] + ldr r3, [r4, #-536] + ldr r3, [r3, r9] + cmp r3, r2 + beq .L2096 +.L2095: + ldr r2, [r4, #-3332] + ldr r3, [r7, #4] + cmn r2, #1 + beq .L2098 + cmp r2, r3 + bhi .L2099 +.L2098: + cmn r3, #1 + addne r2, r3, #1 + strne r2, [r4, #-3332] +.L2099: + ldrh r2, [r7] + movw r1, #61604 + cmp r2, r1 + beq .L2101 + bhi .L2102 + movw r3, #61574 + cmp r2, r3 + beq .L2103 +.L2100: + add r8, r8, #1 + b .L2092 +.L2094: ldr r3, [r3, r9] cmn r3, #1 - bne .L2118 + bne .L2095 sub r10, r10, #1 uxth r10, r10 cmp r10, #0 - bne .L2117 -.L2118: - ldr r3, [r7, #-536] - ldr r3, [r3, r9] - cmn r3, #1 - beq .L2121 - ldr r2, [r7, #-3332] - ldr r3, [r6, #4] - cmn r2, #1 - beq .L2122 - cmp r2, r3 - bhi .L2123 -.L2122: - cmn r3, #1 - addne r2, r3, #1 - strne r2, [r8, #-3332] -.L2123: - ldrh r2, [r6] - movw r1, #61604 - cmp r2, r1 - beq .L2125 - bhi .L2126 - movw r3, #61574 - cmp r2, r3 - bne .L2124 - ldr r2, .L2196+16 - ldr lr, [r8, #-460] - ldrh ip, [r2] - ldrh r1, [r2, #26] - sub r0, ip, #1 - rsb r2, r1, r0 - str r2, [sp, #12] - uxth r3, r0 - b .L2139 -.L2126: + bne .L2097 +.L2096: + ldr r3, .L2166 + ldrb r1, [r3, #152] @ zero_extendqisi2 + cmp r1, #0 + bne .L2165 +.L2125: + mov r0, r6 + bl FtlFreeSysBlkQueueIn + b .L2100 +.L2102: movw r3, #61634 cmp r2, r3 - beq .L2128 + beq .L2104 movw r3, #65535 cmp r2, r3 - moveq r0, r5 - beq .L2190 - b .L2124 -.L2128: - ldr r3, [sp, #16] - ldr ip, .L2196+20 - ldr r9, [r4, #-444] - ldr lr, [r3, #2416] - ldrh r2, [ip] - uxth r1, lr - sub r3, r1, #1 - rsb r1, r2, r1 - sub r1, r1, #1 - uxth r3, r3 - sxth r1, r1 - str r1, [sp, #20] -.L2130: - ldr r1, [sp, #20] - sxth r0, r3 - cmp r0, r1 - ble .L2192 - mov r10, r0, asl #2 - ldr r1, [r6, #4] - str r10, [sp, #12] - ldr r10, [r9, r0, asl #2] - cmp r1, r10 - bls .L2131 - ldr r1, [r9] - cmp r1, #0 - bne .L2132 - cmp r2, lr - addne r2, r2, #1 - strneh r2, [ip] @ movhi -.L2132: - uxth r9, r3 + bne .L2100 +.L2165: mov r1, #0 -.L2133: - uxth r2, r1 - cmp r2, r9 - bcs .L2193 - ldr lr, [r7, #-444] - sxth r2, r2 - add r1, r1, #1 - add r10, lr, r2, asl #2 - ldr r10, [r10, #4] - str r10, [lr, r2, asl #2] - mov r2, r2, asl #1 - ldr lr, [r7, #-472] - add r10, lr, r2 - ldrh r10, [r10, #2] - strh r10, [lr, r2] @ movhi - b .L2133 -.L2193: + b .L2125 +.L2104: + ldr r3, [sp, #4] + ldr r2, [sp] + ldr ip, [r4, #-444] + ldr r0, [r3, #2420] + ldrh r2, [r2] + uxth r1, r0 + sub r3, r1, #1 + sub r1, r1, r2 + sub r1, r1, #1 + sxth r3, r3 + sxth r1, r1 +.L2106: + cmp r3, r1 + bgt .L2112 + cmp r3, #0 + bge .L2142 + b .L2100 +.L2112: + ldr r10, [r7, #4] + lsl lr, r3, #2 + ldr r9, [ip, r3, lsl #2] + cmp r10, r9 + bls .L2107 + ldr r1, [ip] + cmp r1, #0 + bne .L2108 + cmp r0, r2 + ldrne r1, .L2166+20 + addne r2, r2, #1 + strhne r2, [r1] @ movhi +.L2108: + uxth ip, r3 + mov r1, #0 +.L2109: + uxth r0, r1 + sxth r2, r1 + cmp r0, ip + bcc .L2110 + ldr r1, [r7, #4] + cmp r3, #0 ldr r2, [r4, #-444] - mov r0, r0, asl #1 - ldr r1, [r6, #4] - ldr lr, [sp, #12] str r1, [r2, lr] - ldr r2, [r4, #-472] - strh r5, [r2, r0] @ movhi - sxth r0, r3 - cmp r0, #0 - bge .L2135 - b .L2124 -.L2131: - sub r3, r3, #1 - uxth r3, r3 - b .L2130 -.L2192: - cmp r0, #0 - bge .L2166 - b .L2124 -.L2135: - ldr r1, .L2196 - ldrh r2, [ip] - ldr r1, [r1, #2416] - rsb r1, r2, r1 + lsl r2, r3, #1 + ldr r1, [r4, #-472] + strh r6, [r1, r2] @ movhi + blt .L2100 + ldr r2, [sp] + ldr r1, .L2166 + ldrh r2, [r2] + ldr r1, [r1, #2420] + sub r1, r1, r2 sub r1, r1, #1 sxth r1, r1 - cmp r0, r1 - bgt .L2124 -.L2166: - add r2, r2, #1 - ldr r1, [r6, #4] - strh r2, [ip] @ movhi - sxth r3, r3 - ldr r2, [r4, #-444] - str r1, [r2, r3, asl #2] - mov r3, r3, asl #1 - ldr r2, [r4, #-472] - b .L2187 -.L2145: - ldr r9, [lr, r2, asl #2] - mov r10, r2, asl #2 - ldr r0, [r6, #4] - cmp r0, r9 - bhi .L2194 - sub r3, r3, #1 - uxth r3, r3 -.L2139: - ldr r0, [sp, #12] - sxth r2, r3 - cmp r2, r0 - bgt .L2145 - b .L2144 -.L2194: - ldr r0, [lr] - cmp r0, #0 - bne .L2141 - cmp r1, ip - addne r1, r1, #1 - ldrne r0, .L2196+24 - strneh r1, [r0] @ movhi -.L2141: - uxth lr, r3 - mov r0, #0 + cmp r3, r1 + bgt .L2100 .L2142: - uxth r1, r0 - cmp r1, lr - bcs .L2195 - ldr ip, [r4, #-460] - sxth r1, r1 - add r0, r0, #1 - add r9, ip, r1, asl #2 + ldr r1, [sp] + add r2, r2, #1 + strh r2, [r1] @ movhi + ldr r2, [r4, #-444] + ldr r1, [r7, #4] + str r1, [r2, r3, lsl #2] + lsl r3, r3, #1 + ldr r2, [r4, #-472] +.L2163: + strh r6, [r2, r3] @ movhi + b .L2100 +.L2110: + ldr r0, [r4, #-444] + add r1, r1, #1 + add r9, r0, r2, lsl #2 ldr r9, [r9, #4] - str r9, [ip, r1, asl #2] - mov r1, r1, asl #1 - ldr ip, .L2196 - ldr ip, [ip, #2436] - add r9, ip, r1 + str r9, [r0, r2, lsl #2] + lsl r2, r2, #1 + ldr r0, [r4, #-472] + add r9, r0, r2 ldrh r9, [r9, #2] - strh r9, [ip, r1] @ movhi - b .L2142 -.L2195: - ldr r1, [r8, #-460] - mov r2, r2, asl #1 - ldr r0, [r6, #4] - str r0, [r1, r10] - ldr r1, .L2196 - ldr r1, [r1, #2436] - strh r5, [r1, r2] @ movhi -.L2144: + strh r9, [r0, r2] @ movhi + b .L2109 +.L2107: + sub r3, r3, #1 sxth r3, r3 + b .L2106 +.L2103: + ldr r3, .L2166+24 + ldr r1, .L2166+28 + ldr lr, [r4, #-460] + ldrh r2, [r3] + ldrh r1, [r1] + sub r0, r2, #1 + sxth r3, r0 + sub r0, r0, r1 +.L2115: + cmp r3, r0 + ble .L2120 + ldr r10, [r7, #4] + lsl ip, r3, #2 + ldr r9, [lr, r3, lsl #2] + cmp r10, r9 + bls .L2116 + sub r2, r2, r1 + ldr r0, [lr] + clz r2, r2 + uxth r9, r3 + lsr r2, r2, #5 + cmp r0, #0 + orrne r2, r2, #1 + ldr r0, .L2166 + cmp r2, #0 + ldreq r2, .L2166+28 + addeq r1, r1, #1 + strheq r1, [r2] @ movhi + mov r1, #0 +.L2118: + uxth lr, r1 + sxth r2, r1 + cmp lr, r9 + bcc .L2119 + ldr r1, [r7, #4] + ldr r2, [r4, #-460] + str r1, [r2, ip] + lsl r2, r3, #1 + ldr r1, [r0, #2440] + strh r6, [r1, r2] @ movhi +.L2120: cmp r3, #0 - blt .L2124 - ldr r0, .L2196+24 + blt .L2100 + ldr r0, .L2166+28 ldrh r2, [r0, #-26] ldrh r1, [r0] sub r2, r2, #1 - rsb r2, r1, r2 + sub r2, r2, r1 sxth r2, r2 cmp r3, r2 - bgt .L2124 + bgt .L2100 add r1, r1, #1 - ldr r2, [r8, #-460] + ldr r2, [r4, #-460] strh r1, [r0] @ movhi - ldr r1, [r6, #4] - str r1, [r2, r3, asl #2] - mov r3, r3, asl #1 - ldr r2, .L2196 - ldr r2, [r2, #2436] -.L2187: - strh r5, [r2, r3] @ movhi - b .L2124 -.L2125: - ldr r2, .L2196+8 + ldr r1, [r7, #4] + str r1, [r2, r3, lsl #2] + lsl r3, r3, #1 + ldr r2, [sp, #4] + ldr r2, [r2, #2440] + b .L2163 +.L2119: + ldr lr, [r4, #-460] + add r1, r1, #1 + add r10, lr, r2, lsl #2 + ldr r10, [r10, #4] + str r10, [lr, r2, lsl #2] + lsl r2, r2, #1 + ldr lr, [r0, #2440] + add r10, lr, r2 + ldrh r10, [r10, #2] + strh r10, [lr, r2] @ movhi + b .L2118 +.L2116: + sub r3, r3, #1 + sxth r3, r3 + b .L2115 +.L2101: + ldr r2, .L2166+32 movw r1, #65535 - ldrh r0, [r2] + mov r9, r2 + ldrh r0, [r9], #4 cmp r0, r1 - streqh r5, [r2] @ movhi - beq .L2188 + strheq r6, [r2] @ movhi + beq .L2164 ldrh r0, [r2, #4] cmp r0, r1 - beq .L2147 + beq .L2123 mov r1, #1 bl FtlFreeSysBlkQueueIn -.L2147: - ldr r3, [r6, #4] - ldr r2, [r8, #-3292] +.L2123: + ldr r3, [r7, #4] + ldr r2, [r4, #-3292] cmp r2, r3 - ldr r3, .L2196+8 - strcsh r5, [r3, #4] @ movhi - bcs .L2124 - ldrh r2, [r3] - strh r5, [r3] @ movhi - strh r2, [r3, #4] @ movhi - ldr r3, [r6, #4] -.L2188: - str r3, [r7, #-3292] - b .L2124 -.L2121: - ldr r3, .L2196 - mov r0, r5 - ldrb r1, [r3, #144] @ zero_extendqisi2 - cmp r1, #0 - beq .L2149 -.L2190: - mov r1, #0 -.L2149: - bl FtlFreeSysBlkQueueIn -.L2124: - ldr r3, [sp, #8] - add r3, r3, #1 - b .L2189 -.L2115: - ldr r3, [sp, #4] - add r5, r3, #1 - uxth r3, r5 - str r3, [sp, #4] - b .L2111 -.L2152: - ldr r3, .L2196+4 - ldr ip, [r3, #-472] - ldrh r2, [ip] - cmp r2, #0 - beq .L2154 -.L2157: - ldr r0, [r0, #2436] - ldr r3, .L2196 - ldrh r2, [r0] - cmp r2, #0 - beq .L2155 - b .L2178 -.L2154: - sub r3, r3, #388 - ldrh r3, [r3] + strhcs r6, [r9] @ movhi + bcs .L2100 + ldrh r3, [r9, #-4] + strh r6, [r9, #-4] @ movhi + strh r3, [r9] @ movhi + ldr r3, [r7, #4] +.L2164: + str r3, [r4, #-3292] + b .L2100 +.L2128: + ldr r0, [r4, #-472] + ldrh r3, [r0] cmp r3, #0 - ldrne lr, [r1, #2416] - beq .L2157 -.L2158: - uxth r3, r2 - sxth r1, r3 - cmp r1, lr - bcs .L2157 - mov r5, r1, asl #1 - add r2, r2, #1 - ldrh r5, [ip, r5] - cmp r5, #0 - beq .L2158 - mov r6, #0 -.L2159: - ldr ip, [r0, #2416] - sxth r2, r3 - cmp r2, ip - bcs .L2157 - ldr lr, [r4, #-472] - mov ip, r2, asl #1 - rsb r5, r1, r2 - add r3, r3, #1 - ldrh r8, [lr, ip] - mov r7, r5, asl #1 - uxth r3, r3 - strh r8, [lr, r7] @ movhi - ldr lr, [r4, #-444] - ldr r2, [lr, r2, asl #2] - str r2, [lr, r5, asl #2] - ldr r2, [r4, #-472] - strh r6, [r2, ip] @ movhi - b .L2159 -.L2155: - movw r1, #2434 - ldrh r1, [r3, r1] + beq .L2130 +.L2133: + ldr r0, [r2, #2440] + ldrh r1, [r0] cmp r1, #0 - movwne r1, #2408 - ldrneh ip, [r3, r1] - beq .L2178 -.L2162: - uxth r3, r2 + beq .L2131 +.L2153: + mov r0, #0 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2130: + ldr r1, .L2166+20 + ldrh r1, [r1] + cmp r1, #0 + ldrne ip, [r2, #2420] + beq .L2133 +.L2134: sxth r1, r3 cmp r1, ip - bge .L2178 - mov lr, r1, asl #1 - add r2, r2, #1 + bcs .L2133 + lsl lr, r1, #1 + add r3, r3, #1 ldrh lr, [r0, lr] cmp lr, #0 - beq .L2162 - ldr r0, .L2196 - mov r7, #0 - ldr r6, .L2196+16 -.L2163: - ldrh ip, [r6] - sxth r2, r3 - cmp r2, ip - bge .L2178 - ldr lr, [r0, #2436] - mov ip, r2, asl #1 - rsb r5, r1, r2 + beq .L2134 + mov r3, r1 + mov r5, #0 +.L2135: + ldr r0, [r2, #2420] + cmp r3, r0 + bcs .L2133 + ldr ip, [r4, #-472] + lsl r0, r3, #1 + sub lr, r3, r1 + lsl r6, lr, #1 + ldrh r7, [ip, r0] + strh r7, [ip, r6] @ movhi + ldr ip, [r4, #-444] + ldr r6, [ip, r3, lsl #2] add r3, r3, #1 - ldrh r9, [lr, ip] - mov r8, r5, asl #1 - uxth r3, r3 - strh r9, [lr, r8] @ movhi - ldr lr, [r4, #-460] - ldr r2, [lr, r2, asl #2] - str r2, [lr, r5, asl #2] - ldr r2, [r0, #2436] - strh r7, [r2, ip] @ movhi - b .L2163 -.L2178: - mov r0, #0 - add sp, sp, #36 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2197: + sxth r3, r3 + str r6, [ip, lr, lsl #2] + ldr ip, [r4, #-472] + strh r5, [ip, r0] @ movhi + b .L2135 +.L2131: + movw r3, #2438 + ldrh r3, [r2, r3] + cmp r3, #0 + movwne r3, #2412 + ldrhne ip, [r2, r3] + beq .L2153 +.L2138: + sxth r3, r1 + cmp r3, ip + mov lr, r3 + bge .L2153 + lsl r5, r3, #1 + add r1, r1, #1 + ldrh r5, [r0, r5] + cmp r5, #0 + beq .L2138 + ldr r5, .L2166+24 + mov r6, #0 +.L2139: + ldrh r1, [r5] + cmp r3, r1 + bge .L2153 + ldr r0, [r2, #2440] + lsl r1, r3, #1 + sub ip, r3, lr + lsl r7, ip, #1 + ldrh r8, [r0, r1] + strh r8, [r0, r7] @ movhi + ldr r0, [r4, #-460] + ldr r7, [r0, r3, lsl #2] + add r3, r3, #1 + sxth r3, r3 + str r7, [r0, ip, lsl #2] + ldr r0, [r2, #2440] + strh r6, [r0, r1] @ movhi + b .L2139 +.L2167: .align 2 -.L2196: +.L2166: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2-3300 - .word .LANCHOR0+2330 - .word .LANCHOR0+2408 + .word .LANCHOR0+2334 + .word .LANCHOR0+2324 + .word .LANCHOR0+2402 .word .LANCHOR2-388 - .word .LANCHOR0+2434 + .word .LANCHOR0+2412 + .word .LANCHOR0+2438 + .word .LANCHOR2-3300 .fnend .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadSysInfo + .syntax unified + .arm + .fpu softvfp .type FtlLoadSysInfo, %function FtlLoadSysInfo: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r1, #0 - ldr r4, .L2227 + ldr r4, .L2197 .pad #36 sub sp, sp, #36 - ldr r6, .L2227+4 - sub r7, r4, #3296 + ldr r5, .L2197+4 ldr r3, [r4, #-524] - ldr r0, [r4, #-3544] - str r3, [r4, #1760] + sub r7, r4, #3296 + ldr r0, [r4, #-3540] + str r3, [r4, #1768] ldr r3, [r4, #-500] - str r3, [r4, #1764] - movw r3, #2328 - ldrh r2, [r6, r3] - mov r2, r2, asl #1 + str r3, [r4, #1772] + movw r3, #2332 + ldrh r2, [r5, r3] + lsl r2, r2, #1 bl ftl_memset ldrh r0, [r7, #-4] movw r3, #65535 cmp r0, r3 - bne .L2199 -.L2210: + bne .L2169 +.L2180: mvn r0, #0 - b .L2200 -.L2199: +.L2168: + add sp, sp, #36 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2169: mov r1, #1 + add fp, r5, #2400 bl FtlGetLastWrittenPage - ldr r3, .L2227+8 - ldrh r9, [r7, #-4] - mov r7, r4 - uxth r5, r0 + ldrsh r9, [r7, #-4] + sub r8, r7, #4 + sxth r6, r0 add r0, r0, #1 - strh r0, [r3, #2] @ movhi -.L2201: - sxth r3, r5 - cmp r3, #0 - blt .L2209 - sxth fp, r9 - mov r1, #1 - ldr r0, .L2227+12 - mov r2, r1 - orr r3, r3, fp, asl #10 - str r3, [r4, #1756] + strh r0, [r8, #2] @ movhi +.L2171: + cmp r6, #0 + blt .L2179 + orr r3, r6, r9, lsl #10 + mov r2, #1 + mov r1, r2 + ldr r0, .L2197+8 + str r3, [r4, #1764] ldr r3, [r4, #-524] - str r3, [r4, #1760] + str r3, [r4, #1768] bl FlashReadPages - ldrb r3, [r6] @ zero_extendqisi2 + ldrb r3, [r5, #36] @ zero_extendqisi2 cmp r3, #0 - beq .L2202 - ldr r8, [r7, #1764] + beq .L2172 + ldr r8, [r4, #1772] ldr r3, [r8, #12] cmp r3, #0 - beq .L2202 - ldr r2, [r7, #1760] - ldr r10, .L2227+16 str r3, [sp, #28] + beq .L2172 + ldr r2, [r4, #1768] + ldrh r1, [fp] mov r0, r2 str r2, [sp, #24] - ldrh r1, [r10] bl js_hash ldr r3, [sp, #28] cmp r3, r0 - beq .L2202 - cmp r5, #0 + beq .L2172 + cmp r6, #0 + bne .L2173 + mov r10, r7 ldr r2, [sp, #24] - bne .L2203 - ldr ip, .L2227+8 - ldrh r1, [ip, #4] - cmp fp, r1 - beq .L2203 - ldr r0, [r8] - ldrh r1, [ip] - str ip, [sp, #24] - str r0, [sp] - ldr r0, [r8, #4] - str r0, [sp, #4] - ldr r0, [r8, #8] + ldrh r1, [r10], #-4 + cmp r9, r1 + beq .L2173 + ldr r2, [r2] + ldrh r1, [r7, #-4] str r3, [sp, #12] - str r0, [sp, #8] - ldr r3, [r2] - ldr r0, .L2227+20 - str r3, [sp, #16] - ldr r2, [r7, #1752] - ldr r3, [r7, #1756] + str r2, [sp, #16] + ldr r3, [r8, #8] + ldr r2, [r4, #1760] + ldr r0, .L2197+12 + str r3, [sp, #8] + ldr r3, [r8, #4] + str r3, [sp, #4] + ldr r3, [r8] + str r3, [sp] + ldr r3, [r4, #1764] bl printk - ldrh r5, [r10, #-8] - ldr ip, [sp, #24] - ldrh r9, [ip, #4] - b .L2205 -.L2203: + ldr r3, .L2197+16 + ldrsh r9, [r10, #4] + ldrh r6, [r3] +.L2175: + sub r6, r6, #1 + sxth r6, r6 + b .L2171 +.L2173: mvn r3, #0 - str r3, [r4, #1752] -.L2202: - ldr r3, [r4, #1752] + str r3, [r4, #1760] +.L2172: + ldr r3, [r4, #1760] cmn r3, #1 - beq .L2205 - ldr r3, [r7, #-524] - ldr r2, .L2227+24 + beq .L2175 + ldr r3, [r4, #-524] + ldr r2, .L2197+20 ldr r3, [r3] cmp r3, r2 - bne .L2205 - ldr r3, [r7, #-500] + bne .L2175 + ldr r3, [r4, #-500] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - bne .L2205 -.L2209: - ldr r5, .L2227 + bne .L2175 +.L2179: mov r2, #48 - ldr r1, [r4, #1760] - movw r8, #2328 - sub r0, r5, #3600 - ldr r7, .L2227+4 + ldr r1, [r4, #1768] + movw r6, #2332 + ldr r0, .L2197+24 bl ftl_memcpy - ldrh r2, [r6, r8] - ldr r1, [r4, #1760] - ldr r0, [r4, #-3544] + ldrh r2, [r5, r6] + ldr r1, [r4, #1768] + ldr r0, [r4, #-3540] + lsl r2, r2, #1 add r1, r1, #48 - mov r2, r2, asl #1 bl ftl_memcpy - ldrh r2, [r6, r8] - ldr r1, [r4, #1760] - ldr r0, [r4, #-3368] - mov r3, r2, asl #1 - mov r2, r2, lsr #3 - add r3, r3, #51 + ldrh r1, [r5, r6] + ldr r3, [r4, #1768] + ldr r0, [r5, #32] + lsr r2, r1, #3 + lsl r1, r1, #1 + add r1, r1, #51 add r2, r2, #4 - bic r3, r3, #3 - add r1, r1, r3 + bic r1, r1, #3 + add r1, r3, r1 bl ftl_memcpy - add r3, r7, #2432 - ldrh r3, [r3] + movw r3, #2436 + ldrh r3, [r5, r3] cmp r3, #0 - beq .L2207 - ldrh r2, [r7, r8] - ldr r1, [r5, #1760] - ldr r0, [r5, #-448] - mov r3, r2, lsr #3 - add r3, r3, r2, asl #1 - movw r2, #2424 - ldrh r2, [r7, r2] + beq .L2177 + ldrh r1, [r5, r6] + movw r3, #2428 + ldrh r2, [r5, r3] + ldr r0, [r4, #-448] + lsr r3, r1, #3 + lsl r2, r2, #2 + add r3, r3, r1, lsl #1 + ldr r1, [r4, #1768] add r3, r3, #52 ubfx r3, r3, #2, #14 - mov r2, r2, asl #2 - add r1, r1, r3, asl #2 + add r1, r1, r3, lsl #2 bl ftl_memcpy - b .L2207 -.L2205: - sub r5, r5, #1 - uxth r5, r5 - b .L2201 -.L2207: - ldr r2, [r4, #-3600] - ldr r3, .L2227+24 - ldr r5, .L2227 +.L2177: + ldr r2, [r4, #-3596] + ldr r3, .L2197+20 cmp r2, r3 - bne .L2210 - sub r7, r5, #3600 - movw r1, #2342 - ldrb r0, [r5, #-3590] @ zero_extendqisi2 - add r3, r7, #300 - ldrh r1, [r6, r1] - sub r8, r5, #3296 - ldrh r2, [r7, #8] - cmp r0, r1 - strh r2, [r3, #6] @ movhi - ldr r3, .L2227+4 - bne .L2210 - movw r1, #2388 - movw r0, #2394 - ldrh r1, [r3, r1] - ldrh r0, [r3, r0] - add r3, r3, #2320 - str r2, [r5, #1788] - mul r1, r2, r1 - str r1, [r3, #128] - mul r1, r0, r1 - str r1, [r3, #108] - ldr r1, .L2227+28 - ldrh r0, [r1, #6] - ldr r1, [r3, #12] - rsb r0, r0, r1 - ldrh r1, [r3] - rsb r0, r2, r0 + bne .L2180 + ldr r6, .L2197+24 + movw r3, #2346 + ldrb r1, [r4, #-3586] @ zero_extendqisi2 + ldrh r3, [r5, r3] + ldrh r2, [r6, #8] + cmp r1, r3 + strh r2, [r7, #2] @ movhi + bne .L2180 + movw r3, #2390 + movw r1, #2396 + ldrh r3, [r5, r3] + ldrh r1, [r5, r1] + ldr r0, [r5, #2336] + str r2, [r4, #1796] + mul r3, r2, r3 + str r3, [r5, #2452] + mul r3, r3, r1 + str r3, [r5, #2432] + ldr r3, .L2197+28 + ldrh r3, [r3, #6] + sub r0, r0, r3 + movw r3, #2324 + ldrh r1, [r5, r3] + sub r0, r0, r2 bl __aeabi_uidiv - sub r3, r5, #3520 - add r2, r7, #76 - sub lr, r5, #3280 - sub ip, r5, #3424 - strh r0, [r8, #-8] @ movhi - mov r8, ip - ldrh r0, [r7, #14] - strh r0, [r3, #-4] @ movhi - ldrh r3, [r7, #16] - mov r1, r3, lsr #6 + ldrh r3, [r6, #16] + add r2, r6, #76 + mov r5, r2 + strh r0, [r7, #-8] @ movhi + ldrh r0, [r6, #14] + add r7, r2, #240 + lsr r1, r3, #6 and r3, r3, #63 - strb r3, [r5, #-3518] - ldrb r3, [r5, #-3589] @ zero_extendqisi2 - strh r1, [r7, #78] @ movhi - ldrh r1, [r7, #18] - strb r3, [r5, #-3516] + strb r3, [r4, #-3514] + strh r1, [r2, #2] @ movhi + ldrh r1, [r6, #18] + ldrb r3, [r4, #-3585] @ zero_extendqisi2 + strh r0, [r2] @ movhi + strh r1, [r5, #48]! @ movhi + ldrh r1, [r6, #20] + strb r3, [r4, #-3512] mvn r3, #0 - strh r3, [lr, #-4] @ movhi + strh r3, [r7, #-4] @ movhi mov r3, #0 - strh r3, [r2, #242] @ movhi - sub r2, r5, #3472 - strb r3, [r5, #-3278] - strh r1, [r2, #-4] @ movhi - ldrh r1, [r7, #20] - strb r3, [r5, #-3276] - str r3, [r5, #-3344] - mov r6, r1, lsr #6 + strh r3, [r2, #238] @ movhi + lsr ip, r1, #6 and r1, r1, #63 - strb r1, [r5, #-3470] - ldrb r1, [r5, #-3588] @ zero_extendqisi2 - strh r6, [r2, #-2] @ movhi + strb r1, [r4, #-3466] + ldrb r1, [r4, #-3584] @ zero_extendqisi2 + strh ip, [r5, #2] @ movhi + strb r3, [r4, #-3278] + strb r1, [r4, #-3464] + ldrh r1, [r6, #22] + strb r3, [r4, #-3276] + strh r1, [r2, #96]! @ movhi + ldrh r1, [r6, #24] mov r6, r2 - strb r1, [r5, #-3468] - ldrh r1, [r7, #22] - strh r1, [ip, #-4] @ movhi - ldrh r1, [r7, #24] - mov r7, r1, lsr #6 + lsr ip, r1, #6 and r1, r1, #63 - strb r1, [r5, #-3422] - ldrb r1, [r5, #-3587] @ zero_extendqisi2 - strh r7, [r2, #46] @ movhi - mov r7, lr - strb r1, [r5, #-3420] - str r3, [r5, #-3356] - ldr r1, [r5, #-3568] - str r3, [r5, #-3364] - str r3, [r5, #-3348] - str r3, [r5, #-3320] - str r3, [r5, #-3312] - str r3, [r5, #-3352] - ldr r3, [r5, #-3560] - str r1, [r5, #-3324] - ldr r1, [r5, #-3332] + strb r1, [r4, #-3418] + ldrb r1, [r4, #-3583] @ zero_extendqisi2 + strh ip, [r2, #2] @ movhi + strb r1, [r4, #-3416] + str r3, [r4, #-3344] + ldr r1, [r4, #-3564] + str r3, [r4, #-3356] + str r3, [r4, #-3364] + str r3, [r4, #-3348] + str r1, [r4, #-3324] + str r3, [r4, #-3320] + ldr r1, [r4, #-3332] + str r3, [r4, #-3312] + str r3, [r4, #-3352] + ldr r3, [r4, #-3556] ldr r2, [r4, #-3328] cmp r3, r1 - strhi r3, [r5, #-3332] - ldr r3, [r4, #-3564] + strhi r3, [r4, #-3332] + ldr r3, [r4, #-3560] cmp r3, r2 - ldrhi r2, .L2227 - strhi r3, [r2, #-3328] + strhi r3, [r4, #-3328] movw r3, #65535 cmp r0, r3 - beq .L2213 - ldr r0, .L2227+32 + beq .L2183 + ldr r0, .L2197+32 bl make_superblock -.L2213: - ldrh r2, [r6, #-4] +.L2183: + ldrh r2, [r5] movw r3, #65535 cmp r2, r3 - beq .L2214 - ldr r0, .L2227+36 + beq .L2184 + ldr r0, .L2197+36 bl make_superblock -.L2214: - ldrh r2, [r8, #-4] +.L2184: + ldrh r2, [r6] movw r3, #65535 cmp r2, r3 - beq .L2215 - ldr r0, .L2227+40 + beq .L2185 + ldr r0, .L2197+40 bl make_superblock -.L2215: +.L2185: ldrh r2, [r7, #-4] movw r3, #65535 + sub r0, r7, #4 cmp r2, r3 - beq .L2216 - ldr r0, .L2227+44 + beq .L2186 bl make_superblock -.L2216: +.L2186: mov r0, #0 -.L2200: - add sp, sp, #36 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2228: + b .L2168 +.L2198: .align 2 -.L2227: +.L2197: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR2-3300 - .word .LANCHOR2+1752 - .word .LANCHOR0+2398 + .word .LANCHOR2+1760 .word .LC109 + .word .LANCHOR0+2392 .word 1179929683 - .word .LANCHOR0+2452 - .word .LANCHOR2-3524 - .word .LANCHOR2-3476 - .word .LANCHOR2-3428 - .word .LANCHOR2-3284 + .word .LANCHOR2-3596 + .word .LANCHOR0+2456 + .word .LANCHOR2-3520 + .word .LANCHOR2-3472 + .word .LANCHOR2-3424 .fnend .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 .global FtlDumpBlockInfo + .syntax unified + .arm + .fpu softvfp .type FtlDumpBlockInfo, %function FtlDumpBlockInfo: .fnstart - @ args = 0, pretend = 0, frame = 72 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2388 - ldr r5, .L2243 - .pad #100 - sub sp, sp, #100 + movw r3, #2390 + ldr r5, .L2211 + .pad #92 + sub sp, sp, #92 ubfx r0, r0, #10, #16 - mov r4, r1 - ldr r7, .L2243+4 - ldrh r9, [r5, r3] + mov r9, r1 + ldr r7, .L2211+4 + ldrh r8, [r5, r3] bl P2V_block_in_plane - ldr r1, .L2243+8 + ldr r1, .L2211+8 mov r6, r0 - ldr r0, .L2243+12 + ldr r0, .L2211+12 bl printk - ldr r2, [r7, #-3544] - mov r3, r6, asl #1 + ldr r2, [r7, #-3540] + lsl r3, r6, #1 mov r1, r6 - ldr r0, .L2243+16 + ldr r0, .L2211+16 ldrh r2, [r2, r3] bl printk - add r0, sp, #96 + add r0, sp, #88 strh r6, [r0, #-48]! @ movhi bl make_superblock - ldrb r2, [r5, #144] @ zero_extendqisi2 - clz r3, r4 - cmp r2, #0 - mov r3, r3, lsr #5 - moveq r3, #0 + ldrb r4, [r5, #152] @ zero_extendqisi2 + str r7, [sp, #36] + adds r3, r4, #0 + movne r3, #1 + cmp r9, #0 + movne r3, #0 cmp r3, #0 moveq r4, r3 - str r7, [sp, #44] - beq .L2230 + beq .L2200 mov r0, r6 bl ftl_get_blk_mode cmp r0, #1 mov r4, r0 - movweq r3, #2390 - ldreqh r9, [r5, r3] -.L2230: - movw r3, #2388 - ldr r0, .L2243+20 - mov r1, r4 - mov r2, r9 - ldrh r3, [r5, r3] + movweq r3, #2392 + ldrheq r8, [r5, r3] +.L2200: + movw r3, #2390 mov r6, #0 + mov r9, #36 + ldrh r3, [r5, r3] + mov r2, r8 + mov r1, r4 + ldr r0, .L2211+20 bl printk - ldr r8, .L2243+4 -.L2231: - ldr r3, .L2243+24 - add r0, sp, #62 - movw lr, #65535 - mov r10, #36 +.L2201: + ldr r3, .L2211+24 + add ip, sp, #54 + movw r10, #65535 ldrh r3, [r3] mov r7, r3 - ldr r3, [r8, #-536] - str r3, [sp, #28] - ldr r3, [r8, #-2696] + ldr r3, .L2211+4 + ldr r2, [r3, #-2696] + ldr r0, [r3, #-536] + ldr r3, [r3, #-2692] + str r2, [sp, #24] + ldr r2, .L2211+28 str r3, [sp, #32] - ldr r3, .L2243+28 - ldrh r2, [r3] - ldrh ip, [r3, #2] - str r2, [sp, #36] - ldr r2, [r8, #-2692] - str r2, [sp, #40] + ldrh r1, [r2] + ldrh lr, [r2, #2] mov r2, #0 mov r5, r2 -.L2232: + str r1, [sp, #28] +.L2202: uxth r3, r2 - cmp r3, r7 - bcs .L2241 - ldrh r3, [r0, #2]! - cmp r3, lr - beq .L2233 - ldr r1, [sp, #28] - orr r3, r6, r3, asl #10 - mla r1, r10, r5, r1 + cmp r7, r3 + bhi .L2204 + ldr fp, .L2211+32 + mov r10, #0 + mov r2, r4 + mov r1, r5 + bl FlashReadPages +.L2205: + uxth r3, r10 + cmp r5, r3 + bhi .L2206 + add r6, r6, #1 + uxth r6, r6 + cmp r8, r6 + bne .L2201 +.L2207: + mov r0, #0 + add sp, sp, #92 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2204: + ldrh r3, [ip, #2]! + cmp r3, r10 + beq .L2203 + mla r1, r9, r5, r0 + orr r3, r6, r3, lsl #10 str r3, [r1, #4] - ldr r3, [sp, #36] + ldr r3, [sp, #28] mul r3, r3, r5 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + ldr fp, [sp, #24] + bic r3, r3, #3 + add r3, fp, r3 + str r3, [r1, #8] + mul r3, lr, r5 + add r5, r5, #1 + uxth r5, r5 add fp, r3, #3 cmp r3, #0 movlt r3, fp ldr fp, [sp, #32] bic r3, r3, #3 add r3, fp, r3 - str r3, [r1, #8] - mul r3, ip, r5 - add r5, r5, #1 - uxth r5, r5 - add fp, r3, #3 - cmp r3, #0 - movlt r3, fp - ldr fp, [sp, #40] - bic r3, r3, #3 - add r3, fp, r3 str r3, [r1, #12] -.L2233: +.L2203: add r2, r2, #1 - b .L2232 -.L2241: - ldr r0, [r8, #-536] - mov r1, r5 - mov r2, r4 - mov r10, #0 - bl FlashReadPages - mov fp, #36 -.L2235: - uxth r3, r10 - cmp r3, r5 - bcs .L2242 - ldr r3, [sp, #44] - mul r2, fp, r10 - ldrh r1, [sp, #48] - ldr lr, [r3, #-536] + b .L2202 +.L2206: + ldr r3, [sp, #36] + mul r0, r9, r10 + ldrh r1, [sp, #40] add r10, r10, #1 - add ip, lr, r2 - ldr r3, [ip, #12] - ldr r0, [ip, #8] - ldr r7, [r3] - str r7, [sp] - ldr r7, [r3, #4] - str r7, [sp, #4] - ldr r7, [r3, #8] - str r7, [sp, #8] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [r0] - str r3, [sp, #16] - ldr r3, [r0, #4] - ldr r0, .L2243+32 - str r3, [sp, #20] - ldr r2, [lr, r2] - ldr r3, [ip, #4] + ldr ip, [r3, #-536] + add r2, ip, r0 + ldr lr, [r2, #8] + ldr r3, [r2, #12] + ldr r7, [lr, #4] + str r7, [sp, #20] + ldr lr, [lr] + str lr, [sp, #16] + ldr lr, [r3, #12] + str lr, [sp, #12] + ldr lr, [r3, #8] + str lr, [sp, #8] + ldr lr, [r3, #4] + str lr, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r3, [r2, #4] + ldr r2, [ip, r0] + mov r0, fp bl printk - b .L2235 -.L2242: - add r6, r6, #1 - uxth r6, r6 - cmp r6, r9 - bne .L2231 -.L2237: - mov r0, #0 - add sp, sp, #100 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2244: + b .L2205 +.L2212: .align 2 -.L2243: +.L2211: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR3+148 + .word .LANCHOR3+141 .word .LC110 .word .LC111 .word .LC112 - .word .LANCHOR0+2320 - .word .LANCHOR0+2398 + .word .LANCHOR0+2324 + .word .LANCHOR0+2400 .word .LC113 .fnend .size FtlDumpBlockInfo, .-FtlDumpBlockInfo .align 2 .global FtlScanAllBlock + .syntax unified + .arm + .fpu softvfp .type FtlScanAllBlock, %function FtlScanAllBlock: .fnstart - @ args = 0, pretend = 0, frame = 64 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #92 - sub sp, sp, #92 - ldr r0, .L2260 - mov r7, #0 - ldr r1, .L2260+4 + mov r6, #0 + ldr r5, .L2224 + .pad #84 + sub sp, sp, #84 + ldr r1, .L2224+4 + ldr r0, .L2224+8 bl printk - ldr r5, .L2260+8 - mov r6, r5 -.L2246: - ldr r3, .L2260+12 - uxth r4, r7 +.L2214: + ldr r3, .L2224+12 + uxth r0, r6 ldrh r3, [r3] - cmp r3, r4 - bls .L2256 - add r8, sp, #88 - mov r0, r4 + cmp r3, r0 + bhi .L2222 + mov r0, #0 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2222: + add r4, sp, #80 movw r9, #65535 + strh r0, [r4, #-48]! @ movhi mov r10, #36 - strh r4, [r8, #-48]! @ movhi bl ftl_get_blk_mode - ldr ip, [r5, #-3544] - mov r2, r4, asl #1 - mov r1, r4 - ldrh r2, [ip, r2] + uxth r1, r6 + ldr ip, [r5, #-3540] mov r3, r0 - ldr r0, .L2260+16 + ldr r0, .L2224+16 + lsl r2, r1, #1 + ldrh r2, [ip, r2] bl printk - mov r0, r8 + mov r0, r4 bl make_superblock - ldr r3, .L2260+20 - ldr lr, [r5, #-2692] + ldr r3, .L2224+20 + add ip, sp, #46 + ldr r0, [r5, #-536] + ldr r7, [r5, #-2692] ldrh r2, [r3] - ldrh ip, [r3, #78] - ldrh r8, [r3, #80] - str r2, [sp, #28] - add r0, sp, #54 - ldr r2, [r5, #-536] - str r2, [sp, #32] + ldrh lr, [r3, #76] + ldrh r8, [r3, #78] + str r2, [sp, #24] ldr r2, [r5, #-2696] - str r2, [sp, #36] + str r2, [sp, #28] mov r2, #0 mov r4, r2 -.L2247: - ldr r1, [sp, #28] +.L2215: + ldr r1, [sp, #24] uxth r3, r2 - cmp r3, r1 - bcs .L2257 - ldrh r3, [r0, #2]! + cmp r1, r3 + bhi .L2217 + ldr r9, .L2224+24 + mov r7, #0 + mov r8, #36 + mov r2, #0 + mov r1, r4 + bl FlashReadPages +.L2218: + uxth r3, r7 + cmp r4, r3 + bhi .L2219 + ldr r9, .L2224+28 + mov r7, #0 + mov r8, #36 + mov r2, #1 + mov r1, r4 + ldr r0, [r5, #-536] + bl FlashReadPages +.L2220: + uxth r3, r7 + cmp r4, r3 + bhi .L2221 + add r6, r6, #1 + b .L2214 +.L2217: + ldrh r3, [ip, #2]! cmp r3, r9 - beq .L2248 - ldr r1, [sp, #32] - mov r3, r3, asl #10 - mla r1, r10, r4, r1 + beq .L2216 + mla r1, r10, r4, r0 + lsl r3, r3, #10 str r3, [r1, #4] - mul r3, ip, r4 + mul r3, lr, r4 add fp, r3, #3 cmp r3, #0 movlt r3, fp - ldr fp, [sp, #36] + ldr fp, [sp, #28] bic r3, r3, #3 add r3, fp, r3 str r3, [r1, #8] @@ -13213,673 +13684,764 @@ cmp r3, #0 movlt r3, fp bic r3, r3, #3 - add r3, lr, r3 + add r3, r7, r3 str r3, [r1, #12] -.L2248: +.L2216: add r2, r2, #1 - b .L2247 -.L2257: - ldr r0, [r6, #-536] - mov r1, r4 - mov r2, #0 - mov r8, #0 - bl FlashReadPages - mov r9, #36 -.L2250: - uxth r3, r8 - cmp r3, r4 - bcs .L2258 - mul r2, r9, r8 - ldr lr, [r6, #-536] - ldrh r1, [sp, #40] - add r8, r8, #1 - add ip, lr, r2 - ldr r3, [ip, #12] - ldr r0, [ip, #8] - ldr r10, [r3] - str r10, [sp] - ldr r10, [r3, #4] - str r10, [sp, #4] - ldr r10, [r3, #8] - str r10, [sp, #8] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [r0] - str r3, [sp, #16] - ldr r3, [r0, #4] - ldr r0, .L2260+24 - str r3, [sp, #20] - ldr r2, [lr, r2] - ldr r3, [ip, #4] - bl printk - b .L2250 -.L2258: - ldr r0, [r6, #-536] - mov r1, r4 - mov r2, #1 - mov r8, #0 - bl FlashReadPages - mov r9, #36 -.L2252: - uxth r3, r8 - cmp r3, r4 - bcs .L2259 - mul r2, r9, r8 - ldr lr, [r6, #-536] - ldrh r1, [sp, #40] - add r8, r8, #1 - add ip, lr, r2 - ldr r3, [ip, #12] - ldr r0, [ip, #8] - ldr r10, [r3] - str r10, [sp] - ldr r10, [r3, #4] - str r10, [sp, #4] - ldr r10, [r3, #8] - str r10, [sp, #8] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [r0] - str r3, [sp, #16] - ldr r3, [r0, #4] - ldr r0, .L2260+28 - str r3, [sp, #20] - ldr r2, [lr, r2] - ldr r3, [ip, #4] - bl printk - b .L2252 -.L2259: + b .L2215 +.L2219: + mul r0, r8, r7 + ldr ip, [r5, #-536] + ldrh r1, [sp, #32] add r7, r7, #1 - b .L2246 -.L2256: - mov r0, #0 - add sp, sp, #92 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2261: + add r2, ip, r0 + ldr lr, [r2, #8] + ldr r3, [r2, #12] + ldr r10, [lr, #4] + str r10, [sp, #20] + ldr lr, [lr] + str lr, [sp, #16] + ldr lr, [r3, #12] + str lr, [sp, #12] + ldr lr, [r3, #8] + str lr, [sp, #8] + ldr lr, [r3, #4] + str lr, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r3, [r2, #4] + ldr r2, [ip, r0] + mov r0, r9 + bl printk + b .L2218 +.L2221: + mul r0, r8, r7 + ldr ip, [r5, #-536] + ldrh r1, [sp, #32] + add r7, r7, #1 + add r2, ip, r0 + ldr lr, [r2, #8] + ldr r3, [r2, #12] + ldr r10, [lr, #4] + str r10, [sp, #20] + ldr lr, [lr] + str lr, [sp, #16] + ldr lr, [r3, #12] + str lr, [sp, #12] + ldr lr, [r3, #8] + str lr, [sp, #8] + ldr lr, [r3, #4] + str lr, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r3, [r2, #4] + ldr r2, [ip, r0] + mov r0, r9 + bl printk + b .L2220 +.L2225: .align 2 -.L2260: - .word .LC110 - .word .LANCHOR3+168 +.L2224: .word .LANCHOR2 - .word .LANCHOR0+2330 + .word .LANCHOR3+158 + .word .LC110 + .word .LANCHOR0+2334 .word .LC114 - .word .LANCHOR0+2320 + .word .LANCHOR0+2324 .word .LC115 .word .LC116 .fnend .size FtlScanAllBlock, .-FtlScanAllBlock .align 2 .global ftl_scan_all_ppa + .syntax unified + .arm + .fpu softvfp .type ftl_scan_all_ppa, %function ftl_scan_all_ppa: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - movw r3, #2386 - ldr r6, .L2281 - .pad #24 - sub sp, sp, #24 - ldr r5, .L2281+4 - ldrh r4, [r6, r3] + ldr r3, .L2243 + movw r2, #2388 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #36 + sub sp, sp, #36 + ldr r5, .L2243+4 + ldrh r4, [r3, r2] + add r10, r5, #1760 + str r3, [sp, #28] sub r4, r4, #16 -.L2263: - ldr r7, .L2281+8 - ldrh r3, [r7] + lsl r9, r4, #10 +.L2227: + ldr r3, .L2243+8 + ldrh r3, [r3] cmp r4, r3 - bge .L2279 - uxth r8, r4 - mov r0, r8 + blt .L2235 + ldr r1, .L2243+12 + ldr r0, .L2243+16 + add sp, sp, #36 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} + b printk +.L2235: + uxth r7, r4 + mov r0, r7 bl ftl_get_blk_mode - ldrb r3, [r6, #144] @ zero_extendqisi2 + ldr r3, [sp, #28] + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L2264 - ldrh r3, [r7, #-58] + beq .L2228 + ldr r3, .L2243+20 + ldrh r2, [r3] + cmp r4, r2 + bge .L2229 + ldrh r3, [r3, #72] cmp r4, r3 - bge .L2265 - ldrh r3, [r7, #16] - cmp r4, r3 - blt .L2265 -.L2264: + blt .L2229 +.L2228: cmp r0, #1 - bne .L2266 -.L2265: - ldr r3, .L2281+12 - mov r9, #-2147483648 - ldrh r7, [r3] - b .L2267 -.L2266: - ldr r3, .L2281+16 - mov r9, #0 - ldrh r7, [r3] -.L2267: + bne .L2230 +.L2229: + ldr r3, .L2243+24 + mov r8, #-2147483648 + ldrh r6, [r3] +.L2231: + mov r3, r8 + mov r2, r6 mov r1, r4 - mov r2, r7 - mov r3, r9 - ldr r0, .L2281+20 + ldr r0, .L2243+28 bl printk - mov r0, r8 + mov r0, r7 bl FtlBbmIsBadBlock cmp r0, #0 - beq .L2268 - ldr r0, .L2281+24 + beq .L2232 + mov r3, r8 + mov r2, r6 mov r1, r4 - mov r2, r7 - mov r3, r9 + ldr r0, .L2243+32 bl printk -.L2268: - mov r10, r4, asl #10 +.L2232: + ldr fp, .L2243+36 + mov r7, #0 +.L2233: + cmp r7, r6 + bne .L2234 + add r4, r4, #1 + add r9, r9, #1024 + b .L2227 +.L2230: + ldr r3, .L2243+40 mov r8, #0 -.L2269: - cmp r8, r7 - beq .L2280 - add r3, r9, r10 + ldrh r6, [r3] + b .L2231 +.L2234: + add r3, r8, r9 mov r2, #0 - add r3, r3, r8 - str r3, [r5, #1756] - ldr r3, [r5, #-524] + add r3, r3, r7 mov r1, #1 - ldr r0, .L2281+28 - add r8, r8, #1 - str r2, [r5, #1752] - str r3, [r5, #1760] - ldr r3, [r5, #-500] str r3, [r5, #1764] + mov r0, r10 + ldr r3, [r5, #-524] + add r7, r7, #1 + str r2, [r5, #1760] + str r3, [r5, #1768] + ldr r3, [r5, #-500] + str r3, [r5, #1772] bl FlashReadPages - ldr r3, [r5, #1764] + ldr r2, [r5, #1768] + mov r0, fp + ldr r3, [r5, #1772] + ldr r1, [r2, #4] + str r1, [sp, #16] + ldr r2, [r2] + ldr r1, [r5, #1764] + str r2, [sp, #12] + ldr r2, [r3, #12] + str r2, [sp, #8] + ldr r2, [r3, #8] + str r2, [sp, #4] + ldr r2, [r3, #4] + str r2, [sp] ldr r2, [r5, #1760] - ldr r0, .L2281+32 - ldr r1, [r3, #4] - str r1, [sp] - ldr r1, [r3, #8] - str r1, [sp, #4] - ldr r1, [r3, #12] - str r1, [sp, #8] - ldr r1, [r2] - str r1, [sp, #12] - ldr r2, [r2, #4] - ldr r1, [r5, #1756] - str r2, [sp, #16] - ldr r2, [r5, #1752] ldr r3, [r3] bl printk - b .L2269 -.L2280: - add r4, r4, #1 - b .L2263 -.L2279: - ldr r0, .L2281+36 - ldr r1, .L2281+40 - add sp, sp, #24 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} - b printk -.L2282: + b .L2233 +.L2244: .align 2 -.L2281: +.L2243: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2386 - .word .LANCHOR0+2390 .word .LANCHOR0+2388 + .word .LANCHOR3+174 + .word .LC120 + .word .LANCHOR0+2332 + .word .LANCHOR0+2392 .word .LC117 .word .LC118 - .word .LANCHOR2+1752 .word .LC119 - .word .LC120 - .word .LANCHOR3+184 + .word .LANCHOR0+2390 .fnend .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 2 .global FlashProgPages + .syntax unified + .arm + .fpu softvfp .type FlashProgPages, %function FlashProgPages: .fnstart - @ args = 0, pretend = 0, frame = 64 + @ args = 0, pretend = 0, frame = 72 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 - ldr r6, .L2339 - mov r4, r0 - str r1, [sp, #8] - mov r9, r2 - str r3, [sp, #20] - ldr ip, [r6, #44] - ldrb r7, [r6] @ zero_extendqisi2 + .pad #84 + sub sp, sp, #84 + ldr r5, .L2298 + str r1, [sp, #12] + ldr ip, [r5, #48] + ldrb r8, [r5, #36] @ zero_extendqisi2 + str r3, [sp, #24] ldrb ip, [ip, #19] @ zero_extendqisi2 - cmp r7, #0 - str ip, [sp, #16] - ldr ip, .L2339+4 - ldrb ip, [ip, #481] @ zero_extendqisi2 - str ip, [sp, #12] - beq .L2284 + cmp r8, #0 + str ip, [sp, #20] + bne .L2246 + ldr r3, .L2298+4 + mov r4, r0 + mov r9, r2 + ldrb r3, [r3, #477] @ zero_extendqisi2 + str r3, [sp, #16] + add r3, r5, #1216 + add r3, r3, #4 + str r3, [sp, #28] +.L2247: + ldr r3, [sp, #12] + cmp r8, r3 + bcc .L2260 + ldr r7, .L2298+8 + mov r6, #0 +.L2261: + ldrb r3, [r5, #2234] @ zero_extendqisi2 + cmp r6, r3 + bcc .L2263 + ldr r3, [sp, #24] + cmp r3, #0 + bne .L2264 +.L2272: + mov r0, #0 + b .L2245 +.L2246: bl FlashProgSlc2KPages - b .L2285 -.L2297: - mov r3, #36 +.L2245: + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2260: + ldr r3, [sp, #12] + mov r7, #36 + mul r7, r7, r8 + add r2, sp, #36 mov r1, r9 - mul r8, r3, r7 - ldr r3, [sp, #8] - add r2, sp, #28 - rsb r3, r7, r3 - add fp, r4, r8 + sub r3, r3, r8 uxtb r3, r3 + add fp, r4, r7 str r3, [sp] mov r0, fp - add r3, sp, #32 + add r3, sp, #40 bl LogAddr2PhyAddr - ldrb r3, [r6, #2230] @ zero_extendqisi2 + ldrb r3, [r5, #2234] @ zero_extendqisi2 mov r10, r0 - ldr r0, [sp, #32] - cmp r0, r3 - mvncs r3, #0 - strcs r3, [r4, r8] - bcc .L2336 -.L2287: - add r7, r7, #1 -.L2284: - ldr r3, [sp, #8] - ldr r5, .L2339 - cmp r7, r3 - bcc .L2297 - b .L2337 -.L2336: - ldrb r3, [r6, #2240] @ zero_extendqisi2 + ldr r0, [sp, #40] + cmp r3, r0 + mvnls r3, #0 + strls r3, [r4, r7] + bls .L2250 + ldrb r3, [r5, #2244] @ zero_extendqisi2 cmp r3, #0 - add r3, r6, r0, asl #4 - ldr r3, [r3, #2108] + add r3, r5, r0, lsl #4 moveq r10, #0 + ldr r3, [r3, #2112] cmp r3, #0 - beq .L2289 + beq .L2252 uxtb r0, r0 bl FlashWaitCmdDone -.L2289: - ldr r3, [sp, #32] +.L2252: + ldr r3, [sp, #40] mov r1, #0 cmp r10, #0 - add r2, r6, r3, asl #4 - str r1, [r2, #2112] - ldr r1, [sp, #28] - str fp, [r2, #2108] - str r1, [r2, #2104] - addne r1, r8, #36 + add r2, r5, r3, lsl #4 + str r1, [r2, #2116] + ldr r1, [sp, #36] + str fp, [r2, #2112] + str r1, [r2, #2108] + addne r1, r7, #36 addne r1, r4, r1 - strne r1, [r2, #2112] - add r2, r6, r3 - add r3, r6, r3, asl #4 - ldrb r5, [r2, #2232] @ zero_extendqisi2 - strb r5, [r3, #2100] - mov r0, r5 - ldrb r3, [r6, #2230] @ zero_extendqisi2 + strne r1, [r2, #2116] + add r2, r5, r3 + ldrb r6, [r2, #2236] @ zero_extendqisi2 + add r3, r5, r3, lsl #4 + strb r6, [r3, #2104] + mov r0, r6 + ldrb r3, [r5, #2234] @ zero_extendqisi2 cmp r3, #1 - bne .L2291 + bne .L2254 bl NandcWaitFlashReady - b .L2292 -.L2291: - bl NandcFlashCs - mov r0, r5 - ldr r3, [sp, #32] - ldr r1, [sp, #28] - add r3, r6, r3, asl #2 - ldr r2, [r3, #1172] - adds r2, r2, #0 - movne r2, #1 - bl FlashWaitReadyEN - mov r0, r5 - bl NandcFlashDeCs -.L2292: - ldr r3, [sp, #16] +.L2255: + ldr r3, [sp, #20] sub r3, r3, #1 cmp r3, #7 - bhi .L2293 - add r3, r6, r5 - ldrb r3, [r3, #2064] @ zero_extendqisi2 + bhi .L2256 + add r3, r5, r6 + ldrb r3, [r3, #2068] @ zero_extendqisi2 cmp r3, #0 - beq .L2293 - mov r0, r5 - ldrb r1, [r6, #1211] @ zero_extendqisi2 - ldr r2, .L2339+8 + beq .L2256 mov r3, #0 + ldr r2, [sp, #28] + ldrb r1, [r5, #1217] @ zero_extendqisi2 + mov r0, r6 bl HynixSetRRPara -.L2293: - mov r0, r5 +.L2256: + mov r0, r6 bl NandcFlashCs cmp r9, #1 - mov r0, r5 - bne .L2294 - ldrb r3, [r6, #144] @ zero_extendqisi2 + mov r0, r6 + bne .L2257 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L2294 + beq .L2257 bl flash_enter_slc_mode - b .L2295 -.L2294: - bl flash_exit_slc_mode -.L2295: - mov r0, r5 - ldr r1, [sp, #28] +.L2258: + ldr r1, [sp, #36] + mov r0, r6 bl FlashProgFirstCmd ldr r3, [fp, #12] - mov r0, r5 mov r1, #1 + ldr r2, [sp, #16] + mov r0, r6 str r3, [sp] - ldr r2, [sp, #12] ldr r3, [fp, #8] bl NandcXferData cmp r10, #0 - beq .L2296 - mov r0, r5 - ldr r1, [sp, #28] + beq .L2259 + ldr r1, [sp, #36] + mov r0, r6 bl FlashProgDpFirstCmd - mov r0, r5 - add r8, r8, #36 - add r8, r4, r8 - ldr r3, [sp, #32] - ldr r1, [sp, #28] - add r3, r6, r3, asl #2 - ldr r2, [r3, #1172] + ldr r3, [sp, #40] + mov r0, r6 + ldr r1, [sp, #36] + add r7, r7, #36 + add r7, r4, r7 + add r3, r5, r3, lsl #2 + ldr r2, [r3, #1180] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - ldr r1, [r6, #4] - mov r0, r5 - ldr r3, [sp, #28] + ldr r3, [r5, #40] + mov r0, r6 + ldr r1, [sp, #36] add r1, r1, r3 bl FlashProgDpSecondCmd - ldr r3, [r8, #12] - mov r0, r5 + ldr r3, [r7, #12] mov r1, #1 + ldr r2, [sp, #16] + mov r0, r6 str r3, [sp] - ldr r2, [sp, #12] - ldr r3, [r8, #8] + ldr r3, [r7, #8] bl NandcXferData -.L2296: - mov r0, r5 - ldr r1, [sp, #28] +.L2259: + ldr r1, [sp, #36] + mov r0, r6 + add r8, r8, r10 bl FlashProgSecondCmd - mov r0, r5 + mov r0, r6 bl NandcFlashDeCs - add r7, r7, r10 - b .L2287 -.L2337: - ldr r8, .L2339+12 - mov r6, #0 - mov r7, r5 -.L2298: - ldrb r3, [r5, #2230] @ zero_extendqisi2 - cmp r6, r3 - bcs .L2338 +.L2250: + add r8, r8, #1 + b .L2247 +.L2254: + bl NandcFlashCs + ldr r3, [sp, #40] + mov r0, r6 + ldr r1, [sp, #36] + add r3, r5, r3, lsl #2 + ldr r2, [r3, #1180] + adds r2, r2, #0 + movne r2, #1 + bl FlashWaitReadyEN + mov r0, r6 + bl NandcFlashDeCs + b .L2255 +.L2257: + bl flash_exit_slc_mode + b .L2258 +.L2263: uxtb r0, r6 bl FlashWaitCmdDone cmp r9, #1 - bne .L2299 - ldrb r3, [r7, #144] @ zero_extendqisi2 + bne .L2262 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L2299 - ldrb r0, [r8, r6, asl #4] @ zero_extendqisi2 + beq .L2262 + ldrb r0, [r7, r6, lsl #4] @ zero_extendqisi2 bl flash_exit_slc_mode -.L2299: +.L2262: add r6, r6, #1 - b .L2298 -.L2338: - ldr r3, [sp, #20] - cmp r3, #0 - bne .L2301 -.L2309: - mov r0, #0 - b .L2285 -.L2301: - ldr r5, .L2339+16 + b .L2261 +.L2264: + ldr r5, .L2298+12 mov r6, #0 - mov r7, r5 -.L2302: - ldr r3, [sp, #8] + ldr r7, .L2298+16 +.L2265: + ldr r3, [sp, #12] cmp r6, r3 - beq .L2309 + beq .L2272 ldr r3, [r4] cmn r3, #1 - bne .L2303 + bne .L2266 ldr r1, [r4, #4] - ldr r0, .L2339+20 + ldr r0, .L2298+20 bl printk - b .L2304 -.L2303: - ldr r3, [sp, #8] - mov r1, r9 - add r2, sp, #28 - mov r0, r4 - rsb r3, r6, r3 - uxtb r3, r3 - str r3, [sp] - add r3, sp, #32 - bl LogAddr2PhyAddr - ldr r2, [r5, #1724] - mov r3, #0 - mov lr, r4 - str r3, [r2] - ldr r2, [r5, #1728] - str r3, [r2] - ldmia lr!, {r0, r1, r2, r3} - add ip, sp, #36 - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - add r0, sp, #36 - ldr r3, [lr] - mov r1, #1 - mov r2, r9 - str r3, [ip] - ldr r3, [r5, #1724] - str r3, [sp, #44] - ldr r3, [r5, #1728] - str r3, [sp, #48] - bl FlashReadPages - ldr r8, [sp, #36] - cmn r8, #1 - bne .L2305 - ldr r0, .L2339+24 - ldr r1, [r4, #4] - bl printk - str r8, [r4] -.L2305: - ldr r3, [r4, #12] - cmp r3, #0 - beq .L2306 - ldr r2, [r3] - ldr r3, [r7, #1728] - ldr r3, [r3] - cmp r2, r3 - beq .L2306 - ldr r0, .L2339+28 - ldr r1, [r4, #4] - bl printk - mvn r3, #0 - str r3, [r4] -.L2306: - ldr r3, [r4, #8] - cmp r3, #0 - beq .L2304 - ldr r2, [r3] - ldr r3, [r7, #1724] - ldr r3, [r3] - cmp r2, r3 - beq .L2304 - ldr r0, .L2339+32 - ldr r1, [r4, #4] - bl printk - mvn r3, #0 - str r3, [r4] -.L2304: +.L2267: add r6, r6, #1 add r4, r4, #36 - b .L2302 -.L2285: - add sp, sp, #76 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2340: + b .L2265 +.L2266: + ldr r3, [sp, #12] + add r2, sp, #36 + mov r1, r9 + mov r0, r4 + sub r3, r3, r6 + uxtb r3, r3 + str r3, [sp] + add r3, sp, #40 + bl LogAddr2PhyAddr + ldr r2, [r5, #1732] + mov r3, #0 + mov lr, r4 + add ip, sp, #44 + str r3, [r2] + ldr r2, [r5, #1736] + str r3, [r2] + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + mov r2, r9 + ldr r3, [lr] + mov r1, #1 + add r0, sp, #44 + str r3, [ip] + ldr r3, [r5, #1732] + str r3, [sp, #52] + ldr r3, [r5, #1736] + str r3, [sp, #56] + bl FlashReadPages + ldr r8, [sp, #44] + cmn r8, #1 + bne .L2268 + ldr r1, [r4, #4] + ldr r0, .L2298+24 + bl printk + str r8, [r4] +.L2268: + ldr r3, [r4, #12] + cmp r3, #0 + beq .L2269 + ldr r2, [r3] + ldr r3, [r5, #1736] + ldr r3, [r3] + cmp r2, r3 + beq .L2269 + ldr r1, [r4, #4] + ldr r0, .L2298+28 + bl printk + mvn r3, #0 + str r3, [r4] +.L2269: + ldr r3, [r4, #8] + cmp r3, #0 + beq .L2267 + ldr r2, [r3] + ldr r3, [r5, #1732] + ldr r3, [r3] + cmp r2, r3 + beq .L2267 + ldr r1, [r4, #4] + mov r0, r7 + bl printk + mvn r3, #0 + str r3, [r4] + b .L2267 +.L2299: .align 2 -.L2339: +.L2298: .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR0+1214 - .word .LANCHOR0+2100 + .word .LANCHOR0+2104 .word .LANCHOR2 + .word .LC108 .word .LC104 .word .LC105 .word .LC107 - .word .LC108 .fnend .size FlashProgPages, .-FlashProgPages .align 2 .global FlashTestBlk + .syntax unified + .arm + .fpu softvfp .type FlashTestBlk, %function FlashTestBlk: .fnstart @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, lr} + push {r4, r5, lr} .save {r4, r5, lr} .pad #108 sub sp, sp, #108 - ldr r5, .L2345 - ldr r3, [r5, #1708] + ldr r5, .L2304 + ldr r3, [r5, #1716] cmp r0, r3 movcc r4, #0 - bcc .L2342 - ldr r3, [r5, #1716] + bcc .L2300 + ldr r3, [r5, #1724] mov r4, r0 - mov r1, #165 - add r0, sp, #40 mov r2, #32 + add r0, sp, #40 + mov r1, #165 str r0, [sp, #16] str r3, [sp, #12] bl ftl_memset - mov r1, #90 mov r2, #8 - ldr r0, [r5, #1716] - mov r4, r4, asl #10 + mov r1, #90 + ldr r0, [r5, #1724] bl ftl_memset - mov r1, #1 - mov r2, r1 - add r0, sp, #4 - str r4, [sp, #8] - bl FlashEraseBlocks - mov r1, #1 - mov r2, r1 - mov r3, r1 - add r0, sp, #4 - bl FlashProgPages - mov r1, #0 + lsl r0, r4, #10 mov r2, #1 + mov r1, r2 + str r0, [sp, #8] + add r0, sp, #4 + bl FlashEraseBlocks + mov r3, #1 + add r0, sp, #4 + mov r2, r3 + mov r1, r3 + bl FlashProgPages ldr r4, [sp, #4] + mov r2, #1 + mov r1, #0 add r0, sp, #4 adds r4, r4, #0 movne r4, #1 rsb r4, r4, #0 bl FlashEraseBlocks -.L2342: +.L2300: mov r0, r4 add sp, sp, #108 @ sp needed - ldmfd sp!, {r4, r5, pc} -.L2346: + pop {r4, r5, pc} +.L2305: .align 2 -.L2345: +.L2304: .word .LANCHOR2 .fnend .size FlashTestBlk, .-FlashTestBlk .align 2 .global FlashMakeFactorBbt + .syntax unified + .arm + .fpu softvfp .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: .fnstart @ args = 0, pretend = 0, frame = 80 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r2, .L2357 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #84 sub sp, sp, #84 - ldr r5, .L2403 - mov r1, #1 - ldr r4, .L2403+4 - ldr r0, .L2403+8 - ldr r3, [r5, #1720] - ldrh r8, [r4, #128] - str r3, [sp, #20] - ldrh r3, [r4, #130] - smulbb r8, r8, r3 - ldr r3, [r4, #44] - ldrb r3, [r3, #24] @ zero_extendqisi2 - uxth r8, r8 + ldr r5, .L2357 + mov r4, r2 + ldr r3, [r2, #1728] str r3, [sp, #24] - ldrh r3, [r4, #4] - str r3, [sp, #16] - ldrb r3, [r4] @ zero_extendqisi2 - ldr r4, .L2403+4 + ldr r3, .L2357+4 + ldrh r0, [r3, #136] + ldrh r1, [r3, #138] + smulbb r1, r1, r0 + ldr r0, .L2357+8 + uxth r1, r1 + str r1, [sp, #4] + ldr r1, [r3, #48] + ldrb r1, [r1, #24] @ zero_extendqisi2 + str r1, [sp, #28] + ldrh r1, [r3, #40] + ldrb r3, [r3, #36] @ zero_extendqisi2 + str r1, [sp, #20] cmp r3, #1 - ldreq r3, [sp, #16] - moveq r3, r3, asl #1 + moveq r3, r1 + mov r1, #1 + lsleq r3, r3, #1 uxtheq r3, r3 - streq r3, [sp, #16] + streq r3, [sp, #20] bl printk - ldr r0, [r5, #1720] - mov r1, #0 + ldr r0, [r4, #1728] mov r2, #4096 + mov r1, #0 + ldr r4, .L2357+4 bl ftl_memset - ldr r5, .L2403 - mov r3, r8, lsr #4 - str r3, [sp, #28] + ldr r3, [sp, #4] + lsr r3, r3, #4 + str r3, [sp, #32] mov r3, #0 - str r3, [sp, #8] -.L2349: - ldrb r7, [sp, #8] @ zero_extendqisi2 - ldrb r3, [r4, #2230] @ zero_extendqisi2 + str r3, [sp, #12] +.L2308: + ldrb r7, [sp, #12] @ zero_extendqisi2 + ldrb r3, [r4, #2234] @ zero_extendqisi2 cmp r3, r7 - bls .L2399 - ldr r2, .L2403+12 - mov r3, r7, asl #1 + bhi .L2335 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2335: + ldr r2, .L2357+12 + lsl r3, r7, #1 ldrh r6, [r2, r3] cmp r6, #0 - bne .L2379 - ldrh r2, [r4, #136] + bne .L2309 + ldrh r2, [r4, #144] mov r1, r6 - ldr r0, [r5, #1688] + ldr r0, [r5, #1696] + add fp, r4, r7, lsl #2 + mov r8, r6 mov r9, r6 - mov r2, r2, asl #9 + lsl r2, r2, #9 bl ftl_memset add r3, r4, r7 - ldrb r10, [r3, #2232] @ zero_extendqisi2 - mov r3, r7, asl #2 - add fp, r4, r3 - str r6, [sp, #4] - str r3, [sp, #32] -.L2351: - ldrh r3, [sp, #4] - cmp r3, r8 - str r3, [sp, #12] - bcs .L2361 + str r6, [sp, #8] + ldrb r10, [r3, #2236] @ zero_extendqisi2 +.L2310: + ldrh r3, [sp, #8] + ldr r2, [sp, #4] + str r3, [sp, #16] + cmp r3, r2 + bcc .L2321 +.L2320: + mov r2, r8 + mov r1, r7 + ldr r0, .L2357+16 + bl printk + ldrb r3, [r4, #2234] @ zero_extendqisi2 + ldr r2, [sp, #32] + mul r3, r2, r3 + cmp r8, r3 + blt .L2322 + ldrh r2, [r4, #144] + mov r1, #0 + ldr r0, [r5, #1696] + lsl r2, r2, #9 + bl ftl_memset +.L2322: + cmp r7, #0 + bne .L2324 + add r3, r5, #1712 + ldr r8, .L2357+20 + add r3, r3, #4 + ldrh r10, [r3] + mov r9, #1 +.L2325: + ldrb r3, [r4, #37] @ zero_extendqisi2 + cmp r3, r10 + bhi .L2327 + ldr r3, [sp, #4] + mov r10, #1 + ldr r9, .L2357+20 + sub fp, r3, #1 + sub r8, r3, #50 + uxth fp, fp +.L2328: + cmp fp, r8 + bgt .L2330 + ldrb r3, [r4, #37] @ zero_extendqisi2 + ldr r2, [r5, #1716] + sub r3, r3, r2 + cmp r6, r3 + bcc .L2324 + ldrh r2, [r4, #144] + mov r1, #0 + ldr r0, [r5, #1696] + lsl r2, r2, #9 + bl ftl_memset +.L2324: + ldr r3, [sp, #4] + ldrb r8, [sp, #12] @ zero_extendqisi2 + ldr r9, .L2357+12 + sub r6, r3, #1 + ldr fp, .L2357+24 + ldr r10, .L2357+28 + uxth r6, r6 + mul r8, r3, r8 + add r9, r9, r7, lsl #1 +.L2332: + mov r1, r7 + mov r2, r6 + mov r0, fp + bl printk + ldr r1, [r5, #1696] +.L2333: + lsr r2, r6, #5 + and r3, r6, #31 + ldr r2, [r1, r2, lsl #2] + lsr r3, r2, r3 + ands r3, r3, #1 + bne .L2334 + ldr r2, [sp, #24] + add r0, sp, #44 + strh r6, [r9] @ movhi + strh r10, [r2] @ movhi + strh r6, [r2, #2] @ movhi + strh r3, [r2, #8] @ movhi + mov r2, #1 + ldr r3, [r5, #1696] + mov r1, r2 + str r3, [sp, #52] + ldr r3, [r5, #1728] + str r3, [sp, #56] + add r3, r6, r8 + lsl r3, r3, #10 + str r3, [sp, #48] + bl FlashEraseBlocks + mov r3, #1 + add r0, sp, #44 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r3, [sp, #44] + cmp r3, #0 + beq .L2309 + sub r6, r6, #1 + uxth r6, r6 + b .L2332 +.L2321: mvn r3, #0 strb r3, [sp, #42] strb r3, [sp, #43] - ldr r3, [sp, #24] + ldr r3, [sp, #28] tst r3, #1 - beq .L2353 - ldr r3, [fp, #1172] + beq .L2312 + ldr r3, [fp, #1180] add r2, sp, #42 mov r0, r10 - add r3, r6, r3 - str r3, [sp, #36] + add r3, r9, r3 mov r1, r3 + str r3, [sp, #36] bl FlashReadSpare - ldrb r2, [r4] @ zero_extendqisi2 - cmp r2, #1 + ldrb r2, [r4, #36] @ zero_extendqisi2 ldr r3, [sp, #36] - bne .L2353 - ldr r1, [r4, #4] + cmp r2, #1 + bne .L2312 + ldr r1, [r4, #40] add r2, sp, #43 mov r0, r10 add r1, r3, r1 @@ -13888,1198 +14450,1097 @@ ldrb r2, [sp, #43] @ zero_extendqisi2 and r3, r3, r2 strb r3, [sp, #42] -.L2353: - ldr r3, [sp, #24] +.L2312: + ldr r3, [sp, #28] tst r3, #2 - beq .L2355 - ldr r3, [r4, #44] - mov r0, r10 + beq .L2314 + ldr r3, [r4, #48] add r2, sp, #43 + mov r0, r10 ldrh r1, [r3, #10] - ldr r3, [fp, #1172] + ldr r3, [fp, #1180] sub r1, r1, #1 add r1, r1, r3 - add r1, r1, r6 + add r1, r1, r9 bl FlashReadSpare -.L2355: - ldr r2, [r4, #44] +.L2314: + ldr r2, [r4, #48] ldrb r3, [r2, #7] @ zero_extendqisi2 - cmp r3, #1 - cmpne r3, #8 + cmp r3, #8 + cmpne r3, #1 ldrb r3, [sp, #42] @ zero_extendqisi2 - beq .L2356 + beq .L2315 ldrb r2, [r2, #18] @ zero_extendqisi2 cmp r2, #12 - bne .L2357 -.L2356: + bne .L2316 +.L2315: cmp r3, #0 - ldrneb r0, [sp, #43] @ zero_extendqisi2 + ldrbne r0, [sp, #43] @ zero_extendqisi2 clzne r0, r0 - movne r0, r0, lsr #5 - bne .L2358 - b .L2378 -.L2357: + lsrne r0, r0, #5 + bne .L2317 +.L2337: + mov r0, #1 + b .L2317 +.L2316: cmp r3, #255 - bne .L2378 + bne .L2337 ldrb r0, [sp, #43] @ zero_extendqisi2 subs r0, r0, #255 movne r0, #1 - b .L2358 -.L2378: - mov r0, #1 -.L2358: - ldr r3, [sp, #24] +.L2317: + ldr r3, [sp, #28] tst r3, #4 - beq .L2359 - ldr r3, .L2403+4 + beq .L2318 + ldr r1, [fp, #1180] mov r0, r10 - ldr r2, [sp, #32] - add r3, r3, r2 - ldr r1, [r3, #1172] - add r1, r6, r1 + add r1, r9, r1 bl SandiskProgTestBadBlock -.L2359: +.L2318: cmp r0, #0 - beq .L2360 + beq .L2319 + ldr r2, [sp, #8] mov r1, r7 - ldr r2, [sp, #4] - ldr r0, .L2403+16 - add r9, r9, #1 + ldr r0, .L2357+32 + add r8, r8, #1 bl printk - ldr r1, [r5, #1688] - mov ip, #1 - uxth r9, r9 - ldr r3, [sp, #12] - mov r0, r3, lsr #5 - and r3, r3, #31 - ldr r2, [r1, r0, asl #2] - orr r3, r2, ip, asl r3 - ldr r2, [sp, #28] - str r3, [r1, r0, asl #2] - ldrb r3, [r4, #2230] @ zero_extendqisi2 - mul r3, r3, r2 - cmp r9, r3 - bgt .L2361 -.L2360: - ldr r3, [sp, #4] - add r3, r3, #1 - str r3, [sp, #4] ldr r3, [sp, #16] - add r6, r6, r3 - b .L2351 -.L2361: - mov r2, r9 - ldr r0, .L2403+20 - mov r1, r7 - bl printk - ldrb r3, [r4, #2230] @ zero_extendqisi2 - ldr r2, [sp, #28] - mul r3, r3, r2 - cmp r9, r3 - blt .L2363 - ldrh r2, [r4, #136] - mov r1, #0 - ldr r0, [r5, #1688] - mov r2, r2, asl #9 - bl ftl_memset -.L2363: - cmp r7, #0 - bne .L2365 - ldr r3, [r5, #1708] - mov r6, r7 - mov r9, #1 - uxth r10, r3 -.L2366: - ldr r3, .L2403+4 - ldrb r3, [r3, #1] @ zero_extendqisi2 - cmp r3, r10 - bls .L2400 - mov r0, r10 - bl FlashTestBlk - cmp r0, #0 - beq .L2367 - mov r1, r10 - ldr r0, .L2403+24 - bl printk - ldr r1, [r5, #1688] - mov r0, r10, lsr #5 - add r6, r6, #1 - and r3, r10, #31 - ldr r2, [r1, r0, asl #2] - uxth r6, r6 - orr r3, r2, r9, asl r3 - str r3, [r1, r0, asl #2] -.L2367: - add r10, r10, #1 - uxth r10, r10 - b .L2366 -.L2400: - sub fp, r8, #1 - sub r9, r8, #50 - mov r10, #1 - uxth fp, fp -.L2369: - cmp fp, r9 - ble .L2401 - mov r0, fp - bl FlashTestBlk - cmp r0, #0 - beq .L2370 - mov r1, fp - ldr r0, .L2403+24 - bl printk - ldr r1, [r5, #1688] - mov r0, fp, lsr #5 - and r3, fp, #31 - ldr r2, [r1, r0, asl #2] - orr r3, r2, r10, asl r3 - str r3, [r1, r0, asl #2] -.L2370: - sub fp, fp, #1 - uxth fp, fp - b .L2369 -.L2401: - ldr r3, .L2403+4 - ldr r2, [r5, #1708] - ldrb r3, [r3, #1] @ zero_extendqisi2 - rsb r3, r2, r3 - cmp r6, r3 - bcc .L2365 - ldrh r2, [r4, #136] - mov r1, #0 - ldr r0, [r5, #1688] - mov r2, r2, asl #9 - bl ftl_memset -.L2365: - ldrb r6, [sp, #8] @ zero_extendqisi2 - sub r10, r8, #1 - ldr r9, .L2403+12 - uxth r10, r10 - mul r6, r8, r6 - add r9, r9, r7, asl #1 -.L2373: - mov r1, r7 - ldr r0, .L2403+28 - mov r2, r10 - bl printk - ldr r1, [r5, #1688] -.L2374: - mov r2, r10, lsr #5 - and r3, r10, #31 - ldr r2, [r1, r2, asl #2] - mov r3, r2, lsr r3 - ands r3, r3, #1 - subne r10, r10, #1 - uxthne r10, r10 - bne .L2374 -.L2402: - ldr r1, [sp, #20] - add r0, sp, #44 - ldr r2, .L2403+32 - strh r10, [r9] @ movhi - strh r10, [r1, #2] @ movhi - strh r2, [r1] @ movhi - strh r3, [r1, #8] @ movhi - mov r1, #1 - ldr r3, [r5, #1688] - mov r2, r1 - str r3, [sp, #52] - ldr r3, [r5, #1720] - str r3, [sp, #56] - add r3, r10, r6 - mov r3, r3, asl #10 - str r3, [sp, #48] - bl FlashEraseBlocks - mov r1, #1 - mov r3, r1 - mov r2, r1 - add r0, sp, #44 - bl FlashProgPages - ldr r3, [sp, #44] - cmp r3, #0 - subne r10, r10, #1 - uxthne r10, r10 - bne .L2373 -.L2379: + mov ip, #1 + ldr r2, [r5, #1696] + uxth r8, r8 + and r0, r3, #31 + lsr r1, r3, #5 + ldr r3, [r2, r1, lsl #2] + orr r3, r3, ip, lsl r0 + str r3, [r2, r1, lsl #2] + ldr r2, [sp, #32] + ldrb r3, [r4, #2234] @ zero_extendqisi2 + mul r3, r2, r3 + cmp r8, r3 + bgt .L2320 +.L2319: ldr r3, [sp, #8] add r3, r3, #1 str r3, [sp, #8] - b .L2349 -.L2399: - add sp, sp, #84 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2404: + ldr r3, [sp, #20] + add r9, r9, r3 + b .L2310 +.L2327: + mov r0, r10 + bl FlashTestBlk + cmp r0, #0 + beq .L2326 + mov r1, r10 + mov r0, r8 + bl printk + ldr r1, [r5, #1696] + lsr r0, r10, #5 + add r6, r6, #1 + and r3, r10, #31 + uxth r6, r6 + ldr r2, [r1, r0, lsl #2] + orr r3, r2, r9, lsl r3 + str r3, [r1, r0, lsl #2] +.L2326: + add r10, r10, #1 + uxth r10, r10 + b .L2325 +.L2330: + mov r0, fp + bl FlashTestBlk + cmp r0, #0 + beq .L2329 + mov r1, fp + mov r0, r9 + bl printk + ldr r1, [r5, #1696] + lsr r0, fp, #5 + and r3, fp, #31 + ldr r2, [r1, r0, lsl #2] + orr r3, r2, r10, lsl r3 + str r3, [r1, r0, lsl #2] +.L2329: + sub fp, fp, #1 + uxth fp, fp + b .L2328 +.L2334: + sub r6, r6, #1 + uxth r6, r6 + b .L2333 +.L2309: + ldr r3, [sp, #12] + add r3, r3, #1 + str r3, [sp, #12] + b .L2308 +.L2358: .align 2 -.L2403: +.L2357: .word .LANCHOR2 .word .LANCHOR0 .word .LC121 - .word .LANCHOR2+1736 - .word .LC122 + .word .LANCHOR2+1742 .word .LC123 .word .LC124 .word .LC125 .word -3872 + .word .LC122 .fnend .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 2 .global FtlLowFormatEraseBlock + .syntax unified + .arm + .fpu softvfp .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L2404 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r9, .L2455 - ldr fp, .L2455+4 - ldr r5, [r9, #-3616] - ldrb r3, [fp, #2240] @ zero_extendqisi2 - cmp r5, #0 - str r3, [sp, #16] - movne r0, #0 - bne .L2406 - ldrb r3, [fp, #144] @ zero_extendqisi2 - mov r6, fp - add fp, fp, #2400 - mov r10, r9 - mov r4, r5 - mov r9, r5 + ldr r2, [r3, #-3612] + cmp r2, #0 + movne r4, #0 + bne .L2359 + ldr r5, .L2404+4 + mov r10, r3 + ldr fp, .L2404+8 + mov r9, r2 + mov r6, r2 + mov r4, r2 + ldrb r3, [r5, #2244] @ zero_extendqisi2 mov r8, #36 - str r1, [sp] - str r0, [sp, #4] - str r3, [sp, #8] + str r1, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #20] + ldrb r3, [r5, #152] @ zero_extendqisi2 str r0, [r10, #-548] -.L2407: - ldr ip, .L2455+4 - add r1, ip, #2320 - ldrh r0, [r1] + str r3, [sp, #12] +.L2361: + ldrh r0, [fp] uxth r1, r9 cmp r0, r1 - bls .L2450 - mul r0, r8, r1 - ldr ip, [r10, #-3612] + bhi .L2365 + cmp r6, #0 + beq .L2359 + ldr r3, [sp, #12] + mov r8, #0 + mov r2, r6 + ldr r0, [r10, #-3608] + strb r8, [r5, #2244] + mov r9, #36 + adds r7, r3, #0 + movne r7, #1 + mov r1, r7 + bl FlashEraseBlocks + ldrb r3, [sp, #20] @ zero_extendqisi2 + strb r3, [r5, #2244] +.L2367: + uxth r2, r8 + cmp r6, r2 + bhi .L2369 + ldr r3, [sp, #4] + cmp r3, #0 + bne .L2370 + uxth r7, r7 + mov r3, #6 + str r3, [sp, #16] + mov r3, #1 + str r3, [sp, #12] +.L2371: + ldr r6, .L2404 + mov r9, #0 +.L2380: + ldr fp, .L2404+4 + mov r10, #0 + mov r5, r10 +.L2372: + ldr r3, .L2404+8 + ldrh r1, [r3] + uxth r3, r10 + cmp r1, r3 + bhi .L2375 + cmp r5, #0 + beq .L2359 + mov r3, #1 + mov r8, #0 + mov r2, r7 + mov r1, r5 + ldr r0, [r6, #-3608] + strb r8, [fp, #2244] + bl FlashProgPages + ldrb r3, [sp, #20] @ zero_extendqisi2 + strb r3, [fp, #2244] + mov fp, #36 +.L2377: + uxth r3, r8 + cmp r5, r3 + bhi .L2379 + ldr r3, [sp, #16] + add r9, r9, r3 + ldr r3, [sp, #12] + uxth r9, r9 + cmp r3, r9 + bhi .L2380 + mov r8, #0 + mov r9, #36 +.L2381: + uxth r3, r8 + cmp r5, r3 + ldr r3, [sp, #4] + bhi .L2383 + adds r0, r3, #0 + ldr r3, [sp, #8] + movne r0, #1 + cmp r3, #63 + orrls r0, r0, #1 + cmp r0, #0 + beq .L2359 + mov r2, r5 + mov r1, r7 + ldr r0, [r6, #-3608] + bl FlashEraseBlocks +.L2359: + mov r0, r4 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2365: + uxth r1, r9 + ldr ip, [r10, #-3608] mov r3, #0 + mul r0, r8, r1 str r3, [ip, r0] - ldr r3, .L2455+4 - add r1, r3, r1 - ldrb r0, [r1, #2348] @ zero_extendqisi2 - ldr r1, [sp, #4] + add r0, r5, r1 + ldrb r0, [r0, #2350] @ zero_extendqisi2 + ldr r1, [sp, #8] bl V2P_block - ldr r3, [sp] + ldr r3, [sp, #4] mov r7, r0 cmp r3, #0 - beq .L2408 + beq .L2362 bl IsBlkInVendorPart cmp r0, #0 - bne .L2409 -.L2408: + bne .L2363 +.L2362: mov r0, r7 bl FtlBbmIsBadBlock cmp r0, #0 addne r4, r4, #1 uxthne r4, r4 - bne .L2409 - ldr ip, [r10, #-3612] - mov r7, r7, asl #10 - ldrh r1, [fp] - mla ip, r8, r5, ip - mul r1, r1, r5 - add r5, r5, #1 - uxth r5, r5 - cmp r1, #0 + bne .L2363 + ldr r3, .L2404+12 + lsl r7, r7, #10 + ldr ip, [r10, #-3608] + ldrh r1, [r3] + mla ip, r8, r6, ip + mul r1, r6, r1 + add r6, r6, #1 + uxth r6, r6 str r0, [ip, #8] - add r0, r1, #3 str r7, [ip, #4] + add r0, r1, #3 + cmp r1, #0 movlt r1, r0 ldr r0, [r10, #-496] bic r1, r1, #3 add r1, r0, r1 str r1, [ip, #12] -.L2409: +.L2363: add r9, r9, #1 - b .L2407 -.L2450: - cmp r5, #0 - beq .L2430 - ldr r3, [sp, #8] - mov r2, r5 - ldr r0, [r10, #-3612] - mov r8, #0 - adds r7, r3, #0 - strb r8, [ip, #2240] - str ip, [sp, #8] - mov r9, #36 - movne r7, #1 - mov r1, r7 - bl FlashEraseBlocks - ldrb r3, [sp, #16] @ zero_extendqisi2 - ldr ip, [sp, #8] - strb r3, [ip, #2240] -.L2413: - uxth r2, r8 - cmp r2, r5 - bcs .L2451 + b .L2361 +.L2369: mul r2, r9, r8 - ldr r1, [r10, #-3612] - add r0, r1, r2 + ldr r1, [r10, #-3608] + add ip, r1, r2 ldr r2, [r1, r2] cmn r2, #1 - bne .L2414 - ldr r0, [r0, #4] + bne .L2368 + ldr r0, [ip, #4] add r4, r4, #1 - ubfx r0, r0, #10, #16 uxth r4, r4 + ubfx r0, r0, #10, #16 bl FtlBbmMapBadBlock -.L2414: +.L2368: add r8, r8, #1 - b .L2413 -.L2451: - ldr r3, [sp] - cmp r3, #0 - bne .L2416 - mov r3, #6 - uxth r7, r7 + b .L2367 +.L2370: + movw r3, #2392 + ldrh r3, [r5, r3] str r3, [sp, #12] - mov r3, #1 - str r3, [sp, #8] - b .L2417 -.L2416: - movw r3, #2390 - ldrh r3, [r6, r3] - str r3, [sp, #8] - ldrb r3, [r6, #144] @ zero_extendqisi2 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - ldreq r3, [sp, #8] - moveq r7, #1 + ldreq r3, [sp, #12] movne r7, #1 - strne r7, [sp, #12] - moveq r3, r3, lsr #2 - streq r3, [sp, #12] -.L2417: - ldr r10, .L2455 - mov r5, #0 - mov r8, r10 -.L2426: - mov fp, #0 - mov r6, fp -.L2418: - ldr r9, .L2455+4 - add r3, r9, #2320 - ldrh r1, [r3] - uxth r3, fp - cmp r1, r3 - bls .L2452 + moveq r7, #1 + strne r7, [sp, #16] + lsreq r3, r3, #2 + streq r3, [sp, #16] + b .L2371 +.L2375: + uxth r3, r10 mov r2, #36 - ldr r0, [r10, #-3612] + ldr r0, [r6, #-3608] mul r1, r2, r3 + add r3, fp, r3 mov r2, #0 str r2, [r0, r1] - ldr r2, .L2455+4 - ldr r1, [sp, #4] - add r3, r2, r3 - ldrb r0, [r3, #2348] @ zero_extendqisi2 + ldr r1, [sp, #8] + ldrb r0, [r3, #2350] @ zero_extendqisi2 bl V2P_block - ldr r3, [sp] - mov r9, r0 + ldr r3, [sp, #4] + mov r8, r0 cmp r3, #0 - beq .L2419 + beq .L2373 bl IsBlkInVendorPart cmp r0, #0 - bne .L2420 -.L2419: - mov r0, r9 + bne .L2374 +.L2373: + mov r0, r8 bl FtlBbmIsBadBlock cmp r0, #0 - bne .L2420 - ldr r1, [r8, #-3612] + bne .L2374 + ldr r1, [r6, #-3608] mov r3, #36 - add r9, r5, r9, asl #10 - mla r1, r3, r6, r1 - ldr r3, [r8, #-508] + add r8, r9, r8, lsl #10 + mla r1, r3, r5, r1 + ldr r3, [r6, #-508] str r3, [r1, #8] - ldr r3, .L2455+8 - str r9, [r1, #4] + ldr r3, .L2404+12 + str r8, [r1, #4] ldrh r3, [r3] - mul r3, r3, r6 - add r6, r6, #1 - uxth r6, r6 + mul r3, r5, r3 + add r5, r5, #1 + uxth r5, r5 add r0, r3, #3 cmp r3, #0 movlt r3, r0 - ldr r0, [r8, #-504] + ldr r0, [r6, #-504] bic r3, r3, #3 add r3, r0, r3 str r3, [r1, #12] -.L2420: - add fp, fp, #1 - b .L2418 -.L2452: - cmp r6, #0 - beq .L2430 - mov r2, r7 - mov r3, #1 - ldr r0, [r10, #-3612] - mov r1, r6 - mov fp, #0 - strb fp, [r9, #2240] - bl FlashProgPages - mov r2, #36 - ldrb r3, [sp, #16] @ zero_extendqisi2 - strb r3, [r9, #2240] - ldr r9, .L2455 -.L2423: - uxth r3, fp - cmp r3, r6 - bcs .L2453 - mul r3, r2, fp - ldr r1, [r8, #-3612] - add r0, r1, r3 - ldr r3, [r1, r3] - cmp r3, #0 - beq .L2424 - ldr r0, [r0, #4] - add r4, r4, #1 - str r2, [sp, #20] - ubfx r0, r0, #10, #16 - uxth r4, r4 - bl FtlBbmMapBadBlock - ldr r2, [sp, #20] -.L2424: - add fp, fp, #1 - b .L2423 -.L2453: - ldr r3, [sp, #12] - add r5, r5, r3 - ldr r3, [sp, #8] - uxth r5, r5 - cmp r5, r3 - bcc .L2426 - mov r5, #0 - mov r8, #36 -.L2427: - uxth r3, r5 - cmp r3, r6 - ldr r3, [sp] - bcs .L2454 - cmp r3, #0 - beq .L2428 - mul r3, r8, r5 - ldr r2, [r9, #-3612] +.L2374: + add r10, r10, #1 + b .L2372 +.L2379: + mul r3, fp, r8 + ldr r2, [r6, #-3608] add r1, r2, r3 ldr r3, [r2, r3] cmp r3, #0 - bne .L2428 + beq .L2378 + ldr r0, [r1, #4] + add r4, r4, #1 + uxth r4, r4 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L2378: + add r8, r8, #1 + b .L2377 +.L2383: + cmp r3, #0 + beq .L2382 + mul r3, r9, r8 + ldr r2, [r6, #-3608] + add r1, r2, r3 + ldr r3, [r2, r3] + cmp r3, #0 + bne .L2382 ldr r0, [r1, #4] mov r1, #1 ubfx r0, r0, #10, #16 bl FtlFreeSysBlkQueueIn -.L2428: - add r5, r5, #1 - b .L2427 -.L2454: - adds r1, r3, #0 - ldr r3, [sp, #4] - movne r1, #1 - cmp r3, #63 - orrls r1, r1, #1 - cmp r1, #0 - beq .L2430 - ldr r0, [r9, #-3612] - mov r1, r7 - mov r2, r6 - bl FlashEraseBlocks -.L2430: - mov r0, r4 -.L2406: - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2456: +.L2382: + add r8, r8, #1 + b .L2381 +.L2405: .align 2 -.L2455: +.L2404: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2400 + .word .LANCHOR0+2324 + .word .LANCHOR0+2402 .fnend .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FtlBbmTblFlush + .syntax unified + .arm + .fpu softvfp .type FtlBbmTblFlush, %function FtlBbmTblFlush: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r0, r1, r2, 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 r4, .L2475 - ldr r5, [r4, #-3616] + .pad #12 + ldr r4, .L2421 + ldr r5, [r4, #-3612] cmp r5, #0 - bne .L2459 - ldr r3, [r4, #-500] + bne .L2408 + ldr r7, .L2421+4 + sub r10, r4, #436 + ldr r8, .L2421+8 mov r1, r5 - ldr r2, .L2475+4 - sub r9, r4, #436 ldr r0, [r4, #-524] - str r3, [r4, #1764] - movw r3, #2398 - ldrh r2, [r2, r3] - str r0, [r4, #1760] - bl ftl_memset - ldr r6, .L2475+8 - sub r8, r6, #134 -.L2460: - ldrh r3, [r8] - ldr r7, .L2475+4 - cmp r5, r3 - bge .L2474 - ldrh r2, [r9] - ldr r3, [r4, #1760] - ldr r1, [r6, #4]! - mul r0, r2, r5 - mov r2, r2, asl #2 - add r5, r5, #1 - add r0, r3, r0, asl #2 - bl ftl_memcpy - b .L2460 -.L2474: - ldr r9, [r4, #1764] - mov r1, #255 - mov r2, #16 - ldr r5, .L2475+12 - ldr r10, .L2475 - mov r6, #0 - mov r0, r9 - bl ftl_memset - ldr r3, .L2475+16 - mov r8, r5 - strh r3, [r9] @ movhi - ldr r3, [r7, #2460] - str r3, [r9, #4] - movw r3, #2452 - ldrh r3, [r7, r3] - strh r3, [r9, #2] @ movhi - ldrh r3, [r5, #4] - strh r3, [r9, #8] @ movhi - ldrh r3, [r5, #6] - strh r3, [r9, #10] @ movhi - ldr r3, [r7, #2316] - strh r3, [r9, #12] @ movhi - str r6, [sp, #12] -.L2462: - ldr r3, [r4, #-524] - mov fp, #0 - ldrh r1, [r5] - ldrh r2, [r5, #2] - str r3, [r4, #1760] ldr r3, [r4, #-500] - str fp, [r4, #1752] + mov r6, r7 + sub r7, r7, #2400 + ldrh r2, [r6], #80 + mov r9, r7 + str r0, [r4, #1768] + str r3, [r4, #1772] + bl ftl_memset +.L2409: + ldrh r3, [r8] + cmp r5, r3 + blt .L2410 + ldr r6, [r4, #1772] + mov r2, #16 + mov r1, #255 + ldr r5, .L2421+12 + ldr fp, .L2421+16 + mov r0, r6 + bl ftl_memset + ldr r3, .L2421+20 + strh r3, [r6] @ movhi + ldr r3, [r7, #2464] + str r3, [r6, #4] + movw r3, #2456 + ldrh r3, [r7, r3] + strh r3, [r6, #2] @ movhi + ldrh r3, [r5, #4] + strh r3, [r6, #8] @ movhi + ldrh r3, [r5, #6] + strh r3, [r6, #10] @ movhi + ldr r3, [r7, #2320] + mov r7, #0 + mov r8, r7 + strh r3, [r6, #12] @ movhi +.L2411: + ldr r3, [r4, #-524] + mov r10, #0 + ldrh r2, [r5, #2] + ldrh r1, [r5] + str r3, [r4, #1768] + ldr r3, [r4, #-500] + str r10, [r4, #1760] + str r3, [r4, #1772] + orr r3, r2, r1, lsl #10 + ldrh r0, [r6, #10] str r3, [r4, #1764] - orr r3, r2, r1, asl #10 - ldrh r0, [r9, #10] - str r3, [r4, #1756] ldrh r3, [r5, #4] str r0, [sp] - ldr r0, .L2475+20 + mov r0, fp bl printk - ldr r3, .L2475+24 + ldr r3, .L2421+24 ldrh r2, [r5, #2] ldrh r3, [r3] sub r3, r3, #1 cmp r2, r3 - blt .L2463 - ldr r3, [r7, #2460] - mov r1, #1 - ldrh r2, [r8] + blt .L2412 + ldr r3, [r9, #2464] + ldrh r2, [r5] + ldr r0, [r4, #-3608] add r3, r3, #1 - ldr r0, [r10, #-3612] - str r3, [r7, #2460] - str r3, [r9, #4] - ldrh r3, [r8, #4] - strh r2, [r9, #8] @ movhi - strh r2, [r8, #4] @ movhi - mov r2, r1 - strh r3, [r8] @ movhi - mov r3, r3, asl #10 - str r3, [r10, #1756] + strh r10, [r5, #2] @ movhi + str r3, [r9, #2464] + str r3, [r6, #4] + ldrh r3, [r5, #4] + strh r2, [r6, #8] @ movhi + strh r2, [r5, #4] @ movhi + mov r2, #1 + strh r3, [r5] @ movhi + mov r1, r2 + lsl r3, r3, #10 + str r3, [r4, #1764] str r3, [r0, #4] - strh fp, [r8, #2] @ movhi bl FlashEraseBlocks -.L2463: - mov r1, #1 - ldr r0, .L2475+28 - mov r3, r1 - mov r2, r1 +.L2412: + mov r3, #1 + ldr r0, .L2421+28 + mov r2, r3 + mov r1, r3 bl FlashProgPages ldrh r3, [r5, #2] - ldr fp, .L2475 add r3, r3, #1 strh r3, [r5, #2] @ movhi - ldr r3, [r4, #1752] + ldr r3, [r4, #1760] cmn r3, #1 - bne .L2464 - add r6, r6, #1 - ldr r0, .L2475+32 - ldr r1, [r10, #1756] - uxth r6, r6 + bne .L2413 + add r7, r7, #1 + ldr r1, [r4, #1764] + uxth r7, r7 + ldr r0, .L2421+32 bl printk - cmp r6, #3 - bls .L2462 - ldr r0, .L2475+36 - mov r2, r6 - ldr r1, [fp, #1756] + cmp r7, #3 + bls .L2411 + mov r2, r7 + ldr r1, [r4, #1764] + ldr r0, .L2421+36 bl printk mov r3, #1 - str r3, [fp, #-3616] - b .L2459 -.L2464: - ldr r2, [sp, #12] - add r2, r2, #1 - str r2, [sp, #12] - cmp r2, #1 - beq .L2462 - cmp r3, #256 - beq .L2462 -.L2459: + str r3, [r4, #-3612] +.L2408: mov r0, #0 - add sp, sp, #20 + add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2476: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2410: + ldrh r2, [r10] + ldr r3, [r4, #1768] + 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 .L2409 +.L2416: + mov r8, #1 + b .L2411 +.L2413: + add r8, r8, #1 + cmp r8, #1 + ble .L2416 + cmp r3, #256 + bne .L2408 + b .L2411 +.L2422: .align 2 -.L2475: +.L2421: .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR0+2476 - .word .LANCHOR0+2452 - .word -3887 + .word .LANCHOR0+2400 + .word .LANCHOR0+2346 + .word .LANCHOR0+2456 .word .LC126 - .word .LANCHOR0+2390 - .word .LANCHOR2+1752 + .word -3887 + .word .LANCHOR0+2392 + .word .LANCHOR2+1760 .word .LC127 .word .LC128 .fnend .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 .global allocate_data_superblock + .syntax unified + .arm + .fpu softvfp .type allocate_data_superblock, %function allocate_data_superblock: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r4, .L2532 - ldr r3, [r4, #-3616] + .pad #28 + sub sp, sp, #28 + ldr r4, .L2473 + ldr r3, [r4, #-3612] cmp r3, #0 - bne .L2478 - mov r5, r0 - mov r8, r4 -.L2479: - ldr r3, .L2532+4 - ldr r10, .L2532+8 - cmp r5, r3 - ldrb r2, [r5, #8] @ zero_extendqisi2 - bne .L2480 - ldrh r3, [r5, #-100] - ldr ip, [r8, #-2708] - mov r0, r3, lsr #1 - mul lr, ip, r3 - add r1, r0, #1 - add r1, r1, lr, lsr #2 - ldr lr, [r10, #2244] - cmp lr, #0 + bne .L2424 + sub r9, r4, #3520 + mov r7, r0 + sub r3, r9, #8 + str r3, [sp, #12] +.L2425: + ldr r3, .L2473+4 + ldr r8, .L2473+8 + ldrb r2, [r7, #8] @ zero_extendqisi2 + cmp r7, r3 + bne .L2426 + ldrh r0, [r9, #-4] + ldr lr, [r4, #-2708] + lsr ip, r0, #1 + mul r5, lr, r0 + add r1, ip, #1 + add r1, r1, r5, lsr #2 + ldr r5, [r8, #2248] uxth r1, r1 - beq .L2481 - ldr lr, [r8, #-3308] - cmp lr, #39 - bhi .L2481 - cmp lr, #2 - bls .L2506 - cmp ip, #0 - movne r3, #0 - andeq r3, r3, #1 - cmp r3, #0 - moveq r1, r0 - beq .L2481 - b .L2506 -.L2480: + cmp r5, #0 + beq .L2427 + ldr r5, [r4, #-3308] + cmp r5, #39 + bhi .L2427 + cmp r5, #2 + bls .L2453 + cmp lr, #0 + movne r0, #0 + andeq r0, r0, #1 + cmp r0, #0 + moveq r1, ip + beq .L2427 +.L2453: + mov r1, #0 + b .L2428 +.L2426: cmp r2, #1 - bne .L2506 - ldr r1, .L2532+12 + bne .L2453 + ldr r1, .L2473+12 ldrh r1, [r1] cmp r1, #1 - beq .L2506 - ldrb r1, [r10, #144] @ zero_extendqisi2 + beq .L2453 + ldrb r1, [r8, #152] @ zero_extendqisi2 cmp r1, #0 - bne .L2506 - ldr r0, [r10, #2244] - ldrh r3, [r3, #-100] - cmp r0, #0 - mov r1, r3, lsr #3 - beq .L2481 - ldr r0, [r8, #-3308] - cmp r0, #1 - rsbls r3, r3, r3, asl #3 - ubfxls r1, r3, #3, #16 -.L2481: + bne .L2453 + ldr ip, [r8, #2248] + ldrh r0, [r9, #-4] + cmp ip, #0 + lsr r1, r0, #3 + beq .L2427 + ldr ip, [r4, #-3308] + cmp ip, #1 + rsbls r0, r0, r0, lsl #3 + ubfxls r1, r0, #3, #16 +.L2427: cmp r1, #0 subne r1, r1, #1 uxthne r1, r1 - b .L2482 -.L2506: - mov r1, #0 -.L2482: - ldr r0, .L2532+16 +.L2428: + ldr r0, [sp, #12] bl List_pop_index_node - ldr r2, .L2532+20 - ldrh r3, [r2] - sub r3, r3, #1 - strh r3, [r2] @ movhi - ldr r3, .L2532+24 - ldrh r3, [r3] - uxth r9, r0 - cmp r3, r9 - bls .L2479 - ldr r3, [r8, #-3544] - mov r7, r9, asl #1 - ldrh r6, [r3, r7] - cmp r6, #0 - bne .L2479 - strh r9, [r5] @ movhi - mov r0, r5 - bl make_superblock - ldrb r3, [r5, #7] @ zero_extendqisi2 - cmp r3, #0 - beq .L2484 - ldr r2, .L2532+28 - add ip, r5, #14 - ldr r0, [r8, #-3612] - ldrh lr, [r2] - mov r2, #36 - mov r3, r0 - mla r1, r2, lr, r0 - mov lr, r6 - str r1, [sp] - b .L2485 -.L2484: - ldr r3, [r8, #-3544] - b .L2527 -.L2485: - ldr r1, [sp] - cmp r3, r1 - beq .L2529 - str lr, [r3, #8] - movw fp, #65535 - str lr, [r3, #12] - add r3, r3, #36 - ldrh r1, [ip, #2]! - cmp r1, fp - movne r1, r1, asl #10 - mlane fp, r2, r6, r0 - addne r6, r6, #1 - uxthne r6, r6 - strne r1, [fp, #4] - b .L2485 -.L2529: - ldr r3, .L2532+32 - ldr r2, [r10, #2244] - rsb r3, r3, r5 - clz r3, r3 - cmp r2, #0 - mov r3, r3, lsr #5 - moveq r3, #0 - cmp r3, #0 - beq .L2488 - ldr r3, [r8, #-3608] - ldrh r3, [r3, r7] - cmp r3, #40 - movhi r3, #0 - strhib r3, [r8, #-3516] -.L2488: - ldrb r3, [r5, #8] @ zero_extendqisi2 - ldr r2, [r4, #-3608] - cmp r3, #0 - ldr fp, .L2532+36 - ldrh r3, [r2, r7] - bne .L2489 - cmp r3, #0 - mov r0, r9 - ldrneh r1, [fp] - moveq r3, #2 - addne r3, r3, r1 - mov r1, #0 - uxthne r3, r3 - strh r3, [r2, r7] @ movhi - ldr r3, [r4, #-3324] - add r3, r3, #1 - str r3, [r4, #-3324] - bl ftl_set_blk_mode - b .L2491 -.L2489: - add r3, r3, #1 - strh r3, [r2, r7] @ movhi - ldr r2, [r4, #-3368] - mov r1, r9, lsr #5 - ldr r3, [r4, #-3320] - mov r0, #1 - add r3, r3, #1 - str r3, [r4, #-3320] - ldr ip, [r2, r1, asl #2] - and r3, r9, #31 - orr r3, ip, r0, asl r3 - str r3, [r2, r1, asl #2] -.L2491: - ldr r3, [r4, #-3608] - ldr r2, [r4, #-3312] - ldr r0, [r4, #-3324] - ldrh r3, [r3, r7] - cmp r3, r2 - ldrh r2, [fp] - strhi r3, [r8, #-3312] - ldr r3, [r4, #-3320] - mla r0, r0, r2, r3 - ldr r3, .L2532+24 - ldrh r1, [r3] - bl __aeabi_uidiv - ldr r2, [r4, #-480] - ldr r1, [r4, #-3612] - ldr r3, [r2, #16] - add r3, r3, #1 - str r3, [r2, #16] - mov r3, #36 - add r2, r1, #4 - mla r3, r3, r6, r1 - add r3, r3, #40 - str r0, [r4, #-3316] -.L2493: - add r2, r2, #36 + ldrh r2, [r9, #-4] + uxth r3, r0 + ldr r10, .L2473+16 + str r3, [sp, #4] + sub r2, r2, #1 + strh r2, [r9, #-4] @ movhi + ldrh r2, [r10] cmp r2, r3 - ldrne r1, [r2, #-36] - bicne r1, r1, #1020 - bicne r1, r1, #3 - strne r1, [r2, #-36] - bne .L2493 -.L2530: - ldrb r3, [r10, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L2495 - ldrb r3, [r5, #8] @ zero_extendqisi2 + bls .L2425 + ldr r2, [r4, #-3540] + lsl r5, r3, #1 + ldrh r6, [r2, r5] + cmp r6, #0 + bne .L2425 + ldrh r3, [sp, #4] + mov r0, r7 + strh r3, [r7] @ movhi + bl make_superblock + ldrb r2, [r7, #7] @ zero_extendqisi2 + cmp r2, #0 + beq .L2470 + ldr r0, [r4, #-3608] + add r3, r7, #16 + ldrh ip, [r10, #-8] + mov r1, #36 + str r3, [sp, #8] + add fp, r7, #16 + mov r2, r0 + str r1, [sp, #16] + mla r3, r1, ip, r0 + mov ip, r6 +.L2431: + cmp r3, r2 + bne .L2433 + ldr r2, [r8, #2248] + adds r2, r2, #0 + movne r2, #1 + cmp r7, r9 + movne r2, #0 + cmp r2, #0 + beq .L2434 + ldr r2, [r4, #-3604] + ldrh r2, [r2, r5] + cmp r2, #40 + movhi r2, #0 + strbhi r2, [r4, #-3512] +.L2434: + ldrb r2, [r7, #8] @ zero_extendqisi2 + ldr r1, [r4, #-3604] + ldr fp, .L2473+20 + cmp r2, #0 + ldrh r2, [r1, r5] + bne .L2435 + cmp r2, #0 + ldrhne r0, [fp] + moveq r2, #2 + addne r2, r2, r0 + ldr r0, [sp, #4] + strh r2, [r1, r5] @ movhi + mov r1, #0 + ldr r2, [r4, #-3324] + add r2, r2, #1 + str r2, [r4, #-3324] + bl ftl_set_blk_mode +.L2438: + ldr r2, [r4, #-3604] + ldr r1, [r4, #-3312] + ldr ip, [r4, #-3324] + ldrh r2, [r2, r5] + ldrh r0, [fp] + cmp r2, r1 + ldrh r1, [r10] + strhi r2, [r4, #-3312] + ldr r2, [r4, #-3320] + mla r0, ip, r0, r2 + bl __aeabi_uidiv + ldr r1, [r4, #-480] + str r0, [r4, #-3316] + ldr r0, [r4, #-3608] + ldr r2, [r1, #16] + ldr ip, .L2473+24 + add r2, r2, #1 + str r2, [r1, #16] + mov r1, #36 + mla r1, r1, r6, r0 + add r2, r0, #4 + add r1, r1, #40 +.L2440: + add r2, r2, #36 + cmp r1, r2 + bne .L2441 + ldrb r2, [r8, #152] @ zero_extendqisi2 + cmp r2, #0 + beq .L2442 + ldrb r2, [r7, #8] @ zero_extendqisi2 + ldr r0, [r4, #-3608] + cmp r2, #1 mov r2, r6 - ldr r0, [r4, #-3612] - cmp r3, #1 moveq r1, #0 movne r1, #1 bl FlashEraseBlocks -.L2495: - ldrb r1, [r5, #8] @ zero_extendqisi2 +.L2442: + ldrb r1, [r7, #8] @ zero_extendqisi2 mov r2, r6 - ldr r0, [r4, #-3612] - mov fp, #0 + ldr r0, [r4, #-3608] + mov r10, #0 bl FlashEraseBlocks - add r1, r5, #16 - mov r2, fp - mov ip, #36 -.L2497: - uxth r3, fp - cmp r3, r6 - bcs .L2531 - mul r3, ip, fp - ldr lr, [r4, #-3612] - add r0, lr, r3 - ldr r3, [lr, r3] - cmn r3, #1 - bne .L2498 - ldr r0, [r0, #4] - add r2, r2, #1 - stmib sp, {r1, r3, ip} - ubfx r0, r0, #10, #16 - str r2, [sp] - bl FtlBbmMapBadBlock - ldmib sp, {r1, r3} - ldr ip, [sp, #12] - ldr r2, [sp] - strh r3, [r1] @ movhi - ldrb r3, [r5, #7] @ zero_extendqisi2 - sub r3, r3, #1 - strb r3, [r5, #7] -.L2498: - add fp, fp, #1 - add r1, r1, #2 - b .L2497 -.L2531: - cmp r2, #0 - beq .L2500 - mov r0, r9 + mov fp, r10 + mov r1, #36 +.L2444: + uxth r2, r10 + cmp r6, r2 + bhi .L2446 + cmp fp, #0 + ble .L2447 + ldr r0, [sp, #4] bl update_multiplier_value bl FtlBbmTblFlush -.L2500: - ldrb r3, [r5, #7] @ zero_extendqisi2 - cmp r3, #0 - bne .L2501 - ldr r3, [r4, #-3544] -.L2527: - mvn r2, #0 - strh r2, [r3, r7] @ movhi - b .L2479 -.L2501: - movw r2, #2388 - ldrh r2, [r10, r2] - strh r9, [r5] @ movhi - smulbb r3, r2, r3 - mov r2, #0 - strh r2, [r5, #2] @ movhi - strb r2, [r5, #6] - ldr r2, [r4, #-3332] - ldr r1, [r4, #-3544] - uxth r3, r3 - strh r3, [r5, #4] @ movhi - str r2, [r5, #12] +.L2447: + ldrb r1, [r7, #7] @ zero_extendqisi2 + cmp r1, #0 + bne .L2448 +.L2470: + ldr r2, [r4, #-3540] + mvn r1, #0 + strh r1, [r2, r5] @ movhi + b .L2425 +.L2433: + str ip, [r2, #8] + movw lr, #65535 + str ip, [r2, #12] + add r2, r2, #36 + ldrh r1, [fp], #2 + cmp r1, lr + ldrne lr, [sp, #16] + lslne r1, r1, #10 + mlane lr, lr, r6, r0 + addne r6, r6, #1 + uxthne r6, r6 + strne r1, [lr, #4] + b .L2431 +.L2435: add r2, r2, #1 - str r2, [r4, #-3332] - ldrh r2, [r5] - mov r2, r2, asl #1 - strh r3, [r1, r2] @ movhi -.L2478: + ldr r0, [sp, #4] + strh r2, [r1, r5] @ movhi + ldr r2, [r4, #-3320] + add r2, r2, #1 + str r2, [r4, #-3320] + bl ftl_set_blk_mode.part.9 + b .L2438 +.L2441: + ldr r0, [r2, #-36] + and r0, r0, ip + str r0, [r2, #-36] + b .L2440 +.L2446: + mul r2, r1, r10 + ldr r0, [r4, #-3608] + add ip, r0, r2 + ldr r2, [r0, r2] + cmn r2, #1 + bne .L2445 + ldr r0, [ip, #4] + add fp, fp, #1 + str r1, [sp, #20] + str r2, [sp, #16] + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock + ldr r2, [sp, #16] + ldr r3, [sp, #8] + ldr r1, [sp, #20] + strh r2, [r3] @ movhi + ldrb r2, [r7, #7] @ zero_extendqisi2 + sub r2, r2, #1 + strb r2, [r7, #7] +.L2445: + ldr r3, [sp, #8] + add r10, r10, #1 + add r3, r3, #2 + str r3, [sp, #8] + b .L2444 +.L2448: + movw r2, #2390 + ldrh r3, [sp, #4] + ldrh r2, [r8, r2] + strh r3, [r7] @ movhi + smulbb r2, r2, r1 + mov r1, #0 + strh r1, [r7, #2] @ movhi + strb r1, [r7, #6] + ldr r1, [r4, #-3332] + uxth r2, r2 + strh r2, [r7, #4] @ movhi + str r1, [r7, #12] + add r1, r1, #1 + str r1, [r4, #-3332] + ldrh r3, [r7] + ldr r1, [r4, #-3540] + lsl r3, r3, #1 + strh r2, [r1, r3] @ movhi +.L2424: mov r0, #0 - add sp, sp, #20 + add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2533: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2474: .align 2 -.L2532: +.L2473: .word .LANCHOR2 - .word .LANCHOR2-3428 + .word .LANCHOR2-3424 .word .LANCHOR0 - .word .LANCHOR0+2340 - .word .LANCHOR2-3532 - .word .LANCHOR2-3528 - .word .LANCHOR0+2328 - .word .LANCHOR0+2320 - .word .LANCHOR2-3524 - .word .LANCHOR0+2380 + .word .LANCHOR0+2344 + .word .LANCHOR0+2332 + .word .LANCHOR0+2382 + .word -1024 .fnend .size allocate_data_superblock, .-allocate_data_superblock .align 2 .global FtlGcFreeBadSuperBlk + .syntax unified + .arm + .fpu softvfp .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2548 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r2, [r3, #-2] - cmp r2, #0 - beq .L2536 - sub r10, r3, #2 - mov r7, r0 - mov r9, #0 - mov r5, r3 - mov r8, r10 -.L2535: - ldr r3, .L2548+4 - add r2, r3, #2320 - ldrh r1, [r2] - uxth r2, r9 - cmp r1, r2 - bls .L2545 - add r3, r3, r2 - mov r1, r7 - mov fp, #0 - ldrb r0, [r3, #2348] @ zero_extendqisi2 - bl V2P_block - mov r6, r0 -.L2537: - ldrh r3, [r10] - uxth r4, fp - cmp r3, r4 - bls .L2546 - mov r3, r4, asl #1 - add ip, r5, r3 - ldrh r3, [r5, r3] - cmp r3, r6 - bne .L2538 - mov r1, r6 - ldr r0, .L2548+8 - str ip, [sp, #4] - bl printk - mov r0, r6 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldrh r2, [r10] - ldr ip, [sp, #4] - mov r3, ip -.L2539: - cmp r4, r2 - ldrcch r1, [r3, #2] - addcc r4, r4, #1 - uxthcc r4, r4 - strcch r1, [r3], #2 @ movhi - bcc .L2539 -.L2547: - sub r2, r2, #1 - strh r2, [r8] @ movhi -.L2538: - add fp, fp, #1 - b .L2537 -.L2546: - add r9, r9, #1 - b .L2535 -.L2545: + ldr r4, .L2488 + ldrh r3, [r4, #-2] + cmp r3, #0 + beq .L2476 + ldr r9, .L2488+4 + mov r6, #0 + ldr r8, .L2488+8 + ldr r10, .L2488+12 + str r0, [sp] +.L2477: + ldrh r2, [r8] + uxth r3, r6 + cmp r2, r3 + bhi .L2483 bl FtlGcReFreshBadBlk -.L2536: +.L2476: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2549: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2483: + uxtah r3, r9, r6 + ldr r1, [sp] + mov fp, #0 + ldrb r0, [r3, #2350] @ zero_extendqisi2 + bl V2P_block + mov r7, r0 +.L2478: + ldrh r3, [r4, #-2] + uxth r5, fp + cmp r3, r5 + addls r6, r6, #1 + bls .L2477 +.L2482: + uxth r3, fp + lsl r1, r3, #1 + ldrh r1, [r4, r1] + cmp r1, r7 + bne .L2479 + mov r1, r7 + mov r0, r10 + str r3, [sp, #4] + bl printk + mov r0, r7 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [sp, #4] + ldrh r1, [r4, #-2] + add r3, r4, r3, lsl #1 +.L2480: + cmp r5, r1 + bcc .L2481 + sub r1, r1, #1 + strh r1, [r4, #-2] @ movhi +.L2479: + add fp, fp, #1 + b .L2478 +.L2481: + ldrh r0, [r3, #2]! + add r5, r5, #1 + uxth r5, r5 + strh r0, [r3, #-2] @ movhi + b .L2480 +.L2489: .align 2 -.L2548: +.L2488: .word .LANCHOR2-2656 .word .LANCHOR0 + .word .LANCHOR0+2324 .word .LC129 .fnend .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 .global update_vpc_list + .syntax unified + .arm + .fpu softvfp .type update_vpc_list, %function update_vpc_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L2560 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r3, r0, asl #1 - ldr r1, [r2, #-3544] - mov r4, r0 + ldr r2, .L2499 + lsl r3, r0, #1 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r1, [r2, #-3540] ldrh r3, [r1, r3] cmp r3, #0 - bne .L2551 + bne .L2491 sub r1, r2, #3280 + mov r4, r0 ldrh r0, [r1, #-4] + sub r5, r2, #3520 cmp r0, r4 mvneq r3, #0 - streqh r3, [r1, #-4] @ movhi - beq .L2553 - sub r1, r2, #3520 - ldrh r1, [r1, #-4] + strheq r3, [r1, #-4] @ movhi + beq .L2493 + ldrh r1, [r5] cmp r1, r4 - beq .L2559 + beq .L2490 sub r1, r2, #3472 - ldrh r1, [r1, #-4] + ldrh r1, [r1] cmp r1, r4 - beq .L2559 + beq .L2490 sub r2, r2, #3424 - ldrh r2, [r2, #-4] + ldrh r2, [r2] cmp r2, r4 - beq .L2559 -.L2553: - ldr r5, .L2560+4 + beq .L2490 +.L2493: mov r1, r4 - sub r0, r5, #12 + ldr r0, .L2499+4 bl List_remove_node - ldrh r3, [r5] + ldrh r3, [r5, #-12] mov r0, r4 sub r3, r3, #1 - strh r3, [r5] @ movhi + strh r3, [r5, #-12] @ movhi bl free_data_superblock mov r0, r4 bl FtlGcFreeBadSuperBlk - mov r0, #1 - ldmfd sp!, {r3, r4, r5, pc} -.L2551: + mov r3, #1 +.L2490: + mov r0, r3 + pop {r4, r5, r6, pc} +.L2491: bl List_update_data_list -.L2559: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L2561: + mov r3, #0 + b .L2490 +.L2500: .align 2 -.L2560: +.L2499: .word .LANCHOR2 - .word .LANCHOR2-3536 + .word .LANCHOR2-3544 .fnend .size update_vpc_list, .-update_vpc_list .align 2 .global decrement_vpc_count + .syntax unified + .arm + .fpu softvfp .type decrement_vpc_count, %function decrement_vpc_count: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} movw r3, #65535 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} cmp r0, r3 mov r4, r0 - beq .L2563 - ldr r6, .L2573 - mov r5, r0, asl #1 - ldr r3, [r6, #-3544] + beq .L2502 + ldr r6, .L2512 + lsl r5, r0, #1 + ldr r3, [r6, #-3540] ldrh r2, [r3, r5] cmp r2, #0 subne r2, r2, #1 - strneh r2, [r3, r5] @ movhi - bne .L2563 - mov r1, r4 - ldr r0, .L2573+4 + strhne r2, [r3, r5] @ movhi + bne .L2502 + mov r1, r0 + ldr r0, .L2512+4 bl printk - ldr r3, [r6, #-3544] + ldr r3, [r6, #-3540] sub r7, r6, #3520 mov r2, #32 - sub r0, r7, #12 + sub r8, r7, #8 mov r1, r4 + mov r0, r8 strh r2, [r3, r5] @ movhi bl test_node_in_list cmp r0, #0 - beq .L2565 + beq .L2504 mov r1, r4 - sub r0, r7, #12 + mov r0, r8 bl List_remove_node - ldrh r3, [r7, #-8] + ldrh r3, [r7, #-4] mov r0, r4 sub r3, r3, #1 - strh r3, [r7, #-8] @ movhi + strh r3, [r7, #-4] @ movhi bl INSERT_DATA_LIST - ldr r3, [r6, #-3544] - ldr r0, .L2573+8 + ldr r3, [r6, #-3540] mov r1, r4 + ldr r0, .L2512+8 ldrh r2, [r3, r5] bl printk -.L2565: +.L2504: mov r0, r4 bl FtlGcRefreshBlock - b .L2568 -.L2563: - ldr r5, .L2573+12 +.L2507: + mov r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L2502: + ldr r5, .L2512+12 movw r3, #65535 ldrh r0, [r5] cmp r0, r3 - streqh r4, [r5] @ movhi - beq .L2568 - cmp r0, r4 - beq .L2568 + strheq r4, [r5] @ movhi + beq .L2507 + cmp r4, r0 + beq .L2507 bl update_vpc_list - strh r4, [r5] @ movhi adds r0, r0, #0 + strh r4, [r5] @ movhi movne r0, #1 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2568: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2574: + pop {r4, r5, r6, r7, r8, pc} +.L2513: .align 2 -.L2573: +.L2512: .word .LANCHOR2 .word .LC130 .word .LC131 @@ -15088,59 +15549,44 @@ .size decrement_vpc_count, .-decrement_vpc_count .align 2 .global FtlSlcSuperblockCheck + .syntax unified + .arm + .fpu softvfp .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} ldrh r3, [r0, #4] cmp r3, #0 - ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + bxeq lr ldrh r2, [r0] movw r3, #65535 cmp r2, r3 - ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} - ldrb r3, [r0, #6] @ zero_extendqisi2 + bxeq lr + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r4, r0 - ldr r5, .L2588 - ldr r6, .L2588+4 - add r3, r0, r3, asl #1 - add r7, r5, #2320 + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r5, .L2529 + ldr r6, .L2529+4 + add r3, r0, r3, lsl #1 ldrh r3, [r3, #16] -.L2579: +.L2518: movw r1, #65535 cmp r3, r1 - bne .L2587 -.L2581: - ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r7] - add r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - ldreqh r3, [r4, #2] - addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi - moveq r3, #0 - streqb r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - add r3, r4, r3, asl #1 - ldrh r3, [r3, #16] - b .L2579 -.L2587: + beq .L2520 ldrb r2, [r4, #8] @ zero_extendqisi2 cmp r2, #1 - bne .L2582 - ldrb r3, [r5, #144] @ zero_extendqisi2 + bne .L2521 + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L2582 + bne .L2521 ldrh r3, [r4, #2] - mov r3, r3, asl #1 + lsl r3, r3, #1 ldrh r3, [r6, r3] cmp r3, r1 - bne .L2582 + bne .L2521 ldrh r3, [r4, #4] ldrh r0, [r4] sub r3, r3, #1 @@ -15148,178 +15594,191 @@ bl decrement_vpc_count ldrh r2, [r4, #4] cmp r2, #0 - bne .L2581 + bne .L2520 ldrh r3, [r4, #2] strb r2, [r4, #6] add r3, r3, #1 strh r3, [r4, #2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2582: - ldr r1, .L2588 - ldrb r3, [r1, #144] @ zero_extendqisi2 - cmp r3, #0 - ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} - cmp r2, #1 - ldmnefd sp!, {r3, r4, r5, r6, r7, pc} - movw r3, #2390 - ldrh r2, [r4, #2] - ldrh r3, [r1, r3] + pop {r4, r5, r6, pc} +.L2520: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldr r2, .L2529+8 + add r3, r3, #1 + ldrh r2, [r2] + uxtb r3, r3 + strb r3, [r4, #6] cmp r2, r3 - ldmccfd sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, .L2588+8 + ldrheq r3, [r4, #2] + addeq r3, r3, #1 + strheq r3, [r4, #2] @ movhi + moveq r3, #0 + strbeq r3, [r4, #6] + ldrb r3, [r4, #6] @ zero_extendqisi2 + add r3, r4, r3, lsl #1 + ldrh r3, [r3, #16] + b .L2518 +.L2521: + ldrb r3, [r5, #152] @ zero_extendqisi2 + adds r3, r3, #0 + movne r3, #1 + cmp r2, #1 + movne r3, #0 + cmp r3, #0 + popeq {r4, r5, r6, pc} + movw r3, #2392 + ldrh r2, [r4, #2] + ldrh r3, [r5, r3] + cmp r2, r3 + popcc {r4, r5, r6, pc} ldrh r3, [r4] - ldrh ip, [r4, #4] - ldr r0, [r2, #-3544] - mov r3, r3, asl #1 - ldrh r2, [r0, r3] - rsb r2, ip, r2 - strh r2, [r0, r3] @ movhi - movw r2, #2388 + ldr r2, .L2529+12 + ldrh r0, [r4, #4] + ldr r1, [r2, #-3540] + lsl r3, r3, #1 + ldrh r2, [r1, r3] + sub r2, r2, r0 + strh r2, [r1, r3] @ movhi + movw r2, #2390 + ldrh r2, [r5, r2] mov r3, #0 - ldrh r2, [r1, r2] strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2589: + pop {r4, r5, r6, pc} +.L2530: .align 2 -.L2588: +.L2529: .word .LANCHOR0 .word .LANCHOR2-2620 + .word .LANCHOR0+2324 .word .LANCHOR2 .fnend .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global get_new_active_ppa + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r3, #0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} strb r3, [r0, #10] mov r4, r0 ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r7, .L2608 - ldr r9, .L2608+4 - add r3, r0, r3, asl #1 - sub r8, r7, #2320 + ldr r5, .L2547 + ldr r7, .L2547+4 + add r3, r0, r3, lsl #1 ldrh r2, [r3, #16] -.L2591: +.L2532: movw r1, #65535 cmp r2, r1 - ldr r6, .L2608 - bne .L2607 -.L2592: - ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r7] - add r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - ldreqh r3, [r4, #2] - addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi - moveq r3, #0 - streqb r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - add r3, r4, r3, asl #1 - ldrh r2, [r3, #16] - b .L2591 -.L2607: + beq .L2533 ldrb r3, [r4, #8] @ zero_extendqisi2 - ldrh r5, [r4, #2] + ldrh r6, [r4, #2] cmp r3, #1 ldrh r3, [r4, #4] - bne .L2594 - ldrb r0, [r8, #144] @ zero_extendqisi2 + bne .L2535 + ldr r0, .L2547+8 + ldrb r0, [r0, #152] @ zero_extendqisi2 cmp r0, #0 - bne .L2594 - mov r0, r5, asl #1 - ldrh r0, [r9, r0] + bne .L2535 + lsl r0, r6, #1 + ldrh r0, [r7, r0] cmp r0, r1 - bne .L2594 + bne .L2535 sub r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2592 -.L2594: - ldr r7, .L2608+8 - orr r5, r5, r2, asl #10 +.L2533: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldrh r2, [r5] + add r3, r3, #1 + uxtb r3, r3 + cmp r2, r3 + strb r3, [r4, #6] + ldrheq r3, [r4, #2] + addeq r3, r3, #1 + strheq r3, [r4, #2] @ movhi + moveq r3, #0 + strbeq r3, [r4, #6] + ldrb r3, [r4, #6] @ zero_extendqisi2 + add r3, r4, r3, lsl #1 + ldrh r2, [r3, #16] + b .L2532 +.L2535: + ldr r7, .L2547+4 + orr r6, r6, r2, lsl #10 sub r3, r3, #1 strh r3, [r4, #4] @ movhi -.L2595: +.L2536: ldrb r3, [r4, #6] @ zero_extendqisi2 - movw r2, #65535 - ldrh r0, [r6] -.L2597: + movw r1, #65535 + ldrh r0, [r5] +.L2538: add r3, r3, #1 uxtb r3, r3 cmp r3, r0 - ldreqh r3, [r4, #2] + ldrheq r3, [r4, #2] addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi + strheq r3, [r4, #2] @ movhi moveq r3, #0 - add r1, r4, r3, asl #1 - ldrh r1, [r1, #16] - cmp r1, r2 - beq .L2597 + add r2, r4, r3, lsl #1 + ldrh r2, [r2, #16] + cmp r2, r1 + beq .L2538 strb r3, [r4, #6] ldrb r3, [r4, #8] @ zero_extendqisi2 cmp r3, #1 - bne .L2602 - ldrb r3, [r7, #144] @ zero_extendqisi2 + bne .L2531 + ldr r2, .L2547+8 + ldrb r3, [r2, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L2599 ldrh r3, [r4, #2] - ldr r2, .L2608+4 - mov r3, r3, asl #1 - ldrh r2, [r2, r3] - movw r3, #65535 - cmp r2, r3 - bne .L2599 + bne .L2540 + lsl r3, r3, #1 + ldrh r3, [r7, r3] + cmp r3, r1 + bne .L2531 ldrh r3, [r4, #4] cmp r3, #0 - beq .L2599 + beq .L2531 sub r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2595 -.L2599: - ldr r1, .L2608+8 - ldrb r3, [r1, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L2602 - movw r3, #2390 - ldrh r2, [r4, #2] - ldrh r3, [r1, r3] - cmp r2, r3 - bcc .L2602 - ldr r2, .L2608+12 + b .L2536 +.L2540: + movw r1, #2392 + ldrh r1, [r2, r1] + cmp r3, r1 + bcc .L2531 ldrh r3, [r4] + ldr r1, .L2547+12 ldrh ip, [r4, #4] - ldr r0, [r2, #-3544] - mov r3, r3, asl #1 - ldrh r2, [r0, r3] - rsb r2, ip, r2 - strh r2, [r0, r3] @ movhi - movw r2, #2388 + ldr r0, [r1, #-3540] + lsl r3, r3, #1 + ldrh r1, [r0, r3] + sub r1, r1, ip + strh r1, [r0, r3] @ movhi + movw r1, #2390 + ldrh r2, [r2, r1] mov r3, #0 - ldrh r2, [r1, r2] strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi -.L2602: - mov r0, r5 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L2609: +.L2531: + mov r0, r6 + pop {r4, r5, r6, r7, r8, pc} +.L2548: .align 2 -.L2608: - .word .LANCHOR0+2320 +.L2547: + .word .LANCHOR0+2324 .word .LANCHOR2-2620 .word .LANCHOR0 .word .LANCHOR2 @@ -15327,320 +15786,323 @@ .size get_new_active_ppa, .-get_new_active_ppa .align 2 .global FtlVpcTblFlush + .syntax unified + .arm + .fpu softvfp .type FtlVpcTblFlush, %function FtlVpcTblFlush: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - ldr r4, .L2628 - ldr r3, [r4, #-3616] + 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 r4, .L2567 + ldr r3, [r4, #-3612] cmp r3, #0 - bne .L2612 + bne .L2551 ldr r2, [r4, #-524] - sub r6, r4, #3600 + sub r5, r4, #3296 ldr r7, [r4, #-500] + sub r8, r5, #300 + ldr r6, .L2567+4 mov r1, #255 - ldr r5, .L2628+4 - str r2, [r4, #1760] - sub r2, r4, #3296 - str r7, [r4, #1764] - ldrh r2, [r2, #-4] + str r2, [r4, #1768] + ldrh r2, [r5, #-4] + str r7, [r4, #1772] + add r9, r6, #2400 str r3, [r7, #12] strh r2, [r7, #2] @ movhi - ldr r2, .L2628+8 + ldr r2, .L2567+8 strh r2, [r7] @ movhi ldr r2, [r4, #-3292] stmib r7, {r2, r3} - ldr r3, .L2628+12 - ldrh r2, [r6, #78] - str r3, [r4, #-3600] - ldr r3, .L2628+16 + ldr r3, .L2567+12 str r3, [r4, #-3596] - add r3, r6, #300 - ldrh r3, [r3, #6] - strh r3, [r6, #8] @ movhi - movw r3, #2342 - ldrh r3, [r5, r3] - strb r3, [r4, #-3590] + ldr r3, .L2567+16 + str r3, [r4, #-3592] + ldrh r3, [r5, #2] + strh r3, [r8, #8] @ movhi + movw r3, #2346 + ldrh r3, [r6, r3] + strb r3, [r4, #-3586] sub r3, r4, #3520 - ldrh r3, [r3, #-4] - strh r3, [r6, #14] @ movhi - ldrb r3, [r4, #-3518] @ zero_extendqisi2 - orr r3, r3, r2, asl #6 - strh r3, [r6, #16] @ movhi - ldrb r3, [r4, #-3516] @ zero_extendqisi2 - ldrh r2, [r6, #126] - strb r3, [r4, #-3589] + ldrh r2, [r3] + strh r2, [r8, #14] @ movhi + ldrh r2, [r3, #2] + ldrb r3, [r4, #-3514] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + strh r3, [r8, #16] @ movhi + ldrb r3, [r4, #-3512] @ zero_extendqisi2 + strb r3, [r4, #-3585] sub r3, r4, #3472 - ldrh r3, [r3, #-4] - strh r3, [r6, #18] @ movhi - ldrb r3, [r4, #-3470] @ zero_extendqisi2 - orr r3, r3, r2, asl #6 - strh r3, [r6, #20] @ movhi - ldrb r3, [r4, #-3468] @ zero_extendqisi2 - strb r3, [r4, #-3588] + ldrh r2, [r3] + strh r2, [r8, #18] @ movhi + ldrh r2, [r3, #2] + ldrb r3, [r4, #-3466] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + strh r3, [r8, #20] @ movhi + ldrb r3, [r4, #-3464] @ zero_extendqisi2 + strb r3, [r4, #-3584] sub r3, r4, #3424 - ldrh r3, [r3, #-4] - strh r3, [r6, #22] @ movhi - ldrh r2, [r6, #174] - ldrb r3, [r4, #-3422] @ zero_extendqisi2 - ldr r0, [r4, #1760] - orr r3, r3, r2, asl #6 - strh r3, [r6, #24] @ movhi - ldrb r3, [r4, #-3420] @ zero_extendqisi2 - strb r3, [r4, #-3587] + ldrh r2, [r3] + strh r2, [r8, #22] @ movhi + ldrh r2, [r3, #2] + ldrb r3, [r4, #-3418] @ zero_extendqisi2 + ldr r0, [r4, #1768] + orr r3, r3, r2, lsl #6 + strh r3, [r8, #24] @ movhi + ldrb r3, [r4, #-3416] @ zero_extendqisi2 + strb r3, [r4, #-3583] ldr r3, [r4, #-3324] - str r3, [r4, #-3568] - ldr r3, [r4, #-3332] - str r3, [r4, #-3560] - ldr r3, [r4, #-3328] str r3, [r4, #-3564] + ldr r3, [r4, #-3332] + str r3, [r4, #-3556] + ldr r3, [r4, #-3328] + str r3, [r4, #-3560] sub r3, r4, #2656 ldrh r2, [r3, #-10] ldrh r3, [r3, #-8] - strh r2, [r6, #44] @ movhi - strh r3, [r6, #46] @ movhi - movw r3, #2398 - ldrh r2, [r5, r3] + strh r2, [r8, #44] @ movhi + ldrh r2, [r9] + strh r3, [r5, #-254] @ movhi bl ftl_memset - mov r1, r6 + mov r1, r8 mov r2, #48 - movw r6, #2328 - ldr r0, [r4, #1760] + movw r8, #2332 + ldr r0, [r4, #1768] bl ftl_memcpy - ldrh r2, [r5, r6] - ldr r0, [r4, #1760] - ldr r1, [r4, #-3544] - mov r2, r2, asl #1 + ldrh r2, [r6, r8] + ldr r0, [r4, #1768] + ldr r1, [r4, #-3540] + lsl r2, r2, #1 add r0, r0, #48 bl ftl_memcpy - ldrh r2, [r5, r6] - ldr r0, [r4, #1760] - ldr r1, [r4, #-3368] - mov r3, r2, asl #1 - mov r2, r2, lsr #3 - add r3, r3, #51 + ldrh r0, [r6, r8] + ldr r3, [r4, #1768] + ldr r1, [r6, #32] + lsr r2, r0, #3 + lsl r0, r0, #1 + add r0, r0, #51 add r2, r2, #4 - bic r3, r3, #3 - add r0, r0, r3 + bic r0, r0, #3 + add r0, r3, r0 bl ftl_memcpy - add r3, r5, #2432 - ldrh r3, [r3] + movw r3, #2436 + str r9, [sp, #4] + ldrh r3, [r6, r3] cmp r3, #0 - beq .L2613 - ldrh r2, [r5, r6] - ldr r0, [r4, #1760] + beq .L2552 + ldrh r0, [r6, r8] + movw r3, #2428 + ldrh r2, [r6, r3] ldr r1, [r4, #-452] - mov r3, r2, lsr #3 - add r3, r3, r2, asl #1 - movw r2, #2424 + lsr r3, r0, #3 + lsl r2, r2, #2 + add r3, r3, r0, lsl #1 + ldr r0, [r4, #1768] add r3, r3, #52 - ldrh r2, [r5, r2] ubfx r3, r3, #2, #14 - mov r2, r2, asl #2 - add r0, r0, r3, asl #2 + add r0, r0, r3, lsl #2 bl ftl_memcpy -.L2613: - mov r0, #0 - ldr r8, .L2628 - bl FtlUpdateVaildLpn - ldr r10, .L2628+20 - mov r6, #0 +.L2552: + ldr r10, .L2567+20 + mov r8, #0 movw r9, #65535 -.L2614: + sub r5, r5, #4 + mov r0, #0 + mov fp, r10 + bl FtlUpdateVaildLpn +.L2553: ldr r3, [r4, #-524] - ldrh r2, [r10] - ldr fp, .L2628+24 - str r3, [r4, #1760] + ldrh r1, [r5, #2] + ldrh r2, [r5] + str r3, [r4, #1768] ldr r3, [r4, #-500] - ldrh r1, [r10, #2] + str r3, [r4, #1772] + orr r3, r1, r2, lsl #10 str r3, [r4, #1764] - orr r3, r1, r2, asl #10 - str r3, [r4, #1756] - ldrh r3, [fp] + ldrh r3, [r10] sub r3, r3, #1 cmp r1, r3 - blt .L2615 + blt .L2554 mov r3, #0 - ldrh r9, [r10, #4] - strh r3, [r10, #2] @ movhi - strh r2, [r10, #4] @ movhi + ldrh r9, [r5, #4] + strh r3, [r5, #2] @ movhi + strh r2, [r5, #4] @ movhi bl FtlFreeSysBlkQueueOut - ldr r3, [r8, #-3332] + ldr r3, [r4, #-3332] + strh r0, [r5] @ movhi add r2, r3, #1 - str r2, [r8, #-3332] - str r3, [r8, #-3292] - mov r2, r0, asl #10 - strh r0, [r10] @ movhi - str r2, [r8, #1756] + str r3, [r4, #-3292] + str r2, [r4, #-3332] + lsl r2, r0, #10 + str r2, [r4, #1764] str r3, [r7, #4] strh r0, [r7, #2] @ movhi -.L2615: - ldrb r3, [r5] @ zero_extendqisi2 +.L2554: + ldrb r3, [r6, #36] @ zero_extendqisi2 cmp r3, #0 - beq .L2616 - ldr r3, .L2628+28 + beq .L2555 + ldr r3, [sp, #4] ldr r0, [r4, #-524] ldrh r1, [r3] bl js_hash str r0, [r7, #12] -.L2616: - mov r1, #1 - ldr r0, .L2628+32 - mov r2, r1 - mov r3, r1 +.L2555: + mov r3, #1 + ldr r0, .L2567+24 + mov r2, r3 + mov r1, r3 bl FlashProgPages - ldr r3, .L2628+20 - ldr r2, .L2628+20 - ldrh r3, [r3, #2] + ldrh r3, [r5, #2] + ldr r2, [r4, #1760] add r3, r3, #1 uxth r3, r3 - strh r3, [r2, #2] @ movhi - ldr r2, [r4, #1752] cmn r2, #1 - bne .L2617 + strh r3, [r5, #2] @ movhi + bne .L2556 cmp r3, #1 - add r6, r6, #1 - ldreqh r3, [fp] - uxth r6, r6 + add r8, r8, #1 + ldrheq r3, [fp] + uxth r8, r8 subeq r3, r3, #1 - streqh r3, [r10, #2] @ movhi - cmp r6, #3 - bls .L2614 - ldr r0, .L2628+36 - mov r2, r6 - ldr r1, [r4, #1756] + strheq r3, [r5, #2] @ movhi + cmp r8, #3 + bls .L2553 + mov r2, r8 + ldr r1, [r4, #1764] + ldr r0, .L2567+28 bl printk mov r3, #1 - str r3, [r4, #-3616] - b .L2612 -.L2617: - cmp r2, #256 - cmpne r3, #1 - beq .L2614 + str r3, [r4, #-3612] +.L2551: + mov r0, #0 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2556: + cmp r3, #1 + cmpne r2, #256 + beq .L2553 movw r3, #65535 cmp r9, r3 - beq .L2612 - mov r0, r9 + beq .L2551 mov r1, #1 + mov r0, r9 bl FtlFreeSysBlkQueueIn -.L2612: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2629: + b .L2551 +.L2568: .align 2 -.L2628: +.L2567: .word .LANCHOR2 .word .LANCHOR0 .word -3932 .word 1179929683 .word 1342177379 - .word .LANCHOR2-3300 - .word .LANCHOR0+2390 - .word .LANCHOR0+2398 - .word .LANCHOR2+1752 + .word .LANCHOR0+2392 + .word .LANCHOR2+1760 .word .LC132 .fnend .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlSuperblockPowerLostFix + .syntax unified + .arm + .fpu softvfp .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #44 - sub sp, sp, #44 - ldr r5, .L2647 - ldr r3, [r5, #-3616] + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #40 + sub sp, sp, #40 + ldr r5, .L2585 + ldr r10, [r5, #-3612] + cmp r10, #0 + bne .L2569 + ldr r8, .L2585+4 + ldrb r3, [r8, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L2630 - ldr r8, .L2647+4 - ldrb r6, [r8, #144] @ zero_extendqisi2 - cmp r6, #0 - beq .L2646 - ldrb r6, [r0, #8] @ zero_extendqisi2 - cmp r6, #1 - ldreqh fp, [r0, #4] - beq .L2632 - mov r6, r3 -.L2646: - mov fp, #12 -.L2632: - ldr r7, [r5, #-500] + beq .L2580 + ldrb r3, [r0, #8] @ zero_extendqisi2 + cmp r3, #1 + ldrheq r7, [r0, #4] + moveq r10, r3 + beq .L2571 +.L2580: + mov r7, #12 +.L2571: mvn r3, #0 + ldr r6, [r5, #-500] str r3, [sp, #20] mov r9, #0 ldr r3, [r5, #-524] movw r2, #61589 - str r7, [sp, #16] + str r6, [sp, #16] mov r4, r0 - ldr r10, .L2647 str r3, [sp, #12] mvn r3, #2 - str r3, [r7, #8] + str r3, [r6, #8] mvn r3, #1 - str r3, [r7, #12] + str r3, [r6, #12] ldrh r3, [r0] - strh r9, [r7] @ movhi - strh r3, [r7, #2] @ movhi + strh r9, [r6] @ movhi + strh r3, [r6, #2] @ movhi ldr r3, [r5, #-524] str r2, [r3] - ldr r2, .L2647+8 + ldr r2, .L2585+8 ldr r3, [r5, #-524] str r2, [r3, #4] -.L2633: - subs fp, fp, #1 - bcc .L2636 +.L2572: + subs r7, r7, #1 + bcc .L2575 ldrh r3, [r4, #4] cmp r3, #0 - bne .L2634 -.L2636: + bne .L2573 +.L2575: ldrh r3, [r4] - ldr r1, [r5, #-3544] + ldr r1, [r5, #-3540] ldrh r0, [r4, #4] - mov r3, r3, asl #1 + lsl r3, r3, #1 ldrh r2, [r1, r3] - rsb r2, r0, r2 + sub r2, r2, r0 strh r2, [r1, r3] @ movhi - movw r3, #2388 + movw r3, #2390 ldrh r3, [r8, r3] strh r3, [r4, #2] @ movhi mov r3, #0 strb r3, [r4, #6] strh r3, [r4, #4] @ movhi - b .L2630 -.L2634: +.L2569: + add sp, sp, #40 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2573: mov r0, r4 bl get_new_active_ppa cmn r0, #1 str r0, [sp, #8] - beq .L2636 + beq .L2575 ldr r3, [r5, #-3328] + mov r2, r10 mov r1, #1 - mov r2, r6 add r0, sp, #4 - str r3, [r7, #4] + str r3, [r6, #4] add r3, r3, #1 cmn r3, #1 moveq r3, r9 - str r3, [r10, #-3328] + str r3, [r5, #-3328] mov r3, #0 bl FlashProgPages ldrh r0, [r4] bl decrement_vpc_count - b .L2633 -.L2630: - add sp, sp, #44 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2648: + b .L2572 +.L2586: .align 2 -.L2647: +.L2585: .word .LANCHOR2 .word .LANCHOR0 .word 305419896 @@ -15648,32 +16110,35 @@ .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 .global ftl_map_blk_gc + .syntax unified + .arm + .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 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r4, r0 ldr r5, [r0, #12] - ldr r7, [r0, #24] + ldr r10, [r0, #24] bl ftl_free_no_use_map_blk ldrh r3, [r4, #10] ldrh r2, [r4, #8] + ldr fp, .L2600 sub r3, r3, #4 - ldr r8, .L2663 cmp r2, r3 - blt .L2650 + blt .L2588 uxth r0, r0 - mov r0, r0, asl #1 - ldrh r10, [r5, r0] - cmp r10, #0 - beq .L2650 + lsl r0, r0, #1 + ldrh r9, [r5, r0] + cmp r9, #0 + beq .L2588 ldr r3, [r4, #32] cmp r3, #0 - bne .L2650 + bne .L2588 mov r2, #1 str r2, [r4, #32] strh r3, [r5, r0] @ movhi @@ -15681,114 +16146,117 @@ ldrh r2, [r4, #2] sub r3, r3, #1 strh r3, [r4, #8] @ movhi - movw r3, #2390 - ldrh r3, [r8, r3] + movw r3, #2392 + ldrh r3, [fp, r3] cmp r2, r3 - bcc .L2651 + bcc .L2589 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2651: - ldr r5, .L2663+4 - mov fp, #0 -.L2652: - ldrh r3, [r4, #6] - uxth r6, fp - cmp r3, r6 - bls .L2662 - ldr r3, [r7, r6, asl #2] - add ip, r7, r6, asl #2 - cmp r10, r3, lsr #10 - bne .L2653 - ldr r3, [r5, #-520] +.L2589: + ldr r5, .L2600+4 + mov r6, #0 +.L2590: + ldrh r2, [r4, #6] + uxth r3, r6 + cmp r2, r3 + bhi .L2595 mov r1, #1 - ldr r9, [r5, #-500] - mov r2, r1 - ldr r0, .L2663+8 - str r3, [r5, #1760] - str r9, [r5, #1764] - ldr r3, [r7, r6, asl #2] - str ip, [sp, #4] - str r3, [r5, #1756] - bl FlashReadPages - ldr r3, [r5, #1752] - cmn r3, #1 - ldr r3, .L2663+4 - ldr ip, [sp, #4] - bne .L2654 -.L2656: - mov r2, #0 - ldr r0, .L2663+12 - str r2, [ip] - ldr r1, [r3, #1756] - ldrh r2, [r9, #8] - str r3, [sp, #4] - bl printk - mov r2, #1 - ldr r3, [sp, #4] - str r2, [r3, #-3616] - b .L2655 -.L2654: - ldrh r1, [r9, #8] - cmp r1, r6 - bne .L2656 - ldrh r0, [r9] - ldrh r2, [r4, #4] - cmp r0, r2 - bne .L2656 - mov r0, r4 - ldr r2, [r5, #1760] - bl FtlMapWritePage -.L2653: - add fp, fp, #1 - b .L2652 -.L2662: - mov r0, r10 - mov r1, #1 + mov r0, r9 bl FtlFreeSysBlkQueueIn mov r3, #0 str r3, [r4, #32] -.L2650: - movw r3, #2390 +.L2588: + movw r3, #2392 ldrh r2, [r4, #2] - ldrh r3, [r8, r3] + ldrh r3, [fp, r3] cmp r2, r3 - bcc .L2655 + bcc .L2593 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2655: + b .L2593 +.L2595: + uxth r7, r6 + add r2, r10, r7, lsl #2 + str r2, [sp] + ldr r2, [r10, r7, lsl #2] + cmp r9, r2, lsr #10 + bne .L2591 + ldr r2, [r5, #-520] + ldr r8, [r5, #-500] + ldr r0, .L2600+8 + str r2, [r5, #1768] + str r8, [r5, #1772] + ldr r2, [r10, r7, lsl #2] + str r3, [sp, #4] + str r2, [r5, #1764] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #1760] + ldr r3, [sp, #4] + cmn r2, #1 + bne .L2592 +.L2594: + ldr r2, [sp] + mov r3, #0 + ldr r0, .L2600+12 + str r3, [r2] + ldrh r2, [r8, #8] + ldr r1, [r5, #1764] + bl printk + mov r3, #1 + str r3, [r5, #-3612] +.L2593: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2664: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2592: + ldrh r2, [r8, #8] + cmp r2, r3 + bne .L2594 + ldrh r2, [r8] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L2594 + ldr r2, [r5, #1768] + mov r1, r7 + mov r0, r4 + bl FtlMapWritePage +.L2591: + add r6, r6, #1 + b .L2590 +.L2601: .align 2 -.L2663: +.L2600: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2+1752 + .word .LANCHOR2+1760 .word .LC133 .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: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - ldr r5, .L2677 - ldr r7, [r0, #12] - ldr r9, [r0, #24] - ldr r6, [r5, #-3616] + ldr r5, .L2613 + ldr r6, [r5, #-3612] cmp r6, #0 - bne .L2666 + bne .L2603 ldrh r3, [r0] movw r2, #65535 mov r4, r0 + ldr r7, [r0, #12] cmp r3, r2 - bne .L2667 + bne .L2604 ldrh r3, [r0, #8] add r3, r3, #1 strh r3, [r0, #8] @ movhi @@ -15796,479 +16264,346 @@ strh r0, [r7] @ movhi ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi - add r3, r3, #1 strh r6, [r4] @ movhi + add r3, r3, #1 str r3, [r4, #28] - b .L2666 -.L2667: - mov r3, r3, asl #1 - ldr r10, .L2677+4 +.L2603: + mov r0, #0 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2604: + lsl r3, r3, #1 + ldr r8, [r0, #24] + ldr r10, .L2613+4 mov r1, #255 - ldrh r8, [r7, r3] + ldrh r9, [r7, r3] ldrh r3, [r0, #2] ldr r7, [r5, #-500] - orr r3, r3, r8, asl #10 - str r3, [r5, #1756] + orr r3, r3, r9, lsl #10 + str r7, [r5, #1772] + str r3, [r5, #1764] ldr r3, [r5, #-524] - str r7, [r5, #1764] - str r3, [r5, #1760] + str r3, [r5, #1768] ldr r3, [r0, #28] str r3, [r7, #4] - ldr r3, .L2677+8 + ldr r3, .L2613+8 strh r3, [r7, #8] @ movhi ldrh r3, [r0, #4] - strh r8, [r7, #2] @ movhi + strh r9, [r7, #2] @ movhi strh r3, [r7] @ movhi - movw r3, #2390 + movw r3, #2392 ldrh r2, [r10, r3] ldr r0, [r5, #-524] - mov r2, r2, asl #3 + lsl r2, r2, #3 bl ftl_memset mov r2, r6 -.L2668: - ldrh r1, [r4, #6] - uxth r3, r2 - cmp r1, r3 - bls .L2676 - ldr r1, [r9, r3, asl #2] - cmp r8, r1, lsr #10 - bne .L2669 - add r6, r6, #1 - ldr r1, [r5, #-524] - uxth r6, r6 - str r3, [r1, r6, asl #3] - ldr r1, [r9, r3, asl #2] - ldr r3, [r5, #-524] - add r3, r3, r6, asl #3 - str r1, [r3, #4] -.L2669: - add r2, r2, #1 - b .L2668 -.L2676: - ldrb r3, [r10] @ zero_extendqisi2 + mov r3, r6 +.L2605: + ldrh r0, [r4, #6] + uxth r1, r2 + cmp r0, r1 + bhi .L2607 + ldrb r3, [r10, #36] @ zero_extendqisi2 cmp r3, #0 - beq .L2671 - ldr r2, .L2677+4 - movw r3, #2398 - ldr r0, [r5, #1760] - ldrh r1, [r2, r3] + beq .L2608 + ldr r3, .L2613+12 + ldr r0, [r5, #1768] + ldrh r1, [r3] bl js_hash str r0, [r7, #12] -.L2671: - mov r1, #1 +.L2608: + mov r2, #1 mov r3, #0 - ldr r0, .L2677+12 - mov r2, r1 + mov r1, r2 + ldr r0, .L2613+16 bl FlashProgPages ldrh r3, [r4, #2] mov r0, r4 add r3, r3, #1 strh r3, [r4, #2] @ movhi bl ftl_map_blk_gc -.L2666: - mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L2678: + b .L2603 +.L2607: + uxth r1, r2 + ldr r0, [r8, r1, lsl #2] + cmp r9, r0, lsr #10 + bne .L2606 + ldr r0, [r5, #-524] + add r3, r3, #1 + uxth r3, r3 + str r1, [r0, r3, lsl #3] + ldr r0, [r8, r1, lsl #2] + ldr r1, [r5, #-524] + add r1, r1, r3, lsl #3 + str r0, [r1, #4] +.L2606: + add r2, r2, #1 + b .L2605 +.L2614: .align 2 -.L2677: +.L2613: .word .LANCHOR2 .word .LANCHOR0 .word -1291 - .word .LANCHOR2+1752 + .word .LANCHOR0+2400 + .word .LANCHOR2+1760 .fnend .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 2 .global FtlMapWritePage + .syntax unified + .arm + .fpu softvfp .type FtlMapWritePage, %function FtlMapWritePage: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r4, r0 - ldr r10, .L2698 - mov r8, r1 - ldr fp, .L2698+4 - mov r5, #0 - str r2, [sp] - mov r9, r10 -.L2680: - ldr r3, [r10, #-3348] - ldr r6, .L2698 + ldr r7, .L2634 + mov r9, r1 + mov fp, r2 + mov r6, #0 + ldr r10, .L2634+4 + mov r5, r7 +.L2616: + ldr r3, [r7, #-3348] add r3, r3, #1 - str r3, [r10, #-3348] - ldrh r3, [fp] + str r3, [r7, #-3348] + ldrh r3, [r10] ldrh r2, [r4, #2] sub r3, r3, #1 cmp r2, r3 - bge .L2681 + bge .L2617 ldrh r2, [r4] movw r3, #65535 cmp r2, r3 - bne .L2682 -.L2681: + bne .L2618 +.L2617: mov r0, r4 bl Ftl_write_map_blk_to_last_page -.L2682: - ldr r1, [r9, #-3616] +.L2618: + ldr r1, [r5, #-3612] cmp r1, #0 - bne .L2683 + bne .L2619 ldrh r3, [r4] ldr r2, [r4, #12] - ldr r0, [r10, #-500] - mov r3, r3, asl #1 - ldrh r7, [r2, r3] + ldr r0, [r5, #-500] + lsl r3, r3, #1 + ldrh r8, [r2, r3] mov r2, #16 ldrh r3, [r4, #2] - str r0, [r10, #1764] - orr r3, r3, r7, asl #10 - str r3, [r10, #1756] - ldr r3, [sp] - str r3, [r10, #1760] + str fp, [r5, #1768] + str r0, [r5, #1772] + orr r3, r3, r8, lsl #10 + str r3, [r5, #1764] bl ftl_memset + ldr r3, [r5, #1772] ldr r2, [r4, #28] - ldr r3, [r10, #1764] + strh r9, [r3, #8] @ movhi str r2, [r3, #4] - strh r8, [r3, #8] @ movhi ldrh r2, [r4, #4] - strh r7, [r3, #2] @ movhi - strh r2, [r3] @ movhi - ldr r2, .L2698+8 - ldrb r2, [r2] @ zero_extendqisi2 - cmp r2, #0 - beq .L2684 - ldr r2, .L2698+12 - ldr r0, [r10, #1760] str r3, [sp, #4] + strh r8, [r3, #2] @ movhi + strh r2, [r3] @ movhi + ldr r2, .L2634+8 + ldrb r1, [r2, #36] @ zero_extendqisi2 + cmp r1, #0 + beq .L2620 + add r2, r2, #2400 + ldr r0, [r5, #1768] ldrh r1, [r2] bl js_hash ldr r3, [sp, #4] str r0, [r3, #12] -.L2684: - mov r1, #1 - ldr r0, .L2698+16 - mov r2, r1 - mov r3, r1 +.L2620: + mov r3, #1 + ldr r0, .L2634+12 + mov r2, r3 + mov r1, r3 bl FlashProgPages ldrh r3, [r4, #2] add r3, r3, #1 uxth r3, r3 strh r3, [r4, #2] @ movhi - ldr r2, [r9, #1752] + ldr r2, [r5, #1760] cmn r2, #1 - bne .L2685 - ldr r0, .L2698+20 - add r5, r5, #1 - ldr r1, [r10, #1756] + bne .L2621 + ldr r1, [r5, #1764] + add r6, r6, #1 + ldr r0, .L2634+16 + uxth r6, r6 bl printk ldrh r3, [r4, #2] - uxth r5, r5 cmp r3, #2 - ldrls r3, .L2698+4 - ldrlsh r3, [r3] + ldrhls r3, [r10] subls r3, r3, #1 - strlsh r3, [r4, #2] @ movhi - cmp r5, #3 - bls .L2680 - ldr r0, .L2698+24 - mov r2, r5 - ldr r1, [r6, #1756] + strhls r3, [r4, #2] @ movhi + cmp r6, #3 + bls .L2616 + mov r2, r6 + ldr r1, [r5, #1764] + ldr r0, .L2634+20 bl printk mov r3, #1 - str r3, [r6, #-3616] - b .L2683 -.L2685: - cmp r2, #0 - strneh r7, [r4, #40] @ movhi - cmp r2, #256 - cmpne r3, #1 - beq .L2689 - ldr r3, [r4, #36] - cmp r3, #0 - beq .L2690 -.L2689: - mov r3, #0 - str r3, [r4, #36] - b .L2680 -.L2690: - ldr r2, [r6, #1756] - ldr r3, [r4, #24] - str r2, [r3, r8, asl #2] -.L2683: + str r3, [r5, #-3612] +.L2619: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2699: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2621: + cmp r2, #0 + strhne r8, [r4, #40] @ movhi + cmp r3, #1 + cmpne r2, #256 + beq .L2625 + ldr r3, [r4, #36] + cmp r3, #0 + beq .L2626 +.L2625: + mov r3, #0 + str r3, [r4, #36] + b .L2616 +.L2626: + ldr r2, [r5, #1764] + ldr r3, [r4, #24] + str r2, [r3, r9, lsl #2] + b .L2619 +.L2635: .align 2 -.L2698: +.L2634: .word .LANCHOR2 - .word .LANCHOR0+2390 + .word .LANCHOR0+2392 .word .LANCHOR0 - .word .LANCHOR0+2398 - .word .LANCHOR2+1752 + .word .LANCHOR2+1760 .word .LC134 .word .LC135 .fnend .size FtlMapWritePage, .-FtlMapWritePage .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 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r4, #12 - ldr r5, .L2702 + ldr r5, .L2638 mul r4, r4, r0 + ldr r3, [r5, #-3376] sub r0, r5, #432 - ldr r3, [r5, #-3380] add r2, r3, r4 ldrh r1, [r3, r4] ldr r2, [r2, #8] bl FtlMapWritePage - ldr r3, [r5, #-3380] + ldr r3, [r5, #-3376] mov r0, #0 add r4, r3, r4 ldr r3, [r4, #4] bic r3, r3, #-2147483648 str r3, [r4, #4] - ldmfd sp!, {r3, r4, r5, pc} -.L2703: + pop {r4, r5, r6, pc} +.L2639: .align 2 -.L2702: +.L2638: .word .LANCHOR2 .fnend .size flush_l2p_region, .-flush_l2p_region .align 2 .global FtlMapTblRecovery + .syntax unified + .arm + .fpu softvfp .type FtlMapTblRecovery, %function FtlMapTblRecovery: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r3, [r0, #16] + ldr r3, [r0, #24] mov r4, r0 - ldrh r10, [r0, #6] mov r1, #0 - ldr r8, [r0, #24] + mov r7, #0 + ldr r5, .L2682 + str r3, [sp] + ldr r3, [r0, #16] + ldr r8, [r0, #12] + ldr fp, .L2682+4 str r3, [sp, #12] + ldrh r3, [r0, #6] + str r3, [sp, #4] ldrh r3, [r0, #8] - mov r2, r10, asl #2 - ldr r9, [r0, #12] - mov r0, r8 + ldr r0, [sp] str r3, [sp, #8] + ldr r3, [sp, #4] + lsl r2, r3, #2 bl ftl_memset - ldr r1, .L2747 - mov r2, #1 - str r2, [r4, #36] - ldr r3, [r1, #-524] - mov r5, r1 - ldr r6, [r1, #-500] - mov r7, r1 - str r3, [r1, #1760] + ldr r3, [r5, #-524] + ldr r6, [r5, #-500] + str r7, [r4, #32] + str r3, [r5, #1768] mvn r3, #0 - str r6, [r1, #1764] + str r6, [r5, #1772] strh r3, [r4] @ movhi strh r3, [r4, #2] @ movhi - mov r3, #0 - str r3, [r4, #32] - str r3, [r4, #28] - str r3, [sp, #4] -.L2705: - ldrh r3, [sp, #4] - ldr r2, [sp, #8] - sxth fp, r3 - cmp fp, r2 - bge .L2723 - ldr r2, [sp, #8] - sub r2, r2, #1 - cmp fp, r2 - mov r2, fp, asl #1 - bne .L2706 - ldrh r0, [r9, r2] + mov r3, #1 + str r7, [r4, #28] + str r3, [r4, #36] +.L2641: + ldr r3, [sp, #8] + sxth r10, r7 + cmp r10, r3 + bge .L2660 + ldr r3, [sp, #8] + sub r3, r3, #1 + cmp r10, r3 + lsl r3, r10, #1 + bne .L2642 + ldrh r0, [r8, r3] mov r1, #1 - str r3, [sp, #8] - add r3, r9, r2 - str r3, [sp, #4] + add r9, r8, r3 + mov r8, #0 bl FtlGetLastWrittenPage - mov r7, #0 - ldr r3, [sp, #8] - add r2, r0, #1 - strh r2, [r4, #2] @ movhi - sxth r0, r0 - add r9, r0, #1 - strh r3, [r4] @ movhi - ldr r3, [sp, #12] - ldr r3, [r3, fp, asl #2] - ldr fp, .L2747 - str r3, [r4, #28] -.L2707: - sxth r3, r7 - cmp r3, r9 - bge .L2723 - ldr r2, [sp, #4] - mov r1, #1 - ldr r0, .L2747+4 - ldrh r2, [r2] - orr r3, r3, r2, asl #10 - mov r2, r1 - str r3, [r5, #1756] - bl FlashReadPages - ldr r3, .L2747+8 - ldrb r3, [r3] @ zero_extendqisi2 - cmp r3, #0 - beq .L2708 - ldr r3, [fp, #1764] - ldr r3, [r3, #12] - cmp r3, #0 - beq .L2708 - ldr r2, .L2747+12 - ldr r0, [fp, #1760] + sxth r3, r0 + strh r7, [r4] @ movhi + add r0, r0, #1 + ldr r7, .L2682+8 str r3, [sp, #8] - ldrh r1, [r2] - bl js_hash + ldr r3, [sp, #12] + strh r0, [r4, #2] @ movhi + add fp, r7, #2400 + ldr r3, [r3, r10, lsl #2] + ldr r10, .L2682+12 + str r3, [r4, #28] +.L2643: ldr r3, [sp, #8] - cmp r3, r0 - mvnne r3, #0 - strne r3, [fp, #1752] -.L2708: - ldr r3, [fp, #1752] - cmn r3, #1 - beq .L2709 - ldrh r3, [r6, #8] - cmp r3, r10 - bcs .L2709 - ldrh r2, [r4, #4] - ldrh r1, [r6] - cmp r1, r2 - ldreq r2, [fp, #1756] - streq r2, [r8, r3, asl #2] -.L2709: - add r7, r7, #1 - b .L2707 -.L2723: + sxth r2, r8 + add r1, r3, #1 + cmp r2, r1 + blt .L2646 +.L2660: mov r0, r4 bl ftl_free_no_use_map_blk - ldr r1, .L2747+8 - movw r3, #2390 + ldr r1, .L2682+8 + movw r3, #2392 ldrh r2, [r4, #2] ldrh r3, [r1, r3] cmp r2, r3 - bne .L2712 + bne .L2648 mov r0, r4 bl ftl_map_blk_alloc_new_blk - b .L2712 -.L2706: - ldr r3, [r5, #-524] - mov r1, #1 - ldr fp, .L2747+16 - ldr r0, .L2747+4 - str r3, [r5, #1760] - add r3, r9, r2 - ldrh r2, [r9, r2] - str r3, [sp, #16] - ldrh r3, [fp] - sub r3, r3, #1 - orr r3, r3, r2, asl #10 - mov r2, r1 - str r3, [r5, #1756] - bl FlashReadPages - ldr r3, [r5, #1752] - cmn r3, #1 - mov r3, fp - beq .L2725 - ldrh r1, [r6] - ldrh r2, [r4, #4] - cmp r1, r2 - bne .L2725 - ldrh r1, [r6, #8] - movw r2, #64245 - cmp r1, r2 - bne .L2725 - mov r0, #0 - mov lr, #8 - mov fp, #4 -.L2714: - uxth r2, r0 - ldrh ip, [r3] - sxth r1, r2 - sub ip, ip, #1 - cmp r1, ip - bge .L2717 - ldr ip, [r5, #-524] - add r0, r0, #1 - ldr r1, [ip, r1, asl #3] - uxth r1, r1 - cmp r1, r10 - smlabbcc r2, r2, lr, fp - ldrcc r2, [ip, r2] - strcc r2, [r8, r1, asl #2] - b .L2714 -.L2725: - mov fp, #0 -.L2745: - ldr r3, .L2747+16 - sxth r2, fp - ldrh r1, [r3] - cmp r2, r1 - bge .L2717 - str r3, [sp, #20] - ldr r3, [sp, #16] - ldr r0, .L2747+4 - ldrh r1, [r3] - orr r2, r2, r1, asl #10 - mov r1, #1 - str r2, [r7, #1756] - mov r2, r1 - bl FlashReadPages - ldr r3, .L2747+8 - ldrb r2, [r3] @ zero_extendqisi2 - cmp r2, #0 - ldr r3, [sp, #20] - beq .L2718 - ldr r2, [r7, #1764] - ldr r2, [r2, #12] - cmp r2, #0 - beq .L2718 - ldrh r1, [r3, #8] - ldr r0, [r7, #1760] - str r2, [sp, #20] - bl js_hash - ldr r2, [sp, #20] - cmp r2, r0 - mvnne r3, #0 - strne r3, [r7, #1752] -.L2718: - ldr r3, .L2747 - ldr r3, [r3, #1752] - cmn r3, #1 - beq .L2719 - ldrh r3, [r6, #8] - cmp r3, r10 - bcs .L2719 - ldrh r2, [r4, #4] - ldrh r1, [r6] - cmp r1, r2 - ldreq r2, [r7, #1756] - streq r2, [r8, r3, asl #2] -.L2719: - add fp, fp, #1 - b .L2745 -.L2717: - ldr r3, [sp, #4] - add r3, r3, #1 - str r3, [sp, #4] - b .L2705 -.L2712: +.L2648: mov r0, r4 bl ftl_map_blk_gc mov r0, r4 @@ -16276,54 +16611,199 @@ mov r0, #0 add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2748: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2646: + ldrh r1, [r9] + mov r0, r10 + orr r2, r2, r1, lsl #10 + str r2, [r5, #1764] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldrb r2, [r7, #36] @ zero_extendqisi2 + cmp r2, #0 + beq .L2644 + ldr r2, [r5, #1772] + ldr r2, [r2, #12] + cmp r2, #0 + str r2, [sp, #12] + beq .L2644 + ldrh r1, [fp] + ldr r0, [r5, #1768] + bl js_hash + ldr r2, [sp, #12] + cmp r2, r0 + mvnne r2, #0 + strne r2, [r5, #1760] +.L2644: + ldr r1, .L2682 + ldr r2, [r1, #1760] + cmn r2, #1 + beq .L2645 + ldrh r2, [r6, #8] + ldr r3, [sp, #4] + cmp r3, r2 + bls .L2645 + ldrh ip, [r6] + ldrh r0, [r4, #4] + cmp ip, r0 + ldreq r1, [r1, #1764] + ldreq r3, [sp] + streq r1, [r3, r2, lsl #2] +.L2645: + add r8, r8, #1 + b .L2643 +.L2642: + ldr r2, [r5, #-524] + ldr r0, .L2682+12 + str r2, [r5, #1768] + add r2, r8, r3 + str r2, [sp, #16] + ldrh r2, [r8, r3] + ldrh r3, [fp] + sub r3, r3, #1 + orr r3, r3, r2, lsl #10 + mov r2, #1 + mov r1, r2 + str r3, [r5, #1764] + bl FlashReadPages + ldr r3, [r5, #1760] + cmn r3, #1 + beq .L2662 + ldrh r2, [r6] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L2662 + ldrh r2, [r6, #8] + movw r3, #64245 + cmp r2, r3 + beq .L2650 +.L2662: + ldr r9, .L2682 + mov r10, #0 +.L2651: + ldrh r2, [fp] + sxth r3, r10 + cmp r3, r2 + bge .L2658 + ldr r2, [sp, #16] + ldr r0, .L2682+12 + ldrh r2, [r2] + orr r3, r3, r2, lsl #10 + mov r2, #1 + mov r1, r2 + str r3, [r9, #1764] + bl FlashReadPages + ldr r3, .L2682+8 + ldrb r3, [r3, #36] @ zero_extendqisi2 + cmp r3, #0 + beq .L2655 + ldr r3, [r9, #1772] + ldr r3, [r3, #12] + cmp r3, #0 + str r3, [sp, #20] + beq .L2655 + ldr r2, .L2682+16 + ldr r0, [r9, #1768] + ldrh r1, [r2] + bl js_hash + ldr r3, [sp, #20] + cmp r3, r0 + mvnne r3, #0 + strne r3, [r9, #1760] +.L2655: + ldr r3, [r9, #1760] + cmn r3, #1 + beq .L2656 + ldrh r3, [r6, #8] + ldr r2, [sp, #4] + cmp r2, r3 + bls .L2656 + ldrh r1, [r6] + ldrh r2, [r4, #4] + cmp r1, r2 + ldreq r2, [r9, #1764] + ldreq r1, [sp] + streq r2, [r1, r3, lsl #2] +.L2656: + add r10, r10, #1 + b .L2651 +.L2650: + mov r1, #0 + mov ip, #4 +.L2652: + ldrh r2, [fp] + sxth r3, r1 + sub r2, r2, #1 + cmp r3, r2 + blt .L2654 +.L2658: + add r7, r7, #1 + b .L2641 +.L2654: + ldr r0, [r5, #-524] + add r1, r1, #1 + ldr r9, [sp, #4] + ldr r2, [r0, r3, lsl #3] + uxth lr, r2 + cmp r9, lr + addhi r3, ip, r3, lsl #3 + movhi r2, lr + ldrhi r3, [r0, r3] + ldrhi r0, [sp] + strhi r3, [r0, r2, lsl #2] + b .L2652 +.L2683: .align 2 -.L2747: +.L2682: .word .LANCHOR2 - .word .LANCHOR2+1752 + .word .LANCHOR0+2392 .word .LANCHOR0 - .word .LANCHOR0+2398 - .word .LANCHOR0+2390 + .word .LANCHOR2+1760 + .word .LANCHOR0+2400 .fnend .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 .global FtlLoadVonderInfo + .syntax unified + .arm + .fpu softvfp .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L2751 - movw r1, #2408 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L2751+4 + ldr r2, .L2686 + movw r1, #2412 + ldr r3, .L2686+4 + push {r4, lr} + .save {r4, lr} ldrh r1, [r2, r1] add r0, r3, #1792 + add r0, r0, #8 strh r1, [r0, #10] @ movhi - ldr r1, .L2751+8 + ldr r1, .L2686+8 strh r1, [r0, #4] @ movhi - movw r1, #2434 + movw r1, #2438 ldrh r1, [r2, r1] strh r1, [r0, #8] @ movhi - movw r1, #2410 + movw r1, #2414 ldrh r1, [r2, r1] - ldr r2, [r2, #2436] + ldr r2, [r2, #2440] strh r1, [r0, #6] @ movhi - str r2, [r3, #1804] - ldr r2, [r3, #-460] - str r2, [r3, #1808] - ldr r2, [r3, #-464] str r2, [r3, #1812] - ldr r2, [r3, #-456] + ldr r2, [r3, #-460] str r2, [r3, #1816] + ldr r2, [r3, #-464] + str r2, [r3, #1820] + ldr r2, [r3, #-456] + str r2, [r3, #1824] bl FtlMapTblRecovery mov r0, #0 - ldmfd sp!, {r3, pc} -.L2752: + pop {r4, pc} +.L2687: .align 2 -.L2751: +.L2686: .word .LANCHOR0 .word .LANCHOR2 .word -3962 @@ -16331,237 +16811,241 @@ .size FtlLoadVonderInfo, .-FtlLoadVonderInfo .align 2 .global FtlLoadMapInfo + .syntax unified + .arm + .fpu softvfp .type FtlLoadMapInfo, %function FtlLoadMapInfo: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} bl FtlL2PDataInit - ldr r0, .L2755 + ldr r0, .L2690 bl FtlMapTblRecovery mov r0, #0 - ldmfd sp!, {r3, pc} -.L2756: + pop {r4, pc} +.L2691: .align 2 -.L2755: +.L2690: .word .LANCHOR2-432 .fnend .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 2 .global FtlVendorPartWrite + .syntax unified + .arm + .fpu softvfp .type FtlVendorPartWrite, %function FtlVendorPartWrite: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2768 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L2702 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r10, r2 - movw r2, #2396 - mov r6, r0 - ldrh r5, [r3, r2] - add r3, r3, #2384 - add r2, r0, r1 + movw r2, #2386 + mov r5, r1 + add r1, r0, r1 .pad #60 sub sp, sp, #60 - ldrh r3, [r3] - mov r4, r1 - cmp r2, r3 - mvnhi r0, #0 - bhi .L2758 - ldr fp, .L2768+4 - mov r5, r6, lsr r5 - mov r3, r5, asl #2 - str r3, [sp, #4] - mov r7, fp - mov r3, #0 - str r3, [sp] -.L2759: - cmp r4, #0 - beq .L2767 - ldr r2, [sp, #4] - mov r0, r6 - ldr r3, [fp, #-456] - ldr ip, [r3, r2] - ldr r3, .L2768+8 - str ip, [sp, #12] - ldrh r2, [r3] - mov r1, r2 - str r2, [sp, #8] - bl __aeabi_uidivmod - ldr r2, [sp, #8] - mov r8, r1 - ldr ip, [sp, #12] - rsb r3, r1, r2 - uxth r9, r3 - cmp r9, r4 - uxthhi r9, r4 - cmp r9, r2 - cmpne ip, #0 - movne r1, #1 - moveq r1, #0 - beq .L2761 - ldr r2, [r7, #-516] - mov r1, #1 - add r0, sp, #20 - str ip, [sp, #24] - str r2, [sp, #28] - mov r2, #0 - str r2, [sp, #32] - mov r2, r1 - bl FlashReadPages - b .L2762 -.L2761: - ldr r2, .L2768+12 - ldr r0, [r7, #-516] - ldrh r2, [r2] - bl ftl_memset -.L2762: - mov ip, r9, asl #9 - ldr r0, [r7, #-516] - uxth r8, r8 - mov r1, r10 - mov r2, ip - str ip, [sp, #8] - add r0, r0, r8, asl #9 - rsb r4, r9, r4 - bl ftl_memcpy - mov r1, r5 - ldr r0, .L2768+16 - add r5, r5, #1 - ldr r2, [r7, #-516] - add r6, r6, r9 - bl FtlMapWritePage - ldr r3, [sp] - cmn r0, #1 - ldr ip, [sp, #8] - mvneq r3, #0 - str r3, [sp] - add r10, r10, ip - ldr r3, [sp, #4] - add r3, r3, #4 - str r3, [sp, #4] - b .L2759 -.L2767: - ldr r0, [sp] -.L2758: + ldrh r2, [r3, r2] + cmp r1, r2 + mvnhi r9, #0 + bhi .L2692 + movw r2, #2398 + ldr r8, .L2702+4 + ldrh r6, [r3, r2] + mov r7, r0 + mov r9, #0 + lsr r6, r0, r6 + lsl fp, r6, #2 +.L2694: + cmp r5, #0 + bne .L2699 +.L2692: + mov r0, r9 add sp, sp, #60 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2769: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2699: + ldr r3, [r8, #-456] + mov r0, r7 + ldr r2, [r3, fp] + ldr r3, .L2702+8 + str r2, [sp, #12] + ldrh r3, [r3] + mov r1, r3 + str r3, [sp, #8] + bl __aeabi_uidivmod + ldr r3, [sp, #8] + ldr r2, [sp, #12] + str r1, [sp, #4] + sub r4, r3, r1 + uxth r4, r4 + cmp r5, r4 + uxthcc r4, r5 + cmp r2, #0 + cmpne r4, r3 + movne r1, #1 + moveq r1, #0 + beq .L2696 + ldr r3, [r8, #-516] + add r0, sp, #20 + str r2, [sp, #24] + mov r2, #1 + mov r1, r2 + str r3, [sp, #28] + mov r3, #0 + str r3, [sp, #32] + bl FlashReadPages +.L2697: + lsl r3, r4, #9 + ldr r0, [r8, #-516] + mov r1, r10 + mov r2, r3 + str r3, [sp, #8] + ldr r3, [sp, #4] + sub r5, r5, r4 + add r7, r7, r4 + add fp, fp, #4 + add r0, r0, r3, lsl #9 + bl ftl_memcpy + mov r1, r6 + ldr r2, [r8, #-516] + ldr r0, .L2702+12 + add r6, r6, #1 + bl FtlMapWritePage + ldr r3, [sp, #8] + cmn r0, #1 + mvneq r9, #0 + add r10, r10, r3 + b .L2694 +.L2696: + ldr r3, .L2702+16 + ldr r0, [r8, #-516] + ldrh r2, [r3] + bl ftl_memset + b .L2697 +.L2703: .align 2 -.L2768: +.L2702: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2394 - .word .LANCHOR0+2398 - .word .LANCHOR2+1792 + .word .LANCHOR0+2396 + .word .LANCHOR2+1800 + .word .LANCHOR0+2400 .fnend .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 2 .global Ftl_save_ext_data + .syntax unified + .arm + .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 r2, .L2772 - ldr r3, .L2772+4 - ldr r1, [r2, #-3232] - cmp r1, r3 + ldr r3, .L2706 + ldr r2, .L2706+4 + ldr r1, [r3, #-3236] + cmp r1, r2 bxne lr - ldr r3, .L2772+8 - mov r0, #0 + ldr r2, .L2706+8 mov r1, #1 - sub r2, r2, #3232 - str r3, [r2, #4] - ldr r3, [r2, #-108] - str r3, [r2, #88] - ldr r3, [r2, #-104] - str r3, [r2, #92] - ldr r3, [r2, #-112] - str r3, [r2, #8] - ldr r3, [r2, #-124] - str r3, [r2, #12] - ldr r3, [r2, #-132] - str r3, [r2, #16] - ldr r3, [r2, #-116] - str r3, [r2, #20] - ldr r3, [r2, #-88] - str r3, [r2, #28] - ldr r3, [r2, #-372] - str r3, [r2, #32] - ldr r3, [r2, #-128] - str r3, [r2, #36] - ldr r3, [r2, #-120] - str r3, [r2, #40] - ldr r3, [r2, #-80] - str r3, [r2, #44] - ldr r3, [r2, #-76] - str r3, [r2, #48] - ldr r3, [r2, #-4] - str r3, [r2, #60] - ldr r3, [r2, #2668] - str r3, [r2, #64] + mov r0, #0 + str r2, [r3, #-3232] + ldr r2, [r3, #-3340] + str r2, [r3, #-3148] + ldr r2, [r3, #-3336] + str r2, [r3, #-3144] + ldr r2, [r3, #-3344] + str r2, [r3, #-3228] + ldr r2, [r3, #-3356] + str r2, [r3, #-3224] + ldr r2, [r3, #-3364] + str r2, [r3, #-3220] + ldr r2, [r3, #-3348] + str r2, [r3, #-3216] + ldr r2, [r3, #-3320] + str r2, [r3, #-3208] + ldr r2, [r3, #-3600] + str r2, [r3, #-3204] + ldr r2, [r3, #-3360] + str r2, [r3, #-3200] + ldr r2, [r3, #-3352] + str r2, [r3, #-3196] + ldr r2, [r3, #-3312] + str r2, [r3, #-3192] + ldr r2, [r3, #-3308] + str r2, [r3, #-3188] + ldr r2, [r3, #-2724] + str r2, [r3, #-3176] + ldr r2, [r3, #-564] + str r2, [r3, #-3172] + ldr r2, .L2706+12 b FtlVendorPartWrite -.L2773: +.L2707: .align 2 -.L2772: +.L2706: .word .LANCHOR2 .word 1179929683 .word 1342177379 + .word .LANCHOR2-3236 .fnend .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 .global FtlEctTblFlush + .syntax unified + .arm + .fpu softvfp .type FtlEctTblFlush, %function FtlEctTblFlush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L2782 - ldr r3, [r3, #2244] + ldr r3, .L2718 + ldr r3, [r3, #2248] cmp r3, #0 - ldr r3, .L2782+4 + ldr r3, .L2718+4 moveq r2, #32 - beq .L2775 + beq .L2709 ldr r2, [r3, #-3308] cmp r2, #39 movhi r2, #32 movls r2, #4 -.L2775: - movw ip, #1836 +.L2709: + movw ip, #1844 ldrh r1, [r3, ip] cmp r1, #31 addls r1, r1, #1 - ldrls r2, .L2782+4 - strlsh r1, [r2, ip] @ movhi movls r2, #1 + strhls r1, [r3, ip] @ movhi cmp r0, #0 - bne .L2777 + bne .L2711 ldr r1, [r3, #-480] ldr r0, [r1, #20] ldr r1, [r1, #16] add r2, r2, r0 cmp r1, r2 - bcc .L2778 -.L2777: - ldr r2, [r3, #-480] + bcc .L2716 +.L2711: + push {r4, lr} + .save {r4, lr} mov r0, #64 + ldr r2, [r3, #-480] ldr r1, [r2, #16] str r1, [r2, #20] - ldr r1, .L2782+8 + ldr r1, .L2718+8 str r1, [r2] ldr r2, [r3, #-480] - ldr r3, .L2782+12 + ldr r3, .L2718+12 ldrh r1, [r3] - mov r3, r1, asl #9 + lsl r3, r1, #9 str r3, [r2, #12] ldr r3, [r2, #8] add r3, r3, #1 @@ -16570,12 +17054,14 @@ str r3, [r2, #4] bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2778: mov r0, #0 - ldmfd sp!, {r3, pc} -.L2783: + pop {r4, pc} +.L2716: + mov r0, #0 + bx lr +.L2719: .align 2 -.L2782: +.L2718: .word .LANCHOR0 .word .LANCHOR2 .word 1112818501 @@ -16584,404 +17070,411 @@ .size FtlEctTblFlush, .-FtlEctTblFlush .align 2 .global FtlVendorPartRead + .syntax unified + .arm + .fpu softvfp .type FtlVendorPartRead, %function FtlVendorPartRead: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L2731 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2396 - ldr r4, .L2796 - mov r8, r2 - add r2, r0, r1 - mov r7, r0 + mov r10, r2 + movw r2, #2386 + mov r6, r1 + add r1, r0, r1 .pad #60 sub sp, sp, #60 - mov r6, r1 - ldrh r5, [r4, r3] - add r4, r4, #2384 - ldrh r3, [r4] - cmp r2, r3 - mvnhi r0, #0 - bhi .L2785 - ldr r9, .L2796+4 - mov r5, r7, lsr r5 - mov r3, r5, asl #2 - str r3, [sp, #4] - mov r10, r9 - mov r3, #0 - str r3, [sp] -.L2786: + ldrh r2, [r3, r2] + cmp r1, r2 + mvnhi r9, #0 + bhi .L2720 + movw r2, #2398 + ldr r8, .L2731+4 + ldrh r5, [r3, r2] + mov r7, r0 + mov r9, #0 + lsr r5, r0, r5 + lsl fp, r5, #2 +.L2722: cmp r6, #0 - beq .L2795 - ldr r2, [sp, #4] + bne .L2728 +.L2720: + mov r0, r9 + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2728: + ldr r3, [r8, #-456] mov r0, r7 - ldr r3, [r9, #-456] - ldr r3, [r3, r2] - str r3, [sp, #12] - ldr r3, .L2796+8 + ldr r3, [r3, fp] + str r3, [sp, #8] + ldr r3, .L2731+8 ldrh r4, [r3] mov r1, r4 bl __aeabi_uidivmod - rsb r4, r1, r4 - ldr r3, [sp, #12] - str r1, [sp, #8] + sub r4, r4, r1 + ldr r3, [sp, #8] uxth r4, r4 - cmp r4, r6 - uxthhi r4, r6 + str r1, [sp, #4] + cmp r6, r4 + uxthcc r4, r6 cmp r3, #0 - mov fp, r4, asl #9 - beq .L2788 - ldr r2, [r10, #-516] - mov r1, #1 + lsl r2, r4, #9 + str r2, [sp, #8] + beq .L2724 + ldr r2, [r8, #-516] add r0, sp, #20 str r3, [sp, #24] str r3, [sp, #12] str r2, [sp, #28] mov r2, #0 str r2, [sp, #32] - mov r2, r1 + mov r2, #1 + mov r1, r2 bl FlashReadPages ldr r2, [sp, #20] - ldr r3, [sp] - cmn r2, #1 - ldr r2, [r10, #1752] - mvneq r3, #0 - cmp r2, #256 - str r3, [sp] ldr r3, [sp, #12] - bne .L2790 - mov r1, r5 + cmn r2, #1 + ldr r2, [r8, #1760] + mvneq r9, #0 + cmp r2, #256 + bne .L2726 mov r2, r3 - ldr r0, .L2796+12 - bl printk - ldr r0, .L2796+16 mov r1, r5 - ldr r2, [r9, #-516] + ldr r0, .L2731+12 + bl printk + ldr r2, [r8, #-516] + mov r1, r5 + ldr r0, .L2731+16 bl FtlMapWritePage -.L2790: - ldrh r3, [sp, #8] - mov r0, r8 - ldr r1, [r10, #-516] - mov r2, fp - add r1, r1, r3, asl #9 - bl ftl_memcpy - b .L2791 -.L2788: - mov r0, r8 - mov r1, r3 - mov r2, fp - bl ftl_memset -.L2791: +.L2726: + ldr r1, [r8, #-516] + lsl r2, r4, #9 ldr r3, [sp, #4] + mov r0, r10 + add r1, r1, r3, lsl #9 + bl ftl_memcpy +.L2727: + ldr r3, [sp, #8] add r5, r5, #1 - rsb r6, r4, r6 + sub r6, r6, r4 add r7, r7, r4 - add r3, r3, #4 - add r8, r8, fp - str r3, [sp, #4] - b .L2786 -.L2795: - ldr r0, [sp] -.L2785: - add sp, sp, #60 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2797: + add fp, fp, #4 + add r10, r10, r3 + b .L2722 +.L2724: + lsl r2, r4, #9 + mov r1, r3 + mov r0, r10 + bl ftl_memset + b .L2727 +.L2732: .align 2 -.L2796: +.L2731: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2394 + .word .LANCHOR0+2396 .word .LC136 - .word .LANCHOR2+1792 + .word .LANCHOR2+1800 .fnend .size FtlVendorPartRead, .-FtlVendorPartRead .align 2 .global FtlLoadEctTbl + .syntax unified + .arm + .fpu softvfp .type FtlLoadEctTbl, %function FtlLoadEctTbl: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r0, #64 - ldr r4, .L2801 + ldr r4, .L2736 sub r5, r4, #488 ldr r2, [r4, #-480] ldrh r1, [r5] bl FtlVendorPartRead ldr r3, [r4, #-480] ldr r2, [r3] - ldr r3, .L2801+4 + ldr r3, .L2736+4 cmp r2, r3 - beq .L2799 - ldr r1, .L2801+8 - ldr r0, .L2801+12 + beq .L2734 + ldr r1, .L2736+8 + ldr r0, .L2736+12 bl printk ldrh r2, [r5] - ldr r0, [r4, #-480] mov r1, #0 - mov r2, r2, asl #9 + ldr r0, [r4, #-480] + lsl r2, r2, #9 bl ftl_memset -.L2799: +.L2734: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L2802: + pop {r4, r5, r6, pc} +.L2737: .align 2 -.L2801: +.L2736: .word .LANCHOR2 .word 1112818501 .word .LC137 - .word .LC76 + .word .LC77 .fnend .size FtlLoadEctTbl, .-FtlLoadEctTbl .align 2 .global Ftl_load_ext_data + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r0, #0 - ldr r4, .L2809 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r1, #1 - ldr r5, .L2809+4 - sub r2, r4, #3232 + ldr r4, .L2744 + mov r0, #0 + ldr r5, .L2744+4 + sub r6, r4, #3232 + sub r6, r6, #4 + mov r2, r6 bl FtlVendorPartRead - ldr r3, [r4, #-3232] + ldr r3, [r4, #-3236] cmp r3, r5 - beq .L2804 - sub r0, r4, #3232 - mov r1, #0 + beq .L2739 mov r2, #512 + mov r1, #0 + mov r0, r6 bl ftl_memset - str r5, [r4, #-3232] -.L2804: - ldr r2, [r4, #-3232] - ldr r3, .L2809 - cmp r2, r5 - bne .L2805 - ldr r2, [r3, #-3144] - str r2, [r3, #-3340] - ldr r2, [r3, #-3140] - str r2, [r3, #-3336] - ldr r2, [r3, #-3224] - str r2, [r3, #-3344] - ldr r2, [r3, #-3220] - str r2, [r3, #-3356] - ldr r2, [r3, #-3216] - str r2, [r3, #-3364] - ldr r2, [r3, #-3212] - str r2, [r3, #-3348] - ldr r2, [r3, #-3204] - str r2, [r3, #-3320] - ldr r2, [r3, #-3200] - str r2, [r3, #-3604] - ldr r2, [r3, #-3196] - str r2, [r3, #-3360] - ldr r2, [r3, #-3192] - str r2, [r3, #-3352] - ldr r2, [r3, #-3188] - str r2, [r3, #-3312] - ldr r2, [r3, #-3184] - str r2, [r3, #-3308] - ldr r2, [r3, #-3172] - str r2, [r3, #-3236] -.L2805: - ldr r1, [r4, #-3164] + str r5, [r4, #-3236] +.L2739: + ldr r3, [r4, #-3236] + cmp r3, r5 + bne .L2740 + ldr r3, [r4, #-3148] + str r3, [r4, #-3340] + ldr r3, [r4, #-3144] + str r3, [r4, #-3336] + ldr r3, [r4, #-3228] + str r3, [r4, #-3344] + ldr r3, [r4, #-3224] + str r3, [r4, #-3356] + ldr r3, [r4, #-3220] + str r3, [r4, #-3364] + ldr r3, [r4, #-3216] + str r3, [r4, #-3348] + ldr r3, [r4, #-3208] + str r3, [r4, #-3320] + ldr r3, [r4, #-3204] + str r3, [r4, #-3600] + ldr r3, [r4, #-3200] + str r3, [r4, #-3360] + ldr r3, [r4, #-3196] + str r3, [r4, #-3352] + ldr r3, [r4, #-3192] + str r3, [r4, #-3312] + ldr r3, [r4, #-3188] + str r3, [r4, #-3308] + ldr r3, [r4, #-3176] + str r3, [r4, #-2724] +.L2740: + ldr r1, [r4, #-3168] mov r3, #0 - ldr r2, .L2809+8 + ldr r2, .L2744+8 str r3, [r4, #-564] + ldr r5, .L2744+12 cmp r1, r2 - ldr r5, .L2809+12 - bne .L2806 - ldrb r2, [r5, #144] @ zero_extendqisi2 + bne .L2741 + ldrb r2, [r5, #152] @ zero_extendqisi2 cmp r2, r3 - beq .L2807 - ldr r2, .L2809 - str r3, [r2, #-3164] + beq .L2742 + str r3, [r4, #-3168] bl Ftl_save_ext_data - b .L2806 -.L2807: - ldr r0, .L2809+16 - mov r3, #1 - ldr r1, .L2809+20 - str r3, [r5, #2244] - bl printk -.L2806: - movw r3, #2380 +.L2741: + movw r3, #2382 ldr r0, [r4, #-3324] ldrh r2, [r5, r3] + movw r1, #2332 ldr r3, [r4, #-3320] + ldrh r1, [r5, r1] mla r0, r0, r2, r3 - movw r3, #2328 - ldrh r1, [r5, r3] bl __aeabi_uidiv str r0, [r4, #-3316] - ldmfd sp!, {r3, r4, r5, pc} -.L2810: + pop {r4, r5, r6, pc} +.L2742: + mov r3, #1 + ldr r1, .L2744+16 + ldr r0, .L2744+20 + str r3, [r5, #2248] + bl printk + b .L2741 +.L2745: .align 2 -.L2809: +.L2744: .word .LANCHOR2 .word 1179929683 .word 305432421 .word .LANCHOR0 - .word .LC76 .word .LC138 + .word .LC77 .fnend .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 .global FtlMapBlkWriteDumpData + .syntax unified + .arm + .fpu softvfp .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + ldr r3, [r0, #36] + cmp r3, #0 + bxeq lr + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - ldr r2, [r0, #36] - ldrh r5, [r0, #6] - cmp r2, #0 - ldr r3, [r0, #24] - ldmeqfd sp!, {r4, r5, r6, pc} - ldr r4, .L2818 mov r2, #0 + ldr r4, .L2756 str r2, [r0, #36] - ldr r2, [r4, #-3616] + ldr r2, [r4, #-3612] + ldrh r5, [r0, #6] + ldr r3, [r0, #24] cmp r2, #0 - ldmnefd sp!, {r4, r5, r6, pc} - sub r5, r5, #1 + popne {r4, r5, r6, pc} mov r6, r0 ldr r2, [r4, #-500] ldr r0, [r4, #-520] + sub r5, r5, #1 uxth r5, r5 - str r2, [r4, #1764] - str r0, [r4, #1760] - ldr r3, [r3, r5, asl #2] + str r2, [r4, #1772] + str r0, [r4, #1768] + ldr r3, [r3, r5, lsl #2] cmp r3, #0 - str r3, [r4, #1756] - beq .L2815 - mov r1, #1 - ldr r0, .L2818+4 - mov r2, r1 + str r3, [r4, #1764] + beq .L2750 + mov r2, #1 + add r0, r4, #1760 + mov r1, r2 bl FlashReadPages - b .L2816 -.L2815: - ldr r2, .L2818+8 - movw r3, #2398 - mov r1, #255 - ldrh r2, [r2, r3] - bl ftl_memset -.L2816: - mov r0, r6 +.L2751: + ldr r2, [r4, #1768] mov r1, r5 - ldr r2, [r4, #1760] - ldmfd sp!, {r4, r5, r6, lr} + mov r0, r6 + pop {r4, r5, r6, lr} b FtlMapWritePage -.L2819: +.L2750: + ldr r3, .L2756+4 + mov r1, #255 + ldrh r2, [r3] + bl ftl_memset + b .L2751 +.L2757: .align 2 -.L2818: +.L2756: .word .LANCHOR2 - .word .LANCHOR2+1752 - .word .LANCHOR0 + .word .LANCHOR0+2400 .fnend .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 2 .global FlashReadFacBbtData + .syntax unified + .arm + .fpu softvfp .type FlashReadFacBbtData, %function FlashReadFacBbtData: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2835 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r8, r2 - ldrh r2, [r3, #128] + ldr r2, .L2771 .pad #40 sub sp, sp, #40 - ldrh r3, [r3, #130] mov r5, r0 - ldr r9, .L2835+4 mov r7, r1 - smulbb r3, r2, r3 - ldr r2, [r9, #1688] - str r2, [sp, #12] - ldr r2, [r9, #1720] + ldr r9, .L2771+4 + ldrh r3, [r2, #138] + ldrh r2, [r2, #136] + smulbb r3, r3, r2 + ldr r2, [r9, #1696] uxth r3, r3 + str r2, [sp, #12] + ldr r2, [r9, #1728] sub r6, r3, #1 - sub r4, r3, #16 - mul r10, r3, r1 + mul r10, r1, r3 uxth r6, r6 + sub r4, r3, #16 str r2, [sp, #16] -.L2821: +.L2759: cmp r6, r4 - ble .L2834 - mov r1, #1 + mvnle r0, #0 + ble .L2758 +.L2765: add r3, r6, r10 + mov r2, #1 + lsl r3, r3, #10 + mov r1, r2 add r0, sp, #4 - mov r2, r1 - mov r3, r3, asl #10 str r3, [sp, #8] bl FlashReadPages ldr r3, [sp, #4] cmn r3, #1 - beq .L2822 - ldr r3, [r9, #1720] + beq .L2760 + ldr r3, [r9, #1728] ldrh r2, [r3] movw r3, #61664 cmp r2, r3 - bne .L2822 + bne .L2760 cmp r5, #0 moveq r0, r5 - beq .L2823 + beq .L2758 cmp r7, #0 - ldreq ip, .L2835+4 + moveq r1, r7 moveq lr, #1 - beq .L2824 -.L2826: - ldr r1, [r9, #1688] + beq .L2763 +.L2762: mov r2, r8 + ldr r1, [r9, #1696] mov r0, r5 bl ftl_memcpy - mov r2, #4 - ldr r0, .L2835+8 + mov r3, #4 + ldr r0, .L2771+8 + mov r2, r3 mov r1, r5 - mov r3, r2 bl rknand_print_hex mov r0, #0 - b .L2823 -.L2824: - ldr r2, [r9, #1708] - uxth r3, r7 - add r7, r7, #1 - cmp r3, r2 - bcs .L2826 - ldr r1, [ip, #1688] - mov r0, r3, lsr #5 - and r4, r3, #31 - ldr r2, [r1, r0, asl #2] - orr r4, r2, lr, asl r4 - str r4, [r1, r0, asl #2] - b .L2824 -.L2822: - sub r6, r6, #1 - uxth r6, r6 - b .L2821 -.L2834: - mvn r0, #0 -.L2823: +.L2758: add sp, sp, #40 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L2836: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2764: + ldr r0, [r9, #1696] + lsr ip, r3, #5 + and r3, r3, #31 + ldr r2, [r0, ip, lsl #2] + orr r3, r2, lr, lsl r3 + str r3, [r0, ip, lsl #2] +.L2763: + ldr r0, [r9, #1716] + uxth r3, r1 + add r1, r1, #1 + cmp r3, r0 + bcc .L2764 + b .L2762 +.L2760: + sub r6, r6, #1 + uxth r6, r6 + b .L2759 +.L2772: .align 2 -.L2835: +.L2771: .word .LANCHOR0 .word .LANCHOR2 .word .LC139 @@ -16989,378 +17482,371 @@ .size FlashReadFacBbtData, .-FlashReadFacBbtData .align 2 .global FlashGetBadBlockList + .syntax unified + .arm + .fpu softvfp .type FlashGetBadBlockList, %function FlashGetBadBlockList: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2848 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, .L2784 + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} mov r5, r0 - ldr r3, [r3, #44] - ldr r6, .L2848+4 + ldr r6, .L2784+4 + ldr r3, [r3, #48] + ldr r0, [r6, #1724] ldrb r4, [r3, #13] @ zero_extendqisi2 ldrh r3, [r3, #14] - ldr r0, [r6, #1716] smulbb r4, r4, r3 uxth r4, r4 add r2, r4, #7 - mov r2, r2, asr #3 + asr r2, r2, #3 bl FlashReadFacBbtData cmn r0, #1 - bne .L2838 -.L2842: + bne .L2774 +.L2778: mov r3, #0 - b .L2839 -.L2838: - mov lr, r4, lsr #4 - mov ip, #0 - sub r4, r4, #1 - mov r3, ip - mov r7, #1 -.L2840: - uxth r0, ip - cmp r0, r4 - bge .L2839 - ldr r8, [r6, #1716] - mov r1, r0, lsr #5 - and r2, r0, #31 - add ip, ip, #1 - ldr r1, [r8, r1, asl #2] - ands r2, r1, r7, asl r2 - addne r2, r3, #1 - movne r3, r3, asl #1 - strneh r0, [r5, r3] @ movhi - uxthne r3, r2 - cmp r3, lr - bcc .L2840 - b .L2842 -.L2839: - mov r3, r3, asl #1 +.L2775: + lsl r3, r3, #1 mvn r2, #0 mov r0, #0 strh r2, [r5, r3] @ movhi - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2849: + pop {r4, r5, r6, r7, r8, pc} +.L2774: + mov r2, #0 + lsr lr, r4, #4 + mov r3, r2 + sub r4, r4, #1 + mov r7, #1 +.L2776: + uxth r1, r2 + cmp r1, r4 + bge .L2775 + ldr r8, [r6, #1724] + lsr ip, r1, #5 + and r0, r1, #31 + add r2, r2, #1 + ldr ip, [r8, ip, lsl #2] + ands r0, ip, r7, lsl r0 + addne r0, r3, #1 + lslne r3, r3, #1 + strhne r1, [r5, r3] @ movhi + uxthne r3, r0 + cmp r3, lr + bcc .L2776 + b .L2778 +.L2785: .align 2 -.L2848: +.L2784: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 .global FtlMakeBbt + .syntax unified + .arm + .fpu softvfp .type FtlMakeBbt, %function FtlMakeBbt: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r4, .L2874 - ldr r5, [r4, #-3616] - cmp r5, #0 - bne .L2851 + ldr r4, .L2807 + ldr r8, [r4, #-3612] + cmp r8, #0 + bne .L2787 + ldr r9, .L2807+4 bl FtlBbtMemInit - ldr r7, .L2874+4 bl FtlLoadFactoryBbt - sub r9, r7, #18 - sub r10, r7, #94 -.L2852: - ldr r3, .L2874+8 - ldr r6, .L2874+12 + sub r10, r9, #18 + sub r5, r9, #28 +.L2788: + ldr r3, .L2807+8 + ldr r6, .L2807+12 ldrh r3, [r3] - cmp r5, r3 - bcs .L2871 - ldrh r3, [r9, #2]! + cmp r8, r3 + bcc .L2794 + ldr r8, .L2807+16 + mov r7, #0 +.L2795: + ldrh r3, [r8] + uxth r0, r7 + add r7, r7, #1 + cmp r3, r0 + bhi .L2796 + ldrh r7, [r5, #12] + movw r8, #65535 + sub r7, r7, #1 + uxth r7, r7 +.L2797: + ldrh r3, [r5, #12] + sub r3, r3, #48 + cmp r7, r3 + ble .L2801 + mov r0, r7 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L2798 + mov r0, r7 + bl FlashTestBlk + cmp r0, #0 + beq .L2799 + mov r0, r7 + bl FtlBbmMapBadBlock +.L2798: + sub r7, r7, #1 + uxth r7, r7 + b .L2797 +.L2794: + ldr r3, [r4, #-500] movw r2, #65535 ldr r0, [r4, #-524] - ldr fp, [r4, #-500] + ldr fp, .L2807+20 + str r3, [sp, #4] + str r3, [r4, #1772] + ldrh r3, [r10, #2]! + str r0, [r4, #1768] cmp r3, r2 - ldr r8, .L2874 - str r0, [r4, #1760] - str fp, [r4, #1764] - beq .L2853 - ldrh ip, [r10] - mov r1, #1 - mov r2, r1 - ldr r0, .L2874+16 - mla ip, ip, r5, r3 - mov r3, ip, asl #10 - str ip, [sp, #4] - str r3, [r8, #1756] + beq .L2789 + ldrh r7, [fp] + mov r2, #1 + mov r1, r2 + ldr r0, .L2807+24 + mla r7, r8, r7, r3 + lsl r3, r7, #10 + str r3, [r4, #1764] bl FlashReadPages - ldrh r2, [r10] - ldr r0, [r7] + ldrh r2, [fp] + ldr r1, [r4, #1768] + ldr r0, [r9] add r2, r2, #7 - ldr r1, [r8, #1760] - mov r2, r2, asr #3 + asr r2, r2, #3 bl ftl_memcpy - ldr ip, [sp, #4] - b .L2854 -.L2853: - mov r1, r5 - sub r8, r8, #436 +.L2790: + uxth r0, r7 + add r8, r8, #1 + add r9, r9, #4 + bl FtlBbmMapBadBlock + b .L2788 +.L2789: + mov r1, r8 bl FlashGetBadBlockList - ldr r0, [r8, #2196] - ldr r1, [r7] + ldr r1, [r9] + ldr r0, [r4, #1768] bl FtlBbt2Bitmap - ldrh r6, [r10] + ldrh r6, [fp] +.L2792: sub r6, r6, #1 uxth r6, r6 -.L2855: - ldrh r0, [r10] - smlabb r0, r0, r5, r6 +.L2791: + ldrh r0, [fp] + smlabb r0, r0, r8, r6 uxth r0, r0 bl FtlBbmIsBadBlock cmp r0, #1 - subeq r6, r6, #1 - uxtheq r6, r6 - beq .L2855 -.L2872: - mov r1, #0 + beq .L2792 mov r2, #16 - strh r6, [r9] @ movhi + mov r1, #0 + strh r6, [r10] @ movhi ldr r0, [r4, #-500] bl ftl_memset - ldr r3, .L2874+20 - strh r3, [fp] @ movhi + ldr r3, [sp, #4] + movw r2, 61664 @ movhi + strh r2, [r3] @ movhi mov r3, #0 - str r3, [fp, #4] - ldrh r3, [r9] - ldrh ip, [r10] - ldrh r2, [r8] - strh r3, [fp, #2] @ movhi - ldrh r3, [r9] - ldr r1, [r7] - mov r2, r2, asl #2 - ldr r0, [r4, #1760] - mla ip, ip, r5, r3 - mov r3, ip, asl #10 - str r3, [r4, #1756] - str ip, [sp, #4] + ldr r2, [sp, #4] + ldrh r7, [fp] + str r3, [r2, #4] + ldrh r3, [r10] + strh r3, [r2, #2] @ movhi + ldrh r3, [r10] + ldr r1, [r9] + ldr r0, [r4, #1768] + mla r7, r8, r7, r3 + lsl r3, r7, #10 + str r3, [r4, #1764] + ldr r3, .L2807+28 + ldrh r2, [r3] + lsl r2, r2, #2 bl ftl_memcpy - mov r1, #1 - ldr r0, .L2874+16 - mov r2, r1 + mov r2, #1 + ldr r0, .L2807+24 + mov r1, r2 bl FlashEraseBlocks - mov r1, #1 - mov r3, r1 - ldr r0, .L2874+16 - mov r2, r1 + mov r3, #1 + ldr r0, .L2807+24 + mov r2, r3 + mov r1, r3 bl FlashProgPages - ldr r3, [r4, #1752] + ldr r3, [r4, #1760] cmn r3, #1 - ldr ip, [sp, #4] - bne .L2854 - uxth r0, ip + bne .L2790 + uxth r0, r7 bl FtlBbmMapBadBlock - b .L2855 -.L2854: - uxth r0, ip - add r5, r5, #1 + b .L2791 +.L2796: bl FtlBbmMapBadBlock - add r7, r7, #4 - b .L2852 -.L2871: - ldr r7, .L2874+24 - mov r5, #0 -.L2859: - ldrh r3, [r7] - uxth r0, r5 - add r5, r5, #1 - cmp r3, r0 - bls .L2873 - bl FtlBbmMapBadBlock - b .L2859 -.L2873: - ldr r7, .L2874+28 - movw r9, #65535 - ldrh r5, [r7, #12] - mov r8, r7 - sub r5, r5, #1 - uxth r5, r5 -.L2861: - ldrh r3, [r7, #12] - sub r3, r3, #48 - cmp r5, r3 - ble .L2865 - mov r0, r5 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L2862 - mov r0, r5 - bl FlashTestBlk - cmp r0, #0 - beq .L2863 - mov r0, r5 - bl FtlBbmMapBadBlock - b .L2862 -.L2863: - ldrh r3, [r8] - cmp r3, r9 - streqh r5, [r8] @ movhi -.L2864: - ldrne r3, .L2874+28 - strneh r5, [r3, #4] @ movhi - bne .L2865 -.L2862: - sub r5, r5, #1 - uxth r5, r5 - b .L2861 -.L2865: - movw r5, #2452 - ldr r0, [r4, #-3612] - ldrh r3, [r6, r5] + b .L2795 +.L2799: + ldrh r3, [r5] + cmp r3, r8 + strheq r7, [r5] @ movhi + beq .L2798 +.L2800: + strh r7, [r5, #4] @ movhi +.L2801: + movw r7, #2456 + ldr r0, [r4, #-3608] + ldrh r3, [r6, r7] mov r8, #0 - str r8, [r6, #2460] + str r8, [r6, #2464] mov r2, #2 mov r1, #1 - strh r8, [r7, #2] @ movhi - mov r3, r3, asl #10 + strh r8, [r5, #2] @ movhi + lsl r3, r3, #10 str r3, [r0, #4] - ldrh r3, [r7, #4] - mov r3, r3, asl #10 + ldrh r3, [r5, #4] + lsl r3, r3, #10 str r3, [r0, #40] bl FlashEraseBlocks - ldrh r0, [r6, r5] + ldrh r0, [r6, r7] bl FtlBbmMapBadBlock - ldrh r0, [r7, #4] + ldrh r0, [r5, #4] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldr r3, [r6, #2460] - ldrh r2, [r7, #4] + ldr r3, [r6, #2464] + ldrh r2, [r5, #4] + strh r8, [r5, #2] @ movhi add r3, r3, #1 - str r3, [r6, #2460] - ldrh r3, [r6, r5] - strh r8, [r7, #2] @ movhi - strh r2, [r6, r5] @ movhi - strh r3, [r7, #4] @ movhi + str r3, [r6, #2464] + ldrh r3, [r6, r7] + strh r2, [r6, r7] @ movhi + strh r3, [r5, #4] @ movhi bl FtlBbmTblFlush -.L2851: +.L2787: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2875: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2808: .align 2 -.L2874: +.L2807: .word .LANCHOR2 - .word .LANCHOR0+2480 - .word .LANCHOR0+2342 + .word .LANCHOR0+2484 + .word .LANCHOR0+2346 .word .LANCHOR0 - .word .LANCHOR2+1752 - .word -3872 - .word .LANCHOR0+2402 - .word .LANCHOR0+2452 + .word .LANCHOR0+2404 + .word .LANCHOR0+2388 + .word .LANCHOR2+1760 + .word .LANCHOR2-436 .fnend .size FtlMakeBbt, .-FtlMakeBbt .align 2 .global log2phys + .syntax unified + .arm + .fpu softvfp .type log2phys, %function log2phys: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - movw r3, #2396 - ldr r7, .L2893 - ldrh r10, [r7, r3] - ldr r3, [r7, #2448] + .pad #20 + sub sp, sp, #20 + ldr r8, .L2825 + ldr r3, [r8, #2452] cmp r0, r3 - bcs .L2877 - add r10, r10, #7 - ldr fp, .L2893+4 - mov r5, r0, lsr r10 - movw r3, #2426 - str r2, [sp, #4] - mov r9, r1 - mov r6, r7 - str r0, [sp] - uxth r5, r5 - ldrh r2, [r7, r3] - ldr r8, [fp, #-3380] - mov r4, #0 - mov r1, #12 - b .L2878 -.L2877: + bcs .L2810 + movw r3, #2398 + mov r10, r0 + ldrh r0, [r8, r3] + mov r5, #12 + ldr r4, .L2825+4 + str r1, [sp, #8] + add r3, r0, #7 + str r2, [sp, #12] + lsr r6, r10, r3 + ldr fp, [r4, #-3376] + str r3, [sp, #4] + movw r3, #2430 + uxth r9, r6 + ldrh r1, [r8, r3] + mov r3, #0 +.L2811: + uxth r7, r3 + cmp r7, r1 + bcc .L2816 + bl select_l2p_ram_region + mul r5, r5, r0 + movw r2, #65535 + mov r7, r0 + ldrh r1, [fp, r5] + add r3, fp, r5 + cmp r1, r2 + beq .L2817 + ldr r3, [r3, #4] + cmp r3, #0 + bge .L2817 + bl flush_l2p_region +.L2817: + ldr r3, [r4, #-452] + uxth r6, r6 + ldr fp, [r3, r6, lsl #2] + cmp fp, #0 + bne .L2818 + ldr r0, [r4, #-3376] + mov r1, #255 + ldr r2, .L2825+8 + add r0, r0, r5 + ldrh r2, [r2] + ldr r0, [r0, #8] + bl ftl_memset + ldr r2, [r4, #-3376] + strh r9, [r2, r5] @ movhi + ldr r2, [r4, #-3376] + add r5, r2, r5 + str fp, [r5, #4] + b .L2813 +.L2810: cmp r2, #0 mvn r0, #0 streq r0, [r1] - b .L2879 -.L2883: - add r4, r4, #1 - mla r0, r1, r4, r8 +.L2809: + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2816: + add r3, r3, #1 + mla r0, r5, r3, fp ldrh r0, [r0, #-12] - cmp r0, r5 - beq .L2880 -.L2878: - uxth r7, r4 - cmp r7, r2 - bcc .L2883 - bl select_l2p_ram_region - mov r4, #12 - movw r3, #65535 - mul r4, r4, r0 - mov r7, r0 - add r2, r8, r4 - ldrh r1, [r8, r4] - cmp r1, r3 - bne .L2892 -.L2884: - ldr r3, [fp, #-452] - ldr r8, .L2893+4 - ldr fp, [r3, r5, asl #2] - cmp fp, #0 - bne .L2885 - ldr r3, [r8, #-3380] - mov r1, #255 - add r3, r3, r4 - ldr r0, [r3, #8] - movw r3, #2398 - ldrh r2, [r6, r3] - bl ftl_memset - ldr r3, [r8, #-3380] - strh r5, [r3, r4] @ movhi - ldr r3, [r8, #-3380] - add r4, r3, r4 - str fp, [r4, #4] -.L2880: - ldr r2, [sp] - mvn r3, #0 - mov r6, #12 - bic r10, r2, r3, asl r10 + cmp r0, r9 + bne .L2811 +.L2813: ldr r3, [sp, #4] - ldr r2, .L2893+4 - cmp r3, #0 + mvn r0, #0 + ldr r1, .L2825+4 + bic r10, r10, r0, lsl r3 + ldr r3, [sp, #12] uxth r10, r10 - bne .L2881 - ldr r3, [r2, #-3380] - mla r6, r6, r7, r3 - ldr r3, [r6, #8] - ldr r3, [r3, r10, asl #2] - str r3, [r9] - b .L2882 -.L2881: - mul r6, r6, r7 - ldr r3, [r2, #-3380] - ldr r1, [r9] - add r3, r3, r6 + cmp r3, #0 + mov r3, #12 + bne .L2814 + ldr r2, [r1, #-3376] + mla r3, r3, r7, r2 + ldr r2, [sp, #8] ldr r3, [r3, #8] - str r1, [r3, r10, asl #2] - ldr r3, [r2, #-3380] - add r6, r3, r6 - ldr r3, [r6, #4] - orr r3, r3, #-2147483648 - str r3, [r6, #4] - sub r3, r2, #3376 - strh r5, [r3] @ movhi -.L2882: - ldr r2, [r2, #-3380] + ldr r3, [r3, r10, lsl #2] + str r3, [r2] +.L2815: + ldr r2, [r1, #-3376] mov r3, #12 mov r0, #0 mla r7, r3, r7, r2 @@ -17368,1841 +17854,1868 @@ cmn r3, #1 addne r3, r3, #1 strne r3, [r7, #4] - b .L2879 -.L2892: - ldr r3, [r2, #4] - cmp r3, #0 - bge .L2884 - bl flush_l2p_region - b .L2884 -.L2885: - ldr r3, [r8, #-3380] - mov r1, #1 - ldr r0, .L2893+8 - mov r2, r1 - add r3, r3, r4 - str fp, [r8, #1756] - ldr r3, [r3, #8] - str r3, [r8, #1760] - ldr r3, [r8, #-500] - str r3, [r8, #1764] + b .L2809 +.L2814: + ldr r2, [sp, #8] + mul r3, r3, r7 + ldr r0, [r2] + ldr r2, [r4, #-3376] + add r2, r2, r3 + ldr r2, [r2, #8] + str r0, [r2, r10, lsl #2] + ldr r2, [r4, #-3376] + add r3, r2, r3 + ldr r2, [r3, #4] + orr r2, r2, #-2147483648 + str r2, [r3, #4] + sub r3, r1, #3360 + strh r9, [r3, #-12] @ movhi + b .L2815 +.L2818: + ldr r2, [r4, #-3376] + ldr r0, .L2825+12 + str fp, [r4, #1764] + add r2, r2, r5 + ldr r2, [r2, #8] + str r2, [r4, #1768] + ldr r2, [r4, #-500] + str r2, [r4, #1772] + mov r2, #1 + mov r1, r2 bl FlashReadPages - ldr r3, [r8, #1764] - ldrh r3, [r3, #8] - cmp r3, r5 - beq .L2886 - mov r1, r5 + ldr r2, [r4, #1772] + ldrh r2, [r2, #8] + cmp r2, r9 + beq .L2819 mov r2, fp - ldr r0, .L2893+12 + mov r1, r6 + ldr r0, .L2825+16 bl printk - mov r2, #4 - mov r3, r2 - ldr r0, .L2893+16 - ldr r1, [r8, #1764] + mov r3, #4 + ldr r1, [r4, #1772] + mov r2, r3 + ldr r0, .L2825+20 bl rknand_print_hex - movw r3, #2424 - ldrh r3, [r6, r3] + movw r3, #2428 mov r2, #4 - ldr r0, .L2893+20 - ldr r1, [r8, #-452] + ldrh r3, [r8, r3] + ldr r1, [r4, #-452] + ldr r0, .L2825+24 bl rknand_print_hex mov r3, #1 - str r3, [r8, #-3616] - b .L2887 -.L2886: - ldr r3, [r8, #1752] - cmp r3, #256 - bne .L2887 - mov r1, r5 + str r3, [r4, #-3612] +.L2820: + ldr r3, .L2825+4 + mov r1, #0 + ldr r3, [r3, #-3376] + add r2, r3, r5 + str r1, [r2, #4] + strh r9, [r3, r5] @ movhi + b .L2813 +.L2819: + ldr r2, [r4, #1760] + cmp r2, #256 + bne .L2820 mov r2, fp - ldr r0, .L2893+24 + mov r1, r6 + ldr r0, .L2825+28 bl printk - ldr r3, [r8, #-3380] - sub r0, r8, #432 - mov r1, r5 - add r3, r3, r4 + ldr r3, [r4, #-3376] + mov r1, r6 + ldr r0, .L2825+32 + add r3, r3, r5 ldr r2, [r3, #8] bl FtlMapWritePage -.L2887: - ldr r3, .L2893+4 - mov r1, #0 - ldr r3, [r3, #-3380] - add r2, r3, r4 - str r1, [r2, #4] - strh r5, [r3, r4] @ movhi - b .L2880 -.L2879: - add sp, sp, #12 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2894: + b .L2820 +.L2826: .align 2 -.L2893: +.L2825: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2+1752 + .word .LANCHOR0+2400 + .word .LANCHOR2+1760 .word .LC140 .word .LC101 .word .LC141 .word .LC142 + .word .LANCHOR2-432 .fnend .size log2phys, .-log2phys .align 2 .global FtlWriteDumpData + .syntax unified + .arm + .fpu softvfp .type FtlWriteDumpData, %function FtlWriteDumpData: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #44 sub sp, sp, #44 - ldr r4, .L2915 - ldr r3, [r4, #-3616] + ldr r4, .L2846 + ldr r3, [r4, #-3612] cmp r3, #0 - bne .L2895 - ldr r3, .L2915+4 - ldrh r2, [r3, #4] + bne .L2827 + sub r6, r4, #3520 + ldrh r2, [r6, #4] cmp r2, #0 - beq .L2897 - ldrb r3, [r4, #-3516] @ zero_extendqisi2 + beq .L2829 + ldrb r3, [r4, #-3512] @ zero_extendqisi2 cmp r3, #0 - bne .L2897 - ldr r8, .L2915+8 - movw r3, #2388 - ldrb r1, [r4, #-3517] @ zero_extendqisi2 + bne .L2829 + ldr r8, .L2846+4 + movw r3, #2390 + ldrb r1, [r4, #-3513] @ zero_extendqisi2 ldrh r3, [r8, r3] mul r3, r3, r1 cmp r2, r3 - beq .L2897 - ldrb r9, [r4, #-3514] @ zero_extendqisi2 - add r3, r8, #2320 - ldr r6, [r8, #2448] - cmp r9, #0 - ldrh r7, [r3] - bne .L2895 - sub r6, r6, #1 + beq .L2829 + ldrb r10, [r4, #-3510] @ zero_extendqisi2 + cmp r10, #0 + bne .L2827 + ldr r7, [r8, #2452] + movw r3, #2324 + mov r2, r10 mov r1, sp - mov r2, r9 - mov r0, r6 + ldrh r9, [r8, r3] + sub r7, r7, #1 + mov r0, r7 bl log2phys + ldr r3, [sp] ldr r5, [r4, #-500] ldr r0, [r4, #-524] - ldr r3, [sp] - str r6, [sp, #20] cmn r3, #1 - str r0, [sp, #12] str r3, [sp, #8] + str r7, [sp, #20] + str r0, [sp, #12] str r5, [sp, #16] - str r9, [r5, #4] - beq .L2899 + str r10, [r5, #4] + beq .L2831 + mov r2, r10 mov r1, #1 - mov r2, r9 add r0, sp, #4 bl FlashReadPages - b .L2900 -.L2899: - movw r3, #2398 - mov r1, #255 - ldrh r2, [r8, r3] - bl ftl_memset -.L2900: - ldr fp, .L2915+4 - mov r7, r7, asl #2 - ldr r3, .L2915+12 +.L2832: + ldr r10, .L2846+8 mov r8, #0 - ldr r9, .L2915 - mov r10, fp + ldr r3, .L2846+12 + lsl r9, r9, #2 + mov fp, r8 strh r3, [r5] @ movhi -.L2901: - cmp r8, r7 - beq .L2902 - ldrh r3, [fp, #4] +.L2833: + cmp r9, r8 + bne .L2837 +.L2834: + mov r3, #1 +.L2845: + strb r3, [r4, #-3510] +.L2827: + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2831: + add r8, r8, #2400 + mov r1, #255 + ldrh r2, [r8] + bl ftl_memset + b .L2832 +.L2837: + ldrh r3, [r6, #4] cmp r3, #0 - beq .L2902 + beq .L2834 ldr r3, [sp, #8] + mov r0, r10 + str r7, [r5, #8] add r8, r8, #1 - str r6, [r5, #8] - ldr r0, .L2915+4 str r3, [r5, #12] - ldrh r3, [fp] + ldrh r3, [r6] strh r3, [r5, #2] @ movhi bl get_new_active_ppa - ldr r3, [r9, #-3328] - mov r2, #0 + ldr r3, [r4, #-3328] mov r1, #1 str r0, [sp, #8] add r0, sp, #4 str r3, [r5, #4] add r3, r3, #1 cmn r3, #1 - moveq r3, #0 - str r3, [r9, #-3328] - mov r3, r2 - bl FlashProgPages - ldrh r0, [r10] - bl decrement_vpc_count - b .L2901 -.L2902: - mov r3, #1 - b .L2914 -.L2897: + moveq r3, fp + str r3, [r4, #-3328] mov r3, #0 -.L2914: - strb r3, [r4, #-3514] -.L2895: - add sp, sp, #44 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2916: + mov r2, r3 + bl FlashProgPages + ldrh r0, [r6] + bl decrement_vpc_count + b .L2833 +.L2829: + mov r3, #0 + b .L2845 +.L2847: .align 2 -.L2915: +.L2846: .word .LANCHOR2 - .word .LANCHOR2-3524 .word .LANCHOR0 + .word .LANCHOR2-3520 .word -3947 .fnend .size FtlWriteDumpData, .-FtlWriteDumpData .align 2 .global l2p_flush + .syntax unified + .arm + .fpu softvfp .type l2p_flush, %function l2p_flush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - bl FtlWriteDumpData + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r4, #0 - ldr r5, .L2923 + ldr r5, .L2853 mov r7, #12 - ldr r6, .L2923+4 -.L2918: + ldr r6, .L2853+4 + bl FtlWriteDumpData +.L2849: ldrh r3, [r5] uxth r0, r4 cmp r3, r0 - bls .L2922 - ldr r3, [r6, #-3380] - mla r3, r7, r0, r3 + bhi .L2851 + mov r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L2851: + ldr r2, [r6, #-3376] + uxth r3, r4 + mla r3, r7, r3, r2 ldr r3, [r3, #4] cmp r3, #0 - bge .L2919 + bge .L2850 bl flush_l2p_region -.L2919: +.L2850: add r4, r4, #1 - b .L2918 -.L2922: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2924: + b .L2849 +.L2854: .align 2 -.L2923: - .word .LANCHOR0+2426 +.L2853: + .word .LANCHOR0+2430 .word .LANCHOR2 .fnend .size l2p_flush, .-l2p_flush .align 2 .global allocate_new_data_superblock + .syntax unified + .arm + .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 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldr r5, .L2952 - ldrh r6, [r0] - ldr r3, [r5, #-3616] + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r4, .L2882 + ldr r3, [r4, #-3612] cmp r3, #0 - bne .L2926 + bne .L2856 + ldrh r5, [r0] movw r3, #65535 - cmp r6, r3 - mov r4, r0 - beq .L2927 - ldr r2, [r5, #-3544] - mov r3, r6, asl #1 - mov r0, r6 + mov r7, r0 + cmp r5, r3 + beq .L2857 + ldr r2, [r4, #-3540] + lsl r3, r5, #1 + mov r0, r5 ldrh r3, [r2, r3] cmp r3, #0 - beq .L2928 + beq .L2858 bl INSERT_DATA_LIST - b .L2927 -.L2928: - bl INSERT_FREE_LIST -.L2927: +.L2857: + ldr r2, .L2882+4 mov r3, #0 - strb r3, [r4, #8] - ldr r3, .L2952+4 - cmp r4, r3 - beq .L2929 - ldr r3, .L2952+8 - movw r2, #2340 - ldrh r2, [r3, r2] - cmp r2, #1 - beq .L2929 - ldrb r1, [r3, #144] @ zero_extendqisi2 - cmp r1, #0 - beq .L2930 -.L2929: + strb r3, [r7, #8] + cmp r7, r2 + beq .L2859 + ldr r3, .L2882+8 + movw r1, #2344 + ldrh r1, [r3, r1] + cmp r1, #1 + beq .L2859 + ldrb r0, [r3, #152] @ zero_extendqisi2 + cmp r0, #0 + beq .L2860 +.L2859: mov r3, #1 - strb r3, [r4, #8] - b .L2931 -.L2930: - ldr r1, .L2952+12 - cmp r4, r1 - bne .L2931 - cmp r2, #3 - beq .L2933 - ldr r2, .L2952 - ldr r2, [r2, #-3236] - cmp r2, #1 - bne .L2934 -.L2933: - mov r2, #1 - strb r2, [r5, #-3516] -.L2934: - ldr r3, [r3, #2244] - cmp r3, #0 - beq .L2931 - ldr r3, [r5, #-3308] - cmp r3, #39 - ldrls r3, .L2952 - movls r2, #1 - strlsb r2, [r3, #-3516] -.L2931: - ldr r2, .L2952 - movw r1, #65535 - sub r3, r2, #380 + strb r3, [r7, #8] +.L2861: + ldr r3, .L2882+12 + movw r2, #65535 ldrh r0, [r3] - mov r5, r3 - cmp r0, r1 - beq .L2936 - cmp r6, r0 - bne .L2937 - ldr r2, [r2, #-3544] - mov r3, r0, asl #1 + mov r6, r3 + cmp r0, r2 + beq .L2866 + cmp r5, r0 + bne .L2867 + ldr r2, [r4, #-3540] + lsl r3, r0, #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L2938 -.L2937: + beq .L2868 +.L2867: bl update_vpc_list -.L2938: +.L2868: mvn r3, #0 - strh r3, [r5] @ movhi -.L2936: - mov r0, r4 + strh r3, [r6] @ movhi +.L2866: + mov r0, r7 bl allocate_data_superblock bl l2p_flush mov r0, #0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2926: +.L2856: mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L2953: + pop {r4, r5, r6, r7, r8, pc} +.L2858: + bl INSERT_FREE_LIST + b .L2857 +.L2860: + sub r2, r2, #48 + cmp r7, r2 + bne .L2861 + cmp r1, #3 + beq .L2863 + ldr r2, [r4, #-2724] + cmp r2, #1 + bne .L2864 +.L2863: + mov r2, #1 + strb r2, [r4, #-3512] +.L2864: + ldr r3, [r3, #2248] + cmp r3, #0 + beq .L2861 + ldr r3, [r4, #-3308] + cmp r3, #39 + movls r3, #1 + strbls r3, [r4, #-3512] + b .L2861 +.L2883: .align 2 -.L2952: +.L2882: .word .LANCHOR2 - .word .LANCHOR2-3476 + .word .LANCHOR2-3472 .word .LANCHOR0 - .word .LANCHOR2-3524 + .word .LANCHOR2-380 .fnend .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 2 .global FtlCheckVpc + .syntax unified + .arm + .fpu softvfp .type FtlCheckVpc, %function FtlCheckVpc: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + 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 r4, #0 - ldr r1, .L2977 - ldr r0, .L2977+4 + ldr r6, .L2905 + ldr r5, .L2905+4 + ldr r1, .L2905+8 + ldr r0, .L2905+12 bl printk - ldr r0, .L2977+8 - mov r1, #0 mov r2, #8192 + mov r1, #0 + ldr r0, .L2905+4 bl memset - ldr r6, .L2977+12 - ldr r5, .L2977+8 -.L2955: - ldr r3, [r6, #2448] +.L2885: + ldr r3, [r6, #2452] cmp r4, r3 - bcs .L2975 - mov r0, r4 - add r1, sp, #4 - mov r2, #0 - bl log2phys - ldr r0, [sp, #4] - cmn r0, #1 - beq .L2956 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - mov r0, r0, asl #1 - ldrh r3, [r5, r0] - add r3, r3, #1 - strh r3, [r5, r0] @ movhi -.L2956: - add r4, r4, #1 - b .L2955 -.L2975: - ldr r7, .L2977+16 + bcc .L2887 + ldr r9, .L2905+16 mov r4, #0 - ldr r9, .L2977+20 + ldr r5, .L2905+20 mov r6, r4 - add r8, r7, #1840 -.L2958: - ldrh r3, [r9] - uxth r1, r4 - ldr r5, .L2977+16 - cmp r3, r1 - bls .L2976 - ldr r3, [r7, #-3544] - mov r5, r1, asl #1 - ldrh r2, [r3, r5] - ldrh r3, [r8, r5] + ldr r8, .L2905+4 +.L2888: + ldrh r2, [r9] + uxth r3, r4 cmp r2, r3 - beq .L2959 - ldr r0, .L2977+24 - bl printk - ldr r3, [r7, #-3544] - movw r2, #65535 - ldrh r3, [r3, r5] - cmp r3, r2 - beq .L2959 - ldrh r2, [r8, r5] - cmp r2, r3 - movhi r6, #1 -.L2959: - add r4, r4, #1 - b .L2958 -.L2976: - ldr r3, [r5, #-3532] - cmp r3, #0 - beq .L2961 - sub r2, r5, #3520 - add r9, r5, #1840 - mov r8, #0 - ldrh r7, [r2, #-8] - ldr r2, [r5, #-3552] - rsb r3, r2, r3 - ldr r2, .L2977+28 - mov r3, r3, asr #1 - mul r3, r2, r3 - uxth r4, r3 -.L2962: - uxth r3, r8 - cmp r3, r7 - bcs .L2961 - ldr r2, [r5, #-3544] - mov r3, r4, asl #1 + bhi .L2890 + ldr r4, [r5, #-3528] + cmp r4, #0 + beq .L2891 + ldr r3, .L2905+24 + mov r7, #0 + ldr r9, .L2905+4 + mov fp, #6 + ldr r10, .L2905+28 + ldrh r8, [r3, #-4] + ldr r3, [r5, #-3548] + sub r4, r4, r3 + ldr r3, .L2905+32 + asr r4, r4, #1 + mul r4, r3, r4 + uxth r4, r4 +.L2892: + uxth r3, r7 + cmp r8, r3 + bls .L2891 + ldr r2, [r5, #-3540] + lsl r3, r4, #1 ldrh r2, [r2, r3] cmp r2, #0 - beq .L2963 - ldr r0, .L2977+32 - mov r1, r4 - ldrh r3, [r9, r3] + beq .L2893 mov r6, #1 + ldrh r3, [r9, r3] + mov r1, r4 + mov r0, r10 bl printk -.L2963: - mov r3, #6 - ldr r2, [r5, #-3552] - mul r4, r3, r4 +.L2893: + mul r4, fp, r4 + ldr r3, [r5, #-3548] + add r7, r7, #1 + ldrh r4, [r3, r4] movw r3, #65535 - add r8, r8, #1 - ldrh r4, [r2, r4] cmp r4, r3 - bne .L2962 -.L2961: + bne .L2892 +.L2891: mov r1, r6 - ldr r0, .L2977+36 + ldr r0, .L2905+36 bl printk add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L2978: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2887: + mov r2, #0 + add r1, sp, #4 + mov r0, r4 + bl log2phys + ldr r0, [sp, #4] + cmn r0, #1 + beq .L2886 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + lsl r0, r0, #1 + ldrh r3, [r5, r0] + add r3, r3, #1 + strh r3, [r5, r0] @ movhi +.L2886: + add r4, r4, #1 + b .L2885 +.L2890: + uxth r1, r4 + ldr r3, [r5, #-3540] + lsl r7, r1, #1 + ldrh r2, [r3, r7] + ldrh r3, [r8, r7] + cmp r2, r3 + beq .L2889 + ldr r0, .L2905+40 + bl printk + ldr r3, [r5, #-3540] + movw r2, #65535 + ldrh r3, [r3, r7] + cmp r3, r2 + beq .L2889 + ldrh r2, [r8, r7] + cmp r2, r3 + movhi r6, #1 +.L2889: + add r4, r4, #1 + b .L2888 +.L2906: .align 2 -.L2977: - .word .LANCHOR3+204 - .word .LC110 - .word .LANCHOR2+1840 +.L2905: .word .LANCHOR0 + .word check_valid_page_count_table + .word .LANCHOR3+191 + .word .LC110 + .word .LANCHOR0+2332 .word .LANCHOR2 - .word .LANCHOR0+2328 - .word .LC143 - .word -1431655765 + .word .LANCHOR2-3520 .word .LC144 + .word -1431655765 .word .LC145 + .word .LC143 .fnend .size FtlCheckVpc, .-FtlCheckVpc .align 2 .global Ftlscanalldata + .syntax unified + .arm + .fpu softvfp .type Ftlscanalldata, %function Ftlscanalldata: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r1, #0 + mov r5, #0 + ldr r4, .L2916 .pad #32 sub sp, sp, #32 - ldr r0, .L2989 + mov r1, #0 + ldr r7, .L2916+4 + add r8, r4, #1760 + ldr r0, .L2916+8 bl printk - ldr r5, .L2989+4 - ldr r8, .L2989+8 - mov r4, #0 - mov r6, r5 -.L2980: - ldr r3, [r8, #2448] - cmp r4, r3 - bcs .L2988 - mov r0, r4 - add r1, sp, #28 - mov r2, #0 - bl log2phys - ubfx r3, r4, #0, #11 - cmp r3, #0 - bne .L2981 - ldr r0, .L2989+12 - mov r1, r4 - ldr r2, [sp, #28] - bl printk -.L2981: - ldr r3, [sp, #28] - cmn r3, #1 - beq .L2983 - str r3, [r5, #1756] - mov r2, #0 - ldr r3, [r5, #-524] - mov r1, #1 - ldr r7, [r5, #-500] - ldr r0, .L2989+16 - str r3, [r5, #1760] - str r4, [r5, #1768] - str r7, [r5, #1764] - str r2, [r5, #1752] - bl FlashReadPages - ldr r3, [r5, #1752] - cmn r3, #1 - cmpne r3, #256 - beq .L2984 - ldr r3, [r7, #8] - cmp r3, r4 - beq .L2983 -.L2984: - ldr r3, [r6, #1764] - ldr r2, [r6, #1760] - ldr r0, .L2989+20 - ldr r1, [r3, #4] - str r1, [sp] - ldr r1, [r3, #8] - str r1, [sp, #4] - ldr r1, [r3, #12] - str r1, [sp, #8] - ldr r1, [r2] - str r1, [sp, #12] - mov r1, r4 - ldr r2, [r2, #4] - str r2, [sp, #16] - ldr r2, [r6, #1756] - ldr r3, [r3] - bl printk -.L2983: - add r4, r4, #1 - b .L2980 -.L2988: +.L2908: + ldr r3, [r7, #2452] + cmp r5, r3 + bcc .L2914 add sp, sp, #32 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2990: + pop {r4, r5, r6, r7, r8, pc} +.L2914: + mov r2, #0 + add r1, sp, #28 + mov r0, r5 + bl log2phys + ubfx r3, r5, #0, #11 + cmp r3, #0 + bne .L2909 + ldr r2, [sp, #28] + mov r1, r5 + ldr r0, .L2916+12 + bl printk +.L2909: + ldr r3, [sp, #28] + cmn r3, #1 + beq .L2911 + str r3, [r4, #1764] + mov r2, #0 + ldr r3, [r4, #-524] + mov r1, #1 + ldr r6, [r4, #-500] + mov r0, r8 + str r5, [r4, #1776] + str r3, [r4, #1768] + str r6, [r4, #1772] + str r2, [r4, #1760] + bl FlashReadPages + ldr r3, [r4, #1760] + cmn r3, #1 + cmpne r3, #256 + beq .L2912 + ldr r3, [r6, #8] + cmp r5, r3 + beq .L2911 +.L2912: + ldr r2, [r4, #1768] + ldr r3, [r4, #1772] + ldr r0, .L2916+16 + ldr r1, [r2, #4] + str r1, [sp, #16] + mov r1, r5 + ldr r2, [r2] + str r2, [sp, #12] + ldr r2, [r3, #12] + str r2, [sp, #8] + ldr r2, [r3, #8] + str r2, [sp, #4] + ldr r2, [r3, #4] + str r2, [sp] + ldr r2, [r4, #1764] + ldr r3, [r3] + bl printk +.L2911: + add r5, r5, #1 + b .L2908 +.L2917: .align 2 -.L2989: - .word .LC146 +.L2916: .word .LANCHOR2 .word .LANCHOR0 + .word .LC146 .word .LC147 - .word .LANCHOR2+1752 .word .LC148 .fnend .size Ftlscanalldata, .-Ftlscanalldata .align 2 .global FtlReUsePrevPpa + .syntax unified + .arm + .fpu softvfp .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} .pad #12 mov r5, r0 + ldr r6, .L2928 ubfx r0, r1, #10, #16 str r1, [sp, #4] bl P2V_block_in_plane - ldr r6, .L3001 - ldr r4, [r6, #-3544] - mov r7, r0, asl #1 - ldrh r3, [r4, r7] + ldr r2, [r6, #-3540] + lsl r7, r0, #1 + ldrh r3, [r2, r7] cmp r3, #0 - addne r3, r3, #1 - strneh r3, [r4, r7] @ movhi - bne .L2993 - ldr r4, [r6, #-3532] + bne .L2919 + ldr r4, [r6, #-3528] cmp r4, #0 - beq .L2993 - ldr r1, [r6, #-3552] - sub r2, r6, #3520 - ldr lr, .L3001+4 - movw r9, #65535 - rsb r4, r1, r4 - ldrh ip, [r2, #-8] - mov r8, r2 - mov r4, r4, asr #1 - mul r4, lr, r4 + beq .L2920 + ldr r2, [r6, #-3548] + sub r8, r6, #3520 + ldr ip, .L2928+4 mov lr, #6 + ldrh r1, [r8, #-4] + movw r9, #65535 + sub r4, r4, r2 + asr r4, r4, #1 + mul r4, ip, r4 uxth r4, r4 -.L2994: - uxth r2, r3 - cmp r2, ip - bcs .L2993 +.L2921: + uxth ip, r3 + cmp r1, ip + bls .L2920 cmp r4, r0 - bne .L2995 + bne .L2922 mov r1, r4 - ldr r0, .L3001+8 + sub r0, r8, #8 bl List_remove_node - ldrh r3, [r8, #-8] + ldrh r3, [r8, #-4] mov r0, r4 sub r3, r3, #1 - strh r3, [r8, #-8] @ movhi + strh r3, [r8, #-4] @ movhi bl INSERT_DATA_LIST - ldr r2, [r6, #-3544] + ldr r2, [r6, #-3540] ldrh r3, [r2, r7] +.L2919: add r3, r3, #1 strh r3, [r2, r7] @ movhi - b .L2993 -.L2995: + b .L2920 +.L2922: mul r4, lr, r4 add r3, r3, #1 - ldrh r4, [r1, r4] + ldrh r4, [r2, r4] cmp r4, r9 - bne .L2994 -.L2993: - mov r0, r5 - add r1, sp, #4 + bne .L2921 +.L2920: mov r2, #1 + add r1, sp, #4 + mov r0, r5 bl log2phys add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L3002: + pop {r4, r5, r6, r7, r8, r9, pc} +.L2929: .align 2 -.L3001: +.L2928: .word .LANCHOR2 .word -1431655765 - .word .LANCHOR2-3532 .fnend .size FtlReUsePrevPpa, .-FtlReUsePrevPpa .align 2 .global FtlRecoverySuperblock + .syntax unified + .arm + .fpu softvfp .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: .fnstart - @ args = 0, pretend = 0, frame = 64 + @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldrh r2, [r0] + movw r1, #65535 + cmp r2, r1 + beq .L3075 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r2, #65535 - ldrh r3, [r0] - .pad #68 - sub sp, sp, #68 - mov r4, r0 - cmp r3, r2 - beq .L3144 + movw r2, #2390 + ldr r6, .L3087 + .pad #52 + sub sp, sp, #52 + mov r10, r0 ldrh r3, [r0, #2] - ldr r5, .L3161 + ldrh r2, [r6, r2] str r3, [sp, #8] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r1, [sp, #8] - str r3, [sp, #16] - movw r3, #2388 - ldrh r3, [r5, r3] - cmp r3, r1 - mov r3, #0 - streqh r3, [r0, #4] @ movhi - streqb r3, [r0, #6] - ldrneh r0, [r0, #16] - beq .L3144 -.L3007: - cmp r0, r2 - add r3, r3, #1 - uxtheq r1, r3 - addeq r1, r4, r1, asl #1 - ldreqh r0, [r1, #16] - beq .L3007 -.L3156: - ldrb r1, [r4, #8] @ zero_extendqisi2 - mov r9, r4 + cmp r2, r3 + mov r2, #0 + strheq r2, [r0, #4] @ movhi + strbeq r2, [r0, #6] + ldrhne r0, [r0, #16] + bne .L2934 +.L3073: + mov r0, #0 + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2935: + uxth r0, r2 + add r0, r10, r0, lsl #1 + ldrh r0, [r0, #16] +.L2934: + cmp r0, r1 + add r2, r2, #1 + beq .L2935 + ldrb r1, [r10, #8] @ zero_extendqisi2 + ldrb r3, [r10, #6] @ zero_extendqisi2 cmp r1, #1 - bne .L3009 + str r3, [sp, #12] + bne .L2936 bl FtlGetLastWrittenPage cmn r0, #1 mov r4, r0 - beq .L3010 - ldrb r3, [r5, #144] @ zero_extendqisi2 + beq .L2937 + ldrb r3, [r6, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L3147 - ldr r3, .L3161 - add r3, r3, r0, asl #1 - ldrh r6, [r3, #148] - b .L3081 -.L3009: + addeq r3, r6, r0, lsl #1 + ldrheq r5, [r3, #156] + beq .L2938 +.L3008: + mov r5, r4 +.L2938: + movw r3, #2324 + mov r2, #0 + ldrh r3, [r6, r3] + movw r8, #65535 + mov r9, #36 + str r3, [sp] + ldr r3, .L3087+4 + ldr r0, [r3, #-536] + ldr lr, [r3, #-2692] + movw r3, #2402 + ldrh r7, [r6, r3] + add r3, r10, #16 + mov ip, r3 + mov r6, r2 + str r3, [sp, #20] +.L2939: + ldr r1, [sp] + uxth r3, r2 + cmp r1, r3 + bhi .L2941 + ldrb r3, [r10, #8] @ zero_extendqisi2 + cmp r3, #1 + movne r3, #0 + bne .L3078 + ldr r3, .L3087 + ldrb r3, [r3, #152] @ zero_extendqisi2 + adds r3, r3, #0 + movne r3, #1 +.L3078: + ldr r7, .L3087+4 + mov r1, r6 + str r3, [sp, #24] + mov r8, #0 + ldr r2, [sp, #24] + movw r9, #65535 + bl FlashReadPages + ldr r3, [r7, #-3328] + mov fp, r7 + str r3, [sp, #16] +.L2943: + uxth r3, r8 + cmp r6, r3 + bhi .L2948 + bne .L2946 + add r4, r4, #1 + uxth r3, r4 + str r3, [sp] + ldr r3, [r7, #-536] + ldr r0, [r3, #4] +.L3079: + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrb r2, [r10, #8] @ zero_extendqisi2 + str r0, [sp, #4] + ldr r3, .L3087 + cmp r2, #1 + bne .L2950 + ldrb r1, [r3, #152] @ zero_extendqisi2 + cmp r1, #0 + ldreq r1, [sp] + addeq r4, r3, r1, lsl #1 + ldrheq r1, [r4, #156] + streq r1, [sp] +.L2950: + movw r1, #2390 + ldrh r3, [r3, r1] + ldr r1, [sp] + cmp r3, r1 + ldmib sp, {r0, r1} + ldrheq r3, [sp] + strheq r3, [r10, #2] @ movhi + moveq r3, #0 + strbeq r3, [r10, #6] + strheq r3, [r10, #4] @ movhi + ldrh r3, [sp, #12] + str r3, [sp, #28] + ldr ip, [sp, #28] + ldr r3, [sp] + cmp r3, r1 + cmpeq r0, ip + moveq r2, r0 + moveq r1, r3 + beq .L3085 + ldr r3, [sp, #16] + sub fp, r3, #1 + movw r3, #65535 + subs r9, r9, r3 + movne r9, #1 + cmp r2, #0 + orreq r9, r9, #1 + cmp r9, #0 + beq .L2954 + ldr r3, [r7, #-368] + uxth r8, r5 + uxth r5, r5 + cmn r3, #1 + streq fp, [r7, #-368] + ldr r3, [r7, #-368] + mvn r7, #0 + mov r6, r7 + str r3, [sp, #12] + ldr r3, [sp, #8] + add r3, r3, #7 + cmp r5, r3 + subgt r4, r8, #7 + ldrle r4, [sp, #8] + uxthgt r4, r4 +.L2957: + cmp r4, r8 + ldr r3, .L3087+4 + bhi .L2970 + ldr r2, .L3087+8 + mov ip, #36 + ldr r0, [r3, #-536] + mov r3, #0 + ldr r1, [sp, #20] + mov r5, r3 + ldrh r9, [r2] + b .L2971 +.L2936: mov r1, #0 bl FtlGetLastWrittenPage cmn r0, #1 mov r4, r0 - beq .L3010 -.L3147: - mov r6, r4 -.L3081: - ldr r3, .L3161+4 - movw r8, #65535 - ldrh r2, [r3], #80 - str r2, [sp, #4] - ldr r2, .L3161+8 - ldrh r7, [r3] - add r3, r9, #14 - str r3, [sp, #20] - ldr ip, [r2, #-536] - mov r0, r3 - ldr lr, [r2, #-2692] - mov r2, #0 - mov r5, r2 - mov r10, r2 - b .L3012 -.L3010: + bne .L3008 +.L2937: mov r3, #0 - strh r3, [r9, #2] @ movhi - strb r3, [r9, #6] - b .L3144 -.L3014: - ldrh r3, [r0, #2]! + strh r3, [r10, #2] @ movhi +.L3084: + strb r3, [r10, #6] + b .L3073 +.L2941: + ldrh r3, [ip], #2 cmp r3, r8 - beq .L3013 - mov r1, #36 - orr r3, r6, r3, asl #10 - mla r1, r1, r5, ip - stmib r1, {r3, r10} - mul r3, r7, r5 - add r5, r5, #1 - uxth r5, r5 + beq .L2940 + mla r1, r9, r6, r0 + orr r3, r5, r3, lsl #10 + str r3, [r1, #4] + mov r3, #0 + str r3, [r1, #8] + mul r3, r7, r6 + add r6, r6, #1 + uxth r6, r6 add fp, r3, #3 cmp r3, #0 movlt r3, fp bic r3, r3, #3 add r3, lr, r3 str r3, [r1, #12] -.L3013: +.L2940: add r2, r2, #1 -.L3012: - ldr r1, [sp, #4] - uxth r3, r2 - cmp r3, r1 - bcc .L3014 - ldrb r3, [r9, #8] @ zero_extendqisi2 - cmp r3, #1 - movne r3, #0 - bne .L3148 - ldr r3, .L3161 - ldrb lr, [r3, #144] @ zero_extendqisi2 - adds r3, lr, #0 - movne r3, #1 -.L3148: - ldr r7, .L3161+8 - mov r1, r5 - str r3, [sp, #24] - mov fp, #0 - ldr r2, [sp, #24] - movw r10, #65535 - ldr r0, [r7, #-536] - bl FlashReadPages - ldr r3, [r7, #-3328] - str r7, [sp, #12] - str r3, [sp, #28] -.L3016: - uxth r8, fp - cmp r8, r5 - bcs .L3023 - mov r1, #36 - ldr r0, [r7, #-536] - mul r1, r1, fp - add ip, r0, r1 - ldr r1, [r0, r1] - cmp r1, #0 - bne .L3017 - ldr ip, [ip, #12] - ldr r3, [ip, #4] + b .L2939 +.L2948: + mov r3, #36 + ldr r1, [fp, #-536] + mul r3, r3, r8 + add r2, r1, r3 + ldr r3, [r1, r3] + cmp r3, #0 + bne .L2944 + ldr r2, [r2, #12] + ldr r3, [r2, #4] cmn r3, #1 - beq .L3018 + beq .L2945 + ldr r1, [fp, #-3328] mov r0, r3 - ldr r1, [r7, #-3328] - str ip, [sp, #32] - str r3, [sp, #4] bl ftl_cmp_data_ver - ldr r3, [sp, #4] cmp r0, #0 - ldr ip, [sp, #32] addne r3, r3, #1 - strne r3, [r7, #-3328] -.L3018: - ldr r1, [ip] - cmn r1, #1 - bne .L3019 -.L3023: - cmp r8, r5 - ldr r5, .L3161+8 - bne .L3145 - add fp, r4, #1 - uxth r3, fp - str r3, [sp, #4] - ldr r3, [r5, #-536] - ldr r0, [r3, #4] - b .L3149 -.L3017: - ldr r1, [ip, #4] - uxth r10, r6 - ldr r0, .L3161+12 - bl printk - ldrh r1, [r9] - ldr r3, .L3161+16 - strh r1, [r3] @ movhi -.L3019: - add fp, fp, #1 - b .L3016 -.L3145: + strne r3, [fp, #-3328] +.L2945: + ldr r3, [r2] + cmn r3, #1 + bne .L2947 +.L2946: uxth r3, r4 - str r3, [sp, #4] - ldr r3, [sp, #12] + uxth r8, r8 + str r3, [sp] mov r2, #36 - ldr r3, [r3, #-536] + ldr r3, [r7, #-536] mla r8, r2, r8, r3 ldr r0, [r8, #4] -.L3149: - ubfx r0, r0, #10, #16 - bl P2V_plane - ldr r2, .L3161 - str r0, [sp, #12] - ldrb r0, [r9, #8] @ zero_extendqisi2 - cmp r0, #1 - bne .L3025 - ldrb r3, [r2, #144] @ zero_extendqisi2 - cmp r3, #0 - ldreq r3, [sp, #4] - addeq fp, r2, r3, asl #1 - ldreqh r3, [fp, #148] - streq r3, [sp, #4] -.L3025: - movw r3, #2388 - ldr r1, [sp, #12] - ldrh r3, [r2, r3] - ldr r2, [sp, #4] - cmp r3, r2 - ldr r2, [sp, #8] - ldreqh r3, [sp, #4] - streqh r3, [r9, #2] @ movhi - moveq r3, #0 - streqb r3, [r9, #6] - streqh r3, [r9, #4] @ movhi - ldrh r3, [sp, #16] - str r3, [sp, #32] - ldr ip, [sp, #32] - ldr r3, [sp, #4] - cmp r3, r2 - cmpeq r1, ip - moveq r0, r9 - moveq r1, r3 - beq .L3154 - ldr r3, [sp, #28] - movw r2, #65535 - sub fp, r3, #1 - clz r3, r0 - mov r3, r3, lsr #5 - cmp r10, r2 - orrne r3, r3, #1 - cmp r3, #0 - beq .L3029 - ldr r3, [r5, #-368] - uxth r10, r6 - ldr r7, .L3161+8 - mvn r8, #0 - cmn r3, #1 - mov r6, r8 - ldreq r3, .L3161+8 - streq fp, [r3, #-368] - ldr r3, [r5, #-368] - str r3, [sp, #16] - ldr r3, [sp, #8] - add r3, r3, #7 - cmp r10, r3 - subgt r4, r10, #7 - ldrle r4, [sp, #8] - uxthgt r4, r4 -.L3032: - cmp r4, r10 - bhi .L3045 - ldr r3, .L3161+4 - mov r0, #36 - ldr lr, [r7, #-536] - ldr r1, [sp, #20] - ldrh r3, [r3] - str r3, [sp, #28] - mov r3, #0 - mov r5, r3 -.L3046: - ldr ip, [sp, #28] - uxth r2, r3 - cmp r2, ip - bcs .L3157 - ldrh r2, [r1, #2]! - movw ip, #65535 + b .L3079 +.L2944: + ldr r1, [r2, #4] + uxth r9, r5 + ldr r0, .L3087+12 + bl printk + ldrh r3, [r10] + ldr r2, .L3087+16 + strh r3, [r2] @ movhi +.L2947: + add r8, r8, #1 + b .L2943 +.L2959: + ldrh r2, [r1], #2 + movw lr, #65535 add r3, r3, #1 - cmp r2, ip - orrne r2, r4, r2, asl #10 - mlane ip, r0, r5, lr + cmp r2, lr + mlane lr, ip, r5, r0 addne r5, r5, #1 + orrne r2, r4, r2, lsl #10 uxthne r5, r5 - strne r2, [ip, #4] - b .L3046 -.L3157: + strne r2, [lr, #4] +.L2971: + uxth r2, r3 + cmp r2, r9 + bcc .L2959 mov r1, r5 ldr r2, [sp, #24] - ldr r0, [r7, #-536] bl FlashReadPages - ldr r3, .L3161 - mov r2, #36 + ldr r3, .L3087 + mov r1, #36 + ldr r2, .L3087+4 + ldr r0, .L3087+20 + ldrb ip, [r3, #152] @ zero_extendqisi2 + ldr r3, [r2, #-536] + add lr, r0, r4, lsl #1 + mla r5, r1, r5, r3 movw r1, #65535 - ldrb ip, [r3, #144] @ zero_extendqisi2 - ldr r3, [r7, #-536] - mla r5, r2, r5, r3 - ldr r2, .L3161+20 - add r2, r2, r4, asl #1 -.L3035: - cmp r3, r5 - beq .L3158 +.L2960: + cmp r5, r3 + addeq r4, r4, #1 + uxtheq r4, r4 + beq .L2957 +.L2969: ldr r0, [r3] cmp r0, #0 - bne .L3036 + bne .L2961 ldr r0, [r3, #12] - ldrh lr, [r0] - cmp lr, r1 - beq .L3037 + ldrh r9, [r0] + cmp r9, r1 + beq .L2962 ldr r0, [r0, #4] cmn r0, #1 - beq .L3037 - cmn r8, #1 - ldr r6, [r7, #-368] - str r0, [r7, #-368] - bne .L3037 - ldrh r0, [r2] + beq .L2962 + cmn r7, #1 + ldr r6, [r2, #-368] + str r0, [r2, #-368] + bne .L2962 + ldrh r0, [lr] cmp r0, r1 - bne .L3038 + bne .L2963 cmp ip, #0 - beq .L3037 -.L3038: - cmp r6, fp - mvneq r8, #0 - movne r8, r6 - b .L3037 -.L3036: - ldrh r1, [r9] - movw r3, #1848 - ldr r2, .L3161+24 - strh r1, [r2, r3] @ movhi - ldrb r3, [r9, #8] @ zero_extendqisi2 - cmp r3, #0 - bne .L3029 - ldr r2, .L3161+20 - mov r4, r4, asl #1 - ldr r3, .L3161+8 + beq .L2962 +.L2963: + cmp fp, r6 + movne r7, r6 +.L2962: + add r3, r3, #36 + b .L2960 +.L2961: + ldrh r1, [r10] + movw r2, #1846 + ldr r3, .L3087+4 + strh r1, [r3, r2] @ movhi + ldrb r2, [r10, #8] @ zero_extendqisi2 + cmp r2, #0 + bne .L2954 + ldr r2, .L3087+20 + lsl r4, r4, #1 ldrh r1, [r2, r4] movw r2, #65535 cmp r1, r2 - bne .L3040 - cmn r8, #1 - strne r8, [r3, #-368] - bne .L3029 - ldr r2, [sp, #16] - cmp r2, fp - bne .L3150 + bne .L2965 + cmn r7, #1 + strne r7, [r3, #-368] + bne .L2954 + ldr r2, [sp, #12] + cmp fp, r2 + beq .L2967 +.L3080: + str r2, [r3, #-368] + b .L2954 +.L2967: ldr r2, [r3, #-368] - b .L3155 -.L3040: +.L3086: + sub r2, r2, #1 + b .L3080 +.L2965: cmp r6, fp - beq .L3043 + beq .L2968 cmn r6, #1 strne r6, [r3, #-368] - b .L3029 -.L3043: - ldr r2, [r3, #-368] - cmp r2, fp - beq .L3029 -.L3155: - sub r2, r2, #1 - b .L3150 -.L3037: - add r3, r3, #36 - b .L3035 -.L3158: - add r4, r4, #1 - uxth r4, r4 - b .L3032 -.L3045: - ldr r3, .L3161+8 - mvn r2, #0 -.L3150: - str r2, [r3, #-368] -.L3029: - ldr r2, .L3161+24 - movw r3, #1850 - ldr r10, [sp, #8] - mov r1, #1 - ldr r4, .L3161+8 - strh r1, [r2, r3] @ movhi -.L3047: - ldr r3, .L3161+4 - movw r1, #65535 - ldr r8, [r4, #-536] - mov r0, #36 - ldr r6, [sp, #20] - mov r5, #0 - ldrh r7, [r3] - ldrb lr, [r3, #-2176] @ zero_extendqisi2 - str r5, [sp, #16] -.L3048: - uxth r3, r5 - cmp r3, r7 - bcs .L3159 - ldrh r3, [r6, #2]! - cmp r3, r1 - beq .L3049 - ldr r2, [sp, #16] - orr r3, r10, r3, asl #10 - mla r2, r0, r2, r8 - str r3, [r2, #4] - ldrb ip, [r9, #8] @ zero_extendqisi2 - cmp ip, #1 - bne .L3050 - cmp lr, #0 - orrne r3, r3, #-2147483648 - strne r3, [r2, #4] -.L3050: - ldr r3, [sp, #16] - add r3, r3, #1 - uxth r3, r3 - str r3, [sp, #16] -.L3049: - add r5, r5, #1 - b .L3048 -.L3159: +.L2954: + ldr r9, [sp, #8] + mov r2, #1 + ldr r4, .L3087+4 + movw r3, #1848 + strh r2, [r4, r3] @ movhi +.L2972: + ldr r3, .L3087+8 + movw r6, #65535 ldr r0, [r4, #-536] - ldr r1, [sp, #16] + mov r7, #36 + ldr r1, [sp, #20] + mov r2, #0 + ldrh lr, [r3] + ldr r3, .L3087 + str r2, [sp, #12] + ldrb r5, [r3, #152] @ zero_extendqisi2 +.L2973: + uxth r3, r2 + cmp lr, r3 + bhi .L2976 ldr r2, [sp, #24] + ldr r1, [sp, #12] bl FlashReadPages mov r3, #0 -.L3153: - str r3, [sp, #28] - ldr r2, [sp, #16] - ldrh r3, [sp, #28] - cmp r3, r2 - bcs .L3160 - ldr r3, [sp, #28] - mov r5, #36 +.L3083: + str r3, [sp, #16] + ldr r2, [sp, #12] + ldrh r3, [sp, #16] + cmp r2, r3 + bhi .L3002 + ldrb r3, [r10, #8] @ zero_extendqisi2 + add r9, r9, #1 + uxth r9, r9 + cmp r3, #1 + bne .L3003 + ldr r3, .L3087 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L3003 + ldr r3, .L3087+24 + ldr r2, [sp] + ldrh r3, [r3] + cmp r3, r9 + cmpeq r2, r9 + beq .L2979 +.L3003: + ldr r3, .L3087+28 + ldrh r3, [r3] + cmp r3, r9 + bne .L2972 + ldr r1, .L3087 + movw r2, #2324 + movw r0, #65535 + mov r3, #0 + strh r9, [r10, #2] @ movhi + ldrh r2, [r1, r2] + strh r3, [r10, #4] @ movhi +.L3004: + uxth r1, r3 + cmp r1, r2 + bcs .L3073 + ldr r1, [sp, #20] + ldrh ip, [r1], #2 + cmp ip, r0 + str r1, [sp, #20] + add r1, r3, #1 + bne .L3084 + mov r3, r1 + b .L3004 +.L2968: + ldr r2, [r3, #-368] + cmp fp, r2 + bne .L3086 + b .L2954 +.L2970: + mvn r2, #0 + b .L3080 +.L2976: + ldrh r3, [r1], #2 + cmp r3, r6 + beq .L2974 + ldr ip, [sp, #12] + orr r3, r9, r3, lsl #10 + mla ip, r7, ip, r0 + str r3, [ip, #4] + ldrb r8, [r10, #8] @ zero_extendqisi2 + cmp r8, #1 + bne .L2975 + cmp r5, #0 + orrne r3, r3, #-2147483648 + strne r3, [ip, #4] +.L2975: + ldr r3, [sp, #12] + add r3, r3, #1 + uxth r3, r3 + str r3, [sp, #12] +.L2974: + add r2, r2, #1 + b .L2973 +.L3002: + ldr r3, [sp, #16] + mov r6, #36 ldr r8, [r4, #-536] - mul r5, r5, r3 - add r7, r8, r5 - ldr r6, [r7, #4] - ubfx r0, r6, #10, #16 - str r6, [sp, #60] + mul r6, r6, r3 + add r7, r8, r6 + ldr r5, [r7, #4] + ubfx r0, r5, #10, #16 + str r5, [sp, #44] bl P2V_plane ldr r3, [sp, #8] - cmp r10, r3 - bcc .L3053 - ldr r3, [sp, #32] - ldr r2, [sp, #8] - cmp r0, r3 - movcs r3, #0 - movcc r3, #1 - cmp r10, r2 + cmp r9, r3 + bcc .L2978 + ldr r2, [sp, #28] + moveq r3, #1 movne r3, #0 + cmp r2, r0 + movls r3, #0 + andhi r3, r3, #1 cmp r3, #0 - bne .L3053 - ldr r3, [sp, #12] + bne .L2978 + ldr r3, [sp] ldr r2, [sp, #4] - cmp r0, r3 - cmpeq r10, r2 - beq .L3054 - ldr r3, [r8, r5] + cmp r9, r3 + cmpeq r2, r0 + beq .L2979 + ldr r3, [r8, r6] cmn r3, #1 - beq .L3055 - ldr r7, [r7, #12] - movw r3, #61589 - ldrh r2, [r7] - cmp r2, r3 - ldrneh r0, [r9] - bne .L3151 - ldr fp, [r7, #4] + beq .L2980 + ldr r3, [r7, #12] + movw r2, #61589 + ldrh r1, [r3] + cmp r1, r2 + ldrhne r0, [r10] + bne .L3081 + ldr fp, [r3, #4] cmn fp, #1 - beq .L3057 + beq .L2982 ldr r1, [r4, #-3328] mov r0, fp bl ftl_cmp_data_ver cmp r0, #0 - addne r3, fp, #1 - strne r3, [r4, #-3328] -.L3057: - ldr r6, [r7, #8] - add r1, sp, #56 - ldr r3, [r7, #12] + addne r2, fp, #1 + strne r2, [r4, #-3328] +.L2982: + ldr r5, [r3, #8] + add r1, sp, #40 + ldr r3, [r3, #12] mov r2, #0 - mov r0, r6 - str r3, [sp, #52] + mov r0, r5 + str r3, [sp, #36] bl log2phys ldr r1, [r4, #-368] cmn r1, #1 - beq .L3058 + beq .L2983 mov r0, fp bl ftl_cmp_data_ver cmp r0, #0 - beq .L3058 - ldr r3, [sp, #52] + beq .L2983 + ldr r3, [sp, #36] cmn r3, #1 - beq .L3059 + beq .L2984 ldr r0, [r4, #-536] mov r2, #0 mov r1, #1 - add r0, r0, r5 + add r0, r0, r6 str r3, [r0, #4] - ldr r8, [r0, #12] - bl FlashReadPages - ldr r2, [r4, #-536] - ldr r3, [r8, #4] - add ip, r2, r5 - str r3, [sp, #36] - ldr r3, [r2, r5] - cmn r3, #1 - bne .L3060 - b .L3061 -.L3059: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - bne .L3053 - mov r0, r6 - add r1, sp, #52 - mov r2, #1 - bl log2phys - b .L3053 -.L3060: - ldr r7, [r8, #8] - cmp r7, r6 - bne .L3061 - ldr r0, [r4, #-368] - ldr r1, [sp, #36] - str r2, [sp, #44] - str ip, [sp, #40] - bl ftl_cmp_data_ver - cmp r0, #0 - ldr ip, [sp, #40] - ldr r2, [sp, #44] - beq .L3061 - ldr r3, [sp, #56] - ldr r1, [sp, #60] - cmp r3, r1 - beq .L3066 - ldr r1, [sp, #52] - cmp r3, r1 - beq .L3061 - cmn r3, #1 - streq r3, [r2, r5] - beq .L3065 - str r3, [ip, #4] - mov r0, ip - mov r1, #1 - mov r2, #0 - ldr r8, [ip, #12] - bl FlashReadPages -.L3065: - ldr r3, [r4, #-536] - ldr r3, [r3, r5] - cmn r3, #1 - beq .L3066 - ldr r5, [r8, #4] - ldr r0, [r4, #-368] - mov r1, r5 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L3066 - ldr r0, [sp, #36] - mov r1, r5 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L3061 -.L3066: - mov r0, r7 - ldr r1, [sp, #52] - bl FtlReUsePrevPpa -.L3061: - mvn r3, #0 - str r3, [sp, #52] - b .L3068 -.L3058: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - beq .L3068 - ldr r3, [sp, #52] - cmn r3, #1 - beq .L3070 - ldr r2, .L3161 - ubfx r3, r3, #10, #21 - ldr r2, [r2, #2336] - cmp r3, r2 - bcs .L3053 -.L3070: - mov r0, r6 - add r1, sp, #60 - mov r2, #1 - bl log2phys - ldr r5, [sp, #56] - cmn r5, #1 - beq .L3068 - ldr r3, [sp, #52] - cmp r5, r3 - beq .L3068 - ubfx r0, r5, #10, #16 - bl P2V_block_in_plane - ldr r3, .L3161+28 - ldrh r2, [r3] - cmp r2, r0 - beq .L3072 - ldrh r2, [r3, #48] - cmp r2, r0 - beq .L3072 - ldrh r3, [r3, #96] - cmp r3, r0 - bne .L3068 -.L3072: - ldr r0, [r4, #-536] - mov r1, #1 - mov r2, #0 - str r5, [r0, #4] ldr r7, [r0, #12] bl FlashReadPages - ldr r3, [r4, #-536] - ldr r1, [r7, #4] - ldr r3, [r3] - cmn r3, #1 - beq .L3068 - mov r0, fp - bl ftl_cmp_data_ver - cmp r0, #0 - bne .L3068 - mov r0, r6 - add r1, sp, #56 - mov r2, #1 - bl log2phys -.L3068: - ldr r0, [sp, #52] - cmn r0, #1 - beq .L3053 - ubfx r0, r0, #10, #16 + ldr r2, [r4, #-536] + ldr r1, [r2, r6] + add r3, r2, r6 + cmn r1, #1 + bne .L2985 +.L2986: + mvn r3, #0 + str r3, [sp, #36] +.L2993: + ldr r8, [sp, #36] + cmn r8, #1 + beq .L2978 +.L3007: + ubfx r0, r8, #10, #16 bl P2V_block_in_plane - ldr r2, [r4, #-3544] - mov r3, r0, asl #1 + ldr r2, [r4, #-3540] + lsl r3, r0, #1 mov r1, r0 ldrh r3, [r2, r3] cmp r3, #0 - beq .L3073 -.L3151: + beq .L2999 +.L3081: bl decrement_vpc_count - b .L3053 -.L3073: - ldr r0, .L3161+32 + b .L2978 +.L2984: + ldr r3, [sp, #44] + ldr r2, [sp, #40] + cmp r2, r3 + bne .L2978 + mov r2, #1 + add r1, sp, #36 + mov r0, r5 + bl log2phys +.L2978: + ldr r3, [sp, #16] + add r3, r3, #1 + b .L3083 +.L2985: + ldr r1, [r7, #8] + cmp r5, r1 + bne .L2986 + ldr r8, [r7, #4] + ldr r0, [r4, #-368] + mov r1, r8 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2986 + ldr r1, [sp, #40] + ldr r0, [sp, #44] + cmp r1, r0 + bne .L2988 +.L2991: + ldr r1, [sp, #36] + mov r0, r5 + bl FtlReUsePrevPpa + b .L2986 +.L2988: + ldr r0, [sp, #36] + cmp r1, r0 + beq .L2986 + cmn r1, #1 + streq r1, [r2, r6] + beq .L2990 + str r1, [r3, #4] + mov r2, #0 + mov r1, #1 + mov r0, r3 + ldr r7, [r3, #12] + bl FlashReadPages +.L2990: + ldr r3, [r4, #-536] + ldr r3, [r3, r6] + cmn r3, #1 + beq .L2991 + ldr r3, [r7, #4] + ldr r0, [r4, #-368] + mov r1, r3 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2991 + mov r1, r3 + mov r0, r8 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2986 + b .L2991 +.L2983: + ldr r3, [sp, #44] + ldr r2, [sp, #40] + cmp r2, r3 + beq .L2993 + ldr r3, [sp, #36] + cmn r3, #1 + beq .L2995 + ldr r2, .L3087 + ubfx r3, r3, #10, #21 + ldr r2, [r2, #2340] + cmp r3, r2 + bcs .L2978 +.L2995: + mov r2, #1 + add r1, sp, #44 + mov r0, r5 + bl log2phys + ldr r8, [sp, #40] + cmn r8, #1 + beq .L2993 + ldr r3, [sp, #36] + cmp r8, r3 + beq .L3007 + ldr r6, .L3087+32 + ubfx r0, r8, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r6] + cmp r3, r0 + beq .L2998 + add r2, r6, #48 + ldrh r2, [r2] + cmp r2, r0 + beq .L2998 + add r3, r6, #96 + ldrh r3, [r3] + cmp r3, r0 + bne .L2993 +.L2998: + ldr r0, [r6, #2984] + mov r2, #0 + mov r1, #1 + str r8, [r0, #4] + ldr r7, [r0, #12] + bl FlashReadPages + ldr r3, [r6, #2984] + ldr r3, [r3] + cmn r3, #1 + beq .L2993 + ldr r1, [r7, #4] + mov r0, fp + bl ftl_cmp_data_ver + cmp r0, #0 + bne .L2993 + mov r2, #1 + add r1, sp, #40 + mov r0, r5 + bl log2phys + b .L2993 +.L2999: + ldr r0, .L3087+36 bl printk - b .L3053 -.L3055: - ldrh r3, [r9] - mov r1, r6 - ldr r2, .L3161+16 - ldr r0, .L3161+36 + b .L2978 +.L2980: + ldrh r3, [r10] + mov r1, r5 + ldr r2, .L3087+16 + ldr r0, .L3087+40 strh r3, [r2] @ movhi mov r2, fp bl printk - ldr r3, .L3161+24 - ldr r3, [r3, #1852] + ldr r3, [r4, #1852] cmp r3, #31 - bhi .L3074 - ldr r2, .L3161+24 - ldr r1, [sp, #60] - add r2, r2, r3, asl #2 - add r3, r3, #1 - str r1, [r2, #1856] - ldr r2, .L3161+24 - str r3, [r2, #1852] -.L3074: - ldrh r0, [r9] + ldrls r1, [sp, #44] + addls r2, r4, r3, lsl #2 + addls r3, r3, #1 + strls r3, [r4, #1852] + strls r1, [r2, #1856] + ldrh r0, [r10] bl decrement_vpc_count ldr r3, [r4, #-368] cmn r3, #1 - beq .L3152 - cmp r3, fp - bls .L3053 -.L3152: + bne .L3001 +.L3082: str fp, [r4, #-368] -.L3053: - ldr r3, [sp, #28] - add r3, r3, #1 - b .L3153 -.L3160: - ldrb r3, [r9, #8] @ zero_extendqisi2 - add r10, r10, #1 - cmp r3, #1 - uxth r10, r10 - bne .L3077 - ldr r3, .L3161 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L3077 - ldr r3, .L3161+40 - ldr r2, [sp, #4] - ldrh r3, [r3] - cmp r2, r10 - cmpeq r3, r10 - beq .L3054 -.L3077: - ldr r2, .L3161+44 - ldrh r3, [r2] - cmp r10, r3 - bne .L3047 - ldrh r1, [r2, #-68] - movw r0, #65535 - mov r3, #0 - strh r10, [r9, #2] @ movhi - strh r3, [r9, #4] @ movhi -.L3078: - uxth r2, r3 - cmp r2, r1 - bcs .L3144 - ldr lr, [sp, #20] - add r3, r3, #1 - ldrh ip, [lr, #2]! - cmp ip, r0 - str lr, [sp, #20] - beq .L3078 - strb r2, [r9, #6] - b .L3144 -.L3054: - ldrb r3, [sp, #12] @ zero_extendqisi2 - mov r0, r9 - ldr r1, [sp, #4] - strb r3, [r9, #6] - ldrh r3, [sp, #4] - strh r3, [r9, #2] @ movhi -.L3154: - ldr r2, [sp, #12] + b .L2978 +.L3001: + cmp fp, r3 + bcs .L2978 + b .L3082 +.L2979: + ldrb r3, [sp, #4] @ zero_extendqisi2 + ldm sp, {r1, r2} + strb r3, [r10, #6] + ldrh r3, [sp] + strh r3, [r10, #2] @ movhi +.L3085: + mov r0, r10 bl ftl_sb_update_avl_pages -.L3144: + b .L3073 +.L3075: mov r0, #0 - add sp, sp, #68 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3162: + bx lr +.L3088: .align 2 -.L3161: +.L3087: .word .LANCHOR0 - .word .LANCHOR0+2320 .word .LANCHOR2 + .word .LANCHOR0+2324 .word .LC149 - .word .LANCHOR4+1848 + .word .LANCHOR2+1846 .word .LANCHOR2-2620 - .word .LANCHOR4 - .word .LANCHOR2-3524 + .word .LANCHOR0+2392 + .word .LANCHOR0+2390 + .word .LANCHOR2-3520 .word .LC150 .word .LC151 - .word .LANCHOR0+2390 - .word .LANCHOR0+2388 .fnend .size FtlRecoverySuperblock, .-FtlRecoverySuperblock .align 2 .global FtlVpcCheckAndModify + .syntax unified + .arm + .fpu softvfp .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} .pad #8 - mov r4, #0 - ldr r5, .L3180 - ldr r1, .L3180+4 - ldr r0, .L3180+8 + mov r5, #0 + ldr r6, .L3104 + ldr r1, .L3104+4 + ldr r0, .L3104+8 bl printk - movw r3, #2330 - ldrh r2, [r5, r3] + movw r3, #2334 + ldr r4, .L3104+12 + ldrh r2, [r6, r3] mov r1, #0 - ldr r6, .L3180+12 - mov r2, r2, asl #1 - ldr r0, [r6, #-476] + ldr r0, [r4, #-476] + lsl r2, r2, #1 bl ftl_memset -.L3164: - ldr r3, [r5, #2448] - cmp r4, r3 - bcs .L3178 - mov r0, r4 - add r1, sp, #4 - mov r2, #0 - bl log2phys - ldr r0, [sp, #4] - cmn r0, #1 - beq .L3165 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r6, #-476] - mov r0, r0, asl #1 - ldrh r3, [r2, r0] - add r3, r3, #1 - strh r3, [r2, r0] @ movhi -.L3165: - add r4, r4, #1 - b .L3164 -.L3178: - ldr r8, .L3180+16 +.L3090: + ldr r3, [r6, #2452] + cmp r5, r3 + bcc .L3092 + ldr r8, .L3104+16 mov r7, #0 - ldr r10, .L3180+12 - ldr r9, .L3180+20 -.L3167: - ldrh r3, [r8] - uxth r4, r7 - cmp r3, r4 - bls .L3179 - ldr r3, [r6, #-3544] - mov r5, r4, asl #1 - movw r1, #65535 - ldrh r2, [r3, r5] - ldr r3, [r6, #-476] - ldrh r3, [r3, r5] - cmp r2, r1 - cmpne r2, r3 - beq .L3168 - ldrh r1, [r9] - cmp r1, r4 - beq .L3168 - ldr r1, .L3180+24 - ldrh r0, [r1] - cmp r0, r4 - beq .L3168 - ldrh r1, [r1, #-48] - cmp r1, r4 - beq .L3168 - ldr r0, .L3180+28 - mov r1, r4 - bl printk - ldr r3, [r10, #-3544] - ldrh r2, [r3, r5] - cmp r2, #0 - ldr r2, [r10, #-476] - ldrh r2, [r2, r5] - strh r2, [r3, r5] @ movhi - beq .L3168 - mov r0, r4 - bl update_vpc_list -.L3168: - add r7, r7, #1 - b .L3167 -.L3179: + ldr r9, .L3104+20 + add r10, r8, #96 +.L3093: + ldrh r3, [r9] + uxth r6, r7 + cmp r3, r6 + bhi .L3096 bl l2p_flush bl FtlVpcTblFlush add sp, sp, #8 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L3181: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3092: + mov r2, #0 + add r1, sp, #4 + mov r0, r5 + bl log2phys + ldr r0, [sp, #4] + cmn r0, #1 + beq .L3091 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r4, #-476] + lsl r0, r0, #1 + ldrh r3, [r2, r0] + add r3, r3, #1 + strh r3, [r2, r0] @ movhi +.L3091: + add r5, r5, #1 + b .L3090 +.L3096: + uxth r1, r7 + ldr r3, [r4, #-3540] + movw r0, #65535 + lsl r5, r1, #1 + ldrh r2, [r3, r5] + ldr r3, [r4, #-476] + ldrh r3, [r3, r5] + cmp r2, r0 + cmpne r2, r3 + beq .L3094 + ldrh r0, [r8] + cmp r0, r6 + beq .L3094 + ldrh r0, [r10] + cmp r0, r6 + beq .L3094 + ldr r0, .L3104+24 + ldrh r0, [r0] + cmp r0, r6 + beq .L3094 + ldr r0, .L3104+28 + bl printk + ldr r3, [r4, #-3540] + ldrh r2, [r3, r5] + cmp r2, #0 + ldr r2, [r4, #-476] + ldrh r2, [r2, r5] + strh r2, [r3, r5] @ movhi + bne .L3095 +.L3094: + add r7, r7, #1 + b .L3093 +.L3095: + mov r0, r6 + bl update_vpc_list + b .L3094 +.L3105: .align 2 -.L3180: +.L3104: .word .LANCHOR0 - .word .LANCHOR3+216 + .word .LANCHOR3+203 .word .LC110 .word .LANCHOR2 - .word .LANCHOR0+2328 - .word .LANCHOR2-3524 - .word .LANCHOR2-3428 + .word .LANCHOR2-3520 + .word .LANCHOR0+2332 + .word .LANCHOR2-3472 .word .LC152 .fnend .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 .global FtlGcScanTempBlk + .syntax unified + .arm + .fpu softvfp .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: .fnstart @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L3235 - movw r3, #3448 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r2, .L3154 + movw r3, #3444 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #68 sub sp, sp, #68 - ldrh r5, [r2, r3] - movw r3, #65535 mov r4, r0 str r1, [sp, #12] - cmp r5, r3 - beq .L3216 - cmp r5, #0 - bne .L3183 - b .L3184 -.L3216: - mov r5, #0 -.L3183: - ldr r2, .L3235+4 - movw r3, #2388 + ldrh r6, [r2, r3] + movw r3, #65535 + cmp r6, r3 + beq .L3138 + cmp r6, #0 + bne .L3107 +.L3108: + bl FtlGcPageVarInit + b .L3109 +.L3138: + mov r6, #0 +.L3107: + ldr r2, .L3154+4 + movw r3, #2390 ldrh r3, [r2, r3] ldr r2, [sp, #12] - cmp r2, r3 - bne .L3185 -.L3184: - bl FtlGcPageVarInit -.L3185: - ldr r6, .L3235+8 + cmp r3, r2 + beq .L3108 +.L3109: + ldr r5, .L3154+8 mvn r3, #0 str r3, [sp, #8] mov r3, #0 str r3, [sp] -.L3186: +.L3110: ldrh r1, [r4] movw r3, #65535 mov r2, #0 strb r2, [r4, #8] cmp r1, r3 - beq .L3187 -.L3188: -.L3213: - ldr r3, .L3235+12 - mov r7, #0 - ldr ip, [r6, #-2692] - add r1, r4, #14 - mov r8, r7 + beq .L3111 +.L3135: + ldr r3, .L3154+12 + add ip, r4, #16 + ldr r0, [r5, #-536] movw r9, #65535 - ldrh r3, [r3] + ldr lr, [r5, #-2692] mov r10, #36 + ldrh r3, [r3] str r3, [sp, #4] - ldr r3, [r6, #-536] + ldr r3, [r5, #-2696] str r3, [sp, #16] - ldr r3, [r6, #-2696] - str r3, [sp, #20] - ldr r3, .L3235+16 - ldrh r0, [r3] - ldrh lr, [r3, #2] -.L3189: - ldr r2, [sp, #4] - uxth r3, r7 + ldr r3, .L3154+16 + ldrh r2, [r3] + ldrh r8, [r3, #2] + str r2, [sp, #20] + mov r2, #0 + mov r7, r2 +.L3112: + ldr r1, [sp, #4] + uxth r3, r2 + cmp r1, r3 + bhi .L3114 + ldr r10, .L3154+4 + mov fp, #0 + mov r2, #0 + mov r1, r7 + bl FlashReadPages +.L3115: + uxth r3, fp + cmp r7, r3 + bhi .L3133 + ldr r3, [sp] + add r6, r6, #1 + uxth r6, r6 + add r3, r3, #1 + str r3, [sp] + ldr r2, [sp] + ldr r3, [sp, #12] cmp r3, r2 - bcs .L3233 - ldrh r3, [r1, #2]! + ldr r2, .L3154+20 + bls .L3134 +.L3136: + ldrh r3, [r2] + cmp r3, r6 + bhi .L3135 + mov r2, #0 + b .L3111 +.L3114: + ldrh r3, [ip], #2 cmp r3, r9 - beq .L3190 - ldr r2, [sp, #16] - orr r3, r5, r3, asl #10 - mla r2, r10, r8, r2 - str r3, [r2, #4] - mul r3, r0, r8 + beq .L3113 + mla r1, r10, r7, r0 + orr r3, r6, r3, lsl #10 + str r3, [r1, #4] + ldr r3, [sp, #20] + mul r3, r3, r7 add fp, r3, #3 cmp r3, #0 movlt r3, fp - ldr fp, [sp, #20] + ldr fp, [sp, #16] bic r3, r3, #3 add r3, fp, r3 - str r3, [r2, #8] - mul r3, lr, r8 - add r8, r8, #1 - uxth r8, r8 + str r3, [r1, #8] + mul r3, r8, r7 + add r7, r7, #1 + uxth r7, r7 add fp, r3, #3 cmp r3, #0 movlt r3, fp bic r3, r3, #3 - add r3, ip, r3 - str r3, [r2, #12] -.L3190: - add r7, r7, #1 - b .L3189 -.L3233: - ldr r0, [r6, #-536] - mov r1, r8 - mov r2, #0 - mov fp, #0 - bl FlashReadPages -.L3192: - uxth r3, fp - cmp r3, r8 - bcs .L3234 - ldr r3, .L3235+8 + add r3, lr, r3 + str r3, [r1, #12] +.L3113: + add r2, r2, #1 + b .L3112 +.L3133: mov r9, #36 + ldr r8, [r5, #-536] mul r9, r9, fp - ldr r7, [r3, #-536] - add r10, r7, r9 - ldr r3, [r10, #4] - ubfx r0, r3, #10, #16 - str r3, [sp, #4] + add r3, r8, r9 + ldr r2, [r3, #4] + str r3, [sp, #16] + ubfx r0, r2, #10, #16 + str r2, [sp, #4] bl P2V_plane - ldr r7, [r7, r9] - ldr r10, [r10, #12] - cmp r7, #0 - ldr ip, .L3235+4 - ldr r3, .L3235+8 + ldr r8, [r8, r9] mov r2, r0 - bne .L3193 - ldrh r0, [r10] + ldr r3, [sp, #16] + cmp r8, #0 + ldr r3, [r3, #12] + bne .L3116 + ldrh r0, [r3] movw r1, #65535 cmp r0, r1 - bne .L3194 -.L3197: - ldrb r1, [ip, #144] @ zero_extendqisi2 + bne .L3117 +.L3120: + ldrb r1, [r10, #152] @ zero_extendqisi2 cmp r1, #0 - beq .L3228 - mov r1, #1 - str r1, [r3, #-372] - b .L3187 -.L3194: - ldr r1, .L3235+4 - ldr r0, [r10, #8] - ldr r1, [r1, #2448] + beq .L3150 + mov r3, #1 + str r3, [r5, #-372] +.L3111: + ldr r1, .L3154 + mvn r0, #0 + movw r3, #3444 + strh r6, [r4, #2] @ movhi + strb r2, [r4, #6] + strh r0, [r1, r3] @ movhi + mov r1, r6 + mov r0, r4 + bl ftl_sb_update_avl_pages + b .L3106 +.L3117: + ldr r0, [r3, #8] + ldr r1, [r10, #2452] cmp r0, r1 - bls .L3229 - b .L3197 -.L3228: + bhi .L3120 + ldrb r2, [r10, #36] @ zero_extendqisi2 + cmp r2, #0 + bne .L3123 +.L3124: + ldr r2, [r3, #8] + add fp, fp, #1 + ldr r1, [sp, #4] + ldr r0, [r3, #12] + bl FtlGcUpdatePage + b .L3115 +.L3150: ldrh r3, [r4] - ldr r2, .L3235+8 - mov r3, r3, asl #1 - ldr r2, [r2, #-3544] - b .L3232 -.L3229: - ldr r3, .L3235+4 - ldrb r3, [r3] @ zero_extendqisi2 - cmp r3, #0 - beq .L3201 - add r1, sp, #24 - mov r2, r7 - bl log2phys - ldr r3, [r10, #12] - ldr r2, [sp, #24] - rsb r1, r3, r2 - cmn r2, #1 - clz r1, r1 - mov r1, r1, lsr #5 - moveq r1, #0 - cmp r1, #0 - beq .L3201 - str r3, [sp, #32] - mov r2, r7 - ldr r3, [r6, #-504] - add r0, sp, #28 - mov r1, #1 - str r3, [sp, #36] - ldr r3, [r6, #-496] - str r3, [sp, #40] - bl FlashReadPages - ldr r3, .L3235+20 - ldr r2, [r6, #-536] - ldrh r3, [r3] - add r9, r2, r9 - mov r3, r3, asl #7 - ldr r2, [sp, #36] - b .L3203 -.L3204: - add r7, r7, #1 -.L3203: - cmp r7, r3 - beq .L3201 - ldr r1, [r9, #8] - ldr r0, [r1, r7, asl #2] - ldr r1, [r2, r7, asl #2] - cmp r0, r1 - beq .L3204 - ldrh r1, [r4] - ldr r2, [sp, #32] - ldr r0, .L3235+24 - bl printk - ldrh r3, [r4] - ldr r2, [r6, #-3544] - mov r1, #0 - mov r3, r3, asl #1 -.L3232: + ldr r2, [r5, #-3540] + lsl r3, r3, #1 strh r1, [r2, r3] @ movhi ldrh r0, [r4] bl INSERT_FREE_LIST - ldr r2, .L3235+28 + ldr r2, .L3154+24 mvn r3, #0 strh r3, [r4] @ movhi strh r3, [r2] @ movhi - b .L3231 -.L3201: - ldr r0, [r10, #12] - add fp, fp, #1 - ldr r1, [sp, #4] - ldr r2, [r10, #8] - bl FtlGcUpdatePage - b .L3192 -.L3193: - ldr r2, [sp, #4] - ldr r0, .L3235+32 +.L3153: + bl FtlGcPageVarInit + mov r6, #0 + b .L3110 +.L3123: + mov r2, r8 + add r1, sp, #24 + str r3, [sp, #16] + bl log2phys + ldr r3, [sp, #16] + ldr r1, [sp, #24] + ldr r2, [r3, #12] + cmn r1, #1 + sub r0, r2, r1 + clz r0, r0 + lsr r0, r0, #5 + moveq r0, #0 + cmp r0, #0 + beq .L3124 + str r2, [sp, #32] + mov r1, #1 + ldr r2, [r5, #-504] + add r0, sp, #28 + str r2, [sp, #36] + ldr r2, [r5, #-496] + str r2, [sp, #40] + mov r2, r8 + bl FlashReadPages + ldr r2, .L3154+28 + ldr r1, [r5, #-536] + ldr r3, [sp, #16] + ldrh r2, [r2] + add r9, r1, r9 + ldr r1, [sp, #36] + lsl r2, r2, #7 +.L3125: + cmp r8, r2 + beq .L3124 + ldr r0, [r9, #8] + ldr ip, [r0, r8, lsl #2] + ldr r0, [r1, r8, lsl #2] + cmp ip, r0 + beq .L3126 + ldr r2, [sp, #32] ldrh r1, [r4] - str r3, [sp, #20] - str ip, [sp, #16] + ldr r0, .L3154+32 bl printk - ldrh r5, [r4] - ldr ip, [sp, #16] - ldr r3, [sp, #20] - ldr r2, [ip, #2244] + ldrh r3, [r4] + mov r1, #0 + ldr r2, [r5, #-3540] + lsl r3, r3, #1 + strh r1, [r2, r3] @ movhi + ldrh r0, [r4] + bl INSERT_FREE_LIST + ldr r2, .L3154+36 + mvn r3, #0 + strh r3, [r4] @ movhi + strh r3, [r2, #-4] @ movhi + b .L3153 +.L3126: + add r8, r8, #1 + b .L3125 +.L3116: + ldr r2, [sp, #4] + ldrh r1, [r4] + ldr r0, .L3154+40 + bl printk + ldr r3, [r10, #2248] + cmp r3, #0 + ldrh r3, [r4] + bne .L3129 + ldrb r2, [r10, #152] @ zero_extendqisi2 cmp r2, #0 - bne .L3207 - ldrb r2, [ip, #144] @ zero_extendqisi2 - cmp r2, #0 - beq .L3208 -.L3207: - ldr r1, [r3, #-3608] - mov r2, r5, asl #1 + beq .L3130 +.L3129: + ldr r1, [r5, #-3604] + lsl r2, r3, #1 ldrh r2, [r1, r2] cmp r2, #159 - bls .L3209 -.L3208: - ldr r2, [r3, #-536] + bls .L3131 +.L3130: + ldr r2, [r5, #-536] ldr r2, [r2, r9] cmn r2, #1 - bne .L3210 -.L3209: - ldr r3, [r3, #-536] - add r9, r3, r9 - ldr r3, [r9, #4] - str r3, [sp, #8] -.L3210: - ldr r3, .L3235+8 - mov r5, r5, asl #1 - mov r2, #0 - ldr r3, [r3, #-3544] - strh r2, [r3, r5] @ movhi + bne .L3132 +.L3131: + ldr r2, [r5, #-536] + add r9, r2, r9 + ldr r2, [r9, #4] + str r2, [sp, #8] +.L3132: + ldr r2, [r5, #-3540] + lsl r3, r3, #1 + mov r1, #0 + strh r1, [r2, r3] @ movhi ldrh r0, [r4] bl INSERT_FREE_LIST mvn r3, #0 strh r3, [r4] @ movhi -.L3231: - bl FtlGcPageVarInit - mov r5, #0 - b .L3186 -.L3234: - ldr r3, [sp] - add r5, r5, #1 - ldr r2, [sp, #12] - add r3, r3, #1 - uxth r5, r5 - cmp r3, r2 - str r3, [sp] - ldr r2, .L3235+36 - bcs .L3212 -.L3214: - ldrh r3, [r2] - cmp r3, r5 - bhi .L3213 - mov r2, #0 - b .L3187 -.L3212: - ldr r1, .L3235+40 + b .L3153 +.L3134: + ldr r1, .L3154+44 movw r0, #65535 ldrh r3, [r1] cmp r3, r0 - beq .L3214 + beq .L3136 ldr r0, [sp] add r3, r3, r0 strh r3, [r1] @ movhi ldrh r3, [r2] - cmp r3, r5 - bls .L3214 - b .L3215 -.L3187: - ldr r1, .L3235 - movw r3, #3448 - mvn r0, #0 - strh r5, [r4, #2] @ movhi - strb r2, [r4, #6] - strh r0, [r1, r3] @ movhi - mov r0, r4 - mov r1, r5 - bl ftl_sb_update_avl_pages -.L3215: + cmp r3, r6 + bls .L3136 +.L3106: ldr r0, [sp, #8] add sp, sp, #68 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3236: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3155: .align 2 -.L3235: +.L3154: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2320 - .word .LANCHOR0+2398 - .word .LANCHOR0+2394 - .word .LC153 + .word .LANCHOR0+2324 + .word .LANCHOR0+2400 + .word .LANCHOR0+2390 .word .LANCHOR2-3284 + .word .LANCHOR0+2396 + .word .LC153 + .word .LANCHOR2-3280 .word .LC154 - .word .LANCHOR0+2388 - .word .LANCHOR1+3448 + .word .LANCHOR1+3444 .fnend .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 .global FtlReadRefresh + .syntax unified + .arm + .fpu softvfp .type FtlReadRefresh, %function FtlReadRefresh: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} .pad #40 sub sp, sp, #40 - ldr r5, .L3254 - ldr r4, .L3254+4 - ldr r9, [r5, #-3152] + ldr r5, .L3173 + ldr r9, [r5, #-3156] mov r6, r5 cmp r9, #0 - beq .L3238 - ldr r2, [r5, #-3148] - ldr r3, [r4, #2448] - cmp r2, r3 - bcs .L3239 + beq .L3157 + ldr r3, .L3173+4 + ldr r1, [r5, #-3152] + ldr r2, [r3, #2452] + mov r4, r3 + cmp r1, r2 + bcs .L3158 mov r5, #2048 - mov r7, r6 -.L3244: - ldr r0, [r6, #-3148] - ldr r3, [r4, #2448] +.L3163: + ldr r0, [r6, #-3152] + ldr r3, [r4, #2452] cmp r0, r3 - bcs .L3243 + bcc .L3159 +.L3162: + mvn r0, #0 +.L3156: + add sp, sp, #40 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3159: mov r2, #0 mov r1, sp bl log2phys - ldr r3, [r7, #-3148] - add r3, r3, #1 - str r3, [r7, #-3148] ldr r2, [sp] + ldr r3, [r6, #-3152] cmn r2, #1 - beq .L3242 - add r0, sp, #40 + add r3, r3, #1 + str r3, [r6, #-3152] + beq .L3161 str r2, [sp, #8] - mov r1, #1 + add r0, sp, #40 mov r2, #0 + mov r1, #1 str r2, [r0, #-36]! str r3, [sp, #20] str r2, [sp, #12] @@ -19210,357 +19723,352 @@ bl FlashReadPages ldr r3, [sp, #4] cmp r3, #256 - bne .L3243 + bne .L3162 ldr r0, [sp] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3243: - mvn r0, #0 - b .L3246 -.L3242: + b .L3162 +.L3161: subs r5, r5, #1 - bne .L3244 - b .L3243 -.L3239: + bne .L3163 + b .L3162 +.L3158: ldr r3, [r5, #-3364] mov r0, #0 + str r0, [r5, #-3156] str r0, [r5, #-3152] - str r0, [r5, #-3148] - str r3, [r5, #-3156] - b .L3246 -.L3238: + str r3, [r5, #-3160] + b .L3156 +.L3157: ldr r1, [r5, #-3312] - sub r10, r5, #3600 - ldr r8, [r5, #-3364] - ldr r3, [r4, #2448] movw r4, #10000 - ldr r7, [r5, #-3156] + ldr r8, [r5, #-3364] + sub r10, r5, #3584 + ldr r7, [r5, #-3160] cmp r1, r4 - add r2, r8, #1048576 + add r3, r8, #1048576 movhi r4, #31 movls r4, #63 - cmp r7, r2 - bhi .L3248 - mov r1, r1, lsr #10 + cmp r7, r3 + bhi .L3167 + ldr r3, .L3173+4 + lsr r1, r1, #10 mov r0, #1000 - mul r0, r0, r3 add r1, r1, #1 + ldr r3, [r3, #2452] + mul r0, r0, r3 bl __aeabi_uidiv add r0, r0, r7 - cmp r0, r8 - bcc .L3248 - ldrh r3, [r10, #28] + cmp r8, r0 + bhi .L3167 + ldrh r3, [r10, #16] ands r0, r4, r3 movne r0, r9 - bne .L3246 - ldr r2, [r5, #-3132] - cmp r2, r3 - beq .L3246 -.L3248: - ldrh r3, [r10, #28] + bne .L3156 + ldr r2, [r5, #-3136] + cmp r3, r2 + beq .L3156 +.L3167: + ldrh r3, [r10, #16] mov r0, #0 - str r8, [r6, #-3156] - str r0, [r6, #-3148] - str r3, [r6, #-3132] + str r0, [r6, #-3152] + str r8, [r6, #-3160] + str r3, [r6, #-3136] mov r3, #1 - str r3, [r6, #-3152] -.L3246: - add sp, sp, #40 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L3255: + str r3, [r6, #-3156] + b .L3156 +.L3174: .align 2 -.L3254: +.L3173: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlReadRefresh, .-FtlReadRefresh .align 2 .global FtlGcFreeTempBlock + .syntax unified + .arm + .fpu softvfp .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2388 - ldr r4, .L3295 - .pad #28 - sub sp, sp, #28 - ldr r6, .L3295+4 - ldr ip, [r4, #-3616] + movw r3, #2390 + ldr r4, .L3213 + .pad #20 + sub sp, sp, #20 + ldr r6, .L3213+4 + ldr ip, [r4, #-3612] ldrh r1, [r6, r3] cmp ip, #0 - bne .L3293 - sub r7, r4, #3424 + beq .L3176 +.L3212: + mov r0, #0 +.L3175: + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3176: + sub r5, r4, #3424 movw lr, #65535 - ldrh r5, [r7, #-4] - cmp r5, lr - bne .L3259 -.L3268: - ldrh r2, [r7, #-4] + ldrh r7, [r5] + cmp r7, lr + bne .L3178 +.L3187: + ldrh r2, [r5] movw r3, #65535 - ldr r5, .L3295 - mov r8, #0 + mov r7, #0 + str r7, [r4, #-372] cmp r2, r3 - str r8, [r4, #-372] - sub r9, r5, #3424 - beq .L3293 + beq .L3212 bl FtlCacheWriteBack - movw r2, #2388 - ldrb r0, [r5, #-3421] @ zero_extendqisi2 - ldrh r2, [r6, r2] - ldrh r3, [r9, #-4] - ldr r1, [r5, #-3544] - smulbb r2, r0, r2 - mov r3, r3, asl #1 + movw r0, #2390 + ldrb r2, [r4, #-3417] @ zero_extendqisi2 + ldrh r0, [r6, r0] + mov fp, #12 + ldrh r3, [r5] + ldr r1, [r4, #-3540] + ldr r8, .L3213+8 + smulbb r2, r2, r0 + lsl r3, r3, #1 strh r2, [r1, r3] @ movhi - sub r2, r5, #2656 - ldr r3, [r5, #-3344] - sub fp, r2, #12 - ldrh ip, [r2, #-12] - sub r10, r2, #772 - add r3, ip, r3 - str r3, [r5, #-3344] - stmib sp, {r2, r5} - b .L3269 -.L3259: + ldr r2, [r4, #-3344] + ldrh r3, [r8, #-12] + add r3, r3, r2 + str r3, [r4, #-3344] +.L3188: + ldrh r2, [r8, #-12] + uxth r3, r7 + cmp r2, r3 + bhi .L3192 + movw r0, #65535 + bl decrement_vpc_count + ldrb r3, [r6, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L3193 + ldrh r1, [r5] + ldr r0, .L3213+12 + bl printk +.L3193: + ldrh r0, [r5] + ldr r2, [r4, #-3540] + lsl r3, r0, #1 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L3194 + bl INSERT_DATA_LIST +.L3195: + ldr r7, .L3213+16 + mvn r9, #0 + strh r9, [r5] @ movhi + mov r5, #0 + strh r5, [r8, #-12] @ movhi + strh r5, [r7, #-4] @ movhi + bl l2p_flush + bl FtlVpcTblFlush + sub r3, r7, #608 + sub r2, r7, #848 + strh r9, [r3, #-4] @ movhi + ldr r3, [r6, #2248] + ldrh r2, [r2, #-4] + cmp r3, r5 + sub r3, r7, #624 + ldrh r3, [r3, #-8] + beq .L3196 + ldr r1, [r4, #-3308] + cmp r1, #39 + bhi .L3196 + cmp r2, r3 + lslcc r3, r3, #1 + strhcc r3, [r7, #-48] @ movhi + b .L3212 +.L3178: cmp r0, #0 - beq .L3262 - ldr r2, .L3295+8 - movw r3, #3448 + beq .L3181 + ldr r2, .L3213+20 + movw r3, #3444 ldrh r0, [r2, r3] cmp r0, lr - beq .L3263 -.L3264: + beq .L3182 +.L3183: mov r1, #2 - b .L3262 -.L3263: - strh ip, [r2, r3] @ movhi - sub r3, r4, #3520 - ldrh r3, [r3, #-8] - cmp r3, #17 - bhi .L3264 -.L3262: - ldr r0, .L3295+12 +.L3181: + ldr r0, .L3213+24 bl FtlGcScanTempBlk cmn r0, #1 - str r0, [sp, #20] - beq .L3265 - ldr r3, .L3295 - mov r5, r5, asl #1 - ldr r2, [r3, #-3608] - ldrh r3, [r2, r5] + str r0, [sp, #12] + beq .L3184 + ldr r2, [r4, #-3604] + lsl r7, r7, #1 + ldrh r3, [r2, r7] cmp r3, #4 - bls .L3266 + bls .L3185 sub r3, r3, #5 mov r0, #1 - strh r3, [r2, r5] @ movhi + strh r3, [r2, r7] @ movhi bl FtlEctTblFlush -.L3266: +.L3185: ldr r3, [r4, #-372] - ldr r2, .L3295 cmp r3, #0 - bne .L3267 - ldr r0, [sp, #20] - ldr r3, [r2, #-3136] - ubfx r0, r0, #10, #16 + bne .L3186 + ldr r3, [r4, #-3140] + ldr r0, [sp, #12] add r3, r3, #1 - str r3, [r2, #-3136] + ubfx r0, r0, #10, #16 + str r3, [r4, #-3140] bl FtlBbmMapBadBlock bl FtlBbmTblFlush -.L3267: +.L3186: mov r3, #0 str r3, [r4, #-372] - b .L3279 -.L3265: - ldr r2, .L3295+8 - movw r3, #3448 +.L3198: + mov r0, #1 + b .L3175 +.L3182: + strh ip, [r2, r3] @ movhi + sub r3, r4, #3520 + ldrh r3, [r3, #-4] + cmp r3, #17 + bhi .L3183 + b .L3181 +.L3184: + ldr r2, .L3213+20 + movw r3, #3444 ldrh r2, [r2, r3] movw r3, #65535 cmp r2, r3 - bne .L3279 - b .L3268 -.L3272: - ldr r3, [r5, #4] - cmp r0, r3 - bne .L3291 -.L3271: - add r8, r8, #1 -.L3269: - ldrh r2, [fp] - uxth r3, r8 - cmp r2, r3 - bls .L3294 - mov r9, #12 - ldr r2, [r6, #2448] - mul r9, r9, r3 - ldr r3, [sp, #8] - ldr ip, [r3, #-2672] - add r5, ip, r9 - ldr r0, [r5, #8] + bne .L3198 + b .L3187 +.L3192: + uxth r10, r7 + ldr r3, [r4, #-2672] + ldr r2, [r6, #2452] + mul r10, fp, r10 + add r9, r3, r10 + ldr r0, [r9, #8] cmp r0, r2 - bcs .L3291 + bcc .L3189 +.L3210: + ldrh r0, [r5] + b .L3211 +.L3189: mov r2, #0 - add r1, sp, #20 - str ip, [sp, #12] + add r1, sp, #12 + str r3, [sp, #4] bl log2phys - ldr ip, [sp, #12] - ldr r0, [sp, #20] - ldr r2, [ip, r9] + ldr r3, [sp, #4] + ldr r2, [sp, #12] + ldr r0, [r3, r10] cmp r0, r2 - bne .L3272 + bne .L3191 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - add r1, r5, #4 mov r2, #1 - mov r9, r0 - ldr r0, [r5, #8] + mov r10, r0 + add r1, r9, #4 + ldr r0, [r9, #8] bl log2phys - mov r0, r9 - b .L3292 -.L3291: - ldrh r0, [r10] -.L3292: + mov r0, r10 +.L3211: bl decrement_vpc_count - b .L3271 -.L3294: - movw r0, #65535 - bl decrement_vpc_count - ldrb r3, [r6, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L3274 - ldr r0, .L3295+16 - ldrh r1, [r7, #-4] - bl printk -.L3274: - ldrh r0, [r7, #-4] - ldr r2, [r4, #-3544] - mov r3, r0, asl #1 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L3275 - bl INSERT_DATA_LIST - b .L3276 -.L3275: - bl INSERT_FREE_LIST -.L3276: - ldr r3, [sp, #4] - mvn r5, #0 - ldr r4, .L3295 - strh r5, [r7, #-4] @ movhi - mov r7, #0 - strh r7, [r3, #-12] @ movhi - sub r3, r4, #2672 - strh r7, [r3, #-4] @ movhi - bl l2p_flush - bl FtlVpcTblFlush - sub r3, r4, #3280 - sub r2, r4, #3520 - strh r5, [r3, #-4] @ movhi - ldr r3, [r6, #2244] - ldrh r2, [r2, #-8] - cmp r3, r7 - sub r3, r4, #3296 - ldrh r3, [r3, #-8] - beq .L3277 - ldr r1, [r4, #-3308] - cmp r1, #39 - bhi .L3277 + b .L3190 +.L3191: + ldr r3, [r9, #4] cmp r2, r3 - subcc r4, r4, #2720 - movcc r3, r3, asl #1 - strcch r3, [r4] @ movhi - b .L3293 -.L3277: - add r1, r3, r3, asl #1 + bne .L3210 +.L3190: + add r7, r7, #1 + b .L3188 +.L3194: + bl INSERT_FREE_LIST + b .L3195 +.L3196: + add r1, r3, r3, lsl #1 cmp r2, r1, asr #2 - ble .L3293 - ldrb r0, [r6, #144] @ zero_extendqisi2 - ldr r2, .L3295+20 + ble .L3212 + ldrb r0, [r6, #152] @ zero_extendqisi2 + ldr r2, .L3213+28 cmp r0, #0 moveq r3, #20 - streqh r3, [r2] @ movhi - beq .L3258 + strheq r3, [r2] @ movhi + beq .L3175 sub r3, r3, #2 strh r3, [r2] @ movhi -.L3293: - mov r0, #0 - b .L3258 -.L3279: - mov r0, #1 -.L3258: - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3296: + b .L3212 +.L3214: .align 2 -.L3295: +.L3213: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR2-3428 + .word .LANCHOR2-2656 .word .LC155 + .word .LANCHOR2-2672 + .word .LANCHOR1 + .word .LANCHOR2-3424 .word .LANCHOR2-2720 .fnend .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 .global FtlGcPageRecovery + .syntax unified + .arm + .fpu softvfp .type FtlGcPageRecovery, %function FtlGcPageRecovery: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - movw r5, #2388 - ldr r7, .L3300 - ldr r6, .L3300+4 - ldr r4, .L3300+8 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + movw r5, #2390 + ldr r4, .L3218 + ldr r6, .L3218+4 + sub r7, r4, #3424 mov r0, r7 ldrh r1, [r6, r5] bl FtlGcScanTempBlk ldrh r2, [r7, #2] ldrh r3, [r6, r5] cmp r2, r3 - ldmccfd sp!, {r3, r4, r5, r6, r7, pc} + popcc {r4, r5, r6, r7, r8, pc} sub r0, r4, #432 bl FtlMapBlkWriteDumpData mov r0, #0 bl FtlGcFreeTempBlock mov r3, #0 str r3, [r4, #-372] - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L3301: + pop {r4, r5, r6, r7, r8, pc} +.L3219: .align 2 -.L3300: - .word .LANCHOR2-3428 - .word .LANCHOR0 +.L3218: .word .LANCHOR2 + .word .LANCHOR0 .fnend .size FtlGcPageRecovery, .-FtlGcPageRecovery .align 2 .global FtlPowerLostRecovery + .syntax unified + .arm + .fpu softvfp .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r6, #0 - ldr r4, .L3304 - ldr r3, .L3304+4 - sub r5, r4, #3520 + mov r5, #0 + ldr r4, .L3222 + sub r6, r4, #3520 + str r5, [r4, #1852] + mov r0, r6 sub r4, r4, #3472 - sub r5, r5, #4 - sub r4, r4, #4 - str r6, [r3, #1852] - mov r0, r5 bl FtlRecoverySuperblock - mov r0, r5 + mov r0, r6 bl FtlSlcSuperblockCheck mov r0, r4 bl FtlRecoverySuperblock @@ -19569,51 +20077,54 @@ bl FtlGcPageRecovery movw r0, #65535 bl decrement_vpc_count - mov r0, r6 - ldmfd sp!, {r4, r5, r6, pc} -.L3305: + mov r0, r5 + pop {r4, r5, r6, pc} +.L3223: .align 2 -.L3304: +.L3222: .word .LANCHOR2 - .word .LANCHOR4 .fnend .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .align 2 .global FtlSysBlkInit + .syntax unified + .arm + .fpu softvfp .type FtlSysBlkInit, %function FtlSysBlkInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} - movw r3, #1850 - ldr r4, .L3324 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r2, #0 - ldr r6, .L3324+4 - ldr r5, .L3324+8 - strh r2, [r4, r3] @ movhi + ldr r5, .L3242 movw r3, #1848 + ldr r6, .L3242+4 + strh r2, [r5, r3] @ movhi mvn r2, #0 - strh r2, [r4, r3] @ movhi - ldr r3, [r6, #2324] - uxth r0, r3 + movw r3, #1846 + strh r2, [r5, r3] @ movhi + add r3, r6, #2320 + add r3, r3, #8 + ldrh r0, [r3] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk sub r3, r5, #3296 ldrh r2, [r3, #-4] movw r3, #65535 cmp r2, r3 - bne .L3307 -.L3309: - mvn r8, #0 - b .L3308 -.L3307: + bne .L3225 +.L3227: + mvn r7, #0 +.L3224: + mov r0, r7 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3225: bl FtlLoadSysInfo - subs r8, r0, #0 - bne .L3309 + subs r7, r0, #0 + bne .L3227 bl FtlLoadMapInfo - mov r7, r4 bl FtlLoadVonderInfo bl Ftl_load_ext_data bl FtlLoadEctTbl @@ -19622,638 +20133,642 @@ bl FtlPowerLostRecovery mov r0, #1 bl FtlUpdateVaildLpn - ldr r2, [r5, #-3380] - movw r3, #2426 - mov r0, #12 + ldr r2, [r5, #-3376] + movw r3, #2430 ldrh r1, [r6, r3] - mov r3, r8 -.L3310: + mov r0, #12 + mov r3, r7 +.L3228: cmp r3, r1 - bge .L3315 + bge .L3233 mla ip, r0, r3, r2 ldr ip, [ip, #4] cmp ip, #0 - bge .L3311 -.L3315: - ldr r4, .L3324+12 + bge .L3229 +.L3233: + ldr r4, .L3242+8 cmp r3, r1 - add r9, r4, #80 ldrh r2, [r4, #28] + add r8, r4, #12 + add r4, r4, #76 add r2, r2, #1 - strh r2, [r4, #28] @ movhi - bge .L3322 - b .L3312 -.L3311: - add r3, r3, #1 - b .L3310 -.L3322: - movw r3, #1850 - ldrh r3, [r7, r3] - cmp r3, #0 - beq .L3316 -.L3312: - ldrh r2, [r9, #-4] - ldr r3, .L3324+16 - ldr r0, [r5, #-3544] - mov r2, r2, asl #1 - ldrh ip, [r3, #4] - ldrh r1, [r0, r2] - rsb r1, ip, r1 - movw ip, #2388 - strh r1, [r0, r2] @ movhi - add r1, r3, #48 - ldrh r2, [r6, ip] - ldr lr, [r5, #-3544] - ldrh r7, [r1, #4] - strh r2, [r3, #2] @ movhi + strh r2, [r4, #-48] @ movhi + bge .L3240 +.L3230: + ldrh r3, [r4] + movw ip, #2390 + ldr r1, [r5, #-3540] + ldrh r0, [r4, #4] + lsl r3, r3, #1 + ldrh r2, [r1, r3] + sub r2, r2, r0 + strh r2, [r1, r3] @ movhi mov r2, #0 - strh r2, [r3, #4] @ movhi - ldrh r3, [r3, #48] - strb r2, [r5, #-3518] - mov r3, r3, asl #1 - ldrh r0, [lr, r3] - rsb r0, r7, r0 - strh r0, [lr, r3] @ movhi ldrh r3, [r6, ip] - strb r2, [r5, #-3470] - strh r2, [r1, #4] @ movhi - strh r3, [r1, #2] @ movhi - ldrh r3, [r4, #30] + ldr lr, [r5, #-3540] + strb r2, [r5, #-3514] + strh r3, [r4, #2] @ movhi + ldr r3, .L3242+12 + strh r2, [r4, #4] @ movhi + ldrh r1, [r3] + ldrh r9, [r3, #4] + lsl r1, r1, #1 + ldrh r0, [lr, r1] + sub r0, r0, r9 + strh r0, [lr, r1] @ movhi + ldrh r1, [r6, ip] + strh r2, [r3, #4] @ movhi + strb r2, [r5, #-3466] + strh r1, [r3, #2] @ movhi + ldrh r3, [r8, #18] add r3, r3, #1 - strh r3, [r4, #30] @ movhi + strh r3, [r8, #18] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L3316: - ldrh r0, [r9, #-4] + b .L3234 +.L3229: + add r3, r3, #1 + b .L3228 +.L3240: + movw r3, #1848 + ldrh r3, [r5, r3] + cmp r3, #0 + bne .L3230 +.L3234: + ldrh r0, [r4] movw r3, #65535 - ldr r5, .L3324+16 cmp r0, r3 - beq .L3317 - ldrh r3, [r5, #4] + beq .L3235 + ldrh r3, [r4, #4] cmp r3, #0 - bne .L3317 - ldrh r3, [r5, #52] - add r9, r5, #52 - add r7, r5, #48 + bne .L3235 + ldr r4, .L3242+12 + ldrh r3, [r4, #4] cmp r3, #0 - bne .L3317 + bne .L3235 bl FtlGcRefreshOpenBlock - ldrh r0, [r5, #48] + ldrh r0, [r4] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush - mov r0, r5 + sub r0, r4, #48 bl allocate_new_data_superblock - mov r0, r7 + mov r0, r4 bl allocate_new_data_superblock -.L3317: - ldrb r3, [r6] @ zero_extendqisi2 +.L3235: + ldrb r3, [r6, #36] @ zero_extendqisi2 cmp r3, #0 - bne .L3318 - ldrh r3, [r4, #28] + bne .L3236 + ldrh r3, [r8, #16] tst r3, #31 - bne .L3308 -.L3318: + bne .L3224 +.L3236: bl FtlVpcCheckAndModify -.L3308: - mov r0, r8 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -.L3325: + b .L3224 +.L3243: .align 2 -.L3324: - .word .LANCHOR4 - .word .LANCHOR0 +.L3242: .word .LANCHOR2 - .word .LANCHOR2-3600 - .word .LANCHOR2-3524 + .word .LANCHOR0 + .word .LANCHOR2-3596 + .word .LANCHOR2-3472 .fnend .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 .global FtlLowFormat + .syntax unified + .arm + .fpu softvfp .type FtlLowFormat, %function FtlLowFormat: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 r4, .L3361 - ldr r6, [r4, #-3616] + ldr r4, .L3276 + ldr r6, [r4, #-3612] cmp r6, #0 - bne .L3328 - ldr r5, .L3361+4 - movw r7, #2424 + bne .L3246 + ldr r5, .L3276+4 + movw r7, #2428 mov r1, r6 ldr r0, [r4, #-448] ldrh r2, [r5, r7] - mov r2, r2, asl #2 + lsl r2, r2, #2 bl ftl_memset ldrh r2, [r5, r7] mov r1, r6 ldr r0, [r4, #-452] - mov r2, r2, asl #2 + lsl r2, r2, #2 bl ftl_memset - ldr r3, [r5, #2324] + add r3, r5, #2320 str r6, [r4, #-3332] + add r3, r3, #8 + ldrh r0, [r3] str r6, [r4, #-3328] - uxth r0, r3 bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cmp r0, #0 - beq .L3329 + beq .L3247 bl FtlMakeBbt -.L3329: - ldr r0, .L3361+8 +.L3247: + ldr r0, .L3276+8 mov r2, #0 - ldr ip, .L3361+12 -.L3330: + ldr ip, .L3276+12 +.L3248: ldrh r1, [r0] uxth r3, r2 add r2, r2, #1 - cmp r3, r1, asl #7 - bge .L3358 - ldr lr, [r4, #-508] - mvn r1, r3 - orr r1, r3, r1, asl #16 - str r1, [lr, r3, asl #2] - ldr r1, [r4, #-504] - str ip, [r1, r3, asl #2] - b .L3330 -.L3358: - ldr r2, .L3361+4 - movw r3, #2328 - ldr r7, .L3361+16 - mov r8, #0 - ldrh r6, [r2, r3] -.L3332: - ldrh r3, [r7] - ldr r10, .L3361+4 - cmp r3, r6 - ldr r9, .L3361+16 - bls .L3359 + cmp r3, r1, lsl #7 + blt .L3249 + movw r3, #2332 + ldr r9, .L3276+16 + ldrh r7, [r5, r3] + mov r6, #0 + mov r8, r9 +.L3250: + ldrh r3, [r9] + cmp r3, r7 + bhi .L3251 + movw r3, #2324 + ldrh r1, [r5, r3] + sub r3, r6, #3 + cmp r3, r1, lsl #1 + blt .L3252 mov r0, r6 - mov r1, #1 - bl FtlLowFormatEraseBlock - add r6, r6, #1 - uxth r6, r6 - add r0, r8, r0 - uxth r8, r0 - b .L3332 -.L3359: - add r7, r10, #2320 - sub r3, r8, #3 - ldrh r1, [r7] - cmp r3, r1, asl #1 - blt .L3334 - mov r0, r8 - mov r8, #0 + mov r6, #0 bl __aeabi_uidiv - ldr r3, [r10, #2420] + ldr r3, [r5, #2424] add r0, r0, r3 uxth r0, r0 bl FtlSysBlkNumInit - ldr r3, [r10, #2324] - uxth r0, r3 + add r3, r5, #2320 + add r3, r3, #8 + ldrh r0, [r3] bl FtlFreeSysBlkQueueInit - movw r3, #2328 - ldrh r6, [r10, r3] -.L3335: - ldrh r3, [r9] - cmp r3, r6 - bls .L3334 - mov r0, r6 - mov r1, #1 - bl FtlLowFormatEraseBlock - add r6, r6, #1 - uxth r6, r6 - add r0, r8, r0 - uxth r8, r0 - b .L3335 -.L3334: - ldr r10, .L3361+20 - mov r9, #0 - mov r6, r9 -.L3337: - ldrh r2, [r10] - uxth r0, r9 - ldr r3, .L3361+4 - add r9, r9, #1 - cmp r2, r0 - bls .L3360 - mov r1, #0 - bl FtlLowFormatEraseBlock - add r0, r6, r0 - uxth r6, r0 - b .L3337 -.L3360: - movw r2, #2330 - ldrh r9, [r7] - ldrh r2, [r3, r2] - str r3, [sp, #4] - mov r1, r9 - ldr r7, .L3361+24 - str r2, [r4, #-548] - ldr r2, [r3, #2332] + movw r3, #2332 + ldrh r7, [r5, r3] +.L3253: + ldrh r3, [r8] + cmp r3, r7 + bhi .L3254 +.L3252: + ldr r8, .L3276+20 + mov r7, #0 + mov r9, r7 +.L3255: + ldrh r3, [r8] + uxth r0, r7 + add r7, r7, #1 + cmp r3, r0 + bhi .L3256 + movw r3, #2334 + ldr r2, [r5, #2336] + ldrh r3, [r5, r3] + ldr r8, .L3276+24 mov r0, r2 - str r2, [sp] + str r2, [sp, #4] + str r3, [r4, #-548] + movw r3, #2324 + ldrh r7, [r5, r3] + mov r1, r7 bl __aeabi_uidiv ubfx r10, r0, #5, #16 - ldr r3, [sp, #4] - add r1, r10, #36 - strh r1, [r7, #-8] @ movhi - mov r1, #24 mov fp, r0 - mul r1, r1, r9 - str r0, [r3, #2448] - ldr r2, [sp] - cmp r6, r1 - ble .L3339 - rsb r0, r6, r2 - mov r1, r9 - str r3, [sp] + add r3, r10, #36 + str r0, [r5, #2452] + strh r3, [r8, #-8] @ movhi + mov r3, #24 + mul r3, r3, r7 + cmp r9, r3 + ble .L3257 + ldr r2, [sp, #4] + mov r1, r7 + sub r0, r2, r9 bl __aeabi_uidiv - ldr r3, [sp] - str r0, [r3, #2448] - mov r0, r0, lsr #5 + str r0, [r5, #2452] + lsr r0, r0, #5 add r0, r0, #24 - strh r0, [r7, #-8] @ movhi -.L3339: - ldr r3, [r5, #2244] + strh r0, [r8, #-8] @ movhi +.L3257: + ldr r3, [r5, #2248] cmp r3, #1 - bne .L3340 - ldrh r3, [r7, #-8] - mov r0, r6 - mov r1, r9 - str r3, [sp] + bne .L3258 + ldrh r3, [r8, #-8] + mov r1, r7 + mov r0, r9 + str r3, [sp, #4] bl __aeabi_uidiv - ldr r3, [sp] + ldr r3, [sp, #4] uxtah r0, r3, r0 add r3, r3, r0, asr #2 - strh r3, [r7, #-8] @ movhi -.L3340: - ldrb r3, [r5, #144] @ zero_extendqisi2 + strh r3, [r8, #-8] @ movhi +.L3258: + ldrb r3, [r5, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3341 - ldrh r3, [r7, #-8] - mov r0, r6 - mov r1, r9 - str r3, [sp] + beq .L3259 + ldrh r3, [r8, #-8] + mov r1, r7 + mov r0, r9 + str r3, [sp, #4] bl __aeabi_uidiv - ldr r3, [sp] + ldr r3, [sp, #4] uxtah r0, r3, r0 add r3, r3, r0, asr #2 - strh r3, [r7, #-8] @ movhi -.L3341: - movw r3, #2382 - ldrh r3, [r5, r3] + strh r3, [r8, #-8] @ movhi +.L3259: + ldr r3, .L3276+28 + ldrh r3, [r3] cmp r3, #0 - beq .L3343 - ldrh r2, [r7, #-8] + beq .L3261 + ldrh r2, [r8, #-8] add r2, r2, r3, lsr #1 - strh r2, [r7, #-8] @ movhi - mul r2, r9, r3 - cmp r2, r6 - addgt r3, r3, #32 - ldrgt r2, .L3361+4 - addgt r3, r10, r3 - strgt fp, [r2, #2448] - ldrgt r2, .L3361+24 - strgth r3, [r2, #-8] @ movhi -.L3343: - ldrh r2, [r7, #-8] - ldr r3, [r5, #2448] - rsb r3, r2, r3 - mul r9, r9, r3 - movw r3, #2388 + strh r2, [r8, #-8] @ movhi + mul r2, r7, r3 + cmp r9, r2 + addlt r3, r3, #32 + strlt fp, [r5, #2452] + addlt r3, r10, r3 + strhlt r3, [r8, #-8] @ movhi +.L3261: + ldrh r2, [r8, #-8] + ldr r3, [r5, #2452] + sub r3, r3, r2 + mul r7, r7, r3 + movw r3, #2390 ldrh r3, [r5, r3] - str r9, [r4, #1788] - mul r9, r3, r9 - movw r3, #2394 + str r7, [r4, #1796] + mul r7, r7, r3 + movw r3, #2396 ldrh r3, [r5, r3] - str r9, [r5, #2448] - mul r9, r3, r9 - str r9, [r5, #2428] + str r7, [r5, #2452] + mul r7, r7, r3 + str r7, [r5, #2432] bl FtlBbmTblFlush - ldr r2, [r5, #2336] - movw r3, #2402 + movw r3, #2404 + ldr r2, [r5, #2340] ldrh r3, [r5, r3] - add r1, r6, r8 + add r1, r6, r9 add r3, r3, r2, lsr #3 cmp r1, r3 - bls .L3345 - ldr r0, .L3361+28 - mov r2, r2, lsr #5 + bls .L3263 + lsr r2, r2, #5 + ldr r0, .L3276+32 bl printk -.L3345: - movw r3, #2330 - ldr r6, .L3361+32 +.L3263: + movw r3, #2334 + ldr r6, .L3276+36 ldrh r2, [r5, r3] mov r1, #0 - sub r8, r6, #244 - ldr r0, [r4, #-3544] - mvn r9, #0 - mov r2, r2, asl #1 - mov fp, r8 + ldr r0, [r4, #-3540] + mvn r7, #0 + sub r6, r6, #240 + lsl r2, r2, #1 bl ftl_memset mov r3, #0 - strh r3, [r6, #-2] @ movhi + strh r7, [r6, #236] @ movhi + strh r3, [r6, #238] @ movhi mov r1, #255 - strh r3, [r6, #-244] @ movhi - str r3, [r4, #-3372] + str r3, [r4, #-3368] strb r3, [r4, #-3278] strb r3, [r4, #-3276] - strh r3, [r8, #2] @ movhi - strb r3, [r4, #-3518] - mov r3, #1 - strb r3, [r4, #-3516] - movw r3, #2328 - ldrh r2, [r5, r3] - ldr r0, [r4, #-3368] - strh r9, [r6, #-4] @ movhi - add r6, r6, #3280 - mov r2, r2, lsr #3 - bl ftl_memset -.L3346: - ldr r10, .L3361+36 - ldr r5, .L3361 - mov r0, r10 - bl make_superblock - ldrb r3, [r4, #-3517] @ zero_extendqisi2 - cmp r3, #0 - ldrh r3, [r8] - bne .L3347 - ldr r2, [r6, #-3544] - mov r3, r3, asl #1 - strh r9, [r2, r3] @ movhi - ldrh r3, [fp] - add r3, r3, #1 - strh r3, [fp] @ movhi - b .L3346 -.L3347: - ldr r2, [r5, #-3332] - mov r3, r3, asl #1 - ldrh r1, [r10, #4] - mov r9, r5 - str r2, [r5, #-3512] - add r2, r2, #1 - str r2, [r5, #-3332] - ldr r2, [r5, #-3544] - strh r1, [r2, r3] @ movhi - sub r2, r5, #3472 - sub r6, r2, #4 - mov r3, #0 - strb r3, [r5, #-3470] strh r3, [r6, #2] @ movhi - ldrh r3, [r10] - mvn r10, #0 - add r3, r3, #1 - strh r3, [r2, #-4] @ movhi - mov r3, #1 - strb r3, [r5, #-3468] -.L3348: - ldr r8, .L3361+40 - ldr r5, .L3361 - mov r0, r8 - bl make_superblock - ldrb r3, [r4, #-3469] @ zero_extendqisi2 - cmp r3, #0 - ldrh r3, [r6] - bne .L3349 - ldr r2, [r9, #-3544] - mov r3, r3, asl #1 - strh r10, [r2, r3] @ movhi - ldrh r3, [r6] - add r3, r3, #1 + strb r3, [r4, #-3514] strh r3, [r6] @ movhi - b .L3348 -.L3349: - ldr r2, [r5, #-3332] - mov r3, r3, asl #1 - ldrh r1, [r8, #4] - mvn r4, #0 - str r2, [r5, #-3464] - add r2, r2, #1 - str r2, [r5, #-3332] - ldr r2, [r5, #-3544] - strh r1, [r2, r3] @ movhi - sub r3, r5, #3424 - strh r4, [r3, #-4] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, .L3361+44 - mov r2, #0 - strh r2, [r3, #2] @ movhi - ldr r2, [r5, #1788] - strh r4, [r3, #4] @ movhi - strh r2, [r3, #6] @ movhi - ldr r3, [r5, #-3332] - str r3, [r5, #-3292] + mov r3, #1 + strb r3, [r4, #-3512] + movw r3, #2332 + ldrh r2, [r5, r3] + ldr r0, [r5, #32] + mov r5, r6 + lsr r2, r2, #3 + bl ftl_memset +.L3264: + mov r0, r6 + bl make_superblock + ldrb r3, [r4, #-3513] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r5] + bne .L3265 + ldr r2, [r4, #-3540] + lsl r3, r3, #1 + strh r7, [r2, r3] @ movhi + ldrh r3, [r5] add r3, r3, #1 - str r3, [r5, #-3332] - strh r0, [r7, #-4] @ movhi + strh r3, [r5] @ movhi + b .L3264 +.L3249: + ldr lr, [r4, #-508] + mvn r1, r3 + orr r1, r3, r1, lsl #16 + str r1, [lr, r3, lsl #2] + ldr r1, [r4, #-504] + str ip, [r1, r3, lsl #2] + b .L3248 +.L3251: + mov r0, r7 + mov r1, #1 + bl FtlLowFormatEraseBlock + add r7, r7, #1 + add r6, r6, r0 + uxth r6, r6 + uxth r7, r7 + b .L3250 +.L3254: + mov r0, r7 + mov r1, #1 + bl FtlLowFormatEraseBlock + add r7, r7, #1 + add r6, r6, r0 + uxth r6, r6 + uxth r7, r7 + b .L3253 +.L3256: + mov r1, #0 + bl FtlLowFormatEraseBlock + add r9, r9, r0 + uxth r9, r9 + b .L3255 +.L3265: + ldr r2, [r4, #-3332] + lsl r3, r3, #1 + ldrh r1, [r5, #4] + mvn r6, #0 + str r2, [r4, #-3508] + add r2, r2, #1 + str r2, [r4, #-3332] + ldr r2, [r4, #-3540] + strh r1, [r2, r3] @ movhi + mov r2, #0 + ldr r3, .L3276+40 + strb r2, [r4, #-3466] + strh r2, [r3, #2] @ movhi + mov r7, r3 + ldrh r2, [r5] + mov r5, r3 + add r2, r2, #1 + strh r2, [r3] @ movhi + mov r2, #1 + strb r2, [r4, #-3464] +.L3266: + mov r0, r7 + bl make_superblock + ldrb r3, [r4, #-3465] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r5] + bne .L3267 + ldr r2, [r4, #-3540] + lsl r3, r3, #1 + strh r6, [r2, r3] @ movhi + ldrh r3, [r5] + add r3, r3, #1 + strh r3, [r5] @ movhi + b .L3266 +.L3267: + ldr r2, [r4, #-3332] + lsl r3, r3, #1 + ldrh r1, [r5, #4] + mvn r5, #0 + str r2, [r4, #-3460] + add r2, r2, #1 + str r2, [r4, #-3332] + ldr r2, [r4, #-3540] + strh r1, [r2, r3] @ movhi + ldr r3, .L3276+44 + strh r5, [r3] @ movhi + bl FtlFreeSysBlkQueueOut + sub r3, r8, #4 + mov r2, #0 + strh r5, [r3, #4] @ movhi + ldr r3, [r4, #-3332] + strh r2, [r8, #-2] @ movhi + ldr r2, [r4, #1796] + str r3, [r4, #-3292] + add r3, r3, #1 + str r3, [r4, #-3332] + strh r2, [r8, #2] @ movhi + strh r0, [r8, #-4] @ movhi bl FtlVpcTblFlush bl FtlSysBlkInit cmp r0, #0 - ldreq r3, .L3361+48 + ldreq r3, .L3276+48 moveq r2, #1 - streq r2, [r3, #504] -.L3328: + streq r2, [r3, #500] +.L3246: mov r0, #0 add sp, sp, #12 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3362: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3277: .align 2 -.L3361: +.L3276: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2394 + .word .LANCHOR0+2396 .word 168778952 - .word .LANCHOR0+2330 - .word .LANCHOR0+2328 + .word .LANCHOR0+2334 + .word .LANCHOR0+2332 .word .LANCHOR2-3296 + .word .LANCHOR0+2384 .word .LC156 .word .LANCHOR2-3280 - .word .LANCHOR2-3524 - .word .LANCHOR2-3476 - .word .LANCHOR2-3300 + .word .LANCHOR2-3472 + .word .LANCHOR2-3424 .word .LANCHOR1 .fnend .size FtlLowFormat, .-FtlLowFormat .align 2 .global FtlReInitForSDUpdata + .syntax unified + .arm + .fpu softvfp .type FtlReInitForSDUpdata, %function FtlReInitForSDUpdata: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - .pad #20 - sub sp, sp, #20 - ldr r4, .L3392 - ldrb r3, [r4, #144] @ zero_extendqisi2 + push {r0, r1, r2, r3, r4, r5, r6, lr} + .save {r4, r5, r6, lr} + .pad #16 + ldr r4, .L3314 + ldrb r3, [r4, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3364 -.L3366: - mov r0, #0 - b .L3365 -.L3364: - ldr r5, .L3392+4 + beq .L3279 +.L3281: + mov r6, #0 +.L3278: + mov r0, r6 + add sp, sp, #16 + @ sp needed + pop {r4, r5, r6, pc} +.L3279: + ldr r5, .L3314+4 ldr r0, [r5, #1684] bl FlashInit - cmp r0, #0 - bne .L3366 + subs r6, r0, #0 + bne .L3281 bl FlashLoadFactorBbt cmp r0, #0 - beq .L3367 + beq .L3282 bl FlashMakeFactorBbt -.L3367: - ldr r0, [r5, #1716] +.L3282: + ldr r0, [r5, #1724] bl FlashReadIdbDataRaw cmp r0, #0 - beq .L3368 - mov r1, #0 + beq .L3283 mov r2, #16 + mov r1, #0 mov r0, sp bl FlashReadFacBbtData + ldr r1, [sp] mov r3, #0 mov r2, r3 - mov ip, #1 - ldr r1, [sp] -.L3369: - ands lr, r1, ip, asl r2 - add r0, r3, #1 + mov r0, #1 +.L3285: + ands ip, r1, r0, lsl r2 add r2, r2, #1 - movne r3, r0 + addne r3, r3, #1 cmp r2, #16 - bne .L3369 + bne .L3285 cmp r3, #6 - bls .L3388 + bhi .L3286 +.L3311: + strb r2, [r4, #37] + b .L3287 +.L3286: mov r2, #0 - mov ip, #1 -.L3372: - ands lr, r1, ip, asl r2 - add r0, r3, #1 + mov r0, #1 +.L3289: + ands ip, r1, r0, lsl r2 add r2, r2, #1 - movne r3, r0 + addne r3, r3, #1 cmp r2, #24 - bne .L3372 + bne .L3289 cmp r3, #17 movhi r3, #36 - strhib r3, [r4, #1] - bhi .L3371 -.L3388: - strb r2, [r4, #1] -.L3371: - ldrb r3, [r4, #1] @ zero_extendqisi2 - strh r3, [r4, #142] @ movhi -.L3368: - ldr r1, .L3392+8 - ldr r0, .L3392+12 + strbhi r3, [r4, #37] + bls .L3311 +.L3287: + ldrb r3, [r4, #37] @ zero_extendqisi2 + strh r3, [r4, #150] @ movhi +.L3283: + ldr r1, .L3314+8 + ldr r0, .L3314+12 bl printk - ldr r0, .L3392+16 + ldr r0, .L3314+16 bl FtlConstantsInit bl FtlVariablesInit - ldr r0, [r4, #2324] + ldr r0, [r4, #2328] mov r4, #1 uxth r0, r0 bl FtlFreeSysBlkQueueInit -.L3374: +.L3291: bl FtlLoadBbt cmp r0, #0 - beq .L3375 -.L3390: + beq .L3292 +.L3313: bl FtlLowFormat cmp r4, #3 - addls r4, r4, #1 - bls .L3374 -.L3391: - mvn r0, #0 - b .L3365 -.L3375: + mvnhi r6, #0 + bhi .L3278 +.L3293: + add r4, r4, #1 + b .L3291 +.L3292: bl FtlSysBlkInit cmp r0, #0 - bne .L3390 - ldr r3, .L3392+20 + bne .L3313 + ldr r3, .L3314+20 mov r2, #1 - str r2, [r3, #504] -.L3365: - add sp, sp, #20 - @ sp needed - ldmfd sp!, {r4, r5, pc} -.L3393: + str r2, [r3, #500] + b .L3278 +.L3315: .align 2 -.L3392: +.L3314: .word .LANCHOR0 .word .LANCHOR2 - .word .LC77 .word .LC76 - .word .LANCHOR0+116 + .word .LC77 + .word .LANCHOR0+124 .word .LANCHOR1 .fnend .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata .align 2 .global Ftl_gc_temp_data_write_back + .syntax unified + .arm + .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 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - ldr r5, .L3411 - ldr r3, [r5, #-3616] + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, .L3332 + ldr r3, [r4, #-3612] cmp r3, #0 - beq .L3395 -.L3398: + beq .L3317 +.L3320: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L3395: - ldr r3, .L3411+4 - ldrb r3, [r3, #144] @ zero_extendqisi2 + pop {r4, r5, r6, pc} +.L3317: + ldr r3, .L3332+4 + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3397 - ldr r3, [r5, #-2704] + beq .L3319 + ldr r3, [r4, #-2704] tst r3, #1 - beq .L3397 - ldr r3, .L3411+8 + beq .L3319 + sub r3, r4, #3424 ldrh r3, [r3, #4] cmp r3, #0 - bne .L3398 -.L3397: - mov r2, #0 - ldr r0, [r5, #-532] - ldr r1, [r5, #-2704] - mov r3, r2 + bne .L3320 +.L3319: + mov r3, #0 + mov r5, #0 + mov r6, #36 + mov r2, r3 + ldr r1, [r4, #-2704] + ldr r0, [r4, #-532] bl FlashProgPages - ldr r7, .L3411 - mov r6, #0 - mov r8, #36 -.L3399: - ldr r1, [r5, #-2704] - uxth r3, r6 - ldr r4, .L3411 +.L3321: + ldr r1, [r4, #-2704] + uxth r3, r5 cmp r3, r1 - bcs .L3410 - mul r3, r8, r3 - ldr r0, [r7, #-532] - add r6, r6, #1 - add r1, r0, r3 - ldr r0, [r0, r3] - ldr r2, [r1, #12] - cmn r0, #1 - bne .L3400 - sub r1, r4, #3424 - ldr ip, [r4, #-3544] + bcc .L3323 + ldr r0, [r4, #-532] + bl FtlGcBufFree + mov r3, #0 + str r3, [r4, #-2704] + ldr r3, .L3332+8 + ldrh r3, [r3, #4] + cmp r3, #0 + bne .L3320 + mov r0, #1 + bl FtlGcFreeTempBlock + b .L3331 +.L3323: + mul r3, r6, r3 + ldr r2, [r4, #-532] + add r5, r5, #1 + ldr ip, [r2, r3] + add r1, r2, r3 + ldr r0, [r1, #12] + cmn ip, #1 + bne .L3322 + ldr r1, .L3332+8 mov lr, #0 - ldrh r2, [r1, #-4] - mov r2, r2, asl #1 - strh lr, [ip, r2] @ movhi - ldr r2, [r4, #-3136] - strh r0, [r1, #-4] @ movhi + ldr r0, [r4, #-3540] + ldrh r2, [r1] + lsl r2, r2, #1 + strh lr, [r0, r2] @ movhi + ldr r2, [r4, #-3140] + strh ip, [r1] @ movhi add r2, r2, #1 - str r2, [r4, #-3136] + str r2, [r4, #-3140] ldr r2, [r4, #-532] add r3, r2, r3 ldr r0, [r3, #4] @@ -20261,61 +20776,52 @@ bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L3409 -.L3400: - ldr r0, [r2, #12] +.L3331: + mov r0, #1 + pop {r4, r5, r6, pc} +.L3322: + ldr r2, [r0, #8] ldr r1, [r1, #4] - ldr r2, [r2, #8] + ldr r0, [r0, #12] bl FtlGcUpdatePage - b .L3399 -.L3410: - ldr r0, [r4, #-532] - bl FtlGcBufFree - mov r3, #0 - str r3, [r4, #-2704] - ldr r3, .L3411+8 - ldrh r3, [r3, #4] - cmp r3, #0 - bne .L3398 - mov r0, #1 - bl FtlGcFreeTempBlock -.L3409: - mov r0, #1 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L3412: + b .L3321 +.L3333: .align 2 -.L3411: +.L3332: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR2-3428 + .word .LANCHOR2-3424 .fnend .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 2 .global Ftl_get_new_temp_ppa + .syntax unified + .arm + .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 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r3, .L3417 - sub r2, r3, #4 - ldrh r1, [r3, #-4] - movw r3, #65535 - cmp r1, r3 - beq .L3414 - ldrh r3, [r2, #4] + ldr r3, .L3341 + movw r2, #65535 + ldrh r1, [r3] + cmp r1, r2 + beq .L3335 + ldrh r3, [r3, #4] cmp r3, #0 - bne .L3415 -.L3414: - ldr r4, .L3417+4 + ldrne r0, .L3341 + bne .L3340 +.L3335: + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r5, #0 + ldr r4, .L3341+4 bl FtlCacheWriteBack mov r0, #0 - mov r5, #0 bl FtlGcFreeTempBlock - ldr r0, .L3417+8 - strb r5, [r4, #-3420] + sub r0, r4, #3424 + strb r5, [r4, #-3416] bl allocate_data_superblock sub r3, r4, #2672 sub r4, r4, #2656 @@ -20325,712 +20831,833 @@ mov r0, r5 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3415: - ldr r0, .L3417+8 - ldmfd sp!, {r3, r4, r5, lr} + pop {r4, r5, r6, lr} + ldr r0, .L3341 +.L3340: b get_new_active_ppa -.L3418: +.L3342: .align 2 -.L3417: +.L3341: .word .LANCHOR2-3424 .word .LANCHOR2 - .word .LANCHOR2-3428 .fnend .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa .align 2 .global ftl_do_gc + .syntax unified + .arm + .fpu softvfp .type ftl_do_gc, %function ftl_do_gc: .fnstart @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3583 - ldr ip, [r3, #-3616] - cmp ip, #0 - bne .L3513 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L3507 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov lr, r0 .pad #44 sub sp, sp, #44 - ldr r4, .L3583+4 - ldr r8, [r4, #504] - cmp r8, #1 - bne .L3515 + ldr r0, [r3, #-3612] + cmp r0, #0 + bne .L3439 + ldr ip, .L3507+4 + ldr r5, [ip, #500] + cmp r5, #1 + bne .L3343 ldr r2, [r3, #-560] cmp r2, #0 - bne .L3515 - mov r9, r0 - sub r0, r3, #3536 - ldrh r0, [r0] + bne .L3343 + sub r8, r3, #3520 + ldrh r0, [r8, #-12] cmp r0, #47 - movls r0, r2 - bls .L3572 - movw r2, #3448 - str r1, [sp, #12] - ldrh r1, [r4, r2] + bls .L3439 + movw r2, #3444 + mov r7, r1 + ldrh r1, [ip, r2] movw r2, #65535 - mov r5, r3 - str r9, [sp, #16] + mov r4, r3 + str lr, [sp, #16] cmp r1, r2 - bne .L3421 -.L3424: - ldr r4, .L3583+8 + bne .L3345 +.L3348: + ldr r6, .L3507+8 movw r2, #65535 - ldrh r0, [r4, #-8] + ldrh r0, [r6, #-8] cmp r0, r2 - bne .L3422 - b .L3423 -.L3421: - sub r3, r3, #3424 - ldrh r3, [r3, #-4] - cmp r3, r2 - beq .L3424 - mov r0, r8 - bl FtlGcFreeTempBlock - cmp r0, #0 - beq .L3424 - mov r0, r8 - b .L3572 -.L3422: - ldrh r3, [r4, #-10] - cmp r3, r2 - bne .L3423 - ldrh r1, [r4, #-6] - cmp r1, r3 - beq .L3423 - ldrh r2, [r4, #-4] - cmp r2, r3 - strneh r0, [r4, #-10] @ movhi - strneh r1, [r4, #-8] @ movhi - mvnne r3, #0 - strneh r2, [r4, #-6] @ movhi - strneh r3, [r4, #-4] @ movhi -.L3423: - ldr r3, [sp, #16] - ldr r8, [r5, #-2716] - ldr r6, .L3583+12 - cmp r3, #1 - add r8, r8, #1 - add r8, r8, r3, asl #7 - sub r7, r6, #240 - str r8, [r5, #-2716] - bne .L3435 - ldr r9, .L3583+16 - ldr r3, [r9, #2244] - cmp r3, #0 - bne .L3426 - ldrb r3, [r9, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L3435 -.L3426: - ldr r3, [r5, #-3308] - ldr fp, .L3583 - cmp r3, #39 - bhi .L3435 - ldr r10, .L3583+20 - ldrh r3, [r10] - add r8, r8, r3 - str r8, [fp, #-2716] - bl FtlGcReFreshBadBlk - ldrh r8, [r6, #-4] - movw r3, #65535 - cmp r8, r3 - bne .L3435 - ldrh r3, [r4, #-10] - cmp r3, r8 - bne .L3435 - ldr r3, [fp, #-2716] - cmp r3, #1024 - bhi .L3427 - ldrh r3, [r7, #-8] - cmp r3, #63 - bhi .L3435 -.L3427: - ldr r1, .L3583 - mov r3, #0 - strh r3, [r10] @ movhi - sub r8, r1, #2704 - ldrh r0, [r7, #-8] - ldr r2, .L3583+20 - ldrh r10, [r8, #-14] - add ip, r10, #64 - cmp r0, ip - bgt .L3435 - str r3, [r1, #-2716] - ldr r3, [r1, #-3308] - cmp r3, #0 - moveq r3, #6 - beq .L3574 - cmp r3, #5 - bhi .L3429 - mov r3, #18 -.L3574: - strh r3, [r2] @ movhi -.L3429: - mov r0, #32 - bl List_get_gc_head_node - movw ip, #65535 - uxth r3, r0 - cmp r3, ip - beq .L3434 - ldrh r0, [r8, #-8] - ldr r2, .L3583 - cmp r0, #0 - sub r10, r2, #2704 - beq .L3431 - mov r8, r3, asl #1 - movw r3, #2390 - ldrh lr, [r9, r3] - ldr r3, .L3583+24 - ldr r2, [r2, #-3544] - ldrh r3, [r3] - ldrh r1, [r2, r8] - mul r3, r3, lr + bne .L3346 +.L3347: + ldr r3, [r4, #-2716] + ldr r2, [sp, #16] add r3, r3, #1 + cmp r2, #1 + add r3, r3, r2, lsl #7 + str r3, [r4, #-2716] + bne .L3349 + ldr r9, .L3507+12 + ldr r2, [r9, #2248] + cmp r2, #0 + bne .L3350 + ldrb r2, [r9, #152] @ zero_extendqisi2 + cmp r2, #0 + beq .L3349 +.L3350: + ldr r2, [r4, #-3308] + cmp r2, #39 + bhi .L3349 + ldr r10, .L3507+16 + movw r5, #65535 + ldrh r2, [r10] + add r3, r2, r3 + str r3, [r4, #-2716] + bl FtlGcReFreshBadBlk + ldr r3, .L3507+20 + mov r2, r10 + ldrh r3, [r3, #-4] + cmp r3, r5 + bne .L3351 + ldrh r1, [r6, #-10] cmp r1, r3 - bgt .L3434 - add r1, r0, #1 - str ip, [sp, #28] - str r2, [sp, #24] - mov r9, #0 - uxth r1, r1 - str r9, [r10, #-4] - strh r1, [r10, #-8] @ movhi - str r1, [sp, #20] + bne .L3438 + ldr r3, [r4, #-2716] + cmp r3, #1024 + bhi .L3353 + ldrh r3, [r8, #-4] + cmp r3, #63 + bhi .L3438 +.L3353: + ldr r6, .L3507+24 + mov r1, #0 + ldrh r0, [r8, #-4] + strh r1, [r2] @ movhi + ldrh r3, [r6, #-14] + add r3, r3, #64 + cmp r0, r3 + bgt .L3438 + ldr r3, [r4, #-3308] + str r1, [r4, #-2716] + cmp r3, r1 + moveq r3, #6 + beq .L3499 + cmp r3, #5 + bhi .L3355 + mov r3, #18 +.L3499: + strh r3, [r2] @ movhi +.L3355: + mov r0, #32 + movw r10, #65535 bl List_get_gc_head_node - ldr ip, [sp, #28] - uxth fp, r0 - ldr r1, [sp, #20] - cmp fp, ip - ldr r2, [sp, #24] - beq .L3434 - mov ip, fp, asl #1 - ldr r0, .L3583+28 - str ip, [sp, #20] - ldrh r3, [r2, ip] - ldrh r2, [r2, r8] - str r2, [sp] - mov r2, fp + uxth r3, r0 + cmp r3, r10 + beq .L3359 + ldrh ip, [r6, #-8] + cmp ip, #0 + beq .L3357 + movw r2, #2392 + uxth r0, r0 + ldrh lr, [r9, r2] + movw r2, #2324 + ldrh r2, [r9, r2] + lsl r1, r0, #1 + ldr r3, [r4, #-3540] + str r1, [sp, #12] + mul r2, r2, lr + ldrh r0, [r3, r1] + str r3, [sp, #8] + add r2, r2, #1 + cmp r0, r2 + bgt .L3359 + add fp, ip, #1 + mov r9, #0 + uxth fp, fp + mov r0, ip + str r9, [r4, #-2708] + strh fp, [r6, #-8] @ movhi + bl List_get_gc_head_node + uxth r5, r0 + ldr r3, [sp, #8] + ldr r1, [sp, #12] + cmp r5, r10 + beq .L3359 + lsl r10, r5, #1 + mov r2, r5 + ldrh r0, [r3, r10] + ldrh r3, [r3, r1] + mov r1, fp + str r3, [sp] + mov r3, r0 + ldr r0, .L3507+28 bl printk - ldrh r3, [r10, #-8] + ldrh r3, [r6, #-8] cmp r3, #40 - ldr ip, [sp, #20] - bls .L3432 - ldr r3, [r10, #-840] - ldrh r3, [r3, ip] + bls .L3358 + ldr r3, [r4, #-3540] + ldrh r3, [r3, r10] cmp r3, #32 - strhih r9, [r10, #-8] @ movhi -.L3432: - ldr r3, .L3583+20 + strhhi r9, [r6, #-8] @ movhi +.L3358: + ldr r3, .L3507+16 mov r2, #6 strh r2, [r3] @ movhi - b .L3436 -.L3431: +.L3351: + movw r0, #65535 + ldr r3, [sp, #16] + sub r2, r5, r0 + clz r2, r2 + lsr r2, r2, #5 + cmp r3, #0 + movne r1, #0 + andeq r1, r2, #1 + cmp r1, #0 + beq .L3373 + ldrh r3, [r8, #-4] + cmp r3, #24 + movhi r6, #1 + bhi .L3374 + ldr r1, .L3507+12 + movw r2, #2390 + cmp r3, #16 + ldrh r6, [r1, r2] + lsrhi r6, r6, #5 + bhi .L3374 + cmp r3, #12 + lsrhi r6, r6, #4 + bhi .L3374 + cmp r3, #8 + lsrhi r6, r6, #2 +.L3374: + ldr r1, .L3507+32 + ldrh r2, [r1] + cmp r2, r3 + mov r2, r1 + bcs .L3378 + sub r3, r1, #704 + movw r0, #65535 + ldrh r3, [r3] + cmp r3, r0 + bne .L3379 + ldrh r0, [r1, #54] + cmp r0, r3 + bne .L3379 + ldr r3, .L3507+16 + ldrh r0, [r3] + cmp r0, #0 + bne .L3380 + ldr r3, .L3507+12 + ldr ip, [r4, #-3368] + ldr r3, [r3, #2452] + add r3, r3, r3, lsl #1 + cmp ip, r3, lsr #2 + movcs r3, #18 + strhcs r3, [r1] @ movhi + bcs .L3382 +.L3380: + ldr r3, .L3507+36 + ldrh r3, [r3, #-8] + add r3, r3, r3, lsl #1 + asr r3, r3, #2 + strh r3, [r2] @ movhi +.L3382: + mov r3, #0 + str r3, [r4, #-2708] +.L3343: + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3345: + sub r3, r3, #3424 + ldrh r3, [r3] + cmp r3, r2 + beq .L3348 + mov r0, r5 + bl FtlGcFreeTempBlock + cmp r0, #0 + beq .L3348 + mov r0, r5 + b .L3343 +.L3346: + ldrh r3, [r6, #-10] + cmp r3, r2 + bne .L3347 + ldrh r1, [r6, #-6] + cmp r1, r3 + beq .L3347 + ldrh r2, [r6, #-4] + cmp r2, r3 + mvnne r3, #0 + strhne r0, [r6, #-10] @ movhi + strhne r1, [r6, #-8] @ movhi + strhne r2, [r6, #-6] @ movhi + strhne r3, [r6, #-4] @ movhi + b .L3347 +.L3357: mov r3, #1 - strh r3, [r10, #-8] @ movhi -.L3434: + strh r3, [r6, #-8] @ movhi +.L3359: bl GetSwlReplaceBlock movw r3, #65535 + mov r5, r0 cmp r0, r3 - mov fp, r0 - bne .L3436 - ldr r3, .L3583+20 + bne .L3351 + ldr r3, .L3507+16 mov r2, #0 strh r2, [r3] @ movhi -.L3435: - ldrh ip, [r6, #-4] +.L3349: + ldr r3, .L3507+20 + movw r5, #65535 + ldrh r3, [r3, #-4] + cmp r3, r5 + bne .L3351 +.L3438: + ldr r6, .L3507+40 movw r3, #65535 - ldr r8, .L3583 - cmp ip, r3 - bne .L3577 - sub r3, r8, #3424 - ldrh r3, [r3, #-4] - cmp r3, ip - movne fp, ip - beq .L3580 -.L3436: - movw r1, #65535 - rsb r3, r1, fp - clz r3, r3 - ldr r2, [sp, #16] - ldr r8, .L3583+32 - mov r3, r3, lsr #5 - cmp r2, #0 - movne ip, #0 - andeq ip, r3, #1 - cmp ip, #0 - beq .L3449 - ldrh r0, [r8, #-8] - cmp r0, #24 - movhi r9, #1 - bhi .L3450 - ldr r2, .L3583+16 - movw r3, #2388 - cmp r0, #16 - ldrh r9, [r2, r3] - movhi r9, r9, lsr #5 - bhi .L3450 - cmp r0, #12 - movhi r9, r9, lsr #4 - bhi .L3450 - cmp r0, #8 - movhi r9, r9, lsr #2 -.L3450: - ldr r1, .L3583 - sub r2, r1, #2720 - ldrh r3, [r2] - cmp r3, r0 - bcs .L3454 - sub r3, r1, #3424 - movw r0, #65535 - ldrh r3, [r3, #-4] - cmp r3, r0 - bne .L3455 - ldrh r0, [r4, #-10] - cmp r0, r3 - bne .L3455 - ldr r3, .L3583+20 - ldrh r0, [r3] - cmp r0, #0 - bne .L3456 - ldr r3, .L3583+16 - ldr r1, [r1, #-3372] - ldr r3, [r3, #2448] - add r3, r3, r3, asl #1 - cmp r1, r3, lsr #2 - movcs r3, #18 - bcs .L3457 -.L3456: - ldr r3, .L3583+36 - ldrh r3, [r3, #-8] - add r3, r3, r3, asl #1 - ubfx r3, r3, #2, #16 -.L3457: - strh r3, [r2] @ movhi + ldrh r5, [r6] + cmp r5, r3 + movne r5, r3 + bne .L3351 + add r3, r6, #768 + ldrh r9, [r3, #-10] + cmp r9, r5 + bne .L3351 + ldrh r3, [r8, #-4] + ldr r2, [r4, #-2716] + cmp r3, #24 + movcc r3, #5120 + movcs r3, #1024 + cmp r2, r3 + bls .L3351 + ldr r2, .L3507+16 mov r3, #0 - str r3, [r5, #-2708] - b .L3572 -.L3455: - ldr r3, .L3583+36 - ldrh r3, [r3, #-8] - add r3, r3, r3, asl #1 - mov r3, r3, asr #2 + str r3, [r4, #-2716] strh r3, [r2] @ movhi -.L3454: - ldr r3, .L3583+16 - movw fp, #65535 - ldr r2, [r3, #2244] - ldr r3, [sp, #12] - cmp r3, #2 - movhi r3, #0 - movls r3, #1 + bl GetSwlReplaceBlock + cmp r0, r9 + mov r5, r0 + movne r10, r0 + bne .L3361 + add r6, r6, #720 + ldrh r2, [r8, #-4] + ldrh r3, [r6, #-14] + mov r9, r6 + cmp r2, r3 + movcs r3, #80 + strhcs r3, [r6, #-14] @ movhi + bcs .L3364 + mov r0, #64 + bl List_get_gc_head_node + uxth r3, r0 + cmp r3, r5 + beq .L3364 + ldr r3, [r4, #-564] + ldr r6, .L3507+12 + cmp r3, #0 + uxth r3, r0 + bne .L3365 + movw r2, #2344 + ldrh r2, [r6, r2] + cmp r2, #3 + beq .L3365 + ldr r2, [r4, #-2724] cmp r2, #0 - moveq r3, #0 - cmp r3, #0 - addne r9, r9, #1 - uxthne r9, r9 - b .L3459 -.L3449: - ldrh r0, [r8, #92] - add r2, r8, #3520 - cmp r0, r1 - bne .L3460 - ldrh r1, [r4, #-10] - cmp r1, r0 + bne .L3365 + ldr r2, [r6, #2248] + cmp r2, #0 + bne .L3365 + ldrb r0, [r6, #152] @ zero_extendqisi2 + cmp r0, #0 + beq .L3366 +.L3365: + ldr r2, [r4, #-3540] + lsl r3, r3, #1 + movw r0, #2344 + ldrh r0, [r6, r0] + ldrh r1, [r2, r3] + movw r3, #2392 + movw r2, #2324 + ldrh r3, [r6, r3] + ldrh r2, [r6, r2] + cmp r0, #3 + mul r2, r3, r2 + lsreq r3, r3, #1 movne r3, #0 - andeq r3, r3, #1 - cmp r3, #0 - beq .L3460 - ldrh r3, [r6, #-4] - cmp r3, r0 - beq .L3461 -.L3465: - movw fp, #65535 - b .L3460 -.L3461: - sub r10, r2, #2720 - ldrh r1, [r7, #-8] - str ip, [r2, #-2708] - ldrh r3, [r10] - ldr r9, .L3583+20 + add r3, r3, r2 cmp r1, r3 - bls .L3462 - ldrh r3, [r9] + bgt .L3368 + mov r0, #0 + bl List_get_gc_head_node + ldr r3, [r6, #2452] + uxth r10, r0 + ldr r2, [r4, #-3368] + add r3, r3, r3, lsl #1 + cmp r2, r3, lsr #2 + movls r3, #160 + bls .L3500 +.L3501: + mov r3, #128 +.L3500: + strh r3, [r9, #-14] @ movhi + movw r3, #65535 + cmp r10, r3 + beq .L3364 +.L3361: + ldr r0, .L3507+32 + lsl r1, r10, #1 + ldr r3, [r4, #-3540] + mov r5, r10 + ldrh r2, [r8, #-4] + ldrh r0, [r0] + ldrh r3, [r3, r1] + str r0, [sp, #4] + ldr r0, [r4, #-3604] + ldrh r1, [r0, r1] + ldr r0, .L3507+44 + str r1, [sp] + mov r1, r10 + bl printk + b .L3364 +.L3368: + mov r3, #128 +.L3502: + strh r3, [r9, #-14] @ movhi +.L3364: + bl FtlGcReFreshBadBlk + b .L3351 +.L3366: + ldr r2, [r4, #-3540] + lsl r3, r3, #1 + ldrh r3, [r2, r3] + cmp r3, #7 + bhi .L3371 + bl List_get_gc_head_node + uxth r10, r0 + b .L3501 +.L3371: + mov r3, #64 + b .L3502 +.L3379: + ldr r3, .L3507+36 + ldrh r3, [r3, #-8] + add r3, r3, r3, lsl #1 + asr r3, r3, #2 + strh r3, [r2] @ movhi +.L3378: + ldr r3, .L3507+12 + movw r5, #65535 + ldr r3, [r3, #2248] + adds r3, r3, #0 + movne r3, #1 + cmp r7, #2 + movhi r3, #0 cmp r3, #0 - bne .L3463 - ldr r3, .L3583+16 - ldr r2, [r2, #-3372] - ldr r3, [r3, #2448] - add r3, r3, r3, asl #1 + addne r6, r6, #1 + uxthne r6, r6 +.L3384: + ldr r7, .L3507+20 + movw r2, #65535 + ldrh r3, [r7, #-4] + cmp r3, r2 + bne .L3394 + cmp r5, r3 + strhne r5, [r7, #-4] @ movhi + bne .L3396 + add r3, r7, #624 + ldrh r2, [r3, #-10] + cmp r2, r5 + beq .L3396 + ldr r1, [r4, #-3540] + lsl r2, r2, #1 + ldrh r2, [r1, r2] + cmp r2, #0 + mvneq r2, #0 + strheq r2, [r3, #-10] @ movhi + ldrh r2, [r3, #-10] + strh r2, [r7, #-4] @ movhi + mvn r2, #0 + strh r2, [r3, #-10] @ movhi +.L3396: + ldrh r0, [r7, #-4] + mov r3, #0 + strb r3, [r4, #-3276] + movw r3, #65535 + cmp r0, r3 + beq .L3394 + bl IsBlkInGcList + cmp r0, #0 + mvnne r3, #0 + strhne r3, [r7, #-4] @ movhi + ldr r3, .L3507+12 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L3400 + ldrh r0, [r7, #-4] + bl ftl_get_blk_mode + strb r0, [r4, #-3276] +.L3400: + ldrh r2, [r7, #-4] + movw r3, #65535 + sub r9, r7, #4 + cmp r2, r3 + beq .L3394 + mov r0, r9 + bl make_superblock + mov r3, #0 + movw r2, #1986 + strh r3, [r4, r2] @ movhi + strh r3, [r7, #-2] @ movhi + strb r3, [r4, #-3278] + ldrh r3, [r7, #-4] + ldr r2, [r4, #-3540] + lsl r3, r3, #1 + ldrh r2, [r2, r3] + movw r3, #1988 + strh r2, [r4, r3] @ movhi +.L3394: + ldrh r3, [r7, #-4] + ldrh r2, [r8] + cmp r2, r3 + beq .L3401 + ldr r2, .L3507+48 + ldrh r1, [r2] + cmp r1, r3 + beq .L3401 + ldrh r2, [r2, #48] + cmp r2, r3 + bne .L3402 +.L3401: + mvn r3, #0 + strh r3, [r7, #-4] @ movhi +.L3402: + ldr r4, .L3507 + sub r7, r4, #3280 +.L3435: + ldrh r2, [r7, #-4] + movw r3, #65535 + cmp r2, r3 + bne .L3403 + ldr r9, .L3507+24 + mov r3, #0 + ldr r10, .L3507+52 + str r3, [r4, #-2708] +.L3404: + ldr fp, .L3507+56 + ldrh r8, [fp] + mov r0, r8 + bl List_get_gc_head_node + uxth r2, r0 + sub r1, fp, #568 + strh r2, [r1, #-4] @ movhi + movw r1, #65535 + cmp r2, r1 + bne .L3405 + mov r3, #0 + mov r0, #8 + strh r3, [fp] @ movhi + b .L3343 +.L3373: + ldr r3, .L3507+40 + ldrh r7, [r3] + cmp r7, r0 + bne .L3385 + add r0, r3, #768 + ldrh r0, [r0, #-10] + cmp r0, r7 + movne r2, #0 + andeq r2, r2, #1 + cmp r2, #0 + beq .L3385 + ldrh r2, [r3, #140] + cmp r2, r7 + beq .L3386 +.L3391: + mov r5, r7 +.L3385: + ldr r3, .L3507+12 + ldr r3, [r3, #2248] + cmp r3, #0 + moveq r6, #1 + movne r6, #2 + b .L3384 +.L3386: + add r5, r3, #704 + ldrh r2, [r8, #-4] + ldrh r3, [r5] + str r1, [r4, #-2708] + ldr r6, .L3507+16 + cmp r2, r3 + bls .L3387 + ldrh r3, [r6] + cmp r3, #0 + bne .L3388 + ldr r3, .L3507+12 + ldr r2, [r4, #-3368] + ldr r3, [r3, #2452] + add r3, r3, r3, lsl #1 cmp r2, r3, lsr #2 movcs r3, #18 - bcs .L3464 -.L3463: - ldr r3, .L3583+36 + bcs .L3503 +.L3388: + ldr r3, .L3507+36 ldrh r3, [r3, #-8] - add r3, r3, r3, asl #1 - ubfx r3, r3, #2, #16 -.L3464: - strh r3, [r10] @ movhi + add r3, r3, r3, lsl #1 + asr r3, r3, #2 +.L3503: + strh r3, [r5] @ movhi bl FtlReadRefresh mov r0, #0 bl List_get_gc_head_node - ldr r3, [r5, #-3544] uxth r0, r0 - mov r0, r0, asl #1 + ldr r3, [r4, #-3540] + lsl r0, r0, #1 ldrh r3, [r3, r0] cmp r3, #4 - ldrhih r0, [r9] - bhi .L3572 -.L3462: - ldrh r0, [r9] + bls .L3387 +.L3504: + ldrh r0, [r6] + b .L3343 +.L3387: + ldrh r0, [r6] cmp r0, #0 - bne .L3465 - ldr r3, .L3583+36 + bne .L3391 + ldr r3, .L3507+36 ldrh r9, [r3, #-8] - add r3, r9, r9, asl #1 - mov r3, r3, asr #2 - strh r3, [r10] @ movhi + add r3, r9, r9, lsl #1 + asr r3, r3, #2 + strh r3, [r5] @ movhi bl List_get_gc_head_node - ldr r3, [r5, #-3544] - movw r2, #2390 uxth r0, r0 - mov r0, r0, asl #1 + ldr r3, [r4, #-3540] + ldr r2, .L3507+12 + lsl r0, r0, #1 ldrh r1, [r3, r0] - ldr r3, .L3583+16 - ldrh r2, [r3, r2] - add r3, r3, #2320 - ldrh r3, [r3] - mul r3, r3, r2 + movw r3, #2392 + ldrh r0, [r2, r3] + movw r3, #2324 + ldrh r3, [r2, r3] + mul r3, r3, r0 add r3, r3, r3, lsr #31 cmp r1, r3, asr #1 - ble .L3466 - ldrh r3, [r7, #-8] - sub r2, r9, #1 - cmp r3, r2 - blt .L3466 - bl FtlReadRefresh - b .L3578 -.L3466: - cmp r1, #0 - bne .L3465 - movw r0, #65535 - bl decrement_vpc_count - ldrh r0, [r8, #-8] - add r0, r0, #1 - b .L3572 -.L3460: - ldr r3, .L3583+16 - ldr r3, [r3, #2244] - cmp r3, #0 - moveq r9, #1 - movne r9, #2 -.L3459: - ldrh r3, [r6, #-4] - movw r0, #65535 - ldr r2, .L3583 - cmp r3, r0 - sub r1, r2, #3280 - bne .L3468 - cmp fp, r3 - strneh fp, [r1, #-4] @ movhi - bne .L3470 - ldrh r3, [r4, #-10] - sub r1, r2, #2656 - cmp r3, fp - beq .L3470 - ldr r2, [r2, #-3544] - mov r3, r3, asl #1 - ldrh r3, [r2, r3] - cmp r3, #0 - mvneq r3, #0 - streqh r3, [r1, #-10] @ movhi - ldrh r3, [r4, #-10] - strh r3, [r6, #-4] @ movhi - mvn r3, #0 - strh r3, [r4, #-10] @ movhi -.L3470: - ldrh r0, [r6, #-4] - mov r3, #0 - strb r3, [r5, #-3276] - movw r3, #65535 - cmp r0, r3 - beq .L3468 - bl IsBlkInGcList - cmp r0, #0 - ldrne r3, .L3583+12 - mvnne r2, #0 - strneh r2, [r3, #-4] @ movhi - ldr r3, .L3583+16 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L3474 - ldrh r0, [r6, #-4] - bl ftl_get_blk_mode - strb r0, [r5, #-3276] -.L3474: - ldrh r2, [r6, #-4] - movw r3, #65535 - ldr r5, .L3583 - cmp r2, r3 - sub r7, r5, #3280 - sub r4, r7, #4 - beq .L3468 - mov r0, r4 - bl make_superblock - ldr r2, .L3583+40 - movw r1, #1986 - mov r3, #0 - strh r3, [r7, #-2] @ movhi - strh r3, [r2, r1] @ movhi - strb r3, [r5, #-3278] - ldrh r3, [r7, #-4] - ldr r1, [r5, #-3544] - mov r3, r3, asl #1 - ldrh r1, [r1, r3] - movw r3, #1988 - strh r1, [r2, r3] @ movhi -.L3468: - ldrh r3, [r6, #-4] + ble .L3392 ldrh r2, [r8, #-4] + sub r3, r9, #1 cmp r2, r3 - beq .L3475 - ldr r2, .L3583+44 - ldrh r1, [r2, #-4] - cmp r1, r3 - beq .L3475 - ldrh r2, [r2, #44] - cmp r2, r3 - bne .L3509 -.L3475: - mvn r3, #0 - strh r3, [r6, #-4] @ movhi -.L3509: - ldr r6, .L3583+48 - movw r3, #65535 - ldr r5, .L3583 - ldrh r2, [r6] - mov r10, r6 - cmp r2, r3 - bne .L3477 - mov r3, #0 - str r5, [sp, #12] - str r3, [r5, #-2708] -.L3478: - ldr r8, .L3583+52 - ldrh r4, [r8] - mov r0, r4 - bl List_get_gc_head_node - movw r3, #65535 - uxth r7, r0 - strh r7, [r10] @ movhi - cmp r7, r3 - moveq r3, #0 - moveq r0, #8 - streqh r3, [r8] @ movhi - beq .L3572 -.L3479: - mov r0, r7 - add r4, r4, #1 - bl IsBlkInGcList - cmp r0, #0 - ldrne r3, .L3583+52 - strneh r4, [r3] @ movhi - bne .L3478 - ldr r3, .L3583+52 - uxth r4, r4 - mov r2, r7, asl #1 - strh r4, [r3] @ movhi - ldr r3, [sp, #12] - ldr r1, [r3, #-3544] - ldr r3, .L3583+56 - ldrh r0, [r1, r2] - ldrh ip, [r3] - ldrh r3, [r3, #-68] - mul r3, r3, ip - add ip, r3, r3, lsr #31 - cmp r0, ip, asr #1 - bgt .L3482 - cmp r0, #8 - cmphi r4, #48 - bls .L3483 - ldrh r0, [r8, #36] - cmp r0, #35 - bhi .L3483 -.L3482: - ldr ip, .L3583+52 - mov r0, #0 - strh r0, [ip] @ movhi -.L3483: - ldrh r2, [r1, r2] - movw r1, #65535 - cmp r2, r3 - cmpge fp, r1 - bne .L3484 - ldr r3, .L3583+52 - ldrh r1, [r3] - cmp r1, #3 - bhi .L3484 - sub r2, r3, #568 - mvn r1, #0 - strh r1, [r2, #-4] @ movhi - mov r2, #0 - strh r2, [r3] @ movhi -.L3578: - ldr r3, .L3583+20 - ldrh r0, [r3] - b .L3572 -.L3484: - cmp r2, #0 - bne .L3485 + blt .L3392 + bl FtlReadRefresh + b .L3504 +.L3392: + cmp r1, #0 + bne .L3391 movw r0, #65535 bl decrement_vpc_count - ldr r3, .L3583+52 - ldr r2, .L3583+52 + ldrh r0, [r8, #-4] + add r0, r0, #1 + b .L3343 +.L3405: + str r0, [sp, #12] + mov r0, r2 + str r2, [sp, #8] + add r8, r8, #1 + bl IsBlkInGcList + cmp r0, #0 + ldr r2, [sp, #8] + ldr r3, [sp, #12] + strhne r8, [fp] @ movhi + bne .L3404 + uxth r3, r3 + ldrh lr, [r10] + ldr r0, [r4, #-3540] + uxth r8, r8 + lsl r1, r3, #1 + ldr r3, .L3507+60 + strh r8, [fp] @ movhi + ldrh ip, [r0, r1] ldrh r3, [r3] + mul r3, r3, lr + add lr, r3, r3, lsr #31 + cmp ip, lr, asr #1 + bgt .L3408 + cmp r8, #48 + cmphi ip, #8 + bls .L3409 + ldrh ip, [fp, #36] + cmp ip, #35 + bhi .L3409 +.L3408: + mov ip, #0 + strh ip, [r9, #-8] @ movhi +.L3409: + ldrh r1, [r0, r1] + movw r0, #65535 + cmp r3, r1 + cmple r5, r0 + bne .L3410 + ldrh r0, [r9, #-8] + cmp r0, #3 + bhi .L3410 + ldr r1, .L3507+20 + mvn r2, #0 + strh r2, [r1, #-4] @ movhi + mov r2, #0 + strh r2, [r9, #-8] @ movhi +.L3506: + ldr r3, .L3507+16 + b .L3505 +.L3410: + cmp r1, #0 + bne .L3411 + movw r0, #65535 + bl decrement_vpc_count + ldrh r3, [r9, #-8] add r3, r3, #1 - strh r3, [r2] @ movhi - b .L3478 -.L3485: + strh r3, [r9, #-8] @ movhi + b .L3404 +.L3411: mov r3, #0 - strb r3, [r5, #-3276] - ldr r3, .L3583+16 - ldrb r3, [r3, #144] @ zero_extendqisi2 + strb r3, [r4, #-3276] + ldr r3, .L3507+12 + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3486 - mov r0, r7 + beq .L3412 + mov r0, r2 bl ftl_get_blk_mode - ldr r3, .L3583 - strb r0, [r3, #-3276] -.L3486: - ldr r0, .L3583+48 + strb r0, [r4, #-3276] +.L3412: + ldr r3, .L3507+20 + sub r8, r3, #4 + mov r0, r8 bl make_superblock - ldrh r2, [r6] - ldr r1, .L3583+60 + add r2, r8, #4 + ldr r1, .L3507+64 + ldrh r2, [r2, #-4] mov r3, #0 - ldr r0, [r5, #-3544] - mov r2, r2, asl #1 + ldr r0, [r4, #-3540] strh r3, [r1] @ movhi + lsl r2, r2, #1 ldrh r2, [r0, r2] - strh r3, [r6, #2] @ movhi - strb r3, [r5, #-3278] + strh r3, [r8, #2] @ movhi + strb r3, [r4, #-3278] strh r2, [r1, #2] @ movhi -.L3477: +.L3403: ldr r3, [sp, #16] cmp r3, #1 - bne .L3487 + bne .L3413 bl FtlReadRefresh -.L3487: +.L3413: mov r3, #1 - str r3, [r5, #-560] - ldr r3, .L3583+56 + str r3, [r4, #-560] + ldr r3, .L3507+52 ldrh r3, [r3] - str r3, [sp, #12] - ldr r3, .L3583+16 - ldrb r3, [r3, #144] @ zero_extendqisi2 + str r3, [sp, #8] + ldr r3, .L3507+12 + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3488 - ldr r3, .L3583 - ldrb r3, [r3, #-3276] @ zero_extendqisi2 + beq .L3414 + ldrb r3, [r4, #-3276] @ zero_extendqisi2 cmp r3, #1 - ldreq r3, .L3583+64 - ldreqh r3, [r3] - streq r3, [sp, #12] -.L3488: - ldrh r3, [r6, #2] - mov r6, #0 - ldr r1, [sp, #12] - add r2, r3, r9 - ldr r4, .L3583 + ldreq r3, .L3507+68 + ldrheq r3, [r3] + streq r3, [sp, #8] +.L3414: + ldr r3, .L3507+20 + ldr r1, [sp, #8] + ldrh r3, [r3, #-2] + add r2, r3, r6 cmp r2, r1 movgt r2, r1 - rsbgt r3, r3, r2 - uxthgt r9, r3 -.L3490: - uxth r3, r6 - ldr r7, .L3583 - cmp r3, r9 - ldr r5, .L3583+48 - bcs .L3497 - ldr r3, .L3583+24 - add r0, r5, #14 - ldrh r1, [r5, #2] - movw lr, #65535 - ldr r7, [r4, #-2688] - mov ip, #36 - ldrh r8, [r3] - add r1, r1, r6 + subgt r6, r2, r3 mov r3, #0 - mov r5, r3 -.L3498: - uxth r2, r3 - cmp r2, r8 - bcs .L3581 - ldrh r2, [r0, #2]! - add r3, r3, #1 - cmp r2, lr - orrne r2, r1, r2, asl #10 - mlane r10, ip, r5, r7 - addne r5, r5, #1 - uxthne r5, r5 - strne r2, [r10, #4] - b .L3498 -.L3581: + uxthgt r6, r6 + str r3, [sp, #12] + sub r3, r7, #4 + str r3, [sp, #20] +.L3416: + ldrh r3, [sp, #12] + cmp r6, r3 + bls .L3423 + ldr r3, .L3507+60 + add ip, r7, #10 ldr r0, [r4, #-2688] - mov r1, r5 + movw r9, #65535 + mov lr, #36 + ldrh r10, [r3] + ldr r3, [sp, #20] + ldrh r1, [r3, #2] + ldr r3, [sp, #12] + add r1, r1, r3 + mov r3, #0 + mov r8, r3 + b .L3424 +.L3418: + ldrh r2, [ip, #2]! + add r3, r3, #1 + cmp r2, r9 + mlane fp, lr, r8, r0 + addne r8, r8, #1 + orrne r2, r1, r2, lsl #10 + uxthne r8, r8 + strne r2, [fp, #4] +.L3424: + uxth r2, r3 + cmp r10, r2 + bhi .L3418 + mov fp, #0 ldrb r2, [r4, #-3276] @ zero_extendqisi2 - mov r8, #0 + mov r1, r8 bl FlashReadPages -.L3493: - uxth r3, r8 - cmp r3, r5 - bcs .L3582 +.L3419: + uxth r3, fp + cmp r8, r3 + ldrls r3, [sp, #12] + addls r3, r3, #1 + strls r3, [sp, #12] + bls .L3416 +.L3422: mov r3, #36 ldr r2, [r4, #-2688] - mul r7, r3, r8 - add r1, r2, r7 - ldr r2, [r2, r7] - ldr r10, [r1, #12] + mul r9, r3, fp + add r1, r2, r9 + ldr r2, [r2, r9] cmn r2, #1 - beq .L3529 - ldrh r1, [r10] + beq .L3420 + ldr r10, [r1, #12] movw r2, #61589 + ldrh r1, [r10] cmp r1, r2 - bne .L3529 - add r1, sp, #32 + bne .L3420 mov r2, #0 + add r1, sp, #32 ldr r0, [r10, #8] - str r3, [sp, #20] - bl log2phys - ldr r2, [r4, #-2688] - add r2, r2, r7 - ldr r0, [r2, #4] - ldr r1, [sp, #32] - ldr r3, [sp, #20] - bic r1, r1, #-2147483648 - cmp r1, r0 - bne .L3529 - ldr r1, .L3583+60 - ldr r0, .L3583+60 - ldr r2, [r2, #16] - ldrh r1, [r1] str r3, [sp, #24] - add r1, r1, #1 - strh r1, [r0] @ movhi - ldr r0, [r4, #-2704] - ldr r1, [r4, #-532] - mla r1, r3, r0, r1 - str r2, [r1, #16] - str r1, [sp, #20] - bl Ftl_get_new_temp_ppa - ldr r2, [r4, #-532] - ldr r1, [sp, #20] + bl log2phys + ldr r1, [r4, #-2688] + ldr r2, [sp, #32] ldr r3, [sp, #24] - str r0, [r1, #4] - ldr r1, [r4, #-2704] - mla r3, r3, r1, r2 + add r1, r1, r9 + ldr r0, [r1, #4] + bic r2, r2, #-2147483648 + cmp r2, r0 + bne .L3420 + ldr r2, .L3507+64 + ldr r0, .L3507+64 + ldr r1, [r1, #16] + ldrh r2, [r2] + str r3, [sp, #28] + add r2, r2, #1 + strh r2, [r0] @ movhi + ldr r0, [r4, #-2704] + ldr r2, [r4, #-532] + mla r2, r3, r0, r2 + str r1, [r2, #16] + str r2, [sp, #24] + bl Ftl_get_new_temp_ppa + ldr r2, [sp, #24] + ldr r1, [r4, #-532] + ldr r3, [sp, #28] + str r0, [r2, #4] + ldr r2, [r4, #-2704] + mla r3, r3, r2, r1 ldr r2, [r4, #-2688] - add r2, r2, r7 + add r2, r2, r9 ldr r1, [r2, #8] str r1, [r3, #8] mov r1, #1 @@ -21038,592 +21665,479 @@ str r2, [r3, #12] ldr r3, [sp, #32] str r3, [r10, #12] - ldr r3, .L3583+68 + ldr r3, .L3507+40 ldrh r3, [r3] strh r3, [r10, #2] @ movhi ldr r3, [r4, #-3328] ldr r0, [r4, #-2688] str r3, [r10, #4] - add r0, r0, r7 ldr r3, [r4, #-2704] + add r0, r0, r9 add r3, r3, #1 str r3, [r4, #-2704] bl FtlGcBufAlloc - ldr r3, .L3583+16 - ldrb r3, [r3, #144] @ zero_extendqisi2 + ldr r3, .L3507+12 + ldrb r3, [r3, #152] @ zero_extendqisi2 cmp r3, #0 - bne .L3495 - ldrb r3, [r4, #-3421] @ zero_extendqisi2 - ldr r2, [r4, #-2704] + bne .L3421 + ldrb r2, [r4, #-3417] @ zero_extendqisi2 + ldr r3, [r4, #-2704] cmp r2, r3 - beq .L3495 - ldr r3, .L3583+68 + beq .L3421 + ldr r3, .L3507+40 ldrh r3, [r3, #4] cmp r3, #0 - bne .L3529 -.L3495: + bne .L3420 +.L3421: bl Ftl_gc_temp_data_write_back cmp r0, #0 - beq .L3529 - ldr r3, .L3583 + beq .L3420 + ldr r3, .L3507 mov r2, #0 - mvn r1, #0 - sub r3, r3, #3280 - str r2, [r3, #2720] - strh r1, [r3, #-4] @ movhi - strh r2, [r3, #-2] @ movhi - b .L3578 -.L3529: - add r8, r8, #1 - b .L3493 -.L3582: - add r6, r6, #1 - b .L3490 -.L3497: - ldrh r3, [r5, #2] - add r9, r9, r3 - ldr r3, [sp, #12] - uxth r9, r9 - strh r9, [r5, #2] @ movhi - cmp r9, r3 - bcc .L3499 - ldr r3, [r7, #-2704] + mvn ip, #0 + sub r1, r3, #3280 + str r2, [r3, #-560] + add r3, r3, #1984 + strh ip, [r1, #-4] @ movhi + strh r2, [r1, #-2] @ movhi +.L3505: + ldrh r0, [r3] + b .L3343 +.L3420: + add fp, fp, #1 + b .L3419 +.L3423: + ldrh r3, [r7, #-2] + add r6, r6, r3 + ldr r3, [sp, #8] + uxth r6, r6 + cmp r3, r6 + strh r6, [r7, #-2] @ movhi + bhi .L3425 + ldr r3, [r4, #-2704] cmp r3, #0 - beq .L3500 + beq .L3426 bl Ftl_gc_temp_data_write_back cmp r0, #0 movne r3, #0 - strne r3, [r7, #-560] - bne .L3578 -.L3500: - ldr r3, .L3583+60 - ldrh r4, [r3] - cmp r4, #0 - bne .L3501 - ldrh r3, [r5] - ldr r2, [r7, #-3544] - mov r3, r3, asl #1 + strne r3, [r4, #-560] + bne .L3506 +.L3426: + ldr r3, .L3507+64 + ldrh r0, [r3] + cmp r0, #0 + bne .L3427 + ldrh r3, [r7, #-4] + ldr r2, [r4, #-3540] + lsl r3, r3, #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L3501 - ldr r6, .L3583+16 -.L3502: - ldr r3, [r6, #2448] - cmp r4, r3 - bcs .L3507 - mov r0, r4 - add r1, sp, #36 + movne r6, r0 + ldrne r8, .L3507+12 + bne .L3428 +.L3427: + mvn r3, #0 + strh r3, [r7, #-4] @ movhi +.L3425: + ldr r3, .L3507+72 + ldrh r3, [r3] + cmp r3, #2 + bhi .L3434 + ldr r3, .L3507+52 + ldrh r6, [r3] + b .L3435 +.L3429: + add r6, r6, #1 +.L3428: + ldr r3, [r8, #2452] + cmp r6, r3 + bcs .L3433 mov r2, #0 + add r1, sp, #36 + mov r0, r6 bl log2phys ldr r0, [sp, #36] cmn r0, #1 - beq .L3503 + beq .L3429 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldrh r3, [r5] + ldrh r3, [r7, #-4] cmp r3, r0 - bne .L3503 -.L3507: - ldr r3, .L3583+16 - ldr r3, [r3, #2448] - cmp r4, r3 - bcc .L3501 - ldrh r3, [r5] + bne .L3429 +.L3433: + ldr r3, [r8, #2452] + cmp r6, r3 + bcc .L3427 + ldrh r3, [r7, #-4] mov r1, #0 - ldr r2, [r7, #-3544] - mov r3, r3, asl #1 + ldr r2, [r4, #-3540] + lsl r3, r3, #1 strh r1, [r2, r3] @ movhi - ldrh r0, [r5] + ldrh r0, [r7, #-4] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush - b .L3501 -.L3503: - add r4, r4, #1 - b .L3502 -.L3501: - mvn r3, #0 - strh r3, [r5] @ movhi -.L3499: - ldr r3, .L3583+72 - ldrh r3, [r3] - cmp r3, #2 - ldrls r3, .L3583+56 - ldrlsh r9, [r3] - bls .L3509 -.L3508: - ldr r2, .L3583 - mov r1, #0 - str r1, [r2, #-560] - ldr r2, .L3583+20 + b .L3427 +.L3434: + mov r2, #0 + str r2, [r4, #-560] + ldr r2, .L3507+16 ldrh r0, [r2] - cmp r0, r1 - addeq r0, r3, #1 - b .L3572 -.L3513: - mov r0, #0 - bx lr -.L3515: - mov r0, ip - b .L3572 -.L3580: - ldrh r9, [r4, #-10] - cmp r9, r3 - bne .L3577 - sub r3, r8, #3520 - ldr r2, [r8, #-2716] - ldrh r3, [r3, #-8] - cmp r3, #24 - movcc r3, #5120 - movcs r3, #1024 - cmp r2, r3 - movls fp, r9 - bls .L3436 - ldr r2, .L3583+20 - mov r3, #0 - str r3, [r5, #-2716] - strh r3, [r2] @ movhi - bl GetSwlReplaceBlock - cmp r0, r9 - mov fp, r0 - bne .L3438 - sub r3, r8, #2704 - ldrh r1, [r7, #-8] - ldrh r2, [r3, #-14] - mov r9, r3 - cmp r1, r2 - movcs r2, #80 - strcsh r2, [r3, #-14] @ movhi - bcs .L3448 - mov r0, #64 - bl List_get_gc_head_node - uxth r3, r0 - cmp r3, fp - beq .L3448 - ldr r2, [r8, #-564] - ldr r10, .L3583+16 - cmp r2, #0 - bne .L3441 - movw r1, #2340 - ldrh r1, [r10, r1] - cmp r1, #3 - beq .L3441 - ldr r1, [r8, #-3236] - cmp r1, #0 - bne .L3441 - ldr r1, [r10, #2244] - cmp r1, #0 - bne .L3441 - ldrb r0, [r10, #144] @ zero_extendqisi2 cmp r0, #0 - beq .L3442 -.L3441: - ldr r2, [r5, #-3544] - mov r3, r3, asl #1 - movw r0, #2340 - ldrh r0, [r10, r0] - ldrh r1, [r2, r3] - movw r3, #2390 - ldr r2, .L3583+24 - cmp r0, #3 - ldrh r3, [r10, r3] - ldrh r2, [r2] - mul r2, r2, r3 - moveq r3, r3, lsr #1 - movne r3, #0 - add r3, r2, r3 - cmp r1, r3 - bgt .L3444 + addeq r0, r3, #1 + b .L3343 +.L3439: mov r0, #0 - bl List_get_gc_head_node - ldr r3, [r10, #2448] - ldr r2, [r5, #-3372] - add r3, r3, r3, asl #1 - cmp r2, r3, lsr #2 - movls r3, #160 - uxth fp, r0 - bls .L3575 - b .L3579 -.L3442: - ldr r2, [r8, #-3544] - mov r3, r3, asl #1 - ldrh r3, [r2, r3] - cmp r3, #7 - bhi .L3447 - bl List_get_gc_head_node - uxth fp, r0 -.L3579: - mov r3, #128 -.L3575: - strh r3, [r9, #-14] @ movhi - movw r3, #65535 - cmp fp, r3 - beq .L3448 - b .L3438 -.L3444: - mov r3, #128 - b .L3576 -.L3447: - mov r3, #64 -.L3576: - strh r3, [r9, #-14] @ movhi - b .L3448 -.L3438: - ldr r0, [r5, #-3608] - mov r1, fp, asl #1 - ldr r3, [r5, #-3544] - ldrh r2, [r7, #-8] - ldrh r3, [r3, r1] - ldrh r1, [r0, r1] - ldr r0, .L3583+76 - str r1, [sp] - ldr r1, .L3583+80 - ldrh r1, [r1] - str r1, [sp, #4] - mov r1, fp - bl printk -.L3448: - bl FtlGcReFreshBadBlk - b .L3436 -.L3577: - mov fp, r3 - b .L3436 -.L3572: - add sp, sp, #44 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3584: + b .L3343 +.L3508: .align 2 -.L3583: +.L3507: .word .LANCHOR2 .word .LANCHOR1 .word .LANCHOR2-2656 - .word .LANCHOR2-3280 .word .LANCHOR0 - .word .LANCHOR4+1984 - .word .LANCHOR0+2320 + .word .LANCHOR2+1984 + .word .LANCHOR2-3280 + .word .LANCHOR2-2704 .word .LC157 - .word .LANCHOR2-3520 - .word .LANCHOR2-3296 - .word .LANCHOR4 - .word .LANCHOR2-3472 - .word .LANCHOR2-3284 - .word .LANCHOR2-2712 - .word .LANCHOR0+2388 - .word .LANCHOR4+1986 - .word .LANCHOR0+2390 - .word .LANCHOR2-3428 - .word .LANCHOR2-3528 - .word .LC158 .word .LANCHOR2-2720 + .word .LANCHOR2-3296 + .word .LANCHOR2-3424 + .word .LC158 + .word .LANCHOR2-3472 + .word .LANCHOR0+2390 + .word .LANCHOR2-2712 + .word .LANCHOR0+2324 + .word .LANCHOR2+1986 + .word .LANCHOR0+2392 + .word .LANCHOR2-3524 .fnend .size ftl_do_gc, .-ftl_do_gc .align 2 .global FtlCacheWriteBack + .syntax unified + .arm + .fpu softvfp .type FtlCacheWriteBack, %function FtlCacheWriteBack: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r3, .L3629 - ldr r7, .L3629+4 - ldr r5, [r3, #1992] - ldr r3, [r7, #-3616] - cmp r3, #0 - bne .L3587 - ldr r4, .L3629+8 - ldr r1, [r4, #2440] + .pad #20 + sub sp, sp, #20 + ldr r6, .L3552 + ldr r9, [r6, #-3612] + cmp r9, #0 + bne .L3511 + ldr r4, .L3552+4 + ldr r1, [r4, #2444] cmp r1, #0 - beq .L3587 - ldrb r6, [r4, #144] @ zero_extendqisi2 - mov r8, #0 - ldr r0, [r4, #2444] + beq .L3511 + ldrb r3, [r4, #152] @ zero_extendqisi2 + mov r7, #0 + ldr r5, [r6, #1992] mov r10, #36 - cmp r6, #0 + ldr fp, .L3552+8 + cmp r3, #0 + ldr r0, [r4, #2448] + ldrbne r8, [r5, #8] @ zero_extendqisi2 + moveq r8, r9 ldrb r3, [r5, #9] @ zero_extendqisi2 - ldr r9, .L3629+8 - ldrneb r6, [r5, #8] @ zero_extendqisi2 - subne r6, r6, #1 - clzne r6, r6 - movne r6, r6, lsr #5 - mov r2, r6 + subne r8, r8, #1 + clzne r8, r8 + lsrne r8, r8, #5 + mov r2, r8 bl FlashProgPages -.L3590: - ldr r3, [r4, #2440] - cmp r8, r3 - bcs .L3608 - mul fp, r10, r8 - ldr r3, [r9, #2444] - add r2, r3, fp - ldr r3, [r3, fp] - cmn r3, #1 - beq .L3611 - ldr r3, [r2, #4] - cmp r6, #0 - ldr r0, [r2, #16] - add r1, sp, #4 - mov r2, #1 - orrne r3, r3, #-2147483648 - str r3, [sp, #4] - bl log2phys +.L3514: ldr r3, [r4, #2444] - add r3, r3, fp + cmp r7, r3 + bcc .L3521 +.L3533: + mov r3, #0 + str r3, [r4, #2444] +.L3511: + mov r0, #0 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3521: + mul r3, r10, r7 + ldr r2, [r4, #2448] + add r0, r2, r3 + ldr r2, [r2, r3] + cmn r2, #1 + beq .L3516 + ldr r2, [r0, #4] + cmp r8, #0 + add r1, sp, #12 + ldr r0, [r0, #16] + str r3, [sp, #4] + orrne r2, r2, #-2147483648 + str r2, [sp, #12] + mov r2, #1 + bl log2phys + ldr r2, [r4, #2448] + ldr r3, [sp, #4] + add r3, r2, r3 ldr r3, [r3, #12] ldr r0, [r3, #12] cmn r0, #1 - beq .L3594 + beq .L3519 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r2, [r7, #-3544] - mov r3, r0, asl #1 - mov fp, r0 + ldr r1, [r6, #-3540] + lsl r2, r0, #1 + mov r3, r0 + ldrh r2, [r1, r2] + cmp r2, #0 + bne .L3520 + mov r1, r0 + str r0, [sp, #4] + mov r0, fp + bl printk + ldr r3, [sp, #4] +.L3520: + mov r0, r3 + bl decrement_vpc_count +.L3519: + add r7, r7, #1 + b .L3514 +.L3531: + mov r7, #36 + ldr r3, [r4, #2448] + mul r7, r7, r9 + mov r10, #0 + mov fp, #1 + mvn r2, #0 + str r2, [r3, r7] +.L3522: + ldr r2, [r4, #2448] + add r3, r2, r7 + ldr r2, [r2, r7] + ldr r0, [r3, #4] + cmn r2, #1 + beq .L3526 + cmp r8, #0 + mov r2, #1 + orrne r0, r0, #-2147483648 + add r1, sp, #12 + str r0, [sp, #12] + ldr r0, [r3, #16] + bl log2phys + ldr r3, [r4, #2448] + add r7, r3, r7 + ldr r3, [r7, #12] + ldr r0, [r3, #12] + cmn r0, #1 + beq .L3529 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r6, #-3540] + lsl r3, r0, #1 + mov r7, r0 ldrh r2, [r2, r3] cmp r2, #0 - bne .L3595 - ldr r0, .L3629+12 - mov r1, fp - bl printk -.L3595: - mov r0, fp - bl decrement_vpc_count -.L3594: - add r8, r8, #1 - b .L3590 -.L3627: - ldr r6, .L3629+16 - movw r5, #16386 -.L3607: - ldrh r3, [r6] - cmp r3, #0 - beq .L3608 - mov r0, #1 + bne .L3530 mov r1, r0 + ldr r0, .L3552+8 + bl printk +.L3530: + mov r0, r7 + bl decrement_vpc_count +.L3529: + add r9, r9, #1 +.L3516: + ldr r3, [r4, #2444] + cmp r9, r3 + bcc .L3531 + movw r5, #16386 +.L3534: + ldr r3, .L3552+12 + ldrh r3, [r3] + cmp r3, #0 + beq .L3533 + mov r1, #1 + mov r0, r1 bl ftl_do_gc subs r5, r5, #1 - bne .L3607 -.L3608: - mov r3, #0 - str r3, [r4, #2440] - b .L3587 -.L3611: - ldr fp, .L3629+8 - mov r9, #0 -.L3591: - ldr r3, [r4, #2440] - cmp r9, r3 - bcs .L3627 - mov r8, #36 - ldr r3, [fp, #2444] - mul r8, r8, r9 - mov r10, #0 - mvn r2, #0 - str r2, [r3, r8] -.L3597: - ldr r3, [r4, #2444] - add r2, r3, r8 - ldr r3, [r3, r8] - cmn r3, #1 - bne .L3628 - ldr r0, [r2, #4] + bne .L3534 + b .L3533 +.L3526: ubfx r0, r0, #10, #16 bl P2V_block_in_plane ldrh r3, [r5] cmp r3, r0 - bne .L3598 - ldr r1, [r7, #-3544] - mov r3, r3, asl #1 + bne .L3523 + ldr r1, [r6, #-3540] + lsl r3, r3, #1 ldrh r0, [r5, #4] ldrh r2, [r1, r3] - rsb r2, r0, r2 + sub r2, r2, r0 strh r2, [r1, r3] @ movhi - ldr r3, .L3629+20 + ldr r3, .L3552+16 strb r10, [r5, #6] strh r10, [r5, #4] @ movhi ldrh r3, [r3] strh r3, [r5, #2] @ movhi -.L3598: +.L3523: ldrh r3, [r5, #4] cmp r3, #0 - bne .L3599 + bne .L3524 mov r0, r5 bl allocate_new_data_superblock -.L3599: - ldr r3, [r7, #-3136] +.L3524: + ldr r3, [r6, #-3140] add r3, r3, #1 - str r3, [r7, #-3136] - ldr r3, [r4, #2444] - add r3, r3, r8 + str r3, [r6, #-3140] + ldr r3, [r4, #2448] + add r3, r3, r7 ldr r0, [r3, #4] ubfx r0, r0, #10, #16 bl FtlGcMarkBadPhyBlk mov r0, r5 bl get_new_active_ppa - ldr r3, [r4, #2444] - mov r2, r6 + ldr r3, [r4, #2448] + mov r2, r0 + str r0, [sp, #12] mov r1, #1 - add r3, r3, r8 - str r0, [sp, #4] - str r0, [r3, #4] - mov r0, r3 + add r0, r3, r7 + str r2, [r0, #4] + mov r2, r8 ldrb r3, [r5, #9] @ zero_extendqisi2 bl FlashProgPages - ldr r3, [r4, #2444] - ldr r3, [r3, r8] + ldr r3, [r4, #2448] + ldr r3, [r3, r7] cmn r3, #1 - ldreq r2, .L3629+4 - moveq r3, #1 - streq r3, [r2, #-3616] - ldr r3, [r7, #-3616] + streq fp, [r6, #-3612] + ldr r3, [r6, #-3612] cmp r3, #0 - beq .L3597 - b .L3587 -.L3628: - ldr r3, [r2, #4] - cmp r6, #0 - ldr r0, [r2, #16] - add r1, sp, #4 - mov r2, #1 - orrne r3, r3, #-2147483648 - str r3, [sp, #4] - bl log2phys - ldr r3, [r4, #2444] - add r8, r3, r8 - ldr r3, [r8, #12] - ldr r0, [r3, #12] - cmn r0, #1 - beq .L3604 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r7, #-3544] - mov r3, r0, asl #1 - mov r8, r0 - ldrh r2, [r2, r3] - cmp r2, #0 - bne .L3605 - ldr r0, .L3629+12 - mov r1, r8 - bl printk -.L3605: - mov r0, r8 - bl decrement_vpc_count -.L3604: - add r9, r9, #1 - b .L3591 -.L3587: - mov r0, #0 - add sp, sp, #12 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3630: + beq .L3522 + b .L3511 +.L3553: .align 2 -.L3629: - .word .LANCHOR4 +.L3552: .word .LANCHOR2 .word .LANCHOR0 .word .LC159 .word .LANCHOR2-2658 - .word .LANCHOR0+2388 + .word .LANCHOR0+2390 .fnend .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 .global FtlSysFlush + .syntax unified + .arm + .fpu softvfp .type FtlSysFlush, %function FtlSysFlush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3635 - ldr r3, [r3, #-3616] + ldr r3, .L3560 + ldr r3, [r3, #-3612] cmp r3, #0 - bne .L3634 - ldr r3, .L3635+4 - stmfd sp!, {r4, lr} + bne .L3557 + ldr r3, .L3560+4 + push {r4, lr} .save {r4, lr} - ldr r4, [r3, #504] + ldr r4, [r3, #500] cmp r4, #1 - bne .L3632 + bne .L3555 bl FtlCacheWriteBack bl l2p_flush mov r0, r4 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3632: +.L3555: mov r0, #0 - ldmfd sp!, {r4, pc} -.L3634: + pop {r4, pc} +.L3557: mov r0, #0 bx lr -.L3636: +.L3561: .align 2 -.L3635: +.L3560: .word .LANCHOR2 .word .LANCHOR1 .fnend .size FtlSysFlush, .-FtlSysFlush .align 2 .global FtlDeInit + .syntax unified + .arm + .fpu softvfp .type FtlDeInit, %function FtlDeInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L3640 - ldr r3, [r3, #504] + ldr r3, .L3568 + ldr r3, [r3, #500] cmp r3, #1 - bne .L3638 + bne .L3565 + push {r4, lr} + .save {r4, lr} bl FtlSysFlush -.L3638: mov r0, #0 - ldmfd sp!, {r3, pc} -.L3641: + pop {r4, pc} +.L3565: + mov r0, #0 + bx lr +.L3569: .align 2 -.L3640: +.L3568: .word .LANCHOR1 .fnend .size FtlDeInit, .-FtlDeInit .align 2 .global ftl_deinit + .syntax unified + .arm + .fpu softvfp .type ftl_deinit, %function ftl_deinit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} bl ftl_flash_de_init bl FtlDeInit - ldmfd sp!, {r3, lr} + pop {r4, lr} b ftl_flash_de_init .fnend .size ftl_deinit, .-ftl_deinit .align 2 .global rk_ftl_de_init + .syntax unified + .arm + .fpu softvfp .type rk_ftl_de_init, %function rk_ftl_de_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} + push {r4, lr} + .save {r4, lr} mov r1, #0 - ldr r0, .L3646 + ldr r0, .L3574 bl printk - ldmfd sp!, {r3, lr} + pop {r4, lr} b ftl_deinit -.L3647: +.L3575: .align 2 -.L3646: +.L3574: .word .LC160 .fnend .size rk_ftl_de_init, .-rk_ftl_de_init .align 2 .global ftl_cache_flush + .syntax unified + .arm + .fpu softvfp .type ftl_cache_flush, %function ftl_cache_flush: .fnstart @@ -21635,6 +22149,9 @@ .size ftl_cache_flush, .-ftl_cache_flush .align 2 .global rk_ftl_cache_write_back + .syntax unified + .arm + .fpu softvfp .type rk_ftl_cache_write_back, %function rk_ftl_cache_write_back: .fnstart @@ -21646,74 +22163,89 @@ .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back .align 2 .global ftl_discard + .syntax unified + .arm + .fpu softvfp .type ftl_discard, %function ftl_discard: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #12 + push {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #8 mov r6, r0 - ldr r8, .L3669 + ldr r5, .L3596 + ldr r3, [r5, #2432] + cmp r3, r1 + cmpcs r3, r0 + movls r0, #1 + movhi r0, #0 + bls .L3586 + add r2, r6, r1 mov r4, r1 - ldr r3, [r8, #2428] - cmp r1, r3 - cmpls r0, r3 - movcs r5, #1 - movcc r5, #0 - bcs .L3658 - add r2, r0, r1 - cmp r2, r3 - bhi .L3658 + cmp r3, r2 + bcc .L3586 cmp r1, #31 - bls .L3656 - ldr r7, .L3669+4 - ldr r3, [r7, #-3616] + bls .L3578 + ldr r7, .L3596+4 + ldr r3, [r7, #-3612] cmp r3, #0 - movne r0, r5 - bne .L3651 + bne .L3578 bl FtlCacheWriteBack - movw r3, #2394 - ldrh r5, [r8, r3] + movw r3, #2396 mov r0, r6 + ldrh r5, [r5, r3] mov r1, r5 bl __aeabi_uidiv smulbb r3, r0, r5 mov r8, r0 - rsb r6, r3, r6 + sub r6, r6, r3 uxth r6, r6 cmp r6, #0 - beq .L3652 - rsb r5, r6, r5 + beq .L3580 + sub r5, r5, r6 add r8, r0, #1 cmp r5, r4 movcs r5, r4 uxth r5, r5 - rsb r4, r5, r4 -.L3652: - ldr r5, .L3669+8 + sub r4, r4, r5 +.L3580: + ldr r5, .L3596+8 mvn r3, #0 - ldr r9, .L3669+12 str r3, [sp, #4] mov r6, r5 -.L3653: +.L3581: ldrh r3, [r5] cmp r4, r3 - bcc .L3668 - mov r0, r8 - mov r1, sp + bcs .L3583 + ldr r3, [r7, #1996] + cmp r3, #32 + bls .L3584 + mov r3, #0 + str r3, [r7, #1996] + bl l2p_flush + bl FtlVpcTblFlush +.L3584: + mov r0, #0 +.L3578: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L3583: mov r2, #0 + mov r1, sp + mov r0, r8 bl log2phys ldr r3, [sp] cmn r3, #1 - beq .L3654 - ldr r3, [r9, #1996] - add r1, sp, #4 + beq .L3582 + ldr r3, [r7, #1996] mov r2, #1 + add r1, sp, #4 mov r0, r8 add r3, r3, #1 - str r3, [r9, #1996] + str r3, [r7, #1996] ldr r3, [r7, #-3360] add r3, r3, #1 str r3, [r7, #-3360] @@ -21722,40 +22254,27 @@ ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl decrement_vpc_count -.L3654: +.L3582: ldrh r3, [r6] add r8, r8, #1 - rsb r4, r3, r4 - b .L3653 -.L3668: - ldr r3, .L3669+12 - ldr r2, [r3, #1996] - cmp r2, #32 - bls .L3656 - mov r2, #0 - str r2, [r3, #1996] - bl l2p_flush - bl FtlVpcTblFlush -.L3656: - mov r0, #0 - b .L3651 -.L3658: + sub r4, r4, r3 + b .L3581 +.L3586: mvn r0, #0 -.L3651: - add sp, sp, #12 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L3670: + b .L3578 +.L3597: .align 2 -.L3669: +.L3596: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2394 - .word .LANCHOR4 + .word .LANCHOR0+2396 .fnend .size ftl_discard, .-ftl_discard .align 2 .global FtlDiscard + .syntax unified + .arm + .fpu softvfp .type FtlDiscard, %function FtlDiscard: .fnstart @@ -21767,393 +22286,403 @@ .size FtlDiscard, .-FtlDiscard .align 2 .global ftl_read + .syntax unified + .arm + .fpu softvfp .type ftl_read, %function ftl_read: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr ip, .L3643 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r1 - ldr r1, .L3720 .pad #84 sub sp, sp, #84 - ldr r1, [r1, #504] - cmp r1, #1 - bne .L3697 + ldr ip, [ip, #500] + cmp ip, #1 + bne .L3623 cmp r0, #16 mov r8, r3 - mov r9, r2 - bne .L3674 - mov r1, r2 - add r0, r5, #256 + str r2, [sp, #28] + mov r5, r1 + bne .L3601 mov r2, r3 + ldr r1, [sp, #28] + add r0, r5, #256 bl FtlVendorPartRead - b .L3673 -.L3674: - ldr r2, .L3720+4 - ldr r3, [r2, #2428] - cmp r9, r3 - cmpls r5, r3 - bcs .L3697 - add r1, r5, r9 - str r1, [sp, #40] + mov r10, r0 +.L3599: + mov r0, r10 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3601: + ldr r2, .L3643+4 + ldr r1, [sp, #28] + ldr r3, [r2, #2432] cmp r1, r3 - bhi .L3697 - movw r3, #2394 + cmpls r5, r3 + bcs .L3623 + add r1, r5, r1 + cmp r3, r1 + str r1, [sp, #44] + bcc .L3623 + movw r3, #2396 mov r0, r5 ldrh r4, [r2, r3] mov r1, r4 bl __aeabi_uidiv + ldr r3, [sp, #44] mov r1, r4 - ldr r3, [sp, #40] - str r0, [sp, #32] + str r0, [sp, #36] sub r0, r3, #1 bl __aeabi_uidiv - ldr r3, [sp, #32] - str r0, [sp, #36] + ldr r3, [sp, #36] + ldr r1, [sp, #28] + str r0, [sp, #40] rsb r3, r3, #1 add r3, r3, r0 - str r3, [sp, #28] - ldr r3, .L3720+8 - ldr r1, [sp, #28] - ldr r0, [sp, #32] + str r3, [sp, #32] + ldr r3, .L3643+8 ldr r2, [r3, #-3336] - add r2, r9, r2 + add r2, r2, r1 + ldr r1, [sp, #32] str r2, [r3, #-3336] ldr r2, [r3, #-3364] - add r2, r1, r2 - ldr r1, [sp, #36] + add r2, r2, r1 + mov r1, r0 + ldr r0, [sp, #36] str r2, [r3, #-3364] bl FtlCacheMetchLpa cmp r0, #0 - beq .L3675 + beq .L3602 bl FtlCacheWriteBack -.L3675: - ldr r6, [sp, #32] - mov r10, #0 - ldr r4, .L3720+8 - mov r7, r10 - str r10, [sp, #48] - str r10, [sp, #52] -.L3676: - ldr r3, [sp, #28] +.L3602: + ldr r6, [sp, #36] + mov r3, #0 + ldr r4, .L3643+8 + mov r7, r3 + mov r10, r3 + str r3, [sp, #52] + str r3, [sp, #48] +.L3603: + ldr r3, [sp, #32] cmp r3, #0 - beq .L3719 - mov r0, r6 - add r1, sp, #76 + bne .L3620 + ldr r3, .L3643+12 + ldrh r3, [r3, #-2] + cmp r3, #0 + beq .L3599 + mov r1, #1 + ldr r0, [sp, #32] + bl ftl_do_gc + b .L3599 +.L3620: mov r2, #0 + add r1, sp, #76 + mov r0, r6 bl log2phys ldr r3, [sp, #76] cmn r3, #1 - bne .L3715 - mov fp, #0 -.L3677: - ldr r3, .L3720+12 - ldrh r0, [r3] - cmp fp, r0 - bcs .L3681 - mla r0, r0, r6, fp - ldr r2, [sp, #40] - cmp r0, r5 - movcs r3, #1 - movcc r3, #0 - cmp r0, r2 - movcs r3, #0 - cmp r3, #0 - beq .L3679 - rsb r0, r5, r0 - mov r1, #0 - mov r2, #512 - add r0, r8, r0, asl #9 - bl ftl_memset -.L3679: - add fp, fp, #1 - b .L3677 -.L3715: + moveq r9, #0 + beq .L3605 ldr r2, [r4, #-536] - mov fp, #36 - mla fp, fp, r7, r2 - str r3, [fp, #4] - ldr r3, [sp, #32] - cmp r6, r3 - bne .L3682 - ldr r3, [r4, #-508] - mov r0, r5 - str r3, [fp, #8] - ldr r3, .L3720+12 - ldrh ip, [r3] - mov r1, ip - str ip, [sp, #44] - bl __aeabi_uidivmod - ldr ip, [sp, #44] - str r1, [sp, #56] - rsb r3, r1, ip - cmp r3, r9 - movcs r3, r9 - cmp r3, ip - str r3, [sp, #48] - streq r8, [fp, #8] - b .L3683 -.L3682: + mov r9, #36 + mla r9, r9, r7, r2 + str r3, [r9, #4] ldr r3, [sp, #36] cmp r6, r3 - bne .L3684 - ldr r3, [r4, #-504] - ldr r1, [sp, #40] - str r3, [fp, #8] - ldr r3, .L3720+12 - ldrh r2, [r3] - mul r3, r2, r6 - rsb r10, r3, r1 - cmp r10, r2 - bne .L3683 - b .L3717 -.L3684: - ldr r3, .L3720+12 - ldrh r3, [r3] - mul r3, r3, r6 -.L3717: - rsb r3, r5, r3 - add r3, r8, r3, asl #9 - str r3, [fp, #8] -.L3683: - ldr r3, .L3720+16 + bne .L3609 + ldr r3, [r4, #-508] + mov r0, r5 + str r3, [r9, #8] + ldr r3, .L3643+16 + ldrh fp, [r3] + mov r1, fp + bl __aeabi_uidivmod + ldr r2, [sp, #28] + sub r3, fp, r1 + str r1, [sp, #56] + cmp r2, r3 + movcc r3, r2 + cmp r3, fp + str r3, [sp, #48] + streq r8, [r9, #8] +.L3610: + ldr r3, .L3643+20 ldr r2, [r4, #-496] - str r6, [fp, #16] + str r6, [r9, #16] ldrh r3, [r3] - mul r3, r3, r7 + mul r3, r7, r3 add r7, r7, #1 bic r3, r3, #3 add r3, r2, r3 - str r3, [fp, #12] -.L3681: - ldr r3, [sp, #28] + str r3, [r9, #12] + b .L3608 +.L3607: + mla r0, r0, r6, r9 + ldr r2, [sp, #44] + cmp r5, r0 + movls r3, #1 + movhi r3, #0 + cmp r2, r0 + movls r3, #0 + cmp r3, #0 + beq .L3606 + sub r0, r0, r5 + mov r2, #512 + mov r1, #0 + add r0, r8, r0, lsl #9 + bl ftl_memset +.L3606: + add r9, r9, #1 +.L3605: + ldr r3, .L3643+16 + ldrh r0, [r3] + cmp r9, r0 + bcc .L3607 +.L3608: + ldr r3, [sp, #32] add r6, r6, #1 subs r3, r3, #1 - str r3, [sp, #28] - beq .L3685 - ldr r3, .L3720+20 + str r3, [sp, #32] + beq .L3612 + ldr r3, .L3643+24 ldrh r3, [r3] - cmp r7, r3, asl #3 - bne .L3676 -.L3685: + cmp r7, r3, lsl #3 + bne .L3603 +.L3612: cmp r7, #0 - beq .L3676 - ldr r0, [r4, #-536] - mov r1, r7 + beq .L3603 mov r2, #0 + mov r1, r7 + ldr r0, [r4, #-536] + mov fp, #0 bl FlashReadPages + ldr r3, [sp, #52] + lsl r3, r3, #9 + str r3, [sp, #68] ldr r3, [sp, #56] - mov r3, r3, asl #9 + lsl r3, r3, #9 str r3, [sp, #60] ldr r3, [sp, #48] - mov r3, r3, asl #9 + lsl r3, r3, #9 str r3, [sp, #64] - mov r3, r10, asl #9 - str r3, [sp, #68] - mov r3, #0 - str r3, [sp, #44] -.L3692: - ldr r3, [sp, #44] - mov ip, #36 - ldr r1, [sp, #32] - mul fp, ip, r3 +.L3619: + mov r9, #36 ldr r3, [r4, #-536] - add r3, r3, fp + mul r9, r9, fp + ldr r1, [sp, #36] + add r3, r3, r9 ldr r2, [r3, #16] - cmp r2, r1 - bne .L3687 + cmp r1, r2 + bne .L3614 ldr r1, [r3, #8] ldr r3, [r4, #-508] cmp r1, r3 - bne .L3688 + bne .L3615 ldr r3, [sp, #60] mov r0, r8 ldr r2, [sp, #64] add r1, r1, r3 - b .L3718 -.L3687: - ldr r1, [sp, #36] - cmp r2, r1 - bne .L3688 - ldr r1, [r3, #8] - ldr r3, [r4, #-504] - cmp r1, r3 - bne .L3688 - ldr r3, .L3720+12 - ldr r2, [sp, #68] - ldrh r0, [r3] - ldr r3, [sp, #36] - mul r0, r0, r3 - rsb r0, r5, r0 - add r0, r8, r0, asl #9 -.L3718: +.L3642: bl ftl_memcpy -.L3688: - ldr r2, [r4, #-536] - add r3, r2, fp - ldr r1, [r2, fp] - cmn r1, #1 - streq r1, [sp, #52] - ldreq r2, [r4, #-3160] - addeq r2, r2, #1 - streq r2, [r4, #-3160] - ldr r2, [r3, #12] - ldr r1, [r3, #16] - ldr r2, [r2, #8] - cmp r1, r2 - beq .L3690 - ldr r2, [r4, #-3160] - ldr r0, .L3720+24 - add r2, r2, #1 - str r2, [r4, #-3160] - ldr lr, [r3, #12] - ldr r2, [r3, #8] - ldr r1, [lr, #4] - str r1, [sp] - ldr r1, [lr, #8] - str r1, [sp, #4] - ldr r1, [lr, #12] - str r1, [sp, #8] - ldr r1, [r2] - str r1, [sp, #12] - ldr r2, [r2, #4] - str r2, [sp, #16] - ldr r1, [r3, #16] - ldr r2, [r3, #4] - ldr r3, [lr] - bl printk -.L3690: +.L3615: ldr r3, [r4, #-536] - add r2, r3, fp - ldr r3, [r3, fp] + ldr r2, [r3, r9] + add r1, r3, r9 + cmn r2, #1 + ldreq r3, [r4, #-3164] + moveq r10, r2 + addeq r3, r3, #1 + streq r3, [r4, #-3164] + ldr r3, [r1, #12] + ldr r2, [r1, #16] + ldr r3, [r3, #8] + cmp r2, r3 + beq .L3617 + ldr r3, [r4, #-3164] + add r3, r3, #1 + str r3, [r4, #-3164] + ldr r2, [r1, #8] + ldr r3, [r1, #12] + ldr r0, [r2, #4] + str r0, [sp, #16] + ldr r2, [r2] + ldr r0, .L3643+28 + str r2, [sp, #12] + ldr r2, [r3, #12] + str r2, [sp, #8] + ldr r2, [r3, #8] + str r2, [sp, #4] + ldr r2, [r3, #4] + str r2, [sp] + ldr r2, [r1, #4] + ldr r3, [r3] + ldr r1, [r1, #16] + bl printk +.L3617: + ldr r3, [r4, #-536] + add r2, r3, r9 + ldr r3, [r3, r9] cmp r3, #256 - bne .L3691 + bne .L3618 ldr r0, [r2, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3691: - ldr r3, [sp, #44] - add r3, r3, #1 - str r3, [sp, #44] - cmp r3, r7 - bne .L3692 +.L3618: + add fp, fp, #1 + cmp r7, fp + bne .L3619 mov r7, #0 - b .L3676 -.L3719: - ldr r3, .L3720+28 - ldrh r3, [r3, #-2] - cmp r3, #0 - beq .L3694 - ldr r0, [sp, #28] - mov r1, #1 - bl ftl_do_gc -.L3694: - ldr r0, [sp, #52] - b .L3673 -.L3697: - mvn r0, #0 -.L3673: - add sp, sp, #84 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3721: + b .L3603 +.L3609: + ldr r3, [sp, #40] + cmp r6, r3 + bne .L3611 + ldr r3, [r4, #-504] + ldr r1, [sp, #44] + str r3, [r9, #8] + ldr r3, .L3643+16 + ldrh r2, [r3] + mul r3, r2, r6 + sub r1, r1, r3 + cmp r2, r1 + str r1, [sp, #52] + bne .L3610 +.L3641: + sub r3, r3, r5 + add r3, r8, r3, lsl #9 + str r3, [r9, #8] + b .L3610 +.L3611: + ldr r3, .L3643+16 + ldrh r3, [r3] + mul r3, r6, r3 + b .L3641 +.L3614: + ldr r1, [sp, #40] + cmp r1, r2 + bne .L3615 + ldr r1, [r3, #8] + ldr r3, [r4, #-504] + cmp r1, r3 + bne .L3615 + ldr r3, .L3643+16 + ldr r2, [sp, #68] + ldrh r0, [r3] + ldr r3, [sp, #40] + mul r0, r3, r0 + sub r0, r0, r5 + add r0, r8, r0, lsl #9 + b .L3642 +.L3623: + mvn r10, #0 + b .L3599 +.L3644: .align 2 -.L3720: +.L3643: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2394 - .word .LANCHOR0+2400 - .word .LANCHOR0+2320 - .word .LC148 .word .LANCHOR2-2656 + .word .LANCHOR0+2396 + .word .LANCHOR0+2402 + .word .LANCHOR0+2324 + .word .LC148 .fnend .size ftl_read, .-ftl_read .align 2 .global ftl_vendor_read + .syntax unified + .arm + .fpu softvfp .type ftl_vendor_read, %function ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - str lr, [sp, #-4]! - .save {lr} - mov ip, r1 - mov lr, r0 + @ link register save eliminated. mov r3, r2 - mov r1, lr + mov r2, r1 + mov r1, r0 mov r0, #16 - mov r2, ip - ldr lr, [sp], #4 b ftl_read .fnend .size ftl_vendor_read, .-ftl_vendor_read .align 2 .global FlashBootVendorRead + .syntax unified + .arm + .fpu softvfp .type FlashBootVendorRead, %function FlashBootVendorRead: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 + mov r4, r0 mov r5, r1 + mov r6, r2 bl rknand_device_lock - ldr r3, .L3728 - ldr r3, [r3, #504] + ldr r3, .L3650 + ldr r3, [r3, #500] cmp r3, #1 mvnne r4, #0 - bne .L3725 - mov r2, r4 - mov r0, r6 + bne .L3647 + mov r0, r4 + mov r2, r6 mov r1, r5 bl ftl_vendor_read mov r4, r0 -.L3725: +.L3647: bl rknand_device_unlock mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -.L3729: + pop {r4, r5, r6, pc} +.L3651: .align 2 -.L3728: +.L3650: .word .LANCHOR1 .fnend .size FlashBootVendorRead, .-FlashBootVendorRead .align 2 .global ftl_sys_read + .syntax unified + .arm + .fpu softvfp .type ftl_sys_read, %function ftl_sys_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - mov ip, r1 mov r3, r2 + mov r2, r1 add r1, r0, #256 - mov r2, ip mov r0, #16 b ftl_read .fnend .size ftl_sys_read, .-ftl_sys_read .align 2 .global StorageSysDataLoad + .syntax unified + .arm + .fpu softvfp .type StorageSysDataLoad, %function StorageSysDataLoad: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r2, #512 - mov r5, r0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r4, r1 - mov r0, r1 + mov r5, r0 + mov r2, #512 mov r1, #0 + mov r0, r4 bl ftl_memset bl rknand_device_lock mov r2, r4 @@ -22163,11 +22692,14 @@ mov r4, r0 bl rknand_device_unlock mov r0, r4 - ldmfd sp!, {r3, r4, r5, pc} + pop {r4, r5, r6, pc} .fnend .size StorageSysDataLoad, .-StorageSysDataLoad .align 2 .global FtlRead + .syntax unified + .arm + .fpu softvfp .type FtlRead, %function FtlRead: .fnstart @@ -22179,284 +22711,288 @@ .size FtlRead, .-FtlRead .align 2 .global FtlInit + .syntax unified + .arm + .fpu softvfp .type FtlInit, %function FtlInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} mvn r3, #0 - ldr r2, .L3751 - ldr r7, .L3751+4 - ldr r5, .L3751+8 - ldr r6, .L3751+12 - ldr r1, .L3751+16 - ldr r0, .L3751+20 - str r3, [r7, #504] + ldr r7, .L3673 + ldr r5, .L3673+4 + ldr r6, .L3673+8 + ldr r1, .L3673+12 + str r3, [r7, #500] mov r3, #0 - str r3, [r2, #2000] - str r3, [r5, #-3616] + ldr r0, .L3673+16 + str r3, [r5, #2000] + str r3, [r5, #-3612] bl printk - add r0, r6, #116 + add r0, r6, #124 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldr r3, [r6, #2324] - uxth r0, r3 + add r3, r6, #2320 + add r3, r3, #8 + ldrh r0, [r3] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cmp r0, #0 - ldrne r0, .L3751+24 - bne .L3750 + beq .L3657 + ldr r1, .L3673+20 + ldr r0, .L3673+24 +.L3672: + bl printk +.L3658: + mov r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L3657: bl FtlSysBlkInit subs r4, r0, #0 - beq .L3737 - ldr r0, .L3751+28 -.L3750: - ldr r1, .L3751+32 - bl printk - b .L3736 -.L3737: - sub r5, r5, #3520 + ldrne r1, .L3673+20 + ldrne r0, .L3673+28 + bne .L3672 +.L3659: mov r1, #1 - str r1, [r7, #504] + sub r5, r5, #3520 + str r1, [r7, #500] bl ftl_do_gc - ldrh r5, [r5, #-8] - cmp r5, #15 - bhi .L3738 - ldr r6, .L3751+36 - ldr r7, .L3751+40 - sub r8, r6, #244 -.L3741: - ldrh r3, [r6] + ldrh r7, [r5, #-4] + cmp r7, #15 + bhi .L3660 +.L3663: + ldr r3, .L3673+32 movw r2, #65535 + ldrh r3, [r3] cmp r3, r2 - bne .L3739 - ldrh r2, [r7] + bne .L3661 + ldr r2, .L3673+36 + ldrh r2, [r2] cmp r2, r3 - bne .L3739 + bne .L3661 and r0, r4, #63 bl List_get_gc_head_node uxth r0, r0 bl FtlGcRefreshBlock -.L3739: - mov r0, #1 - mov r1, r0 - bl ftl_do_gc - mov r0, #0 +.L3661: mov r1, #1 + mov r0, r1 bl ftl_do_gc - ldrh r2, [r8] - add r3, r5, #2 + mov r1, #1 + mov r0, #0 + bl ftl_do_gc + ldrh r2, [r5, #-4] + add r3, r7, #2 cmp r2, r3 - bhi .L3736 + bhi .L3658 add r4, r4, #1 cmp r4, #4096 - bne .L3741 - b .L3736 -.L3738: - ldrb r3, [r6, #144] @ zero_extendqisi2 + bne .L3663 + b .L3658 +.L3660: + ldrb r3, [r6, #152] @ zero_extendqisi2 cmp r3, #0 - beq .L3736 + beq .L3658 mov r4, #128 -.L3743: - mov r0, #1 - mov r1, r0 +.L3665: + mov r1, #1 + mov r0, r1 bl ftl_do_gc subs r4, r4, #1 - bne .L3743 -.L3736: - mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L3752: + bne .L3665 + b .L3658 +.L3674: .align 2 -.L3751: - .word .LANCHOR4 +.L3673: .word .LANCHOR1 .word .LANCHOR2 .word .LANCHOR0 - .word .LC77 .word .LC76 + .word .LC77 + .word .LANCHOR3+224 .word .LC161 .word .LC162 - .word .LANCHOR3+240 .word .LANCHOR2-3284 .word .LANCHOR2-2666 .fnend .size FtlInit, .-FtlInit .align 2 .global rk_ftl_init + .syntax unified + .arm + .fpu softvfp .type rk_ftl_init, %function rk_ftl_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r0, #2048 - bl ftl_malloc - ldr r6, .L3758 - ldr r4, .L3758+4 + bl ftl_dma32_malloc mov r5, #0 - ldr r1, .L3758+8 - str r5, [r6, #2008] + ldr r4, .L3680 + ldr r1, .L3680+4 + str r0, [r4, #2004] + sub r0, r1, #324 + str r5, [r4, #1688] str r5, [r4, #1684] - str r0, [r6, #2004] - ldr r0, .L3758+12 + str r5, [r4, #2008] bl rknand_get_reg_addr ldr r3, [r4, #1684] cmp r3, r5 - beq .L3756 + mvneq r4, #0 + beq .L3675 bl rk_nandc_irq_init - mov r1, r5 - mov r2, r5 mov r3, #2048 - ldr r0, [r6, #2004] + mov r2, r5 + mov r1, r5 + ldr r0, [r4, #2004] bl FlashSramLoadStore bl rknand_flash_cs_init ldr r0, [r4, #1684] bl FlashInit subs r4, r0, #0 - bne .L3755 + bne .L3677 bl FtlInit -.L3755: +.L3677: mov r1, r4 - ldr r0, .L3758+16 + ldr r0, .L3680+8 bl printk +.L3675: mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -.L3756: - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L3759: + pop {r4, r5, r6, pc} +.L3681: .align 2 -.L3758: - .word .LANCHOR4 +.L3680: .word .LANCHOR2 - .word .LANCHOR4+2008 - .word .LANCHOR2+1684 + .word .LANCHOR2+2008 .word .LC163 .fnend .size rk_ftl_init, .-rk_ftl_init .align 2 .global ftl_fix_nand_power_lost_error + .syntax unified + .arm + .fpu softvfp .type ftl_fix_nand_power_lost_error, %function ftl_fix_nand_power_lost_error: .fnstart @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3777 - ldrb r3, [r3, #144] @ zero_extendqisi2 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #48 + sub sp, sp, #48 + ldr r8, .L3697 + ldrb r3, [r8, #152] @ zero_extendqisi2 cmp r3, #0 - bxeq lr - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #1848 - ldr r8, .L3777+4 - .pad #52 - sub sp, sp, #52 - ldr r4, .L3777+8 + beq .L3682 + ldr r4, .L3697+4 + movw r3, #1846 + ldr r0, .L3697+8 + ldrh r6, [r4, r3] + sub r9, r4, #3520 + ldr r3, [r4, #-3540] + sub r5, r4, #3472 + mov r1, r6 + lsl r7, r6, #1 + ldrh r2, [r3, r7] + bl printk + ldrh r0, [r9] + bl FtlGcRefreshOpenBlock + ldrh r0, [r5] + bl FtlGcRefreshOpenBlock + mov r0, r9 + bl allocate_new_data_superblock + mov r0, r5 movw r5, #4097 - ldr r0, .L3777+12 - ldrh r7, [r8, r3] - ldr r3, [r4, #-3544] - mov r6, r7, asl #1 - mov r1, r7 - ldrh r2, [r3, r6] - bl printk - sub r3, r4, #3520 - ldrh r0, [r3, #-4] - bl FtlGcRefreshOpenBlock - sub r3, r4, #3472 - ldrh r0, [r3, #-4] - bl FtlGcRefreshOpenBlock - ldr r0, .L3777+16 bl allocate_new_data_superblock - ldr r0, .L3777+20 - bl allocate_new_data_superblock -.L3762: +.L3684: subs r5, r5, #1 - beq .L3766 - mov r0, #1 - mov r1, r0 + beq .L3688 + mov r1, #1 + mov r0, r1 bl ftl_do_gc - ldr r3, [r4, #-3544] - ldrh r3, [r3, r6] + ldr r3, [r4, #-3540] + ldrh r3, [r3, r7] cmp r3, #0 - bne .L3762 -.L3766: - ldr r3, [r4, #-3544] - mov r1, r7 - ldr r0, .L3777+12 - ldrh r2, [r3, r6] + bne .L3684 +.L3688: + ldr r3, [r4, #-3540] + mov r1, r6 + ldr r0, .L3697+8 + ldrh r2, [r3, r7] bl printk - ldr r3, [r4, #-3544] - ldrh r5, [r3, r6] + ldr r3, [r4, #-3540] + ldrh r5, [r3, r7] cmp r5, #0 - bne .L3764 + bne .L3686 add r0, sp, #48 - movw r10, #65535 - mov fp, #36 - strh r7, [r0, #-48]! @ movhi + movw r9, #65535 + strh r6, [r0, #-48]! @ movhi + mov r10, #36 bl make_superblock - ldr r3, .L3777+24 - ldrh lr, [r3] - ldr r3, .L3777+8 - ldr r9, [r3, #-3612] - mov r3, r5 - mov ip, r3 + movw r3, #2324 add r0, sp, #14 -.L3767: - uxth r2, r3 - cmp r2, lr - bcs .L3776 - ldrh r2, [r0, #2]! - add r3, r3, #1 - cmp r2, r10 - movne r2, r2, asl #10 - mlane r1, fp, r5, r9 + ldrh lr, [r8, r3] + mov r2, r5 + ldr r8, [r4, #-3608] + mov ip, r5 +.L3689: + uxth r3, r2 + cmp lr, r3 + bhi .L3691 + ldr r3, [r4, #-3540] + mov r1, r6 + ldr r0, .L3697+12 + ldrh r2, [r3, r7] + bl printk + mov r2, r5 + mov r1, #0 + ldr r0, [r4, #-3608] + bl FlashEraseBlocks + mov r2, r5 + mov r1, #1 + ldr r0, [r4, #-3608] + bl FlashEraseBlocks +.L3686: + mvn r2, #0 + movw r3, #1846 + strh r2, [r4, r3] @ movhi +.L3682: + add sp, sp, #48 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3691: + ldrh r3, [r0, #2]! + add r2, r2, #1 + cmp r3, r9 + mlane r1, r10, r5, r8 + lslne r3, r3, #10 addne r5, r5, #1 uxthne r5, r5 - stmneib r1, {r2, ip} + stmibne r1, {r3, ip} strne ip, [r1, #12] - b .L3767 -.L3776: - ldr r3, [r4, #-3544] - mov r1, r7 - ldr r0, .L3777+28 - ldrh r2, [r3, r6] - bl printk - mov r1, #0 - mov r2, r5 - ldr r0, [r4, #-3612] - bl FlashEraseBlocks - ldr r0, [r4, #-3612] - mov r1, #1 - mov r2, r5 - bl FlashEraseBlocks -.L3764: - movw r3, #1848 - mvn r2, #0 - strh r2, [r8, r3] @ movhi - add sp, sp, #52 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3778: + b .L3689 +.L3698: .align 2 -.L3777: +.L3697: .word .LANCHOR0 - .word .LANCHOR4 .word .LANCHOR2 .word .LC164 - .word .LANCHOR2-3524 - .word .LANCHOR2-3476 - .word .LANCHOR0+2320 .word .LC165 .fnend .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .align 2 .global rk_ftl_garbage_collect + .syntax unified + .arm + .fpu softvfp .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: .fnstart @@ -22468,907 +23004,910 @@ .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 2 .global ftl_write + .syntax unified + .arm + .fpu softvfp .type ftl_write, %function ftl_write: .fnstart - @ args = 0, pretend = 0, frame = 96 + @ args = 0, pretend = 0, frame = 80 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #100 - sub sp, sp, #100 - ldr r10, .L3854 - str r3, [sp, #4] - ldr r3, [r10, #-3616] + mov fp, r3 + ldr r4, .L3768 + .pad #84 + sub sp, sp, #84 + ldr r3, [r4, #-3612] cmp r3, #0 - bne .L3821 - mov r8, r2 - ldr r2, .L3854+4 - ldr r2, [r2, #504] + bne .L3741 + mov r9, r2 + ldr r2, .L3768+4 + ldr r2, [r2, #500] cmp r2, #1 movne r0, r3 - bne .L3781 + bne .L3700 cmp r0, #16 mov r7, r1 - bne .L3782 - add r0, r1, #256 - ldr r2, [sp, #4] - mov r1, r8 + bne .L3702 + mov r2, fp + mov r1, r9 + add r0, r7, #256 bl FtlVendorPartWrite - b .L3781 -.L3782: - ldr fp, .L3854+8 - ldr r3, [fp, #2428] - cmp r8, r3 +.L3700: + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3702: + ldr r10, .L3768+8 + ldr r3, [r10, #2432] + cmp r9, r3 cmpls r1, r3 - bcs .L3824 - add r5, r1, r8 - cmp r5, r3 - bhi .L3824 - ldr r6, .L3854+12 + bcs .L3744 + add r6, r1, r9 + cmp r3, r6 + bcc .L3744 mov r3, #2048 - mov r0, r1 - str r3, [r6, #2012] - movw r3, #2394 - ldrh r4, [fp, r3] - mov r1, r4 + mov r0, r7 + str r3, [r4, #2012] + movw r3, #2396 + ldrh r5, [r10, r3] + mov r1, r5 bl __aeabi_uidiv - mov r1, r4 - str r0, [sp, #8] - sub r0, r5, #1 + mov r1, r5 + str r0, [sp, #4] + sub r0, r6, #1 bl __aeabi_uidiv - cmp r8, r4, asl #1 - ldr r2, [sp, #8] - str r0, [sp, #28] - rsb r5, r2, r0 - add r3, r5, #1 - str r3, [sp] - ldr r2, [sp] - ldr r3, [r10, #-3356] - add r3, r2, r3 - ldr r2, [fp, #2440] - str r3, [r10, #-3356] - ldr r3, [r10, #-3340] - add r3, r8, r3 - str r3, [r10, #-3340] + ldr r2, [sp, #4] + cmp r9, r5, lsl #1 + ldr r3, [r4, #-3356] + ldr r1, [r10, #2444] + sub r6, r0, r2 + str r0, [sp, #24] + add r8, r6, #1 + add r3, r3, r8 + str r3, [r4, #-3356] + ldr r3, [r4, #-3340] + add r3, r3, r9 + str r3, [r4, #-3340] movcs r3, #1 movcc r3, #0 - cmp r2, #0 - str r3, [sp, #20] - beq .L3784 + cmp r1, #0 + str r3, [sp, #16] + beq .L3745 mov r3, #36 - ldr r9, [fp, #2444] - mul r3, r3, r2 - ldr r2, [sp, #8] + ldr r2, [r10, #2448] + mul r3, r3, r1 sub r3, r3, #36 - add r9, r9, r3 - ldr r3, [r9, #16] - cmp r2, r3 - bne .L3785 - ldr r3, [r10, #-3352] - mov r1, r4 - mov r0, r7 - add r3, r3, #1 - str r3, [r10, #-3352] - ldr r3, [r6, #2016] - add r3, r3, #1 - str r3, [r6, #2016] - bl __aeabi_uidivmod - ldr r0, [r9, #8] - rsb r4, r1, r4 - add r0, r0, r1, asl #9 - cmp r4, r8 - ldr r1, [sp, #4] - movcs r4, r8 - mov r10, r4, asl #9 - mov r2, r10 - bl ftl_memcpy - cmp r5, #0 - bne .L3786 - ldr r3, [r6, #2016] - cmp r3, #2 - ble .L3821 -.L3786: + add r10, r2, r3 ldr r3, [sp, #4] - rsb r8, r4, r8 - add r7, r7, r4 - str r5, [sp] - add r3, r3, r10 - str r3, [sp, #4] - ldr r3, [sp, #8] + ldr r2, [r10, #16] + cmp r3, r2 + strne fp, [sp, #12] + bne .L3705 + ldr r2, [r4, #-3352] + mov r1, r5 + mov r0, r7 + add r2, r2, #1 + str r2, [r4, #-3352] + ldr r2, [r4, #2016] + add r2, r2, #1 + str r2, [r4, #2016] + bl __aeabi_uidivmod + sub r5, r5, r1 + ldr r3, [r10, #8] + cmp r9, r5 + mov r0, r1 + movcc r5, r9 + mov r1, fp + lsl r8, r5, #9 + add r0, r3, r0, lsl #9 + mov r2, r8 + bl ftl_memcpy + cmp r6, #0 + bne .L3706 + ldr r3, [r4, #2016] + cmp r3, #2 + bgt .L3706 +.L3741: + mov r0, #0 + b .L3700 +.L3706: + add r3, fp, r8 + sub r9, r9, r5 + str r3, [sp, #12] + add r7, r7, r5 + ldr r3, [sp, #4] + mov r8, r6 add r3, r3, #1 - str r3, [sp, #8] -.L3785: + str r3, [sp, #4] +.L3705: mov r3, #0 - str r3, [r6, #2016] -.L3784: - ldr r0, [sp, #8] - ldr r1, [sp, #28] + str r3, [r4, #2016] +.L3704: + ldr r1, [sp, #24] + ldr r0, [sp, #4] bl FtlCacheMetchLpa cmp r0, #0 - beq .L3787 + beq .L3707 bl FtlCacheWriteBack -.L3787: - ldr r5, .L3854+16 - mov r3, #0 - ldr r4, .L3854+8 - str r3, [sp, #12] - str r5, [r6, #1992] - ldr r6, [sp, #8] - mov r10, r4 - str r3, [sp, #32] -.L3788: - ldr r3, [sp] - cmp r3, #0 - beq .L3853 - ldrh r2, [r5, #4] - cmp r2, #0 - bne .L3789 - ldr r3, .L3854+16 - ldr r9, .L3854+4 - cmp r5, r3 - bne .L3790 - add r0, r3, #48 - ldrh r5, [r0, #4] - cmp r5, #0 - bne .L3791 - bl allocate_new_data_superblock - str r5, [r9, #3452] -.L3791: - ldr r0, .L3854+16 - bl allocate_new_data_superblock - ldr r3, [r9, #3452] - cmp r3, #0 - ldrne r5, .L3854+20 - bne .L3792 -.L3793: - ldr r5, .L3854+16 - b .L3792 -.L3790: - ldrh r3, [r3, #4] - str r2, [r9, #3452] - cmp r3, #0 - bne .L3793 - mov r0, r5 - bl allocate_new_data_superblock -.L3792: - ldrh r3, [r5, #4] - cmp r3, #0 - bne .L3794 - mov r0, r5 - bl allocate_new_data_superblock -.L3794: - ldr r3, .L3854+12 - str r5, [r3, #1992] -.L3789: - ldr r2, .L3854 - ldr r1, [r4, #2440] - ldrh r3, [r5, #4] - ldr r2, [r2, #-540] - rsb r2, r1, r2 - cmp r3, r2 - movcs r3, r2 - ldr r2, [sp] - cmp r3, r2 - movcs r3, r2 - str r3, [sp, #44] - mov r3, #0 -.L3851: - str r3, [sp, #16] - ldr r3, [sp, #16] - ldr r2, [sp, #44] - cmp r3, r2 - beq .L3796 - ldrh r3, [r5, #4] - cmp r3, #0 - beq .L3796 - ldr r3, [sp, #28] - ldr r2, [sp, #16] - rsb ip, r3, r6 - ldr r3, [sp, #20] - clz ip, ip - mov ip, ip, lsr #5 - and r3, ip, r3 - cmp r2, #0 - moveq r3, #0 - andne r3, r3, #1 - cmp r3, #0 - beq .L3797 - ldr r3, .L3854+24 - ldrh r2, [r3] - add r3, r8, r7 - mls r3, r2, r6, r3 - cmp r3, r2 - bne .L3796 -.L3797: - add r1, sp, #56 - mov r2, #0 - mov r0, r6 - str ip, [sp, #52] - bl log2phys - mov r0, r5 - bl get_new_active_ppa - ldr r2, [r4, #2440] - ldr r1, [r4, #2444] - mov r3, #36 - ldr fp, .L3854+28 - mla r1, r3, r2, r1 - ldrh r2, [fp] - str r6, [r1, #16] - str r3, [sp, #48] - ldr r3, [r4, #2440] - str r0, [r1, #4] - ldr r0, .L3854 - mul lr, r3, r2 - bic r3, lr, #3 - str r3, [sp, #36] - ldr r3, [r0, #-492] - ldr ip, [sp, #36] - ldrh lr, [fp, #-2] - add r9, r3, ip - str r3, [sp, #40] - ldr r3, [r4, #2440] - ldr r0, [r0, #-512] - str r9, [r1, #12] - mul lr, r3, lr - bic lr, lr, #3 - add lr, r0, lr - mov r0, r9 - str lr, [r1, #8] - mov r1, #0 - bl ftl_memset - ldr r3, [sp, #8] - ldr ip, [sp, #52] - rsb r3, r3, r6 - clz r3, r3 - mov r3, r3, lsr #5 - str r3, [sp, #24] - orrs r3, r3, ip - ldr r3, [sp, #48] - beq .L3798 +.L3707: + ldr r6, [sp, #4] + ldr r10, .L3768+8 + ldr r5, .L3768+12 + str r5, [r4, #1992] +.L3708: + cmp r8, #0 + bne .L3736 ldr r3, [sp, #24] - cmp r3, #0 - beq .L3799 - ldrh fp, [fp, #-6] - mov r0, r7 - mov r1, fp - bl __aeabi_uidivmod - rsb fp, r1, fp - mov r3, r1 - cmp fp, r8 - str r1, [sp, #32] - movcc r3, fp - movcs r3, r8 - str r3, [sp, #12] - b .L3800 -.L3799: - cmp ip, #0 - beq .L3800 - ldr r2, .L3854+24 - add r3, r8, r7 - ldrh r2, [r2] - smulbb r2, r2, r6 - rsb r3, r2, r3 - uxth r3, r3 - str r3, [sp, #12] - ldr r3, [sp, #24] - str r3, [sp, #32] -.L3800: - ldr r3, .L3854+24 - ldr r2, [sp, #12] - ldrh r3, [r3] - cmp r2, r3 - bne .L3801 - ldr r3, [sp, #24] - ldr r0, [r10, #2444] - cmp r3, #0 - moveq r3, r2 - ldr r2, [r10, #2440] - muleq r1, r6, r3 - ldreq r3, [sp, #4] - ldrne r1, [sp, #4] - rsbeq r1, r7, r1 - addeq r1, r3, r1, asl #9 - ldr r3, [sp, #20] - cmp r3, #0 - mov r3, #36 - mla r3, r3, r2, r0 - strne r1, [r3, #8] - bne .L3804 - ldr r0, [r3, #8] - ldr r3, .L3854+32 - ldrh r2, [r3] - b .L3849 -.L3801: - ldr r2, [sp, #56] - mov r3, #36 - cmn r2, #1 - beq .L3805 - ldr r1, [r4, #2444] - add r0, sp, #60 - str r2, [sp, #64] - ldr r2, [r4, #2440] - str r6, [sp, #76] - mla r3, r3, r2, r1 - mov r1, #1 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [sp, #68] - mov r2, #0 - str r3, [sp, #72] - bl FlashReadPages - ldr r3, [sp, #60] - cmn r3, #1 - ldr r3, .L3854 - ldreq r2, [r3, #-3160] - addeq r2, r2, #1 - streq r2, [r3, #-3160] - beq .L3808 - ldr r2, [r9, #8] - cmp r2, r6 - beq .L3808 - ldr r2, [r3, #-3160] - ldr r0, .L3854+36 - add r2, r2, #1 - str r2, [r3, #-3160] - mov r2, r6 - ldr r1, [r9, #8] - bl printk - b .L3808 -.L3805: - ldr r2, [r4, #2440] - ldr r1, [r4, #2444] - mla r3, r3, r2, r1 - mov r1, #0 - ldr r0, [r3, #8] - ldr r3, .L3854+32 - ldrh r2, [r3] - bl ftl_memset -.L3808: - ldr r3, [sp, #24] - cmp r3, #0 - mov r3, #36 - beq .L3809 - ldr r1, [r4, #2444] - ldr r2, [r4, #2440] - mla r3, r3, r2, r1 - ldr r1, [sp, #4] - ldr r0, [r3, #8] - ldr r3, [sp, #32] - add r0, r0, r3, asl #9 - b .L3852 -.L3809: - ldr r1, [r4, #2440] - ldr r2, [r4, #2444] - mla r3, r3, r1, r2 - ldr r2, .L3854+24 - ldrh r1, [r2] - ldr r0, [r3, #8] - mul r1, r1, r6 - ldr r3, [sp, #4] - rsb r1, r7, r1 - add r1, r3, r1, asl #9 -.L3852: - ldr r3, [sp, #12] - mov r2, r3, asl #9 - b .L3849 -.L3798: - ldr r2, [sp, #20] - cmp r2, #0 - ldr r2, [r4, #2440] - beq .L3810 - ldr r1, [r4, #2444] - mla r3, r3, r2, r1 - ldr r2, .L3854+24 - ldrh fp, [r2] + mov r0, r8 ldr r2, [sp, #4] - mul fp, fp, r6 - rsb fp, r7, fp - add fp, r2, fp, asl #9 - str fp, [r3, #8] - b .L3804 -.L3810: - ldr r0, [r4, #2444] - mla r3, r3, r2, r0 - ldr r2, .L3854+24 - ldrh r1, [r2] - ldrh r2, [fp, #-2] - ldr r0, [r3, #8] - mul r1, r1, r6 - ldr r3, [sp, #4] - rsb r1, r7, r1 - add r1, r3, r1, asl #9 -.L3849: - bl ftl_memcpy -.L3804: - ldr r3, .L3854+40 - ldr r2, [sp, #40] - ldr r1, [sp, #36] - strh r3, [r2, r1] @ movhi - ldr r2, .L3854 - str r6, [r9, #8] - add r6, r6, #1 - ldr r3, [r2, #-3328] - str r3, [r9, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, #0 - str r3, [r2, #-3328] - ldr r3, [sp, #56] - str r3, [r9, #12] - ldrh r3, [r5] - strh r3, [r9, #2] @ movhi - ldr r3, [r4, #2440] - add r3, r3, #1 - str r3, [r4, #2440] - ldr r3, [sp, #16] - add r3, r3, #1 - b .L3851 -.L3796: - ldr r3, [sp] - ldr r2, [sp, #16] - ldr r1, [sp, #20] - rsb r3, r2, r3 - ldr r2, .L3854 - str r3, [sp] - ldr r3, [r4, #2440] - ldr r2, [r2, #-540] - cmp r3, r2 - orrcs r1, r1, #1 - cmp r1, #0 - bne .L3814 - ldrh r3, [r5, #4] - cmp r3, #0 - beq .L3814 -.L3816: - mov r3, #0 - str r3, [sp, #20] - b .L3788 -.L3814: - bl FtlCacheWriteBack - mov r3, #0 - str r3, [r10, #2440] - ldr r3, [sp] - cmp r3, #1 - bhi .L3788 - b .L3816 -.L3853: - mov r0, r3 - ldr r2, [sp, #8] - ldr r3, [sp, #28] - rsb r1, r2, r3 + sub r1, r3, r2 bl ftl_do_gc - ldr r3, .L3854+44 - ldrh r3, [r3, #-8] + ldr r2, .L3768+12 + ldrh r3, [r2, #-4] + mov r4, r2 cmp r3, #5 - bls .L3827 + bls .L3737 cmp r3, #31 - bhi .L3821 - ldr r3, .L3854+8 - ldrb r3, [r3] @ zero_extendqisi2 + bhi .L3741 + ldr r3, .L3768+8 + ldrb r3, [r3, #36] @ zero_extendqisi2 cmp r3, #0 - bne .L3821 -.L3827: - ldr r4, [sp] - ldr r5, .L3854+48 - ldr r6, .L3854 - ldr r7, .L3854+52 -.L3840: - ldrh r2, [r5] + bne .L3741 +.L3737: + ldr r5, .L3768+16 +.L3740: + ldr r3, .L3768+20 + ldrh r2, [r3] movw r3, #65535 cmp r2, r3 - bne .L3820 - ldrh r3, [r7] + bne .L3739 + ldr r3, .L3768+24 + ldrh r3, [r3] cmp r3, r2 - bne .L3820 - ldr r2, .L3854+56 - ldrh r2, [r2] + bne .L3739 + ldrh r2, [r5, #-8] cmp r2, r3 - bne .L3820 - and r0, r4, #7 + bne .L3739 + and r0, r8, #7 bl List_get_gc_head_node uxth r0, r0 bl FtlGcRefreshBlock -.L3820: - ldr r3, .L3854+60 - mov r0, #1 - mov r1, r0 +.L3739: + ldr r3, .L3768+28 + mov r1, #1 mov r2, #128 + mov r0, r1 strh r2, [r3] @ movhi strh r2, [r3, #-2] @ movhi bl ftl_do_gc - mov r0, #0 mov r1, #1 - bl ftl_do_gc - ldr r3, [r6, #-3616] - cmp r3, #0 - bne .L3821 - ldr r3, .L3854+64 - ldrh r3, [r3] - cmp r3, #2 - bhi .L3821 - add r4, r4, #1 - cmp r4, #256 - bne .L3840 - b .L3821 -.L3824: - mvn r0, #0 - b .L3781 -.L3821: mov r0, #0 -.L3781: - add sp, sp, #100 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3855: + bl ftl_do_gc + ldr r3, .L3768 + ldr r3, [r3, #-3612] + cmp r3, #0 + bne .L3741 + ldrh r3, [r4, #-4] + cmp r3, #2 + bhi .L3741 + add r8, r8, #1 + cmp r8, #256 + bne .L3740 + b .L3741 +.L3745: + str fp, [sp, #12] + b .L3704 +.L3736: + ldrh r1, [r5, #4] + ldr r4, .L3768 + cmp r1, #0 + bne .L3709 + sub r2, r4, #3520 + ldr fp, .L3768+4 + cmp r5, r2 + bne .L3710 + sub r0, r4, #3472 + ldrh r5, [r0, #4] + cmp r5, #0 + bne .L3711 + bl allocate_new_data_superblock + str r5, [fp, #3448] +.L3711: + ldr r0, .L3768+12 + bl allocate_new_data_superblock + ldr r5, .L3768+12 + ldr r1, [fp, #3448] + add r2, r5, #48 + cmp r1, #0 + movne r5, r2 +.L3712: + ldrh r2, [r5, #4] + cmp r2, #0 + bne .L3713 + mov r0, r5 + bl allocate_new_data_superblock +.L3713: + str r5, [r4, #1992] +.L3709: + ldr r1, [r10, #2444] + ldr r2, [r4, #-540] + sub r2, r2, r1 + ldrh r1, [r5, #4] + cmp r2, r8 + movcs r2, r8 + cmp r1, r2 + movcc r3, r1 + movcs r3, r2 + str r3, [sp, #36] + mov r3, #0 +.L3766: + str r3, [sp, #20] + ldr r3, [sp, #20] + ldr r2, [sp, #36] + cmp r3, r2 + bne .L3732 +.L3715: + ldr r3, [sp, #20] + ldr r1, .L3768 + ldr r2, [r10, #2444] + sub r8, r8, r3 + ldr r3, [sp, #16] + ldr r1, [r1, #-540] + cmp r2, r1 + orrcs r3, r3, #1 + cmp r3, #0 + bne .L3733 + ldrh r2, [r5, #4] + cmp r2, #0 + beq .L3733 +.L3735: + mov r3, #0 + str r3, [sp, #16] + b .L3708 +.L3710: + str r1, [fp, #3448] + ldrh r1, [r2, #4] + cmp r1, #0 + movne r5, r2 + bne .L3713 + mov r0, r5 + bl allocate_new_data_superblock + b .L3712 +.L3732: + ldrh r2, [r5, #4] + cmp r2, #0 + beq .L3715 + ldr r3, [sp, #24] + sub r4, r3, r6 + ldr r3, [sp, #16] + clz r4, r4 + lsr r4, r4, #5 + and r2, r4, r3 + ldr r3, [sp, #20] + cmp r3, #0 + moveq r2, #0 + andne r2, r2, #1 + cmp r2, #0 + beq .L3716 + ldr r3, .L3768+32 + add r2, r7, r9 + ldrh r1, [r3] + mls r2, r1, r6, r2 + cmp r1, r2 + bne .L3715 +.L3716: + mov r2, #0 + add r1, sp, #40 + mov r0, r6 + mov fp, #36 + bl log2phys + mov r0, r5 + bl get_new_active_ppa + ldr r2, .L3768+36 + ldr r1, [r10, #2444] + ldr ip, [r10, #2448] + ldrh r2, [r2] + mla ip, fp, r1, ip + mul lr, r2, r1 + str r0, [ip, #4] + ldr r0, .L3768 + bic r3, lr, #3 + str r6, [ip, #16] + str r3, [sp, #28] + ldr lr, [sp, #28] + ldr r3, [r0, #-492] + ldr r0, [r0, #-512] + str r3, [sp, #32] + add r3, r3, lr + str r3, [sp, #8] + str r3, [ip, #12] + ldr r3, .L3768+40 + ldrh lr, [r3] + mul r1, r1, lr + bic r1, r1, #3 + add r1, r0, r1 + ldr r0, [sp, #8] + str r1, [ip, #8] + mov r1, #0 + bl ftl_memset + ldr r3, [sp, #4] + cmp r3, r6 + orreq r4, r4, #1 + cmp r4, #0 + beq .L3717 + cmp r3, r6 + bne .L3718 + ldr r3, .L3768+32 + mov r0, r7 + ldrh r4, [r3] + mov r1, r4 + bl __aeabi_uidivmod + sub r4, r4, r1 + mov fp, r1 + cmp r4, r9 + movcs r4, r9 +.L3719: + ldr r3, .L3768+32 + ldrh r2, [r3] + cmp r2, r4 + bne .L3720 + ldr r3, [sp, #4] + cmp r3, r6 + mulne r1, r4, r6 + ldrne r3, [sp, #12] + ldreq r1, [sp, #12] + subne r1, r1, r7 + addne r1, r3, r1, lsl #9 + ldr r3, [sp, #16] + cmp r3, #0 + beq .L3722 + ldr r2, [r10, #2444] + mov ip, #36 + ldr r0, [r10, #2448] + mla r2, ip, r2, r0 + str r1, [r2, #8] +.L3723: + ldr r2, .L3768+44 + ldr r3, [sp, #32] + ldr r1, [sp, #28] + strh r2, [r3, r1] @ movhi + ldr r1, .L3768 + ldr r3, [sp, #8] + ldr r2, [r1, #-3328] + str r2, [r3, #4] + add r2, r2, #1 + cmn r2, #1 + ldr r3, [sp, #8] + moveq r2, #0 + str r2, [r1, #-3328] + ldr r2, [sp, #40] + str r6, [r3, #8] + add r6, r6, #1 + str r2, [r3, #12] + ldrh r2, [r5] + strh r2, [r3, #2] @ movhi + ldr r2, [r10, #2444] + ldr r3, [sp, #20] + add r2, r2, #1 + str r2, [r10, #2444] + add r3, r3, #1 + b .L3766 +.L3718: + ldr r3, .L3768+32 + add r4, r7, r9 + mov fp, #0 + ldrh r2, [r3] + smulbb r2, r2, r6 + sub r4, r4, r2 + uxth r4, r4 + b .L3719 +.L3722: + ldr r2, [r10, #2448] + mov ip, #36 + ldr r0, [r10, #2444] + mla r0, ip, r0, r2 + ldr r2, .L3768+40 + ldrh r2, [r2] +.L3767: + ldr r0, [r0, #8] + b .L3764 +.L3720: + ldr r2, [sp, #40] + cmn r2, #1 + beq .L3724 + ldr r1, [r10, #2448] + mov r0, #36 + str r2, [sp, #48] + ldr r2, [r10, #2444] + str r6, [sp, #60] + mla r2, r0, r2, r1 + add r0, sp, #44 + ldr r1, [r2, #8] + ldr r2, [r2, #12] + str r1, [sp, #52] + mov r1, #1 + str r2, [sp, #56] + mov r2, #0 + bl FlashReadPages + ldr r2, [sp, #44] + cmn r2, #1 + ldr r2, .L3768 + ldreq r1, [r2, #-3164] + addeq r1, r1, #1 + streq r1, [r2, #-3164] + beq .L3727 + ldr r3, [sp, #8] + ldr r1, [r3, #8] + cmp r6, r1 + beq .L3727 + ldr r1, [r2, #-3164] + ldr r0, .L3768+48 + add r1, r1, #1 + str r1, [r2, #-3164] + mov r2, r6 + ldr r1, [r3, #8] + bl printk +.L3727: + ldr r3, [sp, #4] + lsl r2, r4, #9 + cmp r3, r6 + bne .L3728 + ldr r0, [r10, #2448] + mov ip, #36 + ldr r1, [r10, #2444] + mla r1, ip, r1, r0 + ldr r0, [r1, #8] + ldr r1, [sp, #12] + add r0, r0, fp, lsl #9 +.L3764: + bl ftl_memcpy + b .L3723 +.L3724: + ldr r2, [r10, #2448] + mov r1, #36 + ldr r0, [r10, #2444] + mla r0, r1, r0, r2 + ldr r2, .L3768+40 + mov r1, #0 + ldrh r2, [r2] + ldr r0, [r0, #8] + bl ftl_memset + b .L3727 +.L3728: + ldr r3, .L3768+32 + mov lr, #36 + ldr r0, [r10, #2444] + ldr ip, [r10, #2448] + ldrh r1, [r3] + ldr r3, [sp, #12] + mla r0, lr, r0, ip + mul r1, r6, r1 + sub r1, r1, r7 + add r1, r3, r1, lsl #9 + b .L3767 +.L3717: + ldr r3, [sp, #16] + cmp r3, #0 + beq .L3729 + ldr r2, [r10, #2444] + ldr r1, [r10, #2448] + ldr r3, .L3768+32 + mla fp, fp, r2, r1 + ldrh r2, [r3] + ldr r3, [sp, #12] + mul r2, r6, r2 + sub r2, r2, r7 + add r2, r3, r2, lsl #9 + str r2, [fp, #8] + b .L3723 +.L3729: + ldr r3, .L3768+32 + ldr r2, [r10, #2444] + ldr r0, [r10, #2448] + ldrh r1, [r3] + mla fp, fp, r2, r0 + ldrh r2, [r3, #4] + ldr r3, [sp, #12] + mul r1, r6, r1 + ldr r0, [fp, #8] + sub r1, r1, r7 + add r1, r3, r1, lsl #9 + b .L3764 +.L3733: + bl FtlCacheWriteBack + cmp r8, #1 + mov r2, #0 + str r2, [r10, #2444] + bhi .L3708 + b .L3735 +.L3744: + mvn r0, #0 + b .L3700 +.L3769: .align 2 -.L3854: +.L3768: .word .LANCHOR2 .word .LANCHOR1 .word .LANCHOR0 - .word .LANCHOR4 - .word .LANCHOR2-3524 - .word .LANCHOR2-3476 - .word .LANCHOR0+2394 - .word .LANCHOR0+2400 - .word .LANCHOR0+2398 - .word .LC166 - .word -3947 .word .LANCHOR2-3520 + .word .LANCHOR2-2656 .word .LANCHOR2-3284 .word .LANCHOR2-2666 - .word .LANCHOR2-2664 .word .LANCHOR2-2718 - .word .LANCHOR2-3528 + .word .LANCHOR0+2396 + .word .LANCHOR0+2402 + .word .LANCHOR0+2400 + .word -3947 + .word .LC166 .fnend .size ftl_write, .-ftl_write .align 2 .global ftl_vendor_write + .syntax unified + .arm + .fpu softvfp .type ftl_vendor_write, %function ftl_vendor_write: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - str lr, [sp, #-4]! - .save {lr} - mov ip, r1 - mov lr, r0 + @ link register save eliminated. mov r3, r2 - mov r1, lr + mov r2, r1 + mov r1, r0 mov r0, #16 - mov r2, ip - ldr lr, [sp], #4 b ftl_write .fnend .size ftl_vendor_write, .-ftl_vendor_write .align 2 .global FlashBootVendorWrite + .syntax unified + .arm + .fpu softvfp .type FlashBootVendorWrite, %function FlashBootVendorWrite: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 + mov r4, r0 mov r5, r1 + mov r6, r2 bl rknand_device_lock - ldr r3, .L3862 - ldr r3, [r3, #504] + ldr r3, .L3775 + ldr r3, [r3, #500] cmp r3, #1 mvnne r4, #0 - bne .L3859 - mov r2, r4 - mov r0, r6 + bne .L3772 + mov r0, r4 + mov r2, r6 mov r1, r5 bl ftl_vendor_write mov r4, r0 -.L3859: +.L3772: bl rknand_device_unlock mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -.L3863: + pop {r4, r5, r6, pc} +.L3776: .align 2 -.L3862: +.L3775: .word .LANCHOR1 .fnend .size FlashBootVendorWrite, .-FlashBootVendorWrite .align 2 .global ftl_sys_write + .syntax unified + .arm + .fpu softvfp .type ftl_sys_write, %function ftl_sys_write: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - mov ip, r1 mov r3, r2 + mov r2, r1 add r1, r0, #256 - mov r2, ip mov r0, #16 b ftl_write .fnend .size ftl_sys_write, .-ftl_sys_write .align 2 .global StorageSysDataStore + .syntax unified + .arm + .fpu softvfp .type StorageSysDataStore, %function StorageSysDataStore: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r5, r1 + mov r4, r0 bl rknand_device_lock - mov r2, r4 + mov r2, r5 mov r1, #1 - mov r0, r5 + mov r0, r4 bl ftl_sys_write mov r4, r0 bl rknand_device_unlock mov r0, r4 - ldmfd sp!, {r3, r4, r5, pc} + pop {r4, r5, r6, pc} .fnend .size StorageSysDataStore, .-StorageSysDataStore .align 2 .global FtlDumpSysBlock + .syntax unified + .arm + .fpu softvfp .type FtlDumpSysBlock, %function FtlDumpSysBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - mov r8, r0, asl #10 - ldr r4, .L3876 - .pad #28 - sub sp, sp, #28 - ldr r7, .L3876+4 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + lsl r8, r0, #10 + ldr r4, .L3788 + .pad #24 + sub sp, sp, #24 mov r6, r0 mov r5, #0 + ldr r7, .L3788+4 ldr r3, [r4, #-524] - mov r9, r4 - str r3, [r4, #1760] + add r9, r4, #1760 + ldr r10, .L3788+8 + str r3, [r4, #1768] ldr r3, [r4, #-500] - str r3, [r4, #1764] -.L3868: + str r3, [r4, #1772] +.L3781: ldrh r2, [r7] sxth r3, r5 cmp r3, r2 - bge .L3875 - mov r1, #1 - ldr r0, .L3876+8 - mov r2, r1 + blt .L3783 + add sp, sp, #24 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3783: + mov r2, #1 orr r3, r3, r8 - str r3, [r4, #1756] + mov r1, r2 + mov r0, r9 + str r3, [r4, #1764] bl FlashReadPages - ldr r3, [r4, #1764] + ldr r2, [r4, #1768] mov r1, r6 - ldr r0, .L3876+12 - ldr r2, [r3] - str r2, [sp] - ldr r2, [r3, #4] - str r2, [sp, #4] + ldr r3, [r4, #1772] + mov r0, r10 + ldr r2, [r2] + str r2, [sp, #16] + ldr r2, [r3, #12] + str r2, [sp, #12] ldr r2, [r3, #8] str r2, [sp, #8] - ldr r3, [r3, #12] - ldr r2, [r4, #1752] - str r3, [sp, #12] - ldr r3, [r4, #1760] + ldr r2, [r3, #4] + str r2, [sp, #4] ldr r3, [r3] - str r3, [sp, #16] - ldr r3, [r4, #1756] - bl printk + ldr r2, [r4, #1760] + str r3, [sp] ldr r3, [r4, #1764] + bl printk + ldr r3, [r4, #1772] ldr r3, [r3] cmn r3, #1 - beq .L3869 - ldr r0, .L3876+16 - mov r2, #4 - ldr r1, [r9, #-524] + beq .L3782 mov r3, #768 + mov r2, #4 + ldr r1, [r4, #-524] + ldr r0, .L3788+12 bl rknand_print_hex -.L3869: +.L3782: add r5, r5, #1 - b .L3868 -.L3875: - add sp, sp, #28 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L3877: + b .L3781 +.L3789: .align 2 -.L3876: +.L3788: .word .LANCHOR2 - .word .LANCHOR0+2390 - .word .LANCHOR2+1752 + .word .LANCHOR0+2392 .word .LC167 .word .LC168 .fnend .size FtlDumpSysBlock, .-FtlDumpSysBlock .align 2 .global dump_map_info + .syntax unified + .arm + .fpu softvfp .type dump_map_info, %function dump_map_info: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L3805 + movw r2, #2332 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r3, #2328 - ldr r6, .L3896 - .pad #52 - sub sp, sp, #52 - ldr r10, .L3896+4 - ldrh r7, [r6, r3] - add fp, r10, #18 -.L3879: - ldrh r3, [r10] - ldr r4, .L3896+8 - cmp r3, r7 - bls .L3892 - ldr r1, .L3896+12 - mov r8, #0 - ldr r2, [r4, #-536] - mov r5, r8 - ldr r3, [r4, #-2696] - ldrh ip, [r1] - ldr r9, [r4, #-2692] - ldrh r1, [r1, #80] - str r1, [sp, #28] -.L3888: - uxth r1, r8 - cmp r1, ip - bcs .L3894 - mov r1, r7 - ldrb r0, [fp, r8] @ zero_extendqisi2 - str r3, [sp, #44] - str r2, [sp, #40] - str ip, [sp, #36] + .pad #44 + sub sp, sp, #44 + ldrh r6, [r3, r2] + str r3, [sp, #24] +.L3791: + ldr r3, .L3805+4 + ldr r4, .L3805+8 + ldrh r3, [r3] + cmp r3, r6 + bhi .L3798 + ldr r10, .L3805+12 + mov r7, #0 + sub r9, r4, #388 + add fp, r4, #1760 +.L3799: + ldrh r3, [r9] + sxth r5, r7 + cmp r5, r3 + bge .L3802 + lsl r5, r5, #1 + mov r6, #0 + ldr r8, .L3805+16 + b .L3803 +.L3793: + str r3, [sp, #32] + mov r1, r6 + ldr r3, .L3805+20 + str r2, [sp, #36] + ldrb r0, [r3, r7] @ zero_extendqisi2 bl V2P_block - str r0, [sp, #32] + str r0, [sp, #28] bl FtlBbmIsBadBlock cmp r0, #0 - ldr r1, [sp, #32] - ldr ip, [sp, #36] - ldr r2, [sp, #40] - ldr r3, [sp, #44] - bne .L3880 - mov r0, #36 - mov r1, r1, asl #10 - mla r0, r0, r5, r2 - stmib r0, {r1, r3} + ldr r3, [sp, #32] + ldr r2, [sp, #36] + bne .L3792 ldr r1, [sp, #28] - mul r1, r1, r5 + mla r0, r2, r5, r8 + lsl r1, r1, #10 + stmib r0, {r1, fp} + mul r1, r9, r5 add r5, r5, #1 uxth r5, r5 - add lr, r1, #3 + add ip, r1, #3 cmp r1, #0 - movlt r1, lr + movlt r1, ip bic r1, r1, #3 - add r1, r9, r1 + add r1, r10, r1 str r1, [r0, #12] -.L3880: - add r8, r8, #1 - b .L3888 -.L3894: +.L3792: + add r7, r7, #1 +.L3800: + uxth r1, r7 + cmp r3, r1 + bhi .L3793 cmp r5, #0 - beq .L3883 - ldr r0, [r4, #-536] - mov r1, r5 - mov r2, #1 - mov r8, #0 - bl FlashReadPages - mov r9, #36 -.L3884: - uxth r3, r8 - cmp r3, r5 - bcs .L3883 - ldr r3, [r4, #-536] - ldr r0, .L3896+16 - mla r3, r9, r8, r3 - add r8, r8, #1 - ldmib r3, {r2, r3, ip} - ldr r1, [ip, #4] - str r1, [sp] - ldr r1, [ip, #8] - str r1, [sp, #4] - ldr r1, [ip, #12] - str r1, [sp, #8] - ldr r1, [r3] - str r1, [sp, #12] - ubfx r1, r2, #10, #16 - ldr r3, [r3, #4] - str r3, [sp, #16] - ldr r3, [ip] - bl printk - b .L3884 -.L3883: - add r7, r7, #1 - uxth r7, r7 - b .L3879 -.L3892: - ldr r9, .L3896+20 - mov r8, #0 -.L3887: - ldr r7, .L3896+8 - sxth r5, r8 - sub r3, r7, #388 - ldrh r3, [r3] - cmp r5, r3 - bge .L3890 - mov r5, r5, asl #1 + bne .L3794 +.L3797: + add r6, r6, #1 + uxth r6, r6 + b .L3791 +.L3794: + ldr r9, .L3805+24 + mov r0, r8 mov r7, #0 -.L3891: - ldrh r2, [r9] - sxth r3, r7 - add r7, r7, #1 - cmp r3, r2 - bge .L3895 - ldr r2, [r4, #-472] - mov r1, #1 - ldr r0, .L3896+24 - ldrh r2, [r2, r5] - orr r3, r3, r2, asl #10 - mov r2, r1 - str r3, [r4, #1756] + mov r8, #36 + mov r2, #1 + mov r1, r5 bl FlashReadPages - ldr r3, [r4, #1764] - ldr r1, [r4, #-472] - ldr r2, [r4, #1760] - ldr r0, [r3] - ldrh r1, [r1, r5] - str r0, [sp] +.L3795: + uxth r3, r7 + cmp r5, r3 + bls .L3797 + ldr r3, [r4, #-536] + mla r3, r8, r7, r3 + add r7, r7, #1 + ldr r1, [r3, #12] + ldr r2, [r3, #4] + ldr r3, [r3, #8] ldr r0, [r3, #4] - str r0, [sp, #4] - ldr r0, [r3, #8] - str r0, [sp, #8] - ldr r3, [r3, #12] - ldr r0, .L3896+28 + str r0, [sp, #16] + mov r0, r9 + ldr r3, [r3] str r3, [sp, #12] - ldr r3, [r2] - str r3, [sp, #16] - ldr r3, [r2, #4] - str r3, [sp, #20] - ldr r2, [r4, #1752] - ldr r3, [r4, #1756] + ldr r3, [r1, #12] + str r3, [sp, #8] + ldr r3, [r1, #8] + str r3, [sp, #4] + ldr r3, [r1, #4] + str r3, [sp] + ldr r3, [r1] + ubfx r1, r2, #10, #16 bl printk - b .L3891 -.L3895: - add r8, r8, #1 - b .L3887 -.L3890: - ldr r1, [r7, #-472] - movw r4, #2424 - ldr r3, [r6, #2416] + b .L3795 +.L3798: + ldr r2, .L3805+28 + mov r7, #0 + ldr r8, [r4, #-536] + mov r5, r7 + ldr fp, [r4, #-2696] + ldrh r3, [r2] + ldrh r9, [r2, #78] + mov r2, #36 + ldr r10, [r4, #-2692] + b .L3800 +.L3801: + ldr r2, [r4, #-472] + mov r0, fp + ldrh r2, [r2, r5] + orr r3, r3, r2, lsl #10 + mov r2, #1 + mov r1, r2 + str r3, [r4, #1764] + bl FlashReadPages + ldr r2, [r4, #1768] + ldr r1, [r4, #-472] + ldr r3, [r4, #1772] + ldr r0, [r2, #4] + ldrh r1, [r1, r5] + str r0, [sp, #20] + mov r0, r8 + ldr r2, [r2] + str r2, [sp, #16] + ldr r2, [r3, #12] + str r2, [sp, #12] + ldr r2, [r3, #8] + str r2, [sp, #8] + ldr r2, [r3, #4] + str r2, [sp, #4] + ldr r3, [r3] + ldr r2, [r4, #1760] + str r3, [sp] + ldr r3, [r4, #1764] + bl printk +.L3803: + ldrh r2, [r10] + sxth r3, r6 + add r6, r6, #1 + cmp r3, r2 + blt .L3801 + add r7, r7, #1 + b .L3799 +.L3802: + ldr r3, [sp, #24] mov r2, #2 - ldr r0, .L3896+32 + ldr r1, [r4, #-472] + movw r5, #2428 + ldr r0, .L3805+32 + ldr r3, [r3, #2420] bl rknand_print_hex - ldr r1, [r7, #-452] - ldrh r3, [r6, r4] + ldr r3, [sp, #24] mov r2, #4 - ldr r0, .L3896+36 + ldr r1, [r4, #-452] + ldr r0, .L3805+36 + ldrh r3, [r3, r5] bl rknand_print_hex - ldr r0, .L3896+40 - ldr r1, [r7, #-448] + ldr r3, [sp, #24] mov r2, #4 - ldrh r3, [r6, r4] - add sp, sp, #52 + ldr r1, [r4, #-448] + ldr r0, .L3805+40 + ldrh r3, [r3, r5] + add sp, sp, #44 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} b rknand_print_hex -.L3897: +.L3806: .align 2 -.L3896: +.L3805: .word .LANCHOR0 - .word .LANCHOR0+2330 + .word .LANCHOR0+2334 .word .LANCHOR2 - .word .LANCHOR0+2320 - .word .LC169 - .word .LANCHOR0+2390 - .word .LANCHOR2+1752 + .word .LANCHOR0+2392 .word .LC113 + .word .LANCHOR0+2350 + .word .LC169 + .word .LANCHOR0+2324 .word .LC170 .word .LC171 .word .LC172 @@ -23376,493 +23915,483 @@ .size dump_map_info, .-dump_map_info .align 2 .global flash_boot_enter_slc_mode + .syntax unified + .arm + .fpu softvfp .type flash_boot_enter_slc_mode, %function flash_boot_enter_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L3900 - ldr r2, [r3, #2264] - ldr r3, .L3900+4 + ldr r3, .L3809 + ldr r2, [r3, #2268] + ldr r3, .L3809+4 cmp r2, r3 bxne lr b flash_enter_slc_mode -.L3901: +.L3810: .align 2 -.L3900: +.L3809: .word .LANCHOR0 .word 1446522928 .fnend .size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode .align 2 .global flash_boot_exit_slc_mode + .syntax unified + .arm + .fpu softvfp .type flash_boot_exit_slc_mode, %function flash_boot_exit_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L3904 - ldr r2, [r3, #2264] - ldr r3, .L3904+4 + ldr r3, .L3813 + ldr r2, [r3, #2268] + ldr r3, .L3813+4 cmp r2, r3 bxne lr b flash_exit_slc_mode -.L3905: +.L3814: .align 2 -.L3904: +.L3813: .word .LANCHOR0 .word 1446522928 .fnend .size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode .align 2 .global write_idblock + .syntax unified + .arm + .fpu softvfp .type write_idblock, %function write_idblock: .fnstart - @ args = 0, pretend = 0, frame = 120 + @ args = 0, pretend = 0, frame = 112 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r0 - ldr r7, .L3959 - .pad #132 - sub sp, sp, #132 + mov r6, r0 + ldr r4, .L3864 + .pad #124 + sub sp, sp, #124 mov r0, #256000 - mov fp, r1 - mov r6, r2 - ldr r3, [r7, #44] - ldr r4, [r7, #4] - ldrb r5, [r3, #9] @ zero_extendqisi2 + mov r10, r1 + mov r5, r2 + ldr r3, [r4, #48] + ldr r8, [r4, #40] + ldrb r7, [r3, #9] @ zero_extendqisi2 bl ftl_malloc subs r3, r0, #0 str r3, [sp, #8] - beq .L3933 - add ip, r8, #508 - add ip, ip, #3 - mov r10, ip, lsr #9 - cmp r10, #8 - bls .L3931 - cmp r10, #500 - bhi .L3933 - b .L3908 -.L3931: - mov r10, #8 -.L3908: - ldr r2, [fp] - ldr r3, .L3959+4 + beq .L3842 + add r0, r6, #508 + add r0, r0, #3 + lsr r9, r0, #9 + cmp r9, #8 + bls .L3840 + cmp r9, #500 + bhi .L3842 +.L3817: + ldr r2, [r10] + ldr r3, .L3864+4 cmp r2, r3 - bne .L3933 - smulbb r3, r5, r4 - uxth r3, r3 - str r3, [sp, #12] - sub r0, r3, #1 - mov r1, r3 - add r0, r0, r10 + bne .L3842 + smulbb r7, r7, r8 + uxth fp, r7 + sub r0, fp, #1 + mov r1, fp + add r0, r0, r9 bl __aeabi_uidiv + str r0, [sp, #32] + add r0, r10, #254976 + add r0, r0, #512 mov r3, #0 movw r2, #63871 - str r0, [sp, #36] - add r0, fp, #254976 - add r0, r0, #512 -.L3912: +.L3821: ldr r1, [r0, #-4]! cmp r1, #0 - bne .L3909 - ldr r1, [fp, r3, asl #2] + bne .L3818 + ldr r1, [r10, r3, lsl #2] add r3, r3, #1 cmp r3, #4096 sub r2, r2, #1 movhi r3, #0 cmp r2, #4096 str r1, [r0, #512] - bne .L3912 - b .L3911 -.L3909: - ldr r0, .L3959+8 - bl printk -.L3911: + bne .L3821 +.L3820: mov r3, #5 - ldr r0, .L3959+12 - mov r1, r6 + mov r1, r5 mov r2, #4 + ldr r0, .L3864+8 bl rknand_print_hex - ldr r1, [fp, #512] - ldrb r2, [r7, #1] @ zero_extendqisi2 - sub r4, r6, #4 - ldr r0, .L3959+16 + ldrb r2, [r4, #37] @ zero_extendqisi2 + sub r5, r5, #4 + ldr r1, [r10, #512] + ldr r0, .L3864+12 bl printk - ldr r2, .L3959+20 - ldrh r3, [r7, #142] - mov r1, r10 - ldr r0, .L3959+24 - ldr r2, [r2, #1708] - ldr r5, .L3959 + ldr r2, .L3864+16 + mov r1, r9 + ldrh r3, [r4, #150] + ldr r0, .L3864+20 + ldr r2, [r2, #1716] str r2, [sp] - mov r2, r10 + mov r2, r9 bl printk - ldrb r3, [r7, #1] @ zero_extendqisi2 - ldr r2, [fp, #512] + ldrb r3, [r4, #37] @ zero_extendqisi2 + ldr r2, [r10, #512] + ldr r4, .L3864 cmp r2, r3 - strhi r3, [fp, #512] - mov r3, r10, asl #7 + strhi r3, [r10, #512] + lsl r3, r9, #7 str r3, [sp, #40] mov r3, #0 str r3, [sp, #20] - str r3, [sp, #16] -.L3929: - ldr r2, [r4, #4] - ldrb r3, [r5, #1] @ zero_extendqisi2 - ldr r7, .L3959 + str r3, [sp, #12] +.L3838: + ldr r2, [r5, #4] + ldrb r3, [r4, #37] @ zero_extendqisi2 cmp r2, r3 - bcs .L3914 - ldr r3, .L3959+20 - ldr r3, [r3, #1708] + bcs .L3823 + ldr r3, .L3864+16 + ldr r3, [r3, #1716] cmp r2, r3 - bcc .L3914 - ldr r3, [sp, #36] - ldr r1, [sp, #36] - cmp r3, #1 - movls r3, #0 - movhi r3, #1 - str r3, [sp, #44] - ldr r3, [sp, #16] - cmp r3, #0 - cmpne r1, #1 - bls .L3915 - ldr r3, [r4] + bcc .L3823 + ldr r3, [sp, #32] + ldr r1, [sp, #12] + cmp r1, #0 + cmpne r3, #1 + bls .L3824 + ldr r3, [r5] add r3, r3, #1 cmp r2, r3 - beq .L3914 -.L3915: - mov r1, #0 + beq .L3823 +.L3824: mov r2, #512 + mov r1, #0 ldr r0, [sp, #8] bl memset - ldr r6, [r4, #4] - mov r2, r10 - ldr r0, .L3959+28 - ldr r3, [sp, #12] - mul r6, r6, r3 - ldr r3, [r7, #44] - ldr r7, [r7, #4] - ldrb r9, [r3, #9] @ zero_extendqisi2 + ldr r3, [r4, #48] + mov r2, r9 + ldr r6, [r5, #4] + ldr r7, [r4, #40] + ldrb r3, [r3, #9] @ zero_extendqisi2 + ldr r0, .L3864+24 + mul r6, r6, fp + str r3, [sp, #16] + ldrh r3, [sp, #16] mov r1, r6 + smulbb r7, r7, r3 bl printk mov r0, #0 - bl flash_boot_enter_slc_mode - mov r1, r9 - mov r0, r6 - bl __aeabi_uidiv - smulbb r7, r7, r9 uxth r7, r7 + bl flash_boot_enter_slc_mode + mov r0, r6 + ldr r1, [sp, #16] + bl __aeabi_uidiv + mov r2, #0 mov r1, r0 - mov r0, #0 - mov r2, r0 + mov r0, r2 bl FlashEraseBlock - cmp r10, r7 - movls r8, #1 - bls .L3916 - mov r0, #0 - add r1, r6, r7 - mov r2, r0 + cmp r7, r9 + movcs r8, #1 + bcs .L3825 + mov r2, #0 mov r8, #2 + add r1, r6, r7 + mov r0, r2 bl FlashEraseBlock -.L3916: +.L3825: mov r0, #0 bl flash_boot_exit_slc_mode - ldr r3, [r5, #44] + ldr r3, [r4, #48] ldrh r0, [r3, #10] ldrb r1, [r3, #12] @ zero_extendqisi2 - mov r0, r0, asl #2 + lsl r0, r0, #2 mul r0, r8, r0 + mov r8, #0 bl __aeabi_idiv mov r1, r7 - mov r8, #0 - str r0, [sp, #48] + str r0, [sp, #44] mov r0, r6 bl __aeabi_uidivmod - mov ip, r1 - rsb r3, r1, r6 - str fp, [sp, #24] - str r3, [sp, #28] -.L3917: - ldr r3, [sp, #48] - ldr r7, .L3959 - cmp r8, r3 - bcs .L3957 - add r3, r8, ip - ubfx r3, r3, #2, #16 - cmp r3, #0 - beq .L3918 - add r2, r3, #1 - add r1, r5, r2, asl #1 - ldrh r7, [r1, #148] - ldrb r1, [r5, #144] @ zero_extendqisi2 - cmp r1, #0 - beq .L3919 - ldr r1, [r5, #2264] - ldr r0, .L3959+32 - cmp r1, r0 - moveq r7, r2 -.L3919: - sub r7, r7, #-1073741823 - mov r7, r7, asl #2 - str r7, [sp, #64] -.L3918: - movw r2, #61424 - str r2, [sp, #68] - add r2, r5, r3, asl #1 - ldrh r7, [r2, #148] - ldrb r2, [r5, #144] @ zero_extendqisi2 - cmp r2, #0 - beq .L3920 - ldr r2, [r5, #2264] - ldr r1, .L3959+32 - cmp r2, r1 - moveq r7, r3 -.L3920: - ldr r3, [sp, #28] - add r8, r8, #4 - str ip, [sp, #56] - uxth r8, r8 - mla r2, r9, r7, r3 - ldr r3, .L3959 - ldrb r3, [r3, #2312] @ zero_extendqisi2 - str r2, [sp, #52] - str r3, [sp, #32] - ldr r3, .L3959+20 - ldrb r0, [r3, #1714] @ zero_extendqisi2 - bl FlashBchSel - mov r0, #0 - bl flash_boot_enter_slc_mode - ldr r3, .L3959 - ldr r3, [r3, #44] - ldrb r1, [r3, #9] @ zero_extendqisi2 - ldr r2, [sp, #52] - mov r0, r2 - bl __aeabi_uidiv - add r3, sp, #64 - mov r1, r0 - ldr r2, [sp, #24] - mov r0, #0 - bl FlashProgPage - mov r0, #0 - bl flash_boot_exit_slc_mode - ldr r0, [sp, #32] - bl FlashBchSel - mov r1, r9 - ldr r0, [sp, #28] - bl __aeabi_uidiv - add r2, r7, #1 - uxth r2, r2 - mov r1, r0 - mov r0, #0 - bl FlashPageProgMsbFFData - ldr r3, [sp, #24] - ldr ip, [sp, #56] - add r3, r3, #2048 - str r3, [sp, #24] - b .L3917 -.L3957: - mov r1, r6 - mov r2, r10 - mov r3, #0 - ldr r0, .L3959+36 - bl printk - ldr r6, [r4, #4] - ldr r8, [r7, #4] - mov r2, r10 - ldr r0, .L3959+40 - mov r9, #0 - ldr r3, [sp, #12] - mul r6, r6, r3 - ldr r3, [r7, #44] - ldrb r3, [r3, #9] @ zero_extendqisi2 - mov r1, r6 - str r3, [sp, #24] - ldrh r3, [sp, #24] - smulbb r8, r8, r3 - bl printk - mov r0, r6 - uxth r8, r8 - mov r1, r8 - bl __aeabi_uidivmod - rsb r3, r1, r6 - str r3, [sp, #48] - ldr r3, [sp, #24] + sub r3, r6, r1 str r1, [sp, #28] - mul ip, r3, r1 - ldr r3, [sp, #8] - ubfx ip, ip, #2, #2 - str r3, [sp, #32] -.L3922: - cmp r9, r10 - bcs .L3958 - ldr r3, [sp, #28] - rsb r8, ip, #4 - ldrb r1, [r5, #144] @ zero_extendqisi2 - add r3, r9, r3 - uxth r8, r8 - ubfx r3, r3, #2, #16 - cmp r1, #0 - add r2, r5, r3, asl #1 - ldrh r2, [r2, #148] - beq .L3923 - ldr r1, [r5, #2264] - ldr r0, .L3959+32 - cmp r1, r0 - moveq r2, r3 -.L3923: - ldr r3, [sp, #48] - add r9, r8, r9 - ldr r1, [sp, #24] - add r3, ip, r3 - ldrb ip, [r7, #2312] @ zero_extendqisi2 - uxth r9, r9 - mla r3, r1, r2, r3 - ldr r2, [r7, #44] - str ip, [sp, #52] - ldrb r1, [r2, #9] @ zero_extendqisi2 - ldr r2, .L3959+20 - str r3, [sp, #60] - str r1, [sp, #56] - ldrb r0, [r2, #1714] @ zero_extendqisi2 - bl FlashBchSel - mov r0, #0 - bl flash_boot_enter_slc_mode - ldr r3, [sp, #60] - ldr r1, [sp, #56] - mov r0, r3 - bl __aeabi_uidiv - mov r1, r0 - mov r0, #0 - mov r3, r0 - ldr r2, [sp, #32] - bl FlashReadPage - mov r0, #0 - bl flash_boot_exit_slc_mode - ldr ip, [sp, #52] - mov r0, ip - bl FlashBchSel - mov ip, #0 - ldr r3, [sp, #32] - add r3, r3, r8, asl #9 - str r3, [sp, #32] - b .L3922 -.L3958: + str r3, [sp, #36] + str r10, [sp, #24] +.L3826: + ldr r3, [sp, #44] + cmp r3, r8 + bhi .L3830 mov r1, r6 - mov r2, r10 mov r3, #0 - ldr r0, .L3959+44 + mov r2, r9 + ldr r0, .L3864+28 bl printk - mov r6, #0 - mov r3, fp + ldr r3, [r4, #48] + mov r2, r9 + ldr r6, [r5, #4] + mov r8, #0 + ldr r7, [r4, #40] + ldrb r3, [r3, #9] @ zero_extendqisi2 + ldr r0, .L3864+32 + mul r6, r6, fp + str r3, [sp, #16] + ldrh r3, [sp, #16] + mov r1, r6 + smulbb r7, r7, r3 + bl printk + uxth r7, r7 + mov r0, r6 + mov r1, r7 + bl __aeabi_uidivmod + sub r3, r6, r1 ldr r2, [sp, #8] -.L3928: - mov r8, r2 - mov r7, r3 - ldr r0, [r8] + str r3, [sp, #36] + ldr r3, [sp, #16] + str r1, [sp, #24] + str r2, [sp, #28] + mul r3, r3, r1 + ubfx r3, r3, #2, #2 +.L3831: + cmp r8, r9 + bcc .L3833 + mov r3, #0 + mov r2, r9 + mov r1, r6 + ldr r0, .L3864+36 + bl printk + ldr r2, [sp, #8] + mov r3, r10 + mov r6, #0 +.L3836: + mov r7, r2 + mov r8, r3 + ldr r0, [r7] add r2, r2, #4 - ldr r1, [r7] + ldr r1, [r8] add r3, r3, #4 cmp r0, r1 - beq .L3925 - mov r1, #0 + beq .L3834 mov r2, #512 + mov r1, #0 ldr r0, [sp, #8] bl memset ldr r3, [r8] - ldr r0, .L3959+48 - str r3, [sp] - ldr r3, [r7] - bic r7, r6, #255 - ldr r1, [sp, #16] - mov r7, r7, asl #2 + ldr r1, [sp, #12] + ldr r0, .L3864+40 str r3, [sp, #4] + ldr r3, [r7] + str r3, [sp] mov r3, r6 - ldr r2, [r4, #4] + bic r6, r6, #255 + ldr r2, [r5, #4] + lsl r6, r6, #2 bl printk - ldr r0, .L3959+52 - add r1, fp, r7 - mov r2, #4 mov r3, #256 + mov r2, #4 + add r1, r10, r6 + ldr r0, .L3864+44 bl rknand_print_hex - mov r2, #4 - ldr r0, .L3959+56 - ldr r3, [sp, #8] - add r1, r3, r7 + ldr r1, [sp, #8] mov r3, #256 + mov r2, #4 + ldr r0, .L3864+48 + add r1, r1, r6 bl rknand_print_hex mov r0, #0 bl flash_boot_enter_slc_mode - ldr r1, [r4, #4] - mov r0, #0 - mov r2, r0 - ldr r3, [sp, #12] - mul r1, r1, r3 + ldr r1, [r5, #4] + mov r2, #0 + mov r0, r2 + mul r1, r1, fp bl FlashEraseBlock - ldr r3, [sp, #44] - cmp r3, #0 - beq .L3926 - ldr r1, [r4, #4] - mov r0, #0 - ldr r3, [sp, #12] - mov r2, r0 - mla r1, r1, r3, r3 + ldr r3, [sp, #32] + cmp r3, #1 + bls .L3835 + ldr r1, [r5, #4] + mov r2, #0 + mov r0, r2 + mla r1, r1, fp, fp bl FlashEraseBlock -.L3926: +.L3835: mov r0, #0 bl flash_boot_exit_slc_mode - ldr r0, .L3959+60 - ldr r1, [r4, #4] + ldr r1, [r5, #4] + ldr r0, .L3864+52 bl printk - ldr r3, [sp, #40] - cmp r6, r3 - bcc .L3914 - b .L3927 -.L3925: - ldr r1, [sp, #40] - add r6, r6, #1 - cmp r6, r1 - bne .L3928 -.L3927: - ldr r3, [sp, #20] +.L3823: + ldr r3, [sp, #12] + add r5, r5, #4 add r3, r3, #1 - str r3, [sp, #20] -.L3914: - ldr r3, [sp, #16] - add r4, r4, #4 - add r3, r3, #1 - str r3, [sp, #16] cmp r3, #5 - bne .L3929 + str r3, [sp, #12] + bne .L3838 ldr r0, [sp, #8] bl ftl_free ldr r3, [sp, #20] clz r0, r3 - mov r0, r0, lsr #5 + lsr r0, r0, #5 rsb r0, r0, #0 - b .L3907 -.L3933: - mvn r0, #0 -.L3907: - add sp, sp, #132 +.L3815: + add sp, sp, #124 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3960: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3840: + mov r9, #8 + b .L3817 +.L3818: + ldr r0, .L3864+56 + bl printk + b .L3820 +.L3830: + ldr r3, [sp, #28] + add r2, r3, r8 + lsrs r2, r2, #2 + beq .L3827 + ldrb r0, [r4, #152] @ zero_extendqisi2 + add r1, r2, #1 + add r3, r4, r1, lsl #1 + cmp r0, #0 + ldrh r3, [r3, #156] + beq .L3828 + ldr r0, [r4, #2268] + ldr ip, .L3864+60 + cmp r0, ip + moveq r3, r1 +.L3828: + sub r3, r3, #-1073741823 + lsl r3, r3, #2 + str r3, [sp, #56] +.L3827: + movw r3, #61424 + str r3, [sp, #60] + add r3, r4, r2, lsl #1 + ldrh r7, [r3, #156] + ldrb r3, [r4, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L3829 + ldr r3, [r4, #2268] + ldr r1, .L3864+60 + cmp r3, r1 + moveq r7, r2 +.L3829: + ldr r2, [sp, #36] + add r8, r8, #4 + ldr r3, [sp, #16] + uxth r8, r8 + mla r3, r7, r3, r2 + ldr r2, .L3864+16 + add r7, r7, #1 + ldrb r0, [r2, #1722] @ zero_extendqisi2 + uxth r7, r7 + str r3, [sp, #52] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + str r3, [sp, #48] + bl FlashBchSel + mov r0, #0 + bl flash_boot_enter_slc_mode + ldr r2, [r4, #48] + ldr r3, [sp, #52] + ldrb r1, [r2, #9] @ zero_extendqisi2 + mov r0, r3 + bl __aeabi_uidiv + add r3, sp, #56 + ldr r2, [sp, #24] + mov r1, r0 + mov r0, #0 + bl FlashProgPage + mov r0, #0 + bl flash_boot_exit_slc_mode + ldr r0, [sp, #48] + bl FlashBchSel + ldr r1, [sp, #16] + ldr r0, [sp, #36] + bl __aeabi_uidiv + mov r2, r7 + mov r1, r0 + mov r0, #0 + bl FlashPageProgMsbFFData + ldr r3, [sp, #24] + add r3, r3, #2048 + str r3, [sp, #24] + b .L3826 +.L3833: + ldr r2, [sp, #24] + rsb r7, r3, #4 + ldrb r0, [r4, #152] @ zero_extendqisi2 + uxth r7, r7 + add r2, r2, r8 + lsr r2, r2, #2 + cmp r0, #0 + add r1, r4, r2, lsl #1 + ldrh r1, [r1, #156] + beq .L3832 + ldr r0, [r4, #2268] + ldr ip, .L3864+60 + cmp r0, ip + moveq r1, r2 +.L3832: + ldr r2, [sp, #36] + add r8, r7, r8 + uxth r8, r8 + add r3, r3, r2 + ldr r2, [sp, #16] + mla r3, r1, r2, r3 + ldr r2, [r4, #48] + ldrb r1, [r2, #9] @ zero_extendqisi2 + ldr r2, .L3864+16 + str r3, [sp, #52] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + ldrb r0, [r2, #1722] @ zero_extendqisi2 + str r1, [sp, #48] + str r3, [sp, #44] + bl FlashBchSel + mov r0, #0 + bl flash_boot_enter_slc_mode + ldr r3, [sp, #52] + ldr r1, [sp, #48] + mov r0, r3 + bl __aeabi_uidiv + mov r3, #0 + mov r1, r0 + ldr r2, [sp, #28] + mov r0, r3 + bl FlashReadPage + mov r0, #0 + bl flash_boot_exit_slc_mode + ldr r0, [sp, #44] + bl FlashBchSel + ldr r3, [sp, #28] + add r3, r3, r7, lsl #9 + str r3, [sp, #28] + mov r3, #0 + b .L3831 +.L3834: + ldr r1, [sp, #40] + add r6, r6, #1 + cmp r1, r6 + bne .L3836 + ldr r3, [sp, #20] + add r3, r3, #1 + str r3, [sp, #20] + b .L3823 +.L3842: + mvn r0, #0 + b .L3815 +.L3865: .align 2 -.L3959: +.L3864: .word .LANCHOR0 .word -52655045 - .word .LC173 .word .LC174 .word .LC175 .word .LANCHOR2 .word .LC176 .word .LC177 - .word 1446522928 .word .LC178 .word .LC179 .word .LC180 @@ -23870,92 +24399,90 @@ .word .LC182 .word .LC183 .word .LC184 + .word .LC173 + .word 1446522928 .fnend .size write_idblock, .-write_idblock .align 2 .global write_loader_lba + .syntax unified + .arm + .fpu softvfp .type write_loader_lba, %function write_loader_lba: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 cmp r0, #64 - stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r5, r0 - .pad #52 - sub sp, sp, #52 + .pad #48 + sub sp, sp, #48 mov r6, r1 mov r8, r2 - ldr r4, .L3984 - bne .L3962 + ldr r4, .L3890 + bne .L3867 ldr r2, [r2] - ldr r3, .L3984+4 + ldr r3, .L3890+4 cmp r2, r3 - bne .L3962 - mov r0, #256000 + bne .L3867 mov r3, #1 + mov r0, #256000 strb r3, [r4, #2020] bl ftl_malloc - mov r1, #0 mov r2, #256000 + mov r1, #0 str r0, [r4, #2024] bl ftl_memset str r5, [r4, #2028] -.L3962: +.L3867: str r6, [sp] mov r3, r5 - ldr r0, .L3984+8 - ldr r1, [r4, #2024] ldr r2, [r8] + ldr r1, [r4, #2024] + ldr r0, .L3890+8 bl printk ldrb r3, [r4, #2020] @ zero_extendqisi2 - ldr r9, .L3984 cmp r3, #0 - beq .L3961 + beq .L3866 sub r0, r5, #64 - ldr r7, [r9, #2024] + ldr r7, [r4, #2024] cmp r0, #500 - bcs .L3964 + bcs .L3869 rsb r2, r5, #564 - add r0, r7, r0, asl #9 - cmp r2, r6 mov r1, r8 - movcs r2, r6 - mov r2, r2, asl #9 + cmp r6, r2 + add r0, r7, r0, lsl #9 + movcc r2, r6 + lsl r2, r2, #9 bl ftl_memcpy - b .L3965 -.L3964: - cmp r5, #564 - bcs .L3973 -.L3965: +.L3870: ldr r3, [r4, #2028] - cmp r3, r5 - beq .L3971 - ldr r2, .L3984 + cmp r5, r3 + beq .L3879 mov r3, #0 cmp r7, r3 + strb r3, [r4, #2020] mov r8, r3 - strb r3, [r2, #2020] - beq .L3972 + beq .L3880 mov r0, r7 bl ftl_free -.L3972: +.L3880: str r8, [r4, #2024] -.L3971: - add r5, r5, r6 - str r5, [r4, #2028] - b .L3961 -.L3973: - ldr r3, .L3984+12 - ldr r0, [r9, #2028] - ldr r3, [r3, #44] + b .L3879 +.L3869: + cmp r5, #564 + bcc .L3870 + ldr r3, .L3890+12 + ldr r0, [r4, #2028] + ldr r3, [r3, #48] sub r0, r0, #64 cmp r0, #500 ldrb r3, [r3, #9] @ zero_extendqisi2 movcs r0, #500 cmp r3, #4 - beq .L3974 + beq .L3871 mov r3, #2 str r3, [sp, #8] mov r3, #3 @@ -23966,49 +24493,52 @@ str r3, [sp, #20] mov r3, #6 str r3, [sp, #24] - b .L3967 -.L3974: - mov r3, #0 -.L3966: - cmp r0, #256 - add r1, sp, #8 - mov r2, r3, asl #1 - movls r2, r3 - str r2, [r1, r3, asl #2] - add r3, r3, #1 - cmp r3, #5 - bne .L3966 -.L3967: +.L3872: movw r3, #63872 -.L3970: - ldr r2, [r7, r3, asl #2] +.L3878: + ldr r2, [r7, r3, lsl #2] cmp r2, #0 - addne r3, r3, #128 - movne r0, r3, asl #2 - bne .L3969 -.L3968: - sub r3, r3, #1 - cmp r3, #4096 - bne .L3970 - mov r0, r0, asl #9 -.L3969: + beq .L3876 + add r3, r3, #128 + lsl r0, r3, #2 +.L3877: mov r1, r7 add r2, sp, #8 + mov r7, #0 bl write_idblock ldr r0, [r4, #2024] - mov r7, #0 strb r7, [r4, #2020] bl ftl_free str r7, [r4, #2024] - b .L3971 -.L3961: - add sp, sp, #52 +.L3879: + add r5, r5, r6 + str r5, [r4, #2028] +.L3866: + add sp, sp, #48 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} -.L3985: + pop {r4, r5, r6, r7, r8, pc} +.L3871: + mov r2, #0 + add r3, sp, #8 +.L3875: + cmp r0, #256 + lslhi r1, r2, #1 + strls r2, [r3, r2, lsl #2] + strhi r1, [r3, r2, lsl #2] + add r2, r2, #1 + cmp r2, #5 + bne .L3875 + b .L3872 +.L3876: + sub r3, r3, #1 + cmp r3, #4096 + bne .L3878 + lsl r0, r0, #9 + b .L3877 +.L3891: .align 2 -.L3984: - .word .LANCHOR4 +.L3890: + .word .LANCHOR2 .word -52655045 .word .LC185 .word .LANCHOR0 @@ -24016,281 +24546,381 @@ .size write_loader_lba, .-write_loader_lba .align 2 .global FtlWrite + .syntax unified + .arm + .fpu softvfp .type FtlWrite, %function FtlWrite: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} + push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} mov r6, r2 sub r2, r1, #64 mov r4, r1 cmp r2, #1984 - mov r5, r3 - mov r7, r0 + mov r7, r3 movcs r2, #0 movcc r2, #1 cmp r0, #0 + mov r5, r0 movne r2, #0 cmp r2, #0 - beq .L3987 - mov r0, r1 + beq .L3893 mov r2, r3 mov r1, r6 + mov r0, r4 bl write_loader_lba -.L3987: - mov r0, r7 - mov r1, r4 +.L3893: + mov r3, r7 mov r2, r6 - mov r3, r5 - ldmfd sp!, {r4, r5, r6, r7, r8, lr} + mov r1, r4 + mov r0, r5 + pop {r4, r5, r6, r7, r8, lr} b ftl_write .fnend .size FtlWrite, .-FtlWrite .align 2 .global rknand_sys_storage_ioctl + .syntax unified + .arm + .fpu softvfp .type rknand_sys_storage_ioctl, %function rknand_sys_storage_ioctl: .fnstart @ args = 0, pretend = 0, frame = 520 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L4049 - stmfd sp!, {r4, r5, r6, r7, lr} + ldr r3, .L3955 + push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} - cmp r1, r3 + mov r4, r1 .pad #524 sub sp, sp, #524 - mov r4, r1 mov r5, r2 - beq .L3994 - bhi .L3995 + cmp r1, r3 + beq .L3900 + bhi .L3901 sub r3, r3, #2080 sub r3, r3, #6 cmp r1, r3 - beq .L3996 - bhi .L3997 + beq .L3902 + bhi .L3903 sub r3, r3, #238 cmp r1, r3 - beq .L3998 + beq .L3904 add r3, r3, #237 cmp r1, r3 - beq .L3999 - b .L4029 -.L3997: - ldr r3, .L4049+4 + beq .L3905 +.L3935: + mvn r4, #21 + b .L3898 +.L3903: + ldr r3, .L3955+4 cmp r1, r3 - beq .L4000 + beq .L3906 add r3, r3, #1 cmp r1, r3 - beq .L4001 + beq .L3907 sub r3, r3, #124 cmp r1, r3 - bne .L4029 - b .L4047 -.L3995: - ldr r3, .L4049+8 - cmp r1, r3 - mov r6, r3 - beq .L4003 - bhi .L4004 - sub r3, r3, #2512 - sub r3, r3, #14 - cmp r1, r3 - beq .L3994 - add r3, r3, #10 - cmp r1, r3 - beq .L3994 - b .L4029 -.L4004: - ldr r3, .L4049+12 - cmp r1, r3 - beq .L4003 - bcc .L4005 - add r3, r3, #1 - cmp r1, r3 - beq .L4005 - b .L4029 -.L3999: - ldr r0, .L4049+16 + bne .L3935 + ldr r0, .L3955+8 bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - beq .L4006 -.L4012: - ldr r0, .L4049+20 - bl printk - b .L4044 -.L4006: + bne .L3918 ldr r2, [sp] - ldr r3, .L4049+24 + ldr r3, .L3955+12 cmp r2, r3 - beq .L4007 -.L4009: + bne .L3915 + ldr r2, [sp, #4] + cmp r2, #512 + ldrls r1, .L3955+16 + bhi .L3915 +.L3953: + add r0, sp, #8 + bl memcpy + b .L3947 +.L3901: + ldr r3, .L3955+20 + cmp r1, r3 + mov r6, r3 + beq .L3909 + bhi .L3910 + sub r3, r3, #2512 + sub r3, r3, #14 + cmp r1, r3 + beq .L3900 + add r3, r3, #10 + cmp r1, r3 + bne .L3935 +.L3900: + ldr r3, .L3955+24 + cmp r4, r3 + mov r7, r3 + ldreq r0, .L3955+28 + beq .L3949 + ldr r3, .L3955+32 + cmp r4, r3 + ldreq r0, .L3955+36 + ldrne r0, .L3955+40 +.L3949: + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3918 + ldr r2, [sp] + ldr r3, .L3955+44 + cmp r2, r3 + bne .L3952 + ldr r3, .L3955+32 + ldr r6, .L3955+48 + cmp r4, r3 + bne .L3928 + ldr r3, [r6, #2032] + mov r2, #16 + mov r1, sp + mov r0, r5 + ldr r3, [r3, #20] + str r3, [sp, #4] + strb r3, [sp, #8] + bl rk_copy_to_user + cmp r0, #0 + bne .L3952 +.L3919: + mov r4, #0 +.L3898: + mov r0, r4 + add sp, sp, #524 + @ sp needed + pop {r4, r5, r6, r7, pc} +.L3910: + ldr r3, .L3955+52 + cmp r1, r3 + beq .L3909 + bcc .L3911 + add r3, r3, #1 + cmp r1, r3 + bne .L3935 +.L3911: + ldr r0, .L3955+56 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3918 + ldr r2, [sp] + ldr r3, .L3955+60 + cmp r2, r3 + bne .L3915 + ldr r2, [sp, #4] + cmp r2, #504 + bhi .L3915 + ldr r3, .L3955+64 + mov r1, sp + add r2, r2, #8 + cmp r4, r3 + ldr r4, .L3955+48 + bne .L3934 + ldr r0, [r4, #2564] + bl memcpy + ldr r1, [r4, #2564] + mov r0, #2 + b .L3950 +.L3905: + ldr r0, .L3955+68 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + beq .L3912 +.L3918: + ldr r0, .L3955+72 + bl printk +.L3952: + mvn r4, #13 + b .L3898 +.L3912: + ldr r2, [sp] + ldr r3, .L3955+76 + cmp r2, r3 + beq .L3913 +.L3915: mvn r4, #0 - b .L4008 -.L4007: +.L3914: + mov r1, r4 + ldr r0, .L3955+80 + bl printk + b .L3898 +.L3913: ldr r3, [sp, #4] cmp r3, #512 - bhi .L4009 - ldr r4, .L4049+28 + bhi .L3915 + ldr r4, .L3955+48 mov r2, #512 mov r0, sp ldr r1, [r4, #2032] bl memcpy ldr r2, [r4, #2036] - ldr r3, .L4049+32 + ldr r3, .L3955+84 cmp r2, r3 - beq .L4010 + beq .L3916 mov r1, #0 - add r0, sp, #64 mov r2, #128 + add r0, sp, #64 str r1, [sp, #8] str r1, [sp, #12] bl memset -.L4010: - mov r1, #0 - add r0, sp, #256 +.L3916: mov r2, #256 + mov r1, #0 + add r0, sp, r2 str r1, [sp, #16] bl memset -.L4039: - mov r0, r5 - mov r1, sp +.L3947: mov r2, #520 + mov r1, sp + mov r0, r5 bl rk_copy_to_user cmp r0, #0 - bne .L4044 - b .L4043 -.L3996: - ldr r0, .L4049+36 + bne .L3952 +.L3951: + mov r4, #0 + b .L3914 +.L3902: + ldr r0, .L3955+88 bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L4012 + bne .L3918 ldr r2, [sp] - ldr r3, .L4049+24 + ldr r3, .L3955+76 cmp r2, r3 - bne .L4009 + bne .L3915 ldr r3, [sp, #4] cmp r3, #512 - bhi .L4009 - ldr r2, .L4049+28 - ldr r3, .L4049+32 + bhi .L3915 + ldr r2, .L3955+48 + ldr r3, .L3955+84 ldr r1, [r2, #2036] cmp r1, r3 - mvnne r0, #1 - bne .L3993 + mvnne r4, #1 + bne .L3898 ldr r3, [sp, #12] sub r1, r3, #1 cmp r1, #127 - mvnhi r0, #2 - bhi .L3993 + mvnhi r4, #2 + bhi .L3898 ldr r4, [r2, #2032] add r1, sp, #64 - add r0, r4, #64 str r3, [r4, #12] + add r0, r4, #64 ldr r2, [sp, #12] bl memcpy - mov r0, #1 mov r1, r4 - b .L4042 -.L4001: - ldr r0, .L4049+40 + mov r0, #1 +.L3950: + bl StorageSysDataStore + mov r4, r0 + b .L3914 +.L3907: + ldr r0, .L3955+92 bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L4012 + bne .L3918 ldr r2, [sp] - ldr r3, .L4049+44 + ldr r3, .L3955+96 cmp r2, r3 - bne .L4009 + bne .L3915 ldr r3, [sp, #4] cmp r3, #512 - bhi .L4009 - ldr r5, .L4049+28 + bhi .L3915 + ldr r5, .L3955+48 ldr r3, [r5, #2040] cmp r3, #0 - bne .L4013 -.L4016: - mov r0, #0 - b .L3993 -.L4013: + beq .L3919 ldr r3, [r5, #2044] - ldr r2, .L4049+48 + ldr r2, .L3955+100 ldr r1, [r3] cmp r1, r2 - beq .L4014 + beq .L3920 str r2, [r3] mov r2, #504 - ldr r3, .L4049+28 - ldr r3, [r3, #2044] + ldr r3, [r5, #2044] str r2, [r3, #4] mov r2, #0 str r2, [r3, #8] str r2, [r3, #12] -.L4014: +.L3920: ldr r1, [r5, #2044] mov r4, #0 mov r0, r4 str r4, [r1, #16] bl StorageSysDataStore ldr r3, [r5, #2032] - ldr r2, .L4049+24 + ldr r2, .L3955+76 ldr r1, [r3] cmp r1, r2 strne r2, [r3] - ldr r6, [r5, #2032] - ldrne r3, .L4049+28 movne r2, #504 - add r0, r6, #64 - ldrne r3, [r3, #2032] - stmneib r3, {r2, r4} + ldrne r3, [r5, #2032] + ldr r6, [r5, #2032] + stmibne r3, {r2, r4} mov r4, #0 - mov r1, r4 mov r2, #128 + mov r1, r4 str r4, [r6, #12] + add r0, r6, #64 bl memset - mov r0, #1 mov r1, r6 + mov r0, #1 bl StorageSysDataStore str r4, [r5, #2040] str r4, [r5, #2036] - b .L4008 -.L4000: - ldr r0, .L4049+52 + b .L3914 +.L3906: + ldr r0, .L3955+104 bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L4012 + bne .L3918 ldr r2, [sp] - ldr r3, .L4049+56 + ldr r3, .L3955+108 cmp r2, r3 - bne .L4009 + bne .L3915 ldr r3, [sp, #4] cmp r3, #512 - bhi .L4009 - ldr r5, .L4049+28 + bhi .L3915 + ldr r5, .L3955+48 ldr r3, [r5, #2040] cmp r3, #1 - beq .L4016 + beq .L3919 ldr r2, [r5, #2044] - ldr r3, .L4049+48 + ldr r3, .L3955+100 ldr r1, [r2] cmp r1, r3 - beq .L4017 + beq .L3922 str r3, [r2] mov r2, #504 ldr r3, [r5, #2044] @@ -24298,7 +24928,7 @@ mov r2, #0 str r2, [r3, #8] str r2, [r3, #12] -.L4017: +.L3922: ldr r1, [r5, #2044] mov r3, #1 mov r0, #0 @@ -24306,209 +24936,114 @@ str r3, [r1, #16] bl StorageSysDataStore ldr r3, [r5, #2032] - ldr r2, .L4049+24 + ldr r2, .L3955+76 ldr r1, [r3] cmp r1, r2 strne r2, [r3] - ldr r6, [r5, #2032] - ldrne r3, .L4049+28 movne r1, #504 + ldrne r3, [r5, #2032] movne r2, #0 - add r0, r6, #64 - ldrne r3, [r3, #2032] - stmneib r3, {r1, r2} - mov r1, r4 + ldr r6, [r5, #2032] + stmibne r3, {r1, r2} mov r2, #128 + mov r1, r4 str r4, [r6, #12] + add r0, r6, #64 bl memset - mov r0, #1 mov r1, r6 + mov r0, #1 bl StorageSysDataStore mov r3, #1 str r3, [r5, #2040] - b .L4008 -.L4047: - ldr r0, .L4049+60 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L4012 - ldr r2, [sp] - ldr r3, .L4049+64 - cmp r2, r3 - bne .L4009 - ldr r2, [sp, #4] - cmp r2, #512 - addls r0, sp, #8 - ldrls r1, .L4049+68 - bls .L4045 - b .L4009 -.L3994: - ldr r0, .L4049+72 - cmp r4, r0 - mov r7, r0 - ldreq r0, .L4049+76 - beq .L4041 - ldr r3, .L4049+80 - cmp r4, r3 - ldreq r0, .L4049+84 - ldrne r0, .L4049+88 -.L4041: - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L4012 - ldr r2, [sp] - ldr r3, .L4049+92 - cmp r2, r3 - bne .L4044 - ldr r3, .L4049+80 - ldr r6, .L4049+28 - cmp r4, r3 - bne .L4023 - ldr r3, [r6, #2032] - mov r0, r5 - mov r1, sp - mov r2, #16 - ldr r3, [r3, #20] - str r3, [sp, #4] - strb r3, [sp, #8] - bl rk_copy_to_user - cmp r0, #0 - beq .L3993 - b .L4044 -.L4023: + b .L3914 +.L3928: ldr r3, [r6, #2560] cmp r3, #10 - bhi .L4044 - ldr r1, [r6, #2032] - ldr r2, [sp, #4] - ldr r3, [r1, #24] - cmp r3, r2 + bhi .L3952 + ldr r2, [r6, #2032] + ldr r1, [sp, #4] + ldr r3, [r2, #24] + cmp r3, r1 cmpne r3, #0 movne r3, #1 moveq r3, #0 - beq .L4024 - ldr r0, .L4049+96 - mov r1, r2 + beq .L3929 + ldr r0, .L3955+112 bl printk ldr r3, [r6, #2560] add r3, r3, #1 str r3, [r6, #2560] -.L4044: - mvn r0, #13 - b .L3993 -.L4024: + b .L3952 +.L3929: cmp r4, r7 str r3, [r6, #2560] - mov r0, #1 - moveq r2, r3 movne r3, #1 - moveq r3, r2 - str r2, [r1, #24] - str r3, [r1, #20] + strne r1, [r2, #24] + streq r3, [r2, #20] + mov r1, r2 + streq r3, [r2, #24] + mov r0, #1 + strne r3, [r2, #20] bl StorageSysDataStore cmn r0, #1 - bne .L4043 - b .L4048 -.L4003: - ldr r0, .L4049+100 + bne .L3951 + mvn r4, #1 + b .L3914 +.L3909: + ldr r0, .L3955+116 bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L4012 + bne .L3918 ldr r2, [sp] - ldr r3, .L4049+104 + ldr r3, .L3955+60 cmp r2, r3 - bne .L4009 + bne .L3915 ldr r2, [sp, #4] cmp r2, #504 - bhi .L4009 - ldr r3, .L4049+28 + bhi .L3915 + ldr r3, .L3955+48 cmp r4, r6 - add r0, sp, #8 ldreq r1, [r3, #2564] ldrne r1, [r3, #2568] add r1, r1, #8 -.L4045: - bl memcpy - b .L4039 -.L4005: - ldr r0, .L4049+108 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L4012 - ldr r2, [sp] - ldr r3, .L4049+104 - cmp r2, r3 - bne .L4009 - ldr r2, [sp, #4] - cmp r2, #504 - bhi .L4009 - ldr r3, .L4049+112 - add r2, r2, #8 - cmp r4, r3 - ldr r4, .L4049+28 - bne .L4028 - mov r1, sp - ldr r0, [r4, #2564] - bl memcpy - mov r0, #2 - ldr r1, [r4, #2564] - b .L4042 -.L4028: - mov r1, sp + b .L3953 +.L3934: ldr r0, [r4, #2568] bl memcpy ldr r1, [r4, #2568] mov r0, #3 -.L4042: - bl StorageSysDataStore - mov r4, r0 - b .L4008 -.L3998: + b .L3950 +.L3904: bl rknand_dev_flush -.L4043: - mov r4, #0 - b .L4008 -.L4048: - mvn r4, #1 -.L4008: - ldr r0, .L4049+116 - mov r1, r4 - bl printk - mov r0, r4 - b .L3993 -.L4029: - mvn r0, #21 -.L3993: - add sp, sp, #524 - @ sp needed - ldmfd sp!, {r4, r5, r6, r7, pc} -.L4050: + b .L3951 +.L3956: .align 2 -.L4049: +.L3955: .word 1074031656 .word 1074029694 + .word .LC191 + .word 1094995539 + .word .LANCHOR2+2048 .word 1074034192 + .word 1074031666 + .word .LC192 + .word 1074031676 + .word .LC193 + .word .LC194 + .word 1280262987 + .word .LANCHOR2 .word 1074034194 + .word .LC197 + .word 1145980246 + .word 1074034193 .word .LC186 .word .LC187 .word 1263358532 - .word .LANCHOR4 + .word .LC198 .word -1067903959 .word .LC188 .word .LC189 @@ -24516,46 +25051,36 @@ .word 1146313043 .word .LC190 .word 1112755781 - .word .LC191 - .word 1094995539 - .word .LANCHOR4+2048 - .word 1074031666 - .word .LC192 - .word 1074031676 - .word .LC193 - .word .LC194 - .word 1280262987 .word .LC195 .word .LC196 - .word 1145980246 - .word .LC197 - .word 1074034193 - .word .LC198 .fnend .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 2 .global rk_ftl_storage_sys_init + .syntax unified + .arm + .fpu softvfp .type rk_ftl_storage_sys_init, %function rk_ftl_storage_sys_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r2, #512 - ldr r4, .L4061 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mvn r3, #0 + ldr r4, .L3967 mov r5, #0 - add r0, r4, #2048 + mov r2, #512 ldr r1, [r4, #2004] + add r0, r4, #2048 str r3, [r4, #2028] + strb r5, [r4, #2020] add r3, r1, #512 - str r3, [r4, #2032] str r1, [r4, #2044] + str r3, [r4, #2032] add r3, r1, #1024 add r1, r1, #1536 str r3, [r4, #2564] - strb r5, [r4, #2020] str r5, [r4, #2024] str r5, [r4, #2572] str r1, [r4, #2568] @@ -24567,40 +25092,42 @@ ldr r3, [r6, #16] cmp r7, r5 str r3, [r4, #2040] - beq .L4052 - mov r0, r6 + beq .L3958 mov r1, #508 + mov r0, r6 bl js_hash cmp r7, r0 - beq .L4052 + beq .L3958 str r5, [r6, #16] - ldr r0, .L4061+4 + ldr r0, .L3967+4 str r5, [r4, #2040] bl printk -.L4052: +.L3958: ldr r3, [r4, #2040] mov r0, #2 ldr r1, [r4, #2564] cmp r3, #0 - ldrne r3, .L4061 - ldrne r2, .L4061+8 - strne r2, [r3, #2036] + ldrne r3, .L3967+8 + strne r3, [r4, #2036] bl StorageSysDataLoad ldr r1, [r4, #2568] mov r0, #3 bl StorageSysDataLoad - ldmfd sp!, {r3, r4, r5, r6, r7, lr} + pop {r4, r5, r6, r7, r8, lr} b rknand_sys_storage_init -.L4062: +.L3968: .align 2 -.L4061: - .word .LANCHOR4 +.L3967: + .word .LANCHOR2 .word .LC199 .word -1067903959 .fnend .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init .align 2 .global StorageSysDataDeInit + .syntax unified + .arm + .fpu softvfp .type StorageSysDataDeInit, %function StorageSysDataDeInit: .fnstart @@ -24613,269 +25140,269 @@ .size StorageSysDataDeInit, .-StorageSysDataDeInit .align 2 .global rk_ftl_vendor_storage_init + .syntax unified + .arm + .fpu softvfp .type rk_ftl_vendor_storage_init, %function rk_ftl_vendor_storage_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r0, #65536 + ldr r6, .L3980 bl ftl_malloc - ldr r6, .L4075 cmp r0, #0 str r0, [r6, #2576] - beq .L4070 - ldr r9, .L4075+4 - mov r8, #0 - mov r4, r8 - mov r7, r8 - mov r10, r6 -.L4068: - mov r0, r7, asl #7 - mov r1, #128 + beq .L3976 + ldr r10, .L3980+4 + mov r7, #0 + ldr r9, .L3980+8 + mov r4, r7 + mov r8, r7 +.L3974: ldr r2, [r6, #2576] + mov r1, #128 + lsl r0, r8, #7 bl FlashBootVendorRead cmp r0, #0 - bne .L4066 - ldr r3, [r10, #2576] - ldr r0, .L4075+8 - add r2, r3, #61440 - ldr r1, [r3] + bne .L3972 + ldr r1, [r6, #2576] + mov r0, r10 + add r2, r1, #61440 + ldr r3, [r1, #4] ldr r2, [r2, #4092] - ldr r3, [r3, #4] + ldr r1, [r1] bl printk - ldr r5, [r10, #2576] + ldr r5, [r6, #2576] ldr r3, [r5] cmp r3, r9 - bne .L4067 + bne .L3973 add r2, r5, #61440 ldr r3, [r5, #4] - ldr r1, [r2, #4092] - cmp r4, r3 - movcs r2, #0 - movcc r2, #1 - cmp r1, r3 - movne r2, #0 + ldr r2, [r2, #4092] + cmp r3, r4 + sub r2, r2, r3 + clz r2, r2 + lsr r2, r2, #5 + movls r2, #0 cmp r2, #0 - movne r8, r7 + movne r7, r8 movne r4, r3 -.L4067: - cmp r7, #1 - movne r7, #1 - bne .L4068 -.L4074: +.L3973: + add r8, r8, #1 + cmp r8, #2 + bne .L3974 cmp r4, #0 - beq .L4069 - mov r0, r8, asl #7 - mov r1, #128 + beq .L3975 mov r2, r5 + mov r1, #128 + lsl r0, r7, #7 bl FlashBootVendorRead cmp r0, #0 - bne .L4066 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L4069: - mov r0, r5 - mov r1, r4 + bne .L3972 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3975: mov r2, #65536 + mov r1, r4 + mov r0, r5 bl memset - ldr r3, .L4075+4 - str r7, [r5, #4] + mov r3, #1 + add r2, r5, #61440 + str r3, [r5, #4] mov r0, r4 - str r3, [r5] - add r3, r5, #61440 - str r7, [r3, #4092] - ldr r3, .L4075+12 + str r9, [r5] + str r3, [r2, #4092] + ldr r3, .L3980+12 strh r4, [r5, #12] @ movhi strh r3, [r5, #14] @ movhi - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L4066: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3972: ldr r0, [r6, #2576] bl kfree mov r3, #0 mvn r0, #0 str r3, [r6, #2576] - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L4070: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3976: mvn r0, #11 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} -.L4076: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3981: .align 2 -.L4075: - .word .LANCHOR4 - .word 1380668996 +.L3980: + .word .LANCHOR2 .word .LC200 + .word 1380668996 .word -1032 .fnend .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init .align 2 .global rk_ftl_vendor_read + .syntax unified + .arm + .fpu softvfp .type rk_ftl_vendor_read, %function rk_ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r3, .L4084 + ldr r3, .L3992 ldr ip, [r3, #2576] cmp ip, #0 - ldrneh r4, [ip, #10] - movne r3, #0 - beq .L4082 -.L4079: + beq .L3987 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r3, #0 + ldrh r4, [ip, #10] +.L3984: cmp r3, r4 - bcs .L4082 - add lr, ip, r3, asl #3 + bcc .L3986 + mvn r0, #0 + pop {r4, r5, r6, pc} +.L3986: + add lr, ip, r3, lsl #3 ldrh r5, [lr, #16] cmp r5, r0 - bne .L4080 - ldrh r3, [lr, #20] + bne .L3985 + ldrh r4, [lr, #20] mov r0, r1 ldrh r1, [lr, #18] - mov r4, r2 - cmp r2, r3 + cmp r4, r2 + movcs r4, r2 add r1, r1, #1024 - movcs r4, r3 - add r1, ip, r1 mov r2, r4 + add r1, ip, r1 bl memcpy mov r0, r4 - ldmfd sp!, {r3, r4, r5, pc} -.L4080: + pop {r4, r5, r6, pc} +.L3985: add r3, r3, #1 - b .L4079 -.L4082: + b .L3984 +.L3987: mvn r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L4085: + bx lr +.L3993: .align 2 -.L4084: - .word .LANCHOR4 +.L3992: + .word .LANCHOR2 .fnend .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 2 .global rk_ftl_vendor_write + .syntax unified + .arm + .fpu softvfp .type rk_ftl_vendor_write, %function rk_ftl_vendor_write: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L4015 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r2 - ldr r2, .L4109 .pad #28 sub sp, sp, #28 - ldr r4, [r2, #2576] + ldr r4, [r3, #2576] cmp r4, #0 - beq .L4101 - mov r3, r1 - add r7, r9, #63 - ldrh r1, [r4, #8] - bic r7, r7, #63 + beq .L4009 + mov r8, r2 ldrh r2, [r4, #10] - mov ip, r0 - mov r6, #0 - str r1, [sp, #4] -.L4088: - cmp r6, r2 - bcs .L4107 - add r5, r4, r6, asl #3 - ldrh r1, [r5, #16] - cmp r1, ip - bne .L4089 - ldrh r1, [r5, #20] - add fp, r4, #1024 - add r1, r1, #63 - bic r1, r1, #63 - str r1, [sp, #8] - cmp r9, r1 - bls .L4090 + add r6, r8, #63 + ldrh r3, [r4, #8] + mov fp, r1 + bic r6, r6, #63 + mov r7, #0 + str r3, [sp, #4] +.L3996: + cmp r7, r2 + bcc .L4004 ldrh r1, [r4, #14] - cmp r1, r7 - subcs r2, r2, #1 - strcs r2, [sp, #12] - ldrcsh r8, [r5, #18] - bcc .L4101 -.L4091: - ldr r2, [sp, #12] - add r5, r5, #8 - cmp r6, r2 - bcs .L4108 - ldrh r10, [r5, #20] - add r0, fp, r8 - ldrh r2, [r5, #16] - add r6, r6, #1 - ldrh r1, [r5, #18] - strh r10, [r5, #12] @ movhi - add r10, r10, #63 - bic r10, r10, #63 - strh r2, [r5, #8] @ movhi - strh r8, [r5, #10] @ movhi - add r1, fp, r1 - mov r2, r10 - str r3, [sp, #20] - str ip, [sp, #16] - bl memcpy - add r8, r8, r10 - ldr r3, [sp, #20] - ldr ip, [sp, #16] - b .L4091 -.L4108: - add r6, r4, r6, asl #3 - uxth r8, r8 - add r0, fp, r8 - mov r1, r3 - strh r8, [r6, #18] @ movhi - mov r2, r9 - strh ip, [r6, #16] @ movhi - uxth r7, r7 - strh r9, [r6, #20] @ movhi - add r8, r8, r7 - bl memcpy - ldrh r5, [r4, #14] - strh r8, [r4, #12] @ movhi - ldr r3, [sp, #8] - add r5, r3, r5 - rsb r7, r7, r5 - strh r7, [r4, #14] @ movhi - b .L4106 -.L4090: - ldrh r0, [r5, #18] - mov r1, r3 - mov r2, r9 - add r0, fp, r0 - bl memcpy - strh r9, [r5, #20] @ movhi - b .L4106 -.L4089: - add r6, r6, #1 - b .L4088 -.L4107: - ldrh r1, [r4, #14] - cmp r1, r7 - bcc .L4101 - add r2, r4, r2, asl #3 - uxth r7, r7 - rsb r1, r7, r1 - strh ip, [r2, #16] @ movhi - ldrh r0, [r4, #12] - strh r9, [r2, #20] @ movhi - strh r0, [r2, #18] @ movhi - add r0, r7, r0 - strh r1, [r4, #14] @ movhi - mov r1, r3 - strh r0, [r4, #12] @ movhi - ldrh r0, [r2, #18] - mov r2, r9 + cmp r6, r1 + bhi .L4009 + 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 add r0, r0, #1024 add r0, r4, r0 bl memcpy ldrh r3, [r4, #10] add r3, r3, #1 strh r3, [r4, #10] @ movhi -.L4106: + b .L4014 +.L4004: + add r5, r4, r7, lsl #3 + ldrh r3, [r5, #16] + cmp r3, r0 + str r3, [sp, #8] + bne .L3997 + ldrh r1, [r5, #20] + add r3, r4, #1024 + add r1, r1, #63 + bic r1, r1, #63 + cmp r8, r1 + str r1, [sp, #12] + bls .L3998 + ldrh r1, [r4, #14] + cmp r6, r1 + subls r2, r2, #1 + ldrhls r10, [r5, #18] + strls r2, [sp, #16] + bls .L3999 +.L4009: + mvn r0, #0 + b .L3994 +.L4000: + ldrh r9, [r5, #20] + add r0, r3, r10 + 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 + strh r2, [r5, #8] @ movhi + strh r10, [r5, #10] @ movhi + add r1, r3, r1 + mov r2, r9 + str r3, [sp, #20] + bl memcpy + ldr r3, [sp, #20] + add r10, r10, r9 +.L3999: + ldr r2, [sp, #16] + add r5, r5, #8 + cmp r7, r2 + bcc .L4000 + ldrh r2, [sp, #8] + add r7, r4, r7, lsl #3 + uxth r5, r10 + 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 + 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 +.L4014: ldr r3, [r4, #4] add r2, r4, #61440 mov r1, #128 @@ -24890,30 +25417,41 @@ movhi r3, #0 strh r3, [r4, #8] @ movhi ldr r3, [sp, #4] - mov r0, r3, asl #7 + lsl r0, r3, #7 bl FlashBootVendorWrite mov r0, #0 - b .L4087 -.L4101: - mvn r0, #0 -.L4087: +.L3994: add sp, sp, #28 @ sp needed - ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L4110: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3998: + ldrh r0, [r5, #18] + mov r2, r8 + mov r1, fp + add r0, r3, r0 + bl memcpy + strh r8, [r5, #20] @ movhi + b .L4014 +.L3997: + add r7, r7, #1 + b .L3996 +.L4016: .align 2 -.L4109: - .word .LANCHOR4 +.L4015: + .word .LANCHOR2 .fnend .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 2 .global rk_ftl_vendor_storage_ioctl + .syntax unified + .arm + .fpu softvfp .type rk_ftl_vendor_storage_ioctl, %function rk_ftl_vendor_storage_ioctl: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} + push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r0, #4096 mov r5, r2 @@ -24921,81 +25459,79 @@ bl ftl_malloc subs r4, r0, #0 mvneq r5, #0 - beq .L4112 - ldr r3, .L4128 + beq .L4017 + ldr r3, .L4033 cmp r6, r3 - beq .L4114 + beq .L4020 add r3, r3, #1 cmp r6, r3 - beq .L4115 - b .L4126 -.L4114: - mov r1, r5 + beq .L4021 +.L4031: + mvn r5, #13 + b .L4019 +.L4020: mov r2, #8 + mov r1, r5 bl rk_copy_from_user cmp r0, #0 - bne .L4126 + bne .L4031 ldr r2, [r4] - ldr r3, .L4128+4 + ldr r3, .L4033+4 cmp r2, r3 - beq .L4117 -.L4118: + beq .L4023 +.L4024: mvn r5, #0 - b .L4113 -.L4117: - ldrh r0, [r4, #4] - add r1, r4, #8 +.L4019: + mov r0, r4 + bl kfree +.L4017: + mov r0, r5 + pop {r4, r5, r6, pc} +.L4023: ldrh r2, [r4, #6] + add r1, r4, #8 + ldrh r0, [r4, #4] bl rk_ftl_vendor_read cmn r0, #1 - beq .L4118 + beq .L4024 uxth r2, r0 strh r0, [r4, #6] @ movhi mov r1, r4 mov r0, r5 add r2, r2, #8 bl rk_copy_to_user - cmp r0, #0 - moveq r5, #0 - mvnne r5, #13 - b .L4113 -.L4115: - mov r1, r5 + subs r5, r0, #0 + beq .L4019 + b .L4031 +.L4021: mov r2, #8 + mov r1, r5 bl rk_copy_from_user cmp r0, #0 - bne .L4126 + bne .L4031 ldr r2, [r4] - ldr r3, .L4128+4 + ldr r3, .L4033+4 cmp r2, r3 - bne .L4118 + bne .L4024 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L4118 - mov r0, r4 - mov r1, r5 + bhi .L4024 add r2, r2, #8 + mov r1, r5 + mov r0, r4 bl rk_copy_from_user cmp r0, #0 - bne .L4126 - ldrh r0, [r4, #4] - add r1, r4, #8 + bne .L4031 ldrh r2, [r4, #6] + add r1, r4, #8 + ldrh r0, [r4, #4] bl rk_ftl_vendor_write mov r5, r0 - b .L4113 -.L4126: - mvn r5, #13 -.L4113: - mov r0, r4 - bl kfree -.L4112: - mov r0, r5 - ldmfd sp!, {r4, r5, r6, pc} -.L4129: + b .L4019 +.L4034: .align 2 -.L4128: +.L4033: .word 1074034177 .word 1448232273 .fnend @@ -25009,6 +25545,8 @@ .global gSnSectorData .global gpDrmKeyInfo .global gpBootConfig + .global ftl_dma32_buffer_size + .global ftl_dma32_buffer .global gLoaderBootInfo .global RK29_NANDC1_REG_BASE .global RK29_NANDC_REG_BASE @@ -25244,18 +25782,11 @@ .global IDByte .global read_retry_cur_offset .section .rodata - .align 2 -.LANCHOR3 = . + 0 - .type __func__.20390, %object - .size __func__.20390, 11 -__func__.20390: + .set .LANCHOR3,. + 0 + .type __func__.23812, %object + .size __func__.23812, 11 +__func__.23812: .ascii "FtlMemInit\000" -.LC0: - .byte 60 - .byte 40 - .byte 24 - .byte 16 - .space 1 .type samsung_14nm_slc_rr, %object .size samsung_14nm_slc_rr, 26 samsung_14nm_slc_rr: @@ -25285,7 +25816,6 @@ .byte -125 .byte -115 .byte 100 - .space 2 .type samsung_14nm_mlc_rr, %object .size samsung_14nm_mlc_rr, 104 samsung_14nm_mlc_rr: @@ -25393,452 +25923,33 @@ .byte 18 .byte 9 .byte 8 - .type __func__.21169, %object - .size __func__.21169, 17 -__func__.21169: + .type __func__.24591, %object + .size __func__.24591, 17 +__func__.24591: .ascii "FtlDumpBlockInfo\000" - .space 3 - .type __func__.21188, %object - .size __func__.21188, 16 -__func__.21188: + .type __func__.24610, %object + .size __func__.24610, 16 +__func__.24610: .ascii "FtlScanAllBlock\000" - .type __func__.21456, %object - .size __func__.21456, 17 -__func__.21456: + .type __func__.24878, %object + .size __func__.24878, 17 +__func__.24878: .ascii "ftl_scan_all_ppa\000" - .space 3 - .type __func__.21137, %object - .size __func__.21137, 12 -__func__.21137: + .type __func__.24559, %object + .size __func__.24559, 12 +__func__.24559: .ascii "FtlCheckVpc\000" - .type __func__.21436, %object - .size __func__.21436, 21 -__func__.21436: + .type __func__.24858, %object + .size __func__.24858, 21 +__func__.24858: .ascii "FtlVpcCheckAndModify\000" - .space 3 - .type __func__.20463, %object - .size __func__.20463, 8 -__func__.20463: + .type __func__.23885, %object + .size __func__.23885, 8 +__func__.23885: .ascii "FtlInit\000" - .section .rodata.str1.1,"aMS",%progbits,1 -.LC1: - .ascii "FlashEraseBlocks pageAddr error %x\012\000" -.LC2: - .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" - .ascii "\000" -.LC3: - .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" -.LC4: - .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" - .ascii "\000" -.LC5: - .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC6: - .ascii "FLASH INFO:\012\000" -.LC7: - .ascii "FLASH ID: %x\012\000" -.LC8: - .ascii "Device Capacity: %d MB\012\000" -.LC9: - .ascii "FMWAIT: %x %x %x %x\012\000" -.LC10: - .ascii "FTL INFO:\012\000" -.LC11: - .ascii "g_MaxLpn = 0x%x\012\000" -.LC12: - .ascii "g_VaildLpn = 0x%x\012\000" -.LC13: - .ascii "read_page_count = 0x%x\012\000" -.LC14: - .ascii "discard_page_count = 0x%x\012\000" -.LC15: - .ascii "write_page_count = 0x%x\012\000" -.LC16: - .ascii "cache_write_count = 0x%x\012\000" -.LC17: - .ascii "l2p_write_count = 0x%x\012\000" -.LC18: - .ascii "gc_page_count = 0x%x\012\000" -.LC19: - .ascii "totle_write = %d MB\012\000" -.LC20: - .ascii "totle_read = %d MB\012\000" -.LC21: - .ascii "GSV = 0x%x\012\000" -.LC22: - .ascii "GDV = 0x%x\012\000" -.LC23: - .ascii "bad blk num = %d %d\012\000" -.LC24: - .ascii "free_superblocks = 0x%x\012\000" -.LC25: - .ascii "mlc_EC = 0x%x\012\000" -.LC26: - .ascii "slc_EC = 0x%x\012\000" -.LC27: - .ascii "avg_EC = 0x%x\012\000" -.LC28: - .ascii "sys_EC = 0x%x\012\000" -.LC29: - .ascii "max_EC = 0x%x\012\000" -.LC30: - .ascii "min_EC = 0x%x\012\000" -.LC31: - .ascii "PLT = 0x%x\012\000" -.LC32: - .ascii "POT = 0x%x\012\000" -.LC33: - .ascii "MaxSector = 0x%x\012\000" -.LC34: - .ascii "init_sys_blks_pp = 0x%x\012\000" -.LC35: - .ascii "sys_blks_pp = 0x%x\012\000" -.LC36: - .ascii "free sysblock = 0x%x\012\000" -.LC37: - .ascii "data_blks_pp = 0x%x\012\000" -.LC38: - .ascii "data_op_blks_pp = 0x%x\012\000" -.LC39: - .ascii "max_data_blks = 0x%x\012\000" -.LC40: - .ascii "Sys.id = 0x%x\012\000" -.LC41: - .ascii "Bbt.id = 0x%x\012\000" -.LC42: - .ascii "ACT.page = 0x%x\012\000" -.LC43: - .ascii "ACT.plane = 0x%x\012\000" -.LC44: - .ascii "ACT.id = 0x%x\012\000" -.LC45: - .ascii "ACT.mode = 0x%x\012\000" -.LC46: - .ascii "ACT.a_pages = 0x%x\012\000" -.LC47: - .ascii "ACT VPC = 0x%x\012\000" -.LC48: - .ascii "BUF.page = 0x%x\012\000" -.LC49: - .ascii "BUF.plane = 0x%x\012\000" -.LC50: - .ascii "BUF.id = 0x%x\012\000" -.LC51: - .ascii "BUF.mode = 0x%x\012\000" -.LC52: - .ascii "BUF.a_pages = 0x%x\012\000" -.LC53: - .ascii "BUF VPC = 0x%x\012\000" -.LC54: - .ascii "TMP.page = 0x%x\012\000" -.LC55: - .ascii "TMP.plane = 0x%x\012\000" -.LC56: - .ascii "TMP.id = 0x%x\012\000" -.LC57: - .ascii "TMP.mode = 0x%x\012\000" -.LC58: - .ascii "TMP.a_pages = 0x%x\012\000" -.LC59: - .ascii "GC.page = 0x%x\012\000" -.LC60: - .ascii "GC.plane = 0x%x\012\000" -.LC61: - .ascii "GC.id = 0x%x\012\000" -.LC62: - .ascii "GC.mode = 0x%x\012\000" -.LC63: - .ascii "GC.a_pages = 0x%x\012\000" -.LC64: - .ascii "WR_CHK = 0x%x %x %x %x\012\000" -.LC65: - .ascii "Read Err = 0x%x\012\000" -.LC66: - .ascii "Prog Err = 0x%x\012\000" -.LC67: - .ascii "gc_free_blk_th= 0x%x\012\000" -.LC68: - .ascii "gc_merge_free_blk_th= 0x%x\012\000" -.LC69: - .ascii "gc_skip_write_count= 0x%x\012\000" -.LC70: - .ascii "gc_blk_index= 0x%x\012\000" -.LC71: - .ascii "free min EC= 0x%x\012\000" -.LC72: - .ascii "free max EC= 0x%x\012\000" -.LC73: - .ascii "GC__SB VPC = 0x%x\012\000" -.LC74: - .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" -.LC75: - .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" -.LC76: - .ascii "%s\012\000" -.LC77: - .ascii "FTL version: 5.0.63 20200923\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 error allocating memory. return -1\012\000" -.LC82: - .ascii "%s %p:0x%x:\000" -.LC83: - .ascii "%x \000" -.LC84: - .ascii "\000" -.LC85: - .ascii "otp error! %d\000" -.LC86: - .ascii "rr\000" -.LC87: - .ascii "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012" - .ascii "\000" -.LC88: - .ascii "nandc:\000" -.LC89: - .ascii "%d flReg.d32=%x %x\012\000" -.LC90: - .ascii "sdr read ok %x ecc=%d\012\000" -.LC91: - .ascii "sync para %d\012\000" -.LC92: - .ascii "TOG mode Read error %x %x\012\000" -.LC93: - .ascii "read retry status %x %x %x\012\000" -.LC94: - .ascii "micron RR %d row=%x,count %d,status=%d\012\000" -.LC95: - .ascii "samsung RR %d row=%x,count %d,status=%d\012\000" -.LC96: - .ascii "ECC:%d\012\000" -.LC97: - .ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000" -.LC98: - .ascii "FlashLoadPhyInfo fail %x!!\012\000" -.LC99: - .ascii "Read pageadd=%x ecc=%x err=%x\012\000" -.LC100: - .ascii "data:\000" -.LC101: - .ascii "spare:\000" -.LC102: - .ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000" -.LC103: - .ascii "FLFB:%d %d\012\000" -.LC104: - .ascii "prog error: = %x\012\000" -.LC105: - .ascii "prog read error: = %x\012\000" -.LC106: - .ascii "prog read REFRESH: = %x\012\000" -.LC107: - .ascii "prog read s error: = %x %x %x\012\000" -.LC108: - .ascii "prog read d error: = %x %x %x\012\000" -.LC109: - .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\012" - .ascii "\000" -.LC110: - .ascii "...%s enter...\012\000" -.LC111: - .ascii "superBlkID = %x vpc=%x\012\000" -.LC112: - .ascii "flashmode = %x pagenum = %x %x\012\000" -.LC113: - .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" -.LC114: - .ascii "blk = %x vpc=%x mode = %x\012\000" -.LC115: - .ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " - .ascii "%x\012\000" -.LC116: - .ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " - .ascii "%x\012\000" -.LC117: - .ascii "ftl_scan_all_ppa blk %x page %x flag: %x\012\000" -.LC118: - .ascii "ftl_scan_all_ppa blk %x page %x flag: %x .........." - .ascii "..... is bad block\012\000" -.LC119: - .ascii "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" -.LC120: - .ascii "%s finished\012\000" -.LC121: - .ascii "FlashMakeFactorBbt %d\012\000" -.LC122: - .ascii "bad block:%d %d\012\000" -.LC123: - .ascii "FMFB:%d %d\012\000" -.LC124: - .ascii "E:bad block:%d\012\000" -.LC125: - .ascii "FMFB:Save %d %d\012\000" -.LC126: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" -.LC127: - .ascii "FtlBbmTblFlush error:%x\012\000" -.LC128: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" -.LC129: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" -.LC130: - .ascii "decrement_vpc_count %x = %d\012\000" -.LC131: - .ascii "decrement_vpc_count %x = %d in free list\012\000" -.LC132: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" -.LC133: - .ascii "page map lost: %x %x\012\000" -.LC134: - .ascii "FtlMapWritePage error = %x\012\000" -.LC135: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" -.LC136: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" -.LC137: - .ascii "no ect\000" -.LC138: - .ascii "slc mode\000" -.LC139: - .ascii "BBT:\000" -.LC140: - .ascii "region_id = %x phyAddr = %x\012\000" -.LC141: - .ascii "map_ppn:\000" -.LC142: - .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" -.LC143: - .ascii "FtlCheckVpc2 %x = %x %x\012\000" -.LC144: - .ascii "free blk vpc error %x = %x %x\012\000" -.LC145: - .ascii "error_flag %x\012\000" -.LC146: - .ascii "Ftlscanalldata = %x\012\000" -.LC147: - .ascii "scan lpa = %x ppa= %x\012\000" -.LC148: - .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" -.LC149: - .ascii "RSB refresh addr %x\012\000" -.LC150: - .ascii "spuer block %x vpn is 0\012 \000" -.LC151: - .ascii "g_recovery_ppa %x ver %x\012 \000" -.LC152: - .ascii "FtlCheckVpc %x = %x %x\012\000" -.LC153: - .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" -.LC154: - .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" -.LC155: - .ascii "GC des block %x done\012\000" -.LC156: - .ascii "too many bad block = %d %d\012\000" -.LC157: - .ascii "%d GC datablk = %x vpc %x %x\012\000" -.LC158: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" -.LC159: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" -.LC160: - .ascii "rk_ftl_de_init %x\012\000" -.LC161: - .ascii "...%s: no bad block mapping table, format device\012" - .ascii "\000" -.LC162: - .ascii "...%s FtlSysBlkInit error ,format device!\012\000" -.LC163: - .ascii "FtlInit %x\012\000" -.LC164: - .ascii "fix power lost blk = %x vpc=%x\012\000" -.LC165: - .ascii "erase power lost blk = %x vpc=%x\012\000" -.LC166: - .ascii "FtlWrite: lpa error:%x %x\012\000" -.LC167: - .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012" - .ascii "\000" -.LC168: - .ascii ":\000" -.LC169: - .ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" -.LC170: - .ascii "Mblk:\000" -.LC171: - .ascii "L2P:\000" -.LC172: - .ascii "L2PC:\000" -.LC173: - .ascii "write_idblock fix data %x %x\012\000" -.LC174: - .ascii "idblk:\000" -.LC175: - .ascii "idb reverse %x %x\012\000" -.LC176: - .ascii "write_idblock totle_sec %x %x %x %x\012\000" -.LC177: - .ascii "IDBlockWriteData %x %x\012\000" -.LC178: - .ascii "IDBlockWriteData %x %x ret= %x\012\000" -.LC179: - .ascii "IdBlockReadData %x %x\012\000" -.LC180: - .ascii "IdBlockReadData %x %x ret= %x\012\000" -.LC181: - .ascii "write and check error:%d idb=%x,offset=%x,r=%x,w=%x" - .ascii "\012\000" -.LC182: - .ascii "write\000" -.LC183: - .ascii "read\000" -.LC184: - .ascii "write_idblock error %d\012\000" -.LC185: - .ascii "wl_lba %p %x %x %x\012\000" -.LC186: - .ascii "RKNAND_GET_DRM_KEY\012\000" -.LC187: - .ascii "rk_copy_from_user error\012\000" -.LC188: - .ascii "RKNAND_STORE_DRM_KEY\012\000" -.LC189: - .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" -.LC190: - .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" -.LC191: - .ascii "RKNAND_GET_SN_SECTOR\012\000" -.LC192: - .ascii "RKNAND_LOADER_UNLOCK\012\000" -.LC193: - .ascii "RKNAND_LOADER_STATUS\012\000" -.LC194: - .ascii "RKNAND_LOADER_LOCK\012\000" -.LC195: - .ascii "LockKey not match %d\012\000" -.LC196: - .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" -.LC197: - .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" -.LC198: - .ascii "return ret = %lx\012\000" -.LC199: - .ascii "secureBootEn check error\012\000" -.LC200: - .ascii "\0013vendor storage %x,%x,%x\012\000" .data .align 2 -.LANCHOR1 = . + 0 + .set .LANCHOR1,. + 0 .type random_seed, %object .size random_seed, 256 random_seed: @@ -26018,7 +26129,6 @@ .byte 126 .byte 124 .byte 0 - .space 3 .type Toshiba15RefValue, %object .size Toshiba15RefValue, 95 Toshiba15RefValue: @@ -26117,7 +26227,6 @@ .byte 116 .byte 114 .byte 0 - .space 1 .type ToshibaRefValue, %object .size ToshibaRefValue, 8 ToshibaRefValue: @@ -28614,9 +28723,16 @@ .word 1 .bss .align 2 -.LANCHOR0 = . + 0 -.LANCHOR2 = . + 8184 -.LANCHOR4 = . + 16368 + .set .LANCHOR0,. + 0 + .set .LANCHOR2,. + 8184 + .type gNandChipMap, %object + .size gNandChipMap, 32 +gNandChipMap: + .space 32 + .type p_blk_mode_table, %object + .size p_blk_mode_table, 4 +p_blk_mode_table: + .space 4 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -28635,10 +28751,6 @@ gNandRandomizer: .space 1 .space 3 - .type gNandChipMap, %object - .size gNandChipMap, 32 -gNandChipMap: - .space 32 .type gpNandParaInfo, %object .size gpNandParaInfo, 4 gpNandParaInfo: @@ -28647,6 +28759,15 @@ .size gNandOptPara, 32 gNandOptPara: .space 32 + .type g_retryMode, %object + .size g_retryMode, 1 +g_retryMode: + .space 1 + .type g_maxRegNum, %object + .size g_maxRegNum, 1 +g_maxRegNum: + .space 1 + .space 2 .type gpNandc, %object .size gpNandc, 4 gpNandc: @@ -28704,19 +28825,10 @@ .size FlashWaitBusyScheduleEn, 4 FlashWaitBusyScheduleEn: .space 4 - .type g_retryMode, %object - .size g_retryMode, 1 -g_retryMode: - .space 1 - .type g_maxRegNum, %object - .size g_maxRegNum, 1 -g_maxRegNum: - .space 1 .type gReadRetryInfo, %object .size gReadRetryInfo, 852 gReadRetryInfo: .space 852 - .space 2 .type read_retry_cur_offset, %object .size read_retry_cur_offset, 4 read_retry_cur_offset: @@ -28838,7 +28950,6 @@ .size c_ftl_nand_planes_per_die, 2 c_ftl_nand_planes_per_die: .space 2 - .space 2 .type p_plane_order_table, %object .size p_plane_order_table, 32 p_plane_order_table: @@ -28890,6 +29001,7 @@ .type c_ftl_nand_reserved_blks, %object .size c_ftl_nand_reserved_blks, 2 c_ftl_nand_reserved_blks: + .space 2 .space 2 .type DeviceCapacity, %object .size DeviceCapacity, 4 @@ -29038,10 +29150,6 @@ .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_totle_read_page_count, %object .size g_totle_read_page_count, 4 g_totle_read_page_count: @@ -29115,14 +29223,14 @@ .size g_gc_superblock, 48 g_gc_superblock: .space 48 - .type g_all_blk_used_slc_mode, %object - .size g_all_blk_used_slc_mode, 4 -g_all_blk_used_slc_mode: - .space 4 .type g_sys_ext_data, %object .size g_sys_ext_data, 512 g_sys_ext_data: .space 512 + .type g_all_blk_used_slc_mode, %object + .size g_all_blk_used_slc_mode, 4 +g_all_blk_used_slc_mode: + .space 4 .type g_gc_free_blk_threshold, %object .size g_gc_free_blk_threshold, 2 g_gc_free_blk_threshold: @@ -29404,6 +29512,14 @@ .size RK29_NANDC_REG_BASE, 4 RK29_NANDC_REG_BASE: .space 4 + .type ftl_dma32_buffer_size, %object + .size ftl_dma32_buffer_size, 4 +ftl_dma32_buffer_size: + .space 4 + .type ftl_dma32_buffer, %object + .size ftl_dma32_buffer, 4 +ftl_dma32_buffer: + .space 4 .type gFlashPageBuffer0, %object .size gFlashPageBuffer0, 4 gFlashPageBuffer0: @@ -29465,11 +29581,11 @@ .size gMultiPageReadEn, 1 gMultiPageReadEn: .space 1 - .space 2 .type FbbtBlk, %object .size FbbtBlk, 16 FbbtBlk: .space 16 + .space 2 .type req_sys, %object .size req_sys, 36 req_sys: @@ -29486,11 +29602,6 @@ .size g_ect_tbl_power_up_flush, 2 g_ect_tbl_power_up_flush: .space 2 - .space 2 - .type check_valid_page_count_table, %object - .size check_valid_page_count_table, 8192 -check_valid_page_count_table: - .space 8192 .type g_power_lost_ecc_error_blk, %object .size g_power_lost_ecc_error_blk, 2 g_power_lost_ecc_error_blk: @@ -29498,6 +29609,7 @@ .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: + .space 2 .space 2 .type g_recovery_page_num, %object .size g_recovery_page_num, 4 @@ -29601,6 +29713,10 @@ .size g_vendor, 4 g_vendor: .space 4 + .type check_valid_page_count_table, %object + .size check_valid_page_count_table, 8192 +check_valid_page_count_table: + .space 8192 .type g_gc_refresh_block_temp_tbl, %object .size g_gc_refresh_block_temp_tbl, 34 g_gc_refresh_block_temp_tbl: @@ -29630,3 +29746,419 @@ .size gFlashSdrModeEn, 1 gFlashSdrModeEn: .space 1 + .section .rodata.str1.1,"aMS",%progbits,1 +.LC1: + .ascii "FlashEraseBlocks pageAddr error %x\012\000" +.LC2: + .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" + .ascii "\000" +.LC3: + .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" +.LC4: + .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" + .ascii "\000" +.LC5: + .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" +.LC6: + .ascii "FLASH INFO:\012\000" +.LC7: + .ascii "FLASH ID: %x\012\000" +.LC8: + .ascii "Device Capacity: %d MB\012\000" +.LC9: + .ascii "FMWAIT: %x %x %x %x\012\000" +.LC10: + .ascii "FTL INFO:\012\000" +.LC11: + .ascii "g_MaxLpn = 0x%x\012\000" +.LC12: + .ascii "g_VaildLpn = 0x%x\012\000" +.LC13: + .ascii "read_page_count = 0x%x\012\000" +.LC14: + .ascii "discard_page_count = 0x%x\012\000" +.LC15: + .ascii "write_page_count = 0x%x\012\000" +.LC16: + .ascii "cache_write_count = 0x%x\012\000" +.LC17: + .ascii "l2p_write_count = 0x%x\012\000" +.LC18: + .ascii "gc_page_count = 0x%x\012\000" +.LC19: + .ascii "totle_write = %d MB\012\000" +.LC20: + .ascii "totle_read = %d MB\012\000" +.LC21: + .ascii "GSV = 0x%x\012\000" +.LC22: + .ascii "GDV = 0x%x\012\000" +.LC23: + .ascii "bad blk num = %d %d\012\000" +.LC24: + .ascii "free_superblocks = 0x%x\012\000" +.LC25: + .ascii "mlc_EC = 0x%x\012\000" +.LC26: + .ascii "slc_EC = 0x%x\012\000" +.LC27: + .ascii "avg_EC = 0x%x\012\000" +.LC28: + .ascii "sys_EC = 0x%x\012\000" +.LC29: + .ascii "max_EC = 0x%x\012\000" +.LC30: + .ascii "min_EC = 0x%x\012\000" +.LC31: + .ascii "PLT = 0x%x\012\000" +.LC32: + .ascii "POT = 0x%x\012\000" +.LC33: + .ascii "MaxSector = 0x%x\012\000" +.LC34: + .ascii "init_sys_blks_pp = 0x%x\012\000" +.LC35: + .ascii "sys_blks_pp = 0x%x\012\000" +.LC36: + .ascii "free sysblock = 0x%x\012\000" +.LC37: + .ascii "data_blks_pp = 0x%x\012\000" +.LC38: + .ascii "data_op_blks_pp = 0x%x\012\000" +.LC39: + .ascii "max_data_blks = 0x%x\012\000" +.LC40: + .ascii "Sys.id = 0x%x\012\000" +.LC41: + .ascii "Bbt.id = 0x%x\012\000" +.LC42: + .ascii "ACT.page = 0x%x\012\000" +.LC43: + .ascii "ACT.plane = 0x%x\012\000" +.LC44: + .ascii "ACT.id = 0x%x\012\000" +.LC45: + .ascii "ACT.mode = 0x%x\012\000" +.LC46: + .ascii "ACT.a_pages = 0x%x\012\000" +.LC47: + .ascii "ACT VPC = 0x%x\012\000" +.LC48: + .ascii "BUF.page = 0x%x\012\000" +.LC49: + .ascii "BUF.plane = 0x%x\012\000" +.LC50: + .ascii "BUF.id = 0x%x\012\000" +.LC51: + .ascii "BUF.mode = 0x%x\012\000" +.LC52: + .ascii "BUF.a_pages = 0x%x\012\000" +.LC53: + .ascii "BUF VPC = 0x%x\012\000" +.LC54: + .ascii "TMP.page = 0x%x\012\000" +.LC55: + .ascii "TMP.plane = 0x%x\012\000" +.LC56: + .ascii "TMP.id = 0x%x\012\000" +.LC57: + .ascii "TMP.mode = 0x%x\012\000" +.LC58: + .ascii "TMP.a_pages = 0x%x\012\000" +.LC59: + .ascii "GC.page = 0x%x\012\000" +.LC60: + .ascii "GC.plane = 0x%x\012\000" +.LC61: + .ascii "GC.id = 0x%x\012\000" +.LC62: + .ascii "GC.mode = 0x%x\012\000" +.LC63: + .ascii "GC.a_pages = 0x%x\012\000" +.LC64: + .ascii "WR_CHK = 0x%x %x %x %x\012\000" +.LC65: + .ascii "Read Err = 0x%x\012\000" +.LC66: + .ascii "Prog Err = 0x%x\012\000" +.LC67: + .ascii "gc_free_blk_th= 0x%x\012\000" +.LC68: + .ascii "gc_merge_free_blk_th= 0x%x\012\000" +.LC69: + .ascii "gc_skip_write_count= 0x%x\012\000" +.LC70: + .ascii "gc_blk_index= 0x%x\012\000" +.LC71: + .ascii "free min EC= 0x%x\012\000" +.LC72: + .ascii "free max EC= 0x%x\012\000" +.LC73: + .ascii "GC__SB VPC = 0x%x\012\000" +.LC74: + .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" +.LC75: + .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" +.LC76: + .ascii "FTL version: 5.0.63 20210616\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 error allocating memory. return -1\012\000" +.LC82: + .ascii "%s %p:0x%x:\000" +.LC83: + .ascii "%x \000" +.LC84: + .ascii "\000" +.LC85: + .ascii "otp error! %d\000" +.LC86: + .ascii "rr\000" +.LC87: + .ascii "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012" + .ascii "\000" +.LC88: + .ascii "nandc:\000" +.LC89: + .ascii "%d flReg.d32=%x %x\012\000" +.LC90: + .ascii "sdr read ok %x ecc=%d\012\000" +.LC91: + .ascii "sync para %d\012\000" +.LC92: + .ascii "TOG mode Read error %x %x\012\000" +.LC93: + .ascii "read retry status %x %x %x\012\000" +.LC94: + .ascii "micron RR %d row=%x,count %d,status=%d\012\000" +.LC95: + .ascii "samsung RR %d row=%x,count %d,status=%d\012\000" +.LC96: + .ascii "ECC:%d\012\000" +.LC97: + .ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000" +.LC98: + .ascii "FlashLoadPhyInfo fail %x!!\012\000" +.LC99: + .ascii "Read pageadd=%x ecc=%x err=%x\012\000" +.LC100: + .ascii "data:\000" +.LC101: + .ascii "spare:\000" +.LC102: + .ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000" +.LC103: + .ascii "FLFB:%d %d\012\000" +.LC104: + .ascii "prog error: = %x\012\000" +.LC105: + .ascii "prog read error: = %x\012\000" +.LC106: + .ascii "prog read REFRESH: = %x\012\000" +.LC107: + .ascii "prog read s error: = %x %x %x\012\000" +.LC108: + .ascii "prog read d error: = %x %x %x\012\000" +.LC109: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\012" + .ascii "\000" +.LC110: + .ascii "...%s enter...\012\000" +.LC111: + .ascii "superBlkID = %x vpc=%x\012\000" +.LC112: + .ascii "flashmode = %x pagenum = %x %x\012\000" +.LC113: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC114: + .ascii "blk = %x vpc=%x mode = %x\012\000" +.LC115: + .ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" +.LC116: + .ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" +.LC117: + .ascii "ftl_scan_all_ppa blk %x page %x flag: %x\012\000" +.LC118: + .ascii "ftl_scan_all_ppa blk %x page %x flag: %x .........." + .ascii "..... is bad block\012\000" +.LC119: + .ascii "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC120: + .ascii "%s finished\012\000" +.LC121: + .ascii "FlashMakeFactorBbt %d\012\000" +.LC122: + .ascii "bad block:%d %d\012\000" +.LC123: + .ascii "FMFB:%d %d\012\000" +.LC124: + .ascii "E:bad block:%d\012\000" +.LC125: + .ascii "FMFB:Save %d %d\012\000" +.LC126: + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" +.LC127: + .ascii "FtlBbmTblFlush error:%x\012\000" +.LC128: + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" +.LC129: + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" +.LC130: + .ascii "decrement_vpc_count %x = %d\012\000" +.LC131: + .ascii "decrement_vpc_count %x = %d in free list\012\000" +.LC132: + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" +.LC133: + .ascii "page map lost: %x %x\012\000" +.LC134: + .ascii "FtlMapWritePage error = %x\012\000" +.LC135: + .ascii "FtlMapWritePage error = %x error count = %d\012\000" +.LC136: + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" +.LC137: + .ascii "no ect\000" +.LC138: + .ascii "slc mode\000" +.LC139: + .ascii "BBT:\000" +.LC140: + .ascii "region_id = %x phyAddr = %x\012\000" +.LC141: + .ascii "map_ppn:\000" +.LC142: + .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" +.LC143: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" +.LC144: + .ascii "free blk vpc error %x = %x %x\012\000" +.LC145: + .ascii "error_flag %x\012\000" +.LC146: + .ascii "Ftlscanalldata = %x\012\000" +.LC147: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC148: + .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC149: + .ascii "RSB refresh addr %x\012\000" +.LC150: + .ascii "spuer block %x vpn is 0\012 \000" +.LC151: + .ascii "g_recovery_ppa %x ver %x\012 \000" +.LC152: + .ascii "FtlCheckVpc %x = %x %x\012\000" +.LC153: + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" +.LC154: + .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" +.LC155: + .ascii "GC des block %x done\012\000" +.LC156: + .ascii "too many bad block = %d %d\012\000" +.LC157: + .ascii "%d GC datablk = %x vpc %x %x\012\000" +.LC158: + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" +.LC159: + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" +.LC160: + .ascii "rk_ftl_de_init %x\012\000" +.LC161: + .ascii "...%s: no bad block mapping table, format device\012" + .ascii "\000" +.LC162: + .ascii "...%s FtlSysBlkInit error ,format device!\012\000" +.LC163: + .ascii "FtlInit %x\012\000" +.LC164: + .ascii "fix power lost blk = %x vpc=%x\012\000" +.LC165: + .ascii "erase power lost blk = %x vpc=%x\012\000" +.LC166: + .ascii "FtlWrite: lpa error:%x %x\012\000" +.LC167: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012" + .ascii "\000" +.LC168: + .ascii ":\000" +.LC169: + .ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC170: + .ascii "Mblk:\000" +.LC171: + .ascii "L2P:\000" +.LC172: + .ascii "L2PC:\000" +.LC173: + .ascii "write_idblock fix data %x %x\012\000" +.LC174: + .ascii "idblk:\000" +.LC175: + .ascii "idb reverse %x %x\012\000" +.LC176: + .ascii "write_idblock totle_sec %x %x %x %x\012\000" +.LC177: + .ascii "IDBlockWriteData %x %x\012\000" +.LC178: + .ascii "IDBlockWriteData %x %x ret= %x\012\000" +.LC179: + .ascii "IdBlockReadData %x %x\012\000" +.LC180: + .ascii "IdBlockReadData %x %x ret= %x\012\000" +.LC181: + .ascii "write and check error:%d idb=%x,offset=%x,r=%x,w=%x" + .ascii "\012\000" +.LC182: + .ascii "write\000" +.LC183: + .ascii "read\000" +.LC184: + .ascii "write_idblock error %d\012\000" +.LC185: + .ascii "wl_lba %p %x %x %x\012\000" +.LC186: + .ascii "RKNAND_GET_DRM_KEY\012\000" +.LC187: + .ascii "rk_copy_from_user error\012\000" +.LC188: + .ascii "RKNAND_STORE_DRM_KEY\012\000" +.LC189: + .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" +.LC190: + .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" +.LC191: + .ascii "RKNAND_GET_SN_SECTOR\012\000" +.LC192: + .ascii "RKNAND_LOADER_UNLOCK\012\000" +.LC193: + .ascii "RKNAND_LOADER_STATUS\012\000" +.LC194: + .ascii "RKNAND_LOADER_LOCK\012\000" +.LC195: + .ascii "LockKey not match %d\012\000" +.LC196: + .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" +.LC197: + .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" +.LC198: + .ascii "return ret = %lx\012\000" +.LC199: + .ascii "secureBootEn check error\012\000" +.LC200: + .ascii "\0013vendor storage %x,%x,%x\012\000" -- Gitblit v1.6.2