From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Tue, 20 Feb 2024 01:20:52 +0000 Subject: [PATCH] add new system file --- kernel/drivers/rk_nand/rk_ftl_arm_v7_thumb.S | 33029 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 16,663 insertions(+), 16,366 deletions(-) diff --git a/kernel/drivers/rk_nand/rk_ftl_arm_v7_thumb.S b/kernel/drivers/rk_nand/rk_ftl_arm_v7_thumb.S index af0eb25..4cf752e 100644 --- a/kernel/drivers/rk_nand/rk_ftl_arm_v7_thumb.S +++ b/kernel/drivers/rk_nand/rk_ftl_arm_v7_thumb.S @@ -5,11 +5,10 @@ * 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 */ .syntax unified .arch armv7-a - .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 @@ -18,148 +17,250 @@ .eabi_attribute 26, 2 .eabi_attribute 30, 4 .eabi_attribute 34, 1 - .eabi_attribute 18, 2 - .thumb - .file "rk_ftl_arm_v7.S" -#APP - .syntax unified + .file "rk_ftl_arm_v7.c" .thumb .text .align 1 - .global FlashMemCmp8 .thumb .thumb_func + .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 + addw r0, r0, #999 + umull r0, r1, r0, r3 + ldr r3, .L2+4 + ldr r3, [r3, #8] + lsrs r0, r1, #6 + bx r3 @ indirect register sibling call +.L3: + .align 2 +.L2: + .word 274877907 + .word arm_delay_ops + .fnend + .size ndelay, .-ndelay + .align 1 + .syntax unified + .thumb + .thumb_func + .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, .L5 + push {r4, lr} + .save {r4, lr} + ldr r4, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + movs r0, #80 + ldrb r3, [r3, #4] @ zero_extendqisi2 + add r4, r4, r3, lsl #8 + movs 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 + it cc + movcc r0, r3 + ldr r3, [r4, #2048] + and r3, r3, #15 + cmp r3, r0 + it cc + movcc r3, r0 + ldr r0, [r4, #2048] + and r0, r0, #15 + cmp r0, r3 + it cc + movcc r0, r3 + pop {r4, pc} +.L6: + .align 2 +.L5: + .word .LANCHOR0 + .fnend + .size flash_read_ecc, .-flash_read_ecc + .align 1 + .syntax unified + .thumb + .thumb_func + .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, .L8 + lsrs r1, r0, #5 + and r0, r0, #31 + ldr r2, [r3, #32] + movs r3, #1 + lsl r0, r3, r0 + ldr r3, [r2, r1, lsl #2] + orrs r3, r3, r0 + str r3, [r2, r1, lsl #2] + bx lr +.L9: + .align 2 +.L8: + .word .LANCHOR0 + .fnend + .size ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9 + .align 1 + .global FlashMemCmp8 + .syntax unified + .thumb + .thumb_func + .fpu softvfp .type FlashMemCmp8, %function FlashMemCmp8: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L10 + ldr r3, .L18 push {r4, r5, lr} .save {r4, r5, lr} - ldrb r3, [r3] @ zero_extendqisi2 - cbz r3, .L4 + ldrb r3, [r3, #36] @ zero_extendqisi2 + cbz r3, .L13 ldrb r4, [r0, #1] @ zero_extendqisi2 ldrb r3, [r1, #1] @ zero_extendqisi2 cmp r4, r3 - beq .L8 + beq .L17 movs r3, #0 -.L4: +.L13: cmp r3, r2 - beq .L8 + bne .L15 +.L17: + movs r0, #0 + pop {r4, r5, pc} +.L15: ldrb r5, [r0, r3] @ zero_extendqisi2 ldrb r4, [r1, r3] @ zero_extendqisi2 adds r3, r3, #1 cmp r5, r4 - beq .L4 + beq .L13 mov r0, r3 pop {r4, r5, pc} -.L8: - movs r0, #0 - pop {r4, r5, pc} -.L11: +.L19: .align 2 -.L10: +.L18: .word .LANCHOR0 .fnend .size FlashMemCmp8, .-FlashMemCmp8 .align 1 .global FlashRsvdBlkChk + .syntax unified .thumb .thumb_func + .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, .L15 - ldrb r2, [r3, #1] @ zero_extendqisi2 - ldr r3, [r3, #4] - muls r3, r2, r3 - cmp r1, r3 - bcs .L14 + ldr r2, .L23 + push {r4, lr} + .save {r4, lr} + ldrb r4, [r2, #37] @ zero_extendqisi2 + ldr r3, [r2, #40] + muls r3, r4, r3 + cmp r3, r1 + bls .L22 adds r0, r0, #0 it ne movne r0, #1 - bx lr -.L14: + pop {r4, pc} +.L22: movs r0, #1 - bx lr -.L16: + pop {r4, pc} +.L24: .align 2 -.L15: +.L23: .word .LANCHOR0 .fnend .size FlashRsvdBlkChk, .-FlashRsvdBlkChk .align 1 .global FlashGetRandomizer + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashGetRandomizer, %function FlashGetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L25 + ldr r3, .L33 and r2, r1, #127 push {r4, lr} .save {r4, lr} ldrh r4, [r3, r2, lsl #1] - ldr r3, .L25+4 - ldrb r3, [r3, #8] @ zero_extendqisi2 - cbz r3, .L18 + ldr r3, .L33+4 + ldrb r3, [r3, #44] @ zero_extendqisi2 + cbz r3, .L25 bl FlashRsvdBlkChk - cbz r0, .L18 + cbz r0, .L25 orr r4, r4, #-1073741824 -.L18: +.L25: mov r0, r4 pop {r4, pc} -.L26: +.L34: .align 2 -.L25: +.L33: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashGetRandomizer, .-FlashGetRandomizer .align 1 .global FlashSetRandomizer + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashSetRandomizer, %function FlashSetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L35 - and r2, r1, #127 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} + and r2, r1, #127 + ldr r3, .L43 mov r6, r0 + ldr r4, .L43+4 ldrh r5, [r3, r2, lsl #1] - ldr r3, .L35+4 - ldrb r2, [r3, #8] @ zero_extendqisi2 - mov r4, r3 - cbz r2, .L28 + ldrb r2, [r4, #44] @ zero_extendqisi2 + cbz r2, .L36 bl FlashRsvdBlkChk - cbz r0, .L28 + cbz r0, .L36 orr r5, r5, #-1073741824 -.L28: - add r4, r4, r6, lsl #3 - ldr r3, [r4, #12] +.L36: + ldr r3, [r4, r6, lsl #3] str r5, [r3, #336] pop {r4, r5, r6, pc} -.L36: +.L44: .align 2 -.L35: +.L43: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashSetRandomizer, .-FlashSetRandomizer .align 1 .global FlashBlockAlignInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashBlockAlignInit, %function FlashBlockAlignInit: .fnstart @@ -167,57 +268,60 @@ @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. cmp r0, #512 - ldr r3, .L43 - bls .L38 + ldr r3, .L51 + bls .L46 mov r2, #1024 - b .L42 -.L38: +.L50: + str r2, [r3, #40] + bx lr +.L46: cmp r0, #256 - bls .L40 + bls .L48 mov r2, #512 - b .L42 -.L40: + b .L50 +.L48: cmp r0, #128 - bhi .L41 - str r0, [r3, #4] + bhi .L49 + str r0, [r3, #40] bx lr -.L41: +.L49: mov r2, #256 -.L42: - str r2, [r3, #4] - bx lr -.L44: + b .L50 +.L52: .align 2 -.L43: +.L51: .word .LANCHOR0 .fnend .size FlashBlockAlignInit, .-FlashBlockAlignInit .align 1 .global FlashReadCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadCmd, %function FlashReadCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L47 - push {r4, r5, lr} - .save {r4, r5, lr} - add r3, r2, r0, lsl #3 - ldr r2, [r2, #44] - ldr r4, [r3, #12] - ldrb r3, [r3, #16] @ zero_extendqisi2 - ldrb r2, [r2, #7] @ zero_extendqisi2 - lsls r3, r3, #8 - cmp r2, #1 - it eq - addeq r2, r4, r3 - add r3, r3, r4 + @ link register save eliminated. + push {r4, r5} + .save {r4, r5} + ldr r4, .L55 + ldr r3, [r4, r0, lsl #3] + add r2, r4, r0, lsl #3 + ldr r4, [r4, #48] + ldrb r2, [r2, #4] @ zero_extendqisi2 + ldrb r4, [r4, #7] @ zero_extendqisi2 + lsls r2, r2, #8 + cmp r4, #1 itt eq moveq r5, #38 - streq r5, [r2, #2056] - movs r2, #0 + addeq r4, r3, r2 + add r3, r3, r2 + mov r2, #0 + it eq + streq r5, [r4, #2056] str r2, [r3, #2056] str r2, [r3, #2052] str r2, [r3, #2052] @@ -229,37 +333,40 @@ str r2, [r3, #2052] movs r2, #48 str r2, [r3, #2056] - pop {r4, r5, lr} + pop {r4, r5} b FlashSetRandomizer -.L48: +.L56: .align 2 -.L47: +.L55: .word .LANCHOR0 .fnend .size FlashReadCmd, .-FlashReadCmd .align 1 .global FlashReadDpDataOutCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadDpDataOutCmd, %function FlashReadDpDataOutCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + @ link register save eliminated. + push {r4, r5, r6} + .save {r4, r5, r6} uxtb r6, r1 - ldr r4, .L53 + ldr r4, .L61 lsrs r5, r1, #8 - add r3, r4, r0, lsl #3 - ldrb r4, [r4, #64] @ zero_extendqisi2 - ldr r2, [r3, #12] - ldrb r3, [r3, #16] @ zero_extendqisi2 + ldr r3, [r4, r0, lsl #3] + add r2, r4, r0, lsl #3 + ldrb r4, [r4, #68] @ zero_extendqisi2 + ldrb r2, [r2, #4] @ zero_extendqisi2 cmp r4, #1 lsr r4, r1, #16 - lsl r3, r3, #8 + lsl r2, r2, #8 add r3, r3, r2 - bne .L50 + bne .L58 movs r2, #6 str r2, [r3, #2056] movs r2, #0 @@ -268,8 +375,12 @@ str r6, [r3, #2052] str r5, [r3, #2052] str r4, [r3, #2052] - b .L52 -.L50: +.L60: + movs r2, #224 + str r2, [r3, #2056] + pop {r4, r5, r6} + b FlashSetRandomizer +.L58: movs r2, #0 str r2, [r3, #2056] str r2, [r3, #2052] @@ -281,33 +392,32 @@ str r4, [r3, #2056] str r2, [r3, #2052] str r2, [r3, #2052] -.L52: - movs r2, #224 - str r2, [r3, #2056] - pop {r4, r5, r6, lr} - b FlashSetRandomizer -.L54: + b .L60 +.L62: .align 2 -.L53: +.L61: .word .LANCHOR0 .fnend .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 1 .global FlashProgFirstCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashProgFirstCmd, %function FlashProgFirstCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} + @ link register save eliminated. + push {r4, r5} + .save {r4, r5} lsrs r2, r1, #16 - ldr r4, .L56 + ldr r4, .L64 + ldr r3, [r4, r0, lsl #3] add r4, r4, r0, lsl #3 - ldr r3, [r4, #12] - ldrb r4, [r4, #16] @ zero_extendqisi2 + ldrb r4, [r4, #4] @ zero_extendqisi2 add r3, r3, r4, lsl #8 movs r4, #128 str r4, [r3, #2056] @@ -319,18 +429,20 @@ lsrs r4, r1, #8 str r4, [r3, #2052] str r2, [r3, #2052] - pop {r4, lr} + pop {r4, r5} b FlashSetRandomizer -.L57: +.L65: .align 2 -.L56: +.L64: .word .LANCHOR0 .fnend .size FlashProgFirstCmd, .-FlashProgFirstCmd .align 1 .global FlashEraseCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashEraseCmd, %function FlashEraseCmd: .fnstart @@ -338,25 +450,25 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, lr} .save {r4, r5, lr} - ldr r5, .L63 - add r0, r5, r0, lsl #3 - ldrb r3, [r0, #16] @ zero_extendqisi2 - ldr r4, [r0, #12] - lsls r3, r3, #8 - cbz r2, .L59 - adds r2, r4, r3 - movs r0, #96 - str r0, [r2, #2056] - uxtb r0, r1 - str r0, [r2, #2052] - lsrs r0, r1, #8 - str r0, [r2, #2052] - lsrs r0, r1, #16 - str r0, [r2, #2052] - ldr r2, [r5, #4] + ldr r4, .L71 + ldr r3, [r4, r0, lsl #3] + add r0, r4, r0, lsl #3 + ldrb r0, [r0, #4] @ zero_extendqisi2 + lsls r0, r0, #8 + cbz r2, .L67 + adds r2, r3, r0 + movs r5, #96 + str r5, [r2, #2056] + uxtb r5, r1 + str r5, [r2, #2052] + lsrs r5, r1, #8 + str r5, [r2, #2052] + lsrs r5, r1, #16 + str r5, [r2, #2052] + ldr r2, [r4, #40] add r1, r1, r2 -.L59: - add r3, r3, r4 +.L67: + add r3, r3, r0 movs r2, #96 str r2, [r3, #2056] uxtb r2, r1 @@ -364,34 +476,37 @@ lsrs r2, r1, #8 lsrs r1, r1, #16 str r2, [r3, #2052] - str r1, [r3, #2052] movs r2, #208 + str r1, [r3, #2052] str r2, [r3, #2056] pop {r4, r5, pc} -.L64: +.L72: .align 2 -.L63: +.L71: .word .LANCHOR0 .fnend .size FlashEraseCmd, .-FlashEraseCmd .align 1 .global FlashProgDpSecondCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashProgDpSecondCmd, %function FlashProgDpSecondCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, lr} - .save {r4, r5, lr} + @ link register save eliminated. + push {r4, r5, r6} + .save {r4, r5, r6} lsrs r2, r1, #16 - ldr r4, .L66 - add r5, r4, r0, lsl #3 - ldrb r4, [r4, #59] @ zero_extendqisi2 - ldr r3, [r5, #12] - ldrb r5, [r5, #16] @ zero_extendqisi2 - add r3, r3, r5, lsl #8 + ldr r5, .L74 + ldr r3, [r5, r0, lsl #3] + add r4, r5, r0, lsl #3 + ldrb r6, [r4, #4] @ zero_extendqisi2 + ldrb r4, [r5, #63] @ zero_extendqisi2 + add r3, r3, r6, lsl #8 str r4, [r3, #2056] movs r4, #0 str r4, [r3, #2052] @@ -401,18 +516,20 @@ lsrs r4, r1, #8 str r4, [r3, #2052] str r2, [r3, #2052] - pop {r4, r5, lr} + pop {r4, r5, r6} b FlashSetRandomizer -.L67: +.L75: .align 2 -.L66: +.L74: .word .LANCHOR0 .fnend .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd .align 1 .global FlashProgSecondCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashProgSecondCmd, %function FlashProgSecondCmd: .fnstart @@ -420,85 +537,123 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - ldr r3, .L69 - add r0, r3, r0, lsl #3 - ldr r3, .L69+4 - ldr r4, [r0, #12] - ldrb r5, [r0, #16] @ zero_extendqisi2 - ldr r3, [r3, #4] - ldr r0, .L69+8 - blx r3 + ldr r3, .L77 + ldr r4, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + ldr r0, .L77+4 + ldrb r5, [r3, #4] @ zero_extendqisi2 + ldr r3, .L77+8 add r4, r4, r5, lsl #8 + ldr r3, [r3, #4] + blx r3 movs r3, #16 str r3, [r4, #2056] pop {r3, r4, r5, pc} -.L70: +.L78: .align 2 -.L69: +.L77: .word .LANCHOR0 + .word 64424500 .word arm_delay_ops - .word 214748300 .fnend .size FlashProgSecondCmd, .-FlashProgSecondCmd .align 1 .global FlashProgDpFirstCmd + .syntax unified .thumb .thumb_func + .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, .L72 + ldr r2, .L80 + ldr r3, [r2, r0, lsl #3] add r0, r2, r0, lsl #3 - ldrb r2, [r2, #58] @ zero_extendqisi2 - ldrb r1, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] + ldrb r2, [r2, #62] @ zero_extendqisi2 + ldrb r1, [r0, #4] @ zero_extendqisi2 add r3, r3, r1, lsl #8 str r2, [r3, #2056] bx lr -.L73: +.L81: .align 2 -.L72: +.L80: .word .LANCHOR0 .fnend .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 1 - .global js_hash + .global FlashReadStatus + .syntax unified .thumb .thumb_func + .fpu softvfp + .type FlashReadStatus, %function +FlashReadStatus: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + movs r2, #112 + ldr r3, .L83 + ldr r5, [r3, r0, lsl #3] + add r3, r3, r0, lsl #3 + movs r0, #80 + ldrb r4, [r3, #4] @ zero_extendqisi2 + add r3, r5, r4, lsl #8 + adds r4, r4, #8 + lsls r4, r4, #8 + str r2, [r3, #2056] + bl ndelay + ldr r0, [r5, r4] + pop {r3, r4, r5, pc} +.L84: + .align 2 +.L83: + .word .LANCHOR0 + .fnend + .size FlashReadStatus, .-FlashReadStatus + .align 1 + .global js_hash + .syntax unified + .thumb + .thumb_func + .fpu softvfp .type js_hash, %function js_hash: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L78 + ldr r3, .L88 add r1, r1, r0 push {r4, lr} .save {r4, lr} -.L75: +.L86: cmp r0, r1 - beq .L77 - lsls r2, r3, #5 - ldrb r4, [r0], #1 @ zero_extendqisi2 - add r2, r2, r3, lsr #2 - add r2, r2, r4 - eors r3, r3, r2 - b .L75 -.L77: + bne .L87 mov r0, r3 pop {r4, pc} -.L79: +.L87: + lsrs r2, r3, #2 + ldrb r4, [r0], #1 @ zero_extendqisi2 + add r2, r2, r3, lsl #5 + add r2, r2, r4 + eors r3, r3, r2 + b .L86 +.L89: .align 2 -.L78: +.L88: .word 1204201446 .fnend .size js_hash, .-js_hash .align 1 .global FlashLoadIdbInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashLoadIdbInfo, %function FlashLoadIdbInfo: .fnstart @@ -511,8 +666,10 @@ .size FlashLoadIdbInfo, .-FlashLoadIdbInfo .align 1 .global FlashPrintInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashPrintInfo, %function FlashPrintInfo: .fnstart @@ -523,45 +680,156 @@ .fnend .size FlashPrintInfo, .-FlashPrintInfo .align 1 - .global ftl_flash_suspend + .global ToshibaSetRRPara + .syntax unified .thumb .thumb_func + .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 r8, r1, r1, lsl #2 + ldr r9, .L100+8 + mov r5, r0 + mov r6, r1 + movs r4, #0 + ldr r7, .L100 + add r10, r9, #256 +.L93: + ldrb r3, [r7, #85] @ zero_extendqisi2 + cmp r4, r3 + bcc .L97 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L97: + movs r3, #85 + movs r0, #200 + str r3, [r5, #8] + ldrsb r3, [r4, r10] + str r3, [r5, #4] + bl ndelay + ldrb r3, [r7, #84] @ zero_extendqisi2 + cmp r3, #34 + bne .L94 + add r3, r4, r8 + add r3, r3, r10 +.L99: + ldrsb r3, [r3, #5] +.L98: + str r3, [r5] + adds r4, r4, #1 + b .L93 +.L94: + cmp r3, #35 + bne .L96 + ldr r2, .L100+4 + add r3, r4, r8 + add r3, r3, r2 + b .L99 +.L96: + add r3, r9, r6 + ldrsb r3, [r3, #396] + b .L98 +.L101: + .align 2 +.L100: + .word .LANCHOR0 + .word .LANCHOR1+301 + .word .LANCHOR1 + .fnend + .size ToshibaSetRRPara, .-ToshibaSetRRPara + .align 1 + .global SamsungSetRRPara + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type SamsungSetRRPara, %function +SamsungSetRRPara: + .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} + movs r4, #0 + ldr r7, .L105 + mov r6, r0 + mov r9, #161 + mov r10, r4 + ldr r8, .L105+4 + add r1, r7, r1, lsl #2 + adds r5, r1, #3 +.L103: + ldrb r3, [r8, #85] @ zero_extendqisi2 + cmp r4, r3 + bcc .L104 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L104: + str r9, [r6, #8] + mov r0, #300 + str r10, [r6] + ldrsb r3, [r7, r4] + adds r4, r4, #1 + str r3, [r6] + ldrsb r3, [r5, #1]! + str r3, [r6] + bl ndelay + b .L103 +.L106: + .align 2 +.L105: + .word .LANCHOR1+404 + .word .LANCHOR0 + .fnend + .size SamsungSetRRPara, .-SamsungSetRRPara + .align 1 + .global ftl_flash_suspend + .syntax unified + .thumb + .thumb_func + .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, .L83 - ldr r2, [r3, #80] + ldr r3, .L108 + 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 -.L84: +.L109: .align 2 -.L83: +.L108: .word .LANCHOR0 .fnend .size ftl_flash_suspend, .-ftl_flash_suspend .global __aeabi_uidiv + .global __aeabi_uidivmod .align 1 .global LogAddr2PhyAddr + .syntax unified .thumb .thumb_func + .fpu softvfp .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: .fnstart @@ -570,117 +838,221 @@ 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, r0 - ldr r0, .L90 - mov r8, r3 - ldr r4, [r7, #4] - mov r10, r1 mov r9, r2 - ldrh r3, [r0, #130] - bic r4, r4, #-2147483648 - ldrh r5, [r0, #128] - mov r6, r0 - ldrh fp, [r0, #4] - smulbb r5, r5, r3 - ldrb r3, [r0] @ zero_extendqisi2 - cmp r3, #1 - ubfx r3, r4, #10, #16 - it eq - lsleq fp, fp, #1 - str r3, [sp, #4] - mov r0, r3 - uxth r5, r5 - it eq - uxtheq fp, fp - mov r1, r5 - bl __aeabi_uidiv - cmp r10, #1 - ubfx r1, r4, #0, #10 - uxth r0, r0 - ldr r3, [sp, #4] - smulbb r5, r0, r5 - sub r3, r3, r5 + ldr r4, .L115 + 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 - bne .L87 - ldrb r2, [r6, #144] @ zero_extendqisi2 - cbnz r2, .L87 - ldr r2, .L90 - add r1, r2, r1, lsl #1 - ldrh r1, [r1, #148] -.L87: - add r6, r6, r0, lsl #2 - ldr r2, [r6, #1172] - mla fp, fp, r3, r2 + cmp r2, #1 + it eq + lsleq r6, r6, #1 + ubfx r2, r5, #10, #16 + mov r1, r3 + str r3, [sp, #4] + mov r0, r2 + it eq + uxtheq r6, r6 + str r2, [sp] + bl __aeabi_uidiv + 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 .L112 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbnz r3, .L112 + add r0, r4, r0, lsl #1 + ldrh r0, [r0, #156] +.L112: + add r4, r4, r8, lsl #2 + ldr r3, [r4, #1180] + mla r6, r6, r1, r3 ldrb r3, [sp, #48] @ zero_extendqisi2 cmp r3, #1 - add r1, r1, fp - str r1, [r9] - str r0, [r8] - bls .L89 + add r0, r0, r6 + str r0, [r9] + str r8, [fp] + bls .L114 ldr r0, [r7, #4] ldr r3, [r7, #40] add r0, r0, #1024 subs r3, r0, r3 rsbs r0, r3, #0 adcs r0, r0, r3 - b .L88 -.L89: - movs r0, #0 -.L88: +.L113: add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L91: +.L114: + movs r0, #0 + b .L113 +.L116: .align 2 -.L90: +.L115: .word .LANCHOR0 .fnend .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 1 - .global FlashScheduleEnSet + .global FlashReadStatusEN + .syntax unified .thumb .thumb_func + .fpu softvfp + .type FlashReadStatusEN, %function +FlashReadStatusEN: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L129 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r5, [r3, r0, lsl #3] + add r0, r3, r0, lsl #3 + ldrb r4, [r0, #4] @ zero_extendqisi2 + ldr r0, [r3, #48] + ldrb r0, [r0, #8] @ zero_extendqisi2 + cmp r0, #2 + mov r0, r3 + lsl r3, r4, #8 + add r4, r4, #8 + bne .L118 + cbnz r2, .L119 + ldrb r2, [r0, #65] @ zero_extendqisi2 +.L128: + add r3, r3, r5 + str r2, [r3, #2056] + ldrb r0, [r0, #67] @ zero_extendqisi2 + cbz r0, .L123 + add r6, r5, r4, lsl #8 + movs r2, #0 +.L122: + cmp r2, r0 + bcc .L124 +.L123: + lsls r4, r4, #8 + movs r0, #80 + bl ndelay + ldr r0, [r5, r4] + uxtb r0, r0 + pop {r4, r5, r6, pc} +.L119: + ldrb r2, [r0, #66] @ zero_extendqisi2 + b .L128 +.L124: + lsls r3, r2, #3 + adds r2, r2, #1 + lsr r3, r1, r3 + uxtb r3, r3 + str r3, [r6, #4] + b .L122 +.L118: + add r3, r3, r5 + movs r2, #112 + str r2, [r3, #2056] + b .L123 +.L130: + .align 2 +.L129: + .word .LANCHOR0 + .fnend + .size FlashReadStatusEN, .-FlashReadStatusEN + .align 1 + .global FlashWaitReadyEN + .syntax unified + .thumb + .thumb_func + .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 +.L132: + mov r2, r6 + mov r1, r5 + mov r0, r4 + bl FlashReadStatusEN + cmp r0, #255 + mov r3, r0 + beq .L132 + lsls r3, r3, #25 + bmi .L131 + movs r1, #3 + movs r0, #1 + bl usleep_range + b .L132 +.L131: + pop {r4, r5, r6, pc} + .fnend + .size FlashWaitReadyEN, .-FlashWaitReadyEN + .align 1 + .global FlashScheduleEnSet + .syntax unified + .thumb + .thumb_func + .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, .L93 - ldr r2, [r3, #1204] - str r0, [r3, #1204] + ldr r3, .L138 + ldr r2, [r3, #1212] + str r0, [r3, #1212] mov r0, r2 bx lr -.L94: +.L139: .align 2 -.L93: +.L138: .word .LANCHOR0 .fnend .size FlashScheduleEnSet, .-FlashScheduleEnSet .align 1 .global FlashGetPageSize + .syntax unified .thumb .thumb_func + .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, .L96 - ldr r3, [r3, #44] + ldr r3, .L141 + ldr r3, [r3, #48] ldrb r0, [r3, #9] @ zero_extendqisi2 bx lr -.L97: +.L142: .align 2 -.L96: +.L141: .word .LANCHOR0 .fnend .size FlashGetPageSize, .-FlashGetPageSize .align 1 .global NandcReadDontCaseBusyEn + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcReadDontCaseBusyEn, %function NandcReadDontCaseBusyEn: .fnstart @@ -692,355 +1064,210 @@ .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn .align 1 .global NandcGetChipIf + .syntax unified .thumb .thumb_func + .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, .L100 - add r0, r3, r0, lsl #3 - ldrb r2, [r0, #16] @ zero_extendqisi2 - ldr r0, [r0, #12] - adds r2, r2, #8 - add r0, r0, r2, lsl #8 + ldr r2, .L145 + add r3, r2, r0, lsl #3 + ldr r0, [r2, r0, lsl #3] + ldrb r3, [r3, #4] @ zero_extendqisi2 + adds r3, r3, #8 + add r0, r0, r3, lsl #8 bx lr -.L101: +.L146: .align 2 -.L100: +.L145: .word .LANCHOR0 .fnend .size NandcGetChipIf, .-NandcGetChipIf .align 1 .global NandcSetDdrPara + .syntax unified .thumb .thumb_func + .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, .L103 - ldr r2, [r3, #80] + ldr r3, .L148 + ldr r2, [r3, #88] lsls r3, r0, #8 orr r0, r3, r0, lsl #16 - orr r3, r0, #1 - str r3, [r2, #304] + orr r0, r0, #1 + str r0, [r2, #304] bx lr -.L104: +.L149: .align 2 -.L103: +.L148: .word .LANCHOR0 .fnend .size NandcSetDdrPara, .-NandcSetDdrPara .align 1 .global NandcSetDdrDiv + .syntax unified .thumb .thumb_func + .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, .L106 + ldr r3, .L151 orr r0, r0, #16640 - ldr r3, [r3, #80] + ldr r3, [r3, #88] str r0, [r3, #344] bx lr -.L107: +.L152: .align 2 -.L106: +.L151: .word .LANCHOR0 .fnend .size NandcSetDdrDiv, .-NandcSetDdrDiv .align 1 .global NandcSetDdrMode + .syntax unified .thumb .thumb_func + .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, .L111 - ldr r2, [r3, #80] + ldr r3, .L156 + ldr r2, [r3, #88] ldr r3, [r2] - cbnz r0, .L109 + cbnz r0, .L154 bfi r3, r0, #13, #1 - b .L110 -.L109: - orr r3, r3, #253952 -.L110: +.L155: str r3, [r2] bx lr -.L112: +.L154: + orr r3, r3, #253952 + b .L155 +.L157: .align 2 -.L111: +.L156: .word .LANCHOR0 .fnend .size NandcSetDdrMode, .-NandcSetDdrMode .align 1 .global NandcSetMode + .syntax unified .thumb .thumb_func + .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, .L120 + ldr r3, .L165 ands r1, r0, #6 - ldr r2, [r3, #80] + ldr r2, [r3, #88] ldr r3, [r2] - beq .L114 - orr r3, r3, #24576 + beq .L159 lsls r1, r0, #29 - bfc r3, #15, #1 + orr r3, r3, #24576 movw r1, #8322 - orr r3, r3, #196608 + bfc r3, #15, #1 str r1, [r2, #344] add r1, r1, #1040384 + addw r1, r1, #3969 + orr r3, r3, #196608 + str r1, [r2, #304] it mi orrmi r3, r3, #32768 - addw r1, r1, #3969 - str r1, [r2, #304] movs r1, #38 str r1, [r2, #308] movs r1, #39 str r1, [r2, #308] - b .L116 -.L114: - bfi r3, r1, #13, #1 -.L116: +.L161: str r3, [r2] movs r0, #0 bx lr -.L121: +.L159: + bfi r3, r1, #13, #1 + b .L161 +.L166: .align 2 -.L120: +.L165: .word .LANCHOR0 .fnend .size NandcSetMode, .-NandcSetMode .align 1 .global NandcFlashCs + .syntax unified .thumb .thumb_func + .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, .L123 - add r0, r2, r0, lsl #3 + ldr r3, .L168 movs 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] lsls r2, r2, r0 bfi r3, r2, #0, #8 str r3, [r1] bx lr -.L124: +.L169: .align 2 -.L123: +.L168: .word .LANCHOR0 .fnend .size NandcFlashCs, .-NandcFlashCs .align 1 .global NandcFlashDeCs + .syntax unified .thumb .thumb_func + .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, .L126 - add r0, r3, r0, lsl #3 - ldr r2, [r0, #12] + ldr r3, .L171 + ldr r2, [r3, r0, lsl #3] ldr r3, [r2] bfc r3, #0, #8 bfc r3, #17, #1 str r3, [r2] bx lr -.L127: +.L172: .align 2 -.L126: +.L171: .word .LANCHOR0 .fnend .size NandcFlashDeCs, .-NandcFlashDeCs .align 1 - .global NandcDelayns - .thumb - .thumb_func - .type NandcDelayns, %function -NandcDelayns: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, lr} - .save {r3, lr} - addw r0, r0, #999 - ldr r3, .L129 - umull r0, r1, r0, r3 - ldr r3, .L129+4 - ldr r3, [r3, #8] - lsrs r0, r1, #6 - blx r3 - movs r0, #0 - pop {r3, pc} -.L130: - .align 2 -.L129: - .word 274877907 - .word arm_delay_ops - .fnend - .size NandcDelayns, .-NandcDelayns - .align 1 - .global FlashReadStatus - .thumb - .thumb_func - .type FlashReadStatus, %function -FlashReadStatus: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - movs r2, #112 - ldr r3, .L132 - add r0, r3, r0, lsl #3 - ldrb r4, [r0, #16] @ zero_extendqisi2 - ldr r5, [r0, #12] - movs r0, #80 - add r3, r5, r4, lsl #8 - adds r4, r4, #8 - str r2, [r3, #2056] - lsls r4, r4, #8 - bl NandcDelayns - ldr r0, [r5, r4] - pop {r3, r4, r5, pc} -.L133: - .align 2 -.L132: - .word .LANCHOR0 - .fnend - .size FlashReadStatus, .-FlashReadStatus - .align 1 - .global ToshibaSetRRPara - .thumb - .thumb_func - .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 r8, r1, r1, lsl #2 - ldr r9, .L143+8 - movs r4, #0 - ldr r7, .L143 - mov r5, r0 - add r10, r9, #256 - mov r6, r1 -.L135: - ldrb r3, [r7, #1209] @ zero_extendqisi2 - cmp r4, r3 - bcs .L142 - movs r3, #85 - str r3, [r5, #8] - ldrsb r3, [r4, r10] - movs r0, #200 - str r3, [r5, #4] - bl NandcDelayns - ldrb r3, [r7, #1208] @ zero_extendqisi2 - cmp r3, #34 - bne .L136 - add r3, r4, r8 - add r3, r3, r10 - b .L141 -.L136: - cmp r3, #35 - bne .L138 - ldr r2, .L143+4 - add r3, r4, r8 - add r3, r3, r2 -.L141: - ldrsb r3, [r3, #5] - b .L140 -.L138: - add r3, r9, r6 - ldrsb r3, [r3, #400] -.L140: - str r3, [r5] - adds r4, r4, #1 - b .L135 -.L142: - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L144: - .align 2 -.L143: - .word .LANCHOR0 - .word .LANCHOR1+304 - .word .LANCHOR1 - .fnend - .size ToshibaSetRRPara, .-ToshibaSetRRPara - .align 1 - .global SamsungSetRRPara - .thumb - .thumb_func - .type SamsungSetRRPara, %function -SamsungSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L149 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - add r1, r3, r1, lsl #2 - movs r4, #0 - ldr r8, .L149+4 - adds r5, r1, #3 - mov r9, #161 - mov r6, r0 - mov r7, r3 - mov r10, r4 -.L146: - ldrb r3, [r8, #1209] @ zero_extendqisi2 - cmp r4, r3 - bcs .L148 - str r9, [r6, #8] - mov r0, #300 - str r10, [r6] - ldrsb r3, [r7, r4] - adds r4, r4, #1 - str r3, [r6] - ldrsb r3, [r5, #1]! - str r3, [r6] - bl NandcDelayns - b .L146 -.L148: - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L150: - .align 2 -.L149: - .word .LANCHOR1+408 - .word .LANCHOR0 - .fnend - .size SamsungSetRRPara, .-SamsungSetRRPara - .align 1 .global HynixSetRRPara + .syntax unified .thumb .thumb_func + .fpu softvfp .type HynixSetRRPara, %function HynixSetRRPara: .fnstart @@ -1050,407 +1277,303 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #12 mov r7, r3 - ldr r5, .L159 + ldr r5, .L181 mov r6, r0 - mov r9, r1 - mov fp, r2 - ldr r3, [r5, #44] - ldrb r4, [r3, #19] @ zero_extendqisi2 - lsls r3, r0, #3 - cmp r4, #6 - bne .L152 - add r4, r5, r0, lsl #6 - addw r4, r4, #1230 - add r4, r4, r7, lsl #2 - b .L153 -.L152: - cmp r4, #7 - bne .L154 - mov r10, #160 - add r4, r7, r7, lsl #2 - mla r10, r10, r0, r5 - addw r10, r10, #1238 - add r4, r10, r4, lsl #1 - b .L153 -.L154: - cmp r4, #8 - iteet ne - addne r4, r7, r3 - addweq r4, r5, #1238 - addeq r2, r7, r7, lsl #2 - addne r4, r5, r4, lsl #3 - ite eq - addeq r4, r4, r2 - addwne r4, r4, #1230 -.L153: - add r3, r3, r5 + mov r8, r1 + mov r9, r2 + ldr r3, [r5, #48] + ldrb r3, [r3, #19] @ zero_extendqisi2 + cmp r3, #6 + bne .L174 + movs r3, #20 + add r4, r5, #1216 + add r3, r3, r0, lsl #6 + add r3, r3, r7, lsl #2 +.L180: + add r4, r4, r3 + b .L175 +.L174: + cmp r3, #7 + bne .L176 + movs r3, #160 + movs r4, #28 + smlabb r4, r3, r0, r4 + movs r3, #10 + add r2, r5, #1216 + smlabb r3, r3, r7, r4 + adds r4, r2, r3 +.L175: + add r3, r5, r6, lsl #3 + ldr r10, [r5, r6, lsl #3] mov r0, r6 - add r9, r9, #-1 - subs r4, r4, #1 - ldrb r8, [r3, #16] @ zero_extendqisi2 - add r9, r9, fp - ldr r10, [r3, #12] + ldrb fp, [r3, #4] @ zero_extendqisi2 + add r8, r8, #-1 bl NandcFlashCs - add r1, fp, #-1 - movs r2, #54 - lsl r8, r8, #8 - add r3, r10, r8 - mov fp, r3 - str r2, [r3, #2056] -.L156: - cmp r1, r9 - beq .L158 - ldrb r3, [r1, #1]! @ zero_extendqisi2 - movs r0, #200 - str r3, [fp, #2052] - str r1, [sp, #4] - bl NandcDelayns - ldrsb r3, [r4, #1]! - str r3, [fp, #2048] - ldr r1, [sp, #4] - b .L156 -.L158: - add r8, r8, r10 + movs r3, #54 + add r8, r8, r9 + subs r4, r4, #1 + lsl fp, fp, #8 + add r0, r10, fp + str r3, [r0, #2056] + add r3, r9, #-1 + mov r9, r0 +.L178: + cmp r3, r8 + bne .L179 movs r3, #22 + add r10, r10, fp + str r3, [r10, #2056] mov r0, r6 add r5, r5, r6 - str r3, [r8, #2056] bl NandcFlashDeCs - strb r7, [r5, #2064] + strb r7, [r5, #2068] add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L160: +.L176: + cmp r3, #8 + bne .L177 + addw r4, r5, #1244 + add r3, r7, r7, lsl #2 + b .L180 +.L177: + adds r4, r7, #2 + add r4, r4, r0, lsl #3 + add r4, r5, r4, lsl #3 + addw r4, r4, #1220 + b .L175 +.L179: + ldrb r2, [r3, #1]! @ zero_extendqisi2 + movs r0, #200 + str r2, [r9, #2052] + str r3, [sp, #4] + bl ndelay + ldrsb r2, [r4, #1]! + ldr r3, [sp, #4] + str r2, [r9, #2048] + b .L178 +.L182: .align 2 -.L159: +.L181: .word .LANCHOR0 .fnend .size HynixSetRRPara, .-HynixSetRRPara .align 1 .global FlashSetReadRetryDefault + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashSetReadRetryDefault, %function FlashSetReadRetryDefault: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r3, .L167 - ldr r2, [r3, #44] - ldrb r2, [r2, #19] @ zero_extendqisi2 - subs r2, r2, #1 - cmp r2, #7 - bhi .L161 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r5, .L189 + ldr r3, [r5, #48] + ldrb r3, [r3, #19] @ zero_extendqisi2 + subs r3, r3, #1 + cmp r3, #7 + bhi .L183 movs r4, #0 - mov r5, r3 -.L162: - ldr r2, .L167+4 + addw r6, r5, #2072 +.L186: + ldrb r3, [r6, r4, lsl #3] @ zero_extendqisi2 uxtb r0, r4 - ldrb r3, [r2, r4, lsl #3] @ zero_extendqisi2 cmp r3, #173 - bne .L163 - ldrb r1, [r5, #1211] @ zero_extendqisi2 - subw r2, r2, #854 + bne .L185 movs r3, #0 + ldr r2, .L189+4 + ldrb r1, [r5, #1217] @ zero_extendqisi2 bl HynixSetRRPara -.L163: +.L185: adds r4, r4, #1 cmp r4, #4 - bne .L162 -.L161: - pop {r3, r4, r5, pc} -.L168: + bne .L186 +.L183: + pop {r4, r5, r6, pc} +.L190: .align 2 -.L167: +.L189: .word .LANCHOR0 - .word .LANCHOR0+2068 + .word .LANCHOR0+1220 .fnend .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 1 - .global FlashReadStatusEN - .thumb - .thumb_func - .type FlashReadStatusEN, %function -FlashReadStatusEN: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldr r5, .L179 - add r0, r5, r0, lsl #3 - ldr r3, [r5, #44] - ldrb r4, [r0, #16] @ zero_extendqisi2 - ldr r6, [r0, #12] - ldrb r3, [r3, #8] @ zero_extendqisi2 - cmp r3, #2 - lsl r3, r4, #8 - add r4, r4, #8 - bne .L170 - cbnz r2, .L171 - ldrb r2, [r5, #61] @ zero_extendqisi2 - b .L178 -.L171: - ldrb r2, [r5, #62] @ zero_extendqisi2 -.L178: - add r3, r3, r6 - str r2, [r3, #2056] - ldrb r0, [r5, #63] @ zero_extendqisi2 - cbz r0, .L174 - movs r3, #0 - add r5, r6, r4, lsl #8 -.L173: - cmp r3, r0 - bcs .L174 - lsls r2, r3, #3 - adds r3, r3, #1 - lsr r2, r1, r2 - uxtb r2, r2 - str r2, [r5, #4] - b .L173 -.L170: - add r3, r3, r6 - movs r2, #112 - str r2, [r3, #2056] -.L174: - movs r0, #80 - lsls r4, r4, #8 - bl NandcDelayns - ldr r0, [r6, r4] - uxtb r0, r0 - pop {r4, r5, r6, pc} -.L180: - .align 2 -.L179: - .word .LANCHOR0 - .fnend - .size FlashReadStatusEN, .-FlashReadStatusEN - .align 1 - .global FlashWaitReadyEN - .thumb - .thumb_func - .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 -.L182: - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl FlashReadStatusEN - cmp r0, #255 - mov r3, r0 - beq .L182 - lsls r3, r3, #25 - bmi .L183 - movs r0, #1 - movs r1, #3 - bl usleep_range - b .L182 -.L183: - pop {r4, r5, r6, pc} - .fnend - .size FlashWaitReadyEN, .-FlashWaitReadyEN - .align 1 .global FlashWaitCmdDone + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashWaitCmdDone, %function FlashWaitCmdDone: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} - mov r8, r0 - ldr r5, .L194 + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r5, .L198 add r4, r5, r0, lsl #4 - ldr r3, [r4, #2108] - ldrb r6, [r4, #2100] @ zero_extendqisi2 - cbz r3, .L189 - add r5, r5, r8, lsl #2 + ldr r3, [r4, #2112] + cbz r3, .L193 + ldrb r6, [r4, #2104] @ zero_extendqisi2 + add r5, r5, r7, lsl #2 mov r0, r6 bl NandcFlashCs - ldr r1, [r4, #2104] - ldr r2, [r5, #1172] + ldr r2, [r5, #1180] mov r0, r6 + ldr r1, [r4, #2108] adds r2, r2, #0 it ne movne r2, #1 bl FlashWaitReadyEN - mov r5, r0 + mov r1, r0 mov r0, r6 bl NandcFlashDeCs - ldr r2, [r4, #2108] - sbfx r3, r5, #0, #1 - str r3, [r2] - movs r2, #0 - ldr r1, [r4, #2112] - str r2, [r4, #2108] - cbz r1, .L189 - str r3, [r1] - str r2, [r4, #2112] -.L189: + ldr r3, [r4, #2112] + sbfx r1, r1, #0, #1 + str r1, [r3] + movs r3, #0 + ldr r2, [r4, #2116] + str r3, [r4, #2112] + cbz r2, .L193 + str r1, [r2] + str r3, [r4, #2116] +.L193: movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L195: + pop {r3, r4, r5, r6, r7, pc} +.L199: .align 2 -.L194: +.L198: .word .LANCHOR0 .fnend .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 1 + .global NandcDelayns + .syntax unified .thumb .thumb_func - .type flash_read_ecc, %function -flash_read_ecc: + .fpu softvfp + .type NandcDelayns, %function +NandcDelayns: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L197 - push {r4, lr} - .save {r4, lr} - add r0, r2, r0, lsl #3 - ldrb r4, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] - movs r0, #80 - add r4, r3, r4, lsl #8 - movs 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 - it cc - movcc r0, r3 - ldr r3, [r4, #2048] - and r3, r3, #15 - cmp r0, r3 - it cc - movcc r0, r3 - ldr r3, [r4, #2048] - and r3, r3, #15 - cmp r0, r3 - it cc - movcc r0, r3 - pop {r4, pc} -.L198: - .align 2 -.L197: - .word .LANCHOR0 + push {r3, lr} + .save {r3, lr} + bl ndelay + movs r0, #0 + pop {r3, pc} .fnend - .size flash_read_ecc, .-flash_read_ecc + .size NandcDelayns, .-NandcDelayns .align 1 .global NandcWaitFlashReadyNoDelay + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcWaitFlashReadyNoDelay, %function NandcWaitFlashReadyNoDelay: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L204 + ldr r3, .L206 push {r0, r1, r2, r4, r5, lr} .save {r4, r5, lr} .pad #12 - add r0, r3, r0, lsl #3 - ldr r4, .L204+4 - ldr r5, [r0, #12] -.L201: + ldr r4, .L206+4 + ldr r5, [r3, r0, lsl #3] +.L203: ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] lsls r3, r3, #22 - bmi .L202 + bmi .L204 movs r0, #10 - bl NandcDelayns + bl ndelay subs r4, r4, #1 - bne .L201 + bne .L203 mov r0, #-1 - b .L200 -.L202: - movs r0, #0 -.L200: +.L201: add sp, sp, #12 @ sp needed pop {r4, r5, pc} -.L205: - .align 2 .L204: + movs r0, #0 + b .L201 +.L207: + .align 2 +.L206: .word .LANCHOR0 .word 100000 .fnend .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .align 1 .global NandcWaitFlashReady + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcWaitFlashReady, %function NandcWaitFlashReady: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L211 push {r0, r1, r2, r4, r5, lr} .save {r4, r5, lr} .pad #12 - add r0, r3, r0, lsl #3 - ldr r4, .L211+4 - ldr r5, [r0, #12] + ldr r3, .L213 + ldr r4, .L213+4 + ldr r5, [r3, r0, lsl #3] movs r0, #130 - bl NandcDelayns -.L208: + bl ndelay +.L210: ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] lsls r3, r3, #22 - bmi .L209 - movs r0, #1 + bmi .L211 movs r1, #2 + movs r0, #1 bl usleep_range subs r4, r4, #1 - bne .L208 + bne .L210 mov r0, #-1 - b .L207 -.L209: - movs r0, #0 -.L207: +.L208: add sp, sp, #12 @ sp needed pop {r4, r5, pc} -.L212: - .align 2 .L211: + movs r0, #0 + b .L208 +.L214: + .align 2 +.L213: .word .LANCHOR0 .word 100000 .fnend .size NandcWaitFlashReady, .-NandcWaitFlashReady .align 1 .global FlashReset + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReset, %function FlashReset: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L214 + ldr r3, .L216 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - add r3, r3, r0, lsl #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 movs r3, #255 mov r0, r4 @@ -1460,16 +1583,18 @@ mov r0, r4 pop {r4, r5, r6, lr} b NandcFlashDeCs -.L215: +.L217: .align 2 -.L214: +.L216: .word .LANCHOR0 .fnend .size FlashReset, .-FlashReset .align 1 .global flash_enter_slc_mode + .syntax unified .thumb .thumb_func + .fpu softvfp .type flash_enter_slc_mode, %function flash_enter_slc_mode: .fnstart @@ -1477,25 +1602,25 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r7, r0 - ldr r6, .L222 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L216 - add r4, r6, r7, lsl #3 + mov r6, r0 + ldr r5, .L224 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L218 bl NandcFlashCs - ldrb r3, [r4, #2068] @ zero_extendqisi2 - ldrb r5, [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 r8, [r4, #12] - lsl r5, r5, #8 - bne .L218 - add r4, r8, r5 + lsl r8, r8, #8 + bne .L220 + add r4, r7, r8 movs r3, #239 - movs r0, #50 str r3, [r4, #2056] movs r3, #145 str r3, [r4, #2052] - bl NandcDelayns + movs r0, #50 + bl ndelay movs r3, #0 movs r2, #1 str r3, [r4, #2048] @@ -1503,29 +1628,31 @@ str r2, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] - bl NandcDelayns -.L218: - add r5, r5, r8 - mov r0, r7 + bl ndelay +.L220: + mov r0, r6 + add r7, r7, r8 bl NandcWaitFlashReadyNoDelay movs r3, #218 - mov r0, r7 - str r3, [r5, #2056] + mov r0, r6 + str r3, [r7, #2056] bl NandcWaitFlashReady movs r3, #2 - strb r3, [r6, #2228] -.L216: + strb r3, [r5, #2232] +.L218: pop {r4, r5, r6, r7, r8, pc} -.L223: +.L225: .align 2 -.L222: +.L224: .word .LANCHOR0 .fnend .size flash_enter_slc_mode, .-flash_enter_slc_mode .align 1 .global flash_exit_slc_mode + .syntax unified .thumb .thumb_func + .fpu softvfp .type flash_exit_slc_mode, %function flash_exit_slc_mode: .fnstart @@ -1533,25 +1660,25 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r7, r0 - ldr r6, .L230 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L224 - add r4, r6, r7, lsl #3 + mov r6, r0 + ldr r5, .L232 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L226 bl NandcFlashCs - ldrb r3, [r4, #2068] @ zero_extendqisi2 - ldrb r5, [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 r8, [r4, #12] - lsl r5, r5, #8 - bne .L226 - add r4, r8, r5 + lsl r8, r8, #8 + bne .L228 + add r4, r7, r8 movs r3, #239 - movs r0, #50 str r3, [r4, #2056] movs r3, #145 str r3, [r4, #2052] - bl NandcDelayns + movs r0, #50 + bl ndelay movs r3, #2 movs r0, #100 str r3, [r4, #2048] @@ -1560,29 +1687,31 @@ movs r3, #0 str r3, [r4, #2048] str r3, [r4, #2048] - bl NandcDelayns -.L226: - add r5, r5, r8 - mov r0, r7 + bl ndelay +.L228: + mov r0, r6 + add r7, r7, r8 bl NandcWaitFlashReadyNoDelay movs r3, #223 - mov r0, r7 - str r3, [r5, #2056] + mov r0, r6 + str r3, [r7, #2056] bl NandcWaitFlashReady movs r3, #0 - strb r3, [r6, #2228] -.L224: + strb r3, [r5, #2232] +.L226: pop {r4, r5, r6, r7, r8, pc} -.L231: +.L233: .align 2 -.L230: +.L232: .word .LANCHOR0 .fnend .size flash_exit_slc_mode, .-flash_exit_slc_mode .align 1 .global FlashEraseBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashEraseBlock, %function FlashEraseBlock: .fnstart @@ -1605,140 +1734,139 @@ 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 pop {r4, r5, r6, pc} .fnend .size FlashEraseBlock, .-FlashEraseBlock .align 1 .global FlashSetInterfaceMode + .syntax unified .thumb .thumb_func + .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 - push {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 r5, .L261 - movs r4, #0 - movs r7, #239 - mov lr, #128 - mov ip, #1 - mov r8, #35 - ldrb r3, [r5, #2229] @ zero_extendqisi2 + .pad #12 + movs r5, #0 + ldr r6, .L263 + mov ip, #128 + mov lr, #1 mov r9, #32 mov r10, #5 - and r2, r3, #1 - str r2, [sp, #12] + ldrb r3, [r6, #2233] @ zero_extendqisi2 + addw r8, r6, #2072 and r2, r3, #4 - uxtb r3, r2 - mov r2, r4 - str r3, [sp, #8] - add r3, r5, #12 - str r3, [sp, #4] -.L243: - ldr r1, .L261+4 - ldr r3, [sp, #4] - ldrb r1, [r4, r1] @ zero_extendqisi2 - ldr r6, [r4, r3] - add r3, r3, r4 - cmp r1, #152 - ldr r3, [r3, #4] - beq .L234 - cmp r1, #69 - beq .L234 - cmp r1, #173 - beq .L234 - cmp r1, #44 - bne .L235 -.L234: - cmp r0, #1 - uxtb r3, r3 - bne .L236 - ldr r5, [sp, #12] - cbz r5, .L235 - lsls r3, r3, #8 - cmp r1, #173 - add fp, r6, r3 - str r7, [fp, #2056] + and r3, r3, #1 + str r2, [sp, #4] + mov r2, r5 + str r3, [sp] +.L245: + ldrb r4, [r5, r8] @ zero_extendqisi2 + cmp r4, #152 + beq .L236 + cmp r4, #69 + beq .L236 + cmp r4, #173 + beq .L236 + cmp r4, #44 bne .L237 +.L236: + cmp r0, #1 + add r3, r6, r5 + ldr r1, [r6, r5] + ldrb r3, [r3, #4] @ zero_extendqisi2 + bne .L238 + ldr r7, [sp] + cbz r7, .L237 + lsls r3, r3, #8 + cmp r4, #173 + mov r7, #239 + add fp, r1, r3 + str r7, [fp, #2056] + bne .L239 str r0, [fp, #2052] - b .L260 -.L237: - cmp r1, #44 +.L262: + str r2, [fp, #2048] + b .L243 +.L239: + cmp r4, #44 itete eq streq r0, [fp, #2052] - strne lr, [fp, #2052] + strne ip, [fp, #2052] streq r10, [fp, #2048] strne r0, [fp, #2048] - b .L241 -.L236: - ldr r5, [sp, #8] - cbz r5, .L235 - lsls r3, r3, #8 - cmp r1, #173 - add fp, r6, r3 - str r7, [fp, #2056] - bne .L240 - str ip, [fp, #2052] - str r9, [fp, #2048] - b .L241 -.L240: - cmp r1, #44 - bne .L242 - str ip, [fp, #2052] - str r8, [fp, #2048] - b .L241 -.L242: - str lr, [fp, #2052] -.L260: - str r2, [fp, #2048] -.L241: - add r3, r3, r6 +.L243: + add r3, r3, r1 str r2, [r3, #2048] str r2, [r3, #2048] str r2, [r3, #2048] -.L235: - adds r4, r4, #8 - cmp r4, #32 - bne .L243 +.L237: + adds r5, r5, #8 + cmp r5, #32 + bne .L245 movs r0, #0 bl NandcWaitFlashReady movs r0, #0 - add sp, sp, #20 + add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L262: +.L238: + ldr r7, [sp, #4] + cmp r7, #0 + beq .L237 + lsls r3, r3, #8 + cmp r4, #173 + mov r7, #239 + add fp, r1, r3 + str r7, [fp, #2056] + bne .L242 + str lr, [fp, #2052] + str r9, [fp, #2048] + b .L243 +.L242: + cmp r4, #44 + bne .L244 + movs r4, #35 + str lr, [fp, #2052] + str r4, [fp, #2048] + b .L243 +.L244: + str ip, [fp, #2052] + b .L262 +.L264: .align 2 -.L261: +.L263: .word .LANCHOR0 - .word .LANCHOR0+2068 .fnend .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .align 1 .global FlashReadSpare + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadSpare, %function FlashReadSpare: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r2 - ldr r5, .L264 - ldr r3, .L264+4 + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + mov r7, r2 + ldr r5, .L266 + ldr r3, .L266+4 + ldr r4, [r5, r0, lsl #3] add r5, r5, r0, lsl #3 - ldrb r3, [r3, #481] @ zero_extendqisi2 - ldrb r2, [r5, #16] @ zero_extendqisi2 - ldr r4, [r5, #12] + ldrb r3, [r3, #477] @ zero_extendqisi2 + ldrb r2, [r5, #4] @ zero_extendqisi2 lsls r3, r3, #9 add r4, r4, r2, lsl #8 movs r2, #0 @@ -1756,31 +1884,33 @@ str r3, [r4, #2056] bl NandcWaitFlashReady ldr r3, [r4, #2048] - strb r3, [r6] - pop {r4, r5, r6, pc} -.L265: + strb r3, [r7] + pop {r3, r4, r5, r6, r7, pc} +.L267: .align 2 -.L264: +.L266: .word .LANCHOR0 .word .LANCHOR1 .fnend .size FlashReadSpare, .-FlashReadSpare .align 1 .global SandiskProgTestBadBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type SandiskProgTestBadBlock, %function SandiskProgTestBadBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L267 + ldr r3, .L269 push {r4, lr} .save {r4, lr} - add r2, r2, r0, lsl #3 - ldrb r4, [r2, #16] @ zero_extendqisi2 - ldr r3, [r2, #12] - add r4, r3, r4, lsl #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 movs r3, #162 str r3, [r4, #2056] movs r3, #128 @@ -1793,169 +1923,183 @@ lsrs r3, r1, #8 lsrs r1, r1, #16 str r3, [r4, #2052] - str r1, [r4, #2052] movs r3, #16 + str r1, [r4, #2052] str r3, [r4, #2056] bl NandcWaitFlashReady movs r3, #112 movs r0, #80 str r3, [r4, #2056] - bl NandcDelayns + bl ndelay ldr r0, [r4, #2048] and r0, r0, #1 pop {r4, pc} -.L268: +.L270: .align 2 -.L267: +.L269: .word .LANCHOR0 .fnend .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock .align 1 .global SandiskSetRRPara + .syntax unified .thumb .thumb_func + .fpu softvfp .type SandiskSetRRPara, %function SandiskSetRRPara: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + movs r3, #239 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - movs r3, #239 - mov r5, r0 str r3, [r0, #8] movs r3, #17 + mov r5, r0 + mov r4, r1 str r3, [r0, #4] movs r0, #200 - mov r4, r1 - bl NandcDelayns - ldr r0, .L276 - ldr r1, .L276+4 + bl ndelay + ldr r0, .L277 add r4, r4, r4, lsl #2 + ldr r1, .L277+4 movs r2, #0 - sub r6, r0, #48 -.L270: - ldrb r3, [r1, #1209] @ zero_extendqisi2 + sub r6, r0, #45 +.L272: + ldrb r3, [r1, #85] @ zero_extendqisi2 cmp r2, r3 - bcs .L275 - ldrb r3, [r1, #1208] @ zero_extendqisi2 + bcc .L275 + movs r0, #0 + pop {r4, r5, r6, lr} + b NandcWaitFlashReady +.L275: + ldrb r3, [r1, #84] @ zero_extendqisi2 cmp r3, #67 add r3, r2, r4 ite eq addeq r3, r3, r6 addne r3, r3, r0 - adds r2, r2, #1 ldrsb r3, [r3, #5] + adds r2, r2, #1 str r3, [r5] - b .L270 -.L275: - movs r0, #0 - pop {r4, r5, r6, lr} - b NandcWaitFlashReady -.L277: + b .L272 +.L278: .align 2 -.L276: - .word .LANCHOR1+304 +.L277: + .word .LANCHOR1+301 .word .LANCHOR0 .fnend .size SandiskSetRRPara, .-SandiskSetRRPara .align 1 .global micron_auto_read_calibration_config + .syntax unified .thumb .thumb_func + .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 - push {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, .L279 + ldr r0, .L280 + ldr r4, [r0, r5, lsl #3] + add r0, r0, r5, lsl #3 + ldrb r3, [r0, #4] @ zero_extendqisi2 movs r0, #200 - add r2, r3, r4, lsl #3 - ldrb r4, [r2, #16] @ zero_extendqisi2 - ldr r3, [r2, #12] - add r4, r3, r4, lsl #8 + add r4, r4, r3, lsl #8 movs r3, #239 str r3, [r4, #2056] movs r3, #150 str r3, [r4, #2052] - bl NandcDelayns - str r5, [r4, #2048] + bl ndelay movs r3, #0 + str r6, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] str r3, [r4, #2048] - pop {r3, r4, r5, pc} -.L280: + pop {r4, r5, r6, pc} +.L281: .align 2 -.L279: +.L280: .word .LANCHOR0 .fnend .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .align 1 .global FlashEraseSLc2KBlocks + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #16 movs r5, #0 - ldr r8, .L292+4 - .pad #20 - sub sp, sp, #20 + ldr r8, .L292 mov r6, r0 mov r9, r1 mov r7, r5 -.L282: + ldr r10, .L292+4 +.L283: cmp r7, r9 - beq .L291 - rsb r3, r7, r9 + bne .L288 + movs r0, #0 + add sp, sp, #16 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L288: + sub r3, r9, r7 add r2, sp, #8 - adds r0, r6, r5 - movs r1, #0 uxtb r3, r3 + movs r1, #0 + adds 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 - bcc .L283 + cmp r2, r3 + bhi .L284 mov r3, #-1 str r3, [r6, r5] - b .L284 -.L283: +.L285: + adds r7, r7, #1 + adds r5, r5, #36 + b .L283 +.L284: add r2, r8, r3 add r3, r8, r3, lsl #4 - ldrb r4, [r2, #2232] @ zero_extendqisi2 - strb r4, [r3, #2100] + ldrb r4, [r2, #2236] @ zero_extendqisi2 + strb r4, [r3, #2104] mov r0, r4 bl NandcWaitFlashReady mov r0, r4 bl NandcFlashCs movs 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 - movs r2, #0 - ldr r3, [sp, #8] sbfx r0, r0, #0, #1 + ldr r1, [sp, #8] str r0, [r6, r5] + movs r2, #0 + ldr r3, [r8, #40] mov r0, r4 - ldr r1, [r8, #4] add r1, r1, r3 bl FlashEraseCmd mov r0, r4 @@ -1969,191 +2113,181 @@ strmi r3, [r6, r5] ldr r3, [r6, r5] adds r3, r3, #1 - bne .L286 - ldr r0, .L292 + bne .L287 ldr r1, [sp, #8] + mov r0, r10 bl printk -.L286: +.L287: mov r0, r4 bl NandcFlashDeCs -.L284: - adds r7, r7, #1 - adds r5, r5, #36 - b .L282 -.L291: - movs r0, #0 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} + b .L285 .L293: .align 2 .L292: - .word .LC1 .word .LANCHOR0 + .word .LC1 .fnend .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks .align 1 .global FlashEraseBlocks + .syntax unified .thumb .thumb_func + .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 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r9, r0 - ldr r4, .L328 - .pad #28 - sub sp, sp, #28 + ldr r4, .L325 + .pad #20 + sub sp, sp, #20 mov r10, r1 mov r8, r2 - ldrb r5, [r4] @ zero_extendqisi2 - cbz r5, .L312 + ldrb r5, [r4, #36] @ zero_extendqisi2 + cbz r5, .L296 mov r1, r2 bl FlashEraseSLc2KBlocks - b .L296 -.L312: - mov fp, r4 -.L295: - cmp r5, r8 - bcs .L326 +.L294: + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L305: movs r3, #36 - movs r1, #0 - add r2, sp, #16 + add r2, sp, #8 mul r6, r3, r5 - add r3, r9, r6 - str r3, [sp, #12] - rsb r3, r5, r8 - ldr r0, [sp, #12] + sub r3, r8, r5 uxtb r3, r3 + movs r1, #0 str r3, [sp] - add r3, sp, #20 + add r3, sp, #12 + add fp, r9, r6 + mov r0, fp bl LogAddr2PhyAddr - ldrb r3, [r4, #2230] @ zero_extendqisi2 + ldrb r3, [r4, #2234] @ zero_extendqisi2 mov r7, r0 - ldr r0, [sp, #20] - cmp r0, r3 - bcc .L297 + ldr r0, [sp, #12] + cmp r3, r0 + bhi .L298 mov r3, #-1 str r3, [r9, r6] - b .L298 -.L297: - ldrb r3, [fp, #2240] @ zero_extendqisi2 +.L299: + adds r5, r5, #1 +.L296: + cmp r5, r8 + bcc .L305 + ldr r6, .L325+4 + movs r5, #0 +.L306: + ldrb r3, [r4, #2234] @ zero_extendqisi2 + cmp r5, r3 + bcc .L308 + ldr r3, [r4, #2248] + cmp r3, #0 + bne .L309 +.L310: + movs r0, #0 + b .L294 +.L298: + ldrb r3, [r4, #2244] @ zero_extendqisi2 cmp r3, #0 add r3, r4, r0, lsl #4 it eq moveq r7, #0 - ldr r3, [r3, #2108] - cbz r3, .L300 + ldr r3, [r3, #2112] + cbz r3, .L301 uxtb r0, r0 bl FlashWaitCmdDone -.L300: - ldr r1, [sp, #20] - ldr r3, [sp, #12] - lsls r2, r1, #4 - add lr, r4, r2 - str r3, [lr, #2108] - movs r3, #0 - str r3, [lr, #2112] - ldr r3, [sp, #16] - str r3, [lr, #2104] - cbz r7, .L301 - add r3, r6, #36 - add r3, r3, r9 - str r3, [lr, #2112] .L301: - add r1, r1, r4 + ldr r2, [sp, #12] + movs r0, #0 + lsls r3, r2, #4 + adds r1, r4, r3 + str r0, [r1, #2116] + ldr r0, [sp, #8] + str fp, [r1, #2112] + str r0, [r1, #2108] + cbz r7, .L302 + adds r6, r6, #36 + add r6, r6, r9 + str r6, [r1, #2116] +.L302: add r2, r2, r4 - ldrb r6, [r1, #2232] @ zero_extendqisi2 + add r3, r3, r4 + ldrb r6, [r2, #2236] @ zero_extendqisi2 mov r0, r6 - strb r6, [r2, #2100] + strb r6, [r3, #2104] bl NandcFlashCs cmp r10, #1 mov r0, r6 - bne .L302 - ldrb r3, [fp, #144] @ zero_extendqisi2 - cbz r3, .L302 + bne .L303 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L303 bl flash_enter_slc_mode - b .L303 -.L302: - bl flash_exit_slc_mode -.L303: - ldr r3, [sp, #20] +.L304: + ldr r3, [sp, #12] mov r0, r6 - ldr r1, [sp, #16] + ldr r1, [sp, #8] add r5, r5, r7 add r3, r4, r3, lsl #2 - ldr r2, [r3, #1172] + ldr r2, [r3, #1180] adds r2, r2, #0 it ne 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 -.L298: - adds r5, r5, #1 - b .L295 -.L326: - ldr r6, .L328 - movs r5, #0 - addw r7, r6, #2100 -.L305: - ldrb r2, [r4, #2230] @ zero_extendqisi2 - ldr r3, .L328 - cmp r5, r2 - bcs .L327 + b .L299 +.L303: + bl flash_exit_slc_mode + b .L304 +.L308: uxtb r0, r5 bl FlashWaitCmdDone cmp r10, #1 - bne .L306 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L306 + bne .L307 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L307 lsls r3, r5, #4 - ldrb r0, [r7, r3] @ zero_extendqisi2 + ldrb r0, [r6, r3] @ zero_extendqisi2 bl flash_exit_slc_mode -.L306: +.L307: adds r5, r5, #1 - b .L305 -.L327: - ldr r2, [r3, #2244] - cbnz r2, .L308 -.L310: - movs r0, #0 - b .L296 -.L308: - ldrb r3, [r3, #2068] @ zero_extendqisi2 + b .L306 +.L309: + ldrb r3, [r4, #2072] @ zero_extendqisi2 cmp r3, #69 bne .L310 movs r3, #0 movs r2, #36 mov r1, r3 -.L309: +.L311: cmp r3, r8 beq .L310 mul r0, r2, r3 adds r3, r3, #1 str r1, [r9, r0] - b .L309 -.L296: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L329: + b .L311 +.L326: .align 2 -.L328: +.L325: .word .LANCHOR0 + .word .LANCHOR0+2104 .fnend .size FlashEraseBlocks, .-FlashEraseBlocks .align 1 .global FlashReadDpCmd + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadDpCmd, %function FlashReadDpCmd: .fnstart @@ -2161,65 +2295,68 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r7, r0 - ldr r0, .L335 - mov r6, r1 + mov r6, r0 + ldr r0, .L332 + mov r7, r1 uxtb r9, r2 lsr r8, r2, #8 - add r3, r0, r7, lsl #3 lsrs r5, r2, #16 - ldrb r1, [r0, #64] @ zero_extendqisi2 - uxtb ip, r6 - ldr r4, [r3, #12] - lsr lr, r6, #8 - ldrb r3, [r3, #16] @ zero_extendqisi2 - cmp r1, #1 - ldr r2, [r0, #44] - lsr r1, r6, #16 - lsl r3, r3, #8 + uxtb lr, r7 + ldr r2, [r0, #48] + lsr ip, r7, #8 + add r1, r0, r6, lsl #3 + ldr r3, [r0, r6, lsl #3] + ldrb r4, [r1, #4] @ zero_extendqisi2 + ldrb r1, [r0, #68] @ zero_extendqisi2 ldrb r2, [r2, #7] @ zero_extendqisi2 - bne .L331 + cmp r1, #1 + lsl r4, r4, #8 + lsr r1, r7, #16 + bne .L328 cmp r2, #1 itt eq - addeq r2, r4, r3 + addeq r2, r3, r4 moveq r10, #38 add r4, r4, r3 it eq streq r10, [r2, #2056] + ldrb r3, [r0, #61] @ zero_extendqisi2 mov r10, #0 - ldrb r3, [r0, #57] @ zero_extendqisi2 - ldrb r2, [r0, #56] @ zero_extendqisi2 - mov r0, r7 + ldrb r2, [r0, #60] @ zero_extendqisi2 + mov r0, r6 str r2, [r4, #2056] str r10, [r4, #2052] str r10, [r4, #2052] - str ip, [r4, #2052] str lr, [r4, #2052] + str ip, [r4, #2052] str r1, [r4, #2052] str r3, [r4, #2056] bl NandcWaitFlashReady - str r10, [r4, #2056] movs r3, #48 + str r10, [r4, #2056] str r10, [r4, #2052] str r10, [r4, #2052] str r9, [r4, #2052] str r8, [r4, #2052] str r5, [r4, #2052] str r3, [r4, #2056] - b .L333 -.L331: +.L330: + mov r1, r7 + mov r0, r6 + pop {r4, r5, r6, r7, r8, r9, r10, lr} + b FlashSetRandomizer +.L328: cmp r2, #1 - itt eq - addeq r2, r4, r3 + ittt eq + addeq r2, r3, r4 moveq r10, #38 - add r3, r3, r4 - it eq streq r10, [r2, #2056] - ldrb r2, [r0, #56] @ zero_extendqisi2 + add r3, r3, r4 + ldrb r2, [r0, #60] @ zero_extendqisi2 str r2, [r3, #2056] - ldrb r2, [r0, #57] @ zero_extendqisi2 - str ip, [r3, #2052] + ldrb r2, [r0, #61] @ zero_extendqisi2 str lr, [r3, #2052] + str ip, [r3, #2052] str r1, [r3, #2052] str r2, [r3, #2056] movs r2, #48 @@ -2227,89 +2364,89 @@ str r8, [r3, #2052] str r5, [r3, #2052] str r2, [r3, #2056] + b .L330 .L333: - mov r0, r7 - mov r1, r6 - pop {r4, r5, r6, r7, r8, r9, r10, lr} - b FlashSetRandomizer -.L336: .align 2 -.L335: +.L332: .word .LANCHOR0 .fnend .size FlashReadDpCmd, .-FlashReadDpCmd .align 1 .global ftl_flash_de_init + .syntax unified .thumb .thumb_func + .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 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} + push {r4, lr} + .save {r4, lr} movs r0, #0 - ldr r4, .L347 + ldr r4, .L344 bl NandcWaitFlashReady bl FlashSetReadRetryDefault - ldr r0, [r4, #2248] - cbz r0, .L338 + ldr r0, [r4, #2252] + cbz r0, .L335 movs r0, #0 bl flash_enter_slc_mode - b .L339 -.L338: - bl flash_exit_slc_mode -.L339: - ldrb r3, [r4, #2252] @ zero_extendqisi2 - ldr r5, .L347 - cbz r3, .L340 - ldrb r3, [r5, #2229] @ zero_extendqisi2 +.L336: + ldrb r3, [r4, #2256] @ zero_extendqisi2 + cbz r3, .L337 + ldrb r3, [r4, #2233] @ zero_extendqisi2 lsls r3, r3, #31 - bpl .L340 + bpl .L337 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode movs r3, #0 - strb r3, [r5, #2252] -.L340: - ldr r3, [r4, #12] + strb r3, [r4, #2256] +.L337: + ldr r3, [r4] movs r0, #0 str r0, [r3, #336] - pop {r3, r4, r5, pc} -.L348: + pop {r4, pc} +.L335: + bl flash_exit_slc_mode + b .L336 +.L345: .align 2 -.L347: +.L344: .word .LANCHOR0 .fnend .size ftl_flash_de_init, .-ftl_flash_de_init .align 1 .global NandcRandmzSel + .syntax unified .thumb .thumb_func + .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, .L350 - add r0, r3, r0, lsl #3 - ldr r3, [r0, #12] + ldr r3, .L347 + ldr r3, [r3, r0, lsl #3] str r1, [r3, #336] bx lr -.L351: +.L348: .align 2 -.L350: +.L347: .word .LANCHOR0 .fnend .size NandcRandmzSel, .-NandcRandmzSel .global __aeabi_idiv .align 1 .global NandcTimeCfg + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcTimeCfg, %function NandcTimeCfg: .fnstart @@ -2320,53 +2457,55 @@ mov r4, r0 movs r0, #0 bl rknand_get_clk_rate - ldr r1, .L362 + ldr r1, .L359 bl __aeabi_idiv - ldr r3, .L362+4 - ldr r3, [r3, #80] + ldr r3, .L359+4 cmp r0, #250 - ble .L353 + ldr r3, [r3, #88] + ble .L350 movw r2, #8354 - b .L360 -.L353: - cmp r0, #220 - bgt .L361 - cmp r0, #185 - ble .L356 - movw r2, #4226 - b .L360 -.L356: - cmp r0, #160 - ble .L357 - movw r2, #4194 - b .L360 .L357: - cmp r4, #35 - bhi .L358 - movw r2, #4193 - b .L360 -.L358: - cmp r4, #99 - bls .L359 -.L361: - movw r2, #8322 - b .L360 -.L359: - movw r2, #4225 -.L360: str r2, [r3, #4] pop {r4, pc} -.L363: +.L350: + cmp r0, #220 + ble .L352 +.L358: + movw r2, #8322 + b .L357 +.L352: + cmp r0, #185 + ble .L353 + movw r2, #4226 + b .L357 +.L353: + cmp r0, #160 + ble .L354 + movw r2, #4194 + b .L357 +.L354: + cmp r4, #35 + bhi .L355 + movw r2, #4193 + b .L357 +.L355: + cmp r4, #99 + bhi .L358 + movw r2, #4225 + b .L357 +.L360: .align 2 -.L362: +.L359: .word 1000000 .word .LANCHOR0 .fnend .size NandcTimeCfg, .-NandcTimeCfg .align 1 .global FlashTimingCfg + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashTimingCfg, %function FlashTimingCfg: .fnstart @@ -2376,33 +2515,35 @@ sub r3, r0, #4192 subs r3, r3, #1 cmp r3, #1 - bls .L365 + bls .L362 sub r3, r0, #4224 subs r3, r3, #1 cmp r3, #1 - bls .L365 + bls .L362 movw r3, #8322 cmp r0, r3 - bne .L366 -.L365: - ldr r3, .L367 - ldr r3, [r3, #80] + bne .L363 +.L362: + ldr r3, .L364 + ldr r3, [r3, #88] str r0, [r3, #4] -.L366: - ldr r3, .L367+4 - ldrb r0, [r3, #493] @ zero_extendqisi2 +.L363: + ldr r3, .L364+4 + ldrb r0, [r3, #489] @ zero_extendqisi2 b NandcTimeCfg -.L368: +.L365: .align 2 -.L367: +.L364: .word .LANCHOR0 .word .LANCHOR1 .fnend .size FlashTimingCfg, .-FlashTimingCfg .align 1 .global NandcInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcInit, %function NandcInit: .fnstart @@ -2410,68 +2551,69 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - movs r1, #0 - ldr r3, .L371 movs r2, #1 + ldr r3, .L368 + movs r1, #0 movs r5, #0 - str r1, [r3, #16] - str r0, [r3, #12] - str r2, [r3, #24] + str r2, [r3, #12] movs r2, #2 - str r0, [r3, #20] - str r2, [r3, #32] + str r2, [r3, #20] movs 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 r4, r2, #13, #1 bfi r2, r1, #13, #1 ldr r1, [r0, #352] orr r2, r2, #256 - str r4, [r3, #2256] + str r4, [r3, #2260] movw r4, #2049 ubfx r1, r1, #16, #4 - str r1, [r3, #2260] + str r1, [r3, #2264] ldr r1, [r0, #352] cmp r1, r4 + str r1, [r3, #2268] mov r4, r3 - str r1, [r3, #2264] itt eq moveq r3, #8 - streq r3, [r4, #2260] + streq r3, [r4, #2264] str r2, [r0] movs 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, .L371+4 + ldr r2, .L368+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] + add r0, r0, #32768 + str r0, [r4, #2280] + str r5, [r4, #2300] + str r5, [r4, #2308] pop {r3, r4, r5, pc} -.L372: +.L369: .align 2 -.L371: +.L368: .word .LANCHOR0 .word 1579009 .fnend .size NandcInit, .-NandcInit .align 1 .global NandcGetTimeCfg + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcGetTimeCfg, %function NandcGetTimeCfg: .fnstart @@ -2479,163 +2621,171 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, lr} .save {r4, r5, lr} - ldr r4, .L374 - ldr r5, [r4, #80] + ldr r4, .L371 + ldr r5, [r4, #88] ldr r5, [r5, #4] str r5, [r0] - ldr r0, [r4, #80] + ldr r0, [r4, #88] ldr r0, [r0] str r0, [r1] - ldr r1, [r4, #80] + ldr r1, [r4, #88] ldr r1, [r1, #304] str r1, [r2] - ldr r1, [r4, #80] + ldr r1, [r4, #88] ldr r2, [r1, #308] ldr r1, [r1, #344] uxtb r2, r2 orr r2, r2, r1, lsl #16 str r2, [r3] pop {r4, r5, pc} -.L375: +.L372: .align 2 -.L374: +.L371: .word .LANCHOR0 .fnend .size NandcGetTimeCfg, .-NandcGetTimeCfg .align 1 .global NandcBchSel + .syntax unified .thumb .thumb_func + .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, .L384 - movs r1, #1 - ldr r2, [r3, #80] - str r0, [r3, #2308] - movs r3, #0 - str r1, [r2, #8] - movs r1, #16 - cmp r0, r1 - bfi r3, r1, #8, #8 - bfc r3, #18, #1 - bne .L377 -.L380: - bfc r3, #4, #1 - b .L378 + ldr r3, .L381 + movs r1, #0 + push {r4, lr} + .save {r4, lr} + movs r4, #1 + ldr r2, [r3, #88] + str r0, [r3, #2312] + mov r3, r1 + str r4, [r2, #8] + movs r4, #16 + cmp r0, r4 + bfi r3, r4, #8, #8 + bfi r3, r1, #18, #1 + bne .L374 .L377: + bfc r3, #4, #1 +.L375: + orr r3, r3, #1 + str r3, [r2, #12] + pop {r4, pc} +.L374: cmp r0, #24 - bne .L379 + bne .L376 orr r3, r3, #16 - b .L378 -.L379: + b .L375 +.L376: cmp r0, #40 orr r3, r3, #262144 orr r3, r3, #16 - beq .L380 -.L378: - orr r3, r3, #1 - str r3, [r2, #12] - bx lr -.L385: + bne .L375 + b .L377 +.L382: .align 2 -.L384: +.L381: .word .LANCHOR0 .fnend .size NandcBchSel, .-NandcBchSel .align 1 .global FlashBchSel + .syntax unified .thumb .thumb_func + .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, .L387 - strb r0, [r3, #2312] + ldr r3, .L384 + strb r0, [r3, #2316] b NandcBchSel -.L388: +.L385: .align 2 -.L387: +.L384: .word .LANCHOR0 .fnend .size FlashBchSel, .-FlashBchSel .align 1 .global ftl_flash_resume + .syntax unified .thumb .thumb_func + .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, .L397 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r5, #0 - ldr r2, [r3, #80] - addw r6, r3, #2068 - ldr r1, [r3, #84] - mov r4, r3 + ldr r4, .L394 + ldr r2, [r4, #88] + addw r6, r4, #2072 + ldr r1, [r4, #92] str r1, [r2] - ldr r1, [r3, #88] - ldr r2, [r3, #80] + ldr r1, [r4, #96] + ldr r2, [r4, #88] str r1, [r2, #4] - ldr r1, [r3, #92] + ldr r1, [r4, #100] str r1, [r2, #8] - ldr r1, [r3, #96] + ldr r1, [r4, #104] str r1, [r2, #12] - ldr r1, [r3, #100] + ldr r1, [r4, #108] str r1, [r2, #304] - ldr r1, [r3, #104] + ldr r1, [r4, #112] str r1, [r2, #308] - ldr r1, [r3, #108] + ldr r1, [r4, #116] str r1, [r2, #336] - ldr r1, [r3, #112] + ldr r1, [r4, #120] str r1, [r2, #344] -.L391: +.L388: ldrb r3, [r6, r5, lsl #3] @ zero_extendqisi2 subs r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L390 + bhi .L387 uxtb r0, r5 bl FlashReset -.L390: +.L387: adds r5, r5, #1 cmp r5, #4 - bne .L391 - ldrb r3, [r4, #2252] @ zero_extendqisi2 - ldr r5, .L397 - cbz r3, .L392 + bne .L388 + ldrb r3, [r4, #2256] @ zero_extendqisi2 + cbz r3, .L389 movs 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 -.L392: - ldr r3, [r4, #44] +.L389: + ldr r3, [r4, #48] pop {r4, r5, r6, lr} ldrb r0, [r3, #20] @ zero_extendqisi2 b FlashBchSel -.L398: +.L395: .align 2 -.L397: +.L394: .word .LANCHOR0 .fnend .size ftl_flash_resume, .-ftl_flash_resume .align 1 .global ftl_nandc_get_irq_status + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_nandc_get_irq_status, %function ftl_nandc_get_irq_status: .fnstart @@ -2648,8 +2798,10 @@ .size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status .align 1 .global rk_nandc_flash_ready + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_nandc_flash_ready, %function rk_nandc_flash_ready: .fnstart @@ -2667,8 +2819,10 @@ .size rk_nandc_flash_ready, .-rk_nandc_flash_ready .align 1 .global NandcIqrWaitFlashReady + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcIqrWaitFlashReady, %function NandcIqrWaitFlashReady: .fnstart @@ -2680,8 +2834,10 @@ .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady .align 1 .global rk_nandc_flash_xfer_completed + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_nandc_flash_xfer_completed, %function rk_nandc_flash_xfer_completed: .fnstart @@ -2699,8 +2855,10 @@ .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed .align 1 .global NandcSendDumpDataStart + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcSendDumpDataStart, %function NandcSendDumpDataStart: .fnstart @@ -2710,10 +2868,10 @@ ldr r2, [r0, #16] .pad #8 sub sp, sp, #8 - ldr r3, .L404 + ldr r3, .L401 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] @@ -2723,16 +2881,18 @@ add sp, sp, #8 @ sp needed bx lr -.L405: +.L402: .align 2 -.L404: +.L401: .word 538969130 .fnend .size NandcSendDumpDataStart, .-NandcSendDumpDataStart .align 1 .global NandcSendDumpDataDone + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: .fnstart @@ -2741,12 +2901,12 @@ @ link register save eliminated. .pad #8 sub sp, sp, #8 -.L407: +.L404: ldr r3, [r0, #8] str r3, [sp, #4] ldr r3, [sp, #4] lsls r3, r3, #11 - bpl .L407 + bpl .L404 add sp, sp, #8 @ sp needed bx lr @@ -2754,8 +2914,10 @@ .size NandcSendDumpDataDone, .-NandcSendDumpDataDone .align 1 .global NandcXferStart + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcXferStart, %function NandcXferStart: .fnstart @@ -2767,158 +2929,162 @@ sub sp, sp, #20 mov r6, r1 ldr r1, [sp, #60] + str r2, [sp, #4] ldr fp, [sp, #56] - cbnz r1, .L424 + cmp r1, #0 + bne .L421 adds r1, fp, #0 it ne movne r1, #1 - b .L411 -.L424: - movs r1, #1 -.L411: - ldr r5, .L429 - mov lr, #16 - movs r4, #0 - add r0, r5, r0, lsl #3 - ldr r7, [r0, #12] - ldrb r0, [r0, #16] @ zero_extendqisi2 +.L408: + ldr r4, .L426 + mov ip, #16 + movs r5, #0 + ldr r7, [r4, r0, lsl #3] + add r0, r4, r0, lsl #3 ldr r8, [r7, #12] - bfi r8, lr, #8, #8 - bfi r8, r4, #3, #1 - bfi r4, r6, #1, #1 + ldrb r0, [r0, #4] @ zero_extendqisi2 + bfi r8, ip, #8, #8 + bfi r8, r5, #3, #1 + bfi r5, r6, #1, #1 bfi r8, r0, #5, #3 - orr r4, r4, #8 + orr r5, r5, #8 movs r0, #1 - bfi r4, r0, #5, #2 + bfi r5, r0, #5, #2 lsrs r3, r3, r0 - orr r4, r4, #536870912 - orr r4, r4, #1024 - bfi r4, r3, #4, #1 - ldr r3, [r5, #2260] + orr r5, r5, #536870912 + orr r5, r5, #1024 + bfi r5, r3, #4, #1 + ldr r3, [r4, #2264] cmp r3, #3 - bls .L412 + bls .L409 ldr r3, [r7, #16] str r3, [sp, #12] ldr r3, [sp, #12] - bic r3, r3, #4 + bfc r3, #2, #1 str r3, [sp, #12] cmp r1, #0 - beq .L413 - cbnz r6, .L414 -.L422: + beq .L410 + cmp r6, #0 + bne .L411 +.L419: + ldr r2, [sp, #4] adds r2, r2, #1 asrs r2, r2, #1 - bfi r4, r2, #22, #6 + bfi r5, r2, #22, #6 cmp fp, #0 - beq .L415 + beq .L412 mov r0, fp - b .L416 -.L414: - ldr r3, [r5, #2308] - mov r9, r5 - ldr lr, [sp, #60] - cmp r3, #25 - ite cc - movcc r3, #64 - movcs r3, #128 - str r3, [sp] - lsrs r3, r2, #1 - str r3, [sp, #4] - movs r3, #0 - mov r0, r3 -.L418: - ldr r1, [sp, #4] - cmp r0, r1 - bcs .L422 - ldr r1, [sp, #60] - lsr r10, r3, #2 - cbz r1, .L419 - ldrh r1, [lr, #2] - ldrh ip, [lr], #4 - orr ip, ip, r1, lsl #16 - ldr r1, [r9, #2276] - str ip, [r1, r10, lsl #2] - b .L420 -.L419: - ldr r1, [r9, #2276] - mov ip, r1 - mov r1, #-1 - str r1, [ip, r10, lsl #2] -.L420: - ldr r1, [sp] - adds r0, r0, #1 - add r3, r3, r1 - b .L418 -.L415: - ldr r0, [r5, #2272] -.L416: - ldr r3, [r5, #2276] - ubfx r9, r4, #22, #5 +.L413: + ldr r3, [r4, #2280] + ubfx r9, r5, #22, #5 mov r2, r6 - str r0, [r5, #2280] lsl r1, r9, #10 - str r3, [r5, #2284] + str r0, [r4, #2284] + str r3, [r4, #2288] bl rknand_dma_map_single mov r2, r6 + str r0, [r4, #2292] lsl r1, r9, #7 + ldr r0, [r4, #2288] clz r6, r6 - lsrs r6, r6, #5 - str r0, [r5, #2288] - ldr r0, [r5, #2284] bl rknand_dma_map_single movs r3, #1 - str r3, [r5, #2296] + str r0, [r4, #2296] + str r3, [r4, #2300] + movs r2, #16 + ldr r3, [r4, #2292] tst fp, #3 - ldr r3, [r5, #2288] - str r0, [r5, #2292] + lsr r6, r6, #5 str r3, [r7, #20] - ldr r3, [r5, #2292] + ldr r3, [r4, #2296] str r3, [r7, #24] mov r3, #0 str r3, [sp, #12] ldr r3, [sp, #12] - bic r3, r3, #15872 - orr r3, r3, #8192 + bfi r3, r2, #9, #5 + it eq + moveq r2, #2 str r3, [sp, #12] ldr r3, [sp, #12] orr r3, r3, #448 str r3, [sp, #12] - itttt eq + ittt eq ldreq r3, [sp, #12] - biceq r3, r3, #56 - orreq r3, r3, #16 + 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] - bic r3, r3, #2 - orr r6, r3, r6, lsl #1 - str r6, [sp, #12] + bfi r3, r6, #1, #1 + str r3, [sp, #12] ldr r3, [sp, #12] orr r3, r3, #1 str r3, [sp, #12] -.L413: +.L410: ldr r3, [sp, #12] str r3, [r7, #16] -.L412: +.L409: str r8, [r7, #12] - str r4, [r7, #8] - orr r4, r4, #4 - str r4, [r7, #8] + str r5, [r7, #8] + orr r5, r5, #4 + str r5, [r7, #8] add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L430: +.L421: + movs r1, #1 + b .L408 +.L411: + ldr r3, [r4, #2312] + cmp r3, #25 + ldr r3, [sp, #4] + ite cc + movcc r10, #64 + movcs r10, #128 + lsr r9, r3, #1 + ldr r3, [sp, #60] + str r3, [sp] + movs r3, #0 + mov r0, r3 +.L415: + cmp r0, r9 + bcs .L419 + ldr r1, [sp, #60] + bic lr, r3, #3 + cbz r1, .L416 + ldr r2, [sp] + ldr r1, [r2], #4 @ unaligned + str r2, [sp] + mov r2, r1 + ldr r1, [r4, #2280] + mov ip, r1 + str r2, [ip, lr] +.L417: + adds r0, r0, #1 + add r3, r3, r10 + b .L415 +.L416: + ldr r1, [r4, #2280] + mov r2, #-1 + str r2, [r1, lr] + b .L417 +.L412: + ldr r0, [r4, #2276] + b .L413 +.L427: .align 2 -.L429: +.L426: .word .LANCHOR0 .fnend .size NandcXferStart, .-NandcXferStart .align 1 .global Ftl_log2 + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftl_log2, %function Ftl_log2: .fnstart @@ -2927,23 +3093,25 @@ @ link register save eliminated. movs r1, #0 movs r2, #1 -.L432: +.L429: cmp r2, r0 uxth r3, r1 add r1, r1, #1 - bhi .L434 - lsls r2, r2, #1 - b .L432 -.L434: + bls .L430 subs r0, r3, #1 uxth r0, r0 bx lr +.L430: + lsls r2, r2, #1 + b .L429 .fnend .size Ftl_log2, .-Ftl_log2 .align 1 .global FtlPrintInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlPrintInfo, %function FtlPrintInfo: .fnstart @@ -2955,40 +3123,44 @@ .size FtlPrintInfo, .-FtlPrintInfo .align 1 .global FtlSysBlkNumInit + .syntax unified .thumb .thumb_func + .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, .L438 - cmp r0, #23 - it ls - movls r0, #24 - ldrh r2, [r3, #2320] - ldrh r1, [r3, #2330] - str r0, [r3, #2316] + ldr r3, .L433 + cmp r0, #24 + it cc + movcc r0, #24 + ldrh r2, [r3, #2324] + ldrh r1, [r3, #2334] + str r0, [r3, #2320] muls r2, r0, r2 subs r0, r1, r0 - ldr r1, [r3, #2336] - strh r0, [r3, #2328] @ movhi + ldr r1, [r3, #2340] + strh r0, [r3, #2332] @ movhi movs r0, #0 - str r2, [r3, #2324] + str r2, [r3, #2328] subs r2, r1, r2 - str r2, [r3, #2332] + str r2, [r3, #2336] bx lr -.L439: +.L434: .align 2 -.L438: +.L433: .word .LANCHOR0 .fnend .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 1 .global FtlConstantsInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlConstantsInit, %function FtlConstantsInit: .fnstart @@ -3000,388 +3172,392 @@ sub sp, sp, #20 ldrh r1, [r0, #14] mov r5, r0 - ldr r4, .L468 - ldrh lr, [r0, #8] + ldr r4, .L462 str r1, [sp] ldrh r1, [sp] + ldrh ip, [r0, #8] ldrh r2, [r0, #10] ldrh r3, [r0, #12] - addw r0, r4, #2348 - strh r1, [r4, #2330] @ movhi + addw r0, r4, #2350 + strh r1, [r4, #2334] @ movhi movs r1, #0 - strh lr, [r4, #2340] @ movhi - strh r2, [r4, #2342] @ movhi - strh r3, [r4, #2344] @ movhi -.L441: + strh ip, [r4, #2344] @ movhi + strh r2, [r4, #2346] @ movhi + strh r3, [r4, #2348] @ movhi +.L436: strb r1, [r1, r0] adds r1, r1, #1 cmp r1, #32 - bne .L441 + bne .L436 ldrh r0, [r5, #14] ldrh r1, [r5, #20] cmp r1, r0, lsr #8 - bcs .L442 + bcs .L437 uxtb r10, r3 - ldr r9, .L468+4 + ldr r9, .L462+4 lsl r1, r10, #1 uxtb r1, r1 - str r1, [sp, #8] + str r1, [sp, #4] subs r1, r2, #1 muls r1, r3, r1 - str r1, [sp, #4] + str r1, [sp, #12] movs r1, #0 -.L443: +.L438: cmp r1, r3 - bcs .L445 - ldr r6, [sp, #4] - rsb ip, r3, r1 + bcs .L440 + ldr r6, [sp, #12] + sub lr, r1, r3 uxtb r0, r1 - add ip, ip, r9 + add lr, lr, r9 adds r6, r1, r6 add r6, r9, r6 - str r6, [sp, #12] + str r6, [sp, #8] movs r6, #0 mov r8, r6 -.L446: - cmp r8, r2 - add r6, r6, r3 - bcs .L467 - ldr r7, [sp, #12] - add fp, r0, r10 - strb r0, [ip, r6] + b .L441 +.L439: + ldr r7, [sp, #8] + add fp, r10, r0 + strb r0, [lr, r6] add r8, r8, #1 strb fp, [r7, r6] - ldr r7, [sp, #8] + ldr r7, [sp, #4] add r0, r0, r7 uxtb r0, r0 - b .L446 -.L467: +.L441: + cmp r8, r2 + add r6, r6, r3 + bcc .L439 adds r1, r1, #1 - b .L443 -.L445: + b .L438 +.L440: lsls r2, r2, #1 - strh r2, [r4, #2342] @ movhi + strh r2, [r4, #2346] @ movhi ldr r2, [sp] lsrs r7, r2, #1 - strh r7, [r4, #2330] @ movhi -.L442: - cmp lr, #1 - mov r2, #5 - strh r2, [r4, #2380] @ movhi - mov r2, #0 + strh r7, [r4, #2334] @ movhi +.L437: + movs r2, #5 + ldrb r9, [r4, #36] @ zero_extendqisi2 strh r2, [r4, #2382] @ movhi - it eq - ldreq r2, .L468 - ldrb r9, [r4] @ zero_extendqisi2 - it eq - strheq lr, [r2, #2380] @ movhi - mov r2, #4352 + movs r2, #0 strh r2, [r4, #2384] @ movhi + cmp ip, #1 + mov r2, #4352 + it eq + strheq ip, [r4, #2382] @ movhi + strh r2, [r4, #2386] @ movhi cmp r9, #0 - beq .L448 - ldr r2, .L468 - mov r1, #384 - strh r1, [r2, #2384] @ movhi -.L448: - ldrh r7, [r4, #2342] - ldrh r6, [r4, #2330] + beq .L443 + mov r2, #384 + strh r2, [r4, #2386] @ movhi +.L443: + ldrh r7, [r4, #2346] + ldrh r6, [r4, #2334] ldrh r8, [r5, #16] - smulbb r7, r7, r3 ldrh fp, [r5, #20] - smulbb r3, r6, r3 + smulbb r7, r7, r3 ldrh r1, [r5, #18] + smulbb r3, r3, r6 + strh r8, [r4, #2390] @ movhi mov r0, fp - strh r8, [r4, #2388] @ movhi - strh fp, [r4, #2394] @ movhi + strh fp, [r4, #2396] @ movhi uxth r7, r7 - strh r1, [r4, #2390] @ movhi - str r1, [sp] - strh r3, [r4, #2386] @ movhi + strh r1, [r4, #2392] @ movhi + strh r3, [r4, #2388] @ movhi smulbb r3, r7, r8 - strh r7, [r4, #2320] @ movhi - strh r3, [r4, #2392] @ movhi + str r1, [sp] + strh r7, [r4, #2324] @ movhi + strh r3, [r4, #2394] @ movhi bl Ftl_log2 lsl r3, fp, #9 cmp r6, #1024 + strh r0, [r4, #2398] @ movhi + mov r10, r0 uxth r3, r3 - strh r3, [r4, #2398] @ movhi - it hi - ldrhi r2, .L468 - lsr r3, r3, #8 + ldr r1, [sp] + ldrh r0, [r4, #2386] strh r3, [r4, #2400] @ movhi - ldrh r3, [r5, #26] + lsr r3, r3, #8 strh r3, [r4, #2402] @ movhi + mul r1, fp, r1 + ldrh r3, [r5, #26] + lsl r0, r0, #3 + strh r3, [r4, #2404] @ movhi mul r3, r6, r7 - str r3, [r4, #2336] + str r3, [r4, #2340] itt hi uxtbhi r3, r6 - strhhi r3, [r2, #2382] @ movhi - mov r10, r0 - ldrh r5, [r4, #2382] - ldr r1, [sp] - subs r5, r6, r5 - strh r0, [r4, #2396] @ movhi - ldrh r0, [r4, #2384] - muls r5, r7, r5 - ldr r3, .L468 - lsls r0, r0, #3 - mul r1, r1, fp - str r3, [sp] - mul r5, fp, r5 - mul r5, r8, r5 - asrs r5, r5, #11 - str r5, [r4, #2404] + strhhi r3, [r4, #2384] @ movhi + ldrh r3, [r4, #2384] + subs r3, r6, r3 + muls r3, r7, r3 + mul r3, fp, r3 + mul r8, r8, r3 + asr r3, r8, #11 + str r3, [r4, #2408] bl __aeabi_idiv - ldr r3, [sp] uxth r0, r0 cmp r0, #4 itet ls - movls r2, #4 - strhhi r0, [r3, #2408] @ movhi - strhls r2, [r3, #2408] @ movhi + movls r3, #4 + strhhi r0, [r4, #2412] @ movhi + strhls r3, [r4, #2412] @ movhi cmp r9, #0 - beq .L452 + beq .L447 mov r3, #640 - strh r3, [r4, #2384] @ movhi -.L452: - ldrh r3, [r4, #2384] + strh r3, [r4, #2386] @ movhi +.L447: + ldrh r3, [r4, #2386] lsls r6, r6, #6 mov r1, r7 - ldr r5, .L468 + ldrh r0, [r4, #2412] asr r3, r3, r10 add r10, r10, #9 asr r6, r6, r10 adds r3, r3, #2 - strh r3, [r4, #2410] @ movhi - uxth r0, r6 - strh r6, [r4, #2412] @ movhi - add r6, r0, #8 - mul r3, r7, r0 - ldrh r0, [r4, #2408] - str r3, [r4, #2416] + strh r6, [r4, #2416] @ movhi + uxth r6, r6 + strh r3, [r4, #2414] @ movhi + mul r3, r6, r7 + adds r6, r6, #8 + str r3, [r4, #2420] bl __aeabi_uidiv - cmp r7, #1 uxtah r0, r6, r0 - ldr r6, .L468 + cmp r7, #1 it eq addeq r0, r0, #4 - str r0, [r5, #2316] - ldrh r0, [r4, #2316] + str r0, [r4, #2320] + ldrh r0, [r4, #2320] bl FtlSysBlkNumInit - ldr r3, [r4, #2316] - ldr r5, [r4, #2332] + ldr r5, [r4, #2336] mov r0, #2048 - ldrh r7, [r4, #2394] - str r3, [r4, #2420] - ldrh r3, [r4, #2388] - lsls r5, r5, #2 - mov r1, r7 + ldr r3, [r4, #2320] + ldrh r6, [r4, #2396] + str r3, [r4, #2424] + lsls r3, r5, #2 + ldrh r5, [r4, #2390] + mov r1, r6 muls r5, r3, r5 - ldrh r3, [r4, #2396] + ldrh r3, [r4, #2398] adds r3, r3, #9 lsrs r5, r5, r3 adds r5, r5, #2 uxth r5, r5 - strh r5, [r4, #2424] @ movhi + strh r5, [r4, #2428] @ movhi bl __aeabi_idiv - ldrh r2, [r4, #2408] + ldrh r2, [r4, #2412] movs r3, #0 - str r3, [r4, #2428] + str r3, [r4, #2432] + strh r0, [r4, #2430] @ movhi adds r3, r2, #3 - strh r3, [r4, #2408] @ movhi - ldr r3, [r4, #2416] + ldrb r0, [r4, #152] @ zero_extendqisi2 + strh r3, [r4, #2412] @ movhi + ldr r3, [r4, #2420] adds r1, r3, #3 - str r1, [r4, #2416] - strh r0, [r4, #2426] @ movhi - ldrb r0, [r4, #144] @ zero_extendqisi2 - cbz r0, .L455 - adds r2, r2, #4 + str r1, [r4, #2420] + cbz r0, .L450 adds r3, r3, #5 - strh r2, [r6, #2408] @ movhi - b .L466 -.L455: - cmp r1, #7 - bhi .L456 - movs r3, #8 -.L466: - str r3, [r6, #2416] -.L456: - ldrh r2, [r4, #2328] + adds r2, r2, #4 + strh r2, [r4, #2412] @ movhi +.L461: + str r3, [r4, #2420] +.L451: + ldrh r2, [r4, #2332] movs r3, #0 - strh r3, [r4, #2432] @ movhi + strh r3, [r4, #2436] @ movhi movs r0, #0 lsrs r3, r2, #3 add r3, r3, r2, lsl #1 adds r3, r3, #52 add r5, r3, r5, lsl #2 - cmp r5, r7, lsl #9 - ittt cc - movcc r2, #1 - ldrcc r3, .L468 - strhcc r2, [r3, #2432] @ movhi + cmp r5, r6, lsl #9 + itt cc + movcc r3, #1 + strhcc r3, [r4, #2436] @ movhi add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L469: +.L450: + cmp r1, #7 + bhi .L451 + movs r3, #8 + b .L461 +.L463: .align 2 -.L468: +.L462: .word .LANCHOR0 - .word .LANCHOR0+2348 + .word .LANCHOR0+2350 .fnend .size FtlConstantsInit, .-FtlConstantsInit .align 1 .global IsBlkInVendorPart + .syntax unified .thumb .thumb_func + .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, .L477 - ldrh r3, [r2, #2434] - cbz r3, .L476 - ldr r3, [r2, #2436] - ldrh r2, [r2, #2408] + ldr r2, .L471 + ldrh r3, [r2, #2438] + cbz r3, .L470 + ldr r3, [r2, #2440] + ldrh r2, [r2, #2412] add r2, r3, r2, lsl #1 -.L472: +.L466: cmp r3, r2 - beq .L476 - ldrh r1, [r3], #2 - cmp r1, r0 - bne .L472 - movs r0, #1 - bx lr -.L476: + bne .L467 +.L470: movs r0, #0 bx lr -.L478: +.L467: + ldrh r1, [r3], #2 + cmp r0, r1 + bne .L466 + movs r0, #1 + bx lr +.L472: .align 2 -.L477: +.L471: .word .LANCHOR0 .fnend .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 1 .global FtlCacheMetchLpa + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlCacheMetchLpa, %function FtlCacheMetchLpa: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L487 + ldr r2, .L481 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - ldr r3, [r2, #2440] - cbz r3, .L486 - ldr r5, [r2, #2444] + ldr r3, [r2, #2444] + cbz r3, .L480 + ldr r5, [r2, #2448] movs r6, #36 movs r2, #0 -.L482: +.L476: mla r4, r6, r2, r5 ldr r4, [r4, #16] cmp r4, r0 - bcc .L481 + bcc .L475 cmp r4, r1 - bls .L484 -.L481: + bls .L478 +.L475: adds r2, r2, #1 - cmp r2, r3 - bne .L482 -.L486: + cmp r3, r2 + bne .L476 +.L480: movs r0, #0 pop {r4, r5, r6, pc} -.L484: +.L478: movs r0, #1 pop {r4, r5, r6, pc} -.L488: +.L482: .align 2 -.L487: +.L481: .word .LANCHOR0 .fnend .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 1 .global FtlGetCap + .syntax unified .thumb .thumb_func + .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, .L490 - ldr r0, [r3, #2428] + ldr r3, .L484 + ldr r0, [r3, #2432] bx lr -.L491: +.L485: .align 2 -.L490: +.L484: .word .LANCHOR0 .fnend .size FtlGetCap, .-FtlGetCap .align 1 .global FtlGetCapacity + .syntax unified .thumb .thumb_func + .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, .L493 - ldr r0, [r3, #2428] + ldr r3, .L487 + ldr r0, [r3, #2432] bx lr -.L494: +.L488: .align 2 -.L493: +.L487: .word .LANCHOR0 .fnend .size FtlGetCapacity, .-FtlGetCapacity .align 1 .global ftl_get_density + .syntax unified .thumb .thumb_func + .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, .L496 - ldr r0, [r3, #2428] + ldr r3, .L490 + ldr r0, [r3, #2432] bx lr -.L497: +.L491: .align 2 -.L496: +.L490: .word .LANCHOR0 .fnend .size ftl_get_density, .-ftl_get_density .align 1 .global FtlGetLpn + .syntax unified .thumb .thumb_func + .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, .L499 - ldr r0, [r3, #2448] + ldr r3, .L493 + ldr r0, [r3, #2452] bx lr -.L500: +.L494: .align 2 -.L499: +.L493: .word .LANCHOR0 .fnend .size FtlGetLpn, .-FtlGetLpn .align 1 .global FtlBbmMapBadBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: .fnstart @@ -3390,47 +3566,50 @@ push {r0, r1, r2, r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} .pad #12 - mov r6, r0 - ldr r5, .L502 - ldrh r4, [r5, #2386] - mov r1, r4 + mov r5, r0 + ldr r4, .L496 + ldrh r7, [r4, #2388] + mov r1, r7 bl __aeabi_uidiv - uxth r2, r0 - smulbb r3, r2, r4 - add r1, r5, r2, lsl #2 - ldr r4, [r1, #2480] - movs r1, #1 - subs r3, r6, r3 - uxth r3, r3 - and r0, r3, #31 - lsrs r7, r3, #5 - lsls r1, r1, r0 - ldr r0, [r4, r7, lsl #2] - orrs r1, r1, r0 - ldr r0, .L502+4 - str r1, [r4, r7, lsl #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] + lsrs r1, r3, #5 + and r7, r3, #31 + movs r0, #1 + lsls r0, r0, r7 + ldr r7, [r2, r1, lsl #2] + orrs r0, r0, r7 + str r0, [r2, r1, lsl #2] + mov r2, r6 + str r0, [sp] + mov r1, r5 + ldr r0, .L496+4 bl printk - ldrh r3, [r5, #2458] + ldrh r3, [r4, #2462] movs r0, #0 adds r3, r3, #1 - strh r3, [r5, #2458] @ movhi + strh r3, [r4, #2462] @ movhi add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, pc} -.L503: +.L497: .align 2 -.L502: +.L496: .word .LANCHOR0 .word .LC2 .fnend .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock - .global __aeabi_uidivmod .align 1 .global FtlBbmIsBadBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: .fnstart @@ -3439,33 +3618,35 @@ push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r7, r0 - ldr r5, .L505 - ldrh r6, [r5, #2386] + ldr r5, .L499 + ldrh r6, [r5, #2388] mov r1, r6 bl __aeabi_uidivmod mov r0, r7 uxth r4, r1 mov r1, r6 bl __aeabi_uidiv - lsrs r2, r4, #5 - and r4, r4, #31 uxth r0, r0 + lsrs r2, r4, #5 add r5, r5, r0, lsl #2 - ldr r3, [r5, #2480] + and r4, r4, #31 + ldr r3, [r5, #2484] ldr r0, [r3, r2, lsl #2] lsrs r0, r0, r4 and r0, r0, #1 pop {r3, r4, r5, r6, r7, pc} -.L506: +.L500: .align 2 -.L505: +.L499: .word .LANCHOR0 .fnend .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock .align 1 .global FtlBbtInfoPrint + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlBbtInfoPrint, %function FtlBbtInfoPrint: .fnstart @@ -3477,45 +3658,49 @@ .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .align 1 .global FtlBbtCalcTotleCnt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L509 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r5, #0 - ldr r4, .L516 - ldrh r6, [r4, #2386] - ldrh r3, [r4, #2342] mov r4, r5 - muls r6, r3, r6 -.L509: + ldrh r2, [r3, #2388] + ldrh r6, [r3, #2346] + muls r6, r2, r6 +.L503: uxth r0, r5 cmp r0, r6 - bge .L515 - bl FtlBbmIsBadBlock - cbz r0, .L510 - adds r4, r4, #1 - uxth r4, r4 -.L510: - adds r5, r5, #1 - b .L509 -.L515: + blt .L505 mov r0, r4 pop {r4, r5, r6, pc} -.L517: +.L505: + bl FtlBbmIsBadBlock + cbz r0, .L504 + adds r4, r4, #1 + uxth r4, r4 +.L504: + adds r5, r5, #1 + b .L503 +.L510: .align 2 -.L516: +.L509: .word .LANCHOR0 .fnend .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 1 .global V2P_block + .syntax unified .thumb .thumb_func + .fpu softvfp .type V2P_block, %function V2P_block: .fnstart @@ -3523,41 +3708,45 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - mov r4, r1 - ldr r6, .L519 + mov r5, r1 + ldr r4, .L512 mov r7, r0 - ldrh r5, [r6, #2344] - mov r1, r5 - bl __aeabi_uidivmod - mov r0, r7 - smlabb r4, r4, r5, r1 - mov r1, r5 + ldrh r6, [r4, #2348] + mov r1, r6 bl __aeabi_uidiv - ldrh r3, [r6, #2386] - smlabb r0, r3, r0, r4 + ldrh r4, [r4, #2388] + smulbb r5, r6, r5 + mov r1, r6 + smulbb r4, r4, r0 + mov r0, r7 + bl __aeabi_uidivmod + adds r0, r5, r1 + add r0, r0, r4 uxth r0, r0 pop {r3, r4, r5, r6, r7, pc} -.L520: +.L513: .align 2 -.L519: +.L512: .word .LANCHOR0 .fnend .size V2P_block, .-V2P_block .align 1 .global P2V_plane + .syntax unified .thumb .thumb_func + .fpu softvfp .type P2V_plane, %function P2V_plane: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L522 + ldr r3, .L515 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 - ldrh r1, [r3, #2386] - ldrh r5, [r3, #2344] + ldrh r5, [r3, #2348] + ldrh r1, [r3, #2388] bl __aeabi_uidiv mov r1, r5 smulbb r4, r0, r5 @@ -3566,16 +3755,18 @@ add r1, r1, r4 uxth r0, r1 pop {r4, r5, r6, pc} -.L523: +.L516: .align 2 -.L522: +.L515: .word .LANCHOR0 .fnend .size P2V_plane, .-P2V_plane .align 1 .global P2V_block_in_plane + .syntax unified .thumb .thumb_func + .fpu softvfp .type P2V_block_in_plane, %function P2V_block_in_plane: .fnstart @@ -3583,24 +3774,26 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} .save {r4, lr} - ldr r4, .L525 - ldrh r1, [r4, #2386] + ldr r4, .L518 + ldrh r1, [r4, #2388] bl __aeabi_uidivmod uxth r0, r1 - ldrh r1, [r4, #2344] + ldrh r1, [r4, #2348] bl __aeabi_uidiv uxth r0, r0 pop {r4, pc} -.L526: +.L519: .align 2 -.L525: +.L518: .word .LANCHOR0 .fnend .size P2V_block_in_plane, .-P2V_block_in_plane .align 1 .global ftl_cmp_data_ver + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: .fnstart @@ -3608,14 +3801,14 @@ @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. cmp r0, r1 - bls .L528 + bls .L521 subs r0, r0, r1 cmp r0, #-2147483648 ite hi movhi r0, #0 movls r0, #1 bx lr -.L528: +.L521: subs r0, r1, r0 cmp r0, #-2147483648 ite ls @@ -3626,51 +3819,57 @@ .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 1 .global FtlFreeSysBlkQueueEmpty + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L531 - ldrh r0, [r3, #2518] + ldr r3, .L524 + ldrh r0, [r3, #2522] clz r0, r0 lsrs r0, r0, #5 bx lr -.L532: +.L525: .align 2 -.L531: +.L524: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty .align 1 .global FtlFreeSysBlkQueueFull + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L534 - ldrh r0, [r3, #2518] + ldr r3, .L527 + ldrh r0, [r3, #2522] sub r3, r0, #1024 rsbs r0, r3, #0 adcs r0, r0, r3 bx lr -.L535: +.L528: .align 2 -.L534: +.L527: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull .align 1 .global FtlFreeSysBlkQueueIn + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: .fnstart @@ -3679,229 +3878,236 @@ push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} subs r3, r0, #1 + uxth r3, r3 movw r2, #65533 mov r6, r0 - uxth r3, r3 cmp r3, r2 - bhi .L536 - ldr r4, .L545 - ldrh r3, [r4, #2518] + bhi .L529 + ldr r4, .L538 + ldrh r3, [r4, #2522] cmp r3, #1024 - beq .L536 - cbz r1, .L538 - ldr r5, .L545+4 - ldr r3, [r5, #224] - cbnz r3, .L538 + beq .L529 + cbz r1, .L531 + ldr r5, .L538+4 + ldr r3, [r5, #228] + cbnz r3, .L531 bl P2V_block_in_plane - movs r1, #1 - lsls r3, r6, #10 - mov r2, r1 mov r7, r0 - ldr r0, [r5, #228] + ldr r0, [r5, #232] + lsls r3, r6, #10 + movs r2, #1 + mov r1, r2 str r3, [r0, #4] bl FlashEraseBlocks - ldr r2, [r5, #232] + ldr r2, [r5, #236] ldrh r3, [r2, r7, lsl #1] adds r3, r3, #1 strh r3, [r2, r7, lsl #1] @ movhi - ldr r3, [r5, #236] + ldr r3, [r5, #240] adds r3, r3, #1 - str r3, [r5, #236] -.L538: - ldrh r3, [r4, #2518] + str r3, [r5, #240] +.L531: + ldrh r3, [r4, #2522] adds r3, r3, #1 - strh r3, [r4, #2518] @ movhi - ldrh r3, [r4, #2516] + strh r3, [r4, #2522] @ movhi + ldrh r3, [r4, #2520] add r2, r4, r3, lsl #1 adds r3, r3, #1 ubfx r3, r3, #0, #10 - strh r3, [r4, #2516] @ movhi - strh r6, [r2, #2520] @ movhi -.L536: + strh r6, [r2, #2524] @ movhi + strh r3, [r4, #2520] @ movhi +.L529: pop {r3, r4, r5, r6, r7, pc} -.L546: +.L539: .align 2 -.L545: +.L538: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 1 .global FtlFreeSysBLkSort + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L558 + ldr r3, .L549 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - ldrh r4, [r3, #268] - ldr r3, .L558+4 - ldrh r2, [r3, #2518] - cbz r2, .L547 + ldrh r2, [r3, #2522] + cbz r2, .L540 + ldr r2, .L549+4 movs r0, #0 - ldrh r1, [r3, #2514] - ldrh r2, [r3, #2516] - and r4, r4, #31 + ldrh r1, [r3, #2518] mov r6, r0 -.L549: - uxth r5, r0 + ldrh r5, [r2, #272] + ldrh r2, [r3, #2520] + and r5, r5, #31 +.L542: + uxth r4, r0 adds r0, r0, #1 cmp r5, r4 - bge .L557 - add r5, r3, r1, lsl #1 + bgt .L543 + cbz r6, .L540 + strh r1, [r3, #2518] @ movhi + strh r2, [r3, #2520] @ movhi +.L540: + pop {r4, r5, r6, pc} +.L543: + add r4, r3, r1, lsl #1 adds r1, r1, #1 ubfx r1, r1, #0, #10 - ldrh r6, [r5, #2520] - add r5, r3, r2, lsl #1 - strh r6, [r5, #2520] @ movhi + ldrh r6, [r4, #2524] + add r4, r3, r2, lsl #1 + strh r6, [r4, #2524] @ movhi movs r6, #1 add r2, r2, r6 ubfx r2, r2, #0, #10 - b .L549 -.L557: - cbz r6, .L547 - strh r1, [r3, #2514] @ movhi - strh r2, [r3, #2516] @ movhi -.L547: - pop {r4, r5, r6, pc} -.L559: + b .L542 +.L550: .align 2 -.L558: - .word .LANCHOR2 +.L549: .word .LANCHOR0 + .word .LANCHOR2 .fnend .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 1 .global FtlFreeSysBlkQueueOut + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - ldr r4, .L570 - ldr r6, .L570+4 + push {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + ldr r4, .L561 + ldr r5, .L561+4 mov r7, r4 -.L561: - ldrh r1, [r4, #2518] - cbz r1, .L562 - ldrh r3, [r4, #2514] +.L552: + ldrh r1, [r4, #2522] + cmp r1, #0 + beq .L553 + ldrh r3, [r4, #2518] subs r1, r1, #1 - ldr r10, [r6, #224] - strh r1, [r4, #2518] @ movhi + ldr r9, [r5, #228] + strh r1, [r4, #2522] @ movhi add r2, r4, r3, lsl #1 adds r3, r3, #1 ubfx r3, r3, #0, #10 - ldr r8, .L570+4 - ldrh r5, [r2, #2520] - strh r3, [r4, #2514] @ movhi - cmp r10, #0 - bne .L563 - mov r0, r5 + ldrh r6, [r2, #2524] + strh r3, [r4, #2518] @ movhi + cmp r9, #0 + bne .L554 + mov r0, r6 bl P2V_block_in_plane - lsls r3, r5, #10 - mov r9, r0 - ldr r0, [r6, #228] + mov r8, r0 + ldr r0, [r5, #232] + lsls r3, r6, #10 str r3, [r0, #4] - ldrb r3, [r4, #144] @ zero_extendqisi2 - cbz r3, .L564 - mov r1, r10 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L555 movs r2, #1 + mov r1, r9 bl FlashEraseBlocks -.L564: - movs r1, #1 - ldr r0, [r8, #228] - mov r2, r1 +.L555: + movs r2, #1 + ldr r0, [r5, #232] + mov r1, r2 bl FlashEraseBlocks - ldr r2, [r8, #232] - ldrh r3, [r2, r9, lsl #1] + ldr r2, [r5, #236] + ldrh r3, [r2, r8, lsl #1] adds r3, r3, #1 - strh r3, [r2, r9, lsl #1] @ movhi - ldr r3, [r8, #236] + strh r3, [r2, r8, lsl #1] @ movhi + ldr r3, [r5, #240] adds r3, r3, #1 - str r3, [r8, #236] - b .L563 -.L562: - ldr r0, .L570+8 - bl printk -.L565: - b .L565 -.L563: - subs r3, r5, #1 + str r3, [r5, #240] +.L554: + subs r3, r6, #1 movw r2, #65533 uxth r3, r3 cmp r3, r2 - bls .L566 - mov r1, r5 - ldrh r2, [r7, #2518] - ldr r0, .L570+12 + bls .L557 + ldrh r2, [r7, #2522] + mov r1, r6 + ldr r0, .L561+8 bl printk - b .L561 -.L566: - mov r0, r5 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L571: + b .L552 +.L553: + ldr r0, .L561+12 + bl printk +.L556: + b .L556 +.L557: + mov r0, r6 + pop {r3, r4, r5, r6, r7, r8, r9, pc} +.L562: .align 2 -.L570: +.L561: .word .LANCHOR0 .word .LANCHOR2 - .word .LC3 .word .LC4 + .word .LC3 .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 1 .global test_node_in_list + .syntax unified .thumb .thumb_func + .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, .L577 + ldr r3, .L568 push {r4, r5, lr} .save {r4, r5, lr} movw r5, #65535 - ldr r4, [r3, #288] ldr r2, [r0] - ldr r3, .L577+4 - subs r0, r2, r4 - asrs r0, r0, #1 + ldr r4, [r3, #292] + subs r3, r2, r4 + asrs r0, r3, #1 + ldr r3, .L568+4 muls r3, r0, r3 movs r0, #6 uxth r3, r3 -.L574: - cmp r1, r3 - beq .L575 +.L565: + cmp r3, r1 + beq .L566 ldrh r3, [r2] cmp r3, r5 - beq .L576 + beq .L567 mla r2, r0, r3, r4 - b .L574 -.L575: + b .L565 +.L566: movs r0, #1 pop {r4, r5, pc} -.L576: +.L567: movs r0, #0 pop {r4, r5, pc} -.L578: +.L569: .align 2 -.L577: +.L568: .word .LANCHOR2 .word -1431655765 .fnend .size test_node_in_list, .-test_node_in_list .align 1 .global insert_data_list + .syntax unified .thumb .thumb_func + .fpu softvfp .type insert_data_list, %function insert_data_list: .fnstart @@ -3910,113 +4116,113 @@ 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 r5, .L595 - ldrh r3, [r5, #2328] + ldr r5, .L585 + ldrh r3, [r5, #2332] cmp r3, r0 - bls .L581 + bls .L572 + ldr r2, .L585+4 movs r4, #6 - ldr r2, .L595+4 - movw r3, #65535 muls r4, r0, r4 - ldr lr, [r2, #288] + movw r3, #65535 + ldr ip, [r2, #292] mov r7, r2 - add r1, lr, r4 + add r1, ip, r4 strh r3, [r1, #2] @ movhi - strh r3, [lr, r4] @ movhi - ldr r3, [r2, #292] - cmp r3, #0 - beq .L594 - ldr r8, [r2, #296] - lsl fp, r0, #1 - ldrh r2, [r1, #4] - ldrh r6, [r8, r0, lsl #1] - cbz r2, .L592 - muls r6, r2, r6 - b .L583 -.L592: - mov r6, #-1 -.L583: - ldr ip, [r7, #288] - ldr r2, .L595+8 - rsb r9, ip, r3 - ldrh r5, [r5, #2328] - asr r9, r9, #1 - str r5, [sp] - mul r2, r2, r9 - ldr r9, [r7, #232] - add r5, r9, fp - str r5, [sp, #4] - movs r5, #0 - uxth r2, r2 -.L590: - adds r5, r5, #1 - ldr r7, [sp] - uxth r5, r5 - cmp r5, r7 - bhi .L581 - cmp r0, r2 - beq .L581 - ldrh r7, [r3, #4] - lsl r10, r2, #1 - ldrh fp, [r8, r2, lsl #1] - cbz r7, .L593 - mul r7, r7, fp - b .L585 -.L593: - mov r7, #-1 -.L585: - cmp r7, r6 - bne .L586 - ldr r7, [sp, #4] - ldrh r10, [r9, r10] - ldrh r7, [r7] - cmp r10, r7 - bcc .L588 - b .L587 -.L586: - bhi .L587 -.L588: - ldrh r7, [r3] - movw r10, #65535 - cmp r7, r10 - bne .L589 - strh r2, [r1, #2] @ movhi - strh r0, [r3] @ movhi - ldr r3, .L595+4 - str r1, [r3, #300] - b .L581 -.L589: - movs r3, #6 - mov r2, r7 - mla r3, r3, r7, ip - b .L590 -.L587: - strh r2, [lr, r4] @ movhi - ldrh r2, [r3, #2] - strh r2, [r1, #2] @ movhi - ldr r2, .L595+4 - ldr r4, [r2, #292] - cmp r3, r4 - bne .L591 - strh r0, [r3, #2] @ movhi -.L594: - str r1, [r2, #292] - b .L581 -.L591: - ldrh r4, [r3, #2] - ldr r1, [r2, #288] - movs r2, #6 - muls r2, r4, r2 - strh r0, [r1, r2] @ movhi - strh r0, [r3, #2] @ movhi -.L581: + strh r3, [ip, r4] @ movhi + ldr r3, [r2, #296] + cbnz r3, .L573 + str r1, [r2, #296] +.L572: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L596: +.L573: + ldrh r6, [r1, #4] + lsl r10, r0, #1 + ldr r8, [r2, #300] + ldrh r2, [r8, r0, lsl #1] + cmp r6, #0 + beq .L583 + muls r6, r2, r6 +.L574: + ldr lr, [r7, #292] + ldrh r5, [r5, #2332] + sub r2, r3, lr + asr r9, r2, #1 + ldr r2, .L585+8 + str r5, [sp] + mul r2, r2, r9 + ldr r9, [r7, #236] + add r5, r9, r10 + uxth r2, r2 + str r5, [sp, #4] + movs r5, #0 +.L581: + adds r5, r5, #1 + ldr r7, [sp] + uxth r5, r5 + cmp r5, r7 + bhi .L572 + cmp r0, r2 + beq .L572 + ldrh r7, [r3, #4] + lsl r10, r2, #1 + ldrh fp, [r8, r2, lsl #1] + cbz r7, .L584 + mul r7, r7, fp +.L576: + cmp r6, r7 + bne .L577 + ldr r7, [sp, #4] + ldrh r10, [r9, r10] + ldrh r7, [r7] + cmp r10, r7 + bcc .L579 +.L578: + strh r2, [ip, r4] @ movhi + ldr r4, .L585+4 + ldrh r2, [r3, #2] + strh r2, [r1, #2] @ movhi + ldr r2, [r4, #296] + cmp r3, r2 + ittte ne + ldrhne r5, [r3, #2] + movne r2, #6 + ldrne r1, [r4, #292] + strheq r0, [r3, #2] @ movhi + iteee eq + streq r1, [r4, #296] + mulne r2, r2, r5 + strhne r0, [r1, r2] @ movhi + strhne r0, [r3, #2] @ movhi + b .L572 +.L583: + mov r6, #-1 + b .L574 +.L584: + mov r7, #-1 + b .L576 +.L577: + bcc .L578 +.L579: + ldrh r7, [r3] + movw r10, #65535 + cmp r7, r10 + bne .L580 + strh r2, [r1, #2] @ movhi + strh r0, [r3] @ movhi + ldr r3, .L585+4 + str r1, [r3, #304] + b .L572 +.L580: + movs r3, #6 + mov r2, r7 + mla r3, r3, r7, lr + b .L581 +.L586: .align 2 -.L595: +.L585: .word .LANCHOR0 .word .LANCHOR2 .word -1431655765 @@ -4024,8 +4230,10 @@ .size insert_data_list, .-insert_data_list .align 1 .global INSERT_DATA_LIST + .syntax unified .thumb .thumb_func + .fpu softvfp .type INSERT_DATA_LIST, %function INSERT_DATA_LIST: .fnstart @@ -4034,21 +4242,23 @@ push {r3, lr} .save {r3, lr} bl insert_data_list - ldr r2, .L598 - ldrh r3, [r2, #304] + ldr r2, .L588 + ldrh r3, [r2, #308] adds r3, r3, #1 - strh r3, [r2, #304] @ movhi + strh r3, [r2, #308] @ movhi pop {r3, pc} -.L599: +.L589: .align 2 -.L598: +.L588: .word .LANCHOR2 .fnend .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .align 1 .global insert_free_list + .syntax unified .thumb .thumb_func + .fpu softvfp .type insert_free_list, %function insert_free_list: .fnstart @@ -4056,74 +4266,77 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - movw r5, #65535 - cmp r0, r5 - beq .L601 + movw r4, #65535 + cmp r0, r4 + beq .L591 + ldr r2, .L597 movs r1, #6 - ldr r2, .L608 - mul lr, r1, r0 - ldr ip, [r2, #288] - mov r7, r2 - add r6, ip, lr - strh r5, [r6, #2] @ movhi - strh r5, [ip, lr] @ movhi - ldr r3, [r2, #308] - cbz r3, .L607 - ldr r8, [r2, #288] - ldr r9, [r2, #232] - rsb r4, r8, r3 - ldr r2, .L608+4 - asrs r4, r4, #1 - ldrh r10, [r9, r0, lsl #1] - muls r4, r2, r4 - uxth r2, r4 -.L605: - ldrh r4, [r9, r2, lsl #1] - cmp r4, r10 - bcs .L603 - ldrh r4, [r3] - cmp r4, r5 - bne .L604 - strh r2, [r6, #2] @ movhi - strh r0, [r3] @ movhi - b .L601 -.L604: - mla r3, r1, r4, r8 - mov r2, r4 - b .L605 -.L603: - ldrh r1, [r3, #2] - strh r1, [r6, #2] @ movhi - strh r2, [ip, lr] @ movhi - ldr r1, [r7, #308] - ldr r2, .L608 - cmp r3, r1 - bne .L606 - strh r0, [r3, #2] @ movhi -.L607: - str r6, [r2, #308] - b .L601 -.L606: - ldrh r4, [r3, #2] - ldr r1, [r2, #288] - movs r2, #6 - muls r2, r4, r2 - strh r0, [r1, r2] @ movhi - strh r0, [r3, #2] @ movhi -.L601: + mul r7, r1, r0 + ldr ip, [r2, #292] + mov r5, r2 + add r6, ip, r7 + strh r4, [r6, #2] @ movhi + strh r4, [ip, r7] @ movhi + ldr r3, [r2, #312] + cbnz r3, .L592 + str r6, [r2, #312] +.L591: movs r0, #0 pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L609: +.L592: + ldr lr, [r2, #292] + ldr r8, [r2, #236] + sub r2, r3, lr + asr r10, r2, #1 + ldr r2, .L597+4 + ldrh r9, [r8, r0, lsl #1] + mul r2, r2, r10 + mov r10, r4 + uxth r2, r2 +.L595: + ldrh r4, [r8, r2, lsl #1] + cmp r4, r9 + bcs .L593 + ldrh r4, [r3] + cmp r4, r10 + bne .L594 + strh r2, [r6, #2] @ movhi + strh r0, [r3] @ movhi + b .L591 +.L594: + mla r3, r1, r4, lr + mov r2, r4 + b .L595 +.L593: + ldrh r1, [r3, #2] + strh r1, [r6, #2] @ movhi + strh r2, [ip, r7] @ movhi + ldr r2, [r5, #312] + cmp r3, r2 + ittte ne + ldrhne r4, [r3, #2] + movne r2, #6 + ldrne r1, [r5, #292] + strheq r0, [r3, #2] @ movhi + iteee eq + streq r6, [r5, #312] + mulne r2, r2, r4 + strhne r0, [r1, r2] @ movhi + strhne r0, [r3, #2] @ movhi + b .L591 +.L598: .align 2 -.L608: +.L597: .word .LANCHOR2 .word -1431655765 .fnend .size insert_free_list, .-insert_free_list .align 1 .global INSERT_FREE_LIST + .syntax unified .thumb .thumb_func + .fpu softvfp .type INSERT_FREE_LIST, %function INSERT_FREE_LIST: .fnstart @@ -4132,21 +4345,23 @@ push {r3, lr} .save {r3, lr} bl insert_free_list - ldr r2, .L611 - ldrh r3, [r2, #312] + ldr r2, .L600 + ldrh r3, [r2, #316] adds r3, r3, #1 - strh r3, [r2, #312] @ movhi + strh r3, [r2, #316] @ movhi pop {r3, pc} -.L612: +.L601: .align 2 -.L611: +.L600: .word .LANCHOR2 .fnend .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .align 1 .global List_remove_node + .syntax unified .thumb .thumb_func + .fpu softvfp .type List_remove_node, %function List_remove_node: .fnstart @@ -4155,57 +4370,59 @@ push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} movs r4, #6 - ldr r7, .L618 - movw r6, #65535 + ldr r7, .L607 muls r1, r4, r1 + movw r6, #65535 ldr r3, [r0] - ldr r2, [r7, #288] + ldr r2, [r7, #292] adds r5, r2, r1 cmp r5, r3 ldrh r3, [r2, r1] - bne .L614 + bne .L603 cmp r3, r6 - ittee eq + iteet ne + mlane r3, r4, r3, r2 moveq r3, #0 streq r3, [r0] - mlane r3, r4, r3, r2 strne r3, [r0] it ne strhne r6, [r3, #2] @ movhi - b .L616 -.L614: - cmp r3, r6 - ldrh r0, [r5, #2] - bne .L617 - cmp r0, r3 - beq .L616 - muls r0, r4, r0 - strh r3, [r2, r0] @ movhi - b .L616 -.L617: - mla r3, r4, r3, r2 - strh r0, [r3, #2] @ movhi - ldrh r6, [r5, #2] - ldrh r0, [r2, r1] - ldr r3, [r7, #288] - muls r4, r6, r4 - strh r0, [r3, r4] @ movhi -.L616: +.L605: movw r3, #65535 movs r0, #0 strh r3, [r2, r1] @ movhi strh r3, [r5, #2] @ movhi pop {r4, r5, r6, r7, pc} -.L619: +.L603: + cmp r3, r6 + ldrh r0, [r5, #2] + bne .L606 + cmp r0, r3 + beq .L605 + muls r4, r0, r4 + strh r3, [r2, r4] @ movhi + b .L605 +.L606: + mla r3, r4, r3, r2 + strh r0, [r3, #2] @ movhi + ldrh r3, [r5, #2] + ldrh r6, [r2, r1] + ldr r0, [r7, #292] + muls r3, r4, r3 + strh r6, [r0, r3] @ movhi + b .L605 +.L608: .align 2 -.L618: +.L607: .word .LANCHOR2 .fnend .size List_remove_node, .-List_remove_node .align 1 .global List_pop_index_node + .syntax unified .thumb .thumb_func + .fpu softvfp .type List_pop_index_node, %function List_pop_index_node: .fnstart @@ -4214,88 +4431,92 @@ push {r4, r5, r6, lr} .save {r4, r5, r6, lr} ldr r3, [r0] - cbz r3, .L626 - ldr r2, .L627 - movs r6, #6 + cbz r3, .L615 + ldr r2, .L616 movw r5, #65535 - ldr r4, [r2, #288] -.L622: - cbnz r1, .L623 -.L625: - subs r4, r3, r4 - ldr r3, .L627+4 - asrs r4, r4, #1 + movs r6, #6 + ldr r2, [r2, #292] +.L611: + cbnz r1, .L612 +.L614: + ldr r4, .L616+4 + subs r3, r3, r2 + asrs r3, r3, #1 muls r4, r3, r4 - uxth r4, r4 - mov r1, r4 + uxth r1, r4 bl List_remove_node - mov r0, r4 + uxth r0, r4 pop {r4, r5, r6, pc} -.L623: - ldrh r2, [r3] - cmp r2, r5 - beq .L625 +.L612: + ldrh r4, [r3] + cmp r4, r5 + beq .L614 subs r1, r1, #1 - mla r3, r6, r2, r4 + mla r3, r6, r4, r2 uxth r1, r1 - b .L622 -.L626: + b .L611 +.L615: movw r0, #65535 pop {r4, r5, r6, pc} -.L628: +.L617: .align 2 -.L627: +.L616: .word .LANCHOR2 .word -1431655765 .fnend .size List_pop_index_node, .-List_pop_index_node .align 1 .global List_get_gc_head_node + .syntax unified .thumb .thumb_func + .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 - ldr r2, .L636 + ldr r2, .L624 push {r4, lr} .save {r4, lr} - ldr r3, [r2, #292] - cbz r3, .L634 + ldr r3, [r2, #296] + cbz r3, .L623 + ldr r1, [r2, #292] movs r4, #6 - ldr r1, [r2, #288] movw r2, #65535 -.L631: - cbz r0, .L632 +.L620: + cbz r0, .L621 ldrh r3, [r3] cmp r3, r2 - beq .L634 + bne .L622 +.L623: + movw r0, #65535 + pop {r4, pc} +.L622: subs r0, r0, #1 mla r3, r4, r3, r1 uxth r0, r0 - b .L631 -.L634: - movw r0, #65535 - pop {r4, pc} -.L632: + b .L620 +.L621: + ldr r0, .L624+4 subs r3, r3, r1 - ldr r0, .L636+4 asrs r3, r3, #1 - muls r0, r3, r0 - uxth r0, r0 + muls r3, r0, r3 + uxth r0, r3 pop {r4, pc} -.L637: +.L625: .align 2 -.L636: +.L624: .word .LANCHOR2 .word -1431655765 .fnend .size List_get_gc_head_node, .-List_get_gc_head_node .align 1 .global List_update_data_list + .syntax unified .thumb .thumb_func + .fpu softvfp .type List_update_data_list, %function List_update_data_list: .fnstart @@ -4304,79 +4525,81 @@ push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r5, r0 - ldr r4, .L645 - ldrh r3, [r4, #316] + ldr r4, .L633 + ldrh r3, [r4, #320] cmp r3, r0 - beq .L639 - ldrh r3, [r4, #364] + beq .L627 + ldrh r3, [r4, #368] cmp r3, r0 - beq .L639 - ldrh r3, [r4, #412] + beq .L627 + ldrh r3, [r4, #416] cmp r3, r0 - beq .L639 + beq .L627 movs r3, #6 - ldr r1, [r4, #288] - ldr r2, [r4, #292] + ldr r1, [r4, #292] muls r3, r0, r3 + ldr r2, [r4, #296] adds r0, r1, r3 cmp r0, r2 - beq .L639 - ldr r6, [r4, #296] + beq .L627 ldrh r2, [r0, #4] - ldrh r7, [r6, r5, lsl #1] - cbz r2, .L643 - muls r2, r7, r2 - b .L640 -.L643: - mov r2, #-1 -.L640: - ldrh r0, [r0, #2] - movw r7, #65535 - cmp r0, r7 - bne .L641 + ldr r7, [r4, #300] + ldrh r6, [r7, r5, lsl #1] + cbz r2, .L631 + muls r2, r6, r2 +.L628: + ldrh r6, [r0, #2] + movw r0, #65535 + cmp r6, r0 + bne .L629 ldrh r3, [r1, r3] - cmp r3, r0 - beq .L639 -.L641: - movs r3, #6 - muls r3, r0, r3 - ldr r0, .L645+4 - asrs r7, r3, #1 - add r3, r3, r1 - muls r0, r7, r0 - ldrh r3, [r3, #4] - ldrh r0, [r6, r0, lsl #1] - cbz r3, .L644 - muls r3, r0, r3 - b .L642 -.L644: - mov r3, #-1 -.L642: + cmp r3, r6 + beq .L627 +.L629: + movs r0, #6 + ldr r3, .L633+4 + muls r0, r6, r0 + asrs r6, r0, #1 + add r1, r1, r0 + muls r3, r6, r3 + ldrh r6, [r7, r3, lsl #1] + ldrh r3, [r1, #4] + cbz r3, .L632 + muls r3, r6, r3 +.L630: cmp r2, r3 - bcs .L639 - ldr r0, .L645+8 + bcs .L627 mov r1, r5 + ldr r0, .L633+8 bl List_remove_node - ldrh r3, [r4, #304] + ldrh r3, [r4, #308] mov r0, r5 subs r3, r3, #1 - strh r3, [r4, #304] @ movhi + strh r3, [r4, #308] @ movhi bl INSERT_DATA_LIST -.L639: +.L627: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L646: +.L631: + mov r2, #-1 + b .L628 +.L632: + mov r3, #-1 + b .L630 +.L634: .align 2 -.L645: +.L633: .word .LANCHOR2 .word -1431655765 - .word .LANCHOR2+292 + .word .LANCHOR2+296 .fnend .size List_update_data_list, .-List_update_data_list .align 1 .global ftl_map_blk_alloc_new_blk + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_map_blk_alloc_new_blk, %function ftl_map_blk_alloc_new_blk: .fnstart @@ -4384,57 +4607,59 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - movs r3, #0 - ldrh r1, [r0, #10] mov r4, r0 + ldrh r1, [r0, #10] + movs r3, #0 ldr r2, [r0, #12] -.L648: +.L636: uxth r5, r3 cmp r5, r1 - bcs .L651 + bcs .L639 mov r7, r2 adds r3, r3, #1 ldrh r6, [r7] adds r2, r2, #2 cmp r6, #0 - bne .L648 + bne .L636 bl FtlFreeSysBlkQueueOut - movw r2, #65533 subs r3, r0, #1 + movw r2, #65533 + uxth r3, r3 mov r1, r0 strh r0, [r7] @ movhi - uxth r3, r3 cmp r3, r2 - bls .L649 - ldr r3, .L654 - ldr r0, .L654+4 - ldrh r2, [r3, #2518] + bls .L637 + ldr r3, .L642 + ldr r0, .L642+4 + ldrh r2, [r3, #2522] bl printk -.L650: - b .L650 -.L649: +.L638: + b .L638 +.L637: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi + strh r5, [r4] @ movhi adds r3, r3, #1 str r3, [r4, #28] ldrh r3, [r4, #8] - strh r5, [r4] @ movhi adds r3, r3, #1 strh r3, [r4, #8] @ movhi -.L651: +.L639: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L655: +.L643: .align 2 -.L654: +.L642: .word .LANCHOR0 .word .LC5 .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 1 .global select_l2p_ram_region + .syntax unified .thumb .thumb_func + .fpu softvfp .type select_l2p_ram_region, %function select_l2p_ram_region: .fnstart @@ -4443,244 +4668,247 @@ push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} movs r1, #0 - ldr r3, .L670 + ldr r3, .L654 movs r4, #12 - ldr r7, .L670+4 movw r5, #65535 - ldrh r2, [r3, #2426] - ldr r3, [r7, #460] -.L657: + ldr r7, .L654+4 + ldrh r2, [r3, #2430] + ldr r3, [r7, #464] +.L645: uxth r0, r1 cmp r0, r2 - bcs .L668 + bcc .L647 + mov r0, r2 + movs r1, #0 + mov r6, #-2147483648 + mov ip, #12 +.L648: + uxth r5, r1 + cmp r5, r2 + bcc .L650 + cmp r0, r2 + bcc .L646 + ldrh r7, [r7, #468] + mov r0, r2 + movs r1, #0 + mov r4, #-1 +.L651: + uxth r5, r1 + cmp r5, r2 + bcs .L646 + ldr r6, [r3, #4] + cmp r4, r6 + bls .L652 + ldrh ip, [r3] + cmp ip, r7 + itt ne + movne r4, r6 + movne r0, r5 +.L652: + adds r1, r1, #1 + adds r3, r3, #12 + b .L651 +.L647: adds r1, r1, #1 mla r6, r4, r1, r3 ldrh r6, [r6, #-12] cmp r6, r5 - bne .L657 - b .L658 -.L668: - movs r1, #0 - mov r6, #-2147483648 - mov lr, #12 - mov r0, r2 -.L660: - uxth r5, r1 - cmp r5, r2 - bcs .L669 - mla r4, lr, r1, r3 + bne .L645 +.L646: + pop {r4, r5, r6, r7, pc} +.L650: + mla r4, ip, r1, r3 ldr r4, [r4, #4] cmp r4, #0 - blt .L661 - cmp r4, r6 - itt cc - movcc r6, r4 - movcc r0, r5 -.L661: - adds r1, r1, #1 - b .L660 -.L669: - cmp r0, r2 - bcc .L658 - ldrh r7, [r7, #464] - movs r1, #0 - mov r4, #-1 - mov r0, r2 -.L663: - uxth r5, r1 - cmp r5, r2 - bcs .L658 - ldr r6, [r3, #4] + blt .L649 cmp r6, r4 - bcs .L664 - ldrh lr, [r3] - cmp lr, r7 - itt ne - movne r4, r6 - movne r0, r5 -.L664: + itt hi + movhi r6, r4 + movhi r0, r5 +.L649: adds r1, r1, #1 - adds r3, r3, #12 - b .L663 -.L658: - pop {r4, r5, r6, r7, pc} -.L671: + b .L648 +.L655: .align 2 -.L670: +.L654: .word .LANCHOR0 .word .LANCHOR2 .fnend .size select_l2p_ram_region, .-select_l2p_ram_region .align 1 .global FtlUpdateVaildLpn + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L679 + ldr r1, .L662 push {r4, r5, lr} .save {r4, r5, lr} - ldrh r2, [r1, #466] mov r3, r1 + ldrh r2, [r1, #470] cmp r2, #4 - bhi .L673 - cbnz r0, .L673 + bhi .L657 + cbnz r0, .L657 adds r2, r2, #1 - strh r2, [r1, #466] @ movhi + strh r2, [r1, #470] @ movhi pop {r4, r5, pc} -.L673: - ldr r1, .L679+4 +.L657: + ldr r1, .L662+4 movs r2, #0 - strh r2, [r3, #466] @ movhi + strh r2, [r3, #470] @ movhi movw r5, #65535 - str r2, [r3, #468] - ldrh r1, [r1, #2328] - ldr r2, [r3, #296] + str r2, [r3, #472] + ldrh r1, [r1, #2332] + ldr r2, [r3, #300] add r1, r2, r1, lsl #1 -.L674: +.L658: cmp r2, r1 - beq .L678 + bne .L660 + pop {r4, r5, pc} +.L660: ldrh r4, [r2], #2 cmp r4, r5 ittt ne - ldrne r0, [r3, #468] + ldrne r0, [r3, #472] addne r0, r0, r4 - strne r0, [r3, #468] - b .L674 -.L678: - pop {r4, r5, pc} -.L680: + strne r0, [r3, #472] + b .L658 +.L663: .align 2 -.L679: +.L662: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 1 .global ftl_set_blk_mode + .syntax unified .thumb .thumb_func + .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. - lsrs r3, r0, #5 - ldr r2, .L684 - and r0, r0, #31 - uxth r3, r3 - cbz r1, .L682 - ldr r1, [r2, #472] + mov r3, r0 + cbz r1, .L665 + b ftl_set_blk_mode.part.9 +.L665: + ldr r2, .L666 + lsrs r0, r0, #5 + and r3, r3, #31 + ldr r1, [r2, #32] movs r2, #1 - lsls r2, r2, r0 - ldr r0, [r1, r3, lsl #2] - orrs r2, r2, r0 - str r2, [r1, r3, lsl #2] + lsl r3, r2, r3 + ldr r2, [r1, r0, lsl #2] + bic r2, r2, r3 + str r2, [r1, r0, lsl #2] bx lr -.L682: - ldr r1, [r2, #472] - movs r2, #1 - lsls r2, r2, r0 - ldr r0, [r1, r3, lsl #2] - bic r0, r0, r2 - str r0, [r1, r3, lsl #2] - bx lr -.L685: +.L667: .align 2 -.L684: - .word .LANCHOR2 +.L666: + .word .LANCHOR0 .fnend .size ftl_set_blk_mode, .-ftl_set_blk_mode .align 1 .global ftl_get_blk_mode + .syntax unified .thumb .thumb_func + .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, .L687 - lsrs r1, r0, #5 - ldr r2, [r3, #472] - and r3, r0, #31 - ldr r0, [r2, r1, lsl #2] - lsrs r0, r0, r3 + ldr r3, .L669 + lsrs r2, r0, #5 + and r0, r0, #31 + ldr r3, [r3, #32] + ldr r3, [r3, r2, lsl #2] + lsr r0, r3, r0 and r0, r0, #1 bx lr -.L688: +.L670: .align 2 -.L687: - .word .LANCHOR2 +.L669: + .word .LANCHOR0 .fnend .size ftl_get_blk_mode, .-ftl_get_blk_mode .align 1 .global ftl_sb_update_avl_pages + .syntax unified .thumb .thumb_func + .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 movs r3, #0 - strh r3, [r0, #4] @ movhi - ldr r3, .L698 push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} - adds r4, r2, #7 - ldrh r5, [r3, #2320] + strh r3, [r0, #4] @ movhi + add r4, r0, r2, lsl #1 movw r7, #65535 - add r4, r0, r4, lsl #1 -.L690: + ldr r3, .L678 + adds r4, r4, #14 + ldrh r5, [r3, #2324] +.L672: cmp r2, r5 - bcs .L696 + bcc .L674 + ldrh r3, [r3, #2390] + add r4, r0, #16 + movw r6, #65535 + subs r3, r3, #1 + subs r1, r3, r1 + movs r3, #0 + uxth r1, r1 +.L675: + uxth r2, r3 + cmp r5, r2 + bhi .L677 + pop {r4, r5, r6, r7, pc} +.L674: ldrh r6, [r4, #2]! adds r2, r2, #1 - cmp r6, r7 uxth r2, r2 + cmp r6, r7 ittt ne ldrhne r6, [r0, #4] addne r6, r6, #1 strhne r6, [r0, #4] @ movhi - b .L690 -.L696: - ldrh r6, [r3, #2388] - add r4, r0, #14 - movs r2, #0 - movw r7, #65535 -.L693: - uxth r3, r2 - cmp r3, r5 - bcs .L697 - ldrh r3, [r4, #2]! - adds r2, r2, #1 - cmp r3, r7 - itttt ne - ldrhne r3, [r0, #4] - addne r3, r3, r6 - addne r3, r3, #-1 - subne r3, r3, r1 - it ne - strhne r3, [r0, #4] @ movhi - b .L693 -.L697: - pop {r4, r5, r6, r7, pc} -.L699: + b .L672 +.L677: + ldrh r2, [r4], #2 + adds r3, r3, #1 + cmp r2, r6 + ittt ne + ldrhne r2, [r0, #4] + addne r2, r2, r1 + strhne r2, [r0, #4] @ movhi + b .L675 +.L679: .align 2 -.L698: +.L678: .word .LANCHOR0 .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 1 .global make_superblock + .syntax unified .thumb .thumb_func + .fpu softvfp .type make_superblock, %function make_superblock: .fnstart @@ -4688,71 +4916,72 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r3, #0 - ldr r6, .L713 - add r7, r0, #16 mov r4, r0 - mov r5, r3 - addw r10, r6, #2348 + ldr r6, .L692 + add r7, r0, #16 movw r9, #65535 - ldrh r8, [r6, #2320] - strh r3, [r0, #4] @ movhi - strb r3, [r0, #7] -.L701: + movs r5, #0 + strh r5, [r0, #4] @ movhi + ldrh r8, [r6, #2324] + addw r10, r6, #2350 + strb r5, [r0, #7] +.L681: uxth r3, r5 - cmp r3, r8 - bcs .L712 - ldrb r0, [r10, r5] @ zero_extendqisi2 - ldrh r1, [r4] - bl V2P_block - strh r9, [r7] @ movhi - mov fp, r0 - bl FtlBbmIsBadBlock - cbnz r0, .L702 - strh fp, [r7] @ movhi + cmp r8, r3 + bhi .L683 ldrb r3, [r4, #7] @ zero_extendqisi2 - adds r3, r3, #1 - strb r3, [r4, #7] -.L702: - adds r5, r5, #1 - adds r7, r7, #2 - b .L701 -.L712: - ldrb r2, [r4, #7] @ zero_extendqisi2 - ldrh r3, [r6, #2388] - smulbb r3, r2, r3 + ldrh r2, [r6, #2390] + smulbb r3, r3, r2 strh r3, [r4, #4] @ movhi movs r3, #0 strb r3, [r4, #9] - ldr r3, [r6, #2244] - cbz r3, .L704 - ldr r3, .L713+4 + ldr r3, [r6, #2248] + cbz r3, .L684 + ldr r3, .L692+4 ldrh r2, [r4] - ldr r3, [r3, #232] + ldr r3, [r3, #236] ldrh r3, [r3, r2, lsl #1] cmp r3, #79 itt ls movls r3, #1 strbls r3, [r4, #9] -.L704: - ldrb r3, [r6] @ zero_extendqisi2 - cbz r3, .L705 +.L684: + ldrb r3, [r6, #36] @ zero_extendqisi2 + cbz r3, .L685 movs r3, #1 strb r3, [r4, #9] -.L705: +.L685: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L714: +.L683: + ldrh r1, [r4] + ldrb r0, [r10, r5] @ zero_extendqisi2 + bl V2P_block + strh r9, [r7] @ movhi + mov fp, r0 + bl FtlBbmIsBadBlock + cbnz r0, .L682 + strh fp, [r7] @ movhi + ldrb r3, [r4, #7] @ zero_extendqisi2 + adds r3, r3, #1 + strb r3, [r4, #7] +.L682: + adds r5, r5, #1 + adds r7, r7, #2 + b .L681 +.L693: .align 2 -.L713: +.L692: .word .LANCHOR0 .word .LANCHOR2 .fnend .size make_superblock, .-make_superblock .align 1 .global update_multiplier_value + .syntax unified .thumb .thumb_func + .fpu softvfp .type update_multiplier_value, %function update_multiplier_value: .fnstart @@ -4761,470 +4990,514 @@ push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} movs r5, #0 - ldr r3, .L724 + ldr r6, .L700 mov r7, r0 mov r4, r5 - addw r6, r3, #2348 - ldrh r8, [r3, #2320] - ldrh r9, [r3, #2388] -.L716: + ldrh r8, [r6, #2324] + addw r6, r6, #2350 + ldrh r9, [r6, #40] +.L695: uxth r3, r5 - cmp r3, r8 - bcs .L723 + cmp r8, r3 + bhi .L697 + cbz r4, .L699 + mov r1, r4 + mov r0, #32768 + bl __aeabi_idiv +.L698: + ldr r3, .L700+4 + movs r2, #6 + ldr r3, [r3, #292] + mla r7, r2, r7, r3 + strh r0, [r7, #4] @ movhi + movs r0, #0 + pop {r3, r4, r5, r6, r7, r8, r9, pc} +.L697: mov r1, r7 ldrb r0, [r6, r5] @ zero_extendqisi2 bl V2P_block bl FtlBbmIsBadBlock - cbnz r0, .L717 + cbnz r0, .L696 add r4, r4, r9 uxth r4, r4 -.L717: +.L696: adds r5, r5, #1 - b .L716 -.L723: - cbz r4, .L719 - mov r1, r4 - mov r0, #32768 - bl __aeabi_idiv - uxth r4, r0 -.L719: - ldr r3, .L724+4 - movs r2, #6 - movs r0, #0 - ldr r3, [r3, #288] - mla r7, r2, r7, r3 - strh r4, [r7, #4] @ movhi - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L725: + b .L695 +.L699: + mov r0, r4 + b .L698 +.L701: .align 2 -.L724: +.L700: .word .LANCHOR0 .word .LANCHOR2 .fnend .size update_multiplier_value, .-update_multiplier_value .align 1 .global GetFreeBlockMinEraseCount + .syntax unified .thumb .thumb_func + .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, .L729 - ldr r0, [r2, #308] - cbz r0, .L727 - ldr r3, [r2, #288] + ldr r2, .L705 + ldr r0, [r2, #312] + cbz r0, .L703 + ldr r3, [r2, #292] subs r0, r0, r3 - ldr r3, .L729+4 + ldr r3, .L705+4 asrs r0, r0, #1 muls r0, r3, r0 - ldr r3, [r2, #232] + ldr r3, [r2, #236] uxth r0, r0 ldrh r0, [r3, r0, lsl #1] -.L727: +.L703: bx lr -.L730: +.L706: .align 2 -.L729: +.L705: .word .LANCHOR2 .word -1431655765 .fnend .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 1 .global GetFreeBlockMaxEraseCount + .syntax unified .thumb .thumb_func + .fpu softvfp .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L739 + ldr r1, .L715 push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} - ldr r3, [r1, #308] - cbz r3, .L737 - ldrh r2, [r1, #312] + ldr r3, [r1, #312] + cbz r3, .L713 + ldrh r2, [r1, #316] movs r6, #6 - ldr r4, [r1, #288] + ldr r4, [r1, #292] movw r7, #65535 rsb r2, r2, r2, lsl #3 subs r3, r3, r4 - asrs r2, r2, #3 asrs r3, r3, #1 + asrs r2, r2, #3 cmp r0, r2 it gt uxthgt r0, r2 - ldr r2, .L739+4 + ldr r2, .L715+4 muls r3, r2, r3 movs r2, #0 uxth r3, r3 -.L734: +.L710: uxth r5, r2 - cmp r5, r0 - bcs .L736 + cmp r0, r5 + bls .L712 mul r5, r6, r3 adds r2, r2, #1 ldrh r5, [r4, r5] cmp r5, r7 - bne .L738 -.L736: - ldr r2, [r1, #232] + bne .L714 +.L712: + ldr r2, [r1, #236] ldrh r0, [r2, r3, lsl #1] pop {r4, r5, r6, r7, pc} -.L738: +.L714: mov r3, r5 - b .L734 -.L737: + b .L710 +.L713: mov r0, r3 pop {r4, r5, r6, r7, pc} -.L740: +.L716: .align 2 -.L739: +.L715: .word .LANCHOR2 .word -1431655765 .fnend .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 1 .global FtlPrintInfo2buf + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r6, r0 - ldr r8, .L751+240 - add r4, r6, #12 - ldr r1, .L751 - .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 r7, r0 + ldr r4, .L729 + add r5, r7, #12 + .pad #36 + sub sp, sp, #36 + ldr r1, .L729+4 bl strcpy - mov r0, r4 - ldr r1, .L751+4 - ldr r2, [r8, #116] + ldr r2, [r4, #124] + mov r0, r5 + ldr r1, .L729+8 bl sprintf - ldr r1, .L751+8 - ldr r2, [r8, #2404] - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + ldr r2, [r4, #2408] + mov r0, r5 + ldr r1, .L729+12 bl sprintf - ldr r3, .L751+12 - ldr r3, [r3, #504] + ldr r3, .L729+16 + add r5, r5, r0 + ldr r3, [r3, #500] cmp r3, #1 - add r4, r4, r0 - bne .L747 - add r0, sp, #16 - add r1, sp, #20 - add r2, sp, #24 - add r3, sp, #28 - bl NandcGetTimeCfg - mov r0, r4 - ldr r1, .L751+16 - ldr r7, .L751+20 - ldr r3, [sp, #24] - ldr r2, [sp, #16] - str r3, [sp] - ldr r3, [sp, #28] - str r3, [sp, #4] - ldr r3, [sp, #20] - bl sprintf - ldr r1, .L751+24 - add r4, r4, r0 - add r5, r4, #10 - mov r0, r4 - bl strcpy - mov r0, r5 - ldr r1, .L751+28 - ldr r2, [r8, #2448] - bl sprintf - ldr r1, .L751+32 - ldr r2, [r7, #468] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+36 - ldr r2, [r7, #476] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+40 - ldr r2, [r7, #480] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+44 - ldr r2, [r7, #484] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+48 - ldr r2, [r7, #488] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+52 - ldr r2, [r7, #492] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+56 - ldr r2, [r7, #496] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r2, [r7, #500] - ldr r1, .L751+60 - lsrs r2, r2, #11 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r2, [r7, #504] - ldr r1, .L751+64 - lsrs r2, r2, #11 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+68 - ldr r2, [r7, #508] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+72 - ldr r2, [r7, #512] - add r5, r5, r0 - mov r0, r5 - bl sprintf - add r5, r5, r0 - bl FtlBbtCalcTotleCnt - ldr r1, .L751+76 - ldrh r2, [r8, #2458] - mov r3, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+80 - ldrh r2, [r7, #312] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+84 - ldr r2, [r7, #516] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+88 - ldr r2, [r7, #520] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+92 - ldr r2, [r7, #524] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+96 - ldr r2, [r7, #236] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+100 - ldr r2, [r7, #528] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+104 - ldr r2, [r7, #532] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+108 - ldrh r2, [r7, #270] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+112 - ldrh r2, [r7, #268] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+116 - ldr r2, [r8, #2428] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+120 - ldr r2, [r8, #2420] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+124 - ldr r2, [r8, #2316] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+128 - ldrh r2, [r8, #2518] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+132 - ldrh r2, [r8, #2328] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+136 - ldrh r2, [r7, #536] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+140 - ldr r2, [r8, #2332] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+144 - ldrh r2, [r7, #540] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+148 - ldrh r2, [r8, #2452] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+152 - ldrh r2, [r7, #318] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+156 - ldrb r2, [r7, #322] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+160 - ldrh r2, [r7, #316] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+164 - ldrb r2, [r7, #324] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+168 - ldrh r2, [r7, #320] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r3, [r7, #296] - ldrh r2, [r7, #316] - ldr r1, .L751+172 - ldrh r2, [r3, r2, lsl #1] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+176 - ldrh r2, [r7, #366] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+180 - ldrb r2, [r7, #370] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+184 - ldrh r2, [r7, #364] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+188 - ldrb r2, [r7, #372] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+192 - ldrh r2, [r7, #368] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r3, [r7, #296] - ldrh r2, [r7, #364] - ldr r1, .L751+196 - ldrh r2, [r3, r2, lsl #1] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+200 - ldrh r2, [r7, #414] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+204 - ldrb r2, [r7, #418] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+208 - ldrh r2, [r7, #412] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+212 - ldrb r2, [r7, #420] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+216 - ldrh r2, [r7, #416] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+220 - ldrh r2, [r7, #558] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+224 - ldrb r2, [r7, #562] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+228 - ldrh r2, [r7, #556] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+232 - ldrb r2, [r7, #564] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L751+236 - ldrh r2, [r7, #560] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, [r7, #692] - ldr r3, [r8, #2244] - ldr r2, [r7, #604] - b .L752 -.L753: + beq .L718 + subs r0, r5, r7 +.L717: + add sp, sp, #36 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L730: .align 2 -.L751: +.L729: + .word .LANCHOR0 .word .LC6 .word .LC7 .word .LC8 .word .LANCHOR1 +.L718: + add r3, sp, #28 + add r2, sp, #24 + add r1, sp, #20 + add r0, sp, #16 + bl NandcGetTimeCfg + ldr r3, [sp, #28] + mov r0, r5 + ldr r2, [sp, #16] + ldr r1, .L731 + str r3, [sp, #4] + ldr r3, [sp, #24] + str r3, [sp] + ldr r3, [sp, #20] + bl sprintf + adds r6, r5, r0 + ldr r1, .L731+4 + ldr r5, .L731+8 + mov r0, r6 + adds r6, r6, #10 + bl strcpy + ldr r2, [r4, #2452] + mov r0, r6 + ldr r1, .L731+12 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #472] + ldr r1, .L731+16 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #476] + ldr r1, .L731+20 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #480] + ldr r1, .L731+24 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #484] + ldr r1, .L731+28 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #488] + ldr r1, .L731+32 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #492] + ldr r1, .L731+36 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #496] + ldr r1, .L731+40 + mov r0, r6 + bl sprintf + ldr r2, [r5, #500] + add r6, r6, r0 + ldr r1, .L731+44 + mov r0, r6 + lsrs r2, r2, #11 + bl sprintf + ldr r2, [r5, #504] + add r6, r6, r0 + ldr r1, .L731+48 + mov r0, r6 + lsrs r2, r2, #11 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #508] + ldr r1, .L731+52 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #512] + ldr r1, .L731+56 + mov r0, r6 + bl sprintf + add r6, r6, r0 + bl FtlBbtCalcTotleCnt + ldrh r2, [r4, #2462] + mov r3, r0 + ldr r1, .L731+60 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #316] + ldr r1, .L731+64 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #516] + ldr r1, .L731+68 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #520] + ldr r1, .L731+72 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #524] + ldr r1, .L731+76 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #240] + ldr r1, .L731+80 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #528] + ldr r1, .L731+84 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r5, #532] + ldr r1, .L731+88 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #274] + ldr r1, .L731+92 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #272] + ldr r1, .L731+96 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r4, #2432] + ldr r1, .L731+100 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r4, #2424] + ldr r1, .L731+104 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r4, #2320] + ldr r1, .L731+108 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #2522] + ldr r1, .L731+112 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #2332] + ldr r1, .L731+116 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #536] + ldr r1, .L731+120 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldr r2, [r4, #2336] + ldr r1, .L731+124 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #540] + ldr r1, .L731+128 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r4, #2456] + ldr r1, .L731+132 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #322] + ldr r1, .L731+136 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #326] @ zero_extendqisi2 + ldr r1, .L731+140 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #320] + ldr r1, .L731+144 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #328] @ zero_extendqisi2 + ldr r1, .L731+148 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #324] + ldr r1, .L731+152 + mov r0, r6 + bl sprintf + ldr r3, [r5, #300] + add r6, r6, r0 + ldrh r2, [r5, #320] + mov r0, r6 + ldr r1, .L731+156 + ldrh r2, [r3, r2, lsl #1] + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #370] + ldr r1, .L731+160 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #374] @ zero_extendqisi2 + ldr r1, .L731+164 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #368] + ldr r1, .L731+168 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #376] @ zero_extendqisi2 + ldr r1, .L731+172 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #372] + ldr r1, .L731+176 + mov r0, r6 + bl sprintf + ldr r3, [r5, #300] + add r6, r6, r0 + ldrh r2, [r5, #368] + mov r0, r6 + ldr r1, .L731+180 + ldrh r2, [r3, r2, lsl #1] + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #418] + ldr r1, .L731+184 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #422] @ zero_extendqisi2 + ldr r1, .L731+188 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #416] + ldr r1, .L731+192 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #424] @ zero_extendqisi2 + ldr r1, .L731+196 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #420] + ldr r1, .L731+200 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #558] + ldr r1, .L731+204 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #562] @ zero_extendqisi2 + ldr r1, .L731+208 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #556] + ldr r1, .L731+212 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrb r2, [r5, #564] @ zero_extendqisi2 + ldr r1, .L731+216 + mov r0, r6 + bl sprintf + add r6, r6, r0 + ldrh r2, [r5, #560] + ldr r1, .L731+220 + mov r0, r6 + bl sprintf + ldr r3, [r5, #680] + add r6, r6, r0 + ldr r1, [r5, #1116] + mov r0, r6 + ldr r2, [r4, #2248] + str r3, [sp, #4] + ldr r3, [r5, #688] + orr r2, r2, r1, lsl #8 + ldr r1, .L731+224 + str r3, [sp] + ldr r3, [r5, #684] + bl sprintf + adds r4, r6, r0 + ldr r2, [r5, #676] + ldr r1, .L731+228 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldr r2, [r5, #700] + ldr r1, .L731+232 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldrh r2, [r5, #1120] + ldr r1, .L731+236 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldrh r2, [r5, #1122] + b .L732 +.L733: + .align 2 +.L731: .word .LC9 - .word .LANCHOR2 .word .LC10 + .word .LANCHOR2 .word .LC11 .word .LC12 .word .LC13 @@ -5278,161 +5551,137 @@ .word .LC61 .word .LC62 .word .LC63 - .word .LANCHOR0 -.L752: - orr r2, r3, r2, lsl #8 - str r1, [sp] - add r5, r5, r0 - ldr r1, [r7, #684] - mov r0, r5 - str r1, [sp, #4] - ldr r3, [r7, #688] - ldr r1, .L754 - bl sprintf - ldr r1, .L754+4 - ldr r2, [r7, #680] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L754+8 - ldr r2, [r7, #704] - adds r4, r5, r0 - mov r0, r4 - bl sprintf - ldr r1, .L754+12 - ldrh r2, [r7, #1120] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r1, .L754+16 - ldrh r2, [r7, #1122] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r1, .L754+20 - ldr r2, [r7, #1124] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r1, .L754+24 - ldrh r2, [r7, #1128] - add r4, r4, r0 - mov r0, r4 - bl sprintf - add r4, r4, r0 - bl GetFreeBlockMinEraseCount - ldr r1, .L754+28 - mov r2, r0 - mov r0, r4 - bl sprintf - add r4, r4, r0 - ldrh r0, [r7, #312] - bl GetFreeBlockMaxEraseCount - ldr r1, .L754+32 - mov r2, r0 - mov r0, r4 - bl sprintf - ldrh r3, [r7, #556] - movw r2, #65535 - cmp r3, r2 - add r4, r4, r0 - beq .L744 - ldr r2, [r7, #296] - mov r0, r4 - ldr r1, .L754+36 - ldrh r2, [r2, r3, lsl #1] - bl sprintf - add r4, r4, r0 -.L744: - movs r0, #0 - movs r5, #0 - bl List_get_gc_head_node - mov r9, #6 - movw r10, #65535 - uxth r3, r0 -.L746: - cmp r3, r10 - beq .L745 - ldr r2, [r7, #296] - mov r0, r4 - mul r8, r9, r3 - ldr r1, .L754+40 - ldrh r2, [r2, r3, lsl #1] - str r2, [sp] - ldr r2, [r7, #288] - add r2, r2, r8 - ldrh r2, [r2, #4] - str r2, [sp, #4] - ldr r2, [r7, #232] - ldrh r2, [r2, r3, lsl #1] - str r2, [sp, #8] - mov r2, r5 - bl sprintf - adds r5, r5, #1 - ldr r3, [r7, #288] - cmp r5, #16 - ldrh r3, [r3, r8] - add r4, r4, r0 - bne .L746 -.L745: - ldr r2, [r7, #288] - movs r5, #0 - ldr r3, [r7, #308] - mov r9, #6 - movw r10, #65535 - subs r3, r3, r2 - ldr r2, .L754+44 - asrs r3, r3, #1 - muls r3, r2, r3 - uxth r3, r3 -.L748: - cmp r3, r10 - beq .L747 - mul r8, r9, r3 - ldr r2, [r7, #288] - mov r0, r4 - ldr r1, .L754+48 - add r2, r2, r8 - ldrh r2, [r2, #4] - str r2, [sp] - ldr r2, [r7, #232] - ldrh r2, [r2, r3, lsl #1] - str r2, [sp, #4] - mov r2, r5 - bl sprintf - adds r5, r5, #1 - ldr r3, [r7, #288] - cmp r5, #4 - ldrh r3, [r3, r8] - add r4, r4, r0 - bne .L748 -.L747: - subs r0, r4, r6 - add sp, sp, #32 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L755: - .align 2 -.L754: .word .LC64 .word .LC65 .word .LC66 .word .LC67 +.L732: + ldr r1, .L734 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldr r2, [r5, #1124] + ldr r1, .L734+4 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldrh r2, [r5, #1128] + ldr r1, .L734+8 + mov r0, r4 + bl sprintf + add r4, r4, r0 + bl GetFreeBlockMinEraseCount + ldr r1, .L734+12 + mov r2, r0 + mov r0, r4 + bl sprintf + add r4, r4, r0 + ldrh r0, [r5, #316] + bl GetFreeBlockMaxEraseCount + ldr r1, .L734+16 + mov r2, r0 + mov r0, r4 + bl sprintf + ldrh r3, [r5, #556] + movw r2, #65535 + add r4, r4, r0 + cmp r3, r2 + beq .L720 + ldr r2, [r5, #300] + mov r0, r4 + ldr r1, .L734+20 + ldrh r2, [r2, r3, lsl #1] + bl sprintf + add r4, r4, r0 +.L720: + movs r0, #0 + ldr r9, .L734+28 + bl List_get_gc_head_node + uxth r3, r0 + movs r6, #0 + movw fp, #65535 + mov r10, #6 +.L722: + cmp r3, fp + beq .L721 + ldr r2, [r5, #236] + mul r8, r10, r3 + mov r0, r4 + mov r1, r9 + ldrh r2, [r2, r3, lsl #1] + str r2, [sp, #8] + ldr r2, [r5, #292] + add r2, r2, r8 + ldrh r2, [r2, #4] + str r2, [sp, #4] + ldr r2, [r5, #300] + ldrh r2, [r2, r3, lsl #1] + str r2, [sp] + mov r2, r6 + bl sprintf + adds r6, r6, #1 + ldr r3, [r5, #292] + cmp r6, #16 + add r4, r4, r0 + ldrh r3, [r3, r8] + bne .L722 +.L721: + ldr r2, [r5, #292] + movs r6, #0 + ldr r3, [r5, #312] + movw r9, #65535 + ldr fp, .L734+32 + mov r10, #6 + subs r3, r3, r2 + asrs r2, r3, #1 + ldr r3, .L734+24 + muls r3, r2, r3 + uxth r3, r3 +.L724: + cmp r3, r9 + beq .L723 + ldr r2, [r5, #236] + mul r8, r10, r3 + mov r0, r4 + mov r1, fp + ldrh r2, [r2, r3, lsl #1] + str r2, [sp, #4] + ldr r2, [r5, #292] + add r2, r2, r8 + ldrh r2, [r2, #4] + str r2, [sp] + mov r2, r6 + adds r6, r6, #1 + bl sprintf + cmp r6, #4 + add r4, r4, r0 + beq .L723 + ldr r3, [r5, #292] + ldrh r3, [r3, r8] + b .L724 +.L723: + subs r0, r4, r7 + b .L717 +.L735: + .align 2 +.L734: .word .LC68 .word .LC69 .word .LC70 .word .LC71 .word .LC72 .word .LC73 - .word .LC74 .word -1431655765 + .word .LC74 .word .LC75 .fnend .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 1 .global ftl_proc_ftl_read + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_proc_ftl_read, %function ftl_proc_ftl_read: .fnstart @@ -5441,8 +5690,8 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r5, r0 - ldr r1, .L757 - ldr r2, .L757+4 + ldr r2, .L737 + ldr r1, .L737+4 bl sprintf adds r4, r5, r0 mov r0, r4 @@ -5450,17 +5699,19 @@ add r0, r0, r4 subs r0, r0, r5 pop {r3, r4, r5, pc} -.L758: +.L738: .align 2 -.L757: +.L737: .word .LC76 .word .LC77 .fnend .size ftl_proc_ftl_read, .-ftl_proc_ftl_read .align 1 .global GetSwlReplaceBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: .fnstart @@ -5470,500 +5721,505 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r4, .L787 + ldr r4, .L765 ldr r2, [r4, #524] ldr r3, [r4, #532] cmp r2, r3 - bcs .L760 - ldr r2, .L787+4 + bcs .L740 + ldr r5, .L765+4 movs r3, #0 - ldr r0, [r4, #232] + ldr r0, [r4, #236] str r3, [r4, #516] - ldrh r1, [r2, #2328] - mov r5, r2 -.L761: + ldrh r1, [r5, #2332] +.L741: cmp r3, r1 - bcs .L786 - ldrh r6, [r0, r3, lsl #1] - adds r3, r3, #1 - ldr r2, [r4, #516] - add r2, r2, r6 - str r2, [r4, #516] - b .L761 -.L786: + bcc .L742 ldr r6, [r4, #516] mov r0, r6 bl __aeabi_uidiv - ldrh r1, [r5, #2380] str r0, [r4, #524] ldr r0, [r4, #520] + ldrh r1, [r5, #2382] subs r0, r6, r0 bl __aeabi_uidiv str r0, [r4, #516] - b .L763 -.L760: +.L743: + ldr r6, [r4, #532] + ldr r7, [r4, #524] + add r3, r6, #256 + cmp r3, r7 + bls .L748 + ldr r2, [r4, #528] + add r3, r6, #768 + cmp r3, r2 + bls .L748 + ldr r3, .L765+4 + ldr r3, [r3, #2248] + cbnz r3, .L749 +.L751: + movw r5, #65535 +.L750: + mov r0, r5 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L742: + ldrh r2, [r0, r3, lsl #1] + adds r3, r3, #1 + ldr r6, [r4, #516] + add r2, r2, r6 + str r2, [r4, #516] + b .L741 +.L740: ldr r3, [r4, #528] cmp r2, r3 - bls .L763 - ldr r0, .L787+4 + bls .L743 + ldr r0, .L765+4 adds r3, r3, #1 str r3, [r4, #528] movs r3, #0 -.L765: - ldrh r2, [r0, #2328] +.L745: + ldrh r2, [r0, #2332] cmp r3, r2 - bcs .L763 - ldr r1, [r4, #232] + bcs .L743 + ldr r1, [r4, #236] ldrh r2, [r1, r3, lsl #1] adds r2, r2, #1 strh r2, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 - b .L765 -.L763: - ldr r6, [r4, #532] - ldr r8, [r4, #524] - add r3, r6, #256 - cmp r3, r8 - bls .L768 - ldr r2, .L787 - add r3, r6, #768 - ldr r2, [r2, #528] - cmp r3, r2 - bls .L768 - ldr r3, .L787+4 - ldr r3, [r3, #2244] - cbnz r3, .L769 -.L771: - movw r0, #65535 - b .L770 -.L769: + b .L745 +.L749: cmp r6, #40 - bhi .L771 -.L768: - ldrh r0, [r4, #312] + bhi .L751 +.L748: + ldrh r0, [r4, #316] add r0, r0, r0, lsl #1 ubfx r0, r0, #2, #16 bl GetFreeBlockMaxEraseCount add r3, r6, #64 - cmp r0, r3 mov r9, r0 - bcs .L772 + cmp r0, r3 + bcs .L752 cmp r6, #40 - bhi .L771 -.L772: - ldr r3, [r4, #292] - ldr r2, .L787 + bhi .L751 +.L752: + ldr r3, [r4, #296] cmp r3, #0 - beq .L771 - ldr r1, .L787+4 - movw r7, #65535 - ldr r0, [r2, #288] - mov ip, #6 - ldr r10, [r2, #232] - mov r5, r7 - ldrh r1, [r1, #2328] - mov lr, r7 - str r1, [sp, #20] - movs r1, #0 -.L773: - ldrh r2, [r3] - cmp r2, lr - str r2, [sp, #16] - beq .L775 - adds r1, r1, #1 - ldr r2, [sp, #20] - uxth r1, r1 - cmp r1, r2 - bhi .L771 - ldrh fp, [r3, #4] - cmp fp, #0 - beq .L774 - subs r3, r3, r0 - ldr r2, .L787+8 - asrs r3, r3, #1 - muls r3, r2, r3 - uxth r3, r3 - ldrh fp, [r10, r3, lsl #1] - cmp fp, r6 - bls .L779 - cmp fp, r7 - itt cc - movcc r7, fp - movcc r5, r3 -.L774: - ldr r3, [sp, #16] - mla r3, ip, r3, r0 - b .L773 -.L779: - mov r5, r3 -.L775: + beq .L751 + ldr r2, .L765+4 + movw r1, #65535 + ldr lr, [r4, #292] + movs r0, #0 + ldr r8, [r4, #236] + mov r10, r1 + ldrh r2, [r2, #2332] + mov fp, #6 + str r2, [sp, #20] + mov r2, r1 +.L753: + ldrh ip, [r3] + cmp ip, r10 + bne .L756 + mov r5, r2 +.L755: movw r3, #65535 cmp r5, r3 - beq .L771 - ldrh fp, [r10, r5, lsl #1] - lsls r3, r5, #1 - cmp fp, r6 - bls .L777 - str r3, [sp, #16] + beq .L751 + ldrh r10, [r8, r5, lsl #1] + lsl fp, r5, #1 + cmp r6, r10 + bcs .L757 bl GetFreeBlockMinEraseCount - ldr r3, [sp, #16] - cmp r0, r6 - it hi - strhi r7, [r4, #532] -.L777: - cmp fp, r8 - bcs .L771 - add r2, fp, #128 - cmp r9, r2 - ble .L771 - add r2, fp, #256 - cmp r2, r8 - bcc .L778 - ldr r2, [r4, #528] - add fp, fp, #768 - cmp fp, r2 - bcs .L771 -.L778: - ldr r2, [r4, #296] - mov r1, r5 - ldr r0, .L787+12 - ldrh r2, [r2, r3] - str r2, [sp] - mov r2, r8 - ldrh r3, [r10, r3] + cmp r6, r0 + it cc + strcc r1, [r4, #532] +.L757: + cmp r7, r10 + bls .L751 + add r3, r10, #128 + cmp r9, r3 + ble .L751 + add r3, r10, #256 + cmp r7, r3 + bhi .L758 + ldr r3, [r4, #528] + add r10, r10, #768 + cmp r10, r3 + bcs .L751 +.L758: str r9, [sp, #8] + mov r2, r7 + ldrh r3, [r8, fp] + mov r1, r5 + ldr r0, .L765+8 str r3, [sp, #4] + ldr r3, [r4, #300] + ldrh r3, [r3, fp] + str r3, [sp] ldr r3, [r4, #528] bl printk - mov r0, r5 movs r3, #1 str r3, [r4, #1132] -.L770: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L788: + b .L750 +.L756: + adds r0, r0, #1 + ldr r5, [sp, #20] + uxth r0, r0 + cmp r0, r5 + bhi .L751 + ldrh r5, [r3, #4] + cbz r5, .L754 + ldr r5, .L765+12 + sub r3, r3, lr + asrs r3, r3, #1 + muls r3, r5, r3 + uxth r5, r3 + ldrh r3, [r8, r5, lsl #1] + cmp r6, r3 + bcs .L755 + cmp r1, r3 + itt hi + movhi r1, r3 + movhi r2, r5 +.L754: + mla r3, fp, ip, lr + b .L753 +.L766: .align 2 -.L787: +.L765: .word .LANCHOR2 .word .LANCHOR0 - .word -1431655765 .word .LC78 + .word -1431655765 .fnend .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 1 .global free_data_superblock + .syntax unified .thumb .thumb_func + .fpu softvfp .type free_data_superblock, %function free_data_superblock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 movw r2, #65535 - cmp r0, r2 push {r3, lr} .save {r3, lr} - beq .L790 - ldr r2, .L791 + cmp r0, r2 + beq .L768 + ldr r2, .L769 movs r1, #0 - ldr r2, [r2, #296] + ldr r2, [r2, #300] strh r1, [r2, r0, lsl #1] @ movhi bl INSERT_FREE_LIST -.L790: +.L768: movs r0, #0 pop {r3, pc} -.L792: +.L770: .align 2 -.L791: +.L769: .word .LANCHOR2 .fnend .size free_data_superblock, .-free_data_superblock .align 1 .global FtlGcBufInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcBufInit, %function FtlGcBufInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L804 - mov ip, #36 - ldr r0, .L804+4 + ldr r2, .L780 + mov ip, #1 + ldr r0, .L780+4 movs r3, #0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r7, #12 - mov lr, #1 - mov r6, r0 - mov r4, r2 + mov r5, r2 + mov lr, #36 + mov r1, r0 str r3, [r2, #1136] -.L794: - ldrh r1, [r0, #2320] - adds r5, r3, #1 - uxth r3, r3 - ldr r8, .L804+4 - cmp r3, r1 - bcs .L802 - mul r8, r7, r3 - ldr r9, [r2, #1140] - add r1, r9, r8 - str lr, [r1, #8] - ldrh r1, [r0, #2398] - muls r1, r3, r1 - it mi - addmi r1, r1, #3 - bic r10, r1, #3 - ldr r1, [r4, #1144] - add r1, r1, r10 - str r1, [r9, r8] - ldr r10, [r2, #1140] - ldrh r1, [r6, #2400] - muls r1, r3, r1 - it mi - addmi r1, r1, #3 - add r9, r10, r8 - bic fp, r1, #3 - ldr r1, [r4, #1148] - add r1, r1, fp - str r1, [r9, #4] - ldr r1, [r2, #1152] - mla r3, ip, r3, r1 - ldr r1, [r10, r8] - str r1, [r3, #8] - ldr r1, [r9, #4] - str r1, [r3, #12] - mov r3, r5 - b .L794 -.L802: - ldr r0, .L804 +.L772: + ldrh r4, [r0, #2324] + uxth r8, r3 + adds r6, r3, #1 + cmp r8, r4 + bcc .L775 + ldr r7, .L780 mov lr, #12 - movs r5, #0 -.L798: + movs r6, #0 +.L776: ldr r3, [r2, #1156] - cmp r1, r3 - bcs .L803 - mul r7, lr, r1 - ldr r6, [r0, #1140] - ldr r4, [r0, #1144] - adds r3, r6, r7 - str r5, [r3, #8] - ldrh r3, [r8, #2398] - muls r3, r1, r3 - it mi - addmi r3, r3, #3 - bic r3, r3, #3 - add r3, r3, r4 - str r3, [r6, r7] - ldr r3, [r2, #1140] - ldr r6, [r0, #1148] - add r7, r7, r3 - ldrh r3, [r8, #2400] - muls r3, r1, r3 - add r1, r1, #1 - it mi - addmi r3, r3, #3 - bic r3, r3, #3 - uxth r1, r1 - add r3, r3, r6 - str r3, [r7, #4] - b .L798 -.L803: + cmp r4, r3 + bcc .L779 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L805: +.L775: + uxth r3, r3 + ldr r9, [r2, #1140] + mul r8, r7, r3 + add r4, r9, r8 + str ip, [r4, #8] + ldrh r4, [r0, #2400] + muls r4, r3, r4 + it mi + addmi r4, r4, #3 + bic r10, r4, #3 + ldr r4, [r5, #1144] + add r4, r4, r10 + str r4, [r9, r8] + ldrh r4, [r1, #2402] + muls r4, r3, r4 + it mi + addmi r4, r4, #3 + ldr r10, [r2, #1140] + bic fp, r4, #3 + ldr r4, [r5, #1148] + add r9, r10, r8 + add r4, r4, fp + str r4, [r9, #4] + ldr r4, [r2, #1152] + mla r3, lr, r3, r4 + ldr r4, [r10, r8] + str r4, [r3, #8] + ldr r4, [r9, #4] + str r4, [r3, #12] + mov r3, r6 + b .L772 +.L779: + mul ip, lr, r4 + ldr r0, [r2, #1140] + ldr r5, [r2, #1144] + add r3, r0, ip + str r6, [r3, #8] + ldrh r3, [r1, #2400] + muls r3, r4, r3 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + add r3, r3, r5 + str r3, [r0, ip] + ldr r3, [r2, #1140] + ldr r0, [r7, #1148] + add ip, ip, r3 + ldrh r3, [r1, #2402] + muls r3, r4, r3 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + adds r4, r4, #1 + add r3, r3, r0 + uxth r4, r4 + str r3, [ip, #4] + b .L776 +.L781: .align 2 -.L804: +.L780: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlGcBufInit, .-FtlGcBufInit .align 1 .global FtlGcBufFree + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcBufFree, %function FtlGcBufFree: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L813 + ldr r3, .L789 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r5, #0 - ldr lr, [r3, #1156] mov r10, #36 + mov lr, #12 + mov r8, r5 + ldr ip, [r3, #1156] ldr r6, [r3, #1140] - mov r8, #12 - mov ip, r5 -.L807: - uxth r4, r5 - cmp r4, r1 - bcs .L806 - mla r4, r10, r4, r0 +.L783: + uxth r3, r5 + cmp r1, r3 + bls .L782 + mla r4, r10, r3, r0 movs r2, #0 -.L808: +.L784: uxth r3, r2 - cmp r3, lr - bcs .L809 - mul r3, r8, r3 + cmp ip, r3 + bls .L785 + mul r3, lr, r3 ldr r7, [r4, #8] adds r2, r2, #1 add r9, r6, r3 ldr r3, [r6, r3] cmp r3, r7 - bne .L808 - str ip, [r9, #8] -.L809: + bne .L784 + str r8, [r9, #8] +.L785: adds r5, r5, #1 - b .L807 -.L806: + b .L783 +.L782: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L814: +.L790: .align 2 -.L813: +.L789: .word .LANCHOR2 .fnend .size FtlGcBufFree, .-FtlGcBufFree .align 1 .global FtlGcBufAlloc + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcBufAlloc, %function FtlGcBufAlloc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L823 - mov ip, #1 + ldr r3, .L798 + mov ip, #12 push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} movs r4, #0 - ldr r5, [r3, #1156] - mov lr, #12 - ldr r6, [r3, #1140] + mov lr, #1 mov r8, #36 -.L816: + ldr r5, [r3, #1156] + ldr r6, [r3, #1140] +.L792: uxth r2, r4 - cmp r2, r1 - bcs .L822 + cmp r1, r2 + bhi .L796 + pop {r4, r5, r6, r7, r8, r9, pc} +.L796: mov r9, #0 -.L817: +.L793: uxth r3, r9 - cmp r3, r5 - bcs .L818 - mla r3, lr, r3, r6 + cmp r5, r3 + bls .L794 + mla r3, ip, r3, r6 add r9, r9, #1 ldr r7, [r3, #8] cmp r7, #0 - bne .L817 + bne .L793 mla r2, r8, r2, r0 ldr r7, [r3] - str ip, [r3, #8] + str lr, [r3, #8] str r7, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L818: +.L794: adds r4, r4, #1 - b .L816 -.L822: - pop {r4, r5, r6, r7, r8, r9, pc} -.L824: + b .L792 +.L799: .align 2 -.L823: +.L798: .word .LANCHOR2 .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 1 .global IsBlkInGcList + .syntax unified .thumb .thumb_func + .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, .L831 + ldr r2, .L805 ldr r3, [r2, #1160] ldrh r2, [r2, #1164] add r2, r3, r2, lsl #1 -.L826: +.L801: cmp r3, r2 - beq .L830 - ldrh r1, [r3], #2 - cmp r1, r0 - bne .L826 - movs r0, #1 - bx lr -.L830: + bne .L803 movs r0, #0 bx lr -.L832: +.L803: + ldrh r1, [r3], #2 + cmp r1, r0 + bne .L801 + movs r0, #1 + bx lr +.L806: .align 2 -.L831: +.L805: .word .LANCHOR2 .fnend .size IsBlkInGcList, .-IsBlkInGcList .align 1 .global FtlGcUpdatePage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcUpdatePage, %function FtlGcUpdatePage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r6, r0 + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + mov r5, r0 ubfx r0, r0, #10, #16 - mov r7, r1 - mov r8, r2 - bl P2V_block_in_plane - ldr r3, .L840 + mov r6, r1 + mov r7, r2 movs r4, #0 + bl P2V_block_in_plane + ldr r3, .L811 ldrh r1, [r3, #1164] ldr r2, [r3, #1160] -.L834: - uxth r5, r4 - cmp r5, r1 - bcs .L838 - adds r4, r4, #1 - add lr, r2, r4, lsl #1 - ldrh lr, [lr, #-2] - cmp lr, r0 - bne .L834 -.L838: - cmp r5, r1 - bne .L836 - strh r0, [r2, r5, lsl #1] @ movhi +.L808: + uxth ip, r4 + cmp ip, r1 + bcc .L810 + bne .L809 + strh r0, [r2, ip, lsl #1] @ movhi ldrh r0, [r3, #1164] adds r0, r0, #1 strh r0, [r3, #1164] @ movhi -.L836: + b .L809 +.L810: + adds r4, r4, #1 + add ip, r2, r4, lsl #1 + ldrh ip, [ip, #-2] + cmp ip, r0 + bne .L808 +.L809: ldrh r2, [r3, #1172] movs r0, #12 muls r0, r2, r0 ldr r2, [r3, #1168] adds r1, r2, r0 - str r7, [r1, #4] - str r8, [r1, #8] - str r6, [r2, r0] + str r6, [r1, #4] + str r7, [r1, #8] + str r5, [r2, r0] ldrh r2, [r3, #1172] adds r2, r2, #1 strh r2, [r3, #1172] @ movhi - pop {r4, r5, r6, r7, r8, pc} -.L841: + pop {r3, r4, r5, r6, r7, pc} +.L812: .align 2 -.L840: +.L811: .word .LANCHOR2 .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage .align 1 .global FtlGcRefreshOpenBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcRefreshOpenBlock, %function FtlGcRefreshOpenBlock: .fnstart @@ -5972,59 +6228,61 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r5, r0 - ldr r4, .L849 + ldr r4, .L820 ldrh r3, [r4, #1174] cmp r3, r0 - beq .L844 + beq .L815 ldrh r3, [r4, #1176] cmp r3, r0 - beq .L844 + beq .L815 ldrh r3, [r4, #1178] cmp r3, r0 - beq .L844 + beq .L815 ldrh r3, [r4, #1180] cmp r3, r0 - beq .L844 - ldr r0, .L849+4 - mov r1, r5 + beq .L815 + mov r1, r0 + ldr r0, .L820+4 bl printk ldrh r2, [r4, #1174] movw r3, #65535 cmp r2, r3 - bne .L846 + bne .L817 strh r5, [r4, #1174] @ movhi - b .L844 -.L846: +.L815: + movs r0, #0 + pop {r3, r4, r5, pc} +.L817: ldrh r2, [r4, #1176] cmp r2, r3 - bne .L847 + bne .L818 strh r5, [r4, #1176] @ movhi - b .L844 -.L847: + b .L815 +.L818: ldrh r2, [r4, #1178] cmp r2, r3 - bne .L848 + bne .L819 strh r5, [r4, #1178] @ movhi - b .L844 -.L848: + b .L815 +.L819: ldrh r2, [r4, #1180] cmp r2, r3 it eq strheq r5, [r4, #1180] @ movhi -.L844: - movs r0, #0 - pop {r3, r4, r5, pc} -.L850: + b .L815 +.L821: .align 2 -.L849: +.L820: .word .LANCHOR2 .word .LC79 .fnend .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 1 .global FtlGcRefreshBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: .fnstart @@ -6033,62 +6291,64 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r5, r0 - ldr r4, .L861 + ldr r4, .L832 ldrh r3, [r4, #1174] cmp r3, r0 - beq .L859 + beq .L830 ldrh r3, [r4, #1176] cmp r3, r0 - beq .L859 + beq .L830 ldrh r3, [r4, #1178] cmp r3, r0 - beq .L859 + beq .L830 ldrh r3, [r4, #1180] cmp r3, r0 - beq .L859 - ldr r0, .L861+4 - mov r1, r5 + beq .L830 + mov r1, r0 + ldr r0, .L832+4 bl printk ldrh r2, [r4, #1174] movw r3, #65535 cmp r2, r3 - bne .L853 + bne .L824 strh r5, [r4, #1174] @ movhi - b .L859 -.L853: - ldrh r2, [r4, #1176] - cmp r2, r3 - bne .L854 - strh r5, [r4, #1176] @ movhi - b .L859 -.L854: - ldrh r2, [r4, #1178] - cmp r2, r3 - bne .L855 - strh r5, [r4, #1178] @ movhi - b .L859 -.L855: - ldrh r2, [r4, #1180] - cmp r2, r3 - bne .L860 - strh r5, [r4, #1180] @ movhi -.L859: +.L830: movs r0, #0 pop {r3, r4, r5, pc} -.L860: +.L824: + ldrh r2, [r4, #1176] + cmp r2, r3 + bne .L825 + strh r5, [r4, #1176] @ movhi + b .L830 +.L825: + ldrh r2, [r4, #1178] + cmp r2, r3 + bne .L826 + strh r5, [r4, #1178] @ movhi + b .L830 +.L826: + ldrh r2, [r4, #1180] + cmp r2, r3 + bne .L831 + strh r5, [r4, #1180] @ movhi + b .L830 +.L831: mov r0, #-1 pop {r3, r4, r5, pc} -.L862: +.L833: .align 2 -.L861: +.L832: .word .LANCHOR2 .word .LC79 .fnend .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 1 .global FtlGcMarkBadPhyBlk + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcMarkBadPhyBlk, %function FtlGcMarkBadPhyBlk: .fnstart @@ -6097,52 +6357,52 @@ push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r5, r0 + ldr r4, .L842 bl P2V_block_in_plane - ldr r4, .L872 mov r2, r5 - ldrh r1, [r4, #1182] mov r6, r0 - ldr r0, .L872+4 + ldrh r1, [r4, #1182] + ldr r0, .L842+4 bl printk mov r0, r6 bl FtlGcRefreshBlock - ldr r3, .L872+8 - ldr r2, [r3, #2244] + ldr r3, .L842+8 + ldr r2, [r3, #2248] mov r3, r4 - cbz r2, .L864 - ldr r1, [r4, #232] + cbz r2, .L835 + ldr r1, [r4, #236] ldrh r2, [r1, r6, lsl #1] cmp r2, #39 itt hi subhi r2, r2, #40 strhhi r2, [r1, r6, lsl #1] @ movhi -.L864: +.L835: ldrh r2, [r3, #1182] movs r1, #0 - ldr r4, .L872+12 -.L865: + ldr r4, .L842+12 +.L836: uxth r0, r1 - cmp r0, r2 - bcs .L871 - adds r1, r1, #1 - add r0, r4, r1, lsl #1 - ldrh r0, [r0, #-2] - cmp r0, r5 - bne .L865 - b .L866 -.L871: + cmp r2, r0 + bhi .L838 cmp r2, #15 itttt ls addls r1, r2, #1 strhls r1, [r3, #1182] @ movhi addls r3, r3, r2, lsl #1 strhls r5, [r3, #1184] @ movhi -.L866: + b .L837 +.L838: + adds r1, r1, #1 + add r0, r4, r1, lsl #1 + ldrh r0, [r0, #-2] + cmp r0, r5 + bne .L836 +.L837: movs r0, #0 pop {r4, r5, r6, pc} -.L873: +.L843: .align 2 -.L872: +.L842: .word .LANCHOR2 .word .LC80 .word .LANCHOR0 @@ -6151,8 +6411,10 @@ .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 1 .global FtlGcReFreshBadBlk + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcReFreshBadBlk, %function FtlGcReFreshBadBlk: .fnstart @@ -6160,13 +6422,13 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} .save {r4, lr} - ldr r4, .L880 + ldr r4, .L850 ldrh r3, [r4, #1182] - cbz r3, .L875 + cbz r3, .L845 ldrh r1, [r4, #1174] movw r2, #65535 cmp r1, r2 - bne .L875 + bne .L845 ldrh r2, [r4, #1218] cmp r2, r3 itt cs @@ -6180,19 +6442,21 @@ ldrh r3, [r4, #1218] adds r3, r3, #1 strh r3, [r4, #1218] @ movhi -.L875: +.L845: movs r0, #0 pop {r4, pc} -.L881: +.L851: .align 2 -.L880: +.L850: .word .LANCHOR2 .fnend .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 1 .global ftl_memset + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_memset, %function ftl_memset: .fnstart @@ -6204,386 +6468,381 @@ .size ftl_memset, .-ftl_memset .align 1 .global BuildFlashLsbPageTable + .syntax unified .thumb .thumb_func + .fpu softvfp .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} mov r4, r1 - cbnz r0, .L884 - ldr r3, .L926 -.L885: + cbnz r0, .L854 + ldr r3, .L909 +.L855: strh r0, [r3, r0, lsl #1] @ movhi adds r0, r0, #1 cmp r0, #512 - bne .L885 -.L889: + bne .L855 +.L861: movs r1, #255 - ldr r0, .L926+4 mov r2, #2048 + ldr r0, .L909+4 uxth r4, r4 bl ftl_memset + ldr r1, .L909 movs r3, #0 - ldr r1, .L926 - ldr r0, .L926+8 - b .L886 -.L884: + ldr r0, .L909+8 +.L856: + uxth r2, r3 + cmp r4, r2 + bhi .L889 + pop {r3, r4, r5, pc} +.L854: cmp r0, #1 - bne .L887 - ldr r5, .L926 + bne .L857 + ldr r1, .L909 movs r3, #0 -.L888: +.L860: + cmp r3, #3 uxth r2, r3 - cmp r2, #3 - ite ls - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 + bls .L858 + tst r2, #1 ite ne - movne r1, #2 - moveq r1, #3 - rsb r1, r1, r2, lsl #1 - cmp r0, #0 - it ne - movne r2, r1 - strh r2, [r5, r3, lsl #1] @ movhi + movne r0, #3 + moveq r0, #2 + rsb r2, r0, r2, lsl #1 + uxth r2, r2 +.L858: + strh r2, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 cmp r3, #512 - bne .L888 - b .L889 -.L887: + bne .L860 + b .L861 +.L857: cmp r0, #2 - bne .L890 - ldr r0, .L926 - movs r3, #0 -.L891: - uxth r2, r3 - lsls r1, r2, #1 - subs r1, r1, #1 + bne .L862 + ldr r1, .L909 + movs r2, #0 +.L864: + uxth r3, r2 cmp r2, #1 - it hi - movhi r2, r1 - strh r2, [r0, r3, lsl #1] @ movhi - adds r3, r3, #1 - cmp r3, #512 - bne .L891 - b .L889 -.L890: + ittt hi + lslhi r3, r3, #1 + addhi r3, r3, #-1 + uxthhi r3, r3 + strh r3, [r1, r2, lsl #1] @ movhi + adds r2, r2, #1 + cmp r2, #512 + bne .L864 + b .L861 +.L862: cmp r0, #3 - bne .L892 - ldr r5, .L926 + bne .L865 + ldr r1, .L909 movs r3, #0 -.L893: +.L868: + cmp r3, #5 uxth r2, r3 - cmp r2, #5 - ite ls - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 + bls .L866 + tst r2, #1 ite ne - movne r1, #4 - moveq r1, #5 - rsb r1, r1, r2, lsl #1 - cmp r0, #0 - it ne - movne r2, r1 - strh r2, [r5, r3, lsl #1] @ movhi + movne r0, #5 + moveq r0, #4 + rsb r2, r0, r2, lsl #1 + uxth r2, r2 +.L866: + strh r2, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 cmp r3, #512 - bne .L893 - b .L889 -.L892: + bne .L868 + b .L861 +.L865: cmp r0, #4 mov r3, #0 - bne .L894 - ldr r2, .L926+12 - strh r3, [r2, #148] @ movhi + bne .L869 + ldr r2, .L909+12 + strh r3, [r2, #156] @ movhi movs r3, #1 - strh r0, [r2, #156] @ movhi - strh r3, [r2, #150] @ movhi - movs r3, #2 - strh r3, [r2, #152] @ movhi - movs r3, #3 - strh r3, [r2, #154] @ movhi - movs r3, #5 strh r3, [r2, #158] @ movhi - movs r3, #7 + movs r3, #2 strh r3, [r2, #160] @ movhi + movs r3, #3 + strh r3, [r2, #162] @ movhi + movs r3, #5 + strh r3, [r2, #166] @ movhi + movs r3, #7 + strh r3, [r2, #168] @ movhi movs r3, #8 - strh r3, [r2, #162]! @ movhi -.L895: + strh r0, [r2, #164] @ movhi + strh r3, [r2, #170]! @ movhi +.L871: tst r3, #1 ite ne movne r1, #7 moveq r1, #6 rsb r1, r1, r3, lsl #1 adds r3, r3, #1 - strh r1, [r2, #2]! @ movhi uxth r3, r3 + strh r1, [r2, #2]! @ movhi cmp r3, #512 - bne .L895 - b .L889 -.L894: + bne .L871 + b .L861 +.L869: cmp r0, #5 - bne .L896 - ldr r2, .L926 -.L897: - strh r3, [r2, r3, lsl #1] @ movhi + bne .L872 + ldr r2, .L909+12 + add r1, r2, #156 +.L873: + strh r3, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 cmp r3, #16 - bne .L897 - ldr r2, .L926+16 -.L898: + bne .L873 + adds r2, r2, #186 +.L874: strh r3, [r2, #2]! @ movhi adds r3, r3, #2 uxth r3, r3 cmp r3, #1008 - bne .L898 - b .L889 -.L896: + bne .L874 + b .L861 +.L872: cmp r0, #6 - bne .L899 - ldr r5, .L926 -.L900: - uxth r2, r3 - cmp r2, #5 - ite ls - movls r0, #0 - movhi r0, #1 - add r1, r2, r2, lsl #1 - bics r6, r0, r3 + bne .L875 + ldr r0, .L909 + mov r1, r3 +.L878: + cmp r1, #5 + uxth r2, r1 + bls .L876 + tst r2, #1 ite ne - movne r6, #10 - moveq r6, #12 - subs r1, r1, r6 - cmp r0, #0 - it ne - movne r2, r1 - strh r2, [r5, r3, lsl #1] @ movhi - adds r3, r3, #1 - cmp r3, #512 - bne .L900 - b .L889 -.L899: - cmp r0, #9 - bne .L901 - ldr r2, .L926+12 - movw r1, #1021 - strh r3, [r2, #148] @ movhi - movs r3, #1 - strh r3, [r2, #150] @ movhi - movs r3, #2 - strh r3, [r2, #152]! @ movhi - movs r3, #3 -.L902: - strh r3, [r2, #2]! @ movhi - adds r3, r3, #2 + movne r2, #12 + moveq r2, #10 + subs r2, r3, r2 + uxth r2, r2 +.L876: + strh r2, [r0, r1, lsl #1] @ movhi + adds r1, r1, #1 + cmp r1, #512 + add r3, r3, #3 uxth r3, r3 - cmp r3, r1 - bne .L902 - b .L889 -.L901: + bne .L878 + b .L861 +.L875: + cmp r0, #9 + bne .L879 + ldr r2, .L909+12 + movw r1, #1021 + strh r3, [r2, #156] @ movhi + movs r3, #1 + strh r3, [r2, #158] @ movhi + mov r3, r2 + movs r2, #2 + strh r2, [r3, #160]! @ movhi + movs r2, #3 +.L880: + strh r2, [r3, #2]! @ movhi + adds r2, r2, #2 + uxth r2, r2 + cmp r2, r1 + bne .L880 + b .L861 +.L879: cmp r0, #10 - bne .L903 - ldr r2, .L926 -.L904: - strh r3, [r2, r3, lsl #1] @ movhi + bne .L881 + ldr r2, .L909+12 + add r1, r2, #156 +.L882: + strh r3, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 cmp r3, #63 - bne .L904 - ldr r2, .L926+20 + bne .L882 + add r2, r2, #280 movw r1, #961 -.L905: +.L883: strh r3, [r2, #2]! @ movhi adds r3, r3, #2 uxth r3, r3 cmp r3, r1 - bne .L905 - b .L889 -.L903: + bne .L883 + b .L861 +.L881: cmp r0, #11 - bne .L906 - ldr r2, .L926 + bne .L884 + ldr r2, .L909+12 movs r3, #0 -.L907: - strh r3, [r2, r3, lsl #1] @ movhi + add r1, r2, #156 +.L885: + strh r3, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 cmp r3, #8 - bne .L907 - ldr r1, .L926+24 -.L908: + bne .L885 + adds r2, r2, #170 +.L887: tst r3, #1 ite ne - movne r2, #7 - moveq r2, #6 - rsb r2, r2, r3, lsl #1 + movne r1, #7 + moveq r1, #6 + rsb r1, r1, r3, lsl #1 adds r3, r3, #1 - strh r2, [r1, #2]! @ movhi uxth r3, r3 + strh r1, [r2, #2]! @ movhi cmp r3, #512 - bne .L908 - b .L889 -.L906: + bne .L887 + b .L861 +.L884: cmp r0, #12 - bne .L889 - ldr r3, .L926+12 + bne .L861 + ldr r3, .L909+12 movs r2, #0 - strh r2, [r3, #148] @ movhi + strh r2, [r3, #156] @ movhi movs r2, #1 - strh r2, [r3, #150] @ movhi + strh r2, [r3, #158] @ movhi movs r2, #2 - strh r2, [r3, #152] @ movhi + strh r2, [r3, #160] @ movhi movs r2, #3 - strh r2, [r3, #154]! @ movhi + strh r2, [r3, #162]! @ movhi movs r2, #4 -.L909: +.L888: subs r1, r2, #1 add r1, r1, r2, lsr #1 adds r2, r2, #1 - strh r1, [r3, #2]! @ movhi uxth r2, r2 + strh r1, [r3, #2]! @ movhi cmp r2, #512 - bne .L909 - b .L889 -.L886: - uxth r2, r3 - cmp r2, r4 - bcs .L925 + bne .L888 + b .L861 +.L889: ldrh r2, [r1, r3, lsl #1] adds r3, r3, #1 add r5, r0, r2, lsl #1 strh r2, [r5, #1220] @ movhi - b .L886 -.L925: - pop {r4, r5, r6, pc} -.L927: + b .L856 +.L910: .align 2 -.L926: - .word .LANCHOR0+148 +.L909: + .word .LANCHOR0+156 .word .LANCHOR2+1220 .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+178 - .word .LANCHOR0+272 - .word .LANCHOR0+162 .fnend .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 1 .global FlashDieInfoInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashDieInfoInit, %function FlashDieInfoInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r3, .L925 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r7, #0 - ldr r3, .L942 - ldr r4, .L942+4 - ldr r6, .L942+8 - ldrh r0, [r3, #482] - addw fp, r4, #2068 - strb r7, [r4, #2230] - mov r9, r4 + ldr r4, .L925+4 + ldr r6, .L925+8 + ldrh r0, [r3, #478] + addw r10, r4, #2072 + strb r7, [r4, #2234] + mov r9, r10 strb r7, [r6, #3268] bl FlashBlockAlignInit - mov r1, r7 movs r2, #8 - addw r0, r4, #2232 - bl ftl_memset mov r1, r7 + addw r0, r4, #2236 + bl ftl_memset movs r2, #32 - addw r0, r4, #1172 - bl ftl_memset - addw r0, r4, #2100 mov r1, r7 - movs r2, #128 + addw r0, r4, #1180 bl ftl_memset - ldr r5, [r4, #44] + movs r2, #128 + mov r1, r7 + addw r0, r4, #2104 + bl ftl_memset + ldr r5, [r4, #48] add r8, r5, #1 -.L930: - mov r0, r8 - add r1, fp, r7, lsl #3 +.L913: ldrb r2, [r5] @ zero_extendqisi2 + add r1, r10, r7, lsl #3 + mov r0, r8 bl FlashMemCmp8 - ldr r10, .L942+12 - cbnz r0, .L929 - ldrb r3, [r9, #2230] @ zero_extendqisi2 - add r2, r9, r3, lsl #2 - str r0, [r2, #1172] + cbnz r0, .L912 + ldrb r3, [r4, #2234] @ zero_extendqisi2 + add r2, r4, r3, lsl #2 + str r0, [r2, #1180] adds r2, r3, #1 - add r3, r3, r9 - strb r2, [r9, #2230] - strb r7, [r3, #2232] -.L929: + add r3, r3, r4 + strb r2, [r4, #2234] + strb r7, [r3, #2236] +.L912: adds r7, r7, #1 cmp r7, #4 - bne .L930 - ldrb r3, [r4, #2230] @ zero_extendqisi2 - ldr r2, .L942+4 + bne .L913 + ldrb r3, [r4, #2234] @ zero_extendqisi2 strb r3, [r6, #3268] ldrb r3, [r5, #8] @ zero_extendqisi2 cmp r3, #2 - beq .L931 -.L935: - ldrb r3, [r5, #13] @ zero_extendqisi2 - ldrb r2, [r4, #2230] @ zero_extendqisi2 - smulbb r2, r2, r3 - ldrh r3, [r5, #14] - smulbb r3, r2, r3 + beq .L914 +.L918: + ldrh r2, [r5, #14] + ldrb r3, [r4, #2234] @ zero_extendqisi2 + smulbb r3, r3, r2 + ldrb r2, [r5, #13] @ zero_extendqisi2 + smulbb r3, r3, r2 strh r3, [r6, #3270] @ movhi - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L931: - ldr r9, [r2, #4] + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L914: + ldr r10, [r4, #40] movs r7, #0 - mov fp, r2 -.L934: - mov r0, r8 - add r1, r10, r7, lsl #3 +.L917: ldrb r2, [r5] @ zero_extendqisi2 + add r1, r9, r7, lsl #3 + mov r0, r8 bl FlashMemCmp8 - cbnz r0, .L932 - ldrb r0, [r5, #13] @ zero_extendqisi2 + cbnz r0, .L915 ldrh r3, [r5, #14] - ldrb r2, [fp, #2230] @ zero_extendqisi2 - mul r0, r9, r0 - and r3, r3, #65280 - add r1, fp, r2, lsl #2 - muls r3, r0, r3 - str r3, [r1, #1172] + ldrb r2, [r4, #2234] @ zero_extendqisi2 + and r1, r3, #65280 + ldrb r3, [r5, #13] @ zero_extendqisi2 + mul r3, r10, r3 + muls r3, r1, r3 + add r1, r4, r2, lsl #2 + str r3, [r1, #1180] ldrb r0, [r5, #23] @ zero_extendqisi2 - cbz r0, .L933 + cbz r0, .L916 lsls r3, r3, #1 - str r3, [r1, #1172] -.L933: + str r3, [r1, #1180] +.L916: adds r3, r2, #1 add r2, r2, r4 - strb r3, [r4, #2230] - strb r7, [r2, #2232] -.L932: + strb r3, [r4, #2234] + strb r7, [r2, #2236] +.L915: adds r7, r7, #1 cmp r7, #4 - bne .L934 - b .L935 -.L943: + bne .L917 + b .L918 +.L926: .align 2 -.L942: +.L925: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR0+2068 .fnend .size FlashDieInfoInit, .-FlashDieInfoInit .align 1 .global ftl_read_flash_info + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_read_flash_info, %function ftl_read_flash_info: .fnstart @@ -6591,23 +6850,23 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - movs r1, #0 movs r2, #11 + movs r1, #0 mov r4, r0 - bl ftl_memset - ldr r3, .L948 movs r5, #1 - ldr r2, [r3, #44] - ldrb r1, [r2, #9] @ zero_extendqisi2 - ldr r2, [r3, #4] - smulbb r2, r1, r2 + bl ftl_memset + ldr r3, .L930 + ldr r2, [r3, #48] + ldr r1, [r3, #40] + ldrb r2, [r2, #9] @ zero_extendqisi2 + smulbb r2, r2, r1 strh r2, [r4, #4] @ unaligned - ldrb r2, [r3, #2312] @ zero_extendqisi2 + ldrb r2, [r3, #2316] @ zero_extendqisi2 strb r2, [r4, #7] - ldr r2, [r3, #2428] + ldr r2, [r3, #2432] str r2, [r4] @ unaligned - ldr r2, [r3, #44] - addw r3, r3, #2232 + ldr r2, [r3, #48] + addw r3, r3, #2236 ldrb r0, [r3, #-2] @ zero_extendqisi2 ldrb r1, [r2, #9] @ zero_extendqisi2 strb r1, [r4, #6] @@ -6617,29 +6876,31 @@ strb r2, [r4, #9] movs r2, #0 strb r2, [r4, #10] -.L945: +.L928: uxtb r1, r2 - cmp r1, r0 - bcs .L947 + cmp r0, r1 + bhi .L929 + pop {r4, r5, r6, pc} +.L929: ldrb r1, [r2, r3] @ zero_extendqisi2 adds r2, r2, #1 - lsl r6, r5, r1 - ldrb r1, [r4, #10] @ zero_extendqisi2 + ldrb r6, [r4, #10] @ zero_extendqisi2 + lsl r1, r5, r1 orrs r1, r1, r6 strb r1, [r4, #10] - b .L945 -.L947: - pop {r4, r5, r6, pc} -.L949: + b .L928 +.L931: .align 2 -.L948: +.L930: .word .LANCHOR0 .fnend .size ftl_read_flash_info, .-ftl_read_flash_info .align 1 .global FtlMemInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlMemInit, %function FtlMemInit: .fnstart @@ -6647,16 +6908,25 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} - mov r0, #1024 - ldr r4, .L1054 - movs r6, #0 - ldr r5, .L1054+4 movw r3, #65535 + ldr r4, .L1034 + movs r6, #0 + mov r0, #1024 movs r7, #12 + ldr r5, .L1034+4 mov r8, #36 + str r3, [r4, #3284] + strh r3, [r4, #1174] @ movhi + strh r3, [r4, #1176] @ movhi + strh r3, [r4, #1178] @ movhi + strh r3, [r4, #1180] @ movhi + movs r3, #32 + strh r3, [r4, #1120] @ movhi + movs r3, #128 + strh r3, [r4, #1122] @ movhi strh r6, [r4, #3272] @ movhi str r6, [r4, #3276] - str r6, [r4, #604] + str r6, [r4, #1116] str r6, [r4, #508] str r6, [r4, #512] str r6, [r4, #496] @@ -6667,47 +6937,38 @@ str r6, [r4, #476] str r6, [r4, #516] str r6, [r4, #520] - str r6, [r4, #236] + str r6, [r4, #240] str r6, [r4, #528] str r6, [r4, #532] str r6, [r4, #3280] str r6, [r4, #1132] - str r3, [r4, #3284] str r6, [r4, #3288] str r6, [r4, #1124] str r6, [r4, #3292] - strh r3, [r4, #1174] @ movhi - strh r3, [r4, #1176] @ movhi - strh r3, [r4, #1178] @ movhi - strh r3, [r4, #1180] @ movhi - movs r3, #32 strh r6, [r4, #1128] @ movhi - strh r3, [r4, #1120] @ movhi - movs r3, #128 strh r6, [r4, #1182] @ movhi - strh r3, [r4, #1122] @ movhi strh r6, [r4, #3296] @ movhi strh r6, [r4, #1218] @ movhi - ldrh r1, [r5, #2394] + ldrh r1, [r5, #2396] bl __aeabi_idiv - ldrh r3, [r5, #2320] - str r6, [r5, #2440] + ldrh r3, [r5, #2324] + str r0, [r4, #3300] + str r6, [r5, #2444] lsls r3, r3, #2 cmp r0, r3 - str r0, [r4, #3300] - ldrh r0, [r5, #2392] + ldrh r0, [r5, #2394] it hi strhi r3, [r4, #3300] lsls r0, r0, #1 bl ftl_malloc str r0, [r4, #1160] - ldrh r0, [r5, #2392] + ldrh r0, [r5, #2394] muls r0, r7, r0 bl ftl_malloc - ldrh r6, [r5, #2320] + ldrh r6, [r5, #2324] + str r0, [r4, #1168] mul r6, r8, r6 lsl r9, r6, #3 - str r0, [r4, #1168] mov r0, r9 bl ftl_malloc str r0, [r4, #3304] @@ -6719,20 +6980,20 @@ str r0, [r4, #3312] mov r0, r6 bl ftl_malloc - str r0, [r4, #228] + str r0, [r4, #232] mov r0, r6 bl ftl_malloc str r0, [r4, #1152] ldr r0, [r4, #3300] mul r0, r8, r0 bl ftl_malloc - ldrh r6, [r5, #2398] - ldrh r3, [r5, #2320] + ldrh r3, [r5, #2324] + ldrh r6, [r5, #2400] + str r0, [r5, #2448] lsls r3, r3, #1 + mov r0, r6 adds r3, r3, #1 str r3, [r4, #1156] - str r0, [r5, #2444] - mov r0, r6 bl ftl_malloc str r0, [r4, #3316] mov r0, r6 @@ -6758,272 +7019,274 @@ ldr r0, [r4, #1156] muls r0, r7, r0 bl ftl_malloc - ldrh r3, [r5, #2320] - ldrh r6, [r5, #2400] - muls r6, r3, r6 + ldrh r3, [r5, #2402] + ldrh r6, [r5, #2324] str r0, [r4, #1140] + muls r6, r3, r6 mov r0, r6 bl ftl_malloc str r0, [r4, #3340] lsls r0, r6, #3 bl ftl_malloc - ldrh r3, [r5, #2400] + ldrh r3, [r5, #2402] str r0, [r4, #3344] ldr r0, [r4, #1156] muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2400] + ldrh r3, [r5, #2402] str r0, [r4, #1148] ldr r0, [r4, #3300] muls r0, r3, r0 bl ftl_malloc str r0, [r4, #3348] - ldrh r0, [r5, #2330] + ldrh r0, [r5, #2334] lsls r0, r0, #1 uxth r0, r0 strh r0, [r4, #3352] @ movhi bl ftl_malloc + ldrh r3, [r4, #3352] str r0, [r4, #3356] - ldrh r0, [r4, #3352] - addw r0, r0, #547 - lsrs r0, r0, #9 - strh r0, [r4, #3352] @ movhi - lsls r0, r0, #9 + ldr r0, .L1034+8 + addw r3, r3, #547 + lsrs r3, r3, #9 + and r0, r0, r3, lsl #9 + strh r3, [r4, #3352] @ movhi bl ftl_malloc - ldrh r6, [r5, #2330] - lsls r6, r6, #1 + ldrh r6, [r5, #2334] str r0, [r4, #3360] adds r0, r0, #32 - str r0, [r4, #232] + str r0, [r4, #236] + lsls r6, r6, #1 mov r0, r6 bl ftl_malloc str r0, [r4, #3364] mov r0, r6 bl ftl_malloc - ldr r6, [r5, #2416] + ldr r6, [r5, #2420] + str r0, [r4, #300] lsls r6, r6, #1 - str r0, [r4, #296] mov r0, r6 bl ftl_malloc str r0, [r4, #3368] mov r0, r6 bl ftl_malloc str r0, [r4, #3372] - ldrh r0, [r5, #2330] + ldrh r0, [r5, #2334] lsrs r0, r0, #3 adds r0, r0, #4 bl ftl_malloc - str r0, [r4, #472] - ldrh r0, [r5, #2408] + str r0, [r5, #32] + ldrh r0, [r5, #2412] lsls r0, r0, #1 bl ftl_malloc - str r0, [r5, #2436] - ldrh r0, [r5, #2408] + str r0, [r5, #2440] + ldrh r0, [r5, #2412] lsls r0, r0, #1 bl ftl_malloc str r0, [r4, #3376] - ldrh r0, [r5, #2408] + ldrh r0, [r5, #2412] lsls r0, r0, #2 bl ftl_malloc str r0, [r4, #3380] - ldrh r0, [r5, #2410] + ldrh r0, [r5, #2414] lsls r0, r0, #2 bl ftl_malloc - ldrh r2, [r5, #2410] + ldrh r2, [r5, #2414] movs r1, #0 - lsls r2, r2, #2 str r0, [r4, #3384] + lsls r2, r2, #2 bl ftl_memset - ldrh r6, [r5, #2424] + ldrh r6, [r5, #2428] lsls r6, r6, #2 mov r0, r6 bl ftl_malloc str r0, [r4, #3388] mov r0, r6 bl ftl_malloc - ldr r6, .L1054+8 str r0, [r4, #3392] - ldr r0, [r5, #2416] + ldr r0, [r5, #2420] + ldr r6, .L1034+12 lsls r0, r0, #2 bl ftl_malloc str r0, [r4, #3396] - ldrh r0, [r5, #2426] + ldrh r0, [r5, #2430] muls r0, r7, r0 bl ftl_malloc - ldrh r3, [r5, #2426] - str r0, [r4, #460] - ldrh r0, [r5, #2398] + ldrh r3, [r5, #2430] + str r0, [r4, #464] + ldrh r0, [r5, #2400] muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2330] + ldrh r3, [r5, #2334] str r0, [r4, #3400] movs r0, #6 muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2386] - adds r3, r3, #31 - asrs r3, r3, #5 - strh r3, [r4, #3404] @ movhi - str r0, [r4, #288] - ldrh r0, [r5, #2342] + str r0, [r4, #292] + ldrh r0, [r5, #2388] + ldrh r3, [r5, #2346] + adds r0, r0, #31 + asrs r0, r0, #5 + strh r0, [r4, #3404] @ movhi muls r0, r3, r0 lsls r0, r0, #2 bl ftl_malloc ldrh r2, [r4, #3404] - ldrh r7, [r5, #2342] movs r3, #1 + ldrh r7, [r5, #2346] + str r0, [r5, #2484] lsls r2, r2, #2 mov r1, r2 - str r0, [r5, #2480] -.L952: +.L934: cmp r3, r7 - bcs .L1052 - ldr r0, [r5, #2480] + bcc .L935 + ldr r2, .L1034+16 + movs r1, #0 + add r3, r2, r3, lsl #2 + adds r2, r2, #56 + adds r3, r3, #24 +.L936: + cmp r2, r3 + bne .L937 + ldr r3, [r4, #3368] + cbnz r3, .L938 +.L940: + ldr r1, .L1034+20 + ldr r0, .L1034+24 + bl printk + mov r0, #-1 + pop {r3, r4, r5, r6, r7, r8, r9, pc} +.L935: + ldr r0, [r5, #2484] adds r3, r3, #1 add r0, r0, r1 add r1, r1, r2 str r0, [r6, #4]! - b .L952 -.L1052: - ldr r2, .L1054+12 - movs r1, #0 -.L954: - cmp r3, #8 - beq .L1053 - add r0, r2, r3, lsl #2 - adds r3, r3, #1 - str r1, [r0, #28] - b .L954 -.L1053: - ldr r2, [r4, #3368] - ldr r3, .L1054 - cbnz r2, .L956 -.L958: - ldr r1, .L1054+16 - ldr r0, .L1054+20 - bl printk - mov r0, #-1 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1055: + b .L934 +.L937: + str r1, [r3, #4]! + b .L936 +.L1035: .align 2 -.L1054: +.L1034: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+2480 - .word .LANCHOR0+2452 + .word 33553920 + .word .LANCHOR0+2484 + .word .LANCHOR0+2456 .word .LANCHOR3 .word .LC81 -.L956: - ldr r2, [r3, #3372] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3388] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3396] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #460] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3400] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #288] - cmp r2, #0 - beq .L958 - ldr r2, [r5, #2480] - cmp r2, #0 - beq .L958 - ldr r3, [r3, #296] +.L938: + ldr r3, [r4, #3372] cmp r3, #0 - beq .L958 - ldr r2, [r4, #1160] - ldr r3, .L1056 - cmp r2, #0 - beq .L958 - ldr r2, [r3, #1168] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3304] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3312] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #228] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #1152] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3308] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3316] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3320] - cmp r2, #0 - beq .L958 - ldr r3, [r3, #3324] + beq .L940 + ldr r3, [r4, #3388] cmp r3, #0 - beq .L958 - ldr r2, [r4, #1144] - ldr r3, .L1056 - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3332] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3336] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #1140] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3340] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #3344] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #1148] - cmp r2, #0 - beq .L958 - ldr r2, [r3, #232] - cmp r2, #0 - beq .L958 - ldr r3, [r3, #3356] + beq .L940 + ldr r3, [r4, #3396] cmp r3, #0 - beq .L958 - ldr r3, .L1056+4 - ldr r3, [r3, #2436] + beq .L940 + ldr r3, [r4, #464] cmp r3, #0 - beq .L958 - ldr r3, .L1056 + beq .L940 + ldr r3, [r4, #3400] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #292] + cmp r3, #0 + beq .L940 + ldr r3, [r5, #2484] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #300] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1160] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1168] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3304] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3312] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #232] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1152] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3308] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3316] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3320] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3324] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1144] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3332] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3336] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1140] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3340] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3344] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #1148] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #236] + cmp r3, #0 + beq .L940 + ldr r3, [r4, #3356] + cmp r3, #0 + beq .L940 + ldr r3, .L1036 + ldr r3, [r3, #2440] + cmp r3, #0 + beq .L940 + ldr r3, .L1036+4 ldr r2, [r3, #3376] cmp r2, #0 - beq .L958 + beq .L940 ldr r2, [r3, #3380] cmp r2, #0 - beq .L958 + beq .L940 ldr r3, [r3, #3384] cmp r3, #0 - beq .L958 + beq .L940 movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1057: +.L1037: .align 2 -.L1056: - .word .LANCHOR2 +.L1036: .word .LANCHOR0 + .word .LANCHOR2 .fnend .size FtlMemInit, .-FtlMemInit .align 1 .global FtlBbt2Bitmap + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlBbt2Bitmap, %function FtlBbt2Bitmap: .fnstart @@ -7031,101 +7294,107 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r3, .L1063 - mov r0, r1 mov r5, r1 + ldr r3, .L1043 + mov r4, r0 movs r1, #0 + mov r0, r5 movs r7, #1 ldrh r2, [r3, #3404] lsls r2, r2, #2 bl ftl_memset - ldr r1, .L1063+4 + ldr r0, .L1043+4 subs r2, r4, #2 + movw ip, #65535 addw r4, r4, #1022 - movw lr, #65535 -.L1060: +.L1040: ldrh r3, [r2, #2]! - cmp r3, lr - beq .L1058 - lsrs r0, r3, #5 + cmp r3, ip + beq .L1038 + lsrs r6, r3, #5 and r3, r3, #31 lsl r3, r7, r3 cmp r2, r4 - ldr r6, [r5, r0, lsl #2] - orr r3, r3, r6 - str r3, [r5, r0, lsl #2] - ldrh r3, [r1, #2458] + ldr r1, [r5, r6, lsl #2] + orr r3, r3, r1 + str r3, [r5, r6, lsl #2] + ldrh r3, [r0, #2462] add r3, r3, #1 - strh r3, [r1, #2458] @ movhi - bne .L1060 -.L1058: + strh r3, [r0, #2462] @ movhi + bne .L1040 +.L1038: pop {r3, r4, r5, r6, r7, pc} -.L1064: +.L1044: .align 2 -.L1063: +.L1043: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 1 .global FtlBbtMemInit + .syntax unified .thumb .thumb_func + .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, .L1066 + ldr r0, .L1046 movw r3, #65535 - movs r1, #255 movs r2, #16 - add r0, r0, #2464 - strh r3, [r0, #-12] @ movhi + movs r1, #255 + strh r3, [r0, #2456] @ movhi movs r3, #0 - strh r3, [r0, #-6] @ movhi + strh r3, [r0, #2462] @ movhi + addw r0, r0, #2468 b ftl_memset -.L1067: +.L1047: .align 2 -.L1066: +.L1046: .word .LANCHOR0 .fnend .size FtlBbtMemInit, .-FtlBbtMemInit .align 1 .global FtlFreeSysBlkQueueInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1069 + ldr r3, .L1049 mov r2, #2048 push {r4, lr} .save {r4, lr} movs r4, #0 - strh r0, [r3, #2512] @ movhi - addw r0, r3, #2520 mov r1, r4 - strh r4, [r3, #2514] @ movhi - strh r4, [r3, #2516] @ movhi + strh r0, [r3, #2516] @ movhi + addw r0, r3, #2524 strh r4, [r3, #2518] @ movhi + strh r4, [r3, #2520] @ movhi + strh r4, [r3, #2522] @ movhi bl ftl_memset mov r0, r4 pop {r4, pc} -.L1070: +.L1050: .align 2 -.L1069: +.L1049: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit .align 1 .global ftl_free_no_use_map_blk + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: .fnstart @@ -7136,159 +7405,142 @@ movs r1, #0 ldrh r2, [r0, #10] mov r4, r0 - ldr r6, [r0, #20] + ldr r5, [r0, #20] ldr r7, [r0, #12] - ldr r5, [r0, #24] + ldr r6, [r0, #24] lsls r2, r2, #1 - mov r0, r6 + mov r0, r5 bl ftl_memset - movs r1, #0 -.L1072: - ldrh r2, [r4, #6] - uxth r3, r1 - cmp r2, r3 - bls .L1091 - ldr r2, [r5, r3, lsl #2] - movs r0, #0 - ubfx r2, r2, #10, #16 -.L1073: - ldrh lr, [r4, #10] - uxth r3, r0 - cmp lr, r3 - bls .L1092 - ldrh lr, [r7, r3, lsl #1] - cmp lr, r2 - bne .L1074 - cbz r2, .L1074 - ldrh lr, [r6, r3, lsl #1] - add lr, lr, #1 - strh lr, [r6, r3, lsl #1] @ movhi -.L1074: - adds r0, r0, #1 - b .L1073 -.L1092: - adds r1, r1, #1 - b .L1072 -.L1091: - ldr r3, .L1095 - mov r8, #0 - mov r10, r8 - ldrh r2, [r3, #2390] + movs r3, #0 +.L1052: + ldrh r1, [r4, #6] + uxth r2, r3 + cmp r1, r2 + bhi .L1056 + ldr r3, .L1071 + movs r6, #0 + mov r9, r6 + mov fp, r6 + ldrh r2, [r3, #2392] ldrh r3, [r4] - strh r2, [r6, r3, lsl #1] @ movhi - mov r2, r8 - ldrh r9, [r6] -.L1077: + strh r2, [r5, r3, lsl #1] @ movhi + ldrh r10, [r5] +.L1057: ldrh r3, [r4, #10] - uxth r5, r8 - cmp r3, r5 - bls .L1093 - ldrh r3, [r6, r5, lsl #1] - lsls r1, r5, #1 - cmp r9, r3 - bls .L1078 - ldrh r0, [r7, r5, lsl #1] - add fp, r7, r1 - cbnz r0, .L1079 - b .L1080 -.L1078: - cbnz r3, .L1080 - ldrh r0, [r7, r1] - add fp, r7, r1 - cbz r0, .L1080 - mov r5, r2 - b .L1082 -.L1079: - cbnz r3, .L1094 - mov r9, r3 -.L1082: + uxth r1, r6 + cmp r3, r1 + bhi .L1061 + mov r0, r9 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1056: + uxth r2, r3 + ldr r1, [r6, r2, lsl #2] + movs r2, #0 + ubfx r1, r1, #10, #16 +.L1053: + ldrh ip, [r4, #10] + uxth r0, r2 + cmp ip, r0 + bhi .L1055 + adds r3, r3, #1 + b .L1052 +.L1055: + uxth r0, r2 + ldrh ip, [r7, r0, lsl #1] + cmp ip, r1 + bne .L1054 + cbz r1, .L1054 + ldrh ip, [r5, r0, lsl #1] + add ip, ip, #1 + strh ip, [r5, r0, lsl #1] @ movhi +.L1054: + adds r2, r2, #1 + b .L1053 +.L1061: + uxth r2, r6 + ldrh r3, [r5, r2, lsl #1] + lsl r8, r2, #1 + cmp r10, r3 + bls .L1058 + ldrh r0, [r7, r2, lsl #1] + add r8, r8, r7 + cbnz r0, .L1059 +.L1060: + adds r6, r6, #1 + b .L1057 +.L1058: + cmp r3, #0 + bne .L1060 + ldrh r0, [r7, r2, lsl #1] + add r8, r8, r7 + cmp r0, #0 + beq .L1060 +.L1062: movs r1, #1 bl FtlFreeSysBlkQueueIn - strh r10, [fp] @ movhi + strh fp, [r8] @ movhi ldrh r3, [r4, #8] - mov r2, r5 subs r3, r3, #1 strh r3, [r4, #8] @ movhi -.L1080: - add r8, r8, #1 - b .L1077 -.L1094: - mov r2, r5 - mov r9, r3 - b .L1080 -.L1093: - mov r0, r2 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1096: + b .L1060 +.L1059: + mov r9, r1 + mov r10, r3 + cmp r3, #0 + beq .L1062 + b .L1060 +.L1072: .align 2 -.L1095: +.L1071: .word .LANCHOR0 .fnend .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 1 .global FtlL2PDataInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlL2PDataInit, %function FtlL2PDataInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} movs r1, #0 - ldr r4, .L1101 - movs r7, #0 - ldr r5, .L1101+4 - mov r6, r7 - ldr r2, [r4, #2416] - mov r9, r4 + ldr r4, .L1076 + movs r7, #12 + ldr r5, .L1076+4 + ldr r2, [r4, #2420] ldr r0, [r5, #3372] lsls r2, r2, #1 bl ftl_memset - ldrh r3, [r4, #2398] - ldrh r2, [r4, #2426] + ldrh r3, [r4, #2400] movs r1, #255 + ldrh r2, [r4, #2430] ldr r0, [r5, #3400] muls r2, r3, r2 bl ftl_memset + movs r2, #0 mov r3, r5 - movs r5, #12 - mov r2, r4 - movw lr, #65535 -.L1098: - ldrh ip, [r2, #2426] - adds r0, r7, #1 - uxth r7, r7 - ldr r1, .L1101 - cmp ip, r7 - bls .L1100 - mul r1, r5, r7 - ldr ip, [r3, #460] - add r8, ip, r1 - str r6, [r8, #4] - strh lr, [ip, r1] @ movhi - ldr r4, [r3, #460] - add ip, r4, r1 - ldrh r1, [r9, #2398] - muls r1, r7, r1 - ldr r7, [r3, #3400] - bic r1, r1, #3 - add r1, r1, r7 - mov r7, r0 - str r1, [ip, #8] - b .L1098 -.L1100: - movw r2, #65535 - strh r2, [r3, #3410] @ movhi - strh r2, [r3, #3408] @ movhi - ldr r2, [r1, #2416] + movw r1, #65535 + mov ip, r2 +.L1074: + ldrh r5, [r4, #2430] + uxth r0, r2 + adds r6, r2, #1 + cmp r5, r0 + bhi .L1075 + ldr r2, [r4, #2420] + strh r1, [r3, #3410] @ movhi + strh r1, [r3, #3408] @ movhi strh r2, [r3, #3418] @ movhi movw r2, #61634 strh r2, [r3, #3412] @ movhi ldrh r2, [r3, #3452] strh r2, [r3, #3416] @ movhi - ldrh r2, [r1, #2424] + ldrh r2, [r4, #2428] strh r2, [r3, #3414] @ movhi ldr r2, [r3, #3368] str r2, [r3, #3420] @@ -7298,18 +7550,37 @@ str r2, [r3, #3428] ldr r2, [r3, #3388] str r2, [r3, #3432] - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1102: + pop {r3, r4, r5, r6, r7, pc} +.L1075: + uxth r2, r2 + ldr r0, [r3, #464] + mul r5, r7, r2 + add lr, r0, r5 + str ip, [lr, #4] + strh r1, [r0, r5] @ movhi + ldr r0, [r3, #464] + add r0, r0, r5 + ldrh r5, [r4, #2400] + muls r2, r5, r2 + ldr r5, [r3, #3400] + bic r2, r2, #3 + add r2, r2, r5 + str r2, [r0, #8] + mov r2, r6 + b .L1074 +.L1077: .align 2 -.L1101: +.L1076: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlL2PDataInit, .-FtlL2PDataInit .align 1 .global FtlVariablesInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlVariablesInit, %function FtlVariablesInit: .fnstart @@ -7317,56 +7588,58 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - movs r4, #0 - ldr r6, .L1104 movw r3, #65535 - ldr r5, .L1104+4 + ldr r6, .L1079 + movs r4, #0 mov r1, r4 - ldrh r2, [r6, #2408] - ldr r0, [r6, #2436] + ldr r5, .L1079+4 + ldrh r2, [r6, #2412] + ldr r0, [r6, #2440] strh r3, [r5, #3460] @ movhi mov r3, #-1 - lsls r2, r2, #1 str r3, [r5, #3472] + lsls r2, r2, #1 str r4, [r5, #3456] str r4, [r5, #3464] str r4, [r5, #3468] - str r4, [r6, #2244] - strh r4, [r6, #2434] @ movhi + str r4, [r6, #2248] + strh r4, [r6, #2438] @ movhi bl ftl_memset - ldrh r2, [r6, #2330] + ldrh r2, [r6, #2334] mov r1, r4 - ldr r0, [r5, #232] + ldr r0, [r5, #236] lsls r2, r2, #1 bl ftl_memset - ldrh r2, [r6, #2330] + ldrh r2, [r6, #2334] mov r1, r4 ldr r0, [r5, #3356] lsls r2, r2, #1 bl ftl_memset mov r1, r4 - add r0, r5, #240 movs r2, #48 + add r0, r5, #244 bl ftl_memset - mov r1, r4 mov r2, #512 - add r0, r5, #608 + mov r1, r4 + add r0, r5, #604 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov r0, r4 pop {r4, r5, r6, pc} -.L1105: +.L1080: .align 2 -.L1104: +.L1079: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlVariablesInit, .-FtlVariablesInit .align 1 .global SupperBlkListInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type SupperBlkListInit, %function SupperBlkListInit: .fnstart @@ -7374,119 +7647,121 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r2, #6 - ldr r6, .L1117 movs r5, #0 - ldr r4, .L1117+4 + ldr r6, .L1091 + movs r2, #6 + mov r9, r5 + mov r10, r5 + ldr r4, .L1091+4 + movw fp, #65535 + ldrh r3, [r6, #2334] + mov r8, r6 .pad #20 sub sp, sp, #20 movs r1, #0 - mov r9, r5 - ldrh r3, [r6, #2330] - mov r10, r5 - ldr r0, [r4, #288] - mov r8, r6 + ldr r0, [r4, #292] muls r2, r3, r2 bl ftl_memset - str r5, [r4, #308] - str r5, [r4, #292] - str r5, [r4, #300] - strh r5, [r4, #304] @ movhi - strh r5, [r4, #312] @ movhi + str r5, [r4, #312] + str r5, [r4, #296] + str r5, [r4, #304] + strh r5, [r4, #308] @ movhi + strh r5, [r4, #316] @ movhi strh r5, [r4, #3272] @ movhi -.L1107: - uxth fp, r5 - ldrh r2, [r8, #2328] - sxth r7, fp - cmp r7, r2 - bge .L1114 - ldr r3, .L1117 - movs r2, #0 - mov r6, r2 - ldrh ip, [r3, #2320] - ldrh r3, [r3, #2388] - str r3, [sp, #4] -.L1115: - sxth r1, r2 - cmp r1, ip - bge .L1116 - add r1, r1, r8 - str r2, [sp, #12] - str ip, [sp, #8] - ldrb r0, [r1, #2348] @ zero_extendqisi2 - mov r1, fp +.L1082: + ldrh r3, [r8, #2332] + sxth r7, r5 + cmp r7, r3 + bge .L1089 + ldrh r3, [r8, #2390] + uxth r1, r5 + ldrh r2, [r8, #2324] + str r1, [sp, #4] + str r3, [sp] + movs r3, #0 + mov r6, r3 + b .L1090 +.L1084: + add r0, r8, r1 + ldr r1, [sp, #4] + ldrb r0, [r0, #2350] @ zero_extendqisi2 + str r3, [sp, #12] + str r2, [sp, #8] bl V2P_block bl FtlBbmIsBadBlock - ldr ip, [sp, #8] - ldr r2, [sp, #12] - cbnz r0, .L1108 - ldr r3, [sp, #4] - add r6, r6, r3 - uxth r6, r6 -.L1108: - adds r2, r2, #1 - b .L1115 -.L1116: - cbz r6, .L1110 - sxth r1, r6 + ldr r2, [sp, #8] + ldr r3, [sp, #12] + cbnz r0, .L1083 + ldr r1, [sp] + add r6, r6, r1 + sxth r6, r6 +.L1083: + adds r3, r3, #1 +.L1090: + sxth r1, r3 + cmp r1, r2 + blt .L1084 + lsls r2, r7, #1 + cbz r6, .L1085 + mov r1, r6 + str r2, [sp] mov r0, #32768 bl __aeabi_idiv - uxth r6, r0 - b .L1111 -.L1110: - ldr r1, [r4, #296] - sxth r2, fp - movw r0, #65535 - strh r0, [r1, r2, lsl #1] @ movhi -.L1111: - add r0, r7, r7, lsl #1 - ldr r1, [r4, #288] - ldr r2, .L1117+4 - add r1, r1, r0, lsl #1 - strh r6, [r1, #4] @ movhi - ldrh r1, [r4, #316] - cmp r7, r1 - beq .L1112 - ldrh r1, [r2, #364] - cmp r7, r1 - beq .L1112 - ldrh r1, [r2, #412] - cmp r7, r1 - beq .L1112 - ldr r2, [r2, #296] - ldrh r2, [r2, r7, lsl #1] - cbnz r2, .L1113 + ldr r2, [sp] + sxth r6, r0 +.L1086: + ldr r3, [r4, #292] + add r2, r2, r7 + add r3, r3, r2, lsl #1 + strh r6, [r3, #4] @ movhi + ldrh r3, [r4, #320] + cmp r7, r3 + beq .L1087 + ldrh r3, [r4, #368] + cmp r7, r3 + beq .L1087 + ldrh r3, [r4, #416] + cmp r7, r3 + beq .L1087 + ldr r3, [r4, #300] + uxth r0, r5 + ldrh r3, [r3, r7, lsl #1] + cbnz r3, .L1088 add r9, r9, #1 - mov r0, fp uxth r9, r9 bl INSERT_FREE_LIST - b .L1112 -.L1113: +.L1087: + adds r5, r5, #1 + b .L1082 +.L1085: + ldr r3, [r4, #300] + strh fp, [r3, r7, lsl #1] @ movhi + b .L1086 +.L1088: add r10, r10, #1 - mov r0, fp uxth r10, r10 bl INSERT_DATA_LIST -.L1112: - adds r5, r5, #1 - b .L1107 -.L1114: + b .L1087 +.L1089: movs r0, #0 - strh r10, [r4, #304] @ movhi - strh r9, [r4, #312] @ movhi + strh r10, [r4, #308] @ movhi + strh r9, [r4, #316] @ movhi add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1118: +.L1092: .align 2 -.L1117: +.L1091: .word .LANCHOR0 .word .LANCHOR2 .fnend .size SupperBlkListInit, .-SupperBlkListInit .align 1 .global FtlGcPageVarInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcPageVarInit, %function FtlGcPageVarInit: .fnstart @@ -7495,16 +7770,16 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r1, #255 - ldr r5, .L1120 + ldr r5, .L1094 movs r3, #0 - ldr r4, .L1120+4 - ldrh r2, [r5, #2392] + ldr r4, .L1094+4 + ldrh r2, [r5, #2394] ldr r0, [r4, #1160] strh r3, [r4, #1164] @ movhi lsls r2, r2, #1 strh r3, [r4, #1172] @ movhi bl ftl_memset - ldrh r3, [r5, #2392] + ldrh r3, [r5, #2394] movs r2, #12 ldr r0, [r4, #1168] movs r1, #255 @@ -7512,17 +7787,19 @@ bl ftl_memset pop {r3, r4, r5, lr} b FtlGcBufInit -.L1121: +.L1095: .align 2 -.L1120: +.L1094: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 1 .global ftl_memcpy + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_memcpy, %function ftl_memcpy: .fnstart @@ -7534,8 +7811,10 @@ .size ftl_memcpy, .-ftl_memcpy .align 1 .global FlashReadIdbData + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadIdbData, %function FlashReadIdbData: .fnstart @@ -7544,94 +7823,93 @@ push {r3, lr} .save {r3, lr} mov r2, #2048 - ldr r1, .L1124 + ldr r1, .L1098 bl ftl_memcpy movs r0, #0 pop {r3, pc} -.L1125: +.L1099: .align 2 -.L1124: +.L1098: .word .LANCHOR2+3476 .fnend .size FlashReadIdbData, .-FlashReadIdbData .align 1 .global FlashLoadPhyInfoInRam + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashLoadPhyInfoInRam, %function FlashLoadPhyInfoInRam: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {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} movs r4, #0 - ldr r5, .L1138 -.L1130: - mov r0, r5 - ldr r1, .L1138+4 - ldrb r2, [r5, #-1] @ zero_extendqisi2 - bl FlashMemCmp8 - mov r6, r0 - cbnz r0, .L1127 - ldr r5, .L1138+8 - lsls r4, r4, #5 - add r2, r5, #508 - adds r7, r2, r4 - beq .L1133 - add r4, r4, r5 - mov r3, r0 - addw r1, r5, #3260 - ldrb r2, [r4, #530] @ zero_extendqisi2 - b .L1132 -.L1127: - adds r4, r4, #1 - adds r5, r5, #32 - cmp r4, #86 - bne .L1130 - b .L1133 -.L1137: - adds r3, r3, #1 - cmp r3, #4 - beq .L1131 -.L1132: - lsls r0, r3, #5 - ldrb r0, [r0, r1] @ zero_extendqisi2 - cmp r0, r2 - bne .L1137 -.L1131: - ldr r1, .L1138+12 - movs r2, #32 - ldr r0, .L1138+16 - add r1, r1, r3, lsl #5 - bl ftl_memcpy - mov r1, r7 - movs r2, #32 - ldr r0, .L1138+20 - bl ftl_memcpy - ldrh r0, [r5, #482] - bl FlashBlockAlignInit - b .L1128 -.L1133: - mov r6, #-1 -.L1128: + ldr r6, .L1108 + ldr r8, .L1108+16 +.L1103: + ldrb r2, [r6, #-1] @ zero_extendqisi2 + mov r1, r8 mov r0, r6 - pop {r3, r4, r5, r6, r7, pc} -.L1139: + lsls r7, r4, #5 + bl FlashMemCmp8 + mov r5, r0 + cbnz r0, .L1101 + ldr r4, .L1108+4 + mov r1, r0 + add r6, r4, #504 + addw r3, r4, #3256 + add r6, r6, r7 + add r7, r7, r4 + ldrb r2, [r7, #526] @ zero_extendqisi2 + mov r0, r3 +.L1102: + lsls r7, r1, #5 + ldrb r7, [r7, r3] @ zero_extendqisi2 + cmp r7, r2 + beq .L1105 + adds r1, r1, #1 + cmp r1, #4 + bne .L1102 +.L1105: + add r1, r0, r1, lsl #5 + movs r2, #32 + ldr r0, .L1108+8 + bl ftl_memcpy + movs r2, #32 + mov r1, r6 + ldr r0, .L1108+12 + bl ftl_memcpy + ldrh r0, [r4, #478] + bl FlashBlockAlignInit + b .L1100 +.L1101: + adds r4, r4, #1 + adds r6, r6, #32 + cmp r4, #86 + bne .L1103 + mov r5, #-1 +.L1100: + mov r0, r5 + pop {r4, r5, r6, r7, r8, pc} +.L1109: .align 2 -.L1138: - .word .LANCHOR1+509 - .word .LANCHOR0+2068 +.L1108: + .word .LANCHOR1+505 .word .LANCHOR1 - .word .LANCHOR1+3260 - .word .LANCHOR0+48 - .word .LANCHOR1+472 + .word .LANCHOR0+52 + .word .LANCHOR1+468 + .word .LANCHOR0+2072 .fnend .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .align 1 .global NandcCopy1KB + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcCopy1KB, %function NandcCopy1KB: .fnstart @@ -7642,57 +7920,51 @@ .save {r4, r5, r6, lr} mov r4, r2 add r2, r0, #4096 - ldr r6, [sp, #16] add r5, r0, #512 - add r2, r2, r4, lsl #9 - bne .L1141 - cbz r3, .L1142 - mov r0, r2 - mov r1, r3 + add r0, r2, r4, lsl #9 + ldr r6, [sp, #16] + bne .L1111 + cbz r3, .L1112 mov r2, #1024 + mov r1, r3 bl ftl_memcpy -.L1142: - cbz r6, .L1140 - ldrb r3, [r6, #2] @ zero_extendqisi2 +.L1112: + cbz r6, .L1110 lsrs r4, r4, #1 - ldrb r2, [r6, #1] @ zero_extendqisi2 + ldr r3, [r6] @ unaligned add r4, r4, r4, lsl #1 - lsls r3, r3, #16 - orr r2, r3, r2, lsl #8 - ldrb r3, [r6] @ zero_extendqisi2 lsls r4, r4, #2 - orrs r3, r3, r2 - ldrb r2, [r6, #3] @ zero_extendqisi2 - orr r3, r3, r2, lsl #24 str r3, [r5, r4, lsl #2] pop {r4, r5, r6, pc} -.L1141: - cbz r3, .L1145 - mov r1, r2 - mov r0, r3 +.L1111: + cbz r3, .L1115 + mov r1, r0 mov r2, #1024 + mov r0, r3 bl ftl_memcpy -.L1145: - cbz r6, .L1140 +.L1115: + cbz r6, .L1110 lsrs r4, r4, #1 add r4, r4, r4, lsl #1 lsls r4, r4, #2 ldr r3, [r5, r4, lsl #2] - lsrs r2, r3, #8 strb r3, [r6] + lsrs r2, r3, #8 strb r2, [r6, #1] lsrs r2, r3, #16 lsrs r3, r3, #24 strb r2, [r6, #2] strb r3, [r6, #3] -.L1140: +.L1110: pop {r4, r5, r6, pc} .fnend .size NandcCopy1KB, .-NandcCopy1KB .align 1 .global ftl_memcpy32 + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_memcpy32, %function ftl_memcpy32: .fnstart @@ -7701,21 +7973,23 @@ movs r3, #0 push {r4, lr} .save {r4, lr} -.L1157: +.L1127: cmp r3, r2 - beq .L1159 + bne .L1128 + pop {r4, pc} +.L1128: ldr r4, [r1, r3, lsl #2] str r4, [r0, r3, lsl #2] adds r3, r3, #1 - b .L1157 -.L1159: - pop {r4, pc} + b .L1127 .fnend .size ftl_memcpy32, .-ftl_memcpy32 .align 1 .global ftl_memcmp + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_memcmp, %function ftl_memcmp: .fnstart @@ -7727,56 +8001,66 @@ .size ftl_memcmp, .-ftl_memcmp .align 1 .global timer_get_time + .syntax unified .thumb .thumb_func + .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, .L1162 + ldr r3, .L1131 ldr r0, [r3] b jiffies_to_msecs -.L1163: +.L1132: .align 2 -.L1162: +.L1131: .word jiffies .fnend .size timer_get_time, .-timer_get_time .align 1 .global FlashSramLoadStore + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashSramLoadStore, %function FlashSramLoadStore: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, lr} - .save {r4, r5, lr} - mov r5, r0 - ldr r4, .L1167 + @ link register save eliminated. + push {r4, r5} + .save {r4, r5} + ldr r4, .L1136 ldr r4, [r4, #1180] add r4, r4, #4096 - add r1, r1, r4 - cbz r2, .L1166 - mov r0, r1 - mov r1, r5 -.L1166: + add r4, r4, r1 + cbnz r2, .L1134 mov r2, r3 - pop {r4, r5, lr} + mov r1, r4 +.L1135: + pop {r4, r5} b ftl_memcpy -.L1168: +.L1134: + mov r1, r0 + mov r2, r3 + mov r0, r4 + b .L1135 +.L1137: .align 2 -.L1167: +.L1136: .word .LANCHOR4 .fnend .size FlashSramLoadStore, .-FlashSramLoadStore .align 1 .global FlashCs123Init + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashCs123Init, %function FlashCs123Init: .fnstart @@ -7787,9 +8071,55 @@ .fnend .size FlashCs123Init, .-FlashCs123Init .align 1 - .global rk_nand_suspend + .global ftl_dma32_malloc + .syntax unified .thumb .thumb_func + .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 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r4, r0 + ble .L1140 + pop {r3, r4, r5, lr} + b ftl_malloc +.L1140: + ldr r5, .L1142 + adds r4, r4, #63 + bic r4, r4, #63 + ldr r3, [r5, #1184] + cmp r4, r3 + ble .L1141 + mov r0, #16384 + bl ftl_malloc + mov r3, #16384 + str r0, [r5, #1188] + str r3, [r5, #1184] +.L1141: + ldr r3, [r5, #1184] + ldr r0, [r5, #1188] + subs r3, r3, r4 + add r4, r4, r0 + str r3, [r5, #1184] + str r4, [r5, #1188] + pop {r3, r4, r5, pc} +.L1143: + .align 2 +.L1142: + .word .LANCHOR4 + .fnend + .size ftl_dma32_malloc, .-ftl_dma32_malloc + .align 1 + .global rk_nand_suspend + .syntax unified + .thumb + .thumb_func + .fpu softvfp .type rk_nand_suspend, %function rk_nand_suspend: .fnstart @@ -7801,8 +8131,10 @@ .size rk_nand_suspend, .-rk_nand_suspend .align 1 .global rk_nand_resume + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_nand_resume, %function rk_nand_resume: .fnstart @@ -7814,27 +8146,31 @@ .size rk_nand_resume, .-rk_nand_resume .align 1 .global rk_ftl_get_capacity + .syntax unified .thumb .thumb_func + .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, .L1173 - ldr r0, [r3, #2428] + ldr r3, .L1147 + ldr r0, [r3, #2432] bx lr -.L1174: +.L1148: .align 2 -.L1173: +.L1147: .word .LANCHOR0 .fnend .size rk_ftl_get_capacity, .-rk_ftl_get_capacity .align 1 .global rk_nandc_get_irq_status + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_nandc_get_irq_status, %function rk_nandc_get_irq_status: .fnstart @@ -7847,8 +8183,10 @@ .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status .align 1 .global rknand_proc_ftlread + .syntax unified .thumb .thumb_func + .fpu softvfp .type rknand_proc_ftlread, %function rknand_proc_ftlread: .fnstart @@ -7860,8 +8198,10 @@ .size rknand_proc_ftlread, .-rknand_proc_ftlread .align 1 .global ReadFlashInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type ReadFlashInfo, %function ReadFlashInfo: .fnstart @@ -7873,269 +8213,280 @@ .size ReadFlashInfo, .-ReadFlashInfo .align 1 .global rknand_print_hex + .syntax unified .thumb .thumb_func + .fpu softvfp .type rknand_print_hex, %function rknand_print_hex: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, 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} movs r5, #0 - mov r9, r0 + ldr r7, .L1161 + mov r10, r0 mov r6, r1 - mov r7, r2 - mov r8, r3 + mov r8, r2 + ldr fp, .L1161+4 + mov r9, r3 mov r4, r5 -.L1179: - cmp r4, r8 - beq .L1187 - cbnz r5, .L1180 - ldr r0, .L1188 - mov r1, r9 - mov r2, r6 +.L1153: + cmp r4, r9 + bne .L1159 + ldr r1, .L1161+4 + ldr r0, .L1161+8 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + b printk +.L1159: + cbnz r5, .L1154 mov r3, r4 + mov r2, r6 + mov r1, r10 + ldr r0, .L1161+12 bl printk -.L1180: - cmp r7, #4 - ldr r0, .L1188+4 - bne .L1181 +.L1154: + cmp r8, #4 + bne .L1155 ldr r1, [r6, r4, lsl #2] - b .L1186 -.L1181: - cmp r7, #2 - ite eq - ldrsheq r1, [r6, r4, lsl #1] - ldrbne r1, [r6, r4] @ zero_extendqisi2 -.L1186: +.L1160: + mov r0, r7 adds r5, r5, #1 bl printk cmp r5, #15 - bls .L1184 - ldr r0, .L1188+8 + bls .L1158 movs r5, #0 - ldr r1, .L1188+12 + mov r1, fp + ldr r0, .L1161+8 bl printk -.L1184: +.L1158: adds r4, r4, #1 - b .L1179 -.L1187: - ldr r0, .L1188+8 - ldr r1, .L1188+12 - pop {r3, r4, r5, r6, r7, r8, r9, lr} - b printk -.L1189: + b .L1153 +.L1155: + cmp r8, #2 + ite eq + ldrsheq r1, [r6, r4, lsl #1] + ldrbne r1, [r6, r4] @ zero_extendqisi2 + b .L1160 +.L1162: .align 2 -.L1188: - .word .LC82 +.L1161: .word .LC83 - .word .LC76 .word .LC84 + .word .LC77 + .word .LC82 .fnend .size rknand_print_hex, .-rknand_print_hex .align 1 .global HynixGetReadRetryDefault + .syntax unified .thumb .thumb_func + .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 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movs r3, #172 + ldr r7, .L1279 cmp r0, #2 - ldr r7, .L1299 - mov r3, #172 mov r1, #173 mov r2, #174 - .pad #44 - sub sp, sp, #44 + .pad #60 + sub sp, sp, #60 mov r4, r0 - strb r3, [r7, #1214] + strb r3, [r7, #1220] mov r3, #175 - strb r0, [r7, #1210] - strb r1, [r7, #1215] - strb r2, [r7, #1216] - strb r3, [r7, #1217] - bne .L1191 - movs r3, #167 - strb r3, [r7, #1214] - ldr r3, .L1299+4 - movs r2, #247 - movs r5, #7 - strb r2, [r3, #3405] - b .L1252 -.L1191: - cmp r0, #3 - bne .L1193 - movs r3, #176 - strb r3, [r7, #1214] - movs r3, #177 - strb r3, [r7, #1215] - movs r3, #178 - strb r3, [r7, #1216] - movs r3, #179 - strb r3, [r7, #1217] - movs r3, #180 - strb r3, [r7, #1218] - movs r3, #181 - strb r3, [r7, #1219] - movs r3, #182 - strb r3, [r7, #1220] - movs r3, #183 - b .L1293 -.L1193: - cmp r0, #4 - bne .L1194 - movs r0, #204 - strb r1, [r7, #1219] - strb r0, [r7, #1214] - movs r0, #191 - strb r2, [r7, #1220] - strb r0, [r7, #1215] - movs r0, #170 strb r0, [r7, #1216] - movs r0, #171 - strb r0, [r7, #1217] - movs r0, #205 - strb r0, [r7, #1218] -.L1293: - movs r5, #8 - strb r3, [r7, #1221] - mov r6, r5 - b .L1192 -.L1194: - cmp r0, #5 - bne .L1195 - movs r3, #56 - movs r5, #8 - strb r3, [r7, #1214] - movs r3, #57 - strb r3, [r7, #1215] - movs r3, #58 - strb r3, [r7, #1216] - movs r3, #59 - strb r3, [r7, #1217] - b .L1252 -.L1195: - cmp r0, #6 - bne .L1196 - movs r3, #14 - movs r5, #12 - strb r3, [r7, #1214] - movs r3, #15 - strb r3, [r7, #1215] - movs r3, #16 - strb r3, [r7, #1216] - movs r3, #17 - strb r3, [r7, #1217] - b .L1252 -.L1196: - cmp r0, #7 - bne .L1197 - movs r3, #176 - movs r5, #12 - strb r3, [r7, #1214] - movs r6, #10 - movs r3, #177 - strb r3, [r7, #1215] - movs r3, #178 - strb r3, [r7, #1216] - movs r3, #179 - strb r3, [r7, #1217] - movs r3, #180 - strb r3, [r7, #1218] - movs r3, #181 - strb r3, [r7, #1219] - movs r3, #182 - strb r3, [r7, #1220] - movs r3, #183 - strb r3, [r7, #1221] - movs r3, #212 - strb r3, [r7, #1222] - movs r3, #213 + strb r1, [r7, #1221] + strb r2, [r7, #1222] strb r3, [r7, #1223] - b .L1192 -.L1197: - cmp r0, #8 - mov r5, #7 - bne .L1252 - movs r3, #6 - strb r5, [r7, #1215] - strb r3, [r7, #1214] - movs r5, #50 - movs r3, #9 - strb r0, [r7, #1216] - strb r3, [r7, #1217] - movs r6, #5 - movs r3, #10 - strb r3, [r7, #1218] - b .L1192 -.L1252: + bne .L1164 + movs r3, #167 + movs r5, #7 + strb r3, [r7, #1220] + movs r2, #247 + ldr r3, .L1279+4 + strb r2, [r3, #3401] +.L1229: movs r6, #4 -.L1192: + b .L1165 +.L1164: + cmp r0, #3 + bne .L1166 + movs r3, #176 + strb r3, [r7, #1220] + movs r3, #177 + strb r3, [r7, #1221] + movs r3, #178 + strb r3, [r7, #1222] + movs r3, #179 + strb r3, [r7, #1223] + movs r3, #180 + strb r3, [r7, #1224] + movs r3, #181 + strb r3, [r7, #1225] + movs r3, #182 + strb r3, [r7, #1226] + movs r3, #183 +.L1274: + movs r5, #8 + strb r3, [r7, #1227] + mov r6, r5 +.L1165: subs r3, r4, #1 cmp r3, #1 - bhi .L1290 - ldr r1, .L1299+8 + bhi .L1171 + ldr fp, .L1279+12 mov r10, #0 -.L1198: - ldrb r3, [r7, #2230] @ zero_extendqisi2 - uxtb r8, r10 - ldr r2, .L1299 - cmp r3, r8 - bls .L1205 - add r8, r8, r2 - addw fp, r2, #1213 - ldrb r3, [r8, #2232] @ zero_extendqisi2 - add r4, r2, r3, lsl #6 - add r3, r2, r3, lsl #3 - addw r4, r4, #1230 - movs r2, #55 - ldrb r8, [r3, #16] @ zero_extendqisi2 - ldr r0, [r3, #12] - mov r9, r4 - mov r3, r4 - add r8, r0, r8, lsl #8 - addw ip, r8, #2056 -.L1200: - str r2, [ip] - ldrb r0, [fp, #1]! @ zero_extendqisi2 - str r1, [sp, #16] - str r3, [sp, #12] - str r0, [r8, #2052] - movs r0, #80 + ldr r2, .L1279+8 +.L1172: + ldrb r1, [r7, #2234] @ zero_extendqisi2 + uxtb r3, r10 + cmp r1, r3 + bhi .L1178 +.L1179: + ldr r3, .L1279 + strb r6, [r3, #1217] + strb r5, [r3, #1218] + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1166: + cmp r0, #4 + bne .L1167 + movs r0, #204 + strb r1, [r7, #1225] + strb r0, [r7, #1220] + movs r0, #191 + strb r0, [r7, #1221] + movs r0, #170 + strb r0, [r7, #1222] + movs r0, #171 + strb r0, [r7, #1223] + movs r0, #205 + strb r0, [r7, #1224] + strb r2, [r7, #1226] + b .L1274 +.L1167: + cmp r0, #5 + bne .L1168 + movs r3, #56 + movs r5, #8 + strb r3, [r7, #1220] + movs r3, #57 + strb r3, [r7, #1221] + movs r3, #58 + strb r3, [r7, #1222] + movs r3, #59 + strb r3, [r7, #1223] + b .L1229 +.L1168: + cmp r0, #6 + bne .L1169 + movs r3, #14 + movs r5, #12 + strb r3, [r7, #1220] + movs r3, #15 + strb r3, [r7, #1221] + movs r3, #16 + strb r3, [r7, #1222] + movs r3, #17 + strb r3, [r7, #1223] + b .L1229 +.L1169: + cmp r0, #7 + bne .L1170 + movs r3, #176 + movs r5, #12 + strb r3, [r7, #1220] + movs r3, #177 + strb r3, [r7, #1221] + movs r3, #178 + strb r3, [r7, #1222] + movs r3, #179 + strb r3, [r7, #1223] + movs r3, #180 + strb r3, [r7, #1224] + movs r3, #181 + strb r3, [r7, #1225] + movs r3, #182 + strb r3, [r7, #1226] + movs r3, #183 + strb r3, [r7, #1227] + movs r3, #212 + strb r3, [r7, #1228] + movs r3, #213 + strb r3, [r7, #1229] + movs r6, #10 + b .L1165 +.L1170: + cmp r0, #8 + mov r5, #7 + bne .L1229 + movs r3, #6 + strb r5, [r7, #1221] + strb r3, [r7, #1220] + movs r3, #9 + strb r3, [r7, #1223] + movs r3, #10 + strb r0, [r7, #1222] + movs r5, #50 + strb r3, [r7, #1224] + movs r6, #5 + b .L1165 +.L1178: + add r3, r3, r7 + mov r8, #0 + ldrb r3, [r3, #2236] @ zero_extendqisi2 + ldr r1, [r7, r3, lsl #3] + add r4, fp, r3, lsl #6 + add r3, r7, r3, lsl #3 + ldrb r9, [r3, #4] @ zero_extendqisi2 + adds r4, r4, #20 + add r9, r1, r9, lsl #8 + movs r1, #55 + addw r3, r9, #2056 +.L1173: + add r0, fp, r8 + str r1, [r3] + ldrb r0, [r0, #4] @ zero_extendqisi2 str r2, [sp, #8] - str ip, [sp, #4] - bl NandcDelayns - ldr r0, [r8, #2048] - ldr r3, [sp, #12] - ldr ip, [sp, #4] + str r1, [sp, #4] + str r0, [r9, #2052] + movs r0, #80 + str r3, [sp] + bl ndelay + ldr r0, [r9, #2048] + ldr r3, [sp] + ldr r1, [sp, #4] + strb r0, [r4, r8] + add r8, r8, #1 + uxtb r0, r8 ldr r2, [sp, #8] - strb r0, [r3], #1 - subs r0, r3, r4 - ldr r1, [sp, #16] - uxtb r0, r0 - cmp r0, r6 - bcc .L1200 - movs r2, #0 -.L1201: + cmp r6, r0 + bhi .L1173 + mov r0, r4 + movs r1, #0 +.L1176: movs r3, #1 - add lr, r1, r2 -.L1202: + add lr, r2, r1 +.L1175: ldrb ip, [lr, r3, lsl #2] @ zero_extendqisi2 - ldrb r0, [r9] @ zero_extendqisi2 - add r0, r0, ip - strb r0, [r9, r3, lsl #3] + ldrb r8, [r0] @ zero_extendqisi2 + add ip, ip, r8 + strb ip, [r0, r3, lsl #3] adds r3, r3, #1 cmp r3, #7 - bne .L1202 - adds r2, r2, #1 - add r9, r9, #1 - cmp r2, #4 - bne .L1201 + bne .L1175 + adds r1, r1, #1 + adds r0, r0, #1 + cmp r1, #4 + bne .L1176 movs r3, #0 add r10, r10, #1 strb r3, [r4, #16] @@ -8145,105 +8496,90 @@ strb r3, [r4, #48] strb r3, [r4, #41] strb r3, [r4, #49] - b .L1198 -.L1290: + b .L1172 +.L1171: subs r3, r4, #3 cmp r3, #5 - bhi .L1205 - smulbb r2, r6, r5 - lsls r3, r2, #4 - asrs r2, r2, #1 - str r3, [sp, #36] + bhi .L1179 + smulbb r3, r6, r5 + ldr r8, .L1279 + asrs r2, r3, #1 + lsls r3, r3, #4 + str r3, [sp, #48] + lsls r3, r2, #2 + str r2, [sp, #8] + str r3, [sp, #44] lsls r3, r2, #1 - str r3, [sp, #8] + str r3, [sp, #28] movs r3, #0 -.L1297: - str r3, [sp, #20] - ldrb r3, [sp, #20] @ zero_extendqisi2 - str r3, [sp, #16] - ldr r3, .L1299 - ldr r2, [sp, #16] - ldrb r3, [r3, #2230] @ zero_extendqisi2 + str r3, [sp, #24] +.L1180: + ldrb r3, [sp, #24] @ zero_extendqisi2 + str r3, [sp, #12] + ldr r2, [sp, #12] + ldrb r3, [r8, #2234] @ zero_extendqisi2 cmp r3, r2 - bhi .L1250 -.L1205: - ldr r3, .L1299 - strb r6, [r3, #1211] - strb r5, [r3, #1212] - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1250: - ldr r2, [sp, #16] - ldr r3, .L1299 - add r3, r3, r2 - ldrb fp, [r3, #2232] @ zero_extendqisi2 - ldr r3, .L1299 - add r3, r3, fp, lsl #3 - mov r0, fp - ldr r10, [r3, #12] - ldrb r3, [r3, #16] @ zero_extendqisi2 - lsls r7, r3, #8 - str r3, [sp, #4] - add r8, r10, r7 + bls .L1179 + ldr r3, [sp, #12] + add r3, r8, r3 + ldrb r10, [r3, #2236] @ zero_extendqisi2 + ldr fp, [r8, r10, lsl #3] + mov r0, r10 + add r3, r8, r10, lsl #3 + ldrb r9, [r3, #4] @ zero_extendqisi2 movs r3, #255 - str r3, [r8, #2056] + add r7, fp, r9, lsl #8 + str r3, [r7, #2056] bl NandcWaitFlashReady cmp r4, #7 - bne .L1207 - ldr r2, .L1299+12 - movs r3, #160 - mla ip, r3, fp, r2 - add r3, ip, #28 - b .L1294 -.L1207: - cmp r4, #8 - beq .L1209 - ldr r2, .L1299+12 - add ip, r2, fp, lsl #6 - add r3, ip, #20 -.L1294: - add r7, r7, r10 + bne .L1181 + ldr r3, .L1279+12 + movs r0, #160 + mla r0, r0, r10, r3 + add r3, r0, #28 +.L1275: + str r3, [sp, #16] cmp r4, #4 - str r3, [sp, #24] - mov r3, #54 - str r3, [r7, #2056] - bne .L1210 - movs r3, #255 - str r3, [r7, #2052] - movs r3, #64 - str r3, [r7, #2048] - movs r3, #204 - b .L1295 -.L1210: - subs r3, r4, #5 - cmp r3, #1 - bhi .L1212 - ldr r3, .L1299 - ldrb r2, [r3, #1214] @ zero_extendqisi2 - ldr r3, [sp, #4] - add r3, r10, r3, lsl #8 + add r3, fp, r9, lsl #8 + mov r2, #54 + str r2, [r3, #2056] + bne .L1184 + movs r2, #255 + str r2, [r3, #2052] + movs r2, #64 + str r2, [r3, #2048] + movs r2, #204 +.L1276: + str r2, [r3, #2052] + movs r2, #77 + b .L1277 +.L1181: + cmp r4, #8 + beq .L1183 + ldr r0, .L1279+12 + add r0, r0, r10, lsl #6 + add r3, r0, #20 + b .L1275 +.L1280: + .align 2 +.L1279: + .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR1+3384 + .word .LANCHOR0+1216 +.L1184: + subs r2, r4, #5 + cmp r2, #1 + bhi .L1186 + ldrb r2, [r8, #1220] @ zero_extendqisi2 str r2, [r3, #2052] movs r2, #82 +.L1277: str r2, [r3, #2048] - b .L1211 -.L1212: - cmp r4, #7 - bne .L1211 - movs r3, #174 - str r3, [r7, #2052] - movs r3, #0 - str r3, [r7, #2048] - movs r3, #176 -.L1295: - str r3, [r7, #2052] - movs r3, #77 - str r3, [r7, #2048] -.L1211: - ldr r3, [sp, #4] +.L1185: + add r3, fp, r9, lsl #8 + movs r2, #22 cmp r4, #6 - mov r2, #22 - add r3, r10, r3, lsl #8 str r2, [r3, #2056] mov r2, #23 str r2, [r3, #2056] @@ -8262,314 +8598,334 @@ str r2, [r3, #2052] movs r2, #0 str r2, [r3, #2052] -.L1251: - ldr r3, [sp, #4] +.L1228: + add r3, fp, r9, lsl #8 movs r2, #48 - mov r0, fp - add r3, r10, r3, lsl #8 + mov r0, r10 str r2, [r3, #2056] bl NandcWaitFlashReady subs r3, r4, #5 cmp r3, #1 - str r3, [sp, #28] - bls .L1255 + str r3, [sp, #32] + bls .L1231 cmp r4, #8 - beq .L1255 + beq .L1231 cmp r4, #7 - ite ne - movne r2, #2 + ite eq moveq r2, #32 - b .L1215 -.L1300: - .align 2 -.L1299: - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR1+3388 - .word .LANCHOR0+1210 -.L1255: - movs r2, #16 -.L1215: - ldr r3, .L1301 - ldr r1, [sp, #4] - ldr r3, [r3, #1184] - add r0, r10, r1, lsl #8 - mov r7, r3 -.L1216: - ldr r1, [r0, #2048] - strb r1, [r7], #1 - subs r1, r7, r3 - uxtb r1, r1 - cmp r1, r2 - bcc .L1216 + movne r2, #2 +.L1189: + ldr r3, .L1281 + subs r2, r2, #1 + add r7, fp, r9, lsl #8 + ldr r3, [r3, #1192] + str r7, [sp, #4] + subs r1, r3, #1 + uxtab r2, r3, r2 + mov r0, r1 +.L1190: + ldr r7, [sp, #4] + ldr r7, [r7, #2048] + strb r7, [r0, #1]! + cmp r0, r2 + bne .L1190 cmp r4, #8 - bne .L1217 + bne .L1191 movs r2, #0 -.L1219: - ldrb r7, [r3, r2, lsl #2] @ zero_extendqisi2 +.L1193: + ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2 uxtb r1, r2 - cmp r7, #50 - beq .L1218 - add r7, r3, r2, lsl #2 - ldrb r7, [r7, #1] @ zero_extendqisi2 - cmp r7, #5 - beq .L1218 + cmp r0, #50 + beq .L1192 + add r0, r3, r2, lsl #2 + ldrb r0, [r0, #1] @ zero_extendqisi2 + cmp r0, #5 + beq .L1192 adds r2, r2, #1 cmp r2, #8 - bne .L1219 - b .L1220 -.L1218: - cmp r1, #7 - bne .L1221 -.L1220: - ldr r0, .L1301+4 + bne .L1193 +.L1194: movs r1, #0 + ldr r0, .L1281+4 bl printk -.L1222: - b .L1222 -.L1217: +.L1196: + b .L1196 +.L1186: cmp r4, #7 - bne .L1223 + bne .L1185 + movs r2, #174 + str r2, [r3, #2052] movs r2, #0 -.L1225: - ldrb r7, [r3, r2, lsl #2] @ zero_extendqisi2 - uxtb r1, r2 - cmp r7, #12 - beq .L1224 - add r7, r3, r2, lsl #2 - ldrb r7, [r7, #1] @ zero_extendqisi2 - cmp r7, #10 - beq .L1224 - adds r2, r2, #1 - cmp r2, #8 - bne .L1225 - b .L1226 -.L1224: - cmp r1, #7 - bne .L1221 -.L1226: - ldr r0, .L1301+4 - movs r1, #0 - bl printk -.L1227: - b .L1227 -.L1223: - cmp r4, #6 - bne .L1221 - subs r2, r3, #1 - adds r3, r3, #7 -.L1228: - ldrb r1, [r2, #1]! @ zero_extendqisi2 - cmp r1, #12 - beq .L1221 - ldrb r1, [r2, #8] @ zero_extendqisi2 - cmp r1, #4 - beq .L1221 - cmp r2, r3 - bne .L1228 - ldr r0, .L1301+4 - movs r1, #0 - bl printk -.L1230: - b .L1230 -.L1221: - ldr r1, .L1301 - ldr r7, [sp, #36] - ldr r2, [r1, #1184] - adds r7, r2, r7 - mov r3, r2 + str r2, [r3, #2048] + movs r2, #176 + b .L1276 .L1231: - cmp r3, r7 - beq .L1298 - ldr lr, [r0, #2048] - strb lr, [r3], #1 - b .L1231 -.L1298: - ldr r3, [r1, #1184] - movs r0, #8 - ldr r1, [sp, #8] - adds r1, r3, r1 - str r1, [sp, #32] -.L1234: - ldr r7, [sp, #8] - add lr, r1, r7 -.L1233: - ldrh r7, [r1] - mvns r7, r7 - strh r7, [r1], #2 @ movhi - cmp r1, lr - bne .L1233 - ldr r7, [sp, #8] - subs r0, r0, #1 - add r1, r1, r7 - bne .L1234 - str r3, [sp, #12] -.L1235: + movs r2, #16 + b .L1189 +.L1192: + cmp r1, #6 + bhi .L1194 +.L1195: + ldr r3, .L1281 + ldr r3, [r3, #1192] + str r3, [sp] +.L1205: + ldr r2, [sp] + ldr r0, [sp, #48] + subs r1, r3, r2 + cmp r1, r0 + blt .L1206 + ldr r3, .L1281 + ldr r1, [r3, #1192] + ldr r3, [sp, #28] + adds r0, r1, r3 + movs r3, #8 +.L1208: + mov ip, r0 + movs r7, #0 +.L1207: + ldr r2, [sp, #8] + adds r7, r7, #1 + ldrh lr, [ip] + cmp r2, r7 + mvn lr, lr + strh lr, [ip], #2 @ movhi + bgt .L1207 + ldr r2, [sp, #44] + subs r3, r3, #1 + add r0, r0, r2 + bne .L1208 + str r3, [sp, #20] +.L1214: movs r7, #0 mov r0, r7 -.L1238: - movs r3, #1 +.L1213: + movs r2, #1 + mov ip, r1 + lsls r2, r2, r0 mov lr, #0 - mov r8, #16 - lsl r1, r3, r0 - mov ip, lr -.L1236: - ldr r3, [sp, #12] - ldrh r9, [r3, lr] - ldr r3, [sp, #8] - and r9, r9, r1 - cmp r9, r1 + str r2, [sp, #36] + movs r2, #16 + str r2, [sp, #40] +.L1211: + ldrh r2, [ip] + str r2, [sp, #52] + ldr r2, [sp, #36] + mov r3, r2 + ldr r2, [sp, #52] + bics r3, r3, r2 + ldr r2, [sp, #28] it eq - addeq ip, ip, #1 - subs r8, r8, #1 - add lr, lr, r3 - bne .L1236 - cmp ip, #8 + addeq lr, lr, #1 + add ip, ip, r2 + ldr r2, [sp, #40] + subs r2, r2, #1 + str r2, [sp, #40] + bne .L1211 + cmp lr, #8 add r0, r0, #1 - itt hi - orrhi r7, r7, r1 + ittt hi + ldrhi r2, [sp, #36] + orrhi r7, r7, r2 uxthhi r7, r7 cmp r0, #16 - bne .L1238 - ldr r3, [sp, #12] - strh r7, [r3], #2 @ movhi - str r3, [sp, #12] - ldr r1, [sp, #12] - ldr r3, [sp, #32] - cmp r1, r3 - bne .L1235 - ldr r3, .L1301 - ldr r1, [r3, #1184] + bne .L1213 + ldr r3, [sp, #20] + ldr r2, [sp, #8] + strh r7, [r1], #2 @ movhi + adds r3, r3, #1 + cmp r2, r3 + str r3, [sp, #20] + bgt .L1214 + ldr r3, .L1281 + ldr r1, [r3, #1192] movs r3, #0 subs r0, r1, #4 add r7, r1, #28 -.L1240: - ldr lr, [r0, #4]! - cmp lr, #0 - it eq - addeq r3, r3, #1 - cmp r0, r7 - bne .L1240 +.L1217: + ldr ip, [r0, #4]! + cmp ip, #0 + bne .L1216 + adds r3, r3, #1 +.L1216: + cmp r7, r0 + bne .L1217 cmp r3, #7 - ble .L1241 - ldr r0, .L1301+8 - movs r2, #1 + ble .L1218 + ldr r0, .L1281+8 mov r3, #1024 + movs r2, #1 bl rknand_print_hex - ldr r0, .L1301+4 movs r1, #0 + ldr r0, .L1281+4 bl printk -.L1242: - b .L1242 -.L1241: - cmp r4, #6 - beq .L1257 +.L1219: + b .L1219 +.L1191: cmp r4, #7 - beq .L1258 + bne .L1197 + movs r2, #0 +.L1199: + ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2 + uxtb r1, r2 + cmp r0, #12 + beq .L1198 + add r0, r3, r2, lsl #2 + ldrb r0, [r0, #1] @ zero_extendqisi2 + cmp r0, #10 + beq .L1198 + adds r2, r2, #1 + cmp r2, #8 + bne .L1199 +.L1200: + movs r1, #0 + ldr r0, .L1281+4 + bl printk +.L1201: + b .L1201 +.L1198: + cmp r1, #6 + bls .L1195 + b .L1200 +.L1197: + cmp r4, #6 + bne .L1195 + adds r3, r3, #7 +.L1202: + ldrb r2, [r1, #1]! @ zero_extendqisi2 + cmp r2, #12 + beq .L1195 + ldrb r2, [r1, #8] @ zero_extendqisi2 + cmp r2, #4 + beq .L1195 + cmp r1, r3 + bne .L1202 + movs r1, #0 + ldr r0, .L1281+4 + bl printk +.L1204: + b .L1204 +.L1206: + ldr r1, [sp, #4] + ldr r1, [r1, #2048] + strb r1, [r3], #1 + b .L1205 +.L1218: + cmp r4, #6 + beq .L1233 + cmp r4, #7 + beq .L1234 cmp r4, #8 - ite ne - movne r0, #8 - moveq r0, #5 - b .L1243 -.L1257: - movs r0, #4 - b .L1243 -.L1258: - movs r0, #10 -.L1243: - add r9, r6, #-1 - ldr r1, [sp, #24] - movs r7, #0 - uxtb r9, r9 - add r9, r9, #1 -.L1244: - mov ip, r1 - mov r3, r2 -.L1245: - ldrb lr, [r3], #1 @ zero_extendqisi2 - strb lr, [ip], #1 - rsb lr, r2, r3 - uxtb lr, lr - cmp lr, r6 - bcc .L1245 - adds r7, r7, #1 - add r2, r2, r9 - cmp r7, r5 - add r1, r1, r0 - blt .L1244 - ldr r3, [sp, #4] - mov r0, fp - add r7, r10, r3, lsl #8 - movs r3, #255 - str r3, [r7, #2056] - bl NandcWaitFlashReady - ldr r3, [sp, #28] - cmp r3, #1 - bhi .L1247 - movs r3, #54 - str r3, [r7, #2056] - ldr r3, .L1301+12 - mov r1, #-1 + ite eq + moveq r7, #5 + movne r7, #8 +.L1220: + subs r3, r6, #1 ldr r0, [sp, #16] - ldrb r3, [r3, #1214] @ zero_extendqisi2 - str r3, [r7, #2052] + uxtb r3, r3 + mov ip, #0 + adds r3, r3, #1 + mov r2, r3 +.L1221: + ldr r1, [sp] + str r0, [sp, #16] +.L1222: + ldr r3, [sp, #16] + ldrb lr, [r1], #1 @ zero_extendqisi2 + strb lr, [r3], #1 + str r3, [sp, #16] + ldr r3, [sp] + sub lr, r1, r3 + uxtb lr, lr + cmp r6, lr + bhi .L1222 + ldr r1, [sp] + add ip, ip, #1 + cmp r5, ip + add r0, r0, r7 + add r1, r1, r2 + str r1, [sp] + bgt .L1221 + add r9, fp, r9, lsl #8 + movs r3, #255 + mov r0, r10 + str r3, [r9, #2056] + bl NandcWaitFlashReady + ldr r3, [sp, #32] + cmp r3, #1 + bhi .L1224 + movs r3, #54 + ldr r2, [sp, #4] + str r3, [r9, #2056] + mov r1, #-1 + ldrb r3, [r8, #1220] @ zero_extendqisi2 + ldr r0, [sp, #12] + str r3, [r2, #2052] movs r3, #0 - str r3, [r7, #2048] + str r3, [r2, #2048] movs r3, #22 - str r3, [r7, #2056] + str r3, [r9, #2056] bl FlashReadCmd - b .L1248 -.L1247: +.L1225: + mov r0, r10 + bl NandcWaitFlashReady + ldr r3, [sp, #24] + adds r3, r3, #1 + str r3, [sp, #24] + b .L1180 +.L1233: + movs r7, #4 + b .L1220 +.L1234: + movs r7, #10 + b .L1220 +.L1224: cmp r4, #8 ite eq moveq r3, #190 movne r3, #56 - str r3, [r7, #2056] -.L1248: - mov r0, fp - bl NandcWaitFlashReady - ldr r3, [sp, #20] - adds r3, r3, #1 - b .L1297 -.L1209: + str r3, [r9, #2056] + b .L1225 +.L1183: movs r3, #120 movs r2, #23 - str r3, [r8, #2056] - movs r1, #25 + str r3, [r7, #2056] movs r3, #0 - str r3, [r8, #2052] - str r3, [r8, #2052] - str r3, [r8, #2052] - str r2, [r8, #2056] + str r3, [r7, #2052] + movs r1, #25 + str r3, [r7, #2052] + str r3, [r7, #2052] + str r2, [r7, #2056] movs r2, #4 - str r2, [r8, #2056] - str r1, [r8, #2056] + str r2, [r7, #2056] + str r1, [r7, #2056] movs r1, #218 - str r1, [r8, #2056] + str r1, [r7, #2056] movs r1, #21 - str r3, [r8, #2056] - str r3, [r8, #2052] - str r3, [r8, #2052] - str r1, [r8, #2052] - str r2, [r8, #2052] - str r3, [r8, #2052] - ldr r3, .L1301+16 - str r3, [sp, #24] - b .L1251 -.L1302: + str r3, [r7, #2056] + str r3, [r7, #2052] + str r3, [r7, #2052] + str r1, [r7, #2052] + str r2, [r7, #2052] + str r3, [r7, #2052] + ldr r3, .L1281+12 + str r3, [sp, #16] + b .L1228 +.L1282: .align 2 -.L1301: +.L1281: .word .LANCHOR4 .word .LC85 .word .LC86 - .word .LANCHOR0 - .word .LANCHOR0+1238 + .word .LANCHOR0+1244 .fnend .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 1 .global FlashGetReadRetryDefault + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashGetReadRetryDefault, %function FlashGetReadRetryDefault: .fnstart @@ -8578,245 +8934,248 @@ @ link register save eliminated. mov r3, r0 cmp r0, #0 - beq .L1303 + beq .L1283 subs r2, r0, #1 cmp r2, #7 - bhi .L1305 + bhi .L1285 b HynixGetReadRetryDefault -.L1305: +.L1285: cmp r0, #49 - bne .L1306 - ldr r0, .L1326 + bne .L1286 + ldr r0, .L1306 movs r2, #64 - ldr r1, .L1326+4 - addw r0, r0, #1214 - strb r3, [r0, #-4] + ldr r1, .L1306+4 + strb r3, [r0, #1216] movs r3, #4 - strb r3, [r0, #-3] + strb r3, [r0, #1217] movs r3, #15 - strb r3, [r0, #-2] - b .L1324 -.L1306: + strb r3, [r0, #1218] +.L1304: + addw r0, r0, #1220 + b ftl_memcpy +.L1286: cmp r0, #33 - beq .L1307 + beq .L1287 sub r2, r0, #65 cmp r2, #1 - bhi .L1308 -.L1307: - ldr r0, .L1326 - strb r3, [r0, #1210] + bhi .L1288 +.L1287: + ldr r0, .L1306 + strb r3, [r0, #1216] movs r3, #4 - b .L1325 -.L1308: - cmp r0, #34 - beq .L1309 - cmp r0, #67 - bne .L1310 -.L1309: - ldr r0, .L1326 - strb r3, [r0, #1210] - movs r3, #5 -.L1325: - strb r3, [r0, #1211] - movs r2, #45 +.L1305: + strb r3, [r0, #1217] movs r3, #7 - addw r0, r0, #1214 - strb r3, [r0, #-2] - ldr r1, .L1326+8 - b .L1324 -.L1310: - cmp r0, #35 - beq .L1311 - cmp r0, #68 - bne .L1303 -.L1311: - ldr r0, .L1326 - movs r2, #95 - ldr r1, .L1326+12 - addw r0, r0, #1214 - strb r3, [r0, #-4] + strb r3, [r0, #1218] + movs r2, #45 + ldr r1, .L1306+8 + b .L1304 +.L1288: + cmp r0, #34 + beq .L1289 + cmp r0, #67 + bne .L1290 +.L1289: + ldr r0, .L1306 + strb r3, [r0, #1216] movs r3, #5 - strb r3, [r0, #-3] + b .L1305 +.L1290: + cmp r0, #35 + beq .L1291 + cmp r0, #68 + bne .L1283 +.L1291: + ldr r0, .L1306 + movs r2, #95 + ldr r1, .L1306+12 + strb r3, [r0, #1216] + movs r3, #5 + strb r3, [r0, #1217] movs r3, #17 - strb r3, [r0, #-2] -.L1324: - b ftl_memcpy -.L1303: + strb r3, [r0, #1218] + b .L1304 +.L1283: bx lr -.L1327: +.L1307: .align 2 -.L1326: +.L1306: .word .LANCHOR0 - .word .LANCHOR1+408 + .word .LANCHOR1+404 .word .LANCHOR1+256 - .word .LANCHOR1+304 + .word .LANCHOR1+301 .fnend .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .align 1 .global NandcXferComp + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcXferComp, %function NandcXferComp: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {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, .L1367 - add r0, r5, r0, lsl #3 - ldr r3, [r5, #2260] - ldr r4, [r0, #12] + ldr r5, .L1347 + ldr r3, [r5, #2264] + ldr r4, [r5, r0, lsl #3] cmp r3, #3 - bls .L1359 + bls .L1339 ldr r3, [r4, #16] lsls r6, r3, #29 - bpl .L1359 + bpl .L1339 ldr r6, [r4, #16] ldr r3, [r4, #8] ubfx r6, r6, #1, #1 str r3, [sp] cmp r6, #0 - beq .L1341 + beq .L1310 + ldr r7, .L1347+4 movs r6, #0 -.L1331: + ldr r8, .L1347+12 +.L1311: ldr r2, [r4, #28] ldr r3, [sp] ubfx r2, r2, #16, #5 ubfx r3, r3, #22, #6 cmp r2, r3 - bge .L1339 - ldr r3, [r5, #2260] + bge .L1319 + ldr r3, [r5, #2264] cmp r3, #5 - bhi .L1332 -.L1335: + bhi .L1312 +.L1315: adds r6, r6, #1 - bic r3, r6, #-16777216 - cmp r3, #0 - bne .L1334 + bics r3, r6, #-16777216 + bne .L1314 ldr r2, [r4, #28] mov r1, r6 ldr r3, [sp] + mov r0, r7 ubfx r2, r2, #16, #5 - ldr r0, .L1367+4 ubfx r3, r3, #22, #6 bl printk - ldr r0, .L1367+8 - mov r1, r4 - movs r2, #4 mov r3, #512 + movs r2, #4 + mov r1, r4 + mov r0, r8 bl rknand_print_hex - b .L1334 -.L1332: +.L1314: + movs r1, #5 + movs r0, #1 + bl usleep_range + b .L1311 +.L1312: ldr r3, [r4] str r3, [sp, #4] ldr r3, [sp, #4] lsls r0, r3, #18 - bpl .L1335 + bpl .L1315 ldr r3, [sp, #4] lsls r1, r3, #14 - bpl .L1335 -.L1339: - ldr r3, [r5, #2296] - ldr r4, .L1367 - cmp r3, #0 - beq .L1340 + bpl .L1315 +.L1319: + ldr r3, [r5, #2300] + cbz r3, .L1320 ldr r1, [sp] movs r2, #0 - ldr r0, [r4, #2288] + ldr r0, [r5, #2292] ubfx r1, r1, #22, #5 lsls r1, r1, #10 bl rknand_dma_unmap_single - ldr r0, [r4, #2292] - movs r2, #0 ldr r1, [sp] + movs r2, #0 + ldr r0, [r5, #2296] ubfx r1, r1, #22, #5 lsls r1, r1, #7 bl rknand_dma_unmap_single - b .L1340 -.L1334: - movs r0, #1 - movs r1, #5 - bl usleep_range - b .L1331 -.L1343: +.L1320: + movs r3, #0 + str r3, [r5, #2300] +.L1308: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L1310: + ldr r7, .L1347+8 + ldr r8, .L1347+12 +.L1321: + ldr r3, [sp] + lsls r2, r3, #11 + bpl .L1323 + ldr r3, [r5, #2308] + cbz r3, .L1324 + mov r0, r4 + bl NandcSendDumpDataStart +.L1324: + ldr r3, [r5, #2300] + cbz r3, .L1325 + ldr r1, [sp] + movs r2, #1 + ldr r0, [r5, #2292] + ubfx r1, r1, #22, #5 + lsls r1, r1, #10 + bl rknand_dma_unmap_single + ldr r1, [sp] + movs r2, #1 + ldr r0, [r5, #2296] + ubfx r1, r1, #22, #5 + lsls r1, r1, #7 + bl rknand_dma_unmap_single +.L1325: + ldr r3, [r5, #2308] + cmp r3, #0 + beq .L1320 + mov r0, r4 + bl NandcSendDumpDataDone + b .L1320 +.L1323: ldr r3, [r4, #8] adds r6, r6, #1 str r3, [sp] - bic r3, r6, #-16777216 - cbnz r3, .L1342 + bics r3, r6, #-16777216 + bne .L1322 ldr r2, [sp] mov r1, r6 ldr r3, [r4, #28] - ldr r0, .L1367+12 + mov r0, r7 ubfx r3, r3, #16, #5 bl printk - ldr r0, .L1367+8 - mov r1, r4 - movs r2, #4 mov r3, #512 + movs r2, #4 + mov r1, r4 + mov r0, r8 bl rknand_print_hex -.L1342: - movs r0, #1 +.L1322: movs r1, #5 + movs r0, #1 bl usleep_range -.L1341: - ldr r3, [sp] - lsls r2, r3, #11 - bpl .L1343 - ldr r3, [r5, #2304] - cbz r3, .L1344 - mov r0, r4 - bl NandcSendDumpDataStart -.L1344: - ldr r3, [r5, #2296] - ldr r6, .L1367 - cbz r3, .L1345 - ldr r1, [sp] - movs r2, #1 - ldr r0, [r6, #2288] - ubfx r1, r1, #22, #5 - lsls r1, r1, #10 - bl rknand_dma_unmap_single - ldr r0, [r6, #2292] - movs r2, #1 - ldr r1, [sp] - ubfx r1, r1, #22, #5 - lsls r1, r1, #7 - bl rknand_dma_unmap_single -.L1345: - ldr r3, [r5, #2304] - cbz r3, .L1340 - mov r0, r4 - bl NandcSendDumpDataDone -.L1340: - movs r3, #0 - str r3, [r5, #2296] - b .L1328 -.L1359: + b .L1321 +.L1339: ldr r3, [r4, #8] str r3, [sp] ldr r3, [sp] lsls r3, r3, #11 - bpl .L1359 -.L1328: - add sp, sp, #8 - @ sp needed - pop {r4, r5, r6, pc} -.L1368: + bpl .L1339 + b .L1308 +.L1348: .align 2 -.L1367: +.L1347: .word .LANCHOR0 .word .LC87 - .word .LC88 .word .LC89 + .word .LC88 .fnend .size NandcXferComp, .-NandcXferComp .align 1 .global NandcXferData + .syntax unified .thumb .thumb_func + .fpu softvfp .type NandcXferData, %function NandcXferData: .fnstart @@ -8824,293 +9183,288 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r3 - ldr r6, .L1413 - tst r10, #63 + mov r8, r3 + ldr r3, .L1385 + tst r8, #63 .pad #92 sub sp, sp, #92 - mov r9, r0 - add r3, r6, r0, lsl #3 + mov r7, r0 mov r5, r1 - mov r7, r2 - ldr r8, [r3, #12] - bne .L1370 - ldr r3, [sp, #128] - cbnz r3, .L1371 - add r0, sp, #24 - movs r1, #255 + mov r10, r2 + ldr fp, [sp, #128] + mov r9, r3 + ldr r6, [r3, r0, lsl #3] + bne .L1350 + cmp fp, #0 + bne .L1351 movs r2, #64 + movs r1, #255 + add r0, sp, #24 bl ftl_memset - add r3, sp, #24 - str r3, [sp, #128] -.L1371: - ldr r3, [sp, #128] - mov r0, r9 + add fp, sp, #24 +.L1351: mov r1, r5 - str r10, [sp] - mov r2, r7 - str r3, [sp, #4] + mov r0, r7 + stm sp, {r8, fp} movs r3, #0 + mov r2, r10 bl NandcXferStart - mov r0, r9 mov r1, r5 + mov r0, r7 bl NandcXferComp cmp r5, #0 - bne .L1397 - ldr r3, [r6, #2308] - lsrs r4, r7, #1 + bne .L1375 + ldr r3, [r9, #2312] + lsr r0, r10, #1 mov r2, r5 - mov r1, r5 cmp r3, #25 - ldr r3, [sp, #128] + mov r3, r5 ite cc - movcc lr, #64 - movcs lr, #128 -.L1374: - cmp r1, r4 - add r3, r3, #4 - add ip, r2, lr - bcs .L1411 - ldr r0, [r6, #2276] - lsrs r2, r2, #2 - adds r1, r1, #1 - ldr r2, [r0, r2, lsl #2] - lsrs r0, r2, #8 - strb r2, [r3, #-4] - strb r0, [r3, #-3] - lsrs r0, r2, #16 - lsrs r2, r2, #24 - strb r0, [r3, #-2] - strb r2, [r3, #-1] - mov r2, ip - b .L1374 -.L1411: + movcc r4, #64 + movcs r4, #128 +.L1354: + cmp r2, r0 + add fp, fp, #4 + add r7, r4, r3 + bcc .L1355 movs r2, #0 - ldr r0, [r6, #2308] - ldr r1, [r6, #2260] - lsrs r7, r7, #2 - mov fp, r2 -.L1376: - cmp r2, r7 - bcs .L1372 - cmp r0, #0 - beq .L1372 - add r3, r2, #8 - ldr r3, [r8, r3, lsl #2] - str r3, [sp, #20] - ldr r3, [sp, #20] - lsls r4, r3, #29 - bmi .L1400 - ldr r4, [sp, #20] - ubfx r4, r4, #15, #1 - cmp r4, #0 - bne .L1400 - cmp r1, #5 - bls .L1378 - ldr r4, [sp, #20] - ldr r3, [sp, #20] - ubfx r4, r4, #3, #5 - ubfx ip, r3, #27, #1 - ldr r3, [sp, #20] - ldr lr, [sp, #20] - ubfx r3, r3, #16, #5 - orr r4, r4, ip, lsl #5 - ubfx lr, lr, #29, #1 - orr r3, r3, lr, lsl #5 - cmp r4, r3 - ldr r3, [sp, #20] - ittee hi - ldrhi r4, [sp, #20] - ubfxhi r3, r3, #3, #5 - ldrls r4, [sp, #20] - ubfxls r3, r3, #16, #5 - ite hi - ubfxhi r4, r4, #27, #1 - ubfxls r4, r4, #29, #1 - b .L1410 -.L1378: - cmp r1, #3 - bls .L1380 - ldr r4, [sp, #20] - ldr r3, [sp, #20] - ubfx r4, r4, #3, #5 - ubfx ip, r3, #28, #1 - ldr r3, [sp, #20] - ldr lr, [sp, #20] - ubfx r3, r3, #16, #5 - orr r4, r4, ip, lsl #5 - ubfx lr, lr, #30, #1 - orr r3, r3, lr, lsl #5 - cmp r4, r3 - ldr r3, [sp, #20] - ittee hi - ldrhi r4, [sp, #20] - ubfxhi r3, r3, #3, #5 - ldrls r4, [sp, #20] - ubfxls r3, r3, #16, #5 - ite hi - ubfxhi r4, r4, #28, #1 - ubfxls r4, r4, #30, #1 -.L1410: - orr r4, r3, r4, lsl #5 -.L1380: - cmp fp, r4 - it cc - movcc fp, r4 - b .L1377 -.L1400: - mov fp, #-1 -.L1377: - adds r2, r2, #1 - b .L1376 -.L1397: - mov fp, #0 -.L1372: + lsr r0, r10, #2 + ldr r1, [r9, #2312] + ldr r4, [r9, #2264] + mov r9, r2 +.L1356: + cmp r2, r0 + bcs .L1352 + cbnz r1, .L1362 +.L1352: movs r3, #0 - str r3, [r8, #16] - b .L1383 -.L1370: - cmp r1, #1 - mov r4, #0 - bne .L1409 - mov fp, r4 -.L1384: - cmp r4, r7 - bcs .L1412 - and ip, r4, #3 - cmp r10, #0 - beq .L1403 - add r3, r10, r4, lsl #9 - b .L1386 -.L1403: - mov r3, r10 -.L1386: - ldr r2, [sp, #128] - mov r0, r8 - ldr r1, [sp, #128] - cmp r2, #0 - str ip, [sp, #8] - ite ne - movne r2, #2 - moveq r2, #0 - mla r2, r4, r2, r1 - movs r1, #1 - adds r4, r4, #2 - str r2, [sp] - mov r2, ip - bl NandcCopy1KB - mov r0, r9 - movs r1, #1 - movs r2, #2 - ldr ip, [sp, #8] - str fp, [sp] - str fp, [sp, #4] - mov r3, ip - bl NandcXferStart - mov r0, r9 - movs r1, #1 - bl NandcXferComp - b .L1384 -.L1412: - mov fp, #0 - b .L1383 -.L1409: - str r4, [sp] - mov r1, r4 - str r4, [sp, #4] - movs r2, #2 - mov r3, r4 - mov fp, r4 - bl NandcXferStart - str r10, [sp, #8] -.L1389: - cmp r4, r7 - bcs .L1383 - mov r0, r9 - mov r1, r5 - bl NandcXferComp - ldr r3, [r8, #32] - add ip, r4, #2 - cmp ip, r7 - str r3, [sp, #20] - bcs .L1390 - movs r3, #0 - mov r0, r9 - str r3, [sp] - movs r2, #2 - str r3, [sp, #4] - mov r1, r3 - and r3, ip, #3 - str ip, [sp, #12] - bl NandcXferStart - ldr ip, [sp, #12] -.L1390: - ldr r3, [sp, #20] - lsls r3, r3, #29 - bmi .L1405 - ldr r2, [sp, #20] - ldr r3, [sp, #20] - ubfx r2, r2, #3, #5 - ubfx r3, r3, #27, #1 - orr r3, r2, r3, lsl #5 - cmp fp, r3 - it cc - movcc fp, r3 - b .L1391 -.L1405: - mov fp, #-1 -.L1391: - ldr r1, [sp, #128] - cmp r10, #0 - ldr r3, [sp, #8] - it eq - moveq r3, #0 - ldr r0, [sp, #128] - cmp r1, #0 - ite ne - movne r1, #2 - moveq r1, #0 - sub r2, ip, #2 - str ip, [sp, #12] - mla r4, r4, r1, r0 - and r2, r2, #3 - mov r0, r8 - movs 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 .L1389 -.L1383: - ldr r3, [r6, #2260] + str r3, [r6, #16] +.L1363: + ldr r3, .L1385 + ldr r3, [r3, #2264] cmp r3, #5 - bls .L1395 - cbnz r5, .L1395 - ldr r3, [r8] + bls .L1349 + cbnz r5, .L1349 + ldr r3, [r6] and r2, r3, #139264 cmp r2, #139264 ittt eq - moveq fp, #-1 + moveq r9, #-1 orreq r3, r3, #131072 - streq r3, [r8] -.L1395: - mov r0, fp + streq r3, [r6] +.L1349: + mov r0, r9 add sp, sp, #92 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1414: +.L1355: + ldr r1, [r9, #2280] + bic r3, r3, #3 + adds r2, r2, #1 + ldr r3, [r1, r3] + strb r3, [fp, #-4] + lsrs r1, r3, #8 + strb r1, [fp, #-3] + lsrs r1, r3, #16 + lsrs r3, r3, #24 + strb r1, [fp, #-2] + strb r3, [fp, #-1] + mov r3, r7 + b .L1354 +.L1362: + add r3, r2, #8 + ldr r3, [r6, r3, lsl #2] + str r3, [sp, #20] + ldr r3, [sp, #20] + lsls r7, r3, #29 + bmi .L1378 + ldr r3, [sp, #20] + ubfx r3, r3, #15, #1 + cmp r3, #0 + bne .L1378 + cmp r4, #5 + bls .L1358 + ldr r7, [sp, #20] + ldr r3, [sp, #20] + ubfx r7, r7, #3, #5 + ubfx lr, r3, #27, #1 + ldr r3, [sp, #20] + ldr ip, [sp, #20] + orr r7, r7, lr, lsl #5 + ubfx r3, r3, #16, #5 + ubfx ip, ip, #29, #1 + orr r3, r3, ip, lsl #5 + cmp r7, r3 + ldr r3, [sp, #20] + itete hi + ldrhi r7, [sp, #20] + ldrls r7, [sp, #20] + ubfxhi r3, r3, #3, #5 + ubfxls r3, r3, #16, #5 + ite hi + ubfxhi r7, r7, #27, #1 + ubfxls r7, r7, #29, #1 +.L1384: + orr r3, r3, r7, lsl #5 +.L1360: + cmp r9, r3 + it cc + movcc r9, r3 +.L1357: + adds r2, r2, #1 + b .L1356 +.L1358: + cmp r4, #3 + bls .L1360 + ldr r7, [sp, #20] + ldr r3, [sp, #20] + ubfx r7, r7, #3, #5 + ubfx lr, r3, #28, #1 + ldr r3, [sp, #20] + ldr ip, [sp, #20] + orr r7, r7, lr, lsl #5 + ubfx r3, r3, #16, #5 + ubfx ip, ip, #30, #1 + orr r3, r3, ip, lsl #5 + cmp r7, r3 + ldr r3, [sp, #20] + itete hi + ldrhi r7, [sp, #20] + ldrls r7, [sp, #20] + ubfxhi r3, r3, #3, #5 + ubfxls r3, r3, #16, #5 + ite hi + ubfxhi r7, r7, #28, #1 + ubfxls r7, r7, #30, #1 + b .L1384 +.L1378: + mov r9, #-1 + b .L1357 +.L1375: + mov r9, #0 + b .L1352 +.L1350: + cmp r1, #1 + bne .L1364 + cmp fp, #0 + mov r4, fp + mov r9, #0 + ite ne + movne r3, #4 + moveq r3, #0 + str r3, [sp, #8] +.L1365: + cmp r9, r10 + bcc .L1367 + mov r9, #0 + b .L1363 +.L1367: + and fp, r9, #3 + cmp r8, #0 + beq .L1380 + add r3, r8, r9, lsl #9 +.L1366: + str r4, [sp] + mov r2, fp + movs r1, #1 + mov r0, r6 + bl NandcCopy1KB + movs r3, #0 + movs r2, #2 + str r3, [sp, #4] + movs r1, #1 + str r3, [sp] + mov r0, r7 + mov r3, fp + add r9, r9, #2 + bl NandcXferStart + movs r1, #1 + mov r0, r7 + bl NandcXferComp + ldr r3, [sp, #8] + add r4, r4, r3 + b .L1365 +.L1380: + mov r3, r8 + b .L1366 +.L1364: + movs r4, #0 + movs r2, #2 + mov r3, r4 + str r4, [sp, #4] + str r4, [sp] + mov r1, r4 + bl NandcXferStart + mov r9, r4 + cmp fp, r4 + ite ne + movne r3, #4 + moveq r3, r4 + str r3, [sp, #12] + str r8, [sp, #8] +.L1368: + cmp r4, r10 + bcs .L1363 + mov r1, r5 + mov r0, r7 + bl NandcXferComp + adds r4, r4, #2 + ldr r3, [r6, #32] + cmp r10, r4 + str r3, [sp, #20] + bls .L1369 + movs r3, #0 + movs r2, #2 + str r3, [sp, #4] + movs r1, #0 + str r3, [sp] + mov r0, r7 + and r3, r4, #3 + bl NandcXferStart +.L1369: + ldr r3, [sp, #20] + lsls r3, r3, #29 + bmi .L1381 + 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 + it cc + movcc r9, r3 +.L1370: + cmp r8, #0 + sub r2, r4, #2 + ldr r3, [sp, #8] + and r2, r2, #3 + str fp, [sp] + it eq + moveq r3, #0 + movs r1, #0 + mov r0, r6 + bl NandcCopy1KB + ldr r3, [sp, #8] + add r3, r3, #1024 + str r3, [sp, #8] + ldr r3, [sp, #12] + add fp, fp, r3 + b .L1368 +.L1381: + mov r9, #-1 + b .L1370 +.L1386: .align 2 -.L1413: +.L1385: .word .LANCHOR0 .fnend .size NandcXferData, .-NandcXferData .align 1 .global FlashReadRawPage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadRawPage, %function FlashReadRawPage: .fnstart @@ -9120,20 +9474,20 @@ .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1417 + ldr r3, .L1389 mov r6, r1 mov r7, r2 mov r4, r0 - ldrb r5, [r3, #481] @ zero_extendqisi2 - cbnz r0, .L1416 - ldr r2, .L1417+4 - ldrb r3, [r2, #1] @ zero_extendqisi2 - ldr r2, [r2, #4] - muls r2, r3, r2 - cmp r1, r2 - it cc - movcc r5, #4 -.L1416: + ldrb r5, [r3, #477] @ zero_extendqisi2 + cbnz r0, .L1388 + ldr r1, .L1389+4 + ldrb r3, [r1, #37] @ zero_extendqisi2 + ldr r0, [r1, #40] + muls r0, r3, r0 + cmp r0, r6 + it hi + movhi r5, #4 +.L1388: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 @@ -9143,30 +9497,32 @@ bl FlashReadCmd mov r0, r4 bl NandcWaitFlashReady - mov r2, r5 - movs r1, #0 mov r3, r7 - mov r0, r4 + mov r2, r5 str r8, [sp] + movs 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 pop {r4, r5, r6, r7, r8, pc} -.L1418: +.L1390: .align 2 -.L1417: +.L1389: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashReadRawPage, .-FlashReadRawPage .align 1 .global FlashDdrTunningRead + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashDdrTunningRead, %function FlashDdrTunningRead: .fnstart @@ -9175,156 +9531,149 @@ 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, .L1445 + ldr r4, .L1416 .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] ite cc - movcc r9, #6 - movcs r9, #12 + movcc r10, #6 + movcs r10, #12 cmp r3, #0 - beq .L1433 + beq .L1405 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode - mov r0, r10 + ldr r0, [sp] bl FlashReset mov r3, r7 mov r2, fp - mov r0, r10 - ldr r1, [sp] + 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 - adds r3, r6, #1 - bne .L1422 -.L1431: - mov r6, #-1 - b .L1423 -.L1422: - mov r2, r6 - ldr r0, .L1445+4 - ldr r1, [sp] - bl printk - cmp r6, #9 - itt ls - addls r4, r4, r10, lsl #3 - ldrls r3, [r4, #12] - ldr r4, .L1445+8 - itttt ls - ldrls r2, [r3, #3840] - ldrls r2, [r3] - orrls r2, r2, #131072 - strls r2, [r3] - ldr r3, [r4, #1188] - adds r3, r3, #1 - str r3, [r4, #1188] - cmp r3, #2048 - bcc .L1423 - movs r7, #0 - str r7, [r4, #1188] - mov fp, r7 - b .L1421 -.L1433: - mov r6, #1024 -.L1421: - movs r4, #0 - mov r8, #-1 - str r4, [sp, #4] - mov ip, r4 - mov r5, r4 -.L1429: - uxtb r0, r9 - str ip, [sp, #12] - bl NandcSetDdrPara - mov r3, r7 - mov r0, r10 - mov r2, fp - ldr r1, [sp] - bl FlashReadRawPage - adds r3, r6, #1 - cmp r0, r3 - ldr ip, [sp, #12] - bhi .L1425 - cmp r0, #2 - bhi .L1435 - adds r5, r5, #1 - cmp r5, #9 - bls .L1435 - rsb r4, r5, r9 - mov r6, r0 - mov r8, #0 - b .L1427 -.L1425: - ldr r3, [sp, #4] - cmp r3, r5 - bcs .L1436 - cmp r5, #7 - rsb ip, r5, r4 - bhi .L1437 - str r5, [sp, #4] - b .L1436 -.L1435: - mov r8, #0 - mov r4, r9 - mov r6, r0 - mov r7, r8 - mov fp, r8 - b .L1426 -.L1436: - movs r5, #0 -.L1426: - add r9, r9, #2 - cmp r9, #69 - bls .L1429 -.L1427: - ldr r3, [sp, #4] - cmp r3, r5 - it cs - movcs r4, ip - b .L1428 -.L1437: - mov r4, ip -.L1428: - cbz r4, .L1430 - ldr r0, .L1445+12 - mov r1, r4 - bl printk - uxtb r0, r4 - bl NandcSetDdrPara -.L1430: - cmp r8, #0 - beq .L1423 - ldr r0, .L1445+16 - mov r1, r10 - ldr r2, [sp] - bl printk - ldr r3, [sp, #56] - cmp r3, #0 - beq .L1431 - ldr r3, [sp, #8] - ubfx r0, r3, #8, #8 - bl NandcSetDdrPara -.L1423: - mov r0, r6 + adds r3, r5, #1 + bne .L1394 +.L1403: + mov r5, #-1 +.L1391: + mov r0, r5 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1446: +.L1394: + mov r2, r5 + ldr r1, [sp, #4] + ldr r0, .L1416+4 + bl printk + cmp r5, #9 + bhi .L1396 + ldr r3, [sp] + ldr r3, [r4, r3, lsl #3] + ldr r2, [r3, #3840] + ldr r2, [r3] + orr r2, r2, #131072 + str r2, [r3] +.L1396: + ldr r2, .L1416+8 + ldr r3, [r2, #1196] + adds r3, r3, #1 + cmp r3, #2048 + str r3, [r2, #1196] + bcc .L1391 + movs r7, #0 + mov fp, r7 + str r7, [r2, #1196] +.L1393: + mov r9, #0 + mov r8, #-1 + mov r6, r9 + mov r4, r9 + str r9, [sp, #8] +.L1401: + uxtb r0, r10 + bl NandcSetDdrPara + mov r3, r7 + mov r2, fp + ldm sp, {r0, r1} + bl FlashReadRawPage + adds r3, r5, #1 + cmp r0, r3 + bhi .L1397 + cmp r0, #2 + bhi .L1407 + adds r4, r4, #1 + cmp r4, #9 + bls .L1407 + mov r3, r6 + mov r5, r0 + sub r6, r10, r4 + mov r8, #0 +.L1399: + ldr r2, [sp, #8] + cmp r4, r2 + it ls + movls r6, r3 +.L1400: + cbz r6, .L1402 + mov r1, r6 + ldr r0, .L1416+12 + bl printk + uxtb r0, r6 + bl NandcSetDdrPara +.L1402: + cmp r8, #0 + beq .L1391 + ldm sp, {r1, r2} + ldr r0, .L1416+16 + bl printk + ldr r3, [sp, #56] + cmp r3, #0 + beq .L1403 + ldr r3, [sp, #12] + ubfx r0, r3, #8, #8 + bl NandcSetDdrPara + b .L1391 +.L1405: + mov r5, #1024 + b .L1393 +.L1397: + ldr r3, [sp, #8] + cmp r4, r3 + bls .L1408 + cmp r4, #7 + sub r6, r9, r4 + bhi .L1400 + str r4, [sp, #8] +.L1408: + movs r4, #0 + b .L1398 +.L1407: + mov r8, #0 + mov r9, r10 + mov r5, r0 + mov r7, r8 + mov fp, r8 +.L1398: + add r10, r10, #2 + cmp r10, #69 + bls .L1401 + mov r3, r6 + mov r6, r9 + b .L1399 +.L1417: .align 2 -.L1445: +.L1416: .word .LANCHOR0 .word .LC90 .word .LANCHOR4 @@ -9334,8 +9683,10 @@ .size FlashDdrTunningRead, .-FlashDdrTunningRead .align 1 .global FlashReadPage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadPage, %function FlashReadPage: .fnstart @@ -9344,98 +9695,95 @@ 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, r2 + mov r7, r2 mov r5, r0 mov r6, r1 - mov r7, r3 + mov r8, r3 bl FlashReadRawPage adds r2, r0, #1 mov r4, r0 - bne .L1448 - ldr r9, .L1467+4 - ldrb fp, [r9, #8] @ zero_extendqisi2 + bne .L1419 + ldr r9, .L1437+4 + ldrb fp, [r9, #44] @ zero_extendqisi2 mov r10, r9 cmp fp, #0 - bne .L1449 -.L1451: - ldrb r3, [r10, #2252] @ zero_extendqisi2 - ldr r9, .L1467+4 - cbz r3, .L1448 - b .L1466 -.L1449: - movs r3, #0 - mov r0, r5 - strb r3, [r9, #8] + bne .L1420 +.L1422: + ldrb r3, [r10, #2256] @ zero_extendqisi2 + cbz r3, .L1419 + ldr r3, [r10, #88] mov r1, r6 - mov r3, r7 - mov r2, r8 - bl FlashReadRawPage - strb fp, [r9, #8] - adds r3, r0, #1 - beq .L1451 - mov r4, r0 - b .L1448 -.L1466: - ldr r3, [r9, #80] - mov r1, r6 + mov r2, r7 mov r0, r5 - mov r2, r8 - ldr r10, [r3, #304] + ldr r9, [r3, #304] movs r3, #1 str r3, [sp] - mov r3, r7 + mov r3, r8 bl FlashDdrTunningRead adds r1, r0, #1 mov r4, r0 - beq .L1452 - ldrb r3, [r9, #2312] @ zero_extendqisi2 + beq .L1423 + ldrb r3, [r10, #2316] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1448 -.L1452: - ubfx r0, r10, #8, #8 + bls .L1419 +.L1423: + ubfx r0, r9, #8, #8 bl NandcSetDdrPara -.L1448: - ldr r9, .L1467+8 - ldr ip, [r9, #1192] - cmp ip, #0 - beq .L1453 - adds r2, r4, #1 - bne .L1453 + b .L1419 +.L1420: + movs r3, #0 + mov r2, r7 + strb r3, [r9, #44] mov r1, r6 - mov r2, r8 - mov r3, r7 + mov r3, r8 mov r0, r5 - blx ip - mov r3, r6 - mov r2, r5 + bl FlashReadRawPage + adds r3, r0, #1 + strb fp, [r9, #44] + beq .L1422 mov r4, r0 - ldr r0, .L1467 - mov r1, r4 +.L1419: + ldr r9, .L1437+8 + ldr r10, [r9, #1200] + cmp r10, #0 + beq .L1418 + adds r2, r4, #1 + bne .L1418 + mov r3, r8 + mov r2, r7 + mov r1, r6 + mov r0, r5 + blx r10 + mov r3, r6 + mov r4, r0 + mov r1, r0 + mov r2, r5 + ldr r0, .L1437 bl printk adds r3, r4, #1 - bne .L1453 - ldr r3, .L1467+4 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbz r3, .L1453 + bne .L1418 + ldr r3, .L1437+4 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cbz r3, .L1418 mov r0, r5 bl flash_enter_slc_mode - ldr r4, [r9, #1192] - mov r0, r5 + ldr r4, [r9, #1200] + mov r3, r8 + mov r2, r7 mov r1, r6 - mov r2, r8 - mov r3, r7 + mov r0, r5 blx r4 mov r4, r0 mov r0, r5 bl flash_exit_slc_mode -.L1453: +.L1418: mov r0, r4 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1468: +.L1438: .align 2 -.L1467: +.L1437: .word .LC93 .word .LANCHOR0 .word .LANCHOR4 @@ -9443,8 +9791,10 @@ .size FlashReadPage, .-FlashReadPage .align 1 .global FlashDdrParaScan + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashDdrParaScan, %function FlashDdrParaScan: .fnstart @@ -9453,60 +9803,60 @@ push {r0, r1, r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} .pad #8 - mov r7, r0 - ldr r4, .L1479 - mov r6, r1 + mov r6, r0 + ldr r4, .L1450 movs r5, #0 - ldrb r0, [r4, #2229] @ zero_extendqisi2 + mov r7, r1 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r4, #2229] @ zero_extendqisi2 + ldrb r0, [r4, #2233] @ zero_extendqisi2 bl NandcSetMode - mov r1, r6 - mov r2, r5 mov r3, r5 - mov r0, r7 - str r5, [sp] - bl FlashDdrTunningRead - mov r1, r6 mov r2, r5 + mov r1, r7 + str r5, [sp] + mov r0, r6 + bl FlashDdrTunningRead mov r3, r5 mov r8, r0 - mov r0, r7 + mov r2, r5 + mov r1, r7 + mov r0, r6 bl FlashReadRawPage adds r0, r0, #1 - beq .L1470 + beq .L1440 cmp r8, #-1 - bne .L1471 -.L1470: - ldrb r3, [r4, #2229] @ zero_extendqisi2 + bne .L1441 +.L1440: + ldrb r3, [r4, #2233] @ zero_extendqisi2 lsls r3, r3, #31 - bpl .L1471 + bpl .L1441 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode - ldr r3, .L1479 - movs r2, #0 - strb r2, [r3, #2252] - b .L1472 -.L1471: - movs r3, #1 - strb r3, [r4, #2252] -.L1472: + movs r3, #0 +.L1449: movs r0, #0 + strb r3, [r4, #2256] add sp, sp, #8 @ sp needed pop {r4, r5, r6, r7, r8, pc} -.L1480: +.L1441: + movs r3, #1 + b .L1449 +.L1451: .align 2 -.L1479: +.L1450: .word .LANCHOR0 .fnend .size FlashDdrParaScan, .-FlashDdrParaScan .align 1 .global FlashLoadPhyInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashLoadPhyInfo, %function FlashLoadPhyInfo: .fnstart @@ -9514,136 +9864,141 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movs r3, #60 .pad #20 sub sp, sp, #20 - ldr r3, .L1496 - movs r4, #0 - ldr r7, .L1496+4 - mov r9, #4 - ldr r5, .L1496+8 - mov r8, #-1 - ldr r0, [r3] @ unaligned - ldr r3, [r7, #4] - str r4, [r5, #1200] - mov r6, r5 - str r0, [sp, #12] @ unaligned - mov r0, r4 + ldr r6, .L1466 + movs r5, #0 + mov r8, #4 + strb r3, [sp, #12] + movs r3, #40 + strb r3, [sp, #13] + movs r3, #24 + strb r3, [sp, #14] + movs r3, #16 + ldr r4, .L1466+4 + mov r7, #-1 + strb r3, [sp, #15] + mov r0, r5 + ldr r3, [r6, #40] + ldr r10, .L1466+24 + str r5, [r4, #1208] str r3, [sp, #4] - ldr r3, [r5, #1184] - str r3, [r5, #1196] + ldr r3, [r4, #1192] + str r3, [r4, #1204] bl flash_enter_slc_mode -.L1482: - add fp, r4, #1 - mov r10, #0 -.L1484: +.L1453: + add fp, r5, #1 + mov r9, #0 +.L1455: add r3, sp, #12 - ldrb r0, [r3, r10] @ zero_extendqisi2 + ldrb r0, [r3, r9] @ zero_extendqisi2 bl FlashBchSel - movs r0, #0 - mov r1, r4 - ldr r2, [r5, #1184] - mov r3, r0 + movs r3, #0 + ldr r2, [r4, #1192] + mov r1, r5 + mov r0, r3 bl FlashReadRawPage adds r0, r0, #1 - bne .L1483 - movs r0, #0 + bne .L1454 + movs r3, #0 + ldr r2, [r4, #1192] mov r1, fp - ldr r2, [r6, #1184] - mov r3, r0 + mov r0, r3 bl FlashReadRawPage adds r0, r0, #1 - bne .L1483 - add r10, r10, #1 - cmp r10, #4 - beq .L1485 - b .L1484 -.L1486: - add r0, fp, #12 + bne .L1454 + add r9, r9, #1 + cmp r9, #4 + bne .L1455 +.L1456: + ldr r3, [sp, #4] + subs r8, r8, #1 + add r5, r5, r3 + bne .L1453 + mov r0, r8 + b .L1465 +.L1457: movw r1, #2036 + add r0, r9, #12 bl js_hash - ldr r3, [fp, #8] + ldr r3, [r9, #8] cmp r3, r0 - bne .L1492 - ldr r8, .L1496+24 - add r1, fp, #160 + bne .L1463 movs r2, #32 - add r0, r8, #472 + add r1, r9, #160 + ldr r0, .L1466+8 bl ftl_memcpy - ldr r1, [r6, #1196] + ldr r1, [r4, #1204] movs r2, #32 - ldr r0, .L1496+12 + ldr r0, .L1466+12 adds r1, r1, #192 bl ftl_memcpy - ldr r1, [r6, #1196] + ldr r1, [r4, #1204] mov r2, #852 - ldr r0, .L1496+16 + ldr r0, .L1466+16 adds r1, r1, #224 bl ftl_memcpy - ldrh r0, [r8, #482] + ldrh r0, [r10, #478] bl FlashBlockAlignInit - ldr r8, [r6, #1196] - str r4, [r6, #1200] - mov r0, r4 - ldr r1, [r7, #4] - ldr r3, [r8, #1076] - strb r3, [r7, #2252] + ldr r7, [r4, #1204] + mov r0, r5 + str r5, [r4, #1208] + ldr r1, [r6, #40] + ldr r3, [r7, #1076] + strb r3, [r6, #2256] bl __aeabi_uidiv adds r0, r0, #1 cmp r0, #1 - itee hi - strhi r0, [r6, #1204] + itet ls movls r3, #2 - strls r3, [r6, #1204] - ldrh r3, [r8, #14] - mov r8, #0 - strb r3, [r5, #1208] -.L1485: - ldr r3, [sp, #4] - subs r9, r9, #1 - add r4, r4, r3 - bne .L1482 - mov r0, r9 -.L1495: + strhi r0, [r4, #1212] + strls r3, [r4, #1212] + ldrh r3, [r7, #14] + movs r7, #0 + strb r3, [r4, #1216] + b .L1456 +.L1463: + mov r7, #-1 + b .L1456 +.L1454: + ldr r9, [r4, #1204] + ldr r2, .L1466+20 + ldr r3, [r9] + cmp r3, r2 + bne .L1456 + cmp r7, #0 + bne .L1457 + ldr r1, [r6, #40] + mov r0, r5 + bl __aeabi_uidiv + adds r0, r0, #1 + str r0, [r4, #1212] + mov r0, r7 +.L1465: bl flash_exit_slc_mode - mov r0, r8 + mov r0, r7 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1483: - ldr fp, [r5, #1196] - ldr r2, .L1496+20 - ldr r3, [fp] - cmp r3, r2 - bne .L1485 - cmp r8, #0 - bne .L1486 - mov r0, r4 - ldr r1, [r7, #4] - bl __aeabi_uidiv - ldr r3, .L1496+8 - adds r0, r0, #1 - str r0, [r3, #1204] - mov r0, r8 - b .L1495 -.L1492: - mov r8, #-1 - b .L1485 -.L1497: +.L1467: .align 2 -.L1496: - .word .LANCHOR3+11 +.L1466: .word .LANCHOR0 .word .LANCHOR4 - .word .LANCHOR0+48 - .word .LANCHOR0+1210 + .word .LANCHOR1+468 + .word .LANCHOR0+52 + .word .LANCHOR0+1216 .word 1312902724 .word .LANCHOR1 .fnend .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 1 .global ToshibaReadRetrial + .syntax unified .thumb .thumb_func + .fpu softvfp .type ToshibaReadRetrial, %function ToshibaReadRetrial: .fnstart @@ -9651,171 +10006,167 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r4, .L1495 .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, .L1526 - add r3, r4, r9, lsl #3 - ldrb r2, [r3, #16] @ zero_extendqisi2 - ldr r7, [r3, #12] - ldrb r3, [r4, #1208] @ zero_extendqisi2 - add r6, 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 subs r3, r3, #67 - add r6, r7, r6, lsl #8 + add r7, r6, r7, lsl #8 cmp r3, #1 - lsl r3, r2, #8 - str r3, [sp, #12] - bls .L1515 - ldrb r5, [r4, #2252] @ zero_extendqisi2 - cbz r5, .L1516 + lsl r3, r1, #8 + str r3, [sp, #16] + bls .L1485 + ldrb r5, [r4, #2256] @ zero_extendqisi2 + cbz r5, .L1470 + movs r5, #1 movs r0, #0 - str r2, [sp, #20] bl NandcSetDdrMode - movs r3, #1 - ldr r2, [sp, #20] +.L1470: + lsls r3, r1, #8 + movs r2, #92 + adds r3, r6, r3 + str r2, [r3, #2056] + movs r2, #197 + str r2, [r3, #2056] +.L1469: + mov r3, #-1 + mov r9, #1 str r3, [sp, #4] - b .L1500 -.L1516: - str r5, [sp, #4] -.L1500: - ldr r3, [sp, #12] - movs r1, #92 - adds r3, r7, r3 - str r1, [r3, #2056] - movs r1, #197 - str r1, [r3, #2056] - b .L1499 -.L1515: - movs r3, #0 - str r3, [sp, #4] -.L1499: - mov r8, #1 - mov r10, #-1 - lsls r3, r2, #8 + lsls r3, r1, #8 str r3, [sp, #20] -.L1501: - ldr r3, .L1526+4 - ldrb r3, [r3, #1209] @ zero_extendqisi2 +.L1471: + ldr r3, .L1495+4 + ldrb r3, [r3, #1217] @ zero_extendqisi2 adds r3, r3, #1 - cmp r8, r3 - bcs .L1525 - ldrb r3, [r4, #1208] @ zero_extendqisi2 - mov r0, r6 - uxtb r1, r8 - subs r3, r3, #67 - cmp r3, #1 - bhi .L1502 - bl SandiskSetRRPara - b .L1503 -.L1502: - bl ToshibaSetRRPara -.L1503: - ldrb r3, [r4, #1208] @ zero_extendqisi2 - cmp r3, #34 - bne .L1504 - ldr r3, .L1526+4 - ldrb r3, [r3, #1209] @ zero_extendqisi2 - subs r3, r3, #3 - cmp r8, r3 - itttt eq - moveq r2, #179 - ldreq r3, [sp, #20] - addeq r3, r7, r3 - streq r2, [r3, #2056] -.L1504: - ldr r3, [sp, #12] - movs r2, #38 - adds r3, r7, r3 - str r2, [r3, #2056] - movs r2, #93 - str r2, [r3, #2056] - ldr r3, [sp, #4] - cbz r3, .L1505 - movs r0, #4 - bl NandcSetDdrMode - mov r0, r9 - mov r3, fp - ldr r1, [sp, #16] - ldr r2, [sp, #8] - bl FlashReadRawPage - mov r5, r0 - movs r0, #0 - bl NandcSetDdrMode - b .L1506 -.L1505: - mov r0, r9 - ldr r1, [sp, #16] - ldr r2, [sp, #8] - mov r3, fp - bl FlashReadRawPage - mov r5, r0 -.L1506: - adds r2, r5, #1 - beq .L1507 - ldrb r2, [r4, #2312] @ zero_extendqisi2 - cmp r10, #-1 - it eq - moveq r10, r5 - add r2, r2, r2, lsl #1 - cmp r5, r2, asr #2 - bcc .L1509 - mov fp, #0 - str fp, [sp, #8] -.L1507: - add r8, r8, #1 - b .L1501 -.L1525: - mov r5, r10 -.L1509: - ldrb r2, [r4, #1208] @ zero_extendqisi2 - mov r0, r6 + cmp r9, r3 + bcc .L1480 + ldr r10, [sp, #4] +.L1479: + ldrb r2, [r4, #84] @ zero_extendqisi2 movs r1, #0 + mov r0, r7 subs r2, r2, #67 cmp r2, #1 - bhi .L1511 + bhi .L1481 bl SandiskSetRRPara - b .L1512 -.L1511: - bl ToshibaSetRRPara -.L1512: - ldr r3, [sp, #12] +.L1482: + ldr r3, [sp, #16] movs r2, #255 - add r7, r7, r3 - str r2, [r7, #2056] - ldrb r2, [r4, #2312] @ zero_extendqisi2 + add r6, r6, r3 + str r2, [r6, #2056] + ldrb r2, [r4, #2316] @ zero_extendqisi2 add r2, r2, r2, lsl #1 - cmp r5, r2, asr #2 - bcc .L1513 - adds r3, r5, #1 + cmp r10, r2, asr #2 + bcc .L1483 + cmp r10, #-1 it ne - movne r5, #256 -.L1513: - mov r0, r9 + movne r10, #256 +.L1483: + mov r0, r8 bl NandcWaitFlashReady - ldr r3, [sp, #4] - cbz r3, .L1514 + cbz r5, .L1468 movs r0, #4 bl NandcSetDdrMode -.L1514: - mov r0, r5 +.L1468: + mov r0, r10 add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1527: +.L1485: + movs r5, #0 + b .L1469 +.L1480: + ldrb r3, [r4, #84] @ zero_extendqisi2 + mov r0, r7 + uxtb r1, r9 + subs r3, r3, #67 + cmp r3, #1 + bhi .L1472 + bl SandiskSetRRPara +.L1473: + ldrb r3, [r4, #84] @ zero_extendqisi2 + cmp r3, #34 + bne .L1474 + ldr r3, .L1495+4 + ldrb r3, [r3, #1217] @ zero_extendqisi2 + subs r3, r3, #3 + cmp r9, r3 + itttt eq + ldreq r3, [sp, #20] + moveq r2, #179 + addeq r3, r6, r3 + streq r2, [r3, #2056] +.L1474: + ldr r3, [sp, #16] + movs r2, #38 + adds r3, r6, r3 + str r2, [r3, #2056] + movs r2, #93 + str r2, [r3, #2056] + cbz r5, .L1475 + movs r0, #4 + bl NandcSetDdrMode + mov r3, fp + ldr r2, [sp, #8] + ldr r1, [sp, #12] + mov r0, r8 + bl FlashReadRawPage + mov r10, r0 + movs r0, #0 + bl NandcSetDdrMode +.L1476: + cmp r10, #-1 + beq .L1477 + ldrb r2, [r4, #2316] @ zero_extendqisi2 + ldr r3, [sp, #4] + add r2, r2, r2, lsl #1 + cmp r3, #-1 + it eq + moveq r3, r10 + str r3, [sp, #4] + cmp r10, r2, asr #2 + bcc .L1479 + mov fp, #0 + str fp, [sp, #8] +.L1477: + add r9, r9, #1 + b .L1471 +.L1472: + bl ToshibaSetRRPara + b .L1473 +.L1475: + mov r3, fp + ldr r2, [sp, #8] + ldr r1, [sp, #12] + mov r0, r8 + bl FlashReadRawPage + mov r10, r0 + b .L1476 +.L1481: + bl ToshibaSetRRPara + b .L1482 +.L1496: .align 2 -.L1526: +.L1495: .word .LANCHOR0 .word .LANCHOR4 .fnend .size ToshibaReadRetrial, .-ToshibaReadRetrial .align 1 .global SamsungReadRetrial + .syntax unified .thumb .thumb_func + .fpu softvfp .type SamsungReadRetrial, %function SamsungReadRetrial: .fnstart @@ -9824,73 +10175,77 @@ 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, .L1541 - mov r9, r2 - mov r7, r3 + ldr r5, .L1510 + mov r9, r3 mov fp, r1 + mov r10, r2 bl NandcWaitFlashReady - add r2, r5, r8, lsl #3 - mov r10, #1 + movs r7, #1 mov r4, #-1 - ldrb r3, [r2, #16] @ zero_extendqisi2 - ldr r6, [r2, #12] - adds r3, r3, #8 + 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 -.L1529: - ldr r3, .L1541+4 - ldrb r3, [r3, #1209] @ zero_extendqisi2 +.L1498: + ldr r3, .L1510+4 + ldrb r3, [r3, #1217] @ zero_extendqisi2 adds r3, r3, #1 - cmp r10, r3 - bcs .L1532 + cmp r7, r3 + bcc .L1502 +.L1501: + movs r1, #0 mov r0, r6 - uxtb r1, r10 bl SamsungSetRRPara - mov r2, r9 - mov r0, r8 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r4, r3, asr #2 + bcc .L1497 + adds r3, r4, #1 + it ne + movne r4, #256 +.L1497: + mov r0, r4 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1502: + uxtb r1, r7 + mov r0, r6 + bl SamsungSetRRPara + mov r2, r10 + mov r3, r9 mov r1, fp - mov r3, r7 + mov r0, r8 bl FlashReadRawPage adds r2, r0, #1 - beq .L1530 - ldrb r3, [r5, #2312] @ zero_extendqisi2 + beq .L1499 + ldrb r3, [r5, #2316] @ zero_extendqisi2 cmp r4, #-1 it eq moveq r4, r0 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1535 - movs r7, #0 - mov r9, r7 -.L1530: - add r10, r10, #1 - b .L1529 -.L1535: + bcc .L1505 + mov r9, #0 + mov r10, r9 +.L1499: + adds r7, r7, #1 + b .L1498 +.L1505: mov r4, r0 -.L1532: - mov r0, r6 - movs r1, #0 - bl SamsungSetRRPara - ldrb r3, [r5, #2312] @ zero_extendqisi2 - add r3, r3, r3, lsl #1 - cmp r4, r3, asr #2 - bcc .L1534 - adds r3, r4, #1 - it ne - movne r4, #256 -.L1534: - mov r0, r4 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1542: + b .L1501 +.L1511: .align 2 -.L1541: +.L1510: .word .LANCHOR0 .word .LANCHOR4 .fnend .size SamsungReadRetrial, .-SamsungReadRetrial .align 1 .global MicronReadRetrial + .syntax unified .thumb .thumb_func + .fpu softvfp .type MicronReadRetrial, %function MicronReadRetrial: .fnstart @@ -9898,156 +10253,162 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r3 - ldr r3, .L1567 + mov r7, r3 + ldr r3, .L1536 + mov r10, r2 .pad #36 sub sp, sp, #36 - mov r6, r0 - mov fp, r2 - str r1, [sp, #20] - ldrb r5, [r3, #2312] @ zero_extendqisi2 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbnz r3, .L1544 - add r5, r5, r5, lsl #1 - ubfx r5, r5, #2, #8 - b .L1545 -.L1544: - ldr r2, .L1567+4 - smull r2, r3, r5, r2 - uxtb r5, r3 -.L1545: - ldr r3, .L1567 - mov r10, #0 - add r3, r3, r6, lsl #3 - str r3, [sp, #24] -.L1555: - mov r0, r6 + mov r5, r0 + str r1, [sp, #24] + ldrb r2, [r3, #2316] @ zero_extendqisi2 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cmp r3, #0 + bne .L1513 + add r2, r2, r2, lsl #1 + asr fp, r2, #2 +.L1514: + movs r3, #0 + str r3, [sp, #8] + ldr r3, .L1536 + add r3, r3, r5, lsl #3 + str r3, [sp, #28] +.L1524: + mov r0, r5 mov r9, #0 bl NandcWaitFlashReady + ldr r3, .L1536 mov r4, #-1 - ldr r3, [sp, #24] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [sp, #24] - ldrb r3, [r3, #16] @ zero_extendqisi2 + ldr r3, [r3, r5, lsl #3] str r3, [sp, #16] - ldr r2, [sp, #16] - ldr r3, [sp, #12] - add r7, r3, r2, lsl #8 -.L1546: - ldr r3, .L1567+8 - ldrb r3, [r3, #1209] @ zero_extendqisi2 + ldr r3, [sp, #28] + ldrb r3, [r3, #4] @ zero_extendqisi2 + str r3, [sp, #20] + ldr r2, [sp, #20] + ldr r3, [sp, #16] + add r6, r3, r2, lsl #8 +.L1515: + ldr r3, .L1536+4 + ldrb r3, [r3, #1217] @ zero_extendqisi2 cmp r9, r3 - bcs .L1549 + bcc .L1519 +.L1518: + ldr r3, [sp, #16] + movs r0, #200 + ldr r2, [sp, #20] + movs r6, #0 + add r8, r3, r2, lsl #8 + movs r3, #239 + str r3, [r8, #2056] + movs r3, #137 + str r3, [r8, #2052] + bl ndelay + cmp r4, fp + str r6, [r8, #2048] + str r6, [r8, #2048] + str r6, [r8, #2048] + str r6, [r8, #2048] + bcc .L1520 + adds r1, r4, #1 + mov r3, r9 + it ne + movne r4, #256 + ldr r2, [sp, #24] + str r4, [sp] + mov r1, r9 + ldr r0, .L1536+8 + bl printk + ldr r3, [sp, #8] + cmp r3, #0 + bne .L1522 + ldr r3, .L1536 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L1512 + adds r2, r4, #1 + bne .L1512 + movs r1, #3 + mov r0, r5 + bl micron_auto_read_calibration_config + movs r3, #1 + str r3, [sp, #8] + b .L1524 +.L1513: + ldr r3, .L1536+12 + smull r2, r3, r2, r3 + mov fp, r3 + b .L1514 +.L1519: movs r3, #239 movs r0, #200 - str r3, [r7, #2056] + str r3, [r6, #2056] movs 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, #12] + mov r3, r7 + str r8, [r6, #2048] + ldr r1, [sp, #24] + str r8, [r6, #2048] bl FlashReadRawPage adds r3, r0, #1 - beq .L1547 + beq .L1516 cmp r4, #-1 it eq moveq r4, r0 - cmp r0, r5 - ldr ip, [sp, #28] - bcc .L1557 - mov r8, ip - mov fp, ip -.L1547: - ldr r9, [sp, #8] - b .L1546 -.L1557: + cmp r0, fp + bcc .L1526 + mov r7, r8 + mov r10, r8 +.L1516: + ldr r9, [sp, #12] + b .L1515 +.L1526: mov r4, r0 - mov r8, ip - mov fp, ip -.L1549: - ldr r2, [sp, #16] - movs r0, #200 - ldr r3, [sp, #12] - movs r7, #0 - add r3, r3, r2, lsl #8 - movs r2, #239 - str r3, [sp, #8] - str r2, [r3, #2056] - movs r2, #137 - str r2, [r3, #2052] - bl NandcDelayns - cmp r4, r5 - ldr r3, [sp, #8] - str r7, [r3, #2048] - str r7, [r3, #2048] - str r7, [r3, #2048] - str r7, [r3, #2048] - bcc .L1551 - adds r1, r4, #1 - ldr r0, .L1567+12 - it ne - movne r4, #256 - mov r1, r9 - str r4, [sp] - mov r3, r9 - ldr r2, [sp, #20] - bl printk - cmp r10, #0 - bne .L1553 - ldr r3, .L1567 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbz r3, .L1562 - adds r2, r4, #1 - bne .L1562 - mov r0, r6 - movs r1, #3 - bl micron_auto_read_calibration_config - mov r10, #1 - b .L1555 -.L1553: - mov r0, r6 - mov r1, r7 + mov r7, r8 + mov r10, r8 + b .L1518 +.L1522: + mov r1, r6 + mov r0, r5 bl micron_auto_read_calibration_config adds r3, r4, #1 it ne movne r4, #256 - b .L1562 -.L1551: - cmp r10, #0 - beq .L1562 - mov r0, r6 - mov r1, r7 - bl micron_auto_read_calibration_config - mov r4, #256 -.L1562: +.L1512: mov r0, r4 add sp, sp, #36 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1568: +.L1520: + ldr r3, [sp, #8] + cmp r3, #0 + beq .L1512 + mov r1, r6 + mov r0, r5 + bl micron_auto_read_calibration_config + mov r4, #256 + b .L1512 +.L1537: .align 2 -.L1567: +.L1536: .word .LANCHOR0 - .word 1431655766 .word .LANCHOR4 .word .LC94 + .word 1431655766 .fnend .size MicronReadRetrial, .-MicronReadRetrial .align 1 .global HynixReadRetrial + .syntax unified .thumb .thumb_func + .fpu softvfp .type HynixReadRetrial, %function HynixReadRetrial: .fnstart @@ -10056,267 +10417,267 @@ 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, .L1586 - mov r10, r2 - mov r7, r0 - mov fp, r1 - adds r2, r5, r0 + mov r9, r3 + ldr r5, .L1555 + mov r8, #0 mov r6, #-1 - 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] + adds r2, r5, r0 + ldrb r4, [r2, #1228] @ zero_extendqisi2 + ldrb r10, [r5, #1218] @ zero_extendqisi2 ldrb r3, [r3, #19] @ zero_extendqisi2 subs r3, r3, #7 cmp r3, #1 it ls - ldrbls r4, [r2, #1230] @ zero_extendqisi2 + ldrbls r4, [r2, #1236] @ zero_extendqisi2 bl NandcWaitFlashReady - mov ip, #0 -.L1571: - cmp ip, r9 - bcs .L1575 +.L1540: + cmp r8, r10 + bcc .L1545 +.L1544: + ldr r3, [r5, #48] + add r7, r7, r5 + ldrb r3, [r3, #19] @ zero_extendqisi2 + subs r3, r3, #7 + cmp r3, #1 + ldrb r3, [r5, #2316] @ zero_extendqisi2 + ite ls + strbls r4, [r7, #1236] + strbhi r4, [r7, #1228] + add r3, r3, r3, lsl #1 + cmp r6, r3, asr #2 + bcc .L1538 + adds r3, r6, #1 + it ne + movne r6, #256 +.L1538: + mov r0, r6 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1545: adds r4, r4, #1 - mov r0, r7 - ldrb r1, [r5, #1211] @ zero_extendqisi2 + ldr r2, .L1555+4 uxtb r4, r4 - ldr r2, .L1586+4 - cmp r4, r9 - it cs - movcs r4, #0 - str ip, [sp, #4] + ldrb r1, [r5, #1217] @ zero_extendqisi2 + mov r0, r7 + cmp r10, r4 + it ls + movls r4, #0 mov r3, r4 bl HynixSetRRPara - mov r2, r10 + mov r2, fp + mov r3, r9 + ldr r1, [sp, #4] mov r0, r7 - mov r1, fp - mov r3, r8 bl FlashReadRawPage adds r2, r0, #1 - ldr ip, [sp, #4] - beq .L1573 - ldrb r3, [r5, #2312] @ zero_extendqisi2 + beq .L1542 + ldrb r3, [r5, #2316] @ zero_extendqisi2 cmp r6, #-1 it eq moveq r6, r0 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1580 - mov r8, #0 - mov r10, r8 -.L1573: - add ip, ip, #1 - b .L1571 -.L1580: + bcc .L1549 + mov r9, #0 + mov fp, r9 +.L1542: + add r8, r8, #1 + b .L1540 +.L1549: mov r6, r0 -.L1575: - ldr r3, [r5, #44] - add r7, r7, r5 - ldrb r3, [r3, #19] @ zero_extendqisi2 - subs r3, r3, #7 - cmp r3, #1 - ldrb r3, [r5, #2312] @ zero_extendqisi2 - ite ls - strbls r4, [r7, #1230] - strbhi r4, [r7, #1222] - add r3, r3, r3, lsl #1 - cmp r6, r3, asr #2 - bcc .L1579 - adds r3, r6, #1 - it ne - movne r6, #256 -.L1579: - mov r0, r6 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1587: + b .L1544 +.L1556: .align 2 -.L1586: +.L1555: .word .LANCHOR0 - .word .LANCHOR0+1214 + .word .LANCHOR0+1220 .fnend .size HynixReadRetrial, .-HynixReadRetrial .align 1 + .syntax unified .thumb .thumb_func + .fpu softvfp .type samsung_read_retrial, %function samsung_read_retrial: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #36 - sub sp, sp, #36 - mov r9, r0 - mov r10, r2 - mov r7, r3 - str r1, [sp, #16] + .pad #28 + sub sp, sp, #28 + mov r10, r0 + mov fp, r2 + mov r9, r3 + str r1, [sp, #12] bl NandcWaitFlashReady - ldr r3, .L1614 - add r2, r3, r9, lsl #3 - ldr r4, [r2, #12] - ldrb r2, [r2, #16] @ zero_extendqisi2 - str r2, [sp, #12] - ldrb r2, [r3, #2228] @ zero_extendqisi2 + ldr r3, .L1582 + ldr r2, [r3, r10, lsl #3] str r3, [sp, #20] + str r2, [sp, #8] + add r2, r3, r10, lsl #3 + ldrb r6, [r2, #4] @ zero_extendqisi2 + ldrb r2, [r3, #2232] @ zero_extendqisi2 cmp r2, #0 - bne .L1589 - ldr r3, [sp, #12] - mov r5, #-1 - movs r6, #1 - lsl fp, r3, #8 - add r8, r4, fp - addw r3, r8, #2056 - str r3, [sp, #24] -.L1593: - ldr r3, [sp, #24] - mov ip, #0 - ldr r1, [sp, #16] - mov r0, r9 - str ip, [sp, #28] + bne .L1558 + ldr r3, [sp, #8] + lsl r8, r6, #8 + mov r4, #-1 + movs r7, #1 + add r5, r3, r8 + addw r3, r5, #2056 + str r3, [sp, #16] +.L1562: + ldr r3, [sp, #16] + movs r6, #0 + ldr r1, [sp, #12] + mov r0, r10 mov r2, r3 movs r3, #239 str r3, [r2] movs r3, #141 - str r3, [r8, #2052] - mov r2, r10 - ldr r3, .L1614+4 - ldrsb r3, [r6, r3] - str r3, [r8, #2048] - mov r3, r7 - str ip, [r8, #2048] - str ip, [r8, #2048] - str ip, [r8, #2048] + str r3, [r5, #2052] + mov r2, fp + ldr r3, .L1582+4 + 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 adds r1, r0, #1 - beq .L1590 + beq .L1559 ldr r3, [sp, #20] - cmp r5, #-1 + cmp r4, #-1 it eq - moveq r5, r0 - ldrb r3, [r3, #2312] @ zero_extendqisi2 + moveq r4, r0 + ldrb r3, [r3, #2316] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1601 - ldr ip, [sp, #28] - mov r7, ip - mov r10, ip -.L1590: - adds r6, r6, #1 - cmp r6, #26 - bne .L1593 - b .L1592 -.L1601: - mov r5, r0 -.L1592: - add fp, fp, r4 + bcc .L1570 + mov r9, r6 + mov fp, r6 +.L1559: + adds r7, r7, #1 + cmp r7, #26 + bne .L1562 +.L1561: + ldr r3, [sp, #8] + add r3, r3, r8 + mov r8, r3 movs r3, #239 - str r3, [fp, #2056] - ldr r3, [sp, #12] - add r4, r4, r3, lsl #8 + str r3, [r8, #2056] movs r3, #141 - b .L1613 -.L1589: - ldr r3, [sp, #12] - mov r5, #-1 - ldr r8, .L1614+12 - movs r6, #1 - lsl ip, r3, #8 - add fp, r4, ip - addw r3, fp, #2056 - str r3, [sp, #24] -.L1598: - ldr r3, [sp, #24] - mov r0, r9 - ldr r1, [sp, #16] - str ip, [sp, #28] +.L1581: + str r3, [r5, #2052] + movs r3, #0 + str r3, [r5, #2048] + str r3, [r5, #2048] + str r3, [r5, #2048] + str r3, [r5, #2048] + ldr r3, .L1582 + ldrb r3, [r3, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp r4, r3, asr #2 + bcc .L1568 + adds r3, r4, #1 + ldr r2, [sp, #12] + it ne + movne r4, #256 + mov r3, r7 + str r4, [sp] + mov r1, r7 + ldr r0, .L1582+8 + bl printk +.L1568: + mov r0, r10 + bl NandcWaitFlashReady + mov r0, r4 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1570: + mov r4, r0 + b .L1561 +.L1558: + ldr r3, [sp, #8] + lsls r6, r6, #8 + ldr r8, .L1582+12 + mov r4, #-1 + movs r7, #1 + adds r5, r3, r6 + addw r3, r5, #2056 + str r3, [sp, #16] +.L1567: + ldr r3, [sp, #16] + mov r0, r10 + ldr r1, [sp, #12] mov r2, r3 movs r3, #239 str r3, [r2] movs r3, #137 - str r3, [fp, #2052] - mov r2, r10 + str r3, [r5, #2052] + mov r2, fp ldrb r3, [r8, #4] @ zero_extendqisi2 - str r3, [fp, #2048] + str r3, [r5, #2048] ldrb r3, [r8, #5] @ zero_extendqisi2 - str r3, [fp, #2048] + str r3, [r5, #2048] ldrb r3, [r8, #6] @ zero_extendqisi2 - str r3, [fp, #2048] + str r3, [r5, #2048] ldrb r3, [r8, #7] @ zero_extendqisi2 - str r3, [fp, #2048] - mov r3, r7 + str r3, [r5, #2048] + mov r3, r9 bl FlashReadRawPage adds r2, r0, #1 - ldr ip, [sp, #28] - beq .L1595 - ldr r3, [sp, #20] - cmp r5, #-1 + beq .L1564 + ldr r3, .L1582 + cmp r4, #-1 it eq - moveq r5, r0 - ldrb r3, [r3, #2312] @ zero_extendqisi2 + moveq r4, r0 + ldrb r3, [r3, #2316] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1602 - movs r7, #0 - mov r10, r7 -.L1595: - adds r6, r6, #1 + bcc .L1571 + mov r9, #0 + mov fp, r9 +.L1564: + adds r7, r7, #1 add r8, r8, #4 - cmp r6, #26 - bne .L1598 - b .L1597 -.L1602: - mov r5, r0 -.L1597: - add ip, ip, r4 + cmp r7, #26 + bne .L1567 +.L1566: + ldr r3, [sp, #8] + add r3, r3, r6 + mov r6, r3 movs r3, #239 - str r3, [ip, #2056] - ldr r3, [sp, #12] - add r4, r4, r3, lsl #8 + str r3, [r6, #2056] movs r3, #137 -.L1613: - str r3, [r4, #2052] - movs r3, #0 - str r3, [r4, #2048] - str r3, [r4, #2048] - str r3, [r4, #2048] - str r3, [r4, #2048] - ldr r3, [sp, #20] - ldrb r3, [r3, #2312] @ zero_extendqisi2 - add r3, r3, r3, lsl #1 - cmp r5, r3, asr #2 - bcc .L1599 - adds r3, r5, #1 - ldr r0, .L1614+8 - it ne - movne r5, #256 - mov r1, r6 - str r5, [sp] - mov r3, r6 - ldr r2, [sp, #16] - bl printk -.L1599: - mov r0, r9 - bl NandcWaitFlashReady - mov r0, r5 - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1615: + b .L1581 +.L1571: + mov r4, r0 + b .L1566 +.L1583: .align 2 -.L1614: +.L1582: .word .LANCHOR0 - .word .LANCHOR3+16 + .word .LANCHOR3+11 .word .LC95 - .word .LANCHOR3+44 + .word .LANCHOR3+37 .fnend .size samsung_read_retrial, .-samsung_read_retrial .align 1 .global FlashProgPage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashProgPage, %function FlashProgPage: .fnstart @@ -10326,35 +10687,35 @@ .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1619 + ldr r3, .L1587 mov r5, r1 mov r7, r2 mov r4, r0 - ldrb r6, [r3, #481] @ zero_extendqisi2 - cbnz r0, .L1617 - ldr r2, .L1619+4 - ldrb r3, [r2, #1] @ zero_extendqisi2 - ldr r1, [r2, #4] - muls r1, r3, r1 - cmp r5, r1 - bcs .L1617 - ldrb r3, [r2] @ zero_extendqisi2 + ldrb r6, [r3, #477] @ zero_extendqisi2 + cbnz r0, .L1585 + ldr r1, .L1587+4 + ldrb r3, [r1, #37] @ zero_extendqisi2 + ldr r0, [r1, #40] + muls r0, r3, r0 + cmp r0, r5 + bls .L1585 + ldrb r3, [r1, #36] @ zero_extendqisi2 cmp r3, #0 it ne movne r6, #4 -.L1617: +.L1585: 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 - movs r1, #1 + bl FlashProgFirstCmd + mov r3, r7 + mov r2, r6 str r8, [sp] + movs r1, #1 + mov r0, r4 bl NandcXferData mov r1, r5 mov r0, r4 @@ -10364,281 +10725,285 @@ 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 pop {r4, r5, r6, r7, r8, pc} -.L1620: +.L1588: .align 2 -.L1619: +.L1587: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashProgPage, .-FlashProgPage .align 1 .global FlashSavePhyInfo + .syntax unified .thumb .thumb_func + .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 - 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, .L1634 - ldr r5, .L1634+4 - ldr r8, .L1634+12 - ldr r3, [r4, #1184] - mov fp, r4 - ldrb r0, [r4, #1210] @ zero_extendqisi2 - mov r10, r5 - str r3, [r4, #1196] + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r4, .L1602 + ldr r5, .L1602+4 + ldr r3, [r4, #1192] + ldrb r0, [r4, #1218] @ zero_extendqisi2 + ldr r8, .L1602+12 + str r3, [r4, #1204] bl FlashBchSel - movs r1, #0 mov r2, #2048 - ldr r0, [r4, #1184] + movs r1, #0 + ldr r0, [r4, #1192] bl ftl_memset - ldr r3, [r4, #1196] - addw r1, r5, #2068 + ldr r3, [r4, #1204] movs r2, #32 + addw r1, r5, #2072 str r8, [r3] - ldr r0, [r4, #1196] - ldrb r3, [r5, #2230] @ zero_extendqisi2 + ldr r0, [r4, #1204] + ldrb r3, [r5, #2234] @ zero_extendqisi2 adds 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, #1196] - addw r1, r5, #2232 + ldr r0, [r4, #1204] movs r2, #8 + addw r1, r5, #2236 adds r0, r0, #80 bl ftl_memcpy - ldr r0, [r4, #1196] - addw r1, r5, #1172 + ldr r0, [r4, #1204] movs r2, #32 + addw r1, r5, #1180 adds r0, r0, #96 bl ftl_memcpy - ldr r0, [r4, #1196] - ldr r1, .L1634+8 + ldr r0, [r4, #1204] movs r2, #32 + ldr r1, .L1602+8 adds r0, r0, #160 bl ftl_memcpy - ldr r0, [r4, #1196] - add r1, r5, #48 + ldr r0, [r4, #1204] movs r2, #32 + add r1, r5, #52 adds r0, r0, #192 bl ftl_memcpy - ldr r0, [r4, #1196] + ldr r0, [r4, #1204] mov r2, #852 - addw r1, r5, #1210 + add r1, r5, #1216 adds r0, r0, #224 bl ftl_memcpy - ldr r6, [r4, #1196] + ldr r6, [r4, #1204] movw r1, #2036 add r0, r6, #12 bl js_hash mov r3, #1592 - str r3, [r6, #4] - ldr r3, [r4, #1212] - str r3, [r4, #1196] str r0, [r6, #8] - movs r0, #0 - bl flash_enter_slc_mode + str r3, [r6, #4] movs r6, #0 + ldr r3, [r4, #1220] mov r7, r6 -.L1627: - ldr r1, [r5, #4] movs r0, #0 - mov r2, r0 + str r3, [r4, #1204] + bl flash_enter_slc_mode +.L1595: + ldr r1, [r5, #40] + movs r2, #0 + mov r0, r2 muls r1, r7, r1 bl FlashEraseBlock - ldrb r9, [r5, #144] @ zero_extendqisi2 + ldrb r9, [r5, #152] @ zero_extendqisi2 cmp r9, #0 - beq .L1622 + beq .L1590 mov r9, #0 -.L1623: - ldr r1, [r5, #4] - movs r0, #0 - ldr r2, [r4, #1184] - mov r3, r0 +.L1591: + ldr r1, [r5, #40] + movs r3, #0 + ldr r2, [r4, #1192] + mov r0, r3 mla r1, r1, r7, r9 add r9, r9, #1 bl FlashProgPage cmp r9, #10 - bne .L1623 - b .L1624 -.L1622: - ldr r1, [r10, #4] - mov r3, r9 - ldr r2, [r4, #1184] - mov r0, r9 - muls r1, r7, r1 - bl FlashProgPage - ldr r1, [r10, #4] - mov r0, r9 - ldr r2, [r4, #1184] - mov r3, r9 - muls r1, r7, r1 - adds r1, r1, #1 - bl FlashProgPage -.L1624: - ldr r1, [r5, #4] - movs r0, #0 - ldr r2, [r4, #1212] - mov r3, r0 + bne .L1591 +.L1592: + ldr r1, [r5, #40] + movs r3, #0 + ldr r2, [r4, #1220] + mov r0, r3 + add r10, r7, #1 muls r1, r7, r1 bl FlashReadRawPage - adds r2, r7, #1 adds r0, r0, #1 - beq .L1625 - ldr r9, [fp, #1196] + beq .L1593 + ldr r9, [r4, #1204] ldr r3, [r9] cmp r3, r8 - bne .L1625 - add r0, r9, #12 + bne .L1593 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 .L1625 - ldr r3, [r10, #4] + bne .L1593 + ldr r3, [r5, #40] cmp r6, #1 - str r2, [fp, #1204] - mul r3, r3, r7 - str r3, [fp, #1200] - beq .L1628 + str r10, [r4, #1212] + mul r7, r7, r3 + str r7, [r4, #1208] + beq .L1596 movs r6, #1 -.L1625: - cmp r2, #4 - mov r7, r2 - bne .L1627 - b .L1626 -.L1628: - movs r6, #2 -.L1626: +.L1593: + mov r7, r10 + cmp r7, #4 + bne .L1595 +.L1594: movs r0, #0 bl flash_exit_slc_mode clz r0, r6 lsrs r0, r0, #5 negs r0, r0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1635: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1590: + ldr r1, [r5, #40] + mov r3, r9 + ldr r2, [r4, #1192] + mov r0, r9 + muls r1, r7, r1 + bl FlashProgPage + ldr r1, [r5, #40] + mov r3, r9 + ldr r2, [r4, #1192] + mov r0, r9 + muls r1, r7, r1 + adds r1, r1, #1 + bl FlashProgPage + b .L1592 +.L1596: + movs r6, #2 + b .L1594 +.L1603: .align 2 -.L1634: +.L1602: .word .LANCHOR4 .word .LANCHOR0 - .word .LANCHOR1+472 + .word .LANCHOR1+468 .word 1312902724 .fnend .size FlashSavePhyInfo, .-FlashSavePhyInfo .align 1 .global FlashReadIdbDataRaw + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadIdbDataRaw, %function FlashReadIdbDataRaw: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - push {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 - mov r9, r0 - ldr r3, .L1655 - ldr r4, .L1655+4 - ldr r0, [r3] @ unaligned - ldr r3, [r4, #2248] - ldrb r10, [r4, #2312] @ zero_extendqisi2 - str r0, [sp, #4] @ unaligned - cbz r3, .L1637 + movs r3, #60 + .pad #20 + sub sp, sp, #20 + ldr r4, .L1622 + mov r10, r0 + strb r3, [sp, #12] + movs r3, #40 + strb r3, [sp, #13] + movs r3, #24 + strb r3, [sp, #14] + movs r3, #16 + strb r3, [sp, #15] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + str r3, [sp, #4] + ldr r3, [r4, #2252] + cbz r3, .L1605 movs r0, #0 bl flash_enter_slc_mode -.L1637: - mov r0, r9 - movs r1, #0 - mov r2, #2048 +.L1605: + ldr r6, .L1622+4 mov r8, #-1 - bl ftl_memset movs r5, #2 -.L1638: - ldrb r3, [r4, #1] @ zero_extendqisi2 - cmp r5, r3 - bcs .L1642 - movs r7, #0 -.L1640: - add r3, sp, #4 - ldr r6, .L1655+8 - ldrb fp, [r7, r3] @ zero_extendqisi2 - mov r0, fp - bl FlashBchSel - ldr r1, [r4, #4] - movs r0, #0 - ldr r2, [r6, #1184] - muls r1, r5, r1 - mov r3, r0 - bl FlashReadRawPage - adds r0, r0, #1 - bne .L1639 - adds r7, r7, #1 - cmp r7, #4 - bne .L1640 - b .L1641 -.L1639: - ldr r3, [r6, #1184] - ldr r2, .L1655+12 - ldr r3, [r3] - cmp r3, r2 - bne .L1641 - mov r1, fp - ldr r0, .L1655+16 - bl printk mov r2, #2048 - mov r0, r9 - ldr r1, [r6, #1184] - bl ftl_memcpy - ldr r3, [r6, #1184] - ldr r2, .L1655+4 - ldr r3, [r3, #512] - strb r3, [r2, #1] - ldr r3, [r6, #1204] - cmp r3, r5 - bls .L1645 - str r5, [r6, #1204] - bl FlashSavePhyInfo - mov r8, #0 -.L1641: - adds r5, r5, #1 - b .L1638 -.L1645: - mov r8, #0 -.L1642: + movs r1, #0 mov r0, r10 + bl ftl_memset +.L1606: + ldrb r3, [r4, #37] @ zero_extendqisi2 + cmp r5, r3 + bcc .L1611 +.L1610: + ldr r0, [sp, #4] bl FlashBchSel - ldr r3, [r4, #2248] - cbz r3, .L1649 + ldr r3, [r4, #2252] + cbz r3, .L1604 movs r0, #0 bl flash_exit_slc_mode -.L1649: +.L1604: mov r0, r8 - add sp, sp, #12 + add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1656: +.L1611: + movs r7, #0 + add fp, sp, #12 +.L1608: + ldrb r9, [r7, fp] @ zero_extendqisi2 + mov r0, r9 + bl FlashBchSel + ldr r1, [r4, #40] + movs r3, #0 + ldr r2, [r6, #1192] + mov r0, r3 + muls r1, r5, r1 + bl FlashReadRawPage + adds r0, r0, #1 + bne .L1607 + adds r7, r7, #1 + cmp r7, #4 + bne .L1608 +.L1609: + adds r5, r5, #1 + b .L1606 +.L1614: + mov r8, #0 + b .L1610 +.L1607: + ldr r3, [r6, #1192] + ldr r2, .L1622+8 + ldr r3, [r3] + cmp r3, r2 + bne .L1609 + mov r1, r9 + ldr r0, .L1622+12 + bl printk + mov r2, #2048 + ldr r1, [r6, #1192] + mov r0, r10 + bl ftl_memcpy + ldr r3, [r6, #1192] + ldr r3, [r3, #512] + strb r3, [r4, #37] + ldr r3, [r6, #1212] + cmp r5, r3 + bcs .L1614 + str r5, [r6, #1212] + mov r8, #0 + bl FlashSavePhyInfo + b .L1609 +.L1623: .align 2 -.L1655: - .word .LANCHOR3+11 +.L1622: .word .LANCHOR0 .word .LANCHOR4 .word -52655045 @@ -10647,619 +11012,603 @@ .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 1 .global FlashInit + .syntax unified .thumb .thumb_func + .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 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, .L1740 + .pad #28 + sub sp, sp, #28 + mov r0, #32768 + movs r6, #0 + bl ftl_malloc + str r0, [r5, #1192] mov r0, #32768 bl ftl_malloc - ldr r4, .L1780 - ldr r6, .L1780+4 - movs r7, #0 - add r9, r6, #12 - mov r8, r4 - str r0, [r4, #1184] - mov r0, #32768 - bl ftl_malloc - str r0, [r4, #1212] + str r0, [r5, #1220] mov r0, #4096 - bl ftl_malloc - str r0, [r4, #1216] + ldr r4, .L1740+4 + mov r8, r6 + bl ftl_dma32_malloc + str r0, [r5, #1224] mov r0, #32768 bl ftl_malloc - str r0, [r4, #1220] + ldr fp, .L1740+40 + str r0, [r5, #1228] mov r0, #4096 - bl ftl_malloc + bl ftl_dma32_malloc movs r3, #50 - str r7, [r4, #1204] - strb r3, [r4, #1208] - strb r3, [r6, #1] + str r0, [r5, #1232] + strb r3, [r4, #37] + mov r0, r7 + strb r3, [r5, #1216] + addw r7, r4, #2072 movs r3, #128 - str r7, [r4, #1188] - str r3, [r6, #4] + str r6, [r5, #1212] + str r3, [r4, #40] movs r3, #60 - strb r7, [r4, #1228] - strb r3, [r4, #1210] - strb r7, [r6, #2252] - strb r7, [r6] - str r0, [r4, #1224] - mov r0, r5 + strb r6, [r4, #2256] + str r6, [r5, #1196] + strb r6, [r4, #36] + strb r6, [r5, #1236] + strb r3, [r5, #1218] bl NandcInit - addw r5, r6, #2068 - mov r4, r6 -.L1663: - add r3, r9, r7, lsl #3 - uxtb fp, r7 - ldr r6, [r9, r7, lsl #3] - ldrb r10, [r3, #4] @ zero_extendqisi2 - mov r0, fp +.L1630: + ldr r3, [r4, r6, lsl #3] + uxtb r9, r6 + add r2, r4, r6, lsl #3 + mov r0, r9 + ldrb r10, [r2, #4] @ zero_extendqisi2 + str r3, [sp, #20] bl FlashReset - mov r0, fp + mov r0, r9 bl NandcFlashCs - movs r3, #144 - add r6, r6, r10, lsl #8 + ldr r3, [sp, #20] movs r0, #200 - mov r10, #0 - str r3, [r6, #2056] - str r10, [r6, #2052] - bl NandcDelayns - ldr r2, [r6, #2048] + add r10, r3, r10, lsl #8 + movs r3, #144 + 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 .L1658 + 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 .L1625 movs r2, #239 movs r0, #200 - str r2, [r6, #2056] + str r2, [r10, #2056] movs r2, #1 - str r2, [r6, #2052] - bl NandcDelayns + str r2, [r10, #2052] + bl ndelay movs r2, #4 - str r2, [r6, #2048] - str r10, [r6, #2048] - str r10, [r6, #2048] - str r10, [r6, #2048] -.L1658: - mov r0, fp + str r2, [r10, #2048] + str r8, [r10, #2048] + str r8, [r10, #2048] + str r8, [r10, #2048] +.L1625: + mov r0, r9 bl NandcFlashDeCs - ldrb r2, [r5] @ zero_extendqisi2 + ldrb r2, [r7] @ zero_extendqisi2 subs r3, r2, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1659 - ldrb r1, [r5, #2] @ zero_extendqisi2 - ldrb r3, [r5, #1] @ zero_extendqisi2 - ldr r0, .L1780+8 - 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 .L1626 + ldrb r1, [r7, #5] @ zero_extendqisi2 + mov r0, fp + ldrb r3, [r7, #1] @ zero_extendqisi2 str r1, [sp, #12] - adds 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] + adds r1, r6, #1 bl printk -.L1659: - cbnz r7, .L1660 - ldrb r3, [r4, #2068] @ zero_extendqisi2 +.L1626: + cbnz r6, .L1627 + ldrb r3, [r4, #2072] @ zero_extendqisi2 subs r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1716 - ldr r3, .L1780+4 - ldrb r3, [r3, #2069] @ zero_extendqisi2 + bhi .L1681 + ldrb r3, [r4, #2073] @ zero_extendqisi2 cmp r3, #255 - beq .L1716 -.L1660: - ldrb r3, [r5] @ zero_extendqisi2 - adds r7, r7, #1 - adds r5, r5, #8 + beq .L1681 +.L1627: + ldrb r3, [r7] @ zero_extendqisi2 + adds r6, r6, #1 + adds r7, r7, #8 cmp r3, #181 itt eq moveq r3, #44 - strbeq r3, [r5, #-8] - cmp r7, #4 - bne .L1663 - ldrb r3, [r4, #2068] @ zero_extendqisi2 + strbeq r3, [r7, #-8] + cmp r6, #4 + bne .L1630 + ldrb r3, [r4, #2072] @ zero_extendqisi2 cmp r3, #173 - beq .L1664 - ldr r3, .L1780+4 - ldr r0, [r3, #2256] + beq .L1631 + ldr r0, [r4, #2260] bl NandcSetDdrMode -.L1664: - ldr r6, .L1780+4 - movs r1, #0 +.L1631: mov r2, #852 - ldr r5, .L1780+12 - addw r0, r6, #1210 + movs r1, #0 + ldr r0, .L1740+8 bl ftl_memset - ldr r0, .L1780+16 - add r3, r0, #472 - str r3, [r4, #44] - movs r3, #0 - strb r3, [r4, #8] - ldr r3, [r4, #2264] - cmp r3, r5 - bne .L1665 - ldrb r2, [r0, #491] @ zero_extendqisi2 + ldr r6, .L1740+12 + ldr r3, .L1740+16 + ldr r1, [r4, #2268] + add r2, r3, #468 + cmp r1, r6 + str r2, [r4, #48] + mov r2, #0 + strb r2, [r4, #44] + bne .L1632 + ldrb r2, [r3, #487] @ zero_extendqisi2 cmp r2, #50 itt ne movne r2, #1 - strne r2, [r6, #2248] -.L1665: - ldrb r6, [r4, #2069] @ zero_extendqisi2 - cmp r6, #161 - beq .L1666 - cmp r6, #241 - beq .L1666 - cmp r6, #218 - beq .L1666 - and r2, r6, #253 - cmp r2, #209 - beq .L1666 - cmp r6, #220 - bne .L1667 - ldr r2, .L1780+4 - ldrb r2, [r2, #2071] @ zero_extendqisi2 - cmp r2, #149 - bne .L1667 -.L1666: + strne r2, [r4, #2252] +.L1632: + ldrb r2, [r4, #2073] @ zero_extendqisi2 + cmp r2, #161 + beq .L1633 + cmp r2, #241 + beq .L1633 + cmp r2, #218 + beq .L1633 + and r0, r2, #253 + cmp r0, #209 + beq .L1633 + cmp r2, #220 + bne .L1634 + ldrb r0, [r4, #2075] @ zero_extendqisi2 + cmp r0, #149 + bne .L1634 +.L1633: movs r7, #16 - strb r7, [r4, #1] - strb r7, [r8, #1210] - movs r1, #1 - ldrb r7, [r4, #2068] @ zero_extendqisi2 - strb r1, [r4] + movs r0, #1 + strb r7, [r4, #37] + strb r7, [r5, #1218] + ldrb r7, [r4, #2072] @ zero_extendqisi2 + strb r0, [r4, #36] + strb r2, [r3, #3414] cmp r7, #152 - ldr r2, .L1780 - strb r7, [r0, #3417] - strb r6, [r0, #3418] - bne .L1669 - ldr r7, .L1780+4 - ldrsb r7, [r7, #2072] + strb r7, [r3, #3413] + bne .L1636 + ldrsb r7, [r4, #2076] cmp r7, #0 - blt .L1670 - movs r1, #24 - strb r1, [r2, #1210] -.L1669: - cmp r3, r5 - beq .L1672 - movw r2, #2049 - cmp r3, r2 - bne .L1673 -.L1672: - movs r3, #16 - strb r3, [r8, #1210] -.L1673: - cmp r6, #218 - bne .L1674 - mov r3, #2048 - b .L1775 -.L1674: - cmp r6, #220 - bne .L1676 - mov r3, #4096 -.L1775: - strh r3, [r0, #3430] @ movhi - strb r6, [r0, #3418] - b .L1675 -.L1676: - cmp r6, #211 - itttt eq - moveq r3, #4096 - strheq r3, [r0, #3430] @ movhi - moveq r3, #2 - strbeq r3, [r0, #3429] -.L1675: - ldr r1, .L1780+20 + blt .L1637 + movs r0, #24 + strb r0, [r5, #1218] +.L1636: + cmp r1, r6 + beq .L1639 + movw r0, #2049 + cmp r1, r0 + bne .L1640 +.L1639: + movs r1, #16 + strb r1, [r5, #1218] +.L1640: + cmp r2, #218 + bne .L1641 + mov r1, #2048 +.L1734: + strh r1, [r3, #3426] @ movhi + strb r2, [r3, #3414] +.L1642: movs r2, #32 - ldr r0, .L1780+24 + ldr r1, .L1740+20 + ldr r0, .L1740+24 bl ftl_memcpy - ldr r0, .L1780+28 + ldr r1, .L1740+28 movs r2, #32 - add r1, r0, #2944 + sub r0, r1, #2944 bl ftl_memcpy -.L1667: - ldrb r3, [r4] @ zero_extendqisi2 - ldr r6, .L1780+4 +.L1634: + ldrb r3, [r4, #36] @ zero_extendqisi2 cmp r3, #0 - bne .L1677 + bne .L1645 bl FlashLoadPhyInfoInRam - cbnz r0, .L1679 - ldr r3, [r6, #44] + cbnz r0, .L1647 + ldr r3, [r4, #48] ldrh r3, [r3, #16] lsrs r3, r3, #8 lsls r7, r3, #31 and r0, r3, #7 - strb r0, [r6, #2229] - bmi .L1679 + strb r0, [r4, #2233] + bmi .L1647 movs 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 -.L1679: - ldr r3, [r4, #44] - ldr r6, .L1780+4 +.L1647: + ldr r3, [r4, #48] ldrb r3, [r3, #26] @ zero_extendqisi2 - strb r3, [r4, #144] + strb r3, [r4, #152] bl FlashLoadPhyInfo cmp r0, #0 - beq .L1677 - ldr r3, [r6, #2256] - cbz r3, .L1682 + beq .L1645 + ldr r3, [r4, #2260] + cmp r3, #0 + beq .L1650 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 - b .L1776 -.L1781: - .align 2 -.L1780: - .word .LANCHOR4 - .word .LANCHOR0 - .word .LC97 - .word 1446522928 - .word .LANCHOR1 - .word .LANCHOR1+3292 - .word .LANCHOR0+48 - .word .LANCHOR1+472 -.L1682: - ldrb r0, [r6, #2229] @ zero_extendqisi2 - bl FlashSetInterfaceMode - ldrb r0, [r6, #2229] @ zero_extendqisi2 -.L1776: +.L1735: bl NandcSetMode bl FlashLoadPhyInfo cmp r0, #0 - beq .L1677 + beq .L1645 movs r0, #1 - ldr r6, .L1782 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode - ldr r3, [r4, #44] - ldr r0, .L1782+4 + ldr r3, [r4, #48] + ldr r0, .L1740+32 ldrh r1, [r3, #14] bl printk bl FlashLoadPhyInfoInRam adds r1, r0, #1 - beq .L1736 + beq .L1624 bl FlashDieInfoInit - ldr r3, [r6, #44] + ldr r3, [r4, #48] ldrb r0, [r3, #19] @ zero_extendqisi2 bl FlashGetReadRetryDefault - ldr r2, .L1782+8 - ldr r3, [r6, #44] - ldrh r2, [r2, #3270] + ldr r3, [r4, #48] + ldr r2, .L1740+36 ldrb r1, [r3, #9] @ zero_extendqisi2 + ldrh r2, [r2, #3270] addw r2, r2, #4095 cmp r1, r2, asr #12 - blt .L1684 + blt .L1652 ldrh r2, [r3, #14] adds r2, r2, #255 cmp r1, r2, asr #8 - bge .L1685 -.L1684: + bge .L1653 + b .L1741 +.L1742: + .align 2 +.L1740: + .word .LANCHOR4 + .word .LANCHOR0 + .word .LANCHOR0+1216 + .word 1446522928 + .word .LANCHOR1 + .word .LANCHOR1+3288 + .word .LANCHOR0+52 + .word .LANCHOR1+3412 + .word .LC98 + .word .LANCHOR2 + .word .LC97 +.L1741: +.L1652: ldrh r2, [r3, #14] bic r2, r2, #255 strh r2, [r3, #14] @ movhi -.L1685: - ldrb r3, [r4, #2229] @ zero_extendqisi2 +.L1653: + ldrb r3, [r4, #2233] @ zero_extendqisi2 tst r3, #6 - beq .L1686 + beq .L1654 bl FlashSavePhyInfo movs r0, #0 bl flash_enter_slc_mode + ldr r1, [r5, #1208] movs r0, #0 - ldr r1, [r8, #1200] bl FlashDdrParaScan movs r0, #0 bl flash_exit_slc_mode -.L1686: +.L1654: bl FlashSavePhyInfo -.L1677: - ldr r2, [r4, #44] - mov r9, #0 - str r9, [r8, #1192] - ldr r7, .L1782 - ldrb r3, [r2, #26] @ zero_extendqisi2 - ldrh r0, [r2, #10] - ldrb r10, [r2, #18] @ zero_extendqisi2 - strb r3, [r4, #144] - ldrh r3, [r2, #16] - ldr r6, .L1782+12 - ubfx r1, r3, #7, #1 - strb r1, [r4, #8] - ubfx r1, r3, #3, #1 - strb r1, [r8, #1229] - ubfx r1, r3, #4, #1 +.L1645: + ldr r7, [r4, #48] + mov r8, #0 + str r8, [r5, #1200] + 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, #1237] + ubfx r2, r3, #4, #1 ubfx r3, r3, #8, #3 - strb r1, [r4, #2240] - strb r3, [r4, #2229] - ldrb r1, [r2, #12] @ zero_extendqisi2 + strb r2, [r4, #2244] + strb r3, [r4, #2233] bl __aeabi_idiv mov r1, r0 - mov r0, r10 + ldrb r0, [r7, #18] @ zero_extendqisi2 bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr r3, [r4, #44] + ldr r3, [r4, #48] ldrh r2, [r3, #16] lsls r2, r2, #25 - bpl .L1688 + bpl .L1656 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, #1209] + ldrb r3, [r4, #1217] @ zero_extendqisi2 + strb r0, [r4, #84] + strb r3, [r4, #85] + ldrb r3, [r4, #1218] @ zero_extendqisi2 + strb r3, [r5, #1217] subs r3, r0, #1 cmp r3, #7 - bhi .L1689 - ldr r3, .L1782+16 - str r3, [r6, #1192] + bhi .L1657 + ldr r3, .L1743 + str r3, [r5, #1200] subs r3, r0, #5 cmp r3, #1 - bls .L1690 + bls .L1658 cmp r0, #8 - bne .L1691 -.L1690: + bne .L1659 +.L1658: + movs r3, #1 + str r3, [r4, #2308] +.L1659: cmp r0, #7 - mov r3, #1 - str r3, [r4, #2304] - beq .L1717 + ldr r3, .L1743+4 + beq .L1660 + sub r2, r3, #8 cmp r0, #8 - b .L1779 -.L1717: - ldr r3, .L1782+20 -.L1693: + it ne + movne r3, r2 +.L1660: subs r1, r3, #1 movs r2, #0 adds r3, r3, #31 -.L1694: - ldrsb r6, [r1, #1]! - cmp r6, #0 - it eq - addeq r2, r2, #1 - cmp r1, r3 - bne .L1694 +.L1662: + ldrsb r7, [r1, #1]! + cbnz r7, .L1661 + adds r2, r2, #1 +.L1661: + cmp r3, r1 + bne .L1662 cmp r2, #27 - bls .L1688 + bls .L1656 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L1688 -.L1689: - sub r3, r0, #17 - cmp r3, #2 - bhi .L1696 - ldr r3, .L1782+24 - cmp r0, #19 - str r3, [r6, #1192] - ite ne - movne r3, #7 - moveq r3, #15 - strb r3, [r6, #1209] - b .L1688 -.L1696: - cmp r0, #33 - beq .L1698 - sub r3, r0, #65 - cmp r3, #1 - bhi .L1699 -.L1698: - ldr r3, .L1782+28 - str r3, [r8, #1192] - movs r3, #4 - strb r3, [r4, #1209] - movs r3, #7 - strb r3, [r8, #1209] - b .L1688 -.L1699: - sub r3, r0, #67 - uxtb r3, r3 - cmp r3, #1 - bls .L1700 - sub r2, r0, #34 - cmp r2, #1 - bhi .L1701 -.L1700: - ldr r2, .L1782+28 - cmp r0, #35 - str r2, [r8, #1192] - beq .L1702 - cmp r0, #68 - beq .L1702 - ldr r2, .L1782+12 - movs r1, #7 - strb r1, [r2, #1209] - b .L1703 -.L1702: - movs r2, #17 - strb r2, [r8, #1209] -.L1703: - cmp r3, #1 - ite ls - movls r3, #4 - movhi r3, #5 - strb r3, [r4, #1209] - b .L1688 -.L1701: - cmp r0, #49 - bne .L1705 - ldr r3, .L1782+32 - str r3, [r6, #1192] - b .L1688 -.L1705: - cmp r0, #50 - ittt eq - streq r9, [r7, #2248] - ldreq r3, .L1782+36 - streq r3, [r6, #1192] -.L1688: - ldr r2, [r4, #2264] - ldr r3, .L1782 - cmp r2, r5 - bne .L1706 - ldrb r1, [r3, #144] @ zero_extendqisi2 - cbz r1, .L1706 - ldr r3, [r3, #44] +.L1656: + ldr r3, [r4, #2268] + cmp r3, r6 + bne .L1674 + ldrb r2, [r4, #152] @ zero_extendqisi2 + cbz r2, .L1674 + ldr r2, [r4, #48] movs r1, #0 - strb r1, [r3, #18] -.L1706: - ldrb r1, [r4, #2068] @ zero_extendqisi2 - ldr r3, .L1782 - cmp r1, #44 - bne .L1707 - ldrb r1, [r3, #2252] @ zero_extendqisi2 - cbz r1, .L1707 - cmp r2, r5 - bne .L1708 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbnz r3, .L1707 -.L1708: - movs r0, #1 + strb r1, [r2, #18] +.L1674: + ldrb r2, [r4, #2072] @ zero_extendqisi2 + cmp r2, #44 + bne .L1675 + ldrb r2, [r4, #2256] @ zero_extendqisi2 + cbz r2, .L1675 + cmp r3, r6 + bne .L1676 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbnz r3, .L1675 +.L1676: movs r3, #0 - strb r3, [r4, #2252] + movs r0, #1 + strb r3, [r4, #2256] bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode -.L1707: - ldrb r3, [r4, #2229] @ zero_extendqisi2 +.L1675: + ldrb r3, [r4, #2233] @ zero_extendqisi2 tst r3, #6 - beq .L1709 - ldr r2, .L1782 - ldrb r2, [r2, #2252] @ zero_extendqisi2 - cbnz r2, .L1710 + beq .L1677 + ldrb r2, [r4, #2256] @ zero_extendqisi2 + cbnz r2, .L1678 lsls r3, r3, #31 - bmi .L1709 -.L1710: + bmi .L1677 +.L1678: movs r0, #0 bl flash_enter_slc_mode + ldr r1, [r5, #1208] movs r0, #0 - ldr r1, [r8, #1200] bl FlashDdrParaScan movs r0, #0 bl flash_exit_slc_mode -.L1709: - ldr r3, [r4, #44] - movs r7, #16 - ldr r6, .L1782 +.L1677: + ldr r3, [r4, #48] + movs r6, #16 ldrb r0, [r3, #20] @ zero_extendqisi2 bl FlashBchSel - ldr r0, .L1782+40 + ldr r0, .L1743+8 bl FlashReadIdbDataRaw - ldr r0, .L1782+44 - strb r7, [r4, #1] + ldr r0, .L1743+12 + 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] - lsl r3, r2, r7 - orr r2, r3, r2, lsl #8 - ldrb r3, [r4, #2068] @ zero_extendqisi2 - orrs r3, r3, r2 - ldrb r2, [r4, #2071] @ zero_extendqisi2 - orr r3, r3, r2, lsl #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 + orrs 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 .L1712 + bne .L1679 lsls r3, r3, #1 - lsr r1, r8, #1 + lsrs r1, r7, #1 lsls r2, r2, #1 - strh r3, [r6, #138] @ movhi - strb r7, [r6, #1] + strb r6, [r4, #37] + strh r3, [r4, #146] @ movhi movs r3, #8 - strh r1, [r6, #130] @ movhi - strh r2, [r6, #136] @ movhi - strh r3, [r6, #142] @ movhi -.L1712: + strh r1, [r4, #138] @ movhi + strh r2, [r4, #144] @ movhi + strh r3, [r4, #150] @ movhi +.L1679: ldrb r0, [r5, #20] @ zero_extendqisi2 bl FlashBchSel bl ftl_flash_suspend movs r0, #0 - b .L1736 -.L1716: - mvn r0, #1 - b .L1736 -.L1691: - cmp r0, #7 -.L1779: - beq .L1717 - ldr r3, .L1782+48 - b .L1693 -.L1670: - strb r1, [r2, #1228] - b .L1669 -.L1736: - add sp, sp, #20 +.L1624: + add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1783: +.L1641: + cmp r2, #220 + bne .L1643 + mov r1, #4096 + b .L1734 +.L1643: + cmp r2, #211 + itttt eq + moveq r2, #4096 + strheq r2, [r3, #3426] @ movhi + moveq r2, #2 + strbeq r2, [r3, #3425] + b .L1642 +.L1650: + ldrb r0, [r4, #2233] @ zero_extendqisi2 + bl FlashSetInterfaceMode + ldrb r0, [r4, #2233] @ zero_extendqisi2 + b .L1735 +.L1657: + sub r3, r0, #17 + cmp r3, #2 + bhi .L1664 + ldr r3, .L1743+16 + cmp r0, #19 + str r3, [r5, #1200] + beq .L1665 +.L1739: + movs r3, #7 + b .L1737 +.L1665: + movs r3, #15 +.L1737: + strb r3, [r5, #1217] + b .L1656 +.L1664: + cmp r0, #33 + beq .L1666 + sub r3, r0, #65 + cmp r3, #1 + bhi .L1667 +.L1666: + ldr r3, .L1743+20 + str r3, [r5, #1200] + movs r3, #4 + strb r3, [r4, #85] + b .L1739 +.L1667: + sub r3, r0, #67 + uxtb r3, r3 + cmp r3, #1 + bls .L1668 + sub r2, r0, #34 + cmp r2, #1 + bhi .L1669 +.L1668: + ldr r2, .L1743+20 + cmp r0, #35 + str r2, [r5, #1200] + beq .L1670 + cmp r0, #68 + beq .L1670 + movs r2, #7 +.L1736: + cmp r3, #1 + strb r2, [r5, #1217] + ite ls + movls r3, #4 + movhi r3, #5 + strb r3, [r4, #85] + b .L1656 +.L1670: + movs r2, #17 + b .L1736 +.L1669: + cmp r0, #49 + bne .L1673 + ldr r3, .L1743+24 + str r3, [r5, #1200] + b .L1656 +.L1673: + cmp r0, #50 + ittt eq + ldreq r3, .L1743+28 + streq r8, [r4, #2252] + streq r3, [r5, #1200] + b .L1656 +.L1681: + mvn r0, #1 + b .L1624 +.L1637: + strb r0, [r5, #1236] + b .L1636 +.L1744: .align 2 -.L1782: - .word .LANCHOR0 - .word .LC98 - .word .LANCHOR2 - .word .LANCHOR4 +.L1743: .word HynixReadRetrial - .word .LANCHOR0+1238 + .word .LANCHOR0+1244 + .word .LANCHOR2+3476 + .word 150000 .word MicronReadRetrial .word ToshibaReadRetrial .word SamsungReadRetrial .word samsung_read_retrial - .word .LANCHOR2+3476 - .word 150000 - .word .LANCHOR0+1230 .fnend .size FlashInit, .-FlashInit .align 1 .global FlashPageProgMsbFFData + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashPageProgMsbFFData, %function FlashPageProgMsbFFData: .fnstart @@ -11267,749 +11616,742 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} + mov r6, r0 + ldr r5, .L1765 + mov r7, r1 mov r4, r2 - ldr r2, .L1805 - mov r8, r1 - mov r7, r0 - ldr r3, [r2, #44] - mov r5, r2 - ldrb r1, [r2, #144] @ zero_extendqisi2 - ldrb r3, [r3, #19] @ zero_extendqisi2 - cbz r1, .L1785 - ldr r2, [r2, #2248] - cbnz r2, .L1784 -.L1785: - subs r2, r3, #5 - cmp r2, #2 - bls .L1786 - cmp r3, #50 - beq .L1786 - cmp r3, #68 - beq .L1786 - cmp r3, #35 - beq .L1786 - cmp r3, #19 - bne .L1784 -.L1786: - ldr r9, .L1805+8 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L1746 + ldr r3, [r5, #2252] + cbnz r3, .L1745 +.L1746: + ldr r3, [r5, #48] + ldrb r2, [r3, #19] @ zero_extendqisi2 + subs r3, r2, #5 + uxtb r3, r3 + cmp r3, #30 + bhi .L1747 + ldr r1, .L1765+4 + lsr r3, r1, r3 + lsls r3, r3, #31 + bmi .L1748 +.L1752: + cmp r2, #68 + bne .L1745 +.L1748: + ldr r9, .L1765+8 movw r10, #65535 - ldr r6, .L1805+4 -.L1788: - ldr r3, [r5, #44] + ldr r8, .L1765+12 +.L1750: + ldr r3, [r5, #48] ldrh r3, [r3, #10] cmp r3, r4 - bls .L1784 + bhi .L1751 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1751: add r3, r9, r4, lsl #1 ldrh r3, [r3, #1220] cmp r3, r10 - bne .L1784 - movs r1, #255 + bne .L1745 mov r2, #32768 - ldr r0, [r6, #1212] + movs r1, #255 + ldr r0, [r8, #1220] bl ftl_memset - ldr r2, [r6, #1212] - add r1, r4, r8 + ldr r3, [r8, #1220] + adds r1, r4, r7 + mov r0, r6 adds r4, r4, #1 - mov r0, r7 - mov r3, r2 uxth r4, r4 + mov r2, r3 bl FlashProgPage - b .L1788 -.L1784: + b .L1750 +.L1747: + cmp r2, #50 + bne .L1752 + b .L1748 +.L1745: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L1806: +.L1766: .align 2 -.L1805: +.L1765: .word .LANCHOR0 - .word .LANCHOR4 + .word 1073758215 .word .LANCHOR2 + .word .LANCHOR4 .fnend .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .align 1 .global FlashReadSlc2KPages + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1857 + ldr r3, .L1824 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r7, #0 - ldrb r3, [r3, #481] @ zero_extendqisi2 - .pad #36 - sub sp, sp, #36 mov r4, r0 - str r1, [sp, #16] - str r2, [sp, #20] - str r3, [sp, #12] -.L1808: - ldr r3, [sp, #16] - cmp r7, r3 - beq .L1856 - ldr r3, [sp, #16] - add r2, sp, #28 + ldr r7, .L1824+4 + mov r8, #0 + .pad #28 + sub sp, sp, #28 + ldrb fp, [r3, #477] @ zero_extendqisi2 + str r1, [sp, #8] + str r2, [sp, #12] +.L1768: + ldr r3, [sp, #8] + cmp r8, r3 + bne .L1792 + movs r0, #0 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1792: + ldr r3, [sp, #8] + add r2, sp, #20 + ldr r1, [sp, #12] mov r0, r4 - ldr r1, [sp, #20] - subs r3, r3, r7 - ldr r8, .L1857+20 + sub r3, r3, r8 uxtb r3, r3 str r3, [sp] - add r3, sp, #24 - mov fp, r8 + add r3, sp, #16 bl LogAddr2PhyAddr - ldrb r2, [r8, #2230] @ zero_extendqisi2 - ldr r3, [sp, #24] - cmp r3, r2 - bcc .L1809 + ldrb r2, [r7, #2234] @ zero_extendqisi2 + ldr r3, [sp, #16] + cmp r2, r3 + bhi .L1769 mov r3, #-1 str r3, [r4] - b .L1810 -.L1809: - add r3, r3, r8 +.L1770: + add r8, r8, #1 + adds r4, r4, #36 + b .L1768 +.L1769: + add r3, r3, r7 mov r9, #0 - ldrb r6, [r3, #2232] @ zero_extendqisi2 - mov r0, r6 + ldrb r5, [r3, #2236] @ zero_extendqisi2 + mov r0, r5 bl NandcWaitFlashReady - mov r0, r6 + mov r0, r5 bl NandcFlashCs -.L1811: - ldr r1, [sp, #28] - mov r0, r6 +.L1771: + ldr r1, [sp, #20] + mov r0, r5 bl FlashReadCmd - mov r0, r6 + mov r0, r5 bl NandcWaitFlashReady ldr r3, [r4, #12] - mov r0, r6 + mov r2, fp movs r1, #0 + mov r0, r5 str r3, [sp] - ldr r2, [sp, #12] ldr r3, [r4, #8] bl NandcXferData - ldr r3, .L1857+4 - ldrb r3, [r3, #1228] @ zero_extendqisi2 - mov r5, r0 - cbnz r3, .L1812 -.L1815: - adds r3, r5, #1 - beq .L1813 - b .L1814 -.L1812: - mov r0, r6 - bl flash_read_ecc - cmp r0, #5 - bls .L1815 - mov r5, #256 - b .L1814 -.L1813: - cmp r9, #10 - beq .L1834 - add r9, r9, #1 - b .L1811 -.L1814: + ldr r3, .L1824+8 + mov r6, r0 + ldrb r3, [r3, #1236] @ zero_extendqisi2 + cmp r3, #0 + bne .L1772 +.L1775: + adds r0, r6, #1 + beq .L1773 +.L1774: cmp r9, #0 - it ne - movne r5, #256 - b .L1816 -.L1834: - mov r5, #256 -.L1816: + beq .L1777 +.L1776: + mov r6, #256 +.L1777: mov r9, #0 -.L1817: - ldr r3, [sp, #28] - mov r0, r6 - ldr r1, [fp, #4] +.L1778: + ldr r3, [r7, #40] + mov r0, r5 + ldr r1, [sp, #20] add r1, r1, r3 bl FlashReadCmd - mov r0, r6 + mov r0, r5 bl NandcWaitFlashReady ldr r3, [r4, #8] - cbz r3, .L1818 + cbz r3, .L1779 add r3, r3, #2048 -.L1818: +.L1779: ldr r2, [r4, #12] - cbz r2, .L1819 + cbz r2, .L1780 adds r2, r2, #8 -.L1819: +.L1780: str r2, [sp] - mov r0, r6 - ldr r2, [sp, #12] movs r1, #0 + mov r2, fp + mov r0, r5 bl NandcXferData - ldr r3, .L1857+4 - ldrb r2, [r3, #1228] @ zero_extendqisi2 + ldr r3, .L1824+8 mov r10, r0 - cbnz r2, .L1820 -.L1823: + ldrb r2, [r3, #1236] @ zero_extendqisi2 + cmp r2, #0 + bne .L1781 +.L1784: cmp r10, #-1 - beq .L1821 - b .L1822 -.L1820: - mov r0, r6 - bl flash_read_ecc - cmp r0, #5 - bls .L1823 - mov r10, #256 - b .L1822 -.L1821: - cmp r9, #10 - beq .L1838 - add r9, r9, #1 - b .L1817 -.L1822: + beq .L1782 +.L1783: cmp r9, #0 - it ne - movne r10, #256 - b .L1824 -.L1838: + beq .L1786 +.L1785: mov r10, #256 -.L1824: - mov r0, r6 +.L1786: + mov r0, r5 bl NandcFlashDeCs - ldrb r3, [r8, #2312] @ zero_extendqisi2 - cmp r5, r10 - add r3, r3, r3, lsl #1 + ldrb r3, [r7, #2316] @ zero_extendqisi2 + cmp r6, r10 it cc - movcc r5, r10 - cmp r5, r3, asr #2 - bls .L1825 - adds r0, r5, #1 - it ne - movne r5, #256 - str r5, [r4] - b .L1827 -.L1825: + movcc r6, r10 + add r3, r3, r3, lsl #1 + cmp r6, r3, asr #2 + bhi .L1787 movs r3, #0 +.L1823: str r3, [r4] -.L1827: ldr r3, [r4, #12] - cbz r3, .L1828 + cbz r3, .L1788 ldr r2, [r3, #12] adds r2, r2, #1 - bne .L1828 + bne .L1788 ldr r2, [r3, #8] adds r1, r2, #1 - bne .L1828 + bne .L1788 ldr r3, [r3] adds r3, r3, #1 it ne strne r2, [r4] -.L1828: +.L1788: ldr r3, [r4] adds r2, r3, #1 - bne .L1810 + bne .L1770 ldr r1, [r4, #4] - ldr r0, .L1857+8 - ldrb r2, [r8, #2312] @ zero_extendqisi2 + ldrb r2, [r7, #2316] @ zero_extendqisi2 + ldr r0, .L1824+12 bl printk ldr r1, [r4, #8] - cbz r1, .L1830 - ldr r0, .L1857+12 - movs r2, #4 + cbz r1, .L1790 movs r3, #8 - bl rknand_print_hex -.L1830: - ldr r1, [r4, #12] - cbz r1, .L1810 movs r2, #4 - ldr r0, .L1857+16 - mov r3, r2 + ldr r0, .L1824+16 bl rknand_print_hex -.L1810: - adds r7, r7, #1 - adds r4, r4, #36 - b .L1808 -.L1856: - movs r0, #0 - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1858: +.L1790: + ldr r1, [r4, #12] + cmp r1, #0 + beq .L1770 + movs r3, #4 + ldr r0, .L1824+20 + mov r2, r3 + bl rknand_print_hex + b .L1770 +.L1772: + mov r0, r5 + bl flash_read_ecc + cmp r0, #5 + bls .L1775 + mov r6, #256 + b .L1774 +.L1773: + cmp r9, #10 + beq .L1776 + add r9, r9, #1 + b .L1771 +.L1781: + mov r0, r5 + bl flash_read_ecc + cmp r0, #5 + bls .L1784 + mov r10, #256 + b .L1783 +.L1782: + cmp r9, #10 + beq .L1785 + add r9, r9, #1 + b .L1778 +.L1787: + mov r3, #256 + b .L1823 +.L1825: .align 2 -.L1857: +.L1824: .word .LANCHOR1 + .word .LANCHOR0 .word .LANCHOR4 .word .LC99 .word .LC100 .word .LC101 - .word .LANCHOR0 .fnend .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 1 .global FlashReadPages + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadPages, %function FlashReadPages: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1958 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 - ldrb r3, [r3, #481] @ zero_extendqisi2 - mov r10, r0 - ldr r5, .L1958+4 - str r1, [sp, #28] - str r3, [sp, #24] - ldrb r3, [r5, #8] @ zero_extendqisi2 - str r2, [sp, #16] - str r3, [sp, #32] - ldrb r3, [r5] @ zero_extendqisi2 - cbz r3, .L1902 - bl FlashReadSlc2KPages - b .L1953 -.L1902: + ldr r4, .L1917 + mov r9, r0 + str r1, [sp, #32] + ldrb r3, [r4, #36] @ zero_extendqisi2 + str r2, [sp, #20] + cbnz r3, .L1827 + ldr r2, .L1917+4 mov r8, r3 + ldr r10, .L1917+12 str r3, [sp, #12] -.L1860: + ldrb r2, [r2, #477] @ zero_extendqisi2 + str r2, [sp, #28] + ldrb r2, [r4, #44] @ zero_extendqisi2 + str r2, [sp, #36] +.L1828: ldr r3, [sp, #12] - ldr r2, [sp, #28] + ldr r2, [sp, #32] cmp r3, r2 - bcs .L1955 - ldr r3, [sp, #12] - mov r9, #36 + bcc .L1866 + movs r0, #0 + b .L1826 +.L1827: + bl FlashReadSlc2KPages +.L1826: + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1866: ldr r2, [sp, #12] - ldr r1, [sp, #16] - mul r9, r9, r3 - ldr r3, [sp, #28] + movs r3, #36 + ldr r1, [sp, #20] + muls r3, r2, r3 + add r7, r9, r3 + str r3, [sp, #16] + ldr r3, [r7, #4] + mov r0, r7 + str r3, [sp, #24] + ldr r3, [sp, #32] subs r3, r3, r2 add r2, sp, #44 - add r7, r10, r9 uxtb r3, r3 - ldr fp, [r7, #4] - mov r0, r7 str r3, [sp] add r3, sp, #40 bl LogAddr2PhyAddr - ldrb r2, [r5, #2230] @ zero_extendqisi2 - ldr r3, [sp, #40] + ldrb r2, [r4, #2234] @ zero_extendqisi2 mov r6, r0 - cmp r3, r2 - bcc .L1862 + ldr r3, [sp, #40] + cmp r2, r3 + bhi .L1830 + ldr r2, [sp, #16] mov r3, #-1 - str r3, [r10, r9] - b .L1863 -.L1862: - add r3, r3, r5 - ldrb r4, [r3, #2232] @ zero_extendqisi2 - ldr r3, .L1958+8 - mov r0, r4 - ldrb r3, [r3, #1229] @ zero_extendqisi2 + str r3, [r9, r2] +.L1831: + ldr r3, [sp, #12] + adds r3, r3, #1 + str r3, [sp, #12] + b .L1828 +.L1830: + add r3, r3, r4 + ldrb r5, [r3, #2236] @ zero_extendqisi2 + ldrb r3, [r10, #1237] @ zero_extendqisi2 + mov r0, r5 cmp r3, #0 it eq moveq r6, #0 bl NandcWaitFlashReady - ldr r3, .L1958+4 - ldr r3, [r3, #44] + ldr r3, [r4, #48] ldrb r2, [r3, #19] @ zero_extendqisi2 subs r3, r2, #1 cmp r3, #7 - bhi .L1865 + bhi .L1833 subs r2, r2, #7 - adds r1, r5, r4 + adds r1, r4, r5 cmp r2, #1 - ldr r2, .L1958+4 - ldrb r3, [r1, #1222] @ zero_extendqisi2 - add r2, r2, r4 + add r2, r4, r5 + ldrb r3, [r1, #1228] @ zero_extendqisi2 + ldrb r2, [r2, #2068] @ zero_extendqisi2 it ls - ldrbls r3, [r1, #1230] @ zero_extendqisi2 - ldrb r2, [r2, #2064] @ zero_extendqisi2 + ldrbls r3, [r1, #1236] @ zero_extendqisi2 cmp r2, r3 - beq .L1865 - mov r0, r4 - ldrb r1, [r5, #1211] @ zero_extendqisi2 - ldr r2, .L1958+12 + beq .L1833 + ldr r2, .L1917+8 + mov r0, r5 + ldrb r1, [r4, #1217] @ zero_extendqisi2 bl HynixSetRRPara -.L1865: - mov r0, r4 - and r3, fp, #-2147483648 - str r3, [sp, #20] +.L1833: + mov r0, r5 bl NandcFlashCs - ldr r3, [sp, #16] - cmp r3, #1 - beq .L1867 ldr r3, [sp, #20] - cbz r3, .L1868 -.L1867: - ldr r3, .L1958+4 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbz r3, .L1868 - mov r0, r4 + cmp r3, #1 + beq .L1835 + ldr r3, [sp, #24] + cmp r3, #0 + bge .L1836 +.L1835: + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L1836 + mov r0, r5 bl flash_enter_slc_mode -.L1870: - mov fp, #0 - b .L1869 -.L1868: - mov r0, r4 - bl flash_exit_slc_mode - b .L1870 -.L1956: - cmp r4, #255 - beq .L1903 -.L1871: - cbz r6, .L1873 - ldr r2, [r5, #4] - mov r0, r4 +.L1843: + ldr r1, [sp, #44] + adds r0, r1, #1 + bne .L1838 + cmp r5, #255 + beq .L1868 +.L1838: + cbz r6, .L1840 + ldr r2, [r4, #40] + mov r0, r5 add r2, r2, r1 bl FlashReadDpCmd -.L1874: - mov r0, r4 +.L1841: + mov r0, r5 bl NandcWaitFlashReady - cbz r6, .L1872 - mov r0, r4 + cbz r6, .L1839 ldr r1, [sp, #44] + mov r0, r5 bl FlashReadDpDataOutCmd -.L1872: +.L1839: ldr r3, [r7, #12] - mov r0, r4 movs r1, #0 - ldr r2, [sp, #24] + ldr r2, [sp, #28] + mov r0, r5 str r3, [sp] ldr r3, [r7, #8] bl NandcXferData - ldrb r3, [r5, #8] @ zero_extendqisi2 - mov ip, r0 - cbz r3, .L1905 + ldrb r3, [r4, #44] @ zero_extendqisi2 + mov fp, r0 + cbz r3, .L1842 cmp r0, #-1 - bne .L1905 + bne .L1842 + mov r3, #0 movs r6, #0 - strb fp, [r5, #8] -.L1869: - ldr r1, [sp, #44] - adds r0, r1, #1 - bne .L1871 - b .L1956 -.L1873: - mov r0, r4 + strb r3, [r4, #44] + b .L1843 +.L1836: + mov r0, r5 + bl flash_exit_slc_mode + b .L1843 +.L1840: + mov r0, r5 bl FlashReadCmd - b .L1874 -.L1903: + b .L1841 +.L1868: movs r6, #0 - b .L1872 -.L1905: - mov fp, ip - cbz r6, .L1876 - ldr r3, .L1958+4 - mov r0, r4 - str ip, [sp, #36] - ldr r1, [r3, #4] - ldr r3, [sp, #44] + b .L1839 +.L1842: + cbz r6, .L1844 + ldr r3, [r4, #40] + mov r0, r5 + ldr r1, [sp, #44] add r1, r1, r3 bl FlashReadDpDataOutCmd - add r3, r9, #36 - add r3, r3, r10 - mov r0, r4 + ldr r3, [sp, #16] movs r1, #0 + mov r0, r5 + adds r3, r3, #36 + add r3, r3, r9 ldr r2, [r3, #12] str r2, [sp] - ldr r2, [sp, #24] + ldr r2, [sp, #28] ldr r3, [r3, #8] bl NandcXferData cmp r0, #-1 - ldr ip, [sp, #36] + mov r8, r0 it eq moveq r6, #0 - mov r8, r0 -.L1876: - mov r0, r4 - str ip, [sp, #36] +.L1844: + mov r0, r5 bl NandcFlashDeCs - ldr ip, [sp, #36] - ldrb r3, [sp, #32] @ zero_extendqisi2 - cmp ip, #-1 - strb r3, [r5, #8] - bne .L1883 - ldrb r3, [r5, #2252] @ zero_extendqisi2 - cbnz r3, .L1878 -.L1882: - ldr r3, .L1958+8 - ldr r6, [r3, #1192] - cbnz r6, .L1879 - b .L1957 -.L1878: - ldr r3, [r5, #80] - mov r0, r4 + ldrb r3, [sp, #36] @ zero_extendqisi2 + cmp fp, #-1 + strb r3, [r4, #44] + bne .L1845 + ldrb r3, [r4, #2256] @ zero_extendqisi2 + cbnz r3, .L1846 +.L1850: + ldr r6, [r10, #1200] + cmp r6, #0 + bne .L1847 + ldr r3, [r7, #12] + mov r0, r5 + ldr r2, [r7, #8] + ldr r1, [sp, #44] + bl FlashReadRawPage + b .L1916 +.L1846: + ldr r3, [r4, #88] + mov r0, r5 ldr r1, [sp, #44] ldr r6, [r3, #304] movs r3, #1 str r3, [sp] - ldr r2, [r7, #8] ldr r3, [r7, #12] + ldr r2, [r7, #8] bl FlashDdrTunningRead cmp r0, #-1 mov fp, r0 - beq .L1881 - ldrb r3, [r5, #2312] @ zero_extendqisi2 + beq .L1849 + ldrb r3, [r4, #2316] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1907 -.L1881: + bls .L1869 +.L1849: ubfx r0, r6, #8, #8 bl NandcSetDdrPara cmp fp, #-1 - beq .L1882 - b .L1907 -.L1879: - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r7, #8] + beq .L1850 +.L1869: + movs r6, #0 +.L1845: + ldrb r3, [r4, #2316] @ zero_extendqisi2 + add r3, r3, r3, lsl #1 + cmp fp, r3, asr #2 + bls .L1858 + ldr r3, [r10, #1200] + cmp r3, #0 + bne .L1858 + mov fp, #256 + b .L1853 +.L1918: + .align 2 +.L1917: + .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR0+1220 + .word .LANCHOR4 +.L1847: ldr r3, [r7, #12] + mov r0, r5 + ldr r2, [r7, #8] + ldr r1, [sp, #44] blx r6 cmp r0, #-1 mov fp, r0 - bne .L1884 - ldr r3, [r5, #44] + bne .L1851 + ldr r3, [r4, #48] ldrb r3, [r3, #19] @ zero_extendqisi2 subs r3, r3, #1 cmp r3, #7 - bhi .L1885 - mov r0, r4 - ldrb r1, [r5, #1211] @ zero_extendqisi2 - ldr r2, .L1958+12 + bhi .L1852 movs r3, #0 + ldr r2, .L1919 + ldrb r1, [r4, #1217] @ zero_extendqisi2 + mov r0, r5 bl HynixSetRRPara -.L1885: - ldr r1, [sp, #44] - mov r0, r4 - ldr r2, [r7, #8] +.L1852: ldr r3, [r7, #12] + mov r0, r5 + ldr r2, [r7, #8] + ldr r1, [sp, #44] bl FlashReadRawPage - ldr r1, [r7, #4] - ldrb r2, [r5, #2312] @ zero_extendqisi2 + ldrb r2, [r4, #2316] @ zero_extendqisi2 mov fp, r0 - ldr r0, .L1958+16 - mov r3, fp + mov r3, r0 + ldr r1, [r7, #4] + ldr r0, .L1919+4 bl printk cmp fp, #-1 - bne .L1884 - ldrb r6, [r5, #144] @ zero_extendqisi2 - cbz r6, .L1886 - ldr r3, [sp, #16] - mov r0, r4 - cmp r3, #1 - beq .L1887 + bne .L1851 + ldrb r6, [r4, #152] @ zero_extendqisi2 + cbz r6, .L1853 ldr r3, [sp, #20] - cbz r3, .L1888 -.L1887: + mov r0, r5 + cmp r3, #1 + beq .L1854 + ldr r3, [sp, #24] + cmp r3, #0 + bge .L1855 +.L1854: bl flash_enter_slc_mode - b .L1889 -.L1888: - bl flash_exit_slc_mode -.L1889: - ldr r3, .L1958+8 - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r7, #8] - ldr r6, [r3, #1192] +.L1856: + ldr r6, [r10, #1200] + mov r0, r5 ldr r3, [r7, #12] + ldr r2, [r7, #8] + ldr r1, [sp, #44] blx r6 - movs r6, #0 +.L1916: + cmp r0, #-1 mov fp, r0 - b .L1890 -.L1957: - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r7, #8] - ldr r3, [r7, #12] - bl FlashReadRawPage - mov fp, r0 - b .L1890 -.L1907: - movs r6, #0 -.L1883: - ldrb r3, [r5, #2312] @ zero_extendqisi2 - add r3, r3, r3, lsl #1 - cmp fp, r3, asr #2 - bls .L1892 - ldr r3, .L1958+8 - ldr r3, [r3, #1192] - cbz r3, .L1909 -.L1890: - cmp fp, #-1 - beq .L1886 - b .L1892 -.L1909: - mov fp, #256 -.L1886: - str fp, [r10, r9] - b .L1893 -.L1959: - .align 2 -.L1958: - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR4 - .word .LANCHOR0+1214 - .word .LC102 -.L1884: - movs r6, #0 -.L1892: - cmp fp, #256 - beq .L1886 - movs r3, #0 - str r3, [r10, r9] -.L1893: - ldr r3, [r10, r9] + mov r6, #0 + bne .L1858 +.L1853: + ldr r3, [sp, #16] + str fp, [r9, r3] +.L1859: + ldr r3, [sp, #16] + ldr r3, [r9, r3] adds r2, r3, #1 - bne .L1895 + bne .L1861 ldr r1, [r7, #4] - ldr r0, .L1960 - ldrb r2, [r5, #2312] @ zero_extendqisi2 + ldrb r2, [r4, #2316] @ zero_extendqisi2 + ldr r0, .L1919+8 bl printk ldr r1, [r7, #12] - cbz r1, .L1895 - movs r2, #4 - ldr r0, .L1960+4 - mov r3, r2 + cbz r1, .L1861 + movs r3, #4 + ldr r0, .L1919+12 + mov r2, r3 bl rknand_print_hex -.L1895: - cbz r6, .L1897 - ldrb r3, [r5, #2312] @ zero_extendqisi2 +.L1861: + cbz r6, .L1863 + ldrb r3, [r4, #2316] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp r8, r3, asr #2 - bls .L1898 - ldr r3, .L1960+8 - ldr r3, [r3, #1192] + bls .L1864 + ldr r3, [r10, #1200] cmp r3, #0 it eq moveq r8, #256 -.L1898: - add r9, r9, #36 +.L1864: + ldr r3, [sp, #16] cmp r8, #-1 - str r8, [r10, r9] - beq .L1897 + add r3, r3, #36 + str r8, [r9, r3] + beq .L1863 cmp r8, #256 itt ne - movne r3, #0 - strne r3, [r10, r9] -.L1897: + movne r2, #0 + strne r2, [r9, r3] +.L1863: ldr r3, [sp, #12] add r3, r3, r6 str r3, [sp, #12] - ldr r3, [sp, #16] - cmp r3, #1 - beq .L1899 ldr r3, [sp, #20] - cbz r3, .L1863 -.L1899: - ldrb r3, [r5, #144] @ zero_extendqisi2 - cbz r3, .L1863 - mov r0, r4 + cmp r3, #1 + beq .L1865 + ldr r3, [sp, #24] + cmp r3, #0 + bge .L1831 +.L1865: + ldrb r3, [r4, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L1831 + mov r0, r5 bl flash_exit_slc_mode -.L1863: - ldr r3, [sp, #12] - adds r3, r3, #1 - str r3, [sp, #12] - b .L1860 -.L1955: - movs r0, #0 -.L1953: - add sp, sp, #52 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1961: + b .L1831 +.L1855: + bl flash_exit_slc_mode + b .L1856 +.L1851: + movs r6, #0 +.L1858: + cmp fp, #256 + beq .L1853 + ldr r2, [sp, #16] + movs r3, #0 + str r3, [r9, r2] + b .L1859 +.L1920: .align 2 -.L1960: +.L1919: + .word .LANCHOR0+1220 + .word .LC102 .word .LC99 .word .LC101 - .word .LANCHOR4 .fnend .size FlashReadPages, .-FlashReadPages .align 1 .global FlashLoadFactorBbt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashLoadFactorBbt, %function FlashLoadFactorBbt: .fnstart - @ args = 0, pretend = 0, frame = 48 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r1, #0 - ldr r7, .L1974 - .pad #52 - sub sp, sp, #52 - ldr r4, .L1974+4 movs r2, #16 - movs r5, #0 + ldr r7, .L1932 + .pad #60 + sub sp, sp, #60 + movs r1, #0 mov fp, #-1 - ldrh r3, [r7, #130] - add r0, r4, #1232 - ldrh r6, [r7, #128] + ldr r4, .L1932+4 + movs r5, #0 + ldrh r3, [r7, #136] mov r10, r5 + ldrh r6, [r7, #138] mov r8, r7 + addw r0, r4, #1238 mov r9, r4 smulbb r6, r6, r3 bl ftl_memset - ldr r3, [r4, #1216] + ldr r3, [r4, #1224] uxth r6, r6 - str r5, [sp, #20] - str r3, [sp, #24] -.L1963: - ldrb r3, [r8, #2230] @ zero_extendqisi2 + str r5, [sp, #28] + str r3, [sp, #32] + add r3, r6, fp + uxth r3, r3 + str r3, [sp, #8] +.L1922: + ldrb r3, [r8, #2234] @ zero_extendqisi2 uxtb r7, r5 cmp r3, r7 - bls .L1973 - mul ip, r6, r7 - subs r4, r6, #1 - sub r3, r6, #12 - uxth r4, r4 -.L1964: - cmp r4, r3 - ble .L1966 - add r2, ip, r4 - movs r1, #1 - add r0, sp, #12 - str r3, [sp, #4] + bhi .L1928 + mov r0, fp + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1928: + ldr r4, [sp, #8] + mul r3, r7, r6 + sub r2, r6, #12 + str r2, [sp, #4] +.L1923: + ldr r2, [sp, #4] + cmp r4, r2 + ble .L1925 + adds r2, r4, r3 + add r0, sp, #20 lsls r2, r2, #10 - str r2, [sp, #16] - mov r2, r1 - str ip, [sp] + str r3, [sp, #12] + str r2, [sp, #24] + movs r2, #1 + mov r1, r2 bl FlashReadPages - ldr r2, [sp, #12] - ldr ip, [sp] + ldr r2, [sp, #20] + ldr r3, [sp, #12] adds r2, r2, #1 - ldr r3, [sp, #4] - beq .L1965 - ldr r2, [r9, #1216] + beq .L1924 + ldr r2, [r9, #1224] ldrh r1, [r2] movw r2, #61664 cmp r1, r2 - bne .L1965 - mov r1, r7 - ldr r0, .L1974+8 - mov r2, r4 + bne .L1924 add r10, r10, #1 - bl printk - ldr r3, .L1974+4 + mov r1, r7 uxth r10, r10 - add r7, r3, r7, lsl #1 - strh r4, [r7, #1232] @ movhi - b .L1966 -.L1965: - subs r4, r4, #1 - uxth r4, r4 - b .L1964 -.L1966: - ldrb r3, [r8, #2230] @ zero_extendqisi2 + add r7, r9, r7, lsl #1 + ldr r0, .L1932+8 + mov r2, r4 + bl printk + strh r4, [r7, #1238] @ movhi +.L1925: + ldrb r3, [r8, #2234] @ zero_extendqisi2 adds r5, r5, #1 cmp r3, r10 it eq moveq fp, #0 - b .L1963 -.L1973: - mov r0, fp - add sp, sp, #52 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1975: + b .L1922 +.L1924: + subs r4, r4, #1 + uxth r4, r4 + b .L1923 +.L1933: .align 2 -.L1974: +.L1932: .word .LANCHOR0 .word .LANCHOR4 .word .LC103 @@ -12017,1320 +12359,1276 @@ .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 1 .global FlashProgSlc2KPages + .syntax unified .thumb .thumb_func + .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, .L2005 + ldr r3, .L1961 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r6, #0 - ldr r8, .L2005+24 - .pad #68 - sub sp, sp, #68 - ldrb r3, [r3, #481] @ zero_extendqisi2 - mov r7, r1 + mov r10, r1 + ldr r8, .L1961+20 + .pad #60 + sub sp, sp, #60 mov r9, r2 mov r4, r0 - mov r10, r0 - mov fp, r8 - str r3, [sp, #12] -.L1977: - cmp r6, r7 - beq .L2003 - subs r3, r7, r6 - add r2, sp, #20 - mov r0, r10 - mov r1, r9 + ldrb fp, [r3, #477] @ zero_extendqisi2 + mov r6, r0 + movs r7, #0 +.L1935: + cmp r7, r10 + bne .L1941 + ldr r8, .L1961+24 + mov r10, #0 + ldr fp, .L1961+28 +.L1942: + cmp r7, r10 + bne .L1949 + movs r0, #0 + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1941: + sub r3, r10, r7 + add r2, sp, #12 uxtb r3, r3 + mov r1, r9 + 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 - bcc .L1978 + ldrb r2, [r8, #2234] @ zero_extendqisi2 + ldr r3, [sp, #16] + cmp r2, r3 + bhi .L1936 mov r3, #-1 - str r3, [r10] - b .L1979 -.L1978: + str r3, [r6] +.L1937: + adds r7, r7, #1 + adds r6, r6, #36 + b .L1935 +.L1936: add r3, r3, r8 - ldrb r5, [r3, #2232] @ zero_extendqisi2 + 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 movs 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, [r8, #40] add r1, r1, r3 bl FlashProgFirstCmd - ldr r3, [r10, #8] - cbz r3, .L1980 + ldr r3, [r6, #8] + cbz r3, .L1938 add r3, r3, #2048 -.L1980: - ldr r2, [r10, #12] - cbz r2, .L1981 +.L1938: + ldr r2, [r6, #12] + cbz r2, .L1939 adds r2, r2, #8 -.L1981: +.L1939: str r2, [sp] movs r1, #1 - ldr r2, [sp, #12] + mov r2, fp mov r0, r5 bl NandcXferData - ldr r1, [fp, #4] + ldr r3, [r8, #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 lsls r2, r0, #31 mov r0, r5 itt mi movmi r3, #-1 - strmi r3, [r10] + strmi r3, [r6] bl NandcFlashDeCs -.L1979: - adds r6, r6, #1 - add r10, r10, #36 - b .L1977 -.L2003: - ldr r8, .L2005+28 - mov r10, #0 - mov fp, r8 -.L1984: - cmp r10, r7 - beq .L2004 + b .L1937 +.L1949: ldr r3, [r4] adds r3, r3, #1 - bne .L1985 + bne .L1943 ldr r1, [r4, #4] - ldr r0, .L2005+4 + ldr r0, .L1961+4 bl printk - b .L1986 -.L1985: - rsb r3, r10, r7 - mov r1, r9 - add r2, sp, #20 - mov r0, r4 - uxtb r3, r3 - str r3, [sp] - add r3, sp, #24 - mov r6, r4 - bl LogAddr2PhyAddr - ldr r2, [r8, #1220] - movs r3, #0 - str r3, [r2] - ldr r2, [r8, #1224] - str r3, [r2] - ldmia r6!, {r0, r1, r2, r3} - add r5, sp, #28 - stmia r5!, {r0, r1, r2, r3} - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - add r0, sp, #28 - ldr r3, [r6] - movs r1, #1 - mov r2, r9 - str r3, [r5] - ldr r3, [r8, #1220] - str r3, [sp, #36] - ldr r3, [r8, #1224] - str r3, [sp, #40] - bl FlashReadPages - ldr r5, [sp, #28] - adds r3, r5, #1 - bne .L1987 - ldr r0, .L2005+8 - ldr r1, [r4, #4] - bl printk - str r5, [r4] -.L1987: - ldr r5, [sp, #28] - cmp r5, #256 - bne .L1988 - ldr r0, .L2005+12 - ldr r1, [r4, #4] - bl printk - str r5, [r4] -.L1988: - ldr r3, [r4, #12] - cbz r3, .L1989 - ldr r2, [r3] - ldr r3, [fp, #1224] - ldr r3, [r3] - cmp r2, r3 - beq .L1989 - ldr r0, .L2005+16 - ldr r1, [r4, #4] - bl printk - mov r3, #-1 - str r3, [r4] -.L1989: - ldr r3, [r4, #8] - cbz r3, .L1986 - ldr r2, [r3] - ldr r3, [fp, #1220] - ldr r3, [r3] - cmp r2, r3 - beq .L1986 - ldr r0, .L2005+20 - ldr r1, [r4, #4] - bl printk - mov r3, #-1 - str r3, [r4] -.L1986: +.L1944: add r10, r10, #1 adds r4, r4, #36 - b .L1984 -.L2004: - movs r0, #0 - add sp, sp, #68 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2006: + b .L1942 +.L1943: + sub r3, r7, r10 + add r2, sp, #12 + uxtb r3, r3 + mov r1, r9 + mov r0, r4 + str r3, [sp] + add r3, sp, #16 + bl LogAddr2PhyAddr + ldr r2, [r8, #1228] + movs r3, #0 + mov r6, r4 + add r5, sp, #20 + str r3, [r2] + ldr r2, [r8, #1232] + str r3, [r2] + ldmia r6!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + ldmia r6!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + mov r2, r9 + ldr r3, [r6] + movs r1, #1 + add r0, sp, #20 + str r3, [r5] + ldr r3, [r8, #1228] + str r3, [sp, #28] + ldr r3, [r8, #1232] + str r3, [sp, #32] + bl FlashReadPages + ldr r5, [sp, #20] + adds r3, r5, #1 + bne .L1945 + ldr r1, [r4, #4] + ldr r0, .L1961+8 + bl printk + str r5, [r4] +.L1945: + ldr r5, [sp, #20] + cmp r5, #256 + bne .L1946 + ldr r1, [r4, #4] + ldr r0, .L1961+12 + bl printk + str r5, [r4] +.L1946: + ldr r3, [r4, #12] + cbz r3, .L1947 + ldr r2, [r3] + ldr r3, [r8, #1232] + ldr r3, [r3] + cmp r2, r3 + beq .L1947 + ldr r1, [r4, #4] + ldr r0, .L1961+16 + bl printk + mov r3, #-1 + str r3, [r4] +.L1947: + ldr r3, [r4, #8] + cmp r3, #0 + beq .L1944 + ldr r2, [r3] + ldr r3, [r8, #1228] + ldr r3, [r3] + cmp r2, r3 + beq .L1944 + ldr r1, [r4, #4] + mov r0, fp + bl printk + mov r3, #-1 + str r3, [r4] + b .L1944 +.L1962: .align 2 -.L2005: +.L1961: .word .LANCHOR1 .word .LC104 .word .LC105 .word .LC106 .word .LC107 - .word .LC108 .word .LANCHOR0 .word .LANCHOR4 + .word .LC108 .fnend .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 1 .global FtlLoadFactoryBbt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 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 movs r6, #0 - ldr r3, .L2018 - ldr r7, .L2018+4 - ldr r5, .L2018+8 + ldr r3, .L1973 + ldr r7, .L1973+4 + ldr r5, .L1973+8 ldr r2, [r3, #3316] - subw r8, r7, #2462 ldr r9, [r3, #3340] + subw r8, r7, #2466 mov r10, r8 - str r2, [r5, #1256] - str r9, [r5, #1260] -.L2008: - ldrh r3, [r8, #2342] + add fp, r5, #1256 + str r2, [r5, #1264] + str r9, [r5, #1268] +.L1964: + ldrh r3, [r8, #2346] cmp r6, r3 - bcs .L2017 - ldrh r4, [r8, #2386] - movw fp, #61664 + bcc .L1969 + movs r0, #0 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1969: + ldrh r4, [r8, #2388] movw r3, #65535 strh r3, [r7, #2]! @ movhi + movw r3, #61664 subs r4, r4, #1 uxth r4, r4 -.L2009: - ldrh r3, [r10, #2386] - sub r2, r3, #16 - cmp r4, r2 - ble .L2011 - mla r3, r3, r6, r4 - movs r1, #1 - ldr r0, .L2018+12 - mov r2, r1 - lsls r3, r3, #10 - str r3, [r5, #1252] +.L1965: + ldrh r2, [r10, #2388] + sub r1, r2, #16 + cmp r4, r1 + ble .L1967 + mla r2, r6, r2, r4 + str r3, [sp, #4] + mov r0, fp + lsls r2, r2, #10 + str r2, [r5, #1260] + movs r2, #1 + mov r1, r2 bl FlashReadPages - ldr r3, [r5, #1248] - adds r3, r3, #1 - beq .L2010 - ldrh r3, [r9] - cmp r3, fp - bne .L2010 + ldr r2, [r5, #1256] + ldr r3, [sp, #4] + adds r2, r2, #1 + beq .L1966 + ldrh r2, [r9] + cmp r2, r3 + bne .L1966 strh r4, [r7] @ movhi - b .L2011 -.L2010: +.L1967: + adds r6, r6, #1 + b .L1964 +.L1966: subs r4, r4, #1 uxth r4, r4 - b .L2009 -.L2011: - adds r6, r6, #1 - b .L2008 -.L2017: - movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2019: + b .L1965 +.L1974: .align 2 -.L2018: +.L1973: .word .LANCHOR2 - .word .LANCHOR0+2462 + .word .LANCHOR0+2466 .word .LANCHOR4 - .word .LANCHOR4+1248 .fnend .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 1 .global FtlGetLastWrittenPage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: .fnstart @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2031 + ldr r3, .L1986 cmp r1, #1 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} + lsl r8, r0, #10 .pad #104 sub sp, sp, #104 + mov r2, r1 + mov r7, r1 it eq - ldrheq r4, [r3, #2390] - mov r8, r1 + ldrheq r5, [r3, #2392] + mov r6, #0 it ne - ldrhne r4, [r3, #2388] - lsls r6, r0, #10 + ldrhne r5, [r3, #2390] add r3, sp, #40 - add r0, sp, #4 - subs r5, r4, #1 str r3, [sp, #16] movs r1, #1 - mov r2, r8 - uxth r5, r5 - movs r7, #0 - str r7, [sp, #12] - sxth r3, r5 - orrs r3, r3, r6 - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #40] - adds r3, r3, #1 - bne .L2023 -.L2024: - sxth r3, r7 - sxth r4, r5 - cmp r3, r4 - bgt .L2023 - add r4, r4, r3 add r0, sp, #4 - movs r1, #1 - mov r2, r8 - add r4, r4, r4, lsr #31 - asrs r4, r4, #1 - sxth r3, r4 - orrs r3, r3, r6 + str r6, [sp, #12] + subs r5, r5, #1 + sxth r5, r5 + orr r3, r5, r8 str r3, [sp, #8] bl FlashReadPages ldr r3, [sp, #40] adds r3, r3, #1 - bne .L2025 - ldr r3, [sp, #44] - adds r3, r3, #1 - bne .L2025 - ldr r3, [sp, #4] - adds r3, r3, #1 - beq .L2025 - subs r4, r4, #1 - uxth r5, r4 - b .L2024 -.L2025: - adds r3, r4, #1 - uxth r7, r3 - b .L2024 -.L2023: - sxth r0, r5 + bne .L1978 +.L1979: + cmp r6, r5 + ble .L1982 +.L1978: + mov r0, r5 add sp, sp, #104 @ sp needed pop {r4, r5, r6, r7, r8, pc} -.L2032: +.L1982: + adds r3, r6, r5 + mov r2, r7 + add r3, r3, r3, lsr #31 + movs r1, #1 + add r0, sp, #4 + asrs r4, r3, #1 + sxth r3, r4 + orr r3, r3, r8 + str r3, [sp, #8] + bl FlashReadPages + ldr r3, [sp, #40] + adds r3, r3, #1 + bne .L1980 + ldr r3, [sp, #44] + adds r3, r3, #1 + bne .L1980 + ldr r3, [sp, #4] + adds r3, r3, #1 + beq .L1980 + subs r4, r4, #1 + sxth r5, r4 + b .L1979 +.L1980: + adds r4, r4, #1 + sxth r6, r4 + b .L1979 +.L1987: .align 2 -.L2031: +.L1986: .word .LANCHOR0 .fnend .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 1 .global FtlLoadBbt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadBbt, %function FtlLoadBbt: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, lr} - .save {r3, r4, r5, r6, r7, r8, r9, lr} - ldr r8, .L2062+16 - ldr r4, .L2062 - ldr r5, .L2062+4 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + movw r10, #61649 + ldr r8, .L2016+16 + ldr r5, .L2016 ldr r3, [r8, #3316] ldr r7, [r8, #3340] - mov r9, r4 - str r3, [r4, #1256] - str r7, [r4, #1260] + ldr r4, .L2016+4 + add r9, r5, #1256 + str r3, [r5, #1264] + str r7, [r5, #1268] bl FtlBbtMemInit - ldrh r6, [r5, #2386] + ldrh r6, [r4, #2388] subs r6, r6, #1 uxth r6, r6 -.L2034: - ldrh r3, [r5, #2386] +.L1989: + ldrh r3, [r4, #2388] subs r3, r3, #48 cmp r6, r3 - ble .L2037 - movs r1, #1 - ldr r0, .L2062+8 + ble .L1992 lsls r3, r6, #10 - str r3, [r4, #1252] - mov r2, r1 + movs r2, #1 + mov r1, r2 + mov r0, r9 + str r3, [r5, #1260] bl FlashReadPages - ldr r3, [r4, #1248] + ldr r3, [r5, #1256] adds r3, r3, #1 - bne .L2035 - movs r1, #1 - ldr r3, [r9, #1252] - ldr r0, .L2062+8 - mov r2, r1 + bne .L1990 + ldr r3, [r5, #1260] + movs r2, #1 + mov r1, r2 + mov r0, r9 adds r3, r3, #1 - str r3, [r9, #1252] + str r3, [r5, #1260] bl FlashReadPages -.L2035: - ldr r3, [r4, #1248] +.L1990: + ldr r3, [r5, #1256] adds r3, r3, #1 - beq .L2036 - ldrh r2, [r7] - movw r3, #61649 - cmp r2, r3 - bne .L2036 - ldr r3, [r7, #4] - strh r6, [r5, #2452] @ movhi - str r3, [r5, #2460] - ldrh r3, [r7, #8] - strh r3, [r5, #2456] @ movhi - b .L2037 -.L2036: - subs r6, r6, #1 - uxth r6, r6 - b .L2034 -.L2037: - ldrh r3, [r5, #2452] - movw r2, #65535 - ldr r6, .L2062+4 - cmp r3, r2 - beq .L2051 - ldrh r3, [r6, #2456] - cmp r3, r2 - beq .L2041 - movs r1, #1 - ldr r0, .L2062+8 - lsls r3, r3, #10 - str r3, [r4, #1252] - mov r2, r1 - bl FlashReadPages - ldr r3, [r4, #1248] - adds r3, r3, #1 - beq .L2041 - ldrh r2, [r7] - movw r3, #61649 - cmp r2, r3 - bne .L2041 - ldr r3, [r7, #4] - ldr r2, [r6, #2460] - cmp r3, r2 - itttt hi - strhi r3, [r6, #2460] - ldrhhi r2, [r6, #2456] - ldrhhi r3, [r7, #8] - strhhi r2, [r6, #2452] @ movhi - it hi - strhhi r3, [r6, #2456] @ movhi -.L2041: - ldrh r0, [r5, #2452] - movs r1, #1 - bl FtlGetLastWrittenPage - movw r9, #61649 - uxth r6, r0 - adds r0, r0, #1 - strh r0, [r5, #2454] @ movhi -.L2043: - sxth r3, r6 - cmp r3, #0 - blt .L2048 - ldrh r2, [r5, #2452] - movs r1, #1 - ldr r0, .L2062+8 - orr r3, r3, r2, lsl #10 - str r3, [r4, #1252] - ldr r3, [r8, #3316] - mov r2, r1 - str r3, [r4, #1256] - bl FlashReadPages - ldr r3, [r4, #1248] - adds r3, r3, #1 - beq .L2044 + beq .L1991 ldrh r3, [r7] - cmp r3, r9 - bne .L2044 -.L2048: - ldrh r2, [r7, #10] - ldrh r0, [r7, #12] - ldr r3, .L2062+4 - strh r2, [r5, #2458] @ movhi + cmp r3, r10 + bne .L1991 + ldr r3, [r7, #4] + strh r6, [r4, #2456] @ movhi + str r3, [r4, #2464] + ldrh r3, [r7, #8] + strh r3, [r4, #2460] @ movhi +.L1992: + ldrh r3, [r4, #2456] movw r2, #65535 - cmp r0, r2 - bne .L2045 - b .L2046 -.L2044: + cmp r3, r2 + beq .L2006 + ldrh r3, [r4, #2460] + cmp r3, r2 + beq .L1996 + lsls r3, r3, #10 + movs r2, #1 + mov r1, r2 + ldr r0, .L2016+8 + str r3, [r5, #1260] + bl FlashReadPages + ldr r3, [r5, #1256] + adds r3, r3, #1 + beq .L1996 + ldrh r2, [r7] + movw r3, #61649 + cmp r2, r3 + bne .L1996 + ldr r3, [r7, #4] + ldr r2, [r4, #2464] + cmp r3, r2 + bls .L1996 + ldrh r2, [r4, #2460] + str r3, [r4, #2464] + ldrh r3, [r7, #8] + strh r2, [r4, #2456] @ movhi + strh r3, [r4, #2460] @ movhi +.L1996: + ldr r9, .L2016+8 + movs r1, #1 + ldrh r0, [r4, #2456] + movw r10, #61649 + bl FtlGetLastWrittenPage + sxth r6, r0 + adds r0, r0, #1 + strh r0, [r4, #2458] @ movhi +.L1998: + cmp r6, #0 + blt .L2003 + ldrh r3, [r4, #2456] + movs r2, #1 + mov r1, r2 + mov r0, r9 + orr r3, r6, r3, lsl #10 + str r3, [r5, #1260] + ldr r3, [r8, #3316] + str r3, [r5, #1264] + bl FlashReadPages + ldr r3, [r5, #1256] + adds r3, r3, #1 + beq .L1999 + ldrh r3, [r7] + cmp r3, r10 + bne .L1999 +.L2003: + ldrh r3, [r7, #10] + ldrh r0, [r7, #12] + strh r3, [r4, #2462] @ movhi + movw r3, #65535 + cmp r0, r3 + bne .L2000 +.L2001: + ldr r7, .L2016+12 + movs r6, #0 +.L2004: + ldrh r3, [r4, #2346] + cmp r6, r3 + bcc .L2005 + movs r0, #0 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1991: subs r6, r6, #1 uxth r6, r6 - b .L2043 -.L2045: - ldr r2, [r3, #2316] + b .L1989 +.L1999: + subs r6, r6, #1 + sxth r6, r6 + b .L1998 +.L2000: + ldr r2, [r4, #2320] cmp r0, r2 - beq .L2046 - ldrh r3, [r3, #2330] + beq .L2001 + ldrh r3, [r4, #2334] lsrs r3, r3, #2 cmp r2, r3 - bcs .L2046 + bcs .L2001 cmp r0, r3 - bcs .L2046 + bcs .L2001 bl FtlSysBlkNumInit -.L2046: - ldr r7, .L2062+12 - movs r6, #0 -.L2049: - ldrh r3, [r5, #2342] - cmp r6, r3 - bcs .L2061 + b .L2001 +.L2005: ldrh r2, [r8, #3404] - ldr r1, [r4, #1256] + ldr r1, [r5, #1264] ldr r0, [r7, #4]! lsls r2, r2, #2 mla r1, r6, r2, r1 - bl ftl_memcpy adds r6, r6, #1 - b .L2049 -.L2061: - movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L2051: + bl ftl_memcpy + b .L2004 +.L2006: mov r0, #-1 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L2063: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2017: .align 2 -.L2062: +.L2016: .word .LANCHOR4 .word .LANCHOR0 - .word .LANCHOR4+1248 - .word .LANCHOR0+2476 + .word .LANCHOR4+1256 + .word .LANCHOR0+2480 .word .LANCHOR2 .fnend .size FtlLoadBbt, .-FtlLoadBbt .align 1 .global FtlScanSysBlk + .syntax unified .thumb .thumb_func + .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 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r6, #0 - ldr r5, .L2149 - .pad #36 - sub sp, sp, #36 - ldr r4, .L2149+4 + ldr r5, .L2098 mov r1, r6 - ldr r2, [r5, #2416] + .pad #28 + sub sp, sp, #28 + ldr r4, .L2098+4 + ldr r2, [r5, #2420] + mov fp, r5 + strh r6, [r5, #2438] @ movhi ldr r0, [r4, #3396] - mov r9, r4 - strh r6, [r5, #2434] @ movhi - lsls r2, r2, #2 strh r6, [r4, #3452] @ movhi + lsls r2, r2, #2 bl ftl_memset - ldr r2, [r5, #2416] + ldr r2, [r5, #2420] mov r1, r6 ldr r0, [r4, #3368] lsls r2, r2, #1 bl ftl_memset - ldrh r2, [r5, #2408] + ldrh r2, [r5, #2412] mov r1, r6 ldr r0, [r4, #3380] lsls r2, r2, #2 bl ftl_memset - ldrh r2, [r5, #2408] - ldr r0, [r5, #2436] + ldrh r2, [r5, #2412] mov r1, r6 + ldr r0, [r5, #2440] + mov r6, r5 lsls r2, r2, #1 bl ftl_memset - add r0, r4, #540 - movs r1, #255 movs r2, #16 + movs r1, #255 + add r0, r4, #540 bl ftl_memset - ldrh r3, [r5, #2328] - str r5, [sp, #12] - mov r5, r4 + ldrh r3, [r5, #2332] str r3, [sp, #4] -.L2065: - ldr r6, .L2149 +.L2019: + ldrh r3, [r6, #2334] ldr r2, [sp, #4] - ldrh r3, [r6, #2330] - mov r0, r6 cmp r3, r2 - bls .L2107 - ldr r1, [r4, #1148] - mov r10, #36 - ldrh r8, [r6, #2320] + bls .L2060 + ldr r2, [r4, #1148] movs r7, #0 - ldr r2, [r4, #3304] - str r1, [sp, #8] + ldrh r8, [r6, #2324] + mov r10, #36 + ldr r9, [r4, #3304] + str r2, [sp, #8] ldr r3, [r4, #1144] - ldrh r1, [r6, #2400] + ldrh r2, [r6, #2402] str r7, [sp] - str r1, [sp, #16] - addw r1, r6, #2348 - str r1, [sp, #20] -.L2108: - uxth r1, r7 - cmp r1, r8 - bcs .L2144 - str r3, [sp, #28] - ldr r3, [sp, #20] + b .L2061 +.L2022: + str r3, [sp, #16] + ldr r3, .L2098+8 ldr r1, [sp, #4] - str r2, [sp, #24] + str r2, [sp, #20] ldrb r0, [r3, r7] @ zero_extendqisi2 bl V2P_block - mov fp, r0 + str r0, [sp, #12] bl FtlBbmIsBadBlock - ldr r2, [sp, #24] - ldr r3, [sp, #28] - cbnz r0, .L2066 + ldr r3, [sp, #16] + ldr r2, [sp, #20] + cbnz r0, .L2020 ldr r1, [sp] - ldr r6, [sp] - mla r0, r10, r1, r2 - lsl r1, fp, #10 + mla r0, r10, r1, r9 + ldr r1, [sp, #12] + lsls r1, r1, #10 + str r3, [r0, #8] str r1, [r0, #4] - ldr r1, [sp, #16] - muls r1, r6, r1 - ldr r6, [sp, #8] + ldr r1, [sp] + muls r1, r2, r1 it mi addmi r1, r1, #3 - bic r1, r1, #3 - str r3, [r0, #8] - add r1, r1, r6 + bic ip, r1, #3 + ldr r1, [sp, #8] + add r1, r1, ip str r1, [r0, #12] ldr r1, [sp] adds r1, r1, #1 uxth r1, r1 str r1, [sp] -.L2066: +.L2020: adds r7, r7, #1 - b .L2108 -.L2144: +.L2061: + uxth r1, r7 + cmp r8, r1 + bhi .L2022 ldr r3, [sp] - cmp r3, #0 - beq .L2070 - mov r1, r3 - ldr r0, [r4, #3304] + cbnz r3, .L2023 +.L2059: + ldr r3, [sp, #4] + adds r3, r3, #1 + uxth r3, r3 + str r3, [sp, #4] + b .L2019 +.L2023: movs r2, #1 - ldr r8, .L2149 + ldr r1, [sp] + mov r0, r9 bl FlashReadPages movs r3, #0 +.L2096: str r3, [sp, #8] -.L2071: - ldrh r3, [sp, #8] ldr r2, [sp] - cmp r3, r2 - bcs .L2070 + ldrh r3, [sp, #8] + cmp r2, r3 + bls .L2059 ldr r3, [sp, #8] - mov r10, #36 - mul r10, r10, r3 + movs r2, #36 + mul r9, r2, r3 ldr r3, [r4, #3304] - add r2, r3, r10 - ldr r3, [r3, r10] - ldr r6, [r2, #4] + add r2, r3, r9 + ldr r3, [r3, r9] + ldr r7, [r2, #4] + ldr r8, [r2, #12] adds r3, r3, #1 - ldr r7, [r2, #12] - ubfx r6, r6, #10, #16 - bne .L2073 - mov fp, #16 - movw r3, #65535 -.L2072: + ubfx r7, r7, #10, #16 + bne .L2027 + mov r10, #16 +.L2029: ldr r0, [r4, #3304] - movs r1, #1 - str r3, [sp, #16] - add r0, r0, r10 - ldr r2, [r0, #4] - adds r2, r2, #1 - str r2, [r0, #4] - mov r2, r1 - bl FlashReadPages - ldrh r2, [r7] - ldr r3, [sp, #16] - cmp r2, r3 - bne .L2074 - ldr r3, [r9, #3304] - mov r2, #-1 - str r2, [r3, r10] - b .L2073 -.L2074: - ldr r2, [r5, #3304] - ldr r2, [r2, r10] - adds r2, r2, #1 - bne .L2073 - add fp, fp, #-1 - uxth fp, fp - cmp fp, #0 - bne .L2072 -.L2073: - ldr r3, [r5, #3304] - ldr r3, [r3, r10] + movs r2, #1 + mov r1, r2 + add r0, r0, r9 + ldr r3, [r0, #4] adds r3, r3, #1 - beq .L2076 - ldr r2, [r5, #508] - ldr r3, [r7, #4] + str r3, [r0, #4] + bl FlashReadPages + ldrh r3, [r8] + movw r2, #65535 + cmp r3, r2 + ldr r3, [r4, #3304] + bne .L2026 + mov r2, #-1 + str r2, [r3, r9] + ldr r3, [r4, #3304] + ldr r3, [r3, r9] + cmp r3, r2 + beq .L2028 +.L2027: + ldr r2, [r4, #508] + ldr r3, [r8, #4] adds r1, r2, #1 - beq .L2077 + beq .L2030 cmp r2, r3 - bhi .L2078 -.L2077: + bhi .L2031 +.L2030: adds r2, r3, #1 itt ne addne r2, r3, #1 - strne r2, [r9, #508] -.L2078: - ldrh r2, [r7] + strne r2, [r4, #508] +.L2031: + ldrh r2, [r8] movw r1, #61604 cmp r2, r1 - beq .L2080 - bhi .L2081 + beq .L2033 + bhi .L2034 movw r3, #61574 cmp r2, r3 - bne .L2079 - ldr r3, [sp, #12] - ldr r2, [sp, #12] - ldrh r10, [r3, #2408] - ldrh r0, [r2, #2434] - ldr r2, [r9, #3380] - add lr, r10, #-1 - uxth r3, lr - rsb lr, r0, lr - str r2, [sp, #16] - b .L2094 -.L2081: + beq .L2035 +.L2032: + ldr r3, [sp, #8] + adds r3, r3, #1 + b .L2096 +.L2026: + ldr r3, [r3, r9] + adds r3, r3, #1 + bne .L2027 + add r10, r10, #-1 + uxth r10, r10 + cmp r10, #0 + bne .L2029 +.L2028: + ldrb r1, [r6, #152] @ zero_extendqisi2 + cbnz r1, .L2097 +.L2057: + mov r0, r7 + bl FtlFreeSysBlkQueueIn + b .L2032 +.L2034: movw r3, #61634 cmp r2, r3 - beq .L2083 + beq .L2036 movw r3, #65535 cmp r2, r3 - bne .L2079 - mov r0, r6 - b .L2143 -.L2083: - ldr r3, [sp, #12] + bne .L2032 +.L2097: + movs r1, #0 + b .L2057 +.L2036: + ldr r1, [r5, #2420] ldrh r0, [r4, #3452] - ldr r2, [r4, #3396] - ldr r1, [r3, #2416] - str r2, [sp, #16] - uxth lr, r1 - add r3, lr, #-1 - rsb lr, r0, lr - add lr, lr, #-1 - uxth r3, r3 - sxth lr, lr -.L2085: - sxth ip, r3 - cmp ip, lr - ble .L2145 - ldr r2, [r7, #4] - lsl fp, ip, #2 - mov r10, r2 - ldr r2, [sp, #16] - ldr r2, [r2, ip, lsl #2] - cmp r10, r2 - bls .L2086 - ldr r2, [sp, #16] - ldr r2, [r2] - cbnz r2, .L2087 - cmp r0, r1 + ldr r9, [r4, #3396] + uxth ip, r1 + add r3, ip, #-1 + sub ip, ip, r0 + add ip, ip, #-1 + sxth r3, r3 + sxth ip, ip +.L2038: + cmp r3, ip + bgt .L2044 + cmp r3, #0 + bge .L2074 + b .L2032 +.L2044: + ldr r2, [r8, #4] + lsl r10, r3, #2 + mov lr, r2 + ldr r2, [r9, r3, lsl #2] + cmp lr, r2 + bls .L2039 + ldr r2, [r9] + cbnz r2, .L2040 + cmp r1, r0 itt ne addne r0, r0, #1 - strhne r0, [r9, #3452] @ movhi -.L2087: - movs r1, #0 - uxth lr, r3 -.L2088: - uxth r2, r1 - cmp r2, lr - bcs .L2146 - ldr r0, [r5, #3396] - sxth r2, r2 - adds r1, r1, #1 - add r10, r0, r2, lsl #2 - ldr r10, [r10, #4] - str r10, [r0, r2, lsl #2] - ldr r0, [r5, #3368] - add r10, r0, r2, lsl #1 - ldrh r10, [r10, #2] - strh r10, [r0, r2, lsl #1] @ movhi - b .L2088 -.L2146: - ldr r1, [r7, #4] + strhne r0, [r4, #3452] @ movhi +.L2040: + uxth ip, r3 + movs r2, #0 +.L2041: + uxth r0, r2 + sxth r1, r2 + cmp r0, ip + bcc .L2042 ldr r2, [r4, #3396] - str r1, [r2, fp] - sxth r1, r3 + cmp r3, #0 + ldr r1, [r8, #4] + str r1, [r2, r10] ldr r2, [r4, #3368] - cmp r1, #0 - strh r6, [r2, ip, lsl #1] @ movhi - bge .L2090 - b .L2079 -.L2086: - subs r3, r3, #1 - uxth r3, r3 - b .L2085 -.L2145: - cmp ip, #0 - bge .L2121 - b .L2079 -.L2090: - ldrh r0, [r5, #3452] - ldr r2, [r8, #2416] + strh r7, [r2, r3, lsl #1] @ movhi + blt .L2032 + ldrh r0, [r4, #3452] + ldr r2, [r5, #2420] subs r2, r2, r0 subs r2, r2, #1 sxth r2, r2 - cmp r1, r2 - bgt .L2079 -.L2121: + cmp r3, r2 + bgt .L2032 +.L2074: ldr r2, [r4, #3396] - sxth r3, r3 - ldr r1, [r7, #4] adds r0, r0, #1 + ldr r1, [r8, #4] strh r0, [r4, #3452] @ movhi str r1, [r2, r3, lsl #2] ldr r2, [r4, #3368] - b .L2141 -.L2100: - ldr r1, [sp, #16] - lsl fp, ip, #2 - ldr r2, [r7, #4] - ldr r1, [r1, ip, lsl #2] - cmp r2, r1 - bhi .L2147 - subs r3, r3, #1 - uxth r3, r3 .L2094: - sxth ip, r3 - cmp ip, lr - bgt .L2100 - b .L2099 -.L2150: + strh r7, [r2, r3, lsl #1] @ movhi + b .L2032 +.L2042: + ldr r0, [r4, #3396] + adds r2, r2, #1 + add lr, r0, r1, lsl #2 + ldr lr, [lr, #4] + str lr, [r0, r1, lsl #2] + ldr r0, [r4, #3368] + add lr, r0, r1, lsl #1 + ldrh lr, [lr, #2] + strh lr, [r0, r1, lsl #1] @ movhi + b .L2041 +.L2039: + subs r3, r3, #1 + sxth r3, r3 + b .L2038 +.L2099: .align 2 -.L2149: +.L2098: .word .LANCHOR0 .word .LANCHOR2 -.L2147: - ldr r2, [sp, #16] - ldr r2, [r2] - cbnz r2, .L2096 - cmp r0, r10 + .word .LANCHOR0+2350 +.L2035: + ldrh lr, [r5, #2412] + ldrh r0, [r5, #2438] + ldr r9, [r4, #3380] + add ip, lr, #-1 + sxth r3, ip + sub ip, ip, r0 +.L2047: + cmp r3, ip + ble .L2052 + ldr r2, [r8, #4] + lsl r10, r3, #2 + ldr r1, [r9, r3, lsl #2] + cmp r2, r1 + bls .L2048 + ldr r2, [r9] + cbnz r2, .L2049 + cmp lr, r0 itt ne addne r0, r0, #1 - strhne r0, [r8, #2434] @ movhi -.L2096: - movs r1, #0 - uxth lr, r3 -.L2097: - uxth r2, r1 - cmp r2, lr - bcs .L2148 - ldr r0, [r4, #3380] - sxth r2, r2 - adds r1, r1, #1 - add r10, r0, r2, lsl #2 - ldr r10, [r10, #4] - str r10, [r0, r2, lsl #2] - ldr r0, [r8, #2436] - add r10, r0, r2, lsl #1 - ldrh r10, [r10, #2] - strh r10, [r0, r2, lsl #1] @ movhi - b .L2097 -.L2148: - ldr r2, [r5, #3380] - ldr r1, [r7, #4] - str r1, [r2, fp] - ldr r2, .L2151 - ldr r2, [r2, #2436] - strh r6, [r2, ip, lsl #1] @ movhi -.L2099: - sxth r3, r3 + strhne r0, [r6, #2438] @ movhi +.L2049: + uxth ip, r3 + movs r2, #0 +.L2050: + uxth r0, r2 + sxth r1, r2 + cmp r0, ip + bcc .L2051 + ldr r2, [r4, #3380] + ldr r1, [r8, #4] + str r1, [r2, r10] + ldr r2, [r6, #2440] + strh r7, [r2, r3, lsl #1] @ movhi +.L2052: cmp r3, #0 - blt .L2079 - ldrh r2, [r8, #2408] - ldrh r1, [r8, #2434] + blt .L2032 + ldrh r2, [r6, #2412] + ldrh r1, [r6, #2438] subs r2, r2, #1 subs r2, r2, r1 sxth r2, r2 cmp r3, r2 - bgt .L2079 + bgt .L2032 adds r1, r1, #1 - ldr r2, [r9, #3380] - strh r1, [r8, #2434] @ movhi - ldr r1, [r7, #4] + ldr r2, [r4, #3380] + strh r1, [r6, #2438] @ movhi + ldr r1, [r8, #4] str r1, [r2, r3, lsl #2] - ldr r2, [r8, #2436] -.L2141: - strh r6, [r2, r3, lsl #1] @ movhi - b .L2079 -.L2080: - ldrh r1, [r9, #540] + ldr r2, [r6, #2440] + b .L2094 +.L2051: + ldr r0, [r4, #3380] + adds r2, r2, #1 + add lr, r0, r1, lsl #2 + ldr lr, [lr, #4] + str lr, [r0, r1, lsl #2] + ldr r0, [r6, #2440] + add lr, r0, r1, lsl #1 + ldrh lr, [lr, #2] + strh lr, [r0, r1, lsl #1] @ movhi + b .L2050 +.L2048: + subs r3, r3, #1 + sxth r3, r3 + b .L2047 +.L2033: + ldrh r1, [r4, #540] movw r2, #65535 cmp r1, r2 - bne .L2101 - strh r6, [r5, #540] @ movhi - b .L2142 -.L2101: - ldrh r0, [r5, #544] + bne .L2054 + strh r7, [r4, #540] @ movhi +.L2095: + str r3, [r4, #548] + b .L2032 +.L2054: + ldrh r0, [r4, #544] cmp r0, r2 - beq .L2102 + beq .L2055 movs r1, #1 bl FtlFreeSysBlkQueueIn -.L2102: - ldr r2, [r9, #548] - ldr r3, [r7, #4] +.L2055: + ldr r2, [r4, #548] + ldr r3, [r8, #4] cmp r2, r3 - bcs .L2103 - ldrh r3, [r5, #540] - strh r6, [r5, #540] @ movhi - strh r3, [r5, #544] @ movhi - ldr r3, [r7, #4] -.L2142: - str r3, [r5, #548] - b .L2079 -.L2103: - strh r6, [r5, #544] @ movhi - b .L2079 -.L2076: - ldrb r1, [r8, #144] @ zero_extendqisi2 - mov r0, r6 - cbz r1, .L2104 -.L2143: - movs r1, #0 -.L2104: - bl FtlFreeSysBlkQueueIn -.L2079: - ldr r3, [sp, #8] - adds r3, r3, #1 - str r3, [sp, #8] - b .L2071 -.L2070: - ldr r6, [sp, #4] - adds r6, r6, #1 - uxth r3, r6 - str r3, [sp, #4] - b .L2065 -.L2107: - ldr r3, .L2151+4 - ldr r5, [r3, #3368] - ldrh r2, [r5] - cbz r2, .L2109 -.L2112: - ldr r5, [r0, #2436] - ldr r3, .L2151 - ldrh r2, [r5] - cbz r2, .L2110 - b .L2133 -.L2109: - ldrh r3, [r3, #3452] - cmp r3, #0 - beq .L2112 - ldr r6, [r6, #2416] -.L2113: - uxth r3, r2 - sxth r1, r3 - cmp r1, r6 - bcs .L2112 - ldrh r7, [r5, r1, lsl #1] - adds r2, r2, #1 - cmp r7, #0 - beq .L2113 - mov lr, #0 -.L2114: - ldr r5, [r0, #2416] - sxth r2, r3 - cmp r2, r5 - bcs .L2112 - ldr r5, [r4, #3368] - subs r6, r2, r1 - adds r3, r3, #1 - ldrh r7, [r5, r2, lsl #1] - uxth r3, r3 - strh r7, [r5, r6, lsl #1] @ movhi - ldr r5, [r4, #3396] - ldr r7, [r5, r2, lsl #2] - str r7, [r5, r6, lsl #2] - ldr r5, [r4, #3368] - strh lr, [r5, r2, lsl #1] @ movhi - b .L2114 -.L2110: - ldrh r1, [r3, #2434] - cbz r1, .L2133 - ldrh r6, [r3, #2408] -.L2117: - uxth r3, r2 - sxth r1, r3 - cmp r1, r6 - bge .L2133 - ldrh r7, [r5, r1, lsl #1] - adds r2, r2, #1 - cmp r7, #0 - beq .L2117 - ldr r5, .L2151 - mov ip, #0 -.L2118: - ldrh r6, [r0, #2408] - sxth r2, r3 - cmp r2, r6 - bge .L2133 - ldr r6, [r5, #2436] - rsb lr, r1, r2 - adds r3, r3, #1 - ldrh r7, [r6, r2, lsl #1] - uxth r3, r3 - strh r7, [r6, lr, lsl #1] @ movhi - ldr r6, [r4, #3380] - ldr r7, [r6, r2, lsl #2] - str r7, [r6, lr, lsl #2] - ldr r6, [r5, #2436] - strh ip, [r6, r2, lsl #1] @ movhi - b .L2118 -.L2133: + bcs .L2056 + ldrh r3, [r4, #540] + strh r7, [r4, #540] @ movhi + strh r3, [r4, #544] @ movhi + ldr r3, [r8, #4] + b .L2095 +.L2056: + strh r7, [r4, #544] @ movhi + b .L2032 +.L2060: + ldr r1, [r4, #3368] + ldrh r3, [r1] + cbz r3, .L2062 +.L2065: + ldr r1, [r5, #2440] + ldrh r2, [r1] + cbz r2, .L2063 +.L2085: movs r0, #0 - add sp, sp, #36 + add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2152: - .align 2 -.L2151: - .word .LANCHOR0 - .word .LANCHOR2 +.L2062: + ldrh r2, [r4, #3452] + cmp r2, #0 + beq .L2065 + ldr r0, [r6, #2420] +.L2066: + sxth r2, r3 + cmp r2, r0 + bcs .L2065 + ldrh r6, [r1, r2, lsl #1] + adds r3, r3, #1 + cmp r6, #0 + beq .L2066 + mov r3, r2 + movs r7, #0 +.L2067: + ldr r1, [fp, #2420] + cmp r3, r1 + bcs .L2065 + ldr r1, [r4, #3368] + subs r0, r3, r2 + ldrh r6, [r1, r3, lsl #1] + strh r6, [r1, r0, lsl #1] @ movhi + ldr r1, [r4, #3396] + ldr r6, [r1, r3, lsl #2] + str r6, [r1, r0, lsl #2] + ldr r1, [r4, #3368] + strh r7, [r1, r3, lsl #1] @ movhi + adds r3, r3, #1 + sxth r3, r3 + b .L2067 +.L2063: + ldrh r3, [r5, #2438] + cmp r3, #0 + beq .L2085 + ldrh r0, [r5, #2412] +.L2070: + sxth r3, r2 + cmp r3, r0 + mov r5, r3 + bge .L2085 + ldrh r6, [r1, r3, lsl #1] + adds r2, r2, #1 + cmp r6, #0 + beq .L2070 + movs r0, #0 +.L2071: + ldrh r2, [fp, #2412] + cmp r3, r2 + bge .L2085 + ldr r2, [fp, #2440] + subs r1, r3, r5 + ldrh r6, [r2, r3, lsl #1] + strh r6, [r2, r1, lsl #1] @ movhi + ldr r2, [r4, #3380] + ldr r6, [r2, r3, lsl #2] + str r6, [r2, r1, lsl #2] + ldr r2, [fp, #2440] + strh r0, [r2, r3, lsl #1] @ movhi + adds r3, r3, #1 + sxth r3, r3 + b .L2071 .fnend .size FtlScanSysBlk, .-FtlScanSysBlk .align 1 .global FtlLoadSysInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadSysInfo, %function FtlLoadSysInfo: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r1, #0 - ldr r4, .L2181 - .pad #44 - sub sp, sp, #44 - ldr r7, .L2181+4 - ldr r5, .L2181+8 + ldr r4, .L2128 + .pad #36 + sub sp, sp, #36 + ldr r5, .L2128+4 ldr r3, [r4, #3316] - ldrh r2, [r7, #2328] - ldr r0, [r4, #296] - str r3, [r5, #1256] + ldr r6, .L2128+8 + ldrh r2, [r5, #2332] + ldr r0, [r4, #300] + str r3, [r6, #1264] ldr r3, [r4, #3340] lsls r2, r2, #1 - str r3, [r5, #1260] + str r3, [r6, #1268] bl ftl_memset ldrh r0, [r4, #540] movw r3, #65535 cmp r0, r3 - bne .L2154 -.L2165: + bne .L2101 +.L2112: mov r0, #-1 - b .L2155 -.L2154: +.L2100: + add sp, sp, #36 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2101: movs r1, #1 - mov r8, r5 + ldr fp, .L2128+36 bl FtlGetLastWrittenPage - ldrh r10, [r4, #540] - uxth r6, r0 + ldrsh r9, [r4, #540] + add r10, r6, #1256 + sxth r7, r0 adds r0, r0, #1 strh r0, [r4, #542] @ movhi -.L2156: - sxth r3, r6 - cmp r3, #0 - blt .L2164 - sxth fp, r10 - movs r1, #1 - ldr r0, .L2181+12 - orr r3, r3, fp, lsl #10 - str r3, [r5, #1252] +.L2103: + cmp r7, #0 + blt .L2111 + orr r3, r7, r9, lsl #10 + movs r2, #1 + mov r1, r2 + str r3, [r6, #1260] + mov r0, r10 ldr r3, [r4, #3316] - mov r2, r1 - ldr r9, .L2181 - str r3, [r5, #1256] + str r3, [r6, #1264] bl FlashReadPages - ldrb r3, [r7] @ zero_extendqisi2 + ldrb r3, [r5, #36] @ zero_extendqisi2 cmp r3, #0 - beq .L2157 - ldr r3, [r8, #1260] - ldr r2, [r3, #12] - cmp r2, #0 - beq .L2157 - ldr ip, [r8, #1256] - str r3, [sp, #32] - ldr r3, .L2181+4 - mov r0, ip - str r2, [sp, #36] - str ip, [sp, #28] - ldrh r1, [r3, #2398] + beq .L2104 + ldr r8, [r6, #1268] + ldr r3, [r8, #12] + str r3, [sp, #28] + cbz r3, .L2104 + ldr r2, [r6, #1264] + ldrh r1, [r5, #2400] + mov r0, r2 + str r2, [sp, #24] bl js_hash - ldr r2, [sp, #36] - cmp r2, r0 - beq .L2157 - ldr ip, [sp, #28] - ldr r3, [sp, #32] - cbnz r6, .L2158 - ldrh r1, [r9, #544] - cmp fp, r1 - beq .L2158 - ldr r0, [r3] - ldrh r1, [r9, #540] - str r0, [sp] - ldr r0, [r3, #4] - str r0, [sp, #4] - ldr r3, [r3, #8] - str r2, [sp, #12] - ldr r0, .L2181+16 + ldr r3, [sp, #28] + cmp r3, r0 + beq .L2104 + cbnz r7, .L2105 + ldrh r1, [r4, #544] + ldr r2, [sp, #24] + cmp r9, r1 + beq .L2105 + ldr r2, [r2] + mov r0, fp + str r3, [sp, #12] + ldrh r1, [r4, #540] + str r2, [sp, #16] + ldr r3, [r8, #8] + ldr r2, [r6, #1256] str r3, [sp, #8] - ldr r3, [ip] - str r3, [sp, #16] - ldr r3, [r8, #1252] - ldr r2, [r8, #1248] + ldr r3, [r8, #4] + str r3, [sp, #4] + ldr r3, [r8] + str r3, [sp] + ldr r3, [r6, #1260] bl printk - ldr r3, .L2181+4 - ldrh r10, [r9, #544] - ldrh r6, [r3, #2390] - b .L2160 -.L2158: + ldrsh r9, [r4, #544] + ldrh r7, [r5, #2392] +.L2107: + subs r7, r7, #1 + sxth r7, r7 + b .L2103 +.L2105: mov r3, #-1 - str r3, [r5, #1248] -.L2157: - ldr r3, [r5, #1248] + str r3, [r6, #1256] +.L2104: + ldr r3, [r6, #1256] adds r3, r3, #1 - beq .L2160 + beq .L2107 ldr r3, [r4, #3316] - ldr r2, .L2181+20 + ldr r2, .L2128+12 ldr r3, [r3] cmp r3, r2 - bne .L2160 - ldr r3, .L2181 - ldr r3, [r3, #3340] + bne .L2107 + ldr r3, [r4, #3340] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - bne .L2160 -.L2164: - ldr r6, .L2181 + bne .L2107 +.L2111: movs r2, #48 - ldr r1, [r5, #1256] - add r0, r6, #240 - ldr r8, .L2181+4 + ldr r1, [r6, #1264] + ldr r0, .L2128+16 bl ftl_memcpy - ldrh r2, [r7, #2328] - ldr r1, [r5, #1256] - ldr r0, [r4, #296] - adds r1, r1, #48 + ldrh r2, [r5, #2332] + ldr r1, [r6, #1264] + ldr r0, [r4, #300] lsls r2, r2, #1 + adds r1, r1, #48 bl ftl_memcpy - ldrh r2, [r7, #2328] - ldr r1, [r5, #1256] - ldr r0, [r4, #472] - lsls r3, r2, #1 - lsrs r2, r2, #3 - adds r3, r3, #51 + ldrh r1, [r5, #2332] + ldr r3, [r6, #1264] + ldr r0, [r5, #32] + lsrs r2, r1, #3 + lsls r1, r1, #1 + adds r1, r1, #51 adds r2, r2, #4 - bic r3, r3, #3 + bic r1, r1, #3 add r1, r1, r3 bl ftl_memcpy - ldrh r3, [r7, #2432] - cbz r3, .L2162 - ldrh r2, [r8, #2328] - ldr r0, [r6, #3392] - lsrs r3, r2, #3 - add r3, r3, r2, lsl #1 - ldr r2, .L2181+8 + ldrh r3, [r5, #2436] + cbz r3, .L2109 + ldrh r1, [r5, #2332] + ldrh r2, [r5, #2428] + ldr r0, [r4, #3392] + lsrs r3, r1, #3 + lsls r2, r2, #2 + add r3, r3, r1, lsl #1 + ldr r1, [r6, #1264] adds r3, r3, #52 ubfx r3, r3, #2, #14 - ldr r1, [r2, #1256] - ldrh r2, [r8, #2424] add r1, r1, r3, lsl #2 - lsls r2, r2, #2 bl ftl_memcpy - b .L2162 -.L2160: - subs r6, r6, #1 - uxth r6, r6 - b .L2156 -.L2162: - ldr r2, [r4, #240] - ldr r3, .L2181+20 - ldr r6, .L2181 +.L2109: + ldr r2, [r4, #244] + ldr r3, .L2128+12 cmp r2, r3 - bne .L2165 - ldrb r0, [r6, #250] @ zero_extendqisi2 - ldrh r1, [r7, #2342] - ldrh r2, [r6, #248] - cmp r0, r1 - ldr r3, .L2181+4 - strh r2, [r6, #546] @ movhi - bne .L2165 - ldrh r1, [r3, #2388] - ldrh r0, [r3, #2394] - str r2, [r5, #1284] - muls r1, r2, r1 - str r1, [r3, #2448] - muls r1, r0, r1 - ldrh r0, [r3, #2458] - str r1, [r3, #2428] - ldr r1, [r3, #2332] - subs r0, r1, r0 - ldrh r1, [r3, #2320] + bne .L2112 + ldrb r1, [r4, #254] @ zero_extendqisi2 + ldrh r3, [r5, #2346] + ldrh r2, [r4, #252] + cmp r1, r3 + strh r2, [r4, #546] @ movhi + bne .L2112 + ldrh r3, [r5, #2390] + ldrh r1, [r5, #2396] + ldr r0, [r5, #2336] + str r2, [r6, #1292] + muls r3, r2, r3 + str r3, [r5, #2452] + muls r3, r1, r3 + ldrh r1, [r5, #2324] + str r3, [r5, #2432] + ldrh r3, [r5, #2462] + subs r0, r0, r3 subs r0, r0, r2 bl __aeabi_uidiv - ldrh r3, [r6, #256] - ldrh r1, [r6, #254] + ldrh r3, [r4, #260] + strh r0, [r4, #536] @ movhi + ldrh r1, [r4, #258] lsrs r2, r3, #6 - strh r2, [r6, #318] @ movhi - ldrh r2, [r6, #258] and r3, r3, #63 - strb r3, [r6, #322] - ldrb r3, [r6, #251] @ zero_extendqisi2 - strh r2, [r6, #364] @ movhi - ldrh r2, [r6, #260] - strb r3, [r6, #324] + strb r3, [r4, #326] + strh r2, [r4, #322] @ movhi + ldrh r2, [r4, #262] + ldrb r3, [r4, #255] @ zero_extendqisi2 + strh r1, [r4, #320] @ movhi + strh r2, [r4, #368] @ movhi + ldrh r2, [r4, #264] + strb r3, [r4, #328] movw r3, #65535 - strh r1, [r6, #316] @ movhi - strh r3, [r6, #556] @ movhi + strh r3, [r4, #556] @ movhi movs r3, #0 - strh r3, [r6, #558] @ movhi - strb r3, [r6, #562] - strb r3, [r6, #564] - str r3, [r6, #496] - strh r0, [r6, #536] @ movhi + strh r3, [r4, #558] @ movhi lsrs r0, r2, #6 and r2, r2, #63 - strb r2, [r6, #370] - ldrb r2, [r6, #252] @ zero_extendqisi2 - strh r0, [r6, #366] @ movhi - strb r2, [r6, #372] - ldrh r2, [r6, #262] - strh r2, [r6, #412] @ movhi - ldrh r2, [r6, #264] + strb r2, [r4, #374] + ldrb r2, [r4, #256] @ zero_extendqisi2 + strh r0, [r4, #370] @ movhi + strb r3, [r4, #562] + strb r2, [r4, #376] + ldrh r2, [r4, #266] + strb r3, [r4, #564] + strh r2, [r4, #416] @ movhi + ldrh r2, [r4, #268] lsrs r0, r2, #6 and r2, r2, #63 - strb r2, [r6, #418] - ldrb r2, [r6, #253] @ zero_extendqisi2 - strh r0, [r6, #414] @ movhi - strb r2, [r6, #420] - str r3, [r6, #484] - ldr r2, [r6, #272] - str r3, [r6, #476] - str r3, [r6, #492] - str r3, [r6, #520] - str r3, [r6, #528] - str r3, [r6, #488] - ldr r3, [r6, #280] - str r2, [r6, #516] - ldr r2, [r6, #508] + strb r2, [r4, #422] + ldrb r2, [r4, #257] @ zero_extendqisi2 + strh r0, [r4, #418] @ movhi + strb r2, [r4, #424] + str r3, [r4, #496] + ldr r2, [r4, #276] + str r3, [r4, #484] + str r3, [r4, #476] + str r3, [r4, #492] + str r2, [r4, #516] + str r3, [r4, #520] + ldr r2, [r4, #508] + str r3, [r4, #528] + str r3, [r4, #488] + ldr r3, [r4, #284] cmp r3, r2 ldr r2, [r4, #512] it hi - strhi r3, [r6, #508] - ldr r3, [r4, #276] + strhi r3, [r4, #508] + ldr r3, [r4, #280] cmp r3, r2 - itt hi - ldrhi r2, .L2181 - strhi r3, [r2, #512] + it hi + strhi r3, [r4, #512] movw r3, #65535 cmp r1, r3 - beq .L2168 - ldr r0, .L2181+24 + beq .L2115 + ldr r0, .L2128+20 bl make_superblock -.L2168: - ldrh r2, [r4, #364] +.L2115: + ldrh r2, [r4, #368] movw r3, #65535 cmp r2, r3 - beq .L2169 - ldr r0, .L2181+28 + beq .L2116 + ldr r0, .L2128+24 bl make_superblock -.L2169: - ldrh r2, [r4, #412] +.L2116: + ldrh r2, [r4, #416] movw r3, #65535 cmp r2, r3 - beq .L2170 - ldr r0, .L2181+32 + beq .L2117 + ldr r0, .L2128+28 bl make_superblock -.L2170: +.L2117: ldrh r2, [r4, #556] movw r3, #65535 cmp r2, r3 - beq .L2171 - ldr r0, .L2181+36 + beq .L2118 + ldr r0, .L2128+32 bl make_superblock -.L2171: +.L2118: movs r0, #0 -.L2155: - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2182: + b .L2100 +.L2129: .align 2 -.L2181: +.L2128: .word .LANCHOR2 .word .LANCHOR0 .word .LANCHOR4 - .word .LANCHOR4+1248 - .word .LC109 .word 1179929683 - .word .LANCHOR2+316 - .word .LANCHOR2+364 - .word .LANCHOR2+412 + .word .LANCHOR2+244 + .word .LANCHOR2+320 + .word .LANCHOR2+368 + .word .LANCHOR2+416 .word .LANCHOR2+556 + .word .LC109 .fnend .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 1 .global FtlDumpBlockInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlDumpBlockInfo, %function FtlDumpBlockInfo: .fnstart @@ -13339,151 +13637,149 @@ push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} ubfx r0, r0, #10, #16 + ldr r4, .L2144 .pad #100 sub sp, sp, #100 - mov r8, r1 + mov r9, r1 + ldr r7, .L2144+4 bl P2V_block_in_plane - ldr r4, .L2199 - ldr r7, .L2199+4 - ldr r1, .L2199+8 - ldrh r9, [r4, #2388] + ldr r1, .L2144+8 mov r6, r0 - ldr r0, .L2199+12 + ldr r0, .L2144+12 + ldrh r8, [r4, #2390] bl printk - ldr r3, [r7, #296] + ldr r3, [r7, #300] mov r1, r6 - ldr r0, .L2199+16 + ldr r0, .L2144+16 ldrh r2, [r3, r6, lsl #1] bl printk add r0, sp, #96 strh r6, [r0, #-48]! @ movhi bl make_superblock - ldrb r5, [r4, #144] @ zero_extendqisi2 + ldrb r5, [r4, #152] @ zero_extendqisi2 str r7, [sp, #44] - cbz r5, .L2184 - cmp r8, #0 - bne .L2195 + cbz r5, .L2131 + cmp r9, #0 + bne .L2142 mov r0, r6 bl ftl_get_blk_mode cmp r0, #1 mov r5, r0 - bne .L2184 - ldrh r9, [r4, #2390] - b .L2184 -.L2195: - movs r5, #0 -.L2184: - ldr r0, .L2199+20 + bne .L2131 + ldrh r8, [r4, #2392] +.L2131: + ldr r9, .L2144 + mov r2, r8 + ldrh r3, [r4, #2390] mov r1, r5 - mov r2, r9 - ldrh r3, [r4, #2388] + ldr r0, .L2144+20 + mov r10, #36 bl printk - ldr r10, .L2199 - movs r6, #0 -.L2185: - ldr r3, .L2199+4 - movs r2, #0 - ldrh fp, [r10, #2320] - add lr, sp, #62 - ldrh r0, [r10, #2400] - mov r8, #36 - ldr r3, [r3, #3304] - mov r4, r2 - movw ip, #65535 + movs r3, #0 str r3, [sp, #28] - ldr r3, .L2199+4 - ldr r3, [r3, #1144] - str r3, [sp, #32] - ldrh r3, [r10, #2398] - str r3, [sp, #36] - ldr r3, .L2199+4 +.L2132: + ldr r3, .L2144+4 + add ip, sp, #62 + ldrh fp, [r9, #2324] + movw lr, #65535 + ldrh r7, [r9, #2402] + ldr r2, [r3, #1144] + ldr r0, [r3, #3304] ldr r3, [r3, #1148] + str r2, [sp, #32] + ldrh r2, [r9, #2400] str r3, [sp, #40] -.L2186: + str r2, [sp, #36] + movs r2, #0 + mov r4, r2 +.L2133: uxth r3, r2 - cmp r3, fp - bcs .L2197 - ldrh r3, [lr, #2]! - cmp r3, ip - beq .L2187 - ldr r1, [sp, #28] + cmp fp, r3 + bhi .L2137 + ldr fp, .L2144+24 + movs r7, #0 + mov r2, r5 + mov r1, r4 + bl FlashReadPages +.L2138: + uxth r3, r7 + cmp r4, r3 + bhi .L2139 + ldr r6, [sp, #28] + adds r6, r6, #1 + uxth r3, r6 + cmp r8, r3 + str r3, [sp, #28] + bne .L2132 +.L2140: + movs r0, #0 + add sp, sp, #100 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2142: + movs r5, #0 + b .L2131 +.L2137: + ldrh r3, [ip, #2]! + cmp r3, lr + beq .L2134 + ldr r6, [sp, #28] + mla r1, r10, r4, r0 orr r3, r6, r3, lsl #10 - ldr r7, [sp, #32] - mla r1, r8, r4, r1 + ldr r6, [sp, #32] str r3, [r1, #4] ldr r3, [sp, #36] muls r3, r4, r3 it mi addmi r3, r3, #3 bic r3, r3, #3 - add r3, r3, r7 + add r3, r3, r6 + ldr r6, [sp, #40] str r3, [r1, #8] - mov r3, r0 + mov r3, r7 muls r3, r4, r3 add r4, r4, #1 it mi addmi r3, r3, #3 - ldr r7, [sp, #40] - bic r3, r3, #3 uxth r4, r4 - add r3, r3, r7 + bic r3, r3, #3 + add r3, r3, r6 str r3, [r1, #12] -.L2187: +.L2134: adds r2, r2, #1 - b .L2186 -.L2197: - ldr r3, .L2199+4 - mov r1, r4 - mov r2, r5 - mov r8, #0 - mov fp, #36 - ldr r0, [r3, #3304] - bl FlashReadPages -.L2191: - uxth r3, r8 - cmp r3, r4 - bcs .L2198 + b .L2133 +.L2139: ldr r3, [sp, #44] - mul r2, fp, r8 + mul r0, r10, r7 ldrh r1, [sp, #48] + adds r7, r7, #1 ldr ip, [r3, #3304] - add r8, r8, #1 - add lr, ip, r2 - ldr r3, [lr, #12] - ldr r0, [lr, #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, .L2199+24 - str r3, [sp, #20] - ldr r2, [ip, r2] - ldr r3, [lr, #4] + add r2, ip, r0 + ldr lr, [r2, #8] + ldr r3, [r2, #12] + ldr r6, [lr, #4] + str r6, [sp, #20] + ldr r6, [lr] + str r6, [sp, #16] + ldr r6, [r3, #12] + str r6, [sp, #12] + ldr r6, [r3, #8] + str r6, [sp, #8] + ldr r6, [r3, #4] + str r6, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r3, [r2, #4] + ldr r2, [ip, r0] + mov r0, fp bl printk - b .L2191 -.L2198: - adds r6, r6, #1 - uxth r6, r6 - cmp r6, r9 - bne .L2185 -.L2193: - movs r0, #0 - add sp, sp, #100 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2200: + b .L2138 +.L2145: .align 2 -.L2199: +.L2144: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR3+148 + .word .LANCHOR3+141 .word .LC110 .word .LC111 .word .LC112 @@ -13492,172 +13788,172 @@ .size FtlDumpBlockInfo, .-FtlDumpBlockInfo .align 1 .global FtlScanAllBlock + .syntax unified .thumb .thumb_func + .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 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, .L2217 - mov r8, #0 - ldr r1, .L2217+4 + movs r7, #0 + ldr r5, .L2158 + .pad #84 + sub sp, sp, #84 + ldr r1, .L2158+4 + ldr r0, .L2158+8 bl printk - ldr r5, .L2217+8 - mov r7, r5 -.L2202: - ldr r3, .L2217+12 - uxth r4, r8 - ldrh r3, [r3, #2330] - cmp r3, r4 - bls .L2213 - add r9, sp, #88 - mov r0, r4 - mov fp, #36 +.L2147: + ldr r3, .L2158+12 + uxth r0, r7 + ldrh r3, [r3, #2334] + cmp r3, r0 + bhi .L2157 + movs r0, #0 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2157: + add r4, sp, #80 movw r10, #65535 - strh r4, [r9, #-48]! @ movhi + strh r0, [r4, #-48]! @ movhi + mov fp, #36 bl ftl_get_blk_mode - ldr r2, [r5, #296] - mov r1, r4 - ldrh r2, [r2, r4, lsl #1] + ldr r2, [r5, #300] + uxth r1, r7 mov r3, r0 - ldr r0, .L2217+16 + ldr r0, .L2158+16 + ldrh r2, [r2, r1, lsl #1] bl printk - mov r0, r9 + mov r0, r4 bl make_superblock - ldr r3, .L2217+12 + ldr r3, .L2158+12 movs r2, #0 + ldr r0, [r5, #3304] + add r8, sp, #46 ldr r9, [r5, #1148] - ldrh lr, [r3, #2320] mov r4, r2 - ldr r3, [r5, #3304] - str r3, [sp, #28] - add ip, sp, #54 + ldrh ip, [r3, #2324] ldr r3, [r5, #1144] - str r3, [sp, #32] - ldr r3, .L2217+12 - ldrh r0, [r3, #2398] + str r3, [sp, #24] + ldr r3, .L2158+12 ldrh r3, [r3, #2400] - str r3, [sp, #36] -.L2203: + str r3, [sp, #28] + ldr r3, .L2158+12 + ldrh lr, [r3, #2402] +.L2148: uxth r3, r2 - cmp r3, lr - bcs .L2214 - ldrh r3, [ip, #2]! + cmp ip, r3 + bhi .L2152 + ldr r10, .L2158+20 + mov r8, #0 + mov r9, #36 + movs r2, #0 + mov r1, r4 + bl FlashReadPages +.L2153: + uxth r3, r8 + cmp r4, r3 + bhi .L2154 + ldr r10, .L2158+24 + mov r8, #0 + mov r9, #36 + movs r2, #1 + mov r1, r4 + ldr r0, [r5, #3304] + bl FlashReadPages +.L2155: + uxth r3, r8 + cmp r4, r3 + bhi .L2156 + adds r7, r7, #1 + b .L2147 +.L2152: + ldrh r3, [r8, #2]! cmp r3, r10 - beq .L2204 - ldr r1, [sp, #28] + beq .L2149 + mla r1, fp, r4, r0 + ldr r6, [sp, #24] lsls r3, r3, #10 - ldr r6, [sp, #32] - mla r1, fp, r4, r1 str r3, [r1, #4] - mov r3, r0 + ldr r3, [sp, #28] muls r3, r4, r3 it mi addmi r3, r3, #3 bic r3, r3, #3 add r3, r3, r6 str r3, [r1, #8] - ldr r3, [sp, #36] + mov r3, lr muls r3, r4, r3 add r4, r4, #1 it mi addmi r3, r3, #3 - bic r3, r3, #3 uxth r4, r4 + bic r3, r3, #3 add r3, r3, r9 str r3, [r1, #12] -.L2204: +.L2149: adds r2, r2, #1 - b .L2203 -.L2214: - ldr r0, [r7, #3304] - mov r1, r4 - movs r2, #0 - mov r9, #0 - bl FlashReadPages - mov r10, #36 -.L2208: - uxth r3, r9 - cmp r3, r4 - bcs .L2215 - mul r2, r10, r9 - ldr ip, [r7, #3304] - ldrh r1, [sp, #40] - add r9, r9, #1 - add lr, ip, r2 - ldr r3, [lr, #12] - ldr r0, [lr, #8] - ldr r6, [r3] - str r6, [sp] - ldr r6, [r3, #4] - str r6, [sp, #4] - ldr r6, [r3, #8] - str r6, [sp, #8] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [r0] - str r3, [sp, #16] - ldr r3, [r0, #4] - ldr r0, .L2217+20 - str r3, [sp, #20] - ldr r2, [ip, r2] - ldr r3, [lr, #4] - bl printk - b .L2208 -.L2215: - ldr r0, [r7, #3304] - mov r1, r4 - movs r2, #1 - mov r9, #0 - bl FlashReadPages - mov r10, #36 -.L2210: - uxth r3, r9 - cmp r3, r4 - bcs .L2216 - mul r2, r10, r9 - ldr ip, [r7, #3304] - ldrh r1, [sp, #40] - add r9, r9, #1 - add lr, ip, r2 - ldr r3, [lr, #12] - ldr r0, [lr, #8] - ldr r6, [r3] - str r6, [sp] - ldr r6, [r3, #4] - str r6, [sp, #4] - ldr r6, [r3, #8] - str r6, [sp, #8] - ldr r3, [r3, #12] - str r3, [sp, #12] - ldr r3, [r0] - str r3, [sp, #16] - ldr r3, [r0, #4] - ldr r0, .L2217+24 - str r3, [sp, #20] - ldr r2, [ip, r2] - ldr r3, [lr, #4] - bl printk - b .L2210 -.L2216: + b .L2148 +.L2154: + mul r2, r9, r8 + ldr r0, [r5, #3304] + ldrh r1, [sp, #32] add r8, r8, #1 - b .L2202 -.L2213: - movs r0, #0 - add sp, sp, #92 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2218: + add lr, r0, r2 + ldr fp, [lr, #8] + ldr r3, [lr, #12] + ldr r6, [fp, #4] + str r6, [sp, #20] + ldr r6, [fp] + str r6, [sp, #16] + ldr r6, [r3, #12] + str r6, [sp, #12] + ldr r6, [r3, #8] + str r6, [sp, #8] + ldr r6, [r3, #4] + str r6, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r2, [r0, r2] + mov r0, r10 + ldr r3, [lr, #4] + bl printk + b .L2153 +.L2156: + mul r2, r9, r8 + ldr r0, [r5, #3304] + ldrh r1, [sp, #32] + add r8, r8, #1 + add lr, r0, r2 + ldr fp, [lr, #8] + ldr r3, [lr, #12] + ldr r6, [fp, #4] + str r6, [sp, #20] + ldr r6, [fp] + str r6, [sp, #16] + ldr r6, [r3, #12] + str r6, [sp, #12] + ldr r6, [r3, #8] + str r6, [sp, #8] + ldr r6, [r3, #4] + str r6, [sp, #4] + ldr r3, [r3] + str r3, [sp] + ldr r2, [r0, r2] + mov r0, r10 + ldr r3, [lr, #4] + bl printk + b .L2155 +.L2159: .align 2 -.L2217: - .word .LC110 - .word .LANCHOR3+168 +.L2158: .word .LANCHOR2 + .word .LANCHOR3+158 + .word .LC110 .word .LANCHOR0 .word .LC114 .word .LC115 @@ -13666,129 +13962,131 @@ .size FtlScanAllBlock, .-FtlScanAllBlock .align 1 .global ftl_scan_all_ppa + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_scan_all_ppa, %function ftl_scan_all_ppa: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #36 - sub sp, sp, #36 - ldr r6, .L2237 - ldr r5, .L2237+4 - ldrh r4, [r6, #2386] - mov r10, r6 + .pad #28 + sub sp, sp, #28 + ldr r5, .L2176 + ldr r6, .L2176+4 + ldrh r4, [r5, #2388] subs r4, r4, #16 -.L2220: - ldrh r3, [r6, #2386] + lsl r10, r4, #10 +.L2161: + ldrh r3, [r5, #2388] cmp r4, r3 - bge .L2235 - uxth r8, r4 - mov r0, r8 - bl ftl_get_blk_mode - ldrb r3, [r10, #144] @ zero_extendqisi2 - cbz r3, .L2221 - ldrh r3, [r10, #2328] - cmp r4, r3 - bge .L2222 - ldrh r3, [r10, #2402] - cmp r4, r3 - blt .L2222 -.L2221: - cmp r0, #1 - bne .L2223 -.L2222: - ldrh r7, [r6, #2390] - mov r9, #-2147483648 - b .L2224 -.L2223: - ldrh r7, [r6, #2388] - mov r9, #0 -.L2224: - ldr r0, .L2237+8 - mov r1, r4 - mov r2, r7 - mov r3, r9 - bl printk - mov r0, r8 - bl FtlBbmIsBadBlock - cbz r0, .L2225 - ldr r0, .L2237+12 - mov r1, r4 - mov r2, r7 - mov r3, r9 - bl printk -.L2225: - ldr fp, .L2237+32 - lsl ip, r4, #10 - mov r8, #0 -.L2226: - cmp r8, r7 - beq .L2236 - add r3, r9, ip - movs r2, #0 - add r3, r3, r8 - str r3, [r5, #1252] - ldr r3, [fp, #3316] - movs r1, #1 - ldr r0, .L2237+16 - add r8, r8, #1 - str ip, [sp, #28] - str r3, [r5, #1256] - ldr r3, [fp, #3340] - str r2, [r5, #1248] - str r3, [r5, #1260] - bl FlashReadPages - ldr r3, [r5, #1260] - ldr r2, [r5, #1256] - ldr r0, .L2237+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] - ldr r2, [r2, #4] - ldr r1, [r5, #1252] - str r2, [sp, #16] - ldr r2, [r5, #1248] - ldr r3, [r3] - bl printk - ldr ip, [sp, #28] - b .L2226 -.L2236: - adds r4, r4, #1 - b .L2220 -.L2235: - ldr r0, .L2237+24 - ldr r1, .L2237+28 - add sp, sp, #36 + blt .L2169 + ldr r1, .L2176+8 + ldr r0, .L2176+12 + add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} b printk -.L2238: +.L2169: + uxth r8, r4 + mov r0, r8 + bl ftl_get_blk_mode + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L2162 + ldrh r3, [r5, #2332] + cmp r4, r3 + bge .L2163 + ldrh r3, [r5, #2404] + cmp r4, r3 + blt .L2163 +.L2162: + cmp r0, #1 + bne .L2164 +.L2163: + ldrh r7, [r5, #2392] + mov r9, #-2147483648 +.L2165: + mov r3, r9 + mov r2, r7 + mov r1, r4 + ldr r0, .L2176+16 + bl printk + mov r0, r8 + bl FtlBbmIsBadBlock + cbz r0, .L2166 + mov r3, r9 + mov r2, r7 + mov r1, r4 + ldr r0, .L2176+20 + bl printk +.L2166: + ldr fp, .L2176+32 + mov r8, #0 +.L2167: + cmp r8, r7 + bne .L2168 + adds r4, r4, #1 + add r10, r10, #1024 + b .L2161 +.L2164: + ldrh r7, [r5, #2390] + mov r9, #0 + b .L2165 +.L2168: + add r3, r9, r10 + movs r2, #0 + add r3, r3, r8 + movs r1, #1 + str r3, [r6, #1260] + add r8, r8, #1 + ldr r3, [fp, #3316] + ldr r0, .L2176+24 + str r2, [r6, #1256] + str r3, [r6, #1264] + ldr r3, [fp, #3340] + str r3, [r6, #1268] + bl FlashReadPages + ldr r2, [r6, #1264] + ldr r3, [r6, #1268] + ldr r0, .L2176+28 + ldr r1, [r2, #4] + str r1, [sp, #16] + ldr r2, [r2] + ldr r1, [r6, #1260] + 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, [r6, #1256] + ldr r3, [r3] + bl printk + b .L2167 +.L2177: .align 2 -.L2237: +.L2176: .word .LANCHOR0 .word .LANCHOR4 + .word .LANCHOR3+174 + .word .LC120 .word .LC117 .word .LC118 - .word .LANCHOR4+1248 + .word .LANCHOR4+1256 .word .LC119 - .word .LC120 - .word .LANCHOR3+184 .word .LANCHOR2 .fnend .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 1 .global FlashProgPages + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashProgPages, %function FlashProgPages: .fnstart @@ -13798,288 +14096,288 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #76 sub sp, sp, #76 - ldr r6, .L2293 + ldr r5, .L2230 mov r4, r0 - str r1, [sp, #8] mov r9, r2 + str r1, [sp, #8] + ldr r6, [r5, #48] + ldrb r7, [r5, #36] @ zero_extendqisi2 str r3, [sp, #20] - ldr r5, [r6, #44] - ldrb r7, [r6] @ zero_extendqisi2 - ldrb r5, [r5, #19] @ zero_extendqisi2 - str r5, [sp, #16] - ldr r5, .L2293+4 - ldrb r5, [r5, #481] @ zero_extendqisi2 - str r5, [sp, #12] - cbz r7, .L2240 + ldrb r6, [r6, #19] @ zero_extendqisi2 + str r6, [sp, #16] + cbnz r7, .L2179 + ldr r3, .L2230+4 + ldrb r3, [r3, #477] @ zero_extendqisi2 + str r3, [sp, #12] +.L2180: + ldr r3, [sp, #8] + cmp r7, r3 + bcc .L2193 + ldr r7, .L2230+8 + movs r6, #0 +.L2194: + ldrb r3, [r5, #2234] @ zero_extendqisi2 + cmp r6, r3 + bcc .L2196 + ldr r3, [sp, #20] + cmp r3, #0 + bne .L2197 +.L2205: + movs r0, #0 + b .L2178 +.L2179: bl FlashProgSlc2KPages - b .L2241 -.L2253: +.L2178: + add sp, sp, #76 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2193: movs r3, #36 - mov r1, r9 add r2, sp, #28 mul r8, r3, r7 ldr r3, [sp, #8] + mov r1, r9 subs r3, r3, r7 - add fp, r4, r8 uxtb r3, r3 - str r3, [sp] + add fp, r4, r8 mov r0, fp + str r3, [sp] add r3, sp, #32 bl LogAddr2PhyAddr - ldrb r3, [r6, #2230] @ zero_extendqisi2 + ldrb r3, [r5, #2234] @ zero_extendqisi2 mov r10, r0 ldr r0, [sp, #32] - cmp r0, r3 - bcc .L2242 + cmp r3, r0 + bhi .L2182 mov r3, #-1 str r3, [r4, r8] -.L2243: +.L2183: adds r7, r7, #1 -.L2240: - ldr r3, [sp, #8] - ldr r8, .L2293 - cmp r7, r3 - bcc .L2253 - b .L2291 -.L2242: - ldrb r3, [r6, #2240] @ zero_extendqisi2 + b .L2180 +.L2182: + ldrb r3, [r5, #2244] @ zero_extendqisi2 cmp r3, #0 - add r3, r6, r0, lsl #4 + add r3, r5, r0, lsl #4 it eq moveq r10, #0 - ldr r3, [r3, #2108] - cbz r3, .L2245 + ldr r3, [r3, #2112] + cbz r3, .L2185 uxtb r0, r0 bl FlashWaitCmdDone -.L2245: +.L2185: ldr r3, [sp, #32] - movs r0, #0 - add r2, r6, r3, lsl #4 - addw r1, r2, #2108 - str r0, [r2, #2112] - ldr r0, [sp, #28] - str fp, [r2, #2108] - str r0, [r2, #2104] - cmp r10, #0 - beq .L2246 - add r2, r8, #36 - add r2, r2, r4 - str r2, [r1, #4] -.L2246: - adds r2, r6, r3 - add r3, r6, r3, lsl #4 - ldrb r5, [r2, #2232] @ zero_extendqisi2 - strb r5, [r3, #2100] - mov r0, r5 - ldrb r3, [r6, #2230] @ zero_extendqisi2 - cmp r3, #1 - bne .L2247 - bl NandcWaitFlashReady - b .L2248 -.L2247: - bl NandcFlashCs - mov r0, r5 - ldr r3, [sp, #32] + movs r1, #0 + add r2, r5, r3, lsl #4 + str r1, [r2, #2116] ldr r1, [sp, #28] - add r3, r6, r3, lsl #2 - ldr r2, [r3, #1172] - adds r2, r2, #0 - it ne - movne r2, #1 - bl FlashWaitReadyEN - mov r0, r5 - bl NandcFlashDeCs -.L2248: + str fp, [r2, #2112] + str r1, [r2, #2108] + cmp r10, #0 + beq .L2186 + add r1, r8, #36 + add r1, r1, r4 + str r1, [r2, #2116] +.L2186: + adds r2, r5, r3 + add r3, r5, r3, lsl #4 + ldrb r6, [r2, #2236] @ zero_extendqisi2 + strb r6, [r3, #2104] + mov r0, r6 + ldrb r3, [r5, #2234] @ zero_extendqisi2 + cmp r3, #1 + bne .L2187 + bl NandcWaitFlashReady +.L2188: ldr r3, [sp, #16] subs r3, r3, #1 cmp r3, #7 - bhi .L2249 - adds r3, r6, r5 - ldrb r3, [r3, #2064] @ zero_extendqisi2 - cbz r3, .L2249 - mov r0, r5 - ldrb r1, [r6, #1211] @ zero_extendqisi2 - ldr r2, .L2293+8 + bhi .L2189 + adds r3, r5, r6 + ldrb r3, [r3, #2068] @ zero_extendqisi2 + cbz r3, .L2189 movs r3, #0 + ldr r2, .L2230+12 + ldrb r1, [r5, #1217] @ zero_extendqisi2 + mov r0, r6 bl HynixSetRRPara -.L2249: - mov r0, r5 +.L2189: + mov r0, r6 bl NandcFlashCs cmp r9, #1 - mov r0, r5 - bne .L2250 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L2250 + mov r0, r6 + bne .L2190 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L2190 bl flash_enter_slc_mode - b .L2251 -.L2250: - bl flash_exit_slc_mode -.L2251: - mov r0, r5 +.L2191: ldr r1, [sp, #28] + mov r0, r6 bl FlashProgFirstCmd ldr r3, [fp, #12] - mov r0, r5 movs r1, #1 - str r3, [sp] ldr r2, [sp, #12] + mov r0, r6 + str r3, [sp] ldr r3, [fp, #8] bl NandcXferData cmp r10, #0 - beq .L2252 - mov r0, r5 + beq .L2192 ldr r1, [sp, #28] + mov r0, r6 bl FlashProgDpFirstCmd - mov r0, r5 + ldr r3, [sp, #32] + mov r0, r6 + ldr r1, [sp, #28] add r8, r8, #36 add r8, r8, r4 - ldr r3, [sp, #32] - ldr r1, [sp, #28] - add r3, r6, r3, lsl #2 - ldr r2, [r3, #1172] + add r3, r5, r3, lsl #2 + ldr r2, [r3, #1180] adds r2, r2, #0 it ne 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, #28] add r1, r1, r3 bl FlashProgDpSecondCmd ldr r3, [r8, #12] - mov r0, r5 movs r1, #1 - str r3, [sp] ldr r2, [sp, #12] + mov r0, r6 + str r3, [sp] ldr r3, [r8, #8] bl NandcXferData -.L2252: - mov r0, r5 +.L2192: ldr r1, [sp, #28] + mov r0, r6 bl FlashProgSecondCmd - mov r0, r5 - bl NandcFlashDeCs + mov r0, r6 add r7, r7, r10 - b .L2243 -.L2291: - movs r5, #0 - addw r7, r8, #2100 - mov r6, r8 -.L2254: - ldrb r3, [r8, #2230] @ zero_extendqisi2 - cmp r5, r3 - bcs .L2292 - uxtb r0, r5 + bl NandcFlashDeCs + b .L2183 +.L2187: + bl NandcFlashCs + ldr r3, [sp, #32] + mov r0, r6 + ldr r1, [sp, #28] + add r3, r5, r3, lsl #2 + ldr r2, [r3, #1180] + adds r2, r2, #0 + it ne + movne r2, #1 + bl FlashWaitReadyEN + mov r0, r6 + bl NandcFlashDeCs + b .L2188 +.L2190: + bl flash_exit_slc_mode + b .L2191 +.L2196: + uxtb r0, r6 bl FlashWaitCmdDone cmp r9, #1 - bne .L2255 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L2255 - lsls r3, r5, #4 + bne .L2195 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L2195 + lsls r3, r6, #4 ldrb r0, [r7, r3] @ zero_extendqisi2 bl flash_exit_slc_mode -.L2255: - adds r5, r5, #1 - b .L2254 -.L2292: - ldr r3, [sp, #20] - cbnz r3, .L2257 -.L2265: - movs r0, #0 - b .L2241 -.L2257: - ldr r7, .L2293+12 +.L2195: + adds r6, r6, #1 + b .L2194 +.L2197: + ldr r7, .L2230+16 mov r8, #0 - mov r10, r7 -.L2258: + ldr r10, .L2230+32 +.L2198: ldr r3, [sp, #8] cmp r8, r3 - beq .L2265 + beq .L2205 ldr r3, [r4] adds r3, r3, #1 - bne .L2259 + bne .L2199 ldr r1, [r4, #4] - ldr r0, .L2293+16 + ldr r0, .L2230+20 bl printk - b .L2260 -.L2259: +.L2200: + add r8, r8, #1 + adds r4, r4, #36 + b .L2198 +.L2199: ldr r3, [sp, #8] - mov r1, r9 add r2, sp, #28 + mov r1, r9 mov r0, r4 - rsb r3, r8, r3 mov r6, r4 + sub r3, r3, r8 uxtb r3, r3 str r3, [sp] add r3, sp, #32 bl LogAddr2PhyAddr - ldr r2, [r7, #1220] + ldr r2, [r7, #1228] movs r3, #0 - str r3, [r2] - ldr r2, [r7, #1224] - str r3, [r2] - ldmia r6!, {r0, r1, r2, r3} add r5, sp, #36 + str r3, [r2] + ldr r2, [r7, #1232] + str r3, [r2] + ldmia r6!, {r0, r1, r2, r3} stmia r5!, {r0, r1, r2, r3} ldmia r6!, {r0, r1, r2, r3} stmia r5!, {r0, r1, r2, r3} - add r0, sp, #36 + mov r2, r9 ldr r3, [r6] movs r1, #1 - mov r2, r9 + add r0, sp, #36 str r3, [r5] - ldr r3, [r7, #1220] + ldr r3, [r7, #1228] str r3, [sp, #44] - ldr r3, [r7, #1224] + ldr r3, [r7, #1232] str r3, [sp, #48] bl FlashReadPages ldr r5, [sp, #36] adds r3, r5, #1 - bne .L2261 - ldr r0, .L2293+20 + bne .L2201 ldr r1, [r4, #4] + ldr r0, .L2230+24 bl printk str r5, [r4] -.L2261: +.L2201: ldr r3, [r4, #12] - cbz r3, .L2262 + cbz r3, .L2202 ldr r2, [r3] - ldr r3, [r10, #1224] + ldr r3, [r7, #1232] ldr r3, [r3] cmp r2, r3 - beq .L2262 - ldr r0, .L2293+24 + beq .L2202 ldr r1, [r4, #4] + ldr r0, .L2230+28 bl printk mov r3, #-1 str r3, [r4] -.L2262: +.L2202: ldr r3, [r4, #8] - cbz r3, .L2260 + cmp r3, #0 + beq .L2200 ldr r2, [r3] - ldr r3, [r10, #1220] + ldr r3, [r7, #1228] ldr r3, [r3] cmp r2, r3 - beq .L2260 - ldr r0, .L2293+28 + beq .L2200 ldr r1, [r4, #4] + mov r0, r10 bl printk mov r3, #-1 str r3, [r4] -.L2260: - add r8, r8, #1 - adds r4, r4, #36 - b .L2258 -.L2241: - add sp, sp, #76 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2294: + b .L2200 +.L2231: .align 2 -.L2293: +.L2230: .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR0+1214 + .word .LANCHOR0+2104 + .word .LANCHOR0+1220 .word .LANCHOR4 .word .LC104 .word .LC105 @@ -14089,8 +14387,10 @@ .size FlashProgPages, .-FlashProgPages .align 1 .global FlashTestBlk + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashTestBlk, %function FlashTestBlk: .fnstart @@ -14099,61 +14399,63 @@ push {r4, r5, lr} .save {r4, r5, lr} mov r4, r0 - ldr r5, .L2298 + ldr r5, .L2235 .pad #108 sub sp, sp, #108 - ldr r3, [r5, #1204] - cmp r0, r3 - bcc .L2297 ldr r3, [r5, #1212] + cmp r0, r3 + bcc .L2234 + ldr r3, [r5, #1220] add r0, sp, #40 - movs r1, #165 movs r2, #32 + movs r1, #165 str r0, [sp, #16] lsls r4, r4, #10 str r3, [sp, #12] bl ftl_memset - ldr r0, [r5, #1212] - movs r1, #90 movs r2, #8 + movs r1, #90 + ldr r0, [r5, #1220] bl ftl_memset - movs r1, #1 - mov r2, r1 + movs r2, #1 add r0, sp, #4 + mov r1, r2 str r4, [sp, #8] bl FlashEraseBlocks - movs r1, #1 - mov r2, r1 - mov r3, r1 + movs r3, #1 add r0, sp, #4 + mov r2, r3 + mov r1, r3 bl FlashProgPages - movs r1, #0 - movs r2, #1 ldr r4, [sp, #4] + movs r2, #1 + movs r1, #0 add r0, sp, #4 adds r4, r4, #0 it ne movne r4, #1 negs r4, r4 bl FlashEraseBlocks - b .L2296 -.L2297: - movs r4, #0 -.L2296: +.L2232: mov r0, r4 add sp, sp, #108 @ sp needed pop {r4, r5, pc} -.L2299: +.L2234: + movs r4, #0 + b .L2232 +.L2236: .align 2 -.L2298: +.L2235: .word .LANCHOR4 .fnend .size FlashTestBlk, .-FlashTestBlk .align 1 .global FlashMakeFactorBbt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: .fnstart @@ -14163,757 +14465,747 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #84 sub sp, sp, #84 - ldr r5, .L2361 - movs r1, #1 - ldr r4, .L2361+4 - ldr r0, .L2361+8 - ldr r3, [r5, #1216] - 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 r4, .L2293 + ldr r0, .L2293+4 + ldr r3, [r4, #1224] + ldr r5, .L2293 str r3, [sp, #24] - ldrh r3, [r4, #4] - str r3, [sp, #16] - ldrb r3, [r4] @ zero_extendqisi2 - ldr r4, .L2361+4 + ldr r3, .L2293+8 + ldrh r1, [r3, #136] + ldrh r6, [r3, #138] + smulbb r6, r6, r1 + ldr r1, [r3, #48] + ldrb r2, [r1, #24] @ zero_extendqisi2 + uxth r6, r6 + movs r1, #1 + str r2, [sp, #28] + ldrh r2, [r3, #40] + ldrb r3, [r3, #36] @ zero_extendqisi2 + str r2, [sp, #20] cmp r3, #1 itttt eq - ldreq r3, [sp, #16] + moveq r3, r2 lsleq r3, r3, #1 uxtheq r3, r3 - streq r3, [sp, #16] + streq r3, [sp, #20] bl printk - ldr r0, [r5, #1216] - movs r1, #0 + ldr r0, [r4, #1224] mov r2, #4096 + movs r1, #0 + ldr r4, .L2293+8 bl ftl_memset - ldr r5, .L2361 - lsr r3, r8, #4 - str r3, [sp, #28] + lsrs r3, r6, #4 + str r3, [sp, #32] movs r3, #0 - str r3, [sp, #8] -.L2302: - ldrb r7, [sp, #8] @ zero_extendqisi2 - ldrb r3, [r4, #2230] @ zero_extendqisi2 - cmp r3, r7 - bls .L2357 - add r3, r5, r7, lsl #1 - ldrh r6, [r3, #1232] - cmp r6, #0 - bne .L2332 - ldrh r2, [r4, #136] - mov r1, r6 - ldr r0, [r5, #1184] - mov r9, r6 + str r3, [sp, #12] +.L2239: + ldrb r8, [sp, #12] @ zero_extendqisi2 + ldrb r3, [r4, #2234] @ zero_extendqisi2 + cmp r3, r8 + bhi .L2266 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2266: + add r3, r5, r8, lsl #1 + ldrh r7, [r3, #1238] + cmp r7, #0 + bne .L2240 + ldrh r2, [r4, #144] + mov r1, r7 + ldr r0, [r5, #1192] + add fp, r4, r8, lsl #2 + mov r9, r7 + mov r10, r7 lsls r2, r2, #9 bl ftl_memset - adds r3, r4, r7 - ldrb r10, [r3, #2232] @ zero_extendqisi2 - lsls r3, r7, #2 - add fp, r4, r3 - str r6, [sp, #4] - str r3, [sp, #32] -.L2304: + add r3, r4, r8 + str r7, [sp, #4] + ldrb r3, [r3, #2236] @ zero_extendqisi2 + str r3, [sp, #8] +.L2241: ldrh r3, [sp, #4] - cmp r3, r8 - str r3, [sp, #12] - bcs .L2314 + cmp r3, r6 + str r3, [sp, #16] + bcc .L2252 +.L2251: + mov r2, r9 + mov r1, r8 + ldr r0, .L2293+12 + bl printk + ldrb r3, [r4, #2234] @ zero_extendqisi2 + ldr r2, [sp, #32] + muls r3, r2, r3 + cmp r9, r3 + blt .L2253 + ldrh r2, [r4, #144] + movs r1, #0 + ldr r0, [r5, #1192] + lsls r2, r2, #9 + bl ftl_memset +.L2253: + cmp r8, #0 + bne .L2255 + ldrh fp, [r5, #1212] + mov r10, #1 + ldr r9, .L2293+20 +.L2256: + ldrb r3, [r4, #37] @ zero_extendqisi2 + cmp r3, fp + bhi .L2258 + subs r3, r6, #1 + sub r9, r6, #50 + uxth r10, r3 + mov fp, #1 +.L2259: + cmp r10, r9 + bgt .L2261 + ldrb r3, [r4, #37] @ zero_extendqisi2 + ldr r2, [r5, #1212] + subs r3, r3, r2 + cmp r7, r3 + bcc .L2255 + ldrh r2, [r4, #144] + movs r1, #0 + ldr r0, [r5, #1192] + lsls r2, r2, #9 + bl ftl_memset +.L2255: + ldrb r9, [sp, #12] @ zero_extendqisi2 + subs r7, r6, #1 + ldr fp, .L2293+24 + uxth r7, r7 + add r10, r5, r8, lsl #1 + mul r9, r6, r9 +.L2263: + mov r1, r8 + mov r2, r7 + mov r0, fp + bl printk + ldr r1, [r5, #1192] +.L2264: + lsrs r2, r7, #5 + and r3, r7, #31 + ldr r2, [r1, r2, lsl #2] + lsr r3, r2, r3 + ands r3, r3, #1 + bne .L2265 + ldr r1, [sp, #24] + movw r2, #61664 + strh r7, [r10, #1238] @ movhi + add r0, sp, #44 + strh r2, [r1] @ movhi + movs r2, #1 + strh r7, [r1, #2] @ movhi + strh r3, [r1, #8] @ movhi + mov r1, r2 + ldr r3, [r5, #1192] + str r3, [sp, #52] + ldr r3, [r5, #1224] + str r3, [sp, #56] + add r3, r7, r9 + lsls r3, r3, #10 + str r3, [sp, #48] + bl FlashEraseBlocks + movs r3, #1 + add r0, sp, #44 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r3, [sp, #44] + cmp r3, #0 + beq .L2240 + subs r7, r7, #1 + uxth r7, r7 + b .L2263 +.L2252: movs r3, #255 strb r3, [sp, #42] strb r3, [sp, #43] - ldr r3, [sp, #24] + ldr r3, [sp, #28] lsls r1, r3, #31 - bpl .L2306 - ldr r3, [fp, #1172] + bpl .L2243 + ldr r3, [fp, #1180] add r2, sp, #42 - mov r0, r10 - add r3, r3, r6 - str r3, [sp, #36] + ldr r0, [sp, #8] + add r3, r3, r10 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 .L2306 - ldr r1, [r4, #4] + cmp r2, #1 + bne .L2243 + ldr r1, [r4, #40] add r2, sp, #43 - mov r0, r10 + ldr r0, [sp, #8] add r1, r1, r3 bl FlashReadSpare ldrb r3, [sp, #42] @ zero_extendqisi2 ldrb r2, [sp, #43] @ zero_extendqisi2 ands r3, r3, r2 strb r3, [sp, #42] -.L2306: - ldr r3, [sp, #24] +.L2243: + ldr r3, [sp, #28] lsls r2, r3, #30 - bpl .L2308 - ldr r3, [r4, #44] - mov r0, r10 + bpl .L2245 + ldr r3, [r4, #48] add r2, sp, #43 + ldr r0, [sp, #8] ldrh r1, [r3, #10] - ldr r3, [fp, #1172] + ldr r3, [fp, #1180] subs r1, r1, #1 add r1, r1, r3 - add r1, r1, r6 + add r1, r1, r10 bl FlashReadSpare -.L2308: - ldr r3, [r4, #44] +.L2245: + ldr r3, [r4, #48] ldrb r2, [r3, #7] @ zero_extendqisi2 cmp r2, #1 - beq .L2309 + beq .L2246 cmp r2, #8 - beq .L2309 + beq .L2246 ldrb r3, [r3, #18] @ zero_extendqisi2 cmp r3, #12 - bne .L2310 -.L2309: + bne .L2247 +.L2246: ldrb r3, [sp, #42] @ zero_extendqisi2 - cbz r3, .L2331 + cmp r3, #0 + beq .L2268 ldrb r0, [sp, #43] @ zero_extendqisi2 clz r0, r0 lsrs r0, r0, #5 - b .L2311 -.L2310: +.L2248: + ldr r3, [sp, #28] + lsls r3, r3, #29 + bpl .L2249 + ldr r1, [fp, #1180] + ldr r0, [sp, #8] + add r1, r1, r10 + bl SandiskProgTestBadBlock +.L2249: + cbz r0, .L2250 + ldr r2, [sp, #4] + mov r1, r8 + ldr r0, .L2293+16 + add r9, r9, #1 + bl printk + ldr r3, [sp, #16] + uxth r9, r9 + ldr r1, [r5, #1192] + and r2, r3, #31 + lsrs r0, r3, #5 + movs r3, #1 + lsl r2, r3, r2 + ldr r3, [r1, r0, lsl #2] + orrs r3, r3, r2 + ldr r2, [sp, #32] + str r3, [r1, r0, lsl #2] + ldrb r3, [r4, #2234] @ zero_extendqisi2 + muls r3, r2, r3 + cmp r9, r3 + bgt .L2251 +.L2250: + ldr r3, [sp, #4] + adds r3, r3, #1 + str r3, [sp, #4] + ldr r3, [sp, #20] + add r10, r10, r3 + b .L2241 +.L2247: ldrb r3, [sp, #42] @ zero_extendqisi2 cmp r3, #255 - bne .L2331 + bne .L2268 ldrb r0, [sp, #43] @ zero_extendqisi2 subs r0, r0, #255 it ne movne r0, #1 - b .L2311 -.L2331: + b .L2248 +.L2268: movs r0, #1 -.L2311: - ldr r3, [sp, #24] - lsls r3, r3, #29 - bpl .L2312 - ldr r3, .L2361+4 - mov r0, r10 - ldr r2, [sp, #32] - add r3, r3, r2 - ldr r1, [r3, #1172] - add r1, r1, r6 - bl SandiskProgTestBadBlock -.L2312: - cbz r0, .L2313 - mov r1, r7 - ldr r2, [sp, #4] - ldr r0, .L2361+12 - add r9, r9, #1 - bl printk - ldr r2, [r5, #1184] - uxth r9, r9 - ldr r3, [sp, #12] - and r0, r3, #31 - lsrs r1, r3, #5 - movs r3, #1 - lsls r3, r3, r0 - ldr r0, [r2, r1, lsl #2] - orrs r3, r3, r0 - str r3, [r2, r1, lsl #2] - ldr r2, [sp, #28] - ldrb r3, [r4, #2230] @ zero_extendqisi2 - muls r3, r2, r3 - cmp r9, r3 - bgt .L2314 -.L2313: - ldr r3, [sp, #4] - adds r3, r3, #1 - str r3, [sp, #4] - ldr r3, [sp, #16] - add r6, r6, r3 - b .L2304 -.L2314: - mov r2, r9 - ldr r0, .L2361+16 - mov r1, r7 - bl printk - ldrb r3, [r4, #2230] @ zero_extendqisi2 - ldr r2, [sp, #28] - muls r3, r2, r3 - cmp r9, r3 - blt .L2316 - ldrh r2, [r4, #136] - movs r1, #0 - ldr r0, [r5, #1184] - lsls r2, r2, #9 - bl ftl_memset -.L2316: - cmp r7, #0 - bne .L2318 - ldrh r10, [r5, #1204] - mov r9, #1 - mov r6, r7 -.L2319: - ldr r3, .L2361+4 - ldrb r3, [r3, #1] @ zero_extendqisi2 - cmp r3, r10 - bls .L2358 - mov r0, r10 - bl FlashTestBlk - cbz r0, .L2320 - mov r1, r10 - ldr r0, .L2361+20 - bl printk - ldr r2, [r5, #1184] - lsr r0, r10, #5 - adds r6, r6, #1 - and r3, r10, #31 - ldr r1, [r2, r0, lsl #2] - uxth r6, r6 - lsl r3, r9, r3 - orrs r3, r3, r1 - str r3, [r2, r0, lsl #2] -.L2320: - add r10, r10, #1 - uxth r10, r10 - b .L2319 -.L2358: - add fp, r8, #-1 - sub r9, r8, #50 - mov r10, #1 - uxth fp, fp -.L2322: - cmp fp, r9 - ble .L2359 + b .L2248 +.L2258: mov r0, fp bl FlashTestBlk - cbz r0, .L2323 + cbz r0, .L2257 mov r1, fp - ldr r0, .L2361+20 + mov r0, r9 bl printk - ldr r2, [r5, #1184] + ldr r1, [r5, #1192] lsr r0, fp, #5 and r3, fp, #31 - lsl r3, r10, r3 - ldr r1, [r2, r0, lsl #2] - orrs r3, r3, r1 - str r3, [r2, r0, lsl #2] -.L2323: - add fp, fp, #-1 + lsl r2, r10, r3 + adds r7, r7, #1 + ldr r3, [r1, r0, lsl #2] + uxth r7, r7 + orrs r3, r3, r2 + str r3, [r1, r0, lsl #2] +.L2257: + add fp, fp, #1 uxth fp, fp - b .L2322 -.L2359: - ldr r3, .L2361+4 - ldr r2, [r5, #1204] - ldrb r3, [r3, #1] @ zero_extendqisi2 - subs r3, r3, r2 - cmp r6, r3 - bcc .L2318 - ldrh r2, [r4, #136] - movs r1, #0 - ldr r0, [r5, #1184] - lsls r2, r2, #9 - bl ftl_memset -.L2318: - ldrb r6, [sp, #8] @ zero_extendqisi2 - add r10, r8, #-1 - add r9, r5, r7, lsl #1 - uxth r10, r10 - mul r6, r8, r6 -.L2326: - mov r1, r7 - ldr r0, .L2361+24 - mov r2, r10 + b .L2256 +.L2261: + mov r0, r10 + bl FlashTestBlk + cbz r0, .L2260 + mov r1, r10 + ldr r0, .L2293+20 bl printk - ldr r1, [r5, #1184] -.L2327: - lsr r3, r10, #5 + ldr r0, [r5, #1192] + lsr ip, r10, #5 and r2, r10, #31 - ldr r3, [r1, r3, lsl #2] - lsrs r3, r3, r2 - ands r3, r3, #1 - beq .L2360 - add r10, r10, #-1 - uxth r10, r10 - b .L2327 -.L2360: - ldr r1, [sp, #20] - movw r2, #61664 - strh r10, [r9, #1232] @ movhi - add r0, sp, #44 - strh r2, [r1] @ movhi - strh r10, [r1, #2] @ movhi - strh r3, [r1, #8] @ movhi - movs r1, #1 - ldr r3, [r5, #1184] - mov r2, r1 - str r3, [sp, #52] - ldr r3, [r5, #1216] - str r3, [sp, #56] - add r3, r10, r6 - lsls r3, r3, #10 - str r3, [sp, #48] - bl FlashEraseBlocks - movs r1, #1 - mov r3, r1 - mov r2, r1 - add r0, sp, #44 - bl FlashProgPages - ldr r3, [sp, #44] - cbz r3, .L2332 - add r10, r10, #-1 - uxth r10, r10 - b .L2326 -.L2332: - ldr r3, [sp, #8] + lsl r1, fp, r2 + ldr r2, [r0, ip, lsl #2] + orrs r2, r2, r1 + str r2, [r0, ip, lsl #2] +.L2260: + add r3, r10, #-1 + uxth r10, r3 + b .L2259 +.L2265: + subs r7, r7, #1 + uxth r7, r7 + b .L2264 +.L2240: + ldr r3, [sp, #12] adds r3, r3, #1 - str r3, [sp, #8] - b .L2302 -.L2357: - add sp, sp, #84 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2362: + str r3, [sp, #12] + b .L2239 +.L2294: .align 2 -.L2361: +.L2293: .word .LANCHOR4 - .word .LANCHOR0 .word .LC121 - .word .LC122 + .word .LANCHOR0 .word .LC123 + .word .LC122 .word .LC124 .word .LC125 .fnend .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 1 .global FtlLowFormatEraseBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2342 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 r7, .L2415 - str r0, [sp, #4] - str r1, [sp] - ldrb r3, [r7, #2240] @ zero_extendqisi2 - str r3, [sp, #16] - ldr r3, .L2415+4 - ldr r2, [r3, #224] - mov fp, r3 - cmp r2, #0 - bne .L2392 - ldrb r3, [r7, #144] @ zero_extendqisi2 - mov r8, #36 - mov r9, r2 - mov r5, r2 - mov r4, r2 - mov r10, fp - str r3, [sp, #8] - str r0, [fp, #3292] -.L2365: - ldrh r0, [r7, #2320] - uxth r1, r9 - ldr r3, .L2415 - cmp r0, r1 - bls .L2410 - mul r6, r8, r1 - ldr r0, [fp, #228] - movs r3, #0 - str r3, [r0, r6] - ldr r3, .L2415 - add r1, r1, r3 - ldrb r0, [r1, #2348] @ zero_extendqisi2 - ldr r1, [sp, #4] - bl V2P_block - ldr r3, [sp] - mov r6, r0 - cbz r3, .L2366 - bl IsBlkInVendorPart - cbnz r0, .L2367 -.L2366: - mov r0, r6 - bl FtlBbmIsBadBlock - cbnz r0, .L2368 - ldr r3, [fp, #228] - lsls r6, r6, #10 - ldrh r1, [r7, #2400] - muls r1, r5, r1 - it mi - addmi r1, r1, #3 - mla lr, r8, r5, r3 - adds r5, r5, #1 - bic r1, r1, #3 - uxth r5, r5 - str r0, [lr, #8] - ldr r0, [r10, #3344] - str r6, [lr, #4] - add r1, r1, r0 - str r1, [lr, #12] - b .L2367 -.L2368: - adds r4, r4, #1 - uxth r4, r4 -.L2367: - add r9, r9, #1 - b .L2365 -.L2410: - cmp r5, #0 - beq .L2391 - ldr r2, [sp, #8] - mov r8, #0 - ldr r0, [fp, #228] + str r0, [sp, #8] + mov r10, r3 + ldr r6, [r3, #228] + str r1, [sp, #4] + cmp r6, #0 + bne .L2324 + ldr r5, .L2342+4 + mov r7, r6 + mov r4, r6 mov r9, #36 - adds r6, r2, #0 - mov r2, r5 + mov fp, r10 + str r0, [r10, #3292] + ldrb r3, [r5, #2244] @ zero_extendqisi2 + str r3, [sp, #16] + ldrb r3, [r5, #152] @ zero_extendqisi2 + str r3, [sp, #12] +.L2297: + ldrh r0, [r5, #2324] + uxth r1, r6 + cmp r0, r1 + bhi .L2302 + cmp r7, #0 + beq .L2295 + ldr r3, [sp, #12] + mov r8, #0 + mov r2, r7 + ldr r0, [r10, #232] + strb r8, [r5, #2244] + mov r9, #36 + adds r6, r3, #0 it ne movne r6, #1 - strb r8, [r3, #2240] - str r3, [sp, #8] mov r1, r6 bl FlashEraseBlocks - ldrb r2, [sp, #16] @ zero_extendqisi2 - ldr r3, [sp, #8] - strb r2, [r3, #2240] -.L2372: + ldrb r3, [sp, #16] @ zero_extendqisi2 + strb r3, [r5, #2244] +.L2304: uxth r2, r8 - cmp r2, r5 - bcs .L2411 + cmp r7, r2 + bhi .L2306 + ldr r3, [sp, #4] + cmp r3, #0 + bne .L2307 + uxth r6, r6 + mov fp, #6 + movs r3, #1 + str r3, [sp, #12] +.L2308: + ldr r7, .L2342 + mov r9, #0 +.L2318: + ldr r10, .L2342+4 + mov r8, #0 + mov r5, r8 +.L2309: + ldrh r1, [r10, #2324] + uxth r3, r8 + cmp r1, r3 + bhi .L2313 + cbz r5, .L2295 + movs r3, #1 + mov r8, #0 + mov r2, r6 + mov r1, r5 + ldr r0, [r7, #232] + strb r8, [r10, #2244] + bl FlashProgPages + ldrb r3, [sp, #16] @ zero_extendqisi2 + strb r3, [r10, #2244] + mov r10, #36 +.L2315: + uxth r3, r8 + cmp r5, r3 + bhi .L2317 + add r9, r9, fp + ldr r3, [sp, #12] + uxth r9, r9 + cmp r3, r9 + bhi .L2318 + mov r8, #0 + mov r9, #36 +.L2319: + uxth r3, r8 + cmp r5, r3 + bhi .L2321 + ldr r3, [sp, #8] + cmp r3, #63 + bls .L2322 + ldr r3, [sp, #4] + cbz r3, .L2295 +.L2322: + mov r2, r5 + mov r1, r6 + ldr r0, [r7, #232] + bl FlashEraseBlocks +.L2295: + mov r0, r4 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2302: + uxth r1, r6 + ldr r0, [r10, #232] + movs r3, #0 + mul ip, r9, r1 + str r3, [r0, ip] + adds r0, r5, r1 + ldrb r0, [r0, #2350] @ zero_extendqisi2 + ldr r1, [sp, #8] + bl V2P_block + ldr r3, [sp, #4] + mov r8, r0 + cbz r3, .L2298 + bl IsBlkInVendorPart + cbnz r0, .L2299 +.L2298: + mov r0, r8 + bl FtlBbmIsBadBlock + cbnz r0, .L2300 + ldr r1, [r10, #232] + mla ip, r9, r7, r1 + lsl r1, r8, #10 + str r0, [ip, #8] + str r1, [ip, #4] + ldr r0, [fp, #3344] + ldrh r1, [r5, #2402] + muls r1, r7, r1 + add r7, r7, #1 + it mi + addmi r1, r1, #3 + uxth r7, r7 + bic r1, r1, #3 + add r1, r1, r0 + str r1, [ip, #12] +.L2299: + adds r6, r6, #1 + b .L2297 +.L2300: + adds r4, r4, #1 + uxth r4, r4 + b .L2299 +.L2306: mul r2, r9, r8 - ldr r1, [fp, #228] - adds r0, r1, r2 + ldr r1, [r10, #232] + add ip, r1, r2 ldr r2, [r1, r2] adds r2, r2, #1 - bne .L2373 - ldr r0, [r0, #4] + bne .L2305 + ldr r0, [ip, #4] adds r4, r4, #1 - ubfx r0, r0, #10, #16 uxth r4, r4 + ubfx r0, r0, #10, #16 bl FtlBbmMapBadBlock -.L2373: +.L2305: add r8, r8, #1 - b .L2372 -.L2411: - ldr r3, [sp] - cbnz r3, .L2375 - movs r3, #6 - uxth r6, r6 + b .L2304 +.L2307: + ldrh r3, [r5, #2392] str r3, [sp, #12] - movs r3, #1 - str r3, [sp, #8] - b .L2376 -.L2375: - ldrh r3, [r7, #2390] - str r3, [sp, #8] - ldrb r3, [r7, #144] @ zero_extendqisi2 - cbnz r3, .L2393 - ldr r3, [sp, #8] + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbnz r3, .L2325 + ldr r3, [sp, #12] movs r6, #1 - lsrs r3, r3, #2 - str r3, [sp, #12] - b .L2376 -.L2393: + lsr fp, r3, #2 + b .L2308 +.L2325: movs r6, #1 - str r6, [sp, #12] -.L2376: - ldr r8, .L2415+4 - movs r7, #0 - mov r10, r8 -.L2386: - mov fp, #0 - mov r5, fp -.L2377: - ldr r9, .L2415 - uxth r3, fp - ldrh r1, [r9, #2320] - cmp r1, r3 - bls .L2412 + mov fp, r6 + b .L2308 +.L2313: + uxth r3, r8 movs r2, #36 - ldr r0, [r8, #228] + ldr r0, [r7, #232] mul r1, r2, r3 + add r3, r3, r10 movs r2, #0 str r2, [r0, r1] - ldr r2, .L2415 - ldr r1, [sp, #4] - add r3, r3, r2 - 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 - cbz r3, .L2378 + ldr r3, [sp, #4] + str r0, [sp, #20] + cbz r3, .L2310 bl IsBlkInVendorPart - cbnz r0, .L2379 -.L2378: - mov r0, r9 + cbnz r0, .L2311 +.L2310: + ldr r0, [sp, #20] bl FtlBbmIsBadBlock - cbnz r0, .L2379 - ldr r1, [r10, #228] + cbnz r0, .L2311 + ldr r1, [r7, #232] movs r3, #36 - ldr r0, [r8, #3336] + ldr r0, [r7, #3336] mla r1, r3, r5, r1 - add r3, r7, r9, lsl #10 + ldr r3, [sp, #20] + add r3, r9, r3, lsl #10 str r3, [r1, #4] - ldr r3, [r10, #3332] + ldr r3, [r7, #3332] str r3, [r1, #8] - ldr r3, .L2415 - ldrh r3, [r3, #2400] + ldrh r3, [r10, #2402] muls r3, r5, r3 add r5, r5, #1 it mi addmi r3, r3, #3 - bic r3, r3, #3 uxth r5, r5 + bic r3, r3, #3 add r3, r3, r0 str r3, [r1, #12] -.L2379: - add fp, fp, #1 - b .L2377 -.L2412: - cmp r5, #0 - beq .L2391 - mov r2, r6 - movs r3, #1 - ldr r0, [r8, #228] - mov r1, r5 - mov fp, #0 - strb fp, [r9, #2240] - bl FlashProgPages - movs r2, #36 - ldrb r3, [sp, #16] @ zero_extendqisi2 - strb r3, [r9, #2240] - ldr r9, .L2415+4 -.L2383: - uxth r3, fp - cmp r3, r5 - bcs .L2413 - mul r3, r2, fp - ldr r1, [r10, #228] - adds r0, r1, r3 - ldr r3, [r1, r3] - cbz r3, .L2384 - ldr r0, [r0, #4] - adds r4, r4, #1 - str r2, [sp, #20] - ubfx r0, r0, #10, #16 - uxth r4, r4 - bl FtlBbmMapBadBlock - ldr r2, [sp, #20] -.L2384: - add fp, fp, #1 - b .L2383 -.L2413: - ldr r3, [sp, #12] - add r7, r7, r3 - ldr r3, [sp, #8] - uxth r7, r7 - cmp r7, r3 - bcc .L2386 - movs r7, #0 - mov r8, #36 -.L2387: - uxth r3, r7 - cmp r3, r5 - bcs .L2414 - ldr r3, [sp] - cbz r3, .L2388 - mul r3, r8, r7 - ldr r2, [r9, #228] +.L2311: + add r8, r8, #1 + b .L2309 +.L2317: + mul r3, r10, r8 + ldr r2, [r7, #232] adds r1, r2, r3 ldr r3, [r2, r3] - cbnz r3, .L2388 + cbz r3, .L2316 + ldr r0, [r1, #4] + adds r4, r4, #1 + uxth r4, r4 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L2316: + add r8, r8, #1 + b .L2315 +.L2321: + ldr r3, [sp, #4] + cbz r3, .L2320 + mul r3, r9, r8 + ldr r2, [r7, #232] + adds r1, r2, r3 + ldr r3, [r2, r3] + cbnz r3, .L2320 ldr r0, [r1, #4] movs r1, #1 ubfx r0, r0, #10, #16 bl FtlFreeSysBlkQueueIn -.L2388: - adds r7, r7, #1 - b .L2387 -.L2414: - ldr r3, [sp, #4] - cmp r3, #63 - bls .L2390 - ldr r3, [sp] - cbz r3, .L2391 -.L2390: - ldr r0, [r9, #228] - mov r1, r6 - mov r2, r5 - bl FlashEraseBlocks -.L2391: - mov r0, r4 - b .L2364 -.L2392: - movs r0, #0 -.L2364: - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2416: +.L2320: + add r8, r8, #1 + b .L2319 +.L2324: + movs r4, #0 + b .L2295 +.L2343: .align 2 -.L2415: - .word .LANCHOR0 +.L2342: .word .LANCHOR2 + .word .LANCHOR0 .fnend .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 1 .global FtlBbmTblFlush + .syntax unified .thumb .thumb_func + .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 - push {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 r7, .L2434 - ldr r6, [r7, #224] + .pad #12 + ldr r7, .L2358 + ldr r6, [r7, #228] cmp r6, #0 - bne .L2419 - ldr r4, .L2434+4 + bne .L2346 + ldr r4, .L2358+4 mov r1, r6 ldr r0, [r7, #3316] - ldr r5, .L2434+8 - addw r9, r4, #2476 + ldr r5, .L2358+8 ldr r3, [r7, #3340] - ldrh r2, [r4, #2398] - str r0, [r5, #1256] - str r3, [r5, #1260] + add r8, r4, #2480 + ldrh r2, [r4, #2400] + str r0, [r5, #1264] + str r3, [r5, #1268] bl ftl_memset -.L2420: - ldrh r3, [r4, #2342] - ldr r8, .L2434+4 +.L2347: + ldrh r3, [r4, #2346] cmp r6, r3 - bge .L2433 - ldrh r2, [r7, #3404] + blt .L2348 + ldr r6, [r5, #1268] + movs r2, #16 + movs r1, #255 + ldr fp, .L2358+24 + mov r8, #0 + mov r0, r6 + mov r9, r8 + bl ftl_memset + movw r3, #61649 + strh r3, [r6] @ movhi + ldr r3, [r4, #2464] + str r3, [r6, #4] + ldrh r3, [r4, #2456] + strh r3, [r6, #2] @ movhi + ldrh r3, [r4, #2460] + strh r3, [r6, #8] @ movhi + ldrh r3, [r4, #2462] + strh r3, [r6, #10] @ movhi + ldr r3, [r4, #2320] + strh r3, [r6, #12] @ movhi +.L2349: + ldr r3, [r7, #3316] + mov r10, #0 + ldrh r2, [r4, #2458] + ldrh r1, [r4, #2456] + str r3, [r5, #1264] + ldr r3, [r7, #3340] + str r10, [r5, #1256] + str r3, [r5, #1268] + orr r3, r2, r1, lsl #10 + ldrh r0, [r6, #10] + str r3, [r5, #1260] + ldrh r3, [r4, #2460] + str r0, [sp] + ldr r0, .L2358+12 + bl printk + ldrh r3, [r4, #2392] + ldrh r2, [r4, #2458] + subs r3, r3, #1 + cmp r2, r3 + blt .L2350 + ldr r3, [r4, #2464] + ldrh r2, [r4, #2456] + ldr r0, [r7, #232] + adds r3, r3, #1 + strh r10, [r4, #2458] @ movhi + str r3, [r4, #2464] + str r3, [r6, #4] + ldrh r3, [r4, #2460] + strh r2, [r6, #8] @ movhi + strh r2, [r4, #2460] @ movhi + movs r2, #1 + strh r3, [r4, #2456] @ movhi + mov r1, r2 + lsls r3, r3, #10 + str r3, [r5, #1260] + str r3, [r0, #4] + bl FlashEraseBlocks +.L2350: + movs r3, #1 + mov r0, fp + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #2458] + adds r3, r3, #1 + strh r3, [r4, #2458] @ movhi ldr r3, [r5, #1256] - ldr r1, [r9, #4]! - mul r0, r2, r6 + adds r2, r3, #1 + bne .L2351 + add r8, r8, #1 + ldr r1, [r5, #1260] + uxth r8, r8 + ldr r0, .L2358+16 + bl printk + cmp r8, #3 + bls .L2349 + mov r2, r8 + ldr r1, [r5, #1260] + ldr r0, .L2358+20 + bl printk + movs r3, #1 + str r3, [r7, #228] +.L2346: + movs r0, #0 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2348: + ldrh r2, [r7, #3404] + ldr r3, [r5, #1264] + ldr r1, [r8, #4]! + mul r0, r6, r2 lsls r2, r2, #2 adds r6, r6, #1 add r0, r3, r0, lsl #2 bl ftl_memcpy - b .L2420 -.L2433: - ldr r6, [r5, #1260] - movs r1, #255 - movs r2, #16 - ldr fp, .L2434 - mov r0, r6 - bl ftl_memset - movw r3, #61649 - strh r3, [r6] @ movhi - ldr r3, [r8, #2460] - str r3, [r6, #4] - ldrh r3, [r8, #2452] - strh r3, [r6, #2] @ movhi - ldrh r3, [r8, #2456] - strh r3, [r6, #8] @ movhi - ldrh r3, [r8, #2458] - strh r3, [r6, #10] @ movhi - ldr r3, [r8, #2316] - mov r8, #0 - mov r10, r8 - strh r3, [r6, #12] @ movhi -.L2422: - ldr r3, [r7, #3316] - mov ip, #0 - ldrh r1, [r4, #2452] - ldrh r2, [r4, #2454] - str r3, [r5, #1256] - ldr r3, [r7, #3340] - str ip, [r5, #1248] - str ip, [sp, #12] - str r3, [r5, #1260] - orr r3, r2, r1, lsl #10 - ldrh r0, [r6, #10] - str r3, [r5, #1252] - ldrh r3, [r4, #2456] - str r0, [sp] - ldr r0, .L2434+12 - bl printk - ldrh r3, [r4, #2390] - ldrh r2, [r4, #2454] - subs r3, r3, #1 - ldr r9, .L2434+4 - cmp r2, r3 - ldr ip, [sp, #12] - blt .L2423 - ldrh r2, [r9, #2452] - movs r1, #1 - ldr r3, [r9, #2460] - ldr r0, [fp, #228] - adds r3, r3, #1 - str r3, [r9, #2460] - str r3, [r6, #4] - strh r2, [r6, #8] @ movhi - ldrh r3, [r9, #2456] - strh r2, [r9, #2456] @ movhi - ldr r2, .L2434+8 - strh r3, [r9, #2452] @ movhi - lsls r3, r3, #10 - strh ip, [r9, #2454] @ movhi - str r3, [r2, #1252] - mov r2, r1 - str r3, [r0, #4] - bl FlashEraseBlocks -.L2423: - movs r1, #1 - ldr r9, .L2434+8 - mov r2, r1 - mov r3, r1 - add r0, r9, #1248 - bl FlashProgPages - ldrh r3, [r4, #2454] - adds r3, r3, #1 - strh r3, [r4, #2454] @ movhi - ldr r3, [r5, #1248] - adds r2, r3, #1 - bne .L2424 - add r8, r8, #1 - ldr r0, .L2434+16 - ldr r1, [r9, #1252] - uxth r8, r8 - bl printk - cmp r8, #3 - bls .L2422 - ldr r0, .L2434+20 - mov r2, r8 - ldr r1, [r9, #1252] - bl printk - movs r3, #1 - str r3, [r7, #224] - b .L2419 -.L2424: - add r10, r10, #1 - cmp r10, #1 - beq .L2422 + b .L2347 +.L2354: + mov r9, #1 + b .L2349 +.L2351: + add r9, r9, #1 + cmp r9, #1 + ble .L2354 cmp r3, #256 - beq .L2422 -.L2419: - movs r0, #0 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2435: + bne .L2346 + b .L2349 +.L2359: .align 2 -.L2434: +.L2358: .word .LANCHOR2 .word .LANCHOR0 .word .LANCHOR4 .word .LC126 .word .LC127 .word .LC128 + .word .LANCHOR4+1256 .fnend .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 1 .global allocate_data_superblock + .syntax unified .thumb .thumb_func + .fpu softvfp .type allocate_data_superblock, %function allocate_data_superblock: .fnstart @@ -14922,263 +15214,258 @@ push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r5, r0 - ldr r4, .L2492 + ldr r4, .L2409 .pad #20 sub sp, sp, #20 - ldr r3, [r4, #224] + ldr r3, [r4, #228] cmp r3, #0 - bne .L2437 - ldr r9, .L2492+16 - mov r8, r4 -.L2438: - ldr r3, .L2492+4 + bne .L2361 +.L2362: + ldr r3, .L2409+4 + ldr r7, .L2409+8 ldrb r2, [r5, #8] @ zero_extendqisi2 cmp r5, r3 - bne .L2439 - ldrh r7, [r8, #312] - ldr r6, [r8, #1132] - lsrs r1, r7, #1 - mul r0, r6, r7 - adds r3, r1, #1 - add r3, r3, r0, lsr #2 - ldr r0, [r9, #2244] - uxth r3, r3 - cbz r0, .L2462 - ldr r0, [r8, #532] + bne .L2363 + ldrh ip, [r4, #316] + ldr r3, [r4, #1132] + lsr r6, ip, #1 + mul r0, r3, ip + adds r1, r6, #1 + add r1, r1, r0, lsr #2 + ldr r0, [r7, #2248] + uxth r1, r1 + cbz r0, .L2364 + ldr r0, [r4, #532] cmp r0, #39 - bhi .L2462 + bhi .L2364 cmp r0, #2 - bls .L2467 - lsls r0, r7, #31 - bpl .L2440 - cbz r6, .L2464 - b .L2440 -.L2439: + bls .L2391 + tst ip, #1 + beq .L2387 + cmp r3, #0 + beq .L2391 +.L2387: + mov r1, r6 + b .L2364 +.L2363: cmp r2, #1 - bne .L2467 - ldrh r3, [r9, #2340] + bne .L2391 + ldrh r3, [r7, #2344] cmp r3, #1 - beq .L2467 - ldrb r3, [r9, #144] @ zero_extendqisi2 - cbnz r3, .L2467 - ldrh r0, [r8, #312] - ldr r3, [r9, #2244] - lsrs r1, r0, #3 - cbz r3, .L2440 - ldr r3, [r8, #532] - cmp r3, #1 - bhi .L2440 - rsb r0, r0, r0, lsl #3 - ubfx r1, r0, #3, #16 - b .L2440 -.L2462: - mov r1, r3 -.L2440: - cbz r1, .L2441 + beq .L2391 + ldrb r3, [r7, #152] @ zero_extendqisi2 + cmp r3, #0 + bne .L2391 + ldrh r3, [r4, #316] + ldr r0, [r7, #2248] + lsrs r1, r3, #3 + cbz r0, .L2364 + ldr r0, [r4, #532] + cmp r0, #1 + bhi .L2364 + rsb r3, r3, r3, lsl #3 + ubfx r1, r3, #3, #16 +.L2364: + cbz r1, .L2365 subs r1, r1, #1 uxth r1, r1 - b .L2441 -.L2464: - mov r1, r6 - b .L2441 -.L2467: - movs r1, #0 -.L2441: - ldr r0, .L2492+8 +.L2365: + ldr r0, .L2409+12 bl List_pop_index_node - ldrh r3, [r4, #312] + ldrh r3, [r4, #316] + uxth r9, r0 subs r3, r3, #1 - strh r3, [r4, #312] @ movhi - ldrh r3, [r9, #2328] - uxth r6, r0 - cmp r3, r6 - bls .L2438 - ldr r3, [r8, #296] - ldrh r7, [r3, r6, lsl #1] - cmp r7, #0 - bne .L2438 - strh r6, [r5] @ movhi + strh r3, [r4, #316] @ movhi + ldrh r3, [r7, #2332] + cmp r3, r9 + bls .L2362 + ldr r3, [r4, #300] + movw fp, #65535 + mov r6, r9 + ldrh r8, [r3, r9, lsl #1] + cmp r8, #0 + bne .L2362 + strh r9, [r5] @ movhi mov r0, r5 bl make_superblock ldrb r3, [r5, #7] @ zero_extendqisi2 - cbz r3, .L2443 - ldr r0, [r8, #228] + cmp r3, #0 + beq .L2367 + ldr r0, [r4, #232] movs r2, #36 - ldrh ip, [r9, #2320] - add lr, r5, #14 - movw r10, #65535 + ldrh r1, [r7, #2324] + add r10, r5, #16 + mov ip, r10 + mov lr, r8 mov r3, r0 - mla r1, r2, ip, r0 - mov ip, r7 + str r2, [sp, #8] + mla r1, r2, r1, r0 str r1, [sp, #4] - b .L2444 -.L2443: - ldr r3, [r8, #296] - b .L2487 -.L2444: - ldr r1, [sp, #4] - cmp r3, r1 - beq .L2489 - str ip, [r3, #8] - adds r3, r3, #36 - str ip, [r3, #-24] - ldrh r1, [lr, #2]! - cmp r1, r10 - itttt ne - lslne r1, r1, #10 - mlane fp, r2, r7, r0 - addne r7, r7, #1 - uxthne r7, r7 - it ne - strne r1, [fp, #4] - b .L2444 -.L2489: - ldr r3, [r9, #2244] - cbz r3, .L2447 - ldr r3, .L2492+12 +.L2368: + ldr r2, [sp, #4] + cmp r2, r3 + bne .L2370 + ldr r3, [r7, #2248] + cbz r3, .L2371 + ldr r3, .L2409+16 cmp r5, r3 - bne .L2447 - ldr r3, [r8, #232] + bne .L2371 + ldr r3, [r4, #236] ldrh r3, [r3, r6, lsl #1] cmp r3, #40 itt hi movhi r3, #0 - strbhi r3, [r8, #324] -.L2447: + strbhi r3, [r4, #328] +.L2371: ldrb r3, [r5, #8] @ zero_extendqisi2 - ldr r2, [r4, #232] - cbnz r3, .L2448 - ldrh r1, [r2, r6, lsl #1] - cbz r1, .L2468 - ldrh r3, [r9, #2380] + ldr r2, [r4, #236] + cmp r3, #0 + bne .L2372 + ldrh r3, [r2, r6, lsl #1] + cmp r3, #0 + beq .L2373 + ldrh r1, [r7, #2382] add r3, r3, r1 - uxth r3, r3 - b .L2449 -.L2468: - movs r3, #2 -.L2449: +.L2407: strh r3, [r2, r6, lsl #1] @ movhi - mov r0, r6 - ldr r3, [r4, #516] movs r1, #0 + ldr r3, [r4, #516] + mov r0, r9 adds r3, r3, #1 str r3, [r4, #516] bl ftl_set_blk_mode - b .L2450 -.L2448: - ldrh r3, [r2, r6, lsl #1] - lsrs r0, r6, #5 - and r1, r6, #31 - adds r3, r3, #1 - strh r3, [r2, r6, lsl #1] @ movhi - ldr r3, [r4, #520] - ldr r2, [r4, #472] - adds r3, r3, #1 - str r3, [r4, #520] - movs r3, #1 - lsls r3, r3, r1 - ldr r1, [r2, r0, lsl #2] - orrs r3, r3, r1 - str r3, [r2, r0, lsl #2] -.L2450: - ldr r3, [r4, #232] +.L2375: + ldr r3, [r4, #236] ldr r2, [r4, #528] - ldr r0, [r4, #516] + ldrh r0, [r7, #2382] ldrh r3, [r3, r6, lsl #1] - ldrh r1, [r9, #2328] + ldrh r1, [r7, #2332] cmp r3, r2 - ldrh r2, [r9, #2380] + ldr r2, [r4, #516] it hi - strhi r3, [r8, #528] + strhi r3, [r4, #528] ldr r3, [r4, #520] - mla r0, r0, r2, r3 + mla r0, r2, r0, r3 bl __aeabi_uidiv ldr r2, [r4, #3360] - ldr r1, [r4, #228] + ldr r1, [r4, #232] + str r0, [r4, #524] ldr r3, [r2, #16] adds r3, r3, #1 str r3, [r2, #16] - movs r3, #36 - adds r2, r1, #4 - mla r3, r3, r7, r1 - adds r3, r3, #40 - str r0, [r4, #524] -.L2452: - adds r2, r2, #36 + movs r2, #36 + mla r2, r2, r8, r1 + adds r3, r1, #4 + adds r2, r2, #40 +.L2377: + adds r3, r3, #36 cmp r2, r3 - beq .L2490 - ldr r1, [r2, #-36] - bic r1, r1, #1020 - bic r1, r1, #3 - str r1, [r2, #-36] - b .L2452 -.L2490: - ldrb r3, [r9, #144] @ zero_extendqisi2 - cbz r3, .L2454 + bne .L2378 + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbz r3, .L2379 ldrb r3, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #228] + mov r2, r8 + ldr r0, [r4, #232] cmp r3, #1 ite eq moveq r1, #0 movne r1, #1 bl FlashEraseBlocks -.L2454: - mov r2, r7 - ldr r0, [r4, #228] +.L2379: ldrb r1, [r5, #8] @ zero_extendqisi2 - mov r10, #0 + mov r2, r8 + ldr r0, [r4, #232] + mov fp, #0 bl FlashEraseBlocks - add r2, r5, #16 - mov ip, #36 - mov fp, r10 -.L2456: - uxth r3, r10 - cmp r3, r7 - bcs .L2491 - mul r3, ip, r10 - ldr r1, [r4, #228] - adds r0, r1, r3 - ldr r3, [r1, r3] - adds r1, r3, #1 - bne .L2457 - ldr r0, [r0, #4] - add fp, fp, #1 - str ip, [sp, #12] - ubfx r0, r0, #10, #16 - str r3, [sp, #8] - str r2, [sp, #4] - bl FtlBbmMapBadBlock - ldr r3, [sp, #8] - ldr r2, [sp, #4] - ldr ip, [sp, #12] - strh r3, [r2] @ movhi - ldrb r3, [r5, #7] @ zero_extendqisi2 - subs r3, r3, #1 - strb r3, [r5, #7] -.L2457: - add r10, r10, #1 - adds r2, r2, #2 - b .L2456 -.L2491: - cmp fp, #0 - beq .L2459 - mov r0, r6 + mov r3, fp + movs r1, #36 +.L2381: + uxth r2, fp + cmp r8, r2 + bhi .L2383 + cmp r3, #0 + ble .L2384 + mov r0, r9 bl update_multiplier_value bl FtlBbmTblFlush -.L2459: - ldrb r3, [r5, #7] @ zero_extendqisi2 - cbnz r3, .L2460 - ldr r3, [r4, #296] -.L2487: +.L2384: + ldrb r2, [r5, #7] @ zero_extendqisi2 + cmp r2, #0 + bne .L2385 + ldr r3, [r4, #300] movw r2, #65535 strh r2, [r3, r6, lsl #1] @ movhi - b .L2438 -.L2460: - ldr r2, .L2492+16 - ldrh r2, [r2, #2388] - strh r6, [r5] @ movhi - smulbb r3, r2, r3 + b .L2362 +.L2391: + movs r1, #0 + b .L2365 +.L2367: + ldr r3, [r4, #300] + strh fp, [r3, r9, lsl #1] @ movhi + b .L2362 +.L2370: + str lr, [r3, #8] + str lr, [r3, #12] + ldrh r1, [ip], #2 + cmp r1, fp + beq .L2369 + ldr r2, [sp, #8] + lsls r1, r1, #10 + mla r2, r2, r8, r0 + add r8, r8, #1 + uxth r8, r8 + str r1, [r2, #4] +.L2369: + adds r3, r3, #36 + b .L2368 +.L2373: + movs r3, #2 + b .L2407 +.L2372: + ldrh r3, [r2, r6, lsl #1] + mov r0, r9 + adds r3, r3, #1 + strh r3, [r2, r6, lsl #1] @ movhi + ldr r3, [r4, #520] + adds r3, r3, #1 + str r3, [r4, #520] + bl ftl_set_blk_mode.part.9 + b .L2375 +.L2378: + ldr r1, [r3, #-36] + bic r1, r1, #1020 + bic r1, r1, #3 + str r1, [r3, #-36] + b .L2377 +.L2383: + mul r2, r1, fp + ldr r0, [r4, #232] + add ip, r0, r2 + ldr r2, [r0, r2] + adds r0, r2, #1 + bne .L2382 + ldr r0, [ip, #4] + adds r3, r3, #1 + str r1, [sp, #12] + str r2, [sp, #8] + ubfx r0, r0, #10, #16 + str r3, [sp, #4] + bl FtlBbmMapBadBlock + ldr r2, [sp, #8] + ldr r1, [sp, #12] + ldr r3, [sp, #4] + strh r2, [r10] @ movhi + ldrb r2, [r5, #7] @ zero_extendqisi2 + subs r2, r2, #1 + strb r2, [r5, #7] +.L2382: + add fp, fp, #1 + add r10, r10, #2 + b .L2381 +.L2385: + ldrh r3, [r7, #2390] + strh r9, [r5] @ movhi + smulbb r3, r3, r2 movs r2, #0 strh r2, [r5, #2] @ movhi strb r2, [r5, #6] @@ -15188,28 +15475,30 @@ str r2, [r5, #12] adds r2, r2, #1 str r2, [r4, #508] - ldr r2, [r4, #296] + ldr r2, [r4, #300] ldrh r1, [r5] strh r3, [r2, r1, lsl #1] @ movhi -.L2437: +.L2361: movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2493: +.L2410: .align 2 -.L2492: +.L2409: .word .LANCHOR2 - .word .LANCHOR2+412 - .word .LANCHOR2+308 - .word .LANCHOR2+316 + .word .LANCHOR2+416 .word .LANCHOR0 + .word .LANCHOR2+312 + .word .LANCHOR2+320 .fnend .size allocate_data_superblock, .-allocate_data_superblock .align 1 .global FtlGcFreeBadSuperBlk + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: .fnstart @@ -15218,209 +15507,212 @@ 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 r5, .L2507 - str r0, [sp] - ldrh r3, [r5, #1182] - cmp r3, #0 - beq .L2496 - ldr r7, .L2507+4 - mov r10, #0 - mov r8, r5 -.L2495: - ldrh r2, [r7, #2320] - uxth r3, r10 - cmp r2, r3 - bls .L2504 - add r3, r3, r7 - ldr r1, [sp] - mov fp, #0 - ldrb r0, [r3, #2348] @ zero_extendqisi2 - bl V2P_block - ldr r2, .L2507+8 mov r9, r0 -.L2497: - ldrh r3, [r5, #1182] - uxth r4, fp - cmp r3, r4 - bls .L2505 - lsls r6, r4, #1 - add r3, r8, r6 - ldrh r3, [r3, #1184] - cmp r3, r9 - bne .L2498 - mov r1, r9 - ldr r0, .L2507+12 - str r2, [sp, #4] - bl printk - mov r0, r9 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldrh r1, [r8, #1182] - ldr r2, [sp, #4] - adds r3, r2, r6 -.L2499: - cmp r4, r1 - bcs .L2506 - ldrh r0, [r3, #2] - adds r4, r4, #1 - uxth r4, r4 - strh r0, [r3], #2 @ movhi - b .L2499 -.L2506: - subs r1, r1, #1 - strh r1, [r5, #1182] @ movhi -.L2498: - add fp, fp, #1 - b .L2497 -.L2505: - add r10, r10, #1 - b .L2495 -.L2504: + ldr r4, .L2423 + ldrh r3, [r4, #1182] + cbz r3, .L2412 + ldr r8, .L2423+8 + movs r6, #0 + add r10, r4, #1184 +.L2413: + ldrh r2, [r8, #2324] + uxth r3, r6 + cmp r2, r3 + bhi .L2419 bl FtlGcReFreshBadBlk -.L2496: +.L2412: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2508: +.L2419: + uxtah r3, r8, r6 + mov r1, r9 + movs r7, #0 + ldrb r0, [r3, #2350] @ zero_extendqisi2 + bl V2P_block + ldr r2, .L2423+4 + mov fp, r0 +.L2414: + ldrh r3, [r4, #1182] + uxth r5, r7 + cmp r3, r5 + bhi .L2418 + adds r6, r6, #1 + b .L2413 +.L2418: + uxth r3, r7 + add r1, r4, r3, lsl #1 + ldrh r1, [r1, #1184] + cmp r1, fp + bne .L2415 + mov r1, fp + mov r0, r2 + str r3, [sp, #4] + str r2, [sp] + bl printk + mov r0, fp + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [sp, #4] + ldrh r1, [r4, #1182] + ldr r2, [sp] + add r3, r10, r3, lsl #1 +.L2416: + cmp r5, r1 + bcc .L2417 + subs r1, r1, #1 + strh r1, [r4, #1182] @ movhi +.L2415: + adds r7, r7, #1 + b .L2414 +.L2417: + ldrh r0, [r3, #2]! + adds r5, r5, #1 + uxth r5, r5 + strh r0, [r3, #-2] @ movhi + b .L2416 +.L2424: .align 2 -.L2507: +.L2423: .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR2+1184 .word .LC129 + .word .LANCHOR0 .fnend .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 1 .global update_vpc_list + .syntax unified .thumb .thumb_func + .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, .L2518 + ldr r2, .L2433 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r4, r0 - ldr r3, [r2, #296] mov r5, r2 + ldr r3, [r2, #300] ldrh r3, [r3, r0, lsl #1] - cbnz r3, .L2510 + cbnz r3, .L2426 ldrh r1, [r2, #556] cmp r1, r0 - bne .L2511 + bne .L2427 movw r3, #65535 strh r3, [r2, #556] @ movhi - b .L2512 -.L2511: - ldrh r1, [r2, #316] - cmp r1, r0 - beq .L2517 - ldrh r1, [r2, #364] - cmp r1, r0 - beq .L2517 - ldrh r2, [r2, #412] - cmp r2, r0 - beq .L2517 -.L2512: +.L2428: mov r1, r4 - ldr r0, .L2518+4 + ldr r0, .L2433+4 bl List_remove_node - ldrh r3, [r5, #304] + ldrh r3, [r5, #308] mov r0, r4 subs r3, r3, #1 - strh r3, [r5, #304] @ movhi + strh r3, [r5, #308] @ movhi bl free_data_superblock mov r0, r4 bl FtlGcFreeBadSuperBlk - movs r0, #1 + movs r3, #1 + b .L2425 +.L2427: + ldrh r1, [r2, #320] + cmp r1, r0 + beq .L2425 + ldrh r1, [r2, #368] + cmp r1, r0 + beq .L2425 + ldrh r2, [r2, #416] + cmp r2, r0 + bne .L2428 +.L2425: + mov r0, r3 pop {r3, r4, r5, pc} -.L2510: +.L2426: bl List_update_data_list -.L2517: - movs r0, #0 - pop {r3, r4, r5, pc} -.L2519: + movs r3, #0 + b .L2425 +.L2434: .align 2 -.L2518: +.L2433: .word .LANCHOR2 - .word .LANCHOR2+292 + .word .LANCHOR2+296 .fnend .size update_vpc_list, .-update_vpc_list .align 1 .global decrement_vpc_count + .syntax unified .thumb .thumb_func + .fpu softvfp .type decrement_vpc_count, %function decrement_vpc_count: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} movw r3, #65535 cmp r0, r3 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} mov r4, r0 - ldr r5, .L2530 - beq .L2521 - ldr r3, [r5, #296] + ldr r5, .L2445 + beq .L2436 + ldr r3, [r5, #300] ldrh r2, [r3, r0, lsl #1] - cbnz r2, .L2522 - mov r1, r4 - ldr r0, .L2530+4 + cbnz r2, .L2437 + mov r1, r0 + ldr r0, .L2445+4 bl printk - ldr r3, [r5, #296] + ldr r3, [r5, #300] movs r2, #32 - add r0, r5, #308 mov r1, r4 + add r0, r5, #312 strh r2, [r3, r4, lsl #1] @ movhi bl test_node_in_list - cbz r0, .L2523 + cbz r0, .L2438 mov r1, r4 - add r0, r5, #308 + add r0, r5, #312 bl List_remove_node - ldrh r3, [r5, #312] + ldrh r3, [r5, #316] mov r0, r4 subs r3, r3, #1 - strh r3, [r5, #312] @ movhi + strh r3, [r5, #316] @ movhi bl INSERT_DATA_LIST - ldr r3, [r5, #296] - ldr r0, .L2530+8 + ldr r3, [r5, #300] mov r1, r4 + ldr r0, .L2445+8 ldrh r2, [r3, r4, lsl #1] bl printk -.L2523: +.L2438: mov r0, r4 bl FtlGcRefreshBlock - b .L2526 -.L2522: +.L2441: + movs r0, #0 + pop {r3, r4, r5, pc} +.L2437: subs r2, r2, #1 strh r2, [r3, r0, lsl #1] @ movhi -.L2521: +.L2436: ldrh r0, [r5, #3460] movw r3, #65535 - ldr r6, .L2530 cmp r0, r3 - bne .L2525 - strh r4, [r6, #3460] @ movhi - b .L2526 -.L2525: - cmp r0, r4 - beq .L2526 + bne .L2440 + strh r4, [r5, #3460] @ movhi + b .L2441 +.L2440: + cmp r4, r0 + beq .L2441 bl update_vpc_list - strh r4, [r6, #3460] @ movhi adds r0, r0, #0 + strh r4, [r5, #3460] @ movhi it ne movne r0, #1 - pop {r4, r5, r6, pc} -.L2526: - movs r0, #0 - pop {r4, r5, r6, pc} -.L2531: + pop {r3, r4, r5, pc} +.L2446: .align 2 -.L2530: +.L2445: .word .LANCHOR2 .word .LC130 .word .LC131 @@ -15428,8 +15720,10 @@ .size decrement_vpc_count, .-decrement_vpc_count .align 1 .global FtlSlcSuperblockCheck + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: .fnstart @@ -15440,161 +15734,157 @@ mov r4, r0 ldrh r3, [r0, #4] cmp r3, #0 - beq .L2532 + beq .L2447 ldrh r3, [r0] - movw r5, #65535 - cmp r3, r5 - beq .L2532 + movw r6, #65535 + cmp r3, r6 + beq .L2447 ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r7, .L2544 + ldr r5, .L2458 + ldr r7, .L2458+4 adds r3, r3, #8 - ldr r6, .L2544+4 ldrh r3, [r0, r3, lsl #1] -.L2536: - cmp r3, r5 - bne .L2543 -.L2538: - ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r7, #2320] - adds r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - itttt eq - ldrheq r3, [r4, #2] - addeq r3, r3, #1 - strheq r3, [r4, #2] @ movhi - moveq r3, #0 - it eq - strbeq r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - adds r3, r3, #8 - ldrh r3, [r4, r3, lsl #1] - b .L2536 -.L2543: - ldrb r1, [r4, #8] @ zero_extendqisi2 - cmp r1, #1 - bne .L2539 - ldrb r3, [r7, #144] @ zero_extendqisi2 - cbnz r3, .L2539 +.L2451: + cmp r3, r6 + beq .L2453 + ldrb r2, [r4, #8] @ zero_extendqisi2 + cmp r2, #1 + bne .L2454 + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbnz r3, .L2454 ldrh r3, [r4, #2] - add r3, r6, r3, lsl #1 + add r3, r7, r3, lsl #1 ldrh r3, [r3, #1220] - cmp r3, r5 - bne .L2539 + cmp r3, r6 + bne .L2454 ldrh r3, [r4, #4] ldrh r0, [r4] subs r3, r3, #1 strh r3, [r4, #4] @ movhi bl decrement_vpc_count ldrh r2, [r4, #4] - cmp r2, #0 - bne .L2538 + cbnz r2, .L2453 ldrh r3, [r4, #2] strb r2, [r4, #6] adds r3, r3, #1 strh r3, [r4, #2] @ movhi pop {r3, r4, r5, r6, r7, pc} -.L2539: - ldr r2, .L2544 - ldrb r3, [r2, #144] @ zero_extendqisi2 - cbz r3, .L2532 - cmp r1, #1 - bne .L2532 - ldrh r1, [r4, #2] - ldrh r3, [r2, #2390] - cmp r1, r3 - bcc .L2532 - ldr r3, .L2544+4 - ldrh r0, [r4] - ldrh r5, [r4, #4] - ldr r1, [r3, #296] - ldrh r3, [r1, r0, lsl #1] - subs r3, r3, r5 - strh r3, [r1, r0, lsl #1] @ movhi - ldrh r2, [r2, #2388] +.L2453: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldrh r2, [r5, #2324] + adds r3, r3, #1 + uxtb r3, r3 + cmp r2, r3 + strb r3, [r4, #6] + bne .L2452 + ldrh r3, [r4, #2] + adds r3, r3, #1 + strh r3, [r4, #2] @ movhi movs r3, #0 + strb r3, [r4, #6] +.L2452: + ldrb r3, [r4, #6] @ zero_extendqisi2 + adds r3, r3, #8 + ldrh r3, [r4, r3, lsl #1] + b .L2451 +.L2454: + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L2447 + cmp r2, #1 + bne .L2447 + ldrh r2, [r4, #2] + ldrh r3, [r5, #2392] + cmp r2, r3 + bcc .L2447 + ldr r3, .L2458+4 + ldrh r1, [r4] + ldrh r0, [r4, #4] + ldr r2, [r3, #300] + ldrh r3, [r2, r1, lsl #1] + subs r3, r3, r0 + strh r3, [r2, r1, lsl #1] @ movhi + movs r3, #0 + ldrh r2, [r5, #2390] strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi -.L2532: +.L2447: pop {r3, r4, r5, r6, r7, pc} -.L2545: +.L2459: .align 2 -.L2544: +.L2458: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 1 .global get_new_active_ppa + .syntax unified .thumb .thumb_func + .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 + movs r3, #0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - movs r3, #0 strb r3, [r0, #10] mov r4, r0 - ldrb r3, [r0, #6] @ zero_extendqisi2 movw r7, #65535 - ldr r8, .L2563+4 + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r5, .L2475 + ldr r6, .L2475+4 adds r3, r3, #8 - ldr r5, .L2563 ldrh r2, [r0, r3, lsl #1] -.L2547: +.L2461: cmp r2, r7 - ldr r6, .L2563+4 - bne .L2562 -.L2548: - ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r8, #2320] - adds r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - itttt eq - ldrheq r3, [r4, #2] - addeq r3, r3, #1 - strheq r3, [r4, #2] @ movhi - moveq r3, #0 - it eq - strbeq r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - adds r3, r3, #8 - ldrh r2, [r4, r3, lsl #1] - b .L2547 -.L2562: + beq .L2462 ldrb r3, [r4, #8] @ zero_extendqisi2 ldrh r1, [r4, #2] cmp r3, #1 ldrh r3, [r4, #4] - bne .L2550 - ldrb r0, [r8, #144] @ zero_extendqisi2 - cbnz r0, .L2550 - add r0, r5, r1, lsl #1 + bne .L2464 + ldrb r0, [r5, #152] @ zero_extendqisi2 + cbnz r0, .L2464 + add r0, r6, r1, lsl #1 ldrh r0, [r0, #1220] cmp r0, r7 - bne .L2550 + bne .L2464 subs r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2548 -.L2550: +.L2462: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldrh r2, [r5, #2324] + adds r3, r3, #1 + uxtb r3, r3 + cmp r2, r3 + strb r3, [r4, #6] + bne .L2463 + ldrh r3, [r4, #2] + adds r3, r3, #1 + strh r3, [r4, #2] @ movhi + movs r3, #0 + strb r3, [r4, #6] +.L2463: + ldrb r3, [r4, #6] @ zero_extendqisi2 + adds r3, r3, #8 + ldrh r2, [r4, r3, lsl #1] + b .L2461 +.L2464: + ldr r8, .L2475+4 + orr r6, r1, r2, lsl #10 movw r7, #65535 - orr r5, r1, r2, lsl #10 - mov r8, r7 subs r3, r3, #1 strh r3, [r4, #4] @ movhi -.L2551: +.L2465: ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r1, [r6, #2320] -.L2553: + ldrh r1, [r5, #2324] +.L2467: adds r3, r3, #1 uxtb r3, r3 cmp r3, r1 @@ -15606,60 +15896,57 @@ add r2, r3, #8 ldrh r2, [r4, r2, lsl #1] cmp r2, r7 - beq .L2553 + beq .L2467 strb r3, [r4, #6] ldrb r3, [r4, #8] @ zero_extendqisi2 cmp r3, #1 - bne .L2558 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbnz r3, .L2555 - ldrh r2, [r4, #2] - ldr r3, .L2563 - add r3, r3, r2, lsl #1 + bne .L2460 + ldrb r2, [r5, #152] @ zero_extendqisi2 + ldrh r3, [r4, #2] + cbnz r2, .L2469 + add r3, r8, r3, lsl #1 ldrh r3, [r3, #1220] - cmp r3, r8 - bne .L2555 + cmp r3, r7 + bne .L2460 ldrh r3, [r4, #4] - cbz r3, .L2555 + cbz r3, .L2460 subs r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2551 -.L2555: - ldrb r3, [r6, #144] @ zero_extendqisi2 - ldr r2, .L2563+4 - cbz r3, .L2558 - ldrh r1, [r4, #2] - ldrh r3, [r2, #2390] - cmp r1, r3 - bcc .L2558 - ldr r3, .L2563 - ldrh r0, [r4] - ldrh r6, [r4, #4] - ldr r1, [r3, #296] - ldrh r3, [r1, r0, lsl #1] - subs r3, r3, r6 - strh r3, [r1, r0, lsl #1] @ movhi - ldrh r2, [r2, #2388] + b .L2465 +.L2469: + ldrh r2, [r5, #2392] + cmp r3, r2 + bcc .L2460 + ldr r3, .L2475+4 + ldrh r1, [r4] + ldrh r0, [r4, #4] + ldr r2, [r3, #300] + ldrh r3, [r2, r1, lsl #1] + subs r3, r3, r0 + strh r3, [r2, r1, lsl #1] @ movhi movs r3, #0 + ldrh r2, [r5, #2390] strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi -.L2558: - mov r0, r5 +.L2460: + mov r0, r6 pop {r4, r5, r6, r7, r8, pc} -.L2564: +.L2476: .align 2 -.L2563: - .word .LANCHOR2 +.L2475: .word .LANCHOR0 + .word .LANCHOR2 .fnend .size get_new_active_ppa, .-get_new_active_ppa .align 1 .global FtlVpcTblFlush + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlVpcTblFlush, %function FtlVpcTblFlush: .fnstart @@ -15667,249 +15954,245 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - ldr r4, .L2588 - ldr r3, [r4, #224] + ldr r4, .L2500 + ldr r3, [r4, #228] cmp r3, #0 - bne .L2567 - ldr r5, .L2588+4 + bne .L2479 + ldr r5, .L2500+4 movs r1, #255 ldr r2, [r4, #3316] ldr r7, [r4, #3340] - ldr r6, .L2588+8 - str r2, [r5, #1256] + ldr r6, .L2500+8 + str r2, [r5, #1264] ldrh r2, [r4, #540] - str r7, [r5, #1260] + str r7, [r5, #1268] str r3, [r7, #12] strh r2, [r7, #2] @ movhi movw r2, #61604 strh r2, [r7] @ movhi ldr r2, [r4, #548] str r3, [r7, #8] - ldr r3, .L2588+12 + ldr r3, .L2500+12 str r2, [r7, #4] - ldrh r2, [r4, #318] - str r3, [r4, #240] - ldr r3, .L2588+16 + ldrh r2, [r4, #322] str r3, [r4, #244] + ldr r3, .L2500+16 + str r3, [r4, #248] ldrh r3, [r4, #546] - strh r3, [r4, #248] @ movhi - ldrh r3, [r6, #2342] - strb r3, [r4, #250] - ldrh r3, [r4, #316] - strh r3, [r4, #254] @ movhi - ldrb r3, [r4, #322] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - strh r3, [r4, #256] @ movhi - ldrb r3, [r4, #324] @ zero_extendqisi2 - ldrh r2, [r4, #366] - strb r3, [r4, #251] - ldrh r3, [r4, #364] + strh r3, [r4, #252] @ movhi + ldrh r3, [r6, #2346] + strb r3, [r4, #254] + ldrh r3, [r4, #320] strh r3, [r4, #258] @ movhi - ldrb r3, [r4, #370] @ zero_extendqisi2 + ldrb r3, [r4, #326] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 + ldrh r2, [r4, #370] strh r3, [r4, #260] @ movhi - ldrb r3, [r4, #372] @ zero_extendqisi2 - strb r3, [r4, #252] - ldrh r3, [r4, #412] + ldrb r3, [r4, #328] @ zero_extendqisi2 + strb r3, [r4, #255] + ldrh r3, [r4, #368] strh r3, [r4, #262] @ movhi - ldrh r2, [r4, #414] - ldrb r3, [r4, #418] @ zero_extendqisi2 - ldr r0, [r5, #1256] + ldrb r3, [r4, #374] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 strh r3, [r4, #264] @ movhi - ldrb r3, [r4, #420] @ zero_extendqisi2 - ldrh r2, [r6, #2398] - strb r3, [r4, #253] + ldrb r3, [r4, #376] @ zero_extendqisi2 + strb r3, [r4, #256] + ldrh r3, [r4, #416] + strh r3, [r4, #266] @ movhi + ldrh r2, [r4, #418] + ldrb r3, [r4, #422] @ zero_extendqisi2 + ldr r0, [r5, #1264] + orr r3, r3, r2, lsl #6 + ldrh r2, [r6, #2400] + strh r3, [r4, #268] @ movhi + ldrb r3, [r4, #424] @ zero_extendqisi2 + strb r3, [r4, #257] ldr r3, [r4, #516] - str r3, [r4, #272] - ldr r3, [r4, #508] - str r3, [r4, #280] - ldr r3, [r4, #512] str r3, [r4, #276] + ldr r3, [r4, #508] + str r3, [r4, #284] + ldr r3, [r4, #512] + str r3, [r4, #280] ldrh r3, [r4, #1174] - strh r3, [r4, #284] @ movhi + strh r3, [r4, #288] @ movhi ldrh r3, [r4, #1176] - strh r3, [r4, #286] @ movhi + strh r3, [r4, #290] @ movhi bl ftl_memset - add r1, r4, #240 movs r2, #48 - ldr r0, [r5, #1256] + add r1, r4, #244 + ldr r0, [r5, #1264] bl ftl_memcpy - ldrh r2, [r6, #2328] - ldr r0, [r5, #1256] - ldr r1, [r4, #296] + ldrh r2, [r6, #2332] + ldr r0, [r5, #1264] + ldr r1, [r4, #300] lsls r2, r2, #1 adds r0, r0, #48 bl ftl_memcpy - ldrh r2, [r6, #2328] - ldr r0, [r5, #1256] - ldr r1, [r4, #472] - lsls r3, r2, #1 - lsrs r2, r2, #3 - adds r3, r3, #51 + ldrh r0, [r6, #2332] + ldr r3, [r5, #1264] + ldr r1, [r6, #32] + lsrs r2, r0, #3 + lsls r0, r0, #1 + adds r0, r0, #51 adds r2, r2, #4 - bic r3, r3, #3 + bic r0, r0, #3 add r0, r0, r3 bl ftl_memcpy - ldrh r3, [r6, #2432] - cbz r3, .L2568 - ldrh r2, [r6, #2328] - ldr r0, [r5, #1256] + ldrh r3, [r6, #2436] + cbz r3, .L2480 + ldrh r0, [r6, #2332] + ldrh r2, [r6, #2428] ldr r1, [r4, #3388] - lsrs r3, r2, #3 - add r3, r3, r2, lsl #1 - ldrh r2, [r6, #2424] + lsrs r3, r0, #3 + lsls r2, r2, #2 + add r3, r3, r0, lsl #1 + ldr r0, [r5, #1264] adds r3, r3, #52 ubfx r3, r3, #2, #14 - lsls r2, r2, #2 add r0, r0, r3, lsl #2 bl ftl_memcpy -.L2568: - movs r0, #0 - ldr r10, .L2588 - bl FtlUpdateVaildLpn - ldr fp, .L2588+8 +.L2480: + ldr fp, .L2500+24 mov r8, #0 movw r9, #65535 -.L2569: + mov r10, r8 + movs r0, #0 + bl FtlUpdateVaildLpn +.L2481: ldr r3, [r4, #3316] - ldrh r2, [r4, #540] ldrh r1, [r4, #542] - str r3, [r5, #1256] + ldrh r2, [r4, #540] + str r3, [r5, #1264] ldr r3, [r4, #3340] - str r3, [r5, #1260] + str r3, [r5, #1268] orr r3, r1, r2, lsl #10 - str r3, [r5, #1252] - ldrh r3, [r6, #2390] + str r3, [r5, #1260] + ldrh r3, [r6, #2392] subs r3, r3, #1 cmp r1, r3 - blt .L2570 - movs r3, #0 - ldrh r9, [r10, #544] - strh r3, [r10, #542] @ movhi - strh r2, [r10, #544] @ movhi + blt .L2482 + ldrh r9, [r4, #544] + strh r10, [r4, #542] @ movhi + strh r2, [r4, #544] @ movhi bl FtlFreeSysBlkQueueOut - ldr r3, [r10, #508] - ldr r1, .L2588+4 + ldr r3, [r4, #508] + strh r0, [r4, #540] @ movhi adds r2, r3, #1 - str r2, [r10, #508] - str r3, [r10, #548] + str r3, [r4, #548] + str r2, [r4, #508] lsls r2, r0, #10 - strh r0, [r10, #540] @ movhi - str r2, [r1, #1252] + str r2, [r5, #1260] str r3, [r7, #4] strh r0, [r7, #2] @ movhi -.L2570: - ldrb r3, [r6] @ zero_extendqisi2 - cbz r3, .L2571 +.L2482: + ldrb r3, [r6, #36] @ zero_extendqisi2 + cbz r3, .L2483 + ldrh r1, [r6, #2400] ldr r0, [r4, #3316] - ldrh r1, [fp, #2398] bl js_hash str r0, [r7, #12] -.L2571: - movs r1, #1 - ldr r0, .L2588+20 - mov r2, r1 - mov r3, r1 +.L2483: + movs r3, #1 + mov r0, fp + mov r2, r3 + mov r1, r3 bl FlashProgPages ldrh r3, [r4, #542] - ldr r2, [r5, #1248] + ldr r2, [r5, #1256] adds r3, r3, #1 - adds r1, r2, #1 uxth r3, r3 + adds r1, r2, #1 strh r3, [r4, #542] @ movhi - bne .L2572 + bne .L2484 cmp r3, #1 add r8, r8, #1 it eq - ldrheq r3, [r6, #2390] + ldrheq r3, [r6, #2392] uxth r8, r8 itt eq addeq r3, r3, #-1 - strheq r3, [r10, #542] @ movhi + strheq r3, [r4, #542] @ movhi cmp r8, #3 - bls .L2569 - ldr r0, .L2588+24 + bls .L2481 mov r2, r8 - ldr r1, [r5, #1252] + ldr r1, [r5, #1260] + ldr r0, .L2500+20 bl printk movs r3, #1 - str r3, [r4, #224] - b .L2567 -.L2572: - cmp r3, #1 - beq .L2569 - cmp r2, #256 - beq .L2569 - movw r3, #65535 - cmp r9, r3 - beq .L2567 - mov r0, r9 - movs r1, #1 - bl FtlFreeSysBlkQueueIn -.L2567: + str r3, [r4, #228] +.L2479: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2589: +.L2484: + cmp r3, #1 + beq .L2481 + cmp r2, #256 + beq .L2481 + movw r3, #65535 + cmp r9, r3 + beq .L2479 + movs r1, #1 + mov r0, r9 + bl FtlFreeSysBlkQueueIn + b .L2479 +.L2501: .align 2 -.L2588: +.L2500: .word .LANCHOR2 .word .LANCHOR4 .word .LANCHOR0 .word 1179929683 .word 1342177379 - .word .LANCHOR4+1248 .word .LC132 + .word .LANCHOR4+1256 .fnend .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 1 .global FtlSuperblockPowerLostFix + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r4, r0 - ldr r5, .L2606 - .pad #44 - sub sp, sp, #44 - ldr r3, [r5, #224] - cmp r3, #0 - bne .L2590 - ldr r2, .L2606+4 - ldrb r6, [r2, #144] @ zero_extendqisi2 - mov r8, r2 - cbz r6, .L2605 - ldrb r6, [r0, #8] @ zero_extendqisi2 - cmp r6, #1 - bne .L2601 - ldrh fp, [r0, #4] - b .L2592 -.L2601: - mov r6, r3 -.L2605: - mov fp, #12 -.L2592: - ldr r7, [r5, #3340] + ldr r5, .L2517 + .pad #40 + sub sp, sp, #40 + ldr r10, [r5, #228] + cmp r10, #0 + bne .L2502 + ldr r3, .L2517+4 + ldrb r2, [r3, #152] @ zero_extendqisi2 + mov r8, r3 + cmp r2, #0 + beq .L2513 + ldrb r3, [r0, #8] @ zero_extendqisi2 + cmp r3, #1 + bne .L2513 + ldrh r7, [r0, #4] + mov r10, r3 +.L2504: mov r3, #-1 + ldr r6, [r5, #3340] str r3, [sp, #20] mov r9, #0 ldr r3, [r5, #3316] movw r2, #61589 - str r7, [sp, #16] - ldr r10, .L2606 + str r6, [sp, #16] 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, [r4] - strh r9, [r7] @ movhi - strh r3, [r7, #2] @ movhi + strh r9, [r6] @ movhi + strh r3, [r6, #2] @ movhi ldr r3, [r5, #3316] str r2, [r3] add r2, r2, #304087040 @@ -15917,60 +16200,64 @@ add r2, r2, #1269760 addw r2, r2, #1507 str r2, [r3, #4] -.L2593: - adds fp, fp, #-1 - bcc .L2596 +.L2505: + adds r7, r7, #-1 + bcc .L2508 ldrh r3, [r4, #4] - cbnz r3, .L2594 -.L2596: - ldr r2, [r5, #296] + cbnz r3, .L2506 +.L2508: + ldr r2, [r5, #300] ldrh r1, [r4] ldrh r0, [r4, #4] ldrh r3, [r2, r1, lsl #1] subs r3, r3, r0 strh r3, [r2, r1, lsl #1] @ movhi - ldrh r3, [r8, #2388] + ldrh r3, [r8, #2390] strh r3, [r4, #2] @ movhi movs r3, #0 strb r3, [r4, #6] strh r3, [r4, #4] @ movhi - b .L2590 -.L2594: +.L2502: + add sp, sp, #40 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2513: + movs r7, #12 + b .L2504 +.L2506: mov r0, r4 bl get_new_active_ppa str r0, [sp, #8] adds r0, r0, #1 - beq .L2596 + beq .L2508 ldr r3, [r5, #512] movs r1, #1 add r0, sp, #4 - str r3, [r7, #4] + str r3, [r6, #4] adds r3, r3, #1 adds r2, r3, #1 - mov r2, r6 + mov r2, r10 it eq moveq r3, r9 - str r3, [r10, #512] + str r3, [r5, #512] movs r3, #0 bl FlashProgPages ldrh r0, [r4] bl decrement_vpc_count - b .L2593 -.L2590: - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2607: + b .L2505 +.L2518: .align 2 -.L2606: +.L2517: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 1 .global ftl_map_blk_gc + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_map_blk_gc, %function ftl_map_blk_gc: .fnstart @@ -15981,20 +16268,19 @@ .pad #12 mov r4, r0 ldr r5, [r0, #12] - ldr r8, [r0, #24] + ldr r10, [r0, #24] bl ftl_free_no_use_map_blk ldrh r3, [r4, #10] ldrh r2, [r4, #8] subs r3, r3, #4 cmp r2, r3 - blt .L2609 + blt .L2520 uxth r0, r0 - ldrh r10, [r5, r0, lsl #1] - cmp r10, #0 - beq .L2609 + ldrh r9, [r5, r0, lsl #1] + cmp r9, #0 + beq .L2520 ldr r3, [r4, #32] - cmp r3, #0 - bne .L2609 + cbnz r3, .L2520 movs r2, #1 str r2, [r4, #32] strh r3, [r5, r0, lsl #1] @ movhi @@ -16002,99 +16288,103 @@ ldrh r2, [r4, #2] subs r3, r3, #1 strh r3, [r4, #8] @ movhi - ldr r3, .L2621 - ldrh r3, [r3, #2390] + ldr r3, .L2531 + ldrh r3, [r3, #2392] cmp r2, r3 - bcc .L2610 + bcc .L2521 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2610: - ldr r6, .L2621+4 - mov fp, #0 - ldr r9, .L2621+16 -.L2611: +.L2521: + ldr r5, .L2531+4 + movs r6, #0 + ldr fp, .L2531+16 +.L2522: ldrh r2, [r4, #6] - uxth r5, fp - cmp r2, r5 - bls .L2620 - ldr r2, [r8, r5, lsl #2] - add ip, r8, r5, lsl #2 - cmp r10, r2, lsr #10 - bne .L2612 - ldr r2, [r9, #3320] + uxth r3, r6 + cmp r2, r3 + bhi .L2527 movs r1, #1 - ldr r7, [r9, #3340] - ldr r0, .L2621+8 - str r2, [r6, #1256] - str r7, [r6, #1260] - ldr r2, [r8, r5, lsl #2] - str ip, [sp, #4] - str r2, [r6, #1252] - mov r2, r1 - bl FlashReadPages - ldr r2, [r6, #1248] - adds r2, r2, #1 - ldr ip, [sp, #4] - bne .L2613 -.L2615: - movs r3, #0 - str r3, [ip] - ldr r3, .L2621+4 - ldrh r2, [r7, #8] - ldr r0, .L2621+12 - ldr r1, [r3, #1252] - bl printk - ldr r3, .L2621+16 - movs r2, #1 - str r2, [r3, #224] - b .L2614 -.L2613: - ldrh r1, [r7, #8] - cmp r1, r5 - bne .L2615 - ldrh r0, [r7] - ldrh r2, [r4, #4] - cmp r0, r2 - bne .L2615 - mov r0, r4 - ldr r2, [r6, #1256] - bl FtlMapWritePage -.L2612: - add fp, fp, #1 - b .L2611 -.L2620: - mov r0, r10 - movs r1, #1 + mov r0, r9 bl FtlFreeSysBlkQueueIn movs r3, #0 str r3, [r4, #32] -.L2609: - ldr r3, .L2621 +.L2520: + ldr r3, .L2531 ldrh r2, [r4, #2] - ldrh r3, [r3, #2390] + ldrh r3, [r3, #2392] cmp r2, r3 - bcc .L2614 + bcc .L2525 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2614: + b .L2525 +.L2527: + uxth r7, r6 + add r2, r10, r7, lsl #2 + str r2, [sp] + ldr r2, [r10, r7, lsl #2] + cmp r9, r2, lsr #10 + bne .L2523 + ldr r2, [fp, #3320] + ldr r8, [fp, #3340] + ldr r0, .L2531+8 + str r2, [r5, #1264] + str r8, [r5, #1268] + ldr r2, [r10, r7, lsl #2] + str r3, [sp, #4] + str r2, [r5, #1260] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #1256] + ldr r3, [sp, #4] + adds r2, r2, #1 + bne .L2524 +.L2526: + ldr r2, [sp] + movs r3, #0 + ldr r0, .L2531+12 + str r3, [r2] + ldrh r2, [r8, #8] + ldr r1, [r5, #1260] + bl printk + movs r3, #1 + str r3, [fp, #228] +.L2525: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2622: +.L2524: + ldrh r2, [r8, #8] + cmp r2, r3 + bne .L2526 + ldrh r2, [r8] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L2526 + ldr r2, [r5, #1264] + mov r1, r7 + mov r0, r4 + bl FtlMapWritePage +.L2523: + adds r6, r6, #1 + b .L2522 +.L2532: .align 2 -.L2621: +.L2531: .word .LANCHOR0 .word .LANCHOR4 - .word .LANCHOR4+1248 + .word .LANCHOR4+1256 .word .LC133 .word .LANCHOR2 .fnend .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 1 .global Ftl_write_map_blk_to_last_page + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftl_write_map_blk_to_last_page, %function Ftl_write_map_blk_to_last_page: .fnstart @@ -16103,16 +16393,14 @@ push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r4, r0 - ldr r6, .L2634 - ldr r7, [r0, #12] - ldr r10, [r0, #24] - ldr r5, [r6, #224] - cmp r5, #0 - bne .L2624 + ldr r6, .L2543 + ldr r5, [r6, #228] + cbnz r5, .L2534 ldrh r3, [r0] movw r2, #65535 + ldr r7, [r0, #12] cmp r3, r2 - bne .L2625 + bne .L2535 ldrh r3, [r0, #8] adds r3, r3, #1 strh r3, [r0, #8] @ movhi @@ -16120,88 +16408,92 @@ strh r0, [r7] @ movhi ldr r3, [r4, #28] strh r5, [r4, #2] @ movhi - adds r3, r3, #1 strh r5, [r4] @ movhi + adds r3, r3, #1 str r3, [r4, #28] - b .L2624 -.L2625: - ldrh r9, [r7, r3, lsl #1] +.L2534: + movs r0, #0 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2535: + ldrh r10, [r7, r3, lsl #1] movs r1, #255 - ldr fp, .L2634+12 ldrh r3, [r0, #2] + ldr r8, .L2543+8 ldr r7, [r6, #3340] - orr r3, r3, r9, lsl #10 - str r3, [fp, #1252] + ldr fp, [r0, #24] + orr r3, r3, r10, lsl #10 + ldr r9, .L2543+12 + str r7, [r8, #1268] + str r3, [r8, #1260] ldr r3, [r6, #3316] - str r7, [fp, #1260] - ldr r8, .L2634+4 - str r3, [fp, #1256] + str r3, [r8, #1264] ldr r3, [r0, #28] str r3, [r7, #4] movw r3, #64245 strh r3, [r7, #8] @ movhi ldrh r3, [r0, #4] - strh r9, [r7, #2] @ movhi + strh r10, [r7, #2] @ movhi strh r3, [r7] @ movhi - ldrh r2, [r8, #2390] + ldrh r2, [r9, #2392] ldr r0, [r6, #3316] lsls r2, r2, #3 bl ftl_memset - mov r1, r5 -.L2626: - ldrh r2, [r4, #6] - uxth r3, r1 - cmp r2, r3 - bls .L2633 - ldr r2, [r10, r3, lsl #2] - cmp r9, r2, lsr #10 - bne .L2627 - adds r5, r5, #1 - ldr r2, [r6, #3316] - uxth r5, r5 - str r3, [r2, r5, lsl #3] - ldr r2, [r10, r3, lsl #2] - ldr r3, [r6, #3316] - add r3, r3, r5, lsl #3 - str r2, [r3, #4] -.L2627: - adds r1, r1, #1 - b .L2626 -.L2633: - ldrb r3, [r8] @ zero_extendqisi2 - cbz r3, .L2629 - ldr r3, .L2634+4 - ldr r0, [fp, #1256] - ldrh r1, [r3, #2398] + mov r3, r5 + mov r2, r5 +.L2536: + ldrh r0, [r4, #6] + uxth r1, r3 + cmp r0, r1 + bhi .L2538 + ldrb r3, [r9, #36] @ zero_extendqisi2 + cbz r3, .L2539 + ldrh r1, [r9, #2400] + ldr r0, [r8, #1264] bl js_hash str r0, [r7, #12] -.L2629: - movs r1, #1 +.L2539: + movs r2, #1 movs r3, #0 - ldr r0, .L2634+8 - mov r2, r1 + mov r1, r2 + ldr r0, .L2543+4 bl FlashProgPages ldrh r3, [r4, #2] mov r0, r4 adds r3, r3, #1 strh r3, [r4, #2] @ movhi bl ftl_map_blk_gc -.L2624: - movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2635: + b .L2534 +.L2538: + uxth r0, r3 + ldr r1, [fp, r0, lsl #2] + cmp r10, r1, lsr #10 + bne .L2537 + ldr r1, [r6, #3316] + adds r2, r2, #1 + uxth r2, r2 + str r0, [r1, r2, lsl #3] + ldr r1, [r6, #3316] + ldr r0, [fp, r0, lsl #2] + add r1, r1, r2, lsl #3 + str r0, [r1, #4] +.L2537: + adds r3, r3, #1 + b .L2536 +.L2544: .align 2 -.L2634: +.L2543: .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR4+1248 + .word .LANCHOR4+1256 .word .LANCHOR4 + .word .LANCHOR0 .fnend .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 1 .global FtlMapWritePage + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlMapWritePage, %function FtlMapWritePage: .fnstart @@ -16210,142 +16502,140 @@ 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 - movs r6, #0 - ldr r7, .L2660 mov r4, r0 - mov r9, r1 + ldr r8, .L2569+20 + mov fp, r1 + movs r6, #0 + ldr r7, .L2569 + mov r9, r8 str r2, [sp] -.L2637: - ldr r3, [r7, #492] - ldr fp, .L2660+4 +.L2546: + ldr r3, [r8, #492] adds r3, r3, #1 - str r3, [r7, #492] - ldr r3, .L2660+4 + str r3, [r8, #492] + ldrh r3, [r7, #2392] ldrh r2, [r4, #2] - ldrh r3, [r3, #2390] subs r3, r3, #1 cmp r2, r3 - bge .L2638 + bge .L2547 ldrh r2, [r4] movw r3, #65535 cmp r2, r3 - bne .L2639 -.L2638: + bne .L2548 +.L2547: mov r0, r4 bl Ftl_write_map_blk_to_last_page -.L2639: - ldr r3, .L2660 - ldr r1, [r3, #224] +.L2548: + ldr r1, [r9, #228] cmp r1, #0 - bne .L2655 + bne .L2564 ldrh r2, [r4] ldr r3, [r4, #12] - ldr r5, .L2660+8 - ldr r0, [r7, #3340] - ldrh r8, [r3, r2, lsl #1] + ldr r5, .L2569+4 + ldr r0, [r9, #3340] + ldrh r10, [r3, r2, lsl #1] movs r2, #16 ldrh r3, [r4, #2] - mov r10, r5 - str r0, [r5, #1260] - orr r3, r3, r8, lsl #10 - str r3, [r5, #1252] + str r0, [r5, #1268] + orr r3, r3, r10, lsl #10 + str r3, [r5, #1260] ldr r3, [sp] - str r3, [r5, #1256] + str r3, [r5, #1264] bl ftl_memset + ldr r3, [r5, #1268] ldr r2, [r4, #28] - ldr r3, [r5, #1260] + strh fp, [r3, #8] @ movhi str r2, [r3, #4] - strh r9, [r3, #8] @ movhi ldrh r2, [r4, #4] - strh r8, [r3, #2] @ movhi - strh r2, [r3] @ movhi - ldrb r2, [fp] @ zero_extendqisi2 - cbz r2, .L2641 str r3, [sp, #4] - ldr r3, .L2660+4 - ldr r0, [r5, #1256] - ldrh r1, [r3, #2398] + strh r10, [r3, #2] @ movhi + strh r2, [r3] @ movhi + ldrb r2, [r7, #36] @ zero_extendqisi2 + cbz r2, .L2550 + ldrh r1, [r7, #2400] + ldr r0, [r5, #1264] bl js_hash ldr r3, [sp, #4] str r0, [r3, #12] -.L2641: - ldr ip, .L2660+8 - movs r1, #1 - add r0, ip, #1248 - mov r2, r1 - mov r3, r1 - str ip, [sp, #4] +.L2550: + movs r3, #1 + ldr r0, .L2569+8 + mov r2, r3 + mov r1, r3 bl FlashProgPages ldrh r3, [r4, #2] adds r3, r3, #1 uxth r3, r3 strh r3, [r4, #2] @ movhi - ldr r2, [r5, #1248] + ldr r2, [r5, #1256] adds r1, r2, #1 - ldr ip, [sp, #4] - bne .L2642 - ldr r0, .L2660+12 + bne .L2551 + ldr r1, [r5, #1260] adds r6, r6, #1 - ldr r1, [ip, #1252] + ldr r0, .L2569+12 + uxth r6, r6 bl printk ldrh r3, [r4, #2] - uxth r6, r6 cmp r3, #2 ittt ls - ldrhls r3, [fp, #2390] + ldrhls r3, [r7, #2392] addls r3, r3, #-1 strhls r3, [r4, #2] @ movhi cmp r6, #3 - bls .L2637 + bls .L2546 + ldr r3, .L2569+4 mov r2, r6 - ldr r0, .L2660+16 - ldr r1, [r10, #1252] + ldr r0, .L2569+16 + ldr r1, [r3, #1260] bl printk - ldr r3, .L2660 - movs r2, #1 - str r2, [r3, #224] - b .L2655 -.L2642: - cbz r2, .L2645 - cmp r3, #1 - strh r8, [r4, #40] @ movhi - bne .L2646 -.L2647: - movs r3, #0 - str r3, [r4, #36] - b .L2637 -.L2646: - cmp r2, #256 - b .L2659 -.L2645: - cmp r3, #1 -.L2659: - beq .L2647 - ldr r3, [r4, #36] - cmp r3, #0 - bne .L2647 - ldr r2, [r10, #1252] - ldr r3, [r4, #24] - str r2, [r3, r9, lsl #2] -.L2655: + movs r3, #1 + str r3, [r9, #228] +.L2564: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2661: +.L2551: + cbz r2, .L2554 + cmp r3, #1 + strh r10, [r4, #40] @ movhi + bne .L2555 +.L2556: + movs r3, #0 + str r3, [r4, #36] + b .L2546 +.L2555: + cmp r2, #256 +.L2568: + beq .L2556 + ldr r3, [r4, #36] + cmp r3, #0 + bne .L2556 + ldr r3, .L2569+4 + ldr r2, [r3, #1260] + ldr r3, [r4, #24] + str r2, [r3, fp, lsl #2] + b .L2564 +.L2554: + cmp r3, #1 + b .L2568 +.L2570: .align 2 -.L2660: - .word .LANCHOR2 +.L2569: .word .LANCHOR0 .word .LANCHOR4 + .word .LANCHOR4+1256 .word .LC134 .word .LC135 + .word .LANCHOR2 .fnend .size FtlMapWritePage, .-FtlMapWritePage .align 1 .global flush_l2p_region + .syntax unified .thumb .thumb_func + .fpu softvfp .type flush_l2p_region, %function flush_l2p_region: .fnstart @@ -16354,31 +16644,33 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r4, #12 - ldr r5, .L2663 + ldr r5, .L2572 muls r4, r0, r4 + ldr r3, [r5, #464] add r0, r5, #3408 - ldr r3, [r5, #460] adds r2, r3, r4 ldrh r1, [r3, r4] ldr r2, [r2, #8] bl FtlMapWritePage - ldr r3, [r5, #460] + ldr r3, [r5, #464] movs r0, #0 add r4, r4, r3 ldr r3, [r4, #4] bic r3, r3, #-2147483648 str r3, [r4, #4] pop {r3, r4, r5, pc} -.L2664: +.L2573: .align 2 -.L2663: +.L2572: .word .LANCHOR2 .fnend .size flush_l2p_region, .-flush_l2p_region .align 1 .global FtlMapTblRecovery + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlMapTblRecovery, %function FtlMapTblRecovery: .fnstart @@ -16388,225 +16680,79 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #36 sub sp, sp, #36 - ldr r3, [r0, #16] + ldr r3, [r0, #24] mov r4, r0 - ldrh r9, [r0, #6] movs r1, #0 - ldr r7, [r0, #24] + movs r7, #0 + ldr fp, .L2615+8 + str r3, [sp, #4] + ldr r3, [r0, #12] + ldr r5, .L2615 + ldr r6, .L2615+4 + str r3, [sp, #8] + ldr r3, [r0, #16] + str r3, [sp, #20] + ldrh r3, [r0, #6] str r3, [sp, #12] ldrh r3, [r0, #8] - lsl r2, r9, #2 - ldr r8, [r0, #12] - mov r0, r7 - ldr r10, .L2707+12 - str r3, [sp, #8] - bl ftl_memset - ldr r3, .L2707 - movs r0, #1 - ldr r2, .L2707+4 - str r0, [r4, #36] - ldr r1, [r3, #3316] - ldr r6, [r3, #3340] - mov r5, r2 - str r1, [r2, #1256] - movw r1, #65535 - str r6, [r2, #1260] - strh r1, [r4] @ movhi - strh r1, [r4, #2] @ movhi - movs r1, #0 - str r1, [r4, #32] - str r1, [r4, #28] - str r1, [sp, #4] - str r3, [sp, #20] -.L2666: - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - ldr fp, .L2707+12 - sxth r3, r2 - cmp r3, r1 - bge .L2684 - ldr r1, [sp, #8] - subs r1, r1, #1 - cmp r3, r1 - lsl r1, r3, #1 - bne .L2667 - ldrh r0, [r8, r3, lsl #1] - str r2, [sp, #16] - add r2, r8, r1 - movs r1, #1 - str r2, [sp, #4] - str r3, [sp, #8] - bl FtlGetLastWrittenPage - ldr r10, .L2707+4 - mov r8, #0 - ldr r2, [sp, #16] - adds r1, r0, #1 + ldr r0, [sp, #4] + str r3, [sp, #16] ldr r3, [sp, #12] - sxth r0, r0 - strh r1, [r4, #2] @ movhi + lsls r2, r3, #2 + bl ftl_memset + ldr r2, [fp, #3316] + ldr r8, [fp, #3340] + str r7, [r4, #32] + str r2, [r5, #1264] + movw r2, #65535 + str r8, [r5, #1268] strh r2, [r4] @ movhi - mov r2, r3 + strh r2, [r4, #2] @ movhi + movs r2, #1 + str r7, [r4, #28] + str r2, [r4, #36] +.L2575: + ldr r3, [sp, #16] + sxth r10, r7 + cmp r10, r3 + bge .L2594 + ldr r3, [sp, #16] + lsl r9, r10, #1 + subs r2, r3, #1 + cmp r10, r2 + bne .L2576 ldr r3, [sp, #8] - ldr r3, [r2, r3, lsl #2] - str r3, [r4, #28] - adds r3, r0, #1 - str r3, [sp, #8] -.L2668: - ldr r3, [sp, #8] - sxth r2, r8 - cmp r2, r3 - bge .L2684 - ldr r3, [sp, #4] - ldr r0, .L2707+8 - ldrh r1, [r3] - orr r2, r2, r1, lsl #10 movs r1, #1 - str r2, [r5, #1252] - mov r2, r1 - bl FlashReadPages - ldrb r2, [fp] @ zero_extendqisi2 - cbz r2, .L2669 - ldr r2, [r10, #1260] - ldr r2, [r2, #12] - cbz r2, .L2669 - ldr r1, .L2707+12 - ldr r0, [r10, #1256] - str r2, [sp, #12] - ldrh r1, [r1, #2398] - bl js_hash - ldr r2, [sp, #12] - cmp r2, r0 - itt ne - movne r2, #-1 - strne r2, [r10, #1248] -.L2669: - ldr r2, [r10, #1248] - adds r2, r2, #1 - beq .L2670 - ldrh r2, [r6, #8] - cmp r2, r9 - bcs .L2670 - ldrh r1, [r4, #4] - ldrh r0, [r6] - cmp r0, r1 - itt eq - ldreq r1, [r10, #1252] - streq r1, [r7, r2, lsl #2] -.L2670: - add r8, r8, #1 - b .L2668 -.L2684: + ldr fp, .L2615+12 + ldrh r0, [r3, r10, lsl #1] + add r9, r9, r3 + bl FtlGetLastWrittenPage + ldr r2, [sp, #20] + sxth r3, r0 + adds r0, r0, #1 + strh r7, [r4] @ movhi + strh r0, [r4, #2] @ movhi + sub r7, fp, #1256 + ldr r2, [r2, r10, lsl #2] + mov r10, #0 + adds r3, r3, #1 + str r3, [sp, #8] + str r2, [r4, #28] +.L2577: + ldr r3, [sp, #8] + sxth r2, r10 + cmp r2, r3 + blt .L2580 +.L2594: mov r0, r4 bl ftl_free_no_use_map_blk ldrh r2, [r4, #2] - ldrh r3, [fp, #2390] + ldrh r3, [r6, #2392] cmp r2, r3 - bne .L2673 + bne .L2582 mov r0, r4 bl ftl_map_blk_alloc_new_blk - b .L2673 -.L2667: - ldr r2, [sp, #20] - ldr r0, .L2707+8 - ldr r2, [r2, #3316] - str r2, [r5, #1256] - add r2, r8, r1 - str r2, [sp, #16] - movs r1, #1 - ldrh r2, [r8, r3, lsl #1] - ldrh r3, [r10, #2390] - subs r3, r3, #1 - orr r3, r3, r2, lsl #10 - mov r2, r1 - str r3, [r5, #1252] - bl FlashReadPages - ldr r3, [r5, #1248] - adds r3, r3, #1 - beq .L2686 - ldrh r2, [r6] - ldrh r3, [r4, #4] - cmp r2, r3 - bne .L2686 - ldrh r2, [r6, #8] - movw r3, #64245 - cmp r2, r3 - bne .L2686 - movs r1, #0 - mov lr, #8 - mov ip, #4 -.L2675: - uxth r3, r1 - ldrh r2, [r10, #2390] - sxth r0, r3 - subs r2, r2, #1 - cmp r0, r2 - bge .L2678 - ldr r2, .L2707 - adds r1, r1, #1 - ldr r2, [r2, #3316] - ldrh r0, [r2, r0, lsl #3] - cmp r0, r9 - ittt cc - smlabbcc r3, r3, lr, ip - ldrcc r3, [r2, r3] - strcc r3, [r7, r0, lsl #2] - b .L2675 -.L2686: - ldr r3, .L2707+4 - mov fp, #0 -.L2706: - ldrh r1, [r10, #2390] - sxth r2, fp - cmp r2, r1 - bge .L2678 - ldr r1, [sp, #16] - ldr r0, .L2707+8 - str r3, [sp, #24] - ldrh r1, [r1] - orr r2, r2, r1, lsl #10 - movs r1, #1 - str r2, [r3, #1252] - mov r2, r1 - bl FlashReadPages - ldrb r2, [r10] @ zero_extendqisi2 - ldr r3, [sp, #24] - cbz r2, .L2679 - ldr r2, [r3, #1260] - ldr r2, [r2, #12] - cbz r2, .L2679 - ldr r0, [r3, #1256] - ldrh r1, [r10, #2398] - str r2, [sp, #28] - bl js_hash - ldr r2, [sp, #28] - ldr r3, [sp, #24] - cmp r2, r0 - itt ne - movne r2, #-1 - strne r2, [r3, #1248] -.L2679: - ldr r2, .L2707+4 - ldr r2, [r2, #1248] - adds r2, r2, #1 - beq .L2680 - ldrh r2, [r6, #8] - cmp r2, r9 - bcs .L2680 - ldrh r1, [r4, #4] - ldrh r0, [r6] - cmp r0, r1 - itt eq - ldreq r1, [r3, #1252] - streq r1, [r7, r2, lsl #2] -.L2680: - add fp, fp, #1 - b .L2706 -.L2678: - ldr r3, [sp, #4] - adds r3, r3, #1 - str r3, [sp, #4] - b .L2666 -.L2673: +.L2582: mov r0, r4 bl ftl_map_blk_gc mov r0, r4 @@ -16615,19 +16761,163 @@ add sp, sp, #36 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2708: +.L2580: + ldrh r1, [r9] + mov r0, fp + orr r2, r2, r1, lsl #10 + str r2, [r5, #1260] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldrb r2, [r6, #36] @ zero_extendqisi2 + cbz r2, .L2578 + ldr r2, [r5, #1268] + ldr r2, [r2, #12] + str r2, [sp, #16] + cbz r2, .L2578 + ldrh r1, [r6, #2400] + ldr r0, [r5, #1264] + bl js_hash + ldr r2, [sp, #16] + cmp r2, r0 + itt ne + movne r2, #-1 + strne r2, [r5, #1256] +.L2578: + ldr r2, [r7, #1256] + adds r2, r2, #1 + beq .L2579 + ldrh r2, [r8, #8] + ldr r3, [sp, #12] + cmp r3, r2 + bls .L2579 + ldrh r1, [r4, #4] + ldrh r0, [r8] + cmp r0, r1 + ittt eq + ldreq r1, [r7, #1260] + ldreq r3, [sp, #4] + streq r1, [r3, r2, lsl #2] +.L2579: + add r10, r10, #1 + b .L2577 +.L2576: + ldr r3, .L2615+8 + ldr r0, .L2615+12 + ldr r2, [r3, #3316] + ldr r3, [sp, #8] + str r2, [r5, #1264] + add r3, r3, r9 + ldrh r2, [r6, #2392] + str r3, [sp, #24] + ldr r3, [sp, #8] + subs r2, r2, #1 + ldrh r1, [r3, r10, lsl #1] + orr r2, r2, r1, lsl #10 + str r2, [r5, #1260] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #1256] + adds r2, r2, #1 + beq .L2596 + ldrh r1, [r8] + ldrh r2, [r4, #4] + cmp r1, r2 + bne .L2596 + ldrh r1, [r8, #8] + movw r2, #64245 + cmp r1, r2 + beq .L2584 +.L2596: + ldr r9, .L2615 + mov r10, #0 +.L2585: + ldrh r1, [r6, #2392] + sxth r2, r10 + cmp r2, r1 + bge .L2592 + ldr r3, [sp, #24] + ldr r0, .L2615+12 + ldrh r1, [r3] + orr r2, r2, r1, lsl #10 + str r2, [r9, #1260] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldrb r2, [r6, #36] @ zero_extendqisi2 + cbz r2, .L2589 + ldr r2, [r9, #1268] + ldr r2, [r2, #12] + str r2, [sp, #28] + cbz r2, .L2589 + ldrh r1, [r6, #2400] + ldr r0, [r9, #1264] + bl js_hash + ldr r2, [sp, #28] + cmp r2, r0 + itt ne + movne r2, #-1 + strne r2, [r9, #1256] +.L2589: + ldr r2, [r9, #1256] + adds r2, r2, #1 + beq .L2590 + ldrh r2, [r8, #8] + ldr r3, [sp, #12] + cmp r3, r2 + bls .L2590 + ldrh r1, [r4, #4] + ldrh r0, [r8] + cmp r0, r1 + ittt eq + ldreq r1, [r9, #1260] + ldreq r3, [sp, #4] + streq r1, [r3, r2, lsl #2] +.L2590: + add r10, r10, #1 + b .L2585 +.L2584: + movs r0, #0 + mov lr, #4 +.L2586: + ldrh r1, [r6, #2392] + sxth r2, r0 + subs r1, r1, #1 + cmp r2, r1 + blt .L2588 +.L2592: + adds r7, r7, #1 + b .L2575 +.L2588: + ldr ip, [fp, #3316] + ldr r3, [sp, #12] + ldr r1, [ip, r2, lsl #3] + uxth r9, r1 + cmp r3, r9 + bls .L2587 + add r2, lr, r2, lsl #3 + ldr r3, [sp, #4] + ldr r2, [ip, r2] + str r2, [r3, r9, lsl #2] +.L2587: + adds r0, r0, #1 + b .L2586 +.L2616: .align 2 -.L2707: - .word .LANCHOR2 +.L2615: .word .LANCHOR4 - .word .LANCHOR4+1248 .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR4+1256 .fnend .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 1 .global FtlLoadVonderInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: .fnstart @@ -16635,20 +16925,20 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, lr} .save {r3, lr} - ldr r3, .L2710 - ldr r0, .L2710+4 - ldrh r2, [r3, #2408] - add r0, r0, #1288 + ldr r3, .L2618 + ldr r0, .L2618+4 + ldrh r2, [r3, #2412] + add r0, r0, #1296 strh r2, [r0, #10] @ movhi movw r2, #61574 strh r2, [r0, #4] @ movhi - ldrh r2, [r3, #2434] + ldrh r2, [r3, #2438] strh r2, [r0, #8] @ movhi - ldrh r2, [r3, #2410] - ldr r3, [r3, #2436] + ldrh r2, [r3, #2414] + ldr r3, [r3, #2440] strh r2, [r0, #6] @ movhi str r3, [r0, #12] - ldr r3, .L2710+8 + ldr r3, .L2618+8 ldr r2, [r3, #3380] str r2, [r0, #16] ldr r2, [r3, #3376] @@ -16658,9 +16948,9 @@ bl FtlMapTblRecovery movs r0, #0 pop {r3, pc} -.L2711: +.L2619: .align 2 -.L2710: +.L2618: .word .LANCHOR0 .word .LANCHOR4 .word .LANCHOR2 @@ -16668,8 +16958,10 @@ .size FtlLoadVonderInfo, .-FtlLoadVonderInfo .align 1 .global FtlLoadMapInfo + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadMapInfo, %function FtlLoadMapInfo: .fnstart @@ -16678,182 +16970,179 @@ push {r3, lr} .save {r3, lr} bl FtlL2PDataInit - ldr r0, .L2713 + ldr r0, .L2621 bl FtlMapTblRecovery movs r0, #0 pop {r3, pc} -.L2714: +.L2622: .align 2 -.L2713: +.L2621: .word .LANCHOR2+3408 .fnend .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 1 .global FtlVendorPartWrite + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlVendorPartWrite, %function FtlVendorPartWrite: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2728 + ldr r3, .L2635 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r0 - mov r4, r1 - add r0, r0, r1 - ldrh r1, [r3, #2384] + mov r10, r2 + mov r5, r1 + adds r1, r0, r1 .pad #60 sub sp, sp, #60 - mov r10, r2 - ldrh r2, [r3, #2396] - cmp r0, r1 - str r3, [sp, #4] - bhi .L2723 - ldr r7, .L2728+4 - lsr r6, r5, r2 - mov fp, #0 - lsls r3, r6, #2 + mov r7, r0 + ldrh r2, [r3, #2386] str r3, [sp] -.L2717: - cmp r4, #0 - beq .L2727 - ldr r3, .L2728+4 - mov r0, r5 - ldr r2, [sp] - ldr r3, [r3, #3384] - ldr ip, [r3, r2] - ldr r3, [sp, #4] - str ip, [sp, #12] - ldrh r2, [r3, #2394] - mov r1, r2 - str r2, [sp, #8] - bl __aeabi_uidivmod - ldr r2, [sp, #8] - mov r8, r1 - ldr ip, [sp, #12] - subs r3, r2, r1 - uxth r9, r3 - cmp r9, r4 - it hi - uxthhi r9, r4 - cmp ip, #0 - beq .L2719 - cmp r9, r2 - beq .L2719 - ldr r2, [r7, #3324] - movs r1, #1 - add r0, sp, #20 - str ip, [sp, #24] - str r2, [sp, #28] - movs r2, #0 - str r2, [sp, #32] - mov r2, r1 - bl FlashReadPages - b .L2720 -.L2719: - ldr r3, [sp, #4] - movs r1, #0 - ldr r0, [r7, #3324] - ldrh r2, [r3, #2398] - bl ftl_memset -.L2720: - lsl ip, r9, #9 - ldr r0, [r7, #3324] - uxth r8, r8 - mov r1, r10 - mov r2, ip - str ip, [sp, #8] - add r0, r0, r8, lsl #9 - rsb r4, r9, r4 - bl ftl_memcpy - mov r1, r6 - ldr r0, .L2728+8 - adds r6, r6, #1 - ldr r2, [r7, #3324] - add r5, r5, r9 - bl FtlMapWritePage - ldr r3, [sp] - adds r0, r0, #1 - ldr ip, [sp, #8] - it eq - moveq fp, #-1 - adds r3, r3, #4 - str r3, [sp] - add r10, r10, ip - b .L2717 -.L2727: - mov r0, fp - b .L2716 -.L2723: - mov r0, #-1 -.L2716: + cmp r1, r2 + bhi .L2631 + ldrh r6, [r3, #2398] + mov r9, #0 + ldr r8, .L2635+8 + lsr r6, r0, r6 + lsl fp, r6, #2 +.L2625: + cbnz r5, .L2630 +.L2623: + mov r0, r9 add sp, sp, #60 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2729: +.L2630: + ldr r3, [r8, #3384] + mov r0, r7 + ldr r2, [r3, fp] + ldr r3, [sp] + str r2, [sp, #12] + ldrh r3, [r3, #2396] + mov r1, r3 + str r3, [sp, #8] + bl __aeabi_uidivmod + ldr r3, [sp, #8] + ldr r2, [sp, #12] + str r1, [sp, #4] + subs r4, r3, r1 + uxth r4, r4 + cmp r5, r4 + it cc + uxthcc r4, r5 + cbz r2, .L2627 + cmp r4, r3 + beq .L2627 + ldr r3, [r8, #3324] + add r0, sp, #20 + str r2, [sp, #24] + movs r2, #1 + mov r1, r2 + str r3, [sp, #28] + movs r3, #0 + str r3, [sp, #32] + bl FlashReadPages +.L2628: + lsls r3, r4, #9 + ldr r0, [r8, #3324] + mov r1, r10 + mov r2, r3 + str r3, [sp, #8] + ldr r3, [sp, #4] + subs 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, #3324] + ldr r0, .L2635+4 + adds r6, r6, #1 + bl FtlMapWritePage + ldr r3, [sp, #8] + adds r0, r0, #1 + it eq + moveq r9, #-1 + add r10, r10, r3 + b .L2625 +.L2627: + ldr r3, [sp] + movs r1, #0 + ldr r0, [r8, #3324] + ldrh r2, [r3, #2400] + bl ftl_memset + b .L2628 +.L2631: + mov r9, #-1 + b .L2623 +.L2636: .align 2 -.L2728: +.L2635: .word .LANCHOR0 + .word .LANCHOR4+1296 .word .LANCHOR2 - .word .LANCHOR4+1288 .fnend .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 1 .global Ftl_save_ext_data + .syntax unified .thumb .thumb_func + .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, .L2732 - ldr r3, .L2732+4 - ldr r1, [r2, #608] + ldr r2, .L2639 + ldr r3, .L2639+4 + ldr r1, [r2, #604] cmp r1, r3 - bne .L2730 - ldr r3, .L2732+8 - movs r0, #0 + bne .L2637 + ldr r3, .L2639+8 movs r1, #1 - str r3, [r2, #612] + movs r0, #0 + str r3, [r2, #608] ldr r3, [r2, #500] - str r3, [r2, #696] + str r3, [r2, #692] ldr r3, [r2, #504] - str r3, [r2, #700] + str r3, [r2, #696] ldr r3, [r2, #496] - str r3, [r2, #616] + str r3, [r2, #612] ldr r3, [r2, #484] - str r3, [r2, #620] + str r3, [r2, #616] ldr r3, [r2, #476] - str r3, [r2, #624] + str r3, [r2, #620] ldr r3, [r2, #492] - str r3, [r2, #628] + str r3, [r2, #624] ldr r3, [r2, #520] - str r3, [r2, #636] - ldr r3, [r2, #236] - add r2, r2, #608 + str r3, [r2, #632] + ldr r3, [r2, #240] + add r2, r2, #604 str r3, [r2, #32] - ldr r3, [r2, #-128] + ldr r3, [r2, #-124] str r3, [r2, #36] - ldr r3, [r2, #-120] + ldr r3, [r2, #-116] str r3, [r2, #40] - ldr r3, [r2, #-80] - str r3, [r2, #44] ldr r3, [r2, #-76] + str r3, [r2, #44] + ldr r3, [r2, #-72] str r3, [r2, #48] - ldr r3, [r2, #-4] + ldr r3, [r2, #512] str r3, [r2, #60] - ldr r3, [r2, #2668] + ldr r3, [r2, #2672] str r3, [r2, #64] b FtlVendorPartWrite -.L2730: +.L2637: bx lr -.L2733: +.L2640: .align 2 -.L2732: +.L2639: .word .LANCHOR2 .word 1179929683 .word 1342177379 @@ -16861,51 +17150,51 @@ .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 1 .global FtlEctTblFlush + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlEctTblFlush, %function FtlEctTblFlush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2741 + ldr r3, .L2648 push {r4, lr} .save {r4, lr} - ldr r2, [r3, #2244] - ldr r3, .L2741+4 - cbz r2, .L2739 + ldr r2, [r3, #2248] + ldr r3, .L2648+4 + cmp r2, #0 + beq .L2646 ldr r2, [r3, #532] cmp r2, #39 ite hi - movhi r1, #32 - movls r1, #4 - b .L2735 -.L2739: - movs r1, #32 -.L2735: - ldr r4, .L2741+8 - ldrh r2, [r4, #1332] - cmp r2, #31 + movhi r2, #32 + movls r2, #4 +.L2642: + ldr r4, .L2648+8 + ldrh r1, [r4, #1340] + cmp r1, #31 ittt ls - addls r2, r2, #1 - movls r1, #1 - strhls r2, [r4, #1332] @ movhi - cbnz r0, .L2737 - ldr r0, [r3, #3360] - ldr r2, [r0, #20] - add r2, r2, r1 - ldr r1, [r0, #16] + addls r1, r1, #1 + movls r2, #1 + strhls r1, [r4, #1340] @ movhi + cbnz r0, .L2644 + ldr r1, [r3, #3360] + ldr r0, [r1, #20] + ldr r1, [r1, #16] + add r2, r2, r0 cmp r1, r2 - bcc .L2738 -.L2737: + bcc .L2645 +.L2644: ldr r2, [r3, #3360] movs r0, #64 ldr r1, [r2, #16] str r1, [r2, #20] - ldr r1, .L2741+12 + ldr r1, .L2648+12 str r1, [r2] - ldr r2, [r3, #3360] ldrh r1, [r3, #3352] + ldr r2, [r3, #3360] lsls r3, r1, #9 str r3, [r2, #12] ldr r3, [r2, #8] @@ -16915,12 +17204,15 @@ str r3, [r2, #4] bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2738: +.L2645: movs r0, #0 pop {r4, pc} -.L2742: +.L2646: + movs r2, #32 + b .L2642 +.L2649: .align 2 -.L2741: +.L2648: .word .LANCHOR0 .word .LANCHOR2 .word .LANCHOR4 @@ -16929,122 +17221,125 @@ .size FtlEctTblFlush, .-FtlEctTblFlush .align 1 .global FtlVendorPartRead + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlVendorPartRead, %function FtlVendorPartRead: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2754 + ldr r3, .L2660 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r6, r0 - mov r4, r1 - add r0, r0, r1 - ldrh r1, [r3, #2384] + mov r9, r2 + mov r6, r1 + adds r1, r0, r1 .pad #60 sub sp, sp, #60 - mov r7, r2 - ldrh r2, [r3, #2396] - cmp r0, r1 - str r3, [sp, #12] - bhi .L2752 - ldr r10, .L2754+4 - lsr r5, r6, r2 - mov fp, #0 - lsls r3, r5, #2 - str r3, [sp, #4] -.L2745: - cmp r4, #0 - beq .L2753 - ldr r3, .L2754+4 - mov r0, r6 - ldr r2, [sp, #4] - ldr r3, [r3, #3384] - ldr r8, [r3, r2] - ldr r3, [sp, #12] - ldrh r9, [r3, #2394] - mov r1, r9 - bl __aeabi_uidivmod - rsb r3, r1, r9 - str r1, [sp, #8] - uxth r9, r3 - cmp r9, r4 - it hi - uxthhi r9, r4 - cmp r8, #0 - beq .L2747 - ldr r2, [r10, #3324] - movs r1, #1 - add r0, sp, #20 - str r8, [sp, #24] - str r2, [sp, #28] - movs r2, #0 - str r2, [sp, #32] - mov r2, r1 - bl FlashReadPages - ldr r3, .L2754+8 - ldr r2, [sp, #20] - adds r2, r2, #1 - ldr r2, [r3, #1248] - it eq - moveq fp, #-1 - cmp r2, #256 - bne .L2749 - mov r1, r5 - mov r2, r8 - ldr r0, .L2754+12 - bl printk - ldr r0, .L2754+16 - mov r1, r5 - ldr r2, [r10, #3324] - bl FtlMapWritePage -.L2749: - ldrh r8, [sp, #8] - mov r0, r7 - ldr r1, [r10, #3324] - lsl r2, r9, #9 - add r1, r1, r8, lsl #9 - bl ftl_memcpy - b .L2750 -.L2747: - mov r0, r7 - mov r1, r8 - lsl r2, r9, #9 - bl ftl_memset -.L2750: - ldr r3, [sp, #4] - adds r5, r5, #1 - rsb r4, r9, r4 - add r6, r6, r9 - adds r3, r3, #4 - add r7, r7, r9, lsl #9 - str r3, [sp, #4] - b .L2745 -.L2753: - mov r0, fp - b .L2744 -.L2752: - mov r0, #-1 -.L2744: + mov r7, r0 + ldrh r2, [r3, #2386] + str r3, [sp, #8] + cmp r1, r2 + bhi .L2659 + ldrh r5, [r3, #2398] + mov r8, #0 + ldr r10, .L2660+16 + lsr r5, r0, r5 + lsl fp, r5, #2 +.L2652: + cbnz r6, .L2658 +.L2650: + mov r0, r8 add sp, sp, #60 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2755: +.L2658: + ldr r3, [r10, #3384] + mov r0, r7 + ldr r3, [r3, fp] + str r3, [sp, #12] + ldr r3, [sp, #8] + ldrh r4, [r3, #2396] + mov r1, r4 + bl __aeabi_uidivmod + subs r4, r4, r1 + ldr r3, [sp, #12] + uxth r4, r4 + str r1, [sp, #4] + cmp r6, r4 + it cc + uxthcc r4, r6 + lsls r2, r4, #9 + str r2, [sp, #12] + cbz r3, .L2654 + ldr r2, [r10, #3324] + add r0, sp, #20 + str r3, [sp, #24] + str r3, [sp, #12] + str r2, [sp, #28] + movs r2, #0 + str r2, [sp, #32] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r3, .L2660+4 + ldr r2, [sp, #20] + adds r2, r2, #1 + ldr r2, [r3, #1256] + it eq + moveq r8, #-1 + ldr r3, [sp, #12] + cmp r2, #256 + bne .L2656 + mov r2, r3 + mov r1, r5 + ldr r0, .L2660+8 + bl printk + ldr r2, [r10, #3324] + mov r1, r5 + ldr r0, .L2660+12 + bl FtlMapWritePage +.L2656: + ldr r1, [r10, #3324] + lsls r2, r4, #9 + ldr r3, [sp, #4] + mov r0, r9 + add r1, r1, r3, lsl #9 + bl ftl_memcpy +.L2657: + adds r5, r5, #1 + subs r6, r6, r4 + add r7, r7, r4 + add r9, r9, r4, lsl #9 + add fp, fp, #4 + b .L2652 +.L2654: + lsls r2, r4, #9 + mov r1, r3 + mov r0, r9 + bl ftl_memset + b .L2657 +.L2659: + mov r8, #-1 + b .L2650 +.L2661: .align 2 -.L2754: +.L2660: .word .LANCHOR0 - .word .LANCHOR2 .word .LANCHOR4 .word .LC136 - .word .LANCHOR4+1288 + .word .LANCHOR4+1296 + .word .LANCHOR2 .fnend .size FtlVendorPartRead, .-FtlVendorPartRead .align 1 .global FtlLoadEctTbl + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLoadEctTbl, %function FtlLoadEctTbl: .fnstart @@ -17053,39 +17348,41 @@ push {r4, lr} .save {r4, lr} movs r0, #64 - ldr r4, .L2758 + ldr r4, .L2664 ldr r2, [r4, #3360] ldrh r1, [r4, #3352] bl FtlVendorPartRead ldr r3, [r4, #3360] ldr r2, [r3] - ldr r3, .L2758+4 + ldr r3, .L2664+4 cmp r2, r3 - beq .L2757 - ldr r1, .L2758+8 - ldr r0, .L2758+12 + beq .L2663 + ldr r1, .L2664+8 + ldr r0, .L2664+12 bl printk ldrh r2, [r4, #3352] - ldr r0, [r4, #3360] movs r1, #0 + ldr r0, [r4, #3360] lsls r2, r2, #9 bl ftl_memset -.L2757: +.L2663: movs r0, #0 pop {r4, pc} -.L2759: +.L2665: .align 2 -.L2758: +.L2664: .word .LANCHOR2 .word 1112818501 .word .LC137 - .word .LC76 + .word .LC77 .fnend .size FtlLoadEctTbl, .-FtlLoadEctTbl .align 1 .global Ftl_load_ext_data + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftl_load_ext_data, %function Ftl_load_ext_data: .fnstart @@ -17093,95 +17390,95 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - movs r0, #0 - ldr r4, .L2765 movs r1, #1 - ldr r5, .L2765+4 - add r2, r4, #608 + ldr r4, .L2671 + movs r0, #0 + ldr r5, .L2671+4 + add r2, r4, #604 bl FtlVendorPartRead - ldr r3, [r4, #608] + ldr r3, [r4, #604] cmp r3, r5 - beq .L2761 - add r0, r4, #608 - movs r1, #0 + beq .L2667 mov r2, #512 + movs r1, #0 + add r0, r4, #604 bl ftl_memset - str r5, [r4, #608] -.L2761: - ldr r2, [r4, #608] - ldr r3, .L2765 - cmp r2, r5 - bne .L2762 - ldr r2, [r3, #696] - str r2, [r3, #500] - ldr r2, [r3, #700] - str r2, [r3, #504] - ldr r2, [r3, #616] - str r2, [r3, #496] - ldr r2, [r3, #620] - str r2, [r3, #484] - ldr r2, [r3, #624] - str r2, [r3, #476] - ldr r2, [r3, #628] - str r2, [r3, #492] - ldr r2, [r3, #636] - str r2, [r3, #520] - ldr r2, [r3, #640] - str r2, [r3, #236] - ldr r2, [r3, #644] - str r2, [r3, #480] - ldr r2, [r3, #648] - str r2, [r3, #488] - ldr r2, [r3, #652] - str r2, [r3, #528] - ldr r2, [r3, #656] - str r2, [r3, #532] - ldr r2, [r3, #668] - str r2, [r3, #604] -.L2762: - ldr r1, [r4, #676] + str r5, [r4, #604] +.L2667: + ldr r3, [r4, #604] + cmp r3, r5 + bne .L2668 + ldr r3, [r4, #692] + str r3, [r4, #500] + ldr r3, [r4, #696] + str r3, [r4, #504] + ldr r3, [r4, #612] + str r3, [r4, #496] + ldr r3, [r4, #616] + str r3, [r4, #484] + ldr r3, [r4, #620] + str r3, [r4, #476] + ldr r3, [r4, #624] + str r3, [r4, #492] + ldr r3, [r4, #632] + str r3, [r4, #520] + ldr r3, [r4, #636] + str r3, [r4, #240] + ldr r3, [r4, #640] + str r3, [r4, #480] + ldr r3, [r4, #644] + str r3, [r4, #488] + ldr r3, [r4, #648] + str r3, [r4, #528] + ldr r3, [r4, #652] + str r3, [r4, #532] + ldr r3, [r4, #664] + str r3, [r4, #1116] +.L2668: + ldr r1, [r4, #672] movs r3, #0 - ldr r2, .L2765+8 + ldr r2, .L2671+8 str r3, [r4, #3276] + ldr r5, .L2671+12 cmp r1, r2 - ldr r5, .L2765+12 - bne .L2763 - ldrb r2, [r5, #144] @ zero_extendqisi2 - cbz r2, .L2764 - ldr r2, .L2765 - str r3, [r2, #676] + bne .L2669 + ldrb r2, [r5, #152] @ zero_extendqisi2 + cbz r2, .L2670 + str r3, [r4, #672] bl Ftl_save_ext_data - b .L2763 -.L2764: - ldr r0, .L2765+16 - movs r3, #1 - ldr r1, .L2765+20 - str r3, [r5, #2244] - bl printk -.L2763: - ldrh r2, [r5, #2380] +.L2669: + ldrh r2, [r5, #2382] ldr r3, [r4, #520] ldr r0, [r4, #516] - ldrh r1, [r5, #2328] + ldrh r1, [r5, #2332] mla r0, r0, r2, r3 bl __aeabi_uidiv str r0, [r4, #524] pop {r3, r4, r5, pc} -.L2766: +.L2670: + movs r3, #1 + ldr r1, .L2671+16 + ldr r0, .L2671+20 + str r3, [r5, #2248] + bl printk + b .L2669 +.L2672: .align 2 -.L2765: +.L2671: .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 1 .global FtlMapBlkWriteDumpData + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: .fnstart @@ -17191,46 +17488,45 @@ .save {r4, r5, r6, lr} mov r6, r0 ldr r3, [r0, #36] - ldrh r5, [r0, #6] - ldr r1, [r0, #24] - cbz r3, .L2767 - ldr r2, .L2773 + cbz r3, .L2673 + ldr r2, .L2679 movs r3, #0 str r3, [r0, #36] - ldr r3, [r2, #224] - cbnz r3, .L2767 + ldrh r5, [r0, #6] + ldr r3, [r2, #228] + ldr r1, [r0, #24] + cbnz r3, .L2673 + ldr r4, .L2679+4 subs r5, r5, #1 - ldr r3, .L2773+4 ldr r0, [r2, #3320] - ldr r2, [r2, #3340] uxth r5, r5 - mov r4, r3 - str r0, [r3, #1256] - str r2, [r3, #1260] + ldr r2, [r2, #3340] + str r0, [r4, #1264] + str r2, [r4, #1268] ldr r2, [r1, r5, lsl #2] - str r2, [r3, #1252] - cbz r2, .L2771 - movs r1, #1 - add r0, r3, #1248 - mov r2, r1 + str r2, [r4, #1260] + cbz r2, .L2677 + movs r2, #1 + add r0, r4, #1256 + mov r1, r2 bl FlashReadPages - b .L2772 -.L2771: - ldr r3, .L2773+8 - movs r1, #255 - ldrh r2, [r3, #2398] - bl ftl_memset -.L2772: - mov r0, r6 +.L2678: + ldr r2, [r4, #1264] mov r1, r5 - ldr r2, [r4, #1256] + mov r0, r6 pop {r4, r5, r6, lr} b FtlMapWritePage -.L2767: +.L2677: + ldr r3, .L2679+8 + movs r1, #255 + ldrh r2, [r3, #2400] + bl ftl_memset + b .L2678 +.L2673: pop {r4, r5, r6, pc} -.L2774: +.L2680: .align 2 -.L2773: +.L2679: .word .LANCHOR2 .word .LANCHOR4 .word .LANCHOR0 @@ -17238,100 +17534,102 @@ .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 1 .global FlashReadFacBbtData + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashReadFacBbtData, %function FlashReadFacBbtData: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2789 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] - mov r7, r1 - ldrh r3, [r3, #130] + ldr r2, .L2693 .pad #40 sub sp, sp, #40 mov r5, r0 - smulbb r3, r2, r3 - ldr r2, .L2789+4 - ldr r1, [r2, #1184] - mov r9, r2 + mov r9, r1 + ldr r7, .L2693+4 + ldrh r3, [r2, #138] + ldrh r2, [r2, #136] + smulbb r3, r3, r2 + ldr r2, [r7, #1192] uxth r3, r3 + str r2, [sp, #12] + ldr r2, [r7, #1224] subs r6, r3, #1 - str r1, [sp, #12] - mul r10, r3, r7 - ldr r1, [r2, #1216] + mul r10, r1, r3 uxth r6, r6 sub r4, r3, #16 - str r1, [sp, #16] -.L2776: + str r2, [sp, #16] +.L2682: cmp r6, r4 - ble .L2788 - movs r1, #1 + bgt .L2688 + mov r0, #-1 + b .L2681 +.L2688: add r3, r6, r10 - add r0, sp, #4 - mov r2, r1 + movs r2, #1 lsls r3, r3, #10 + mov r1, r2 + add r0, sp, #4 str r3, [sp, #8] bl FlashReadPages ldr r3, [sp, #4] adds r3, r3, #1 - beq .L2777 - ldr r3, [r9, #1216] + beq .L2683 + ldr r3, [r7, #1224] ldrh r2, [r3] movw r3, #61664 cmp r2, r3 - bne .L2777 - cbz r5, .L2783 - cbz r7, .L2784 -.L2781: - ldr r1, [r9, #1184] + bne .L2683 + cbz r5, .L2689 + cmp r9, #0 + bne .L2685 + mov r1, r9 + movs r4, #1 +.L2686: + ldr r0, [r7, #1212] + uxth r3, r1 + adds r1, r1, #1 + cmp r3, r0 + bcc .L2687 +.L2685: mov r2, r8 + ldr r1, [r7, #1192] mov r0, r5 bl ftl_memcpy - movs r2, #4 - ldr r0, .L2789+8 + movs r3, #4 + ldr r0, .L2693+8 + mov r2, r3 mov r1, r5 - mov r3, r2 bl rknand_print_hex movs r0, #0 - b .L2778 -.L2784: - ldr r6, .L2789+4 - mov lr, #1 -.L2779: - ldr r2, [r9, #1204] - uxth r3, r7 - adds r7, r7, #1 - cmp r3, r2 - bcs .L2781 - ldr r2, [r6, #1184] - lsrs r1, r3, #5 - and r4, r3, #31 - lsl r3, lr, r4 - ldr r0, [r2, r1, lsl #2] - orrs r3, r3, r0 - str r3, [r2, r1, lsl #2] - b .L2779 -.L2777: - subs r6, r6, #1 - uxth r6, r6 - b .L2776 -.L2788: - mov r0, #-1 - b .L2778 -.L2783: - mov r0, r5 -.L2778: +.L2681: add sp, sp, #40 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2790: +.L2687: + ldr r0, [r7, #1192] + lsrs r6, r3, #5 + and r3, r3, #31 + lsl r3, r4, r3 + ldr r2, [r0, r6, lsl #2] + orrs r3, r3, r2 + str r3, [r0, r6, lsl #2] + b .L2686 +.L2683: + subs r6, r6, #1 + uxth r6, r6 + b .L2682 +.L2689: + mov r0, r5 + b .L2681 +.L2694: .align 2 -.L2789: +.L2693: .word .LANCHOR0 .word .LANCHOR4 .word .LC139 @@ -17339,72 +17637,76 @@ .size FlashReadFacBbtData, .-FlashReadFacBbtData .align 1 .global FlashGetBadBlockList + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashGetBadBlockList, %function FlashGetBadBlockList: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2801 + ldr r3, .L2705 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} mov r5, r0 - ldr r3, [r3, #44] - ldr r6, .L2801+4 + ldr r6, .L2705+4 + ldr r3, [r3, #48] + ldr r0, [r6, #1220] ldrb r4, [r3, #13] @ zero_extendqisi2 ldrh r3, [r3, #14] - ldr r0, [r6, #1212] smulbb r4, r4, r3 uxth r4, r4 adds r2, r4, #7 asrs r2, r2, #3 bl FlashReadFacBbtData adds r0, r0, #1 - bne .L2792 -.L2796: + mov ip, r6 + bne .L2696 +.L2700: movs r3, #0 - b .L2793 -.L2792: - movs r1, #0 - lsr lr, r4, #4 - mov ip, #1 - subs r4, r4, #1 - mov r3, r1 -.L2794: - uxth r2, r1 - cmp r2, r4 - bge .L2793 - ldr r7, [r6, #1212] - lsrs r0, r2, #5 - and r8, r2, #31 - adds r1, r1, #1 - lsl r8, ip, r8 - ldr r0, [r7, r0, lsl #2] - tst r8, r0 - ittt ne - strhne r2, [r5, r3, lsl #1] @ movhi - addne r0, r3, #1 - uxthne r3, r0 - cmp r3, lr - bcc .L2794 - b .L2796 -.L2793: +.L2697: movw r2, #65535 movs r0, #0 strh r2, [r5, r3, lsl #1] @ movhi pop {r4, r5, r6, r7, r8, pc} -.L2802: +.L2696: + movs r2, #0 + lsr lr, r4, #4 + mov r3, r2 + subs r4, r4, #1 + mov r8, #1 +.L2698: + uxth r1, r2 + cmp r1, r4 + bge .L2697 + ldr r6, [ip, #1220] + lsrs r7, r1, #5 + and r0, r1, #31 + lsl r0, r8, r0 + adds r2, r2, #1 + ldr r6, [r6, r7, lsl #2] + tst r0, r6 + ittt ne + addne r0, r3, #1 + strhne r1, [r5, r3, lsl #1] @ movhi + uxthne r3, r0 + cmp r3, lr + bcc .L2698 + b .L2700 +.L2706: .align 2 -.L2801: +.L2705: .word .LANCHOR0 .word .LANCHOR4 .fnend .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 1 .global FtlMakeBbt + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlMakeBbt, %function FtlMakeBbt: .fnstart @@ -17413,405 +17715,399 @@ 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 r5, .L2827 - ldr r4, [r5, #224] - cmp r4, #0 - bne .L2804 + ldr r6, .L2728 + ldr r7, [r6, #228] + cmp r7, #0 + bne .L2708 + ldr r9, .L2728+8 + ldr r8, .L2728+12 bl FtlBbtMemInit - ldr r6, .L2827+4 + subw r10, r9, #2484 + sub fp, r9, #18 + mov r4, r10 bl FtlLoadFactoryBbt - ldr r9, .L2827+16 - sub r8, r6, #18 - sub r7, r6, #2480 -.L2805: - ldrh r3, [r7, #2342] - ldr r10, .L2827+8 - cmp r4, r3 - bcs .L2824 - ldr r3, [r5, #3340] +.L2709: + ldrh r3, [r10, #2346] + cmp r7, r3 + bcc .L2715 + movs r5, #0 +.L2716: + ldrh r3, [r4, #2404] + uxth r0, r5 + adds r5, r5, #1 + cmp r3, r0 + bhi .L2717 + ldrh r5, [r4, #2468] + movw r7, #65535 + subs r5, r5, #1 + uxth r5, r5 +.L2718: + ldrh r3, [r4, #2468] + subs r3, r3, #48 + cmp r5, r3 + ble .L2722 + mov r0, r5 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L2719 + mov r0, r5 + bl FlashTestBlk + cmp r0, #0 + beq .L2720 + mov r0, r5 + bl FtlBbmMapBadBlock +.L2719: + subs r5, r5, #1 + uxth r5, r5 + b .L2718 +.L2715: + ldr r3, [r6, #3340] movw r2, #65535 - ldr r0, [r5, #3316] - ldr fp, .L2827+16 + ldr r0, [r6, #3316] str r3, [sp] - str r3, [r9, #1260] - ldrh r3, [r8, #2]! - str r0, [r9, #1256] + str r3, [r8, #1268] + ldrh r3, [fp, #2]! + str r0, [r8, #1264] cmp r3, r2 - beq .L2806 - ldrh ip, [r7, #2386] - movs r1, #1 - add r0, fp, #1248 - mov r2, r1 - mla ip, ip, r4, r3 - lsl r3, ip, #10 - str ip, [sp] - str r3, [r9, #1252] + beq .L2710 + ldrh r5, [r10, #2388] + movs r2, #1 + mov r1, r2 + ldr r0, .L2728+4 + mla r5, r7, r5, r3 + lsls r3, r5, #10 + str r3, [r8, #1260] bl FlashReadPages - ldrh r2, [r7, #2386] - ldr r0, [r6] + ldrh r2, [r10, #2388] + ldr r1, [r8, #1264] + ldr r0, [r9] adds r2, r2, #7 - ldr r1, [r9, #1256] asrs r2, r2, #3 bl ftl_memcpy - ldr ip, [sp] - b .L2807 -.L2806: - mov r1, r4 +.L2711: + uxth r0, r5 + adds r7, r7, #1 + add r9, r9, #4 + bl FtlBbmMapBadBlock + b .L2709 +.L2710: + mov r1, r7 bl FlashGetBadBlockList - ldr r0, [r9, #1256] - ldr r1, [r6] + ldr r1, [r9] + ldr r0, [r8, #1264] bl FtlBbt2Bitmap - ldrh r3, [r7, #2386] + ldrh r3, [r10, #2388] +.L2727: subs r3, r3, #1 -.L2823: - uxth r10, r3 -.L2808: - ldr r3, .L2827+8 - ldrh r0, [r3, #2386] - smlabb r0, r0, r4, r10 + uxth r3, r3 + str r3, [sp, #4] +.L2712: + ldr r3, [sp, #4] + ldrh r0, [r4, #2388] + smlabb r0, r0, r7, r3 uxth r0, r0 bl FtlBbmIsBadBlock cmp r0, #1 - bne .L2825 - add r3, r10, #-1 - b .L2823 -.L2825: - movs r1, #0 + beq .L2713 + ldrh r3, [sp, #4] movs r2, #16 - strh r10, [r8] @ movhi - ldr r0, [r5, #3340] + movs r1, #0 + ldr r0, [r6, #3340] + strh r3, [fp] @ movhi bl ftl_memset - movw r3, #61664 ldr r2, [sp] + movw r3, #61664 strh r3, [r2] @ movhi movs r3, #0 str r3, [r2, #4] - ldrh r3, [r8] - ldrh ip, [r7, #2386] + ldrh r3, [fp] + ldrh r5, [r4, #2388] strh r3, [r2, #2] @ movhi - ldrh r3, [r8] - ldrh r2, [r5, #3404] - ldr r1, [r6] - mla ip, ip, r4, r3 + ldrh r3, [fp] + ldrh r2, [r6, #3404] + ldr r1, [r9] + ldr r0, [r8, #1264] + mla r5, r7, r5, r3 lsls r2, r2, #2 - ldr r0, [fp, #1256] - lsl r3, ip, #10 - str ip, [sp, #4] - str r3, [fp, #1252] + lsls r3, r5, #10 + str r3, [r8, #1260] bl ftl_memcpy - movs r1, #1 - ldr r0, .L2827+12 - mov r2, r1 + movs r2, #1 + ldr r0, .L2728+4 + mov r1, r2 bl FlashEraseBlocks - movs r1, #1 - ldr r0, .L2827+12 - mov r3, r1 - mov r2, r1 + movs r3, #1 + ldr r0, .L2728+4 + mov r2, r3 + mov r1, r3 bl FlashProgPages - ldr r3, [fp, #1248] + ldr r3, [r8, #1256] adds r3, r3, #1 - ldr ip, [sp, #4] - bne .L2807 - uxth r0, ip + bne .L2711 + uxth r0, r5 bl FtlBbmMapBadBlock - b .L2808 -.L2807: - uxth r0, ip - adds r4, r4, #1 + b .L2712 +.L2713: + ldr r3, [sp, #4] + b .L2727 +.L2717: bl FtlBbmMapBadBlock - adds r6, r6, #4 - b .L2805 -.L2824: - movs r4, #0 -.L2812: - ldrh r3, [r10, #2402] - uxth r0, r4 - ldr r6, .L2827+8 - adds r4, r4, #1 - cmp r3, r0 - bls .L2826 - bl FtlBbmMapBadBlock - b .L2812 -.L2826: - ldrh r4, [r6, #2464] - movw r7, #65535 - subs r4, r4, #1 - uxth r4, r4 -.L2814: - ldrh r3, [r10, #2464] - subs r3, r3, #48 - cmp r4, r3 - ble .L2818 - mov r0, r4 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L2815 - mov r0, r4 - bl FlashTestBlk - cbz r0, .L2816 - mov r0, r4 - bl FtlBbmMapBadBlock - b .L2815 -.L2816: - ldrh r3, [r6, #2452] + b .L2716 +.L2720: + ldrh r3, [r4, #2456] cmp r3, r7 - bne .L2817 - strh r4, [r6, #2452] @ movhi - b .L2815 -.L2817: - ldr r3, .L2827+8 - strh r4, [r3, #2456] @ movhi - b .L2818 -.L2815: - subs r4, r4, #1 - uxth r4, r4 - b .L2814 -.L2818: - ldr r0, [r5, #228] - movs r4, #0 - ldrh r3, [r10, #2452] + bne .L2721 + strh r5, [r4, #2456] @ movhi + b .L2719 +.L2721: + strh r5, [r4, #2460] @ movhi +.L2722: + ldrh r3, [r4, #2456] + movs r5, #0 + ldr r0, [r6, #232] movs r2, #2 - str r4, [r10, #2460] + str r5, [r4, #2464] movs r1, #1 - strh r4, [r10, #2454] @ movhi + strh r5, [r4, #2458] @ movhi lsls r3, r3, #10 str r3, [r0, #4] - ldrh r3, [r10, #2456] + ldrh r3, [r4, #2460] lsls r3, r3, #10 str r3, [r0, #40] bl FlashEraseBlocks - ldrh r0, [r10, #2452] + ldrh r0, [r4, #2456] bl FtlBbmMapBadBlock - ldrh r0, [r10, #2456] + ldrh r0, [r4, #2460] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldr r3, [r10, #2460] - ldrh r2, [r10, #2456] + ldr r3, [r4, #2464] + ldrh r2, [r4, #2460] + strh r5, [r4, #2458] @ movhi adds r3, r3, #1 - str r3, [r10, #2460] - ldrh r3, [r10, #2452] - strh r4, [r10, #2454] @ movhi - strh r2, [r10, #2452] @ movhi - strh r3, [r10, #2456] @ movhi + str r3, [r4, #2464] + ldrh r3, [r4, #2456] + strh r2, [r4, #2456] @ movhi + strh r3, [r4, #2460] @ movhi bl FtlBbmTblFlush -.L2804: +.L2708: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2828: +.L2729: .align 2 -.L2827: +.L2728: .word .LANCHOR2 - .word .LANCHOR0+2480 - .word .LANCHOR0 - .word .LANCHOR4+1248 + .word .LANCHOR4+1256 + .word .LANCHOR0+2484 .word .LANCHOR4 .fnend .size FtlMakeBbt, .-FtlMakeBbt .align 1 .global log2phys + .syntax unified .thumb .thumb_func + .fpu softvfp .type log2phys, %function log2phys: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2745 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 r6, .L2845 - mov r9, r0 str r2, [sp, #8] - mov r10, r1 - ldr r3, [r6, #2448] - ldrh r2, [r6, #2396] - cmp r0, r3 - bcs .L2830 - adds r3, r2, #7 - ldr r2, .L2845+4 - lsr r5, r0, r3 + mov fp, r1 + mov r8, r3 + ldr r2, [r3, #2452] + str r0, [sp] + cmp r0, r2 + bcs .L2731 + ldrh r3, [r3, #2398] + movs r5, #12 + ldr r4, .L2745+4 + adds r3, r3, #7 str r3, [sp, #4] - ldrh r1, [r6, #2426] - movs r4, #0 - ldr fp, [r2, #460] - mov r8, r2 - uxth r5, r5 - movs r2, #12 - b .L2831 -.L2830: - ldr r3, [sp, #8] - mov r0, #-1 - cmp r3, #0 - bne .L2832 - str r0, [r1] - b .L2832 -.L2836: - adds r4, r4, #1 - mla r0, r2, r4, fp - ldrh r0, [r0, #-12] - cmp r0, r5 - beq .L2833 -.L2831: - uxth r7, r4 - cmp r7, r1 - bcc .L2836 + movs r3, #0 + ldr r2, [sp, #4] + ldr r7, [r4, #464] + lsr r6, r0, r2 + ldrh r2, [r8, #2430] + uxth r10, r6 +.L2732: + uxth r9, r3 + cmp r9, r2 + bcc .L2737 bl select_l2p_ram_region - movs r4, #12 - movw r3, #65535 - muls r4, r0, r4 - mov r7, r0 - add r2, fp, r4 - ldrh r1, [fp, r4] - cmp r1, r3 - bne .L2844 -.L2837: - ldr r3, [r8, #3388] - ldr fp, .L2845+4 - ldr r3, [r3, r5, lsl #2] + muls r5, r0, r5 + movw r2, #65535 + mov r9, r0 + ldrh r1, [r7, r5] + adds r3, r7, r5 + cmp r1, r2 + beq .L2738 + ldr r3, [r3, #4] cmp r3, #0 - bne .L2838 - ldr r2, [fp, #460] + bge .L2738 + bl flush_l2p_region +.L2738: + ldr r3, [r4, #3388] + uxth r6, r6 + ldr r3, [r3, r6, lsl #2] + cmp r3, #0 + bne .L2739 + ldr r2, [r4, #464] movs r1, #255 str r3, [sp, #12] - add r2, r2, r4 - ldr r0, [r2, #8] - ldrh r2, [r6, #2398] + adds r0, r2, r5 + ldrh r2, [r8, #2400] + ldr r0, [r0, #8] bl ftl_memset - ldr r2, [fp, #460] - strh r5, [r2, r4] @ movhi - ldr r2, [fp, #460] - add r4, r4, r2 + ldr r2, [r4, #464] ldr r3, [sp, #12] - str r3, [r4, #4] -.L2833: - ldr r3, [sp, #4] - movs r2, #1 - ldr r1, [sp, #8] - lsls r2, r2, r3 - movs r3, #12 - subs r2, r2, #1 - and r9, r9, r2 - ldr r2, .L2845+4 - uxth r9, r9 - cbnz r1, .L2834 - ldr r1, [r2, #460] - mla r3, r3, r7, r1 - ldr r3, [r3, #8] - ldr r3, [r3, r9, lsl #2] - str r3, [r10] - b .L2835 -.L2834: - muls r3, r7, r3 - ldr r1, [r2, #460] - ldr r0, [r10] - add r1, r1, r3 - ldr r1, [r1, #8] - str r0, [r1, r9, lsl #2] - ldr r1, [r2, #460] - strh r5, [r2, #464] @ movhi - add r3, r3, r1 - ldr r1, [r3, #4] - orr r1, r1, #-2147483648 - str r1, [r3, #4] -.L2835: - ldr r2, [r2, #460] - movs r3, #12 - mla r7, r3, r7, r2 - ldr r3, [r7, #4] - adds r2, r3, #1 - beq .L2842 - adds r3, r3, #1 - str r3, [r7, #4] - b .L2842 -.L2844: - ldr r3, [r2, #4] - cmp r3, #0 - bge .L2837 - bl flush_l2p_region - b .L2837 -.L2838: - ldr r2, [fp, #460] - movs r1, #1 - ldr r8, .L2845+24 - add r2, r2, r4 - str r3, [sp, #12] - add r0, r8, #1248 - ldr r2, [r2, #8] - str r3, [r8, #1252] - str r2, [r8, #1256] - ldr r2, [fp, #3340] - str r2, [r8, #1260] - mov r2, r1 - bl FlashReadPages - ldr r2, [r8, #1260] - ldrh r2, [r2, #8] - cmp r2, r5 - ldr r3, [sp, #12] - beq .L2839 - mov r2, r3 - mov r1, r5 - ldr r0, .L2845+8 - bl printk - movs r2, #4 - ldr r0, .L2845+12 - mov r3, r2 - ldr r1, [r8, #1260] - bl rknand_print_hex - ldrh r3, [r6, #2424] - ldr r0, .L2845+16 - movs r2, #4 - ldr r1, [fp, #3388] - bl rknand_print_hex - movs r3, #1 - str r3, [fp, #224] - b .L2840 -.L2839: - ldr r2, [r8, #1248] - cmp r2, #256 - bne .L2840 - mov r2, r3 - mov r1, r5 - ldr r0, .L2845+20 - bl printk - ldr r3, [fp, #460] - add r0, fp, #3408 - mov r1, r5 - add r3, r3, r4 - ldr r2, [r3, #8] - bl FtlMapWritePage -.L2840: - ldr r3, .L2845+4 - movs r1, #0 - ldr r3, [r3, #460] - adds r2, r3, r4 - str r1, [r2, #4] - strh r5, [r3, r4] @ movhi - b .L2833 -.L2842: - movs r0, #0 -.L2832: + strh r10, [r2, r5] @ movhi + ldr r2, [r4, #464] + add r5, r5, r2 + str r3, [r5, #4] + b .L2734 +.L2731: + ldr r3, [sp, #8] + mov r0, #-1 + cbnz r3, .L2730 + str r0, [fp] +.L2730: add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2846: +.L2737: + adds r3, r3, #1 + mla r1, r5, r3, r7 + ldrh r1, [r1, #-12] + cmp r1, r10 + bne .L2732 +.L2734: + ldr r2, [sp, #4] + movs r3, #1 + ldr r0, [sp, #8] + ldr r1, .L2745+4 + lsls r3, r3, r2 + ldr r2, [sp] + subs r3, r3, #1 + ands r3, r3, r2 + movs r2, #12 + uxth r3, r3 + cbnz r0, .L2735 + ldr r0, [r1, #464] + mla r2, r2, r9, r0 + ldr r2, [r2, #8] + ldr r3, [r2, r3, lsl #2] + str r3, [fp] +.L2736: + ldr r2, [r1, #464] + movs r3, #12 + mla r9, r3, r9, r2 + ldr r3, [r9, #4] + adds r2, r3, #1 + beq .L2743 + adds r3, r3, #1 + str r3, [r9, #4] +.L2743: + movs r0, #0 + b .L2730 +.L2735: + mul r2, r2, r9 + ldr r0, [r4, #464] + ldr r5, [fp] + add r0, r0, r2 + ldr r0, [r0, #8] + str r5, [r0, r3, lsl #2] + ldr r3, [r4, #464] + strh r10, [r4, #468] @ movhi + add r2, r2, r3 + ldr r3, [r2, #4] + orr r3, r3, #-2147483648 + str r3, [r2, #4] + b .L2736 +.L2739: + ldr r2, [r4, #464] + ldr r7, .L2745+8 + str r3, [sp, #12] + add r2, r2, r5 + ldr r2, [r2, #8] + add r0, r7, #1256 + str r3, [r7, #1260] + str r2, [r7, #1264] + ldr r2, [r4, #3340] + str r2, [r7, #1268] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r7, #1268] + ldr r3, [sp, #12] + ldrh r2, [r2, #8] + cmp r2, r10 + beq .L2740 + mov r2, r3 + mov r1, r6 + ldr r0, .L2745+12 + bl printk + movs r3, #4 + ldr r1, [r7, #1268] + mov r2, r3 + ldr r0, .L2745+16 + bl rknand_print_hex + ldrh r3, [r8, #2428] + movs r2, #4 + ldr r1, [r4, #3388] + ldr r0, .L2745+20 + bl rknand_print_hex + movs r3, #1 + str r3, [r4, #228] +.L2741: + ldr r3, .L2745+4 + movs r1, #0 + ldr r3, [r3, #464] + adds r2, r3, r5 + str r1, [r2, #4] + strh r10, [r3, r5] @ movhi + b .L2734 +.L2740: + ldr r2, [r7, #1256] + cmp r2, #256 + bne .L2741 + mov r2, r3 + mov r1, r6 + ldr r0, .L2745+24 + bl printk + ldr r3, [r4, #464] + mov r1, r6 + ldr r0, .L2745+28 + add r3, r3, r5 + ldr r2, [r3, #8] + bl FtlMapWritePage + b .L2741 +.L2746: .align 2 -.L2845: +.L2745: .word .LANCHOR0 .word .LANCHOR2 + .word .LANCHOR4 .word .LC140 .word .LC101 .word .LC141 .word .LC142 - .word .LANCHOR4 + .word .LANCHOR2+3408 .fnend .size log2phys, .-log2phys .align 1 .global FtlWriteDumpData + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlWriteDumpData, %function FtlWriteDumpData: .fnstart @@ -17821,110 +18117,114 @@ .save {r4, r5, r6, r7, r8, r9, r10, lr} .pad #40 sub sp, sp, #40 - ldr r4, .L2865 - ldr r3, [r4, #224] + ldr r4, .L2765 + ldr r3, [r4, #228] cmp r3, #0 - bne .L2847 - ldrh r2, [r4, #320] + bne .L2747 + ldrh r2, [r4, #324] cmp r2, #0 - beq .L2849 - ldrb r3, [r4, #324] @ zero_extendqisi2 + beq .L2749 + ldrb r3, [r4, #328] @ zero_extendqisi2 cmp r3, #0 - bne .L2849 - ldr r7, .L2865+4 - ldrb r1, [r4, #323] @ zero_extendqisi2 - ldrh r3, [r7, #2388] + bne .L2749 + ldr r7, .L2765+4 + ldrb r1, [r4, #327] @ zero_extendqisi2 + ldrh r3, [r7, #2390] muls r3, r1, r3 cmp r2, r3 - beq .L2849 - ldrb r9, [r4, #326] @ zero_extendqisi2 - ldr r6, [r7, #2448] - ldrh r8, [r7, #2320] + beq .L2749 + ldrb r9, [r4, #330] @ zero_extendqisi2 cmp r9, #0 - bne .L2847 - subs r6, r6, #1 - mov r1, sp + bne .L2747 + ldr r6, [r7, #2452] mov r2, r9 + mov r1, sp + ldrh r8, [r7, #2324] + subs r6, r6, #1 mov r0, r6 bl log2phys + ldr r3, [sp] ldr r5, [r4, #3340] ldr r0, [r4, #3316] - ldr r3, [sp] - str r6, [sp, #20] - str r0, [sp, #12] str r3, [sp, #8] adds r3, r3, #1 + str r6, [sp, #20] + str r0, [sp, #12] str r5, [sp, #16] str r9, [r5, #4] - beq .L2851 - movs r1, #1 + beq .L2751 mov r2, r9 + movs r1, #1 add r0, sp, #4 bl FlashReadPages - b .L2852 -.L2851: - movs r1, #255 - ldrh r2, [r7, #2398] - bl ftl_memset -.L2852: +.L2752: + ldr r9, .L2765+8 movs r7, #0 - ldr r10, .L2865 lsl r8, r8, #2 + mov r10, r7 movw r3, #61589 - mov r9, r7 strh r3, [r5] @ movhi -.L2853: - cmp r7, r8 - beq .L2854 - ldrh r3, [r4, #320] - cbz r3, .L2854 +.L2753: + cmp r8, r7 + bne .L2757 +.L2754: + movs r3, #1 +.L2764: + strb r3, [r4, #330] +.L2747: + add sp, sp, #40 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2751: + ldrh r2, [r7, #2400] + movs r1, #255 + bl ftl_memset + b .L2752 +.L2757: + ldrh r3, [r4, #324] + cmp r3, #0 + beq .L2754 ldr r3, [sp, #8] - adds r7, r7, #1 + mov r0, r9 str r6, [r5, #8] - ldr r0, .L2865+8 + adds r7, r7, #1 str r3, [r5, #12] - ldrh r3, [r10, #316] + ldrh r3, [r4, #320] strh r3, [r5, #2] @ movhi bl get_new_active_ppa - ldr r3, [r10, #512] + ldr r3, [r4, #512] movs r1, #1 str r0, [sp, #8] add r0, sp, #4 str r3, [r5, #4] adds r3, r3, #1 adds r2, r3, #1 - mov r2, #0 it eq - moveq r3, r9 - str r3, [r10, #512] - mov r3, r2 - bl FlashProgPages - ldrh r0, [r4, #316] - bl decrement_vpc_count - b .L2853 -.L2854: - movs r3, #1 - b .L2864 -.L2849: + moveq r3, r10 + str r3, [r4, #512] movs r3, #0 -.L2864: - strb r3, [r4, #326] -.L2847: - add sp, sp, #40 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2866: + mov r2, r3 + bl FlashProgPages + ldrh r0, [r4, #320] + bl decrement_vpc_count + b .L2753 +.L2749: + movs r3, #0 + b .L2764 +.L2766: .align 2 -.L2865: +.L2765: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR2+316 + .word .LANCHOR2+320 .fnend .size FtlWriteDumpData, .-FtlWriteDumpData .align 1 .global l2p_flush + .syntax unified .thumb .thumb_func + .fpu softvfp .type l2p_flush, %function l2p_flush: .fnstart @@ -17932,39 +18232,42 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - bl FtlWriteDumpData movs r4, #0 - ldr r5, .L2872 + ldr r5, .L2771 movs r7, #12 - ldr r6, .L2872+4 -.L2868: - ldrh r3, [r5, #2426] + ldr r6, .L2771+4 + bl FtlWriteDumpData +.L2768: + ldrh r3, [r5, #2430] uxth r0, r4 cmp r3, r0 - bls .L2871 - ldr r3, [r6, #460] - mla r3, r7, r0, r3 - ldr r3, [r3, #4] - cmp r3, #0 - bge .L2869 - bl flush_l2p_region -.L2869: - adds r4, r4, #1 - b .L2868 -.L2871: + bhi .L2770 movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L2873: +.L2770: + ldr r2, [r6, #464] + uxth r3, r4 + mla r3, r7, r3, r2 + ldr r3, [r3, #4] + cmp r3, #0 + bge .L2769 + bl flush_l2p_region +.L2769: + adds r4, r4, #1 + b .L2768 +.L2772: .align 2 -.L2872: +.L2771: .word .LANCHOR0 .word .LANCHOR2 .fnend .size l2p_flush, .-l2p_flush .align 1 .global allocate_new_data_superblock + .syntax unified .thumb .thumb_func + .fpu softvfp .type allocate_new_data_superblock, %function allocate_new_data_superblock: .fnstart @@ -17973,323 +18276,324 @@ push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 - ldr r4, .L2900 + ldr r4, .L2799 + ldr r3, [r4, #228] + cbnz r3, .L2774 ldrh r5, [r0] - ldr r3, [r4, #224] - cmp r3, #0 - bne .L2875 movw r3, #65535 cmp r5, r3 - beq .L2876 - ldr r3, [r4, #296] + beq .L2775 + ldr r3, [r4, #300] mov r0, r5 ldrh r3, [r3, r5, lsl #1] - cbz r3, .L2877 + cbz r3, .L2776 bl INSERT_DATA_LIST - b .L2876 -.L2877: - bl INSERT_FREE_LIST -.L2876: - ldr r2, .L2900 +.L2775: + ldr r2, .L2799+4 movs r3, #0 strb r3, [r6, #8] - add r3, r2, #364 - cmp r6, r3 - beq .L2878 - ldr r3, .L2900+4 - ldrh r1, [r3, #2340] + cmp r6, r2 + beq .L2777 + ldr r3, .L2799+8 + ldrh r1, [r3, #2344] cmp r1, #1 - beq .L2878 - ldrb r0, [r3, #144] @ zero_extendqisi2 - cbz r0, .L2879 -.L2878: + beq .L2777 + ldrb r0, [r3, #152] @ zero_extendqisi2 + cbz r0, .L2778 +.L2777: movs r3, #1 strb r3, [r6, #8] - b .L2880 -.L2879: - add r0, r2, #316 - cmp r6, r0 - bne .L2880 - cmp r1, #3 - beq .L2882 - ldr r2, [r2, #604] - cmp r2, #1 - bne .L2883 -.L2882: - movs r2, #1 - strb r2, [r4, #324] -.L2883: - ldr r3, [r3, #2244] - cbz r3, .L2880 - ldr r3, [r4, #532] - cmp r3, #39 - ittt ls - movls r2, #1 - ldrls r3, .L2900 - strbls r2, [r3, #324] -.L2880: +.L2779: ldrh r0, [r4, #3460] movw r3, #65535 cmp r0, r3 - beq .L2885 + beq .L2784 cmp r5, r0 - bne .L2886 - ldr r3, .L2900 - ldr r3, [r3, #296] + bne .L2785 + ldr r3, [r4, #300] ldrh r3, [r3, r0, lsl #1] - cbz r3, .L2887 -.L2886: + cbz r3, .L2786 +.L2785: bl update_vpc_list -.L2887: +.L2786: movw r3, #65535 strh r3, [r4, #3460] @ movhi -.L2885: +.L2784: mov r0, r6 bl allocate_data_superblock bl l2p_flush movs r0, #0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2875: +.L2774: movs r0, #0 pop {r4, r5, r6, pc} -.L2901: +.L2776: + bl INSERT_FREE_LIST + b .L2775 +.L2778: + subs r2, r2, #48 + cmp r6, r2 + bne .L2779 + cmp r1, #3 + beq .L2781 + ldr r2, [r4, #1116] + cmp r2, #1 + bne .L2782 +.L2781: + movs r2, #1 + strb r2, [r4, #328] +.L2782: + ldr r3, [r3, #2248] + cmp r3, #0 + beq .L2779 + ldr r3, [r4, #532] + cmp r3, #39 + itt ls + movls r3, #1 + strbls r3, [r4, #328] + b .L2779 +.L2800: .align 2 -.L2900: +.L2799: .word .LANCHOR2 + .word .LANCHOR2+368 .word .LANCHOR0 .fnend .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 1 .global FtlCheckVpc + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlCheckVpc, %function FtlCheckVpc: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - .pad #8 + 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 movs r4, #0 - ldr r1, .L2924 - ldr r0, .L2924+4 + ldr r5, .L2821 + ldr r6, .L2821+4 + ldr r1, .L2821+8 + mov r8, r5 + ldr r0, .L2821+12 bl printk - ldr r0, .L2924+8 - movs r1, #0 mov r2, #8192 + movs r1, #0 + ldr r0, .L2821+4 bl memset - ldr r5, .L2924+12 - ldr r6, .L2924+16 -.L2903: - ldr r3, [r5, #2448] - ldr r9, .L2924+12 +.L2802: + ldr r3, [r5, #2452] cmp r4, r3 - bcs .L2922 - mov r0, r4 - add r1, sp, #4 + bcc .L2804 + ldr r5, .L2821+16 + movs r4, #0 + ldr r9, .L2821+4 + mov r7, r4 + ldr r10, .L2821+28 +.L2805: + ldrh r2, [r8, #2332] + uxth r3, r4 + cmp r2, r3 + bhi .L2807 + ldr r4, [r5, #312] + cbz r4, .L2808 + ldr r3, [r5, #292] + movs r6, #0 + ldrh r8, [r5, #316] + mov fp, #6 + ldr r9, .L2821+4 + subs r4, r4, r3 + ldr r3, .L2821+20 + asrs r4, r4, #1 + ldr r10, .L2821+32 + muls r4, r3, r4 + uxth r4, r4 +.L2809: + uxth r3, r6 + cmp r8, r3 + bls .L2808 + ldr r3, [r5, #300] + ldrh r2, [r3, r4, lsl #1] + cbz r2, .L2810 + movs r7, #1 + ldrh r3, [r9, r4, lsl #1] + mov r1, r4 + mov r0, r10 + bl printk +.L2810: + mul r4, fp, r4 + ldr r3, [r5, #292] + adds r6, r6, #1 + ldrh r4, [r3, r4] + movw r3, #65535 + cmp r4, r3 + bne .L2809 +.L2808: + mov r1, r7 + ldr r0, .L2821+24 + bl printk + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2804: movs r2, #0 + add r1, sp, #4 + mov r0, r4 bl log2phys ldr r0, [sp, #4] adds r3, r0, #1 - beq .L2904 + beq .L2803 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - add r0, r6, r0, lsl #1 - ldrh r3, [r0, #1336] + ldrh r3, [r6, r0, lsl #1] adds r3, r3, #1 - strh r3, [r0, #1336] @ movhi -.L2904: + strh r3, [r6, r0, lsl #1] @ movhi +.L2803: adds r4, r4, #1 - b .L2903 -.L2922: - movs r7, #0 - ldr r8, .L2924+20 - ldr r10, .L2924+16 - mov r6, r7 -.L2906: - ldrh r3, [r9, #2328] - uxth r4, r7 - ldr r5, .L2924+20 - cmp r3, r4 - bls .L2923 - ldr r3, [r8, #296] - add r5, r10, r4, lsl #1 - ldrh r2, [r3, r4, lsl #1] - ldrh r3, [r5, #1336] + b .L2802 +.L2807: + ldr r3, [r5, #300] + uxth r6, r4 + ldrh r2, [r3, r6, lsl #1] + ldrh r3, [r9, r6, lsl #1] cmp r2, r3 - beq .L2907 - ldr r0, .L2924+24 - mov r1, r4 + beq .L2806 + mov r1, r6 + mov r0, r10 bl printk - ldr r3, [r8, #296] + ldr r3, [r5, #300] movw r2, #65535 - ldrh r3, [r3, r4, lsl #1] + ldrh r3, [r3, r6, lsl #1] cmp r3, r2 - beq .L2907 - ldrh r2, [r5, #1336] + beq .L2806 + ldrh r2, [r9, r6, lsl #1] cmp r2, r3 it hi - movhi r6, #1 -.L2907: - adds r7, r7, #1 - b .L2906 -.L2923: - ldr r3, [r5, #308] - cbz r3, .L2909 - ldr r2, [r5, #288] - movs r7, #0 - ldrh r8, [r5, #312] - subs r3, r3, r2 - ldr r2, .L2924+28 - ldr r9, .L2924+16 - asrs r3, r3, #1 - muls r3, r2, r3 - uxth r4, r3 -.L2910: - uxth r3, r7 - cmp r3, r8 - bcs .L2909 - ldr r3, [r5, #296] - ldrh r2, [r3, r4, lsl #1] - cbz r2, .L2911 - add r3, r9, r4, lsl #1 - ldr r0, .L2924+32 - mov r1, r4 - movs r6, #1 - ldrh r3, [r3, #1336] - bl printk -.L2911: - movs r3, #6 - ldr r2, [r5, #288] - adds r7, r7, #1 - muls r4, r3, r4 - movw r3, #65535 - ldrh r4, [r2, r4] - cmp r4, r3 - bne .L2910 -.L2909: - mov r1, r6 - ldr r0, .L2924+36 - bl printk - add sp, sp, #8 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2925: + movhi r7, #1 +.L2806: + adds r4, r4, #1 + b .L2805 +.L2822: .align 2 -.L2924: - .word .LANCHOR3+204 - .word .LC110 - .word .LANCHOR4+1336 +.L2821: .word .LANCHOR0 - .word .LANCHOR4 + .word check_valid_page_count_table + .word .LANCHOR3+191 + .word .LC110 .word .LANCHOR2 - .word .LC143 .word -1431655765 - .word .LC144 .word .LC145 + .word .LC143 + .word .LC144 .fnend .size FtlCheckVpc, .-FtlCheckVpc .align 1 .global Ftlscanalldata + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftlscanalldata, %function Ftlscanalldata: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + movs r5, #0 + ldr r4, .L2837 + .pad #32 + sub sp, sp, #32 movs r1, #0 - .pad #36 - sub sp, sp, #36 - ldr r0, .L2941 + ldr r7, .L2837+4 + add r8, r4, #1256 + ldr r0, .L2837+8 bl printk - ldr r7, .L2941+4 - ldr r5, .L2941+8 - movs r4, #0 -.L2927: - ldr r3, [r7, #2448] - cmp r4, r3 - bcs .L2940 - mov r0, r4 - add r1, sp, #28 +.L2824: + ldr r3, [r7, #2452] + cmp r5, r3 + bcc .L2830 + add sp, sp, #32 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L2830: movs r2, #0 + add r1, sp, #28 + mov r0, r5 bl log2phys - ubfx r3, r4, #0, #11 - cbnz r3, .L2928 - ldr r0, .L2941+12 - mov r1, r4 + ubfx r3, r5, #0, #11 + cbnz r3, .L2825 ldr r2, [sp, #28] + mov r1, r5 + ldr r0, .L2837+12 bl printk -.L2928: +.L2825: ldr r3, [sp, #28] adds r2, r3, #1 - beq .L2930 - str r3, [r5, #1252] + beq .L2827 + str r3, [r4, #1260] movs r1, #1 - ldr r3, .L2941+16 - ldr r0, .L2941+20 - str r4, [r5, #1264] + ldr r3, .L2837+16 + mov r0, r8 + str r5, [r4, #1272] ldr r2, [r3, #3316] ldr r6, [r3, #3340] - str r2, [r5, #1256] + str r2, [r4, #1264] movs r2, #0 - str r6, [r5, #1260] - str r2, [r5, #1248] + str r6, [r4, #1268] + str r2, [r4, #1256] bl FlashReadPages - ldr r3, [r5, #1248] - ldr r2, .L2941+8 + ldr r3, [r4, #1256] cmp r3, #256 - beq .L2931 + beq .L2828 adds r3, r3, #1 - beq .L2931 + beq .L2828 ldr r3, [r6, #8] - cmp r3, r4 - beq .L2930 -.L2931: - ldr r3, [r2, #1260] - ldr r1, [r2, #1256] - ldr r0, [r3, #4] - str r0, [sp] - ldr r0, [r3, #8] - str r0, [sp, #4] - ldr r0, [r3, #12] - str r0, [sp, #8] - ldr r0, [r1] - str r0, [sp, #12] - ldr r1, [r1, #4] - ldr r0, .L2941+24 + cmp r5, r3 + beq .L2827 +.L2828: + ldr r2, [r4, #1264] + ldr r3, [r4, #1268] + ldr r0, .L2837+20 + ldr r1, [r2, #4] str r1, [sp, #16] - mov r1, r4 - ldr r2, [r2, #1252] + 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, #1260] ldr r3, [r3] bl printk -.L2930: - adds r4, r4, #1 - b .L2927 -.L2940: - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, pc} -.L2942: +.L2827: + adds r5, r5, #1 + b .L2824 +.L2838: .align 2 -.L2941: - .word .LC146 - .word .LANCHOR0 +.L2837: .word .LANCHOR4 + .word .LANCHOR0 + .word .LC146 .word .LC147 .word .LANCHOR2 - .word .LANCHOR4+1248 .word .LC148 .fnend .size Ftlscanalldata, .-Ftlscanalldata .align 1 .global FtlReUsePrevPpa + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: .fnstart @@ -18299,911 +18603,907 @@ .save {r4, r5, r6, r7, lr} .pad #12 mov r6, r0 + ldr r5, .L2848 ubfx r0, r1, #10, #16 str r1, [sp, #4] bl P2V_block_in_plane - ldr r5, .L2952 - ldr r4, [r5, #296] - ldrh r3, [r4, r0, lsl #1] - cbnz r3, .L2944 - ldr r4, [r5, #308] - cbz r4, .L2945 - ldr r1, [r5, #288] - mov lr, #6 - ldr r2, .L2952+4 - movw ip, #65535 + ldr r2, [r5, #300] + ldrh r3, [r2, r0, lsl #1] + cbnz r3, .L2840 + ldr r4, [r5, #312] + cbz r4, .L2841 + ldr r1, [r5, #292] + mov ip, #6 + ldr r2, .L2848+4 + movw lr, #65535 + ldrh r7, [r5, #316] subs r4, r4, r1 - ldrh r7, [r5, #312] asrs r4, r4, #1 muls r4, r2, r4 uxth r4, r4 -.L2946: +.L2842: uxth r2, r3 - cmp r2, r7 - bcs .L2945 + cmp r7, r2 + bls .L2841 cmp r4, r0 - bne .L2947 + bne .L2843 mov r1, r4 - ldr r0, .L2952+8 + ldr r0, .L2848+8 bl List_remove_node - ldrh r3, [r5, #312] + ldrh r3, [r5, #316] mov r0, r4 subs r3, r3, #1 - strh r3, [r5, #312] @ movhi + strh r3, [r5, #316] @ movhi bl INSERT_DATA_LIST - ldr r2, [r5, #296] + ldr r2, [r5, #300] ldrh r3, [r2, r4, lsl #1] adds r3, r3, #1 strh r3, [r2, r4, lsl #1] @ movhi - b .L2945 -.L2947: - mul r4, lr, r4 - adds r3, r3, #1 - ldrh r4, [r1, r4] - cmp r4, ip - bne .L2946 - b .L2945 -.L2944: - adds r3, r3, #1 - strh r3, [r4, r0, lsl #1] @ movhi -.L2945: - mov r0, r6 - add r1, sp, #4 +.L2841: movs r2, #1 + add r1, sp, #4 + mov r0, r6 bl log2phys add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, pc} -.L2953: +.L2843: + mul r4, ip, r4 + adds r3, r3, #1 + ldrh r4, [r1, r4] + cmp r4, lr + bne .L2842 + b .L2841 +.L2840: + adds r3, r3, #1 + strh r3, [r2, r0, lsl #1] @ movhi + b .L2841 +.L2849: .align 2 -.L2952: +.L2848: .word .LANCHOR2 .word -1431655765 - .word .LANCHOR2+308 + .word .LANCHOR2+312 .fnend .size FtlReUsePrevPpa, .-FtlReUsePrevPpa .align 1 .global FtlRecoverySuperblock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: .fnstart - @ args = 0, pretend = 0, frame = 64 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r7, #65535 + movw r2, #65535 ldrh r3, [r0] - .pad #68 - sub sp, sp, #68 + .pad #60 + sub sp, sp, #60 mov r4, r0 - cmp r3, r7 - beq .L3101 - ldrh r3, [r0, #2] - movs r5, #0 - ldr r6, .L3117 - str r3, [sp, #12] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r2, [sp, #12] - str r3, [sp, #28] - ldrh r3, [r6, #2388] cmp r3, r2 - bne .L2957 - strh r5, [r0, #4] @ movhi - strb r5, [r0, #6] - b .L3101 -.L2957: + beq .L2999 + ldrh r3, [r0, #2] + ldr r6, .L3009 + str r3, [sp, #8] + ldr r1, [sp, #8] + ldrh r3, [r6, #2390] + cmp r3, r1 + mov r3, #0 + bne .L2853 + strh r3, [r0, #4] @ movhi +.L3007: + strb r3, [r4, #6] +.L2999: + movs r0, #0 + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2853: ldrh r0, [r0, #16] -.L2958: - cmp r0, r7 - add r5, r5, #1 - bne .L3112 - uxth r3, r5 - adds r3, r3, #8 - ldrh r0, [r4, r3, lsl #1] - b .L2958 -.L3112: +.L2854: + cmp r0, r2 + add r3, r3, #1 + beq .L2855 ldrb r1, [r4, #8] @ zero_extendqisi2 + ldrb r3, [r4, #6] @ zero_extendqisi2 cmp r1, #1 - bne .L2960 + str r3, [sp, #20] + bne .L2856 bl FtlGetLastWrittenPage - adds r2, r0, #1 + adds r7, r0, #1 mov r5, r0 - beq .L2961 - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbnz r3, .L3103 - ldr r3, .L3117 - add r3, r3, r0, lsl #1 - ldrh r7, [r3, #148] - b .L3035 -.L2960: + beq .L2857 + ldrb r3, [r6, #152] @ zero_extendqisi2 + cmp r3, #0 + bne .L2931 + add r3, r6, r0, lsl #1 + ldrh r7, [r3, #156] +.L2858: + ldr r3, .L3009+4 + movs r2, #0 + ldrh ip, [r6, #2324] + movw r9, #65535 + mov r10, #36 + mov fp, r2 + ldr r0, [r3, #3304] + ldr r8, [r3, #1148] + ldrh r3, [r6, #2402] + mov r6, r2 + str r3, [sp, #4] + add r3, r4, #16 + mov lr, r3 + str r3, [sp, #16] +.L2859: + uxth r3, r2 + cmp ip, r3 + bhi .L2862 + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #1 + bne .L2932 + ldr r3, .L3009 + ldrb r3, [r3, #152] @ zero_extendqisi2 + adds r3, r3, #0 + it ne + movne r3, #1 +.L3000: + str r3, [sp, #24] + mov r1, r6 + ldr r2, [sp, #24] + mov r9, #0 + bl FlashReadPages + ldr r3, .L3009+4 + ldr r2, [r3, #512] + mov r8, r3 + mov fp, r3 + add r10, r2, #-1 + movw r2, #65535 + str r2, [sp, #12] +.L2864: + uxth r3, r9 + cmp r6, r3 + bhi .L2869 + bne .L2867 + ldr r3, [r8, #3304] + adds r5, r5, #1 + uxth fp, r5 + ldr r0, [r3, #4] +.L3001: + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrb r2, [r4, #8] @ zero_extendqisi2 + str r0, [sp, #4] + ldr r3, .L3009 + cmp r2, #1 + bne .L2871 + ldrb r1, [r3, #152] @ zero_extendqisi2 + cbnz r1, .L2871 + add r5, r3, fp, lsl #1 + ldrh fp, [r5, #156] +.L2871: + ldrh r3, [r3, #2390] + cmp r3, fp + itttt eq + moveq r3, #0 + strheq fp, [r4, #2] @ movhi + strbeq r3, [r4, #6] + strheq r3, [r4, #4] @ movhi + ldrh r3, [sp, #20] + str r3, [sp, #28] + ldr r3, [sp, #8] + cmp fp, r3 + bne .L2873 + ldr r3, [sp, #4] + ldr r1, [sp, #28] + cmp r3, r1 + bne .L2873 + mov r2, r3 +.L3008: + mov r1, fp + mov r0, r4 + bl ftl_sb_update_avl_pages + b .L2999 +.L2855: + uxth r1, r3 + adds r1, r1, #8 + ldrh r0, [r4, r1, lsl #1] + b .L2854 +.L2856: movs r1, #0 bl FtlGetLastWrittenPage - adds r3, r0, #1 mov r5, r0 - beq .L2961 -.L3103: + adds r0, r0, #1 + beq .L2857 +.L2931: mov r7, r5 -.L3035: - ldr r3, .L3117+4 - movw r9, #65535 - ldrh ip, [r6, #2320] - mov r10, #36 - ldrh r0, [r6, #2400] - ldr r2, [r3, #3304] - ldr r8, [r3, #1148] - add r3, r4, #14 - str r3, [sp, #20] - str r2, [sp, #4] - movs r2, #0 - mov lr, r3 - mov r6, r2 - mov fp, r2 - b .L2963 -.L2961: + b .L2858 +.L2857: movs r3, #0 strh r3, [r4, #2] @ movhi - strb r3, [r4, #6] - b .L3101 -.L2966: - ldrh r3, [lr, #2]! + b .L3007 +.L2862: + ldrh r3, [lr], #2 cmp r3, r9 - beq .L2964 - ldr r1, [sp, #4] + beq .L2860 + mla r1, r10, r6, r0 orr r3, r7, r3, lsl #10 - mla r1, r10, r6, r1 str r3, [r1, #4] - mov r3, r0 + ldr r3, [sp, #4] muls r3, r6, r3 add r6, r6, #1 it mi addmi r3, r3, #3 - str fp, [r1, #8] uxth r6, r6 bic r3, r3, #3 add r3, r3, r8 + str fp, [r1, #8] str r3, [r1, #12] -.L2964: +.L2860: adds r2, r2, #1 -.L2963: - uxth r3, r2 - cmp r3, ip - bcc .L2966 - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #1 - bne .L3037 - ldr r3, .L3117 - ldrb r1, [r3, #144] @ zero_extendqisi2 - adds r3, r1, #0 - it ne - movne r3, #1 - b .L3104 -.L3037: + b .L2859 +.L2932: movs r3, #0 -.L3104: - ldr r8, .L3117+4 - mov r1, r6 - str r3, [sp, #24] - mov fp, #0 - ldr r2, [sp, #24] - ldr r0, [r8, #3304] - bl FlashReadPages - ldr r3, [r8, #512] - subs r3, r3, #1 - str r8, [sp, #8] - str r3, [sp, #4] - movw r3, #65535 - str r3, [sp, #16] -.L2968: - uxth r9, fp - cmp r9, r6 - bcs .L2975 - movs r1, #36 - ldr r0, [r8, #3304] - mul r1, r1, fp - add lr, r0, r1 - ldr r1, [r0, r1] - cbnz r1, .L2969 - ldr r3, [lr, #12] - ldr r10, [r3, #4] - cmp r10, #-1 - beq .L2970 - mov r0, r10 - ldr r1, [r8, #512] - str r3, [sp, #32] + b .L3000 +.L2869: + movs r3, #36 + ldr r1, [fp, #3304] + mul r3, r3, r9 + adds r2, r1, r3 + ldr r3, [r1, r3] + cbnz r3, .L2865 + ldr r2, [r2, #12] + ldr r3, [r2, #4] + adds r1, r3, #1 + beq .L2866 + ldr r1, [fp, #512] + mov r0, r3 bl ftl_cmp_data_ver - ldr r3, [sp, #32] - cbz r0, .L2970 - add r1, r10, #1 - str r1, [r8, #512] -.L2970: - ldr r1, [r3] - adds r1, r1, #1 - bne .L2971 -.L2975: - cmp r9, r6 - ldr r6, .L3117+4 - bne .L3102 - ldr r3, [r6, #3304] - adds r5, r5, #1 - uxth r10, r5 - ldr r0, [r3, #4] - b .L3105 -.L2969: - ldr r1, [lr, #4] - ldr r0, .L3117+8 - bl printk - uxth r3, r7 - ldrh r1, [r4] - str r3, [sp, #16] - ldr r3, .L3117+12 - strh r1, [r3, #840] @ movhi -.L2971: - add fp, fp, #1 - b .L2968 -.L3102: - ldr r3, [sp, #8] + cbz r0, .L2866 + adds r3, r3, #1 + str r3, [fp, #512] +.L2866: + ldr r3, [r2] + adds r3, r3, #1 + bne .L2868 +.L2867: + ldr r3, [r8, #3304] + uxth r9, r9 movs r2, #36 - uxth r10, r5 - ldr r3, [r3, #3304] + uxth fp, r5 mla r9, r2, r9, r3 ldr r0, [r9, #4] -.L3105: - ubfx r0, r0, #10, #16 - bl P2V_plane - ldrb r5, [r4, #8] @ zero_extendqisi2 - ldr r2, .L3117 - cmp r5, #1 - str r0, [sp, #8] - bne .L2977 - ldrb r3, [r2, #144] @ zero_extendqisi2 - cbnz r3, .L2977 - add r3, r2, r10, lsl #1 - ldrh r10, [r3, #148] -.L2977: - ldrh r3, [r2, #2388] - cmp r3, r10 - itttt eq - strheq r10, [r4, #2] @ movhi - moveq r3, #0 - strbeq r3, [r4, #6] - strheq r3, [r4, #4] @ movhi - ldrh r3, [sp, #28] - str r3, [sp, #32] - ldr r3, [sp, #12] - cmp r10, r3 - bne .L2979 - ldr r3, [sp, #8] - ldr r2, [sp, #32] - cmp r3, r2 - bne .L2979 - mov r0, r4 - mov r1, r10 - mov r2, r3 - b .L3110 -.L2979: - ldr r2, [sp, #16] + b .L3001 +.L2865: + ldr r1, [r2, #4] + ldr r0, .L3009+8 + bl printk + uxth r3, r7 + ldr r2, .L3009+12 + str r3, [sp, #12] + ldrh r3, [r4] + strh r3, [r2, #1342] @ movhi +.L2868: + add r9, r9, #1 + b .L2864 +.L2873: + ldr r1, [sp, #12] movw r3, #65535 - cmp r2, r3 - bne .L2980 - cmp r5, #0 - bne .L2981 -.L2980: - ldr r3, [r6, #3472] - uxth fp, r7 + cmp r1, r3 + bne .L2874 + cmp r2, #0 + bne .L2875 +.L2874: + uxth r3, r7 + uxth r7, r7 + str r3, [sp, #20] mov r9, #-1 - ldr r7, .L3117+4 + ldr r3, [r8, #3472] adds r3, r3, #1 + it eq + streq r10, [r8, #3472] + ldr r3, [r8, #3472] mov r8, r9 - ittt eq - ldreq r3, .L3117+4 - ldreq r2, [sp, #4] - streq r2, [r3, #3472] - ldr r3, [r6, #3472] - str r3, [sp, #16] - ldr r3, [sp, #12] + str r3, [sp, #32] + ldr r3, [sp, #8] adds r3, r3, #7 - cmp fp, r3 - itet gt - subgt r5, fp, #7 - ldrle r5, [sp, #12] + cmp r7, r3 + ldr r7, .L3009+4 + itett gt + ldrgt r3, [sp, #20] + ldrle r5, [sp, #8] + subgt r5, r3, #7 uxthgt r5, r5 -.L2984: - cmp r5, fp - bhi .L2997 - ldr r3, .L3117 - ldr r1, [sp, #20] - ldrh ip, [r3, #2320] - ldr r3, [r7, #3304] - str r3, [sp, #28] +.L2878: + ldr r3, [sp, #20] + cmp r5, r3 + bhi .L2891 + ldr r3, .L3009 + movw lr, #65535 + ldr r0, [r7, #3304] + mov ip, #36 + ldrh r3, [r3, #2324] + str r3, [sp, #36] + ldr r3, [sp, #16] + str r3, [sp, #12] movs r3, #0 mov r6, r3 -.L2998: - uxth r2, r3 - cmp r2, ip - bcs .L3113 - ldrh r2, [r1, #2]! - movw r0, #65535 - cmp r2, r0 - beq .L2985 - ldr r0, [sp, #28] - mov lr, #36 - orr r2, r5, r2, lsl #10 - mla r0, lr, r6, r0 + b .L2892 +.L2880: + ldr r1, [sp, #12] + ldrh r2, [r1], #2 + cmp r2, lr + str r1, [sp, #12] + beq .L2879 + mla r1, ip, r6, r0 adds r6, r6, #1 + orr r2, r5, r2, lsl #10 uxth r6, r6 - str r2, [r0, #4] -.L2985: + str r2, [r1, #4] +.L2879: adds r3, r3, #1 - b .L2998 -.L3113: +.L2892: + ldr r1, [sp, #36] + uxth r2, r3 + cmp r2, r1 + bcc .L2880 mov r1, r6 ldr r2, [sp, #24] - ldr r0, [r7, #3304] bl FlashReadPages - ldr r3, .L3117 + ldr r3, .L3009 movs r2, #36 - add lr, r7, r5, lsl #1 + add ip, r7, r5, lsl #1 movw r1, #65535 - ldrb r0, [r3, #144] @ zero_extendqisi2 + ldrb r0, [r3, #152] @ zero_extendqisi2 ldr r3, [r7, #3304] mla r6, r2, r6, r3 -.L2987: - cmp r3, r6 - beq .L3114 +.L2881: + cmp r6, r3 + bne .L2890 + adds r5, r5, #1 + uxth r5, r5 + b .L2878 +.L2890: ldr r2, [r3] - cbnz r2, .L2988 + cbnz r2, .L2882 ldr r2, [r3, #12] - ldrh ip, [r2] - cmp ip, r1 - beq .L2989 + ldrh lr, [r2] + cmp lr, r1 + beq .L2883 ldr r2, [r2, #4] cmp r2, #-1 - beq .L2989 + beq .L2883 cmp r9, #-1 ldr r8, [r7, #3472] str r2, [r7, #3472] - bne .L2989 - ldrh r2, [lr, #1220] + bne .L2883 + ldrh r2, [ip, #1220] cmp r2, r1 - bne .L2990 - cmp r0, #0 - beq .L2989 -.L2990: - ldr r2, [sp, #4] - cmp r8, r2 - ite ne + bne .L2884 + cbz r0, .L2883 +.L2884: + cmp r10, r8 + it ne movne r9, r8 - moveq r9, #-1 - b .L2989 -.L3118: +.L2883: + adds r3, r3, #36 + b .L2881 +.L3010: .align 2 -.L3117: +.L3009: .word .LANCHOR0 .word .LANCHOR2 .word .LC149 - .word .LANCHOR5 -.L2988: - ldr r3, .L3119 + .word .LANCHOR4 +.L2882: + ldr r3, .L3011 ldrh r2, [r4] - strh r2, [r3, #840] @ movhi + strh r2, [r3, #1342] @ movhi ldrb r3, [r4, #8] @ zero_extendqisi2 - cbnz r3, .L2981 - ldr r3, .L3119+4 + cbnz r3, .L2875 + ldr r3, .L3011+4 movw r2, #65535 add r5, r3, r5, lsl #1 ldrh r1, [r5, #1220] cmp r1, r2 - bne .L2992 + bne .L2886 cmp r9, #-1 - beq .L2993 + beq .L2887 str r9, [r3, #3472] - b .L2981 -.L2993: - ldr r2, [sp, #16] - ldr r1, [sp, #4] - cmp r2, r1 - bne .L3106 - ldr r2, [r3, #3472] - b .L3111 -.L2992: - ldr r2, [sp, #4] - cmp r8, r2 - beq .L2995 - cmp r8, #-1 - beq .L2981 - str r8, [r3, #3472] - b .L2981 -.L2995: - ldr r2, [r3, #3472] - ldr r1, [sp, #4] - cmp r2, r1 - beq .L2981 -.L3111: - subs r2, r2, #1 - b .L3106 -.L2989: - adds r3, r3, #36 - b .L2987 -.L3114: - adds r5, r5, #1 - uxth r5, r5 - b .L2984 -.L2997: - ldr r3, .L3119+4 - mov r2, #-1 -.L3106: - str r2, [r3, #3472] -.L2981: - ldr r3, .L3119 +.L2875: + ldr r6, [sp, #8] movs r2, #1 - ldr fp, [sp, #12] - ldr r5, .L3119+4 - strh r2, [r3, #842] @ movhi -.L2999: - ldr r3, .L3119+8 - movw r9, #65535 - ldr r1, [r5, #3304] - movs r6, #0 - ldr r7, [sp, #20] - ldrh r8, [r3, #2320] - ldrb r0, [r3, #144] @ zero_extendqisi2 - str r6, [sp, #16] -.L3000: - uxth r3, r6 - cmp r3, r8 - bcs .L3115 - ldrh r3, [r7, #2]! - cmp r3, r9 - beq .L3001 - ldr r2, [sp, #16] - mov lr, #36 - orr r3, fp, r3, lsl #10 - mla r2, lr, r2, r1 - str r3, [r2, #4] - ldrb lr, [r4, #8] @ zero_extendqisi2 - cmp lr, #1 - bne .L3002 - cbz r0, .L3002 - orr r3, r3, #-2147483648 - str r3, [r2, #4] -.L3002: - ldr r3, [sp, #16] - add ip, r3, #1 - uxth r3, ip - str r3, [sp, #16] -.L3001: - adds r6, r6, #1 - b .L3000 -.L3115: + ldr r5, .L3011+4 + ldr r3, .L3011 + strh r2, [r3, #1344] @ movhi +.L2893: + ldr r3, .L3011+8 + movw r8, #65535 ldr r0, [r5, #3304] - ldr r1, [sp, #16] + mov r9, #36 + movs r2, #0 + ldrh ip, [r3, #2324] + ldrb r3, [r3, #152] @ zero_extendqisi2 + str r2, [sp, #12] + mov r1, r3 + ldr r3, [sp, #16] + str r3, [sp, #20] +.L2894: + uxth r3, r2 + cmp ip, r3 + bhi .L2897 ldr r2, [sp, #24] + ldr r1, [sp, #12] bl FlashReadPages movs r3, #0 -.L3109: - str r3, [sp, #28] - ldr r2, [sp, #16] - ldrh r3, [sp, #28] - cmp r3, r2 - bcs .L3116 - ldr r3, [sp, #28] - movs r6, #36 - ldr r9, [r5, #3304] - muls r6, r3, r6 - add r8, r9, r6 - ldr r7, [r8, #4] - ubfx r0, r7, #10, #16 - str r7, [sp, #60] - bl P2V_plane - ldr r3, [sp, #12] - cmp fp, r3 - bcc .L3005 - bne .L3006 - ldr r3, [sp, #32] - cmp r0, r3 - bcc .L3005 .L3006: - cmp fp, r10 - bne .L3007 - ldr r3, [sp, #8] - cmp r0, r3 - beq .L3008 -.L3007: - ldr r3, [r9, r6] - adds r3, r3, #1 - beq .L3009 - ldr r8, [r8, #12] - movw r3, #61589 - ldrh r2, [r8] + str r3, [sp, #20] + ldr r2, [sp, #12] + ldrh r3, [sp, #20] cmp r2, r3 - beq .L3010 - ldrh r0, [r4] - b .L3107 -.L3010: - ldr r3, [r8, #4] - adds r7, r3, #1 - str r3, [sp, #4] - beq .L3011 - mov r0, r3 - ldr r1, [r5, #512] - bl ftl_cmp_data_ver - cbz r0, .L3011 - ldr r3, [sp, #4] + bhi .L2925 + ldrb r3, [r4, #8] @ zero_extendqisi2 + adds r6, r6, #1 + uxth r6, r6 + ldr r2, .L3011+8 + cmp r3, #1 + bne .L2926 + ldrb r3, [r2, #152] @ zero_extendqisi2 + cbz r3, .L2926 + ldrh r3, [r2, #2392] + cmp r3, r6 + bne .L2926 + cmp fp, r6 + beq .L2902 +.L2926: + ldrh r3, [r2, #2390] + cmp r3, r6 + bne .L2893 + ldrh r2, [r2, #2324] + movw r0, #65535 + movs r3, #0 + strh r6, [r4, #2] @ movhi + strh r3, [r4, #4] @ movhi +.L2927: + uxth r1, r3 + cmp r1, r2 + bcs .L2999 + ldr r1, [sp, #16] + ldrh r5, [r1], #2 + cmp r5, r0 + str r1, [sp, #16] + add r1, r3, #1 + bne .L3007 + mov r3, r1 + b .L2927 +.L2887: + ldr r2, [sp, #32] + cmp r10, r2 + beq .L2888 +.L3003: + str r2, [r3, #3472] + b .L2875 +.L2888: + ldr r2, [r3, #3472] +.L3002: + subs r2, r2, #1 + b .L3003 +.L2886: + cmp r8, r10 + beq .L2889 + cmp r8, #-1 + beq .L2875 + str r8, [r3, #3472] + b .L2875 +.L2889: + ldr r2, [r3, #3472] + cmp r10, r2 + bne .L3002 + b .L2875 +.L2891: + mov r3, #-1 + str r3, [r7, #3472] + b .L2875 +.L2897: + ldr r7, [sp, #20] + ldrh r3, [r7], #2 + cmp r3, r8 + str r7, [sp, #20] + beq .L2895 + ldr r7, [sp, #12] + orr r3, r6, r3, lsl #10 + mla r7, r9, r7, r0 + str r3, [r7, #4] + ldrb lr, [r4, #8] @ zero_extendqisi2 + cmp lr, #1 + bne .L2896 + cbz r1, .L2896 + orr r3, r3, #-2147483648 + str r3, [r7, #4] +.L2896: + ldr r3, [sp, #12] adds r3, r3, #1 - str r3, [r5, #512] -.L3011: - ldr r7, [r8, #8] - add r1, sp, #56 - ldr r3, [r8, #12] + uxth r3, r3 + str r3, [sp, #12] +.L2895: + adds r2, r2, #1 + b .L2894 +.L2925: + ldr r3, [sp, #20] + mov r8, #36 + mul r8, r8, r3 + ldr r3, [r5, #3304] + str r3, [sp, #32] + add r9, r3, r8 + ldr r7, [r9, #4] + ubfx r0, r7, #10, #16 + str r7, [sp, #52] + bl P2V_plane + ldr r3, [sp, #8] + cmp r6, r3 + bcc .L2899 + ldr r3, [sp, #32] + bne .L2900 + ldr r2, [sp, #28] + cmp r2, r0 + bhi .L2899 +.L2900: + cmp r6, fp + bne .L2901 + ldr r2, [sp, #4] + cmp r2, r0 + beq .L2902 +.L2901: + ldr r3, [r3, r8] + adds r3, r3, #1 + beq .L2903 + ldr r3, [r9, #12] + movw r2, #61589 + ldrh r1, [r3] + cmp r1, r2 + beq .L2904 + ldrh r0, [r4] +.L3004: + bl decrement_vpc_count + b .L2899 +.L2904: + ldr r10, [r3, #4] + cmp r10, #-1 + beq .L2905 + ldr r1, [r5, #512] + mov r0, r10 + bl ftl_cmp_data_ver + cbz r0, .L2905 + add r2, r10, #1 + str r2, [r5, #512] +.L2905: + ldr r7, [r3, #8] + add r1, sp, #48 + ldr r3, [r3, #12] movs r2, #0 mov r0, r7 - str r3, [sp, #52] + str r3, [sp, #44] bl log2phys ldr r1, [r5, #3472] adds r0, r1, #1 - beq .L3012 - ldr r0, [sp, #4] + beq .L2906 + mov r0, r10 bl ftl_cmp_data_ver cmp r0, #0 - beq .L3012 - ldr r3, [sp, #52] + beq .L2906 + ldr r3, [sp, #44] adds r2, r3, #1 - beq .L3013 + beq .L2907 ldr r0, [r5, #3304] movs r2, #0 movs r1, #1 - add r0, r0, r6 + add r0, r0, r8 str r3, [r0, #4] ldr r9, [r0, #12] bl FlashReadPages ldr r2, [r5, #3304] - ldr r3, [r9, #4] - add ip, r2, r6 - str r3, [sp, #36] - ldr r3, [r2, r6] - adds r3, r3, #1 - bne .L3014 - b .L3015 -.L3013: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - bne .L3005 - mov r0, r7 - add r1, sp, #52 - movs r2, #1 - bl log2phys - b .L3005 -.L3014: - ldr r8, [r9, #8] - cmp r8, r7 - bne .L3015 - ldr r0, [r5, #3472] - ldr r1, [sp, #36] - str r2, [sp, #44] - str ip, [sp, #40] - bl ftl_cmp_data_ver - ldr ip, [sp, #40] - ldr r2, [sp, #44] - cbz r0, .L3015 - ldr r3, [sp, #56] - ldr r1, [sp, #60] - cmp r3, r1 - beq .L3020 - ldr r1, [sp, #52] - cmp r3, r1 - beq .L3015 - adds r7, r3, #1 - beq .L3018 - str r3, [ip, #4] - mov r0, ip - movs r1, #1 - movs r2, #0 - ldr r9, [ip, #12] - bl FlashReadPages - b .L3019 -.L3018: - str r3, [r2, r6] -.L3019: - ldr r3, [r5, #3304] - ldr r3, [r3, r6] - adds r3, r3, #1 - beq .L3020 - ldr r6, [r9, #4] - ldr r0, [r5, #3472] - mov r1, r6 - bl ftl_cmp_data_ver - cbz r0, .L3020 - ldr r0, [sp, #36] - mov r1, r6 - bl ftl_cmp_data_ver - cbz r0, .L3015 -.L3020: - mov r0, r8 - ldr r1, [sp, #52] - bl FtlReUsePrevPpa -.L3015: + ldr r1, [r2, r8] + add r3, r2, r8 + adds r1, r1, #1 + bne .L2908 +.L2909: mov r3, #-1 - str r3, [sp, #52] - b .L3022 -.L3120: - .align 2 -.L3119: - .word .LANCHOR5 - .word .LANCHOR2 - .word .LANCHOR0 -.L3012: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - beq .L3022 - ldr r3, [sp, #52] - adds r0, r3, #1 - beq .L3024 - ldr r2, .L3121 - ubfx r3, r3, #10, #21 - ldr r2, [r2, #2336] - cmp r3, r2 - bcs .L3005 -.L3024: - mov r0, r7 - add r1, sp, #60 - movs r2, #1 - bl log2phys - ldr r8, [sp, #56] - cmp r8, #-1 - beq .L3022 - ldr r3, [sp, #52] - cmp r8, r3 - beq .L3022 - ubfx r0, r8, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r5, #316] - cmp r3, r0 - beq .L3026 - ldrh r3, [r5, #364] - cmp r3, r0 - beq .L3026 - ldrh r3, [r5, #412] - cmp r3, r0 - bne .L3022 -.L3026: - ldr r3, .L3121+4 - movs r1, #1 - movs r2, #0 - ldr r0, [r3, #3304] - str r8, [r0, #4] - ldr r6, [r0, #12] - bl FlashReadPages - ldr r3, .L3121+4 - ldr r1, [r6, #4] - ldr r3, [r3, #3304] - ldr r3, [r3] - adds r3, r3, #1 - beq .L3022 - ldr r0, [sp, #4] - bl ftl_cmp_data_ver - cbnz r0, .L3022 - mov r0, r7 - add r1, sp, #56 - movs r2, #1 - bl log2phys -.L3022: - ldr r0, [sp, #52] + str r3, [sp, #44] +.L2916: + ldr r0, [sp, #44] adds r1, r0, #1 - beq .L3005 + beq .L2899 +.L2930: ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, [r5, #296] - ldrh r3, [r3, r0, lsl #1] + ldr r3, [r5, #300] mov r1, r0 - cbz r3, .L3027 -.L3107: - bl decrement_vpc_count - b .L3005 -.L3027: - ldr r0, .L3121+8 + ldrh r3, [r3, r0, lsl #1] + cmp r3, #0 + bne .L3004 + ldr r0, .L3011+12 bl printk - b .L3005 -.L3009: + b .L2899 +.L2907: + ldr r3, [sp, #52] + ldr r2, [sp, #48] + cmp r2, r3 + bne .L2899 + movs r2, #1 + add r1, sp, #44 + mov r0, r7 + bl log2phys +.L2899: + ldr r3, [sp, #20] + adds r3, r3, #1 + b .L3006 +.L2908: + ldr r1, [r9, #8] + cmp r7, r1 + bne .L2909 + ldr r1, [r9, #4] + ldr r0, [r5, #3472] + str r1, [sp, #32] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2909 + ldr r1, [sp, #48] + ldr r0, [sp, #52] + cmp r1, r0 + bne .L2911 +.L2914: + ldr r1, [sp, #44] + mov r0, r7 + bl FtlReUsePrevPpa + b .L2909 +.L2911: + ldr r0, [sp, #44] + cmp r1, r0 + beq .L2909 + adds r0, r1, #1 + beq .L2912 + str r1, [r3, #4] + movs r2, #0 + movs r1, #1 + mov r0, r3 + ldr r9, [r3, #12] + bl FlashReadPages +.L2913: + ldr r3, [r5, #3304] + ldr r3, [r3, r8] + adds r3, r3, #1 + beq .L2914 + ldr r3, [r9, #4] + ldr r0, [r5, #3472] + mov r1, r3 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2914 + mov r1, r3 + ldr r0, [sp, #32] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2909 + b .L2914 +.L2912: + str r1, [r2, r8] + b .L2913 +.L3012: + .align 2 +.L3011: + .word .LANCHOR4 + .word .LANCHOR2 + .word .LANCHOR0 + .word .LC150 +.L2906: + ldr r3, [sp, #52] + ldr r2, [sp, #48] + cmp r2, r3 + beq .L2916 + ldr r3, [sp, #44] + adds r0, r3, #1 + beq .L2918 + ldr r2, .L3013 + ubfx r3, r3, #10, #21 + ldr r2, [r2, #2340] + cmp r3, r2 + bcs .L2899 +.L2918: + movs r2, #1 + add r1, sp, #52 + mov r0, r7 + bl log2phys + ldr r9, [sp, #48] + cmp r9, #-1 + beq .L2916 + ldr r3, [sp, #44] + cmp r9, r3 + beq .L2920 + ubfx r0, r9, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r5, #320] + cmp r3, r0 + beq .L2921 + ldrh r3, [r5, #368] + cmp r3, r0 + beq .L2921 + ldrh r3, [r5, #416] + cmp r3, r0 + bne .L2916 +.L2921: + ldr r0, [r5, #3304] + movs r2, #0 + movs r1, #1 + str r9, [r0, #4] + ldr r8, [r0, #12] + bl FlashReadPages + ldr r3, [r5, #3304] + ldr r3, [r3] + adds r3, r3, #1 + beq .L2916 + ldr r1, [r8, #4] + mov r0, r10 + bl ftl_cmp_data_ver + cmp r0, #0 + bne .L2916 + movs r2, #1 + add r1, sp, #48 + mov r0, r7 + bl log2phys + b .L2916 +.L2903: ldrh r3, [r4] mov r1, r7 - ldr r2, .L3121+12 - ldr r0, .L3121+16 - strh r3, [r2, #840] @ movhi - ldr r2, [sp, #4] + ldr r2, .L3013+4 + ldr r0, .L3013+8 + strh r3, [r2, #1342] @ movhi + mov r2, r10 bl printk - ldr r3, .L3121+12 - ldr r3, [r3, #844] + ldr r3, .L3013+4 + ldr r3, [r3, #1348] cmp r3, #31 - bhi .L3028 - ldr r2, .L3121+12 - ldr r1, [sp, #60] + bhi .L2923 + ldr r2, .L3013+4 + ldr r1, [sp, #52] add r2, r2, r3, lsl #2 adds r3, r3, #1 - str r1, [r2, #848] - ldr r2, .L3121+12 - str r3, [r2, #844] -.L3028: + str r1, [r2, #1352] + ldr r2, .L3013+4 + str r3, [r2, #1348] +.L2923: ldrh r0, [r4] bl decrement_vpc_count ldr r3, [r5, #3472] adds r2, r3, #1 - bne .L3029 - ldr r3, [sp, #4] - b .L3108 -.L3029: - ldr r2, [sp, #4] - cmp r3, r2 - bls .L3005 - mov r3, r2 -.L3108: - str r3, [r5, #3472] + bne .L2924 .L3005: - ldr r3, [sp, #28] - adds r3, r3, #1 - b .L3109 -.L3116: - ldrb r3, [r4, #8] @ zero_extendqisi2 - add fp, fp, #1 - cmp r3, #1 - uxth fp, fp - ldr r3, .L3121 - bne .L3031 - ldrb r2, [r3, #144] @ zero_extendqisi2 - cbz r2, .L3031 - ldrh r2, [r3, #2390] - cmp r2, fp - bne .L3031 - cmp r10, fp - beq .L3008 -.L3031: - ldrh r3, [r3, #2388] - cmp fp, r3 - bne .L2999 - ldr r2, .L3121 - movw r0, #65535 - movs r3, #0 + str r10, [r5, #3472] + b .L2899 +.L2924: + cmp r10, r3 + bcs .L2899 + b .L3005 +.L2902: + ldrb r3, [sp, #4] @ zero_extendqisi2 strh fp, [r4, #2] @ movhi - strh r3, [r4, #4] @ movhi - ldrh r1, [r2, #2320] -.L3032: - uxth r2, r3 - cmp r2, r1 - bcs .L3101 - ldr r6, [sp, #20] - adds r3, r3, #1 - ldrh r5, [r6, #2]! - cmp r5, r0 - str r6, [sp, #20] - beq .L3032 - strb r2, [r4, #6] - b .L3101 -.L3008: - ldrb r3, [sp, #8] @ zero_extendqisi2 - mov r0, r4 - ldr r2, [sp, #8] - mov r1, r10 - strh r10, [r4, #2] @ movhi + ldr r2, [sp, #4] strb r3, [r4, #6] -.L3110: - bl ftl_sb_update_avl_pages -.L3101: - movs r0, #0 - add sp, sp, #68 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3122: + b .L3008 +.L2920: + mov r0, r9 + b .L2930 +.L3014: .align 2 -.L3121: +.L3013: .word .LANCHOR0 - .word .LANCHOR2 - .word .LC150 - .word .LANCHOR5 + .word .LANCHOR4 .word .LC151 .fnend .size FtlRecoverySuperblock, .-FtlRecoverySuperblock .align 1 .global FtlVpcCheckAndModify + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #12 - movs r4, #0 - ldr r7, .L3136 - ldr r1, .L3136+4 - ldr r0, .L3136+8 + push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #8 + movs r5, #0 + ldr r7, .L3026 + ldr r1, .L3026+4 + ldr r0, .L3026+8 bl printk - ldr r5, .L3136+12 - ldrh r2, [r7, #2330] + ldrh r2, [r7, #2334] movs r1, #0 - ldr r0, [r5, #3364] + ldr r4, .L3026+12 lsls r2, r2, #1 + ldr r0, [r4, #3364] bl ftl_memset -.L3124: - ldr r3, [r7, #2448] - cmp r4, r3 - bcs .L3134 - mov r0, r4 - add r1, sp, #4 +.L3016: + ldr r3, [r7, #2452] + cmp r5, r3 + bcc .L3018 + ldr r10, .L3026+16 + mov r8, #0 + movw r9, #65535 +.L3019: + ldrh r3, [r7, #2332] + uxth r6, r8 + cmp r3, r6 + bhi .L3022 + bl l2p_flush + bl FtlVpcTblFlush + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3018: movs r2, #0 + add r1, sp, #4 + mov r0, r5 bl log2phys ldr r0, [sp, #4] adds r3, r0, #1 - beq .L3125 + beq .L3017 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r2, [r5, #3364] + ldr r2, [r4, #3364] ldrh r3, [r2, r0, lsl #1] adds r3, r3, #1 strh r3, [r2, r0, lsl #1] @ movhi -.L3125: - adds r4, r4, #1 - b .L3124 -.L3134: - ldr r6, .L3136+12 - mov r8, #0 - movw r9, #65535 -.L3127: - ldrh r3, [r7, #2328] - uxth r4, r8 - cmp r3, r4 - bls .L3135 - ldr r3, [r5, #296] - ldrh r2, [r3, r4, lsl #1] - ldr r3, [r5, #3364] - ldrh r3, [r3, r4, lsl #1] +.L3017: + adds r5, r5, #1 + b .L3016 +.L3022: + ldr r3, [r4, #300] + uxth r5, r8 + ldrh r2, [r3, r5, lsl #1] + ldr r3, [r4, #3364] + ldrh r3, [r3, r5, lsl #1] cmp r2, r3 - beq .L3128 + beq .L3020 cmp r2, r9 - beq .L3128 - ldrh r1, [r6, #316] - cmp r1, r4 - beq .L3128 - ldrh r1, [r6, #412] - cmp r1, r4 - beq .L3128 - ldrh r1, [r6, #364] - cmp r1, r4 - beq .L3128 - ldr r0, .L3136+16 - mov r1, r4 + beq .L3020 + ldrh r1, [r4, #320] + cmp r1, r6 + beq .L3020 + ldrh r1, [r4, #416] + cmp r1, r6 + beq .L3020 + ldrh r1, [r4, #368] + cmp r1, r6 + beq .L3020 + mov r1, r5 + mov r0, r10 bl printk - ldr r3, [r6, #296] - ldrh r2, [r3, r4, lsl #1] - cbnz r2, .L3129 - ldr r2, [r6, #3364] - ldrh r2, [r2, r4, lsl #1] - strh r2, [r3, r4, lsl #1] @ movhi - b .L3128 -.L3129: - ldr r2, [r6, #3364] - mov r0, r4 - ldrh r2, [r2, r4, lsl #1] - strh r2, [r3, r4, lsl #1] @ movhi - bl update_vpc_list -.L3128: + ldr r3, [r4, #300] + ldrh r2, [r3, r5, lsl #1] + cbnz r2, .L3021 + ldr r2, [r4, #3364] + ldrh r2, [r2, r5, lsl #1] + strh r2, [r3, r5, lsl #1] @ movhi +.L3020: add r8, r8, #1 - b .L3127 -.L3135: - bl l2p_flush - bl FtlVpcTblFlush - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L3137: + b .L3019 +.L3021: + ldr r2, [r4, #3364] + mov r0, r6 + ldrh r2, [r2, r5, lsl #1] + strh r2, [r3, r5, lsl #1] @ movhi + bl update_vpc_list + b .L3020 +.L3027: .align 2 -.L3136: +.L3026: .word .LANCHOR0 - .word .LANCHOR3+216 + .word .LANCHOR3+203 .word .LC110 .word .LANCHOR2 .word .LC152 @@ -19211,301 +19511,290 @@ .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 1 .global FtlGcScanTempBlk + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: .fnstart @ args = 0, pretend = 0, frame = 72 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3192 + ldr r3, .L3078 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 - ldrh r5, [r3, #3448] - movw r3, #65535 mov r4, r0 - str r1, [sp, #20] - cmp r5, r3 - beq .L3174 - cbnz r5, .L3139 - b .L3140 -.L3174: - movs r5, #0 -.L3139: - ldr r3, .L3192+4 - ldr r2, [sp, #20] - ldrh r3, [r3, #2388] - cmp r2, r3 - bne .L3141 -.L3140: + str r1, [sp, #16] + ldrh r6, [r3, #3444] + movw r3, #65535 + cmp r6, r3 + beq .L3062 + cbnz r6, .L3029 +.L3030: bl FtlGcPageVarInit -.L3141: - ldr r6, .L3192+8 + b .L3031 +.L3062: + movs r6, #0 +.L3029: + ldr r3, .L3078+4 + ldr r2, [sp, #16] + ldrh r3, [r3, #2390] + cmp r3, r2 + beq .L3030 +.L3031: + ldr r5, .L3078+8 mov r3, #-1 - str r3, [sp, #16] + str r3, [sp, #12] movs r3, #0 str r3, [sp, #4] -.L3142: +.L3032: ldrh r1, [r4] movw r3, #65535 movs r2, #0 strb r2, [r4, #8] cmp r1, r3 - beq .L3143 -.L3144: - ldr r10, .L3192+4 -.L3171: - ldr r3, [r6, #3304] + beq .L3033 + ldr r7, .L3078+4 +.L3059: + ldr r3, [r5, #3304] movs r2, #0 - ldrh lr, [r10, #2320] - add ip, r4, #14 - ldr r8, [r6, #1148] - mov fp, #36 + ldrh ip, [r7, #2324] + add lr, r4, #16 + ldr r10, [r5, #1148] + mov fp, r2 str r3, [sp, #8] - mov r7, r2 - ldr r3, [r6, #1144] - movw r9, #65535 - str r3, [sp, #12] - ldrh r3, [r10, #2398] + movw r8, #65535 + ldr r3, [r5, #1144] + mov r9, #36 + str r3, [sp, #20] + ldrh r3, [r7, #2400] str r3, [sp, #24] - ldrh r3, [r10, #2400] + ldrh r3, [r7, #2402] str r3, [sp, #28] -.L3145: +.L3034: uxth r3, r2 - cmp r3, lr - bcs .L3190 - ldrh r3, [ip, #2]! - cmp r3, r9 - beq .L3146 + cmp ip, r3 + bhi .L3038 + mov r10, #0 + movs r2, #0 + mov r1, fp + ldr r0, [sp, #8] + bl FlashReadPages +.L3039: + uxth r3, r10 + cmp fp, r3 + bhi .L3057 + ldr r3, [sp, #4] + adds r6, r6, #1 + uxth r6, r6 + adds r3, r3, #1 + str r3, [sp, #4] + ldr r2, [sp, #4] + ldr r3, [sp, #16] + cmp r3, r2 + bls .L3058 +.L3060: + ldrh r3, [r7, #2390] + cmp r3, r6 + bhi .L3059 + movs r2, #0 + b .L3033 +.L3038: + ldrh r3, [lr], #2 + cmp r3, r8 + beq .L3035 ldr r1, [sp, #8] - orr r3, r5, r3, lsl #10 - mla r1, fp, r7, r1 + orr r3, r6, r3, lsl #10 + mov r0, fp + mla r1, r9, fp, r1 str r3, [r1, #4] ldr r3, [sp, #24] - muls r3, r7, r3 + muls r3, r0, r3 + ldr r0, [sp, #20] it mi addmi r3, r3, #3 bic r3, r3, #3 - mov r0, r3 - ldr r3, [sp, #12] - add r0, r0, r3 + add r3, r3, r0 + mov r0, fp + str r3, [r1, #8] ldr r3, [sp, #28] - muls r3, r7, r3 - add r7, r7, #1 + muls r3, r0, r3 it mi addmi r3, r3, #3 - str r0, [r1, #8] - uxth r7, r7 bic r3, r3, #3 - add r3, r3, r8 + add r3, r3, r10 str r3, [r1, #12] -.L3146: + add r3, fp, #1 + uxth fp, r3 +.L3035: adds r2, r2, #1 - b .L3145 -.L3190: - ldr r0, [r6, #3304] - mov r1, r7 - movs r2, #0 - bl FlashReadPages - movs r3, #0 -.L3189: - str r3, [sp, #8] - ldrh r3, [sp, #8] - cmp r3, r7 - bcs .L3191 - ldr r3, [sp, #8] + b .L3034 +.L3057: mov r9, #36 - mul r9, r9, r3 - ldr r3, .L3192+8 - ldr r8, [r3, #3304] - add fp, r8, r9 - ldr r3, [fp, #4] - ubfx r0, r3, #10, #16 - str r3, [sp, #12] + ldr r8, [r5, #3304] + mul r9, r9, r10 + add r3, r8, r9 + ldr r2, [r3, #4] + str r3, [sp, #20] + ubfx r0, r2, #10, #16 + str r2, [sp, #8] bl P2V_plane ldr r8, [r8, r9] - ldr r3, [fp, #12] - ldr ip, .L3192+4 - ldr fp, .L3192+8 mov r2, r0 + ldr r3, [sp, #20] + ldr r3, [r3, #12] cmp r8, #0 - bne .L3151 + bne .L3040 ldrh r0, [r3] movw r1, #65535 cmp r0, r1 - bne .L3152 -.L3155: - ldrb r3, [ip, #144] @ zero_extendqisi2 - cbz r3, .L3186 + bne .L3041 +.L3044: + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbz r3, .L3074 movs r3, #1 - str r3, [fp, #3468] - b .L3143 -.L3152: + str r3, [r5, #3468] +.L3033: + ldr r3, .L3078 + movw r1, #65535 + strh r6, [r4, #2] @ movhi + mov r0, r4 + strb r2, [r4, #6] + strh r1, [r3, #3444] @ movhi + mov r1, r6 + bl ftl_sb_update_avl_pages + b .L3028 +.L3041: ldr r0, [r3, #8] - ldr r1, [r10, #2448] + ldr r1, [r7, #2452] cmp r0, r1 - bls .L3187 - b .L3155 -.L3186: + bhi .L3044 + ldrb r2, [r7, #36] @ zero_extendqisi2 + cbnz r2, .L3047 +.L3048: + ldr r2, [r3, #8] + add r10, r10, #1 + ldr r1, [sp, #8] + ldr r0, [r3, #12] + bl FtlGcUpdatePage + b .L3039 +.L3074: ldrh r1, [r4] - ldr r2, [fp, #296] + ldr r2, [r5, #300] strh r3, [r2, r1, lsl #1] @ movhi +.L3077: ldrh r0, [r4] bl INSERT_FREE_LIST movw r3, #65535 strh r3, [r4] @ movhi - strh r3, [fp, #556] @ movhi - b .L3188 -.L3187: - ldrb r2, [r10] @ zero_extendqisi2 - cmp r2, #0 - beq .L3159 - add r1, sp, #32 + strh r3, [r5, #556] @ movhi +.L3076: + bl FtlGcPageVarInit + movs r6, #0 + b .L3032 +.L3047: mov r2, r8 - str r3, [sp, #24] + add r1, sp, #32 + str r3, [sp, #20] bl log2phys - ldr r3, [sp, #24] - ldr r2, [sp, #32] - ldr r1, [r3, #12] + ldr r3, [sp, #20] + ldr r1, [sp, #32] + ldr r2, [r3, #12] cmp r2, r1 - bne .L3159 + bne .L3048 adds r1, r2, #1 - beq .L3159 + beq .L3048 str r2, [sp, #40] movs r1, #1 - ldr r2, [r6, #3336] + ldr r2, [r5, #3336] add r0, sp, #36 str r2, [sp, #44] - ldr r2, [r6, #3344] + ldr r2, [r5, #3344] str r2, [sp, #48] mov r2, r8 bl FlashReadPages - ldrh r2, [r10, #2394] - ldr r1, [r6, #3304] - lsl lr, r2, #7 - add r9, r9, r1 + ldrh r2, [r7, #2396] + ldr r1, [r5, #3304] ldr r0, [sp, #44] - ldr r3, [sp, #24] -.L3161: - cmp r8, lr - beq .L3159 + ldr r3, [sp, #20] + lsl ip, r2, #7 + add r9, r9, r1 +.L3049: + cmp r8, ip + beq .L3048 ldr r1, [r9, #8] ldr r2, [r0, r8, lsl #2] ldr r1, [r1, r8, lsl #2] cmp r1, r2 - beq .L3162 - ldrh r1, [r4] + beq .L3050 ldr r2, [sp, #40] - ldr r0, .L3192+12 + ldrh r1, [r4] + ldr r0, .L3078+12 bl printk - ldr r3, [r6, #296] ldrh r2, [r4] + movs r1, #0 + ldr r3, [r5, #300] + strh r1, [r3, r2, lsl #1] @ movhi + b .L3077 +.L3050: + add r8, r8, #1 + b .L3049 +.L3040: + ldr r2, [sp, #8] + ldrh r1, [r4] + ldr r0, .L3078+16 + bl printk + ldr r3, [r7, #2248] + ldrh r2, [r4] + cbnz r3, .L3053 + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbz r3, .L3054 +.L3053: + ldr r3, [r5, #236] + ldrh r3, [r3, r2, lsl #1] + cmp r3, #159 + bls .L3055 +.L3054: + ldr r3, [r5, #3304] + ldr r3, [r3, r9] + adds r3, r3, #1 + bne .L3056 +.L3055: + ldr r3, [r5, #3304] + add r3, r3, r9 + ldr r3, [r3, #4] + str r3, [sp, #12] +.L3056: + ldr r3, [r5, #300] movs r1, #0 strh r1, [r3, r2, lsl #1] @ movhi ldrh r0, [r4] bl INSERT_FREE_LIST movw r3, #65535 strh r3, [r4] @ movhi - strh r3, [r6, #556] @ movhi - b .L3188 -.L3162: - add r8, r8, #1 - b .L3161 -.L3159: - ldr r0, [r3, #12] - ldr r2, [r3, #8] - ldr r1, [sp, #12] - bl FtlGcUpdatePage - ldr r3, [sp, #8] - adds r3, r3, #1 - b .L3189 -.L3151: - ldr r2, [sp, #12] - ldr r0, .L3192+16 - ldrh r1, [r4] - str ip, [sp, #8] - bl printk - ldrh r3, [r4] - ldr ip, [sp, #8] - ldr r2, [ip, #2244] - cbnz r2, .L3165 - ldrb r2, [ip, #144] @ zero_extendqisi2 - cbz r2, .L3166 -.L3165: - ldr r2, [fp, #232] - ldrh r2, [r2, r3, lsl #1] - cmp r2, #159 - bls .L3167 -.L3166: - ldr r2, [fp, #3304] - ldr r2, [r2, r9] - adds r2, r2, #1 - bne .L3168 -.L3167: - ldr r2, [fp, #3304] - add r9, r9, r2 - ldr r2, [r9, #4] - str r2, [sp, #16] -.L3168: - ldr r2, .L3192+8 - movs r1, #0 - ldr r2, [r2, #296] - strh r1, [r2, r3, lsl #1] @ movhi - ldrh r0, [r4] - bl INSERT_FREE_LIST - movw r3, #65535 - strh r3, [r4] @ movhi -.L3188: - bl FtlGcPageVarInit - movs r5, #0 - b .L3142 -.L3191: - ldr r3, [sp, #4] - adds r5, r5, #1 - ldr r2, [sp, #20] - adds r3, r3, #1 - uxth r5, r5 - cmp r3, r2 - str r3, [sp, #4] - bcs .L3170 -.L3172: - ldrh r3, [r10, #2388] - cmp r3, r5 - bhi .L3171 - movs r2, #0 - b .L3143 -.L3170: - ldr r2, .L3192 + b .L3076 +.L3058: + ldr r2, .L3078 movw r1, #65535 - ldrh r3, [r2, #3448] + ldrh r3, [r2, #3444] cmp r3, r1 - beq .L3172 + beq .L3060 ldr r1, [sp, #4] add r3, r3, r1 - strh r3, [r2, #3448] @ movhi - ldrh r3, [r10, #2388] - cmp r3, r5 - bls .L3172 - b .L3173 -.L3143: - ldr r3, .L3192 - movw r1, #65535 - strh r5, [r4, #2] @ movhi - mov r0, r4 - strb r2, [r4, #6] - strh r1, [r3, #3448] @ movhi - mov r1, r5 - bl ftl_sb_update_avl_pages -.L3173: - ldr r0, [sp, #16] + strh r3, [r2, #3444] @ movhi + ldrh r3, [r7, #2390] + cmp r3, r6 + bls .L3060 +.L3028: + ldr r0, [sp, #12] add sp, sp, #76 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3193: +.L3079: .align 2 -.L3192: +.L3078: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 @@ -19515,8 +19804,10 @@ .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 1 .global FtlReadRefresh + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlReadRefresh, %function FtlReadRefresh: .fnstart @@ -19526,36 +19817,42 @@ .save {r4, r5, r6, r7, r8, r9, lr} .pad #44 sub sp, sp, #44 - ldr r5, .L3210 - ldr r4, .L3210+4 - ldr r9, [r5, #688] + ldr r5, .L3096 + ldr r9, [r5, #684] mov r6, r5 cmp r9, #0 - beq .L3195 - ldr r2, [r5, #692] - ldr r3, [r4, #2448] - cmp r2, r3 - bcs .L3196 + beq .L3081 + ldr r4, .L3096+4 + ldr r1, [r5, #688] + ldr r2, [r4, #2452] + cmp r1, r2 + bcs .L3082 mov r5, #2048 - mov r7, r6 -.L3201: - ldr r0, [r6, #692] - ldr r3, [r4, #2448] +.L3087: + ldr r0, [r6, #688] + ldr r3, [r4, #2452] cmp r0, r3 - bcs .L3200 + bcc .L3083 +.L3086: + mov r0, #-1 +.L3080: + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, pc} +.L3083: + movs r2, #0 mov r1, sp - movs r2, #0 bl log2phys - ldr r3, [r7, #692] - adds r3, r3, #1 - str r3, [r7, #692] ldr r2, [sp] + ldr r3, [r6, #688] adds r1, r2, #1 - beq .L3199 - add r0, sp, #40 + add r3, r3, #1 + str r3, [r6, #688] + beq .L3085 str r2, [sp, #8] - movs r1, #1 + add r0, sp, #40 movs r2, #0 + movs r1, #1 str r2, [r0, #-36]! str r3, [sp, #20] str r2, [sp, #12] @@ -19563,285 +19860,283 @@ bl FlashReadPages ldr r3, [sp, #4] cmp r3, #256 - bne .L3200 + bne .L3086 ldr r0, [sp] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3200: - mov r0, #-1 - b .L3203 -.L3199: + b .L3086 +.L3085: subs r5, r5, #1 - bne .L3201 - b .L3200 -.L3196: + bne .L3087 + b .L3086 +.L3082: ldr r3, [r5, #476] movs r0, #0 + str r0, [r5, #684] str r0, [r5, #688] - str r0, [r5, #692] - str r3, [r5, #684] - b .L3203 -.L3195: + str r3, [r5, #680] + b .L3080 +.L3081: ldr r8, [r5, #476] - ldr r1, [r5, #528] - ldr r7, [r5, #684] - add r2, r8, #1048576 - ldr r3, [r4, #2448] movw r4, #10000 + ldr r1, [r5, #528] + ldr r7, [r5, #680] + add r3, r8, #1048576 cmp r1, r4 ite hi movhi r4, #31 movls r4, #63 - cmp r7, r2 - bhi .L3205 - mov r0, #1000 + cmp r7, r3 + bhi .L3091 + ldr r3, .L3096+4 lsrs r1, r1, #10 + mov r0, #1000 adds r1, r1, #1 + ldr r3, [r3, #2452] muls r0, r3, r0 bl __aeabi_uidiv add r0, r0, r7 - cmp r0, r8 - bcc .L3205 - ldrh r3, [r5, #268] + cmp r8, r0 + bhi .L3091 + ldrh r3, [r5, #272] ands r0, r4, r3 - bne .L3207 - ldr r2, [r5, #708] - cmp r2, r3 - beq .L3203 -.L3205: - ldrh r3, [r6, #268] + bne .L3093 + ldr r2, [r5, #704] + cmp r3, r2 + beq .L3080 +.L3091: + ldrh r3, [r6, #272] movs r0, #0 - str r8, [r6, #684] - str r0, [r6, #692] - str r3, [r6, #708] + str r0, [r6, #688] + str r8, [r6, #680] + str r3, [r6, #704] movs r3, #1 - str r3, [r6, #688] - b .L3203 -.L3207: + str r3, [r6, #684] + b .L3080 +.L3093: mov r0, r9 -.L3203: - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L3211: + b .L3080 +.L3097: .align 2 -.L3210: +.L3096: .word .LANCHOR2 .word .LANCHOR0 .fnend .size FtlReadRefresh, .-FtlReadRefresh .align 1 .global FtlGcFreeTempBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r5, .L3250 - ldr r6, .L3250+4 - ldr r2, [r5, #224] - mov r4, r5 - ldrh r1, [r6, #2388] - cmp r2, #0 - bne .L3248 - ldrh r5, [r5, #412] + push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #8 + ldr r4, .L3136 + ldr r6, .L3136+4 + ldr r2, [r4, #228] + ldrh r1, [r6, #2390] + cbz r2, .L3099 +.L3134: + movs r0, #0 +.L3098: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3099: + ldrh r5, [r4, #416] movw r7, #65535 cmp r5, r7 - bne .L3215 -.L3224: - ldrh r2, [r4, #412] + bne .L3101 +.L3110: + ldrh r2, [r4, #416] movw r3, #65535 - movs r7, #0 - ldr r5, .L3250 + movs r5, #0 + str r5, [r4, #3468] cmp r2, r3 - str r7, [r4, #3468] - beq .L3248 + beq .L3134 bl FtlCacheWriteBack - ldrb r0, [r5, #419] @ zero_extendqisi2 - ldrh r3, [r6, #2388] - mov r10, #12 - ldr r2, [r5, #296] - ldrh r1, [r5, #412] - smulbb r3, r0, r3 + ldrb r3, [r4, #423] @ zero_extendqisi2 + mov r9, #12 + ldrh r0, [r6, #2390] + ldr r2, [r4, #300] + ldrh r1, [r4, #416] + smulbb r3, r3, r0 strh r3, [r2, r1, lsl #1] @ movhi - ldr r3, [r5, #496] - ldrh r2, [r5, #1172] - add r3, r3, r2 - str r3, [r5, #496] - b .L3225 -.L3215: - cbz r0, .L3218 - ldr r3, .L3250+8 - ldrh r0, [r3, #3448] - cmp r0, r7 - beq .L3219 -.L3220: - movs r1, #2 - b .L3218 -.L3219: - strh r2, [r3, #3448] @ movhi - ldrh r3, [r4, #312] - cmp r3, #17 - bhi .L3220 -.L3218: - ldr r7, .L3250 - add r0, r7, #412 - bl FtlGcScanTempBlk - str r0, [sp, #4] - adds r0, r0, #1 - beq .L3221 - ldr r2, [r7, #232] - ldrh r3, [r2, r5, lsl #1] - cmp r3, #4 - bls .L3222 - subs r3, r3, #5 - movs r0, #1 - strh r3, [r2, r5, lsl #1] @ movhi - bl FtlEctTblFlush -.L3222: - ldr r3, [r4, #3468] - ldr r2, .L3250 - cbnz r3, .L3223 - ldr r0, [sp, #4] - ldr r3, [r2, #704] - ubfx r0, r0, #10, #16 - adds r3, r3, #1 - str r3, [r2, #704] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L3223: - movs r3, #0 - str r3, [r4, #3468] - b .L3235 -.L3221: - ldr r3, .L3250+8 - ldrh r2, [r3, #3448] - movw r3, #65535 - cmp r2, r3 - bne .L3235 - b .L3224 -.L3228: - ldr r3, [r9, #4] - cmp r0, r3 - bne .L3246 -.L3227: - adds r7, r7, #1 -.L3225: + ldr r2, [r4, #496] ldrh r3, [r4, #1172] - uxth r8, r7 - cmp r3, r8 - bls .L3249 - mul r8, r10, r8 - ldr fp, [r5, #1168] - ldr r3, [r6, #2448] - add r9, fp, r8 - ldr r0, [r9, #8] - cmp r0, r3 - bcs .L3246 - add r1, sp, #4 - movs r2, #0 - bl log2phys - ldr r3, [fp, r8] - ldr r0, [sp, #4] - cmp r0, r3 - bne .L3228 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - add r1, r9, #4 - movs r2, #1 - mov r8, r0 - ldr r0, [r9, #8] - bl log2phys - mov r0, r8 - b .L3247 -.L3246: - ldrh r0, [r5, #412] -.L3247: - bl decrement_vpc_count - b .L3227 -.L3249: + add r3, r3, r2 + str r3, [r4, #496] +.L3111: + ldrh r2, [r4, #1172] + uxth r3, r5 + cmp r2, r3 + bhi .L3115 movw r0, #65535 bl decrement_vpc_count - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L3230 - ldr r3, .L3250 - ldr r0, .L3250+12 - ldrh r1, [r3, #412] + ldrb r3, [r6, #152] @ zero_extendqisi2 + cbz r3, .L3116 + ldrh r1, [r4, #416] + ldr r0, .L3136+8 bl printk -.L3230: - ldrh r0, [r4, #412] - ldr r3, [r4, #296] +.L3116: + ldrh r0, [r4, #416] + ldr r3, [r4, #300] ldrh r3, [r3, r0, lsl #1] - cbz r3, .L3231 + cmp r3, #0 + beq .L3117 bl INSERT_DATA_LIST - b .L3232 -.L3231: - bl INSERT_FREE_LIST -.L3232: - movw r8, #65535 +.L3118: + movw r7, #65535 movs r5, #0 - strh r8, [r4, #412] @ movhi + strh r7, [r4, #416] @ movhi strh r5, [r4, #1172] @ movhi strh r5, [r4, #1164] @ movhi bl l2p_flush bl FtlVpcTblFlush - ldr r3, [r6, #2244] - ldr r7, .L3250 - strh r8, [r4, #556] @ movhi - cbz r3, .L3233 - ldr r3, [r7, #532] + ldr r3, [r6, #2248] + strh r7, [r4, #556] @ movhi + cmp r3, #0 + beq .L3119 + ldr r3, [r4, #532] cmp r3, #39 - bhi .L3233 - ldrh r3, [r7, #536] - ldrh r2, [r7, #312] - cmp r2, r3 - bcs .L3248 - lsls r3, r3, #1 - strh r3, [r7, #1120] @ movhi - b .L3248 -.L3233: + bhi .L3119 ldrh r3, [r4, #536] - ldrh r1, [r4, #312] - ldr r2, .L3250 - add r0, r3, r3, lsl #1 - cmp r1, r0, asr #2 - ble .L3248 - ldrb r0, [r6, #144] @ zero_extendqisi2 - cbz r0, .L3234 - subs r3, r3, #2 - strh r3, [r2, #1120] @ movhi -.L3248: - movs r0, #0 - b .L3214 -.L3234: - movs r3, #20 - strh r3, [r2, #1120] @ movhi - b .L3214 -.L3235: + ldrh r2, [r4, #316] + cmp r2, r3 + bcs .L3134 + lsls r3, r3, #1 +.L3135: + strh r3, [r4, #1120] @ movhi + b .L3134 +.L3101: + cbz r0, .L3104 + ldr r3, .L3136+12 + ldrh r0, [r3, #3444] + cmp r0, r7 + beq .L3105 +.L3106: + movs r1, #2 +.L3104: + ldr r0, .L3136+16 + bl FtlGcScanTempBlk + str r0, [sp, #4] + adds r0, r0, #1 + beq .L3107 + ldr r2, [r4, #236] + ldrh r3, [r2, r5, lsl #1] + cmp r3, #4 + bls .L3108 + subs r3, r3, #5 movs r0, #1 -.L3214: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3251: + strh r3, [r2, r5, lsl #1] @ movhi + bl FtlEctTblFlush +.L3108: + ldr r3, [r4, #3468] + cbnz r3, .L3109 + ldr r3, [r4, #700] + ldr r0, [sp, #4] + adds r3, r3, #1 + ubfx r0, r0, #10, #16 + str r3, [r4, #700] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L3109: + movs r3, #0 + str r3, [r4, #3468] +.L3121: + movs r0, #1 + b .L3098 +.L3105: + strh r2, [r3, #3444] @ movhi + ldrh r3, [r4, #316] + cmp r3, #17 + bhi .L3106 + b .L3104 +.L3107: + ldr r3, .L3136+12 + ldrh r2, [r3, #3444] + movw r3, #65535 + cmp r2, r3 + bne .L3121 + b .L3110 +.L3115: + uxth r8, r5 + ldr r10, [r4, #1168] + ldr r3, [r6, #2452] + mul r8, r9, r8 + add r7, r10, r8 + ldr r0, [r7, #8] + cmp r0, r3 + bcc .L3112 +.L3132: + ldrh r0, [r4, #416] + b .L3133 +.L3112: + movs r2, #0 + add r1, sp, #4 + bl log2phys + ldr r0, [r10, r8] + ldr r3, [sp, #4] + cmp r0, r3 + bne .L3114 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + movs r2, #1 + mov r8, r0 + adds r1, r7, #4 + ldr r0, [r7, #8] + bl log2phys + mov r0, r8 +.L3133: + bl decrement_vpc_count + b .L3113 +.L3114: + ldr r2, [r7, #4] + cmp r3, r2 + bne .L3132 +.L3113: + adds r5, r5, #1 + b .L3111 +.L3117: + bl INSERT_FREE_LIST + b .L3118 +.L3119: + ldrh r3, [r4, #536] + ldrh r2, [r4, #316] + add r1, r3, r3, lsl #1 + cmp r2, r1, asr #2 + ble .L3134 + ldrb r0, [r6, #152] @ zero_extendqisi2 + cbz r0, .L3120 + subs r3, r3, #2 + b .L3135 +.L3120: + movs r3, #20 + strh r3, [r4, #1120] @ movhi + b .L3098 +.L3137: .align 2 -.L3250: +.L3136: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR1 .word .LC155 + .word .LANCHOR1 + .word .LANCHOR2+416 .fnend .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 1 .global FtlGcPageRecovery + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlGcPageRecovery, %function FtlGcPageRecovery: .fnstart @@ -19849,34 +20144,36 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - ldr r5, .L3254 - ldr r4, .L3254+4 - ldrh r1, [r5, #2388] - add r0, r4, #412 + ldr r5, .L3140 + ldr r4, .L3140+4 + ldrh r1, [r5, #2390] + add r0, r4, #416 bl FtlGcScanTempBlk - ldrh r2, [r4, #414] - ldrh r3, [r5, #2388] + ldrh r2, [r4, #418] + ldrh r3, [r5, #2390] cmp r2, r3 - bcc .L3252 + bcc .L3138 add r0, r4, #3408 bl FtlMapBlkWriteDumpData movs r0, #0 bl FtlGcFreeTempBlock movs r3, #0 str r3, [r4, #3468] -.L3252: +.L3138: pop {r3, r4, r5, pc} -.L3255: +.L3141: .align 2 -.L3254: +.L3140: .word .LANCHOR0 .word .LANCHOR2 .fnend .size FtlGcPageRecovery, .-FtlGcPageRecovery .align 1 .global FtlPowerLostRecovery + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: .fnstart @@ -19885,12 +20182,12 @@ push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r5, #0 - ldr r4, .L3257 - ldr r3, .L3257+4 - add r6, r4, #316 - add r4, r4, #364 + ldr r4, .L3143 + ldr r3, .L3143+4 + add r6, r4, #320 + add r4, r4, #368 mov r0, r6 - str r5, [r3, #844] + str r5, [r3, #1348] bl FtlRecoverySuperblock mov r0, r6 bl FtlSlcSuperblockCheck @@ -19903,17 +20200,19 @@ bl decrement_vpc_count mov r0, r5 pop {r4, r5, r6, pc} -.L3258: +.L3144: .align 2 -.L3257: +.L3143: .word .LANCHOR2 - .word .LANCHOR5 + .word .LANCHOR4 .fnend .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .align 1 .global FtlSysBlkInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlSysBlkInit, %function FtlSysBlkInit: .fnstart @@ -19922,26 +20221,29 @@ push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} movs r3, #0 - ldr r5, .L3276 + ldr r5, .L3162 movw r7, #65535 - ldr r6, .L3276+4 - ldr r4, .L3276+8 - ldrh r0, [r5, #2324] - strh r3, [r6, #842] @ movhi - strh r7, [r6, #840] @ movhi + ldr r6, .L3162+4 + ldr r4, .L3162+8 + ldrh r0, [r5, #2328] + strh r3, [r6, #1344] @ movhi + strh r7, [r6, #1342] @ movhi bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk ldrh r3, [r4, #540] cmp r3, r7 - bne .L3260 -.L3262: - mov r7, #-1 - b .L3261 -.L3260: + mov r7, r6 + bne .L3146 +.L3148: + mov r6, #-1 +.L3145: + mov r0, r6 + pop {r3, r4, r5, r6, r7, pc} +.L3146: bl FtlLoadSysInfo - mov r7, r0 + mov r6, r0 cmp r0, #0 - bne .L3262 + bne .L3148 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -19951,405 +20253,399 @@ bl FtlPowerLostRecovery movs r0, #1 bl FtlUpdateVaildLpn - ldrh r1, [r5, #2426] - ldr r2, [r4, #460] + ldrh r1, [r5, #2430] + mov r3, r6 + ldr r2, [r4, #464] movs r0, #12 - mov r3, r7 -.L3263: +.L3149: cmp r3, r1 - bge .L3268 - mla lr, r0, r3, r2 - ldr lr, [lr, #4] - cmp lr, #0 - bge .L3264 -.L3268: - ldrh r2, [r4, #268] + bge .L3154 + mla ip, r0, r3, r2 + ldr ip, [ip, #4] + cmp ip, #0 + bge .L3150 +.L3154: + ldrh r2, [r4, #272] cmp r3, r1 add r2, r2, #1 - strh r2, [r4, #268] @ movhi - bge .L3275 - b .L3265 -.L3264: - adds r3, r3, #1 - b .L3263 -.L3275: - ldrh r3, [r6, #842] - cbz r3, .L3269 -.L3265: - ldrh r1, [r4, #316] - ldr r2, [r4, #296] - ldrh r0, [r4, #320] + strh r2, [r4, #272] @ movhi + bge .L3161 +.L3151: + ldrh r1, [r4, #320] + ldr r2, [r4, #300] + ldrh r0, [r4, #324] ldrh r3, [r2, r1, lsl #1] subs r3, r3, r0 strh r3, [r2, r1, lsl #1] @ movhi - ldr r1, [r4, #296] - ldrh r3, [r5, #2388] - ldrh r0, [r4, #364] - ldrh r6, [r4, #368] - strh r3, [r4, #318] @ movhi + ldrh r3, [r5, #2390] + ldr r1, [r4, #300] + ldrh r0, [r4, #368] + strh r3, [r4, #322] @ movhi movs r3, #0 - strb r3, [r4, #322] - strh r3, [r4, #320] @ movhi + strb r3, [r4, #326] + strh r3, [r4, #324] @ movhi + ldrh r7, [r4, #372] ldrh r2, [r1, r0, lsl #1] - subs r2, r2, r6 + subs r2, r2, r7 strh r2, [r1, r0, lsl #1] @ movhi - ldrh r2, [r5, #2388] - strb r3, [r4, #370] - strh r3, [r4, #368] @ movhi - ldrh r3, [r4, #270] - strh r2, [r4, #366] @ movhi + strb r3, [r4, #374] + strh r3, [r4, #372] @ movhi + ldrh r3, [r4, #274] + ldrh r2, [r5, #2390] adds r3, r3, #1 - strh r3, [r4, #270] @ movhi + strh r2, [r4, #370] @ movhi + strh r3, [r4, #274] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L3269: - ldrh r0, [r4, #316] + b .L3155 +.L3150: + adds r3, r3, #1 + b .L3149 +.L3161: + ldrh r3, [r7, #1344] + cmp r3, #0 + bne .L3151 +.L3155: + ldrh r0, [r4, #320] movw r3, #65535 - ldr r6, .L3276+8 cmp r0, r3 - beq .L3270 - ldrh r3, [r6, #320] - cbnz r3, .L3270 - ldrh r3, [r6, #368] - cbnz r3, .L3270 + beq .L3156 + ldrh r3, [r4, #324] + cbnz r3, .L3156 + ldrh r3, [r4, #372] + cbnz r3, .L3156 bl FtlGcRefreshOpenBlock - ldrh r0, [r6, #364] + ldrh r0, [r4, #368] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush - add r0, r6, #316 + ldr r0, .L3162+12 bl allocate_new_data_superblock - add r0, r6, #364 + ldr r0, .L3162+16 bl allocate_new_data_superblock -.L3270: - ldrb r3, [r5] @ zero_extendqisi2 - cbnz r3, .L3271 - ldrh r3, [r4, #268] +.L3156: + ldrb r3, [r5, #36] @ zero_extendqisi2 + cbnz r3, .L3157 + ldrh r3, [r4, #272] lsls r3, r3, #27 - bne .L3261 -.L3271: + bne .L3145 +.L3157: bl FtlVpcCheckAndModify -.L3261: - mov r0, r7 - pop {r3, r4, r5, r6, r7, pc} -.L3277: + b .L3145 +.L3163: .align 2 -.L3276: +.L3162: .word .LANCHOR0 - .word .LANCHOR5 + .word .LANCHOR4 .word .LANCHOR2 + .word .LANCHOR2+320 + .word .LANCHOR2+368 .fnend .size FtlSysBlkInit, .-FtlSysBlkInit .align 1 .global FtlLowFormat + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlLowFormat, %function FtlLowFormat: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r4, .L3312 - ldr r6, [r4, #224] + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + ldr r4, .L3195 + ldr r6, [r4, #228] cmp r6, #0 - bne .L3280 - ldr r5, .L3312+4 + bne .L3166 + ldr r5, .L3195+4 mov r1, r6 ldr r0, [r4, #3392] - ldrh r2, [r5, #2424] + ldrh r2, [r5, #2428] lsls r2, r2, #2 bl ftl_memset - ldrh r2, [r5, #2424] + ldrh r2, [r5, #2428] mov r1, r6 ldr r0, [r4, #3388] lsls r2, r2, #2 bl ftl_memset - ldrh r0, [r5, #2324] + ldrh r0, [r5, #2328] str r6, [r4, #508] str r6, [r4, #512] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz r0, .L3281 + cbz r0, .L3167 bl FtlMakeBbt -.L3281: - ldr r0, .L3312+8 +.L3167: + ldr r0, .L3195+8 movs r2, #0 -.L3282: - ldrh r1, [r5, #2394] +.L3168: + ldrh r1, [r5, #2396] uxth r3, r2 adds r2, r2, #1 cmp r3, r1, lsl #7 - bge .L3309 + blt .L3169 + ldrh r7, [r5, #2332] + movs r6, #0 +.L3170: + ldrh r3, [r5, #2334] + cmp r3, r7 + bhi .L3171 + ldrh r1, [r5, #2324] + subs r3, r6, #3 + cmp r3, r1, lsl #1 + blt .L3172 + mov r0, r6 + movs r6, #0 + bl __aeabi_uidiv + ldr r3, [r5, #2424] + add r0, r0, r3 + uxth r0, r0 + bl FtlSysBlkNumInit + ldrh r0, [r5, #2328] + bl FtlFreeSysBlkQueueInit + ldrh r7, [r5, #2332] +.L3173: + ldrh r3, [r5, #2334] + cmp r3, r7 + bhi .L3174 +.L3172: + movs r7, #0 + mov r8, r7 +.L3175: + ldrh r3, [r5, #2332] + uxth r0, r7 + adds r7, r7, #1 + cmp r3, r0 + bhi .L3176 + ldrh r3, [r5, #2334] + ldrh r7, [r5, #2324] + ldr fp, [r5, #2336] + str r3, [r4, #3292] + mov r1, r7 + mov r0, fp + bl __aeabi_uidiv + ubfx r9, r0, #5, #16 + mov r10, r0 + add r3, r9, #36 + str r0, [r5, #2452] + strh r3, [r4, #536] @ movhi + movs r3, #24 + muls r3, r7, r3 + cmp r8, r3 + ble .L3177 + mov r1, r7 + sub r0, fp, r8 + bl __aeabi_uidiv + str r0, [r5, #2452] + lsrs r0, r0, #5 + adds r0, r0, #24 + strh r0, [r4, #536] @ movhi +.L3177: + ldr r3, [r5, #2248] + cmp r3, #1 + bne .L3178 + ldrh fp, [r4, #536] + mov r1, r7 + mov r0, r8 + bl __aeabi_uidiv + uxtah r0, fp, r0 + add fp, fp, r0, asr #2 + strh fp, [r4, #536] @ movhi +.L3178: + ldrb r3, [r5, #152] @ zero_extendqisi2 + cbz r3, .L3179 + ldrh fp, [r4, #536] + mov r1, r7 + mov r0, r8 + bl __aeabi_uidiv + uxtah r0, fp, r0 + add fp, fp, r0, asr #2 + strh fp, [r4, #536] @ movhi +.L3179: + ldrh r3, [r5, #2384] + cbz r3, .L3181 + ldrh r2, [r4, #536] + add r2, r2, r3, lsr #1 + strh r2, [r4, #536] @ movhi + mul r2, r7, r3 + cmp r8, r2 + itttt lt + addlt r3, r3, #32 + strlt r10, [r5, #2452] + addlt r3, r3, r9 + strhlt r3, [r4, #536] @ movhi +.L3181: + ldrh r2, [r4, #536] + ldr r3, [r5, #2452] + ldr r9, .L3195+28 + subs r3, r3, r2 + muls r7, r3, r7 + ldrh r3, [r5, #2390] + str r7, [r9, #1292] + muls r7, r3, r7 + ldrh r3, [r5, #2396] + str r7, [r5, #2452] + muls r7, r3, r7 + str r7, [r5, #2432] + bl FtlBbmTblFlush + ldr r2, [r5, #2340] + add r1, r6, r8 + ldrh r3, [r5, #2404] + add r3, r3, r2, lsr #3 + cmp r1, r3 + bls .L3183 + lsrs r2, r2, #5 + ldr r0, .L3195+12 + bl printk +.L3183: + ldrh r2, [r5, #2334] + movs r1, #0 + ldr r0, [r4, #300] + movw r7, #65535 + lsls r2, r2, #1 + bl ftl_memset + ldrh r2, [r5, #2332] + movs r3, #0 + ldr r0, [r5, #32] + movs r1, #255 + ldr r5, .L3195+16 + str r3, [r4, #472] + strh r3, [r4, #558] @ movhi + lsrs r2, r2, #3 + strb r3, [r4, #562] + strb r3, [r4, #564] + strh r3, [r4, #322] @ movhi + strb r3, [r4, #326] + strh r3, [r4, #320] @ movhi + movs r3, #1 + strh r7, [r4, #556] @ movhi + strb r3, [r4, #328] + bl ftl_memset +.L3184: + mov r0, r5 + bl make_superblock + ldrb r3, [r4, #327] @ zero_extendqisi2 + ldrh r2, [r4, #320] + cbnz r3, .L3185 + ldr r3, [r4, #300] + strh r7, [r3, r2, lsl #1] @ movhi + ldrh r3, [r4, #320] + adds r3, r3, #1 + strh r3, [r4, #320] @ movhi + b .L3184 +.L3169: ldr r6, [r4, #3332] mvns r1, r3 orr r1, r3, r1, lsl #16 str r1, [r6, r3, lsl #2] ldr r1, [r4, #3336] str r0, [r1, r3, lsl #2] - b .L3282 -.L3309: - ldr r3, .L3312+4 - movs r6, #0 - ldrh r7, [r3, #2328] -.L3284: - ldrh r3, [r5, #2330] - ldr r8, .L3312+4 - cmp r3, r7 - bls .L3310 + b .L3168 +.L3171: mov r0, r7 movs r1, #1 bl FtlLowFormatEraseBlock adds r7, r7, #1 + add r6, r6, r0 + uxth r6, r6 uxth r7, r7 - add r0, r0, r6 - uxth r6, r0 - b .L3284 -.L3310: - ldrh r1, [r8, #2320] - subs r3, r6, #3 - cmp r3, r1, lsl #1 - blt .L3286 - mov r0, r6 - movs r6, #0 - bl __aeabi_uidiv - ldr r3, [r8, #2420] - add r0, r0, r3 - uxth r0, r0 - bl FtlSysBlkNumInit - ldrh r0, [r8, #2324] - bl FtlFreeSysBlkQueueInit - ldrh r7, [r8, #2328] -.L3287: - ldrh r3, [r5, #2330] - cmp r3, r7 - bls .L3286 + b .L3170 +.L3174: mov r0, r7 movs r1, #1 bl FtlLowFormatEraseBlock adds r7, r7, #1 + add r6, r6, r0 + uxth r6, r6 uxth r7, r7 - add r0, r0, r6 - uxth r6, r0 - b .L3287 -.L3286: - mov r8, #0 - mov r7, r8 -.L3289: - ldrh r3, [r5, #2328] - uxth r0, r8 - ldr fp, .L3312+4 - add r8, r8, #1 - cmp r3, r0 - bls .L3311 + b .L3173 +.L3176: movs r1, #0 bl FtlLowFormatEraseBlock - add r0, r0, r7 - uxth r7, r0 - b .L3289 -.L3311: - ldr r2, [fp, #2332] - ldrh r3, [fp, #2330] - ldrh r8, [fp, #2320] - mov r0, r2 - str r2, [sp, #4] - str r3, [r4, #3292] - mov r1, r8 - bl __aeabi_uidiv - ubfx r9, r0, #5, #16 - mov r10, r0 - add r3, r9, #36 - strh r3, [r4, #536] @ movhi - movs r3, #24 - str r0, [fp, #2448] - ldr r2, [sp, #4] - mul r3, r3, r8 - cmp r7, r3 - ble .L3291 - subs r0, r2, r7 - mov r1, r8 - bl __aeabi_uidiv - ldr r3, .L3312 - str r0, [fp, #2448] - lsrs r0, r0, #5 - adds r0, r0, #24 - strh r0, [r3, #536] @ movhi -.L3291: - ldr r3, [r5, #2244] - cmp r3, #1 - bne .L3292 - mov r0, r7 - mov r1, r8 - bl __aeabi_uidiv - ldrh fp, [r4, #536] - uxtah r0, fp, r0 - add fp, fp, r0, asr #2 - strh fp, [r4, #536] @ movhi -.L3292: - ldrb r3, [r5, #144] @ zero_extendqisi2 - cbz r3, .L3293 - mov r0, r7 - mov r1, r8 - bl __aeabi_uidiv - ldrh fp, [r4, #536] - uxtah r0, fp, r0 - add fp, fp, r0, asr #2 - strh fp, [r4, #536] @ movhi -.L3293: - ldrh r3, [r5, #2382] - cbz r3, .L3295 - ldrh r2, [r4, #536] - add r2, r2, r3, lsr #1 - strh r2, [r4, #536] @ movhi - mul r2, r8, r3 - cmp r2, r7 - itttt gt - addgt r3, r3, #32 - ldrgt r2, .L3312+4 - addgt r3, r3, r9 - strgt r10, [r2, #2448] - itt gt - ldrgt r2, .L3312 - strhgt r3, [r2, #536] @ movhi -.L3295: - ldrh r2, [r4, #536] - ldr r3, [r5, #2448] - subs r3, r3, r2 - ldrh r2, [r5, #2388] - mul r3, r8, r3 - ldr r8, .L3312+20 - str r3, [r8, #1284] - muls r3, r2, r3 - ldrh r2, [r5, #2394] - str r3, [r5, #2448] - muls r3, r2, r3 - str r3, [r5, #2428] - bl FtlBbmTblFlush - ldr r2, [r5, #2336] - adds r1, r7, r6 - ldrh r3, [r5, #2402] - add r3, r3, r2, lsr #3 - cmp r1, r3 - bls .L3297 - ldr r0, .L3312+12 - lsrs r2, r2, #5 - bl printk -.L3297: - ldrh r2, [r5, #2330] - movs r1, #0 - ldr r0, [r4, #296] - movs r7, #0 - movw r6, #65535 - lsls r2, r2, #1 - bl ftl_memset - ldrh r2, [r5, #2328] - ldr r0, [r4, #472] - movs r1, #255 - str r7, [r4, #468] - movs r3, #1 - lsrs r2, r2, #3 - strh r7, [r4, #558] @ movhi - strb r7, [r4, #562] - strb r7, [r4, #564] - strh r7, [r4, #318] @ movhi - strb r7, [r4, #322] - strh r7, [r4, #316] @ movhi - strh r6, [r4, #556] @ movhi - strb r3, [r4, #324] - bl ftl_memset - ldr r7, .L3312 -.L3298: - ldr r5, .L3312 - add r0, r5, #316 - bl make_superblock - ldrb r3, [r4, #323] @ zero_extendqisi2 - ldrh r2, [r4, #316] - cbnz r3, .L3299 - ldr r3, [r7, #296] - strh r6, [r3, r2, lsl #1] @ movhi - ldrh r3, [r7, #316] + add r8, r8, r0 + uxth r8, r8 + b .L3175 +.L3185: + ldr r3, [r4, #508] + movw r5, #65535 + ldrh r1, [r4, #324] + ldr r7, .L3195+20 + str r3, [r4, #332] adds r3, r3, #1 - strh r3, [r7, #316] @ movhi - b .L3298 -.L3299: - ldr r3, [r5, #508] - movw r7, #65535 - ldrh r1, [r5, #320] - str r3, [r5, #328] - adds r3, r3, #1 - str r3, [r5, #508] - ldr r3, [r5, #296] + str r3, [r4, #508] + ldr r3, [r4, #300] strh r1, [r3, r2, lsl #1] @ movhi movs r3, #0 - strh r3, [r5, #366] @ movhi - strb r3, [r5, #370] - ldrh r3, [r5, #316] + strh r3, [r4, #370] @ movhi + strb r3, [r4, #374] + ldrh r3, [r4, #320] adds r3, r3, #1 - strh r3, [r5, #364] @ movhi + strh r3, [r4, #368] @ movhi movs r3, #1 - strb r3, [r5, #372] -.L3300: - ldr r6, .L3312 - add r0, r6, #364 + strb r3, [r4, #376] +.L3186: + mov r0, r7 bl make_superblock - ldrb r3, [r4, #371] @ zero_extendqisi2 - ldrh r2, [r4, #364] - cbnz r3, .L3301 - ldr r3, [r5, #296] - strh r7, [r3, r2, lsl #1] @ movhi - ldrh r3, [r5, #364] + ldrb r3, [r4, #375] @ zero_extendqisi2 + ldrh r2, [r4, #368] + cbnz r3, .L3187 + ldr r3, [r4, #300] + strh r5, [r3, r2, lsl #1] @ movhi + ldrh r3, [r4, #368] adds r3, r3, #1 - strh r3, [r5, #364] @ movhi - b .L3300 -.L3301: - ldr r3, [r6, #508] - movw r4, #65535 - ldrh r1, [r6, #368] - str r3, [r6, #376] + strh r3, [r4, #368] @ movhi + b .L3186 +.L3187: + ldr r3, [r4, #508] + movw r5, #65535 + ldrh r1, [r4, #372] + str r3, [r4, #380] adds r3, r3, #1 - str r3, [r6, #508] - ldr r3, [r6, #296] + str r3, [r4, #508] + ldr r3, [r4, #300] strh r1, [r3, r2, lsl #1] @ movhi - strh r4, [r6, #412] @ movhi + strh r5, [r4, #416] @ movhi bl FtlFreeSysBlkQueueOut movs r3, #0 - strh r3, [r6, #542] @ movhi - ldr r3, [r8, #1284] - strh r4, [r6, #544] @ movhi - strh r3, [r6, #546] @ movhi - ldr r3, [r6, #508] - str r3, [r6, #548] + strh r0, [r4, #540] @ movhi + strh r3, [r4, #542] @ movhi + ldr r3, [r9, #1292] + strh r5, [r4, #544] @ movhi + strh r3, [r4, #546] @ movhi + ldr r3, [r4, #508] + str r3, [r4, #548] adds r3, r3, #1 - str r3, [r6, #508] - strh r0, [r6, #540] @ movhi + str r3, [r4, #508] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz r0, .L3280 - ldr r3, .L3312+16 + cbnz r0, .L3166 + ldr r3, .L3195+24 movs r2, #1 - str r2, [r3, #504] -.L3280: + str r2, [r3, #500] +.L3166: movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3313: + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3196: .align 2 -.L3312: +.L3195: .word .LANCHOR2 .word .LANCHOR0 .word 168778952 .word .LC156 + .word .LANCHOR2+320 + .word .LANCHOR2+368 .word .LANCHOR1 .word .LANCHOR4 .fnend .size FtlLowFormat, .-FtlLowFormat .align 1 .global FtlReInitForSDUpdata + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlReInitForSDUpdata, %function FtlReInitForSDUpdata: .fnstart @@ -20358,168 +20654,179 @@ push {r0, r1, r2, r3, r4, r5, r6, lr} .save {r4, r5, r6, lr} .pad #16 - ldr r4, .L3342 - ldrb r3, [r4, #144] @ zero_extendqisi2 - cbz r3, .L3315 -.L3317: - movs r0, #0 - b .L3316 -.L3315: - ldr r5, .L3342+4 - ldr r0, [r5, #1180] - bl FlashInit - cmp r0, #0 - bne .L3317 - bl FlashLoadFactorBbt - cbz r0, .L3318 - bl FlashMakeFactorBbt -.L3318: - ldr r0, [r5, #1212] - bl FlashReadIdbDataRaw - cbz r0, .L3319 - movs r1, #0 - movs r2, #16 - mov r0, sp - movs r6, #1 - bl FlashReadFacBbtData - movs r3, #0 - mov r2, r3 - ldr r1, [sp] -.L3320: - lsl r5, r6, r2 - adds r0, r3, #1 - tst r5, r1 - add r2, r2, #1 - it ne - movne r3, r0 - cmp r2, #16 - bne .L3320 - cmp r3, #6 - bls .L3338 - movs r2, #0 - movs r6, #1 -.L3323: - lsl r5, r6, r2 - adds r0, r3, #1 - tst r5, r1 - add r2, r2, #1 - it ne - movne r3, r0 - cmp r2, #24 - bne .L3323 - cmp r3, #17 - bhi .L3324 -.L3338: - strb r2, [r4, #1] - b .L3322 -.L3324: - movs r3, #36 - strb r3, [r4, #1] -.L3322: - ldrb r3, [r4, #1] @ zero_extendqisi2 - strh r3, [r4, #142] @ movhi -.L3319: - ldr r1, .L3342+8 - ldr r0, .L3342+12 - bl printk - ldr r0, .L3342+16 - bl FtlConstantsInit - bl FtlVariablesInit - ldrh r0, [r4, #2324] - bl FtlFreeSysBlkQueueInit - movs r4, #1 -.L3325: - bl FtlLoadBbt - cbz r0, .L3326 -.L3340: - bl FtlLowFormat - cmp r4, #3 - bhi .L3341 - adds r4, r4, #1 - b .L3325 -.L3341: - mov r0, #-1 - b .L3316 -.L3326: - bl FtlSysBlkInit - cmp r0, #0 - bne .L3340 - ldr r3, .L3342+20 - movs r2, #1 - str r2, [r3, #504] -.L3316: + ldr r4, .L3232 + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L3198 +.L3200: + movs r5, #0 +.L3197: + mov r0, r5 add sp, sp, #16 @ sp needed pop {r4, r5, r6, pc} -.L3343: +.L3198: + ldr r6, .L3232+4 + ldr r0, [r6, #1180] + bl FlashInit + mov r5, r0 + cmp r0, #0 + bne .L3200 + bl FlashLoadFactorBbt + cbz r0, .L3201 + bl FlashMakeFactorBbt +.L3201: + ldr r0, [r6, #1220] + bl FlashReadIdbDataRaw + cbz r0, .L3202 + movs r2, #16 + movs r1, #0 + mov r0, sp + bl FlashReadFacBbtData + ldr r1, [sp] + movs r3, #0 + mov r2, r3 + movs r0, #1 +.L3204: + lsl r6, r0, r2 + adds r2, r2, #1 + tst r6, r1 + it ne + addne r3, r3, #1 + cmp r2, #16 + bne .L3204 + cmp r3, #6 + bhi .L3205 +.L3229: + strb r2, [r4, #37] +.L3206: + ldrb r3, [r4, #37] @ zero_extendqisi2 + strh r3, [r4, #150] @ movhi +.L3202: + ldr r1, .L3232+8 + ldr r0, .L3232+12 + bl printk + ldr r0, .L3232+16 + bl FtlConstantsInit + bl FtlVariablesInit + ldrh r0, [r4, #2328] + movs r4, #1 + bl FtlFreeSysBlkQueueInit +.L3210: + bl FtlLoadBbt + cbz r0, .L3211 +.L3231: + bl FtlLowFormat + cmp r4, #3 + bls .L3212 + mov r5, #-1 + b .L3197 +.L3205: + movs r2, #0 + movs r0, #1 +.L3208: + lsl r6, r0, r2 + adds r2, r2, #1 + tst r6, r1 + it ne + addne r3, r3, #1 + cmp r2, #24 + bne .L3208 + cmp r3, #17 + bls .L3229 + movs r3, #36 + strb r3, [r4, #37] + b .L3206 +.L3212: + adds r4, r4, #1 + b .L3210 +.L3211: + bl FtlSysBlkInit + cmp r0, #0 + bne .L3231 + ldr r3, .L3232+20 + movs r2, #1 + str r2, [r3, #500] + b .L3197 +.L3233: .align 2 -.L3342: +.L3232: .word .LANCHOR0 .word .LANCHOR4 - .word .LC77 .word .LC76 - .word .LANCHOR0+116 + .word .LC77 + .word .LANCHOR0+124 .word .LANCHOR1 .fnend .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata .align 1 .global Ftl_gc_temp_data_write_back + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftl_gc_temp_data_write_back, %function Ftl_gc_temp_data_write_back: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - ldr r5, .L3360 - ldr r3, [r5, #224] - cbz r3, .L3345 -.L3348: + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r4, .L3249 + ldr r3, [r4, #228] + cbz r3, .L3235 +.L3238: movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L3345: - ldr r3, .L3360+4 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbz r3, .L3347 - ldr r3, [r5, #1136] + pop {r4, r5, r6, pc} +.L3235: + ldr r3, .L3249+4 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cbz r3, .L3237 + ldr r3, [r4, #1136] lsls r3, r3, #31 - bpl .L3347 - ldrh r3, [r5, #416] + bpl .L3237 + ldrh r3, [r4, #420] cmp r3, #0 - bne .L3348 -.L3347: - movs r2, #0 - ldr r0, [r5, #3308] - ldr r1, [r5, #1136] - movs r6, #0 - mov r3, r2 - ldr r7, .L3360 - bl FlashProgPages - mov r8, #36 -.L3349: - ldr r1, [r5, #1136] - uxth r3, r6 - ldr r4, .L3360 - cmp r3, r1 - bcs .L3359 - mul r3, r8, r3 - ldr r0, [r7, #3308] - adds r6, r6, #1 - adds r1, r0, r3 - ldr r0, [r0, r3] - ldr r2, [r1, #12] - cmp r0, #-1 - bne .L3350 - ldrh r1, [r4, #412] + bne .L3238 +.L3237: + movs r3, #0 movs r5, #0 - ldr r2, [r4, #296] - strh r5, [r2, r1, lsl #1] @ movhi - ldr r2, [r4, #704] - strh r0, [r4, #412] @ movhi + movs r6, #36 + mov r2, r3 + ldr r1, [r4, #1136] + ldr r0, [r4, #3308] + bl FlashProgPages +.L3239: + ldr r1, [r4, #1136] + uxth r3, r5 + cmp r3, r1 + bcc .L3241 + ldr r0, [r4, #3308] + bl FtlGcBufFree + movs r3, #0 + str r3, [r4, #1136] + ldrh r3, [r4, #420] + cmp r3, #0 + bne .L3238 + movs r0, #1 + bl FtlGcFreeTempBlock + b .L3248 +.L3241: + muls r3, r6, r3 + ldr r2, [r4, #3308] + adds r5, r5, #1 + adds r1, r2, r3 + ldr r2, [r2, r3] + ldr r0, [r1, #12] + cmp r2, #-1 + bne .L3240 + ldrh r0, [r4, #416] + movs r5, #0 + ldr r1, [r4, #300] + strh r5, [r1, r0, lsl #1] @ movhi + strh r2, [r4, #416] @ movhi + ldr r2, [r4, #700] adds r2, r2, #1 - str r2, [r4, #704] + str r2, [r4, #700] ldr r2, [r4, #3308] add r3, r3, r2 ldr r0, [r3, #4] @@ -20527,37 +20834,28 @@ bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L3358 -.L3350: - ldr r0, [r2, #12] +.L3248: + movs r0, #1 + pop {r4, r5, r6, pc} +.L3240: + ldr r2, [r0, #8] ldr r1, [r1, #4] - ldr r2, [r2, #8] + ldr r0, [r0, #12] bl FtlGcUpdatePage - b .L3349 -.L3359: - ldr r0, [r4, #3308] - bl FtlGcBufFree - movs r3, #0 - str r3, [r4, #1136] - ldrh r3, [r4, #416] - cmp r3, #0 - bne .L3348 - movs r0, #1 - bl FtlGcFreeTempBlock -.L3358: - movs r0, #1 - pop {r4, r5, r6, r7, r8, pc} -.L3361: + b .L3239 +.L3250: .align 2 -.L3360: +.L3249: .word .LANCHOR2 .word .LANCHOR0 .fnend .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 1 .global Ftl_get_new_temp_ppa + .syntax unified .thumb .thumb_func + .fpu softvfp .type Ftl_get_new_temp_ppa, %function Ftl_get_new_temp_ppa: .fnstart @@ -20566,19 +20864,19 @@ push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movw r3, #65535 - ldr r4, .L3365 - ldrh r2, [r4, #412] + ldr r4, .L3254 + ldrh r2, [r4, #416] cmp r2, r3 - beq .L3363 - ldrh r3, [r4, #416] - cbnz r3, .L3364 -.L3363: + beq .L3252 + ldrh r3, [r4, #420] + cbnz r3, .L3253 +.L3252: bl FtlCacheWriteBack movs r0, #0 movs r5, #0 bl FtlGcFreeTempBlock - ldr r0, .L3365+4 - strb r5, [r4, #420] + ldr r0, .L3254+4 + strb r5, [r4, #424] bl allocate_data_superblock strh r5, [r4, #1164] @ movhi strh r5, [r4, #1172] @ movhi @@ -20586,970 +20884,941 @@ mov r0, r5 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3364: - ldr r0, .L3365+4 +.L3253: + ldr r0, .L3254+4 pop {r3, r4, r5, lr} b get_new_active_ppa -.L3366: +.L3255: .align 2 -.L3365: +.L3254: .word .LANCHOR2 - .word .LANCHOR2+412 + .word .LANCHOR2+416 .fnend .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa .align 1 .global ftl_do_gc + .syntax unified .thumb .thumb_func + .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, .L3540 + ldr r3, .L3422 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r8, r0 - ldr r0, [r3, #224] .pad #44 sub sp, sp, #44 - mov r6, r1 - mov r7, r3 + mov r7, r1 + mov r6, r3 + ldr r0, [r3, #228] cmp r0, #0 - bne .L3467 - ldr r1, .L3540+4 - ldr r4, [r1, #504] + bne .L3355 + ldr r1, .L3422+4 + ldr r4, [r1, #500] cmp r4, #1 - bne .L3527 + bne .L3256 ldr r2, [r3, #3280] cmp r2, #0 - bne .L3527 - ldrh r0, [r3, #304] + bne .L3256 + ldrh r0, [r3, #308] cmp r0, #47 - bls .L3470 - ldrh r1, [r1, #3448] + bls .L3355 + ldrh r1, [r1, #3444] movw r2, #65535 cmp r1, r2 - bne .L3369 -.L3372: - ldrh r4, [r7, #1176] - movw r1, #65535 - ldr r3, .L3540 - cmp r4, r1 - bne .L3370 - b .L3371 -.L3369: - ldrh r3, [r3, #412] - cmp r3, r2 - beq .L3372 - mov r0, r4 - bl FtlGcFreeTempBlock - cmp r0, #0 - beq .L3372 - mov r0, r4 - b .L3527 -.L3370: - ldrh r2, [r3, #1174] - cmp r2, r1 - bne .L3371 - ldrh r0, [r3, #1178] + bne .L3258 +.L3261: + ldrh r0, [r6, #1176] + movw r2, #65535 cmp r0, r2 - beq .L3371 - ldrh r1, [r3, #1180] - cmp r1, r2 - itttt ne - strhne r4, [r3, #1174] @ movhi - strhne r0, [r3, #1176] @ movhi - strhne r1, [r3, #1178] @ movhi - strhne r2, [r3, #1180] @ movhi -.L3371: - ldr r4, [r7, #1124] + bne .L3259 +.L3260: + ldr r3, [r6, #1124] cmp r8, #1 - add r4, r4, #1 - add r4, r4, r8, lsl #7 - str r4, [r7, #1124] - bne .L3383 - ldr r3, .L3540+8 - ldr r2, [r3, #2244] - mov r10, r3 - cbnz r2, .L3374 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cmp r3, #0 - beq .L3383 -.L3374: - ldr r3, [r7, #532] - ldr r5, .L3540 - cmp r3, #39 - bhi .L3383 - ldr r9, .L3540+12 - ldrh r3, [r9, #976] - add r4, r4, r3 - str r4, [r5, #1124] + add r3, r3, #1 + add r3, r3, r8, lsl #7 + str r3, [r6, #1124] + bne .L3262 + ldr r2, .L3422+8 + ldr r1, [r2, #2248] + mov r9, r2 + cbnz r1, .L3263 + ldrb r2, [r2, #152] @ zero_extendqisi2 + cmp r2, #0 + beq .L3262 +.L3263: + ldr r2, [r6, #532] + cmp r2, #39 + bhi .L3262 + ldr r5, .L3422+12 + movw r4, #65535 + ldrh r2, [r5, #1480] + add r3, r3, r2 + str r3, [r6, #1124] bl FtlGcReFreshBadBlk - ldrh r3, [r5, #556] - movw r2, #65535 - cmp r3, r2 - bne .L3383 - ldrh r2, [r5, #1174] + ldrh r3, [r6, #556] + cmp r3, r4 + bne .L3264 + ldrh r2, [r6, #1174] cmp r2, r3 - bne .L3383 - ldr r3, [r5, #1124] + bne .L3352 + ldr r3, [r6, #1124] cmp r3, #1024 - bhi .L3375 - ldrh r3, [r5, #312] + bhi .L3266 + ldrh r3, [r6, #316] cmp r3, #63 - bhi .L3383 -.L3375: - ldrh r3, [r7, #1122] - movs r0, #0 - ldrh r4, [r7, #312] + bhi .L3352 +.L3266: + ldrh r3, [r6, #1122] + movs r2, #0 + ldrh r1, [r6, #316] + strh r2, [r5, #1480] @ movhi adds r3, r3, #64 - ldr r2, .L3540+12 - cmp r4, r3 - strh r0, [r9, #976] @ movhi - ldr r1, .L3540 - bgt .L3383 - ldr r3, [r1, #532] - str r0, [r1, #1124] - cbnz r3, .L3376 + cmp r1, r3 + bgt .L3352 + ldr r3, [r6, #532] + str r2, [r6, #1124] + cmp r3, #0 + bne .L3267 movs r3, #6 - b .L3528 -.L3376: - cmp r3, #5 - bhi .L3377 - movs r3, #18 -.L3528: - strh r3, [r2, #976] @ movhi -.L3377: +.L3413: + strh r3, [r5, #1480] @ movhi +.L3268: movs r0, #32 bl List_get_gc_head_node - movw ip, #65535 uxth r2, r0 - cmp r2, ip - beq .L3382 - ldrh r0, [r7, #1128] - ldr r5, .L3540 - cmp r0, #0 - beq .L3379 - ldrh r4, [r10, #2390] - ldrh r3, [r10, #2320] - ldr fp, [r5, #296] - muls r3, r4, r3 - ldrh r1, [fp, r2, lsl #1] - adds r3, r3, #1 - cmp r1, r3 - bgt .L3382 - adds r1, r0, #1 - str ip, [sp, #20] - str r2, [sp, #16] - mov r10, #0 - uxth r1, r1 - str r10, [r5, #1132] - strh r1, [r5, #1128] @ movhi - str r1, [sp, #12] + movw r3, #65535 + str r3, [sp, #16] + cmp r2, r3 + beq .L3272 + ldrh r4, [r6, #1128] + cmp r4, #0 + beq .L3270 + ldrh ip, [r9, #2392] + uxth r10, r0 + ldrh r1, [r9, #2324] + ldr r2, [r6, #300] + mul r1, r1, ip + ldrh r0, [r2, r10, lsl #1] + str r2, [sp, #12] + adds r1, r1, #1 + cmp r0, r1 + bgt .L3272 + add fp, r4, #1 + mov r0, r4 + uxth fp, fp + mov r9, #0 + str r9, [r6, #1132] + strh fp, [r6, #1128] @ movhi bl List_get_gc_head_node - ldr ip, [sp, #20] + ldr r3, [sp, #16] uxth r4, r0 - ldr r1, [sp, #12] - cmp r4, ip - ldr r2, [sp, #16] - beq .L3382 - ldrh r2, [fp, r2, lsl #1] - ldrh r3, [fp, r4, lsl #1] - ldr r0, .L3540+16 + ldr r2, [sp, #12] + cmp r4, r3 + beq .L3272 + ldrh r3, [r2, r4, lsl #1] + mov r1, fp + ldrh r2, [r2, r10, lsl #1] + ldr r0, .L3422+16 str r2, [sp] mov r2, r4 bl printk - ldrh r3, [r5, #1128] + ldrh r3, [r6, #1128] cmp r3, #40 - bls .L3380 - ldr r3, [r5, #296] + bls .L3271 + ldr r3, [r6, #300] ldrh r3, [r3, r4, lsl #1] cmp r3, #32 it hi - strhhi r10, [r5, #1128] @ movhi -.L3380: + strhhi r9, [r6, #1128] @ movhi +.L3271: movs r3, #6 - strh r3, [r9, #976] @ movhi - b .L3399 -.L3379: + strh r3, [r5, #1480] @ movhi +.L3264: + ldrh r2, [r6, #416] + movw r3, #65535 + cmp r2, r3 + bne .L3299 +.L3354: + ldrh r3, [r6, #1174] + movw r2, #65535 + cmp r3, r2 + bne .L3299 + cmp r4, r3 + bne .L3299 + ldrh r3, [r6, #556] + cmp r3, r4 + beq .L3300 +.L3305: + movw r4, #65535 +.L3299: + ldr r3, .L3422+8 + ldr r3, [r3, #2248] + cmp r3, #0 + ite eq + moveq r5, #1 + movne r5, #2 +.L3298: + ldrh r3, [r6, #556] + movw r2, #65535 + cmp r3, r2 + bne .L3308 + cmp r4, r3 + beq .L3309 + strh r4, [r6, #556] @ movhi +.L3310: + ldrh r0, [r6, #556] + movw r7, #65535 + movs r3, #0 + strb r3, [r6, #564] + cmp r0, r7 + beq .L3308 + bl IsBlkInGcList + cbz r0, .L3313 + strh r7, [r6, #556] @ movhi +.L3313: + ldr r3, .L3422+8 + ldrb r3, [r3, #152] @ zero_extendqisi2 + cbz r3, .L3314 + ldrh r0, [r6, #556] + bl ftl_get_blk_mode + strb r0, [r6, #564] +.L3314: + ldrh r2, [r6, #556] + movw r3, #65535 + cmp r2, r3 + beq .L3308 + ldr r0, .L3422+20 + bl make_superblock + ldr r2, .L3422+12 + movs r3, #0 + strh r3, [r6, #558] @ movhi + strb r3, [r6, #562] + strh r3, [r2, #1482] @ movhi + ldrh r1, [r6, #556] + ldr r3, [r6, #300] + ldrh r3, [r3, r1, lsl #1] + strh r3, [r2, #1484] @ movhi +.L3308: + ldrh r3, [r6, #556] + ldrh r2, [r6, #320] + cmp r2, r3 + beq .L3315 + ldrh r2, [r6, #368] + cmp r2, r3 + beq .L3315 + ldrh r2, [r6, #416] + cmp r2, r3 + bne .L3316 +.L3315: + movw r3, #65535 + strh r3, [r6, #556] @ movhi +.L3316: + ldr r7, .L3422+8 +.L3349: + ldr r9, .L3422 + movw r3, #65535 + ldrh fp, [r9, #556] + mov r6, r9 + cmp fp, r3 + bne .L3317 + movs r3, #0 + str r3, [r9, #1132] +.L3318: + ldrh r10, [r6, #1128] + mov r0, r10 + bl List_get_gc_head_node + uxth r2, r0 + cmp r2, fp + strh r2, [r6, #556] @ movhi + bne .L3319 + movs r3, #0 + movs r0, #8 + strh r3, [r6, #1128] @ movhi + b .L3256 +.L3258: + ldrh r3, [r3, #416] + cmp r3, r2 + beq .L3261 + mov r0, r4 + bl FtlGcFreeTempBlock + cmp r0, #0 + beq .L3261 + mov r0, r4 + b .L3256 +.L3259: + ldrh r3, [r6, #1174] + cmp r3, r2 + bne .L3260 + ldrh r1, [r6, #1178] + cmp r1, r3 + beq .L3260 + ldrh r2, [r6, #1180] + cmp r2, r3 + itttt ne + strhne r0, [r6, #1174] @ movhi + strhne r1, [r6, #1176] @ movhi + strhne r2, [r6, #1178] @ movhi + strhne r3, [r6, #1180] @ movhi + b .L3260 +.L3267: + cmp r3, #5 + bhi .L3268 + movs r3, #18 + b .L3413 +.L3270: movs r3, #1 - strh r3, [r5, #1128] @ movhi -.L3382: + strh r3, [r6, #1128] @ movhi +.L3272: bl GetSwlReplaceBlock movw r3, #65535 - cmp r0, r3 mov r4, r0 - bne .L3399 + cmp r0, r3 + bne .L3264 movs r3, #0 - strh r3, [r9, #976] @ movhi -.L3383: - ldrh r3, [r7, #556] + strh r3, [r5, #1480] @ movhi +.L3262: + ldrh r3, [r6, #556] movw r4, #65535 - ldr r5, .L3540 cmp r3, r4 - bne .L3533 - ldrh r4, [r5, #412] + beq .L3352 + cmp r8, #0 + beq .L3353 + b .L3264 +.L3423: + .align 2 +.L3422: + .word .LANCHOR2 + .word .LANCHOR1 + .word .LANCHOR0 + .word .LANCHOR4 + .word .LC157 + .word .LANCHOR2+556 +.L3352: + ldrh r4, [r6, #416] + movw r3, #65535 cmp r4, r3 - bne .L3384 - ldrh r10, [r5, #1174] - cmp r10, r4 - bne .L3385 - ldrh r3, [r5, #312] - ldr r2, [r5, #1124] + bne .L3273 + ldrh r5, [r6, #1174] + cmp r5, r4 + bne .L3274 + ldrh r3, [r6, #316] + ldr r2, [r6, #1124] cmp r3, #24 ite cc movcc r3, #5120 movcs r3, #1024 cmp r2, r3 - bls .L3387 - ldr r2, .L3540+12 + bls .L3274 + ldr r2, .L3424 movs r3, #0 - str r3, [r7, #1124] - mov r9, r5 - strh r3, [r2, #976] @ movhi + str r3, [r6, #1124] + strh r3, [r2, #1480] @ movhi bl GetSwlReplaceBlock - cmp r0, r10 + cmp r0, r5 mov r4, r0 - bne .L3388 - ldrh r2, [r5, #312] - ldrh r3, [r5, #1122] + bne .L3362 + ldrh r2, [r6, #316] + ldrh r3, [r6, #1122] cmp r2, r3 - bcs .L3389 + bcs .L3277 movs r0, #64 bl List_get_gc_head_node uxth r3, r0 cmp r3, r4 - bne .L3534 -.L3398: - bl FtlGcReFreshBadBlk - cmp r8, #0 - beq .L3535 -.L3399: - ldrh r2, [r7, #412] - movw r3, #65535 - cmp r2, r3 - bne .L3410 -.L3465: - ldrh r3, [r7, #1174] - movw r2, #65535 - cmp r3, r2 - bne .L3410 - cmp r4, r3 - bne .L3410 -.L3466: - ldrh r1, [r7, #556] - movw r3, #65535 - ldr r2, .L3540 + beq .L3279 + ldr r2, [r6, #3276] + ldr r9, .L3424+8 + cbnz r2, .L3280 + ldrh r2, [r9, #2344] + cmp r2, #3 + beq .L3280 + ldr r2, [r6, #1116] + cbnz r2, .L3280 + ldr r2, [r9, #2248] + cbnz r2, .L3280 + ldrb r0, [r9, #152] @ zero_extendqisi2 + cmp r0, #0 + beq .L3281 +.L3280: + ldr r2, [r6, #300] + ldrh r0, [r9, #2344] + ldrh r1, [r2, r3, lsl #1] + ldrh r3, [r9, #2392] + cmp r0, #3 + ldrh r2, [r9, #2324] + mul r2, r3, r2 + ite eq + lsreq r3, r3, #1 + movne r3, #0 + add r3, r3, r2 cmp r1, r3 - beq .L3411 -.L3415: - movw r4, #65535 - b .L3410 -.L3411: - movs r3, #0 - ldrh r1, [r2, #312] - str r3, [r2, #1132] - ldrh r3, [r2, #1120] - ldr r4, .L3540+12 - cmp r1, r3 - bls .L3412 - ldrh r3, [r4, #976] - cbnz r3, .L3413 - ldr r3, .L3540+8 - ldr r2, [r2, #468] - ldr r3, [r3, #2448] + bgt .L3283 + movs r0, #0 + bl List_get_gc_head_node + ldr r3, [r9, #2452] + uxth r5, r0 + ldr r2, [r6, #472] add r3, r3, r3, lsl #1 cmp r2, r3, lsr #2 - bcs .L3478 -.L3413: - ldrh r3, [r7, #536] - add r3, r3, r3, lsl #1 - ubfx r3, r3, #2, #16 + bls .L3284 +.L3415: + movs r3, #128 b .L3414 -.L3478: - movs r3, #18 +.L3284: + movs r3, #160 .L3414: - strh r3, [r7, #1120] @ movhi + strh r3, [r6, #1122] @ movhi + movw r3, #65535 + cmp r5, r3 + beq .L3279 +.L3276: + ldr r3, [r6, #300] + mov r4, r5 + ldrh r1, [r6, #1120] + ldrh r2, [r6, #316] + ldrh r3, [r3, r5, lsl #1] + str r1, [sp, #4] + ldr r1, [r6, #236] + ldr r0, .L3424+4 + ldrh r1, [r1, r5, lsl #1] + str r1, [sp] + mov r1, r5 + bl printk + b .L3279 +.L3283: + movs r3, #128 +.L3416: + strh r3, [r6, #1122] @ movhi +.L3279: + bl FtlGcReFreshBadBlk + cmp r8, #0 + bne .L3264 + movw r3, #65535 + cmp r4, r3 + bne .L3264 +.L3353: + ldrh r3, [r6, #316] + cmp r3, #24 + bhi .L3364 + ldr r2, .L3424+8 + cmp r3, #16 + ldrh r5, [r2, #2390] + bls .L3289 + lsrs r5, r5, #5 +.L3288: + ldrh r2, [r6, #1120] + cmp r2, r3 + bcs .L3292 + ldrh r3, [r6, #416] + movw r2, #65535 + cmp r3, r2 + bne .L3293 + ldrh r2, [r6, #1174] + cmp r2, r3 + bne .L3293 + ldr r3, .L3424 + ldrh r0, [r3, #1480] + cbnz r0, .L3294 + ldr r3, .L3424+8 + ldr r2, [r6, #472] + ldr r3, [r3, #2452] + add r3, r3, r3, lsl #1 + cmp r2, r3, lsr #2 + bcs .L3295 +.L3294: + ldrh r3, [r6, #536] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 +.L3417: + strh r3, [r6, #1120] @ movhi + movs r3, #0 + str r3, [r6, #1132] +.L3256: + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3281: + ldr r2, [r6, #300] + ldrh r3, [r2, r3, lsl #1] + cmp r3, #7 + bhi .L3286 + bl List_get_gc_head_node + uxth r5, r0 + b .L3415 +.L3286: + movs r3, #64 + b .L3416 +.L3277: + movs r3, #80 + b .L3416 +.L3362: + mov r5, r0 + b .L3276 +.L3289: + cmp r3, #12 + bls .L3290 + lsrs r5, r5, #4 + b .L3288 +.L3290: + cmp r3, #8 + bls .L3288 + lsrs r5, r5, #2 + b .L3288 +.L3364: + movs r5, #1 + b .L3288 +.L3295: + movs r3, #18 + b .L3417 +.L3293: + ldrh r3, [r6, #536] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 + strh r3, [r6, #1120] @ movhi +.L3292: + ldr r3, .L3424+8 + ldr r3, [r3, #2248] + cbz r3, .L3366 + cmp r7, #2 + bhi .L3366 + adds r5, r5, #1 + uxth r5, r5 +.L3366: + movw r4, #65535 + b .L3298 +.L3300: + movs r3, #0 + ldrh r2, [r6, #316] + str r3, [r6, #1132] + ldrh r3, [r6, #1120] + ldr r4, .L3424 + cmp r2, r3 + bls .L3301 + ldrh r3, [r4, #1480] + cbnz r3, .L3302 + ldr r3, .L3424+8 + ldr r2, [r6, #472] + ldr r3, [r3, #2452] + add r3, r3, r3, lsl #1 + cmp r2, r3, lsr #2 + bcs .L3303 +.L3302: + ldrh r3, [r6, #536] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 +.L3418: + strh r3, [r6, #1120] @ movhi bl FtlReadRefresh movs r0, #0 bl List_get_gc_head_node - ldr r3, [r7, #296] + ldr r3, [r6, #300] uxth r0, r0 ldrh r3, [r3, r0, lsl #1] cmp r3, #4 - bls .L3412 - ldrh r0, [r4, #976] - b .L3527 -.L3412: - ldrh r0, [r4, #976] + bls .L3301 +.L3420: + ldrh r0, [r4, #1480] + b .L3256 +.L3303: + movs r3, #18 + b .L3418 +.L3301: + ldrh r0, [r4, #1480] cmp r0, #0 - bne .L3415 - ldrh r4, [r7, #536] - add r3, r4, r4, lsl #1 + bne .L3305 + ldrh r5, [r6, #536] + add r3, r5, r5, lsl #1 asrs r3, r3, #2 - strh r3, [r7, #1120] @ movhi + strh r3, [r6, #1120] @ movhi bl List_get_gc_head_node - ldr r3, [r7, #296] + ldr r3, [r6, #300] uxth r0, r0 + ldr r1, .L3424+8 ldrh r2, [r3, r0, lsl #1] - ldr r3, .L3540+8 - ldrh r1, [r3, #2390] - ldrh r3, [r3, #2320] - muls r3, r1, r3 + ldrh r0, [r1, #2392] + ldrh r3, [r1, #2324] + muls r3, r0, r3 add r3, r3, r3, lsr #31 cmp r2, r3, asr #1 - ble .L3416 - ldr r3, .L3540 - subs r4, r4, #1 - ldrh r3, [r3, #312] - cmp r3, r4 - blt .L3416 + ble .L3306 + ldrh r3, [r6, #316] + subs r5, r5, #1 + cmp r3, r5 + blt .L3306 bl FtlReadRefresh - b .L3532 -.L3416: - cmp r2, #0 - bne .L3415 - movw r0, #65535 - bl decrement_vpc_count - ldrh r0, [r7, #312] - adds r0, r0, #1 - b .L3527 -.L3541: - .align 2 -.L3540: - .word .LANCHOR2 - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR5 - .word .LC157 -.L3410: - ldr r3, .L3542 - ldr r3, [r3, #2244] - cmp r3, #0 - ite eq - moveq r5, #1 - movne r5, #2 - b .L3409 -.L3535: - movw r3, #65535 - cmp r4, r3 - bne .L3399 -.L3464: - ldrh r4, [r7, #312] - cmp r4, #24 - bhi .L3474 - ldr r3, .L3542 - cmp r4, #16 - ldrh r5, [r3, #2388] - bls .L3401 - lsrs r5, r5, #5 -.L3400: - ldrh r3, [r7, #1120] - ldr r2, .L3542+4 - cmp r3, r4 - bcc .L3536 -.L3404: - ldr r3, .L3542 - ldr r3, [r3, #2244] - cmp r3, #0 - bne .L3537 -.L3477: - movw r4, #65535 -.L3409: - ldrh r2, [r7, #556] - movw r1, #65535 - ldr r3, .L3542+4 - cmp r2, r1 - bne .L3418 - cmp r4, r2 - beq .L3419 - strh r4, [r3, #556] @ movhi b .L3420 -.L3419: - ldrh r2, [r3, #1174] - cmp r2, r4 - beq .L3420 - ldr r1, [r3, #296] - ldrh r2, [r1, r2, lsl #1] - cbnz r2, .L3421 - strh r4, [r3, #1174] @ movhi -.L3421: - ldrh r3, [r7, #1174] - strh r3, [r7, #556] @ movhi - movw r3, #65535 - strh r3, [r7, #1174] @ movhi -.L3420: - ldrh r0, [r7, #556] - movw r6, #65535 - movs r3, #0 - strb r3, [r7, #564] - cmp r0, r6 - beq .L3418 - bl IsBlkInGcList - cbz r0, .L3423 - ldr r3, .L3542+4 - strh r6, [r3, #556] @ movhi -.L3423: - ldr r3, .L3542 - ldrb r3, [r3, #144] @ zero_extendqisi2 - cbz r3, .L3424 - ldrh r0, [r7, #556] - bl ftl_get_blk_mode - strb r0, [r7, #564] -.L3424: - ldrh r2, [r7, #556] - movw r3, #65535 - ldr r6, .L3542+4 - cmp r2, r3 - beq .L3418 - add r0, r6, #556 - bl make_superblock - ldr r2, .L3542+8 - movs r3, #0 - ldrh r1, [r6, #556] - strh r3, [r6, #558] @ movhi - strb r3, [r6, #562] - strh r3, [r2, #978] @ movhi - ldr r3, [r6, #296] - ldrh r3, [r3, r1, lsl #1] - strh r3, [r2, #980] @ movhi -.L3418: - ldrh r3, [r7, #556] - ldrh r1, [r7, #316] - ldr r2, .L3542+4 - cmp r1, r3 - beq .L3425 - ldrh r1, [r2, #364] - cmp r1, r3 - beq .L3425 - ldrh r2, [r2, #412] - cmp r2, r3 - bne .L3426 -.L3425: - movw r3, #65535 - strh r3, [r7, #556] @ movhi -.L3426: - ldr r7, .L3542 -.L3459: - ldr r6, .L3542+4 - movw r3, #65535 - ldrh r2, [r6, #556] - mov fp, r6 - cmp r2, r3 - bne .L3427 - mov r10, r6 - movs r3, #0 - str r3, [r6, #1132] -.L3428: - ldrh r9, [fp, #1128] - mov r0, r9 - bl List_get_gc_head_node - movw r2, #65535 - uxth r3, r0 - strh r3, [fp, #556] @ movhi - cmp r3, r2 - bne .L3429 - ldr r3, .L3542+4 - movs r2, #0 - movs r0, #8 - strh r2, [r3, #1128] @ movhi - b .L3527 -.L3429: - mov r0, r3 - str r3, [sp, #12] - bl IsBlkInGcList - add r9, r9, #1 - ldr r3, [sp, #12] - cbz r0, .L3430 - strh r9, [r10, #1128] @ movhi - b .L3428 -.L3430: - ldrh lr, [r7, #2320] - uxth r9, r9 - ldrh r2, [r7, #2388] - ldr r1, [r10, #296] - strh r9, [r10, #1128] @ movhi - mul r2, lr, r2 - ldrh r0, [r1, r3, lsl #1] - add lr, r2, r2, lsr #31 - cmp r0, lr, asr #1 - bgt .L3432 - cmp r9, #48 - bls .L3433 - cmp r0, #8 - bls .L3433 - ldrh r0, [r10, #1164] - cmp r0, #35 - bhi .L3433 -.L3432: - movs r0, #0 - strh r0, [fp, #1128] @ movhi -.L3433: - ldrh r1, [r1, r3, lsl #1] - cmp r1, r2 - blt .L3434 - movw r2, #65535 - cmp r4, r2 - bne .L3434 - ldrh r0, [fp, #1128] - ldr r2, .L3542+4 - cmp r0, #3 - bhi .L3434 - movs r3, #0 - strh r4, [r2, #556] @ movhi - strh r3, [r2, #1128] @ movhi -.L3532: - ldr r3, .L3542+8 - ldrh r0, [r3, #976] - b .L3527 -.L3434: - cbnz r1, .L3435 +.L3306: + cmp r2, #0 + bne .L3305 movw r0, #65535 bl decrement_vpc_count - ldrh r3, [fp, #1128] - adds r3, r3, #1 - strh r3, [fp, #1128] @ movhi - b .L3428 -.L3435: - movs r2, #0 - strb r2, [r6, #564] - ldr r2, .L3542 - ldrb r2, [r2, #144] @ zero_extendqisi2 - cbz r2, .L3436 - mov r0, r3 - bl ftl_get_blk_mode - ldr r3, .L3542+4 - strb r0, [r3, #564] -.L3436: - ldr r0, .L3542+12 - bl make_superblock - ldr r2, .L3542+8 - ldrh r0, [r6, #556] + ldrh r0, [r6, #316] + adds r0, r0, #1 + b .L3256 +.L3309: + ldrh r3, [r6, #1174] + cmp r3, r4 + beq .L3310 + ldr r2, [r6, #300] + ldrh r3, [r2, r3, lsl #1] + cbnz r3, .L3311 + strh r4, [r6, #1174] @ movhi +.L3311: + ldrh r3, [r6, #1174] + strh r3, [r6, #556] @ movhi + movw r3, #65535 + strh r3, [r6, #1174] @ movhi + b .L3310 +.L3319: + str r0, [sp, #16] + mov r0, r2 + str r2, [sp, #12] + add r10, r10, #1 + bl IsBlkInGcList + ldr r2, [sp, #12] + ldr r3, [sp, #16] + cbz r0, .L3320 + strh r10, [r6, #1128] @ movhi + b .L3318 +.L3320: + ldrh lr, [r7, #2324] + uxth r10, r10 + ldrh r1, [r7, #2390] + uxth r3, r3 + ldr r0, [r6, #300] + strh r10, [r6, #1128] @ movhi + mul r1, lr, r1 + ldrh ip, [r0, r3, lsl #1] + add lr, r1, r1, lsr #31 + cmp ip, lr, asr #1 + bgt .L3322 + cmp r10, #48 + bls .L3323 + cmp ip, #8 + bls .L3323 + ldrh ip, [r6, #1164] + cmp ip, #35 + bhi .L3323 +.L3322: + mov ip, #0 + strh ip, [r6, #1128] @ movhi +.L3323: + ldrh r3, [r0, r3, lsl #1] + cmp r1, r3 + bgt .L3324 + cmp r4, fp + bne .L3324 + ldrh r1, [r6, #1128] + cmp r1, #3 + bhi .L3324 movs r3, #0 - ldr r1, [r6, #296] - strh r3, [r2, #978] @ movhi + strh r4, [r6, #556] @ movhi + strh r3, [r6, #1128] @ movhi +.L3421: + ldr r3, .L3424 + ldrh r0, [r3, #1480] + b .L3256 +.L3425: + .align 2 +.L3424: + .word .LANCHOR4 + .word .LC158 + .word .LANCHOR0 +.L3324: + cbnz r3, .L3325 + movw r0, #65535 + bl decrement_vpc_count + ldrh r3, [r6, #1128] + adds r3, r3, #1 + strh r3, [r6, #1128] @ movhi + b .L3318 +.L3325: + movs r3, #0 + strb r3, [r9, #564] + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbz r3, .L3326 + mov r0, r2 + bl ftl_get_blk_mode + strb r0, [r9, #564] +.L3326: + ldr r0, .L3426 + bl make_superblock + ldr r2, .L3426+4 + movs r3, #0 + ldrh r0, [r9, #556] + ldr r1, [r9, #300] + strh r3, [r2, #1482] @ movhi ldrh r1, [r1, r0, lsl #1] - strh r3, [r6, #558] @ movhi - strb r3, [r6, #562] - strh r1, [r2, #980] @ movhi -.L3427: + strh r3, [r9, #558] @ movhi + strb r3, [r9, #562] + strh r1, [r2, #1484] @ movhi +.L3317: cmp r8, #1 - bne .L3437 + bne .L3327 bl FtlReadRefresh -.L3437: +.L3327: movs r3, #1 - str r3, [r6, #3280] - ldrh r3, [r7, #2388] - str r3, [sp, #12] - ldrb r3, [r7, #144] @ zero_extendqisi2 - cbz r3, .L3438 - ldr r3, .L3542+4 - ldrb r3, [r3, #564] @ zero_extendqisi2 + str r3, [r9, #3280] + ldrh r3, [r7, #2390] + str r3, [sp, #16] + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbz r3, .L3328 + ldrb r3, [r9, #564] @ zero_extendqisi2 cmp r3, #1 itt eq - ldrheq r3, [r7, #2390] - streq r3, [sp, #12] -.L3438: - ldrh r3, [r6, #558] - ldr r1, [sp, #12] + ldrheq r3, [r7, #2392] + streq r3, [sp, #16] +.L3328: + ldrh r3, [r9, #558] + ldr r1, [sp, #16] adds r2, r3, r5 cmp r2, r1 - ittt gt + itt gt movgt r2, r1 - subgt r3, r2, r3 - uxthgt r5, r3 - movs r3, #0 -.L3531: - str r3, [sp, #16] - ldrh r3, [sp, #16] - ldr r6, .L3542+4 - cmp r3, r5 - bcs .L3447 - ldr r3, [r6, #1152] - addw r1, r6, #570 - ldr r2, [sp, #16] - movw lr, #65535 - ldrh r10, [r7, #2320] + subgt r5, r2, r3 + mov r3, #0 + it gt + uxthgt r5, r5 +.L3419: str r3, [sp, #20] - ldrh r3, [r6, #558] - add ip, r3, r2 - movs r3, #0 - mov r9, r3 -.L3448: - uxth r2, r3 - cmp r2, r10 - bcs .L3538 - ldrh r2, [r1, #2]! - cmp r2, lr - beq .L3441 - ldr r0, [sp, #20] - mov fp, #36 - orr r2, ip, r2, lsl #10 - mla fp, fp, r9, r0 - add r9, r9, #1 - uxth r9, r9 - str r2, [fp, #4] -.L3441: - adds r3, r3, #1 - b .L3448 -.L3543: - .align 2 -.L3542: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR5 - .word .LANCHOR2+556 -.L3538: + ldrh r3, [sp, #20] + ldr r6, .L3426+8 + cmp r5, r3 + bls .L3337 + ldr r3, [sp, #20] + movw fp, #65535 + ldrh r10, [r6, #558] + mov ip, #36 + ldrh r9, [r7, #2324] ldr r0, [r6, #1152] - mov r1, r9 + add r10, r10, r3 + addw r3, r6, #570 + str r3, [sp, #24] + movs r3, #0 + str r3, [sp, #12] + b .L3338 +.L3332: + ldr r1, [sp, #24] + ldrh r2, [r1, #2]! + cmp r2, fp + str r1, [sp, #24] + beq .L3331 + ldr r1, [sp, #12] + orr r2, r10, r2, lsl #10 + mla lr, ip, r1, r0 + str r2, [lr, #4] + mov r2, r1 + adds r2, r2, #1 + uxth r2, r2 + str r2, [sp, #12] +.L3331: + adds r3, r3, #1 +.L3338: + uxth r2, r3 + cmp r9, r2 + bhi .L3332 ldrb r2, [r6, #564] @ zero_extendqisi2 mov fp, #0 + ldr r6, .L3426+8 + ldr r1, [sp, #12] bl FlashReadPages - ldr r6, .L3544 -.L3443: +.L3333: + ldr r2, [sp, #12] uxth r3, fp - cmp r3, r9 - bcs .L3539 - mov ip, #36 + cmp r2, r3 + bhi .L3336 + ldr r3, [sp, #20] + adds r3, r3, #1 + b .L3419 +.L3336: + movs r3, #36 ldr r2, [r6, #1152] - mul r10, ip, fp - add r3, r2, r10 - ldr r2, [r2, r10] - ldr r3, [r3, #12] + mul r9, r3, fp + add r1, r2, r9 + ldr r2, [r2, r9] adds r2, r2, #1 - beq .L3481 - ldrh r1, [r3] + beq .L3334 + ldr r10, [r1, #12] movw r2, #61589 + ldrh r1, [r10] cmp r1, r2 - bne .L3481 - ldr r0, [r3, #8] - add r1, sp, #32 + bne .L3334 movs r2, #0 - str ip, [sp, #24] - str r3, [sp, #20] + add r1, sp, #32 + ldr r0, [r10, #8] + str r3, [sp, #24] bl log2phys ldr r1, [r6, #1152] - add r1, r1, r10 - ldr r0, [r1, #4] ldr r2, [sp, #32] - ldr r3, [sp, #20] + ldr r3, [sp, #24] + add r1, r1, r9 + ldr r0, [r1, #4] bic r2, r2, #-2147483648 - ldr ip, [sp, #24] cmp r2, r0 - bne .L3481 - str r3, [sp, #28] - ldr r3, .L3544+4 - ldr r0, [r6, #1136] + bne .L3334 + ldr r2, .L3426+4 + ldr r0, .L3426+4 ldr r1, [r1, #16] - ldrh r2, [r3, #978] + ldrh r2, [r2, #1482] + str r3, [sp, #28] adds r2, r2, #1 - strh r2, [r3, #978] @ movhi + strh r2, [r0, #1482] @ movhi + ldr r0, [r6, #1136] ldr r2, [r6, #3308] - mla r2, ip, r0, r2 + mla r2, r3, r0, r2 str r1, [r2, #16] - str r2, [sp, #20] + str r2, [sp, #24] bl Ftl_get_new_temp_ppa - ldr r1, [r6, #1136] - ldr r2, [sp, #20] - ldr ip, [sp, #24] + ldr r2, [sp, #24] + ldr r1, [r6, #3308] ldr r3, [sp, #28] str r0, [r2, #4] - ldr r2, [r6, #3308] - mla ip, ip, r1, r2 + ldr r2, [r6, #1136] + mla r3, r3, r2, r1 ldr r2, [r6, #1152] - add r2, r2, r10 + add r2, r2, r9 ldr r1, [r2, #8] - str r1, [ip, #8] + str r1, [r3, #8] movs r1, #1 ldr r2, [r2, #12] - str r2, [ip, #12] - ldr r2, [sp, #32] str r2, [r3, #12] - ldrh r2, [r6, #412] - strh r2, [r3, #2] @ movhi - ldr r2, [r6, #512] + ldr r3, [sp, #32] + str r3, [r10, #12] + ldrh r3, [r6, #416] + strh r3, [r10, #2] @ movhi + ldr r3, [r6, #512] ldr r0, [r6, #1152] - str r2, [r3, #4] - add r0, r0, r10 + str r3, [r10, #4] ldr r3, [r6, #1136] + add r0, r0, r9 adds r3, r3, #1 str r3, [r6, #1136] bl FtlGcBufAlloc - ldrb r3, [r7, #144] @ zero_extendqisi2 - cbnz r3, .L3445 - ldrb r3, [r6, #419] @ zero_extendqisi2 - ldr r2, [r6, #1136] + ldrb r3, [r7, #152] @ zero_extendqisi2 + cbnz r3, .L3335 + ldrb r2, [r6, #423] @ zero_extendqisi2 + ldr r3, [r6, #1136] cmp r2, r3 - beq .L3445 - ldrh r3, [r6, #416] - cbnz r3, .L3481 -.L3445: + beq .L3335 + ldrh r3, [r6, #420] + cbnz r3, .L3334 +.L3335: bl Ftl_gc_temp_data_write_back - cbz r0, .L3481 - ldr r3, .L3544 + cbz r0, .L3334 + ldr r3, .L3426+8 movs r2, #0 movw r1, #65535 str r2, [r3, #3280] strh r1, [r3, #556] @ movhi strh r2, [r3, #558] @ movhi - b .L3532 -.L3481: + b .L3421 +.L3334: add fp, fp, #1 - b .L3443 -.L3539: - ldr r3, [sp, #16] - adds r3, r3, #1 - b .L3531 -.L3447: + b .L3333 +.L3337: ldrh r3, [r6, #558] add r5, r5, r3 - ldr r3, [sp, #12] + ldr r3, [sp, #16] uxth r5, r5 + cmp r3, r5 strh r5, [r6, #558] @ movhi - cmp r5, r3 - bcc .L3449 + bhi .L3339 ldr r3, [r6, #1136] - ldr r5, .L3544+4 - cbz r3, .L3450 + ldr r5, .L3426+4 + cbz r3, .L3340 bl Ftl_gc_temp_data_write_back - cbz r0, .L3450 + cbz r0, .L3340 movs r3, #0 - ldrh r0, [r5, #976] + ldrh r0, [r5, #1480] str r3, [r6, #3280] - b .L3527 -.L3450: - ldrh r5, [r5, #978] - cbnz r5, .L3451 + b .L3256 +.L3340: + ldrh r5, [r5, #1482] + cbnz r5, .L3341 ldrh r2, [r6, #556] - ldr r3, [r6, #296] + ldr r3, [r6, #300] ldrh r3, [r3, r2, lsl #1] - cbz r3, .L3451 -.L3452: - ldr r3, [r7, #2448] + cbz r3, .L3341 +.L3342: + ldr r3, [r7, #2452] cmp r5, r3 - bcs .L3457 - mov r0, r5 - add r1, sp, #36 + bcs .L3347 movs r2, #0 + add r1, sp, #36 + mov r0, r5 bl log2phys ldr r0, [sp, #36] adds r3, r0, #1 - beq .L3453 + beq .L3343 ubfx r0, r0, #10, #16 bl P2V_block_in_plane ldrh r3, [r6, #556] cmp r3, r0 - bne .L3453 -.L3457: - ldr r3, .L3544+8 - ldr r3, [r3, #2448] + bne .L3343 +.L3347: + ldr r3, [r7, #2452] cmp r5, r3 - bcc .L3451 + bcc .L3341 ldrh r2, [r6, #556] movs r1, #0 - ldr r3, [r6, #296] + ldr r3, [r6, #300] strh r1, [r3, r2, lsl #1] @ movhi ldrh r0, [r6, #556] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush - b .L3451 -.L3453: - adds r5, r5, #1 - b .L3452 -.L3451: +.L3341: movw r3, #65535 strh r3, [r6, #556] @ movhi -.L3449: - ldrh r3, [r6, #312] +.L3339: + ldrh r3, [r6, #316] cmp r3, #2 - bhi .L3458 - ldrh r5, [r7, #2388] - b .L3459 -.L3458: - ldr r2, .L3544 - movs r1, #0 - str r1, [r2, #3280] - ldr r2, .L3544+4 - ldrh r0, [r2, #976] - cmp r0, #0 - bne .L3527 - adds r0, r3, #1 - b .L3527 -.L3467: - movs r0, #0 - b .L3527 -.L3470: - mov r0, r2 - b .L3527 -.L3534: - ldr r2, [r5, #3276] - ldr r5, .L3544+8 - cbnz r2, .L3391 - ldrh r2, [r5, #2340] - cmp r2, #3 - beq .L3391 - ldr r2, [r9, #604] - cbnz r2, .L3391 - ldr r2, [r5, #2244] - cbnz r2, .L3391 - ldrb r0, [r5, #144] @ zero_extendqisi2 - cbz r0, .L3392 -.L3391: - ldr r2, [r7, #296] - ldrh r0, [r5, #2340] - ldrh r1, [r2, r3, lsl #1] - cmp r0, #3 - ldrh r3, [r5, #2390] - ldrh r2, [r5, #2320] - mul r2, r2, r3 - ite eq - lsreq r3, r3, #1 - movne r3, #0 - add r3, r3, r2 - cmp r1, r3 - bgt .L3394 - movs r0, #0 - bl List_get_gc_head_node - ldr r3, [r5, #2448] - ldr r2, .L3544 - ldr r1, [r7, #468] - add r3, r3, r3, lsl #1 - cmp r1, r3, lsr #2 - ite hi - movhi r3, #128 - movls r3, #160 - strh r3, [r2, #1122] @ movhi - uxth r4, r0 - b .L3396 -.L3394: - movs r3, #128 - b .L3530 -.L3392: - ldr r2, [r9, #296] - ldrh r3, [r2, r3, lsl #1] - cmp r3, #7 - bhi .L3397 - bl List_get_gc_head_node - movs r3, #128 - strh r3, [r7, #1122] @ movhi - uxth r4, r0 - b .L3396 -.L3397: - movs r3, #64 -.L3530: - strh r3, [r7, #1122] @ movhi - b .L3398 -.L3389: - movs r3, #80 - strh r3, [r5, #1122] @ movhi - b .L3398 -.L3396: - movw r3, #65535 - cmp r4, r3 - beq .L3398 -.L3388: - ldr r1, [r7, #232] - ldr r3, [r7, #296] - ldrh r2, [r7, #312] - ldrh r1, [r1, r4, lsl #1] - ldrh r3, [r3, r4, lsl #1] - ldr r0, .L3544+12 - str r1, [sp] - ldrh r1, [r7, #1120] - str r1, [sp, #4] - mov r1, r4 - bl printk - b .L3398 -.L3401: - cmp r4, #12 - bls .L3402 - lsrs r5, r5, #4 - b .L3400 -.L3402: - cmp r4, #8 - bls .L3400 - lsrs r5, r5, #2 - b .L3400 -.L3474: - movs r5, #1 - b .L3400 -.L3536: - ldrh r3, [r2, #412] - movw r1, #65535 - cmp r3, r1 - bne .L3405 - ldrh r1, [r2, #1174] - cmp r1, r3 - bne .L3405 - ldr r3, .L3544+4 - ldrh r0, [r3, #976] - cbnz r0, .L3406 - ldr r3, .L3544+8 - ldr r2, [r2, #468] - ldr r3, [r3, #2448] - add r3, r3, r3, lsl #1 - cmp r2, r3, lsr #2 - bcs .L3475 -.L3406: - ldrh r3, [r7, #536] - add r3, r3, r3, lsl #1 - ubfx r3, r3, #2, #16 - b .L3407 -.L3545: - .align 2 -.L3544: - .word .LANCHOR2 - .word .LANCHOR5 - .word .LANCHOR0 - .word .LC158 -.L3475: - movs r3, #18 -.L3407: - strh r3, [r7, #1120] @ movhi - movs r3, #0 - str r3, [r7, #1132] - b .L3527 -.L3405: - ldrh r3, [r7, #536] - add r3, r3, r3, lsl #1 - asrs r3, r3, #2 - strh r3, [r7, #1120] @ movhi - b .L3404 -.L3537: - cmp r6, #2 - bhi .L3477 + bhi .L3348 + ldrh r5, [r7, #2390] + b .L3349 +.L3343: adds r5, r5, #1 - uxth r5, r5 - b .L3477 -.L3533: + b .L3342 +.L3348: + movs r2, #0 + str r2, [r6, #3280] + ldr r2, .L3426+4 + ldrh r0, [r2, #1480] + cmp r0, #0 + bne .L3256 + adds r0, r3, #1 + b .L3256 +.L3355: + movs r0, #0 + b .L3256 +.L3274: cmp r8, #0 - beq .L3464 - b .L3399 -.L3385: + bne .L3354 + b .L3353 +.L3273: cmp r8, #0 - beq .L3464 - b .L3465 -.L3384: - cmp r8, #0 - beq .L3464 - b .L3415 -.L3387: - cmp r8, #0 - beq .L3464 - b .L3466 -.L3527: - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + bne .L3305 + b .L3353 +.L3427: + .align 2 +.L3426: + .word .LANCHOR2+556 + .word .LANCHOR4 + .word .LANCHOR2 .fnend .size ftl_do_gc, .-ftl_do_gc .align 1 .global FtlCacheWriteBack + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlCacheWriteBack, %function FtlCacheWriteBack: .fnstart @@ -21558,241 +21827,245 @@ 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 r3, .L3589 - ldr r7, .L3589+4 - ldr r5, [r3, #984] - ldr r3, [r7, #224] - cmp r3, #0 - bne .L3548 - ldr r4, .L3589+8 - ldr r1, [r4, #2440] - cmp r1, #0 - beq .L3548 - ldrb r3, [r4, #144] @ zero_extendqisi2 - cbz r3, .L3571 - ldrb r8, [r5, #8] @ zero_extendqisi2 + ldr r5, .L3470 + ldr r9, [r5, #228] + cmp r9, #0 + bne .L3430 + ldr r4, .L3470+4 + ldr r1, [r4, #2444] + cbz r1, .L3430 + ldr r3, .L3470+8 + ldr r6, [r3, #1488] + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L3455 + ldrb r8, [r6, #8] @ zero_extendqisi2 add r0, r8, #-1 rsbs r8, r0, #0 adc r8, r8, r0 - b .L3550 -.L3571: - mov r8, r3 -.L3550: - ldr r0, [r4, #2444] +.L3432: + movs r7, #0 + mov r10, #36 + ldrb r3, [r6, #9] @ zero_extendqisi2 mov r2, r8 - ldrb r3, [r5, #9] @ zero_extendqisi2 - mov r9, #0 + ldr r0, [r4, #2448] bl FlashProgPages - ldr r10, .L3589+8 - mov fp, #36 -.L3551: - ldr r3, [r4, #2440] - cmp r9, r3 - bcs .L3569 - mul r6, fp, r9 - ldr r3, [r10, #2444] - adds r2, r3, r6 - ldr r3, [r3, r6] - adds r3, r3, #1 - beq .L3572 - ldr r3, [r2, #4] - cmp r8, #0 - beq .L3585 - orr r3, r3, #-2147483648 -.L3585: - ldr r0, [r2, #16] - add r1, sp, #4 - movs r2, #1 - str r3, [sp, #4] - bl log2phys +.L3433: ldr r3, [r4, #2444] - add r6, r6, r3 - ldr r3, [r6, #12] - ldr r0, [r3, #12] - adds r2, r0, #1 - beq .L3555 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r3, [r7, #296] - ldrh r2, [r3, r0, lsl #1] - mov r6, r0 - cbnz r2, .L3556 - ldr r0, .L3589+12 - mov r1, r6 - bl printk -.L3556: - mov r0, r6 - bl decrement_vpc_count -.L3555: - add r9, r9, #1 - b .L3551 -.L3587: - movw r5, #16386 -.L3568: - ldrh r3, [r7, #1182] - cbz r3, .L3569 - movs r0, #1 - mov r1, r0 - bl ftl_do_gc - subs r5, r5, #1 - bne .L3568 -.L3569: + cmp r7, r3 + bcc .L3440 +.L3452: movs r3, #0 - str r3, [r4, #2440] - b .L3548 -.L3572: - ldr r10, .L3589+8 - mov r9, #0 -.L3552: - ldr r3, [r4, #2440] - cmp r9, r3 - bcs .L3587 - movs r6, #36 - ldr r3, [r10, #2444] - mov fp, #0 - mov r2, #-1 - mul r6, r6, r9 - str r2, [r3, r6] -.L3558: - ldr r3, [r4, #2444] - adds r2, r3, r6 - ldr r3, [r3, r6] - adds r3, r3, #1 - bne .L3588 - ldr r0, [r2, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r5] - cmp r3, r0 - bne .L3559 - ldr r1, [r7, #296] - ldrh r0, [r5, #4] - ldrh r2, [r1, r3, lsl #1] - subs r2, r2, r0 - strh r2, [r1, r3, lsl #1] @ movhi - ldrh r3, [r10, #2388] - strb fp, [r5, #6] - strh fp, [r5, #4] @ movhi - strh r3, [r5, #2] @ movhi -.L3559: - ldrh r3, [r5, #4] - cbnz r3, .L3560 - mov r0, r5 - bl allocate_new_data_superblock -.L3560: - ldr r3, [r7, #704] - adds r3, r3, #1 - str r3, [r7, #704] - ldr r3, [r4, #2444] - add r3, r3, r6 - 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, r8 - movs r1, #1 - add r3, r3, r6 - str r0, [sp, #4] - str r0, [r3, #4] - mov r0, r3 - ldrb r3, [r5, #9] @ zero_extendqisi2 - bl FlashProgPages - ldr r3, [r4, #2444] - ldr r3, [r3, r6] - adds r3, r3, #1 - ittt eq - moveq r3, #1 - ldreq r2, .L3589+4 - streq r3, [r2, #224] - ldr r3, [r7, #224] - cmp r3, #0 - beq .L3558 - b .L3548 -.L3588: - ldr r3, [r2, #4] - cmp r8, #0 - beq .L3586 - orr r3, r3, #-2147483648 -.L3586: - ldr r0, [r2, #16] - add r1, sp, #4 - movs r2, #1 - str r3, [sp, #4] - bl log2phys - ldr r3, [r4, #2444] - add r6, r6, r3 - ldr r3, [r6, #12] - ldr r0, [r3, #12] - adds r3, r0, #1 - beq .L3565 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r3, [r7, #296] - ldrh r2, [r3, r0, lsl #1] - mov r6, r0 - cbnz r2, .L3566 - ldr r0, .L3589+12 - mov r1, r6 - bl printk -.L3566: - mov r0, r6 - bl decrement_vpc_count -.L3565: - add r9, r9, #1 - b .L3552 -.L3548: + str r3, [r4, #2444] +.L3430: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3590: +.L3455: + mov r8, r9 + b .L3432 +.L3440: + mul fp, r10, r7 + ldr r2, [r4, #2448] + add r0, r2, fp + ldr r2, [r2, fp] + adds r2, r2, #1 + bne .L3434 + mov r10, #0 +.L3435: + ldr r3, [r4, #2444] + cmp r9, r3 + bcc .L3450 + movw r6, #16386 +.L3453: + ldrh r3, [r5, #1182] + cmp r3, #0 + beq .L3452 + movs r1, #1 + mov r0, r1 + bl ftl_do_gc + subs r6, r6, #1 + bne .L3453 + b .L3452 +.L3434: + ldr r2, [r0, #4] + cmp r8, #0 + bne .L3436 +.L3468: + str r2, [sp, #4] + add r1, sp, #4 + movs r2, #1 + ldr r0, [r0, #16] + bl log2phys + ldr r2, [r4, #2448] + add r3, r2, fp + ldr r3, [r3, #12] + ldr r0, [r3, #12] + adds r2, r0, #1 + beq .L3438 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r5, #300] + mov fp, r0 + ldrh r2, [r2, r0, lsl #1] + cbnz r2, .L3439 + mov r1, r0 + ldr r0, .L3470+12 + bl printk +.L3439: + mov r0, fp + bl decrement_vpc_count +.L3438: + adds r7, r7, #1 + b .L3433 +.L3436: + orr r2, r2, #-2147483648 + b .L3468 +.L3450: + movs r7, #36 + ldr r3, [r4, #2448] + mul r7, r7, r9 + mov fp, #1 + mov r2, #-1 + str r2, [r3, r7] +.L3441: + ldr r2, [r4, #2448] + adds r3, r2, r7 + ldr r2, [r2, r7] + ldr r0, [r3, #4] + adds r2, r2, #1 + beq .L3445 + cmp r8, #0 + bne .L3446 +.L3469: + str r0, [sp, #4] + movs r2, #1 + ldr r0, [r3, #16] + add r1, sp, #4 + bl log2phys + ldr r3, [r4, #2448] + add r7, r7, r3 + ldr r3, [r7, #12] + ldr r0, [r3, #12] + adds r3, r0, #1 + beq .L3448 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r3, [r5, #300] + mov r7, r0 + ldrh r2, [r3, r0, lsl #1] + cbnz r2, .L3449 + mov r1, r0 + ldr r0, .L3470+12 + bl printk +.L3449: + mov r0, r7 + bl decrement_vpc_count +.L3448: + add r9, r9, #1 + b .L3435 +.L3445: + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r6] + cmp r3, r0 + bne .L3442 + ldr r1, [r5, #300] + ldrh r0, [r6, #4] + ldrh r2, [r1, r3, lsl #1] + subs r2, r2, r0 + strh r2, [r1, r3, lsl #1] @ movhi + ldrh r3, [r4, #2390] + strb r10, [r6, #6] + strh r10, [r6, #4] @ movhi + strh r3, [r6, #2] @ movhi +.L3442: + ldrh r3, [r6, #4] + cbnz r3, .L3443 + mov r0, r6 + bl allocate_new_data_superblock +.L3443: + ldr r3, [r5, #700] + adds r3, r3, #1 + str r3, [r5, #700] + ldr r3, [r4, #2448] + add r3, r3, r7 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlGcMarkBadPhyBlk + mov r0, r6 + bl get_new_active_ppa + ldr r3, [r4, #2448] + mov r2, r0 + str r0, [sp, #4] + movs r1, #1 + adds r0, r3, r7 + str r2, [r0, #4] + mov r2, r8 + ldrb r3, [r6, #9] @ zero_extendqisi2 + bl FlashProgPages + ldr r3, [r4, #2448] + ldr r3, [r3, r7] + adds r3, r3, #1 + it eq + streq fp, [r5, #228] + ldr r3, [r5, #228] + cmp r3, #0 + beq .L3441 + b .L3430 +.L3446: + orr r0, r0, #-2147483648 + b .L3469 +.L3471: .align 2 -.L3589: - .word .LANCHOR5 +.L3470: .word .LANCHOR2 .word .LANCHOR0 + .word .LANCHOR4 .word .LC159 .fnend .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 1 .global FtlSysFlush + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlSysFlush, %function FtlSysFlush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3593 + ldr r3, .L3474 push {r4, lr} .save {r4, lr} - ldr r3, [r3, #224] - cbnz r3, .L3592 - ldr r3, .L3593+4 - ldr r4, [r3, #504] + ldr r3, [r3, #228] + cbnz r3, .L3473 + ldr r3, .L3474+4 + ldr r4, [r3, #500] cmp r4, #1 - bne .L3592 + bne .L3473 bl FtlCacheWriteBack bl l2p_flush mov r0, r4 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3592: +.L3473: movs r0, #0 pop {r4, pc} -.L3594: +.L3475: .align 2 -.L3593: +.L3474: .word .LANCHOR2 .word .LANCHOR1 .fnend .size FtlSysFlush, .-FtlSysFlush .align 1 .global FtlDeInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlDeInit, %function FtlDeInit: .fnstart @@ -21800,24 +22073,26 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, lr} .save {r3, lr} - ldr r3, .L3597 - ldr r3, [r3, #504] + ldr r3, .L3478 + ldr r3, [r3, #500] cmp r3, #1 - bne .L3596 + bne .L3477 bl FtlSysFlush -.L3596: +.L3477: movs r0, #0 pop {r3, pc} -.L3598: +.L3479: .align 2 -.L3597: +.L3478: .word .LANCHOR1 .fnend .size FtlDeInit, .-FtlDeInit .align 1 .global ftl_deinit + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_deinit, %function ftl_deinit: .fnstart @@ -21833,8 +22108,10 @@ .size ftl_deinit, .-ftl_deinit .align 1 .global rk_ftl_de_init + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_de_init, %function rk_ftl_de_init: .fnstart @@ -21843,20 +22120,22 @@ push {r3, lr} .save {r3, lr} movs r1, #0 - ldr r0, .L3601 + ldr r0, .L3482 bl printk pop {r3, lr} b ftl_deinit -.L3602: +.L3483: .align 2 -.L3601: +.L3482: .word .LC160 .fnend .size rk_ftl_de_init, .-rk_ftl_de_init .align 1 .global ftl_cache_flush + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_cache_flush, %function ftl_cache_flush: .fnstart @@ -21868,8 +22147,10 @@ .size ftl_cache_flush, .-ftl_cache_flush .align 1 .global rk_ftl_cache_write_back + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_cache_write_back, %function rk_ftl_cache_write_back: .fnstart @@ -21881,8 +22162,10 @@ .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back .align 1 .global ftl_discard + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_discard, %function ftl_discard: .fnstart @@ -21892,25 +22175,24 @@ .save {r4, r5, r6, r7, r8, r9, lr} .pad #12 mov r6, r0 - ldr r7, .L3624 + ldr r7, .L3504 mov r4, r1 - ldr r5, [r7, #2428] - cmp r0, r5 - bcs .L3614 - cmp r1, r5 - bhi .L3614 - adds r3, r0, r1 - cmp r3, r5 - bhi .L3614 + ldr r3, [r7, #2432] + cmp r3, r0 + bls .L3495 + cmp r3, r1 + bcc .L3495 + adds r2, r0, r1 + cmp r3, r2 + bcc .L3495 cmp r1, #31 - bls .L3616 - ldr r3, .L3624+4 - ldr r2, [r3, #224] + bls .L3497 + ldr r3, .L3504+4 + ldr r2, [r3, #228] mov r8, r3 - cmp r2, #0 - bne .L3616 + cbnz r2, .L3497 bl FtlCacheWriteBack - ldrh r5, [r7, #2394] + ldrh r5, [r7, #2396] mov r0, r6 mov r1, r5 bl __aeabi_uidiv @@ -21918,7 +22200,7 @@ mov r9, r0 subs r6, r6, r3 uxth r6, r6 - cbz r6, .L3607 + cbz r6, .L3488 subs r5, r5, r6 add r9, r0, #1 cmp r5, r4 @@ -21926,27 +22208,39 @@ movcs r5, r4 uxth r5, r5 subs r4, r4, r5 -.L3607: - ldr r5, .L3624+8 +.L3488: + ldr r5, .L3504+8 mov r3, #-1 str r3, [sp, #4] -.L3608: - ldrh r3, [r7, #2394] +.L3489: + ldrh r3, [r7, #2396] cmp r4, r3 - bcc .L3623 - mov r0, r9 - mov r1, sp + bcs .L3491 + ldr r3, .L3504+8 + ldr r2, [r3, #1492] + cmp r2, #32 + bls .L3497 movs r2, #0 + str r2, [r3, #1492] + bl l2p_flush + bl FtlVpcTblFlush +.L3497: + movs r0, #0 + b .L3486 +.L3491: + movs r2, #0 + mov r1, sp + mov r0, r9 bl log2phys ldr r3, [sp] adds r3, r3, #1 - beq .L3609 - ldr r3, [r5, #988] - add r1, sp, #4 + beq .L3490 + ldr r3, [r5, #1492] movs r2, #1 + add r1, sp, #4 mov r0, r9 adds r3, r3, #1 - str r3, [r5, #988] + str r3, [r5, #1492] ldr r3, [r8, #480] adds r3, r3, #1 str r3, [r8, #480] @@ -21955,42 +22249,31 @@ ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl decrement_vpc_count -.L3609: - ldrh r3, [r7, #2394] +.L3490: + ldrh r3, [r7, #2396] add r9, r9, #1 subs r4, r4, r3 - b .L3608 -.L3623: - ldr r3, .L3624+8 - ldr r2, [r3, #988] - cmp r2, #32 - bls .L3616 - movs r2, #0 - str r2, [r3, #988] - bl l2p_flush - bl FtlVpcTblFlush - b .L3616 -.L3614: + b .L3489 +.L3495: mov r0, #-1 - b .L3606 -.L3616: - movs r0, #0 -.L3606: +.L3486: add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, pc} -.L3625: +.L3505: .align 2 -.L3624: +.L3504: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR5 + .word .LANCHOR4 .fnend .size ftl_discard, .-ftl_discard .align 1 .global FtlDiscard + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlDiscard, %function FtlDiscard: .fnstart @@ -22002,8 +22285,10 @@ .size FtlDiscard, .-FtlDiscard .align 1 .global ftl_read + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_read, %function ftl_read: .fnstart @@ -22011,289 +22296,294 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r3 - ldr r3, .L3672 + mov r9, r3 + ldr r3, .L3548 .pad #84 sub sp, sp, #84 mov r5, r1 - str r2, [sp, #36] - ldr r3, [r3, #504] + str r2, [sp, #44] + ldr r3, [r3, #500] cmp r3, #1 - bne .L3653 + bne .L3532 cmp r0, #16 - bne .L3629 - add r0, r1, #256 - mov r1, r2 - mov r2, r8 + bne .L3509 + mov r2, r9 + ldr r1, [sp, #44] + add r0, r5, #256 bl FtlVendorPartRead - b .L3628 -.L3629: - ldr r2, .L3672+4 - ldr r3, [r2, #2428] + mov r8, r0 +.L3507: + mov r0, r8 + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3509: + ldr r2, .L3548+4 + ldr r3, [r2, #2432] cmp r1, r3 - bcs .L3653 - ldr r1, [sp, #36] + bcs .L3532 + ldr r1, [sp, #44] cmp r1, r3 - bhi .L3653 + bhi .L3532 adds r1, r5, r1 - str r1, [sp, #40] - cmp r1, r3 - bhi .L3653 - ldrh r4, [r2, #2394] + cmp r3, r1 + str r1, [sp, #48] + bcc .L3532 + ldrh r4, [r2, #2396] mov r0, r5 mov r1, r4 bl __aeabi_uidiv + ldr r3, [sp, #48] mov r1, r4 - ldr r3, [sp, #40] - str r0, [sp, #28] + str r0, [sp, #36] subs r0, r3, #1 bl __aeabi_uidiv - ldr r3, [sp, #28] - ldr r1, [sp, #36] + ldr r3, [sp, #36] + ldr r1, [sp, #44] + str r0, [sp, #40] rsb r3, r3, #1 - str r0, [sp, #32] add r3, r3, r0 - str r3, [sp, #24] - ldr r3, .L3672+8 - ldr r0, [sp, #28] + str r3, [sp, #32] + ldr r3, .L3548+8 ldr r2, [r3, #504] add r2, r2, r1 - ldr r1, [sp, #24] + ldr r1, [sp, #32] str r2, [r3, #504] ldr r2, [r3, #476] add r2, r2, r1 - ldr r1, [sp, #32] + mov r1, r0 + ldr r0, [sp, #36] str r2, [r3, #476] bl FtlCacheMetchLpa - cbz r0, .L3630 + cbz r0, .L3510 bl FtlCacheWriteBack -.L3630: - mov r10, #0 - ldr r6, [sp, #28] - ldr r4, .L3672+8 - ldr r9, .L3672+4 - mov r7, r10 - str r10, [sp, #48] - str r10, [sp, #52] -.L3631: - ldr r3, [sp, #24] +.L3510: + ldr r6, [sp, #36] + movs r3, #0 + ldr r4, .L3548+8 + mov r7, r3 + mov r8, r3 + str r3, [sp, #28] + str r3, [sp, #52] +.L3511: + ldr r3, [sp, #32] + cbnz r3, .L3528 + ldr r3, .L3548+8 + ldrh r3, [r3, #1182] cmp r3, #0 - beq .L3671 + beq .L3507 + movs r1, #1 + ldr r0, [sp, #32] + bl ftl_do_gc + b .L3507 +.L3528: + movs r2, #0 add r1, sp, #76 mov r0, r6 - movs r2, #0 bl log2phys ldr r3, [sp, #76] - adds r1, r3, #1 - bne .L3668 - mov fp, #0 -.L3632: - ldrh r0, [r9, #2394] - cmp fp, r0 - bcs .L3636 - mla r0, r0, r6, fp - cmp r0, r5 - bcc .L3634 - ldr r3, [sp, #40] - cmp r0, r3 - bcs .L3634 - subs r0, r0, r5 - movs r1, #0 - mov r2, #512 - add r0, r8, r0, lsl #9 - bl ftl_memset -.L3634: - add fp, fp, #1 - b .L3632 -.L3668: - ldr r2, [r4, #3304] - mov fp, #36 - mla fp, fp, r7, r2 - str r3, [fp, #4] - ldr r3, [sp, #28] - cmp r6, r3 - bne .L3637 - ldrh ip, [r9, #2394] - mov r0, r5 - ldr r3, [r4, #3332] - mov r1, ip - str ip, [sp, #44] - str r3, [fp, #8] - bl __aeabi_uidivmod - ldr ip, [sp, #44] - ldr r2, [sp, #36] - rsb r3, r1, ip - str r1, [sp, #56] - cmp r3, r2 - it cs - movcs r3, r2 - cmp r3, ip - str r3, [sp, #48] - bne .L3638 - str r8, [fp, #8] - b .L3638 -.L3637: + adds r2, r3, #1 + bne .L3512 + mov r10, #0 +.L3513: + ldr r3, .L3548+4 + ldrh r0, [r3, #2396] + cmp r10, r0 + bcc .L3515 +.L3516: ldr r3, [sp, #32] - cmp r6, r3 - bne .L3639 - ldr r3, [r4, #3336] - ldrh r2, [r9, #2394] - ldr r1, [sp, #40] - str r3, [fp, #8] - mul r3, r2, r6 - rsb r10, r3, r1 - cmp r10, r2 - bne .L3638 - b .L3669 -.L3639: - ldrh r3, [r9, #2394] - muls r3, r6, r3 -.L3669: - subs r3, r3, r5 - add r3, r8, r3, lsl #9 - str r3, [fp, #8] -.L3638: - ldrh r3, [r9, #2400] - ldr r2, [r4, #3344] - str r6, [fp, #16] - muls r3, r7, r3 - adds r7, r7, #1 - bic r3, r3, #3 - add r3, r3, r2 - str r3, [fp, #12] -.L3636: - ldr r3, [sp, #24] adds r6, r6, #1 subs r3, r3, #1 - str r3, [sp, #24] - beq .L3640 - ldrh r3, [r9, #2320] + str r3, [sp, #32] + beq .L3520 + ldr r3, .L3548+4 + ldrh r3, [r3, #2324] cmp r7, r3, lsl #3 - bne .L3631 -.L3640: + bne .L3511 +.L3520: cmp r7, #0 - beq .L3631 - ldr r0, [r4, #3304] - mov r1, r7 + beq .L3511 movs r2, #0 + mov r1, r7 + ldr r0, [r4, #3304] + mov fp, #0 bl FlashReadPages + ldr r3, [sp, #28] + lsls r3, r3, #9 + str r3, [sp, #68] ldr r3, [sp, #56] lsls r3, r3, #9 str r3, [sp, #60] - ldr r3, [sp, #48] + ldr r3, [sp, #52] lsls r3, r3, #9 str r3, [sp, #64] - lsl r3, r10, #9 - str r3, [sp, #68] - movs r3, #0 - str r3, [sp, #44] -.L3647: - ldr r3, [sp, #44] - mov ip, #36 - ldr r1, [sp, #28] - mul fp, ip, r3 +.L3527: + mov r10, #36 ldr r3, [r4, #3304] - add r3, r3, fp + mul r10, r10, fp + ldr r1, [sp, #36] + add r3, r3, r10 ldr r2, [r3, #16] - cmp r2, r1 - bne .L3642 + cmp r1, r2 + bne .L3522 ldr r1, [r3, #8] ldr r3, [r4, #3332] cmp r1, r3 - bne .L3643 + bne .L3523 ldr r3, [sp, #60] - mov r0, r8 + mov r0, r9 ldr r2, [sp, #64] add r1, r1, r3 - b .L3670 -.L3642: - ldr r1, [sp, #32] - cmp r2, r1 - bne .L3643 - ldr r1, [r3, #8] - ldr r3, [r4, #3336] - cmp r1, r3 - bne .L3643 - ldrh r0, [r9, #2394] - ldr r3, [sp, #32] - ldr r2, [sp, #68] - muls r0, r3, r0 - subs r0, r0, r5 - add r0, r8, r0, lsl #9 -.L3670: +.L3547: bl ftl_memcpy -.L3643: - ldr r2, [r4, #3304] - add r3, r2, fp - ldr r1, [r2, fp] - adds r2, r1, #1 - itttt eq - streq r1, [sp, #52] - ldreq r2, [r4, #680] - addeq r2, r2, #1 - streq r2, [r4, #680] - ldr r2, [r3, #12] - ldr r1, [r3, #16] - ldr r2, [r2, #8] - cmp r1, r2 - beq .L3645 - ldr r2, [r4, #680] - ldr r0, .L3672+12 - adds r2, r2, #1 - str r2, [r4, #680] - 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 -.L3645: +.L3523: ldr r3, [r4, #3304] - add r2, r3, fp - ldr r3, [r3, fp] + ldr r2, [r3, r10] + add r1, r3, r10 + adds r3, r2, #1 + itttt eq + ldreq r3, [r4, #676] + moveq r8, r2 + addeq r3, r3, #1 + streq r3, [r4, #676] + ldr r3, [r1, #12] + ldr r2, [r1, #16] + ldr r3, [r3, #8] + cmp r2, r3 + beq .L3525 + ldr r3, [r4, #676] + adds r3, r3, #1 + str r3, [r4, #676] + ldr r2, [r1, #8] + ldr r3, [r1, #12] + ldr r0, [r2, #4] + str r0, [sp, #16] + ldr r2, [r2] + ldr r0, .L3548+12 + 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 +.L3525: + ldr r3, [r4, #3304] + add r2, r3, r10 + ldr r3, [r3, r10] cmp r3, #256 - bne .L3646 + bne .L3526 ldr r0, [r2, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3646: - ldr r3, [sp, #44] - adds r3, r3, #1 - str r3, [sp, #44] - cmp r3, r7 - bne .L3647 +.L3526: + add fp, fp, #1 + cmp r7, fp + bne .L3527 movs r7, #0 - b .L3631 -.L3671: - ldr r3, .L3672+8 - ldrh r3, [r3, #1182] - cbz r3, .L3649 - ldr r0, [sp, #24] - movs r1, #1 - bl ftl_do_gc -.L3649: - ldr r0, [sp, #52] - b .L3628 -.L3653: - mov r0, #-1 -.L3628: - add sp, sp, #84 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3673: + b .L3511 +.L3515: + mla r0, r0, r6, r10 + cmp r5, r0 + bhi .L3514 + ldr r3, [sp, #48] + cmp r3, r0 + bls .L3514 + subs r0, r0, r5 + mov r2, #512 + movs r1, #0 + add r0, r9, r0, lsl #9 + bl ftl_memset +.L3514: + add r10, r10, #1 + b .L3513 +.L3512: + ldr r2, [r4, #3304] + mov r10, #36 + mla r10, r10, r7, r2 + str r3, [r10, #4] + ldr r3, [sp, #36] + cmp r6, r3 + bne .L3517 + ldr r3, [r4, #3332] + mov r0, r5 + str r3, [r10, #8] + ldr r3, .L3548+4 + ldrh fp, [r3, #2396] + mov r1, fp + bl __aeabi_uidivmod + ldr r2, [sp, #44] + sub r3, fp, r1 + str r1, [sp, #56] + cmp r3, r2 + it cs + movcs r3, r2 + cmp r3, fp + str r3, [sp, #52] + bne .L3518 + str r9, [r10, #8] +.L3518: + ldr r3, .L3548+4 + ldr r2, [r4, #3344] + str r6, [r10, #16] + ldrh r3, [r3, #2402] + muls r3, r7, r3 + adds r7, r7, #1 + bic r3, r3, #3 + add r3, r3, r2 + str r3, [r10, #12] + b .L3516 +.L3517: + ldr r3, [sp, #40] + cmp r6, r3 + bne .L3519 + ldr r3, [r4, #3336] + ldr r1, [sp, #48] + str r3, [r10, #8] + ldr r3, .L3548+4 + ldrh r2, [r3, #2396] + mul r3, r2, r6 + subs r1, r1, r3 + cmp r2, r1 + str r1, [sp, #28] + bne .L3518 +.L3546: + subs r3, r3, r5 + add r3, r9, r3, lsl #9 + str r3, [r10, #8] + b .L3518 +.L3519: + ldr r3, .L3548+4 + ldrh r3, [r3, #2396] + muls r3, r6, r3 + b .L3546 +.L3522: + ldr r1, [sp, #40] + cmp r1, r2 + bne .L3523 + ldr r1, [r3, #8] + ldr r3, [r4, #3336] + cmp r1, r3 + bne .L3523 + ldr r3, .L3548+4 + ldr r2, [sp, #68] + ldrh r0, [r3, #2396] + ldr r3, [sp, #40] + muls r0, r3, r0 + subs r0, r0, r5 + add r0, r9, r0, lsl #9 + b .L3547 +.L3532: + mov r8, #-1 + b .L3507 +.L3549: .align 2 -.L3672: +.L3548: .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 @@ -22302,29 +22592,29 @@ .size ftl_read, .-ftl_read .align 1 .global ftl_vendor_read + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_vendor_read, %function ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, lr} - .save {r4, r5, lr} - mov r5, r0 - mov r4, r1 + @ link register save eliminated. mov r3, r2 - mov r1, r5 - mov r2, r4 + mov r2, r1 + mov r1, r0 movs r0, #16 - pop {r4, r5, lr} b ftl_read .fnend .size ftl_vendor_read, .-ftl_vendor_read .align 1 .global FlashBootVendorRead + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashBootVendorRead, %function FlashBootVendorRead: .fnstart @@ -22332,56 +22622,57 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r6, r0 + mov r4, r0 mov r5, r1 - mov r4, r2 + mov r6, r2 bl rknand_device_lock - ldr r3, .L3678 - ldr r3, [r3, #504] + ldr r3, .L3554 + ldr r3, [r3, #500] cmp r3, #1 - bne .L3677 - mov r2, r4 - mov r0, r6 + bne .L3553 + mov r0, r4 + mov r2, r6 mov r1, r5 bl ftl_vendor_read mov r4, r0 - b .L3676 -.L3677: - mov r4, #-1 -.L3676: +.L3552: bl rknand_device_unlock mov r0, r4 pop {r4, r5, r6, pc} -.L3679: +.L3553: + mov r4, #-1 + b .L3552 +.L3555: .align 2 -.L3678: +.L3554: .word .LANCHOR1 .fnend .size FlashBootVendorRead, .-FlashBootVendorRead .align 1 .global ftl_sys_read + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_sys_read, %function ftl_sys_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r4, r1 + @ link register save eliminated. mov r3, r2 + mov r2, r1 add r1, r0, #256 - mov r2, r4 movs r0, #16 - pop {r4, lr} b ftl_read .fnend .size ftl_sys_read, .-ftl_sys_read .align 1 .global StorageSysDataLoad + .syntax unified .thumb .thumb_func + .fpu softvfp .type StorageSysDataLoad, %function StorageSysDataLoad: .fnstart @@ -22389,11 +22680,11 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - mov r2, #512 - mov r5, r0 mov r4, r1 - mov r0, r1 + mov r5, r0 + mov r2, #512 movs r1, #0 + mov r0, r4 bl ftl_memset bl rknand_device_lock mov r2, r4 @@ -22408,8 +22699,10 @@ .size StorageSysDataLoad, .-StorageSysDataLoad .align 1 .global FtlRead + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlRead, %function FtlRead: .fnstart @@ -22421,279 +22714,287 @@ .size FtlRead, .-FtlRead .align 1 .global FtlInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlInit, %function FtlInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} mov r3, #-1 - ldr r2, .L3699 - ldr r7, .L3699+4 - ldr r4, .L3699+8 - ldr r6, .L3699+12 - ldr r1, .L3699+16 - ldr r0, .L3699+20 - str r3, [r7, #504] + ldr r7, .L3575 + ldr r2, .L3575+4 + ldr r6, .L3575+8 + ldr r4, .L3575+12 + ldr r1, .L3575+16 + str r3, [r7, #500] movs r3, #0 - str r3, [r2, #992] - str r3, [r4, #224] + ldr r0, .L3575+20 + str r3, [r2, #1496] + str r3, [r4, #228] bl printk - add r0, r6, #116 + add r0, r6, #124 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh r0, [r6, #2324] + ldrh r0, [r6, #2328] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz r0, .L3684 - ldr r0, .L3699+24 - b .L3698 -.L3684: + cbz r0, .L3560 + ldr r1, .L3575+24 + ldr r0, .L3575+28 +.L3574: + bl printk +.L3561: + movs r0, #0 + pop {r3, r4, r5, r6, r7, pc} +.L3560: bl FtlSysBlkInit mov r5, r0 - cbz r0, .L3686 - ldr r0, .L3699+28 -.L3698: - ldr r1, .L3699+32 - bl printk - b .L3685 -.L3686: + cbz r0, .L3562 + ldr r1, .L3575+24 + ldr r0, .L3575+32 + b .L3574 +.L3562: movs r1, #1 - str r1, [r7, #504] + str r1, [r7, #500] bl ftl_do_gc - ldrh r7, [r4, #312] + ldrh r7, [r4, #316] cmp r7, #15 - bhi .L3687 - mov r8, r4 + bhi .L3563 movw r6, #65535 -.L3690: +.L3566: ldrh r3, [r4, #556] cmp r3, r6 - bne .L3688 - ldrh r3, [r8, #1174] + bne .L3564 + ldrh r3, [r4, #1174] cmp r3, r6 - bne .L3688 + bne .L3564 and r0, r5, #63 bl List_get_gc_head_node uxth r0, r0 bl FtlGcRefreshBlock -.L3688: - movs r0, #1 - mov r1, r0 - bl ftl_do_gc - movs r0, #0 +.L3564: movs r1, #1 + mov r0, r1 bl ftl_do_gc - ldrh r2, [r4, #312] + movs r1, #1 + movs r0, #0 + bl ftl_do_gc + ldrh r2, [r4, #316] adds r3, r7, #2 cmp r2, r3 - bhi .L3685 + bhi .L3561 adds r5, r5, #1 cmp r5, #4096 - bne .L3690 - b .L3685 -.L3687: - ldrb r3, [r6, #144] @ zero_extendqisi2 - cbz r3, .L3685 + bne .L3566 + b .L3561 +.L3563: + ldrb r3, [r6, #152] @ zero_extendqisi2 + cmp r3, #0 + beq .L3561 movs r4, #128 -.L3692: - movs r0, #1 - mov r1, r0 +.L3568: + movs r1, #1 + mov r0, r1 bl ftl_do_gc subs r4, r4, #1 - bne .L3692 -.L3685: - movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L3700: + bne .L3568 + b .L3561 +.L3576: .align 2 -.L3699: - .word .LANCHOR5 +.L3575: .word .LANCHOR1 - .word .LANCHOR2 + .word .LANCHOR4 .word .LANCHOR0 - .word .LC77 + .word .LANCHOR2 .word .LC76 + .word .LC77 + .word .LANCHOR3+224 .word .LC161 .word .LC162 - .word .LANCHOR3+240 .fnend .size FtlInit, .-FtlInit .align 1 .global rk_ftl_init + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_init, %function rk_ftl_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} mov r0, #2048 - bl ftl_malloc - ldr r5, .L3705 - ldr r4, .L3705+4 - movs r6, #0 - add r1, r5, #1000 - str r6, [r5, #1000] - str r6, [r4, #1180] - str r0, [r5, #996] + ldr r4, .L3581 + movs r5, #0 + bl ftl_dma32_malloc + add r1, r4, #1504 + str r0, [r4, #1500] addw r0, r4, #1180 + str r5, [r4, #1184] + str r5, [r4, #1180] + str r5, [r4, #1504] bl rknand_get_reg_addr ldr r3, [r4, #1180] - cbz r3, .L3704 + cbz r3, .L3580 bl rk_nandc_irq_init - mov r1, r6 - mov r2, r6 mov r3, #2048 - ldr r0, [r5, #996] + mov r2, r5 + mov r1, r5 + ldr r0, [r4, #1500] bl FlashSramLoadStore bl rknand_flash_cs_init ldr r0, [r4, #1180] bl FlashInit mov r4, r0 - cbnz r0, .L3703 + cbnz r0, .L3579 bl FtlInit -.L3703: +.L3579: mov r1, r4 - ldr r0, .L3705+8 + ldr r0, .L3581+4 bl printk +.L3577: mov r0, r4 - pop {r4, r5, r6, pc} -.L3704: - mov r0, #-1 - pop {r4, r5, r6, pc} -.L3706: + pop {r3, r4, r5, pc} +.L3580: + mov r4, #-1 + b .L3577 +.L3582: .align 2 -.L3705: - .word .LANCHOR5 +.L3581: .word .LANCHOR4 .word .LC163 .fnend .size rk_ftl_init, .-rk_ftl_init .align 1 .global ftl_fix_nand_power_lost_error + .syntax unified .thumb .thumb_func + .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, .L3722 + ldr r3, .L3597 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} .pad #48 sub sp, sp, #48 - ldrb r2, [r3, #144] @ zero_extendqisi2 mov r8, r3 + ldrb r2, [r3, #152] @ zero_extendqisi2 cmp r2, #0 - beq .L3707 - ldr r4, .L3722+4 - movw r7, #4097 - ldr r6, .L3722+8 - ldr r0, .L3722+12 - ldr r3, [r4, #296] - ldrh r5, [r6, #840] - mov r1, r5 - ldrh r2, [r3, r5, lsl #1] + beq .L3583 + ldr r4, .L3597+4 + movw r5, #4097 + ldr r7, .L3597+8 + ldr r0, .L3597+12 + ldr r3, [r4, #300] + ldrh r6, [r7, #1342] + ldrh r2, [r3, r6, lsl #1] + mov r1, r6 bl printk - ldrh r0, [r4, #316] + ldrh r0, [r4, #320] + lsl r9, r6, #1 bl FtlGcRefreshOpenBlock - ldrh r0, [r4, #364] + ldrh r0, [r4, #368] bl FtlGcRefreshOpenBlock - add r0, r4, #316 + add r0, r4, #320 bl allocate_new_data_superblock - add r0, r4, #364 + add r0, r4, #368 bl allocate_new_data_superblock - lsl r9, r5, #1 -.L3709: - subs r7, r7, #1 - beq .L3713 - movs r0, #1 - mov r1, r0 +.L3585: + subs r5, r5, #1 + beq .L3589 + movs r1, #1 + mov r0, r1 bl ftl_do_gc - ldr r3, [r4, #296] + ldr r3, [r4, #300] ldrh r3, [r3, r9] cmp r3, #0 - bne .L3709 -.L3713: - ldr r3, [r4, #296] - mov r1, r5 - ldr r0, .L3722+12 - ldrh r2, [r3, r5, lsl #1] + bne .L3585 +.L3589: + ldr r3, [r4, #300] + mov r1, r6 + ldr r0, .L3597+12 + ldrh r2, [r3, r6, lsl #1] bl printk - ldr r3, [r4, #296] - ldrh r7, [r3, r5, lsl #1] - cbnz r7, .L3711 + ldr r3, [r4, #300] + ldrh r5, [r3, r6, lsl #1] + cbnz r5, .L3587 add r0, sp, #48 - mov r10, #36 movw r9, #65535 - strh r5, [r0, #-48]! @ movhi + strh r6, [r0, #-48]! @ movhi + mov r10, #36 bl make_superblock - ldr r3, .L3722+4 - ldrh ip, [r8, #2320] - ldr r8, [r3, #228] - mov r3, r7 - mov lr, r3 + ldrh lr, [r8, #2324] add r0, sp, #14 -.L3714: - uxth r2, r3 - cmp r2, ip - bcs .L3721 - ldrh r2, [r0, #2]! - cmp r2, r9 - beq .L3715 - mla r1, r10, r7, r8 - adds r7, r7, #1 - lsls r2, r2, #10 - uxth r7, r7 - str r2, [r1, #4] - str lr, [r1, #8] - str lr, [r1, #12] -.L3715: - adds r3, r3, #1 - b .L3714 -.L3721: - ldr r3, [r4, #296] - mov r1, r5 - ldr r0, .L3722+16 - ldrh r2, [r3, r5, lsl #1] + ldr r8, [r4, #232] + mov r2, r5 + mov ip, r5 +.L3590: + uxth r3, r2 + cmp lr, r3 + bhi .L3592 + ldr r3, [r4, #300] + mov r1, r6 + ldr r0, .L3597+16 + ldrh r2, [r3, r6, lsl #1] bl printk + mov r2, r5 movs r1, #0 - mov r2, r7 - ldr r0, [r4, #228] + ldr r0, [r4, #232] bl FlashEraseBlocks - ldr r0, [r4, #228] + mov r2, r5 movs r1, #1 - mov r2, r7 + ldr r0, [r4, #232] bl FlashEraseBlocks -.L3711: +.L3587: movw r3, #65535 - strh r3, [r6, #840] @ movhi -.L3707: + strh r3, [r7, #1342] @ movhi +.L3583: add sp, sp, #48 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L3723: +.L3592: + ldrh r3, [r0, #2]! + cmp r3, r9 + beq .L3591 + mla r1, r10, r5, r8 + adds r5, r5, #1 + lsls r3, r3, #10 + uxth r5, r5 + str r3, [r1, #4] + str ip, [r1, #8] + str ip, [r1, #12] +.L3591: + adds r2, r2, #1 + b .L3590 +.L3598: .align 2 -.L3722: +.L3597: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR5 + .word .LANCHOR4 .word .LC164 .word .LC165 .fnend .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .align 1 .global rk_ftl_garbage_collect + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: .fnstart @@ -22705,554 +23006,555 @@ .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 1 .global ftl_write + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_write, %function ftl_write: .fnstart - @ args = 0, pretend = 0, frame = 88 + @ args = 0, pretend = 0, frame = 80 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #92 - sub sp, sp, #92 - ldr r9, .L3800+16 - mov r8, r1 - str r3, [sp, #12] - mov fp, r2 - ldr r3, [r9, #224] - cmp r3, #0 - bne .L3767 - ldr r2, .L3800 - ldr r2, [r2, #504] - cmp r2, #1 - bne .L3768 - cmp r0, #16 - bne .L3727 - add r0, r1, #256 - ldr r2, [sp, #12] - mov r1, fp - bl FtlVendorPartWrite - b .L3726 -.L3727: - ldr r7, .L3800+4 - ldr r3, [r7, #2428] - cmp r1, r3 - bcs .L3771 - cmp fp, r3 - bhi .L3771 - add r6, r1, fp - cmp r6, r3 - bhi .L3771 - ldrh r4, [r7, #2394] - mov r3, #2048 - ldr r5, .L3800+8 - mov r0, r1 - mov r1, r4 - str r3, [r5, #1004] - bl __aeabi_uidiv - mov r1, r4 - str r0, [sp, #4] - subs r0, r6, #1 - bl __aeabi_uidiv - cmp fp, r4, lsl #1 - ldr r2, [sp, #4] - str r0, [sp, #20] - sub r6, r0, r2 - add r3, r6, #1 - str r3, [sp, #8] - ldr r2, [sp, #8] - ldr r3, [r9, #484] - add r3, r3, r2 - ldr r2, [r7, #2440] - str r3, [r9, #484] - ldr r3, [r9, #500] - add r3, r3, fp - str r3, [r9, #500] - ite cs - movcs r3, #1 - movcc r3, #0 - str r3, [sp, #28] + mov r10, r3 + ldr r3, .L3672 + mov r9, r2 + .pad #84 + sub sp, sp, #84 + mov r7, r1 + ldr r2, [r3, #228] cmp r2, #0 - beq .L3729 - movs r3, #36 - ldr r7, [r7, #2444] - muls r3, r2, r3 - ldr r2, [sp, #4] - subs r3, r3, #36 - add r7, r7, r3 - ldr r3, [r7, #16] - cmp r2, r3 - bne .L3730 - ldr r3, [r9, #488] - mov r1, r4 - mov r0, r8 - adds r3, r3, #1 - str r3, [r9, #488] - ldr r3, [r5, #1008] - adds r3, r3, #1 - str r3, [r5, #1008] - bl __aeabi_uidivmod - ldr r0, [r7, #8] - subs r4, r4, r1 - add r0, r0, r1, lsl #9 - cmp r4, fp - ldr r1, [sp, #12] - it cs - movcs r4, fp - lsl r9, r4, #9 - mov r2, r9 - bl ftl_memcpy - cbnz r6, .L3731 - ldr r3, [r5, #1008] - cmp r3, #2 - ble .L3767 -.L3731: - ldr r3, [sp, #12] - rsb fp, r4, fp - add r8, r8, r4 - str r6, [sp, #8] - add r3, r3, r9 - str r3, [sp, #12] - ldr r3, [sp, #4] - adds r3, r3, #1 + bne .L3642 + ldr r1, .L3672+4 + ldr r1, [r1, #500] + cmp r1, #1 + bne .L3643 + cmp r0, #16 + bne .L3602 + mov r2, r10 + mov r1, r9 + add r0, r7, #256 + bl FtlVendorPartWrite +.L3600: + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3602: + ldr fp, .L3672+16 str r3, [sp, #4] -.L3730: - movs r3, #0 - str r3, [r5, #1008] -.L3729: - ldr r0, [sp, #4] - ldr r1, [sp, #20] - bl FtlCacheMetchLpa - cbz r0, .L3732 - bl FtlCacheWriteBack -.L3732: - ldr r4, .L3800+4 - ldr r7, .L3800+12 - ldr r6, [sp, #4] - mov r10, r4 - str r7, [r5, #984] -.L3733: - ldr r3, [sp, #8] - ldr r5, .L3800+16 - cmp r3, #0 - beq .L3799 - ldrh r3, [r7, #4] - cbnz r3, .L3734 - add r2, r5, #316 - ldr r9, .L3800 + ldr r2, [fp, #2432] cmp r7, r2 - bne .L3735 - ldrh r7, [r5, #368] - cbnz r7, .L3736 - add r0, r5, #364 - bl allocate_new_data_superblock - str r7, [r9, #3452] -.L3736: - ldr r0, .L3800+12 - bl allocate_new_data_superblock - ldr r3, [r9, #3452] - cbnz r3, .L3772 -.L3738: - ldr r7, .L3800+12 - b .L3737 -.L3735: - str r3, [r9, #3452] - ldrh r3, [r5, #320] - cmp r3, #0 - bne .L3738 + bcs .L3646 + cmp r9, r2 + bhi .L3646 + add r5, r7, r9 + cmp r2, r5 + bcc .L3646 + ldrh r4, [fp, #2396] + mov r2, #2048 + ldr r6, .L3672+8 mov r0, r7 - bl allocate_new_data_superblock - b .L3737 -.L3772: - ldr r7, .L3800+20 -.L3737: - ldrh r3, [r7, #4] - cbnz r3, .L3739 - mov r0, r7 - bl allocate_new_data_superblock -.L3739: - ldr r3, .L3800+8 - str r7, [r3, #984] -.L3734: - ldr r2, [r5, #3300] - ldr r3, [r4, #2440] - ldrh ip, [r7, #4] - subs r3, r2, r3 - ldr r2, [sp, #8] - cmp ip, r3 - ldr r9, .L3800+16 - it cs - movcs ip, r3 - cmp ip, r2 - mov r3, ip - it cs - movcs r3, r2 - str r3, [sp, #44] - movs r3, #0 - str r3, [sp, #24] -.L3740: - ldr r3, [sp, #24] - ldr r2, [sp, #44] - cmp r3, r2 - beq .L3741 - ldrh r3, [r7, #4] - cmp r3, #0 - beq .L3741 - ldr r3, [sp, #28] - cbz r3, .L3742 - ldr r3, [sp, #20] - cmp r6, r3 - bne .L3742 - ldr r3, [sp, #24] - cbz r3, .L3742 - ldrh r2, [r4, #2394] - add r3, r8, fp - mls r3, r2, r6, r3 - cmp r3, r2 - bne .L3741 -.L3742: - add r1, sp, #48 - movs r2, #0 - mov r0, r6 - movs r5, #36 - bl log2phys - mov r0, r7 - bl get_new_active_ppa - ldr r3, [r4, #2440] - ldr r1, [r4, #2444] - ldrh r2, [r4, #2400] - mla r1, r5, r3, r1 - mul ip, r3, r2 - str r6, [r1, #16] - str r0, [r1, #4] - lsr r0, ip, #2 - str r0, [sp, #36] - ldr r0, [r9, #3348] - mov lr, r0 - str r0, [sp, #40] - ldr r0, [sp, #36] - add r0, lr, r0, lsl #2 - ldrh lr, [r4, #2398] - str r0, [sp, #16] - str r0, [r1, #12] - mul r3, r3, lr - ldr r0, [r9, #3328] - bic r3, r3, #3 - add r3, r3, r0 - ldr r0, [sp, #16] - str r3, [r1, #8] - movs r1, #0 - bl ftl_memset + mov r1, r4 + str r2, [r6, #1508] + bl __aeabi_uidiv + mov r1, r4 + str r0, [sp] + subs r0, r5, #1 + bl __aeabi_uidiv ldr r3, [sp, #4] - cmp r6, r3 - beq .L3743 - ldr r3, [sp, #20] - cmp r6, r3 - bne .L3796 - ldrh r3, [r4, #2394] - add r5, r8, fp - smulbb r3, r3, r6 - subs r5, r5, r3 - movs r3, #0 - str r3, [sp, #32] - uxth r5, r5 - b .L3746 -.L3743: - ldrh r5, [r4, #2394] - mov r0, r8 - mov r1, r5 + cmp r9, r4, lsl #1 + ldr r2, [sp] + ldr r1, [fp, #2444] + str r0, [sp, #12] + sub r5, r0, r2 + ldr r2, [r3, #484] + add r8, r5, #1 + add r2, r2, r8 + str r2, [r3, #484] + ldr r2, [r3, #500] + add r2, r2, r9 + str r2, [r3, #500] + ite cs + movcs r2, #1 + movcc r2, #0 + str r2, [sp, #16] + cmp r1, #0 + beq .L3647 + movs r2, #36 + muls r2, r1, r2 + ldr r1, [fp, #2448] + subs r2, r2, #36 + add fp, r1, r2 + ldr r1, [sp] + ldr r2, [fp, #16] + cmp r1, r2 + bne .L3648 + ldr r2, [r3, #488] + mov r1, r4 + mov r0, r7 + adds r2, r2, #1 + str r2, [r3, #488] + ldr r3, [r6, #1512] + adds r3, r3, #1 + str r3, [r6, #1512] bl __aeabi_uidivmod - subs r5, r5, r1 - str r1, [sp, #32] - cmp r5, fp + subs r4, r4, r1 + ldr r0, [fp, #8] + cmp r4, r9 + mov r3, r1 it cs - movcs r5, fp -.L3746: - ldrh r3, [r4, #2394] - cmp r5, r3 - bne .L3747 - ldr r3, [sp, #4] - mov lr, #36 - cmp r6, r3 - ittet ne - mulne r1, r6, r5 - ldrne r3, [sp, #12] - ldreq r1, [sp, #12] - rsbne r1, r8, r1 - it ne - addne r1, r3, r1, lsl #9 - ldr r3, [sp, #28] - cbz r3, .L3749 - ldr r2, [r10, #2440] - ldr r5, [r10, #2444] - mla r2, lr, r2, r5 - str r1, [r2, #8] - b .L3750 -.L3749: - ldr r0, [r10, #2444] - ldr r3, [r10, #2440] - ldrh r2, [r10, #2398] - mla r3, lr, r3, r0 - ldr r0, [r3, #8] - b .L3797 -.L3747: - ldr r2, [sp, #48] - movs r3, #36 - adds r1, r2, #1 - beq .L3751 - ldr r1, [r4, #2444] - add r0, sp, #52 - str r2, [sp, #56] - ldr r2, [r4, #2440] - str r6, [sp, #68] - mla r3, r3, r2, r1 - movs r1, #1 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [sp, #60] - movs r2, #0 - str r3, [sp, #64] - bl FlashReadPages - ldr r3, [sp, #52] - adds r3, r3, #1 - bne .L3752 - ldr r3, [r9, #680] - adds r3, r3, #1 - str r3, [r9, #680] - b .L3754 -.L3801: - .align 2 -.L3800: - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR5 - .word .LANCHOR2+316 - .word .LANCHOR2 - .word .LANCHOR2+364 -.L3752: - ldr r3, [sp, #16] - ldr r3, [r3, #8] - cmp r3, r6 - beq .L3754 - ldr r3, [r9, #680] - mov r2, r6 - ldr r0, .L3802 - adds r3, r3, #1 - str r3, [r9, #680] - ldr r3, [sp, #16] - ldr r1, [r3, #8] - bl printk - b .L3754 -.L3751: - ldr r1, [r4, #2444] - ldr r2, [r4, #2440] - mla r2, r3, r2, r1 - movs r1, #0 - ldr r0, [r2, #8] - ldrh r2, [r4, #2398] - bl ftl_memset -.L3754: - ldr r3, [sp, #4] - mov lr, #36 - lsls r2, r5, #9 - cmp r6, r3 - bne .L3755 - ldr r1, [r4, #2440] - ldr r5, [r4, #2444] - ldr r3, [sp, #32] - mla r1, lr, r1, r5 - ldr r0, [r1, #8] - ldr r1, [sp, #12] + movcs r4, r9 + mov r1, r10 + lsl r8, r4, #9 add r0, r0, r3, lsl #9 - b .L3797 -.L3755: - ldr r0, [r4, #2444] - ldr r3, [r4, #2440] - ldrh r1, [r4, #2394] - mla r3, lr, r3, r0 - muls r1, r6, r1 - ldr r0, [r3, #8] - rsb r1, r8, r1 - ldr r3, [sp, #12] - add r1, r3, r1, lsl #9 - b .L3797 -.L3796: - ldr r3, [sp, #28] - cbz r3, .L3756 - ldr r3, [r4, #2440] - ldr r2, [r4, #2444] - mla r5, r5, r3, r2 - ldrh r3, [r4, #2394] - ldr r2, [sp, #12] - muls r3, r6, r3 - rsb r3, r8, r3 - add r3, r2, r3, lsl #9 - str r3, [r5, #8] - b .L3750 -.L3756: - ldr r2, [r4, #2444] - ldr r3, [r4, #2440] - ldrh r1, [r4, #2394] - mla r3, r5, r3, r2 - ldrh r2, [r4, #2398] - muls r1, r6, r1 - ldr r0, [r3, #8] - rsb r1, r8, r1 - ldr r3, [sp, #12] - add r1, r3, r1, lsl #9 -.L3797: + mov r2, r8 bl ftl_memcpy -.L3750: - ldr r2, [sp, #40] - movw r3, #61589 - ldr r1, [sp, #36] - strh r3, [r2, r1, lsl #2] @ movhi - ldr r2, [sp, #16] - ldr r3, [r9, #512] - str r3, [r2, #4] - adds r3, r3, #1 - adds r2, r3, #1 - ldr r2, [sp, #16] - it eq - moveq r3, #0 - str r3, [r9, #512] - ldr r3, [sp, #16] - str r6, [r3, #8] - adds r6, r6, #1 - ldr r3, [sp, #48] - str r3, [r2, #12] - ldrh r3, [r7] - strh r3, [r2, #2] @ movhi - ldr r3, [r4, #2440] - adds r3, r3, #1 - str r3, [r4, #2440] - ldr r3, [sp, #24] - adds r3, r3, #1 - str r3, [sp, #24] - b .L3740 -.L3741: - ldr r3, [sp, #8] - ldr r2, [sp, #24] - subs r3, r3, r2 + cbnz r5, .L3606 + ldr r3, [r6, #1512] + cmp r3, #2 + bgt .L3606 +.L3642: + movs r0, #0 + b .L3600 +.L3606: + add r3, r10, r8 + sub r9, r9, r4 str r3, [sp, #8] - ldr r3, .L3802+4 - ldr r2, [r10, #2440] - ldr r3, [r3, #3300] - cmp r2, r3 - bcs .L3760 - ldr r3, [sp, #28] - cbnz r3, .L3760 - ldrh r3, [r7, #4] - cbz r3, .L3760 -.L3762: + add r7, r7, r4 + ldr r3, [sp] + mov r8, r5 + adds r3, r3, #1 + str r3, [sp] +.L3605: movs r3, #0 - str r3, [sp, #28] - b .L3733 -.L3760: + str r3, [r6, #1512] +.L3604: + ldr r1, [sp, #12] + ldr r0, [sp] + bl FtlCacheMetchLpa + cbz r0, .L3607 bl FtlCacheWriteBack - movs r3, #0 - str r3, [r10, #2440] - ldr r3, [sp, #8] - cmp r3, #1 - bhi .L3733 - b .L3762 -.L3799: - mov r0, r3 - ldr r2, [sp, #4] - ldr r3, [sp, #20] +.L3607: + ldr r5, .L3672+12 + ldr fp, .L3672+16 + str r5, [r6, #1488] + ldr r6, [sp] +.L3608: + ldr r4, .L3672 + cmp r8, #0 + bne .L3637 + ldr r3, [sp, #12] + mov r0, r8 + ldr r2, [sp] subs r1, r3, r2 bl ftl_do_gc - ldrh r3, [r5, #312] + ldrh r3, [r4, #316] cmp r3, #5 - bls .L3775 + bls .L3638 cmp r3, #31 - bhi .L3767 - ldr r3, .L3802+8 - ldrb r3, [r3] @ zero_extendqisi2 - cbnz r3, .L3767 -.L3775: - ldr r4, [sp, #8] - mov r8, #128 - ldr r6, .L3802+4 - movw r7, #65535 -.L3788: - ldrh r3, [r5, #556] - cmp r3, r7 - bne .L3766 - ldrh r3, [r6, #1174] - cmp r3, r7 - bne .L3766 - ldrh r3, [r6, #1176] - cmp r3, r7 - bne .L3766 - and r0, r4, #7 + bhi .L3642 + ldr r3, .L3672+16 + ldrb r3, [r3, #36] @ zero_extendqisi2 + cmp r3, #0 + bne .L3642 +.L3638: + movw r5, #65535 + movs r6, #128 +.L3641: + ldrh r3, [r4, #556] + cmp r3, r5 + bne .L3640 + ldrh r3, [r4, #1174] + cmp r3, r5 + bne .L3640 + ldrh r3, [r4, #1176] + cmp r3, r5 + bne .L3640 + and r0, r8, #7 bl List_get_gc_head_node uxth r0, r0 bl FtlGcRefreshBlock -.L3766: - movs r0, #1 - strh r8, [r5, #1122] @ movhi - strh r8, [r5, #1120] @ movhi - mov r1, r0 - bl ftl_do_gc - movs r0, #0 +.L3640: movs r1, #1 + strh r6, [r4, #1122] @ movhi + mov r0, r1 + strh r6, [r4, #1120] @ movhi bl ftl_do_gc - ldr r3, [r5, #224] - cbnz r3, .L3767 - ldrh r3, [r6, #312] - cmp r3, #2 - bhi .L3767 - adds r4, r4, #1 - cmp r4, #256 - bne .L3788 - b .L3767 -.L3771: - mov r0, #-1 - b .L3726 -.L3767: + movs r1, #1 movs r0, #0 - b .L3726 -.L3768: - mov r0, r3 -.L3726: - add sp, sp, #92 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3803: + bl ftl_do_gc + ldr r3, [r4, #228] + cmp r3, #0 + bne .L3642 + ldrh r3, [r4, #316] + cmp r3, #2 + bhi .L3642 + add r8, r8, #1 + cmp r8, #256 + bne .L3641 + b .L3642 +.L3648: + str r10, [sp, #8] + b .L3605 +.L3647: + str r10, [sp, #8] + b .L3604 +.L3637: + ldrh r1, [r5, #4] + cbnz r1, .L3609 + add r2, r4, #320 + ldr r10, .L3672+4 + cmp r5, r2 + bne .L3610 + ldrh r5, [r4, #372] + cbnz r5, .L3611 + add r0, r4, #368 + bl allocate_new_data_superblock + str r5, [r10, #3448] +.L3611: + ldr r5, .L3672+12 + ldr r0, .L3672+12 + bl allocate_new_data_superblock + ldr r1, [r10, #3448] + add r2, r5, #48 + cmp r1, #0 + it ne + movne r5, r2 +.L3612: + ldrh r2, [r5, #4] + cbnz r2, .L3613 + mov r0, r5 + bl allocate_new_data_superblock +.L3613: + ldr r2, .L3672+8 + str r5, [r2, #1488] +.L3609: + ldr r1, [fp, #2444] + ldr r2, [r4, #3300] + ldr r10, .L3672 + subs r2, r2, r1 + ldrh r1, [r5, #4] + cmp r2, r8 + it cs + movcs r2, r8 + cmp r1, r2 + mov r3, r1 + it cs + movcs r3, r2 + str r3, [sp, #36] + movs r3, #0 + str r3, [sp, #20] +.L3614: + ldr r3, [sp, #20] + ldr r2, [sp, #36] + cmp r3, r2 + bne .L3633 +.L3615: + ldr r2, .L3672 + ldr r1, [fp, #2444] + ldr r3, [sp, #20] + ldr r2, [r2, #3300] + sub r8, r8, r3 + cmp r1, r2 + bcs .L3634 + ldr r3, [sp, #16] + cmp r3, #0 + bne .L3634 + ldrh r2, [r5, #4] + cmp r2, #0 + beq .L3634 +.L3636: + movs r3, #0 + str r3, [sp, #16] + b .L3608 +.L3610: + str r1, [r10, #3448] + ldrh r1, [r4, #324] + cbnz r1, .L3650 + mov r0, r5 + bl allocate_new_data_superblock + b .L3612 +.L3650: + mov r5, r2 + b .L3613 +.L3673: .align 2 -.L3802: - .word .LC166 +.L3672: .word .LANCHOR2 + .word .LANCHOR1 + .word .LANCHOR4 + .word .LANCHOR2+320 .word .LANCHOR0 +.L3633: + ldrh r2, [r5, #4] + cmp r2, #0 + beq .L3615 + ldr r3, [sp, #16] + cbz r3, .L3616 + ldr r3, [sp, #12] + cmp r3, r6 + bne .L3616 + ldr r3, [sp, #20] + cbz r3, .L3616 + ldrh r1, [fp, #2396] + add r2, r7, r9 + ldr r3, [sp, #12] + mls r2, r1, r3, r2 + cmp r1, r2 + bne .L3615 +.L3616: + movs r2, #0 + add r1, sp, #40 + mov r0, r6 + movs r4, #36 + bl log2phys + mov r0, r5 + bl get_new_active_ppa + ldr r1, [fp, #2444] + ldr r2, [fp, #2448] + mla ip, r4, r1, r2 + ldrh r2, [fp, #2402] + str r0, [ip, #4] + mul r0, r2, r1 + str r6, [ip, #16] + bic r3, r0, #3 + str r3, [sp, #28] + ldr r0, [sp, #28] + ldr r3, [r10, #3348] + str r3, [sp, #32] + add r3, r3, r0 + ldrh r0, [fp, #2400] + str r3, [ip, #12] + str r3, [sp, #4] + muls r1, r0, r1 + ldr r0, [r10, #3328] + bic r1, r1, #3 + add r1, r1, r0 + mov r0, r3 + str r1, [ip, #8] + movs r1, #0 + bl ftl_memset + ldr r3, [sp] + cmp r3, r6 + beq .L3617 + ldr r3, [sp, #12] + cmp r3, r6 + bne .L3668 + ldrh r3, [sp, #12] + add r4, r7, r9 + ldrh r2, [fp, #2396] + smulbb r2, r2, r3 + movs r3, #0 + str r3, [sp, #24] + subs r4, r4, r2 + uxth r4, r4 + b .L3620 +.L3617: + ldrh r4, [fp, #2396] + mov r0, r7 + mov r1, r4 + bl __aeabi_uidivmod + subs r4, r4, r1 + str r1, [sp, #24] + cmp r4, r9 + it cs + movcs r4, r9 +.L3620: + ldrh r2, [fp, #2396] + cmp r2, r4 + bne .L3621 + ldr r3, [sp] + ldr r2, [fp, #2444] + ldr r0, [fp, #2448] + cmp r3, r6 + itte ne + mulne r1, r4, r6 + ldrne r3, [sp, #8] + ldreq r1, [sp, #8] + mov r4, #36 + itt ne + subne r1, r1, r7 + addne r1, r3, r1, lsl #9 + ldr r3, [sp, #16] + cbz r3, .L3623 + mla r2, r4, r2, r0 + str r1, [r2, #8] +.L3624: + ldr r3, [sp, #32] + movw r2, #61589 + ldr r1, [sp, #28] + strh r2, [r3, r1] @ movhi + ldr r3, [sp, #4] + ldr r2, [r10, #512] + str r2, [r3, #4] + adds r2, r2, #1 + adds r3, r2, #1 + ldr r3, [sp, #4] + it eq + moveq r2, #0 + str r2, [r10, #512] + ldr r2, [sp, #40] + str r6, [r3, #8] + adds r6, r6, #1 + str r2, [r3, #12] + ldrh r2, [r5] + strh r2, [r3, #2] @ movhi + ldr r3, [sp, #20] + ldr r2, [fp, #2444] + adds r3, r3, #1 + adds r2, r2, #1 + str r3, [sp, #20] + str r2, [fp, #2444] + b .L3614 +.L3623: + mla r0, r4, r2, r0 + ldrh r2, [fp, #2400] +.L3671: + ldr r0, [r0, #8] + b .L3669 +.L3621: + ldr r2, [sp, #40] + movs r0, #36 + adds r1, r2, #1 + beq .L3625 + ldr r1, [fp, #2448] + str r2, [sp, #48] + ldr r2, [fp, #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] + movs r1, #1 + str r2, [sp, #56] + movs r2, #0 + bl FlashReadPages + ldr r2, [sp, #44] + adds r2, r2, #1 + bne .L3626 + ldr r2, [r10, #676] + adds r2, r2, #1 + str r2, [r10, #676] +.L3628: + ldr r3, [sp] + lsls r2, r4, #9 + cmp r3, r6 + bne .L3629 + ldr r0, [fp, #2448] + movs r4, #36 + ldr r1, [fp, #2444] + ldr r3, [sp, #24] + mla r1, r4, r1, r0 + ldr r0, [r1, #8] + ldr r1, [sp, #8] + add r0, r0, r3, lsl #9 +.L3669: + bl ftl_memcpy + b .L3624 +.L3626: + ldr r3, [sp, #4] + ldr r2, [r3, #8] + cmp r6, r2 + beq .L3628 + ldr r2, [r10, #676] + ldr r0, .L3674 + adds r2, r2, #1 + str r2, [r10, #676] + mov r2, r6 + ldr r1, [r3, #8] + bl printk + b .L3628 +.L3625: + ldr r1, [fp, #2444] + ldr r2, [fp, #2448] + mla r0, r0, r1, r2 + ldrh r2, [fp, #2400] + movs r1, #0 + ldr r0, [r0, #8] + bl ftl_memset + b .L3628 +.L3629: + ldrh r1, [fp, #2396] + movs r4, #36 + ldr r3, [fp, #2448] + ldr r0, [fp, #2444] + muls r1, r6, r1 + mla r0, r4, r0, r3 + ldr r3, [sp, #8] + subs r1, r1, r7 + add r1, r3, r1, lsl #9 + b .L3671 +.L3668: + ldr r3, [sp, #16] + cbz r3, .L3630 + ldr r2, [fp, #2444] + ldr r1, [fp, #2448] + ldr r3, [sp, #8] + mla r4, r4, r2, r1 + ldrh r2, [fp, #2396] + muls r2, r6, r2 + subs r2, r2, r7 + add r2, r3, r2, lsl #9 + str r2, [r4, #8] + b .L3624 +.L3630: + ldrh r1, [fp, #2396] + ldr r2, [fp, #2444] + ldr r0, [fp, #2448] + ldr r3, [sp, #8] + muls r1, r6, r1 + mla r4, r4, r2, r0 + ldrh r2, [fp, #2400] + subs r1, r1, r7 + add r1, r3, r1, lsl #9 + ldr r0, [r4, #8] + b .L3669 +.L3634: + bl FtlCacheWriteBack + cmp r8, #1 + mov r2, #0 + str r2, [fp, #2444] + bhi .L3608 + b .L3636 +.L3646: + mov r0, #-1 + b .L3600 +.L3643: + mov r0, r2 + b .L3600 +.L3675: + .align 2 +.L3674: + .word .LC166 .fnend .size ftl_write, .-ftl_write .align 1 .global ftl_vendor_write + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_vendor_write, %function ftl_vendor_write: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, lr} - .save {r4, r5, lr} - mov r5, r0 - mov r4, r1 + @ link register save eliminated. mov r3, r2 - mov r1, r5 - mov r2, r4 + mov r2, r1 + mov r1, r0 movs r0, #16 - pop {r4, r5, lr} b ftl_write .fnend .size ftl_vendor_write, .-ftl_vendor_write .align 1 .global FlashBootVendorWrite + .syntax unified .thumb .thumb_func + .fpu softvfp .type FlashBootVendorWrite, %function FlashBootVendorWrite: .fnstart @@ -23260,56 +23562,57 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r6, r0 + mov r4, r0 mov r5, r1 - mov r4, r2 + mov r6, r2 bl rknand_device_lock - ldr r3, .L3808 - ldr r3, [r3, #504] + ldr r3, .L3680 + ldr r3, [r3, #500] cmp r3, #1 - bne .L3807 - mov r2, r4 - mov r0, r6 + bne .L3679 + mov r0, r4 + mov r2, r6 mov r1, r5 bl ftl_vendor_write mov r4, r0 - b .L3806 -.L3807: - mov r4, #-1 -.L3806: +.L3678: bl rknand_device_unlock mov r0, r4 pop {r4, r5, r6, pc} -.L3809: +.L3679: + mov r4, #-1 + b .L3678 +.L3681: .align 2 -.L3808: +.L3680: .word .LANCHOR1 .fnend .size FlashBootVendorWrite, .-FlashBootVendorWrite .align 1 .global ftl_sys_write + .syntax unified .thumb .thumb_func + .fpu softvfp .type ftl_sys_write, %function ftl_sys_write: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r4, r1 + @ link register save eliminated. mov r3, r2 + mov r2, r1 add r1, r0, #256 - mov r2, r4 movs r0, #16 - pop {r4, lr} b ftl_write .fnend .size ftl_sys_write, .-ftl_sys_write .align 1 .global StorageSysDataStore + .syntax unified .thumb .thumb_func + .fpu softvfp .type StorageSysDataStore, %function StorageSysDataStore: .fnstart @@ -23317,12 +23620,12 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 + mov r5, r1 + mov r4, r0 bl rknand_device_lock - mov r2, r4 + mov r2, r5 movs r1, #1 - mov r0, r5 + mov r0, r4 bl ftl_sys_write mov r4, r0 bl rknand_device_unlock @@ -23332,86 +23635,91 @@ .size StorageSysDataStore, .-StorageSysDataStore .align 1 .global FtlDumpSysBlock + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlDumpSysBlock, %function FtlDumpSysBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - lsl r8, r0, #10 - ldr r5, .L3820 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + lsl r9, r0, #10 + ldr r5, .L3691 .pad #28 sub sp, sp, #28 - ldr r4, .L3820+4 - mov r9, #0 - ldr r7, .L3820+8 - mov r6, r0 + mov r7, r0 + movs r6, #0 + ldr r4, .L3691+4 ldr r3, [r5, #3316] - str r3, [r4, #1256] + ldr r8, .L3691+12 + ldr fp, .L3691+16 + add r10, r4, #1256 + str r3, [r4, #1264] ldr r3, [r5, #3340] - str r3, [r4, #1260] -.L3813: - ldrh r2, [r7, #2390] - sxth r3, r9 + str r3, [r4, #1268] +.L3685: + ldrh r2, [r8, #2392] + sxth r3, r6 cmp r3, r2 - bge .L3819 - movs r1, #1 - ldr r0, .L3820+12 - orr r3, r3, r8 - str r3, [r4, #1252] - mov r2, r1 - bl FlashReadPages - ldr r3, [r4, #1260] - ldr r0, .L3820+16 - mov r1, r6 - ldr r2, [r3] - str r2, [sp] - ldr r2, [r3, #4] - str r2, [sp, #4] - ldr r2, [r3, #8] - str r2, [sp, #8] - ldr r3, [r3, #12] - ldr r2, [r4, #1248] - str r3, [sp, #12] - ldr r3, [r4, #1256] - ldr r3, [r3] - str r3, [sp, #16] - ldr r3, [r4, #1252] - bl printk - ldr r3, [r4, #1260] - ldr r3, [r3] - adds r3, r3, #1 - beq .L3814 - ldr r0, .L3820+20 - movs r2, #4 - ldr r1, [r5, #3316] - mov r3, #768 - bl rknand_print_hex -.L3814: - add r9, r9, #1 - b .L3813 -.L3819: + blt .L3687 add sp, sp, #28 @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L3821: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3687: + movs r2, #1 + orr r3, r3, r9 + mov r1, r2 + mov r0, r10 + str r3, [r4, #1260] + bl FlashReadPages + ldr r2, [r4, #1264] + mov r1, r7 + ldr r3, [r4, #1268] + mov r0, fp + 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, #1256] + str r3, [sp] + ldr r3, [r4, #1260] + bl printk + ldr r3, [r4, #1268] + ldr r3, [r3] + adds r3, r3, #1 + beq .L3686 + mov r3, #768 + movs r2, #4 + ldr r1, [r5, #3316] + ldr r0, .L3691+8 + bl rknand_print_hex +.L3686: + adds r6, r6, #1 + b .L3685 +.L3692: .align 2 -.L3820: +.L3691: .word .LANCHOR2 .word .LANCHOR4 - .word .LANCHOR0 - .word .LANCHOR4+1248 - .word .LC167 .word .LC168 + .word .LANCHOR0 + .word .LC167 .fnend .size FtlDumpSysBlock, .-FtlDumpSysBlock .align 1 .global dump_map_info + .syntax unified .thumb .thumb_func + .fpu softvfp .type dump_map_info, %function dump_map_info: .fnstart @@ -23421,282 +23729,286 @@ .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #52 sub sp, sp, #52 - ldr r4, .L3840 - addw fp, r4, #2348 - ldrh r7, [r4, #2328] - mov r9, r4 -.L3823: - ldrh r3, [r4, #2330] - ldr r6, .L3840+4 + ldr r4, .L3708 + ldr r5, .L3708+4 + ldrh r7, [r4, #2332] + addw fp, r4, #2350 +.L3694: + ldrh r3, [r4, #2334] cmp r3, r7 - bls .L3837 - ldr r1, [r6, #1148] + bhi .L3702 + ldr r6, .L3708+8 + mov r9, #0 + ldr fp, .L3708+24 + add r10, r6, #1256 +.L3703: + ldrh r3, [r5, #3452] + sxth r7, r9 + cmp r7, r3 + bge .L3706 + lsls r7, r7, #1 mov r8, #0 - ldrh ip, [r9, #2320] - mov r10, #36 - ldr r2, [r6, #3304] - mov r5, r8 - str r1, [sp, #24] - ldr r3, [r6, #1144] - ldrh r1, [r9, #2400] - str r1, [sp, #28] -.L3833: - uxth r1, r8 - cmp r1, ip - bcs .L3838 + b .L3707 +.L3697: mov r1, r7 ldrb r0, [fp, r8] @ zero_extendqisi2 str r3, [sp, #44] str r2, [sp, #40] - str ip, [sp, #36] bl V2P_block - str r0, [sp, #32] + str r0, [sp, #36] bl FtlBbmIsBadBlock - ldr r1, [sp, #32] - ldr ip, [sp, #36] ldr r2, [sp, #40] ldr r3, [sp, #44] - cbnz r0, .L3824 - mla r0, r10, r5, r2 + cbnz r0, .L3695 + ldr r1, [sp, #36] + mla r0, r10, r6, r9 lsls r1, r1, #10 + str r3, [r0, #8] str r1, [r0, #4] - ldr r1, [sp, #28] - muls r1, r5, r1 - add r5, r5, #1 + ldr r1, [sp, #32] + muls r1, r6, r1 it mi addmi r1, r1, #3 - bic lr, r1, #3 - ldr r1, [sp, #24] - uxth r5, r5 - str r3, [r0, #8] - add r1, r1, lr + adds r6, r6, #1 + bic ip, r1, #3 + ldr r1, [sp, #28] + uxth r6, r6 + add r1, r1, ip str r1, [r0, #12] -.L3824: +.L3695: add r8, r8, #1 - b .L3833 -.L3838: - cbz r5, .L3828 - ldr r0, [r6, #3304] - mov r1, r5 - movs r2, #1 - mov r8, #0 - bl FlashReadPages - mov r10, #36 -.L3829: - uxth r3, r8 - cmp r3, r5 - bcs .L3828 - ldr r3, [r6, #3304] - ldr r0, .L3840+8 - mla r3, r10, r8, r3 - add r8, r8, #1 - adds r2, r3, #4 - ldmia r2, {r2, r3, lr} - 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, [r3] - str r1, [sp, #12] - ubfx r1, r2, #10, #16 - ldr r3, [r3, #4] - str r3, [sp, #16] - ldr r3, [lr] - bl printk - b .L3829 -.L3828: +.L3704: + uxth r1, r8 + cmp r2, r1 + bhi .L3697 + cbnz r6, .L3698 +.L3701: adds r7, r7, #1 uxth r7, r7 - b .L3823 -.L3837: - ldr r7, .L3840+12 + b .L3694 +.L3698: + ldr r10, .L3708+28 + mov r0, r9 mov r8, #0 -.L3832: - ldrh r2, [r6, #3452] - sxth r3, r8 - ldr r5, .L3840+4 - cmp r3, r2 - bge .L3835 - lsls r5, r3, #1 - mov r9, #0 -.L3836: - ldrh r2, [r4, #2390] - sxth r3, r9 - add r9, r9, #1 - cmp r3, r2 - bge .L3839 - ldr r2, [r6, #3368] - movs r1, #1 - ldr r0, .L3840+16 - ldrh r2, [r2, r5] - orr r3, r3, r2, lsl #10 - mov r2, r1 - str r3, [r7, #1252] + mov r9, #36 + movs r2, #1 + mov r1, r6 bl FlashReadPages - ldr r3, [r7, #1260] - ldr r1, [r6, #3368] - ldr r2, [r7, #1256] - ldr r0, [r3] - ldrh r1, [r1, r5] - str r0, [sp] - ldr r0, [r3, #4] - str r0, [sp, #4] - ldr r0, [r3, #8] - str r0, [sp, #8] - ldr r3, [r3, #12] - ldr r0, .L3840+20 - str r3, [sp, #12] - ldr r3, [r2] - str r3, [sp, #16] - ldr r3, [r2, #4] - str r3, [sp, #20] - ldr r2, [r7, #1248] - ldr r3, [r7, #1252] - bl printk - b .L3836 -.L3839: +.L3699: + uxth r3, r8 + cmp r6, r3 + bls .L3701 + ldr r3, [r5, #3304] + mla r3, r9, r8, r3 add r8, r8, #1 - b .L3832 -.L3835: + ldr r1, [r3, #12] + ldr r2, [r3, #4] + ldr r3, [r3, #8] + ldr r0, [r3, #4] + str r0, [sp, #16] + mov r0, r10 + ldr r3, [r3] + str r3, [sp, #12] + 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 .L3699 +.L3702: + ldr r1, [r5, #1148] + mov r8, #0 + ldrh r2, [r4, #2324] + mov r6, r8 + ldr r9, [r5, #3304] + mov r10, #36 + str r1, [sp, #28] + ldrh r1, [r4, #2402] + ldr r3, [r5, #1144] + str r1, [sp, #32] + b .L3704 +.L3705: + ldr r2, [r5, #3368] + mov r0, r10 + ldrh r2, [r2, r7] + orr r3, r3, r2, lsl #10 + movs r2, #1 + mov r1, r2 + str r3, [r6, #1260] + bl FlashReadPages + ldr r2, [r6, #1264] ldr r1, [r5, #3368] + ldr r3, [r6, #1268] + ldr r0, [r2, #4] + ldrh r1, [r1, r7] + str r0, [sp, #20] + mov r0, fp + 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] + str r3, [sp] + ldr r3, [r6, #1260] + ldr r2, [r6, #1256] + bl printk +.L3707: + ldrh r2, [r4, #2392] + sxth r3, r8 + add r8, r8, #1 + cmp r3, r2 + blt .L3705 + add r9, r9, #1 + b .L3703 +.L3706: + ldr r3, [r4, #2420] movs r2, #2 - ldr r3, [r4, #2416] - ldr r0, .L3840+24 + ldr r1, [r5, #3368] + ldr r0, .L3708+12 bl rknand_print_hex + ldrh r3, [r4, #2428] + movs r2, #4 ldr r1, [r5, #3388] - ldrh r3, [r4, #2424] - movs r2, #4 - ldr r0, .L3840+28 + ldr r0, .L3708+16 bl rknand_print_hex - ldr r0, .L3840+32 - ldr r1, [r5, #3392] + ldrh r3, [r4, #2428] movs r2, #4 - ldrh r3, [r4, #2424] + ldr r1, [r5, #3392] + ldr r0, .L3708+20 add sp, sp, #52 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} b rknand_print_hex -.L3841: +.L3709: .align 2 -.L3840: +.L3708: .word .LANCHOR0 .word .LANCHOR2 - .word .LC169 .word .LANCHOR4 - .word .LANCHOR4+1248 - .word .LC113 .word .LC170 .word .LC171 .word .LC172 + .word .LC113 + .word .LC169 .fnend .size dump_map_info, .-dump_map_info .align 1 .global flash_boot_enter_slc_mode + .syntax unified .thumb .thumb_func + .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, .L3844 - ldr r2, [r3, #2264] - ldr r3, .L3844+4 + ldr r3, .L3712 + ldr r2, [r3, #2268] + ldr r3, .L3712+4 cmp r2, r3 - bne .L3842 + bne .L3710 b flash_enter_slc_mode -.L3842: +.L3710: bx lr -.L3845: +.L3713: .align 2 -.L3844: +.L3712: .word .LANCHOR0 .word 1446522928 .fnend .size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode .align 1 .global flash_boot_exit_slc_mode + .syntax unified .thumb .thumb_func + .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, .L3848 - ldr r2, [r3, #2264] - ldr r3, .L3848+4 + ldr r3, .L3716 + ldr r2, [r3, #2268] + ldr r3, .L3716+4 cmp r2, r3 - bne .L3846 + bne .L3714 b flash_exit_slc_mode -.L3846: +.L3714: bx lr -.L3849: +.L3717: .align 2 -.L3848: +.L3716: .word .LANCHOR0 .word 1446522928 .fnend .size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode .align 1 .global write_idblock + .syntax unified .thumb .thumb_func + .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 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, .L3899 - .pad #132 - sub sp, sp, #132 + mov r7, r0 + ldr r4, .L3766 + .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 r9, r1 + mov r5, r2 + ldr r3, [r4, #48] + ldr r8, [r4, #40] + ldrb r6, [r3, #9] @ zero_extendqisi2 bl ftl_malloc - str r0, [sp, #12] + str r0, [sp, #8] cmp r0, #0 - beq .L3877 - addw r2, r8, #511 - lsr r10, r2, #9 - cmp r10, #8 - bls .L3875 - cmp r10, #500 - bhi .L3877 - b .L3852 -.L3875: - mov r10, #8 -.L3852: - ldr r2, [fp] - ldr r3, .L3899+4 + beq .L3745 + addw r7, r7, #511 + lsr fp, r7, #9 + cmp fp, #8 + bls .L3743 + cmp fp, #500 + bhi .L3745 +.L3720: + ldr r2, [r9] + ldr r3, .L3766+4 cmp r2, r3 - bne .L3877 - smulbb r3, r5, r4 - uxth r3, r3 - str r3, [sp, #16] + bne .L3745 + smulbb r6, r6, r8 + uxth r3, r6 subs r0, r3, #1 mov r1, r3 - add r0, r0, r10 + add r0, r0, fp + str r3, [sp, #12] bl __aeabi_uidiv + str r0, [sp, #32] + add r0, r9, #254976 + add r0, r0, #512 movs r3, #0 movw r2, #63871 - str r0, [sp, #40] - add r0, fp, #254976 - add r0, r0, #512 -.L3856: +.L3724: ldr r1, [r0, #-4]! - cbnz r1, .L3853 - ldr r1, [fp, r3, lsl #2] + cmp r1, #0 + bne .L3721 + ldr r1, [r9, r3, lsl #2] adds r3, r3, #1 cmp r3, #4096 add r2, r2, #-1 @@ -23704,491 +24016,478 @@ movhi r3, #0 cmp r2, #4096 str r1, [r0, #512] - bne .L3856 - b .L3855 -.L3853: - ldr r0, .L3899+8 - bl printk -.L3855: + bne .L3724 +.L3723: movs r3, #5 - ldr r0, .L3899+12 - mov r1, r6 + mov r1, r5 movs r2, #4 + ldr r0, .L3766+8 bl rknand_print_hex - ldr r1, [fp, #512] - ldrb r2, [r7, #1] @ zero_extendqisi2 - subs r4, r6, #4 - ldr r0, .L3899+16 + ldrb r2, [r4, #37] @ zero_extendqisi2 + subs r5, r5, #4 + ldr r1, [r9, #512] + ldr r0, .L3766+12 bl printk - ldr r2, .L3899+20 - ldrh r3, [r7, #142] - mov r1, r10 - ldr r0, .L3899+24 - ldr r2, [r2, #1204] - ldr r5, .L3899 + ldr r2, .L3766+16 + mov r1, fp + ldrh r3, [r4, #150] + ldr r0, .L3766+20 + ldr r2, [r2, #1212] str r2, [sp] - mov r2, r10 + mov r2, fp bl printk - ldrb r3, [r7, #1] @ zero_extendqisi2 - ldr r2, [fp, #512] + ldrb r3, [r4, #37] @ zero_extendqisi2 + ldr r2, [r9, #512] + ldr r4, .L3766 cmp r2, r3 it hi - strhi r3, [fp, #512] - lsl r3, r10, #7 - str r3, [sp, #44] + strhi r3, [r9, #512] + lsl r3, fp, #7 + str r3, [sp, #40] movs r3, #0 - str r3, [sp, #24] str r3, [sp, #20] -.L3873: - ldr r2, [r4, #4] - ldrb r3, [r5, #1] @ zero_extendqisi2 - ldr r7, .L3899 + str r3, [sp, #16] +.L3741: + ldr r2, [r5, #4] + ldrb r3, [r4, #37] @ zero_extendqisi2 cmp r2, r3 - bcs .L3858 - ldr r3, .L3899+20 - ldr r3, [r3, #1204] + bcs .L3726 + ldr r3, .L3766+16 + ldr r3, [r3, #1212] cmp r2, r3 - bcc .L3858 - ldr r3, [sp, #40] + bcc .L3726 + ldr r3, [sp, #32] cmp r3, #1 - bls .L3859 - ldr r3, [sp, #20] - cbz r3, .L3859 - ldr r3, [r4] + bls .L3727 + ldr r3, [sp, #16] + cbz r3, .L3727 + ldr r3, [r5] adds r3, r3, #1 cmp r2, r3 - beq .L3858 -.L3859: - movs r1, #0 + beq .L3726 +.L3727: mov r2, #512 - ldr r0, [sp, #12] + movs r1, #0 + ldr r0, [sp, #8] bl memset - ldr r6, [r4, #4] - mov r2, r10 - ldr r0, .L3899+28 - ldr r3, [sp, #16] + ldr r6, [r5, #4] + mov r2, fp + ldr r3, [sp, #12] + ldr r7, [r4, #40] + ldr r0, .L3766+24 muls r6, r3, r6 - ldr r3, [r7, #44] - ldr r7, [r7, #4] - ldrb r9, [r3, #9] @ zero_extendqisi2 + ldr r3, [r4, #48] + ldrb r10, [r3, #9] @ zero_extendqisi2 mov r1, r6 bl printk movs r0, #0 + smulbb r7, r7, r10 bl flash_boot_enter_slc_mode - mov r1, r9 + mov r1, r10 mov r0, r6 bl __aeabi_uidiv - smulbb r7, r7, r9 uxth r7, r7 + movs r2, #0 mov r1, r0 - movs r0, #0 - mov r2, r0 + mov r0, r2 bl FlashEraseBlock - cmp r10, r7 - bls .L3878 - movs r0, #0 - adds r1, r6, r7 + cmp r7, fp + bcs .L3746 + movs r2, #0 mov r8, #2 - mov r2, r0 + adds r1, r6, r7 + mov r0, r2 bl FlashEraseBlock - b .L3860 -.L3878: - mov r8, #1 -.L3860: +.L3728: movs 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 lsls 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 subs r3, r6, r1 - str fp, [sp, #28] - str r3, [sp, #32] -.L3861: - ldr r3, [sp, #48] - ldr r7, .L3899 - cmp r8, r3 - bcs .L3897 - add r3, r8, ip - ubfx r3, r3, #2, #16 - cbz r3, .L3862 - adds r2, r3, #1 - add r1, r5, r2, lsl #1 - ldrh r7, [r1, #148] - ldrb r1, [r5, #144] @ zero_extendqisi2 - cbz r1, .L3863 - ldr r1, [r5, #2264] - ldr r0, .L3899+32 - cmp r1, r0 - it eq - moveq r7, r2 -.L3863: - add r7, r7, #1073741824 - subs r7, r7, #1 - lsls r7, r7, #2 - str r7, [sp, #64] -.L3862: - movw r2, #61424 - str r2, [sp, #68] - add r2, r5, r3, lsl #1 - ldrh r7, [r2, #148] - ldrb r2, [r5, #144] @ zero_extendqisi2 - cbz r2, .L3864 - ldr r2, [r5, #2264] - ldr r1, .L3899+32 - cmp r2, r1 - it eq - moveq r7, r3 -.L3864: - ldr r3, [sp, #32] - add r8, r8, #4 - str ip, [sp, #56] - uxth r8, r8 - mla r2, r9, r7, r3 - ldr r3, .L3899 - ldrb r3, [r3, #2312] @ zero_extendqisi2 - str r2, [sp, #52] + str r1, [sp, #28] str r3, [sp, #36] - ldr r3, .L3899+20 - ldrb r0, [r3, #1210] @ zero_extendqisi2 - bl FlashBchSel + str r9, [sp, #24] +.L3729: + ldr r3, [sp, #44] + cmp r3, r8 + bhi .L3733 + mov r1, r6 + movs r3, #0 + mov r2, fp + ldr r0, .L3766+28 + bl printk + ldr r6, [r5, #4] + mov r2, fp + ldr r3, [sp, #12] + mov r8, #0 + ldr r1, [r4, #40] + ldr r0, .L3766+32 + muls r6, r3, r6 + ldr r3, [r4, #48] + ldrb r3, [r3, #9] @ zero_extendqisi2 + str r3, [sp, #24] + ldrh r3, [sp, #24] + smulbb r1, r1, r3 + uxth r7, r1 + mov r1, r6 + bl printk + mov r1, r7 + mov r0, r6 + bl __aeabi_uidivmod + subs r3, r6, r1 + ldr r10, [sp, #8] + str r3, [sp, #44] + ldr r3, [sp, #24] + str r1, [sp, #28] + muls r3, r1, r3 + ubfx r3, r3, #2, #2 +.L3734: + cmp r8, fp + bcc .L3736 + movs r3, #0 + mov r1, r6 + mov r2, fp + ldr r0, .L3766+36 + bl printk + ldr r0, [sp, #8] + mov r3, r9 + movs r6, #0 +.L3739: + mov r7, r0 + mov r8, r3 + ldr r1, [r7] + adds r0, r0, #4 + ldr r2, [r8] + adds r3, r3, #4 + cmp r1, r2 + beq .L3737 + mov r2, #512 + movs r1, #0 + ldr r0, [sp, #8] + bl memset + ldr r3, [r8] + ldr r1, [sp, #16] + ldr r0, .L3766+40 + str r3, [sp, #4] + ldr r3, [r7] + str r3, [sp] + mov r3, r6 + bic r6, r6, #255 + ldr r2, [r5, #4] + lsls r6, r6, #2 + bl printk + mov r3, #256 + movs r2, #4 + add r1, r9, r6 + ldr r0, .L3766+44 + bl rknand_print_hex + ldr r1, [sp, #8] + mov r3, #256 + movs r2, #4 + ldr r0, .L3766+48 + add r1, r1, r6 + bl rknand_print_hex movs r0, #0 bl flash_boot_enter_slc_mode - ldr r3, .L3899 - ldr r3, [r3, #44] - ldrb r1, [r3, #9] @ zero_extendqisi2 - ldr r2, [sp, #52] + ldr r1, [r5, #4] + movs r2, #0 + ldr r3, [sp, #12] mov r0, r2 - bl __aeabi_uidiv - add r3, sp, #64 - mov r1, r0 - ldr r2, [sp, #28] - movs r0, #0 - bl FlashProgPage + muls r1, r3, r1 + bl FlashEraseBlock + ldr r3, [sp, #32] + cmp r3, #1 + bls .L3738 + ldr r1, [r5, #4] + movs r2, #0 + ldr r3, [sp, #12] + mov r0, r2 + mla r1, r1, r3, r3 + bl FlashEraseBlock +.L3738: movs r0, #0 bl flash_boot_exit_slc_mode - ldr r0, [sp, #36] - bl FlashBchSel - mov r1, r9 - ldr r0, [sp, #32] - bl __aeabi_uidiv - adds r2, r7, #1 - uxth r2, r2 - mov r1, r0 - movs r0, #0 - bl FlashPageProgMsbFFData - ldr r3, [sp, #28] - ldr ip, [sp, #56] - add r3, r3, #2048 - str r3, [sp, #28] - b .L3861 -.L3900: + ldr r1, [r5, #4] + ldr r0, .L3766+52 + bl printk +.L3726: + ldr r3, [sp, #16] + adds r5, r5, #4 + adds r3, r3, #1 + cmp r3, #5 + str r3, [sp, #16] + bne .L3741 + ldr r0, [sp, #8] + bl ftl_free + ldr r3, [sp, #20] + clz r0, r3 + lsrs r0, r0, #5 + negs r0, r0 +.L3718: + add sp, sp, #124 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3743: + mov fp, #8 + b .L3720 +.L3721: + ldr r0, .L3766+56 + bl printk + b .L3723 +.L3746: + mov r8, #1 + b .L3728 +.L3767: .align 2 -.L3899: +.L3766: .word .LANCHOR0 .word -52655045 - .word .LC173 .word .LC174 .word .LC175 .word .LANCHOR4 .word .LC176 .word .LC177 - .word 1446522928 -.L3897: - mov r1, r6 - mov r2, r10 - movs r3, #0 - ldr r0, .L3901 - bl printk - ldr r6, [r4, #4] - ldr r0, .L3901+4 - mov r9, #0 - ldr r3, [sp, #16] - muls r6, r3, r6 - ldr r3, [r7, #44] - ldrb r3, [r3, #9] @ zero_extendqisi2 - mov r1, r6 - str r3, [sp, #28] - ldr r3, [r7, #4] - ldrh r2, [sp, #28] - smulbb r8, r3, r2 - mov r2, r10 - bl printk - mov r0, r6 - uxth r8, r8 - mov r1, r8 - bl __aeabi_uidivmod - subs r3, r6, r1 - str r3, [sp, #48] - ldr r3, [sp, #28] - str r1, [sp, #32] - mul ip, r3, r1 - ldr r3, [sp, #12] - ubfx ip, ip, #2, #2 - str r3, [sp, #36] -.L3866: - cmp r9, r10 - bcs .L3898 - ldr r3, [sp, #32] - rsb r8, ip, #4 - ldrb r1, [r5, #144] @ zero_extendqisi2 - add r3, r9, r3 - uxth r8, r8 - ubfx r3, r3, #2, #16 - add r2, r5, r3, lsl #1 - ldrh r2, [r2, #148] - cbz r1, .L3867 - ldr r1, [r5, #2264] - ldr r0, .L3901+8 - cmp r1, r0 - it eq - moveq r2, r3 -.L3867: - ldr r3, [sp, #48] - add r9, r9, r8 - ldr r1, [sp, #28] - 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, .L3901+12 - str r3, [sp, #60] - str r1, [sp, #56] - ldrb r0, [r2, #1210] @ zero_extendqisi2 - bl FlashBchSel - movs 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 - movs r0, #0 - ldr r2, [sp, #36] - mov r3, r0 - bl FlashReadPage - movs r0, #0 - bl flash_boot_exit_slc_mode - ldr ip, [sp, #52] - mov r0, ip - bl FlashBchSel - mov ip, #0 - ldr r3, [sp, #36] - add r3, r3, r8, lsl #9 - str r3, [sp, #36] - b .L3866 -.L3898: - mov r1, r6 - movs r3, #0 - ldr r0, .L3901+16 - mov r2, r10 - bl printk - movs r6, #0 - mov r3, fp - ldr r0, [sp, #12] -.L3872: - mov r8, r0 - mov r7, r3 - ldr r1, [r8] - adds r0, r0, #4 - ldr r2, [r7] - adds r3, r3, #4 - cmp r1, r2 - beq .L3869 - movs r1, #0 - mov r2, #512 - ldr r0, [sp, #12] - bl memset - ldr r3, [r8] - ldr r0, .L3901+20 - str r3, [sp] - ldr r3, [r7] - bic r7, r6, #255 - ldr r1, [sp, #20] - lsls r7, r7, #2 - str r3, [sp, #4] - mov r3, r6 - ldr r2, [r4, #4] - bl printk - ldr r0, .L3901+24 - add r1, fp, r7 - movs r2, #4 - mov r3, #256 - bl rknand_print_hex - movs r2, #4 - ldr r0, .L3901+28 - ldr r3, [sp, #12] - adds r1, r3, r7 - mov r3, #256 - bl rknand_print_hex - movs r0, #0 - bl flash_boot_enter_slc_mode - ldr r1, [r4, #4] - movs r0, #0 - mov r2, r0 - ldr r3, [sp, #16] - muls r1, r3, r1 - bl FlashEraseBlock - ldr r3, [sp, #40] - cmp r3, #1 - bls .L3870 - ldr r1, [r4, #4] - movs r0, #0 - ldr r3, [sp, #16] - mov r2, r0 - mla r1, r1, r3, r3 - bl FlashEraseBlock -.L3870: - movs r0, #0 - bl flash_boot_exit_slc_mode - ldr r0, .L3901+32 - ldr r1, [r4, #4] - bl printk - ldr r3, [sp, #44] - cmp r6, r3 - bcc .L3858 - b .L3871 -.L3869: - ldr r2, [sp, #44] - adds r6, r6, #1 - cmp r6, r2 - bne .L3872 -.L3871: - ldr r3, [sp, #24] - adds r3, r3, #1 - str r3, [sp, #24] -.L3858: - ldr r3, [sp, #20] - adds r4, r4, #4 - adds r3, r3, #1 - str r3, [sp, #20] - cmp r3, #5 - bne .L3873 - ldr r0, [sp, #12] - bl ftl_free - ldr r3, [sp, #24] - clz r0, r3 - lsrs r0, r0, #5 - negs r0, r0 - b .L3851 -.L3877: - mov r0, #-1 -.L3851: - add sp, sp, #132 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3902: - .align 2 -.L3901: .word .LC178 .word .LC179 - .word 1446522928 - .word .LANCHOR4 .word .LC180 .word .LC181 .word .LC182 .word .LC183 .word .LC184 + .word .LC173 +.L3733: + ldr r3, [sp, #28] + add r2, r3, r8 + lsrs r2, r2, #2 + beq .L3730 + ldrb r0, [r4, #152] @ zero_extendqisi2 + adds r1, r2, #1 + add r3, r4, r1, lsl #1 + ldrh r3, [r3, #156] + cbz r0, .L3731 + ldr r0, [r4, #2268] + ldr r7, .L3768 + cmp r0, r7 + it eq + moveq r3, r1 +.L3731: + add r3, r3, #1073741824 + subs r3, r3, #1 + lsls r3, r3, #2 + str r3, [sp, #56] +.L3730: + movw r3, #61424 + str r3, [sp, #60] + add r3, r4, r2, lsl #1 + ldrh r7, [r3, #156] + ldrb r3, [r4, #152] @ zero_extendqisi2 + cbz r3, .L3732 + ldr r3, [r4, #2268] + ldr r1, .L3768 + cmp r3, r1 + it eq + moveq r7, r2 +.L3732: + ldr r3, [sp, #36] + add r8, r8, #4 + ldr r2, .L3768+4 + uxth r8, r8 + mla r3, r7, r10, r3 + ldrb r0, [r2, #1218] @ zero_extendqisi2 + adds r7, r7, #1 + uxth r7, r7 + str r3, [sp, #52] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + str r3, [sp, #48] + bl FlashBchSel + movs 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 + movs r0, #0 + bl FlashProgPage + movs r0, #0 + bl flash_boot_exit_slc_mode + ldr r0, [sp, #48] + bl FlashBchSel + mov r1, r10 + ldr r0, [sp, #36] + bl __aeabi_uidiv + mov r2, r7 + mov r1, r0 + movs r0, #0 + bl FlashPageProgMsbFFData + ldr r3, [sp, #24] + add r3, r3, #2048 + str r3, [sp, #24] + b .L3729 +.L3736: + rsb r7, r3, #4 + ldrb r0, [r4, #152] @ zero_extendqisi2 + uxth r2, r7 + str r2, [sp, #36] + ldr r2, [sp, #28] + add r2, r2, r8 + lsrs r2, r2, #2 + add r1, r4, r2, lsl #1 + ldrh r1, [r1, #156] + cbz r0, .L3735 + ldr r0, [r4, #2268] + ldr r7, .L3768 + cmp r0, r7 + it eq + moveq r1, r2 +.L3735: + ldr r2, [sp, #44] + add r3, r3, r2 + ldr r2, [sp, #24] + mla r3, r1, r2, r3 + ldr r2, [r4, #48] + ldrb r1, [r2, #9] @ zero_extendqisi2 + ldr r2, .L3768+4 + str r3, [sp, #52] + ldrb r3, [r4, #2316] @ zero_extendqisi2 + ldrb r0, [r2, #1218] @ zero_extendqisi2 + str r1, [sp, #48] + mov r7, r3 + bl FlashBchSel + movs r0, #0 + bl flash_boot_enter_slc_mode + ldr r3, [sp, #52] + ldr r1, [sp, #48] + mov r0, r3 + bl __aeabi_uidiv + movs r3, #0 + mov r2, r10 + mov r1, r0 + mov r0, r3 + bl FlashReadPage + movs r0, #0 + bl flash_boot_exit_slc_mode + mov r0, r7 + bl FlashBchSel + ldr r3, [sp, #36] + add r8, r8, r3 + add r10, r10, r3, lsl #9 + uxth r8, r8 + movs r3, #0 + b .L3734 +.L3737: + ldr r2, [sp, #40] + adds r6, r6, #1 + cmp r2, r6 + bne .L3739 + ldr r3, [sp, #20] + adds r3, r3, #1 + str r3, [sp, #20] + b .L3726 +.L3745: + mov r0, #-1 + b .L3718 +.L3769: + .align 2 +.L3768: + .word 1446522928 + .word .LANCHOR4 .fnend .size write_idblock, .-write_idblock .align 1 .global write_loader_lba + .syntax unified .thumb .thumb_func + .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 - push {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, .L3925 - bne .L3904 + ldr r4, .L3793 + bne .L3771 ldr r2, [r2] - ldr r3, .L3925+4 + ldr r3, .L3793+4 cmp r2, r3 - bne .L3904 - mov r0, #256000 + bne .L3771 movs r3, #1 - strb r3, [r4, #1012] + mov r0, #256000 + strb r3, [r4, #1516] bl ftl_malloc - movs r1, #0 mov r2, #256000 - str r0, [r4, #1016] + movs r1, #0 + str r0, [r4, #1520] bl ftl_memset - str r5, [r4, #1020] -.L3904: + str r5, [r4, #1524] +.L3771: str r6, [sp] mov r3, r5 - ldr r0, .L3925+8 - ldr r1, [r4, #1016] ldr r2, [r8] + ldr r1, [r4, #1520] + ldr r0, .L3793+8 bl printk - ldrb r3, [r4, #1012] @ zero_extendqisi2 - ldr r9, .L3925 + ldrb r3, [r4, #1516] @ zero_extendqisi2 cmp r3, #0 - beq .L3903 + beq .L3770 sub r0, r5, #64 - ldr r7, [r9, #1016] + ldr r7, [r4, #1520] cmp r0, #500 - bcs .L3906 + bcs .L3773 rsb r2, r5, #564 - add r0, r7, r0, lsl #9 - cmp r2, r6 mov r1, r8 + cmp r2, r6 + add r0, r7, r0, lsl #9 it cs movcs r2, r6 lsls r2, r2, #9 bl ftl_memcpy - b .L3907 -.L3906: - cmp r5, #564 - bcs .L3915 -.L3907: - ldr r3, [r4, #1020] - cmp r3, r5 - beq .L3913 - ldr r2, .L3925 +.L3774: + ldr r3, [r4, #1524] + cmp r5, r3 + beq .L3783 movs r3, #0 + strb r3, [r4, #1516] mov r8, r3 - strb r3, [r2, #1012] - cbz r7, .L3914 + cbz r7, .L3784 mov r0, r7 bl ftl_free -.L3914: - str r8, [r4, #1016] -.L3913: - add r5, r5, r6 - str r5, [r4, #1020] - b .L3903 -.L3915: - ldr r3, .L3925+12 - ldr r0, [r9, #1020] - ldr r3, [r3, #44] +.L3784: + str r8, [r4, #1520] + b .L3783 +.L3773: + cmp r5, #564 + bcc .L3774 + ldr r3, .L3793+12 + ldr r0, [r4, #1524] + ldr r3, [r3, #48] subs r0, r0, #64 cmp r0, #500 + ldrb r3, [r3, #9] @ zero_extendqisi2 it cs movcs r0, #500 - ldrb r3, [r3, #9] @ zero_extendqisi2 cmp r3, #4 - beq .L3916 + beq .L3775 movs r3, #2 str r3, [sp, #8] movs r3, #3 @@ -24199,50 +24498,52 @@ str r3, [sp, #20] movs r3, #6 str r3, [sp, #24] - b .L3909 -.L3916: - movs r3, #0 -.L3908: - add r1, sp, #8 - lsls r2, r3, #1 - cmp r0, #256 - it ls - movls r2, r3 - str r2, [r1, r3, lsl #2] - adds r3, r3, #1 - cmp r3, #5 - bne .L3908 -.L3909: +.L3776: movw r3, #63872 -.L3912: +.L3782: ldr r2, [r7, r3, lsl #2] - cbz r2, .L3910 + cbz r2, .L3780 adds r3, r3, #128 lsls r0, r3, #2 - b .L3911 -.L3910: - subs r3, r3, #1 - cmp r3, #4096 - bne .L3912 - lsls r0, r0, #9 -.L3911: +.L3781: mov r1, r7 add r2, sp, #8 - bl write_idblock - ldr r0, [r4, #1016] movs r7, #0 - strb r7, [r4, #1012] + bl write_idblock + ldr r0, [r4, #1520] + strb r7, [r4, #1516] bl ftl_free - str r7, [r4, #1016] - b .L3913 -.L3903: - add sp, sp, #52 + str r7, [r4, #1520] +.L3783: + add r5, r5, r6 + str r5, [r4, #1524] +.L3770: + add sp, sp, #48 @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L3926: + pop {r4, r5, r6, r7, r8, pc} +.L3775: + movs r2, #0 + add r3, sp, #8 +.L3779: + cmp r0, #256 + itet hi + lslhi r1, r2, #1 + strls r2, [r3, r2, lsl #2] + strhi r1, [r3, r2, lsl #2] + adds r2, r2, #1 + cmp r2, #5 + bne .L3779 + b .L3776 +.L3780: + subs r3, r3, #1 + cmp r3, #4096 + bne .L3782 + lsls r0, r0, #9 + b .L3781 +.L3794: .align 2 -.L3925: - .word .LANCHOR5 +.L3793: + .word .LANCHOR4 .word -52655045 .word .LC185 .word .LANCHOR0 @@ -24250,8 +24551,10 @@ .size write_loader_lba, .-write_loader_lba .align 1 .global FtlWrite + .syntax unified .thumb .thumb_func + .fpu softvfp .type FtlWrite, %function FtlWrite: .fnstart @@ -24259,534 +24562,526 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r5, r3 + mov r7, r3 sub r3, r1, #64 - mov r7, r0 + mov r5, r0 cmp r3, #1984 mov r4, r1 mov r6, r2 - bcs .L3928 - cbnz r0, .L3928 - mov r0, r1 - mov r1, r2 - mov r2, r5 + bcs .L3796 + cbnz r0, .L3796 + mov r2, r7 + mov r1, r6 + mov r0, r4 bl write_loader_lba -.L3928: - mov r0, r7 - mov r1, r4 +.L3796: + mov r3, r7 mov r2, r6 - mov r3, r5 + mov r1, r4 + mov r0, r5 pop {r4, r5, r6, r7, r8, lr} b ftl_write .fnend .size FtlWrite, .-FtlWrite .align 1 .global rknand_sys_storage_ioctl + .syntax unified .thumb .thumb_func + .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, .L3988 + ldr r3, .L3856 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 .L3931 - bhi .L3932 + cmp r1, r3 + beq .L3799 + bhi .L3800 subw r3, r3, #2086 cmp r1, r3 - beq .L3933 - bhi .L3934 + beq .L3801 + bhi .L3802 subs r3, r3, #238 cmp r1, r3 - beq .L3935 + beq .L3803 adds r3, r3, #237 cmp r1, r3 - beq .L3936 - b .L3966 -.L3934: - ldr r3, .L3988+4 + beq .L3804 +.L3834: + mvn r4, #21 + b .L3797 +.L3802: + ldr r3, .L3856+4 cmp r1, r3 - beq .L3937 + beq .L3805 adds r3, r3, #1 cmp r1, r3 - beq .L3938 + beq .L3806 subs r3, r3, #124 cmp r1, r3 - bne .L3966 - b .L3986 -.L3932: - ldr r3, .L3988+8 - cmp r1, r3 - mov r6, r3 - beq .L3940 - bhi .L3941 - subw r3, r3, #2526 - cmp r1, r3 - beq .L3931 - adds r3, r3, #10 - cmp r1, r3 - beq .L3931 - b .L3966 -.L3941: - ldr r3, .L3988+12 - cmp r1, r3 - beq .L3940 - bcc .L3942 - adds r3, r3, #1 - cmp r1, r3 - beq .L3942 - b .L3966 -.L3936: - ldr r0, .L3988+16 + bne .L3834 + ldr r0, .L3856+8 bl printk + mov r2, #520 mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cbz r0, .L3943 -.L3949: - ldr r0, .L3988+20 - bl printk - b .L3983 -.L3943: - ldr r2, [sp] - ldr r3, .L3988+24 - cmp r2, r3 - beq .L3944 -.L3946: - mov r4, #-1 - b .L3945 -.L3944: - ldr r3, [sp, #4] - cmp r3, #512 - bhi .L3946 - ldr r4, .L3988+28 - mov r2, #512 - mov r0, sp - ldr r1, [r4, #1024] - bl memcpy - ldr r2, [r4, #1028] - ldr r3, .L3988+32 - cmp r2, r3 - beq .L3947 - movs r1, #0 - add r0, sp, #64 - movs r2, #128 - str r1, [sp, #8] - str r1, [sp, #12] - bl memset -.L3947: - movs r1, #0 - add r0, sp, #256 - mov r2, #256 - str r1, [sp, #16] - bl memset -.L3978: - mov r0, r5 - mov r1, sp - mov r2, #520 - bl rk_copy_to_user - cmp r0, #0 - bne .L3983 - b .L3982 -.L3933: - ldr r0, .L3988+36 - bl printk - mov r1, r5 - mov r2, #520 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L3949 + bne .L3817 ldr r2, [sp] - ldr r3, .L3988+24 + ldr r3, .L3856+12 cmp r2, r3 - bne .L3946 - ldr r3, [sp, #4] - cmp r3, #512 - bhi .L3946 - ldr r2, .L3988+28 - ldr r3, .L3988+32 - ldr r1, [r2, #1028] - cmp r1, r3 - bne .L3967 - ldr r3, [sp, #12] - subs r1, r3, #1 - cmp r1, #127 - bhi .L3968 - ldr r4, [r2, #1024] - add r1, sp, #64 - add r0, r4, #64 - str r3, [r4, #12] - ldr r2, [sp, #12] - bl memcpy - movs r0, #1 - mov r1, r4 - b .L3981 -.L3938: - ldr r0, .L3988+40 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L3949 - ldr r2, [sp] - ldr r3, .L3988+44 - cmp r2, r3 - bne .L3946 - ldr r3, [sp, #4] - cmp r3, #512 - bhi .L3946 - ldr r5, .L3988+28 - ldr r3, [r5, #1032] - cbnz r3, .L3950 -.L3953: - movs r0, #0 - b .L3930 -.L3950: - ldr r3, [r5, #1036] - ldr r2, .L3988+48 - ldr r1, [r3] - cmp r1, r2 - beq .L3951 - str r2, [r3] - mov r2, #504 - ldr r3, .L3988+28 - ldr r3, [r3, #1036] - str r2, [r3, #4] - movs r2, #0 - str r2, [r3, #8] - str r2, [r3, #12] -.L3951: - ldr r1, [r5, #1036] - movs r4, #0 - mov r0, r4 - str r4, [r1, #16] - bl StorageSysDataStore - ldr r3, [r5, #1024] - ldr r2, .L3988+24 - ldr r1, [r3] - cmp r1, r2 - it ne - strne r2, [r3] - ldr r6, [r5, #1024] - itt ne - movne r2, #504 - ldrne r3, .L3988+28 - add r0, r6, #64 - itt ne - ldrne r3, [r3, #1024] - strne r4, [r3, #8] - mov r4, #0 - it ne - strne r2, [r3, #4] - movs r2, #128 - mov r1, r4 - str r4, [r6, #12] - bl memset - movs r0, #1 - mov r1, r6 - bl StorageSysDataStore - str r4, [r5, #1032] - str r4, [r5, #1028] - b .L3945 -.L3937: - ldr r0, .L3988+52 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L3949 - ldr r2, [sp] - ldr r3, .L3988+56 - cmp r2, r3 - bne .L3946 - ldr r3, [sp, #4] - cmp r3, #512 - bhi .L3946 - ldr r5, .L3988+28 - ldr r3, [r5, #1032] - cmp r3, #1 - beq .L3953 - ldr r2, [r5, #1036] - ldr r3, .L3988+48 - ldr r1, [r2] - cmp r1, r3 - beq .L3954 - str r3, [r2] - mov r2, #504 - ldr r3, [r5, #1036] - str r2, [r3, #4] - movs r2, #0 - str r2, [r3, #8] - str r2, [r3, #12] -.L3954: - ldr r1, [r5, #1036] - movs r3, #1 - movs r0, #0 - str r3, [r1, #16] - bl StorageSysDataStore - ldr r3, [r5, #1024] - ldr r2, .L3988+24 - ldr r1, [r3] - cmp r1, r2 - beq .L3955 - str r2, [r3] - mov r2, #504 - ldr r3, .L3988+28 - ldr r3, [r3, #1024] - str r2, [r3, #4] - movs r2, #0 - str r2, [r3, #8] -.L3955: - ldr r6, [r5, #1024] - movs r4, #0 - movs r2, #128 - mov r1, r4 - add r0, r6, #64 - str r4, [r6, #12] - bl memset - movs r0, #1 - mov r1, r6 - bl StorageSysDataStore - movs r3, #1 - str r3, [r5, #1032] - b .L3945 -.L3986: - ldr r0, .L3988+60 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L3949 - ldr r2, [sp] - ldr r3, .L3988+64 - cmp r2, r3 - bne .L3946 + bne .L3814 ldr r2, [sp, #4] cmp r2, #512 - bhi .L3946 + bhi .L3814 + ldr r1, .L3856+16 +.L3854: add r0, sp, #8 - ldr r1, .L3988+68 - b .L3984 -.L3931: - ldr r0, .L3988+72 - cmp r4, r0 - mov r7, r0 - bne .L3957 - ldr r0, .L3988+76 - b .L3980 -.L3989: - .align 2 -.L3988: - .word 1074031656 - .word 1074029694 - .word 1074034192 - .word 1074034194 - .word .LC186 - .word .LC187 - .word 1263358532 - .word .LANCHOR5 - .word -1067903959 - .word .LC188 - .word .LC189 - .word 1112753220 - .word 1146313043 - .word .LC190 - .word 1112755781 - .word .LC191 - .word 1094995539 - .word .LANCHOR5+1040 - .word 1074031666 - .word .LC192 -.L3957: - ldr r3, .L3990 - cmp r4, r3 - ite eq - ldreq r0, .L3990+4 - ldrne r0, .L3990+8 -.L3980: + bl memcpy + b .L3848 +.L3800: + ldr r6, .L3856+20 + cmp r1, r6 + beq .L3808 + bhi .L3809 + ldr r3, .L3856+24 + cmp r1, r3 + beq .L3799 + adds r3, r3, #10 + cmp r1, r3 + bne .L3834 +.L3799: + ldr r7, .L3856+24 + cmp r4, r7 + bne .L3824 + ldr r0, .L3856+28 +.L3850: bl printk - mov r1, r5 mov r2, #520 + mov r1, r5 mov r0, sp bl rk_copy_from_user cmp r0, #0 - bne .L3949 + bne .L3817 ldr r2, [sp] - ldr r3, .L3990+12 + ldr r3, .L3856+32 cmp r2, r3 - bne .L3983 - ldr r3, .L3990 - ldr r6, .L3990+16 + bne .L3853 + ldr r3, .L3856+36 + ldr r6, .L3856+40 cmp r4, r3 - bne .L3960 - ldr r3, [r6, #1024] - mov r0, r5 - mov r1, sp + bne .L3827 + ldr r3, [r6, #1528] movs 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 - beq .L3930 - b .L3983 -.L3960: - ldr r3, [r6, #1552] - cmp r3, #10 - bhi .L3983 - ldr r1, [r6, #1024] - ldr r3, [sp, #4] - ldr r2, [r1, #24] - cmp r2, r3 - beq .L3961 - cbz r2, .L3961 - mov r1, r3 - ldr r0, .L3990+20 - bl printk - ldr r3, [r6, #1552] - adds r3, r3, #1 - str r3, [r6, #1552] -.L3983: - mvn r0, #13 - b .L3930 -.L3961: - movs r2, #0 - cmp r4, r7 - str r2, [r6, #1552] - mov r0, #1 - itet eq - moveq r3, r2 - movne r2, #1 - moveq r2, r3 - str r3, [r1, #24] - str r2, [r1, #20] - bl StorageSysDataStore - adds r0, r0, #1 - bne .L3982 - b .L3987 -.L3940: - ldr r0, .L3990+24 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L3949 - ldr r2, [sp] - ldr r3, .L3990+28 - cmp r2, r3 - bne .L3946 - ldr r2, [sp, #4] - cmp r2, #504 - bhi .L3946 - ldr r3, .L3990+16 - cmp r4, r6 - add r0, sp, #8 - ite eq - ldreq r1, [r3, #1556] - ldrne r1, [r3, #1560] - adds r1, r1, #8 -.L3984: - bl memcpy - b .L3978 -.L3942: - ldr r0, .L3990+32 - bl printk - mov r1, r5 - mov r2, #520 - mov r0, sp - bl rk_copy_from_user - cmp r0, #0 - bne .L3949 - ldr r2, [sp] - ldr r3, .L3990+28 - cmp r2, r3 - bne .L3946 - ldr r2, [sp, #4] - cmp r2, #504 - bhi .L3946 - ldr r3, .L3990+36 - adds r2, r2, #8 - cmp r4, r3 - ldr r4, .L3990+16 - bne .L3965 - mov r1, sp - ldr r0, [r4, #1556] - bl memcpy - movs r0, #2 - ldr r1, [r4, #1556] - b .L3981 -.L3965: - mov r1, sp - ldr r0, [r4, #1560] - bl memcpy - ldr r1, [r4, #1560] - movs r0, #3 -.L3981: - bl StorageSysDataStore - mov r4, r0 - b .L3945 -.L3935: - bl rknand_dev_flush -.L3982: + bne .L3853 +.L3818: movs r4, #0 - b .L3945 -.L3987: - mvn r4, #1 -.L3945: - ldr r0, .L3990+40 - mov r1, r4 - bl printk +.L3797: mov r0, r4 - b .L3930 -.L3966: - mvn r0, #21 - b .L3930 -.L3967: - mvn r0, #1 - b .L3930 -.L3968: - mvn r0, #2 -.L3930: add sp, sp, #524 @ sp needed pop {r4, r5, r6, r7, pc} -.L3991: +.L3809: + ldr r3, .L3856+44 + cmp r1, r3 + beq .L3808 + bcc .L3810 + adds r3, r3, #1 + cmp r1, r3 + bne .L3834 +.L3810: + ldr r0, .L3856+48 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cbnz r0, .L3817 + ldr r2, [sp] + ldr r3, .L3856+52 + cmp r2, r3 + bne .L3814 + ldr r2, [sp, #4] + cmp r2, #504 + bhi .L3814 + ldr r3, .L3856+56 + mov r1, sp + adds r2, r2, #8 + cmp r4, r3 + ldr r4, .L3856+40 + bne .L3833 + ldr r0, [r4, #2060] + bl memcpy + ldr r1, [r4, #2060] + movs r0, #2 + b .L3851 +.L3804: + ldr r0, .L3856+60 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cbz r0, .L3811 +.L3817: + ldr r0, .L3856+64 + bl printk +.L3853: + mvn r4, #13 + b .L3797 +.L3811: + ldr r2, [sp] + ldr r3, .L3856+68 + cmp r2, r3 + beq .L3812 +.L3814: + mov r4, #-1 +.L3813: + mov r1, r4 + ldr r0, .L3856+72 + bl printk + b .L3797 +.L3812: + ldr r3, [sp, #4] + cmp r3, #512 + bhi .L3814 + ldr r4, .L3856+40 + mov r2, #512 + mov r0, sp + ldr r1, [r4, #1528] + bl memcpy + ldr r2, [r4, #1532] + ldr r3, .L3856+76 + cmp r2, r3 + beq .L3815 + movs r1, #0 + movs r2, #128 + add r0, sp, #64 + str r1, [sp, #8] + str r1, [sp, #12] + bl memset +.L3815: + mov r2, #256 + movs r1, #0 + add r0, sp, r2 + str r1, [sp, #16] + bl memset +.L3848: + mov r2, #520 + mov r1, sp + mov r0, r5 + bl rk_copy_to_user + cmp r0, #0 + bne .L3853 +.L3852: + movs r4, #0 + b .L3813 +.L3801: + ldr r0, .L3856+80 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3817 + ldr r2, [sp] + ldr r3, .L3856+68 + cmp r2, r3 + bne .L3814 + ldr r3, [sp, #4] + cmp r3, #512 + bhi .L3814 + ldr r2, .L3856+40 + ldr r3, .L3856+76 + ldr r1, [r2, #1532] + cmp r1, r3 + bne .L3835 + ldr r3, [sp, #12] + subs r1, r3, #1 + cmp r1, #127 + bhi .L3836 + ldr r4, [r2, #1528] + add r1, sp, #64 + str r3, [r4, #12] + add r0, r4, #64 + ldr r2, [sp, #12] + bl memcpy + mov r1, r4 + movs r0, #1 +.L3851: + bl StorageSysDataStore + mov r4, r0 + b .L3813 +.L3806: + ldr r0, .L3856+84 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3817 + ldr r2, [sp] + ldr r3, .L3856+88 + cmp r2, r3 + bne .L3814 + ldr r3, [sp, #4] + cmp r3, #512 + bhi .L3814 + ldr r5, .L3856+40 + ldr r3, [r5, #1536] + cmp r3, #0 + beq .L3818 + ldr r3, [r5, #1540] + ldr r2, .L3856+92 + ldr r1, [r3] + cmp r1, r2 + beq .L3819 + str r2, [r3] + mov r2, #504 + ldr r3, [r5, #1540] + str r2, [r3, #4] + movs r2, #0 + str r2, [r3, #8] + str r2, [r3, #12] +.L3819: + ldr r1, [r5, #1540] + movs r4, #0 + mov r0, r4 + str r4, [r1, #16] + bl StorageSysDataStore + ldr r3, [r5, #1528] + ldr r2, .L3856+68 + ldr r1, [r3] + cmp r1, r2 + beq .L3820 + str r2, [r3] + mov r2, #504 + ldr r3, [r5, #1528] + str r2, [r3, #4] + str r4, [r3, #8] +.L3820: + ldr r6, [r5, #1528] + movs r4, #0 + movs r2, #128 + mov r1, r4 + str r4, [r6, #12] + add r0, r6, #64 + bl memset + mov r1, r6 + movs r0, #1 + bl StorageSysDataStore + str r4, [r5, #1536] + str r4, [r5, #1532] + b .L3813 +.L3857: .align 2 -.L3990: +.L3856: + .word 1074031656 + .word 1074029694 + .word .LC191 + .word 1094995539 + .word .LANCHOR4+1544 + .word 1074034192 + .word 1074031666 + .word .LC192 + .word 1280262987 + .word 1074031676 + .word .LANCHOR4 + .word 1074034194 + .word .LC197 + .word 1145980246 + .word 1074034193 + .word .LC186 + .word .LC187 + .word 1263358532 + .word .LC198 + .word -1067903959 + .word .LC188 + .word .LC189 + .word 1112753220 + .word 1146313043 +.L3805: + ldr r0, .L3858 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3817 + ldr r2, [sp] + ldr r3, .L3858+4 + cmp r2, r3 + bne .L3814 + ldr r3, [sp, #4] + cmp r3, #512 + bhi .L3814 + ldr r5, .L3858+8 + ldr r3, [r5, #1536] + cmp r3, #1 + beq .L3818 + ldr r2, [r5, #1540] + ldr r3, .L3858+12 + ldr r1, [r2] + cmp r1, r3 + beq .L3821 + str r3, [r2] + mov r2, #504 + ldr r3, [r5, #1540] + str r2, [r3, #4] + movs r2, #0 + str r2, [r3, #8] + str r2, [r3, #12] +.L3821: + ldr r1, [r5, #1540] + movs r3, #1 + movs r0, #0 + str r3, [r1, #16] + bl StorageSysDataStore + ldr r3, [r5, #1528] + ldr r2, .L3858+16 + ldr r1, [r3] + cmp r1, r2 + beq .L3822 + str r2, [r3] + mov r2, #504 + ldr r3, [r5, #1528] + str r2, [r3, #4] + movs r2, #0 + str r2, [r3, #8] +.L3822: + ldr r6, [r5, #1528] + movs r4, #0 + movs r2, #128 + mov r1, r4 + str r4, [r6, #12] + add r0, r6, #64 + bl memset + mov r1, r6 + movs r0, #1 + bl StorageSysDataStore + movs r3, #1 + str r3, [r5, #1536] + b .L3813 +.L3824: + ldr r3, .L3858+20 + cmp r4, r3 + ite eq + ldreq r0, .L3858+24 + ldrne r0, .L3858+28 + b .L3850 +.L3827: + ldr r3, [r6, #2056] + cmp r3, #10 + bhi .L3853 + ldr r3, [r6, #1528] + ldr r1, [sp, #4] + ldr r2, [r3, #24] + cmp r2, r1 + beq .L3828 + cbz r2, .L3828 + ldr r0, .L3858+32 + bl printk + ldr r3, [r6, #2056] + adds r3, r3, #1 + str r3, [r6, #2056] + b .L3853 +.L3828: + cmp r4, r7 + mov r2, #0 + str r2, [r6, #2056] + itt ne + movne r2, #1 + strne r1, [r3, #24] + mov r0, #1 + it eq + streq r2, [r3, #20] + mov r1, r3 + ite eq + streq r2, [r3, #24] + strne r2, [r3, #20] + bl StorageSysDataStore + adds r0, r0, #1 + bne .L3852 + mvn r4, #1 + b .L3813 +.L3808: + ldr r0, .L3858+36 + bl printk + mov r2, #520 + mov r1, r5 + mov r0, sp + bl rk_copy_from_user + cmp r0, #0 + bne .L3817 + ldr r2, [sp] + ldr r3, .L3858+40 + cmp r2, r3 + bne .L3814 + ldr r2, [sp, #4] + cmp r2, #504 + bhi .L3814 + ldr r3, .L3858+8 + cmp r4, r6 + ite eq + ldreq r1, [r3, #2060] + ldrne r1, [r3, #2064] + adds r1, r1, #8 + b .L3854 +.L3833: + ldr r0, [r4, #2064] + bl memcpy + ldr r1, [r4, #2064] + movs r0, #3 + b .L3851 +.L3803: + bl rknand_dev_flush + b .L3852 +.L3835: + mvn r4, #1 + b .L3797 +.L3836: + mvn r4, #2 + b .L3797 +.L3859: + .align 2 +.L3858: + .word .LC190 + .word 1112755781 + .word .LANCHOR4 + .word 1146313043 + .word 1263358532 .word 1074031676 .word .LC193 .word .LC194 - .word 1280262987 - .word .LANCHOR5 .word .LC195 .word .LC196 .word 1145980246 - .word .LC197 - .word 1074034193 - .word .LC198 .fnend .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 1 .global rk_ftl_storage_sys_init + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_storage_sys_init, %function rk_ftl_storage_sys_init: .fnstart @@ -24794,67 +25089,68 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - mov r2, #512 - ldr r4, .L4001 mov r3, #-1 + ldr r4, .L3869 movs r5, #0 - add r0, r4, #1040 - ldr r1, [r4, #996] - str r3, [r4, #1020] + mov r2, #512 + ldr r1, [r4, #1500] + add r0, r4, #1544 + str r3, [r4, #1524] + strb r5, [r4, #1516] add r3, r1, #512 - str r3, [r4, #1024] - str r1, [r4, #1036] + str r1, [r4, #1540] + str r3, [r4, #1528] add r3, r1, #1024 add r1, r1, #1536 - str r3, [r4, #1556] - strb r5, [r4, #1012] - str r5, [r4, #1016] - str r5, [r4, #1564] - str r1, [r4, #1560] + str r3, [r4, #2060] + str r5, [r4, #1520] + str r5, [r4, #2068] + str r1, [r4, #2064] bl ftl_memcpy - ldr r6, [r4, #1036] - str r5, [r4, #1028] - str r5, [r4, #1552] - ldr r3, [r6, #16] + ldr r6, [r4, #1540] + str r5, [r4, #1532] + str r5, [r4, #2056] ldr r7, [r6, #508] - str r3, [r4, #1032] - cbz r7, .L3993 - mov r0, r6 + ldr r3, [r6, #16] + str r3, [r4, #1536] + cbz r7, .L3861 mov r1, #508 + mov r0, r6 bl js_hash cmp r7, r0 - beq .L3993 + beq .L3861 str r5, [r6, #16] - ldr r0, .L4001+4 - str r5, [r4, #1032] + ldr r0, .L3869+4 + str r5, [r4, #1536] bl printk -.L3993: - ldr r3, [r4, #1032] - cbz r3, .L3994 - ldr r2, .L4001+8 - ldr r3, .L4001 - str r2, [r3, #1028] -.L3994: - ldr r1, [r4, #1556] +.L3861: + ldr r3, [r4, #1536] + cbz r3, .L3862 + ldr r3, .L3869+8 + str r3, [r4, #1532] +.L3862: + ldr r1, [r4, #2060] movs r0, #2 bl StorageSysDataLoad - ldr r1, [r4, #1560] + ldr r1, [r4, #2064] movs r0, #3 bl StorageSysDataLoad pop {r3, r4, r5, r6, r7, lr} b rknand_sys_storage_init -.L4002: +.L3870: .align 2 -.L4001: - .word .LANCHOR5 +.L3869: + .word .LANCHOR4 .word .LC199 .word -1067903959 .fnend .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init .align 1 .global StorageSysDataDeInit + .syntax unified .thumb .thumb_func + .fpu softvfp .type StorageSysDataDeInit, %function StorageSysDataDeInit: .fnstart @@ -24867,104 +25163,104 @@ .size StorageSysDataDeInit, .-StorageSysDataDeInit .align 1 .global rk_ftl_vendor_storage_init + .syntax unified .thumb .thumb_func + .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 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r0, #65536 + ldr r6, .L3880 bl ftl_malloc - ldr r6, .L4013 - str r0, [r6, #1568] + str r0, [r6, #2072] cmp r0, #0 - beq .L4010 + beq .L3878 + ldr r10, .L3880+4 mov r8, #0 - ldr r9, .L4013+8 - mov r10, r6 + ldr r9, .L3880+8 mov r4, r8 mov r7, r8 -.L4008: - lsls r0, r7, #7 +.L3876: + ldr r2, [r6, #2072] movs r1, #128 - ldr r2, [r6, #1568] + lsls r0, r7, #7 bl FlashBootVendorRead cmp r0, #0 - bne .L4006 - ldr r3, [r10, #1568] - ldr r0, .L4013+4 - add r2, r3, #65280 - adds r2, r2, #252 - ldr r1, [r3] - ldr r3, [r3, #4] - ldr r2, [r2] + bne .L3874 + ldr r1, [r6, #2072] + movw fp, #65532 + mov r0, r10 + ldr r3, [r1, #4] + ldr r2, [r1, fp] + ldr r1, [r1] bl printk - ldr r5, [r10, #1568] + ldr r5, [r6, #2072] ldr r3, [r5] cmp r3, r9 - bne .L4007 - add r3, r5, #65280 + bne .L3875 + ldr r3, [r5, fp] ldr r2, [r5, #4] - adds r3, r3, #252 - ldr r3, [r3] cmp r3, r2 - bne .L4007 - cmp r4, r3 - itt cc - movcc r8, r7 - movcc r4, r3 -.L4007: - cbnz r7, .L4012 - movs r7, #1 - b .L4008 -.L4012: - cbz r4, .L4009 - lsl r0, r8, #7 - movs r1, #128 + bne .L3875 + cmp r3, r4 + itt hi + movhi r8, r7 + movhi r4, r3 +.L3875: + adds r7, r7, #1 + cmp r7, #2 + bne .L3876 + cbz r4, .L3877 mov r2, r5 + movs r1, #128 + lsl r0, r8, #7 bl FlashBootVendorRead - cbnz r0, .L4006 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L4009: - mov r0, r5 - mov r1, r4 + cbnz r0, .L3874 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3877: mov r2, #65536 + mov r1, r4 + mov r0, r5 bl memset - ldr r3, .L4013+8 - str r7, [r5, #4] + movs r3, #1 + movw r2, #65532 + str r3, [r5, #4] mov r0, r4 - str r3, [r5] - movw r3, #65532 - str r7, [r5, r3] + str r9, [r5] + str r3, [r5, r2] movw r3, #64504 strh r4, [r5, #12] @ movhi strh r3, [r5, #14] @ movhi - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L4006: - ldr r0, [r6, #1568] + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3874: + ldr r0, [r6, #2072] bl kfree movs r3, #0 mov r0, #-1 - str r3, [r6, #1568] - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L4010: + str r3, [r6, #2072] + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3878: mvn r0, #11 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L4014: + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3881: .align 2 -.L4013: - .word .LANCHOR5 +.L3880: + .word .LANCHOR4 .word .LC200 .word 1380668996 .fnend .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init .align 1 .global rk_ftl_vendor_read + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_vendor_read, %function rk_ftl_vendor_read: .fnstart @@ -24972,46 +25268,50 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - ldr r3, .L4021 - ldr r5, [r3, #1568] - cbz r5, .L4020 - ldrh r7, [r5, #10] - movs r3, #0 -.L4017: - cmp r3, r7 - bcs .L4020 - add r6, r5, r3, lsl #3 - ldrh r4, [r6, #16] - cmp r4, r0 - bne .L4018 - ldrh r3, [r6, #20] + mov r7, r0 + ldr r3, .L3888 mov r0, r1 - cmp r2, r3 + ldr r5, [r3, #2072] + cbz r5, .L3887 + ldrh r6, [r5, #10] + movs r3, #0 +.L3884: + cmp r3, r6 + bcc .L3886 +.L3887: + mov r0, #-1 + pop {r3, r4, r5, r6, r7, pc} +.L3886: + add r1, r5, r3, lsl #3 + ldrh r4, [r1, #16] + cmp r4, r7 + bne .L3885 + ldrh r4, [r1, #20] + ldrh r1, [r1, #18] + cmp r4, r2 it cs - movcs r2, r3 - ldrh r3, [r6, #18] - mov r4, r2 - add r3, r3, #1024 - adds r1, r5, r3 + movcs r4, r2 + add r1, r1, #1024 + mov r2, r4 + add r1, r1, r5 bl memcpy mov r0, r4 pop {r3, r4, r5, r6, r7, pc} -.L4018: +.L3885: adds r3, r3, #1 - b .L4017 -.L4020: - mov r0, #-1 - pop {r3, r4, r5, r6, r7, pc} -.L4022: + b .L3884 +.L3889: .align 2 -.L4021: - .word .LANCHOR5 +.L3888: + .word .LANCHOR4 .fnend .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 1 .global rk_ftl_vendor_write + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_vendor_write, %function rk_ftl_vendor_write: .fnstart @@ -25019,119 +25319,89 @@ @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r2 - ldr r2, .L4045 + mov r8, r2 + ldr r2, .L3910 .pad #28 sub sp, sp, #28 - mov ip, r0 mov r3, r1 - ldr r4, [r2, #1568] + ldr r4, [r2, #2072] cmp r4, #0 - beq .L4038 - add r7, r9, #63 - ldrh r1, [r4, #8] + beq .L3905 ldrh r2, [r4, #10] - bic r7, r7, #63 - movs r6, #0 + add r6, r8, #63 + ldrh r1, [r4, #8] + bic r6, r6, #63 + movs r7, #0 str r1, [sp, #4] -.L4025: - cmp r6, r2 - bcs .L4043 - add r5, r4, r6, lsl #3 - ldrh r1, [r5, #16] - cmp r1, ip - bne .L4026 - ldrh r1, [r5, #20] - add fp, r4, #1024 - adds r1, r1, #63 - bic r1, r1, #63 - str r1, [sp, #8] - cmp r9, r1 - bls .L4027 +.L3892: + cmp r7, r2 + bcc .L3900 ldrh r1, [r4, #14] - cmp r1, r7 - bcc .L4038 - ldrh r8, [r5, #18] - subs r2, r2, #1 - str r2, [sp, #12] -.L4028: - ldr r2, [sp, #12] - adds r5, r5, #8 - cmp r6, r2 - bcs .L4044 - ldrh r2, [r5, #16] - add r0, fp, r8 - ldrh r1, [r5, #18] - adds r6, r6, #1 - strh r8, [r5, #10] @ movhi - strh r2, [r5, #8] @ movhi - add r1, r1, fp - ldrh r2, [r5, #20] - str r3, [sp, #20] - add r10, r2, #63 - str ip, [sp, #16] - bic r10, r10, #63 - strh r2, [r5, #12] @ movhi - add r8, r8, r10 - mov r2, r10 - bl memcpy - ldr r3, [sp, #20] - ldr ip, [sp, #16] - b .L4028 -.L4044: - add r6, r4, r6, lsl #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 r3, r3, r5 - subs r7, r3, r7 - strh r7, [r4, #14] @ movhi - b .L4042 -.L4027: - ldrh r0, [r5, #18] - mov r1, r3 - mov r2, r9 - add r0, r0, fp - bl memcpy - strh r9, [r5, #20] @ movhi - b .L4042 -.L4026: - adds r6, r6, #1 - b .L4025 -.L4043: - ldrh r1, [r4, #14] - cmp r1, r7 - bcc .L4038 + cmp r6, r1 + bhi .L3905 add r2, r4, r2, lsl #3 - uxth r7, r7 - subs r1, r1, r7 - strh ip, [r2, #16] @ movhi + uxth r6, r6 + strh r0, [r2, #16] @ movhi ldrh r0, [r4, #12] - strh r9, [r2, #20] @ movhi + strh r8, [r2, #20] @ movhi strh r0, [r2, #18] @ movhi - add r0, r0, r7 - strh r1, [r4, #14] @ movhi - mov r1, r3 + add r0, r0, r6 + subs r6, r1, r6 strh r0, [r4, #12] @ movhi + strh r6, [r4, #14] @ movhi + mov r1, r3 ldrh r0, [r2, #18] - mov r2, r9 + mov r2, r8 add r0, r0, #1024 add r0, r0, r4 bl memcpy ldrh r3, [r4, #10] adds r3, r3, #1 strh r3, [r4, #10] @ movhi -.L4042: + b .L3909 +.L3900: + add r5, r4, r7, lsl #3 + ldrh r1, [r5, #16] + cmp r1, r0 + str r1, [sp, #8] + bne .L3893 + ldrh r1, [r5, #20] + add fp, r4, #1024 + adds r1, r1, #63 + bic r1, r1, #63 + cmp r8, r1 + str r1, [sp, #12] + bls .L3894 + ldrh r1, [r4, #14] + cmp r6, r1 + bhi .L3905 + ldrh r10, [r5, #18] + subs r2, r2, #1 + str r2, [sp, #16] +.L3895: + ldr r2, [sp, #16] + adds r5, r5, #8 + cmp r7, r2 + bcc .L3896 + ldrh r2, [sp, #8] + add r7, r4, r7, lsl #3 + uxth r5, r10 + mov r1, r3 + strh r8, [r7, #20] @ movhi + uxtah r0, fp, r10 + strh r2, [r7, #16] @ movhi + mov r2, r8 + strh r5, [r7, #18] @ movhi + bl memcpy + uxth r3, r6 + ldrh r6, [r4, #14] + add r5, r5, r3 + subs r6, r6, r3 + ldr r3, [sp, #12] + strh r5, [r4, #12] @ movhi + add r6, r6, r3 + strh r6, [r4, #14] @ movhi +.L3909: ldr r3, [r4, #4] movw r2, #65532 movs r1, #128 @@ -25150,23 +25420,54 @@ lsls r0, r3, #7 bl FlashBootVendorWrite movs r0, #0 - b .L4024 -.L4038: - mov r0, #-1 -.L4024: +.L3890: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L4046: +.L3896: + ldrh r9, [r5, #20] + add r0, fp, r10 + ldrh r2, [r5, #16] + adds 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 + mov r2, r9 + add r1, r1, fp + str r3, [sp, #20] + add r10, r10, r9 + bl memcpy + ldr r3, [sp, #20] + b .L3895 +.L3894: + ldrh r0, [r5, #18] + mov r2, r8 + mov r1, r3 + add r0, r0, fp + bl memcpy + strh r8, [r5, #20] @ movhi + b .L3909 +.L3893: + adds r7, r7, #1 + b .L3892 +.L3905: + mov r0, #-1 + b .L3890 +.L3911: .align 2 -.L4045: - .word .LANCHOR5 +.L3910: + .word .LANCHOR4 .fnend .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 1 .global rk_ftl_vendor_storage_ioctl + .syntax unified .thumb .thumb_func + .fpu softvfp .type rk_ftl_vendor_storage_ioctl, %function rk_ftl_vendor_storage_ioctl: .fnstart @@ -25180,83 +25481,83 @@ bl ftl_malloc mov r4, r0 cmp r0, #0 - beq .L4056 - ldr r3, .L4063 + beq .L3920 + ldr r3, .L3927 cmp r6, r3 - beq .L4050 + beq .L3915 adds r3, r3, #1 cmp r6, r3 - beq .L4051 - b .L4062 -.L4050: - mov r1, r5 + beq .L3916 +.L3926: + mvn r5, #13 + b .L3914 +.L3915: movs r2, #8 + mov r1, r5 bl rk_copy_from_user cmp r0, #0 - bne .L4062 + bne .L3926 ldr r2, [r4] - ldr r3, .L4063+4 + ldr r3, .L3927+4 cmp r2, r3 - beq .L4053 -.L4054: + beq .L3918 +.L3919: mov r5, #-1 - b .L4049 -.L4053: - ldrh r0, [r4, #4] - add r1, r4, #8 +.L3914: + mov r0, r4 + bl kfree +.L3912: + mov r0, r5 + pop {r4, r5, r6, pc} +.L3918: ldrh r2, [r4, #6] + add r1, r4, #8 + ldrh r0, [r4, #4] bl rk_ftl_vendor_read adds r3, r0, #1 - beq .L4054 + beq .L3919 uxth r2, r0 strh r0, [r4, #6] @ movhi mov r1, r4 - mov r0, r5 adds r2, r2, #8 + mov r0, r5 bl rk_copy_to_user cmp r0, #0 - ite eq - moveq r5, #0 - mvnne r5, #13 - b .L4049 -.L4051: - mov r1, r5 + bne .L3926 +.L3922: + mov r5, r0 + b .L3914 +.L3916: movs r2, #8 + mov r1, r5 bl rk_copy_from_user - cbnz r0, .L4062 + cmp r0, #0 + bne .L3926 ldr r2, [r4] - ldr r3, .L4063+4 + ldr r3, .L3927+4 cmp r2, r3 - bne .L4054 + bne .L3919 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L4054 - mov r0, r4 - mov r1, r5 + bhi .L3919 adds r2, r2, #8 - bl rk_copy_from_user - cbnz r0, .L4062 - ldrh r0, [r4, #4] - add r1, r4, #8 - ldrh r2, [r4, #6] - bl rk_ftl_vendor_write - mov r5, r0 - b .L4049 -.L4062: - mvn r5, #13 -.L4049: + mov r1, r5 mov r0, r4 - bl kfree - b .L4048 -.L4056: + bl rk_copy_from_user + cmp r0, #0 + bne .L3926 + ldrh r2, [r4, #6] + add r1, r4, #8 + ldrh r0, [r4, #4] + bl rk_ftl_vendor_write + b .L3922 +.L3920: mov r5, #-1 -.L4048: - mov r0, r5 - pop {r4, r5, r6, pc} -.L4064: + b .L3912 +.L3928: .align 2 -.L4063: +.L3927: .word 1074034177 .word 1448232273 .fnend @@ -25270,6 +25571,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 @@ -25505,18 +25808,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: @@ -25546,7 +25842,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: @@ -25654,452 +25949,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: @@ -26279,7 +26155,6 @@ .byte 126 .byte 124 .byte 0 - .space 3 .type Toshiba15RefValue, %object .size Toshiba15RefValue, 95 Toshiba15RefValue: @@ -26378,7 +26253,6 @@ .byte 116 .byte 114 .byte 0 - .space 1 .type ToshibaRefValue, %object .size ToshibaRefValue, 8 ToshibaRefValue: @@ -28875,10 +28749,17 @@ .word 1 .bss .align 2 -.LANCHOR0 = . + 0 -.LANCHOR2 = . + 4344 -.LANCHOR4 = . + 8688 -.LANCHOR5 = . + 17376 + .set .LANCHOR0,. + 0 + .set .LANCHOR2,. + 4344 + .set .LANCHOR4,. + 8688 + .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: @@ -28897,10 +28778,6 @@ gNandRandomizer: .space 1 .space 3 - .type gNandChipMap, %object - .size gNandChipMap, 32 -gNandChipMap: - .space 32 .type gpNandParaInfo, %object .size gpNandParaInfo, 4 gpNandParaInfo: @@ -28909,6 +28786,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: @@ -28966,19 +28852,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: @@ -29100,7 +28977,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: @@ -29152,6 +29028,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 @@ -29300,10 +29177,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: @@ -29377,14 +29250,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: @@ -29666,6 +29539,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: @@ -29727,11 +29608,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: @@ -29748,11 +29629,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: @@ -29760,6 +29636,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 @@ -29863,6 +29740,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: @@ -29892,3 +29773,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