From 35de189e19ebff1e9725d0cdfee96712a7ea86e7 Mon Sep 17 00:00:00 2001 From: Yifeng Zhao Date: Wed, 22 May 2019 14:58:19 +0800 Subject: [PATCH] drivers: rk_nand: enable rk nand flash support Change-Id: I2ea7fe6218b32666b91fce54bc17f976feb7f4d2 Signed-off-by: Yifeng Zhao --- drivers/Kconfig | 3 + drivers/Makefile | 1 + drivers/rk_nand/rk_ftl_arm_v7.S | 42278 ++++++++++++------------ drivers/rk_nand/rk_ftl_arm_v7_thumb.S | 27187 ++++++++------- drivers/rk_nand/rk_ftl_arm_v8.S | 15433 +++++---- drivers/rk_nand/rk_ftlv5_arm64.S | 17491 +++++----- drivers/rk_nand/rk_nand_base.c | 7 +- drivers/rk_nand/rk_nand_blk.c | 17 +- drivers/rk_nand/rk_zftl_arm64.S | 18346 +++++----- 9 files changed, 63596 insertions(+), 57167 deletions(-) diff --git a/drivers/Kconfig b/drivers/Kconfig index 7a2dd7faafc5..ac0cb70196b3 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -221,5 +221,8 @@ source "drivers/slimbus/Kconfig" source "drivers/energy_model/Kconfig" +source "drivers/rk_nand/Kconfig" + source "drivers/rkflash/Kconfig" + endmenu diff --git a/drivers/Makefile b/drivers/Makefile index 25bc26f9fb79..fc714cafc39b 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -188,4 +188,5 @@ obj-$(CONFIG_MULTIPLEXER) += mux/ obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/ obj-$(CONFIG_SIOX) += siox/ obj-$(CONFIG_GNSS) += gnss/ +obj-$(CONFIG_RK_NAND) += rk_nand/ obj-$(CONFIG_RK_FLASH) += rkflash/ diff --git a/drivers/rk_nand/rk_ftl_arm_v7.S b/drivers/rk_nand/rk_ftl_arm_v7.S index 68804d63b8d2..1e6e554f3481 100644 --- a/drivers/rk_nand/rk_ftl_arm_v7.S +++ b/drivers/rk_nand/rk_ftl_arm_v7.S @@ -5,7 +5,7 @@ * 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: 2018-09-05 + * date: 2019-05-08 */ .arch armv7-a .fpu softvfp @@ -16,104 +16,46 @@ .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 4 - .eabi_attribute 18, 4 + .eabi_attribute 34, 1 + .eabi_attribute 18, 2 .file "rk_ftl_arm_v7.S" +#APP + .syntax unified .text .align 2 - .type FlashGetReadRetryDefault.part.26, %function -FlashGetReadRetryDefault.part.26: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r0, #33 - cmpne r0, #65 - stmfd sp!, {r3, lr} - .save {r3, lr} - beq .L2 - cmp r0, #66 - bne .L3 -.L2: - ldr r3, .L8 - mov r2, #4 - strb r0, [r3, #0] - b .L7 -.L3: - cmp r0, #34 - cmpne r0, #67 - bne .L5 - ldr r3, .L8 - mov r2, #5 - strb r0, [r3, #0] -.L7: - strb r2, [r3, #1] - add r0, r3, #4 - mov r2, #7 - ldr r1, .L8+4 - strb r2, [r3, #2] - mov r2, #45 - b .L6 -.L5: - cmp r0, #35 - cmpne r0, #68 - ldmnefd sp!, {r3, pc} - ldr r3, .L8 - mov r2, #5 - ldr r1, .L8+8 - strb r0, [r3, #0] - add r0, r3, #4 - strb r2, [r3, #1] - mov r2, #17 - strb r2, [r3, #2] - mov r2, #95 -.L6: - bl memcpy - ldmfd sp!, {r3, pc} -.L9: - .align 2 -.L8: - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR1+45 - .fnend - .size FlashGetReadRetryDefault.part.26, .-FlashGetReadRetryDefault.part.26 - .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L20 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldrb r3, [r3, #852] @ zero_extendqisi2 + ldr r3, .L11 + str lr, [sp, #-4]! + .save {lr} + ldrb r3, [r3] @ zero_extendqisi2 cmp r3, #0 - beq .L18 + beq .L4 ldrb r3, [r1, #1] @ zero_extendqisi2 ldrb ip, [r0, #1] @ zero_extendqisi2 cmp ip, r3 movne r3, #0 - bne .L18 - b .L19 -.L15: - ldrb r4, [r0, r3] @ zero_extendqisi2 + beq .L8 +.L4: + cmp r3, r2 + beq .L8 + ldrb lr, [r0, r3] @ zero_extendqisi2 ldrb ip, [r1, r3] @ zero_extendqisi2 add r3, r3, #1 - cmp r4, ip - beq .L18 + cmp lr, ip + beq .L4 mov r0, r3 - ldmfd sp!, {r4, pc} -.L18: - cmp r3, r2 - bne .L15 + ldr pc, [sp], #4 +.L8: mov r0, #0 - ldmfd sp!, {r4, pc} -.L19: - mov r0, #0 - ldmfd sp!, {r4, pc} -.L21: + ldr pc, [sp], #4 +.L12: .align 2 -.L20: +.L11: .word .LANCHOR0 .fnend .size FlashMemCmp8, .-FlashMemCmp8 @@ -125,9 +67,9 @@ FlashRsvdBlkChk: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L23 - ldrb r2, [r3, #853] @ zero_extendqisi2 - ldr r3, [r3, #856] + ldr r3, .L14 + ldrb r2, [r3, #1] @ zero_extendqisi2 + ldr r3, [r3, #4] mul r3, r3, r2 cmp r1, r3 movcs r2, #0 @@ -136,9 +78,9 @@ FlashRsvdBlkChk: movne r2, #0 eor r0, r2, #1 bx lr -.L24: +.L15: .align 2 -.L23: +.L14: .word .LANCHOR0 .fnend .size FlashRsvdBlkChk, .-FlashRsvdBlkChk @@ -149,25 +91,25 @@ FlashGetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - and r2, r1, #127 - ldr r3, .L27 + and r3, r1, #127 + ldr r2, .L25 stmfd sp!, {r4, lr} .save {r4, lr} - add r3, r3, r2, asl #1 - ldrh r4, [r3, #140] - ldr r3, .L27+4 - ldrb r3, [r3, #860] @ zero_extendqisi2 + mov r3, r3, asl #1 + ldrh r4, [r2, r3] + ldr r3, .L25+4 + ldrb r3, [r3, #8] @ zero_extendqisi2 cmp r3, #0 - beq .L26 + beq .L17 bl FlashRsvdBlkChk cmp r0, #0 orrne r4, r4, #-1073741824 -.L26: +.L17: mov r0, r4 ldmfd sp!, {r4, pc} -.L28: +.L26: .align 2 -.L27: +.L25: .word .LANCHOR1 .word .LANCHOR0 .fnend @@ -179,65 +121,87 @@ FlashSetRandomizer: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - and r2, r1, #127 - ldr r3, .L31 + and r3, r1, #127 + ldr r2, .L36 stmfd sp!, {r4, r5, r6, lr} .save {r4, r5, r6, lr} - add r3, r3, r2, asl #1 + mov r3, r3, asl #1 mov r6, r0 - ldrh r4, [r3, #140] - ldr r3, .L31+4 - ldrb r2, [r3, #860] @ zero_extendqisi2 - mov r5, r3 + ldrh r5, [r2, r3] + ldr r3, .L36+4 + ldrb r2, [r3, #8] @ zero_extendqisi2 + mov r4, r3 cmp r2, #0 - beq .L30 + beq .L28 bl FlashRsvdBlkChk cmp r0, #0 - orrne r4, r4, #-1073741824 -.L30: - add r5, r5, r6, asl #3 - ldr r3, [r5, #864] - str r4, [r3, #336] + orrne r5, r5, #-1073741824 +.L28: + add r4, r4, r6, asl #3 + ldr r3, [r4, #12] + str r5, [r3, #336] ldmfd sp!, {r4, r5, r6, pc} -.L32: +.L37: .align 2 -.L31: +.L36: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 + .global FlashBlockAlignInit + .type FlashBlockAlignInit, %function +FlashBlockAlignInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + cmp r0, #256 + ldr r3, .L43 + movhi r2, #512 + bhi .L42 + cmp r0, #128 + strls r0, [r3, #4] + bxls lr + mov r2, #256 +.L42: + str r2, [r3, #4] + bx lr +.L44: + .align 2 +.L43: + .word .LANCHOR0 + .fnend + .size FlashBlockAlignInit, .-FlashBlockAlignInit + .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L34 + @ link register save eliminated. + ldr ip, .L46 mov r2, r1, lsr #16 - stmfd sp!, {r4, lr} - .save {r4, lr} add ip, ip, r0, asl #3 - ldrb r3, [ip, #868] @ zero_extendqisi2 - ldr r4, [ip, #864] + ldr r3, [ip, #12] + ldrb ip, [ip, #16] @ zero_extendqisi2 + add r3, r3, ip, asl #8 mov ip, #0 - add r3, r3, #8 - add r3, r4, r3, asl #8 - str ip, [r3, #8] - str ip, [r3, #4] - str ip, [r3, #4] + str ip, [r3, #2056] + str ip, [r3, #2052] + str ip, [r3, #2052] uxtb ip, r1 - str ip, [r3, #4] + str ip, [r3, #2052] mov ip, r1, lsr #8 - str ip, [r3, #4] - str r2, [r3, #4] + str ip, [r3, #2052] + str r2, [r3, #2052] mov r2, #48 - str r2, [r3, #8] - ldmfd sp!, {r4, lr} + str r2, [r3, #2056] b FlashSetRandomizer -.L35: +.L47: .align 2 -.L34: +.L46: .word .LANCHOR0 .fnend .size FlashReadCmd, .-FlashReadCmd @@ -248,136 +212,80 @@ FlashReadDpDataOutCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L40 + ldr ip, .L53 stmfd sp!, {r4, lr} .save {r4, lr} - add ip, r2, r0, asl #3 - ldrb r2, [r2, #912] @ zero_extendqisi2 - ldrb r3, [ip, #868] @ zero_extendqisi2 - ldr r4, [ip, #864] - cmp r2, #1 - add r3, r3, #8 - mov r2, #0 - add r3, r4, r3, asl #8 - bne .L37 - mov ip, #6 - str ip, [r3, #8] - str r2, [r3, #4] - str r2, [r3, #4] - uxtb r2, r1 - str r2, [r3, #4] - mov r2, r1, lsr #8 - str r2, [r3, #4] - mov r2, r1, lsr #16 - b .L39 -.L37: - str r2, [r3, #8] - uxtb ip, r1 - str r2, [r3, #4] - str r2, [r3, #4] - str ip, [r3, #4] - mov ip, r1, lsr #8 - str ip, [r3, #4] + add r3, ip, r0, asl #3 + ldrb ip, [ip, #60] @ zero_extendqisi2 + uxtb r4, r1 + ldr r2, [r3, #12] + mov lr, r1, lsr #8 + ldrb r3, [r3, #16] @ zero_extendqisi2 + cmp ip, #1 mov ip, r1, lsr #16 - str ip, [r3, #4] + mov r3, r3, asl #8 + add r3, r2, r3 + bne .L49 + mov r2, #6 + str r2, [r3, #2056] + mov r2, #0 + str r2, [r3, #2052] + str r2, [r3, #2052] + str r4, [r3, #2052] + str lr, [r3, #2052] + str ip, [r3, #2052] + b .L52 +.L49: + mov r2, #0 + str r2, [r3, #2056] + str r2, [r3, #2052] + str r2, [r3, #2052] + str r4, [r3, #2052] + str lr, [r3, #2052] + str ip, [r3, #2052] mov ip, #5 - str ip, [r3, #8] - str r2, [r3, #4] -.L39: - str r2, [r3, #4] + str ip, [r3, #2056] + str r2, [r3, #2052] + str r2, [r3, #2052] +.L52: mov r2, #224 - str r2, [r3, #8] + str r2, [r3, #2056] ldmfd sp!, {r4, lr} b FlashSetRandomizer -.L41: +.L54: .align 2 -.L40: +.L53: .word .LANCHOR0 .fnend .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 - .global flash_enter_slc_mode - .type flash_enter_slc_mode, %function -flash_enter_slc_mode: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L44 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - bxeq lr - add r0, r3, r0, asl #3 - ldrb r3, [r0, #868] @ zero_extendqisi2 - ldr r2, [r0, #864] - add r3, r3, #8 - add r3, r2, r3, asl #8 - mov r2, #218 - str r2, [r3, #8] - bx lr -.L45: - .align 2 -.L44: - .word .LANCHOR0 - .fnend - .size flash_enter_slc_mode, .-flash_enter_slc_mode - .align 2 - .global flash_exit_slc_mode - .type flash_exit_slc_mode, %function -flash_exit_slc_mode: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L48 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - bxeq lr - add r0, r3, r0, asl #3 - ldrb r3, [r0, #868] @ zero_extendqisi2 - ldr r2, [r0, #864] - add r3, r3, #8 - add r3, r2, r3, asl #8 - mov r2, #223 - str r2, [r3, #8] - bx lr -.L49: - .align 2 -.L48: - .word .LANCHOR0 - .fnend - .size flash_exit_slc_mode, .-flash_exit_slc_mode - .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L51 + @ link register save eliminated. + ldr ip, .L56 mov r2, r1, lsr #16 - stmfd sp!, {r4, lr} - .save {r4, lr} add ip, ip, r0, asl #3 - ldrb r3, [ip, #868] @ zero_extendqisi2 - ldr r4, [ip, #864] + ldr r3, [ip, #12] + ldrb ip, [ip, #16] @ zero_extendqisi2 + add r3, r3, ip, asl #8 mov ip, #128 - add r3, r3, #8 - add r3, r4, r3, asl #8 - str ip, [r3, #8] + str ip, [r3, #2056] mov ip, #0 - str ip, [r3, #4] - str ip, [r3, #4] + str ip, [r3, #2052] + str ip, [r3, #2052] uxtb ip, r1 - str ip, [r3, #4] + str ip, [r3, #2052] mov ip, r1, lsr #8 - str ip, [r3, #4] - str r2, [r3, #4] - ldmfd sp!, {r4, lr} + str ip, [r3, #2052] + str r2, [r3, #2052] b FlashSetRandomizer -.L52: +.L57: .align 2 -.L51: +.L56: .word .LANCHOR0 .fnend .size FlashProgFirstCmd, .-FlashProgFirstCmd @@ -388,40 +296,42 @@ FlashEraseCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L55 + str lr, [sp, #-4]! + .save {lr} cmp r2, #0 - add r0, r3, r0, asl #3 - ldr ip, [r0, #864] - ldrb r0, [r0, #868] @ zero_extendqisi2 - add r0, r0, #8 - add r0, ip, r0, asl #8 - beq .L54 - ldr r3, [r3, #856] + ldr lr, .L64 + add r0, lr, r0, asl #3 + ldrb r3, [r0, #16] @ zero_extendqisi2 + ldr ip, [r0, #12] + mov r3, r3, asl #8 + beq .L59 + add r2, ip, r3 + mov r0, #96 + str r0, [r2, #2056] + uxtb r0, r1 + str r0, [r2, #2052] + mov r0, r1, lsr #8 + str r0, [r2, #2052] + mov r0, r1, lsr #16 + str r0, [r2, #2052] + ldr r2, [lr, #4] + add r1, r1, r2 +.L59: + add r3, ip, r3 mov r2, #96 - str r2, [r0, #8] + str r2, [r3, #2056] uxtb r2, r1 - str r2, [r0, #4] + str r2, [r3, #2052] mov r2, r1, lsr #8 - str r2, [r0, #4] - mov r2, r1, lsr #16 - add r1, r1, r3 - str r2, [r0, #4] -.L54: - mov r3, #96 - str r3, [r0, #8] - uxtb r3, r1 - str r3, [r0, #4] - mov r3, r1, lsr #8 mov r1, r1, lsr #16 - str r3, [r0, #4] - mov r3, #208 - str r1, [r0, #4] - str r3, [r0, #8] - bx lr -.L56: + str r2, [r3, #2052] + str r1, [r3, #2052] + mov r2, #208 + str r2, [r3, #2056] + ldr pc, [sp], #4 +.L65: .align 2 -.L55: +.L64: .word .LANCHOR0 .fnend .size FlashEraseCmd, .-FlashEraseCmd @@ -432,30 +342,29 @@ FlashProgDpSecondCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L58 + ldr ip, .L68 mov r2, r1, lsr #16 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - add r4, ip, r0, asl #3 - ldrb ip, [ip, #907] @ zero_extendqisi2 - ldrb r3, [r4, #868] @ zero_extendqisi2 - ldr r5, [r4, #864] - add r3, r3, #8 - add r3, r5, r3, asl #8 - str ip, [r3, #8] + str lr, [sp, #-4]! + .save {lr} + add lr, ip, r0, asl #3 + ldrb ip, [ip, #55] @ zero_extendqisi2 + ldr r3, [lr, #12] + ldrb lr, [lr, #16] @ zero_extendqisi2 + add r3, r3, lr, asl #8 + str ip, [r3, #2056] mov ip, #0 - str ip, [r3, #4] - str ip, [r3, #4] + str ip, [r3, #2052] + str ip, [r3, #2052] uxtb ip, r1 - str ip, [r3, #4] + str ip, [r3, #2052] mov ip, r1, lsr #8 - str ip, [r3, #4] - str r2, [r3, #4] - ldmfd sp!, {r4, r5, lr} + str ip, [r3, #2052] + str r2, [r3, #2052] + ldr lr, [sp], #4 b FlashSetRandomizer -.L59: +.L69: .align 2 -.L58: +.L68: .word .LANCHOR0 .fnend .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd @@ -467,18 +376,17 @@ FlashProgSecondCmd: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L61 - add r3, r3, r0, asl #3 - ldr r2, [r3, #864] - ldrb r3, [r3, #868] @ zero_extendqisi2 - add r3, r3, #8 - add r3, r2, r3, asl #8 + ldr r3, .L71 + add r0, r3, r0, asl #3 + ldrb r2, [r0, #16] @ zero_extendqisi2 + ldr r3, [r0, #12] + add r3, r3, r2, asl #8 mov r2, #16 - str r2, [r3, #8] + str r2, [r3, #2056] bx lr -.L62: +.L72: .align 2 -.L61: +.L71: .word .LANCHOR0 .fnend .size FlashProgSecondCmd, .-FlashProgSecondCmd @@ -490,51 +398,48 @@ FlashProgDpFirstCmd: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L64 - add r0, r3, r0, asl #3 - ldrb r3, [r3, #906] @ zero_extendqisi2 - ldrb r2, [r0, #868] @ zero_extendqisi2 - ldr r1, [r0, #864] - add r2, r2, #8 - add r2, r1, r2, asl #8 - str r3, [r2, #8] + ldr r2, .L74 + add r0, r2, r0, asl #3 + ldrb r2, [r2, #54] @ zero_extendqisi2 + ldrb r1, [r0, #16] @ zero_extendqisi2 + ldr r3, [r0, #12] + add r3, r3, r1, asl #8 + str r2, [r3, #2056] bx lr -.L65: +.L75: .align 2 -.L64: +.L74: .word .LANCHOR0 .fnend .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 - .global JSHash - .type JSHash, %function -JSHash: + .global js_hash + .type js_hash, %function +js_hash: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - mov r3, r0 - mov r2, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldr r0, .L69 - b .L67 -.L68: - mov ip, r0, asl #5 - ldrb r4, [r3, r2] @ zero_extendqisi2 - add ip, ip, r0, lsr #2 - add r2, r2, #1 - add ip, ip, r4 - eor r0, r0, ip -.L67: - cmp r2, r1 - bne .L68 - ldmfd sp!, {r4, pc} -.L70: + @ link register save eliminated. + ldr r3, .L80 + add r1, r0, r1 +.L77: + cmp r0, r1 + beq .L79 + mov r2, r3, asl #5 + ldrb ip, [r0], #1 @ zero_extendqisi2 + add r2, r2, r3, lsr #2 + add r2, r2, ip + eor r3, r3, r2 + b .L77 +.L79: + mov r0, r3 + bx lr +.L81: .align 2 -.L69: +.L80: .word 1204201446 .fnend - .size JSHash, .-JSHash + .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo .type FlashLoadIdbInfo, %function @@ -559,88 +464,6 @@ FlashPrintInfo: .fnend .size FlashPrintInfo, .-FlashPrintInfo .align 2 - .global FlashReadIdbData - .type FlashReadIdbData, %function -FlashReadIdbData: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - mov r2, #2048 - ldr r1, .L74 - bl memcpy - mov r0, #0 - ldmfd sp!, {r3, pc} -.L75: - .align 2 -.L74: - .word .LANCHOR0+932 - .fnend - .size FlashReadIdbData, .-FlashReadIdbData - .align 2 - .global FlashLoadPhyInfoInRam - .type FlashLoadPhyInfoInRam, %function -FlashLoadPhyInfoInRam: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r4, #0 - ldr r6, .L88 -.L80: - add r5, r6, r4, asl #5 - ldr r1, .L88+4 - add r0, r5, #1 - ldrb r2, [r6, r4, asl #5] @ zero_extendqisi2 - bl FlashMemCmp8 - subs r1, r0, #0 - bne .L77 - cmp r5, #0 - ldrneb r2, [r5, #22] @ zero_extendqisi2 - ldrne r3, .L88+8 - bne .L82 - b .L87 -.L77: - add r4, r4, #1 - cmp r4, #77 - bne .L80 - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L82: - ldrb r0, [r3, r1, asl #5] @ zero_extendqisi2 - cmp r0, r2 - beq .L81 - add r1, r1, #1 - cmp r1, #4 - bne .L82 -.L81: - ldr r3, .L88+8 - mov r2, #32 - ldr r0, .L88+12 - add r1, r3, r1, asl #5 - bl memcpy - ldr r0, .L88+16 - mov r1, r5 - mov r2, #32 - bl memcpy - mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L87: - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L89: - .align 2 -.L88: - .word .LANCHOR1+396 - .word .LANCHOR0+2980 - .word .LANCHOR1+2860 - .word .LANCHOR0+896 - .word .LANCHOR1+2988 - .fnend - .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam - .align 2 .global ftl_flash_suspend .type ftl_flash_suspend, %function ftl_flash_suspend: @@ -648,28 +471,28 @@ ftl_flash_suspend: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L91 - ldr r2, [r3, #3012] - ldr r1, [r2, #0] - str r1, [r3, #3016] + ldr r3, .L85 + ldr r2, [r3, #76] + ldr r1, [r2] + str r1, [r3, #80] ldr r1, [r2, #4] - str r1, [r3, #3020] + str r1, [r3, #84] ldr r1, [r2, #8] - str r1, [r3, #3024] + str r1, [r3, #88] ldr r1, [r2, #12] - str r1, [r3, #3028] + str r1, [r3, #92] ldr r1, [r2, #304] - str r1, [r3, #3032] + str r1, [r3, #96] ldr r1, [r2, #308] - str r1, [r3, #3036] + str r1, [r3, #100] ldr r1, [r2, #336] ldr r2, [r2, #344] - str r1, [r3, #3040] - str r2, [r3, #3044] + str r1, [r3, #104] + str r2, [r3, #108] bx lr -.L92: +.L86: .align 2 -.L91: +.L85: .word .LANCHOR0 .fnend .size ftl_flash_suspend, .-ftl_flash_suspend @@ -679,69 +502,68 @@ ftl_flash_suspend: .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: .fnstart - @ args = 4, pretend = 0, frame = 0 + @ args = 4, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov fp, r3 - ldr r3, .L98 - mov r5, r1 - mov r6, r2 - movw r1, #3062 - movw r2, #3060 - ldr r8, [r0, #4] - ldrh r2, [r3, r2] - mov r4, r0 - ldrh sl, [r3, r1] - bic r8, r8, #-2147483648 - ldr r7, [r3, #856] - ubfx r9, r8, #10, #16 - ldrb r3, [r3, #852] @ zero_extendqisi2 - mov r8, r8, asl #22 - mul sl, sl, r2 - uxth r7, r7 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r5, r0 + ldr r0, .L93 + mov r8, r3 + ldr ip, [r5, #4] + mov r9, r1 + mov r7, r2 + ldrh r3, [r0, #126] + bic ip, ip, #-2147483648 + ldrh r4, [r0, #124] + ubfx r6, ip, #10, #16 + ldrh r10, [r0, #4] + mov fp, r0 + str ip, [sp, #4] + smulbb r4, r4, r3 + ldrb r3, [r0] @ zero_extendqisi2 + mov r0, r6 cmp r3, #1 - mov r0, r9 - moveq r7, r7, asl #1 - mov r8, r8, lsr #22 - uxtheq r7, r7 - uxth sl, sl - mov r1, sl + moveq r10, r10, asl #1 + uxth r4, r4 + uxtheq r10, r10 + mov r1, r4 bl __aeabi_uidiv - cmp r5, #1 - ldr r3, .L98 + cmp r9, #1 uxth r0, r0 - mls sl, sl, r0, r9 - uxth sl, sl - bne .L95 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - addeq r8, r3, r8, asl #1 - movweq r2, #3076 - ldreqh r8, [r8, r2] -.L95: - add r3, r3, r0, asl #2 - ldr r3, [r3, #3588] - mla r7, r7, sl, r3 - ldrb r3, [sp, #40] @ zero_extendqisi2 + ldr ip, [sp, #4] + smulbb r4, r0, r4 + rsb r6, r4, r6 + ubfx r4, ip, #0, #10 + uxth r6, r6 + bne .L89 + ldrb r3, [fp, #140] @ zero_extendqisi2 + cmp r3, #0 + ldreq r3, .L93 + addeq r4, r3, r4, asl #1 + ldreqh r4, [r4, #144] +.L89: + add ip, fp, r0, asl #2 + ldrb r3, [sp, #48] @ zero_extendqisi2 + ldr r1, [ip, #656] cmp r3, #1 - add r8, r7, r8 - str r8, [r6, #0] - str r0, [fp, #0] - bls .L97 - ldr r0, [r4, #4] - ldr r3, [r4, #40] - add r0, r0, #1024 - rsb r3, r3, r0 - rsbs r0, r3, #0 - adc r0, r0, r3 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L97: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L99: + mla r1, r10, r6, r1 + add r4, r1, r4 + str r4, [r7] + str r0, [r8] + movls r0, #0 + ldrhi r0, [r5, #4] + ldrhi r3, [r5, #40] + addhi r0, r0, #1024 + rsbhi r0, r3, r0 + clzhi r0, r0 + movhi r0, r0, lsr #5 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L94: .align 2 -.L98: +.L93: .word .LANCHOR0 .fnend .size LogAddr2PhyAddr, .-LogAddr2PhyAddr @@ -753,14 +575,14 @@ FlashScheduleEnSet: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L101 - ldr r2, [r3, #3620] - str r0, [r3, #3620] + ldr r3, .L96 + ldr r2, [r3, #688] + str r0, [r3, #688] mov r0, r2 bx lr -.L102: +.L97: .align 2 -.L101: +.L96: .word .LANCHOR0 .fnend .size FlashScheduleEnSet, .-FlashScheduleEnSet @@ -772,13 +594,13 @@ FlashGetPageSize: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L104 - ldr r3, [r3, #3624] + ldr r3, .L99 + ldr r3, [r3, #692] ldrb r0, [r3, #9] @ zero_extendqisi2 bx lr -.L105: +.L100: .align 2 -.L104: +.L99: .word .LANCHOR0 .fnend .size FlashGetPageSize, .-FlashGetPageSize @@ -801,16 +623,16 @@ NandcGetChipIf: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L108 - add r3, r3, r0, asl #3 - ldrb r0, [r3, #868] @ zero_extendqisi2 - ldr r2, [r3, #864] - add r0, r0, #8 - add r0, r2, r0, asl #8 + ldr r3, .L103 + add r0, r3, r0, asl #3 + ldrb r2, [r0, #16] @ zero_extendqisi2 + ldr r0, [r0, #12] + add r2, r2, #8 + add r0, r0, r2, asl #8 bx lr -.L109: +.L104: .align 2 -.L108: +.L103: .word .LANCHOR0 .fnend .size NandcGetChipIf, .-NandcGetChipIf @@ -822,16 +644,16 @@ NandcSetDdrPara: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L111 - mov r2, r0, asl #8 - orr r2, r2, r0, asl #16 - orr r2, r2, #1 - ldr r3, [r3, #3012] - str r2, [r3, #304] + ldr r3, .L106 + ldr r2, [r3, #76] + mov r3, r0, asl #8 + orr r0, r3, r0, asl #16 + orr r3, r0, #1 + str r3, [r2, #304] bx lr -.L112: +.L107: .align 2 -.L111: +.L106: .word .LANCHOR0 .fnend .size NandcSetDdrPara, .-NandcSetDdrPara @@ -843,14 +665,14 @@ NandcSetDdrDiv: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L114 + ldr r3, .L109 orr r0, r0, #16640 - ldr r3, [r3, #3012] + ldr r3, [r3, #76] str r0, [r3, #344] bx lr -.L115: +.L110: .align 2 -.L114: +.L109: .word .LANCHOR0 .fnend .size NandcSetDdrDiv, .-NandcSetDdrDiv @@ -862,17 +684,17 @@ NandcSetDdrMode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L118 + ldr r3, .L114 cmp r0, #0 - ldr r2, [r3, #3012] - ldr r3, [r2, #0] - bfc r3, #13, #1 + ldr r2, [r3, #76] + ldr r3, [r2] + bfieq r3, r0, #13, #1 orrne r3, r3, #253952 - str r3, [r2, #0] + str r3, [r2] bx lr -.L119: +.L115: .align 2 -.L118: +.L114: .word .LANCHOR0 .fnend .size NandcSetDdrMode, .-NandcSetDdrMode @@ -884,18 +706,18 @@ NandcSetMode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L124 + ldr r3, .L123 ands r1, r0, #6 - ldr r2, [r3, #3012] - ldr r3, [r2, #0] + ldr r2, [r3, #76] + ldr r3, [r2] bfieq r3, r1, #13, #1 - beq .L123 + beq .L119 orr r3, r3, #24576 - movw r1, #16641 + movw r1, #8322 bfc r3, #15, #1 str r1, [r2, #344] orr r3, r3, #196608 - ldr r1, .L124+4 + ldr r1, .L123+4 tst r0, #4 orrne r3, r3, #32768 str r1, [r2, #304] @@ -903,15 +725,15 @@ NandcSetMode: str r1, [r2, #308] mov r1, #39 str r1, [r2, #308] -.L123: - str r3, [r2, #0] +.L119: + str r3, [r2] mov r0, #0 bx lr -.L125: - .align 2 .L124: + .align 2 +.L123: .word .LANCHOR0 - .word 1710595 + .word 1052675 .fnend .size NandcSetMode, .-NandcSetMode .align 2 @@ -922,19 +744,19 @@ NandcFlashCs: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L127 - add r3, r3, r0, asl #3 - mov r0, #1 - ldr r2, [r3, #864] - ldrb r1, [r3, #868] @ zero_extendqisi2 - ldr r3, [r2, #0] - mov r1, r0, asl r1 - bfi r3, r1, #0, #8 - str r3, [r2, #0] + ldr r2, .L126 + add r0, r2, r0, asl #3 + mov r2, #1 + ldr r1, [r0, #12] + ldrb r0, [r0, #16] @ zero_extendqisi2 + ldr r3, [r1] + mov r2, r2, asl r0 + bfi r3, r2, #0, #8 + str r3, [r1] bx lr -.L128: - .align 2 .L127: + .align 2 +.L126: .word .LANCHOR0 .fnend .size NandcFlashCs, .-NandcFlashCs @@ -946,17 +768,17 @@ NandcFlashDeCs: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L130 - add r3, r3, r0, asl #3 - ldr r2, [r3, #864] - ldr r3, [r2, #0] + ldr r3, .L129 + add r0, r3, r0, asl #3 + ldr r2, [r0, #12] + ldr r3, [r2] bfc r3, #0, #8 bfc r3, #17, #1 - str r3, [r2, #0] + str r3, [r2] bx lr -.L131: - .align 2 .L130: + .align 2 +.L129: .word .LANCHOR0 .fnend .size NandcFlashDeCs, .-NandcFlashDeCs @@ -965,73 +787,327 @@ NandcFlashDeCs: .type NandcDelayns, %function NandcDelayns: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - .pad #8 - sub sp, sp, #8 - mov r0, r0, lsr #4 - str r0, [sp, #4] + stmfd sp!, {r3, lr} + .save {r3, lr} + add r0, r0, #996 + ldr r3, .L133 + add r0, r0, #3 + umull r0, r1, r0, r3 + ldr r3, .L133+4 + ldr r3, [r3, #8] + mov r0, r1, lsr #6 + blx r3 + mov r0, #0 + ldmfd sp!, {r3, pc} +.L134: + .align 2 .L133: - ldr r0, [sp, #4] - cmp r0, #0 - sub r3, r0, #1 - str r3, [sp, #4] - bne .L133 - add sp, sp, #8 - bx lr + .word 274877907 + .word arm_delay_ops .fnend .size NandcDelayns, .-NandcDelayns .align 2 + .global FlashReadStatus + .type FlashReadStatus, %function +FlashReadStatus: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r2, #112 + ldr r3, .L137 + add r0, r3, r0, asl #3 + ldrb r4, [r0, #16] @ zero_extendqisi2 + ldr r5, [r0, #12] + mov r0, #80 + add r3, r5, r4, asl #8 + add r4, r4, #8 + str r2, [r3, #2056] + bl NandcDelayns + ldr r0, [r5, r4, asl #8] + ldmfd sp!, {r3, r4, r5, pc} +.L138: + .align 2 +.L137: + .word .LANCHOR0 + .fnend + .size FlashReadStatus, .-FlashReadStatus + .align 2 + .global ToshibaSetRRPara + .type ToshibaSetRRPara, %function +ToshibaSetRRPara: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + add r8, r1, r1, asl #2 + ldr r9, .L149 + mov r5, r0 + ldr r7, .L149+4 + mov r6, r1 + add r10, r9, #256 + mov r4, #0 +.L140: + ldrb r3, [r7, #697] @ zero_extendqisi2 + cmp r4, r3 + bcs .L148 + mov r3, #85 + str r3, [r5, #8] + ldrsb r3, [r4, r10] + mov r0, #200 + str r3, [r5, #4] + bl NandcDelayns + ldrb r3, [r7, #696] @ zero_extendqisi2 + cmp r3, #34 + addeq r3, r4, r8 + addeq r3, r10, r3 + beq .L147 + cmp r3, #35 + addne r3, r9, r6 + addne r3, r3, #400 + ldrnesb r3, [r3] + bne .L146 + ldr r3, .L149+8 + add r2, r4, r8 + add r3, r3, r2 +.L147: + ldrsb r3, [r3, #5] +.L146: + str r3, [r5] + add r4, r4, #1 + b .L140 +.L148: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L150: + .align 2 +.L149: + .word .LANCHOR1 + .word .LANCHOR0 + .word .LANCHOR1+304 + .fnend + .size ToshibaSetRRPara, .-ToshibaSetRRPara + .align 2 + .global SamsungSetRRPara + .type SamsungSetRRPara, %function +SamsungSetRRPara: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L156 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + add r1, r3, r1, asl #2 + ldr r8, .L156+4 + mov r4, #0 + add r5, r1, #3 + mov r6, r0 + mov r7, r3 + mov r9, #161 + mov r10, r4 +.L152: + ldrb r3, [r8, #697] @ zero_extendqisi2 + cmp r4, r3 + bcs .L155 + str r9, [r6, #8] + mov r0, #300 + str r10, [r6] + ldrsb r3, [r7, r4] + add r4, r4, #1 + str r3, [r6] + ldrsb r3, [r5, #1]! + str r3, [r6] + bl NandcDelayns + b .L152 +.L155: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L157: + .align 2 +.L156: + .word .LANCHOR1+408 + .word .LANCHOR0 + .fnend + .size SamsungSetRRPara, .-SamsungSetRRPara + .align 2 + .global HynixSetRRPara + .type HynixSetRRPara, %function +HynixSetRRPara: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r6, r3 + ldr r5, .L167 + mov r9, r2 + ldr r4, .L167+4 + mov r7, r0 + mov r8, r1 + ldr r3, [r5, #692] + ldrb r2, [r3, #19] @ zero_extendqisi2 + mov r3, r0, asl #3 + cmp r2, #6 + addeq r4, r4, r0, asl #6 + addeq r4, r4, #20 + addeq r4, r4, r6, asl #2 + beq .L160 + cmp r2, #7 + bne .L161 + mov r2, #160 + mla r4, r2, r0, r4 + add r2, r6, r6, asl #2 + add r4, r4, #28 + add r4, r4, r2, asl #1 + b .L160 +.L161: + cmp r2, #8 + addne r2, r6, r3 + addeq r2, r6, r6, asl #2 + ldreq r4, .L167+8 + addne r4, r4, r2, asl #3 + addeq r4, r4, r2 + addne r4, r4, #20 +.L160: + add r3, r5, r3 + mov r0, r7 + sub r8, r8, #1 + sub r4, r4, #1 + ldrb fp, [r3, #16] @ zero_extendqisi2 + ldr r10, [r3, #12] + bl NandcFlashCs + sub ip, r9, #1 + add r9, r9, r8 + mov r3, fp, asl #8 + mov r2, #54 + add fp, r10, r3 + str r2, [fp, #2056] +.L163: + cmp ip, r9 + beq .L166 + ldrb r2, [ip, #1]! @ zero_extendqisi2 + mov r0, #200 + str r3, [sp, #4] + str r2, [fp, #2052] + str ip, [sp] + bl NandcDelayns + ldrsb r2, [r4, #1]! + str r2, [fp, #2048] + ldr r3, [sp, #4] + ldr ip, [sp] + b .L163 +.L166: + add r10, r10, r3 + mov r0, r7 + mov r3, #22 + add r5, r5, r7 + str r3, [r10, #2056] + bl NandcFlashDeCs + strb r6, [r5, #1552] + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L168: + .align 2 +.L167: + .word .LANCHOR0 + .word .LANCHOR0+698 + .word .LANCHOR0+726 + .fnend + .size HynixSetRRPara, .-HynixSetRRPara + .align 2 + .global FlashSetReadRetryDefault + .type FlashSetReadRetryDefault, %function +FlashSetReadRetryDefault: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L177 + ldr r2, [r3, #692] + ldrb r2, [r2, #19] @ zero_extendqisi2 + sub r2, r2, #1 + cmp r2, #7 + bxhi lr + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r4, #0 + ldr r6, .L177+4 + mov r5, r3 +.L170: + ldrb r3, [r6, r4, asl #3] @ zero_extendqisi2 + uxtb r0, r4 + cmp r3, #173 + bne .L171 + ldrb r1, [r5, #699] @ zero_extendqisi2 + mov r3, #0 + ldr r2, .L177+8 + bl HynixSetRRPara +.L171: + add r4, r4, #1 + cmp r4, #4 + bne .L170 + ldmfd sp!, {r4, r5, r6, pc} +.L178: + .align 2 +.L177: + .word .LANCHOR0 + .word .LANCHOR0+1556 + .word .LANCHOR0+702 + .fnend + .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault + .align 2 .global FlashReadStatusEN .type FlashReadStatusEN, %function FlashReadStatusEN: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + ldr ip, .L190 stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} - ldr r3, .L144 - add r0, r3, r0, asl #3 - ldr ip, [r3, #3624] - ldrb r5, [r0, #868] @ zero_extendqisi2 - ldr r4, [r0, #864] - ldrb ip, [ip, #8] @ zero_extendqisi2 + add r0, ip, r0, asl #3 + ldr r3, [ip, #692] + ldrb r5, [r0, #16] @ zero_extendqisi2 + ldr r4, [r0, #12] + ldrb r3, [r3, #8] @ zero_extendqisi2 + cmp r3, #2 + mov r3, r5, asl #8 + addne r3, r4, r3 add r5, r5, #8 - cmp ip, #2 - add r0, r4, r5, asl #8 - movne r3, #112 - strne r3, [r0, #8] - bne .L140 + movne r2, #112 + strne r2, [r3, #2056] + bne .L184 cmp r2, #0 - ldreqb r2, [r3, #909] @ zero_extendqisi2 - ldrneb r2, [r3, #910] @ zero_extendqisi2 - str r2, [r0, #8] - ldrb r3, [r3, #911] @ zero_extendqisi2 - cmp r3, #0 - movne r3, #0 - ldrne r2, .L144 - bne .L139 - b .L140 -.L141: - mov ip, r3, asl #3 - add r3, r3, #1 - mov ip, r1, lsr ip - uxtb ip, ip - str ip, [r0, #4] -.L139: - ldrb ip, [r2, #911] @ zero_extendqisi2 - cmp r3, ip - bcc .L141 -.L140: + add r3, r4, r3 + ldrneb r2, [ip, #58] @ zero_extendqisi2 + ldreqb r2, [ip, #57] @ zero_extendqisi2 + str r2, [r3, #2056] + ldrb r0, [ip, #59] @ zero_extendqisi2 + cmp r0, #0 + addne ip, r4, r5, asl #8 + movne r2, #0 + beq .L184 +.L183: + cmp r2, r0 + bcs .L184 + mov r3, r2, asl #3 + add r2, r2, #1 + mov r3, r1, lsr r3 + uxtb r3, r3 + str r3, [ip, #4] + b .L183 +.L184: mov r0, #80 bl NandcDelayns ldr r0, [r4, r5, asl #8] uxtb r0, r0 ldmfd sp!, {r3, r4, r5, pc} -.L145: +.L191: .align 2 -.L144: +.L190: .word .LANCHOR0 .fnend .size FlashReadStatusEN, .-FlashReadStatusEN @@ -1044,18 +1120,18 @@ FlashWaitReadyEN: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r6, r0 + mov r4, r0 mov r5, r1 - mov r4, r2 -.L150: - mov r0, r6 + mov r6, r2 +.L196: + mov r0, r4 mov r1, r5 - mov r2, r4 + mov r2, r6 bl FlashReadStatusEN cmp r0, #255 - beq .L150 + beq .L196 tst r0, #64 - beq .L150 + beq .L196 ldmfd sp!, {r4, r5, r6, pc} .fnend .size FlashWaitReadyEN, .-FlashWaitReadyEN @@ -1066,278 +1142,122 @@ FlashWaitCmdDone: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L154 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - add r4, r3, r0, asl #4 - ldrb r5, [r3, r0, asl #4] @ zero_extendqisi2 - mov r6, r0 - ldr r3, [r4, #8] + stmfd sp!, {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + ldr r5, .L208 + add r4, r5, r0, asl #4 + ldr r3, [r4, #1596] + ldrb r7, [r4, #1588] @ zero_extendqisi2 cmp r3, #0 - beq .L152 - mov r0, r5 + beq .L202 + mov r6, r0 + mov r0, r7 + add r5, r5, r6, asl #2 bl NandcFlashCs - ldr r3, .L154+4 - ldr r1, [r4, #4] - mov r0, r5 - add r6, r3, r6, asl #2 - ldr r2, [r6, #3588] + ldr r1, [r4, #1592] + mov r0, r7 + ldr r2, [r5, #656] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - mov r6, r0 - mov r0, r5 + mov r5, r0 + mov r0, r7 bl NandcFlashDeCs - ldr r3, [r4, #8] - ands r6, r6, #1 - mvnne r6, #0 - str r6, [r3, #0] - ldr r2, [r4, #12] - mov r3, #0 - str r3, [r4, #8] - cmp r2, r3 - strne r6, [r2, #0] - strne r3, [r4, #12] -.L152: + ldr r2, [r4, #1596] + sbfx r3, r5, #0, #1 + str r3, [r2] + mov r2, #0 + ldr r1, [r4, #1600] + str r2, [r4, #1596] + cmp r1, r2 + strne r3, [r1] + strne r2, [r4, #1600] +.L202: mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L155: + ldmfd sp!, {r3, r4, r5, r6, r7, pc} +.L209: .align 2 -.L154: - .word .LANCHOR0+3628 +.L208: .word .LANCHOR0 .fnend .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 - .global HynixSetRRPara - .type HynixSetRRPara, %function -HynixSetRRPara: + .type flash_read_ecc, %function +flash_read_ecc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - mov r8, r3 - ldr r9, .L162 - mov r4, r0 - mov r5, r1 - mov r6, r2 - ldr r3, [r9, #3624] - ldrb r3, [r3, #19] @ zero_extendqisi2 - cmp r3, #6 - addeq r9, r9, #20 - addeq r9, r9, r0, asl #6 - addeq r9, r9, r8, asl #2 - beq .L158 - cmp r3, #7 - addeq r9, r9, #28 - addne r3, r8, r0, asl #3 - moveq r3, #160 - addne r9, r9, #20 - mlaeq r9, r3, r0, r9 - moveq r3, #10 - addne r9, r9, r3, asl #3 - mlaeq r9, r3, r8, r9 -.L158: - ldr r3, .L162 - mov r0, r4 - mov r7, #0 - add r3, r3, r4, asl #3 - ldrb sl, [r3, #868] @ zero_extendqisi2 - ldr r2, [r3, #864] - add sl, sl, #8 - add sl, r2, sl, asl #8 - bl NandcFlashCs - mov r3, #54 - str r3, [sl, #8] - b .L160 -.L161: - ldrb r3, [r6, r7] @ zero_extendqisi2 - mov r0, #200 - str r3, [sl, #4] - bl NandcDelayns - ldrsb r3, [r9, r7] - add r7, r7, #1 - str r3, [sl, #0] -.L160: - uxtb r3, r7 - cmp r3, r5 - bcc .L161 - mov r3, #22 - mov r0, r4 - str r3, [sl, #8] - bl NandcFlashDeCs - ldr r3, .L162 - add r4, r3, r4 - strb r8, [r4, #3756] - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L163: - .align 2 -.L162: - .word .LANCHOR0 - .fnend - .size HynixSetRRPara, .-HynixSetRRPara - .align 2 - .global FlashSetReadRetryDefault - .type FlashSetReadRetryDefault, %function -FlashSetReadRetryDefault: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldr r6, .L169 - ldr r3, [r6, #3624] - ldrb r3, [r3, #19] @ zero_extendqisi2 - sub r3, r3, #1 - uxtb r3, r3 - cmp r3, #6 - ldmhifd sp!, {r4, r5, r6, pc} - ldr r5, .L169+4 - mov r4, #0 -.L167: - ldrb r3, [r5, r4, asl #3] @ zero_extendqisi2 - uxtb r0, r4 - cmp r3, #173 - bne .L166 - ldrb r1, [r6, #1] @ zero_extendqisi2 - mov r3, #0 - ldr r2, .L169+8 - bl HynixSetRRPara -.L166: - add r4, r4, #1 - cmp r4, #4 - bne .L167 - ldmfd sp!, {r4, r5, r6, pc} -.L170: - .align 2 -.L169: - .word .LANCHOR0 - .word .LANCHOR0+2980 - .word .LANCHOR0+4 - .fnend - .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault - .align 2 - .global SamsungSetRRPara - .type SamsungSetRRPara, %function -SamsungSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r4, r0 - ldr r3, .L174 - mov r5, #0 - ldr sl, .L174+4 - mov r8, #161 - add r1, r3, r1, asl #2 - add r6, r1, #3 - mov r7, r3 - b .L172 -.L173: - str r8, [r4, #8] - mov r3, #0 - str r3, [r4, #0] - mov r0, #300 - ldrsb r3, [r5, r7] - add r5, r5, #1 - str r3, [r4, #0] - ldrsb r3, [r6, #1]! - str r3, [r4, #0] - bl NandcDelayns -.L172: - ldrb r3, [sl, #3760] @ zero_extendqisi2 - cmp r5, r3 - bcc .L173 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L175: - .align 2 -.L174: - .word .LANCHOR1+3020 - .word .LANCHOR0 - .fnend - .size SamsungSetRRPara, .-SamsungSetRRPara - .align 2 - .global ToshibaSetRRPara - .type ToshibaSetRRPara, %function -ToshibaSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - add r6, r1, #1 - ldr r8, .L183 - mov r4, r0 - add r6, r6, r6, asl #2 - mov r5, #0 - add r3, r8, #45 - add r7, r8, r6 - ldr sl, .L183+4 - add r6, r3, r6 - add r9, r8, r1 - b .L177 -.L181: - mov r3, #85 - str r3, [r4, #8] - ldrsb r3, [r5, r8] - mov r0, #200 - str r3, [r4, #4] - bl NandcDelayns - ldrb r3, [sl, #3761] @ zero_extendqisi2 - cmp r3, #34 - ldreqsb r3, [r7, #0] - beq .L182 - cmp r3, #35 - addne r3, r9, #3072 - addne r3, r3, #12 - ldreqsb r3, [r6, #0] - ldrnesb r3, [r3, #0] -.L182: - add r5, r5, #1 - add r7, r7, #1 - add r6, r6, #1 - str r3, [r4, #0] -.L177: - ldrb r3, [sl, #3760] @ zero_extendqisi2 - cmp r5, r3 - bcc .L181 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L184: - .align 2 -.L183: - .word .LANCHOR1 - .word .LANCHOR0 - .fnend - .size ToshibaSetRRPara, .-ToshibaSetRRPara - .align 2 - .global FlashReadStatus - .type FlashReadStatus, %function -FlashReadStatus: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r2, #112 - ldr r3, .L186 - add r3, r3, r0, asl #3 + ldr r2, .L212 + stmfd sp!, {r4, lr} + .save {r4, lr} + add r0, r2, r0, asl #3 + ldrb r4, [r0, #16] @ zero_extendqisi2 + ldr r3, [r0, #12] mov r0, #80 - ldrb r5, [r3, #868] @ zero_extendqisi2 - ldr r4, [r3, #864] - add r5, r5, #8 - add r3, r4, r5, asl #8 - str r2, [r3, #8] + add r4, r3, r4, asl #8 + mov r3, #122 + str r3, [r4, #2056] bl NandcDelayns - ldr r0, [r4, r5, asl #8] - ldmfd sp!, {r3, r4, r5, pc} -.L187: + ldr r3, [r4, #2048] + ldr r0, [r4, #2048] + and r3, r3, #15 + and r0, r0, #15 + cmp r0, r3 + movcc r0, r3 + ldr r3, [r4, #2048] + and r3, r3, #15 + cmp r0, r3 + movcc r0, r3 + ldr r3, [r4, #2048] + and r3, r3, #15 + cmp r0, r3 + movcc r0, r3 + ldmfd sp!, {r4, pc} +.L213: .align 2 -.L186: +.L212: .word .LANCHOR0 .fnend - .size FlashReadStatus, .-FlashReadStatus + .size flash_read_ecc, .-flash_read_ecc + .align 2 + .global NandcWaitFlashReadyNoDelay + .type NandcWaitFlashReadyNoDelay, %function +NandcWaitFlashReadyNoDelay: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L220 + stmfd sp!, {r0, r1, r2, r4, r5, lr} + .save {r4, r5, lr} + .pad #12 + add r0, r3, r0, asl #3 + ldr r4, .L220+4 + ldr r5, [r0, #12] +.L216: + ldr r3, [r5] + str r3, [sp, #4] + ldr r3, [sp, #4] + tst r3, #512 + bne .L217 + mov r0, #10 + bl NandcDelayns + subs r4, r4, #1 + bne .L216 + mvn r0, #0 + b .L215 +.L217: + mov r0, #0 +.L215: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, pc} +.L221: + .align 2 +.L220: + .word .LANCHOR0 + .word 100000 + .fnend + .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function @@ -1345,303 +1265,162 @@ NandcWaitFlashReady: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L193 + ldr r3, .L228 stmfd sp!, {r0, r1, r2, r4, r5, lr} - .save {r0, r1, r2, r4, r5, lr} - add r3, r3, r0, asl #3 - ldr r4, .L193+4 - ldr r5, [r3, #864] -.L190: - mov r0, #100 + .save {r4, r5, lr} + .pad #12 + add r0, r3, r0, asl #3 + ldr r4, .L228+4 + ldr r5, [r0, #12] + mov r0, #150 bl NandcDelayns - ldr r3, [r5, #0] +.L224: + ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #512 - bne .L191 + bne .L225 + mov r0, #10 + bl NandcDelayns subs r4, r4, #1 - bne .L190 + bne .L224 mvn r0, #0 - b .L189 -.L191: + b .L223 +.L225: mov r0, #0 -.L189: - ldmfd sp!, {r1, r2, r3, r4, r5, pc} -.L194: +.L223: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, pc} +.L229: .align 2 -.L193: +.L228: .word .LANCHOR0 .word 100000 .fnend .size NandcWaitFlashReady, .-NandcWaitFlashReady .align 2 - .global FlashEraseSLc2KBlocks - .type FlashEraseSLc2KBlocks, %function -FlashEraseSLc2KBlocks: + .global FlashReset + .type FlashReset, %function +FlashReset: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} - mov r6, #0 - .pad #20 - sub sp, sp, #20 - mov r8, r1 + ldr r3, .L232 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + add r3, r3, r0, asl #3 mov r4, r0 - mov r7, r6 - ldr r5, .L203 - b .L196 -.L202: - add r3, r6, r8 - add r2, sp, #8 - mov r0, r4 - mov r1, #0 - uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #12 - bl LogAddr2PhyAddr - ldr r3, [sp, #12] - ldrb r2, [r5, #3762] @ zero_extendqisi2 - cmp r3, r2 - mvncs r3, #0 - strcs r3, [r4, #0] - bcs .L198 - add r2, r5, r3 - add r3, r5, r3, asl #4 - ldrb sl, [r2, #3764] @ zero_extendqisi2 - strb sl, [r3, #3628] - mov r0, sl - bl NandcWaitFlashReady - mov r0, sl + ldrb r6, [r3, #16] @ zero_extendqisi2 + ldr r5, [r3, #12] bl NandcFlashCs - mov r2, #0 - ldr r1, [sp, #8] - mov r0, sl - bl FlashEraseCmd - mov r0, sl + mov r3, #255 + mov r0, r4 + add r5, r5, r6, asl #8 + str r3, [r5, #2056] bl NandcWaitFlashReady - ldr r1, [sp, #8] - mov r0, sl - bl FlashReadStatus - ldr r3, [sp, #8] - mov r2, #0 - ands r0, r0, #1 - mvnne r0, #0 - str r0, [r4, #0] - ldr r1, [r5, #856] - mov r0, sl - add r1, r1, r3 - bl FlashEraseCmd - mov r0, sl - bl NandcWaitFlashReady - mov r0, sl - ldr r1, [sp, #8] - bl FlashReadStatus - tst r0, #1 - mvnne r3, #0 - strne r3, [r4, #0] - ldr r3, [r4, #0] - cmn r3, #1 - bne .L201 - ldr r0, .L203+4 - ldr r1, [sp, #8] - bl printk -.L201: - mov r0, sl - bl NandcFlashDeCs -.L198: - sub r6, r6, #1 - add r7, r7, #1 - add r4, r4, #36 - uxtb r6, r6 -.L196: - cmp r7, r8 - bne .L202 - mov r0, #0 - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L204: - .align 2 -.L203: - .word .LANCHOR0 - .word .LC1 - .fnend - .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks - .align 2 - .global micron_auto_read_calibration_config - .type micron_auto_read_calibration_config, %function -micron_auto_read_calibration_config: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r1 - mov r4, r0 - bl NandcWaitFlashReady - ldr r3, .L206 - mov r2, #239 - mov r0, #200 - add r4, r3, r4, asl #3 - ldr r5, [r4, #864] - ldrb r4, [r4, #868] @ zero_extendqisi2 - add r4, r4, #8 - add r3, r5, r4, asl #8 - str r2, [r3, #8] - mov r2, #150 - str r2, [r3, #4] - bl NandcDelayns - str r6, [r5, r4, asl #8] - mov r3, #0 - str r3, [r5, r4, asl #8] - str r3, [r5, r4, asl #8] - str r3, [r5, r4, asl #8] - ldmfd sp!, {r4, r5, r6, pc} -.L207: - .align 2 -.L206: - .word .LANCHOR0 - .fnend - .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config - .align 2 - .global SandiskSetRRPara - .type SandiskSetRRPara, %function -SandiskSetRRPara: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r3, #239 - mov r4, r0 - str r3, [r0, #8] - mov r3, #17 - str r3, [r0, #4] - mov r0, #200 - mov r5, r1 - bl NandcDelayns - ldr r1, .L214 - add r3, r5, r5, asl #2 - mvn r6, #4 - add r0, r1, r3 - add r1, r1, #45 - add r1, r1, r3 - mov r2, #0 - ldr ip, .L214+4 - mul r5, r6, r5 - b .L209 -.L212: - ldrb r6, [ip, #3761] @ zero_extendqisi2 - add r2, r2, #1 - cmp r6, #67 - addeq r6, r0, r5 - addne r6, r1, r5 - add r6, r6, r3 - add r0, r0, #1 - add r1, r1, #1 - ldrsb r6, [r6, #5] - str r6, [r4, #0] -.L209: - ldrb r6, [ip, #3760] @ zero_extendqisi2 - cmp r2, r6 - bcc .L212 - mov r0, #0 + mov r0, r4 ldmfd sp!, {r4, r5, r6, lr} - b NandcWaitFlashReady -.L215: + b NandcFlashDeCs +.L233: .align 2 -.L214: - .word .LANCHOR1 +.L232: .word .LANCHOR0 .fnend - .size SandiskSetRRPara, .-SandiskSetRRPara + .size FlashReset, .-FlashReset .align 2 - .global SandiskProgTestBadBlock - .type SandiskProgTestBadBlock, %function -SandiskProgTestBadBlock: + .global flash_enter_slc_mode + .type flash_enter_slc_mode, %function +flash_enter_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L217 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - add r3, r3, r0, asl #3 - ldrb r6, [r3, #868] @ zero_extendqisi2 - ldr r5, [r3, #864] - mov r3, #162 - add r6, r6, #8 - add r4, r5, r6, asl #8 - str r3, [r4, #8] - mov r3, #128 - str r3, [r4, #8] - mov r3, #0 - str r3, [r4, #4] - str r3, [r4, #4] - uxtb r3, r1 - str r3, [r4, #4] - mov r3, r1, lsr #8 - mov r1, r1, lsr #16 - str r3, [r4, #4] - str r1, [r4, #4] - mov r3, #16 - str r3, [r4, #8] - bl NandcWaitFlashReady - mov r3, #112 - mov r0, #80 - str r3, [r4, #8] + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + ldr r4, .L237 + ldrb r3, [r4, #140] @ zero_extendqisi2 + cmp r3, #0 + ldmeqfd sp!, {r3, r4, r5, pc} + mov r5, r0 + bl NandcFlashCs + add r3, r4, r5, asl #3 + mov r0, #100 + ldr r4, [r3, #12] + ldrb r3, [r3, #16] @ zero_extendqisi2 + add r4, r4, r3, asl #8 + mov r3, #239 + str r3, [r4, #2056] + mov r3, #145 + str r3, [r4, #2052] bl NandcDelayns - ldr r0, [r5, r6, asl #8] - and r0, r0, #1 - ldmfd sp!, {r4, r5, r6, pc} -.L218: + mov r3, #0 + mov r2, #1 + str r3, [r4, #2048] + mov r0, #100 + str r2, [r4, #2048] + str r3, [r4, #2048] + str r3, [r4, #2048] + bl NandcDelayns + mov r0, r5 + bl NandcWaitFlashReadyNoDelay + mov r3, #218 + mov r0, r5 + str r3, [r4, #2056] + ldmfd sp!, {r3, r4, r5, lr} + b NandcWaitFlashReady +.L238: .align 2 -.L217: +.L237: .word .LANCHOR0 .fnend - .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock + .size flash_enter_slc_mode, .-flash_enter_slc_mode .align 2 - .global FlashReadSpare - .type FlashReadSpare, %function -FlashReadSpare: + .global flash_exit_slc_mode + .type flash_exit_slc_mode, %function +flash_exit_slc_mode: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L220 - mov ip, #0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r2 - ldrb r2, [r3, #2997] @ zero_extendqisi2 - ldr r3, .L220+4 - add r3, r3, r0, asl #3 - mov r2, r2, asl #9 - ldrb r5, [r3, #868] @ zero_extendqisi2 - ldr r4, [r3, #864] - add r5, r5, #8 - add r3, r4, r5, asl #8 - str ip, [r3, #8] - str r2, [r3, #4] - mov r2, r2, lsr #8 - str r2, [r3, #4] - uxtb r2, r1 - str r2, [r3, #4] - mov r2, r1, lsr #8 - mov r1, r1, lsr #16 - str r2, [r3, #4] - str r1, [r3, #4] - mov r2, #48 - str r2, [r3, #8] - bl NandcWaitFlashReady - ldr r3, [r4, r5, asl #8] - strb r3, [r6, #0] - ldmfd sp!, {r4, r5, r6, pc} -.L221: + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + ldr r4, .L242 + ldrb r3, [r4, #140] @ zero_extendqisi2 + cmp r3, #0 + ldmeqfd sp!, {r3, r4, r5, pc} + mov r5, r0 + bl NandcFlashCs + add r3, r4, r5, asl #3 + mov r0, #100 + ldr r4, [r3, #12] + ldrb r3, [r3, #16] @ zero_extendqisi2 + add r4, r4, r3, asl #8 + mov r3, #239 + str r3, [r4, #2056] + mov r3, #145 + str r3, [r4, #2052] + bl NandcDelayns + mov r3, #2 + mov r0, #100 + str r3, [r4, #2048] + mov r3, #1 + str r3, [r4, #2048] + mov r3, #0 + str r3, [r4, #2048] + str r3, [r4, #2048] + bl NandcDelayns + mov r0, r5 + bl NandcWaitFlashReadyNoDelay + mov r3, #223 + mov r0, r5 + str r3, [r4, #2056] + ldmfd sp!, {r3, r4, r5, lr} + b NandcWaitFlashReady +.L243: .align 2 -.L220: - .word .LANCHOR1 +.L242: .word .LANCHOR0 .fnend - .size FlashReadSpare, .-FlashReadSpare + .size flash_exit_slc_mode, .-flash_exit_slc_mode .align 2 .global FlashEraseBlock .type FlashEraseBlock, %function @@ -1674,184 +1453,432 @@ FlashEraseBlock: .fnend .size FlashEraseBlock, .-FlashEraseBlock .align 2 - .global FlashReset - .type FlashReset, %function -FlashReset: + .global FlashSetInterfaceMode + .type FlashSetInterfaceMode, %function +FlashSetInterfaceMode: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r1, .L269 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #20 + sub sp, sp, #20 + ldrb fp, [r1, #1716] @ zero_extendqisi2 + mov lr, #0 + ldr r7, .L269+4 + mov r4, #239 + and r2, fp, #4 + and r3, fp, #1 + mov r5, #128 + str r3, [sp, #8] + mov r6, #1 + uxtb r3, r2 + mov r8, #35 + mov r2, lr + mov r9, #32 + mov r10, #5 + str r3, [sp, #4] + add r3, r1, #12 + str r3, [sp, #12] +.L256: + ldr r3, [sp, #12] + ldrb ip, [lr, r7] @ zero_extendqisi2 + ldr r1, [r3, lr]! + cmp ip, #69 + cmpne ip, #152 + ldrb r3, [r3, #4] @ zero_extendqisi2 + beq .L247 + cmp ip, #44 + cmpne ip, #173 + bne .L248 +.L247: + cmp r0, #1 + bne .L249 + ldr fp, [sp, #8] + cmp fp, #0 + beq .L248 + mov r3, r3, asl #8 + cmp ip, #173 + add fp, r1, r3 + str r4, [fp, #2056] + streq r0, [fp, #2052] + beq .L268 + cmp ip, #44 + streq r0, [fp, #2052] + strne r5, [fp, #2052] + streq r10, [fp, #2048] + strne r0, [fp, #2048] + b .L254 +.L249: + ldr fp, [sp, #4] + cmp fp, #0 + beq .L248 + mov r3, r3, asl #8 + cmp ip, #173 + add fp, r1, r3 + str r4, [fp, #2056] + streq r6, [fp, #2052] + streq r9, [fp, #2048] + beq .L254 + cmp ip, #44 + streq r6, [fp, #2052] + streq r8, [fp, #2048] + beq .L254 + str r5, [fp, #2052] +.L268: + str r2, [fp, #2048] +.L254: + add r3, r1, r3 + str r2, [r3, #2048] + str r2, [r3, #2048] + str r2, [r3, #2048] +.L248: + add lr, lr, #8 + cmp lr, #32 + bne .L256 + mov r0, #0 + bl NandcWaitFlashReady + mov r0, #0 + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L270: + .align 2 +.L269: + .word .LANCHOR0 + .word .LANCHOR0+1556 + .fnend + .size FlashSetInterfaceMode, .-FlashSetInterfaceMode + .align 2 + .global FlashReadSpare + .type FlashReadSpare, %function +FlashReadSpare: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr ip, .L273 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + add ip, ip, r0, asl #3 + ldr r3, .L273+4 + mov r5, r2 + ldrb r2, [ip, #16] @ zero_extendqisi2 + ldr r4, [ip, #12] + ldrb r3, [r3, #481] @ zero_extendqisi2 + add r4, r4, r2, asl #8 + mov r2, #0 + mov r3, r3, asl #9 + str r2, [r4, #2056] + str r3, [r4, #2052] + mov r3, r3, lsr #8 + str r3, [r4, #2052] + uxtb r3, r1 + str r3, [r4, #2052] + mov r3, r1, lsr #8 + mov r1, r1, lsr #16 + str r3, [r4, #2052] + mov r3, #48 + str r1, [r4, #2052] + str r3, [r4, #2056] + bl NandcWaitFlashReady + ldr r3, [r4, #2048] + strb r3, [r5] + ldmfd sp!, {r3, r4, r5, pc} +.L274: + .align 2 +.L273: + .word .LANCHOR0 + .word .LANCHOR1 + .fnend + .size FlashReadSpare, .-FlashReadSpare + .align 2 + .global SandiskProgTestBadBlock + .type SandiskProgTestBadBlock, %function +SandiskProgTestBadBlock: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r2, .L277 + stmfd sp!, {r4, lr} + .save {r4, lr} + add r2, r2, r0, asl #3 + ldrb r4, [r2, #16] @ zero_extendqisi2 + ldr r3, [r2, #12] + add r4, r3, r4, asl #8 + mov r3, #162 + str r3, [r4, #2056] + mov r3, #128 + str r3, [r4, #2056] + mov r3, #0 + str r3, [r4, #2052] + str r3, [r4, #2052] + uxtb r3, r1 + str r3, [r4, #2052] + mov r3, r1, lsr #8 + mov r1, r1, lsr #16 + str r3, [r4, #2052] + str r1, [r4, #2052] + mov r3, #16 + str r3, [r4, #2056] + bl NandcWaitFlashReady + mov r3, #112 + mov r0, #80 + str r3, [r4, #2056] + bl NandcDelayns + ldr r0, [r4, #2048] + and r0, r0, #1 + ldmfd sp!, {r4, pc} +.L278: + .align 2 +.L277: + .word .LANCHOR0 + .fnend + .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock + .align 2 + .global SandiskSetRRPara + .type SandiskSetRRPara, %function +SandiskSetRRPara: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r3, #239 + mov r5, r0 + str r3, [r0, #8] + mov r3, #17 + str r3, [r0, #4] + mov r0, #200 + mov r4, r1 + bl NandcDelayns + ldr r0, .L287 + ldr r1, .L287+4 + add r4, r4, r4, asl #2 + sub ip, r0, #48 + mov r2, #0 +.L280: + ldrb r3, [r1, #697] @ zero_extendqisi2 + cmp r2, r3 + bcs .L286 + ldrb r3, [r1, #696] @ zero_extendqisi2 + cmp r3, #67 + add r3, r2, r4 + addeq r3, ip, r3 + addne r3, r0, r3 + add r2, r2, #1 + ldrsb r3, [r3, #5] + str r3, [r5] + b .L280 +.L286: + mov r0, #0 + ldmfd sp!, {r3, r4, r5, lr} + b NandcWaitFlashReady +.L288: + .align 2 +.L287: + .word .LANCHOR1+304 + .word .LANCHOR0 + .fnend + .size SandiskSetRRPara, .-SandiskSetRRPara + .align 2 + .global micron_auto_read_calibration_config + .type micron_auto_read_calibration_config, %function +micron_auto_read_calibration_config: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r4, r0 - ldr r3, .L224 - add r3, r3, r0, asl #3 - ldrb r5, [r3, #868] @ zero_extendqisi2 - ldr r2, [r3, #864] - add r5, r5, #8 - add r5, r2, r5, asl #8 - bl NandcFlashCs - mov r3, #255 - mov r0, r4 - str r3, [r5, #8] - bl NandcWaitFlashReady - mov r0, r4 - ldmfd sp!, {r3, r4, r5, lr} - b NandcFlashDeCs -.L225: - .align 2 -.L224: - .word .LANCHOR0 - .fnend - .size FlashReset, .-FlashReset - .align 2 - .type FlashReadIDRaw, %function -FlashReadIDRaw: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} - .save {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} mov r5, r1 - mov r4, r0 - bl FlashReset - ldr r3, .L228 - mov r0, r4 - add r3, r3, r4, asl #3 - ldrb r7, [r3, #868] @ zero_extendqisi2 - ldr r6, [r3, #864] - bl NandcFlashCs - add r7, r7, #8 - mov r3, #144 + bl NandcWaitFlashReady + ldr r3, .L291 mov r0, #200 - add r8, r6, r7, asl #8 - str r3, [r8, #8] - mov r3, #0 - str r3, [r8, #4] + add r2, r3, r4, asl #3 + ldrb r4, [r2, #16] @ zero_extendqisi2 + ldr r3, [r2, #12] + add r4, r3, r4, asl #8 + mov r3, #239 + str r3, [r4, #2056] + mov r3, #150 + str r3, [r4, #2052] bl NandcDelayns - ldr r3, [r6, r7, asl #8] - mov r0, r4 - strb r3, [r5, #0] - ldr r3, [r6, r7, asl #8] - strb r3, [r5, #1] - ldr r3, [r6, r7, asl #8] - strb r3, [r5, #2] - ldr r3, [r6, r7, asl #8] - strb r3, [r5, #3] - ldr r3, [r6, r7, asl #8] - strb r3, [r5, #4] - ldr r3, [r6, r7, asl #8] - strb r3, [r5, #5] - bl NandcFlashDeCs - ldrb r2, [r5, #0] @ zero_extendqisi2 - sub r3, r2, #1 - uxtb r3, r3 - cmp r3, #253 - bhi .L226 - ldrb r1, [r5, #2] @ zero_extendqisi2 - ldrb r3, [r5, #1] @ zero_extendqisi2 - ldr r0, .L228+4 - str r1, [sp, #0] - 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 - str r1, [sp, #12] - add r1, r4, #1 - bl printk -.L226: - ldmfd sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, pc} -.L229: + str r5, [r4, #2048] + mov r3, #0 + str r3, [r4, #2048] + str r3, [r4, #2048] + str r3, [r4, #2048] + ldmfd sp!, {r3, r4, r5, pc} +.L292: .align 2 -.L228: +.L291: .word .LANCHOR0 - .word .LC2 .fnend - .size FlashReadIDRaw, .-FlashReadIDRaw + .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .align 2 - .global FlashSetInterfaceMode - .type FlashSetInterfaceMode, %function -FlashSetInterfaceMode: + .global FlashEraseSLc2KBlocks + .type FlashEraseSLc2KBlocks, %function +FlashEraseSLc2KBlocks: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + mov r5, #0 + ldr r7, .L306 + .pad #24 + sub sp, sp, #24 + ldr r9, .L306+4 + mov r6, r0 + mov r10, r1 + mov r8, r5 + ldr r3, [r7] + str r3, [sp, #20] +.L294: + cmp r8, r10 + beq .L305 + rsb r3, r8, r10 + add r2, sp, #12 + add r0, r6, r5 + mov r1, #0 + uxtb r3, r3 + str r3, [sp] + add r3, sp, #16 + bl LogAddr2PhyAddr + ldrb r2, [r9, #1717] @ zero_extendqisi2 + ldr r3, [sp, #16] + cmp r3, r2 + mvncs r3, #0 + strcs r3, [r6, r5] + bcs .L296 + add r2, r9, r3 + add r3, r9, r3, asl #4 + ldrb r4, [r2, #1720] @ zero_extendqisi2 + strb r4, [r3, #1588] + mov r0, r4 + bl NandcWaitFlashReady + mov r0, r4 + bl NandcFlashCs + mov r2, #0 + mov r0, r4 + ldr r1, [sp, #12] + bl FlashEraseCmd + mov r0, r4 + bl NandcWaitFlashReady + mov r0, r4 + ldr r1, [sp, #12] + bl FlashReadStatus + mov r2, #0 + ldr r3, [sp, #12] + sbfx r0, r0, #0, #1 + str r0, [r6, r5] + mov r0, r4 + ldr r1, [r9, #4] + add r1, r1, r3 + bl FlashEraseCmd + mov r0, r4 + bl NandcWaitFlashReady + mov r0, r4 + ldr r1, [sp, #12] + bl FlashReadStatus + tst r0, #1 + mvnne r3, #0 + strne r3, [r6, r5] + ldr r3, [r6, r5] + cmn r3, #1 + bne .L298 + ldr r0, .L306+8 + ldr r1, [sp, #12] + bl printk +.L298: + mov r0, r4 + bl NandcFlashDeCs +.L296: + add r8, r8, #1 + add r5, r5, #36 + b .L294 +.L305: + ldr r2, [sp, #20] + mov r0, #0 + ldr r3, [r7] + cmp r2, r3 + beq .L300 + bl __stack_chk_fail +.L300: + add sp, sp, #24 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L307: + .align 2 +.L306: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LC1 + .fnend + .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks + .align 2 + .global FlashReadDpCmd + .type FlashReadDpCmd, %function +FlashReadDpCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r4, #0 - ldr sl, .L244 - mov r7, #239 - ldr r9, .L244+4 - mov r1, r4 - sub r8, sl, #864 - mov r6, #128 - mov r5, #1 -.L240: - mov r2, sl - ldrb lr, [r4, r9] @ zero_extendqisi2 - ldr r3, [r2, r4]! - cmp lr, #152 - cmpne lr, #69 - ldrb r2, [r2, #4] @ zero_extendqisi2 - add r2, r2, #8 - add ip, r3, r2, asl #8 - beq .L231 - cmp lr, #173 - cmpne lr, #44 - bne .L232 -.L231: - cmp r0, #1 - ldrb fp, [r8, #3772] @ zero_extendqisi2 - bne .L233 - tst fp, #1 - beq .L232 - cmp lr, #173 - str r7, [ip, #8] - streq r0, [ip, #4] - beq .L243 - cmp lr, #44 - streq r0, [ip, #4] - strne r6, [ip, #4] - moveq ip, #5 - strne r0, [r3, r2, asl #8] - bne .L238 - b .L242 -.L233: - tst fp, #4 - beq .L232 - cmp lr, #173 - str r7, [ip, #8] - streq r5, [ip, #4] - moveq ip, #32 - beq .L242 - cmp lr, #44 - strne r6, [ip, #4] - bne .L243 - str r5, [ip, #4] - mov ip, #35 -.L242: - str ip, [r3, r2, asl #8] - b .L238 -.L243: - str r1, [r3, r2, asl #8] -.L238: - str r1, [r3, r2, asl #8] - str r1, [r3, r2, asl #8] - str r1, [r3, r2, asl #8] -.L232: - add r4, r4, #8 - cmp r4, #32 - bne .L240 - mov r0, #0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r6, r1 + ldr r3, .L313 + mov r7, r0 + uxtb lr, r6 + mov ip, r6, lsr #8 + add r1, r3, r0, asl #3 + uxtb r9, r2 + ldrb r10, [r3, #52] @ zero_extendqisi2 + mov r8, r2, lsr #8 + ldrb r4, [r1, #16] @ zero_extendqisi2 + mov r5, r2, lsr #16 + ldr fp, [r1, #12] + ldrb r1, [r3, #60] @ zero_extendqisi2 + mov r4, r4, asl #8 + ldrb r3, [r3, #53] @ zero_extendqisi2 + cmp r1, #1 + add r4, fp, r4 + mov r1, r6, lsr #16 + str r10, [r4, #2056] + bne .L309 + mov r10, #0 + str r10, [r4, #2052] + str r10, [r4, #2052] + str lr, [r4, #2052] + str ip, [r4, #2052] + str r1, [r4, #2052] + str r3, [r4, #2056] bl NandcWaitFlashReady - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L245: + str r10, [r4, #2056] + str r10, [r4, #2052] + str r10, [r4, #2052] + b .L312 +.L309: + str lr, [r4, #2052] + str ip, [r4, #2052] + str r1, [r4, #2052] + str r3, [r4, #2056] +.L312: + str r9, [r4, #2052] + mov r3, #48 + str r8, [r4, #2052] + mov r0, r7 + str r5, [r4, #2052] + mov r1, r6 + str r3, [r4, #2056] + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + b FlashSetRandomizer +.L314: .align 2 -.L244: - .word .LANCHOR0+864 - .word .LANCHOR0+2980 +.L313: + .word .LANCHOR0 .fnend - .size FlashSetInterfaceMode, .-FlashSetInterfaceMode + .size FlashReadDpCmd, .-FlashReadDpCmd .align 2 .global ftl_flash_de_init .type ftl_flash_de_init, %function @@ -1862,109 +1889,43 @@ ftl_flash_de_init: stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r0, #0 - ldr r4, .L249 + ldr r4, .L326 bl NandcWaitFlashReady bl FlashSetReadRetryDefault - ldr r3, .L249+4 - ldr r2, [r4, #3776] - cmp r2, r3 - bne .L247 + ldr r0, [r4, #1728] + cmp r0, #0 + beq .L316 mov r0, #0 bl flash_enter_slc_mode -.L247: - ldrb r3, [r4, #3780] @ zero_extendqisi2 - ldr r5, .L249 + b .L317 +.L316: + bl flash_exit_slc_mode +.L317: + ldrb r3, [r4, #1732] @ zero_extendqisi2 + ldr r5, .L326 cmp r3, #0 - beq .L248 - ldrb r3, [r5, #3772] @ zero_extendqisi2 + beq .L318 + ldrb r3, [r5, #1716] @ zero_extendqisi2 tst r3, #1 - beq .L248 + beq .L318 mov r0, #1 bl FlashSetInterfaceMode mov r0, #1 bl NandcSetMode mov r3, #0 - strb r3, [r5, #3780] -.L248: - ldr r3, [r4, #864] + strb r3, [r5, #1732] +.L318: + ldr r3, [r4, #12] mov r0, #0 str r0, [r3, #336] ldmfd sp!, {r3, r4, r5, pc} -.L250: +.L327: .align 2 -.L249: +.L326: .word .LANCHOR0 - .word 1446522928 .fnend .size ftl_flash_de_init, .-ftl_flash_de_init .align 2 - .global FlashReadDpCmd - .type FlashReadDpCmd, %function -FlashReadDpCmd: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L255 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r7, r2 - add r2, r3, r0, asl #3 - mov r5, r1 - mov r4, r0 - ldrb r6, [r2, #868] @ zero_extendqisi2 - ldr r1, [r2, #864] - ldrb r2, [r3, #912] @ zero_extendqisi2 - add r6, r6, #8 - cmp r2, #1 - ldrb r2, [r3, #904] @ zero_extendqisi2 - add r6, r1, r6, asl #8 - str r2, [r6, #8] - bne .L252 - mov r8, #0 - uxtb r2, r5 - str r8, [r6, #4] - str r8, [r6, #4] - str r2, [r6, #4] - mov r2, r5, lsr #8 - str r2, [r6, #4] - mov r2, r5, lsr #16 - str r2, [r6, #4] - ldrb r3, [r3, #905] @ zero_extendqisi2 - str r3, [r6, #8] - bl NandcWaitFlashReady - str r8, [r6, #8] - str r8, [r6, #4] - str r8, [r6, #4] - b .L254 -.L252: - uxtb r2, r5 - str r2, [r6, #4] - mov r2, r5, lsr #8 - str r2, [r6, #4] - mov r2, r5, lsr #16 - str r2, [r6, #4] - ldrb r3, [r3, #905] @ zero_extendqisi2 - str r3, [r6, #8] -.L254: - uxtb r3, r7 - mov r0, r4 - str r3, [r6, #4] - mov r1, r5 - mov r3, r7, lsr #8 - mov r7, r7, lsr #16 - str r3, [r6, #4] - mov r3, #48 - str r7, [r6, #4] - str r3, [r6, #8] - ldmfd sp!, {r4, r5, r6, r7, r8, lr} - b FlashSetRandomizer -.L256: - .align 2 -.L255: - .word .LANCHOR0 - .fnend - .size FlashReadDpCmd, .-FlashReadDpCmd - .align 2 .global NandcRandmzSel .type NandcRandmzSel, %function NandcRandmzSel: @@ -1972,14 +1933,14 @@ NandcRandmzSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L258 - add r3, r3, r0, asl #3 - ldr r3, [r3, #864] + ldr r3, .L329 + add r0, r3, r0, asl #3 + ldr r3, [r0, #12] str r1, [r3, #336] bx lr -.L259: +.L330: .align 2 -.L258: +.L329: .word .LANCHOR0 .fnend .size NandcRandmzSel, .-NandcRandmzSel @@ -1996,106 +1957,40 @@ NandcTimeCfg: mov r4, r0 mov r0, #0 bl rknand_get_clk_rate - ldr r1, .L270 + ldr r1, .L342 bl __aeabi_idiv - ldr r3, .L270+4 - ldr r3, [r3, #3012] + ldr r3, .L342+4 + ldr r3, [r3, #76] cmp r0, #250 movwgt r2, #8354 - bgt .L268 + bgt .L340 cmp r0, #220 - bgt .L269 -.L263: + bgt .L341 cmp r0, #185 movwgt r2, #4226 - bgt .L268 + bgt .L340 cmp r0, #160 movwgt r2, #4194 - bgt .L268 + bgt .L340 cmp r4, #35 movwls r2, #4193 - bls .L268 + bls .L340 cmp r4, #99 movwls r2, #4225 - bls .L268 -.L269: + bls .L340 +.L341: movw r2, #8322 -.L268: +.L340: str r2, [r3, #4] ldmfd sp!, {r4, pc} -.L271: +.L343: .align 2 -.L270: +.L342: .word 1000000 .word .LANCHOR0 .fnend .size NandcTimeCfg, .-NandcTimeCfg .align 2 - .global NandcInit - .type NandcInit, %function -NandcInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r2, #0 - ldr r4, .L274 - mov r3, #1 - mov r5, #0 - str r0, [r4, #3012] - str r2, [r4, #868] - str r0, [r4, #864] - str r3, [r4, #876] - mov r3, #2 - str r0, [r4, #872] - str r3, [r4, #884] - mov r3, #3 - str r0, [r4, #880] - str r0, [r4, #888] - str r3, [r4, #892] - ldr r3, [r0, #0] - and r3, r3, #253952 - ubfx r1, r3, #13, #1 - bfi r3, r2, #13, #1 - ldr r2, [r0, #352] - orr r3, r3, #256 - str r1, [r4, #3784] - movw r1, #2049 - ubfx r2, r2, #16, #4 - str r2, [r4, #3788] - ldr r2, [r0, #352] - cmp r2, r1 - str r2, [r4, #3776] - moveq r2, #8 - streq r2, [r4, #3788] - str r3, [r0, #0] - mov r0, #40 - ldr r3, [r4, #3012] - str r5, [r3, #336] - bl NandcTimeCfg - ldr r3, [r4, #3012] - movw r2, #8322 - mov r0, #36864 - str r2, [r3, #344] - ldr r2, .L274+4 - str r2, [r3, #304] - bl ftl_malloc - str r5, [r4, #3820] - str r5, [r4, #3828] - str r0, [r4, #3792] - str r0, [r4, #3796] - add r0, r0, #32768 - str r0, [r4, #3800] - ldmfd sp!, {r3, r4, r5, pc} -.L275: - .align 2 -.L274: - .word .LANCHOR0 - .word 1710593 - .fnend - .size NandcInit, .-NandcInit - .align 2 .global FlashTimingCfg .type FlashTimingCfg, %function FlashTimingCfg: @@ -2104,60 +1999,123 @@ FlashTimingCfg: @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. sub r3, r0, #4160 - movw r2, #4225 sub r3, r3, #33 - cmp r0, r2 - cmpne r3, #1 - bls .L277 - movw r3, #4226 - movw r2, #8322 + bic r3, r3, #32 + cmp r3, #1 + bls .L345 + movw r3, #8322 cmp r0, r3 - cmpne r0, r2 - bne .L278 -.L277: - ldr r3, .L279 - ldr r3, [r3, #3012] + bne .L346 +.L345: + ldr r3, .L347 + ldr r3, [r3, #76] str r0, [r3, #4] -.L278: - ldr r3, .L279+4 - ldrb r0, [r3, #3009] @ zero_extendqisi2 +.L346: + ldr r3, .L347+4 + ldrb r0, [r3, #493] @ zero_extendqisi2 b NandcTimeCfg -.L280: +.L348: .align 2 -.L279: +.L347: .word .LANCHOR0 .word .LANCHOR1 .fnend .size FlashTimingCfg, .-FlashTimingCfg .align 2 + .global NandcInit + .type NandcInit, %function +NandcInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r1, #0 + ldr r3, .L352 + mov r2, #1 + mov r5, #0 + str r1, [r3, #16] + mov r4, r3 + str r0, [r3, #12] + str r2, [r3, #24] + mov r2, #2 + str r0, [r3, #20] + str r2, [r3, #32] + mov r2, #3 + str r0, [r3, #28] + str r0, [r3, #36] + str r0, [r3, #76] + str r2, [r3, #40] + ldr r2, [r0] + and r2, r2, #253952 + ubfx ip, r2, #13, #1 + bfi r2, r1, #13, #1 + ldr r1, [r0, #352] + orr r2, r2, #256 + str ip, [r3, #1736] + movw ip, #2049 + ubfx r1, r1, #16, #4 + str r1, [r3, #1740] + ldr r1, [r0, #352] + cmp r1, ip + str r1, [r3, #1744] + moveq r3, #8 + streq r3, [r4, #1740] + str r2, [r0] + mov r0, #40 + ldr r3, [r4, #76] + str r5, [r3, #336] + bl NandcTimeCfg + ldr r3, [r4, #76] + movw r2, #8322 + mov r0, #36864 + str r2, [r3, #344] + ldr r2, .L352+4 + str r2, [r3, #304] + bl ftl_malloc + str r5, [r4, #1776] + str r5, [r4, #1784] + str r0, [r4, #1748] + str r0, [r4, #1752] + add r0, r0, #32768 + str r0, [r4, #1756] + ldmfd sp!, {r3, r4, r5, pc} +.L353: + .align 2 +.L352: + .word .LANCHOR0 + .word 1579009 + .fnend + .size NandcInit, .-NandcInit + .align 2 .global NandcGetTimeCfg .type NandcGetTimeCfg, %function NandcGetTimeCfg: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L282 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldr r4, [ip, #3012] - ldr r4, [r4, #4] - str r4, [r0, #0] - ldr r0, [ip, #3012] - ldr r0, [r0, #0] - str r0, [r1, #0] - ldr r1, [ip, #3012] + ldr ip, .L356 + str lr, [sp, #-4]! + .save {lr} + ldr lr, [ip, #76] + ldr lr, [lr, #4] + str lr, [r0] + ldr r0, [ip, #76] + ldr r0, [r0] + str r0, [r1] + ldr r1, [ip, #76] ldr r1, [r1, #304] - str r1, [r2, #0] - ldr r2, [ip, #3012] - ldr r0, [r2, #308] - ldr r1, [r2, #344] - uxtb r2, r0 + str r1, [r2] + ldr r1, [ip, #76] + ldr r2, [r1, #308] + ldr r1, [r1, #344] + uxtb r2, r2 orr r2, r2, r1, asl #16 - str r2, [r3, #0] - ldmfd sp!, {r4, pc} -.L283: + str r2, [r3] + ldr pc, [sp], #4 +.L357: .align 2 -.L282: +.L356: .word .LANCHOR0 .fnend .size NandcGetTimeCfg, .-NandcGetTimeCfg @@ -2169,34 +2127,35 @@ NandcBchSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L289 + ldr r3, .L366 mov r1, #1 - ldr r2, [r3, #3012] - str r0, [r3, #3832] + ldr r2, [r3, #76] + str r0, [r3, #1788] mov r3, #0 str r1, [r2, #8] mov r1, #16 cmp r0, r1 bfi r3, r1, #8, #8 bfc r3, #18, #1 - beq .L288 -.L285: + bne .L359 +.L362: + bfc r3, #4, #1 + b .L360 +.L359: cmp r0, #24 orreq r3, r3, #16 - beq .L286 + beq .L360 cmp r0, #40 orr r3, r3, #262144 orr r3, r3, #16 - bne .L286 -.L288: - bfc r3, #4, #1 -.L286: + beq .L362 +.L360: orr r3, r3, #1 str r3, [r2, #12] bx lr -.L290: +.L367: .align 2 -.L289: +.L366: .word .LANCHOR0 .fnend .size NandcBchSel, .-NandcBchSel @@ -2208,12 +2167,12 @@ FlashBchSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L292 - strb r0, [r3, #3836] + ldr r3, .L369 + strb r0, [r3, #1792] b NandcBchSel -.L293: +.L370: .align 2 -.L292: +.L369: .word .LANCHOR0 .fnend .size FlashBchSel, .-FlashBchSel @@ -2224,64 +2183,64 @@ ftl_flash_resume: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L299 + ldr r3, .L380 stmfd sp!, {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r4, #0 - ldr r2, [r3, #3012] - ldr r1, [r3, #3016] - ldr r5, [r3, #3032] - ldr r6, .L299+4 - str r1, [r2, #0] - ldr r1, [r3, #3020] - ldr r2, [r3, #3012] + mov r5, #0 + ldr r2, [r3, #76] + mov r4, r3 + ldr r1, [r3, #80] + ldr r6, .L380+4 + str r1, [r2] + ldr r1, [r3, #84] + ldr r2, [r3, #76] str r1, [r2, #4] - ldr r1, [r3, #3024] + ldr r1, [r3, #88] str r1, [r2, #8] - ldr r1, [r3, #3028] + ldr r1, [r3, #92] str r1, [r2, #12] - ldr r1, [r3, #3036] - str r5, [r2, #304] + ldr r1, [r3, #96] + str r1, [r2, #304] + ldr r1, [r3, #100] str r1, [r2, #308] - ldr r1, [r3, #3040] - ldr r3, [r3, #3044] + ldr r1, [r3, #104] str r1, [r2, #336] - str r3, [r2, #344] -.L296: - ldrb r3, [r6, r4, asl #3] @ zero_extendqisi2 + ldr r1, [r3, #108] + str r1, [r2, #344] +.L373: + ldrb r3, [r6, r5, asl #3] @ zero_extendqisi2 sub r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L295 - uxtb r0, r4 + bhi .L372 + uxtb r0, r5 bl FlashReset -.L295: - add r4, r4, #1 - cmp r4, #4 - bne .L296 - ldr r4, .L299 - ldrb r3, [r4, #3780] @ zero_extendqisi2 +.L372: + add r5, r5, #1 + cmp r5, #4 + bne .L373 + ldrb r3, [r4, #1732] @ zero_extendqisi2 + ldr r5, .L380 cmp r3, #0 - beq .L297 + beq .L374 mov r0, #1 bl NandcSetMode - ldrb r0, [r4, #3772] @ zero_extendqisi2 + ldrb r0, [r5, #1716] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r4, #3772] @ zero_extendqisi2 + ldrb r0, [r5, #1716] @ zero_extendqisi2 bl NandcSetMode - ubfx r0, r5, #8, #8 + ldrb r0, [r5, #97] @ zero_extendqisi2 bl NandcSetDdrPara -.L297: - ldr r3, .L299 - ldr r3, [r3, #3624] - ldrb r0, [r3, #20] @ zero_extendqisi2 +.L374: + ldr r3, [r4, #692] ldmfd sp!, {r4, r5, r6, lr} + ldrb r0, [r3, #20] @ zero_extendqisi2 b FlashBchSel -.L300: +.L381: .align 2 -.L299: +.L380: .word .LANCHOR0 - .word .LANCHOR0+2980 + .word .LANCHOR0+1556 .fnend .size ftl_flash_resume, .-ftl_flash_resume .align 2 @@ -2330,16 +2289,13 @@ NandcIqrWaitFlashReady: ldr r3, [r4, #364] orr r3, r3, #2 str r3, [r4, #364] - ldr r3, [r4, #0] - ubfx r3, r3, #8, #8 - and r3, r3, #2 - uxtb r3, r3 - cmp r3, #0 - bne .L304 + ldr r3, [r4] + tst r3, #512 + bne .L385 mov r0, r4 ldmfd sp!, {r4, lr} b wait_for_nand_flash_ready -.L304: +.L385: ldr r3, [r4, #368] orr r3, r3, #2 str r3, [r4, #368] @@ -2354,152 +2310,171 @@ NandcIqrWaitFlashReady: .type FlashEraseBlocks, %function FlashEraseBlocks: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #28 - sub sp, sp, #28 - ldr r5, .L325 - mov r6, r0 - str r1, [sp, #12] - mov r7, r2 - ldrb r4, [r5, #852] @ zero_extendqisi2 - cmp r4, #0 - moveq r9, r5 - beq .L306 - mov r1, r2 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r2 + ldr r4, .L424 + .pad #36 + sub sp, sp, #36 + ldr r3, .L424+4 + ldrb r5, [r4] @ zero_extendqisi2 + ldr r2, [r3] + cmp r5, #0 + str r3, [sp, #12] + str r2, [sp, #28] + moveq r9, r0 + moveq r10, r1 + moveq fp, r4 + beq .L388 + mov r1, r8 bl FlashEraseSLc2KBlocks - b .L307 -.L315: - mov r8, #36 - rsb r3, r4, r7 - mul r8, r8, r4 - uxtb r3, r3 + b .L389 +.L397: + mov r3, #36 mov r1, #0 - str r3, [sp, #0] - add r2, sp, #16 - add r3, sp, #20 - add fp, r6, r8 - mov r0, fp + mul r6, r3, r5 + add r2, sp, #20 + add r3, r9, r6 + str r3, [sp, #8] + rsb r3, r5, r8 + ldr r0, [sp, #8] + uxtb r3, r3 + str r3, [sp] + add r3, sp, #24 bl LogAddr2PhyAddr - ldrb r3, [r5, #3762] @ zero_extendqisi2 - mov sl, r0 - ldr r0, [sp, #20] + ldrb r3, [r4, #1717] @ zero_extendqisi2 + mov r7, r0 + ldr r0, [sp, #24] cmp r0, r3 mvncs r3, #0 - strcs r3, [r6, r8] - bcs .L309 - ldrb r3, [r5, #3837] @ zero_extendqisi2 + strcs r3, [r9, r6] + bcc .L421 +.L391: + add r5, r5, #1 +.L388: + cmp r5, r8 + bcc .L397 + b .L422 +.L421: + ldrb r3, [fp, #1793] @ zero_extendqisi2 cmp r3, #0 - add r3, r9, r0, asl #4 - ldr r3, [r3, #3636] - moveq sl, #0 + add r3, r4, r0, asl #4 + ldr r3, [r3, #1596] + moveq r7, #0 cmp r3, #0 - beq .L311 + beq .L393 uxtb r0, r0 bl FlashWaitCmdDone -.L311: - ldr r2, [sp, #20] - mov r1, #0 - cmp sl, #0 - add r3, r5, r2, asl #4 - movne r0, #36 - str r1, [r3, #3640] - ldr r1, [sp, #16] - str fp, [r3, #3636] - str r1, [r3, #3632] - addne r1, r4, #1 - mlane r1, r0, r1, r6 - strne r1, [r3, #3640] - add r3, r9, r2 - add r2, r9, r2, asl #4 - ldrb r8, [r3, #3764] @ zero_extendqisi2 - mov r0, r8 - strb r8, [r2, #3628] +.L393: + ldr r2, [sp, #24] + cmp r7, #0 + ldr r0, [sp, #8] + addne ip, r6, #36 + addne ip, r9, ip + mov r3, r2, asl #4 + add r2, r4, r2 + add r1, r4, r3 + add r3, r4, r3 + ldrb r6, [r2, #1720] @ zero_extendqisi2 + str r0, [r1, #1596] + mov r0, #0 + str r0, [r1, #1600] + ldr r0, [sp, #20] + strne ip, [r1, #1600] + strb r6, [r3, #1588] + str r0, [r1, #1592] + mov r0, r6 bl NandcFlashCs - ldr r3, [sp, #12] - mov r0, r8 - cmp r3, #1 - bne .L313 - ldrb r3, [r5, #928] @ zero_extendqisi2 + cmp r10, #1 + mov r0, r6 + bne .L395 + ldrb r3, [fp, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L313 + beq .L395 bl flash_enter_slc_mode - b .L314 -.L313: + b .L396 +.L395: bl flash_exit_slc_mode -.L314: - ldr r3, [sp, #20] - mov r0, r8 - ldr r1, [sp, #16] - add r4, r4, sl - add r3, r5, r3, asl #2 - ldr r2, [r3, #3588] +.L396: + ldr r3, [sp, #24] + mov r0, r6 + ldr r1, [sp, #20] + add r5, r5, r7 + add r3, r4, r3, asl #2 + ldr r2, [r3, #656] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - mov r0, r8 - ldr r1, [sp, #16] - mov r2, sl + mov r0, r6 + mov r2, r7 + ldr r1, [sp, #20] bl FlashEraseCmd - mov r0, r8 + mov r0, r6 bl NandcFlashDeCs -.L309: - add r4, r4, #1 -.L306: - cmp r4, r7 - bcc .L315 - ldr r5, .L325 - mov r4, #0 - ldr r8, .L325+4 - ldr r0, [r5, #3012] + b .L391 +.L422: + ldr r0, [r4, #76] + mov r5, #0 bl NandcIqrWaitFlashReady - b .L316 -.L318: - uxtb r0, r4 + ldr r6, .L424 + ldr r7, .L424+8 +.L398: + ldrb r2, [r4, #1717] @ zero_extendqisi2 + ldr r3, .L424 + cmp r5, r2 + bcs .L423 + uxtb r0, r5 bl FlashWaitCmdDone - ldr r3, [sp, #12] - cmp r3, #1 - bne .L317 - ldrb r3, [r5, #928] @ zero_extendqisi2 + cmp r10, #1 + bne .L399 + ldrb r3, [r6, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L317 - ldrb r0, [r8, r4, asl #4] @ zero_extendqisi2 + beq .L399 + ldrb r0, [r7, r5, asl #4] @ zero_extendqisi2 bl flash_exit_slc_mode -.L317: - add r4, r4, #1 -.L316: - ldrb r2, [r5, #3762] @ zero_extendqisi2 - ldr r3, .L325 - cmp r4, r2 - bcc .L318 - ldr r0, [r3, #3840] - cmp r0, #0 - beq .L307 - ldrb r3, [r3, #2980] @ zero_extendqisi2 - cmp r3, #69 - moveq r3, #0 - moveq r2, r3 - bne .L324 - b .L319 -.L320: - add r3, r3, #1 - str r2, [r6, #-36] -.L319: - cmp r3, r7 - add r6, r6, #36 - bne .L320 -.L324: +.L399: + add r5, r5, #1 + b .L398 +.L423: + ldr r2, [r3, #1796] + cmp r2, #0 + bne .L401 +.L403: mov r0, #0 -.L307: - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L326: + b .L389 +.L401: + ldrb r3, [r3, #1556] @ zero_extendqisi2 + cmp r3, #69 + bne .L403 + mov r3, #0 + mov r2, #36 + mov r1, r3 +.L402: + cmp r3, r8 + beq .L403 + mul r0, r2, r3 + add r3, r3, #1 + str r1, [r9, r0] + b .L402 +.L389: + ldr r3, [sp, #12] + ldr r2, [sp, #28] + ldr r3, [r3] + cmp r2, r3 + beq .L405 + bl __stack_chk_fail +.L405: + add sp, sp, #36 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L425: .align 2 -.L325: +.L424: .word .LANCHOR0 - .word .LANCHOR0+3628 + .word __stack_chk_guard + .word .LANCHOR0+1588 .fnend .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 @@ -2530,10 +2505,10 @@ NandcSendDumpDataStart: ldr r2, [r0, #16] .pad #8 sub sp, sp, #8 - ldr r3, .L329 + ldr r3, .L429 str r2, [sp, #4] ldr r2, [sp, #4] - bfc r2, #2, #1 + bic r2, r2, #4 str r2, [sp, #4] ldr r2, [sp, #4] str r2, [r0, #16] @@ -2541,10 +2516,11 @@ NandcSendDumpDataStart: orr r3, r3, #4 str r3, [r0, #8] add sp, sp, #8 + @ sp needed bx lr -.L330: +.L430: .align 2 -.L329: +.L429: .word 538969130 .fnend .size NandcSendDumpDataStart, .-NandcSendDumpDataStart @@ -2558,13 +2534,14 @@ NandcSendDumpDataDone: @ link register save eliminated. .pad #8 sub sp, sp, #8 -.L332: +.L432: ldr r3, [r0, #8] str r3, [sp, #4] ldr r3, [sp, #4] tst r3, #1048576 - beq .L332 + beq .L432 add sp, sp, #8 + @ sp needed bx lr .fnend .size NandcSendDumpDataDone, .-NandcSendDumpDataDone @@ -2573,219 +2550,160 @@ NandcSendDumpDataDone: .type NandcXferStart, %function NandcXferStart: .fnstart - @ args = 8, pretend = 0, frame = 16 + @ args = 8, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r6, r1 - ldr r1, .L347 - mov r8, r2 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov lr, #16 + ldr r5, .L454 mov r4, #0 - .pad #20 - sub sp, sp, #20 - add r0, r1, r0, asl #3 - ldr r9, [sp, #56] - ldr r5, [r0, #864] - ldrb r2, [r0, #868] @ zero_extendqisi2 - mov r0, #16 - ldr ip, [sp, #60] - ldr r7, [r5, #12] - bfi r7, r0, #8, #8 + .pad #28 + sub sp, sp, #28 + add r0, r5, r0, asl #3 + ldr r8, [sp, #64] + ldr r6, [r0, #12] + ldrb r0, [r0, #16] @ zero_extendqisi2 + ldr ip, [sp, #68] + ldr r7, [r6, #12] + bfi r7, lr, #8, #8 bfi r7, r4, #3, #1 - bfi r4, r6, #1, #1 + bfi r4, r1, #1, #1 orr r4, r4, #8 - bfi r7, r2, #5, #3 - mov r2, #1 - bfi r4, r2, #5, #2 + bfi r7, r0, #5, #3 + mov r0, #1 + bfi r4, r0, #5, #2 orr r4, r4, #536870912 - mov r3, r3, lsr r2 + mov r3, r3, lsr r0 orr r4, r4, #1024 bfi r4, r3, #4, #1 - ldr r3, [r1, #3788] + ldr r3, [r5, #1740] cmp r3, #3 - bls .L335 - ldr r3, [r5, #16] - cmp r9, #0 - cmpeq ip, #0 - str r3, [sp, #12] - ldr r3, [sp, #12] - bfc r3, #2, #1 - str r3, [sp, #12] - beq .L336 - cmp r6, #0 - beq .L337 - ldr r3, [r1, #3832] - mov r0, ip - cmp r3, #24 - movhi r3, #128 - movls r3, #64 - str r3, [sp, #0] - mov r3, r8, lsr r2 - str r3, [sp, #4] - mov r3, #0 - mov r2, r3 - b .L339 -.L342: + bls .L437 + ldr r3, [r6, #16] + str r3, [sp, #20] + ldr r3, [sp, #20] + bic r3, r3, #4 + str r3, [sp, #20] + adds r3, ip, #0 + movne r3, #1 cmp ip, #0 - mov lr, r3, lsr #2 - add r2, r2, #1 - ldrneh fp, [r0, #2] - mvneq fp, #0 - ldrneh sl, [r0], #4 - ldreq sl, [r1, #3800] - orrne sl, sl, fp, asl #16 - ldrne fp, [r1, #3800] - streq fp, [sl, lr, asl #2] - strne sl, [fp, lr, asl #2] - ldr lr, [sp, #0] - add r3, r3, lr -.L339: - ldr sl, [sp, #4] - cmp r2, sl - bcc .L342 -.L337: - mov r0, r5 - add r8, r8, #1 + cmpeq r8, #0 + str r3, [sp, #8] + beq .L438 + cmp r1, #0 + bne .L439 +.L447: + mov r0, r6 + mov r10, r2 + mov r9, r1 bl rk_nandc_xfer_irq_flag_init - ldr r3, [r5, #368] - mov r8, r8, asr #1 - cmp r9, #0 - bfi r4, r8, #22, #6 - ldr r8, .L347 + ldr r3, [r6, #368] + add r10, r10, #1 + cmp r8, #0 orr r3, r3, #1 - str r3, [r5, #368] - ldr r3, [r5, #364] - ubfx sl, r4, #22, #5 - ldreq r0, [r8, #3796] - movne r0, r9 + str r3, [r6, #368] + ldr r3, [r6, #364] + mov r10, r10, asr #1 + bfi r4, r10, #22, #6 + movne r0, r8 orr r3, r3, #1 - str r3, [r5, #364] - ldr r3, [r8, #3800] - mov r2, r6 - mov r1, sl, asl #10 - str r3, [r8, #3808] - str r0, [r8, #3804] + str r3, [r6, #364] + ldreq r0, [r5, #1752] + b .L441 +.L439: + ldr r3, [r5, #1788] + mov r9, r5 + cmp r3, #25 + movcc r3, #64 + movcs r3, #128 + str r3, [sp, #4] + mov r3, r2, lsr #1 + str r3, [sp, #12] + mov r3, #0 + mov r0, r3 +.L443: + ldr lr, [sp, #12] + cmp r0, lr + bcs .L447 + ldr lr, [sp, #8] + mov r10, r3, lsr #2 + add r0, r0, #1 + cmp lr, #0 + ldrneh fp, [ip, #2] + mvneq fp, #0 + ldrneh lr, [ip], #4 + ldreq lr, [r9, #1756] + orrne lr, lr, fp, asl #16 + ldrne fp, [r9, #1756] + streq fp, [lr, r10, asl #2] + strne lr, [fp, r10, asl #2] + ldr lr, [sp, #4] + add r3, r3, lr + b .L443 +.L441: + ldr r3, [r5, #1756] + ubfx r10, r4, #22, #5 + mov r2, r9 + str r0, [r5, #1760] + mov r1, r10, asl #10 + str r3, [r5, #1764] bl rknand_dma_map_single - mov r2, r6 - mov r1, sl, asl #7 - str r0, [r8, #3812] - ldr r0, [r8, #3808] + mov r2, r9 + mov r1, r10, asl #7 + clz r9, r9 + mov r9, r9, lsr #5 + str r0, [r5, #1768] + ldr r0, [r5, #1764] bl rknand_dma_map_single mov r3, #1 - str r3, [r8, #3820] - mov r2, #16 - ldr r3, [r8, #3812] - tst r9, #3 - str r0, [r8, #3816] - str r3, [r5, #20] - ldr r3, [r8, #3816] - str r3, [r5, #24] + str r3, [r5, #1776] + tst r8, #3 + ldr r3, [r5, #1768] + str r0, [r5, #1772] + str r3, [r6, #20] + ldr r3, [r5, #1772] + str r3, [r6, #24] mov r3, #0 - str r3, [sp, #12] - ldr r3, [sp, #12] - bfi r3, r2, #9, #5 - str r3, [sp, #12] - ldr r3, [sp, #12] - moveq r2, #2 + str r3, [sp, #20] + ldr r3, [sp, #20] + bic r3, r3, #15872 + orr r3, r3, #8192 + str r3, [sp, #20] + ldr r3, [sp, #20] orr r3, r3, #448 - str r3, [sp, #12] - ldreq r3, [sp, #12] - bfieq r3, r2, #3, #3 - streq r3, [sp, #12] - rsbs r6, r6, #1 - ldr r3, [sp, #12] - movcc r6, #0 + str r3, [sp, #20] + ldreq r3, [sp, #20] + biceq r3, r3, #56 + orreq r3, r3, #16 + streq r3, [sp, #20] + ldr r3, [sp, #20] orr r3, r3, #4 - str r3, [sp, #12] - ldr r3, [sp, #12] - bfi r3, r6, #1, #1 - str r3, [sp, #12] - ldr r3, [sp, #12] + str r3, [sp, #20] + ldr r3, [sp, #20] + bic r3, r3, #2 + orr r9, r3, r9, asl #1 + str r9, [sp, #20] + ldr r3, [sp, #20] orr r3, r3, #1 - str r3, [sp, #12] -.L336: - ldr r3, [sp, #12] - str r3, [r5, #16] -.L335: - str r7, [r5, #12] - str r4, [r5, #8] + str r3, [sp, #20] +.L438: + ldr r3, [sp, #20] + str r3, [r6, #16] +.L437: + str r7, [r6, #12] + str r4, [r6, #8] orr r4, r4, #4 - str r4, [r5, #8] - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L348: + str r4, [r6, #8] + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L455: .align 2 -.L347: +.L454: .word .LANCHOR0 .fnend .size NandcXferStart, .-NandcXferStart .align 2 - .global NandcCopy1KB - .type NandcCopy1KB, %function -NandcCopy1KB: - .fnstart - @ args = 4, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r1, #1 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r5, r2 - add r2, r0, #4096 - mov r4, r0 - ldr r6, [sp, #16] - add r2, r2, r5, asl #9 - bne .L350 - cmp r3, #0 - beq .L351 - mov r0, r2 - mov r1, r3 - mov r2, #1024 - bl memcpy -.L351: - cmp r6, #0 - ldmeqfd sp!, {r4, r5, r6, pc} - ldrb r3, [r6, #2] @ zero_extendqisi2 - mov r5, r5, lsr #1 - ldrb r2, [r6, #1] @ zero_extendqisi2 - mov r3, r3, asl #16 - orr r3, r3, r2, asl #8 - ldrb r2, [r6, #0] @ zero_extendqisi2 - orr r3, r3, r2 - ldrb r2, [r6, #3] @ zero_extendqisi2 - orr r3, r3, r2, asl #24 - mov r2, #48 - mul r5, r2, r5 - mov r5, r5, asr #2 - add r5, r5, #128 - str r3, [r4, r5, asl #2] - ldmfd sp!, {r4, r5, r6, pc} -.L350: - cmp r3, #0 - beq .L353 - mov r1, r2 - mov r0, r3 - mov r2, #1024 - bl memcpy -.L353: - cmp r6, #0 - ldmeqfd sp!, {r4, r5, r6, pc} - mov r5, r5, lsr #1 - mov r3, #48 - mul r5, r3, r5 - mov r5, r5, asr #2 - add r5, r5, #128 - ldr r3, [r4, r5, asl #2] - mov r2, r3, lsr #8 - strb r3, [r6, #0] - strb r2, [r6, #1] - mov r2, r3, lsr #16 - mov r3, r3, lsr #24 - strb r2, [r6, #2] - strb r3, [r6, #3] - ldmfd sp!, {r4, r5, r6, pc} - .fnend - .size NandcCopy1KB, .-NandcCopy1KB - .align 2 .global Ftl_log2 .type Ftl_log2, %function Ftl_log2: @@ -2793,18 +2711,17 @@ Ftl_log2: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. + mov r1, #0 mov r2, #1 - mov r3, #0 - b .L355 -.L356: - add r3, r3, #1 - mov r2, r2, asl #1 - uxth r3, r3 -.L355: +.L457: cmp r2, r0 - bls .L356 - sub r3, r3, #1 - uxth r0, r3 + uxth r3, r1 + add r1, r1, #1 + movls r2, r2, asl #1 + bls .L457 +.L459: + sub r0, r3, #1 + uxth r0, r0 bx lr .fnend .size Ftl_log2, .-Ftl_log2 @@ -2827,27 +2744,27 @@ FtlSysBlkNumInit: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L361 - movw r2, #3848 + ldr r3, .L463 + movw r2, #1804 cmp r0, #23 - movw r1, #3858 + movw r1, #1814 ldrh r2, [r3, r2] movls r0, #24 ldrh r1, [r3, r1] - str r0, [r3, #3844] + str r0, [r3, #1800] mul r2, r2, r0 rsb r0, r0, r1 - mov r1, #3856 + movw r1, #1812 strh r0, [r3, r1] @ movhi mov r0, #0 - ldr r1, [r3, #3864] - str r2, [r3, #3852] + ldr r1, [r3, #1820] + str r2, [r3, #1808] rsb r2, r2, r1 - str r2, [r3, #3860] + str r2, [r3, #1816] bx lr -.L362: +.L464: .align 2 -.L361: +.L463: .word .LANCHOR0 .fnend .size FtlSysBlkNumInit, .-FtlSysBlkNumInit @@ -2858,262 +2775,266 @@ FtlConstantsInit: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - movw r2, #3868 - ldr r3, .L380 - mov r4, r0 - ldrh lr, [r0, #8] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r1, #1828 + ldr r4, .L493 + mov r5, r0 + ldrh r6, [r0, #8] .pad #20 sub sp, sp, #20 - ldrh r1, [r0, #10] - ldrh r0, [r0, #12] - strh lr, [r3, r2] @ movhi - add r2, r2, #2 - ldrh r6, [r4, #14] - strh r1, [r3, r2] @ movhi - mov r2, #3872 - strh r0, [r3, r2] @ movhi - movw r2, #3858 - strh r6, [r3, r2] @ movhi - mov r3, #0 - ldr r2, .L380+4 -.L364: - strb r3, [r3, r2] - add r3, r3, #1 - cmp r3, #32 - bne .L364 - ldrh r2, [r4, #14] - ldrh r3, [r4, #20] - cmp r3, r2, lsr #8 - bcs .L365 - ldr r2, .L380+4 - sub ip, r1, #1 - uxtb r7, r0 - mov r3, #0 - rsb sl, r0, r2 - str sl, [sp, #8] - mla ip, r0, ip, r2 - mov r8, r7, asl #1 - uxtb r8, r8 - str ip, [sp, #12] - b .L366 -.L367: - strb ip, [r9, r2] - add fp, ip, r7 - add ip, ip, r8 - add r5, r5, #1 - strb fp, [sl, r2] - uxtb ip, ip -.L369: - cmp r5, r1 - add r2, r2, r0 - bcc .L367 - add r3, r3, #1 -.L366: - cmp r3, r0 - bcs .L368 - ldr fp, [sp, #8] - mov r2, #0 - uxtb ip, r3 - mov r5, r2 - add r9, fp, r3 - ldr fp, [sp, #12] - add sl, fp, r3 - b .L369 -.L368: - ldr r3, .L380 - movw r2, #3870 - mov r1, r1, asl #1 - mov r6, r6, lsr #1 - strh r1, [r3, r2] @ movhi - movw r2, #3858 - strh r6, [r3, r2] @ movhi -.L365: - ldr r3, .L380 - movw r2, #3906 - cmp lr, #1 - mov r1, #5 + add r3, r4, #1824 + ldrh r2, [r0, #10] + ldrh lr, [r0, #14] + strh r6, [r3] @ movhi + movw r3, #1826 + strh r2, [r4, r3] @ movhi + ldrh r3, [r0, #12] + ldr r0, .L493+4 + strh r3, [r4, r1] @ movhi + movw r1, #1814 + strh lr, [r4, r1] @ movhi + mov r1, #0 +.L466: + strb r1, [r1, r0] + add r1, r1, #1 + cmp r1, #32 + bne .L466 + ldrh r0, [r5, #14] + ldrh r1, [r5, #20] + cmp r1, r0, lsr #8 + bcs .L467 + uxtb r10, r3 + ldr r9, .L493+4 + mov r1, r10, asl #1 + uxtb r1, r1 + str r1, [sp, #4] + sub r1, r2, #1 + mul r1, r3, r1 + str r1, [sp] + mov r1, #0 +.L468: + cmp r1, r3 + bcs .L470 + ldr ip, [sp] + uxtb r0, r1 + rsb r7, r3, r1 + add ip, r1, ip + add r7, r9, r7 + add ip, r9, ip + str ip, [sp, #8] mov ip, #0 - ldr sl, .L380 - ldrb r8, [r3, #852] @ zero_extendqisi2 - strh r1, [r3, r2] @ movhi - movw r1, #3908 - streqh lr, [r3, r2] @ movhi - cmp r8, #0 - movw r2, #3910 - strh ip, [r3, r1] @ movhi + str r7, [sp, #12] + mov r8, ip +.L471: + cmp r8, r2 + add ip, ip, r3 + bcs .L492 + ldr r7, [sp, #12] + add fp, r0, r10 + add r8, r8, #1 + strb r0, [r7, ip] + ldr r7, [sp, #8] + strb fp, [r7, ip] + ldr r7, [sp, #4] + add r0, r0, r7 + uxtb r0, r0 + b .L471 +.L492: + add r1, r1, #1 + b .L468 +.L470: + movw r1, #1826 + mov r2, r2, asl #1 + strh r2, [r4, r1] @ movhi + movw r2, #1814 + mov lr, lr, lsr #1 + strh lr, [r4, r2] @ movhi +.L467: + cmp r6, #1 + movw r2, #1864 + mov r1, #5 + strh r1, [r4, r2] @ movhi + movw r1, #1866 + mov r0, #0 + strh r0, [r4, r1] @ movhi + ldreq r1, .L493 + ldrb r9, [r4] @ zero_extendqisi2 + ldrh r10, [r5, #16] + streqh r6, [r1, r2] @ movhi + cmp r9, #0 + movw r2, #1868 mov r1, #4352 - strh r1, [r3, r2] @ movhi - ldrne r3, .L380 - movne r1, #384 - strneh r1, [r3, r2] @ movhi - movw r3, #3870 - ldrh r5, [sl, r3] - movw r3, #3848 - mul r5, r5, r0 - uxth r5, r5 - strh r5, [sl, r3] @ movhi - add r3, r3, #10 - ldrh r6, [sl, r3] - add r3, r3, #54 - mul r0, r0, r6 - uxth r0, r0 - strh r0, [sl, r3] @ movhi + strh r1, [r4, r2] @ movhi + movne r0, #384 + ldrne r1, .L493 + strneh r0, [r1, r2] @ movhi + movw r1, #1826 + ldrh r8, [r4, r1] + movw r1, #1804 + ldr r2, .L493 + smulbb r8, r8, r3 + add r7, r2, #1872 + str r2, [sp, #8] + strh r10, [r7] @ movhi + uxth r8, r8 + strh r8, [r4, r1] @ movhi + movw r1, #1814 + ldrh r6, [r4, r1] + movw r1, #1870 + smulbb r0, r8, r10 + smulbb r3, r6, r3 + strh r3, [r4, r1] @ movhi + movw r3, #1874 + ldrh r1, [r5, #18] + strh r1, [r4, r3] @ movhi + movw r3, #1876 + strh r0, [r4, r3] @ movhi + movw r0, #1878 + ldrh r3, [r5, #20] + str r1, [sp, #4] + strh r3, [r4, r0] @ movhi + mov r0, r3 + str r3, [sp] bl Ftl_log2 - movw r3, #3914 - ldrh fp, [r4, #18] - movw r2, #3916 - ldrh r9, [r4, #20] - strh r0, [sl, r3] @ movhi - mov r0, r9 - ldrh r3, [r4, #16] - mul r1, r3, r5 - strh r3, [sl, r2] @ movhi - add r2, r2, #2 - strh fp, [sl, r2] @ movhi - mov r2, #3920 - strh r1, [sl, r2] @ movhi - add r2, r2, #2 - strh r9, [sl, r2] @ movhi - str r3, [sp, #4] - bl Ftl_log2 - movw r2, #3924 - movw r1, #3926 + movw ip, #1882 cmp r6, #1024 - strh r0, [sl, r2] @ movhi - mov r2, r9, asl #9 - mov r7, r0 - uxth r2, r2 - strh r2, [sl, r1] @ movhi - add r1, r1, #2 - mov r2, r2, lsr #8 - strh r2, [sl, r1] @ movhi - movw r2, #3930 - ldrh r1, [r4, #26] - mov r4, sl - strh r1, [sl, r2] @ movhi - uxtbhi r1, r6 - mul r2, r6, r5 - str r2, [sl, #3864] - movw r2, #3908 - ldr r3, [sp, #4] - strhih r1, [sl, r2] @ movhi - ldrh r2, [sl, r2] - mul r1, fp, r9 + ldr r3, [sp] + mov fp, r0 + movw r0, #1880 + ldmib sp, {r1, r2} + strh fp, [r4, r0] @ movhi + mov r0, r3, asl #9 + mul r1, r1, r3 + uxth r0, r0 + strh r0, [r4, ip] @ movhi + movw ip, #1884 + mov r0, r0, lsr #8 + strh r0, [r4, ip] @ movhi + ldrh ip, [r5, #26] + movw r0, #1886 + ldr r5, .L493 + strh ip, [r4, r0] @ movhi + movwhi ip, #1866 + mul r0, r6, r8 + str r0, [r4, #1820] + uxtbhi r0, r6 + strhih r0, [r2, ip] @ movhi + movw r2, #1866 + ldrh r2, [r4, r2] rsb r2, r2, r6 mov r6, r6, asl #6 - mul r2, r2, r5 - mul r2, r9, r2 - mul r3, r3, r2 - mov r3, r3, asr #11 - str r3, [sl, #3932] - movw sl, #3910 - ldrh r0, [r4, sl] + mul r2, r2, r8 + mul r2, r3, r2 + mul r10, r10, r2 + movw r2, #1868 + ldrh r0, [r4, r2] mov r0, r0, asl #3 + mov r10, r10, asr #11 + str r10, [r4, #1888] bl __aeabi_idiv - mov r3, #3936 + movw r3, #1892 + mov r1, r8 + ldr r10, .L493 uxth r0, r0 - strh r0, [r4, r3] @ movhi cmp r0, #4 - ldr r4, .L380 - ldrls r2, .L380 - movls r1, #4 - strlsh r1, [r2, r3] @ movhi - cmp r8, #0 - mov r1, r5 - movne r3, #640 - strneh r3, [r4, sl] @ movhi - ldrh r2, [r4, sl] - movw r3, #3938 - mov r2, r2, asr r7 - add r7, r7, #9 - mov r6, r6, asr r7 - add r2, r2, #2 - strh r2, [r4, r3] @ movhi + strhih r0, [r5, r3] @ movhi + movls r2, #4 + strlsh r2, [r5, r3] @ movhi + cmp r9, #0 + movwne r3, #1868 + movne r2, #640 + strneh r2, [r4, r3] @ movhi + movw r3, #1868 + ldrh r3, [r4, r3] + movw r2, #1894 + mov r3, r3, asr fp + add fp, fp, #9 + mov r5, r6, asr fp add r3, r3, #2 - uxth r6, r6 - strh r6, [r4, r3] @ movhi - mul r3, r5, r6 - add r6, r6, #8 - str r3, [r4, #3944] - mov r3, #3936 + strh r3, [r4, r2] @ movhi + movw r3, #1896 + strh r5, [r4, r3] @ movhi + uxth r5, r5 + ldr r6, .L493 + mul r3, r8, r5 + add r5, r5, #8 + str r3, [r4, #1900] + movw r3, #1892 ldrh r0, [r4, r3] bl __aeabi_uidiv - cmp r5, #1 - ldreq r3, .L380 - uxtah r6, r6, r0 - str r6, [r4, #3844] - ldr r4, .L380 - addeq r6, r6, #4 - streq r6, [r3, #3844] - ldr r0, [r4, #3844] - uxth r0, r0 + cmp r8, #1 + uxtah r0, r5, r0 + strne r0, [r10, #1800] + addeq r5, r0, #4 + streq r5, [r10, #1800] + ldr r3, [r4, #1800] + uxth r0, r3 bl FtlSysBlkNumInit - ldr r3, [r4, #3844] - ldr r6, [r4, #3860] + ldr r3, [r4, #1800] + ldr r2, [r4, #1816] mov r0, #2048 - str r3, [r4, #3948] - movw r3, #3916 - ldrh r3, [r4, r3] - mov r6, r6, asl #2 - mul r6, r3, r6 - movw r3, #3924 - ldrh r3, [r4, r3] - add r3, r3, #9 - mov r6, r6, lsr r3 - mov r3, #3952 - add r6, r6, #2 - uxth r6, r6 - strh r6, [r4, r3] @ movhi - movw r3, #3922 - ldrh r5, [r4, r3] - mov r1, r5 + str r3, [r4, #1904] + ldrh r3, [r7] + mov r2, r2, asl #2 + mul r3, r3, r2 + movw r2, #1880 + ldrh r5, [r4, r2] + add r5, r5, #9 + mov r5, r3, lsr r5 + movw r3, #1908 + add r5, r5, #2 + uxth r5, r5 + strh r5, [r4, r3] @ movhi + movw r3, #1878 + ldrh r7, [r4, r3] + mov r1, r7 bl __aeabi_idiv - movw r3, #3954 - ldrb ip, [r4, #928] @ zero_extendqisi2 - ldr r1, [r4, #3944] + movw r1, #1892 + ldrh r2, [r4, r1] + movw r3, #1910 + ldrb ip, [r4, #140] @ zero_extendqisi2 cmp ip, #0 strh r0, [r4, r3] @ movhi mov r3, #0 - str r3, [r4, #3956] - mov r3, #3936 - ldrh r0, [r4, r3] - add r2, r0, #3 - strh r2, [r4, r3] @ movhi - add r2, r1, #3 - str r2, [r4, #3944] - addne r0, r0, #4 - addne r1, r1, #5 - strneh r0, [r4, r3] @ movhi - strne r1, [r4, #3944] - bne .L377 -.L376: - cmp r2, #7 - movls r3, #8 - strls r3, [r4, #3944] -.L377: - movw r3, #3960 - mov r2, #0 - strh r2, [r4, r3] @ movhi - mov r2, #3856 - ldrh r2, [r4, r2] + str r3, [r4, #1912] + add r3, r2, #3 + strh r3, [r4, r1] @ movhi + addne r2, r2, #4 + ldr r3, [r4, #1900] + strneh r2, [r6, r1] @ movhi + add r0, r3, #3 + addne r3, r3, #5 + str r0, [r4, #1900] + bne .L491 + cmp r0, #7 + bhi .L481 + mov r3, #8 +.L491: + str r3, [r6, #1900] +.L481: + movw r2, #1916 + mov r3, #0 + strh r3, [r4, r2] @ movhi + movw r3, #1812 + ldrh r1, [r4, r3] mov r0, #0 - mov r1, r2, lsr #3 - add r2, r1, r2, asl #1 - add r2, r2, #52 - add r6, r2, r6, asl #2 - cmp r6, r5, asl #9 - ldrcc r2, .L380 + mov r3, r1, lsr #3 + add r3, r3, r1, asl #1 + add r3, r3, #52 + add r5, r3, r5, asl #2 + cmp r5, r7, asl #9 + ldrcc r3, .L493 movcc r1, #1 - strcch r1, [r2, r3] @ movhi + strcch r1, [r3, r2] @ movhi add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L381: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L494: .align 2 -.L380: +.L493: .word .LANCHOR0 - .word .LANCHOR0+3874 + .word .LANCHOR0+1832 .fnend .size FtlConstantsInit, .-FtlConstantsInit .align 2 @@ -3124,36 +3045,29 @@ IsBlkInVendorPart: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L389 - movw r2, #3962 - ldrh r2, [r3, r2] - cmp r2, #0 - beq .L387 - mov r2, #3936 - ldrh r1, [r3, r2] - ldr r2, [r3, #3964] - mov r3, #0 - b .L384 -.L386: - ldrh ip, [r2], #2 - cmp ip, r0 - beq .L388 - add r3, r3, #1 - uxth r3, r3 -.L384: - cmp r3, r1 - bne .L386 - mov r0, #0 - bx lr -.L388: + ldr r2, .L502 + movw r3, #1918 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L501 + movw r1, #1892 + ldr r3, [r2, #1920] + ldrh r2, [r2, r1] + add r2, r3, r2, asl #1 +.L497: + cmp r3, r2 + beq .L501 + ldrh r1, [r3], #2 + cmp r1, r0 + bne .L497 mov r0, #1 bx lr -.L387: - mov r0, r2 +.L501: + mov r0, #0 bx lr -.L390: +.L503: .align 2 -.L389: +.L502: .word .LANCHOR0 .fnend .size IsBlkInVendorPart, .-IsBlkInVendorPart @@ -3164,36 +3078,39 @@ FtlCacheMetchLpa: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L399 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldr r3, [r2, #3968] + ldr r2, .L511 + ldr r3, [r2, #1924] cmp r3, #0 - beq .L396 - ldr ip, [r2, #3972] + beq .L507 + stmfd sp!, {r4, r5, lr} + .save {r4, r5, lr} + mov r5, #36 + ldr r4, [r2, #1928] mov r2, #0 -.L395: - ldr r4, [ip, #16] - cmp r4, r0 - bcc .L393 - cmp r4, r1 - bls .L397 -.L393: +.L506: + mla ip, r5, r2, r4 + ldr lr, [ip, #16] + cmp lr, r0 + movcc ip, #0 + movcs ip, #1 + cmp lr, r1 + movhi ip, #0 + cmp ip, #0 + bne .L508 add r2, r2, #1 - add ip, ip, #36 cmp r2, r3 - bne .L395 - mov r0, #0 - ldmfd sp!, {r4, pc} -.L397: - mov r0, #1 - ldmfd sp!, {r4, pc} -.L396: + bne .L506 + mov r0, ip + ldmfd sp!, {r4, r5, pc} +.L507: mov r0, r3 - ldmfd sp!, {r4, pc} -.L400: + bx lr +.L508: + mov r0, #1 + ldmfd sp!, {r4, r5, pc} +.L512: .align 2 -.L399: +.L511: .word .LANCHOR0 .fnend .size FtlCacheMetchLpa, .-FtlCacheMetchLpa @@ -3205,12 +3122,12 @@ FtlGetCap: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L402 - ldr r0, [r3, #3956] + ldr r3, .L514 + ldr r0, [r3, #1912] bx lr -.L403: +.L515: .align 2 -.L402: +.L514: .word .LANCHOR0 .fnend .size FtlGetCap, .-FtlGetCap @@ -3222,12 +3139,12 @@ ftl_get_density: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L405 - ldr r0, [r3, #3956] + ldr r3, .L517 + ldr r0, [r3, #1912] bx lr -.L406: +.L518: .align 2 -.L405: +.L517: .word .LANCHOR0 .fnend .size ftl_get_density, .-ftl_get_density @@ -3239,12 +3156,12 @@ FtlGetLpn: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L408 - ldr r0, [r3, #3976] + ldr r3, .L520 + ldr r0, [r3, #1932] bx lr -.L409: +.L521: .align 2 -.L408: +.L520: .word .LANCHOR0 .fnend .size FtlGetLpn, .-FtlGetLpn @@ -3256,39 +3173,43 @@ FtlBbmMapBadBlock: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r0, r1, r4, r5, r6, lr} - .save {r0, r1, r4, r5, r6, lr} - movw r3, #3912 - ldr r4, .L411 - mov r5, r0 - ldrh r6, [r4, r3] - mov r1, r6 + .save {r4, r5, r6, lr} + .pad #8 + movw r3, #1870 + ldr r5, .L524 + mov r6, r0 + ldrh r4, [r5, r3] + mov r1, r4 bl __aeabi_uidiv uxth r2, r0 - mls r3, r6, r2, r5 - add r1, r4, r2, asl #2 - mov r6, #1 - ldr r0, [r1, #4008] + smulbb r3, r2, r4 + add r1, r5, r2, asl #2 + mov r4, #1 + add r5, r5, #1936 + ldr ip, [r1, #1964] + rsb r3, r3, r6 uxth r3, r3 and r1, r3, #31 - mov ip, r3, lsr #5 - ldr lr, [r0, ip, asl #2] - orr r1, lr, r6, asl r1 - str r1, [r0, ip, asl #2] - str r1, [sp, #0] - mov r1, r5 - ldr r0, .L411+4 + mov lr, r3, lsr #5 + ldr r0, [ip, lr, asl #2] + orr r1, r0, r4, asl r1 + ldr r0, .L524+4 + str r1, [ip, lr, asl #2] + str r1, [sp] + mov r1, r6 bl printk - movw r3, #3986 - ldrh r2, [r4, r3] + ldrh r3, [r5, #6] mov r0, #0 - add r2, r2, r6 - strh r2, [r4, r3] @ movhi - ldmfd sp!, {r2, r3, r4, r5, r6, pc} -.L412: + add r3, r3, r4 + strh r3, [r5, #6] @ movhi + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, pc} +.L525: .align 2 -.L411: +.L524: .word .LANCHOR0 - .word .LC3 + .word .LC2 .fnend .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock .global __aeabi_uidivmod @@ -3301,8 +3222,8 @@ FtlBbmIsBadBlock: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - movw r3, #3912 - ldr r5, .L414 + movw r3, #1870 + ldr r5, .L528 mov r7, r0 ldrh r6, [r5, r3] mov r1, r6 @@ -3315,14 +3236,14 @@ FtlBbmIsBadBlock: and r4, r4, #31 uxth r0, r0 add r5, r5, r0, asl #2 - ldr r3, [r5, #4008] + ldr r3, [r5, #1964] ldr r0, [r3, r2, asl #2] mov r0, r0, lsr r4 and r0, r0, #1 ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L415: +.L529: .align 2 -.L414: +.L528: .word .LANCHOR0 .fnend .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock @@ -3344,33 +3265,32 @@ FtlBbtCalcTotleCnt: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r4, #0 - mov r5, r4 - ldr r6, .L421 - movw r8, #3912 - movw r7, #3870 - b .L418 -.L420: - mov r0, r5 - add r5, r5, #1 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movw r3, #1870 + ldr r4, .L540 + mov r5, #0 + ldrh r6, [r4, r3] + movw r3, #1826 + ldrh r3, [r4, r3] + mov r4, r5 + mul r6, r3, r6 +.L532: + uxth r0, r5 + cmp r0, r6 + bge .L539 bl FtlBbmIsBadBlock - uxth r5, r5 + add r5, r5, #1 cmp r0, #0 addne r4, r4, #1 uxthne r4, r4 -.L418: - ldrh r3, [r6, r8] - ldrh r2, [r6, r7] - mul r3, r2, r3 - cmp r5, r3 - blt .L420 + b .L532 +.L539: mov r0, r4 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L422: + ldmfd sp!, {r4, r5, r6, pc} +.L541: .align 2 -.L421: +.L540: .word .LANCHOR0 .fnend .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt @@ -3383,26 +3303,25 @@ V2P_block: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - mov r3, #3872 - ldr r5, .L424 - mov r7, r1 - mov r6, r0 - ldrh r4, [r5, r3] - mov r1, r4 - bl __aeabi_uidiv - movw r3, #3912 - ldrh r5, [r5, r3] - mov r1, r4 - mul r7, r4, r7 - mla r5, r5, r0, r7 - mov r0, r6 + movw r3, #1828 + ldr r6, .L544 + mov r4, r1 + mov r7, r0 + ldrh r5, [r6, r3] + mov r1, r5 bl __aeabi_uidivmod - add r1, r5, r1 - uxth r0, r1 + mov r0, r7 + smlabb r4, r4, r5, r1 + mov r1, r5 + bl __aeabi_uidiv + movw r3, #1870 + ldrh r3, [r6, r3] + smlabb r0, r3, r0, r4 + uxth r0, r0 ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L425: +.L545: .align 2 -.L424: +.L544: .word .LANCHOR0 .fnend .size V2P_block, .-V2P_block @@ -3413,25 +3332,25 @@ P2V_plane: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L427 - mov r2, #3872 + ldr r3, .L548 + movw r2, #1828 stmfd sp!, {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 - ldrh r4, [r3, r2] - add r2, r2, #40 + ldrh r5, [r3, r2] + movw r2, #1870 ldrh r1, [r3, r2] bl __aeabi_uidiv - mov r1, r4 - mul r5, r0, r4 + mov r1, r5 + smulbb r4, r0, r5 mov r0, r6 bl __aeabi_uidivmod - add r1, r5, r1 + add r1, r4, r1 uxth r0, r1 ldmfd sp!, {r4, r5, r6, pc} -.L428: +.L549: .align 2 -.L427: +.L548: .word .LANCHOR0 .fnend .size P2V_plane, .-P2V_plane @@ -3444,76 +3363,23 @@ P2V_block_in_plane: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r4, lr} .save {r4, lr} - movw r3, #3912 - ldr r4, .L430 + movw r3, #1870 + ldr r4, .L552 ldrh r1, [r4, r3] bl __aeabi_uidivmod - mov r3, #3872 + movw r3, #1828 uxth r0, r1 ldrh r1, [r4, r3] bl __aeabi_uidiv uxth r0, r0 ldmfd sp!, {r4, pc} -.L431: +.L553: .align 2 -.L430: +.L552: .word .LANCHOR0 .fnend .size P2V_block_in_plane, .-P2V_block_in_plane .align 2 - .type FtlFreeSysBlkQueueIn.part.5, %function -FtlFreeSysBlkQueueIn.part.5: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r1, #0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r5, r0 - beq .L433 - ldr r4, .L434 - ldr r3, [r4, #4040] - cmp r3, #0 - bne .L433 - bl P2V_block_in_plane - mov r1, #1 - mov r3, r5, asl #10 - mov r2, r1 - mov r6, r0 - ldr r0, [r4, #4044] - mov r6, r6, asl #1 - str r3, [r0, #4] - bl FlashEraseBlocks - ldr r3, [r4, #4048] - ldrh r2, [r3, r6] - add r2, r2, #1 - strh r2, [r3, r6] @ movhi - ldr r3, [r4, #4052] - add r3, r3, #1 - str r3, [r4, #4052] -.L433: - ldr r3, .L434 - movw r2, #4062 - movw r0, #4056 - ldrh r1, [r3, r2] - add r1, r1, #1 - strh r1, [r3, r2] @ movhi - movw r2, #4060 - ldrh r1, [r3, r2] - add ip, r1, #4 - add r1, r1, #1 - bic r1, r1, #64512 - add ip, r3, ip, asl #1 - strh r5, [ip, r0] @ movhi - strh r1, [r3, r2] @ movhi - ldmfd sp!, {r4, r5, r6, pc} -.L435: - .align 2 -.L434: - .word .LANCHOR0 - .fnend - .size FtlFreeSysBlkQueueIn.part.5, .-FtlFreeSysBlkQueueIn.part.5 - .align 2 .global ftl_cmp_data_ver .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: @@ -3522,13 +3388,13 @@ ftl_cmp_data_ver: @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. cmp r0, r1 - bls .L437 + bls .L555 rsb r0, r1, r0 cmp r0, #-2147483648 movhi r0, #0 movls r0, #1 bx lr -.L437: +.L555: rsb r0, r0, r1 cmp r0, #-2147483648 movls r0, #0 @@ -3544,16 +3410,15 @@ FtlFreeSysBlkQueueEmpty: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L440 - movw r3, #4062 - ldrh r0, [r2, r3] - rsbs r0, r0, #1 - movcc r0, #0 + ldr r3, .L558 + ldrh r0, [r3, #6] + clz r0, r0 + mov r0, r0, lsr #5 bx lr -.L441: +.L559: .align 2 -.L440: - .word .LANCHOR0 +.L558: + .word .LANCHOR0+1996 .fnend .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty .align 2 @@ -3564,17 +3429,16 @@ FtlFreeSysBlkQueueFull: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L443 - movw r3, #4062 - ldrh r0, [r2, r3] - sub r2, r0, #1024 - rsbs r0, r2, #0 - adc r0, r0, r2 + ldr r3, .L561 + ldrh r0, [r3, #6] + sub r0, r0, #1024 + clz r0, r0 + mov r0, r0, lsr #5 bx lr -.L444: +.L562: .align 2 -.L443: - .word .LANCHOR0 +.L561: + .word .LANCHOR0+1996 .fnend .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull .align 2 @@ -3584,21 +3448,55 @@ FtlFreeSysBlkQueueIn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - sub r2, r0, #1 - movw r3, #65533 - uxth r2, r2 - cmp r2, r3 - bxhi lr - ldr r2, .L447 - movw r3, #4062 - ldrh r3, [r2, r3] + stmfd sp!, {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + sub r3, r0, #1 + movw r2, #65533 + mov r7, r0 + uxth r3, r3 + cmp r3, r2 + ldmhifd sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, .L573 + ldr r5, .L573+4 + ldrh r3, [r4, #6] cmp r3, #1024 - bxeq lr - b FtlFreeSysBlkQueueIn.part.5 -.L448: + ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0 + beq .L565 + ldr r3, [r5, #4052] + cmp r3, #0 + bne .L565 + bl P2V_block_in_plane + mov r1, #1 + mov r3, r7, asl #10 + mov r2, r1 + mov r6, r0 + ldr r0, [r5, #4056] + str r3, [r0, #4] + bl FlashEraseBlocks + ldr r1, [r5, #4060] + mov r3, r6, asl #1 + ldrh r2, [r1, r3] + add r2, r2, #1 + strh r2, [r1, r3] @ movhi + ldr r3, [r5, #4064] + add r3, r3, #1 + str r3, [r5, #4064] +.L565: + ldrh r3, [r4, #6] + add r3, r3, #1 + strh r3, [r4, #6] @ movhi + ldrh r3, [r4, #4] + add r2, r4, r3, asl #1 + add r3, r3, #1 + ubfx r3, r3, #0, #10 + strh r3, [r4, #4] @ movhi + strh r7, [r2, #8] @ movhi + ldmfd sp!, {r3, r4, r5, r6, r7, pc} +.L574: .align 2 -.L447: +.L573: + .word .LANCHOR0+1996 .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn @@ -3609,53 +3507,44 @@ FtlFreeSysBLkSort: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L453 - ldr r2, .L453+4 - ldr r1, .L453+8 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - ldrh r4, [r2, r3] - movw r3, #4062 - ldrh r3, [r1, r3] - and r4, r4, #31 - cmp r3, #0 - ldmeqfd sp!, {r4, r5, pc} - movw r3, #4058 + ldr r3, .L588 + ldrh ip, [r3, #28] + ldr r3, .L588+4 + ldrh r2, [r3, #6] + cmp r2, #0 + bxeq lr + stmfd sp!, {r4, lr} + .save {r4, lr} mov r0, #0 - ldrh r2, [r1, r3] - add r3, r3, #2 - ldrh r3, [r1, r3] - b .L451 -.L452: - add ip, r1, r2, asl #1 - add r2, r2, #1 - add ip, ip, #4064 + ldrh r1, [r3, #2] + and ip, ip, #31 + ldrh r2, [r3, #4] + mov r4, r0 +.L577: + uxth lr, r0 add r0, r0, #1 - mov r2, r2, asl #22 - ldrh r5, [ip, #0] - add ip, r1, r3, asl #1 - add r3, r3, #1 - add ip, ip, #4064 - mov r2, r2, lsr #22 - uxth r0, r0 - mov r3, r3, asl #22 - strh r5, [ip, #0] @ movhi - mov r3, r3, lsr #22 -.L451: - cmp r0, r4 - ldr ip, .L453+8 - blt .L452 - movw r1, #4058 - strh r2, [ip, r1] @ movhi - movw r2, #4060 - strh r3, [ip, r2] @ movhi - ldmfd sp!, {r4, r5, pc} -.L454: + cmp lr, ip + bge .L587 + add lr, r3, r1, asl #1 + add r1, r1, #1 + ubfx r1, r1, #0, #10 + ldrh r4, [lr, #8] + add lr, r3, r2, asl #1 + strh r4, [lr, #8] @ movhi + mov r4, #1 + add r2, r2, r4 + ubfx r2, r2, #0, #10 + b .L577 +.L587: + cmp r4, #0 + strneh r1, [r3, #2] @ movhi + strneh r2, [r3, #4] @ movhi + ldmfd sp!, {r4, pc} +.L589: .align 2 -.L453: - .word -2044 - .word .LANCHOR2 - .word .LANCHOR0 +.L588: + .word .LANCHOR0+4068 + .word .LANCHOR0+1996 .fnend .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 @@ -3665,78 +3554,79 @@ FtlFreeSysBlkQueueOut: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - movw r6, #4062 - ldr r4, .L462 - movw r7, #4058 -.L456: - ldrh r1, [r4, r6] + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + ldr r6, .L601 + ldr r5, .L601+4 + mov r7, r6 +.L591: + ldrh r1, [r5, #6] cmp r1, #0 - beq .L457 - ldrh r3, [r4, r7] + beq .L592 + ldrh r3, [r5, #2] sub r1, r1, #1 - ldr sl, [r4, #4040] - add r2, r4, r3, asl #1 - cmp sl, #0 - add r2, r2, #4064 + ldr r9, [r6, #4052] + strh r1, [r5, #6] @ movhi + add r2, r5, r3, asl #1 + cmp r9, #0 add r3, r3, #1 - bic r3, r3, #64512 - ldrh r5, [r2, #0] - strh r1, [r4, r6] @ movhi - strh r3, [r4, r7] @ movhi - bne .L458 - mov r0, r5 + ubfx r3, r3, #0, #10 + ldrh r4, [r2, #8] + strh r3, [r5, #2] @ movhi + bne .L593 + mov r0, r4 bl P2V_block_in_plane - mov r3, r5, asl #10 + mov r3, r4, asl #10 mov r8, r0 - ldr r0, [r4, #4044] + ldr r0, [r6, #4056] str r3, [r0, #4] - ldrb r3, [r4, #928] @ zero_extendqisi2 + ldrb r3, [r6, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L459 - mov r1, sl + beq .L594 + mov r1, r9 mov r2, #1 bl FlashEraseBlocks -.L459: +.L594: mov r1, #1 - ldr r0, [r4, #4044] + ldr r0, [r7, #4056] mov r2, r1 - mov r8, r8, asl #1 bl FlashEraseBlocks - ldr r3, [r4, #4048] - ldrh r2, [r3, r8] + ldr r1, [r7, #4060] + mov r3, r8, asl #1 + ldrh r2, [r1, r3] add r2, r2, #1 - strh r2, [r3, r8] @ movhi - ldr r3, [r4, #4052] + strh r2, [r1, r3] @ movhi + ldr r3, [r7, #4064] add r3, r3, #1 - str r3, [r4, #4052] - b .L458 -.L457: - ldr r0, .L462+4 + str r3, [r7, #4064] + b .L593 +.L592: + ldr r0, .L601+8 bl printk -.L460: - b .L460 -.L458: - sub r2, r5, #1 - movw r3, #65533 - uxth r2, r2 - cmp r2, r3 - bls .L461 - mov r1, r5 - ldrh r2, [r4, r6] - ldr r0, .L462+8 +.L595: + b .L595 +.L593: + sub r3, r4, #1 + movw r2, #65533 + uxth r3, r3 + cmp r3, r2 + bls .L596 + ldr r3, .L601+4 + mov r1, r4 + ldr r0, .L601+12 + ldrh r2, [r3, #6] bl printk - b .L456 -.L461: - mov r0, r5 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L463: + b .L591 +.L596: + mov r0, r4 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L602: .align 2 -.L462: +.L601: .word .LANCHOR0 + .word .LANCHOR0+1996 + .word .LC3 .word .LC4 - .word .LC5 .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 @@ -3746,35 +3636,35 @@ test_node_in_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L469 - stmfd sp!, {r4, lr} - .save {r4, lr} - movw r4, #65535 - ldr r2, [r0, #0] - ldr r0, [r3, #-2024] - ldr ip, .L469+4 - rsb r3, r0, r2 - mov r3, r3, asr #1 - mul r3, ip, r3 - mov ip, #6 + ldr r3, .L609 + str lr, [sp, #-4]! + .save {lr} + movw lr, #65535 + ldr ip, [r3, #-4068] + ldr r2, [r0] + ldr r3, .L609+4 + rsb r0, ip, r2 + mov r0, r0, asr #1 + mul r3, r3, r0 + mov r0, #6 uxth r3, r3 -.L466: +.L605: cmp r1, r3 - beq .L467 - ldrh r3, [r2, #0] - cmp r3, r4 - beq .L468 - mla r2, ip, r3, r0 - b .L466 -.L467: + beq .L606 + ldrh r3, [r2] + cmp r3, lr + beq .L607 + mla r2, r0, r3, ip + b .L605 +.L606: mov r0, #1 - ldmfd sp!, {r4, pc} -.L468: + ldr pc, [sp], #4 +.L607: mov r0, #0 - ldmfd sp!, {r4, pc} -.L470: + ldr pc, [sp], #4 +.L610: .align 2 -.L469: +.L609: .word .LANCHOR2 .word -1431655765 .fnend @@ -3784,116 +3674,115 @@ test_node_in_list: .type insert_data_list, %function insert_data_list: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L486 - mov r3, #3856 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #20 - sub sp, sp, #20 - ldrh r3, [r2, r3] + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + movw r3, #1812 + ldr r5, .L628 + ldrh r3, [r5, r3] cmp r3, r0 - bls .L472 - ldr r1, .L486+4 - mov ip, #6 - mul ip, ip, r0 - mvn r6, #0 - ldr r4, [r1, #-2024] - mov r8, r1 - add r2, r4, ip - strh r6, [r2, #2] @ movhi - strh r6, [r4, ip] @ movhi - ldr r3, [r1, #-2020] + bls .L613 + ldr r2, .L628+4 + mov lr, #6 + mul lr, lr, r0 + mvn ip, #0 + ldr r6, [r2, #-4068] + mov r7, r2 + add r1, r6, lr + strh ip, [r1, #2] @ movhi + strh ip, [r6, lr] @ movhi + ldr r3, [r2, #-4064] cmp r3, #0 - beq .L485 -.L473: - ldr r7, [r1, #-2016] - mov r5, r0, asl #1 - ldrh r1, [r2, #4] - ldr fp, [r8, #-2024] - ldrh sl, [r7, r5] - cmp r1, #0 - ldr r8, .L486+8 - mulne r6, r1, sl - rsb r1, fp, r3 - mov sl, #3856 - mov r1, r1, asr #1 - mul r1, r8, r1 - ldr r8, .L486 - ldrh sl, [r8, sl] - ldr r8, [r8, #4048] - uxth r1, r1 - add r5, r8, r5 - str r5, [sp, #12] - mov r5, #0 - str sl, [sp, #8] - str r8, [sp, #4] -.L480: - add r5, r5, #1 - ldr r8, [sp, #8] - uxth r5, r5 - cmp r5, r8 - bhi .L472 - cmp r0, r1 - beq .L472 - mov r9, r1, asl #1 - ldrh r8, [r3, #4] - ldrh sl, [r7, r9] - cmp r8, #0 - mvneq r8, #0 - mulne r8, r8, sl - cmp r8, r6 - bne .L476 - ldr r8, [sp, #4] - ldrh sl, [r8, r9] - ldr r9, [sp, #12] - ldrh r8, [r9, #0] - cmp sl, r8 - bcc .L478 - b .L477 -.L476: - bhi .L477 -.L478: - ldrh r8, [r3, #0] - movw sl, #65535 - cmp r8, sl - streqh r1, [r2, #2] @ movhi - streqh r0, [r3, #0] @ movhi - ldreq r3, .L486+4 - streq r2, [r3, #-2012] - beq .L472 -.L479: - mov r1, #6 - mla r3, r1, r8, fp - mov r1, r8 - b .L480 -.L477: - strh r1, [r4, ip] @ movhi - ldrh r1, [r3, #2] - strh r1, [r2, #2] @ movhi - ldr r1, .L486+4 - ldr ip, [r1, #-2020] - cmp r3, ip - bne .L481 - strh r0, [r3, #2] @ movhi -.L485: - str r2, [r1, #-2020] - b .L472 -.L481: + beq .L627 + ldr r8, [r2, #-4060] + mov r4, r0, asl #1 + ldrh r2, [r1, #4] + ldr r7, [r7, #-4068] + ldrh r9, [r8, r4] + cmp r2, #0 + rsb r10, r7, r3 + mulne ip, r2, r9 + ldr r2, .L628+8 + mov r10, r10, asr #1 + movw r9, #1812 + ldrh r9, [r5, r9] + mul r10, r2, r10 + str r9, [sp] + ldr r9, [r5, #4060] + add r4, r9, r4 + str r4, [sp, #4] + uxth r2, r10 + mov r4, #0 +.L622: + add r4, r4, #1 + ldr r5, [sp] + uxth r4, r4 + cmp r4, r5 + movls r5, #0 + movhi r5, #1 + cmp r0, r2 + orreq r5, r5, #1 + cmp r5, #0 + bne .L613 + mov r10, r2, asl #1 + ldrh r5, [r3, #4] + ldrh fp, [r8, r10] + cmp r5, #0 + mvneq r5, #0 + mulne r5, r5, fp + cmp r5, ip + bne .L618 + ldr r5, [sp, #4] + ldrh r10, [r9, r10] + ldrh r5, [r5] + cmp r10, r5 + bcc .L620 + b .L619 +.L618: + bhi .L619 +.L620: + ldrh r5, [r3] + movw r10, #65535 + cmp r5, r10 + streqh r2, [r1, #2] @ movhi + streqh r0, [r3] @ movhi + ldreq r3, .L628+4 + streq r1, [r3, #-4056] + beq .L613 +.L621: + mov r3, #6 + mov r2, r5 + mla r3, r3, r5, r7 + b .L622 +.L619: + strh r2, [r6, lr] @ movhi ldrh r2, [r3, #2] - mov ip, #6 - ldr r1, [r1, #-2024] - mul r2, ip, r2 + strh r2, [r1, #2] @ movhi + ldr r2, .L628+4 + ldr ip, [r2, #-4064] + cmp r3, ip + bne .L623 + strh r0, [r3, #2] @ movhi +.L627: + str r1, [r2, #-4064] + b .L613 +.L623: + ldrh ip, [r3, #2] + ldr r1, [r2, #-4068] + mov r2, #6 + mul r2, r2, ip strh r0, [r1, r2] @ movhi strh r0, [r3, #2] @ movhi -.L472: +.L613: mov r0, #0 - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L487: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L629: .align 2 -.L486: +.L628: .word .LANCHOR0 .word .LANCHOR2 .word -1431655765 @@ -3909,17 +3798,15 @@ INSERT_DATA_LIST: stmfd sp!, {r3, lr} .save {r3, lr} bl insert_data_list - ldr r2, .L489 - ldr r3, .L489+4 - ldrh r1, [r2, r3] - add r1, r1, #1 - strh r1, [r2, r3] @ movhi + ldr r2, .L632 + ldrh r3, [r2, #-4] + add r3, r3, #1 + strh r3, [r2, #-4] @ movhi ldmfd sp!, {r3, pc} -.L490: +.L633: .align 2 -.L489: - .word .LANCHOR2 - .word -2008 +.L632: + .word .LANCHOR2-4048 .fnend .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .align 2 @@ -3929,76 +3816,75 @@ insert_free_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - movw r6, #65535 - cmp r0, r6 - beq .L492 - ldr r1, .L499 - mov r5, #6 - mul ip, r5, r0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + movw r4, #65535 + cmp r0, r4 + beq .L635 + ldr r2, .L643 + mov lr, #6 + mul r5, lr, r0 mvn r3, #0 - ldr r4, [r1, #-2024] - add r2, r4, ip - strh r3, [r2, #2] @ movhi - strh r3, [r4, ip] @ movhi - ldr r3, [r1, #-2004] + ldr r6, [r2, #-4068] + mov r7, r2 + add ip, r6, r5 + strh r3, [ip, #2] @ movhi + strh r3, [r6, r5] @ movhi + ldr r3, [r2, #-4048] cmp r3, #0 - beq .L498 -.L493: - ldr sl, [r1, #-2024] - mov r8, r0, asl #1 - ldr r9, .L499+4 - rsb r1, sl, r3 - ldr r7, .L499+8 + beq .L642 + ldr r2, .L643+4 + ldr r8, [r7, #-4068] + ldr r9, [r2, #4060] + mov r2, r0, asl #1 + rsb r1, r8, r3 + ldrh r10, [r9, r2] mov r1, r1, asr #1 - ldr r7, [r7, #4048] - mul r1, r9, r1 - mov r9, r5 - ldrh r8, [r7, r8] - uxth r1, r1 -.L496: - mov r5, r1, asl #1 - ldrh r5, [r7, r5] - cmp r5, r8 - bcs .L494 - ldrh r5, [r3, #0] - cmp r5, r6 - streqh r1, [r2, #2] @ movhi - streqh r0, [r3, #0] @ movhi - beq .L492 -.L495: - mla r3, r9, r5, sl - mov r1, r5 - b .L496 -.L494: - ldrh r5, [r3, #2] - strh r5, [r2, #2] @ movhi - strh r1, [r4, ip] @ movhi - ldr r1, .L499 - ldr ip, [r1, #-2004] - cmp r3, ip - bne .L497 + ldr r2, .L643+8 + mul r1, r2, r1 + uxth r2, r1 +.L639: + mov r1, r2, asl #1 + ldrh r1, [r9, r1] + cmp r1, r10 + bcs .L637 + ldrh r1, [r3] + cmp r1, r4 + streqh r2, [ip, #2] @ movhi + streqh r0, [r3] @ movhi + beq .L635 +.L638: + mla r3, lr, r1, r8 + mov r2, r1 + b .L639 +.L637: + ldrh r1, [r3, #2] + strh r1, [ip, #2] @ movhi + strh r2, [r6, r5] @ movhi + ldr r1, [r7, #-4048] + ldr r2, .L643 + cmp r3, r1 + bne .L640 strh r0, [r3, #2] @ movhi -.L498: - str r2, [r1, #-2004] - b .L492 -.L497: - ldrh r2, [r3, #2] - mov ip, #6 - ldr r1, [r1, #-2024] - mul r2, ip, r2 +.L642: + str ip, [r2, #-4048] + b .L635 +.L640: + ldrh ip, [r3, #2] + ldr r1, [r2, #-4068] + mov r2, #6 + mul r2, r2, ip strh r0, [r1, r2] @ movhi strh r0, [r3, #2] @ movhi -.L492: +.L635: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L500: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L644: .align 2 -.L499: +.L643: .word .LANCHOR2 - .word -1431655765 .word .LANCHOR0 + .word -1431655765 .fnend .size insert_free_list, .-insert_free_list .align 2 @@ -4011,17 +3897,15 @@ INSERT_FREE_LIST: stmfd sp!, {r3, lr} .save {r3, lr} bl insert_free_list - ldr r2, .L502 - ldr r3, .L502+4 - ldrh r1, [r2, r3] - add r1, r1, #1 - strh r1, [r2, r3] @ movhi + ldr r2, .L647 + ldrh r3, [r2, #-12] + add r3, r3, #1 + strh r3, [r2, #-12] @ movhi ldmfd sp!, {r3, pc} -.L503: +.L648: .align 2 -.L502: - .word .LANCHOR2 - .word -2000 +.L647: + .word .LANCHOR2-4032 .fnend .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .align 2 @@ -4031,52 +3915,52 @@ List_remove_node: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L509 - mov r2, #6 - mul r1, r2, r1 - ldr r3, [ip, #-2024] - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - add r5, r3, r1 - ldr r4, [r0, #0] - movw r6, #65535 - cmp r5, r4 - ldrh r4, [r3, r1] - bne .L505 - cmp r4, r6 - mlane r2, r2, r4, r3 - moveq r2, #0 - streq r2, [r0, #0] - strne r2, [r0, #0] + stmfd sp!, {r4, r5, lr} + .save {r4, r5, lr} + mov ip, #6 + ldr r4, .L655 + movw r5, #65535 + mul r1, ip, r1 + ldr r3, [r0] + ldr r2, [r4, #-4068] + add lr, r2, r1 + cmp lr, r3 + ldrh r3, [r2, r1] + bne .L650 + cmp r3, r5 + mlane r3, ip, r3, r2 + moveq r3, #0 + streq r3, [r0] + strne r3, [r0] mvnne r0, #0 - strneh r0, [r2, #2] @ movhi - b .L507 -.L505: - cmp r4, r6 - ldrh r0, [r5, #2] - bne .L508 - cmp r0, r4 - mulne r2, r2, r0 - mvnne r0, #0 - strneh r0, [r3, r2] @ movhi - b .L507 -.L508: - mla r4, r2, r4, r3 - strh r0, [r4, #2] @ movhi - ldrh r6, [r5, #2] - ldrh r4, [r3, r1] - ldr r0, [ip, #-2024] - mul r2, r2, r6 - strh r4, [r0, r2] @ movhi -.L507: - mvn r2, #0 + strneh r0, [r3, #2] @ movhi + b .L652 +.L650: + cmp r3, r5 + ldrh r0, [lr, #2] + bne .L653 + cmp r0, r3 + mulne r0, ip, r0 + mvnne r3, #0 + strneh r3, [r2, r0] @ movhi + b .L652 +.L653: + mla r3, ip, r3, r2 + strh r0, [r3, #2] @ movhi + ldrh r5, [lr, #2] + ldrh r0, [r2, r1] + ldr r3, [r4, #-4068] + mul ip, ip, r5 + strh r0, [r3, ip] @ movhi +.L652: + mvn r3, #0 mov r0, #0 - strh r2, [r3, r1] @ movhi - strh r2, [r5, #2] @ movhi - ldmfd sp!, {r4, r5, r6, pc} -.L510: + strh r3, [r2, r1] @ movhi + strh r3, [lr, #2] @ movhi + ldmfd sp!, {r4, r5, pc} +.L656: .align 2 -.L509: +.L655: .word .LANCHOR2 .fnend .size List_remove_node, .-List_remove_node @@ -4087,29 +3971,21 @@ List_pop_index_node: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, [r0] + cmp r3, #0 + beq .L663 + ldr r2, .L666 + movw ip, #65535 stmfd sp!, {r4, lr} .save {r4, lr} - ldr r3, [r0, #0] - cmp r3, #0 - beq .L516 - ldr r2, .L517 - movw lr, #65535 - mov ip, #6 - ldr r4, [r2, #-2024] - b .L513 -.L515: - mla r3, ip, r2, r4 - sub r1, r1, #1 - uxth r1, r1 -.L513: + mov lr, #6 + ldr r4, [r2, #-4068] +.L659: cmp r1, #0 - beq .L514 - ldrh r2, [r3, #0] - cmp r2, lr - bne .L515 -.L514: + bne .L660 +.L662: rsb r4, r4, r3 - ldr r3, .L517+4 + ldr r3, .L666+4 mov r4, r4, asr #1 mul r4, r3, r4 uxth r4, r4 @@ -4117,12 +3993,20 @@ List_pop_index_node: bl List_remove_node mov r0, r4 ldmfd sp!, {r4, pc} -.L516: +.L660: + ldrh r2, [r3] + cmp r2, ip + beq .L662 + sub r1, r1, #1 + mla r3, lr, r2, r4 + uxth r1, r1 + b .L659 +.L663: movw r0, #65535 - ldmfd sp!, {r4, pc} -.L518: + bx lr +.L667: .align 2 -.L517: +.L666: .word .LANCHOR2 .word -1431655765 .fnend @@ -4135,39 +4019,35 @@ List_get_gc_head_node: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L525 - ldr r3, [r2, #-2020] + ldr r2, .L675 + ldr r3, [r2, #-4064] cmp r3, #0 - beq .L524 - ldr r2, [r2, #-2024] - movw r1, #65535 - mov ip, #6 - b .L521 -.L523: - mla r3, ip, r3, r2 - sub r0, r0, #1 - uxth r0, r0 -.L521: + ldrne r1, [r2, #-4068] + movne ip, #6 + movwne r2, #65535 + beq .L673 +.L670: cmp r0, #0 - beq .L522 - ldrh r3, [r3, #0] - cmp r3, r1 - bne .L523 - mov r0, r1 + beq .L671 + ldrh r3, [r3] + cmp r3, r2 + subne r0, r0, #1 + mlane r3, ip, r3, r1 + uxthne r0, r0 + bne .L670 +.L673: + movw r0, #65535 bx lr -.L522: - rsb r3, r2, r3 - ldr r0, .L525+4 +.L671: + rsb r3, r1, r3 + ldr r0, .L675+4 mov r3, r3, asr #1 mul r0, r0, r3 uxth r0, r0 bx lr -.L524: - movw r0, #65535 - bx lr -.L526: +.L676: .align 2 -.L525: +.L675: .word .LANCHOR2 .word -1431655765 .fnend @@ -4179,82 +4059,80 @@ List_update_data_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, r0 - ldr r3, .L534 - ldr r2, .L534+4 - ldrh r2, [r3, r2] + ldr r3, .L686 + sub r2, r3, #4032 + ldrh r2, [r2, #-8] cmp r2, r0 - beq .L528 - ldr r2, .L534+8 - ldrh r2, [r3, r2] + beq .L685 + sub r2, r3, #3984 + ldrh r2, [r2, #-8] cmp r2, r0 - beq .L528 - ldr r2, .L534+12 - ldrh r2, [r3, r2] + beq .L685 + sub r2, r3, #3936 + ldrh r2, [r2, #-8] cmp r2, r0 - beq .L528 - mov r5, #6 - ldr r2, [r3, #-2024] - mul r5, r5, r0 - ldr r0, [r3, #-2020] - add r1, r2, r5 - cmp r1, r0 - beq .L528 - ldr ip, [r3, #-2016] - mov r3, r4, asl #1 - ldrh r0, [ip, r3] + beq .L685 + stmfd sp!, {r4, lr} + .save {r4, lr} + mov lr, #6 + mul lr, lr, r0 + ldr r1, [r3, #-4068] + ldr r2, [r3, #-4064] + add ip, r1, lr + cmp ip, r2 + beq .L678 + ldr r4, [r3, #-4060] + mov r3, r0, asl #1 + ldrh r2, [r4, r3] + ldrh r3, [ip, #4] + ldrh ip, [ip, #2] + cmp r3, #0 + mulne r2, r3, r2 + mvneq r2, #0 + movw r3, #65535 + cmp ip, r3 + bne .L680 + ldrh r3, [r1, lr] + cmp r3, ip + beq .L678 +.L680: + mov r3, #6 + mul ip, r3, ip + ldr r3, .L686+4 + add r1, r1, ip + mov lr, ip, asr #1 + mul r3, r3, lr + mov r3, r3, asl #1 + ldrh lr, [r4, r3] ldrh r3, [r1, #4] cmp r3, #0 - mulne r0, r3, r0 - ldrh r3, [r1, #2] - mvneq r0, #0 - movw r1, #65535 - cmp r3, r1 - bne .L530 - ldrh r1, [r2, r5] - cmp r1, r3 - beq .L528 -.L530: - mov r1, #6 - mla r3, r1, r3, r2 - ldr r1, .L534+16 - rsb r2, r2, r3 - mov r2, r2, asr #1 - ldrh r3, [r3, #4] - mul r2, r1, r2 - cmp r3, #0 + mulne r3, r3, lr mvneq r3, #0 - uxth r2, r2 - mov r2, r2, asl #1 - ldrh r2, [ip, r2] - mulne r3, r3, r2 - cmp r0, r3 - bcs .L528 - ldr r0, .L534+20 + cmp r2, r3 + bcs .L678 + mov r4, r0 + ldr r0, .L686+8 mov r1, r4 bl List_remove_node - ldr r5, .L534 - ldr r3, .L534+24 + ldr r2, .L686+12 mov r0, r4 - ldrh r2, [r5, r3] - sub r2, r2, #1 - strh r2, [r5, r3] @ movhi + ldrh r3, [r2, #-4] + sub r3, r3, #1 + strh r3, [r2, #-4] @ movhi bl INSERT_DATA_LIST -.L528: +.L678: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L535: + ldmfd sp!, {r4, pc} +.L685: + mov r0, #0 + bx lr +.L687: .align 2 -.L534: +.L686: .word .LANCHOR2 - .word -1996 - .word -1948 - .word -1900 .word -1431655765 - .word .LANCHOR2-2020 - .word -2008 + .word .LANCHOR2-4064 + .word .LANCHOR2-4048 .fnend .size List_update_data_list, .-List_update_data_list .align 2 @@ -4266,56 +4144,51 @@ ftl_map_blk_alloc_new_blk: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldrh r2, [r0, #10] - mov r5, #0 - ldr r3, [r0, #12] - b .L537 -.L542: - mov r7, r3 - add r3, r3, #2 - ldrh r6, [r7, #0] + mov r3, #0 + ldrh r1, [r0, #10] + ldr r2, [r0, #12] +.L689: + uxth r5, r3 + cmp r5, r1 + bcs .L692 + mov r7, r2 + add r3, r3, #1 + ldrh r6, [r7] + add r2, r2, #2 cmp r6, #0 - bne .L538 + bne .L689 + mov r4, r0 bl FtlFreeSysBlkQueueOut - movw r3, #65533 - sub r2, r0, #1 + movw r2, #65533 + sub r3, r0, #1 mov r1, r0 - strh r0, [r7, #0] @ movhi - uxth r2, r2 - cmp r2, r3 - bls .L539 - ldr r2, .L543 - movw r3, #4062 - ldr r0, .L543+4 - ldrh r2, [r2, r3] + strh r0, [r7] @ movhi + uxth r3, r3 + cmp r3, r2 + bls .L690 + ldr r3, .L696 + ldr r0, .L696+4 + ldrh r2, [r3, #6] bl printk -.L540: - b .L540 -.L539: +.L691: + b .L691 +.L690: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi add r3, r3, #1 str r3, [r4, #28] ldrh r3, [r4, #8] - strh r5, [r4, #0] @ movhi + strh r5, [r4] @ movhi add r3, r3, #1 strh r3, [r4, #8] @ movhi - b .L541 -.L538: - add r5, r5, #1 - uxth r5, r5 -.L537: - cmp r5, r2 - bne .L542 -.L541: +.L692: mov r0, #0 ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L544: +.L697: .align 2 -.L543: - .word .LANCHOR0 - .word .LC6 +.L696: + .word .LANCHOR0+1996 + .word .LC5 .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 @@ -4325,81 +4198,77 @@ select_l2p_ram_region: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L557 - movw r3, #3954 - stmfd sp!, {r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - movw r1, #65535 - ldrh r3, [r2, r3] - ldr r2, .L557+4 - ldr ip, [r2, #-1852] - mov r2, #0 - mov r0, r2 - b .L546 -.L548: - add r2, r2, #12 - add r4, ip, r2 - ldrh r4, [r4, #-12] - cmp r4, r1 - ldmeqfd sp!, {r4, r5, r6, r7, pc} - add r0, r0, #1 - uxth r0, r0 -.L546: - cmp r0, r3 - bne .L548 + ldr r2, .L714 + movw r3, #1910 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r1, #0 - mov r0, r3 - mov r5, #-2147483648 - mov r2, r1 - b .L549 -.L551: - add r4, ip, r1 - ldr r4, [r4, #4] - cmp r4, #0 - blt .L550 - cmp r4, r5 - movcc r5, r4 - movcc r0, r2 -.L550: - add r2, r2, #1 - add r1, r1, #12 - uxth r2, r2 -.L549: - cmp r2, r3 - bne .L551 - cmp r0, r3 - ldmccfd sp!, {r4, r5, r6, r7, pc} - ldr r2, .L557+8 - mov r0, r3 - ldr r1, .L557+4 - mvn r4, #0 - ldrh r6, [r1, r2] - mov r2, #0 - mov r1, r2 - b .L552 -.L554: - add r5, ip, r2 - ldr r5, [r5, #4] - cmp r5, r4 - bcs .L553 - ldrh r7, [ip, r2] - cmp r7, r6 - movne r4, r5 - movne r0, r1 -.L553: + ldrh r2, [r2, r3] + mov ip, #12 + ldr r3, .L714+4 + movw lr, #65535 + ldr r3, [r3, #-3896] +.L699: + uxth r0, r1 + cmp r0, r2 + bcs .L711 add r1, r1, #1 - add r2, r2, #12 - uxth r1, r1 -.L552: - cmp r1, r3 - bne .L554 - ldmfd sp!, {r4, r5, r6, r7, pc} -.L558: + mla r4, ip, r1, r3 + ldrh r4, [r4, #-12] + cmp r4, lr + bne .L699 + ldmfd sp!, {r4, r5, r6, pc} +.L711: + mov r0, r2 + mov r1, #0 + mov ip, #-2147483648 + mov r5, #12 +.L702: + uxth r4, r1 + cmp r4, r2 + bcs .L712 + mla lr, r5, r1, r3 + add r1, r1, #1 + ldr lr, [lr, #4] + cmp lr, ip + mvn r6, lr + mov r6, r6, lsr #31 + movcs r6, #0 + cmp r6, #0 + movne ip, lr + movne r0, r4 + b .L702 +.L712: + cmp r0, r2 + ldmccfd sp!, {r4, r5, r6, pc} + ldr r1, .L714+8 + mov r0, r2 + mvn ip, #0 + ldrh r5, [r1, #-4] + mov r1, #0 +.L705: + uxth lr, r1 + cmp lr, r2 + bcs .L713 + ldr r4, [r3, #4] + cmp r4, ip + bcs .L706 + ldrh r6, [r3] + cmp r6, r5 + movne ip, r4 + movne r0, lr +.L706: + add r1, r1, #1 + add r3, r3, #12 + b .L705 +.L713: + ldmfd sp!, {r4, r5, r6, pc} +.L715: .align 2 -.L557: +.L714: .word .LANCHOR0 .word .LANCHOR2 - .word -1848 + .word .LANCHOR2-3888 .fnend .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 @@ -4409,45 +4278,39 @@ FtlUpdateVaildLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L565 - ldr r2, .L565+4 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - ldrh r1, [r2, r3] - cmp r1, #4 - add ip, r1, #1 - mov r1, r3 - strh ip, [r2, r3] @ movhi - bhi .L560 - cmp r0, #0 - ldmeqfd sp!, {r4, r5, pc} -.L560: - ldr r0, .L565+8 - mov r3, #0 - strh r3, [r2, r1] @ movhi - mov r1, #3856 - str r3, [r2, #-1844] + ldr r3, .L724 + sub r1, r3, #3888 + ldrh r2, [r1, #-2] + cmp r2, #4 + cmpls r0, #0 + addeq r2, r2, #1 + streqh r2, [r1, #-2] @ movhi + bxeq lr + ldr r0, .L724+4 + mov r2, #0 + str lr, [sp, #-4]! + .save {lr} movw ip, #65535 - ldrh r4, [r0, r1] - ldr r1, [r2, #-2016] - ldr r2, .L565+4 - b .L562 -.L564: - ldrh r0, [r1], #2 - add r3, r3, #1 - cmp r0, ip - uxth r3, r3 - ldrne r5, [r2, #-1844] - addne r0, r0, r5 - strne r0, [r2, #-1844] -.L562: - cmp r3, r4 - bne .L564 - ldmfd sp!, {r4, r5, pc} -.L566: + strh r2, [r1, #-2] @ movhi + movw r1, #1812 + ldrh r0, [r0, r1] + str r2, [r3, #-3888] + ldr r2, [r3, #-4060] + add r0, r2, r0, asl #1 +.L718: + cmp r2, r0 + beq .L723 + ldrh r1, [r2], #2 + cmp r1, ip + ldrne lr, [r3, #-3888] + addne r1, r1, lr + strne r1, [r3, #-3888] + b .L718 +.L723: + ldr pc, [sp], #4 +.L725: .align 2 -.L565: - .word -1846 +.L724: .word .LANCHOR2 .word .LANCHOR0 .fnend @@ -4460,21 +4323,21 @@ ftl_set_blk_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L571 - mov r2, r0, lsr #5 + ldr r2, .L730 + mov r3, r0, lsr #5 cmp r1, #0 and r0, r0, #31 - uxth r2, r2 + uxth r3, r3 mov ip, #1 - ldr r3, [r3, #-1840] - ldr r1, [r3, r2, asl #2] - orrne r0, r1, ip, asl r0 - biceq r0, r1, ip, asl r0 - str r0, [r3, r2, asl #2] + ldr r1, [r2, #-3884] + ldr r2, [r1, r3, asl #2] + orrne r0, r2, ip, asl r0 + biceq r0, r2, ip, asl r0 + str r0, [r1, r3, asl #2] bx lr -.L572: +.L731: .align 2 -.L571: +.L730: .word .LANCHOR2 .fnend .size ftl_set_blk_mode, .-ftl_set_blk_mode @@ -4486,17 +4349,17 @@ ftl_get_blk_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L574 + ldr r3, .L733 mov r2, r0, lsr #5 and r0, r0, #31 - ldr r3, [r3, #-1840] + ldr r3, [r3, #-3884] ldr r3, [r3, r2, asl #2] mov r0, r3, lsr r0 and r0, r0, #1 bx lr -.L575: +.L734: .align 2 -.L574: +.L733: .word .LANCHOR2 .fnend .size ftl_get_blk_mode, .-ftl_get_blk_mode @@ -4507,53 +4370,53 @@ ftl_sb_update_avl_pages: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr ip, .L583 + ldr ip, .L745 mov r3, #0 strh r3, [r0, #4] @ movhi - movw r3, #3848 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldrh r3, [ip, r3] - movw ip, #65535 - b .L577 -.L579: - add r4, r0, r2, asl #1 - add r2, r2, #1 - ldrh r4, [r4, #16] - uxth r2, r2 - cmp r4, ip - ldrneh r4, [r0, #4] - addne r4, r4, #1 - strneh r4, [r0, #4] @ movhi -.L577: - cmp r2, r3 - bcc .L579 - ldr ip, .L583 - movw r2, #3916 + movw r3, #1804 + stmfd sp!, {r4, r5, lr} + .save {r4, r5, lr} movw r4, #65535 - mvn r1, r1 - ldrh r5, [ip, r2] - mov ip, r0 - mov r2, #0 - b .L580 -.L582: - ldrh r6, [ip, #16] + ldrh lr, [ip, r3] + add r3, r2, #7 + add r3, r0, r3, asl #1 +.L736: + cmp r2, lr + bcs .L743 + ldrh ip, [r3, #2]! add r2, r2, #1 - add ip, ip, #2 - cmp r6, r4 + cmp ip, r4 uxth r2, r2 - ldrneh r6, [r0, #4] - addne r6, r5, r6 - addne r6, r6, r1 - strneh r6, [r0, #4] @ movhi -.L580: - cmp r2, r3 - bne .L582 - ldmfd sp!, {r4, r5, r6, pc} -.L584: + ldrneh ip, [r0, #4] + addne ip, ip, #1 + strneh ip, [r0, #4] @ movhi + b .L736 +.L743: + ldr r3, .L745+4 + add ip, r0, #14 + mov r2, #0 + movw r5, #65535 + ldrh r4, [r3] +.L739: + uxth r3, r2 + cmp r3, lr + bcs .L744 + ldrh r3, [ip, #2]! + add r2, r2, #1 + cmp r3, r5 + ldrneh r3, [r0, #4] + addne r3, r4, r3 + subne r3, r3, #1 + rsbne r3, r1, r3 + strneh r3, [r0, #4] @ movhi + b .L739 +.L744: + ldmfd sp!, {r4, r5, pc} +.L746: .align 2 -.L583: +.L745: .word .LANCHOR0 + .word .LANCHOR0+1872 .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 @@ -4563,67 +4426,68 @@ make_superblock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r2, #1804 + ldr r6, .L761 + mov r3, #0 + ldr r10, .L761+4 + add r7, r0, #16 mov r4, r0 - mov r5, #0 - ldr r6, .L591 - strh r5, [r0, #4] @ movhi - movw r8, #3848 - strb r5, [r4, #7] - mvn r7, #0 - b .L586 -.L588: - add r3, r6, r5 - ldrh r1, [r4, #0] - add sl, r5, #8 + mov r5, r3 + ldrh r8, [r6, r2] + mvn r9, #0 + strh r3, [r0, #4] @ movhi + strb r3, [r0, #7] +.L748: + uxth r3, r5 + cmp r3, r8 + bcs .L760 + ldrb r0, [r10, r5] @ zero_extendqisi2 + add r7, r7, #2 + ldrh r1, [r4] add r5, r5, #1 - ldrb r0, [r3, #3874] @ zero_extendqisi2 bl V2P_block - mov sl, sl, asl #1 - uxth r5, r5 - strh r7, [r4, sl] @ movhi - mov r9, r0 + strh r9, [r7, #-2] @ movhi + mov fp, r0 bl FtlBbmIsBadBlock cmp r0, #0 - streqh r9, [r4, sl] @ movhi + streqh fp, [r7, #-2] @ movhi ldreqb r3, [r4, #7] @ zero_extendqisi2 addeq r3, r3, #1 streqb r3, [r4, #7] -.L586: - ldrh r2, [r6, r8] - ldr r3, .L591 - cmp r2, r5 - bhi .L588 - movw r1, #3916 - ldrb r2, [r4, #7] @ zero_extendqisi2 - ldrh r1, [r3, r1] - mul r2, r1, r2 - strh r2, [r4, #4] @ movhi - mov r2, #0 - strb r2, [r4, #9] - ldr r2, [r3, #3840] - cmp r2, #0 - beq .L589 - ldrh r1, [r4, #0] - ldr r2, [r3, #4048] - mov r3, r1, asl #1 + b .L748 +.L760: + ldr r2, .L761 + ldrb r1, [r4, #7] @ zero_extendqisi2 + add r3, r2, #1872 + ldrh r3, [r3] + smulbb r3, r1, r3 + strh r3, [r4, #4] @ movhi + mov r3, #0 + strb r3, [r4, #9] + ldr r3, [r6, #1796] + cmp r3, #0 + beq .L751 + ldrh r3, [r4] + ldr r2, [r2, #4060] + mov r3, r3, asl #1 ldrh r3, [r2, r3] cmp r3, #79 movls r3, #1 strlsb r3, [r4, #9] -.L589: - ldr r3, .L591 +.L751: + ldrb r3, [r6] @ zero_extendqisi2 mov r0, #0 - ldrb r3, [r3, #852] @ zero_extendqisi2 cmp r3, #0 movne r3, #1 strneb r3, [r4, #9] - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L592: + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L762: .align 2 -.L591: +.L761: .word .LANCHOR0 + .word .LANCHOR0+1832 .fnend .size make_superblock, .-make_superblock .align 2 @@ -4633,48 +4497,48 @@ update_multiplier_value: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r4, #0 - mov r7, r0 - mov r5, r4 - ldr r6, .L598 - movw sl, #3848 - movw r8, #3916 - b .L594 -.L596: - add r3, r6, r5 - mov r1, r7 - add r5, r5, #1 - ldrb r0, [r3, #3874] @ zero_extendqisi2 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + movw r2, #1804 + ldr r3, .L773 + mov r5, #0 + mov r6, r0 + mov r4, r5 + ldrh r7, [r3, r2] + add r3, r3, #1872 + sub r9, r3, #40 + ldrh r8, [r3] +.L764: + uxth r3, r5 + cmp r3, r7 + bcs .L772 + ldrb r0, [r9, r5] @ zero_extendqisi2 + mov r1, r6 bl V2P_block - uxth r5, r5 + add r5, r5, #1 bl FtlBbmIsBadBlock cmp r0, #0 - ldreqh r3, [r6, r8] - addeq r4, r4, r3 + addeq r4, r4, r8 uxtheq r4, r4 -.L594: - ldrh r3, [r6, sl] - cmp r3, r5 - bhi .L596 + b .L764 +.L772: cmp r4, #0 - beq .L597 + beq .L767 mov r1, r4 mov r0, #32768 bl __aeabi_idiv uxth r4, r0 -.L597: - ldr r3, .L598+4 +.L767: + ldr r3, .L773+4 mov r2, #6 mov r0, #0 - ldr r3, [r3, #-2024] - mla r7, r2, r7, r3 - strh r4, [r7, #4] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L599: + ldr r3, [r3, #-4068] + mla r6, r2, r6, r3 + strh r4, [r6, #4] @ movhi + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L774: .align 2 -.L598: +.L773: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -4687,27 +4551,27 @@ GetFreeBlockMinEraseCount: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L603 - ldr r0, [r3, #-2004] + ldr r3, .L778 + ldr r0, [r3, #-4048] cmp r0, #0 bxeq lr - ldr r3, [r3, #-2024] - ldr r2, .L603+4 + ldr r3, [r3, #-4068] rsb r0, r3, r0 - ldr r3, .L603+8 + ldr r3, .L778+4 mov r0, r0, asr #1 - ldr r2, [r2, #4048] - mul r3, r3, r0 - uxth r3, r3 - mov r3, r3, asl #1 - ldrh r0, [r2, r3] + mul r0, r3, r0 + ldr r3, .L778+8 + ldr r3, [r3, #4060] + uxth r0, r0 + mov r0, r0, asl #1 + ldrh r0, [r3, r0] bx lr -.L604: +.L779: .align 2 -.L603: +.L778: .word .LANCHOR2 - .word .LANCHOR0 .word -1431655765 + .word .LANCHOR0 .fnend .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -4717,54 +4581,52 @@ GetFreeBlockMaxEraseCount: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L612 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - ldr r3, [r2, #-2004] + ldr r1, .L790 + ldr r3, [r1, #-4048] cmp r3, #0 - beq .L611 - ldr r1, .L612+4 - mov ip, #7 - mov r5, #6 + beq .L786 + sub r2, r1, #4032 + stmfd sp!, {r4, lr} + .save {r4, lr} + mov lr, #6 + ldrh r2, [r2, #-12] movw r4, #65535 - ldrh r1, [r2, r1] - mul r1, ip, r1 - mov r1, r1, asr #3 - cmp r0, r1 - uxthgt r0, r1 - ldr r1, [r2, #-2024] - ldr r2, .L612+8 + ldr r1, [r1, #-4068] + rsb r2, r2, r2, asl #3 rsb r3, r1, r3 + mov r2, r2, asr #3 mov r3, r3, asr #1 + cmp r0, r2 + uxthgt r0, r2 + ldr r2, .L790+4 mul r3, r2, r3 mov r2, #0 uxth r3, r3 - b .L608 -.L610: - mul ip, r5, r3 +.L783: + uxth ip, r2 + cmp ip, r0 + bcs .L785 + mul ip, lr, r3 + add r2, r2, #1 ldrh ip, [r1, ip] cmp ip, r4 - beq .L609 - add r2, r2, #1 - mov r3, ip - uxth r2, r2 -.L608: - cmp r2, r0 - bne .L610 -.L609: - ldr r2, .L612+12 + bne .L787 +.L785: + ldr r2, .L790+8 mov r3, r3, asl #1 - ldr r2, [r2, #4048] + ldr r2, [r2, #4060] ldrh r0, [r2, r3] - ldmfd sp!, {r4, r5, pc} -.L611: + ldmfd sp!, {r4, pc} +.L787: + mov r3, ip + b .L783 +.L786: mov r0, r3 - ldmfd sp!, {r4, r5, pc} -.L613: + bx lr +.L791: .align 2 -.L612: +.L790: .word .LANCHOR2 - .word -2000 .word -1431655765 .word .LANCHOR0 .fnend @@ -4774,503 +4636,499 @@ GetFreeBlockMaxEraseCount: .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - mov sl, r0 - ldr r6, .L624 - add r4, sl, #12 - .pad #32 - sub sp, sp, #32 - ldr r1, .L624+4 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r7, .L804 + .pad #52 + sub sp, sp, #52 + ldr r6, .L804+4 + add r5, r8, #12 + ldr r1, .L804+8 + ldr r3, [r7] + str r3, [sp, #44] bl strcpy - mov r0, r4 - ldr r1, .L624+8 - ldr r2, [r6, #3048] + mov r0, r5 + ldr r1, .L804+12 + ldr r2, [r6, #112] bl sprintf - ldr r1, .L624+12 - ldr r2, [r6, #3932] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+16 + ldr r2, [r6, #1888] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+16 - ldr r3, [r3, #3092] + ldr r3, .L804+20 + ldr r3, [r3, #504] cmp r3, #1 - add r4, r4, r0 - bne .L620 -.L615: - add r0, sp, #16 - add r1, sp, #20 - add r2, sp, #24 - add r3, sp, #28 + add r4, r5, r0 + bne .L798 + add r0, sp, #28 + add r1, sp, #32 + add r2, sp, #36 + add r3, sp, #40 bl NandcGetTimeCfg - ldr r3, [sp, #24] - ldr r2, [sp, #16] mov r0, r4 - ldr r1, .L624+20 - str r3, [sp, #0] - ldr r3, [sp, #28] - ldr r5, .L624+24 - ldr r7, .L624+28 + ldr r1, .L804+24 + ldr r9, .L804+28 + ldr r10, .L804+32 + sub fp, r9, #4032 + ldr r3, [sp, #36] + ldr r2, [sp, #28] + str r3, [sp] + ldr r3, [sp, #40] str r3, [sp, #4] - ldr r3, [sp, #20] + ldr r3, [sp, #32] bl sprintf - ldr r1, .L624+32 - ldr r8, .L624+36 + ldr r1, .L804+36 add r4, r4, r0 + add r5, r4, #10 mov r0, r4 - add r4, r4, #10 + add r4, r6, #1936 bl strcpy - ldr r1, .L624+40 - mov r0, r4 - ldr r2, [r6, #3976] + mov r0, r5 + ldr r1, .L804+40 + ldr r2, [r6, #1932] bl sprintf - ldr r1, .L624+44 - ldr r2, [r5, #-1844] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+44 + ldr r2, [r9, #-3888] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+48 - ldr r2, [r5, #-1836] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+48 + ldr r2, [r9, #-3880] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+52 - ldr r2, [r5, #-1832] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+52 + ldr r2, [r9, #-3876] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+56 - ldr r2, [r5, #-1828] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+56 + ldr r2, [r9, #-3872] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+60 - ldr r2, [r5, #-1824] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+60 + ldr r2, [r9, #-3868] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+64 - ldr r2, [r5, #-1820] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+64 + ldr r2, [r9, #-3864] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+68 - ldr r2, [r5, #-1816] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+68 + ldr r2, [r9, #-3860] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r2, [r5, #-1812] - ldr r1, .L624+72 + ldr r2, [r9, #-3856] + ldr r1, .L804+72 mov r2, r2, lsr #11 - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r2, [r5, #-1808] - ldr r1, .L624+76 + ldr r2, [r9, #-3852] + ldr r1, .L804+76 mov r2, r2, lsr #11 - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+80 - ldr r2, [r5, #-1804] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+80 + ldr r2, [r9, #-3848] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+84 - ldr r2, [r5, #-1800] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+84 + ldr r2, [r9, #-3844] + add r5, r5, r0 + mov r0, r5 bl sprintf - add r4, r4, r0 + add r5, r5, r0 bl FtlBbtCalcTotleCnt - movw r2, #3986 - ldr r1, .L624+88 - ldrh r2, [r6, r2] + ldrh r2, [r4, #6] + ldr r1, .L804+88 mov r3, r0 - mov r0, r4 + mov r0, r5 bl sprintf - ldr r1, .L624+92 - ldrh r2, [r5, r7] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+92 + ldrh r2, [fp, #-12] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+96 - ldr r2, [r5, #-1796] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+96 + ldr r2, [r9, #-3840] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+100 - ldr r2, [r5, #-1792] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+100 + ldr r2, [r9, #-3836] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+104 - ldr r2, [r5, #-1788] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+104 + ldr r2, [r9, #-3832] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+108 - ldr r2, [r6, #4052] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+108 + ldr r2, [r6, #4064] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+112 - ldr r2, [r5, #-1784] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+112 + ldr r2, [r9, #-3828] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+116 - ldr r2, [r5, #-1780] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+116 + ldr r2, [r9, #-3824] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+120 - ldr r1, .L624+124 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #30] + ldr r1, .L804+120 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+128 - ldr r1, .L624+132 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #28] + ldr r1, .L804+124 + sub r10, r9, #3808 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+136 - ldr r2, [r6, #3956] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+128 + ldr r2, [r6, #1912] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+140 - ldr r2, [r6, #3948] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+132 + ldr r2, [r6, #1904] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+144 - ldr r2, [r6, #3844] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+136 + ldr r2, [r6, #1800] + add r5, r5, r0 + mov r0, r5 bl sprintf - movw r3, #4062 + ldrh r2, [r4, #66] + ldr r1, .L804+140 + add r5, r5, r0 + mov r0, r5 + bl sprintf + movw r3, #1812 ldrh r2, [r6, r3] - ldr r1, .L624+148 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+144 + add r5, r5, r0 + mov r0, r5 bl sprintf - mov r3, #3856 - ldrh r2, [r6, r3] - ldr r1, .L624+152 - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-12] + ldr r1, .L804+148 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+156 - ldr r1, .L624+160 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+152 + ldr r2, [r6, #1816] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+164 - ldr r2, [r6, #3860] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-8] + ldr r1, .L804+156 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+168 - ldr r1, .L624+172 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4] + ldr r1, .L804+160 + sub r4, r9, #3984 + add r5, r5, r0 + mov r0, r5 bl sprintf - movw r3, #3980 - ldrh r2, [r6, r3] - ldr r1, .L624+176 - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-230] + ldr r1, .L804+164 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+180 - ldr r1, .L624+184 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+168 + ldrb r2, [r9, #-4034] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+188 - ldrb r2, [r5, #-1990] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+172 + ldrh r2, [fp, #-8] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldrh r2, [r5, r8] - ldr r1, .L624+192 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+176 + ldrb r2, [r9, #-4032] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+196 - ldrb r2, [r5, #-1988] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-228] + ldr r1, .L804+180 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+200 - ldr r1, .L624+204 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldrh r3, [r5, r8] - ldr r2, [r5, #-2016] - add r8, r8, #48 - ldr r1, .L624+208 + ldrh r3, [fp, #-8] + ldr r2, [r9, #-4060] + ldr r1, .L804+184 mov r3, r3, asl #1 ldrh r2, [r2, r3] - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+212 - ldr r1, .L624+216 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-182] + ldr r1, .L804+188 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+220 - ldrb r2, [r5, #-1942] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+192 + ldrb r2, [r9, #-3986] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldrh r2, [r5, r8] - ldr r1, .L624+224 - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4, #-8] + ldr r1, .L804+196 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+228 - ldrb r2, [r5, #-1940] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+200 + ldrb r2, [r9, #-3984] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+232 - ldr r1, .L624+236 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-180] + ldr r1, .L804+204 + sub r10, r9, #3936 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldrh r3, [r5, r8] - ldr r2, [r5, #-2016] - add r8, r8, #188 - ldr r1, .L624+240 + ldrh r3, [r4, #-8] + ldr r2, [r9, #-4060] + ldr r1, .L804+208 mov r3, r3, asl #1 ldrh r2, [r2, r3] - add r4, r4, r0 - mov r0, r4 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+244 - ldr r1, .L624+248 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4, #42] + ldr r1, .L804+212 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+252 - ldrb r2, [r5, #-1894] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+216 + ldrb r2, [r9, #-3938] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+256 - ldr r1, .L624+260 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r10, #-8] + ldr r1, .L804+220 + sub r10, r9, #3792 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+264 - ldrb r2, [r5, #-1892] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+224 + ldrb r2, [r9, #-3936] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+268 - ldr r1, .L624+272 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4, #44] + ldr r1, .L804+228 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+276 - ldr r1, .L624+280 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4, #186] + ldr r1, .L804+232 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+284 - ldrb r2, [r5, #-1754] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+236 + ldrb r2, [r9, #-3794] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+288 - ldrh r2, [r5, r8] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+240 + ldrh r2, [r10, #-8] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, .L624+292 - ldrb r2, [r5, #-1752] @ zero_extendqisi2 - add r4, r4, r0 - mov r0, r4 + ldr r1, .L804+244 + ldrb r2, [r9, #-3792] @ zero_extendqisi2 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L624+296 - ldr r1, .L624+300 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 + ldrh r2, [r4, #188] + ldr r1, .L804+248 + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r1, [r5, #-1624] - ldr r3, [r6, #3840] - ldr r2, [r5, #-1712] - str r1, [sp, #0] - ldr r1, [r5, #-1632] + ldr r1, [r9, #-3664] + ldr r2, [r9, #-3752] + ldr r3, [r6, #1796] orr r2, r3, r2, asl #8 + ldr r3, [r9, #-3668] + str r1, [sp] + add r5, r5, r0 + ldr r1, [r9, #-3672] + mov r0, r5 str r1, [sp, #4] - ldr r1, .L624+304 - ldr r3, [r5, #-1628] + ldr r1, .L804+252 + bl sprintf + ldr r1, .L804+256 + ldr r2, [r9, #-3676] + add r4, r5, r0 + sub r5, r9, #3232 + mov r0, r4 + bl sprintf + ldr r1, .L804+260 + ldr r2, [r9, #-3652] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r1, .L624+308 - ldr r2, [r5, #-1636] + ldr r1, .L804+264 + ldrh r2, [r5, #-4] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r1, .L624+312 - ldr r2, [r5, #-1612] + ldr r1, .L804+268 + ldrh r2, [r5, #-2] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r3, .L624+316 - ldr r1, .L624+320 - ldrh r2, [r5, r3] + ldr r1, .L804+272 + ldr r2, [r9, #-3232] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r3, .L624+324 - ldr r1, .L624+328 - ldrh r2, [r5, r3] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r1, .L624+332 - ldr r2, [r5, #-1192] - add r4, r4, r0 - mov r0, r4 - bl sprintf - ldr r3, .L624+336 - ldr r1, .L624+340 - ldrh r2, [r5, r3] + sub r3, r9, #3216 + ldr r1, .L804+276 + ldrh r2, [r3, #-12] add r4, r4, r0 mov r0, r4 bl sprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r1, .L624+344 + ldr r1, .L804+280 mov r2, r0 mov r0, r4 bl sprintf add r4, r4, r0 - ldrh r0, [r5, r7] + ldrh r0, [fp, #-12] bl GetFreeBlockMaxEraseCount - ldr r1, .L624+348 + ldr r1, .L804+284 mov r2, r0 mov r0, r4 bl sprintf - ldrh r3, [r5, r8] + ldrh r3, [r10, #-8] movw r2, #65535 cmp r3, r2 add r4, r4, r0 - beq .L617 - ldr r2, [r5, #-2016] + beq .L795 + ldr r2, [r9, #-4060] mov r3, r3, asl #1 mov r0, r4 - ldr r1, .L624+352 + ldr r1, .L804+288 ldrh r2, [r2, r3] bl sprintf add r4, r4, r0 -.L617: +.L795: mov r0, #0 - ldr r6, .L624+24 - bl List_get_gc_head_node - ldr r8, .L624 mov r5, #0 - movw r9, #65535 + bl List_get_gc_head_node + mov fp, #6 + movw ip, #65535 uxth r3, r0 -.L619: - cmp r3, r9 - beq .L618 - ldr r1, [r6, #-2016] - mov r2, r3, asl #1 - mov r7, #6 +.L797: + cmp r3, ip + str ip, [sp, #20] + beq .L796 + ldr r2, [r9, #-4060] + mov r1, r3, asl #1 + mul r10, fp, r3 mov r0, r4 - mul r7, r7, r3 - ldrh r1, [r1, r2] - str r1, [sp, #0] - ldr r1, [r6, #-2024] - add r1, r1, r7 - ldrh r1, [r1, #4] - str r1, [sp, #4] - ldr r1, [r8, #4048] - ldrh r2, [r1, r2] - ldr r1, .L624+356 + ldrh r2, [r2, r1] + str r2, [sp] + ldr r2, [r9, #-4068] + add r2, r2, r10 + ldrh r2, [r2, #4] + str r2, [sp, #4] + ldr r2, [r6, #4060] + ldrh r2, [r2, r1] + ldr r1, .L804+292 str r2, [sp, #8] mov r2, r5 bl sprintf add r5, r5, #1 - ldr r3, [r6, #-2024] + ldr r3, [r9, #-4068] cmp r5, #16 - ldrh r3, [r3, r7] + ldrh r3, [r3, r10] add r4, r4, r0 - bne .L619 -.L618: - ldr r6, .L624+24 - mov r5, #0 - ldr r8, .L624 - movw r9, #65535 - ldr r2, [r6, #-2004] - ldr r3, [r6, #-2024] - rsb r3, r3, r2 - ldr r2, .L624+360 - mov r3, r3, asr #1 - mul r3, r2, r3 + ldr ip, [sp, #20] + bne .L797 +.L796: + ldr r3, [r9, #-4048] + mov r10, #0 + ldr r5, [r9, #-4068] + movw ip, #65535 + rsb r5, r5, r3 + ldr r3, .L804+296 + mov r5, r5, asr #1 + mul r3, r3, r5 + mov r5, #6 uxth r3, r3 -.L621: - cmp r3, r9 - beq .L620 - mov r7, #6 - ldr r2, [r6, #-2024] - mul r7, r7, r3 +.L799: + cmp r3, ip + str ip, [sp, #20] + beq .L798 + mul fp, r5, r3 + ldr r2, [r9, #-4068] + ldr r1, [r6, #4060] mov r0, r4 - add r2, r2, r7 + add r2, r2, fp ldrh r2, [r2, #4] - str r2, [sp, #0] + str r2, [sp] mov r2, r3, asl #1 - ldr r1, [r8, #4048] ldrh r2, [r1, r2] - ldr r1, .L624+364 + ldr r1, .L804+300 str r2, [sp, #4] - mov r2, r5 + mov r2, r10 bl sprintf - add r5, r5, #1 - ldr r3, [r6, #-2024] - cmp r5, #4 - ldrh r3, [r3, r7] + add r10, r10, #1 + ldr r3, [r9, #-4068] + cmp r10, #4 + ldrh r3, [r3, fp] add r4, r4, r0 - bne .L621 -.L620: - rsb r0, sl, r4 - add sp, sp, #32 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L625: + ldr ip, [sp, #20] + bne .L799 +.L798: + ldr r2, [sp, #44] + rsb r0, r8, r4 + ldr r3, [r7] + cmp r2, r3 + beq .L800 + bl __stack_chk_fail +.L800: + add sp, sp, #52 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L805: .align 2 -.L624: +.L804: + .word __stack_chk_guard .word .LANCHOR0 + .word .LC6 .word .LC7 .word .LC8 - .word .LC9 .word .LANCHOR1 - .word .LC10 + .word .LC9 .word .LANCHOR2 - .word -2000 + .word .LANCHOR0+4068 + .word .LC10 .word .LC11 - .word -1996 .word .LC12 .word .LC13 .word .LC14 @@ -5291,68 +5149,51 @@ FtlPrintInfo2buf: .word .LC29 .word .LC30 .word .LC31 - .word -2042 .word .LC32 - .word -2044 .word .LC33 .word .LC34 .word .LC35 .word .LC36 .word .LC37 .word .LC38 - .word -1776 .word .LC39 .word .LC40 - .word -1772 .word .LC41 .word .LC42 - .word -1994 .word .LC43 .word .LC44 .word .LC45 .word .LC46 - .word -1992 .word .LC47 .word .LC48 - .word -1946 .word .LC49 .word .LC50 .word .LC51 .word .LC52 - .word -1944 .word .LC53 .word .LC54 - .word -1898 .word .LC55 .word .LC56 - .word -1900 .word .LC57 .word .LC58 - .word -1896 .word .LC59 - .word -1758 .word .LC60 .word .LC61 .word .LC62 .word .LC63 - .word -1756 .word .LC64 .word .LC65 .word .LC66 .word .LC67 - .word -1196 .word .LC68 - .word -1194 .word .LC69 .word .LC70 - .word -1188 .word .LC71 .word .LC72 .word .LC73 .word .LC74 - .word .LC75 .word -1431655765 - .word .LC76 + .word .LC75 .fnend .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 2 @@ -5364,21 +5205,21 @@ ftl_proc_ftl_read: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} - mov r4, r0 - ldr r1, .L627 - ldr r2, .L627+4 + mov r5, r0 + ldr r1, .L808 + ldr r2, .L808+4 bl sprintf - add r5, r4, r0 - mov r0, r5 + add r4, r5, r0 + mov r0, r4 bl FtlPrintInfo2buf - add r0, r5, r0 - rsb r0, r4, r0 + add r0, r4, r0 + rsb r0, r5, r0 ldmfd sp!, {r3, r4, r5, pc} -.L628: +.L809: .align 2 -.L627: +.L808: + .word .LC76 .word .LC77 - .word .LC78 .fnend .size ftl_proc_ftl_read, .-ftl_proc_ftl_read .align 2 @@ -5386,198 +5227,199 @@ ftl_proc_ftl_read: .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L654 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #20 - sub sp, sp, #20 - ldr r1, [r3, #-1788] - ldr r2, [r3, #-1780] - cmp r1, r2 - bcs .L630 - ldr r0, .L654+4 - mov r1, #3856 - mov r2, #0 - str r2, [r3, #-1796] - ldrh r1, [r0, r1] - ldr r0, [r0, #4048] - b .L631 -.L632: - ldrh lr, [r0], #2 - add r2, r2, #1 - ldr ip, [r3, #-1796] - add ip, lr, ip - str ip, [r3, #-1796] -.L631: - cmp r2, r1 - ldr r4, .L654 - bcc .L632 - ldr r5, [r4, #-1796] - mov r0, r5 - bl __aeabi_uidiv - ldr r2, .L654+4 - movw r3, #3906 - ldrh r1, [r2, r3] - str r0, [r4, #-1788] - ldr r0, [r4, #-1792] - rsb r0, r0, r5 - bl __aeabi_uidiv - str r0, [r4, #-1796] - b .L633 -.L630: - ldr r2, [r3, #-1784] - cmp r1, r2 - bls .L633 - add r2, r2, #1 - mov ip, #3856 - str r2, [r3, #-1784] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + ldr r4, .L840 + ldr r2, [r4, #-3832] + ldr r3, [r4, #-3824] + cmp r2, r3 + bcs .L811 + ldr r2, .L840+4 + movw r1, #1812 mov r3, #0 - ldr r2, .L654+4 - b .L634 -.L635: - ldr r0, [r2, #4048] + str r3, [r4, #-3840] + ldr r0, [r2, #4060] + mov r5, r2 + ldrh r1, [r2, r1] + sub r0, r0, #2 +.L812: + cmp r3, r1 + bcs .L839 + ldrh r2, [r0, #2]! + add r3, r3, #1 + ldr ip, [r4, #-3840] + add r2, r2, ip + str r2, [r4, #-3840] + b .L812 +.L839: + ldr r6, [r4, #-3840] + mov r0, r6 + bl __aeabi_uidiv + movw r3, #1864 + ldrh r1, [r5, r3] + str r0, [r4, #-3832] + ldr r0, [r4, #-3836] + rsb r0, r0, r6 + bl __aeabi_uidiv + str r0, [r4, #-3840] + b .L814 +.L811: + ldr r3, [r4, #-3828] + cmp r2, r3 + bls .L814 + ldr lr, .L840+4 + add r3, r3, #1 + ldr ip, .L840+8 + str r3, [r4, #-3828] + mov r3, #0 +.L816: + ldrh r2, [ip] + cmp r3, r2 + bcs .L814 + ldr r0, [lr, #4060] mov r1, r3, asl #1 add r3, r3, #1 - ldrh r4, [r0, r1] - add r4, r4, #1 - strh r4, [r0, r1] @ movhi -.L634: - ldrh r1, [r2, ip] - cmp r3, r1 - bcc .L635 -.L633: - ldr r3, .L654 - ldr r6, [r3, #-1780] - ldr r5, [r3, #-1788] - add r2, r6, #256 - cmp r2, r5 - mov r2, r3 - bls .L636 - ldr r3, [r3, #-1784] - add r1, r6, #768 - cmp r1, r3 - bls .L636 - ldr r3, .L654+4 - ldr r3, [r3, #3840] - cmp r3, #0 - beq .L653 + ldrh r2, [r0, r1] + add r2, r2, #1 + strh r2, [r0, r1] @ movhi + b .L816 +.L814: + ldr r6, [r4, #-3824] + ldr r8, [r4, #-3832] + add r3, r6, #256 + cmp r3, r8 + bls .L819 + ldr r2, .L840 + add r3, r6, #768 + ldr r2, [r2, #-3828] + cmp r3, r2 + bls .L819 + ldr r3, .L840+4 cmp r6, #40 - bhi .L653 -.L636: - ldr r3, .L654+8 - ldrh r0, [r2, r3] + ldr r2, [r3, #1796] + movls r3, #0 + movhi r3, #1 + cmp r2, #0 + orreq r3, r3, #1 + cmp r3, #0 + beq .L819 +.L821: + movw r0, #65535 + b .L820 +.L819: + ldr r5, .L840 + sub r3, r5, #4032 + ldrh r0, [r3, #-12] add r0, r0, r0, asl #1 ubfx r0, r0, #2, #16 bl GetFreeBlockMaxEraseCount - add r3, r6, #64 - cmp r0, r3 - mov r8, r0 - bcs .L638 + add r1, r6, #64 + cmp r0, r1 + mov r9, r0 + movcs r1, #0 + movcc r1, #1 cmp r6, #40 - bhi .L653 -.L638: - ldr r1, .L654 - ldr r3, [r1, #-2020] + movls r1, #0 + cmp r1, #0 + bne .L821 + ldr r3, [r5, #-4064] cmp r3, #0 - beq .L653 - ldr r2, .L654+4 - mov r0, #3856 + beq .L821 + ldr r2, .L840+4 + movw r0, #1812 + ldr ip, .L840+12 movw r7, #65535 - mov r4, r7 - mov fp, r7 - ldrh sl, [r2, r0] - ldr r0, [r1, #-2024] - ldr r1, [r2, #4048] - mov r2, #0 - b .L639 -.L642: - add r2, r2, #1 - uxth r2, r2 - cmp r2, sl - bhi .L653 - ldrh ip, [r3, #4] - cmp ip, #0 - beq .L640 + mov lr, #6 + ldrh r0, [r2, r0] + ldr r10, [r2, #4060] + str r0, [sp, #20] + ldr r0, [r5, #-4068] + mov r5, r7 +.L822: + ldrh r2, [r3] + movw fp, #65535 + cmp r2, fp + beq .L824 + add r1, r1, #1 + ldr fp, [sp, #20] + uxth r1, r1 + cmp r1, fp + bhi .L821 + ldrh fp, [r3, #4] + cmp fp, #0 + beq .L823 rsb r3, r0, r3 - ldr ip, .L654+12 mov r3, r3, asr #1 mul r3, ip, r3 uxth r3, r3 - mov ip, r3, asl #1 - ldrh ip, [r1, ip] - cmp ip, r6 - bls .L650 - cmp ip, r7 - movcc r7, ip - movcc r4, r3 -.L640: - mov ip, #6 - mla r3, ip, r9, r0 -.L639: - ldrh r9, [r3, #0] - cmp r9, fp - bne .L642 - b .L641 -.L650: - mov r4, r3 -.L641: + mov fp, r3, asl #1 + ldrh fp, [r10, fp] + cmp fp, r6 + bls .L828 + cmp fp, r7 + movcc r7, fp + movcc r5, r3 +.L823: + mla r3, lr, r2, r0 + b .L822 +.L828: + mov r5, r3 +.L824: movw r3, #65535 - cmp r4, r3 - beq .L637 - mov r9, r4, asl #1 - ldrh sl, [r1, r9] - cmp sl, r6 - bls .L643 + cmp r5, r3 + beq .L821 + mov r3, r5, asl #1 + ldrh fp, [r10, r3] + cmp fp, r6 + bls .L826 + str r3, [sp, #20] bl GetFreeBlockMinEraseCount + ldr r3, [sp, #20] cmp r0, r6 - ldrhi r3, .L654 - strhi r7, [r3, #-1780] -.L643: - cmp sl, r5 - bcs .L653 - add r3, sl, #128 - cmp r8, r3 - ble .L653 - add r3, sl, #256 - ldr r6, .L654 - cmp r3, r5 - bcc .L644 - ldr r3, [r6, #-1784] - add sl, sl, #768 - cmp sl, r3 - bcs .L653 -.L644: - ldr r3, [r6, #-2016] - mov r1, r4 - ldr r0, .L654+16 - mov r2, r5 - ldrh r3, [r3, r9] - str r3, [sp, #0] - ldr r3, .L654+4 - ldr r3, [r3, #4048] - ldrh r3, [r3, r9] - stmib sp, {r3, r8} - ldr r3, [r6, #-1784] + strhi r7, [r4, #-3824] +.L826: + cmp fp, r8 + bcs .L821 + add r2, fp, #128 + cmp r9, r2 + ble .L821 + add r2, fp, #256 + cmp r2, r8 + bcc .L827 + ldr r2, [r4, #-3828] + add fp, fp, #768 + cmp fp, r2 + bcs .L821 +.L827: + ldr r2, [r4, #-4060] + mov r1, r5 + ldr r0, .L840+16 + ldrh r2, [r2, r3] + str r2, [sp] + mov r2, r8 + ldrh r3, [r10, r3] + stmib sp, {r3, r9} + ldr r3, [r4, #-3828] bl printk + mov r0, r5 mov r3, #1 - str r3, [r6, #-1184] - b .L637 -.L653: - movw r4, #65535 -.L637: - mov r0, r4 - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L655: + str r3, [r4, #-3224] +.L820: + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L841: .align 2 -.L654: +.L840: .word .LANCHOR2 .word .LANCHOR0 - .word -2000 + .word .LANCHOR0+1812 .word -1431655765 - .word .LC79 + .word .LC78 .fnend .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 @@ -5591,19 +5433,19 @@ free_data_superblock: cmp r0, r2 stmfd sp!, {r3, lr} .save {r3, lr} - beq .L657 - ldr r2, .L658 + beq .L843 + ldr r2, .L845 mov r3, r0, asl #1 mov r1, #0 - ldr r2, [r2, #-2016] + ldr r2, [r2, #-4060] strh r1, [r2, r3] @ movhi bl INSERT_FREE_LIST -.L657: +.L843: mov r0, #0 ldmfd sp!, {r3, pc} -.L659: +.L846: .align 2 -.L658: +.L845: .word .LANCHOR2 .fnend .size free_data_superblock, .-free_data_superblock @@ -5614,102 +5456,101 @@ FtlGcBufInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L668 + ldr ip, .L855 mov r3, #0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - movw sl, #3848 - str r3, [r2, #-1180] - mov r8, #12 - ldr r0, .L668+4 - mov r7, #1 - movw r6, #3926 - movw fp, #3928 - b .L661 -.L662: - mul r1, r8, r3 - ldr r4, [r2, #-1176] - add ip, r4, r1 - str r7, [ip, #8] - ldrh ip, [r0, r6] - mul ip, ip, r3 - add r5, ip, #3 - cmp ip, #0 - movlt ip, r5 - ldr r5, [r2, #-1172] - bic ip, ip, #3 - add ip, r5, ip - str ip, [r4, r1] - ldrh ip, [r0, fp] - ldr r9, [r2, #-1176] - mul ip, ip, r3 - add r4, r9, r1 - add r5, ip, #3 - cmp ip, #0 - movlt ip, r5 - ldr r5, [r2, #-1168] - bic ip, ip, #3 - add ip, r5, ip - str ip, [r4, #4] - ldr ip, [r2, #-1164] - mov r5, #36 - ldr r1, [r9, r1] - mla ip, r5, r3, ip - add r3, r3, #1 + ldr r1, .L855+4 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + add r7, ip, #78 + mov r5, #12 + mov r6, #1 + mov r8, #36 + str r3, [r1, #-3220] +.L848: + ldrh r2, [ip] + add r4, r3, #1 uxth r3, r3 - str r1, [ip, #8] - ldr r1, [r4, #4] - str r1, [ip, #12] -.L661: - ldrh r1, [r0, sl] - cmp r3, r1 - bcc .L662 - b .L667 -.L664: - mul r2, r8, r1 - ldr r4, [r3, #-1176] - add r0, r4, r2 - str r7, [r0, #8] - ldrh r0, [ip, r6] - mul r0, r0, r1 - add sl, r0, #3 - cmp r0, #0 - movlt r0, sl - ldr sl, [r3, #-1172] - bic r0, r0, #3 - add r0, sl, r0 - str r0, [r4, r2] - ldr r0, [r3, #-1176] - add r0, r0, r2 - ldrh r2, [ip, r5] - mul r2, r2, r1 - add r1, r1, #1 - uxth r1, r1 - add r4, r2, #3 + cmp r3, r2 + bcs .L853 + mul r0, r5, r3 + ldr lr, [r1, #-3216] + add r2, lr, r0 + str r6, [r2, #8] + ldrh r2, [r7] + mul r2, r2, r3 + add r9, r2, #3 cmp r2, #0 - movlt r2, r4 - ldr r4, [r3, #-1168] + movlt r2, r9 + ldr r9, [r1, #-3212] bic r2, r2, #3 - add r2, r4, r2 - str r2, [r0, #4] - b .L666 -.L667: - ldr r3, .L668 - mov r8, #12 - ldr ip, .L668+4 - mov r7, #0 - movw r6, #3926 - movw r5, #3928 -.L666: - ldr r2, [r3, #-1160] - cmp r1, r2 - bcc .L664 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L669: + add r2, r9, r2 + str r2, [lr, r0] + ldr r2, .L855+8 + ldr r9, [r1, #-3216] + ldrh r2, [r2] + add lr, r9, r0 + mul r2, r2, r3 + add r10, r2, #3 + cmp r2, #0 + movlt r2, r10 + ldr r10, [r1, #-3208] + bic r2, r2, #3 + add r2, r10, r2 + str r2, [lr, #4] + ldr r2, [r1, #-3204] + mla r3, r8, r3, r2 + ldr r2, [r9, r0] + str r2, [r3, #8] + ldr r2, [lr, #4] + str r2, [r3, #12] + mov r3, r4 + b .L848 +.L853: + ldr r0, .L855+4 + mov ip, #12 + ldr r4, .L855+12 + mov lr, #0 +.L850: + ldr r3, [r1, #-3200] + cmp r2, r3 + bcs .L854 + mul r5, ip, r2 + ldr r7, [r0, #-3216] + add r3, r7, r5 + str lr, [r3, #8] + ldrh r3, [r4] + mul r3, r3, r2 + add r6, r3, #3 + cmp r3, #0 + movlt r3, r6 + ldr r6, [r0, #-3212] + bic r3, r3, #3 + add r3, r6, r3 + str r3, [r7, r5] + ldr r3, .L855+8 + ldr r6, [r0, #-3216] + ldrh r3, [r3] + add r5, r6, r5 + mul r3, r3, r2 + add r2, r2, #1 + uxth r2, r2 + add r6, r3, #3 + cmp r3, #0 + movlt r3, r6 + ldr r6, [r0, #-3208] + bic r3, r3, #3 + add r3, r6, r3 + str r3, [r5, #4] + b .L850 +.L854: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L856: .align 2 -.L668: +.L855: + .word .LANCHOR0+1804 .word .LANCHOR2 - .word .LANCHOR0 + .word .LANCHOR0+1884 + .word .LANCHOR0+1882 .fnend .size FtlGcBufInit, .-FtlGcBufInit .align 2 @@ -5719,42 +5560,39 @@ FtlGcBufFree: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L677 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} + ldr r3, .L865 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + mov lr, #0 + ldr r6, [r3, #-3200] mov r5, #36 - ldr r6, [r3, #-1160] - mov fp, #12 - ldr ip, [r3, #-1176] - mov r3, #0 - mov r4, r3 - b .L671 -.L674: - mul sl, fp, r2 - add r8, ip, sl - ldr r9, [ip, sl] - ldr sl, [r7, #8] - cmp r9, sl - streq r4, [r8, #8] - beq .L673 -.L672: - add r2, r2, #1 - uxth r2, r2 -.L676: - cmp r2, r6 - bcc .L674 -.L673: - add r3, r3, #1 - uxth r3, r3 -.L671: - cmp r3, r1 - ldmcsfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - mla r7, r5, r3, r0 + ldr r4, [r3, #-3216] + mov r7, lr + mov r8, #12 +.L858: + uxth ip, lr + cmp ip, r1 + ldmcsfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} + mla ip, r5, ip, r0 mov r2, #0 - b .L676 -.L678: +.L859: + uxth r3, r2 + cmp r3, r6 + bcs .L860 + mul r3, r8, r3 + add r2, r2, #1 + add r9, r4, r3 + ldr r10, [r4, r3] + ldr r3, [ip, #8] + cmp r10, r3 + bne .L859 + str r7, [r9, #8] +.L860: + add lr, lr, #1 + b .L858 +.L866: .align 2 -.L677: +.L865: .word .LANCHOR2 .fnend .size FtlGcBufFree, .-FtlGcBufFree @@ -5765,47 +5603,43 @@ FtlGcBufAlloc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L686 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} + ldr r3, .L876 + mov ip, #0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} mov r6, #12 - ldr r8, [r3, #-1160] - mov r5, #1 - ldr r7, [r3, #-1176] - mov r4, #36 - mov r3, #0 - b .L680 -.L683: - mla ip, r6, r2, r7 - ldr sl, [ip, #8] - cmp sl, #0 - bne .L681 - mla r2, r4, r3, r0 - ldr sl, [ip, #0] - str r5, [ip, #8] - str sl, [r2, #8] - ldr ip, [ip, #4] - str ip, [r2, #12] - b .L682 -.L681: - add r2, r2, #1 - uxth r2, r2 - b .L684 -.L685: - mov r2, #0 -.L684: - cmp r2, r8 - bcc .L683 -.L682: - add r3, r3, #1 - uxth r3, r3 -.L680: - cmp r3, r1 - bcc .L685 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L687: + ldr r4, [r3, #-3200] + mov r7, #1 + ldr r5, [r3, #-3216] + mov r8, #36 +.L868: + uxth r2, ip + cmp r2, r1 + bcs .L875 + mov lr, #0 +.L869: + uxth r3, lr + cmp r3, r4 + bcs .L870 + mla r3, r6, r3, r5 + add lr, lr, #1 + ldr r9, [r3, #8] + cmp r9, #0 + bne .L869 + mla r2, r8, r2, r0 + ldr lr, [r3] + str r7, [r3, #8] + str lr, [r2, #8] + ldr r3, [r3, #4] + str r3, [r2, #12] +.L870: + add ip, ip, #1 + b .L868 +.L875: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} +.L877: .align 2 -.L686: +.L876: .word .LANCHOR2 .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc @@ -5817,31 +5651,26 @@ IsBlkInGcList: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L693 - ldr r2, .L693+4 - ldrh r1, [r3, r2] - ldr r2, [r3, #-1152] - mov r3, #0 - b .L689 -.L691: - ldrh ip, [r2], #2 - cmp ip, r0 - beq .L692 - add r3, r3, #1 - uxth r3, r3 -.L689: - cmp r3, r1 - bne .L691 - mov r0, #0 - bx lr -.L692: + ldr r2, .L884 + sub r2, r2, #3184 + ldr r3, [r2, #-12] + ldrh r2, [r2, #-8] + add r2, r3, r2, asl #1 +.L879: + cmp r3, r2 + beq .L883 + ldrh r1, [r3], #2 + cmp r1, r0 + bne .L879 mov r0, #1 bx lr -.L694: +.L883: + mov r0, #0 + bx lr +.L885: .align 2 -.L693: +.L884: .word .LANCHOR2 - .word -1156 .fnend .size IsBlkInGcList, .-IsBlkInGcList .align 2 @@ -5851,56 +5680,50 @@ FtlGcUpdatePage: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r4, r0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + mov r5, r0 + ldr r4, .L894 ubfx r0, r0, #10, #16 - mov r5, r1 - mov r6, r2 + mov r6, r1 + mov r7, r2 bl P2V_block_in_plane - ldr r3, .L699 - ldr r2, .L699+4 - ldrh ip, [r3, r2] - ldr r2, [r3, #-1152] - mov r3, #0 - mov r1, r2 - b .L696 -.L698: - ldrh r7, [r1], #2 - cmp r7, r0 - beq .L697 - add r3, r3, #1 - uxth r3, r3 -.L696: - cmp r3, ip - bne .L698 - mov r3, r3, asl #1 - strh r0, [r2, r3] @ movhi - ldr r2, .L699 - ldr r3, .L699+4 - ldrh r1, [r2, r3] - add r1, r1, #1 - strh r1, [r2, r3] @ movhi -.L697: - ldr r3, .L699 - mov r0, #12 - ldr r2, .L699+8 - ldrh r1, [r3, r2] - mul r1, r0, r1 - ldr r0, [r3, #-1148] - add ip, r0, r1 - stmib ip, {r5, r6} - str r4, [r0, r1] - ldrh r1, [r3, r2] - add r1, r1, #1 - strh r1, [r3, r2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L700: + sub r3, r4, #3184 + ldr r2, [r4, #-3196] + mov lr, #0 + ldrh r1, [r3, #-8] + sub r8, r2, #2 +.L887: + uxth ip, lr + cmp ip, r1 + bcs .L891 + ldrh r9, [r8, #2]! + add lr, lr, #1 + cmp r9, r0 + bne .L887 +.L891: + cmp ip, r1 + moveq ip, ip, asl #1 + streqh r0, [r2, ip] @ movhi + ldreqh ip, [r3, #-8] + addeq ip, ip, #1 + streqh ip, [r3, #-8] @ movhi +.L889: + ldrh r2, [r3] + mov ip, #12 + mul ip, ip, r2 + ldr r2, [r4, #-3188] + add r1, r2, ip + stmib r1, {r6, r7} + str r5, [r2, ip] + ldrh r2, [r3] + add r2, r2, #1 + strh r2, [r3] @ movhi + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L895: .align 2 -.L699: +.L894: .word .LANCHOR2 - .word -1156 - .word -1144 .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage .align 2 @@ -5910,53 +5733,49 @@ FtlGcRefreshOpenBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r4, r0 - mov r1, r4 - ldr r0, .L706 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r5, r0 + ldr r4, .L904 + ldrh r3, [r4, #-14] + cmp r3, r0 + beq .L898 + ldrh r3, [r4, #-12] + cmp r3, r0 + beq .L898 + ldrh r3, [r4, #-10] + cmp r3, r0 + beq .L898 + ldrh r3, [r4, #-8] + cmp r3, r0 + beq .L898 + ldr r0, .L904+4 + mov r1, r5 bl printk - ldr r8, .L706+4 - ldr r3, .L706+8 - ldrh sl, [r3, r8] - cmp sl, r4 - beq .L702 - ldr r6, .L706+12 - ldrh r7, [r3, r6] - cmp r7, r4 - beq .L702 - ldr ip, .L706+16 - ldrh r5, [r3, ip] - cmp r5, r4 - beq .L702 - ldr r1, .L706+20 - ldrh r0, [r3, r1] - cmp r0, r4 - beq .L702 - movw r2, #65535 - cmp sl, r2 - streqh r4, [r3, r8] @ movhi - beq .L702 - cmp r7, r2 - streqh r4, [r3, r6] @ movhi - beq .L702 - cmp r5, r2 - streqh r4, [r3, ip] @ movhi - beq .L702 - cmp r0, r2 - streqh r4, [r3, r1] @ movhi -.L702: + ldrh r2, [r4, #-14] + movw r3, #65535 + cmp r2, r3 + streqh r5, [r4, #-14] @ movhi + beq .L898 + ldrh r2, [r4, #-12] + cmp r2, r3 + streqh r5, [r4, #-12] @ movhi + beq .L898 + ldrh r2, [r4, #-10] + cmp r2, r3 + streqh r5, [r4, #-10] @ movhi + beq .L898 + ldrh r2, [r4, #-8] + cmp r2, r3 + streqh r5, [r4, #-8] @ movhi +.L898: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L707: + ldmfd sp!, {r3, r4, r5, pc} +.L905: .align 2 -.L706: - .word .LC80 - .word -1142 - .word .LANCHOR2 - .word -1140 - .word -1138 - .word -1136 +.L904: + .word .LANCHOR2-3168 + .word .LC79 .fnend .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 2 @@ -5966,115 +5785,55 @@ FtlGcRefreshBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r4, r0 - mov r1, r4 - ldr r0, .L719 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r5, r0 + ldr r4, .L917 + ldrh r3, [r4, #-14] + cmp r3, r0 + beq .L914 + ldrh r3, [r4, #-12] + cmp r3, r0 + beq .L914 + ldrh r3, [r4, #-10] + cmp r3, r0 + beq .L914 + ldrh r3, [r4, #-8] + cmp r3, r0 + beq .L914 + ldr r0, .L917+4 + mov r1, r5 bl printk - ldr r8, .L719+4 - ldr r3, .L719+8 - ldrh sl, [r3, r8] - cmp sl, r4 - beq .L716 - ldr r6, .L719+12 - ldrh r7, [r3, r6] - cmp r7, r4 - beq .L716 - ldr ip, .L719+16 - ldrh r5, [r3, ip] - cmp r5, r4 - beq .L716 - ldr r1, .L719+20 - ldrh r0, [r3, r1] - cmp r0, r4 - beq .L717 - movw r2, #65535 - cmp sl, r2 - streqh r4, [r3, r8] @ movhi - beq .L716 - cmp r7, r2 - streqh r4, [r3, r6] @ movhi - beq .L716 - cmp r5, r2 - streqh r4, [r3, ip] @ movhi - beq .L716 - cmp r0, r2 - streqh r4, [r3, r1] @ movhi - mvnne r0, #0 - ldmnefd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L716: + ldrh r2, [r4, #-14] + movw r3, #65535 + cmp r2, r3 + streqh r5, [r4, #-14] @ movhi + beq .L914 + ldrh r2, [r4, #-12] + cmp r2, r3 + streqh r5, [r4, #-12] @ movhi + beq .L914 + ldrh r2, [r4, #-10] + cmp r2, r3 + streqh r5, [r4, #-10] @ movhi + beq .L914 + ldrh r2, [r4, #-8] + cmp r2, r3 + bne .L915 + strh r5, [r4, #-8] @ movhi +.L914: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L717: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L720: + ldmfd sp!, {r3, r4, r5, pc} +.L915: + mvn r0, #0 + ldmfd sp!, {r3, r4, r5, pc} +.L918: .align 2 -.L719: - .word .LC80 - .word -1142 - .word .LANCHOR2 - .word -1140 - .word -1138 - .word -1136 +.L917: + .word .LANCHOR2-3168 + .word .LC79 .fnend .size FtlGcRefreshBlock, .-FtlGcRefreshBlock - .section .text.unlikely,"ax",%progbits - .align 2 - .type decrement_vpc_count.part.18, %function -decrement_vpc_count.part.18: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0, asl #1 - ldr r5, .L723 - mov r4, r0 - mov r1, r4 - ldr r0, .L723+4 - ldr r3, [r5, #-2016] - ldrh r2, [r3, r6] - bl printk - ldr r3, [r5, #-2016] - mov r2, #32 - ldr r0, .L723+8 - mov r1, r4 - strh r2, [r3, r6] @ movhi - bl test_node_in_list - cmp r0, #0 - beq .L722 - mov r1, r4 - ldr r0, .L723+8 - bl List_remove_node - ldr r3, .L723+12 - mov r0, r4 - ldrh r2, [r5, r3] - sub r2, r2, #1 - strh r2, [r5, r3] @ movhi - bl INSERT_DATA_LIST - ldr r3, [r5, #-2016] - ldr r0, .L723+16 - mov r1, r4 - ldrh r2, [r3, r6] - bl printk -.L722: - mov r0, r4 - bl FtlGcRefreshBlock - mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L724: - .align 2 -.L723: - .word .LANCHOR2 - .word .LC81 - .word .LANCHOR2-2004 - .word -2000 - .word .LC82 - .fnend - .size decrement_vpc_count.part.18, .-decrement_vpc_count.part.18 - .text .align 2 .global FtlGcMarkBadPhyBlk .type FtlGcMarkBadPhyBlk, %function @@ -6082,64 +5841,59 @@ FtlGcMarkBadPhyBlk: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r4, r0 - bl P2V_block_in_plane - ldr r7, .L730 - mov r2, r4 - ldr r6, .L730+4 - ldrh r1, [r7, r6] + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} mov r5, r0 - ldr r0, .L730+8 + bl P2V_block_in_plane + ldr r6, .L929 + mov r2, r5 + ldrh r1, [r6, #-6] + mov r4, r0 + ldr r0, .L929+4 bl printk - mov r0, r5 + mov r0, r4 bl FtlGcRefreshBlock - ldr r3, .L730+12 - ldr r2, [r3, #3840] + ldr r3, .L929+8 + ldr r2, [r3, #1796] cmp r2, #0 - beq .L726 - ldr r3, [r3, #4048] - mov r5, r5, asl #1 - ldrh r2, [r3, r5] - cmp r2, #39 - subhi r2, r2, #40 - strhih r2, [r3, r5] @ movhi -.L726: - ldrh r1, [r7, r6] - mov r3, #0 - ldr r2, .L730+16 - b .L727 -.L729: - ldrh r0, [r2, #2]! - cmp r0, r4 - beq .L728 - add r3, r3, #1 - uxth r3, r3 -.L727: - cmp r3, r1 - bne .L729 + beq .L920 + ldr r2, [r3, #4060] + mov r4, r4, asl #1 + ldrh r3, [r2, r4] + cmp r3, #39 + subhi r3, r3, #40 + strhih r3, [r2, r4] @ movhi +.L920: + ldrh r3, [r6, #-6] + mov r2, #0 + ldr r0, .L929+12 +.L921: + uxth r1, r2 + cmp r1, r3 + bcs .L928 + add r2, r2, #1 + add r1, r0, r2, asl #1 + ldrh r1, [r1, #-2] + cmp r1, r5 + bne .L921 + b .L922 +.L928: cmp r3, #15 - bhi .L728 - ldr r2, .L730 - ldr r1, .L730+20 - add r0, r2, r3, asl #1 - add r3, r3, #1 - strh r4, [r0, r1] @ movhi - sub r1, r1, #2 - strh r3, [r2, r1] @ movhi -.L728: + addls r2, r3, #1 + strlsh r2, [r6, #-6] @ movhi + ldrls r2, .L929+12 + movls r3, r3, asl #1 + strlsh r5, [r2, r3] @ movhi +.L922: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L731: + ldmfd sp!, {r4, r5, r6, pc} +.L930: .align 2 -.L730: - .word .LANCHOR2 - .word -1134 - .word .LC83 +.L929: + .word .LANCHOR2-3168 + .word .LC80 .word .LANCHOR0 - .word .LANCHOR2-1134 - .word -1132 + .word .LANCHOR2-3172 .fnend .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 2 @@ -6149,44 +5903,38 @@ FtlGcReFreshBadBlk: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - ldr r2, .L735 - ldr r3, .L735+4 - ldrh r2, [r3, r2] - cmp r2, #0 - beq .L733 - ldr r1, .L735+8 - ldrh r0, [r3, r1] - movw r1, #65535 - cmp r0, r1 - bne .L733 - ldr r4, .L735+12 - ldr r5, .L735+4 - ldrh r1, [r3, r4] + stmfd sp!, {r4, lr} + .save {r4, lr} + ldr r4, .L938 + ldrh r3, [r4, #-6] + cmp r3, #0 + beq .L932 + ldrh r1, [r4, #-14] + movw r2, #65535 cmp r1, r2 - movcs r2, #0 - strcsh r2, [r3, r4] @ movhi - ldrh r2, [r5, r4] - ldr r3, .L735+16 - add r2, r5, r2, asl #1 + bne .L932 + add r4, r4, #32 + ldrh r2, [r4, #-2] + cmp r2, r3 + ldr r2, .L938+4 + movcs r3, #0 + strcsh r3, [r4, #-2] @ movhi + ldrh r3, [r4, #-2] + mov r3, r3, asl #1 ldrh r0, [r2, r3] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh r3, [r5, r4] + ldrh r3, [r4, #-2] add r3, r3, #1 - strh r3, [r5, r4] @ movhi -.L733: + strh r3, [r4, #-2] @ movhi +.L932: mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L736: + ldmfd sp!, {r4, pc} +.L939: .align 2 -.L735: - .word -1134 - .word .LANCHOR2 - .word -1142 - .word -1098 - .word -1132 +.L938: + .word .LANCHOR2-3168 + .word .LANCHOR2-3172 .fnend .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 2 @@ -6196,1153 +5944,11 @@ ftl_memset: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - cmp r2, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov r4, r0 - beq .L738 - bl memset -.L738: - mov r0, r4 - ldmfd sp!, {r4, pc} + @ link register save eliminated. + b memset .fnend .size ftl_memset, .-ftl_memset .align 2 - .global FtlGcPageVarInit - .type FtlGcPageVarInit, %function -FtlGcPageVarInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r3, #0 - ldr r4, .L740 - mov r5, #3920 - ldr r2, .L740+4 - mov r1, #255 - ldr r6, .L740+8 - ldr r0, [r4, #-1152] - strh r3, [r4, r2] @ movhi - add r2, r2, #12 - strh r3, [r4, r2] @ movhi - ldrh r2, [r6, r5] - mov r2, r2, asl #1 - bl ftl_memset - ldrh r3, [r6, r5] - mov r2, #12 - ldr r0, [r4, #-1148] - mov r1, #255 - mul r2, r2, r3 - bl ftl_memset - ldmfd sp!, {r4, r5, r6, lr} - b FtlGcBufInit -.L741: - .align 2 -.L740: - .word .LANCHOR2 - .word -1156 - .word .LANCHOR0 - .fnend - .size FtlGcPageVarInit, .-FtlGcPageVarInit - .align 2 - .global SupperBlkListInit - .type SupperBlkListInit, %function -SupperBlkListInit: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - movw r3, #3858 - ldr r7, .L752 - mov r2, #6 - ldr r4, .L752+4 - mov r1, #0 - mov r6, #0 - ldrh r3, [r7, r3] - mov sl, r6 - ldr r0, [r4, #-2024] - mul r2, r2, r3 - bl ftl_memset - ldr r3, .L752+8 - str r6, [r4, #-2004] - str r6, [r4, #-2020] - strh r6, [r4, r3] @ movhi - add r3, r3, #8 - str r6, [r4, #-2012] - strh r6, [r4, r3] @ movhi - add r3, r3, #904 - strh r6, [r4, r3] @ movhi - mov r4, r6 - b .L743 -.L745: - add r2, r7, r2 - mov r1, fp - add r9, r9, #1 - ldrb r0, [r2, #3874] @ zero_extendqisi2 - str r3, [sp, #4] - bl V2P_block - bl FtlBbmIsBadBlock - ldr r3, [sp, #4] - uxth r9, r9 - cmp r0, #0 - ldreqh r2, [r7, r3] - addeq r5, r5, r2 - uxtheq r5, r5 - b .L750 -.L751: - mov r5, #0 - uxth fp, r4 - mov r9, r5 - movw r3, #3916 -.L750: - movw r0, #3848 - sxth r2, r9 - ldrh r1, [r7, r0] - cmp r2, r1 - blt .L745 - cmp r5, #0 - ldr r9, .L752+4 - beq .L746 - sxth r1, r5 - mov r0, #32768 - bl __aeabi_idiv - uxth r5, r0 - b .L747 -.L746: - sxth r3, r4 - ldr r2, [r9, #-2016] - mvn r1, #0 - mov r3, r3, asl #1 - strh r1, [r2, r3] @ movhi -.L747: - sxth r1, r4 - ldr r0, [r9, #-2024] - ldr r3, .L752+4 - mov r2, r1, asl #1 - add r1, r2, r1 - add r1, r0, r1, asl #1 - strh r5, [r1, #4] @ movhi - ldr r1, .L752+12 - ldrh r1, [r9, r1] - cmp r8, r1 - beq .L748 - ldr r1, .L752+16 - ldrh r1, [r3, r1] - cmp r8, r1 - beq .L748 - ldr r1, .L752+20 - ldrh r1, [r3, r1] - cmp r8, r1 - beq .L748 - ldr r3, [r3, #-2016] - uxth r0, r4 - ldrh r3, [r3, r2] - cmp r3, #0 - bne .L749 - add r6, r6, #1 - uxth r6, r6 - bl INSERT_FREE_LIST - b .L748 -.L749: - add sl, sl, #1 - uxth sl, sl - bl INSERT_DATA_LIST -.L748: - add r4, r4, #1 - uxth r4, r4 -.L743: - mov r3, #3856 - sxth r8, r4 - ldrh r3, [r7, r3] - cmp r8, r3 - blt .L751 - ldr r3, .L752+4 - mov r0, #0 - ldr r2, .L752+8 - strh sl, [r3, r2] @ movhi - add r2, r2, #8 - strh r6, [r3, r2] @ movhi - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L753: - .align 2 -.L752: - .word .LANCHOR0 - .word .LANCHOR2 - .word -2008 - .word -1996 - .word -1948 - .word -1900 - .fnend - .size SupperBlkListInit, .-SupperBlkListInit - .align 2 - .global FtlL2PDataInit - .type FtlL2PDataInit, %function -FtlL2PDataInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r1, #0 - ldr r4, .L757 - movw r6, #3926 - ldr r5, .L757+4 - movw r7, #3954 - mov r8, #12 - ldr r2, [r4, #3944] - ldr r0, [r5, #-1092] - mov r2, r2, asl #1 - bl ftl_memset - ldrh r3, [r4, r6] - ldrh r2, [r4, r7] - mov r1, #255 - ldr r0, [r5, #-1088] - mul r2, r2, r3 - bl ftl_memset - mov r2, #0 - mov ip, r2 - mvn r0, #0 - b .L755 -.L756: - mul r3, r8, r2 - ldr r1, [r5, #-1852] - add sl, r1, r3 - str ip, [sl, #4] - strh r0, [r1, r3] @ movhi - ldr r1, [r5, #-1852] - ldr sl, [r5, #-1088] - add r3, r1, r3 - ldrh r1, [r4, r6] - mul r1, r2, r1 - add r2, r2, #1 - uxth r2, r2 - bic r1, r1, #3 - add r1, sl, r1 - str r1, [r3, #8] -.L755: - ldrh r3, [r4, r7] - ldr r1, .L757 - cmp r3, r2 - ldr r3, .L757+4 - bhi .L756 - ldr r0, .L757+8 - mvn r2, #0 - strh r2, [r3, r0] @ movhi - sub r0, r0, #2 - strh r2, [r3, r0] @ movhi - ldr r0, [r1, #3944] - ldr r2, .L757+12 - strh r0, [r3, r2] @ movhi - sub r2, r2, #6 - ldr r0, .L757+16 - strh r0, [r3, r2] @ movhi - add r2, r2, #40 - ldrh r0, [r3, r2] - sub r2, r2, #36 - strh r0, [r3, r2] @ movhi - mov r2, #3952 - ldrh r1, [r1, r2] - ldr r2, .L757+20 - strh r1, [r3, r2] @ movhi - ldr r2, [r3, #-1036] - str r2, [r3, #-1072] - ldr r2, [r3, #-1032] - str r2, [r3, #-1068] - ldr r2, [r3, #-1092] - str r2, [r3, #-1064] - ldr r2, [r3, #-1028] - str r2, [r3, #-1060] - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L758: - .align 2 -.L757: - .word .LANCHOR0 - .word .LANCHOR2 - .word -1082 - .word -1074 - .word -3902 - .word -1078 - .fnend - .size FtlL2PDataInit, .-FtlL2PDataInit - .align 2 - .global ftl_free_no_use_map_blk - .type ftl_free_no_use_map_blk, %function -ftl_free_no_use_map_blk: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r1, #0 - ldrh r2, [r0, #10] - mov r4, r0 - ldr r5, [r0, #20] - ldr r6, [r0, #12] - ldr r7, [r0, #24] - mov r2, r2, asl #1 - mov r0, r5 - bl ftl_memset - mov r3, #0 - b .L760 -.L764: - ldr r0, [r7, r3, asl #2] - mov r2, #0 - ubfx r0, r0, #10, #16 - b .L761 -.L763: - mov r1, r2, asl #1 - ldrh ip, [r6, r1] - cmp ip, r0 - bne .L762 - cmp r0, #0 - ldrneh ip, [r5, r1] - addne ip, ip, #1 - strneh ip, [r5, r1] @ movhi -.L762: - add r2, r2, #1 - uxth r2, r2 -.L761: - ldrh r1, [r4, #10] - cmp r1, r2 - bhi .L763 - add r3, r3, #1 - uxth r3, r3 -.L760: - ldrh r2, [r4, #6] - cmp r2, r3 - bhi .L764 - ldr r2, .L770 - movw r3, #3918 - mov r8, #0 - mov r7, r8 - ldrh r2, [r2, r3] - ldrh r3, [r4, #0] - mov r3, r3, asl #1 - strh r2, [r5, r3] @ movhi - ldrh fp, [r5, #0] - b .L765 -.L768: - mov sl, r7, asl #1 - ldrh r9, [r5, sl] - cmp fp, r9 - bls .L766 - ldrh r3, [r6, sl] - cmp r3, #0 - movne r8, r7 - movne fp, r9 -.L766: - cmp r9, #0 - bne .L767 - ldrh r0, [r6, sl] - cmp r0, #0 - beq .L767 - mov r1, #1 - bl FtlFreeSysBlkQueueIn - strh r9, [r6, sl] @ movhi - ldrh r3, [r4, #8] - sub r3, r3, #1 - strh r3, [r4, #8] @ movhi -.L767: - add r7, r7, #1 - uxth r7, r7 -.L765: - ldrh r3, [r4, #10] - cmp r3, r7 - bhi .L768 - mov r0, r8 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L771: - .align 2 -.L770: - .word .LANCHOR0 - .fnend - .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk - .align 2 - .global FtlFreeSysBlkQueueInit - .type FtlFreeSysBlkQueueInit, %function -FtlFreeSysBlkQueueInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L773 - movw r2, #4058 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov r4, #0 - strh r4, [r3, r2] @ movhi - add r2, r2, #2 - mov r1, r4 - strh r4, [r3, r2] @ movhi - add r2, r2, #2 - strh r4, [r3, r2] @ movhi - movw r2, #4056 - strh r0, [r3, r2] @ movhi - add r0, r3, #4064 - mov r2, #2048 - bl ftl_memset - mov r0, r4 - ldmfd sp!, {r4, pc} -.L774: - .align 2 -.L773: - .word .LANCHOR0 - .fnend - .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit - .align 2 - .global FtlBbtMemInit - .type FtlBbtMemInit, %function -FtlBbtMemInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L776 - movw r2, #3980 - mvn r1, #0 - ldr r0, .L776+4 - strh r1, [r3, r2] @ movhi - add r2, r2, #6 - mov r1, #0 - strh r1, [r3, r2] @ movhi - mov r1, #255 - mov r2, #16 - b ftl_memset -.L777: - .align 2 -.L776: - .word .LANCHOR0 - .word .LANCHOR0+3992 - .fnend - .size FtlBbtMemInit, .-FtlBbtMemInit - .align 2 - .global FtlBbt2Bitmap - .type FtlBbt2Bitmap, %function -FtlBbt2Bitmap: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L782 - ldr r2, .L782+4 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r5, r0 - ldrh r2, [r2, r3] - mov r0, r1 - mov r4, r1 - mov r1, #0 - mov r2, r2, asl #2 - bl ftl_memset - mov r3, #0 - movw ip, #65535 - mov r0, #1 -.L780: - ldrh r2, [r5, r3] - cmp r2, ip - ldmeqfd sp!, {r4, r5, r6, pc} - mov r1, r2, lsr #5 - add r3, r3, #2 - cmp r3, #1024 - and r2, r2, #31 - ldr r6, [r4, r1, asl #2] - orr r2, r6, r0, asl r2 - str r2, [r4, r1, asl #2] - bne .L780 - ldmfd sp!, {r4, r5, r6, pc} -.L783: - .align 2 -.L782: - .word -1024 - .word .LANCHOR2 - .fnend - .size FtlBbt2Bitmap, .-FtlBbt2Bitmap - .align 2 - .global FtlVariablesInit - .type FtlVariablesInit, %function -FtlVariablesInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mvn r3, #0 - ldr r6, .L785 - mov r4, #0 - ldr r2, .L785+4 - mov r1, r4 - ldr r5, .L785+8 - movw r7, #3858 - str r3, [r6, #-1004] - strh r3, [r6, r2] @ movhi - movw r3, #3962 - strh r4, [r5, r3] @ movhi - mov r3, #3936 - ldrh r2, [r5, r3] - ldr r0, [r5, #3964] - str r4, [r6, #-1020] - mov r2, r2, asl #1 - str r4, [r6, #-1012] - str r4, [r6, #-1008] - str r4, [r5, #3840] - bl ftl_memset - ldrh r2, [r5, r7] - mov r1, r4 - ldr r0, [r5, #4048] - mov r2, r2, asl #1 - bl ftl_memset - ldrh r2, [r5, r7] - mov r1, r4 - ldr r0, [r6, #-1000] - mov r2, r2, asl #1 - bl ftl_memset - mov r1, r4 - mov r2, #48 - ldr r0, .L785+12 - bl ftl_memset - mov r1, r4 - mov r2, #512 - ldr r0, .L785+16 - bl ftl_memset - bl FtlGcBufInit - bl FtlL2PDataInit - mov r0, r4 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L786: - .align 2 -.L785: - .word .LANCHOR2 - .word -1016 - .word .LANCHOR0 - .word .LANCHOR2-2072 - .word .LANCHOR2-1708 - .fnend - .size FtlVariablesInit, .-FtlVariablesInit - .align 2 - .global FtlMemInit - .type FtlMemInit, %function -FtlMemInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - mov r6, #0 - ldr r4, .L818 - mov r0, #1024 - ldr r3, .L818+4 - mov r7, #12 - ldr r2, .L818+8 - movw sl, #3848 - ldr r5, .L818+12 - mov r8, #36 - strh r6, [r4, r3] @ movhi - movw r3, #65535 - str r3, [r4, #-988] - mvn r3, #0 - strh r3, [r4, r2] @ movhi - add r2, r2, #2 - str r6, [r4, #-996] - strh r3, [r4, r2] @ movhi - add r2, r2, #2 - str r6, [r4, #-1712] - strh r3, [r4, r2] @ movhi - add r2, r2, #2 - str r6, [r4, #-1804] - strh r3, [r4, r2] @ movhi - mov r2, #32 - ldr r3, .L818+16 - str r6, [r4, #-1800] - str r6, [r4, #-1816] - strh r2, [r4, r3] @ movhi - add r3, r3, #2 - mov r2, #128 - str r6, [r4, #-1828] - strh r2, [r4, r3] @ movhi - add r3, r3, #6 - str r6, [r4, #-1832] - strh r6, [r4, r3] @ movhi - add r3, r3, #54 - str r6, [r4, #-1824] - strh r6, [r4, r3] @ movhi - add r3, r3, #158 - str r6, [r4, #-1820] - strh r6, [r4, r3] @ movhi - sub r3, r3, #122 - str r6, [r4, #-1836] - strh r6, [r4, r3] @ movhi - movw r3, #3922 - ldrh r1, [r5, r3] - str r6, [r4, #-1796] - str r6, [r4, #-1792] - str r6, [r5, #4052] - str r6, [r4, #-1784] - str r6, [r4, #-1780] - str r6, [r4, #-992] - str r6, [r4, #-1184] - str r6, [r4, #-984] - str r6, [r4, #-1192] - str r6, [r4, #-980] - bl __aeabi_idiv - movw r3, #3848 - ldrh r3, [r5, r3] - str r6, [r5, #3968] - mov r6, #3920 - mov r3, r3, asl #2 - cmp r0, r3 - str r0, [r4, #-972] - ldrh r0, [r5, r6] - strhi r3, [r4, #-972] - ldr r4, .L818 - mov r0, r0, asl #1 - bl ftl_malloc - str r0, [r4, #-1152] - ldrh r0, [r5, r6] - mul r0, r7, r0 - bl ftl_malloc - ldrh r6, [r5, sl] - mul r6, r8, r6 - mov r9, r6, asl #3 - str r0, [r4, #-1148] - mov r0, r9 - bl ftl_malloc - str r0, [r4, #-968] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-964] - mov r0, r9 - bl ftl_malloc - str r0, [r4, #-960] - mov r0, r6 - bl ftl_malloc - str r0, [r5, #4044] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-1164] - ldr r0, [r4, #-972] - mul r0, r8, r0 - bl ftl_malloc - movw r8, #3926 - ldrh r3, [r5, sl] - ldrh r6, [r5, r8] - mov r3, r3, asl #1 - add r3, r3, #1 - str r3, [r4, #-1160] - str r0, [r5, #3972] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-956] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-952] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-948] - ldr r0, [r4, #-1160] - mul r0, r0, r6 - bl ftl_malloc - str r0, [r4, #-1172] - ldr r0, [r4, #-972] - mul r0, r0, r6 - bl ftl_malloc - str r0, [r4, #-944] - mov r0, r6 - bl ftl_malloc - str r0, [r4, #-940] - mov r0, r6 - bl ftl_malloc - movw r6, #3928 - str r0, [r4, #-936] - ldr r0, [r4, #-1160] - mul r0, r7, r0 - bl ftl_malloc - ldrh r3, [r5, r6] - ldrh sl, [r5, sl] - mul sl, sl, r3 - str r0, [r4, #-1176] - mov r0, sl - bl ftl_malloc - str r0, [r4, #-932] - mov r0, sl, asl #3 - bl ftl_malloc - ldrh r3, [r5, r6] - ldr sl, .L818+20 - str r0, [r4, #-928] - ldr r0, [r4, #-1160] - mul r0, r0, r3 - bl ftl_malloc - ldrh r3, [r5, r6] - movw r6, #3858 - str r0, [r4, #-1168] - ldr r0, [r4, #-972] - mul r0, r0, r3 - bl ftl_malloc - str r0, [r4, #-924] - ldrh r0, [r5, r6] - mov r0, r0, asl #1 - uxth r0, r0 - strh r0, [r4, sl] @ movhi - bl ftl_malloc - str r0, [r4, #-1000] - ldrh r0, [r4, sl] - add r0, r0, #544 - add r0, r0, #3 - mov r0, r0, lsr #9 - strh r0, [r4, sl] @ movhi - mov r0, r0, asl #9 - bl ftl_malloc - ldrh sl, [r5, r6] - mov sl, sl, asl #1 - str r0, [r4, #-916] - add r0, r0, #32 - str r0, [r5, #4048] - mov r0, sl - bl ftl_malloc - str r0, [r4, #-912] - mov r0, sl - bl ftl_malloc - ldr sl, [r5, #3944] - mov sl, sl, asl #1 - str r0, [r4, #-2016] - mov r0, sl - bl ftl_malloc - str r0, [r4, #-1036] - mov r0, sl - bl ftl_malloc - mov sl, #3936 - str r0, [r4, #-1092] - ldrh r0, [r5, r6] - mov r0, r0, lsr #3 - add r0, r0, #4 - bl ftl_malloc - str r0, [r4, #-1840] - ldrh r0, [r5, sl] - mov r0, r0, asl #1 - bl ftl_malloc - str r0, [r5, #3964] - ldrh r0, [r5, sl] - mov r0, r0, asl #1 - bl ftl_malloc - str r0, [r4, #-908] - ldrh r0, [r5, sl] - add sl, sl, #2 - mov r0, r0, asl #2 - bl ftl_malloc - str r0, [r4, #-904] - ldrh r0, [r5, sl] - mov r0, r0, asl #2 - bl ftl_malloc - ldrh r2, [r5, sl] - mov r1, #0 - mov r2, r2, asl #2 - str r0, [r4, #-900] - bl ftl_memset - mov r3, #3952 - ldrh sl, [r5, r3] - mov sl, sl, asl #2 - mov r0, sl - bl ftl_malloc - str r0, [r4, #-1028] - mov r0, sl - bl ftl_malloc - movw sl, #3954 - str r0, [r4, #-896] - ldr r0, [r5, #3944] - mov r0, r0, asl #2 - bl ftl_malloc - str r0, [r4, #-1032] - ldrh r0, [r5, sl] - mul r0, r7, r0 - bl ftl_malloc - ldrh r3, [r5, sl] - movw r7, #3870 - str r0, [r4, #-1852] - ldrh r0, [r5, r8] - mul r0, r0, r3 - bl ftl_malloc - ldrh r3, [r5, r6] - ldr r6, .L818+24 - str r0, [r4, #-1088] - mov r0, #6 - mul r0, r0, r3 - bl ftl_malloc - movw r3, #3912 - ldrh r3, [r5, r3] - ldrh r2, [r5, r7] - add r3, r3, #31 - mov r3, r3, lsr #5 - strh r3, [r4, r6] @ movhi - mul r3, r2, r3 - str r0, [r4, #-2024] - mov r0, r3, asl #2 - bl ftl_malloc - ldrh r1, [r4, r6] - mov r3, #1 - ldr ip, .L818+12 - mov r1, r1, asl #2 - mov r2, r1 - str r0, [r5, #4008] - ldrh r5, [r5, r7] - ldr r0, .L818+28 - b .L789 -.L790: - ldr r4, [ip, #4008] - add r3, r3, #1 - add r4, r4, r2 - add r2, r2, r1 - str r4, [r0, #4]! -.L789: - cmp r3, r5 - bcc .L790 - ldr r0, .L818+32 - mov r2, #0 - mov r1, r2 - add r0, r0, r3, asl #2 - b .L791 -.L792: - add ip, r0, r2 - add r3, r3, #1 - add r2, r2, #4 - str r1, [ip, #28] -.L791: - cmp r3, #7 - bls .L792 - ldr r3, .L818 - ldr r2, [r3, #-1036] - cmp r2, #0 - beq .L817 -.L793: - ldr r2, [r3, #-1092] - cmp r2, #0 - beq .L817 -.L795: - ldr r2, [r3, #-1028] - cmp r2, #0 - beq .L817 -.L796: - ldr r2, [r3, #-1032] - cmp r2, #0 - beq .L817 -.L797: - ldr r2, [r3, #-1852] - cmp r2, #0 - beq .L817 -.L798: - ldr r2, [r3, #-1088] - cmp r2, #0 - beq .L817 -.L799: - ldr r2, [r3, #-2024] - cmp r2, #0 - beq .L817 -.L800: - ldr r2, .L818+12 - ldr r2, [r2, #4008] - cmp r2, #0 - beq .L817 -.L801: - ldr r3, [r3, #-2016] - cmp r3, #0 - beq .L817 -.L802: - ldr r3, .L818 - ldr r2, [r3, #-1152] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-1148] - cmp r2, #0 - beq .L817 -.L804: - ldr r2, [r3, #-968] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-960] - cmp r2, #0 - beq .L817 - ldr r2, .L818+12 - ldr r2, [r2, #4044] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-1164] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-964] - cmp r2, #0 - beq .L817 -.L806: - ldr r2, [r3, #-956] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-952] - cmp r2, #0 - beq .L817 - ldr r3, [r3, #-948] - cmp r3, #0 - beq .L817 - ldr r3, .L818 - ldr r2, [r3, #-1172] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-940] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-936] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-1176] - cmp r2, #0 - beq .L817 -.L808: - ldr r2, [r3, #-932] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-928] - cmp r2, #0 - beq .L817 - ldr r2, [r3, #-1168] - cmp r2, #0 - beq .L817 -.L810: - ldr r2, .L818+12 - ldr r1, [r2, #4048] - cmp r1, #0 - beq .L817 - ldr r3, [r3, #-1000] - cmp r3, #0 - beq .L817 -.L812: - ldr r3, [r2, #3964] - cmp r3, #0 - beq .L817 -.L813: - ldr r3, .L818 - ldr r2, [r3, #-908] - cmp r2, #0 - beq .L817 -.L814: - ldr r2, [r3, #-904] - cmp r2, #0 - beq .L817 -.L815: - ldr r3, [r3, #-900] - cmp r3, #0 - bne .L816 -.L817: - ldr r0, .L818+36 - ldr r1, .L818+40 - bl printk - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L816: - mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L819: - .align 2 -.L818: - .word .LANCHOR2 - .word -1096 - .word -1142 - .word .LANCHOR0 - .word -1196 - .word -920 - .word -1024 - .word .LANCHOR0+4008 - .word .LANCHOR0+3980 - .word .LC84 - .word .LANCHOR3 - .fnend - .size FtlMemInit, .-FtlMemInit - .align 2 - .global ftl_read_flash_info - .type ftl_read_flash_info, %function -ftl_read_flash_info: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r1, #0 - mov r2, #11 - mov r4, r0 - bl ftl_memset - ldr r3, .L823 - ldr r2, [r3, #3624] - ldr r1, [r3, #856] - ldrb r2, [r2, #9] @ zero_extendqisi2 - mul r2, r1, r2 - mov r1, #0 - uxth r2, r2 - strb r2, [r4, #4] - mov r2, r2, lsr #8 - strb r2, [r4, #5] - ldrb r2, [r3, #3836] @ zero_extendqisi2 - strb r2, [r4, #7] - ldr r2, [r3, #3956] - ubfx r0, r2, #8, #8 - strb r0, [r4, #1] - strb r2, [r4, #0] - ubfx r0, r2, #16, #8 - mov r2, r2, lsr #24 - strb r0, [r4, #2] - strb r2, [r4, #3] - ldr r2, [r3, #3624] - ldrb r0, [r2, #9] @ zero_extendqisi2 - strb r0, [r4, #6] - mov r0, #32 - strb r0, [r4, #8] - ldrb r2, [r2, #7] @ zero_extendqisi2 - ldrb r0, [r3, #3762] @ zero_extendqisi2 - mov r3, r1 - strb r1, [r4, #10] - strb r2, [r4, #9] - mov r2, #1 - ldr r1, .L823+4 - b .L821 -.L822: - ldrb r5, [r3, r1] @ zero_extendqisi2 - add r3, r3, #1 - ldrb ip, [r4, #10] @ zero_extendqisi2 - orr ip, ip, r2, asl r5 - strb ip, [r4, #10] -.L821: - uxtb ip, r3 - cmp ip, r0 - bcc .L822 - ldmfd sp!, {r3, r4, r5, pc} -.L824: - .align 2 -.L823: - .word .LANCHOR0 - .word .LANCHOR0+3764 - .fnend - .size ftl_read_flash_info, .-ftl_read_flash_info - .align 2 - .global FlashDieInfoInit - .type FlashDieInfoInit, %function -FlashDieInfoInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L837 - mov r2, #0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - ldr r3, .L837+4 - strb r2, [r1, #-892] - ldr r1, .L837+8 - strb r2, [r3, #3762] - movw r2, #2998 - ldrh r2, [r1, r2] - cmp r2, #256 - str r2, [r3, #856] - movhi r2, #512 - bhi .L836 - cmp r2, #128 - bls .L827 - mov r2, #256 -.L836: - str r2, [r3, #856] -.L827: - mov r1, #0 - mov r2, #8 - ldr r0, .L837+12 - mov r6, #0 - bl ftl_memset - mov r1, #0 - mov r2, #32 - ldr r0, .L837+16 - bl ftl_memset - ldr r0, .L837+20 - mov r1, #0 - mov r2, #128 - bl ftl_memset - ldr r7, .L837+24 - ldr r5, .L837+4 - mov r8, r7 -.L829: - ldr r4, [r5, #3624] - mov r1, r8 - add r0, r4, #1 - ldrb r2, [r4, #0] @ zero_extendqisi2 - bl FlashMemCmp8 - cmp r0, #0 - bne .L828 - ldrb r3, [r5, #3762] @ zero_extendqisi2 - add r2, r5, r3, asl #2 - str r0, [r2, #3588] - add r2, r5, r3 - add r3, r3, #1 - strb r3, [r5, #3762] - strb r6, [r2, #3764] -.L828: - add r6, r6, #1 - add r8, r8, #8 - cmp r6, #4 - bne .L829 - ldr r5, .L837+4 - ldr r3, .L837 - ldrb r2, [r5, #3762] @ zero_extendqisi2 - strb r2, [r3, #-892] - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #2 - bne .L830 - add sl, r4, #1 - mov r6, #0 - mov r8, r5 -.L833: - mov r0, sl - mov r1, r7 - ldrb r2, [r4, #0] @ zero_extendqisi2 - bl FlashMemCmp8 - cmp r0, #0 - bne .L831 - ldrb r1, [r4, #13] @ zero_extendqisi2 - ldr r0, [r5, #856] - ldrb r3, [r5, #3762] @ zero_extendqisi2 - mul r0, r0, r1 - ldrh r1, [r4, #14] - add r2, r5, r3, asl #2 - and r1, r1, #65280 - mul r1, r1, r0 - str r1, [r2, #3588] - ldrb r0, [r4, #23] @ zero_extendqisi2 - cmp r0, #0 - movne r1, r1, asl #1 - strne r1, [r2, #3588] - add r2, r8, r3 - add r3, r3, #1 - strb r3, [r8, #3762] - strb r6, [r2, #3764] -.L831: - add r6, r6, #1 - add r7, r7, #8 - cmp r6, #4 - bne .L833 -.L830: - ldr r3, .L837+4 - ldrb r1, [r4, #13] @ zero_extendqisi2 - ldr r2, .L837 - ldrb r3, [r3, #3762] @ zero_extendqisi2 - mul r1, r1, r3 - ldrh r3, [r4, #14] - mul r1, r3, r1 - ldr r3, .L837+28 - strh r1, [r2, r3] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L838: - .align 2 -.L837: - .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR0+3764 - .word .LANCHOR0+3588 - .word .LANCHOR0+3628 - .word .LANCHOR0+2980 - .word -890 - .fnend - .size FlashDieInfoInit, .-FlashDieInfoInit - .align 2 .global BuildFlashLsbPageTable .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: @@ -7353,196 +5959,1281 @@ BuildFlashLsbPageTable: stmfd sp!, {r4, lr} .save {r4, lr} mov r4, r1 - bne .L840 - ldr r3, .L879 -.L841: - strh r0, [r3, #2]! @ movhi + bne .L942 + ldr r3, .L972 +.L943: + mov r2, r0, asl #1 + strh r0, [r2, r3] @ movhi add r0, r0, #1 - uxth r0, r0 cmp r0, #256 - bne .L841 - b .L842 -.L840: - cmp r0, #1 - bne .L843 - ldr r0, .L879+4 - mov r2, #0 - mov r3, r2 -.L846: - uxth r1, r3 - cmp r1, #3 - bls .L844 - tst r3, #1 - moveq r1, #2 - movne r1, #3 - rsb r1, r1, r2 - uxth r1, r1 -.L844: - add r3, r3, #1 - strh r1, [r2, r0] @ movhi - cmp r3, #256 - add r2, r2, #2 - bne .L846 - b .L842 -.L843: - cmp r0, #2 - bne .L847 + bne .L943 +.L947: + mov r1, #255 + ldr r0, .L972+4 + mov r2, #1024 + uxth r4, r4 + bl ftl_memset mov r3, #0 - ldr r0, .L879 - movw r2, #65535 - mov r1, r3 - b .L878 -.L850: - cmp r3, #1 - movls r1, r3 - movhi r1, r2 -.L878: + ldr r1, .L972 + ldr r0, .L972+4 + b .L944 +.L942: + cmp r0, #1 + bne .L945 + ldr ip, .L972 + mov r3, #0 +.L946: + uxth r2, r3 + mov lr, r3, asl #1 + cmp r2, #3 + movls r0, #0 + movhi r0, #1 + bics r1, r0, r3 add r3, r3, #1 - add r2, r2, #2 - strh r1, [r0, #2]! @ movhi - uxth r3, r3 - uxth r2, r2 + movne r1, #2 + moveq r1, #3 + cmp r0, #0 + rsb r1, r1, r2, asl #1 + movne r2, r1 cmp r3, #256 - bne .L850 - b .L842 -.L847: + strh r2, [lr, ip] @ movhi + bne .L946 + b .L947 +.L945: + cmp r0, #2 + bne .L948 + ldr r1, .L972 + mov r3, #0 +.L949: + uxth r2, r3 + mov r0, r3, asl #1 + cmp r2, #1 + add r3, r3, #1 + mov ip, r2, asl #1 + subhi r2, ip, #1 + cmp r3, #256 + strh r2, [r0, r1] @ movhi + bne .L949 + b .L947 +.L948: cmp r0, #3 - bne .L851 - ldr r0, .L879+4 - mov r2, #0 - mov r3, r2 -.L854: - uxth r1, r3 - cmp r1, #5 - bls .L852 - tst r3, #1 - moveq r1, #4 - movne r1, #5 - rsb r1, r1, r2 - uxth r1, r1 -.L852: + bne .L950 + ldr ip, .L972 + mov r3, #0 +.L951: + uxth r2, r3 + mov lr, r3, asl #1 + cmp r2, #5 + movls r0, #0 + movhi r0, #1 + bics r1, r0, r3 add r3, r3, #1 - strh r1, [r2, r0] @ movhi + movne r1, #4 + moveq r1, #5 + cmp r0, #0 + rsb r1, r1, r2, asl #1 + movne r2, r1 cmp r3, #256 - add r2, r2, #2 - bne .L854 - b .L842 -.L851: + strh r2, [lr, ip] @ movhi + bne .L951 + b .L947 +.L950: cmp r0, #4 - mov r2, #0 - bne .L855 - ldr r3, .L879+8 - movw r1, #3076 - strh r2, [r3, r1] @ movhi - movw r2, #3078 - mov r1, #1 - strh r1, [r3, r2] @ movhi - mov r1, #2 - add r2, r2, r1 - strh r1, [r3, r2] @ movhi - add r2, r2, #2 - mov r1, #3 - strh r1, [r3, r2] @ movhi - add r2, r2, #2 - mov r1, #5 - strh r0, [r3, r2] @ movhi - add r2, r2, #2 - ldr r0, .L879+12 - strh r1, [r3, r2] @ movhi - mov r2, #3088 - mov r1, #7 - strh r1, [r3, r2] @ movhi - add r2, r2, #2 - mov r1, #8 - strh r1, [r3, r2] @ movhi - mov r2, #16 - mov r3, r1 -.L857: + mov r3, #0 + bne .L952 + ldr r2, .L972+8 + strh r3, [r2, #144] @ movhi + mov r3, #1 + strh r0, [r2, #152] @ movhi + strh r3, [r2, #146] @ movhi + mov r3, #2 + strh r3, [r2, #148] @ movhi + mov r3, #3 + strh r3, [r2, #150] @ movhi + mov r3, #5 + strh r3, [r2, #154] @ movhi + mov r3, #7 + strh r3, [r2, #156] @ movhi + mov r3, #8 + strh r3, [r2, #158]! @ movhi +.L953: tst r3, #1 - add r3, r3, #1 - moveq r1, #6 movne r1, #7 - cmp r3, #256 - rsb r1, r1, r2 - add r2, r2, #2 - strh r1, [r0, #2]! @ movhi - uxth r2, r2 - bne .L857 - b .L842 -.L855: - cmp r0, #5 - bne .L858 - ldr r1, .L879 - mov r3, r2 -.L859: - strh r3, [r1, #2]! @ movhi + moveq r1, #6 + rsb r1, r1, r3, asl #1 add r3, r3, #1 + strh r1, [r2, #2]! @ movhi uxth r3, r3 + cmp r3, #256 + bne .L953 + b .L947 +.L952: + cmp r0, #5 + bne .L954 + ldr r2, .L972 +.L955: + mov r1, r3, asl #1 + strh r3, [r1, r2] @ movhi + add r3, r3, #1 cmp r3, #16 - bne .L859 - ldr r2, .L879+16 -.L860: + bne .L955 + ldr r2, .L972+12 +.L956: strh r3, [r2, #2]! @ movhi add r3, r3, #2 uxth r3, r3 cmp r3, #496 - bne .L860 - b .L842 -.L858: + bne .L956 + b .L947 +.L954: cmp r0, #6 - bne .L842 - ldr r0, .L879 - mov r3, r2 -.L863: - uxth r1, r3 - cmp r1, #5 - bls .L861 - tst r3, #1 - moveq r1, #10 - movne r1, #12 - rsb r1, r1, r2 - uxth r1, r1 -.L861: - add r3, r3, #1 - add r2, r2, #3 - cmp r3, #256 - strh r1, [r0, #2]! @ movhi - uxth r2, r2 - bne .L863 -.L842: - mov r2, #1024 - ldr r0, .L879+20 - mov r1, #255 - uxth r4, r4 - bl ftl_memset - ldr r2, .L879 - mov r3, #0 - ldr r0, .L879+24 - b .L864 -.L865: - ldrh r1, [r2, #2]! + bne .L957 + ldr r1, .L972+16 +.L958: + cmp r3, #5 + add r2, r3, r3, asl #1 + movls r0, #0 + movhi r0, #1 + bics ip, r0, r3 + movne ip, #10 + moveq ip, #12 + cmp r0, #0 + subne r2, r2, ip + moveq r2, r3 add r3, r3, #1 + strh r2, [r1, #2]! @ movhi uxth r3, r3 - add ip, r0, r1, asl #1 - sub ip, ip, #888 - strh r1, [ip, #0] @ movhi -.L864: - cmp r3, r4 - bcc .L865 + cmp r3, #256 + bne .L958 + b .L947 +.L957: + cmp r0, #9 + bne .L947 + ldr r2, .L972+8 + movw r1, #509 + strh r3, [r2, #144] @ movhi + mov r3, #1 + strh r3, [r2, #146] @ movhi + mov r3, #2 + strh r3, [r2, #148]! @ movhi + mov r3, #3 +.L959: + strh r3, [r2, #2]! @ movhi + add r3, r3, #2 + uxth r3, r3 + cmp r3, r1 + bne .L959 + b .L947 +.L944: + uxth r2, r3 + cmp r2, r4 + bcs .L971 + mov r2, r3, asl #1 + add r3, r3, #1 + ldrh r2, [r2, r1] + mov ip, r2, asl #1 + strh r2, [r0, ip] @ movhi + b .L944 +.L971: ldmfd sp!, {r4, pc} -.L880: +.L973: .align 2 -.L879: - .word .LANCHOR0+3074 - .word .LANCHOR0+3076 +.L972: + .word .LANCHOR0+144 + .word .LANCHOR2-3136 .word .LANCHOR0 - .word .LANCHOR0+3090 - .word .LANCHOR0+3106 - .word .LANCHOR2-888 - .word .LANCHOR2 + .word .LANCHOR0+174 + .word .LANCHOR0+142 .fnend .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 2 + .global FlashDieInfoInit + .type FlashDieInfoInit, %function +FlashDieInfoInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r6, #0 + ldr r3, .L989 + ldr r4, .L989+4 + ldr r9, .L989+8 + ldrh r0, [r3, #10] + strb r6, [r4, #1717] + mov r7, r4 + strb r6, [r9, #-2112] + bl FlashBlockAlignInit + mov r1, r6 + mov r2, #8 + ldr r0, .L989+12 + bl ftl_memset + mov r1, r6 + mov r2, #32 + add r0, r4, #656 + bl ftl_memset + ldr r0, .L989+16 + mov r1, r6 + mov r2, #128 + bl ftl_memset + ldr r5, [r4, #692] + ldr fp, .L989+20 + add r8, r5, #1 +.L976: + mov r0, r8 + add r1, fp, r6, asl #3 + ldrb r2, [r5] @ zero_extendqisi2 + bl FlashMemCmp8 + ldr r10, .L989+20 + cmp r0, #0 + bne .L975 + ldrb r3, [r7, #1717] @ zero_extendqisi2 + add r2, r7, r3, asl #2 + str r0, [r2, #656] + add r2, r3, #1 + add r3, r7, r3 + strb r2, [r7, #1717] + strb r6, [r3, #1720] +.L975: + add r6, r6, #1 + cmp r6, #4 + bne .L976 + ldrb r3, [r4, #1717] @ zero_extendqisi2 + ldr r7, .L989+4 + strb r3, [r9, #-2112] + ldrb r3, [r5, #8] @ zero_extendqisi2 + cmp r3, #2 + beq .L977 +.L981: + ldrb r3, [r5, #13] @ zero_extendqisi2 + ldrb r2, [r4, #1717] @ zero_extendqisi2 + smulbb r2, r2, r3 + ldrh r3, [r5, #14] + smulbb r3, r2, r3 + ldr r2, .L989+24 + strh r3, [r2, #-14] @ movhi + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L977: + ldr r9, [r7, #4] + mov r6, #0 +.L980: + mov r0, r8 + add r1, r10, r6, asl #3 + ldrb r2, [r5] @ zero_extendqisi2 + bl FlashMemCmp8 + cmp r0, #0 + bne .L978 + ldrb r1, [r5, #13] @ zero_extendqisi2 + ldrh r3, [r5, #14] + ldrb r2, [r7, #1717] @ zero_extendqisi2 + mul r1, r9, r1 + and r3, r3, #65280 + add r0, r7, r2, asl #2 + mul r3, r3, r1 + str r3, [r0, #656] + ldrb r1, [r5, #23] @ zero_extendqisi2 + cmp r1, #0 + movne r3, r3, asl #1 + strne r3, [r0, #656] + add r3, r2, #1 + add r2, r4, r2 + strb r3, [r4, #1717] + strb r6, [r2, #1720] +.L978: + add r6, r6, #1 + cmp r6, #4 + bne .L980 + b .L981 +.L990: + .align 2 +.L989: + .word .LANCHOR1+472 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1720 + .word .LANCHOR0+1588 + .word .LANCHOR0+1556 + .word .LANCHOR2-2096 + .fnend + .size FlashDieInfoInit, .-FlashDieInfoInit + .align 2 + .global ftl_read_flash_info + .type ftl_read_flash_info, %function +ftl_read_flash_info: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, lr} + .save {r4, lr} + mov r1, #0 + mov r2, #11 + mov r4, r0 + bl ftl_memset + ldr r2, .L996 + ldr r0, .L996+4 + mov ip, #1 + ldr r3, [r2, #692] + ldrb r1, [r3, #9] @ zero_extendqisi2 + ldr r3, [r2, #4] + smulbb r3, r1, r3 + strh r3, [r4, #4] @ unaligned + ldrb r3, [r2, #1792] @ zero_extendqisi2 + strb r3, [r4, #7] + ldr r3, [r2, #1912] + str r3, [r4] @ unaligned + ldr r3, [r2, #692] + ldrb r1, [r3, #9] @ zero_extendqisi2 + strb r1, [r4, #6] + mov r1, #32 + strb r1, [r4, #8] + ldrb r1, [r2, #1717] @ zero_extendqisi2 + ldrb r3, [r3, #7] @ zero_extendqisi2 + strb r3, [r4, #9] + mov r3, #0 + strb r3, [r4, #10] +.L992: + uxtb r2, r3 + cmp r2, r1 + bcs .L995 + ldrb lr, [r3, r0] @ zero_extendqisi2 + add r3, r3, #1 + ldrb r2, [r4, #10] @ zero_extendqisi2 + orr r2, r2, ip, asl lr + strb r2, [r4, #10] + b .L992 +.L995: + ldmfd sp!, {r4, pc} +.L997: + .align 2 +.L996: + .word .LANCHOR0 + .word .LANCHOR0+1720 + .fnend + .size ftl_read_flash_info, .-ftl_read_flash_info + .align 2 + .global FtlMemInit + .type FtlMemInit, %function +FtlMemInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + mov r6, #0 + ldr r4, .L1103 + mvn r2, #0 + ldr r5, .L1103+4 + mov r1, #32 + sub r3, r4, #2096 + mov r0, #1024 + str r6, [r4, #-2104] + mov r8, #12 + strh r6, [r3, #-12] @ movhi + movw r3, #65535 + str r3, [r4, #-2096] + sub r3, r4, #3168 + str r6, [r4, #-3752] + movw r10, #1804 + strh r2, [r3, #-14] @ movhi + mov r7, #36 + strh r2, [r3, #-12] @ movhi + strh r2, [r3, #-10] @ movhi + strh r2, [r3, #-8] @ movhi + sub r2, r4, #3232 + strh r6, [r3, #-6] @ movhi + sub r3, r4, #2080 + strh r1, [r2, #-4] @ movhi + mov r1, #128 + strh r6, [r3, #-4] @ movhi + sub r3, r4, #3136 + strh r1, [r2, #-2] @ movhi + sub r2, r4, #3216 + strh r6, [r3, #-2] @ movhi + movw r3, #1878 + strh r6, [r2, #-12] @ movhi + str r6, [r4, #-3848] + str r6, [r4, #-3844] + str r6, [r4, #-3860] + str r6, [r4, #-3872] + str r6, [r4, #-3876] + str r6, [r4, #-3868] + str r6, [r4, #-3864] + str r6, [r4, #-3880] + str r6, [r4, #-3840] + str r6, [r4, #-3836] + str r6, [r5, #4064] + str r6, [r4, #-3828] + str r6, [r4, #-3824] + str r6, [r4, #-2100] + str r6, [r4, #-3224] + str r6, [r4, #-2092] + str r6, [r4, #-3232] + str r6, [r4, #-2088] + ldrh r1, [r5, r3] + bl __aeabi_idiv + movw r3, #1804 + ldrh r3, [r5, r3] + str r6, [r5, #1924] + movw r6, #1876 + mov r3, r3, asl #2 + cmp r0, r3 + str r0, [r4, #-2080] + ldrh r0, [r5, r6] + strhi r3, [r4, #-2080] + mov r0, r0, asl #1 + bl ftl_malloc + str r0, [r4, #-3196] + ldrh r0, [r5, r6] + mul r0, r8, r0 + bl ftl_malloc + ldrh r6, [r5, r10] + mul r6, r7, r6 + mov r9, r6, asl #3 + str r0, [r4, #-3188] + mov r0, r9 + bl ftl_malloc + str r0, [r4, #-2076] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2072] + mov r0, r9 + bl ftl_malloc + movw r9, #1882 + str r0, [r4, #-2068] + mov r0, r6 + bl ftl_malloc + str r0, [r5, #4056] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-3204] + ldr r0, [r4, #-2080] + mul r0, r7, r0 + bl ftl_malloc + ldrh r6, [r5, r9] + ldrh r3, [r5, r10] + movw r7, #1884 + mov r3, r3, asl #1 + add r3, r3, #1 + str r3, [r4, #-3200] + str r0, [r5, #1928] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2064] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2060] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2056] + ldr r0, [r4, #-3200] + mul r0, r0, r6 + bl ftl_malloc + str r0, [r4, #-3212] + ldr r0, [r4, #-2080] + mul r0, r0, r6 + bl ftl_malloc + str r0, [r4, #-2052] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2048] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2044] + ldr r0, [r4, #-3200] + mul r0, r8, r0 + bl ftl_malloc + ldrh r3, [r5, r10] + ldrh r6, [r5, r7] + mul r6, r3, r6 + str r0, [r4, #-3216] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #-2040] + mov r0, r6, asl #3 + bl ftl_malloc + ldrh r3, [r5, r7] + ldr r6, .L1103+8 + add r6, r6, #48 + str r0, [r4, #-2036] + ldr r0, [r4, #-3200] + mul r0, r0, r3 + bl ftl_malloc + ldrh r3, [r5, r7] + movw r7, #1814 + str r0, [r4, #-3208] + ldr r0, [r4, #-2080] + mul r0, r0, r3 + bl ftl_malloc + str r0, [r4, #-2032] + ldrh r0, [r5, r7] + mov r0, r0, asl #1 + uxth r0, r0 + strh r0, [r6, #-60] @ movhi + bl ftl_malloc + str r0, [r4, #-2024] + ldrh r0, [r6, #-60] + add r0, r0, #544 + add r0, r0, #3 + mov r0, r0, lsr #9 + strh r0, [r6, #-60] @ movhi + mov r0, r0, asl #9 + bl ftl_malloc + ldrh r10, [r5, r7] + mov r10, r10, asl #1 + str r0, [r4, #-2020] + add r0, r0, #32 + str r0, [r5, #4060] + mov r0, r10 + bl ftl_malloc + str r0, [r4, #-2016] + mov r0, r10 + bl ftl_malloc + ldr r10, [r5, #1900] + mov r10, r10, asl #1 + str r0, [r4, #-4060] + mov r0, r10 + bl ftl_malloc + str r0, [r4, #-2012] + mov r0, r10 + bl ftl_malloc + movw r10, #1892 + str r0, [r4, #-2008] + ldrh r0, [r5, r7] + mov r0, r0, lsr #3 + add r0, r0, #4 + bl ftl_malloc + str r0, [r4, #-3884] + ldrh r0, [r5, r10] + mov r0, r0, asl #1 + bl ftl_malloc + str r0, [r5, #1920] + ldrh r0, [r5, r10] + mov r0, r0, asl #1 + bl ftl_malloc + str r0, [r4, #-2004] + ldrh r0, [r5, r10] + movw r10, #1894 + mov r0, r0, asl #2 + bl ftl_malloc + str r0, [r4, #-2000] + ldrh r0, [r5, r10] + mov r0, r0, asl #2 + bl ftl_malloc + ldrh r2, [r5, r10] + mov r1, #0 + mov r2, r2, asl #2 + str r0, [r4, #-1996] + bl ftl_memset + movw r3, #1908 + ldrh r10, [r5, r3] + mov r10, r10, asl #2 + mov r0, r10 + bl ftl_malloc + str r0, [r4, #-1992] + mov r0, r10 + bl ftl_malloc + movw r10, #1910 + str r0, [r4, #-1988] + ldr r0, [r5, #1900] + mov r0, r0, asl #2 + bl ftl_malloc + str r0, [r4, #-1984] + ldrh r0, [r5, r10] + mul r0, r8, r0 + bl ftl_malloc + ldrh r3, [r5, r10] + str r0, [r4, #-3896] + ldrh r0, [r5, r9] + mul r0, r0, r3 + bl ftl_malloc + ldrh r3, [r5, r7] + movw r7, #1826 + str r0, [r4, #-1980] + mov r0, #6 + mul r0, r0, r3 + bl ftl_malloc + movw r3, #1870 + ldrh r3, [r5, r3] + add r3, r3, #31 + mov r3, r3, asr #5 + strh r3, [r6, #-8] @ movhi + str r0, [r4, #-4068] + ldrh r0, [r5, r7] + mul r0, r0, r3 + mov r0, r0, asl #2 + bl ftl_malloc + ldrh r2, [r6, #-8] + ldrh lr, [r5, r7] + mov r3, #1 + ldr ip, .L1103+12 + mov r2, r2, asl #2 + mov r1, r2 + str r0, [r5, #1964] +.L1000: + cmp r3, lr + bcs .L1101 + ldr r0, [r5, #1964] + add r3, r3, #1 + add r0, r0, r1 + add r1, r1, r2 + str r0, [ip, #4]! + b .L1000 +.L1101: + ldr r2, .L1103+16 + mov r1, #0 +.L1002: + cmp r3, #8 + addne r0, r2, r3, asl #2 + addne r3, r3, #1 + strne r1, [r0, #28] + bne .L1002 +.L1102: + ldr r2, [r4, #-2012] + ldr r3, .L1103 + cmp r2, #0 + bne .L1004 +.L1006: + ldr r1, .L1103+20 + ldr r0, .L1103+24 + bl printk + mvn r0, #0 + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L1004: + ldr r2, [r3, #-2008] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-1992] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-1984] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-3896] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-1980] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-4068] + cmp r2, #0 + beq .L1006 + ldr r2, [r5, #1964] + cmp r2, #0 + beq .L1006 + ldr r3, [r3, #-4060] + cmp r3, #0 + beq .L1006 + ldr r2, [r4, #-3196] + ldr r3, .L1103 + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-3188] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2076] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2068] + cmp r2, #0 + beq .L1006 + ldr r2, [r5, #4056] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-3204] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2072] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2064] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2060] + cmp r2, #0 + beq .L1006 + ldr r3, [r3, #-2056] + cmp r3, #0 + beq .L1006 + ldr r2, [r4, #-3212] + ldr r3, .L1103 + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2048] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2044] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-3216] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2040] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2036] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-3208] + cmp r2, #0 + beq .L1006 + ldr r2, .L1103+4 + ldr r1, [r2, #4060] + cmp r1, #0 + beq .L1006 + ldr r3, [r3, #-2024] + cmp r3, #0 + beq .L1006 + ldr r3, [r2, #1920] + cmp r3, #0 + beq .L1006 + ldr r3, .L1103 + ldr r2, [r3, #-2004] + cmp r2, #0 + beq .L1006 + ldr r2, [r3, #-2000] + cmp r2, #0 + beq .L1006 + ldr r3, [r3, #-1996] + cmp r3, #0 + beq .L1006 + mov r0, #0 + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L1104: + .align 2 +.L1103: + .word .LANCHOR2 + .word .LANCHOR0 + .word .LANCHOR2-2016 + .word .LANCHOR0+1964 + .word .LANCHOR0+1936 + .word .LANCHOR3 + .word .LC81 + .fnend + .size FtlMemInit, .-FtlMemInit + .align 2 + .global FtlBbt2Bitmap + .type FtlBbt2Bitmap, %function +FtlBbt2Bitmap: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r4, r0 + ldr r3, .L1111 + mov r0, r1 + mov r5, r1 + mov r1, #0 + ldrh r2, [r3, #-8] + mov r2, r2, asl #2 + bl ftl_memset + add r3, r4, #1020 + add r3, r3, #2 + sub r1, r4, #2 + mov lr, #1 + movw r4, #65535 +.L1107: + ldrh r2, [r1, #2]! + cmp r2, r4 + ldmeqfd sp!, {r3, r4, r5, pc} + mov ip, r2, lsr #5 + cmp r1, r3 + and r2, r2, #31 + ldr r0, [r5, ip, asl #2] + orr r2, r0, lr, asl r2 + str r2, [r5, ip, asl #2] + bne .L1107 + ldmfd sp!, {r3, r4, r5, pc} +.L1112: + .align 2 +.L1111: + .word .LANCHOR2-1968 + .fnend + .size FtlBbt2Bitmap, .-FtlBbt2Bitmap + .align 2 + .global FtlBbtMemInit + .type FtlBbtMemInit, %function +FtlBbtMemInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + ldr r0, .L1114 + mvn r3, #0 + mov r1, #255 + mov r2, #16 + add r0, r0, #12 + strh r3, [r0, #-12] @ movhi + mov r3, #0 + strh r3, [r0, #-6] @ movhi + b ftl_memset +.L1115: + .align 2 +.L1114: + .word .LANCHOR0+1936 + .fnend + .size FtlBbtMemInit, .-FtlBbtMemInit + .align 2 + .global FtlFreeSysBlkQueueInit + .type FtlFreeSysBlkQueueInit, %function +FtlFreeSysBlkQueueInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r1, .L1118 + movw r2, #1996 + stmfd sp!, {r4, lr} + .save {r4, lr} + add r3, r1, r2 + mov r4, #0 + strh r0, [r1, r2] @ movhi + add r0, r3, #8 + mov r1, r4 + mov r2, #2048 + strh r4, [r3, #2] @ movhi + strh r4, [r3, #4] @ movhi + strh r4, [r3, #6] @ movhi + bl ftl_memset + mov r0, r4 + ldmfd sp!, {r4, pc} +.L1119: + .align 2 +.L1118: + .word .LANCHOR0 + .fnend + .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit + .align 2 + .global ftl_free_no_use_map_blk + .type ftl_free_no_use_map_blk, %function +ftl_free_no_use_map_blk: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r1, #0 + ldrh r2, [r0, #10] + mov r4, r0 + ldr r5, [r0, #20] + ldr r7, [r0, #12] + ldr r6, [r0, #24] + mov r2, r2, asl #1 + mov r0, r5 + bl ftl_memset + mov r2, #0 +.L1121: + ldrh r1, [r4, #6] + uxth r3, r2 + cmp r1, r3 + bls .L1141 + ldr r0, [r6, r3, asl #2] + mov r1, #0 + ubfx r0, r0, #10, #16 +.L1122: + ldrh ip, [r4, #10] + uxth r3, r1 + cmp ip, r3 + bls .L1142 + mov r3, r3, asl #1 + add r1, r1, #1 + ldrh ip, [r7, r3] + rsb lr, ip, r0 + cmp ip, #0 + clz lr, lr + mov lr, lr, lsr #5 + moveq lr, #0 + cmp lr, #0 + ldrneh ip, [r5, r3] + addne ip, ip, #1 + strneh ip, [r5, r3] @ movhi + b .L1122 +.L1142: + add r2, r2, #1 + b .L1121 +.L1141: + ldr r2, .L1144 + movw r3, #1874 + mov r8, #0 + mov r1, r8 + mov fp, r8 + ldrh r2, [r2, r3] + ldrh r3, [r4] + mov r3, r3, asl #1 + strh r2, [r5, r3] @ movhi + ldrh r9, [r5] +.L1126: + ldrh r3, [r4, #10] + uxth r6, r8 + cmp r3, r6 + bls .L1143 + mov r2, r6, asl #1 + ldrh r3, [r5, r2] + cmp r9, r3 + bls .L1127 + ldrh r0, [r7, r2] + add r10, r7, r2 + cmp r0, #0 + bne .L1128 + b .L1129 +.L1127: + cmp r3, #0 + bne .L1129 + ldrh r0, [r7, r2] + add r10, r7, r2 + cmp r0, #0 + movne r6, r1 + beq .L1129 + b .L1131 +.L1128: + cmp r3, #0 + movne r1, r6 + movne r9, r3 + bne .L1129 + mov r9, r3 +.L1131: + mov r1, #1 + bl FtlFreeSysBlkQueueIn + strh fp, [r10] @ movhi + ldrh r3, [r4, #8] + mov r1, r6 + sub r3, r3, #1 + strh r3, [r4, #8] @ movhi +.L1129: + add r8, r8, #1 + b .L1126 +.L1143: + mov r0, r1 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1145: + .align 2 +.L1144: + .word .LANCHOR0 + .fnend + .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk + .align 2 + .global FtlL2PDataInit + .type FtlL2PDataInit, %function +FtlL2PDataInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + mov r1, #0 + ldr r5, .L1151 + mvn r6, #0 + ldr r4, .L1151+4 + ldr r2, [r5, #1900] + ldr r0, [r4, #-2008] + mov r2, r2, asl #1 + bl ftl_memset + movw r3, #1882 + movw r2, #1910 + ldrh r3, [r5, r3] + ldrh r2, [r5, r2] + mov r1, #255 + ldr r0, [r4, #-1980] + mul r2, r2, r3 + bl ftl_memset + ldr ip, .L1151+8 + mov r1, #0 + mov r3, r4 + sub r7, ip, #28 + mov r4, #12 + mov r5, r1 +.L1147: + ldrh r2, [ip] + add lr, r1, #1 + uxth r1, r1 + ldr r0, .L1151 + cmp r2, r1 + bls .L1150 + mul r0, r4, r1 + ldr r2, [r3, #-3896] + add r8, r2, r0 + str r5, [r8, #4] + strh r6, [r2, r0] @ movhi + ldr r2, [r3, #-3896] + add r0, r2, r0 + ldrh r2, [r7] + mul r2, r1, r2 + ldr r1, [r3, #-1980] + bic r2, r2, #3 + add r2, r1, r2 + mov r1, lr + str r2, [r0, #8] + b .L1147 +.L1150: + ldr r1, .L1151+12 + mvn ip, #0 + sub r2, r1, #4 + strh ip, [r1, #-2] @ movhi + strh ip, [r1, #-4] @ movhi + ldr ip, [r0, #1900] + strh ip, [r1, #6] @ movhi + ldrh r1, [r1, #40] + ldr ip, .L1151+16 + strh r1, [r2, #8] @ movhi + movw r1, #1908 + ldrh r1, [r0, r1] + strh ip, [r2, #4] @ movhi + strh r1, [r2, #6] @ movhi + ldr r2, [r3, #-2012] + str r2, [r3, #-1960] + ldr r2, [r3, #-1984] + str r2, [r3, #-1956] + ldr r2, [r3, #-2008] + str r2, [r3, #-1952] + ldr r2, [r3, #-1992] + str r2, [r3, #-1948] + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L1152: + .align 2 +.L1151: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1910 + .word .LANCHOR2-1968 + .word -3902 + .fnend + .size FtlL2PDataInit, .-FtlL2PDataInit + .align 2 + .global FtlVariablesInit + .type FtlVariablesInit, %function +FtlVariablesInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + mvn r3, #0 + ldr r6, .L1155 + mov r4, #0 + ldr r5, .L1155+4 + mov r1, r4 + sub r2, r6, #1920 + movw r7, #1814 + str r3, [r6, #-1908] + strh r3, [r2] @ movhi + movw r3, #1918 + strh r4, [r5, r3] @ movhi + movw r3, #1892 + ldrh r2, [r5, r3] + ldr r0, [r5, #1920] + str r4, [r6, #-1924] + mov r2, r2, asl #1 + str r4, [r6, #-1916] + str r4, [r6, #-1912] + str r4, [r5, #1796] + bl ftl_memset + ldrh r2, [r5, r7] + mov r1, r4 + ldr r0, [r5, #4060] + mov r2, r2, asl #1 + bl ftl_memset + ldrh r2, [r5, r7] + mov r1, r4 + ldr r0, [r6, #-2024] + mov r2, r2, asl #1 + bl ftl_memset + add r0, r5, #4064 + mov r1, r4 + mov r2, #48 + add r0, r0, #4 + bl ftl_memset + sub r0, r6, #3744 + mov r1, r4 + mov r2, #512 + sub r0, r0, #4 + bl ftl_memset + bl FtlGcBufInit + bl FtlL2PDataInit + mov r0, r4 + ldmfd sp!, {r3, r4, r5, r6, r7, pc} +.L1156: + .align 2 +.L1155: + .word .LANCHOR2 + .word .LANCHOR0 + .fnend + .size FtlVariablesInit, .-FtlVariablesInit + .align 2 + .global SupperBlkListInit + .type SupperBlkListInit, %function +SupperBlkListInit: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r3, #1814 + ldr r7, .L1169 + mov r2, #6 + ldr r6, .L1169+4 + mov r1, #0 + .pad #28 + sub sp, sp, #28 + ldrh r3, [r7, r3] + ldr r0, [r6, #-4068] + mov r5, r6 + mov fp, r6 + mul r2, r2, r3 + bl ftl_memset + sub r2, r6, #4032 + mov r3, #0 + sub r1, r6, #4048 + strh r3, [r2, #-12] @ movhi + sub r2, r6, #2096 + mov r4, r3 + mov r8, r3 + mov r9, r3 + str r3, [r6, #-4048] + str r3, [r6, #-4064] + str r3, [r6, #-4056] + strh r3, [r1, #-4] @ movhi + strh r3, [r2, #-12] @ movhi + str r7, [sp, #8] + str r1, [sp, #12] +.L1158: + ldr r3, .L1169+8 + uxth r7, r4 + sxth r10, r7 + ldrh r2, [r3] + cmp r10, r2 + bge .L1165 + sub r3, r3, #8 + ldr r2, .L1169+12 + mov ip, r7 + ldrh r3, [r3] + str r3, [sp] + ldrh r3, [r2] + mov r2, #0 + mov r6, r2 + str r3, [sp, #4] +.L1166: + ldr r3, [sp] + sxth r1, r2 + cmp r1, r3 + bge .L1168 + ldr r3, [sp, #8] + str r2, [sp, #20] + add r1, r3, r1 + str ip, [sp, #16] + ldrb r0, [r1, #1832] @ zero_extendqisi2 + mov r1, ip + bl V2P_block + bl FtlBbmIsBadBlock + cmp r0, #0 + ldr r2, [sp, #20] + ldr ip, [sp, #16] + ldreq r3, [sp, #4] + add r2, r2, #1 + addeq r6, r3, r6 + uxtheq r6, r6 + b .L1166 +.L1168: + cmp r6, #0 + beq .L1161 + sxth r1, r6 + mov r0, #32768 + bl __aeabi_idiv + uxth r6, r0 + b .L1162 +.L1161: + sxth r7, r7 + ldr r2, [r5, #-4060] + mvn r1, #0 + mov r7, r7, asl #1 + strh r1, [r2, r7] @ movhi +.L1162: + mov r1, r10, asl #1 + ldr r2, [r5, #-4068] + add r0, r1, r10 + add r2, r2, r0, asl #1 + strh r6, [r2, #4] @ movhi + ldr r2, .L1169+16 + ldrh r0, [r2] + cmp r10, r0 + beq .L1163 + ldrh r0, [r2, #48] + cmp r10, r0 + beq .L1163 + ldrh r2, [r2, #96] + cmp r10, r2 + beq .L1163 + ldr r3, [fp, #-4060] + uxth r0, r4 + ldrh r3, [r3, r1] + cmp r3, #0 + bne .L1164 + add r8, r8, #1 + uxth r8, r8 + bl INSERT_FREE_LIST + b .L1163 +.L1164: + add r9, r9, #1 + uxth r9, r9 + bl INSERT_DATA_LIST +.L1163: + add r4, r4, #1 + b .L1158 +.L1165: + ldr r3, [sp, #12] + mov r0, #0 + strh r9, [r3, #-4] @ movhi + ldr r3, .L1169+20 + strh r8, [r3, #-12] @ movhi + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1170: + .align 2 +.L1169: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1812 + .word .LANCHOR0+1872 + .word .LANCHOR2-4040 + .word .LANCHOR2-4032 + .fnend + .size SupperBlkListInit, .-SupperBlkListInit + .align 2 + .global FtlGcPageVarInit + .type FtlGcPageVarInit, %function +FtlGcPageVarInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movw r5, #1876 + ldr r4, .L1173 + mov r2, #0 + ldr r6, .L1173+4 + mov r1, #255 + sub r3, r4, #3184 + ldr r0, [r4, #-3196] + strh r2, [r3, #-8] @ movhi + strh r2, [r3] @ movhi + ldrh r2, [r6, r5] + mov r2, r2, asl #1 + bl ftl_memset + ldrh r3, [r6, r5] + mov r2, #12 + ldr r0, [r4, #-3188] + mov r1, #255 + mul r2, r2, r3 + bl ftl_memset + ldmfd sp!, {r4, r5, r6, lr} + b FtlGcBufInit +.L1174: + .align 2 +.L1173: + .word .LANCHOR2 + .word .LANCHOR0 + .fnend + .size FtlGcPageVarInit, .-FtlGcPageVarInit + .align 2 .global ftl_memcpy .type ftl_memcpy, %function ftl_memcpy: @@ -7554,26 +7245,174 @@ ftl_memcpy: .fnend .size ftl_memcpy, .-ftl_memcpy .align 2 + .global FlashReadIdbData + .type FlashReadIdbData, %function +FlashReadIdbData: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, lr} + .save {r3, lr} + mov r2, #2048 + ldr r1, .L1178 + bl ftl_memcpy + mov r0, #0 + ldmfd sp!, {r3, pc} +.L1179: + .align 2 +.L1178: + .word .LANCHOR2-1904 + .fnend + .size FlashReadIdbData, .-FlashReadIdbData + .align 2 + .global FlashLoadPhyInfoInRam + .type FlashLoadPhyInfoInRam, %function +FlashLoadPhyInfoInRam: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + mov r4, #0 + ldr r8, .L1193 +.L1184: + mov r7, r4, asl #5 + ldr r1, .L1193+4 + add r0, r7, #1 + ldrb r2, [r8, r4, asl #5] @ zero_extendqisi2 + add r0, r8, r0 + ldr r6, .L1193+8 + bl FlashMemCmp8 + add r9, r6, #508 + subs r5, r0, #0 + bne .L1181 + adds r9, r9, r7 + beq .L1187 + add r4, r6, r7 + mov r3, r5 + ldr r1, .L1193+12 + ldrb r2, [r4, #530] @ zero_extendqisi2 + b .L1186 +.L1181: + add r4, r4, #1 + cmp r4, #81 + bne .L1184 + b .L1187 +.L1192: + add r3, r3, #1 + cmp r3, #4 + beq .L1185 +.L1186: + ldrb r0, [r1, r3, asl #5] @ zero_extendqisi2 + cmp r0, r2 + bne .L1192 +.L1185: + ldr r4, .L1193+16 + mov r2, #32 + ldr r1, .L1193+12 + ldr r0, .L1193+20 + add r1, r1, r3, asl #5 + bl ftl_memcpy + mov r0, r4 + mov r1, r9 + mov r2, #32 + bl ftl_memcpy + ldrh r0, [r4, #10] + bl FlashBlockAlignInit + b .L1182 +.L1187: + mvn r5, #0 +.L1182: + mov r0, r5 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L1194: + .align 2 +.L1193: + .word .LANCHOR1+508 + .word .LANCHOR0+1556 + .word .LANCHOR1 + .word .LANCHOR1+3100 + .word .LANCHOR1+472 + .word .LANCHOR0+44 + .fnend + .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam + .align 2 + .global NandcCopy1KB + .type NandcCopy1KB, %function +NandcCopy1KB: + .fnstart + @ args = 4, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + cmp r1, #1 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r4, r2 + add r2, r0, #4096 + ldr r5, [sp, #16] + add r6, r0, #512 + add r2, r2, r4, asl #9 + bne .L1196 + cmp r3, #0 + beq .L1197 + mov r0, r2 + mov r1, r3 + mov r2, #1024 + bl ftl_memcpy +.L1197: + cmp r5, #0 + ldmeqfd sp!, {r4, r5, r6, pc} + ldrb r3, [r5, #2] @ zero_extendqisi2 + mov r4, r4, lsr #1 + ldrb r2, [r5, #1] @ zero_extendqisi2 + add r4, r4, r4, asl #1 + mov r3, r3, asl #16 + orr r2, r3, r2, asl #8 + ldrb r3, [r5] @ zero_extendqisi2 + orr r3, r2, r3 + ldrb r2, [r5, #3] @ zero_extendqisi2 + orr r3, r3, r2, asl #24 + str r3, [r6, r4, asl #4] + ldmfd sp!, {r4, r5, r6, pc} +.L1196: + cmp r3, #0 + beq .L1200 + mov r1, r2 + mov r0, r3 + mov r2, #1024 + bl ftl_memcpy +.L1200: + cmp r5, #0 + ldmeqfd sp!, {r4, r5, r6, pc} + mov r4, r4, lsr #1 + add r4, r4, r4, asl #1 + ldr r3, [r6, r4, asl #4] + mov r2, r3, lsr #8 + strb r3, [r5] + strb r2, [r5, #1] + mov r2, r3, lsr #16 + mov r3, r3, lsr #24 + strb r2, [r5, #2] + strb r3, [r5, #3] + ldmfd sp!, {r4, r5, r6, pc} + .fnend + .size NandcCopy1KB, .-NandcCopy1KB + .align 2 .global ftl_memcpy32 .type ftl_memcpy32, %function ftl_memcpy32: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. mov r3, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov ip, r3 - b .L883 -.L884: - ldr r4, [r1, r3] - add ip, ip, #1 - str r4, [r0, r3] - add r3, r3, #4 -.L883: - cmp ip, r2 - bne .L884 - ldmfd sp!, {r4, pc} +.L1213: + cmp r3, r2 + ldrne ip, [r1, r3, asl #2] + strne ip, [r0, r3, asl #2] + addne r3, r3, #1 + bne .L1213 +.L1215: + bx lr .fnend .size ftl_memcpy32, .-ftl_memcpy32 .align 2 @@ -7588,36 +7427,6 @@ ftl_memcmp: .fnend .size ftl_memcmp, .-ftl_memcmp .align 2 - .global js_hash - .type js_hash, %function -js_hash: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - mov r3, r0 - mov r2, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldr r0, .L889 - b .L887 -.L888: - mov ip, r0, asl #5 - ldrb r4, [r3, r2] @ zero_extendqisi2 - add ip, ip, r0, lsr #2 - add r2, r2, #1 - add ip, ip, r4 - eor r0, r0, ip -.L887: - cmp r2, r1 - bne .L888 - ldmfd sp!, {r4, pc} -.L890: - .align 2 -.L889: - .word 1204201446 - .fnend - .size js_hash, .-js_hash - .align 2 .global timer_get_time .type timer_get_time, %function timer_get_time: @@ -7625,12 +7434,12 @@ timer_get_time: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L892 - ldr r0, [r3, #0] + ldr r3, .L1218 + ldr r0, [r3] b jiffies_to_msecs -.L893: +.L1219: .align 2 -.L892: +.L1218: .word jiffies .fnend .size timer_get_time, .-timer_get_time @@ -7641,22 +7450,25 @@ FlashSramLoadStore: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, lr} - .save {r4, lr} + ldr ip, .L1224 cmp r2, #0 - ldr r4, .L897 - mov ip, r0 + moveq r2, r3 + ldr ip, [ip, #144] + add ip, ip, #4096 + add r1, ip, r1 + beq .L1223 + str lr, [sp, #-4]! + .save {lr} + mov lr, r0 + mov r0, r1 + mov r1, lr + ldr lr, [sp], #4 mov r2, r3 - ldr r4, [r4, #136] - add r4, r4, #4096 - add r1, r4, r1 - movne r0, r1 - movne r1, ip - ldmfd sp!, {r4, lr} - b memcpy -.L898: +.L1223: + b ftl_memcpy +.L1225: .align 2 -.L897: +.L1224: .word .LANCHOR2 .fnend .size FlashSramLoadStore, .-FlashSramLoadStore @@ -7701,12 +7513,12 @@ rk_ftl_get_capacity: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L903 - ldr r0, [r3, #3956] + ldr r3, .L1230 + ldr r0, [r3, #1912] bx lr -.L904: +.L1231: .align 2 -.L903: +.L1230: .word .LANCHOR0 .fnend .size rk_ftl_get_capacity, .-rk_ftl_get_capacity @@ -7751,62 +7563,750 @@ rknand_print_hex: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r5, #0 - mov r8, r0 + mov r9, r0 mov r6, r1 mov r7, r2 - mov sl, r3 + mov r8, r3 mov r4, r5 - b .L909 -.L915: +.L1236: + cmp r4, r8 + beq .L1245 cmp r5, #0 - bne .L910 - ldr r0, .L917 - mov r1, r8 + bne .L1237 + ldr r0, .L1246 + mov r1, r9 mov r2, r6 mov r3, r4 bl printk -.L910: +.L1237: cmp r7, #4 - ldreq r0, .L917+4 + ldreq r0, .L1246+4 ldreq r1, [r6, r4, asl #2] - beq .L916 + beq .L1244 cmp r7, #2 moveq r3, r4, asl #1 - ldreq r0, .L917+4 + ldreq r0, .L1246+4 ldreqsh r1, [r6, r3] - ldrne r0, .L917+4 + ldrne r0, .L1246+4 ldrneb r1, [r6, r4] @ zero_extendqisi2 -.L916: +.L1244: add r5, r5, #1 bl printk cmp r5, #15 - bls .L914 - ldr r0, .L917+8 + bls .L1241 + ldr r0, .L1246+8 mov r5, #0 - ldr r1, .L917+12 + ldr r1, .L1246+12 bl printk -.L914: +.L1241: add r4, r4, #1 -.L909: - cmp r4, sl - bne .L915 - ldr r0, .L917+8 - ldr r1, .L917+12 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} + b .L1236 +.L1245: + ldr r0, .L1246+8 + ldr r1, .L1246+12 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} b printk -.L918: +.L1247: .align 2 -.L917: - .word .LC85 - .word .LC86 - .word .LC77 - .word .LC87 +.L1246: + .word .LC82 + .word .LC83 + .word .LC76 + .word .LC84 .fnend .size rknand_print_hex, .-rknand_print_hex .align 2 + .global HynixGetReadRetryDefault + .type HynixGetReadRetryDefault, %function +HynixGetReadRetryDefault: + .fnstart + @ args = 0, pretend = 0, frame = 40 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + cmp r0, #2 + ldr r7, .L1357 + mvn r3, #83 + mvn r1, #82 + mvn r2, #81 + .pad #44 + sub sp, sp, #44 + mov r4, r0 + strb r3, [r7, #702] + mvn r3, #80 + strb r0, [r7, #698] + strb r1, [r7, #703] + strb r2, [r7, #704] + strb r3, [r7, #705] + bne .L1249 + mvn r3, #88 + strb r3, [r7, #702] + ldr r3, .L1357+4 + mvn r2, #8 + mov r5, #7 + strb r2, [r3, #3245] + b .L1310 +.L1249: + cmp r0, #3 + bne .L1251 + mvn r3, #79 + strb r3, [r7, #702] + mvn r3, #78 + strb r3, [r7, #703] + mvn r3, #77 + strb r3, [r7, #704] + mvn r3, #76 + strb r3, [r7, #705] + mvn r3, #75 + strb r3, [r7, #706] + mvn r3, #74 + strb r3, [r7, #707] + mvn r3, #73 + strb r3, [r7, #708] + mvn r3, #72 + b .L1351 +.L1251: + cmp r0, #4 + bne .L1252 + mvn r0, #51 + strb r1, [r7, #707] + strb r0, [r7, #702] + mvn r0, #64 + strb r2, [r7, #708] + strb r0, [r7, #703] + mvn r0, #85 + strb r0, [r7, #704] + mvn r0, #84 + strb r0, [r7, #705] + mvn r0, #50 + strb r0, [r7, #706] +.L1351: + mov r5, #8 + strb r3, [r7, #709] + mov r6, r5 + b .L1250 +.L1252: + cmp r0, #5 + bne .L1253 + mov r3, #56 + mov r5, #8 + strb r3, [r7, #702] + mov r3, #57 + strb r3, [r7, #703] + mov r3, #58 + strb r3, [r7, #704] + mov r3, #59 + strb r3, [r7, #705] + b .L1310 +.L1253: + cmp r0, #6 + bne .L1254 + mov r3, #14 + mov r5, #12 + strb r3, [r7, #702] + mov r3, #15 + strb r3, [r7, #703] + mov r3, #16 + strb r3, [r7, #704] + mov r3, #17 + strb r3, [r7, #705] + b .L1310 +.L1254: + cmp r0, #7 + bne .L1255 + mvn r3, #79 + mov r5, #12 + strb r3, [r7, #702] + mov r6, #10 + mvn r3, #78 + strb r3, [r7, #703] + mvn r3, #77 + strb r3, [r7, #704] + mvn r3, #76 + strb r3, [r7, #705] + mvn r3, #75 + strb r3, [r7, #706] + mvn r3, #74 + strb r3, [r7, #707] + mvn r3, #73 + strb r3, [r7, #708] + mvn r3, #72 + strb r3, [r7, #709] + mvn r3, #43 + strb r3, [r7, #710] + mvn r3, #42 + strb r3, [r7, #711] + b .L1250 +.L1255: + cmp r0, #8 + mov r5, #7 + bne .L1310 + mov r3, #6 + strb r5, [r7, #703] + strb r3, [r7, #702] + mov r5, #50 + mov r3, #9 + strb r0, [r7, #704] + strb r3, [r7, #705] + mov r6, #5 + mov r3, #10 + strb r3, [r7, #706] + b .L1250 +.L1310: + mov r6, #4 +.L1250: + sub r3, r4, #1 + cmp r3, #1 + bhi .L1347 + ldr r10, .L1357+8 + mov r9, #0 +.L1256: + ldrb r1, [r7, #1717] @ zero_extendqisi2 + uxtb r2, r9 + ldr r3, .L1357 + cmp r1, r2 + bls .L1263 + add r2, r3, r2 + ldr r4, .L1357+12 + ldr r1, .L1357+16 + mov ip, #55 + ldrb r2, [r2, #1720] @ zero_extendqisi2 + add r3, r3, r2, asl #3 + add r4, r4, r2, asl #6 + add r4, r4, #20 + ldrb r8, [r3, #16] @ zero_extendqisi2 + ldr r0, [r3, #12] + mov fp, r4 + mov r2, r4 + add r8, r0, r8, asl #8 +.L1258: + str ip, [r8, #2056] + mov r0, #80 + ldrb r3, [r1, #1]! @ zero_extendqisi2 + str r2, [sp, #12] + str ip, [sp, #8] + str r3, [r8, #2052] + str r1, [sp, #4] + str r1, [sp, #16] + bl NandcDelayns + ldr r3, [r8, #2048] + ldr r2, [sp, #12] + ldmib sp, {r1, ip} + strb r3, [r2], #1 + rsb r3, r4, r2 + uxtb r3, r3 + cmp r3, r6 + bcc .L1258 + mov r2, #0 +.L1259: + add r0, r10, r2 + mov r3, #1 +.L1260: + ldrb r1, [r0, r3, asl #2] @ zero_extendqisi2 + ldrb ip, [fp] @ zero_extendqisi2 + add r1, r1, ip + strb r1, [fp, r3, asl #3] + add r3, r3, #1 + cmp r3, #7 + bne .L1260 + add r2, r2, #1 + add fp, fp, #1 + cmp r2, #4 + bne .L1259 + mov r3, #0 + add r9, r9, #1 + strb r3, [r4, #16] + strb r3, [r4, #24] + strb r3, [r4, #32] + strb r3, [r4, #40] + strb r3, [r4, #48] + strb r3, [r4, #41] + strb r3, [r4, #49] + b .L1256 +.L1347: + sub r3, r4, #3 + cmp r3, #5 + bhi .L1263 + smulbb r2, r6, r5 + mov r3, r2, asl #4 + mov r2, r2, asr #1 + str r3, [sp, #36] + mov r3, r2, asl #1 + str r3, [sp, #8] + mov r3, #0 +.L1355: + str r3, [sp, #16] + ldrb r3, [sp, #16] @ zero_extendqisi2 + str r3, [sp, #12] + ldr r3, .L1357 + ldr r2, [sp, #12] + ldrb r3, [r3, #1717] @ zero_extendqisi2 + cmp r3, r2 + bhi .L1308 +.L1263: + ldr r3, .L1357 + strb r6, [r3, #699] + strb r5, [r3, #700] + add sp, sp, #44 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1308: + ldr r2, [sp, #12] + ldr r3, .L1357 + add r3, r3, r2 + ldrb r10, [r3, #1720] @ zero_extendqisi2 + ldr r3, .L1357 + add r3, r3, r10, asl #3 + mov r0, r10 + ldrb fp, [r3, #16] @ zero_extendqisi2 + ldr r8, [r3, #12] + mov r3, #255 + mov r9, fp, asl #8 + add r7, r8, r9 + str r3, [r7, #2056] + bl NandcWaitFlashReady + cmp r4, #7 + ldreq r3, .L1357+12 + moveq r7, #160 + mlaeq r7, r7, r10, r3 + addeq r3, r7, #28 + beq .L1352 +.L1265: + cmp r4, #8 + beq .L1267 + ldr r3, .L1357+12 + add r7, r3, r10, asl #6 + add r3, r7, #20 +.L1352: + str r3, [sp, #20] + cmp r4, #4 + add r3, r8, fp, asl #8 + mov r2, #54 + str r2, [r3, #2056] + bne .L1268 + add r9, r8, r9 + mov r3, #255 + str r3, [r9, #2052] + mov r3, #64 + str r3, [r9, #2048] + mov r3, #204 + b .L1353 +.L1268: + sub r2, r4, #5 + cmp r2, #1 + bhi .L1270 + ldr r2, .L1357 + ldrb r2, [r2, #702] @ zero_extendqisi2 + str r2, [r3, #2052] + mov r2, #82 + str r2, [r3, #2048] + b .L1269 +.L1270: + cmp r4, #7 + bne .L1269 + add r9, r8, r9 + mov r3, #174 + str r3, [r9, #2052] + mov r3, #0 + str r3, [r9, #2048] + mov r3, #176 +.L1353: + str r3, [r9, #2052] + mov r3, #77 + str r3, [r9, #2048] +.L1269: + add r3, r8, fp, asl #8 + cmp r4, #6 + mov r2, #22 + str r2, [r3, #2056] + mov r2, #23 + str r2, [r3, #2056] + mov r2, #4 + str r2, [r3, #2056] + mov r2, #25 + str r2, [r3, #2056] + mov r2, #0 + str r2, [r3, #2056] + str r2, [r3, #2052] + str r2, [r3, #2052] + moveq r2, #31 + str r2, [r3, #2052] + mov r2, #2 + str r2, [r3, #2052] + mov r2, #0 + str r2, [r3, #2052] +.L1309: + add r3, r8, fp, asl #8 + mov r2, #48 + mov r0, r10 + str r2, [r3, #2056] + bl NandcWaitFlashReady + sub r3, r4, #5 + cmp r3, #1 + movhi r3, #0 + movls r3, #1 + str r3, [sp, #24] + sub r3, r4, #8 + clz r3, r3 + mov r3, r3, lsr #5 + str r3, [sp, #4] + ldr r2, [sp, #4] + ldr r3, [sp, #24] + orrs r3, r3, r2 + movne ip, #16 + bne .L1273 + cmp r4, #7 + movne ip, #2 + moveq ip, #32 +.L1273: + ldr r3, .L1357+20 + add r0, r8, fp, asl #8 + ldr r3, [r3, #148] + mov r1, r3 +.L1274: + ldr r2, [r0, #2048] + strb r2, [r1], #1 + rsb r2, r3, r1 + uxtb r2, r2 + cmp r2, ip + bcc .L1274 + ldr r2, [sp, #4] + cmp r2, #0 + beq .L1275 + mov r2, #0 +.L1277: + ldrb ip, [r3, r2, asl #2] @ zero_extendqisi2 + uxtb r1, r2 + cmp ip, #50 + beq .L1276 + add ip, r3, r2, asl #2 + ldrb ip, [ip, #1] @ zero_extendqisi2 + cmp ip, #5 + beq .L1276 + add r2, r2, #1 + cmp r2, #8 + bne .L1277 + b .L1278 +.L1276: + cmp r1, #6 + bls .L1279 +.L1278: + ldr r0, .L1357+24 + mov r1, #0 + bl printk +.L1280: + b .L1280 +.L1275: + cmp r4, #7 + bne .L1281 + ldr r2, [sp, #4] +.L1283: + ldrb ip, [r3, r2, asl #2] @ zero_extendqisi2 + uxtb r1, r2 + cmp ip, #12 + beq .L1282 + add ip, r3, r2, asl #2 + ldrb ip, [ip, #1] @ zero_extendqisi2 + cmp ip, #10 + beq .L1282 + add r2, r2, #1 + cmp r2, #8 + bne .L1283 + b .L1284 +.L1282: + cmp r1, #7 + bne .L1279 +.L1284: + ldr r0, .L1357+24 + mov r1, #0 + bl printk +.L1285: + b .L1285 +.L1281: + cmp r4, #6 + bne .L1279 + sub r2, r3, #1 + add r3, r3, #7 +.L1286: + ldrb r1, [r2, #1]! @ zero_extendqisi2 + cmp r1, #12 + beq .L1279 + ldrb r1, [r2, #8] @ zero_extendqisi2 + cmp r1, #4 + beq .L1279 + cmp r2, r3 + bne .L1286 + ldr r0, .L1357+24 + mov r1, #0 + bl printk +.L1288: + b .L1288 +.L1279: + ldr r1, .L1357+20 + ldr ip, [sp, #36] + ldr r2, [r1, #148] + add ip, r2, ip + mov r3, r2 +.L1289: + cmp r3, ip + ldrne lr, [r0, #2048] + strneb lr, [r3], #1 + bne .L1289 +.L1356: + ldr r3, [r1, #148] + mov r0, #8 + ldr r1, [sp, #8] + add r1, r3, r1 + str r1, [sp, #28] +.L1292: + ldr ip, [sp, #8] + add lr, r1, ip +.L1291: + ldrh ip, [r1] + mvn ip, ip + strh ip, [r1], #2 @ movhi + cmp r1, lr + bne .L1291 + ldr ip, [sp, #8] + subs r0, r0, #1 + add r1, r1, ip + bne .L1292 +.L1293: + mov ip, #0 + mov r0, ip +.L1296: + mov r1, #1 + mov lr, #0 + mov r1, r1, asl r0 + mov r7, #16 + str r7, [sp, #32] + mov r7, lr +.L1294: + ldrh r9, [r3, lr] + and r9, r9, r1 + cmp r9, r1 + addeq r7, r7, #1 + ldr r9, [sp, #8] + add lr, lr, r9 + ldr r9, [sp, #32] + subs r9, r9, #1 + str r9, [sp, #32] + bne .L1294 + cmp r7, #8 + add r0, r0, #1 + orrhi ip, ip, r1 + uxthhi ip, ip + cmp r0, #16 + bne .L1296 + ldr r1, [sp, #28] + strh ip, [r3], #2 @ movhi + cmp r3, r1 + bne .L1293 + ldr r3, .L1357+20 + ldr r1, [r3, #148] + mov r3, #0 + sub r0, r1, #4 + add ip, r1, #28 +.L1298: + ldr lr, [r0, #4]! + cmp lr, #0 + addeq r3, r3, #1 + cmp r0, ip + bne .L1298 + cmp r3, #7 + ble .L1299 + ldr r0, .L1357+28 + mov r2, #1 + mov r3, #1024 + bl rknand_print_hex + ldr r0, .L1357+24 + mov r1, #0 + bl printk +.L1300: + b .L1300 +.L1299: + cmp r4, #6 + moveq r0, #4 + beq .L1301 + cmp r4, #7 + moveq r0, #10 + beq .L1301 + ldr r3, [sp, #4] + cmp r3, #0 + moveq r0, #8 + movne r0, #5 +.L1301: + sub r9, r6, #1 + ldr r1, [sp, #20] + mov ip, #0 + uxtb r9, r9 + add r9, r9, #1 +.L1302: + mov r7, r1 + mov r3, r2 +.L1303: + ldrb lr, [r3], #1 @ zero_extendqisi2 + strb lr, [r7], #1 + rsb lr, r2, r3 + uxtb lr, lr + cmp lr, r6 + bcc .L1303 + add ip, ip, #1 + add r2, r2, r9 + cmp ip, r5 + add r1, r1, r0 + blt .L1302 + add r7, r8, fp, asl #8 + mov r3, #255 + mov r0, r10 + str r3, [r7, #2056] + bl NandcWaitFlashReady + ldr r3, [sp, #24] + cmp r3, #0 + beq .L1305 + mov r3, #54 + str r3, [r7, #2056] + ldr r3, .L1357 + mvn r1, #0 + ldr r0, [sp, #12] + ldrb r3, [r3, #702] @ zero_extendqisi2 + str r3, [r7, #2052] + mov r3, #0 + str r3, [r7, #2048] + mov r3, #22 + str r3, [r7, #2056] + bl FlashReadCmd + b .L1306 +.L1305: + ldr r3, [sp, #4] + cmp r3, #0 + movne r3, #190 + moveq r3, #56 + str r3, [r7, #2056] +.L1306: + mov r0, r10 + bl NandcWaitFlashReady + ldr r3, [sp, #16] + add r3, r3, #1 + b .L1355 +.L1267: + mov r3, #120 + mov r2, #23 + str r3, [r7, #2056] + mov r1, #25 + mov r3, #0 + str r3, [r7, #2052] + str r3, [r7, #2052] + str r3, [r7, #2052] + str r2, [r7, #2056] + mov r2, #4 + str r2, [r7, #2056] + str r1, [r7, #2056] + mov r1, #218 + str r1, [r7, #2056] + mov r1, #21 + 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, .L1357+32 + str r3, [sp, #20] + b .L1309 +.L1358: + .align 2 +.L1357: + .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR1+3228 + .word .LANCHOR0+698 + .word .LANCHOR0+701 + .word .LANCHOR2 + .word .LC85 + .word .LC86 + .word .LANCHOR0+726 + .fnend + .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault + .align 2 + .global FlashGetReadRetryDefault + .type FlashGetReadRetryDefault, %function +FlashGetReadRetryDefault: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + subs r3, r0, #0 + bxeq lr + sub r2, r3, #1 + cmp r2, #7 + bhi .L1361 + b HynixGetReadRetryDefault +.L1361: + cmp r3, #49 + bne .L1362 + ldr r2, .L1373 + ldr r0, .L1373+4 + ldr r1, .L1373+8 + strb r3, [r2, #698] + mov r3, #4 + strb r3, [r2, #699] + mov r3, #15 + strb r3, [r2, #700] + mov r2, #64 + b .L1371 +.L1362: + sub r2, r3, #65 + cmp r3, #33 + cmpne r2, #1 + ldrls r2, .L1373 + strlsb r3, [r2, #698] + movls r3, #4 + bls .L1372 +.L1363: + cmp r3, #34 + cmpne r3, #67 + bne .L1364 + ldr r2, .L1373 + strb r3, [r2, #698] + mov r3, #5 +.L1372: + strb r3, [r2, #699] + mov r3, #7 + ldr r0, .L1373+4 + strb r3, [r2, #700] + mov r2, #45 + ldr r1, .L1373+12 + b .L1371 +.L1364: + cmp r3, #35 + cmpne r3, #68 + bxne lr + ldr r2, .L1373 + ldr r0, .L1373+4 + ldr r1, .L1373+16 + strb r3, [r2, #698] + mov r3, #5 + strb r3, [r2, #699] + mov r3, #17 + strb r3, [r2, #700] + mov r2, #95 +.L1371: + b ftl_memcpy +.L1374: + .align 2 +.L1373: + .word .LANCHOR0 + .word .LANCHOR0+702 + .word .LANCHOR1+408 + .word .LANCHOR1+256 + .word .LANCHOR1+304 + .fnend + .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault + .align 2 .global NandcXferComp .type NandcXferComp, %function NandcXferComp: @@ -7814,151 +8314,152 @@ NandcXferComp: @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r0, r1, r4, r5, r6, lr} - .save {r0, r1, r4, r5, r6, lr} - ldr r6, .L942 - add r0, r6, r0, asl #3 - ldr r3, [r6, #3788] - ldr r4, [r0, #864] + .save {r4, r5, r6, lr} + .pad #8 + ldr r5, .L1415 + add r0, r5, r0, asl #3 + ldr r3, [r5, #1740] + ldr r4, [r0, #12] cmp r3, #3 - bls .L936 + bls .L1406 ldr r3, [r4, #16] tst r3, #4 - beq .L936 + beq .L1406 mov r0, r4 bl wait_for_nandc_xfer_completed - ldr r5, [r4, #16] + ldr r6, [r4, #16] ldr r3, [r4, #8] - ands r5, r5, #2 - str r3, [sp, #0] - movne r5, #0 - bne .L940 - b .L941 -.L926: - ldr r3, [r6, #3788] - cmp r3, #5 - bls .L923 - ldr r3, [r4, #0] - str r3, [sp, #4] - ldr r3, [sp, #4] - tst r3, #8192 - beq .L923 - ldr r3, [sp, #4] - tst r3, #131072 - bne .L924 -.L923: - add r5, r5, #1 - bic r3, r5, #-16777216 - cmp r3, #0 - bne .L940 + ubfx r6, r6, #1, #1 + cmp r6, #0 + movne r6, #0 + str r3, [sp] + beq .L1388 +.L1378: ldr r2, [r4, #28] - mov r1, r5 - ldr r3, [sp, #0] - ubfx r2, r2, #16, #5 - ldr r0, .L942+4 - ubfx r3, r3, #22, #6 - bl printk - ldr r0, .L942+8 - mov r1, r4 - mov r2, #4 - mov r3, #512 - bl rknand_print_hex -.L940: - ldr r2, [r4, #28] - ldr r3, [sp, #0] + ldr r3, [sp] ubfx r2, r2, #16, #5 ubfx r3, r3, #22, #6 cmp r2, r3 - blt .L926 -.L924: - ldr r4, .L942 - ldr r3, [r4, #3820] + bge .L1386 + ldr r3, [r5, #1740] + cmp r3, #5 + bhi .L1379 +.L1382: + add r6, r6, #1 + bic r3, r6, #-16777216 cmp r3, #0 - beq .L927 - ldr r1, [sp, #0] - mov r2, #0 - ldr r0, [r4, #3812] - ubfx r1, r1, #22, #5 - mov r1, r1, asl #10 - bl rknand_dma_unmap_single - ldr r1, [sp, #0] - ldr r0, [r4, #3816] - mov r2, #0 - ubfx r1, r1, #22, #5 - mov r1, r1, asl #7 - bl rknand_dma_unmap_single - b .L927 -.L930: - ldr r3, [r4, #8] - add r5, r5, #1 - str r3, [sp, #0] - bic r3, r5, #-16777216 - cmp r3, #0 - bne .L941 - ldr r2, [sp, #0] - mov r1, r5 - ldr r3, [r4, #28] - ldr r0, .L942+12 - ubfx r3, r3, #16, #5 + bne .L1378 + ldr r2, [r4, #28] + mov r1, r6 + ldr r3, [sp] + ubfx r2, r2, #16, #5 + ldr r0, .L1415+4 + ubfx r3, r3, #22, #6 bl printk - ldr r0, .L942+8 + ldr r0, .L1415+8 mov r1, r4 mov r2, #4 mov r3, #512 bl rknand_print_hex -.L941: - ldr r3, [sp, #0] - tst r3, #1048576 - beq .L930 - ldr r6, .L942 - ldr r3, [r6, #3828] + b .L1378 +.L1379: + ldr r3, [r4] + str r3, [sp, #4] + ldr r3, [sp, #4] + tst r3, #8192 + beq .L1382 + ldr r3, [sp, #4] + tst r3, #131072 + beq .L1382 +.L1386: + ldr r3, [r5, #1776] + ldr r4, .L1415 cmp r3, #0 - beq .L931 - mov r0, r4 - bl NandcSendDumpDataStart -.L931: - ldr r3, [r6, #3820] - ldr r5, .L942 - cmp r3, #0 - beq .L932 - ldr r1, [sp, #0] - mov r2, #1 - ldr r0, [r5, #3812] + beq .L1387 + ldr r1, [sp] + mov r2, #0 + ldr r0, [r4, #1768] ubfx r1, r1, #22, #5 mov r1, r1, asl #10 bl rknand_dma_unmap_single - ldr r1, [sp, #0] - ldr r0, [r5, #3816] - mov r2, #1 + ldr r0, [r4, #1772] + mov r2, #0 + ldr r1, [sp] ubfx r1, r1, #22, #5 mov r1, r1, asl #7 bl rknand_dma_unmap_single -.L932: - ldr r3, .L942 - ldr r3, [r3, #3828] + b .L1387 +.L1390: + ldr r3, [r4, #8] + add r6, r6, #1 + str r3, [sp] + bic r3, r6, #-16777216 cmp r3, #0 - beq .L927 + bne .L1388 + ldr r2, [sp] + mov r1, r6 + ldr r3, [r4, #28] + ldr r0, .L1415+12 + ubfx r3, r3, #16, #5 + bl printk + ldr r0, .L1415+8 + mov r1, r4 + mov r2, #4 + mov r3, #512 + bl rknand_print_hex +.L1388: + ldr r3, [sp] + tst r3, #1048576 + beq .L1390 + ldr r3, [r5, #1784] + cmp r3, #0 + beq .L1391 + mov r0, r4 + bl NandcSendDumpDataStart +.L1391: + ldr r3, [r5, #1776] + ldr r6, .L1415 + cmp r3, #0 + beq .L1392 + ldr r1, [sp] + mov r2, #1 + ldr r0, [r6, #1768] + ubfx r1, r1, #22, #5 + mov r1, r1, asl #10 + bl rknand_dma_unmap_single + ldr r0, [r6, #1772] + mov r2, #1 + ldr r1, [sp] + ubfx r1, r1, #22, #5 + mov r1, r1, asl #7 + bl rknand_dma_unmap_single +.L1392: + ldr r3, [r5, #1784] + cmp r3, #0 + beq .L1387 mov r0, r4 bl NandcSendDumpDataDone -.L927: - ldr r3, .L942 - mov r2, #0 - str r2, [r3, #3820] - b .L919 -.L936: +.L1387: + mov r3, #0 + str r3, [r5, #1776] + b .L1375 +.L1406: ldr r3, [r4, #8] - str r3, [sp, #0] - ldr r3, [sp, #0] + str r3, [sp] + ldr r3, [sp] tst r3, #1048576 - beq .L936 -.L919: - ldmfd sp!, {r2, r3, r4, r5, r6, pc} -.L943: + beq .L1406 +.L1375: + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, pc} +.L1416: .align 2 -.L942: +.L1415: .word .LANCHOR0 + .word .LC87 .word .LC88 .word .LC89 - .word .LC90 .fnend .size NandcXferComp, .-NandcXferComp .align 2 @@ -7966,272 +8467,1302 @@ NandcXferComp: .type NandcXferData, %function NandcXferData: .fnstart - @ args = 4, pretend = 0, frame = 80 + @ args = 4, pretend = 0, frame = 88 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r4, r3 - mov r9, r3 - ldr r3, .L982 - .pad #92 - sub sp, sp, #92 - tst r4, #63 - add r3, r3, r0, asl #3 - mov r7, r0 - mov fp, r1 - mov sl, r2 - ldr r5, [sp, #128] - ldr r6, [r3, #864] - bne .L945 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov fp, r3 + ldr r3, .L1466 + mov r8, r2 + .pad #100 + sub sp, sp, #100 + ldr r4, .L1466+4 + tst fp, #63 + mov r10, r0 + ldr r2, [r3] + mov r7, r1 + ldr r5, [sp, #136] + str r3, [sp, #16] + str r2, [sp, #92] + add r2, r4, r0, asl #3 + ldr r9, [r2, #12] + bne .L1418 cmp r5, #0 - bne .L946 - add r0, sp, #24 + bne .L1419 + add r0, sp, #28 mov r1, #255 mov r2, #64 - add r5, sp, #24 bl ftl_memset -.L946: - mov r0, r7 - mov r1, fp - mov r2, sl + add r5, sp, #28 +.L1419: + mov r0, r10 + mov r1, r7 + mov r2, r8 mov r3, #0 - stmia sp, {r4, r5} + str fp, [sp] + str r5, [sp, #4] bl NandcXferStart - mov r0, r7 + mov r0, r10 bl NandcXferComp - cmp fp, #0 - movne r4, #0 - bne .L947 - ldr r1, .L982 - mov r0, sl, lsr #1 - mov r3, fp - mov r2, fp - ldr ip, [r1, #3832] - mov r4, r1 - cmp ip, #24 - movhi ip, #128 - movls ip, #64 - b .L949 -.L950: - ldr r1, [r4, #3800] + cmp r7, #0 + movne r6, #0 + bne .L1420 + ldr r3, [r4, #1788] + mov r1, r8, lsr #1 + mov r2, r7 + cmp r3, #25 + mov r3, r7 + movcc r0, #64 + movcs r0, #128 +.L1422: + cmp r2, r1 + add r5, r5, #4 + add ip, r3, r0 + bcs .L1464 + ldr lr, [r4, #1756] mov r3, r3, lsr #2 add r2, r2, #1 - ldr r3, [r1, r3, asl #2] - mov r1, r3, lsr #8 - strb r3, [r5, #0] - strb r1, [r5, #1] - mov r1, r3, lsr #16 + ldr r3, [lr, r3, asl #2] + mov lr, r3, lsr #8 + strb r3, [r5, #-4] + strb lr, [r5, #-3] + mov lr, r3, lsr #16 mov r3, r3, lsr #24 - strb r1, [r5, #2] - strb r3, [r5, #3] - add r5, r5, #4 - mov r3, r7 -.L949: - cmp r2, r0 - add r7, r3, ip - ldr r1, .L982 - bcc .L950 - mov r3, #0 - ldr r0, [r1, #3832] - mov sl, sl, lsr #2 - ldr r1, [r1, #3788] - mov r4, r3 - b .L951 -.L957: - add r2, r3, #8 - ldr r2, [r6, r2, asl #2] - str r2, [sp, #20] - ldr r2, [sp, #20] - tst r2, #4 - bne .L972 - ldr r2, [sp, #20] - ands r2, r2, #32768 - bne .L972 - cmp r1, #5 - bls .L953 - ldr r7, [sp, #20] - ldr ip, [sp, #20] - ldr r5, [sp, #20] - ubfx r7, r7, #3, #5 - ldr r2, [sp, #20] - ubfx ip, ip, #27, #1 + strb lr, [r5, #-2] + strb r3, [r5, #-1] + mov r3, ip + b .L1422 +.L1464: + ldr r1, [r4, #1788] + mov r2, #0 + ldr r0, [r4, #1740] + mov r8, r8, lsr #2 + mov r6, r2 +.L1424: + cmp r2, r8 + bcs .L1420 + cmp r1, #0 + beq .L1420 + add r3, r2, #8 + ldr r3, [r9, r3, asl #2] + str r3, [sp, #24] + ldr r3, [sp, #24] + tst r3, #4 + bne .L1449 + ldr r4, [sp, #24] + ubfx r4, r4, #15, #1 + cmp r4, #0 + bne .L1449 + cmp r0, #5 + bls .L1426 + ldr ip, [sp, #24] + ldr r4, [sp, #24] + ldr r3, [sp, #24] + ubfx ip, ip, #3, #5 + ldr lr, [sp, #24] + ubfx r4, r4, #27, #1 + ubfx r3, r3, #16, #5 + ubfx lr, lr, #29, #1 + orr ip, ip, r4, asl #5 + orr r3, r3, lr, asl #5 + cmp ip, r3 + ldr r3, [sp, #24] + ldrhi r4, [sp, #24] + ubfxhi r3, r3, #3, #5 + ldrls r4, [sp, #24] + ubfxls r3, r3, #16, #5 + ubfxhi r4, r4, #27, #1 + ubfxls r4, r4, #29, #1 + b .L1463 +.L1426: + cmp r0, #3 + bls .L1428 + ldr ip, [sp, #24] + ldr r4, [sp, #24] + ldr r3, [sp, #24] + ubfx ip, ip, #3, #5 + ldr lr, [sp, #24] + ubfx r4, r4, #28, #1 + ubfx r3, r3, #16, #5 + ubfx lr, lr, #30, #1 + orr ip, ip, r4, asl #5 + orr r3, r3, lr, asl #5 + cmp ip, r3 + bls .L1429 + ldr r3, [sp, #24] + ldr r4, [sp, #24] + ubfx r3, r3, #3, #5 + ubfx r4, r4, #28, #1 +.L1463: + orr r4, r3, r4, asl #5 + b .L1428 +.L1429: + ldr r5, [sp, #24] + ldr r4, [sp, #24] ubfx r5, r5, #16, #5 - ubfx r2, r2, #29, #1 - orr ip, r7, ip, asl #5 - orr r2, r5, r2, asl #5 - cmp ip, r2 - ldr ip, [sp, #20] - ldrhi r2, [sp, #20] - ubfxhi ip, ip, #3, #5 - ldrls r2, [sp, #20] - ubfxls ip, ip, #16, #5 - ubfxhi r2, r2, #27, #1 - ubfxls r2, r2, #29, #1 - b .L980 -.L953: - cmp r1, #3 - bls .L955 - ldr r7, [sp, #20] - ldr ip, [sp, #20] - ldr r5, [sp, #20] - ubfx r7, r7, #3, #5 - ldr r2, [sp, #20] - ubfx ip, ip, #28, #1 - ubfx r5, r5, #16, #5 - ubfx r2, r2, #30, #1 - orr ip, r7, ip, asl #5 - orr r2, r5, r2, asl #5 - cmp ip, r2 - ldr ip, [sp, #20] - ldrhi r2, [sp, #20] - ubfxhi ip, ip, #3, #5 - ldrls r2, [sp, #20] - ubfxls ip, ip, #16, #5 - ubfxhi r2, r2, #28, #1 - ubfxls r2, r2, #30, #1 -.L980: - orr r2, ip, r2, asl #5 -.L955: - cmp r4, r2 - movcc r4, r2 - b .L952 -.L972: - mvn r4, #0 -.L952: - add r3, r3, #1 -.L951: - cmp r3, sl - bcs .L947 - cmp r0, #0 - bne .L957 -.L947: + ubfx r4, r4, #30, #1 + orr r4, r5, r4, asl #5 +.L1428: + cmp r6, r4 + movcc r6, r4 + b .L1425 +.L1449: + mvn r6, #0 +.L1425: + add r2, r2, #1 + b .L1424 +.L1420: mov r3, #0 - str r3, [r6, #16] - b .L958 -.L945: + str r3, [r9, #16] + b .L1431 +.L1418: cmp r1, #1 - mov r8, #0 - bne .L978 - b .L959 -.L962: + mov r4, #0 + bne .L1461 + mov r6, r4 +.L1432: + cmp r4, r8 + bcs .L1465 + cmp fp, #0 + and ip, r4, #3 + addne r3, fp, r4, asl #9 + mov r0, r9 + moveq r3, fp cmp r5, #0 - and r4, r8, #3 - mov r0, r6 mov r1, #1 - movne r3, #2 - moveq r3, #0 - mla r3, r8, r3, r5 - mov r2, r4 - add r8, r8, #2 - str r3, [sp, #0] - mov r3, r9 + str ip, [sp, #12] + movne r2, #2 + moveq r2, #0 + mla r2, r4, r2, r5 + add r4, r4, #2 + str r2, [sp] + mov r2, ip bl NandcCopy1KB - mov r3, #0 - mov r0, r7 - str r3, [sp, #0] - str r3, [sp, #4] + mov r0, r10 mov r1, #1 mov r2, #2 + ldr ip, [sp, #12] + str r6, [sp] + str r6, [sp, #4] + mov r3, ip + bl NandcXferStart + mov r0, r10 + bl NandcXferComp + b .L1432 +.L1465: + mov r6, #0 + b .L1431 +.L1461: + str r4, [sp] + mov r1, r4 + str r4, [sp, #4] + mov r2, #2 mov r3, r4 - bl NandcXferStart - mov r0, r7 - bl NandcXferComp - add r9, r9, #1024 -.L959: - cmp r8, sl - bcc .L962 - mov r4, #0 - b .L958 -.L978: - mov r1, r8 - mov r2, #2 - mov r3, r8 - str r8, [sp, #0] - str r8, [sp, #4] - mov r4, r8 + mov r6, r4 bl NandcXferStart str fp, [sp, #12] - mov ip, r8 - mov fp, r6 - mov r6, r5 - b .L981 -.L967: - mov r0, r7 +.L1437: + cmp r4, r8 + bcs .L1431 + mov r0, r10 bl NandcXferComp - ldr r3, [fp, #32] - add ip, r5, #2 - cmp ip, sl - str r3, [sp, #20] - bcs .L964 + ldr r3, [r9, #32] + add ip, r4, #2 + cmp ip, r8 + str r3, [sp, #24] + bcs .L1438 mov r3, #0 - mov r0, r7 - str r3, [sp, #0] + mov r0, r10 + str r3, [sp] mov r1, r3 str r3, [sp, #4] mov r2, #2 and r3, ip, #3 - str ip, [sp, #8] + str ip, [sp, #20] bl NandcXferStart - ldr ip, [sp, #8] -.L964: - ldr r3, [sp, #20] + ldr ip, [sp, #20] +.L1438: + ldr r3, [sp, #24] tst r3, #4 - mvnne r4, #0 - bne .L965 - ldr r2, [sp, #20] - ldr r3, [sp, #20] + mvnne r6, #0 + bne .L1439 + ldr r2, [sp, #24] + ldr r3, [sp, #24] ubfx r2, r2, #3, #5 ubfx r3, r3, #27, #1 orr r3, r2, r3, asl #5 - cmp r4, r3 - movcc r4, r3 -.L965: - cmp r6, #0 - and r2, r8, #3 - mov r0, fp - mov r1, #0 - movne r3, #2 - moveq r3, #0 - mla r5, r5, r3, r6 - mov r3, r9 - str ip, [sp, #8] - add r8, r8, #2 - add r9, r9, #1024 - str r5, [sp, #0] - bl NandcCopy1KB - ldr ip, [sp, #8] -.L981: - cmp ip, sl - mov r5, ip - bcc .L967 - mov r6, fp - ldr fp, [sp, #12] -.L958: - ldr r3, .L982 - rsbs fp, fp, #1 - movcc fp, #0 - ldr r3, [r3, #3788] - cmp r3, #5 - movls fp, #0 + cmp r6, r3 + movcc r6, r3 +.L1439: cmp fp, #0 - beq .L968 - ldr r3, [r6, #0] + ldr r3, [sp, #12] + sub r2, ip, #2 + mov r0, r9 + moveq r3, #0 + cmp r5, #0 + and r2, r2, #3 + str ip, [sp, #20] + movne r1, #2 + moveq r1, #0 + mla r4, r4, r1, r5 + mov r1, #0 + str r4, [sp] + bl NandcCopy1KB + ldr ip, [sp, #20] + ldr r3, [sp, #12] + mov r4, ip + add r3, r3, #1024 + str r3, [sp, #12] + b .L1437 +.L1431: + ldr r3, .L1466+4 + clz r7, r7 + mov r7, r7, lsr #5 + ldr r3, [r3, #1740] + cmp r3, #5 + movls r7, #0 + cmp r7, #0 + beq .L1443 + ldr r3, [r9] and r2, r3, #139264 cmp r2, #139264 orreq r3, r3, #131072 - streq r3, [r6, #0] - mvneq r4, #0 -.L968: - mov r0, r4 - add sp, sp, #92 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L983: + streq r3, [r9] + mvneq r6, #0 +.L1443: + ldr r3, [sp, #16] + mov r0, r6 + ldr r2, [sp, #92] + ldr r3, [r3] + cmp r2, r3 + beq .L1445 + bl __stack_chk_fail +.L1445: + add sp, sp, #100 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1467: .align 2 -.L982: +.L1466: + .word __stack_chk_guard .word .LANCHOR0 .fnend .size NandcXferData, .-NandcXferData .align 2 + .global FlashReadRawPage + .type FlashReadRawPage, %function +FlashReadRawPage: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #8 + mov r8, r3 + ldr r3, .L1471 + subs r4, r0, #0 + mov r6, r1 + mov r7, r2 + ldrb r5, [r3, #481] @ zero_extendqisi2 + bne .L1469 + ldr r2, .L1471+4 + ldrb r3, [r2, #1] @ zero_extendqisi2 + ldr r2, [r2, #4] + mul r2, r2, r3 + cmp r1, r2 + movcc r5, #4 +.L1469: + mov r0, r4 + bl NandcWaitFlashReady + mov r0, r4 + bl NandcFlashCs + mov r1, r6 + mov r0, r4 + bl FlashReadCmd + mov r0, r4 + bl NandcWaitFlashReady + mov r2, r5 + mov r1, #0 + mov r3, r7 + mov r0, r4 + str r8, [sp] + bl NandcXferData + mov r5, r0 + mov r0, r4 + bl NandcFlashDeCs + mov r0, r5 + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L1472: + .align 2 +.L1471: + .word .LANCHOR1 + .word .LANCHOR0 + .fnend + .size FlashReadRawPage, .-FlashReadRawPage + .align 2 + .global FlashDdrTunningRead + .type FlashDdrTunningRead, %function +FlashDdrTunningRead: + .fnstart + @ args = 4, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r7, r3 + ldr r4, .L1500 + .pad #20 + sub sp, sp, #20 + mov r10, r0 + mov fp, r2 + str r1, [sp] + ldr r3, [r4, #76] + ldr r3, [r3, #304] + str r3, [sp, #8] + ldr r3, [r4, #1740] + cmp r3, #8 + ldr r3, [sp, #56] + movcc r9, #6 + movcs r9, #12 + cmp r3, #0 + moveq r6, #1024 + beq .L1475 + mov r0, #1 + bl FlashSetInterfaceMode + mov r0, #1 + bl NandcSetMode + mov r0, r10 + bl FlashReset + mov r2, fp + mov r3, r7 + mov r0, r10 + ldr r1, [sp] + bl FlashReadRawPage + mov r6, r0 + ldrb r0, [r4, #1716] @ zero_extendqisi2 + bl FlashSetInterfaceMode + ldrb r0, [r4, #1716] @ zero_extendqisi2 + bl NandcSetMode + cmn r6, #1 + bne .L1476 +.L1485: + mvn r6, #0 + b .L1477 +.L1476: + mov r2, r6 + ldr r0, .L1500+4 + ldr r1, [sp] + bl printk + cmp r6, #9 + addls r4, r4, r10, asl #3 + ldrls r3, [r4, #12] + ldr r4, .L1500+8 + ldrls r2, [r3, #3840] + ldrls r2, [r3] + orrls r2, r2, #131072 + strls r2, [r3] + ldr r3, [r4, #152] + add r3, r3, #1 + str r3, [r4, #152] + cmp r3, #2048 + movcs r7, #0 + strcs r7, [r4, #152] + movcs fp, r7 + bcc .L1477 +.L1475: + mov r4, #0 + mvn r8, #0 + mov ip, r4 + mov r5, r4 + str r4, [sp, #4] +.L1483: + uxtb r0, r9 + str ip, [sp, #12] + bl NandcSetDdrPara + mov r3, r7 + mov r0, r10 + mov r2, fp + ldr r1, [sp] + bl FlashReadRawPage + add r3, r6, #1 + cmp r0, r3 + ldr ip, [sp, #12] + bhi .L1479 + cmp r0, #2 + bhi .L1489 + add r5, r5, #1 + cmp r5, #9 + bls .L1489 + rsb r4, r5, r9 + mov r6, r0 + mov r8, #0 + b .L1481 +.L1479: + ldr r3, [sp, #4] + cmp r3, r5 + bcs .L1490 + cmp r5, #7 + rsb ip, r5, r4 + bhi .L1491 + str r5, [sp, #4] + b .L1490 +.L1489: + mov r8, #0 + mov r4, r9 + mov r6, r0 + mov r7, r8 + mov fp, r8 + b .L1480 +.L1490: + mov r5, #0 +.L1480: + add r9, r9, #2 + cmp r9, #69 + bls .L1483 +.L1481: + ldr r3, [sp, #4] + cmp r3, r5 + movcs r4, ip + b .L1482 +.L1491: + mov r4, ip +.L1482: + cmp r4, #0 + beq .L1484 + ldr r0, .L1500+12 + mov r1, r4 + bl printk + uxtb r0, r4 + bl NandcSetDdrPara +.L1484: + cmn r8, #1 + bne .L1477 + ldr r0, .L1500+16 + mov r1, r10 + ldr r2, [sp] + bl printk + ldr r3, [sp, #56] + cmp r3, #0 + beq .L1485 + ldr r3, [sp, #8] + ubfx r0, r3, #8, #8 + bl NandcSetDdrPara +.L1477: + mov r0, r6 + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1501: + .align 2 +.L1500: + .word .LANCHOR0 + .word .LC90 + .word .LANCHOR2 + .word .LC91 + .word .LC92 + .fnend + .size FlashDdrTunningRead, .-FlashDdrTunningRead + .align 2 + .global FlashReadPage + .type FlashReadPage, %function +FlashReadPage: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r5, r0 + mov r6, r1 + mov r8, r2 + mov r7, r3 + bl FlashReadRawPage + cmn r0, #1 + mov r4, r0 + bne .L1503 + ldr r9, .L1523 + ldrb fp, [r9, #8] @ zero_extendqisi2 + mov r10, r9 + cmp fp, #0 + bne .L1504 +.L1506: + ldrb r3, [r10, #1732] @ zero_extendqisi2 + ldr r9, .L1523 + cmp r3, #0 + beq .L1503 + b .L1522 +.L1504: + mov r3, #0 + mov r0, r5 + strb r3, [r9, #8] + mov r1, r6 + mov r2, r8 + mov r3, r7 + bl FlashReadRawPage + strb fp, [r9, #8] + cmn r0, #1 + movne r4, r0 + beq .L1506 + b .L1503 +.L1522: + ldr r3, [r9, #76] + mov r0, r5 + mov r1, r6 + mov r2, r8 + ldr r10, [r3, #304] + mov r3, #1 + str r3, [sp] + mov r3, r7 + bl FlashDdrTunningRead + cmn r0, #1 + mov r4, r0 + beq .L1507 + ldrb r3, [r9, #1792] @ zero_extendqisi2 + cmp r0, r3, lsr #1 + bls .L1503 +.L1507: + ubfx r0, r10, #8, #8 + bl NandcSetDdrPara +.L1503: + ldr r9, .L1523+4 + ldr ip, [r9, #156] + adds r3, ip, #0 + movne r3, #1 + cmn r4, #1 + movne r3, #0 + cmp r3, #0 + beq .L1508 + mov r1, r6 + mov r2, r8 + mov r3, r7 + mov r0, r5 + blx ip + mov r2, r5 + mov r3, r6 + mov r4, r0 + ldr r0, .L1523+8 + mov r1, r4 + bl printk + cmn r4, #1 + bne .L1508 + ldr r3, .L1523 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L1508 + mov r0, r5 + bl flash_enter_slc_mode + ldr ip, [r9, #156] + mov r0, r5 + mov r1, r6 + mov r2, r8 + mov r3, r7 + blx ip + mov r4, r0 + mov r0, r5 + bl flash_exit_slc_mode +.L1508: + mov r0, r4 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1524: + .align 2 +.L1523: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC93 + .fnend + .size FlashReadPage, .-FlashReadPage + .align 2 + .global FlashDdrParaScan + .type FlashDdrParaScan, %function +FlashDdrParaScan: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #8 + mov r7, r0 + ldr r5, .L1535 + mov r6, r1 + mov r4, #0 + ldrb r0, [r5, #1716] @ zero_extendqisi2 + bl FlashSetInterfaceMode + ldrb r0, [r5, #1716] @ zero_extendqisi2 + bl NandcSetMode + mov r1, r6 + mov r2, r4 + mov r3, r4 + mov r0, r7 + str r4, [sp] + bl FlashDdrTunningRead + mov r3, r4 + mov r1, r6 + mov r2, r4 + mov r8, r0 + mov r0, r7 + bl FlashReadRawPage + mov r3, r5 + cmn r0, #1 + cmnne r8, #1 + bne .L1526 + ldrb r2, [r5, #1716] @ zero_extendqisi2 + tst r2, #1 + beq .L1526 + mov r0, #1 + bl FlashSetInterfaceMode + mov r0, #1 + bl NandcSetMode + strb r4, [r5, #1732] + b .L1527 +.L1526: + mov r2, #1 + strb r2, [r3, #1732] +.L1527: + mov r0, #0 + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L1536: + .align 2 +.L1535: + .word .LANCHOR0 + .fnend + .size FlashDdrParaScan, .-FlashDdrParaScan + .align 2 + .global FlashLoadPhyInfo + .type FlashLoadPhyInfo, %function +FlashLoadPhyInfo: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #20 + sub sp, sp, #20 + ldr r10, .L1554 + mov r6, #0 + ldr r7, .L1554+4 + mov r4, r6 + ldr r5, .L1554+8 + mov r9, #4 + ldr r3, [r10] + mvn r8, #0 + str r6, [r5, #164] + str r3, [sp, #12] + ldr r3, .L1554+12 + ldr r0, [r3] @ unaligned + ldr r3, [r7, #4] + str r0, [sp, #8] @ unaligned + mov r0, r6 + str r3, [sp] + mov r6, r5 + ldr r3, [r5, #148] + str r3, [r5, #160] + bl flash_enter_slc_mode + str r10, [sp, #4] +.L1538: + add fp, r4, #1 + mov r10, #0 +.L1540: + add r3, sp, #8 + ldrb r0, [r3, r10] @ zero_extendqisi2 + bl FlashBchSel + mov r0, #0 + mov r1, r4 + ldr r2, [r5, #148] + mov r3, r0 + bl FlashReadRawPage + cmn r0, #1 + bne .L1539 + mov r0, #0 + mov r1, fp + ldr r2, [r6, #148] + mov r3, r0 + bl FlashReadRawPage + cmn r0, #1 + bne .L1539 + add r10, r10, #1 + cmp r10, #4 + beq .L1541 + b .L1540 +.L1542: + add r0, fp, #12 + movw r1, #2036 + bl js_hash + ldr r3, [fp, #8] + cmp r3, r0 + mvnne r8, #0 + bne .L1541 + ldr r8, .L1554+16 + add r1, fp, #160 + mov r2, #32 + mov r0, r8 + bl ftl_memcpy + ldr r1, [r6, #160] + mov r2, #32 + ldr r0, .L1554+20 + add r1, r1, #192 + bl ftl_memcpy + ldr r1, [r6, #160] + mov r2, #852 + ldr r0, .L1554+24 + add r1, r1, #224 + bl ftl_memcpy + ldrh r0, [r8, #10] + bl FlashBlockAlignInit + ldr r8, [r6, #160] + str r4, [r6, #164] + mov r0, r4 + ldr r1, [r7, #4] + ldr r3, [r8, #1076] + strb r3, [r7, #1732] + bl __aeabi_uidiv + add r0, r0, #1 + cmp r0, #1 + strhi r0, [r6, #168] + movls r3, #2 + strls r3, [r6, #168] + ldrh r3, [r8, #14] + mov r8, #0 + strb r3, [r5, #172] +.L1541: + ldr r3, [sp] + subs r9, r9, #1 + add r4, r4, r3 + bne .L1538 + mov r0, r9 +.L1553: + bl flash_exit_slc_mode + mov r0, r8 + ldr r3, [sp, #4] + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L1548 + bl __stack_chk_fail +.L1539: + ldr fp, [r5, #160] + ldr r2, .L1554+28 + ldr r3, [fp] + cmp r3, r2 + bne .L1541 + cmp r8, #0 + bne .L1542 + mov r0, r4 + ldr r1, [r7, #4] + bl __aeabi_uidiv + ldr r3, .L1554+8 + add r0, r0, #1 + str r0, [r3, #168] + mov r0, r8 + b .L1553 +.L1548: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1555: + .align 2 +.L1554: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR3+11 + .word .LANCHOR1+472 + .word .LANCHOR0+44 + .word .LANCHOR0+698 + .word 1312902724 + .fnend + .size FlashLoadPhyInfo, .-FlashLoadPhyInfo + .align 2 + .global ToshibaReadRetrial + .type ToshibaReadRetrial, %function +ToshibaReadRetrial: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + mov r9, r0 + mov fp, r3 + str r2, [sp, #8] + str r1, [sp, #16] + bl NandcWaitFlashReady + ldr r4, .L1585 + add r3, r4, r9, asl #3 + ldrb r2, [r3, #16] @ zero_extendqisi2 + ldr r6, [r3, #12] + ldrb r3, [r4, #696] @ zero_extendqisi2 + add r7, r2, #8 + sub r3, r3, #67 + add r7, r6, r7, asl #8 + cmp r3, #1 + mov r3, r2, asl #8 + str r3, [sp, #12] + movls r3, #0 + strls r3, [sp, #4] + bls .L1557 + ldrb r5, [r4, #1732] @ zero_extendqisi2 + cmp r5, #0 + streq r5, [sp, #4] + beq .L1558 + mov r0, #0 + str r2, [sp, #20] + bl NandcSetDdrMode + mov r3, #1 + ldr r2, [sp, #20] + str r3, [sp, #4] +.L1558: + ldr r3, [sp, #12] + mov r1, #92 + add r3, r6, r3 + str r1, [r3, #2056] + mov r1, #197 + str r1, [r3, #2056] +.L1557: + mov r8, #1 + mvn r10, #0 + mov r3, r2, asl #8 + str r3, [sp, #20] +.L1559: + ldr r3, .L1585+4 + ldrb r3, [r3, #173] @ zero_extendqisi2 + add r3, r3, #1 + cmp r8, r3 + bcs .L1584 + ldrb r3, [r4, #696] @ zero_extendqisi2 + mov r0, r7 + uxtb r1, r8 + sub r3, r3, #67 + cmp r3, #1 + bhi .L1560 + bl SandiskSetRRPara + b .L1561 +.L1560: + bl ToshibaSetRRPara +.L1561: + ldrb r3, [r4, #696] @ zero_extendqisi2 + cmp r3, #34 + bne .L1562 + ldr r3, .L1585+4 + ldrb r3, [r3, #173] @ zero_extendqisi2 + sub r3, r3, #3 + cmp r8, r3 + ldreq r3, [sp, #20] + moveq r2, #179 + addeq r3, r6, r3 + streq r2, [r3, #2056] +.L1562: + ldr r3, [sp, #12] + mov r2, #38 + add r3, r6, r3 + str r2, [r3, #2056] + mov r2, #93 + str r2, [r3, #2056] + ldr r3, [sp, #4] + cmp r3, #0 + beq .L1563 + mov r0, #4 + bl NandcSetDdrMode + mov r0, r9 + mov r3, fp + ldr r1, [sp, #16] + ldr r2, [sp, #8] + bl FlashReadRawPage + mov r5, r0 + mov r0, #0 + bl NandcSetDdrMode + b .L1564 +.L1563: + mov r0, r9 + ldr r1, [sp, #16] + ldr r2, [sp, #8] + mov r3, fp + bl FlashReadRawPage + mov r5, r0 +.L1564: + cmn r5, #1 + beq .L1565 + ldrb r2, [r4, #1792] @ zero_extendqisi2 + cmn r10, #1 + moveq r10, r5 + add r2, r2, r2, asl #1 + cmp r5, r2, asr #2 + bcc .L1567 + mov fp, #0 + str fp, [sp, #8] +.L1565: + add r8, r8, #1 + b .L1559 +.L1584: + mov r5, r10 +.L1567: + ldrb r2, [r4, #696] @ zero_extendqisi2 + mov r0, r7 + mov r1, #0 + sub r2, r2, #67 + cmp r2, #1 + bhi .L1569 + bl SandiskSetRRPara + b .L1570 +.L1569: + bl ToshibaSetRRPara +.L1570: + ldr r3, [sp, #12] + mov r2, #255 + add r6, r6, r3 + str r2, [r6, #2056] + ldrb r2, [r4, #1792] @ zero_extendqisi2 + add r2, r2, r2, asl #1 + cmp r5, r2, asr #2 + bcc .L1571 + cmn r5, #1 + movne r5, #256 +.L1571: + mov r0, r9 + bl NandcWaitFlashReady + ldr r3, [sp, #4] + cmp r3, #0 + beq .L1572 + mov r0, #4 + bl NandcSetDdrMode +.L1572: + mov r0, r5 + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1586: + .align 2 +.L1585: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size ToshibaReadRetrial, .-ToshibaReadRetrial + .align 2 + .global SamsungReadRetrial + .type SamsungReadRetrial, %function +SamsungReadRetrial: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r9, r0 + ldr r5, .L1601 + mov r10, r2 + mov r8, r3 + mov fp, r1 + bl NandcWaitFlashReady + add r2, r5, r9, asl #3 + ldr ip, .L1601+4 + mov r7, #1 + ldrb r3, [r2, #16] @ zero_extendqisi2 + mvn r4, #0 + ldr r6, [r2, #12] + add r3, r3, #8 + add r6, r6, r3, asl #8 +.L1588: + ldrb r3, [ip, #173] @ zero_extendqisi2 + add r3, r3, #1 + cmp r7, r3 + bcs .L1591 + mov r0, r6 + uxtb r1, r7 + str ip, [sp, #4] + bl SamsungSetRRPara + mov r0, r9 + mov r1, fp + mov r2, r10 + mov r3, r8 + bl FlashReadRawPage + cmn r0, #1 + ldr ip, [sp, #4] + beq .L1589 + ldrb r3, [r5, #1792] @ zero_extendqisi2 + cmn r4, #1 + moveq r4, r0 + add r3, r3, r3, asl #1 + cmp r0, r3, asr #2 + bcc .L1594 + mov r8, #0 + mov r10, r8 +.L1589: + add r7, r7, #1 + b .L1588 +.L1594: + mov r4, r0 +.L1591: + mov r0, r6 + mov r1, #0 + bl SamsungSetRRPara + ldrb r3, [r5, #1792] @ zero_extendqisi2 + add r3, r3, r3, asl #1 + cmp r4, r3, asr #2 + bcc .L1593 + cmn r4, #1 + movne r4, #256 +.L1593: + mov r0, r4 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1602: + .align 2 +.L1601: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size SamsungReadRetrial, .-SamsungReadRetrial + .align 2 + .global MicronReadRetrial + .type MicronReadRetrial, %function +MicronReadRetrial: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 +.L1605: + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r3 + ldr r3, .L1629 + mov fp, r2 + .pad #36 + sub sp, sp, #36 + mov r6, r0 + mov r10, #0 + ldrb r5, [r3, #1792] @ zero_extendqisi2 + ldrb r3, [r3, #140] @ zero_extendqisi2 + str r1, [sp, #20] + cmp r3, #0 + addeq r5, r5, r5, asl #1 + ldrne r2, .L1629+4 + ubfxeq r5, r5, #2, #8 + smullne r2, r3, r5, r2 + uxtbne r5, r3 + ldr r3, .L1629 + add r3, r3, r0, asl #3 + str r3, [sp, #24] +.L1615: + mov r0, r6 + mov r9, #0 + bl NandcWaitFlashReady + mvn r4, #0 + ldr r3, [sp, #24] + ldr r3, [r3, #12] + str r3, [sp, #12] + ldr r3, [sp, #24] + ldrb r3, [r3, #16] @ zero_extendqisi2 + str r3, [sp, #16] + ldr r2, [sp, #16] + ldr r3, [sp, #12] + add r7, r3, r2, asl #8 +.L1606: + ldr r3, .L1629+8 + ldrb r3, [r3, #173] @ zero_extendqisi2 + cmp r9, r3 + bcs .L1609 + mov r3, #239 + mov r0, #200 + str r3, [r7, #2056] + mov r3, #137 + str r3, [r7, #2052] + bl NandcDelayns + mov ip, #0 + 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] + bl FlashReadRawPage + cmn r0, #1 + beq .L1607 + cmn r4, #1 + ldr ip, [sp, #28] + moveq r4, r0 + cmp r0, r5 + bcc .L1617 + mov r8, ip + mov fp, ip +.L1607: + ldr r9, [sp, #8] + b .L1606 +.L1617: + mov r4, r0 + mov r8, ip + mov fp, ip +.L1609: + ldr r2, [sp, #16] + mov r0, #200 + ldr r3, [sp, #12] + add r7, r3, r2, asl #8 + mov r3, #239 + str r3, [r7, #2056] + mov r3, #137 + str r3, [r7, #2052] + bl NandcDelayns + cmp r4, r5 + mov r3, #0 + str r3, [r7, #2048] + str r3, [r7, #2048] + str r3, [r7, #2048] + str r3, [r7, #2048] + bcc .L1611 + cmn r4, #1 + movne r4, #256 +.L1611: + cmn r4, #1 + movne r7, #0 + moveq r7, #1 + cmp r4, #256 + movne r1, r7 + orreq r1, r7, #1 + cmp r1, #0 + beq .L1612 + str r4, [sp] + mov r1, r9 + ldr r0, .L1629+12 + mov r3, r9 + ldr r2, [sp, #20] + bl printk + cmp r10, #0 + bne .L1613 + ldr r3, .L1629 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cmp r3, #0 + moveq r7, #0 + andne r7, r7, #1 + cmp r7, #0 + beq .L1622 + mov r0, r6 + mov r1, #3 + bl micron_auto_read_calibration_config + mov r10, #1 + b .L1615 +.L1613: + mov r0, r6 + mov r1, #0 + bl micron_auto_read_calibration_config + cmn r4, #1 + movne r4, #256 + b .L1622 +.L1612: + cmp r10, #0 + beq .L1622 + mov r0, r6 + mov r4, #256 + bl micron_auto_read_calibration_config +.L1622: + mov r0, r4 + add sp, sp, #36 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1630: + .align 2 +.L1629: + .word .LANCHOR0 + .word 1431655766 + .word .LANCHOR2 + .word .LC94 + .fnend + .size MicronReadRetrial, .-MicronReadRetrial + .align 2 + .global HynixReadRetrial + .type HynixReadRetrial, %function +HynixReadRetrial: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r8, r3 + ldr r5, .L1649 + mov r10, r2 + mov r7, r0 + mov fp, r1 + add r2, r5, r0 + mvn r6, #0 + ldr r3, [r5, #692] + ldrb r4, [r2, #710] @ zero_extendqisi2 + ldrb r9, [r5, #700] @ zero_extendqisi2 + ldrb r3, [r3, #19] @ zero_extendqisi2 + sub r3, r3, #7 + cmp r3, #1 + ldrlsb r4, [r2, #718] @ zero_extendqisi2 + bl NandcWaitFlashReady + mov ip, #0 +.L1633: + cmp ip, r9 + bcs .L1637 + add r4, r4, #1 + mov r0, r7 + ldrb r1, [r5, #699] @ zero_extendqisi2 + uxtb r4, r4 + ldr r2, .L1649+4 + cmp r4, r9 + str ip, [sp, #4] + movcs r4, #0 + mov r3, r4 + bl HynixSetRRPara + mov r0, r7 + mov r1, fp + mov r2, r10 + mov r3, r8 + bl FlashReadRawPage + cmn r0, #1 + ldr ip, [sp, #4] + beq .L1635 + ldrb r3, [r5, #1792] @ zero_extendqisi2 + cmn r6, #1 + moveq r6, r0 + add r3, r3, r3, asl #1 + cmp r0, r3, asr #2 + bcc .L1642 + mov r8, #0 + mov r10, r8 +.L1635: + add ip, ip, #1 + b .L1633 +.L1642: + mov r6, r0 +.L1637: + ldr r3, [r5, #692] + add r7, r5, r7 + ldrb r3, [r3, #19] @ zero_extendqisi2 + sub r3, r3, #7 + cmp r3, #1 + ldrb r3, [r5, #1792] @ zero_extendqisi2 + strlsb r4, [r7, #718] + strhib r4, [r7, #710] + add r3, r3, r3, asl #1 + cmp r6, r3, asr #2 + bcc .L1641 + cmn r6, #1 + movne r6, #256 +.L1641: + mov r0, r6 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1650: + .align 2 +.L1649: + .word .LANCHOR0 + .word .LANCHOR0+702 + .fnend + .size HynixReadRetrial, .-HynixReadRetrial + .align 2 .global FlashProgPage .type FlashProgPage, %function FlashProgPage: @@ -8239,25 +9770,26 @@ FlashProgPage: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #8 mov r8, r3 - ldr r3, .L987 + ldr r3, .L1655 subs r4, r0, #0 mov r5, r1 - mov r6, r2 - ldrb r7, [r3, #2997] @ zero_extendqisi2 - bne .L985 - ldr r3, .L987+4 - ldrb r2, [r3, #853] @ zero_extendqisi2 - ldr r1, [r3, #856] - mul r2, r1, r2 - cmp r5, r2 - bcs .L985 - ldrb r3, [r3, #852] @ zero_extendqisi2 + mov r7, r2 + ldrb r6, [r3, #481] @ zero_extendqisi2 + bne .L1652 + ldr r2, .L1655+4 + ldrb r3, [r2, #1] @ zero_extendqisi2 + ldr r1, [r2, #4] + mul r1, r1, r3 + cmp r5, r1 + bcs .L1652 + ldrb r3, [r2] @ zero_extendqisi2 cmp r3, #0 - subeq r7, r7, #2 - movne r7, #4 -.L985: + subeq r6, r6, #2 + movne r6, #4 +.L1652: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 @@ -8265,11 +9797,11 @@ FlashProgPage: mov r0, r4 mov r1, r5 bl FlashProgFirstCmd - uxtb r2, r7 - mov r3, r6 + uxtb r2, r6 + mov r3, r7 mov r0, r4 mov r1, #1 - str r8, [sp, #0] + str r8, [sp] bl NandcXferData mov r1, r5 mov r0, r4 @@ -8283,740 +9815,163 @@ FlashProgPage: mov r0, r4 bl NandcFlashDeCs and r0, r5, #1 - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, pc} -.L988: + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L1656: .align 2 -.L987: +.L1655: .word .LANCHOR1 .word .LANCHOR0 .fnend .size FlashProgPage, .-FlashProgPage .align 2 - .global FlashPageProgMsbFFData - .type FlashPageProgMsbFFData, %function -FlashPageProgMsbFFData: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r4, r2 - ldr r2, .L996 - mov r7, r1 - mov r8, r0 - ldrb r1, [r2, #928] @ zero_extendqisi2 - ldr r3, [r2, #3624] - cmp r1, #0 - ldrb r3, [r3, #19] @ zero_extendqisi2 - beq .L990 - ldr r1, [r2, #3776] - ldr r2, .L996+4 - cmp r1, r2 - ldmeqfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L990: - sub r2, r3, #5 - uxtb r2, r2 - cmp r3, #68 - cmpne r2, #2 - bls .L993 - cmp r3, #35 - cmpne r3, #19 - beq .L993 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L994: - add r3, r5, r4, asl #1 - sub r3, r3, #888 - ldrh r3, [r3, #0] - cmp r3, sl - ldmnefd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} - mov r1, #255 - mov r2, #32768 - ldr r0, [r5, #140] - bl ftl_memset - add r1, r4, r7 - add r4, r4, #1 - mov r0, r8 - ldr r2, [r5, #140] - mov r3, #0 - bl FlashProgPage - uxth r4, r4 - b .L995 -.L993: - ldr r6, .L996 - movw sl, #65535 - ldr r5, .L996+8 -.L995: - ldr r3, [r6, #3624] - ldrh r3, [r3, #10] - cmp r3, r4 - bhi .L994 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L997: - .align 2 -.L996: - .word .LANCHOR0 - .word 1446522928 - .word .LANCHOR2 - .fnend - .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData - .align 2 - .global FlashReadRawPage - .type FlashReadRawPage, %function -FlashReadRawPage: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r0, r1, r4, r5, r6, r7, r8, lr} - mov r8, r3 - ldr r3, .L1001 - subs r4, r0, #0 - mov r6, r1 - mov r5, r2 - ldrb r7, [r3, #2997] @ zero_extendqisi2 - bne .L999 - ldr r3, .L1001+4 - ldrb r2, [r3, #853] @ zero_extendqisi2 - ldr r3, [r3, #856] - mul r3, r3, r2 - cmp r1, r3 - movcc r7, #4 -.L999: - mov r0, r4 - bl NandcWaitFlashReady - mov r0, r4 - bl NandcFlashCs - mov r1, r6 - mov r0, r4 - bl FlashReadCmd - mov r0, r4 - bl NandcWaitFlashReady - mov r3, r5 - mov r1, #0 - mov r2, r7 - mov r0, r4 - str r8, [sp, #0] - bl NandcXferData - mov r5, r0 - mov r0, r4 - bl NandcFlashDeCs - mov r0, r5 - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, pc} -.L1002: - .align 2 -.L1001: - .word .LANCHOR1 - .word .LANCHOR0 - .fnend - .size FlashReadRawPage, .-FlashReadRawPage - .align 2 - .global HynixReadRetrial - .type HynixReadRetrial, %function -HynixReadRetrial: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r7, r3 - ldr r3, .L1017 - mov sl, r2 - ldr fp, .L1017 - mov r6, r0 - add r2, r3, r0 - str r1, [sp, #4] - ldrb r9, [r3, #2] @ zero_extendqisi2 - mov r8, #0 - ldr r3, [r3, #3624] - mvn r5, #0 - ldrb r4, [r2, #12] @ zero_extendqisi2 - ldrb r3, [r3, #19] @ zero_extendqisi2 - cmp r3, #7 - ldreqb r4, [r2, #20] @ zero_extendqisi2 - bl NandcWaitFlashReady - mov ip, fp - b .L1005 -.L1010: - add r4, r4, #1 - ldrb r1, [fp, #1] @ zero_extendqisi2 - mov r0, r6 - ldr r2, .L1017+4 - uxtb r4, r4 - str ip, [sp, #0] - cmp r4, r9 - movcs r4, #0 - mov r3, r4 - bl HynixSetRRPara - mov r0, r6 - ldr r1, [sp, #4] - mov r2, sl - mov r3, r7 - bl FlashReadRawPage - ldr ip, [sp, #0] - cmn r0, #1 - beq .L1007 - ldrb r3, [ip, #3836] @ zero_extendqisi2 - cmn r5, #1 - moveq r5, r0 - add r3, r3, r3, asl #1 - cmp r0, r3, lsr #2 - bcc .L1016 - mov r7, #0 - mov sl, r7 -.L1007: - add r8, r8, #1 -.L1005: - cmp r8, r9 - bcc .L1010 - b .L1009 -.L1016: - mov r5, r0 -.L1009: - ldr r3, .L1017 - add r6, r3, r6 - ldr r2, [r3, #3624] - ldrb r3, [r3, #3836] @ zero_extendqisi2 - ldrb r2, [r2, #19] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp r2, #7 - streqb r4, [r6, #20] - strneb r4, [r6, #12] - adds r0, r5, #1 - movne r0, #1 - cmp r5, r3, lsr #2 - movcc r0, #0 - andcs r0, r0, #1 - cmp r0, #0 - moveq r0, r5 - movne r0, #256 - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1018: - .align 2 -.L1017: - .word .LANCHOR0 - .word .LANCHOR0+4 - .fnend - .size HynixReadRetrial, .-HynixReadRetrial - .align 2 - .global MicronReadRetrial - .type MicronReadRetrial, %function -MicronReadRetrial: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov sl, r3 - ldr r3, .L1037 - mov r9, r0 - .pad #36 - sub sp, sp, #36 - ldrb r0, [r3, #3836] @ zero_extendqisi2 - ldrb r3, [r3, #928] @ zero_extendqisi2 - str r1, [sp, #24] - cmp r3, #0 - str r2, [sp, #20] - addeq r0, r0, r0, asl #1 - ubfxeq r0, r0, #2, #8 - beq .L1036 - mov r1, #3 - bl __aeabi_idiv - uxtb r0, r0 -.L1036: -.L1021: - mov r2, #0 - ldr r3, .L1037 - mvn r4, #0 - mov r6, r2 - add r3, r3, r9, asl #3 - str r0, [sp, #16] - str r2, [sp, #12] - str r3, [sp, #28] -.L1031: - mov r0, r9 - mov fp, #0 - bl NandcWaitFlashReady - ldr r2, [sp, #28] - ldrb r7, [r2, #868] @ zero_extendqisi2 - ldr r8, [r2, #864] - add r7, r7, #8 - add r5, r8, r7, asl #8 - b .L1022 -.L1026: - mov r3, #239 - mov r0, #200 - str r3, [r5, #8] - mov r3, #137 - str r3, [r5, #4] - bl NandcDelayns - add ip, fp, #1 - mov r0, r9 - str ip, [r5, #0] - ldr r1, [sp, #24] - mov r3, sl - str r6, [r5, #0] - ldr r2, [sp, #20] - str r6, [r5, #0] - str r6, [r5, #0] - str ip, [sp, #8] - bl FlashReadRawPage - ldr ip, [sp, #8] - cmn r0, #1 - beq .L1023 - cmn r4, #1 - ldr r2, [sp, #16] - moveq r4, r0 - cmp r0, r2 - bcc .L1033 - mov sl, #0 - str sl, [sp, #20] -.L1023: - mov fp, ip -.L1022: - ldr r2, .L1037+4 - ldrb r3, [r2, #144] @ zero_extendqisi2 - cmp fp, r3 - bcc .L1026 - b .L1025 -.L1033: - mov r4, r0 - mov sl, #0 - str sl, [sp, #20] -.L1025: - mov r3, #239 - mov r0, #200 - str r3, [r5, #8] - mov r3, #137 - str r3, [r5, #4] - bl NandcDelayns - ldr r2, [sp, #16] - str r6, [r8, r7, asl #8] - cmp r4, r2 - str r6, [r8, r7, asl #8] - str r6, [r8, r7, asl #8] - movcc r3, #0 - movcs r3, #1 - cmn r4, #1 - str r6, [r8, r7, asl #8] - moveq r3, #0 - cmp r3, #0 - movne r4, #256 - cmn r4, #1 - movne r5, #0 - moveq r5, #1 - cmn r4, #1 - cmpne r4, #256 - bne .L1028 - mov r3, fp - ldr r0, .L1037+8 - mov r1, fp - ldr r2, [sp, #24] - str r4, [sp, #0] - bl printk - ldr r3, [sp, #12] - cmp r3, #0 - bne .L1029 - ldr r2, .L1037 - ldrb r3, [r2, #928] @ zero_extendqisi2 - cmp r3, #0 - moveq r5, #0 - andne r5, r5, #1 - cmp r5, #0 - beq .L1030 - mov r0, r9 - mov r1, #3 - bl micron_auto_read_calibration_config - mov r3, #1 - str r3, [sp, #12] - b .L1031 -.L1028: - ldr r2, [sp, #12] - cmp r2, #0 - beq .L1030 -.L1029: - mov r0, r9 - mov r1, #0 - bl micron_auto_read_calibration_config - cmn r4, #1 - movne r4, #256 -.L1030: - mov r0, r4 - add sp, sp, #36 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1038: - .align 2 -.L1037: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC91 - .fnend - .size MicronReadRetrial, .-MicronReadRetrial - .align 2 - .global SamsungReadRetrial - .type SamsungReadRetrial, %function -SamsungReadRetrial: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r8, r0 - mov r7, r2 - mov r6, r3 - mov r9, r1 - bl NandcWaitFlashReady - ldr ip, .L1048 - mov r5, #1 - mvn r4, #0 - ldr fp, .L1048+4 - add r3, ip, r8, asl #3 - ldrb sl, [r3, #868] @ zero_extendqisi2 - ldr r2, [r3, #864] - add sl, sl, #8 - add sl, r2, sl, asl #8 - b .L1040 -.L1044: - mov r0, sl - uxtb r1, r5 - str ip, [sp, #4] - bl SamsungSetRRPara - mov r0, r8 - mov r1, r9 - mov r2, r7 - mov r3, r6 - bl FlashReadRawPage - ldr ip, [sp, #4] - cmn r0, #1 - beq .L1041 - ldrb r3, [ip, #3836] @ zero_extendqisi2 - cmn r4, #1 - moveq r4, r0 - add r3, r3, r3, asl #1 - cmp r0, r3, lsr #2 - bcc .L1047 - mov r6, #0 - mov r7, r6 -.L1041: - add r5, r5, #1 -.L1040: - ldrb r3, [fp, #144] @ zero_extendqisi2 - add r3, r3, #1 - cmp r5, r3 - bcc .L1044 - b .L1043 -.L1047: - mov r4, r0 -.L1043: - mov r0, sl - mov r1, #0 - bl SamsungSetRRPara - ldr r3, .L1048 - adds r0, r4, #1 - ldrb r3, [r3, #3836] @ zero_extendqisi2 - movne r0, #1 - add r3, r3, r3, asl #1 - cmp r4, r3, lsr #2 - movcc r0, #0 - andcs r0, r0, #1 - cmp r0, #0 - moveq r0, r4 - movne r0, #256 - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1049: - .align 2 -.L1048: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size SamsungReadRetrial, .-SamsungReadRetrial - .align 2 - .global ToshibaReadRetrial - .type ToshibaReadRetrial, %function -ToshibaReadRetrial: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r8, r0 - str r1, [sp, #4] - mov r9, r2 - mov r7, r3 - bl NandcWaitFlashReady - ldr r3, .L1071 - add r2, r3, r8, asl #3 - ldr r1, [r2, #864] - ldrb r4, [r2, #868] @ zero_extendqisi2 - ldrb r2, [r3, #3761] @ zero_extendqisi2 - add r4, r4, #8 - sub r2, r2, #67 - add r4, r1, r4, asl #8 - uxtb r2, r2 - cmp r2, #1 - movls sl, #0 - bls .L1051 - ldrb sl, [r3, #3780] @ zero_extendqisi2 - cmp sl, #0 - beq .L1052 - mov r0, #0 - mov sl, #1 - bl NandcSetDdrMode -.L1052: - mov r3, #92 - str r3, [r4, #8] - mov r3, #197 - str r3, [r4, #8] -.L1051: - mov r6, #1 - mvn r5, #0 - ldr fp, .L1071 - b .L1053 -.L1062: - ldrb r3, [fp, #3761] @ zero_extendqisi2 - mov r0, r4 - uxtb r1, r6 - sub r3, r3, #67 - uxtb r3, r3 - cmp r3, #1 - bhi .L1054 - bl SandiskSetRRPara - b .L1055 -.L1054: - bl ToshibaSetRRPara -.L1055: - ldr r2, .L1071 - ldrb r3, [r2, #3761] @ zero_extendqisi2 - cmp r3, #34 - bne .L1056 - ldr r2, .L1071+4 - ldrb r3, [r2, #144] @ zero_extendqisi2 - sub r3, r3, #3 - cmp r6, r3 - moveq r3, #179 - streq r3, [r4, #8] -.L1056: - cmp sl, #0 - mov r3, #38 - str r3, [r4, #8] - mov r3, #93 - str r3, [r4, #8] - beq .L1057 - mov r0, #4 - bl NandcSetDdrMode - ldr r1, [sp, #4] - mov r2, r9 - mov r3, r7 - mov r0, r8 - bl FlashReadRawPage - mov r3, r0 - mov r0, #0 - str r3, [sp, #0] - bl NandcSetDdrMode - ldr r3, [sp, #0] - b .L1058 -.L1057: - mov r3, r7 - mov r0, r8 - ldr r1, [sp, #4] - mov r2, r9 - bl FlashReadRawPage - mov r3, r0 -.L1058: - cmn r3, #1 - beq .L1059 - ldrb r2, [fp, #3836] @ zero_extendqisi2 - cmn r5, #1 - moveq r5, r3 - add r2, r2, r2, asl #1 - cmp r3, r2, lsr #2 - bcc .L1070 - mov r7, #0 - mov r9, r7 -.L1059: - add r6, r6, #1 -.L1053: - ldr r2, .L1071+4 - ldrb r3, [r2, #144] @ zero_extendqisi2 - add r3, r3, #1 - cmp r6, r3 - bcc .L1062 - b .L1061 -.L1070: - mov r5, r3 -.L1061: - ldr r6, .L1071 - mov r0, r4 - mov r1, #0 - ldrb r3, [r6, #3761] @ zero_extendqisi2 - sub r3, r3, #67 - uxtb r3, r3 - cmp r3, #1 - bhi .L1063 - bl SandiskSetRRPara - b .L1064 -.L1063: - bl ToshibaSetRRPara -.L1064: - mov r3, #255 - str r3, [r4, #8] - ldrb r3, [r6, #3836] @ zero_extendqisi2 - adds r2, r5, #1 - mov r0, r8 - movne r2, #1 - add r3, r3, r3, asl #1 - cmp r5, r3, lsr #2 - movcc r3, #0 - andcs r3, r2, #1 - cmp r3, #0 - movne r5, #256 - bl NandcWaitFlashReady - cmp sl, #0 - beq .L1066 - mov r0, #4 - bl NandcSetDdrMode -.L1066: - mov r0, r5 - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1072: - .align 2 -.L1071: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size ToshibaReadRetrial, .-ToshibaReadRetrial - .align 2 .global FlashSavePhyInfo .type FlashSavePhyInfo, %function FlashSavePhyInfo: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r6, #0 - ldr r5, .L1080 - ldr r7, .L1080+4 - ldr r8, .L1080+8 - ldr r3, [r5, #152] - ldrb r0, [r5, #156] @ zero_extendqisi2 - str r3, [r5, #148] + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + ldr r4, .L1667 + ldr r5, .L1667+4 + ldr r8, .L1667+8 + ldr r3, [r4, #148] + mov r9, r4 + ldrb r0, [r4, #174] @ zero_extendqisi2 + mov r10, r5 + str r3, [r4, #160] bl FlashBchSel mov r1, #0 mov r2, #2048 - ldr r0, [r5, #152] + ldr r0, [r4, #148] bl ftl_memset - ldr r3, [r5, #148] - ldr r1, .L1080+12 + ldr r3, [r4, #160] + ldr r1, .L1667+12 mov r2, #32 - str r8, [r3, #0] - ldr r4, [r5, #148] - ldrb r3, [r7, #3762] @ zero_extendqisi2 - add r0, r4, #16 - strh r3, [r4, #12] @ movhi - ldrb r3, [r7, #853] @ zero_extendqisi2 - strh r3, [r4, #14] @ movhi - ldrb r3, [r7, #3780] @ zero_extendqisi2 - str r3, [r4, #1076] - bl memcpy - add r0, r4, #80 - ldr r1, .L1080+16 + str r8, [r3] + ldr r0, [r4, #160] + ldrb r3, [r5, #1717] @ zero_extendqisi2 + add r0, r0, #16 + strh r3, [r0, #-4] @ movhi + ldrb r3, [r5, #1] @ zero_extendqisi2 + strh r3, [r0, #-2] @ movhi + ldrb r3, [r5, #1732] @ zero_extendqisi2 + str r3, [r0, #1060] + bl ftl_memcpy + ldr r0, [r4, #160] + ldr r1, .L1667+16 mov r2, #8 - bl memcpy - add r0, r4, #96 - ldr r1, .L1080+20 + add r0, r0, #80 + bl ftl_memcpy + ldr r0, [r4, #160] + add r1, r5, #656 mov r2, #32 - bl memcpy - ldr r0, [r5, #148] - ldr r1, .L1080+24 + add r0, r0, #96 + bl ftl_memcpy + ldr r0, [r4, #160] + ldr r1, .L1667+20 mov r2, #32 add r0, r0, #160 - bl memcpy - ldr r4, [r5, #148] - add r1, r7, #896 + bl ftl_memcpy + ldr r0, [r4, #160] + add r1, r5, #44 mov r2, #32 - add r0, r4, #192 - bl memcpy + add r0, r0, #192 + bl ftl_memcpy + ldr r0, [r4, #160] mov r2, #852 - add r0, r4, #224 - mov r1, r7 - bl memcpy - add r0, r4, #12 + ldr r1, .L1667+24 + add r0, r0, #224 + bl ftl_memcpy + ldr r6, [r4, #160] movw r1, #2036 - bl JSHash + add r0, r6, #12 + bl js_hash movw r3, #1592 - str r3, [r4, #4] - ldr r3, [r5, #140] - str r3, [r5, #148] - str r0, [r4, #8] + str r3, [r6, #4] + ldr r3, [r4, #176] + str r3, [r4, #160] + str r0, [r6, #8] mov r0, #0 bl flash_enter_slc_mode - mov r4, r6 -.L1076: - ldr r1, [r7, #856] + mov r6, #0 + mov r7, r6 +.L1660: + ldr r1, [r5, #4] mov r0, #0 mov r2, r0 - mul r1, r1, r4 + mul r1, r1, r7 bl FlashEraseBlock - ldr r1, [r7, #856] + ldr r1, [r5, #4] mov r0, #0 - ldr r2, [r5, #152] + ldr r2, [r4, #148] mov r3, r0 - mul r1, r1, r4 + mul r1, r1, r7 bl FlashProgPage - ldr r1, [r7, #856] + ldr r1, [r5, #4] mov r0, #0 - ldr r2, [r5, #152] + ldr r2, [r4, #148] mov r3, r0 - mul r1, r1, r4 + mul r1, r1, r7 add r1, r1, #1 bl FlashProgPage - ldr r1, [r7, #856] + ldr r1, [r5, #4] mov r0, #0 - ldr r2, [r5, #140] + ldr r2, [r4, #176] mov r3, r0 - mul r1, r1, r4 + mul r1, r1, r7 bl FlashReadRawPage + add r2, r7, #1 cmn r0, #1 - beq .L1074 - ldr sl, [r5, #148] - ldr r3, [sl, #0] + beq .L1658 + ldr fp, [r9, #160] + ldr r3, [fp] cmp r3, r8 - bne .L1074 - add r0, sl, #12 + bne .L1658 + add r0, fp, #12 movw r1, #2036 - bl JSHash - ldr r3, [sl, #8] + str r2, [sp, #4] + bl js_hash + ldr r3, [fp, #8] cmp r3, r0 - bne .L1074 - add r3, r4, #1 - str r3, [r5, #160] - ldr r3, [r7, #856] - add r6, r6, #1 + ldr r2, [sp, #4] + bne .L1658 + ldr r3, [r10, #4] cmp r6, #1 - mul r3, r3, r4 - str r3, [r5, #164] - bhi .L1075 -.L1074: - add r4, r4, #1 - cmp r4, #4 - bne .L1076 -.L1075: + str r2, [r9, #168] + mul r7, r3, r7 + str r7, [r9, #164] + beq .L1661 + mov r6, #1 +.L1658: + cmp r2, #4 + mov r7, r2 + bne .L1660 + b .L1659 +.L1661: + mov r6, #2 +.L1659: mov r0, #0 bl flash_exit_slc_mode - cmp r6, #0 - mvneq r0, #0 - movne r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L1081: + clz r0, r6 + mov r0, r0, lsr #5 + rsb r0, r0, #0 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1668: .align 2 -.L1080: +.L1667: .word .LANCHOR2 .word .LANCHOR0 .word 1312902724 - .word .LANCHOR0+2980 - .word .LANCHOR0+3764 - .word .LANCHOR0+3588 - .word .LANCHOR1+2988 + .word .LANCHOR0+1556 + .word .LANCHOR0+1720 + .word .LANCHOR1+472 + .word .LANCHOR0+698 .fnend .size FlashSavePhyInfo, .-FlashSavePhyInfo .align 2 @@ -9026,705 +9981,949 @@ FlashReadIdbDataRaw: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} + ldr r3, .L1690 + stmfd sp!, {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 - mov r2, #4 - mov sl, r0 - ldr r1, .L1093 - add r0, sp, #12 - bl memcpy - ldr r3, .L1093+4 - ldrb r2, [r3, #3836] @ zero_extendqisi2 - str r2, [sp, #4] - ldr r2, [r3, #3776] - ldr r3, .L1093+8 - cmp r2, r3 - bne .L1083 + ldr r2, [r3] + mov r9, r0 + ldr r4, .L1690+4 + str r3, [sp] + str r2, [sp, #12] + ldr r2, .L1690+8 + ldrb r10, [r4, #1792] @ zero_extendqisi2 + ldr r0, [r2] @ unaligned + ldr r2, [r4, #1728] + cmp r2, #0 + str r0, [sp, #8] @ unaligned + beq .L1670 mov r0, #0 bl flash_enter_slc_mode -.L1083: - ldr r7, .L1093+4 - mov r0, sl +.L1670: + mov r0, r9 mov r1, #0 mov r2, #2048 - bl ftl_memset mvn r8, #0 - mov r4, #2 - ldr r9, .L1093+12 - mov fp, r7 - b .L1084 -.L1091: - mov r6, #0 -.L1086: - add r3, sp, #12 - ldr r5, .L1093+12 - ldrb r0, [r3, r6] @ zero_extendqisi2 + bl ftl_memset + mov r5, #2 +.L1671: + ldrb r3, [r4, #1] @ zero_extendqisi2 + cmp r5, r3 + bcs .L1675 + ldr fp, .L1690+12 + mov r7, #0 +.L1673: + add r3, sp, #8 + ldr r6, .L1690+12 + ldrb ip, [r3, r7] @ zero_extendqisi2 + mov r0, ip + str ip, [sp, #4] bl FlashBchSel - ldr r1, [r7, #856] + ldr r1, [r4, #4] mov r0, #0 - ldr r2, [r9, #152] + ldr r2, [fp, #148] mov r3, r0 - mul r1, r1, r4 + mul r1, r1, r5 bl FlashReadRawPage cmn r0, #1 - bne .L1085 - add r6, r6, #1 - cmp r6, #4 - bne .L1086 - b .L1087 -.L1085: - ldr r3, [r5, #152] - ldr r2, [r3, #0] - ldr r3, .L1093+16 - cmp r2, r3 - bne .L1087 - add r3, sp, #16 - ldr r0, .L1093+20 - add r6, r3, r6 - ldrb r1, [r6, #-4] @ zero_extendqisi2 + ldr ip, [sp, #4] + bne .L1672 + add r7, r7, #1 + cmp r7, #4 + bne .L1673 + b .L1674 +.L1672: + ldr r3, [r6, #148] + ldr r2, .L1690+16 + ldr r3, [r3] + cmp r3, r2 + bne .L1674 + mov r1, ip + ldr r0, .L1690+20 bl printk - mov r0, sl - ldr r1, [r5, #152] mov r2, #2048 - bl memcpy - ldr r3, [r5, #152] + mov r0, r9 + ldr r1, [r6, #148] + bl ftl_memcpy + ldr r3, [r6, #148] + ldr r2, .L1690+4 ldr r3, [r3, #512] - strb r3, [fp, #853] - ldr r3, [r5, #160] - cmp r3, r4 - bls .L1090 - str r4, [r5, #160] + strb r3, [r2, #1] + ldr r3, [r6, #168] + cmp r3, r5 + bls .L1679 + str r5, [r6, #168] bl FlashSavePhyInfo mov r8, #0 -.L1087: - add r4, r4, #1 -.L1084: - ldrb r3, [r7, #853] @ zero_extendqisi2 - cmp r4, r3 - bcc .L1091 - b .L1088 -.L1090: +.L1674: + add r5, r5, #1 + b .L1671 +.L1679: mov r8, #0 -.L1088: - ldr r0, [sp, #4] +.L1675: + mov r0, r10 bl FlashBchSel - ldr r3, .L1093+4 - ldr r2, [r3, #3776] - ldr r3, .L1093+8 - cmp r2, r3 - bne .L1089 + ldr r3, [r4, #1728] + cmp r3, #0 + beq .L1676 mov r0, #0 bl flash_exit_slc_mode -.L1089: +.L1676: + ldr r3, [sp] mov r0, r8 + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L1678 + bl __stack_chk_fail +.L1678: add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1094: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1691: .align 2 -.L1093: - .word .LANCHOR3+11 +.L1690: + .word __stack_chk_guard .word .LANCHOR0 - .word 1446522928 + .word .LANCHOR3+11 .word .LANCHOR2 .word -52655045 - .word .LC92 + .word .LC95 .fnend .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 2 - .global FlashLoadPhyInfo - .type FlashLoadPhyInfo, %function -FlashLoadPhyInfo: + .global FlashInit + .type FlashInit, %function +FlashInit: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r2, #4 - ldr r1, .L1106 - add r0, sp, #4 - bl memcpy - ldr r5, .L1106+4 - ldr r2, .L1106+8 - movw r3, #2998 - mov r4, #0 - mov r8, #4 - mov r0, r4 - str r4, [r5, #164] - ldrh r9, [r2, r3] - mvn r6, #0 - ldr r3, [r5, #152] - ldr fp, .L1106+12 - str r3, [r5, #148] - bl flash_enter_slc_mode - b .L1096 -.L1098: - add r3, sp, #4 - ldrb r0, [r3, r7] @ zero_extendqisi2 - bl FlashBchSel - mov r0, #0 - mov r1, r4 - ldr r2, [r5, #152] - mov r3, r0 - bl FlashReadRawPage - cmn r0, #1 - bne .L1097 - mov r0, #0 - mov r1, sl - ldr r2, [r5, #152] - mov r3, r0 - bl FlashReadRawPage - cmn r0, #1 - bne .L1097 - add r7, r7, #1 - cmp r7, #4 - beq .L1099 - b .L1098 -.L1097: - ldr r7, [r5, #148] - ldr r3, [r7, #0] - cmp r3, fp - bne .L1099 - cmp r6, #0 - bne .L1100 - ldr r2, .L1106+8 - movw r3, #2998 - mov r0, r4 - ldrh r1, [r2, r3] - bl __aeabi_uidiv - ldr r3, .L1106+4 - add r0, r0, #1 - str r0, [r3, #160] - mov r0, r6 - b .L1105 -.L1100: - add r0, r7, #12 - movw r1, #2036 - bl JSHash - ldr r3, [r7, #8] - cmp r3, r0 - bne .L1099 - ldr r6, .L1106+16 - add r1, r7, #160 - mov r2, #32 - ldr r0, .L1106+20 - bl memcpy - add r0, r6, #896 - add r1, r7, #192 - mov r2, #32 - bl memcpy - mov r0, r6 - add r1, r7, #224 - mov r2, #852 - bl memcpy - ldr r3, [r7, #1076] - ldr r2, .L1106+8 - mov r0, r4 - str r4, [r5, #164] - strb r3, [r6, #3780] - movw r3, #2998 - ldrh r1, [r2, r3] - mov r6, #0 - bl __aeabi_uidiv - add r0, r0, #1 - str r0, [r5, #160] - cmp r0, #1 - moveq r3, #2 - streq r3, [r5, #160] - ldrh r3, [r7, #14] - strb r3, [r5, #168] -.L1099: - subs r8, r8, #1 - add r4, r4, r9 - beq .L1103 -.L1096: - add sl, r4, #1 - mov r7, #0 - b .L1098 -.L1103: - mov r0, r8 -.L1105: - bl flash_exit_slc_mode - mov r0, r6 - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1107: - .align 2 -.L1106: - .word .LANCHOR3+11 - .word .LANCHOR2 - .word .LANCHOR1 - .word 1312902724 - .word .LANCHOR0 - .word .LANCHOR1+2988 - .fnend - .size FlashLoadPhyInfo, .-FlashLoadPhyInfo - .align 2 - .global FlashDdrTunningRead - .type FlashDdrTunningRead, %function -FlashDdrTunningRead: - .fnstart - @ args = 4, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov sl, r3 - ldr r4, .L1129 + stmfd sp!, {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 fp, r0 - mov r9, r2 - str r1, [sp, #0] - ldr r3, [r4, #3012] - ldr r7, [r4, #3788] - ldr r3, [r3, #304] - cmp r7, #7 - movhi r7, #12 - movls r7, #6 - str r3, [sp, #12] - ldr r3, [sp, #56] - cmp r3, #0 - moveq r8, #1024 - beq .L1110 - mov r0, #1 - bl FlashSetInterfaceMode - mov r0, #1 - bl NandcSetMode + mov r0, #32768 + bl ftl_malloc + ldr r8, .L1787 + ldr r4, .L1787+4 + mov r7, #0 + add r9, r4, #12 + str r0, [r8, #148] + mov r0, #32768 + bl ftl_malloc + str r0, [r8, #176] + mov r0, #4096 + bl ftl_malloc + str r0, [r8, #180] + mov r0, #32768 + bl ftl_malloc + str r0, [r8, #184] + mov r0, #4096 + bl ftl_malloc + mov r3, #50 + str r7, [r8, #168] + strb r3, [r4, #1] + strb r3, [r8, #172] + mov r3, #128 + strb r7, [r4, #1732] + str r3, [r4, #4] + mov r3, #60 + str r7, [r8, #152] + strb r7, [r4] + strb r7, [r8, #192] + strb r3, [r8, #174] + str r0, [r8, #188] + mov r0, r5 + bl NandcInit + ldr r5, .L1787+8 +.L1698: + add r3, r9, r7, asl #3 + uxtb fp, r7 + ldr r6, [r9, r7, asl #3] + ldrb r10, [r3, #4] @ zero_extendqisi2 mov r0, fp bl FlashReset - ldr r1, [sp, #0] - mov r2, r9 - mov r3, sl mov r0, fp - bl FlashReadRawPage - mov r8, r0 - ldrb r0, [r4, #3772] @ zero_extendqisi2 - bl FlashSetInterfaceMode - ldrb r0, [r4, #3772] @ zero_extendqisi2 - bl NandcSetMode - cmn r8, #1 - beq .L1111 - ldr r0, .L1129+4 - mov r2, r8 - ldr r1, [sp, #0] + bl NandcFlashCs + mov r3, #144 + add r6, r6, r10, asl #8 + mov r0, #200 + mov r10, #0 + str r3, [r6, #2056] + str r10, [r6, #2052] + bl NandcDelayns + ldr r2, [r6, #2048] + uxtb r2, r2 + strb r2, [r5] + ldr r1, [r6, #2048] + 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 .L1693 + mov r2, #239 + mov r0, #200 + str r2, [r6, #2056] + mov r2, #1 + str r2, [r6, #2052] + bl NandcDelayns + mov r2, #4 + str r2, [r6, #2048] + str r10, [r6, #2048] + str r10, [r6, #2048] + str r10, [r6, #2048] +.L1693: + mov r0, fp + bl NandcFlashDeCs + ldrb r2, [r5] @ zero_extendqisi2 + sub r3, r2, #1 + uxtb r3, r3 + cmp r3, #253 + bhi .L1694 + ldrb r1, [r5, #2] @ zero_extendqisi2 + ldrb r3, [r5, #1] @ zero_extendqisi2 + ldr r0, .L1787+12 + str r1, [sp] + ldrb r1, [r5, #3] @ zero_extendqisi2 + str r1, [sp, #4] + ldrb r1, [r5, #4] @ zero_extendqisi2 + str r1, [sp, #8] + ldrb r1, [r5, #5] @ zero_extendqisi2 + str r1, [sp, #12] + add r1, r7, #1 bl printk - cmp r8, #9 - bhi .L1112 - add r4, r4, fp, asl #3 - ldr r3, [r4, #864] - ldr r2, [r3, #3840] - ldr r2, [r3, #0] - orr r2, r2, #131072 - str r2, [r3, #0] -.L1112: - ldr r3, .L1129+8 - ldr r2, [r3, #172] - add r2, r2, #1 - str r2, [r3, #172] - cmp r2, #2048 - movcs sl, #0 - strcs sl, [r3, #172] - movcs r9, sl - bcc .L1111 -.L1110: - mov r4, #0 - str fp, [sp, #4] - mov r5, r4 - mvn r6, #0 - mov fp, r4 - str r4, [sp, #8] -.L1117: - uxtb r0, r7 - bl NandcSetDdrPara - mov r3, sl - ldr r0, [sp, #4] - mov r2, r9 - ldr r1, [sp, #0] - bl FlashReadRawPage - add r3, r8, #1 - cmp r0, r3 - bhi .L1113 - cmp r0, #2 - bhi .L1123 - add r5, r5, #1 - cmp r5, #9 - bls .L1123 - mov ip, fp - rsb r4, r5, r7 - ldr fp, [sp, #4] - mov r8, r0 - mov r6, #0 - b .L1115 -.L1113: - cmp fp, r5 - bcs .L1124 - cmp r5, #7 - rsb r3, r5, r4 - str r3, [sp, #8] - bhi .L1128 - mov fp, r5 - b .L1124 -.L1123: - mov r6, #0 - mov r4, r7 - mov r8, r0 - mov sl, r6 - mov r9, r6 - b .L1114 -.L1124: - mov r5, #0 -.L1114: - add r7, r7, #2 - cmp r7, #69 - bls .L1117 - mov ip, fp - ldr fp, [sp, #4] -.L1115: - cmp ip, r5 - bcc .L1118 - b .L1116 -.L1128: - ldr fp, [sp, #4] -.L1116: - ldr r4, [sp, #8] -.L1118: - cmp r4, #0 - beq .L1119 - ldr r0, .L1129+12 - mov r1, r4 - bl printk - uxtb r0, r4 - bl NandcSetDdrPara -.L1119: - cmn r6, #1 - bne .L1111 - ldr r0, .L1129+16 - mov r1, fp - ldr r2, [sp, #0] - bl printk - ldr r3, [sp, #56] - cmp r3, #0 - moveq r8, r6 - beq .L1111 - ldr r3, [sp, #12] - ubfx r0, r3, #8, #8 - bl NandcSetDdrPara -.L1111: - mov r0, r8 - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1130: - .align 2 -.L1129: - .word .LANCHOR0 - .word .LC93 - .word .LANCHOR2 - .word .LC94 - .word .LC95 - .fnend - .size FlashDdrTunningRead, .-FlashDdrTunningRead - .align 2 - .global FlashDdrParaScan - .type FlashDdrParaScan, %function -FlashDdrParaScan: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r0, r1, r4, r5, r6, r7, r8, lr} - mov r7, r0 - ldr r5, .L1135 - mov r4, #0 - mov r6, r1 - ldrb r0, [r5, #3772] @ zero_extendqisi2 - bl FlashSetInterfaceMode - ldrb r0, [r5, #3772] @ zero_extendqisi2 - bl NandcSetMode - mov r1, r6 - mov r2, r4 - mov r3, r4 - mov r0, r7 - str r4, [sp, #0] - bl FlashDdrTunningRead - mov r1, r6 - mov r2, r4 - mov r3, r4 - mov r8, r0 - mov r0, r7 - bl FlashReadRawPage - cmn r0, #1 - beq .L1132 - cmn r8, #1 - bne .L1133 -.L1132: - ldrb r3, [r5, #3772] @ zero_extendqisi2 - tst r3, #1 - beq .L1133 - mov r0, #1 - bl FlashSetInterfaceMode - mov r0, #1 - bl NandcSetMode - ldr r3, .L1135 - mov r2, #0 - strb r2, [r3, #3780] - b .L1134 -.L1133: - mov r3, #1 - strb r3, [r5, #3780] -.L1134: - mov r0, #0 - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, pc} -.L1136: - .align 2 -.L1135: - .word .LANCHOR0 - .fnend - .size FlashDdrParaScan, .-FlashDdrParaScan - .align 2 - .global FlashReadPage - .type FlashReadPage, %function -FlashReadPage: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - .save {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - mov r5, r0 - mov r6, r1 - mov r8, r2 - mov sl, r3 - bl FlashReadRawPage - cmn r0, #1 - mov r4, r0 - bne .L1138 - ldr r7, .L1143 - ldrb r9, [r7, #860] @ zero_extendqisi2 - cmp r9, #0 - beq .L1139 +.L1694: + cmp r7, #0 + bne .L1695 + ldrb r3, [r4, #1556] @ zero_extendqisi2 + sub r3, r3, #1 + uxtb r3, r3 + cmp r3, #253 + bhi .L1744 + ldr r3, .L1787+4 + ldrb r3, [r3, #1557] @ zero_extendqisi2 + cmp r3, #255 + beq .L1744 +.L1695: + ldrb r3, [r5] @ zero_extendqisi2 + add r7, r7, #1 + add r5, r5, #8 + cmp r3, #181 + moveq r3, #44 + streqb r3, [r5, #-8] + cmp r7, #4 + bne .L1698 + ldrb r3, [r4, #1556] @ zero_extendqisi2 + cmp r3, #173 + beq .L1699 + ldr r3, .L1787+4 + ldr r0, [r3, #1736] + bl NandcSetDdrMode +.L1699: + mov r2, #852 + ldr r0, .L1787+16 + mov r1, #0 + ldr r5, .L1787+20 + bl ftl_memset + ldr r6, [r4, #1744] + ldr r3, .L1787+24 + cmp r6, r5 + ldrb r0, [r4, #1557] @ zero_extendqisi2 + str r3, [r4, #692] mov r3, #0 - mov r0, r5 - strb r3, [r7, #860] - mov r1, r6 - mov r2, r8 - mov r3, sl - bl FlashReadRawPage - strb r9, [r7, #860] - cmn r0, #1 - movne r4, r0 - bne .L1138 -.L1139: - ldr r7, .L1143 - ldrb r3, [r7, #3780] @ zero_extendqisi2 - cmp r3, #0 - beq .L1138 - ldr r3, [r7, #3012] - mov r0, r5 - mov r1, r6 - mov r2, r8 - ldr r9, [r3, #304] - mov r3, #1 - str r3, [sp, #0] - mov r3, sl - bl FlashDdrTunningRead - cmn r0, #1 - mov r4, r0 - beq .L1140 - ldrb r3, [r7, #3836] @ zero_extendqisi2 - cmp r0, r3, lsr #1 - bls .L1138 -.L1140: - ubfx r0, r9, #8, #8 - bl NandcSetDdrPara -.L1138: - ldr r7, .L1143+4 - ldr ip, [r7, #176] - adds r3, ip, #0 - movne r3, #1 - cmn r4, #1 + strb r3, [r4, #8] + sub ip, r0, #218 + ldreq r3, .L1787+4 + clz ip, ip + moveq r2, #1 + mov ip, ip, lsr #5 + streq r2, [r3, #1728] + cmp r0, #161 + cmpne r0, #241 + and r2, r0, #253 + moveq r3, #1 movne r3, #0 + orr r3, ip, r3 + cmp r2, #209 + orreq r3, r3, #1 cmp r3, #0 - beq .L1141 - mov r1, r6 - mov r2, r8 - mov r3, sl - mov r0, r5 - blx ip - mov r2, r5 - mov r3, r6 - mov r4, r0 - ldr r0, .L1143+8 - mov r1, r4 + bne .L1701 + cmp r0, #220 + bne .L1702 + ldr r3, .L1787+4 + ldrb r3, [r3, #1559] @ zero_extendqisi2 + cmp r3, #149 + bne .L1702 +.L1701: + ldrb lr, [r4, #1556] @ zero_extendqisi2 + mov r3, #16 + strb r3, [r4, #1] + mov r1, #1 + strb r3, [r8, #174] + cmp lr, #152 + ldr r3, .L1787+28 + strb r1, [r4] + ldr r2, .L1787 + strb lr, [r3, #3257] + strb r0, [r3, #3258] + bne .L1704 + ldr r7, .L1787+4 + movw lr, #1560 + ldrsb lr, [r7, lr] + cmp lr, #0 + strltb r1, [r2, #192] + movge r1, #24 + strgeb r1, [r2, #174] +.L1704: + movw r2, #2049 + cmp r6, r5 + cmpne r6, r2 + moveq r2, #16 + streqb r2, [r8, #174] + cmp ip, #0 + ldrne r2, .L1787+32 + movne r1, #2048 + strneh r1, [r2, #14] @ movhi + mvnne r2, #37 + bne .L1781 +.L1708: + cmp r0, #220 + bne .L1710 + ldr r2, .L1787+32 + mov r1, #4096 + strh r1, [r2, #14] @ movhi + mvn r2, #35 +.L1781: + strb r2, [r3, #3258] + b .L1709 +.L1710: + cmp r0, #211 + ldreq r2, .L1787+32 + moveq r1, #4096 + streqh r1, [r2, #14] @ movhi + moveq r2, #2 + streqb r2, [r3, #3269] +.L1709: + ldr r1, .L1787+36 + mov r2, #32 + ldr r0, .L1787+40 + bl ftl_memcpy + ldr r0, .L1787+24 + mov r2, #32 + add r1, r0, #2784 + bl ftl_memcpy +.L1702: + ldrb r3, [r4] @ zero_extendqisi2 + ldr r6, .L1787+4 + cmp r3, #0 + bne .L1711 + bl FlashLoadPhyInfoInRam + cmp r0, #0 + bne .L1713 + ldr r3, [r6, #692] + ldrh r3, [r3, #16] + mov r3, r3, lsr #8 + tst r3, #1 + and r0, r3, #7 + strb r0, [r6, #1716] + bne .L1713 + mov r3, #1 + strb r3, [r6, #1732] + bl FlashSetInterfaceMode + ldrb r0, [r6, #1716] @ zero_extendqisi2 + bl NandcSetMode +.L1713: + ldr r3, [r4, #692] + ldr r6, .L1787+4 + ldrb r3, [r3, #26] @ zero_extendqisi2 + strb r3, [r4, #140] + bl FlashLoadPhyInfo + cmp r0, #0 + beq .L1711 + ldr r3, [r6, #1736] + cmp r3, #0 + beq .L1716 + mov r0, #1 + bl FlashSetInterfaceMode + mov r0, #1 + b .L1782 +.L1716: + ldrb r0, [r6, #1716] @ zero_extendqisi2 + bl FlashSetInterfaceMode + ldrb r0, [r6, #1716] @ zero_extendqisi2 +.L1782: + bl NandcSetMode + bl FlashLoadPhyInfo + cmp r0, #0 + beq .L1711 + mov r0, #1 + ldr r6, .L1787+4 + bl FlashSetInterfaceMode + mov r0, #1 + bl NandcSetMode + ldr r3, [r4, #692] + ldr r0, .L1787+44 + ldrh r1, [r3, #14] bl printk - cmn r4, #1 - bne .L1141 - ldr r3, .L1143 - ldrb r3, [r3, #928] @ zero_extendqisi2 + bl FlashLoadPhyInfoInRam + cmn r0, #1 + beq .L1757 + bl FlashDieInfoInit + ldr r3, [r6, #692] + ldrb r0, [r3, #19] @ zero_extendqisi2 + bl FlashGetReadRetryDefault + ldr r3, .L1787+48 + ldr r2, [r6, #692] + ldrh r3, [r3, #-14] + ldrb r1, [r2, #9] @ zero_extendqisi2 + add r3, r3, #4080 + add r3, r3, #15 + cmp r1, r3, asr #12 + ldrh r3, [r2, #14] + blt .L1718 + add r0, r3, #255 + cmp r1, r0, asr #8 + bge .L1719 +.L1718: + bic r3, r3, #255 + strh r3, [r2, #14] @ movhi +.L1719: + ldrb r3, [r4, #1716] @ zero_extendqisi2 + tst r3, #6 + beq .L1720 + bl FlashSavePhyInfo + mov r0, #0 + ldr r1, [r8, #164] + bl FlashDdrParaScan +.L1720: + bl FlashSavePhyInfo +.L1711: + ldr r2, [r4, #692] + ldr r7, .L1787+4 + ldr r6, .L1787 + ldrb r3, [r2, #26] @ zero_extendqisi2 + ldrh r0, [r2, #10] + ldrb r9, [r2, #18] @ zero_extendqisi2 + strb r3, [r4, #140] + ldrh r3, [r2, #16] + ubfx r1, r3, #7, #1 + strb r1, [r4, #8] + ubfx r1, r3, #3, #1 + strb r1, [r8, #193] + ubfx r1, r3, #4, #1 + ubfx r3, r3, #8, #3 + strb r1, [r4, #1793] + strb r3, [r4, #1716] + mov r3, #0 + ldrb r1, [r2, #12] @ zero_extendqisi2 + str r3, [r8, #156] + bl __aeabi_idiv + mov r1, r0 + mov r0, r9 + bl BuildFlashLsbPageTable + bl FlashDieInfoInit + ldr r3, [r4, #692] + ldrh r2, [r3, #16] + tst r2, #64 + beq .L1722 + ldrb r0, [r3, #19] @ zero_extendqisi2 + ldrb r3, [r7, #699] @ zero_extendqisi2 + strb r0, [r7, #696] + strb r3, [r7, #697] + ldrb r3, [r7, #700] @ zero_extendqisi2 + strb r3, [r6, #173] + sub r3, r0, #1 + cmp r3, #7 + bhi .L1723 + ldr r3, .L1787+52 + sub r2, r0, #8 + clz r2, r2 + str r3, [r6, #156] + sub r3, r0, #5 + cmp r0, #8 + cmpne r3, #1 + mov r2, r2, lsr #5 + ldr r6, .L1787+56 + movls r3, #1 + strls r3, [r7, #1784] + cmp r0, #7 + beq .L1726 + sub r3, r6, #8 + cmp r2, #0 + moveq r6, r3 +.L1726: + sub r2, r6, #1 + add r6, r6, #31 + mov r3, #0 +.L1727: + ldrsb r1, [r2, #1]! + cmp r1, #0 + addeq r3, r3, #1 + cmp r2, r6 + bne .L1727 + cmp r3, #27 + bls .L1722 + bl FlashGetReadRetryDefault + bl FlashSavePhyInfo + b .L1722 +.L1723: + sub r3, r0, #17 + cmp r3, #2 + bhi .L1729 + ldr r3, .L1787+60 + cmp r0, #19 + str r3, [r6, #156] + moveq r3, #15 + bne .L1786 + b .L1784 +.L1729: + sub r3, r0, #65 + cmp r0, #33 + cmpne r3, #1 + bhi .L1731 + ldr r3, .L1787+64 + str r3, [r6, #156] + mov r3, #4 + strb r3, [r7, #697] +.L1786: + mov r3, #7 +.L1784: + strb r3, [r6, #173] + b .L1722 +.L1731: + sub r3, r0, #67 + sub r2, r0, #34 + cmp r3, #1 + movhi r1, #0 + movls r1, #1 + cmp r3, #1 + cmphi r2, #1 + bhi .L1732 + ldr r3, .L1787+64 + cmp r0, #68 + cmpne r0, #35 + str r3, [r6, #156] + movne r3, #7 + moveq r3, #17 + cmp r1, #0 + strb r3, [r6, #173] + movne r3, #4 + moveq r3, #5 + strb r3, [r4, #697] + b .L1722 +.L1732: + cmp r0, #49 + ldreq r3, .L1787+68 + streq r3, [r6, #156] +.L1722: + ldr r2, [r4, #1744] + ldr r3, .L1787+4 + cmp r2, r5 + bne .L1736 + ldrb r1, [r3, #140] @ zero_extendqisi2 + cmp r1, #0 + ldrne r3, [r3, #692] + movne r1, #0 + strneb r1, [r3, #18] +.L1736: + ldrb r1, [r4, #1556] @ zero_extendqisi2 + ldr r3, .L1787+4 + cmp r1, #44 + bne .L1737 + ldrb r1, [r3, #1732] @ zero_extendqisi2 + cmp r1, #0 + beq .L1737 + cmp r2, r5 + bne .L1738 + ldrb r3, [r3, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L1141 - mov r0, r5 + bne .L1737 +.L1738: + mov r0, #1 + mov r3, #0 + strb r3, [r4, #1732] + bl FlashSetInterfaceMode + mov r0, #1 + bl NandcSetMode +.L1737: + ldrb r3, [r4, #1716] @ zero_extendqisi2 + tst r3, #6 + beq .L1739 + ldr r2, .L1787+4 + ldrb r2, [r2, #1732] @ zero_extendqisi2 + cmp r2, #0 + bne .L1740 + tst r3, #1 + bne .L1739 +.L1740: + mov r0, #0 bl flash_enter_slc_mode - ldr ip, [r7, #176] - mov r0, r5 - mov r1, r6 - mov r2, r8 - mov r3, sl - blx ip - mov r4, r0 - mov r0, r5 + mov r0, #0 + ldr r1, [r8, #164] + bl FlashDdrParaScan + mov r0, #0 bl flash_exit_slc_mode -.L1141: - mov r0, r4 - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc} -.L1144: +.L1739: + ldr r3, [r4, #692] + mov r8, #16 + ldr r6, .L1787+4 + ldrb r0, [r3, #20] @ zero_extendqisi2 + bl FlashBchSel + ldr r0, .L1787+72 + bl FlashReadIdbDataRaw + ldr r0, .L1787+76 + strb r8, [r4, #1] + bl FlashTimingCfg + ldr r5, [r4, #692] + ldrb r3, [r5, #12] @ zero_extendqisi2 + ldrh r7, [r5, #14] + strh r3, [r4, #120] @ movhi + ldrb r3, [r5, #7] @ zero_extendqisi2 + str r3, [r4, #116] + ldr r3, [r4, #1556] + str r3, [r4, #112] + ldrb r3, [r4, #1717] @ zero_extendqisi2 + strh r3, [r4, #122] @ movhi + ldrb r3, [r5, #13] @ zero_extendqisi2 + strh r7, [r4, #126] @ movhi + strh r3, [r4, #124] @ movhi + ldrh r3, [r5, #10] + strh r3, [r4, #128] @ movhi + ldrb r1, [r5, #12] @ zero_extendqisi2 + ldrh r0, [r5, #10] + bl __aeabi_idiv + strh r0, [r4, #130] @ movhi + ldrb r2, [r5, #9] @ zero_extendqisi2 + strh r2, [r4, #132] @ movhi + ldrb r1, [r5, #9] @ zero_extendqisi2 + ldrh r3, [r5, #10] + smulbb r3, r1, r3 + mov r1, #512 + strh r1, [r4, #136] @ movhi + ldrb r1, [r4, #1] @ zero_extendqisi2 + strh r1, [r4, #138] @ movhi + uxth r3, r3 + ldrb r1, [r4] @ zero_extendqisi2 + strh r3, [r4, #134] @ movhi + cmp r1, #1 + bne .L1742 + mov r3, r3, asl #1 + mov r1, r7, lsr #1 + mov r2, r2, asl #1 + strh r3, [r6, #134] @ movhi + strb r8, [r6, #1] + mov r3, #8 + strh r1, [r6, #126] @ movhi + strh r2, [r6, #132] @ movhi + strh r3, [r6, #138] @ movhi +.L1742: + ldrb r0, [r5, #20] @ zero_extendqisi2 + bl FlashBchSel + bl ftl_flash_suspend + mov r0, #0 + b .L1757 +.L1744: + mvn r0, #1 +.L1757: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1788: .align 2 -.L1143: +.L1787: + .word .LANCHOR2 + .word .LANCHOR0 + .word .LANCHOR0+1556 + .word .LC96 + .word .LANCHOR0+698 + .word 1446522928 + .word .LANCHOR1+472 + .word .LANCHOR1 + .word .LANCHOR1+3256 + .word .LANCHOR1+3132 + .word .LANCHOR0+44 + .word .LC97 + .word .LANCHOR2-2096 + .word HynixReadRetrial + .word .LANCHOR0+726 + .word MicronReadRetrial + .word ToshibaReadRetrial + .word SamsungReadRetrial + .word .LANCHOR2-1904 + .word 150000 + .fnend + .size FlashInit, .-FlashInit + .align 2 + .global FlashPageProgMsbFFData + .type FlashPageProgMsbFFData, %function +FlashPageProgMsbFFData: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r4, r2 + ldr r3, .L1806 + mov r8, r0 + mov r9, r1 + ldr r2, [r3, #692] + mov r6, r3 + ldrb r7, [r2, #19] @ zero_extendqisi2 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L1790 + ldr r3, [r3, #1728] + cmp r3, #0 + ldmnefd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1790: + sub r3, r7, #5 + cmp r7, #68 + cmpne r3, #3 + bls .L1791 + sub r3, r7, #19 + tst r3, #239 + ldmnefd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1791: + ldr r5, .L1806+4 + movw fp, #65535 + sub r10, r5, #3136 +.L1793: + ldr r3, [r6, #692] + ldrh r3, [r3, #10] + cmp r3, r4 + bls .L1805 + mov r3, r4, asl #1 + ldrh r3, [r10, r3] + cmp r3, fp + ldmnefd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} + cmp r7, #8 + mov r2, #32768 + ldr r0, [r5, #176] + moveq r1, #0 + movne r1, #255 + bl ftl_memset + ldr r3, .L1806+4 + add r1, r4, r9 + add r4, r4, #1 + mov r0, r8 + ldr r2, [r3, #176] + uxth r4, r4 + mov r3, r2 + bl FlashProgPage + b .L1793 +.L1805: + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1807: + .align 2 +.L1806: .word .LANCHOR0 .word .LANCHOR2 - .word .LC96 .fnend - .size FlashReadPage, .-FlashReadPage + .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .align 2 .global FlashReadSlc2KPages .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1158 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r8, r1 - .pad #28 - sub sp, sp, #28 - mov fp, r2 - ldrb sl, [r3, #2997] @ zero_extendqisi2 + ldr r3, .L1860 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #44 + sub sp, sp, #44 + ldr r9, .L1860+4 mov r4, r0 - mov r7, #0 - ldr r6, .L1158+4 - b .L1146 -.L1155: - rsb r3, r7, r8 - add r2, sp, #20 + str r2, [sp, #16] + mov r8, #0 + ldr r2, [r3] + mov r10, r9 + str r1, [sp, #12] + str r3, [sp, #20] + str r2, [sp, #36] + ldr r2, .L1860+8 + ldrb r2, [r2, #481] @ zero_extendqisi2 + str r2, [sp, #8] +.L1809: + ldr r3, [sp, #12] + cmp r8, r3 + beq .L1859 + ldr r3, [sp, #12] + add r2, sp, #32 mov r0, r4 - mov r1, fp + ldr r1, [sp, #16] + rsb r3, r8, r3 uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #16 + str r3, [sp] + add r3, sp, #28 bl LogAddr2PhyAddr - ldr r3, [sp, #16] - ldrb r2, [r6, #3762] @ zero_extendqisi2 + ldrb r2, [r9, #1717] @ zero_extendqisi2 + ldr r3, [sp, #28] cmp r3, r2 mvncs r3, #0 - strcs r3, [r4, #0] - bcs .L1148 - add r3, r6, r3 - ldrb r5, [r3, #3764] @ zero_extendqisi2 + strcs r3, [r4] + bcs .L1811 + add r3, r9, r3 + mov r7, #0 + ldrb r5, [r3, #1720] @ zero_extendqisi2 mov r0, r5 bl NandcWaitFlashReady mov r0, r5 bl NandcFlashCs - ldr r1, [sp, #20] +.L1812: + ldr r1, [sp, #32] mov r0, r5 bl FlashReadCmd mov r0, r5 bl NandcWaitFlashReady ldr r3, [r4, #12] - mov r2, sl - mov r1, #0 mov r0, r5 - str r3, [sp, #0] + mov r1, #0 + str r3, [sp] + ldr r2, [sp, #8] ldr r3, [r4, #8] bl NandcXferData - ldr r3, [sp, #20] - ldr r1, [r6, #856] - add r1, r1, r3 - mov r9, r0 + ldr r3, .L1860+12 + ldrb r3, [r3, #192] @ zero_extendqisi2 + cmp r3, #0 + mov r6, r0 + beq .L1813 mov r0, r5 + bl flash_read_ecc + cmp r0, #5 + movhi r6, #256 +.L1813: + cmp r7, #9 + cmnls r6, #1 + moveq r3, #1 + movne r3, #0 + addeq r7, r7, #1 + beq .L1812 +.L1814: + cmp r7, #0 + mov r7, r3 + movne r6, #256 +.L1816: + ldr r3, [sp, #32] + mov r0, r5 + ldr r1, [r10, #4] + add r1, r1, r3 bl FlashReadCmd + mov r0, r5 + bl NandcWaitFlashReady ldr r3, [r4, #8] ldr r2, [r4, #12] - mov r1, #0 - cmp r3, #0 mov r0, r5 + cmp r3, #0 + mov r1, #0 addne r3, r3, #2048 cmp r2, #0 addne r2, r2, #8 - str r2, [sp, #0] - mov r2, sl + str r2, [sp] + ldr r2, [sp, #8] bl NandcXferData - mov r3, r0 + ldr r3, .L1860+12 + ldrb r2, [r3, #192] @ zero_extendqisi2 + cmp r2, #0 + mov fp, r0 + beq .L1819 mov r0, r5 - str r3, [sp, #12] + bl flash_read_ecc + cmp r0, #5 + movhi fp, #256 +.L1819: + cmp r7, #9 + cmnls fp, #1 + addeq r7, r7, #1 + beq .L1816 +.L1820: + cmp r7, #0 + mov r0, r5 + movne fp, #256 bl NandcFlashDeCs - ldr r3, [sp, #12] - cmp r3, r9 - movcs r9, r3 - ldrb r3, [r6, #3836] @ zero_extendqisi2 - adds r2, r9, #1 - add r3, r3, r3, asl #1 - movne r2, #1 - cmp r9, r3, lsr #2 - movls r3, #0 - andhi r3, r2, #1 - cmp r3, #0 - movne r9, #256 - cmp r9, #256 - cmnne r9, #1 - str r9, [r4, #0] + ldrb r2, [r10, #1792] @ zero_extendqisi2 + cmp fp, r6 + movcs r3, fp + movcc r3, r6 + add r2, r2, r2, asl #1 + cmp r3, r2, asr #2 + bls .L1822 + cmn r3, #1 + movne r3, #256 +.L1822: + cmp r3, #256 + cmnne r3, #1 movne r3, #0 - strne r3, [r4, #0] + str r3, [r4] ldr r3, [r4, #12] cmp r3, #0 - beq .L1153 + beq .L1825 ldr r2, [r3, #12] cmn r2, #1 - bne .L1153 + bne .L1825 ldr r2, [r3, #8] cmn r2, #1 - bne .L1153 - ldr r3, [r3, #0] + bne .L1825 + ldr r3, [r3] cmn r3, #1 - strne r2, [r4, #0] -.L1153: - ldr r3, [r4, #0] + strne r2, [r4] +.L1825: + ldr r3, [r4] cmn r3, #1 - bne .L1148 + bne .L1811 ldr r1, [r4, #4] - ldr r0, .L1158+8 - ldrb r2, [r6, #3836] @ zero_extendqisi2 + ldr r0, .L1860+16 + ldrb r2, [r10, #1792] @ zero_extendqisi2 bl printk ldr r1, [r4, #8] cmp r1, #0 - beq .L1154 - ldr r0, .L1158+12 + beq .L1827 + ldr r0, .L1860+20 mov r2, #4 mov r3, #8 bl rknand_print_hex -.L1154: +.L1827: ldr r1, [r4, #12] cmp r1, #0 - beq .L1148 + beq .L1811 mov r2, #4 - ldr r0, .L1158+16 + ldr r0, .L1860+24 mov r3, r2 bl rknand_print_hex -.L1148: - add r7, r7, #1 +.L1811: + add r8, r8, #1 add r4, r4, #36 -.L1146: - cmp r7, r8 - bne .L1155 + b .L1809 +.L1859: + ldr r3, [sp, #20] mov r0, #0 - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1159: + ldr r2, [sp, #36] + ldr r3, [r3] + cmp r2, r3 + beq .L1830 + bl __stack_chk_fail +.L1830: + add sp, sp, #44 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1861: .align 2 -.L1158: - .word .LANCHOR1 +.L1860: + .word __stack_chk_guard .word .LANCHOR0 - .word .LC97 + .word .LANCHOR1 + .word .LANCHOR2 .word .LC98 .word .LC99 + .word .LC100 .fnend .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 @@ -9732,2036 +10931,478 @@ FlashReadSlc2KPages: .type FlashReadPages, %function FlashReadPages: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1202 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #52 - sub sp, sp, #52 - ldrb r3, [r3, #2997] @ zero_extendqisi2 - mov r9, r0 - str r1, [sp, #28] - str r2, [sp, #32] - str r3, [sp, #24] - ldr r3, .L1202+4 - ldrb r8, [r3, #852] @ zero_extendqisi2 - ldrb ip, [r3, #860] @ zero_extendqisi2 + ldr r3, .L1938 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #60 + sub sp, sp, #60 + ldr r3, [r3] + ldr r6, .L1938+4 + str r1, [sp, #20] + str r3, [sp, #52] + ldr r3, .L1938+8 + ldrb r8, [r6] @ zero_extendqisi2 + str r2, [sp, #24] + ldrb r3, [r3, #481] @ zero_extendqisi2 cmp r8, #0 - str ip, [sp, #36] - moveq sl, r8 - beq .L1161 - bl FlashReadSlc2KPages - b .L1162 -.L1189: - mov r3, #36 - ldr ip, [sp, #28] - mul r3, r3, sl - add r2, sp, #44 - ldr r1, [sp, #32] - ldr fp, .L1202+4 - add r6, r9, r3 str r3, [sp, #16] - rsb r3, sl, ip - ldr r5, [r6, #4] - mov r0, r6 + ldrb r3, [r6, #8] @ zero_extendqisi2 + str r3, [sp, #28] + beq .L1900 + bl FlashReadSlc2KPages + b .L1864 +.L1900: + ldr r10, .L1938+12 + mov r9, r0 + mov fp, r8 +.L1863: + ldr r3, [sp, #20] + cmp fp, r3 + bcs .L1936 + mov r3, #36 + add r2, sp, #48 + mul r3, r3, fp + ldr r1, [sp, #24] + add r7, r9, r3 + str r3, [sp, #8] + mov r0, r7 + ldr r3, [r7, #4] + str r3, [sp, #12] + ldr r3, [sp, #20] + rsb r3, fp, r3 uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #40 + str r3, [sp] + add r3, sp, #44 bl LogAddr2PhyAddr - ldr r3, [sp, #40] - ldrb r2, [fp, #3762] @ zero_extendqisi2 + ldrb r2, [r6, #1717] @ zero_extendqisi2 + ldr r3, [sp, #44] + mov r5, r0 cmp r3, r2 - ldrcs ip, [sp, #16] + ldrcs r2, [sp, #8] mvncs r3, #0 - mov r7, r0 - strcs r3, [r9, ip] - bcs .L1164 - add r3, fp, r3 - ldrb r4, [r3, #3764] @ zero_extendqisi2 - ldr r3, .L1202+8 - mov r0, r4 - ldrb r3, [r3, #180] @ zero_extendqisi2 + strcs r3, [r9, r2] + bcs .L1866 + add r3, r6, r3 + ldrb r4, [r3, #1720] @ zero_extendqisi2 + ldrb r3, [r10, #193] @ zero_extendqisi2 cmp r3, #0 - moveq r7, #0 + mov r0, r4 + moveq r5, #0 bl NandcWaitFlashReady - ldr r3, [fp, #3624] + ldr r3, .L1938+4 + ldr r3, [r3, #692] ldrb r2, [r3, #19] @ zero_extendqisi2 sub r3, r2, #1 - uxtb r3, r3 - cmp r3, #6 - bhi .L1166 - add r1, fp, r4 - cmp r2, #7 - add fp, fp, r4 - ldr r2, .L1202+4 - ldrb r3, [r1, #12] @ zero_extendqisi2 - ldreqb r3, [r1, #20] @ zero_extendqisi2 - ldrb r1, [fp, #3756] @ zero_extendqisi2 - cmp r1, r3 - beq .L1166 - ldrb r1, [r2, #1] @ zero_extendqisi2 + cmp r3, #7 + bhi .L1868 + sub r2, r2, #7 + add r1, r6, r4 + cmp r2, #1 + ldr r2, .L1938+4 + ldrb r3, [r1, #710] @ zero_extendqisi2 + add r2, r2, r4 + ldrlsb r3, [r1, #718] @ zero_extendqisi2 + ldrb r2, [r2, #1552] @ zero_extendqisi2 + cmp r2, r3 + beq .L1868 mov r0, r4 - add r2, r2, #4 + ldrb r1, [r6, #699] @ zero_extendqisi2 + ldr r2, .L1938+16 bl HynixSetRRPara -.L1166: +.L1868: mov r0, r4 - mov r5, r5, lsr #31 bl NandcFlashCs - ldr ip, [sp, #32] mov r0, r4 - cmp ip, #1 - orreq r5, r5, #1 - str r5, [sp, #20] - cmp r5, #0 - beq .L1168 - ldr r3, .L1202+4 - ldrb r3, [r3, #928] @ zero_extendqisi2 + ldr r3, [sp, #12] + ldr r2, [sp, #24] + mov r3, r3, lsr #31 + cmp r2, #1 + orreq r3, r3, #1 + str r3, [sp, #12] cmp r3, #0 - beq .L1168 + beq .L1870 + ldr r3, .L1938+4 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L1870 bl flash_enter_slc_mode - b .L1169 -.L1168: + b .L1871 +.L1870: bl flash_exit_slc_mode -.L1169: - ldr fp, .L1202+4 -.L1201: - ldr r1, [sp, #44] +.L1871: + ldr r1, [sp, #48] cmn r1, #1 cmpeq r4, #255 moveq r3, #0 movne r3, #1 - moveq r7, r3 - beq .L1171 - cmp r7, #0 - beq .L1172 - ldr r2, [fp, #856] + moveq r5, r3 + beq .L1873 + cmp r5, #0 + beq .L1874 + ldr r2, [r6, #4] mov r0, r4 add r2, r1, r2 bl FlashReadDpCmd - b .L1173 -.L1172: + b .L1875 +.L1874: mov r0, r4 bl FlashReadCmd -.L1173: +.L1875: mov r0, r4 bl NandcWaitFlashReady - cmp r7, #0 - beq .L1171 + cmp r5, #0 + beq .L1873 mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] bl FlashReadDpDataOutCmd -.L1171: - ldr r3, [r6, #12] +.L1873: + ldr r3, [r7, #12] mov r0, r4 - ldr r2, [sp, #24] + ldr r2, [sp, #16] mov r1, #0 - str r3, [sp, #0] - ldr r3, [r6, #8] + str r3, [sp] + ldr r3, [r7, #8] bl NandcXferData - ldrb r2, [fp, #860] @ zero_extendqisi2 + ldrb r2, [r6, #8] @ zero_extendqisi2 adds r2, r2, #0 movne r2, #1 cmn r0, #1 + mov ip, r0 movne r2, #0 cmp r2, #0 - movne r2, #0 - movne r7, #0 - strneb r2, [fp, #860] - bne .L1201 -.L1174: - cmp r7, #0 - mov r5, r0 - beq .L1175 - ldr r3, .L1202+4 + movne r3, #0 + strneb r3, [r6, #8] + movne r5, r3 + bne .L1871 +.L1876: + cmp r5, #0 + beq .L1877 + ldr r3, .L1938+4 + str r0, [sp, #32] mov r0, r4 - ldr r1, [r3, #856] - ldr r3, [sp, #44] - str r2, [sp, #12] + str r2, [sp, #36] + ldr r1, [r3, #4] + ldr r3, [sp, #48] add r1, r1, r3 bl FlashReadDpDataOutCmd - add r3, sl, #1 - mov r1, #36 - ldr r2, [sp, #12] - mla r3, r1, r3, r9 mov r0, r4 + ldr r3, [sp, #8] + ldr r2, [sp, #36] + add r3, r3, #36 + add r3, r9, r3 ldr r1, [r3, #12] - str r1, [sp, #0] + str r1, [sp] mov r1, r2 ldr r3, [r3, #8] - ldr r2, [sp, #24] + ldr r2, [sp, #16] bl NandcXferData cmn r0, #1 + ldr ip, [sp, #32] mov r8, r0 - moveq r7, #0 -.L1175: + moveq r5, #0 +.L1877: mov r0, r4 - ldr fp, .L1202+4 + str ip, [sp, #32] bl NandcFlashDeCs - ldr ip, [sp, #36] - cmn r5, #1 - strb ip, [fp, #860] - bne .L1179 - ldrb r3, [fp, #3780] @ zero_extendqisi2 + ldr ip, [sp, #32] + ldrb r3, [sp, #28] @ zero_extendqisi2 + cmn ip, #1 + strb r3, [r6, #8] + bne .L1884 + ldrb r3, [r6, #1732] @ zero_extendqisi2 cmp r3, #0 - beq .L1177 - ldr r3, [fp, #3012] + bne .L1879 +.L1883: + ldr r5, [r10, #156] + cmp r5, #0 + bne .L1880 + b .L1937 +.L1879: + ldr r3, [r6, #76] mov r0, r4 - ldr r1, [sp, #44] - ldr r7, [r3, #304] + ldr r1, [sp, #48] + ldr r5, [r3, #304] mov r3, #1 - str r3, [sp, #0] - ldr r2, [r6, #8] - ldr r3, [r6, #12] + str r3, [sp] + ldr r2, [r7, #8] + ldr r3, [r7, #12] bl FlashDdrTunningRead cmn r0, #1 - mov r5, r0 - beq .L1178 - ldrb r3, [fp, #3836] @ zero_extendqisi2 + mov ip, r0 + beq .L1882 + ldrb r3, [r6, #1792] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1195 -.L1178: - ubfx r0, r7, #8, #8 + bls .L1903 +.L1882: + ubfx r0, r5, #8, #8 + str ip, [sp, #32] bl NandcSetDdrPara - cmn r5, #1 - bne .L1195 -.L1177: - ldr r3, .L1202+8 + ldr ip, [sp, #32] + cmn ip, #1 + beq .L1883 + b .L1903 +.L1880: mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r6, #8] - ldr r7, [r3, #176] - ldr r3, [r6, #12] - cmp r7, #0 - beq .L1180 - blx r7 + ldr r1, [sp, #48] + ldr r2, [r7, #8] + ldr r3, [r7, #12] + blx r5 cmn r0, #1 - mov r5, r0 - bne .L1197 - ldr r2, .L1202+4 - ldr r3, [r2, #3624] + mov ip, r0 + bne .L1905 + ldr r3, [r6, #692] ldrb r3, [r3, #19] @ zero_extendqisi2 sub r3, r3, #1 - uxtb r3, r3 - cmp r3, #6 - bhi .L1182 - ldrb r1, [r2, #1] @ zero_extendqisi2 + cmp r3, #7 + bhi .L1886 mov r0, r4 - add r2, r2, #4 + ldrb r1, [r6, #699] @ zero_extendqisi2 + ldr r2, .L1938+16 mov r3, #0 bl HynixSetRRPara -.L1182: - ldr r1, [sp, #44] +.L1886: + ldr r1, [sp, #48] mov r0, r4 - ldr r2, [r6, #8] - ldr r3, [r6, #12] + ldr r2, [r7, #8] + ldr r3, [r7, #12] bl FlashReadRawPage - ldr r7, .L1202+4 - ldr r1, [r6, #4] - ldrb r2, [r7, #3836] @ zero_extendqisi2 - mov r5, r0 - ldr r0, .L1202+12 - mov r3, r5 + ldr r1, [r7, #4] + ldrb r2, [r6, #1792] @ zero_extendqisi2 + mov ip, r0 + ldr r0, .L1938+20 + mov r3, ip + str ip, [sp, #32] bl printk - cmn r5, #1 - bne .L1197 - ldrb r7, [r7, #928] @ zero_extendqisi2 - cmp r7, #0 - beq .L1181 - ldr ip, [sp, #20] + ldr ip, [sp, #32] + cmn ip, #1 + bne .L1905 + ldrb r5, [r6, #140] @ zero_extendqisi2 + cmp r5, #0 + beq .L1885 + ldr r3, [sp, #12] mov r0, r4 - cmp ip, #0 - beq .L1183 - bl flash_enter_slc_mode - b .L1184 -.L1183: - bl flash_exit_slc_mode -.L1184: - ldr r3, .L1202+8 - mov r0, r4 - ldr r1, [sp, #44] - ldr r2, [r6, #8] - ldr ip, [r3, #176] - ldr r3, [r6, #12] - blx ip - mov r5, r0 - b .L1197 -.L1180: - bl FlashReadRawPage - mov r5, r0 - b .L1181 -.L1195: - mov r7, #0 -.L1179: - ldr r3, .L1202+4 - ldrb r3, [r3, #3836] @ zero_extendqisi2 - add r3, r3, r3, asl #1 - cmp r5, r3, lsr #2 - bls .L1181 - ldr r3, .L1202+8 - ldr r3, [r3, #176] cmp r3, #0 - moveq r5, #256 - b .L1181 -.L1197: - mov r7, #0 -.L1181: - ldr ip, [sp, #16] - cmp r5, #256 - cmnne r5, #1 - movne r2, #0 - str r5, [r9, ip] - strne r2, [r9, ip] - ldr ip, [sp, #16] - ldr r3, [r9, ip] + beq .L1887 + bl flash_enter_slc_mode + b .L1888 +.L1887: + bl flash_exit_slc_mode +.L1888: + ldr ip, [r10, #156] + mov r0, r4 + ldr r1, [sp, #48] + ldr r2, [r7, #8] + ldr r3, [r7, #12] + blx ip + mov ip, r0 + b .L1905 +.L1937: + mov r0, r4 + ldr r1, [sp, #48] + ldr r2, [r7, #8] + ldr r3, [r7, #12] + bl FlashReadRawPage + mov ip, r0 + b .L1885 +.L1903: + mov r5, #0 +.L1884: + ldrb r3, [r6, #1792] @ zero_extendqisi2 + add r3, r3, r3, asl #1 + cmp ip, r3, asr #2 + bls .L1885 + ldr r3, [r10, #156] + cmp r3, #0 + moveq ip, #256 + b .L1885 +.L1905: + mov r5, #0 +.L1885: + cmp ip, #256 + cmnne ip, #1 + ldreq r3, [sp, #8] + movne r3, #0 + ldrne r2, [sp, #8] + streq ip, [r9, r3] + strne r3, [r9, r2] + ldr r3, [sp, #8] + ldr r3, [r9, r3] cmn r3, #1 - bne .L1186 - ldr r2, .L1202+4 - ldr r1, [r6, #4] - ldr r0, .L1202+16 - ldrb r2, [r2, #3836] @ zero_extendqisi2 + bne .L1892 + ldr r1, [r7, #4] + ldr r0, .L1938+24 + ldrb r2, [r6, #1792] @ zero_extendqisi2 bl printk - ldr r1, [r6, #12] + ldr r1, [r7, #12] cmp r1, #0 - beq .L1186 + beq .L1892 mov r2, #4 - ldr r0, .L1202+20 + ldr r0, .L1938+28 mov r3, r2 bl rknand_print_hex -.L1186: - cmp r7, #0 - beq .L1187 - ldr r3, .L1202+4 - ldrb r3, [r3, #3836] @ zero_extendqisi2 +.L1892: + cmp r5, #0 + beq .L1894 + ldrb r3, [r6, #1792] @ zero_extendqisi2 add r3, r3, r3, asl #1 - cmp r8, r3, lsr #2 - bls .L1188 - ldr r3, .L1202+8 - ldr r3, [r3, #176] + cmp r8, r3, asr #2 + bls .L1895 + ldr r3, [r10, #156] cmp r3, #0 moveq r8, #256 -.L1188: - add r3, sl, #1 - mov r2, #36 +.L1895: + ldr r3, [sp, #8] cmp r8, #256 cmnne r8, #1 - mul r3, r2, r3 + add r3, r3, #36 movne r2, #0 - str r8, [r9, r3] + streq r8, [r9, r3] strne r2, [r9, r3] -.L1187: - ldr ip, [sp, #20] - add sl, sl, r7 - cmp ip, #0 - beq .L1164 - ldr r3, .L1202+4 - ldrb r3, [r3, #928] @ zero_extendqisi2 +.L1894: + ldr r3, [sp, #12] + add fp, fp, r5 cmp r3, #0 - beq .L1164 + beq .L1866 + ldrb r3, [r6, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L1866 mov r0, r4 bl flash_exit_slc_mode -.L1164: - add sl, sl, #1 -.L1161: - ldr ip, [sp, #28] - cmp sl, ip - bcc .L1189 +.L1866: + add fp, fp, #1 + b .L1863 +.L1936: mov r0, #0 -.L1162: - add sp, sp, #52 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1203: +.L1864: + ldr r3, .L1938 + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L1899 + bl __stack_chk_fail +.L1899: + add sp, sp, #60 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1939: .align 2 -.L1202: - .word .LANCHOR1 +.L1938: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR1 .word .LANCHOR2 + .word .LANCHOR0+702 + .word .LC101 + .word .LC98 .word .LC100 - .word .LC97 - .word .LC99 .fnend .size FlashReadPages, .-FlashReadPages .align 2 - .global FtlGcScanTempBlk - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L1229 - movw r3, #3096 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #28 - sub sp, sp, #28 - ldrh r4, [r2, r3] - movw r3, #65535 - mov r5, r0 - str r1, [sp, #20] - cmp r4, r3 - beq .L1225 - cmp r4, #0 - bne .L1205 - b .L1206 -.L1225: - mov r4, #0 -.L1205: - ldr r2, .L1229+4 - movw r3, #3916 - ldr fp, [sp, #20] - ldrh r3, [r2, r3] - cmp fp, r3 - bne .L1207 -.L1206: - bl FtlGcPageVarInit -.L1207: - mov r7, #0 - movw r8, #65535 - mov sl, r7 - mvn r3, #0 - str r3, [sp, #16] -.L1220: - ldrh r3, [r5, #0] - strb sl, [r5, #8] - cmp r3, r8 - beq .L1226 -.L1209: -.L1227: - ldr r3, .L1229+4 - movw r2, #3848 - ldrh r9, [r3, r2] - ldr r2, .L1229+8 - ldr lr, [r2, #-968] - ldr ip, [r2, #-1168] - movw r2, #3928 - ldrh r2, [r3, r2] - mov r3, #0 - mov r6, r3 - str r2, [sp, #12] - mov r2, r5 - b .L1210 -.L1212: - ldrh r0, [r2, #16] - cmp r0, r8 - beq .L1211 - mov fp, #36 - orr r0, r4, r0, asl #10 - mla r1, fp, r6, lr - ldr fp, [sp, #12] - stmib r1, {r0, sl} - mul r0, fp, r6 - add r6, r6, #1 - uxth r6, r6 - add fp, r0, #3 - cmp r0, #0 - movlt r0, fp - bic r0, r0, #3 - add r0, ip, r0 - str r0, [r1, #12] -.L1211: - add r3, r3, #1 - add r2, r2, #2 - uxth r3, r3 -.L1210: - cmp r3, r9 - bne .L1212 - ldr r9, .L1229+8 - mov r1, r6 - mov r2, #0 - ldr r0, [r9, #-968] - bl FlashReadPages - mov r3, #36 - mul r3, r3, r6 - mov r6, #0 - str r3, [sp, #12] - b .L1213 -.L1221: - ldr r1, [r9, #-968] - add r3, r1, r6 - ldr fp, [r3, #4] - stmib sp, {r1, r3} - ubfx r0, fp, #10, #16 - bl P2V_plane - ldr r1, [sp, #4] - ldr r3, [sp, #8] - ldr r1, [r1, r6] - cmp r1, #0 - mov r2, r0 - bne .L1214 - ldr r3, [r3, #12] - add r6, r6, #36 - ldrh r1, [r3, #0] - cmp r1, r8 - ldreq r3, .L1229+8 - moveq r1, #1 - streq r1, [r3, #-1008] - beq .L1208 -.L1215: - ldr r0, [r3, #12] - mov r1, fp - ldr r2, [r3, #8] - bl FtlGcUpdatePage - b .L1213 -.L1214: - mov r2, fp - ldr r0, .L1229+12 - ldrh r1, [r5, #0] - bl printk - ldr r3, .L1229+4 - ldr r2, [r3, #3840] - cmp r2, #0 - bne .L1216 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - beq .L1217 -.L1216: - ldrh r1, [r5, #0] - ldr r2, [r3, #4048] - mov r3, r1, asl #1 - ldrh r3, [r2, r3] - cmp r3, #159 - bls .L1218 -.L1217: - ldr r3, .L1229+8 - ldr r3, [r3, #-968] - ldr r3, [r3, r6] - cmn r3, #1 - bne .L1219 -.L1218: - ldr r3, .L1229+8 - ldr r3, [r3, #-968] - add r6, r3, r6 - ldr r6, [r6, #4] - str r6, [sp, #16] -.L1219: - ldr r2, .L1229+8 - mov r4, #0 - ldrh r3, [r5, #0] - ldr r2, [r2, #-2016] - mov r3, r3, asl #1 - strh sl, [r2, r3] @ movhi - ldrh r0, [r5, #0] - bl INSERT_FREE_LIST - mvn r3, #0 - strh r3, [r5, #0] @ movhi - bl FtlGcPageVarInit - b .L1220 -.L1213: - ldr r3, [sp, #12] - cmp r6, r3 - bne .L1221 - ldr fp, [sp, #20] - add r7, r7, #1 - add r4, r4, #1 - cmp r7, fp - uxth r4, r4 - bcc .L1222 - ldr r2, .L1229 - movw r3, #3096 - ldrh r1, [r2, r3] - cmp r1, r8 - beq .L1222 - add r1, r1, r7 - strh r1, [r2, r3] @ movhi - ldr r2, .L1229+4 - add r3, r3, #820 - ldrh r3, [r2, r3] - cmp r3, r4 - bhi .L1223 -.L1222: - ldr r2, .L1229+4 - movw r3, #3916 - ldrh r3, [r2, r3] - cmp r3, r4 - bhi .L1227 -.L1226: - mov r2, #0 -.L1208: - ldr r1, .L1229 - movw r3, #3096 - mvn r0, #0 - strh r4, [r5, #2] @ movhi - strb r2, [r5, #6] - strh r0, [r1, r3] @ movhi - mov r0, r5 - mov r1, r4 - bl ftl_sb_update_avl_pages -.L1223: - ldr r0, [sp, #16] - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1230: - .align 2 -.L1229: - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC101 - .fnend - .size FtlGcScanTempBlk, .-FtlGcScanTempBlk - .align 2 - .global FtlScanAllBlock - .type FtlScanAllBlock, %function -FtlScanAllBlock: + .global FlashLoadFactorBbt + .type FlashLoadFactorBbt, %function +FlashLoadFactorBbt: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #84 - sub sp, sp, #84 - ldr r0, .L1241 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #60 + sub sp, sp, #60 + ldr r7, .L1954 + mov r1, #0 + ldr r8, .L1954+4 + mov r2, #16 + ldr r4, .L1954+8 mov r5, #0 - ldr r1, .L1241+4 - bl printk - ldr r7, .L1241+8 - b .L1232 -.L1240: - add r4, sp, #80 - mov r0, r5 - ldr r6, .L1241+12 - mov r9, #36 - strh r5, [r4, #-48]! @ movhi - bl ftl_get_blk_mode - mov r2, r5, asl #1 - ldr ip, [r6, #-2016] - mov r1, r5 - ldrh r2, [ip, r2] - mov r3, r0 - ldr r0, .L1241+16 - bl printk - mov r0, r4 - bl make_superblock - movw r3, #3848 - ldrh sl, [r7, r3] - add r3, r3, #78 - add r0, r4, #14 - mov r4, #0 - ldrh r3, [r7, r3] - ldr r8, [r6, #-968] - ldr lr, [r6, #-1172] + ldr r3, [r7] + mov r10, r5 + ldrh ip, [r8, #126] + add r0, r4, #196 + mvn fp, #0 + mov r9, r4 + str r3, [sp, #52] + ldrh r3, [r8, #124] + smulbb r3, r3, ip + uxth r6, r3 + bl ftl_memset + ldr r3, [r4, #180] + str r5, [sp, #24] str r3, [sp, #28] - movw r3, #3928 - ldrh ip, [r7, r3] - mov r3, r4 - ldr r6, [r6, #-1168] - b .L1233 -.L1235: - ldrh r1, [r0, #2]! - movw r2, #65535 - cmp r1, r2 - beq .L1234 - mla r2, r9, r4, r8 - ldr fp, [sp, #28] - mov r1, r1, asl #10 - str r1, [r2, #4] - mul r1, fp, r4 - add fp, r1, #3 - cmp r1, #0 - movlt r1, fp - bic r1, r1, #3 - add r1, lr, r1 - str r1, [r2, #8] - mul r1, ip, r4 - add r4, r4, #1 + str r7, [sp, #4] +.L1941: + ldrb r3, [r8, #1717] @ zero_extendqisi2 + uxtb r7, r5 + cmp r3, r7 + bls .L1953 + mul ip, r6, r7 + sub r4, r6, #1 + sub r3, r6, #12 uxth r4, r4 - add fp, r1, #3 - cmp r1, #0 - movlt r1, fp - bic r1, r1, #3 - add r1, r6, r1 - str r1, [r2, #12] -.L1234: - add r3, r3, #1 - uxth r3, r3 -.L1233: - cmp r3, sl - bne .L1235 - ldr sl, .L1241+12 - mov r1, r4 - mov r2, #0 - mov r6, #0 - mov r8, r6 - ldr r0, [sl, #-968] - bl FlashReadPages - b .L1236 -.L1237: - ldr r2, [sl, #-968] - add r8, r8, #1 - ldrh r1, [sp, #32] - add r3, r2, r6 - uxth r8, r8 - ldr r0, [r3, #12] - ldr ip, [r3, #8] - ldr lr, [r0, #0] - str lr, [sp, #0] - ldr lr, [r0, #4] - str lr, [sp, #4] - ldr lr, [r0, #8] - str lr, [sp, #8] - ldr r0, [r0, #12] - str r0, [sp, #12] - ldr r0, [ip, #0] - str r0, [sp, #16] - ldr r0, [ip, #4] - str r0, [sp, #20] - ldr r0, .L1241+20 - ldr r2, [r2, r6] - add r6, r6, #36 - ldr r3, [r3, #4] - bl printk -.L1236: - cmp r8, r4 - ldr r9, .L1241+12 - bne .L1237 - ldr r0, [r9, #-968] - mov r1, r4 - mov r2, #1 - mov r6, #0 - bl FlashReadPages - mov r8, r6 - mov sl, r9 - b .L1238 -.L1239: - ldr r2, [sl, #-968] - add r8, r8, #1 - ldrh r1, [sp, #32] - add r3, r2, r6 - uxth r8, r8 - ldr r0, [r3, #12] - ldr ip, [r3, #8] - ldr lr, [r0, #0] - str lr, [sp, #0] - ldr lr, [r0, #4] - str lr, [sp, #4] - ldr lr, [r0, #8] - str lr, [sp, #8] - ldr r0, [r0, #12] - str r0, [sp, #12] - ldr r0, [ip, #0] - str r0, [sp, #16] - ldr r0, [ip, #4] - str r0, [sp, #20] - ldr r0, .L1241+24 - ldr r2, [r2, r6] - add r6, r6, #36 - ldr r3, [r3, #4] - bl printk -.L1238: - cmp r8, r4 - bne .L1239 - add r5, r5, #1 - uxth r5, r5 -.L1232: - movw r3, #3858 - ldrh r3, [r7, r3] - cmp r3, r5 - bhi .L1240 - mov r0, #0 - add sp, sp, #84 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1242: - .align 2 -.L1241: - .word .LC102 - .word .LANCHOR3+15 - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC103 - .word .LC104 - .word .LC105 - .fnend - .size FtlScanAllBlock, .-FtlScanAllBlock - .align 2 - .global FtlDumpBlockInfo - .type FtlDumpBlockInfo, %function -FtlDumpBlockInfo: - .fnstart - @ args = 0, pretend = 0, frame = 56 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - ubfx r0, r0, #10, #16 - .pad #84 - sub sp, sp, #84 - mov r7, r1 - bl P2V_block_in_plane - ldr r5, .L1254 - ldr r1, .L1254+4 - movw r6, #3916 - ldrh r9, [r5, r6] - mov r4, r0 - ldr r0, .L1254+8 - bl printk - ldr r3, .L1254+12 - mov r1, r4 - ldr r0, .L1254+16 - ldr r2, [r3, #-2016] - mov r3, r4, asl #1 - ldrh r2, [r2, r3] - bl printk - add r0, sp, #80 - strh r4, [r0, #-48]! @ movhi - bl make_superblock - rsbs r7, r7, #1 - ldrb r3, [r5, #928] @ zero_extendqisi2 - movcc r7, #0 - cmp r3, #0 - moveq r7, #0 - cmp r7, #0 - beq .L1244 - mov r0, r4 - bl ftl_get_blk_mode - cmp r0, #1 - mov r7, r0 - movweq r3, #3918 - ldreqh r9, [r5, r3] -.L1244: - ldrh r3, [r5, r6] - mov r1, r7 - ldr r0, .L1254+20 - mov r2, r9 - bl printk - mov r6, #0 -.L1245: - ldr r3, .L1254 - movw r2, #3848 - movw r1, #3926 - mov r4, #0 - add r0, sp, #46 - ldrh sl, [r3, r2] - ldr r2, .L1254+12 - ldrh lr, [r3, r1] - ldr r8, [r2, #-968] - ldr r5, [r2, #-1172] - ldr ip, [r2, #-1168] - movw r2, #3928 - ldrh r2, [r3, r2] - mov r3, r4 - str r2, [sp, #28] - b .L1246 -.L1248: - ldrh r1, [r0, #2]! - movw r2, #65535 - cmp r1, r2 - beq .L1247 - mov fp, #36 - orr r1, r6, r1, asl #10 - mla r2, fp, r4, r8 - str r1, [r2, #4] - mul r1, lr, r4 - add fp, r1, #3 - cmp r1, #0 - movlt r1, fp - ldr fp, [sp, #28] - bic r1, r1, #3 - add r1, r5, r1 - str r1, [r2, #8] - mul r1, fp, r4 - add r4, r4, #1 - uxth r4, r4 - add fp, r1, #3 - cmp r1, #0 - movlt r1, fp - bic r1, r1, #3 - add r1, ip, r1 - str r1, [r2, #12] -.L1247: - add r3, r3, #1 - uxth r3, r3 -.L1246: - cmp r3, sl - bne .L1248 - ldr r8, .L1254+12 - mov r1, r4 - mov r2, r7 - mov r5, #0 - mov sl, r5 - ldr r0, [r8, #-968] - bl FlashReadPages - b .L1249 -.L1250: - ldr r2, [r8, #-968] - add sl, sl, #1 - ldrh r1, [sp, #32] - add r3, r2, r5 - uxth sl, sl - ldr r0, [r3, #12] - ldr ip, [r3, #8] - ldr lr, [r0, #0] - str lr, [sp, #0] - ldr lr, [r0, #4] - str lr, [sp, #4] - ldr lr, [r0, #8] - str lr, [sp, #8] - ldr r0, [r0, #12] - str r0, [sp, #12] - ldr r0, [ip, #0] - str r0, [sp, #16] - ldr r0, [ip, #4] - str r0, [sp, #20] - ldr r0, .L1254+24 - ldr r2, [r2, r5] - add r5, r5, #36 - ldr r3, [r3, #4] - bl printk -.L1249: - cmp sl, r4 - bne .L1250 - add r6, r6, #1 - uxth r6, r6 - cmp r6, r9 - bne .L1245 -.L1251: - mov r0, #0 - add sp, sp, #84 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1255: - .align 2 -.L1254: - .word .LANCHOR0 - .word .LANCHOR3+31 - .word .LC102 - .word .LANCHOR2 - .word .LC106 - .word .LC107 - .word .LC108 - .fnend - .size FtlDumpBlockInfo, .-FtlDumpBlockInfo - .align 2 - .global FtlScanSysBlk - .type FtlScanSysBlk, %function -FtlScanSysBlk: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r6, #0 - ldr r5, .L1314 - .pad #28 - sub sp, sp, #28 - ldr r4, .L1314+4 - mov r1, r6 - ldr r3, .L1314+8 - mov r7, #3936 - ldr r2, [r5, #3944] - ldr r0, [r4, #-1032] - mov sl, r4 - strh r6, [r4, r3] @ movhi - movw r3, #3962 - strh r6, [r5, r3] @ movhi - mov r2, r2, asl #2 - bl ftl_memset - ldr r2, [r5, #3944] - mov r1, r6 - ldr r0, [r4, #-1036] - mov r2, r2, asl #1 - bl ftl_memset - ldrh r2, [r5, r7] - mov r1, r6 - ldr r0, [r4, #-904] - mov r2, r2, asl #2 - bl ftl_memset - ldrh r2, [r5, r7] - mov r1, r6 - ldr r0, [r5, #3964] - mov r2, r2, asl #1 - bl ftl_memset - ldr r0, .L1314+12 - mov r1, #255 - mov r2, #12 - bl ftl_memset - mov r3, #3856 - ldrh r3, [r5, r3] - str r3, [sp, #8] - b .L1257 -.L1259: - add r3, r6, r5 - ldr r1, [sp, #8] - ldrb r0, [r3, #3874] @ zero_extendqisi2 - bl V2P_block - str r0, [sp, #0] - bl FtlBbmIsBadBlock - ldr r3, [sp, #0] - cmp r0, #0 - bne .L1258 - ldr r2, [r4, #-968] - mov r3, r3, asl #10 - mla r2, r9, r7, r2 - str r3, [r2, #4] - ldr r3, [r4, #-1172] - str r3, [r2, #8] - ldrh r3, [r6, r8] - mul r3, r3, r7 - add r7, r7, #1 - uxth r7, r7 - add r1, r3, #3 - cmp r3, #0 - movlt r3, r1 - ldr r1, [r4, #-1168] - bic r3, r3, #3 - add r3, r1, r3 - str r3, [r2, #12] -.L1258: - add r5, r5, #1 - uxth r5, r5 - b .L1292 -.L1305: - mov r7, #0 - movw fp, #3848 - mov r5, r7 - mov r9, #36 - movw r8, #3928 -.L1292: - ldrh r3, [r6, fp] - cmp r3, r5 - bhi .L1259 - cmp r7, #0 - beq .L1260 - ldr r0, [r4, #-968] - mov r1, r7 - mov r2, #1 - mov fp, r7 - bl FlashReadPages - mov r8, #0 - str r8, [sp, #12] -.L1291: - ldr r3, [r4, #-968] - add r2, r3, r8 - ldr r3, [r3, r8] - ldr r6, [r2, #4] - cmn r3, #1 - ldr r5, [r2, #12] - ubfx r6, r6, #10, #16 - bne .L1261 - mov r7, #16 -.L1263: - ldr r0, [r4, #-968] - mov r1, #1 - mov r2, r1 - add r0, r0, r8 - ldr r3, [r0, #4] - add r3, r3, #1 - str r3, [r0, #4] - bl FlashReadPages - ldrh r3, [r5, #0] - movw r1, #65535 - cmp r3, r1 - ldreq r3, [sl, #-968] - mvneq r2, #0 - streq r2, [r3, r8] - beq .L1261 -.L1262: - ldr r3, [r4, #-968] - ldr r3, [r3, r8] - cmn r3, #1 - bne .L1261 - sub r7, r7, #1 - uxth r7, r7 - cmp r7, #0 - bne .L1263 -.L1261: - ldr r3, [r4, #-968] - ldr r3, [r3, r8] - cmn r3, #1 - beq .L1264 - ldr r2, [r4, #-1804] - ldr r3, [r5, #4] - cmn r2, #1 - beq .L1265 - cmp r2, r3 - bhi .L1266 -.L1265: - cmn r3, #1 - addne r3, r3, #1 - strne r3, [sl, #-1804] -.L1266: - ldrh r3, [r5, #0] - movw r2, #61604 - cmp r3, r2 - beq .L1269 - bhi .L1272 - movw r2, #61574 - cmp r3, r2 - bne .L1267 - b .L1312 -.L1272: - movw r2, #61634 - cmp r3, r2 - beq .L1270 - movw r2, #65535 - cmp r3, r2 - bne .L1267 - b .L1313 -.L1270: - ldr r3, .L1314 - mov r9, r6 - ldr r1, .L1314+8 - ldr ip, [r4, #-1032] - ldr r0, [r3, #3944] - ldrh r1, [r4, r1] - uxth r2, r0 - sub r3, r2, #1 - rsb r2, r1, r2 - sub r2, r2, #1 - uxth r3, r3 - sxth r2, r2 - str r2, [sp, #4] - b .L1273 -.L1279: - mov r6, r2, asl #2 - ldr r7, [r5, #4] - str r6, [sp, #16] - ldr r6, [ip, r2, asl #2] - cmp r7, r6 - bls .L1274 - ldr ip, [ip, #0] - mov r6, r9 - cmp ip, #0 - bne .L1275 - cmp r1, r0 - addne r1, r1, #1 - ldrne r0, .L1314+8 - strneh r1, [r4, r0] @ movhi -.L1275: - mov r0, #0 - sxth r9, r3 - str r3, [sp, #4] - b .L1276 -.L1277: - ldr r7, [r4, #-1032] - add ip, r1, #1 - add r0, r0, #1 - ldr r3, [r7, ip, asl #2] - mov ip, ip, asl #1 - uxth r0, r0 - str r3, [r7, r1, asl #2] - mov r1, r1, asl #1 - ldr r7, [r4, #-1036] - ldrh ip, [r7, ip] - strh ip, [r7, r1] @ movhi -.L1276: - sxth r1, r0 - cmp r1, r9 - bne .L1277 - ldr r1, [sl, #-1032] - mov r2, r2, asl #1 - ldr r0, [r5, #4] - ldr ip, [sp, #16] - ldr r3, [sp, #4] - str r0, [r1, ip] - ldr r1, [sl, #-1036] - strh r6, [r1, r2] @ movhi - b .L1278 -.L1274: - sub r3, r3, #1 - uxth r3, r3 -.L1273: - ldr r6, [sp, #4] - sxth r2, r3 - cmp r2, r6 - bgt .L1279 - mov r6, r9 -.L1278: - sxth r3, r3 - cmp r3, #0 - blt .L1267 - ldr r2, .L1314+8 - ldr r0, .L1314 - ldrh r1, [r4, r2] - ldr r0, [r0, #3944] - rsb r0, r1, r0 - sub r0, r0, #1 - sxth r0, r0 - cmp r3, r0 - bgt .L1267 - add r1, r1, #1 - strh r1, [r4, r2] @ movhi - ldr r2, [r4, #-1032] - ldr r1, [r5, #4] - str r1, [r2, r3, asl #2] - mov r3, r3, asl #1 - ldr r2, [r4, #-1036] - b .L1309 -.L1312: - ldr r1, .L1314 - mov r3, #3936 - movw ip, #3962 - mov r9, r6 - ldrh r0, [r1, r3] - ldrh r1, [r1, ip] - sub r2, r0, #1 - ldr ip, [r4, #-904] - uxth r3, r2 - rsb r2, r1, r2 - str r2, [sp, #4] - b .L1280 -.L1286: - mov r6, r2, asl #2 - ldr r7, [r5, #4] - str r6, [sp, #16] - ldr r6, [ip, r2, asl #2] - cmp r7, r6 - bls .L1281 - ldr ip, [ip, #0] - mov r6, r9 - cmp ip, #0 - bne .L1282 - cmp r1, r0 - addne r1, r1, #1 - ldrne ip, .L1314 - movwne r0, #3962 - strneh r1, [ip, r0] @ movhi -.L1282: - sxth ip, r3 - mov r0, #0 - str ip, [sp, #20] - ldr r9, .L1314 - str r3, [sp, #4] - b .L1283 -.L1284: - ldr r7, [r4, #-904] - add ip, r1, #1 - add r0, r0, #1 - ldr r3, [r7, ip, asl #2] - mov ip, ip, asl #1 - uxth r0, r0 - str r3, [r7, r1, asl #2] - mov r1, r1, asl #1 - ldr r7, [r9, #3964] - ldrh ip, [r7, ip] - strh ip, [r7, r1] @ movhi -.L1283: - ldr ip, [sp, #20] - sxth r1, r0 - cmp r1, ip - bne .L1284 - ldr r1, [sl, #-904] - mov r2, r2, asl #1 - ldr r0, [r5, #4] - ldr ip, [sp, #16] - ldr r3, [sp, #4] - str r0, [r1, ip] - ldr r1, .L1314 - ldr r1, [r1, #3964] - strh r6, [r1, r2] @ movhi - b .L1285 -.L1281: - sub r3, r3, #1 - uxth r3, r3 -.L1280: - ldr r6, [sp, #4] - sxth r2, r3 - cmp r2, r6 - bgt .L1286 - mov r6, r9 -.L1285: - sxth r3, r3 - cmp r3, #0 - blt .L1267 - ldr r2, .L1314 - mov ip, #3936 - movw r1, #3962 - ldrh ip, [r2, ip] - ldrh r0, [r2, r1] - sub ip, ip, #1 - rsb ip, r0, ip - sxth ip, ip - cmp r3, ip - bgt .L1267 - add r0, r0, #1 - strh r0, [r2, r1] @ movhi - ldr r0, [r5, #4] - ldr r1, [r4, #-904] - str r0, [r1, r3, asl #2] - mov r3, r3, asl #1 - ldr r2, [r2, #3964] -.L1309: - strh r6, [r2, r3] @ movhi - b .L1267 -.L1269: - ldr r3, .L1314+16 - movw ip, #65535 - ldrh r2, [r4, r3] - cmp r2, ip - streqh r6, [r4, r3] @ movhi - beq .L1310 - ldr r3, .L1314+20 - movw r1, #65535 - ldrh r0, [r4, r3] - cmp r0, r1 - beq .L1288 - mov r1, #1 - bl FtlFreeSysBlkQueueIn -.L1288: - ldr r3, [r5, #4] - ldr r2, [sl, #-1764] - cmp r2, r3 - ldr r3, .L1314+20 - strcsh r6, [r4, r3] @ movhi - bcs .L1267 - ldr r2, .L1314+16 - ldrh r1, [r4, r2] - strh r6, [r4, r2] @ movhi - strh r1, [r4, r3] @ movhi -.L1310: - ldr r3, [r5, #4] - str r3, [r4, #-1764] - b .L1267 -.L1313: - mov r0, r6 - b .L1311 -.L1264: - ldr r3, .L1314 - mov r0, r6 - ldrb r1, [r3, #928] @ zero_extendqisi2 - cmp r1, #0 - beq .L1290 -.L1311: - mov r1, #0 -.L1290: - bl FtlFreeSysBlkQueueIn -.L1267: - ldr r6, [sp, #12] - add r8, r8, #36 - add r3, r6, #1 - uxth r3, r3 - str r3, [sp, #12] - cmp r3, fp - bne .L1291 -.L1260: - ldr ip, [sp, #8] - add r3, ip, #1 - uxth r3, r3 - str r3, [sp, #8] -.L1257: - ldr r6, .L1314 - movw r3, #3858 - ldr ip, [sp, #8] - ldrh r3, [r6, r3] - cmp r3, ip - bhi .L1305 - ldr r1, .L1314+4 - ldr r2, [r1, #-1036] - ldrh r3, [r2, #0] - cmp r3, #0 - bne .L1293 - ldr r0, .L1314+8 - ldrh r1, [r1, r0] - cmp r1, #0 - ldrne r0, [r6, #3944] - bne .L1294 - b .L1293 -.L1298: - mov r1, r1, asl #1 - ldrh r1, [r2, r1] - cmp r1, #0 - beq .L1295 - ldr r7, .L1314 - sxth r6, r3 - ldr r1, .L1314+4 - mov r5, #0 - b .L1296 -.L1297: - ldr ip, [r1, #-1036] - mov r0, r2, asl #1 - rsb r4, r6, r2 - add r3, r3, #1 - ldrh sl, [ip, r0] - mov r8, r4, asl #1 - uxth r3, r3 - strh sl, [ip, r8] @ movhi - ldr ip, [r1, #-1032] - ldr r2, [ip, r2, asl #2] - str r2, [ip, r4, asl #2] - ldr r2, [r1, #-1036] - strh r5, [r2, r0] @ movhi -.L1296: - ldr r0, [r7, #3944] - sxth r2, r3 - cmp r2, r0 - bcc .L1297 - b .L1293 -.L1295: - add r3, r3, #1 - uxth r3, r3 -.L1294: - sxth r1, r3 - cmp r1, r0 - bcc .L1298 -.L1293: - ldr r2, .L1314 - ldr r1, [r2, #3964] - ldrh r3, [r1, #0] - cmp r3, #0 - bne .L1299 - movw r0, #3962 - ldrh r0, [r2, r0] - cmp r0, #0 - movne r0, #3936 - ldrneh r2, [r2, r0] - bne .L1300 - b .L1299 -.L1304: - mov ip, r0, asl #1 - ldrh ip, [r1, ip] - cmp ip, #0 - beq .L1301 - ldr r1, .L1314 - mov r8, #3936 - ldr r7, .L1314+4 - mov r6, #0 - b .L1302 -.L1303: - ldr r4, [r1, #3964] - mov ip, r2, asl #1 - rsb r5, r0, r2 - add r3, r3, #1 - ldrh r9, [r4, ip] - mov sl, r5, asl #1 - uxth r3, r3 - strh r9, [r4, sl] @ movhi - ldr r4, [r7, #-904] - ldr r2, [r4, r2, asl #2] - str r2, [r4, r5, asl #2] - ldr r2, [r1, #3964] - strh r6, [r2, ip] @ movhi -.L1302: - ldrh ip, [r1, r8] - sxth r2, r3 - cmp r2, ip - blt .L1303 - b .L1299 -.L1301: - add r3, r3, #1 - uxth r3, r3 -.L1300: - sxth r0, r3 - cmp r0, r2 - blt .L1304 -.L1299: - mov r0, #0 - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1315: - .align 2 -.L1314: - .word .LANCHOR0 - .word .LANCHOR2 - .word -1040 - .word .LANCHOR2-1772 - .word -1772 - .word -1768 - .fnend - .size FtlScanSysBlk, .-FtlScanSysBlk - .align 2 - .global FtlGetLastWrittenPage - .type FtlGetLastWrittenPage, %function -FtlGetLastWrittenPage: - .fnstart - @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r1, #1 - ldr r3, .L1327 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} - movweq r2, #3918 - movwne r2, #3916 - .pad #108 - sub sp, sp, #108 - ldrh r4, [r3, r2] - add r7, sp, #4 - mov r5, r1 - add r3, sp, #40 - sub r4, r4, #1 - str r3, [sp, #16] - mov sl, r0, asl #10 - mov r1, #1 - uxth r4, r4 - mov r0, r7 - mov r2, r5 - mov r8, #0 - sxth r3, r4 - str r8, [sp, #12] - orr r3, r3, sl - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #40] - cmn r3, #1 - bne .L1320 - b .L1325 -.L1323: - add r6, r6, r3 - mov r0, r7 - mov r1, #1 - mov r2, r5 - add r6, r6, r6, lsr #31 - ubfx r6, r6, #1, #16 - sxth r3, r6 - orr r3, r3, sl - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #40] - cmn r3, #1 - bne .L1321 - ldr r3, [sp, #44] - cmn r3, #1 - bne .L1321 - ldr r3, [sp, #4] - cmn r3, #1 - subne r4, r6, #1 - uxthne r4, r4 - bne .L1325 -.L1321: - add r6, r6, #1 - uxth r8, r6 -.L1325: - sxth r6, r8 - sxth r3, r4 - cmp r6, r3 - ble .L1323 -.L1320: - sxth r0, r4 - add sp, sp, #108 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L1328: - .align 2 -.L1327: - .word .LANCHOR0 - .fnend - .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage - .align 2 - .global FtlLoadSysInfo - .type FtlLoadSysInfo, %function -FtlLoadSysInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r1, #0 - ldr r4, .L1345 - ldr r2, .L1345+4 - ldr r7, .L1345+8 - ldr r3, [r4, #-956] - ldr r0, [r4, #-2016] - str r3, [r4, #192] - ldr r3, [r4, #-932] - str r3, [r4, #196] - mov r3, #3856 - ldrh r2, [r2, r3] - mov r2, r2, asl #1 - bl ftl_memset - ldrh r0, [r4, r7] - movw r3, #65535 - cmp r0, r3 - beq .L1343 - mov r1, #1 - mov r5, #0 - bl FtlGetLastWrittenPage - ldr r3, .L1345+12 - add r2, r0, #1 - mov r6, r0 - strh r2, [r4, r3] @ movhi - b .L1331 -.L1334: - ldrh r2, [r4, r7] - mov r1, #1 - ldr r0, .L1345+16 - orr r3, r3, r2, asl #10 - str r3, [r4, #188] - ldr r3, [r4, #-956] - mov r2, r1 - str r3, [r4, #192] - bl FlashReadPages - ldr r3, [r4, #184] - cmn r3, #1 - beq .L1332 - ldr r3, [r4, #-956] - ldr r2, [r3, #0] - ldr r3, .L1345+20 - cmp r2, r3 - bne .L1332 - ldr r3, [r4, #-932] - ldrh r2, [r3, #0] - movw r3, #61604 - cmp r2, r3 - beq .L1333 -.L1332: - sub r5, r5, #1 - uxth r5, r5 -.L1331: - add r3, r5, r6 - sxth r3, r3 - cmp r3, #0 - bge .L1334 -.L1333: - ldr r4, .L1345 - mov r2, #48 - ldr r5, .L1345+4 - mov r6, #3856 - ldr r0, .L1345+24 - ldr r7, [r4, #192] - mov r1, r7 - bl memcpy - ldrh r2, [r5, r6] - add r1, r7, #48 - ldr r0, [r4, #-2016] - mov r2, r2, asl #1 - bl memcpy - ldrh r1, [r5, r6] - ldr r3, [r4, #192] - ldr r0, [r4, #-1840] - mov r2, r1, lsr #3 - add r1, r1, #24 - add r2, r2, #4 - mov r1, r1, lsr #1 - add r1, r3, r1, asl #2 - bl memcpy - movw r3, #3960 - ldrh r3, [r5, r3] - cmp r3, #0 - beq .L1335 - ldrh r3, [r5, r6] - mov r2, #3952 - ldrh r2, [r5, r2] - ldr r0, [r4, #-896] - mov r1, r3, lsr #3 - add r1, r1, r3, asl #1 - ldr r3, [r4, #192] - add r1, r1, #52 - mov r2, r2, asl #2 - ubfx r1, r1, #2, #14 - add r1, r3, r1, asl #2 - bl memcpy -.L1335: - ldr r4, .L1345 - ldr r3, .L1345+20 - ldr r2, [r4, #-2072] - cmp r2, r3 - bne .L1343 - ldr r3, .L1345+28 - movw r1, #3870 - ldrb r0, [r4, #-2062] @ zero_extendqisi2 - ldrh r2, [r4, r3] - ldr r3, .L1345+32 - strh r2, [r4, r3] @ movhi - ldr r3, .L1345+4 - ldrh r1, [r3, r1] - cmp r0, r1 - bne .L1343 - movw r1, #3916 - movw r0, #3922 - ldrh r1, [r3, r1] - movw r5, #65535 - ldrh r0, [r3, r0] - str r2, [r4, #220] - mul r1, r2, r1 - str r1, [r3, #3976] - mul r1, r0, r1 - ldr r0, [r3, #3860] - str r1, [r3, #3956] - movw r1, #3986 - ldrh r1, [r3, r1] - rsb r0, r1, r0 - rsb r0, r2, r0 - movw r2, #3848 - ldrh r1, [r3, r2] - bl __aeabi_uidiv - ldr r3, .L1345+36 - ldr r1, .L1345+40 - strh r0, [r4, r3] @ movhi - ldr r3, .L1345+44 - ldrh r2, [r4, r3] - add r3, r3, #62 - strh r2, [r4, r3] @ movhi - sub r3, r3, #60 - ldrh r3, [r4, r3] - mov r0, r3, lsr #6 - and r3, r3, #63 - strb r3, [r4, #-1990] - ldrb r3, [r4, #-2061] @ zero_extendqisi2 - strh r0, [r4, r1] @ movhi - mvn r1, #0 - ldr r0, .L1345+48 - strb r3, [r4, #-1988] - ldr r3, .L1345+52 - strh r1, [r4, r3] @ movhi - mov r3, #0 - ldr r1, .L1345+56 - strh r3, [r4, r0] @ movhi - strb r3, [r4, #-1754] - ldrh r0, [r4, r1] - add r1, r1, #106 - strb r3, [r4, #-1752] - str r3, [r4, #-1816] - strh r0, [r4, r1] @ movhi - sub r1, r1, #104 - ldr r0, .L1345+60 - ldrh r1, [r4, r1] - mov ip, r1, lsr #6 - and r1, r1, #63 - strb r1, [r4, #-1942] - ldrb r1, [r4, #-2060] @ zero_extendqisi2 - strh ip, [r4, r0] @ movhi - strb r1, [r4, #-1940] - ldr r1, .L1345+64 - ldrh r0, [r4, r1] - add r1, r1, #150 - strh r0, [r4, r1] @ movhi - ldr r1, .L1345+68 - ldr r0, .L1345+72 - ldrh r1, [r4, r1] - mov ip, r1, lsr #6 - and r1, r1, #63 - strb r1, [r4, #-1894] - ldrb r1, [r4, #-2059] @ zero_extendqisi2 - strh ip, [r4, r0] @ movhi - strb r1, [r4, #-1892] - str r3, [r4, #-1828] - ldr r1, [r4, #-2040] - str r3, [r4, #-1836] - str r3, [r4, #-1820] - str r3, [r4, #-1792] - str r3, [r4, #-1784] - str r3, [r4, #-1824] - ldr r3, [r4, #-2032] - str r1, [r4, #-1796] - ldr r1, [r4, #-1804] - cmp r3, r1 - strhi r3, [r4, #-1804] - ldr r4, .L1345 - ldr r3, [r4, #-2036] - ldr r1, [r4, #-1800] - cmp r3, r1 - strhi r3, [r4, #-1800] - cmp r2, r5 - beq .L1338 - ldr r0, .L1345+76 - bl make_superblock -.L1338: - ldr r3, .L1345+80 - ldrh r3, [r4, r3] - cmp r3, r5 - beq .L1339 - ldr r0, .L1345+84 - bl make_superblock -.L1339: - ldr r5, .L1345 - movw r4, #65535 - ldr r3, .L1345+88 - ldrh r3, [r5, r3] - cmp r3, r4 - beq .L1340 - ldr r0, .L1345+92 - bl make_superblock -.L1340: - ldr r3, .L1345+52 - ldrh r3, [r5, r3] - cmp r3, r4 - beq .L1344 - ldr r0, .L1345+96 - bl make_superblock - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1343: - mvn r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1344: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1346: - .align 2 -.L1345: - .word .LANCHOR2 - .word .LANCHOR0 - .word -1772 - .word -1770 - .word .LANCHOR2+184 - .word 1179929683 - .word .LANCHOR2-2072 - .word -2064 - .word -1766 - .word -1776 - .word -1994 - .word -2058 - .word -1758 - .word -1760 - .word -2054 - .word -1946 - .word -2050 - .word -2048 - .word -1898 - .word .LANCHOR2-1996 - .word -1948 - .word .LANCHOR2-1948 - .word -1900 - .word .LANCHOR2-1900 - .word .LANCHOR2-1760 - .fnend - .size FtlLoadSysInfo, .-FtlLoadSysInfo - .align 2 - .global FtlLoadBbt - .type FtlLoadBbt, %function -FtlLoadBbt: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - ldr r6, .L1363 - ldr r8, .L1363+4 - ldr r3, [r6, #-956] - mov r7, r6 - ldr r4, [r6, #-932] - str r3, [r6, #192] - str r4, [r6, #196] - bl FtlBbtMemInit - movw r3, #3912 - ldrh r5, [r8, r3] - sub r5, r5, #1 - uxth r5, r5 - b .L1348 -.L1352: - mov r1, #1 - mov r3, r5, asl #10 - ldr r0, .L1363+8 - mov r2, r1 - str r3, [r6, #188] - bl FlashReadPages - ldr r3, [r6, #184] - cmn r3, #1 - bne .L1349 - ldr r3, [r6, #188] - mov r1, #1 - ldr r0, .L1363+8 - mov r2, r1 - add r3, r3, #1 - str r3, [r6, #188] - bl FlashReadPages -.L1349: - ldr r3, [r7, #184] - cmn r3, #1 - beq .L1350 - ldrh r2, [r4, #0] - movw r3, #61649 - cmp r2, r3 - bne .L1350 - ldr r3, .L1363+4 - movw r2, #3980 - strh r5, [r3, r2] @ movhi - ldr r2, [r4, #4] - str r2, [r3, #3988] - mov r2, #3984 - ldrh r1, [r4, #8] - strh r1, [r3, r2] @ movhi - b .L1351 -.L1350: - sub r5, r5, #1 - uxth r5, r5 -.L1348: - movw r3, #3912 - ldrh r3, [r8, r3] - sub r3, r3, #48 - cmp r5, r3 - bgt .L1352 -.L1351: - ldr r5, .L1363+4 - movw r8, #3980 - movw r3, #65535 - ldrh r2, [r5, r8] - cmp r2, r3 - beq .L1362 - mov r6, #3984 - ldrh r2, [r5, r6] - cmp r2, r3 - beq .L1354 - ldr r7, .L1363 - mov r1, #1 - mov r2, r2, asl #10 - add r0, r7, #184 - str r2, [r7, #188] - mov r2, r1 - bl FlashReadPages - ldr r3, [r7, #184] - cmn r3, #1 - beq .L1354 - ldrh r2, [r4, #0] - movw r3, #61649 - cmp r2, r3 - bne .L1354 - ldr r3, [r4, #4] - ldr r2, [r5, #3988] - cmp r3, r2 - strhi r3, [r5, #3988] - ldrhih r2, [r5, r6] - ldrhih r3, [r4, #8] - strhih r2, [r5, r8] @ movhi - strhih r3, [r5, r6] @ movhi -.L1354: - ldr r8, .L1363+4 - movw r3, #3980 - mov r1, #1 - mov r6, #0 - ldr r5, .L1363 - ldrh r0, [r8, r3] - bl FtlGetLastWrittenPage - movw r3, #3982 - add r2, r0, #1 - mov r7, r0 - strh r2, [r8, r3] @ movhi - b .L1355 -.L1358: - movw r2, #3980 - mov r1, #1 - ldrh r2, [r8, r2] - ldr r0, .L1363+8 - orr r3, r3, r2, asl #10 - str r3, [r5, #188] - ldr r3, [r5, #-956] - mov r2, r1 - str r3, [r5, #192] - bl FlashReadPages - ldr r3, [r5, #184] - cmn r3, #1 - beq .L1356 - ldrh r2, [r4, #0] - movw r3, #61649 - cmp r2, r3 - beq .L1357 -.L1356: - sub r6, r6, #1 - uxth r6, r6 -.L1355: - add r3, r6, r7 - sxth r3, r3 - cmp r3, #0 - bge .L1358 -.L1357: - ldr r3, .L1363+4 - movw r2, #3986 - ldrh r1, [r4, #10] - ldrh r0, [r4, #12] - strh r1, [r3, r2] @ movhi - movw r2, #65535 - cmp r0, r2 - beq .L1359 - ldr r2, [r3, #3844] - cmp r0, r2 - beq .L1359 - movw r1, #3858 - ldrh r3, [r3, r1] - mov r3, r3, lsr #2 - cmp r2, r3 - bcs .L1359 - cmp r0, r3 - bcs .L1359 - bl FtlSysBlkNumInit -.L1359: - ldr r6, .L1363+12 - mov r4, #0 - ldr r8, .L1363+4 - movw r7, #3870 - ldr r5, .L1363 - b .L1360 -.L1361: - ldr r3, .L1363+16 - ldr r1, [r5, #192] - ldr r0, [r6, #4]! - ldrh r2, [r5, r3] - mov r2, r2, asl #2 - mla r1, r4, r2, r1 - bl memcpy - add r4, r4, #1 -.L1360: - ldrh r3, [r8, r7] +.L1942: cmp r4, r3 - bcc .L1361 - mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1362: - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1364: - .align 2 -.L1363: - .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR2+184 - .word .LANCHOR0+4004 - .word -1024 - .fnend - .size FtlLoadBbt, .-FtlLoadBbt - .align 2 - .global FtlLoadFactoryBbt - .type FtlLoadFactoryBbt, %function -FtlLoadFactoryBbt: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r5, #0 - ldr r3, .L1372 - movw fp, #3870 - ldr r7, .L1372+4 - ldr r6, .L1372+8 - ldr r2, [r3, #-956] - ldr r8, [r3, #-932] - str r2, [r3, #192] - str r8, [r3, #196] - b .L1366 -.L1371: - movw r9, #3912 - mvn r3, #0 - ldrh r4, [r6, r9] - strh r3, [r7], #2 @ movhi - add r4, r4, r3 - ldr sl, .L1372 - uxth r4, r4 - b .L1367 -.L1370: - mla r3, r3, r5, r4 + ble .L1944 + add r2, ip, r4 mov r1, #1 - ldr r0, .L1372+12 + add r0, sp, #16 + str r3, [sp, #12] + mov r2, r2, asl #10 + str r2, [sp, #20] mov r2, r1 - mov r3, r3, asl #10 - str r3, [sl, #188] + str ip, [sp, #8] bl FlashReadPages - ldr r3, [sl, #184] - cmn r3, #1 - beq .L1368 - ldrh r2, [r8, #0] - movw r3, #61664 - cmp r2, r3 - streqh r4, [r7, #-2] @ movhi - beq .L1369 -.L1368: + ldr r2, [sp, #16] + ldr ip, [sp, #8] + cmn r2, #1 + ldr r3, [sp, #12] + beq .L1943 + ldr r2, [r9, #180] + ldrh r1, [r2] + movw r2, #61664 + cmp r1, r2 + bne .L1943 + mov r1, r7 + ldr r0, .L1954+12 + mov r2, r4 + add r10, r10, #1 + bl printk + ldr r3, .L1954+8 + uxth r10, r10 + add r7, r3, r7, asl #1 + strh r4, [r7, #196] @ movhi + b .L1944 +.L1943: sub r4, r4, #1 uxth r4, r4 -.L1367: - ldrh r3, [r6, r9] - sub r2, r3, #16 - cmp r4, r2 - bgt .L1370 -.L1369: + b .L1942 +.L1944: + ldrb r3, [r8, #1717] @ zero_extendqisi2 add r5, r5, #1 -.L1366: - ldrh r3, [r6, fp] - cmp r5, r3 - bcc .L1371 - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1373: + cmp r3, r10 + moveq fp, #0 + b .L1941 +.L1953: + ldr r3, [sp, #4] + mov r0, fp + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L1948 + bl __stack_chk_fail +.L1948: + add sp, sp, #60 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1955: .align 2 -.L1372: - .word .LANCHOR2 - .word .LANCHOR0+3992 +.L1954: + .word __stack_chk_guard .word .LANCHOR0 - .word .LANCHOR2+184 + .word .LANCHOR2 + .word .LC102 .fnend - .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt + .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 2 .global FlashProgSlc2KPages .type FlashProgSlc2KPages, %function @@ -11769,1024 +11410,3345 @@ FlashProgSlc2KPages: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #68 sub sp, sp, #68 - mov sl, r1 mov r9, r2 - str r3, [sp, #12] + ldr r8, .L1988 + str r3, [sp, #8] + mov r6, r1 + ldr r3, .L1988+4 mov r4, r0 - ldr r3, .L1393 - mov r6, r0 - mov r8, #0 - ldr r7, .L1393+4 - ldrb fp, [r3, #2997] @ zero_extendqisi2 - b .L1375 -.L1382: - rsb r3, r8, sl - add r2, sp, #20 - mov r0, r6 + mov fp, r0 + mov r7, #0 + ldr r2, [r3] + str r3, [sp, #12] + str r2, [sp, #60] + ldr r2, .L1988+8 + ldrb r10, [r2, #481] @ zero_extendqisi2 +.L1957: + cmp r7, r6 + beq .L1987 + rsb r3, r7, r6 + add r2, sp, #16 + mov r0, fp mov r1, r9 uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #24 + str r3, [sp] + add r3, sp, #20 bl LogAddr2PhyAddr - ldr r3, [sp, #24] - ldrb r2, [r7, #3762] @ zero_extendqisi2 + ldrb r2, [r8, #1717] @ zero_extendqisi2 + ldr r3, [sp, #20] cmp r3, r2 mvncs r3, #0 - strcs r3, [r6, #0] - bcs .L1377 - add r3, r7, r3 - ldrb r5, [r3, #3764] @ zero_extendqisi2 + strcs r3, [fp] + bcs .L1959 + add r3, r8, r3 + ldrb r5, [r3, #1720] @ zero_extendqisi2 mov r0, r5 bl NandcWaitFlashReady mov r0, r5 bl NandcFlashCs mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #16] bl FlashProgFirstCmd - ldr r3, [r6, #12] - mov r2, fp + ldr r3, [fp, #12] + mov r2, r10 mov r1, #1 mov r0, r5 - str r3, [sp, #0] - ldr r3, [r6, #8] + str r3, [sp] + ldr r3, [fp, #8] bl NandcXferData - ldr r1, [sp, #20] mov r0, r5 + ldr r1, [sp, #16] bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady - ldr r1, [sp, #20] mov r0, r5 + ldr r1, [sp, #16] bl FlashReadStatus - ldr r3, [sp, #20] - ands r0, r0, #1 - mvnne r0, #0 - str r0, [r6, #0] - ldr r1, [r7, #856] + ldr r3, [sp, #16] + sbfx r0, r0, #0, #1 + str r0, [fp] mov r0, r5 + ldr r1, [r8, #4] add r1, r1, r3 bl FlashProgFirstCmd - ldr r3, [r6, #8] - ldr r2, [r6, #12] + ldr r3, [fp, #8] + ldr r2, [fp, #12] mov r1, #1 cmp r3, #0 mov r0, r5 addne r3, r3, #2048 cmp r2, #0 addne r2, r2, #8 - str r2, [sp, #0] - mov r2, fp + str r2, [sp] + mov r2, r10 bl NandcXferData - ldr r3, [sp, #20] - ldr r1, [r7, #856] + ldr r1, [r8, #4] mov r0, r5 + ldr r3, [sp, #16] add r1, r1, r3 bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #16] bl FlashReadStatus tst r0, #1 mov r0, r5 mvnne r3, #0 - strne r3, [r6, #0] + strne r3, [fp] bl NandcFlashDeCs -.L1377: - add r8, r8, #1 - add r6, r6, #36 -.L1375: - cmp r8, sl - bne .L1382 - ldr r3, [sp, #12] +.L1959: + add r7, r7, #1 + add fp, fp, #36 + b .L1957 +.L1987: + ldr r3, [sp, #8] cmp r3, #0 - movne r6, #0 - ldrne r5, .L1393+8 - bne .L1383 - b .L1384 -.L1389: - ldr r3, [r4, #0] + bne .L1975 +.L1971: + ldr r3, [sp, #12] + mov r0, #0 + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L1972 + bl __stack_chk_fail +.L1975: + ldr r5, .L1988+12 + mov r7, #0 + mov r8, r5 +.L1964: + cmp r7, r6 + beq .L1971 + ldr r3, [r4] cmn r3, #1 - bne .L1385 + bne .L1965 ldr r1, [r4, #4] - ldr r0, .L1393+12 + ldr r0, .L1988+16 bl printk - b .L1386 -.L1385: - rsb r3, r6, sl + b .L1966 +.L1965: + rsb r3, r7, r6 mov r1, r9 - add r2, sp, #20 + add r2, sp, #16 mov r0, r4 uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #24 + str r3, [sp] + add r3, sp, #20 bl LogAddr2PhyAddr - ldr r2, [r5, #224] + ldr r2, [r5, #184] mov r3, #0 mov lr, r4 - add ip, sp, #28 - str r3, [r2, #0] - ldr r2, [r5, #228] - str r3, [r2, #0] + str r3, [r2] + ldr r2, [r5, #188] + str r3, [r2] ldmia lr!, {r0, r1, r2, r3} + add ip, sp, #24 stmia ip!, {r0, r1, r2, r3} ldmia lr!, {r0, r1, r2, r3} stmia ip!, {r0, r1, r2, r3} - add r0, sp, #28 - ldr r3, [lr, #0] + add r0, sp, #24 + ldr r3, [lr] mov r1, #1 mov r2, r9 - str r3, [ip, #0] - ldr r3, [r5, #224] + str r3, [ip] + ldr r3, [r5, #184] + str r3, [sp, #32] + ldr r3, [r5, #188] str r3, [sp, #36] - ldr r3, [r5, #228] - str r3, [sp, #40] bl FlashReadPages - ldr r7, [sp, #28] - cmn r7, #1 - bne .L1387 - ldr r0, .L1393+16 + ldr r10, [sp, #24] + cmn r10, #1 + bne .L1967 + ldr r0, .L1988+20 ldr r1, [r4, #4] bl printk - str r7, [r4, #0] -.L1387: + str r10, [r4] +.L1967: ldr r3, [r4, #12] cmp r3, #0 - beq .L1388 - ldr r2, [r3, #0] - ldr r3, [r5, #228] - ldr r3, [r3, #0] + beq .L1968 + ldr r2, [r3] + ldr r3, [r8, #188] + ldr r3, [r3] cmp r2, r3 - beq .L1388 - ldr r0, .L1393+20 + beq .L1968 + ldr r0, .L1988+24 ldr r1, [r4, #4] bl printk mvn r3, #0 - str r3, [r4, #0] -.L1388: + str r3, [r4] +.L1968: ldr r3, [r4, #8] cmp r3, #0 - beq .L1386 - ldr r2, [r3, #0] - ldr r3, [r5, #224] - ldr r3, [r3, #0] + beq .L1966 + ldr r2, [r3] + ldr r3, [r8, #184] + ldr r3, [r3] cmp r2, r3 - beq .L1386 - ldr r0, .L1393+24 + beq .L1966 + ldr r0, .L1988+28 ldr r1, [r4, #4] bl printk mvn r3, #0 - str r3, [r4, #0] -.L1386: - add r6, r6, #1 + str r3, [r4] +.L1966: + add r7, r7, #1 add r4, r4, #36 -.L1383: - cmp r6, sl - bne .L1389 -.L1384: - mov r0, #0 + b .L1964 +.L1972: add sp, sp, #68 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1394: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1989: .align 2 -.L1393: - .word .LANCHOR1 +.L1988: .word .LANCHOR0 + .word __stack_chk_guard + .word .LANCHOR1 .word .LANCHOR2 - .word .LC109 - .word .LC110 - .word .LC111 - .word .LC112 + .word .LC103 + .word .LC104 + .word .LC105 + .word .LC106 .fnend .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 2 + .global FtlLoadFactoryBbt + .type FtlLoadFactoryBbt, %function +FtlLoadFactoryBbt: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r7, #0 + ldr r5, .L2002 + ldr r6, .L2002+4 + ldr r3, [r5, #-2064] + sub r9, r6, #76 + ldr r8, [r5, #-2040] + sub r10, r6, #120 + mov fp, r9 + str r3, [r5, #220] + str r8, [r5, #224] +.L1991: + ldrh r3, [r10] + cmp r7, r3 + bcs .L2001 + ldrh r4, [r9] + mvn r3, #0 + movw ip, #61664 + strh r3, [r6, #2]! @ movhi + add r4, r4, r3 + uxth r4, r4 +.L1992: + ldrh r3, [fp] + sub r2, r3, #16 + cmp r4, r2 + ble .L1994 + mla r3, r3, r7, r4 + mov r1, #1 + ldr r0, .L2002+8 + mov r2, r1 + str ip, [sp, #4] + mov r3, r3, asl #10 + str r3, [r5, #216] + bl FlashReadPages + ldr r3, [r5, #212] + cmn r3, #1 + ldr ip, [sp, #4] + beq .L1993 + ldrh r3, [r8] + cmp r3, ip + streqh r4, [r6] @ movhi + beq .L1994 +.L1993: + sub r4, r4, #1 + uxth r4, r4 + b .L1992 +.L1994: + add r7, r7, #1 + b .L1991 +.L2001: + mov r0, #0 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2003: + .align 2 +.L2002: + .word .LANCHOR2 + .word .LANCHOR0+1946 + .word .LANCHOR2+212 + .fnend + .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt + .align 2 + .global FtlGetLastWrittenPage + .type FtlGetLastWrittenPage, %function +FtlGetLastWrittenPage: + .fnstart + @ args = 0, pretend = 0, frame = 104 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + cmp r1, #1 + ldr r6, .L2017 + .pad #108 + sub sp, sp, #108 + ldreq r2, .L2017+4 + mov r9, r1 + mov r7, r0, asl #10 + mov r1, #1 + ldr r3, [r6] + mov r0, sp + mov r8, #0 + str r8, [sp, #8] + str r3, [sp, #100] + movweq r3, #1874 + ldrne r3, .L2017+8 + ldreqh r4, [r2, r3] + mov r2, r9 + ldrneh r4, [r3] + add r3, sp, #36 + str r3, [sp, #12] + sub r5, r4, #1 + uxth r5, r5 + sxth r3, r5 + orr r3, r3, r7 + str r3, [sp, #4] + bl FlashReadPages + ldr r3, [sp, #36] + cmn r3, #1 + bne .L2007 +.L2008: + sxth r4, r8 + sxth r3, r5 + cmp r4, r3 + bgt .L2007 + add r4, r4, r3 + mov r0, sp + mov r1, #1 + mov r2, r9 + add r4, r4, r4, lsr #31 + mov r4, r4, asr #1 + sxth r3, r4 + orr r3, r3, r7 + str r3, [sp, #4] + bl FlashReadPages + ldr r3, [sp, #36] + cmn r3, #1 + bne .L2009 + ldr r3, [sp, #40] + cmn r3, #1 + bne .L2009 + ldr r3, [sp] + cmn r3, #1 + subne r5, r4, #1 + uxthne r5, r5 + bne .L2008 +.L2009: + add r3, r4, #1 + uxth r8, r3 + b .L2008 +.L2007: + ldr r2, [sp, #100] + sxth r0, r5 + ldr r3, [r6] + cmp r2, r3 + beq .L2012 + bl __stack_chk_fail +.L2012: + add sp, sp, #108 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} +.L2018: + .align 2 +.L2017: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR0+1872 + .fnend + .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage + .align 2 + .global FtlLoadBbt + .type FtlLoadBbt, %function +FtlLoadBbt: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + ldr r4, .L2052 + ldr r7, .L2052+4 + ldr r8, .L2052+8 + ldr r3, [r4, #-2064] + mov r9, r4 + ldr r6, [r4, #-2040] + str r3, [r4, #220] + str r6, [r4, #224] + bl FtlBbtMemInit + movw r3, #1870 + ldrh r5, [r7, r3] + sub r5, r5, #1 + uxth r5, r5 +.L2020: + ldrh r3, [r8] + sub r3, r3, #48 + cmp r5, r3 + ble .L2023 + mov r1, #1 + ldr r0, .L2052+12 + mov r2, r1 + mov r3, r5, asl #10 + str r3, [r4, #216] + bl FlashReadPages + ldr r3, [r4, #212] + cmn r3, #1 + bne .L2021 + ldr r3, [r9, #216] + mov r1, #1 + ldr r0, .L2052+12 + mov r2, r1 + add r3, r3, #1 + str r3, [r9, #216] + bl FlashReadPages +.L2021: + ldr r3, [r4, #212] + cmn r3, #1 + beq .L2022 + ldrh r2, [r6] + movw r3, #61649 + cmp r2, r3 + bne .L2022 + ldr r2, [r6, #4] + ldr r3, .L2052+16 + str r2, [r7, #1944] + ldrh r2, [r6, #8] + strh r5, [r3] @ movhi + strh r2, [r3, #4] @ movhi + b .L2023 +.L2022: + sub r5, r5, #1 + uxth r5, r5 + b .L2020 +.L2023: + ldr r7, .L2052+4 + movw r2, #65535 + add r5, r7, #1936 + ldrh r3, [r5] + cmp r3, r2 + beq .L2037 + ldrh r3, [r5, #4] + cmp r3, r2 + beq .L2027 + mov r1, #1 + ldr r0, .L2052+12 + mov r2, r1 + mov r3, r3, asl #10 + str r3, [r4, #216] + bl FlashReadPages + ldr r3, [r4, #212] + cmn r3, #1 + beq .L2027 + ldrh r2, [r6] + movw r3, #61649 + cmp r2, r3 + bne .L2027 + ldr r3, [r6, #4] + ldr r2, [r7, #1944] + cmp r3, r2 + strhi r3, [r7, #1944] + ldrhih r2, [r5, #4] + ldrhih r3, [r6, #8] + strhih r2, [r5] @ movhi + strhih r3, [r5, #4] @ movhi +.L2027: + ldrh r0, [r5] + mov r1, #1 + bl FtlGetLastWrittenPage + movw r8, #61649 + uxth r7, r0 + add r0, r0, #1 + strh r0, [r5, #2] @ movhi +.L2029: + sxth r3, r7 + cmp r3, #0 + blt .L2034 + ldrh r2, [r5] + mov r1, #1 + ldr r0, .L2052+12 + orr r3, r3, r2, asl #10 + str r3, [r4, #216] + ldr r3, [r4, #-2064] + mov r2, r1 + str r3, [r4, #220] + bl FlashReadPages + ldr r3, [r4, #212] + cmn r3, #1 + beq .L2030 + ldrh r3, [r6] + cmp r3, r8 + bne .L2030 +.L2034: + ldrh r2, [r6, #10] + ldrh r0, [r6, #12] + ldr r3, .L2052+4 + strh r2, [r5, #6] @ movhi + movw r2, #65535 + cmp r0, r2 + bne .L2031 + b .L2032 +.L2030: + sub r7, r7, #1 + uxth r7, r7 + b .L2029 +.L2031: + ldr r2, [r3, #1800] + cmp r0, r2 + beq .L2032 + movw r1, #1814 + ldrh r3, [r3, r1] + mov r3, r3, lsr #2 + cmp r0, r3 + cmpcc r2, r3 + bcs .L2032 + bl FtlSysBlkNumInit +.L2032: + ldr r6, .L2052+20 + mov r5, #0 + ldr r8, .L2052+24 + sub r7, r6, #134 +.L2035: + ldrh r3, [r7] + cmp r5, r3 + bcs .L2051 + ldrh r2, [r8] + ldr r1, [r4, #220] + ldr r0, [r6, #4]! + mov r2, r2, asl #2 + mla r1, r5, r2, r1 + bl ftl_memcpy + add r5, r5, #1 + b .L2035 +.L2051: + mov r0, #0 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L2037: + mvn r0, #0 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L2053: + .align 2 +.L2052: + .word .LANCHOR2 + .word .LANCHOR0 + .word .LANCHOR0+1870 + .word .LANCHOR2+212 + .word .LANCHOR0+1936 + .word .LANCHOR0+1960 + .word .LANCHOR2-1976 + .fnend + .size FtlLoadBbt, .-FtlLoadBbt + .align 2 + .global FtlScanSysBlk + .type FtlScanSysBlk, %function +FtlScanSysBlk: + .fnstart + @ args = 0, pretend = 0, frame = 32 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r5, #0 + ldr r7, .L2139 + mov r1, r5 + ldr r4, .L2139+4 + .pad #36 + sub sp, sp, #36 + movw r6, #1892 + ldr r2, [r7, #1900] + sub r3, r4, #1920 + ldr r0, [r4, #-1984] + mov r8, r4 + strh r5, [r3, #-8] @ movhi + movw r3, #1918 + mov r2, r2, asl #2 + strh r5, [r7, r3] @ movhi + bl ftl_memset + ldr r2, [r7, #1900] + mov r1, r5 + ldr r0, [r4, #-2012] + mov r2, r2, asl #1 + bl ftl_memset + ldrh r2, [r7, r6] + mov r1, r5 + ldr r0, [r4, #-2000] + mov r2, r2, asl #2 + bl ftl_memset + ldrh r2, [r7, r6] + ldr r0, [r7, #1920] + mov r1, r5 + mov r2, r2, asl #1 + bl ftl_memset + ldr r0, .L2139+8 + mov r1, #255 + mov r2, #16 + bl ftl_memset + movw r3, #1812 + ldrh r3, [r7, r3] + str r7, [sp, #20] + mov r7, r4 + str r3, [sp, #8] +.L2055: + ldr r3, .L2139+12 + ldr r2, [sp, #8] + ldr r0, .L2139 + ldrh r3, [r3] + cmp r3, r2 + bls .L2096 + ldr r1, .L2139+16 + mov r6, #36 + ldr r3, .L2139+20 + mov r5, #0 + ldr ip, [r4, #-2076] + sub r9, r1, #52 + ldr r2, [r4, #-3212] + ldrh r3, [r3] + ldr fp, [r4, #-3208] + ldrh r10, [r1] + str r5, [sp, #4] +.L2097: + uxth r1, r5 + cmp r1, r3 + bcs .L2134 + ldr r1, [sp, #8] + ldrb r0, [r9, r5] @ zero_extendqisi2 + str r2, [sp, #28] + str ip, [sp, #24] + str r3, [sp, #16] + bl V2P_block + str r0, [sp, #12] + bl FtlBbmIsBadBlock + cmp r0, #0 + ldr r1, [sp, #12] + ldr r3, [sp, #16] + ldr ip, [sp, #24] + ldr r2, [sp, #28] + bne .L2056 + ldr r0, [sp, #4] + mov r1, r1, asl #10 + mla r0, r6, r0, ip + stmib r0, {r1, r2} + ldr r1, [sp, #4] + mul r1, r10, r1 + add lr, r1, #3 + cmp r1, #0 + movlt r1, lr + bic r1, r1, #3 + add r1, fp, r1 + str r1, [r0, #12] + ldr r1, [sp, #4] + add r0, r1, #1 + uxth r1, r0 + str r1, [sp, #4] +.L2056: + add r5, r5, #1 + b .L2097 +.L2134: + ldr r3, [sp, #4] + cmp r3, #0 + beq .L2059 + mov r1, r3 + ldr r0, [r4, #-2076] + mov r2, #1 + ldr r9, .L2139 + bl FlashReadPages + mov r3, #0 + str r3, [sp, #12] +.L2060: + ldrh r3, [sp, #12] + ldr r2, [sp, #4] + cmp r3, r2 + bcs .L2059 + ldr r3, [sp, #12] + mov r10, #36 + mul r10, r10, r3 + ldr r3, [r4, #-2076] + add r2, r3, r10 + ldr r3, [r3, r10] + ldr r5, [r2, #4] + cmn r3, #1 + ldr r6, [r2, #12] + ubfx r5, r5, #10, #16 + bne .L2062 + mov fp, #16 + movw r3, #65535 +.L2061: + ldr r0, [r4, #-2076] + mov r1, #1 + str r3, [sp, #16] + add r0, r0, r10 + ldr r2, [r0, #4] + add r2, r2, #1 + str r2, [r0, #4] + mov r2, r1 + bl FlashReadPages + ldrh r2, [r6] + ldr r3, [sp, #16] + cmp r2, r3 + ldreq r3, [r8, #-2076] + mvneq r2, #0 + streq r2, [r3, r10] + beq .L2062 +.L2063: + ldr r2, [r7, #-2076] + ldr r2, [r2, r10] + cmn r2, #1 + bne .L2062 + sub fp, fp, #1 + uxth fp, fp + cmp fp, #0 + bne .L2061 +.L2062: + ldr r3, [r7, #-2076] + ldr r3, [r3, r10] + cmn r3, #1 + beq .L2065 + ldr r2, [r7, #-3848] + ldr r3, [r6, #4] + cmn r2, #1 + beq .L2066 + cmp r2, r3 + bhi .L2067 +.L2066: + cmn r3, #1 + addne r2, r3, #1 + strne r2, [r8, #-3848] +.L2067: + ldrh r2, [r6] + movw r1, #61604 + cmp r2, r1 + beq .L2069 + bhi .L2070 + movw r3, #61574 + cmp r2, r3 + bne .L2068 + ldr r2, .L2139+24 + ldr lr, [r8, #-2000] + ldrh ip, [r2] + ldrh r1, [r2, #26] + sub r0, ip, #1 + rsb r2, r1, r0 + str r2, [sp, #16] + uxth r3, r0 + b .L2083 +.L2070: + movw r3, #61634 + cmp r2, r3 + beq .L2072 + movw r3, #65535 + cmp r2, r3 + moveq r0, r5 + beq .L2133 + b .L2068 +.L2072: + ldr r3, [sp, #20] + ldr fp, .L2139+28 + ldr lr, [r4, #-1984] + ldr ip, [r3, #1900] + ldrh r2, [fp] + uxth r1, ip + sub r3, r1, #1 + rsb r1, r2, r1 + sub r1, r1, #1 + uxth r3, r3 + sxth r1, r1 + str r1, [sp, #24] +.L2074: + ldr r1, [sp, #24] + sxth r0, r3 + cmp r0, r1 + ble .L2135 + mov r10, r0, asl #2 + ldr r1, [r6, #4] + str r10, [sp, #16] + ldr r10, [lr, r0, asl #2] + cmp r1, r10 + bls .L2075 + ldr r1, [lr] + cmp r1, #0 + bne .L2076 + cmp r2, ip + addne r2, r2, #1 + strneh r2, [fp] @ movhi +.L2076: + uxth lr, r3 + mov r1, #0 +.L2077: + uxth r2, r1 + cmp r2, lr + bcs .L2136 + ldr ip, [r7, #-1984] + sxth r2, r2 + add r1, r1, #1 + add r10, ip, r2, asl #2 + ldr r10, [r10, #4] + str r10, [ip, r2, asl #2] + mov r2, r2, asl #1 + ldr ip, [r7, #-2012] + add r10, ip, r2 + ldrh r10, [r10, #2] + strh r10, [ip, r2] @ movhi + b .L2077 +.L2136: + ldr r2, [r4, #-1984] + mov r0, r0, asl #1 + ldr r1, [r6, #4] + ldr ip, [sp, #16] + str r1, [r2, ip] + ldr r2, [r4, #-2012] + strh r5, [r2, r0] @ movhi + sxth r0, r3 + cmp r0, #0 + bge .L2079 + b .L2068 +.L2075: + sub r3, r3, #1 + uxth r3, r3 + b .L2074 +.L2135: + cmp r0, #0 + bge .L2110 + b .L2068 +.L2079: + ldr r2, .L2139+28 + ldr r1, [r9, #1900] + ldrh r2, [r2] + rsb r1, r2, r1 + sub r1, r1, #1 + sxth r1, r1 + cmp r0, r1 + bgt .L2068 +.L2110: + add r2, r2, #1 + ldr r1, [r6, #4] + strh r2, [fp] @ movhi + sxth r3, r3 + ldr r2, [r4, #-1984] + str r1, [r2, r3, asl #2] + mov r3, r3, asl #1 + ldr r2, [r4, #-2012] + b .L2131 +.L2089: + ldr r10, [lr, r2, asl #2] + mov fp, r2, asl #2 + ldr r0, [r6, #4] + cmp r0, r10 + bhi .L2137 + sub r3, r3, #1 + uxth r3, r3 +.L2083: + ldr r0, [sp, #16] + sxth r2, r3 + cmp r2, r0 + bgt .L2089 + b .L2088 +.L2137: + ldr r0, [lr] + cmp r0, #0 + bne .L2085 + cmp r1, ip + addne r1, r1, #1 + ldrne r0, .L2139+32 + strneh r1, [r0] @ movhi +.L2085: + uxth lr, r3 + mov r0, #0 +.L2086: + uxth r1, r0 + cmp r1, lr + bcs .L2138 + ldr ip, [r4, #-2000] + sxth r1, r1 + add r0, r0, #1 + add r10, ip, r1, asl #2 + ldr r10, [r10, #4] + str r10, [ip, r1, asl #2] + mov r1, r1, asl #1 + ldr ip, [r9, #1920] + add r10, ip, r1 + ldrh r10, [r10, #2] + strh r10, [ip, r1] @ movhi + b .L2086 +.L2138: + ldr r1, [r8, #-2000] + mov r2, r2, asl #1 + ldr r0, [r6, #4] + str r0, [r1, fp] + ldr r1, .L2139 + ldr r1, [r1, #1920] + strh r5, [r1, r2] @ movhi +.L2088: + sxth r3, r3 + cmp r3, #0 + blt .L2068 + ldr r0, .L2139+32 + ldrh r2, [r0, #-26] + ldrh r1, [r0] + sub r2, r2, #1 + rsb r2, r1, r2 + sxth r2, r2 + cmp r3, r2 + bgt .L2068 + add r1, r1, #1 + ldr r2, [r8, #-2000] + strh r1, [r0] @ movhi + ldr r1, [r6, #4] + str r1, [r2, r3, asl #2] + mov r3, r3, asl #1 + ldr r2, [r9, #1920] +.L2131: + strh r5, [r2, r3] @ movhi + b .L2068 +.L2069: + ldr r2, .L2139+8 + movw r1, #65535 + ldrh r0, [r2] + cmp r0, r1 + streqh r5, [r2] @ movhi + beq .L2132 + ldrh r0, [r2, #4] + cmp r0, r1 + beq .L2091 + mov r1, #1 + bl FtlFreeSysBlkQueueIn +.L2091: + ldr r3, [r6, #4] + ldr r2, [r8, #-3808] + cmp r2, r3 + ldr r3, .L2139+8 + strcsh r5, [r3, #4] @ movhi + bcs .L2068 + ldrh r2, [r3] + strh r5, [r3] @ movhi + strh r2, [r3, #4] @ movhi + ldr r3, [r6, #4] +.L2132: + str r3, [r7, #-3808] + b .L2068 +.L2065: + ldrb r1, [r9, #140] @ zero_extendqisi2 + mov r0, r5 + cmp r1, #0 + beq .L2093 +.L2133: + mov r1, #0 +.L2093: + bl FtlFreeSysBlkQueueIn +.L2068: + ldr r3, [sp, #12] + add r3, r3, #1 + str r3, [sp, #12] + b .L2060 +.L2059: + ldr r3, [sp, #8] + add r5, r3, #1 + uxth r3, r5 + str r3, [sp, #8] + b .L2055 +.L2096: + ldr r3, .L2139+4 + ldr ip, [r3, #-2012] + ldrh r2, [ip] + cmp r2, #0 + beq .L2098 +.L2101: + ldr r0, [r0, #1920] + ldr r3, .L2139 + ldrh r2, [r0] + cmp r2, #0 + beq .L2099 + b .L2122 +.L2098: + sub r3, r3, #1920 + ldrh r3, [r3, #-8] + cmp r3, #0 + ldrne lr, [r0, #1900] + beq .L2101 +.L2102: + uxth r3, r2 + sxth r1, r3 + cmp r1, lr + bcs .L2101 + mov r5, r1, asl #1 + add r2, r2, #1 + ldrh r5, [ip, r5] + cmp r5, #0 + beq .L2102 + mov r6, #0 +.L2103: + ldr ip, [r0, #1900] + sxth r2, r3 + cmp r2, ip + bcs .L2101 + ldr lr, [r4, #-2012] + mov ip, r2, asl #1 + rsb r5, r1, r2 + add r3, r3, #1 + ldrh r8, [lr, ip] + mov r7, r5, asl #1 + uxth r3, r3 + strh r8, [lr, r7] @ movhi + ldr lr, [r4, #-1984] + ldr r2, [lr, r2, asl #2] + str r2, [lr, r5, asl #2] + ldr r2, [r4, #-2012] + strh r6, [r2, ip] @ movhi + b .L2103 +.L2099: + movw r1, #1918 + ldrh r1, [r3, r1] + cmp r1, #0 + movwne r1, #1892 + ldrneh ip, [r3, r1] + beq .L2122 +.L2106: + uxth r3, r2 + sxth r1, r3 + cmp r1, ip + bge .L2122 + mov lr, r1, asl #1 + add r2, r2, #1 + ldrh lr, [r0, lr] + cmp lr, #0 + beq .L2106 + ldr r0, .L2139 + mov r7, #0 + ldr r6, .L2139+24 +.L2107: + ldrh ip, [r6] + sxth r2, r3 + cmp r2, ip + bge .L2122 + ldr lr, [r0, #1920] + mov ip, r2, asl #1 + rsb r5, r1, r2 + add r3, r3, #1 + ldrh r9, [lr, ip] + mov r8, r5, asl #1 + uxth r3, r3 + strh r9, [lr, r8] @ movhi + ldr lr, [r4, #-2000] + ldr r2, [lr, r2, asl #2] + str r2, [lr, r5, asl #2] + ldr r2, [r0, #1920] + strh r7, [r2, ip] @ movhi + b .L2107 +.L2122: + mov r0, #0 + add sp, sp, #36 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2140: + .align 2 +.L2139: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR2-3816 + .word .LANCHOR0+1814 + .word .LANCHOR0+1884 + .word .LANCHOR0+1804 + .word .LANCHOR0+1892 + .word .LANCHOR2-1928 + .word .LANCHOR0+1918 + .fnend + .size FtlScanSysBlk, .-FtlScanSysBlk + .align 2 + .global FtlLoadSysInfo + .type FtlLoadSysInfo, %function +FtlLoadSysInfo: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r1, #0 + ldr r6, .L2170 + ldr r4, .L2170+4 + sub r7, r6, #3808 + ldr r3, [r6, #-2064] + sub r8, r7, #8 + ldr r0, [r6, #-4060] + str r3, [r6, #220] + ldr r3, [r6, #-2040] + str r3, [r6, #224] + movw r3, #1812 + ldrh r2, [r4, r3] + mov r2, r2, asl #1 + bl ftl_memset + ldrh r0, [r7, #-8] + movw r3, #65535 + cmp r0, r3 + bne .L2142 +.L2153: + mvn r0, #0 + b .L2143 +.L2142: + mov r1, #1 + ldr r10, .L2170+8 + bl FtlGetLastWrittenPage + ldrh r7, [r7, #-8] + mov r5, r6 + mov fp, r5 + uxth r6, r0 + add r0, r0, #1 + strh r0, [r8, #2] @ movhi +.L2144: + sxth r3, r6 + cmp r3, #0 + blt .L2152 + sxth r9, r7 + mov r1, #1 + ldr r0, .L2170+12 + mov r2, r1 + orr r3, r3, r9, asl #10 + str r3, [r5, #216] + ldr r3, [r5, #-2064] + str r3, [r5, #220] + bl FlashReadPages + ldrb r3, [r4] @ zero_extendqisi2 + cmp r3, #0 + beq .L2145 + ldr r3, [fp, #224] + ldr r2, [r3, #12] + cmp r2, #0 + beq .L2145 + ldr r3, .L2170+16 + ldr r0, [fp, #220] + str r2, [sp, #4] + ldrh r1, [r3] + str r3, [sp] + bl js_hash + ldr r2, [sp, #4] + cmp r2, r0 + beq .L2145 + cmp r6, #0 + ldr r3, [sp] + bne .L2146 + ldr r2, .L2170+20 + ldrh r2, [r2, #4] + cmp r9, r2 + uxthne r7, r2 + ldrneh r6, [r3, #-8] + bne .L2148 +.L2146: + mvn r3, #0 + str r3, [r5, #212] +.L2145: + ldr r3, [r5, #212] + cmn r3, #1 + beq .L2148 + ldr r3, [fp, #-2064] + ldr r3, [r3] + cmp r3, r10 + bne .L2148 + ldr r3, [fp, #-2040] + ldrh r2, [r3] + movw r3, #61604 + cmp r2, r3 + bne .L2148 +.L2152: + ldr r1, [r5, #220] + mov r2, #48 + movw r9, #1812 + ldr r0, .L2170+24 + bl ftl_memcpy + ldrh r2, [r4, r9] + ldr r1, [r5, #220] + ldr r0, [r5, #-4060] + add r1, r1, #48 + mov r2, r2, asl #1 + bl ftl_memcpy + ldrh r2, [r4, r9] + ldr r1, [r5, #220] + add r3, r2, #24 + ldr r0, [r5, #-3884] + ubfx r3, r3, #1, #30 + mov r2, r2, lsr #3 + add r2, r2, #4 + ldr r7, .L2170+4 + add r1, r1, r3, asl #2 + ldr r6, .L2170 + bl ftl_memcpy + movw r3, #1916 + ldrh r3, [r4, r3] + cmp r3, #0 + beq .L2150 + ldrh r2, [r7, r9] + ldr r1, [r6, #220] + ldr r0, [r6, #-1988] + mov r3, r2, lsr #3 + add r3, r3, r2, asl #1 + movw r2, #1908 + ldrh r2, [r7, r2] + add r3, r3, #52 + ubfx r3, r3, #2, #14 + mov r2, r2, asl #2 + add r1, r1, r3, asl #2 + bl ftl_memcpy + b .L2150 +.L2148: + sub r6, r6, #1 + uxth r6, r6 + b .L2144 +.L2150: + ldr r2, [r4, #4068] + ldr r3, .L2170+8 + ldr r6, .L2170+4 + cmp r2, r3 + bne .L2153 + ldr r7, .L2170+24 + movw r2, #1826 + ldrb r1, [r6, #4078] @ zero_extendqisi2 + ldrh r2, [r6, r2] + ldrh r3, [r7, #8] + ldr r4, .L2170 + cmp r1, r2 + sub r9, r4, #3808 + strh r3, [r8, #6] @ movhi + bne .L2153 + add r2, r6, #1872 + movw r1, #1878 + ldrh r1, [r6, r1] + ldrh r2, [r2] + str r3, [r4, #248] + mul r2, r3, r2 + str r2, [r6, #1932] + mul r2, r1, r2 + str r2, [r6, #1912] + add r2, r6, #1936 + ldrh r0, [r2, #6] + ldr r2, [r6, #1816] + rsb r0, r0, r2 + rsb r0, r3, r0 + movw r3, #1804 + ldrh r1, [r6, r3] + add r6, r6, #4096 + bl __aeabi_uidiv + sub r3, r4, #4032 + sub r2, r4, #3984 + sub ip, r4, #3792 + add lr, r2, #40 + strh r0, [r9, #-12] @ movhi + ldrh r0, [r7, #14] + strh r0, [r3, #-8] @ movhi + ldrh r3, [r7, #16] + mov r1, r3, lsr #6 + strh r1, [r9, #-230] @ movhi + ldrh r1, [r7, #18] + and r3, r3, #63 + strb r3, [r4, #-4034] + ldrb r3, [r6, #-17] @ zero_extendqisi2 + strh r1, [r2, #-8] @ movhi + ldrh r1, [r7, #20] + strb r3, [r4, #-4032] + mvn r3, #0 + strh r3, [ip, #-8] @ movhi + mov r3, #0 + mov r8, r1, lsr #6 + and r1, r1, #63 + strb r1, [r4, #-3986] + ldrb r1, [r6, #-16] @ zero_extendqisi2 + strh r8, [r2, #-6] @ movhi + sub r8, r4, #3936 + strh r3, [r9, #10] @ movhi + mov r9, r2 + strb r1, [r4, #-3984] + ldrh r1, [r7, #22] + strb r3, [r4, #-3794] + strb r3, [r4, #-3792] + strh r1, [r8, #-8] @ movhi + ldrh r1, [r7, #24] + str r3, [r4, #-3860] + mov r7, r1, lsr #6 + and r1, r1, #63 + strb r1, [r4, #-3938] + ldrb r1, [r6, #-15] @ zero_extendqisi2 + strh r7, [r2, #42] @ movhi + mov r7, ip + strb r1, [r4, #-3936] + str r3, [r4, #-3872] + ldr r1, [r6, #4] + str r3, [r4, #-3880] + str r3, [r4, #-3864] + str r3, [r4, #-3836] + str r3, [r4, #-3828] + str r3, [r4, #-3868] + ldr r3, [r6, #12] + str r1, [r4, #-3840] + ldr r1, [r4, #-3848] + ldr r2, [r5, #-3844] + cmp r3, r1 + strhi r3, [r4, #-3848] + ldr r3, [r6, #8] + cmp r3, r2 + ldrhi r2, .L2170 + strhi r3, [r2, #-3844] + movw r3, #65535 + cmp r0, r3 + beq .L2156 + ldr r0, .L2170+28 + bl make_superblock +.L2156: + ldrh r2, [r9, #-8] + movw r3, #65535 + cmp r2, r3 + beq .L2157 + ldr r0, .L2170+32 + bl make_superblock +.L2157: + ldrh r2, [r8, #-8] + movw r3, #65535 + cmp r2, r3 + beq .L2158 + ldr r0, .L2170+36 + bl make_superblock +.L2158: + ldrh r2, [r7, #-8] + movw r3, #65535 + cmp r2, r3 + beq .L2159 + ldr r0, .L2170+40 + bl make_superblock +.L2159: + mov r0, #0 +.L2143: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2171: + .align 2 +.L2170: + .word .LANCHOR2 + .word .LANCHOR0 + .word 1179929683 + .word .LANCHOR2+212 + .word .LANCHOR0+1882 + .word .LANCHOR2-3816 + .word .LANCHOR0+4068 + .word .LANCHOR2-4040 + .word .LANCHOR2-3992 + .word .LANCHOR2-3944 + .word .LANCHOR2-3800 + .fnend + .size FtlLoadSysInfo, .-FtlLoadSysInfo + .align 2 + .global FtlDumpBlockInfo + .type FtlDumpBlockInfo, %function +FtlDumpBlockInfo: + .fnstart + @ args = 0, pretend = 0, frame = 80 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2187 + ubfx r0, r0, #10, #16 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #108 + sub sp, sp, #108 + ldr r3, [r3] + mov r4, r1 + ldr r8, .L2187+4 + ldr r7, .L2187+8 + str r3, [sp, #100] + bl P2V_block_in_plane + add r5, r8, #1872 + ldr r1, .L2187+12 + ldrh r9, [r5] + mov r6, r0 + ldr r0, .L2187+16 + bl printk + ldr r2, [r7, #-4060] + mov r3, r6, asl #1 + mov r1, r6 + ldr r0, .L2187+20 + ldrh r2, [r2, r3] + bl printk + add r0, sp, #104 + strh r6, [r0, #-52]! @ movhi + bl make_superblock + ldrb r2, [r8, #140] @ zero_extendqisi2 + clz r3, r4 + cmp r2, #0 + mov r3, r3, lsr #5 + moveq r3, #0 + cmp r3, #0 + moveq r4, r3 + str r7, [sp, #44] + beq .L2173 + mov r0, r6 + bl ftl_get_blk_mode + cmp r0, #1 + mov r4, r0 + movweq r3, #1874 + ldreqh r9, [r8, r3] +.L2173: + ldr r0, .L2187+24 + mov r1, r4 + mov r2, r9 + ldrh r3, [r5] + bl printk + ldr r8, .L2187+8 + mov r6, #0 +.L2174: + ldr r3, .L2187+28 + add r0, sp, #66 + movw lr, #65535 + mov r10, #36 + ldrh r3, [r3] + mov r7, r3 + ldr r3, [r8, #-2076] + str r3, [sp, #28] + ldr r3, [r8, #-3212] + str r3, [sp, #32] + ldr r3, .L2187+32 + ldrh r2, [r3] + ldrh ip, [r3, #2] + str r2, [sp, #36] + ldr r2, [r8, #-3208] + str r2, [sp, #40] + mov r2, #0 + mov r5, r2 +.L2175: + uxth r3, r2 + cmp r3, r7 + bcs .L2185 + ldrh r3, [r0, #2]! + cmp r3, lr + beq .L2176 + ldr r1, [sp, #28] + orr r3, r6, r3, asl #10 + mla r1, r10, r5, r1 + str r3, [r1, #4] + ldr r3, [sp, #36] + mul r3, r3, r5 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + ldr fp, [sp, #32] + bic r3, r3, #3 + add r3, fp, r3 + str r3, [r1, #8] + mul r3, ip, r5 + add r5, r5, #1 + uxth r5, r5 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + ldr fp, [sp, #40] + bic r3, r3, #3 + add r3, fp, r3 + str r3, [r1, #12] +.L2176: + add r2, r2, #1 + b .L2175 +.L2185: + ldr r0, [r8, #-2076] + mov r1, r5 + mov r2, r4 + mov r10, #0 + bl FlashReadPages + mov fp, #36 +.L2178: + uxth r3, r10 + cmp r3, r5 + bcs .L2186 + ldr r3, [sp, #44] + mul r2, fp, r10 + ldrh r1, [sp, #52] + ldr lr, [r3, #-2076] + add r10, r10, #1 + add ip, lr, r2 + ldr r3, [ip, #12] + ldr r0, [ip, #8] + ldr r7, [r3] + str r7, [sp] + ldr r7, [r3, #4] + str r7, [sp, #4] + ldr r7, [r3, #8] + str r7, [sp, #8] + ldr r3, [r3, #12] + str r3, [sp, #12] + ldr r3, [r0] + str r3, [sp, #16] + ldr r3, [r0, #4] + ldr r0, .L2187+36 + str r3, [sp, #20] + ldr r2, [lr, r2] + ldr r3, [ip, #4] + bl printk + b .L2178 +.L2186: + add r6, r6, #1 + uxth r6, r6 + cmp r6, r9 + bne .L2174 +.L2180: + ldr r3, .L2187 + mov r0, #0 + ldr r2, [sp, #100] + ldr r3, [r3] + cmp r2, r3 + beq .L2181 + bl __stack_chk_fail +.L2181: + add sp, sp, #108 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2188: + .align 2 +.L2187: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR3+16 + .word .LC107 + .word .LC108 + .word .LC109 + .word .LANCHOR0+1804 + .word .LANCHOR0+1882 + .word .LC110 + .fnend + .size FtlDumpBlockInfo, .-FtlDumpBlockInfo + .align 2 + .global FtlScanAllBlock + .type FtlScanAllBlock, %function +FtlScanAllBlock: + .fnstart + @ args = 0, pretend = 0, frame = 72 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #100 + sub sp, sp, #100 + ldr r5, .L2205 + mov r6, #0 + ldr r0, .L2205+4 + ldr r1, .L2205+8 + ldr r3, [r5] + str r3, [sp, #92] + bl printk + str r5, [sp, #36] + ldr r5, .L2205+12 + mov r7, r5 +.L2190: + ldr r3, .L2205+16 + uxth r4, r6 + ldrh r3, [r3] + cmp r3, r4 + bls .L2201 + add r8, sp, #96 + mov r0, r4 + movw r9, #65535 + mov r10, #36 + strh r4, [r8, #-52]! @ movhi + bl ftl_get_blk_mode + ldr ip, [r5, #-4060] + mov r2, r4, asl #1 + mov r1, r4 + ldrh r2, [ip, r2] + mov r3, r0 + ldr r0, .L2205+20 + bl printk + mov r0, r8 + bl make_superblock + ldr r3, .L2205+24 + ldr lr, [r5, #-3208] + ldrh r2, [r3] + ldrh ip, [r3, #78] + ldrh r8, [r3, #80] + str r2, [sp, #24] + add r0, sp, #58 + ldr r2, [r5, #-2076] + str r2, [sp, #28] + ldr r2, [r5, #-3212] + str r2, [sp, #32] + mov r2, #0 + mov r4, r2 +.L2191: + ldr r1, [sp, #24] + uxth r3, r2 + cmp r3, r1 + bcs .L2202 + ldrh r3, [r0, #2]! + cmp r3, r9 + beq .L2192 + ldr r1, [sp, #28] + mov r3, r3, asl #10 + mla r1, r10, r4, r1 + str r3, [r1, #4] + mul r3, ip, r4 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + ldr fp, [sp, #32] + bic r3, r3, #3 + add r3, fp, r3 + str r3, [r1, #8] + mul r3, r8, r4 + add r4, r4, #1 + uxth r4, r4 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + bic r3, r3, #3 + add r3, lr, r3 + str r3, [r1, #12] +.L2192: + add r2, r2, #1 + b .L2191 +.L2202: + ldr r0, [r5, #-2076] + mov r1, r4 + mov r2, #0 + mov r8, #0 + bl FlashReadPages + mov r9, #36 +.L2194: + uxth r3, r8 + cmp r3, r4 + bcs .L2203 + mul r2, r9, r8 + ldr lr, [r7, #-2076] + ldrh r1, [sp, #44] + add r8, r8, #1 + add ip, lr, r2 + ldr r3, [ip, #12] + ldr r0, [ip, #8] + ldr r10, [r3] + str r10, [sp] + ldr r10, [r3, #4] + str r10, [sp, #4] + ldr r10, [r3, #8] + str r10, [sp, #8] + ldr r3, [r3, #12] + str r3, [sp, #12] + ldr r3, [r0] + str r3, [sp, #16] + ldr r3, [r0, #4] + ldr r0, .L2205+28 + str r3, [sp, #20] + ldr r2, [lr, r2] + ldr r3, [ip, #4] + bl printk + b .L2194 +.L2203: + ldr r0, [r7, #-2076] + mov r1, r4 + mov r2, #1 + mov r8, #0 + bl FlashReadPages + mov r9, #36 +.L2196: + uxth r3, r8 + cmp r3, r4 + bcs .L2204 + mul r2, r9, r8 + ldr lr, [r7, #-2076] + ldrh r1, [sp, #44] + add r8, r8, #1 + add ip, lr, r2 + ldr r3, [ip, #12] + ldr r0, [ip, #8] + ldr r10, [r3] + str r10, [sp] + ldr r10, [r3, #4] + str r10, [sp, #4] + ldr r10, [r3, #8] + str r10, [sp, #8] + ldr r3, [r3, #12] + str r3, [sp, #12] + ldr r3, [r0] + str r3, [sp, #16] + ldr r3, [r0, #4] + ldr r0, .L2205+32 + str r3, [sp, #20] + ldr r2, [lr, r2] + ldr r3, [ip, #4] + bl printk + b .L2196 +.L2204: + add r6, r6, #1 + b .L2190 +.L2201: + ldr r3, [sp, #36] + mov r0, #0 + ldr r2, [sp, #92] + ldr r3, [r3] + cmp r2, r3 + beq .L2199 + bl __stack_chk_fail +.L2199: + add sp, sp, #100 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2206: + .align 2 +.L2205: + .word __stack_chk_guard + .word .LC107 + .word .LANCHOR3+36 + .word .LANCHOR2 + .word .LANCHOR0+1814 + .word .LC111 + .word .LANCHOR0+1804 + .word .LC112 + .word .LC113 + .fnend + .size FtlScanAllBlock, .-FtlScanAllBlock + .align 2 + .global ftl_scan_all_ppa + .type ftl_scan_all_ppa, %function +ftl_scan_all_ppa: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2214 + movw r2, #1870 + stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + add r7, r3, #1872 + ldrh r1, [r3, r2] + .pad #28 + sub sp, sp, #28 + ldr r0, .L2214+4 + sub r9, r7, #2 + ldrh r2, [r7] + mov r6, #0 + bl printk + ldr r4, .L2214+8 +.L2208: + ldrh r3, [r9] + cmp r6, r3 + bcs .L2210 + mov r8, r6, asl #10 + mov r5, #0 +.L2211: + ldrh r3, [r7] + cmp r5, r3 + bcs .L2213 + add r3, r5, r8 + str r3, [r4, #216] + ldr r3, [r4, #-2064] + mov r2, #0 + mov r1, #1 + ldr r0, .L2214+12 + str r2, [r4, #212] + add r5, r5, #1 + str r3, [r4, #220] + ldr r3, [r4, #-2040] + str r3, [r4, #224] + bl FlashReadPages + ldr r3, [r4, #224] + ldr r2, [r4, #220] + ldr r0, .L2214+16 + 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, [r4, #216] + str r2, [sp, #16] + ldr r2, [r4, #212] + ldr r3, [r3] + bl printk + b .L2211 +.L2213: + add r6, r6, #1 + b .L2208 +.L2210: + ldr r0, .L2214+20 + ldr r1, .L2214+24 + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + b printk +.L2215: + .align 2 +.L2214: + .word .LANCHOR0 + .word .LC114 + .word .LANCHOR2 + .word .LANCHOR2+212 + .word .LC115 + .word .LC116 + .word .LANCHOR3+52 + .fnend + .size ftl_scan_all_ppa, .-ftl_scan_all_ppa + .align 2 .global FlashProgPages .type FlashProgPages, %function FlashProgPages: .fnstart @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} + ldr ip, .L2274 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #76 sub sp, sp, #76 - ldr r5, .L1423 - mov r9, r0 + ldr ip, [ip] + mov r4, r0 + ldr r5, .L2274+4 + mov r9, r2 str r1, [sp, #8] - mov sl, r2 - str r3, [sp, #16] - ldr ip, [r5, #3624] - ldrb r6, [r5, #852] @ zero_extendqisi2 + str ip, [sp, #68] + ldr ip, [r5, #692] + ldrb r7, [r5] @ zero_extendqisi2 + str r3, [sp, #20] ldrb ip, [ip, #19] @ zero_extendqisi2 - cmp r6, #0 - moveq fp, r5 - str ip, [sp, #20] - ldr ip, .L1423+4 - ldrb ip, [ip, #2997] @ zero_extendqisi2 + cmp r7, #0 + str ip, [sp, #16] + ldr ip, .L2274+8 + ldrb ip, [ip, #481] @ zero_extendqisi2 str ip, [sp, #12] - beq .L1396 + beq .L2217 bl FlashProgSlc2KPages - b .L1397 -.L1410: - mov r4, #36 - ldr r2, [sp, #8] - mul r4, r4, r6 - rsb r3, r6, r2 - mov r1, sl - add r2, sp, #28 + b .L2218 +.L2231: + mov r3, #36 + add r2, sp, #24 + mul r8, r3, r7 + ldr r3, [sp, #8] + mov r1, r9 + rsb r3, r7, r3 + add fp, r4, r8 uxtb r3, r3 - str r3, [sp, #0] - add r7, r9, r4 - add r3, sp, #32 - mov r0, r7 + str r3, [sp] + mov r0, fp + add r3, sp, #28 bl LogAddr2PhyAddr - ldrb r3, [r5, #3762] @ zero_extendqisi2 - ldr r2, [sp, #32] - cmp r2, r3 + ldrb r2, [r5, #1717] @ zero_extendqisi2 + ldr r3, [sp, #28] + mov r10, r0 + cmp r3, r2 mvncs r3, #0 - strcs r3, [r9, r4] - mov r8, r0 - bcs .L1399 - ldrb r1, [r5, #3837] @ zero_extendqisi2 - add r2, fp, r2, asl #4 + strcs r3, [r4, r8] + bcc .L2271 +.L2220: + add r7, r7, #1 +.L2217: + ldr r3, [sp, #8] + ldr r6, .L2274+4 + cmp r7, r3 + bcc .L2231 + b .L2272 +.L2271: + ldrb r1, [r5, #1793] @ zero_extendqisi2 + add r3, r5, r3, asl #4 cmp r1, #0 - ldr r2, [r2, #3636] - moveq r8, #0 - cmp r2, #0 - beq .L1401 - cmp r3, #1 - bne .L1402 - ldr r0, [r5, #3012] + ldr r3, [r3, #1596] + moveq r10, #0 + cmp r3, #0 + beq .L2222 + cmp r2, #1 + bne .L2223 + ldr r0, [r5, #76] bl NandcIqrWaitFlashReady -.L1402: - ldrb r0, [sp, #32] @ zero_extendqisi2 +.L2223: + ldrb r0, [sp, #28] @ zero_extendqisi2 bl FlashWaitCmdDone -.L1401: - ldr r2, [sp, #32] +.L2222: + ldr r3, [sp, #28] mov r1, #0 - cmp r8, #0 - add r3, r5, r2, asl #4 - movne r0, #36 - str r1, [r3, #3640] - ldr r1, [sp, #28] - str r7, [r3, #3636] - str r1, [r3, #3632] - addne r1, r6, #1 - mlane r1, r0, r1, r9 - strne r1, [r3, #3640] - add r3, fp, r2 - add r2, fp, r2, asl #4 - ldrb r4, [r3, #3764] @ zero_extendqisi2 - ldrb r3, [fp, #3762] @ zero_extendqisi2 + cmp r10, #0 + add r2, r5, r3, asl #4 + str r1, [r2, #1600] + ldr r1, [sp, #24] + str fp, [r2, #1596] + str r1, [r2, #1592] + addne r1, r8, #36 + addne r1, r4, r1 + strne r1, [r2, #1600] + add r2, r5, r3 + add r3, r5, r3, asl #4 + ldrb r6, [r2, #1720] @ zero_extendqisi2 + strb r6, [r3, #1588] + mov r0, r6 + ldrb r3, [r5, #1717] @ zero_extendqisi2 cmp r3, #1 - strb r4, [r2, #3628] - mov r0, r4 - bne .L1404 + bne .L2225 bl NandcWaitFlashReady - b .L1405 -.L1404: + b .L2226 +.L2225: bl NandcFlashCs - ldr r3, [sp, #32] - mov r0, r4 - ldr r1, [sp, #28] + mov r0, r6 + ldr r3, [sp, #28] + ldr r1, [sp, #24] add r3, r5, r3, asl #2 - ldr r2, [r3, #3588] + ldr r2, [r3, #656] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - mov r0, r4 + mov r0, r6 bl NandcFlashDeCs -.L1405: - ldr r2, [sp, #20] - sub r3, r2, #1 - cmp r3, #6 - bhi .L1406 - add r3, r5, r4 - ldrb r3, [r3, #3756] @ zero_extendqisi2 +.L2226: + ldr r3, [sp, #16] + sub r3, r3, #1 + cmp r3, #7 + bhi .L2227 + add r3, r5, r6 + ldrb r3, [r3, #1552] @ zero_extendqisi2 cmp r3, #0 - beq .L1406 - mov r0, r4 - ldrb r1, [r5, #1] @ zero_extendqisi2 - ldr r2, .L1423+8 + beq .L2227 + mov r0, r6 + ldrb r1, [r5, #699] @ zero_extendqisi2 + ldr r2, .L2274+12 mov r3, #0 bl HynixSetRRPara -.L1406: - mov r0, r4 +.L2227: + mov r0, r6 bl NandcFlashCs - cmp sl, #1 - mov r0, r4 - bne .L1407 - ldrb r3, [r5, #928] @ zero_extendqisi2 + cmp r9, #1 + mov r0, r6 + bne .L2228 + ldrb r3, [r5, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L1407 + beq .L2228 bl flash_enter_slc_mode - b .L1408 -.L1407: + b .L2229 +.L2228: bl flash_exit_slc_mode -.L1408: - mov r0, r4 - ldr r1, [sp, #28] +.L2229: + mov r0, r6 + ldr r1, [sp, #24] bl FlashProgFirstCmd - ldr r3, [r7, #12] - mov r0, r4 + ldr r3, [fp, #12] + mov r0, r6 mov r1, #1 + str r3, [sp] ldr r2, [sp, #12] - str r3, [sp, #0] - ldr r3, [r7, #8] + ldr r3, [fp, #8] bl NandcXferData - cmp r8, #0 - beq .L1409 - mov r0, r4 - ldr r1, [sp, #28] + cmp r10, #0 + beq .L2230 + mov r0, r6 + ldr r1, [sp, #24] bl FlashProgDpFirstCmd - ldr r3, [sp, #32] - ldr r1, [sp, #28] - mov r0, r4 + mov r0, r6 + add r8, r8, #36 + add r8, r4, r8 + ldr r3, [sp, #28] + ldr r1, [sp, #24] add r3, r5, r3, asl #2 - ldr r2, [r3, #3588] + ldr r2, [r3, #656] adds r2, r2, #0 movne r2, #1 bl FlashWaitReadyEN - ldr r3, [sp, #28] - ldr r1, [r5, #856] - mov r0, r4 + ldr r1, [r5, #4] + mov r0, r6 + ldr r3, [sp, #24] add r1, r1, r3 bl FlashProgDpSecondCmd - add r3, r6, #1 - mov r2, #36 - mov r0, r4 - mla r3, r2, r3, r9 + ldr r3, [r8, #12] + mov r0, r6 mov r1, #1 - ldr r2, [r3, #12] - str r2, [sp, #0] + str r3, [sp] ldr r2, [sp, #12] - ldr r3, [r3, #8] + ldr r3, [r8, #8] bl NandcXferData -.L1409: - mov r0, r4 - ldr r1, [sp, #28] +.L2230: + mov r0, r6 + ldr r1, [sp, #24] bl FlashProgSecondCmd - mov r0, r4 + mov r0, r6 bl NandcFlashDeCs - add r6, r6, r8 -.L1399: - add r6, r6, #1 -.L1396: + add r7, r7, r10 + b .L2220 +.L2272: + ldr r0, [r6, #76] + mov r5, #0 + bl NandcIqrWaitFlashReady + ldr r8, .L2274+16 + mov r7, r6 +.L2232: + ldrb r3, [r6, #1717] @ zero_extendqisi2 + cmp r5, r3 + bcs .L2273 + uxtb r0, r5 + bl FlashWaitCmdDone + cmp r9, #1 + bne .L2233 + ldrb r3, [r7, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L2233 + ldrb r0, [r8, r5, asl #4] @ zero_extendqisi2 + bl flash_exit_slc_mode +.L2233: + add r5, r5, #1 + b .L2232 +.L2273: + ldr r3, [sp, #20] + cmp r3, #0 + bne .L2235 +.L2243: + mov r0, #0 + b .L2218 +.L2235: + ldr r5, .L2274+20 + mov r6, #0 + mov r7, r5 +.L2236: ldr r3, [sp, #8] cmp r6, r3 - bcc .L1410 - ldr r5, .L1423 - mov r4, #0 - ldr r6, .L1423+12 - ldr r0, [r5, #3012] - bl NandcIqrWaitFlashReady - b .L1411 -.L1413: - uxtb r0, r4 - bl FlashWaitCmdDone - cmp sl, #1 - bne .L1412 - ldrb r3, [r5, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L1412 - ldrb r0, [r6, r4, asl #4] @ zero_extendqisi2 - bl flash_exit_slc_mode -.L1412: - add r4, r4, #1 -.L1411: - ldrb r3, [r5, #3762] @ zero_extendqisi2 - cmp r4, r3 - bcc .L1413 - ldr r2, [sp, #16] - cmp r2, #0 - ldreq r0, [sp, #16] - beq .L1397 - mov r5, #0 - ldr r4, .L1423+16 - ldr r6, [sp, #8] - b .L1414 -.L1419: - ldr r3, [r9, #0] + beq .L2243 + ldr r3, [r4] cmn r3, #1 - bne .L1415 - ldr r1, [r9, #4] - ldr r0, .L1423+20 + bne .L2237 + ldr r1, [r4, #4] + ldr r0, .L2274+24 bl printk - b .L1416 -.L1415: - rsb r3, r5, r6 - mov r1, sl - add r2, sp, #28 - mov r0, r9 + b .L2238 +.L2237: + ldr r3, [sp, #8] + mov r1, r9 + add r2, sp, #24 + mov r0, r4 + rsb r3, r6, r3 uxtb r3, r3 - str r3, [sp, #0] - add r3, sp, #32 + str r3, [sp] + add r3, sp, #28 bl LogAddr2PhyAddr - ldr r2, [r4, #224] + ldr r2, [r5, #184] mov r3, #0 - mov lr, r9 - add ip, sp, #36 - str r3, [r2, #0] - ldr r2, [r4, #228] - str r3, [r2, #0] + mov lr, r4 + str r3, [r2] + ldr r2, [r5, #188] + str r3, [r2] ldmia lr!, {r0, r1, r2, r3} + add ip, sp, #32 stmia ip!, {r0, r1, r2, r3} ldmia lr!, {r0, r1, r2, r3} stmia ip!, {r0, r1, r2, r3} - add r0, sp, #36 - ldr r3, [lr, #0] + add r0, sp, #32 + ldr r3, [lr] mov r1, #1 - mov r2, sl - str r3, [ip, #0] - ldr r3, [r4, #224] + mov r2, r9 + str r3, [ip] + ldr r3, [r5, #184] + str r3, [sp, #40] + ldr r3, [r5, #188] str r3, [sp, #44] - ldr r3, [r4, #228] - str r3, [sp, #48] bl FlashReadPages - ldr r7, [sp, #36] - cmn r7, #1 - bne .L1417 - ldr r0, .L1423+24 - ldr r1, [r9, #4] + ldr r8, [sp, #32] + cmn r8, #1 + bne .L2239 + ldr r0, .L2274+28 + ldr r1, [r4, #4] bl printk - str r7, [r9, #0] -.L1417: - ldr r3, [r9, #12] + str r8, [r4] +.L2239: + ldr r3, [r4, #12] cmp r3, #0 - beq .L1418 - ldr r2, [r3, #0] - ldr r3, [r4, #228] - ldr r3, [r3, #0] + beq .L2240 + ldr r2, [r3] + ldr r3, [r7, #188] + ldr r3, [r3] cmp r2, r3 - beq .L1418 - ldr r0, .L1423+28 - ldr r1, [r9, #4] + beq .L2240 + ldr r0, .L2274+32 + ldr r1, [r4, #4] bl printk mvn r3, #0 - str r3, [r9, #0] -.L1418: - ldr r3, [r9, #8] + str r3, [r4] +.L2240: + ldr r3, [r4, #8] cmp r3, #0 - beq .L1416 - ldr r2, [r3, #0] - ldr r3, [r4, #224] - ldr r3, [r3, #0] + beq .L2238 + ldr r2, [r3] + ldr r3, [r7, #184] + ldr r3, [r3] cmp r2, r3 - beq .L1416 - ldr r0, .L1423+32 - ldr r1, [r9, #4] + beq .L2238 + ldr r0, .L2274+36 + ldr r1, [r4, #4] bl printk mvn r3, #0 - str r3, [r9, #0] -.L1416: - add r5, r5, #1 - add r9, r9, #36 -.L1414: - cmp r5, r6 - bne .L1419 - mov r0, #0 -.L1397: + str r3, [r4] +.L2238: + add r6, r6, #1 + add r4, r4, #36 + b .L2236 +.L2218: + ldr r3, .L2274 + ldr r2, [sp, #68] + ldr r3, [r3] + cmp r2, r3 + beq .L2244 + bl __stack_chk_fail +.L2244: add sp, sp, #76 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1424: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2275: .align 2 -.L1423: +.L2274: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR0+4 - .word .LANCHOR0+3628 + .word .LANCHOR0+702 + .word .LANCHOR0+1588 .word .LANCHOR2 - .word .LC109 - .word .LC110 - .word .LC111 - .word .LC112 + .word .LC103 + .word .LC104 + .word .LC105 + .word .LC106 .fnend .size FlashProgPages, .-FlashProgPages .align 2 - .type FtlVpcTblFlush.part.14, %function -FtlVpcTblFlush.part.14: + .global FlashTestBlk + .type FlashTestBlk, %function +FlashTestBlk: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r1, #255 - ldr r4, .L1437 - mov r7, #3856 - ldr r6, .L1437+4 - ldr r3, [r4, #-956] - ldr r5, [r4, #-932] - str r3, [r4, #192] - ldr r3, .L1437+8 - str r5, [r4, #196] - ldrh r3, [r4, r3] - strh r3, [r5, #2] @ movhi - ldr r3, .L1437+12 - strh r3, [r5, #0] @ movhi - ldr r3, [r4, #-1764] - str r3, [r5, #4] - mov r3, #0 - str r3, [r5, #8] - str r3, [r5, #12] - ldr r3, .L1437+16 - str r3, [r4, #-2072] - ldr r3, .L1437+20 - str r3, [r4, #-2068] - ldr r3, .L1437+24 - ldrh r2, [r4, r3] - ldr r3, .L1437+28 - strh r2, [r4, r3] @ movhi - movw r3, #3870 - ldrh r3, [r6, r3] - strb r3, [r4, #-2062] - ldr r3, .L1437+32 - ldrh r2, [r4, r3] - sub r3, r3, #62 - strh r2, [r4, r3] @ movhi - add r3, r3, #64 - ldrh r2, [r4, r3] - ldrb r3, [r4, #-1990] @ zero_extendqisi2 - orr r2, r3, r2, asl #6 - ldr r3, .L1437+36 - strh r2, [r4, r3] @ movhi - ldrb r3, [r4, #-1988] @ zero_extendqisi2 - strb r3, [r4, #-2061] - ldr r3, .L1437+40 - ldrh r2, [r4, r3] - sub r3, r3, #106 - strh r2, [r4, r3] @ movhi - add r3, r3, #108 - ldrh r2, [r4, r3] - ldrb r3, [r4, #-1942] @ zero_extendqisi2 - orr r2, r3, r2, asl #6 - ldr r3, .L1437+44 - strh r2, [r4, r3] @ movhi - ldrb r3, [r4, #-1940] @ zero_extendqisi2 - strb r3, [r4, #-2060] - ldr r3, .L1437+48 - ldrh r2, [r4, r3] - sub r3, r3, #150 - strh r2, [r4, r3] @ movhi - add r3, r3, #152 - ldr r0, [r4, #192] - ldrh r2, [r4, r3] - ldrb r3, [r4, #-1894] @ zero_extendqisi2 - orr r2, r3, r2, asl #6 - ldr r3, .L1437+52 - strh r2, [r4, r3] @ movhi - ldrb r3, [r4, #-1892] @ zero_extendqisi2 - strb r3, [r4, #-2059] - ldr r3, [r4, #-1796] - str r3, [r4, #-2040] - ldr r3, [r4, #-1804] - str r3, [r4, #-2032] - ldr r3, [r4, #-1800] - str r3, [r4, #-2036] - ldr r3, .L1437+56 - ldrh r2, [r4, r3] - ldr r3, .L1437+60 - strh r2, [r4, r3] @ movhi - add r3, r3, #888 - ldrh r2, [r4, r3] - ldr r3, .L1437+64 - strh r2, [r4, r3] @ movhi - add r3, r3, #5952 - ldrh r2, [r6, r3] + ldr r3, .L2281 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + .pad #104 + sub sp, sp, #104 + ldr r2, [r3] + mov r4, r0 + ldr r5, .L2281+4 + mov r6, r3 + str r2, [sp, #100] + ldr r2, [r5, #168] + cmp r0, r2 + movcc r4, #0 + bcc .L2277 + ldr r3, [r5, #176] + add r0, sp, #36 + mov r1, #165 + mov r2, #32 + str r0, [sp, #12] + mov r4, r4, asl #10 + str r3, [sp, #8] + bl ftl_memset + mov r1, #90 + mov r2, #8 + ldr r0, [r5, #176] bl ftl_memset - ldr r1, .L1437+68 - mov r2, #48 - ldr r0, [r4, #192] - bl memcpy - ldrh r2, [r6, r7] - ldr r0, [r4, #192] - ldr r1, [r4, #-2016] - mov r2, r2, asl #1 - add r0, r0, #48 - bl memcpy - ldrh r2, [r6, r7] - ldr r3, [r4, #192] - add r0, r2, #24 - ldr r1, [r4, #-1840] - mov r2, r2, lsr #3 - mov r0, r0, lsr #1 - add r2, r2, #4 - add r0, r3, r0, asl #2 - bl memcpy - movw r3, #3960 - ldrh r3, [r6, r3] - cmp r3, #0 - beq .L1426 - ldrh r3, [r6, r7] - ldr r1, [r4, #192] - mov r0, r3, lsr #3 - add r0, r0, r3, asl #1 - mov r3, #3952 - add r0, r0, #52 - ldrh r2, [r6, r3] - ubfx r0, r0, #2, #14 - mov r2, r2, asl #2 - add r0, r1, r0, asl #2 - ldr r1, [r4, #-1028] - bl memcpy -.L1426: - mov r0, #0 - ldr r4, .L1437 - bl FtlUpdateVaildLpn - ldr sl, .L1437+8 - ldr r6, .L1437+72 - mov r7, #0 - movw r8, #65535 -.L1436: - ldr r3, [r4, #-956] - ldrh r2, [r4, sl] - ldr r0, .L1437+4 - str r3, [r4, #192] - ldr r3, [r4, #-932] - str r3, [r4, #196] - ldrh r3, [r4, r6] - orr r1, r3, r2, asl #10 - str r1, [r4, #188] - movw r1, #3918 - ldrh r1, [r0, r1] - sub r1, r1, #1 - cmp r3, r1 - blt .L1428 - ldr r3, .L1437+76 - ldrh r8, [r4, r3] - strh r2, [r4, r3] @ movhi - mov r3, #0 - strh r3, [r4, r6] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, [r4, #-1804] - add r2, r3, #1 - str r2, [r4, #-1804] - str r3, [r4, #-1764] - mov r2, r0, asl #10 - strh r0, [r4, sl] @ movhi - str r2, [r4, #188] - str r3, [r5, #4] - strh r0, [r5, #2] @ movhi -.L1428: mov r1, #1 - ldr r0, .L1437+80 mov r2, r1 - mov r3, r1 - bl FlashProgPages - ldrh r3, [r4, r6] - ldr r2, [r4, #184] - add r3, r3, #1 - cmn r2, #1 - uxth r3, r3 - strh r3, [r4, r6] @ movhi - bne .L1429 - cmp r3, #1 - add r7, r7, #1 - ldreq r2, .L1437+4 - movweq r3, #3918 - uxth r7, r7 - ldreqh r3, [r2, r3] - subeq r3, r3, #1 - streqh r3, [r4, r6] @ movhi - cmp r7, #3 - bls .L1436 - ldr r3, .L1437 - mov r2, r7 - ldr r0, .L1437+84 - ldr r1, [r3, #188] - bl printk - ldr r3, .L1437+4 - mov r2, #1 - str r2, [r3, #4040] - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L1429: - cmp r3, #1 - beq .L1436 - cmp r2, #256 - beq .L1436 - movw r3, #65535 - cmp r8, r3 - ldmeqfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} - mov r0, r8 - mov r1, #1 - bl FtlFreeSysBlkQueueIn - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L1438: - .align 2 -.L1437: - .word .LANCHOR2 - .word .LANCHOR0 - .word -1772 - .word -3932 - .word 1179929683 - .word 1342177360 - .word -1766 - .word -2064 - .word -1996 - .word -2056 - .word -1948 - .word -2052 - .word -1900 - .word -2048 - .word -1142 - .word -2028 - .word -2026 - .word .LANCHOR2-2072 - .word -1770 - .word -1768 - .word .LANCHOR2+184 - .word .LC113 - .fnend - .size FtlVpcTblFlush.part.14, .-FtlVpcTblFlush.part.14 - .align 2 - .global FtlVpcTblFlush - .type FtlVpcTblFlush, %function -FtlVpcTblFlush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L1441 - ldr r3, [r3, #4040] - cmp r3, #0 - bne .L1440 - bl FtlVpcTblFlush.part.14 -.L1440: - mov r0, #0 - ldmfd sp!, {r3, pc} -.L1442: - .align 2 -.L1441: - .word .LANCHOR0 - .fnend - .size FtlVpcTblFlush, .-FtlVpcTblFlush - .section .text.unlikely - .align 2 - .type FtlBbmTblFlush.part.16, %function -FtlBbmTblFlush.part.16: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r1, #0 - ldr r7, .L1456 - mov r5, #0 - ldr sl, .L1456+4 - movw r9, #3870 - ldr r8, .L1456+8 - ldr r3, [r7, #-932] - ldr r0, [r7, #-956] - str r3, [r7, #196] - movw r3, #3926 - str r0, [r7, #192] - ldrh r2, [sl, r3] - bl ftl_memset - b .L1444 -.L1445: - ldr r3, .L1456+12 - ldr r1, [r8, #4]! - ldrh r2, [r7, r3] - ldr r3, [r7, #192] - mul r0, r2, r5 - mov r2, r2, asl #2 - add r5, r5, #1 - add r0, r3, r0, asl #2 - bl memcpy -.L1444: - ldrh r3, [sl, r9] - ldr r4, .L1456+4 - cmp r5, r3 - ldr r6, .L1456 - blt .L1445 - ldr r5, [r6, #196] - mov r1, #255 - mov r2, #16 - mov r7, #0 - mov fp, r7 - mov r0, r5 - bl ftl_memset - ldr r3, .L1456+16 - strh r3, [r5, #0] @ movhi - ldr r3, [r4, #3988] - str r3, [r5, #4] - movw r3, #3980 - ldrh r3, [r4, r3] - strh r3, [r5, #2] @ movhi - mov r3, #3984 - ldrh r3, [r4, r3] - strh r3, [r5, #8] @ movhi - movw r3, #3986 - ldrh r3, [r4, r3] - strh r3, [r5, #10] @ movhi - ldr r3, [r4, #3844] - strh r3, [r5, #12] @ movhi - b .L1454 -.L1451: - mov fp, #1 -.L1454: - ldr r3, [r6, #-956] - movw r8, #3980 - ldr r4, .L1456+4 - mov r1, #0 - movw sl, #3982 - str r1, [r6, #184] - str r3, [r6, #192] - mov r9, #3984 - ldr r3, [r6, #-932] - ldrh r1, [r4, r8] - ldrh r2, [r4, sl] - str r3, [r6, #196] - ldrh r0, [r5, #10] - orr r3, r2, r1, asl #10 - str r3, [r6, #188] - ldrh r3, [r4, r9] - str r0, [sp, #0] - ldr r0, .L1456+20 - bl printk - movw r3, #3918 - ldrh r3, [r4, r3] - ldrh r2, [r4, sl] - sub r3, r3, #1 - cmp r2, r3 - blt .L1447 - ldr r3, [r4, #3988] - mov r1, #0 @ movhi - ldrh r2, [r4, r8] - add r3, r3, #1 - ldr r0, [r4, #4044] - str r3, [r4, #3988] - str r3, [r5, #4] - ldrh r3, [r4, r9] - strh r1, [r4, sl] @ movhi - mov r1, #1 - strh r2, [r5, #8] @ movhi - strh r2, [r4, r9] @ movhi - mov r2, r1 - strh r3, [r4, r8] @ movhi - mov r3, r3, asl #10 - str r3, [r6, #188] - str r3, [r0, #4] + mov r0, sp + str r4, [sp, #4] bl FlashEraseBlocks -.L1447: - ldr r4, .L1456 mov r1, #1 - ldr r8, .L1456+4 mov r2, r1 mov r3, r1 - add r0, r4, #184 + mov r0, sp bl FlashProgPages - movw r3, #3982 - ldrh r2, [r8, r3] - add r2, r2, #1 - strh r2, [r8, r3] @ movhi - ldr r3, [r6, #184] - cmn r3, #1 - bne .L1448 - add r7, r7, #1 - ldr r0, .L1456+24 - ldr r1, [r6, #188] - uxth r7, r7 - bl printk - cmp r7, #3 - bls .L1454 - ldr r0, .L1456+28 - mov r2, r7 - ldr r1, [r4, #188] - bl printk - mov r3, #1 - str r3, [r8, #4040] - b .L1455 -.L1448: - cmp fp, #0 - beq .L1451 -.L1455: - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1457: + mov r1, #0 + mov r2, #1 + ldr r4, [sp] + mov r0, sp + adds r4, r4, #0 + movne r4, #1 + rsb r4, r4, #0 + bl FlashEraseBlocks +.L2277: + ldr r2, [sp, #100] + mov r0, r4 + ldr r3, [r6] + cmp r2, r3 + beq .L2278 + bl __stack_chk_fail +.L2278: + add sp, sp, #104 + @ sp needed + ldmfd sp!, {r4, r5, r6, pc} +.L2282: .align 2 -.L1456: +.L2281: + .word __stack_chk_guard + .word .LANCHOR2 + .fnend + .size FlashTestBlk, .-FlashTestBlk + .align 2 + .global FlashMakeFactorBbt + .type FlashMakeFactorBbt, %function +FlashMakeFactorBbt: + .fnstart + @ args = 0, pretend = 0, frame = 88 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2339 + mov r1, #1 + stmfd sp!, {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 r3, [r3] + ldr r5, .L2339+4 + ldr r4, .L2339+8 + str r3, [sp, #84] + ldr r3, [r5, #180] + ldrh r8, [r4, #124] + ldr r0, .L2339+12 + str r3, [sp, #20] + ldrh r3, [r4, #126] + smulbb r8, r8, r3 + ldr r3, [r4, #692] + ldrb r3, [r3, #24] @ zero_extendqisi2 + uxth r8, r8 + str r3, [sp, #24] + ldrh r3, [r4, #4] + str r3, [sp, #16] + ldrb r3, [r4] @ zero_extendqisi2 + ldr r4, .L2339+8 + cmp r3, #1 + ldreq r3, [sp, #16] + moveq r3, r3, asl #1 + uxtheq r3, r3 + streq r3, [sp, #16] + bl printk + ldr r0, [r5, #180] + mov r1, #0 + mov r2, #4096 + bl ftl_memset + ldr r5, .L2339+4 + mov r3, r8, lsr #4 + str r3, [sp, #28] + mov r3, #0 + str r3, [sp, #8] +.L2285: + ldrb r7, [sp, #8] @ zero_extendqisi2 + ldrb r3, [r4, #1717] @ zero_extendqisi2 + cmp r3, r7 + bls .L2335 + add r3, r5, r7, asl #1 + ldrh r6, [r3, #196] + cmp r6, #0 + bne .L2315 + ldrh r2, [r4, #132] + mov r1, r6 + ldr r0, [r5, #148] + mov r9, r6 + mov r2, r2, asl #9 + bl ftl_memset + add r3, r4, r7 + ldrb r10, [r3, #1720] @ zero_extendqisi2 + mov r3, r7, asl #2 + add fp, r4, r3 + str r6, [sp, #4] + str r3, [sp, #32] +.L2287: + ldrh r3, [sp, #4] + cmp r3, r8 + str r3, [sp, #12] + bcs .L2296 + mvn r3, #0 + strb r3, [sp, #46] + strb r3, [sp, #47] + ldr r3, [sp, #24] + tst r3, #1 + beq .L2289 + ldr r3, [fp, #656] + add r2, sp, #46 + mov r0, r10 + add r3, r6, r3 + str r3, [sp, #36] + mov r1, r3 + bl FlashReadSpare + ldrb r2, [r4] @ zero_extendqisi2 + cmp r2, #1 + ldr r3, [sp, #36] + bne .L2289 + ldr r1, [r4, #4] + add r2, sp, #47 + mov r0, r10 + add r1, r3, r1 + bl FlashReadSpare + ldrb r3, [sp, #46] @ zero_extendqisi2 + ldrb r2, [sp, #47] @ zero_extendqisi2 + and r3, r3, r2 + strb r3, [sp, #46] +.L2289: + ldr r3, [sp, #24] + tst r3, #2 + beq .L2291 + ldr r3, [r4, #692] + mov r0, r10 + add r2, sp, #47 + ldrh r1, [r3, #10] + ldr r3, [fp, #656] + sub r1, r1, #1 + add r1, r1, r3 + add r1, r1, r6 + bl FlashReadSpare +.L2291: + ldr r3, [r4, #692] + ldrb r3, [r3, #7] @ zero_extendqisi2 + cmp r3, #1 + cmpne r3, #8 + ldrb r3, [sp, #46] @ zero_extendqisi2 + bne .L2292 + cmp r3, #0 + ldrneb r0, [sp, #47] @ zero_extendqisi2 + clzne r0, r0 + movne r0, r0, lsr #5 + bne .L2293 + b .L2314 +.L2292: + cmp r3, #255 + bne .L2314 + ldrb r0, [sp, #47] @ zero_extendqisi2 + subs r0, r0, #255 + movne r0, #1 + b .L2293 +.L2314: + mov r0, #1 +.L2293: + ldr r3, [sp, #24] + tst r3, #4 + beq .L2294 + ldr r3, .L2339+8 + mov r0, r10 + ldr r2, [sp, #32] + add r3, r3, r2 + ldr r1, [r3, #656] + add r1, r6, r1 + bl SandiskProgTestBadBlock +.L2294: + cmp r0, #0 + beq .L2295 + mov r1, r7 + ldr r2, [sp, #4] + ldr r0, .L2339+16 + add r9, r9, #1 + bl printk + ldr r1, [r5, #148] + mov ip, #1 + uxth r9, r9 + ldr r3, [sp, #12] + mov r0, r3, lsr #5 + and r3, r3, #31 + ldr r2, [r1, r0, asl #2] + orr r3, r2, ip, asl r3 + ldr r2, [sp, #28] + str r3, [r1, r0, asl #2] + ldrb r3, [r4, #1717] @ zero_extendqisi2 + mul r3, r3, r2 + cmp r9, r3 + bgt .L2296 +.L2295: + ldr r3, [sp, #4] + add r3, r3, #1 + str r3, [sp, #4] + ldr r3, [sp, #16] + add r6, r6, r3 + b .L2287 +.L2296: + mov r2, r9 + ldr r0, .L2339+20 + mov r1, r7 + bl printk + ldrb r3, [r4, #1717] @ zero_extendqisi2 + ldr r2, [sp, #28] + mul r3, r3, r2 + cmp r9, r3 + blt .L2298 + ldrh r2, [r4, #132] + mov r1, #0 + ldr r0, [r5, #148] + mov r2, r2, asl #9 + bl ftl_memset +.L2298: + cmp r7, #0 + ldreqh r10, [r5, #168] + moveq r6, r7 + moveq r9, #1 + bne .L2300 +.L2301: + ldr r3, .L2339+8 + ldrb r3, [r3, #1] @ zero_extendqisi2 + cmp r3, r10 + bls .L2336 + mov r0, r10 + bl FlashTestBlk + cmp r0, #0 + beq .L2302 + mov r1, r10 + ldr r0, .L2339+24 + bl printk + ldr r1, [r5, #148] + mov r0, r10, lsr #5 + add r6, r6, #1 + and r3, r10, #31 + ldr r2, [r1, r0, asl #2] + uxth r6, r6 + orr r3, r2, r9, asl r3 + str r3, [r1, r0, asl #2] +.L2302: + add r10, r10, #1 + uxth r10, r10 + b .L2301 +.L2336: + sub fp, r8, #1 + sub r9, r8, #50 + mov r10, #1 + uxth fp, fp +.L2304: + cmp fp, r9 + ble .L2337 + mov r0, fp + bl FlashTestBlk + cmp r0, #0 + beq .L2305 + mov r1, fp + ldr r0, .L2339+24 + bl printk + ldr r1, [r5, #148] + mov r0, fp, lsr #5 + and r3, fp, #31 + ldr r2, [r1, r0, asl #2] + orr r3, r2, r10, asl r3 + str r3, [r1, r0, asl #2] +.L2305: + sub fp, fp, #1 + uxth fp, fp + b .L2304 +.L2337: + ldr r3, .L2339+8 + ldr r2, [r5, #168] + ldrb r3, [r3, #1] @ zero_extendqisi2 + rsb r3, r2, r3 + cmp r6, r3 + bcc .L2300 + ldrh r2, [r4, #132] + mov r1, #0 + ldr r0, [r5, #148] + mov r2, r2, asl #9 + bl ftl_memset +.L2300: + ldrb r6, [sp, #8] @ zero_extendqisi2 + sub r10, r8, #1 + add r9, r5, r7, asl #1 + uxth r10, r10 + mul r6, r8, r6 +.L2308: + mov r1, r7 + ldr r0, .L2339+28 + mov r2, r10 + bl printk + ldr r1, [r5, #148] +.L2309: + mov r2, r10, lsr #5 + and r3, r10, #31 + ldr r2, [r1, r2, asl #2] + mov r3, r2, lsr r3 + ands r3, r3, #1 + subne r10, r10, #1 + uxthne r10, r10 + bne .L2309 +.L2338: + ldr r1, [sp, #20] + add r0, sp, #48 + ldr r2, .L2339+32 + strh r10, [r9, #196] @ movhi + strh r10, [r1, #2] @ movhi + strh r2, [r1] @ movhi + strh r3, [r1, #8] @ movhi + mov r1, #1 + ldr r3, [r5, #148] + mov r2, r1 + str r3, [sp, #56] + ldr r3, [r5, #180] + str r3, [sp, #60] + add r3, r10, r6 + mov r3, r3, asl #10 + str r3, [sp, #52] + bl FlashEraseBlocks + mov r1, #1 + mov r3, r1 + mov r2, r1 + add r0, sp, #48 + bl FlashProgPages + ldr r3, [sp, #48] + cmp r3, #0 + subne r10, r10, #1 + uxthne r10, r10 + bne .L2308 +.L2315: + ldr r3, [sp, #8] + add r3, r3, #1 + str r3, [sp, #8] + b .L2285 +.L2335: + ldr r3, .L2339 + ldr r2, [sp, #84] + ldr r3, [r3] + cmp r2, r3 + beq .L2312 + bl __stack_chk_fail +.L2312: + add sp, sp, #92 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2340: + .align 2 +.L2339: + .word __stack_chk_guard .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+4004 - .word -1024 - .word -3887 - .word .LC114 - .word .LC115 - .word .LC116 + .word .LC117 + .word .LC118 + .word .LC119 + .word .LC120 + .word .LC121 + .word -3872 .fnend - .size FtlBbmTblFlush.part.16, .-FtlBbmTblFlush.part.16 - .text + .size FlashMakeFactorBbt, .-FlashMakeFactorBbt + .align 2 + .global FtlLowFormatEraseBlock + .type FtlLowFormatEraseBlock, %function +FtlLowFormatEraseBlock: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + ldr r5, .L2391 + ldr r7, [r5, #4052] + ldrb r3, [r5, #1793] @ zero_extendqisi2 + cmp r7, #0 + str r3, [sp, #20] + movne r0, #0 + bne .L2342 + ldrb r3, [r5, #140] @ zero_extendqisi2 + mov r10, r5 + ldr r6, .L2391+4 + mov fp, r7 + mov r5, r7 + mov r4, r7 + mov r8, r10 + mov r9, #36 + str r1, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #12] + str r0, [r6, #-2088] +.L2343: + ldr r3, .L2391+8 + uxth r2, fp + ldr r7, .L2391 + ldrh r1, [r3] + cmp r1, r2 + bls .L2386 + mul r1, r9, r2 + ldr r0, [r8, #4056] + add r2, r8, r2 + mov r3, #0 + str r3, [r0, r1] + ldr r1, [sp, #8] + ldrb r0, [r2, #1832] @ zero_extendqisi2 + bl V2P_block + ldr r3, [sp, #4] + mov r7, r0 + cmp r3, #0 + beq .L2344 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L2345 +.L2344: + mov r0, r7 + bl FtlBbmIsBadBlock + cmp r0, #0 + addne r4, r4, #1 + uxthne r4, r4 + bne .L2345 + ldr r3, .L2391+12 + mov r7, r7, asl #10 + ldr r1, [r10, #4056] + ldrh r2, [r3] + mla r1, r9, r5, r1 + mul r2, r2, r5 + add r5, r5, #1 + uxth r5, r5 + cmp r2, #0 + str r0, [r1, #8] + add r0, r2, #3 + str r7, [r1, #4] + movlt r2, r0 + ldr r0, [r6, #-2036] + bic r2, r2, #3 + add r2, r0, r2 + str r2, [r1, #12] +.L2345: + add fp, fp, #1 + b .L2343 +.L2386: + cmp r5, #0 + beq .L2366 + ldr r3, [sp, #12] + mov r2, r5 + ldr r0, [r7, #4056] + mov r8, #0 + adds r6, r3, #0 + strb r8, [r7, #1793] + movne r6, #1 + mov r1, r6 + bl FlashEraseBlocks + ldrb r3, [sp, #20] @ zero_extendqisi2 + strb r3, [r7, #1793] + mov r7, r8 + mov r8, #36 +.L2349: + uxth r3, r7 + cmp r3, r5 + bcs .L2387 + mul r3, r8, r7 + ldr r2, [r10, #4056] + add r0, r2, r3 + ldr r3, [r2, r3] + cmn r3, #1 + bne .L2350 + ldr r0, [r0, #4] + add r4, r4, #1 + ubfx r0, r0, #10, #16 + uxth r4, r4 + bl FtlBbmMapBadBlock +.L2350: + add r7, r7, #1 + b .L2349 +.L2387: + ldr r3, [sp, #4] + cmp r3, #0 + bne .L2352 + mov r3, #6 + uxth r6, r6 + str r3, [sp, #16] + mov r3, #1 + str r3, [sp, #12] + b .L2353 +.L2352: + movw r3, #1874 + ldrh r3, [r10, r3] + str r3, [sp, #12] + ldrb r3, [r10, #140] @ zero_extendqisi2 + cmp r3, #0 + ldreq r3, [sp, #12] + moveq r6, #1 + movne r6, #1 + strne r6, [sp, #16] + moveq r3, r3, lsr #2 + streq r3, [sp, #16] +.L2353: + ldr r8, .L2391 + mov r7, #0 +.L2362: + ldr fp, .L2391+4 + mov r9, #0 + mov r5, r9 +.L2354: + ldr r3, .L2391+8 + ldr r10, .L2391 + ldrh r2, [r3] + uxth r3, r9 + cmp r2, r3 + bls .L2388 + mov r2, #36 + ldr r1, [r8, #4056] + mul r2, r2, r3 + add r3, r8, r3 + mov r0, #0 + str r0, [r1, r2] + ldr r1, [sp, #8] + ldrb r0, [r3, #1832] @ zero_extendqisi2 + bl V2P_block + ldr r3, [sp, #4] + mov r10, r0 + cmp r3, #0 + beq .L2355 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L2356 +.L2355: + mov r0, r10 + bl FtlBbmIsBadBlock + cmp r0, #0 + bne .L2356 + ldr r2, [r8, #4056] + mov r3, #36 + add r10, r7, r10, asl #10 + mla r2, r3, r5, r2 + ldr r3, [fp, #-2048] + str r3, [r2, #8] + ldr r3, .L2391+12 + str r10, [r2, #4] + ldrh r3, [r3] + mul r3, r3, r5 + add r5, r5, #1 + uxth r5, r5 + add r1, r3, #3 + cmp r3, #0 + movlt r3, r1 + ldr r1, [fp, #-2044] + bic r3, r3, #3 + add r3, r1, r3 + str r3, [r2, #12] +.L2356: + add r9, r9, #1 + b .L2354 +.L2388: + cmp r5, #0 + beq .L2366 + ldr r2, .L2391 + mov r3, #0 + mov r1, r5 + mov r9, #0 + mov fp, #36 + strb r3, [r2, #1793] + mov r3, #1 + ldr r0, [r2, #4056] + mov r2, r6 + bl FlashProgPages + ldr r3, .L2391 + ldrb r2, [sp, #20] @ zero_extendqisi2 + strb r2, [r3, #1793] +.L2359: + uxth r3, r9 + cmp r3, r5 + bcs .L2389 + mul r3, fp, r9 + ldr r2, .L2391 + ldr r2, [r2, #4056] + add r0, r2, r3 + ldr r3, [r2, r3] + cmp r3, #0 + beq .L2360 + ldr r0, [r0, #4] + add r4, r4, #1 + ubfx r0, r0, #10, #16 + uxth r4, r4 + bl FtlBbmMapBadBlock +.L2360: + add r9, r9, #1 + b .L2359 +.L2389: + ldr r3, [sp, #16] + add r7, r7, r3 + ldr r3, [sp, #12] + uxth r7, r7 + cmp r7, r3 + bcc .L2362 + mov r7, #0 + mov r8, #36 +.L2363: + uxth r3, r7 + cmp r3, r5 + ldr r3, [sp, #4] + bcs .L2390 + cmp r3, #0 + beq .L2364 + mul r3, r8, r7 + ldr r2, [r10, #4056] + add r1, r2, r3 + ldr r3, [r2, r3] + cmp r3, #0 + bne .L2364 + ldr r0, [r1, #4] + mov r1, #1 + ubfx r0, r0, #10, #16 + bl FtlFreeSysBlkQueueIn +.L2364: + add r7, r7, #1 + b .L2363 +.L2390: + adds r3, r3, #0 + ldr r2, [sp, #8] + movne r3, #1 + cmp r2, #63 + orrls r3, r3, #1 + cmp r3, #0 + beq .L2366 + ldr r0, [r10, #4056] + mov r1, r6 + mov r2, r5 + bl FlashEraseBlocks +.L2366: + mov r0, r4 +.L2342: + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2392: + .align 2 +.L2391: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1804 + .word .LANCHOR0+1884 + .fnend + .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FtlBbmTblFlush .type FtlBbmTblFlush, %function FtlBbmTblFlush: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L1460 - ldr r3, [r3, #4040] - cmp r3, #0 - bne .L1459 - bl FtlBbmTblFlush.part.16 -.L1459: + stmfd sp!, {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, .L2411 + ldr r6, [r5, #4052] + cmp r6, #0 + bne .L2395 + ldr r4, .L2411+4 + mov r1, r6 + ldr r7, .L2411+8 + ldr r10, .L2411+12 + ldr r3, [r4, #-2040] + ldr r0, [r4, #-2064] + str r3, [r4, #224] + movw r3, #1882 + ldrh r2, [r5, r3] + add r5, r5, #1936 + str r0, [r4, #220] + bl ftl_memset + sub r9, r5, #110 +.L2396: + ldrh r3, [r9] + ldr r8, .L2411 + cmp r6, r3 + bge .L2410 + ldrh r2, [r10] + ldr r3, [r4, #220] + ldr r1, [r7, #4]! + mul r0, r2, r6 + mov r2, r2, asl #2 + add r6, r6, #1 + add r0, r3, r0, asl #2 + bl ftl_memcpy + b .L2396 +.L2410: + ldr r6, [r4, #224] + mov r1, #255 + mov r2, #16 + ldr fp, .L2411+4 + mov r7, #0 + mov r0, r6 + mov r10, r7 + bl ftl_memset + ldr r3, .L2411+16 + strh r3, [r6] @ movhi + ldr r3, [r8, #1944] + str r3, [r6, #4] + ldrh r3, [r5] + strh r3, [r6, #2] @ movhi + ldrh r3, [r5, #4] + strh r3, [r6, #8] @ movhi + ldrh r3, [r5, #6] + strh r3, [r6, #10] @ movhi + ldr r3, [r8, #1800] + strh r3, [r6, #12] @ movhi +.L2398: + ldr r3, [r4, #-2064] + mov ip, #0 + ldrh r1, [r5] + ldrh r2, [r5, #2] + str r3, [r4, #220] + ldr r3, [r4, #-2040] + str ip, [r4, #212] + str ip, [sp, #12] + str r3, [r4, #224] + orr r3, r2, r1, asl #10 + ldrh r0, [r6, #10] + str r3, [r4, #216] + ldrh r3, [r5, #4] + str r0, [sp] + ldr r0, .L2411+20 + bl printk + ldr r9, .L2411+24 + ldrh r2, [r5, #2] + ldrh r3, [r9, #-62] + sub r3, r3, #1 + cmp r2, r3 + ldr ip, [sp, #12] + blt .L2399 + ldr r3, [r8, #1944] + mov r1, #1 + ldrh r2, [r9] + add r3, r3, #1 + ldr r0, [r8, #4056] + str r3, [r8, #1944] + str r3, [r6, #4] + ldrh r3, [r9, #4] + strh r2, [r6, #8] @ movhi + strh r2, [r9, #4] @ movhi + mov r2, r1 + strh r3, [r9] @ movhi + mov r3, r3, asl #10 + str r3, [fp, #216] + str r3, [r0, #4] + strh ip, [r9, #2] @ movhi + bl FlashEraseBlocks +.L2399: + ldr r9, .L2411+4 + mov r1, #1 + mov r3, r1 + mov r2, r1 + add r0, r9, #212 + bl FlashProgPages + ldrh r3, [r5, #2] + add r3, r3, #1 + strh r3, [r5, #2] @ movhi + ldr r3, [r4, #212] + cmn r3, #1 + bne .L2400 + add r7, r7, #1 + ldr r0, .L2411+28 + ldr r1, [fp, #216] + uxth r7, r7 + bl printk + cmp r7, #3 + bls .L2398 + mov r2, r7 + ldr r0, .L2411+32 + ldr r1, [r9, #216] + bl printk + ldr r3, .L2411 + mov r2, #1 + str r2, [r3, #4052] + b .L2395 +.L2400: + add r10, r10, #1 + cmp r10, #1 + beq .L2398 + cmp r3, #256 + beq .L2398 +.L2395: mov r0, #0 - ldmfd sp!, {r3, pc} -.L1461: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2412: .align 2 -.L1460: +.L2411: .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1960 + .word .LANCHOR2-1976 + .word -3887 + .word .LC122 + .word .LANCHOR0+1936 + .word .LC123 + .word .LC124 .fnend .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 + .global allocate_data_superblock + .type allocate_data_superblock, %function +allocate_data_superblock: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #20 + sub sp, sp, #20 + ldr r6, .L2468 + ldr r3, [r6, #4052] + cmp r3, #0 + bne .L2414 + ldr r10, .L2468+4 + mov r4, r0 + mov r7, r10 +.L2415: + ldr r3, .L2468+8 + ldrb r2, [r4, #8] @ zero_extendqisi2 + cmp r4, r3 + bne .L2416 + sub r3, r3, #100 + ldr ip, [r10, #-3224] + ldrh r3, [r3] + mul lr, ip, r3 + mov r0, r3, lsr #1 + add r1, r0, #1 + add r1, r1, lr, lsr #2 + ldr lr, [r6, #1796] + cmp lr, #0 + uxth r1, r1 + beq .L2417 + ldr lr, [r10, #-3824] + cmp lr, #39 + bhi .L2417 + cmp lr, #2 + bls .L2442 + cmp ip, #0 + movne r3, #0 + andeq r3, r3, #1 + cmp r3, #0 + moveq r1, r0 + beq .L2417 + b .L2442 +.L2416: + cmp r2, #1 + bne .L2442 + ldr r0, .L2468 + add r3, r0, #1824 + ldrh r3, [r3] + cmp r3, #1 + beq .L2442 + ldrb r3, [r0, #140] @ zero_extendqisi2 + cmp r3, #0 + bne .L2442 + ldr r3, .L2468+12 + ldr r0, [r0, #1796] + ldrh r3, [r3] + cmp r0, #0 + mov r1, r3, lsr #3 + beq .L2417 + ldr r0, [r10, #-3824] + cmp r0, #1 + rsbls r3, r3, r3, asl #3 + ubfxls r1, r3, #3, #16 +.L2417: + cmp r1, #0 + subne r1, r1, #1 + uxthne r1, r1 + b .L2418 +.L2442: + mov r1, #0 +.L2418: + ldr r0, .L2468+16 + bl List_pop_index_node + ldr r2, .L2468+12 + ldrh r3, [r2] + sub r3, r3, #1 + strh r3, [r2] @ movhi + ldr r3, .L2468+20 + ldrh r3, [r3] + uxth r9, r0 + cmp r3, r9 + bls .L2415 + ldr r3, [r10, #-4060] + mov r8, r9, asl #1 + ldrh r5, [r3, r8] + cmp r5, #0 + bne .L2415 + strh r9, [r4] @ movhi + mov r0, r4 + bl make_superblock + ldrb r3, [r4, #7] @ zero_extendqisi2 + cmp r3, #0 + beq .L2420 + ldr r3, .L2468 + mov fp, #36 + ldr r2, .L2468+24 + add r0, r4, #14 + ldr r1, [r3, #4056] + ldrh ip, [r2] + mov r3, r1 + mla r2, fp, ip, r1 + mov ip, r5 + str r2, [sp] + b .L2421 +.L2420: + ldr r3, [r10, #-4060] + b .L2463 +.L2421: + ldr r2, [sp] + cmp r3, r2 + beq .L2465 + str ip, [r3, #8] + movw lr, #65535 + str ip, [r3, #12] + add r3, r3, #36 + ldrh r2, [r0, #2]! + cmp r2, lr + movne r2, r2, asl #10 + mlane lr, fp, r5, r1 + addne r5, r5, #1 + uxthne r5, r5 + strne r2, [lr, #4] + b .L2421 +.L2465: + ldr r3, .L2468+28 + ldr r2, [r6, #1796] + rsb r3, r3, r4 + clz r3, r3 + cmp r2, #0 + mov r3, r3, lsr #5 + moveq r3, #0 + cmp r3, #0 + beq .L2424 + ldr r3, .L2468 + ldr r3, [r3, #4060] + ldrh r3, [r3, r8] + cmp r3, #40 + movhi r3, #0 + strhib r3, [r10, #-4032] +.L2424: + ldrb r3, [r4, #8] @ zero_extendqisi2 + ldr r2, [r6, #4060] + cmp r3, #0 + ldr fp, .L2468+32 + ldrh r3, [r2, r8] + bne .L2425 + cmp r3, #0 + mov r0, r9 + ldrneh r1, [fp] + moveq r3, #2 + addne r3, r3, r1 + mov r1, #0 + uxthne r3, r3 + strh r3, [r2, r8] @ movhi + ldr r3, [r7, #-3840] + add r3, r3, #1 + str r3, [r7, #-3840] + bl ftl_set_blk_mode + b .L2427 +.L2425: + add r3, r3, #1 + strh r3, [r2, r8] @ movhi + ldr r2, [r7, #-3884] + mov r1, r9, lsr #5 + ldr r3, [r7, #-3836] + mov r0, #1 + add r3, r3, #1 + str r3, [r7, #-3836] + ldr ip, [r2, r1, asl #2] + and r3, r9, #31 + orr r3, ip, r0, asl r3 + str r3, [r2, r1, asl #2] +.L2427: + ldr r3, [r6, #4060] + ldr r2, [r7, #-3828] + ldr r0, [r7, #-3840] + ldrh r3, [r3, r8] + cmp r3, r2 + ldrh r2, [fp] + strhi r3, [r10, #-3828] + ldr r3, [r7, #-3836] + mla r0, r0, r2, r3 + ldr r3, .L2468+20 + ldrh r1, [r3] + bl __aeabi_uidiv + ldr r2, [r7, #-2020] + ldr r1, [r6, #4056] + ldr r3, [r2, #16] + add r3, r3, #1 + str r3, [r2, #16] + mov r3, #36 + add r2, r1, #4 + mla r3, r3, r5, r1 + add r3, r3, #40 + str r0, [r7, #-3832] +.L2429: + add r2, r2, #36 + cmp r2, r3 + ldrne r1, [r2, #-36] + bicne r1, r1, #1020 + bicne r1, r1, #3 + strne r1, [r2, #-36] + bne .L2429 +.L2466: + ldrb r2, [r6, #140] @ zero_extendqisi2 + ldr r3, .L2468 + cmp r2, #0 + beq .L2431 + ldrb r2, [r4, #8] @ zero_extendqisi2 + ldr r0, [r3, #4056] + cmp r2, #1 + mov r2, r5 + moveq r1, #0 + movne r1, #1 + bl FlashEraseBlocks +.L2431: + ldrb r1, [r4, #8] @ zero_extendqisi2 + mov r2, r5 + ldr r0, [r6, #4056] + mov fp, #0 + bl FlashEraseBlocks + add r1, r4, #16 + mov r2, fp + mov ip, #36 +.L2433: + uxth r3, fp + cmp r3, r5 + bcs .L2467 + mul r3, ip, fp + ldr lr, [r6, #4056] + add r0, lr, r3 + ldr r3, [lr, r3] + cmn r3, #1 + bne .L2434 + ldr r0, [r0, #4] + add r2, r2, #1 + stmib sp, {r1, r3, ip} + ubfx r0, r0, #10, #16 + str r2, [sp] + bl FtlBbmMapBadBlock + ldmib sp, {r1, r3} + ldr ip, [sp, #12] + ldr r2, [sp] + strh r3, [r1] @ movhi + ldrb r3, [r4, #7] @ zero_extendqisi2 + sub r3, r3, #1 + strb r3, [r4, #7] +.L2434: + add fp, fp, #1 + add r1, r1, #2 + b .L2433 +.L2467: + cmp r2, #0 + beq .L2436 + mov r0, r9 + bl update_multiplier_value + bl FtlBbmTblFlush +.L2436: + ldrb r3, [r4, #7] @ zero_extendqisi2 + cmp r3, #0 + bne .L2437 + ldr r3, [r7, #-4060] +.L2463: + mvn r2, #0 + strh r2, [r3, r8] @ movhi + b .L2415 +.L2437: + ldr r2, .L2468+36 + ldr r1, .L2468+4 + ldrh r2, [r2] + strh r9, [r4] @ movhi + smulbb r3, r2, r3 + mov r2, #0 + strh r2, [r4, #2] @ movhi + strb r2, [r4, #6] + ldr r2, .L2468+4 + uxth r3, r3 + strh r3, [r4, #4] @ movhi + ldr r2, [r2, #-3848] + str r2, [r4, #12] + add r2, r2, #1 + str r2, [r1, #-3848] + ldrh r2, [r4] + ldr r1, [r1, #-4060] + mov r2, r2, asl #1 + strh r3, [r1, r2] @ movhi +.L2414: + mov r0, #0 + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2469: + .align 2 +.L2468: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR2-3944 + .word .LANCHOR2-4044 + .word .LANCHOR2-4048 + .word .LANCHOR0+1812 + .word .LANCHOR0+1804 + .word .LANCHOR2-4040 + .word .LANCHOR0+1864 + .word .LANCHOR0+1872 + .fnend + .size allocate_data_superblock, .-allocate_data_superblock + .align 2 .global FtlGcFreeBadSuperBlk .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - mov r9, r0 - ldr r4, .L1472 - ldr r3, .L1472+4 - ldrh r3, [r4, r3] + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + ldr r5, .L2484 + ldrh r3, [r5, #-6] cmp r3, #0 - movne r6, #0 - movne sl, r4 - bne .L1463 - b .L1464 -.L1470: - add r3, r3, r6 - mov r1, r9 - mov r5, #0 - ldr r7, .L1472+4 - ldrb r0, [r3, #3874] @ zero_extendqisi2 - bl V2P_block + beq .L2472 + sub r5, r5, #6 mov r8, r0 - b .L1465 -.L1469: - add r3, r4, r5, asl #1 - sub r3, r3, #1120 - sub r3, r3, #12 - ldrh r3, [r3, #0] - cmp r3, r8 - bne .L1466 + mov r7, #0 + mov r9, r5 +.L2471: + ldr r3, .L2484+4 + uxth r2, r7 + ldrh r3, [r3] + cmp r3, r2 + bls .L2481 + ldr r3, .L2484+8 mov r1, r8 - ldr r0, .L1472+8 + mov r10, #0 + add r3, r3, r2 + ldrb r0, [r3, #1832] @ zero_extendqisi2 + bl V2P_block + ldr ip, .L2484+12 + mov fp, r0 +.L2473: + ldrh r3, [r5] + uxth r4, r10 + cmp r3, r4 + bls .L2482 + mov r3, r4, asl #1 + add r6, ip, r3 + ldrh r3, [ip, r3] + cmp r3, fp + bne .L2474 + mov r1, fp + ldr r0, .L2484+16 + str ip, [sp, #4] bl printk - mov r0, r8 + mov r0, fp bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh r1, [r4, r7] - mov r3, r5 - b .L1467 -.L1468: - add r0, r3, #1 - add r3, r4, r3, asl #1 - sub r3, r3, #1120 - add r2, r4, r0, asl #1 - sub r2, r2, #1120 - sub r2, r2, #12 - ldrh r2, [r2, #0] - strh r2, [r3, #-12] @ movhi - uxth r3, r0 -.L1467: - cmp r3, r1 - bcc .L1468 - sub r1, r1, #1 - strh r1, [sl, r7] @ movhi -.L1466: - add r5, r5, #1 - uxth r5, r5 -.L1465: - ldrh r3, [r4, r7] - cmp r3, r5 - bhi .L1469 - add r6, r6, #1 - uxth r6, r6 -.L1463: - ldr r3, .L1472+12 - movw r2, #3848 - ldrh r2, [r3, r2] - cmp r2, r6 - bhi .L1470 + ldrh r2, [r5] + mov r3, r6 + ldr ip, [sp, #4] +.L2475: + cmp r4, r2 + ldrcch r1, [r3, #2] + addcc r4, r4, #1 + uxthcc r4, r4 + strcch r1, [r3], #2 @ movhi + bcc .L2475 +.L2483: + sub r2, r2, #1 + strh r2, [r9] @ movhi +.L2474: + add r10, r10, #1 + b .L2473 +.L2482: + add r7, r7, #1 + b .L2471 +.L2481: bl FtlGcReFreshBadBlk -.L1464: +.L2472: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L1473: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2485: .align 2 -.L1472: - .word .LANCHOR2 - .word -1134 - .word .LC117 +.L2484: + .word .LANCHOR2-3168 + .word .LANCHOR0+1804 .word .LANCHOR0 + .word .LANCHOR2-3172 + .word .LC125 .fnend .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 @@ -12796,64 +14758,58 @@ update_vpc_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r2, r0, asl #1 - ldr r3, .L1482 + ldr r2, .L2496 + mov r3, r0, asl #1 + stmfd sp!, {r4, lr} + .save {r4, lr} mov r4, r0 - ldr r1, [r3, #-2016] - ldrh r2, [r1, r2] - cmp r2, #0 - bne .L1475 - ldr r1, .L1482+4 - ldrh r0, [r3, r1] + ldr r1, [r2, #-4060] + ldrh r3, [r1, r3] + cmp r3, #0 + bne .L2487 + sub r1, r2, #3792 + ldrh r0, [r1, #-8] cmp r0, r4 - mvneq r2, #0 - streqh r2, [r3, r1] @ movhi - beq .L1477 - ldr r1, .L1482+8 - ldrh r1, [r3, r1] + mvneq r3, #0 + streqh r3, [r1, #-8] @ movhi + beq .L2489 + sub r1, r2, #4032 + ldrh r1, [r1, #-8] cmp r1, r4 - beq .L1478 - ldr r1, .L1482+12 - ldrh r1, [r3, r1] + beq .L2495 + sub r1, r2, #3984 + ldrh r1, [r1, #-8] cmp r1, r4 - beq .L1478 - ldr r1, .L1482+16 - ldrh r3, [r3, r1] - cmp r3, r4 - beq .L1478 -.L1477: + beq .L2495 + sub r2, r2, #3936 + ldrh r2, [r2, #-8] + cmp r2, r4 + beq .L2495 +.L2489: mov r1, r4 - ldr r0, .L1482+20 + ldr r0, .L2496+4 bl List_remove_node - ldr r5, .L1482 - ldr r3, .L1482+24 + ldr r2, .L2496+8 mov r0, r4 - ldrh r2, [r5, r3] - sub r2, r2, #1 - strh r2, [r5, r3] @ movhi + ldrh r3, [r2, #-4] + sub r3, r3, #1 + strh r3, [r2, #-4] @ movhi bl free_data_superblock mov r0, r4 bl FtlGcFreeBadSuperBlk - mov r2, #1 - b .L1478 -.L1475: + mov r0, #1 + ldmfd sp!, {r4, pc} +.L2487: bl List_update_data_list - mov r2, #0 -.L1478: - mov r0, r2 - ldmfd sp!, {r3, r4, r5, pc} -.L1483: +.L2495: + mov r0, #0 + ldmfd sp!, {r4, pc} +.L2497: .align 2 -.L1482: +.L2496: .word .LANCHOR2 - .word -1760 - .word -1996 - .word -1948 - .word -1900 - .word .LANCHOR2-2020 - .word -2008 + .word .LANCHOR2-4064 + .word .LANCHOR2-4048 .fnend .size update_vpc_list, .-update_vpc_list .align 2 @@ -12868,617 +14824,534 @@ decrement_vpc_count: stmfd sp!, {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r4, r0 - beq .L1485 - ldr r2, .L1490 - mov r3, r0, asl #1 - ldr r2, [r2, #-2016] - ldrh r1, [r2, r3] - cmp r1, #0 - subne r1, r1, #1 - strneh r1, [r2, r3] @ movhi - bne .L1485 - ldmfd sp!, {r4, r5, r6, lr} - b decrement_vpc_count.part.18 -.L1485: - ldr r6, .L1490 + beq .L2499 + ldr r5, .L2509 + mov r6, r0, asl #1 + ldr r3, [r5, #-4060] + ldrh r2, [r3, r6] + cmp r2, #0 + subne r2, r2, #1 + strneh r2, [r3, r6] @ movhi + bne .L2499 + mov r1, r4 + ldr r0, .L2509+4 + bl printk + ldr r3, [r5, #-4060] + mov r2, #32 + sub r0, r5, #4048 + mov r1, r4 + strh r2, [r3, r6] @ movhi + bl test_node_in_list + cmp r0, #0 + beq .L2501 + mov r1, r4 + sub r0, r5, #4048 + bl List_remove_node + sub r2, r5, #4032 + mov r0, r4 + ldrh r3, [r2, #-12] + sub r3, r3, #1 + strh r3, [r2, #-12] @ movhi + bl INSERT_DATA_LIST + ldr r3, [r5, #-4060] + ldr r0, .L2509+8 + mov r1, r4 + ldrh r2, [r3, r6] + bl printk +.L2501: + mov r0, r4 + bl FtlGcRefreshBlock + b .L2504 +.L2499: + ldr r5, .L2509+12 movw r3, #65535 - ldr r5, .L1490+4 - ldrh r0, [r6, r5] + ldrh r0, [r5] cmp r0, r3 - streqh r4, [r6, r5] @ movhi - moveq r0, #0 - ldmeqfd sp!, {r4, r5, r6, pc} + streqh r4, [r5] @ movhi + beq .L2504 cmp r0, r4 - beq .L1489 + beq .L2504 bl update_vpc_list - strh r4, [r6, r5] @ movhi + strh r4, [r5] @ movhi adds r0, r0, #0 movne r0, #1 ldmfd sp!, {r4, r5, r6, pc} -.L1489: +.L2504: mov r0, #0 ldmfd sp!, {r4, r5, r6, pc} -.L1491: +.L2510: .align 2 -.L1490: +.L2509: .word .LANCHOR2 - .word -1016 + .word .LC126 + .word .LC127 + .word .LANCHOR2-1920 .fnend .size decrement_vpc_count, .-decrement_vpc_count .align 2 - .global get_new_active_ppa - .type get_new_active_ppa, %function -get_new_active_ppa: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r3, #0 - strb r3, [r0, #10] - mov r4, r0 - ldrb r3, [r0, #6] @ zero_extendqisi2 - movw r6, #65535 - ldr r5, .L1504 - ldr r7, .L1504+4 - add r3, r0, r3, asl #1 - ldrh r3, [r3, #16] - b .L1493 -.L1494: - ldrb r3, [r4, #6] @ zero_extendqisi2 - movw r2, #3848 - ldrh r2, [r5, r2] - add r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - ldreqh r3, [r4, #2] - addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi - moveq r3, #0 - streqb r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - add r3, r4, r3, asl #1 - ldrh r3, [r3, #16] -.L1493: - cmp r3, r6 - beq .L1494 - ldrb r2, [r4, #8] @ zero_extendqisi2 - cmp r2, #1 - bne .L1496 - ldrb r2, [r5, #928] @ zero_extendqisi2 - cmp r2, #0 - bne .L1496 - ldrh r2, [r4, #2] - add r2, r7, r2, asl #1 - sub r2, r2, #888 - ldrh r2, [r2, #0] - cmp r2, r6 - bne .L1496 - ldrh r3, [r4, #4] - ldrh r0, [r4, #0] - sub r3, r3, #1 - strh r3, [r4, #4] @ movhi - bl decrement_vpc_count - b .L1494 -.L1496: - ldrh r6, [r4, #2] - movw r5, #65535 - mov r7, r5 - orr r6, r6, r3, asl #10 - ldrh r3, [r4, #4] - sub r3, r3, #1 - strh r3, [r4, #4] @ movhi -.L1501: - ldr r2, .L1504 - movw r3, #3848 - ldrh r2, [r2, r3] - ldrb r3, [r4, #6] @ zero_extendqisi2 -.L1498: - add r3, r3, #1 - uxtb r3, r3 - cmp r3, r2 - ldreqh r3, [r4, #2] - addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi - moveq r3, #0 - add r1, r4, r3, asl #1 - ldrh r1, [r1, #16] - cmp r1, r5 - beq .L1498 - strb r3, [r4, #6] - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #1 - bne .L1499 - ldr r3, .L1504 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - ldrh r2, [r4, #2] - bne .L1502 - ldr r3, .L1504+4 - add r2, r3, r2, asl #1 - sub r2, r2, #888 - ldrh r3, [r2, #0] - cmp r3, r7 - bne .L1499 - ldrh r3, [r4, #4] - cmp r3, #0 - beq .L1499 - sub r3, r3, #1 - ldrh r0, [r4, #0] - strh r3, [r4, #4] @ movhi - bl decrement_vpc_count - b .L1501 -.L1502: - movw r1, #3918 - ldrh r1, [r3, r1] - cmp r2, r1 - bcc .L1499 - ldr r1, .L1504+4 - ldrh r2, [r4, #0] - ldrh r0, [r4, #4] - ldr r1, [r1, #-2016] - mov r2, r2, asl #1 - ldrh ip, [r1, r2] - rsb r0, r0, ip - strh r0, [r1, r2] @ movhi - mov r2, #0 - strh r2, [r4, #4] @ movhi - mov r1, r2 @ movhi - movw r2, #3916 - ldrh r3, [r3, r2] - strb r1, [r4, #6] - strh r3, [r4, #2] @ movhi -.L1499: - mov r0, r6 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1505: - .align 2 -.L1504: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size get_new_active_ppa, .-get_new_active_ppa - .align 2 - .type FtlSlcSuperblockCheck.part.19, %function -FtlSlcSuperblockCheck.part.19: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldrb r3, [r0, #6] @ zero_extendqisi2 - movw r6, #65535 - ldr r5, .L1512 - ldr r7, .L1512+4 - add r3, r0, r3, asl #1 - ldrh r3, [r3, #16] - b .L1507 -.L1508: - ldrb r3, [r4, #6] @ zero_extendqisi2 - movw r2, #3848 - ldrh r2, [r5, r2] - add r3, r3, #1 - uxtb r3, r3 - strb r3, [r4, #6] - cmp r2, r3 - ldreqh r3, [r4, #2] - addeq r3, r3, #1 - streqh r3, [r4, #2] @ movhi - moveq r3, #0 - streqb r3, [r4, #6] - ldrb r3, [r4, #6] @ zero_extendqisi2 - add r3, r4, r3, asl #1 - ldrh r3, [r3, #16] -.L1507: - cmp r3, r6 - beq .L1508 - ldrb r2, [r4, #8] @ zero_extendqisi2 - cmp r2, #1 - bne .L1510 - ldrb r3, [r5, #928] @ zero_extendqisi2 - cmp r3, #0 - bne .L1510 - ldrh r3, [r4, #2] - add r3, r7, r3, asl #1 - sub r3, r3, #888 - ldrh r3, [r3, #0] - cmp r3, r6 - bne .L1510 - ldrh r3, [r4, #4] - ldrh r0, [r4, #0] - sub r3, r3, #1 - strh r3, [r4, #4] @ movhi - bl decrement_vpc_count - ldrh r3, [r4, #4] - cmp r3, #0 - bne .L1508 - ldrh r2, [r4, #2] - strb r3, [r4, #6] - add r2, r2, #1 - strh r2, [r4, #2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1510: - ldr r3, .L1512 - ldrb r1, [r3, #928] @ zero_extendqisi2 - cmp r1, #0 - ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} - cmp r2, #1 - ldmnefd sp!, {r3, r4, r5, r6, r7, pc} - movw r2, #3918 - ldrh r1, [r4, #2] - ldrh r2, [r3, r2] - cmp r1, r2 - ldmccfd sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, .L1512+4 - ldrh r2, [r4, #0] - ldrh r0, [r4, #4] - ldr r1, [r1, #-2016] - mov r2, r2, asl #1 - ldrh ip, [r1, r2] - rsb r0, r0, ip - strh r0, [r1, r2] @ movhi - mov r2, #0 - strh r2, [r4, #4] @ movhi - mov r1, r2 @ movhi - movw r2, #3916 - ldrh r3, [r3, r2] - strb r1, [r4, #6] - strh r3, [r4, #2] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1513: - .align 2 -.L1512: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size FtlSlcSuperblockCheck.part.19, .-FtlSlcSuperblockCheck.part.19 - .align 2 .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldrh r2, [r0, #4] - cmp r2, #0 - bxeq lr - ldrh r2, [r0, #0] + stmfd sp!, {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + ldrh r3, [r0, #4] + cmp r3, #0 + ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + ldrh r2, [r0] movw r3, #65535 cmp r2, r3 - bxeq lr - b FtlSlcSuperblockCheck.part.19 + ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + ldrb r3, [r0, #6] @ zero_extendqisi2 + mov r4, r0 + ldr r5, .L2525 + ldr r6, .L2525+4 + add r3, r0, r3, asl #1 + ldr r7, .L2525+8 + ldrh r3, [r3, #16] +.L2515: + movw r1, #65535 + cmp r3, r1 + bne .L2524 +.L2517: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldrh r2, [r7] + add r3, r3, #1 + uxtb r3, r3 + strb r3, [r4, #6] + cmp r2, r3 + ldreqh r3, [r4, #2] + addeq r3, r3, #1 + streqh r3, [r4, #2] @ movhi + moveq r3, #0 + streqb r3, [r4, #6] + ldrb r3, [r4, #6] @ zero_extendqisi2 + add r3, r4, r3, asl #1 + ldrh r3, [r3, #16] + b .L2515 +.L2524: + ldrb r2, [r4, #8] @ zero_extendqisi2 + cmp r2, #1 + bne .L2518 + ldrb r3, [r5, #140] @ zero_extendqisi2 + cmp r3, #0 + bne .L2518 + ldrh r3, [r4, #2] + mov r3, r3, asl #1 + ldrh r3, [r6, r3] + cmp r3, r1 + bne .L2518 + ldrh r3, [r4, #4] + ldrh r0, [r4] + sub r3, r3, #1 + strh r3, [r4, #4] @ movhi + bl decrement_vpc_count + ldrh r2, [r4, #4] + cmp r2, #0 + bne .L2517 + ldrh r3, [r4, #2] + add r3, r3, #1 + b .L2523 +.L2518: + ldr r3, .L2525 + ldrb r1, [r3, #140] @ zero_extendqisi2 + cmp r1, #0 + ldmeqfd sp!, {r3, r4, r5, r6, r7, pc} + cmp r2, #1 + ldmnefd sp!, {r3, r4, r5, r6, r7, pc} + movw r2, #1874 + ldrh r1, [r4, #2] + ldrh r2, [r3, r2] + cmp r1, r2 + ldmccfd sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, .L2525+12 + add r3, r3, #1872 + ldrh r2, [r4] + ldrh ip, [r4, #4] + ldr r0, [r1, #-4060] + mov r2, r2, asl #1 + ldrh r1, [r0, r2] + rsb r1, ip, r1 + strh r1, [r0, r2] @ movhi + ldrh r3, [r3] + mov r2, #0 + strh r2, [r4, #4] @ movhi +.L2523: + strh r3, [r4, #2] @ movhi + strb r2, [r4, #6] + ldmfd sp!, {r3, r4, r5, r6, r7, pc} +.L2526: + .align 2 +.L2525: + .word .LANCHOR0 + .word .LANCHOR2-3136 + .word .LANCHOR0+1804 + .word .LANCHOR2 .fnend .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 - .type allocate_data_superblock.part.20, %function -allocate_data_superblock.part.20: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #28 - sub sp, sp, #28 - ldr r6, .L1555 - mov r4, r0 - ldr r5, .L1555+4 - mov sl, r6 -.L1550: - ldr r3, .L1555+8 - cmp r4, r3 - bne .L1518 - ldr r3, .L1555+12 - ldrh r2, [r5, r3] - ldr r3, [r5, #-1184] - mov r1, r2, lsr #1 - mul ip, r3, r2 - add r0, r1, #1 - add r0, r0, ip, lsr #2 - ldr ip, [r6, #3840] - cmp ip, #0 - uxth r0, r0 - beq .L1542 - ldr ip, [r5, #-1780] - cmp ip, #39 - bhi .L1542 - cmp ip, #2 - bls .L1547 - tst r2, #1 - beq .L1519 - cmp r3, #0 - moveq r1, r3 - beq .L1520 - b .L1519 -.L1518: - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #1 - bne .L1547 - movw r3, #3868 - ldrh r3, [r6, r3] - cmp r3, #1 - beq .L1547 - ldrb r3, [r6, #928] @ zero_extendqisi2 - cmp r3, #0 - bne .L1547 - sub r3, r3, #2000 - ldr r2, [r6, #3840] - ldrh r3, [r5, r3] - cmp r2, #0 - mov r1, r3, lsr #3 - beq .L1519 - ldr r2, [r5, #-1780] - cmp r2, #1 - movls r1, #7 - mulls r1, r1, r3 - movls r1, r1, lsr #3 - b .L1519 -.L1542: - mov r1, r0 -.L1519: - cmp r1, #0 - subne r1, r1, #1 - uxthne r1, r1 - b .L1520 -.L1547: - mov r1, #0 -.L1520: - ldrb r2, [r4, #8] @ zero_extendqisi2 - ldr r0, .L1555+16 - bl List_pop_index_node - ldr r3, .L1555+12 - ldrh r2, [r5, r3] - sub r2, r2, #1 - strh r2, [r5, r3] @ movhi - mov r3, #3856 - ldrh r3, [r6, r3] - uxth r9, r0 - cmp r3, r9 - bls .L1550 - ldr r3, [r5, #-2016] - mov r7, r9, asl #1 - ldrh r8, [r3, r7] - cmp r8, #0 - bne .L1550 - strh r9, [r4, #0] @ movhi - mov r0, r4 - bl make_superblock - ldrb r3, [r4, #7] @ zero_extendqisi2 - cmp r3, #0 - beq .L1551 - movw r3, #3848 - ldr ip, [r6, #4044] - ldrh r3, [r6, r3] - mov r1, r4 - str r4, [sp, #16] - mov r2, r8 - mov r0, r8 - stmia sp, {r4, ip} - str r3, [sp, #20] - mov r3, ip - b .L1523 -.L1525: - str r0, [r3, #8] - movw r4, #65535 - str r0, [r3, #12] - ldrh lr, [r1, #16] - cmp lr, r4 - beq .L1524 - ldr r4, [sp, #4] - mov ip, #36 - mov lr, lr, asl #10 - mla fp, ip, r8, r4 - add r8, r8, #1 - uxth r8, r8 - str lr, [fp, #4] -.L1524: - add r2, r2, #1 - add r3, r3, #36 - add r1, r1, #2 - uxth r2, r2 -.L1523: - ldr fp, [sp, #20] - cmp r2, fp - bne .L1525 - ldr r3, [r6, #3840] - ldr r4, [sp, #0] - cmp r3, #0 - beq .L1526 - ldr r3, .L1555+20 - cmp r4, r3 - bne .L1526 - ldr r3, [r6, #4048] - ldrh r3, [r3, r7] - cmp r3, #40 - movhi r3, #0 - strhib r3, [r5, #-1988] -.L1526: - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #0 - ldr r3, [sl, #4048] - ldrh r2, [r3, r7] - bne .L1527 - cmp r2, #0 - mov r0, r9 - movwne r1, #3906 - moveq r2, #2 - ldrneh r1, [r6, r1] - addne r2, r2, r1 - strh r2, [r3, r7] @ movhi - ldr r3, [r5, #-1796] - mov r1, #0 - add r3, r3, #1 - str r3, [r5, #-1796] - b .L1553 -.L1527: - add r2, r2, #1 - strh r2, [r3, r7] @ movhi - ldr r3, [r5, #-1792] - mov r0, r9 - mov r1, #1 - add r3, r3, #1 - str r3, [r5, #-1792] -.L1553: - bl ftl_set_blk_mode - ldr r3, [r6, #4048] - ldr fp, .L1555+4 - ldr r2, [r5, #-1784] - ldrh r3, [r3, r7] - ldr r0, [fp, #-1796] - cmp r3, r2 - strhi r3, [r5, #-1784] - movw r3, #3906 - ldrh r2, [sl, r3] - ldr r3, [fp, #-1792] - mla r0, r0, r2, r3 - mov r3, #3856 - ldrh r1, [sl, r3] - bl __aeabi_uidiv - ldr r3, [fp, #-916] - ldr r2, [r3, #16] - add r2, r2, #1 - str r2, [r3, #16] - ldr r3, [sl, #4044] - mov r2, #0 - str r0, [fp, #-1788] - b .L1532 -.L1533: - add r2, r2, #1 - ldr r1, [r3, #-32] - uxth r2, r2 - bic r1, r1, #1020 - bic r1, r1, #3 - str r1, [r3, #-32] -.L1532: - cmp r2, r8 - add r3, r3, #36 - bne .L1533 - ldrb r3, [r6, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L1534 - ldrb r3, [r4, #8] @ zero_extendqisi2 - mov r2, r8 - ldr r0, [r6, #4044] - cmp r3, #1 - moveq r1, #0 - movne r1, #1 - bl FlashEraseBlocks -.L1534: - mov r2, r8 - ldr r0, [sl, #4044] - ldrb r1, [r4, #8] @ zero_extendqisi2 - bl FlashEraseBlocks - mov r2, #36 - mul r2, r2, r8 - mov r8, #0 - mov r3, r9 - mov fp, r8 - mov r9, r2 - mov r2, r7 - mov r7, r4 - b .L1536 -.L1538: - ldr r0, [r6, #4044] - add r1, r0, r8 - ldr r4, [r0, r8] - cmn r4, #1 - bne .L1537 - ldr r0, [r1, #4] - add fp, fp, #1 - str r2, [sp, #8] - ubfx r0, r0, #10, #16 - str r3, [sp, #12] - bl FtlBbmMapBadBlock - ldr ip, [sp, #16] - strh r4, [ip, #16] @ movhi - ldrb r1, [r7, #7] @ zero_extendqisi2 - sub r1, r1, #1 - strb r1, [r7, #7] - ldr r3, [sp, #12] - ldr r2, [sp, #8] -.L1537: - ldr r4, [sp, #16] - add r8, r8, #36 - add r4, r4, #2 - str r4, [sp, #16] -.L1536: - cmp r8, r9 - bne .L1538 - cmp fp, #0 - mov r4, r7 - mov r9, r3 - mov r7, r2 - beq .L1539 - mov r0, r3 - bl update_multiplier_value - bl FtlBbmTblFlush -.L1539: - ldrb r3, [r4, #7] @ zero_extendqisi2 - cmp r3, #0 - bne .L1540 -.L1551: - ldr r3, [r5, #-2016] - mvn r2, #0 - strh r2, [r3, r7] @ movhi - b .L1550 -.L1540: - ldr r1, .L1555 - movw r2, #3916 - ldrh r2, [r1, r2] - strh r9, [r4, #0] @ movhi - mul r2, r2, r3 - mov r3, #0 - strh r3, [r4, #2] @ movhi - strb r3, [r4, #6] - ldr r3, .L1555+4 - uxth r2, r2 - strh r2, [r4, #4] @ movhi - ldr r1, [r3, #-1804] - str r1, [r4, #12] - add r1, r1, #1 - str r1, [r3, #-1804] - ldrh r0, [r4, #0] - ldr r1, [r3, #-2016] - mov r3, r0, asl #1 - strh r2, [r1, r3] @ movhi - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1556: - .align 2 -.L1555: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR2-1900 - .word -2000 - .word .LANCHOR2-2004 - .word .LANCHOR2-1996 - .fnend - .size allocate_data_superblock.part.20, .-allocate_data_superblock.part.20 - .align 2 - .global allocate_data_superblock - .type allocate_data_superblock, %function -allocate_data_superblock: + .global get_new_active_ppa + .type get_new_active_ppa, %function +get_new_active_ppa: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L1559 - ldr r3, [r3, #4040] + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + mov r3, #0 + strb r3, [r0, #10] + mov r4, r0 + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r7, .L2545 + ldr r8, .L2545+4 + add r3, r0, r3, asl #1 + ldr r9, .L2545+8 + ldrh r2, [r3, #16] +.L2528: + movw r1, #65535 + cmp r2, r1 + ldr r6, .L2545 + bne .L2544 +.L2529: + ldrb r3, [r4, #6] @ zero_extendqisi2 + ldrh r2, [r7] + add r3, r3, #1 + uxtb r3, r3 + strb r3, [r4, #6] + cmp r2, r3 + ldreqh r3, [r4, #2] + addeq r3, r3, #1 + streqh r3, [r4, #2] @ movhi + moveq r3, #0 + streqb r3, [r4, #6] + ldrb r3, [r4, #6] @ zero_extendqisi2 + add r3, r4, r3, asl #1 + ldrh r2, [r3, #16] + b .L2528 +.L2544: + ldrb r3, [r4, #8] @ zero_extendqisi2 + ldrh r5, [r4, #2] + cmp r3, #1 + ldrh r3, [r4, #4] + bne .L2531 + ldrb r0, [r8, #140] @ zero_extendqisi2 + cmp r0, #0 + bne .L2531 + mov r0, r5, asl #1 + ldrh r0, [r9, r0] + cmp r0, r1 + bne .L2531 + sub r3, r3, #1 + ldrh r0, [r4] + strh r3, [r4, #4] @ movhi + bl decrement_vpc_count + b .L2529 +.L2531: + ldr r7, .L2545+4 + orr r5, r5, r2, asl #10 + sub r3, r3, #1 + strh r3, [r4, #4] @ movhi +.L2532: + ldrb r3, [r4, #6] @ zero_extendqisi2 + movw r2, #65535 + ldrh r0, [r6] +.L2534: + add r3, r3, #1 + uxtb r3, r3 + cmp r3, r0 + ldreqh r3, [r4, #2] + addeq r3, r3, #1 + streqh r3, [r4, #2] @ movhi + moveq r3, #0 + add r1, r4, r3, asl #1 + ldrh r1, [r1, #16] + cmp r1, r2 + beq .L2534 + strb r3, [r4, #6] + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #1 + bne .L2539 + ldrb r3, [r7, #140] @ zero_extendqisi2 cmp r3, #0 - bne .L1558 - bl allocate_data_superblock.part.20 -.L1558: - mov r0, #0 - ldmfd sp!, {r3, pc} -.L1560: + bne .L2536 + ldrh r3, [r4, #2] + ldr r2, .L2545+8 + mov r3, r3, asl #1 + ldrh r2, [r2, r3] + movw r3, #65535 + cmp r2, r3 + bne .L2536 + ldrh r3, [r4, #4] + cmp r3, #0 + beq .L2536 + sub r3, r3, #1 + ldrh r0, [r4] + strh r3, [r4, #4] @ movhi + bl decrement_vpc_count + b .L2532 +.L2536: + ldr r3, .L2545+4 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L2539 + movw r2, #1874 + ldrh r1, [r4, #2] + ldrh r2, [r3, r2] + cmp r1, r2 + bcc .L2539 + ldr r1, .L2545+12 + add r3, r3, #1872 + ldrh r2, [r4] + ldrh ip, [r4, #4] + ldr r0, [r1, #-4060] + mov r2, r2, asl #1 + ldrh r1, [r0, r2] + rsb r1, ip, r1 + strh r1, [r0, r2] @ movhi + ldrh r3, [r3] + mov r2, #0 + strh r2, [r4, #4] @ movhi + strb r2, [r4, #6] + strh r3, [r4, #2] @ movhi +.L2539: + mov r0, r5 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L2546: .align 2 -.L1559: +.L2545: + .word .LANCHOR0+1804 .word .LANCHOR0 + .word .LANCHOR2-3136 + .word .LANCHOR2 .fnend - .size allocate_data_superblock, .-allocate_data_superblock + .size get_new_active_ppa, .-get_new_active_ppa + .align 2 + .global FtlVpcTblFlush + .type FtlVpcTblFlush, %function +FtlVpcTblFlush: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + ldr r5, .L2565 + ldr r3, [r5, #4052] + cmp r3, #0 + bne .L2549 + ldr r4, .L2565+4 + mov r1, #255 + ldr r8, .L2565+8 + ldr r2, [r4, #-2064] + ldr r6, [r4, #-2040] + str r2, [r4, #220] + sub r2, r4, #3808 + sub r7, r2, #8 + str r6, [r4, #224] + ldrh r2, [r2, #-8] + str r3, [r6, #12] + strh r2, [r6, #2] @ movhi + ldr r2, .L2565+12 + strh r2, [r6] @ movhi + ldr r2, [r4, #-3808] + stmib r6, {r2, r3} + ldr r3, .L2565+16 + ldrh r2, [r7, #-222] + str r3, [r5, #4068] + ldr r3, .L2565+20 + str r3, [r5, #4072] + ldrh r3, [r7, #6] + strh r3, [r8, #8] @ movhi + movw r3, #1826 + ldrh r3, [r5, r3] + strb r3, [r5, #4078] + sub r3, r4, #4032 + ldrh r3, [r3, #-8] + strh r3, [r8, #14] @ movhi + ldrb r3, [r4, #-4034] @ zero_extendqisi2 + orr r3, r3, r2, asl #6 + strh r3, [r8, #16] @ movhi + ldrb r3, [r4, #-4032] @ zero_extendqisi2 + ldrh r2, [r7, #-174] + strb r3, [r5, #4079] + sub r3, r4, #3984 + ldrh r3, [r3, #-8] + strh r3, [r8, #18] @ movhi + ldrb r3, [r4, #-3986] @ zero_extendqisi2 + orr r3, r3, r2, asl #6 + strh r3, [r8, #20] @ movhi + ldrb r3, [r4, #-3984] @ zero_extendqisi2 + strb r3, [r5, #4080] + sub r3, r4, #3936 + ldrh r3, [r3, #-8] + strh r3, [r8, #22] @ movhi + ldrh r2, [r7, #-126] + ldrb r3, [r4, #-3938] @ zero_extendqisi2 + ldr r0, [r4, #220] + orr r3, r3, r2, asl #6 + strh r3, [r8, #24] @ movhi + ldrb r3, [r4, #-3936] @ zero_extendqisi2 + ldr r2, [r4, #-3840] + strb r3, [r5, #4081] + add r3, r5, #4096 + str r2, [r3, #4] + ldr r2, [r4, #-3848] + str r2, [r3, #12] + ldr r2, [r4, #-3844] + str r2, [r3, #8] + sub r3, r4, #3168 + ldrh r2, [r3, #-14] + ldrh r3, [r3, #-12] + strh r2, [r8, #44] @ movhi + strh r3, [r8, #46] @ movhi + movw r3, #1882 + ldrh r2, [r5, r3] + bl ftl_memset + mov r1, r8 + mov r2, #48 + movw r8, #1812 + ldr r0, [r4, #220] + bl ftl_memcpy + ldrh r2, [r5, r8] + ldr r0, [r4, #220] + ldr r1, [r4, #-4060] + mov r2, r2, asl #1 + add r0, r0, #48 + bl ftl_memcpy + ldrh r2, [r5, r8] + ldr r0, [r4, #220] + add r3, r2, #24 + ldr r1, [r4, #-3884] + ubfx r3, r3, #1, #30 + mov r2, r2, lsr #3 + add r2, r2, #4 + add r0, r0, r3, asl #2 + bl ftl_memcpy + movw r3, #1916 + ldrh r3, [r5, r3] + cmp r3, #0 + beq .L2550 + ldrh r2, [r5, r8] + ldr r0, [r4, #220] + ldr r1, [r4, #-1992] + mov r3, r2, lsr #3 + add r3, r3, r2, asl #1 + movw r2, #1908 + add r3, r3, #52 + ldrh r2, [r5, r2] + ubfx r3, r3, #2, #14 + mov r2, r2, asl #2 + add r0, r0, r3, asl #2 + bl ftl_memcpy +.L2550: + mov r0, #0 + ldr r9, .L2565+4 + bl FtlUpdateVaildLpn + ldr fp, .L2565+24 + mov r8, #0 + movw r10, #65535 +.L2551: + ldrh r1, [r7] + ldrh r0, [r7, #2] + ldr r3, [r4, #-2064] + orr r2, r0, r1, asl #10 + str r2, [r4, #216] + ldrh r2, [fp] + str r3, [r4, #220] + sub r2, r2, #1 + ldr r3, [r4, #-2040] + cmp r0, r2 + str r3, [r4, #224] + ldr r3, .L2565+28 + blt .L2552 + ldrh r10, [r3, #4] + mov r2, #0 + strh r1, [r3, #4] @ movhi + strh r2, [r3, #2] @ movhi + str r3, [sp, #4] + bl FtlFreeSysBlkQueueOut + ldr r3, [sp, #4] + strh r0, [r3] @ movhi + ldr r3, [r9, #-3848] + add r2, r3, #1 + str r2, [r9, #-3848] + str r3, [r9, #-3808] + mov r2, r0, asl #10 + str r2, [r9, #216] + str r3, [r6, #4] + strh r0, [r6, #2] @ movhi +.L2552: + ldrb r3, [r5] @ zero_extendqisi2 + cmp r3, #0 + beq .L2553 + ldr r3, .L2565+32 + ldr r0, [r4, #-2064] + ldrh r1, [r3] + bl js_hash + str r0, [r6, #12] +.L2553: + mov r1, #1 + ldr r0, .L2565+36 + mov r2, r1 + mov r3, r1 + bl FlashProgPages + ldrh r3, [r7, #2] + ldr r2, [r4, #212] + add r3, r3, #1 + cmn r2, #1 + uxth r3, r3 + strh r3, [r7, #2] @ movhi + bne .L2554 + cmp r3, #1 + add r8, r8, #1 + ldreq r3, .L2565+24 + uxth r8, r8 + ldreq r2, .L2565+28 + ldreqh r3, [r3] + subeq r3, r3, #1 + streqh r3, [r2, #2] @ movhi + cmp r8, #3 + bls .L2551 + ldr r0, .L2565+40 + mov r2, r8 + ldr r1, [r4, #216] + bl printk + mov r3, #1 + str r3, [r5, #4052] + b .L2549 +.L2554: + cmp r2, #256 + cmpne r3, #1 + beq .L2551 + movw r3, #65535 + cmp r10, r3 + beq .L2549 + mov r0, r10 + mov r1, #1 + bl FtlFreeSysBlkQueueIn +.L2549: + mov r0, #0 + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2566: + .align 2 +.L2565: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+4068 + .word -3932 + .word 1179929683 + .word 1342177366 + .word .LANCHOR0+1874 + .word .LANCHOR2-3816 + .word .LANCHOR0+1882 + .word .LANCHOR2+212 + .word .LC128 + .fnend + .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlSuperblockPowerLostFix .type FtlSuperblockPowerLostFix, %function @@ -13486,888 +15359,232 @@ FtlSuperblockPowerLostFix: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L1571 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} - mov r4, r0 - ldr r3, [r2, #4040] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #44 sub sp, sp, #44 - cmp r3, #0 - bne .L1561 - ldrb r7, [r2, #928] @ zero_extendqisi2 - cmp r7, #0 - beq .L1570 - ldrb r7, [r0, #8] @ zero_extendqisi2 - cmp r7, #1 - ldreqh r8, [r0, #4] - beq .L1563 - mov r7, r3 -.L1570: - mov r8, #12 -.L1563: - ldr r6, .L1571+4 + ldr r8, .L2585 + ldr r3, [r8] + str r3, [sp, #36] + ldr r3, .L2585+4 + ldr r5, [r3, #4052] + cmp r5, #0 + bne .L2567 + ldrb r6, [r3, #140] @ zero_extendqisi2 + mov r4, r0 + cmp r6, #0 + beq .L2584 + ldrb r6, [r0, #8] @ zero_extendqisi2 + cmp r6, #1 + ldreqh fp, [r0, #4] + beq .L2569 + mov r6, r5 +.L2584: + mov fp, #12 +.L2569: mvn r3, #0 - str r3, [sp, #20] - mov sl, #0 - movw r2, #61589 - ldr r5, [r6, #-932] - ldr r3, [r6, #-956] - str r5, [sp, #16] - str r3, [sp, #12] - mvn r3, #2 - str r3, [r5, #8] - mvn r3, #1 - str r3, [r5, #12] - ldrh r3, [r4, #0] - strh sl, [r5, #0] @ movhi - strh r3, [r5, #2] @ movhi - ldr r3, [r6, #-956] - str r2, [r3, #0] - ldr r2, .L1571+8 - ldr r3, [r6, #-956] - str r2, [r3, #4] - b .L1564 -.L1567: + str r3, [sp, #16] + ldr r3, .L2585+8 + mov r9, #0 + movw r1, #61589 + ldr r7, [r3, #-2040] + mov r5, r3 + ldr r2, [r3, #-2064] + mov r10, r3 + str r7, [sp, #12] + str r2, [sp, #8] + mvn r2, #2 + str r2, [r7, #8] + mvn r2, #1 + str r2, [r7, #12] + ldrh r2, [r4] + strh r9, [r7] @ movhi + strh r2, [r7, #2] @ movhi + ldr r2, [r3, #-2064] + str r1, [r2] + ldr r1, .L2585+12 + ldr r2, [r3, #-2064] + str r1, [r2, #4] +.L2570: + subs fp, fp, #1 + bcc .L2573 ldrh r3, [r4, #4] cmp r3, #0 - beq .L1565 - mov r0, r4 - bl get_new_active_ppa - cmn r0, #1 - str r0, [sp, #8] - beq .L1565 - ldr r3, [r6, #-1800] - mov r1, #1 - mov r2, r7 - add r0, sp, #4 - sub r8, r8, #1 - str r3, [r5, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, sl - str r3, [r6, #-1800] - mov r3, #0 - bl FlashProgPages - ldrh r0, [r4, #0] - bl decrement_vpc_count -.L1564: - cmp r8, #0 - bne .L1567 -.L1565: - ldr r2, .L1571+4 - ldrh r3, [r4, #0] - ldrh r1, [r4, #4] - ldr r2, [r2, #-2016] + bne .L2571 +.L2573: + ldrh r3, [r4] + ldr r1, [r5, #-4060] + ldrh r0, [r4, #4] mov r3, r3, asl #1 - ldrh r0, [r2, r3] - rsb r1, r1, r0 - strh r1, [r2, r3] @ movhi - ldr r2, .L1571 - movw r3, #3916 - ldrh r3, [r2, r3] + ldrh r2, [r1, r3] + rsb r2, r0, r2 + strh r2, [r1, r3] @ movhi + ldr r3, .L2585+16 + ldrh r3, [r3] strh r3, [r4, #2] @ movhi mov r3, #0 strb r3, [r4, #6] strh r3, [r4, #4] @ movhi -.L1561: + b .L2567 +.L2571: + mov r0, r4 + bl get_new_active_ppa + cmn r0, #1 + str r0, [sp, #4] + beq .L2573 + ldr r3, [r5, #-3844] + mov r1, #1 + mov r2, r6 + mov r0, sp + str r3, [r7, #4] + add r3, r3, #1 + cmn r3, #1 + moveq r3, r9 + str r3, [r10, #-3844] + mov r3, #0 + bl FlashProgPages + ldrh r0, [r4] + bl decrement_vpc_count + b .L2570 +.L2567: + ldr r2, [sp, #36] + ldr r3, [r8] + cmp r2, r3 + beq .L2577 + bl __stack_chk_fail +.L2577: add sp, sp, #44 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L1572: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2586: .align 2 -.L1571: +.L2585: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 .word 305419896 + .word .LANCHOR0+1872 .fnend .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 - .global FtlLowFormatEraseBlock - .type FtlLowFormatEraseBlock, %function -FtlLowFormatEraseBlock: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov sl, r1 - ldr r8, .L1603 - .pad #28 - sub sp, sp, #28 - str r0, [sp, #8] - ldr r6, [r8, #4040] - ldrb r1, [r8, #3837] @ zero_extendqisi2 - cmp r6, #0 - str r1, [sp, #16] - movne r4, #0 - bne .L1574 - ldrb r2, [r8, #928] @ zero_extendqisi2 - mov r5, r6 - ldr fp, .L1603+4 - mov r4, r6 - mov r9, #36 - str r2, [sp, #4] - str r0, [fp, #-980] - b .L1575 -.L1579: - mul r3, r9, r6 - ldr r2, [r8, #4044] - mov r1, #0 - str r1, [r2, r3] - add r3, r8, r6 - ldr r1, [sp, #8] - ldrb r0, [r3, #3874] @ zero_extendqisi2 - bl V2P_block - cmp sl, #0 - mov r7, r0 - beq .L1576 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L1577 -.L1576: - mov r0, r7 - bl FtlBbmIsBadBlock - cmp r0, #0 - addne r4, r4, #1 - uxthne r4, r4 - bne .L1577 - movw r1, #3928 - ldr r3, [r8, #4044] - ldrh r2, [r8, r1] - mov r7, r7, asl #10 - mla r3, r9, r5, r3 - mul r2, r2, r5 - add r5, r5, #1 - uxth r5, r5 - add r1, r2, #3 - cmp r2, #0 - str r7, [r3, #4] - movlt r2, r1 - ldr r1, [fp, #-928] - bic r2, r2, #3 - str r0, [r3, #8] - add r2, r1, r2 - str r2, [r3, #12] -.L1577: - add r6, r6, #1 - uxth r6, r6 -.L1575: - movw r2, #3848 - ldr r7, .L1603 - ldrh r3, [r8, r2] - cmp r3, r6 - bhi .L1579 - cmp r5, #0 - beq .L1574 - ldr r3, [sp, #4] - mov r8, #0 - ldr r0, [r7, #4044] - mov r2, r5 - adds r6, r3, #0 - strb r8, [r7, #3837] - mov r9, r8 - movne r6, #1 - mov r1, r6 - bl FlashEraseBlocks - ldr r1, [sp, #16] - strb r1, [r7, #3837] -.L1582: - ldr r3, [r7, #4044] - add r2, r3, r8 - ldr r3, [r3, r8] - cmn r3, #1 - bne .L1581 - ldr r0, [r2, #4] - add r4, r4, #1 - ubfx r0, r0, #10, #16 - uxth r4, r4 - bl FtlBbmMapBadBlock -.L1581: - add r9, r9, #1 - add r8, r8, #36 - uxth r9, r9 - cmp r9, r5 - bne .L1582 - cmp sl, #0 - beq .L1596 - ldr r3, .L1603 - movw r2, #3918 - ldrh r2, [r3, r2] - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - str r2, [sp, #12] - moveq r2, r2, lsr #2 - streq r2, [sp, #4] - moveq r6, #1 - beq .L1583 - b .L1602 -.L1596: - mov r3, #6 - mov r1, #1 - str r3, [sp, #4] - str r1, [sp, #12] - b .L1583 -.L1602: - mov r6, #1 - str r6, [sp, #4] -.L1583: - ldr r7, .L1603 - mov r8, #0 -.L1591: - mov r9, #0 - ldr fp, .L1603+4 - mov r5, r9 - b .L1584 -.L1587: - mov r1, #36 - ldr r2, [r7, #4044] - mul r3, r1, r9 - mov r1, #0 - str r1, [r2, r3] - add r3, r7, r9 - ldr r1, [sp, #8] - ldrb r0, [r3, #3874] @ zero_extendqisi2 - bl V2P_block - cmp sl, #0 - str r0, [sp, #20] - beq .L1585 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L1586 -.L1585: - ldr r0, [sp, #20] - bl FtlBbmIsBadBlock - cmp r0, #0 - bne .L1586 - ldr r3, [r7, #4044] - mov r2, #36 - ldr r1, [sp, #20] - mla r3, r2, r5, r3 - add r2, r8, r1, asl #10 - movw r1, #3928 - str r2, [r3, #4] - ldr r2, [fp, #-940] - str r2, [r3, #8] - ldrh r2, [r7, r1] - mul r2, r2, r5 - add r5, r5, #1 - uxth r5, r5 - add r1, r2, #3 - cmp r2, #0 - movlt r2, r1 - ldr r1, [fp, #-936] - bic r2, r2, #3 - add r2, r1, r2 - str r2, [r3, #12] -.L1586: - add r9, r9, #1 - uxth r9, r9 -.L1584: - movw r2, #3848 - ldr ip, .L1603 - ldrh r3, [r7, r2] - cmp r3, r9 - bhi .L1587 - cmp r5, #0 - beq .L1574 - ldr r0, [ip, #4044] - mov r3, #0 - mov r1, r5 - strb r3, [ip, #3837] - mov r2, r6 - mov r3, #1 - str ip, [sp, #0] - bl FlashProgPages - ldr ip, [sp, #0] - mov r9, #0 - ldr r1, [sp, #16] - mov fp, r9 - strb r1, [ip, #3837] -.L1590: - ldr r3, [r7, #4044] - add r2, r3, r9 - ldr r3, [r3, r9] - cmp r3, #0 - beq .L1589 - ldr r0, [r2, #4] - add r4, r4, #1 - ubfx r0, r0, #10, #16 - uxth r4, r4 - bl FtlBbmMapBadBlock -.L1589: - add fp, fp, #1 - add r9, r9, #36 - uxth fp, fp - cmp fp, r5 - bne .L1590 - ldr r2, [sp, #4] - ldr r3, [sp, #12] - add r8, r8, r2 - uxth r8, r8 - cmp r8, r3 - bcc .L1591 - ldr r9, .L1603 - mov r7, #0 - mov r8, r7 -.L1593: - cmp sl, #0 - beq .L1592 - ldr r3, [r9, #4044] - add r2, r3, r7 - ldr r3, [r3, r7] - cmp r3, #0 - bne .L1592 - ldr r0, [r2, #4] - mov r1, #1 - ubfx r0, r0, #10, #16 - bl FtlFreeSysBlkQueueIn -.L1592: - add r8, r8, #1 - add r7, r7, #36 - uxth r8, r8 - cmp r8, r5 - bne .L1593 - ldr r1, [sp, #8] - cmp r1, #63 - movhi r3, #0 - movls r3, #1 - cmp sl, #0 - moveq sl, r3 - orrne sl, r3, #1 - cmp sl, #0 - beq .L1574 - ldr r3, .L1603 - mov r1, r6 - mov r2, r8 - ldr r0, [r3, #4044] - bl FlashEraseBlocks -.L1574: - mov r0, r4 - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1604: - .align 2 -.L1603: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock - .align 2 - .type FlashTestBlk.part.24, %function -FlashTestBlk.part.24: - .fnstart - @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 -.L1606: - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - .pad #108 - sub sp, sp, #108 - ldr r4, .L1608 - mov r5, r0 - mov r1, #165 - add r0, sp, #40 - mov r2, #32 - str r0, [sp, #16] - ldr r3, [r4, #140] - mov r5, r5, asl #10 - str r3, [sp, #12] - bl ftl_memset - ldr r0, [r4, #140] - mov r1, #90 - mov r2, #8 - bl ftl_memset - mov r1, #1 - mov r2, r1 - add r0, sp, #4 - str r5, [sp, #8] - bl FlashEraseBlocks - mov r1, #1 - add r0, sp, #4 - mov r3, r1 - mov r2, r1 - bl FlashProgPages - ldr r4, [sp, #4] - add r0, sp, #4 - mov r1, #0 - cmp r4, #0 - mov r2, #1 - mvnne r4, #0 - bl FlashEraseBlocks - mov r0, r4 - add sp, sp, #108 - ldmfd sp!, {r4, r5, pc} -.L1609: - .align 2 -.L1608: - .word .LANCHOR2 - .fnend - .size FlashTestBlk.part.24, .-FlashTestBlk.part.24 - .align 2 - .global FlashTestBlk - .type FlashTestBlk, %function -FlashTestBlk: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L1612 - ldr r3, [r3, #160] - cmp r0, r3 - bcc .L1611 - b FlashTestBlk.part.24 -.L1611: - mov r0, #0 - bx lr -.L1613: - .align 2 -.L1612: - .word .LANCHOR2 - .fnend - .size FlashTestBlk, .-FlashTestBlk - .align 2 - .global FlashMakeFactorBbt - .type FlashMakeFactorBbt, %function -FlashMakeFactorBbt: - .fnstart - @ args = 0, pretend = 0, frame = 72 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1642 - movw r1, #3062 - movw r2, #3060 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #76 - sub sp, sp, #76 - ldrh r2, [r3, r2] - mov r5, #0 - ldrh fp, [r3, r1] - mov r1, #1 - ldr r4, .L1642+4 - mul fp, fp, r2 - ldr r2, [r3, #3624] - ldr r0, [r4, #232] - ldrb r2, [r2, #24] @ zero_extendqisi2 - str r0, [sp, #28] - ldr r0, .L1642+8 - uxth fp, fp - str r2, [sp, #12] - ldr r2, [r3, #856] - ldrb r3, [r3, #852] @ zero_extendqisi2 - uxth r2, r2 - cmp r3, #1 - str r2, [sp, #8] - moveq r3, r2, asl #1 - uxtheq r3, r3 - streq r3, [sp, #8] - bl printk - ldr r0, [r4, #232] - mov r2, #4096 - mov r1, #0 - bl ftl_memset - sub r3, fp, #1 - mov r2, fp, lsr #4 - ldr r4, .L1642 - uxth r3, r3 - str r2, [sp, #20] - str r3, [sp, #24] - b .L1616 -.L1638: - ldr r3, .L1642+4 - add r2, r3, r5, asl #1 - ldrh r6, [r2, #236] - cmp r6, #0 - bne .L1617 - movw r2, #3068 - ldr r0, [r3, #152] - ldrh r2, [r4, r2] - mov r1, r6 - mov r8, r6 - mov r7, r6 - add sl, r4, r5, asl #2 - mov r2, r2, asl #9 - bl ftl_memset - add r3, r4, r5 - ldrb r9, [r3, #3764] @ zero_extendqisi2 - b .L1618 -.L1626: - mvn r3, #0 - strb r3, [sp, #34] - strb r3, [sp, #35] - ldr r3, [sp, #12] - tst r3, #1 - beq .L1619 - ldr r3, [sl, #3588] - add r2, sp, #34 - mov r0, r9 - add r3, r6, r3 - str r3, [sp, #4] - mov r1, r3 - bl FlashReadSpare - ldrb r2, [r4, #852] @ zero_extendqisi2 - ldr r3, [sp, #4] - cmp r2, #1 - bne .L1619 - ldr r1, [r4, #856] - add r2, sp, #35 - mov r0, r9 - add r1, r3, r1 - bl FlashReadSpare - ldrb r3, [sp, #34] @ zero_extendqisi2 - ldrb r2, [sp, #35] @ zero_extendqisi2 - and r3, r2, r3 - strb r3, [sp, #34] -.L1619: - ldr r0, [sp, #12] - tst r0, #2 - beq .L1620 - ldr r3, [r4, #3624] - mov r0, r9 - add r2, sp, #35 - ldrh r1, [r3, #10] - ldr r3, [sl, #3588] - sub r1, r1, #1 - add r1, r1, r3 - add r1, r1, r6 - bl FlashReadSpare -.L1620: - ldr r3, [r4, #3624] - ldrb r3, [r3, #7] @ zero_extendqisi2 - cmp r3, #1 - cmpne r3, #8 - ldrb r3, [sp, #34] @ zero_extendqisi2 - bne .L1621 - cmp r3, #0 - beq .L1640 - ldrb r0, [sp, #35] @ zero_extendqisi2 - rsbs r0, r0, #1 - movcc r0, #0 - b .L1622 -.L1621: - cmp r3, #255 - bne .L1640 - ldrb r0, [sp, #35] @ zero_extendqisi2 - subs r0, r0, #255 - movne r0, #1 - b .L1622 -.L1640: - mov r0, #1 -.L1622: - ldr r2, [sp, #12] - tst r2, #4 - beq .L1623 - ldr r1, [sl, #3588] - mov r0, r9 - add r1, r6, r1 - bl SandiskProgTestBadBlock -.L1623: - cmp r0, #0 - beq .L1624 - mov r1, r5 - mov r2, r8 - ldr r0, .L1642+12 - add r7, r7, #1 - bl printk - ldr r3, [sp, #16] - and r0, r8, #31 - mov ip, #1 - uxth r7, r7 - mov r2, r3, lsr #5 - ldr r3, .L1642+4 - ldr r3, [r3, #152] - ldr r1, [r3, r2, asl #2] - orr r1, r1, ip, asl r0 - ldr r0, [sp, #20] - str r1, [r3, r2, asl #2] - ldrb r3, [r4, #3762] @ zero_extendqisi2 - mul r3, r3, r0 - cmp r7, r3 - bgt .L1625 -.L1624: - ldr r2, [sp, #8] - add r8, r8, #1 - add r6, r6, r2 -.L1618: - uxth r3, r8 - str r3, [sp, #16] - cmp r3, fp - bcc .L1626 -.L1625: - ldr r0, .L1642+16 - mov r1, r5 - mov r2, r7 - bl printk - ldrb r3, [r4, #3762] @ zero_extendqisi2 - ldr r0, [sp, #20] - mul r3, r3, r0 - cmp r7, r3 - blt .L1627 - movw r3, #3068 - mov r1, #0 - ldrh r2, [r4, r3] - ldr r3, .L1642+4 - mov r2, r2, asl #9 - ldr r0, [r3, #152] - bl ftl_memset -.L1627: - cmp r5, #0 - bne .L1628 - ldr sl, .L1642+4 - mov r8, r5 - mov r7, r5 - ldrh r9, [sl, #160] - b .L1629 -.L1631: - mov r0, r6 - bl FlashTestBlk - cmp r0, #0 - beq .L1630 - mov r1, r6 - ldr r0, .L1642+20 - bl printk - ldr r3, [sl, #152] - mov r2, r6, lsr #5 - mov r0, #1 - add r7, r7, r0 - and r6, r6, #31 - ldr r1, [r3, r2, asl #2] - uxth r7, r7 - orr r6, r1, r0, asl r6 - str r6, [r3, r2, asl #2] -.L1630: - add r8, r8, #1 - uxth r8, r8 -.L1629: - add r6, r8, r9 - ldrb r3, [r4, #853] @ zero_extendqisi2 - uxth r6, r6 - cmp r3, r6 - bhi .L1631 - ldr r6, [sp, #24] - sub r9, fp, #50 - ldr sl, .L1642+4 - mov r8, #1 - b .L1632 -.L1634: - mov r0, r6 - bl FlashTestBlk - cmp r0, #0 - beq .L1633 - mov r1, r6 - ldr r0, .L1642+20 - bl printk - ldr r3, [sl, #152] - mov r2, r6, lsr #5 - and r0, r6, #31 - ldr r1, [r3, r2, asl #2] - orr r1, r1, r8, asl r0 - str r1, [r3, r2, asl #2] -.L1633: - sub r6, r6, #1 - uxth r6, r6 -.L1632: - cmp r6, r9 - bgt .L1634 - ldr r3, .L1642+4 - ldrb r1, [r4, #853] @ zero_extendqisi2 - ldr r2, [r3, #160] - rsb r2, r2, r1 - cmp r7, r2 - bcc .L1628 - movw r2, #3068 - ldr r0, [r3, #152] - ldrh r2, [r4, r2] - mov r1, #0 - mov r2, r2, asl #9 - bl ftl_memset -.L1628: - mul r8, fp, r5 - ldr r7, .L1642+4 - ldr r6, [sp, #24] - ldr r9, [sp, #28] - add sl, r7, r5, asl #1 -.L1635: - ldr r0, .L1642+24 - mov r1, r5 - mov r2, r6 - bl printk - ldr r3, [r7, #152] - b .L1636 -.L1637: - sub r6, r6, #1 - uxth r6, r6 -.L1636: - mov r1, r6, lsr #5 - and r2, r6, #31 - ldr r1, [r3, r1, asl #2] - mov r2, r1, lsr r2 - ands r2, r2, #1 - bne .L1637 - ldr r3, .L1642+28 - mov r1, #1 - strh r6, [sl, #236] @ movhi - add r0, sp, #36 - strh r6, [r9, #2] @ movhi - strh r3, [r9, #0] @ movhi - ldr r3, [r7, #152] - strh r2, [r9, #8] @ movhi - mov r2, r1 - str r3, [sp, #44] - ldr r3, [r7, #232] - str r3, [sp, #48] - add r3, r6, r8 - mov r3, r3, asl #10 - str r3, [sp, #40] - bl FlashEraseBlocks - mov r1, #1 - mov r3, r1 - add r0, sp, #36 - mov r2, r1 - bl FlashProgPages - ldr r3, [sp, #36] - cmp r3, #0 - subne r6, r6, #1 - uxthne r6, r6 - bne .L1635 -.L1617: - add r5, r5, #1 - uxtb r5, r5 -.L1616: - ldrb r3, [r4, #3762] @ zero_extendqisi2 - cmp r3, r5 - bhi .L1638 - add sp, sp, #76 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1643: - .align 2 -.L1642: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC118 - .word .LC119 - .word .LC120 - .word .LC121 - .word .LC122 - .word -3872 - .fnend - .size FlashMakeFactorBbt, .-FlashMakeFactorBbt - .align 2 .global ftl_map_blk_gc .type ftl_map_blk_gc, %function ftl_map_blk_gc: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 mov r4, r0 ldr r5, [r0, #12] - ldr sl, [r0, #24] + ldr r8, [r0, #24] bl ftl_free_no_use_map_blk ldrh r3, [r4, #10] ldrh r2, [r4, #8] sub r3, r3, #4 + ldr r7, .L2601 cmp r2, r3 - blt .L1645 + blt .L2588 uxth r0, r0 mov r0, r0, asl #1 - ldrh r8, [r5, r0] - cmp r8, #0 - beq .L1645 + ldrh r10, [r5, r0] + cmp r10, #0 + beq .L2588 ldr r3, [r4, #32] cmp r3, #0 - bne .L1645 + bne .L2588 mov r2, #1 - ldr r1, .L1653 str r2, [r4, #32] strh r3, [r5, r0] @ movhi ldrh r3, [r4, #8] ldrh r2, [r4, #2] sub r3, r3, #1 strh r3, [r4, #8] @ movhi - movw r3, #3918 - ldrh r3, [r1, r3] + movw r3, #1874 + ldrh r3, [r7, r3] cmp r2, r3 - bcc .L1646 + bcc .L2589 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L1646: - mov r5, #0 - ldr r6, .L1653+4 - b .L1647 -.L1652: - ldr r3, [sl, r5, asl #2] - add r9, sl, r5, asl #2 - cmp r8, r3, lsr #10 - bne .L1648 - ldr r3, [r6, #-952] - mov r1, #1 - ldr r7, [r6, #-932] - mov r2, r1 - ldr r0, .L1653+8 - str r3, [r6, #192] - str r7, [r6, #196] - ldr r3, [sl, r5, asl #2] - str r3, [r6, #188] - bl FlashReadPages - ldr r3, [r6, #184] - cmn r3, #1 - beq .L1649 - ldrh r3, [r7, #8] - cmp r3, r5 - bne .L1649 - ldrh r2, [r7, #0] - ldrh r3, [r4, #4] - cmp r2, r3 - beq .L1650 -.L1649: - mov r3, #0 - str r3, [r9, #0] - ldr r3, .L1653+4 - ldrh r2, [r7, #8] - ldr r0, .L1653+12 - ldr r1, [r3, #188] - bl printk - ldr r3, .L1653 - mov r2, #1 - str r2, [r3, #4040] - b .L1651 -.L1650: - mov r0, r4 - mov r1, r5 - ldr r2, [r6, #192] - bl FtlMapWritePage -.L1648: - add r5, r5, #1 - uxth r5, r5 -.L1647: +.L2589: + ldr r5, .L2601+4 + mov fp, #0 +.L2590: ldrh r3, [r4, #6] - cmp r3, r5 - bhi .L1652 - mov r0, r8 + uxth r6, fp + cmp r3, r6 + bls .L2600 + ldr r2, [r8, r6, asl #2] + add r3, r8, r6, asl #2 + cmp r10, r2, lsr #10 + bne .L2591 + ldr r2, [r5, #-2060] + mov r1, #1 + ldr r9, [r5, #-2040] + ldr r0, .L2601+8 + str r2, [r5, #220] + str r9, [r5, #224] + ldr r2, [r8, r6, asl #2] + str r3, [sp, #4] + str r2, [r5, #216] + mov r2, r1 + bl FlashReadPages + ldr r2, [r5, #212] + cmn r2, #1 + ldr r3, [sp, #4] + bne .L2592 +.L2594: + mov r2, #0 + str r2, [r3] + ldr r3, .L2601+4 + ldr r0, .L2601+12 + ldrh r2, [r9, #8] + ldr r1, [r3, #216] + bl printk + mov r3, #1 + str r3, [r7, #4052] + b .L2593 +.L2592: + ldrh r1, [r9, #8] + cmp r1, r6 + bne .L2594 + ldrh r0, [r9] + ldrh r2, [r4, #4] + cmp r0, r2 + bne .L2594 + mov r0, r4 + ldr r2, [r5, #220] + bl FtlMapWritePage +.L2591: + add fp, fp, #1 + b .L2590 +.L2600: + mov r0, r10 mov r1, #1 bl FtlFreeSysBlkQueueIn mov r3, #0 str r3, [r4, #32] -.L1645: - ldr r1, .L1653 - movw r3, #3918 +.L2588: + movw r3, #1874 ldrh r2, [r4, #2] - ldrh r3, [r1, r3] + ldrh r3, [r7, r3] cmp r2, r3 - bcc .L1651 + bcc .L2593 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L1651: +.L2593: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L1654: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2602: .align 2 -.L1653: +.L2601: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2+184 - .word .LC123 + .word .LANCHOR2+212 + .word .LC129 .fnend .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 2 @@ -14377,78 +15594,89 @@ Ftl_write_map_blk_to_last_page: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1661 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r4, r0 - ldr r6, [r3, #4040] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r6, .L2615 ldr r5, [r0, #12] - cmp r6, #0 - ldr r8, [r0, #24] - bne .L1656 - ldrh r2, [r0, #0] - movw r1, #65535 - cmp r2, r1 - bne .L1657 + ldr r7, [r0, #24] + ldr r10, [r6, #4052] + cmp r10, #0 + bne .L2604 + ldrh r3, [r0] + movw r2, #65535 + mov r4, r0 + cmp r3, r2 + bne .L2605 ldrh r3, [r0, #8] add r3, r3, #1 strh r3, [r0, #8] @ movhi bl FtlFreeSysBlkQueueOut - strh r0, [r5, #0] @ movhi + strh r0, [r5] @ movhi ldr r3, [r4, #28] - strh r6, [r4, #2] @ movhi + strh r10, [r4, #2] @ movhi add r3, r3, #1 - strh r6, [r4, #0] @ movhi + strh r10, [r4] @ movhi str r3, [r4, #28] - b .L1656 -.L1657: - mov r2, r2, asl #1 - ldr r1, [r0, #28] - ldrh r7, [r5, r2] - ldr r5, .L1661+4 - ldrh r2, [r0, #2] - orr r2, r2, r7, asl #10 - str r2, [r5, #188] - ldr r2, [r5, #-956] - str r2, [r5, #192] - ldr r2, [r5, #-932] - str r2, [r5, #196] - str r1, [r2, #4] - ldr r1, .L1661+8 - strh r1, [r2, #8] @ movhi - ldrh r1, [r0, #4] - strh r7, [r2, #2] @ movhi - strh r1, [r2, #0] @ movhi - movw r2, #3918 - ldrh r2, [r3, r2] + b .L2604 +.L2605: + mov r3, r3, asl #1 mov r1, #255 - ldr r0, [r5, #-956] + ldrh r9, [r5, r3] + ldr r5, .L2615+4 + ldrh r3, [r0, #2] + orr r3, r3, r9, asl #10 + str r3, [r5, #216] + ldr r3, [r5, #-2064] + ldr r8, [r5, #-2040] + str r3, [r5, #220] + ldr r3, [r0, #28] + str r8, [r5, #224] + str r3, [r8, #4] + ldr r3, .L2615+8 + strh r3, [r8, #8] @ movhi + ldrh r3, [r0, #4] + strh r9, [r8, #2] @ movhi + strh r3, [r8] @ movhi + movw r3, #1874 + ldrh r2, [r6, r3] + ldr r0, [r5, #-2064] mov r2, r2, asl #3 bl ftl_memset - mov r3, r6 - b .L1658 -.L1660: - ldr r2, [r8, r3, asl #2] - cmp r7, r2, lsr #10 - bne .L1659 - add r6, r6, #1 - ldr r2, [r5, #-956] - uxth r6, r6 - str r3, [r2, r6, asl #3] - ldr r2, [r5, #-956] - ldr r1, [r8, r3, asl #2] - add r2, r2, r6, asl #3 - str r1, [r2, #4] -.L1659: + mov r1, r10 + mov r3, r10 +.L2606: + ldrh r0, [r4, #6] + uxth r2, r1 + cmp r0, r2 + bls .L2614 + ldr r0, [r7, r2, asl #2] + cmp r9, r0, lsr #10 + bne .L2607 add r3, r3, #1 + ldr r0, [r5, #-2064] uxth r3, r3 -.L1658: - ldrh r2, [r4, #6] - cmp r2, r3 - bhi .L1660 + str r2, [r0, r3, asl #3] + ldr r0, [r7, r2, asl #2] + ldr r2, [r5, #-2064] + add r2, r2, r3, asl #3 + str r0, [r2, #4] +.L2607: + add r1, r1, #1 + b .L2606 +.L2614: + ldrb r3, [r6] @ zero_extendqisi2 + cmp r3, #0 + beq .L2609 + ldr r2, .L2615 + movw r3, #1882 + ldr r0, [r5, #220] + ldrh r1, [r2, r3] + bl js_hash + str r0, [r8, #12] +.L2609: mov r1, #1 mov r3, #0 - ldr r0, .L1661+12 + ldr r0, .L2615+12 mov r2, r1 bl FlashProgPages ldrh r3, [r4, #2] @@ -14456,16 +15684,16 @@ Ftl_write_map_blk_to_last_page: add r3, r3, #1 strh r3, [r4, #2] @ movhi bl ftl_map_blk_gc -.L1656: +.L2604: mov r0, #0 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1662: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L2616: .align 2 -.L1661: +.L2615: .word .LANCHOR0 .word .LANCHOR2 .word -1291 - .word .LANCHOR2+184 + .word .LANCHOR2+212 .fnend .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 2 @@ -14473,121 +15701,138 @@ Ftl_write_map_blk_to_last_page: .type FtlMapWritePage, %function FtlMapWritePage: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r4, r0 - ldr r8, .L1677 - mov sl, r1 - ldr r5, .L1677+4 - mov r9, r2 - mov r6, #0 - mov fp, r8 -.L1676: - ldr r3, [r5, #-1820] + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r10, r0 + ldr r6, .L2636 + mov r8, r1 + mov r4, #0 + str r2, [sp] + mov r5, r6 +.L2618: + ldr r3, [r6, #-3864] + ldr r9, .L2636 add r3, r3, #1 - str r3, [r5, #-1820] - movw r3, #3918 - ldrh r2, [r4, #2] - ldrh r3, [r8, r3] + str r3, [r6, #-3864] + ldr r3, .L2636+4 + ldrh r2, [r10, #2] + ldrh r3, [r3] sub r3, r3, #1 cmp r2, r3 - bge .L1665 - ldrh r2, [r4, #0] + bge .L2619 + ldrh r2, [r10] movw r3, #65535 cmp r2, r3 - bne .L1666 -.L1665: - mov r0, r4 + bne .L2620 +.L2619: + mov r0, r10 bl Ftl_write_map_blk_to_last_page -.L1666: - ldr r1, [fp, #4040] +.L2620: + ldr r3, .L2636+8 + ldr r1, [r3, #4052] + mov fp, r3 + str r3, [sp, #4] cmp r1, #0 - bne .L1667 - ldrh r3, [r4, #0] - ldr r2, [r4, #12] - ldr r0, [r5, #-932] - mov r3, r3, asl #1 - ldrh r7, [r2, r3] + bne .L2621 + ldrh r2, [r10] + ldr r0, [r10, #12] + ldr r3, [sp] + mov r2, r2, asl #1 + ldrh r7, [r0, r2] + ldrh r2, [r10, #2] + ldr r0, [r5, #-2040] + orr r2, r2, r7, asl #10 + str r2, [r5, #216] mov r2, #16 - ldrh r3, [r4, #2] - str r9, [r5, #192] - orr r3, r3, r7, asl #10 - str r0, [r5, #196] - str r3, [r5, #188] + str r3, [r5, #220] + str r0, [r5, #224] bl ftl_memset - ldr r3, [r5, #196] + ldr r1, [r10, #28] + ldr r2, [r5, #224] + str r1, [r2, #4] + strh r8, [r2, #8] @ movhi + ldrh r1, [r10, #4] + strh r7, [r2, #2] @ movhi + strh r1, [r2] @ movhi + ldr r3, [sp, #4] + ldrb r3, [r3] @ zero_extendqisi2 + cmp r3, #0 + beq .L2622 + ldr r3, .L2636+12 + ldr r0, [r6, #220] + str r2, [sp, #4] + ldrh r1, [r3] + bl js_hash + ldr r2, [sp, #4] + str r0, [r2, #12] +.L2622: mov r1, #1 - ldr r2, [r4, #28] - ldr r0, .L1677+8 - strh sl, [r3, #8] @ movhi - str r2, [r3, #4] - ldrh r2, [r4, #4] - strh r7, [r3, #2] @ movhi - strh r2, [r3, #0] @ movhi + ldr r0, .L2636+16 mov r2, r1 mov r3, r1 bl FlashProgPages - ldrh r2, [r4, #2] - add r2, r2, #1 - uxth r2, r2 - strh r2, [r4, #2] @ movhi - ldr r3, [r5, #184] - cmn r3, #1 - bne .L1668 - ldr r0, .L1677+12 - add r6, r6, #1 - ldr r1, [r5, #188] + ldrh r3, [r10, #2] + add r3, r3, #1 + uxth r3, r3 + strh r3, [r10, #2] @ movhi + ldr r2, [r5, #212] + cmn r2, #1 + bne .L2623 + ldr r0, .L2636+20 + add r4, r4, #1 + ldr r1, [r6, #216] bl printk - ldrh r3, [r4, #2] - uxth r6, r6 + ldrh r3, [r10, #2] + uxth r4, r4 cmp r3, #2 - movwls r3, #3918 - ldrlsh r3, [r8, r3] + ldrls r3, .L2636+4 + ldrlsh r3, [r3] subls r3, r3, #1 - strlsh r3, [r4, #2] @ movhi - cmp r6, #3 - bls .L1676 - ldr r3, .L1677+4 - mov r2, r6 - ldr r0, .L1677+16 - ldr r1, [r3, #188] + strlsh r3, [r10, #2] @ movhi + cmp r4, #3 + bls .L2618 + ldr r0, .L2636+24 + mov r2, r4 + ldr r1, [r9, #216] bl printk - ldr r3, .L1677 - mov r2, #1 - str r2, [r3, #4040] - b .L1667 -.L1668: + mov r3, #1 + str r3, [fp, #4052] + b .L2621 +.L2623: + cmp r2, #0 + strneh r7, [r10, #40] @ movhi + cmp r2, #256 + cmpne r3, #1 + beq .L2627 + ldr r3, [r10, #36] cmp r3, #0 - strneh r7, [r4, #40] @ movhi - cmp r2, #1 - beq .L1672 - cmp r3, #256 - beq .L1672 - ldr r3, [r4, #36] - cmp r3, #0 - beq .L1673 -.L1672: + beq .L2628 +.L2627: mov r3, #0 - str r3, [r4, #36] - b .L1676 -.L1673: - ldr r3, .L1677+4 - ldr r2, [r3, #188] - ldr r3, [r4, #24] - str r2, [r3, sl, asl #2] -.L1667: + str r3, [r10, #36] + b .L2618 +.L2628: + ldr r2, [r9, #216] + ldr r3, [r10, #24] + str r2, [r3, r8, asl #2] +.L2621: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1678: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2637: .align 2 -.L1677: - .word .LANCHOR0 +.L2636: .word .LANCHOR2 - .word .LANCHOR2+184 - .word .LC124 - .word .LC125 + .word .LANCHOR0+1874 + .word .LANCHOR0 + .word .LANCHOR0+1882 + .word .LANCHOR2+212 + .word .LC130 + .word .LC131 .fnend .size FtlMapWritePage, .-FtlMapWritePage .align 2 @@ -14600,426 +15845,460 @@ flush_l2p_region: stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r4, #12 - ldr r5, .L1680 + ldr r5, .L2640 mul r4, r4, r0 - ldr r0, .L1680+4 - ldr r2, [r5, #-1852] - add r3, r2, r4 - ldrh r1, [r2, r4] - ldr r2, [r3, #8] + sub r0, r5, #1968 + ldr r3, [r5, #-3896] + sub r0, r0, #4 + add r2, r3, r4 + ldrh r1, [r3, r4] + ldr r2, [r2, #8] bl FtlMapWritePage - ldr r3, [r5, #-1852] + ldr r3, [r5, #-3896] mov r0, #0 add r4, r3, r4 ldr r3, [r4, #4] bic r3, r3, #-2147483648 str r3, [r4, #4] ldmfd sp!, {r3, r4, r5, pc} -.L1681: +.L2641: .align 2 -.L1680: +.L2640: .word .LANCHOR2 - .word .LANCHOR2-1084 .fnend .size flush_l2p_region, .-flush_l2p_region .align 2 - .global FtlMapBlkWriteDumpData - .type FtlMapBlkWriteDumpData, %function -FtlMapBlkWriteDumpData: + .global FtlMapTblRecovery + .type FtlMapTblRecovery, %function +FtlMapTblRecovery: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + ldr r3, [r0, #16] mov r4, r0 - ldr r3, [r0, #36] - ldrh r6, [r0, #6] - cmp r3, #0 - ldr r2, [r0, #24] - ldmeqfd sp!, {r4, r5, r6, pc} - mov r3, #0 - str r3, [r0, #36] - ldr r3, .L1686 - ldr r1, [r3, #4040] - cmp r1, #0 - ldmnefd sp!, {r4, r5, r6, pc} - ldr r5, .L1686+4 - sub r6, r6, #1 - uxth r6, r6 - ldr r0, [r5, #-952] - ldr r1, [r5, #-932] - str r0, [r5, #192] - str r1, [r5, #196] - ldr r2, [r2, r6, asl #2] - cmp r2, #0 - str r2, [r5, #188] - beq .L1684 - mov r1, #1 - add r0, r5, #184 - mov r2, r1 - bl FlashReadPages - b .L1685 -.L1684: - movw r2, #3926 - mov r1, #255 - ldrh r2, [r3, r2] - bl ftl_memset -.L1685: - mov r0, r4 - mov r1, r6 - ldr r2, [r5, #192] - ldmfd sp!, {r4, r5, r6, lr} - b FtlMapWritePage -.L1687: - .align 2 -.L1686: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData - .align 2 - .global FtlVendorPartRead - .type FtlVendorPartRead, %function -FtlVendorPartRead: - .fnstart - @ args = 0, pretend = 0, frame = 48 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1699 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r9, r2 - movw r2, #3924 - mov r5, r1 - ldrh r7, [r3, r2] - movw r2, #3910 - ldrh r2, [r3, r2] - add r1, r1, r0 - .pad #52 - sub sp, sp, #52 - mov r8, r0 - cmp r1, r2 - mvnhi fp, #0 - bhi .L1689 - mov r7, r0, lsr r7 - mov fp, #0 - ldr r6, .L1699+4 - mov r2, r7, asl #2 - str r2, [sp, #0] - b .L1690 -.L1696: - ldr r3, [r6, #-900] + ldrh r10, [r0, #6] + mov r1, #0 + ldr r8, [r0, #24] + mov r6, #0 + ldr r5, .L2685 + str r3, [sp, #4] + mov r2, r10, asl #2 + ldrh r3, [r0, #8] + ldr r9, [r0, #12] mov r0, r8 - ldr r2, [sp, #0] - ldr sl, [r3, r2] - movw r3, #3922 - ldr r2, .L1699 - ldrh r4, [r2, r3] - mov r1, r4 - bl __aeabi_uidivmod - uxth r1, r1 - str r1, [sp, #4] - rsb r4, r1, r4 - uxth r4, r4 - cmp r4, r5 - uxthhi r4, r5 - cmp sl, #0 - beq .L1692 - ldr r2, .L1699+4 - mov r1, #1 - add r0, sp, #12 - str sl, [sp, #16] - ldr r3, [r2, #-948] - mov r2, r1 - str r3, [sp, #20] - mov r3, #0 - str r3, [sp, #24] - bl FlashReadPages - ldr r3, [sp, #12] - cmn r3, #1 - moveq fp, r3 - ldr r3, [r6, #184] - cmp r3, #256 - bne .L1694 - mov r1, r7 - mov r2, sl - ldr r0, .L1699+8 - bl printk - ldr r0, .L1699+12 - mov r1, r7 - ldr r2, [r6, #-948] - bl FtlMapWritePage -.L1694: - ldr r3, [sp, #4] - mov r0, r9 - ldr r1, [r6, #-948] - mov r2, r4, asl #9 - add r1, r1, r3, asl #9 - bl memcpy - b .L1695 -.L1692: - mov r0, r9 - mov r1, sl - mov r2, r4, asl #9 + ldr fp, .L2685+4 + str r3, [sp] bl ftl_memset -.L1695: - ldr r3, [sp, #0] - add r7, r7, #1 - rsb r5, r4, r5 - add r8, r8, r4 - add r9, r9, r4, asl #9 - add r3, r3, #4 - str r3, [sp, #0] -.L1690: - cmp r5, #0 - bne .L1696 -.L1689: - mov r0, fp - add sp, sp, #52 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1700: - .align 2 -.L1699: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC126 - .word .LANCHOR2+252 - .fnend - .size FtlVendorPartRead, .-FtlVendorPartRead - .align 2 - .global Ftl_load_ext_data - .type Ftl_load_ext_data, %function -Ftl_load_ext_data: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r0, #0 - ldr r5, .L1705 - mov r1, #1 - ldr r2, .L1705+4 - bl FtlVendorPartRead - ldr r4, .L1705+8 - ldr r3, [r5, #-1708] - cmp r3, r4 - beq .L1702 - ldr r0, .L1705+4 - mov r1, #0 - mov r2, #512 - bl ftl_memset - str r4, [r5, #-1708] -.L1702: - ldr r2, [r5, #-1708] - ldr r3, .L1705 - cmp r2, r4 - bne .L1703 - ldr r2, [r3, #-1620] - ldr r1, [r3, #-1676] - str r2, [r3, #-1812] - ldr r2, [r3, #-1616] - str r2, [r3, #-1808] - ldr r2, [r3, #-1700] - str r2, [r3, #-1816] - ldr r2, [r3, #-1696] - str r2, [r3, #-1828] - ldr r2, [r3, #-1692] - str r2, [r3, #-1836] - ldr r2, [r3, #-1688] - str r2, [r3, #-1820] - ldr r2, [r3, #-1680] - str r2, [r3, #-1792] - ldr r2, .L1705+12 - str r1, [r2, #4052] - ldr r2, [r3, #-1672] - str r2, [r3, #-1832] - ldr r2, [r3, #-1668] - str r2, [r3, #-1824] - ldr r2, [r3, #-1664] - str r2, [r3, #-1784] - ldr r2, [r3, #-1660] - str r2, [r3, #-1780] - ldr r2, [r3, #-1648] - str r2, [r3, #-1712] -.L1703: - ldr r4, .L1705 - mov r3, #0 - ldr r5, .L1705+12 - str r3, [r4, #-996] - ldr r2, [r4, #-1640] - ldr r3, .L1705+16 - cmp r2, r3 - bne .L1704 + ldr r3, [r5, #-2064] + ldr r7, [r5, #-2040] + str r6, [r4, #32] + str r3, [r5, #220] + mvn r3, #0 + str r7, [r5, #224] + str r6, [r4, #28] + strh r3, [r4] @ movhi + strh r3, [r4, #2] @ movhi mov r3, #1 - ldr r0, .L1705+20 - str r3, [r5, #3840] - ldr r1, .L1705+24 - bl printk -.L1704: - movw r3, #3906 - ldr r0, [r4, #-1796] - ldrh r2, [r5, r3] - ldr r3, [r4, #-1792] - mla r0, r0, r2, r3 - mov r3, #3856 - ldrh r1, [r5, r3] - bl __aeabi_uidiv - str r0, [r4, #-1788] - ldmfd sp!, {r3, r4, r5, pc} -.L1706: + str r3, [r4, #36] +.L2643: + uxth r2, r6 + ldr r1, [sp] + sxth r3, r2 + cmp r3, r1 + bge .L2661 + ldr r1, [sp] + sub r1, r1, #1 + cmp r3, r1 + mov r1, r3, asl #1 + bne .L2644 + ldrh r0, [r9, r1] + mov r6, #0 + str r3, [sp, #12] + add r3, r9, r1 + mov r1, #1 + str r2, [sp, #8] + str r3, [sp] + bl FtlGetLastWrittenPage + ldr fp, .L2685 + ldr r2, [sp, #8] + add r1, r0, #1 + ldr r3, [sp, #12] + sxth r0, r0 + strh r1, [r4, #2] @ movhi + add r9, r0, #1 + strh r2, [r4] @ movhi + ldr r2, [sp, #4] + ldr r3, [r2, r3, asl #2] + str r3, [r4, #28] +.L2645: + sxth r3, r6 + cmp r3, r9 + bge .L2661 + ldr r2, [sp] + mov r1, #1 + ldr r0, .L2685+8 + ldrh r2, [r2] + orr r3, r3, r2, asl #10 + mov r2, r1 + str r3, [r5, #216] + bl FlashReadPages + ldr r3, .L2685+12 + ldrb r3, [r3] @ zero_extendqisi2 + cmp r3, #0 + beq .L2646 + ldr r3, [fp, #224] + ldr r3, [r3, #12] + cmp r3, #0 + beq .L2646 + ldr r2, .L2685+16 + ldr r0, [fp, #220] + str r3, [sp, #4] + ldrh r1, [r2] + bl js_hash + ldr r3, [sp, #4] + cmp r3, r0 + mvnne r3, #0 + strne r3, [fp, #212] +.L2646: + ldr r3, [fp, #212] + cmn r3, #1 + beq .L2647 + ldrh r3, [r7, #8] + cmp r3, r10 + bcs .L2647 + ldrh r2, [r4, #4] + ldrh r1, [r7] + cmp r1, r2 + ldreq r2, [fp, #216] + streq r2, [r8, r3, asl #2] +.L2647: + add r6, r6, #1 + b .L2645 +.L2661: + mov r0, r4 + bl ftl_free_no_use_map_blk + ldr r1, .L2685+12 + movw r3, #1874 + ldrh r2, [r4, #2] + ldrh r3, [r1, r3] + cmp r2, r3 + bne .L2650 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk + b .L2650 +.L2644: + ldr r3, [r5, #-2064] + ldr r0, .L2685+8 + str r3, [r5, #220] + add r3, r9, r1 + ldrh r2, [r9, r1] + mov r1, #1 + str r3, [sp, #8] + ldrh r3, [fp] + sub r3, r3, #1 + orr r3, r3, r2, asl #10 + mov r2, r1 + str r3, [r5, #216] + bl FlashReadPages + ldr r3, [r5, #212] + cmn r3, #1 + beq .L2663 + ldrh r2, [r7] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L2663 + ldrh r2, [r7, #8] + movw r3, #64245 + cmp r2, r3 + bne .L2663 + mov r1, #0 + mov ip, #8 + mov lr, #4 +.L2652: + ldr r0, .L2685+4 + uxth r3, r1 + sxth r2, r3 + ldrh r0, [r0] + sub r0, r0, #1 + cmp r2, r0 + bge .L2655 + ldr r0, [r5, #-2064] + add r1, r1, #1 + ldr r2, [r0, r2, asl #3] + uxth r2, r2 + cmp r2, r10 + smlabbcc r3, r3, ip, lr + ldrcc r3, [r0, r3] + strcc r3, [r8, r2, asl #2] + b .L2652 +.L2663: + ldr ip, .L2685 + mov r3, #0 +.L2683: + ldrh r1, [fp] + sxth r2, r3 + cmp r2, r1 + bge .L2655 + str r3, [sp, #16] + ldr r3, [sp, #8] + ldr r0, .L2685+8 + str ip, [sp, #12] + ldrh r1, [r3] + orr r2, r2, r1, asl #10 + mov r1, #1 + str r2, [ip, #216] + mov r2, r1 + bl FlashReadPages + ldr r3, .L2685+12 + ldrb r2, [r3] @ zero_extendqisi2 + cmp r2, #0 + ldr ip, [sp, #12] + ldr r3, [sp, #16] + beq .L2656 + ldr r2, [ip, #224] + ldr r2, [r2, #12] + cmp r2, #0 + beq .L2656 + ldr r1, .L2685+16 + ldr r0, [ip, #220] + str r2, [sp, #20] + ldrh r1, [r1] + bl js_hash + ldr r2, [sp, #20] + ldr ip, [sp, #12] + ldr r3, [sp, #16] + cmp r2, r0 + mvnne r2, #0 + strne r2, [ip, #212] +.L2656: + ldr r2, .L2685 + ldr r2, [r2, #212] + cmn r2, #1 + beq .L2657 + ldrh r2, [r7, #8] + cmp r2, r10 + bcs .L2657 + ldrh r1, [r4, #4] + ldrh r0, [r7] + cmp r0, r1 + ldreq r1, [ip, #216] + streq r1, [r8, r2, asl #2] +.L2657: + add r3, r3, #1 + b .L2683 +.L2655: + add r6, r6, #1 + b .L2643 +.L2650: + mov r0, r4 + bl ftl_map_blk_gc + mov r0, r4 + bl ftl_map_blk_gc + mov r0, #0 + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2686: .align 2 -.L1705: +.L2685: .word .LANCHOR2 - .word .LANCHOR2-1708 - .word 1179929683 + .word .LANCHOR0+1874 + .word .LANCHOR2+212 .word .LANCHOR0 - .word 305432421 - .word .LC77 - .word .LC127 + .word .LANCHOR0+1882 .fnend - .size Ftl_load_ext_data, .-Ftl_load_ext_data + .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 - .global FtlLoadEctTbl - .type FtlLoadEctTbl, %function -FtlLoadEctTbl: + .global FtlLoadVonderInfo + .type FtlLoadVonderInfo, %function +FtlLoadVonderInfo: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r0, #64 - ldr r4, .L1709 - ldr r5, .L1709+4 - ldr r2, [r4, #-916] - ldrh r1, [r4, r5] - bl FtlVendorPartRead - ldr r3, [r4, #-916] - ldr r2, [r3, #0] - ldr r3, .L1709+8 - cmp r2, r3 - beq .L1708 - ldr r1, .L1709+12 - ldr r0, .L1709+16 - bl printk - ldrh r2, [r4, r5] - ldr r0, [r4, #-916] - mov r1, #0 - mov r2, r2, asl #9 - bl ftl_memset -.L1708: + stmfd sp!, {r3, lr} + .save {r3, lr} + movw r2, #1892 + ldr r3, .L2689 + ldr r0, .L2689+4 + ldrh r1, [r3, r2] + movw r2, #262 + strh r1, [r0, r2] @ movhi + add r2, r0, #256 + ldr r1, .L2689+8 + strh r1, [r2] @ movhi + movw r1, #1918 + ldrh r1, [r3, r1] + add r2, r0, #260 + strh r1, [r2] @ movhi + movw r2, #1894 + ldrh r1, [r3, r2] + movw r2, #258 + ldr r3, [r3, #1920] + strh r1, [r0, r2] @ movhi + add r0, r0, #252 + str r3, [r0, #12] + ldr r3, [r0, #-2252] + str r3, [r0, #16] + ldr r3, [r0, #-2256] + str r3, [r0, #20] + ldr r3, [r0, #-2248] + str r3, [r0, #24] + bl FtlMapTblRecovery mov r0, #0 - ldmfd sp!, {r3, r4, r5, pc} -.L1710: + ldmfd sp!, {r3, pc} +.L2690: .align 2 -.L1709: +.L2689: + .word .LANCHOR0 .word .LANCHOR2 - .word -920 - .word 1112818501 - .word .LC128 - .word .LC77 + .word -3962 .fnend - .size FtlLoadEctTbl, .-FtlLoadEctTbl + .size FtlLoadVonderInfo, .-FtlLoadVonderInfo + .align 2 + .global FtlLoadMapInfo + .type FtlLoadMapInfo, %function +FtlLoadMapInfo: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, lr} + .save {r3, lr} + bl FtlL2PDataInit + ldr r0, .L2693 + bl FtlMapTblRecovery + mov r0, #0 + ldmfd sp!, {r3, pc} +.L2694: + .align 2 +.L2693: + .word .LANCHOR2-1972 + .fnend + .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 2 .global FtlVendorPartWrite .type FtlVendorPartWrite, %function FtlVendorPartWrite: .fnstart - @ args = 0, pretend = 0, frame = 56 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1721 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r9, r2 - movw r2, #3924 + ldr r3, .L2707 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r10, r2 + ldr r2, [r3] + .pad #68 + sub sp, sp, #68 mov r4, r1 - ldrh r8, [r3, r2] - movw r2, #3910 - ldrh r2, [r3, r2] - add r1, r1, r0 - .pad #60 - sub sp, sp, #60 + movw r1, #1880 mov r6, r0 + str r3, [sp, #12] + str r2, [sp, #60] + ldr r2, .L2707+4 + ldrh r5, [r2, r1] + add r1, r0, r4 + movw r0, #1868 + ldrh r2, [r2, r0] cmp r1, r2 - mvnhi r7, #0 - bhi .L1712 - mov r8, r0, lsr r8 - mov r7, #0 - ldr sl, .L1721+4 - mov ip, r8, asl #2 - str ip, [sp, #8] - b .L1713 -.L1718: - ldr r1, .L1721 - movw r2, #3922 - ldr ip, [sp, #8] - mov r0, r6 - ldr r3, [sl, #-900] - ldrh fp, [r1, r2] - ldr r3, [r3, ip] - mov r1, fp - str r3, [sp, #4] - bl __aeabi_uidivmod - ldr r3, [sp, #4] - ldr r2, .L1721+4 - uxth r1, r1 - str r1, [sp, #12] - rsb r5, r1, fp - uxth r5, r5 - cmp r5, r4 - uxthhi r5, r4 - cmp r3, #0 - beq .L1715 - cmp r5, fp - beq .L1715 - str r3, [sp, #24] - mov r1, #1 - ldr r3, [r2, #-948] - add r0, sp, #20 - mov r2, r1 - str r3, [sp, #28] + mvnhi r0, #0 + bhi .L2696 + ldr fp, .L2707+8 + mov r5, r6, lsr r5 + mov r3, r5, asl #2 + str r3, [sp, #8] + mov r7, fp mov r3, #0 - str r3, [sp, #32] - bl FlashReadPages - b .L1716 -.L1715: - ldr ip, .L1721 - movw r3, #3926 - ldr r0, [r2, #-948] - mov r1, #0 - ldrh r2, [ip, r3] - bl ftl_memset -.L1716: - ldr r3, [sp, #12] - mov fp, r5, asl #9 - ldr r0, [sl, #-948] - mov r1, r9 - mov r2, fp - rsb r4, r5, r4 - add r0, r0, r3, asl #9 - add r6, r6, r5 - bl memcpy - mov r1, r8 - ldr r0, .L1721+8 - add r8, r8, #1 - ldr r2, [sl, #-948] - add r9, r9, fp - bl FtlMapWritePage - ldr ip, [sp, #8] - add ip, ip, #4 - str ip, [sp, #8] - cmn r0, #1 - moveq r7, r0 -.L1713: + str r3, [sp, #4] +.L2697: cmp r4, #0 - bne .L1718 -.L1712: - mov r0, r7 - add sp, sp, #60 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1722: + beq .L2706 + ldr r2, [sp, #8] + mov r0, r6 + ldr r3, [fp, #-1996] + ldr ip, [r3, r2] + ldr r3, .L2707+12 + str ip, [sp, #20] + ldrh r2, [r3] + mov r1, r2 + str r2, [sp, #16] + bl __aeabi_uidivmod + ldr r2, [sp, #16] + mov r8, r1 + ldr ip, [sp, #20] + rsb r3, r1, r2 + uxth r9, r3 + cmp r9, r4 + uxthhi r9, r4 + cmp r9, r2 + cmpne ip, #0 + movne r1, #1 + moveq r1, #0 + beq .L2699 + ldr r2, [r7, #-2056] + mov r1, #1 + add r0, sp, #24 + str ip, [sp, #28] + str r2, [sp, #32] + mov r2, #0 + str r2, [sp, #36] + mov r2, r1 + bl FlashReadPages + b .L2700 +.L2699: + ldr r2, .L2707+16 + ldr r0, [r7, #-2056] + ldrh r2, [r2] + bl ftl_memset +.L2700: + mov ip, r9, asl #9 + ldr r0, [r7, #-2056] + uxth r8, r8 + mov r1, r10 + mov r2, ip + str ip, [sp, #16] + add r0, r0, r8, asl #9 + rsb r4, r9, r4 + bl ftl_memcpy + mov r1, r5 + ldr r0, .L2707+20 + add r5, r5, #1 + ldr r2, [r7, #-2056] + add r6, r6, r9 + bl FtlMapWritePage + ldr r3, [sp, #4] + cmn r0, #1 + ldr ip, [sp, #16] + mvneq r3, #0 + str r3, [sp, #4] + add r10, r10, ip + ldr r3, [sp, #8] + add r3, r3, #4 + str r3, [sp, #8] + b .L2697 +.L2706: + ldr r0, [sp, #4] +.L2696: + ldr r3, [sp, #12] + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L2703 + bl __stack_chk_fail +.L2703: + add sp, sp, #68 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2708: .align 2 -.L1721: +.L2707: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 + .word .LANCHOR0+1878 + .word .LANCHOR0+1882 .word .LANCHOR2+252 .fnend .size FtlVendorPartWrite, .-FtlVendorPartWrite @@ -15031,54 +16310,54 @@ Ftl_save_ext_data: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L1725 - ldr r2, .L1725+4 - ldr r1, [r3, #-1708] + ldr r3, .L2711 + ldr r2, .L2711+4 + ldr r1, [r3, #-3748] cmp r1, r2 bxne lr - ldr r2, .L1725+8 + ldr r2, .L2711+8 mov r0, #0 mov r1, #1 - str r2, [r3, #-1704] - ldr r2, [r3, #-1812] - str r2, [r3, #-1620] - ldr r2, [r3, #-1808] - str r2, [r3, #-1616] - ldr r2, [r3, #-1816] - str r2, [r3, #-1700] - ldr r2, [r3, #-1828] - str r2, [r3, #-1696] - ldr r2, [r3, #-1836] - str r2, [r3, #-1692] - ldr r2, [r3, #-1820] - str r2, [r3, #-1688] - ldr r2, [r3, #-1792] - str r2, [r3, #-1680] - ldr r2, .L1725+12 - ldr r2, [r2, #4052] - str r2, [r3, #-1676] - ldr r2, [r3, #-1832] - str r2, [r3, #-1672] - ldr r2, [r3, #-1824] - str r2, [r3, #-1668] - ldr r2, [r3, #-1784] - str r2, [r3, #-1664] - ldr r2, [r3, #-1780] - str r2, [r3, #-1660] - ldr r2, [r3, #-1712] - str r2, [r3, #-1648] - ldr r2, [r3, #-996] - str r2, [r3, #-1644] - ldr r2, .L1725+16 + str r2, [r3, #-3744] + ldr r2, [r3, #-3856] + str r2, [r3, #-3660] + ldr r2, [r3, #-3852] + str r2, [r3, #-3656] + ldr r2, [r3, #-3860] + str r2, [r3, #-3740] + ldr r2, [r3, #-3872] + str r2, [r3, #-3736] + ldr r2, [r3, #-3880] + str r2, [r3, #-3732] + ldr r2, [r3, #-3864] + str r2, [r3, #-3728] + ldr r2, [r3, #-3836] + str r2, [r3, #-3720] + ldr r2, .L2711+12 + ldr r2, [r2, #4064] + str r2, [r3, #-3716] + ldr r2, [r3, #-3876] + str r2, [r3, #-3712] + ldr r2, [r3, #-3868] + str r2, [r3, #-3708] + ldr r2, [r3, #-3828] + str r2, [r3, #-3704] + ldr r2, [r3, #-3824] + str r2, [r3, #-3700] + ldr r2, [r3, #-3752] + str r2, [r3, #-3688] + ldr r2, [r3, #-2104] + str r2, [r3, #-3684] + ldr r2, .L2711+16 b FtlVendorPartWrite -.L1726: +.L2712: .align 2 -.L1725: +.L2711: .word .LANCHOR2 .word 1179929683 - .word 1342177360 + .word 1342177366 .word .LANCHOR0 - .word .LANCHOR2-1708 + .word .LANCHOR2-3748 .fnend .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 @@ -15090,43 +16369,41 @@ FtlEctTblFlush: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, lr} .save {r3, lr} - ldr r3, .L1734 - ldr r1, .L1734+4 - ldr r3, [r3, #3840] + ldr r3, .L2721 + ldr r2, .L2721+4 + ldr r3, [r3, #1796] cmp r3, #0 - moveq r2, #32 - beq .L1728 - ldr r2, [r1, #-1780] - cmp r2, #39 - movls r2, #4 - movhi r2, #32 -.L1728: - mov r3, #296 - ldrh r1, [r1, r3] + moveq r3, #32 + beq .L2714 + ldr r3, [r2, #-3824] + cmp r3, #39 + movhi r3, #32 + movls r3, #4 +.L2714: + ldr ip, .L2721+8 + ldrh r1, [ip] cmp r1, #31 addls r1, r1, #1 - ldrls r2, .L1734+4 - strlsh r1, [r2, r3] @ movhi - movls r2, #1 + strlsh r1, [ip] @ movhi + movls r3, #1 cmp r0, #0 - ldr r3, .L1734+4 - bne .L1730 - ldr r1, [r3, #-916] + bne .L2716 + ldr r1, [r2, #-2020] ldr r0, [r1, #20] ldr r1, [r1, #16] - add r2, r2, r0 - cmp r1, r2 - bcc .L1731 -.L1730: - ldr r2, [r3, #-916] + add r3, r3, r0 + cmp r1, r3 + bcc .L2717 +.L2716: + ldr r3, [r2, #-2020] mov r0, #64 - ldr r1, [r2, #16] - str r1, [r2, #20] - ldr r1, .L1734+8 - str r1, [r2, #0] - ldr r1, .L1734+12 - ldr r2, [r3, #-916] - ldrh r1, [r3, r1] + ldr r1, [r3, #16] + str r1, [r3, #20] + ldr r1, .L2721+12 + str r1, [r3] + ldr r3, .L2721+16 + ldr r2, [r2, #-2020] + ldrh r1, [r3, #-12] mov r3, r1, asl #9 str r3, [r2, #12] ldr r3, [r2, #8] @@ -15136,653 +16413,328 @@ FtlEctTblFlush: str r3, [r2, #4] bl FtlVendorPartWrite bl Ftl_save_ext_data -.L1731: +.L2717: mov r0, #0 ldmfd sp!, {r3, pc} -.L1735: +.L2722: .align 2 -.L1734: +.L2721: .word .LANCHOR0 .word .LANCHOR2 + .word .LANCHOR2+296 .word 1112818501 - .word -920 + .word .LANCHOR2-2016 .fnend .size FtlEctTblFlush, .-FtlEctTblFlush .align 2 - .global FtlMapTblRecovery - .type FtlMapTblRecovery, %function -FtlMapTblRecovery: + .global FtlVendorPartRead + .type FtlVendorPartRead, %function +FtlVendorPartRead: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .pad #28 - sub sp, sp, #28 - ldr r3, [r0, #16] - mov r4, r0 - ldr r7, [r0, #24] - mov r1, #0 - ldrh r8, [r0, #6] - mov fp, #0 - str r3, [sp, #16] - ldrh r3, [r0, #8] - mov sl, r7 - ldr r9, [r0, #12] - mov r2, r8, asl #2 - mov r0, r7 - str r3, [sp, #8] - bl ftl_memset - ldr r3, .L1756 - str fp, [r4, #32] - str fp, [r4, #28] - ldr r2, [r3, #-956] - ldr r5, [r3, #-932] - str r2, [r3, #192] - str r5, [r3, #196] - mvn r3, #0 - strh r3, [r4, #0] @ movhi - strh r3, [r4, #2] @ movhi - mov r3, #1 - str r3, [r4, #36] - ldr r3, [sp, #8] - sub r3, r3, #1 - str r3, [sp, #12] - ldr r3, .L1756+4 - b .L1737 -.L1750: - ldr r0, [sp, #12] - cmp r2, r0 - mov r2, r2, asl #1 - bne .L1738 - ldrh r0, [r9, r2] - mov r1, #1 - add r3, r9, r2 - str r3, [sp, #8] - bl FtlGetLastWrittenPage - ldr r1, [sp, #12] - ldr r2, [sp, #16] - mov r7, sl - strh fp, [r4, #0] @ movhi - mov sl, #0 - ldr r6, .L1756 - uxth r0, r0 - add r3, r0, #1 - strh r3, [r4, #2] @ movhi - ldr r3, [r2, r1, asl #2] - sxth r9, r0 - add r9, r9, #1 - str r3, [r4, #28] - b .L1739 -.L1741: - ldr r0, [sp, #8] - mov r1, #1 - ldrh r2, [r0, #0] - ldr r0, .L1756+8 - orr r3, r3, r2, asl #10 - mov r2, r1 - str r3, [r6, #188] - bl FlashReadPages - ldr r3, [r6, #184] - cmn r3, #1 - beq .L1740 - ldrh r3, [r5, #8] - cmp r3, r8 - bcs .L1740 - ldrh r2, [r4, #4] - ldrh r1, [r5, #0] - cmp r1, r2 - ldreq r2, [r6, #188] - streq r2, [r7, r3, asl #2] -.L1740: - add sl, sl, #1 - uxth sl, sl -.L1739: - sxth r3, sl - cmp r3, r9 - blt .L1741 - b .L1742 -.L1738: - ldr r6, .L1756 - movw r7, #3918 - add r0, r6, #184 - ldr r1, [r6, #-956] - str r1, [r6, #192] - add r1, r9, r2 - str r1, [sp, #20] - ldrh r1, [r9, r2] - ldrh r2, [r3, r7] - sub r2, r2, #1 - orr r2, r2, r1, asl #10 - mov r1, #1 - str r2, [r6, #188] - mov r2, r1 - str r3, [sp, #4] - bl FlashReadPages - ldr r2, [r6, #184] - ldr r3, [sp, #4] - cmn r2, #1 - beq .L1753 - ldrh r1, [r5, #0] - ldrh r2, [r4, #4] - cmp r1, r2 - bne .L1753 - ldrh r1, [r5, #8] - movw r2, #64245 - cmp r1, r2 - bne .L1753 - b .L1754 -.L1746: - ldr r0, [r6, #-956] - mov ip, r1, asl #3 - add r2, r2, #1 - ldr r1, [r0, r1, asl #3] - uxth r2, r2 - uxth r1, r1 - cmp r1, r8 - addcc r0, r0, ip - ldrcc r0, [r0, #4] - strcc r0, [sl, r1, asl #2] - b .L1744 -.L1754: - mov r2, #0 -.L1744: - ldrh r0, [r3, r7] - sxth r1, r2 - sub r0, r0, #1 - cmp r1, r0 - blt .L1746 - b .L1747 -.L1749: - ldr r0, [sp, #20] - ldrh r1, [r0, #0] - ldr r0, .L1756+8 - orr r2, r2, r1, asl #10 - mov r1, #1 - str r2, [r7, #188] - mov r2, r1 - str r3, [sp, #4] - bl FlashReadPages - ldr r2, [r7, #184] - ldr r3, [sp, #4] - cmn r2, #1 - beq .L1748 - ldrh r2, [r5, #8] - cmp r2, r8 - bcs .L1748 - ldrh r1, [r4, #4] - ldrh r0, [r5, #0] - cmp r0, r1 - ldreq r1, [r7, #188] - streq r1, [sl, r2, asl #2] -.L1748: - add r6, r6, #1 - uxth r6, r6 - b .L1755 -.L1753: - ldr r7, .L1756 - mov r6, #0 -.L1755: - movw r1, #3918 - sxth r2, r6 - ldrh r1, [r3, r1] - cmp r2, r1 - blt .L1749 -.L1747: - add fp, fp, #1 - uxth fp, fp -.L1737: - ldr r1, [sp, #8] - sxth r2, fp - cmp r2, r1 - blt .L1750 -.L1742: - mov r0, r4 - bl ftl_free_no_use_map_blk - ldr r1, .L1756+4 - movw r3, #3918 - ldrh r2, [r4, #2] - ldrh r3, [r1, r3] - cmp r2, r3 - bne .L1751 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L1751: - mov r0, r4 - bl ftl_map_blk_gc - mov r0, r4 - bl ftl_map_blk_gc - mov r0, #0 - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1757: - .align 2 -.L1756: - .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR2+184 - .fnend - .size FtlMapTblRecovery, .-FtlMapTblRecovery - .align 2 - .global FtlLoadMapInfo - .type FtlLoadMapInfo, %function -FtlLoadMapInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - bl FtlL2PDataInit - ldr r0, .L1759 - bl FtlMapTblRecovery - mov r0, #0 - ldmfd sp!, {r3, pc} -.L1760: - .align 2 -.L1759: - .word .LANCHOR2-1084 - .fnend - .size FtlLoadMapInfo, .-FtlLoadMapInfo - .align 2 - .global FtlLoadVonderInfo - .type FtlLoadVonderInfo, %function -FtlLoadVonderInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - mov r2, #3936 - ldr r3, .L1762 - ldr r0, .L1762+4 - ldrh r1, [r3, r2] - movw r2, #262 - strh r1, [r0, r2] @ movhi - mov r2, #256 - ldr r1, .L1762+8 - strh r1, [r0, r2] @ movhi - movw r2, #3962 - ldrh r1, [r3, r2] - mov r2, #260 - strh r1, [r0, r2] @ movhi - movw r2, #3938 - ldrh r1, [r3, r2] - sub r2, r2, #3680 - ldr r3, [r3, #3964] - strh r1, [r0, r2] @ movhi - str r3, [r0, #264] - ldr r3, [r0, #-904] - str r3, [r0, #268] - ldr r3, [r0, #-908] - str r3, [r0, #272] - ldr r3, [r0, #-900] - str r3, [r0, #276] - add r0, r0, #252 - bl FtlMapTblRecovery - mov r0, #0 - ldmfd sp!, {r3, pc} -.L1763: - .align 2 -.L1762: - .word .LANCHOR0 - .word .LANCHOR2 - .word -3962 - .fnend - .size FtlLoadVonderInfo, .-FtlLoadVonderInfo - .align 2 - .global FlashLoadFactorBbt - .type FlashLoadFactorBbt, %function -FlashLoadFactorBbt: - .fnstart - @ args = 0, pretend = 0, frame = 48 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - movw r2, #3062 - ldr r9, .L1773 - movw r3, #3060 - ldr r4, .L1773+4 - .pad #52 - sub sp, sp, #52 - mov r1, #0 - mvn r7, #0 - ldrh r3, [r9, r3] - add r0, r4, #236 - ldrh r8, [r9, r2] - mov r2, #16 - mov r6, #0 - mul r8, r8, r3 - bl ftl_memset - ldr r3, [r4, #232] - str r6, [sp, #20] - mov r4, r6 - str r3, [sp, #24] - uxth r8, r8 - add r3, r8, r7 - uxth r3, r3 - str r3, [sp, #4] - b .L1765 -.L1771: - ldr r5, [sp, #4] - sub r3, r8, #12 - mul fp, r8, r4 - ldr sl, .L1773+4 - b .L1766 -.L1769: - add r2, fp, r5 - mov r1, #1 - add r0, sp, #12 - str r3, [sp, #0] - mov r2, r2, asl #10 - str r2, [sp, #16] - mov r2, r1 - bl FlashReadPages - ldr r2, [sp, #12] - ldr r3, [sp, #0] - cmn r2, #1 - beq .L1767 - ldr r2, [sl, #232] - ldrh r1, [r2, #0] - movw r2, #61664 - cmp r1, r2 - bne .L1767 - ldr r0, .L1773+8 - mov r1, r4 - mov r2, r5 - add r6, r6, #1 - bl printk - ldr r3, .L1773+4 - uxth r6, r6 - add r3, r3, r4, asl #1 - strh r5, [r3, #236] @ movhi - b .L1768 -.L1767: - sub r5, r5, #1 - uxth r5, r5 -.L1766: - cmp r5, r3 - bgt .L1769 -.L1768: - ldrb r3, [r9, #3762] @ zero_extendqisi2 - add r4, r4, #1 - cmp r3, r6 - uxtb r4, r4 - moveq r7, #0 -.L1765: - ldrb r3, [r9, #3762] @ zero_extendqisi2 - cmp r3, r4 - bhi .L1771 - mov r0, r7 - add sp, sp, #52 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1774: - .align 2 -.L1773: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC129 - .fnend - .size FlashLoadFactorBbt, .-FlashLoadFactorBbt - .align 2 - .global dump_map_info - .type dump_map_info, %function -dump_map_info: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r3, #3856 - ldr r5, .L1788 - .pad #36 - sub sp, sp, #36 - ldrh r6, [r5, r3] - b .L1776 -.L1778: - add r3, r5, r7 - mov r1, r6 - ldrb r0, [r3, #3874] @ zero_extendqisi2 - bl V2P_block - str r0, [sp, #28] - bl FtlBbmIsBadBlock - ldr r3, [sp, #28] - cmp r0, #0 - bne .L1777 - ldr r2, [r8, #-968] - mov r3, r3, asl #10 - mla r2, r9, r4, r2 - str r3, [r2, #4] - ldr r3, [r8, #-1172] - str r3, [r2, #8] - ldrh r3, [r5, sl] - mul r3, r3, r4 - add r4, r4, #1 - uxth r4, r4 - add r1, r3, #3 - cmp r3, #0 - movlt r3, r1 - ldr r1, [r8, #-1168] - bic r3, r3, #3 - add r3, r1, r3 - str r3, [r2, #12] -.L1777: - add r7, r7, #1 - uxth r7, r7 - b .L1781 -.L1786: - ldr r8, .L1788+4 - mov r4, #0 - mov r7, r4 - movw fp, #3848 - mov r9, #36 - movw sl, #3928 -.L1781: - ldrh r3, [r5, fp] - cmp r3, r7 - bhi .L1778 - cmp r4, #0 - beq .L1779 - ldr sl, .L1788+4 - mov r1, r4 - mov r2, #1 - mov r7, #0 - mov r8, r7 - ldr r0, [sl, #-968] - bl FlashReadPages -.L1780: - ldr r1, [sl, #-968] - add r8, r8, #1 - add r1, r1, r7 - uxth r8, r8 - add r7, r7, #36 - ldr r3, [r1, #12] - ldr r2, [r1, #4] - ldr r1, [r1, #8] - ldr r0, [r3, #4] - str r0, [sp, #0] - ldr r0, [r3, #8] - str r0, [sp, #4] - ldr r0, [r3, #12] - str r0, [sp, #8] - ldr r0, [r1, #0] - str r0, [sp, #12] - ldr r1, [r1, #4] - ldr r0, .L1788+8 - str r1, [sp, #16] - ubfx r1, r2, #10, #16 - ldr r3, [r3, #0] - bl printk - cmp r8, r4 - bne .L1780 -.L1779: - add r6, r6, #1 - uxth r6, r6 -.L1776: - movw r2, #3858 - ldrh r3, [r5, r2] - cmp r3, r6 - bhi .L1786 - mov r5, #0 - ldr r4, .L1788+4 - ldr r8, .L1788 - b .L1782 -.L1783: - ldr r2, [r4, #-1036] - mov r1, #1 - ldr r0, .L1788+12 - add r6, r6, #1 - ldrh r2, [r2, r7] - uxth r6, r6 - orr r3, r3, r2, asl #10 - mov r2, r1 - str r3, [r4, #188] - bl FlashReadPages - ldr r3, [r4, #196] - ldr r1, [r4, #-1036] - ldr r2, [r4, #192] - ldr r0, [r3, #0] - ldrh r1, [r1, r7] - str r0, [sp, #0] - ldr r0, [r3, #4] - str r0, [sp, #4] - ldr r0, [r3, #8] - str r0, [sp, #8] - ldr r3, [r3, #12] - ldr r0, .L1788+16 - str r3, [sp, #12] - ldr r3, [r2, #0] - str r3, [sp, #16] - ldr r3, [r2, #4] - str r3, [sp, #20] - ldr r2, [r4, #184] - ldr r3, [r4, #188] - bl printk -.L1785: - movw r2, #3918 - sxth r3, r6 - ldrh r2, [r8, r2] - cmp r3, r2 - blt .L1783 - add r5, r5, #1 - uxth r5, r5 -.L1782: - ldr r3, .L1788+20 - sxth r7, r5 - ldr r6, .L1788+4 - ldrh r3, [r4, r3] - cmp r7, r3 - movlt r7, r7, asl #1 - movlt r6, #0 - blt .L1785 -.L1784: - ldr r4, .L1788 - mov r5, #3952 - ldr r1, [r6, #-1036] - mov r2, #2 - ldr r0, .L1788+24 - ldr r3, [r4, #3944] - bl rknand_print_hex - ldr r1, [r6, #-1028] - ldrh r3, [r4, r5] - mov r2, #4 - ldr r0, .L1788+28 - bl rknand_print_hex - ldr r0, .L1788+32 - ldr r1, [r6, #-896] - mov r2, #4 - ldrh r3, [r4, r5] - add sp, sp, #36 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - b rknand_print_hex -.L1789: - .align 2 -.L1788: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC130 - .word .LANCHOR2+184 - .word .LC108 - .word -1040 - .word .LC131 - .word .LC132 - .word .LC133 - .fnend - .size dump_map_info, .-dump_map_info - .align 2 - .global FtlDumpSysBlock - .type FtlDumpSysBlock, %function -FtlDumpSysBlock: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + ldr r3, .L2736 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r7, r2 + ldr r2, [r3] + .pad #60 + sub sp, sp, #60 + mov r5, r1 + movw r1, #1880 mov r6, r0 - ldr r4, .L1794 - .pad #24 - sub sp, sp, #24 - mov r7, r0, asl #10 - mov r5, #0 - ldr r8, .L1794+4 - ldr r3, [r4, #-956] - str r3, [r4, #192] - ldr r3, [r4, #-932] - str r3, [r4, #196] - b .L1791 -.L1793: - mov r1, #1 - ldr r0, .L1794+8 - mov r2, r1 - orr r3, r3, r7 - str r3, [r4, #188] - bl FlashReadPages - ldr r3, [r4, #196] - mov r1, r6 - ldr r0, .L1794+12 - ldr r2, [r3, #0] - str r2, [sp, #0] - ldr r2, [r3, #4] - str r2, [sp, #4] - ldr r2, [r3, #8] - str r2, [sp, #8] - ldr r3, [r3, #12] - ldr r2, [r4, #184] str r3, [sp, #12] - ldr r3, [r4, #192] - ldr r3, [r3, #0] - str r3, [sp, #16] - ldr r3, [r4, #188] + str r2, [sp, #52] + ldr r2, .L2736+4 + ldrh r4, [r2, r1] + add r1, r0, r5 + movw r0, #1868 + ldrh r2, [r2, r0] + cmp r1, r2 + mvnhi r0, #0 + bhi .L2724 + ldr r10, .L2736+8 + mov r4, r6, lsr r4 + mov r3, r4, asl #2 + str r3, [sp, #4] + mov fp, r10 + mov r3, #0 + str r3, [sp] +.L2725: + cmp r5, #0 + beq .L2735 + ldr r3, [r10, #-1996] + mov r0, r6 + ldr r2, [sp, #4] + ldr r8, [r3, r2] + ldr r3, .L2736+12 + ldrh r9, [r3] + mov r1, r9 + bl __aeabi_uidivmod + rsb r3, r1, r9 + str r1, [sp, #8] + uxth r9, r3 + cmp r9, r5 + uxthhi r9, r5 + cmp r8, #0 + beq .L2727 + ldr r2, [fp, #-2056] + mov r1, #1 + add r0, sp, #16 + str r8, [sp, #20] + str r2, [sp, #24] + mov r2, #0 + str r2, [sp, #28] + mov r2, r1 + bl FlashReadPages + ldr r2, [sp, #16] + ldr r3, [sp] + cmn r2, #1 + ldr r2, [fp, #212] + mvneq r3, #0 + cmp r2, #256 + str r3, [sp] + bne .L2729 + mov r1, r4 + mov r2, r8 + ldr r0, .L2736+16 bl printk - ldr r3, [r4, #196] - ldr r3, [r3, #0] - cmn r3, #1 - beq .L1792 - ldr r0, .L1794+16 - mov r2, #4 - ldr r1, [r4, #-956] - mov r3, #768 - bl rknand_print_hex -.L1792: - add r5, r5, #1 - uxth r5, r5 -.L1791: - movw r2, #3918 - sxth r3, r5 - ldrh r2, [r8, r2] - cmp r3, r2 - blt .L1793 - add sp, sp, #24 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1795: + ldr r0, .L2736+20 + mov r1, r4 + ldr r2, [r10, #-2056] + bl FtlMapWritePage +.L2729: + ldrh r8, [sp, #8] + mov r0, r7 + ldr r1, [fp, #-2056] + mov r2, r9, asl #9 + add r1, r1, r8, asl #9 + bl ftl_memcpy + b .L2730 +.L2727: + mov r0, r7 + mov r1, r8 + mov r2, r9, asl #9 + bl ftl_memset +.L2730: + ldr r3, [sp, #4] + add r4, r4, #1 + rsb r5, r9, r5 + add r6, r6, r9 + add r3, r3, #4 + add r7, r7, r9, asl #9 + str r3, [sp, #4] + b .L2725 +.L2735: + ldr r0, [sp] +.L2724: + ldr r3, [sp, #12] + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L2732 + bl __stack_chk_fail +.L2732: + add sp, sp, #60 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2737: .align 2 -.L1794: - .word .LANCHOR2 +.L2736: + .word __stack_chk_guard .word .LANCHOR0 - .word .LANCHOR2+184 - .word .LC134 - .word .LC135 + .word .LANCHOR2 + .word .LANCHOR0+1878 + .word .LC132 + .word .LANCHOR2+252 .fnend - .size FtlDumpSysBlock, .-FtlDumpSysBlock + .size FtlVendorPartRead, .-FtlVendorPartRead + .align 2 + .global FtlLoadEctTbl + .type FtlLoadEctTbl, %function +FtlLoadEctTbl: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r0, #64 + ldr r4, .L2741 + sub r5, r4, #2016 + ldr r2, [r4, #-2020] + ldrh r1, [r5, #-12] + bl FtlVendorPartRead + ldr r3, [r4, #-2020] + ldr r2, [r3] + ldr r3, .L2741+4 + cmp r2, r3 + beq .L2739 + ldr r1, .L2741+8 + ldr r0, .L2741+12 + bl printk + ldrh r2, [r5, #-12] + ldr r0, [r4, #-2020] + mov r1, #0 + mov r2, r2, asl #9 + bl ftl_memset +.L2739: + mov r0, #0 + ldmfd sp!, {r3, r4, r5, pc} +.L2742: + .align 2 +.L2741: + .word .LANCHOR2 + .word 1112818501 + .word .LC133 + .word .LC76 + .fnend + .size FtlLoadEctTbl, .-FtlLoadEctTbl + .align 2 + .global Ftl_load_ext_data + .type Ftl_load_ext_data, %function +Ftl_load_ext_data: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r0, #0 + ldr r4, .L2748 + mov r1, #1 + ldr r2, .L2748+4 + bl FtlVendorPartRead + ldr r5, .L2748+8 + ldr r3, [r4, #-3748] + cmp r3, r5 + beq .L2744 + ldr r0, .L2748+4 + mov r1, #0 + mov r2, #512 + bl ftl_memset + str r5, [r4, #-3748] +.L2744: + ldr r2, [r4, #-3748] + ldr r3, .L2748 + cmp r2, r5 + ldr r5, .L2748+12 + bne .L2745 + ldr r2, [r3, #-3660] + str r2, [r3, #-3856] + ldr r2, [r3, #-3656] + str r2, [r3, #-3852] + ldr r2, [r3, #-3740] + str r2, [r3, #-3860] + ldr r2, [r3, #-3736] + str r2, [r3, #-3872] + ldr r2, [r3, #-3732] + str r2, [r3, #-3880] + ldr r2, [r3, #-3728] + str r2, [r3, #-3864] + ldr r2, [r3, #-3720] + str r2, [r3, #-3836] + ldr r2, [r3, #-3716] + str r2, [r5, #4064] + ldr r2, [r3, #-3712] + str r2, [r3, #-3876] + ldr r2, [r3, #-3708] + str r2, [r3, #-3868] + ldr r2, [r3, #-3704] + str r2, [r3, #-3828] + ldr r2, [r3, #-3700] + str r2, [r3, #-3824] + ldr r2, [r3, #-3688] + str r2, [r3, #-3752] +.L2745: + mov r3, #0 + ldr r2, [r4, #-3680] + str r3, [r4, #-2104] + ldr r3, .L2748+16 + cmp r2, r3 + bne .L2746 + ldr r0, .L2748+20 + mov r3, #1 + ldr r1, .L2748+24 + str r3, [r5, #1796] + bl printk +.L2746: + movw r3, #1864 + ldr r0, [r4, #-3840] + ldrh r2, [r5, r3] + ldr r3, [r4, #-3836] + mla r0, r0, r2, r3 + movw r3, #1812 + ldrh r1, [r5, r3] + bl __aeabi_uidiv + str r0, [r4, #-3832] + ldmfd sp!, {r3, r4, r5, pc} +.L2749: + .align 2 +.L2748: + .word .LANCHOR2 + .word .LANCHOR2-3748 + .word 1179929683 + .word .LANCHOR0 + .word 305432421 + .word .LC76 + .word .LC134 + .fnend + .size Ftl_load_ext_data, .-Ftl_load_ext_data + .align 2 + .global FtlMapBlkWriteDumpData + .type FtlMapBlkWriteDumpData, %function +FtlMapBlkWriteDumpData: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r3, [r0, #36] + ldrh r5, [r0, #6] + cmp r3, #0 + ldr r1, [r0, #24] + ldmeqfd sp!, {r4, r5, r6, pc} + ldr r2, .L2757 + mov r3, #0 + str r3, [r0, #36] + ldr r3, [r2, #4052] + cmp r3, #0 + ldmnefd sp!, {r4, r5, r6, pc} + ldr r3, .L2757+4 + sub r5, r5, #1 + mov r6, r0 + uxth r5, r5 + ldr r0, [r3, #-2060] + mov r4, r3 + ldr ip, [r3, #-2040] + str r0, [r3, #220] + str ip, [r3, #224] + ldr r1, [r1, r5, asl #2] + cmp r1, #0 + str r1, [r3, #216] + beq .L2754 + mov r1, #1 + add r0, r3, #212 + mov r2, r1 + bl FlashReadPages + b .L2755 +.L2754: + movw r3, #1882 + mov r1, #255 + ldrh r2, [r2, r3] + bl ftl_memset +.L2755: + mov r0, r6 + mov r1, r5 + ldr r2, [r4, #220] + ldmfd sp!, {r4, r5, r6, lr} + b FtlMapWritePage +.L2758: + .align 2 +.L2757: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 2 .global FlashReadFacBbtData .type FlashReadFacBbtData, %function @@ -15790,96 +16742,103 @@ FlashReadFacBbtData: .fnstart @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1806 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - .save {r4, r5, r6, r7, r8, r9, sl, lr} - mov r6, r1 - mov r9, r2 - movw r1, #3062 - movw r2, #3060 - ldrh r8, [r3, r1] - ldrh r2, [r3, r2] - .pad #40 - sub sp, sp, #40 - ldr r7, .L1806+4 - mov r4, r0 - mul r8, r8, r2 - ldr r3, [r7, #152] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #44 + sub sp, sp, #44 + ldr r9, .L2775 + mov r10, r2 + ldr r8, .L2775+4 + mov r5, r0 + mov r7, r1 + ldr r3, [r9] + str r3, [sp, #36] + ldr r3, .L2775+8 + ldrh r2, [r3, #124] + ldrh r4, [r3, #126] + ldr r3, [r8, #148] + smulbb r4, r2, r4 + str r3, [sp, #8] + ldr r3, [r8, #180] str r3, [sp, #12] - ldr r3, [r7, #232] - uxth r8, r8 - sub r5, r8, #1 - mul sl, r8, r6 - str r3, [sp, #16] - uxth r5, r5 - sub r8, r8, #16 - b .L1797 -.L1803: + uxth r0, r4 + sub r6, r0, #1 + sub r4, r0, #16 + mul fp, r0, r1 + uxth r6, r6 +.L2760: + cmp r6, r4 + ble .L2774 mov r1, #1 - add r3, r5, sl - add r0, sp, #4 + add r3, r6, fp + mov r0, sp mov r2, r1 mov r3, r3, asl #10 - str r3, [sp, #8] + str r3, [sp, #4] bl FlashReadPages - ldr r3, [sp, #4] + ldr r3, [sp] cmn r3, #1 - beq .L1798 - ldr r3, [r7, #232] - ldrh r2, [r3, #0] + beq .L2761 + ldr r3, [r8, #180] + ldrh r2, [r3] movw r3, #61664 cmp r2, r3 - bne .L1798 - cmp r4, #0 - moveq r0, r4 - beq .L1799 - cmp r6, #0 - ldreq r3, .L1806+4 - moveq r0, #1 - beq .L1800 - b .L1801 -.L1802: - ldr r2, [r3, #152] - ubfx r1, r6, #5, #16 - and lr, r6, #31 - add r6, r6, #1 - ldr ip, [r2, r1, asl #2] - uxth r6, r6 - orr ip, ip, r0, asl lr - str ip, [r2, r1, asl #2] -.L1800: - ldr r2, [r3, #160] - cmp r6, r2 - bcc .L1802 -.L1801: - ldr r3, .L1806+4 - mov r2, r9 - mov r0, r4 - ldr r1, [r3, #152] - bl memcpy + bne .L2761 + cmp r5, #0 + moveq r0, r5 + beq .L2762 + cmp r7, #0 + ldreq ip, .L2775+4 + moveq lr, #1 + beq .L2763 +.L2765: + ldr r1, [r8, #148] + mov r2, r10 + mov r0, r5 + bl ftl_memcpy mov r2, #4 - ldr r0, .L1806+8 - mov r1, r4 + ldr r0, .L2775+12 + mov r1, r5 mov r3, r2 bl rknand_print_hex mov r0, #0 - b .L1799 -.L1798: - sub r5, r5, #1 - uxth r5, r5 -.L1797: - cmp r5, r8 - bgt .L1803 + b .L2762 +.L2763: + ldr r3, [r8, #168] + uxth r4, r7 + add r7, r7, #1 + cmp r4, r3 + bcs .L2765 + ldr r2, [ip, #148] + mov r1, r4, lsr #5 + and r0, r4, #31 + ldr r3, [r2, r1, asl #2] + orr r0, r3, lr, asl r0 + str r0, [r2, r1, asl #2] + b .L2763 +.L2761: + sub r6, r6, #1 + uxth r6, r6 + b .L2760 +.L2774: mvn r0, #0 -.L1799: - add sp, sp, #40 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -.L1807: +.L2762: + ldr r2, [sp, #36] + ldr r3, [r9] + cmp r2, r3 + beq .L2767 + bl __stack_chk_fail +.L2767: + add sp, sp, #44 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2776: .align 2 -.L1806: - .word .LANCHOR0 +.L2775: + .word __stack_chk_guard .word .LANCHOR2 - .word .LC136 + .word .LANCHOR0 + .word .LC135 .fnend .size FlashReadFacBbtData, .-FlashReadFacBbtData .align 2 @@ -15889,57 +16848,57 @@ FlashGetBadBlockList: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1815 + ldr r3, .L2788 stmfd sp!, {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} mov r5, r0 - ldr r3, [r3, #3624] - ldr r6, .L1815+4 - ldrb r2, [r3, #13] @ zero_extendqisi2 - ldrh r4, [r3, #14] - ldr r0, [r6, #140] - mul r4, r4, r2 + ldr r3, [r3, #692] + ldr r6, .L2788+4 + ldrb r4, [r3, #13] @ zero_extendqisi2 + ldrh r3, [r3, #14] + ldr r0, [r6, #176] + smulbb r4, r4, r3 uxth r4, r4 add r2, r4, #7 - mov r2, r2, lsr #3 + mov r2, r2, asr #3 bl FlashReadFacBbtData cmn r0, #1 - beq .L1814 - mov r2, #0 - mov r0, r4, lsr #4 - mov r3, r2 - sub r4, r4, #1 - mov r1, #1 - b .L1810 -.L1812: - ldr ip, [r6, #140] - mov r8, r2, lsr #5 - and r7, r2, #31 - ldr ip, [ip, r8, asl #2] - ands ip, ip, r1, asl r7 - movne ip, r3, asl #1 - addne r3, r3, #1 - uxthne r3, r3 - strneh r2, [r5, ip] @ movhi - cmp r3, r0 - bcs .L1814 - add r2, r2, #1 - uxth r2, r2 -.L1810: - cmp r2, r4 - blt .L1812 - b .L1809 -.L1814: + bne .L2778 +.L2782: mov r3, #0 -.L1809: + b .L2779 +.L2778: + mov lr, r4, lsr #4 + mov ip, #0 + sub r4, r4, #1 + mov r3, ip + mov r7, #1 +.L2780: + uxth r0, ip + cmp r0, r4 + bge .L2779 + ldr r8, [r6, #176] + mov r1, r0, lsr #5 + and r2, r0, #31 + add ip, ip, #1 + ldr r1, [r8, r1, asl #2] + ands r2, r1, r7, asl r2 + addne r2, r3, #1 + movne r3, r3, asl #1 + strneh r0, [r5, r3] @ movhi + uxthne r3, r2 + cmp r3, lr + bcc .L2780 + b .L2782 +.L2779: mov r3, r3, asl #1 mvn r2, #0 mov r0, #0 strh r2, [r5, r3] @ movhi ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1816: +.L2789: .align 2 -.L1815: +.L2788: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -15949,1560 +16908,541 @@ FlashGetBadBlockList: .type FtlMakeBbt, %function FtlMakeBbt: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - ldr r6, .L1835 - ldr r5, [r6, #4040] + stmfd sp!, {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, .L2814 + ldr r5, [r6, #4052] cmp r5, #0 - bne .L1818 - ldr r8, .L1835+4 + bne .L2791 bl FtlBbtMemInit - ldr r4, .L1835+8 + ldr r8, .L2814+4 bl FtlLoadFactoryBbt - add sl, r8, #12 - b .L1819 -.L1825: - ldrh r3, [sl], #2 - movw r2, #65535 - ldr r0, [r4, #-956] - movw fp, #3912 - ldr r9, [r4, #-932] - cmp r3, r2 - str r0, [r4, #192] - str r9, [r4, #196] - beq .L1820 - ldrh r7, [r6, fp] + ldr r7, .L2814+8 + sub r9, r8, #18 + add r4, r6, #1936 + mov r10, r7 +.L2792: + ldr r3, .L2814+12 + ldrh r3, [r3] + cmp r5, r3 + bcs .L2811 + ldrh r2, [r9, #2]! + movw r3, #65535 + ldr r0, [r7, #-2064] + ldr fp, [r7, #-2040] + cmp r2, r3 + ldr r3, .L2814+16 + str r0, [r7, #220] + str fp, [r7, #224] + beq .L2793 + ldrh ip, [r3] mov r1, #1 + ldr r0, .L2814+20 + str r3, [sp, #8] + mla ip, ip, r5, r2 + mov r2, ip, asl #10 + str r2, [r7, #216] mov r2, r1 - ldr r0, .L1835+12 - mla r7, r7, r5, r3 - mov r3, r7, asl #10 - str r3, [r4, #188] + str ip, [sp, #4] bl FlashReadPages - ldrh r2, [r6, fp] - ldr r0, [r8, #28] + ldr r0, [r8] + ldr r1, [r7, #220] + ldr r3, [sp, #8] + ldrh r2, [r3] add r2, r2, #7 - ldr r1, [r4, #192] - mov r2, r2, lsr #3 - bl memcpy - b .L1821 -.L1820: + mov r2, r2, asr #3 + bl ftl_memcpy + ldr ip, [sp, #4] + b .L2794 +.L2793: mov r1, r5 + str r3, [sp, #4] bl FlashGetBadBlockList - ldr r0, [r4, #192] - ldr r1, [r8, #28] + ldr r0, [r7, #220] + ldr r1, [r8] bl FtlBbt2Bitmap - ldrh fp, [r6, fp] -.L1823: - sub fp, fp, #1 - uxth fp, fp -.L1834: - movw r7, #3912 - ldrh r0, [r6, r7] - mla r0, r0, r5, fp + ldr r3, [sp, #4] + ldrh r2, [r3] + sub r2, r2, #1 + uxth r2, r2 + stmib sp, {r2, r3} +.L2795: + ldr r3, [sp, #8] + ldrh r0, [r3] + ldr r3, [sp, #4] + smlabb r0, r0, r5, r3 uxth r0, r0 bl FtlBbmIsBadBlock cmp r0, #1 - beq .L1823 + ldreq r3, [sp, #4] + subeq r3, r3, #1 + uxtheq r3, r3 + streq r3, [sp, #4] + beq .L2795 +.L2812: + ldrh r3, [sp, #4] mov r1, #0 mov r2, #16 - strh fp, [sl, #-2] @ movhi - ldr r0, [r4, #-932] + ldr r0, [r10, #-2040] + strh r3, [r9] @ movhi bl ftl_memset - ldr r3, .L1835+16 - strh r3, [r9, #0] @ movhi + ldr r3, .L2814+24 + strh r3, [fp] @ movhi mov r3, #0 - str r3, [r9, #4] - ldrh r3, [sl, #-2] - ldrh r7, [r6, r7] - strh r3, [r9, #2] @ movhi - ldrh r3, [sl, #-2] - ldr r1, [r8, #28] - ldr r0, [r4, #192] - mla r7, r7, r5, r3 - mov r3, r7, asl #10 - str r3, [r4, #188] - ldr r3, .L1835+20 - ldrh r2, [r4, r3] + str r3, [fp, #4] + ldrh r3, [r9] + strh r3, [fp, #2] @ movhi + ldrh r3, [r9] + ldr r1, [r8] + ldr r0, [r10, #220] + ldr r2, [sp, #8] + ldrh ip, [r2] + mla ip, ip, r5, r3 + mov r3, ip, asl #10 + str r3, [r10, #216] + ldr r3, .L2814+28 + str ip, [sp, #12] + ldrh r2, [r3] mov r2, r2, asl #2 - bl memcpy + bl ftl_memcpy mov r1, #1 mov r2, r1 - ldr r0, .L1835+12 + ldr r0, .L2814+20 bl FlashEraseBlocks mov r1, #1 mov r3, r1 - ldr r0, .L1835+12 + ldr r0, .L2814+20 mov r2, r1 bl FlashProgPages - ldr r3, [r4, #184] + ldr r3, [r10, #212] cmn r3, #1 - bne .L1821 - uxth r0, r7 + ldr ip, [sp, #12] + bne .L2794 + uxth r0, ip bl FtlBbmMapBadBlock - b .L1834 -.L1821: - uxth r0, r7 + b .L2795 +.L2794: + uxth r0, ip add r5, r5, #1 bl FtlBbmMapBadBlock add r8, r8, #4 -.L1819: - movw r3, #3870 - ldrh r3, [r6, r3] - cmp r5, r3 - bcc .L1825 - mov r4, #0 - ldr r7, .L1835 - movw r6, #3930 - b .L1826 -.L1827: - mov r0, r4 - add r4, r4, #1 + b .L2792 +.L2811: + ldr r7, .L2814+32 + mov r5, #0 +.L2799: + ldrh r3, [r7] + uxth r0, r5 + add r5, r5, #1 + cmp r3, r0 + bls .L2813 bl FtlBbmMapBadBlock - uxth r4, r4 -.L1826: - ldrh r3, [r7, r6] - ldr r5, .L1835 - cmp r3, r4 - bhi .L1827 - movw r7, #3992 - movw r6, #3980 - ldrh r4, [r5, r7] - sub r4, r4, #1 - uxth r4, r4 - b .L1828 -.L1833: - mov r0, r4 + b .L2799 +.L2813: + ldrh r5, [r4, #12] + movw r8, #65535 + ldr r7, .L2814+36 + sub r5, r5, #1 + uxth r5, r5 +.L2801: + ldrh r3, [r4, #12] + sub r3, r3, #48 + cmp r5, r3 + ble .L2805 + mov r0, r5 bl FtlBbmIsBadBlock cmp r0, #1 - beq .L1829 - mov r0, r4 + beq .L2802 + mov r0, r5 bl FlashTestBlk cmp r0, #0 - beq .L1830 - mov r0, r4 + beq .L2803 + mov r0, r5 bl FtlBbmMapBadBlock - b .L1829 -.L1830: - ldrh r2, [r5, r6] - movw r3, #65535 - cmp r2, r3 - streqh r4, [r5, r6] @ movhi -.L1831: - ldrne r2, .L1835 - movne r3, #3984 - strneh r4, [r2, r3] @ movhi - bne .L1832 -.L1829: - sub r4, r4, #1 - uxth r4, r4 -.L1828: - ldrh r3, [r5, r7] - sub r3, r3, #48 - cmp r4, r3 - bgt .L1833 -.L1832: - ldr r4, .L1835 - movw r6, #3980 - mov r5, #3984 - mov r7, #0 - movw r8, #3982 + b .L2802 +.L2803: + ldrh r3, [r7] + cmp r3, r8 + streqh r5, [r7] @ movhi +.L2804: + ldrne r3, .L2814+36 + strneh r5, [r3, #4] @ movhi + bne .L2805 +.L2802: + sub r5, r5, #1 + uxth r5, r5 + b .L2801 +.L2805: + ldr r0, [r6, #4056] + mov r5, #0 + ldrh r3, [r4] mov r2, #2 - ldr r0, [r4, #4044] + str r5, [r6, #1944] mov r1, #1 - ldrh r3, [r4, r6] - str r7, [r4, #3988] - strh r7, [r4, r8] @ movhi + strh r5, [r4, #2] @ movhi mov r3, r3, asl #10 str r3, [r0, #4] - ldrh r3, [r4, r5] + ldrh r3, [r4, #4] mov r3, r3, asl #10 str r3, [r0, #40] bl FlashEraseBlocks - ldrh r0, [r4, r6] + ldrh r0, [r4] bl FtlBbmMapBadBlock - ldrh r0, [r4, r5] + ldrh r0, [r4, #4] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldr r3, [r4, #3988] - ldrh r2, [r4, r5] + ldr r3, [r6, #1944] + ldrh r2, [r4, #4] add r3, r3, #1 - str r3, [r4, #3988] - ldrh r3, [r4, r6] - strh r7, [r4, r8] @ movhi - strh r2, [r4, r6] @ movhi - strh r3, [r4, r5] @ movhi + str r3, [r6, #1944] + ldrh r3, [r4] + strh r5, [r4, #2] @ movhi + strh r2, [r4] @ movhi + strh r3, [r4, #4] @ movhi bl FtlBbmTblFlush -.L1818: +.L2791: mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1836: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2815: .align 2 -.L1835: +.L2814: .word .LANCHOR0 - .word .LANCHOR0+3980 + .word .LANCHOR0+1964 .word .LANCHOR2 - .word .LANCHOR2+184 + .word .LANCHOR0+1826 + .word .LANCHOR0+1870 + .word .LANCHOR2+212 .word -3872 - .word -1024 + .word .LANCHOR2-1976 + .word .LANCHOR0+1886 + .word .LANCHOR0+1936 .fnend .size FtlMakeBbt, .-FtlMakeBbt .align 2 - .type ftl_load_l2p_region, %function -ftl_load_l2p_region: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r5, r0 - ldr r4, .L1842 - mov r6, #12 - ldr r3, [r4, #-1028] - ldr r7, [r3, r0, asl #2] - cmp r7, #0 - bne .L1838 - mul r6, r6, r1 - ldr r3, [r4, #-1852] - ldr r2, .L1842+4 - mov r1, #255 - add r3, r3, r6 - ldr r0, [r3, #8] - movw r3, #3926 - ldrh r2, [r2, r3] - bl ftl_memset - ldr r3, [r4, #-1852] - strh r5, [r3, r6] @ movhi - ldr r3, [r4, #-1852] - add r6, r3, r6 - str r7, [r6, #4] - b .L1839 -.L1838: - mul r6, r6, r1 - ldr r3, [r4, #-1852] - mov r1, #1 - add r0, r4, #184 - mov r2, r1 - str r7, [r4, #188] - add r3, r3, r6 - ldr r3, [r3, #8] - str r3, [r4, #192] - ldr r3, [r4, #-932] - str r3, [r4, #196] - bl FlashReadPages - ldr r3, [r4, #196] - ldrh r3, [r3, #8] - cmp r3, r5 - beq .L1840 - mov r2, r7 - mov r1, r5 - ldr r0, .L1842+8 - bl printk - ldr r7, .L1842+4 - mov r2, #4 - ldr r0, .L1842+12 - mov r3, r2 - ldr r1, [r4, #196] - bl rknand_print_hex - mov r3, #3952 - ldrh r3, [r7, r3] - mov r2, #4 - ldr r0, .L1842+16 - ldr r1, [r4, #-1028] - bl rknand_print_hex - mov r3, #1 - str r3, [r7, #4040] - b .L1841 -.L1840: - ldr r3, [r4, #184] - cmp r3, #256 - bne .L1841 - mov r1, r5 - mov r2, r7 - ldr r0, .L1842+20 - bl printk - ldr r3, [r4, #-1852] - ldr r0, .L1842+24 - mov r1, r5 - add r3, r3, r6 - ldr r2, [r3, #8] - bl FtlMapWritePage -.L1841: - ldr r3, .L1842 - mov r1, #0 - ldr r3, [r3, #-1852] - add r2, r3, r6 - str r1, [r2, #4] - strh r5, [r3, r6] @ movhi -.L1839: - mov r0, #0 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1843: - .align 2 -.L1842: - .word .LANCHOR2 - .word .LANCHOR0 - .word .LC137 - .word .LC99 - .word .LC138 - .word .LC139 - .word .LANCHOR2-1084 - .fnend - .size ftl_load_l2p_region, .-ftl_load_l2p_region - .align 2 .global log2phys .type log2phys, %function log2phys: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} - mov r8, r2 - ldr r3, .L1853 - movw r2, #3924 - mov r4, r1 - ldrh r7, [r3, r2] - mvn r2, #0 - add r7, r7, #7 - mov r6, r0, lsr r7 - bic r7, r0, r2, asl r7 - movw r2, #3954 - ldrh r2, [r3, r2] - uxth r6, r6 - ldr r3, .L1853+4 - uxth r7, r7 - ldr sl, [r3, #-1852] - mov r3, #0 - mov r5, r3 - b .L1845 -.L1851: - add r3, r3, #12 - add r1, sl, r3 - ldrh r1, [r1, #-12] - cmp r1, r6 - bne .L1846 -.L1847: - cmp r8, #0 - ldr r3, .L1853+4 - mov r2, #12 - bne .L1848 - ldr r3, [r3, #-1852] - mla r2, r2, r5, r3 - ldr r3, [r2, #8] - ldr r3, [r3, r7, asl #2] - str r3, [r4, #0] - b .L1849 -.L1848: - mul r2, r2, r5 - ldr r1, [r3, #-1852] - ldr r0, [r4, #0] - add r1, r1, r2 - ldr r1, [r1, #8] - str r0, [r1, r7, asl #2] - ldr r1, [r3, #-1852] - add r2, r1, r2 - ldr r1, [r2, #4] - orr r1, r1, #-2147483648 - str r1, [r2, #4] - ldr r2, .L1853+8 - strh r6, [r3, r2] @ movhi -.L1849: - ldr r3, .L1853+4 - mov r2, #12 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + movw r3, #1880 + ldr r7, .L2833 + ldrh r10, [r7, r3] + ldr r3, [r7, #1932] + cmp r0, r3 + bcs .L2817 + add r10, r10, #7 + ldr fp, .L2833+4 + mov r5, r0, lsr r10 + movw r3, #1910 + str r2, [sp, #4] + mov r9, r1 + mov r6, r7 + str r0, [sp] + uxth r5, r5 + ldrh r2, [r7, r3] + ldr r8, [fp, #-3896] + mov r4, #0 + mov r1, #12 + b .L2818 +.L2817: + cmp r2, #0 + mvn r0, #0 + streq r0, [r1] + b .L2819 +.L2823: + add r4, r4, #1 + mla r0, r1, r4, r8 + ldrh r0, [r0, #-12] + cmp r0, r5 + beq .L2820 +.L2818: + uxth r7, r4 + cmp r7, r2 + bcc .L2823 + bl select_l2p_ram_region + mov r4, #12 + movw r3, #65535 + mul r4, r4, r0 + mov r7, r0 + add r2, r8, r4 + ldrh r1, [r8, r4] + cmp r1, r3 + bne .L2832 +.L2824: + ldr r3, [fp, #-1992] + ldr r8, .L2833+4 + ldr fp, [r3, r5, asl #2] + cmp fp, #0 + bne .L2825 + ldr r3, [r8, #-3896] + mov r1, #255 + add r3, r3, r4 + ldr r0, [r3, #8] + movw r3, #1882 + ldrh r2, [r6, r3] + bl ftl_memset + ldr r3, [r8, #-3896] + strh r5, [r3, r4] @ movhi + ldr r3, [r8, #-3896] + add r4, r3, r4 + str fp, [r4, #4] +.L2820: + ldr r2, [sp] + mvn r3, #0 + mov r6, #12 + bic r10, r2, r3, asl r10 + ldr r3, [sp, #4] + ldr r2, .L2833+4 + cmp r3, #0 + uxth r10, r10 + bne .L2821 + ldr r3, [r2, #-3896] + mla r6, r6, r7, r3 + ldr r3, [r6, #8] + ldr r3, [r3, r10, asl #2] + str r3, [r9] + b .L2822 +.L2821: + mul r6, r6, r7 + ldr r3, [r2, #-3896] + ldr r1, [r9] + add r3, r3, r6 + ldr r3, [r3, #8] + str r1, [r3, r10, asl #2] + ldr r3, [r2, #-3896] + add r6, r3, r6 + ldr r3, [r6, #4] + orr r3, r3, #-2147483648 + str r3, [r6, #4] + sub r3, r2, #3888 + strh r5, [r3, #-4] @ movhi +.L2822: + ldr r2, [r2, #-3896] + mov r3, #12 mov r0, #0 - ldr r3, [r3, #-1852] - mla r5, r2, r5, r3 - ldr r3, [r5, #4] + mla r7, r3, r7, r2 + ldr r3, [r7, #4] cmn r3, #1 addne r3, r3, #1 - strne r3, [r5, #4] - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L1846: - add r5, r5, #1 - uxth r5, r5 -.L1845: - cmp r5, r2 - bne .L1851 - bl select_l2p_ram_region - mov r3, #12 - mul r3, r3, r0 - mov r5, r0 - add r2, sl, r3 - ldrh r1, [sl, r3] - movw r3, #65535 - cmp r1, r3 - beq .L1852 + strne r3, [r7, #4] + b .L2819 +.L2832: ldr r3, [r2, #4] cmp r3, #0 - bge .L1852 + bge .L2824 bl flush_l2p_region -.L1852: - mov r0, r6 + b .L2824 +.L2825: + ldr r3, [r8, #-3896] + mov r1, #1 + add r0, r8, #212 + mov r2, r1 + add r3, r3, r4 + str fp, [r8, #216] + ldr r3, [r3, #8] + str r3, [r8, #220] + ldr r3, [r8, #-2040] + str r3, [r8, #224] + bl FlashReadPages + ldr r3, [r8, #224] + ldrh r3, [r3, #8] + cmp r3, r5 + beq .L2826 mov r1, r5 - bl ftl_load_l2p_region - b .L1847 -.L1854: + mov r2, fp + ldr r0, .L2833+8 + bl printk + mov r2, #4 + mov r3, r2 + ldr r0, .L2833+12 + ldr r1, [r8, #224] + bl rknand_print_hex + movw r3, #1908 + ldrh r3, [r6, r3] + mov r2, #4 + ldr r0, .L2833+16 + ldr r1, [r8, #-1992] + bl rknand_print_hex + mov r3, #1 + str r3, [r6, #4052] + b .L2827 +.L2826: + ldr r3, [r8, #212] + cmp r3, #256 + bne .L2827 + mov r1, r5 + mov r2, fp + ldr r0, .L2833+20 + bl printk + ldr r3, [r8, #-3896] + ldr r0, .L2833+24 + mov r1, r5 + add r3, r3, r4 + ldr r2, [r3, #8] + bl FtlMapWritePage +.L2827: + ldr r3, .L2833+4 + mov r1, #0 + ldr r3, [r3, #-3896] + add r2, r3, r4 + str r1, [r2, #4] + strh r5, [r3, r4] @ movhi + b .L2820 +.L2819: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2834: .align 2 -.L1853: +.L2833: .word .LANCHOR0 .word .LANCHOR2 - .word -1848 + .word .LC136 + .word .LC100 + .word .LC137 + .word .LC138 + .word .LANCHOR2-1972 .fnend .size log2phys, .-log2phys .align 2 - .type FtlReadRefresh.part.15, %function -FtlReadRefresh.part.15: - .fnstart - @ args = 0, pretend = 0, frame = 40 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - .pad #40 - sub sp, sp, #40 - ldr r4, .L1863 - ldr r6, .L1863+4 - ldr r2, [r4, #-1624] - ldr r3, [r6, #3976] - cmp r2, r3 - bcs .L1856 - mov r5, #2048 -.L1859: - ldr r0, [r4, #-1624] - ldr r3, [r6, #3976] - cmp r0, r3 - bcs .L1861 - mov r1, sp - mov r2, #0 - bl log2phys - ldr r0, [sp, #0] - ldr r3, [r4, #-1624] - cmn r0, #1 - add r3, r3, #1 - str r3, [r4, #-1624] - beq .L1858 - str r0, [sp, #8] - add r0, sp, #40 - mov r2, #0 - mov r1, #1 - str r2, [r0, #-36]! - str r3, [sp, #20] - str r2, [sp, #12] - str r2, [sp, #16] - bl FlashReadPages - ldr r3, [sp, #4] - cmp r3, #256 - bne .L1861 - ldr r0, [sp, #0] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock - b .L1861 -.L1858: - subs r5, r5, #1 - bne .L1859 - b .L1857 -.L1856: - ldr r3, [r4, #-1836] - mov r0, #0 - str r0, [r4, #-1628] - str r0, [r4, #-1624] - str r3, [r4, #-1632] - b .L1857 -.L1861: - mvn r0, #0 -.L1857: - add sp, sp, #40 - ldmfd sp!, {r4, r5, r6, pc} -.L1864: - .align 2 -.L1863: - .word .LANCHOR2 - .word .LANCHOR0 - .fnend - .size FtlReadRefresh.part.15, .-FtlReadRefresh.part.15 - .align 2 - .global FtlReadRefresh - .type FtlReadRefresh, %function -FtlReadRefresh: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L1872 - ldr r2, [r3, #-1628] - cmp r2, #0 - beq .L1866 - b FtlReadRefresh.part.15 -.L1866: - ldr r2, .L1872+4 - ldr r0, [r3, #-1784] - ldr r1, [r2, #3840] - ldrb r2, [r2, #928] @ zero_extendqisi2 - cmp r2, #0 - ldr r2, [r3, #-1836] - addeq r0, r1, r0, lsr #10 - moveq r1, #33554432 - movne r0, #4194304 - moveq r0, r1, asr r0 - ldr r1, [r3, #-1632] - add r3, r2, #1048576 - cmp r1, r3 - bhi .L1868 - add r1, r0, r1 - cmp r1, r2 - bcc .L1868 - ldr r3, .L1872 - ldrb r3, [r3, #-2044] @ zero_extendqisi2 - cmp r3, #0 - bne .L1869 -.L1868: - ldr r3, .L1872 - mov r1, #1 - str r2, [r3, #-1632] - str r1, [r3, #-1628] - mov r1, #0 - str r1, [r3, #-1624] -.L1869: - mov r0, #0 - bx lr -.L1873: - .align 2 -.L1872: - .word .LANCHOR2 - .word .LANCHOR0 - .fnend - .size FtlReadRefresh, .-FtlReadRefresh - .align 2 - .global FtlReUsePrevPpa - .type FtlReUsePrevPpa, %function -FtlReUsePrevPpa: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, lr} - .save {r0, r1, r2, r4, r5, r6, r7, lr} - mov r7, r0 - ubfx r0, r1, #10, #16 - str r1, [sp, #4] - bl P2V_block_in_plane - ldr r3, .L1880 - ldr r1, [r3, #-2016] - mov r5, r0, asl #1 - ldrh r2, [r1, r5] - cmp r2, #0 - addne r2, r2, #1 - strneh r2, [r1, r5] @ movhi - bne .L1876 - ldr r4, [r3, #-2004] - cmp r4, #0 - beq .L1876 - ldr r1, .L1880+4 - mov ip, #6 - ldrh lr, [r3, r1] - ldr r3, [r3, #-2024] - ldr r1, .L1880+8 - rsb r4, r3, r4 - mov r4, r4, asr #1 - mul r4, r1, r4 - movw r1, #65535 - uxth r4, r4 - b .L1877 -.L1879: - cmp r4, r0 - bne .L1878 - mov r1, r4 - ldr r0, .L1880+12 - bl List_remove_node - ldr r6, .L1880 - ldr r3, .L1880+4 - mov r0, r4 - ldrh r2, [r6, r3] - sub r2, r2, #1 - strh r2, [r6, r3] @ movhi - bl INSERT_DATA_LIST - ldr r3, [r6, #-2016] - ldrh r2, [r3, r5] - add r2, r2, #1 - strh r2, [r3, r5] @ movhi - b .L1876 -.L1878: - mul r4, ip, r4 - ldrh r4, [r3, r4] - cmp r4, r1 - beq .L1876 - add r2, r2, #1 - uxth r2, r2 -.L1877: - cmp r2, lr - bne .L1879 -.L1876: - mov r0, r7 - add r1, sp, #4 - mov r2, #1 - bl log2phys - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, pc} -.L1881: - .align 2 -.L1880: - .word .LANCHOR2 - .word -2000 - .word -1431655765 - .word .LANCHOR2-2004 - .fnend - .size FtlReUsePrevPpa, .-FtlReUsePrevPpa - .align 2 - .global Ftlscanalldata - .type Ftlscanalldata, %function -Ftlscanalldata: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r1, #0 - ldr r4, .L1888 - .pad #32 - sub sp, sp, #32 - ldr r0, .L1888+4 - mov r5, #0 - bl printk - ldr r7, .L1888+8 - mov r6, r4 - b .L1883 -.L1887: - mov r0, r5 - add r1, sp, #28 - mov r2, #0 - bl log2phys - movs r3, r5, asl #21 - bne .L1884 - ldr r0, .L1888+12 - mov r1, r5 - ldr r2, [sp, #28] - bl printk -.L1884: - ldr r3, [sp, #28] - cmn r3, #1 - beq .L1885 - str r3, [r4, #188] - mov r2, #0 - ldr r3, [r4, #-956] - mov r1, #1 - ldr r8, [r4, #-932] - ldr r0, .L1888+16 - str r3, [r4, #192] - str r5, [r4, #200] - str r8, [r4, #196] - str r2, [r4, #184] - bl FlashReadPages - ldr r3, [r4, #184] - cmn r3, #1 - cmpne r3, #256 - beq .L1886 - ldr r3, [r8, #8] - cmp r3, r5 - beq .L1885 -.L1886: - ldr r3, [r6, #196] - ldr r2, [r6, #192] - ldr r0, .L1888+20 - ldr r1, [r3, #4] - str r1, [sp, #0] - ldr r1, [r3, #8] - str r1, [sp, #4] - ldr r1, [r3, #12] - str r1, [sp, #8] - ldr r1, [r2, #0] - str r1, [sp, #12] - mov r1, r5 - ldr r2, [r2, #4] - str r2, [sp, #16] - ldr r2, [r6, #188] - ldr r3, [r3, #0] - bl printk -.L1885: - add r5, r5, #1 -.L1883: - ldr r3, [r7, #3976] - cmp r5, r3 - bcc .L1887 - add sp, sp, #32 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L1889: - .align 2 -.L1888: - .word .LANCHOR2 - .word .LC140 - .word .LANCHOR0 - .word .LC141 - .word .LANCHOR2+184 - .word .LC142 - .fnend - .size Ftlscanalldata, .-Ftlscanalldata - .align 2 - .global FtlRecoverySuperblock - .type FtlRecoverySuperblock, %function -FtlRecoverySuperblock: - .fnstart - @ args = 0, pretend = 0, frame = 64 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - movw r2, #65535 - ldrh r3, [r0, #0] - .pad #68 - sub sp, sp, #68 - mov r4, r0 - cmp r3, r2 - beq .L1891 - ldrh r3, [r0, #2] - ldr r1, .L1979 - ldrb r6, [r0, #6] @ zero_extendqisi2 - str r3, [sp, #20] - movw r3, #3916 - ldrh r3, [r1, r3] - ldr fp, [sp, #20] - str r6, [sp, #36] - cmp r3, fp - mov r3, #0 - streqh r3, [r0, #4] @ movhi - moveq r2, r3 @ movhi - ldrneh r0, [r0, #16] - bne .L1893 - b .L1976 -.L1894: - add r3, r3, #1 - uxth r3, r3 - add r1, r4, r3, asl #1 - ldrh r0, [r1, #16] -.L1893: - cmp r0, r2 - beq .L1894 - ldrb r1, [r4, #8] @ zero_extendqisi2 - cmp r1, #1 - bne .L1895 - bl FtlGetLastWrittenPage - cmn r0, #1 - mov r7, r0 - beq .L1896 - ldr r3, .L1979 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - bne .L1969 - add r3, r3, r0, asl #1 - movw r2, #3076 - ldrh r8, [r3, r2] - b .L1961 -.L1895: - mov r1, #0 - bl FtlGetLastWrittenPage - cmn r0, #1 - mov r7, r0 - beq .L1896 -.L1969: - mov r8, r7 -.L1961: - ldr r3, .L1979 - movw r2, #3848 - mov r5, #0 - str r4, [sp, #44] - movw ip, #65535 - ldrh r9, [r3, r2] - ldr r2, .L1979+4 - ldr sl, [r2, #-968] - ldr r6, [r2, #-1168] - movw r2, #3928 - ldrh lr, [r3, r2] - mov r2, r4 - mov r3, r5 - b .L1898 -.L1896: - mov r3, #0 - strh r3, [r4, #2] @ movhi - mov r2, r3 @ movhi -.L1976: - strb r2, [r4, #6] - b .L1891 -.L1900: - ldrh r0, [r2, #16] - cmp r0, ip - beq .L1899 - mov fp, #36 - orr r0, r8, r0, asl #10 - mla r1, fp, r5, sl - str r0, [r1, #4] - mov r0, #0 - str r0, [r1, #8] - mul r0, lr, r5 - add r5, r5, #1 - uxth r5, r5 - add fp, r0, #3 - cmp r0, #0 - movlt r0, fp - bic r0, r0, #3 - add r0, r6, r0 - str r0, [r1, #12] -.L1899: - add r3, r3, #1 - add r2, r2, #2 - uxth r3, r3 -.L1898: - cmp r3, r9 - bne .L1900 - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #1 - movne r3, #0 - bne .L1970 - ldr r3, .L1979 - ldrb r3, [r3, #928] @ zero_extendqisi2 - adds r3, r3, #0 - movne r3, #1 -.L1970: - ldr r6, .L1979+4 - mov r1, r5 - str r3, [sp, #32] - mov sl, #0 - ldr r2, [sp, #32] - ldr r0, [r6, #-968] - bl FlashReadPages - ldr fp, [r6, #-1800] - movw r2, #65535 - str r2, [sp, #12] - str fp, [sp, #16] - b .L1902 -.L1907: - mov r3, #36 - ldr r1, [r6, #-968] - mul r2, r3, sl - add r3, r1, r2 - ldr r2, [r1, r2] - cmp r2, #0 - bne .L1903 - ldr r3, [r3, #12] - ldr fp, [r3, #4] - cmn fp, #1 - beq .L1904 - ldr r1, [r6, #-1800] - mov r0, fp - str r3, [sp, #4] - bl ftl_cmp_data_ver - ldr r3, [sp, #4] - cmp r0, #0 - addne fp, fp, #1 - strne fp, [r6, #-1800] -.L1904: - ldr r3, [r3, #0] - cmn r3, #1 - bne .L1906 - b .L1905 -.L1903: - ldr r1, [r3, #4] - uxth fp, r8 - ldr r0, .L1979+8 - bl printk - ldrh r3, [r4, #0] - movw lr, #298 - str fp, [sp, #12] - strh r3, [r6, lr] @ movhi -.L1906: - add sl, sl, #1 -.L1902: - uxth r9, sl - cmp r9, r5 - bcc .L1907 -.L1905: - ldr r3, .L1979+4 - cmp r9, r5 - addeq r7, r7, #1 - uxthne r7, r7 - movne r2, #36 - ldrne r3, [r3, #-968] - uxtheq r7, r7 - ldreq r3, [r3, #-968] - mlane r9, r2, r9, r3 - ldreq r0, [r3, #4] - ldrne r0, [r9, #4] - ubfx r0, r0, #10, #16 - bl P2V_plane - ldrb r2, [r4, #8] @ zero_extendqisi2 - ldr r3, .L1979 - cmp r2, #1 - str r0, [sp, #24] - bne .L1910 - ldrb r1, [r3, #928] @ zero_extendqisi2 - cmp r1, #0 - addeq r7, r3, r7, asl #1 - movweq r1, #3076 - ldreqh r7, [r7, r1] -.L1910: - movw r1, #3916 - ldr r6, [sp, #24] - ldrh r3, [r3, r1] - ldr fp, [sp, #36] - cmp r3, r7 - streqh r7, [r4, #2] @ movhi - moveq r3, #0 - streqb r3, [r4, #6] - streqh r3, [r4, #4] @ movhi - ldr r3, [sp, #20] - cmp r7, r3 - cmpeq r6, fp - moveq r0, r4 - moveq r1, r7 - moveq r2, r6 - beq .L1977 - ldr r3, [sp, #16] - ldr fp, [sp, #12] - sub r6, r3, #1 - movw r3, #65535 - cmp fp, r3 - bne .L1913 - cmp r2, #0 - bne .L1914 -.L1913: - ldr r2, .L1979+4 - uxth r3, r8 - ldr fp, [sp, #20] - movw ip, #65535 - mov sl, r3 - ldr r8, .L1979+4 - ldr r1, [r2, #-1004] - cmn r1, #1 - streq r6, [r2, #-1004] - ldr r2, [r2, #-1004] - str r2, [sp, #12] - add r2, fp, #7 - cmp r3, r2 - mvn fp, #0 - subgt r5, r3, #7 - mov r9, fp - mov r3, r7 - ldrle r5, [sp, #20] - mov r7, r6 - uxthgt r5, r5 - mov r6, r4 - b .L1917 -.L1919: - ldrh r0, [r1, #16] - cmp r0, ip - beq .L1918 - ldr r6, [sp, #28] - mov r3, #36 - orr r0, r5, r0, asl #10 - mla lr, r3, r4, r6 - add r4, r4, #1 - uxth r4, r4 - str r0, [lr, #4] -.L1918: - add r2, r2, #1 - add r1, r1, #2 - uxth r2, r2 -.L1930: - ldr lr, [sp, #16] - cmp r2, lr - bne .L1919 - ldr r3, [sp, #40] - mov r1, r4 - ldr r0, [r8, #-968] - ldr r2, [sp, #32] - stmib sp, {r3, ip} - ldr r6, [sp, #0] - bl FlashReadPages - ldr r2, .L1979 - add r0, r8, r5, asl #1 - mov r1, #0 - str r0, [sp, #28] - ldmib sp, {r3, ip} - ldrb r2, [r2, #928] @ zero_extendqisi2 - str r2, [sp, #16] - ldr r2, [r8, #-968] - b .L1920 -.L1928: - ldr r0, [r2, #0] - cmp r0, #0 - bne .L1921 - ldr r0, [r2, #12] - ldrh lr, [r0, #0] - cmp lr, ip - beq .L1922 - ldr r0, [r0, #4] - cmn r0, #1 - beq .L1922 - cmn fp, #1 - ldr r9, [r8, #-1004] - str r0, [r8, #-1004] - bne .L1922 - ldr lr, [sp, #28] - sub r0, lr, #888 - ldrh r0, [r0, #0] - cmp r0, ip - bne .L1923 - ldr r0, [sp, #16] - cmp r0, #0 - beq .L1922 -.L1923: - cmp r9, r7 - mvneq fp, #0 - movne fp, r9 - b .L1922 -.L1921: - mov r4, r6 - mov r6, r7 - ldrh r1, [r4, #0] - mov r7, r3 - ldr r3, .L1979+4 - movw r2, #298 - strh r1, [r3, r2] @ movhi - ldrb r2, [r4, #8] @ zero_extendqisi2 - cmp r2, #0 - bne .L1914 - add r5, r3, r5, asl #1 - movw r2, #65535 - sub r5, r5, #888 - ldrh r1, [r5, #0] - cmp r1, r2 - bne .L1924 - cmn fp, #1 - bne .L1972 -.L1925: - ldr fp, [sp, #12] - cmp fp, r6 - beq .L1926 -.L1972: - str fp, [r3, #-1004] - b .L1914 -.L1926: - ldr r2, [r3, #-1004] - b .L1978 -.L1924: - cmp r9, r6 - beq .L1927 - cmn r9, #1 - strne r9, [r3, #-1004] - b .L1914 -.L1927: - ldr r2, [r3, #-1004] - cmp r2, r6 - beq .L1914 -.L1978: - sub r2, r2, #1 - b .L1973 -.L1922: - add r1, r1, #1 - add r2, r2, #36 - uxth r1, r1 -.L1920: - cmp r1, r4 - bne .L1928 - add r5, r5, #1 - uxth r5, r5 -.L1917: - cmp r5, sl - bhi .L1929 - ldr r1, .L1979 - movw r2, #3848 - ldr lr, [r8, #-968] - mov r4, #0 - str r3, [sp, #40] - ldrh r2, [r1, r2] - mov r1, r6 - str lr, [sp, #28] - str r6, [sp, #0] - str r2, [sp, #16] - mov r2, r4 - b .L1930 -.L1929: - mov r4, r6 - mov r6, r7 - mov r7, r3 - ldr r3, .L1979+4 - mvn r2, #0 -.L1973: - str r2, [r3, #-1004] -.L1914: - ldr r5, .L1979+4 - mov r3, #300 - ldr r8, [sp, #20] - mov r2, #1 - str r7, [sp, #16] - strh r2, [r5, r3] @ movhi -.L1931: - ldr r3, .L1979 - movw r2, #3848 - mov r7, #0 - ldr lr, [r5, #-968] - mov fp, #36 - ldrh sl, [r3, r2] - mov r2, r4 - ldrb ip, [r3, #928] @ zero_extendqisi2 - mov r3, r7 - b .L1932 -.L1935: - ldrh r0, [r2, #16] - movw r1, #65535 - cmp r0, r1 - beq .L1933 - mla r1, fp, r7, lr - orr r0, r8, r0, asl #10 - str r0, [r1, #4] - ldrb r9, [r4, #8] @ zero_extendqisi2 - cmp r9, #1 - bne .L1934 - cmp ip, #0 - orrne r0, r0, #-2147483648 - strne r0, [r1, #4] -.L1934: - add r7, r7, #1 - uxth r7, r7 -.L1933: - add r3, r3, #1 - add r2, r2, #2 - uxth r3, r3 -.L1932: - cmp r3, sl - bne .L1935 - mov r1, r7 - ldr r0, [r5, #-968] - ldr r2, [sp, #32] - bl FlashReadPages - mov r3, #36 - mul r3, r3, r7 - mov r7, #0 - str r3, [sp, #40] - b .L1936 -.L1956: - ldr r9, [r5, #-968] - add r9, r9, r7 - ldr sl, [r9, #4] - ubfx r0, sl, #10, #16 - str sl, [sp, #60] - bl P2V_plane - ldr r3, [sp, #20] - cmp r8, r3 - bcc .L1937 - ldr fp, [sp, #36] - mov r1, r3 - cmp r0, fp - movcs r3, #0 - movcc r3, #1 - cmp r8, r1 - movne r3, #0 - cmp r3, #0 - bne .L1937 - ldr r3, [sp, #24] - ldr fp, [sp, #16] - cmp r0, r3 - cmpeq r8, fp - beq .L1968 - ldr r3, [r9, #0] - cmn r3, #1 - beq .L1939 - ldr sl, [r9, #12] - movw r3, #61589 - ldrh r2, [sl, #0] - cmp r2, r3 - ldrneh r0, [r4, #0] - bne .L1974 - ldr r6, [sl, #4] - cmn r6, #1 - beq .L1941 - ldr r1, [r5, #-1800] - mov r0, r6 - bl ftl_cmp_data_ver - cmp r0, #0 - addne r3, r6, #1 - strne r3, [r5, #-1800] -.L1941: - ldr r9, [sl, #8] - add r1, sp, #56 - ldr r3, [sl, #12] - mov r2, #0 - mov r0, r9 - str r3, [sp, #52] - bl log2phys - ldr r1, [r5, #-1004] - cmn r1, #1 - beq .L1942 - mov r0, r6 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1942 - ldr r3, [sp, #52] - cmn r3, #1 - beq .L1943 - ldr r0, [r5, #-968] - mov r1, #1 - mov r2, #0 - add r0, r0, r7 - ldr fp, [r0, #12] - str r3, [r0, #4] - str fp, [sp, #12] - bl FlashReadPages - ldr r3, [fp, #4] - str r3, [sp, #28] - ldr r3, [r5, #-968] - add fp, r3, r7 - ldr r3, [r3, r7] - cmn r3, #1 - bne .L1944 - b .L1945 -.L1943: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - bne .L1937 - mov r0, r9 - add r1, sp, #52 - mov r2, #1 - bl log2phys - b .L1937 -.L1944: - ldr r3, [sp, #12] - ldr sl, [r3, #8] - cmp sl, r9 - bne .L1945 - ldr r0, [r5, #-1004] - ldr r1, [sp, #28] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1945 - ldr r3, [sp, #56] - ldr r2, [sp, #60] - cmp r3, r2 - beq .L1949 -.L1946: - ldr r2, [sp, #52] - cmp r3, r2 - beq .L1945 - cmn r3, #1 - streq r3, [fp, #0] - beq .L1948 - ldr lr, [fp, #12] - mov r0, fp - str r3, [fp, #4] - mov r1, #1 - mov r2, #0 - str lr, [sp, #12] - bl FlashReadPages -.L1948: - ldr r3, [r5, #-968] - ldr r3, [r3, r7] - cmn r3, #1 - beq .L1949 - ldr r3, [sp, #12] - ldr r0, [r5, #-1004] - ldr r9, [r3, #4] - mov r1, r9 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1949 - ldr r0, [sp, #28] - mov r1, r9 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1945 -.L1949: - mov r0, sl - ldr r1, [sp, #52] - bl FtlReUsePrevPpa -.L1945: - mvn r3, #0 - str r3, [sp, #52] - b .L1951 -.L1942: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - beq .L1951 - mov r0, r9 - add r1, sp, #60 - mov r2, #1 - bl log2phys - ldr fp, [sp, #56] - cmn fp, #1 - beq .L1951 - ldr r3, [sp, #52] - cmp fp, r3 - beq .L1951 - ubfx r0, fp, #10, #16 - bl P2V_block_in_plane - ldr r3, .L1979+12 - ldrh r3, [r5, r3] - cmp r3, r0 - beq .L1952 - ldr r3, .L1979+16 - ldrh r3, [r5, r3] - cmp r3, r0 - beq .L1952 - ldr r3, .L1979+20 - ldrh r3, [r5, r3] - cmp r3, r0 - bne .L1951 -.L1952: - ldr lr, .L1979+4 - mov r1, #1 - mov r2, #0 - ldr r0, [lr, #-968] - str fp, [r0, #4] - ldr sl, [r0, #12] - bl FlashReadPages - ldr r0, .L1979+4 - ldr r1, [sl, #4] - ldr r3, [r0, #-968] - ldr r3, [r3, #0] - cmn r3, #1 - beq .L1951 - mov r0, r6 - bl ftl_cmp_data_ver - cmp r0, #0 - bne .L1951 - mov r0, r9 - add r1, sp, #56 - mov r2, #1 - bl log2phys -.L1951: - ldr r0, [sp, #52] - cmn r0, #1 - beq .L1937 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r5, #-2016] - mov r3, r0, asl #1 - mov r1, r0 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L1953 -.L1974: - bl decrement_vpc_count - b .L1937 -.L1953: - ldr r0, .L1979+24 - bl printk - b .L1937 -.L1939: - ldrh r3, [r4, #0] - movw r1, #298 - mov r2, r6 - ldr r0, .L1979+28 - strh r3, [r5, r1] @ movhi - mov r1, sl - bl printk - ldr r3, [r5, #304] - cmp r3, #31 - addls r2, r5, r3, asl #2 - addls r3, r3, #1 - ldrls r1, [sp, #60] - strls r3, [r5, #304] - strls r1, [r2, #308] - ldrh r0, [r4, #0] - bl decrement_vpc_count - ldr r3, [r5, #-1004] - cmn r3, #1 - beq .L1975 -.L1955: - cmp r3, r6 - bls .L1937 -.L1975: - str r6, [r5, #-1004] -.L1937: - add r7, r7, #36 -.L1936: - ldr r3, [sp, #40] - cmp r7, r3 - bne .L1956 - ldrb r3, [r4, #8] @ zero_extendqisi2 - add r8, r8, #1 - cmp r3, #1 - uxth r8, r8 - bne .L1957 - ldr r3, .L1979 - ldrb r2, [r3, #928] @ zero_extendqisi2 - cmp r2, #0 - beq .L1957 - movw r2, #3918 - ldr fp, [sp, #16] - ldrh r3, [r3, r2] - cmp fp, r8 - cmpeq r3, r8 - beq .L1968 -.L1957: - ldr r3, .L1979 - movw r2, #3916 - ldrh r2, [r3, r2] - cmp r8, r2 - bne .L1931 - mov r2, #0 - movw r1, #3848 - strh r2, [r4, #4] @ movhi - ldrh r1, [r3, r1] - mov r3, r2 - strh r8, [r4, #2] @ movhi - movw r2, #65535 - ldr r0, [sp, #44] - b .L1958 -.L1960: - add r0, r0, #2 - ldrh ip, [r0, #14] - cmp ip, r2 - strneb r3, [r4, #6] - bne .L1891 -.L1959: - add r3, r3, #1 - uxth r3, r3 -.L1958: - cmp r3, r1 - bne .L1960 - b .L1891 -.L1968: -.L1938: - ldr r7, [sp, #16] - mov r0, r4 - ldr r3, [sp, #24] - mov r1, r7 - strh r7, [r4, #2] @ movhi - mov r2, r3 - strb r3, [r4, #6] -.L1977: - bl ftl_sb_update_avl_pages -.L1891: - mov r0, #0 - add sp, sp, #68 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L1980: - .align 2 -.L1979: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC143 - .word -1996 - .word -1948 - .word -1900 - .word .LC144 - .word .LC145 - .fnend - .size FtlRecoverySuperblock, .-FtlRecoverySuperblock - .align 2 .global FtlWriteDumpData .type FtlWriteDumpData, %function FtlWriteDumpData: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} - .pad #44 - sub sp, sp, #44 - ldr r5, .L1990 - ldr r3, [r5, #4040] + ldr r3, .L2855 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #60 + sub sp, sp, #60 + ldr r2, [r3] + ldr r8, .L2855+4 + str r3, [sp] + str r2, [sp, #52] + ldr r2, [r8, #4052] + cmp r2, #0 + bne .L2835 + ldr r7, .L2855+8 + ldr r4, .L2855+12 + ldrh r5, [r7, #4] + cmp r5, #0 + beq .L2837 + ldrb r3, [r4, #-4032] @ zero_extendqisi2 cmp r3, #0 - bne .L1981 - ldr r4, .L1990+4 - ldr r3, .L1990+8 - mov r2, r4 - ldrh r3, [r4, r3] - cmp r3, #0 - beq .L1983 - ldrb r1, [r4, #-1988] @ zero_extendqisi2 - cmp r1, #0 - bne .L1983 - movw r0, #3916 - ldrb r1, [r4, #-1989] @ zero_extendqisi2 - ldrh r0, [r5, r0] - mul r1, r0, r1 - cmp r3, r1 - beq .L1983 - ldrb r8, [r4, #-1986] @ zero_extendqisi2 - movw r3, #3848 - ldr r7, [r5, #3976] - cmp r8, #0 - ldrh r6, [r5, r3] - bne .L1981 - sub r7, r7, #1 - mov r1, sp - mov r2, r8 - mov r0, r7 - bl log2phys - ldr r3, [sp, #0] - ldr r0, [r4, #-956] - ldr r4, [r4, #-932] - cmn r3, #1 - str r3, [sp, #8] - str r7, [sp, #20] - str r0, [sp, #12] - str r4, [sp, #16] - str r8, [r4, #4] - beq .L1984 - add r0, sp, #4 - mov r1, #1 - mov r2, r8 - bl FlashReadPages - b .L1985 -.L1984: - movw r3, #3926 - mov r1, #255 - ldrh r2, [r5, r3] - bl ftl_memset -.L1985: - ldr r3, .L1990+12 - mov r6, r6, asl #2 - ldr r5, .L1990+4 - ldr sl, .L1990+8 - strh r3, [r4, #0] @ movhi - ldr r8, .L1990+16 - b .L1986 -.L1989: - ldrh r3, [r5, sl] - cmp r3, #0 - beq .L1987 - ldr r3, [sp, #8] + bne .L2837 + add r3, r8, #1872 + ldrb r2, [r4, #-4033] @ zero_extendqisi2 + ldrh r3, [r3] + mul r3, r3, r2 + cmp r5, r3 + beq .L2837 + ldrb r10, [r4, #-4030] @ zero_extendqisi2 + movw r3, #1804 + ldr r6, [r8, #1932] + cmp r10, #0 + ldrh r9, [r8, r3] + bne .L2835 sub r6, r6, #1 - str r7, [r4, #8] - ldr r0, .L1990+20 - str r3, [r4, #12] - ldrh r3, [r5, r8] - strh r3, [r4, #2] @ movhi + add r1, sp, #12 + mov r2, r10 + mov r0, r6 + bl log2phys + ldr r5, [r4, #-2040] + ldr r0, [r4, #-2064] + ldr r3, [sp, #12] + str r6, [sp, #32] + cmn r3, #1 + str r0, [sp, #24] + str r3, [sp, #20] + str r5, [sp, #28] + str r10, [r5, #4] + beq .L2839 + mov r1, #1 + mov r2, r10 + add r0, sp, #16 + bl FlashReadPages + b .L2840 +.L2839: + movw r3, #1882 + mov r1, #255 + ldrh r2, [r8, r3] + bl ftl_memset +.L2840: + ldr r3, .L2855+16 + mov r8, #0 + ldr r10, .L2855+12 + mov r9, r9, asl #2 + ldr ip, .L2855+8 + mov fp, r8 + strh r3, [r5] @ movhi +.L2841: + cmp r8, r9 + beq .L2842 + ldrh r3, [r7, #4] + cmp r3, #0 + beq .L2842 + ldr r3, [sp, #20] + add r8, r8, #1 + str r6, [r5, #8] + ldr r0, .L2855+8 + str r3, [r5, #12] + ldrh r3, [ip] + str ip, [sp, #4] + strh r3, [r5, #2] @ movhi bl get_new_active_ppa - ldr r3, [r5, #-1800] + ldr r3, [r10, #-3844] mov r2, #0 mov r1, #1 - str r0, [sp, #8] - add r0, sp, #4 - str r3, [r4, #4] + str r0, [sp, #20] + add r0, sp, #16 + str r3, [r5, #4] add r3, r3, #1 cmn r3, #1 - str r3, [r5, #-1800] - moveq r3, #0 - streq r3, [r5, #-1800] + moveq r3, fp + str r3, [r10, #-3844] mov r3, r2 bl FlashProgPages - ldrh r0, [r5, r8] + ldrh r0, [r7] bl decrement_vpc_count -.L1986: - cmp r6, #0 - bne .L1989 -.L1987: - ldr r3, .L1990+4 - mov r2, #1 - strb r2, [r3, #-1986] - b .L1981 -.L1983: + ldr ip, [sp, #4] + b .L2841 +.L2842: + mov r3, #1 + b .L2854 +.L2837: mov r3, #0 - strb r3, [r2, #-1986] -.L1981: - add sp, sp, #44 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L1991: +.L2854: + strb r3, [r4, #-4030] +.L2835: + ldr r3, [sp] + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L2846 + bl __stack_chk_fail +.L2846: + add sp, sp, #60 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2856: .align 2 -.L1990: +.L2855: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR2-4040 .word .LANCHOR2 - .word -1992 .word -3947 - .word -1996 - .word .LANCHOR2-1996 .fnend .size FtlWriteDumpData, .-FtlWriteDumpData .align 2 @@ -17516,32 +17456,30 @@ l2p_flush: .save {r3, r4, r5, r6, r7, lr} bl FtlWriteDumpData mov r4, #0 - ldr r7, .L1996 - movw r6, #3954 - ldr r5, .L1996+4 - b .L1993 -.L1995: - ldr r3, [r5, #-1852] - mov r2, #12 - mla r3, r2, r4, r3 + ldr r5, .L2863 + mov r7, #12 + ldr r6, .L2863+4 +.L2858: + ldrh r3, [r5] + uxth r0, r4 + cmp r3, r0 + bls .L2862 + ldr r3, [r6, #-3896] + mla r3, r7, r0, r3 ldr r3, [r3, #4] cmp r3, #0 - bge .L1994 - mov r0, r4 + bge .L2859 bl flush_l2p_region -.L1994: +.L2859: add r4, r4, #1 - uxth r4, r4 -.L1993: - ldrh r3, [r7, r6] - cmp r3, r4 - bhi .L1995 + b .L2858 +.L2862: mov r0, #0 ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L1997: +.L2864: .align 2 -.L1996: - .word .LANCHOR0 +.L2863: + .word .LANCHOR0+1910 .word .LANCHOR2 .fnend .size l2p_flush, .-l2p_flush @@ -17552,595 +17490,1987 @@ allocate_new_data_superblock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2010 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r4, r0 - ldr r3, [r3, #4040] - ldrh r5, [r0, #0] + ldr r1, .L2892 + stmfd sp!, {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + ldr r3, [r1, #4052] + ldrh r5, [r0] cmp r3, #0 - bne .L1999 + bne .L2866 movw r3, #65535 cmp r5, r3 - beq .L2000 - ldr r3, .L2010+4 - mov r0, r5 - ldr r2, [r3, #-2016] + mov r7, r1 + mov r4, r0 + ldr r6, .L2892+4 + beq .L2867 + ldr r2, [r6, #-4060] mov r3, r5, asl #1 + mov r0, r5 ldrh r3, [r2, r3] cmp r3, #0 - beq .L2001 + beq .L2868 bl INSERT_DATA_LIST - b .L2000 -.L2001: + b .L2867 +.L2868: bl INSERT_FREE_LIST -.L2000: +.L2867: mov r3, #0 strb r3, [r4, #8] - ldr r3, .L2010+8 + ldr r3, .L2892+8 cmp r4, r3 - beq .L2002 - ldr r2, .L2010 - movw r3, #3868 - ldrh r3, [r2, r3] + beq .L2869 + ldr r2, .L2892 + add r3, r2, #1824 + ldrh r3, [r3] cmp r3, #1 - beq .L2002 - ldrb r2, [r2, #928] @ zero_extendqisi2 + beq .L2869 + ldrb r2, [r2, #140] @ zero_extendqisi2 cmp r2, #0 - beq .L2003 -.L2002: + beq .L2870 +.L2869: mov r3, #1 strb r3, [r4, #8] - b .L2004 -.L2003: - ldr r2, .L2010+12 + b .L2871 +.L2870: + ldr r2, .L2892+12 cmp r4, r2 - bne .L2004 + bne .L2871 cmp r3, #3 - ldr r3, .L2010+4 - beq .L2005 - ldr r2, [r3, #-1712] - cmp r2, #1 - bne .L2006 -.L2005: - mov r2, #1 - strb r2, [r3, #-1988] -.L2006: - ldr r2, .L2010 - ldr r2, [r2, #3840] - cmp r2, #0 - beq .L2004 - ldr r3, [r3, #-1780] + beq .L2873 + ldr r3, .L2892+4 + ldr r3, [r3, #-3752] + cmp r3, #1 + bne .L2874 +.L2873: + mov r3, #1 + strb r3, [r6, #-4032] +.L2874: + ldr r3, [r7, #1796] + cmp r3, #0 + beq .L2871 + ldr r3, [r6, #-3824] cmp r3, #39 - ldrls r3, .L2010+4 + ldrls r3, .L2892+4 movls r2, #1 - strlsb r2, [r3, #-1988] -.L2004: - ldr r3, .L2010+16 - ldr r6, .L2010+4 - ldrh r0, [r6, r3] - movw r3, #65535 - cmp r0, r3 - beq .L2007 + strlsb r2, [r3, #-4032] +.L2871: + ldr r2, .L2892+4 + movw r1, #65535 + sub r3, r2, #1920 + ldrh r0, [r3] + mov r6, r3 + cmp r0, r1 + beq .L2876 cmp r5, r0 - bne .L2008 - ldr r2, [r6, #-2016] + bne .L2877 + ldr r2, [r2, #-4060] mov r3, r0, asl #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L2009 -.L2008: + beq .L2878 +.L2877: bl update_vpc_list -.L2009: - ldr r3, .L2010+16 - mvn r2, #0 - strh r2, [r6, r3] @ movhi -.L2007: +.L2878: + mvn r3, #0 + strh r3, [r6] @ movhi +.L2876: mov r0, r4 bl allocate_data_superblock bl l2p_flush mov r0, #0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L1999: +.L2866: mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L2011: + ldmfd sp!, {r3, r4, r5, r6, r7, pc} +.L2893: .align 2 -.L2010: +.L2892: .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR2-1948 - .word .LANCHOR2-1996 - .word -1016 + .word .LANCHOR2-3992 + .word .LANCHOR2-4040 .fnend .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 2 + .global FtlCheckVpc + .type FtlCheckVpc, %function +FtlCheckVpc: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #8 + mov r4, #0 + ldr r6, .L2916 + ldr r1, .L2916+4 + ldr r0, .L2916+8 + ldr r3, [r6] + ldr r7, .L2916+12 + ldr r5, .L2916+16 + str r3, [sp, #4] + bl printk + ldr r0, .L2916+16 + mov r1, #0 + mov r2, #8192 + bl memset +.L2895: + ldr r3, [r7, #1932] + cmp r4, r3 + bcs .L2914 + mov r0, r4 + mov r1, sp + mov r2, #0 + bl log2phys + ldr r0, [sp] + cmn r0, #1 + beq .L2896 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + mov r0, r0, asl #1 + ldrh r3, [r5, r0] + add r3, r3, #1 + strh r3, [r5, r0] @ movhi +.L2896: + add r4, r4, #1 + b .L2895 +.L2914: + ldr r5, .L2916+20 + mov r4, #0 + ldr r8, .L2916+24 + add r9, r5, #300 +.L2898: + ldrh r3, [r8] + uxth r1, r4 + ldr r7, .L2916+20 + cmp r3, r1 + bls .L2915 + ldr r2, [r5, #-4060] + mov r3, r1, asl #1 + ldrh r2, [r2, r3] + ldrh r3, [r9, r3] + cmp r2, r3 + beq .L2899 + ldr r0, .L2916+28 + bl printk +.L2899: + add r4, r4, #1 + b .L2898 +.L2915: + ldr r4, [r7, #-4048] + cmp r4, #0 + beq .L2894 + sub r3, r7, #4032 + add r9, r7, #300 + mov r5, #0 + mov r10, #6 + ldrh r8, [r3, #-12] + ldr r3, [r7, #-4068] + rsb r4, r3, r4 + ldr r3, .L2916+32 + mov r4, r4, asr #1 + mul r4, r3, r4 + uxth r4, r4 +.L2902: + uxth r3, r5 + cmp r3, r8 + bcs .L2894 + ldr r2, [r7, #-4060] + mov r3, r4, asl #1 + ldrh r2, [r2, r3] + cmp r2, #0 + beq .L2903 + ldr r0, .L2916+36 + mov r1, r4 + ldrh r3, [r9, r3] + bl printk +.L2903: + mul r4, r10, r4 + ldr r3, [r7, #-4068] + add r5, r5, #1 + ldrh r4, [r3, r4] + movw r3, #65535 + cmp r4, r3 + bne .L2902 +.L2894: + ldr r2, [sp, #4] + ldr r3, [r6] + cmp r2, r3 + beq .L2906 + bl __stack_chk_fail +.L2906: + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L2917: + .align 2 +.L2916: + .word __stack_chk_guard + .word .LANCHOR3+72 + .word .LC107 + .word .LANCHOR0 + .word .LANCHOR2+300 + .word .LANCHOR2 + .word .LANCHOR0+1812 + .word .LC139 + .word -1431655765 + .word .LC140 + .fnend + .size FtlCheckVpc, .-FtlCheckVpc + .align 2 + .global Ftlscanalldata + .type Ftlscanalldata, %function +Ftlscanalldata: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #32 + sub sp, sp, #32 + ldr r6, .L2929 + mov r1, #0 + ldr r0, .L2929+4 + mov r4, #0 + ldr r8, .L2929+8 + ldr r3, [r6] + ldr r5, .L2929+12 + str r3, [sp, #28] + bl printk +.L2919: + ldr r3, [r8, #1932] + cmp r4, r3 + bcs .L2928 + mov r0, r4 + add r1, sp, #24 + mov r2, #0 + bl log2phys + ubfx r3, r4, #0, #11 + cmp r3, #0 + bne .L2920 + ldr r0, .L2929+16 + mov r1, r4 + ldr r2, [sp, #24] + bl printk +.L2920: + ldr r3, [sp, #24] + cmn r3, #1 + beq .L2922 + str r3, [r5, #216] + mov r2, #0 + ldr r3, [r5, #-2064] + mov r1, #1 + ldr r7, [r5, #-2040] + ldr r0, .L2929+20 + str r3, [r5, #220] + str r2, [r5, #212] + str r4, [r5, #228] + str r7, [r5, #224] + bl FlashReadPages + ldr r3, [r5, #212] + ldr r2, .L2929+12 + cmn r3, #1 + cmpne r3, #256 + beq .L2923 + ldr r3, [r7, #8] + cmp r3, r4 + beq .L2922 +.L2923: + ldr r3, [r2, #224] + ldr r1, [r2, #220] + 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, .L2929+24 + str r1, [sp, #16] + mov r1, r4 + ldr r2, [r2, #216] + ldr r3, [r3] + bl printk +.L2922: + add r4, r4, #1 + b .L2919 +.L2928: + ldr r2, [sp, #28] + ldr r3, [r6] + cmp r2, r3 + beq .L2926 + bl __stack_chk_fail +.L2926: + add sp, sp, #32 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L2930: + .align 2 +.L2929: + .word __stack_chk_guard + .word .LC141 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC142 + .word .LANCHOR2+212 + .word .LC143 + .fnend + .size Ftlscanalldata, .-Ftlscanalldata + .align 2 + .global FtlReUsePrevPpa + .type FtlReUsePrevPpa, %function +FtlReUsePrevPpa: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + .pad #12 + mov r5, r0 + ubfx r0, r1, #10, #16 + str r1, [sp, #4] + bl P2V_block_in_plane + ldr r6, .L2941 + ldr r4, [r6, #-4060] + mov r7, r0, asl #1 + ldrh r3, [r4, r7] + cmp r3, #0 + addne r3, r3, #1 + strneh r3, [r4, r7] @ movhi + bne .L2933 + ldr r4, [r6, #-4048] + cmp r4, #0 + beq .L2933 + ldr r1, [r6, #-4068] + sub r2, r6, #4032 + ldr lr, .L2941+4 + movw r9, #65535 + rsb r4, r1, r4 + ldrh ip, [r2, #-12] + mov r8, r2 + mov r4, r4, asr #1 + mul r4, lr, r4 + mov lr, #6 + uxth r4, r4 +.L2934: + uxth r2, r3 + cmp r2, ip + bcs .L2933 + cmp r4, r0 + bne .L2935 + mov r1, r4 + ldr r0, .L2941+8 + bl List_remove_node + ldrh r3, [r8, #-12] + mov r0, r4 + sub r3, r3, #1 + strh r3, [r8, #-12] @ movhi + bl INSERT_DATA_LIST + ldr r2, [r6, #-4060] + ldrh r3, [r2, r7] + add r3, r3, #1 + strh r3, [r2, r7] @ movhi + b .L2933 +.L2935: + mul r4, lr, r4 + add r3, r3, #1 + ldrh r4, [r1, r4] + cmp r4, r9 + bne .L2934 +.L2933: + mov r0, r5 + add r1, sp, #4 + mov r2, #1 + bl log2phys + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} +.L2942: + .align 2 +.L2941: + .word .LANCHOR2 + .word -1431655765 + .word .LANCHOR2-4048 + .fnend + .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .align 2 + .global FtlRecoverySuperblock + .type FtlRecoverySuperblock, %function +FtlRecoverySuperblock: + .fnstart + @ args = 0, pretend = 0, frame = 64 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L3099 + movw r2, #65535 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #68 + sub sp, sp, #68 + ldr r3, [r3] + mov r4, r0 + str r3, [sp, #60] + ldrh r3, [r0] + cmp r3, r2 + beq .L2945 + ldrh r3, [r0, #2] + str r3, [sp, #8] + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r1, [sp, #8] + str r3, [sp, #28] + ldr r3, .L3099+4 + ldrh r3, [r3] + cmp r3, r1 + mov r3, #0 + streqh r3, [r0, #4] @ movhi + ldrneh r0, [r0, #16] + beq .L3091 +.L2947: + cmp r0, r2 + add r3, r3, #1 + uxtheq r1, r3 + addeq r1, r4, r1, asl #1 + ldreqh r0, [r1, #16] + beq .L2947 +.L3094: + ldrb r1, [r4, #8] @ zero_extendqisi2 + cmp r1, #1 + bne .L2949 + bl FtlGetLastWrittenPage + cmn r0, #1 + mov r5, r0 + beq .L2950 + ldr r3, .L3099+8 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cmp r2, #0 + addeq r3, r3, r0, asl #1 + ldreqh r7, [r3, #144] + beq .L3020 + b .L3084 +.L2949: + mov r1, #0 + bl FtlGetLastWrittenPage + cmn r0, #1 + mov r5, r0 + beq .L2950 +.L3084: + mov r7, r5 +.L3020: + ldr r3, .L3099+8 + movw r2, #1804 + movw r8, #65535 + mov r9, #36 + ldrh r2, [r3, r2] + str r2, [sp, #4] + ldr r2, .L3099+12 + ldr r1, [r2, #-2076] + ldr ip, [r2, #-3208] + movw r2, #1884 + ldrh lr, [r3, r2] + add r3, r4, #14 + mov r2, #0 + str r1, [sp, #12] + str r3, [sp, #20] + mov r0, r3 + mov r6, r2 + mov r10, r2 + b .L2952 +.L2950: + mov r3, #0 + strh r3, [r4, #2] @ movhi +.L3091: + strb r3, [r4, #6] + b .L2945 +.L2954: + ldrh r3, [r0, #2]! + cmp r3, r8 + beq .L2953 + ldr r1, [sp, #12] + orr r3, r7, r3, asl #10 + mla r1, r9, r6, r1 + stmib r1, {r3, r10} + mul r3, lr, r6 + add r6, r6, #1 + uxth r6, r6 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + bic r3, r3, #3 + add r3, ip, r3 + str r3, [r1, #12] +.L2953: + add r2, r2, #1 +.L2952: + ldr r1, [sp, #4] + uxth r3, r2 + cmp r3, r1 + bcc .L2954 + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #1 + movne r3, #0 + bne .L3085 + ldr r3, .L3099+8 + ldrb r1, [r3, #140] @ zero_extendqisi2 + adds r3, r1, #0 + movne r3, #1 +.L3085: + ldr r8, .L3099+12 + mov r1, r6 + str r3, [sp, #24] + mov fp, #0 + ldr r2, [sp, #24] + ldr r0, [r8, #-2076] + bl FlashReadPages + ldr r3, [r8, #-3844] + str r8, [sp, #12] + str r3, [sp, #36] + movw r3, #65535 + str r3, [sp, #16] +.L2956: + uxth r9, fp + cmp r9, r6 + bcs .L2963 + mov r1, #36 + ldr r0, [r8, #-2076] + mul r1, r1, fp + add ip, r0, r1 + ldr r1, [r0, r1] + cmp r1, #0 + bne .L2957 + ldr ip, [ip, #12] + ldr r10, [ip, #4] + cmn r10, #1 + beq .L2958 + mov r0, r10 + ldr r1, [r8, #-3844] + str ip, [sp, #4] + bl ftl_cmp_data_ver + ldr ip, [sp, #4] + cmp r0, #0 + addne r10, r10, #1 + strne r10, [r8, #-3844] +.L2958: + ldr r1, [ip] + cmn r1, #1 + bne .L2959 +.L2963: + cmp r9, r6 + ldr r6, .L3099+12 + bne .L3081 + add r5, r5, #1 + uxth r3, r5 + str r3, [sp, #4] + ldr r3, [r6, #-2076] + ldr r0, [r3, #4] + b .L3086 +.L2957: + ldr r1, [ip, #4] + ldr r0, .L3099+16 + bl printk + uxth r3, r7 + ldrh r1, [r4] + str r3, [sp, #16] + ldr r3, .L3099+20 + strh r1, [r3] @ movhi +.L2959: + add fp, fp, #1 + b .L2956 +.L3081: + uxth r3, r5 + str r3, [sp, #4] + ldr r3, [sp, #12] + mov r2, #36 + ldr r3, [r3, #-2076] + mla r9, r2, r9, r3 + ldr r0, [r9, #4] +.L3086: + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #1 + str r0, [sp, #12] + bne .L2965 + ldr r2, .L3099+8 + ldrb r1, [r2, #140] @ zero_extendqisi2 + cmp r1, #0 + ldreq r1, [sp, #4] + addeq r2, r2, r1, asl #1 + ldreqh r2, [r2, #144] + streq r2, [sp, #4] +.L2965: + ldr r2, .L3099+4 + ldr r1, [sp, #4] + ldr r0, [sp, #12] + ldrh r2, [r2] + cmp r2, r1 + ldr r1, [sp, #8] + ldreqh r2, [sp, #4] + streqh r2, [r4, #2] @ movhi + moveq r2, #0 + streqb r2, [r4, #6] + streqh r2, [r4, #4] @ movhi + ldrh r2, [sp, #28] + str r2, [sp, #32] + ldr ip, [sp, #32] + ldr r2, [sp, #4] + cmp r2, r1 + cmpeq r0, ip + moveq r0, r4 + moveq r1, r2 + beq .L3092 + clz r3, r3 + ldr r2, [sp, #36] + ldr r1, [sp, #16] + mov r3, r3, lsr #5 + sub r10, r2, #1 + movw r2, #65535 + cmp r1, r2 + orrne r3, r3, #1 + cmp r3, #0 + beq .L2969 + ldr r3, [r6, #-1908] + uxth fp, r7 + ldr r8, .L3099+12 + mvn r9, #0 + cmn r3, #1 + mov r7, r9 + ldreq r3, .L3099+12 + streq r10, [r3, #-1908] + ldr r3, [r6, #-1908] + str r3, [sp, #16] + ldr r3, [sp, #8] + add r3, r3, #7 + cmp fp, r3 + subgt r5, fp, #7 + ldrle r5, [sp, #8] + uxthgt r5, r5 +.L2972: + cmp r5, fp + bhi .L2985 + ldr r3, .L3099+24 + mov r0, #36 + ldr lr, [r8, #-2076] + ldr r1, [sp, #20] + ldrh r3, [r3] + str r3, [sp, #28] + mov r3, #0 + mov r6, r3 +.L2986: + ldr ip, [sp, #28] + uxth r2, r3 + cmp r2, ip + bcs .L3095 + ldrh r2, [r1, #2]! + movw ip, #65535 + add r3, r3, #1 + cmp r2, ip + orrne r2, r5, r2, asl #10 + mlane ip, r0, r6, lr + addne r6, r6, #1 + uxthne r6, r6 + strne r2, [ip, #4] + b .L2986 +.L3095: + mov r1, r6 + ldr r2, [sp, #24] + ldr r0, [r8, #-2076] + bl FlashReadPages + ldr r3, .L3099+8 + mov r2, #36 + movw r1, #65535 + ldrb ip, [r3, #140] @ zero_extendqisi2 + ldr r3, [r8, #-2076] + mla r6, r2, r6, r3 + ldr r2, .L3099+28 + add r2, r2, r5, asl #1 +.L2975: + cmp r3, r6 + beq .L3096 + ldr r0, [r3] + cmp r0, #0 + bne .L2976 + ldr r0, [r3, #12] + ldrh lr, [r0] + cmp lr, r1 + beq .L2977 + ldr r0, [r0, #4] + cmn r0, #1 + beq .L2977 + cmn r9, #1 + ldr r7, [r8, #-1908] + str r0, [r8, #-1908] + bne .L2977 + ldrh r0, [r2] + cmp r0, r1 + bne .L2978 + cmp ip, #0 + beq .L2977 +.L2978: + cmp r7, r10 + mvneq r9, #0 + movne r9, r7 + b .L2977 +.L2976: + ldr r3, .L3099+20 + ldrh r2, [r4] + strh r2, [r3] @ movhi + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #0 + bne .L2969 + ldr r3, .L3099+12 + mov r5, r5, asl #1 + sub r2, r3, #3136 + ldrh r1, [r2, r5] + movw r2, #65535 + cmp r1, r2 + bne .L2980 + cmn r9, #1 + strne r9, [r3, #-1908] + bne .L2969 + ldr r2, [sp, #16] + cmp r2, r10 + bne .L3087 + ldr r2, [r3, #-1908] + b .L3093 +.L2980: + cmp r7, r10 + beq .L2983 + cmn r7, #1 + strne r7, [r3, #-1908] + b .L2969 +.L2983: + ldr r2, [r3, #-1908] + cmp r2, r10 + beq .L2969 +.L3093: + sub r2, r2, #1 + b .L3087 +.L2977: + add r3, r3, #36 + b .L2975 +.L3096: + add r5, r5, #1 + uxth r5, r5 + b .L2972 +.L2985: + ldr r3, .L3099+12 + mvn r2, #0 +.L3087: + str r2, [r3, #-1908] +.L2969: + ldr r2, .L3099+32 + movw r3, #310 + ldr fp, [sp, #8] + mov r1, #1 + ldr r5, .L3099+12 + strh r1, [r2, r3] @ movhi +.L2987: + ldr r3, .L3099+24 + movw r1, #65535 + ldr r9, [r5, #-2076] + mov r0, #36 + ldr r7, [sp, #20] + mov r6, #0 + ldrh r8, [r3] + ldr r3, .L3099+8 + str r6, [sp, #16] + ldrb r3, [r3, #140] @ zero_extendqisi2 + str r3, [sp, #28] +.L2988: + uxth r3, r6 + cmp r3, r8 + bcs .L3097 + ldrh r3, [r7, #2]! + cmp r3, r1 + beq .L2989 + ldr r2, [sp, #16] + orr r3, fp, r3, asl #10 + mla r2, r0, r2, r9 + str r3, [r2, #4] + ldrb ip, [r4, #8] @ zero_extendqisi2 + cmp ip, #1 + bne .L2990 + ldr ip, [sp, #28] + cmp ip, #0 + orrne r3, r3, #-2147483648 + strne r3, [r2, #4] +.L2990: + ldr r3, [sp, #16] + add lr, r3, #1 + uxth r3, lr + str r3, [sp, #16] +.L2989: + add r6, r6, #1 + b .L2988 +.L3097: + ldr r0, [r5, #-2076] + ldr r1, [sp, #16] + ldr r2, [sp, #24] + bl FlashReadPages + mov r3, #0 +.L3090: + str r3, [sp, #28] + ldr r2, [sp, #16] + ldrh r3, [sp, #28] + cmp r3, r2 + bcs .L3098 + ldr r3, [sp, #28] + mov r6, #36 + ldr r9, [r5, #-2076] + mul r6, r6, r3 + add r8, r9, r6 + ldr r7, [r8, #4] + ubfx r0, r7, #10, #16 + str r7, [sp, #56] + bl P2V_plane + ldr r3, [sp, #8] + cmp fp, r3 + bcc .L2993 + ldr r3, [sp, #32] + ldr r2, [sp, #8] + cmp r0, r3 + movcs r3, #0 + movcc r3, #1 + cmp fp, r2 + movne r3, #0 + cmp r3, #0 + bne .L2993 + ldr r3, [sp, #12] + ldr r2, [sp, #4] + cmp r0, r3 + cmpeq fp, r2 + beq .L2994 + ldr r3, [r9, r6] + cmn r3, #1 + beq .L2995 + ldr r8, [r8, #12] + movw r3, #61589 + ldrh r2, [r8] + cmp r2, r3 + ldrneh r0, [r4] + bne .L3088 + ldr r10, [r8, #4] + cmn r10, #1 + beq .L2997 + ldr r1, [r5, #-3844] + mov r0, r10 + bl ftl_cmp_data_ver + cmp r0, #0 + addne r3, r10, #1 + strne r3, [r5, #-3844] +.L2997: + ldr r7, [r8, #8] + add r1, sp, #52 + ldr r3, [r8, #12] + mov r2, #0 + mov r0, r7 + str r3, [sp, #48] + bl log2phys + ldr r1, [r5, #-1908] + cmn r1, #1 + beq .L2998 + mov r0, r10 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2998 + ldr r3, [sp, #48] + cmn r3, #1 + beq .L2999 + ldr r0, [r5, #-2076] + mov r2, #0 + mov r1, #1 + add r0, r0, r6 + str r3, [r0, #4] + ldr r9, [r0, #12] + bl FlashReadPages + ldr r2, [r5, #-2076] + ldr r3, [r9, #4] + add ip, r2, r6 + str r3, [sp, #36] + ldr r3, [r2, r6] + cmn r3, #1 + bne .L3000 + b .L3001 +.L2999: + ldr r3, [sp, #56] + ldr r2, [sp, #52] + cmp r2, r3 + bne .L2993 + mov r0, r7 + add r1, sp, #48 + mov r2, #1 + bl log2phys + b .L2993 +.L3000: + ldr r8, [r9, #8] + cmp r8, r7 + bne .L3001 + ldr r0, [r5, #-1908] + ldr r1, [sp, #36] + str r2, [sp, #44] + str ip, [sp, #40] + bl ftl_cmp_data_ver + cmp r0, #0 + ldr ip, [sp, #40] + ldr r2, [sp, #44] + beq .L3001 + ldr r3, [sp, #52] + ldr r1, [sp, #56] + cmp r3, r1 + beq .L3006 + ldr r1, [sp, #48] + cmp r3, r1 + beq .L3001 + cmn r3, #1 + streq r3, [r2, r6] + beq .L3005 + str r3, [ip, #4] + mov r0, ip + mov r1, #1 + mov r2, #0 + ldr r9, [ip, #12] + bl FlashReadPages +.L3005: + ldr r3, [r5, #-2076] + ldr r3, [r3, r6] + cmn r3, #1 + beq .L3006 + ldr r6, [r9, #4] + ldr r0, [r5, #-1908] + mov r1, r6 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L3006 + ldr r0, [sp, #36] + mov r1, r6 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L3001 +.L3006: + mov r0, r8 + ldr r1, [sp, #48] + bl FtlReUsePrevPpa +.L3001: + mvn r3, #0 + str r3, [sp, #48] + b .L3008 +.L2998: + ldr r3, [sp, #56] + ldr r2, [sp, #52] + cmp r2, r3 + beq .L3008 + ldr r3, [sp, #48] + ldr r2, .L3099+8 + mov r1, r3, lsr #10 + adds r3, r3, #1 + ldr r2, [r2, #1820] + movne r3, #1 + cmp r1, r2 + movcc r3, #0 + cmp r3, #0 + bne .L2993 + mov r0, r7 + add r1, sp, #56 + mov r2, #1 + bl log2phys + ldr r6, [sp, #52] + cmn r6, #1 + beq .L3008 + ldr r3, [sp, #48] + cmp r6, r3 + beq .L3008 + ubfx r0, r6, #10, #16 + bl P2V_block_in_plane + ldr r3, .L3099+36 + ldrh r2, [r3] + cmp r2, r0 + beq .L3011 + ldrh r2, [r3, #48] + cmp r2, r0 + beq .L3011 + ldrh r3, [r3, #96] + cmp r3, r0 + bne .L3008 +.L3011: + ldr r0, [r5, #-2076] + mov r1, #1 + mov r2, #0 + str r6, [r0, #4] + ldr r8, [r0, #12] + bl FlashReadPages + ldr r3, [r5, #-2076] + ldr r1, [r8, #4] + ldr r3, [r3] + cmn r3, #1 + beq .L3008 + mov r0, r10 + bl ftl_cmp_data_ver + cmp r0, #0 + bne .L3008 + mov r0, r7 + add r1, sp, #52 + mov r2, #1 + bl log2phys +.L3008: + ldr r0, [sp, #48] + cmn r0, #1 + beq .L2993 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r5, #-4060] + mov r3, r0, asl #1 + mov r1, r0 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L3012 +.L3088: + bl decrement_vpc_count + b .L2993 +.L3012: + ldr r0, .L3099+40 + bl printk + b .L2993 +.L2995: + ldrh r2, [r4] + mov r1, r7 + ldr r3, .L3099+20 + ldr r0, .L3099+44 + strh r2, [r3] @ movhi + mov r2, r10 + bl printk + ldr r3, .L3099+32 + ldr r3, [r3, #312] + cmp r3, #31 + bhi .L3013 + ldr r2, .L3099+32 + ldr r1, [sp, #56] + add r2, r2, r3, asl #2 + add r3, r3, #1 + str r1, [r2, #316] + ldr r2, .L3099+32 + str r3, [r2, #312] +.L3013: + ldrh r0, [r4] + bl decrement_vpc_count + ldr r3, [r5, #-1908] + cmn r3, #1 + beq .L3089 + cmp r3, r10 + bls .L2993 +.L3089: + str r10, [r5, #-1908] +.L2993: + ldr r3, [sp, #28] + add r3, r3, #1 + b .L3090 +.L3098: + ldrb r3, [r4, #8] @ zero_extendqisi2 + add fp, fp, #1 + cmp r3, #1 + uxth fp, fp + bne .L3016 + ldr r3, .L3099+8 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L3016 + ldr r3, .L3099+48 + ldr r2, [sp, #4] + ldrh r3, [r3] + cmp r2, fp + cmpeq r3, fp + beq .L2994 +.L3016: + ldr r2, .L3099+8 + add r3, r2, #1872 + ldrh r3, [r3] + cmp fp, r3 + bne .L2987 + movw r1, #1804 + movw r0, #65535 + ldrh r1, [r2, r1] + mov r3, #0 + strh fp, [r4, #2] @ movhi + strh r3, [r4, #4] @ movhi +.L3017: + uxth r2, r3 + cmp r2, r1 + bcs .L2945 + ldr lr, [sp, #20] + add r3, r3, #1 + ldrh ip, [lr, #2]! + cmp ip, r0 + str lr, [sp, #20] + beq .L3017 + strb r2, [r4, #6] + b .L2945 +.L2994: + ldrb r3, [sp, #12] @ zero_extendqisi2 + mov r0, r4 + ldr r1, [sp, #4] + strb r3, [r4, #6] + ldrh r3, [sp, #4] + strh r3, [r4, #2] @ movhi +.L3092: + ldr r2, [sp, #12] + bl ftl_sb_update_avl_pages +.L2945: + ldr r3, .L3099 + mov r0, #0 + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L3021 + bl __stack_chk_fail +.L3021: + add sp, sp, #68 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3100: + .align 2 +.L3099: + .word __stack_chk_guard + .word .LANCHOR0+1872 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC144 + .word .LANCHOR4+308 + .word .LANCHOR0+1804 + .word .LANCHOR2-3136 + .word .LANCHOR4 + .word .LANCHOR2-4040 + .word .LC145 + .word .LC146 + .word .LANCHOR0+1874 + .fnend + .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .align 2 .global FtlVpcCheckAndModify .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r0, r1, r4, r5, r6, r7, r8, lr} + stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #8 mov r4, #0 - ldr r6, .L2020 - ldr r1, .L2020+4 - ldr r0, .L2020+8 + ldr r7, .L3118 + ldr r5, .L3118+4 + ldr r1, .L3118+8 + ldr r3, [r7] + ldr r0, .L3118+12 + ldr r6, .L3118+16 + str r3, [sp, #4] bl printk - movw r3, #3858 - ldrh r2, [r6, r3] + movw r3, #1814 mov r1, #0 - ldr r5, .L2020+12 + ldrh r2, [r5, r3] + ldr r0, [r6, #-2016] mov r2, r2, asl #1 - ldr r0, [r5, #-912] bl ftl_memset - b .L2013 -.L2015: +.L3102: + ldr r3, [r5, #1932] + cmp r4, r3 + bcs .L3116 mov r0, r4 - add r1, sp, #4 + mov r1, sp mov r2, #0 bl log2phys - ldr r0, [sp, #4] + ldr r0, [sp] cmn r0, #1 - beq .L2014 + beq .L3103 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, [r5, #-912] + ldr r2, [r6, #-2016] mov r0, r0, asl #1 - ldrh r2, [r3, r0] - add r2, r2, #1 - strh r2, [r3, r0] @ movhi -.L2014: + ldrh r3, [r2, r0] + add r3, r3, #1 + strh r3, [r2, r0] @ movhi +.L3103: add r4, r4, #1 -.L2013: - ldr r3, [r6, #3976] - cmp r4, r3 - bcc .L2015 - mov r4, #0 - ldr r7, .L2020 - ldr r5, .L2020+12 - movw r8, #65535 - b .L2016 -.L2019: - ldr r3, [r5, #-2016] - mov r6, r4, asl #1 - ldrh r2, [r3, r6] - ldr r3, [r5, #-912] - ldrh r3, [r3, r6] + b .L3102 +.L3116: + ldr r10, .L3118+20 + mov r8, #0 + ldr r9, .L3118+16 +.L3105: + ldrh r3, [r10] + uxth r4, r8 + cmp r3, r4 + bls .L3117 + ldr r3, [r6, #-4060] + mov r5, r4, asl #1 + movw r1, #65535 + ldrh r2, [r3, r5] + ldr r3, [r6, #-2016] + ldrh r3, [r3, r5] cmp r2, r3 - beq .L2017 - cmp r2, r8 - beq .L2017 - ldr r0, .L2020+16 + cmpne r2, r1 + beq .L3107 + ldr r0, .L3118+24 mov r1, r4 bl printk - ldr r3, .L2020+20 - ldrh r3, [r5, r3] + ldr r3, .L3118+28 + ldrh r2, [r3] + cmp r2, r4 + beq .L3107 + ldrh r2, [r3, #96] + cmp r2, r4 + beq .L3107 + ldrh r3, [r3, #48] cmp r3, r4 - beq .L2017 - ldr r3, .L2020+24 - ldrh r3, [r5, r3] - cmp r3, r4 - beq .L2017 - ldr r3, .L2020+28 - ldrh r3, [r5, r3] - cmp r3, r4 - beq .L2017 - ldr r3, [r5, #-2016] - ldrh r2, [r3, r6] + beq .L3107 + ldr r3, [r9, #-4060] + ldrh r2, [r3, r5] cmp r2, #0 - ldr r2, [r5, #-912] - ldrh r2, [r2, r6] - strh r2, [r3, r6] @ movhi - beq .L2017 -.L2018: + ldr r2, [r9, #-2016] + ldrh r2, [r2, r5] + strh r2, [r3, r5] @ movhi + beq .L3107 mov r0, r4 bl update_vpc_list -.L2017: - add r4, r4, #1 - uxth r4, r4 -.L2016: - mov r3, #3856 - ldrh r3, [r7, r3] - cmp r3, r4 - bhi .L2019 +.L3107: + add r8, r8, #1 + b .L3105 +.L3117: bl l2p_flush bl FtlVpcTblFlush - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, pc} -.L2021: + ldr r2, [sp, #4] + ldr r3, [r7] + cmp r2, r3 + beq .L3111 + bl __stack_chk_fail +.L3111: + add sp, sp, #8 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L3119: .align 2 -.L2020: +.L3118: + .word __stack_chk_guard .word .LANCHOR0 - .word .LANCHOR3+48 - .word .LC102 + .word .LANCHOR3+84 + .word .LC107 .word .LANCHOR2 - .word .LC146 - .word -1996 - .word -1900 - .word -1948 + .word .LANCHOR0+1812 + .word .LC147 + .word .LANCHOR2-4040 .fnend .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 + .global FtlGcScanTempBlk + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + .fnstart + @ args = 0, pretend = 0, frame = 72 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L3168 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #76 + sub sp, sp, #76 + ldr r3, [r3] + mov r4, r0 + ldr r2, .L3168+4 + str r1, [sp, #12] + str r3, [sp, #68] + movw r3, #3288 + ldrh r5, [r2, r3] + movw r3, #65535 + cmp r5, r3 + beq .L3152 + cmp r5, #0 + bne .L3121 + b .L3122 +.L3152: + mov r5, #0 +.L3121: + ldr r3, .L3168+8 + ldr r2, [sp, #12] + ldrh r3, [r3] + cmp r2, r3 + bne .L3123 +.L3122: + bl FtlGcPageVarInit +.L3123: + ldr r6, .L3168+12 + mvn r3, #0 + str r3, [sp, #8] + mov r3, #0 + str r3, [sp] +.L3124: + ldrh r2, [r4] + mov r3, #0 + strb r3, [r4, #8] + movw r3, #65535 + cmp r2, r3 + beq .L3125 +.L3126: +.L3148: + ldr r3, .L3168+16 + mov r2, #0 + ldr lr, [r6, #-3208] + add r0, r4, #14 + mov r7, r2 + movw r9, #65535 + ldrh r3, [r3] + mov r10, #36 + str r3, [sp, #4] + ldr r3, [r6, #-2076] + str r3, [sp, #16] + ldr r3, [r6, #-3212] + str r3, [sp, #20] + ldr r3, .L3168+20 + ldrh ip, [r3] + ldrh r8, [r3, #2] +.L3127: + ldr r1, [sp, #4] + uxth r3, r2 + cmp r3, r1 + bcs .L3166 + ldrh r3, [r0, #2]! + cmp r3, r9 + beq .L3128 + ldr r1, [sp, #16] + orr r3, r5, r3, asl #10 + mla r1, r10, r7, r1 + str r3, [r1, #4] + mul r3, ip, r7 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + ldr fp, [sp, #20] + bic r3, r3, #3 + add r3, fp, r3 + str r3, [r1, #8] + mul r3, r8, r7 + add r7, r7, #1 + uxth r7, r7 + add fp, r3, #3 + cmp r3, #0 + movlt r3, fp + bic r3, r3, #3 + add r3, lr, r3 + str r3, [r1, #12] +.L3128: + add r2, r2, #1 + b .L3127 +.L3166: + ldr r0, [r6, #-2076] + mov r1, r7 + mov r2, #0 + ldr fp, .L3168+24 + bl FlashReadPages + mov r10, #0 +.L3130: + uxth r3, r10 + cmp r3, r7 + bcs .L3167 + mov r9, #36 + ldr r2, [r6, #-2076] + mul r9, r9, r10 + ldr ip, .L3168+12 + add r3, r2, r9 + ldr r8, [r2, r9] + ldr r1, [r3, #4] + cmp r8, #0 + ldr r3, [r3, #12] + str r1, [sp, #4] + bne .L3131 + ldrh r1, [r3] + movw r2, #65535 + cmp r1, r2 + bne .L3132 +.L3134: + ldr r2, .L3168+12 + ldrh r3, [r4] + ldr r2, [r2, #-4060] + b .L3165 +.L3132: + ldr r0, [r3, #8] + ldr r2, [fp, #1932] + cmp r0, r2 + bhi .L3134 + ldrb r2, [fp] @ zero_extendqisi2 + cmp r2, #0 + beq .L3136 + add r1, sp, #28 + mov r2, r8 + str r3, [sp, #16] + bl log2phys + ldr r3, [sp, #16] + ldr r1, [sp, #28] + ldr r2, [r3, #12] + cmn r1, #1 + rsb r0, r2, r1 + clz r0, r0 + mov r0, r0, lsr #5 + moveq r0, #0 + cmp r0, #0 + beq .L3136 + str r2, [sp, #36] + mov r1, #1 + ldr r2, [r6, #-2044] + add r0, sp, #32 + str r2, [sp, #40] + ldr r2, [r6, #-2036] + str r2, [sp, #44] + mov r2, r8 + bl FlashReadPages + ldr r2, .L3168+28 + ldr r1, [r6, #-2076] + ldrh r2, [r2] + add r9, r1, r9 + mov r2, r2, asl #7 + ldr r1, [sp, #40] + ldr r3, [sp, #16] + b .L3138 +.L3139: + add r8, r8, #1 +.L3138: + cmp r8, r2 + beq .L3136 + ldr r0, [r9, #8] + ldr ip, [r0, r8, asl #2] + ldr r0, [r1, r8, asl #2] + cmp ip, r0 + beq .L3139 + ldr r2, [sp, #36] + ldr r0, .L3168+32 + ldrh r1, [r4] + bl printk + ldrh r3, [r4] + ldr r2, [r6, #-4060] +.L3165: + mov r3, r3, asl #1 + mov r1, #0 + strh r1, [r2, r3] @ movhi + ldrh r0, [r4] + bl INSERT_FREE_LIST + ldr r2, .L3168+36 + mvn r3, #0 + strh r3, [r4] @ movhi + strh r3, [r2] @ movhi + b .L3164 +.L3136: + ldr r0, [r3, #12] + add r10, r10, #1 + ldr r1, [sp, #4] + ldr r2, [r3, #8] + bl FtlGcUpdatePage + b .L3130 +.L3131: + ldr r2, [sp, #4] + ldr r0, .L3168+40 + ldrh r1, [r4] + str ip, [sp, #16] + bl printk + ldr r3, .L3168+24 + ldrh r5, [r4] + ldr r2, [r3, #1796] + cmp r2, #0 + ldr ip, [sp, #16] + bne .L3142 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L3143 +.L3142: + ldr r2, [r3, #4060] + mov r3, r5, asl #1 + ldrh r3, [r2, r3] + cmp r3, #159 + bls .L3144 +.L3143: + ldr r3, [ip, #-2076] + ldr r3, [r3, r9] + cmn r3, #1 + bne .L3145 +.L3144: + ldr r3, [ip, #-2076] + add r9, r3, r9 + ldr r3, [r9, #4] + str r3, [sp, #8] +.L3145: + ldr r3, .L3168+12 + mov r5, r5, asl #1 + mov r2, #0 + ldr r3, [r3, #-4060] + strh r2, [r3, r5] @ movhi + ldrh r0, [r4] + bl INSERT_FREE_LIST + mvn r3, #0 + strh r3, [r4] @ movhi +.L3164: + bl FtlGcPageVarInit + mov r5, #0 + b .L3124 +.L3167: + ldr r3, [sp] + add r5, r5, #1 + ldr r2, [sp, #12] + add r3, r3, #1 + uxth r5, r5 + cmp r3, r2 + str r3, [sp] + ldr r2, .L3168+8 + bcs .L3147 +.L3149: + ldrh r3, [r2] + cmp r3, r5 + bhi .L3148 + b .L3125 +.L3147: + ldr r1, .L3168+44 + movw r0, #65535 + ldrh r3, [r1] + cmp r3, r0 + beq .L3149 + ldr r0, [sp] + add r3, r3, r0 + strh r3, [r1] @ movhi + ldrh r3, [r2] + cmp r3, r5 + bls .L3149 + b .L3150 +.L3125: + ldr r2, .L3168+4 + movw r3, #3288 + mvn r1, #0 + strh r5, [r4, #2] @ movhi + mov r0, r4 + strh r1, [r2, r3] @ movhi + mov r2, #0 + mov r1, r5 + strb r2, [r4, #6] + bl ftl_sb_update_avl_pages +.L3150: + ldr r3, .L3168 + ldr r2, [sp, #68] + ldr r0, [sp, #8] + ldr r3, [r3] + cmp r2, r3 + beq .L3151 + bl __stack_chk_fail +.L3151: + add sp, sp, #76 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3169: + .align 2 +.L3168: + .word __stack_chk_guard + .word .LANCHOR1 + .word .LANCHOR0+1872 + .word .LANCHOR2 + .word .LANCHOR0+1804 + .word .LANCHOR0+1882 + .word .LANCHOR0 + .word .LANCHOR0+1878 + .word .LC148 + .word .LANCHOR2-3800 + .word .LC149 + .word .LANCHOR1+3288 + .fnend + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 2 + .global FtlReadRefresh + .type FtlReadRefresh, %function +FtlReadRefresh: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r5, .L3188 + ldr r7, .L3188+4 + ldr r4, .L3188+8 + ldr r10, [r5, #-3668] + mov r6, r5 + ldr r3, [r7] + cmp r10, #0 + str r3, [sp, #44] + beq .L3171 + ldr r2, [r5, #-3664] + ldr r3, [r4, #1932] + cmp r2, r3 + bcs .L3172 + mov r5, #2048 + mov r8, r6 +.L3177: + ldr r0, [r6, #-3664] + ldr r3, [r4, #1932] + cmp r0, r3 + bcs .L3176 + mov r2, #0 + add r1, sp, #4 + bl log2phys + ldr r3, [r8, #-3664] + add r3, r3, #1 + str r3, [r8, #-3664] + ldr r2, [sp, #4] + cmn r2, #1 + beq .L3175 + add r0, sp, #48 + str r2, [sp, #12] + mov r1, #1 + mov r2, #0 + str r2, [r0, #-40]! + str r3, [sp, #24] + str r2, [sp, #16] + str r2, [sp, #20] + bl FlashReadPages + ldr r3, [sp, #8] + cmp r3, #256 + bne .L3176 + ldr r0, [sp, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L3176: + mvn r0, #0 + b .L3179 +.L3175: + subs r5, r5, #1 + bne .L3177 + b .L3176 +.L3172: + ldr r3, [r5, #-3880] + mov r0, #0 + str r0, [r5, #-3668] + str r0, [r5, #-3664] + str r3, [r5, #-3672] + b .L3179 +.L3171: + ldr r1, [r5, #-3828] + ldr r9, [r5, #-3880] + ldr r3, [r4, #1932] + movw r4, #10000 + ldr r8, [r5, #-3672] + cmp r1, r4 + add r2, r9, #1048576 + ldr fp, .L3188+12 + movhi r4, #31 + movls r4, #63 + cmp r8, r2 + bhi .L3181 + mov r1, r1, lsr #10 + mov r0, #1000 + mul r0, r0, r3 + add r1, r1, #1 + bl __aeabi_uidiv + add r0, r0, r8 + cmp r0, r9 + bcc .L3181 + ldrh r3, [fp, #28] + ands r0, r4, r3 + movne r0, r10 + bne .L3179 + ldr r2, [r5, #-3648] + cmp r2, r3 + beq .L3179 +.L3181: + ldrh r3, [fp, #28] + mov r0, #0 + str r9, [r6, #-3672] + str r0, [r6, #-3664] + str r3, [r6, #-3648] + mov r3, #1 + str r3, [r6, #-3668] +.L3179: + ldr r2, [sp, #44] + ldr r3, [r7] + cmp r2, r3 + beq .L3182 + bl __stack_chk_fail +.L3182: + add sp, sp, #52 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3189: + .align 2 +.L3188: + .word .LANCHOR2 + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR0+4068 + .fnend + .size FtlReadRefresh, .-FtlReadRefresh + .align 2 .global FtlGcFreeTempBlock .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2045 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr} - movw r2, #3916 - ldrh r1, [r3, r2] - ldr r2, [r3, #4040] - cmp r2, #0 - bne .L2043 - ldr ip, .L2045+4 - ldr r3, .L2045+8 - ldrh r4, [r3, ip] - movw ip, #65535 - cmp r4, ip - beq .L2024 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + ldr r9, .L3230 + ldr r2, .L3230+4 + add r6, r9, #1872 + ldr ip, [r9, #4052] + ldr r3, [r2] + cmp ip, #0 + ldrh r1, [r6] + str r2, [sp, #4] + str r3, [sp, #20] + bne .L3228 + ldr r5, .L3230+8 + mov r4, r9 + movw lr, #65535 + add r8, r5, #3936 + ldrh r9, [r5, #-8] + cmp r9, lr + bne .L3193 +.L3202: + ldrh r2, [r5, #-8] + movw r3, #65535 + ldr r9, .L3230+12 + mov r7, #0 + cmp r2, r3 + str r7, [r8, #-1912] + sub r10, r9, #3936 + beq .L3228 + bl FtlCacheWriteBack + ldrh r2, [r6] + ldrb r0, [r9, #-3937] @ zero_extendqisi2 + sub r6, r9, #3184 + ldrh r3, [r10, #-8] + sub r10, r6, #760 + ldr r1, [r9, #-4060] + smulbb r2, r0, r2 + mov r3, r3, asl #1 + strh r2, [r1, r3] @ movhi + ldr r2, [r9, #-3860] + ldrh r3, [r6] + add r3, r3, r2 + str r3, [r9, #-3860] + str r9, [sp, #8] + b .L3203 +.L3193: cmp r0, #0 - beq .L2025 - ldr lr, .L2045+12 - movw r0, #3096 - ldrh r5, [lr, r0] - cmp r5, ip - movne r1, #2 - bne .L2025 - strh r2, [lr, r0] @ movhi - sub r2, r2, #2000 - ldrh r3, [r3, r2] + beq .L3196 + ldr r2, .L3230+16 + movw r3, #3288 + ldrh r0, [r2, r3] + cmp r0, lr + beq .L3197 +.L3198: + mov r1, #2 + b .L3196 +.L3197: + strh ip, [r2, r3] @ movhi + sub r3, r8, #4032 + ldrh r3, [r3, #-12] cmp r3, #17 - movhi r1, #2 -.L2025: - ldr r0, .L2045+16 + bhi .L3198 +.L3196: + ldr r0, .L3230+20 bl FtlGcScanTempBlk cmn r0, #1 - str r0, [sp, #4] - beq .L2026 - ldr r3, .L2045 - mov r4, r4, asl #1 - ldr r3, [r3, #4048] - ldrh r2, [r3, r4] - cmp r2, #4 - bls .L2027 - sub r2, r2, #5 + str r0, [sp, #16] + beq .L3199 + ldr r2, [r4, #4060] + mov r9, r9, asl #1 + ldrh r3, [r2, r9] + cmp r3, #4 + bls .L3200 + sub r3, r3, #5 mov r0, #1 - strh r2, [r3, r4] @ movhi + strh r3, [r2, r9] @ movhi bl FtlEctTblFlush -.L2027: - ldr r3, .L2045+8 - ldr r2, [r3, #-1008] - cmp r2, #0 - bne .L2028 - ldr r2, [r3, #-1612] - ldr r0, [sp, #4] - add r2, r2, #1 - str r2, [r3, #-1612] +.L3200: + ldr r3, [r8, #-1912] + ldr r2, .L3230+12 + cmp r3, #0 + bne .L3201 + ldr r0, [sp, #16] + ldr r3, [r2, #-3652] ubfx r0, r0, #10, #16 + add r3, r3, #1 + str r3, [r2, #-3652] bl FtlBbmMapBadBlock bl FtlBbmTblFlush -.L2028: - ldr r3, .L2045+8 - mov r2, #0 - str r2, [r3, #-1008] - b .L2040 -.L2026: - ldr r2, .L2045+12 - movw r3, #3096 +.L3201: + mov r3, #0 + str r3, [r8, #-1912] + b .L3214 +.L3199: + ldr r2, .L3230+16 + movw r3, #3288 ldrh r2, [r2, r3] movw r3, #65535 cmp r2, r3 - bne .L2040 -.L2024: - ldr r6, .L2045+8 - movw r3, #65535 - ldr r5, .L2045+4 - mov r4, #0 - str r4, [r6, #-1008] - ldrh r2, [r6, r5] - cmp r2, r3 - beq .L2023 - bl FtlCacheWriteBack - ldr ip, .L2045 - movw r0, #3916 - ldrb r1, [r6, #-1893] @ zero_extendqisi2 - ldrh r3, [r6, r5] - ldrh r0, [ip, r0] - ldr r2, [r6, #-2016] - ldr sl, .L2045+20 - mov r3, r3, asl #1 - mul r1, r0, r1 - strh r1, [r2, r3] @ movhi - ldr r3, [r6, #-1816] - ldrh r2, [r6, sl] - add r3, r2, r3 - str r3, [r6, #-1816] - b .L2029 -.L2032: - mov r7, #12 - ldr r8, [r6, #-1148] - mul r7, r7, r4 - add r1, sp, #4 - mov r2, #0 - add r5, r8, r7 - ldr r0, [r5, #8] - bl log2phys - ldr r0, [sp, #4] - ldr r3, [r8, r7] + bne .L3214 + b .L3202 +.L3206: + ldr r3, [fp, #4] cmp r0, r3 - bne .L2030 + bne .L3226 +.L3205: + add r7, r7, #1 +.L3203: + ldrh r3, [r6] + uxth r9, r7 + cmp r3, r9 + bls .L3229 + mov r3, #12 + ldr r2, [r4, #1932] + mul r9, r3, r9 + ldr r3, [sp, #8] + ldr ip, [r3, #-3188] + add fp, ip, r9 + ldr r0, [fp, #8] + cmp r0, r2 + bcs .L3226 + mov r2, #0 + add r1, sp, #16 + str ip, [sp, #12] + bl log2phys + ldr ip, [sp, #12] + ldr r0, [sp, #16] + ldr r2, [ip, r9] + cmp r0, r2 + bne .L3206 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - add r1, r5, #4 + add r1, fp, #4 mov r2, #1 - mov r7, r0 - ldr r0, [r5, #8] + mov r9, r0 + ldr r0, [fp, #8] bl log2phys - mov r0, r7 - b .L2044 -.L2030: - ldr r3, [r5, #4] - cmp r0, r3 - beq .L2031 - ldr r3, .L2045+4 - ldrh r0, [r6, r3] -.L2044: + mov r0, r9 + b .L3227 +.L3226: + ldrh r0, [r10] +.L3227: bl decrement_vpc_count -.L2031: - add r4, r4, #1 - uxth r4, r4 -.L2029: - ldrh r3, [r6, sl] - ldr r5, .L2045+8 - cmp r3, r4 - bhi .L2032 + b .L3205 +.L3229: movw r0, #65535 - ldr r4, .L2045+4 bl decrement_vpc_count - ldr r3, .L2045 - ldrb r3, [r3, #928] @ zero_extendqisi2 + ldrb r3, [r4, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L2033 - ldr r0, .L2045+24 - ldrh r1, [r5, r4] + beq .L3208 + ldr r0, .L3230+24 + ldrh r1, [r5, #-8] bl printk -.L2033: - ldrh r0, [r5, r4] - ldr r2, [r5, #-2016] +.L3208: + ldrh r0, [r5, #-8] + ldr r2, [r8, #-4060] mov r3, r0, asl #1 ldrh r3, [r2, r3] cmp r3, #0 - beq .L2034 + beq .L3209 bl INSERT_DATA_LIST - b .L2035 -.L2034: + b .L3210 +.L3209: bl INSERT_FREE_LIST -.L2035: - ldr r5, .L2045+8 - mvn r6, #0 - ldr r3, .L2045+4 - mov r4, #0 - strh r6, [r5, r3] @ movhi - add r3, r3, #756 - strh r4, [r5, r3] @ movhi - sub r3, r3, #12 - strh r4, [r5, r3] @ movhi +.L3210: + ldr r7, .L3230+12 + mvn r8, #0 + strh r8, [r5, #-8] @ movhi + mov r5, #0 + strh r5, [r6] @ movhi + strh r5, [r6, #-8] @ movhi bl l2p_flush bl FtlVpcTblFlush - ldr r3, .L2045+28 - mov r2, r5 - strh r6, [r5, r3] @ movhi - ldr r3, .L2045 - ldr r3, [r3, #3840] - cmp r3, r4 - beq .L2036 - ldr r3, [r5, #-1780] - cmp r3, #39 - bhi .L2036 - ldr r3, .L2045+32 - ldr r2, .L2045+36 - ldrh r3, [r5, r3] - ldrh r2, [r5, r2] + sub r3, r7, #3792 + sub r2, r7, #4032 + strh r8, [r3, #-8] @ movhi + ldr r3, [r4, #1796] + ldrh r2, [r2, #-12] + cmp r3, r5 + sub r3, r7, #3808 + ldrh r3, [r3, #-12] + beq .L3211 + ldr r1, [r7, #-3824] + cmp r1, #39 + bhi .L3211 cmp r2, r3 - ldrcc r2, .L2045+40 + subcc r7, r7, #3232 movcc r3, r3, asl #1 - strcch r3, [r5, r2] @ movhi - b .L2023 -.L2036: - ldr r3, .L2045+32 - ldr r0, .L2045+36 - ldr r1, .L2045+8 - ldrh r3, [r2, r3] - ldrh r2, [r2, r0] - add r0, r3, r3, asl #1 - cmp r2, r0, lsr #2 - ble .L2043 - ldr r2, .L2045 - ldrb r4, [r2, #928] @ zero_extendqisi2 - ldr r2, .L2045+40 - cmp r4, #0 - subne r3, r3, #2 + strcch r3, [r7, #-4] @ movhi + b .L3228 +.L3211: + add r1, r3, r3, asl #1 + cmp r2, r1, asr #2 + ble .L3228 + ldrb r0, [r4, #140] @ zero_extendqisi2 + ldr r2, .L3230+28 + cmp r0, #0 moveq r3, #20 - strneh r3, [r1, r2] @ movhi - streqh r3, [r1, r2] @ movhi - beq .L2023 - b .L2043 -.L2040: - mov r4, #1 - b .L2023 -.L2043: - mov r4, #0 -.L2023: - mov r0, r4 - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, sl, pc} -.L2046: + streqh r3, [r2, #-4] @ movhi + beq .L3192 + sub r3, r3, #2 + strh r3, [r2, #-4] @ movhi +.L3228: + mov r0, #0 + b .L3192 +.L3214: + mov r0, #1 +.L3192: + ldr r3, [sp, #4] + ldr r2, [sp, #20] + ldr r3, [r3] + cmp r2, r3 + beq .L3213 + bl __stack_chk_fail +.L3213: + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3231: .align 2 -.L2045: +.L3230: .word .LANCHOR0 - .word -1900 + .word __stack_chk_guard + .word .LANCHOR2-3936 .word .LANCHOR2 .word .LANCHOR1 - .word .LANCHOR2-1900 - .word -1144 - .word .LC147 - .word -1760 - .word -1776 - .word -2000 - .word -1196 + .word .LANCHOR2-3944 + .word .LC150 + .word .LANCHOR2-3232 .fnend .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 - .type Ftl_gc_temp_data_write_back.part.21, %function -Ftl_gc_temp_data_write_back.part.21: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r2, #0 - ldr r4, .L2053 - mov r3, r2 - mov r5, #0 - mov r6, #36 - ldr r0, [r4, #-964] - ldr r1, [r4, #-1180] - bl FlashProgPages - b .L2048 -.L2051: - mul r3, r6, r5 - ldr r1, [r4, #-964] - add r2, r1, r3 - ldr r1, [r1, r3] - cmn r1, #1 - bne .L2049 - ldr r2, .L2053+4 - mov lr, #0 - ldr ip, [r7, #-2016] - ldrh r0, [r7, r2] - mov r0, r0, asl #1 - strh lr, [ip, r0] @ movhi - strh r1, [r7, r2] @ movhi - ldr r2, [r7, #-1612] - add r2, r2, #1 - str r2, [r7, #-1612] - ldr r2, [r7, #-964] - add r3, r2, r3 - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - bl FtlGcPageVarInit - mov r0, #1 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2049: - ldr r3, [r2, #12] - add r5, r5, #1 - ldr r1, [r2, #4] - uxth r5, r5 - ldr r0, [r3, #12] - ldr r2, [r3, #8] - bl FtlGcUpdatePage -.L2048: - ldr r1, [r4, #-1180] - ldr r7, .L2053 - cmp r5, r1 - bcc .L2051 - ldr r0, [r7, #-964] - bl FtlGcBufFree - ldr r3, .L2053+8 - mov r0, #0 - str r0, [r7, #-1180] - ldrh r3, [r7, r3] - cmp r3, r0 - ldmnefd sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #1 - bl FtlGcFreeTempBlock - mov r0, #1 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2054: - .align 2 -.L2053: - .word .LANCHOR2 - .word -1900 - .word -1896 - .fnend - .size Ftl_gc_temp_data_write_back.part.21, .-Ftl_gc_temp_data_write_back.part.21 - .align 2 - .global Ftl_gc_temp_data_write_back - .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 - @ link register save eliminated. - ldr r3, .L2060 - ldr r2, [r3, #4040] - cmp r2, #0 - bne .L2056 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2057 - ldr r3, .L2060+4 - ldr r2, [r3, #-1180] - tst r2, #1 - beq .L2057 - ldr r2, .L2060+8 - ldrh r3, [r3, r2] - cmp r3, #0 - bne .L2056 -.L2057: - b Ftl_gc_temp_data_write_back.part.21 -.L2056: - mov r0, #0 - bx lr -.L2061: - .align 2 -.L2060: - .word .LANCHOR0 - .word .LANCHOR2 - .word -1896 - .fnend - .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back - .align 2 .global FtlGcPageRecovery .type FtlGcPageRecovery, %function FtlGcPageRecovery: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movw r5, #3916 - ldr r6, .L2064 - ldr r0, .L2064+4 - ldr r4, .L2064+8 - ldrh r1, [r6, r5] + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + ldr r5, .L3235 + ldr r4, .L3235+4 + mov r0, r5 + ldrh r1, [r4] bl FtlGcScanTempBlk - ldr r3, .L2064+12 - ldrh r2, [r4, r3] - ldrh r3, [r6, r5] + ldrh r2, [r5, #2] + ldrh r3, [r4] cmp r2, r3 - ldmccfd sp!, {r4, r5, r6, pc} - ldr r0, .L2064+16 + ldmccfd sp!, {r3, r4, r5, pc} + ldr r0, .L3235+8 bl FtlMapBlkWriteDumpData mov r0, #0 bl FtlGcFreeTempBlock - mov r3, #0 - str r3, [r4, #-1008] - ldmfd sp!, {r4, r5, r6, pc} -.L2065: + ldr r3, .L3235+12 + mov r2, #0 + str r2, [r3, #-1912] + ldmfd sp!, {r3, r4, r5, pc} +.L3236: .align 2 -.L2064: - .word .LANCHOR0 - .word .LANCHOR2-1900 +.L3235: + .word .LANCHOR2-3944 + .word .LANCHOR0+1872 + .word .LANCHOR2-1972 .word .LANCHOR2 - .word -1898 - .word .LANCHOR2-1084 .fnend .size FtlGcPageRecovery, .-FtlGcPageRecovery .align 2 @@ -18150,31 +19480,34 @@ FtlPowerLostRecovery: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, #0 - ldr r3, .L2067 - ldr r5, .L2067+4 - str r4, [r3, #304] + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r6, #0 + ldr r4, .L3239 + ldr r3, .L3239+4 + sub r5, r4, #4032 + sub r4, r4, #3984 + sub r5, r5, #8 + sub r4, r4, #8 + str r6, [r3, #312] mov r0, r5 bl FtlRecoverySuperblock mov r0, r5 - add r5, r5, #48 bl FtlSlcSuperblockCheck - mov r0, r5 + mov r0, r4 bl FtlRecoverySuperblock - mov r0, r5 + mov r0, r4 bl FtlSlcSuperblockCheck bl FtlGcPageRecovery movw r0, #65535 bl decrement_vpc_count - mov r0, r4 - ldmfd sp!, {r3, r4, r5, pc} -.L2068: + mov r0, r6 + ldmfd sp!, {r4, r5, r6, pc} +.L3240: .align 2 -.L2067: +.L3239: .word .LANCHOR2 - .word .LANCHOR2-1996 + .word .LANCHOR4 .fnend .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .align 2 @@ -18184,28 +19517,33 @@ FtlSysBlkInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - mov r3, #300 - ldr r6, .L2082 + stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + .save {r3, r4, r5, r6, r7, r8, r9, lr} + movw r3, #310 + ldr r7, .L3259 mov r2, #0 - ldr r4, .L2082+4 - mvn r5, #0 - ldr r0, [r6, #3852] - strh r2, [r4, r3] @ movhi - movw r3, #298 - strh r5, [r4, r3] @ movhi - uxth r0, r0 + ldr r6, .L3259+4 + ldr r4, .L3259+8 + strh r2, [r7, r3] @ movhi + add r3, r7, #308 + mvn r2, #0 + strh r2, [r3] @ movhi + ldr r3, [r6, #1808] + uxth r0, r3 bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldr r3, .L2082+8 - ldrh r2, [r4, r3] + sub r3, r4, #3808 + ldrh r2, [r3, #-8] movw r3, #65535 cmp r2, r3 - beq .L2070 + bne .L3242 +.L3244: + mvn r8, #0 + b .L3243 +.L3242: bl FtlLoadSysInfo - subs r7, r0, #0 - bne .L2070 + subs r8, r0, #0 + bne .L3244 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -18215,499 +19553,673 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov r0, #1 bl FtlUpdateVaildLpn - movw r3, #3954 + ldr r2, [r4, #-3896] + movw r3, #1910 + mov r0, #12 ldrh r1, [r6, r3] - mov r2, r7 - ldr r3, [r4, #-1852] - b .L2071 -.L2073: - add r0, r3, r7 - add r7, r7, #12 - ldr r0, [r0, #4] - cmp r0, #0 - blt .L2072 + mov r3, r8 +.L3245: + cmp r3, r1 + bge .L3250 + mla ip, r0, r3, r2 + ldr ip, [ip, #4] + cmp ip, #0 + bge .L3246 +.L3250: + ldr r5, .L3259+12 + cmp r3, r1 + ldr r9, .L3259+16 + ldrh r2, [r5, #28] add r2, r2, #1 -.L2071: - cmp r2, r1 - blt .L2073 -.L2072: - ldr r3, .L2082+4 - cmp r2, r1 - ldr r0, .L2082+12 - ldrh ip, [r3, r0] - add ip, ip, #1 - strh ip, [r3, r0] @ movhi - blt .L2074 - mov r2, #300 - ldrh r2, [r3, r2] - cmp r2, #0 - beq .L2075 -.L2074: - ldr r2, .L2082+16 - ldr r0, [r3, #-2016] - ldr r1, .L2082+20 - ldrh r2, [r3, r2] - ldrh ip, [r3, r1] + strh r2, [r5, #28] @ movhi + sub r2, r9, #8 + bge .L3257 + b .L3247 +.L3246: + add r3, r3, #1 + b .L3245 +.L3257: + movw r3, #310 + ldrh r3, [r7, r3] + cmp r3, #0 + beq .L3251 +.L3247: + ldrh r3, [r9, #-8] + ldr r0, [r4, #-4060] + ldrh ip, [r2, #4] + mov r3, r3, asl #1 + ldrh r1, [r0, r3] + rsb r1, ip, r1 + ldr ip, .L3259+20 + strh r1, [r0, r3] @ movhi + ldr lr, [r4, #-4060] + ldrh r3, [ip] + strh r3, [r2, #2] @ movhi + mov r3, #0 + strh r3, [r2, #4] @ movhi + ldr r2, .L3259+24 + strb r3, [r4, #-4034] + sub r1, r2, #8 + ldrh r2, [r2, #-8] + ldrh r7, [r1, #4] mov r2, r2, asl #1 - ldrh lr, [r0, r2] - rsb ip, ip, lr - strh ip, [r0, r2] @ movhi - ldr ip, .L2082 - movw r0, #3916 - ldr r2, .L2082+24 - ldr r4, [r3, #-2016] - ldrh lr, [ip, r0] - strh lr, [r3, r2] @ movhi - mov r2, #0 - strh r2, [r3, r1] @ movhi - add r1, r1, #44 - strb r2, [r3, #-1990] - ldrh lr, [r3, r1] - add r1, r1, #4 - ldrh r5, [r3, r1] - mov lr, lr, asl #1 - ldrh r6, [r4, lr] - rsb r5, r5, r6 - strh r5, [r4, lr] @ movhi - strh r2, [r3, r1] @ movhi - strb r2, [r3, #-1942] - ldr r2, .L2082+28 - ldrh ip, [ip, r0] - ldr r0, .L2082+32 - ldrh r1, [r3, r2] - strh ip, [r3, r0] @ movhi - add r1, r1, #1 - strh r1, [r3, r2] @ movhi + ldrh r0, [lr, r2] + rsb r0, r7, r0 + strh r0, [lr, r2] @ movhi + ldrh r2, [ip] + strh r3, [r1, #4] @ movhi + strb r3, [r4, #-3986] + ldrh r3, [r5, #30] + strh r2, [r1, #2] @ movhi + add r3, r3, #1 + strh r3, [r5, #30] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L2075: - ldr r3, .L2082+4 - ldr r2, .L2082+12 - mov r5, r3 - ldrh r2, [r3, r2] - tst r2, #31 - bne .L2076 - bl FtlVpcCheckAndModify -.L2076: - ldr r2, .L2082+16 +.L3251: + ldrh r0, [r9, #-8] movw r3, #65535 - ldr r4, .L2082+4 - ldrh r0, [r5, r2] + ldr r4, .L3259+28 cmp r0, r3 - beq .L2080 - ldr r3, .L2082+20 - ldrh r3, [r4, r3] + beq .L3252 + ldrh r3, [r4, #4] cmp r3, #0 - bne .L2080 - add r2, r2, #52 - ldrh r5, [r4, r2] - cmp r5, #0 - movne r5, r3 - bne .L2070 + bne .L3252 + ldrh r3, [r4, #52] + add r9, r4, #56 + add r7, r4, #48 + cmp r3, #0 + bne .L3252 bl FtlGcRefreshOpenBlock - ldr r3, .L2082+36 - ldrh r0, [r4, r3] + ldrh r0, [r4, #48] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush - ldr r0, .L2082+40 + mov r0, r4 bl allocate_new_data_superblock - ldr r0, .L2082+44 + mov r0, r7 bl allocate_new_data_superblock - b .L2070 -.L2080: - mov r5, #0 -.L2070: - mov r0, r5 - ldmfd sp!, {r3, r4, r5, r6, r7, pc} -.L2083: +.L3252: + ldrb r3, [r6] @ zero_extendqisi2 + cmp r3, #0 + bne .L3253 + ldrh r3, [r5, #28] + tst r3, #31 + bne .L3243 +.L3253: + bl FtlVpcCheckAndModify +.L3243: + mov r0, r8 + ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, pc} +.L3260: .align 2 -.L2082: +.L3259: + .word .LANCHOR4 .word .LANCHOR0 .word .LANCHOR2 - .word -1772 - .word -2044 - .word -1996 - .word -1992 - .word -1994 - .word -2042 - .word -1946 - .word -1948 - .word .LANCHOR2-1996 - .word .LANCHOR2-1948 + .word .LANCHOR0+4068 + .word .LANCHOR2-4032 + .word .LANCHOR0+1872 + .word .LANCHOR2-3984 + .word .LANCHOR2-4040 .fnend .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 - .type FtlLowFormat.part.25, %function -FtlLowFormat.part.25: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r6, #3952 - ldr r5, .L2105 - mov r1, #0 - ldr r4, .L2105+4 - ldrh r2, [r5, r6] - ldr r0, [r4, #-896] - mov r2, r2, asl #2 - bl ftl_memset - ldrh r2, [r5, r6] - mov r1, #0 - ldr r0, [r4, #-1028] - mov r2, r2, asl #2 - bl ftl_memset - ldr r0, [r5, #3852] - mov r3, #0 - str r3, [r4, #-1804] - str r3, [r4, #-1800] - uxth r0, r0 - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt - cmp r0, #0 - beq .L2085 - bl FtlMakeBbt -.L2085: - mov r3, #0 - ldr ip, .L2105 - movw r0, #3922 - ldr r2, .L2105+4 - ldr r1, .L2105+8 - b .L2086 -.L2087: - ldr lr, [r2, #-940] - mvn r4, r3 - orr r4, r3, r4, asl #16 - str r4, [lr, r3, asl #2] - ldr lr, [r2, #-936] - str r1, [lr, r3, asl #2] - add r3, r3, #1 - uxth r3, r3 -.L2086: - ldrh lr, [ip, r0] - ldr r8, .L2105 - cmp r3, lr, asl #7 - blt .L2087 - mov r3, #3856 - mov r5, #0 - ldrh r6, [r8, r3] - movw r7, #3858 - b .L2088 -.L2089: - mov r0, r6 - mov r1, #1 - bl FtlLowFormatEraseBlock - add r6, r6, #1 - uxth r6, r6 - add r5, r5, r0 - uxth r5, r5 -.L2088: - ldrh r3, [r8, r7] - ldr r4, .L2105 - cmp r3, r6 - bhi .L2089 - movw r3, #3848 - ldrh r1, [r4, r3] - sub r3, r5, #3 - cmp r3, r1, asl #1 - blt .L2090 - mov r0, r5 - movw r6, #3858 - bl __aeabi_uidiv - ldr r3, [r4, #3948] - add r0, r0, r3 - uxth r0, r0 - bl FtlSysBlkNumInit - ldr r0, [r4, #3852] - uxth r0, r0 - bl FtlFreeSysBlkQueueInit - mov r3, #3856 - ldrh r5, [r4, r3] - b .L2091 -.L2092: - mov r0, r5 - mov r1, #1 - bl FtlLowFormatEraseBlock - add r5, r5, #1 - uxth r5, r5 -.L2091: - ldrh r3, [r4, r6] - cmp r3, r5 - bhi .L2092 -.L2090: - mov r4, #0 - ldr r8, .L2105 - mov r6, r4 - mov r7, #3856 - b .L2093 -.L2094: - mov r0, r6 - mov r1, #0 - bl FtlLowFormatEraseBlock - add r6, r6, #1 - uxth r6, r6 - add r4, r4, r0 - uxth r4, r4 -.L2093: - ldrh r3, [r8, r7] - ldr r5, .L2105 - cmp r3, r6 - bhi .L2094 - movw r3, #3858 - ldr r8, .L2105+4 - ldrh r3, [r5, r3] - ldr fp, [r5, #3860] - ldr r9, .L2105+12 - str r3, [r8, #-980] - movw r3, #3848 - ldrh r6, [r5, r3] - mov r0, fp - mov r1, r6 - bl __aeabi_uidiv - ubfx sl, r0, #5, #16 - mov r7, r0 - add r3, sl, #36 - strh r3, [r8, r9] @ movhi - mov r3, #24 - str r0, [r5, #3976] - mul r3, r3, r6 - cmp r4, r3 - ble .L2095 - rsb r0, r4, fp - mov r1, r6 - bl __aeabi_uidiv - str r0, [r5, #3976] - mov r0, r0, lsr #5 - add r0, r0, #24 - strh r0, [r8, r9] @ movhi -.L2095: - ldr r3, .L2105 - ldr r3, [r3, #3840] - cmp r3, #1 - bne .L2096 - mov r0, r4 - mov r1, r6 - bl __aeabi_uidiv - ldr r8, .L2105+4 - ldr r5, .L2105+12 - ldrh r9, [r8, r5] - uxtah r0, r9, r0 - add r9, r9, r0, lsr #2 - strh r9, [r8, r5] @ movhi -.L2096: - ldr r3, .L2105 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2097 - mov r0, r4 - mov r1, r6 - bl __aeabi_uidiv - ldr r8, .L2105+4 - ldr r5, .L2105+12 - ldrh r9, [r8, r5] - uxtah r0, r9, r0 - add r9, r9, r0, lsr #2 - strh r9, [r8, r5] @ movhi -.L2097: - ldr r0, .L2105 - movw r3, #3908 - ldrh r3, [r0, r3] - cmp r3, #0 - beq .L2098 - ldr r1, .L2105+4 - ldr r2, .L2105+12 - ldrh ip, [r1, r2] - add ip, ip, r3, lsr #1 - strh ip, [r1, r2] @ movhi - mul ip, r6, r3 - cmp ip, r4 - strgt r7, [r0, #3976] - addgt r3, r3, #32 - addgt sl, sl, r3 - strgth sl, [r1, r2] @ movhi -.L2098: - ldr r4, .L2105+4 - ldr r5, .L2105 - ldr r3, .L2105+12 - ldr r7, .L2105+16 - ldr r2, [r5, #3976] - ldrh r3, [r4, r3] - rsb r3, r3, r2 - mul r6, r6, r3 - movw r3, #3916 - ldrh r3, [r5, r3] - str r6, [r4, #220] - mul r6, r3, r6 - movw r3, #3922 - ldrh r3, [r5, r3] - str r6, [r5, #3976] - mul r6, r3, r6 - str r6, [r5, #3956] - mvn r6, #0 - bl FtlBbmTblFlush - movw r3, #3858 - ldrh r2, [r5, r3] - mov r1, #0 - ldr r0, [r4, #-2016] - mov r2, r2, asl #1 - bl ftl_memset - ldr r1, .L2105+20 - mov r3, #0 - ldr r2, .L2105+24 - str r3, [r4, #-1844] - strh r3, [r4, r1] @ movhi - sub r1, r1, #236 - strb r3, [r4, #-1754] - strh r3, [r4, r1] @ movhi - mov r1, #255 - strb r3, [r4, #-1752] - strb r3, [r4, #-1990] - strh r3, [r4, r7] @ movhi - mov r3, #1 - strb r3, [r4, #-1988] - mov r3, #3856 - strh r6, [r4, r2] @ movhi - ldrh r2, [r5, r3] - ldr r0, [r4, #-1840] - mov r2, r2, lsr #3 - bl ftl_memset -.L2099: - ldr r0, .L2105+28 - bl make_superblock - ldrb r3, [r4, #-1989] @ zero_extendqisi2 - ldr r5, .L2105+4 - cmp r3, #0 - ldr r3, .L2105+16 - bne .L2100 - ldrh r3, [r4, r7] - ldr r2, [r4, #-2016] - mov r3, r3, asl #1 - strh r6, [r2, r3] @ movhi - ldrh r3, [r4, r7] - add r3, r3, #1 - strh r3, [r4, r7] @ movhi - b .L2099 -.L2100: - ldr r2, [r5, #-1804] - mvn r7, #0 - ldr r1, [r5, #-2016] - ldr r6, .L2105+32 - str r2, [r5, #-1984] - add r2, r2, #1 - str r2, [r5, #-1804] - ldr r2, .L2105+36 - ldrh r0, [r5, r2] - ldrh r2, [r5, r3] - mov r2, r2, asl #1 - strh r0, [r1, r2] @ movhi - mov r2, #0 - ldr r0, .L2105+40 - ldrh r3, [r5, r3] - strb r2, [r5, #-1942] - add r3, r3, #1 - strh r2, [r5, r0] @ movhi - strh r3, [r5, r6] @ movhi - mov r3, #1 - strb r3, [r5, #-1940] -.L2101: - ldr r0, .L2105+44 - bl make_superblock - ldrb r3, [r5, #-1941] @ zero_extendqisi2 - ldr r4, .L2105+4 - cmp r3, #0 - bne .L2102 - ldrh r3, [r5, r6] - ldr r2, [r5, #-2016] - mov r3, r3, asl #1 - strh r7, [r2, r3] @ movhi - ldrh r3, [r5, r6] - add r3, r3, #1 - strh r3, [r5, r6] @ movhi - b .L2101 -.L2102: - ldr r3, [r4, #-1804] - mvn r5, #0 - ldr r2, [r4, #-2016] - str r3, [r4, #-1936] - add r3, r3, #1 - str r3, [r4, #-1804] - ldr r3, .L2105+48 - ldrh r1, [r4, r3] - sub r3, r3, #4 - ldrh r3, [r4, r3] - mov r3, r3, asl #1 - strh r1, [r2, r3] @ movhi - ldr r3, .L2105+52 - strh r5, [r4, r3] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, .L2105+56 - mov r2, #0 - strh r0, [r4, r3] @ movhi - add r3, r3, #2 - strh r2, [r4, r3] @ movhi - add r3, r3, #2 - ldr r2, [r4, #220] - strh r5, [r4, r3] @ movhi - add r3, r3, #2 - strh r2, [r4, r3] @ movhi - ldr r3, [r4, #-1804] - str r3, [r4, #-1764] - add r3, r3, #1 - str r3, [r4, #-1804] - bl FtlVpcTblFlush - bl FtlSysBlkInit - cmp r0, #0 - ldmnefd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - ldr r3, .L2105+60 - mov r2, #1 - str r2, [r3, #3092] - ldmfd sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2106: - .align 2 -.L2105: - .word .LANCHOR0 - .word .LANCHOR2 - .word 168778952 - .word -1776 - .word -1996 - .word -1758 - .word -1760 - .word .LANCHOR2-1996 - .word -1948 - .word -1992 - .word -1946 - .word .LANCHOR2-1948 - .word -1944 - .word -1900 - .word -1772 - .word .LANCHOR1 - .fnend - .size FtlLowFormat.part.25, .-FtlLowFormat.part.25 - .align 2 .global FtlLowFormat .type FtlLowFormat, %function FtlLowFormat: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - ldr r3, .L2109 - ldr r3, [r3, #4040] + stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + ldr r5, .L3296 + ldr r6, [r5, #4052] + cmp r6, #0 + bne .L3263 + movw r7, #1908 + ldr r4, .L3296+4 + ldrh r2, [r5, r7] + mov r1, r6 + ldr r0, [r4, #-1988] + mov r2, r2, asl #2 + bl ftl_memset + ldrh r2, [r5, r7] + mov r1, r6 + ldr r0, [r4, #-1992] + mov r2, r2, asl #2 + bl ftl_memset + ldr r3, [r5, #1808] + str r6, [r4, #-3848] + str r6, [r4, #-3844] + uxth r0, r3 + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cmp r0, #0 + beq .L3264 + bl FtlMakeBbt +.L3264: + ldr r0, .L3296+8 + mov r2, #0 + ldr ip, .L3296+12 +.L3265: + ldrh r1, [r0] + uxth r3, r2 + add r2, r2, #1 + cmp r3, r1, asl #7 + bge .L3293 + ldr lr, [r4, #-2048] + mvn r1, r3 + orr r1, r3, r1, asl #16 + str r1, [lr, r3, asl #2] + ldr r1, [r4, #-2044] + str ip, [r1, r3, asl #2] + b .L3265 +.L3293: + ldr r2, .L3296 + movw r3, #1812 + ldr r10, .L3296+16 + mov r6, #0 + ldrh r7, [r2, r3] +.L3267: + ldrh r3, [r10] + ldr r8, .L3296 + cmp r3, r7 + ldr r9, .L3296+16 + bls .L3294 + mov r0, r7 + mov r1, #1 + bl FtlLowFormatEraseBlock + add r7, r7, #1 + uxth r7, r7 + add r0, r6, r0 + uxth r6, r0 + b .L3267 +.L3294: + movw r3, #1804 + ldrh r1, [r8, r3] + sub r3, r6, #3 + cmp r3, r1, asl #1 + bge .L3269 +.L3273: + mov r6, #0 + ldr r7, .L3296+20 + mov r8, r6 + b .L3270 +.L3269: + mov r0, r6 + bl __aeabi_uidiv + ldr r3, [r8, #1904] + add r0, r0, r3 + uxth r0, r0 + bl FtlSysBlkNumInit + ldr r3, [r8, #1808] + uxth r0, r3 + bl FtlFreeSysBlkQueueInit + movw r3, #1812 + ldrh r6, [r8, r3] +.L3271: + ldrh r3, [r9] + cmp r3, r6 + bls .L3273 + mov r0, r6 + add r6, r6, #1 + mov r1, #1 + bl FtlLowFormatEraseBlock + uxth r6, r6 + b .L3271 +.L3270: + ldrh r3, [r7] + uxth r0, r6 + ldr fp, .L3296 + add r6, r6, #1 + cmp r3, r0 + bls .L3295 + mov r1, #0 + bl FtlLowFormatEraseBlock + add r0, r8, r0 + uxth r8, r0 + b .L3270 +.L3295: + movw r3, #1814 + ldr r2, [fp, #1816] + ldrh r3, [fp, r3] + ldr r6, .L3296+24 + mov r0, r2 + str r2, [sp, #4] + str r3, [r4, #-2088] + movw r3, #1804 + ldrh r7, [fp, r3] + mov r1, r7 + bl __aeabi_uidiv + ubfx r9, r0, #5, #16 + mov r10, r0 + add r3, r9, #36 + strh r3, [r6, #-12] @ movhi + mov r3, #24 + str r0, [fp, #1932] + mul r3, r3, r7 + ldr r2, [sp, #4] + cmp r8, r3 + ble .L3275 + rsb r0, r8, r2 + mov r1, r7 + bl __aeabi_uidiv + str r0, [fp, #1932] + mov r0, r0, lsr #5 + add r0, r0, #24 + strh r0, [r6, #-12] @ movhi +.L3275: + ldr r3, [r5, #1796] + cmp r3, #1 + bne .L3276 + mov r0, r8 + mov r1, r7 + bl __aeabi_uidiv + ldrh fp, [r6, #-12] + uxtah r0, fp, r0 + add fp, fp, r0, asr #2 + strh fp, [r6, #-12] @ movhi +.L3276: + ldrb r3, [r5, #140] @ zero_extendqisi2 cmp r3, #0 - bne .L2108 - bl FtlLowFormat.part.25 -.L2108: + beq .L3277 + mov r0, r8 + mov r1, r7 + bl __aeabi_uidiv + ldrh fp, [r6, #-12] + uxtah r0, fp, r0 + add fp, fp, r0, asr #2 + strh fp, [r6, #-12] @ movhi +.L3277: + movw r3, #1866 + ldrh r3, [r5, r3] + cmp r3, #0 + beq .L3279 + ldrh r2, [r6, #-12] + add r2, r2, r3, lsr #1 + strh r2, [r6, #-12] @ movhi + mul r2, r7, r3 + cmp r2, r8 + addgt r3, r3, #32 + ldrgt r2, .L3296 + addgt r3, r9, r3 + strgt r10, [r2, #1932] + ldrgt r2, .L3296+24 + strgth r3, [r2, #-12] @ movhi +.L3279: + ldrh r2, [r6, #-12] + mvn r9, #0 + ldr r3, [r5, #1932] + rsb r3, r2, r3 + mul r7, r7, r3 + ldr r3, .L3296+28 + ldrh r3, [r3] + str r7, [r4, #248] + mul r7, r3, r7 + movw r3, #1878 + ldrh r3, [r5, r3] + str r7, [r5, #1932] + mul r7, r3, r7 + str r7, [r5, #1912] + bl FtlBbmTblFlush + movw r3, #1814 + ldr r7, .L3296+32 + ldrh r2, [r5, r3] + mov r1, #0 + sub r8, r7, #248 + ldr r0, [r4, #-4060] + mov r2, r2, asl #1 + mov fp, r8 + bl ftl_memset + mov r3, #0 + strh r3, [r7, #-6] @ movhi + mov r1, #255 + strh r3, [r7, #-248] @ movhi + str r3, [r4, #-3888] + strb r3, [r4, #-3794] + strb r3, [r4, #-3792] + strh r3, [r8, #2] @ movhi + strb r3, [r4, #-4034] + mov r3, #1 + strb r3, [r4, #-4032] + movw r3, #1812 + ldrh r2, [r5, r3] + ldr r0, [r4, #-3884] + strh r9, [r7, #-8] @ movhi + add r7, r7, #3792 + mov r2, r2, lsr #3 + bl ftl_memset +.L3281: + ldr r10, .L3296+36 + ldr r5, .L3296+4 + mov r0, r10 + bl make_superblock + ldrb r3, [r4, #-4033] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r8] + bne .L3282 + ldr r2, [r7, #-4060] + mov r3, r3, asl #1 + strh r9, [r2, r3] @ movhi + ldrh r3, [fp] + add r3, r3, #1 + strh r3, [fp] @ movhi + b .L3281 +.L3282: + ldr r2, [r5, #-3848] + mov r3, r3, asl #1 + ldrh r1, [r10, #4] + mov r9, r5 + str r2, [r5, #-4028] + add r2, r2, #1 + str r2, [r5, #-3848] + ldr r2, [r5, #-4060] + strh r1, [r2, r3] @ movhi + sub r2, r5, #3984 + sub r7, r2, #8 + mov r3, #0 + strb r3, [r5, #-3986] + strh r3, [r7, #2] @ movhi + ldrh r3, [r10] + mvn r10, #0 + add r3, r3, #1 + strh r3, [r2, #-8] @ movhi + mov r3, #1 + strb r3, [r5, #-3984] +.L3283: + ldr r8, .L3296+40 + ldr r5, .L3296+4 + mov r0, r8 + bl make_superblock + ldrb r3, [r4, #-3985] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r7] + bne .L3284 + ldr r2, [r9, #-4060] + mov r3, r3, asl #1 + strh r10, [r2, r3] @ movhi + ldrh r3, [r7] + add r3, r3, #1 + strh r3, [r7] @ movhi + b .L3283 +.L3284: + ldr r2, [r5, #-3848] + mov r3, r3, asl #1 + ldrh r1, [r8, #4] + mvn r4, #0 + str r2, [r5, #-3980] + add r2, r2, #1 + str r2, [r5, #-3848] + ldr r2, [r5, #-4060] + strh r1, [r2, r3] @ movhi + sub r3, r5, #3936 + strh r4, [r3, #-8] @ movhi + bl FtlFreeSysBlkQueueOut + ldr r3, .L3296+44 + mov r2, #0 + strh r2, [r3, #2] @ movhi + ldr r2, [r5, #248] + strh r4, [r3, #4] @ movhi + strh r2, [r3, #6] @ movhi + ldr r3, [r5, #-3848] + str r3, [r5, #-3808] + add r3, r3, #1 + str r3, [r5, #-3848] + strh r0, [r6, #-8] @ movhi + bl FtlVpcTblFlush + bl FtlSysBlkInit + cmp r0, #0 + ldreq r3, .L3296+48 + moveq r2, #1 + streq r2, [r3, #504] +.L3263: mov r0, #0 - ldmfd sp!, {r3, pc} -.L2110: + add sp, sp, #12 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3297: .align 2 -.L2109: +.L3296: .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1878 + .word 168778952 + .word .LANCHOR0+1814 + .word .LANCHOR0+1812 + .word .LANCHOR2-3808 + .word .LANCHOR0+1872 + .word .LANCHOR2-3792 + .word .LANCHOR2-4040 + .word .LANCHOR2-3992 + .word .LANCHOR2-3816 + .word .LANCHOR1 .fnend .size FtlLowFormat, .-FtlLowFormat .align 2 + .global FtlReInitForSDUpdata + .type FtlReInitForSDUpdata, %function +FtlReInitForSDUpdata: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + .pad #24 + sub sp, sp, #24 + ldr r5, .L3328 + ldr r0, .L3328+4 + ldr r3, [r5] + str r3, [sp, #20] + ldrb r3, [r0, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L3299 +.L3301: + mov r0, #0 + b .L3300 +.L3299: + ldr r6, .L3328+8 + mov r4, r0 + ldr r0, [r6, #144] + bl FlashInit + cmp r0, #0 + bne .L3301 + bl FlashLoadFactorBbt + cmp r0, #0 + beq .L3302 + bl FlashMakeFactorBbt +.L3302: + ldr r0, [r6, #176] + bl FlashReadIdbDataRaw + cmp r0, #0 + beq .L3303 + mov r2, #16 + add r0, sp, #4 + mov r1, #0 + bl FlashReadFacBbtData + mov r3, #0 + mov r0, r3 + mov ip, #1 + ldr r2, [sp, #4] +.L3304: + ands lr, r2, ip, asl r0 + add r1, r3, #1 + add r0, r0, #1 + movne r3, r1 + cmp r0, #16 + bne .L3304 + cmp r3, #6 + bls .L3324 + mov r0, #0 + mov ip, #1 +.L3307: + ands lr, r2, ip, asl r0 + add r1, r3, #1 + add r0, r0, #1 + movne r3, r1 + cmp r0, #24 + bne .L3307 + cmp r3, #17 + movhi r3, #36 + strhib r3, [r4, #1] + bhi .L3306 +.L3324: + strb r0, [r4, #1] +.L3306: + ldrb r3, [r4, #1] @ zero_extendqisi2 + strh r3, [r4, #138] @ movhi +.L3303: + ldr r1, .L3328+12 + ldr r0, .L3328+16 + bl printk + ldr r0, .L3328+20 + bl FtlConstantsInit + bl FtlVariablesInit + ldr r0, [r4, #1808] + mov r4, #1 + uxth r0, r0 + bl FtlFreeSysBlkQueueInit +.L3309: + bl FtlLoadBbt + cmp r0, #0 + beq .L3310 +.L3326: + bl FtlLowFormat + cmp r4, #3 + addls r4, r4, #1 + bls .L3309 +.L3327: + mvn r0, #0 + b .L3300 +.L3310: + bl FtlSysBlkInit + cmp r0, #0 + bne .L3326 + ldr r3, .L3328+24 + mov r2, #1 + str r2, [r3, #504] +.L3300: + ldr r2, [sp, #20] + ldr r3, [r5] + cmp r2, r3 + beq .L3314 + bl __stack_chk_fail +.L3314: + add sp, sp, #24 + @ sp needed + ldmfd sp!, {r4, r5, r6, pc} +.L3329: + .align 2 +.L3328: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC77 + .word .LC76 + .word .LANCHOR0+112 + .word .LANCHOR1 + .fnend + .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata + .align 2 + .global Ftl_gc_temp_data_write_back + .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 + ldr r3, .L3349 + ldr r2, [r3, #4052] + cmp r2, #0 + bne .L3347 + stmfd sp!, {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldrb r3, [r3, #140] @ zero_extendqisi2 + ldr r5, .L3349+4 + cmp r3, #0 + beq .L3333 + ldr r3, [r5, #-3220] + tst r3, #1 + beq .L3333 + ldr r3, .L3349+8 + ldrh r3, [r3, #4] + cmp r3, #0 + beq .L3333 +.L3334: + mov r0, #0 + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L3333: + mov r2, #0 + ldr r0, [r5, #-2072] + ldr r1, [r5, #-3220] + mov r3, r2 + bl FlashProgPages + ldr r7, .L3349+4 + mov r6, #0 + mov r8, #36 +.L3335: + ldr r1, [r5, #-3220] + uxth r3, r6 + ldr r4, .L3349+4 + cmp r3, r1 + bcs .L3348 + mul r3, r8, r3 + ldr r0, [r7, #-2072] + add r6, r6, #1 + add r1, r0, r3 + ldr r0, [r0, r3] + ldr r2, [r1, #12] + cmn r0, #1 + bne .L3336 + sub r1, r4, #3936 + ldr ip, [r4, #-4060] + mov lr, #0 + ldrh r2, [r1, #-8] + mov r2, r2, asl #1 + strh lr, [ip, r2] @ movhi + ldr r2, [r4, #-3652] + strh r0, [r1, #-8] @ movhi + add r2, r2, #1 + str r2, [r4, #-3652] + ldr r2, [r4, #-2072] + add r3, r2, r3 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + bl FtlGcPageVarInit + b .L3346 +.L3336: + ldr r0, [r2, #12] + ldr r1, [r1, #4] + ldr r2, [r2, #8] + bl FtlGcUpdatePage + b .L3335 +.L3348: + ldr r0, [r4, #-2072] + bl FtlGcBufFree + mov r3, #0 + str r3, [r4, #-3220] + ldr r3, .L3349+8 + ldrh r3, [r3, #4] + cmp r3, #0 + bne .L3334 + mov r0, #1 + bl FtlGcFreeTempBlock +.L3346: + mov r0, #1 + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L3347: + mov r0, #0 + bx lr +.L3350: + .align 2 +.L3349: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR2-3944 + .fnend + .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .align 2 .global Ftl_get_new_temp_ppa .type Ftl_get_new_temp_ppa, %function Ftl_get_new_temp_ppa: @@ -18716,1065 +20228,1025 @@ Ftl_get_new_temp_ppa: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, r4, r5, lr} .save {r3, r4, r5, lr} - ldr r3, .L2114 - ldr r5, .L2114+4 - ldrh r2, [r5, r3] + ldr r3, .L3355 + sub r2, r3, #8 + ldrh r1, [r3, #-8] movw r3, #65535 - cmp r2, r3 - beq .L2112 - ldr r3, .L2114+8 - ldrh r3, [r5, r3] + cmp r1, r3 + beq .L3352 + ldrh r3, [r2, #4] cmp r3, #0 - bne .L2113 -.L2112: + bne .L3353 +.L3352: + ldr r4, .L3355+4 bl FtlCacheWriteBack mov r0, #0 + mov r5, #0 bl FtlGcFreeTempBlock - ldr r0, .L2114+12 - mov r4, #0 - strb r4, [r5, #-1892] + sub r4, r4, #3184 + strb r5, [r4, #-752] + ldr r0, .L3355+8 bl allocate_data_superblock - ldr r3, .L2114+16 - strh r4, [r5, r3] @ movhi - add r3, r3, #12 - strh r4, [r5, r3] @ movhi + strh r5, [r4, #-8] @ movhi + strh r5, [r4] @ movhi bl l2p_flush - mov r0, r4 + mov r0, r5 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2113: - ldr r0, .L2114+12 +.L3353: + ldr r0, .L3355+8 ldmfd sp!, {r3, r4, r5, lr} b get_new_active_ppa -.L2115: +.L3356: .align 2 -.L2114: - .word -1900 +.L3355: + .word .LANCHOR2-3936 .word .LANCHOR2 - .word -1896 - .word .LANCHOR2-1900 - .word -1156 + .word .LANCHOR2-3944 .fnend .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa .align 2 - .type ftl_do_gc.part.22, %function -ftl_do_gc.part.22: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov sl, r1 - ldr r3, .L2213 - .pad #36 - sub sp, sp, #36 - ldr r4, .L2213+4 - movw r1, #65535 - str r0, [sp, #16] - ldrh r7, [r3, r4] - cmp r7, r1 - beq .L2117 - ldr r6, .L2213+8 - ldrh r2, [r3, r6] - cmp r2, r1 - bne .L2117 - ldr r0, .L2213+12 - ldrh r5, [r3, r0] - cmp r5, r2 - beq .L2117 - ldr r1, .L2213+16 - ldrh ip, [r3, r1] - cmp ip, r2 - strneh r7, [r3, r6] @ movhi - strneh r5, [r3, r4] @ movhi - mvnne r2, #0 - strneh ip, [r3, r0] @ movhi - strneh r2, [r3, r1] @ movhi -.L2117: - ldr r1, [sp, #16] - ldr r2, [r3, #-1192] - cmp r1, #1 - add r2, r2, #1 - add r2, r2, r1, asl #7 - str r2, [r3, #-1192] - bne .L2118 - ldr r3, .L2213+20 - ldr r1, [r3, #3840] - cmp r1, #0 - bne .L2119 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2118 -.L2119: - ldr r4, .L2213 - ldr r3, [r4, #-1780] - cmp r3, #39 - bhi .L2118 - mov r3, #436 - ldrh r3, [r4, r3] - add r2, r2, r3 - str r2, [r4, #-1192] - bl FtlGcReFreshBadBlk - ldr r3, .L2213+24 - movw r2, #65535 - ldrh r3, [r4, r3] - cmp r3, r2 - bne .L2118 - ldr r2, .L2213+8 - ldrh r2, [r4, r2] - cmp r2, r3 - bne .L2118 - ldr r3, [r4, #-1192] - cmp r3, #1024 - bhi .L2120 - ldr r3, .L2213+28 - ldrh r3, [r4, r3] - cmp r3, #63 - bhi .L2118 -.L2120: - ldr r3, .L2213 - mov r2, #436 - ldr r0, .L2213+28 - mov r1, #0 - strh r1, [r3, r2] @ movhi - ldrh ip, [r3, r0] - ldr r0, .L2213+32 - ldrh r0, [r3, r0] - add r0, r0, #64 - cmp ip, r0 - bgt .L2118 - str r1, [r3, #-1192] - ldr r1, [r3, #-1780] - cmp r1, #0 - moveq r1, #6 - beq .L2209 - cmp r1, #5 - bhi .L2122 - mov r1, #18 -.L2209: - strh r1, [r3, r2] @ movhi -.L2122: - mov r0, #32 - movw r7, #65535 - bl List_get_gc_head_node - uxth r2, r0 - cmp r2, r7 - beq .L2123 - ldr r5, .L2213 - ldr r6, .L2213+36 - ldrh r0, [r5, r6] - cmp r0, #0 - moveq r3, #1 - streqh r3, [r5, r6] @ movhi - beq .L2123 - ldr r3, .L2213+20 - movw ip, #3918 - movw lr, #3848 - ldr r9, [r5, #-2016] - mov r2, r2, asl #1 - ldrh ip, [r3, ip] - ldrh r3, [r3, lr] - ldrh r1, [r9, r2] - mul r3, r3, ip - add r3, r3, #1 - cmp r1, r3 - bgt .L2123 - add fp, r0, #1 - mov r8, #0 - str r8, [r5, #-1184] - uxth fp, fp - strh fp, [r5, r6] @ movhi - str r2, [sp, #8] - bl List_get_gc_head_node - ldr r2, [sp, #8] - uxth r4, r0 - cmp r4, r7 - beq .L2123 - ldrh r2, [r9, r2] - mov r7, r4, asl #1 - ldr r0, .L2213+40 - mov r1, fp - ldrh r3, [r9, r7] - str r2, [sp, #0] - mov r2, r4 - bl printk - ldrh r3, [r5, r6] - cmp r3, #40 - bls .L2125 - ldr r3, [r5, #-2016] - ldrh r3, [r3, r7] - cmp r3, #32 - strhih r8, [r5, r6] @ movhi -.L2125: - ldr r2, .L2213 - mov r3, #436 - mov r1, #6 - strh r1, [r2, r3] @ movhi - b .L2127 -.L2123: - bl GetSwlReplaceBlock - movw r3, #65535 - cmp r0, r3 - mov r4, r0 - bne .L2127 - ldr r2, .L2213 - mov r3, #436 - mov r1, #0 - strh r1, [r2, r3] @ movhi -.L2118: - ldr r5, .L2213 - movw r4, #65535 - ldr r3, .L2213+24 - ldrh r2, [r5, r3] - cmp r2, r4 - bne .L2127 - sub r3, r3, #140 - ldrh r3, [r5, r3] - cmp r3, r2 - movne r4, r2 - bne .L2127 - ldr r2, .L2213+8 - ldrh r7, [r5, r2] - cmp r7, r3 - movne r4, r3 - bne .L2127 - ldr r8, .L2213+28 - ldr r2, [r5, #-1192] - ldrh r3, [r5, r8] - cmp r3, #23 - movhi r3, #1024 - movls r3, #5120 - cmp r2, r3 - movls r4, r7 - bls .L2127 - mov r2, #436 - mov r3, #0 - str r3, [r5, #-1192] - mov r6, r5 - strh r3, [r5, r2] @ movhi - bl GetSwlReplaceBlock - cmp r0, r7 - mov r4, r0 - bne .L2129 - ldr r3, .L2213+32 - ldrh r1, [r5, r8] - ldrh r2, [r5, r3] - cmp r1, r2 - movcs r2, #80 - strcsh r2, [r5, r3] @ movhi - bcs .L2139 - mov r0, #64 - bl List_get_gc_head_node - uxth r3, r0 - cmp r3, r4 - beq .L2139 - ldr r2, [r5, #-996] - cmp r2, #0 - bne .L2132 - ldr r2, .L2213+20 - movw r1, #3868 - ldrh r1, [r2, r1] - cmp r1, #3 - beq .L2132 - ldr r1, [r5, #-1712] - cmp r1, #0 - bne .L2132 - ldr r1, [r2, #3840] - cmp r1, #0 - bne .L2132 - ldrb r0, [r2, #928] @ zero_extendqisi2 - cmp r0, #0 - beq .L2133 -.L2132: - ldr r1, .L2213 - mov r3, r3, asl #1 - movw ip, #3848 - movw lr, #3868 - ldr r2, [r1, #-2016] - ldrh r0, [r2, r3] - movw r2, #3918 - ldr r3, .L2213+20 - ldrh r2, [r3, r2] - ldrh ip, [r3, ip] - ldrh r3, [r3, lr] - mul ip, ip, r2 - cmp r3, #3 - moveq r3, r2, lsr #1 - movne r3, #0 - add r3, ip, r3 - cmp r0, r3 - bgt .L2135 - mov r0, #0 - bl List_get_gc_head_node - ldr r2, .L2213+20 - ldr r3, .L2213 - ldr r2, [r2, #3976] - ldr r1, [r3, #-1844] - add r2, r2, r2, asl #1 - cmp r1, r2, lsr #2 - ldr r2, .L2213+32 - movhi r1, #128 - movls r1, #160 - strh r1, [r3, r2] @ movhi - uxth r4, r0 - b .L2137 -.L2135: - ldr r3, .L2213+32 - mov r2, #128 - strh r2, [r1, r3] @ movhi - b .L2139 -.L2133: - ldr r2, [r5, #-2016] - mov r3, r3, asl #1 - ldr r6, .L2213 - ldr r5, .L2213+32 - ldrh r3, [r2, r3] - cmp r3, #7 - movhi r3, #64 - strhih r3, [r6, r5] @ movhi - bhi .L2139 - bl List_get_gc_head_node - mov r3, #128 - strh r3, [r6, r5] @ movhi - uxth r4, r0 -.L2137: - movw r3, #65535 - cmp r4, r3 - beq .L2139 -.L2129: - ldr r1, .L2213 - mov r0, r4, asl #1 - ldr r3, .L2213+28 - ldr ip, .L2213+20 - ldrh r2, [r1, r3] - ldr ip, [ip, #4048] - ldr r3, [r1, #-2016] - ldrh r3, [r3, r0] - ldrh r0, [ip, r0] - str r0, [sp, #0] - ldr r0, .L2213+44 - ldrh r1, [r1, r0] - ldr r0, .L2213+48 - str r1, [sp, #4] - mov r1, r4 - bl printk -.L2139: - bl FtlGcReFreshBadBlk -.L2127: - movw ip, #65535 - rsb r1, ip, r4 - rsbs r0, r1, #0 - ldr r2, [sp, #16] - adc r0, r0, r1 - ldr r3, .L2213 - cmp r2, #0 - movne r1, #0 - andeq r1, r0, #1 - cmp r1, #0 - beq .L2140 - ldr r2, .L2213+28 - ldrh r1, [r3, r2] - cmp r1, #24 - movhi r6, #1 - bhi .L2141 - ldr r0, .L2213+20 - movw r2, #3916 - cmp r1, #16 - ldrh r6, [r0, r2] - movhi r6, r6, lsr #5 - bhi .L2141 - cmp r1, #12 - movhi r6, r6, lsr #4 - bhi .L2141 - cmp r1, #8 - movhi r6, r6, lsr #2 -.L2141: - ldr ip, .L2213+44 - ldr r2, .L2213 - ldrh r3, [r3, ip] - cmp r3, r1 - mov r1, ip - bcs .L2145 - ldr r3, .L2213+52 - movw r0, #65535 - ldrh r3, [r2, r3] - cmp r3, r0 - bne .L2146 - ldr r0, .L2213+8 - ldrh r0, [r2, r0] - cmp r0, r3 - bne .L2146 - mov r3, #436 - ldrh r0, [r2, r3] - cmp r0, #0 - bne .L2147 - ldr r3, .L2213+20 - ldr r1, [r2, #-1844] - ldr r3, [r3, #3976] - add r3, r3, r3, asl #1 - cmp r1, r3, lsr #2 - movcs r3, #18 - strcsh r3, [r2, ip] @ movhi - bcs .L2149 -.L2147: - ldr r3, .L2213 - ldr r2, .L2213+56 - ldr r1, .L2213+44 - ldrh r2, [r3, r2] - add r2, r2, r2, asl #1 - mov r2, r2, asr #2 - strh r2, [r3, r1] @ movhi -.L2149: - ldr r3, .L2213 - mov r2, #0 - str r2, [r3, #-1184] - b .L2150 -.L2146: - ldr r3, .L2213 - ldr r2, .L2213+56 - ldrh r2, [r3, r2] - add r2, r2, r2, asl #1 - mov r2, r2, asr #2 - strh r2, [r3, r1] @ movhi -.L2145: - ldr r3, .L2213+20 - cmp sl, #2 - movw r4, #65535 - movhi sl, #0 - movls sl, #1 - ldr r3, [r3, #3840] - cmp r3, #0 - moveq sl, #0 - cmp sl, #0 - addne r6, r6, #1 - uxthne r6, r6 - b .L2151 -.L2140: - ldr r2, .L2213+52 - ldrh r2, [r3, r2] - cmp r2, ip - bne .L2152 - ldr ip, .L2213+8 - ldrh ip, [r3, ip] - cmp ip, r2 - movne r0, #0 - andeq r0, r0, #1 - cmp r0, #0 - beq .L2152 - ldr r0, .L2213+24 - ldrh r0, [r3, r0] - cmp r0, r2 - movne r4, r2 - bne .L2152 - str r1, [r3, #-1184] - ldr r2, .L2213+44 - ldr r1, .L2213+28 - ldrh r0, [r3, r1] - ldrh r1, [r3, r2] - cmp r0, r1 - bls .L2153 - mov r1, #436 - ldrh r1, [r3, r1] - cmp r1, #0 - bne .L2154 - ldr r1, .L2213+20 - ldr r0, [r3, #-1844] - ldr r1, [r1, #3976] - add r1, r1, r1, asl #1 - cmp r0, r1, lsr #2 - movcs r1, #18 - strcsh r1, [r3, r2] @ movhi - bcs .L2156 -.L2154: - ldr r3, .L2213 - ldr r2, .L2213+56 - ldr r1, .L2213+44 - ldrh r2, [r3, r2] - add r2, r2, r2, asl #1 - mov r2, r2, asr #2 - strh r2, [r3, r1] @ movhi -.L2156: - bl FtlReadRefresh - mov r0, #0 - bl List_get_gc_head_node - ldr r3, .L2213 - ldr r2, [r3, #-2016] - uxth r0, r0 - mov r0, r0, asl #1 - ldrh r2, [r2, r0] - cmp r2, #4 - bhi .L2212 -.L2153: - ldr r4, .L2213 - mov r6, #436 - ldrh r0, [r4, r6] - cmp r0, #0 - bne .L2204 - ldr r3, .L2213+56 - ldrh r5, [r4, r3] - add r3, r3, #580 - add r2, r5, r5, asl #1 - mov r2, r2, asr #2 - strh r2, [r4, r3] @ movhi - bl List_get_gc_head_node - ldr r3, [r4, #-2016] - ldr r1, .L2213+20 - movw r2, #3918 - ldrh r2, [r1, r2] - uxth r0, r0 - mov r0, r0, asl #1 - ldrh r3, [r3, r0] - movw r0, #3848 - ldrh r1, [r1, r0] - mul r2, r1, r2 - add r2, r2, r2, lsr #31 - cmp r3, r2, asr #1 - ble .L2157 - ldr r2, .L2213+28 - sub r5, r5, #1 - ldrh r2, [r4, r2] - cmp r2, r5 - blt .L2157 - bl FtlReadRefresh - ldrh r0, [r4, r6] - b .L2150 -.L2157: - cmp r3, #0 - bne .L2204 - movw r0, #65535 - bl decrement_vpc_count - ldr r3, .L2213+28 - ldr r2, .L2213 - ldrh r0, [r2, r3] - add r0, r0, #1 - b .L2150 -.L2204: - movw r4, #65535 -.L2152: - ldr r3, .L2213+20 - ldr r6, [r3, #3840] - cmp r6, #0 - movne r6, #2 - moveq r6, #1 -.L2151: - ldr r3, .L2213 - movw r0, #65535 - ldr r2, .L2213+24 - ldrh r1, [r3, r2] - cmp r1, r0 - bne .L2158 - cmp r4, r1 - strneh r4, [r3, r2] @ movhi - bne .L2160 - ldr r2, .L2213+8 - ldrh r1, [r3, r2] - cmp r1, r4 - beq .L2160 - ldr r0, [r3, #-2016] - mov r1, r1, asl #1 - ldrh r1, [r0, r1] - cmp r1, #0 - mvneq r1, #0 - streqh r1, [r3, r2] @ movhi - ldr r3, .L2213 - ldr r1, .L2213+24 - ldrh r0, [r3, r2] - strh r0, [r3, r1] @ movhi - mvn r1, #0 - strh r1, [r3, r2] @ movhi -.L2160: - ldr r5, .L2213 - mov r3, #0 - ldr r7, .L2213+24 - strb r3, [r5, #-1752] - movw r3, #65535 - ldrh r0, [r5, r7] - cmp r0, r3 - beq .L2158 - bl IsBlkInGcList - cmp r0, #0 - mvnne r3, #0 - strneh r3, [r5, r7] @ movhi - ldr r3, .L2213+20 - ldr r7, .L2213 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2163 - ldr r3, .L2213+24 - ldrh r0, [r7, r3] - bl ftl_get_blk_mode - strb r0, [r7, #-1752] -.L2163: - ldr r8, .L2213+24 - movw r3, #65535 - ldr r5, .L2213 - ldrh r2, [r7, r8] - cmp r2, r3 - beq .L2158 - add r0, r5, r8 - bl make_superblock - ldr r1, .L2213+60 - movw r2, #438 - mov r3, #0 - strh r3, [r5, r2] @ movhi - strh r3, [r5, r1] @ movhi - strb r3, [r5, #-1754] - ldrh r3, [r5, r8] - ldr r2, [r5, #-2016] - mov r3, r3, asl #1 - ldrh r2, [r2, r3] - mov r3, #440 - strh r2, [r5, r3] @ movhi -.L2158: - ldr r3, .L2213 - ldr r2, .L2213+24 - ldrh r1, [r3, r2] - sub r2, r2, #236 - ldrh r2, [r3, r2] - cmp r2, r1 - mov r2, r3 - beq .L2164 - ldr r0, .L2213+64 - ldrh r3, [r3, r0] - cmp r3, r1 - strne r4, [sp, #20] - bne .L2208 -.L2165: -.L2164: - ldr r3, .L2213+24 - mvn r1, #0 - strh r1, [r2, r3] @ movhi - mov r3, #436 -.L2211: - ldrh r0, [r2, r3] - b .L2150 -.L2208: - ldr r4, .L2213 - movw sl, #65535 - ldr r3, .L2213+24 - ldrh r3, [r4, r3] - cmp r3, sl - bne .L2167 - ldr r5, .L2213+36 - mov r3, #0 - str r3, [r4, #-1184] -.L2207: - ldrh r8, [r4, r5] - mov r0, r8 - bl List_get_gc_head_node - ldr r3, .L2213+24 - movw r1, #65535 - uxth r7, r0 - strh r7, [r4, r3] @ movhi - cmp r7, r1 - bne .L2169 - ldr r2, .L2213 - add r3, r3, #572 - mov r1, #0 - mov r0, #8 - strh r1, [r2, r3] @ movhi - b .L2150 -.L2169: - mov r0, r7 - bl IsBlkInGcList - cmp r0, #0 - add r0, r8, #1 - strneh r0, [r4, r5] @ movhi - bne .L2207 - ldr ip, .L2213+20 - movw r8, #3916 - movw sl, #3848 - ldr r2, [r4, #-2016] - mov r3, r7, asl #1 - uxth r0, r0 - ldrh r8, [ip, r8] - ldrh ip, [ip, sl] - strh r0, [r4, r5] @ movhi - ldrh r1, [r2, r3] - mul r8, ip, r8 - add ip, r8, r8, lsr #31 - cmp r1, ip, asr #1 - bgt .L2172 - cmp r0, #48 - bls .L2173 - cmp r1, #8 - bls .L2173 - ldr r1, .L2213+68 - ldrh r1, [r4, r1] - cmp r1, #35 - bhi .L2173 -.L2172: - mov r1, #0 - strh r1, [r4, r5] @ movhi -.L2173: - ldrh r3, [r2, r3] - movw r1, #65535 - ldr sl, [sp, #20] - ldr r9, .L2213 - cmp r3, r8 - cmpge sl, r1 - movne r8, #0 - moveq r8, #1 - bne .L2174 - ldr r3, .L2213+24 - mvn r2, #0 - strh r2, [r9, r3] @ movhi - add r3, r3, #572 - mov r2, #0 - strh r2, [r9, r3] @ movhi - mov r3, #436 - ldrh r0, [r9, r3] - b .L2150 -.L2174: - cmp r3, #0 - bne .L2175 - movw r0, #65535 - bl decrement_vpc_count - ldrh r3, [r4, r5] - add r3, r3, #1 - strh r3, [r4, r5] @ movhi - b .L2207 -.L2175: - ldr r3, .L2213+20 - strb r8, [r9, #-1752] - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2176 - mov r0, r7 - bl ftl_get_blk_mode - strb r0, [r9, #-1752] -.L2176: - ldr r4, .L2213 - sub r0, r4, #1760 - bl make_superblock - movw r1, #438 - mov r3, #0 - strh r3, [r4, r1] @ movhi - ldr r1, .L2213+24 - ldr r0, [r4, #-2016] - ldrh r1, [r4, r1] - mov r1, r1, asl #1 - ldrh r0, [r0, r1] - mov r1, #440 - strb r3, [r4, #-1754] - strh r0, [r4, r1] @ movhi - ldr r1, .L2213+60 - strh r3, [r4, r1] @ movhi -.L2167: - ldr sl, [sp, #16] - cmp sl, #1 - bne .L2177 - bl FtlReadRefresh -.L2177: - ldr r3, .L2213 - mov r2, #1 - movw r1, #3916 - str r2, [r3, #-992] - ldr r2, .L2213+20 - ldrh r9, [r2, r1] - ldrb r1, [r2, #928] @ zero_extendqisi2 - cmp r1, #0 - beq .L2178 - ldrb r1, [r3, #-1752] @ zero_extendqisi2 - cmp r1, #1 - movweq r1, #3918 - ldreqh r9, [r2, r1] -.L2178: - ldr r2, .L2213+60 - mov r8, #0 - ldr r4, .L2213 - mov fp, r9 - ldrh r3, [r3, r2] - add r2, r3, r6 - cmp r2, r9 - rsbgt r6, r3, r9 - uxthgt r6, r6 - b .L2180 -.L2182: - ldrh r1, [r2, #2]! - movw sl, #65535 - add r3, r3, #1 - cmp r1, sl - uxth r3, r3 - orrne r1, ip, r1, asl #10 - mlane sl, r0, r7, lr - addne r7, r7, #1 - uxthne r7, r7 - strne r1, [sl, #4] -.L2188: - cmp r3, r5 - bne .L2182 - ldr r0, [r4, #-1164] - mov r1, r7 - ldrb r2, [r4, #-1752] @ zero_extendqisi2 - mov r5, #0 - bl FlashReadPages - mov r9, r5 - mov sl, r6 - b .L2183 -.L2186: - ldr r3, [r4, #-1164] - add r2, r3, r5 - ldr r3, [r3, r5] - ldr r6, [r2, #12] - cmn r3, #1 - beq .L2184 - ldrh r3, [r6, #0] - movw r1, #61589 - cmp r3, r1 - bne .L2184 - add r1, sp, #28 - mov r2, #0 - ldr r0, [r6, #8] - bl log2phys - ldr r1, [r4, #-1164] - ldr r2, [sp, #28] - add r1, r1, r5 - bic r2, r2, #-2147483648 - ldr r3, [r1, #4] - cmp r2, r3 - bne .L2184 - movw r3, #438 - ldr r0, [r4, #-1180] - ldrh r2, [r4, r3] - ldr r1, [r1, #16] - add r2, r2, #1 - strh r2, [r4, r3] @ movhi - ldr r2, [r4, #-964] - mov r3, #36 - mla r2, r3, r0, r2 - str r1, [r2, #16] - str r2, [sp, #8] - str r3, [sp, #12] - bl Ftl_get_new_temp_ppa - ldr r2, [sp, #8] - ldr r1, [r4, #-1180] - str r0, [r2, #4] - ldr r3, [sp, #12] - ldr r2, [r4, #-964] - mla r3, r3, r1, r2 - ldr r2, [r4, #-1164] - add r2, r2, r5 - ldr r1, [r2, #8] - str r1, [r3, #8] - mov r1, #1 - ldr r2, [r2, #12] - str r2, [r3, #12] - ldr r3, [sp, #28] - str r3, [r6, #12] - ldr r3, .L2213+52 - ldrh r3, [r4, r3] - strh r3, [r6, #2] @ movhi - ldr r3, [r4, #-1800] - ldr r0, [r4, #-1164] - str r3, [r6, #4] - add r0, r0, r5 - ldr r3, [r4, #-1180] - add r3, r3, #1 - str r3, [r4, #-1180] - bl FtlGcBufAlloc - ldr r3, .L2213+20 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - bne .L2185 - ldrb r3, [r4, #-1893] @ zero_extendqisi2 - ldr r2, [r4, #-1180] - cmp r2, r3 - beq .L2185 - ldr r3, .L2213+72 - ldrh r3, [r4, r3] - cmp r3, #0 - bne .L2184 -.L2185: - bl Ftl_gc_temp_data_write_back - cmp r0, #0 - beq .L2184 - ldr r3, .L2213 - mov r2, #0 - str r2, [r3, #-992] -.L2212: - mov r2, #436 - b .L2211 -.L2184: - add r9, r9, #1 - add r5, r5, #36 - uxth r9, r9 -.L2183: - cmp r9, r7 - bne .L2186 - add r8, r8, #1 - mov r6, sl -.L2180: - uxth r3, r8 - ldr r7, .L2213 - cmp r3, r6 - ldr r3, .L2213+60 - bcs .L2187 - ldr r1, .L2213+20 - movw r2, #3848 - ldrh ip, [r4, r3] - mov r7, #0 - ldr lr, [r4, #-1164] - mov r3, r7 - ldrh r5, [r1, r2] - add ip, ip, r8 - ldr r2, .L2213+76 - mov r0, #36 - b .L2188 -.L2187: - ldrh r2, [r7, r3] - mov r9, fp - add r6, r6, r2 - uxth r6, r6 - strh r6, [r7, r3] @ movhi - cmp r6, fp - bcc .L2189 - ldr r3, [r7, #-1180] - cmp r3, #0 - beq .L2190 - bl Ftl_gc_temp_data_write_back - cmp r0, #0 - movne r3, #0 - strne r3, [r7, #-992] - movne r3, #436 - ldrneh r0, [r7, r3] - bne .L2150 -.L2190: - ldr r4, .L2213 - movw r3, #438 - ldrh r6, [r4, r3] - cmp r6, #0 - bne .L2191 - ldr r5, .L2213+24 - ldr r2, [r4, #-2016] - ldrh r1, [r4, r5] - mov r3, r1, asl #1 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L2191 - ldr r2, .L2213+60 - ldr r0, .L2213+80 - ldrh r2, [r4, r2] - str r3, [sp, #0] - mov r3, #440 - ldrh r3, [r4, r3] - str r3, [sp, #4] - mov r3, r6 - bl printk - ldrh r3, [r4, r5] - ldr r2, [r4, #-2016] - mov r3, r3, asl #1 - strh r6, [r2, r3] @ movhi - ldrh r0, [r4, r5] - bl update_vpc_list - bl FtlCacheWriteBack - bl l2p_flush - bl FtlVpcTblFlush -.L2191: - ldr r3, .L2213+24 - mvn r1, #0 - ldr r2, .L2213 - strh r1, [r2, r3] @ movhi -.L2189: - ldr r3, .L2213 - ldr r2, .L2213+28 - ldrh r2, [r3, r2] - cmp r2, #2 - ldrls r2, .L2213+20 - movwls r3, #3916 - ldrlsh r6, [r2, r3] - bls .L2208 -.L2192: - mov r1, #0 - str r1, [r3, #-992] - mov r1, #436 - ldrh r0, [r3, r1] - cmp r0, #0 - addeq r0, r2, #1 -.L2150: - add sp, sp, #36 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2214: - .align 2 -.L2213: - .word .LANCHOR2 - .word -1140 - .word -1142 - .word -1138 - .word -1136 - .word .LANCHOR0 - .word -1760 - .word -2000 - .word -1194 - .word -1188 - .word .LC148 - .word -1196 - .word .LC149 - .word -1900 - .word -1776 - .word -1758 - .word -1948 - .word -1156 - .word -1896 - .word .LANCHOR2-1746 - .word .LC150 - .fnend - .size ftl_do_gc.part.22, .-ftl_do_gc.part.22 - .align 2 .global ftl_do_gc .type ftl_do_gc, %function ftl_do_gc: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, r0 - ldr r3, .L2222 - mov r5, r1 - ldr r0, [r3, #4040] + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r5, .L3521 + ldr r3, .L3521+4 + str r0, [sp, #12] + ldr r0, [r5, #4052] + ldr r3, [r3] cmp r0, #0 + str r1, [sp, #8] + str r3, [sp, #44] movne r0, #0 - ldmnefd sp!, {r3, r4, r5, pc} - ldr r3, .L2222+4 - ldr r2, [r3, #-992] - cmp r2, #0 - ldmnefd sp!, {r3, r4, r5, pc} - ldr r1, .L2222+8 - ldrh r1, [r3, r1] + bne .L3358 + ldr r2, .L3521+8 + ldr r3, [r2, #504] + cmn r3, #1 + beq .L3358 + ldr r3, .L3521+12 + ldr r4, [r3, #-2100] + mov r7, r3 + cmp r4, #0 + bne .L3358 + sub r1, r3, #4048 + ldrh r1, [r1, #-4] cmp r1, #47 - movls r0, r2 - ldmlsfd sp!, {r3, r4, r5, pc} - ldr r1, .L2222+12 - movw r2, #3096 - ldrh r1, [r1, r2] + movls r0, r4 + bls .L3358 + movw r1, #3288 + ldrh r1, [r2, r1] movw r2, #65535 cmp r1, r2 - beq .L2217 - ldr r1, .L2222+16 - ldrh r3, [r3, r1] + bne .L3359 +.L3362: + ldr r6, .L3521+16 + movw r2, #65535 + ldrh r4, [r6, #-12] + cmp r4, r2 + bne .L3360 + b .L3361 +.L3359: + sub r3, r3, #3936 + ldrh r3, [r3, #-8] cmp r3, r2 - beq .L2217 + beq .L3362 mov r0, #1 bl FtlGcFreeTempBlock cmp r0, #0 - bne .L2221 -.L2217: - mov r0, r4 - mov r1, r5 - ldmfd sp!, {r3, r4, r5, lr} - b ftl_do_gc.part.22 -.L2221: + beq .L3362 mov r0, #1 - ldmfd sp!, {r3, r4, r5, pc} -.L2223: + b .L3358 +.L3360: + ldrh r3, [r6, #-14] + cmp r3, r2 + bne .L3361 + ldrh r1, [r6, #-10] + cmp r1, r3 + beq .L3361 + ldrh r2, [r6, #-8] + cmp r2, r3 + strneh r4, [r6, #-14] @ movhi + strneh r1, [r6, #-12] @ movhi + mvnne r3, #0 + strneh r2, [r6, #-10] @ movhi + strneh r3, [r6, #-8] @ movhi +.L3361: + ldr r2, [sp, #12] + ldr r3, [r7, #-3232] + ldr r8, .L3521+20 + cmp r2, #1 + add r3, r3, #1 + add r3, r3, r2, asl #7 + sub r10, r8, #240 + str r3, [r7, #-3232] + bne .L3373 + ldr r2, [r5, #1796] + cmp r2, #0 + bne .L3364 + ldr r2, .L3521 + ldrb r2, [r2, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L3373 +.L3364: + ldr r2, [r7, #-3824] + ldr r9, .L3521+12 + cmp r2, #39 + bhi .L3373 + ldr r4, .L3521+24 + ldrh r2, [r4] + add r3, r3, r2 + str r3, [r9, #-3232] + bl FtlGcReFreshBadBlk + ldrh r3, [r8, #-8] + movw r2, #65535 + cmp r3, r2 + bne .L3373 + ldrh r2, [r6, #-14] + cmp r2, r3 + bne .L3373 + ldr r3, [r9, #-3232] + cmp r3, #1024 + bhi .L3365 + ldrh r3, [r10, #-12] + cmp r3, #63 + bhi .L3373 +.L3365: + ldr r3, .L3521+12 + mov r0, #0 + ldrh ip, [r10, #-12] + sub r2, r3, #3232 + ldr r1, .L3521+24 + strh r0, [r4] @ movhi + ldrh r2, [r2, #-2] + add r2, r2, #64 + cmp ip, r2 + bgt .L3373 + str r0, [r3, #-3232] + ldr r3, [r3, #-3824] + cmp r3, r0 + moveq r3, #6 + beq .L3513 + cmp r3, #5 + bhi .L3367 + mov r3, #18 +.L3513: + strh r3, [r1] @ movhi +.L3367: + mov r0, #32 + bl List_get_gc_head_node + movw r3, #65535 + uxth lr, r0 + cmp lr, r3 + beq .L3372 + ldr fp, .L3521+12 + sub r9, fp, #3216 + ldrh r0, [r9, #-12] + cmp r0, #0 + beq .L3369 + movw r1, #1874 + ldr r2, [fp, #-4060] + ldrh r4, [r5, r1] + movw r1, #1804 + ldrh r1, [r5, r1] + mov ip, lr, asl #1 + ldrh lr, [r2, ip] + mul r1, r1, r4 + add r1, r1, #1 + cmp lr, r1 + bgt .L3372 + add r1, r0, #1 + str ip, [sp, #28] + str r3, [sp, #24] + mov r3, #0 + uxth r1, r1 + str r2, [sp, #20] + str r3, [fp, #-3224] + strh r1, [r9, #-12] @ movhi + str r1, [sp, #16] + bl List_get_gc_head_node + ldr r3, [sp, #24] + uxth r4, r0 + ldr r1, [sp, #16] + cmp r4, r3 + ldr r2, [sp, #20] + ldr ip, [sp, #28] + beq .L3372 + mov r10, r4, asl #1 + ldr r0, .L3521+28 + ldrh r3, [r2, r10] + ldrh r2, [r2, ip] + str r2, [sp] + mov r2, r4 + bl printk + ldrh r3, [r9, #-12] + cmp r3, #40 + bls .L3370 + ldr r3, [fp, #-4060] + ldrh r3, [r3, r10] + cmp r3, #32 + movhi r3, #0 + strhih r3, [r9, #-12] @ movhi +.L3370: + ldr r3, .L3521+24 + mov r2, #6 + strh r2, [r3] @ movhi + b .L3374 +.L3369: + mov r3, #1 + strh r3, [r9, #-12] @ movhi +.L3372: + bl GetSwlReplaceBlock + movw r3, #65535 + cmp r0, r3 + mov r4, r0 + bne .L3374 + ldr r3, .L3521+24 + mov r2, #0 + strh r2, [r3] @ movhi +.L3373: + ldrh r3, [r8, #-8] + movw r4, #65535 + ldr r9, .L3521+12 + cmp r3, r4 + bne .L3374 + sub r2, r9, #3936 + ldrh r4, [r2, #-8] + cmp r4, r3 + movne r4, r3 + beq .L3518 +.L3374: + movw r1, #65535 + rsb r3, r1, r4 + clz r3, r3 + ldr r2, [sp, #12] + ldr r9, .L3521+32 + mov r3, r3, lsr #5 + cmp r2, #0 + movne ip, #0 + andeq ip, r3, #1 + cmp ip, #0 + beq .L3387 + ldrh r0, [r9, #-12] + cmp r0, #24 + movhi r10, #1 + bhi .L3388 + ldr r3, .L3521+36 + cmp r0, #16 + ldrh r10, [r3] + movhi r10, r10, lsr #5 + bhi .L3388 + cmp r0, #12 + movhi r10, r10, lsr #4 + bhi .L3388 + cmp r0, #8 + movhi r10, r10, lsr #2 +.L3388: + ldr r1, .L3521+12 + sub r2, r1, #3232 + ldrh r3, [r2, #-4] + cmp r3, r0 + bcs .L3392 + sub r3, r1, #3936 + movw r0, #65535 + ldrh r3, [r3, #-8] + cmp r3, r0 + bne .L3393 + sub r0, r1, #3168 + ldrh r0, [r0, #-14] + cmp r0, r3 + bne .L3393 + ldr r3, .L3521+24 + ldrh r0, [r3] + cmp r0, #0 + bne .L3394 + ldr r3, [r5, #1932] + ldr r1, [r1, #-3888] + add r3, r3, r3, asl #1 + cmp r1, r3, lsr #2 + movcs r3, #18 + bcs .L3395 +.L3394: + ldr r3, .L3521+40 + ldrh r3, [r3, #-12] + add r3, r3, r3, asl #1 + ubfx r3, r3, #2, #16 +.L3395: + strh r3, [r2, #-4] @ movhi + mov r3, #0 + str r3, [r7, #-3224] + b .L3358 +.L3393: + ldr r3, .L3521+40 + ldrh r3, [r3, #-12] + add r3, r3, r3, asl #1 + mov r3, r3, asr #2 + strh r3, [r2, #-4] @ movhi +.L3392: + ldr r3, [sp, #8] + movw r4, #65535 + ldr r2, [r5, #1796] + cmp r3, #2 + movhi r3, #0 + movls r3, #1 + cmp r2, #0 + moveq r3, #0 + cmp r3, #0 + addne r10, r10, #1 + uxthne r10, r10 + b .L3397 +.L3387: + ldrh r0, [r9, #88] + add r2, r9, #4032 + cmp r0, r1 + bne .L3398 + ldrh r1, [r6, #-14] + cmp r1, r0 + movne r3, #0 + andeq r3, r3, #1 + cmp r3, #0 + beq .L3398 + sub r3, r2, #3792 + ldrh r3, [r3, #-8] + cmp r3, r0 + beq .L3399 +.L3403: + movw r4, #65535 + b .L3398 +.L3399: + sub r4, r2, #3232 + ldrh r1, [r9, #-12] + str ip, [r2, #-3224] + ldrh r3, [r4, #-4] + ldr r10, .L3521+24 + cmp r1, r3 + bls .L3400 + ldrh r3, [r10] + cmp r3, #0 + bne .L3401 + ldr r3, [r5, #1932] + ldr r2, [r2, #-3888] + add r3, r3, r3, asl #1 + cmp r2, r3, lsr #2 + movcs r3, #18 + bcs .L3402 +.L3401: + ldr r3, .L3521+40 + ldrh r3, [r3, #-12] + add r3, r3, r3, asl #1 + ubfx r3, r3, #2, #16 +.L3402: + strh r3, [r4, #-4] @ movhi + bl FtlReadRefresh + mov r0, #0 + bl List_get_gc_head_node + ldr r3, [r7, #-4060] + uxth r0, r0 + mov r0, r0, asl #1 + ldrh r3, [r3, r0] + cmp r3, #4 + ldrhih r0, [r10] + bhi .L3358 +.L3400: + ldrh r0, [r10] + cmp r0, #0 + bne .L3403 + ldr r3, .L3521+40 + ldrh r10, [r3, #-12] + add r3, r10, r10, asl #1 + mov r3, r3, asr #2 + strh r3, [r4, #-4] @ movhi + bl List_get_gc_head_node + ldr r3, [r7, #-4060] + uxth r0, r0 + mov r0, r0, asl #1 + ldrh r1, [r3, r0] + movw r3, #1874 + ldrh r2, [r5, r3] + movw r3, #1804 + ldrh r3, [r5, r3] + mul r3, r3, r2 + add r3, r3, r3, lsr #31 + cmp r1, r3, asr #1 + ble .L3404 + ldrh r3, [r9, #-12] + sub r2, r10, #1 + cmp r3, r2 + blt .L3404 + bl FtlReadRefresh + b .L3516 +.L3404: + cmp r1, #0 + bne .L3403 + movw r0, #65535 + bl decrement_vpc_count + ldrh r0, [r9, #-12] + add r0, r0, #1 + b .L3358 +.L3398: + ldr r3, [r5, #1796] + cmp r3, #0 + moveq r10, #1 + movne r10, #2 +.L3397: + ldrh r3, [r8, #-8] + movw r0, #65535 + ldr r2, .L3521+12 + cmp r3, r0 + sub r1, r2, #3792 + bne .L3406 + cmp r4, r3 + strneh r4, [r1, #-8] @ movhi + bne .L3408 + sub r1, r2, #3168 + ldrh r3, [r1, #-14] + cmp r3, r4 + beq .L3408 + ldr r2, [r2, #-4060] + mov r3, r3, asl #1 + ldrh r3, [r2, r3] + cmp r3, #0 + mvneq r3, #0 + streqh r3, [r1, #-14] @ movhi + ldrh r3, [r6, #-14] + strh r3, [r8, #-8] @ movhi + mvn r3, #0 + strh r3, [r6, #-14] @ movhi +.L3408: + ldrh r0, [r8, #-8] + mov r3, #0 + strb r3, [r7, #-3792] + movw r3, #65535 + cmp r0, r3 + beq .L3406 + bl IsBlkInGcList + cmp r0, #0 + ldrne r3, .L3521+20 + mvnne r2, #0 + strneh r2, [r3, #-8] @ movhi + ldrb r3, [r5, #140] @ zero_extendqisi2 + cmp r3, #0 + beq .L3412 + ldrh r0, [r8, #-8] + bl ftl_get_blk_mode + strb r0, [r7, #-3792] +.L3412: + ldrh r2, [r8, #-8] + movw r3, #65535 + ldr r6, .L3521+12 + cmp r2, r3 + sub r7, r6, #3792 + sub r5, r7, #8 + beq .L3406 + mov r0, r5 + bl make_superblock + ldr r3, .L3521+44 + movw r1, #446 + mov r2, #0 + strh r2, [r7, #-6] @ movhi + strh r2, [r3, r1] @ movhi + add r3, r3, #448 + strb r2, [r6, #-3794] + ldrh r2, [r7, #-8] + ldr r1, [r6, #-4060] + mov r2, r2, asl #1 + ldrh r2, [r1, r2] + strh r2, [r3] @ movhi +.L3406: + ldrh r3, [r8, #-8] + ldrh r2, [r9, #-8] + cmp r2, r3 + beq .L3413 + ldr r2, .L3521+48 + ldrh r1, [r2, #-8] + cmp r1, r3 + beq .L3413 + ldrh r2, [r2, #40] + cmp r2, r3 + bne .L3447 +.L3413: + ldr r3, .L3521+20 + mvn r2, #0 + strh r2, [r3, #-8] @ movhi +.L3447: + ldr r7, .L3521+52 + movw r3, #65535 + ldr r6, .L3521+12 + ldrh r2, [r7] + mov fp, r7 + mov r8, r6 + cmp r2, r3 + bne .L3415 + mov r3, #0 + str r3, [r6, #-3224] +.L3416: + ldr r9, .L3521+56 + ldrh r5, [r9] + mov r0, r5 + bl List_get_gc_head_node + movw r2, #65535 + uxth r3, r0 + strh r3, [fp] @ movhi + cmp r3, r2 + moveq r3, #0 + moveq r0, #8 + streqh r3, [r9] @ movhi + beq .L3358 +.L3417: + mov r0, r3 + str r3, [sp, #8] + bl IsBlkInGcList + add r5, r5, #1 + cmp r0, #0 + ldr r3, [sp, #8] + ldrne r3, .L3521+56 + strneh r5, [r3] @ movhi + bne .L3416 + ldr r2, .L3521+56 + uxth r5, r5 + ldr r0, [r8, #-4060] + mov r1, r3, asl #1 + strh r5, [r2] @ movhi + ldr r2, .L3521+36 + ldrh ip, [r0, r1] + ldrh lr, [r2] + ldrh r2, [r2, #-68] + mul r2, r2, lr + add lr, r2, r2, lsr #31 + cmp ip, lr, asr #1 + bgt .L3420 + cmp ip, #8 + cmphi r5, #48 + bls .L3421 + ldrh ip, [r9, #36] + cmp ip, #35 + bhi .L3421 +.L3420: + ldr lr, .L3521+56 + mov ip, #0 + strh ip, [lr] @ movhi +.L3421: + ldrh r1, [r0, r1] + movw r0, #65535 + cmp r1, r2 + cmpge r4, r0 + bne .L3422 + ldr r2, .L3521+56 + ldrh r0, [r2] + cmp r0, #3 + bhi .L3422 + sub r3, r2, #564 + mvn r1, #0 + strh r1, [r3, #-8] @ movhi + mov r3, #0 + strh r3, [r2] @ movhi + b .L3516 +.L3422: + cmp r1, #0 + bne .L3423 + movw r0, #65535 + bl decrement_vpc_count + ldr r3, .L3521+56 + ldr r2, .L3521+56 + ldrh r3, [r3] + add r3, r3, #1 + strh r3, [r2] @ movhi + b .L3416 +.L3423: + mov r2, #0 + strb r2, [r6, #-3792] + ldr r2, .L3521 + ldrb r2, [r2, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L3424 + mov r0, r3 + bl ftl_get_blk_mode + ldr r3, .L3521+12 + strb r0, [r3, #-3792] +.L3424: + ldr r0, .L3521+52 + bl make_superblock + ldrh r2, [r7] + ldr r1, .L3521+60 + mov r3, #0 + ldr r0, [r6, #-4060] + mov r2, r2, asl #1 + strh r3, [r1] @ movhi + ldrh r2, [r0, r2] + strh r3, [r7, #2] @ movhi + strb r3, [r6, #-3794] + strh r2, [r1, #2] @ movhi +.L3415: + ldr r3, [sp, #12] + cmp r3, #1 + bne .L3425 + bl FtlReadRefresh +.L3425: + mov r3, #1 + str r3, [r6, #-2100] + ldr r3, .L3521 + add r2, r3, #1872 + ldrb r3, [r3, #140] @ zero_extendqisi2 + ldrh r2, [r2] + cmp r3, #0 + str r2, [sp, #8] + beq .L3426 + ldr r3, .L3521+12 + ldrb r3, [r3, #-3792] @ zero_extendqisi2 + cmp r3, #1 + ldreq r3, .L3521+64 + ldreqh r3, [r3] + streq r3, [sp, #8] +.L3426: + ldrh r3, [r7, #2] + mov r7, #0 + ldr r1, [sp, #8] + add r2, r3, r10 + ldr r5, .L3521+12 + cmp r2, r1 + movgt r2, r1 + rsbgt r3, r3, r2 + uxthgt r10, r3 +.L3428: + uxth r3, r7 + ldr r6, .L3521+12 + cmp r3, r10 + ldr r8, .L3521+52 + bcs .L3435 + ldr r3, .L3521+68 + movw lr, #65535 + ldr r8, [r5, #-3204] + mov ip, #36 + ldrh r9, [r3] + ldr r3, .L3521+52 + add r0, r3, #14 + ldrh r1, [r3, #2] + mov r3, #0 + mov r6, r3 + add r1, r1, r7 +.L3436: + uxth r2, r3 + cmp r2, r9 + bcs .L3519 + ldrh r2, [r0, #2]! + add r3, r3, #1 + cmp r2, lr + orrne r2, r1, r2, asl #10 + mlane fp, ip, r6, r8 + addne r6, r6, #1 + uxthne r6, r6 + strne r2, [fp, #4] + b .L3436 +.L3519: + ldr r0, [r5, #-3204] + mov r1, r6 + ldrb r2, [r5, #-3792] @ zero_extendqisi2 + mov r9, #0 + bl FlashReadPages +.L3431: + uxth r3, r9 + cmp r3, r6 + bcs .L3520 + mov r3, #36 + ldr r2, [r5, #-3204] + mul r8, r3, r9 + add r1, r2, r8 + ldr r2, [r2, r8] + ldr fp, [r1, #12] + cmn r2, #1 + beq .L3468 + ldrh r1, [fp] + movw r2, #61589 + cmp r1, r2 + bne .L3468 + add r1, sp, r3 + mov r2, #0 + ldr r0, [fp, #8] + str r3, [sp, #16] + bl log2phys + ldr r2, [r5, #-3204] + add r2, r2, r8 + ldr r0, [r2, #4] + ldr r1, [sp, #36] + ldr r3, [sp, #16] + bic r1, r1, #-2147483648 + cmp r1, r0 + bne .L3468 + ldr r1, .L3521+60 + ldr r0, .L3521+60 + ldr r2, [r2, #16] + ldrh r1, [r1] + str r3, [sp, #20] + add r1, r1, #1 + strh r1, [r0] @ movhi + ldr r0, [r5, #-3220] + ldr r1, [r5, #-2072] + mla r1, r3, r0, r1 + str r2, [r1, #16] + str r1, [sp, #16] + bl Ftl_get_new_temp_ppa + ldr r2, [r5, #-2072] + ldr r1, [sp, #16] + ldr r3, [sp, #20] + str r0, [r1, #4] + ldr r1, [r5, #-3220] + mla r3, r3, r1, r2 + ldr r2, [r5, #-3204] + add r2, r2, r8 + ldr r1, [r2, #8] + str r1, [r3, #8] + mov r1, #1 + ldr r2, [r2, #12] + str r2, [r3, #12] + ldr r3, [sp, #36] + str r3, [fp, #12] + ldr r3, .L3521+72 + ldrh r3, [r3] + strh r3, [fp, #2] @ movhi + ldr r3, [r5, #-3844] + ldr r0, [r5, #-3204] + str r3, [fp, #4] + add r0, r0, r8 + ldr r3, [r5, #-3220] + add r3, r3, #1 + str r3, [r5, #-3220] + bl FtlGcBufAlloc + ldr r3, .L3521 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cmp r3, #0 + bne .L3433 + ldrb r3, [r5, #-3937] @ zero_extendqisi2 + ldr r2, [r5, #-3220] + cmp r2, r3 + beq .L3433 + ldr r3, .L3521+72 + ldrh r3, [r3, #4] + cmp r3, #0 + bne .L3468 +.L3433: + bl Ftl_gc_temp_data_write_back + cmp r0, #0 + beq .L3468 + ldr r3, .L3521+12 + mov r2, #0 + mvn r1, #0 + sub r3, r3, #3792 + str r2, [r3, #1692] + strh r1, [r3, #-8] @ movhi + strh r2, [r3, #-6] @ movhi + b .L3516 +.L3468: + add r9, r9, #1 + b .L3431 +.L3520: + add r7, r7, #1 + b .L3428 +.L3435: + ldrh r3, [r8, #2] + add r10, r10, r3 + ldr r3, [sp, #8] + uxth r10, r10 + strh r10, [r8, #2] @ movhi + cmp r10, r3 + bcc .L3437 + ldr r3, [r6, #-3220] + cmp r3, #0 + beq .L3438 + bl Ftl_gc_temp_data_write_back + cmp r0, #0 + beq .L3438 + mov r3, #0 + str r3, [r6, #-2100] +.L3516: + ldr r3, .L3521+24 + ldrh r0, [r3] + b .L3358 +.L3438: + ldr r3, .L3521+60 + ldrh r5, [r3] + cmp r5, #0 + bne .L3439 + ldrh r3, [r8] + ldr r2, [r6, #-4060] + mov r3, r3, asl #1 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L3439 + ldr r7, .L3521 +.L3440: + ldr r3, [r7, #1932] + cmp r5, r3 + bcs .L3445 + mov r0, r5 + add r1, sp, #40 + mov r2, #0 + bl log2phys + ldr r0, [sp, #40] + cmn r0, #1 + beq .L3441 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r8] + cmp r3, r0 + bne .L3441 +.L3445: + ldr r3, .L3521 + ldr r3, [r3, #1932] + cmp r5, r3 + bcc .L3439 + ldrh r3, [r8] + mov r1, #0 + ldr r2, [r6, #-4060] + mov r3, r3, asl #1 + strh r1, [r2, r3] @ movhi + ldrh r0, [r8] + bl update_vpc_list + bl FtlCacheWriteBack + bl l2p_flush + bl FtlVpcTblFlush + b .L3439 +.L3441: + add r5, r5, #1 + b .L3440 +.L3439: + mvn r3, #0 + strh r3, [r8] @ movhi +.L3437: + ldr r3, .L3521+76 + ldrh r3, [r3] + cmp r3, #2 + ldrls r3, .L3521+36 + ldrlsh r10, [r3] + bls .L3447 +.L3446: + ldr r2, .L3521+12 + mov r1, #0 + str r1, [r2, #-2100] + ldr r2, .L3521+24 + ldrh r0, [r2] + cmp r0, r1 + addeq r0, r3, #1 +.L3358: + ldr r3, .L3521+4 + ldr r2, [sp, #44] + ldr r3, [r3] + cmp r2, r3 + beq .L3451 + bl __stack_chk_fail +.L3518: + sub r3, r9, #3168 + ldrh fp, [r3, #-14] + cmp fp, r4 + bne .L3374 + sub r3, r9, #4032 + ldr r1, [r9, #-3232] + ldrh r2, [r3, #-12] + cmp r2, #24 + movcc r2, #5120 + movcs r2, #1024 + cmp r1, r2 + movls r4, fp + bls .L3374 + ldr r1, .L3521+24 + mov r2, #0 + str r3, [sp, #16] + str r2, [r7, #-3232] + strh r2, [r1] @ movhi + bl GetSwlReplaceBlock + cmp r0, fp + mov r4, r0 + sub fp, r9, #3232 + ldr r3, [sp, #16] + bne .L3376 + ldrh r2, [r3, #-12] + ldrh r3, [fp, #-2] + cmp r2, r3 + bcs .L3377 + mov r0, #64 + bl List_get_gc_head_node + uxth r3, r0 + cmp r3, r4 + beq .L3386 + ldr r2, [r9, #-2104] + ldr r1, .L3521+80 + cmp r2, #0 + bne .L3379 + ldrh r0, [r1] + cmp r0, #3 + beq .L3379 + ldr r0, [r9, #-3752] + cmp r0, #0 + bne .L3379 + ldr r0, [r1, #-28] + cmp r0, #0 + bne .L3379 + ldrb r0, [r1, #-1684] @ zero_extendqisi2 + cmp r0, #0 + beq .L3380 +.L3379: + ldr r2, [r7, #-4060] + mov r3, r3, asl #1 + ldrh r1, [r1] + ldrh r0, [r2, r3] + movw r3, #1874 + movw r2, #1804 + ldrh r3, [r5, r3] + ldrh r2, [r5, r2] + cmp r1, #3 + mul r2, r2, r3 + moveq r3, r3, lsr #1 + movne r3, #0 + add r3, r2, r3 + cmp r0, r3 + bgt .L3382 + mov r0, #0 + bl List_get_gc_head_node + ldr r3, [r5, #1932] + ldr r2, [r7, #-3888] + add r3, r3, r3, asl #1 + cmp r2, r3, lsr #2 + movls r3, #160 + uxth r4, r0 + bls .L3514 + b .L3517 +.L3380: + ldr r2, [r9, #-4060] + mov r3, r3, asl #1 + ldrh r3, [r2, r3] + cmp r3, #7 + bhi .L3385 + bl List_get_gc_head_node + uxth r4, r0 +.L3517: + mov r3, #128 +.L3514: + strh r3, [fp, #-2] @ movhi + movw r3, #65535 + cmp r4, r3 + beq .L3386 + b .L3376 +.L3382: + mov r3, #128 + b .L3515 +.L3385: + mov r3, #64 + b .L3515 +.L3377: + mov r3, #80 +.L3515: + strh r3, [fp, #-2] @ movhi + b .L3386 +.L3376: + ldr r0, [r5, #4060] + mov r1, r4, asl #1 + ldr r3, [r7, #-4060] + ldrh r2, [r10, #-12] + ldrh r3, [r3, r1] + ldrh r1, [r0, r1] + ldr r0, .L3521+84 + str r1, [sp] + ldrh r1, [fp, #-4] + str r1, [sp, #4] + mov r1, r4 + bl printk +.L3386: + bl FtlGcReFreshBadBlk + b .L3374 +.L3451: + add sp, sp, #52 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3522: .align 2 -.L2222: +.L3521: .word .LANCHOR0 - .word .LANCHOR2 - .word -2008 + .word __stack_chk_guard .word .LANCHOR1 - .word -1900 + .word .LANCHOR2 + .word .LANCHOR2-3168 + .word .LANCHOR2-3792 + .word .LANCHOR4+444 + .word .LC151 + .word .LANCHOR2-4032 + .word .LANCHOR0+1872 + .word .LANCHOR2-3808 + .word .LANCHOR4 + .word .LANCHOR2-3984 + .word .LANCHOR2-3800 + .word .LANCHOR2-3228 + .word .LANCHOR4+446 + .word .LANCHOR0+1874 + .word .LANCHOR0+1804 + .word .LANCHOR2-3944 + .word .LANCHOR2-4044 + .word .LANCHOR0+1824 + .word .LC152 .fnend .size ftl_do_gc, .-ftl_do_gc .align 2 @@ -19782,240 +21254,225 @@ ftl_do_gc: .type FtlCacheWriteBack, %function FtlCacheWriteBack: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2247 - stmfd sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - .save {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - ldr r4, [r3, #444] - ldr r3, .L2247+4 - ldr r2, [r3, #4040] + ldr r3, .L3568 + stmfd sp!, {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 r2, [r3] + ldr r4, .L3568+4 + str r3, [sp, #4] + str r2, [sp, #12] + ldr r2, .L3568+8 + ldr r5, [r2, #452] + ldr r2, [r4, #4052] cmp r2, #0 - bne .L2225 - ldr r1, [r3, #3968] + bne .L3525 + ldr r1, [r4, #1924] cmp r1, #0 - beq .L2225 - ldrb r8, [r3, #928] @ zero_extendqisi2 - cmp r8, #0 - beq .L2226 - ldrb r8, [r4, #8] @ zero_extendqisi2 - sub r0, r8, #1 - rsbs r8, r0, #0 - adc r8, r8, r0 -.L2226: - ldr r5, .L2247+4 - mov r2, r8 - ldrb r3, [r4, #9] @ zero_extendqisi2 - mov r6, #0 - mov r7, r6 - ldr r9, .L2247 - ldr r0, [r5, #3972] + beq .L3525 + ldrb r6, [r4, #140] @ zero_extendqisi2 + mov r8, #0 + ldr r0, [r4, #1928] + cmp r6, #0 + ldrb r3, [r5, #9] @ zero_extendqisi2 + ldr r9, .L3568+4 + ldrneb r6, [r5, #8] @ zero_extendqisi2 + ldr r10, .L3568+12 + subne r6, r6, #1 + clzne r6, r6 + movne r6, r6, lsr #5 + mov r2, r6 bl FlashProgPages - b .L2227 -.L2232: - ldr r2, [r5, #3972] - add r3, r2, r6 - ldr r2, [r2, r6] - cmn r2, #1 - beq .L2246 - ldr r2, [r3, #4] - cmp r8, #0 - ldr r0, [r3, #16] - add r1, sp, #4 - str r2, [sp, #4] - orrne r2, r2, #-2147483648 - strne r2, [sp, #4] - mov r2, #1 - bl log2phys - ldr r3, [r5, #3972] - add r3, r3, r6 - ldr r3, [r3, #12] - ldr r0, [r3, #12] - cmn r0, #1 - beq .L2230 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r9, #-2016] - mov r3, r0, asl #1 - mov sl, r0 - ldrh r2, [r2, r3] - cmp r2, #0 - bne .L2231 - ldr r0, .L2247+8 - mov r1, sl - bl printk -.L2231: - mov r0, sl - bl decrement_vpc_count -.L2230: - add r7, r7, #1 - add r6, r6, #36 -.L2227: - ldr r3, [r5, #3968] - cmp r7, r3 - bcc .L2232 - b .L2233 -.L2242: - ldr r3, [r5, #3972] - mvn r2, #0 - ldr r7, .L2247 - str r2, [r3, r6] - b .L2234 -.L2238: - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r4, #0] - cmp r3, r0 - bne .L2235 - ldr r2, [r7, #-2016] - mov r3, r3, asl #1 - ldrh r1, [r4, #4] - ldrh r0, [r2, r3] - rsb r1, r1, r0 - strh r1, [r2, r3] @ movhi - movw r3, #3916 - ldrh r3, [r5, r3] - strh r3, [r4, #2] @ movhi - mov r3, #0 - strb r3, [r4, #6] - strh r3, [r4, #4] @ movhi -.L2235: - ldrh r3, [r4, #4] - cmp r3, #0 - bne .L2236 - mov r0, r4 - bl allocate_new_data_superblock -.L2236: - ldr r3, [r7, #-1612] - add r3, r3, #1 - str r3, [r7, #-1612] - ldr r3, [r5, #3972] - add r3, r3, r6 - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl FtlGcMarkBadPhyBlk - mov r0, r4 - bl get_new_active_ppa - mov r1, #1 - mov r2, r8 - mov r3, r0 - str r0, [sp, #4] - ldr r0, [r5, #3972] - add r0, r0, r6 - str r3, [r0, #4] - ldrb r3, [r4, #9] @ zero_extendqisi2 - bl FlashProgPages - ldr r3, [r5, #3972] - ldr r3, [r3, r6] +.L3528: + ldr r3, [r4, #1924] + cmp r8, r3 + bcs .L3546 + mov r7, #36 + ldr r3, [r9, #1928] + mul r7, r7, r8 + add r2, r3, r7 + ldr r3, [r3, r7] cmn r3, #1 - moveq r3, #1 - streq r3, [r5, #4040] - ldr r3, [r9, #4040] - cmp r3, #0 - bne .L2225 -.L2234: - ldr r2, [r5, #3972] - add r3, r2, r6 - ldr r2, [r2, r6] - cmn r2, #1 - beq .L2238 - ldr r2, [r3, #4] - cmp r8, #0 - ldr r0, [r3, #16] - add r1, sp, #4 - str r2, [sp, #4] - orrne r2, r2, #-2147483648 - strne r2, [sp, #4] + beq .L3550 + ldr r3, [r2, #4] + cmp r6, #0 + ldr r0, [r2, #16] + add r1, sp, #8 mov r2, #1 + orrne r3, r3, #-2147483648 + str r3, [sp, #8] bl log2phys - ldr r3, [r5, #3972] - add r3, r3, r6 - ldr r3, [r3, #12] + ldr r3, [r4, #1928] + add r7, r3, r7 + ldr r3, [r7, #12] ldr r0, [r3, #12] cmn r0, #1 - beq .L2240 + beq .L3532 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, .L2247 - ldr r2, [r3, #-2016] + ldr r2, [r10, #-4060] mov r3, r0, asl #1 mov r7, r0 ldrh r2, [r2, r3] cmp r2, #0 - bne .L2241 - ldr r0, .L2247+8 + bne .L3533 + ldr r0, .L3568+16 mov r1, r7 bl printk -.L2241: +.L3533: mov r0, r7 bl decrement_vpc_count -.L2240: - add sl, sl, #1 - add r6, r6, #36 - b .L2228 -.L2246: - ldr r5, .L2247+4 - mov r6, #0 - mov sl, r6 - mov r9, r5 -.L2228: - ldr r3, [r5, #3968] - cmp sl, r3 - bcc .L2242 - movw r4, #16386 - ldr r6, .L2247 - ldr r5, .L2247+12 - b .L2243 -.L2244: +.L3532: + add r8, r8, #1 + b .L3528 +.L3566: + ldr r6, .L3568+20 + movw r5, #16386 +.L3545: + ldrh r3, [r6] + cmp r3, #0 + beq .L3546 mov r0, #1 mov r1, r0 bl ftl_do_gc - subs r4, r4, #1 - beq .L2233 -.L2243: - ldrh r3, [r6, r5] + subs r5, r5, #1 + bne .L3545 +.L3546: + mov r3, #0 + str r3, [r4, #1924] + b .L3525 +.L3550: + ldr r10, .L3568+4 + mov r8, #0 + ldr r9, .L3568+12 +.L3529: + ldr r3, [r4, #1924] + cmp r8, r3 + bcs .L3566 + mov r7, #36 + ldr r3, [r10, #1928] + mul r7, r7, r8 + ldr fp, .L3568+24 + mvn r2, #0 + str r2, [r3, r7] +.L3535: + ldr r3, [r4, #1928] + add r2, r3, r7 + ldr r3, [r3, r7] + cmn r3, #1 + bne .L3567 + ldr r0, [r2, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r5] + cmp r3, r0 + bne .L3536 + ldr r1, [r9, #-4060] + mov r3, r3, asl #1 + ldrh r0, [r5, #4] + ldrh r2, [r1, r3] + rsb r2, r0, r2 + strh r2, [r1, r3] @ movhi + ldrh r3, [fp] + strh r3, [r5, #2] @ movhi + mov r3, #0 + strb r3, [r5, #6] + strh r3, [r5, #4] @ movhi +.L3536: + ldrh r3, [r5, #4] cmp r3, #0 - bne .L2244 -.L2233: - ldr r3, .L2247+4 - mov r2, #0 - str r2, [r3, #3968] -.L2225: + bne .L3537 + mov r0, r5 + bl allocate_new_data_superblock +.L3537: + ldr r3, [r9, #-3652] + add r3, r3, #1 + str r3, [r9, #-3652] + ldr r3, [r4, #1928] + add r3, r3, r7 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlGcMarkBadPhyBlk + mov r0, r5 + bl get_new_active_ppa + ldr r3, [r4, #1928] + mov r1, #1 + mov r2, r6 + add r3, r3, r7 + str r0, [sp, #8] + str r0, [r3, #4] + mov r0, r3 + ldrb r3, [r5, #9] @ zero_extendqisi2 + bl FlashProgPages + ldr r3, [r4, #1928] + ldr r3, [r3, r7] + cmn r3, #1 + moveq r3, #1 + streq r3, [r10, #4052] + ldr r3, [r4, #4052] + cmp r3, #0 + beq .L3535 + b .L3525 +.L3567: + ldr r3, [r2, #4] + cmp r6, #0 + ldr r0, [r2, #16] + add r1, sp, #8 + mov r2, #1 + orrne r3, r3, #-2147483648 + str r3, [sp, #8] + bl log2phys + ldr r3, [r4, #1928] + add r7, r3, r7 + ldr r3, [r7, #12] + ldr r0, [r3, #12] + cmn r0, #1 + beq .L3542 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r9, #-4060] + mov r3, r0, asl #1 + mov r7, r0 + ldrh r2, [r2, r3] + cmp r2, #0 + bne .L3543 + ldr r0, .L3568+16 + mov r1, r7 + bl printk +.L3543: + mov r0, r7 + bl decrement_vpc_count +.L3542: + add r8, r8, #1 + b .L3529 +.L3525: + ldr r3, [sp, #4] mov r0, #0 - ldmfd sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc} -.L2248: + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L3548 + bl __stack_chk_fail +.L3548: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3569: .align 2 -.L2247: - .word .LANCHOR2 +.L3568: + .word __stack_chk_guard .word .LANCHOR0 - .word .LC151 - .word -1134 + .word .LANCHOR4 + .word .LANCHOR2 + .word .LC153 + .word .LANCHOR2-3174 + .word .LANCHOR0+1872 .fnend .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 - .global ftl_cache_flush - .type ftl_cache_flush, %function -ftl_cache_flush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b FtlCacheWriteBack - .fnend - .size ftl_cache_flush, .-ftl_cache_flush - .align 2 - .global rk_ftl_cache_write_back - .type rk_ftl_cache_write_back, %function -rk_ftl_cache_write_back: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b FtlCacheWriteBack - .fnend - .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back - .align 2 .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: @@ -20024,22 +21481,27 @@ FtlSysFlush: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, lr} .save {r3, lr} - ldr r3, .L2253 - ldr r3, [r3, #4040] + ldr r3, .L3576 + ldr r3, [r3, #4052] cmp r3, #0 - bne .L2252 + bne .L3571 + ldr r3, .L3576+4 + ldr r3, [r3, #504] + cmn r3, #1 + beq .L3571 bl FtlCacheWriteBack bl l2p_flush mov r0, #1 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2252: +.L3571: mov r0, #0 ldmfd sp!, {r3, pc} -.L2254: +.L3577: .align 2 -.L2253: +.L3576: .word .LANCHOR0 + .word .LANCHOR1 .fnend .size FtlSysFlush, .-FtlSysFlush .align 2 @@ -20051,17 +21513,17 @@ FtlDeInit: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r3, lr} .save {r3, lr} - ldr r3, .L2257 - ldr r3, [r3, #3092] + ldr r3, .L3581 + ldr r3, [r3, #504] cmp r3, #1 - bne .L2256 + bne .L3579 bl FtlSysFlush -.L2256: +.L3579: mov r0, #0 ldmfd sp!, {r3, pc} -.L2258: +.L3582: .align 2 -.L2257: +.L3581: .word .LANCHOR1 .fnend .size FtlDeInit, .-FtlDeInit @@ -20090,332 +21552,153 @@ rk_ftl_de_init: stmfd sp!, {r3, lr} .save {r3, lr} mov r1, #0 - ldr r0, .L2261 + ldr r0, .L3587 bl printk ldmfd sp!, {r3, lr} b ftl_deinit -.L2262: +.L3588: .align 2 -.L2261: - .word .LC152 +.L3587: + .word .LC154 .fnend .size rk_ftl_de_init, .-rk_ftl_de_init .align 2 - .global rk_ftl_garbage_collect - .type rk_ftl_garbage_collect, %function -rk_ftl_garbage_collect: + .global ftl_cache_flush + .type ftl_cache_flush, %function +ftl_cache_flush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - b ftl_do_gc + b FtlCacheWriteBack .fnend - .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect + .size ftl_cache_flush, .-ftl_cache_flush .align 2 - .global ftl_fix_nand_power_lost_error - .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, .L2273 - stmfd sp!, {r4, r5, r6, r7, r8, sl, lr} - .save {r4, r5, r6, r7, r8, sl, lr} - .pad #52 - sub sp, sp, #52 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2264 - ldr r4, .L2273+4 - movw r3, #298 - ldr r0, .L2273+8 - movw r7, #4097 - ldrh r6, [r4, r3] - ldr r3, [r4, #-2016] - mov r5, r6, asl #1 - mov r1, r6 - ldrh r2, [r3, r5] - bl printk - ldr r3, .L2273+12 - ldrh r0, [r4, r3] - bl FtlGcRefreshOpenBlock - ldr r3, .L2273+16 - ldrh r0, [r4, r3] - bl FtlGcRefreshOpenBlock - ldr r0, .L2273+20 - bl allocate_new_data_superblock - ldr r0, .L2273+24 - bl allocate_new_data_superblock - b .L2266 -.L2268: - mov r0, #1 - mov r1, r0 - bl ftl_do_gc - ldr r3, [r4, #-2016] - ldrh r3, [r3, r5] - cmp r3, #0 - beq .L2267 -.L2266: - subs r7, r7, #1 - bne .L2268 -.L2267: - ldr r4, .L2273+4 - mov r1, r6 - ldr r0, .L2273+8 - ldr r3, [r4, #-2016] - ldrh r2, [r3, r5] - bl printk - ldr r3, [r4, #-2016] - ldrh r4, [r3, r5] - cmp r4, #0 - bne .L2269 - add r7, sp, #48 - mov r0, sp - strh r6, [r7, #-48]! @ movhi - add r7, r7, #14 - bl make_superblock - ldr r3, .L2273 - movw r2, #3848 - movw lr, #65535 - mov ip, #36 - mov r1, r4 - ldrh r8, [r3, r2] - ldr sl, [r3, #4044] - mov r3, r4 - b .L2270 -.L2272: - ldrh r0, [r7, #2]! - cmp r0, lr - beq .L2271 - mla r2, ip, r4, sl - add r4, r4, #1 - mov r0, r0, asl #10 - uxth r4, r4 - stmib r2, {r0, r1} - str r1, [r2, #12] -.L2271: - add r3, r3, #1 - uxth r3, r3 -.L2270: - cmp r3, r8 - bne .L2272 - ldr r3, .L2273+4 - mov r1, r6 - ldr r0, .L2273+28 - ldr r3, [r3, #-2016] - ldrh r2, [r3, r5] - ldr r5, .L2273 - bl printk - mov r1, #0 - mov r2, r4 - ldr r0, [r5, #4044] - bl FlashEraseBlocks - ldr r0, [r5, #4044] - mov r1, #1 - mov r2, r4 - bl FlashEraseBlocks -.L2269: - ldr r2, .L2273+4 - movw r3, #298 - mvn r1, #0 - strh r1, [r2, r3] @ movhi -.L2264: - add sp, sp, #52 - ldmfd sp!, {r4, r5, r6, r7, r8, sl, pc} -.L2274: - .align 2 -.L2273: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC153 - .word -1996 - .word -1948 - .word .LANCHOR2-1996 - .word .LANCHOR2-1948 - .word .LC154 - .fnend - .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error - .align 2 - .global FtlInit - .type FtlInit, %function -FtlInit: + .global rk_ftl_cache_write_back + .type rk_ftl_cache_write_back, %function +rk_ftl_cache_write_back: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 -.L2276: - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mvn r3, #0 - ldr r4, .L2286 - ldr r6, .L2286+4 - ldr r5, .L2286+8 - ldr r1, .L2286+12 - str r3, [r6, #3092] - mov r3, #0 - ldr r0, .L2286+16 - str r3, [r4, #4040] - str r3, [r5, #448] - bl printk - ldr r0, .L2286+20 - bl FtlConstantsInit - bl FtlMemInit - bl FtlVariablesInit - ldr r0, [r4, #3852] - uxth r0, r0 - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt - cmp r0, #0 - ldrne r0, .L2286+24 - bne .L2285 - bl FtlSysBlkInit - cmp r0, #0 - beq .L2279 - ldr r0, .L2286+28 -.L2285: - ldr r1, .L2286+32 - bl printk - b .L2278 -.L2279: - mov r1, #1 - str r1, [r6, #3092] - bl ftl_do_gc - ldr r3, .L2286+36 - ldrh r3, [r5, r3] - cmp r3, #15 - bhi .L2280 - mov r4, #1024 -.L2281: - mov r0, #1 - mov r1, r0 - bl ftl_do_gc - subs r4, r4, #1 - bne .L2281 - b .L2278 -.L2280: - ldrb r3, [r4, #928] @ zero_extendqisi2 - cmp r3, #0 - beq .L2278 - mov r4, #128 -.L2282: - mov r0, #1 - mov r1, r0 - bl ftl_do_gc - subs r4, r4, #1 - bne .L2282 -.L2278: - mov r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L2287: - .align 2 -.L2286: - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR2 - .word .LC78 - .word .LC77 - .word .LANCHOR0+3048 - .word .LC155 - .word .LC156 - .word .LANCHOR3+69 - .word -2000 + @ link register save eliminated. + b FtlCacheWriteBack .fnend - .size FtlInit, .-FtlInit + .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back .align 2 .global ftl_discard .type ftl_discard, %function ftl_discard: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, lr} - .save {r0, r1, r2, r4, r5, r6, r7, lr} - add r2, r1, r0 - ldr r5, .L2298 + stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + .pad #20 + sub sp, sp, #20 + ldr r6, .L3611 + add r2, r0, r1 + ldr r4, .L3611+4 mov r7, r0 - mov r4, r1 - ldr r3, [r5, #3956] + mov r5, r1 + ldr r3, [r6] + str r3, [sp, #12] + ldr r3, [r4, #1912] cmp r2, r3 mvnhi r0, #0 - bhi .L2289 + bhi .L3592 + ldr r3, .L3611+8 + ldr r0, [r3, #504] + cmn r0, #1 + beq .L3592 cmp r1, #31 - bls .L2296 - ldr r3, [r5, #4040] + bls .L3602 + ldr r3, [r4, #4052] cmp r3, #0 - bne .L2296 + bne .L3602 bl FtlCacheWriteBack - movw r3, #3922 - ldrh r6, [r5, r3] + movw r3, #1878 + ldrh r4, [r4, r3] mov r0, r7 - mov r1, r6 + mov r1, r4 bl __aeabi_uidiv - mls r7, r0, r6, r7 - mov r5, r0 + smulbb r3, r0, r4 + mov r8, r0 + rsb r7, r3, r7 uxth r7, r7 cmp r7, #0 - beq .L2290 - rsb r6, r7, r6 - add r5, r0, #1 - cmp r6, r4 - movcs r6, r4 - uxth r6, r6 - rsb r4, r6, r4 -.L2290: + beq .L3593 + rsb r4, r7, r4 + add r8, r0, #1 + cmp r4, r5 + movcs r4, r5 + uxth r4, r4 + rsb r5, r4, r5 +.L3593: + ldr r4, .L3611+12 mvn r3, #0 - ldr r7, .L2298 - str r3, [sp, #4] - movw r6, #3922 - b .L2291 -.L2293: - mov r0, r5 - mov r1, sp + ldr r9, .L3611+16 + str r3, [sp, #8] + mov r7, r4 +.L3594: + ldrh r3, [r4] + cmp r5, r3 + bcc .L3610 + mov r0, r8 + add r1, sp, #4 mov r2, #0 bl log2phys - ldr r3, [sp, #0] + ldr r3, [sp, #4] cmn r3, #1 - beq .L2292 - ldr r3, .L2298+4 - add r1, sp, #4 - mov r0, r5 - ldr r2, [r3, #452] - add r2, r2, #1 - str r2, [r3, #452] - ldr r2, [r3, #-1832] - add r2, r2, #1 - str r2, [r3, #-1832] + beq .L3595 + ldr r2, .L3611+20 + add r1, sp, #8 + ldr r3, [r9, #456] + mov r0, r8 + add r3, r3, #1 + str r3, [r9, #456] + ldr r3, [r2, #-3876] + add r3, r3, #1 + str r3, [r2, #-3876] mov r2, #1 bl log2phys - ldr r0, [sp, #0] + ldr r0, [sp, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl decrement_vpc_count -.L2292: - ldrh r3, [r7, r6] - add r5, r5, #1 - rsb r4, r3, r4 -.L2291: - ldrh r3, [r7, r6] - cmp r4, r3 - bcs .L2293 - ldr r3, .L2298+4 - mov r4, #0 - ldr r2, [r3, #452] +.L3595: + ldrh r3, [r7] + add r8, r8, #1 + rsb r5, r3, r5 + b .L3594 +.L3610: + ldr r3, .L3611+16 + ldr r2, [r3, #456] cmp r2, #32 - bls .L2297 - str r4, [r3, #452] + bls .L3602 + mov r2, #0 + str r2, [r3, #456] bl l2p_flush bl FtlVpcTblFlush - b .L2297 -.L2296: +.L3602: mov r0, #0 - b .L2289 -.L2297: - mov r0, r4 -.L2289: - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, pc} -.L2299: +.L3592: + ldr r2, [sp, #12] + ldr r3, [r6] + cmp r2, r3 + beq .L3598 + bl __stack_chk_fail +.L3598: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} +.L3612: .align 2 -.L2298: +.L3611: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR0+1878 + .word .LANCHOR4 .word .LANCHOR2 .fnend .size ftl_discard, .-ftl_discard @@ -20431,922 +21714,372 @@ FtlDiscard: .fnend .size FtlDiscard, .-FtlDiscard .align 2 - .type ftl_write.part.23, %function -ftl_write.part.23: - .fnstart - @ args = 0, pretend = 0, frame = 96 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r3, #2048 - ldr r4, .L2346 - .pad #100 - sub sp, sp, #100 - ldr r8, .L2346+4 - mov r5, r1 - mov r7, r0 - mov r9, r2 - str r3, [r4, #456] - movw r3, #3922 - ldrh r6, [r8, r3] - mov r1, r6 - bl __aeabi_uidiv - mov r1, r6 - str r0, [sp, #16] - sub r0, r7, #1 - add r0, r0, r5 - bl __aeabi_uidiv - ldr r3, [sp, #16] - ldr sl, [r8, #3968] - cmp sl, #0 - rsb fp, r3, r0 - str r0, [sp, #36] - add r3, fp, #1 - str r3, [sp, #20] - ldr lr, [sp, #20] - ldr r3, [r4, #-1828] - add r3, lr, r3 - str r3, [r4, #-1828] - ldr r3, [r4, #-1812] - add r3, r5, r3 - str r3, [r4, #-1812] - beq .L2334 - ldr r3, [r8, #3972] - sub sl, sl, #1 - mov r2, #36 - ldr r0, [sp, #16] - mla sl, r2, sl, r3 - ldr r3, [sl, #16] - cmp r0, r3 - strne r5, [sp, #32] - bne .L2303 - ldr r3, [r4, #-1824] - mov r0, r7 - mov r1, r6 - add r3, r3, #1 - str r3, [r4, #-1824] - ldr r3, [r4, #460] - add r3, r3, #1 - str r3, [r4, #460] - bl __aeabi_uidivmod - ldr r0, [sl, #8] - rsb r8, r1, r6 - add r0, r0, r1, asl #9 - cmp r8, r5 - movcs r8, r5 - mov r1, r9 - mov r3, r8, asl #9 - str r3, [sp, #4] - mov r2, r3 - bl memcpy - cmp fp, #0 - ldr r3, [sp, #4] - bne .L2304 - ldr r2, [r4, #460] - cmp r2, #2 - ble .L2305 -.L2304: - add r9, r9, r3 - add r7, r7, r8 - ldr r3, [sp, #16] - rsb r1, r8, r5 - str fp, [sp, #20] - add r3, r3, #1 - str r1, [sp, #32] - str r3, [sp, #16] -.L2303: - ldr r3, .L2346 - mov r2, #0 - str r2, [r3, #460] - b .L2302 -.L2334: - str r5, [sp, #32] -.L2302: - ldr r0, [sp, #16] - ldr r1, [sp, #36] - bl FtlCacheMetchLpa - cmp r0, #0 - beq .L2306 - bl FtlCacheWriteBack -.L2306: - cmp r5, r6, asl #1 - ldr r3, .L2346 - ldr r4, .L2346+4 - mov fp, #0 - movcc r6, #0 - movcs r6, #1 - str r6, [sp, #24] - ldr r6, .L2346+8 - ldr r5, [sp, #16] - mov sl, r4 - str fp, [sp, #40] - str r6, [r3, #444] - b .L2343 -.L2332: - ldrh r1, [r6, #4] - cmp r1, #0 - bne .L2308 - ldr r2, .L2346+8 - ldr r3, .L2346+12 - cmp r6, r2 - bne .L2309 - ldr r2, .L2346+16 - ldrh r8, [r8, r2] - cmp r8, #0 - bne .L2310 - ldr r0, .L2346+20 - str r3, [sp, #4] - bl allocate_new_data_superblock - ldr r3, [sp, #4] - str r8, [r3, #3100] -.L2310: - ldr r0, .L2346+8 - str r3, [sp, #4] - bl allocate_new_data_superblock - ldr r3, [sp, #4] - ldr r2, [r3, #3100] - ldr r3, .L2346+20 - cmp r2, #0 - movne r6, r3 - b .L2311 -.L2309: - str r1, [r3, #3100] - ldr r3, .L2346+24 - ldrh r3, [r8, r3] - cmp r3, #0 - movne r6, r2 - bne .L2311 - mov r0, r6 - bl allocate_new_data_superblock -.L2311: - ldrh r3, [r6, #4] - cmp r3, #0 - bne .L2312 - mov r0, r6 - bl allocate_new_data_superblock -.L2312: - ldr r3, .L2346 - str r6, [r3, #444] -.L2308: - ldr r2, .L2346 - mov r8, r6 - ldrh r3, [r6, #4] - ldr r1, [r2, #-972] - ldr r2, [r4, #3968] - rsb r2, r2, r1 - cmp r3, r2 - movcc r2, r3 - ldr r3, [sp, #20] - cmp r2, r3 - movcc r3, r2 - str r3, [sp, #52] - mov r3, #0 - str r3, [sp, #28] - b .L2313 -.L2329: - ldrh r3, [r8, #4] - cmp r3, #0 - beq .L2314 - ldr r6, [sp, #36] - rsb lr, r6, r5 - ldr r6, [sp, #24] - rsbs r3, lr, #0 - adc r3, r3, lr - tst r3, r6 - beq .L2315 - ldr r6, [sp, #28] - cmp r6, #0 - beq .L2315 - movw lr, #3922 - ldr r6, [sp, #32] - ldrh r2, [r4, lr] - add r1, r6, r7 - mls r1, r2, r5, r1 - cmp r1, r2 - bne .L2314 -.L2315: - add r1, sp, #56 - mov r2, #0 - mov r0, r5 - str r3, [sp, #4] - bl log2phys - mov r0, r8 - bl get_new_active_ppa - ldr lr, [r4, #3968] - ldr r1, [r4, #3972] - movw r2, #3928 - mov ip, #36 - ldrh r2, [r4, r2] - ldr r6, .L2346 - mla r1, ip, lr, r1 - mul lr, lr, r2 - ldr r6, [r6, #-924] - bic lr, lr, #3 - str r6, [sp, #48] - str lr, [sp, #44] - add r6, r6, lr - str r5, [r1, #16] - str r6, [r1, #12] - str r0, [r1, #4] - movw r0, #3926 - ldrh lr, [r4, r0] - ldr r0, [r4, #3968] - mul lr, r0, lr - ldr r0, .L2346 - bic lr, lr, #3 - str lr, [sp, #12] - ldr lr, [r0, #-944] - ldr r0, [sp, #12] - add lr, lr, r0 - mov r0, r6 - str lr, [r1, #8] - mov r1, #0 - str ip, [sp, #8] - bl ftl_memset - ldr r1, [sp, #16] - ldr r3, [sp, #4] - rsb ip, r1, r5 - rsbs r1, ip, #0 - adc r1, r1, ip - str r1, [sp, #12] - orrs r1, r1, r3 - ldr ip, [sp, #8] - beq .L2316 - ldr r2, [sp, #12] - cmp r2, #0 - beq .L2317 - movw r3, #3922 - mov r0, r7 - ldrh fp, [r4, r3] - mov r1, fp - bl __aeabi_uidivmod - ldr r3, [sp, #32] - rsb fp, r1, fp - str r1, [sp, #40] - cmp fp, r3 - movcs fp, r3 - b .L2318 -.L2317: - cmp r3, #0 - beq .L2318 - ldr r3, [sp, #32] - movw lr, #3922 - add fp, r3, r7 - ldrh r3, [r4, lr] - mls fp, r3, r5, fp - ldr r3, [sp, #12] - str r3, [sp, #40] - uxth fp, fp -.L2318: - movw lr, #3922 - ldrh r3, [r4, lr] - cmp fp, r3 - bne .L2319 - ldr r3, [sp, #12] - ldr r0, [sl, #3968] - cmp r3, #0 - ldr r2, [sl, #3972] - ldr r3, [sp, #24] - muleq r1, r5, fp - movne r1, r9 - rsbeq r1, r7, r1 - addeq r1, r9, r1, asl #9 - cmp r3, #0 - mov r3, #36 - mla r3, r3, r0, r2 - strne r1, [r3, #8] - bne .L2322 - ldr r0, [r3, #8] - movw r3, #3926 - ldrh r2, [sl, r3] - b .L2344 -.L2319: - ldr r2, [sp, #56] - mov r3, #36 - cmn r2, #1 - beq .L2323 - ldr r1, [r4, #3968] - add r0, sp, #60 - str r2, [sp, #64] - ldr r2, [r4, #3972] - str r5, [sp, #76] - mla r3, r3, r1, r2 - mov r1, #1 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [sp, #68] - mov r2, #0 - str r3, [sp, #72] - bl FlashReadPages - ldr r3, [sp, #60] - cmn r3, #1 - ldr r3, .L2346 - ldreq r2, [r3, #-1636] - addeq r2, r2, #1 - streq r2, [r3, #-1636] - beq .L2325 - ldr r2, [r6, #8] - cmp r2, r5 - beq .L2325 - ldr r2, [r3, #-1636] - ldr r0, .L2346+28 - add r2, r2, #1 - str r2, [r3, #-1636] - mov r2, r5 - ldr r1, [r6, #8] - bl printk - b .L2325 -.L2323: - ldr r1, [r4, #3968] - ldr r2, [r4, #3972] - mla r3, r3, r1, r2 - mov r1, #0 - ldr r0, [r3, #8] - movw r3, #3926 - ldrh r2, [r4, r3] - bl ftl_memset -.L2325: - ldr r3, [sp, #12] - ldr r1, [r4, #3968] - cmp r3, #0 - ldr r2, [r4, #3972] - mov r3, #36 - movweq lr, #3922 - mla r3, r3, r1, r2 - ldreqh r1, [r4, lr] - movne r1, r9 - mov r2, fp, asl #9 - muleq r1, r1, r5 - ldrne r0, [r3, #8] - ldrne r3, [sp, #40] - rsbeq r1, r7, r1 - ldreq r0, [r3, #8] - addne r0, r0, r3, asl #9 - addeq r1, r9, r1, asl #9 - b .L2344 -.L2316: - ldr r3, [sp, #24] - ldr r2, [r4, #3968] - cmp r3, #0 - ldr r3, [r4, #3972] - mla ip, ip, r2, r3 - beq .L2327 - movw lr, #3922 - ldrh r3, [r4, lr] - mul r3, r3, r5 - rsb r3, r7, r3 - add r3, r9, r3, asl #9 - str r3, [ip, #8] - b .L2322 -.L2327: - movw r0, #3922 - movw r3, #3926 - ldrh r1, [r4, r0] - ldrh r2, [r4, r3] - ldr r0, [ip, #8] - mul r1, r1, r5 - rsb r1, r7, r1 - add r1, r9, r1, asl #9 -.L2344: - bl memcpy -.L2322: - ldr r3, .L2346+32 - ldr r0, [sp, #48] - ldr lr, [sp, #44] - strh r3, [r0, lr] @ movhi - ldr r3, .L2346 - str r5, [r6, #8] - add r5, r5, #1 - ldr r2, [r3, #-1800] - str r2, [r6, #4] - add r2, r2, #1 - cmn r2, #1 - str r2, [r3, #-1800] - moveq r2, #0 - streq r2, [r3, #-1800] - ldr r3, [sp, #56] - str r3, [r6, #12] - ldrh r3, [r8, #0] - strh r3, [r6, #2] @ movhi - ldr r3, [r4, #3968] - add r3, r3, #1 - str r3, [r4, #3968] - ldr r3, [sp, #28] - add r3, r3, #1 - str r3, [sp, #28] -.L2313: - ldr r6, [sp, #28] - ldr r3, [sp, #52] - cmp r6, r3 - bne .L2329 -.L2314: - ldr r3, [sp, #20] - mov r6, r8 - ldr lr, [sp, #28] - ldr r2, [r4, #3968] - rsb r3, lr, r3 - str r3, [sp, #20] - ldr r3, .L2346 - ldr r0, [sp, #24] - ldr r3, [r3, #-972] - cmp r2, r3 - orrcs r0, r0, #1 - uxtb r3, r0 - cmp r3, #0 - bne .L2330 - ldrh r2, [r8, #4] - cmp r2, #0 - bne .L2340 -.L2330: - bl FtlCacheWriteBack - ldr lr, [sp, #20] - mov r3, #0 - str r3, [sl, #3968] - cmp lr, #1 - ldr r3, [sp, #24] - movls r3, #0 -.L2340: - str r3, [sp, #24] -.L2343: - ldr r3, [sp, #20] - ldr r8, .L2346 - cmp r3, #0 - bne .L2332 - mov r0, r3 - ldr r6, [sp, #36] - ldr r3, [sp, #16] - rsb r1, r3, r6 - bl ftl_do_gc - ldr r3, .L2346+36 - ldrh r3, [r8, r3] - cmp r3, #31 - bhi .L2305 - ldr r2, .L2346+40 - mov r3, #128 - ldr r5, .L2346+4 - mov r4, #16 - strh r3, [r8, r2] @ movhi - sub r2, r2, #2 - strh r3, [r8, r2] @ movhi -.L2333: - mov r0, #0 - mov r1, #1 - bl ftl_do_gc - ldr r3, [r5, #4040] - cmp r3, #0 - bne .L2305 - subs r4, r4, #1 - bne .L2333 -.L2305: - mov r0, #0 - add sp, sp, #100 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2347: - .align 2 -.L2346: - .word .LANCHOR2 - .word .LANCHOR0 - .word .LANCHOR2-1996 - .word .LANCHOR1 - .word -1944 - .word .LANCHOR2-1948 - .word -1992 - .word .LC157 - .word -3947 - .word -2000 - .word -1194 - .fnend - .size ftl_write.part.23, .-ftl_write.part.23 - .align 2 - .global ftl_write - .type ftl_write, %function -ftl_write: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - mov ip, r0 - mov r0, r1 - mov r1, r2 - mov r2, r3 - ldr r3, .L2353 - stmfd sp!, {r4, lr} - .save {r4, lr} - ldr r4, [r3, #4040] - cmp r4, #0 - movne r0, #0 - ldmnefd sp!, {r4, pc} - cmp ip, #16 - bne .L2350 - add r0, r0, #256 - ldmfd sp!, {r4, lr} - b FtlVendorPartWrite -.L2350: - ldr r3, [r3, #3956] - add ip, r1, r0 - cmp ip, r3 - bhi .L2352 - ldmfd sp!, {r4, lr} - b ftl_write.part.23 -.L2352: - mvn r0, #0 - ldmfd sp!, {r4, pc} -.L2354: - .align 2 -.L2353: - .word .LANCHOR0 - .fnend - .size ftl_write, .-ftl_write - .align 2 - .global ftl_sys_write - .type ftl_sys_write, %function -ftl_sys_write: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - mov ip, r1 - mov r3, r2 - add r1, r0, #256 - mov r2, ip - mov r0, #16 - b ftl_write - .fnend - .size ftl_sys_write, .-ftl_sys_write - .align 2 - .global StorageSysDataStore - .type StorageSysDataStore, %function -StorageSysDataStore: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - bl rknand_device_lock - mov r2, r4 - mov r1, #1 - mov r0, r5 - bl ftl_sys_write - mov r4, r0 - bl rknand_device_unlock - mov r0, r4 - ldmfd sp!, {r3, r4, r5, pc} - .fnend - .size StorageSysDataStore, .-StorageSysDataStore - .align 2 - .global ftl_vendor_write - .type ftl_vendor_write, %function -ftl_vendor_write: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - mov ip, r1 - mov r3, r2 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #16 - mov r2, ip - ldmfd sp!, {r4, lr} - b ftl_write - .fnend - .size ftl_vendor_write, .-ftl_vendor_write - .align 2 - .global FlashBootVendorWrite - .type FlashBootVendorWrite, %function -FlashBootVendorWrite: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl rknand_device_lock - mov r2, r4 - mov r1, r5 - mov r0, r6 - bl ftl_vendor_write - mov r4, r0 - bl rknand_device_unlock - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} - .fnend - .size FlashBootVendorWrite, .-FlashBootVendorWrite - .align 2 .global ftl_read .type ftl_read, %function ftl_read: .fnstart @ args = 0, pretend = 0, frame = 56 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - cmp r0, #16 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r3 + ldr r3, .L3662 .pad #84 sub sp, sp, #84 - mov r6, r1 - mov r8, r3 - str r2, [sp, #48] - bne .L2360 + str r2, [sp, #36] + ldr r3, [r3] + str r3, [sp, #76] + ldr r3, .L3662+4 + ldr r3, [r3, #504] + cmn r3, #1 + moveq r0, r3 + beq .L3615 + cmp r0, #16 + mov r7, r1 + bne .L3616 add r0, r1, #256 mov r1, r2 - mov r2, r3 + mov r2, r8 bl FtlVendorPartRead - str r0, [sp, #36] - b .L2361 -.L2360: - ldr r3, .L2391 - ldr r1, [sp, #48] - ldr r2, [r3, #3956] - add r1, r1, r6 - str r1, [sp, #40] + b .L3615 +.L3616: + ldr r3, [sp, #36] + add r3, r1, r3 + str r3, [sp, #40] + ldr r3, .L3662+8 + ldr r1, [sp, #40] + ldr r2, [r3, #1912] cmp r1, r2 - mvnhi r3, #0 - strhi r3, [sp, #36] - bhi .L2361 - movw r2, #3922 - mov r0, r6 + mvnhi r0, #0 + bhi .L3615 + movw r2, #1878 + mov r0, r7 ldrh r4, [r3, r2] mov r1, r4 bl __aeabi_uidiv - ldr r2, [sp, #40] mov r1, r4 - str r0, [sp, #28] - sub r0, r2, #1 + ldr r3, [sp, #40] + mov r10, r0 + sub r0, r3, #1 bl __aeabi_uidiv - ldr r1, [sp, #28] - rsb r3, r1, #1 - ldr r1, [sp, #48] + rsb r3, r10, #1 add r3, r3, r0 - str r3, [sp, #24] - ldr r3, .L2391+4 + str r3, [sp, #28] + ldr r3, .L3662+12 + ldr r1, [sp, #36] str r0, [sp, #32] - ldr r0, [sp, #28] - ldr r2, [r3, #-1808] + mov r0, r10 + ldr r2, [r3, #-3852] add r2, r1, r2 - ldr r1, [sp, #24] - str r2, [r3, #-1808] - ldr r2, [r3, #-1836] + ldr r1, [sp, #28] + str r2, [r3, #-3852] + ldr r2, [r3, #-3880] add r2, r1, r2 ldr r1, [sp, #32] - str r2, [r3, #-1836] + str r2, [r3, #-3880] bl FtlCacheMetchLpa cmp r0, #0 - beq .L2362 + beq .L3617 bl FtlCacheWriteBack -.L2362: +.L3617: + ldr r4, .L3662+12 mov r9, #0 - ldr r5, [sp, #28] + mov r5, r10 + mov r6, r9 + str r9, [sp, #48] str r9, [sp, #52] - mov r4, r9 - str r9, [sp, #36] - mov r7, r6 - ldr sl, .L2391 - b .L2386 -.L2380: - mov r2, #0 +.L3618: + ldr r3, [sp, #28] + cmp r3, #0 + beq .L3661 mov r0, r5 - add r1, sp, #76 + add r1, sp, #72 + mov r2, #0 bl log2phys - ldr r2, [sp, #76] - cmn r2, #1 - bne .L2387 - b .L2390 -.L2367: - mla r0, r0, r5, r6 - cmp r0, r7 - bcc .L2366 + ldr r3, [sp, #72] + cmn r3, #1 + bne .L3657 + mov fp, #0 +.L3619: + ldr r3, .L3662+16 + ldrh r0, [r3] + cmp fp, r0 + bcs .L3623 + mla r0, r0, r5, fp ldr r2, [sp, #40] + cmp r0, r7 + movcs r3, #1 + movcc r3, #0 cmp r0, r2 - bcs .L2366 + movcs r3, #0 + cmp r3, #0 + beq .L3621 rsb r0, r7, r0 mov r1, #0 mov r2, #512 add r0, r8, r0, asl #9 bl ftl_memset -.L2366: - add r6, r6, #1 - b .L2364 -.L2390: - mov r6, #0 - movw fp, #3922 -.L2364: - ldrh r0, [sl, fp] - cmp r6, r0 - bcc .L2367 - b .L2368 -.L2387: - ldr r3, .L2391+4 - mov r6, #36 - ldr r1, [r3, #-968] - mla r6, r6, r4, r1 - ldr r1, [sp, #28] - cmp r5, r1 - str r2, [r6, #4] - movw r2, #3922 - bne .L2369 - ldrh fp, [sl, r2] +.L3621: + add fp, fp, #1 + b .L3619 +.L3657: + ldr r2, [r4, #-2076] + mov fp, #36 + cmp r5, r10 + mla fp, fp, r6, r2 + str r3, [fp, #4] + bne .L3624 + ldr r3, [r4, #-2048] mov r0, r7 - ldr r3, [r3, #-940] - mov r1, fp - str r3, [r6, #8] + str r3, [fp, #8] + ldr r3, .L3662+16 + ldrh ip, [r3] + mov r1, ip + str ip, [sp, #44] bl __aeabi_uidivmod - ldr r2, [sp, #48] - rsb r3, r1, fp + ldr ip, [sp, #44] + ldr r2, [sp, #36] + rsb r3, r1, ip str r1, [sp, #56] cmp r3, r2 - movcc r2, r3 - str r2, [sp, #52] - cmp r2, fp - streq r8, [r6, #8] - b .L2370 -.L2369: - ldr r1, [sp, #32] - cmp r5, r1 - ldrneh r3, [sl, r2] - mulne r3, r3, r5 - bne .L2388 - ldr r3, [r3, #-936] - ldrh r2, [sl, r2] + movcs r3, r2 + cmp r3, ip + str r3, [sp, #48] + streq r8, [fp, #8] + b .L3625 +.L3624: + ldr r3, [sp, #32] + cmp r5, r3 + bne .L3626 + ldr r3, [r4, #-2044] ldr r1, [sp, #40] - str r3, [r6, #8] + str r3, [fp, #8] + ldr r3, .L3662+16 + ldrh r2, [r3] mul r3, r2, r5 rsb r9, r3, r1 cmp r9, r2 - bne .L2370 -.L2388: + bne .L3625 + b .L3659 +.L3626: + ldr r3, .L3662+16 + ldrh r3, [r3] + mul r3, r3, r5 +.L3659: rsb r3, r7, r3 add r3, r8, r3, asl #9 - str r3, [r6, #8] -.L2370: - movw r3, #3928 - ldr r2, .L2391+4 - ldrh r3, [sl, r3] - str r5, [r6, #16] - ldr r2, [r2, #-928] - mul r3, r3, r4 - add r4, r4, #1 + str r3, [fp, #8] +.L3625: + ldr r3, .L3662+20 + ldr r2, [r4, #-2036] + str r5, [fp, #16] + ldrh r3, [r3] + mul r3, r3, r6 + add r6, r6, #1 bic r3, r3, #3 add r3, r2, r3 - str r3, [r6, #12] -.L2368: - ldr r2, [sp, #24] + str r3, [fp, #12] +.L3623: + ldr r3, [sp, #28] add r5, r5, #1 - subs r2, r2, #1 - str r2, [sp, #24] - beq .L2372 - movw r3, #3848 - ldrh r3, [sl, r3] - cmp r4, r3, asl #3 - bne .L2386 -.L2372: - cmp r4, #0 - beq .L2386 - ldr r6, .L2391+4 - mov r1, r4 + subs r3, r3, #1 + str r3, [sp, #28] + beq .L3627 + ldr r3, .L3662+24 + ldrh r3, [r3] + cmp r6, r3, asl #3 + bne .L3618 +.L3627: + cmp r6, #0 + beq .L3618 + ldr r0, [r4, #-2076] + mov r1, r6 mov r2, #0 - mov fp, r5 - mov r5, r4 - ldr r0, [r6, #-968] bl FlashReadPages ldr r3, [sp, #56] - ldr r1, [sp, #52] - mov r2, r9, asl #9 - str r2, [sp, #68] mov r3, r3, asl #9 str r3, [sp, #60] - mov r1, r1, asl #9 + ldr r3, [sp, #48] + mov r3, r3, asl #9 + str r3, [sp, #64] + mov r3, r9, asl #9 + str r3, [sp, #68] mov r3, #0 - str r1, [sp, #64] str r3, [sp, #44] -.L2379: - ldr r1, [sp, #44] - mov r4, #36 - ldr r3, [r6, #-968] - mul r4, r4, r1 - ldr r1, [sp, #28] - add r3, r3, r4 +.L3634: + ldr r3, [sp, #44] + mov ip, #36 + mul fp, ip, r3 + ldr r3, [r4, #-2076] + add r3, r3, fp ldr r2, [r3, #16] - cmp r2, r1 - bne .L2374 + cmp r2, r10 + bne .L3629 ldr r1, [r3, #8] - ldr r3, [r6, #-940] + ldr r3, [r4, #-2048] cmp r1, r3 - bne .L2375 - ldr r2, [sp, #60] + bne .L3630 + ldr r3, [sp, #60] mov r0, r8 - add r1, r1, r2 ldr r2, [sp, #64] - b .L2389 -.L2374: + add r1, r1, r3 + b .L3660 +.L3629: ldr r1, [sp, #32] cmp r2, r1 - bne .L2375 + bne .L3630 ldr r1, [r3, #8] - ldr r3, [r6, #-936] + ldr r3, [r4, #-2044] cmp r1, r3 - bne .L2375 - movw r2, #3922 - ldr r3, [sp, #32] - ldrh r0, [sl, r2] + bne .L3630 + ldr r3, .L3662+16 ldr r2, [sp, #68] + ldrh r0, [r3] + ldr r3, [sp, #32] mul r0, r0, r3 rsb r0, r7, r0 add r0, r8, r0, asl #9 -.L2389: - bl memcpy -.L2375: - ldr r2, [r6, #-968] - add r3, r2, r4 - ldr r2, [r2, r4] - cmn r2, #1 - streq r2, [sp, #36] - ldreq r1, [r6, #-1636] - addeq r1, r1, #1 - streq r1, [r6, #-1636] +.L3660: + bl ftl_memcpy +.L3630: + ldr r2, [r4, #-2076] + add r3, r2, fp + ldr r1, [r2, fp] + cmn r1, #1 + streq r1, [sp, #52] + ldreq r2, [r4, #-3676] + addeq r2, r2, #1 + streq r2, [r4, #-3676] ldr r2, [r3, #12] ldr r1, [r3, #16] ldr r2, [r2, #8] cmp r1, r2 - beq .L2377 - ldr r2, [r6, #-1636] - ldr r0, .L2391+8 + beq .L3632 + ldr r2, [r4, #-3676] + ldr r0, .L3662+28 add r2, r2, #1 - str r2, [r6, #-1636] - ldr ip, [r3, #12] + str r2, [r4, #-3676] + ldr lr, [r3, #12] ldr r2, [r3, #8] - ldr r1, [ip, #4] - str r1, [sp, #0] - ldr r1, [ip, #8] + ldr r1, [lr, #4] + str r1, [sp] + ldr r1, [lr, #8] str r1, [sp, #4] - ldr r1, [ip, #12] + ldr r1, [lr, #12] str r1, [sp, #8] - ldr r1, [r2, #0] + 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, [ip, #0] + ldr r3, [lr] bl printk -.L2377: - ldr r3, [r6, #-968] - add r2, r3, r4 - ldr r3, [r3, r4] +.L3632: + ldr r3, [r4, #-2076] + add r2, r3, fp + ldr r3, [r3, fp] cmp r3, #256 - bne .L2378 + bne .L3633 ldr r0, [r2, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L2378: - ldr r1, [sp, #44] - add r1, r1, #1 - str r1, [sp, #44] - cmp r1, r5 - bne .L2379 - mov r5, fp - mov r4, #0 -.L2386: - ldr r2, [sp, #24] - cmp r2, #0 - bne .L2380 - ldr r3, .L2391+12 - ldr r2, .L2391+4 - ldrh r3, [r2, r3] +.L3633: + ldr r3, [sp, #44] + add r3, r3, #1 + str r3, [sp, #44] + cmp r3, r6 + bne .L3634 + mov r6, #0 + b .L3618 +.L3661: + ldr r3, .L3662+32 + ldrh r3, [r3, #-6] cmp r3, #0 - beq .L2361 - ldr r0, [sp, #24] + beq .L3636 + ldr r0, [sp, #28] mov r1, #1 bl ftl_do_gc -.L2361: - ldr r0, [sp, #36] +.L3636: + ldr r0, [sp, #52] +.L3615: + ldr r3, .L3662 + ldr r2, [sp, #76] + ldr r3, [r3] + cmp r2, r3 + beq .L3637 + bl __stack_chk_fail +.L3637: add sp, sp, #84 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2392: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3663: .align 2 -.L2391: +.L3662: + .word __stack_chk_guard + .word .LANCHOR1 .word .LANCHOR0 .word .LANCHOR2 - .word .LC142 - .word -1134 + .word .LANCHOR0+1878 + .word .LANCHOR0+1884 + .word .LANCHOR0+1804 + .word .LC143 + .word .LANCHOR2-3168 .fnend .size ftl_read, .-ftl_read .align 2 - .global FtlRead - .type FtlRead, %function -FtlRead: + .global ftl_vendor_read + .type ftl_vendor_read, %function +ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. + str lr, [sp, #-4]! + .save {lr} + mov ip, r1 + mov lr, r0 + mov r3, r2 + mov r1, lr + mov r0, #16 + mov r2, ip + ldr lr, [sp], #4 b ftl_read .fnend - .size FtlRead, .-FtlRead + .size ftl_vendor_read, .-ftl_vendor_read + .align 2 + .global FlashBootVendorRead + .type FlashBootVendorRead, %function +FlashBootVendorRead: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + bl rknand_device_lock + ldr r3, .L3670 + ldr r3, [r3, #504] + cmp r3, #1 + mvnne r4, #0 + bne .L3667 + mov r2, r4 + mov r0, r6 + mov r1, r5 + bl ftl_vendor_read + mov r4, r0 +.L3667: + bl rknand_device_unlock + mov r0, r4 + ldmfd sp!, {r4, r5, r6, pc} +.L3671: + .align 2 +.L3670: + .word .LANCHOR1 + .fnend + .size FlashBootVendorRead, .-FlashBootVendorRead .align 2 .global ftl_sys_read .type ftl_sys_read, %function @@ -21390,1295 +22123,122 @@ StorageSysDataLoad: .fnend .size StorageSysDataLoad, .-StorageSysDataLoad .align 2 - .global ftl_vendor_read - .type ftl_vendor_read, %function -ftl_vendor_read: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - mov ip, r1 - mov r3, r2 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #16 - mov r2, ip - ldmfd sp!, {r4, lr} - b ftl_read - .fnend - .size ftl_vendor_read, .-ftl_vendor_read - .align 2 - .global FlashBootVendorRead - .type FlashBootVendorRead, %function -FlashBootVendorRead: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl rknand_device_lock - mov r2, r4 - mov r1, r5 - mov r0, r6 - bl ftl_vendor_read - mov r4, r0 - bl rknand_device_unlock - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} - .fnend - .size FlashBootVendorRead, .-FlashBootVendorRead - .align 2 - .type rk_ftl_vendor_ops.constprop.27, %function -rk_ftl_vendor_ops.constprop.27: + .global FtlRead + .type FtlRead, %function +FtlRead: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - cmp r2, #0 - mov r3, r0 - mov r2, r3 - mov r0, r1 - mov r1, #128 - beq .L2399 - b FlashBootVendorWrite -.L2399: - b FlashBootVendorRead + b ftl_read .fnend - .size rk_ftl_vendor_ops.constprop.27, .-rk_ftl_vendor_ops.constprop.27 + .size FtlRead, .-FtlRead .align 2 - .global FtlCheckVpc - .type FtlCheckVpc, %function -FtlCheckVpc: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr} - .save {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr} - mov r4, #0 - ldr r1, .L2411 - ldr r0, .L2411+4 - bl printk - ldr r0, .L2411+8 - mov r1, #8192 - ldr r6, .L2411+12 - bl __memzero - ldr r5, .L2411+16 - b .L2401 -.L2403: - mov r0, r4 - add r1, sp, #4 - mov r2, #0 - bl log2phys - ldr r0, [sp, #4] - cmn r0, #1 - beq .L2402 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - add r0, r5, r0, asl #1 - add r0, r0, #464 - ldrh r3, [r0, #0] - add r3, r3, #1 - strh r3, [r0, #0] @ movhi -.L2402: - add r4, r4, #1 -.L2401: - ldr r3, [r6, #3976] - ldr r7, .L2411+12 - cmp r4, r3 - bcc .L2403 - ldr r5, .L2411+16 - mov r6, #3856 - ldr r0, .L2411+20 - mov r2, #2 - ldrh r3, [r7, r6] - mov r4, #0 - ldr r1, [r5, #-2016] - bl rknand_print_hex - ldr r0, .L2411+24 - add r1, r5, #464 - mov r2, #2 - ldrh r3, [r7, r6] - bl rknand_print_hex - b .L2404 -.L2406: - ldr r2, [r5, #-2016] - mov r3, r4, asl #1 - ldrh r2, [r2, r3] - add r3, r5, r3 - add r3, r3, #464 - ldrh r3, [r3, #0] - cmp r2, r3 - beq .L2405 - ldr r0, .L2411+28 - mov r1, r4 - bl printk -.L2405: - add r4, r4, #1 - uxth r4, r4 -.L2404: - ldrh r3, [r7, r6] - cmp r3, r4 - ldr r3, .L2411+16 - bhi .L2406 - ldr r2, [r3, #-2004] - cmp r2, #0 - beq .L2400 - ldr r4, [r3, #-2024] - mov r6, #0 - ldr r1, .L2411+32 - mov r5, r3 - rsb r2, r4, r2 - ldr r4, .L2411+36 - mov r8, #6 - movw sl, #65535 - mov r2, r2, asr #1 - ldrh r7, [r3, r1] - mul r4, r4, r2 - uxth r4, r4 - b .L2408 -.L2410: - ldr r2, [r5, #-2016] - mov r3, r4, asl #1 - ldrh r2, [r2, r3] - cmp r2, #0 - beq .L2409 - add r3, r5, r3 - ldr r0, .L2411+40 - add r3, r3, #464 - mov r1, r4 - ldrh r3, [r3, #0] - bl printk -.L2409: - mul r4, r8, r4 - ldr r3, [r5, #-2024] - ldrh r4, [r3, r4] - cmp r4, sl - beq .L2400 - add r6, r6, #1 - uxth r6, r6 -.L2408: - cmp r6, r7 - bne .L2410 -.L2400: - ldmfd sp!, {r1, r2, r3, r4, r5, r6, r7, r8, sl, pc} -.L2412: - .align 2 -.L2411: - .word .LANCHOR3+77 - .word .LC102 - .word .LANCHOR2+464 - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC158 - .word .LC159 - .word .LC160 - .word -2000 - .word -1431655765 - .word .LC161 - .fnend - .size FtlCheckVpc, .-FtlCheckVpc - .align 2 - .global HynixGetReadRetryDefault - .type HynixGetReadRetryDefault, %function -HynixGetReadRetryDefault: - .fnstart - @ args = 0, pretend = 0, frame = 64 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2498 - mvn r2, #83 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r4, r0 - cmp r4, #2 - strb r0, [r3, #0] - strb r2, [r3, #4] - mvn r0, #82 - mvn r1, #81 - mvn r2, #80 - .pad #68 - sub sp, sp, #68 - strb r0, [r3, #5] - strb r1, [r3, #6] - strb r2, [r3, #7] - bne .L2414 - mvn r2, #88 - strb r2, [r3, #4] - ldr r3, .L2498+4 - mvn r2, #8 - strb r2, [r3, #3121] - b .L2470 -.L2414: - cmp r4, #3 - bne .L2416 - mvn r2, #79 - strb r2, [r3, #4] - mvn r2, #78 - strb r2, [r3, #5] - mvn r2, #77 - strb r2, [r3, #6] - mvn r2, #76 - strb r2, [r3, #7] - mvn r2, #75 - strb r2, [r3, #8] - mvn r2, #74 - strb r2, [r3, #9] - mvn r2, #73 - strb r2, [r3, #10] - mvn r2, #72 - b .L2493 -.L2416: - cmp r4, #4 - bne .L2417 - mvn ip, #51 - strb r0, [r3, #9] - strb ip, [r3, #4] - mvn ip, #64 - strb r1, [r3, #10] - strb ip, [r3, #5] - mvn ip, #85 - strb ip, [r3, #6] - mvn ip, #84 - strb ip, [r3, #7] - mvn ip, #50 - strb ip, [r3, #8] -.L2493: - mov r6, #8 - strb r2, [r3, #11] - mov r5, r6 - b .L2415 -.L2417: - cmp r4, #5 - bne .L2418 - mov r2, #56 - mov r6, #8 - strb r2, [r3, #4] - mov r2, #57 - strb r2, [r3, #5] - mov r2, #58 - strb r2, [r3, #6] - mov r2, #59 - strb r2, [r3, #7] - b .L2492 -.L2418: - cmp r4, #6 - bne .L2419 - mov r2, #14 - mov r6, #12 - strb r2, [r3, #4] - mov r2, #15 - strb r2, [r3, #5] - mov r2, #16 - strb r2, [r3, #6] - mov r2, #17 - strb r2, [r3, #7] - b .L2492 -.L2419: - cmp r4, #7 - bne .L2470 - mvn r2, #79 - mov r6, #12 - strb r2, [r3, #4] - mov r5, #10 - mvn r2, #78 - strb r2, [r3, #5] - mvn r2, #77 - strb r2, [r3, #6] - mvn r2, #76 - strb r2, [r3, #7] - mvn r2, #75 - strb r2, [r3, #8] - mvn r2, #74 - strb r2, [r3, #9] - mvn r2, #73 - strb r2, [r3, #10] - mvn r2, #72 - strb r2, [r3, #11] - mvn r2, #43 - strb r2, [r3, #12] - mvn r2, #42 - strb r2, [r3, #13] - b .L2415 -.L2470: - mov r6, #7 -.L2492: - mov r5, #4 -.L2415: - sub r3, r4, #1 - cmp r3, #1 - bhi .L2488 - b .L2496 -.L2426: - add r2, fp, r8 - add r4, fp, #20 - mov r7, #0 - mov r5, #55 - ldrb r2, [r2, #3764] @ zero_extendqisi2 - add r4, r4, r2, asl #6 - add r2, fp, r2, asl #3 - ldrb sl, [r2, #868] @ zero_extendqisi2 - ldr r1, [r2, #864] - add sl, sl, #8 - add sl, r1, sl, asl #8 -.L2422: - add r2, fp, r7 - str r5, [sl, #8] - mov r0, #80 - ldrb r2, [r2, #4] @ zero_extendqisi2 - str r2, [sl, #4] - str r3, [sp, #12] - bl NandcDelayns - ldr r2, [sl, #0] - strb r2, [r4, r7] - add r7, r7, #1 - ldr r3, [sp, #12] - uxtb r2, r7 - cmp r2, r6 - bcc .L2422 - mov r2, #0 - b .L2423 -.L2424: - ldrb r7, [r0, r1, asl #2] @ zero_extendqisi2 - ldrb r5, [r4, r2] @ zero_extendqisi2 - add r5, r7, r5 - strb r5, [ip, r1, asl #3] - add r1, r1, #1 - cmp r1, #7 - bne .L2424 - add r2, r2, #1 - cmp r2, #4 - beq .L2425 -.L2423: - mov r1, #1 - add ip, r4, r2 - add r0, r2, r9 - b .L2424 -.L2425: - add r8, r8, #1 - mov r2, #0 - strb r2, [r4, #16] - strb r2, [r4, #24] - uxtb r8, r8 - strb r2, [r4, #32] - strb r2, [r4, #40] - strb r2, [r4, #48] - strb r2, [r4, #41] - strb r2, [r4, #49] - b .L2420 -.L2496: - ldr r9, .L2498+8 - mov r3, r6 - mov r8, #0 - mov r6, r5 -.L2420: - ldr fp, .L2498 - ldrb r2, [fp, #3762] @ zero_extendqisi2 - cmp r2, r8 - bhi .L2426 - mov r5, r6 - mov r6, r3 - b .L2427 -.L2488: - sub r3, r4, #3 - cmp r3, #4 - bhi .L2427 - mul r3, r6, r5 - mov sl, #0 - mov r7, sl - str r6, [sp, #48] - mov r2, r3, asr #2 - mov r3, r3, asl #4 - str r2, [sp, #24] - str r3, [sp, #52] - b .L2428 -.L2469: - add r3, r1, sl - ldrb r6, [r3, #3764] @ zero_extendqisi2 - add r3, r1, r6, asl #3 - mov r0, r6 - ldrb fp, [r3, #868] @ zero_extendqisi2 - ldr r9, [r3, #864] - mov r3, #255 - add fp, fp, #8 - add r8, r9, fp, asl #8 - str r3, [r8, #8] - str r1, [sp, #12] - bl NandcWaitFlashReady - ldr r1, [sp, #12] - cmp r4, #7 - addeq r1, r1, #28 - moveq r3, #160 - addne r1, r1, #20 - addne r1, r1, r6, asl #6 - strne r1, [sp, #28] - mlaeq r3, r3, r6, r1 - streq r3, [sp, #28] - cmp r4, #4 - mov r3, #54 - str r3, [r8, #8] - bne .L2431 - mov r3, #255 - str r3, [r8, #4] - mov r3, #64 - str r3, [r9, fp, asl #8] - mov r3, #204 - b .L2494 -.L2431: - sub r3, r4, #5 - cmp r3, #1 - ldrls r3, .L2498 - ldrlsb r3, [r3, #4] @ zero_extendqisi2 - strls r3, [r8, #4] - movls r3, #82 - bls .L2495 -.L2433: - mov r3, #174 - str r3, [r8, #4] - mov r3, #176 - str r7, [r9, fp, asl #8] -.L2494: - str r3, [r8, #4] - mov r3, #77 -.L2495: - cmp r4, #6 - str r3, [r9, fp, asl #8] - mov r0, r6 - mov r3, #22 - str r3, [r8, #8] - mov r3, #23 - str r3, [r8, #8] - mov r3, #4 - str r3, [r8, #8] - mov r3, #25 - str r3, [r8, #8] - moveq r3, #31 - str r7, [r8, #8] - str r7, [r8, #4] - str r7, [r8, #4] - streq r3, [r8, #4] - mov r3, #2 - strne r7, [r8, #4] - str r3, [r8, #4] - mov r3, #48 - str r7, [r8, #4] - str r3, [r8, #8] - bl NandcWaitFlashReady - sub r3, r4, #5 - cmp r3, #1 - str r3, [sp, #36] - movls r1, #16 - bls .L2437 - cmp r4, #7 - moveq r1, #32 - movne r1, #2 -.L2437: - ldr r3, .L2498+12 - ldr r2, [r3, #152] - mov r3, #0 -.L2438: - ldr r0, [r8, #0] - strb r0, [r2, r3] - add r3, r3, #1 - uxtb r0, r3 - cmp r0, r1 - bcc .L2438 - cmp r4, #7 - bne .L2439 - mov r3, #0 -.L2441: - ldrb r1, [r2, #0] @ zero_extendqisi2 - cmp r1, #12 - beq .L2440 - ldrb r1, [r2, #1] @ zero_extendqisi2 - cmp r1, #10 - beq .L2440 - add r3, r3, #1 - add r2, r2, #4 - uxtb r3, r3 - cmp r3, #8 - bne .L2441 - b .L2442 -.L2440: - cmp r3, #6 - bls .L2443 -.L2442: - ldr r0, .L2498+16 - mov r1, #0 - bl printk -.L2444: - b .L2444 -.L2439: - cmp r4, #6 - bne .L2443 - mov r1, #8 -.L2445: - ldrb r3, [r2], #1 @ zero_extendqisi2 - cmp r3, #12 - beq .L2443 - ldrb r3, [r2, #7] @ zero_extendqisi2 - cmp r3, #4 - beq .L2443 - sub r1, r1, #1 - uxtb r1, r1 - cmp r1, #0 - bne .L2445 - b .L2497 -.L2447: - b .L2447 -.L2443: - ldr r3, .L2498+12 - mov r2, #0 - ldr ip, [r3, #152] - str ip, [sp, #40] -.L2448: - ldr r1, [r8, #0] - ldr lr, [sp, #40] - ldr ip, [sp, #52] - strb r1, [lr, r2] - add r2, r2, #1 - cmp r2, ip - blt .L2448 - ldr r2, [sp, #24] - ldr r1, [r3, #152] - mov r3, #8 - mov ip, r2, asl #2 - mov lr, r2, asl #3 - add r1, r1, ip - str ip, [sp, #32] -.L2450: - mov r2, #0 - mov r0, r2 -.L2449: - ldr ip, [r1, r2] - add r0, r0, #1 - mvn ip, ip - str ip, [r1, r2] - ldr ip, [sp, #24] - add r2, r2, #4 - cmp r0, ip - blt .L2449 - subs r3, r3, #1 - add r1, r1, lr - bne .L2450 - str r3, [sp, #16] - str sl, [sp, #60] - b .L2451 -.L2455: - mov lr, #1 - mov r0, #0 - mov ip, lr, asl r2 - mov lr, r0 - mov sl, #16 - str r3, [sp, #4] - str sl, [sp, #20] -.L2453: - ldr r3, [sp, #56] - ldr r3, [r3, r0] - and sl, ip, r3 - ldr r3, [sp, #20] - cmp sl, ip - ldr sl, [sp, #32] - addeq lr, lr, #1 - subs r3, r3, #1 - add r0, r0, sl - str r3, [sp, #20] - bne .L2453 - cmp lr, #8 - add r2, r2, #1 - orrhi r1, r1, ip - cmp r2, #32 - ldr r3, [sp, #4] - bne .L2455 - ldr ip, [sp, #16] - ldr r2, [sp, #24] - add ip, ip, #1 - ldr sl, [sp, #44] - cmp ip, r2 - str ip, [sp, #16] - str r1, [sl, r3] - add r3, r3, #4 - bge .L2456 -.L2451: - ldr sl, .L2498+12 - mov r1, #0 - mov r2, r1 - ldr sl, [sl, #152] - add ip, sl, r3 - str ip, [sp, #56] - str sl, [sp, #44] - b .L2455 -.L2456: - ldr r3, .L2498+12 - ldr sl, [sp, #60] - ldr r1, [r3, #152] - mov r3, #0 - mov r2, r3 -.L2458: - ldr r0, [r1, r3] - add r3, r3, #4 - cmp r0, #0 - addeq r2, r2, #1 - cmp r3, #32 - bne .L2458 - cmp r2, #7 - ble .L2459 - ldr r0, .L2498+20 - mov r2, #1 - mov r3, #1024 - bl rknand_print_hex - ldr r0, .L2498+16 - mov r1, #0 - bl printk -.L2460: - b .L2460 -.L2459: - cmp r4, #6 - moveq r0, #4 - streq r0, [sp, #16] - beq .L2461 - cmp r4, #7 - moveq lr, #10 - movne lr, #8 - str lr, [sp, #16] -.L2461: - cmp r5, #0 - ldr r0, [sp, #40] - subne r3, r5, #1 - mov r2, #0 - moveq r1, #1 - streq r1, [sp, #20] - uxtbne r3, r3 - ldr r1, [sp, #28] - addne r3, r3, #1 - strne r3, [sp, #20] - b .L2464 -.L2465: - ldrb lr, [ip], #1 @ zero_extendqisi2 - strb lr, [r1, r3] - add r3, r3, #1 - uxtb lr, r3 - cmp lr, r5 - bcc .L2465 - ldr r3, [sp, #20] - add r2, r2, #1 - ldr ip, [sp, #16] - add r0, r0, r3 - ldr r3, [sp, #48] - add r1, r1, ip - cmp r2, r3 - bge .L2466 -.L2464: - mov ip, r0 - mov r3, #0 - b .L2465 -.L2466: - mov r3, #255 - mov r0, r6 - str r3, [r8, #8] - bl NandcWaitFlashReady - ldr ip, [sp, #36] - cmp ip, #1 - movhi r3, #56 - strhi r3, [r8, #8] - bhi .L2468 - mov r3, #54 - str r3, [r8, #8] - ldr r3, .L2498 - mov r0, sl - mvn r1, #0 - ldrb r3, [r3, #4] @ zero_extendqisi2 - str r3, [r8, #4] - mov r3, #22 - str r7, [r9, fp, asl #8] - str r3, [r8, #8] - bl FlashReadCmd -.L2468: - mov r0, r6 - add sl, sl, #1 - bl NandcWaitFlashReady - uxtb sl, sl -.L2428: - ldr r1, .L2498 - ldrb r3, [r1, #3762] @ zero_extendqisi2 - cmp r3, sl - bhi .L2469 - ldr r6, [sp, #48] -.L2427: - ldr r3, .L2498 - strb r5, [r3, #1] - strb r6, [r3, #2] - add sp, sp, #68 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2497: - ldr r0, .L2498+16 - bl printk - b .L2447 -.L2499: - .align 2 -.L2498: - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR1+3104 - .word .LANCHOR2 - .word .LC162 - .word .LC163 - .fnend - .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault - .align 2 - .global FlashGetReadRetryDefault - .type FlashGetReadRetryDefault, %function -FlashGetReadRetryDefault: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, lr} - .save {r3, lr} - subs r3, r0, #0 - ldmeqfd sp!, {r3, pc} - sub r2, r3, #1 - cmp r2, #6 - bhi .L2502 - ldmfd sp!, {r3, lr} - b HynixGetReadRetryDefault -.L2502: - cmp r3, #49 - bne .L2503 - ldr r0, .L2504 - mov r2, #64 - ldr r1, .L2504+4 - strb r3, [r0, #0] - mov r3, #4 - strb r3, [r0, #1] - mov r3, #15 - strb r3, [r0, #2] - add r0, r0, #4 - bl memcpy - ldmfd sp!, {r3, pc} -.L2503: - ldmfd sp!, {r3, lr} - b FlashGetReadRetryDefault.part.26 -.L2505: - .align 2 -.L2504: - .word .LANCHOR0 - .word .LANCHOR1+3020 - .fnend - .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault - .align 2 - .global FlashInit - .type FlashInit, %function -FlashInit: + .global FtlInit + .type FtlInit, %function +FtlInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r0, #32768 - ldr r5, .L2557 - bl ftl_malloc - ldr r6, .L2557+4 - mov r4, #0 - str r0, [r5, #152] - mov r0, #32768 - bl ftl_malloc - str r0, [r5, #140] - mov r0, #4096 - bl ftl_malloc - str r0, [r5, #232] - mov r0, #32768 - bl ftl_malloc - str r0, [r5, #224] - mov r0, #4096 - bl ftl_malloc - mov r3, #50 - str r4, [r5, #160] - strb r3, [r5, #168] - strb r3, [r6, #853] - mov r3, #128 - str r4, [r5, #172] - str r3, [r6, #856] - mov r3, #60 - strb r4, [r6, #3780] - strb r3, [r5, #156] - strb r4, [r6, #852] - str r0, [r5, #228] - mov r0, r7 - bl NandcInit - ldr r5, .L2557+8 - mov r7, #44 -.L2510: - uxtb r0, r4 - mov r1, r5 - bl FlashReadIDRaw - cmp r4, #0 - bne .L2507 - ldrb r3, [r6, #2980] @ zero_extendqisi2 - sub r3, r3, #1 - uxtb r3, r3 - cmp r3, #253 - bhi .L2548 - ldrb r3, [r6, #2981] @ zero_extendqisi2 - cmp r3, #255 - beq .L2549 -.L2507: - ldrb r3, [r5, #0] @ zero_extendqisi2 - add r4, r4, #1 - cmp r3, #181 - streqb r7, [r5, #0] - cmp r4, #4 - add r5, r5, #8 - bne .L2510 - ldr r4, .L2557+4 - ldrb r3, [r4, #2980] @ zero_extendqisi2 - cmp r3, #173 - beq .L2511 - ldr r0, [r4, #3784] - bl NandcSetDdrMode -.L2511: - ldr r5, .L2557+4 - mov r1, #0 - mov r2, #852 - mov r0, r5 - bl ftl_memset - ldr r3, .L2557+12 - str r3, [r4, #3624] + mvn r3, #0 + ldr r2, .L3693 + ldr r5, .L3693+4 + ldr r6, .L3693+8 + ldr r1, .L3693+12 + ldr r0, .L3693+16 + str r3, [r6, #504] mov r3, #0 - strb r3, [r4, #860] - ldrb r3, [r4, #2981] @ zero_extendqisi2 - cmp r3, #161 - cmpne r3, #241 - beq .L2512 - cmp r3, #218 - beq .L2512 - cmp r3, #209 - beq .L2512 - cmp r3, #220 - bne .L2513 - ldrb r2, [r5, #2983] @ zero_extendqisi2 - cmp r2, #149 - bne .L2513 -.L2512: - ldr r2, .L2557+4 - mov r1, #1 - mov r0, #16 - ldr ip, .L2557+16 - strb r1, [r2, #852] - ldr r1, .L2557 - strb r0, [r2, #853] - strb r3, [ip, #3134] - strb r0, [r1, #156] - ldrb r0, [r2, #2980] @ zero_extendqisi2 - cmp r0, #152 - strb r0, [ip, #3133] - bne .L2514 - ldrb r0, [r2, #2984] @ zero_extendqisi2 - sxtb r0, r0 - cmp r0, #0 - movge r0, #24 - strgeb r0, [r1, #156] -.L2514: - ldr r2, [r2, #3776] - movw r0, #2049 - ldr r1, .L2557+20 - cmp r2, r1 - cmpne r2, r0 - ldreq r2, .L2557 - moveq r1, #16 - streqb r1, [r2, #156] - cmp r3, #218 - bne .L2516 - ldr r3, .L2557+16 - movw r2, #3146 - mov r1, #2048 - strh r1, [r3, r2] @ movhi - mvn r2, #37 - b .L2554 -.L2516: - cmp r3, #220 - bne .L2517 - ldr r3, .L2557+16 - movw r2, #3146 - mov r1, #4096 - strh r1, [r3, r2] @ movhi - mvn r2, #35 -.L2554: - strb r2, [r3, #3134] -.L2517: - ldr r1, .L2557+24 - mov r2, #32 - ldr r0, .L2557+28 - bl memcpy - ldr r0, .L2557+12 - mov r2, #32 - add r1, r0, #144 - bl memcpy -.L2513: - ldr r4, .L2557+4 - ldrb r3, [r4, #852] @ zero_extendqisi2 - cmp r3, #0 - bne .L2518 - bl FlashLoadPhyInfoInRam - cmp r0, #0 - bne .L2519 - ldr r3, [r4, #3624] - ldrh r0, [r3, #16] - ubfx r0, r0, #8, #3 - strb r0, [r4, #3772] - tst r0, #1 - bne .L2519 - mov r3, #1 - strb r3, [r4, #3780] - bl FlashSetInterfaceMode - ldrb r0, [r4, #3772] @ zero_extendqisi2 - bl NandcSetMode -.L2519: - ldr r4, .L2557+4 - ldr r3, [r4, #3624] - ldrb r3, [r3, #26] @ zero_extendqisi2 - strb r3, [r4, #928] - bl FlashLoadPhyInfo - cmp r0, #0 - beq .L2518 - ldr r3, [r4, #3784] - cmp r3, #0 - beq .L2521 - mov r0, #1 - bl FlashSetInterfaceMode - mov r0, #1 - b .L2555 -.L2521: - ldrb r0, [r4, #3772] @ zero_extendqisi2 - bl FlashSetInterfaceMode - ldrb r0, [r4, #3772] @ zero_extendqisi2 -.L2555: - bl NandcSetMode - bl FlashLoadPhyInfo - cmp r0, #0 - beq .L2518 - ldr r4, .L2557+4 - mov r0, #1 - bl FlashSetInterfaceMode - mov r0, #1 - bl NandcSetMode - ldr r0, .L2557+32 - ldr r3, [r4, #3624] - ldrh r1, [r3, #14] + str r3, [r2, #460] + str r3, [r5, #4052] bl printk - bl FlashLoadPhyInfoInRam - cmn r0, #1 - ldmeqfd sp!, {r4, r5, r6, r7, r8, pc} - bl FlashDieInfoInit - ldr r3, [r4, #3624] - ldrb r0, [r3, #19] @ zero_extendqisi2 - bl FlashGetReadRetryDefault - ldr r1, .L2557+36 - ldr r0, .L2557 - ldr r3, [r4, #3624] - ldrh r1, [r0, r1] - ldrb r2, [r3, #9] @ zero_extendqisi2 - add r1, r1, #4080 - add r1, r1, #15 - cmp r2, r1, lsr #12 - blt .L2524 - ldrh r1, [r3, #14] - add r1, r1, #255 - cmp r2, r1, lsr #8 - bge .L2525 -.L2524: - ldrh r2, [r3, #14] - bic r2, r2, #255 - strh r2, [r3, #14] @ movhi -.L2525: - ldr r3, .L2557+4 - ldrb r3, [r3, #3772] @ zero_extendqisi2 - tst r3, #6 - beq .L2526 - bl FlashSavePhyInfo - ldr r3, .L2557 - mov r0, #0 - ldr r1, [r3, #164] - bl FlashDdrParaScan -.L2526: - bl FlashSavePhyInfo -.L2518: - ldr r4, .L2557+4 - ldr r5, .L2557 - ldr r3, [r4, #3624] - ldrb r2, [r3, #26] @ zero_extendqisi2 - ldrh r0, [r3, #10] - ldrb r6, [r3, #18] @ zero_extendqisi2 - strb r2, [r4, #928] - ldrh r2, [r3, #16] - ubfx r1, r2, #7, #1 - strb r1, [r4, #860] - ubfx r1, r2, #3, #1 - strb r1, [r5, #180] - ubfx r1, r2, #4, #1 - ubfx r2, r2, #8, #3 - strb r1, [r4, #3837] - strb r2, [r4, #3772] - mov r2, #0 - ldrb r1, [r3, #12] @ zero_extendqisi2 - str r2, [r5, #176] - bl __aeabi_idiv + add r0, r5, #112 + bl FtlConstantsInit + bl FtlMemInit + bl FtlVariablesInit + ldr r3, [r5, #1808] + uxth r0, r3 + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cmp r0, #0 + ldrne r0, .L3693+20 + bne .L3692 + bl FtlSysBlkInit + subs r4, r0, #0 + beq .L3679 + ldr r0, .L3693+24 +.L3692: + ldr r1, .L3693+28 + bl printk + b .L3678 +.L3679: + mov r1, #1 + str r1, [r6, #504] + bl ftl_do_gc + ldr r3, .L3693+32 + ldrh r7, [r3, #-12] + cmp r7, #15 + bhi .L3680 + ldr r8, .L3693+36 + add r5, r3, #232 + sub r6, r3, #12 +.L3683: + ldrh r3, [r5] + movw r2, #65535 + cmp r3, r2 + bne .L3681 + ldrh r2, [r8] + cmp r2, r3 + bne .L3681 + and r0, r4, #7 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L3681: + mov r0, #1 mov r1, r0 - mov r0, r6 - bl BuildFlashLsbPageTable - bl FlashDieInfoInit - ldr r3, [r4, #3624] - ldrh r2, [r3, #16] - tst r2, #64 - beq .L2527 - ldrb r0, [r3, #19] @ zero_extendqisi2 - ldrb r3, [r4, #1] @ zero_extendqisi2 - strb r0, [r4, #3761] - strb r3, [r4, #3760] - ldrb r3, [r4, #2] @ zero_extendqisi2 - strb r3, [r5, #144] - sub r3, r0, #1 - uxtb r3, r3 - cmp r3, #6 - bhi .L2528 - ldr r3, .L2557+40 - str r3, [r5, #176] - sub r3, r0, #5 - uxtb r3, r3 - cmp r3, #1 - movls r3, #1 - strls r3, [r4, #3828] - bls .L2530 - cmp r0, #7 - addeq r4, r4, #28 - beq .L2531 -.L2530: - ldr r4, .L2557+44 -.L2531: - mov r3, #0 - mov r2, r3 -.L2533: - ldrsb r1, [r4, r2] - add r2, r2, #1 - cmp r1, #0 - addeq r3, r3, #1 - cmp r2, #32 - bne .L2533 - cmp r3, #27 - bls .L2527 - bl FlashGetReadRetryDefault - bl FlashSavePhyInfo - b .L2527 -.L2528: - sub r3, r0, #17 - uxtb r3, r3 - cmp r3, #2 - bhi .L2534 - ldr r3, .L2557+48 - cmp r0, #19 - str r3, [r5, #176] - mov r3, #7 - strb r3, [r5, #144] - moveq r3, #15 - streqb r3, [r5, #144] - b .L2527 -.L2534: - cmp r0, #33 - cmpne r0, #65 - beq .L2535 - cmp r0, #66 - bne .L2536 -.L2535: - ldr r3, .L2557 - mov r1, #4 - ldr r2, .L2557+52 - str r2, [r3, #176] - ldr r2, .L2557+4 - strb r1, [r2, #3760] - mov r2, #7 - strb r2, [r3, #144] - b .L2527 -.L2536: - cmp r0, #67 - cmpne r0, #34 - beq .L2537 - cmp r0, #35 - beq .L2537 - cmp r0, #68 - bne .L2538 -.L2537: - ldr r3, .L2557 - cmp r0, #35 - cmpne r0, #68 - ldr r2, .L2557+52 - sub r0, r0, #67 - uxtb r0, r0 - str r2, [r3, #176] - mov r2, #7 - strb r2, [r3, #144] - moveq r2, #17 - streqb r2, [r3, #144] - cmp r0, #1 - ldr r3, .L2557+4 - movls r2, #4 - movhi r2, #5 - strb r2, [r3, #3760] - b .L2527 -.L2538: - cmp r0, #49 - ldreq r3, .L2557+56 - streq r3, [r5, #176] -.L2527: - ldr r2, .L2557+4 - ldr r3, .L2557+20 - ldr r1, [r2, #3776] - cmp r1, r3 - bne .L2541 - ldrb r3, [r2, #928] @ zero_extendqisi2 + bl ftl_do_gc + mov r0, #0 + mov r1, #1 + bl ftl_do_gc + ldrh r2, [r6] + add r3, r7, #2 + cmp r2, r3 + bhi .L3678 + add r4, r4, #1 + cmp r4, #1024 + bne .L3683 + b .L3678 +.L3680: + ldrb r3, [r5, #140] @ zero_extendqisi2 cmp r3, #0 - ldrne r3, [r2, #3624] - movne r1, #0 - strneb r1, [r3, #18] -.L2541: - ldrb r2, [r2, #2980] @ zero_extendqisi2 - ldr r3, .L2557+4 - cmp r2, #44 - bne .L2542 - ldrb r2, [r3, #3780] @ zero_extendqisi2 - cmp r2, #0 - beq .L2542 - ldr r1, [r3, #3776] - ldr r2, .L2557+20 - cmp r1, r2 - bne .L2543 - ldrb r3, [r3, #928] @ zero_extendqisi2 - cmp r3, #0 - bne .L2542 -.L2543: - ldr r3, .L2557+4 - mov r2, #0 + beq .L3678 + mov r4, #128 +.L3685: mov r0, #1 - strb r2, [r3, #3780] - bl FlashSetInterfaceMode - mov r0, #1 - bl NandcSetMode -.L2542: - mov r0, #0 - bl flash_enter_slc_mode - ldr r2, .L2557+4 - ldrb r3, [r2, #3772] @ zero_extendqisi2 - tst r3, #6 - beq .L2544 - ldrb r2, [r2, #3780] @ zero_extendqisi2 - cmp r2, #0 - bne .L2545 - tst r3, #1 - bne .L2544 -.L2545: - ldr r3, .L2557 - mov r0, #0 - ldr r1, [r3, #164] - bl FlashDdrParaScan -.L2544: - ldr r4, .L2557+4 - mov r0, #0 - bl flash_exit_slc_mode - mov r8, #16 - movw r6, #3062 - ldr r3, [r4, #3624] - ldrb r0, [r3, #20] @ zero_extendqisi2 - bl FlashBchSel - add r0, r4, #932 - bl FlashReadIdbDataRaw - ldr r0, .L2557+60 - strb r8, [r4, #853] - bl FlashTimingCfg - ldr r5, [r4, #3624] - mov r3, #3056 - ldrb r2, [r5, #12] @ zero_extendqisi2 - ldrh r7, [r5, #14] - strh r2, [r4, r3] @ movhi - ldrb r3, [r5, #7] @ zero_extendqisi2 - ldrb r2, [r4, #3762] @ zero_extendqisi2 - str r3, [r4, #3052] - ldr r3, [r4, #2980] - str r3, [r4, #3048] - movw r3, #3058 - strh r2, [r4, r3] @ movhi - add r3, r3, #2 - ldrb r2, [r5, #13] @ zero_extendqisi2 - strh r7, [r4, r6] @ movhi - strh r2, [r4, r3] @ movhi - add r3, r3, #4 - ldrh r2, [r5, #10] - strh r2, [r4, r3] @ movhi - ldrb r1, [r5, #12] @ zero_extendqisi2 - ldrh r0, [r5, #10] - bl __aeabi_idiv - movw r3, #3066 - mov lr, #512 - movw r2, #3070 - strh r0, [r4, r3] @ movhi - movw r0, #3068 - ldrb ip, [r5, #9] @ zero_extendqisi2 - strh ip, [r4, r0] @ movhi - ldrb r3, [r5, #9] @ zero_extendqisi2 - ldrh r1, [r5, #10] - mul r1, r1, r3 - mov r3, #3072 - strh lr, [r4, r3] @ movhi - add r3, r3, #2 - ldrb lr, [r4, #853] @ zero_extendqisi2 - strh lr, [r4, r3] @ movhi - uxth r1, r1 - ldrb lr, [r4, #852] @ zero_extendqisi2 - strh r1, [r4, r2] @ movhi - cmp lr, #1 - bne .L2547 - mov r7, r7, lsr #1 - mov ip, ip, asl #1 - mov r1, r1, asl #1 - strb r8, [r4, #853] - strh r1, [r4, r2] @ movhi - mov r2, #8 - strh r7, [r4, r6] @ movhi - strh ip, [r4, r0] @ movhi - strh r2, [r4, r3] @ movhi -.L2547: - ldrb r0, [r5, #20] @ zero_extendqisi2 - bl FlashBchSel - bl ftl_flash_suspend + mov r1, r0 + bl ftl_do_gc + subs r4, r4, #1 + bne .L3685 +.L3678: mov r0, #0 ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2548: - mvn r0, #1 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2549: - mvn r0, #1 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2558: +.L3694: .align 2 -.L2557: - .word .LANCHOR2 +.L3693: + .word .LANCHOR4 .word .LANCHOR0 - .word .LANCHOR0+2980 - .word .LANCHOR1+2988 .word .LANCHOR1 - .word 1446522928 - .word .LANCHOR1+2892 - .word .LANCHOR0+896 - .word .LC164 - .word -890 - .word HynixReadRetrial - .word .LANCHOR0+20 - .word MicronReadRetrial - .word ToshibaReadRetrial - .word SamsungReadRetrial - .word 150000 + .word .LC77 + .word .LC76 + .word .LC155 + .word .LC156 + .word .LANCHOR3+108 + .word .LANCHOR2-4032 + .word .LANCHOR2-3182 .fnend - .size FlashInit, .-FlashInit + .size FtlInit, .-FtlInit .align 2 .global rk_ftl_init .type rk_ftl_init, %function @@ -22690,160 +22250,1099 @@ rk_ftl_init: .save {r4, r5, r6, lr} mov r0, #2048 bl ftl_malloc - ldr r4, .L2563 - ldr r6, .L2563+4 + ldr r6, .L3700 + ldr r4, .L3700+4 mov r5, #0 mov r1, r6 - str r5, [r1, #476]! - str r0, [r6, #472] + str r5, [r1, #468]! + str r0, [r6, #464] mov r0, r4 - str r5, [r0, #136]! + str r5, [r0, #144]! bl rknand_get_reg_addr - ldr r3, [r4, #136] + ldr r3, [r4, #144] cmp r3, r5 - mvneq r4, #0 - beq .L2560 + beq .L3698 bl rk_nandc_irq_init mov r1, r5 mov r2, r5 mov r3, #2048 - ldr r0, [r6, #472] + ldr r0, [r6, #464] bl FlashSramLoadStore bl rknand_flash_cs_init - ldr r0, [r4, #136] + ldr r0, [r4, #144] bl FlashInit subs r4, r0, #0 - bne .L2561 + bne .L3697 bl FtlInit -.L2561: - ldr r0, .L2563+8 +.L3697: mov r1, r4 + ldr r0, .L3700+8 bl printk -.L2560: mov r0, r4 ldmfd sp!, {r4, r5, r6, pc} -.L2564: +.L3698: + mvn r0, #0 + ldmfd sp!, {r4, r5, r6, pc} +.L3701: .align 2 -.L2563: - .word .LANCHOR2 +.L3700: .word .LANCHOR4 - .word .LC165 + .word .LANCHOR2 + .word .LC157 .fnend .size rk_ftl_init, .-rk_ftl_init .align 2 - .global FtlReInitForSDUpdata - .type FtlReInitForSDUpdata, %function -FtlReInitForSDUpdata: + .global ftl_fix_nand_power_lost_error + .type ftl_fix_nand_power_lost_error, %function +ftl_fix_nand_power_lost_error: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2590 - stmfd sp!, {r4, r5, lr} - .save {r4, r5, lr} - .pad #20 - sub sp, sp, #20 - ldrb r4, [r3, #928] @ zero_extendqisi2 - cmp r4, #0 - movne r0, #0 - bne .L2566 - ldr r5, .L2590+4 - ldr r0, [r5, #136] - bl FlashInit - cmp r0, #0 - movne r0, r4 - bne .L2566 - bl FlashLoadFactorBbt - cmp r0, #0 - beq .L2567 - bl FlashMakeFactorBbt -.L2567: - ldr r0, [r5, #140] - bl FlashReadIdbDataRaw - cmp r0, #0 - beq .L2568 - mov r1, #0 - mov r2, #16 - mov r0, sp - bl FlashReadFacBbtData - ldr r1, [sp, #0] - mov r3, #0 - mov r0, #1 - mov r2, r3 -.L2570: - ands ip, r1, r0, asl r2 - add r2, r2, #1 - addne r3, r3, #1 - cmp r2, #16 - bne .L2570 - cmp r3, #6 - ldrls r3, .L2590 - bls .L2586 - mov r2, #0 - mov r0, #1 -.L2571: - ands ip, r1, r0, asl r2 - add r2, r2, #1 - addne r3, r3, #1 - cmp r2, #24 - bne .L2571 - cmp r3, #17 - ldr r3, .L2590 - movhi r2, #36 -.L2586: - strb r2, [r3, #853] - movw r2, #3074 - ldr r3, .L2590 - ldrb r1, [r3, #853] @ zero_extendqisi2 - strh r1, [r3, r2] @ movhi -.L2568: - ldr r1, .L2590+8 - mov r4, #1 - ldr r0, .L2590+12 + ldr r3, .L3719 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #68 + sub sp, sp, #68 + ldr r2, [r3] + str r3, [sp] + str r2, [sp, #60] + ldr r2, .L3719+4 + ldrb r1, [r2, #140] @ zero_extendqisi2 + cmp r1, #0 + beq .L3702 + ldr r9, .L3719+8 + mov r6, r2 + ldr r4, .L3719+12 + movw r5, #4097 + ldr r0, .L3719+16 + ldrh r8, [r9] + ldr r3, [r4, #-4060] + mov r7, r8, asl #1 + mov r1, r8 + ldrh r2, [r3, r7] bl printk - ldr r0, .L2590+16 - bl FtlConstantsInit - bl FtlVariablesInit - ldr r3, .L2590 - ldr r0, [r3, #3852] - uxth r0, r0 - bl FtlFreeSysBlkQueueInit - b .L2575 -.L2577: - add r4, r4, #1 -.L2575: - bl FtlLoadBbt - cmp r0, #0 - bne .L2588 -.L2576: - bl FtlSysBlkInit - cmp r0, #0 - beq .L2578 -.L2588: - bl FtlLowFormat - cmp r4, #3 - bls .L2577 - b .L2589 -.L2578: - ldr r3, .L2590+20 - mov r2, #1 - str r2, [r3, #3092] - b .L2566 -.L2589: - mvn r0, #0 -.L2566: - add sp, sp, #20 - ldmfd sp!, {r4, r5, pc} -.L2591: + sub r3, r4, #4032 + ldrh r0, [r3, #-8] + bl FtlGcRefreshOpenBlock + sub r3, r4, #3984 + ldrh r0, [r3, #-8] + bl FtlGcRefreshOpenBlock + ldr r0, .L3719+20 + bl allocate_new_data_superblock + ldr r0, .L3719+24 + bl allocate_new_data_superblock + str r9, [sp, #4] +.L3704: + subs r5, r5, #1 + beq .L3708 + mov r0, #1 + mov r1, r0 + bl ftl_do_gc + ldr r3, [r4, #-4060] + ldrh r3, [r3, r7] + cmp r3, #0 + bne .L3704 +.L3708: + ldr r3, [r4, #-4060] + mov r1, r8 + ldr r0, .L3719+16 + ldrh r2, [r3, r7] + bl printk + ldr r3, [r4, #-4060] + ldrh r5, [r3, r7] + cmp r5, #0 + bne .L3706 + add r0, sp, #64 + movw r10, #65535 + mov fp, #36 + strh r8, [r0, #-52]! @ movhi + bl make_superblock + movw r3, #1804 + ldr r9, [r6, #4056] + ldrh lr, [r6, r3] + mov r3, r5 + mov ip, r3 + add r0, sp, #26 +.L3709: + uxth r2, r3 + cmp r2, lr + bcs .L3718 + ldrh r2, [r0, #2]! + add r3, r3, #1 + cmp r2, r10 + movne r2, r2, asl #10 + mlane r1, fp, r5, r9 + addne r5, r5, #1 + uxthne r5, r5 + stmneib r1, {r2, ip} + strne ip, [r1, #12] + b .L3709 +.L3718: + ldr r3, [r4, #-4060] + mov r1, r8 + ldr r0, .L3719+28 + ldrh r2, [r3, r7] + bl printk + mov r1, #0 + mov r2, r5 + ldr r0, [r6, #4056] + bl FlashEraseBlocks + ldr r0, [r6, #4056] + mov r1, #1 + mov r2, r5 + bl FlashEraseBlocks +.L3706: + ldr r2, [sp, #4] + mvn r3, #0 + strh r3, [r2] @ movhi +.L3702: + ldr r3, [sp] + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L3712 + bl __stack_chk_fail +.L3712: + add sp, sp, #68 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3720: .align 2 -.L2590: +.L3719: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR4+308 .word .LANCHOR2 - .word .LC78 - .word .LC77 - .word .LANCHOR0+3048 + .word .LC158 + .word .LANCHOR2-4040 + .word .LANCHOR2-3992 + .word .LC159 + .fnend + .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error + .align 2 + .global rk_ftl_garbage_collect + .type rk_ftl_garbage_collect, %function +rk_ftl_garbage_collect: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + b ftl_do_gc + .fnend + .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect + .align 2 + .global ftl_write + .type ftl_write, %function +ftl_write: + .fnstart + @ args = 0, pretend = 0, frame = 104 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #108 + sub sp, sp, #108 + ldr r9, .L3796 + str r3, [sp, #4] + ldr r3, .L3796+4 + ldr r3, [r3] + str r3, [sp, #100] + ldr r3, [r9, #4052] + cmp r3, #0 + bne .L3764 + mov r8, r2 + ldr r2, .L3796+8 + ldr r2, [r2, #504] + cmn r2, #1 + moveq r0, r3 + beq .L3723 + cmp r0, #16 + mov r7, r1 + bne .L3724 + add r0, r1, #256 + ldr r2, [sp, #4] + mov r1, r8 + bl FtlVendorPartWrite + b .L3723 +.L3724: + ldr r3, [r9, #1912] + add r5, r1, r8 + cmp r5, r3 + mvnhi r0, #0 + bhi .L3723 + ldr r6, .L3796+12 + mov r3, #2048 + mov r0, r1 + str r3, [r6, #472] + movw r3, #1878 + ldrh r4, [r9, r3] + mov r1, r4 + bl __aeabi_uidiv + mov r1, r4 + str r0, [sp, #8] + sub r0, r5, #1 + bl __aeabi_uidiv + cmp r8, r4, asl #1 + ldr r2, [sp, #8] + str r0, [sp, #28] + rsb r5, r2, r0 + add r3, r5, #1 + str r3, [sp] + ldr r3, .L3796+16 + ldr r1, [sp] + ldr r2, [r3, #-3872] + add r2, r1, r2 + ldr r1, [r9, #1924] + str r2, [r3, #-3872] + ldr r2, [r3, #-3856] + add r2, r8, r2 + str r2, [r3, #-3856] + movcs r2, #1 + movcc r2, #0 + cmp r1, #0 + str r2, [sp, #20] + beq .L3726 + mov r2, #36 + ldr r10, [r9, #1928] + mul r2, r2, r1 + ldr r1, [sp, #8] + sub r2, r2, #36 + add r10, r10, r2 + ldr r2, [r10, #16] + cmp r1, r2 + bne .L3727 + ldr r2, [r3, #-3868] + mov r1, r4 + mov r0, r7 + add r2, r2, #1 + str r2, [r3, #-3868] + ldr r3, [r6, #476] + add r3, r3, #1 + str r3, [r6, #476] + bl __aeabi_uidivmod + ldr r0, [r10, #8] + rsb r4, r1, r4 + add r0, r0, r1, asl #9 + cmp r4, r8 + ldr r1, [sp, #4] + movcs r4, r8 + mov r9, r4, asl #9 + mov r2, r9 + bl ftl_memcpy + cmp r5, #0 + bne .L3728 + ldr r3, [r6, #476] + cmp r3, #2 + ble .L3764 +.L3728: + ldr r3, [sp, #4] + rsb r8, r4, r8 + add r7, r7, r4 + str r5, [sp] + add r3, r3, r9 + str r3, [sp, #4] + ldr r3, [sp, #8] + add r3, r3, #1 + str r3, [sp, #8] +.L3727: + mov r3, #0 + str r3, [r6, #476] +.L3726: + ldr r0, [sp, #8] + ldr r1, [sp, #28] + bl FtlCacheMetchLpa + cmp r0, #0 + beq .L3729 + bl FtlCacheWriteBack +.L3729: + ldr r5, .L3796+20 + mov r3, #0 + ldr r4, .L3796 + str r3, [sp, #12] + str r5, [r6, #452] + ldr r6, [sp, #8] + mov r10, r4 + str r3, [sp, #32] +.L3730: + ldr r3, [sp] + cmp r3, #0 + beq .L3795 + ldrh r2, [r5, #4] + cmp r2, #0 + bne .L3731 + ldr r3, .L3796+20 + ldr r9, .L3796+8 + cmp r5, r3 + bne .L3732 + add r0, r3, #48 + ldrh r5, [r0, #4] + cmp r5, #0 + bne .L3733 + bl allocate_new_data_superblock + str r5, [r9, #3292] +.L3733: + ldr r0, .L3796+20 + bl allocate_new_data_superblock + ldr r3, [r9, #3292] + cmp r3, #0 + ldrne r5, .L3796+24 + bne .L3734 +.L3735: + ldr r5, .L3796+20 + b .L3734 +.L3732: + ldrh r3, [r3, #4] + str r2, [r9, #3292] + cmp r3, #0 + bne .L3735 + mov r0, r5 + bl allocate_new_data_superblock +.L3734: + ldrh r3, [r5, #4] + cmp r3, #0 + bne .L3736 + mov r0, r5 + bl allocate_new_data_superblock +.L3736: + ldr r3, .L3796+12 + str r5, [r3, #452] +.L3731: + ldr r2, .L3796+16 + ldr r1, [r4, #1924] + ldrh r3, [r5, #4] + ldr r2, [r2, #-2080] + rsb r2, r1, r2 + cmp r3, r2 + movcs r3, r2 + ldr r2, [sp] + cmp r3, r2 + movcs r3, r2 + str r3, [sp, #44] + mov r3, #0 +.L3793: + str r3, [sp, #16] + ldr r3, [sp, #16] + ldr r2, [sp, #44] + cmp r3, r2 + beq .L3738 + ldrh r3, [r5, #4] + cmp r3, #0 + beq .L3738 + ldr r3, [sp, #28] + ldr r2, [sp, #16] + rsb ip, r3, r6 + ldr r3, [sp, #20] + clz ip, ip + mov ip, ip, lsr #5 + and r3, ip, r3 + cmp r2, #0 + moveq r3, #0 + andne r3, r3, #1 + cmp r3, #0 + beq .L3739 + ldr r3, .L3796+28 + ldrh r2, [r3] + add r3, r8, r7 + mls r3, r2, r6, r3 + cmp r3, r2 + bne .L3738 +.L3739: + add r1, sp, #60 + mov r2, #0 + mov r0, r6 + str ip, [sp, #52] + bl log2phys + mov r0, r5 + bl get_new_active_ppa + ldr r2, [r4, #1924] + ldr r1, [r4, #1928] + mov r3, #36 + ldr fp, .L3796+32 + mla r1, r3, r2, r1 + ldrh r2, [fp] + str r6, [r1, #16] + str r3, [sp, #48] + ldr r3, [r4, #1924] + str r0, [r1, #4] + ldr r0, .L3796+16 + mul lr, r3, r2 + bic r3, lr, #3 + str r3, [sp, #36] + ldr r3, [r0, #-2032] + ldr ip, [sp, #36] + ldrh lr, [fp, #-2] + add r9, r3, ip + str r3, [sp, #40] + ldr r3, [r4, #1924] + ldr r0, [r0, #-2052] + str r9, [r1, #12] + mul lr, r3, lr + bic lr, lr, #3 + add lr, r0, lr + mov r0, r9 + str lr, [r1, #8] + mov r1, #0 + bl ftl_memset + ldr r3, [sp, #8] + ldr ip, [sp, #52] + rsb r3, r3, r6 + clz r3, r3 + mov r3, r3, lsr #5 + str r3, [sp, #24] + orrs r3, r3, ip + ldr r3, [sp, #48] + beq .L3740 + ldr r3, [sp, #24] + cmp r3, #0 + beq .L3741 + ldrh fp, [fp, #-6] + mov r0, r7 + mov r1, fp + bl __aeabi_uidivmod + rsb fp, r1, fp + mov r3, r1 + cmp fp, r8 + str r1, [sp, #32] + movcc r3, fp + movcs r3, r8 + str r3, [sp, #12] + b .L3742 +.L3741: + cmp ip, #0 + beq .L3742 + ldr r2, .L3796+28 + add r3, r8, r7 + ldrh r2, [r2] + smulbb r2, r2, r6 + rsb r3, r2, r3 + uxth r3, r3 + str r3, [sp, #12] + ldr r3, [sp, #24] + str r3, [sp, #32] +.L3742: + ldr r3, .L3796+28 + ldr r2, [sp, #12] + ldrh r3, [r3] + cmp r2, r3 + bne .L3743 + ldr r3, [sp, #24] + ldr r0, [r10, #1928] + cmp r3, #0 + moveq r3, r2 + ldr r2, [r10, #1924] + muleq r1, r6, r3 + ldreq r3, [sp, #4] + ldrne r1, [sp, #4] + rsbeq r1, r7, r1 + addeq r1, r3, r1, asl #9 + ldr r3, [sp, #20] + cmp r3, #0 + mov r3, #36 + mla r3, r3, r2, r0 + strne r1, [r3, #8] + bne .L3746 + ldr r0, [r3, #8] + ldr r3, .L3796+36 + ldrh r2, [r3] + b .L3791 +.L3743: + ldr r2, [sp, #60] + mov r3, #36 + cmn r2, #1 + beq .L3747 + ldr r1, [r4, #1928] + add r0, sp, #64 + str r2, [sp, #68] + ldr r2, [r4, #1924] + str r6, [sp, #80] + mla r3, r3, r2, r1 + mov r1, #1 + ldr r2, [r3, #8] + ldr r3, [r3, #12] + str r2, [sp, #72] + mov r2, #0 + str r3, [sp, #76] + bl FlashReadPages + ldr r3, [sp, #64] + cmn r3, #1 + ldr r3, .L3796+16 + ldreq r2, [r3, #-3676] + addeq r2, r2, #1 + streq r2, [r3, #-3676] + beq .L3750 + ldr r2, [r9, #8] + cmp r2, r6 + beq .L3750 + ldr r2, [r3, #-3676] + ldr r0, .L3796+40 + add r2, r2, #1 + str r2, [r3, #-3676] + mov r2, r6 + ldr r1, [r9, #8] + bl printk + b .L3750 +.L3747: + ldr r2, [r4, #1924] + ldr r1, [r4, #1928] + mla r3, r3, r2, r1 + mov r1, #0 + ldr r0, [r3, #8] + ldr r3, .L3796+36 + ldrh r2, [r3] + bl ftl_memset +.L3750: + ldr r3, [sp, #24] + cmp r3, #0 + mov r3, #36 + beq .L3751 + ldr r1, [r4, #1928] + ldr r2, [r4, #1924] + mla r3, r3, r2, r1 + ldr r1, [sp, #4] + ldr r0, [r3, #8] + ldr r3, [sp, #32] + add r0, r0, r3, asl #9 + b .L3794 +.L3751: + ldr r1, [r4, #1924] + ldr r2, [r4, #1928] + mla r3, r3, r1, r2 + ldr r2, .L3796+28 + ldrh r1, [r2] + ldr r0, [r3, #8] + mul r1, r1, r6 + ldr r3, [sp, #4] + rsb r1, r7, r1 + add r1, r3, r1, asl #9 +.L3794: + ldr r3, [sp, #12] + mov r2, r3, asl #9 + b .L3791 +.L3740: + ldr r2, [sp, #20] + cmp r2, #0 + ldr r2, [r4, #1924] + beq .L3752 + ldr r1, [r4, #1928] + mla r3, r3, r2, r1 + ldr r2, .L3796+28 + ldrh fp, [r2] + ldr r2, [sp, #4] + mul fp, fp, r6 + rsb fp, r7, fp + add fp, r2, fp, asl #9 + str fp, [r3, #8] + b .L3746 +.L3752: + ldr r0, [r4, #1928] + mla r3, r3, r2, r0 + ldr r2, .L3796+28 + ldrh r1, [r2] + ldrh r2, [fp, #-2] + ldr r0, [r3, #8] + mul r1, r1, r6 + ldr r3, [sp, #4] + rsb r1, r7, r1 + add r1, r3, r1, asl #9 +.L3791: + bl ftl_memcpy +.L3746: + ldr r3, .L3796+44 + ldr r2, [sp, #40] + ldr r1, [sp, #36] + strh r3, [r2, r1] @ movhi + ldr r2, .L3796+16 + str r6, [r9, #8] + add r6, r6, #1 + ldr r3, [r2, #-3844] + str r3, [r9, #4] + add r3, r3, #1 + cmn r3, #1 + moveq r3, #0 + str r3, [r2, #-3844] + ldr r3, [sp, #60] + str r3, [r9, #12] + ldrh r3, [r5] + strh r3, [r9, #2] @ movhi + ldr r3, [r4, #1924] + add r3, r3, #1 + str r3, [r4, #1924] + ldr r3, [sp, #16] + add r3, r3, #1 + b .L3793 +.L3738: + ldr r3, [sp] + ldr r2, [sp, #16] + ldr r1, [sp, #20] + rsb r3, r2, r3 + ldr r2, .L3796+16 + str r3, [sp] + ldr r3, [r4, #1924] + ldr r2, [r2, #-2080] + cmp r3, r2 + orrcs r1, r1, #1 + cmp r1, #0 + bne .L3756 + ldrh r3, [r5, #4] + cmp r3, #0 + beq .L3756 +.L3758: + mov r3, #0 + str r3, [sp, #20] + b .L3730 +.L3756: + bl FtlCacheWriteBack + mov r3, #0 + str r3, [r10, #1924] + ldr r3, [sp] + cmp r3, #1 + bhi .L3730 + b .L3758 +.L3795: + mov r0, r3 + ldr r2, [sp, #8] + ldr r3, [sp, #28] + rsb r1, r2, r3 + bl ftl_do_gc + ldr r3, .L3796+48 + ldrh r3, [r3, #-12] + cmp r3, #5 + bls .L3769 + cmp r3, #31 + bhi .L3764 + ldr r3, .L3796 + ldrb r3, [r3] @ zero_extendqisi2 + cmp r3, #0 + bne .L3764 +.L3769: + ldr r5, .L3796+52 + ldr r4, [sp] + ldr r6, .L3796+56 + add r7, r5, #620 +.L3782: + ldrh r2, [r5] + movw r3, #65535 + cmp r2, r3 + bne .L3762 + ldrh r3, [r6] + cmp r3, r2 + bne .L3762 + ldrh r2, [r7] + cmp r2, r3 + bne .L3762 + and r0, r4, #7 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L3762: + ldr r3, .L3796+60 + mov r0, #1 + mov r1, r0 + mov r2, #128 + strh r2, [r3] @ movhi + strh r2, [r3, #-2] @ movhi + bl ftl_do_gc + mov r0, #0 + mov r1, #1 + bl ftl_do_gc + ldr r3, .L3796 + ldr r3, [r3, #4052] + cmp r3, #0 + bne .L3764 + ldr r3, .L3796+64 + ldrh r3, [r3] + cmp r3, #2 + bhi .L3764 + add r4, r4, #1 + cmp r4, #256 + bne .L3782 +.L3764: + mov r0, #0 +.L3723: + ldr r3, .L3796+4 + ldr r2, [sp, #100] + ldr r3, [r3] + cmp r2, r3 + beq .L3763 + bl __stack_chk_fail +.L3763: + add sp, sp, #108 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3797: + .align 2 +.L3796: + .word .LANCHOR0 + .word __stack_chk_guard + .word .LANCHOR1 + .word .LANCHOR4 + .word .LANCHOR2 + .word .LANCHOR2-4040 + .word .LANCHOR2-3992 + .word .LANCHOR0+1878 + .word .LANCHOR0+1884 + .word .LANCHOR0+1882 + .word .LC160 + .word -3947 + .word .LANCHOR2-4032 + .word .LANCHOR2-3800 + .word .LANCHOR2-3182 + .word .LANCHOR2-3234 + .word .LANCHOR2-4044 + .fnend + .size ftl_write, .-ftl_write + .align 2 + .global ftl_vendor_write + .type ftl_vendor_write, %function +ftl_vendor_write: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + str lr, [sp, #-4]! + .save {lr} + mov ip, r1 + mov lr, r0 + mov r3, r2 + mov r1, lr + mov r0, #16 + mov r2, ip + ldr lr, [sp], #4 + b ftl_write + .fnend + .size ftl_vendor_write, .-ftl_vendor_write + .align 2 + .global FlashBootVendorWrite + .type FlashBootVendorWrite, %function +FlashBootVendorWrite: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + bl rknand_device_lock + ldr r3, .L3804 + ldr r3, [r3, #504] + cmp r3, #1 + mvnne r4, #0 + bne .L3801 + mov r2, r4 + mov r0, r6 + mov r1, r5 + bl ftl_vendor_write + mov r4, r0 +.L3801: + bl rknand_device_unlock + mov r0, r4 + ldmfd sp!, {r4, r5, r6, pc} +.L3805: + .align 2 +.L3804: .word .LANCHOR1 .fnend - .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata + .size FlashBootVendorWrite, .-FlashBootVendorWrite + .align 2 + .global ftl_sys_write + .type ftl_sys_write, %function +ftl_sys_write: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + mov ip, r1 + mov r3, r2 + add r1, r0, #256 + mov r2, ip + mov r0, #16 + b ftl_write + .fnend + .size ftl_sys_write, .-ftl_sys_write + .align 2 + .global StorageSysDataStore + .type StorageSysDataStore, %function +StorageSysDataStore: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + bl rknand_device_lock + mov r2, r4 + mov r1, #1 + mov r0, r5 + bl ftl_sys_write + mov r4, r0 + bl rknand_device_unlock + mov r0, r4 + ldmfd sp!, {r3, r4, r5, pc} + .fnend + .size StorageSysDataStore, .-StorageSysDataStore + .align 2 + .global FtlDumpSysBlock + .type FtlDumpSysBlock, %function +FtlDumpSysBlock: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + mov r8, r0, asl #10 + ldr r4, .L3818 + .pad #28 + sub sp, sp, #28 + ldr r7, .L3818+4 + mov r6, r0 + mov r5, #0 + ldr r3, [r4, #-2064] + mov r9, r4 + str r3, [r4, #220] + ldr r3, [r4, #-2040] + str r3, [r4, #224] +.L3810: + ldrh r2, [r7] + sxth r3, r5 + cmp r3, r2 + bge .L3817 + mov r1, #1 + ldr r0, .L3818+8 + mov r2, r1 + orr r3, r3, r8 + str r3, [r4, #216] + bl FlashReadPages + ldr r3, [r4, #224] + mov r1, r6 + ldr r0, .L3818+12 + 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, #212] + str r3, [sp, #12] + ldr r3, [r4, #220] + ldr r3, [r3] + str r3, [sp, #16] + ldr r3, [r4, #216] + bl printk + ldr r3, [r4, #224] + ldr r3, [r3] + cmn r3, #1 + beq .L3811 + ldr r0, .L3818+16 + mov r2, #4 + ldr r1, [r9, #-2064] + mov r3, #768 + bl rknand_print_hex +.L3811: + add r5, r5, #1 + b .L3810 +.L3817: + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} +.L3819: + .align 2 +.L3818: + .word .LANCHOR2 + .word .LANCHOR0+1874 + .word .LANCHOR2+212 + .word .LC161 + .word .LC162 + .fnend + .size FtlDumpSysBlock, .-FtlDumpSysBlock + .align 2 + .global dump_map_info + .type dump_map_info, %function +dump_map_info: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r3, #1812 + ldr r6, .L3838 + .pad #52 + sub sp, sp, #52 + ldr r10, .L3838+4 + ldrh r7, [r6, r3] + add fp, r10, #18 +.L3821: + ldrh r3, [r10] + ldr r4, .L3838+8 + cmp r3, r7 + bls .L3834 + ldr r1, .L3838+12 + mov r8, #0 + ldr r2, [r4, #-2076] + mov r5, r8 + ldr r3, [r4, #-3212] + ldrh ip, [r1] + ldr r9, [r4, #-3208] + ldrh r1, [r1, #80] + str r1, [sp, #28] +.L3830: + uxth r1, r8 + cmp r1, ip + bcs .L3836 + 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] + bl FtlBbmIsBadBlock + cmp r0, #0 + ldr r1, [sp, #32] + ldr ip, [sp, #36] + ldr r2, [sp, #40] + ldr r3, [sp, #44] + bne .L3822 + mov r0, #36 + mov r1, r1, asl #10 + mla r0, r0, r5, r2 + stmib r0, {r1, r3} + ldr r1, [sp, #28] + mul r1, r1, r5 + add r5, r5, #1 + uxth r5, r5 + add lr, r1, #3 + cmp r1, #0 + movlt r1, lr + bic r1, r1, #3 + add r1, r9, r1 + str r1, [r0, #12] +.L3822: + add r8, r8, #1 + b .L3830 +.L3836: + cmp r5, #0 + beq .L3825 + ldr r0, [r4, #-2076] + mov r1, r5 + mov r2, #1 + mov r8, #0 + bl FlashReadPages + mov r9, #36 +.L3826: + uxth r3, r8 + cmp r3, r5 + bcs .L3825 + ldr r3, [r4, #-2076] + ldr r0, .L3838+16 + mla r3, r9, r8, r3 + add r8, r8, #1 + ldmib r3, {r2, r3, ip} + ldr r1, [ip, #4] + str r1, [sp] + ldr r1, [ip, #8] + str r1, [sp, #4] + ldr r1, [ip, #12] + str r1, [sp, #8] + ldr r1, [r3] + str r1, [sp, #12] + ubfx r1, r2, #10, #16 + ldr r3, [r3, #4] + str r3, [sp, #16] + ldr r3, [ip] + bl printk + b .L3826 +.L3825: + add r7, r7, #1 + uxth r7, r7 + b .L3821 +.L3834: + ldr r9, .L3838+20 + mov r8, #0 +.L3829: + ldr r3, .L3838+24 + sxth r5, r8 + ldr r7, .L3838+8 + ldrh r3, [r3] + cmp r5, r3 + bge .L3832 + mov r5, r5, asl #1 + mov r7, #0 +.L3833: + ldrh r2, [r9] + sxth r3, r7 + add r7, r7, #1 + cmp r3, r2 + bge .L3837 + ldr r2, [r4, #-2012] + mov r1, #1 + ldr r0, .L3838+28 + ldrh r2, [r2, r5] + orr r3, r3, r2, asl #10 + mov r2, r1 + str r3, [r4, #216] + bl FlashReadPages + ldr r3, [r4, #224] + ldr r1, [r4, #-2012] + ldr r2, [r4, #220] + 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, .L3838+32 + str r3, [sp, #12] + ldr r3, [r2] + str r3, [sp, #16] + ldr r3, [r2, #4] + str r3, [sp, #20] + ldr r2, [r4, #212] + ldr r3, [r4, #216] + bl printk + b .L3833 +.L3837: + add r8, r8, #1 + b .L3829 +.L3832: + ldr r1, [r7, #-2012] + movw r4, #1908 + ldr r3, [r6, #1900] + mov r2, #2 + ldr r0, .L3838+36 + bl rknand_print_hex + ldr r1, [r7, #-1992] + ldrh r3, [r6, r4] + mov r2, #4 + ldr r0, .L3838+40 + bl rknand_print_hex + ldr r0, .L3838+44 + ldr r1, [r7, #-1988] + mov r2, #4 + ldrh r3, [r6, r4] + add sp, sp, #52 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + b rknand_print_hex +.L3839: + .align 2 +.L3838: + .word .LANCHOR0 + .word .LANCHOR0+1814 + .word .LANCHOR2 + .word .LANCHOR0+1804 + .word .LC163 + .word .LANCHOR0+1874 + .word .LANCHOR2-1928 + .word .LANCHOR2+212 + .word .LC110 + .word .LC164 + .word .LC165 + .word .LC166 + .fnend + .size dump_map_info, .-dump_map_info .align 2 .global flash_boot_enter_slc_mode .type flash_boot_enter_slc_mode, %function @@ -22852,15 +23351,15 @@ flash_boot_enter_slc_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L2594 - ldr r2, [r3, #3776] - ldr r3, .L2594+4 + ldr r3, .L3842 + ldr r2, [r3, #1744] + ldr r3, .L3842+4 cmp r2, r3 bxne lr b flash_enter_slc_mode -.L2595: +.L3843: .align 2 -.L2594: +.L3842: .word .LANCHOR0 .word 1446522928 .fnend @@ -22873,15 +23372,15 @@ flash_boot_exit_slc_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L2598 - ldr r2, [r3, #3776] - ldr r3, .L2598+4 + ldr r3, .L3846 + ldr r2, [r3, #1744] + ldr r3, .L3846+4 cmp r2, r3 bxne lr b flash_exit_slc_mode -.L2599: +.L3847: .align 2 -.L2598: +.L3846: .word .LANCHOR0 .word 1446522928 .fnend @@ -22890,501 +23389,485 @@ flash_boot_exit_slc_mode: .type IdBlockReadData, %function IdBlockReadData: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r4, r0 - ldr r5, .L2604 - mov fp, r1 - .pad #28 - sub sp, sp, #28 - mov r1, r4 - mov sl, r2 - ldr r0, .L2604+4 - ldr r3, [r5, #3624] - mov r2, fp - mov r9, r5 - ldrb r7, [r3, #9] @ zero_extendqisi2 - ldrh r6, [r3, #10] - bl printk - mov r0, r4 - mul r6, r6, r7 - uxth r6, r6 - mov r1, r6 - mov r6, #0 - bl __aeabi_uidivmod + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r6, r0 + ldr r4, .L3857 mov r8, r1 - rsb r1, r1, r4 - mul r2, r7, r8 - str r1, [sp, #16] - ubfx r2, r2, #2, #2 - b .L2601 -.L2603: - add r1, r6, r8 - ldrb r0, [r5, #928] @ zero_extendqisi2 - ubfx r1, r1, #2, #16 - rsb ip, r2, #4 - cmp r0, #0 - add r3, r5, r1, asl #1 - uxth ip, ip - add r3, r3, #3072 - add r3, r3, #4 - ldrh r3, [r3, #0] - beq .L2602 - ldr r0, [r5, #3776] - ldr lr, .L2604+8 - cmp r0, lr - moveq r3, r1 -.L2602: - ldr r1, [sp, #16] - add r2, r2, r1 - mla r2, r7, r3, r2 - ldr r3, [r9, #3624] - ldrb r1, [r3, #9] @ zero_extendqisi2 - ldrb r3, [r9, #3836] @ zero_extendqisi2 - str r3, [sp, #20] - ldr r3, .L2604+12 - ldrb r0, [r3, #156] @ zero_extendqisi2 + .pad #20 + sub sp, sp, #20 + mov r1, r6 + mov fp, r2 + ldr r0, .L3857+4 + ldr r3, [r4, #692] + mov r2, r8 + ldr r5, [r4, #4] + mov r7, #0 + ldrb r9, [r3, #9] @ zero_extendqisi2 + bl printk + mov r0, r6 + smulbb r5, r5, r9 + uxth r5, r5 + mov r1, r5 + bl __aeabi_uidivmod + mul ip, r9, r1 + mov r10, r1 + rsb r3, r1, r6 + str r3, [sp] + ubfx ip, ip, #2, #2 +.L3849: + cmp r7, r8 + bcs .L3856 + add r2, r7, r10 + ldrb r1, [r4, #140] @ zero_extendqisi2 + ubfx r2, r2, #2, #16 + rsb r5, ip, #4 + cmp r1, #0 + add r3, r4, r2, asl #1 + uxth r5, r5 + ldrh r3, [r3, #144] + beq .L3850 + ldr r1, .L3857 + ldr r0, .L3857+8 + ldr r1, [r1, #1744] + cmp r1, r0 + moveq r3, r2 +.L3850: + ldr r2, [sp] + add r7, r5, r7 + add r2, ip, r2 + ldrb ip, [r4, #1792] @ zero_extendqisi2 + uxth r7, r7 + mla r3, r9, r3, r2 + ldr r2, [r4, #692] str ip, [sp, #4] + ldrb r1, [r2, #9] @ zero_extendqisi2 + str r3, [sp, #12] + ldr r3, .L3857+12 str r1, [sp, #8] - str r2, [sp, #12] + ldrb r0, [r3, #174] @ zero_extendqisi2 bl FlashBchSel mov r0, #0 bl flash_boot_enter_slc_mode - ldr r2, [sp, #12] + ldr r3, [sp, #12] ldr r1, [sp, #8] - mov r0, r2 + mov r0, r3 bl __aeabi_uidiv - mov r2, sl + mov r2, fp + add fp, fp, r5, asl #9 mov r1, r0 mov r0, #0 mov r3, r0 bl FlashReadPage mov r0, #0 bl flash_boot_exit_slc_mode - ldr r0, [sp, #20] - bl FlashBchSel - ldr ip, [sp, #4] - mov r2, #0 - add r6, ip, r6 - add sl, sl, ip, asl #9 - uxth r6, r6 -.L2601: - cmp r6, fp - bcc .L2603 - mov r1, r4 - mov r2, fp - mov r3, #0 - ldr r0, .L2604+16 - bl printk - mov r0, #0 - add sp, sp, #28 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2605: - .align 2 -.L2604: - .word .LANCHOR0 - .word .LC166 - .word 1446522928 - .word .LANCHOR2 - .word .LC167 - .fnend - .size IdBlockReadData, .-IdBlockReadData - .section .text.unlikely - .align 2 - .type IDBlockWriteData, %function -IDBlockWriteData: - .fnstart - @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2614 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r5, r0 - ldr r3, [r3, #3624] - mov fp, r1 - .pad #92 - sub sp, sp, #92 - mov r1, r5 - mov sl, r2 - ldr r0, .L2614+4 - ldrb r6, [r3, #9] @ zero_extendqisi2 - mov r2, fp - ldrh r7, [r3, #10] - bl printk - mov r0, #0 - bl flash_boot_enter_slc_mode - mov r1, r6 - mov r0, r5 - bl __aeabi_uidiv - mul r7, r7, r6 - uxth r7, r7 - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl FlashEraseBlock - cmp fp, r7 - movls r8, #1 - bls .L2607 - mov r0, #0 - add r1, r7, r5 - mov r2, r0 - mov r8, #2 - bl FlashEraseBlock -.L2607: - ldr r4, .L2614 - mov r0, #0 - bl flash_boot_exit_slc_mode - ldr r3, [r4, #3624] - mov r9, r4 - ldrh r0, [r3, #10] - ldrb r1, [r3, #12] @ zero_extendqisi2 - mov r0, r0, asl #2 - mul r0, r8, r0 - bl __aeabi_idiv - mov r1, r7 - mov r8, #0 - str r0, [sp, #16] - mov r0, r5 - bl __aeabi_uidivmod - str r5, [sp, #20] - mov ip, r1 - rsb r1, r1, r5 - mov r7, ip - str r1, [sp, #12] - b .L2608 -.L2612: - add r3, r8, r7 - ubfx r3, r3, #2, #16 - cmp r3, #0 - beq .L2609 - add r1, r3, #1 - ldrb r0, [r4, #928] @ zero_extendqisi2 - add r2, r4, r1, asl #1 - cmp r0, #0 - add r2, r2, #3072 - add r2, r2, #4 - ldrh r2, [r2, #0] - beq .L2610 - ldr r0, [r4, #3776] - ldr ip, .L2614+8 - cmp r0, ip - moveq r2, r1 -.L2610: - sub r2, r2, #-1073741823 - mov r2, r2, asl #2 - str r2, [sp, #24] -.L2609: - movw r2, #61424 - str r2, [sp, #28] - add r2, r4, r3, asl #1 - add r2, r2, #3072 - ldrh r5, [r2, #4] - ldrb r2, [r4, #928] @ zero_extendqisi2 - cmp r2, #0 - beq .L2611 - ldr r2, [r4, #3776] - ldr r1, .L2614+8 - cmp r2, r1 - moveq r5, r3 -.L2611: - ldr ip, [sp, #12] - add r8, r8, #4 - ldr r2, .L2614+12 - uxth r8, r8 - mla r3, r6, r5, ip - ldrb ip, [r9, #3836] @ zero_extendqisi2 - ldrb r0, [r2, #156] @ zero_extendqisi2 - str ip, [sp, #4] - str r3, [sp, #8] - bl FlashBchSel - mov r0, #0 - bl flash_boot_enter_slc_mode - ldr r2, [r9, #3624] - ldr r3, [sp, #8] - ldrb r1, [r2, #9] @ zero_extendqisi2 - mov r0, r3 - bl __aeabi_uidiv - mov r2, sl - add r3, sp, #24 - add sl, sl, #2048 - mov r1, r0 - mov r0, #0 - bl FlashProgPage - mov r0, #0 - bl flash_boot_exit_slc_mode ldr ip, [sp, #4] mov r0, ip bl FlashBchSel - ldr r0, [sp, #12] + mov ip, #0 + b .L3849 +.L3856: mov r1, r6 - bl __aeabi_uidiv - add r2, r5, #1 - uxth r2, r2 - mov r1, r0 - mov r0, #0 - bl FlashPageProgMsbFFData -.L2608: - ldr ip, [sp, #16] - cmp r8, ip - bcc .L2612 - ldr r5, [sp, #20] - mov r2, fp + mov r2, r8 mov r3, #0 - ldr r0, .L2614+16 - mov r1, r5 + ldr r0, .L3857+16 bl printk mov r0, #0 - add sp, sp, #92 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2615: + add sp, sp, #20 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3858: .align 2 -.L2614: +.L3857: .word .LANCHOR0 - .word .LC168 + .word .LC167 .word 1446522928 .word .LANCHOR2 - .word .LC169 + .word .LC168 .fnend - .size IDBlockWriteData, .-IDBlockWriteData - .text + .size IdBlockReadData, .-IdBlockReadData .align 2 .global write_idblock .type write_idblock, %function write_idblock: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 128 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2641 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r5, r0 - ldr r3, [r3, #3624] - .pad #36 - sub sp, sp, #36 + ldr r3, .L3906 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #140 + sub sp, sp, #140 + ldr r3, [r3] + mov r4, r0 + ldr r7, .L3906+4 mov r0, #256000 mov r6, r1 - mov r7, r2 - ldrb r4, [r3, #9] @ zero_extendqisi2 - ldrh sl, [r3, #10] + mov r5, r2 + str r3, [sp, #132] + ldr r3, [r7, #692] + ldr r8, [r7, #4] + ldrb r9, [r3, #9] @ zero_extendqisi2 bl ftl_malloc - subs r9, r0, #0 - beq .L2635 - add r5, r5, #508 - add r5, r5, #3 - mov r5, r5, lsr #9 - cmp r5, #8 - movls r5, #8 - bls .L2618 - cmp r5, #500 - bhi .L2635 -.L2618: - ldr r2, [r6, #0] - ldr r3, .L2641+4 + subs r3, r0, #0 + str r3, [sp, #12] + beq .L3884 + add r4, r4, #508 + add r4, r4, #3 + mov r4, r4, lsr #9 + cmp r4, #8 + bls .L3882 + cmp r4, #500 + bhi .L3884 + b .L3861 +.L3882: + mov r4, #8 +.L3861: + ldr r2, [r6] + ldr r3, .L3906+8 cmp r2, r3 - bne .L2635 - mul sl, sl, r4 - uxth sl, sl - sub r0, sl, #1 - add r0, r0, r5 - mov r1, sl + bne .L3884 + smulbb r3, r9, r8 + uxth fp, r3 + sub r0, fp, #1 + add r0, r0, r4 + mov r1, fp bl __aeabi_uidiv mov r3, #0 - movw r2, #63999 - movw ip, #4097 - str r0, [sp, #20] + movw r2, #63871 + str r0, [sp, #32] add r0, r6, #254976 - add r0, r0, #1020 -.L2623: - ldr r1, [r0], #-4 + add r0, r0, #512 +.L3865: + ldr r1, [r0, #-4]! cmp r1, #0 - bne .L2619 + bne .L3862 ldr r1, [r6, r3, asl #2] add r3, r3, #1 - cmp r3, ip + cmp r3, #4096 sub r2, r2, #1 - movcs r3, #0 + movhi r3, #0 cmp r2, #4096 - str r1, [r0, #4] - bne .L2623 - b .L2622 -.L2619: - ldr r0, .L2641+8 + str r1, [r0, #512] + bne .L3865 + b .L3864 +.L3862: + ldr r0, .L3906+12 bl printk -.L2622: - ldr r4, .L2641 - mov r1, r7 - mov r3, #5 - ldr r0, .L2641+12 - mov r2, #4 - mov r8, r5 - bl rknand_print_hex - ldrb r2, [r4, #853] @ zero_extendqisi2 - ldr r1, [r6, #512] - ldr r0, .L2641+16 - bl printk - ldr r2, .L2641+20 - movw r3, #3074 +.L3864: mov r1, r5 - ldrh r3, [r4, r3] - ldr r2, [r2, #160] - ldr r0, .L2641+24 - str r2, [sp, #0] - mov r2, r5 + mov r3, #5 + ldr r0, .L3906+16 + mov r2, #4 + bl rknand_print_hex + ldrb r2, [r7, #1] @ zero_extendqisi2 + ldr r1, [r6, #512] + sub r5, r5, #4 + ldr r0, .L3906+20 bl printk - ldrb r3, [r4, #853] @ zero_extendqisi2 + ldr r2, .L3906+24 + ldrh r3, [r7, #138] + mov r1, r4 + ldr r0, .L3906+28 + ldr r2, [r2, #168] + str r2, [sp] + mov r2, r4 + bl printk + ldrb r3, [r7, #1] @ zero_extendqisi2 + ldr r7, .L3906+4 ldr r2, [r6, #512] - mov r4, r7 - mov r7, r6 - mov r1, r5, asl #7 cmp r2, r3 - str r1, [sp, #24] - mov r2, #0 strhi r3, [r6, #512] - str r2, [sp, #16] - str r2, [sp, #12] -.L2631: - ldr r1, .L2641 - ldr r3, [r4], #4 - ldrb r2, [r1, #853] @ zero_extendqisi2 - cmp r3, r2 - bcs .L2625 - ldr r1, .L2641+20 - ldr r2, [r1, #160] - cmp r3, r2 - bcc .L2625 - ldr r2, [sp, #20] - ldr r1, [sp, #12] - cmp r2, #1 - movls r2, #0 - movhi r2, #1 - str r2, [sp, #28] - ldr r2, [sp, #20] + mov r3, r4, asl #7 + str r3, [sp, #36] + mov r3, #0 + str r3, [sp, #20] + str r3, [sp, #16] +.L3879: + ldr r2, [r5, #4] + ldrb r3, [r7, #1] @ zero_extendqisi2 + ldr r9, .L3906+4 + cmp r2, r3 + bcs .L3867 + ldr r3, .L3906+24 + ldr r3, [r3, #168] + cmp r2, r3 + bcc .L3867 + ldr r3, [sp, #32] + ldr r1, [sp, #32] + cmp r3, #1 + movls r3, #0 + movhi r3, #1 + str r3, [sp, #44] + ldr r3, [sp, #16] + cmp r3, #0 + cmpne r1, #1 + bls .L3868 + ldr r3, [r5] + add r3, r3, #1 + cmp r2, r3 + beq .L3867 +.L3868: + mov r1, #0 + mov r2, #512 + ldr r0, [sp, #12] + bl memset + ldr r8, [r5, #4] + ldr r3, [r9, #692] + mov r2, r4 + ldr r9, [r9, #4] + mul r8, r8, fp + ldrb r3, [r3, #9] @ zero_extendqisi2 + ldr r0, .L3906+32 + mov r1, r8 + str r3, [sp, #24] + ldrh r3, [sp, #24] + smulbb r9, r9, r3 + bl printk + mov r0, #0 + bl flash_boot_enter_slc_mode + mov r0, r8 + uxth r9, r9 + ldr r1, [sp, #24] + bl __aeabi_uidiv + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl FlashEraseBlock + cmp r4, r9 + movls r10, #1 + bls .L3869 + mov r0, #0 + add r1, r8, r9 + mov r2, r0 + mov r10, #2 + bl FlashEraseBlock +.L3869: + mov r0, #0 + bl flash_boot_exit_slc_mode + ldr r3, [r7, #692] + ldrh r0, [r3, #10] + ldrb r1, [r3, #12] @ zero_extendqisi2 + mov r0, r0, asl #2 + mul r0, r10, r0 + bl __aeabi_idiv + mov r1, r9 + mov r9, #0 + str r0, [sp, #52] + mov r0, r8 + bl __aeabi_uidivmod + mov ip, r1 + rsb r3, r1, r8 + str r6, [sp, #28] + str r3, [sp, #40] +.L3870: + ldr r3, [sp, #52] + cmp r9, r3 + bcs .L3905 + add r3, r9, ip + ubfx r3, r3, #2, #16 + cmp r3, #0 + beq .L3871 + add r2, r3, #1 + add r1, r7, r2, asl #1 + ldrh r10, [r1, #144] + ldrb r1, [r7, #140] @ zero_extendqisi2 cmp r1, #0 - cmpne r2, #1 - bls .L2626 - ldr r2, [r4, #-8] - add r2, r2, #1 - cmp r3, r2 - beq .L2625 -.L2626: - mov r0, r9 - mov r1, #512 - bl __memzero - ldr r0, [r4, #-4] + beq .L3872 + ldr r1, [r7, #1744] + ldr r0, .L3906+36 + cmp r1, r0 + moveq r10, r2 +.L3872: + sub r10, r10, #-1073741823 + mov r10, r10, asl #2 + str r10, [sp, #68] +.L3871: + movw r2, #61424 + str r2, [sp, #72] + add r2, r7, r3, asl #1 + ldrh r10, [r2, #144] + ldrb r2, [r7, #140] @ zero_extendqisi2 + cmp r2, #0 + beq .L3873 + ldr r2, [r7, #1744] + ldr r1, .L3906+36 + cmp r2, r1 + moveq r10, r3 +.L3873: + ldr r3, [sp, #24] + add r9, r9, #4 + ldr r2, [sp, #40] + str ip, [sp, #60] + uxth r9, r9 + mla r2, r3, r10, r2 + ldr r3, .L3906+4 + ldrb r3, [r3, #1792] @ zero_extendqisi2 + str r2, [sp, #56] + str r3, [sp, #48] + ldr r3, .L3906+24 + ldrb r0, [r3, #174] @ zero_extendqisi2 + bl FlashBchSel + mov r0, #0 + bl flash_boot_enter_slc_mode + ldr r3, .L3906+4 + ldr r3, [r3, #692] + ldrb r1, [r3, #9] @ zero_extendqisi2 + ldr r2, [sp, #56] + mov r0, r2 + bl __aeabi_uidiv + add r3, sp, #68 + mov r1, r0 + ldr r2, [sp, #28] + mov r0, #0 + bl FlashProgPage + mov r0, #0 + bl flash_boot_exit_slc_mode + ldr r0, [sp, #48] + bl FlashBchSel + ldr r1, [sp, #24] + ldr r0, [sp, #40] + bl __aeabi_uidiv + add r2, r10, #1 + uxth r2, r2 + mov r1, r0 + mov r0, #0 + bl FlashPageProgMsbFFData + ldr r3, [sp, #28] + ldr ip, [sp, #60] + add r3, r3, #2048 + str r3, [sp, #28] + b .L3870 +.L3905: mov r1, r8 - mov r2, r7 - mov r6, #0 - mul r0, r0, sl - bl IDBlockWriteData - ldr r0, [r4, #-4] - mov r2, r9 - mov r1, r8 - mul r0, r0, sl + mov r3, #0 + mov r2, r4 + ldr r0, .L3906+40 + bl printk + ldr r0, [r5, #4] + mov r1, r4 + mov r8, #0 + mul r0, r0, fp + ldr r2, [sp, #12] bl IdBlockReadData - mov r2, r9 - mov r3, r7 -.L2630: - mov fp, r2 - mov r5, r3 - ldr r0, [fp, #0] + mov r3, r6 + ldr r2, [sp, #12] +.L3878: + mov r10, r2 + mov r9, r3 + ldr r0, [r10] add r2, r2, #4 - ldr r1, [r5, #0] + ldr r1, [r9] add r3, r3, #4 cmp r0, r1 - beq .L2627 - mov r0, r9 - mov r1, #512 - bl __memzero - ldr r3, [fp, #0] - ldr r1, [sp, #12] - ldr r0, .L2641+28 - str r3, [sp, #0] - ldr r3, [r5, #0] - bic r5, r6, #255 - mov r5, r5, asl #2 + beq .L3875 + mov r1, #0 + mov r2, #512 + ldr r0, [sp, #12] + bl memset + ldr r3, [r10] + ldr r0, .L3906+44 + str r3, [sp] + ldr r3, [r9] + bic r9, r8, #255 + ldr r1, [sp, #16] + mov r9, r9, asl #2 str r3, [sp, #4] - mov r3, r6 - ldr r2, [r4, #-4] + mov r3, r8 + ldr r2, [r5, #4] bl printk - ldr r0, .L2641+32 - add r1, r7, r5 + ldr r0, .L3906+48 + add r1, r6, r9 mov r2, #4 mov r3, #256 bl rknand_print_hex - mov r3, #256 - add r1, r9, r5 mov r2, #4 - ldr r0, .L2641+36 + ldr r0, .L3906+52 + ldr r3, [sp, #12] + add r1, r3, r9 + mov r3, #256 bl rknand_print_hex mov r0, #0 bl flash_boot_enter_slc_mode - ldr r1, [r4, #-4] + ldr r1, [r5, #4] mov r0, #0 mov r2, r0 - mul r1, r1, sl + mul r1, r1, fp bl FlashEraseBlock - ldr r3, [sp, #28] + ldr r3, [sp, #44] cmp r3, #0 - beq .L2628 - ldr r1, [r4, #-4] + beq .L3876 + ldr r1, [r5, #4] mov r0, #0 mov r2, r0 - add r1, r1, #1 - mul r1, sl, r1 + mla r1, r1, fp, fp bl FlashEraseBlock -.L2628: +.L3876: mov r0, #0 bl flash_boot_exit_slc_mode - ldr r1, [r4, #-4] - ldr r0, .L2641+40 + ldr r0, .L3906+56 + ldr r1, [r5, #4] bl printk - ldr r1, [sp, #24] - cmp r6, r1 - bcc .L2625 - b .L2629 -.L2627: - ldr r1, [sp, #24] - add r6, r6, #1 - cmp r6, r1 - bne .L2630 -.L2629: - ldr r2, [sp, #16] - add r2, r2, #1 - str r2, [sp, #16] -.L2625: - ldr r3, [sp, #12] + ldr r3, [sp, #36] + cmp r8, r3 + bcc .L3867 + b .L3877 +.L3875: + ldr r1, [sp, #36] + add r8, r8, #1 + cmp r8, r1 + bne .L3878 +.L3877: + ldr r3, [sp, #20] add r3, r3, #1 - str r3, [sp, #12] + str r3, [sp, #20] +.L3867: + ldr r3, [sp, #16] + add r5, r5, #4 + add r3, r3, #1 + str r3, [sp, #16] cmp r3, #5 - bne .L2631 - mov r0, r9 + bne .L3879 + ldr r0, [sp, #12] bl ftl_free - ldr r1, [sp, #16] - cmp r1, #0 - mvneq r0, #0 - movne r0, #0 - b .L2617 -.L2635: + ldr r3, [sp, #20] + clz r0, r3 + mov r0, r0, lsr #5 + rsb r0, r0, #0 + b .L3860 +.L3884: mvn r0, #0 -.L2617: - add sp, sp, #36 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2642: +.L3860: + ldr r3, .L3906 + ldr r2, [sp, #132] + ldr r3, [r3] + cmp r2, r3 + beq .L3880 + bl __stack_chk_fail +.L3880: + add sp, sp, #140 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3907: .align 2 -.L2641: +.L3906: + .word __stack_chk_guard .word .LANCHOR0 .word -52655045 + .word .LC169 .word .LC170 .word .LC171 - .word .LC172 .word .LANCHOR2 + .word .LC172 .word .LC173 + .word 1446522928 .word .LC174 .word .LC175 .word .LC176 .word .LC177 + .word .LC178 .fnend .size write_idblock, .-write_idblock .align 2 @@ -23394,27 +23877,25 @@ CRC_32: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - mov r3, r0 - mov r0, #0 - stmfd sp!, {r4, lr} - .save {r4, lr} - mov r2, r0 - ldr ip, .L2646 - b .L2644 -.L2645: - ldrb r4, [r3, r2] @ zero_extendqisi2 - add r2, r2, #1 - eor r4, r4, r0, lsr #24 - add r4, ip, r4, asl #2 - ldr r4, [r4, #3164] - eor r0, r4, r0, asl #8 -.L2644: - cmp r2, r1 - bne .L2645 - ldmfd sp!, {r4, pc} -.L2647: + @ link register save eliminated. + ldr ip, .L3912 + add r1, r0, r1 + mov r2, #0 +.L3909: + cmp r0, r1 + beq .L3911 + ldrb r3, [r0], #1 @ zero_extendqisi2 + eor r3, r3, r2, lsr #24 + add r3, ip, r3, asl #2 + ldr r3, [r3, #3296] + eor r2, r3, r2, asl #8 + b .L3909 +.L3911: + mov r0, r2 + bx lr +.L3913: .align 2 -.L2646: +.L3912: .word .LANCHOR1 .fnend .size CRC_32, .-CRC_32 @@ -23423,131 +23904,150 @@ CRC_32: .type write_loader_lba, %function write_loader_lba: .fnstart - @ args = 0, pretend = 0, frame = 32 + @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} cmp r0, #64 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r4, r0 - .pad #32 - sub sp, sp, #32 - mov r6, r1 - mov r7, r2 - bne .L2649 - ldr r2, [r2, #0] - ldr r3, .L2665 + ldr r6, .L3938 + .pad #56 + sub sp, sp, #56 + mov r5, r0 + mov r7, r1 + mov r9, r2 + ldr r4, .L3938+4 + ldr r3, [r6] + str r3, [sp, #52] + bne .L3915 + ldr r2, [r2] + ldr r3, .L3938+8 cmp r2, r3 - bne .L2649 - ldr r5, .L2665+4 - mov r3, #1 + bne .L3915 mov r0, #256000 - strb r3, [r5, #480] + mov r3, #1 + strb r3, [r4, #480] bl ftl_malloc mov r1, #0 mov r2, #256000 - str r0, [r5, #484] + str r0, [r4, #484] bl ftl_memset - str r4, [r5, #488] -.L2649: - ldr r3, .L2665+4 - ldrb r2, [r3, #480] @ zero_extendqisi2 - cmp r2, #0 - beq .L2648 - sub r0, r4, #64 - ldr r5, [r3, #484] + str r5, [r4, #488] +.L3915: + str r7, [sp] + mov r3, r5 + ldr r0, .L3938+12 + ldr r1, [r4, #484] + ldr r2, [r9] + bl printk + ldrb r3, [r4, #480] @ zero_extendqisi2 + ldr r10, .L3938+4 + cmp r3, #0 + beq .L3914 + sub r0, r5, #64 + ldr r8, [r10, #484] cmp r0, #500 - bcs .L2651 - rsb r2, r4, #564 - add r0, r5, r0, asl #9 - cmp r6, r2 - movcc r2, r6 - mov r1, r7 + bcs .L3917 + rsb r2, r5, #564 + add r0, r8, r0, asl #9 + cmp r2, r7 + mov r1, r9 + movcs r2, r7 mov r2, r2, asl #9 - bl memcpy - b .L2652 -.L2651: - cmp r4, #564 - bcc .L2652 - ldr r0, [r3, #488] - ldr r3, .L2665+8 + bl ftl_memcpy + b .L3918 +.L3917: + cmp r5, #564 + bcs .L3926 +.L3918: + ldr r3, [r4, #488] + cmp r3, r5 + beq .L3924 + ldr r2, .L3938+4 + mov r3, #0 + cmp r8, r3 + mov r9, r3 + strb r3, [r2, #480] + beq .L3925 + mov r0, r8 + bl ftl_free +.L3925: + str r9, [r4, #484] +.L3924: + add r5, r5, r7 + str r5, [r4, #488] + b .L3914 +.L3926: + ldr r3, .L3938+16 + ldr r0, [r10, #488] + ldr r3, [r3, #692] sub r0, r0, #64 cmp r0, #500 - movcs r0, #500 - ldr r3, [r3, #3624] ldrb r3, [r3, #9] @ zero_extendqisi2 + movcs r0, #500 cmp r3, #4 - beq .L2662 - mov r3, #4 - mov r1, #2 - mov r2, #3 - mov r7, #5 - stmia sp, {r1, r2, r3, r7} - mov r3, #6 + beq .L3928 + mov r3, #2 + str r3, [sp, #12] + mov r3, #3 str r3, [sp, #16] - b .L2654 -.L2662: - mov r1, #0 - mov r2, r1 -.L2653: + mov r3, #4 + str r3, [sp, #20] + mov r3, #5 + str r3, [sp, #24] + mov r3, #6 + str r3, [sp, #28] + b .L3920 +.L3928: + mov r3, #0 +.L3919: cmp r0, #256 - strls r2, [sp, r1] - movhi r3, r2, asl #1 - add r2, r2, #1 - strhi r3, [sp, r1] - cmp r2, #5 - add r1, r1, #4 - bne .L2653 -.L2654: - ldr r3, .L2665+4 - ldr r2, [r3, #492] - movw r3, #63999 -.L2659: - ldrb r1, [r2, r3] @ zero_extendqisi2 - cmp r1, #0 - addne r3, r3, #1 + add r1, sp, #12 + mov r2, r3, asl #1 + movls r2, r3 + str r2, [r1, r3, asl #2] + add r3, r3, #1 + cmp r3, #5 + bne .L3919 +.L3920: + movw r3, #63872 +.L3923: + ldr r2, [r8, r3, asl #2] + cmp r2, #0 + addne r3, r3, #128 movne r0, r3, asl #2 - bne .L2658 -.L2657: + bne .L3922 +.L3921: sub r3, r3, #1 cmp r3, #4096 - bne .L2659 + bne .L3923 mov r0, r0, asl #9 -.L2658: - mov r1, r5 - ldr r5, .L2665+4 - mov r2, sp - mov r7, #0 +.L3922: + mov r1, r8 + add r2, sp, #12 bl write_idblock - strb r7, [r5, #480] - ldr r0, [r5, #484] - bl ftl_free - str r7, [r5, #484] - b .L2660 -.L2652: - ldr r7, .L2665+4 - ldr r3, [r7, #488] - cmp r3, r4 - beq .L2660 + ldr r0, [r4, #484] mov r8, #0 - cmp r5, r8 - strb r8, [r7, #480] - beq .L2661 - mov r0, r5 + strb r8, [r4, #480] bl ftl_free -.L2661: - str r8, [r7, #484] -.L2660: - ldr r3, .L2665+4 - add r4, r6, r4 - str r4, [r3, #488] -.L2648: - add sp, sp, #32 - ldmfd sp!, {r4, r5, r6, r7, r8, pc} -.L2666: + str r8, [r4, #484] + b .L3924 +.L3914: + ldr r2, [sp, #52] + ldr r3, [r6] + cmp r2, r3 + beq .L3927 + bl __stack_chk_fail +.L3927: + add sp, sp, #56 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L3939: .align 2 -.L2665: - .word -52655045 +.L3938: + .word __stack_chk_guard .word .LANCHOR4 + .word -52655045 + .word .LC179 .word .LANCHOR0 .fnend .size write_loader_lba, .-write_loader_lba @@ -23560,27 +24060,27 @@ FtlWrite: @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - mov r6, r3 - sub r3, r1, #64 + mov r6, r2 + sub r2, r1, #64 mov r4, r1 - cmp r3, #1984 - mov r5, r2 + cmp r2, #1984 + mov r5, r3 mov r7, r0 - movcs r3, #0 - movcc r3, #1 + movcs r2, #0 + movcc r2, #1 cmp r0, #0 - movne r3, #0 - cmp r3, #0 - beq .L2668 + movne r2, #0 + cmp r2, #0 + beq .L3941 mov r0, r1 - mov r1, r2 - mov r2, r6 + mov r2, r3 + mov r1, r6 bl write_loader_lba -.L2668: +.L3941: mov r0, r7 mov r1, r4 - mov r2, r5 - mov r3, r6 + mov r2, r6 + mov r3, r5 ldmfd sp!, {r4, r5, r6, r7, r8, lr} b ftl_write .fnend @@ -23592,730 +24092,734 @@ rknand_sys_storage_ioctl: .fnstart @ args = 0, pretend = 0, frame = 528 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2785 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - cmp r1, r3 + stmfd sp!, {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} .pad #528 sub sp, sp, #528 - mov r5, r1 - mov r4, r2 - beq .L2678 - bhi .L2687 - ldr r3, .L2785+4 + ldr r5, .L4053 + mov r4, r1 + mov r6, r2 + ldr r3, [r5] + str r3, [sp, #524] + ldr r3, .L4053+4 cmp r1, r3 - beq .L2675 - bhi .L2688 + beq .L3948 + bhi .L3949 + sub r3, r3, #3456 + sub r3, r3, #5 + cmp r1, r3 + beq .L3950 + bhi .L3951 sub r3, r3, #125 cmp r1, r3 - beq .L2672 - bhi .L2689 + beq .L3952 + bhi .L3953 sub r3, r3, #237 cmp r1, r3 - bne .L2731 - b .L2781 -.L2689: - ldr r3, .L2785+8 + bne .L4010 + bl rknand_dev_flush + b .L4041 +.L3953: + ldr r3, .L4053+8 cmp r1, r3 - beq .L2673 + beq .L3955 add r3, r3, #1 cmp r1, r3 - bne .L2731 - b .L2782 -.L2688: - ldr r3, .L2785+12 + beq .L3956 + b .L4010 +.L3951: + ldr r3, .L4053+12 cmp r1, r3 - beq .L2677 - bhi .L2690 - ldr r3, .L2785+16 + beq .L3957 + bhi .L3958 + sub r3, r3, #1952 + sub r3, r3, #9 cmp r1, r3 - bne .L2731 - b .L2783 -.L2690: - ldr r3, .L2785+20 + beq .L3959 + b .L4010 +.L3958: + ldr r3, .L4053+16 cmp r1, r3 - beq .L2677 + beq .L3957 add r3, r3, #10 cmp r1, r3 - bne .L2731 - b .L2677 -.L2687: - ldr r3, .L2785+24 + beq .L3957 + b .L4010 +.L3949: + ldr r3, .L4053+20 cmp r1, r3 - beq .L2683 - bhi .L2691 + beq .L3960 + bhi .L3961 sub r3, r3, #78 cmp r1, r3 - beq .L2680 - bcc .L2679 + beq .L3962 + bcc .L3963 add r3, r3, #21 cmp r1, r3 - beq .L2681 + beq .L3964 add r3, r3, #56 cmp r1, r3 - bne .L2731 - b .L2784 -.L2691: - ldr r3, .L2785+28 + beq .L3965 + b .L4010 +.L3961: + ldr r3, .L4053+24 cmp r1, r3 - beq .L2686 - bhi .L2692 + mov r7, r3 + beq .L3966 + bhi .L3967 sub r3, r3, #956 sub r3, r3, #1 cmp r1, r3 - beq .L2684 + beq .L3968 add r3, r3, #956 cmp r1, r3 - bne .L2731 - b .L2685 -.L2692: - ldr r3, .L2785+32 + beq .L3969 + b .L4010 +.L3967: + ldr r3, .L4053+28 cmp r1, r3 - beq .L2685 + beq .L3969 add r3, r3, #1 cmp r1, r3 - bne .L2731 - b .L2686 -.L2679: - ldr r0, .L2785+36 + beq .L3966 + b .L4010 +.L3963: + ldr r0, .L4053+32 bl printk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 - mov r1, r4 + subs r4, r0, #0 + bne .L3970 +.L3975: + mvn r0, #11 + b .L3947 +.L3970: + mov r1, r6 mov r2, #512 bl rk_copy_from_user cmp r0, #0 - bne .L2780 -.L2693: - ldr r0, .L2785+40 - ldmia r5, {r1, r2} + bne .L4047 + ldr r0, .L4053+36 + ldmia r4, {r1, r2} bl printk - ldr r3, [r5, #4] + ldr r3, [r4, #4] cmp r3, #8 - str r3, [sp, #4] - bhi .L2702 + str r3, [sp] + bhi .L4045 bl rknand_device_lock - ldr r1, [sp, #4] - mov r2, r5 - ldr r0, [r5, #0] + mov r2, r4 + ldr r0, [r4] + ldr r1, [sp] bl IdBlockReadData bl rknand_device_unlock - ldr r2, [sp, #4] - mov r0, r4 - mov r1, r5 + mov r0, r6 + mov r1, r4 + ldr r2, [sp] mov r2, r2, asl #9 bl rk_copy_to_user cmp r0, #0 - beq .L2766 - ldr r0, .L2785+44 -.L2779: + beq .L4040 + ldr r0, .L4053+40 +.L4043: bl printk - b .L2702 -.L2680: - ldr r0, .L2785+48 +.L4045: + mov r0, r4 +.L4046: + bl ftl_free +.L4044: + mvn r0, #13 + b .L3947 +.L3962: + ldr r0, .L4053+44 bl printk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 - mov r1, r4 + subs r4, r0, #0 + beq .L3975 + mov r1, r6 mov r2, #4096 bl rk_copy_from_user cmp r0, #0 - bne .L2780 -.L2697: - ldr r4, .L2785+52 - ldr r0, .L2785+56 - ldmia r5, {r1, r2} + beq .L3976 +.L4047: + ldr r0, .L4053+48 + b .L4043 +.L3976: + ldr r6, .L4053+52 + ldr r0, .L4053+56 + ldmia r4, {r1, r2} bl printk - ldr r3, [r4, #492] - cmp r3, #0 - bne .L2698 + ldr r7, [r6, #492] + mov r8, r6 + cmp r7, #0 + bne .L3977 mov r0, #260096 bl ftl_malloc cmp r0, #0 - str r0, [r4, #492] - beq .L2702 -.L2699: - mov r1, #260096 - bl __memzero -.L2698: - ldr r2, [r5, #4] + str r0, [r6, #492] + beq .L4045 + mov r1, r7 + mov r2, #260096 + bl memset +.L3977: + ldr r2, [r4, #4] movw r3, #4088 cmp r2, r3 - bhi .L2702 - ldr r3, [r5, #0] + bhi .L4045 + ldr r3, [r4] cmp r3, #251904 - bhi .L2702 - ldr r1, .L2785+52 - ldr r0, [r1, #492] - add r1, r5, #8 + bhi .L4045 + ldr r0, [r8, #492] + add r1, r4, #8 add r0, r0, r3 bl memcpy -.L2766: - mov r0, r5 +.L4040: + mov r0, r4 bl ftl_free -.L2767: +.L4041: mov r4, #0 - b .L2696 -.L2784: - ldr r0, .L2785+60 + b .L3974 +.L3965: + ldr r0, .L4053+60 bl printk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 - mov r1, r4 + subs r7, r0, #0 + beq .L3975 + mov r1, r6 mov r2, #28 bl rk_copy_from_user cmp r0, #0 - beq .L2701 -.L2780: - ldr r0, .L2785+64 - b .L2779 -.L2701: - ldmia r5, {r1, r2} - ldr r0, .L2785+68 + beq .L3980 + ldr r0, .L4053+48 bl printk - ldr r1, [r5, #0] + b .L3981 +.L3980: + ldmia r7, {r1, r2} + ldr r0, .L4053+64 + bl printk + ldr r1, [r7] cmp r1, #256000 - bhi .L2702 - ldr r4, .L2785+52 - ldr r0, [r4, #492] + bhi .L3981 + ldr r6, .L4053+52 + ldr r0, [r6, #492] cmp r0, #0 - beq .L2702 -.L2703: + beq .L3981 bl CRC_32 - ldr r3, [r5, #4] + ldr r3, [r7, #4] cmp r3, r0 - beq .L2704 - mov r0, r5 + beq .L3983 + mov r0, r7 bl ftl_free - b .L2744 -.L2704: + b .L4011 +.L3983: bl rknand_device_lock - ldr r1, [r4, #492] - add r2, r5, #8 - ldr r0, [r5, #0] + ldr r1, [r6, #492] + add r2, r7, #8 + ldr r0, [r7] bl write_idblock - mov r6, #0 + mov r4, #0 bl rknand_device_unlock - ldr r0, [r4, #492] + ldr r0, [r6, #492] bl ftl_free - str r6, [r4, #492] - mov r0, r5 - mov r4, r6 - bl ftl_free - b .L2696 -.L2702: - mov r0, r5 - b .L2770 -.L2681: - ldr r0, .L2785+72 + str r4, [r6, #492] + mov r0, r7 + b .L3987 +.L3981: + mov r0, r7 + b .L4046 +.L3964: + ldr r0, .L4053+68 bl printk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 + subs r7, r0, #0 + beq .L3975 bl ftl_read_flash_info - mov r0, r4 - mov r1, r5 + mov r0, r6 + mov r1, r7 mov r2, #11 - b .L2775 -.L2678: - ldr r0, .L2785+76 + b .L4051 +.L3948: + ldr r0, .L4053+72 bl printk bl nand_blk_add_whole_disk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 + subs r7, r0, #0 + beq .L3975 mov r1, #0 mov r2, #64 bl ftl_memset - mov r0, r4 - mov r1, r5 + mov r0, r6 + mov r1, r7 mov r2, #64 - b .L2775 -.L2683: - ldr r0, .L2785+80 + b .L4051 +.L3960: + ldr r0, .L4053+76 bl printk - ldr r3, .L2785+52 - add r1, sp, #528 - mov r0, r4 + ldr r3, .L4053+52 + mov r0, r6 mov r2, #4 ldr r3, [r3, #496] ldr r3, [r3, #20] - str r3, [r1, #-524]! - b .L2771 -.L2684: - ldr r0, .L2785+84 + add r1, sp, #528 + str r3, [r1, #-528]! +.L4035: + bl rk_copy_to_user + cmp r0, #0 + bne .L4044 + b .L4041 +.L3968: + ldr r0, .L4053+80 bl printk mov r0, #4096 bl ftl_malloc - subs r5, r0, #0 - beq .L2738 + subs r7, r0, #0 + beq .L3975 bl rknand_device_lock mov r1, #264 mov r2, #2 - mov r3, r5 + mov r3, r7 mov r0, #16 bl ftl_read bl rknand_device_unlock - mov r0, r4 - mov r1, r5 + mov r0, r6 + mov r1, r7 mov r2, #1024 -.L2775: +.L4051: bl rk_copy_to_user subs r4, r0, #0 - mov r0, r5 - beq .L2707 -.L2770: + mov r0, r7 + bne .L4046 +.L3987: bl ftl_free - b .L2761 -.L2707: - bl ftl_free - b .L2696 -.L2672: - ldr r0, .L2785+88 + b .L3974 +.L3952: + ldr r0, .L4053+84 bl printk - add r0, sp, #8 - mov r1, r4 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user - subs r5, r0, #0 - bne .L2772 -.L2708: - ldr r2, [sp, #8] - ldr r3, .L2785+92 - cmp r2, r3 - bne .L2763 - ldr r3, [sp, #12] - cmp r3, #512 - bhi .L2763 - ldr r6, .L2785+52 - mov r2, #512 - add r0, sp, #8 - ldr r1, [r6, #496] - bl memcpy - ldr r2, [r6, #500] - ldr r3, .L2785+96 - cmp r2, r3 - beq .L2709 - add r0, sp, #72 - mov r1, #128 - str r5, [sp, #16] - str r5, [sp, #20] - bl __memzero -.L2709: - add r0, sp, #264 - mov r1, #256 - mov r3, #0 - str r3, [sp, #24] - bl __memzero - b .L2778 -.L2673: - ldr r0, .L2785+100 + subs r4, r0, #0 + beq .L3988 +.L3993: + ldr r0, .L4053+48 bl printk - add r0, sp, #8 + b .L4044 +.L3988: + ldr r2, [sp, #4] + ldr r3, .L4053+88 + cmp r2, r3 + beq .L3989 +.L3990: + mvn r4, #0 + b .L3974 +.L3989: + ldr r3, [sp, #8] + cmp r3, #512 + bhi .L3990 + ldr r7, .L4053+52 + mov r2, #512 + add r0, sp, #4 + ldr r1, [r7, #496] + bl memcpy + ldr r2, [r7, #500] + ldr r3, .L4053+92 + cmp r2, r3 + beq .L3991 + add r0, sp, #68 mov r1, r4 + mov r2, #128 + str r4, [sp, #12] + str r4, [sp, #16] + bl memset +.L3991: + mov r1, #0 + mov r2, #256 + add r0, sp, #260 + str r1, [sp, #20] + bl memset + b .L4049 +.L3955: + ldr r0, .L4053+96 + bl printk + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L2772 -.L2710: - ldr r2, [sp, #8] - ldr r3, .L2785+92 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+88 cmp r2, r3 - bne .L2763 - ldr r3, [sp, #12] + bne .L3990 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L2763 - ldr r4, .L2785+52 - ldr r3, .L2785+96 - ldr r2, [r4, #500] - cmp r2, r3 - bne .L2744 - ldr r3, [sp, #20] - sub r2, r3, #1 - cmp r2, #127 - mvnhi r4, #2 - bhi .L2670 - ldr r0, [r4, #496] - add r1, sp, #72 - str r3, [r0, #12] - add r0, r0, #64 - ldr r2, [sp, #20] + bhi .L3990 + ldr r2, .L4053+52 + ldr r3, .L4053+92 + ldr r1, [r2, #500] + cmp r1, r3 + bne .L4011 + ldr r3, [sp, #16] + sub r1, r3, #1 + cmp r1, #127 + mvnhi r0, #2 + bhi .L3947 + ldr r4, [r2, #496] + add r1, sp, #68 + add r0, r4, #64 + str r3, [r4, #12] + ldr r2, [sp, #16] bl memcpy mov r0, #1 - ldr r1, [r4, #496] - b .L2768 -.L2783: - ldr r0, .L2785+104 - bl printk - add r0, sp, #8 mov r1, r4 + b .L4042 +.L3959: + ldr r0, .L4053+100 + bl printk + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L2772 -.L2711: - ldr r2, [sp, #8] - ldr r3, .L2785+108 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+104 cmp r2, r3 - bne .L2763 - ldr r3, [sp, #12] + bne .L3990 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L2763 - ldr r5, .L2785+52 - ldr r4, [r5, #504] - cmp r4, #0 - beq .L2670 - ldr r3, [r5, #508] - ldr r2, .L2785+112 - ldr r1, [r3, #0] + bhi .L3990 + ldr r6, .L4053+52 + ldr r3, [r6, #504] + cmp r3, #0 + bne .L3994 +.L3997: + mov r0, #0 + b .L3947 +.L3994: + ldr r3, [r6, #508] + ldr r2, .L4053+108 + ldr r1, [r3] cmp r1, r2 - beq .L2712 - str r2, [r3, #0] + beq .L3995 + str r2, [r3] mov r2, #504 - ldr r3, [r5, #508] + ldr r3, [r6, #508] str r2, [r3, #4] mov r2, #0 str r2, [r3, #8] str r2, [r3, #12] -.L2712: - ldr r1, [r5, #508] +.L3995: + ldr r1, [r6, #508] mov r4, #0 mov r0, r4 str r4, [r1, #16] bl StorageSysDataStore - ldr r3, [r5, #496] - ldr r2, .L2785+92 - ldr r5, .L2785+52 - ldr r1, [r3, #0] + ldr r3, [r6, #496] + ldr r2, .L4053+88 + ldr r1, [r3] cmp r1, r2 - strne r2, [r3, #0] - ldr r0, [r5, #496] - mov r1, #128 - ldrne r3, .L2785+52 + strne r2, [r3] + ldr r7, [r6, #496] + ldrne r3, .L4053+52 movne r2, #504 + add r0, r7, #64 ldrne r3, [r3, #496] stmneib r3, {r2, r4} mov r4, #0 - str r4, [r0, #12] - add r0, r0, #64 - bl __memzero - mov r0, #1 - ldr r1, [r5, #496] - bl StorageSysDataStore - str r4, [r5, #504] - str r4, [r5, #500] - b .L2696 -.L2675: - ldr r0, .L2785+116 - bl printk mov r1, r4 - add r0, sp, #8 + mov r2, #128 + str r4, [r7, #12] + bl memset + mov r0, #1 + mov r1, r7 + bl StorageSysDataStore + str r4, [r6, #504] + str r4, [r6, #500] + b .L3974 +.L3950: + ldr r0, .L4053+112 + bl printk + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user - subs r4, r0, #0 - bne .L2772 -.L2714: - ldr r2, [sp, #8] - ldr r3, .L2785+120 + cmp r0, #0 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+116 cmp r2, r3 - bne .L2763 - ldr r3, [sp, #12] + bne .L3990 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L2763 - ldr r5, .L2785+52 - ldr r3, [r5, #504] + bhi .L3990 + ldr r6, .L4053+52 + ldr r3, [r6, #504] cmp r3, #1 - beq .L2670 - ldr r3, [r5, #508] - mov r0, #0 - ldr r2, .L2785+112 - ldr r1, [r3, #0] + beq .L3997 + ldr r3, [r6, #508] + mov r4, #0 + ldr r2, .L4053+108 + ldr r1, [r3] cmp r1, r2 - strne r2, [r3, #0] - ldr r1, [r5, #508] - ldrne r3, [r5, #508] + strne r2, [r3] + ldr r1, [r6, #508] + ldrne r3, [r6, #508] movne r2, #504 - strne r4, [r3, #12] - stmneib r3, {r2, r4} + strne r0, [r3, #8] + strne r2, [r3, #4] + strne r0, [r3, #12] mov r3, #1 + mov r0, #0 str r3, [r1, #16] bl StorageSysDataStore - ldr r3, [r5, #496] - ldr r2, .L2785+92 - ldr r1, [r3, #0] + ldr r3, [r6, #496] + ldr r2, .L4053+88 + ldr r1, [r3] cmp r1, r2 - beq .L2716 - str r2, [r3, #0] - mov r0, #504 - ldr r3, .L2785+52 - mov r2, #0 - ldr r3, [r3, #496] - stmib r3, {r0, r2} -.L2716: - ldr r5, .L2785+52 - mov r1, #128 - mov r4, #0 - ldr r0, [r5, #496] - str r4, [r0, #12] - add r0, r0, #64 - bl __memzero + strne r2, [r3] + ldr r7, [r6, #496] + ldrne r3, .L4053+52 + movne r1, #504 + movne r2, #0 + add r0, r7, #64 + ldrne r3, [r3, #496] + stmneib r3, {r1, r2} + mov r1, r4 + mov r2, #128 + str r4, [r7, #12] + bl memset mov r0, #1 - ldr r1, [r5, #496] + mov r1, r7 bl StorageSysDataStore mov r3, #1 - str r3, [r5, #504] - b .L2696 -.L2782: - ldr r0, .L2785+124 + str r3, [r6, #504] + b .L3974 +.L3956: + ldr r0, .L4053+120 bl printk - add r0, sp, #8 - mov r1, r4 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L2772 -.L2717: - ldr r2, [sp, #8] - ldr r3, .L2785+128 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+124 cmp r2, r3 - bne .L2763 - ldr r2, [sp, #12] + bne .L3990 + ldr r2, [sp, #8] cmp r2, #512 - addls r0, sp, #16 - ldrls r1, .L2785+132 - bls .L2777 - b .L2763 -.L2677: - ldr r3, .L2785+20 - cmp r5, r3 - ldreq r0, .L2785+136 - beq .L2764 - ldr r3, .L2785+140 - cmp r5, r3 - ldreq r0, .L2785+144 - ldrne r0, .L2785+148 -.L2764: + addls r0, sp, #12 + ldrls r1, .L4053+128 + bls .L4048 + b .L3990 +.L3957: + ldr r8, .L4053+16 + cmp r4, r8 + ldreq r0, .L4053+132 + beq .L4038 + ldr r3, .L4053+136 + cmp r4, r3 + ldreq r0, .L4053+140 + ldrne r0, .L4053+144 +.L4038: bl printk - add r0, sp, #8 - mov r1, r4 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L2772 -.L2721: - ldr r2, [sp, #8] - ldr r3, .L2785+152 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+148 cmp r2, r3 - bne .L2761 - ldr r3, .L2785+140 - ldr r6, .L2785+52 - cmp r5, r3 - bne .L2722 - ldr r3, [r6, #496] - mov r0, r4 - add r1, sp, #8 + bne .L4044 + ldr r3, .L4053+136 + ldr r7, .L4053+52 + cmp r4, r3 + bne .L4003 + ldr r3, [r7, #496] + mov r0, r6 + add r1, sp, #4 mov r2, #16 ldr r3, [r3, #20] - str r3, [sp, #12] - strb r3, [sp, #16] + str r3, [sp, #8] + strb r3, [sp, #12] bl rk_copy_to_user cmp r0, #0 - moveq r4, r0 - mvnne r4, #13 - b .L2670 -.L2722: - ldr r3, [r6, #1024] + beq .L3947 + b .L4044 +.L4003: + ldr r3, [r7, #1024] cmp r3, #10 - bhi .L2761 - ldr r3, [r6, #496] - ldr r1, [sp, #12] - ldr r2, [r3, #24] - cmp r2, r1 - beq .L2723 - cmp r2, #0 - beq .L2723 - ldr r0, .L2785+156 + bhi .L4044 + ldr r1, [r7, #496] + ldr r2, [sp, #8] + ldr r3, [r1, #24] + cmp r3, r2 + cmpne r3, #0 + movne r3, #1 + moveq r3, #0 + beq .L4004 + ldr r0, .L4053+152 + mov r1, r2 bl printk - ldr r3, [r6, #1024] + ldr r3, [r7, #1024] add r3, r3, #1 - str r3, [r6, #1024] - b .L2761 -.L2723: - ldr r0, .L2785+52 - mov r2, #0 - str r2, [r0, #1024] - ldr r0, .L2785+20 - cmp r5, r0 + str r3, [r7, #1024] + b .L4044 +.L4004: + cmp r4, r8 + str r3, [r7, #1024] mov r0, #1 - strne r1, [r3, #24] - mov r1, r3 - movne r2, #1 - streq r2, [r3, #20] - streq r2, [r3, #24] - strne r2, [r3, #20] + moveq r2, r3 + movne r3, #1 + moveq r3, r2 + str r2, [r1, #24] + str r3, [r1, #20] bl StorageSysDataStore cmn r0, #1 - mvneq r4, #1 - movne r4, #0 - b .L2696 -.L2685: - ldr r0, .L2785+160 + bne .L4041 + mvn r4, #1 + b .L3974 +.L3969: + ldr r0, .L4053+156 bl printk - add r0, sp, #8 - mov r1, r4 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L2772 -.L2726: - ldr r2, [sp, #8] - ldr r3, .L2785+164 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+160 cmp r2, r3 - bne .L2763 - ldr r2, [sp, #12] + bne .L3990 + ldr r2, [sp, #8] cmp r2, #504 - bhi .L2763 - ldr r3, .L2785+168 - add r0, sp, #16 - cmp r5, r3 - ldr r3, .L2785+52 + bhi .L3990 + ldr r3, .L4053+164 + add r0, sp, #12 + cmp r4, r3 + ldr r3, .L4053+52 ldreq r1, [r3, #1028] ldrne r1, [r3, #1032] add r1, r1, #8 -.L2777: +.L4048: bl memcpy -.L2778: - add r1, sp, #8 - mov r0, r4 +.L4049: + mov r0, r6 + add r1, sp, #4 mov r2, #520 -.L2771: - bl rk_copy_to_user - subs r4, r0, #0 - bne .L2761 - b .L2696 -.L2686: - ldr r0, .L2785+172 + b .L4035 +.L3966: + ldr r0, .L4053+168 bl printk - add r0, sp, #8 - mov r1, r4 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - beq .L2729 -.L2772: - ldr r0, .L2785+64 - bl printk - b .L2761 -.L2729: - ldr r2, [sp, #8] - ldr r3, .L2785+164 + bne .L3993 + ldr r2, [sp, #4] + ldr r3, .L4053+160 cmp r2, r3 - bne .L2763 - ldr r2, [sp, #12] + bne .L3990 + ldr r2, [sp, #8] cmp r2, #504 - bhi .L2763 - ldr r3, .L2785+28 + bhi .L3990 + cmp r4, r7 add r2, r2, #8 - ldr r4, .L2785+52 - cmp r5, r3 - bne .L2730 - add r1, sp, #8 + ldr r4, .L4053+52 + bne .L4008 + add r1, sp, #4 ldr r0, [r4, #1028] bl memcpy - ldr r1, [r4, #1028] mov r0, #2 -.L2768: - bl StorageSysDataStore - mov r4, r0 - b .L2696 -.L2730: - add r1, sp, #8 + ldr r1, [r4, #1028] + b .L4042 +.L4008: + add r1, sp, #4 ldr r0, [r4, #1032] bl memcpy - mov r0, #3 ldr r1, [r4, #1032] - b .L2768 -.L2781: - bl rknand_dev_flush - b .L2767 -.L2763: - mvn r4, #0 -.L2696: + mov r0, #3 +.L4042: + bl StorageSysDataStore + mov r4, r0 +.L3974: + ldr r0, .L4053+172 mov r1, r4 - ldr r0, .L2785+176 bl printk - b .L2670 -.L2731: - mvn r4, #21 - b .L2670 -.L2738: - mvn r4, #11 - b .L2670 -.L2744: - mvn r4, #1 - b .L2670 -.L2761: - mvn r4, #13 -.L2670: mov r0, r4 + b .L3947 +.L4010: + mvn r0, #21 + b .L3947 +.L4011: + mvn r0, #1 +.L3947: + ldr r2, [sp, #524] + ldr r3, [r5] + cmp r2, r3 + beq .L4009 + bl __stack_chk_fail +.L4009: add sp, sp, #528 - ldmfd sp!, {r4, r5, r6, pc} -.L2786: + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +.L4054: .align 2 -.L2785: +.L4053: + .word __stack_chk_guard .word 1074033155 - .word 1074029694 .word 1074029570 .word 1074031656 - .word 1074029695 .word 1074031666 .word 1074033235 .word 1074034193 .word 1074034194 - .word .LC178 .word .LC180 - .word .LC181 .word .LC182 - .word .LANCHOR4 .word .LC183 .word .LC184 - .word .LC179 + .word .LC181 + .word .LANCHOR4 .word .LC185 .word .LC186 .word .LC187 .word .LC188 .word .LC189 .word .LC190 - .word 1263358532 - .word -1067903959 .word .LC191 .word .LC192 + .word 1263358532 + .word -1067903959 + .word .LC193 + .word .LC194 .word 1112753220 .word 1146313043 - .word .LC193 + .word .LC195 .word 1112755781 - .word .LC194 + .word .LC196 .word 1094995539 .word .LANCHOR4+512 - .word .LC195 - .word 1074031676 - .word .LC196 .word .LC197 - .word 1280262987 + .word 1074031676 .word .LC198 .word .LC199 - .word 1145980246 - .word 1074034192 + .word 1280262987 .word .LC200 .word .LC201 + .word 1145980246 + .word 1074034192 + .word .LC202 + .word .LC203 .fnend .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 2 @@ -24328,47 +24832,47 @@ rk_ftl_storage_sys_init: stmfd sp!, {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r2, #512 - ldr r4, .L2790 - mov r6, #0 + ldr r4, .L4065 mvn r3, #0 + mov r5, #0 add r0, r4, #512 - ldr r5, [r4, #472] + ldr r1, [r4, #464] str r3, [r4, #488] - add r1, r5, #1536 - add r3, r5, #512 - strb r6, [r4, #480] + add r3, r1, #512 str r3, [r4, #496] - add r3, r5, #1024 - str r6, [r4, #484] + str r1, [r4, #508] + add r3, r1, #1024 + add r1, r1, #1536 str r3, [r4, #1028] - str r6, [r4, #492] - str r5, [r4, #508] + strb r5, [r4, #480] + str r5, [r4, #484] + str r5, [r4, #492] str r1, [r4, #1032] - bl memcpy - ldr r7, [r5, #508] - ldr r3, [r5, #16] - cmp r7, r6 - str r6, [r4, #500] - str r6, [r4, #1024] + bl ftl_memcpy + ldr r6, [r4, #508] + str r5, [r4, #500] + str r5, [r4, #1024] + ldr r7, [r6, #508] + ldr r3, [r6, #16] + cmp r7, r5 str r3, [r4, #504] - beq .L2788 - mov r0, r5 + beq .L4056 + mov r0, r6 mov r1, #508 - bl JSHash + bl js_hash cmp r7, r0 - beq .L2788 - str r6, [r5, #16] - ldr r0, .L2790+4 - str r6, [r4, #504] + beq .L4056 + str r5, [r6, #16] + ldr r0, .L4065+4 + str r5, [r4, #504] bl printk -.L2788: +.L4056: ldr r3, [r4, #504] mov r0, #2 - ldr r4, .L2790 - cmp r3, #0 - ldrne r2, .L2790+8 - ldrne r3, .L2790 ldr r1, [r4, #1028] + cmp r3, #0 + ldrne r3, .L4065 + ldrne r2, .L4065+8 strne r2, [r3, #500] bl StorageSysDataLoad ldr r1, [r4, #1032] @@ -24376,11 +24880,11 @@ rk_ftl_storage_sys_init: bl StorageSysDataLoad ldmfd sp!, {r3, r4, r5, r6, r7, lr} b rknand_sys_storage_init -.L2791: +.L4066: .align 2 -.L2790: +.L4065: .word .LANCHOR4 - .word .LC202 + .word .LC204 .word -1067903959 .fnend .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init @@ -24403,87 +24907,93 @@ rk_ftl_vendor_storage_init: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr} - .save {r3, r4, r5, r6, r7, r8, sl, lr} + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r0, #65536 bl ftl_malloc - ldr r7, .L2801 + ldr r6, .L4079 cmp r0, #0 - str r0, [r7, #1036] - beq .L2799 - ldr sl, .L2801+4 - mov r6, #0 - mov r4, r6 - mov r5, r6 - movw r8, #65532 -.L2797: - ldr r0, [r7, #1036] - mov r1, r5, asl #7 - mov r2, #0 - bl rk_ftl_vendor_ops.constprop.27 + str r0, [r6, #1036] + beq .L4074 + ldr r9, .L4079+4 + mov r8, #0 + mov r4, r8 + mov r7, r8 + mov r10, r6 +.L4072: + mov r0, r7, asl #7 + mov r1, #128 + ldr r2, [r6, #1036] + bl FlashBootVendorRead cmp r0, #0 - bne .L2795 - ldr r3, [r7, #1036] - ldr r0, .L2801+8 - ldr r1, [r3, #0] - ldr r2, [r3, r8] + bne .L4070 + ldr r3, [r10, #1036] + ldr r0, .L4079+8 + add r2, r3, #61440 + ldr r1, [r3] + ldr r2, [r2, #4092] ldr r3, [r3, #4] bl printk - ldr r0, [r7, #1036] - ldr r3, [r0, #0] - cmp r3, sl - bne .L2796 - ldr r3, [r0, r8] - ldr r2, [r0, #4] - cmp r3, r2 - bne .L2796 + ldr r5, [r10, #1036] + ldr r3, [r5] + cmp r3, r9 + bne .L4071 + add r2, r5, #61440 + ldr r3, [r5, #4] + ldr r1, [r2, #4092] cmp r4, r3 - movcc r6, r5 - movcc r4, r3 -.L2796: - add r5, r5, #1 - cmp r5, #2 - bne .L2797 + movcs r2, #0 + movcc r2, #1 + cmp r1, r3 + movne r2, #0 + cmp r2, #0 + movne r8, r7 + movne r4, r3 +.L4071: + cmp r7, #1 + movne r7, #1 + bne .L4072 +.L4078: cmp r4, #0 - beq .L2798 - mov r1, r6, asl #7 - mov r2, #0 - bl rk_ftl_vendor_ops.constprop.27 + beq .L4073 + mov r0, r8, asl #7 + mov r1, #128 + mov r2, r5 + bl FlashBootVendorRead cmp r0, #0 - ldmeqfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} - b .L2795 -.L2798: - mov r1, #65536 - bl __memzero - ldr r3, .L2801 - ldr r1, .L2801+4 - mov r2, #1 + bne .L4070 + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L4073: + mov r0, r5 + mov r1, r4 + mov r2, #65536 + bl memset + ldr r3, .L4079+4 + str r7, [r5, #4] mov r0, r4 - ldr r3, [r3, #1036] - stmia r3, {r1, r2} - movw r1, #65532 - str r2, [r3, r1] - ldr r2, .L2801+12 - strh r4, [r3, #12] @ movhi - strh r2, [r3, #14] @ movhi - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L2795: - ldr r4, .L2801 - ldr r0, [r4, #1036] + str r3, [r5] + add r3, r5, #61440 + str r7, [r3, #4092] + ldr r3, .L4079+12 + strh r4, [r5, #12] @ movhi + strh r3, [r5, #14] @ movhi + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L4070: + ldr r0, [r6, #1036] bl kfree mov r3, #0 mvn r0, #0 - str r3, [r4, #1036] - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L2799: + str r3, [r6, #1036] + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L4074: mvn r0, #11 - ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, pc} -.L2802: + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc} +.L4080: .align 2 -.L2801: +.L4079: .word .LANCHOR4 .word 1380668996 - .word .LC203 + .word .LC205 .word -1032 .fnend .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init @@ -24494,48 +25004,42 @@ rk_ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - mov r3, r0 - mov r0, r1 - ldr r1, .L2810 - stmfd sp!, {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldr ip, [r1, #1036] + stmfd sp!, {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + ldr r3, .L4088 + ldr ip, [r3, #1036] cmp ip, #0 ldrneh r4, [ip, #10] - movne r5, ip - movne r1, #0 - bne .L2805 - b .L2809 -.L2807: - ldrh r6, [r5, #16] - add r5, r5, #8 - cmp r6, r3 - bne .L2806 - add r1, r1, #2 - add r1, ip, r1, asl #3 - ldrh r4, [r1, #4] - ldrh r1, [r1, #2] - cmp r2, r4 - movcc r4, r2 + movne r3, #0 + beq .L4086 +.L4083: + cmp r3, r4 + bcs .L4086 + add lr, ip, r3, asl #3 + ldrh r5, [lr, #16] + cmp r5, r0 + bne .L4084 + ldrh r3, [lr, #20] + mov r0, r1 + ldrh r1, [lr, #18] + mov r4, r2 + cmp r2, r3 add r1, r1, #1024 + movcs r4, r3 add r1, ip, r1 mov r2, r4 bl memcpy mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -.L2806: - add r1, r1, #1 -.L2805: - cmp r1, r4 - bcc .L2807 + ldmfd sp!, {r3, r4, r5, pc} +.L4084: + add r3, r3, #1 + b .L4083 +.L4086: mvn r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L2809: - mvn r0, #0 - ldmfd sp!, {r4, r5, r6, pc} -.L2811: + ldmfd sp!, {r3, r4, r5, pc} +.L4089: .align 2 -.L2810: +.L4088: .word .LANCHOR4 .fnend .size rk_ftl_vendor_read, .-rk_ftl_vendor_read @@ -24544,164 +25048,150 @@ rk_ftl_vendor_read: .type rk_ftl_vendor_write, %function rk_ftl_vendor_write: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2829 - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - .save {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov sl, r0 - ldr r4, [r3, #1036] - .pad #20 - sub sp, sp, #20 - mov r9, r1 - mov r5, r2 + stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r9, r2 + ldr r2, .L4113 + .pad #28 + sub sp, sp, #28 + ldr r4, [r2, #1036] cmp r4, #0 - beq .L2825 - add r8, r2, #63 - ldrh r2, [r4, #8] - ldrh r3, [r4, #10] - bic r8, r8, #63 - mov r7, #0 - str r2, [sp, #8] - b .L2814 -.L2821: - add r2, r7, #2 - mov r2, r2, asl #3 - add r6, r4, r2 - ldrh r2, [r4, r2] - cmp r2, sl - bne .L2815 - ldrh r2, [r6, #4] - add r2, r2, #63 - bic r2, r2, #63 - str r2, [sp, #12] - cmp r5, r2 - bls .L2816 - ldrh r2, [r4, #14] - cmp r2, r8 - bcc .L2825 - sub r3, r3, #1 - mov fp, r8 - ldrh r6, [r6, #2] - mov r8, r3 - b .L2817 -.L2818: - add r7, r7, #1 - mov r2, r2, asl #3 - add r0, r7, #2 - add r3, r4, r2 - mov r0, r0, asl #3 - add r1, r4, r0 - ldrh r0, [r4, r0] - strh r0, [r4, r2] @ movhi - add r0, r6, #1024 - ldrh r2, [r1, #4] - add r0, r4, r0 - strh r6, [r3, #2] @ movhi - strh r2, [r3, #4] @ movhi - ldrh r3, [r1, #4] - ldrh r1, [r1, #2] - add r3, r3, #63 - bic r3, r3, #63 - add r1, r1, #1024 - add r1, r4, r1 - str r3, [sp, #4] - mov r2, r3 - bl memcpy - ldr r3, [sp, #4] - add r6, r6, r3 -.L2817: - cmp r7, r8 - add r2, r7, #2 - bcc .L2818 - mov r2, r2, asl #3 - uxth r6, r6 - add r3, r4, r2 - add r0, r6, #1024 - strh sl, [r4, r2] @ movhi - add r0, r4, r0 - strh r6, [r3, #2] @ movhi - mov r2, r5 - strh r5, [r3, #4] @ movhi - mov r1, r9 - bl memcpy - ldrh r3, [r4, #14] + beq .L4105 + mov r3, r1 + add r7, r9, #63 + ldrh r1, [r4, #8] + bic r7, r7, #63 + ldrh r2, [r4, #10] + mov ip, r0 + mov r6, #0 + str r1, [sp, #4] +.L4092: + cmp r6, r2 + bcs .L4111 + add r5, r4, r6, asl #3 + ldrh r1, [r5, #16] + cmp r1, ip + bne .L4093 + ldrh r1, [r5, #20] + add fp, r4, #1024 + add r1, r1, #63 + bic r1, r1, #63 + str r1, [sp, #8] + cmp r9, r1 + bls .L4094 + ldrh r1, [r4, #14] + cmp r1, r7 + subcs r2, r2, #1 + strcs r2, [sp, #12] + ldrcsh r8, [r5, #18] + bcc .L4105 +.L4095: ldr r2, [sp, #12] - uxth r8, fp - add r6, r6, r8 - strh r6, [r4, #12] @ movhi - add r3, r2, r3 - rsb r8, r8, r3 - strh r8, [r4, #14] @ movhi - b .L2828 -.L2816: - ldrh r0, [r6, #2] - mov r1, r9 - mov r2, r5 - add r0, r0, #1024 - add r0, r4, r0 + add r5, r5, #8 + cmp r6, r2 + bcs .L4112 + ldrh r10, [r5, #20] + add r0, fp, r8 + ldrh r2, [r5, #16] + add r6, r6, #1 + ldrh r1, [r5, #18] + strh r10, [r5, #12] @ movhi + add r10, r10, #63 + bic r10, r10, #63 + strh r2, [r5, #8] @ movhi + strh r8, [r5, #10] @ movhi + add r1, fp, r1 + mov r2, r10 + str r3, [sp, #20] + str ip, [sp, #16] bl memcpy - strh r5, [r6, #4] @ movhi - b .L2828 -.L2815: - add r7, r7, #1 -.L2814: - cmp r7, r3 - bcc .L2821 - ldrh r2, [r4, #14] - cmp r2, r8 - bcc .L2825 - add r3, r3, #2 + add r8, r8, r10 + ldr r3, [sp, #20] + ldr ip, [sp, #16] + b .L4095 +.L4112: + add r6, r4, r6, asl #3 uxth r8, r8 - mov r1, r9 - mov r3, r3, asl #3 - add r2, r4, r3 - strh sl, [r4, r3] @ movhi - ldrh r3, [r4, #12] - strh r5, [r2, #4] @ movhi - strh r3, [r2, #2] @ movhi - ldrh r3, [r4, #12] - add r3, r8, r3 - strh r3, [r4, #12] @ movhi - ldrh r3, [r4, #14] - rsb r8, r8, r3 - strh r8, [r4, #14] @ movhi - ldrh r0, [r2, #2] - mov r2, r5 + add r0, fp, r8 + mov r1, r3 + strh r8, [r6, #18] @ movhi + mov r2, r9 + strh ip, [r6, #16] @ movhi + uxth r7, r7 + strh r9, [r6, #20] @ movhi + add r8, r8, r7 + bl memcpy + ldrh r5, [r4, #14] + strh r8, [r4, #12] @ movhi + ldr r3, [sp, #8] + add r5, r3, r5 + rsb r7, r7, r5 + strh r7, [r4, #14] @ movhi + b .L4110 +.L4094: + ldrh r0, [r5, #18] + mov r1, r3 + mov r2, r9 + add r0, fp, r0 + bl memcpy + strh r9, [r5, #20] @ movhi + b .L4110 +.L4093: + add r6, r6, #1 + b .L4092 +.L4111: + ldrh r1, [r4, #14] + cmp r1, r7 + bcc .L4105 + add r2, r4, r2, asl #3 + uxth r7, r7 + rsb r1, r7, r1 + strh ip, [r2, #16] @ movhi + ldrh r0, [r4, #12] + strh r9, [r2, #20] @ movhi + strh r0, [r2, #18] @ movhi + add r0, r7, r0 + strh r1, [r4, #14] @ movhi + mov r1, r3 + strh r0, [r4, #12] @ movhi + ldrh r0, [r2, #18] + mov r2, r9 add r0, r0, #1024 add r0, r4, r0 bl memcpy ldrh r3, [r4, #10] add r3, r3, #1 strh r3, [r4, #10] @ movhi -.L2828: +.L4110: ldr r3, [r4, #4] - movw r2, #65532 - mov r0, r4 + add r2, r4, #61440 + mov r1, #128 add r3, r3, #1 str r3, [r4, #4] - str r3, [r4, r2] - mov r2, #1 + str r3, [r2, #4092] + mov r2, r4 ldrh r3, [r4, #8] add r3, r3, #1 uxth r3, r3 - strh r3, [r4, #8] @ movhi cmp r3, #1 movhi r3, #0 - strhih r3, [r4, #8] @ movhi - ldr r3, [sp, #8] - mov r1, r3, asl #7 - bl rk_ftl_vendor_ops.constprop.27 + strh r3, [r4, #8] @ movhi + ldr r3, [sp, #4] + mov r0, r3, asl #7 + bl FlashBootVendorWrite mov r0, #0 - b .L2813 -.L2825: + b .L4091 +.L4105: mvn r0, #0 -.L2813: - add sp, sp, #20 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L2830: +.L4091: + add sp, sp, #28 + @ sp needed + ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L4114: .align 2 -.L2829: +.L4113: .word .LANCHOR4 .fnend .size rk_ftl_vendor_write, .-rk_ftl_vendor_write @@ -24720,81 +25210,81 @@ rk_ftl_vendor_storage_ioctl: bl ftl_malloc subs r4, r0, #0 mvneq r5, #0 - beq .L2832 - ldr r3, .L2848 + beq .L4116 + ldr r3, .L4132 cmp r6, r3 - beq .L2834 + beq .L4118 add r3, r3, #1 cmp r6, r3 - bne .L2845 - b .L2847 -.L2834: + beq .L4119 + b .L4130 +.L4118: mov r1, r5 mov r2, #8 bl rk_copy_from_user cmp r0, #0 - bne .L2845 - ldr r2, [r4, #0] - ldr r3, .L2848+4 + bne .L4130 + ldr r2, [r4] + ldr r3, .L4132+4 cmp r2, r3 - bne .L2844 + beq .L4121 +.L4122: + mvn r5, #0 + b .L4117 +.L4121: ldrh r0, [r4, #4] add r1, r4, #8 ldrh r2, [r4, #6] bl rk_ftl_vendor_read cmn r0, #1 - beq .L2840 + beq .L4122 uxth r2, r0 + strh r0, [r4, #6] @ movhi mov r1, r4 - strh r2, [r4, #6] @ movhi mov r0, r5 add r2, r2, #8 bl rk_copy_to_user cmp r0, #0 - moveq r5, r0 + moveq r5, #0 mvnne r5, #13 - b .L2833 -.L2847: + b .L4117 +.L4119: mov r1, r5 mov r2, #8 bl rk_copy_from_user cmp r0, #0 - bne .L2845 - ldr r2, [r4, #0] - ldr r3, .L2848+4 + bne .L4130 + ldr r2, [r4] + ldr r3, .L4132+4 cmp r2, r3 - bne .L2844 + bne .L4122 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L2844 + bhi .L4122 mov r0, r4 mov r1, r5 add r2, r2, #8 bl rk_copy_from_user cmp r0, #0 - bne .L2845 + bne .L4130 ldrh r0, [r4, #4] add r1, r4, #8 ldrh r2, [r4, #6] bl rk_ftl_vendor_write -.L2840: mov r5, r0 - b .L2833 -.L2844: - mvn r5, #0 - b .L2833 -.L2845: + b .L4117 +.L4130: mvn r5, #13 -.L2833: +.L4117: mov r0, r4 bl kfree -.L2832: +.L4116: mov r0, r5 ldmfd sp!, {r4, r5, r6, pc} -.L2849: +.L4133: .align 2 -.L2848: +.L4132: .word 1074034177 .word 1448232273 .fnend @@ -24980,7 +25470,6 @@ rk_ftl_vendor_storage_ioctl: .global c_ftl_nand_ext_blk_pre_plane .global c_ftl_nand_blk_pre_plane .global c_ftl_nand_planes_num - .global c_ftl_nand_blks_per_die_shift .global c_ftl_nand_blks_per_die .global c_ftl_nand_planes_per_die .global c_ftl_nand_die_num @@ -24997,6 +25486,7 @@ rk_ftl_vendor_storage_ioctl: .global gNandcVer .global gNandChipMap .global gNandIDataBuf + .global idb_flash_slc_mode .global FlashDdrTunningReadCount .global FlashWaitBusyScheduleEn .global gNandPhyInfo @@ -25009,6 +25499,7 @@ rk_ftl_vendor_storage_ioctl: .global gReadRetryInfo .global gpNandParaInfo .global gNandOptPara + .global g_nand_ecc_en .global g_slc2KBNand .global g_maxRetryCount .global g_maxRegNum @@ -25042,604 +25533,472 @@ rk_ftl_vendor_storage_ioctl: .global IDByte .global read_retry_cur_offset .section .rodata - .set .LANCHOR3,. + 0 - .type __func__.14269, %object - .size __func__.14269, 11 -__func__.14269: + .align 2 +.LANCHOR3 = . + 0 + .type __func__.20216, %object + .size __func__.20216, 11 +__func__.20216: .ascii "FtlMemInit\000" .LC0: .byte 60 .byte 40 .byte 24 .byte 16 - .type __func__.15064, %object - .size __func__.15064, 16 -__func__.15064: - .ascii "FtlScanAllBlock\000" - .type __func__.15045, %object - .size __func__.15045, 17 -__func__.15045: + .space 1 + .type __func__.20991, %object + .size __func__.20991, 17 +__func__.20991: .ascii "FtlDumpBlockInfo\000" - .type __func__.15312, %object - .size __func__.15312, 21 -__func__.15312: - .ascii "FtlVpcCheckAndModify\000" - .type __func__.14342, %object - .size __func__.14342, 8 -__func__.14342: - .ascii "FtlInit\000" - .type __func__.15010, %object - .size __func__.15010, 12 -__func__.15010: + .space 3 + .type __func__.21010, %object + .size __func__.21010, 16 +__func__.21010: + .ascii "FtlScanAllBlock\000" + .type __func__.21276, %object + .size __func__.21276, 17 +__func__.21276: + .ascii "ftl_scan_all_ppa\000" + .space 3 + .type __func__.20959, %object + .size __func__.20959, 12 +__func__.20959: .ascii "FtlCheckVpc\000" + .type __func__.21258, %object + .size __func__.21258, 21 +__func__.21258: + .ascii "FtlVpcCheckAndModify\000" + .space 3 + .type __func__.20289, %object + .size __func__.20289, 8 +__func__.20289: + .ascii "FtlInit\000" .section .rodata.str1.1,"aMS",%progbits,1 .LC1: .ascii "FlashEraseBlocks pageAddr error %x\012\000" .LC2: - .ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000" -.LC3: .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" .ascii "\000" -.LC4: +.LC3: .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" -.LC5: +.LC4: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" .ascii "\000" -.LC6: +.LC5: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC7: +.LC6: .ascii "FLASH INFO:\012\000" -.LC8: +.LC7: .ascii "FLASH ID: %x\012\000" -.LC9: +.LC8: .ascii "Device Capacity: %d MB\012\000" -.LC10: +.LC9: .ascii "FMWAIT: %x %x %x %x\012\000" -.LC11: +.LC10: .ascii "FTL INFO:\012\000" -.LC12: +.LC11: .ascii "g_MaxLpn = 0x%x\012\000" -.LC13: +.LC12: .ascii "g_VaildLpn = 0x%x\012\000" -.LC14: +.LC13: .ascii "read_page_count = 0x%x\012\000" -.LC15: +.LC14: .ascii "discard_page_count = 0x%x\012\000" -.LC16: +.LC15: .ascii "write_page_count = 0x%x\012\000" -.LC17: +.LC16: .ascii "cache_write_count = 0x%x\012\000" -.LC18: +.LC17: .ascii "l2p_write_count = 0x%x\012\000" -.LC19: +.LC18: .ascii "gc_page_count = 0x%x\012\000" -.LC20: +.LC19: .ascii "totle_write = %d MB\012\000" -.LC21: +.LC20: .ascii "totle_read = %d MB\012\000" -.LC22: +.LC21: .ascii "GSV = 0x%x\012\000" -.LC23: +.LC22: .ascii "GDV = 0x%x\012\000" -.LC24: +.LC23: .ascii "bad blk num = %d %d\012\000" -.LC25: +.LC24: .ascii "free_superblocks = 0x%x\012\000" -.LC26: +.LC25: .ascii "mlc_EC = 0x%x\012\000" -.LC27: +.LC26: .ascii "slc_EC = 0x%x\012\000" -.LC28: +.LC27: .ascii "avg_EC = 0x%x\012\000" -.LC29: +.LC28: .ascii "sys_EC = 0x%x\012\000" -.LC30: +.LC29: .ascii "max_EC = 0x%x\012\000" -.LC31: +.LC30: .ascii "min_EC = 0x%x\012\000" -.LC32: +.LC31: .ascii "PLT = 0x%x\012\000" -.LC33: +.LC32: .ascii "POT = 0x%x\012\000" -.LC34: +.LC33: .ascii "MaxSector = 0x%x\012\000" -.LC35: +.LC34: .ascii "init_sys_blks_pp = 0x%x\012\000" -.LC36: +.LC35: .ascii "sys_blks_pp = 0x%x\012\000" -.LC37: +.LC36: .ascii "free sysblock = 0x%x\012\000" -.LC38: +.LC37: .ascii "data_blks_pp = 0x%x\012\000" -.LC39: +.LC38: .ascii "data_op_blks_pp = 0x%x\012\000" -.LC40: +.LC39: .ascii "max_data_blks = 0x%x\012\000" -.LC41: +.LC40: .ascii "Sys.id = 0x%x\012\000" -.LC42: +.LC41: .ascii "Bbt.id = 0x%x\012\000" -.LC43: +.LC42: .ascii "ACT.page = 0x%x\012\000" -.LC44: +.LC43: .ascii "ACT.plane = 0x%x\012\000" -.LC45: +.LC44: .ascii "ACT.id = 0x%x\012\000" -.LC46: +.LC45: .ascii "ACT.mode = 0x%x\012\000" -.LC47: +.LC46: .ascii "ACT.a_pages = 0x%x\012\000" -.LC48: +.LC47: .ascii "ACT VPC = 0x%x\012\000" -.LC49: +.LC48: .ascii "BUF.page = 0x%x\012\000" -.LC50: +.LC49: .ascii "BUF.plane = 0x%x\012\000" -.LC51: +.LC50: .ascii "BUF.id = 0x%x\012\000" -.LC52: +.LC51: .ascii "BUF.mode = 0x%x\012\000" -.LC53: +.LC52: .ascii "BUF.a_pages = 0x%x\012\000" -.LC54: +.LC53: .ascii "BUF VPC = 0x%x\012\000" -.LC55: +.LC54: .ascii "TMP.page = 0x%x\012\000" -.LC56: +.LC55: .ascii "TMP.plane = 0x%x\012\000" -.LC57: +.LC56: .ascii "TMP.id = 0x%x\012\000" -.LC58: +.LC57: .ascii "TMP.mode = 0x%x\012\000" -.LC59: +.LC58: .ascii "TMP.a_pages = 0x%x\012\000" -.LC60: +.LC59: .ascii "GC.page = 0x%x\012\000" -.LC61: +.LC60: .ascii "GC.plane = 0x%x\012\000" -.LC62: +.LC61: .ascii "GC.id = 0x%x\012\000" -.LC63: +.LC62: .ascii "GC.mode = 0x%x\012\000" -.LC64: +.LC63: .ascii "GC.a_pages = 0x%x\012\000" -.LC65: +.LC64: .ascii "WR_CHK = 0x%x %x %x %x\012\000" -.LC66: +.LC65: .ascii "Read Err = 0x%x\012\000" -.LC67: +.LC66: .ascii "Prog Err = 0x%x\012\000" -.LC68: +.LC67: .ascii "gc_free_blk_th= 0x%x\012\000" -.LC69: +.LC68: .ascii "gc_merge_free_blk_th= 0x%x\012\000" -.LC70: +.LC69: .ascii "gc_skip_write_count= 0x%x\012\000" -.LC71: +.LC70: .ascii "gc_blk_index= 0x%x\012\000" -.LC72: +.LC71: .ascii "free min EC= 0x%x\012\000" -.LC73: +.LC72: .ascii "free max EC= 0x%x\012\000" -.LC74: +.LC73: .ascii "GC__SB VPC = 0x%x\012\000" -.LC75: +.LC74: .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" -.LC76: +.LC75: .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" -.LC77: +.LC76: .ascii "%s\012\000" +.LC77: + .ascii "FTL version: 5.0.56 20190508\000" .LC78: - .ascii "FTL version: 5.0.50 20180905\000" -.LC79: .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" .ascii "\012\000" -.LC80: +.LC79: .ascii "FtlGcRefreshBlock 0x%x\012\000" -.LC81: - .ascii "decrement_vpc_count %x = %d\012\000" -.LC82: - .ascii "decrement_vpc_count %x = %d in free list\012\000" -.LC83: +.LC80: .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" -.LC84: +.LC81: .ascii "%s error allocating memory. return -1\012\000" -.LC85: +.LC82: .ascii "%s %p:0x%x:\000" -.LC86: +.LC83: .ascii "%x \000" -.LC87: +.LC84: .ascii "\000" -.LC88: +.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" -.LC89: +.LC88: .ascii "nandc:\000" -.LC90: +.LC89: .ascii "%d flReg.d32=%x %x\012\000" -.LC91: - .ascii "micron RR %d row=%x,count %d,status=%d\012\000" -.LC92: - .ascii "ECC:%d\012\000" -.LC93: +.LC90: .ascii "sdr read ok %x ecc=%d\012\000" -.LC94: +.LC91: .ascii "sync para %d\012\000" -.LC95: +.LC92: .ascii "TOG mode Read error %x %x\012\000" -.LC96: +.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 "ECC:%d\012\000" +.LC96: + .ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000" .LC97: - .ascii "Read pageadd=%x ecc=%x err=%x\012\000" + .ascii "FlashLoadPhyInfo fail %x!!\012\000" .LC98: - .ascii "data:\000" + .ascii "Read pageadd=%x ecc=%x err=%x\012\000" .LC99: - .ascii "spare:\000" + .ascii "data:\000" .LC100: - .ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000" + .ascii "spare:\000" .LC101: - .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" + .ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000" .LC102: - .ascii "...%s enter...\012\000" + .ascii "FLFB:%d %d\012\000" .LC103: - .ascii "blk = %x vpc=%x mode = %x\012\000" + .ascii "prog error: = %x\012\000" .LC104: - .ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " - .ascii "%x\012\000" + .ascii "prog read error: = %x\012\000" .LC105: - .ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " - .ascii "%x\012\000" + .ascii "prog read s error: = %x %x %x\012\000" .LC106: - .ascii "superBlkID = %x vpc=%x\012\000" + .ascii "prog read d error: = %x %x %x\012\000" .LC107: - .ascii "flashmode = %x pagenum = %x %x\012\000" + .ascii "...%s enter...\012\000" .LC108: + .ascii "superBlkID = %x vpc=%x\012\000" +.LC109: + .ascii "flashmode = %x pagenum = %x %x\012\000" +.LC110: .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012" .ascii "\000" -.LC109: - .ascii "prog error: = %x\012\000" -.LC110: - .ascii "prog read error: = %x\012\000" .LC111: - .ascii "prog read s error: = %x %x %x\012\000" + .ascii "blk = %x vpc=%x mode = %x\012\000" .LC112: - .ascii "prog read d error: = %x %x %x\012\000" + .ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" .LC113: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" + .ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" .LC114: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" + .ascii "ftl_scan_all_ppa blk %x page %x\012\000" .LC115: - .ascii "FtlBbmTblFlush error:%x\012\000" + .ascii "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" .LC116: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" + .ascii "%s finished\012\000" .LC117: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" -.LC118: .ascii "FlashMakeFactorBbt %d\012\000" -.LC119: +.LC118: .ascii "bad block:%d %d\012\000" -.LC120: +.LC119: .ascii "FMFB:%d %d\012\000" -.LC121: +.LC120: .ascii "E:bad block:%d\012\000" -.LC122: +.LC121: .ascii "FMFB:Save %d %d\012\000" +.LC122: + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" .LC123: - .ascii "page map lost: %x %x\012\000" + .ascii "FtlBbmTblFlush error:%x\012\000" .LC124: - .ascii "FtlMapWritePage error = %x\012\000" + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" .LC125: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" .LC126: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" + .ascii "decrement_vpc_count %x = %d\012\000" .LC127: - .ascii "slc mode\000" + .ascii "decrement_vpc_count %x = %d in free list\012\000" .LC128: - .ascii "no ect\000" + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" .LC129: - .ascii "FLFB:%d %d\012\000" + .ascii "page map lost: %x %x\012\000" .LC130: - .ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" - .ascii "\000" + .ascii "FtlMapWritePage error = %x\012\000" .LC131: - .ascii "Mblk:\000" + .ascii "FtlMapWritePage error = %x error count = %d\012\000" .LC132: - .ascii "L2P:\000" + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" .LC133: - .ascii "L2PC:\000" + .ascii "no ect\000" .LC134: - .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012" - .ascii "\000" + .ascii "slc mode\000" .LC135: - .ascii ":\000" -.LC136: .ascii "BBT:\000" -.LC137: +.LC136: .ascii "region_id = %x phyAddr = %x\012\000" -.LC138: +.LC137: .ascii "map_ppn:\000" -.LC139: +.LC138: .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" +.LC139: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" .LC140: - .ascii "Ftlscanalldata = %x\012\000" + .ascii "free blk vpc error %x = %x %x\012\000" .LC141: - .ascii "scan lpa = %x ppa= %x\012\000" + .ascii "Ftlscanalldata = %x\012\000" .LC142: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC143: .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" .ascii "\000" -.LC143: - .ascii "RSB refresh addr %x\012\000" .LC144: - .ascii "spuer block %x vpn is 0\012 \000" + .ascii "RSB refresh addr %x\012\000" .LC145: - .ascii "g_recovery_ppa %x ver %x\012 \000" + .ascii "spuer block %x vpn is 0\012 \000" .LC146: - .ascii "FtlCheckVpc %x = %x %x\012\000" + .ascii "g_recovery_ppa %x ver %x\012 \000" .LC147: - .ascii "GC des block %x done\012\000" + .ascii "FtlCheckVpc %x = %x %x\012\000" .LC148: - .ascii "%d GC datablk = %x vpc %x %x\012\000" + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" .LC149: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" + .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" .LC150: - .ascii "g_gc_superblock_free %x %x %x %x %x\012\000" + .ascii "GC des block %x done\012\000" .LC151: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" + .ascii "%d GC datablk = %x vpc %x %x\012\000" .LC152: - .ascii "rk_ftl_de_init %x\012\000" + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" .LC153: - .ascii "fix power lost blk = %x vpc=%x\012\000" + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" .LC154: - .ascii "erase power lost blk = %x vpc=%x\012\000" + .ascii "rk_ftl_de_init %x\012\000" .LC155: .ascii "...%s: no bad block mapping table, format device\012" .ascii "\000" .LC156: .ascii "...%s FtlSysBlkInit error ,format device!\012\000" .LC157: - .ascii "FtlWrite: lpa error:%x %x\012\000" -.LC158: - .ascii "vpc1\000" -.LC159: - .ascii "vpc2\000" -.LC160: - .ascii "FtlCheckVpc2 %x = %x %x\012\000" -.LC161: - .ascii "free blk vpc error %x = %x %x\012\000" -.LC162: - .ascii "otp error! %d\000" -.LC163: - .ascii "rr\000" -.LC164: - .ascii "FlashLoadPhyInfo fail %x!!\012\000" -.LC165: .ascii "FtlInit %x\012\000" +.LC158: + .ascii "fix power lost blk = %x vpc=%x\012\000" +.LC159: + .ascii "erase power lost blk = %x vpc=%x\012\000" +.LC160: + .ascii "FtlWrite: lpa error:%x %x\012\000" +.LC161: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012" + .ascii "\000" +.LC162: + .ascii ":\000" +.LC163: + .ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC164: + .ascii "Mblk:\000" +.LC165: + .ascii "L2P:\000" .LC166: - .ascii "IdBlockReadData %x %x\012\000" + .ascii "L2PC:\000" .LC167: - .ascii "IdBlockReadData %x %x ret= %x\012\000" + .ascii "IdBlockReadData %x %x\012\000" .LC168: - .ascii "IDBlockWriteData %x %x\012\000" + .ascii "IdBlockReadData %x %x ret= %x\012\000" .LC169: - .ascii "IDBlockWriteData %x %x ret= %x\012\000" -.LC170: .ascii "write_idblock fix data %x %x\012\000" -.LC171: +.LC170: .ascii "idblk:\000" -.LC172: +.LC171: .ascii "idb reverse %x %x\012\000" -.LC173: +.LC172: .ascii "write_idblock totle_sec %x %x %x %x\012\000" +.LC173: + .ascii "IDBlockWriteData %x %x\012\000" .LC174: + .ascii "IDBlockWriteData %x %x ret= %x\012\000" +.LC175: .ascii "write and check error:%d idb=%x,offset=%x,r=%x,w=%x" .ascii "\012\000" -.LC175: - .ascii "write\000" .LC176: - .ascii "read\000" + .ascii "write\000" .LC177: - .ascii "write_idblock error %d\012\000" + .ascii "read\000" .LC178: - .ascii "READ_SECTOR_IO\012\000" + .ascii "write_idblock error %d\012\000" .LC179: - .ascii "rk_copy_from_user error\012\000" + .ascii "wl_lba %p %x %x %x\012\000" .LC180: - .ascii "READ_SECTOR_IO %x %x\012\000" + .ascii "READ_SECTOR_IO\012\000" .LC181: - .ascii "rk_copy_to_user error\012\000" + .ascii "rk_copy_from_user error\012\000" .LC182: - .ascii "WRITE_SECTOR_IO\012\000" + .ascii "READ_SECTOR_IO %x %x\012\000" .LC183: - .ascii "WRITE_SECTOR_IO %x %x\012\000" + .ascii "rk_copy_to_user error\012\000" .LC184: - .ascii "END_WRITE_SECTOR_IO\012\000" + .ascii "WRITE_SECTOR_IO\012\000" .LC185: - .ascii "END_WRITE_SECTOR_IO %x %x\012\000" + .ascii "WRITE_SECTOR_IO %x %x\012\000" .LC186: - .ascii "GET_FLASH_INFO_IO\012\000" + .ascii "END_WRITE_SECTOR_IO\012\000" .LC187: - .ascii "GET_BAD_BLOCK_IO\012\000" + .ascii "END_WRITE_SECTOR_IO %x %x\012\000" .LC188: - .ascii "GET_LOCK_FLAG_IO\012\000" + .ascii "GET_FLASH_INFO_IO\012\000" .LC189: - .ascii "GET_PUBLIC_KEY_IO\012\000" + .ascii "GET_BAD_BLOCK_IO\012\000" .LC190: - .ascii "RKNAND_GET_DRM_KEY\012\000" + .ascii "GET_LOCK_FLAG_IO\012\000" .LC191: - .ascii "RKNAND_STORE_DRM_KEY\012\000" + .ascii "GET_PUBLIC_KEY_IO\012\000" .LC192: - .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" + .ascii "RKNAND_GET_DRM_KEY\012\000" .LC193: - .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" + .ascii "RKNAND_STORE_DRM_KEY\012\000" .LC194: - .ascii "RKNAND_GET_SN_SECTOR\012\000" + .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" .LC195: - .ascii "RKNAND_LOADER_UNLOCK\012\000" + .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" .LC196: - .ascii "RKNAND_LOADER_STATUS\012\000" + .ascii "RKNAND_GET_SN_SECTOR\012\000" .LC197: - .ascii "RKNAND_LOADER_LOCK\012\000" + .ascii "RKNAND_LOADER_UNLOCK\012\000" .LC198: - .ascii "LockKey not match %d\012\000" + .ascii "RKNAND_LOADER_STATUS\012\000" .LC199: - .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" + .ascii "RKNAND_LOADER_LOCK\012\000" .LC200: - .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" + .ascii "LockKey not match %d\012\000" .LC201: - .ascii "return ret = %lx\012\000" + .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" .LC202: - .ascii "secureBootEn check error\012\000" + .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" .LC203: + .ascii "return ret = %lx\012\000" +.LC204: + .ascii "secureBootEn check error\012\000" +.LC205: .ascii "\0013vendor storage %x,%x,%x\012\000" .data .align 2 - .set .LANCHOR1,. + 0 - .type ToshibaA19RefValue, %object - .size ToshibaA19RefValue, 45 -ToshibaA19RefValue: - .byte 4 - .byte 5 - .byte 6 - .byte 7 - .byte 13 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 4 - .byte 4 - .byte 124 - .byte 126 - .byte 0 - .byte 0 - .byte 124 - .byte 120 - .byte 120 - .byte 0 - .byte 124 - .byte 118 - .byte 116 - .byte 114 - .byte 0 - .byte 8 - .byte 8 - .byte 0 - .byte 0 - .byte 0 - .byte 11 - .byte 126 - .byte 118 - .byte 116 - .byte 0 - .byte 16 - .byte 118 - .byte 114 - .byte 112 - .byte 0 - .byte 2 - .byte 0 - .byte 126 - .byte 124 - .byte 0 - .type Toshiba15RefValue, %object - .size Toshiba15RefValue, 95 -Toshiba15RefValue: - .byte 4 - .byte 5 - .byte 6 - .byte 7 - .byte 13 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 2 - .byte 4 - .byte 2 - .byte 0 - .byte 0 - .byte 8 - .byte 8 - .byte 0 - .byte 0 - .byte 0 - .byte 124 - .byte 0 - .byte 124 - .byte 124 - .byte 0 - .byte 122 - .byte 0 - .byte 122 - .byte 122 - .byte 0 - .byte 11 - .byte 126 - .byte 118 - .byte 116 - .byte 0 - .byte 120 - .byte 2 - .byte 120 - .byte 122 - .byte 0 - .byte 126 - .byte 4 - .byte 126 - .byte 122 - .byte 0 - .byte 16 - .byte 118 - .byte 114 - .byte 112 - .byte 0 - .byte 118 - .byte 4 - .byte 118 - .byte 120 - .byte 0 - .byte 4 - .byte 4 - .byte 4 - .byte 118 - .byte 0 - .byte 2 - .byte 0 - .byte 126 - .byte 124 - .byte 0 - .byte 6 - .byte 10 - .byte 6 - .byte 2 - .byte 0 - .byte 116 - .byte 124 - .byte 116 - .byte 118 - .byte 0 - .byte 4 - .byte 4 - .byte 124 - .byte 126 - .byte 0 - .byte 0 - .byte 124 - .byte 120 - .byte 120 - .byte 0 - .byte 124 - .byte 118 - .byte 116 - .byte 114 - .byte 0 +.LANCHOR1 = . + 0 .type random_seed, %object .size random_seed, 256 random_seed: @@ -25771,8 +26130,263 @@ random_seed: .short 28406 .short 17598 .short 28087 + .type ToshibaA19RefValue, %object + .size ToshibaA19RefValue, 45 +ToshibaA19RefValue: + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 4 + .byte 124 + .byte 126 + .byte 0 + .byte 0 + .byte 124 + .byte 120 + .byte 120 + .byte 0 + .byte 124 + .byte 118 + .byte 116 + .byte 114 + .byte 0 + .byte 8 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 126 + .byte 118 + .byte 116 + .byte 0 + .byte 16 + .byte 118 + .byte 114 + .byte 112 + .byte 0 + .byte 2 + .byte 0 + .byte 126 + .byte 124 + .byte 0 + .space 3 + .type Toshiba15RefValue, %object + .size Toshiba15RefValue, 95 +Toshiba15RefValue: + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 4 + .byte 2 + .byte 0 + .byte 0 + .byte 8 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 124 + .byte 0 + .byte 124 + .byte 124 + .byte 0 + .byte 122 + .byte 0 + .byte 122 + .byte 122 + .byte 0 + .byte 11 + .byte 126 + .byte 118 + .byte 116 + .byte 0 + .byte 120 + .byte 2 + .byte 120 + .byte 122 + .byte 0 + .byte 126 + .byte 4 + .byte 126 + .byte 122 + .byte 0 + .byte 16 + .byte 118 + .byte 114 + .byte 112 + .byte 0 + .byte 118 + .byte 4 + .byte 118 + .byte 120 + .byte 0 + .byte 4 + .byte 4 + .byte 4 + .byte 118 + .byte 0 + .byte 2 + .byte 0 + .byte 126 + .byte 124 + .byte 0 + .byte 6 + .byte 10 + .byte 6 + .byte 2 + .byte 0 + .byte 116 + .byte 124 + .byte 116 + .byte 118 + .byte 0 + .byte 4 + .byte 4 + .byte 124 + .byte 126 + .byte 0 + .byte 0 + .byte 124 + .byte 120 + .byte 120 + .byte 0 + .byte 124 + .byte 118 + .byte 116 + .byte 114 + .byte 0 + .space 1 + .type ToshibaRefValue, %object + .size ToshibaRefValue, 8 +ToshibaRefValue: + .byte 0 + .byte 4 + .byte 124 + .byte 120 + .byte 116 + .byte 8 + .byte 12 + .byte 112 + .type SamsungRefValue, %object + .size SamsungRefValue, 64 +SamsungRefValue: + .byte -89 + .byte -92 + .byte -91 + .byte -90 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 10 + .byte 0 + .byte 0 + .byte 40 + .byte 0 + .byte -20 + .byte -40 + .byte -19 + .byte -11 + .byte -19 + .byte -26 + .byte 10 + .byte 15 + .byte 5 + .byte 0 + .byte 15 + .byte 10 + .byte -5 + .byte -20 + .byte -24 + .byte -17 + .byte -24 + .byte -36 + .byte -15 + .byte -5 + .byte -2 + .byte -16 + .byte 10 + .byte 0 + .byte -5 + .byte -20 + .byte -48 + .byte -30 + .byte -48 + .byte -62 + .byte 20 + .byte 15 + .byte -5 + .byte -20 + .byte -24 + .byte -5 + .byte -24 + .byte -36 + .byte 30 + .byte 20 + .byte -5 + .byte -20 + .byte -5 + .byte -1 + .byte -5 + .byte -8 + .byte 7 + .byte 12 + .byte 2 + .byte 0 + .type gNandParaInfo, %object + .size gNandParaInfo, 32 +gNandParaInfo: + .byte 0 + .byte 0 + .space 5 + .byte 0 + .byte 1 + .byte 8 + .short 128 + .byte 2 + .byte 1 + .short 2048 + .short 0 + .byte 1 + .byte 0 + .byte 24 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .space 4 + .type gFtlInitStatus, %object + .size gFtlInitStatus, 4 +gFtlInitStatus: + .word -1 .type NandFlashParaTbl, %object - .size NandFlashParaTbl, 2464 + .size NandFlashParaTbl, 2592 NandFlashParaTbl: .byte 6 .byte 44 @@ -26349,6 +26963,58 @@ NandFlashParaTbl: .byte 5 .byte 44 .byte -124 + .byte 68 + .byte 50 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 52 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 .byte -60 .byte 52 .byte -86 @@ -26398,6 +27064,32 @@ NandFlashParaTbl: .byte 1 .byte 0 .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 100 + .byte 60 + .byte -87 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 2 + .short 1024 + .short 479 + .byte 3 + .byte 17 + .byte 40 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .space 4 .byte 6 .byte -83 .byte -34 @@ -26737,6 +27429,32 @@ NandFlashParaTbl: .byte 0 .space 4 .byte 6 + .byte -83 + .byte 58 + .byte 20 + .byte 3 + .byte 8 + .byte 80 + .byte 2 + .byte 1 + .byte 32 + .short 388 + .byte 2 + .byte 2 + .short 1362 + .short 473 + .byte 9 + .byte 8 + .byte 40 + .byte 32 + .byte 3 + .byte 1 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .space 4 + .byte 6 .byte -119 .byte 100 .byte 68 @@ -26933,7 +27651,7 @@ NandFlashParaTbl: .byte 1 .short 1024 .short 455 - .byte 3 + .byte 4 .byte 17 .byte 40 .byte 32 @@ -27855,122 +28573,6 @@ NandOptPara: .byte 0 .byte 0 .space 14 - .type gNandParaInfo, %object - .size gNandParaInfo, 32 -gNandParaInfo: - .byte 0 - .byte 0 - .space 5 - .byte 0 - .byte 1 - .byte 8 - .short 128 - .byte 2 - .byte 1 - .short 2048 - .short 0 - .byte 1 - .byte 0 - .byte 24 - .byte 32 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 0 - .byte 0 - .space 4 - .type SamsungRefValue, %object - .size SamsungRefValue, 64 -SamsungRefValue: - .byte -89 - .byte -92 - .byte -91 - .byte -90 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 5 - .byte 10 - .byte 0 - .byte 0 - .byte 40 - .byte 0 - .byte -20 - .byte -40 - .byte -19 - .byte -11 - .byte -19 - .byte -26 - .byte 10 - .byte 15 - .byte 5 - .byte 0 - .byte 15 - .byte 10 - .byte -5 - .byte -20 - .byte -24 - .byte -17 - .byte -24 - .byte -36 - .byte -15 - .byte -5 - .byte -2 - .byte -16 - .byte 10 - .byte 0 - .byte -5 - .byte -20 - .byte -48 - .byte -30 - .byte -48 - .byte -62 - .byte 20 - .byte 15 - .byte -5 - .byte -20 - .byte -24 - .byte -5 - .byte -24 - .byte -36 - .byte 30 - .byte 20 - .byte -5 - .byte -20 - .byte -5 - .byte -1 - .byte -5 - .byte -8 - .byte 7 - .byte 12 - .byte 2 - .byte 0 - .type ToshibaRefValue, %object - .size ToshibaRefValue, 8 -ToshibaRefValue: - .byte 0 - .byte 4 - .byte 124 - .byte 120 - .byte 116 - .byte 8 - .byte 12 - .byte 112 - .type gFtlInitStatus, %object - .size gFtlInitStatus, 4 -gFtlInitStatus: - .word -1 - .type ftl_gc_temp_block_bops_scan_page_addr, %object - .size ftl_gc_temp_block_bops_scan_page_addr, 2 -ftl_gc_temp_block_bops_scan_page_addr: - .short -1 - .space 2 - .type power_up_flag, %object - .size power_up_flag, 4 -power_up_flag: - .word 1 .type refValueDefault, %object .size refValueDefault, 28 refValueDefault: @@ -28031,6 +28633,15 @@ gSlcNandParaInfo: .byte 0 .byte 0 .space 4 + .type ftl_gc_temp_block_bops_scan_page_addr, %object + .size ftl_gc_temp_block_bops_scan_page_addr, 2 +ftl_gc_temp_block_bops_scan_page_addr: + .short -1 + .space 2 + .type power_up_flag, %object + .size power_up_flag, 4 +power_up_flag: + .word 1 .type gTable_Crc32, %object .size gTable_Crc32, 1024 gTable_Crc32: @@ -28292,13 +28903,9 @@ gTable_Crc32: .word -1309114188 .bss .align 2 - .set .LANCHOR0,. + 0 - .set .LANCHOR2,. + 8184 - .set .LANCHOR4,. + 16368 - .type gReadRetryInfo, %object - .size gReadRetryInfo, 852 -gReadRetryInfo: - .space 852 +.LANCHOR0 = . + 0 +.LANCHOR2 = . + 8184 +.LANCHOR4 = . + 16368 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -28324,19 +28931,6 @@ gNandChipMap: .type gNandOptPara, %object .size gNandOptPara, 32 gNandOptPara: - .space 32 - .type gFlashSlcMode, %object - .size gFlashSlcMode, 1 -gFlashSlcMode: - .space 1 - .space 3 - .type gNandIDataBuf, %object - .size gNandIDataBuf, 2048 -gNandIDataBuf: - .space 2048 - .type IDByte, %object - .size IDByte, 32 -IDByte: .space 32 .type gpNandc, %object .size gpNandc, 4 @@ -28378,6 +28972,11 @@ NANDC_FMWAIT_SYN: .size gNandPhyInfo, 28 gNandPhyInfo: .space 28 + .type gFlashSlcMode, %object + .size gFlashSlcMode, 1 +gFlashSlcMode: + .space 1 + .space 3 .type slcPageToMlcPageTbl, %object .size slcPageToMlcPageTbl, 512 slcPageToMlcPageTbl: @@ -28394,39 +28993,47 @@ FlashWaitBusyScheduleEn: .size gpNandParaInfo, 4 gpNandParaInfo: .space 4 - .type gDieOp, %object - .size gDieOp, 128 -gDieOp: - .space 128 - .type read_retry_cur_offset, %object - .size read_retry_cur_offset, 4 -read_retry_cur_offset: - .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 g_retryMode, %object - .size g_retryMode, 1 -g_retryMode: + .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: + .space 4 + .type IDByte, %object + .size IDByte, 32 +IDByte: + .space 32 + .type gDieOp, %object + .size gDieOp, 128 +gDieOp: + .space 128 + .type gFlashInterfaceMode, %object + .size gFlashInterfaceMode, 1 +gFlashInterfaceMode: .space 1 .type gNandMaxDie, %object .size gNandMaxDie, 1 gNandMaxDie: .space 1 - .space 1 + .space 2 .type DieCsIndex, %object .size DieCsIndex, 8 DieCsIndex: .space 8 - .type gFlashInterfaceMode, %object - .size gFlashInterfaceMode, 1 -gFlashInterfaceMode: - .space 1 - .space 3 - .type g_nandc_version_data, %object - .size g_nandc_version_data, 4 -g_nandc_version_data: + .type idb_flash_slc_mode, %object + .size idb_flash_slc_mode, 4 +idb_flash_slc_mode: .space 4 .type gFlashToggleModeEn, %object .size gFlashToggleModeEn, 1 @@ -28440,6 +29047,10 @@ gBootDdrMode: .type gNandcVer, %object .size gNandcVer, 4 gNandcVer: + .space 4 + .type g_nandc_version_data, %object + .size g_nandc_version_data, 4 +g_nandc_version_data: .space 4 .type gMasterTempBuf, %object .size gMasterTempBuf, 4 @@ -28510,6 +29121,7 @@ c_ftl_nand_die_num: .type c_ftl_nand_planes_per_die, %object .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 @@ -28530,10 +29142,6 @@ c_ftl_vendor_part_size: .type c_ftl_nand_blks_per_die, %object .size c_ftl_nand_blks_per_die, 2 c_ftl_nand_blks_per_die: - .space 2 - .type c_ftl_nand_blks_per_die_shift, %object - .size c_ftl_nand_blks_per_die_shift, 2 -c_ftl_nand_blks_per_die_shift: .space 2 .type c_ftl_nand_page_pre_blk, %object .size c_ftl_nand_page_pre_blk, 2 @@ -28632,6 +29240,10 @@ g_MaxLpn: .size gBbtInfo, 60 gBbtInfo: .space 60 + .type gSysFreeQueue, %object + .size gSysFreeQueue, 2056 +gSysFreeQueue: + .space 2056 .type g_flash_read_only_en, %object .size g_flash_read_only_en, 4 g_flash_read_only_en: @@ -28648,10 +29260,6 @@ p_erase_count_table: .size g_totle_sys_slc_erase_count, 4 g_totle_sys_slc_erase_count: .space 4 - .type gSysFreeQueue, %object - .size gSysFreeQueue, 2056 -gSysFreeQueue: - .space 2056 .type g_sys_save_data, %object .size g_sys_save_data, 48 g_sys_save_data: @@ -28784,9 +29392,9 @@ c_ftl_nand_data_op_blks_per_plane: .space 2 .space 2 .type gSysInfo, %object - .size gSysInfo, 12 + .size gSysInfo, 16 gSysInfo: - .space 12 + .space 16 .type g_gc_superblock, %object .size g_gc_superblock, 48 g_gc_superblock: @@ -28843,16 +29451,16 @@ req_gc: .type c_gc_page_buf_num, %object .size c_gc_page_buf_num, 4 c_gc_page_buf_num: + .space 4 + .type p_gc_blk_tbl, %object + .size p_gc_blk_tbl, 4 +p_gc_blk_tbl: .space 4 .type g_gc_blk_num, %object .size g_gc_blk_num, 2 g_gc_blk_num: .space 2 .space 2 - .type p_gc_blk_tbl, %object - .size p_gc_blk_tbl, 4 -p_gc_blk_tbl: - .space 4 .type p_gc_page_info, %object .size p_gc_page_info, 4 p_gc_page_info: @@ -28888,71 +29496,25 @@ g_gc_bad_block_temp_tbl: .type g_gc_bad_block_gc_index, %object .size g_gc_bad_block_gc_index, 2 g_gc_bad_block_gc_index: + .space 2 + .type mlcPageToSlcPageTbl, %object + .size mlcPageToSlcPageTbl, 1024 +mlcPageToSlcPageTbl: + .space 1024 + .type gNandMaxChip, %object + .size gNandMaxChip, 1 +gNandMaxChip: + .space 1 + .space 1 + .type gTotleBlock, %object + .size gTotleBlock, 2 +gTotleBlock: .space 2 .type g_free_slc_blk_num, %object .size g_free_slc_blk_num, 2 g_free_slc_blk_num: .space 2 .space 2 - .type p_map_block_valid_page_count, %object - .size p_map_block_valid_page_count, 4 -p_map_block_valid_page_count: - .space 4 - .type p_l2p_map_buf, %object - .size p_l2p_map_buf, 4 -p_l2p_map_buf: - .space 4 - .type gL2pMapInfo, %object - .size gL2pMapInfo, 44 -gL2pMapInfo: - .space 44 - .type g_totle_map_block, %object - .size g_totle_map_block, 2 -g_totle_map_block: - .space 2 - .space 2 - .type p_map_block_table, %object - .size p_map_block_table, 4 -p_map_block_table: - .space 4 - .type p_map_block_ver_table, %object - .size p_map_block_ver_table, 4 -p_map_block_ver_table: - .space 4 - .type p_map_region_ppn_table, %object - .size p_map_region_ppn_table, 4 -p_map_region_ppn_table: - .space 4 - .type c_ftl_nand_bbm_buf_size, %object - .size c_ftl_nand_bbm_buf_size, 2 -c_ftl_nand_bbm_buf_size: - .space 2 - .space 2 - .type g_req_cache, %object - .size g_req_cache, 4 -g_req_cache: - .space 4 - .type g_tmp_data_superblock_id, %object - .size g_tmp_data_superblock_id, 2 -g_tmp_data_superblock_id: - .space 2 - .space 2 - .type g_totle_swl_count, %object - .size g_totle_swl_count, 4 -g_totle_swl_count: - .space 4 - .type ftl_gc_temp_power_lost_recovery_flag, %object - .size ftl_gc_temp_power_lost_recovery_flag, 4 -ftl_gc_temp_power_lost_recovery_flag: - .space 4 - .type g_recovery_page_min_ver, %object - .size g_recovery_page_min_ver, 4 -g_recovery_page_min_ver: - .space 4 - .type p_swl_mul_table, %object - .size p_swl_mul_table, 4 -p_swl_mul_table: - .space 4 .type g_SlcPartLbaEndSector, %object .size g_SlcPartLbaEndSector, 4 g_SlcPartLbaEndSector: @@ -29035,6 +29597,10 @@ p_wr_io_spare_buf: g_ect_tbl_info_size: .space 2 .space 2 + .type p_swl_mul_table, %object + .size p_swl_mul_table, 4 +p_swl_mul_table: + .space 4 .type gp_ect_tbl_info, %object .size gp_ect_tbl_info, 4 gp_ect_tbl_info: @@ -29042,6 +29608,14 @@ gp_ect_tbl_info: .type p_valid_page_count_check_table, %object .size p_valid_page_count_check_table, 4 p_valid_page_count_check_table: + .space 4 + .type p_map_block_table, %object + .size p_map_block_table, 4 +p_map_block_table: + .space 4 + .type p_map_block_valid_page_count, %object + .size p_map_block_valid_page_count, 4 +p_map_block_valid_page_count: .space 4 .type p_vendor_block_valid_page_count, %object .size p_vendor_block_valid_page_count, 4 @@ -29054,63 +29628,70 @@ p_vendor_block_ver_table: .type p_vendor_region_ppn_table, %object .size p_vendor_region_ppn_table, 4 p_vendor_region_ppn_table: + .space 4 + .type p_map_region_ppn_table, %object + .size p_map_region_ppn_table, 4 +p_map_region_ppn_table: .space 4 .type p_map_region_ppn_check_table, %object .size p_map_region_ppn_check_table, 4 p_map_region_ppn_check_table: .space 4 - .type gNandMaxChip, %object - .size gNandMaxChip, 1 -gNandMaxChip: - .space 1 - .space 1 - .type gTotleBlock, %object - .size gTotleBlock, 2 -gTotleBlock: + .type p_map_block_ver_table, %object + .size p_map_block_ver_table, 4 +p_map_block_ver_table: + .space 4 + .type p_l2p_map_buf, %object + .size p_l2p_map_buf, 4 +p_l2p_map_buf: + .space 4 + .type c_ftl_nand_bbm_buf_size, %object + .size c_ftl_nand_bbm_buf_size, 2 +c_ftl_nand_bbm_buf_size: .space 2 - .type mlcPageToSlcPageTbl, %object - .size mlcPageToSlcPageTbl, 1024 -mlcPageToSlcPageTbl: - .space 1024 + .space 2 + .type gL2pMapInfo, %object + .size gL2pMapInfo, 44 +gL2pMapInfo: + .space 44 + .type g_totle_map_block, %object + .size g_totle_map_block, 2 +g_totle_map_block: + .space 2 + .space 2 + .type g_req_cache, %object + .size g_req_cache, 4 +g_req_cache: + .space 4 + .type g_tmp_data_superblock_id, %object + .size g_tmp_data_superblock_id, 2 +g_tmp_data_superblock_id: + .space 2 + .space 2 + .type g_totle_swl_count, %object + .size g_totle_swl_count, 4 +g_totle_swl_count: + .space 4 + .type ftl_gc_temp_power_lost_recovery_flag, %object + .size ftl_gc_temp_power_lost_recovery_flag, 4 +ftl_gc_temp_power_lost_recovery_flag: + .space 4 + .type g_recovery_page_min_ver, %object + .size g_recovery_page_min_ver, 4 +g_recovery_page_min_ver: + .space 4 + .type gNandIDataBuf, %object + .size gNandIDataBuf, 2048 +gNandIDataBuf: + .space 2048 .type RK29_NANDC_REG_BASE, %object .size RK29_NANDC_REG_BASE, 4 RK29_NANDC_REG_BASE: - .space 4 - .type gFlashPageBuffer1, %object - .size gFlashPageBuffer1, 4 -gFlashPageBuffer1: - .space 4 - .type g_maxRetryCount, %object - .size g_maxRetryCount, 1 -g_maxRetryCount: - .space 1 - .space 3 - .type gpFlashSaveInfo, %object - .size gpFlashSaveInfo, 4 -gpFlashSaveInfo: .space 4 .type gFlashPageBuffer0, %object .size gFlashPageBuffer0, 4 gFlashPageBuffer0: .space 4 - .type gNandFlashIDBEccBits, %object - .size gNandFlashIDBEccBits, 1 -gNandFlashIDBEccBits: - .space 1 - .space 3 - .type gNandFlashIdbBlockAddr, %object - .size gNandFlashIdbBlockAddr, 4 -gNandFlashIdbBlockAddr: - .space 4 - .type gNandFlashInfoBlockAddr, %object - .size gNandFlashInfoBlockAddr, 4 -gNandFlashInfoBlockAddr: - .space 4 - .type gNandIDBResBlkNumSaveInFlash, %object - .size gNandIDBResBlkNumSaveInFlash, 1 -gNandIDBResBlkNumSaveInFlash: - .space 1 - .space 3 .type FlashDdrTunningReadCount, %object .size FlashDdrTunningReadCount, 4 FlashDdrTunningReadCount: @@ -29119,18 +29700,38 @@ FlashDdrTunningReadCount: .size gpReadRetrial, 4 gpReadRetrial: .space 4 - .type gMultiPageReadEn, %object - .size gMultiPageReadEn, 1 -gMultiPageReadEn: + .type gpFlashSaveInfo, %object + .size gpFlashSaveInfo, 4 +gpFlashSaveInfo: + .space 4 + .type gNandFlashInfoBlockAddr, %object + .size gNandFlashInfoBlockAddr, 4 +gNandFlashInfoBlockAddr: + .space 4 + .type gNandFlashIdbBlockAddr, %object + .size gNandFlashIdbBlockAddr, 4 +gNandFlashIdbBlockAddr: + .space 4 + .type gNandIDBResBlkNumSaveInFlash, %object + .size gNandIDBResBlkNumSaveInFlash, 1 +gNandIDBResBlkNumSaveInFlash: .space 1 - .space 3 - .type req_sys, %object - .size req_sys, 36 -req_sys: - .space 36 - .type g_MaxLbn, %object - .size g_MaxLbn, 4 -g_MaxLbn: + .type g_maxRetryCount, %object + .size g_maxRetryCount, 1 +g_maxRetryCount: + .space 1 + .type gNandFlashIDBEccBits, %object + .size gNandFlashIDBEccBits, 1 +gNandFlashIDBEccBits: + .space 1 + .space 1 + .type gFlashPageBuffer1, %object + .size gFlashPageBuffer1, 4 +gFlashPageBuffer1: + .space 4 + .type gFlashSpareBuffer, %object + .size gFlashSpareBuffer, 4 +gFlashSpareBuffer: .space 4 .type gFlashProgCheckBuffer, %object .size gFlashProgCheckBuffer, 4 @@ -29140,14 +29741,27 @@ gFlashProgCheckBuffer: .size gFlashProgCheckSpareBuffer, 4 gFlashProgCheckSpareBuffer: .space 4 - .type gFlashSpareBuffer, %object - .size gFlashSpareBuffer, 4 -gFlashSpareBuffer: - .space 4 + .type g_nand_ecc_en, %object + .size g_nand_ecc_en, 1 +g_nand_ecc_en: + .space 1 + .type gMultiPageReadEn, %object + .size gMultiPageReadEn, 1 +gMultiPageReadEn: + .space 1 + .space 2 .type FbbtBlk, %object .size FbbtBlk, 16 FbbtBlk: .space 16 + .type req_sys, %object + .size req_sys, 36 +req_sys: + .space 36 + .type g_MaxLbn, %object + .size g_MaxLbn, 4 +g_MaxLbn: + .space 4 .type gVendorBlkInfo, %object .size gVendorBlkInfo, 44 gVendorBlkInfo: @@ -29156,6 +29770,11 @@ gVendorBlkInfo: .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: @@ -29163,7 +29782,6 @@ g_power_lost_ecc_error_blk: .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 @@ -29189,14 +29807,22 @@ g_gc_cur_blk_max_valid_pages: .type gp_last_act_superblock, %object .size gp_last_act_superblock, 4 gp_last_act_superblock: + .space 4 + .type gc_discard_updated, %object + .size gc_discard_updated, 4 +gc_discard_updated: .space 4 .type g_LowFormat, %object .size g_LowFormat, 4 g_LowFormat: .space 4 - .type gc_discard_updated, %object - .size gc_discard_updated, 4 -gc_discard_updated: + .type gLoaderBootInfo, %object + .size gLoaderBootInfo, 4 +gLoaderBootInfo: + .space 4 + .type RK29_NANDC1_REG_BASE, %object + .size RK29_NANDC1_REG_BASE, 4 +RK29_NANDC1_REG_BASE: .space 4 .type g_ftl_nand_free_count, %object .size g_ftl_nand_free_count, 4 @@ -29205,18 +29831,6 @@ g_ftl_nand_free_count: .type last_cache_match_count, %object .size last_cache_match_count, 4 last_cache_match_count: - .space 4 - .type check_valid_page_count_table, %object - .size check_valid_page_count_table, 8192 -check_valid_page_count_table: - .space 8192 - .type gLoaderBootInfo, %object - .size gLoaderBootInfo, 4 -gLoaderBootInfo: - .space 4 - .type RK29_NANDC1_REG_BASE, %object - .size RK29_NANDC1_REG_BASE, 4 -RK29_NANDC1_REG_BASE: .space 4 .type idb_write_enable, %object .size idb_write_enable, 1 diff --git a/drivers/rk_nand/rk_ftl_arm_v7_thumb.S b/drivers/rk_nand/rk_ftl_arm_v7_thumb.S index d5ed56072374..4bfb2fa426ea 100644 --- a/drivers/rk_nand/rk_ftl_arm_v7_thumb.S +++ b/drivers/rk_nand/rk_ftl_arm_v7_thumb.S @@ -5,7 +5,7 @@ * 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: 2018-05-28 + * date: 2019-05-08 */ .syntax unified .arch armv7-a @@ -18,41 +18,11 @@ .eabi_attribute 26, 2 .eabi_attribute 30, 4 .eabi_attribute 34, 1 - .eabi_attribute 18, 4 + .eabi_attribute 18, 2 .thumb .file "rk_ftl_arm_v7.S" #APP - .macro it, cond - .endm - .macro itt, cond - .endm - .macro ite, cond - .endm - .macro ittt, cond - .endm - .macro itte, cond - .endm - .macro itet, cond - .endm - .macro itee, cond - .endm - .macro itttt, cond - .endm - .macro ittte, cond - .endm - .macro ittet, cond - .endm - .macro ittee, cond - .endm - .macro itett, cond - .endm - .macro itete, cond - .endm - .macro iteet, cond - .endm - .macro iteee, cond - .endm - + .syntax unified .thumb .text .align 1 @@ -187,6 +157,37 @@ FlashSetRandomizer: .fnend .size FlashSetRandomizer, .-FlashSetRandomizer .align 1 + .global FlashBlockAlignInit + .thumb + .thumb_func + .type FlashBlockAlignInit, %function +FlashBlockAlignInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + cmp r0, #256 + ldr r3, .L42 + bls .L38 + mov r2, #512 + b .L41 +.L38: + cmp r0, #128 + bhi .L40 + str r0, [r3, #4] + bx lr +.L40: + mov r2, #256 +.L41: + str r2, [r3, #4] + bx lr +.L43: + .align 2 +.L42: + .word .LANCHOR0 + .fnend + .size FlashBlockAlignInit, .-FlashBlockAlignInit + .align 1 .global FlashReadCmd .thumb .thumb_func @@ -198,7 +199,7 @@ FlashReadCmd: push {r4, lr} .save {r4, lr} lsrs r2, r1, #16 - ldr r4, .L38 + ldr r4, .L45 add r4, r4, r0, lsl #3 ldr r3, [r4, #12] ldrb r4, [r4, #16] @ zero_extendqisi2 @@ -216,9 +217,9 @@ FlashReadCmd: str r2, [r3, #2056] pop {r4, lr} b FlashSetRandomizer -.L39: +.L46: .align 2 -.L38: +.L45: .word .LANCHOR0 .fnend .size FlashReadCmd, .-FlashReadCmd @@ -234,7 +235,7 @@ FlashReadDpDataOutCmd: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} uxtb r6, r1 - ldr r4, .L44 + ldr r4, .L51 lsrs r5, r1, #8 add r3, r4, r0, lsl #3 ldrb r4, [r4, #60] @ zero_extendqisi2 @@ -244,7 +245,7 @@ FlashReadDpDataOutCmd: lsr r4, r1, #16 lsl r3, r3, #8 add r3, r3, r2 - bne .L41 + bne .L48 movs r2, #6 str r2, [r3, #2056] movs r2, #0 @@ -253,8 +254,8 @@ FlashReadDpDataOutCmd: str r6, [r3, #2052] str r5, [r3, #2052] str r4, [r3, #2052] - b .L43 -.L41: + b .L50 +.L48: movs r2, #0 str r2, [r3, #2056] str r2, [r3, #2052] @@ -266,71 +267,17 @@ FlashReadDpDataOutCmd: str r4, [r3, #2056] str r2, [r3, #2052] str r2, [r3, #2052] -.L43: +.L50: movs r2, #224 str r2, [r3, #2056] pop {r4, r5, r6, lr} b FlashSetRandomizer -.L45: - .align 2 -.L44: - .word .LANCHOR0 - .fnend - .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd - .align 1 - .global flash_enter_slc_mode - .thumb - .thumb_func - .type flash_enter_slc_mode, %function -flash_enter_slc_mode: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L51 - ldrb r2, [r3, #76] @ zero_extendqisi2 - cbz r2, .L46 - add r0, r3, r0, lsl #3 - ldrb r2, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] - add r3, r3, r2, lsl #8 - movs r2, #218 - str r2, [r3, #2056] -.L46: - bx lr .L52: .align 2 .L51: .word .LANCHOR0 .fnend - .size flash_enter_slc_mode, .-flash_enter_slc_mode - .align 1 - .global flash_exit_slc_mode - .thumb - .thumb_func - .type flash_exit_slc_mode, %function -flash_exit_slc_mode: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r3, .L58 - ldrb r2, [r3, #76] @ zero_extendqisi2 - cbz r2, .L53 - add r0, r3, r0, lsl #3 - ldrb r2, [r0, #16] @ zero_extendqisi2 - ldr r3, [r0, #12] - add r3, r3, r2, lsl #8 - movs r2, #223 - str r2, [r3, #2056] -.L53: - bx lr -.L59: - .align 2 -.L58: - .word .LANCHOR0 - .fnend - .size flash_exit_slc_mode, .-flash_exit_slc_mode + .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 1 .global FlashProgFirstCmd .thumb @@ -343,7 +290,7 @@ FlashProgFirstCmd: push {r4, lr} .save {r4, lr} lsrs r2, r1, #16 - ldr r4, .L61 + ldr r4, .L54 add r4, r4, r0, lsl #3 ldr r3, [r4, #12] ldrb r4, [r4, #16] @ zero_extendqisi2 @@ -360,9 +307,9 @@ FlashProgFirstCmd: str r2, [r3, #2052] pop {r4, lr} b FlashSetRandomizer -.L62: +.L55: .align 2 -.L61: +.L54: .word .LANCHOR0 .fnend .size FlashProgFirstCmd, .-FlashProgFirstCmd @@ -377,12 +324,12 @@ FlashEraseCmd: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, lr} .save {r4, r5, lr} - ldr r5, .L68 + ldr r5, .L61 add r0, r5, r0, lsl #3 ldrb r3, [r0, #16] @ zero_extendqisi2 ldr r4, [r0, #12] lsls r3, r3, #8 - cbz r2, .L64 + cbz r2, .L57 adds r2, r4, r3 movs r0, #96 str r0, [r2, #2056] @@ -394,7 +341,7 @@ FlashEraseCmd: str r0, [r2, #2052] ldr r2, [r5, #4] add r1, r1, r2 -.L64: +.L57: add r3, r3, r4 movs r2, #96 str r2, [r3, #2056] @@ -407,9 +354,9 @@ FlashEraseCmd: movs r2, #208 str r2, [r3, #2056] pop {r4, r5, pc} -.L69: +.L62: .align 2 -.L68: +.L61: .word .LANCHOR0 .fnend .size FlashEraseCmd, .-FlashEraseCmd @@ -425,7 +372,7 @@ FlashProgDpSecondCmd: push {r4, r5, lr} .save {r4, r5, lr} lsrs r2, r1, #16 - ldr r4, .L71 + ldr r4, .L64 add r5, r4, r0, lsl #3 ldrb r4, [r4, #55] @ zero_extendqisi2 ldr r3, [r5, #12] @@ -442,9 +389,9 @@ FlashProgDpSecondCmd: str r2, [r3, #2052] pop {r4, r5, lr} b FlashSetRandomizer -.L72: +.L65: .align 2 -.L71: +.L64: .word .LANCHOR0 .fnend .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd @@ -458,7 +405,7 @@ FlashProgSecondCmd: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L74 + ldr r3, .L67 add r0, r3, r0, lsl #3 ldrb r2, [r0, #16] @ zero_extendqisi2 ldr r3, [r0, #12] @@ -466,9 +413,9 @@ FlashProgSecondCmd: movs r2, #16 str r2, [r3, #2056] bx lr -.L75: +.L68: .align 2 -.L74: +.L67: .word .LANCHOR0 .fnend .size FlashProgSecondCmd, .-FlashProgSecondCmd @@ -482,7 +429,7 @@ FlashProgDpFirstCmd: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L77 + ldr r2, .L70 add r0, r2, r0, lsl #3 ldrb r2, [r2, #54] @ zero_extendqisi2 ldrb r1, [r0, #16] @ zero_extendqisi2 @@ -490,43 +437,43 @@ FlashProgDpFirstCmd: add r3, r3, r1, lsl #8 str r2, [r3, #2056] bx lr -.L78: +.L71: .align 2 -.L77: +.L70: .word .LANCHOR0 .fnend .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 1 - .global JSHash + .global js_hash .thumb .thumb_func - .type JSHash, %function -JSHash: + .type js_hash, %function +js_hash: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L83 + ldr r3, .L76 add r1, r1, r0 push {r4, lr} .save {r4, lr} -.L80: +.L73: cmp r0, r1 - beq .L82 + beq .L75 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 .L80 -.L82: + b .L73 +.L75: mov r0, r3 pop {r4, pc} -.L84: +.L77: .align 2 -.L83: +.L76: .word 1204201446 .fnend - .size JSHash, .-JSHash + .size js_hash, .-js_hash .align 1 .global FlashLoadIdbInfo .thumb @@ -542,192 +489,6 @@ FlashLoadIdbInfo: .fnend .size FlashLoadIdbInfo, .-FlashLoadIdbInfo .align 1 - .global BuildFlashLsbPageTable - .thumb - .thumb_func - .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} - mov r4, r1 - cbnz r0, .L87 - ldr r3, .L113 -.L88: - strh r0, [r3, r0, lsl #1] @ movhi - adds r0, r0, #1 - cmp r0, #256 - bne .L88 -.L92: - movs r1, #255 - ldr r0, .L113+4 - mov r2, #1024 - uxth r4, r4 - bl memset - movs r3, #0 - ldr r1, .L113+8 - b .L89 -.L87: - cmp r0, #1 - bne .L90 - ldr r5, .L113 - movs r3, #0 -.L91: - uxth r2, r3 - cmp r2, #3 - ite ls - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 - 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 - adds r3, r3, #1 - cmp r3, #256 - bne .L91 - b .L92 -.L90: - cmp r0, #2 - bne .L93 - ldr r0, .L113 - movs r3, #0 -.L94: - uxth r2, r3 - lsls r1, r2, #1 - subs r1, r1, #1 - cmp r2, #1 - it hi - movhi r2, r1 - strh r2, [r0, r3, lsl #1] @ movhi - adds r3, r3, #1 - cmp r3, #256 - bne .L94 - b .L92 -.L93: - cmp r0, #3 - bne .L95 - ldr r5, .L113 - movs r3, #0 -.L96: - uxth r2, r3 - cmp r2, #5 - ite ls - movls r0, #0 - movhi r0, #1 - bics r1, r0, r3 - 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 - adds r3, r3, #1 - cmp r3, #256 - bne .L96 - b .L92 -.L95: - cmp r0, #4 - mov r3, #0 - bne .L97 - ldr r2, .L113+8 - strh r3, [r2, #80] @ movhi - movs r3, #1 - strh r0, [r2, #88] @ movhi - strh r3, [r2, #82] @ movhi - movs r3, #2 - strh r3, [r2, #84] @ movhi - movs r3, #3 - strh r3, [r2, #86] @ movhi - movs r3, #5 - strh r3, [r2, #90] @ movhi - movs r3, #7 - strh r3, [r2, #92] @ movhi - movs r3, #8 - strh r3, [r2, #94]! @ movhi -.L98: - 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 - cmp r3, #256 - bne .L98 - b .L92 -.L97: - cmp r0, #5 - bne .L99 - ldr r2, .L113 -.L100: - strh r3, [r2, r3, lsl #1] @ movhi - adds r3, r3, #1 - cmp r3, #16 - bne .L100 - ldr r2, .L113+12 -.L101: - strh r3, [r2, #2]! @ movhi - adds r3, r3, #2 - uxth r3, r3 - cmp r3, #496 - bne .L101 - b .L92 -.L99: - cmp r0, #6 - bne .L92 - ldr r5, .L113 -.L102: - uxth r2, r3 - cmp r2, #5 - ite ls - movls r0, #0 - movhi r0, #1 - add r1, r2, r2, lsl #1 - bics r6, r0, r3 - 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, #256 - bne .L102 - b .L92 -.L89: - uxth r2, r3 - cmp r2, r4 - bcs .L112 - ldr r2, .L113 - ldrh r2, [r2, r3, lsl #1] - adds r3, r3, #1 - add r0, r1, r2, lsl #1 - strh r2, [r0, #592] @ movhi - b .L89 -.L112: - pop {r4, r5, r6, pc} -.L114: - .align 2 -.L113: - .word .LANCHOR0+80 - .word .LANCHOR0+592 - .word .LANCHOR0 - .word .LANCHOR0+110 - .fnend - .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable - .align 1 .global FlashPrintInfo .thumb .thumb_func @@ -741,122 +502,6 @@ FlashPrintInfo: .fnend .size FlashPrintInfo, .-FlashPrintInfo .align 1 - .global FlashDieInfoInit - .thumb - .thumb_func - .type FlashDieInfoInit, %function -FlashDieInfoInit: - .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 r3, #0 - ldr r4, .L134 - strb r3, [r4, #1616] - strb r3, [r4, #1617] - ldr r3, .L134+4 - ldrh r3, [r3, #266] - cmp r3, #256 - bls .L117 - mov r3, #512 - b .L133 -.L117: - cmp r3, #128 - it hi - movhi r3, #256 -.L133: - ldr r0, .L134+8 - movs r1, #8 - str r3, [r4, #4] - bl __memzero - ldr r0, .L134+12 - movs r1, #32 - bl __memzero - ldr r0, .L134+16 - movs r1, #128 - ldr r8, .L134 - bl __memzero - ldr r5, [r4, #1788] - movs r6, #0 - add r10, r8, #1792 - adds r7, r5, #1 -.L121: - mov r0, r7 - add r1, r10, r6, lsl #3 - ldrb r2, [r5] @ zero_extendqisi2 - bl FlashMemCmp8 - ldr r9, .L134+20 - cbnz r0, .L120 - ldrb r3, [r8, #1616] @ zero_extendqisi2 - add r2, r8, r3, lsl #2 - str r0, [r2, #1628] - adds r2, r3, #1 - add r3, r3, r8 - strb r2, [r8, #1616] - strb r6, [r3, #1620] -.L120: - adds r6, r6, #1 - cmp r6, #4 - bne .L121 - ldrb r3, [r4, #1616] @ zero_extendqisi2 - ldr r2, .L134 - strb r3, [r4, #1617] - ldrb r3, [r5, #8] @ zero_extendqisi2 - cmp r3, #2 - beq .L122 -.L126: - ldrb r3, [r5, #13] @ zero_extendqisi2 - ldrb r2, [r4, #1616] @ zero_extendqisi2 - smulbb r2, r2, r3 - ldrh r3, [r5, #14] - smulbb r3, r2, r3 - strh r3, [r4, #1824] @ movhi - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L122: - ldr r8, [r2, #4] - movs r6, #0 - mov r10, r2 -.L125: - mov r0, r7 - add r1, r9, r6, lsl #3 - ldrb r2, [r5] @ zero_extendqisi2 - bl FlashMemCmp8 - cbnz r0, .L123 - ldrb r1, [r5, #13] @ zero_extendqisi2 - ldrh r3, [r5, #14] - ldrb r2, [r10, #1616] @ zero_extendqisi2 - mul r1, r8, r1 - and r3, r3, #65280 - add r0, r10, r2, lsl #2 - muls r3, r1, r3 - str r3, [r0, #1628] - ldrb r1, [r5, #23] @ zero_extendqisi2 - cbz r1, .L124 - lsls r3, r3, #1 - str r3, [r0, #1628] -.L124: - adds r3, r2, #1 - add r2, r2, r4 - strb r3, [r4, #1616] - strb r6, [r2, #1620] -.L123: - adds r6, r6, #1 - cmp r6, #4 - bne .L125 - b .L126 -.L135: - .align 2 -.L134: - .word .LANCHOR0 - .word .LANCHOR1 - .word .LANCHOR0+1620 - .word .LANCHOR0+1628 - .word .LANCHOR0+1660 - .word .LANCHOR0+1792 - .fnend - .size FlashDieInfoInit, .-FlashDieInfoInit - .align 1 .global ftl_flash_suspend .thumb .thumb_func @@ -866,28 +511,28 @@ ftl_flash_suspend: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L137 - ldr r2, [r3, #1828] + ldr r3, .L81 + ldr r2, [r3, #76] ldr r1, [r2] - str r1, [r3, #1832] + str r1, [r3, #80] ldr r1, [r2, #4] - str r1, [r3, #1836] + str r1, [r3, #84] ldr r1, [r2, #8] - str r1, [r3, #1840] + str r1, [r3, #88] ldr r1, [r2, #12] - str r1, [r3, #1844] + str r1, [r3, #92] ldr r1, [r2, #304] - str r1, [r3, #1848] + str r1, [r3, #96] ldr r1, [r2, #308] - str r1, [r3, #1852] + str r1, [r3, #100] ldr r1, [r2, #336] ldr r2, [r2, #344] - str r1, [r3, #1856] - str r2, [r3, #1860] + str r1, [r3, #104] + str r2, [r3, #108] bx lr -.L138: +.L82: .align 2 -.L137: +.L81: .word .LANCHOR0 .fnend .size ftl_flash_suspend, .-ftl_flash_suspend @@ -905,14 +550,14 @@ LogAddr2PhyAddr: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #12 mov r7, r0 - ldr r0, .L144 + ldr r0, .L88 mov r8, r3 ldr r4, [r7, #4] mov r10, r1 mov r9, r2 - ldrh r3, [r0, #1878] + ldrh r3, [r0, #126] bic r4, r4, #-2147483648 - ldrh r5, [r0, #1876] + ldrh r5, [r0, #124] mov r6, r0 ldrh fp, [r0, #4] smulbb r5, r5, r3 @@ -928,104 +573,49 @@ LogAddr2PhyAddr: uxtheq fp, fp mov r1, r5 bl __aeabi_uidiv - ldr r3, [sp, #4] cmp r10, #1 ubfx r1, r4, #0, #10 uxth r0, r0 + ldr r3, [sp, #4] smulbb r5, r0, r5 sub r3, r3, r5 uxth r3, r3 - bne .L141 - ldrb r2, [r6, #76] @ zero_extendqisi2 - cbnz r2, .L141 - ldr r2, .L144 + bne .L85 + ldrb r2, [r6, #140] @ zero_extendqisi2 + cbnz r2, .L85 + ldr r2, .L88 add r1, r2, r1, lsl #1 - ldrh r1, [r1, #80] -.L141: + ldrh r1, [r1, #144] +.L85: add r6, r6, r0, lsl #2 - ldr r2, [r6, #1628] + ldr r2, [r6, #656] mla fp, fp, r3, r2 ldrb r3, [sp, #48] @ zero_extendqisi2 cmp r3, #1 add r1, r1, fp str r1, [r9] str r0, [r8] - bls .L143 + bls .L87 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 .L142 -.L143: + b .L86 +.L87: movs r0, #0 -.L142: +.L86: add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L145: +.L89: .align 2 -.L144: +.L88: .word .LANCHOR0 .fnend .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 1 - .global ftl_read_flash_info - .thumb - .thumb_func - .type ftl_read_flash_info, %function -ftl_read_flash_info: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movs r1, #11 - mov r4, r0 - bl __memzero - ldr r3, .L150 - movs r5, #1 - ldr r2, [r3, #1788] - ldrb r1, [r2, #9] @ zero_extendqisi2 - ldr r2, [r3, #4] - addw r3, r3, #1620 - smulbb r2, r1, r2 - strh r2, [r4, #4] @ unaligned - ldrb r2, [r3, #272] @ zero_extendqisi2 - strb r2, [r4, #7] - ldr r2, [r3, #276] - str r2, [r4] @ unaligned - ldr r2, [r3, #168] - ldrb r0, [r3, #-4] @ zero_extendqisi2 - ldrb r1, [r2, #9] @ zero_extendqisi2 - strb r1, [r4, #6] - movs r1, #32 - strb r1, [r4, #8] - ldrb r2, [r2, #7] @ zero_extendqisi2 - strb r2, [r4, #9] - movs r2, #0 - strb r2, [r4, #10] -.L147: - uxtb r1, r2 - cmp r1, r0 - bcs .L149 - ldrb r1, [r2, r3] @ zero_extendqisi2 - adds r2, r2, #1 - lsl r6, r5, r1 - ldrb r1, [r4, #10] @ zero_extendqisi2 - orrs r1, r1, r6 - strb r1, [r4, #10] - b .L147 -.L149: - pop {r4, r5, r6, pc} -.L151: - .align 2 -.L150: - .word .LANCHOR0 - .fnend - .size ftl_read_flash_info, .-ftl_read_flash_info - .align 1 .global FlashScheduleEnSet .thumb .thumb_func @@ -1035,14 +625,14 @@ FlashScheduleEnSet: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L153 - ldr r2, [r3, #1900] - str r0, [r3, #1900] + ldr r3, .L91 + ldr r2, [r3, #688] + str r0, [r3, #688] mov r0, r2 bx lr -.L154: +.L92: .align 2 -.L153: +.L91: .word .LANCHOR0 .fnend .size FlashScheduleEnSet, .-FlashScheduleEnSet @@ -1056,13 +646,13 @@ FlashGetPageSize: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L156 - ldr r3, [r3, #1788] + ldr r3, .L94 + ldr r3, [r3, #692] ldrb r0, [r3, #9] @ zero_extendqisi2 bx lr -.L157: +.L95: .align 2 -.L156: +.L94: .word .LANCHOR0 .fnend .size FlashGetPageSize, .-FlashGetPageSize @@ -1089,16 +679,16 @@ NandcGetChipIf: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L160 + ldr r3, .L98 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 bx lr -.L161: +.L99: .align 2 -.L160: +.L98: .word .LANCHOR0 .fnend .size NandcGetChipIf, .-NandcGetChipIf @@ -1112,16 +702,16 @@ NandcSetDdrPara: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L163 - ldr r2, [r3, #1828] + ldr r3, .L101 + ldr r2, [r3, #76] lsls r3, r0, #8 orr r0, r3, r0, lsl #16 orr r3, r0, #1 str r3, [r2, #304] bx lr -.L164: +.L102: .align 2 -.L163: +.L101: .word .LANCHOR0 .fnend .size NandcSetDdrPara, .-NandcSetDdrPara @@ -1135,14 +725,14 @@ NandcSetDdrDiv: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L166 + ldr r3, .L104 orr r0, r0, #16640 - ldr r3, [r3, #1828] + ldr r3, [r3, #76] str r0, [r3, #344] bx lr -.L167: +.L105: .align 2 -.L166: +.L104: .word .LANCHOR0 .fnend .size NandcSetDdrDiv, .-NandcSetDdrDiv @@ -1156,20 +746,20 @@ NandcSetDdrMode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L171 - ldr r2, [r3, #1828] + ldr r3, .L109 + ldr r2, [r3, #76] ldr r3, [r2] - cbnz r0, .L169 + cbnz r0, .L107 bfi r3, r0, #13, #1 - b .L170 -.L169: + b .L108 +.L107: orr r3, r3, #253952 -.L170: +.L108: str r3, [r2] bx lr -.L172: +.L110: .align 2 -.L171: +.L109: .word .LANCHOR0 .fnend .size NandcSetDdrMode, .-NandcSetDdrMode @@ -1183,37 +773,37 @@ NandcSetMode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L180 + ldr r3, .L118 ands r1, r0, #6 - ldr r2, [r3, #1828] + ldr r2, [r3, #76] ldr r3, [r2] - beq .L174 - lsls r1, r0, #29 + beq .L112 orr r3, r3, #24576 - movw r1, #16641 - str r1, [r2, #344] - ldr r1, .L180+4 + lsls r1, r0, #29 bfc r3, #15, #1 + movw r1, #8322 orr r3, r3, #196608 + str r1, [r2, #344] + add r1, r1, #1040384 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 .L176 -.L174: + b .L114 +.L112: bfi r3, r1, #13, #1 -.L176: +.L114: str r3, [r2] movs r0, #0 bx lr -.L181: +.L119: .align 2 -.L180: +.L118: .word .LANCHOR0 - .word 1710595 .fnend .size NandcSetMode, .-NandcSetMode .align 1 @@ -1226,7 +816,7 @@ NandcFlashCs: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L183 + ldr r2, .L121 add r0, r2, r0, lsl #3 movs r2, #1 ldr r1, [r0, #12] @@ -1236,9 +826,9 @@ NandcFlashCs: bfi r3, r2, #0, #8 str r3, [r1] bx lr -.L184: +.L122: .align 2 -.L183: +.L121: .word .LANCHOR0 .fnend .size NandcFlashCs, .-NandcFlashCs @@ -1252,7 +842,7 @@ NandcFlashDeCs: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L186 + ldr r3, .L124 add r0, r3, r0, lsl #3 ldr r2, [r0, #12] ldr r3, [r2] @@ -1260,9 +850,9 @@ NandcFlashDeCs: bfc r3, #17, #1 str r3, [r2] bx lr -.L187: +.L125: .align 2 -.L186: +.L124: .word .LANCHOR0 .fnend .size NandcFlashDeCs, .-NandcFlashDeCs @@ -1273,22 +863,24 @@ NandcFlashDeCs: .type NandcDelayns, %function NandcDelayns: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - .pad #8 - sub sp, sp, #8 - lsrs r0, r0, #4 - str r0, [sp, #4] -.L189: - ldr r0, [sp, #4] - subs r3, r0, #1 - str r3, [sp, #4] - cmp r0, #0 - bne .L189 - add sp, sp, #8 - @ sp needed - bx lr + push {r3, lr} + .save {r3, lr} + addw r0, r0, #999 + ldr r3, .L127 + umull r0, r1, r0, r3 + ldr r3, .L127+4 + ldr r3, [r3, #8] + lsrs r0, r1, #6 + blx r3 + movs r0, #0 + pop {r3, pc} +.L128: + .align 2 +.L127: + .word 274877907 + .word arm_delay_ops .fnend .size NandcDelayns, .-NandcDelayns .align 1 @@ -1303,21 +895,21 @@ FlashReadStatus: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r2, #112 - ldr r3, .L192 + ldr r3, .L130 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 - lsls r4, r4, #8 str r2, [r3, #2056] + lsls r4, r4, #8 bl NandcDelayns ldr r0, [r5, r4] pop {r3, r4, r5, pc} -.L193: +.L131: .align 2 -.L192: +.L130: .word .LANCHOR0 .fnend .size FlashReadStatus, .-FlashReadStatus @@ -1333,51 +925,51 @@ ToshibaSetRRPara: 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, .L203+8 + ldr r9, .L141+8 movs r4, #0 - ldr r7, .L203 + ldr r7, .L141 mov r5, r0 - add r10, r9, #288 + add r10, r9, #256 mov r6, r1 -.L195: - ldrb r3, [r7, #1905] @ zero_extendqisi2 +.L133: + ldrb r3, [r7, #697] @ zero_extendqisi2 cmp r4, r3 - bcs .L202 + bcs .L140 movs r3, #85 str r3, [r5, #8] ldrsb r3, [r4, r10] movs r0, #200 str r3, [r5, #4] bl NandcDelayns - ldrb r3, [r7, #1904] @ zero_extendqisi2 + ldrb r3, [r7, #696] @ zero_extendqisi2 cmp r3, #34 - bne .L196 + bne .L134 add r3, r4, r8 add r3, r3, r10 - b .L201 -.L196: + b .L139 +.L134: cmp r3, #35 - bne .L198 - ldr r2, .L203+4 + bne .L136 + ldr r2, .L141+4 add r3, r4, r8 add r3, r3, r2 -.L201: +.L139: ldrsb r3, [r3, #5] - b .L200 -.L198: + b .L138 +.L136: add r3, r9, r6 - ldrsb r3, [r3, #432] -.L200: + ldrsb r3, [r3, #400] +.L138: str r3, [r5] adds r4, r4, #1 - b .L195 -.L202: + b .L133 +.L140: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L204: +.L142: .align 2 -.L203: +.L141: .word .LANCHOR0 - .word .LANCHOR1+336 + .word .LANCHOR1+304 .word .LANCHOR1 .fnend .size ToshibaSetRRPara, .-ToshibaSetRRPara @@ -1390,21 +982,21 @@ SamsungSetRRPara: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L209 + ldr r3, .L147 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, .L209+4 + ldr r8, .L147+4 adds r5, r1, #3 mov r9, #161 mov r6, r0 mov r7, r3 mov r10, r4 -.L206: - ldrb r3, [r8, #1905] @ zero_extendqisi2 +.L144: + ldrb r3, [r8, #697] @ zero_extendqisi2 cmp r4, r3 - bcs .L208 + bcs .L146 str r9, [r6, #8] mov r0, #300 str r10, [r6] @@ -1414,13 +1006,13 @@ SamsungSetRRPara: ldrsb r3, [r5, #1]! str r3, [r6] bl NandcDelayns - b .L206 -.L208: + b .L144 +.L146: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L210: +.L148: .align 2 -.L209: - .word .LANCHOR1+440 +.L147: + .word .LANCHOR1+408 .word .LANCHOR0 .fnend .size SamsungSetRRPara, .-SamsungSetRRPara @@ -1437,73 +1029,79 @@ HynixSetRRPara: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #12 mov r7, r3 - ldr r6, .L218 - mov r9, r2 - mov r5, r0 - mov r8, r1 - addw r4, r6, #1906 - ldr r3, [r6, #1788] - ldrb r2, [r3, #19] @ zero_extendqisi2 + ldr r5, .L157 + mov r6, r0 + mov r9, r1 + mov fp, r2 + ldr r3, [r5, #692] + ldrb r4, [r3, #19] @ zero_extendqisi2 lsls r3, r0, #3 - cmp r2, #6 - bne .L212 - add r4, r4, r0, lsl #6 - adds r4, r4, #20 + cmp r4, #6 + bne .L150 + add r4, r5, r0, lsl #6 + addw r4, r4, #718 add r4, r4, r7, lsl #2 - b .L213 -.L212: - cmp r2, #7 - itett eq - moveq r2, #160 - addne r2, r7, r3 - mlaeq r4, r2, r0, r4 + b .L151 +.L150: + cmp r4, #7 + bne .L152 + mov r10, #160 + add r4, r7, r7, lsl #2 + mla r10, r10, r0, r5 + addw r10, r10, #726 + add r4, r10, r4, lsl #1 + b .L151 +.L152: + cmp r4, #8 + iteet ne + addne r4, r7, r3 + addweq r4, r5, #726 addeq r2, r7, r7, lsl #2 - ittee ne - addne r4, r4, r2, lsl #3 - addne r4, r4, #20 - addeq r4, r4, #28 - addeq r4, r4, r2, lsl #1 -.L213: - add r3, r3, r6 - mov r0, r5 - add r8, r8, #-1 + addne r4, r5, r4, lsl #3 + ite eq + addeq r4, r4, r2 + addwne r4, r4, #718 +.L151: + add r3, r3, r5 + mov r0, r6 + add r9, r9, #-1 subs r4, r4, #1 - ldrb fp, [r3, #16] @ zero_extendqisi2 + ldrb r8, [r3, #16] @ zero_extendqisi2 + add r9, r9, fp ldr r10, [r3, #12] bl NandcFlashCs - movs r3, #54 - lsl fp, fp, #8 - add r2, r10, fp - str r3, [r2, #2056] - add r3, r9, #-1 - add r9, r9, r8 - mov r8, r2 -.L215: - cmp r3, r9 - beq .L217 - ldrb r2, [r3, #1]! @ zero_extendqisi2 + add r1, fp, #-1 + movs r2, #54 + lsl r8, r8, #8 + add r3, r10, r8 + mov fp, r3 + str r2, [r3, #2056] +.L154: + cmp r1, r9 + beq .L156 + ldrb r3, [r1, #1]! @ zero_extendqisi2 movs r0, #200 - str r2, [r8, #2052] - str r3, [sp, #4] + str r3, [fp, #2052] + str r1, [sp, #4] bl NandcDelayns - ldrsb r2, [r4, #1]! - ldr r3, [sp, #4] - str r2, [r8, #2048] - b .L215 -.L217: - add fp, fp, r10 + ldrsb r3, [r4, #1]! + str r3, [fp, #2048] + ldr r1, [sp, #4] + b .L154 +.L156: + add r8, r8, r10 movs r3, #22 - mov r0, r5 + mov r0, r6 add r5, r5, r6 - str r3, [fp, #2056] + str r3, [r8, #2056] bl NandcFlashDeCs - strb r7, [r5, #2760] + strb r7, [r5, #1552] add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L219: +.L158: .align 2 -.L218: +.L157: .word .LANCHOR0 .fnend .size HynixSetRRPara, .-HynixSetRRPara @@ -1518,35 +1116,35 @@ FlashSetReadRetryDefault: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} - ldr r3, .L226 - ldr r2, [r3, #1788] + ldr r3, .L165 + ldr r2, [r3, #692] ldrb r2, [r2, #19] @ zero_extendqisi2 subs r2, r2, #1 - cmp r2, #6 - bhi .L220 + cmp r2, #7 + bhi .L159 movs r4, #0 mov r5, r3 -.L221: - ldr r2, .L226+4 +.L160: + ldr r2, .L165+4 uxtb r0, r4 ldrb r3, [r2, r4, lsl #3] @ zero_extendqisi2 cmp r3, #173 - bne .L222 - ldrb r1, [r5, #1907] @ zero_extendqisi2 - adds r2, r2, #118 + bne .L161 + ldrb r1, [r5, #699] @ zero_extendqisi2 + subw r2, r2, #854 movs r3, #0 bl HynixSetRRPara -.L222: +.L161: adds r4, r4, #1 cmp r4, #4 - bne .L221 -.L220: + bne .L160 +.L159: pop {r3, r4, r5, pc} -.L227: +.L166: .align 2 -.L226: +.L165: .word .LANCHOR0 - .word .LANCHOR0+1792 + .word .LANCHOR0+1556 .fnend .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 1 @@ -1560,51 +1158,51 @@ FlashReadStatusEN: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - ldr r5, .L238 + ldr r5, .L177 add r0, r5, r0, lsl #3 - ldr r3, [r5, #1788] + ldr r3, [r5, #692] 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 .L229 - cbnz r2, .L230 + bne .L168 + cbnz r2, .L169 ldrb r2, [r5, #57] @ zero_extendqisi2 - b .L237 -.L230: + b .L176 +.L169: ldrb r2, [r5, #58] @ zero_extendqisi2 -.L237: +.L176: add r3, r3, r6 str r2, [r3, #2056] ldrb r0, [r5, #59] @ zero_extendqisi2 - cbz r0, .L233 + cbz r0, .L172 movs r3, #0 add r5, r6, r4, lsl #8 -.L232: +.L171: cmp r3, r0 - bcs .L233 + bcs .L172 lsls r2, r3, #3 adds r3, r3, #1 lsr r2, r1, r2 uxtb r2, r2 str r2, [r5, #4] - b .L232 -.L229: + b .L171 +.L168: add r3, r3, r6 movs r2, #112 str r2, [r3, #2056] -.L233: - lsls r4, r4, #8 +.L172: movs r0, #80 + lsls r4, r4, #8 bl NandcDelayns ldr r0, [r6, r4] uxtb r0, r0 pop {r4, r5, r6, pc} -.L239: +.L178: .align 2 -.L238: +.L177: .word .LANCHOR0 .fnend .size FlashReadStatusEN, .-FlashReadStatusEN @@ -1622,16 +1220,16 @@ FlashWaitReadyEN: mov r4, r0 mov r5, r1 mov r6, r2 -.L244: +.L183: mov r0, r4 mov r1, r5 mov r2, r6 bl FlashReadStatusEN cmp r0, #255 mov r3, r0 - beq .L244 + beq .L183 lsls r3, r3, #25 - bpl .L244 + bpl .L183 pop {r4, r5, r6, pc} .fnend .size FlashWaitReadyEN, .-FlashWaitReadyEN @@ -1647,16 +1245,16 @@ FlashWaitCmdDone: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r8, r0 - ldr r5, .L254 + ldr r5, .L193 add r4, r5, r0, lsl #4 - ldr r3, [r4, #1668] - ldrb r6, [r4, #1660] @ zero_extendqisi2 - cbz r3, .L249 + ldr r3, [r4, #1596] + ldrb r6, [r4, #1588] @ zero_extendqisi2 + cbz r3, .L188 add r5, r5, r8, lsl #2 mov r0, r6 bl NandcFlashCs - ldr r1, [r4, #1664] - ldr r2, [r5, #1628] + ldr r1, [r4, #1592] + ldr r2, [r5, #656] mov r0, r6 adds r2, r2, #0 it ne @@ -1665,25 +1263,109 @@ FlashWaitCmdDone: mov r5, r0 mov r0, r6 bl NandcFlashDeCs - ldr r2, [r4, #1668] + ldr r2, [r4, #1596] sbfx r3, r5, #0, #1 str r3, [r2] movs r2, #0 - ldr r1, [r4, #1672] - str r2, [r4, #1668] - cbz r1, .L249 + ldr r1, [r4, #1600] + str r2, [r4, #1596] + cbz r1, .L188 str r3, [r1] - str r2, [r4, #1672] -.L249: + str r2, [r4, #1600] +.L188: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L255: +.L194: .align 2 -.L254: +.L193: .word .LANCHOR0 .fnend .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 1 + .thumb + .thumb_func + .type flash_read_ecc, %function +flash_read_ecc: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r2, .L196 + 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} +.L197: + .align 2 +.L196: + .word .LANCHOR0 + .fnend + .size flash_read_ecc, .-flash_read_ecc + .align 1 + .global NandcWaitFlashReadyNoDelay + .thumb + .thumb_func + .type NandcWaitFlashReadyNoDelay, %function +NandcWaitFlashReadyNoDelay: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L203 + push {r0, r1, r2, r4, r5, lr} + .save {r4, r5, lr} + .pad #12 + add r0, r3, r0, lsl #3 + ldr r4, .L203+4 + ldr r5, [r0, #12] +.L200: + ldr r3, [r5] + str r3, [sp, #4] + ldr r3, [sp, #4] + lsls r3, r3, #22 + bmi .L201 + movs r0, #10 + bl NandcDelayns + subs r4, r4, #1 + bne .L200 + mov r0, #-1 + b .L199 +.L201: + movs r0, #0 +.L199: + add sp, sp, #12 + @ sp needed + pop {r4, r5, pc} +.L204: + .align 2 +.L203: + .word .LANCHOR0 + .word 100000 + .fnend + .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay + .align 1 .global NandcWaitFlashReady .thumb .thumb_func @@ -1692,34 +1374,36 @@ NandcWaitFlashReady: .fnstart @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L261 + ldr r3, .L210 push {r0, r1, r2, r4, r5, lr} .save {r4, r5, lr} .pad #12 add r0, r3, r0, lsl #3 - ldr r4, .L261+4 + ldr r4, .L210+4 ldr r5, [r0, #12] -.L258: - movs r0, #100 + movs r0, #150 bl NandcDelayns +.L207: ldr r3, [r5] str r3, [sp, #4] ldr r3, [sp, #4] lsls r3, r3, #22 - bmi .L259 + bmi .L208 + movs r0, #10 + bl NandcDelayns subs r4, r4, #1 - bne .L258 + bne .L207 mov r0, #-1 - b .L257 -.L259: + b .L206 +.L208: movs r0, #0 -.L257: +.L206: add sp, sp, #12 @ sp needed pop {r4, r5, pc} -.L262: +.L211: .align 2 -.L261: +.L210: .word .LANCHOR0 .word 100000 .fnend @@ -1733,7 +1417,7 @@ FlashReset: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L264 + ldr r3, .L213 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} add r3, r3, r0, lsl #3 @@ -1749,13 +1433,112 @@ FlashReset: mov r0, r4 pop {r4, r5, r6, lr} b NandcFlashDeCs -.L265: +.L214: .align 2 -.L264: +.L213: .word .LANCHOR0 .fnend .size FlashReset, .-FlashReset .align 1 + .global flash_enter_slc_mode + .thumb + .thumb_func + .type flash_enter_slc_mode, %function +flash_enter_slc_mode: + .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 r5, r0 + ldr r4, .L217 + ldrb r3, [r4, #140] @ zero_extendqisi2 + cbz r3, .L215 + add r4, r4, r5, lsl #3 + bl NandcFlashCs + movs r0, #100 + ldr r3, [r4, #12] + ldrb r4, [r4, #16] @ zero_extendqisi2 + add r4, r3, r4, lsl #8 + movs r3, #239 + str r3, [r4, #2056] + movs r3, #145 + str r3, [r4, #2052] + bl NandcDelayns + movs r3, #0 + movs r2, #1 + str r3, [r4, #2048] + movs r0, #100 + str r2, [r4, #2048] + str r3, [r4, #2048] + str r3, [r4, #2048] + bl NandcDelayns + mov r0, r5 + bl NandcWaitFlashReadyNoDelay + movs r3, #218 + mov r0, r5 + str r3, [r4, #2056] + pop {r3, r4, r5, lr} + b NandcWaitFlashReady +.L215: + pop {r3, r4, r5, pc} +.L218: + .align 2 +.L217: + .word .LANCHOR0 + .fnend + .size flash_enter_slc_mode, .-flash_enter_slc_mode + .align 1 + .global flash_exit_slc_mode + .thumb + .thumb_func + .type flash_exit_slc_mode, %function +flash_exit_slc_mode: + .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 r5, r0 + ldr r4, .L221 + ldrb r3, [r4, #140] @ zero_extendqisi2 + cbz r3, .L219 + add r4, r4, r5, lsl #3 + bl NandcFlashCs + movs r0, #100 + ldr r3, [r4, #12] + ldrb r4, [r4, #16] @ zero_extendqisi2 + add r4, r3, r4, lsl #8 + movs r3, #239 + str r3, [r4, #2056] + movs r3, #145 + str r3, [r4, #2052] + bl NandcDelayns + movs r3, #2 + movs r0, #100 + str r3, [r4, #2048] + movs r3, #1 + str r3, [r4, #2048] + movs r3, #0 + str r3, [r4, #2048] + str r3, [r4, #2048] + bl NandcDelayns + mov r0, r5 + bl NandcWaitFlashReadyNoDelay + movs r3, #223 + mov r0, r5 + str r3, [r4, #2056] + pop {r3, r4, r5, lr} + b NandcWaitFlashReady +.L219: + pop {r3, r4, r5, pc} +.L222: + .align 2 +.L221: + .word .LANCHOR0 + .fnend + .size flash_exit_slc_mode, .-flash_exit_slc_mode + .align 1 .global FlashEraseBlock .thumb .thumb_func @@ -1801,13 +1584,13 @@ FlashSetInterfaceMode: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #20 sub sp, sp, #20 - ldr r5, .L295 + ldr r5, .L252 movs r4, #0 movs r7, #239 mov lr, #128 mov ip, #1 mov r8, #35 - ldrb r3, [r5, #2764] @ zero_extendqisi2 + ldrb r3, [r5, #1716] @ zero_extendqisi2 mov r9, #32 mov r10, #5 and r2, r3, #1 @@ -1818,83 +1601,83 @@ FlashSetInterfaceMode: str r3, [sp, #8] add r3, r5, #12 str r3, [sp, #4] -.L277: - ldr r1, .L295+4 +.L234: + ldr r1, .L252+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 .L268 + beq .L225 cmp r1, #69 - beq .L268 + beq .L225 cmp r1, #173 - beq .L268 + beq .L225 cmp r1, #44 - bne .L269 -.L268: + bne .L226 +.L225: cmp r0, #1 uxtb r3, r3 - bne .L270 + bne .L227 ldr r5, [sp, #12] - cbz r5, .L269 + cbz r5, .L226 lsls r3, r3, #8 cmp r1, #173 add fp, r6, r3 str r7, [fp, #2056] - bne .L271 + bne .L228 str r0, [fp, #2052] - b .L294 -.L271: + b .L251 +.L228: cmp r1, #44 itete eq streq r0, [fp, #2052] strne lr, [fp, #2052] streq r10, [fp, #2048] strne r0, [fp, #2048] - b .L275 -.L270: + b .L232 +.L227: ldr r5, [sp, #8] - cbz r5, .L269 + cbz r5, .L226 lsls r3, r3, #8 cmp r1, #173 add fp, r6, r3 str r7, [fp, #2056] - bne .L274 + bne .L231 str ip, [fp, #2052] str r9, [fp, #2048] - b .L275 -.L274: + b .L232 +.L231: cmp r1, #44 - bne .L276 + bne .L233 str ip, [fp, #2052] str r8, [fp, #2048] - b .L275 -.L276: + b .L232 +.L233: str lr, [fp, #2052] -.L294: +.L251: str r2, [fp, #2048] -.L275: +.L232: add r3, r3, r6 str r2, [r3, #2048] str r2, [r3, #2048] str r2, [r3, #2048] -.L269: +.L226: adds r4, r4, #8 cmp r4, #32 - bne .L277 + bne .L234 movs r0, #0 bl NandcWaitFlashReady movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L296: +.L253: .align 2 -.L295: +.L252: .word .LANCHOR0 - .word .LANCHOR0+1792 + .word .LANCHOR0+1556 .fnend .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .align 1 @@ -1909,10 +1692,10 @@ FlashReadSpare: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r2 - ldr r5, .L298 - ldr r3, .L298+4 + ldr r5, .L255 + ldr r3, .L255+4 add r5, r5, r0, lsl #3 - ldrb r3, [r3, #265] @ zero_extendqisi2 + ldrb r3, [r3, #481] @ zero_extendqisi2 ldrb r2, [r5, #16] @ zero_extendqisi2 ldr r4, [r5, #12] lsls r3, r3, #9 @@ -1934,9 +1717,9 @@ FlashReadSpare: ldr r3, [r4, #2048] strb r3, [r6] pop {r4, r5, r6, pc} -.L299: +.L256: .align 2 -.L298: +.L255: .word .LANCHOR0 .word .LANCHOR1 .fnend @@ -1950,7 +1733,7 @@ SandiskProgTestBadBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L301 + ldr r2, .L258 push {r4, lr} .save {r4, lr} add r2, r2, r0, lsl #3 @@ -1980,9 +1763,9 @@ SandiskProgTestBadBlock: ldr r0, [r4, #2048] and r0, r0, #1 pop {r4, pc} -.L302: +.L259: .align 2 -.L301: +.L258: .word .LANCHOR0 .fnend .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock @@ -2005,16 +1788,16 @@ SandiskSetRRPara: movs r0, #200 mov r4, r1 bl NandcDelayns - ldr r0, .L310 - ldr r1, .L310+4 + ldr r0, .L267 + ldr r1, .L267+4 add r4, r4, r4, lsl #2 movs r2, #0 sub r6, r0, #48 -.L304: - ldrb r3, [r1, #1905] @ zero_extendqisi2 +.L261: + ldrb r3, [r1, #697] @ zero_extendqisi2 cmp r2, r3 - bcs .L309 - ldrb r3, [r1, #1904] @ zero_extendqisi2 + bcs .L266 + ldrb r3, [r1, #696] @ zero_extendqisi2 cmp r3, #67 add r3, r2, r4 ite eq @@ -2023,84 +1806,124 @@ SandiskSetRRPara: adds r2, r2, #1 ldrsb r3, [r3, #5] str r3, [r5] - b .L304 -.L309: + b .L261 +.L266: movs r0, #0 pop {r4, r5, r6, lr} b NandcWaitFlashReady -.L311: +.L268: .align 2 -.L310: - .word .LANCHOR1+336 +.L267: + .word .LANCHOR1+304 .word .LANCHOR0 .fnend .size SandiskSetRRPara, .-SandiskSetRRPara .align 1 + .global micron_auto_read_calibration_config + .thumb + .thumb_func + .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 + bl NandcWaitFlashReady + ldr r3, .L270 + 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 + movs r3, #239 + str r3, [r4, #2056] + movs r3, #150 + str r3, [r4, #2052] + bl NandcDelayns + str r5, [r4, #2048] + movs r3, #0 + str r3, [r4, #2048] + str r3, [r4, #2048] + str r3, [r4, #2048] + pop {r3, r4, r5, pc} +.L271: + .align 2 +.L270: + .word .LANCHOR0 + .fnend + .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config + .align 1 .global FlashEraseSLc2KBlocks .thumb .thumb_func .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r5, #0 - ldr r8, .L323+4 - .pad #20 - sub sp, sp, #20 + ldr r7, .L284 + .pad #24 + sub sp, sp, #24 + ldr r9, .L284+8 mov r6, r0 - mov r9, r1 - mov r7, r5 -.L313: - cmp r7, r9 - beq .L322 - rsb r3, r7, r9 - add r2, sp, #8 + mov r10, r1 + mov r8, r5 + ldr r3, [r7] + str r3, [sp, #20] +.L273: + cmp r8, r10 + beq .L283 + rsb r3, r8, r10 + add r2, sp, #12 adds r0, r6, r5 movs r1, #0 uxtb r3, r3 str r3, [sp] - add r3, sp, #12 + add r3, sp, #16 bl LogAddr2PhyAddr - ldr r3, [sp, #12] - ldrb r2, [r8, #1616] @ zero_extendqisi2 + ldrb r2, [r9, #1717] @ zero_extendqisi2 + ldr r3, [sp, #16] cmp r3, r2 - bcc .L314 + bcc .L274 mov r3, #-1 str r3, [r6, r5] - b .L315 -.L314: - add r2, r8, r3 - add r3, r8, r3, lsl #4 - ldrb r4, [r2, #1620] @ zero_extendqisi2 - strb r4, [r3, #1660] + b .L275 +.L274: + add r2, r9, r3 + add r3, r9, r3, lsl #4 + ldrb r4, [r2, #1720] @ zero_extendqisi2 + strb r4, [r3, #1588] mov r0, r4 bl NandcWaitFlashReady mov r0, r4 bl NandcFlashCs movs r2, #0 - ldr r1, [sp, #8] mov r0, r4 + ldr r1, [sp, #12] bl FlashEraseCmd mov r0, r4 bl NandcWaitFlashReady - ldr r1, [sp, #8] mov r0, r4 + ldr r1, [sp, #12] bl FlashReadStatus - ldr r3, [sp, #8] movs r2, #0 + ldr r3, [sp, #12] sbfx r0, r0, #0, #1 str r0, [r6, r5] - ldr r1, [r8, #4] mov r0, r4 + ldr r1, [r9, #4] add r1, r1, r3 bl FlashEraseCmd mov r0, r4 bl NandcWaitFlashReady mov r0, r4 - ldr r1, [sp, #8] + ldr r1, [sp, #12] bl FlashReadStatus lsls r3, r0, #31 itt mi @@ -2108,25 +1931,32 @@ FlashEraseSLc2KBlocks: strmi r3, [r6, r5] ldr r3, [r6, r5] adds r3, r3, #1 - bne .L317 - ldr r0, .L323 - ldr r1, [sp, #8] + bne .L277 + ldr r0, .L284+4 + ldr r1, [sp, #12] bl printk -.L317: +.L277: mov r0, r4 bl NandcFlashDeCs -.L315: - adds r7, r7, #1 +.L275: + add r8, r8, #1 adds r5, r5, #36 - b .L313 -.L322: + b .L273 +.L283: + ldr r2, [sp, #20] movs r0, #0 - add sp, sp, #20 + ldr r3, [r7] + cmp r2, r3 + beq .L279 + bl __stack_chk_fail +.L279: + add sp, sp, #24 @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L324: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L285: .align 2 -.L323: +.L284: + .word __stack_chk_guard .word .LC1 .word .LANCHOR0 .fnend @@ -2140,7 +1970,7 @@ FlashReadDpCmd: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L329 + ldr r3, .L290 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r5, r2 @@ -2162,7 +1992,7 @@ FlashReadDpCmd: lsr r5, r5, #16 lsr r1, r1, #16 str r6, [r4, #2056] - bne .L326 + bne .L287 movs r6, #0 str r6, [r4, #2052] str r6, [r4, #2052] @@ -2174,13 +2004,13 @@ FlashReadDpCmd: str r6, [r4, #2056] str r6, [r4, #2052] str r6, [r4, #2052] - b .L328 -.L326: + b .L289 +.L287: str lr, [r4, #2052] str r2, [r4, #2052] str r1, [r4, #2052] str r3, [r4, #2056] -.L328: +.L289: str r10, [r4, #2052] movs r3, #48 str r9, [r4, #2052] @@ -2190,9 +2020,9 @@ FlashReadDpCmd: str r3, [r4, #2056] pop {r4, r5, r6, r7, r8, r9, r10, lr} b FlashSetRandomizer -.L330: +.L291: .align 2 -.L329: +.L290: .word .LANCHOR0 .fnend .size FlashReadDpCmd, .-FlashReadDpCmd @@ -2208,38 +2038,38 @@ ftl_flash_de_init: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r0, #0 - ldr r4, .L340 + ldr r4, .L302 bl NandcWaitFlashReady bl FlashSetReadRetryDefault - ldr r3, .L340+4 - ldr r2, [r4, #2768] - cmp r2, r3 - bne .L332 + ldr r0, [r4, #1728] + cbz r0, .L293 movs r0, #0 bl flash_enter_slc_mode -.L332: - ldrb r3, [r4, #2772] @ zero_extendqisi2 - ldr r5, .L340 - cbz r3, .L333 - ldrb r3, [r5, #2764] @ zero_extendqisi2 + b .L294 +.L293: + bl flash_exit_slc_mode +.L294: + ldrb r3, [r4, #1732] @ zero_extendqisi2 + ldr r5, .L302 + cbz r3, .L295 + ldrb r3, [r5, #1716] @ zero_extendqisi2 lsls r3, r3, #31 - bpl .L333 + bpl .L295 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode movs r3, #0 - strb r3, [r5, #2772] -.L333: + strb r3, [r5, #1732] +.L295: ldr r3, [r4, #12] movs r0, #0 str r0, [r3, #336] pop {r3, r4, r5, pc} -.L341: +.L303: .align 2 -.L340: +.L302: .word .LANCHOR0 - .word 1446522928 .fnend .size ftl_flash_de_init, .-ftl_flash_de_init .align 1 @@ -2252,14 +2082,14 @@ NandcRandmzSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L343 + ldr r3, .L305 add r0, r3, r0, lsl #3 ldr r3, [r0, #12] str r1, [r3, #336] bx lr -.L344: +.L306: .align 2 -.L343: +.L305: .word .LANCHOR0 .fnend .size NandcRandmzSel, .-NandcRandmzSel @@ -2278,45 +2108,45 @@ NandcTimeCfg: mov r4, r0 movs r0, #0 bl rknand_get_clk_rate - ldr r1, .L355 + ldr r1, .L317 bl __aeabi_idiv - ldr r3, .L355+4 - ldr r3, [r3, #1828] + ldr r3, .L317+4 + ldr r3, [r3, #76] cmp r0, #250 - ble .L346 + ble .L308 movw r2, #8354 - b .L353 -.L346: + b .L315 +.L308: cmp r0, #220 - bgt .L354 + bgt .L316 cmp r0, #185 - ble .L349 + ble .L311 movw r2, #4226 - b .L353 -.L349: + b .L315 +.L311: cmp r0, #160 - ble .L350 + ble .L312 movw r2, #4194 - b .L353 -.L350: + b .L315 +.L312: cmp r4, #35 - bhi .L351 + bhi .L313 movw r2, #4193 - b .L353 -.L351: + b .L315 +.L313: cmp r4, #99 - bls .L352 -.L354: + bls .L314 +.L316: movw r2, #8322 - b .L353 -.L352: + b .L315 +.L314: movw r2, #4225 -.L353: +.L315: str r2, [r3, #4] pop {r4, pc} -.L356: +.L318: .align 2 -.L355: +.L317: .word 1000000 .word .LANCHOR0 .fnend @@ -2334,25 +2164,25 @@ FlashTimingCfg: sub r3, r0, #4192 subs r3, r3, #1 cmp r3, #1 - bls .L358 + bls .L320 sub r3, r0, #4224 subs r3, r3, #1 cmp r3, #1 - bls .L358 + bls .L320 movw r3, #8322 cmp r0, r3 - bne .L359 -.L358: - ldr r3, .L360 - ldr r3, [r3, #1828] + bne .L321 +.L320: + ldr r3, .L322 + ldr r3, [r3, #76] str r0, [r3, #4] -.L359: - ldr r3, .L360+4 - ldrb r0, [r3, #277] @ zero_extendqisi2 +.L321: + ldr r3, .L322+4 + ldrb r0, [r3, #493] @ zero_extendqisi2 b NandcTimeCfg -.L361: +.L323: .align 2 -.L360: +.L322: .word .LANCHOR0 .word .LANCHOR1 .fnend @@ -2369,7 +2199,7 @@ NandcInit: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r1, #0 - ldr r3, .L364 + ldr r3, .L326 movs r2, #1 movs r5, #0 str r1, [r3, #16] @@ -2381,7 +2211,7 @@ NandcInit: movs r2, #3 str r0, [r3, #28] str r0, [r3, #36] - str r0, [r3, #1828] + str r0, [r3, #76] str r2, [r3, #40] ldr r2, [r0] and r2, r2, #253952 @@ -2389,41 +2219,41 @@ NandcInit: bfi r2, r1, #13, #1 ldr r1, [r0, #352] orr r2, r2, #256 - str r4, [r3, #2776] + str r4, [r3, #1736] movw r4, #2049 ubfx r1, r1, #16, #4 - str r1, [r3, #2780] + str r1, [r3, #1740] ldr r1, [r0, #352] cmp r1, r4 mov r4, r3 - str r1, [r3, #2768] + str r1, [r3, #1744] itt eq moveq r3, #8 - streq r3, [r4, #2780] + streq r3, [r4, #1740] str r2, [r0] movs r0, #40 - ldr r3, [r4, #1828] + ldr r3, [r4, #76] str r5, [r3, #336] bl NandcTimeCfg - ldr r3, [r4, #1828] + ldr r3, [r4, #76] movw r2, #8322 mov r0, #36864 str r2, [r3, #344] - ldr r2, .L364+4 + ldr r2, .L326+4 str r2, [r3, #304] bl ftl_malloc - str r5, [r4, #2812] - str r5, [r4, #2820] - str r0, [r4, #2784] - str r0, [r4, #2788] + str r5, [r4, #1776] + str r5, [r4, #1784] + str r0, [r4, #1748] + str r0, [r4, #1752] add r0, r0, #32768 - str r0, [r4, #2792] + str r0, [r4, #1756] pop {r3, r4, r5, pc} -.L365: +.L327: .align 2 -.L364: +.L326: .word .LANCHOR0 - .word 1710593 + .word 1579009 .fnend .size NandcInit, .-NandcInit .align 1 @@ -2437,26 +2267,26 @@ NandcGetTimeCfg: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, lr} .save {r4, r5, lr} - ldr r4, .L367 - ldr r5, [r4, #1828] + ldr r4, .L329 + ldr r5, [r4, #76] ldr r5, [r5, #4] str r5, [r0] - ldr r0, [r4, #1828] + ldr r0, [r4, #76] ldr r0, [r0] str r0, [r1] - ldr r1, [r4, #1828] + ldr r1, [r4, #76] ldr r1, [r1, #304] str r1, [r2] - ldr r1, [r4, #1828] + ldr r1, [r4, #76] ldr r2, [r1, #308] ldr r1, [r1, #344] uxtb r2, r2 orr r2, r2, r1, lsl #16 str r2, [r3] pop {r4, r5, pc} -.L368: +.L330: .align 2 -.L367: +.L329: .word .LANCHOR0 .fnend .size NandcGetTimeCfg, .-NandcGetTimeCfg @@ -2470,37 +2300,37 @@ NandcBchSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L377 + ldr r3, .L339 movs r1, #1 - ldr r2, [r3, #1828] - str r0, [r3, #2824] + ldr r2, [r3, #76] + str r0, [r3, #1788] movs r3, #0 str r1, [r2, #8] movs r1, #16 cmp r0, r1 bfi r3, r1, #8, #8 bfc r3, #18, #1 - bne .L370 -.L373: + bne .L332 +.L335: bfc r3, #4, #1 - b .L371 -.L370: + b .L333 +.L332: cmp r0, #24 - bne .L372 + bne .L334 orr r3, r3, #16 - b .L371 -.L372: + b .L333 +.L334: cmp r0, #40 orr r3, r3, #262144 orr r3, r3, #16 - beq .L373 -.L371: + beq .L335 +.L333: orr r3, r3, #1 str r3, [r2, #12] bx lr -.L378: +.L340: .align 2 -.L377: +.L339: .word .LANCHOR0 .fnend .size NandcBchSel, .-NandcBchSel @@ -2514,12 +2344,12 @@ FlashBchSel: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L380 - strb r0, [r3, #1892] + ldr r3, .L342 + strb r0, [r3, #1792] b NandcBchSel -.L381: +.L343: .align 2 -.L380: +.L342: .word .LANCHOR0 .fnend .size FlashBchSel, .-FlashBchSel @@ -2532,61 +2362,61 @@ ftl_flash_resume: .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} + ldr r3, .L352 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} movs r5, #0 - ldr r3, .L390 - add r7, r3, #1792 - ldr r2, [r3, #1828] + ldr r2, [r3, #76] + addw r6, r3, #1556 + ldr r1, [r3, #80] mov r4, r3 - ldr r1, [r3, #1832] - ldr r6, [r3, #1848] str r1, [r2] - ldr r1, [r3, #1836] - ldr r2, [r3, #1828] + ldr r1, [r3, #84] + ldr r2, [r3, #76] str r1, [r2, #4] - ldr r1, [r3, #1840] + ldr r1, [r3, #88] str r1, [r2, #8] - ldr r1, [r3, #1844] + ldr r1, [r3, #92] str r1, [r2, #12] - ldr r1, [r3, #1852] - str r6, [r2, #304] + ldr r1, [r3, #96] + str r1, [r2, #304] + ldr r1, [r3, #100] str r1, [r2, #308] - ldr r1, [r3, #1856] + ldr r1, [r3, #104] str r1, [r2, #336] - ldr r1, [r3, #1860] + ldr r1, [r3, #108] str r1, [r2, #344] -.L384: - ldrb r3, [r7, r5, lsl #3] @ zero_extendqisi2 +.L346: + ldrb r3, [r6, r5, lsl #3] @ zero_extendqisi2 subs r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L383 + bhi .L345 uxtb r0, r5 bl FlashReset -.L383: +.L345: adds r5, r5, #1 cmp r5, #4 - bne .L384 - ldrb r3, [r4, #2772] @ zero_extendqisi2 - ldr r5, .L390 - cbz r3, .L385 + bne .L346 + ldrb r3, [r4, #1732] @ zero_extendqisi2 + ldr r5, .L352 + cbz r3, .L347 movs r0, #1 bl NandcSetMode - ldrb r0, [r5, #2764] @ zero_extendqisi2 + ldrb r0, [r5, #1716] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r5, #2764] @ zero_extendqisi2 + ldrb r0, [r5, #1716] @ zero_extendqisi2 bl NandcSetMode - ubfx r0, r6, #8, #8 + ldrb r0, [r5, #97] @ zero_extendqisi2 bl NandcSetDdrPara -.L385: - ldr r3, [r4, #1788] +.L347: + ldr r3, [r4, #692] + pop {r4, r5, r6, lr} ldrb r0, [r3, #20] @ zero_extendqisi2 - pop {r3, r4, r5, r6, r7, lr} b FlashBchSel -.L391: +.L353: .align 2 -.L390: +.L352: .word .LANCHOR0 .fnend .size ftl_flash_resume, .-ftl_flash_resume @@ -2644,11 +2474,11 @@ NandcIqrWaitFlashReady: str r3, [r4, #364] ldr r3, [r4] lsls r3, r3, #22 - bmi .L395 + bmi .L357 mov r0, r4 pop {r4, lr} b wait_for_nand_flash_ready -.L395: +.L357: ldr r3, [r4, #368] orr r3, r3, #2 str r3, [r4, #368] @@ -2665,156 +2495,168 @@ NandcIqrWaitFlashReady: .type FlashEraseBlocks, %function FlashEraseBlocks: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r0 - ldr r4, .L430 - .pad #28 - sub sp, sp, #28 - mov r10, r1 mov r8, r2 + ldr r3, .L393 + .pad #36 + sub sp, sp, #36 + ldr r4, .L393+4 + mov r9, r0 + mov r10, r1 + ldr r2, [r3] ldrb r5, [r4] @ zero_extendqisi2 - cbz r5, .L414 - mov r1, r2 + str r3, [sp, #12] + str r2, [sp, #28] + cbz r5, .L377 + mov r1, r8 bl FlashEraseSLc2KBlocks - b .L398 -.L414: + b .L360 +.L377: mov fp, r4 -.L397: +.L359: cmp r5, r8 - bcs .L428 + bcs .L391 movs r3, #36 movs r1, #0 - add r2, sp, #16 + add r2, sp, #20 mul r6, r3, r5 add r3, r9, r6 - str r3, [sp, #12] + str r3, [sp, #8] rsb r3, r5, r8 - ldr r0, [sp, #12] + ldr r0, [sp, #8] uxtb r3, r3 str r3, [sp] - add r3, sp, #20 + add r3, sp, #24 bl LogAddr2PhyAddr - ldrb r3, [r4, #1616] @ zero_extendqisi2 + ldrb r3, [r4, #1717] @ zero_extendqisi2 mov r7, r0 - ldr r0, [sp, #20] + ldr r0, [sp, #24] cmp r0, r3 - bcc .L399 + bcc .L361 mov r3, #-1 str r3, [r9, r6] - b .L400 -.L399: - ldrb r3, [fp, #2828] @ zero_extendqisi2 + b .L362 +.L361: + ldrb r3, [fp, #1793] @ zero_extendqisi2 cmp r3, #0 add r3, r4, r0, lsl #4 it eq moveq r7, #0 - ldr r3, [r3, #1668] - cbz r3, .L402 + ldr r3, [r3, #1596] + cbz r3, .L364 uxtb r0, r0 bl FlashWaitCmdDone -.L402: - ldr r1, [sp, #20] - ldr r3, [sp, #12] +.L364: + ldr r1, [sp, #24] + ldr r3, [sp, #8] lsls r2, r1, #4 add lr, r4, r2 - str r3, [lr, #1668] + str r3, [lr, #1596] movs r3, #0 - str r3, [lr, #1672] - ldr r3, [sp, #16] - str r3, [lr, #1664] - cbz r7, .L403 + str r3, [lr, #1600] + ldr r3, [sp, #20] + str r3, [lr, #1592] + cbz r7, .L365 add r3, r6, #36 add r3, r3, r9 - str r3, [lr, #1672] -.L403: + str r3, [lr, #1600] +.L365: add r1, r1, r4 add r2, r2, r4 - ldrb r6, [r1, #1620] @ zero_extendqisi2 + ldrb r6, [r1, #1720] @ zero_extendqisi2 mov r0, r6 - strb r6, [r2, #1660] + strb r6, [r2, #1588] bl NandcFlashCs cmp r10, #1 mov r0, r6 - bne .L404 - ldrb r3, [fp, #76] @ zero_extendqisi2 - cbz r3, .L404 + bne .L366 + ldrb r3, [fp, #140] @ zero_extendqisi2 + cbz r3, .L366 bl flash_enter_slc_mode - b .L405 -.L404: + b .L367 +.L366: bl flash_exit_slc_mode -.L405: - ldr r3, [sp, #20] +.L367: + ldr r3, [sp, #24] mov r0, r6 - ldr r1, [sp, #16] + ldr r1, [sp, #20] add r5, r5, r7 add r3, r4, r3, lsl #2 - ldr r2, [r3, #1628] + ldr r2, [r3, #656] adds r2, r2, #0 it ne movne r2, #1 bl FlashWaitReadyEN mov r0, r6 - ldr r1, [sp, #16] mov r2, r7 + ldr r1, [sp, #20] bl FlashEraseCmd mov r0, r6 bl NandcFlashDeCs -.L400: +.L362: adds r5, r5, #1 - b .L397 -.L428: - ldr r0, [r4, #1828] + b .L359 +.L391: + ldr r0, [r4, #76] movs r5, #0 bl NandcIqrWaitFlashReady - ldr r6, .L430 - addw r7, r6, #1660 -.L407: - ldrb r2, [r4, #1616] @ zero_extendqisi2 - ldr r3, .L430 + ldr r6, .L393+4 + addw r7, r6, #1588 +.L369: + ldrb r2, [r4, #1717] @ zero_extendqisi2 + ldr r3, .L393+4 cmp r5, r2 - bcs .L429 + bcs .L392 uxtb r0, r5 bl FlashWaitCmdDone cmp r10, #1 - bne .L408 - ldrb r3, [r6, #76] @ zero_extendqisi2 - cbz r3, .L408 + bne .L370 + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbz r3, .L370 lsls r3, r5, #4 ldrb r0, [r7, r3] @ zero_extendqisi2 bl flash_exit_slc_mode -.L408: +.L370: adds r5, r5, #1 - b .L407 -.L429: - ldr r2, [r3, #2832] - cbnz r2, .L410 -.L412: + b .L369 +.L392: + ldr r2, [r3, #1796] + cbnz r2, .L372 +.L374: movs r0, #0 - b .L398 -.L410: - ldrb r3, [r3, #1792] @ zero_extendqisi2 + b .L360 +.L372: + ldrb r3, [r3, #1556] @ zero_extendqisi2 cmp r3, #69 - bne .L412 + bne .L374 movs r3, #0 movs r2, #36 mov r1, r3 -.L411: +.L373: cmp r3, r8 - beq .L412 + beq .L374 mul r0, r2, r3 adds r3, r3, #1 str r1, [r9, r0] - b .L411 -.L398: - add sp, sp, #28 + b .L373 +.L360: + ldr r3, [sp, #12] + ldr r2, [sp, #28] + ldr r3, [r3] + cmp r2, r3 + beq .L376 + bl __stack_chk_fail +.L376: + add sp, sp, #36 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L431: +.L394: .align 2 -.L430: +.L393: + .word __stack_chk_guard .word .LANCHOR0 .fnend .size FlashEraseBlocks, .-FlashEraseBlocks @@ -2850,7 +2692,7 @@ NandcSendDumpDataStart: ldr r2, [r0, #16] .pad #8 sub sp, sp, #8 - ldr r3, .L434 + ldr r3, .L397 str r2, [sp, #4] ldr r2, [sp, #4] bic r2, r2, #4 @@ -2863,9 +2705,9 @@ NandcSendDumpDataStart: add sp, sp, #8 @ sp needed bx lr -.L435: +.L398: .align 2 -.L434: +.L397: .word 538969130 .fnend .size NandcSendDumpDataStart, .-NandcSendDumpDataStart @@ -2881,12 +2723,12 @@ NandcSendDumpDataDone: @ link register save eliminated. .pad #8 sub sp, sp, #8 -.L437: +.L400: ldr r3, [r0, #8] str r3, [sp, #4] ldr r3, [sp, #4] lsls r3, r3, #11 - bpl .L437 + bpl .L400 add sp, sp, #8 @ sp needed bx lr @@ -2909,15 +2751,15 @@ NandcXferStart: mov r7, r1 ldr r2, [sp, #60] ldr fp, [sp, #56] - cbnz r2, .L454 + cbnz r2, .L417 adds r2, fp, #0 it ne movne r2, #1 - b .L441 -.L454: + b .L404 +.L417: movs r2, #1 -.L441: - ldr r5, .L459 +.L404: + ldr r5, .L422 movs r4, #0 add r0, r5, r0, lsl #3 ldr r6, [r0, #12] @@ -2935,18 +2777,18 @@ NandcXferStart: orr r4, r4, #536870912 orr r4, r4, #1024 bfi r4, r3, #4, #1 - ldr r3, [r5, #2780] + ldr r3, [r5, #1740] cmp r3, #3 - bls .L442 + bls .L405 ldr r3, [r6, #16] str r3, [sp, #12] ldr r3, [sp, #12] bic r3, r3, #4 str r3, [sp, #12] cmp r2, #0 - beq .L443 - cbnz r7, .L444 -.L452: + beq .L406 + cbnz r7, .L407 +.L415: mov r0, r6 add r8, r8, #1 bl rk_nandc_xfer_irq_flag_init @@ -2959,11 +2801,11 @@ NandcXferStart: orr r3, r3, #1 str r3, [r6, #364] cmp fp, #0 - beq .L445 + beq .L408 mov r0, fp - b .L446 -.L444: - ldr r3, [r5, #2824] + b .L409 +.L407: + ldr r3, [r5, #1788] mov ip, r5 ldr r0, [sp, #60] cmp r3, #25 @@ -2975,53 +2817,53 @@ NandcXferStart: str r3, [sp, #4] movs r3, #0 mov r1, r3 -.L448: +.L411: ldr r2, [sp, #4] cmp r1, r2 - bcs .L452 + bcs .L415 ldr r2, [sp, #60] lsr r10, r3, #2 - cbz r2, .L449 + cbz r2, .L412 ldrh r2, [r0, #2] ldrh lr, [r0], #4 orr lr, lr, r2, lsl #16 - ldr r2, [ip, #2792] + ldr r2, [ip, #1756] str lr, [r2, r10, lsl #2] - b .L450 -.L449: - ldr r2, [ip, #2792] + b .L413 +.L412: + ldr r2, [ip, #1756] mov lr, r2 mov r2, #-1 str r2, [lr, r10, lsl #2] -.L450: +.L413: ldr r2, [sp] adds r1, r1, #1 add r3, r3, r2 - b .L448 -.L445: - ldr r0, [r5, #2788] -.L446: - ldr r3, [r5, #2792] + b .L411 +.L408: + ldr r0, [r5, #1752] +.L409: + ldr r3, [r5, #1756] ubfx r8, r4, #22, #5 mov r2, r7 - str r0, [r5, #2796] + str r0, [r5, #1760] lsl r1, r8, #10 - str r3, [r5, #2800] + str r3, [r5, #1764] bl rknand_dma_map_single mov r2, r7 lsl r1, r8, #7 clz r7, r7 lsrs r7, r7, #5 - str r0, [r5, #2804] - ldr r0, [r5, #2800] + str r0, [r5, #1768] + ldr r0, [r5, #1764] bl rknand_dma_map_single movs r3, #1 - str r3, [r5, #2812] + str r3, [r5, #1776] tst fp, #3 - ldr r3, [r5, #2804] - str r0, [r5, #2808] + ldr r3, [r5, #1768] + str r0, [r5, #1772] str r3, [r6, #20] - ldr r3, [r5, #2808] + ldr r3, [r5, #1772] str r3, [r6, #24] mov r3, #0 str r3, [sp, #12] @@ -3047,10 +2889,10 @@ NandcXferStart: ldr r3, [sp, #12] orr r3, r3, #1 str r3, [sp, #12] -.L443: +.L406: ldr r3, [sp, #12] str r3, [r6, #16] -.L442: +.L405: str r9, [r6, #12] str r4, [r6, #8] orr r4, r4, #4 @@ -3058,9 +2900,9 @@ NandcXferStart: add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L460: +.L423: .align 2 -.L459: +.L422: .word .LANCHOR0 .fnend .size NandcXferStart, .-NandcXferStart @@ -3076,14 +2918,14 @@ Ftl_log2: @ link register save eliminated. movs r1, #0 movs r2, #1 -.L462: +.L425: cmp r2, r0 uxth r3, r1 add r1, r1, #1 - bhi .L464 + bhi .L427 lsls r2, r2, #1 - b .L462 -.L464: + b .L425 +.L427: subs r0, r3, #1 uxth r0, r0 bx lr @@ -3112,25 +2954,25 @@ FtlSysBlkNumInit: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L468 + ldr r3, .L431 cmp r0, #23 it ls movls r0, #24 - ldrh r2, [r3, #2840] - ldrh r1, [r3, #2850] - str r0, [r3, #2836] + ldrh r2, [r3, #1804] + ldrh r1, [r3, #1814] + str r0, [r3, #1800] muls r2, r0, r2 subs r0, r1, r0 - ldr r1, [r3, #2856] - strh r0, [r3, #2848] @ movhi + ldr r1, [r3, #1820] + strh r0, [r3, #1812] @ movhi movs r0, #0 - str r2, [r3, #2844] + str r2, [r3, #1808] subs r2, r1, r2 - str r2, [r3, #2852] + str r2, [r3, #1816] bx lr -.L469: +.L432: .align 2 -.L468: +.L431: .word .LANCHOR0 .fnend .size FtlSysBlkNumInit, .-FtlSysBlkNumInit @@ -3145,222 +2987,219 @@ FtlConstantsInit: @ 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 - ldrh r2, [r5, #14] .pad #20 sub sp, sp, #20 - ldr r4, .L498 + ldrh r1, [r0, #14] + mov r5, r0 + ldr r4, .L461 ldrh lr, [r0, #8] - str r2, [sp] - addw r1, r4, #2868 - ldrh r2, [sp] - ldrh r3, [r0, #10] - ldrh r0, [r0, #12] - strh r2, [r4, #2850] @ movhi - movs r2, #0 - strh lr, [r4, #2860] @ movhi - strh r3, [r4, #2862] @ movhi - strh r0, [r4, #2864] @ movhi -.L471: - strb r2, [r2, r1] - adds r2, r2, #1 - cmp r2, #32 - bne .L471 - ldrh r1, [r5, #14] - ldrh r2, [r5, #20] - cmp r2, r1, lsr #8 - bcs .L472 - uxtb r10, r0 - ldr r9, .L498+4 - lsl r2, r10, #1 - uxtb r2, r2 - str r2, [sp, #8] - subs r2, r3, #1 - muls r2, r0, r2 - str r2, [sp, #4] - movs r2, #0 -.L473: - cmp r2, r0 - bcs .L475 + str r1, [sp] + ldrh r1, [sp] + ldrh r2, [r0, #10] + ldrh r3, [r0, #12] + add r0, r4, #1832 + strh r1, [r4, #1814] @ movhi + movs r1, #0 + strh lr, [r4, #1824] @ movhi + strh r2, [r4, #1826] @ movhi + strh r3, [r4, #1828] @ movhi +.L434: + strb r1, [r1, r0] + adds r1, r1, #1 + cmp r1, #32 + bne .L434 + ldrh r0, [r5, #14] + ldrh r1, [r5, #20] + cmp r1, r0, lsr #8 + bcs .L435 + uxtb r10, r3 + ldr r9, .L461+4 + lsl r1, r10, #1 + uxtb r1, r1 + str r1, [sp, #8] + subs r1, r2, #1 + muls r1, r3, r1 + str r1, [sp, #4] + movs r1, #0 +.L436: + cmp r1, r3 + bcs .L438 ldr r6, [sp, #4] - rsb ip, r0, r2 - uxtb r1, r2 + rsb ip, r3, r1 + uxtb r0, r1 add ip, ip, r9 - adds r6, r2, r6 + adds r6, r1, r6 add r6, r9, r6 str r6, [sp, #12] movs r6, #0 mov r8, r6 -.L476: - cmp r8, r3 - add r6, r6, r0 - bcs .L497 +.L439: + cmp r8, r2 + add r6, r6, r3 + bcs .L460 ldr r7, [sp, #12] - add fp, r1, r10 - strb r1, [ip, r6] + add fp, r0, r10 + strb r0, [ip, r6] add r8, r8, #1 strb fp, [r7, r6] ldr r7, [sp, #8] - add r1, r1, r7 - uxtb r1, r1 - b .L476 -.L497: - adds r2, r2, #1 - b .L473 -.L475: - lsls r3, r3, #1 - strh r3, [r4, #2862] @ movhi - ldr r3, [sp] - lsrs r7, r3, #1 - strh r7, [r4, #2850] @ movhi -.L472: + add r0, r0, r7 + uxtb r0, r0 + b .L439 +.L460: + adds r1, r1, #1 + b .L436 +.L438: + lsls r2, r2, #1 + strh r2, [r4, #1826] @ movhi + ldr r2, [sp] + lsrs r7, r2, #1 + strh r7, [r4, #1814] @ movhi +.L435: cmp lr, #1 - mov r3, #5 - strh r3, [r4, #2900] @ movhi - mov r3, #0 - strh r3, [r4, #2902] @ movhi + mov r2, #5 + strh r2, [r4, #1864] @ movhi + mov r2, #0 + strh r2, [r4, #1866] @ movhi it eq - ldreq r3, .L498 - ldrb r8, [r4] @ zero_extendqisi2 + ldreq r2, .L461 + ldrb r9, [r4] @ zero_extendqisi2 it eq - strheq lr, [r3, #2900] @ movhi - mov r3, #4352 - strh r3, [r4, #2904] @ movhi - cmp r8, #0 - beq .L478 - ldr r3, .L498 - mov r2, #384 - strh r2, [r3, #2904] @ movhi -.L478: - ldrh r6, [r4, #2850] - ldrh r7, [r4, #2862] - smulbb r7, r7, r0 - smulbb r0, r6, r0 - uxth r7, r7 - strh r7, [r4, #2840] @ movhi - uxth r0, r0 - strh r0, [r4, #2906] @ movhi - bl Ftl_log2 - ldrh r9, [r5, #16] + strheq lr, [r2, #1864] @ movhi + mov r2, #4352 + strh r2, [r4, #1868] @ movhi + cmp r9, #0 + beq .L441 + ldr r2, .L461 + mov r1, #384 + strh r1, [r2, #1868] @ movhi +.L441: + ldrh r7, [r4, #1826] + ldrh r6, [r4, #1814] + ldrh r8, [r5, #16] + smulbb r7, r7, r3 ldrh fp, [r5, #20] + smulbb r3, r6, r3 ldrh r1, [r5, #18] - smulbb r3, r7, r9 - strh r9, [r4, #2910] @ movhi - strh r1, [r4, #2912] @ movhi - str r1, [sp] - strh fp, [r4, #2916] @ movhi - strh r3, [r4, #2914] @ movhi - strh r0, [r4, #2908] @ movhi mov r0, fp + strh r8, [r4, #1872] @ movhi + strh fp, [r4, #1878] @ movhi + uxth r7, r7 + strh r1, [r4, #1874] @ movhi + str r1, [sp] + strh r3, [r4, #1870] @ movhi + smulbb r3, r7, r8 + strh r7, [r4, #1804] @ movhi + strh r3, [r4, #1876] @ movhi bl Ftl_log2 lsl r3, fp, #9 cmp r6, #1024 - ldr r1, [sp] uxth r3, r3 - strh r3, [r4, #2920] @ movhi + strh r3, [r4, #1882] @ movhi it hi - ldrhi r2, .L498 + ldrhi r2, .L461 lsr r3, r3, #8 - strh r3, [r4, #2922] @ movhi + strh r3, [r4, #1884] @ movhi ldrh r3, [r5, #26] - mul r1, r1, fp - strh r3, [r4, #2924] @ movhi + strh r3, [r4, #1886] @ movhi mul r3, r6, r7 - str r3, [r4, #2856] + str r3, [r4, #1820] itt hi uxtbhi r3, r6 - strhhi r3, [r2, #2902] @ movhi + strhhi r3, [r2, #1866] @ movhi mov r10, r0 - ldrh r5, [r4, #2902] - strh r0, [r4, #2918] @ movhi + ldrh r5, [r4, #1866] + ldr r1, [sp] subs r5, r6, r5 - ldrh r0, [r4, #2904] - ldr r3, .L498 + strh r0, [r4, #1880] @ movhi + ldrh r0, [r4, #1868] muls r5, r7, r5 + ldr r3, .L461 lsls r0, r0, #3 + mul r1, r1, fp str r3, [sp] mul r5, fp, r5 - mul r5, r9, r5 + mul r5, r8, r5 asrs r5, r5, #11 - str r5, [r4, #2928] + str r5, [r4, #1888] bl __aeabi_idiv ldr r3, [sp] uxth r0, r0 cmp r0, #4 - itee hi - strhhi r0, [r3, #2932] @ movhi + itet ls movls r2, #4 - strhls r2, [r3, #2932] @ movhi - cmp r8, #0 - beq .L482 + strhhi r0, [r3, #1892] @ movhi + strhls r2, [r3, #1892] @ movhi + cmp r9, #0 + beq .L445 mov r3, #640 - strh r3, [r4, #2904] @ movhi -.L482: - ldrh r3, [r4, #2904] + strh r3, [r4, #1868] @ movhi +.L445: + ldrh r3, [r4, #1868] lsls r6, r6, #6 mov r1, r7 - ldr r5, .L498 + ldr r5, .L461 asr r3, r3, r10 add r10, r10, #9 asr r6, r6, r10 adds r3, r3, #2 - strh r3, [r4, #2934] @ movhi + strh r3, [r4, #1894] @ movhi uxth r0, r6 - strh r6, [r4, #2936] @ movhi + strh r6, [r4, #1896] @ movhi add r6, r0, #8 mul r3, r7, r0 - ldrh r0, [r4, #2932] - str r3, [r4, #2940] + ldrh r0, [r4, #1892] + str r3, [r4, #1900] bl __aeabi_uidiv cmp r7, #1 uxtah r0, r6, r0 - ldr r6, .L498 + ldr r6, .L461 it eq addeq r0, r0, #4 - str r0, [r5, #2836] - ldrh r0, [r4, #2836] + str r0, [r5, #1800] + ldrh r0, [r4, #1800] bl FtlSysBlkNumInit - ldr r3, [r4, #2836] - ldr r5, [r4, #2852] + ldr r3, [r4, #1800] + ldr r5, [r4, #1816] mov r0, #2048 - ldrh r7, [r4, #2916] - str r3, [r4, #2944] - ldrh r3, [r4, #2910] + ldrh r7, [r4, #1878] + str r3, [r4, #1904] + ldrh r3, [r4, #1872] lsls r5, r5, #2 mov r1, r7 muls r5, r3, r5 - ldrh r3, [r4, #2918] + ldrh r3, [r4, #1880] adds r3, r3, #9 lsrs r5, r5, r3 adds r5, r5, #2 uxth r5, r5 - strh r5, [r4, #2948] @ movhi + strh r5, [r4, #1908] @ movhi bl __aeabi_idiv - ldrh r2, [r4, #2932] + ldrh r2, [r4, #1892] movs r3, #0 - str r3, [r4, #1896] + str r3, [r4, #1912] adds r3, r2, #3 - strh r3, [r4, #2932] @ movhi - ldr r3, [r4, #2940] + strh r3, [r4, #1892] @ movhi + ldr r3, [r4, #1900] adds r1, r3, #3 - str r1, [r4, #2940] - strh r0, [r4, #2950] @ movhi - ldrb r0, [r4, #76] @ zero_extendqisi2 - cbz r0, .L485 + str r1, [r4, #1900] + strh r0, [r4, #1910] @ movhi + ldrb r0, [r4, #140] @ zero_extendqisi2 + cbz r0, .L448 adds r2, r2, #4 adds r3, r3, #5 - strh r2, [r6, #2932] @ movhi - b .L496 -.L485: + strh r2, [r6, #1892] @ movhi + b .L459 +.L448: cmp r1, #7 - bhi .L486 + bhi .L449 movs r3, #8 -.L496: - str r3, [r6, #2940] -.L486: - ldrh r2, [r4, #2848] +.L459: + str r3, [r6, #1900] +.L449: + ldrh r2, [r4, #1812] movs r3, #0 - strh r3, [r4, #2952] @ movhi + strh r3, [r4, #1916] @ movhi movs r0, #0 lsrs r3, r2, #3 add r3, r3, r2, lsl #1 @@ -3369,16 +3208,16 @@ FtlConstantsInit: cmp r5, r7, lsl #9 ittt cc movcc r2, #1 - ldrcc r3, .L498 - strhcc r2, [r3, #2952] @ movhi + ldrcc r3, .L461 + strhcc r2, [r3, #1916] @ movhi add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L499: +.L462: .align 2 -.L498: +.L461: .word .LANCHOR0 - .word .LANCHOR0+2868 + .word .LANCHOR0+1832 .fnend .size FtlConstantsInit, .-FtlConstantsInit .align 1 @@ -3391,26 +3230,26 @@ IsBlkInVendorPart: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L507 - ldrh r3, [r2, #2954] - cbz r3, .L506 - ldr r3, [r2, #2956] - ldrh r2, [r2, #2932] + ldr r2, .L470 + ldrh r3, [r2, #1918] + cbz r3, .L469 + ldr r3, [r2, #1920] + ldrh r2, [r2, #1892] add r2, r3, r2, lsl #1 -.L502: +.L465: cmp r3, r2 - beq .L506 + beq .L469 ldrh r1, [r3], #2 cmp r1, r0 - bne .L502 + bne .L465 movs r0, #1 bx lr -.L506: +.L469: movs r0, #0 bx lr -.L508: +.L471: .align 2 -.L507: +.L470: .word .LANCHOR0 .fnend .size IsBlkInVendorPart, .-IsBlkInVendorPart @@ -3423,34 +3262,34 @@ FtlCacheMetchLpa: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L517 + ldr r2, .L480 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - ldr r3, [r2, #2960] - cbz r3, .L516 - ldr r5, [r2, #2964] + ldr r3, [r2, #1924] + cbz r3, .L479 + ldr r5, [r2, #1928] movs r6, #36 movs r2, #0 -.L512: +.L475: mla r4, r6, r2, r5 ldr r4, [r4, #16] cmp r4, r0 - bcc .L511 + bcc .L474 cmp r4, r1 - bls .L514 -.L511: + bls .L477 +.L474: adds r2, r2, #1 cmp r2, r3 - bne .L512 -.L516: + bne .L475 +.L479: movs r0, #0 pop {r4, r5, r6, pc} -.L514: +.L477: movs r0, #1 pop {r4, r5, r6, pc} -.L518: +.L481: .align 2 -.L517: +.L480: .word .LANCHOR0 .fnend .size FtlCacheMetchLpa, .-FtlCacheMetchLpa @@ -3464,12 +3303,12 @@ FtlGetCap: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L520 - ldr r0, [r3, #1896] + ldr r3, .L483 + ldr r0, [r3, #1912] bx lr -.L521: +.L484: .align 2 -.L520: +.L483: .word .LANCHOR0 .fnend .size FtlGetCap, .-FtlGetCap @@ -3483,12 +3322,12 @@ ftl_get_density: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L523 - ldr r0, [r3, #1896] + ldr r3, .L486 + ldr r0, [r3, #1912] bx lr -.L524: +.L487: .align 2 -.L523: +.L486: .word .LANCHOR0 .fnend .size ftl_get_density, .-ftl_get_density @@ -3502,12 +3341,12 @@ FtlGetLpn: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L526 - ldr r0, [r3, #2968] + ldr r3, .L489 + ldr r0, [r3, #1932] bx lr -.L527: +.L490: .align 2 -.L526: +.L489: .word .LANCHOR0 .fnend .size FtlGetLpn, .-FtlGetLpn @@ -3524,14 +3363,14 @@ FtlBbmMapBadBlock: .save {r4, r5, r6, r7, lr} .pad #12 mov r6, r0 - ldr r5, .L529 - ldrh r4, [r5, #2906] + ldr r5, .L492 + ldrh r4, [r5, #1870] mov r1, r4 bl __aeabi_uidiv uxth r2, r0 smulbb r3, r2, r4 add r1, r5, r2, lsl #2 - ldr r4, [r1, #3000] + ldr r4, [r1, #1964] movs r1, #1 subs r3, r6, r3 uxth r3, r3 @@ -3540,21 +3379,21 @@ FtlBbmMapBadBlock: lsls r1, r1, r0 ldr r0, [r4, r7, lsl #2] orrs r1, r1, r0 - ldr r0, .L529+4 + ldr r0, .L492+4 str r1, [r4, r7, lsl #2] str r1, [sp] mov r1, r6 bl printk - ldrh r3, [r5, #2978] + ldrh r3, [r5, #1942] movs r0, #0 adds r3, r3, #1 - strh r3, [r5, #2978] @ movhi + strh r3, [r5, #1942] @ movhi add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, pc} -.L530: +.L493: .align 2 -.L529: +.L492: .word .LANCHOR0 .word .LC2 .fnend @@ -3572,8 +3411,8 @@ FtlBbmIsBadBlock: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r7, r0 - ldr r5, .L532 - ldrh r6, [r5, #2906] + ldr r5, .L495 + ldrh r6, [r5, #1870] mov r1, r6 bl __aeabi_uidivmod mov r0, r7 @@ -3584,14 +3423,14 @@ FtlBbmIsBadBlock: and r4, r4, #31 uxth r0, r0 add r5, r5, r0, lsl #2 - ldr r3, [r5, #3000] + ldr r3, [r5, #1964] ldr r0, [r3, r2, lsl #2] lsrs r0, r0, r4 and r0, r0, #1 pop {r3, r4, r5, r6, r7, pc} -.L533: +.L496: .align 2 -.L532: +.L495: .word .LANCHOR0 .fnend .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock @@ -3609,31 +3448,6 @@ FtlBbtInfoPrint: .fnend .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .align 1 - .global FtlBbtMemInit - .thumb - .thumb_func - .type FtlBbtMemInit, %function -FtlBbtMemInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r0, .L536 - movw r3, #65535 - movs r1, #255 - movs r2, #16 - addw r0, r0, #2984 - strh r3, [r0, #-12] @ movhi - movs r3, #0 - strh r3, [r0, #-6] @ movhi - b memset -.L537: - .align 2 -.L536: - .word .LANCHOR0 - .fnend - .size FtlBbtMemInit, .-FtlBbtMemInit - .align 1 .global FtlBbtCalcTotleCnt .thumb .thumb_func @@ -3645,28 +3459,28 @@ FtlBbtCalcTotleCnt: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r5, #0 - ldr r4, .L546 - ldrh r6, [r4, #2906] - ldrh r3, [r4, #2862] + ldr r4, .L506 + ldrh r6, [r4, #1870] + ldrh r3, [r4, #1826] mov r4, r5 muls r6, r3, r6 -.L539: +.L499: uxth r0, r5 cmp r0, r6 - bge .L545 + bge .L505 bl FtlBbmIsBadBlock - cbz r0, .L540 + cbz r0, .L500 adds r4, r4, #1 uxth r4, r4 -.L540: +.L500: adds r5, r5, #1 - b .L539 -.L545: + b .L499 +.L505: mov r0, r4 pop {r4, r5, r6, pc} -.L547: +.L507: .align 2 -.L546: +.L506: .word .LANCHOR0 .fnend .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt @@ -3682,22 +3496,22 @@ V2P_block: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r4, r1 - ldr r6, .L549 + ldr r6, .L509 mov r7, r0 - ldrh r5, [r6, #2864] + ldrh r5, [r6, #1828] mov r1, r5 bl __aeabi_uidivmod mov r0, r7 smlabb r4, r4, r5, r1 mov r1, r5 bl __aeabi_uidiv - ldrh r3, [r6, #2906] + ldrh r3, [r6, #1870] smlabb r0, r3, r0, r4 uxth r0, r0 pop {r3, r4, r5, r6, r7, pc} -.L550: +.L510: .align 2 -.L549: +.L509: .word .LANCHOR0 .fnend .size V2P_block, .-V2P_block @@ -3710,12 +3524,12 @@ P2V_plane: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L552 + ldr r3, .L512 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 - ldrh r1, [r3, #2906] - ldrh r5, [r3, #2864] + ldrh r1, [r3, #1870] + ldrh r5, [r3, #1828] bl __aeabi_uidiv mov r1, r5 smulbb r4, r0, r5 @@ -3724,9 +3538,9 @@ P2V_plane: add r1, r1, r4 uxth r0, r1 pop {r4, r5, r6, pc} -.L553: +.L513: .align 2 -.L552: +.L512: .word .LANCHOR0 .fnend .size P2V_plane, .-P2V_plane @@ -3741,17 +3555,17 @@ P2V_block_in_plane: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} .save {r4, lr} - ldr r4, .L555 - ldrh r1, [r4, #2906] + ldr r4, .L515 + ldrh r1, [r4, #1870] bl __aeabi_uidivmod uxth r0, r1 - ldrh r1, [r4, #2864] + ldrh r1, [r4, #1828] bl __aeabi_uidiv uxth r0, r0 pop {r4, pc} -.L556: +.L516: .align 2 -.L555: +.L515: .word .LANCHOR0 .fnend .size P2V_block_in_plane, .-P2V_block_in_plane @@ -3766,14 +3580,14 @@ ftl_cmp_data_ver: @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. cmp r0, r1 - bls .L558 + bls .L518 subs r0, r0, r1 cmp r0, #-2147483648 ite hi movhi r0, #0 movls r0, #1 bx lr -.L558: +.L518: subs r0, r1, r0 cmp r0, #-2147483648 ite ls @@ -3783,34 +3597,6 @@ ftl_cmp_data_ver: .fnend .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 1 - .global FtlFreeSysBlkQueueInit - .thumb - .thumb_func - .type FtlFreeSysBlkQueueInit, %function -FtlFreeSysBlkQueueInit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L561 - mov r1, #2048 - push {r4, lr} - .save {r4, lr} - movs r4, #0 - strh r0, [r3, #3032] @ movhi - add r0, r3, #3040 - strh r4, [r3, #3034] @ movhi - strh r4, [r3, #3036] @ movhi - strh r4, [r3, #3038] @ movhi - bl __memzero - mov r0, r4 - pop {r4, pc} -.L562: - .align 2 -.L561: - .word .LANCHOR0 - .fnend - .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit - .align 1 .global FtlFreeSysBlkQueueEmpty .thumb .thumb_func @@ -3820,14 +3606,14 @@ FtlFreeSysBlkQueueEmpty: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L564 - ldrh r0, [r3, #3038] + ldr r3, .L521 + ldrh r0, [r3, #2002] clz r0, r0 lsrs r0, r0, #5 bx lr -.L565: +.L522: .align 2 -.L564: +.L521: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty @@ -3841,15 +3627,15 @@ FtlFreeSysBlkQueueFull: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L567 - ldrh r0, [r3, #3038] + ldr r3, .L524 + ldrh r0, [r3, #2002] sub r3, r0, #1024 rsbs r0, r3, #0 adcs r0, r0, r3 bx lr -.L568: +.L525: .align 2 -.L567: +.L524: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull @@ -3862,49 +3648,52 @@ FtlFreeSysBlkQueueIn: .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} - mov r6, r0 - ldr r4, .L578 - ldrh r3, [r4, #3038] + subs r3, r0, #1 + movw r2, #65533 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + uxth r3, r3 + cmp r3, r2 + mov r5, r0 + bhi .L526 + ldr r4, .L535 + ldrh r3, [r4, #2002] cmp r3, #1024 - beq .L569 - cbz r1, .L571 - ldr r5, .L578+4 - ldr r3, [r5, #744] - cbnz r3, .L571 + beq .L526 + cbz r1, .L528 + ldr r3, [r4, #4052] + cbnz r3, .L528 bl P2V_block_in_plane movs r1, #1 - lsls r3, r6, #10 + lsls r3, r5, #10 mov r2, r1 - mov r7, r0 - ldr r0, [r5, #748] + mov r6, r0 + ldr r0, [r4, #4056] str r3, [r0, #4] bl FlashEraseBlocks - ldr r2, [r5, #752] - ldrh r3, [r2, r7, lsl #1] + ldr r2, [r4, #4060] + ldrh r3, [r2, r6, lsl #1] adds r3, r3, #1 - strh r3, [r2, r7, lsl #1] @ movhi - ldr r3, [r5, #756] + strh r3, [r2, r6, lsl #1] @ movhi + ldr r3, [r4, #4064] adds r3, r3, #1 - str r3, [r5, #756] -.L571: - ldrh r3, [r4, #3038] + str r3, [r4, #4064] +.L528: + ldrh r3, [r4, #2002] adds r3, r3, #1 - strh r3, [r4, #3038] @ movhi - ldrh r3, [r4, #3036] + strh r3, [r4, #2002] @ movhi + ldrh r3, [r4, #2000] add r2, r4, r3, lsl #1 adds r3, r3, #1 ubfx r3, r3, #0, #10 - strh r3, [r4, #3036] @ movhi - strh r6, [r2, #3040] @ movhi -.L569: - pop {r3, r4, r5, r6, r7, pc} -.L579: + strh r3, [r4, #2000] @ movhi + strh r5, [r2, #2004] @ movhi +.L526: + pop {r4, r5, r6, pc} +.L536: .align 2 -.L578: +.L535: .word .LANCHOR0 - .word .LANCHOR2 .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 1 @@ -3916,103 +3705,46 @@ FtlFreeSysBLkSort: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L589 - movs r0, #0 + ldr r3, .L548 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r6, r0 - ldrh r4, [r3, #788] - ldr r3, .L589+4 + add r2, r3, #4096 + ldrh r4, [r2] + ldrh r2, [r3, #2002] + cbz r2, .L537 + movs r0, #0 + ldrh r1, [r3, #1998] + ldrh r2, [r3, #2000] and r4, r4, #31 - ldrh r1, [r3, #3034] - ldrh r2, [r3, #3036] -.L581: + mov r6, r0 +.L539: uxth r5, r0 adds r0, r0, #1 cmp r5, r4 - bge .L588 + bge .L547 add r5, r3, r1, lsl #1 adds r1, r1, #1 ubfx r1, r1, #0, #10 - ldrh r6, [r5, #3040] + ldrh r6, [r5, #2004] add r5, r3, r2, lsl #1 - strh r6, [r5, #3040] @ movhi + strh r6, [r5, #2004] @ movhi movs r6, #1 add r2, r2, r6 ubfx r2, r2, #0, #10 - b .L581 -.L588: - cbz r6, .L580 - strh r1, [r3, #3034] @ movhi - strh r2, [r3, #3036] @ movhi -.L580: + b .L539 +.L547: + cbz r6, .L537 + strh r1, [r3, #1998] @ movhi + strh r2, [r3, #2000] @ movhi +.L537: pop {r4, r5, r6, pc} -.L590: +.L549: .align 2 -.L589: - .word .LANCHOR2 +.L548: .word .LANCHOR0 .fnend .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 1 - .global remove_from_free_sys_Queue - .thumb - .thumb_func - .type remove_from_free_sys_Queue, %function -remove_from_free_sys_Queue: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L598 - mov r1, r0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - ldrh r0, [r3, #3038] - cbz r0, .L592 - ldrh r6, [r3, #3034] - movs r4, #0 -.L593: - cmp r4, r0 - bcs .L597 - adds r2, r4, r6 - ldr r5, .L598 - ubfx r2, r2, #0, #10 - add r2, r3, r2, lsl #1 - ldrh r2, [r2, #3040] - cmp r2, r1 - bne .L594 - ldr r0, .L598+4 - bl printk - ldrh r3, [r5, #3034] - movs r0, #1 - add r4, r4, r3 - add r2, r5, r3, lsl #1 - ubfx r4, r4, #0, #10 - adds r3, r3, #1 - ldrh r2, [r2, #3040] - add r4, r5, r4, lsl #1 - ubfx r3, r3, #0, #10 - strh r3, [r5, #3034] @ movhi - ldrh r3, [r5, #3038] - strh r2, [r4, #3040] @ movhi - subs r3, r3, #1 - strh r3, [r5, #3038] @ movhi - pop {r4, r5, r6, pc} -.L594: - adds r4, r4, #1 - b .L593 -.L597: - movs r0, #0 -.L592: - pop {r4, r5, r6, pc} -.L599: - .align 2 -.L598: - .word .LANCHOR0 - .word .LC3 - .fnend - .size remove_from_free_sys_Queue, .-remove_from_free_sys_Queue - .align 1 .global FtlFreeSysBlkQueueOut .thumb .thumb_func @@ -4021,75 +3753,118 @@ 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, .L610 - ldr r6, .L610+4 - mov r7, r4 -.L601: - ldrh r1, [r4, #3038] - cbz r1, .L602 - ldrh r3, [r4, #3034] + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r4, .L560 + mov r6, r4 +.L551: + ldrh r1, [r4, #2002] + cbz r1, .L552 + ldrh r3, [r4, #1998] subs r1, r1, #1 - ldr r10, [r6, #744] - strh r1, [r4, #3038] @ movhi + ldr r8, [r4, #4052] + strh r1, [r4, #2002] @ movhi add r2, r4, r3, lsl #1 adds r3, r3, #1 ubfx r3, r3, #0, #10 - ldr r8, .L610+4 - ldrh r5, [r2, #3040] - strh r3, [r4, #3034] @ movhi - cmp r10, #0 - bne .L603 + strh r3, [r4, #1998] @ movhi + ldrh r5, [r2, #2004] + cmp r8, #0 + bne .L553 mov r0, r5 bl P2V_block_in_plane lsls r3, r5, #10 - mov r9, r0 - ldr r0, [r6, #748] + mov r7, r0 + ldr r0, [r4, #4056] str r3, [r0, #4] - ldrb r3, [r4, #76] @ zero_extendqisi2 - cbz r3, .L604 - mov r1, r10 + ldrb r3, [r4, #140] @ zero_extendqisi2 + cbz r3, .L554 + mov r1, r8 movs r2, #1 bl FlashEraseBlocks -.L604: +.L554: movs r1, #1 - ldr r0, [r8, #748] + ldr r0, [r6, #4056] mov r2, r1 bl FlashEraseBlocks - ldr r2, [r8, #752] - ldrh r3, [r2, r9, lsl #1] + ldr r2, [r6, #4060] + ldrh r3, [r2, r7, lsl #1] adds r3, r3, #1 - strh r3, [r2, r9, lsl #1] @ movhi - ldr r3, [r8, #756] + strh r3, [r2, r7, lsl #1] @ movhi + ldr r3, [r6, #4064] adds r3, r3, #1 - str r3, [r8, #756] - b .L603 -.L602: - ldr r0, .L610+8 + str r3, [r6, #4064] + b .L553 +.L552: + ldr r0, .L560+4 bl printk -.L605: - b .L605 -.L603: - cbnz r5, .L606 +.L555: + b .L555 +.L553: + subs r3, r5, #1 + movw r2, #65533 + uxth r3, r3 + cmp r3, r2 + bls .L556 mov r1, r5 - ldrh r2, [r7, #3038] - ldr r0, .L610+12 + ldrh r2, [r6, #2002] + ldr r0, .L560+8 bl printk - b .L601 -.L606: + b .L551 +.L556: mov r0, r5 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L611: + pop {r4, r5, r6, r7, r8, pc} +.L561: .align 2 -.L610: +.L560: .word .LANCHOR0 - .word .LANCHOR2 + .word .LC3 .word .LC4 - .word .LC5 .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 1 + .global test_node_in_list + .thumb + .thumb_func + .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, .L567 + push {r4, r5, lr} + .save {r4, r5, lr} + movw r5, #65535 + ldr r4, [r3, #-228] + ldr r2, [r0] + ldr r3, .L567+4 + subs r0, r2, r4 + asrs r0, r0, #1 + muls r3, r0, r3 + movs r0, #6 + uxth r3, r3 +.L564: + cmp r1, r3 + beq .L565 + ldrh r3, [r2] + cmp r3, r5 + beq .L566 + mla r2, r0, r3, r4 + b .L564 +.L565: + movs r0, #1 + pop {r4, r5, pc} +.L566: + movs r0, #0 + pop {r4, r5, pc} +.L568: + .align 2 +.L567: + .word .LANCHOR2 + .word -1431655765 + .fnend + .size test_node_in_list, .-test_node_in_list + .align 1 .global insert_data_list .thumb .thumb_func @@ -4101,113 +3876,113 @@ insert_data_list: 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, .L628 - ldrh r3, [r5, #2848] + ldr r5, .L585 + ldrh r3, [r5, #1812] cmp r3, r0 - bls .L614 + bls .L571 movs r4, #6 - ldr r2, .L628+4 + ldr r2, .L585+4 movw r3, #65535 muls r4, r0, r4 - ldr lr, [r2, #808] + ldr lr, [r2, #-228] mov r7, r2 add r1, lr, r4 strh r3, [r1, #2] @ movhi strh r3, [lr, r4] @ movhi - ldr r3, [r2, #812] + ldr r3, [r2, #-224] cmp r3, #0 - beq .L627 - ldr r8, [r2, #816] + beq .L584 + ldr r8, [r2, #-220] lsl fp, r0, #1 ldrh r2, [r1, #4] ldrh r6, [r8, r0, lsl #1] - cbz r2, .L625 + cbz r2, .L582 muls r6, r2, r6 - b .L616 -.L625: + b .L573 +.L582: mov r6, #-1 -.L616: - ldr ip, [r7, #808] - ldr r2, .L628+8 - rsb r9, ip, r3 - ldrh r5, [r5, #2848] - asr r9, r9, #1 - str r5, [sp] - mul r2, r2, r9 - ldr r9, [r7, #752] +.L573: + ldr ip, [r7, #-228] + ldr r2, .L585+8 + rsb r7, ip, r3 + ldr r9, [r5, #4060] + asrs r7, r7, #1 + muls r7, r2, r7 + uxth r2, r7 + ldrh r7, [r5, #1812] add r5, r9, fp str r5, [sp, #4] movs r5, #0 - uxth r2, r2 -.L623: + str r7, [sp] +.L580: adds r5, r5, #1 ldr r7, [sp] uxth r5, r5 cmp r5, r7 - bhi .L614 + bhi .L571 cmp r0, r2 - beq .L614 + beq .L571 ldrh r7, [r3, #4] lsl r10, r2, #1 ldrh fp, [r8, r2, lsl #1] - cbz r7, .L626 + cbz r7, .L583 mul r7, r7, fp - b .L618 -.L626: + b .L575 +.L583: mov r7, #-1 -.L618: +.L575: cmp r7, r6 - bne .L619 + bne .L576 ldr r7, [sp, #4] ldrh r10, [r9, r10] ldrh r7, [r7] cmp r10, r7 - bcc .L621 - b .L620 -.L619: - bhi .L620 -.L621: + bcc .L578 + b .L577 +.L576: + bhi .L577 +.L578: ldrh r7, [r3] movw r10, #65535 cmp r7, r10 - bne .L622 + bne .L579 strh r2, [r1, #2] @ movhi strh r0, [r3] @ movhi - ldr r3, .L628+4 - str r1, [r3, #820] - b .L614 -.L622: + ldr r3, .L585+4 + str r1, [r3, #-216] + b .L571 +.L579: movs r3, #6 mov r2, r7 mla r3, r3, r7, ip - b .L623 -.L620: + b .L580 +.L577: strh r2, [lr, r4] @ movhi ldrh r2, [r3, #2] strh r2, [r1, #2] @ movhi - ldr r2, .L628+4 - ldr r4, [r2, #812] + ldr r2, .L585+4 + ldr r4, [r2, #-224] cmp r3, r4 - bne .L624 + bne .L581 strh r0, [r3, #2] @ movhi -.L627: - str r1, [r2, #812] - b .L614 -.L624: +.L584: + str r1, [r2, #-224] + b .L571 +.L581: ldrh r4, [r3, #2] - ldr r1, [r2, #808] + ldr r1, [r2, #-228] movs r2, #6 muls r2, r4, r2 strh r0, [r1, r2] @ movhi strh r0, [r3, #2] @ movhi -.L614: +.L571: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L629: +.L586: .align 2 -.L628: +.L585: .word .LANCHOR0 .word .LANCHOR2 .word -1431655765 @@ -4225,14 +4000,14 @@ INSERT_DATA_LIST: push {r3, lr} .save {r3, lr} bl insert_data_list - ldr r2, .L631 - ldrh r3, [r2, #824] + ldr r2, .L588 + ldrh r3, [r2, #-212] adds r3, r3, #1 - strh r3, [r2, #824] @ movhi + strh r3, [r2, #-212] @ movhi pop {r3, pc} -.L632: +.L589: .align 2 -.L631: +.L588: .word .LANCHOR2 .fnend .size INSERT_DATA_LIST, .-INSERT_DATA_LIST @@ -4249,65 +4024,67 @@ insert_free_list: .save {r4, r5, r6, r7, r8, r9, r10, lr} movw r5, #65535 cmp r0, r5 - beq .L634 + beq .L591 movs r1, #6 - ldr r2, .L641 - mul lr, r1, r0 - ldr ip, [r2, #808] - mov r7, r2 - add r6, ip, lr + ldr r2, .L598 + mul r7, r1, r0 + ldr lr, [r2, #-228] + mov ip, r2 + add r6, lr, r7 strh r5, [r6, #2] @ movhi - strh r5, [ip, lr] @ movhi - ldr r3, [r2, #828] - cbz r3, .L640 - ldr r8, [r2, #808] - ldr r9, [r2, #752] + strh r5, [lr, r7] @ movhi + ldr r3, [r2, #-208] + cbz r3, .L597 + ldr r2, .L598+4 + ldr r8, [ip, #-228] rsb r4, r8, r3 - ldr r2, .L641+4 + ldr r9, [r2, #4060] + ldr r2, .L598+8 asrs r4, r4, #1 ldrh r10, [r9, r0, lsl #1] muls r4, r2, r4 uxth r2, r4 -.L638: +.L595: ldrh r4, [r9, r2, lsl #1] cmp r4, r10 - bcs .L636 + bcs .L593 ldrh r4, [r3] cmp r4, r5 - bne .L637 + bne .L594 strh r2, [r6, #2] @ movhi strh r0, [r3] @ movhi - b .L634 -.L637: + b .L591 +.L594: mla r3, r1, r4, r8 mov r2, r4 - b .L638 -.L636: + b .L595 +.L593: ldrh r1, [r3, #2] strh r1, [r6, #2] @ movhi - strh r2, [ip, lr] @ movhi - ldr r1, [r7, #828] - ldr r2, .L641 + strh r2, [lr, r7] @ movhi + ldr r1, [ip, #-208] + ldr r2, .L598 cmp r3, r1 - bne .L639 + bne .L596 strh r0, [r3, #2] @ movhi -.L640: - str r6, [r2, #828] - b .L634 -.L639: +.L597: + str r6, [r2, #-208] + b .L591 +.L596: ldrh r4, [r3, #2] - ldr r1, [r2, #808] + ldr r1, [r2, #-228] movs r2, #6 muls r2, r4, r2 strh r0, [r1, r2] @ movhi strh r0, [r3, #2] @ movhi -.L634: +.L591: movs r0, #0 pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L642: +.L599: .align 2 -.L641: +.L598: .word .LANCHOR2 + .word .LANCHOR0 .word -1431655765 .fnend .size insert_free_list, .-insert_free_list @@ -4323,14 +4100,14 @@ INSERT_FREE_LIST: push {r3, lr} .save {r3, lr} bl insert_free_list - ldr r2, .L644 - ldrh r3, [r2, #832] + ldr r2, .L601 + ldrh r3, [r2, #-204] adds r3, r3, #1 - strh r3, [r2, #832] @ movhi + strh r3, [r2, #-204] @ movhi pop {r3, pc} -.L645: +.L602: .align 2 -.L644: +.L601: .word .LANCHOR2 .fnend .size INSERT_FREE_LIST, .-INSERT_FREE_LIST @@ -4346,15 +4123,15 @@ List_remove_node: push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} movs r4, #6 - ldr r7, .L651 + ldr r7, .L608 movw r6, #65535 muls r1, r4, r1 ldr r3, [r0] - ldr r2, [r7, #808] + ldr r2, [r7, #-228] adds r5, r2, r1 cmp r5, r3 ldrh r3, [r2, r1] - bne .L647 + bne .L604 cmp r3, r6 ittee eq moveq r3, #0 @@ -4363,33 +4140,33 @@ List_remove_node: strne r3, [r0] it ne strhne r6, [r3, #2] @ movhi - b .L649 -.L647: + b .L606 +.L604: cmp r3, r6 ldrh r0, [r5, #2] - bne .L650 + bne .L607 cmp r0, r3 - beq .L649 + beq .L606 muls r0, r4, r0 strh r3, [r2, r0] @ movhi - b .L649 -.L650: + b .L606 +.L607: mla r3, r4, r3, r2 strh r0, [r3, #2] @ movhi ldrh r6, [r5, #2] ldrh r0, [r2, r1] - ldr r3, [r7, #808] + ldr r3, [r7, #-228] muls r4, r6, r4 strh r0, [r3, r4] @ movhi -.L649: +.L606: movw r3, #65535 movs r0, #0 strh r3, [r2, r1] @ movhi strh r3, [r5, #2] @ movhi pop {r4, r5, r6, r7, pc} -.L652: +.L609: .align 2 -.L651: +.L608: .word .LANCHOR2 .fnend .size List_remove_node, .-List_remove_node @@ -4405,16 +4182,16 @@ List_pop_index_node: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} ldr r3, [r0] - cbz r3, .L659 - ldr r2, .L660 + cbz r3, .L616 + ldr r2, .L617 movs r6, #6 movw r5, #65535 - ldr r4, [r2, #808] -.L655: - cbnz r1, .L656 -.L658: + ldr r4, [r2, #-228] +.L612: + cbnz r1, .L613 +.L615: subs r4, r3, r4 - ldr r3, .L660+4 + ldr r3, .L617+4 asrs r4, r4, #1 muls r4, r3, r4 uxth r4, r4 @@ -4422,20 +4199,20 @@ List_pop_index_node: bl List_remove_node mov r0, r4 pop {r4, r5, r6, pc} -.L656: +.L613: ldrh r2, [r3] cmp r2, r5 - beq .L658 + beq .L615 subs r1, r1, #1 mla r3, r6, r2, r4 uxth r1, r1 - b .L655 -.L659: + b .L612 +.L616: movw r0, #65535 pop {r4, r5, r6, pc} -.L661: +.L618: .align 2 -.L660: +.L617: .word .LANCHOR2 .word -1431655765 .fnend @@ -4449,36 +4226,36 @@ List_get_gc_head_node: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L669 + ldr r2, .L626 push {r4, lr} .save {r4, lr} - ldr r3, [r2, #812] - cbz r3, .L667 + ldr r3, [r2, #-224] + cbz r3, .L624 movs r4, #6 - ldr r1, [r2, #808] + ldr r1, [r2, #-228] movw r2, #65535 -.L664: - cbz r0, .L665 +.L621: + cbz r0, .L622 ldrh r3, [r3] cmp r3, r2 - beq .L667 + beq .L624 subs r0, r0, #1 mla r3, r4, r3, r1 uxth r0, r0 - b .L664 -.L667: + b .L621 +.L624: movw r0, #65535 pop {r4, pc} -.L665: +.L622: subs r3, r3, r1 - ldr r0, .L669+4 + ldr r0, .L626+4 asrs r3, r3, #1 muls r0, r3, r0 uxth r0, r0 pop {r4, pc} -.L670: +.L627: .align 2 -.L669: +.L626: .word .LANCHOR2 .word -1431655765 .fnend @@ -4495,73 +4272,73 @@ List_update_data_list: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r5, r0 - ldr r4, .L678 - ldrh r3, [r4, #836] + ldr r4, .L635 + ldrh r3, [r4, #-200] cmp r3, r0 - beq .L672 - ldrh r3, [r4, #884] + beq .L629 + ldrh r3, [r4, #-152] cmp r3, r0 - beq .L672 - ldrh r3, [r4, #932] + beq .L629 + ldrh r3, [r4, #-104] cmp r3, r0 - beq .L672 + beq .L629 movs r3, #6 - ldr r1, [r4, #808] - ldr r2, [r4, #812] + ldr r1, [r4, #-228] + ldr r2, [r4, #-224] muls r3, r0, r3 adds r0, r1, r3 cmp r0, r2 - beq .L672 - ldr r6, [r4, #816] + beq .L629 + ldr r6, [r4, #-220] ldrh r2, [r0, #4] ldrh r7, [r6, r5, lsl #1] - cbz r2, .L676 + cbz r2, .L633 muls r2, r7, r2 - b .L673 -.L676: + b .L630 +.L633: mov r2, #-1 -.L673: +.L630: ldrh r0, [r0, #2] movw r7, #65535 cmp r0, r7 - bne .L674 + bne .L631 ldrh r3, [r1, r3] cmp r3, r0 - beq .L672 -.L674: + beq .L629 +.L631: movs r3, #6 muls r3, r0, r3 - ldr r0, .L678+4 + ldr r0, .L635+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, .L677 + cbz r3, .L634 muls r3, r0, r3 - b .L675 -.L677: + b .L632 +.L634: mov r3, #-1 -.L675: +.L632: cmp r2, r3 - bcs .L672 - ldr r0, .L678+8 + bcs .L629 + ldr r0, .L635+8 mov r1, r5 bl List_remove_node - ldrh r3, [r4, #824] + ldrh r3, [r4, #-212] mov r0, r5 subs r3, r3, #1 - strh r3, [r4, #824] @ movhi + strh r3, [r4, #-212] @ movhi bl INSERT_DATA_LIST -.L672: +.L629: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L679: +.L636: .align 2 -.L678: +.L635: .word .LANCHOR2 .word -1431655765 - .word .LANCHOR2+812 + .word .LANCHOR2-224 .fnend .size List_update_data_list, .-List_update_data_list .align 1 @@ -4579,16 +4356,16 @@ ftl_map_blk_alloc_new_blk: ldrh r1, [r0, #10] mov r4, r0 ldr r2, [r0, #12] -.L681: +.L638: uxth r5, r3 cmp r5, r1 - bcs .L684 + bcs .L641 mov r7, r2 adds r3, r3, #1 ldrh r6, [r7] adds r2, r2, #2 cmp r6, #0 - bne .L681 + bne .L638 bl FtlFreeSysBlkQueueOut movw r2, #65533 subs r3, r0, #1 @@ -4596,14 +4373,14 @@ ftl_map_blk_alloc_new_blk: strh r0, [r7] @ movhi uxth r3, r3 cmp r3, r2 - bls .L682 - ldr r3, .L687 - ldr r0, .L687+4 - ldrh r2, [r3, #3038] + bls .L639 + ldr r3, .L644 + ldr r0, .L644+4 + ldrh r2, [r3, #2002] bl printk -.L683: - b .L683 -.L682: +.L640: + b .L640 +.L639: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi adds r3, r3, #1 @@ -4612,14 +4389,14 @@ ftl_map_blk_alloc_new_blk: strh r5, [r4] @ movhi adds r3, r3, #1 strh r3, [r4, #8] @ movhi -.L684: +.L641: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L688: +.L645: .align 2 -.L687: +.L644: .word .LANCHOR0 - .word .LC6 + .word .LC5 .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 1 @@ -4634,70 +4411,70 @@ select_l2p_ram_region: push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} movs r1, #0 - ldr r3, .L703 + ldr r3, .L660 movs r4, #12 - ldr r7, .L703+4 + ldr r7, .L660+4 movw r5, #65535 - ldrh r2, [r3, #2950] - ldr r3, [r7, #980] -.L690: + ldrh r2, [r3, #1910] + ldr r3, [r7, #-56] +.L647: uxth r0, r1 cmp r0, r2 - bcs .L701 + bcs .L658 adds r1, r1, #1 mla r6, r4, r1, r3 ldrh r6, [r6, #-12] cmp r6, r5 - bne .L690 - b .L691 -.L701: + bne .L647 + b .L648 +.L658: movs r1, #0 mov r6, #-2147483648 mov lr, #12 mov r0, r2 -.L693: +.L650: uxth r5, r1 cmp r5, r2 - bcs .L702 + bcs .L659 mla r4, lr, r1, r3 ldr r4, [r4, #4] cmp r4, #0 - blt .L694 + blt .L651 cmp r4, r6 itt cc movcc r6, r4 movcc r0, r5 -.L694: +.L651: adds r1, r1, #1 - b .L693 -.L702: + b .L650 +.L659: cmp r0, r2 - bcc .L691 - ldrh r7, [r7, #984] + bcc .L648 + ldrh r7, [r7, #-52] movs r1, #0 mov r4, #-1 mov r0, r2 -.L696: +.L653: uxth r5, r1 cmp r5, r2 - bcs .L691 + bcs .L648 ldr r6, [r3, #4] cmp r6, r4 - bcs .L697 + bcs .L654 ldrh lr, [r3] cmp lr, r7 itt ne movne r4, r6 movne r0, r5 -.L697: +.L654: adds r1, r1, #1 adds r3, r3, #12 - b .L696 -.L691: + b .L653 +.L648: pop {r4, r5, r6, r7, pc} -.L704: +.L661: .align 2 -.L703: +.L660: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -4711,41 +4488,41 @@ FtlUpdateVaildLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L712 + ldr r1, .L669 push {r4, r5, lr} .save {r4, r5, lr} - ldrh r2, [r1, #986] + ldrh r2, [r1, #-50] mov r3, r1 cmp r2, #4 - bhi .L706 - cbnz r0, .L706 + bhi .L663 + cbnz r0, .L663 adds r2, r2, #1 - strh r2, [r1, #986] @ movhi + strh r2, [r1, #-50] @ movhi pop {r4, r5, pc} -.L706: - ldr r1, .L712+4 +.L663: + ldr r1, .L669+4 movs r2, #0 - strh r2, [r3, #986] @ movhi + strh r2, [r3, #-50] @ movhi movw r5, #65535 - str r2, [r3, #988] - ldrh r1, [r1, #2848] - ldr r2, [r3, #816] + str r2, [r3, #-48] + ldrh r1, [r1, #1812] + ldr r2, [r3, #-220] add r1, r2, r1, lsl #1 -.L707: +.L664: cmp r2, r1 - beq .L711 + beq .L668 ldrh r4, [r2], #2 cmp r4, r5 ittt ne - ldrne r0, [r3, #988] + ldrne r0, [r3, #-48] addne r0, r0, r4 - strne r0, [r3, #988] - b .L707 -.L711: + strne r0, [r3, #-48] + b .L664 +.L668: pop {r4, r5, pc} -.L713: +.L670: .align 2 -.L712: +.L669: .word .LANCHOR2 .word .LANCHOR0 .fnend @@ -4761,28 +4538,28 @@ ftl_set_blk_mode: @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. lsrs r3, r0, #5 - ldr r2, .L717 + ldr r2, .L674 and r0, r0, #31 uxth r3, r3 - cbz r1, .L715 - ldr r1, [r2, #992] + cbz r1, .L672 + ldr r1, [r2, #-44] movs r2, #1 lsls r2, r2, r0 ldr r0, [r1, r3, lsl #2] orrs r2, r2, r0 str r2, [r1, r3, lsl #2] bx lr -.L715: - ldr r1, [r2, #992] +.L672: + ldr r1, [r2, #-44] 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 -.L718: +.L675: .align 2 -.L717: +.L674: .word .LANCHOR2 .fnend .size ftl_set_blk_mode, .-ftl_set_blk_mode @@ -4796,17 +4573,17 @@ ftl_get_blk_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L720 + ldr r3, .L677 lsrs r1, r0, #5 - ldr r2, [r3, #992] + ldr r2, [r3, #-44] and r3, r0, #31 ldr r0, [r2, r1, lsl #2] lsrs r0, r0, r3 and r0, r0, #1 bx lr -.L721: +.L678: .align 2 -.L720: +.L677: .word .LANCHOR2 .fnend .size ftl_get_blk_mode, .-ftl_get_blk_mode @@ -4821,16 +4598,16 @@ ftl_sb_update_avl_pages: @ frame_needed = 0, uses_anonymous_args = 0 movs r3, #0 strh r3, [r0, #4] @ movhi - ldr r3, .L731 + ldr r3, .L688 push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} adds r4, r2, #7 - ldrh r5, [r3, #2840] + ldrh r5, [r3, #1804] movw r7, #65535 add r4, r0, r4, lsl #1 -.L723: +.L680: cmp r2, r5 - bcs .L729 + bcs .L686 ldrh r6, [r4, #2]! adds r2, r2, #1 cmp r6, r7 @@ -4839,16 +4616,16 @@ ftl_sb_update_avl_pages: ldrhne r6, [r0, #4] addne r6, r6, #1 strhne r6, [r0, #4] @ movhi - b .L723 -.L729: - ldrh r6, [r3, #2910] + b .L680 +.L686: + ldrh r6, [r3, #1872] add r4, r0, #14 movs r2, #0 movw r7, #65535 -.L726: +.L683: uxth r3, r2 cmp r3, r5 - bcs .L730 + bcs .L687 ldrh r3, [r4, #2]! adds r2, r2, #1 cmp r3, r7 @@ -4859,12 +4636,12 @@ ftl_sb_update_avl_pages: subne r3, r3, r1 it ne strhne r3, [r0, #4] @ movhi - b .L726 -.L730: + b .L683 +.L687: pop {r4, r5, r6, r7, pc} -.L732: +.L689: .align 2 -.L731: +.L688: .word .LANCHOR0 .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages @@ -4880,64 +4657,63 @@ make_superblock: 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, .L746 + ldr r6, .L703 add r7, r0, #16 mov r4, r0 mov r5, r3 - addw r10, r6, #2868 + add r10, r6, #1832 movw r9, #65535 - ldrh r8, [r6, #2840] + ldrh r8, [r6, #1804] strh r3, [r0, #4] @ movhi strb r3, [r0, #7] -.L734: +.L691: uxth r3, r5 cmp r3, r8 - bcs .L745 + bcs .L702 ldrb r0, [r10, r5] @ zero_extendqisi2 ldrh r1, [r4] bl V2P_block strh r9, [r7] @ movhi mov fp, r0 bl FtlBbmIsBadBlock - cbnz r0, .L735 + cbnz r0, .L692 strh fp, [r7] @ movhi ldrb r3, [r4, #7] @ zero_extendqisi2 adds r3, r3, #1 strb r3, [r4, #7] -.L735: +.L692: adds r5, r5, #1 adds r7, r7, #2 - b .L734 -.L745: + b .L691 +.L702: ldrb r2, [r4, #7] @ zero_extendqisi2 - ldrh r3, [r6, #2910] + ldrh r3, [r6, #1872] smulbb r3, r2, r3 strh r3, [r4, #4] @ movhi movs r3, #0 strb r3, [r4, #9] - ldr r3, [r6, #2832] - cbz r3, .L737 - ldr r3, .L746+4 + ldr r3, [r6, #1796] + cbz r3, .L694 + ldr r3, .L703 ldrh r2, [r4] - ldr r3, [r3, #752] + ldr r3, [r3, #4060] ldrh r3, [r3, r2, lsl #1] - cmp r3, #59 + cmp r3, #79 itt ls movls r3, #1 strbls r3, [r4, #9] -.L737: +.L694: ldrb r3, [r6] @ zero_extendqisi2 - cbz r3, .L738 + cbz r3, .L695 movs r3, #1 strb r3, [r4, #9] -.L738: +.L695: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L747: +.L704: .align 2 -.L746: +.L703: .word .LANCHOR0 - .word .LANCHOR2 .fnend .size make_superblock, .-make_superblock .align 1 @@ -4952,43 +4728,43 @@ update_multiplier_value: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} movs r5, #0 - ldr r3, .L757 + ldr r3, .L714 mov r7, r0 mov r4, r5 - addw r6, r3, #2868 - ldrh r8, [r3, #2840] - ldrh r9, [r3, #2910] -.L749: + add r6, r3, #1832 + ldrh r8, [r3, #1804] + ldrh r9, [r3, #1872] +.L706: uxth r3, r5 cmp r3, r8 - bcs .L756 + bcs .L713 mov r1, r7 ldrb r0, [r6, r5] @ zero_extendqisi2 bl V2P_block bl FtlBbmIsBadBlock - cbnz r0, .L750 + cbnz r0, .L707 add r4, r4, r9 uxth r4, r4 -.L750: +.L707: adds r5, r5, #1 - b .L749 -.L756: - cbz r4, .L752 + b .L706 +.L713: + cbz r4, .L709 mov r1, r4 mov r0, #32768 bl __aeabi_idiv uxth r4, r0 -.L752: - ldr r3, .L757+4 +.L709: + ldr r3, .L714+4 movs r2, #6 movs r0, #0 - ldr r3, [r3, #808] + ldr r3, [r3, #-228] mla r7, r2, r7, r3 strh r4, [r7, #4] @ movhi pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L758: +.L715: .align 2 -.L757: +.L714: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -5003,24 +4779,26 @@ GetFreeBlockMinEraseCount: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L762 - ldr r0, [r2, #828] - cbz r0, .L760 - ldr r3, [r2, #808] + ldr r3, .L719 + ldr r0, [r3, #-208] + cbz r0, .L717 + ldr r3, [r3, #-228] subs r0, r0, r3 - ldr r3, .L762+4 + ldr r3, .L719+4 asrs r0, r0, #1 muls r0, r3, r0 - ldr r3, [r2, #752] + ldr r3, .L719+8 + ldr r3, [r3, #4060] uxth r0, r0 ldrh r0, [r3, r0, lsl #1] -.L760: +.L717: bx lr -.L763: +.L720: .align 2 -.L762: +.L719: .word .LANCHOR2 .word -1431655765 + .word .LANCHOR0 .fnend .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 1 @@ -5032,50 +4810,52 @@ GetFreeBlockMaxEraseCount: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L772 - push {r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - ldr r3, [r1, #828] - cbz r3, .L770 - ldrh r2, [r1, #832] - movs r6, #6 - ldr r4, [r1, #808] - movw r7, #65535 + ldr r1, .L729 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + ldr r3, [r1, #-208] + cbz r3, .L727 + ldrh r2, [r1, #-204] + movs r5, #6 + ldr r1, [r1, #-228] + movw r6, #65535 rsb r2, r2, r2, lsl #3 - subs r3, r3, r4 + subs r3, r3, r1 asrs r2, r2, #3 asrs r3, r3, #1 cmp r0, r2 it gt uxthgt r0, r2 - ldr r2, .L772+4 + ldr r2, .L729+4 muls r3, r2, r3 movs r2, #0 uxth r3, r3 -.L767: - uxth r5, r2 - cmp r5, r0 - bcs .L769 - mul r5, r6, r3 +.L724: + uxth r4, r2 + cmp r4, r0 + bcs .L726 + mul r4, r5, r3 adds r2, r2, #1 - ldrh r5, [r4, r5] - cmp r5, r7 - bne .L771 -.L769: - ldr r2, [r1, #752] + ldrh r4, [r1, r4] + cmp r4, r6 + bne .L728 +.L726: + ldr r2, .L729+8 + ldr r2, [r2, #4060] ldrh r0, [r2, r3, lsl #1] - pop {r4, r5, r6, r7, pc} -.L771: - mov r3, r5 - b .L767 -.L770: + pop {r4, r5, r6, pc} +.L728: + mov r3, r4 + b .L724 +.L727: mov r0, r3 - pop {r4, r5, r6, r7, pc} -.L773: + pop {r4, r5, r6, pc} +.L730: .align 2 -.L772: +.L729: .word .LANCHOR2 .word -1431655765 + .word .LANCHOR0 .fnend .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 1 @@ -5085,337 +4865,334 @@ GetFreeBlockMaxEraseCount: .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 32 @ 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, .L784+240 - add r4, r6, #12 - .pad #32 - sub sp, sp, #32 - ldr r1, .L784 + 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, .L742 + .pad #52 + sub sp, sp, #52 + ldr r6, .L742+4 + add r5, r8, #12 + ldr r1, .L742+8 + ldr r3, [r7] + str r3, [sp, #44] bl strcpy - mov r0, r4 - ldr r1, .L784+4 - ldr r2, [r8, #1864] + mov r0, r5 + ldr r1, .L742+12 + ldr r2, [r6, #112] bl sprintf - ldr r1, .L784+8 - ldr r2, [r8, #2928] - add r4, r4, r0 - mov r0, r4 + ldr r1, .L742+16 + ldr r2, [r6, #1888] + add r5, r5, r0 + mov r0, r5 bl sprintf - ldr r3, .L784+12 + ldr r3, .L742+20 ldr r3, [r3, #504] cmp r3, #1 - add r4, r4, r0 - bne .L780 - add r0, sp, #16 - add r1, sp, #20 - add r2, sp, #24 - add r3, sp, #28 + add r4, r5, r0 + bne .L737 + add r0, sp, #28 + add r1, sp, #32 + add r2, sp, #36 + add r3, sp, #40 bl NandcGetTimeCfg - ldr r3, [sp, #24] - ldr r2, [sp, #16] mov r0, r4 - ldr r1, .L784+16 + ldr r1, .L742+24 + ldr r9, .L742+240 + ldr r3, [sp, #36] + ldr r2, [sp, #28] str r3, [sp] - ldr r3, [sp, #28] - ldr r7, .L784+20 + ldr r3, [sp, #40] str r3, [sp, #4] - ldr r3, [sp, #20] + ldr r3, [sp, #32] bl sprintf - ldr r1, .L784+24 + ldr r1, .L742+28 add r4, r4, r0 add r5, r4, #10 mov r0, r4 bl strcpy mov r0, r5 - ldr r1, .L784+28 - ldr r2, [r8, #2968] + ldr r1, .L742+32 + ldr r2, [r6, #1932] bl sprintf - ldr r1, .L784+32 - ldr r2, [r7, #988] + ldr r1, .L742+36 + ldr r2, [r9, #-48] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+36 - ldr r2, [r7, #996] + ldr r1, .L742+40 + ldr r2, [r9, #-40] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+40 - ldr r2, [r7, #1000] + ldr r1, .L742+44 + ldr r2, [r9, #-36] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+44 - ldr r2, [r7, #1004] + ldr r1, .L742+48 + ldr r2, [r9, #-32] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+48 - ldr r2, [r7, #1008] + ldr r1, .L742+52 + ldr r2, [r9, #-28] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+52 - ldr r2, [r7, #1012] + ldr r1, .L742+56 + ldr r2, [r9, #-24] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+56 - ldr r2, [r7, #1016] + ldr r1, .L742+60 + ldr r2, [r9, #-20] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r2, [r7, #1020] - ldr r1, .L784+60 + ldr r2, [r9, #-16] + ldr r1, .L742+64 lsrs r2, r2, #11 add r5, r5, r0 mov r0, r5 bl sprintf - ldr r2, [r7, #1024] - ldr r1, .L784+64 + ldr r2, [r9, #-12] + ldr r1, .L742+68 lsrs r2, r2, #11 add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+68 - ldr r2, [r7, #1028] + ldr r1, .L742+72 + ldr r2, [r9, #-8] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+72 - ldr r2, [r7, #1032] + ldr r1, .L742+76 + ldr r2, [r9, #-4] add r5, r5, r0 mov r0, r5 bl sprintf add r5, r5, r0 bl FtlBbtCalcTotleCnt - ldr r1, .L784+76 - ldrh r2, [r8, #2978] + ldr r1, .L742+80 + ldrh r2, [r6, #1942] mov r3, r0 mov r0, r5 bl sprintf - ldr r1, .L784+80 - ldrh r2, [r7, #832] + ldr r1, .L742+84 + ldrh r2, [r9, #-204] add r5, r5, r0 mov r0, r5 bl sprintf - ldr r1, .L784+84 - ldr r2, [r7, #1036] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+88 + ldr r2, [r9] + adds r4, r5, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+88 - ldr r2, [r7, #1040] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+92 + ldr r2, [r9, #4] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+92 - ldr r2, [r7, #1044] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+96 + ldr r2, [r9, #8] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+96 - ldr r2, [r7, #756] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+100 + ldr r2, [r6, #4064] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+100 - ldr r2, [r7, #1048] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+104 + ldr r2, [r9, #12] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+104 - ldr r2, [r7, #1052] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+108 + ldr r2, [r9, #16] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+108 - ldrh r2, [r7, #790] - add r5, r5, r0 - mov r0, r5 + movw r3, #4098 + ldrh r2, [r6, r3] + ldr r1, .L742+112 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+112 - ldrh r2, [r7, #788] - add r5, r5, r0 - mov r0, r5 + add r3, r6, #4096 + ldr r1, .L742+116 + ldrh r2, [r3] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+116 - ldr r2, [r8, #1896] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+120 + ldr r2, [r6, #1912] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+120 - ldr r2, [r8, #2944] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+124 + ldr r2, [r6, #1904] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+124 - ldr r2, [r8, #2836] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+128 + ldr r2, [r6, #1800] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+128 - ldrh r2, [r8, #3038] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+132 + ldrh r2, [r6, #2002] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+132 - ldrh r2, [r8, #2848] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+136 + ldrh r2, [r6, #1812] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+136 - ldrh r2, [r7, #1056] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+140 + ldrh r2, [r9, #20] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+140 - ldr r2, [r8, #2852] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+144 + ldr r2, [r6, #1816] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+144 - ldrh r2, [r7, #1060] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+148 + ldrh r2, [r9, #24] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+148 - ldrh r2, [r8, #2972] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+152 + ldrh r2, [r6, #1936] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+152 - ldrh r2, [r7, #838] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+156 + ldrh r2, [r9, #-198] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+156 - ldrb r2, [r7, #842] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+160 + ldrb r2, [r9, #-194] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+160 - ldrh r2, [r7, #836] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+164 + ldrh r2, [r9, #-200] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+164 - ldrb r2, [r7, #844] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+168 + ldrb r2, [r9, #-192] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+168 - ldrh r2, [r7, #840] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+172 + ldrh r2, [r9, #-196] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r3, [r7, #816] - ldrh r2, [r7, #836] - ldr r1, .L784+172 + ldr r3, [r9, #-220] + ldrh r2, [r9, #-200] + ldr r1, .L742+176 ldrh r2, [r3, r2, lsl #1] - add r5, r5, r0 - mov r0, r5 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+176 - ldrh r2, [r7, #886] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+180 + ldrh r2, [r9, #-150] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+180 - ldrb r2, [r7, #890] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+184 + ldrb r2, [r9, #-146] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+184 - ldrh r2, [r7, #884] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+188 + ldrh r2, [r9, #-152] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+188 - ldrb r2, [r7, #892] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+192 + ldrb r2, [r9, #-144] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+192 - ldrh r2, [r7, #888] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+196 + ldrh r2, [r9, #-148] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r3, [r7, #816] - ldrh r2, [r7, #884] - ldr r1, .L784+196 + ldr r3, [r9, #-220] + ldrh r2, [r9, #-152] + ldr r1, .L742+200 ldrh r2, [r3, r2, lsl #1] - add r5, r5, r0 - mov r0, r5 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+200 - ldrh r2, [r7, #934] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+204 + ldrh r2, [r9, #-102] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+204 - ldrb r2, [r7, #938] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+208 + ldrb r2, [r9, #-98] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+208 - ldrh r2, [r7, #932] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+212 + ldrh r2, [r9, #-104] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+212 - ldrb r2, [r7, #940] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+216 + ldrb r2, [r9, #-96] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+216 - ldrh r2, [r7, #936] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+220 + ldrh r2, [r9, #-100] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+220 - ldrh r2, [r7, #1074] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+224 + ldrh r2, [r9, #42] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+224 - ldrb r2, [r7, #1078] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+228 + ldrb r2, [r9, #46] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+228 - ldrh r2, [r7, #1072] - add r5, r5, r0 - mov r0, r5 + ldr r1, .L742+232 + ldrh r2, [r9, #40] + add r4, r4, r0 + mov r0, r4 bl sprintf - ldr r1, .L784+232 - ldrb r2, [r7, #1080] @ zero_extendqisi2 - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L784+236 - ldrh r2, [r7, #1076] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, [r7, #1208] - ldr r3, [r8, #2832] - ldr r2, [r7, #1120] - str r1, [sp] - b .L785 -.L786: + ldr r1, .L742+236 + ldrb r2, [r9, #48] @ zero_extendqisi2 + add r4, r4, r0 + mov r0, r4 + b .L743 +.L744: .align 2 -.L784: +.L742: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LC6 .word .LC7 .word .LC8 - .word .LC9 .word .LANCHOR1 + .word .LC9 .word .LC10 - .word .LANCHOR2 .word .LC11 .word .LC12 .word .LC13 @@ -5468,143 +5245,163 @@ FtlPrintInfo2buf: .word .LC60 .word .LC61 .word .LC62 - .word .LC63 - .word .LC64 - .word .LANCHOR0 -.L785: - ldr r1, [r7, #1200] + .word .LANCHOR2 +.L743: + bl sprintf + ldr r1, .L745 + ldrh r2, [r9, #44] + add r4, r4, r0 + mov r0, r4 + bl sprintf + ldr r1, [r9, #176] + ldr r2, [r9, #88] + ldr r3, [r6, #1796] orr r2, r3, r2, lsl #8 + ldr r3, [r9, #172] + str r1, [sp] + add r4, r4, r0 + ldr r1, [r9, #168] + mov r0, r4 str r1, [sp, #4] - ldr r3, [r7, #1204] - ldr r1, .L787 - add r5, r5, r0 - mov r0, r5 + ldr r1, .L745+4 bl sprintf - ldr r1, .L787+4 - ldr r2, [r7, #1196] - add r5, r5, r0 - mov r0, r5 - bl sprintf - ldr r1, .L787+8 - ldr r2, [r7, #1220] - adds r4, r5, r0 - mov r0, r4 - bl sprintf - ldr r1, .L787+12 - ldrh r2, [r7, #1636] + ldr r1, .L745+8 + ldr r2, [r9, #164] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r1, .L787+16 - ldrh r2, [r7, #1638] + ldr r1, .L745+12 + ldr r2, [r9, #188] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r1, .L787+20 - ldr r2, [r7, #1640] + ldr r1, .L745+16 + ldrh r2, [r9, #604] add r4, r4, r0 mov r0, r4 bl sprintf - ldr r1, .L787+24 - ldrh r2, [r7, #1644] + ldr r1, .L745+20 + ldrh r2, [r9, #606] + add r4, r4, r0 + mov r0, r4 + bl sprintf + ldr r1, .L745+24 + ldr r2, [r9, #608] + add r4, r4, r0 + mov r0, r4 + bl sprintf + ldr r1, .L745+28 + ldrh r2, [r9, #612] add r4, r4, r0 mov r0, r4 bl sprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r1, .L787+28 + ldr r1, .L745+32 mov r2, r0 mov r0, r4 bl sprintf add r4, r4, r0 - ldrh r0, [r7, #832] + ldrh r0, [r9, #-204] bl GetFreeBlockMaxEraseCount - ldr r1, .L787+32 + ldr r1, .L745+36 mov r2, r0 mov r0, r4 bl sprintf - ldrh r3, [r7, #1072] + ldrh r3, [r9, #40] movw r2, #65535 cmp r3, r2 add r4, r4, r0 - beq .L777 - ldr r2, [r7, #816] + beq .L734 + ldr r2, [r9, #-220] mov r0, r4 - ldr r1, .L787+36 + ldr r1, .L745+40 ldrh r2, [r2, r3, lsl #1] bl sprintf add r4, r4, r0 -.L777: +.L734: movs r0, #0 movs r5, #0 bl List_get_gc_head_node - mov r9, #6 - movw r10, #65535 + mov fp, #6 + movw ip, #65535 uxth r3, r0 -.L779: - cmp r3, r10 - beq .L778 - ldr r2, [r7, #816] +.L736: + cmp r3, ip + str ip, [sp, #20] + beq .L735 + ldr r2, [r9, #-220] mov r0, r4 - mul r8, r9, r3 - ldr r1, .L787+40 + mul r10, fp, r3 + ldr r1, .L745+44 ldrh r2, [r2, r3, lsl #1] str r2, [sp] - ldr r2, [r7, #808] - add r2, r2, r8 + ldr r2, [r9, #-228] + add r2, r2, r10 ldrh r2, [r2, #4] str r2, [sp, #4] - ldr r2, [r7, #752] + ldr r2, [r6, #4060] ldrh r2, [r2, r3, lsl #1] str r2, [sp, #8] mov r2, r5 bl sprintf adds r5, r5, #1 - ldr r3, [r7, #808] + ldr r3, [r9, #-228] cmp r5, #16 - ldrh r3, [r3, r8] + ldrh r3, [r3, r10] add r4, r4, r0 - bne .L779 -.L778: - ldr r2, [r7, #808] - movs r5, #0 - ldr r3, [r7, #828] - mov r9, #6 - movw r10, #65535 - subs r3, r3, r2 - ldr r2, .L787+44 - asrs r3, r3, #1 - muls r3, r2, r3 + ldr ip, [sp, #20] + bne .L736 +.L735: + ldr r3, [r9, #-228] + mov r10, #0 + ldr r5, [r9, #-208] + movw ip, #65535 + subs r5, r5, r3 + ldr r3, .L745+48 + asrs r5, r5, #1 + muls r3, r5, r3 + movs r5, #6 uxth r3, r3 -.L781: - cmp r3, r10 - beq .L780 - mul r8, r9, r3 - ldr r2, [r7, #808] +.L738: + cmp r3, ip + str ip, [sp, #20] + beq .L737 + mul fp, r5, r3 + ldr r2, [r9, #-228] mov r0, r4 - ldr r1, .L787+48 - add r2, r2, r8 + ldr r1, .L745+52 + add r2, r2, fp ldrh r2, [r2, #4] str r2, [sp] - ldr r2, [r7, #752] + ldr r2, [r6, #4060] ldrh r2, [r2, r3, lsl #1] str r2, [sp, #4] - mov r2, r5 + mov r2, r10 bl sprintf - adds r5, r5, #1 - ldr r3, [r7, #808] - cmp r5, #4 - ldrh r3, [r3, r8] + add r10, r10, #1 + ldr r3, [r9, #-228] + cmp r10, #4 + ldrh r3, [r3, fp] add r4, r4, r0 - bne .L781 -.L780: - subs r0, r4, r6 - add sp, sp, #32 + ldr ip, [sp, #20] + bne .L738 +.L737: + ldr r2, [sp, #44] + rsb r0, r8, r4 + ldr r3, [r7] + cmp r2, r3 + beq .L739 + bl __stack_chk_fail +.L739: + add sp, sp, #52 @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L788: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L746: .align 2 -.L787: +.L745: + .word .LC63 + .word .LC64 .word .LC65 .word .LC66 .word .LC67 @@ -5615,9 +5412,8 @@ FtlPrintInfo2buf: .word .LC72 .word .LC73 .word .LC74 - .word .LC75 .word -1431655765 - .word .LC76 + .word .LC75 .fnend .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 1 @@ -5632,8 +5428,8 @@ ftl_proc_ftl_read: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r5, r0 - ldr r1, .L790 - ldr r2, .L790+4 + ldr r1, .L748 + ldr r2, .L748+4 bl sprintf adds r4, r5, r0 mov r0, r4 @@ -5641,11 +5437,11 @@ ftl_proc_ftl_read: add r0, r0, r4 subs r0, r0, r5 pop {r3, r4, r5, pc} -.L791: +.L749: .align 2 -.L790: +.L748: + .word .LC76 .word .LC77 - .word .LC78 .fnend .size ftl_proc_ftl_read, .-ftl_proc_ftl_read .align 1 @@ -5661,185 +5457,185 @@ GetSwlReplaceBlock: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r4, .L820 - ldr r2, [r4, #1044] - ldr r3, [r4, #1052] + ldr r4, .L778 + ldr r2, [r4, #8] + ldr r3, [r4, #16] cmp r2, r3 - bcs .L793 - ldr r2, .L820+4 + bcs .L751 + ldr r2, .L778+4 movs r3, #0 - ldr r0, [r4, #752] - str r3, [r4, #1036] - ldrh r1, [r2, #2848] + str r3, [r4] + ldrh r1, [r2, #1812] mov r5, r2 -.L794: + ldr r0, [r2, #4060] +.L752: cmp r3, r1 - bcs .L819 + bcs .L777 ldrh r6, [r0, r3, lsl #1] adds r3, r3, #1 - ldr r2, [r4, #1036] + ldr r2, [r4] add r2, r2, r6 - str r2, [r4, #1036] - b .L794 -.L819: - ldr r6, [r4, #1036] + str r2, [r4] + b .L752 +.L777: + ldr r6, [r4] mov r0, r6 bl __aeabi_uidiv - ldrh r1, [r5, #2900] - str r0, [r4, #1044] - ldr r0, [r4, #1040] + ldrh r1, [r5, #1864] + str r0, [r4, #8] + ldr r0, [r4, #4] subs r0, r6, r0 bl __aeabi_uidiv - str r0, [r4, #1036] - b .L796 -.L793: - ldr r3, [r4, #1048] + str r0, [r4] + b .L754 +.L751: + ldr r3, [r4, #12] cmp r2, r3 - bls .L796 - ldr r0, .L820+4 + bls .L754 + ldr r1, .L778+4 adds r3, r3, #1 - str r3, [r4, #1048] + str r3, [r4, #12] movs r3, #0 -.L798: - ldrh r2, [r0, #2848] +.L756: + ldrh r2, [r1, #1812] cmp r3, r2 - bcs .L796 - ldr r1, [r4, #752] - ldrh r2, [r1, r3, lsl #1] + bcs .L754 + ldr r0, [r1, #4060] + ldrh r2, [r0, r3, lsl #1] adds r2, r2, #1 - strh r2, [r1, r3, lsl #1] @ movhi + strh r2, [r0, r3, lsl #1] @ movhi adds r3, r3, #1 - b .L798 -.L796: - ldr r6, [r4, #1052] - ldr r8, [r4, #1044] + b .L756 +.L754: + ldr r6, [r4, #16] + ldr r8, [r4, #8] add r3, r6, #256 cmp r3, r8 - bls .L801 - ldr r2, .L820 + bls .L759 + ldr r2, .L778 add r3, r6, #768 - ldr r2, [r2, #1048] + ldr r2, [r2, #12] cmp r3, r2 - bls .L801 - ldr r3, .L820+4 - ldr r3, [r3, #2832] - cbnz r3, .L802 -.L804: + bls .L759 + ldr r3, .L778+4 + ldr r3, [r3, #1796] + cbnz r3, .L760 +.L762: movw r0, #65535 - b .L803 -.L802: - cmp r6, #30 - bhi .L804 -.L801: - ldrh r0, [r4, #832] + b .L761 +.L760: + cmp r6, #40 + bhi .L762 +.L759: + ldrh r0, [r4, #-204] add r0, r0, r0, lsl #1 ubfx r0, r0, #2, #16 bl GetFreeBlockMaxEraseCount add r3, r6, #64 cmp r0, r3 mov r9, r0 - bcs .L805 - cmp r6, #30 - bhi .L804 -.L805: - ldr r3, [r4, #812] - ldr r2, .L820 + bcs .L763 + cmp r6, #40 + bhi .L762 +.L763: + ldr r3, [r4, #-224] cmp r3, #0 - beq .L804 - ldr r1, .L820+4 + beq .L762 + ldr r2, .L778+4 movw r7, #65535 - ldr r0, [r2, #808] mov ip, #6 - ldr r10, [r2, #752] mov r5, r7 - ldrh r1, [r1, #2848] mov lr, r7 + ldrh r1, [r2, #1812] + ldr r10, [r2, #4060] str r1, [sp, #20] + ldr r1, .L778 + ldr r0, [r1, #-228] movs r1, #0 -.L806: +.L764: ldrh r2, [r3] cmp r2, lr str r2, [sp, #16] - beq .L808 + beq .L766 adds r1, r1, #1 ldr r2, [sp, #20] uxth r1, r1 cmp r1, r2 - bhi .L804 + bhi .L762 ldrh fp, [r3, #4] cmp fp, #0 - beq .L807 + beq .L765 subs r3, r3, r0 - ldr r2, .L820+8 + ldr r2, .L778+8 asrs r3, r3, #1 muls r3, r2, r3 uxth r3, r3 ldrh fp, [r10, r3, lsl #1] cmp fp, r6 - bls .L812 + bls .L770 cmp fp, r7 itt cc movcc r7, fp movcc r5, r3 -.L807: +.L765: ldr r3, [sp, #16] mla r3, ip, r3, r0 - b .L806 -.L812: + b .L764 +.L770: mov r5, r3 -.L808: +.L766: movw r3, #65535 cmp r5, r3 - beq .L804 + beq .L762 ldrh fp, [r10, r5, lsl #1] lsls r3, r5, #1 cmp fp, r6 - bls .L810 + bls .L768 str r3, [sp, #16] bl GetFreeBlockMinEraseCount ldr r3, [sp, #16] cmp r0, r6 it hi - strhi r7, [r4, #1052] -.L810: + strhi r7, [r4, #16] +.L768: cmp fp, r8 - bcs .L804 + bcs .L762 add r2, fp, #128 cmp r9, r2 - ble .L804 + ble .L762 add r2, fp, #256 cmp r2, r8 - bcc .L811 - ldr r2, [r4, #1048] + bcc .L769 + ldr r2, [r4, #12] add fp, fp, #768 cmp fp, r2 - bcs .L804 -.L811: - ldr r2, [r4, #816] + bcs .L762 +.L769: + ldr r2, [r4, #-220] mov r1, r5 - ldr r0, .L820+12 + ldr r0, .L778+12 ldrh r2, [r2, r3] str r2, [sp] mov r2, r8 ldrh r3, [r10, r3] str r9, [sp, #8] str r3, [sp, #4] - ldr r3, [r4, #1048] + ldr r3, [r4, #12] bl printk mov r0, r5 movs r3, #1 - str r3, [r4, #1648] -.L803: + str r3, [r4, #616] +.L761: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L821: +.L779: .align 2 -.L820: +.L778: .word .LANCHOR2 .word .LANCHOR0 .word -1431655765 - .word .LC79 + .word .LC78 .fnend .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 1 @@ -5855,18 +5651,18 @@ free_data_superblock: cmp r0, r2 push {r3, lr} .save {r3, lr} - beq .L823 - ldr r2, .L824 + beq .L781 + ldr r2, .L782 movs r1, #0 - ldr r2, [r2, #816] + ldr r2, [r2, #-220] strh r1, [r2, r0, lsl #1] @ movhi bl INSERT_FREE_LIST -.L823: +.L781: movs r0, #0 pop {r3, pc} -.L825: +.L783: .align 2 -.L824: +.L782: .word .LANCHOR2 .fnend .size free_data_superblock, .-free_data_superblock @@ -5879,9 +5675,9 @@ FtlGcBufInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L837 + ldr r2, .L795 mov ip, #36 - ldr r0, .L837+4 + ldr r0, .L795+4 movs r3, #0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} @@ -5889,68 +5685,68 @@ FtlGcBufInit: mov lr, #1 mov r6, r0 mov r4, r2 - str r3, [r2, #1652] -.L827: - ldrh r1, [r0, #2840] + str r3, [r2, #620] +.L785: + ldrh r1, [r0, #1804] adds r5, r3, #1 uxth r3, r3 - ldr r8, .L837+4 + ldr r8, .L795+4 cmp r3, r1 - bcs .L835 + bcs .L793 mul r8, r7, r3 - ldr r9, [r2, #1656] + ldr r9, [r2, #624] add r1, r9, r8 str lr, [r1, #8] - ldrh r1, [r0, #2920] + ldrh r1, [r0, #1882] muls r1, r3, r1 it mi addmi r1, r1, #3 bic r10, r1, #3 - ldr r1, [r4, #1660] + ldr r1, [r4, #628] add r1, r1, r10 str r1, [r9, r8] - ldr r10, [r2, #1656] - ldrh r1, [r6, #2922] + ldr r10, [r2, #624] + ldrh r1, [r6, #1884] muls r1, r3, r1 it mi addmi r1, r1, #3 add r9, r10, r8 bic fp, r1, #3 - ldr r1, [r4, #1664] + ldr r1, [r4, #632] add r1, r1, fp str r1, [r9, #4] - ldr r1, [r2, #1668] + ldr r1, [r2, #636] 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 .L827 -.L835: - ldr r0, .L837 + b .L785 +.L793: + ldr r0, .L795 mov lr, #12 movs r5, #0 -.L831: - ldr r3, [r2, #1672] +.L789: + ldr r3, [r2, #640] cmp r1, r3 - bcs .L836 + bcs .L794 mul r7, lr, r1 - ldr r6, [r0, #1656] - ldr r4, [r0, #1660] + ldr r6, [r0, #624] + ldr r4, [r0, #628] adds r3, r6, r7 str r5, [r3, #8] - ldrh r3, [r8, #2920] + ldrh r3, [r8, #1882] 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, #1656] - ldr r6, [r0, #1664] + ldr r3, [r2, #624] + ldr r6, [r0, #632] add r7, r7, r3 - ldrh r3, [r8, #2922] + ldrh r3, [r8, #1884] muls r3, r1, r3 add r1, r1, #1 it mi @@ -5959,12 +5755,12 @@ FtlGcBufInit: uxth r1, r1 add r3, r3, r6 str r3, [r7, #4] - b .L831 -.L836: + b .L789 +.L794: pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L838: +.L796: .align 2 -.L837: +.L795: .word .LANCHOR2 .word .LANCHOR0 .fnend @@ -5978,41 +5774,41 @@ FtlGcBufFree: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L846 + ldr r3, .L804 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r5, #0 - ldr lr, [r3, #1672] + ldr lr, [r3, #640] mov r10, #36 - ldr r6, [r3, #1656] + ldr r6, [r3, #624] mov r8, #12 mov ip, r5 -.L840: +.L798: uxth r4, r5 cmp r4, r1 - bcs .L839 + bcs .L797 mla r4, r10, r4, r0 movs r2, #0 -.L841: +.L799: uxth r3, r2 cmp r3, lr - bcs .L842 + bcs .L800 mul r3, r8, r3 ldr r7, [r4, #8] adds r2, r2, #1 add r9, r6, r3 ldr r3, [r6, r3] cmp r3, r7 - bne .L841 + bne .L799 str ip, [r9, #8] -.L842: +.L800: adds r5, r5, #1 - b .L840 -.L839: + b .L798 +.L797: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L847: +.L805: .align 2 -.L846: +.L804: .word .LANCHOR2 .fnend .size FtlGcBufFree, .-FtlGcBufFree @@ -6025,43 +5821,43 @@ FtlGcBufAlloc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L856 + ldr r3, .L814 mov ip, #1 push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} movs r4, #0 - ldr r5, [r3, #1672] + ldr r5, [r3, #640] mov lr, #12 - ldr r6, [r3, #1656] + ldr r6, [r3, #624] mov r8, #36 -.L849: +.L807: uxth r2, r4 cmp r2, r1 - bcs .L855 + bcs .L813 mov r9, #0 -.L850: +.L808: uxth r3, r9 cmp r3, r5 - bcs .L851 + bcs .L809 mla r3, lr, r3, r6 add r9, r9, #1 ldr r7, [r3, #8] cmp r7, #0 - bne .L850 + bne .L808 mla r2, r8, r2, r0 ldr r7, [r3] str ip, [r3, #8] str r7, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L851: +.L809: adds r4, r4, #1 - b .L849 -.L855: + b .L807 +.L813: pop {r4, r5, r6, r7, r8, r9, pc} -.L857: +.L815: .align 2 -.L856: +.L814: .word .LANCHOR2 .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc @@ -6075,24 +5871,24 @@ IsBlkInGcList: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L864 - ldr r3, [r2, #1676] - ldrh r2, [r2, #1680] + ldr r2, .L822 + ldr r3, [r2, #644] + ldrh r2, [r2, #648] add r2, r3, r2, lsl #1 -.L859: +.L817: cmp r3, r2 - beq .L863 + beq .L821 ldrh r1, [r3], #2 cmp r1, r0 - bne .L859 + bne .L817 movs r0, #1 bx lr -.L863: +.L821: movs r0, #0 bx lr -.L865: +.L823: .align 2 -.L864: +.L822: .word .LANCHOR2 .fnend .size IsBlkInGcList, .-IsBlkInGcList @@ -6112,42 +5908,42 @@ FtlGcUpdatePage: mov r7, r1 mov r8, r2 bl P2V_block_in_plane - ldr r3, .L873 + ldr r3, .L831 movs r4, #0 - ldrh r1, [r3, #1680] - ldr r2, [r3, #1676] -.L867: + ldrh r1, [r3, #648] + ldr r2, [r3, #644] +.L825: uxth r5, r4 cmp r5, r1 - bcs .L871 + bcs .L829 adds r4, r4, #1 add lr, r2, r4, lsl #1 ldrh lr, [lr, #-2] cmp lr, r0 - bne .L867 -.L871: + bne .L825 +.L829: cmp r5, r1 - bne .L869 + bne .L827 strh r0, [r2, r5, lsl #1] @ movhi - ldrh r0, [r3, #1680] + ldrh r0, [r3, #648] adds r0, r0, #1 - strh r0, [r3, #1680] @ movhi -.L869: - ldrh r2, [r3, #1688] + strh r0, [r3, #648] @ movhi +.L827: + ldrh r2, [r3, #656] movs r0, #12 muls r0, r2, r0 - ldr r2, [r3, #1684] + ldr r2, [r3, #652] adds r1, r2, r0 str r7, [r1, #4] str r8, [r1, #8] str r6, [r2, r0] - ldrh r2, [r3, #1688] + ldrh r2, [r3, #656] adds r2, r2, #1 - strh r2, [r3, #1688] @ movhi + strh r2, [r3, #656] @ movhi pop {r4, r5, r6, r7, r8, pc} -.L874: +.L832: .align 2 -.L873: +.L831: .word .LANCHOR2 .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage @@ -6160,36 +5956,56 @@ FtlGcRefreshOpenBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r4, r0 - mov r1, r4 - ldr r0, .L878 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r5, r0 + ldr r4, .L840 + ldrh r3, [r4, #658] + cmp r3, r0 + beq .L835 + ldrh r3, [r4, #660] + cmp r3, r0 + beq .L835 + ldrh r3, [r4, #662] + cmp r3, r0 + beq .L835 + ldrh r3, [r4, #664] + cmp r3, r0 + beq .L835 + ldr r0, .L840+4 + mov r1, r5 bl printk - ldr r3, .L878+4 - ldrh r0, [r3, #1690] - cmp r0, r4 - beq .L876 - ldrh r1, [r3, #1692] - cmp r1, r4 - beq .L876 - movw r2, #65535 - cmp r0, r2 - bne .L877 - strh r4, [r3, #1690] @ movhi - b .L876 -.L877: - cmp r1, r2 + ldrh r2, [r4, #658] + movw r3, #65535 + cmp r2, r3 + bne .L837 + strh r5, [r4, #658] @ movhi + b .L835 +.L837: + ldrh r2, [r4, #660] + cmp r2, r3 + bne .L838 + strh r5, [r4, #660] @ movhi + b .L835 +.L838: + ldrh r2, [r4, #662] + cmp r2, r3 + bne .L839 + strh r5, [r4, #662] @ movhi + b .L835 +.L839: + ldrh r2, [r4, #664] + cmp r2, r3 it eq - strheq r4, [r3, #1692] @ movhi -.L876: + strheq r5, [r4, #664] @ movhi +.L835: movs r0, #0 - pop {r4, pc} -.L879: + pop {r3, r4, r5, pc} +.L841: .align 2 -.L878: - .word .LC80 +.L840: .word .LANCHOR2 + .word .LC79 .fnend .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 1 @@ -6201,36 +6017,59 @@ FtlGcRefreshBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r4, r0 - mov r1, r4 - ldr r0, .L883 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r5, r0 + ldr r4, .L852 + ldrh r3, [r4, #658] + cmp r3, r0 + beq .L850 + ldrh r3, [r4, #660] + cmp r3, r0 + beq .L850 + ldrh r3, [r4, #662] + cmp r3, r0 + beq .L850 + ldrh r3, [r4, #664] + cmp r3, r0 + beq .L850 + ldr r0, .L852+4 + mov r1, r5 bl printk - ldr r3, .L883+4 - ldrh r0, [r3, #1690] - cmp r0, r4 - beq .L881 - ldrh r1, [r3, #1692] - cmp r1, r4 - beq .L881 - movw r2, #65535 - cmp r0, r2 - bne .L882 - strh r4, [r3, #1690] @ movhi - b .L881 -.L882: - cmp r1, r2 - it eq - strheq r4, [r3, #1692] @ movhi -.L881: + ldrh r2, [r4, #658] + movw r3, #65535 + cmp r2, r3 + bne .L844 + strh r5, [r4, #658] @ movhi + b .L850 +.L844: + ldrh r2, [r4, #660] + cmp r2, r3 + bne .L845 + strh r5, [r4, #660] @ movhi + b .L850 +.L845: + ldrh r2, [r4, #662] + cmp r2, r3 + bne .L846 + strh r5, [r4, #662] @ movhi + b .L850 +.L846: + ldrh r2, [r4, #664] + cmp r2, r3 + bne .L851 + strh r5, [r4, #664] @ movhi +.L850: movs r0, #0 - pop {r4, pc} -.L884: + pop {r3, r4, r5, pc} +.L851: + mov r0, #-1 + pop {r3, r4, r5, pc} +.L853: .align 2 -.L883: - .word .LC80 +.L852: .word .LANCHOR2 + .word .LC79 .fnend .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 1 @@ -6244,57 +6083,57 @@ FtlGcMarkBadPhyBlk: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - mov r5, r0 + mov r4, r0 bl P2V_block_in_plane - ldr r4, .L894 - mov r2, r5 - ldrh r1, [r4, #1694] - mov r6, r0 - ldr r0, .L894+4 + ldr r6, .L863 + mov r2, r4 + ldrh r1, [r6, #666] + mov r5, r0 + ldr r0, .L863+4 bl printk - mov r0, r6 + mov r0, r5 bl FtlGcRefreshBlock - ldr r3, .L894+8 - ldr r2, [r3, #2832] - mov r3, r4 - cbz r2, .L886 - ldr r1, [r4, #752] - ldrh r2, [r1, r6, lsl #1] - cmp r2, #29 + ldr r2, .L863+8 + mov r3, r6 + ldr r1, [r2, #1796] + cbz r1, .L855 + ldr r1, [r2, #4060] + ldrh r2, [r1, r5, lsl #1] + cmp r2, #39 itt hi - subhi r2, r2, #30 - strhhi r2, [r1, r6, lsl #1] @ movhi -.L886: - ldrh r2, [r3, #1694] + subhi r2, r2, #40 + strhhi r2, [r1, r5, lsl #1] @ movhi +.L855: + ldrh r2, [r3, #666] movs r1, #0 - ldr r4, .L894+12 -.L887: + ldr r5, .L863+12 +.L856: uxth r0, r1 cmp r0, r2 - bcs .L893 + bcs .L862 adds r1, r1, #1 - add r0, r4, r1, lsl #1 + add r0, r5, r1, lsl #1 ldrh r0, [r0, #-2] - cmp r0, r5 - bne .L887 - b .L888 -.L893: + cmp r0, r4 + bne .L856 + b .L857 +.L862: cmp r2, #15 itttt ls addls r1, r2, #1 - strhls r1, [r3, #1694] @ movhi + strhls r1, [r3, #666] @ movhi addls r3, r3, r2, lsl #1 - strhls r5, [r3, #1696] @ movhi -.L888: + strhls r4, [r3, #668] @ movhi +.L857: movs r0, #0 pop {r4, r5, r6, pc} -.L895: +.L864: .align 2 -.L894: +.L863: .word .LANCHOR2 - .word .LC81 + .word .LC80 .word .LANCHOR0 - .word .LANCHOR2+1696 + .word .LANCHOR2+668 .fnend .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 1 @@ -6308,32 +6147,32 @@ FtlGcReFreshBadBlk: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} .save {r4, lr} - ldr r4, .L902 - ldrh r3, [r4, #1694] - cbz r3, .L897 - ldrh r1, [r4, #1690] + ldr r4, .L871 + ldrh r3, [r4, #666] + cbz r3, .L866 + ldrh r1, [r4, #658] movw r2, #65535 cmp r1, r2 - bne .L897 - ldrh r2, [r4, #1730] + bne .L866 + ldrh r2, [r4, #702] cmp r2, r3 itt cs movcs r3, #0 - strhcs r3, [r4, #1730] @ movhi - ldrh r3, [r4, #1730] + strhcs r3, [r4, #702] @ movhi + ldrh r3, [r4, #702] add r3, r4, r3, lsl #1 - ldrh r0, [r3, #1696] + ldrh r0, [r3, #668] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh r3, [r4, #1730] + ldrh r3, [r4, #702] adds r3, r3, #1 - strh r3, [r4, #1730] @ movhi -.L897: + strh r3, [r4, #702] @ movhi +.L866: movs r0, #0 pop {r4, pc} -.L903: +.L872: .align 2 -.L902: +.L871: .word .LANCHOR2 .fnend .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk @@ -6346,17 +6185,380 @@ ftl_memset: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - mov r4, r0 - cbz r2, .L905 - bl memset -.L905: - mov r0, r4 - pop {r4, pc} + @ link register save eliminated. + b memset .fnend .size ftl_memset, .-ftl_memset .align 1 + .global BuildFlashLsbPageTable + .thumb + .thumb_func + .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} + mov r4, r1 + cbnz r0, .L875 + ldr r3, .L904 +.L876: + strh r0, [r3, r0, lsl #1] @ movhi + adds r0, r0, #1 + cmp r0, #256 + bne .L876 +.L880: + movs r1, #255 + ldr r0, .L904+4 + mov r2, #1024 + uxth r4, r4 + bl ftl_memset + movs r3, #0 + ldr r1, .L904 + ldr r0, .L904+8 + b .L877 +.L875: + cmp r0, #1 + bne .L878 + ldr r5, .L904 + movs r3, #0 +.L879: + uxth r2, r3 + cmp r2, #3 + ite ls + movls r0, #0 + movhi r0, #1 + bics r1, r0, r3 + 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 + adds r3, r3, #1 + cmp r3, #256 + bne .L879 + b .L880 +.L878: + cmp r0, #2 + bne .L881 + ldr r0, .L904 + movs r3, #0 +.L882: + uxth r2, r3 + lsls r1, r2, #1 + subs r1, r1, #1 + cmp r2, #1 + it hi + movhi r2, r1 + strh r2, [r0, r3, lsl #1] @ movhi + adds r3, r3, #1 + cmp r3, #256 + bne .L882 + b .L880 +.L881: + cmp r0, #3 + bne .L883 + ldr r5, .L904 + movs r3, #0 +.L884: + uxth r2, r3 + cmp r2, #5 + ite ls + movls r0, #0 + movhi r0, #1 + bics r1, r0, r3 + 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 + adds r3, r3, #1 + cmp r3, #256 + bne .L884 + b .L880 +.L883: + cmp r0, #4 + mov r3, #0 + bne .L885 + ldr r2, .L904+12 + strh r3, [r2, #144] @ movhi + movs r3, #1 + strh r0, [r2, #152] @ movhi + strh r3, [r2, #146] @ movhi + movs r3, #2 + strh r3, [r2, #148] @ movhi + movs r3, #3 + strh r3, [r2, #150] @ movhi + movs r3, #5 + strh r3, [r2, #154] @ movhi + movs r3, #7 + strh r3, [r2, #156] @ movhi + movs r3, #8 + strh r3, [r2, #158]! @ movhi +.L886: + 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 + cmp r3, #256 + bne .L886 + b .L880 +.L885: + cmp r0, #5 + bne .L887 + ldr r2, .L904 +.L888: + strh r3, [r2, r3, lsl #1] @ movhi + adds r3, r3, #1 + cmp r3, #16 + bne .L888 + ldr r2, .L904+16 +.L889: + strh r3, [r2, #2]! @ movhi + adds r3, r3, #2 + uxth r3, r3 + cmp r3, #496 + bne .L889 + b .L880 +.L887: + cmp r0, #6 + bne .L890 + ldr r5, .L904 +.L891: + uxth r2, r3 + cmp r2, #5 + ite ls + movls r0, #0 + movhi r0, #1 + add r1, r2, r2, lsl #1 + bics r6, r0, r3 + 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, #256 + bne .L891 + b .L880 +.L890: + cmp r0, #9 + bne .L880 + ldr r2, .L904+12 + movw r1, #509 + strh r3, [r2, #144] @ movhi + movs r3, #1 + strh r3, [r2, #146] @ movhi + movs r3, #2 + strh r3, [r2, #148]! @ movhi + movs r3, #3 +.L892: + strh r3, [r2, #2]! @ movhi + adds r3, r3, #2 + uxth r3, r3 + cmp r3, r1 + bne .L892 + b .L880 +.L877: + uxth r2, r3 + cmp r2, r4 + bcs .L903 + ldrh r2, [r1, r3, lsl #1] + adds r3, r3, #1 + add r5, r0, r2, lsl #1 + strh r2, [r5, #704] @ movhi + b .L877 +.L903: + pop {r4, r5, r6, pc} +.L905: + .align 2 +.L904: + .word .LANCHOR0+144 + .word .LANCHOR2+704 + .word .LANCHOR2 + .word .LANCHOR0 + .word .LANCHOR0+174 + .fnend + .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable + .align 1 + .global FlashDieInfoInit + .thumb + .thumb_func + .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} + movs r7, #0 + ldr r3, .L920 + ldr r4, .L920+4 + ldr r6, .L920+8 + ldrh r0, [r3, #482] + addw fp, r4, #1556 + strb r7, [r4, #1717] + mov r9, r4 + strb r7, [r6, #1728] + bl FlashBlockAlignInit + mov r1, r7 + movs r2, #8 + add r0, r4, #1720 + bl ftl_memset + mov r1, r7 + movs r2, #32 + add r0, r4, #656 + bl ftl_memset + addw r0, r4, #1588 + mov r1, r7 + movs r2, #128 + bl ftl_memset + ldr r5, [r4, #692] + add r8, r5, #1 +.L908: + mov r0, r8 + add r1, fp, r7, lsl #3 + ldrb r2, [r5] @ zero_extendqisi2 + bl FlashMemCmp8 + ldr r10, .L920+12 + cbnz r0, .L907 + ldrb r3, [r9, #1717] @ zero_extendqisi2 + add r2, r9, r3, lsl #2 + str r0, [r2, #656] + adds r2, r3, #1 + add r3, r3, r9 + strb r2, [r9, #1717] + strb r7, [r3, #1720] +.L907: + adds r7, r7, #1 + cmp r7, #4 + bne .L908 + ldrb r3, [r4, #1717] @ zero_extendqisi2 + ldr r2, .L920+4 + strb r3, [r6, #1728] + ldrb r3, [r5, #8] @ zero_extendqisi2 + cmp r3, #2 + beq .L909 +.L913: + ldrb r3, [r5, #13] @ zero_extendqisi2 + ldrb r2, [r4, #1717] @ zero_extendqisi2 + smulbb r2, r2, r3 + ldrh r3, [r5, #14] + smulbb r3, r2, r3 + strh r3, [r6, #1730] @ movhi + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L909: + ldr r9, [r2, #4] + movs r7, #0 + mov fp, r2 +.L912: + mov r0, r8 + add r1, r10, r7, lsl #3 + ldrb r2, [r5] @ zero_extendqisi2 + bl FlashMemCmp8 + cbnz r0, .L910 + ldrb r0, [r5, #13] @ zero_extendqisi2 + ldrh r3, [r5, #14] + ldrb r2, [fp, #1717] @ zero_extendqisi2 + mul r0, r9, r0 + and r3, r3, #65280 + add r1, fp, r2, lsl #2 + muls r3, r0, r3 + str r3, [r1, #656] + ldrb r0, [r5, #23] @ zero_extendqisi2 + cbz r0, .L911 + lsls r3, r3, #1 + str r3, [r1, #656] +.L911: + adds r3, r2, #1 + add r2, r2, r4 + strb r3, [r4, #1717] + strb r7, [r2, #1720] +.L910: + adds r7, r7, #1 + cmp r7, #4 + bne .L912 + b .L913 +.L921: + .align 2 +.L920: + .word .LANCHOR1 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+1556 + .fnend + .size FlashDieInfoInit, .-FlashDieInfoInit + .align 1 + .global ftl_read_flash_info + .thumb + .thumb_func + .type ftl_read_flash_info, %function +ftl_read_flash_info: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movs r1, #0 + movs r2, #11 + mov r4, r0 + bl ftl_memset + ldr r3, .L926 + movs r5, #1 + ldr r2, [r3, #692] + ldrb r1, [r2, #9] @ zero_extendqisi2 + ldr r2, [r3, #4] + smulbb r2, r1, r2 + strh r2, [r4, #4] @ unaligned + ldrb r2, [r3, #1792] @ zero_extendqisi2 + strb r2, [r4, #7] + ldr r2, [r3, #1912] + str r2, [r4] @ unaligned + ldr r2, [r3, #692] + add r3, r3, #1720 + ldrb r0, [r3, #-3] @ zero_extendqisi2 + ldrb r1, [r2, #9] @ zero_extendqisi2 + strb r1, [r4, #6] + movs r1, #32 + strb r1, [r4, #8] + ldrb r2, [r2, #7] @ zero_extendqisi2 + strb r2, [r4, #9] + movs r2, #0 + strb r2, [r4, #10] +.L923: + uxtb r1, r2 + cmp r1, r0 + bcs .L925 + ldrb r1, [r2, r3] @ zero_extendqisi2 + adds r2, r2, #1 + lsl r6, r5, r1 + ldrb r1, [r4, #10] @ zero_extendqisi2 + orrs r1, r1, r6 + strb r1, [r4, #10] + b .L923 +.L925: + pop {r4, r5, r6, pc} +.L927: + .align 2 +.L926: + .word .LANCHOR0 + .fnend + .size ftl_read_flash_info, .-ftl_read_flash_info + .align 1 .global FtlMemInit .thumb .thumb_func @@ -6368,64 +6570,66 @@ FtlMemInit: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r0, #1024 - ldr r4, .L1013 + ldr r4, .L1032 movs r6, #0 - ldr r5, .L1013+4 + ldr r5, .L1032+4 movw r3, #65535 movs r7, #12 mov r8, #36 strh r6, [r4, #1732] @ movhi - ldrh r1, [r5, #2916] str r6, [r4, #1736] - str r6, [r4, #1120] - str r6, [r4, #1028] - str r6, [r4, #1032] - str r6, [r4, #1016] - str r6, [r4, #1004] - str r6, [r4, #1000] - str r6, [r4, #1008] - str r6, [r4, #1012] - str r6, [r4, #996] - str r6, [r4, #1036] - str r6, [r4, #1040] - str r6, [r4, #756] - str r6, [r4, #1048] - str r6, [r4, #1052] + str r6, [r4, #88] + str r6, [r4, #-8] + str r6, [r4, #-4] + str r6, [r4, #-20] + str r6, [r4, #-32] + str r6, [r4, #-36] + str r6, [r4, #-28] + str r6, [r4, #-24] + str r6, [r4, #-40] + str r6, [r4] + str r6, [r4, #4] + str r6, [r5, #4064] + str r6, [r4, #12] + str r6, [r4, #16] str r6, [r4, #1740] - str r6, [r4, #1648] + str r6, [r4, #616] str r3, [r4, #1744] str r6, [r4, #1748] - str r6, [r4, #1640] + str r6, [r4, #608] str r6, [r4, #1752] - strh r3, [r4, #1690] @ movhi - strh r3, [r4, #1692] @ movhi + strh r3, [r4, #658] @ movhi + strh r3, [r4, #660] @ movhi + strh r3, [r4, #662] @ movhi + strh r3, [r4, #664] @ movhi movs r3, #32 - strh r6, [r4, #1644] @ movhi - strh r3, [r4, #1636] @ movhi + strh r6, [r4, #612] @ movhi + strh r3, [r4, #604] @ movhi movs r3, #128 - strh r6, [r4, #1694] @ movhi - strh r3, [r4, #1638] @ movhi + strh r6, [r4, #666] @ movhi + strh r3, [r4, #606] @ movhi strh r6, [r4, #1756] @ movhi - strh r6, [r4, #1730] @ movhi + strh r6, [r4, #702] @ movhi + ldrh r1, [r5, #1878] bl __aeabi_idiv - ldrh r3, [r5, #2840] - str r6, [r5, #2960] + ldrh r3, [r5, #1804] + str r6, [r5, #1924] lsls r3, r3, #2 cmp r0, r3 str r0, [r4, #1760] - ldrh r0, [r5, #2914] + ldrh r0, [r5, #1876] it hi strhi r3, [r4, #1760] lsls r0, r0, #1 bl ftl_malloc - str r0, [r4, #1676] - ldrh r0, [r5, #2914] + str r0, [r4, #644] + ldrh r0, [r5, #1876] muls r0, r7, r0 bl ftl_malloc - ldrh r6, [r5, #2840] + ldrh r6, [r5, #1804] mul r6, r8, r6 lsl r9, r6, #3 - str r0, [r4, #1684] + str r0, [r4, #652] mov r0, r9 bl ftl_malloc str r0, [r4, #1764] @@ -6437,19 +6641,19 @@ FtlMemInit: str r0, [r4, #1772] mov r0, r6 bl ftl_malloc - str r0, [r4, #748] + str r0, [r5, #4056] mov r0, r6 bl ftl_malloc - str r0, [r4, #1668] + str r0, [r4, #636] ldr r0, [r4, #1760] mul r0, r8, r0 bl ftl_malloc - ldrh r6, [r5, #2920] - ldrh r3, [r5, #2840] + ldrh r6, [r5, #1882] + ldrh r3, [r5, #1804] lsls r3, r3, #1 adds r3, r3, #1 - str r3, [r4, #1672] - str r0, [r5, #2964] + str r3, [r4, #640] + str r0, [r5, #1928] mov r0, r6 bl ftl_malloc str r0, [r4, #1776] @@ -6459,10 +6663,10 @@ FtlMemInit: mov r0, r6 bl ftl_malloc str r0, [r4, #1784] - ldr r0, [r4, #1672] + ldr r0, [r4, #640] muls r0, r6, r0 bl ftl_malloc - str r0, [r4, #1660] + str r0, [r4, #628] ldr r0, [r4, #1760] muls r0, r6, r0 bl ftl_malloc @@ -6473,30 +6677,30 @@ FtlMemInit: mov r0, r6 bl ftl_malloc str r0, [r4, #1796] - ldr r0, [r4, #1672] + ldr r0, [r4, #640] muls r0, r7, r0 bl ftl_malloc - ldrh r3, [r5, #2840] - ldrh r6, [r5, #2922] + ldrh r3, [r5, #1804] + ldrh r6, [r5, #1884] muls r6, r3, r6 - str r0, [r4, #1656] + str r0, [r4, #624] mov r0, r6 bl ftl_malloc str r0, [r4, #1800] lsls r0, r6, #3 bl ftl_malloc - ldrh r3, [r5, #2922] + ldrh r3, [r5, #1884] str r0, [r4, #1804] - ldr r0, [r4, #1672] + ldr r0, [r4, #640] muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2922] - str r0, [r4, #1664] + ldrh r3, [r5, #1884] + str r0, [r4, #632] ldr r0, [r4, #1760] muls r0, r3, r0 bl ftl_malloc str r0, [r4, #1808] - ldrh r0, [r5, #2850] + ldrh r0, [r5, #1814] lsls r0, r0, #1 uxth r0, r0 strh r0, [r4, #1812] @ movhi @@ -6508,232 +6712,232 @@ FtlMemInit: strh r0, [r4, #1812] @ movhi lsls r0, r0, #9 bl ftl_malloc - ldrh r6, [r5, #2850] + ldrh r6, [r5, #1814] lsls r6, r6, #1 str r0, [r4, #1820] adds r0, r0, #32 - str r0, [r4, #752] + str r0, [r5, #4060] mov r0, r6 bl ftl_malloc str r0, [r4, #1824] mov r0, r6 bl ftl_malloc - ldr r6, [r5, #2940] + ldr r6, [r5, #1900] lsls r6, r6, #1 - str r0, [r4, #816] + str r0, [r4, #-220] mov r0, r6 bl ftl_malloc str r0, [r4, #1828] mov r0, r6 bl ftl_malloc str r0, [r4, #1832] - ldrh r0, [r5, #2850] + ldrh r0, [r5, #1814] lsrs r0, r0, #3 adds r0, r0, #4 bl ftl_malloc - str r0, [r4, #992] - ldrh r0, [r5, #2932] + str r0, [r4, #-44] + ldrh r0, [r5, #1892] lsls r0, r0, #1 bl ftl_malloc - str r0, [r5, #2956] - ldrh r0, [r5, #2932] + str r0, [r5, #1920] + ldrh r0, [r5, #1892] lsls r0, r0, #1 bl ftl_malloc str r0, [r4, #1836] - ldrh r0, [r5, #2932] + ldrh r0, [r5, #1892] lsls r0, r0, #2 bl ftl_malloc str r0, [r4, #1840] - ldrh r0, [r5, #2934] + ldrh r0, [r5, #1894] lsls r0, r0, #2 bl ftl_malloc - ldrh r2, [r5, #2934] + ldrh r2, [r5, #1894] movs r1, #0 lsls r2, r2, #2 str r0, [r4, #1844] bl ftl_memset - ldrh r6, [r5, #2948] + ldrh r6, [r5, #1908] lsls r6, r6, #2 mov r0, r6 bl ftl_malloc str r0, [r4, #1848] mov r0, r6 bl ftl_malloc - ldr r6, .L1013+8 + ldr r6, .L1032+8 str r0, [r4, #1852] - ldr r0, [r5, #2940] + ldr r0, [r5, #1900] lsls r0, r0, #2 bl ftl_malloc str r0, [r4, #1856] - ldrh r0, [r5, #2950] + ldrh r0, [r5, #1910] muls r0, r7, r0 bl ftl_malloc - ldrh r3, [r5, #2950] - str r0, [r4, #980] - ldrh r0, [r5, #2920] + ldrh r3, [r5, #1910] + str r0, [r4, #-56] + ldrh r0, [r5, #1882] muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2850] + ldrh r3, [r5, #1814] str r0, [r4, #1860] movs r0, #6 muls r0, r3, r0 bl ftl_malloc - ldrh r3, [r5, #2906] + ldrh r3, [r5, #1870] adds r3, r3, #31 asrs r3, r3, #5 strh r3, [r4, #1864] @ movhi - str r0, [r4, #808] - ldrh r0, [r5, #2862] + str r0, [r4, #-228] + ldrh r0, [r5, #1826] muls r0, r3, r0 lsls r0, r0, #2 bl ftl_malloc ldrh r2, [r4, #1864] - ldrh r7, [r5, #2862] + ldrh r7, [r5, #1826] movs r3, #1 lsls r2, r2, #2 mov r1, r2 - str r0, [r5, #3000] -.L911: + str r0, [r5, #1964] +.L930: cmp r3, r7 - bcs .L1011 - ldr r0, [r5, #3000] + bcs .L1030 + ldr r0, [r5, #1964] adds r3, r3, #1 add r0, r0, r1 add r1, r1, r2 str r0, [r6, #4]! - b .L911 -.L1011: - ldr r2, .L1013+12 + b .L930 +.L1030: + ldr r2, .L1032+12 movs r1, #0 -.L913: +.L932: cmp r3, #8 - beq .L1012 + beq .L1031 add r0, r2, r3, lsl #2 adds r3, r3, #1 str r1, [r0, #28] - b .L913 -.L1012: + b .L932 +.L1031: ldr r2, [r4, #1828] - ldr r3, .L1013 - cbnz r2, .L915 -.L917: - ldr r1, .L1013+16 - ldr r0, .L1013+20 + ldr r3, .L1032 + cbnz r2, .L934 +.L936: + ldr r1, .L1032+16 + ldr r0, .L1032+20 bl printk mov r0, #-1 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1014: +.L1033: .align 2 -.L1013: +.L1032: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR0+3000 - .word .LANCHOR0+2972 + .word .LANCHOR0+1964 + .word .LANCHOR0+1936 .word .LANCHOR3 - .word .LC82 -.L915: + .word .LC81 +.L934: ldr r2, [r3, #1832] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1848] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1856] cmp r2, #0 - beq .L917 - ldr r2, [r3, #980] + beq .L936 + ldr r2, [r3, #-56] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1860] cmp r2, #0 - beq .L917 - ldr r2, [r3, #808] + beq .L936 + ldr r2, [r3, #-228] cmp r2, #0 - beq .L917 - ldr r2, [r5, #3000] + beq .L936 + ldr r2, [r5, #1964] cmp r2, #0 - beq .L917 - ldr r3, [r3, #816] + beq .L936 + ldr r3, [r3, #-220] cmp r3, #0 - beq .L917 - ldr r2, [r4, #1676] - ldr r3, .L1015 + beq .L936 + ldr r2, [r4, #644] + ldr r3, .L1034 cmp r2, #0 - beq .L917 - ldr r2, [r3, #1684] + beq .L936 + ldr r2, [r3, #652] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1764] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1772] cmp r2, #0 - beq .L917 - ldr r2, [r3, #748] + beq .L936 + ldr r2, [r5, #4056] cmp r2, #0 - beq .L917 - ldr r2, [r3, #1668] + beq .L936 + ldr r2, [r3, #636] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1768] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1776] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1780] cmp r2, #0 - beq .L917 + beq .L936 ldr r3, [r3, #1784] cmp r3, #0 - beq .L917 - ldr r2, [r4, #1660] - ldr r3, .L1015 + beq .L936 + ldr r2, [r4, #628] + ldr r3, .L1034 cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1792] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1796] cmp r2, #0 - beq .L917 - ldr r2, [r3, #1656] + beq .L936 + ldr r2, [r3, #624] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1800] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1804] cmp r2, #0 - beq .L917 - ldr r2, [r3, #1664] + beq .L936 + ldr r2, [r3, #632] cmp r2, #0 - beq .L917 - ldr r2, [r3, #752] - cmp r2, #0 - beq .L917 + beq .L936 + ldr r2, .L1034+4 + ldr r1, [r2, #4060] + cmp r1, #0 + beq .L936 ldr r3, [r3, #1816] cmp r3, #0 - beq .L917 - ldr r3, .L1015+4 - ldr r3, [r3, #2956] + beq .L936 + ldr r3, [r2, #1920] cmp r3, #0 - beq .L917 - ldr r3, .L1015 + beq .L936 + ldr r3, .L1034 ldr r2, [r3, #1836] cmp r2, #0 - beq .L917 + beq .L936 ldr r2, [r3, #1840] cmp r2, #0 - beq .L917 + beq .L936 ldr r3, [r3, #1844] cmp r3, #0 - beq .L917 + beq .L936 movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1016: +.L1035: .align 2 -.L1015: +.L1034: .word .LANCHOR2 .word .LANCHOR0 .fnend @@ -6750,7 +6954,7 @@ FtlBbt2Bitmap: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r4, r0 - ldr r3, .L1022 + ldr r3, .L1041 mov r0, r1 mov r5, r1 movs r1, #0 @@ -6761,10 +6965,10 @@ FtlBbt2Bitmap: bl ftl_memset subs r2, r4, #2 addw r4, r4, #1022 -.L1019: +.L1038: ldrh r3, [r2, #2]! cmp r3, r7 - beq .L1017 + beq .L1036 lsrs r1, r3, #5 cmp r2, r4 and r3, r3, #31 @@ -6772,108 +6976,169 @@ FtlBbt2Bitmap: lsl r3, r6, r3 orr r3, r3, r0 str r3, [r5, r1, lsl #2] - bne .L1019 -.L1017: + bne .L1038 +.L1036: pop {r3, r4, r5, r6, r7, pc} -.L1023: +.L1042: .align 2 -.L1022: +.L1041: .word .LANCHOR2 .fnend .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 1 + .global FtlBbtMemInit + .thumb + .thumb_func + .type FtlBbtMemInit, %function +FtlBbtMemInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + ldr r0, .L1044 + movw r3, #65535 + movs r1, #255 + movs r2, #16 + addw r0, r0, #1948 + strh r3, [r0, #-12] @ movhi + movs r3, #0 + strh r3, [r0, #-6] @ movhi + b ftl_memset +.L1045: + .align 2 +.L1044: + .word .LANCHOR0 + .fnend + .size FtlBbtMemInit, .-FtlBbtMemInit + .align 1 + .global FtlFreeSysBlkQueueInit + .thumb + .thumb_func + .type FtlFreeSysBlkQueueInit, %function +FtlFreeSysBlkQueueInit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L1047 + mov r2, #2048 + push {r4, lr} + .save {r4, lr} + movs r4, #0 + strh r0, [r3, #1996] @ movhi + addw r0, r3, #2004 + mov r1, r4 + strh r4, [r3, #1998] @ movhi + strh r4, [r3, #2000] @ movhi + strh r4, [r3, #2002] @ movhi + bl ftl_memset + mov r0, r4 + pop {r4, pc} +.L1048: + .align 2 +.L1047: + .word .LANCHOR0 + .fnend + .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit + .align 1 .global ftl_free_no_use_map_blk .thumb .thumb_func .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: .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 - mov r4, r0 - ldrh r2, [r0, #10] + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r1, #0 + ldrh r2, [r0, #10] + mov r4, r0 ldr r6, [r0, #20] - ldr r9, [r0, #12] + ldr r7, [r0, #12] ldr r5, [r0, #24] lsls r2, r2, #1 mov r0, r6 bl ftl_memset - movs r2, #0 -.L1025: - ldrh r1, [r4, #6] - uxth r3, r2 - cmp r1, r3 - bls .L1038 - ldr r0, [r5, r3, lsl #2] movs r1, #0 - ubfx r0, r0, #10, #16 -.L1026: - ldrh r7, [r4, #10] +.L1050: + ldrh r2, [r4, #6] uxth r3, r1 - cmp r7, r3 - bls .L1039 - ldrh r7, [r9, r3, lsl #1] + cmp r2, r3 + bls .L1069 + ldr r2, [r5, r3, lsl #2] + movs r0, #0 + ubfx r2, r2, #10, #16 +.L1051: + ldrh lr, [r4, #10] + uxth r3, r0 + cmp lr, r3 + bls .L1070 + ldrh lr, [r7, r3, lsl #1] + cmp lr, r2 + bne .L1052 + cbz r2, .L1052 + ldrh lr, [r6, r3, lsl #1] + add lr, lr, #1 + strh lr, [r6, r3, lsl #1] @ movhi +.L1052: + adds r0, r0, #1 + b .L1051 +.L1070: adds r1, r1, #1 - cmp r7, r0 - ittt eq - ldrheq r7, [r6, r3, lsl #1] - addeq r7, r7, #1 - strheq r7, [r6, r3, lsl #1] @ movhi - b .L1026 -.L1039: - adds r2, r2, #1 - b .L1025 -.L1038: - movs r7, #0 - ldrh fp, [r6] - ldr r2, .L1041 - mov r10, r7 -.L1030: - ldrh r3, [r4, #10] - uxth r5, r7 - cmp r3, r5 - bls .L1040 + b .L1050 +.L1069: + ldr r3, .L1073 + mov r8, #0 + mov r10, r8 + ldrh r2, [r3, #1874] ldrh r3, [r4] + strh r2, [r6, r3, lsl #1] @ movhi + mov r2, r8 + ldrh r9, [r6] +.L1055: + ldrh r3, [r4, #10] + uxth r5, r8 cmp r3, r5 - bne .L1031 - ldrh r3, [r2, #2912] - ldrh r1, [r4, #2] - cmp r1, r3 - it cc - strhcc r3, [r6, r5, lsl #1] @ movhi -.L1031: - ldrh r8, [r6, r5, lsl #1] - cmp fp, r8 - itt hi - movhi r10, r5 - movhi fp, r8 - cmp r8, #0 - bne .L1033 - ldrh r0, [r9, r5, lsl #1] - cbz r0, .L1033 + bls .L1071 + ldrh r3, [r6, r5, lsl #1] + lsls r1, r5, #1 + cmp r9, r3 + bls .L1056 + ldrh r0, [r7, r5, lsl #1] + add fp, r7, r1 + cbnz r0, .L1057 + b .L1058 +.L1056: + cbnz r3, .L1058 + ldrh r0, [r7, r1] + add fp, r7, r1 + cbz r0, .L1058 + mov r5, r2 + b .L1060 +.L1057: + cbnz r3, .L1072 + mov r9, r3 +.L1060: movs r1, #1 - str r2, [sp, #4] bl FtlFreeSysBlkQueueIn - ldr r2, [sp, #4] - strh r8, [r9, r5, lsl #1] @ movhi + strh r10, [fp] @ movhi ldrh r3, [r4, #8] + mov r2, r5 subs r3, r3, #1 strh r3, [r4, #8] @ movhi -.L1033: - adds r7, r7, #1 - b .L1030 -.L1040: - mov r0, r10 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1042: +.L1058: + add r8, r8, #1 + b .L1055 +.L1072: + mov r2, r5 + mov r9, r3 + b .L1058 +.L1071: + mov r0, r2 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1074: .align 2 -.L1041: +.L1073: .word .LANCHOR0 .fnend .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk @@ -6889,17 +7154,17 @@ FtlL2PDataInit: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} movs r1, #0 - ldr r4, .L1047 + ldr r4, .L1079 movs r7, #0 - ldr r5, .L1047+4 + ldr r5, .L1079+4 mov r6, r7 - ldr r2, [r4, #2940] + ldr r2, [r4, #1900] mov r9, r4 ldr r0, [r5, #1832] lsls r2, r2, #1 bl ftl_memset - ldrh r3, [r4, #2920] - ldrh r2, [r4, #2950] + ldrh r3, [r4, #1882] + ldrh r2, [r4, #1910] movs r1, #255 ldr r0, [r5, #1860] muls r2, r3, r2 @@ -6908,53 +7173,52 @@ FtlL2PDataInit: movs r5, #12 mov r2, r4 movw lr, #65535 -.L1044: - ldrh ip, [r2, #2950] +.L1076: + ldrh ip, [r2, #1910] adds r0, r7, #1 uxth r7, r7 - ldr r1, .L1047 + ldr r1, .L1079 cmp ip, r7 - bls .L1046 + bls .L1078 mul r1, r5, r7 - ldr ip, [r3, #980] + ldr ip, [r3, #-56] add r8, ip, r1 str r6, [r8, #4] strh lr, [ip, r1] @ movhi - ldr r4, [r3, #980] + ldr r4, [r3, #-56] add ip, r4, r1 - ldrh r1, [r9, #2920] + ldrh r1, [r9, #1882] muls r1, r7, r1 ldr r7, [r3, #1860] bic r1, r1, #3 add r1, r1, r7 mov r7, r0 str r1, [ip, #8] - b .L1044 -.L1046: - ldr r0, [r1, #2940] + b .L1076 +.L1078: movw r2, #65535 - ldrh r1, [r1, #2948] strh r2, [r3, #1870] @ movhi - strh r0, [r3, #1878] @ movhi - movw r0, #61634 - strh r1, [r3, #1874] @ movhi - ldr r1, [r3, #1828] - strh r0, [r3, #1872] @ movhi - ldrh r0, [r3, #1912] - str r1, [r3, #1880] - ldr r1, [r3, #1856] strh r2, [r3, #1868] @ movhi - strh r0, [r3, #1876] @ movhi - str r1, [r3, #1884] - ldr r1, [r3, #1832] - strh r2, [r3, #1908] @ movhi - str r1, [r3, #1888] - ldr r1, [r3, #1848] - str r1, [r3, #1892] + ldr r2, [r1, #1900] + strh r2, [r3, #1878] @ movhi + movw r2, #61634 + strh r2, [r3, #1872] @ movhi + ldrh r2, [r3, #1912] + strh r2, [r3, #1876] @ movhi + ldrh r2, [r1, #1908] + strh r2, [r3, #1874] @ movhi + ldr r2, [r3, #1828] + str r2, [r3, #1880] + ldr r2, [r3, #1856] + str r2, [r3, #1884] + ldr r2, [r3, #1832] + str r2, [r3, #1888] + ldr r2, [r3, #1848] + str r2, [r3, #1892] pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1048: +.L1080: .align 2 -.L1047: +.L1079: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -6971,45 +7235,47 @@ FtlVariablesInit: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r4, #0 - ldr r6, .L1050 + ldr r5, .L1082 movw r3, #65535 - ldr r5, .L1050+4 + ldr r6, .L1082+4 mov r1, r4 - ldrh r2, [r6, #2932] - ldr r0, [r6, #2956] - strh r3, [r5, #1920] @ movhi + ldrh r2, [r5, #1892] + ldr r0, [r5, #1920] + strh r3, [r6, #1920] @ movhi mov r3, #-1 lsls r2, r2, #1 - str r3, [r5, #1932] - str r4, [r5, #1916] - str r4, [r5, #1924] - str r4, [r5, #1928] - str r4, [r6, #2832] - strh r4, [r6, #2954] @ movhi + str r3, [r6, #1932] + str r4, [r6, #1916] + str r4, [r6, #1924] + str r4, [r6, #1928] + str r4, [r5, #1796] + strh r4, [r5, #1918] @ movhi bl ftl_memset - ldrh r2, [r6, #2850] + ldrh r2, [r5, #1814] mov r1, r4 - ldr r0, [r5, #752] + ldr r0, [r5, #4060] lsls r2, r2, #1 bl ftl_memset - ldrh r2, [r6, #2850] + ldrh r2, [r5, #1814] mov r1, r4 - ldr r0, [r5, #1816] + ldr r0, [r6, #1816] lsls r2, r2, #1 bl ftl_memset - add r0, r5, #760 - movs r1, #48 - bl __memzero - addw r0, r5, #1124 - mov r1, #512 - bl __memzero + mov r1, r4 + addw r0, r5, #4068 + movs r2, #48 + bl ftl_memset + mov r1, r4 + mov r2, #512 + add r0, r6, #92 + bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov r0, r4 pop {r4, r5, r6, pc} -.L1051: +.L1083: .align 2 -.L1050: +.L1082: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -7026,110 +7292,110 @@ SupperBlkListInit: 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, .L1063 + ldr r6, .L1095 movs r5, #0 - ldr r4, .L1063+4 + ldr r4, .L1095+4 .pad #20 sub sp, sp, #20 movs r1, #0 mov r9, r5 - ldrh r3, [r6, #2850] + ldrh r3, [r6, #1814] mov r10, r5 - ldr r0, [r4, #808] + ldr r0, [r4, #-228] mov r8, r6 muls r2, r3, r2 bl ftl_memset - str r5, [r4, #828] - str r5, [r4, #812] - str r5, [r4, #820] - strh r5, [r4, #824] @ movhi - strh r5, [r4, #832] @ movhi + str r5, [r4, #-208] + str r5, [r4, #-224] + str r5, [r4, #-216] + strh r5, [r4, #-212] @ movhi + strh r5, [r4, #-204] @ movhi strh r5, [r4, #1732] @ movhi -.L1053: +.L1085: uxth fp, r5 - ldrh r2, [r8, #2848] + ldrh r2, [r8, #1812] sxth r7, fp cmp r7, r2 - bge .L1060 - ldr r3, .L1063 + bge .L1092 + ldr r3, .L1095 movs r2, #0 mov r6, r2 - ldrh ip, [r3, #2840] - ldrh r3, [r3, #2910] + ldrh ip, [r3, #1804] + ldrh r3, [r3, #1872] str r3, [sp, #4] -.L1061: +.L1093: sxth r1, r2 cmp r1, ip - bge .L1062 + bge .L1094 add r1, r1, r8 str r2, [sp, #12] str ip, [sp, #8] - ldrb r0, [r1, #2868] @ zero_extendqisi2 + ldrb r0, [r1, #1832] @ zero_extendqisi2 mov r1, fp bl V2P_block bl FtlBbmIsBadBlock ldr ip, [sp, #8] ldr r2, [sp, #12] - cbnz r0, .L1054 + cbnz r0, .L1086 ldr r3, [sp, #4] add r6, r6, r3 uxth r6, r6 -.L1054: +.L1086: adds r2, r2, #1 - b .L1061 -.L1062: - cbz r6, .L1056 + b .L1093 +.L1094: + cbz r6, .L1088 sxth r1, r6 mov r0, #32768 bl __aeabi_idiv uxth r6, r0 - b .L1057 -.L1056: - ldr r1, [r4, #816] + b .L1089 +.L1088: + ldr r1, [r4, #-220] sxth r2, fp movw r0, #65535 strh r0, [r1, r2, lsl #1] @ movhi -.L1057: +.L1089: add r0, r7, r7, lsl #1 - ldr r1, [r4, #808] - ldr r2, .L1063+4 + ldr r1, [r4, #-228] + ldr r2, .L1095+4 add r1, r1, r0, lsl #1 strh r6, [r1, #4] @ movhi - ldrh r1, [r4, #836] + ldrh r1, [r4, #-200] cmp r7, r1 - beq .L1058 - ldrh r1, [r2, #884] + beq .L1090 + ldrh r1, [r2, #-152] cmp r7, r1 - beq .L1058 - ldrh r1, [r2, #932] + beq .L1090 + ldrh r1, [r2, #-104] cmp r7, r1 - beq .L1058 - ldr r2, [r2, #816] + beq .L1090 + ldr r2, [r2, #-220] ldrh r2, [r2, r7, lsl #1] - cbnz r2, .L1059 + cbnz r2, .L1091 add r9, r9, #1 mov r0, fp uxth r9, r9 bl INSERT_FREE_LIST - b .L1058 -.L1059: + b .L1090 +.L1091: add r10, r10, #1 mov r0, fp uxth r10, r10 bl INSERT_DATA_LIST -.L1058: +.L1090: adds r5, r5, #1 - b .L1053 -.L1060: + b .L1085 +.L1092: movs r0, #0 - strh r10, [r4, #824] @ movhi - strh r9, [r4, #832] @ movhi + strh r10, [r4, #-212] @ movhi + strh r9, [r4, #-204] @ movhi add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1064: +.L1096: .align 2 -.L1063: +.L1095: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -7146,26 +7412,26 @@ FtlGcPageVarInit: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r1, #255 - ldr r5, .L1066 + ldr r5, .L1098 movs r3, #0 - ldr r4, .L1066+4 - ldrh r2, [r5, #2914] - ldr r0, [r4, #1676] - strh r3, [r4, #1680] @ movhi + ldr r4, .L1098+4 + ldrh r2, [r5, #1876] + ldr r0, [r4, #644] + strh r3, [r4, #648] @ movhi lsls r2, r2, #1 - strh r3, [r4, #1688] @ movhi + strh r3, [r4, #656] @ movhi bl ftl_memset - ldrh r3, [r5, #2914] + ldrh r3, [r5, #1876] movs r2, #12 - ldr r0, [r4, #1684] + ldr r0, [r4, #652] movs r1, #255 muls r2, r3, r2 bl ftl_memset pop {r3, r4, r5, lr} b FtlGcBufInit -.L1067: +.L1099: .align 2 -.L1066: +.L1098: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -7195,13 +7461,13 @@ FlashReadIdbData: push {r3, lr} .save {r3, lr} mov r2, #2048 - ldr r1, .L1070 + ldr r1, .L1102 bl ftl_memcpy movs r0, #0 pop {r3, pc} -.L1071: +.L1103: .align 2 -.L1070: +.L1102: .word .LANCHOR2+1936 .fnend .size FlashReadIdbData, .-FlashReadIdbData @@ -7214,67 +7480,69 @@ FlashLoadPhyInfoInRam: .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, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} movs r4, #0 - ldr r6, .L1084 -.L1076: - mov r0, r6 - ldr r1, .L1084+4 - ldrb r2, [r6, #-1] @ zero_extendqisi2 - bl FlashMemCmp8 - mov r5, r0 - cbnz r0, .L1073 - ldr r3, .L1084+8 - lsls r4, r4, #5 - add r2, r3, #508 - adds r6, r2, r4 - beq .L1079 - add r4, r4, r3 - addw r3, r3, #2876 - ldrb r2, [r4, #530] @ zero_extendqisi2 - mov r4, r0 - b .L1078 -.L1073: - adds r4, r4, #1 - adds r6, r6, #32 - cmp r4, #74 - bne .L1076 - b .L1079 -.L1083: - adds r4, r4, #1 - cmp r4, #4 - beq .L1077 -.L1078: - lsls r1, r4, #5 - ldrb r1, [r1, r3] @ zero_extendqisi2 - cmp r1, r2 - bne .L1083 -.L1077: - ldr r1, .L1084+12 - movs r2, #32 - ldr r0, .L1084+16 - add r1, r1, r4, lsl #5 - bl ftl_memcpy - mov r1, r6 - movs r2, #32 - ldr r0, .L1084+20 - bl ftl_memcpy - b .L1074 -.L1079: - mov r5, #-1 -.L1074: + ldr r5, .L1116 +.L1108: mov r0, r5 - pop {r4, r5, r6, pc} -.L1085: + ldr r1, .L1116+4 + ldrb r2, [r5, #-1] @ zero_extendqisi2 + bl FlashMemCmp8 + mov r6, r0 + cbnz r0, .L1105 + ldr r5, .L1116+8 + lsls r4, r4, #5 + add r2, r5, #508 + adds r7, r2, r4 + beq .L1111 + add r4, r4, r5 + mov r3, r0 + addw r1, r5, #3100 + ldrb r2, [r4, #530] @ zero_extendqisi2 + b .L1110 +.L1105: + adds r4, r4, #1 + adds r5, r5, #32 + cmp r4, #81 + bne .L1108 + b .L1111 +.L1115: + adds r3, r3, #1 + cmp r3, #4 + beq .L1109 +.L1110: + lsls r0, r3, #5 + ldrb r0, [r0, r1] @ zero_extendqisi2 + cmp r0, r2 + bne .L1115 +.L1109: + ldr r1, .L1116+12 + movs r2, #32 + ldr r0, .L1116+16 + add r1, r1, r3, lsl #5 + bl ftl_memcpy + mov r1, r7 + movs r2, #32 + ldr r0, .L1116+20 + bl ftl_memcpy + ldrh r0, [r5, #482] + bl FlashBlockAlignInit + b .L1106 +.L1111: + mov r6, #-1 +.L1106: + mov r0, r6 + pop {r3, r4, r5, r6, r7, pc} +.L1117: .align 2 -.L1084: +.L1116: .word .LANCHOR1+509 - .word .LANCHOR0+1792 + .word .LANCHOR0+1556 .word .LANCHOR1 - .word .LANCHOR1+2876 + .word .LANCHOR1+3100 .word .LANCHOR0+44 - .word .LANCHOR1+256 + .word .LANCHOR1+472 .fnend .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .align 1 @@ -7294,14 +7562,14 @@ NandcCopy1KB: ldr r6, [sp, #16] add r5, r0, #512 add r2, r2, r4, lsl #9 - bne .L1087 - cbz r3, .L1088 + bne .L1119 + cbz r3, .L1120 mov r0, r2 mov r1, r3 mov r2, #1024 bl ftl_memcpy -.L1088: - cbz r6, .L1086 +.L1120: + cbz r6, .L1118 ldrb r3, [r6, #2] @ zero_extendqisi2 lsrs r4, r4, #1 ldrb r2, [r6, #1] @ zero_extendqisi2 @@ -7315,14 +7583,14 @@ NandcCopy1KB: orr r3, r3, r2, lsl #24 str r3, [r5, r4, lsl #2] pop {r4, r5, r6, pc} -.L1087: - cbz r3, .L1091 +.L1119: + cbz r3, .L1123 mov r1, r2 mov r0, r3 mov r2, #1024 bl ftl_memcpy -.L1091: - cbz r6, .L1086 +.L1123: + cbz r6, .L1118 lsrs r4, r4, #1 add r4, r4, r4, lsl #1 lsls r4, r4, #2 @@ -7334,7 +7602,7 @@ NandcCopy1KB: lsrs r3, r3, #24 strb r2, [r6, #2] strb r3, [r6, #3] -.L1086: +.L1118: pop {r4, r5, r6, pc} .fnend .size NandcCopy1KB, .-NandcCopy1KB @@ -7350,14 +7618,14 @@ ftl_memcpy32: movs r3, #0 push {r4, lr} .save {r4, lr} -.L1103: +.L1135: cmp r3, r2 - beq .L1105 + beq .L1137 ldr r4, [r1, r3, lsl #2] str r4, [r0, r3, lsl #2] adds r3, r3, #1 - b .L1103 -.L1105: + b .L1135 +.L1137: pop {r4, pc} .fnend .size ftl_memcpy32, .-ftl_memcpy32 @@ -7375,37 +7643,6 @@ ftl_memcmp: .fnend .size ftl_memcmp, .-ftl_memcmp .align 1 - .global js_hash - .thumb - .thumb_func - .type js_hash, %function -js_hash: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1111 - add r1, r1, r0 - push {r4, lr} - .save {r4, lr} -.L1108: - cmp r0, r1 - beq .L1110 - 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 .L1108 -.L1110: - mov r0, r3 - pop {r4, pc} -.L1112: - .align 2 -.L1111: - .word 1204201446 - .fnend - .size js_hash, .-js_hash - .align 1 .global timer_get_time .thumb .thumb_func @@ -7415,12 +7652,12 @@ timer_get_time: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L1114 + ldr r3, .L1140 ldr r0, [r3] b jiffies_to_msecs -.L1115: +.L1141: .align 2 -.L1114: +.L1140: .word jiffies .fnend .size timer_get_time, .-timer_get_time @@ -7436,20 +7673,20 @@ FlashSramLoadStore: push {r4, r5, lr} .save {r4, r5, lr} mov r5, r0 - ldr r4, .L1119 + ldr r4, .L1145 ldr r4, [r4, #3984] add r4, r4, #4096 add r1, r1, r4 - cbz r2, .L1118 + cbz r2, .L1144 mov r0, r1 mov r1, r5 -.L1118: +.L1144: mov r2, r3 pop {r4, r5, lr} b ftl_memcpy -.L1120: +.L1146: .align 2 -.L1119: +.L1145: .word .LANCHOR2 .fnend .size FlashSramLoadStore, .-FlashSramLoadStore @@ -7502,12 +7739,12 @@ rk_ftl_get_capacity: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L1125 - ldr r0, [r3, #1896] + ldr r3, .L1151 + ldr r0, [r3, #1912] bx lr -.L1126: +.L1152: .align 2 -.L1125: +.L1151: .word .LANCHOR0 .fnend .size rk_ftl_get_capacity, .-rk_ftl_get_capacity @@ -7568,50 +7805,50 @@ rknand_print_hex: mov r7, r2 mov r8, r3 mov r4, r5 -.L1131: +.L1157: cmp r4, r8 - beq .L1139 - cbnz r5, .L1132 - ldr r0, .L1140 + beq .L1165 + cbnz r5, .L1158 + ldr r0, .L1166 mov r1, r9 mov r2, r6 mov r3, r4 bl printk -.L1132: +.L1158: cmp r7, #4 - ldr r0, .L1140+4 - bne .L1133 + ldr r0, .L1166+4 + bne .L1159 ldr r1, [r6, r4, lsl #2] - b .L1138 -.L1133: + b .L1164 +.L1159: cmp r7, #2 ite eq ldrsheq r1, [r6, r4, lsl #1] ldrbne r1, [r6, r4] @ zero_extendqisi2 -.L1138: +.L1164: adds r5, r5, #1 bl printk cmp r5, #15 - bls .L1136 - ldr r0, .L1140+8 + bls .L1162 + ldr r0, .L1166+8 movs r5, #0 - ldr r1, .L1140+12 + ldr r1, .L1166+12 bl printk -.L1136: +.L1162: adds r4, r4, #1 - b .L1131 -.L1139: - ldr r0, .L1140+8 - ldr r1, .L1140+12 + b .L1157 +.L1165: + ldr r0, .L1166+8 + ldr r1, .L1166+12 pop {r3, r4, r5, r6, r7, r8, r9, lr} b printk -.L1141: +.L1167: .align 2 -.L1140: +.L1166: + .word .LC82 .word .LC83 + .word .LC76 .word .LC84 - .word .LC77 - .word .LC85 .fnend .size rknand_print_hex, .-rknand_print_hex .align 1 @@ -7626,182 +7863,198 @@ HynixGetReadRetryDefault: push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} cmp r0, #2 - ldr r5, .L1234 + ldr r7, .L1277 mov r3, #172 mov r1, #173 mov r2, #174 .pad #44 sub sp, sp, #44 mov r4, r0 - strb r3, [r5, #1910] + strb r3, [r7, #702] mov r3, #175 - strb r0, [r5, #1906] - strb r1, [r5, #1911] - strb r2, [r5, #1912] - strb r3, [r5, #1913] - bne .L1143 + strb r0, [r7, #698] + strb r1, [r7, #703] + strb r2, [r7, #704] + strb r3, [r7, #705] + bne .L1169 movs r3, #167 - strb r3, [r5, #1910] - ldr r3, .L1234+4 + strb r3, [r7, #702] + ldr r3, .L1277+4 movs r2, #247 - strb r2, [r3, #3021] - b .L1196 -.L1143: + movs r5, #7 + strb r2, [r3, #3245] + b .L1230 +.L1169: cmp r0, #3 - bne .L1145 + bne .L1171 movs r3, #176 - strb r3, [r5, #1910] + strb r3, [r7, #702] movs r3, #177 - strb r3, [r5, #1911] + strb r3, [r7, #703] movs r3, #178 - strb r3, [r5, #1912] + strb r3, [r7, #704] movs r3, #179 - strb r3, [r5, #1913] + strb r3, [r7, #705] movs r3, #180 - strb r3, [r5, #1914] + strb r3, [r7, #706] movs r3, #181 - strb r3, [r5, #1915] + strb r3, [r7, #707] movs r3, #182 - strb r3, [r5, #1916] + strb r3, [r7, #708] movs r3, #183 - b .L1229 -.L1145: + b .L1271 +.L1171: cmp r0, #4 - bne .L1146 + bne .L1172 movs r0, #204 - strb r1, [r5, #1915] - strb r0, [r5, #1910] + strb r1, [r7, #707] + strb r0, [r7, #702] movs r0, #191 - strb r2, [r5, #1916] - strb r0, [r5, #1911] + strb r2, [r7, #708] + strb r0, [r7, #703] movs r0, #170 - strb r0, [r5, #1912] + strb r0, [r7, #704] movs r0, #171 - strb r0, [r5, #1913] + strb r0, [r7, #705] movs r0, #205 - strb r0, [r5, #1914] -.L1229: - mov fp, #8 - strb r3, [r5, #1917] - mov r9, fp - b .L1144 -.L1146: + strb r0, [r7, #706] +.L1271: + movs r5, #8 + strb r3, [r7, #709] + mov r6, r5 + b .L1170 +.L1172: cmp r0, #5 - bne .L1147 + bne .L1173 movs r3, #56 - mov fp, #8 - strb r3, [r5, #1910] + movs r5, #8 + strb r3, [r7, #702] movs r3, #57 - strb r3, [r5, #1911] + strb r3, [r7, #703] movs r3, #58 - strb r3, [r5, #1912] + strb r3, [r7, #704] movs r3, #59 - strb r3, [r5, #1913] - b .L1228 -.L1147: + strb r3, [r7, #705] + b .L1230 +.L1173: cmp r0, #6 - bne .L1148 + bne .L1174 movs r3, #14 - mov fp, #12 - strb r3, [r5, #1910] + movs r5, #12 + strb r3, [r7, #702] movs r3, #15 - strb r3, [r5, #1911] + strb r3, [r7, #703] movs r3, #16 - strb r3, [r5, #1912] + strb r3, [r7, #704] movs r3, #17 - strb r3, [r5, #1913] - b .L1228 -.L1148: + strb r3, [r7, #705] + b .L1230 +.L1174: cmp r0, #7 - bne .L1196 + bne .L1175 movs r3, #176 - mov fp, #12 - strb r3, [r5, #1910] - mov r9, #10 + movs r5, #12 + strb r3, [r7, #702] + movs r6, #10 movs r3, #177 - strb r3, [r5, #1911] + strb r3, [r7, #703] movs r3, #178 - strb r3, [r5, #1912] + strb r3, [r7, #704] movs r3, #179 - strb r3, [r5, #1913] + strb r3, [r7, #705] movs r3, #180 - strb r3, [r5, #1914] + strb r3, [r7, #706] movs r3, #181 - strb r3, [r5, #1915] + strb r3, [r7, #707] movs r3, #182 - strb r3, [r5, #1916] + strb r3, [r7, #708] movs r3, #183 - strb r3, [r5, #1917] + strb r3, [r7, #709] movs r3, #212 - strb r3, [r5, #1918] + strb r3, [r7, #710] movs r3, #213 - strb r3, [r5, #1919] - b .L1144 -.L1196: - mov fp, #7 -.L1228: - mov r9, #4 -.L1144: + strb r3, [r7, #711] + b .L1170 +.L1175: + cmp r0, #8 + mov r5, #7 + bne .L1230 + movs r3, #6 + strb r5, [r7, #703] + strb r3, [r7, #702] + movs r5, #50 + movs r3, #9 + strb r0, [r7, #704] + strb r3, [r7, #705] + movs r6, #5 + movs r3, #10 + strb r3, [r7, #706] + b .L1170 +.L1230: + movs r6, #4 +.L1170: subs r3, r4, #1 cmp r3, #1 - bhi .L1225 - ldr r7, .L1234+8 - mov r8, #0 -.L1149: - ldrb r3, [r5, #1616] @ zero_extendqisi2 - uxtb r6, r8 - ldr r2, .L1234 - cmp r3, r6 - bls .L1156 - add r6, r6, r2 - ldrb r3, [r6, #1620] @ zero_extendqisi2 + bhi .L1268 + ldr r1, .L1277+8 + mov r10, #0 +.L1176: + ldrb r3, [r7, #1717] @ zero_extendqisi2 + uxtb r8, r10 + ldr r2, .L1277 + cmp r3, r8 + bls .L1183 + add r8, r8, r2 + addw fp, r2, #701 + ldrb r3, [r8, #1720] @ zero_extendqisi2 add r4, r2, r3, lsl #6 add r3, r2, r3, lsl #3 - addw r4, r4, #1926 - addw r2, r2, #1909 - ldrb r6, [r3, #16] @ zero_extendqisi2 - ldr r1, [r3, #12] - mov r10, r4 + addw r4, r4, #718 + movs r2, #55 + ldrb r8, [r3, #16] @ zero_extendqisi2 + ldr r0, [r3, #12] + mov r9, r4 mov r3, r4 - add r6, r1, r6, lsl #8 - addw ip, r6, #2056 -.L1151: - str r3, [sp, #8] - movs r3, #55 - str r3, [ip] + add r8, r0, r8, lsl #8 + addw ip, r8, #2056 +.L1178: + str r2, [ip] + ldrb r0, [fp, #1]! @ zero_extendqisi2 + str r1, [sp, #16] + str r3, [sp, #12] + str r0, [r8, #2052] movs r0, #80 - ldrb r1, [r2, #1]! @ zero_extendqisi2 + str r2, [sp, #8] str ip, [sp, #4] - str r1, [r6, #2052] - str r2, [sp] - str r2, [sp, #12] bl NandcDelayns - ldr r1, [r6, #2048] - ldr r3, [sp, #8] - ldmia sp, {r2, ip} - strb r1, [r3], #1 - subs r1, r3, r4 - uxtb r1, r1 - cmp r1, r9 - bcc .L1151 + ldr r0, [r8, #2048] + ldr r3, [sp, #12] + ldr ip, [sp, #4] + ldr r2, [sp, #8] + strb r0, [r3], #1 + subs r0, r3, r4 + ldr r1, [sp, #16] + uxtb r0, r0 + cmp r0, r6 + bcc .L1178 movs r2, #0 -.L1152: +.L1179: movs r3, #1 - adds r0, r7, r2 -.L1153: - ldrb r6, [r0, r3, lsl #2] @ zero_extendqisi2 - ldrb r1, [r10] @ zero_extendqisi2 - add r1, r1, r6 - strb r1, [r10, r3, lsl #3] + add lr, r1, r2 +.L1180: + ldrb ip, [lr, r3, lsl #2] @ zero_extendqisi2 + ldrb r0, [r9] @ zero_extendqisi2 + add r0, r0, ip + strb r0, [r9, r3, lsl #3] adds r3, r3, #1 cmp r3, #7 - bne .L1153 + bne .L1180 adds r2, r2, #1 - add r10, r10, #1 + add r9, r9, #1 cmp r2, #4 - bne .L1152 + bne .L1179 movs r3, #0 - add r8, r8, #1 + add r10, r10, #1 strb r3, [r4, #16] strb r3, [r4, #24] strb r3, [r4, #32] @@ -7809,360 +8062,425 @@ HynixGetReadRetryDefault: strb r3, [r4, #48] strb r3, [r4, #41] strb r3, [r4, #49] - b .L1149 -.L1225: + b .L1176 +.L1268: subs r3, r4, #3 - cmp r3, #4 - bhi .L1156 - smulbb r2, r9, fp + cmp r3, #5 + bhi .L1183 + smulbb r2, r6, r5 lsls r3, r2, #4 - str r3, [sp, #32] - and r3, r2, #252 - str r3, [sp] - movs r3, #0 -.L1232: - str r3, [sp, #12] - ldrb r3, [sp, #12] @ zero_extendqisi2 + asrs r2, r2, #1 + str r3, [sp, #36] + lsls r3, r2, #1 str r3, [sp, #8] - ldr r3, .L1234 - ldr r2, [sp, #8] - ldrb r3, [r3, #1616] @ zero_extendqisi2 + movs r3, #0 +.L1275: + str r3, [sp, #20] + ldrb r3, [sp, #20] @ zero_extendqisi2 + str r3, [sp, #16] + ldr r3, .L1277 + ldr r2, [sp, #16] + ldrb r3, [r3, #1717] @ zero_extendqisi2 cmp r3, r2 - bhi .L1195 -.L1156: - ldr r3, .L1234 - strb r9, [r3, #1907] - strb fp, [r3, #1908] + bhi .L1228 +.L1183: + ldr r3, .L1277 + strb r6, [r3, #699] + strb r5, [r3, #700] add sp, sp, #44 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1195: - ldr r2, [sp, #8] - ldr r3, .L1234 +.L1228: + ldr r2, [sp, #16] + ldr r3, .L1277 add r3, r3, r2 - movs r2, #255 - ldrb r8, [r3, #1620] @ zero_extendqisi2 - ldr r3, .L1234 - add r3, r3, r8, lsl #3 - mov r0, r8 + ldrb fp, [r3, #1720] @ zero_extendqisi2 + ldr r3, .L1277 + add r3, r3, fp, lsl #3 + mov r0, fp ldr r10, [r3, #12] ldrb r3, [r3, #16] @ zero_extendqisi2 - lsls r6, r3, #8 + lsls r7, r3, #8 str r3, [sp, #4] - add r3, r10, r6 - str r2, [r3, #2056] + add r8, r10, r7 + movs r3, #255 + str r3, [r8, #2056] bl NandcWaitFlashReady cmp r4, #7 - it eq - moveq lr, #160 - mov r2, #54 - itete eq - ldreq r3, .L1234+12 - ldrne r3, .L1234+12 - mlaeq lr, lr, r8, r3 - addne lr, r3, r8, lsl #6 - ite ne - addne r3, lr, #20 - addeq r3, lr, #28 - str r3, [sp, #16] - ldr r3, [sp, #4] + bne .L1185 + ldr r2, .L1277+12 + movs r3, #160 + mla ip, r3, fp, r2 + add r3, ip, #28 + b .L1272 +.L1185: + cmp r4, #8 + beq .L1187 + ldr r2, .L1277+12 + add ip, r2, fp, lsl #6 + add r3, ip, #20 +.L1272: + add r7, r7, r10 cmp r4, #4 - add r3, r10, r3, lsl #8 - str r2, [r3, #2056] - bne .L1160 - add r6, r6, r10 + str r3, [sp, #24] + mov r3, #54 + str r3, [r7, #2056] + bne .L1188 movs r3, #255 - str r3, [r6, #2052] + str r3, [r7, #2052] movs r3, #64 - str r3, [r6, #2048] + str r3, [r7, #2048] movs r3, #204 - b .L1231 -.L1160: - subs r2, r4, #5 - cmp r2, #1 - bhi .L1162 - ldr r2, .L1234 - ldrb r2, [r2, #1910] @ zero_extendqisi2 + b .L1273 +.L1188: + subs r3, r4, #5 + cmp r3, #1 + bhi .L1190 + ldr r3, .L1277 + ldrb r2, [r3, #702] @ zero_extendqisi2 + ldr r3, [sp, #4] + add r3, r10, r3, lsl #8 str r2, [r3, #2052] movs r2, #82 str r2, [r3, #2048] - b .L1161 -.L1162: - add r6, r6, r10 + b .L1189 +.L1190: + cmp r4, #7 + bne .L1189 movs r3, #174 - str r3, [r6, #2052] + str r3, [r7, #2052] movs r3, #0 - str r3, [r6, #2048] + str r3, [r7, #2048] movs r3, #176 -.L1231: - str r3, [r6, #2052] +.L1273: + str r3, [r7, #2052] movs r3, #77 - str r3, [r6, #2048] -.L1161: + str r3, [r7, #2048] +.L1189: ldr r3, [sp, #4] cmp r4, #6 - mov r2, #48 - mov r0, r8 - add r5, r10, r3, lsl #8 - mov r3, #22 - str r3, [r5, #2056] - mov r3, #23 - str r3, [r5, #2056] - mov r3, #4 - str r3, [r5, #2056] - mov r3, #25 - str r3, [r5, #2056] - mov r3, #0 - str r3, [r5, #2056] - str r3, [r5, #2052] - str r3, [r5, #2052] + mov r2, #22 + add r3, r10, r3, lsl #8 + str r2, [r3, #2056] + mov r2, #23 + str r2, [r3, #2056] + mov r2, #4 + str r2, [r3, #2056] + mov r2, #25 + str r2, [r3, #2056] + mov r2, #0 + str r2, [r3, #2056] + str r2, [r3, #2052] + str r2, [r3, #2052] it eq - moveq r3, #31 - str r3, [r5, #2052] - movs r3, #2 - str r3, [r5, #2052] - movs r3, #0 - str r3, [r5, #2052] + moveq r2, #31 + str r2, [r3, #2052] + movs r2, #2 + str r2, [r3, #2052] + movs r2, #0 + str r2, [r3, #2052] +.L1229: ldr r3, [sp, #4] + movs r2, #48 + mov r0, fp add r3, r10, r3, lsl #8 str r2, [r3, #2056] bl NandcWaitFlashReady subs r3, r4, #5 cmp r3, #1 - str r3, [sp, #20] - bls .L1198 + str r3, [sp, #28] + bls .L1233 + cmp r4, #8 + beq .L1233 cmp r4, #7 - ite eq - moveq r0, #32 - movne r0, #2 - b .L1166 -.L1235: + ite ne + movne r2, #2 + moveq r2, #32 + b .L1193 +.L1278: .align 2 -.L1234: +.L1277: .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR1+3004 - .word .LANCHOR0+1906 -.L1198: - movs r0, #16 -.L1166: - ldr r3, .L1236 + .word .LANCHOR1+3228 + .word .LANCHOR0+698 +.L1233: + movs r2, #16 +.L1193: + ldr r3, .L1279 + ldr r1, [sp, #4] ldr r3, [r3, #3988] - mov r1, r3 -.L1167: - ldr r2, [r5, #2048] - strb r2, [r1], #1 - subs r2, r1, r3 - uxtb r2, r2 - cmp r2, r0 - bcc .L1167 - cmp r4, #7 - bne .L1168 + add r0, r10, r1, lsl #8 + mov r7, r3 +.L1194: + ldr r1, [r0, #2048] + strb r1, [r7], #1 + subs r1, r7, r3 + uxtb r1, r1 + cmp r1, r2 + bcc .L1194 + cmp r4, #8 + bne .L1195 movs r2, #0 -.L1170: - ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2 +.L1197: + ldrb r7, [r3, r2, lsl #2] @ zero_extendqisi2 uxtb r1, r2 - cmp r0, #12 - beq .L1169 - add r0, r3, r2, lsl #2 - ldrb r0, [r0, #1] @ zero_extendqisi2 - cmp r0, #10 - beq .L1169 + cmp r7, #50 + beq .L1196 + add r7, r3, r2, lsl #2 + ldrb r7, [r7, #1] @ zero_extendqisi2 + cmp r7, #5 + beq .L1196 adds r2, r2, #1 cmp r2, #8 - bne .L1170 - b .L1171 -.L1169: + bne .L1197 + b .L1198 +.L1196: cmp r1, #7 - bne .L1172 -.L1171: - ldr r0, .L1236+4 + bne .L1199 +.L1198: + ldr r0, .L1279+4 movs r1, #0 bl printk -.L1173: - b .L1173 -.L1168: +.L1200: + b .L1200 +.L1195: + cmp r4, #7 + bne .L1201 + movs r2, #0 +.L1203: + ldrb r7, [r3, r2, lsl #2] @ zero_extendqisi2 + uxtb r1, r2 + cmp r7, #12 + beq .L1202 + add r7, r3, r2, lsl #2 + ldrb r7, [r7, #1] @ zero_extendqisi2 + cmp r7, #10 + beq .L1202 + adds r2, r2, #1 + cmp r2, #8 + bne .L1203 + b .L1204 +.L1202: + cmp r1, #7 + bne .L1199 +.L1204: + ldr r0, .L1279+4 + movs r1, #0 + bl printk +.L1205: + b .L1205 +.L1201: cmp r4, #6 - bne .L1172 + bne .L1199 subs r2, r3, #1 adds r3, r3, #7 -.L1174: +.L1206: ldrb r1, [r2, #1]! @ zero_extendqisi2 cmp r1, #12 - beq .L1172 + beq .L1199 ldrb r1, [r2, #8] @ zero_extendqisi2 cmp r1, #4 - beq .L1172 + beq .L1199 cmp r2, r3 - bne .L1174 - ldr r0, .L1236+4 + bne .L1206 + ldr r0, .L1279+4 movs r1, #0 bl printk -.L1176: - b .L1176 -.L1172: - ldr r1, .L1236 - ldr r0, [sp, #32] - ldr r2, [r1, #3988] - adds r0, r2, r0 - mov r3, r2 -.L1177: - cmp r3, r0 - beq .L1233 - ldr r6, [r5, #2048] - strb r6, [r3], #1 - b .L1177 -.L1233: - ldr r3, [sp] - ldr r0, [r1, #3988] - add r0, r0, r3 - movs r3, #8 -.L1180: - ldr r1, [sp] - adds r6, r0, r1 -.L1179: - ldr r1, [r0] - mvns r1, r1 - str r1, [r0], #4 - cmp r0, r6 - bne .L1179 - ldr r1, [sp] - subs r3, r3, #1 - add r0, r0, r1 - bne .L1180 -.L1181: - ldr r1, .L1236 - movs r0, #0 - ldr r1, [r1, #3988] - str r1, [sp, #24] - mov r1, r0 - ldr r6, [sp, #24] - add r6, r6, r3 - str r6, [sp, #36] -.L1184: - movs r6, #1 - movs r7, #16 - str r7, [sp, #28] - lsl lr, r6, r1 - movs r6, #0 - mov ip, r6 -.L1182: +.L1208: + b .L1208 +.L1199: + ldr r1, .L1279 ldr r7, [sp, #36] - ldr r7, [r7, r6] - and r7, lr, r7 - cmp r7, lr + ldr r2, [r1, #3988] + adds r7, r2, r7 + mov r3, r2 +.L1209: + cmp r3, r7 + beq .L1276 + ldr lr, [r0, #2048] + strb lr, [r3], #1 + b .L1209 +.L1276: + ldr r3, [r1, #3988] + movs r0, #8 + ldr r1, [sp, #8] + adds r1, r3, r1 + str r1, [sp, #32] +.L1212: + ldr r7, [sp, #8] + add lr, r1, r7 +.L1211: + ldrh r7, [r1] + mvns r7, r7 + strh r7, [r1], #2 @ movhi + cmp r1, lr + bne .L1211 + ldr r7, [sp, #8] + subs r0, r0, #1 + add r1, r1, r7 + bne .L1212 + str r3, [sp, #12] +.L1213: + movs r7, #0 + mov r0, r7 +.L1216: + movs r3, #1 + mov lr, #0 + mov r8, #16 + lsl r1, r3, r0 + mov ip, lr +.L1214: + ldr r3, [sp, #12] + ldrh r9, [r3, lr] + ldr r3, [sp, #8] + and r9, r9, r1 + cmp r9, r1 it eq addeq ip, ip, #1 - ldr r7, [sp] - add r6, r6, r7 - ldr r7, [sp, #28] - subs r7, r7, #1 - str r7, [sp, #28] - bne .L1182 + subs r8, r8, #1 + add lr, lr, r3 + bne .L1214 cmp ip, #8 - add r1, r1, #1 - it hi - orrhi r0, r0, lr - cmp r1, #32 - bne .L1184 - ldr r1, [sp, #24] - str r0, [r1, r3] - adds r3, r3, #4 - ldr r1, [sp] - cmp r3, r1 - bne .L1181 - ldr r3, .L1236 + add r0, r0, #1 + itt hi + orrhi r7, r7, r1 + uxthhi r7, r7 + cmp r0, #16 + bne .L1216 + 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 .L1213 + ldr r3, .L1279 ldr r1, [r3, #3988] movs r3, #0 subs r0, r1, #4 - add r6, r1, #28 -.L1186: - ldr r7, [r0, #4]! - cmp r7, #0 + add r7, r1, #28 +.L1218: + ldr lr, [r0, #4]! + cmp lr, #0 it eq addeq r3, r3, #1 - cmp r0, r6 - bne .L1186 + cmp r0, r7 + bne .L1218 cmp r3, #7 - ble .L1187 - ldr r0, .L1236+8 + ble .L1219 + ldr r0, .L1279+8 movs r2, #1 mov r3, #1024 bl rknand_print_hex - ldr r0, .L1236+4 + ldr r0, .L1279+4 movs r1, #0 bl printk -.L1188: - b .L1188 -.L1187: +.L1220: + b .L1220 +.L1219: cmp r4, #6 - beq .L1200 + beq .L1235 cmp r4, #7 + beq .L1236 + cmp r4, #8 ite ne - movne ip, #8 - moveq ip, #10 - b .L1189 -.L1200: - mov ip, #4 -.L1189: - add r7, r9, #-1 - ldr r1, [sp, #16] - movs r0, #0 - uxtb r7, r7 - adds r7, r7, #1 -.L1190: - mov lr, r1 + movne r0, #8 + moveq r0, #5 + b .L1221 +.L1235: + movs r0, #4 + b .L1221 +.L1236: + movs r0, #10 +.L1221: + add r9, r6, #-1 + ldr r1, [sp, #24] + movs r7, #0 + uxtb r9, r9 + add r9, r9, #1 +.L1222: + mov ip, r1 mov r3, r2 -.L1191: - ldrb r6, [r3], #1 @ zero_extendqisi2 - strb r6, [lr], #1 - subs r6, r3, r2 - uxtb r6, r6 - cmp r6, r9 - bcc .L1191 - adds r0, r0, #1 - add r2, r2, r7 - cmp r0, fp - add r1, r1, ip - blt .L1190 +.L1223: + ldrb lr, [r3], #1 @ zero_extendqisi2 + strb lr, [ip], #1 + rsb lr, r2, r3 + uxtb lr, lr + cmp lr, r6 + bcc .L1223 + adds r7, r7, #1 + add r2, r2, r9 + cmp r7, r5 + add r1, r1, r0 + blt .L1222 ldr r3, [sp, #4] - mov r0, r8 - add r6, r10, r3, lsl #8 + mov r0, fp + add r7, r10, r3, lsl #8 movs r3, #255 - str r3, [r6, #2056] + str r3, [r7, #2056] + bl NandcWaitFlashReady + ldr r3, [sp, #28] + cmp r3, #1 + bhi .L1225 + movs r3, #54 + str r3, [r7, #2056] + ldr r3, .L1279+12 + mov r1, #-1 + ldr r0, [sp, #16] + ldrb r3, [r3, #702] @ zero_extendqisi2 + str r3, [r7, #2052] + movs r3, #0 + str r3, [r7, #2048] + movs r3, #22 + str r3, [r7, #2056] + bl FlashReadCmd + b .L1226 +.L1225: + cmp r4, #8 + ite eq + moveq r3, #190 + movne r3, #56 + str r3, [r7, #2056] +.L1226: + mov r0, fp bl NandcWaitFlashReady ldr r3, [sp, #20] - cmp r3, #1 - bhi .L1193 - movs r3, #54 - str r3, [r6, #2056] - ldr r3, .L1236+12 - mov r1, #-1 - ldr r0, [sp, #8] - ldrb r3, [r3, #1910] @ zero_extendqisi2 - str r3, [r5, #2052] - movs r3, #0 - str r3, [r5, #2048] - movs r3, #22 - str r3, [r6, #2056] - bl FlashReadCmd - b .L1194 -.L1193: - movs r3, #56 - str r3, [r6, #2056] -.L1194: - mov r0, r8 - bl NandcWaitFlashReady - ldr r3, [sp, #12] adds r3, r3, #1 - b .L1232 -.L1237: + b .L1275 +.L1187: + movs r3, #120 + movs r2, #23 + str r3, [r8, #2056] + movs r1, #25 + movs r3, #0 + str r3, [r8, #2052] + str r3, [r8, #2052] + str r3, [r8, #2052] + str r2, [r8, #2056] + movs r2, #4 + str r2, [r8, #2056] + str r1, [r8, #2056] + movs r1, #218 + str r1, [r8, #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, .L1279+16 + str r3, [sp, #24] + b .L1229 +.L1280: .align 2 -.L1236: +.L1279: .word .LANCHOR2 + .word .LC85 .word .LC86 - .word .LC87 .word .LANCHOR0 + .word .LANCHOR0+726 .fnend .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 1 @@ -8177,78 +8495,78 @@ FlashGetReadRetryDefault: @ link register save eliminated. mov r3, r0 cmp r0, #0 - beq .L1238 + beq .L1281 subs r2, r0, #1 - cmp r2, #6 - bhi .L1240 + cmp r2, #7 + bhi .L1283 b HynixGetReadRetryDefault -.L1240: +.L1283: cmp r0, #49 - bne .L1241 - ldr r0, .L1261 + bne .L1284 + ldr r0, .L1304 movs r2, #64 - ldr r1, .L1261+4 - addw r0, r0, #1910 + ldr r1, .L1304+4 + addw r0, r0, #702 strb r3, [r0, #-4] movs r3, #4 strb r3, [r0, #-3] movs r3, #15 strb r3, [r0, #-2] - b .L1259 -.L1241: + b .L1302 +.L1284: cmp r0, #33 - beq .L1242 + beq .L1285 sub r2, r0, #65 cmp r2, #1 - bhi .L1243 -.L1242: - ldr r0, .L1261 - strb r3, [r0, #1906] + bhi .L1286 +.L1285: + ldr r0, .L1304 + strb r3, [r0, #698] movs r3, #4 - b .L1260 -.L1243: + b .L1303 +.L1286: cmp r0, #34 - beq .L1244 + beq .L1287 cmp r0, #67 - bne .L1245 -.L1244: - ldr r0, .L1261 - strb r3, [r0, #1906] + bne .L1288 +.L1287: + ldr r0, .L1304 + strb r3, [r0, #698] movs r3, #5 -.L1260: - strb r3, [r0, #1907] +.L1303: + strb r3, [r0, #699] movs r2, #45 movs r3, #7 - addw r0, r0, #1910 + addw r0, r0, #702 strb r3, [r0, #-2] - ldr r1, .L1261+8 - b .L1259 -.L1245: + ldr r1, .L1304+8 + b .L1302 +.L1288: cmp r0, #35 - beq .L1246 + beq .L1289 cmp r0, #68 - bne .L1238 -.L1246: - ldr r0, .L1261 + bne .L1281 +.L1289: + ldr r0, .L1304 movs r2, #95 - ldr r1, .L1261+12 - addw r0, r0, #1910 + ldr r1, .L1304+12 + addw r0, r0, #702 strb r3, [r0, #-4] movs r3, #5 strb r3, [r0, #-3] movs r3, #17 strb r3, [r0, #-2] -.L1259: +.L1302: b ftl_memcpy -.L1238: +.L1281: bx lr -.L1262: +.L1305: .align 2 -.L1261: +.L1304: .word .LANCHOR0 - .word .LANCHOR1+440 - .word .LANCHOR1+288 - .word .LANCHOR1+336 + .word .LANCHOR1+408 + .word .LANCHOR1+256 + .word .LANCHOR1+304 .fnend .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .align 1 @@ -8263,15 +8581,15 @@ NandcXferComp: push {r0, r1, r4, r5, r6, lr} .save {r4, r5, r6, lr} .pad #8 - ldr r5, .L1302 + ldr r5, .L1345 add r0, r5, r0, lsl #3 - ldr r3, [r5, #2780] + ldr r3, [r5, #1740] ldr r4, [r0, #12] cmp r3, #3 - bls .L1294 + bls .L1337 ldr r3, [r4, #16] lsls r6, r3, #29 - bpl .L1294 + bpl .L1337 mov r0, r4 bl wait_for_nandc_xfer_completed ldr r6, [r4, #16] @@ -8279,130 +8597,130 @@ NandcXferComp: ubfx r6, r6, #1, #1 str r3, [sp] cmp r6, #0 - beq .L1276 + beq .L1319 movs r6, #0 -.L1266: +.L1309: ldr r2, [r4, #28] ldr r3, [sp] ubfx r2, r2, #16, #5 ubfx r3, r3, #22, #6 cmp r2, r3 - bge .L1274 - ldr r3, [r5, #2780] + bge .L1317 + ldr r3, [r5, #1740] cmp r3, #5 - bhi .L1267 -.L1270: + bhi .L1310 +.L1313: adds r6, r6, #1 bic r3, r6, #-16777216 cmp r3, #0 - bne .L1266 + bne .L1309 ldr r2, [r4, #28] mov r1, r6 ldr r3, [sp] ubfx r2, r2, #16, #5 - ldr r0, .L1302+4 + ldr r0, .L1345+4 ubfx r3, r3, #22, #6 bl printk - ldr r0, .L1302+8 + ldr r0, .L1345+8 mov r1, r4 movs r2, #4 mov r3, #512 bl rknand_print_hex - b .L1266 -.L1267: + b .L1309 +.L1310: ldr r3, [r4] str r3, [sp, #4] ldr r3, [sp, #4] lsls r0, r3, #18 - bpl .L1270 + bpl .L1313 ldr r3, [sp, #4] lsls r1, r3, #14 - bpl .L1270 -.L1274: - ldr r3, [r5, #2812] - ldr r4, .L1302 + bpl .L1313 +.L1317: + ldr r3, [r5, #1776] + ldr r4, .L1345 cmp r3, #0 - beq .L1275 + beq .L1318 ldr r1, [sp] movs r2, #0 - ldr r0, [r4, #2804] + ldr r0, [r4, #1768] ubfx r1, r1, #22, #5 lsls r1, r1, #10 bl rknand_dma_unmap_single - ldr r1, [sp] - ldr r0, [r4, #2808] + ldr r0, [r4, #1772] movs r2, #0 + ldr r1, [sp] ubfx r1, r1, #22, #5 lsls r1, r1, #7 bl rknand_dma_unmap_single - b .L1275 -.L1278: + b .L1318 +.L1321: ldr r3, [r4, #8] adds r6, r6, #1 str r3, [sp] bic r3, r6, #-16777216 - cbnz r3, .L1276 + cbnz r3, .L1319 ldr r2, [sp] mov r1, r6 ldr r3, [r4, #28] - ldr r0, .L1302+12 + ldr r0, .L1345+12 ubfx r3, r3, #16, #5 bl printk - ldr r0, .L1302+8 + ldr r0, .L1345+8 mov r1, r4 movs r2, #4 mov r3, #512 bl rknand_print_hex -.L1276: +.L1319: ldr r3, [sp] lsls r2, r3, #11 - bpl .L1278 - ldr r3, [r5, #2820] - cbz r3, .L1279 + bpl .L1321 + ldr r3, [r5, #1784] + cbz r3, .L1322 mov r0, r4 bl NandcSendDumpDataStart -.L1279: - ldr r3, [r5, #2812] - ldr r6, .L1302 - cbz r3, .L1280 +.L1322: + ldr r3, [r5, #1776] + ldr r6, .L1345 + cbz r3, .L1323 ldr r1, [sp] movs r2, #1 - ldr r0, [r6, #2804] + ldr r0, [r6, #1768] ubfx r1, r1, #22, #5 lsls r1, r1, #10 bl rknand_dma_unmap_single - ldr r1, [sp] - ldr r0, [r6, #2808] + ldr r0, [r6, #1772] movs r2, #1 + ldr r1, [sp] ubfx r1, r1, #22, #5 lsls r1, r1, #7 bl rknand_dma_unmap_single -.L1280: - ldr r3, [r5, #2820] - cbz r3, .L1275 +.L1323: + ldr r3, [r5, #1784] + cbz r3, .L1318 mov r0, r4 bl NandcSendDumpDataDone -.L1275: +.L1318: movs r3, #0 - str r3, [r5, #2812] - b .L1263 -.L1294: + str r3, [r5, #1776] + b .L1306 +.L1337: ldr r3, [r4, #8] str r3, [sp] ldr r3, [sp] lsls r3, r3, #11 - bpl .L1294 -.L1263: + bpl .L1337 +.L1306: add sp, sp, #8 @ sp needed pop {r4, r5, r6, pc} -.L1303: +.L1346: .align 2 -.L1302: +.L1345: .word .LANCHOR0 + .word .LC87 .word .LC88 .word .LC89 - .word .LC90 .fnend .size NandcXferComp, .-NandcXferComp .align 1 @@ -8412,288 +8730,297 @@ NandcXferComp: .type NandcXferData, %function NandcXferData: .fnstart - @ args = 4, pretend = 0, frame = 80 + @ args = 4, pretend = 0, frame = 88 @ 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, r3 - ldr r5, .L1348 - tst r9, #63 - .pad #92 - sub sp, sp, #92 - mov r8, r0 - add r3, r5, r0, lsl #3 - mov r10, r1 - mov r6, r2 - ldr r7, [r3, #12] - bne .L1305 - ldr r3, [sp, #128] - cbnz r3, .L1306 - add r0, sp, #24 + mov r10, r3 + ldr r3, .L1392 + mov r7, r2 + .pad #100 + sub sp, sp, #100 + ldr r4, .L1392+4 + tst r10, #63 + mov r9, r0 + ldr r2, [r3] + mov fp, r1 + ldr r5, [sp, #136] + str r3, [sp, #16] + str r2, [sp, #92] + add r2, r4, r0, lsl #3 + ldr r8, [r2, #12] + bne .L1348 + cbnz r5, .L1349 + add r0, sp, #28 movs r1, #255 movs r2, #64 - bl memset - add r3, sp, #24 - str r3, [sp, #128] -.L1306: - ldr r3, [sp, #128] - mov r0, r8 - str r9, [sp] - mov r1, r10 - mov r2, r6 - str r3, [sp, #4] + bl ftl_memset + add r5, sp, #28 +.L1349: + mov r0, r9 + str r10, [sp] + str r5, [sp, #4] + mov r1, fp + mov r2, r7 movs r3, #0 bl NandcXferStart - mov r0, r8 + mov r0, r9 bl NandcXferComp - cmp r10, #0 - bne .L1332 - ldr r3, [r5, #2824] - lsrs r4, r6, #1 - mov r2, r10 - mov r1, r10 + cmp fp, #0 + bne .L1376 + ldr r3, [r4, #1788] + lsrs r1, r7, #1 + mov r2, fp cmp r3, #25 - ldr r3, [sp, #128] + mov r3, fp ite cc - movcc lr, #64 - movcs lr, #128 -.L1309: - cmp r1, r4 - add r3, r3, #4 - add ip, r2, lr - bcs .L1346 - ldr r0, [r5, #2792] - 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 .L1309 -.L1346: + movcc r6, #64 + movcs r6, #128 +.L1352: + cmp r2, r1 + add r5, r5, #4 + add lr, r3, r6 + bcs .L1390 + ldr r0, [r4, #1756] + lsrs r3, r3, #2 + adds r2, r2, #1 + ldr r3, [r0, r3, lsl #2] + lsrs r0, r3, #8 + strb r3, [r5, #-4] + strb r0, [r5, #-3] + lsrs r0, r3, #16 + lsrs r3, r3, #24 + strb r0, [r5, #-2] + strb r3, [r5, #-1] + mov r3, lr + b .L1352 +.L1390: movs r2, #0 - ldr r0, [r5, #2824] - ldr r1, [r5, #2780] - lsrs r6, r6, #2 - mov fp, r2 -.L1311: - cmp r2, r6 - bcs .L1307 - cmp r0, #0 - beq .L1307 + ldr r1, [r4, #1788] + ldr r0, [r4, #1740] + lsrs r7, r7, #2 + mov r6, r2 +.L1354: + cmp r2, r7 + bcs .L1350 + cmp r1, #0 + beq .L1350 add r3, r2, #8 - ldr r3, [r7, r3, lsl #2] - str r3, [sp, #20] - ldr r3, [sp, #20] + ldr r3, [r8, r3, lsl #2] + str r3, [sp, #24] + ldr r3, [sp, #24] lsls r4, r3, #29 - bmi .L1335 - ldr r4, [sp, #20] + bmi .L1379 + ldr r4, [sp, #24] ubfx r4, r4, #15, #1 cmp r4, #0 - bne .L1335 - cmp r1, #5 - bls .L1313 - ldr r4, [sp, #20] - ldr r3, [sp, #20] + bne .L1379 + cmp r0, #5 + bls .L1356 + ldr r4, [sp, #24] + ldr r5, [sp, #24] + ldr r3, [sp, #24] ubfx r4, r4, #3, #5 - ubfx ip, r3, #27, #1 - ldr r3, [sp, #20] - ldr lr, [sp, #20] + ubfx lr, r5, #27, #1 + ldr r5, [sp, #24] ubfx r3, r3, #16, #5 - orr r4, r4, ip, lsl #5 - ubfx lr, lr, #29, #1 - orr r3, r3, lr, lsl #5 + ubfx r5, r5, #29, #1 + orr r4, r4, lr, lsl #5 + orr r3, r3, r5, lsl #5 cmp r4, r3 - ldr r3, [sp, #20] + ldr r3, [sp, #24] ittee hi - ldrhi r4, [sp, #20] + ldrhi r4, [sp, #24] ubfxhi r3, r3, #3, #5 - ldrls r4, [sp, #20] + ldrls r4, [sp, #24] ubfxls r3, r3, #16, #5 ite hi ubfxhi r4, r4, #27, #1 ubfxls r4, r4, #29, #1 - b .L1345 -.L1313: - cmp r1, #3 - bls .L1315 - ldr r4, [sp, #20] - ldr r3, [sp, #20] + b .L1389 +.L1356: + cmp r0, #3 + bls .L1358 + ldr r4, [sp, #24] + ldr r5, [sp, #24] + ldr r3, [sp, #24] ubfx r4, r4, #3, #5 - ubfx ip, r3, #28, #1 - ldr r3, [sp, #20] - ldr lr, [sp, #20] + ubfx lr, r5, #28, #1 + ldr r5, [sp, #24] ubfx r3, r3, #16, #5 - orr r4, r4, ip, lsl #5 - ubfx lr, lr, #30, #1 - orr r3, r3, lr, lsl #5 + ubfx r5, r5, #30, #1 + orr r4, r4, lr, lsl #5 + orr r3, r3, r5, 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 -.L1345: + bls .L1359 + ldr r3, [sp, #24] + ldr r4, [sp, #24] + ubfx r3, r3, #3, #5 + ubfx r4, r4, #28, #1 +.L1389: orr r4, r3, r4, lsl #5 -.L1315: - cmp fp, r4 + b .L1358 +.L1359: + ldr r5, [sp, #24] + ldr r4, [sp, #24] + ubfx r5, r5, #16, #5 + ubfx r4, r4, #30, #1 + orr r4, r5, r4, lsl #5 +.L1358: + cmp r6, r4 it cc - movcc fp, r4 - b .L1312 -.L1335: - mov fp, #-1 -.L1312: + movcc r6, r4 + b .L1355 +.L1379: + mov r6, #-1 +.L1355: adds r2, r2, #1 - b .L1311 -.L1332: - mov fp, #0 -.L1307: + b .L1354 +.L1376: + movs r6, #0 +.L1350: movs r3, #0 - str r3, [r7, #16] - b .L1318 -.L1305: + str r3, [r8, #16] + b .L1361 +.L1348: cmp r1, #1 mov r4, #0 - bne .L1344 - mov fp, r4 -.L1319: - cmp r4, r6 - bcs .L1347 + bne .L1388 + mov r6, r4 +.L1362: + cmp r4, r7 + bcs .L1391 and ip, r4, #3 - cmp r9, #0 - beq .L1338 - add r3, r9, r4, lsl #9 - b .L1321 -.L1338: - mov r3, r9 -.L1321: - ldr r2, [sp, #128] - mov r0, r7 - ldr r1, [sp, #128] - cmp r2, #0 - str ip, [sp, #8] + cmp r10, #0 + beq .L1382 + add r3, r10, r4, lsl #9 + b .L1364 +.L1382: + mov r3, r10 +.L1364: + cmp r5, #0 + mov r0, r8 ite ne movne r2, #2 moveq r2, #0 - mla r2, r4, r2, r1 movs r1, #1 + str ip, [sp, #12] + mla r2, r4, r2, r5 adds r4, r4, #2 str r2, [sp] mov r2, ip bl NandcCopy1KB - ldr ip, [sp, #8] - mov r0, r8 + mov r0, r9 movs r1, #1 movs r2, #2 - str fp, [sp] + ldr ip, [sp, #12] + str r6, [sp] + str r6, [sp, #4] mov r3, ip - str fp, [sp, #4] bl NandcXferStart - mov r0, r8 + mov r0, r9 bl NandcXferComp - b .L1319 -.L1347: - mov fp, #0 - b .L1318 -.L1344: + b .L1362 +.L1391: + movs r6, #0 + b .L1361 +.L1388: str r4, [sp] mov r1, r4 str r4, [sp, #4] movs r2, #2 mov r3, r4 - mov fp, r4 + mov r6, r4 bl NandcXferStart - str r9, [sp, #8] -.L1324: - cmp r4, r6 - bcs .L1318 - mov r0, r8 + str r10, [sp, #12] +.L1367: + cmp r4, r7 + bcs .L1361 + mov r0, r9 bl NandcXferComp - ldr r3, [r7, #32] + ldr r3, [r8, #32] add ip, r4, #2 - cmp ip, r6 - str r3, [sp, #20] - bcs .L1325 + cmp ip, r7 + str r3, [sp, #24] + bcs .L1368 movs r3, #0 - mov r0, r8 + mov r0, r9 str r3, [sp] movs r2, #2 str r3, [sp, #4] mov r1, r3 and r3, ip, #3 - str ip, [sp, #12] + str ip, [sp, #20] bl NandcXferStart - ldr ip, [sp, #12] -.L1325: - ldr r3, [sp, #20] + ldr ip, [sp, #20] +.L1368: + ldr r3, [sp, #24] lsls r3, r3, #29 - bmi .L1340 - ldr r2, [sp, #20] - ldr r3, [sp, #20] + bmi .L1384 + ldr r2, [sp, #24] + ldr r3, [sp, #24] ubfx r2, r2, #3, #5 ubfx r3, r3, #27, #1 orr r3, r2, r3, lsl #5 - cmp fp, r3 + cmp r6, r3 it cc - movcc fp, r3 - b .L1326 -.L1340: - mov fp, #-1 -.L1326: - ldr r1, [sp, #128] - cmp r9, #0 - ldr r3, [sp, #8] + movcc r6, r3 + b .L1369 +.L1384: + mov r6, #-1 +.L1369: + cmp r10, #0 + ldr r3, [sp, #12] it eq moveq r3, #0 - ldr r0, [sp, #128] - cmp r1, #0 + cmp r5, #0 ite ne movne r1, #2 moveq r1, #0 sub r2, ip, #2 - str ip, [sp, #12] - mla r4, r4, r1, r0 + mov r0, r8 + mla r4, r4, r1, r5 and r2, r2, #3 - mov r0, r7 movs r1, #0 + str ip, [sp, #20] str r4, [sp] bl NandcCopy1KB - ldr ip, [sp, #12] - ldr r3, [sp, #8] + ldr ip, [sp, #20] + ldr r3, [sp, #12] mov r4, ip add r3, r3, #1024 - str r3, [sp, #8] - b .L1324 -.L1318: - ldr r3, [r5, #2780] + str r3, [sp, #12] + b .L1367 +.L1361: + ldr r3, .L1392+4 + ldr r3, [r3, #1740] cmp r3, #5 - bls .L1330 - cmp r10, #0 - bne .L1330 - ldr r3, [r7] + bls .L1373 + cmp fp, #0 + bne .L1373 + ldr r3, [r8] and r2, r3, #139264 cmp r2, #139264 ittt eq - moveq fp, #-1 + moveq r6, #-1 orreq r3, r3, #131072 - streq r3, [r7] -.L1330: - mov r0, fp - add sp, sp, #92 + streq r3, [r8] +.L1373: + ldr r3, [sp, #16] + mov r0, r6 + ldr r2, [sp, #92] + ldr r3, [r3] + cmp r2, r3 + beq .L1375 + bl __stack_chk_fail +.L1375: + add sp, sp, #100 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1349: +.L1393: .align 2 -.L1348: +.L1392: + .word __stack_chk_guard .word .LANCHOR0 .fnend .size NandcXferData, .-NandcXferData @@ -8710,20 +9037,20 @@ FlashReadRawPage: .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1352 + ldr r3, .L1396 mov r6, r1 mov r7, r2 mov r4, r0 - ldrb r5, [r3, #265] @ zero_extendqisi2 - cbnz r0, .L1351 - ldr r2, .L1352+4 + ldrb r5, [r3, #481] @ zero_extendqisi2 + cbnz r0, .L1395 + ldr r2, .L1396+4 ldrb r3, [r2, #1] @ zero_extendqisi2 ldr r2, [r2, #4] muls r2, r3, r2 cmp r1, r2 it cc movcc r5, #4 -.L1351: +.L1395: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 @@ -8736,8 +9063,8 @@ FlashReadRawPage: mov r2, r5 movs r1, #0 mov r3, r7 - str r8, [sp] mov r0, r4 + str r8, [sp] bl NandcXferData mov r5, r0 mov r0, r4 @@ -8746,9 +9073,9 @@ FlashReadRawPage: add sp, sp, #8 @ sp needed pop {r4, r5, r6, r7, r8, pc} -.L1353: +.L1397: .align 2 -.L1352: +.L1396: .word .LANCHOR1 .word .LANCHOR0 .fnend @@ -8765,23 +9092,23 @@ FlashDdrTunningRead: 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, .L1380 + ldr r4, .L1424 .pad #20 sub sp, sp, #20 mov r10, r0 mov fp, r2 str r1, [sp] - ldr r3, [r4, #1828] + ldr r3, [r4, #76] ldr r3, [r3, #304] str r3, [sp, #8] - ldr r3, [r4, #2780] + ldr r3, [r4, #1740] cmp r3, #8 ldr r3, [sp, #56] ite cc movcc r9, #6 movcs r9, #12 cmp r3, #0 - beq .L1368 + beq .L1412 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 @@ -8789,30 +9116,30 @@ FlashDdrTunningRead: mov r0, r10 bl FlashReset mov r3, r7 - ldr r1, [sp] mov r2, fp mov r0, r10 + ldr r1, [sp] bl FlashReadRawPage mov r6, r0 - ldrb r0, [r4, #2764] @ zero_extendqisi2 + ldrb r0, [r4, #1716] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r4, #2764] @ zero_extendqisi2 + ldrb r0, [r4, #1716] @ zero_extendqisi2 bl NandcSetMode adds r3, r6, #1 - bne .L1357 -.L1366: + bne .L1401 +.L1410: mov r6, #-1 - b .L1358 -.L1357: + b .L1402 +.L1401: mov r2, r6 - ldr r0, .L1380+4 + ldr r0, .L1424+4 ldr r1, [sp] bl printk cmp r6, #9 itt ls addls r4, r4, r10, lsl #3 ldrls r3, [r4, #12] - ldr r4, .L1380+8 + ldr r4, .L1424+8 itttt ls ldrls r2, [r3, #3840] ldrls r2, [r3] @@ -8822,104 +9149,104 @@ FlashDdrTunningRead: adds r3, r3, #1 str r3, [r4, #3992] cmp r3, #2048 - bcc .L1358 + bcc .L1402 movs r7, #0 str r7, [r4, #3992] mov fp, r7 - b .L1356 -.L1368: + b .L1400 +.L1412: mov r6, #1024 -.L1356: +.L1400: movs r4, #0 mov r8, #-1 str r4, [sp, #4] mov ip, r4 mov r5, r4 -.L1364: +.L1408: uxtb r0, r9 str ip, [sp, #12] bl NandcSetDdrPara mov r3, r7 mov r0, r10 - ldr r1, [sp] mov r2, fp + ldr r1, [sp] bl FlashReadRawPage adds r3, r6, #1 - ldr ip, [sp, #12] cmp r0, r3 - bhi .L1360 + ldr ip, [sp, #12] + bhi .L1404 cmp r0, #2 - bhi .L1370 + bhi .L1414 adds r5, r5, #1 cmp r5, #9 - bls .L1370 + bls .L1414 rsb r4, r5, r9 mov r6, r0 mov r8, #0 - b .L1362 -.L1360: + b .L1406 +.L1404: ldr r3, [sp, #4] cmp r3, r5 - bcs .L1371 + bcs .L1415 cmp r5, #7 rsb ip, r5, r4 - bhi .L1372 + bhi .L1416 str r5, [sp, #4] - b .L1371 -.L1370: + b .L1415 +.L1414: mov r8, #0 mov r4, r9 mov r6, r0 mov r7, r8 mov fp, r8 - b .L1361 -.L1371: + b .L1405 +.L1415: movs r5, #0 -.L1361: +.L1405: add r9, r9, #2 cmp r9, #69 - bls .L1364 -.L1362: + bls .L1408 +.L1406: ldr r3, [sp, #4] cmp r3, r5 it cs movcs r4, ip - b .L1363 -.L1372: + b .L1407 +.L1416: mov r4, ip -.L1363: - cbz r4, .L1365 - ldr r0, .L1380+12 +.L1407: + cbz r4, .L1409 + ldr r0, .L1424+12 mov r1, r4 bl printk uxtb r0, r4 bl NandcSetDdrPara -.L1365: +.L1409: cmp r8, #0 - beq .L1358 - ldr r0, .L1380+16 + beq .L1402 + ldr r0, .L1424+16 mov r1, r10 ldr r2, [sp] bl printk ldr r3, [sp, #56] cmp r3, #0 - beq .L1366 + beq .L1410 ldr r3, [sp, #8] ubfx r0, r3, #8, #8 bl NandcSetDdrPara -.L1358: +.L1402: mov r0, r6 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1381: +.L1425: .align 2 -.L1380: +.L1424: .word .LANCHOR0 - .word .LC91 + .word .LC90 .word .LANCHOR2 + .word .LC91 .word .LC92 - .word .LC93 .fnend .size FlashDdrTunningRead, .-FlashDdrTunningRead .align 1 @@ -8941,18 +9268,18 @@ FlashReadPage: bl FlashReadRawPage adds r2, r0, #1 mov r4, r0 - bne .L1383 - ldr r9, .L1402+4 + bne .L1427 + ldr r9, .L1446+4 ldrb fp, [r9, #8] @ zero_extendqisi2 mov r10, r9 cmp fp, #0 - bne .L1384 -.L1386: - ldrb r3, [r10, #2772] @ zero_extendqisi2 - ldr r9, .L1402+4 - cbz r3, .L1383 - b .L1401 -.L1384: + bne .L1428 +.L1430: + ldrb r3, [r10, #1732] @ zero_extendqisi2 + ldr r9, .L1446+4 + cbz r3, .L1427 + b .L1445 +.L1428: movs r3, #0 mov r0, r5 strb r3, [r9, #8] @@ -8962,11 +9289,11 @@ FlashReadPage: bl FlashReadRawPage strb fp, [r9, #8] adds r3, r0, #1 - beq .L1386 + beq .L1430 mov r4, r0 - b .L1383 -.L1401: - ldr r3, [r9, #1828] + b .L1427 +.L1445: + ldr r3, [r9, #76] mov r1, r6 mov r0, r5 mov r2, r8 @@ -8977,20 +9304,20 @@ FlashReadPage: bl FlashDdrTunningRead adds r1, r0, #1 mov r4, r0 - beq .L1387 - ldrb r3, [r9, #1892] @ zero_extendqisi2 + beq .L1431 + ldrb r3, [r9, #1792] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1383 -.L1387: + bls .L1427 +.L1431: ubfx r0, r10, #8, #8 bl NandcSetDdrPara -.L1383: - ldr r9, .L1402+8 +.L1427: + ldr r9, .L1446+8 ldr ip, [r9, #3996] cmp ip, #0 - beq .L1388 + beq .L1432 adds r2, r4, #1 - bne .L1388 + bne .L1432 mov r1, r6 mov r2, r8 mov r3, r7 @@ -8999,14 +9326,14 @@ FlashReadPage: mov r3, r6 mov r2, r5 mov r4, r0 - ldr r0, .L1402 + ldr r0, .L1446 mov r1, r4 bl printk adds r3, r4, #1 - bne .L1388 - ldr r3, .L1402+4 - ldrb r3, [r3, #76] @ zero_extendqisi2 - cbz r3, .L1388 + bne .L1432 + ldr r3, .L1446+4 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cbz r3, .L1432 mov r0, r5 bl flash_enter_slc_mode ldr r4, [r9, #3996] @@ -9018,15 +9345,15 @@ FlashReadPage: mov r4, r0 mov r0, r5 bl flash_exit_slc_mode -.L1388: +.L1432: mov r0, r4 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1403: +.L1447: .align 2 -.L1402: - .word .LC94 +.L1446: + .word .LC93 .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -9043,19 +9370,19 @@ FlashDdrParaScan: push {r0, r1, r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} .pad #8 - movs r5, #0 - ldr r4, .L1414 mov r7, r0 + ldr r4, .L1458 mov r6, r1 - ldrb r0, [r4, #2764] @ zero_extendqisi2 + movs r5, #0 + ldrb r0, [r4, #1716] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r4, #2764] @ zero_extendqisi2 + ldrb r0, [r4, #1716] @ zero_extendqisi2 bl NandcSetMode mov r1, r6 mov r2, r5 mov r3, r5 - str r5, [sp] mov r0, r7 + str r5, [sp] bl FlashDdrTunningRead mov r1, r6 mov r2, r5 @@ -9064,32 +9391,32 @@ FlashDdrParaScan: mov r0, r7 bl FlashReadRawPage adds r0, r0, #1 - beq .L1405 + beq .L1449 cmp r8, #-1 - bne .L1406 -.L1405: - ldrb r3, [r4, #2764] @ zero_extendqisi2 + bne .L1450 +.L1449: + ldrb r3, [r4, #1716] @ zero_extendqisi2 lsls r3, r3, #31 - bpl .L1406 + bpl .L1450 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode - ldr r3, .L1414 + ldr r3, .L1458 movs r2, #0 - strb r2, [r3, #2772] - b .L1407 -.L1406: + strb r2, [r3, #1732] + b .L1451 +.L1450: movs r3, #1 - strb r3, [r4, #2772] -.L1407: + strb r3, [r4, #1732] +.L1451: movs r0, #0 add sp, sp, #8 @ sp needed pop {r4, r5, r6, r7, r8, pc} -.L1415: +.L1459: .align 2 -.L1414: +.L1458: .word .LANCHOR0 .fnend .size FlashDdrParaScan, .-FlashDdrParaScan @@ -9106,28 +9433,32 @@ FlashLoadPhyInfo: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #20 sub sp, sp, #20 - ldr r6, .L1432 - movs r4, #0 - ldr r3, .L1432+4 + ldr r10, .L1476+24 + movs r6, #0 + ldr r7, .L1476 mov r9, #4 - ldr r5, .L1432+8 - mov r7, #-1 - mov r8, r6 + ldr r5, .L1476+4 + mov r8, #-1 + ldr r3, [r10] + mov r4, r6 + str r6, [r5, #4004] + str r3, [sp, #12] + ldr r3, .L1476+8 ldr r0, [r3] @ unaligned - ldrh r3, [r6, #266] + ldr r3, [r7, #4] + str r0, [sp, #8] @ unaligned + mov r0, r6 + str r3, [sp] mov r6, r5 - str r4, [r5, #4004] - str r0, [sp, #12] @ unaligned - mov r0, r4 - str r3, [sp, #4] ldr r3, [r5, #3988] str r3, [r5, #4000] bl flash_enter_slc_mode -.L1417: + str r10, [sp, #4] +.L1461: add fp, r4, #1 mov r10, #0 -.L1419: - add r3, sp, #12 +.L1463: + add r3, sp, #8 ldrb r0, [r3, r10] @ zero_extendqisi2 bl FlashBchSel movs r0, #0 @@ -9136,95 +9467,107 @@ FlashLoadPhyInfo: mov r3, r0 bl FlashReadRawPage adds r0, r0, #1 - bne .L1418 + bne .L1462 movs r0, #0 mov r1, fp ldr r2, [r6, #3988] mov r3, r0 bl FlashReadRawPage adds r0, r0, #1 - bne .L1418 + bne .L1462 add r10, r10, #1 cmp r10, #4 - beq .L1420 - b .L1419 -.L1421: + beq .L1464 + b .L1463 +.L1465: add r0, fp, #12 movw r1, #2036 - bl JSHash + bl js_hash ldr r3, [fp, #8] cmp r3, r0 - bne .L1427 + bne .L1472 + ldr r8, .L1476+28 add r1, fp, #160 movs r2, #32 - ldr r0, .L1432+12 + add r0, r8, #472 bl ftl_memcpy - ldr r7, .L1432+16 ldr r1, [r6, #4000] movs r2, #32 - add r0, r7, #44 + ldr r0, .L1476+12 adds r1, r1, #192 bl ftl_memcpy ldr r1, [r6, #4000] mov r2, #852 - addw r0, r7, #1906 + ldr r0, .L1476+16 adds r1, r1, #224 bl ftl_memcpy - ldr fp, [r6, #4000] + ldrh r0, [r8, #482] + bl FlashBlockAlignInit + ldr r8, [r6, #4000] str r4, [r6, #4004] mov r0, r4 - ldrh r1, [r8, #266] - ldr r3, [fp, #1076] - strb r3, [r7, #2772] + ldr r1, [r7, #4] + ldr r3, [r8, #1076] + strb r3, [r7, #1732] bl __aeabi_uidiv - adds r3, r0, #1 - cbnz r0, .L1430 - movs r3, #2 -.L1430: - str r3, [r6, #4008] - movs r7, #0 - ldrh r3, [fp, #14] + adds r0, r0, #1 + cmp r0, #1 + itee hi + strhi r0, [r6, #4008] + movls r3, #2 + strls r3, [r6, #4008] + ldrh r3, [r8, #14] + mov r8, #0 strb r3, [r5, #4012] -.L1420: - ldr r3, [sp, #4] +.L1464: + ldr r3, [sp] subs r9, r9, #1 add r4, r4, r3 - bne .L1417 + bne .L1461 mov r0, r9 -.L1431: +.L1475: bl flash_exit_slc_mode - mov r0, r7 + mov r0, r8 + ldr r3, [sp, #4] + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L1471 + bl __stack_chk_fail +.L1462: + ldr fp, [r5, #4000] + ldr r2, .L1476+20 + ldr r3, [fp] + cmp r3, r2 + bne .L1464 + cmp r8, #0 + bne .L1465 + mov r0, r4 + ldr r1, [r7, #4] + bl __aeabi_uidiv + ldr r3, .L1476+4 + adds r0, r0, #1 + str r0, [r3, #4008] + mov r0, r8 + b .L1475 +.L1472: + mov r8, #-1 + b .L1464 +.L1471: add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1418: - ldr fp, [r5, #4000] - ldr r2, .L1432+20 - ldr r3, [fp] - cmp r3, r2 - bne .L1420 - cmp r7, #0 - bne .L1421 - mov r0, r4 - ldrh r1, [r8, #266] - bl __aeabi_uidiv - ldr r3, .L1432+8 - adds r0, r0, #1 - str r0, [r3, #4008] - mov r0, r7 - b .L1431 -.L1427: - mov r7, #-1 - b .L1420 -.L1433: +.L1477: .align 2 -.L1432: - .word .LANCHOR1 - .word .LANCHOR3+11 - .word .LANCHOR2 - .word .LANCHOR1+256 +.L1476: .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR3+11 + .word .LANCHOR0+44 + .word .LANCHOR0+698 .word 1312902724 + .word __stack_chk_guard + .word .LANCHOR1 .fnend .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 1 @@ -9240,71 +9583,71 @@ ToshibaReadRetrial: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r4, .L1462 mov r9, r0 - str r2, [sp, #8] mov fp, r3 + str r2, [sp, #8] str r1, [sp, #16] bl NandcWaitFlashReady + ldr r4, .L1506 add r3, r4, r9, lsl #3 ldrb r2, [r3, #16] @ zero_extendqisi2 ldr r7, [r3, #12] - ldrb r3, [r4, #1904] @ zero_extendqisi2 + ldrb r3, [r4, #696] @ zero_extendqisi2 add r6, r2, #8 subs r3, r3, #67 add r6, r7, r6, lsl #8 cmp r3, #1 lsl r3, r2, #8 str r3, [sp, #12] - bls .L1451 - ldrb r5, [r4, #2772] @ zero_extendqisi2 - cbz r5, .L1452 + bls .L1495 + ldrb r5, [r4, #1732] @ zero_extendqisi2 + cbz r5, .L1496 movs r0, #0 str r2, [sp, #20] bl NandcSetDdrMode movs r3, #1 ldr r2, [sp, #20] str r3, [sp, #4] - b .L1436 -.L1452: + b .L1480 +.L1496: str r5, [sp, #4] -.L1436: +.L1480: ldr r3, [sp, #12] movs r1, #92 adds r3, r7, r3 str r1, [r3, #2056] movs r1, #197 str r1, [r3, #2056] - b .L1435 -.L1451: + b .L1479 +.L1495: movs r3, #0 str r3, [sp, #4] -.L1435: +.L1479: mov r8, #1 mov r10, #-1 lsls r3, r2, #8 str r3, [sp, #20] -.L1437: - ldr r3, .L1462+4 +.L1481: + ldr r3, .L1506+4 ldrb r3, [r3, #4013] @ zero_extendqisi2 adds r3, r3, #1 cmp r8, r3 - bcs .L1461 - ldrb r3, [r4, #1904] @ zero_extendqisi2 + bcs .L1505 + ldrb r3, [r4, #696] @ zero_extendqisi2 mov r0, r6 uxtb r1, r8 subs r3, r3, #67 cmp r3, #1 - bhi .L1438 + bhi .L1482 bl SandiskSetRRPara - b .L1439 -.L1438: + b .L1483 +.L1482: bl ToshibaSetRRPara -.L1439: - ldrb r3, [r4, #1904] @ zero_extendqisi2 +.L1483: + ldrb r3, [r4, #696] @ zero_extendqisi2 cmp r3, #34 - bne .L1440 - ldr r3, .L1462+4 + bne .L1484 + ldr r3, .L1506+4 ldrb r3, [r3, #4013] @ zero_extendqisi2 subs r3, r3, #3 cmp r8, r3 @@ -9313,7 +9656,7 @@ ToshibaReadRetrial: ldreq r3, [sp, #20] addeq r3, r7, r3 streq r2, [r3, #2056] -.L1440: +.L1484: ldr r3, [sp, #12] movs r2, #38 adds r3, r7, r3 @@ -9321,80 +9664,80 @@ ToshibaReadRetrial: movs r2, #93 str r2, [r3, #2056] ldr r3, [sp, #4] - cbz r3, .L1441 + cbz r3, .L1485 movs r0, #4 bl NandcSetDdrMode mov r0, r9 - ldr r1, [sp, #16] mov r3, fp + ldr r1, [sp, #16] ldr r2, [sp, #8] bl FlashReadRawPage mov r5, r0 movs r0, #0 bl NandcSetDdrMode - b .L1442 -.L1441: + b .L1486 +.L1485: mov r0, r9 ldr r1, [sp, #16] ldr r2, [sp, #8] mov r3, fp bl FlashReadRawPage mov r5, r0 -.L1442: +.L1486: adds r2, r5, #1 - beq .L1443 - ldrb r2, [r4, #1892] @ zero_extendqisi2 + beq .L1487 + ldrb r2, [r4, #1792] @ zero_extendqisi2 cmp r10, #-1 it eq moveq r10, r5 add r2, r2, r2, lsl #1 cmp r5, r2, asr #2 - bcc .L1445 + bcc .L1489 mov fp, #0 str fp, [sp, #8] -.L1443: +.L1487: add r8, r8, #1 - b .L1437 -.L1461: + b .L1481 +.L1505: mov r5, r10 -.L1445: - ldrb r2, [r4, #1904] @ zero_extendqisi2 +.L1489: + ldrb r2, [r4, #696] @ zero_extendqisi2 mov r0, r6 movs r1, #0 subs r2, r2, #67 cmp r2, #1 - bhi .L1447 + bhi .L1491 bl SandiskSetRRPara - b .L1448 -.L1447: + b .L1492 +.L1491: bl ToshibaSetRRPara -.L1448: +.L1492: ldr r3, [sp, #12] movs r2, #255 add r7, r7, r3 str r2, [r7, #2056] - ldrb r2, [r4, #1892] @ zero_extendqisi2 + ldrb r2, [r4, #1792] @ zero_extendqisi2 add r2, r2, r2, lsl #1 cmp r5, r2, asr #2 - bcc .L1449 + bcc .L1493 adds r3, r5, #1 it ne movne r5, #256 -.L1449: +.L1493: mov r0, r9 bl NandcWaitFlashReady ldr r3, [sp, #4] - cbz r3, .L1450 + cbz r3, .L1494 movs r0, #4 bl NandcSetDdrMode -.L1450: +.L1494: mov r0, r5 add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1463: +.L1507: .align 2 -.L1462: +.L1506: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -9411,7 +9754,7 @@ SamsungReadRetrial: 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, .L1477 + ldr r5, .L1521 mov r9, r2 mov r7, r3 mov fp, r1 @@ -9423,12 +9766,12 @@ SamsungReadRetrial: ldr r6, [r2, #12] adds r3, r3, #8 add r6, r6, r3, lsl #8 -.L1465: - ldr r3, .L1477+4 +.L1509: + ldr r3, .L1521+4 ldrb r3, [r3, #4013] @ zero_extendqisi2 adds r3, r3, #1 cmp r10, r3 - bcs .L1468 + bcs .L1512 mov r0, r6 uxtb r1, r10 bl SamsungSetRRPara @@ -9438,38 +9781,38 @@ SamsungReadRetrial: mov r3, r7 bl FlashReadRawPage adds r2, r0, #1 - beq .L1466 - ldrb r3, [r5, #1892] @ zero_extendqisi2 + beq .L1510 + ldrb r3, [r5, #1792] @ zero_extendqisi2 cmp r4, #-1 it eq moveq r4, r0 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1471 + bcc .L1515 movs r7, #0 mov r9, r7 -.L1466: +.L1510: add r10, r10, #1 - b .L1465 -.L1471: + b .L1509 +.L1515: mov r4, r0 -.L1468: +.L1512: mov r0, r6 movs r1, #0 bl SamsungSetRRPara - ldrb r3, [r5, #1892] @ zero_extendqisi2 + ldrb r3, [r5, #1792] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp r4, r3, asr #2 - bcc .L1470 + bcc .L1514 adds r3, r4, #1 it ne movne r4, #256 -.L1470: +.L1514: mov r0, r4 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1478: +.L1522: .align 2 -.L1477: +.L1521: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -9481,118 +9824,154 @@ SamsungReadRetrial: .type MicronReadRetrial, %function MicronReadRetrial: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r3 - ldr r3, .L1495 + mov r8, r3 + ldr r3, .L1547 + .pad #36 + sub sp, sp, #36 + mov r6, r0 mov fp, r2 - .pad #28 - sub sp, sp, #28 - mov r8, r0 - mov r10, r1 - ldrb r2, [r3, #76] @ zero_extendqisi2 - mov r5, r3 - ldrb r4, [r3, #1892] @ zero_extendqisi2 - cbnz r2, .L1480 - add r4, r4, r4, lsl #1 - ubfx r4, r4, #2, #8 - b .L1481 -.L1480: - ldr r2, .L1495+4 - smull r2, r3, r4, r2 - uxtb r4, r3 -.L1481: - mov r0, r8 - movs r7, #0 + str r1, [sp, #20] + ldrb r5, [r3, #1792] @ zero_extendqisi2 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cbnz r3, .L1524 + add r5, r5, r5, lsl #1 + ubfx r5, r5, #2, #8 + b .L1525 +.L1524: + ldr r2, .L1547+4 + smull r2, r3, r5, r2 + uxtb r5, r3 +.L1525: + ldr r3, .L1547 + mov r10, #0 + add r3, r3, r6, lsl #3 + str r3, [sp, #24] +.L1535: + mov r0, r6 + mov r9, #0 bl NandcWaitFlashReady - add r3, r5, r8, lsl #3 - mov r5, #-1 - ldr r2, [r3, #12] + 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 - str r2, [sp, #12] str r3, [sp, #16] - mov r3, r2 ldr r2, [sp, #16] - add r6, r3, r2, lsl #8 -.L1482: - ldr r3, .L1495+8 + ldr r3, [sp, #12] + add r7, r3, r2, lsl #8 +.L1526: + ldr r3, .L1547+8 ldrb r3, [r3, #4013] @ zero_extendqisi2 - cmp r7, r3 - bcs .L1485 + cmp r9, r3 + bcs .L1529 movs r3, #239 movs r0, #200 - str r3, [r6, #2056] + str r3, [r7, #2056] movs r3, #137 - str r3, [r6, #2052] + str r3, [r7, #2052] bl NandcDelayns mov ip, #0 - adds r3, r7, #1 + add r3, r9, #1 + mov r0, r6 + str r3, [r7, #2048] mov r2, fp - str r3, [r6, #2048] - mov r0, r8 - str ip, [r6, #2048] - mov r1, r10 + str ip, [r7, #2048] + str ip, [r7, #2048] + str ip, [r7, #2048] str r3, [sp, #8] - mov r3, r9 - str ip, [r6, #2048] - str ip, [r6, #2048] - str ip, [sp, #20] + mov r3, r8 + ldr r1, [sp, #20] + str ip, [sp, #28] bl FlashReadRawPage - adds r2, r0, #1 - beq .L1483 - cmp r5, #-1 + adds r3, r0, #1 + beq .L1527 + cmp r4, #-1 it eq - moveq r5, r0 - cmp r0, r4 - bcc .L1489 - ldr ip, [sp, #20] - mov r9, ip + moveq r4, r0 + cmp r0, r5 + ldr ip, [sp, #28] + bcc .L1537 + mov r8, ip mov fp, ip -.L1483: - ldr r7, [sp, #8] - b .L1482 -.L1489: - mov r5, r0 -.L1485: +.L1527: + ldr r9, [sp, #8] + b .L1526 +.L1537: + mov r4, r0 + mov r8, ip + mov fp, ip +.L1529: ldr r2, [sp, #16] movs r0, #200 ldr r3, [sp, #12] - add r6, r3, r2, lsl #8 - movs r3, #239 - str r3, [r6, #2056] - movs r3, #137 - str r3, [r6, #2052] + 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 r5, r4 - mov r3, #0 - str r3, [r6, #2048] - str r3, [r6, #2048] - str r3, [r6, #2048] - str r3, [r6, #2048] - bcc .L1487 - adds r3, r5, #1 - ldr r0, .L1495+12 + cmp r4, r5 + ldr r3, [sp, #8] + str r7, [r3, #2048] + str r7, [r3, #2048] + str r7, [r3, #2048] + str r7, [r3, #2048] + bcc .L1531 + adds r1, r4, #1 + ldr r0, .L1547+12 it ne - movne r5, #256 - mov r1, r7 - str r5, [sp] - mov r2, r10 - mov r3, r7 + movne r4, #256 + mov r1, r9 + str r4, [sp] + mov r3, r9 + ldr r2, [sp, #20] bl printk -.L1487: - mov r0, r5 - add sp, sp, #28 + cmp r10, #0 + bne .L1533 + ldr r3, .L1547 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cbz r3, .L1542 + adds r2, r4, #1 + bne .L1542 + mov r0, r6 + movs r1, #3 + bl micron_auto_read_calibration_config + mov r10, #1 + b .L1535 +.L1533: + mov r0, r6 + mov r1, r7 + bl micron_auto_read_calibration_config + adds r3, r4, #1 + it ne + movne r4, #256 + b .L1542 +.L1531: + cmp r10, #0 + beq .L1542 + mov r0, r6 + mov r1, r7 + bl micron_auto_read_calibration_config + mov r4, #256 +.L1542: + mov r0, r4 + add sp, sp, #36 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1496: +.L1548: .align 2 -.L1495: +.L1547: .word .LANCHOR0 .word 1431655766 .word .LANCHOR2 - .word .LC95 + .word .LC94 .fnend .size MicronReadRetrial, .-MicronReadRetrial .align 1 @@ -9607,30 +9986,31 @@ HynixReadRetrial: 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 r10, r2 - ldr r5, .L1514 mov r8, r3 + ldr r5, .L1566 + mov r10, r2 mov r7, r0 mov fp, r1 - adds r3, r5, r0 + adds r2, r5, r0 mov r6, #-1 - ldr r2, [r5, #1788] - ldrb r4, [r3, #1918] @ zero_extendqisi2 - ldrb r9, [r5, #1908] @ zero_extendqisi2 - ldrb r2, [r2, #19] @ zero_extendqisi2 - cmp r2, #7 - it eq - ldrbeq r4, [r3, #1926] @ zero_extendqisi2 + ldr r3, [r5, #692] + ldrb r4, [r2, #710] @ zero_extendqisi2 + ldrb r9, [r5, #700] @ zero_extendqisi2 + ldrb r3, [r3, #19] @ zero_extendqisi2 + subs r3, r3, #7 + cmp r3, #1 + it ls + ldrbls r4, [r2, #718] @ zero_extendqisi2 bl NandcWaitFlashReady mov ip, #0 -.L1499: +.L1551: cmp ip, r9 - bcs .L1503 + bcs .L1555 adds r4, r4, #1 mov r0, r7 - ldrb r1, [r5, #1907] @ zero_extendqisi2 + ldrb r1, [r5, #699] @ zero_extendqisi2 uxtb r4, r4 - ldr r2, .L1514+4 + ldr r2, .L1566+4 cmp r4, r9 it cs movcs r4, #0 @@ -9642,48 +10022,49 @@ HynixReadRetrial: mov r1, fp mov r3, r8 bl FlashReadRawPage - ldr ip, [sp, #4] adds r2, r0, #1 - beq .L1501 - ldrb r3, [r5, #1892] @ zero_extendqisi2 + ldr ip, [sp, #4] + beq .L1553 + ldrb r3, [r5, #1792] @ zero_extendqisi2 cmp r6, #-1 it eq moveq r6, r0 add r3, r3, r3, lsl #1 cmp r0, r3, asr #2 - bcc .L1508 + bcc .L1560 mov r8, #0 mov r10, r8 -.L1501: +.L1553: add ip, ip, #1 - b .L1499 -.L1508: + b .L1551 +.L1560: mov r6, r0 -.L1503: - ldr r3, [r5, #1788] +.L1555: + ldr r3, [r5, #692] add r7, r7, r5 ldrb r3, [r3, #19] @ zero_extendqisi2 - cmp r3, #7 - ldrb r3, [r5, #1892] @ zero_extendqisi2 - ite eq - strbeq r4, [r7, #1926] - strbne r4, [r7, #1918] + subs r3, r3, #7 + cmp r3, #1 + ldrb r3, [r5, #1792] @ zero_extendqisi2 + ite ls + strbls r4, [r7, #718] + strbhi r4, [r7, #710] add r3, r3, r3, lsl #1 cmp r6, r3, asr #2 - bcc .L1507 + bcc .L1559 adds r3, r6, #1 it ne movne r6, #256 -.L1507: +.L1559: mov r0, r6 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1515: +.L1567: .align 2 -.L1514: +.L1566: .word .LANCHOR0 - .word .LANCHOR0+1910 + .word .LANCHOR0+702 .fnend .size HynixReadRetrial, .-HynixReadRetrial .align 1 @@ -9699,25 +10080,25 @@ FlashProgPage: .save {r4, r5, r6, r7, r8, lr} .pad #8 mov r8, r3 - ldr r3, .L1519 + ldr r3, .L1571 mov r5, r1 mov r7, r2 mov r4, r0 - ldrb r6, [r3, #265] @ zero_extendqisi2 - cbnz r0, .L1517 - ldr r2, .L1519+4 + ldrb r6, [r3, #481] @ zero_extendqisi2 + cbnz r0, .L1569 + ldr r2, .L1571+4 ldrb r3, [r2, #1] @ zero_extendqisi2 ldr r1, [r2, #4] muls r1, r3, r1 cmp r5, r1 - bcs .L1517 + bcs .L1569 ldrb r3, [r2] @ zero_extendqisi2 - cbnz r3, .L1518 + cbnz r3, .L1570 subs r6, r6, #2 - b .L1517 -.L1518: + b .L1569 +.L1570: movs r6, #4 -.L1517: +.L1569: mov r0, r4 bl NandcWaitFlashReady mov r0, r4 @@ -9727,9 +10108,9 @@ FlashProgPage: bl FlashProgFirstCmd uxtb r2, r6 mov r3, r7 - str r8, [sp] mov r0, r4 movs r1, #1 + str r8, [sp] bl NandcXferData mov r1, r5 mov r0, r4 @@ -9746,9 +10127,9 @@ FlashProgPage: add sp, sp, #8 @ sp needed pop {r4, r5, r6, r7, r8, pc} -.L1520: +.L1572: .align 2 -.L1519: +.L1571: .word .LANCHOR1 .word .LANCHOR0 .fnend @@ -9765,43 +10146,44 @@ FlashSavePhyInfo: 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, .L1530 - ldr r5, .L1530+4 - ldr r8, .L1530+12 + ldr r4, .L1582 + ldr r5, .L1582+4 + ldr r8, .L1582+12 ldr r3, [r4, #3988] mov r9, r4 ldrb r0, [r4, #4014] @ zero_extendqisi2 mov r10, r5 str r3, [r4, #4000] bl FlashBchSel + movs r1, #0 + mov r2, #2048 ldr r0, [r4, #3988] - mov r1, #2048 - bl __memzero + bl ftl_memset ldr r3, [r4, #4000] - add r1, r5, #1792 + addw r1, r5, #1556 movs r2, #32 str r8, [r3] ldr r0, [r4, #4000] - ldrb r3, [r5, #1616] @ zero_extendqisi2 + ldrb r3, [r5, #1717] @ zero_extendqisi2 adds r0, r0, #16 strh r3, [r0, #-4] @ movhi ldrb r3, [r5, #1] @ zero_extendqisi2 strh r3, [r0, #-2] @ movhi - ldrb r3, [r5, #2772] @ zero_extendqisi2 + ldrb r3, [r5, #1732] @ zero_extendqisi2 str r3, [r0, #1060] bl ftl_memcpy ldr r0, [r4, #4000] - addw r1, r5, #1620 + add r1, r5, #1720 movs r2, #8 adds r0, r0, #80 bl ftl_memcpy ldr r0, [r4, #4000] - addw r1, r5, #1628 + add r1, r5, #656 movs r2, #32 adds r0, r0, #96 bl ftl_memcpy ldr r0, [r4, #4000] - ldr r1, .L1530+8 + ldr r1, .L1582+8 movs r2, #32 adds r0, r0, #160 bl ftl_memcpy @@ -9812,13 +10194,13 @@ FlashSavePhyInfo: bl ftl_memcpy ldr r0, [r4, #4000] mov r2, #852 - addw r1, r5, #1906 + addw r1, r5, #698 adds r0, r0, #224 bl ftl_memcpy ldr r6, [r4, #4000] movw r1, #2036 add r0, r6, #12 - bl JSHash + bl js_hash mov r3, #1592 str r3, [r6, #4] ldr r3, [r4, #4016] @@ -9828,7 +10210,7 @@ FlashSavePhyInfo: bl flash_enter_slc_mode movs r6, #0 mov r7, r6 -.L1524: +.L1576: ldr r1, [r5, #4] movs r0, #0 mov r2, r0 @@ -9855,34 +10237,34 @@ FlashSavePhyInfo: bl FlashReadRawPage adds r2, r7, #1 adds r0, r0, #1 - beq .L1522 + beq .L1574 ldr fp, [r9, #4000] ldr r3, [fp] cmp r3, r8 - bne .L1522 + bne .L1574 add r0, fp, #12 movw r1, #2036 str r2, [sp, #4] - bl JSHash + bl js_hash ldr r3, [fp, #8] - ldr r2, [sp, #4] cmp r3, r0 - bne .L1522 + ldr r2, [sp, #4] + bne .L1574 ldr r3, [r10, #4] cmp r6, #1 str r2, [r9, #4008] mul r3, r3, r7 str r3, [r9, #4004] - beq .L1525 + beq .L1577 movs r6, #1 -.L1522: +.L1574: cmp r2, #4 mov r7, r2 - bne .L1524 - b .L1523 -.L1525: + bne .L1576 + b .L1575 +.L1577: movs r6, #2 -.L1523: +.L1575: movs r0, #0 bl flash_exit_slc_mode clz r0, r6 @@ -9891,12 +10273,12 @@ FlashSavePhyInfo: add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1531: +.L1583: .align 2 -.L1530: +.L1582: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR1+256 + .word .LANCHOR1+472 .word 1312902724 .fnend .size FlashSavePhyInfo, .-FlashSavePhyInfo @@ -9909,38 +10291,40 @@ FlashReadIdbDataRaw: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L1604 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r9, r0 - ldr r3, .L1545 .pad #20 sub sp, sp, #20 - ldr r4, .L1545+4 - ldr r0, [r3] @ unaligned - ldr r2, [r4, #2768] - ldr r3, .L1545+8 - str r0, [sp, #12] @ unaligned - cmp r2, r3 - ldrb r10, [r4, #1892] @ zero_extendqisi2 + ldr r2, [r3] + mov r9, r0 + ldr r4, .L1604+4 str r3, [sp, #4] - bne .L1533 + str r2, [sp, #12] + ldr r2, .L1604+8 + ldrb r10, [r4, #1792] @ zero_extendqisi2 + ldr r0, [r2] @ unaligned + ldr r2, [r4, #1728] + str r0, [sp, #8] @ unaligned + cbz r2, .L1585 movs r0, #0 bl flash_enter_slc_mode -.L1533: +.L1585: mov r0, r9 - mov r1, #2048 - bl __memzero + movs r1, #0 + mov r2, #2048 mov r8, #-1 + bl ftl_memset movs r5, #2 -.L1534: +.L1586: ldrb r3, [r4, #1] @ zero_extendqisi2 cmp r5, r3 - bcs .L1538 + bcs .L1590 movs r7, #0 -.L1536: - add r3, sp, #12 - ldr r6, .L1545+12 - ldrb fp, [r7, r3] @ zero_extendqisi2 +.L1588: + add r3, sp, #8 + ldr r6, .L1604+12 + ldrb fp, [r3, r7] @ zero_extendqisi2 mov r0, fp bl FlashBchSel ldr r1, [r4, #4] @@ -9950,62 +10334,67 @@ FlashReadIdbDataRaw: mov r3, r0 bl FlashReadRawPage adds r0, r0, #1 - bne .L1535 + bne .L1587 adds r7, r7, #1 cmp r7, #4 - bne .L1536 - b .L1537 -.L1535: + bne .L1588 + b .L1589 +.L1587: ldr r3, [r6, #3988] - ldr r2, .L1545+16 + ldr r2, .L1604+16 ldr r3, [r3] cmp r3, r2 - bne .L1537 + bne .L1589 mov r1, fp - ldr r0, .L1545+20 + ldr r0, .L1604+20 bl printk mov r2, #2048 mov r0, r9 ldr r1, [r6, #3988] bl ftl_memcpy ldr r3, [r6, #3988] - ldr r2, .L1545+4 + ldr r2, .L1604+4 ldr r3, [r3, #512] strb r3, [r2, #1] ldr r3, [r6, #4008] cmp r3, r5 - bls .L1541 + bls .L1594 str r5, [r6, #4008] bl FlashSavePhyInfo mov r8, #0 -.L1537: +.L1589: adds r5, r5, #1 - b .L1534 -.L1541: + b .L1586 +.L1594: mov r8, #0 -.L1538: +.L1590: mov r0, r10 bl FlashBchSel - ldr r3, [r4, #2768] - ldr r2, [sp, #4] - cmp r3, r2 - bne .L1543 + ldr r3, [r4, #1728] + cbz r3, .L1591 movs r0, #0 bl flash_exit_slc_mode -.L1543: +.L1591: + ldr r3, [sp, #4] mov r0, r8 + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L1593 + bl __stack_chk_fail +.L1593: add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1546: +.L1605: .align 2 -.L1545: - .word .LANCHOR3+11 +.L1604: + .word __stack_chk_guard .word .LANCHOR0 - .word 1446522928 + .word .LANCHOR3+11 .word .LANCHOR2 .word -52655045 - .word .LC96 + .word .LC95 .fnend .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 1 @@ -10015,20 +10404,20 @@ FlashReadIdbDataRaw: .type FlashInit, %function FlashInit: .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} mov r6, r0 - .pad #28 - sub sp, sp, #28 + .pad #20 + sub sp, sp, #20 mov r0, #32768 bl ftl_malloc - ldr r5, .L1645 - ldr r4, .L1645+4 + ldr r5, .L1725 + ldr r4, .L1725+4 movs r7, #0 add r9, r4, #12 - mov r10, r4 + mov r8, r7 str r0, [r5, #3988] mov r0, #32768 bl ftl_malloc @@ -10046,56 +10435,70 @@ FlashInit: strb r3, [r4, #1] strb r3, [r5, #4012] movs r3, #128 - strb r7, [r4, #2772] + strb r7, [r4, #1732] str r3, [r4, #4] movs r3, #60 str r7, [r5, #3992] strb r7, [r4] + strb r7, [r5, #4032] strb r3, [r5, #4014] str r0, [r5, #4028] mov r0, r6 bl NandcInit - add r6, r4, #1792 -.L1552: - uxtb fp, r7 + addw r6, r4, #1556 +.L1612: + add r3, r9, r8, lsl #3 + uxtb fp, r8 + ldr r7, [r9, r8, lsl #3] + ldrb r10, [r3, #4] @ zero_extendqisi2 mov r0, fp bl FlashReset - ldr r2, [r9, r7, lsl #3] - add r3, r9, r7, lsl #3 mov r0, fp - ldrb r8, [r3, #4] @ zero_extendqisi2 - str r2, [sp, #20] bl NandcFlashCs - ldr r2, [sp, #20] movs r3, #144 + add r7, r7, r10, lsl #8 movs r0, #200 - add r8, r2, r8, lsl #8 - str r3, [r8, #2056] - movs r3, #0 - str r3, [r8, #2052] + mov r10, #0 + str r3, [r7, #2056] + str r10, [r7, #2052] bl NandcDelayns - ldr r3, [r8, #2048] + ldr r2, [r7, #2048] + uxtb r2, r2 + strb r2, [r6] + ldr r1, [r7, #2048] + cmp r2, #44 + strb r1, [r6, #1] + ldr r1, [r7, #2048] + strb r1, [r6, #2] + ldr r1, [r7, #2048] + strb r1, [r6, #3] + ldr r1, [r7, #2048] + strb r1, [r6, #4] + ldr r1, [r7, #2048] + strb r1, [r6, #5] + bne .L1607 + movs r2, #239 + movs r0, #200 + str r2, [r7, #2056] + movs r2, #1 + str r2, [r7, #2052] + bl NandcDelayns + movs r2, #4 + str r2, [r7, #2048] + str r10, [r7, #2048] + str r10, [r7, #2048] + str r10, [r7, #2048] +.L1607: mov r0, fp - strb r3, [r6] - ldr r3, [r8, #2048] - strb r3, [r6, #1] - ldr r3, [r8, #2048] - strb r3, [r6, #2] - ldr r3, [r8, #2048] - strb r3, [r6, #3] - ldr r3, [r8, #2048] - strb r3, [r6, #4] - ldr r3, [r8, #2048] - strb r3, [r6, #5] bl NandcFlashDeCs ldrb r2, [r6] @ zero_extendqisi2 subs r3, r2, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1548 + bhi .L1608 ldrb r1, [r6, #2] @ zero_extendqisi2 ldrb r3, [r6, #1] @ zero_extendqisi2 - ldr r0, .L1645+8 + ldr r0, .L1725+8 str r1, [sp] ldrb r1, [r6, #3] @ zero_extendqisi2 str r1, [sp, #4] @@ -10103,450 +10506,482 @@ FlashInit: str r1, [sp, #8] ldrb r1, [r6, #5] @ zero_extendqisi2 str r1, [sp, #12] - adds r1, r7, #1 + add r1, r8, #1 bl printk -.L1548: - cbnz r7, .L1549 - ldrb r3, [r4, #1792] @ zero_extendqisi2 +.L1608: + cmp r8, #0 + bne .L1609 + ldrb r3, [r4, #1556] @ zero_extendqisi2 subs r3, r3, #1 uxtb r3, r3 cmp r3, #253 - bhi .L1595 - ldrb r3, [r10, #1793] @ zero_extendqisi2 + bhi .L1664 + ldr r3, .L1725+4 + ldrb r3, [r3, #1557] @ zero_extendqisi2 cmp r3, #255 - beq .L1595 -.L1549: + beq .L1664 +.L1609: ldrb r3, [r6] @ zero_extendqisi2 - adds r7, r7, #1 + add r8, r8, #1 adds r6, r6, #8 cmp r3, #181 itt eq moveq r3, #44 strbeq r3, [r6, #-8] - cmp r7, #4 - bne .L1552 - ldrb r3, [r4, #1792] @ zero_extendqisi2 + cmp r8, #4 + bne .L1612 + ldrb r3, [r4, #1556] @ zero_extendqisi2 cmp r3, #173 - beq .L1553 - ldr r3, .L1645+4 - ldr r0, [r3, #2776] + beq .L1613 + ldr r3, .L1725+4 + ldr r0, [r3, #1736] bl NandcSetDdrMode -.L1553: - ldr r6, .L1645+4 - mov r1, #852 - addw r0, r6, #1906 - bl __memzero - ldr r3, .L1645+12 - str r3, [r4, #1788] - movs r3, #0 +.L1613: + ldr r7, .L1725+4 + mov r2, #852 + movs r1, #0 + ldr r6, .L1725+12 + addw r0, r7, #698 + bl ftl_memset + ldr r3, .L1725+16 + ldr r2, [r4, #1744] + ldrb r0, [r4, #1557] @ zero_extendqisi2 + cmp r2, r6 + str r3, [r4, #692] + mov r3, #0 strb r3, [r4, #8] - ldrb r3, [r4, #1793] @ zero_extendqisi2 - cmp r3, #161 - beq .L1554 - cmp r3, #218 - beq .L1554 - and r2, r3, #223 - cmp r2, #209 - beq .L1554 - cmp r3, #220 - bne .L1555 - ldrb r2, [r6, #1795] @ zero_extendqisi2 - cmp r2, #149 - bne .L1555 -.L1554: - ldrb r1, [r4, #1792] @ zero_extendqisi2 - movs r2, #1 - strb r2, [r4] - movs r2, #16 - strb r2, [r4, #1] - cmp r1, #152 - strb r2, [r5, #4014] - ldr r2, .L1645+16 - strb r1, [r2, #3033] - strb r3, [r2, #3034] - bne .L1556 - ldr r1, .L1645+4 - ldrsb r1, [r1, #1796] - cmp r1, #0 - ittt ge - movge r0, #24 - ldrge r1, .L1645 - strbge r0, [r1, #4014] -.L1556: - ldr r1, .L1645+20 - ldr r0, [r4, #2768] - cmp r0, r1 itt eq - moveq r1, #16 - strbeq r1, [r5, #4014] - cmp r3, #218 - bne .L1558 - mov r1, #2048 - b .L1641 -.L1558: - cmp r3, #220 - bne .L1559 - mov r1, #4096 -.L1641: - strh r1, [r2, #3046] @ movhi - strb r3, [r2, #3034] -.L1559: - ldr r1, .L1645+24 + moveq r3, #1 + streq r3, [r7, #1728] + cmp r0, #161 + beq .L1615 + cmp r0, #241 + beq .L1615 + cmp r0, #218 + beq .L1615 + and r3, r0, #253 + cmp r3, #209 + beq .L1615 + cmp r0, #220 + bne .L1616 + ldr r3, .L1725+4 + ldrb r3, [r3, #1559] @ zero_extendqisi2 + cmp r3, #149 + bne .L1616 +.L1615: + ldrb lr, [r4, #1556] @ zero_extendqisi2 + movs r3, #16 + strb r3, [r4, #1] + movs r7, #1 + strb r3, [r5, #4014] + cmp lr, #152 + ldr r3, .L1725+20 + strb r7, [r4] + ldr r1, .L1725 + strb lr, [r3, #3257] + strb r0, [r3, #3258] + bne .L1618 + ldr lr, .L1725+4 + ldrsb lr, [lr, #1560] + cmp lr, #0 + blt .L1619 + movs r7, #24 + strb r7, [r1, #4014] +.L1618: + cmp r2, r6 + beq .L1621 + movw r1, #2049 + cmp r2, r1 + bne .L1622 +.L1621: + movs r2, #16 + strb r2, [r5, #4014] +.L1622: + cmp r0, #218 + bne .L1623 + mov r2, #2048 + b .L1720 +.L1623: + cmp r0, #220 + bne .L1625 + mov r2, #4096 +.L1720: + strh r2, [r3, #3270] @ movhi + strb r0, [r3, #3258] + b .L1624 +.L1625: + cmp r0, #211 + itttt eq + moveq r2, #4096 + strheq r2, [r3, #3270] @ movhi + moveq r2, #2 + strbeq r2, [r3, #3269] +.L1624: + ldr r1, .L1725+24 movs r2, #32 - ldr r0, .L1645+28 + ldr r0, .L1725+28 bl ftl_memcpy - ldr r0, .L1645+12 + ldr r0, .L1725+16 movs r2, #32 - addw r1, r0, #2776 + add r1, r0, #2784 bl ftl_memcpy -.L1555: +.L1616: ldrb r3, [r4] @ zero_extendqisi2 - ldr r6, .L1645+4 + ldr r7, .L1725+4 cmp r3, #0 - bne .L1560 + bne .L1626 bl FlashLoadPhyInfoInRam - cbnz r0, .L1562 - ldr r3, [r6, #1788] + cbnz r0, .L1628 + ldr r3, [r7, #692] ldrh r3, [r3, #16] lsrs r3, r3, #8 - lsls r7, r3, #31 and r0, r3, #7 - strb r0, [r6, #2764] - bmi .L1562 + lsls r3, r3, #31 + strb r0, [r7, #1716] + bmi .L1628 movs r3, #1 - strb r3, [r6, #2772] + strb r3, [r7, #1732] bl FlashSetInterfaceMode - ldrb r0, [r6, #2764] @ zero_extendqisi2 + ldrb r0, [r7, #1716] @ zero_extendqisi2 bl NandcSetMode -.L1562: - ldr r3, [r4, #1788] - ldr r6, .L1645+4 +.L1628: + ldr r3, [r4, #692] + ldr r7, .L1725+4 ldrb r3, [r3, #26] @ zero_extendqisi2 - strb r3, [r4, #76] + strb r3, [r4, #140] bl FlashLoadPhyInfo cmp r0, #0 - beq .L1560 - ldr r3, [r6, #2776] - cbz r3, .L1565 + beq .L1626 + ldr r3, [r7, #1736] + cbz r3, .L1631 movs r0, #1 bl FlashSetInterfaceMode movs r0, #1 - b .L1642 -.L1646: + b .L1721 +.L1726: .align 2 -.L1645: +.L1725: .word .LANCHOR2 .word .LANCHOR0 - .word .LC97 - .word .LANCHOR1+256 - .word .LANCHOR1 + .word .LC96 .word 1446522928 - .word .LANCHOR1+2908 + .word .LANCHOR1+472 + .word .LANCHOR1 + .word .LANCHOR1+3132 .word .LANCHOR0+44 -.L1565: - ldrb r0, [r6, #2764] @ zero_extendqisi2 +.L1631: + ldrb r0, [r7, #1716] @ zero_extendqisi2 bl FlashSetInterfaceMode - ldrb r0, [r6, #2764] @ zero_extendqisi2 -.L1642: + ldrb r0, [r7, #1716] @ zero_extendqisi2 +.L1721: bl NandcSetMode bl FlashLoadPhyInfo cmp r0, #0 - beq .L1560 + beq .L1626 movs r0, #1 - ldr r6, .L1647 + ldr r7, .L1727 bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode - ldr r3, [r4, #1788] - ldr r0, .L1647+4 + ldr r3, [r4, #692] + ldr r0, .L1727+4 ldrh r1, [r3, #14] bl printk bl FlashLoadPhyInfoInRam adds r1, r0, #1 - beq .L1550 + beq .L1683 bl FlashDieInfoInit - ldr r3, [r6, #1788] + ldr r3, [r7, #692] ldrb r0, [r3, #19] @ zero_extendqisi2 bl FlashGetReadRetryDefault - ldr r3, [r6, #1788] - ldrh r2, [r6, #1824] + ldr r3, [r7, #692] + ldrh r2, [r5, #1730] ldrb r1, [r3, #9] @ zero_extendqisi2 addw r2, r2, #4095 cmp r1, r2, asr #12 - blt .L1567 + blt .L1633 ldrh r2, [r3, #14] adds r2, r2, #255 cmp r1, r2, asr #8 - bge .L1568 -.L1567: + bge .L1634 +.L1633: ldrh r2, [r3, #14] bic r2, r2, #255 strh r2, [r3, #14] @ movhi -.L1568: - ldrb r3, [r4, #2764] @ zero_extendqisi2 +.L1634: + ldrb r3, [r4, #1716] @ zero_extendqisi2 tst r3, #6 - beq .L1569 + beq .L1635 bl FlashSavePhyInfo movs r0, #0 ldr r1, [r5, #4004] bl FlashDdrParaScan -.L1569: +.L1635: bl FlashSavePhyInfo -.L1560: - ldr r2, [r4, #1788] - ldr r6, .L1647 - ldr r7, .L1647+8 +.L1626: + ldr r2, [r4, #692] + ldr r8, .L1727 + ldr r7, .L1727+8 ldrb r3, [r2, #26] @ zero_extendqisi2 ldrh r0, [r2, #10] - ldrb r8, [r2, #18] @ zero_extendqisi2 - strb r3, [r4, #76] + ldrb r9, [r2, #18] @ zero_extendqisi2 + strb r3, [r4, #140] ldrh r3, [r2, #16] ubfx r1, r3, #7, #1 strb r1, [r4, #8] ubfx r1, r3, #3, #1 - strb r1, [r5, #4032] + strb r1, [r5, #4033] ubfx r1, r3, #4, #1 ubfx r3, r3, #8, #3 - strb r1, [r4, #2828] - strb r3, [r4, #2764] + strb r1, [r4, #1793] + strb r3, [r4, #1716] movs r3, #0 ldrb r1, [r2, #12] @ zero_extendqisi2 str r3, [r5, #3996] bl __aeabi_idiv mov r1, r0 - mov r0, r8 + mov r0, r9 bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr r3, [r4, #1788] + ldr r3, [r4, #692] ldrh r2, [r3, #16] lsls r2, r2, #25 - bpl .L1571 + bpl .L1637 ldrb r0, [r3, #19] @ zero_extendqisi2 - ldrb r3, [r6, #1907] @ zero_extendqisi2 - strb r0, [r6, #1904] - strb r3, [r6, #1905] - ldrb r3, [r6, #1908] @ zero_extendqisi2 + ldrb r3, [r8, #699] @ zero_extendqisi2 + strb r0, [r8, #696] + strb r3, [r8, #697] + ldrb r3, [r8, #700] @ zero_extendqisi2 strb r3, [r7, #4013] subs r3, r0, #1 - cmp r3, #6 - bhi .L1572 - ldr r3, .L1647+12 + cmp r3, #7 + bhi .L1638 + ldr r3, .L1727+12 str r3, [r7, #3996] subs r3, r0, #5 cmp r3, #1 - bhi .L1573 - movs r3, #1 - str r3, [r6, #2820] - b .L1574 -.L1573: + bls .L1639 + cmp r0, #8 + bne .L1640 +.L1639: cmp r0, #7 - beq .L1596 -.L1574: - ldr r6, .L1647+16 - b .L1575 -.L1596: - addw r6, r6, #1934 -.L1575: - subs r2, r6, #1 - movs r3, #0 - adds r6, r6, #31 -.L1576: - ldrsb r1, [r2, #1]! - cmp r1, #0 + mov r3, #1 + str r3, [r4, #1784] + beq .L1665 + cmp r0, #8 + b .L1724 +.L1665: + ldr r3, .L1727+16 +.L1642: + subs r1, r3, #1 + movs r2, #0 + adds r3, r3, #31 +.L1643: + ldrsb r7, [r1, #1]! + cmp r7, #0 it eq - addeq r3, r3, #1 - cmp r2, r6 - bne .L1576 - cmp r3, #27 - bls .L1571 + addeq r2, r2, #1 + cmp r1, r3 + bne .L1643 + cmp r2, #27 + bls .L1637 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L1571 -.L1572: + b .L1637 +.L1638: sub r3, r0, #17 cmp r3, #2 - bhi .L1578 - ldr r3, .L1647+20 + bhi .L1645 + ldr r3, .L1727+20 cmp r0, #19 str r3, [r7, #3996] ite ne movne r3, #7 moveq r3, #15 strb r3, [r7, #4013] - b .L1571 -.L1578: + b .L1637 +.L1645: cmp r0, #33 - beq .L1580 + beq .L1647 sub r3, r0, #65 cmp r3, #1 - bhi .L1581 -.L1580: - ldr r3, .L1647+24 + bhi .L1648 +.L1647: + ldr r3, .L1727+24 str r3, [r5, #3996] movs r3, #4 - strb r3, [r4, #1905] + strb r3, [r4, #697] movs r3, #7 strb r3, [r5, #4013] - b .L1571 -.L1581: + b .L1637 +.L1648: sub r3, r0, #67 uxtb r3, r3 cmp r3, #1 - bls .L1582 + bls .L1649 sub r2, r0, #34 cmp r2, #1 - bhi .L1583 -.L1582: - ldr r2, .L1647+24 + bhi .L1650 +.L1649: + ldr r2, .L1727+24 cmp r0, #35 str r2, [r5, #3996] - beq .L1584 + beq .L1651 cmp r0, #68 - beq .L1584 - ldr r2, .L1647+8 + beq .L1651 + ldr r2, .L1727+8 movs r1, #7 strb r1, [r2, #4013] - b .L1585 -.L1584: + b .L1652 +.L1651: movs r2, #17 strb r2, [r5, #4013] -.L1585: +.L1652: cmp r3, #1 ite ls movls r3, #4 movhi r3, #5 - strb r3, [r4, #1905] - b .L1571 -.L1583: + strb r3, [r4, #697] + b .L1637 +.L1650: cmp r0, #49 itt eq - ldreq r3, .L1647+28 + ldreq r3, .L1727+28 streq r3, [r7, #3996] -.L1571: - ldr r1, [r4, #2768] - ldr r3, .L1647+32 - ldr r2, .L1647 - cmp r1, r3 - bne .L1587 - ldrb r0, [r2, #76] @ zero_extendqisi2 - cbz r0, .L1587 - ldr r2, [r2, #1788] - movs r0, #0 - strb r0, [r2, #18] -.L1587: - ldrb r0, [r4, #1792] @ zero_extendqisi2 - ldr r2, .L1647 - cmp r0, #44 - bne .L1588 - ldrb r0, [r2, #2772] @ zero_extendqisi2 - cbz r0, .L1588 - cmp r1, r3 - bne .L1589 - ldrb r3, [r2, #76] @ zero_extendqisi2 - cbnz r3, .L1588 -.L1589: +.L1637: + ldr r2, [r4, #1744] + ldr r3, .L1727 + cmp r2, r6 + bne .L1654 + ldrb r1, [r3, #140] @ zero_extendqisi2 + cbz r1, .L1654 + ldr r3, [r3, #692] + movs r1, #0 + strb r1, [r3, #18] +.L1654: + ldrb r1, [r4, #1556] @ zero_extendqisi2 + ldr r3, .L1727 + cmp r1, #44 + bne .L1655 + ldrb r1, [r3, #1732] @ zero_extendqisi2 + cbz r1, .L1655 + cmp r2, r6 + bne .L1656 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cbnz r3, .L1655 +.L1656: movs r0, #1 movs r3, #0 - strb r3, [r4, #2772] + strb r3, [r4, #1732] bl FlashSetInterfaceMode movs r0, #1 bl NandcSetMode -.L1588: +.L1655: + ldrb r3, [r4, #1716] @ zero_extendqisi2 + tst r3, #6 + beq .L1657 + ldr r2, .L1727 + ldrb r2, [r2, #1732] @ zero_extendqisi2 + cbnz r2, .L1658 + lsls r3, r3, #31 + bmi .L1657 +.L1658: movs r0, #0 bl flash_enter_slc_mode - ldrb r3, [r4, #2764] @ zero_extendqisi2 - tst r3, #6 - beq .L1590 - ldr r2, .L1647 - ldrb r2, [r2, #2772] @ zero_extendqisi2 - cbnz r2, .L1591 - lsls r3, r3, #31 - bmi .L1590 -.L1591: movs r0, #0 ldr r1, [r5, #4004] bl FlashDdrParaScan -.L1590: movs r0, #0 - mov r8, #16 bl flash_exit_slc_mode - ldr r3, [r4, #1788] - ldr r6, .L1647 +.L1657: + ldr r3, [r4, #692] + mov r8, #16 + ldr r6, .L1727 ldrb r0, [r3, #20] @ zero_extendqisi2 bl FlashBchSel - ldr r0, .L1647+36 + ldr r0, .L1727+32 bl FlashReadIdbDataRaw - ldr r0, .L1647+40 + ldr r0, .L1727+36 strb r8, [r4, #1] bl FlashTimingCfg - ldr r5, [r4, #1788] + ldr r5, [r4, #692] ldrb r3, [r5, #12] @ zero_extendqisi2 ldrh r7, [r5, #14] - strh r3, [r4, #1872] @ movhi + strh r3, [r4, #120] @ movhi ldrb r3, [r5, #7] @ zero_extendqisi2 - str r3, [r4, #1868] - ldr r3, [r4, #1792] - str r3, [r4, #1864] - ldrb r3, [r4, #1616] @ zero_extendqisi2 - strh r3, [r4, #1874] @ movhi + str r3, [r4, #116] + ldr r3, [r4, #1556] + str r3, [r4, #112] + ldrb r3, [r4, #1717] @ zero_extendqisi2 + strh r3, [r4, #122] @ movhi ldrb r3, [r5, #13] @ zero_extendqisi2 - strh r7, [r4, #1878] @ movhi - strh r3, [r4, #1876] @ movhi + strh r7, [r4, #126] @ movhi + strh r3, [r4, #124] @ movhi ldrh r3, [r5, #10] - strh r3, [r4, #1880] @ movhi + strh r3, [r4, #128] @ movhi ldrb r1, [r5, #12] @ zero_extendqisi2 ldrh r0, [r5, #10] bl __aeabi_idiv - strh r0, [r4, #1882] @ movhi + strh r0, [r4, #130] @ movhi ldrb r2, [r5, #9] @ zero_extendqisi2 - strh r2, [r4, #1884] @ movhi + strh r2, [r4, #132] @ movhi ldrb r1, [r5, #9] @ zero_extendqisi2 ldrh r3, [r5, #10] smulbb r3, r1, r3 mov r1, #512 - strh r1, [r4, #1888] @ movhi + strh r1, [r4, #136] @ movhi ldrb r1, [r4, #1] @ zero_extendqisi2 - strh r1, [r4, #1890] @ movhi + strh r1, [r4, #138] @ movhi uxth r3, r3 ldrb r1, [r4] @ zero_extendqisi2 - strh r3, [r4, #1886] @ movhi + strh r3, [r4, #134] @ movhi cmp r1, #1 - bne .L1593 + bne .L1660 lsls r3, r3, #1 - lsrs r7, r7, #1 + lsrs r1, r7, #1 lsls r2, r2, #1 - strh r3, [r6, #1886] @ movhi + strh r3, [r6, #134] @ movhi strb r8, [r6, #1] movs r3, #8 - strh r7, [r6, #1878] @ movhi - strh r2, [r6, #1884] @ movhi - strh r3, [r6, #1890] @ movhi -.L1593: + strh r1, [r6, #126] @ movhi + strh r2, [r6, #132] @ movhi + strh r3, [r6, #138] @ movhi +.L1660: ldrb r0, [r5, #20] @ zero_extendqisi2 bl FlashBchSel bl ftl_flash_suspend movs r0, #0 - b .L1550 -.L1595: + b .L1683 +.L1664: mvn r0, #1 -.L1550: - add sp, sp, #28 + b .L1683 +.L1640: + cmp r0, #7 +.L1724: + beq .L1665 + ldr r3, .L1727+40 + b .L1642 +.L1619: + strb r7, [r1, #4032] + b .L1618 +.L1683: + add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1648: +.L1728: .align 2 -.L1647: +.L1727: .word .LANCHOR0 - .word .LC98 + .word .LC97 .word .LANCHOR2 .word HynixReadRetrial - .word .LANCHOR0+1926 + .word .LANCHOR0+726 .word MicronReadRetrial .word ToshibaReadRetrial .word SamsungReadRetrial - .word 1446522928 .word .LANCHOR2+1936 .word 150000 + .word .LANCHOR0+718 .fnend .size FlashInit, .-FlashInit .align 1 @@ -10558,63 +10993,63 @@ FlashPageProgMsbFFData: .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 r4, r2 - ldr r2, .L1664 - mov r8, r1 - mov r7, r0 - ldr r3, [r2, #1788] - mov r5, r2 - ldrb r1, [r2, #76] @ zero_extendqisi2 - ldrb r3, [r3, #19] @ zero_extendqisi2 - cbz r1, .L1650 - ldr r1, [r2, #2768] - ldr r2, .L1664+4 - cmp r1, r2 - beq .L1649 -.L1650: - subs r2, r3, #5 - cmp r2, #2 - bls .L1651 - cmp r3, #68 - beq .L1651 - cmp r3, #35 - beq .L1651 - cmp r3, #19 - bne .L1649 -.L1651: - ldr r9, .L1664 + ldr r3, .L1750 + mov r8, r0 + mov r9, r1 + ldr r2, [r3, #692] + mov r6, r3 + ldrb r7, [r2, #19] @ zero_extendqisi2 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cbz r2, .L1730 + ldr r3, [r3, #1728] + cbnz r3, .L1729 +.L1730: + subs r3, r7, #5 + cmp r3, #3 + bls .L1731 + cmp r7, #68 + beq .L1731 + cmp r7, #35 + beq .L1731 + cmp r7, #19 + bne .L1729 +.L1731: + ldr r5, .L1750+4 movw r10, #65535 - ldr r6, .L1664+8 -.L1653: - ldr r3, [r5, #1788] + mov fp, r5 +.L1733: + ldr r3, [r6, #692] ldrh r3, [r3, #10] cmp r3, r4 - bls .L1649 - add r3, r9, r4, lsl #1 - ldrh r3, [r3, #592] + bls .L1729 + add r3, r5, r4, lsl #1 + ldrh r3, [r3, #704] cmp r3, r10 - bne .L1649 - movs r1, #255 + bne .L1729 + cmp r7, #8 mov r2, #32768 - ldr r0, [r6, #4016] - bl memset - add r1, r4, r8 + ite eq + moveq r1, #0 + movne r1, #255 + ldr r0, [r5, #4016] + bl ftl_memset + ldr r2, [fp, #4016] + add r1, r4, r9 adds r4, r4, #1 - mov r0, r7 - ldr r2, [r6, #4016] - movs r3, #0 - bl FlashProgPage + mov r0, r8 + mov r3, r2 uxth r4, r4 - b .L1653 -.L1649: - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L1665: + bl FlashProgPage + b .L1733 +.L1729: + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1751: .align 2 -.L1664: +.L1750: .word .LANCHOR0 - .word 1446522928 .word .LANCHOR2 .fnend .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData @@ -10625,143 +11060,221 @@ FlashPageProgMsbFFData: .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1696 + ldr r3, .L1803 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r6, #0 - ldr r7, .L1696+4 - .pad #28 - sub sp, sp, #28 - ldrb r9, [r3, #265] @ zero_extendqisi2 - mov r8, r1 - mov fp, r0 + .pad #44 + sub sp, sp, #44 + ldr r9, .L1803+24 + movs r7, #0 + str r2, [sp, #16] + mov r4, r0 + ldr r2, [r3] + mov r10, r9 + str r1, [sp, #12] + str r3, [sp, #20] + str r2, [sp, #36] + ldr r2, .L1803+4 + ldrb r2, [r2, #481] @ zero_extendqisi2 str r2, [sp, #8] - mov r10, r7 -.L1667: - cmp r6, r8 - beq .L1695 - rsb r3, r6, r8 - add r2, sp, #20 - mov r0, fp - ldr r1, [sp, #8] +.L1753: + ldr r3, [sp, #12] + cmp r7, r3 + beq .L1802 + ldr r3, [sp, #12] + add r2, sp, #32 + mov r0, r4 + ldr r1, [sp, #16] + subs r3, r3, r7 uxtb r3, r3 str r3, [sp] - add r3, sp, #16 + add r3, sp, #28 bl LogAddr2PhyAddr - ldr r3, [sp, #16] - ldrb r2, [r7, #1616] @ zero_extendqisi2 + ldrb r2, [r9, #1717] @ zero_extendqisi2 + ldr r3, [sp, #28] cmp r3, r2 - bcc .L1668 + bcc .L1754 mov r3, #-1 - str r3, [fp] - b .L1669 -.L1668: - add r3, r3, r7 - ldrb r4, [r3, #1620] @ zero_extendqisi2 - mov r0, r4 + str r3, [r4] + b .L1755 +.L1754: + add r3, r3, r9 + mov r8, #0 + ldrb r6, [r3, #1720] @ zero_extendqisi2 + mov r0, r6 bl NandcWaitFlashReady - mov r0, r4 + mov r0, r6 bl NandcFlashCs - ldr r1, [sp, #20] - mov r0, r4 +.L1756: + ldr r1, [sp, #32] + mov r0, r6 bl FlashReadCmd - mov r0, r4 + mov r0, r6 bl NandcWaitFlashReady - ldr r3, [fp, #12] + ldr r3, [r4, #12] + mov r0, r6 movs r1, #0 - mov r2, r9 - mov r0, r4 str r3, [sp] - ldr r3, [fp, #8] + ldr r2, [sp, #8] + ldr r3, [r4, #8] bl NandcXferData - ldr r3, [sp, #20] - ldr r1, [r7, #4] - add r1, r1, r3 + ldr r3, .L1803+8 + ldrb r3, [r3, #4032] @ zero_extendqisi2 mov r5, r0 - mov r0, r4 + cbnz r3, .L1757 +.L1760: + adds r3, r5, #1 + beq .L1758 + b .L1759 +.L1757: + mov r0, r6 + bl flash_read_ecc + cmp r0, #5 + bls .L1760 + mov r5, #256 + b .L1759 +.L1758: + cmp r8, #10 + beq .L1780 + add r8, r8, #1 + b .L1756 +.L1759: + cmp r8, #0 + it ne + movne r5, #256 + b .L1761 +.L1780: + mov r5, #256 +.L1761: + mov r8, #0 +.L1762: + ldr r3, [sp, #32] + mov r0, r6 + ldr r1, [r10, #4] + add r1, r1, r3 bl FlashReadCmd - ldr r3, [fp, #8] - cbz r3, .L1670 + mov r0, r6 + bl NandcWaitFlashReady + ldr r3, [r4, #8] + cbz r3, .L1763 add r3, r3, #2048 -.L1670: - ldr r2, [fp, #12] - cbz r2, .L1671 +.L1763: + ldr r2, [r4, #12] + cbz r2, .L1764 adds r2, r2, #8 -.L1671: +.L1764: str r2, [sp] + mov r0, r6 + ldr r2, [sp, #8] movs r1, #0 - mov r2, r9 - mov r0, r4 bl NandcXferData - str r0, [sp, #12] - mov r0, r4 + ldr r3, .L1803+8 + ldrb r2, [r3, #4032] @ zero_extendqisi2 + mov fp, r0 + cbnz r2, .L1765 +.L1768: + cmp fp, #-1 + beq .L1766 + b .L1767 +.L1765: + mov r0, r6 + bl flash_read_ecc + cmp r0, #5 + bls .L1768 + mov fp, #256 + b .L1767 +.L1766: + cmp r8, #10 + beq .L1784 + add r8, r8, #1 + b .L1762 +.L1767: + cmp r8, #0 + it ne + movne fp, #256 + b .L1769 +.L1784: + mov fp, #256 +.L1769: + mov r0, r6 bl NandcFlashDeCs - ldr r3, [sp, #12] - cmp r5, r3 - it cc - movcc r5, r3 - ldrb r3, [r10, #1892] @ zero_extendqisi2 + ldrb r3, [r10, #1792] @ zero_extendqisi2 + cmp r5, fp add r3, r3, r3, lsl #1 + it cc + movcc r5, fp cmp r5, r3, asr #2 - bls .L1672 + bls .L1770 adds r0, r5, #1 it ne movne r5, #256 - str r5, [fp] - b .L1674 -.L1672: + str r5, [r4] + b .L1772 +.L1770: movs r3, #0 - str r3, [fp] -.L1674: - ldr r3, [fp, #12] - cbz r3, .L1675 + str r3, [r4] +.L1772: + ldr r3, [r4, #12] + cbz r3, .L1773 + ldr r2, [r3, #12] + adds r2, r2, #1 + bne .L1773 ldr r2, [r3, #8] adds r1, r2, #1 - bne .L1675 + bne .L1773 ldr r3, [r3] adds r3, r3, #1 it ne - strne r2, [fp] -.L1675: - ldr r3, [fp] + strne r2, [r4] +.L1773: + ldr r3, [r4] adds r2, r3, #1 - bne .L1669 - ldr r1, [fp, #4] - ldr r0, .L1696+8 - ldrb r2, [r10, #1892] @ zero_extendqisi2 + bne .L1755 + ldr r1, [r4, #4] + ldr r0, .L1803+12 + ldrb r2, [r10, #1792] @ zero_extendqisi2 bl printk - ldr r1, [fp, #8] - cbz r1, .L1677 - ldr r0, .L1696+12 + ldr r1, [r4, #8] + cbz r1, .L1775 + ldr r0, .L1803+16 movs r2, #4 movs r3, #8 bl rknand_print_hex -.L1677: - ldr r1, [fp, #12] - cbz r1, .L1669 +.L1775: + ldr r1, [r4, #12] + cbz r1, .L1755 movs r2, #4 - ldr r0, .L1696+16 + ldr r0, .L1803+20 mov r3, r2 bl rknand_print_hex -.L1669: - adds r6, r6, #1 - add fp, fp, #36 - b .L1667 -.L1695: +.L1755: + adds r7, r7, #1 + adds r4, r4, #36 + b .L1753 +.L1802: + ldr r3, [sp, #20] movs r0, #0 - add sp, sp, #28 + ldr r2, [sp, #36] + ldr r3, [r3] + cmp r2, r3 + beq .L1778 + bl __stack_chk_fail +.L1778: + add sp, sp, #44 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1697: +.L1804: .align 2 -.L1696: +.L1803: + .word __stack_chk_guard .word .LANCHOR1 - .word .LANCHOR0 + .word .LANCHOR2 + .word .LC98 .word .LC99 .word .LC100 - .word .LC101 + .word .LANCHOR0 .fnend .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 1 @@ -10771,33 +11284,36 @@ FlashReadSlc2KPages: .type FlashReadPages, %function FlashReadPages: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 48 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1797 + ldr r3, .L1905 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, #265] @ zero_extendqisi2 + .pad #60 + sub sp, sp, #60 + ldr r3, [r3] mov r10, r0 - ldr r5, .L1797+4 + ldr r5, .L1905+4 str r1, [sp, #28] + str r3, [sp, #52] + ldr r3, .L1905+8 + str r2, [sp, #16] + ldrb r3, [r3, #481] @ zero_extendqisi2 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, .L1741 + cbz r3, .L1849 bl FlashReadSlc2KPages - b .L1792 -.L1741: + b .L1807 +.L1849: mov r8, r3 str r3, [sp, #12] -.L1699: +.L1806: ldr r3, [sp, #12] ldr r2, [sp, #28] cmp r3, r2 - bcs .L1794 + bcs .L1902 ldr r3, [sp, #12] mov r9, #36 ldr r2, [sp, #12] @@ -10805,92 +11321,93 @@ FlashReadPages: mul r9, r9, r3 ldr r3, [sp, #28] subs r3, r3, r2 - add r2, sp, #44 + add r2, sp, #48 add r7, r10, r9 uxtb r3, r3 ldr fp, [r7, #4] mov r0, r7 str r3, [sp] - add r3, sp, #40 + add r3, sp, #44 bl LogAddr2PhyAddr - ldr r3, [sp, #40] - ldrb r2, [r5, #1616] @ zero_extendqisi2 - cmp r3, r2 + ldrb r2, [r5, #1717] @ zero_extendqisi2 + ldr r3, [sp, #44] mov r6, r0 - bcc .L1701 + cmp r3, r2 + bcc .L1808 mov r3, #-1 str r3, [r10, r9] - b .L1702 -.L1701: + b .L1809 +.L1808: add r3, r3, r5 - ldrb r4, [r3, #1620] @ zero_extendqisi2 - ldr r3, .L1797+8 + ldrb r4, [r3, #1720] @ zero_extendqisi2 + ldr r3, .L1905+12 mov r0, r4 - ldrb r3, [r3, #4032] @ zero_extendqisi2 + ldrb r3, [r3, #4033] @ zero_extendqisi2 cmp r3, #0 it eq moveq r6, #0 bl NandcWaitFlashReady - ldr r3, .L1797+4 - ldr r3, [r3, #1788] - ldrb r1, [r3, #19] @ zero_extendqisi2 - subs r3, r1, #1 - cmp r3, #6 - bhi .L1704 - adds r2, r5, r4 - cmp r1, #7 - ldrb r3, [r2, #1918] @ zero_extendqisi2 - it eq - ldrbeq r3, [r2, #1926] @ zero_extendqisi2 - ldr r2, .L1797+4 + ldr r3, .L1905+4 + ldr r3, [r3, #692] + ldrb r2, [r3, #19] @ zero_extendqisi2 + subs r3, r2, #1 + cmp r3, #7 + bhi .L1811 + subs r2, r2, #7 + adds r1, r5, r4 + cmp r2, #1 + ldr r2, .L1905+4 + ldrb r3, [r1, #710] @ zero_extendqisi2 add r2, r2, r4 - ldrb r2, [r2, #2760] @ zero_extendqisi2 + it ls + ldrbls r3, [r1, #718] @ zero_extendqisi2 + ldrb r2, [r2, #1552] @ zero_extendqisi2 cmp r2, r3 - beq .L1704 + beq .L1811 mov r0, r4 - ldrb r1, [r5, #1907] @ zero_extendqisi2 - ldr r2, .L1797+12 + ldrb r1, [r5, #699] @ zero_extendqisi2 + ldr r2, .L1905+16 bl HynixSetRRPara -.L1704: +.L1811: mov r0, r4 and r3, fp, #-2147483648 str r3, [sp, #20] bl NandcFlashCs ldr r3, [sp, #16] cmp r3, #1 - beq .L1706 + beq .L1813 ldr r3, [sp, #20] - cbz r3, .L1707 -.L1706: - ldr r3, .L1797+4 - ldrb r3, [r3, #76] @ zero_extendqisi2 - cbz r3, .L1707 + cbz r3, .L1814 +.L1813: + ldr r3, .L1905+4 + ldrb r3, [r3, #140] @ zero_extendqisi2 + cbz r3, .L1814 mov r0, r4 bl flash_enter_slc_mode -.L1709: +.L1816: mov fp, #0 - b .L1708 -.L1707: + b .L1815 +.L1814: mov r0, r4 bl flash_exit_slc_mode - b .L1709 -.L1795: + b .L1816 +.L1903: cmp r4, #255 - beq .L1742 -.L1710: - cbz r6, .L1712 + beq .L1850 +.L1817: + cbz r6, .L1819 ldr r2, [r5, #4] mov r0, r4 add r2, r2, r1 bl FlashReadDpCmd -.L1713: +.L1820: mov r0, r4 bl NandcWaitFlashReady - cbz r6, .L1711 + cbz r6, .L1818 mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] bl FlashReadDpDataOutCmd -.L1711: +.L1818: ldr r3, [r7, #12] mov r0, r4 movs r1, #0 @@ -10900,31 +11417,31 @@ FlashReadPages: bl NandcXferData ldrb r3, [r5, #8] @ zero_extendqisi2 mov ip, r0 - cbz r3, .L1744 + cbz r3, .L1852 cmp r0, #-1 - bne .L1744 + bne .L1852 movs r6, #0 strb fp, [r5, #8] -.L1708: - ldr r1, [sp, #44] +.L1815: + ldr r1, [sp, #48] adds r0, r1, #1 - bne .L1710 - b .L1795 -.L1712: + bne .L1817 + b .L1903 +.L1819: mov r0, r4 bl FlashReadCmd - b .L1713 -.L1742: + b .L1820 +.L1850: movs r6, #0 - b .L1711 -.L1744: + b .L1818 +.L1852: mov fp, ip - cbz r6, .L1715 - ldr r3, .L1797+4 + cbz r6, .L1822 + ldr r3, .L1905+4 mov r0, r4 str ip, [sp, #36] ldr r1, [r3, #4] - ldr r3, [sp, #44] + ldr r3, [sp, #48] add r1, r1, r3 bl FlashReadDpDataOutCmd add r3, r9, #36 @@ -10936,12 +11453,12 @@ FlashReadPages: ldr r2, [sp, #24] ldr r3, [r3, #8] bl NandcXferData - ldr ip, [sp, #36] cmp r0, #-1 - mov r8, r0 + ldr ip, [sp, #36] it eq moveq r6, #0 -.L1715: + mov r8, r0 +.L1822: mov r0, r4 str ip, [sp, #36] bl NandcFlashDeCs @@ -10949,18 +11466,18 @@ FlashReadPages: ldrb r3, [sp, #32] @ zero_extendqisi2 cmp ip, #-1 strb r3, [r5, #8] - bne .L1722 - ldrb r3, [r5, #2772] @ zero_extendqisi2 - cbnz r3, .L1717 -.L1721: - ldr r3, .L1797+8 + bne .L1829 + ldrb r3, [r5, #1732] @ zero_extendqisi2 + cbnz r3, .L1824 +.L1828: + ldr r3, .L1905+12 ldr r6, [r3, #3996] - cbnz r6, .L1718 - b .L1796 -.L1717: - ldr r3, [r5, #1828] + cbnz r6, .L1825 + b .L1904 +.L1824: + ldr r3, [r5, #76] mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] ldr r6, [r3, #304] movs r3, #1 str r3, [sp] @@ -10969,180 +11486,189 @@ FlashReadPages: bl FlashDdrTunningRead cmp r0, #-1 mov fp, r0 - beq .L1720 - ldrb r3, [r5, #1892] @ zero_extendqisi2 + beq .L1827 + ldrb r3, [r5, #1792] @ zero_extendqisi2 cmp r0, r3, lsr #1 - bls .L1746 -.L1720: + bls .L1854 +.L1827: ubfx r0, r6, #8, #8 bl NandcSetDdrPara cmp fp, #-1 - beq .L1721 - b .L1746 -.L1718: + beq .L1828 + b .L1854 +.L1825: mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] ldr r2, [r7, #8] ldr r3, [r7, #12] blx r6 cmp r0, #-1 mov fp, r0 - bne .L1723 - ldr r3, [r5, #1788] + bne .L1830 + ldr r3, [r5, #692] ldrb r3, [r3, #19] @ zero_extendqisi2 subs r3, r3, #1 - cmp r3, #6 - bhi .L1724 + cmp r3, #7 + bhi .L1831 mov r0, r4 - ldrb r1, [r5, #1907] @ zero_extendqisi2 - ldr r2, .L1797+12 + ldrb r1, [r5, #699] @ zero_extendqisi2 + ldr r2, .L1905+16 movs r3, #0 bl HynixSetRRPara -.L1724: - ldr r1, [sp, #44] +.L1831: + ldr r1, [sp, #48] mov r0, r4 ldr r2, [r7, #8] ldr r3, [r7, #12] bl FlashReadRawPage ldr r1, [r7, #4] - ldrb r2, [r5, #1892] @ zero_extendqisi2 + ldrb r2, [r5, #1792] @ zero_extendqisi2 mov fp, r0 - ldr r0, .L1797+16 + ldr r0, .L1905+20 mov r3, fp bl printk cmp fp, #-1 - bne .L1723 - ldrb r6, [r5, #76] @ zero_extendqisi2 - cbz r6, .L1725 + bne .L1830 + ldrb r6, [r5, #140] @ zero_extendqisi2 + cbz r6, .L1832 ldr r3, [sp, #16] mov r0, r4 cmp r3, #1 - beq .L1726 + beq .L1833 ldr r3, [sp, #20] - cbz r3, .L1727 -.L1726: + cbz r3, .L1834 +.L1833: bl flash_enter_slc_mode - b .L1728 -.L1727: + b .L1835 +.L1834: bl flash_exit_slc_mode -.L1728: - ldr r3, .L1797+8 +.L1835: + ldr r3, .L1905+12 mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] ldr r2, [r7, #8] ldr r6, [r3, #3996] ldr r3, [r7, #12] blx r6 movs r6, #0 mov fp, r0 - b .L1729 -.L1796: + b .L1836 +.L1904: mov r0, r4 - ldr r1, [sp, #44] + ldr r1, [sp, #48] ldr r2, [r7, #8] ldr r3, [r7, #12] bl FlashReadRawPage mov fp, r0 - b .L1729 -.L1746: + b .L1836 +.L1854: movs r6, #0 -.L1722: - ldrb r3, [r5, #1892] @ zero_extendqisi2 +.L1829: + ldrb r3, [r5, #1792] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp fp, r3, asr #2 - bls .L1731 - ldr r3, .L1797+8 + bls .L1838 + ldr r3, .L1905+12 ldr r3, [r3, #3996] - cbz r3, .L1748 -.L1729: + cbz r3, .L1856 +.L1836: cmp fp, #-1 - beq .L1725 - b .L1731 -.L1748: + beq .L1832 + b .L1838 +.L1856: mov fp, #256 -.L1725: +.L1832: str fp, [r10, r9] - b .L1732 -.L1798: + b .L1839 +.L1906: .align 2 -.L1797: - .word .LANCHOR1 +.L1905: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR1 .word .LANCHOR2 - .word .LANCHOR0+1910 - .word .LC102 -.L1723: + .word .LANCHOR0+702 + .word .LC101 +.L1830: movs r6, #0 -.L1731: +.L1838: cmp fp, #256 - beq .L1725 + beq .L1832 movs r3, #0 str r3, [r10, r9] -.L1732: +.L1839: ldr r3, [r10, r9] adds r2, r3, #1 - bne .L1734 + bne .L1841 ldr r1, [r7, #4] - ldr r0, .L1799 - ldrb r2, [r5, #1892] @ zero_extendqisi2 + ldr r0, .L1907 + ldrb r2, [r5, #1792] @ zero_extendqisi2 bl printk ldr r1, [r7, #12] - cbz r1, .L1734 + cbz r1, .L1841 movs r2, #4 - ldr r0, .L1799+4 + ldr r0, .L1907+4 mov r3, r2 bl rknand_print_hex -.L1734: - cbz r6, .L1736 - ldrb r3, [r5, #1892] @ zero_extendqisi2 +.L1841: + cbz r6, .L1843 + ldrb r3, [r5, #1792] @ zero_extendqisi2 add r3, r3, r3, lsl #1 cmp r8, r3, asr #2 - bls .L1737 - ldr r3, .L1799+8 + bls .L1844 + ldr r3, .L1907+8 ldr r3, [r3, #3996] cmp r3, #0 it eq moveq r8, #256 -.L1737: +.L1844: add r9, r9, #36 cmp r8, #-1 str r8, [r10, r9] - beq .L1736 + beq .L1843 cmp r8, #256 itt ne movne r3, #0 strne r3, [r10, r9] -.L1736: +.L1843: ldr r3, [sp, #12] add r3, r3, r6 str r3, [sp, #12] ldr r3, [sp, #16] cmp r3, #1 - beq .L1738 + beq .L1845 ldr r3, [sp, #20] - cbz r3, .L1702 -.L1738: - ldrb r3, [r5, #76] @ zero_extendqisi2 - cbz r3, .L1702 + cbz r3, .L1809 +.L1845: + ldrb r3, [r5, #140] @ zero_extendqisi2 + cbz r3, .L1809 mov r0, r4 bl flash_exit_slc_mode -.L1702: +.L1809: ldr r3, [sp, #12] adds r3, r3, #1 str r3, [sp, #12] - b .L1699 -.L1794: + b .L1806 +.L1902: movs r0, #0 -.L1792: - add sp, sp, #52 +.L1807: + ldr r3, .L1907+12 + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L1848 + bl __stack_chk_fail +.L1848: + add sp, sp, #60 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1800: +.L1908: .align 2 -.L1799: - .word .LC99 - .word .LC101 +.L1907: + .word .LC98 + .word .LC100 .word .LANCHOR2 + .word __stack_chk_guard .fnend .size FlashReadPages, .-FlashReadPages .align 1 @@ -11152,92 +11678,105 @@ FlashReadPages: .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, #16 - ldr r7, .L1813 - .pad #52 - sub sp, sp, #52 - ldr r4, .L1813+4 + .pad #60 + sub sp, sp, #60 + ldr r9, .L1922+12 + movs r1, #0 + ldr r7, .L1922 movs r5, #0 + ldr r4, .L1922+4 mov fp, #-1 - ldrh r3, [r7, #1878] - addw r0, r4, #4036 - ldrh r6, [r7, #1876] + ldr r3, [r9] mov r10, r5 + ldrh r2, [r7, #126] + addw r0, r4, #4036 mov r8, r7 - mov r9, r4 - smulbb r6, r6, r3 - bl __memzero + str r3, [sp, #52] + ldrh r3, [r7, #124] + smulbb r3, r3, r2 + movs r2, #16 + uxth r6, r3 + bl ftl_memset ldr r3, [r4, #4020] - str r5, [sp, #20] - str r3, [sp, #24] - uxth r6, r6 -.L1802: - ldrb r3, [r8, #1616] @ zero_extendqisi2 + str r9, [sp, #4] + mov r9, r4 + str r5, [sp, #24] + str r3, [sp, #28] +.L1910: + ldrb r3, [r8, #1717] @ zero_extendqisi2 uxtb r7, r5 cmp r3, r7 - bls .L1812 + bls .L1921 mul ip, r6, r7 subs r4, r6, #1 sub r3, r6, #12 uxth r4, r4 -.L1803: +.L1911: cmp r4, r3 - ble .L1805 + ble .L1913 add r2, ip, r4 movs r1, #1 - add r0, sp, #12 - str r3, [sp, #4] + add r0, sp, #16 + str r3, [sp, #12] lsls r2, r2, #10 - str r2, [sp, #16] + str r2, [sp, #20] mov r2, r1 - str ip, [sp] + str ip, [sp, #8] bl FlashReadPages - ldr r2, [sp, #12] - ldr ip, [sp] + ldr r2, [sp, #16] + ldr ip, [sp, #8] adds r2, r2, #1 - ldr r3, [sp, #4] - beq .L1804 + ldr r3, [sp, #12] + beq .L1912 ldr r2, [r9, #4020] ldrh r1, [r2] movw r2, #61664 cmp r1, r2 - bne .L1804 + bne .L1912 mov r1, r7 - ldr r0, .L1813+8 + ldr r0, .L1922+8 mov r2, r4 add r10, r10, #1 bl printk - ldr r3, .L1813+4 + ldr r3, .L1922+4 uxth r10, r10 add r7, r3, r7, lsl #1 strh r4, [r7, #4036] @ movhi - b .L1805 -.L1804: + b .L1913 +.L1912: subs r4, r4, #1 uxth r4, r4 - b .L1803 -.L1805: - ldrb r3, [r8, #1616] @ zero_extendqisi2 + b .L1911 +.L1913: + ldrb r3, [r8, #1717] @ zero_extendqisi2 adds r5, r5, #1 cmp r3, r10 it eq moveq fp, #0 - b .L1802 -.L1812: + b .L1910 +.L1921: + ldr r3, [sp, #4] mov r0, fp - add sp, sp, #52 + ldr r2, [sp, #52] + ldr r3, [r3] + cmp r2, r3 + beq .L1917 + bl __stack_chk_fail +.L1917: + add sp, sp, #60 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1814: +.L1923: .align 2 -.L1813: +.L1922: .word .LANCHOR0 .word .LANCHOR2 - .word .LC103 + .word .LC102 + .word __stack_chk_guard .fnend .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 1 @@ -11253,199 +11792,209 @@ FlashProgSlc2KPages: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #68 sub sp, sp, #68 - ldr r8, .L1845+20 - movs r7, #0 - str r3, [sp, #12] - mov r6, r1 - ldr r3, .L1845 mov r9, r2 - mov r4, r0 - mov r10, r0 - mov fp, r8 - ldrb r3, [r3, #265] @ zero_extendqisi2 + ldr r8, .L1955+28 str r3, [sp, #8] -.L1816: + movs r7, #0 + ldr r3, .L1955 + mov r6, r1 + mov r4, r0 + mov fp, r0 + ldr r2, [r3] + str r3, [sp, #12] + str r2, [sp, #60] + ldr r2, .L1955+4 + ldrb r10, [r2, #481] @ zero_extendqisi2 +.L1925: cmp r7, r6 - beq .L1844 + beq .L1954 subs r3, r6, r7 - add r2, sp, #20 - mov r0, r10 + add r2, sp, #16 + mov r0, fp mov r1, r9 uxtb r3, r3 str r3, [sp] - add r3, sp, #24 + add r3, sp, #20 bl LogAddr2PhyAddr - ldr r3, [sp, #24] - ldrb r2, [r8, #1616] @ zero_extendqisi2 + ldrb r2, [r8, #1717] @ zero_extendqisi2 + ldr r3, [sp, #20] cmp r3, r2 - bcc .L1817 + bcc .L1926 mov r3, #-1 - str r3, [r10] - b .L1818 -.L1817: + str r3, [fp] + b .L1927 +.L1926: add r3, r3, r8 - ldrb r5, [r3, #1620] @ zero_extendqisi2 + ldrb r5, [r3, #1720] @ zero_extendqisi2 mov r0, r5 bl NandcWaitFlashReady mov r0, r5 bl NandcFlashCs mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #16] bl FlashProgFirstCmd - ldr r3, [r10, #12] - ldr r2, [sp, #8] + ldr r3, [fp, #12] + mov r2, r10 movs r1, #1 mov r0, r5 str r3, [sp] - ldr r3, [r10, #8] + ldr r3, [fp, #8] bl NandcXferData - ldr r1, [sp, #20] mov r0, r5 + ldr r1, [sp, #16] bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady - ldr r1, [sp, #20] mov r0, r5 + ldr r1, [sp, #16] bl FlashReadStatus - ldr r3, [sp, #20] + ldr r3, [sp, #16] sbfx r0, r0, #0, #1 - str r0, [r10] - ldr r1, [r8, #4] + str r0, [fp] mov r0, r5 + ldr r1, [r8, #4] add r1, r1, r3 bl FlashProgFirstCmd - ldr r3, [r10, #8] - cbz r3, .L1819 + ldr r3, [fp, #8] + cbz r3, .L1928 add r3, r3, #2048 -.L1819: - ldr r2, [r10, #12] - cbz r2, .L1820 +.L1928: + ldr r2, [fp, #12] + cbz r2, .L1929 adds r2, r2, #8 -.L1820: +.L1929: str r2, [sp] movs r1, #1 - ldr r2, [sp, #8] + mov r2, r10 mov r0, r5 bl NandcXferData - ldr r3, [sp, #20] - ldr r1, [fp, #4] + ldr r1, [r8, #4] mov r0, r5 + ldr r3, [sp, #16] add r1, r1, r3 bl FlashProgSecondCmd mov r0, r5 bl NandcWaitFlashReady mov r0, r5 - ldr r1, [sp, #20] + ldr r1, [sp, #16] bl FlashReadStatus lsls r2, r0, #31 mov r0, r5 itt mi movmi r3, #-1 - strmi r3, [r10] + strmi r3, [fp] bl NandcFlashDeCs -.L1818: +.L1927: adds r7, r7, #1 - add r10, r10, #36 - b .L1816 -.L1844: + add fp, fp, #36 + b .L1925 +.L1954: + ldr r3, [sp, #8] + cbnz r3, .L1943 +.L1939: ldr r3, [sp, #12] - cmp r3, #0 - beq .L1843 - ldr r8, .L1845+24 - mov r10, #0 - mov fp, r8 -.L1823: - cmp r10, r6 - beq .L1843 + movs r0, #0 + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L1940 + bl __stack_chk_fail +.L1943: + ldr r7, .L1955+8 + mov r8, #0 + mov r10, r7 +.L1932: + cmp r8, r6 + beq .L1939 ldr r3, [r4] adds r3, r3, #1 - bne .L1824 + bne .L1933 ldr r1, [r4, #4] - ldr r0, .L1845+4 + ldr r0, .L1955+12 bl printk - b .L1825 -.L1824: - rsb r3, r10, r6 + b .L1934 +.L1933: + rsb r3, r8, r6 mov r1, r9 - add r2, sp, #20 + add r2, sp, #16 mov r0, r4 uxtb r3, r3 str r3, [sp] - add r3, sp, #24 - mov r7, r4 + add r3, sp, #20 bl LogAddr2PhyAddr - ldr r2, [r8, #4024] + ldr r2, [r7, #4024] movs r3, #0 - add r5, sp, #28 + mov lr, r4 str r3, [r2] - ldr r2, [r8, #4028] + ldr r2, [r7, #4028] str r3, [r2] - ldmia r7!, {r0, r1, r2, r3} + ldmia lr!, {r0, r1, r2, r3} + add r5, sp, #24 stmia r5!, {r0, r1, r2, r3} - ldmia r7!, {r0, r1, r2, r3} + ldmia lr!, {r0, r1, r2, r3} stmia r5!, {r0, r1, r2, r3} - add r0, sp, #28 - ldr r3, [r7] + add r0, sp, #24 + ldr r3, [lr] movs r1, #1 mov r2, r9 str r3, [r5] - ldr r3, [r8, #4024] + ldr r3, [r7, #4024] + str r3, [sp, #32] + ldr r3, [r7, #4028] str r3, [sp, #36] - ldr r3, [r8, #4028] - str r3, [sp, #40] bl FlashReadPages - ldr r5, [sp, #28] + ldr r5, [sp, #24] adds r3, r5, #1 - bne .L1826 - ldr r0, .L1845+8 + bne .L1935 + ldr r0, .L1955+16 ldr r1, [r4, #4] bl printk str r5, [r4] -.L1826: +.L1935: ldr r3, [r4, #12] - cbz r3, .L1827 + cbz r3, .L1936 ldr r2, [r3] - ldr r3, [fp, #4028] + ldr r3, [r10, #4028] ldr r3, [r3] cmp r2, r3 - beq .L1827 - ldr r0, .L1845+12 + beq .L1936 + ldr r0, .L1955+20 ldr r1, [r4, #4] bl printk mov r3, #-1 str r3, [r4] -.L1827: +.L1936: ldr r3, [r4, #8] - cbz r3, .L1825 + cbz r3, .L1934 ldr r2, [r3] - ldr r3, [fp, #4024] + ldr r3, [r10, #4024] ldr r3, [r3] cmp r2, r3 - beq .L1825 - ldr r0, .L1845+16 + beq .L1934 + ldr r0, .L1955+24 ldr r1, [r4, #4] bl printk mov r3, #-1 str r3, [r4] -.L1825: - add r10, r10, #1 +.L1934: + add r8, r8, #1 adds r4, r4, #36 - b .L1823 -.L1843: - movs r0, #0 + b .L1932 +.L1940: add sp, sp, #68 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1846: +.L1956: .align 2 -.L1845: +.L1955: + .word __stack_chk_guard .word .LANCHOR1 + .word .LANCHOR2 + .word .LC103 .word .LC104 .word .LC105 .word .LC106 - .word .LC107 .word .LANCHOR0 - .word .LANCHOR2 .fnend .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 1 @@ -11460,59 +12009,59 @@ FtlLoadFactoryBbt: push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r6, #0 - ldr r5, .L1858 - ldr r7, .L1858+4 + ldr r5, .L1968 + ldr r7, .L1968+4 ldr r3, [r5, #1776] - subw r8, r7, #2982 + subw r8, r7, #1946 ldr r9, [r5, #1800] mov r10, r8 str r3, [r5, #4060] str r9, [r5, #4064] -.L1848: - ldrh r3, [r8, #2862] +.L1958: + ldrh r3, [r8, #1826] cmp r6, r3 - bcs .L1857 - ldrh r4, [r8, #2906] + bcs .L1967 + ldrh r4, [r8, #1870] movw fp, #61664 movw r3, #65535 strh r3, [r7, #2]! @ movhi subs r4, r4, #1 uxth r4, r4 -.L1849: - ldrh r3, [r10, #2906] +.L1959: + ldrh r3, [r10, #1870] sub r2, r3, #16 cmp r4, r2 - ble .L1851 + ble .L1961 mla r3, r3, r6, r4 movs r1, #1 - ldr r0, .L1858+8 + ldr r0, .L1968+8 mov r2, r1 lsls r3, r3, #10 str r3, [r5, #4056] bl FlashReadPages ldr r3, [r5, #4052] adds r3, r3, #1 - beq .L1850 + beq .L1960 ldrh r3, [r9] cmp r3, fp - bne .L1850 + bne .L1960 strh r4, [r7] @ movhi - b .L1851 -.L1850: + b .L1961 +.L1960: subs r4, r4, #1 uxth r4, r4 - b .L1849 -.L1851: + b .L1959 +.L1961: adds r6, r6, #1 - b .L1848 -.L1857: + b .L1958 +.L1967: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1859: +.L1969: .align 2 -.L1858: +.L1968: .word .LANCHOR2 - .word .LANCHOR0+2982 + .word .LANCHOR0+1946 .word .LANCHOR2+4052 .fnend .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt @@ -11525,73 +12074,82 @@ FtlGetLastWrittenPage: .fnstart @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1871 + push {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + .pad #108 + sub sp, sp, #108 + ldr r6, .L1982 cmp r1, #1 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - .pad #104 - sub sp, sp, #104 - it eq - ldrheq r4, [r3, #2912] - mov r8, r1 - it ne - ldrhne r4, [r3, #2910] - lsls r6, r0, #10 - add r3, sp, #40 - add r0, sp, #4 + mov r9, r1 + lsl r7, r0, #10 + mov r1, #1 + mov r0, sp + ldr r3, [r6] + mov r2, r9 + mov r8, #0 + str r8, [sp, #8] + str r3, [sp, #100] + ldr r3, .L1982+4 + ite eq + ldrheq r4, [r3, #1874] + ldrhne r4, [r3, #1872] + add r3, sp, #36 + str r3, [sp, #12] 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] + orrs r3, r3, r7 + str r3, [sp, #4] bl FlashReadPages - ldr r3, [sp, #40] + ldr r3, [sp, #36] adds r3, r3, #1 - bne .L1863 -.L1864: - sxth r3, r7 + bne .L1973 +.L1974: + sxth r3, r8 sxth r4, r5 cmp r3, r4 - bgt .L1863 + bgt .L1973 add r4, r4, r3 - add r0, sp, #4 + mov r0, sp movs r1, #1 - mov r2, r8 + mov r2, r9 add r4, r4, r4, lsr #31 asrs r4, r4, #1 sxth r3, r4 - orrs r3, r3, r6 - str r3, [sp, #8] + orrs r3, r3, r7 + str r3, [sp, #4] bl FlashReadPages + ldr r3, [sp, #36] + adds r3, r3, #1 + bne .L1975 ldr r3, [sp, #40] adds r3, r3, #1 - bne .L1865 - ldr r3, [sp, #44] + bne .L1975 + ldr r3, [sp] adds r3, r3, #1 - bne .L1865 - ldr r3, [sp, #4] - adds r3, r3, #1 - beq .L1865 - subs r4, r4, #1 - uxth r5, r4 - b .L1864 -.L1865: + beq .L1975 + subs r5, r4, #1 + uxth r5, r5 + b .L1974 +.L1975: adds r3, r4, #1 - uxth r7, r3 - b .L1864 -.L1863: + uxth r8, r3 + b .L1974 +.L1973: + ldr r2, [sp, #100] sxth r0, r5 - add sp, sp, #104 + ldr r3, [r6] + cmp r2, r3 + beq .L1978 + bl __stack_chk_fail +.L1978: + add sp, sp, #108 @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L1872: + pop {r4, r5, r6, r7, r8, r9, pc} +.L1983: .align 2 -.L1871: +.L1982: + .word __stack_chk_guard .word .LANCHOR0 .fnend .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage @@ -11606,103 +12164,103 @@ FtlLoadBbt: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - ldr r4, .L1902 - ldr r7, .L1902+4 + ldr r4, .L2013 + ldr r7, .L2013+4 ldr r3, [r4, #1776] mov r8, r4 ldr r6, [r4, #1800] str r3, [r4, #4060] str r6, [r4, #4064] bl FtlBbtMemInit - ldrh r5, [r7, #2906] + ldrh r5, [r7, #1870] subs r5, r5, #1 uxth r5, r5 -.L1874: - ldrh r3, [r7, #2906] +.L1985: + ldrh r3, [r7, #1870] subs r3, r3, #48 cmp r5, r3 - ble .L1877 + ble .L1988 movs r1, #1 - ldr r0, .L1902+8 + ldr r0, .L2013+8 lsls r3, r5, #10 str r3, [r4, #4056] mov r2, r1 bl FlashReadPages ldr r3, [r4, #4052] adds r3, r3, #1 - bne .L1875 + bne .L1986 movs r1, #1 ldr r3, [r8, #4056] - ldr r0, .L1902+8 + ldr r0, .L2013+8 mov r2, r1 adds r3, r3, #1 str r3, [r8, #4056] bl FlashReadPages -.L1875: +.L1986: ldr r3, [r4, #4052] adds r3, r3, #1 - beq .L1876 + beq .L1987 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L1876 + bne .L1987 ldr r3, [r6, #4] - strh r5, [r7, #2972] @ movhi - str r3, [r7, #2980] + strh r5, [r7, #1936] @ movhi + str r3, [r7, #1944] ldrh r3, [r6, #8] - strh r3, [r7, #2976] @ movhi - b .L1877 -.L1876: + strh r3, [r7, #1940] @ movhi + b .L1988 +.L1987: subs r5, r5, #1 uxth r5, r5 - b .L1874 -.L1877: - ldrh r3, [r7, #2972] + b .L1985 +.L1988: + ldrh r3, [r7, #1936] movw r2, #65535 - ldr r5, .L1902+4 + ldr r5, .L2013+4 cmp r3, r2 - beq .L1891 - ldrh r3, [r5, #2976] + beq .L2002 + ldrh r3, [r5, #1940] cmp r3, r2 - beq .L1881 + beq .L1992 movs r1, #1 - ldr r0, .L1902+8 + ldr r0, .L2013+8 lsls r3, r3, #10 str r3, [r4, #4056] mov r2, r1 bl FlashReadPages ldr r3, [r4, #4052] adds r3, r3, #1 - beq .L1881 + beq .L1992 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L1881 + bne .L1992 ldr r3, [r6, #4] - ldr r2, [r5, #2980] + ldr r2, [r5, #1944] cmp r3, r2 itttt hi - strhi r3, [r5, #2980] - ldrhhi r2, [r5, #2976] + strhi r3, [r5, #1944] + ldrhhi r2, [r5, #1940] ldrhhi r3, [r6, #8] - strhhi r2, [r5, #2972] @ movhi + strhhi r2, [r5, #1936] @ movhi it hi - strhhi r3, [r5, #2976] @ movhi -.L1881: - ldrh r0, [r7, #2972] + strhhi r3, [r5, #1940] @ movhi +.L1992: + ldrh r0, [r7, #1936] movs r1, #1 bl FtlGetLastWrittenPage movw r8, #61649 uxth r5, r0 adds r0, r0, #1 - strh r0, [r7, #2974] @ movhi -.L1883: + strh r0, [r7, #1938] @ movhi +.L1994: sxth r3, r5 cmp r3, #0 - blt .L1888 - ldrh r2, [r7, #2972] + blt .L1999 + ldrh r2, [r7, #1936] movs r1, #1 - ldr r0, .L1902+8 + ldr r0, .L2013+8 orr r3, r3, r2, lsl #10 str r3, [r4, #4056] ldr r3, [r4, #1776] @@ -11711,41 +12269,41 @@ FtlLoadBbt: bl FlashReadPages ldr r3, [r4, #4052] adds r3, r3, #1 - beq .L1884 + beq .L1995 ldrh r3, [r6] cmp r3, r8 - bne .L1884 -.L1888: + bne .L1995 +.L1999: ldrh r2, [r6, #10] ldrh r0, [r6, #12] - ldr r3, .L1902+4 - strh r2, [r7, #2978] @ movhi + ldr r3, .L2013+4 + strh r2, [r7, #1942] @ movhi movw r2, #65535 cmp r0, r2 - bne .L1885 - b .L1886 -.L1884: + bne .L1996 + b .L1997 +.L1995: subs r5, r5, #1 uxth r5, r5 - b .L1883 -.L1885: - ldr r2, [r3, #2836] + b .L1994 +.L1996: + ldr r2, [r3, #1800] cmp r0, r2 - beq .L1886 - ldrh r3, [r3, #2850] + beq .L1997 + ldrh r3, [r3, #1814] lsrs r3, r3, #2 cmp r2, r3 - bcs .L1886 + bcs .L1997 cmp r0, r3 - bcs .L1886 + bcs .L1997 bl FtlSysBlkNumInit -.L1886: - ldr r6, .L1902+12 +.L1997: + ldr r6, .L2013+12 movs r5, #0 -.L1889: - ldrh r3, [r7, #2862] +.L2000: + ldrh r3, [r7, #1826] cmp r5, r3 - bcs .L1901 + bcs .L2012 ldrh r2, [r4, #1864] ldr r1, [r4, #4060] ldr r0, [r6, #4]! @@ -11753,20 +12311,20 @@ FtlLoadBbt: mla r1, r5, r2, r1 bl ftl_memcpy adds r5, r5, #1 - b .L1889 -.L1901: + b .L2000 +.L2012: movs r0, #0 pop {r4, r5, r6, r7, r8, pc} -.L1891: +.L2002: mov r0, #-1 pop {r4, r5, r6, r7, r8, pc} -.L1903: +.L2014: .align 2 -.L1902: +.L2013: .word .LANCHOR2 .word .LANCHOR0 .word .LANCHOR2+4052 - .word .LANCHOR0+2996 + .word .LANCHOR0+1960 .fnend .size FtlLoadBbt, .-FtlLoadBbt .align 1 @@ -11781,64 +12339,64 @@ FtlScanSysBlk: 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, .L1989 + ldr r5, .L2100 .pad #36 sub sp, sp, #36 - ldr r4, .L1989+4 + ldr r4, .L2100+4 mov r1, r6 - ldr r2, [r5, #2940] + ldr r2, [r5, #1900] ldr r0, [r4, #1856] mov r9, r4 - strh r6, [r5, #2954] @ movhi + strh r6, [r5, #1918] @ movhi lsls r2, r2, #2 strh r6, [r4, #1912] @ movhi bl ftl_memset - ldr r2, [r5, #2940] + ldr r2, [r5, #1900] mov r1, r6 ldr r0, [r4, #1828] lsls r2, r2, #1 bl ftl_memset - ldrh r2, [r5, #2932] + ldrh r2, [r5, #1892] mov r1, r6 ldr r0, [r4, #1840] lsls r2, r2, #2 bl ftl_memset - ldrh r2, [r5, #2932] - ldr r0, [r5, #2956] + ldrh r2, [r5, #1892] + ldr r0, [r5, #1920] mov r1, r6 lsls r2, r2, #1 bl ftl_memset - addw r0, r4, #1060 + add r0, r4, #24 movs r1, #255 - movs r2, #12 - bl memset - ldrh r3, [r5, #2848] + movs r2, #16 + bl ftl_memset + ldrh r3, [r5, #1812] str r5, [sp, #12] mov r5, r4 str r3, [sp, #4] -.L1905: - ldr r6, .L1989 +.L2016: + ldr r6, .L2100 ldr r2, [sp, #4] - ldrh r3, [r6, #2850] + ldrh r3, [r6, #1814] mov r0, r6 cmp r3, r2 - bls .L1947 - ldr r1, [r4, #1664] + bls .L2058 + ldr r1, [r4, #632] mov r10, #36 - ldrh r8, [r6, #2840] + ldrh r8, [r6, #1804] movs r7, #0 ldr r2, [r4, #1764] str r1, [sp, #8] - ldr r3, [r4, #1660] - ldrh r1, [r6, #2922] + ldr r3, [r4, #628] + ldrh r1, [r6, #1884] str r7, [sp] str r1, [sp, #16] - addw r1, r6, #2868 + add r1, r6, #1832 str r1, [sp, #20] -.L1948: +.L2059: uxth r1, r7 cmp r1, r8 - bcs .L1984 + bcs .L2095 str r3, [sp, #28] ldr r3, [sp, #20] ldr r1, [sp, #4] @@ -11849,7 +12407,7 @@ FtlScanSysBlk: bl FtlBbmIsBadBlock ldr r2, [sp, #24] ldr r3, [sp, #28] - cbnz r0, .L1906 + cbnz r0, .L2017 ldr r1, [sp] ldr r6, [sp] mla r0, r10, r1, r2 @@ -11868,25 +12426,25 @@ FtlScanSysBlk: adds r1, r1, #1 uxth r1, r1 str r1, [sp] -.L1906: +.L2017: adds r7, r7, #1 - b .L1948 -.L1984: + b .L2059 +.L2095: ldr r3, [sp] cmp r3, #0 - beq .L1910 - ldr r8, .L1989 + beq .L2021 mov r1, r3 ldr r0, [r4, #1764] movs r2, #1 + ldr r8, .L2100 bl FlashReadPages movs r3, #0 str r3, [sp, #8] -.L1911: +.L2022: ldrh r3, [sp, #8] ldr r2, [sp] cmp r3, r2 - bcs .L1910 + bcs .L2021 ldr r3, [sp, #8] mov r10, #36 mul r10, r10, r3 @@ -11897,10 +12455,10 @@ FtlScanSysBlk: adds r3, r3, #1 ldr r7, [r2, #12] ubfx r6, r6, #10, #16 - bne .L1913 + bne .L2024 mov fp, #16 movw r3, #65535 -.L1912: +.L2023: ldr r0, [r4, #1764] movs r1, #1 str r3, [sp, #16] @@ -11913,69 +12471,69 @@ FtlScanSysBlk: ldrh r2, [r7] ldr r3, [sp, #16] cmp r2, r3 - bne .L1914 + bne .L2025 ldr r3, [r9, #1764] mov r2, #-1 str r2, [r3, r10] - b .L1913 -.L1914: + b .L2024 +.L2025: ldr r2, [r5, #1764] ldr r2, [r2, r10] adds r2, r2, #1 - bne .L1913 + bne .L2024 add fp, fp, #-1 uxth fp, fp cmp fp, #0 - bne .L1912 -.L1913: + bne .L2023 +.L2024: ldr r3, [r5, #1764] ldr r3, [r3, r10] adds r3, r3, #1 - beq .L1916 - ldr r2, [r5, #1028] + beq .L2027 + ldr r2, [r5, #-8] ldr r3, [r7, #4] adds r1, r2, #1 - beq .L1917 + beq .L2028 cmp r2, r3 - bhi .L1918 -.L1917: + bhi .L2029 +.L2028: adds r2, r3, #1 itt ne addne r2, r3, #1 - strne r2, [r9, #1028] -.L1918: + strne r2, [r9, #-8] +.L2029: ldrh r2, [r7] movw r1, #61604 cmp r2, r1 - beq .L1920 - bhi .L1921 + beq .L2031 + bhi .L2032 movw r3, #61574 cmp r2, r3 - bne .L1919 + bne .L2030 ldr r3, [sp, #12] ldr r2, [sp, #12] - ldrh r10, [r3, #2932] - ldrh r0, [r2, #2954] + ldrh r10, [r3, #1892] + ldrh r0, [r2, #1918] ldr r2, [r9, #1840] add lr, r10, #-1 uxth r3, lr rsb lr, r0, lr str r2, [sp, #16] - b .L1934 -.L1921: + b .L2045 +.L2032: movw r3, #61634 cmp r2, r3 - beq .L1923 + beq .L2034 movw r3, #65535 cmp r2, r3 - bne .L1919 + bne .L2030 mov r0, r6 - b .L1983 -.L1923: + b .L2094 +.L2034: ldr r3, [sp, #12] ldrh r0, [r4, #1912] ldr r2, [r4, #1856] - ldr r1, [r3, #2940] + ldr r1, [r3, #1900] str r2, [sp, #16] uxth lr, r1 add r3, lr, #-1 @@ -11983,31 +12541,31 @@ FtlScanSysBlk: add lr, lr, #-1 uxth r3, r3 sxth lr, lr -.L1925: +.L2036: sxth ip, r3 cmp ip, lr - ble .L1985 + ble .L2096 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 .L1926 + bls .L2037 ldr r2, [sp, #16] ldr r2, [r2] - cbnz r2, .L1927 + cbnz r2, .L2038 cmp r0, r1 itt ne addne r0, r0, #1 strhne r0, [r9, #1912] @ movhi -.L1927: +.L2038: movs r1, #0 uxth lr, r3 -.L1928: +.L2039: uxth r2, r1 cmp r2, lr - bcs .L1986 + bcs .L2097 ldr r0, [r5, #1856] sxth r2, r2 adds r1, r1, #1 @@ -12018,8 +12576,8 @@ FtlScanSysBlk: add r10, r0, r2, lsl #1 ldrh r10, [r10, #2] strh r10, [r0, r2, lsl #1] @ movhi - b .L1928 -.L1986: + b .L2039 +.L2097: ldr r1, [r7, #4] ldr r2, [r4, #1856] str r1, [r2, fp] @@ -12027,25 +12585,25 @@ FtlScanSysBlk: ldr r2, [r4, #1828] cmp r1, #0 strh r6, [r2, ip, lsl #1] @ movhi - bge .L1930 - b .L1919 -.L1926: + bge .L2041 + b .L2030 +.L2037: subs r3, r3, #1 uxth r3, r3 - b .L1925 -.L1985: + b .L2036 +.L2096: cmp ip, #0 - bge .L1961 - b .L1919 -.L1930: + bge .L2072 + b .L2030 +.L2041: ldrh r0, [r5, #1912] - ldr r2, [r8, #2940] + ldr r2, [r8, #1900] subs r2, r2, r0 subs r2, r2, #1 sxth r2, r2 cmp r1, r2 - bgt .L1919 -.L1961: + bgt .L2030 +.L2072: ldr r2, [r4, #1856] sxth r3, r3 ldr r1, [r7, #4] @@ -12053,157 +12611,157 @@ FtlScanSysBlk: strh r0, [r4, #1912] @ movhi str r1, [r2, r3, lsl #2] ldr r2, [r4, #1828] - b .L1981 -.L1940: + b .L2092 +.L2051: ldr r1, [sp, #16] lsl fp, ip, #2 ldr r2, [r7, #4] ldr r1, [r1, ip, lsl #2] cmp r2, r1 - bhi .L1987 + bhi .L2098 subs r3, r3, #1 uxth r3, r3 -.L1934: +.L2045: sxth ip, r3 cmp ip, lr - bgt .L1940 - b .L1939 -.L1990: + bgt .L2051 + b .L2050 +.L2101: .align 2 -.L1989: +.L2100: .word .LANCHOR0 .word .LANCHOR2 -.L1987: +.L2098: ldr r2, [sp, #16] ldr r2, [r2] - cbnz r2, .L1936 + cbnz r2, .L2047 cmp r0, r10 itt ne addne r0, r0, #1 - strhne r0, [r8, #2954] @ movhi -.L1936: + strhne r0, [r8, #1918] @ movhi +.L2047: movs r1, #0 uxth lr, r3 -.L1937: +.L2048: uxth r2, r1 cmp r2, lr - bcs .L1988 + bcs .L2099 ldr r0, [r4, #1840] 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, #2956] + ldr r0, [r8, #1920] add r10, r0, r2, lsl #1 ldrh r10, [r10, #2] strh r10, [r0, r2, lsl #1] @ movhi - b .L1937 -.L1988: + b .L2048 +.L2099: ldr r2, [r5, #1840] ldr r1, [r7, #4] str r1, [r2, fp] - ldr r2, .L1991 - ldr r2, [r2, #2956] + ldr r2, .L2102 + ldr r2, [r2, #1920] strh r6, [r2, ip, lsl #1] @ movhi -.L1939: +.L2050: sxth r3, r3 cmp r3, #0 - blt .L1919 - ldrh r2, [r8, #2932] - ldrh r1, [r8, #2954] + blt .L2030 + ldrh r2, [r8, #1892] + ldrh r1, [r8, #1918] subs r2, r2, #1 subs r2, r2, r1 sxth r2, r2 cmp r3, r2 - bgt .L1919 + bgt .L2030 adds r1, r1, #1 ldr r2, [r9, #1840] - strh r1, [r8, #2954] @ movhi + strh r1, [r8, #1918] @ movhi ldr r1, [r7, #4] str r1, [r2, r3, lsl #2] - ldr r2, [r8, #2956] -.L1981: + ldr r2, [r8, #1920] +.L2092: strh r6, [r2, r3, lsl #1] @ movhi - b .L1919 -.L1920: - ldrh r1, [r9, #1060] + b .L2030 +.L2031: + ldrh r1, [r9, #24] movw r2, #65535 cmp r1, r2 - bne .L1941 - strh r6, [r5, #1060] @ movhi - b .L1982 -.L1941: - ldrh r0, [r5, #1064] + bne .L2052 + strh r6, [r5, #24] @ movhi + b .L2093 +.L2052: + ldrh r0, [r5, #28] cmp r0, r2 - beq .L1942 + beq .L2053 movs r1, #1 bl FtlFreeSysBlkQueueIn -.L1942: - ldr r2, [r9, #1068] +.L2053: + ldr r2, [r9, #32] ldr r3, [r7, #4] cmp r2, r3 - bcs .L1943 - ldrh r3, [r5, #1060] - strh r6, [r5, #1060] @ movhi - strh r3, [r5, #1064] @ movhi + bcs .L2054 + ldrh r3, [r5, #24] + strh r6, [r5, #24] @ movhi + strh r3, [r5, #28] @ movhi ldr r3, [r7, #4] -.L1982: - str r3, [r5, #1068] - b .L1919 -.L1943: - strh r6, [r5, #1064] @ movhi - b .L1919 -.L1916: - ldrb r1, [r8, #76] @ zero_extendqisi2 +.L2093: + str r3, [r5, #32] + b .L2030 +.L2054: + strh r6, [r5, #28] @ movhi + b .L2030 +.L2027: + ldrb r1, [r8, #140] @ zero_extendqisi2 mov r0, r6 - cbz r1, .L1944 -.L1983: + cbz r1, .L2055 +.L2094: movs r1, #0 -.L1944: +.L2055: bl FtlFreeSysBlkQueueIn -.L1919: +.L2030: ldr r3, [sp, #8] adds r3, r3, #1 str r3, [sp, #8] - b .L1911 -.L1910: + b .L2022 +.L2021: ldr r6, [sp, #4] adds r6, r6, #1 uxth r3, r6 str r3, [sp, #4] - b .L1905 -.L1947: - ldr r3, .L1991+4 + b .L2016 +.L2058: + ldr r3, .L2102+4 ldr r5, [r3, #1828] ldrh r2, [r5] - cbz r2, .L1949 -.L1952: - ldr r5, [r0, #2956] - ldr r3, .L1991 + cbz r2, .L2060 +.L2063: + ldr r5, [r0, #1920] + ldr r3, .L2102 ldrh r2, [r5] - cbz r2, .L1950 - b .L1973 -.L1949: + cbz r2, .L2061 + b .L2084 +.L2060: ldrh r3, [r3, #1912] cmp r3, #0 - beq .L1952 - ldr r6, [r6, #2940] -.L1953: + beq .L2063 + ldr r6, [r6, #1900] +.L2064: uxth r3, r2 sxth r1, r3 cmp r1, r6 - bcs .L1952 + bcs .L2063 ldrh r7, [r5, r1, lsl #1] adds r2, r2, #1 cmp r7, #0 - beq .L1953 + beq .L2064 mov lr, #0 -.L1954: - ldr r5, [r0, #2940] +.L2065: + ldr r5, [r0, #1900] sxth r2, r3 cmp r2, r5 - bcs .L1952 + bcs .L2063 ldr r5, [r4, #1828] subs r6, r2, r1 adds r3, r3, #1 @@ -12215,28 +12773,28 @@ FtlScanSysBlk: str r7, [r5, r6, lsl #2] ldr r5, [r4, #1828] strh lr, [r5, r2, lsl #1] @ movhi - b .L1954 -.L1950: - ldrh r1, [r3, #2954] - cbz r1, .L1973 - ldrh r6, [r3, #2932] -.L1957: + b .L2065 +.L2061: + ldrh r1, [r3, #1918] + cbz r1, .L2084 + ldrh r6, [r3, #1892] +.L2068: uxth r3, r2 sxth r1, r3 cmp r1, r6 - bge .L1973 + bge .L2084 ldrh r7, [r5, r1, lsl #1] adds r2, r2, #1 cmp r7, #0 - beq .L1957 - ldr r5, .L1991 + beq .L2068 + ldr r5, .L2102 mov ip, #0 -.L1958: - ldrh r6, [r0, #2932] +.L2069: + ldrh r6, [r0, #1892] sxth r2, r3 cmp r2, r6 - bge .L1973 - ldr r6, [r5, #2956] + bge .L2084 + ldr r6, [r5, #1920] rsb lr, r1, r2 adds r3, r3, #1 ldrh r7, [r6, r2, lsl #1] @@ -12245,17 +12803,17 @@ FtlScanSysBlk: ldr r6, [r4, #1840] ldr r7, [r6, r2, lsl #2] str r7, [r6, lr, lsl #2] - ldr r6, [r5, #2956] + ldr r6, [r5, #1920] strh ip, [r6, r2, lsl #1] @ movhi - b .L1958 -.L1973: + b .L2069 +.L2084: movs r0, #0 add sp, sp, #36 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1992: +.L2103: .align 2 -.L1991: +.L2102: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -12267,437 +12825,697 @@ FtlScanSysBlk: .type FtlLoadSysInfo, %function FtlLoadSysInfo: .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, lr} - .save {r4, r5, r6, r7, r8, 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 r1, #0 - ldr r6, .L2012 - ldr r5, .L2012+4 - ldrh r2, [r6, #2848] - ldr r3, [r5, #1800] - ldr r0, [r5, #816] + ldr r4, .L2132 + ldr r7, .L2132+4 + ldr r3, [r4, #1776] + mov r5, r4 + ldrh r2, [r7, #1812] + ldr r0, [r4, #-220] + str r3, [r4, #4060] + ldr r3, [r4, #1800] lsls r2, r2, #1 - str r1, [r5, #4060] - str r3, [r5, #4064] + str r3, [r4, #4064] bl ftl_memset - ldrh r0, [r5, #1060] - movw r2, #65535 - cmp r0, r2 - bne .L1994 -.L2002: + ldrh r0, [r4, #24] + movw r3, #65535 + cmp r0, r3 + bne .L2105 +.L2116: mov r0, #-1 - pop {r4, r5, r6, r7, r8, pc} -.L1994: + b .L2106 +.L2105: movs r1, #1 - ldr r8, .L2012+12 + ldr r10, .L2132+12 bl FtlGetLastWrittenPage - mov r7, r5 + ldrh r8, [r5, #24] + mov r6, r5 uxth r4, r0 adds r0, r0, #1 - strh r0, [r5, #1062] @ movhi -.L1996: + strh r0, [r5, #26] @ movhi +.L2107: sxth r3, r4 cmp r3, #0 - blt .L2001 - ldrh r2, [r5, #1060] + blt .L2115 + sxth r9, r8 movs r1, #1 - ldr r0, .L2012+8 - orr r3, r3, r2, lsl #10 + ldr r0, .L2132+8 + orr r3, r3, r9, lsl #10 str r3, [r5, #4056] ldr r3, [r5, #1776] mov r2, r1 + ldr fp, .L2132+4 str r3, [r5, #4060] bl FlashReadPages + ldrb r3, [r7] @ zero_extendqisi2 + cbz r3, .L2108 + ldr r3, [r6, #4064] + ldr r3, [r3, #12] + cbz r3, .L2108 + ldr r0, [r6, #4060] + ldrh r1, [fp, #1882] + str r3, [sp, #4] + bl js_hash + ldr r3, [sp, #4] + cmp r3, r0 + beq .L2108 + cbnz r4, .L2109 + ldrh r3, [r6, #28] + cmp r9, r3 + beq .L2109 + uxth r8, r3 + ldrh r4, [fp, #1874] + b .L2111 +.L2109: + mov r3, #-1 + str r3, [r5, #4052] +.L2108: ldr r3, [r5, #4052] adds r3, r3, #1 - beq .L1997 - ldr r3, [r7, #1776] + beq .L2111 + ldr r3, [r6, #1776] ldr r3, [r3] - cmp r3, r8 - bne .L1997 - ldr r3, [r7, #1800] + cmp r3, r10 + bne .L2111 + ldr r3, [r6, #1800] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - bne .L1997 -.L2001: - ldr r4, .L2012+4 + bne .L2111 +.L2115: + ldr r4, .L2132+4 movs r2, #48 ldr r1, [r5, #4060] - add r0, r4, #760 - ldr r7, .L2012 + addw r0, r4, #4068 + ldr r6, .L2132 bl ftl_memcpy - ldrh r2, [r6, #2848] + ldrh r2, [r7, #1812] ldr r1, [r5, #4060] - ldr r0, [r5, #816] + ldr r0, [r5, #-220] adds r1, r1, #48 lsls r2, r2, #1 bl ftl_memcpy - ldrh r2, [r6, #2848] + ldrh r2, [r7, #1812] ldr r3, [r5, #4060] add r1, r2, #24 - ldr r0, [r5, #992] + ldr r0, [r5, #-44] ubfx r1, r1, #1, #30 lsrs r2, r2, #3 adds r2, r2, #4 add r1, r3, r1, lsl #2 bl ftl_memcpy - ldrh r3, [r6, #2952] - cbz r3, .L1999 - ldrh r2, [r7, #2848] - ldr r1, [r4, #4060] - ldr r0, [r4, #1852] + ldrh r3, [r7, #1916] + cbz r3, .L2113 + ldrh r2, [r4, #1812] + ldr r1, [r6, #4060] + ldr r0, [r6, #1852] lsrs r3, r2, #3 add r3, r3, r2, lsl #1 - ldrh r2, [r7, #2948] + ldrh r2, [r4, #1908] adds r3, r3, #52 ubfx r3, r3, #2, #14 lsls r2, r2, #2 add r1, r1, r3, lsl #2 bl ftl_memcpy - b .L1999 -.L1997: + b .L2113 +.L2111: subs r4, r4, #1 uxth r4, r4 - b .L1996 -.L1999: - ldr r2, [r5, #760] - ldr r3, .L2012+12 - ldr r4, .L2012+4 + b .L2107 +.L2113: + ldr r2, [r7, #4068] + ldr r3, .L2132+12 + ldr r6, .L2132+4 cmp r2, r3 - bne .L2002 - ldrb r0, [r4, #770] @ zero_extendqisi2 - ldrh r1, [r6, #2862] - ldrh r2, [r4, #768] - cmp r0, r1 - ldr r3, .L2012 - strh r2, [r4, #1066] @ movhi - bne .L2002 - ldrh r1, [r3, #2910] - ldrh r0, [r3, #2916] - str r2, [r4, #4088] - muls r1, r2, r1 - str r1, [r3, #2968] - muls r1, r0, r1 - ldrh r0, [r3, #2978] - str r1, [r3, #1896] - ldr r1, [r3, #2852] - subs r0, r1, r0 - ldrh r1, [r3, #2840] - subs r0, r0, r2 + bne .L2116 + ldrb r1, [r6, #4078] @ zero_extendqisi2 + ldrh r2, [r6, #1826] + ldrh r3, [r6, #4076] + cmp r1, r2 + ldr r4, .L2132 + strh r3, [r5, #30] @ movhi + bne .L2116 + ldrh r2, [r6, #1872] + ldrh r1, [r6, #1878] + ldrh r0, [r6, #1942] + muls r2, r3, r2 + str r3, [r4, #4088] + str r2, [r6, #1932] + muls r2, r1, r2 + ldrh r1, [r6, #1804] + str r2, [r6, #1912] + ldr r2, [r6, #1816] + subs r0, r2, r0 + subs r0, r0, r3 bl __aeabi_uidiv - ldrh r3, [r4, #776] - ldrh r1, [r4, #774] + ldrh r3, [r6, #4084] + ldrh r1, [r6, #4082] lsrs r2, r3, #6 - strh r2, [r4, #838] @ movhi - ldrh r2, [r4, #778] + strh r2, [r4, #-198] @ movhi + ldrh r2, [r6, #4086] and r3, r3, #63 - strb r3, [r4, #842] - ldrb r3, [r4, #771] @ zero_extendqisi2 - strh r2, [r4, #884] @ movhi - ldrh r2, [r4, #780] - strb r3, [r4, #844] + strb r3, [r4, #-194] + ldrb r3, [r6, #4079] @ zero_extendqisi2 + strh r2, [r4, #-152] @ movhi + ldrh r2, [r6, #4088] + strb r3, [r4, #-192] movw r3, #65535 - strh r1, [r4, #836] @ movhi - strh r3, [r4, #1072] @ movhi + strh r1, [r4, #-200] @ movhi + strh r3, [r4, #40] @ movhi movs r3, #0 - strh r3, [r4, #1074] @ movhi - strb r3, [r4, #1078] - strb r3, [r4, #1080] - str r3, [r4, #1016] - strh r0, [r4, #1056] @ movhi + strh r3, [r4, #42] @ movhi + strb r3, [r4, #46] + strb r3, [r4, #48] + str r3, [r4, #-20] + strh r0, [r4, #20] @ movhi lsrs r0, r2, #6 and r2, r2, #63 - strb r2, [r4, #890] - ldrb r2, [r4, #772] @ zero_extendqisi2 - strh r0, [r4, #886] @ movhi - strb r2, [r4, #892] - ldrh r2, [r4, #782] - strh r2, [r4, #932] @ movhi - ldrh r2, [r4, #784] + strb r2, [r4, #-146] + ldrb r2, [r6, #4080] @ zero_extendqisi2 + strh r0, [r4, #-150] @ movhi + strb r2, [r4, #-144] + ldrh r2, [r6, #4090] + strh r2, [r4, #-104] @ movhi + ldrh r2, [r6, #4092] lsrs r0, r2, #6 and r2, r2, #63 - strb r2, [r4, #938] - ldrb r2, [r4, #773] @ zero_extendqisi2 - strh r0, [r4, #934] @ movhi - strb r2, [r4, #940] - str r3, [r4, #1004] - ldr r2, [r4, #792] - str r3, [r4, #996] - str r3, [r4, #1012] - str r3, [r4, #1040] - str r3, [r4, #1048] - str r3, [r4, #1008] - ldr r3, [r4, #800] - str r2, [r4, #1036] - ldr r2, [r4, #1028] + strb r2, [r4, #-98] + ldrb r2, [r6, #4081] @ zero_extendqisi2 + strh r0, [r4, #-102] @ movhi + strb r2, [r4, #-96] + movw r2, #4100 + str r3, [r4, #-32] + ldr r2, [r6, r2] + str r3, [r4, #-40] + str r3, [r4, #-24] + stmia r4, {r2, r3} + str r3, [r4, #12] + str r3, [r4, #-28] + movw r3, #4108 + ldr r3, [r6, r3] + ldr r2, [r4, #-8] cmp r3, r2 - ldr r2, [r5, #1032] it hi - strhi r3, [r4, #1028] - ldr r3, [r5, #796] + strhi r3, [r4, #-8] + movw r3, #4104 + ldr r2, [r5, #-4] + ldr r3, [r7, r3] cmp r3, r2 itt hi - ldrhi r2, .L2012+4 - strhi r3, [r2, #1032] + ldrhi r2, .L2132 + strhi r3, [r2, #-4] movw r3, #65535 cmp r1, r3 - beq .L2005 - ldr r0, .L2012+16 + beq .L2119 + ldr r0, .L2132+16 bl make_superblock -.L2005: - ldrh r2, [r5, #884] +.L2119: + ldrh r2, [r5, #-152] movw r3, #65535 cmp r2, r3 - beq .L2006 - ldr r0, .L2012+20 + beq .L2120 + ldr r0, .L2132+20 bl make_superblock -.L2006: - ldrh r2, [r5, #932] +.L2120: + ldrh r2, [r5, #-104] movw r3, #65535 cmp r2, r3 - beq .L2007 - ldr r0, .L2012+24 + beq .L2121 + ldr r0, .L2132+24 bl make_superblock -.L2007: - ldrh r2, [r5, #1072] +.L2121: + ldrh r2, [r5, #40] movw r3, #65535 cmp r2, r3 - beq .L2008 - ldr r0, .L2012+28 + beq .L2122 + ldr r0, .L2132+28 bl make_superblock -.L2008: +.L2122: movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L2013: +.L2106: + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2133: .align 2 -.L2012: - .word .LANCHOR0 +.L2132: .word .LANCHOR2 + .word .LANCHOR0 .word .LANCHOR2+4052 .word 1179929683 - .word .LANCHOR2+836 - .word .LANCHOR2+884 - .word .LANCHOR2+932 - .word .LANCHOR2+1072 + .word .LANCHOR2-200 + .word .LANCHOR2-152 + .word .LANCHOR2-104 + .word .LANCHOR2+40 .fnend .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 1 - .global FtlGcScanTempBlk + .global FtlDumpBlockInfo .thumb .thumb_func - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: + .type FtlDumpBlockInfo, %function +FtlDumpBlockInfo: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 80 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2048 + ldr r3, .L2151 + ubfx r0, r0, #10, #16 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 - ldrh r4, [r3, #3064] - movw r3, #65535 + .pad #108 + sub sp, sp, #108 + ldr r3, [r3] + mov r8, r1 + ldr r4, .L2151+4 + ldr r7, .L2151+8 + str r3, [sp, #100] + bl P2V_block_in_plane + ldr r1, .L2151+12 + ldrh r9, [r4, #1872] + mov r6, r0 + ldr r0, .L2151+16 + bl printk + ldr r3, [r7, #-220] + mov r1, r6 + ldr r0, .L2151+20 + ldrh r2, [r3, r6, lsl #1] + bl printk + add r0, sp, #104 + strh r6, [r0, #-52]! @ movhi + bl make_superblock + ldrb r5, [r4, #140] @ zero_extendqisi2 + str r7, [sp, #44] + cbz r5, .L2135 + cmp r8, #0 + bne .L2147 + mov r0, r6 + bl ftl_get_blk_mode + cmp r0, #1 mov r5, r0 - str r1, [sp, #12] - cmp r4, r3 - beq .L2037 - cbnz r4, .L2015 - b .L2016 -.L2037: - movs r4, #0 -.L2015: - ldr r3, .L2048+4 - ldr r2, [sp, #12] - ldrh r3, [r3, #2910] - cmp r2, r3 - bne .L2017 -.L2016: - bl FtlGcPageVarInit -.L2017: - ldr r7, .L2048+8 - mov r10, #0 - mov r3, #-1 - str r3, [sp, #4] -.L2031: - ldrh r1, [r5] - movw r3, #65535 + bne .L2135 + ldrh r9, [r4, #1874] + b .L2135 +.L2147: + movs r5, #0 +.L2135: + ldr r0, .L2151+24 + mov r1, r5 + mov r2, r9 + ldrh r3, [r4, #1872] + bl printk + ldr r10, .L2151+4 + movs r6, #0 +.L2136: + ldr r3, .L2151+8 movs r2, #0 - strb r2, [r5, #8] - cmp r1, r3 - beq .L2018 -.L2019: - ldr r9, .L2048+4 -.L2034: - ldr r3, [r7, #1664] - movs r2, #0 - ldrh r8, [r9, #2840] - mov ip, #36 - ldr fp, [r7, #1764] - mov r6, r2 - str r3, [sp, #16] - movw lr, #65535 - ldrh r3, [r9, #2922] - str r3, [sp, #20] - add r3, r5, #14 - str r3, [sp, #8] -.L2020: + ldrh fp, [r10, #1804] + add lr, sp, #66 + ldrh r0, [r10, #1884] + mov r8, #36 + ldr r3, [r3, #1764] + mov r4, r2 + movw ip, #65535 + str r3, [sp, #28] + ldr r3, .L2151+8 + ldr r3, [r3, #628] + str r3, [sp, #32] + ldrh r3, [r10, #1882] + str r3, [sp, #36] + ldr r3, .L2151+8 + ldr r3, [r3, #632] + str r3, [sp, #40] +.L2137: uxth r3, r2 - cmp r3, r8 - bcs .L2046 - ldr r1, [sp, #8] - ldrh r3, [r1, #2]! - cmp r3, lr - str r1, [sp, #8] - beq .L2021 - mla r1, ip, r6, fp - orr r3, r4, r3, lsl #10 + cmp r3, fp + bcs .L2149 + ldrh r3, [lr, #2]! + cmp r3, ip + beq .L2138 + ldr r1, [sp, #28] + orr r3, r6, r3, lsl #10 + ldr r7, [sp, #32] + mla r1, r8, r4, r1 str r3, [r1, #4] - movs r3, #0 - str r3, [r1, #8] - ldr r3, [sp, #20] - muls r3, r6, r3 + ldr r3, [sp, #36] + muls r3, r4, r3 it mi addmi r3, r3, #3 - adds r6, r6, #1 bic r3, r3, #3 - uxth r6, r6 - mov r0, r3 - ldr r3, [sp, #16] - add r0, r0, r3 - str r0, [r1, #12] -.L2021: - adds r2, r2, #1 - b .L2020 -.L2046: - ldr r0, [r7, #1764] - mov r1, r6 - movs r2, #0 - mov fp, #0 - bl FlashReadPages -.L2024: - uxth r3, fp - cmp r3, r6 - bcs .L2047 - movs r3, #36 - mul r8, r3, fp - ldr r3, .L2048+8 - ldr ip, [r3, #1764] - add r1, ip, r8 - str r1, [sp, #16] - str ip, [sp, #20] - ldr r3, [r1, #4] - ubfx r0, r3, #10, #16 - str r3, [sp, #8] - bl P2V_plane - ldr ip, [sp, #20] - ldr r3, [sp, #8] - mov r2, r0 - ldr r0, [ip, r8] - cbnz r0, .L2025 - ldr r1, [sp, #16] - movw r0, #65535 - add fp, fp, #1 - ldr lr, [r1, #12] - ldrh r1, [lr] - cmp r1, r0 - bne .L2026 - ldr r3, .L2048+8 - movs r1, #1 - str r1, [r3, #1928] - b .L2018 -.L2026: - ldr r0, [lr, #12] - mov r1, r3 - ldr r2, [lr, #8] - bl FtlGcUpdatePage - b .L2024 -.L2025: - mov r2, r3 - ldrh r1, [r5] - ldr r0, .L2048+12 - bl printk - ldr r2, .L2048+4 - ldrh r3, [r5] - ldr r1, [r2, #2832] - cbnz r1, .L2027 - ldrb r2, [r2, #76] @ zero_extendqisi2 - cbz r2, .L2028 -.L2027: - ldr r2, [r7, #752] - ldrh r2, [r2, r3, lsl #1] - cmp r2, #119 - bls .L2029 -.L2028: - ldr r2, [r7, #1764] - ldr r2, [r2, r8] - adds r2, r2, #1 - bne .L2030 -.L2029: - ldr r2, [r7, #1764] - add r8, r8, r2 - ldr r2, [r8, #4] - str r2, [sp, #4] -.L2030: - ldr r2, .L2048+8 - movs r4, #0 - ldr r2, [r2, #816] - strh r4, [r2, r3, lsl #1] @ movhi - ldrh r0, [r5] - bl INSERT_FREE_LIST - movw r3, #65535 - strh r3, [r5] @ movhi - bl FtlGcPageVarInit - b .L2031 -.L2047: - ldr r3, [sp, #12] - add r10, r10, #1 - adds r4, r4, #1 - cmp r10, r3 + add r3, r3, r7 + str r3, [r1, #8] + mov r3, r0 + 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 - bcs .L2033 -.L2035: - ldrh r3, [r9, #2910] - cmp r3, r4 - bhi .L2034 - movs r2, #0 - b .L2018 -.L2033: - ldr r2, .L2048 - movw r1, #65535 - ldrh r3, [r2, #3064] - cmp r3, r1 - beq .L2035 - add r3, r3, r10 - strh r3, [r2, #3064] @ movhi - ldrh r3, [r9, #2910] - cmp r3, r4 - bls .L2035 - b .L2036 -.L2018: - ldr r3, .L2048 - movw r1, #65535 - strh r4, [r5, #2] @ movhi - mov r0, r5 - strb r2, [r5, #6] - strh r1, [r3, #3064] @ movhi + add r3, r3, r7 + str r3, [r1, #12] +.L2138: + adds r2, r2, #1 + b .L2137 +.L2149: + ldr r3, .L2151+8 mov r1, r4 - bl ftl_sb_update_avl_pages -.L2036: - ldr r0, [sp, #4] - add sp, sp, #28 + mov r2, r5 + mov r8, #0 + mov fp, #36 + ldr r0, [r3, #1764] + bl FlashReadPages +.L2142: + uxth r3, r8 + cmp r3, r4 + bcs .L2150 + ldr r3, [sp, #44] + mul r2, fp, r8 + ldrh r1, [sp, #52] + ldr ip, [r3, #1764] + 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, .L2151+28 + str r3, [sp, #20] + ldr r2, [ip, r2] + ldr r3, [lr, #4] + bl printk + b .L2142 +.L2150: + adds r6, r6, #1 + uxth r6, r6 + cmp r6, r9 + bne .L2136 +.L2144: + ldr r3, .L2151 + movs r0, #0 + ldr r2, [sp, #100] + ldr r3, [r3] + cmp r2, r3 + beq .L2145 + bl __stack_chk_fail +.L2145: + add sp, sp, #108 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2049: +.L2152: .align 2 -.L2048: - .word .LANCHOR1 +.L2151: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 + .word .LANCHOR3+16 + .word .LC107 .word .LC108 + .word .LC109 + .word .LC110 .fnend - .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .size FtlDumpBlockInfo, .-FtlDumpBlockInfo + .align 1 + .global FtlScanAllBlock + .thumb + .thumb_func + .type FtlScanAllBlock, %function +FtlScanAllBlock: + .fnstart + @ args = 0, pretend = 0, frame = 72 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #100 + sub sp, sp, #100 + ldr r5, .L2170 + mov r8, #0 + ldr r0, .L2170+4 + ldr r1, .L2170+8 + ldr r3, [r5] + str r3, [sp, #92] + bl printk + str r5, [sp, #36] + ldr r5, .L2170+12 + mov r7, r5 +.L2154: + ldr r3, .L2170+16 + uxth r4, r8 + ldrh r3, [r3, #1814] + cmp r3, r4 + bls .L2166 + add r9, sp, #96 + mov r0, r4 + mov fp, #36 + movw r10, #65535 + strh r4, [r9, #-52]! @ movhi + bl ftl_get_blk_mode + ldr r2, [r5, #-220] + mov r1, r4 + ldrh r2, [r2, r4, lsl #1] + mov r3, r0 + ldr r0, .L2170+20 + bl printk + mov r0, r9 + bl make_superblock + ldr r3, .L2170+16 + movs r2, #0 + ldr r9, [r5, #632] + ldrh lr, [r3, #1804] + mov r4, r2 + ldr r3, [r5, #1764] + str r3, [sp, #24] + add ip, sp, #58 + ldr r3, [r5, #628] + str r3, [sp, #28] + ldr r3, .L2170+16 + ldrh r0, [r3, #1882] + ldrh r3, [r3, #1884] + str r3, [sp, #32] +.L2155: + uxth r3, r2 + cmp r3, lr + bcs .L2167 + ldrh r3, [ip, #2]! + cmp r3, r10 + beq .L2156 + ldr r1, [sp, #24] + lsls r3, r3, #10 + ldr r6, [sp, #28] + mla r1, fp, r4, r1 + str r3, [r1, #4] + mov r3, r0 + 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, #32] + muls r3, r4, r3 + add r4, r4, #1 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + uxth r4, r4 + add r3, r3, r9 + str r3, [r1, #12] +.L2156: + adds r2, r2, #1 + b .L2155 +.L2167: + ldr r0, [r7, #1764] + mov r1, r4 + movs r2, #0 + mov r9, #0 + bl FlashReadPages + mov r10, #36 +.L2160: + uxth r3, r9 + cmp r3, r4 + bcs .L2168 + mul r2, r10, r9 + ldr ip, [r7, #1764] + ldrh r1, [sp, #44] + 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, .L2170+24 + str r3, [sp, #20] + ldr r2, [ip, r2] + ldr r3, [lr, #4] + bl printk + b .L2160 +.L2168: + ldr r0, [r7, #1764] + mov r1, r4 + movs r2, #1 + mov r9, #0 + bl FlashReadPages + mov r10, #36 +.L2162: + uxth r3, r9 + cmp r3, r4 + bcs .L2169 + mul r2, r10, r9 + ldr ip, [r7, #1764] + ldrh r1, [sp, #44] + 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, .L2170+28 + str r3, [sp, #20] + ldr r2, [ip, r2] + ldr r3, [lr, #4] + bl printk + b .L2162 +.L2169: + add r8, r8, #1 + b .L2154 +.L2166: + ldr r3, [sp, #36] + movs r0, #0 + ldr r2, [sp, #92] + ldr r3, [r3] + cmp r2, r3 + beq .L2165 + bl __stack_chk_fail +.L2165: + add sp, sp, #100 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2171: + .align 2 +.L2170: + .word __stack_chk_guard + .word .LC107 + .word .LANCHOR3+36 + .word .LANCHOR2 + .word .LANCHOR0 + .word .LC111 + .word .LC112 + .word .LC113 + .fnend + .size FtlScanAllBlock, .-FtlScanAllBlock + .align 1 + .global ftl_scan_all_ppa + .thumb + .thumb_func + .type ftl_scan_all_ppa, %function +ftl_scan_all_ppa: + .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} + .pad #24 + sub sp, sp, #24 + ldr r6, .L2178 + movs r7, #0 + ldr r0, .L2178+4 + ldr r4, .L2178+8 + ldrh r1, [r6, #1870] + ldrh r2, [r6, #1872] + bl printk +.L2173: + ldrh r3, [r6, #1870] + cmp r7, r3 + bcs .L2175 + lsl r8, r7, #10 + movs r5, #0 +.L2176: + ldrh r3, [r6, #1872] + cmp r5, r3 + bcs .L2177 + add r3, r5, r8 + str r3, [r4, #4056] + ldr r3, [r4, #1776] + movs r2, #0 + movs r1, #1 + ldr r0, .L2178+12 + str r2, [r4, #4052] + adds r5, r5, #1 + str r3, [r4, #4060] + ldr r3, [r4, #1800] + str r3, [r4, #4064] + bl FlashReadPages + ldr r3, [r4, #4064] + ldr r2, [r4, #4060] + ldr r0, .L2178+16 + 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, [r4, #4056] + str r2, [sp, #16] + ldr r2, [r4, #4052] + ldr r3, [r3] + bl printk + b .L2176 +.L2177: + adds r7, r7, #1 + b .L2173 +.L2175: + ldr r0, .L2178+20 + ldr r1, .L2178+24 + add sp, sp, #24 + @ sp needed + pop {r4, r5, r6, r7, r8, lr} + b printk +.L2179: + .align 2 +.L2178: + .word .LANCHOR0 + .word .LC114 + .word .LANCHOR2 + .word .LANCHOR2+4052 + .word .LC115 + .word .LC116 + .word .LANCHOR3+52 + .fnend + .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 1 .global FlashProgPages .thumb @@ -12711,24 +13529,27 @@ FlashProgPages: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #76 sub sp, sp, #76 - ldr r5, .L2105 + ldr r5, .L2236 mov r4, r0 str r1, [sp, #8] mov r9, r2 str r3, [sp, #20] - ldr r6, [r5, #1788] + ldr r5, [r5] + str r5, [sp, #68] + ldr r5, .L2236+4 + ldr r6, [r5, #692] ldrb r7, [r5] @ zero_extendqisi2 ldrb r6, [r6, #19] @ zero_extendqisi2 str r6, [sp, #16] - ldr r6, .L2105+4 - ldrb r6, [r6, #265] @ zero_extendqisi2 + ldr r6, .L2236+8 + ldrb r6, [r6, #481] @ zero_extendqisi2 str r6, [sp, #12] - cbz r7, .L2051 + cbz r7, .L2181 bl FlashProgSlc2KPages - b .L2052 -.L2065: + b .L2182 +.L2195: movs r3, #36 - add r2, sp, #28 + add r2, sp, #24 mov r1, r9 mul r8, r3, r7 ldr r3, [sp, #8] @@ -12737,202 +13558,201 @@ FlashProgPages: uxtb r3, r3 str r3, [sp] mov r0, fp - add r3, sp, #32 + add r3, sp, #28 bl LogAddr2PhyAddr - ldr r3, [sp, #32] - ldrb r2, [r5, #1616] @ zero_extendqisi2 - cmp r3, r2 + ldrb r2, [r5, #1717] @ zero_extendqisi2 + ldr r3, [sp, #28] mov r10, r0 - bcc .L2053 + cmp r3, r2 + bcc .L2183 mov r3, #-1 str r3, [r4, r8] -.L2054: +.L2184: adds r7, r7, #1 -.L2051: +.L2181: ldr r3, [sp, #8] - ldr r6, .L2105 + ldr r6, .L2236+4 cmp r7, r3 - bcc .L2065 - b .L2103 -.L2053: + bcc .L2195 + b .L2234 +.L2183: add r3, r5, r3, lsl #4 - ldrb r1, [r5, #2828] @ zero_extendqisi2 - ldr r3, [r3, #1668] + ldrb r1, [r5, #1793] @ zero_extendqisi2 + ldr r3, [r3, #1596] cmp r1, #0 it eq moveq r10, #0 - cbz r3, .L2056 + cbz r3, .L2186 cmp r2, #1 - bne .L2057 - ldr r0, [r5, #1828] + bne .L2187 + ldr r0, [r5, #76] bl NandcIqrWaitFlashReady -.L2057: - ldrb r0, [sp, #32] @ zero_extendqisi2 +.L2187: + ldrb r0, [sp, #28] @ zero_extendqisi2 bl FlashWaitCmdDone -.L2056: - ldr r3, [sp, #32] +.L2186: + ldr r3, [sp, #28] movs r0, #0 add r2, r5, r3, lsl #4 - addw r1, r2, #1668 - str r0, [r2, #1672] - ldr r0, [sp, #28] - str fp, [r2, #1668] - str r0, [r2, #1664] + addw r1, r2, #1596 + str r0, [r2, #1600] + ldr r0, [sp, #24] + str fp, [r2, #1596] + str r0, [r2, #1592] cmp r10, #0 - beq .L2058 + beq .L2188 add r2, r8, #36 add r2, r2, r4 str r2, [r1, #4] -.L2058: +.L2188: adds r2, r5, r3 add r3, r5, r3, lsl #4 - ldrb r6, [r2, #1620] @ zero_extendqisi2 - strb r6, [r3, #1660] + ldrb r6, [r2, #1720] @ zero_extendqisi2 + strb r6, [r3, #1588] mov r0, r6 - ldrb r3, [r5, #1616] @ zero_extendqisi2 + ldrb r3, [r5, #1717] @ zero_extendqisi2 cmp r3, #1 - bne .L2059 + bne .L2189 bl NandcWaitFlashReady - b .L2060 -.L2059: + b .L2190 +.L2189: bl NandcFlashCs - ldr r3, [sp, #32] mov r0, r6 - ldr r1, [sp, #28] + ldr r3, [sp, #28] + ldr r1, [sp, #24] add r3, r5, r3, lsl #2 - ldr r2, [r3, #1628] + ldr r2, [r3, #656] adds r2, r2, #0 it ne movne r2, #1 bl FlashWaitReadyEN mov r0, r6 bl NandcFlashDeCs -.L2060: +.L2190: ldr r3, [sp, #16] subs r3, r3, #1 - cmp r3, #6 - bhi .L2061 + cmp r3, #7 + bhi .L2191 adds r3, r5, r6 - ldrb r3, [r3, #2760] @ zero_extendqisi2 - cbz r3, .L2061 + ldrb r3, [r3, #1552] @ zero_extendqisi2 + cbz r3, .L2191 mov r0, r6 - ldrb r1, [r5, #1907] @ zero_extendqisi2 - ldr r2, .L2105+8 + ldrb r1, [r5, #699] @ zero_extendqisi2 + ldr r2, .L2236+12 movs r3, #0 bl HynixSetRRPara -.L2061: +.L2191: mov r0, r6 bl NandcFlashCs cmp r9, #1 mov r0, r6 - bne .L2062 - ldrb r3, [r5, #76] @ zero_extendqisi2 - cbz r3, .L2062 + bne .L2192 + ldrb r3, [r5, #140] @ zero_extendqisi2 + cbz r3, .L2192 bl flash_enter_slc_mode - b .L2063 -.L2062: + b .L2193 +.L2192: bl flash_exit_slc_mode -.L2063: +.L2193: mov r0, r6 - ldr r1, [sp, #28] + ldr r1, [sp, #24] bl FlashProgFirstCmd ldr r3, [fp, #12] mov r0, r6 movs r1, #1 - ldr r2, [sp, #12] str r3, [sp] + ldr r2, [sp, #12] ldr r3, [fp, #8] bl NandcXferData cmp r10, #0 - beq .L2064 + beq .L2194 mov r0, r6 - ldr r1, [sp, #28] + ldr r1, [sp, #24] bl FlashProgDpFirstCmd - ldr r3, [sp, #32] - ldr r1, [sp, #28] mov r0, r6 add r8, r8, #36 - add r3, r5, r3, lsl #2 add r8, r8, r4 - ldr r2, [r3, #1628] + ldr r3, [sp, #28] + ldr r1, [sp, #24] + add r3, r5, r3, lsl #2 + ldr r2, [r3, #656] adds r2, r2, #0 it ne movne r2, #1 bl FlashWaitReadyEN - ldr r3, [sp, #28] ldr r1, [r5, #4] mov r0, r6 + ldr r3, [sp, #24] add r1, r1, r3 bl FlashProgDpSecondCmd ldr r3, [r8, #12] mov r0, r6 movs r1, #1 - ldr r2, [sp, #12] str r3, [sp] + ldr r2, [sp, #12] ldr r3, [r8, #8] bl NandcXferData -.L2064: +.L2194: mov r0, r6 - ldr r1, [sp, #28] + ldr r1, [sp, #24] bl FlashProgSecondCmd mov r0, r6 bl NandcFlashDeCs add r7, r7, r10 - b .L2054 -.L2103: - ldr r0, [r6, #1828] + b .L2184 +.L2234: + ldr r0, [r6, #76] movs r5, #0 bl NandcIqrWaitFlashReady - addw r8, r6, #1660 + addw r8, r6, #1588 mov r7, r6 -.L2066: - ldrb r3, [r6, #1616] @ zero_extendqisi2 +.L2196: + ldrb r3, [r6, #1717] @ zero_extendqisi2 cmp r5, r3 - bcs .L2104 + bcs .L2235 uxtb r0, r5 bl FlashWaitCmdDone cmp r9, #1 - bne .L2067 - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbz r3, .L2067 + bne .L2197 + ldrb r3, [r7, #140] @ zero_extendqisi2 + cbz r3, .L2197 lsls r3, r5, #4 ldrb r0, [r8, r3] @ zero_extendqisi2 bl flash_exit_slc_mode -.L2067: +.L2197: adds r5, r5, #1 - b .L2066 -.L2104: + b .L2196 +.L2235: ldr r3, [sp, #20] - cbnz r3, .L2069 -.L2077: + cbnz r3, .L2199 +.L2207: movs r0, #0 - b .L2052 -.L2069: - ldr r7, .L2105+12 + b .L2182 +.L2199: + ldr r7, .L2236+16 mov r8, #0 mov r10, r7 -.L2070: +.L2200: ldr r3, [sp, #8] cmp r8, r3 - beq .L2077 + beq .L2207 ldr r3, [r4] adds r3, r3, #1 - bne .L2071 + bne .L2201 ldr r1, [r4, #4] - ldr r0, .L2105+16 + ldr r0, .L2236+20 bl printk - b .L2072 -.L2071: + b .L2202 +.L2201: ldr r3, [sp, #8] mov r1, r9 - add r2, sp, #28 + add r2, sp, #24 mov r0, r4 rsb r3, r8, r3 mov r6, r4 - add r5, sp, #36 uxtb r3, r3 str r3, [sp] - add r3, sp, #32 + add r3, sp, #28 bl LogAddr2PhyAddr ldr r2, [r7, #4024] movs r3, #0 @@ -12940,71 +13760,80 @@ FlashProgPages: ldr r2, [r7, #4028] str r3, [r2] ldmia r6!, {r0, r1, r2, r3} + add r5, sp, #32 stmia r5!, {r0, r1, r2, r3} ldmia r6!, {r0, r1, r2, r3} stmia r5!, {r0, r1, r2, r3} - add r0, sp, #36 + add r0, sp, #32 ldr r3, [r6] movs r1, #1 mov r2, r9 str r3, [r5] ldr r3, [r7, #4024] - str r3, [sp, #44] + str r3, [sp, #40] ldr r3, [r7, #4028] - str r3, [sp, #48] + str r3, [sp, #44] bl FlashReadPages - ldr r5, [sp, #36] + ldr r5, [sp, #32] adds r3, r5, #1 - bne .L2073 - ldr r0, .L2105+20 + bne .L2203 + ldr r0, .L2236+24 ldr r1, [r4, #4] bl printk str r5, [r4] -.L2073: +.L2203: ldr r3, [r4, #12] - cbz r3, .L2074 + cbz r3, .L2204 ldr r2, [r3] ldr r3, [r10, #4028] ldr r3, [r3] cmp r2, r3 - beq .L2074 - ldr r0, .L2105+24 + beq .L2204 + ldr r0, .L2236+28 ldr r1, [r4, #4] bl printk mov r3, #-1 str r3, [r4] -.L2074: +.L2204: ldr r3, [r4, #8] - cbz r3, .L2072 + cbz r3, .L2202 ldr r2, [r3] ldr r3, [r10, #4024] ldr r3, [r3] cmp r2, r3 - beq .L2072 - ldr r0, .L2105+28 + beq .L2202 + ldr r0, .L2236+32 ldr r1, [r4, #4] bl printk mov r3, #-1 str r3, [r4] -.L2072: +.L2202: add r8, r8, #1 adds r4, r4, #36 - b .L2070 -.L2052: + b .L2200 +.L2182: + ldr r3, .L2236 + ldr r2, [sp, #68] + ldr r3, [r3] + cmp r2, r3 + beq .L2208 + bl __stack_chk_fail +.L2208: add sp, sp, #76 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2106: +.L2237: .align 2 -.L2105: +.L2236: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR1 - .word .LANCHOR0+1910 + .word .LANCHOR0+702 .word .LANCHOR2 + .word .LC103 .word .LC104 .word .LC105 .word .LC106 - .word .LC107 .fnend .size FlashProgPages, .-FlashProgPages .align 1 @@ -13016,57 +13845,68 @@ FlashTestBlk: .fnstart @ args = 0, pretend = 0, frame = 104 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2110 - push {r4, r5, lr} - .save {r4, r5, lr} + ldr r3, .L2242 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + .pad #104 + sub sp, sp, #104 + ldr r2, [r3] mov r4, r0 - ldr r2, [r3, #4008] - .pad #108 - sub sp, sp, #108 + ldr r5, .L2242+4 + mov r6, r3 + str r2, [sp, #100] + ldr r2, [r5, #4008] cmp r0, r2 - bcc .L2109 - ldr r5, [r3, #4016] - add r0, sp, #40 + bcc .L2241 + ldr r3, [r5, #4016] + add r0, sp, #36 movs r1, #165 movs r2, #32 - str r0, [sp, #16] + str r0, [sp, #12] lsls r4, r4, #10 - str r5, [sp, #12] - bl memset - mov r0, r5 + str r3, [sp, #8] + bl ftl_memset + ldr r0, [r5, #4016] movs r1, #90 movs r2, #8 - bl memset + bl ftl_memset movs r1, #1 - add r0, sp, #4 - str r4, [sp, #8] mov r2, r1 + mov r0, sp + str r4, [sp, #4] bl FlashEraseBlocks movs r1, #1 - add r0, sp, #4 mov r2, r1 mov r3, r1 + mov r0, sp bl FlashProgPages - ldr r4, [sp, #4] - add r0, sp, #4 movs r1, #0 + movs r2, #1 + ldr r4, [sp] + mov r0, sp adds r4, r4, #0 - mov r2, #1 it ne movne r4, #1 negs r4, r4 bl FlashEraseBlocks - b .L2108 -.L2109: + b .L2239 +.L2241: movs r4, #0 -.L2108: +.L2239: + ldr r2, [sp, #100] mov r0, r4 - add sp, sp, #108 + ldr r3, [r6] + cmp r2, r3 + beq .L2240 + bl __stack_chk_fail +.L2240: + add sp, sp, #104 @ sp needed - pop {r4, r5, pc} -.L2111: + pop {r4, r5, r6, pc} +.L2243: .align 2 -.L2110: +.L2242: + .word __stack_chk_guard .word .LANCHOR2 .fnend .size FlashTestBlk, .-FlashTestBlk @@ -13077,29 +13917,32 @@ FlashTestBlk: .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: .fnstart - @ args = 0, pretend = 0, frame = 80 + @ args = 0, pretend = 0, frame = 88 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2303 + movs r1, #1 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #84 - sub sp, sp, #84 - ldr r5, .L2170 - movs r1, #1 - ldr r4, .L2170+4 - ldr r0, .L2170+8 + .pad #92 + sub sp, sp, #92 + ldr r3, [r3] + ldr r5, .L2303+4 + ldr r4, .L2303+8 + str r3, [sp, #84] ldr r3, [r5, #4020] - ldrh r8, [r4, #1876] + ldrh r8, [r4, #124] + ldr r0, .L2303+12 str r3, [sp, #20] - ldrh r3, [r4, #1878] + ldrh r3, [r4, #126] smulbb r8, r8, r3 - ldr r3, [r4, #1788] + ldr r3, [r4, #692] ldrb r3, [r3, #24] @ zero_extendqisi2 uxth r8, r8 str r3, [sp, #24] ldrh r3, [r4, #4] str r3, [sp, #16] ldrb r3, [r4] @ zero_extendqisi2 - ldr r4, .L2170+4 + ldr r4, .L2303+8 cmp r3, #1 itttt eq ldreq r3, [sp, #16] @@ -13108,123 +13951,124 @@ FlashMakeFactorBbt: streq r3, [sp, #16] bl printk ldr r0, [r5, #4020] - ldr r5, .L2170 - mov r1, #4096 - bl __memzero + movs r1, #0 + mov r2, #4096 + bl ftl_memset + ldr r5, .L2303+4 lsr r3, r8, #4 str r3, [sp, #28] movs r3, #0 str r3, [sp, #8] -.L2114: +.L2246: ldrb r7, [sp, #8] @ zero_extendqisi2 - ldrb r3, [r4, #1616] @ zero_extendqisi2 + ldrb r3, [r4, #1717] @ zero_extendqisi2 cmp r3, r7 - bls .L2166 + bls .L2299 add r3, r5, r7, lsl #1 ldrh r6, [r3, #4036] cmp r6, #0 - bne .L2144 - ldrh r2, [r4, #1884] + bne .L2277 + ldrh r2, [r4, #132] mov r1, r6 ldr r0, [r5, #3988] mov r9, r6 lsls r2, r2, #9 bl ftl_memset adds r3, r4, r7 - str r6, [sp, #4] - ldrb r10, [r3, #1620] @ zero_extendqisi2 + ldrb r10, [r3, #1720] @ zero_extendqisi2 lsls r3, r7, #2 add fp, r4, r3 + str r6, [sp, #4] str r3, [sp, #32] -.L2116: +.L2248: ldrh r3, [sp, #4] cmp r3, r8 str r3, [sp, #12] - bcs .L2126 + bcs .L2258 movs r3, #255 - strb r3, [sp, #42] - strb r3, [sp, #43] + strb r3, [sp, #46] + strb r3, [sp, #47] ldr r3, [sp, #24] lsls r1, r3, #31 - bpl .L2118 - ldr r3, [fp, #1628] - add r2, sp, #42 + bpl .L2250 + ldr r3, [fp, #656] + add r2, sp, #46 mov r0, r10 add r3, r3, r6 str r3, [sp, #36] mov r1, r3 bl FlashReadSpare ldrb r2, [r4] @ zero_extendqisi2 - ldr r3, [sp, #36] cmp r2, #1 - bne .L2118 + ldr r3, [sp, #36] + bne .L2250 ldr r1, [r4, #4] - add r2, sp, #43 + add r2, sp, #47 mov r0, r10 add r1, r1, r3 bl FlashReadSpare - ldrb r3, [sp, #42] @ zero_extendqisi2 - ldrb r2, [sp, #43] @ zero_extendqisi2 + ldrb r3, [sp, #46] @ zero_extendqisi2 + ldrb r2, [sp, #47] @ zero_extendqisi2 ands r3, r3, r2 - strb r3, [sp, #42] -.L2118: + strb r3, [sp, #46] +.L2250: ldr r3, [sp, #24] lsls r2, r3, #30 - bpl .L2120 - ldr r3, [r4, #1788] + bpl .L2252 + ldr r3, [r4, #692] mov r0, r10 - add r2, sp, #43 + add r2, sp, #47 ldrh r1, [r3, #10] - ldr r3, [fp, #1628] + ldr r3, [fp, #656] subs r1, r1, #1 add r1, r1, r3 add r1, r1, r6 bl FlashReadSpare -.L2120: - ldr r3, [r4, #1788] +.L2252: + ldr r3, [r4, #692] ldrb r2, [r3, #7] @ zero_extendqisi2 - ldrb r3, [sp, #42] @ zero_extendqisi2 + ldrb r3, [sp, #46] @ zero_extendqisi2 cmp r2, #1 - beq .L2121 + beq .L2253 cmp r2, #8 - bne .L2122 -.L2121: - cbz r3, .L2143 - ldrb r0, [sp, #43] @ zero_extendqisi2 + bne .L2254 +.L2253: + cbz r3, .L2276 + ldrb r0, [sp, #47] @ zero_extendqisi2 clz r0, r0 lsrs r0, r0, #5 - b .L2123 -.L2122: + b .L2255 +.L2254: cmp r3, #255 - bne .L2143 - ldrb r0, [sp, #43] @ zero_extendqisi2 + bne .L2276 + ldrb r0, [sp, #47] @ zero_extendqisi2 subs r0, r0, #255 it ne movne r0, #1 - b .L2123 -.L2143: + b .L2255 +.L2276: movs r0, #1 -.L2123: +.L2255: ldr r3, [sp, #24] lsls r3, r3, #29 - bpl .L2124 - ldr r3, .L2170+4 + bpl .L2256 + ldr r3, .L2303+8 mov r0, r10 ldr r2, [sp, #32] add r3, r3, r2 - ldr r1, [r3, #1628] + ldr r1, [r3, #656] add r1, r1, r6 bl SandiskProgTestBadBlock -.L2124: - cbz r0, .L2125 +.L2256: + cbz r0, .L2257 mov r1, r7 ldr r2, [sp, #4] - ldr r0, .L2170+12 + ldr r0, .L2303+16 add r9, r9, #1 bl printk - ldr r3, [sp, #12] ldr r2, [r5, #3988] uxth r9, r9 + ldr r3, [sp, #12] and r0, r3, #31 lsrs r1, r3, #5 movs r3, #1 @@ -13233,48 +14077,48 @@ FlashMakeFactorBbt: orrs r3, r3, r0 str r3, [r2, r1, lsl #2] ldr r2, [sp, #28] - ldrb r3, [r4, #1616] @ zero_extendqisi2 + ldrb r3, [r4, #1717] @ zero_extendqisi2 muls r3, r2, r3 cmp r9, r3 - bgt .L2126 -.L2125: + bgt .L2258 +.L2257: ldr r3, [sp, #4] adds r3, r3, #1 str r3, [sp, #4] ldr r3, [sp, #16] add r6, r6, r3 - b .L2116 -.L2126: + b .L2248 +.L2258: mov r2, r9 - ldr r0, .L2170+16 + ldr r0, .L2303+20 mov r1, r7 bl printk - ldrb r3, [r4, #1616] @ zero_extendqisi2 + ldrb r3, [r4, #1717] @ zero_extendqisi2 ldr r2, [sp, #28] muls r3, r2, r3 cmp r9, r3 - blt .L2128 - ldrh r2, [r4, #1884] + blt .L2260 + ldrh r2, [r4, #132] movs r1, #0 ldr r0, [r5, #3988] lsls r2, r2, #9 bl ftl_memset -.L2128: +.L2260: cmp r7, #0 - bne .L2130 + bne .L2262 ldrh r10, [r5, #4008] mov r9, #1 mov r6, r7 -.L2131: - ldr r3, .L2170+4 +.L2263: + ldr r3, .L2303+8 ldrb r3, [r3, #1] @ zero_extendqisi2 cmp r3, r10 - bls .L2167 + bls .L2300 mov r0, r10 bl FlashTestBlk - cbz r0, .L2132 + cbz r0, .L2264 mov r1, r10 - ldr r0, .L2170+20 + ldr r0, .L2303+24 bl printk ldr r2, [r5, #3988] lsr r0, r10, #5 @@ -13285,23 +14129,23 @@ FlashMakeFactorBbt: lsl r3, r9, r3 orrs r3, r3, r1 str r3, [r2, r0, lsl #2] -.L2132: +.L2264: add r10, r10, #1 uxth r10, r10 - b .L2131 -.L2167: + b .L2263 +.L2300: add fp, r8, #-1 sub r9, r8, #50 mov r10, #1 uxth fp, fp -.L2134: +.L2266: cmp fp, r9 - ble .L2168 + ble .L2301 mov r0, fp bl FlashTestBlk - cbz r0, .L2135 + cbz r0, .L2267 mov r1, fp - ldr r0, .L2170+20 + ldr r0, .L2303+24 bl printk ldr r2, [r5, #3988] lsr r0, fp, #5 @@ -13310,91 +14154,103 @@ FlashMakeFactorBbt: ldr r1, [r2, r0, lsl #2] orrs r3, r3, r1 str r3, [r2, r0, lsl #2] -.L2135: +.L2267: add fp, fp, #-1 uxth fp, fp - b .L2134 -.L2168: - ldr r3, .L2170+4 + b .L2266 +.L2301: + ldr r3, .L2303+8 ldr r2, [r5, #4008] ldrb r3, [r3, #1] @ zero_extendqisi2 subs r3, r3, r2 cmp r6, r3 - bcc .L2130 - ldrh r2, [r4, #1884] + bcc .L2262 + ldrh r2, [r4, #132] movs r1, #0 ldr r0, [r5, #3988] lsls r2, r2, #9 bl ftl_memset -.L2130: +.L2262: ldrb r6, [sp, #8] @ zero_extendqisi2 add r10, r8, #-1 add r9, r5, r7, lsl #1 uxth r10, r10 mul r6, r8, r6 -.L2138: +.L2270: mov r1, r7 - ldr r0, .L2170+24 + ldr r0, .L2303+28 mov r2, r10 bl printk ldr r1, [r5, #3988] -.L2139: +.L2271: lsr r3, r10, #5 and r2, r10, #31 ldr r3, [r1, r3, lsl #2] lsrs r3, r3, r2 ands r3, r3, #1 - beq .L2169 + beq .L2302 add r10, r10, #-1 uxth r10, r10 - b .L2139 -.L2169: + b .L2271 +.L2302: ldr r1, [sp, #20] movw r2, #61664 strh r10, [r9, #4036] @ movhi - add r0, sp, #44 + add r0, sp, #48 strh r2, [r1] @ movhi strh r10, [r1, #2] @ movhi strh r3, [r1, #8] @ movhi movs r1, #1 ldr r3, [r5, #3988] mov r2, r1 - str r3, [sp, #52] - ldr r3, [r5, #4020] str r3, [sp, #56] + ldr r3, [r5, #4020] + str r3, [sp, #60] add r3, r10, r6 lsls r3, r3, #10 - str r3, [sp, #48] + str r3, [sp, #52] bl FlashEraseBlocks movs r1, #1 - add r0, sp, #44 mov r3, r1 mov r2, r1 + add r0, sp, #48 bl FlashProgPages - ldr r3, [sp, #44] - cbz r3, .L2144 + ldr r3, [sp, #48] + cbz r3, .L2277 add r10, r10, #-1 uxth r10, r10 - b .L2138 -.L2144: + b .L2270 +.L2277: ldr r3, [sp, #8] adds r3, r3, #1 str r3, [sp, #8] - b .L2114 -.L2166: - add sp, sp, #84 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2171: + b .L2246 +.L2304: .align 2 -.L2170: +.L2303: + .word __stack_chk_guard .word .LANCHOR2 .word .LANCHOR0 - .word .LC109 - .word .LC110 - .word .LC111 - .word .LC112 - .word .LC113 + .word .LC117 + .word .LC118 + .word .LC119 + .word .LC120 + .word .LC121 +.L2299: + ldr r3, .L2305 + ldr r2, [sp, #84] + ldr r3, [r3] + cmp r2, r3 + beq .L2274 + bl __stack_chk_fail +.L2274: + add sp, sp, #92 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2306: + .align 2 +.L2305: + .word __stack_chk_guard .fnend .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 1 @@ -13406,268 +14262,265 @@ FtlLowFormatEraseBlock: .fnstart @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2359 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, .L2224 - str r0, [sp, #4] - str r1, [sp] - ldrb r3, [r7, #2828] @ zero_extendqisi2 - str r3, [sp, #16] - ldr r3, .L2224+4 - ldr r2, [r3, #744] + ldrb r2, [r3, #1793] @ zero_extendqisi2 mov fp, r3 + str r0, [sp, #8] + str r1, [sp, #4] + str r2, [sp, #20] + ldr r2, [r3, #4052] cmp r2, #0 - bne .L2201 - ldrb r3, [r7, #76] @ zero_extendqisi2 - mov r8, #36 - mov r9, r2 + bne .L2336 + ldrb r3, [r3, #140] @ zero_extendqisi2 + mov r10, #36 + ldr r7, .L2359+4 + mov r6, r2 mov r5, r2 mov r4, r2 - mov r10, fp - str r3, [sp, #8] - str r0, [fp, #1752] -.L2174: - ldrh r0, [r7, #2840] - uxth r1, r9 - ldr r3, .L2224 + mov r9, fp + str r3, [sp, #12] + str r0, [r7, #1752] +.L2309: + ldrh r0, [fp, #1804] + uxth r1, r6 + ldr r8, .L2359 cmp r0, r1 - bls .L2219 - mul r6, r8, r1 - ldr r0, [fp, #748] + bls .L2354 + mul lr, r10, r1 + ldr r0, [r9, #4056] + add r1, r1, r9 movs r3, #0 - str r3, [r0, r6] - ldr r3, .L2224 - add r1, r1, r3 - ldrb r0, [r1, #2868] @ zero_extendqisi2 - ldr r1, [sp, #4] + str r3, [r0, lr] + ldrb r0, [r1, #1832] @ zero_extendqisi2 + ldr r1, [sp, #8] bl V2P_block - ldr r3, [sp] - mov r6, r0 - cbz r3, .L2175 + ldr r3, [sp, #4] + mov r8, r0 + cbz r3, .L2310 bl IsBlkInVendorPart - cbnz r0, .L2176 -.L2175: - mov r0, r6 + cbnz r0, .L2311 +.L2310: + mov r0, r8 bl FtlBbmIsBadBlock - cbnz r0, .L2177 - ldr r3, [fp, #748] - lsls r6, r6, #10 - ldrh r1, [r7, #2922] + cbnz r0, .L2312 + ldr r3, [fp, #4056] + lsl r1, r8, #10 + mla lr, r10, r5, r3 + str r1, [lr, #4] + str r0, [lr, #8] + ldrh r1, [fp, #1884] muls r1, r5, r1 + ldr r0, [r7, #1804] 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, #1804] - str r6, [lr, #4] add r1, r1, r0 str r1, [lr, #12] - b .L2176 -.L2177: + uxth r5, r5 + b .L2311 +.L2312: adds r4, r4, #1 uxth r4, r4 -.L2176: - add r9, r9, #1 - b .L2174 -.L2219: +.L2311: + adds r6, r6, #1 + b .L2309 +.L2354: cmp r5, #0 - beq .L2200 - ldr r2, [sp, #8] - mov r8, #0 - ldr r0, [fp, #748] - mov r9, #36 - adds r6, r2, #0 + beq .L2335 + ldr r3, [sp, #12] mov r2, r5 + ldr r0, [r8, #4056] + movs r7, #0 + adds r6, r3, #0 + strb r7, [r8, #1793] it ne movne r6, #1 - strb r8, [r3, #2828] - str r3, [sp, #8] mov r1, r6 bl FlashEraseBlocks - ldrb r2, [sp, #16] @ zero_extendqisi2 - ldr r3, [sp, #8] - strb r2, [r3, #2828] -.L2181: - uxth r2, r8 + ldrb r3, [sp, #20] @ zero_extendqisi2 + strb r3, [r8, #1793] + mov r8, #36 +.L2316: + uxth r2, r7 cmp r2, r5 - bcs .L2220 - mul r2, r9, r8 - ldr r1, [fp, #748] + bcs .L2355 + mul r2, r8, r7 + ldr r1, [fp, #4056] adds r0, r1, r2 ldr r2, [r1, r2] adds r2, r2, #1 - bne .L2182 + bne .L2317 ldr r0, [r0, #4] adds r4, r4, #1 ubfx r0, r0, #10, #16 uxth r4, r4 bl FtlBbmMapBadBlock -.L2182: - add r8, r8, #1 - b .L2181 -.L2220: - ldr r3, [sp] - cbnz r3, .L2184 +.L2317: + adds r7, r7, #1 + b .L2316 +.L2355: + ldr r3, [sp, #4] + cbnz r3, .L2319 movs r3, #6 uxth r6, r6 - str r3, [sp, #12] + str r3, [sp, #16] movs r3, #1 - str r3, [sp, #8] - b .L2185 -.L2184: - ldrh r3, [r7, #2912] - str r3, [sp, #8] - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbnz r3, .L2202 - ldr r3, [sp, #8] + str r3, [sp, #12] + b .L2320 +.L2319: + ldrh r3, [fp, #1874] + str r3, [sp, #12] + ldrb r3, [fp, #140] @ zero_extendqisi2 + cbnz r3, .L2337 + ldr r3, [sp, #12] movs r6, #1 lsrs r3, r3, #2 - str r3, [sp, #12] - b .L2185 -.L2202: + str r3, [sp, #16] + b .L2320 +.L2337: movs r6, #1 - str r6, [sp, #12] -.L2185: - ldr r8, .L2224+4 - movs r7, #0 - mov r10, r8 -.L2195: - mov fp, #0 - mov r5, fp -.L2186: - ldr r9, .L2224 - uxth r3, fp - ldrh r1, [r9, #2840] - cmp r1, r3 - bls .L2221 + str r6, [sp, #16] +.L2320: + ldr r9, .L2359 + mov r8, #0 +.L2330: + mov r10, #0 + ldr fp, .L2359+4 + mov r5, r10 +.L2321: + ldrh r2, [r9, #1804] + uxth r3, r10 + ldr r7, .L2359 + cmp r2, r3 + bls .L2356 movs r2, #36 - ldr r0, [r8, #748] - mul r1, r2, r3 - movs r2, #0 - str r2, [r0, r1] - ldr r2, .L2224 - ldr r1, [sp, #4] - add r3, r3, r2 - ldrb r0, [r3, #2868] @ zero_extendqisi2 + ldr r1, [r9, #4056] + movs r0, #0 + muls r2, r3, r2 + add r3, r3, r9 + str r0, [r1, r2] + ldr r1, [sp, #8] + ldrb r0, [r3, #1832] @ zero_extendqisi2 bl V2P_block - ldr r3, [sp] - mov r9, r0 - cbz r3, .L2187 + ldr r3, [sp, #4] + mov r7, r0 + cbz r3, .L2322 bl IsBlkInVendorPart - cbnz r0, .L2188 -.L2187: - mov r0, r9 + cbnz r0, .L2323 +.L2322: + mov r0, r7 bl FtlBbmIsBadBlock - cbnz r0, .L2188 - ldr r1, [r10, #748] + cbnz r0, .L2323 + ldr r2, [r9, #4056] movs r3, #36 - ldr r0, [r8, #1796] - mla r1, r3, r5, r1 - add r3, r7, r9, lsl #10 - str r3, [r1, #4] - ldr r3, [r10, #1792] - str r3, [r1, #8] - ldr r3, .L2224 - ldrh r3, [r3, #2922] + ldr r1, .L2359+4 + add r7, r8, r7, lsl #10 + mla r2, r3, r5, r2 + ldr r3, [fp, #1792] + ldr r1, [r1, #1796] + str r3, [r2, #8] + ldrh r3, [r9, #1884] muls r3, r5, r3 add r5, r5, #1 it mi addmi r3, r3, #3 bic r3, r3, #3 + str r7, [r2, #4] uxth r5, r5 - add r3, r3, r0 - str r3, [r1, #12] -.L2188: - add fp, fp, #1 - b .L2186 -.L2221: + add r3, r3, r1 + str r3, [r2, #12] +.L2323: + add r10, r10, #1 + b .L2321 +.L2356: cmp r5, #0 - beq .L2200 - mov r2, r6 - movs r3, #1 - ldr r0, [r8, #748] + beq .L2335 + ldr r3, .L2359 + movs r2, #0 mov r1, r5 - mov fp, #0 - strb fp, [r9, #2828] + mov r10, #0 + mov fp, #36 + strb r2, [r3, #1793] + mov r2, r6 + ldr r0, [r3, #4056] + movs r3, #1 bl FlashProgPages - ldrb r3, [sp, #16] @ zero_extendqisi2 - movs r2, #36 - strb r3, [r9, #2828] - ldr r9, .L2224+4 -.L2192: - uxth r3, fp + ldr r3, .L2359 + ldrb r2, [sp, #20] @ zero_extendqisi2 + strb r2, [r3, #1793] +.L2327: + uxth r3, r10 cmp r3, r5 - bcs .L2222 - mul r3, r2, fp - ldr r1, [r10, #748] - adds r0, r1, r3 - ldr r3, [r1, r3] - cbz r3, .L2193 + bcs .L2357 + mul r3, fp, r10 + ldr r2, .L2359 + ldr r2, [r2, #4056] + adds r0, r2, r3 + ldr r3, [r2, r3] + cbz r3, .L2328 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] -.L2193: - add fp, fp, #1 - b .L2192 -.L2222: +.L2328: + add r10, r10, #1 + b .L2327 +.L2357: + ldr r3, [sp, #16] + add r8, r8, r3 ldr r3, [sp, #12] - add r7, r7, r3 - ldr r3, [sp, #8] - uxth r7, r7 - cmp r7, r3 - bcc .L2195 - movs r7, #0 - mov r8, #36 -.L2196: - uxth r3, r7 + uxth r8, r8 + cmp r8, r3 + bcc .L2330 + mov r8, #0 + mov r9, #36 +.L2331: + uxth r3, r8 cmp r3, r5 - bcs .L2223 - ldr r3, [sp] - cbz r3, .L2197 - mul r3, r8, r7 - ldr r2, [r9, #748] + bcs .L2358 + ldr r3, [sp, #4] + cbz r3, .L2332 + mul r3, r9, r8 + ldr r2, [r7, #4056] adds r1, r2, r3 ldr r3, [r2, r3] - cbnz r3, .L2197 + cbnz r3, .L2332 ldr r0, [r1, #4] movs r1, #1 ubfx r0, r0, #10, #16 bl FtlFreeSysBlkQueueIn -.L2197: - adds r7, r7, #1 - b .L2196 -.L2223: - ldr r3, [sp, #4] +.L2332: + add r8, r8, #1 + b .L2331 +.L2358: + ldr r3, [sp, #8] cmp r3, #63 - bls .L2199 - ldr r3, [sp] - cbz r3, .L2200 -.L2199: - ldr r0, [r9, #748] + bls .L2334 + ldr r3, [sp, #4] + cbz r3, .L2335 +.L2334: + ldr r0, [r7, #4056] mov r1, r6 mov r2, r5 bl FlashEraseBlocks -.L2200: +.L2335: mov r0, r4 - b .L2173 -.L2201: + b .L2308 +.L2336: movs r0, #0 -.L2173: +.L2308: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2225: +.L2360: .align 2 -.L2224: +.L2359: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -13684,144 +14537,139 @@ FtlBbmTblFlush: 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, .L2238 - ldr r5, [r4, #744] - cmp r5, #0 - bne .L2228 - ldr r7, .L2238+4 - mov r1, r5 + ldr r7, .L2378 + ldr r6, [r7, #4052] + cmp r6, #0 + bne .L2363 + ldr r4, .L2378+4 + mov r1, r6 + ldrh r2, [r7, #1882] + add r8, r7, #1960 ldr r0, [r4, #1776] ldr r3, [r4, #1800] - addw r8, r7, #2996 - ldrh r2, [r7, #2920] str r0, [r4, #4060] str r3, [r4, #4064] bl ftl_memset -.L2229: - ldrh r3, [r7, #2862] - ldr r6, .L2238+4 - cmp r5, r3 - bge .L2237 +.L2364: + ldrh r3, [r7, #1826] + ldr r5, .L2378 + cmp r6, r3 + bge .L2377 ldrh r2, [r4, #1864] ldr r3, [r4, #4060] ldr r1, [r8, #4]! - mul r0, r2, r5 + mul r0, r2, r6 lsls r2, r2, #2 - adds r5, r5, #1 + adds r6, r6, #1 add r0, r3, r0, lsl #2 bl ftl_memcpy - b .L2229 -.L2237: - ldr r8, [r4, #4064] + b .L2364 +.L2377: + ldr r6, [r4, #4064] movs r1, #255 movs r2, #16 - mov r9, #0 - ldr r10, .L2238 - mov r5, r6 - mov r0, r8 - mov fp, r9 - bl memset + mov r8, #0 + ldr r10, .L2378+4 + mov r0, r6 + mov r9, r8 + bl ftl_memset movw r3, #61649 - strh r3, [r8] @ movhi - ldr r3, [r6, #2980] - str r3, [r8, #4] - ldrh r3, [r6, #2972] - strh r3, [r8, #2] @ movhi - ldrh r3, [r6, #2976] - strh r3, [r8, #8] @ movhi - ldrh r3, [r6, #2978] - strh r3, [r8, #10] @ movhi - ldr r3, [r6, #2836] - strh r3, [r8, #12] @ movhi -.L2231: + strh r3, [r6] @ movhi + ldr r3, [r5, #1944] + str r3, [r6, #4] + ldrh r3, [r5, #1936] + strh r3, [r6, #2] @ movhi + ldrh r3, [r5, #1940] + strh r3, [r6, #8] @ movhi + ldrh r3, [r5, #1942] + strh r3, [r6, #10] @ movhi + ldr r3, [r5, #1800] + strh r3, [r6, #12] @ movhi +.L2366: ldr r3, [r4, #1776] - movs r6, #0 - ldrh r1, [r7, #2972] - ldrh r2, [r7, #2974] + mov fp, #0 + ldrh r1, [r7, #1936] + ldrh r2, [r7, #1938] str r3, [r4, #4060] ldr r3, [r4, #1800] - str r6, [r4, #4052] + str fp, [r4, #4052] str r3, [r4, #4064] orr r3, r2, r1, lsl #10 - ldrh r0, [r8, #10] + ldrh r0, [r6, #10] str r3, [r4, #4056] - ldrh r3, [r7, #2976] + ldrh r3, [r7, #1940] str r0, [sp] - ldr r0, .L2238+8 + ldr r0, .L2378+8 bl printk - movs r1, #1 - ldr r0, .L2238+12 - mov r2, r1 - mov r3, r1 - bl FlashProgPages - ldrh r3, [r7, #2912] - ldrh r2, [r7, #2974] + ldrh r3, [r7, #1874] + ldrh r2, [r7, #1938] subs r3, r3, #1 cmp r2, r3 - blt .L2232 - ldr r3, [r5, #2980] + blt .L2367 + ldr r3, [r5, #1944] movs r1, #1 - ldrh r2, [r5, #2972] + ldrh r2, [r5, #1936] adds r3, r3, #1 - ldr r0, [r10, #748] - str r3, [r5, #2980] - str r3, [r8, #4] - ldrh r3, [r5, #2976] - strh r2, [r8, #8] @ movhi - strh r2, [r5, #2976] @ movhi + ldr r0, [r5, #4056] + str r3, [r5, #1944] + str r3, [r6, #4] + ldrh r3, [r5, #1940] + strh r2, [r6, #8] @ movhi + strh r2, [r5, #1940] @ movhi mov r2, r1 - strh r3, [r5, #2972] @ movhi + strh r3, [r5, #1936] @ movhi lsls r3, r3, #10 str r3, [r10, #4056] str r3, [r0, #4] - strh r6, [r5, #2974] @ movhi + strh fp, [r5, #1938] @ movhi bl FlashEraseBlocks +.L2367: movs r1, #1 - ldr r0, .L2238+12 + ldr fp, .L2378+4 mov r2, r1 mov r3, r1 + addw r0, fp, #4052 bl FlashProgPages -.L2232: - ldrh r3, [r7, #2974] - ldr r6, .L2238 + ldrh r3, [r7, #1938] adds r3, r3, #1 - strh r3, [r7, #2974] @ movhi + strh r3, [r7, #1938] @ movhi ldr r3, [r4, #4052] - adds r3, r3, #1 - bne .L2233 - add r9, r9, #1 - ldr r0, .L2238+16 + adds r2, r3, #1 + bne .L2368 + add r8, r8, #1 + ldr r0, .L2378+12 ldr r1, [r10, #4056] - uxth r9, r9 + uxth r8, r8 bl printk - cmp r9, #3 - bls .L2231 - ldr r0, .L2238+20 - mov r2, r9 - ldr r1, [r6, #4056] + cmp r8, #3 + bls .L2366 + mov r2, r8 + ldr r0, .L2378+16 + ldr r1, [fp, #4056] bl printk - movs r3, #1 - str r3, [r6, #744] - b .L2228 -.L2233: - cmp fp, #0 - bne .L2228 - mov fp, #1 - b .L2231 -.L2228: + ldr r3, .L2378 + movs r2, #1 + str r2, [r3, #4052] + b .L2363 +.L2368: + add r9, r9, #1 + cmp r9, #1 + beq .L2366 + cmp r3, #256 + beq .L2366 +.L2363: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2239: +.L2379: .align 2 -.L2238: - .word .LANCHOR2 +.L2378: .word .LANCHOR0 - .word .LC114 - .word .LANCHOR2+4052 - .word .LC115 - .word .LC116 + .word .LANCHOR2 + .word .LC122 + .word .LC123 + .word .LC124 .fnend .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 1 @@ -13835,98 +14683,104 @@ allocate_data_superblock: @ 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 - ldr r4, .L2296 + mov r4, r0 + ldr r5, .L2436 .pad #20 sub sp, sp, #20 - ldr r3, [r4, #744] + ldr r3, [r5, #4052] cmp r3, #0 - bne .L2241 - ldr r10, .L2296+16 - mov r8, r4 -.L2242: - ldr r3, .L2296+4 - ldrb r2, [r5, #8] @ zero_extendqisi2 - cmp r5, r3 - bne .L2243 - ldrh r7, [r8, #832] - ldr r6, [r8, #1648] - lsrs r1, r7, #1 - mul r0, r6, r7 + bne .L2381 + ldr r9, .L2436+16 + mov r10, r5 +.L2382: + ldr r3, .L2436+4 + ldrb r2, [r4, #8] @ zero_extendqisi2 + cmp r4, r3 + add r6, r3, #104 + bne .L2383 + ldrh lr, [r9, #-204] + ldr r7, [r9, #616] + lsr r1, lr, #1 + mul r0, r7, lr adds r3, r1, #1 add r3, r3, r0, lsr #2 - ldr r0, [r10, #2832] + ldr r0, [r5, #1796] uxth r3, r3 - cbz r0, .L2266 - ldr r0, [r8, #1052] - cmp r0, #29 - bhi .L2266 + cbz r0, .L2406 + ldr r0, [r9, #16] + cmp r0, #39 + bhi .L2406 cmp r0, #2 - bls .L2271 - lsls r3, r7, #31 - bpl .L2244 - cbz r6, .L2268 - b .L2244 -.L2243: + bls .L2411 + tst lr, #1 + beq .L2384 + cbz r7, .L2408 + b .L2384 +.L2383: cmp r2, #1 - bne .L2271 - ldrh r3, [r10, #2860] + bne .L2411 + ldrh r3, [r5, #1824] cmp r3, #1 - beq .L2271 - ldrb r3, [r10, #76] @ zero_extendqisi2 - cbnz r3, .L2271 - ldrh r0, [r8, #832] - ldr r3, [r10, #2832] + beq .L2411 + ldrb r3, [r10, #140] @ zero_extendqisi2 + cbnz r3, .L2411 + ldrh r0, [r9, #-204] + ldr r3, [r10, #1796] lsrs r1, r0, #3 - cbz r3, .L2244 - ldr r3, [r8, #1052] + cbz r3, .L2384 + ldr r3, [r9, #16] cmp r3, #1 - bhi .L2244 + bhi .L2384 rsb r0, r0, r0, lsl #3 ubfx r1, r0, #3, #16 - b .L2244 -.L2266: + b .L2384 +.L2406: mov r1, r3 -.L2244: - cbz r1, .L2245 +.L2384: + cbz r1, .L2385 subs r1, r1, #1 uxth r1, r1 - b .L2245 -.L2268: - mov r1, r6 - b .L2245 -.L2271: + b .L2385 +.L2408: + mov r1, r7 + b .L2385 +.L2411: movs r1, #0 -.L2245: - ldr r0, .L2296+8 +.L2385: + ldr r0, .L2436+8 bl List_pop_index_node - ldrh r3, [r4, #832] + ldrh r3, [r6, #-204] subs r3, r3, #1 - strh r3, [r4, #832] @ movhi - uxth r6, r0 - mov r0, r5 - strh r6, [r5] @ movhi + strh r3, [r6, #-204] @ movhi + ldrh r3, [r5, #1812] + uxth r7, r0 + cmp r3, r7 + bls .L2382 + ldr r3, [r9, #-220] + ldrh r8, [r3, r7, lsl #1] + cmp r8, #0 + bne .L2382 + strh r7, [r4] @ movhi + mov r0, r4 bl make_superblock - ldrb r3, [r5, #7] @ zero_extendqisi2 - cbz r3, .L2246 - ldr r0, [r8, #748] + ldrb r3, [r4, #7] @ zero_extendqisi2 + cbz r3, .L2387 + ldr r0, [r10, #4056] movs r2, #36 - ldrh r7, [r10, #2840] - add lr, r5, #14 - ldr r9, .L2296+16 + ldrh ip, [r10, #1804] + add lr, r4, #14 mov r3, r0 - mla r1, r2, r7, r0 - movs r7, #0 - mov ip, r7 + mla r1, r2, ip, r0 + mov ip, r8 str r1, [sp] - b .L2247 -.L2246: - ldr r3, [r8, #816] - b .L2291 -.L2247: + b .L2388 +.L2387: + ldr r3, [r9, #-220] + b .L2431 +.L2388: ldr r1, [sp] cmp r3, r1 - beq .L2293 + beq .L2433 str ip, [r3, #8] movw fp, #65535 str ip, [r3, #12] @@ -13935,122 +14789,121 @@ allocate_data_superblock: cmp r1, fp itttt ne lslne r1, r1, #10 - mlane fp, r2, r7, r0 - addne r7, r7, #1 - uxthne r7, r7 + mlane fp, r2, r8, r0 + addne r8, r8, #1 + uxthne r8, r8 it ne strne r1, [fp, #4] - b .L2247 -.L2293: - ldr r3, [r9, #2832] - cbz r3, .L2251 - ldr r3, .L2296+12 - cmp r5, r3 - bne .L2251 - ldr r3, [r8, #752] - ldrh r3, [r3, r6, lsl #1] - cmp r3, #30 + b .L2388 +.L2433: + ldr r3, [r5, #1796] + cbz r3, .L2391 + ldr r3, .L2436+12 + cmp r4, r3 + bne .L2391 + ldr r3, [r10, #4060] + ldrh r3, [r3, r7, lsl #1] + cmp r3, #40 itt hi movhi r3, #0 - strbhi r3, [r8, #844] -.L2251: - ldrb r3, [r5, #8] @ zero_extendqisi2 - ldr r2, [r4, #752] - cbnz r3, .L2252 - ldrh r1, [r2, r6, lsl #1] - cbz r1, .L2272 - ldrh r3, [r9, #2900] + strbhi r3, [r9, #-192] +.L2391: + ldrb r3, [r4, #8] @ zero_extendqisi2 + ldr r2, [r5, #4060] + cbnz r3, .L2392 + ldrh r1, [r2, r7, lsl #1] + cbz r1, .L2412 + ldrh r3, [r10, #1864] add r3, r3, r1 uxth r3, r3 - b .L2253 -.L2272: + b .L2393 +.L2412: movs r3, #2 -.L2253: - strh r3, [r2, r6, lsl #1] @ movhi - mov r0, r6 - ldr r3, [r4, #1036] +.L2393: + strh r3, [r2, r7, lsl #1] @ movhi + mov r0, r7 + ldr r3, [r6] movs r1, #0 adds r3, r3, #1 - str r3, [r4, #1036] + str r3, [r6] bl ftl_set_blk_mode - b .L2254 -.L2252: - ldrh r3, [r2, r6, lsl #1] - lsrs r0, r6, #5 - and r1, r6, #31 + b .L2394 +.L2392: + ldrh r3, [r2, r7, lsl #1] + lsrs r0, r7, #5 + and r1, r7, #31 adds r3, r3, #1 - strh r3, [r2, r6, lsl #1] @ movhi - ldr r3, [r4, #1040] - ldr r2, [r4, #992] + strh r3, [r2, r7, lsl #1] @ movhi + ldr r3, [r6, #4] + ldr r2, [r6, #-44] adds r3, r3, #1 - str r3, [r4, #1040] + str r3, [r6, #4] movs r3, #1 lsls r3, r3, r1 ldr r1, [r2, r0, lsl #2] orrs r3, r3, r1 str r3, [r2, r0, lsl #2] -.L2254: - ldr r3, [r4, #752] - ldr r2, [r4, #1048] - ldr r0, [r4, #1036] - ldrh r3, [r3, r6, lsl #1] - ldrh r1, [r9, #2848] +.L2394: + ldr r3, [r5, #4060] + ldr r2, [r6, #12] + ldrh r1, [r5, #1812] + ldrh r3, [r3, r7, lsl #1] cmp r3, r2 - ldrh r2, [r9, #2900] + ldrh r2, [r5, #1864] it hi - strhi r3, [r8, #1048] - ldr r3, [r4, #1040] + strhi r3, [r9, #12] + ldmia r6, {r0, r3} mla r0, r0, r2, r3 bl __aeabi_uidiv - ldr r2, [r4, #1820] - ldr r1, [r4, #748] + ldr r2, [r6, #1820] + ldr r1, [r5, #4056] ldr r3, [r2, #16] adds r3, r3, #1 str r3, [r2, #16] movs r3, #36 adds r2, r1, #4 - mla r3, r3, r7, r1 + mla r3, r3, r8, r1 adds r3, r3, #40 - str r0, [r4, #1044] -.L2256: + str r0, [r6, #8] +.L2396: adds r2, r2, #36 cmp r2, r3 - beq .L2294 + beq .L2434 ldr r1, [r2, #-36] bic r1, r1, #1020 bic r1, r1, #3 str r1, [r2, #-36] - b .L2256 -.L2294: - ldrb r3, [r9, #76] @ zero_extendqisi2 - cbz r3, .L2258 - ldrb r3, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #748] + b .L2396 +.L2434: + ldrb r3, [r5, #140] @ zero_extendqisi2 + cbz r3, .L2398 + ldrb r3, [r4, #8] @ zero_extendqisi2 + mov r2, r8 + ldr r0, [r10, #4056] cmp r3, #1 ite eq moveq r1, #0 movne r1, #1 bl FlashEraseBlocks -.L2258: - ldrb r1, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #748] +.L2398: + ldrb r1, [r4, #8] @ zero_extendqisi2 + mov r2, r8 + ldr r0, [r5, #4056] mov fp, #0 bl FlashEraseBlocks - add r1, r5, #16 + add r1, r4, #16 mov ip, #36 mov r2, fp -.L2260: +.L2400: uxth r3, fp - cmp r3, r7 - bcs .L2295 + cmp r3, r8 + bcs .L2435 mul r3, ip, fp - ldr lr, [r4, #748] + ldr lr, [r5, #4056] add r0, lr, r3 ldr r3, [lr, r3] cmp r3, #-1 - bne .L2261 + bne .L2401 ldr r0, [r0, #4] adds r2, r2, #1 str ip, [sp, #12] @@ -14064,55 +14917,55 @@ allocate_data_superblock: ldr ip, [sp, #12] ldr r2, [sp] strh r3, [r1] @ movhi - ldrb r3, [r5, #7] @ zero_extendqisi2 + ldrb r3, [r4, #7] @ zero_extendqisi2 subs r3, r3, #1 - strb r3, [r5, #7] -.L2261: + strb r3, [r4, #7] +.L2401: add fp, fp, #1 adds r1, r1, #2 - b .L2260 -.L2295: - cbz r2, .L2263 - mov r0, r6 + b .L2400 +.L2435: + cbz r2, .L2403 + mov r0, r7 bl update_multiplier_value bl FtlBbmTblFlush -.L2263: - ldrb r3, [r5, #7] @ zero_extendqisi2 - cbnz r3, .L2264 - ldr r3, [r4, #816] -.L2291: +.L2403: + ldrb r3, [r4, #7] @ zero_extendqisi2 + cbnz r3, .L2404 + ldr r3, [r6, #-220] +.L2431: movw r2, #65535 - strh r2, [r3, r6, lsl #1] @ movhi - b .L2242 -.L2264: - ldrh r2, [r9, #2910] - strh r6, [r5] @ movhi + strh r2, [r3, r7, lsl #1] @ movhi + b .L2382 +.L2404: + ldrh r2, [r5, #1872] + strh r7, [r4] @ movhi smulbb r3, r2, r3 movs r2, #0 - strh r2, [r5, #2] @ movhi - strb r2, [r5, #6] - ldr r2, [r4, #1028] + strh r2, [r4, #2] @ movhi + strb r2, [r4, #6] + ldr r2, [r6, #-8] uxth r3, r3 - strh r3, [r5, #4] @ movhi - str r2, [r5, #12] + strh r3, [r4, #4] @ movhi + str r2, [r4, #12] adds r2, r2, #1 - str r2, [r4, #1028] - ldr r2, [r4, #816] - ldrh r1, [r5] + str r2, [r6, #-8] + ldr r2, [r6, #-220] + ldrh r1, [r4] strh r3, [r2, r1, lsl #1] @ movhi -.L2241: +.L2381: movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2297: +.L2437: .align 2 -.L2296: - .word .LANCHOR2 - .word .LANCHOR2+932 - .word .LANCHOR2+828 - .word .LANCHOR2+836 +.L2436: .word .LANCHOR0 + .word .LANCHOR2-104 + .word .LANCHOR2-208 + .word .LANCHOR2-200 + .word .LANCHOR2 .fnend .size allocate_data_superblock, .-allocate_data_superblock .align 1 @@ -14127,77 +14980,77 @@ FtlGcFreeBadSuperBlk: 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, .L2311 + ldr r5, .L2451 str r0, [sp] - ldrh r3, [r5, #1694] + ldrh r3, [r5, #666] cmp r3, #0 - beq .L2300 - ldr r7, .L2311+4 + beq .L2440 + ldr r7, .L2451+4 mov r10, #0 mov r8, r5 -.L2299: - ldrh r2, [r7, #2840] +.L2439: + ldrh r2, [r7, #1804] uxth r3, r10 cmp r2, r3 - bls .L2308 + bls .L2448 add r3, r3, r7 ldr r1, [sp] mov fp, #0 - ldrb r0, [r3, #2868] @ zero_extendqisi2 + ldrb r0, [r3, #1832] @ zero_extendqisi2 bl V2P_block - ldr r2, .L2311+8 + ldr r2, .L2451+8 mov r9, r0 -.L2301: - ldrh r3, [r5, #1694] +.L2441: + ldrh r3, [r5, #666] uxth r4, fp cmp r3, r4 - bls .L2309 + bls .L2449 lsls r6, r4, #1 add r3, r8, r6 - ldrh r3, [r3, #1696] + ldrh r3, [r3, #668] cmp r3, r9 - bne .L2302 + bne .L2442 mov r1, r9 - ldr r0, .L2311+12 + ldr r0, .L2451+12 str r2, [sp, #4] bl printk mov r0, r9 bl FtlBbmMapBadBlock bl FtlBbmTblFlush + ldrh r1, [r8, #666] ldr r2, [sp, #4] - ldrh r1, [r8, #1694] adds r3, r2, r6 -.L2303: +.L2443: cmp r4, r1 - bcs .L2310 + bcs .L2450 ldrh r0, [r3, #2] adds r4, r4, #1 uxth r4, r4 strh r0, [r3], #2 @ movhi - b .L2303 -.L2310: + b .L2443 +.L2450: subs r1, r1, #1 - strh r1, [r5, #1694] @ movhi -.L2302: + strh r1, [r5, #666] @ movhi +.L2442: add fp, fp, #1 - b .L2301 -.L2309: + b .L2441 +.L2449: add r10, r10, #1 - b .L2299 -.L2308: + b .L2439 +.L2448: bl FtlGcReFreshBadBlk -.L2300: +.L2440: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2312: +.L2452: .align 2 -.L2311: +.L2451: .word .LANCHOR2 .word .LANCHOR0 - .word .LANCHOR2+1696 - .word .LC117 + .word .LANCHOR2+668 + .word .LC125 .fnend .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 1 @@ -14209,53 +15062,53 @@ update_vpc_list: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L2322 + ldr r2, .L2462 push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r4, r0 - ldr r3, [r2, #816] + ldr r3, [r2, #-220] mov r5, r2 ldrh r3, [r3, r0, lsl #1] - cbnz r3, .L2314 - ldrh r1, [r2, #1072] + cbnz r3, .L2454 + ldrh r1, [r2, #40] cmp r1, r0 - bne .L2315 + bne .L2455 movw r3, #65535 - strh r3, [r2, #1072] @ movhi - b .L2316 -.L2315: - ldrh r1, [r2, #836] + strh r3, [r2, #40] @ movhi + b .L2456 +.L2455: + ldrh r1, [r2, #-200] cmp r1, r0 - beq .L2321 - ldrh r1, [r2, #884] + beq .L2461 + ldrh r1, [r2, #-152] cmp r1, r0 - beq .L2321 - ldrh r2, [r2, #932] + beq .L2461 + ldrh r2, [r2, #-104] cmp r2, r0 - beq .L2321 -.L2316: + beq .L2461 +.L2456: mov r1, r4 - ldr r0, .L2322+4 + ldr r0, .L2462+4 bl List_remove_node - ldrh r3, [r5, #824] + ldrh r3, [r5, #-212] mov r0, r4 subs r3, r3, #1 - strh r3, [r5, #824] @ movhi + strh r3, [r5, #-212] @ movhi bl free_data_superblock mov r0, r4 bl FtlGcFreeBadSuperBlk movs r0, #1 pop {r3, r4, r5, pc} -.L2314: +.L2454: bl List_update_data_list -.L2321: +.L2461: movs r0, #0 pop {r3, r4, r5, pc} -.L2323: +.L2463: .align 2 -.L2322: +.L2462: .word .LANCHOR2 - .word .LANCHOR2+812 + .word .LANCHOR2-224 .fnend .size update_vpc_list, .-update_vpc_list .align 1 @@ -14267,50 +15120,72 @@ 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 - mov r5, r0 - ldr r3, .L2330 - beq .L2325 - ldr r2, [r3, #816] - ldrh r4, [r2, r0, lsl #1] - cbnz r4, .L2326 - mov r1, r5 - mov r2, r4 - ldr r0, .L2330+4 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r4, r0 + ldr r5, .L2474 + beq .L2465 + ldr r3, [r5, #-220] + ldrh r2, [r3, r0, lsl #1] + cbnz r2, .L2466 + mov r1, r4 + ldr r0, .L2474+4 bl printk + ldr r3, [r5, #-220] + movs r2, #32 + sub r0, r5, #208 + mov r1, r4 + strh r2, [r3, r4, lsl #1] @ movhi + bl test_node_in_list + cbz r0, .L2467 + mov r1, r4 + sub r0, r5, #208 + bl List_remove_node + ldrh r3, [r5, #-204] mov r0, r4 - pop {r3, r4, r5, pc} -.L2326: - subs r4, r4, #1 - strh r4, [r2, r0, lsl #1] @ movhi -.L2325: - ldrh r0, [r3, #1920] + subs r3, r3, #1 + strh r3, [r5, #-204] @ movhi + bl INSERT_DATA_LIST + ldr r3, [r5, #-220] + ldr r0, .L2474+8 + mov r1, r4 + ldrh r2, [r3, r4, lsl #1] + bl printk +.L2467: + mov r0, r4 + bl FtlGcRefreshBlock + b .L2470 +.L2466: + subs r2, r2, #1 + strh r2, [r3, r0, lsl #1] @ movhi +.L2465: + ldrh r0, [r5, #1920] movw r3, #65535 - ldr r4, .L2330 + ldr r6, .L2474 cmp r0, r3 - bne .L2328 - strh r5, [r4, #1920] @ movhi - b .L2329 -.L2328: - cmp r0, r5 - beq .L2329 + bne .L2469 + strh r4, [r6, #1920] @ movhi + b .L2470 +.L2469: + cmp r0, r4 + beq .L2470 bl update_vpc_list - strh r5, [r4, #1920] @ movhi + strh r4, [r6, #1920] @ movhi adds r0, r0, #0 it ne movne r0, #1 - pop {r3, r4, r5, pc} -.L2329: + pop {r4, r5, r6, pc} +.L2470: movs r0, #0 - pop {r3, r4, r5, pc} -.L2331: + pop {r4, r5, r6, pc} +.L2475: .align 2 -.L2330: +.L2474: .word .LANCHOR2 - .word .LC118 + .word .LC126 + .word .LC127 .fnend .size decrement_vpc_count, .-decrement_vpc_count .align 1 @@ -14327,46 +15202,48 @@ FtlSlcSuperblockCheck: mov r4, r0 ldrh r3, [r0, #4] cmp r3, #0 - beq .L2332 + beq .L2476 ldrh r3, [r0] movw r5, #65535 cmp r3, r5 - beq .L2332 + beq .L2476 ldrb r3, [r0, #6] @ zero_extendqisi2 - movs r7, #0 - ldr r6, .L2344 + ldr r7, .L2488 adds r3, r3, #8 + ldr r6, .L2488+4 ldrh r3, [r0, r3, lsl #1] -.L2336: +.L2480: cmp r3, r5 - bne .L2343 -.L2338: + bne .L2487 +.L2482: ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r6, #2840] + ldrh r2, [r7, #1804] adds r3, r3, #1 uxtb r3, r3 strb r3, [r4, #6] cmp r2, r3 itttt eq - strbeq r7, [r4, #6] 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 .L2336 -.L2343: + b .L2480 +.L2487: ldrb r1, [r4, #8] @ zero_extendqisi2 cmp r1, #1 - bne .L2339 - ldrb r3, [r6, #76] @ zero_extendqisi2 - cbnz r3, .L2339 + bne .L2483 + ldrb r3, [r7, #140] @ zero_extendqisi2 + cbnz r3, .L2483 ldrh r3, [r4, #2] add r3, r6, r3, lsl #1 - ldrh r3, [r3, #592] + ldrh r3, [r3, #704] cmp r3, r5 - bne .L2339 + bne .L2483 ldrh r3, [r4, #4] ldrh r0, [r4] subs r3, r3, #1 @@ -14374,39 +15251,39 @@ FtlSlcSuperblockCheck: bl decrement_vpc_count ldrh r2, [r4, #4] cmp r2, #0 - bne .L2338 + bne .L2482 ldrh r3, [r4, #2] strb r2, [r4, #6] adds r3, r3, #1 strh r3, [r4, #2] @ movhi pop {r3, r4, r5, r6, r7, pc} -.L2339: - ldr r2, .L2344 - ldrb r3, [r2, #76] @ zero_extendqisi2 - cbz r3, .L2332 +.L2483: + ldr r2, .L2488 + ldrb r3, [r2, #140] @ zero_extendqisi2 + cbz r3, .L2476 cmp r1, #1 - bne .L2332 + bne .L2476 ldrh r1, [r4, #2] - ldrh r3, [r2, #2912] + ldrh r3, [r2, #1874] cmp r1, r3 - bcc .L2332 - ldr r3, .L2344+4 + bcc .L2476 + ldr r3, .L2488+4 ldrh r0, [r4] ldrh r5, [r4, #4] - ldr r1, [r3, #816] + ldr r1, [r3, #-220] ldrh r3, [r1, r0, lsl #1] subs r3, r3, r5 strh r3, [r1, r0, lsl #1] @ movhi - ldrh r2, [r2, #2910] + ldrh r2, [r2, #1872] movs r3, #0 strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi -.L2332: +.L2476: pop {r3, r4, r5, r6, r7, pc} -.L2345: +.L2489: .align 2 -.L2344: +.L2488: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -14422,61 +15299,64 @@ get_new_active_ppa: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} - movs r6, #0 - ldrb r3, [r0, #6] @ zero_extendqisi2 + movs r3, #0 + strb r3, [r0, #10] mov r4, r0 - strb r6, [r0, #10] - movw r8, #65535 + ldrb r3, [r0, #6] @ zero_extendqisi2 + movw r7, #65535 + ldr r8, .L2507+4 adds r3, r3, #8 - ldr r5, .L2363 + ldr r5, .L2507 ldrh r2, [r0, r3, lsl #1] -.L2347: - cmp r2, r8 - ldr r7, .L2363 - bne .L2362 -.L2348: +.L2491: + cmp r2, r7 + ldr r6, .L2507+4 + bne .L2506 +.L2492: ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r2, [r5, #2840] + ldrh r2, [r8, #1804] adds r3, r3, #1 uxtb r3, r3 strb r3, [r4, #6] cmp r2, r3 itttt eq - strbeq r6, [r4, #6] 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 .L2347 -.L2362: + b .L2491 +.L2506: ldrb r3, [r4, #8] @ zero_extendqisi2 ldrh r1, [r4, #2] cmp r3, #1 ldrh r3, [r4, #4] - bne .L2350 - ldrb r0, [r5, #76] @ zero_extendqisi2 - cbnz r0, .L2350 + bne .L2494 + ldrb r0, [r8, #140] @ zero_extendqisi2 + cbnz r0, .L2494 add r0, r5, r1, lsl #1 - ldrh r0, [r0, #592] - cmp r0, r8 - bne .L2350 + ldrh r0, [r0, #704] + cmp r0, r7 + bne .L2494 subs r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2348 -.L2350: - movw r6, #65535 + b .L2492 +.L2494: + movw r7, #65535 orr r5, r1, r2, lsl #10 - mov r8, r6 + mov r8, r7 subs r3, r3, #1 strh r3, [r4, #4] @ movhi -.L2351: +.L2495: ldrb r3, [r4, #6] @ zero_extendqisi2 - ldrh r1, [r7, #2840] -.L2353: + ldrh r1, [r6, #1804] +.L2497: adds r3, r3, #1 uxtb r3, r3 cmp r3, r1 @@ -14487,55 +15367,55 @@ get_new_active_ppa: moveq r3, #0 add r2, r3, #8 ldrh r2, [r4, r2, lsl #1] - cmp r2, r6 - beq .L2353 + cmp r2, r7 + beq .L2497 strb r3, [r4, #6] ldrb r3, [r4, #8] @ zero_extendqisi2 cmp r3, #1 - bne .L2358 - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbnz r3, .L2355 + bne .L2502 + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbnz r3, .L2499 ldrh r2, [r4, #2] - ldr r3, .L2363 + ldr r3, .L2507 add r3, r3, r2, lsl #1 - ldrh r3, [r3, #592] + ldrh r3, [r3, #704] cmp r3, r8 - bne .L2355 + bne .L2499 ldrh r3, [r4, #4] - cbz r3, .L2355 + cbz r3, .L2499 subs r3, r3, #1 ldrh r0, [r4] strh r3, [r4, #4] @ movhi bl decrement_vpc_count - b .L2351 -.L2355: - ldrb r3, [r7, #76] @ zero_extendqisi2 - ldr r2, .L2363 - cbz r3, .L2358 + b .L2495 +.L2499: + ldrb r3, [r6, #140] @ zero_extendqisi2 + ldr r2, .L2507+4 + cbz r3, .L2502 ldrh r1, [r4, #2] - ldrh r3, [r2, #2912] + ldrh r3, [r2, #1874] cmp r1, r3 - bcc .L2358 - ldr r3, .L2363+4 + bcc .L2502 + ldr r3, .L2507 ldrh r0, [r4] ldrh r6, [r4, #4] - ldr r1, [r3, #816] + ldr r1, [r3, #-220] ldrh r3, [r1, r0, lsl #1] subs r3, r3, r6 strh r3, [r1, r0, lsl #1] @ movhi - ldrh r2, [r2, #2910] + ldrh r2, [r2, #1872] movs r3, #0 strh r3, [r4, #4] @ movhi strb r3, [r4, #6] strh r2, [r4, #2] @ movhi -.L2358: +.L2502: mov r0, r5 pop {r4, r5, r6, r7, r8, pc} -.L2364: +.L2508: .align 2 -.L2363: - .word .LANCHOR0 +.L2507: .word .LANCHOR2 + .word .LANCHOR0 .fnend .size get_new_active_ppa, .-get_new_active_ppa .align 1 @@ -14547,192 +15427,202 @@ FtlVpcTblFlush: .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 r4, .L2384 - ldr r3, [r4, #744] + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + ldr r5, .L2532 + ldr r3, [r5, #4052] cmp r3, #0 - bne .L2367 - ldr r2, [r4, #1776] + bne .L2511 + ldr r4, .L2532+4 movs r1, #255 - ldr r7, [r4, #1800] - ldr r5, .L2384+4 + ldr r2, [r4, #1776] + ldr r6, [r4, #1800] str r2, [r4, #4060] - ldrh r2, [r4, #1060] - str r7, [r4, #4064] - str r3, [r7, #12] - strh r2, [r7, #2] @ movhi + ldrh r2, [r4, #24] + str r6, [r4, #4064] + str r3, [r6, #12] + strh r2, [r6, #2] @ movhi movw r2, #61604 - strh r2, [r7] @ movhi - ldr r2, [r4, #1068] - str r3, [r7, #8] - ldr r3, .L2384+8 - str r2, [r7, #4] - ldrh r2, [r4, #838] - str r3, [r4, #760] - ldr r3, .L2384+12 - str r3, [r4, #764] - ldrh r3, [r4, #1066] - strh r3, [r4, #768] @ movhi - ldrh r3, [r5, #2862] - strb r3, [r4, #770] - ldrh r3, [r4, #836] - strh r3, [r4, #774] @ movhi - ldrb r3, [r4, #842] @ zero_extendqisi2 + strh r2, [r6] @ movhi + ldr r2, [r4, #32] + str r3, [r6, #8] + ldr r3, .L2532+8 + str r2, [r6, #4] + ldrh r2, [r4, #-198] + str r3, [r5, #4068] + ldr r3, .L2532+12 + str r3, [r5, #4072] + ldrh r3, [r4, #30] + strh r3, [r5, #4076] @ movhi + ldrh r3, [r5, #1826] + strb r3, [r5, #4078] + ldrh r3, [r4, #-200] + strh r3, [r5, #4082] @ movhi + ldrb r3, [r4, #-194] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 - strh r3, [r4, #776] @ movhi - ldrb r3, [r4, #844] @ zero_extendqisi2 - ldrh r2, [r4, #886] - strb r3, [r4, #771] - ldrh r3, [r4, #884] - strh r3, [r4, #778] @ movhi - ldrb r3, [r4, #890] @ zero_extendqisi2 + strh r3, [r5, #4084] @ movhi + ldrb r3, [r4, #-192] @ zero_extendqisi2 + ldrh r2, [r4, #-150] + strb r3, [r5, #4079] + ldrh r3, [r4, #-152] + strh r3, [r5, #4086] @ movhi + ldrb r3, [r4, #-146] @ zero_extendqisi2 orr r3, r3, r2, lsl #6 - strh r3, [r4, #780] @ movhi - ldrb r3, [r4, #892] @ zero_extendqisi2 - strb r3, [r4, #772] - ldrh r3, [r4, #932] - strh r3, [r4, #782] @ movhi - ldrh r2, [r4, #934] - ldrb r3, [r4, #938] @ zero_extendqisi2 + strh r3, [r5, #4088] @ movhi + ldrb r3, [r4, #-144] @ zero_extendqisi2 + strb r3, [r5, #4080] + ldrh r3, [r4, #-104] + strh r3, [r5, #4090] @ movhi + ldrh r2, [r4, #-102] + ldrb r3, [r4, #-98] @ zero_extendqisi2 ldr r0, [r4, #4060] orr r3, r3, r2, lsl #6 - strh r3, [r4, #784] @ movhi - ldrb r3, [r4, #940] @ zero_extendqisi2 - ldrh r2, [r5, #2920] - strb r3, [r4, #773] - ldr r3, [r4, #1036] - str r3, [r4, #792] - ldr r3, [r4, #1028] - str r3, [r4, #800] - ldr r3, [r4, #1032] - str r3, [r4, #796] + strh r3, [r5, #4092] @ movhi + ldrb r3, [r4, #-96] @ zero_extendqisi2 + ldr r2, [r4] + strb r3, [r5, #4081] + movw r3, #4100 + str r2, [r5, r3] + movw r3, #4108 + ldr r2, [r4, #-8] + str r2, [r5, r3] + movw r3, #4104 + ldr r2, [r4, #-4] + str r2, [r5, r3] + movw r3, #4112 + ldrh r2, [r4, #658] + strh r2, [r5, r3] @ movhi + movw r3, #4114 + ldrh r2, [r4, #660] + strh r2, [r5, r3] @ movhi + ldrh r2, [r5, #1882] bl ftl_memset - add r1, r4, #760 + addw r1, r5, #4068 movs r2, #48 ldr r0, [r4, #4060] bl ftl_memcpy - ldrh r2, [r5, #2848] + ldrh r2, [r5, #1812] ldr r0, [r4, #4060] - ldr r1, [r4, #816] + ldr r1, [r4, #-220] lsls r2, r2, #1 adds r0, r0, #48 bl ftl_memcpy - ldrh r2, [r5, #2848] + ldrh r2, [r5, #1812] ldr r0, [r4, #4060] add r3, r2, #24 - ldr r1, [r4, #992] + ldr r1, [r4, #-44] ubfx r3, r3, #1, #30 lsrs r2, r2, #3 adds r2, r2, #4 add r0, r0, r3, lsl #2 bl ftl_memcpy - ldrh r3, [r5, #2952] - cbz r3, .L2368 - ldrh r2, [r5, #2848] + ldrh r3, [r5, #1916] + cbz r3, .L2512 + ldrh r2, [r5, #1812] ldr r0, [r4, #4060] ldr r1, [r4, #1848] lsrs r3, r2, #3 add r3, r3, r2, lsl #1 - ldrh r2, [r5, #2948] + ldrh r2, [r5, #1908] adds r3, r3, #52 ubfx r3, r3, #2, #14 lsls r2, r2, #2 add r0, r0, r3, lsl #2 bl ftl_memcpy -.L2368: +.L2512: movs r0, #0 - ldr r6, .L2384 + ldr r7, .L2532+4 bl FtlUpdateVaildLpn + ldr r10, .L2532 mov r8, #0 movw r9, #65535 -.L2369: +.L2513: ldr r3, [r4, #1776] - movs r1, #1 - ldrh r2, [r4, #1060] - ldr r0, .L2384+16 + ldrh r2, [r4, #24] + ldrh r1, [r4, #26] str r3, [r4, #4060] ldr r3, [r4, #1800] str r3, [r4, #4064] - ldrh r3, [r4, #1062] - orr r3, r3, r2, lsl #10 - mov r2, r1 + orr r3, r1, r2, lsl #10 str r3, [r4, #4056] - mov r3, r1 - bl FlashProgPages - ldrh r3, [r5, #2912] - ldrh r2, [r4, #1062] + ldrh r3, [r5, #1874] subs r3, r3, #1 - cmp r2, r3 - blt .L2370 - ldrh r3, [r6, #1060] - ldrh r9, [r6, #1064] - strh r3, [r6, #1064] @ movhi + cmp r1, r3 + blt .L2514 movs r3, #0 - strh r3, [r6, #1062] @ movhi + ldrh r9, [r7, #28] + strh r3, [r7, #26] @ movhi + strh r2, [r7, #28] @ movhi bl FtlFreeSysBlkQueueOut - ldr r3, [r6, #1028] - movs r1, #1 + ldr r3, [r7, #-8] adds r2, r3, #1 - str r2, [r6, #1028] - str r3, [r6, #1068] + str r2, [r7, #-8] + str r3, [r7, #32] lsls r2, r0, #10 - strh r0, [r6, #1060] @ movhi - str r2, [r6, #4056] + strh r0, [r7, #24] @ movhi + str r2, [r7, #4056] + str r3, [r6, #4] + strh r0, [r6, #2] @ movhi +.L2514: + ldrb r3, [r5] @ zero_extendqisi2 + cbz r3, .L2515 + ldr r0, [r4, #1776] + ldrh r1, [r10, #1882] + bl js_hash + str r0, [r6, #12] +.L2515: + movs r1, #1 + ldr r0, .L2532+16 mov r2, r1 - str r3, [r7, #4] mov r3, r1 - strh r0, [r7, #2] @ movhi - ldr r0, .L2384+16 bl FlashProgPages -.L2370: - ldrh r3, [r4, #1062] + ldrh r3, [r4, #26] ldr r2, [r4, #4052] adds r3, r3, #1 adds r1, r2, #1 uxth r3, r3 - strh r3, [r4, #1062] @ movhi - bne .L2371 + strh r3, [r4, #26] @ movhi + bne .L2516 cmp r3, #1 add r8, r8, #1 it eq - ldrheq r3, [r5, #2912] + ldrheq r3, [r5, #1874] uxth r8, r8 itt eq addeq r3, r3, #-1 - strheq r3, [r6, #1062] @ movhi + strheq r3, [r7, #26] @ movhi cmp r8, #3 - bls .L2369 - ldr r0, .L2384+20 + bls .L2513 + ldr r0, .L2532+20 mov r2, r8 ldr r1, [r4, #4056] bl printk movs r3, #1 - str r3, [r4, #744] - b .L2367 -.L2371: + str r3, [r5, #4052] + b .L2511 +.L2516: cmp r3, #1 - beq .L2369 + beq .L2513 cmp r2, #256 - beq .L2369 + beq .L2513 movw r3, #65535 cmp r9, r3 - beq .L2367 + beq .L2511 mov r0, r9 movs r1, #1 bl FtlFreeSysBlkQueueIn -.L2367: +.L2511: movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L2385: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2533: .align 2 -.L2384: - .word .LANCHOR2 +.L2532: .word .LANCHOR0 + .word .LANCHOR2 .word 1179929683 - .word 1342177352 + .word 1342177366 .word .LANCHOR2+4052 - .word .LC119 + .word .LC128 .fnend .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 1 @@ -14742,83 +15632,112 @@ FtlVpcTblFlush: .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 48 @ 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 r3, .L2551 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r2, [r3] mov r4, r0 - ldr r7, .L2400 - .pad #40 - sub sp, sp, #40 - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbz r3, .L2395 - ldrb r5, [r0, #8] @ zero_extendqisi2 - cmp r5, #1 - bne .L2395 - ldrh r6, [r0, #4] - b .L2387 -.L2395: - movs r5, #0 - movs r6, #12 -.L2387: - ldr r10, .L2400+4 - mov r8, #-1 - mov r9, #0 -.L2388: - adds r6, r6, #-1 - bcc .L2390 + str r3, [sp, #4] + str r2, [sp, #44] + ldr r2, .L2551+4 + ldr r5, [r2, #4052] + mov r8, r2 + cmp r5, #0 + bne .L2534 + ldrb r6, [r2, #140] @ zero_extendqisi2 + cbz r6, .L2550 + ldrb r6, [r0, #8] @ zero_extendqisi2 + cmp r6, #1 + bne .L2546 + ldrh r9, [r0, #4] + b .L2536 +.L2546: + mov r6, r5 +.L2550: + mov r9, #12 +.L2536: + ldr r5, .L2551+8 + mov r3, #-1 + str r3, [sp, #24] + mov r10, #0 + movw r2, #61589 + ldr r7, [r5, #1800] + mov fp, r5 + ldr r3, [r5, #1776] + str r7, [sp, #20] + str r3, [sp, #16] + mvn r3, #2 + str r3, [r7, #8] + mvn r3, #1 + str r3, [r7, #12] + ldrh r3, [r4] + strh r10, [r7] @ movhi + strh r3, [r7, #2] @ movhi + ldr r3, [r5, #1776] + str r2, [r3] + add r2, r2, #304087040 + ldr r3, [r5, #1776] + add r2, r2, #1269760 + addw r2, r2, #1507 + str r2, [r3, #4] +.L2537: + adds r9, r9, #-1 + bcc .L2540 ldrh r3, [r4, #4] - cbnz r3, .L2389 -.L2390: - ldr r3, .L2400+4 + cbnz r3, .L2538 +.L2540: + ldr r2, [r5, #-220] ldrh r1, [r4] ldrh r0, [r4, #4] - ldr r2, [r3, #816] ldrh r3, [r2, r1, lsl #1] subs r3, r3, r0 strh r3, [r2, r1, lsl #1] @ movhi - ldrh r3, [r7, #2910] + ldrh r3, [r8, #1872] strh r3, [r4, #2] @ movhi movs r3, #0 strb r3, [r4, #6] strh r3, [r4, #4] @ movhi - add sp, sp, #40 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L2389: + b .L2534 +.L2538: mov r0, r4 bl get_new_active_ppa - str r0, [sp, #8] + str r0, [sp, #12] adds r0, r0, #1 - beq .L2390 - ldr r2, [r10, #1800] - add r0, sp, #4 - ldr r3, [r10, #1776] + beq .L2540 + ldr r3, [r5, #-4] movs r1, #1 - str r8, [sp, #20] - str r2, [sp, #16] - str r3, [sp, #12] - str r8, [r2, #12] - str r8, [r2, #8] - ldrh r3, [r4] - strh r9, [r2] @ movhi - strh r3, [r2, #2] @ movhi - ldr r3, [r10, #1032] - str r3, [r2, #4] + add r0, sp, #8 + str r3, [r7, #4] adds r3, r3, #1 adds r2, r3, #1 - mov r2, r5 + mov r2, r6 it eq - moveq r3, #0 - str r3, [r10, #1032] + moveq r3, r10 + str r3, [fp, #-4] movs r3, #0 bl FlashProgPages ldrh r0, [r4] bl decrement_vpc_count - b .L2388 -.L2401: + b .L2537 +.L2534: + ldr r3, [sp, #4] + ldr r2, [sp, #44] + ldr r3, [r3] + cmp r2, r3 + beq .L2544 + bl __stack_chk_fail +.L2544: + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2552: .align 2 -.L2400: +.L2551: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -14830,139 +15749,117 @@ FtlSuperblockPowerLostFix: .type ftl_map_blk_gc, %function ftl_map_blk_gc: .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 mov r4, r0 - ldr r6, [r0, #12] - ldr r8, [r0, #24] + ldr r5, [r0, #12] + ldr r9, [r0, #24] bl ftl_free_no_use_map_blk - ldrh ip, [r4, #10] + ldrh r3, [r4, #10] ldrh r2, [r4, #8] - sub r3, ip, #4 - ldrh r1, [r4, #40] + subs r3, r3, #4 + ldr r8, .L2566+12 cmp r2, r3 - ldr r7, .L2423 - bge .L2403 - movw r3, #65535 - cmp r1, r3 - beq .L2405 - ldrh r2, [r4, #2] - ldrh r3, [r7, #2912] - cmp r2, r3 - bcc .L2405 -.L2403: - movw r3, #65535 - cmp r1, r3 - uxth r5, r0 - beq .L2407 - ldrh r3, [r4, #2] - ldrh r2, [r7, #2912] - cmp r2, r3 - bhi .L2407 - movs r2, #0 -.L2408: - uxth lr, r2 - cmp lr, ip - bcs .L2409 - adds r2, r2, #1 - add r0, r6, r2, lsl #1 - ldrh r0, [r0, #-2] - cmp r0, r1 - bne .L2408 - mov r5, lr -.L2409: - ldr r0, .L2423+4 - ldrh r2, [r6, lr, lsl #1] - bl printk - movw r3, #65535 - strh r3, [r4, #40] @ movhi -.L2407: - ldrh r9, [r6, r5, lsl #1] - lsls r2, r5, #1 - cmp r9, #0 - beq .L2405 + blt .L2554 + uxth r0, r0 + ldrh r10, [r5, r0, lsl #1] + cmp r10, #0 + beq .L2554 ldr r3, [r4, #32] cmp r3, #0 - bne .L2405 - movs r1, #1 - str r1, [r4, #32] - strh r3, [r6, r2] @ movhi + bne .L2554 + movs r2, #1 + str r2, [r4, #32] + strh r3, [r5, r0, lsl #1] @ movhi ldrh r3, [r4, #8] ldrh r2, [r4, #2] subs r3, r3, #1 strh r3, [r4, #8] @ movhi - ldrh r3, [r7, #2912] + ldrh r3, [r8, #1874] cmp r2, r3 - bcc .L2411 + bcc .L2555 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2411: - ldr r5, .L2423+8 - mov r10, #0 -.L2412: +.L2555: + ldr r5, .L2566 + mov fp, #0 +.L2556: ldrh r3, [r4, #6] - uxth r6, r10 + uxth r6, fp cmp r3, r6 - bls .L2422 - ldr r3, [r8, r6, lsl #2] - cmp r9, r3, lsr #10 - bne .L2413 - ldr r3, [r5, #1780] + bls .L2565 + ldr r2, [r9, r6, lsl #2] + add r3, r9, r6, lsl #2 + cmp r10, r2, lsr #10 + bne .L2557 + ldr r2, [r5, #1780] movs r1, #1 - ldr fp, [r5, #1800] - ldr r0, .L2423+12 + ldr r7, [r5, #1800] + ldr r0, .L2566+4 + str r2, [r5, #4060] + str r7, [r5, #4064] + ldr r2, [r9, r6, lsl #2] + str r3, [sp, #4] + str r2, [r5, #4056] mov r2, r1 - str r3, [r5, #4060] - str fp, [r5, #4064] - ldr r3, [r8, r6, lsl #2] - str r3, [r5, #4056] bl FlashReadPages - ldr r3, [r5, #4052] - adds r3, r3, #1 - bne .L2414 - movs r3, #0 - ldr r0, .L2423+16 - str r3, [r8, r6, lsl #2] - ldr r1, [r5, #4056] - ldrh r2, [fp, #8] + ldr r2, [r5, #4052] + adds r2, r2, #1 + ldr r3, [sp, #4] + bne .L2558 +.L2560: + movs r2, #0 + str r2, [r3] + ldr r3, .L2566 + ldr r0, .L2566+8 + ldrh r2, [r7, #8] + ldr r1, [r3, #4056] bl printk movs r3, #1 - str r3, [r5, #744] - b .L2413 -.L2414: + str r3, [r8, #4052] + b .L2559 +.L2558: + ldrh r1, [r7, #8] + cmp r1, r6 + bne .L2560 + ldrh r0, [r7] + ldrh r2, [r4, #4] + cmp r0, r2 + bne .L2560 mov r0, r4 - mov r1, r6 ldr r2, [r5, #4060] bl FtlMapWritePage -.L2413: - add r10, r10, #1 - b .L2412 -.L2422: - mov r0, r9 +.L2557: + add fp, fp, #1 + b .L2556 +.L2565: + mov r0, r10 movs r1, #1 bl FtlFreeSysBlkQueueIn movs r3, #0 str r3, [r4, #32] -.L2405: +.L2554: ldrh r2, [r4, #2] - ldrh r3, [r7, #2912] + ldrh r3, [r8, #1874] cmp r2, r3 - bcc .L2416 + bcc .L2559 mov r0, r4 bl ftl_map_blk_alloc_new_blk -.L2416: +.L2559: movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2424: + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2567: .align 2 -.L2423: - .word .LANCHOR0 - .word .LC120 +.L2566: .word .LANCHOR2 .word .LANCHOR2+4052 - .word .LC121 + .word .LC129 + .word .LANCHOR0 .fnend .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 1 @@ -14974,76 +15871,85 @@ Ftl_write_map_blk_to_last_page: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} + ldr r2, .L2579 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r4, r0 - ldr r5, .L2432 - ldr r7, [r0, #12] - ldr r8, [r0, #24] - ldr r6, [r5, #744] + ldr r6, [r2, #4052] + mov r8, r2 + ldr r5, [r0, #12] + ldr r10, [r0, #24] cmp r6, #0 - bne .L2426 + bne .L2569 ldrh r3, [r0] movw r2, #65535 cmp r3, r2 - bne .L2427 + bne .L2570 ldrh r3, [r0, #8] adds r3, r3, #1 strh r3, [r0, #8] @ movhi bl FtlFreeSysBlkQueueOut - strh r0, [r7] @ movhi + strh r0, [r5] @ movhi ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi adds r3, r3, #1 strh r6, [r4] @ movhi str r3, [r4, #28] - b .L2426 -.L2427: - ldrh r7, [r7, r3, lsl #1] + b .L2569 +.L2570: + ldrh r9, [r5, r3, lsl #1] movs r1, #255 + ldr r5, .L2579+4 ldrh r3, [r0, #2] - ldr r2, [r0, #28] - orr r3, r3, r7, lsl #10 + orr r3, r3, r9, lsl #10 str r3, [r5, #4056] ldr r3, [r5, #1776] + ldr r7, [r5, #1800] str r3, [r5, #4060] - ldr r3, [r5, #1800] - str r3, [r5, #4064] - str r2, [r3, #4] - movw r2, #64245 - strh r2, [r3, #8] @ movhi - ldrh r2, [r0, #4] - strh r7, [r3, #2] @ movhi - strh r2, [r3] @ movhi - ldr r3, .L2432+4 + ldr r3, [r0, #28] + str r7, [r5, #4064] + str r3, [r7, #4] + movw r3, #64245 + strh r3, [r7, #8] @ movhi + ldrh r3, [r0, #4] + strh r9, [r7, #2] @ movhi + strh r3, [r7] @ movhi + ldrh r2, [r8, #1874] ldr r0, [r5, #1776] - ldrh r2, [r3, #2912] lsls r2, r2, #3 bl ftl_memset mov r3, r6 -.L2428: +.L2571: ldrh r1, [r4, #6] uxth r2, r6 cmp r1, r2 - bls .L2431 - ldr r1, [r8, r2, lsl #2] - cmp r7, r1, lsr #10 - bne .L2429 + bls .L2578 + ldr r1, [r10, r2, lsl #2] + cmp r9, r1, lsr #10 + bne .L2572 adds r3, r3, #1 ldr r1, [r5, #1776] uxth r3, r3 str r2, [r1, r3, lsl #3] - ldr r1, [r8, r2, lsl #2] + ldr r1, [r10, r2, lsl #2] ldr r2, [r5, #1776] add r2, r2, r3, lsl #3 str r1, [r2, #4] -.L2429: +.L2572: adds r6, r6, #1 - b .L2428 -.L2431: + b .L2571 +.L2578: + ldrb r3, [r8] @ zero_extendqisi2 + cbz r3, .L2574 + ldr r3, .L2579 + ldr r0, [r5, #4060] + ldrh r1, [r3, #1882] + bl js_hash + str r0, [r7, #12] +.L2574: movs r1, #1 movs r3, #0 - ldr r0, .L2432+8 + ldr r0, .L2579+8 mov r2, r1 bl FlashProgPages ldrh r3, [r4, #2] @@ -15051,14 +15957,14 @@ Ftl_write_map_blk_to_last_page: adds r3, r3, #1 strh r3, [r4, #2] @ movhi bl ftl_map_blk_gc -.L2426: +.L2569: movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L2433: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2580: .align 2 -.L2432: - .word .LANCHOR2 +.L2579: .word .LANCHOR0 + .word .LANCHOR2 .word .LANCHOR2+4052 .fnend .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page @@ -15074,111 +15980,131 @@ FtlMapWritePage: push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #12 - mov r5, r0 - ldr r4, .L2455 - mov r7, r1 - str r2, [sp, #4] - ldr r6, [r4, #744] - cmp r6, #0 - bne .L2450 - ldr r8, .L2455+16 - mov fp, r4 - mov r10, r8 -.L2436: - ldr r3, [r4, #1012] + movs r4, #0 + ldr r6, .L2605 + mov fp, r0 + ldr r7, .L2605+4 + mov r10, r1 + str r2, [sp] + mov r5, r6 +.L2582: + ldr r3, [r6, #-24] + ldr r9, .L2605+4 adds r3, r3, #1 - str r3, [r4, #1012] - ldrh r3, [r8, #2912] - ldrh r2, [r5, #2] + str r3, [r6, #-24] + ldrh r3, [r7, #1874] + ldrh r2, [fp, #2] subs r3, r3, #1 cmp r2, r3 - bge .L2437 - ldrh r2, [r5] + bge .L2583 + ldrh r2, [fp] movw r3, #65535 cmp r2, r3 - bne .L2438 -.L2437: - mov r0, r5 + bne .L2584 +.L2583: + mov r0, fp bl Ftl_write_map_blk_to_last_page -.L2438: - ldrh r2, [r5] - movs r1, #16 - ldr r3, [r5, #12] - ldr r0, [r4, #1800] - ldrh r9, [r3, r2, lsl #1] - ldrh r3, [r5, #2] - str r0, [r4, #4064] - orr r3, r3, r9, lsl #10 - str r3, [r4, #4056] - ldr r3, [sp, #4] - str r3, [r4, #4060] - bl __memzero - ldr r3, [r4, #4064] - movs r1, #1 - ldr r2, [r5, #28] - ldr r0, .L2455+4 - strh r7, [r3, #8] @ movhi +.L2584: + ldr r1, [r9, #4052] + cmp r1, #0 + bne .L2600 + ldrh r2, [fp] + ldr r3, [fp, #12] + ldr r0, [r5, #1800] + ldrh r8, [r3, r2, lsl #1] + movs r2, #16 + ldrh r3, [fp, #2] + str r0, [r5, #4064] + orr r3, r3, r8, lsl #10 + str r3, [r5, #4056] + ldr r3, [sp] + str r3, [r5, #4060] + bl ftl_memset + ldr r2, [fp, #28] + ldr r3, [r5, #4064] str r2, [r3, #4] - ldrh r2, [r5, #4] - strh r9, [r3, #2] @ movhi + strh r10, [r3, #8] @ movhi + ldrh r2, [fp, #4] + strh r8, [r3, #2] @ movhi strh r2, [r3] @ movhi + ldrb r2, [r7] @ zero_extendqisi2 + cbz r2, .L2586 + ldr r0, [r6, #4060] + ldrh r1, [r7, #1882] + str r3, [sp, #4] + bl js_hash + ldr r3, [sp, #4] + str r0, [r3, #12] +.L2586: + movs r1, #1 + ldr r0, .L2605+8 mov r2, r1 mov r3, r1 bl FlashProgPages - ldrh r3, [r5, #2] + ldrh r3, [fp, #2] adds r3, r3, #1 uxth r3, r3 - strh r3, [r5, #2] @ movhi - ldr r2, [r4, #4052] + strh r3, [fp, #2] @ movhi + ldr r2, [r5, #4052] adds r1, r2, #1 - bne .L2439 - ldr r0, .L2455+8 - adds r6, r6, #1 - ldr r1, [fp, #4056] + bne .L2587 + ldr r0, .L2605+12 + adds r4, r4, #1 + ldr r1, [r6, #4056] bl printk - ldrh r3, [r5, #2] - uxth r6, r6 + ldrh r3, [fp, #2] + uxth r4, r4 cmp r3, #2 ittt ls - ldrhls r3, [r10, #2912] + ldrhls r3, [r9, #1874] addls r3, r3, #-1 - strhls r3, [r5, #2] @ movhi - cmp r6, #3 - bls .L2436 - ldr r0, .L2455+12 - mov r2, r6 - ldr r1, [r4, #4056] + strhls r3, [fp, #2] @ movhi + cmp r4, #3 + bls .L2582 + ldr r3, .L2605 + mov r2, r4 + ldr r0, .L2605+16 + ldr r1, [r3, #4056] bl printk movs r3, #1 - str r3, [r4, #744] - b .L2450 -.L2439: - cbz r2, .L2442 + str r3, [r9, #4052] + b .L2600 +.L2587: + cbz r2, .L2590 cmp r3, #1 - strh r9, [r5, #40] @ movhi - beq .L2436 + strh r8, [fp, #40] @ movhi + bne .L2591 +.L2592: + movs r3, #0 + str r3, [fp, #36] + b .L2582 +.L2591: cmp r2, #256 - b .L2454 -.L2442: + b .L2604 +.L2590: cmp r3, #1 -.L2454: - beq .L2436 - ldr r2, [r4, #4056] - ldr r3, [r5, #24] - str r2, [r3, r7, lsl #2] -.L2450: +.L2604: + beq .L2592 + ldr r3, [fp, #36] + cmp r3, #0 + bne .L2592 + ldr r3, .L2605 + ldr r2, [r3, #4056] + ldr r3, [fp, #24] + str r2, [r3, r10, lsl #2] +.L2600: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2456: +.L2606: .align 2 -.L2455: +.L2605: .word .LANCHOR2 - .word .LANCHOR2+4052 - .word .LC122 - .word .LC123 .word .LANCHOR0 + .word .LANCHOR2+4052 + .word .LC130 + .word .LC131 .fnend .size FtlMapWritePage, .-FtlMapWritePage .align 1 @@ -15193,24 +16119,24 @@ flush_l2p_region: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r4, #12 - ldr r5, .L2458 + ldr r5, .L2608 muls r4, r0, r4 addw r0, r5, #1868 - ldr r3, [r5, #980] + ldr r3, [r5, #-56] adds r2, r3, r4 ldrh r1, [r3, r4] ldr r2, [r2, #8] bl FtlMapWritePage - ldr r3, [r5, #980] + ldr r3, [r5, #-56] movs r0, #0 add r4, r4, r3 ldr r3, [r4, #4] bic r3, r3, #-2147483648 str r3, [r4, #4] pop {r3, r4, r5, pc} -.L2459: +.L2609: .align 2 -.L2458: +.L2608: .word .LANCHOR2 .fnend .size flush_l2p_region, .-flush_l2p_region @@ -15221,113 +16147,136 @@ flush_l2p_region: .type FtlMapTblRecovery, %function FtlMapTblRecovery: .fnstart - @ args = 0, pretend = 0, frame = 16 + @ args = 0, pretend = 0, frame = 24 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r3, [r0, #16] + ldr r3, [r0, #24] mov r4, r0 - ldrh fp, [r0, #6] + ldrh r10, [r0, #6] movs r1, #0 - ldr r10, [r0, #24] - movs r6, #0 - ldr r5, .L2508 - str r3, [sp, #12] - lsl r2, fp, #2 + ldr r7, .L2652 + str r3, [sp] + ldr r3, [r0, #12] + lsl r2, r10, #2 + ldr r8, .L2652+8 + mov r5, r7 + mov r9, r7 + str r3, [sp, #4] + ldr r3, [r0, #16] + str r3, [sp, #16] ldrh r3, [r0, #8] - ldr r8, [r0, #12] - mov r0, r10 - str r3, [sp, #8] + ldr r0, [sp] + str r3, [sp, #12] bl ftl_memset - ldr r3, [r5, #1776] - ldr r7, [r5, #1800] - str r6, [r4, #32] - str r3, [r5, #4060] + ldr r3, [r7, #1776] + movs r2, #1 + ldr r6, [r7, #1800] + str r2, [r4, #36] + str r3, [r7, #4060] movw r3, #65535 - str r7, [r5, #4064] - str r6, [r4, #28] + str r6, [r7, #4064] strh r3, [r4] @ movhi strh r3, [r4, #2] @ movhi - movs r3, #1 - str r3, [r4, #36] -.L2461: - uxth ip, r6 - ldr r3, [sp, #8] - sxth r9, ip - cmp r9, r3 - bge .L2478 - ldr r3, [sp, #8] - subs r2, r3, #1 - cmp r9, r2 - lsl r2, r9, #1 - bne .L2462 - ldrh r0, [r8, r9, lsl #1] + movs r3, #0 + str r3, [r4, #32] + str r3, [r4, #28] + str r3, [sp, #8] +.L2611: + ldrh r2, [sp, #8] + ldr r3, [sp, #12] + ldr fp, .L2652+8 + sxth r7, r2 + cmp r7, r3 + bge .L2629 + ldr r3, [sp, #12] + subs r1, r3, #1 + cmp r7, r1 + lsl r1, r7, #1 + bne .L2612 + ldr r3, [sp, #4] + mov r8, #0 + str r2, [sp, #12] + add r3, r3, r1 + str r3, [sp, #8] + ldr r3, [sp, #4] movs r1, #1 - str ip, [sp, #8] - add r6, r8, r2 + ldrh r0, [r3, r7, lsl #1] bl FtlGetLastWrittenPage - ldr ip, [sp, #8] - strh ip, [r4] @ movhi - mov ip, #0 + ldr r2, [sp, #12] adds r3, r0, #1 strh r3, [r4, #2] @ movhi - ldr r3, [sp, #12] sxth r0, r0 - ldr r3, [r3, r9, lsl #2] + ldr r3, [sp, #16] add r9, r0, #1 + strh r2, [r4] @ movhi + ldr r3, [r3, r7, lsl #2] + ldr r7, .L2652 str r3, [r4, #28] - ldr r3, .L2508 -.L2463: - sxth r2, ip +.L2613: + sxth r2, r8 cmp r2, r9 - bge .L2478 - ldrh r1, [r6] - ldr r0, .L2508+4 - str r3, [sp, #12] + bge .L2629 + ldr r3, [sp, #8] + ldr r0, .L2652+4 + ldrh r1, [r3] orr r2, r2, r1, lsl #10 movs r1, #1 str r2, [r5, #4056] mov r2, r1 - str ip, [sp, #8] bl FlashReadPages - ldr r2, [r5, #4052] - ldr ip, [sp, #8] + ldrb r2, [fp] @ zero_extendqisi2 + cbz r2, .L2614 + ldr r2, [r7, #4064] + ldr r2, [r2, #12] + cbz r2, .L2614 + ldr r1, .L2652+8 + ldr r0, [r7, #4060] + str r2, [sp, #4] + ldrh r1, [r1, #1882] + bl js_hash + ldr r2, [sp, #4] + cmp r2, r0 + itt ne + movne r2, #-1 + strne r2, [r7, #4052] +.L2614: + ldr r2, [r7, #4052] adds r2, r2, #1 - ldr r3, [sp, #12] - beq .L2464 - ldrh r2, [r7, #8] - cmp r2, fp - bcs .L2465 - ldrh r0, [r7] + beq .L2615 + ldrh r2, [r6, #8] + cmp r2, r10 + bcs .L2615 ldrh r1, [r4, #4] + ldrh r0, [r6] cmp r0, r1 - bne .L2465 - ldr r1, [r3, #4056] - str r1, [r10, r2, lsl #2] - b .L2465 -.L2464: - ldrh r2, [r6] - strh r2, [r4, #40] @ movhi -.L2465: - add ip, ip, #1 - b .L2463 -.L2478: - ldr r3, .L2508+8 - ldr r10, .L2508+12 - cmp r4, r3 - bne .L2468 - b .L2505 -.L2462: - ldr r1, [r5, #1776] - add r3, r8, r2 - str r3, [sp, #16] - ldr r3, .L2508+12 - str r1, [r5, #4060] - ldrh r1, [r8, r9, lsl #1] - ldrh r2, [r3, #2912] - ldr r0, .L2508+4 + ittt eq + ldreq r1, [r7, #4056] + ldreq r3, [sp] + streq r1, [r3, r2, lsl #2] +.L2615: + add r8, r8, #1 + b .L2613 +.L2629: + mov r0, r4 + bl ftl_free_no_use_map_blk + ldrh r2, [r4, #2] + ldrh r3, [fp, #1874] + cmp r2, r3 + bne .L2618 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk + b .L2618 +.L2612: + ldr r2, [r5, #1776] + ldr r3, [sp, #4] + ldr r0, .L2652+4 + str r2, [r5, #4060] + add fp, r3, r1 + ldrh r2, [r8, #1874] + ldrh r1, [r3, r7, lsl #1] subs r2, r2, #1 orr r2, r2, r1, lsl #10 movs r1, #1 @@ -15336,179 +16285,87 @@ FtlMapTblRecovery: bl FlashReadPages ldr r2, [r5, #4052] adds r2, r2, #1 - beq .L2493 - ldrh r1, [r7] + beq .L2631 + ldrh r1, [r6] ldrh r2, [r4, #4] cmp r1, r2 - bne .L2493 - ldrh r1, [r7, #8] + bne .L2631 + ldrh r1, [r6, #8] movw r2, #64245 cmp r1, r2 - bne .L2493 + bne .L2631 movs r0, #0 - mov ip, #8 - mov r9, #4 -.L2470: - ldr r3, .L2508+12 + mov lr, #8 + mov ip, #4 +.L2620: uxth r2, r0 - sxth lr, r2 - ldrh r1, [r3, #2912] + ldrh r1, [r8, #1874] + sxth r7, r2 subs r1, r1, #1 - cmp lr, r1 - bge .L2473 + cmp r7, r1 + bge .L2623 ldr r1, [r5, #1776] adds r0, r0, #1 - ldrh lr, [r1, lr, lsl #3] - cmp lr, fp - ittt cc - smlabbcc r2, r2, ip, r9 + ldrh r7, [r1, r7, lsl #3] + cmp r7, r10 + itttt cc + smlabbcc r2, r2, lr, ip + ldrcc r3, [sp] ldrcc r2, [r1, r2] - strcc r2, [r10, lr, lsl #2] - b .L2470 -.L2493: - ldr r3, .L2508 - mov r9, #0 -.L2502: - ldr r1, .L2508+12 - sxth r2, r9 - ldrh r1, [r1, #2912] + strcc r2, [r3, r7, lsl #2] + b .L2620 +.L2631: + movs r7, #0 +.L2651: + ldrh r1, [r8, #1874] + sxth r2, r7 cmp r2, r1 - bge .L2473 - ldr r1, [sp, #16] - ldr r0, .L2508+4 - str r3, [sp, #20] - ldrh r1, [r1] + bge .L2623 + ldrh r1, [fp] + ldr r0, .L2652+4 orr r2, r2, r1, lsl #10 movs r1, #1 - str r2, [r3, #4056] + str r2, [r9, #4056] mov r2, r1 bl FlashReadPages - ldr r3, [sp, #20] - ldr r2, [r3, #4052] + ldrb r2, [r8] @ zero_extendqisi2 + cbz r2, .L2624 + ldr r2, [r9, #4064] + ldr r2, [r2, #12] + cbz r2, .L2624 + ldr r0, [r9, #4060] + ldrh r1, [r8, #1882] + str r2, [sp, #20] + bl js_hash + ldr r2, [sp, #20] + cmp r2, r0 + itt ne + movne r2, #-1 + strne r2, [r9, #4052] +.L2624: + ldr r2, .L2652 + ldr r2, [r2, #4052] adds r2, r2, #1 - beq .L2474 - ldrh r2, [r7, #8] - cmp r2, fp - bcs .L2474 + beq .L2625 + ldrh r2, [r6, #8] + cmp r2, r10 + bcs .L2625 ldrh r1, [r4, #4] - ldrh r0, [r7] + ldrh r0, [r6] cmp r0, r1 - itt eq - ldreq r1, [r3, #4056] - streq r1, [r10, r2, lsl #2] -.L2474: - add r9, r9, #1 - b .L2502 -.L2473: - adds r6, r6, #1 - b .L2461 -.L2490: - ldr r3, [r5, #1852] - lsl r7, r9, #2 - ldr r2, [r3, r9, lsl #2] - subs r1, r2, #1 - adds r1, r1, #3 - bls .L2506 -.L2483: - add r9, r9, #1 -.L2481: - ldrh r3, [r10, #2948] - cmp r9, r3 - bcc .L2490 -.L2468: - mov r0, r4 - bl ftl_free_no_use_map_blk - ldrh r2, [r4, #2] - ldrh r3, [r10, #2912] - cmp r2, r3 - bne .L2480 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk - b .L2480 -.L2505: - ldrh r3, [r10, #2952] - cmp r3, #0 - beq .L2468 - mov r9, #0 - subw r6, r4, #1868 - b .L2481 -.L2506: - ldr r1, [r6, #1848] - ldr r1, [r1, r9, lsl #2] - cmp r2, r1 - beq .L2483 - ldr r2, [r6, #1776] - movs r1, #1 - ldr fp, [r6, #1800] - ldr r0, .L2508+4 - str r2, [r6, #4060] - mov r2, r1 - str fp, [r6, #4064] - ldr r3, [r3, r7] - str r3, [r6, #4056] - bl FlashReadPages - ldr r3, [r6, #4052] - adds r3, r3, #1 - beq .L2483 - ldrh r2, [fp] - ldrh r3, [r6, #1872] - cmp r2, r3 - bne .L2483 - ldr r2, [r6, #1848] - ldr r3, [fp, #4] - ldr r1, [r2, r7] - str r1, [r6, #4056] - ldr r2, [r2, r7] - cbnz r2, .L2485 - str r2, [fp, #4] - b .L2486 -.L2485: - movs r1, #1 - ldr r0, .L2508+4 - str r3, [sp, #8] - mov r2, r1 - bl FlashReadPages + ittt eq + ldreq r1, [r9, #4056] + ldreq r3, [sp] + streq r1, [r3, r2, lsl #2] +.L2625: + adds r7, r7, #1 + b .L2651 +.L2623: ldr r3, [sp, #8] -.L2486: - ldr r0, [fp, #4] - cmp r3, r0 - bls .L2483 - ldr r1, [r5, #1852] - ldr r2, [r5, #1848] - str r0, [sp] - ldr r1, [r1, r7] - ldr r2, [r2, r7] - ldr r0, .L2508+16 - bl printk - ldr r3, [r5, #1852] - ldr r2, [r3, r7] - ldr r3, [r5, #1848] - str r2, [r3, r7] - movs r2, #0 - ldr r3, [r5, #1852] - ldr r0, [r3, r7] - ldrh r3, [r5, #1912] - ubfx r0, r0, #10, #16 -.L2487: - sxth r1, r2 - cmp r1, r3 - bge .L2507 - ldrh r1, [r8, r1, lsl #1] - adds r2, r2, #1 - cmp r1, r0 - bne .L2487 - b .L2483 -.L2507: - ldr r2, [r10, #2940] - cmp r3, r2 - bcs .L2483 - strh r0, [r8, r3, lsl #1] @ movhi - ldrh r3, [r5, #1912] adds r3, r3, #1 - strh r3, [r5, #1912] @ movhi - bl remove_from_free_sys_Queue - b .L2483 -.L2480: + str r3, [sp, #8] + b .L2611 +.L2618: mov r0, r4 bl ftl_map_blk_gc mov r0, r4 @@ -15517,14 +16374,12 @@ FtlMapTblRecovery: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2509: +.L2653: .align 2 -.L2508: +.L2652: .word .LANCHOR2 .word .LANCHOR2+4052 - .word .LANCHOR2+1868 .word .LANCHOR0 - .word .LC124 .fnend .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 1 @@ -15539,20 +16394,20 @@ FtlLoadVonderInfo: push {r3, lr} .save {r3, lr} movw r2, #4102 - ldr r3, .L2511 - ldr r0, .L2511+4 - ldrh r1, [r3, #2932] + ldr r3, .L2655 + ldr r0, .L2655+4 + ldrh r1, [r3, #1892] strh r1, [r0, r2] @ movhi add r2, r0, #4096 movw r1, #61574 strh r1, [r2] @ movhi movw r2, #4100 - ldrh r1, [r3, #2954] + ldrh r1, [r3, #1918] strh r1, [r0, r2] @ movhi movw r2, #4098 - ldrh r1, [r3, #2934] + ldrh r1, [r3, #1894] strh r1, [r0, r2] @ movhi - ldr r2, [r3, #2956] + ldr r2, [r3, #1920] movw r3, #4104 str r2, [r0, r3] movw r3, #4108 @@ -15564,16 +16419,13 @@ FtlLoadVonderInfo: movw r3, #4116 ldr r2, [r0, #1844] str r2, [r0, r3] - movw r3, #4132 - movw r2, #65535 - strh r2, [r0, r3] @ movhi addw r0, r0, #4092 bl FtlMapTblRecovery movs r0, #0 pop {r3, pc} -.L2512: +.L2656: .align 2 -.L2511: +.L2655: .word .LANCHOR0 .word .LANCHOR2 .fnend @@ -15590,464 +16442,135 @@ FtlLoadMapInfo: push {r3, lr} .save {r3, lr} bl FtlL2PDataInit - ldr r0, .L2514 + ldr r0, .L2658 bl FtlMapTblRecovery movs r0, #0 pop {r3, pc} -.L2515: +.L2659: .align 2 -.L2514: +.L2658: .word .LANCHOR2+1868 .fnend .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 1 - .global log2phys - .thumb - .thumb_func - .type log2phys, %function -log2phys: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - mov r8, #1 - str r2, [sp] - mov r10, r1 - ldr r2, .L2532 - movs r3, #0 - ldr r1, .L2532+4 - ldrh r4, [r2, #2918] - str r2, [sp, #4] - mov fp, r1 - adds r4, r4, #7 - lsl r5, r8, r4 - lsr r6, r0, r4 - subs r4, r5, #1 - ands r0, r0, r4 - ldr r4, [r1, #980] - uxth r6, r6 - uxth r7, r0 - ldrh r0, [r2, #2950] - movs r2, #12 -.L2517: - uxth r8, r3 - cmp r8, r0 - bcs .L2531 - adds r3, r3, #1 - mla r1, r2, r3, r4 - ldrh r1, [r1, #-12] - cmp r1, r6 - bne .L2517 -.L2518: - ldr r2, [sp] - movs r3, #12 - cbnz r2, .L2519 - ldr r2, [fp, #980] - mla r3, r3, r8, r2 - ldr r3, [r3, #8] - ldr r3, [r3, r7, lsl #2] - str r3, [r10] - b .L2520 -.L2519: - mul r3, r3, r8 - ldr r2, [fp, #980] - ldr r1, [r10] - add r2, r2, r3 - ldr r2, [r2, #8] - str r1, [r2, r7, lsl #2] - ldr r2, [fp, #980] - strh r6, [fp, #984] @ movhi - add r3, r3, r2 - ldr r2, [r3, #4] - orr r2, r2, #-2147483648 - str r2, [r3, #4] -.L2520: - ldr r2, [fp, #980] - movs r3, #12 - mla r8, r3, r8, r2 - ldr r3, [r8, #4] - adds r2, r3, #1 - beq .L2528 - adds r3, r3, #1 - str r3, [r8, #4] - b .L2528 -.L2531: - bl select_l2p_ram_region - movs r5, #12 - movw r2, #65535 - muls r5, r0, r5 - mov r8, r0 - adds r3, r4, r5 - ldrh r1, [r4, r5] - cmp r1, r2 - beq .L2523 - ldr r3, [r3, #4] - cmp r3, #0 - bge .L2523 - bl flush_l2p_region -.L2523: - ldr r3, [fp, #1848] - ldr r4, .L2532+4 - ldr r9, [r3, r6, lsl #2] - cmp r9, #0 - bne .L2524 - ldr r2, [r4, #980] - movs r1, #255 - ldr r3, [sp, #4] - add r2, r2, r5 - ldr r0, [r2, #8] - ldrh r2, [r3, #2920] - bl ftl_memset - ldr r2, [r4, #980] - strh r6, [r2, r5] @ movhi - ldr r2, [r4, #980] - add r5, r5, r2 - str r9, [r5, #4] - b .L2518 -.L2524: - ldr r2, [r4, #980] - movs r1, #1 - addw r0, r4, #4052 - str r9, [r4, #4056] - add r2, r2, r5 - ldr r2, [r2, #8] - str r2, [r4, #4060] - ldr r2, [r4, #1800] - str r2, [r4, #4064] - mov r2, r1 - bl FlashReadPages - ldr r2, [r4, #4052] - cmp r2, #256 - bne .L2525 - mov r1, r6 - mov r2, r9 - ldr r0, .L2532+8 - bl printk - lsr r3, r9, #10 - strh r3, [r4, #1908] @ movhi - addw r0, r4, #1868 - ldr r3, [r4, #980] - mov r1, r6 - add r3, r3, r5 - ldr r2, [r3, #8] - bl FtlMapWritePage -.L2525: - ldr r3, [fp, #980] - movs r1, #0 - adds r2, r3, r5 - str r1, [r2, #4] - strh r6, [r3, r5] @ movhi - b .L2518 -.L2528: - movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2533: - .align 2 -.L2532: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC125 - .fnend - .size log2phys, .-log2phys - .align 1 - .global FtlReUsePrevPpa - .thumb - .thumb_func - .type FtlReUsePrevPpa, %function -FtlReUsePrevPpa: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - .pad #12 - mov r6, r0 - ubfx r0, r1, #10, #16 - str r1, [sp, #4] - bl P2V_block_in_plane - ldr r5, .L2543 - ldr r4, [r5, #816] - ldrh r3, [r4, r0, lsl #1] - cbnz r3, .L2535 - ldr r4, [r5, #828] - cbz r4, .L2536 - ldr r1, [r5, #808] - mov lr, #6 - ldr r2, .L2543+4 - movw ip, #65535 - subs r4, r4, r1 - ldrh r7, [r5, #832] - asrs r4, r4, #1 - muls r4, r2, r4 - uxth r4, r4 -.L2537: - uxth r2, r3 - cmp r2, r7 - bcs .L2536 - cmp r4, r0 - bne .L2538 - mov r1, r4 - ldr r0, .L2543+8 - bl List_remove_node - ldrh r3, [r5, #832] - mov r0, r4 - subs r3, r3, #1 - strh r3, [r5, #832] @ movhi - bl INSERT_DATA_LIST - ldr r2, [r5, #816] - ldrh r3, [r2, r4, lsl #1] - adds r3, r3, #1 - strh r3, [r2, r4, lsl #1] @ movhi - b .L2536 -.L2538: - mul r4, lr, r4 - adds r3, r3, #1 - ldrh r4, [r1, r4] - cmp r4, ip - bne .L2537 - b .L2536 -.L2535: - adds r3, r3, #1 - strh r3, [r4, r0, lsl #1] @ movhi -.L2536: - mov r0, r6 - add r1, sp, #4 - movs r2, #1 - bl log2phys - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, pc} -.L2544: - .align 2 -.L2543: - .word .LANCHOR2 - .word -1431655765 - .word .LANCHOR2+828 - .fnend - .size FtlReUsePrevPpa, .-FtlReUsePrevPpa - .align 1 - .global FtlReadRefresh - .thumb - .thumb_func - .type FtlReadRefresh, %function -FtlReadRefresh: - .fnstart - @ args = 0, pretend = 0, frame = 40 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2560 - push {r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - .pad #44 - sub sp, sp, #44 - ldr r2, [r3, #1204] - mov r4, r3 - ldr r5, .L2560+4 - cmp r2, #0 - beq .L2546 - ldr r1, [r3, #1208] - ldr r2, [r5, #2968] - cmp r1, r2 - bcs .L2547 - mov r6, #2048 - mov r7, r3 -.L2552: - ldr r0, [r4, #1208] - ldr r3, [r5, #2968] - cmp r0, r3 - bcs .L2549 - mov r1, sp - movs r2, #0 - bl log2phys - ldr r2, [sp] - ldr r3, [r7, #1208] - adds r1, r2, #1 - add r3, r3, #1 - str r3, [r7, #1208] - beq .L2550 - add r0, sp, #40 - str r2, [sp, #8] - movs r1, #1 - movs r2, #0 - str r2, [r0, #-36]! - str r3, [sp, #20] - str r2, [sp, #12] - str r2, [sp, #16] - bl FlashReadPages - ldr r3, [sp, #4] - cmp r3, #256 - bne .L2549 - ldr r0, [sp] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock - b .L2549 -.L2550: - subs r6, r6, #1 - bne .L2552 -.L2549: - mov r0, #-1 - b .L2554 -.L2547: - ldr r2, [r3, #996] - movs r0, #0 - str r0, [r3, #1204] - str r0, [r3, #1208] - str r2, [r3, #1200] - b .L2554 -.L2546: - ldrb r2, [r5, #76] @ zero_extendqisi2 - ldr r1, [r3, #1048] - ldr r3, [r5, #2832] - cbnz r2, .L2557 - mov r2, #33554432 - add r3, r3, r1, lsr #10 - asrs r2, r2, r3 - b .L2555 -.L2557: - mov r2, #4194304 -.L2555: - ldr r1, [r4, #996] - ldr r3, [r4, #1200] - add r0, r1, #1048576 - cmp r3, r0 - bhi .L2556 - add r3, r3, r2 - cmp r3, r1 - bcc .L2556 - ldr r3, .L2560 - ldrb r3, [r3, #788] @ zero_extendqisi2 - cbnz r3, .L2558 -.L2556: - movs r3, #1 - movs r0, #0 - str r3, [r4, #1204] - str r0, [r4, #1208] - str r1, [r4, #1200] - b .L2554 -.L2558: - movs r0, #0 -.L2554: - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, pc} -.L2561: - .align 2 -.L2560: - .word .LANCHOR2 - .word .LANCHOR0 - .fnend - .size FtlReadRefresh, .-FtlReadRefresh - .align 1 .global FtlVendorPartWrite .thumb .thumb_func .type FtlVendorPartWrite, %function FtlVendorPartWrite: .fnstart - @ args = 0, pretend = 0, frame = 56 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2575 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, #2904] - .pad #60 - sub sp, sp, #60 mov r10, r2 - ldrh r2, [r3, #2918] - cmp r0, r1 - str r3, [sp, #4] - bhi .L2570 - ldr r7, .L2575+4 - lsr r6, r5, r2 + ldr r2, .L2674 + .pad #68 + sub sp, sp, #68 + mov r4, r1 + mov r5, r0 + adds r6, r0, r4 + ldr r3, [r2] + str r2, [sp, #12] + str r3, [sp, #60] + ldr r3, .L2674+4 + ldrh r0, [r3, #1868] + ldrh r1, [r3, #1880] + cmp r6, r0 + str r3, [sp, #8] + bhi .L2669 + ldr r7, .L2674+8 + lsr r6, r5, r1 mov fp, #0 lsls r3, r6, #2 - str r3, [sp] -.L2564: + str r3, [sp, #4] +.L2662: cmp r4, #0 - beq .L2574 - ldr r3, .L2575+4 + beq .L2673 + ldr r3, .L2674+8 mov r0, r5 - ldr r2, [sp] + ldr r2, [sp, #4] ldr r3, [r3, #1844] ldr ip, [r3, r2] - ldr r3, [sp, #4] - str ip, [sp, #12] - ldrh r2, [r3, #2916] + ldr r3, [sp, #8] + str ip, [sp, #20] + ldrh r2, [r3, #1878] mov r1, r2 - str r2, [sp, #8] + str r2, [sp, #16] bl __aeabi_uidivmod - ldr r2, [sp, #8] - ldr ip, [sp, #12] - subs r3, r2, r1 + ldr r2, [sp, #16] mov r8, r1 + ldr ip, [sp, #20] + subs r3, r2, r1 uxth r9, r3 cmp r9, r4 it hi uxthhi r9, r4 cmp ip, #0 - beq .L2566 + beq .L2664 cmp r9, r2 - beq .L2566 + beq .L2664 ldr r2, [r7, #1784] movs r1, #1 - add r0, sp, #20 - str ip, [sp, #24] - str r2, [sp, #28] - movs r2, #0 + add r0, sp, #24 + str ip, [sp, #28] str r2, [sp, #32] + movs r2, #0 + str r2, [sp, #36] mov r2, r1 bl FlashReadPages - b .L2567 -.L2566: - ldr r3, [sp, #4] + b .L2665 +.L2664: + ldr r3, [sp, #8] movs r1, #0 ldr r0, [r7, #1784] - ldrh r2, [r3, #2920] + ldrh r2, [r3, #1882] bl ftl_memset -.L2567: +.L2665: lsl ip, r9, #9 ldr r0, [r7, #1784] uxth r8, r8 mov r1, r10 mov r2, ip - str ip, [sp, #8] + str ip, [sp, #16] add r0, r0, r8, lsl #9 rsb r4, r9, r4 bl ftl_memcpy mov r1, r6 - ldr r0, .L2575+8 + ldr r0, .L2674+12 adds r6, r6, #1 ldr r2, [r7, #1784] add r5, r5, r9 bl FtlMapWritePage - ldr r3, [sp] - ldr ip, [sp, #8] - adds r3, r3, #4 - str r3, [sp] - add r10, r10, ip + ldr r3, [sp, #4] adds r0, r0, #1 + ldr ip, [sp, #16] it eq moveq fp, #-1 - b .L2564 -.L2574: + adds r3, r3, #4 + str r3, [sp, #4] + add r10, r10, ip + b .L2662 +.L2673: mov r0, fp - b .L2563 -.L2570: + b .L2661 +.L2669: mov r0, #-1 -.L2563: - add sp, sp, #60 +.L2661: + ldr r3, [sp, #12] + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L2668 + bl __stack_chk_fail +.L2668: + add sp, sp, #68 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2576: +.L2675: .align 2 -.L2575: +.L2674: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 .word .LANCHOR2+4092 @@ -16063,53 +16586,55 @@ Ftl_save_ext_data: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L2579 - ldr r3, .L2579+4 - ldr r1, [r2, #1124] + ldr r2, .L2678 + ldr r3, .L2678+4 + ldr r1, [r2, #92] cmp r1, r3 - bne .L2577 - ldr r3, .L2579+8 + bne .L2676 + ldr r3, .L2678+8 movs r0, #0 movs r1, #1 - str r3, [r2, #1128] - ldr r3, [r2, #1020] - str r3, [r2, #1212] - ldr r3, [r2, #1024] - str r3, [r2, #1216] - ldr r3, [r2, #1016] - str r3, [r2, #1132] - ldr r3, [r2, #1004] - str r3, [r2, #1136] - ldr r3, [r2, #996] - str r3, [r2, #1140] - ldr r3, [r2, #1012] - str r3, [r2, #1144] - ldr r3, [r2, #1040] - str r3, [r2, #1152] - ldr r3, [r2, #756] - addw r2, r2, #1124 - str r3, [r2, #32] + adds r2, r2, #92 + str r3, [r2, #4] + ldr r3, [r2, #-108] + str r3, [r2, #88] + ldr r3, [r2, #-104] + str r3, [r2, #92] + ldr r3, [r2, #-112] + str r3, [r2, #8] ldr r3, [r2, #-124] - str r3, [r2, #36] + str r3, [r2, #12] + ldr r3, [r2, #-132] + str r3, [r2, #16] ldr r3, [r2, #-116] + str r3, [r2, #20] + ldr r3, [r2, #-88] + str r3, [r2, #28] + ldr r3, .L2678+12 + ldr r3, [r3, #4064] + str r3, [r2, #32] + ldr r3, [r2, #-128] + str r3, [r2, #36] + ldr r3, [r2, #-120] str r3, [r2, #40] - ldr r3, [r2, #-76] + ldr r3, [r2, #-80] str r3, [r2, #44] - ldr r3, [r2, #-72] + ldr r3, [r2, #-76] str r3, [r2, #48] ldr r3, [r2, #-4] str r3, [r2, #60] - ldr r3, [r2, #612] + ldr r3, [r2, #1644] str r3, [r2, #64] b FtlVendorPartWrite -.L2577: +.L2676: bx lr -.L2580: +.L2679: .align 2 -.L2579: +.L2678: .word .LANCHOR2 .word 1179929683 - .word 1342177352 + .word 1342177366 + .word .LANCHOR0 .fnend .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 1 @@ -16121,41 +16646,41 @@ FtlEctTblFlush: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2588 + ldr r3, .L2687 push {r4, lr} .save {r4, lr} - ldr r2, [r3, #2832] - ldr r3, .L2588+4 - cbz r2, .L2586 - ldr r2, [r3, #1052] - cmp r2, #29 + ldr r2, [r3, #1796] + ldr r3, .L2687+4 + cbz r2, .L2685 + ldr r2, [r3, #16] + cmp r2, #39 ite hi movhi r1, #32 movls r1, #4 - b .L2582 -.L2586: + b .L2681 +.L2685: movs r1, #32 -.L2582: - ldr r4, .L2588+8 +.L2681: + ldr r4, .L2687+8 ldrh r2, [r4, #-208] cmp r2, #31 ittt ls addls r2, r2, #1 movls r1, #1 strhls r2, [r4, #-208] @ movhi - cbnz r0, .L2584 + cbnz r0, .L2683 ldr r0, [r3, #1820] ldr r2, [r0, #20] add r2, r2, r1 ldr r1, [r0, #16] cmp r1, r2 - bcc .L2585 -.L2584: + bcc .L2684 +.L2683: ldr r2, [r3, #1820] movs r0, #64 ldr r1, [r2, #16] str r1, [r2, #20] - ldr r1, .L2588+12 + ldr r1, .L2687+12 str r1, [r2] ldr r2, [r3, #1820] ldrh r1, [r3, #1812] @@ -16168,12 +16693,12 @@ FtlEctTblFlush: str r3, [r2, #4] bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2585: +.L2684: movs r0, #0 pop {r4, pc} -.L2589: +.L2688: .align 2 -.L2588: +.L2687: .word .LANCHOR0 .word .LANCHOR2 .word .LANCHOR4 @@ -16187,110 +16712,122 @@ FtlEctTblFlush: .type FtlVendorPartRead, %function FtlVendorPartRead: .fnstart - @ args = 0, pretend = 0, frame = 56 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L2601 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r7, r0 - mov r5, r1 - add r0, r0, r1 - ldrh r1, [r3, #2904] - .pad #60 - sub sp, sp, #60 - mov r8, r2 - ldrh r2, [r3, #2918] - cmp r0, r1 + mov r7, r2 + ldr r2, .L2701 + .pad #68 + sub sp, sp, #68 + mov r4, r1 + mov r6, r0 + adds r5, r0, r4 + ldr r3, [r2] + str r2, [sp, #16] + str r3, [sp, #60] + ldr r3, .L2701+4 + ldrh r0, [r3, #1868] + ldrh r1, [r3, #1880] + cmp r5, r0 + str r3, [sp, #20] + bhi .L2699 + ldr r8, .L2701+16 + lsr r5, r6, r1 + lsls r3, r5, #2 str r3, [sp, #8] - bhi .L2599 - lsr r6, r7, r2 - ldr r10, .L2601+12 + mov fp, r8 movs r3, #0 - str r3, [sp] - lsl r9, r6, #2 - mov fp, r10 -.L2592: - cmp r5, #0 - beq .L2600 - ldr r3, [r10, #1844] - mov r0, r7 - ldr ip, [r3, r9] - ldr r3, [sp, #8] - str ip, [sp, #12] - ldrh r4, [r3, #2916] - mov r1, r4 + str r3, [sp, #4] +.L2691: + cmp r4, #0 + beq .L2700 + ldr r3, [r8, #1844] + mov r0, r6 + ldr r2, [sp, #8] + ldr r9, [r3, r2] + ldr r3, [sp, #20] + ldrh r10, [r3, #1878] + mov r1, r10 bl __aeabi_uidivmod - ldr ip, [sp, #12] - subs r3, r4, r1 - str r1, [sp, #4] - uxth r4, r3 - cmp r4, r5 + rsb r3, r1, r10 + str r1, [sp, #12] + uxth r10, r3 + cmp r10, r4 it hi - uxthhi r4, r5 - cmp ip, #0 - beq .L2594 + uxthhi r10, r4 + cmp r9, #0 + beq .L2693 ldr r2, [fp, #1784] movs r1, #1 - add r0, sp, #20 - str ip, [sp, #24] - str ip, [sp, #12] - str r2, [sp, #28] - movs r2, #0 + add r0, sp, #24 + str r9, [sp, #28] str r2, [sp, #32] + movs r2, #0 + str r2, [sp, #36] mov r2, r1 bl FlashReadPages - ldr r2, [sp, #20] - ldr r3, [sp] + ldr r2, [sp, #24] + ldr r3, [sp, #4] adds r2, r2, #1 - ldr r2, [fp, #4052] + ldr r2, [r8, #4052] it eq moveq r3, #-1 - ldr ip, [sp, #12] cmp r2, #256 - str r3, [sp] - bne .L2596 - mov r1, r6 - mov r2, ip - ldr r0, .L2601+4 + str r3, [sp, #4] + bne .L2695 + mov r1, r5 + mov r2, r9 + ldr r0, .L2701+8 bl printk - ldr r0, .L2601+8 - mov r1, r6 - ldr r2, [r10, #1784] + ldr r0, .L2701+12 + mov r1, r5 + ldr r2, [r8, #1784] bl FtlMapWritePage -.L2596: - ldrh r2, [sp, #4] - mov r0, r8 +.L2695: + ldrh r9, [sp, #12] + mov r0, r7 ldr r1, [fp, #1784] - add r1, r1, r2, lsl #9 - lsls r2, r4, #9 + lsl r2, r10, #9 + add r1, r1, r9, lsl #9 bl ftl_memcpy - b .L2597 -.L2594: - mov r0, r8 - mov r1, ip - lsls r2, r4, #9 + b .L2696 +.L2693: + mov r0, r7 + mov r1, r9 + lsl r2, r10, #9 bl ftl_memset -.L2597: - adds r6, r6, #1 - subs r5, r5, r4 - add r7, r7, r4 - add r8, r8, r4, lsl #9 - add r9, r9, #4 - b .L2592 -.L2600: - ldr r0, [sp] - b .L2591 -.L2599: +.L2696: + ldr r3, [sp, #8] + adds r5, r5, #1 + rsb r4, r10, r4 + add r6, r6, r10 + adds r3, r3, #4 + add r7, r7, r10, lsl #9 + str r3, [sp, #8] + b .L2691 +.L2700: + ldr r0, [sp, #4] + b .L2690 +.L2699: mov r0, #-1 -.L2591: - add sp, sp, #60 +.L2690: + ldr r3, [sp, #16] + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L2698 + bl __stack_chk_fail +.L2698: + add sp, sp, #68 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2602: +.L2702: .align 2 -.L2601: +.L2701: + .word __stack_chk_guard .word .LANCHOR0 - .word .LC126 + .word .LC132 .word .LANCHOR2+4092 .word .LANCHOR2 .fnend @@ -16307,33 +16844,33 @@ FtlLoadEctTbl: push {r4, lr} .save {r4, lr} movs r0, #64 - ldr r4, .L2605 + ldr r4, .L2705 ldr r2, [r4, #1820] ldrh r1, [r4, #1812] bl FtlVendorPartRead ldr r3, [r4, #1820] ldr r2, [r3] - ldr r3, .L2605+4 + ldr r3, .L2705+4 cmp r2, r3 - beq .L2604 - ldr r1, .L2605+8 - ldr r0, .L2605+12 + beq .L2704 + ldr r1, .L2705+8 + ldr r0, .L2705+12 bl printk ldrh r2, [r4, #1812] ldr r0, [r4, #1820] movs r1, #0 lsls r2, r2, #9 bl ftl_memset -.L2604: +.L2704: movs r0, #0 pop {r4, pc} -.L2606: +.L2706: .align 2 -.L2605: +.L2705: .word .LANCHOR2 .word 1112818501 - .word .LC127 - .word .LC77 + .word .LC133 + .word .LC76 .fnend .size FtlLoadEctTbl, .-FtlLoadEctTbl .align 1 @@ -16348,163 +16885,83 @@ Ftl_load_ext_data: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r0, #0 - ldr r4, .L2611 + ldr r4, .L2711 movs r1, #1 - ldr r5, .L2611+4 - addw r2, r4, #1124 + ldr r5, .L2711+4 + add r2, r4, #92 bl FtlVendorPartRead - ldr r3, [r4, #1124] + ldr r3, [r4, #92] cmp r3, r5 - beq .L2608 - addw r0, r4, #1124 - mov r1, #512 - bl __memzero - str r5, [r4, #1124] -.L2608: - ldr r2, [r4, #1124] - ldr r3, .L2611 + beq .L2708 + add r0, r4, #92 + movs r1, #0 + mov r2, #512 + bl ftl_memset + str r5, [r4, #92] +.L2708: + ldr r2, [r4, #92] + ldr r3, .L2711 cmp r2, r5 - bne .L2609 - ldr r2, [r3, #1212] - str r2, [r3, #1020] - ldr r2, [r3, #1216] - str r2, [r3, #1024] - ldr r2, [r3, #1132] - str r2, [r3, #1016] - ldr r2, [r3, #1136] - str r2, [r3, #1004] - ldr r2, [r3, #1140] - str r2, [r3, #996] - ldr r2, [r3, #1144] - str r2, [r3, #1012] - ldr r2, [r3, #1152] - str r2, [r3, #1040] - ldr r2, [r3, #1156] - str r2, [r3, #756] - ldr r2, [r3, #1160] - str r2, [r3, #1000] - ldr r2, [r3, #1164] - str r2, [r3, #1008] - ldr r2, [r3, #1168] - str r2, [r3, #1048] - ldr r2, [r3, #1172] - str r2, [r3, #1052] - ldr r2, [r3, #1184] - str r2, [r3, #1120] -.L2609: + ldr r5, .L2711+8 + bne .L2709 + ldr r2, [r3, #180] + str r2, [r3, #-16] + ldr r2, [r3, #184] + str r2, [r3, #-12] + ldr r2, [r3, #100] + str r2, [r3, #-20] + ldr r2, [r3, #104] + str r2, [r3, #-32] + ldr r2, [r3, #108] + str r2, [r3, #-40] + ldr r2, [r3, #112] + str r2, [r3, #-24] + ldr r2, [r3, #120] + str r2, [r3, #4] + ldr r2, [r3, #124] + str r2, [r5, #4064] + ldr r2, [r3, #128] + str r2, [r3, #-36] + ldr r2, [r3, #132] + str r2, [r3, #-28] + ldr r2, [r3, #136] + str r2, [r3, #12] + ldr r2, [r3, #140] + str r2, [r3, #16] + ldr r2, [r3, #152] + str r2, [r3, #88] +.L2709: movs r3, #0 - ldr r2, [r4, #1192] + ldr r2, [r4, #160] str r3, [r4, #1736] - ldr r3, .L2611+8 - ldr r5, .L2611+12 + ldr r3, .L2711+12 cmp r2, r3 - bne .L2610 - ldr r0, .L2611+16 + bne .L2710 + ldr r0, .L2711+16 movs r3, #1 - ldr r1, .L2611+20 - str r3, [r5, #2832] + ldr r1, .L2711+20 + str r3, [r5, #1796] bl printk -.L2610: - ldrh r2, [r5, #2900] - ldr r3, [r4, #1040] - ldr r0, [r4, #1036] - ldrh r1, [r5, #2848] +.L2710: + ldrh r2, [r5, #1864] + ldmia r4, {r0, r3} + ldrh r1, [r5, #1812] mla r0, r0, r2, r3 bl __aeabi_uidiv - str r0, [r4, #1044] + str r0, [r4, #8] pop {r3, r4, r5, pc} -.L2612: +.L2712: .align 2 -.L2611: +.L2711: .word .LANCHOR2 .word 1179929683 - .word 305432421 .word .LANCHOR0 - .word .LC77 - .word .LC128 + .word 305432421 + .word .LC76 + .word .LC134 .fnend .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 1 - .global ftl_vendor_read - .thumb - .thumb_func - .type ftl_vendor_read, %function -ftl_vendor_read: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - add r0, r0, #256 - b FtlVendorPartRead - .fnend - .size ftl_vendor_read, .-ftl_vendor_read - .align 1 - .global FlashBootVendorRead - .thumb - .thumb_func - .type FlashBootVendorRead, %function -FlashBootVendorRead: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl rknand_device_lock - mov r2, r4 - mov r1, r5 - mov r0, r6 - bl ftl_vendor_read - mov r4, r0 - bl rknand_device_unlock - mov r0, r4 - pop {r4, r5, r6, pc} - .fnend - .size FlashBootVendorRead, .-FlashBootVendorRead - .align 1 - .global ftl_sys_read - .thumb - .thumb_func - .type ftl_sys_read, %function -ftl_sys_read: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - add r0, r0, #512 - b FtlVendorPartRead - .fnend - .size ftl_sys_read, .-ftl_sys_read - .align 1 - .global StorageSysDataLoad - .thumb - .thumb_func - .type StorageSysDataLoad, %function -StorageSysDataLoad: - .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 r5, r0 - mov r4, r1 - mov r0, r1 - mov r1, #512 - bl __memzero - bl rknand_device_lock - mov r2, r4 - movs r1, #1 - mov r0, r5 - bl ftl_sys_read - mov r4, r0 - bl rknand_device_unlock - mov r0, r4 - pop {r3, r4, r5, pc} - .fnend - .size StorageSysDataLoad, .-StorageSysDataLoad - .align 1 .global FtlMapBlkWriteDumpData .thumb .thumb_func @@ -16516,789 +16973,619 @@ FtlMapBlkWriteDumpData: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r6, r0 - ldr r2, [r0, #36] + ldr r3, [r0, #36] ldrh r5, [r0, #6] - ldr r3, [r0, #24] - cbz r2, .L2617 - ldr r4, .L2623 - movs r2, #0 - str r2, [r0, #36] - ldr r2, [r4, #744] - cbnz r2, .L2617 + ldr r1, [r0, #24] + cbz r3, .L2713 + ldr r2, .L2719 + movs r3, #0 + str r3, [r0, #36] + ldr r3, [r2, #4052] + cbnz r3, .L2713 + ldr r3, .L2719+4 subs r5, r5, #1 - ldr r0, [r4, #1780] - ldr r2, [r4, #1800] uxth r5, r5 - str r0, [r4, #4060] - str r2, [r4, #4064] - ldr r3, [r3, r5, lsl #2] - str r3, [r4, #4056] - cbz r3, .L2621 + ldr r4, [r3, #1800] + ldr r0, [r3, #1780] + str r4, [r3, #4064] + mov r4, r3 + str r0, [r3, #4060] + ldr r1, [r1, r5, lsl #2] + str r1, [r3, #4056] + cbz r1, .L2717 movs r1, #1 - addw r0, r4, #4052 + addw r0, r3, #4052 mov r2, r1 bl FlashReadPages - b .L2622 -.L2621: - ldr r3, .L2623+4 + b .L2718 +.L2717: movs r1, #255 - ldrh r2, [r3, #2920] + ldrh r2, [r2, #1882] bl ftl_memset -.L2622: +.L2718: mov r0, r6 mov r1, r5 ldr r2, [r4, #4060] pop {r4, r5, r6, lr} b FtlMapWritePage -.L2617: +.L2713: pop {r4, r5, r6, pc} -.L2624: +.L2720: .align 2 -.L2623: - .word .LANCHOR2 +.L2719: .word .LANCHOR0 + .word .LANCHOR2 .fnend .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 1 - .global FtlRecoverySuperblock + .global FlashReadFacBbtData .thumb .thumb_func - .type FtlRecoverySuperblock, %function -FtlRecoverySuperblock: + .type FlashReadFacBbtData, %function +FlashReadFacBbtData: .fnstart - @ args = 0, pretend = 0, frame = 64 + @ args = 0, pretend = 0, frame = 40 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2736 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r7, #65535 - ldrh r3, [r0] - .pad #68 - sub sp, sp, #68 - mov r4, r0 - cmp r3, r7 - beq .L2769 - ldrh r3, [r0, #2] - movs r5, #0 - ldr r6, .L2785 - str r3, [sp, #12] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r2, [sp, #12] - str r3, [sp, #28] - ldrh r3, [r6, #2910] - cmp r3, r2 - bne .L2628 - strh r5, [r0, #4] @ movhi - strb r5, [r0, #6] - b .L2769 -.L2628: - ldrh r0, [r0, #16] -.L2629: - cmp r0, r7 - add r5, r5, #1 - bne .L2780 - uxth r3, r5 - adds r3, r3, #8 - ldrh r0, [r4, r3, lsl #1] - b .L2629 -.L2780: - ldrb r1, [r4, #8] @ zero_extendqisi2 - cmp r1, #1 - bne .L2631 - bl FtlGetLastWrittenPage - adds r2, r0, #1 - mov r5, r0 - beq .L2632 - ldrb r3, [r6, #76] @ zero_extendqisi2 - cbnz r3, .L2771 - ldr r3, .L2785 - add r3, r3, r0, lsl #1 - ldrh r7, [r3, #80] - b .L2706 -.L2631: - movs r1, #0 - bl FtlGetLastWrittenPage - adds r3, r0, #1 - mov r5, r0 - beq .L2632 -.L2771: - mov r7, r5 -.L2706: - ldr r3, .L2785+4 - movw r9, #65535 - ldrh ip, [r6, #2840] - mov r10, #36 - ldrh r0, [r6, #2922] - ldr r2, [r3, #1764] - ldr r8, [r3, #1664] - 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 .L2634 -.L2632: - movs r3, #0 - strh r3, [r4, #2] @ movhi - strb r3, [r4, #6] - b .L2769 -.L2637: - ldrh r3, [lr, #2]! - cmp r3, r9 - beq .L2635 - ldr r1, [sp, #4] - orr r3, r7, r3, lsl #10 - mla r1, r10, r6, r1 - str r3, [r1, #4] - mov r3, r0 - 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 r3, [r1, #12] -.L2635: - adds r2, r2, #1 -.L2634: - uxth r3, r2 - cmp r3, ip - bcc .L2637 - ldrb r3, [r4, #8] @ zero_extendqisi2 - cmp r3, #1 - bne .L2708 - ldr r3, .L2785 - ldrb r1, [r3, #76] @ zero_extendqisi2 - adds r3, r1, #0 - it ne - movne r3, #1 - b .L2772 -.L2708: - movs r3, #0 -.L2772: - ldr r8, .L2785+4 - mov r1, r6 - str r3, [sp, #24] - mov fp, #0 - ldr r2, [sp, #24] - ldr r0, [r8, #1764] - bl FlashReadPages - ldr r3, [r8, #1032] - str r8, [sp, #8] - subs r3, r3, #1 - str r3, [sp, #4] - movw r3, #65535 - str r3, [sp, #16] -.L2639: - uxth r9, fp - cmp r9, r6 - bcs .L2646 - movs r1, #36 - ldr r0, [r8, #1764] - mul r1, r1, fp - add lr, r0, r1 - ldr r1, [r0, r1] - cbnz r1, .L2640 - ldr r3, [lr, #12] - ldr r10, [r3, #4] - cmp r10, #-1 - beq .L2641 - mov r0, r10 - ldr r1, [r8, #1032] - str r3, [sp, #32] - bl ftl_cmp_data_ver - ldr r3, [sp, #32] - cbz r0, .L2641 - add r1, r10, #1 - str r1, [r8, #1032] -.L2641: - ldr r1, [r3] - adds r1, r1, #1 - bne .L2642 -.L2646: - cmp r9, r6 - ldr r6, .L2785+4 - bne .L2770 - ldr r3, [r6, #1764] - adds r5, r5, #1 - uxth r10, r5 - ldr r0, [r3, #4] - b .L2773 -.L2640: - ldr r1, [lr, #4] - ldr r0, .L2785+8 - bl printk - uxth r3, r7 - ldrh r1, [r4] - str r3, [sp, #16] - ldr r3, .L2785+12 - strh r1, [r3, #-206] @ movhi -.L2642: - add fp, fp, #1 - b .L2639 -.L2770: - ldr r3, [sp, #8] - movs r2, #36 - uxth r10, r5 - ldr r3, [r3, #1764] - mla r9, r2, r9, r3 - ldr r0, [r9, #4] -.L2773: - ubfx r0, r0, #10, #16 - bl P2V_plane - ldrb r5, [r4, #8] @ zero_extendqisi2 - ldr r2, .L2785 - cmp r5, #1 - str r0, [sp, #8] - bne .L2648 - ldrb r3, [r2, #76] @ zero_extendqisi2 - cbnz r3, .L2648 - add r3, r2, r10, lsl #1 - ldrh r10, [r3, #80] -.L2648: - ldrh r3, [r2, #2910] - 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 .L2650 - ldr r3, [sp, #8] - ldr r2, [sp, #32] - cmp r3, r2 - bne .L2650 - mov r0, r4 - mov r1, r10 - mov r2, r3 - b .L2778 -.L2650: - ldr r2, [sp, #16] - movw r3, #65535 - cmp r2, r3 - bne .L2651 - cmp r5, #0 - bne .L2652 -.L2651: - ldr r3, [r6, #1932] - uxth fp, r7 - mov r9, #-1 - ldr r8, .L2785+4 - adds r3, r3, #1 - mov r7, r9 - ittt eq - ldreq r3, .L2785+4 - ldreq r2, [sp, #4] - streq r2, [r3, #1932] - ldr r3, [r6, #1932] - str r3, [sp, #16] - ldr r3, [sp, #12] - adds r3, r3, #7 - cmp fp, r3 - itet gt - subgt r5, fp, #7 - ldrle r5, [sp, #12] - uxthgt r5, r5 -.L2655: - cmp r5, fp - bhi .L2668 - ldr r3, .L2785 - ldr r1, [sp, #20] - ldrh ip, [r3, #2840] - ldr r3, [r8, #1764] - str r3, [sp, #28] - movs r3, #0 - mov r6, r3 -.L2669: - uxth r2, r3 - cmp r2, ip - bcs .L2781 - ldrh r2, [r1, #2]! - movw r0, #65535 - cmp r2, r0 - beq .L2656 - ldr r0, [sp, #28] - mov lr, #36 - orr r2, r5, r2, lsl #10 - mla r0, lr, r6, r0 - adds r6, r6, #1 - uxth r6, r6 - str r2, [r0, #4] -.L2656: - adds r3, r3, #1 - b .L2669 -.L2781: - mov r1, r6 - ldr r2, [sp, #24] - ldr r0, [r8, #1764] - bl FlashReadPages - ldr r3, .L2785 - movs r2, #36 - movw r1, #65535 - ldrb r0, [r3, #76] @ zero_extendqisi2 - ldr r3, [r8, #1764] - mla r6, r2, r6, r3 - ldr r2, .L2785 - add lr, r2, r5, lsl #1 -.L2658: - cmp r3, r6 - beq .L2782 + mov r10, r2 ldr r2, [r3] - cbnz r2, .L2659 - ldr r2, [r3, #12] - ldrh ip, [r2] - cmp ip, r1 - beq .L2660 - ldr r2, [r2, #4] - cmp r2, #-1 - beq .L2660 - cmp r9, #-1 - ldr r7, [r8, #1932] - str r2, [r8, #1932] - bne .L2660 - ldrh r2, [lr, #592] - cmp r2, r1 - bne .L2661 - cmp r0, #0 - beq .L2660 -.L2661: - ldr r2, [sp, #4] - cmp r7, r2 - ite ne - movne r9, r7 - moveq r9, #-1 - b .L2660 -.L2786: - .align 2 -.L2785: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC129 - .word .LANCHOR4 -.L2659: - ldr r3, .L2787 - ldrh r2, [r4] - strh r2, [r3, #-206] @ movhi - ldrb r3, [r4, #8] @ zero_extendqisi2 - cbnz r3, .L2652 - ldr r3, .L2787+4 - add r5, r3, r5, lsl #1 - movw r3, #65535 - ldrh r2, [r5, #592] - cmp r2, r3 - ldr r3, .L2787+8 - bne .L2663 - cmp r9, #-1 - beq .L2664 - str r9, [r3, #1932] - b .L2652 -.L2664: - ldr r2, [sp, #16] - ldr r1, [sp, #4] - cmp r2, r1 - bne .L2774 - ldr r2, [r3, #1932] - b .L2779 -.L2663: - ldr r2, [sp, #4] - cmp r7, r2 - beq .L2666 - adds r2, r7, #1 - beq .L2652 - str r7, [r3, #1932] - b .L2652 -.L2666: - ldr r2, [r3, #1932] - ldr r1, [sp, #4] - cmp r2, r1 - beq .L2652 -.L2779: - subs r2, r2, #1 - b .L2774 -.L2660: - adds r3, r3, #36 - b .L2658 -.L2782: - adds r5, r5, #1 - uxth r5, r5 - b .L2655 -.L2668: - ldr r3, .L2787+8 - mov r2, #-1 -.L2774: - str r2, [r3, #1932] -.L2652: - ldr r3, .L2787 - movs r2, #1 - ldr r0, .L2787+12 - ldr r5, .L2787+8 - strh r2, [r3, #-204] @ movhi - bl FtlMapBlkWriteDumpData - ldr fp, [sp, #12] -.L2670: - ldr r3, .L2787+4 - movw r9, #65535 - ldr r1, [r5, #1764] - movs r6, #0 - ldr r7, [sp, #20] - ldrh r8, [r3, #2840] - ldrb r0, [r3, #76] @ zero_extendqisi2 - str r6, [sp, #16] -.L2671: - uxth r3, r6 - cmp r3, r8 - bcs .L2783 - ldrh r3, [r7, #2]! - cmp r3, r9 - beq .L2672 - 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 .L2673 - cbz r0, .L2673 - orr r3, r3, #-2147483648 - str r3, [r2, #4] -.L2673: - ldr r3, [sp, #16] - add ip, r3, #1 - uxth r3, ip - str r3, [sp, #16] -.L2672: - adds r6, r6, #1 - b .L2671 -.L2783: - ldr r0, [r5, #1764] - ldr r1, [sp, #16] - ldr r2, [sp, #24] - bl FlashReadPages - movs r3, #0 -.L2777: - str r3, [sp, #28] - ldr r2, [sp, #16] - ldrh r3, [sp, #28] - cmp r3, r2 - bcs .L2784 - ldr r3, [sp, #28] - movs r6, #36 - ldr r9, [r5, #1764] - 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 .L2676 - bne .L2677 - ldr r3, [sp, #32] - cmp r0, r3 - bcc .L2676 -.L2677: - cmp fp, r10 - bne .L2678 - ldr r3, [sp, #8] - cmp r0, r3 - beq .L2679 -.L2678: - ldr r3, [r9, r6] - adds r3, r3, #1 - beq .L2680 - ldr r8, [r8, #12] - movw r3, #61589 - ldrh r2, [r8] - cmp r2, r3 - bne .L2687 - ldr r3, [r8, #4] - adds r7, r3, #1 + .pad #44 + sub sp, sp, #44 + mov r7, r1 + mov r5, r0 + mov r9, r3 + str r2, [sp, #36] + ldr r2, .L2736+4 + ldrh r1, [r2, #124] + ldrh r4, [r2, #126] + ldr r2, .L2736+8 + smulbb r4, r1, r4 + ldr r1, [r2, #3988] + mov r8, r2 + str r1, [sp, #8] + ldr r1, [r2, #4020] + uxth r0, r4 + subs r6, r0, #1 + sub r4, r0, #16 + mul fp, r0, r7 + uxth r6, r6 + str r1, [sp, #12] +.L2722: + cmp r6, r4 + ble .L2735 + movs r1, #1 + add r3, r6, fp + mov r0, sp + mov r2, r1 + lsls r3, r3, #10 str r3, [sp, #4] - beq .L2682 - mov r0, r3 - ldr r1, [r5, #1032] - bl ftl_cmp_data_ver - cbz r0, .L2682 - ldr r3, [sp, #4] - adds r3, r3, #1 - str r3, [r5, #1032] -.L2682: - ldr r7, [r8, #8] - add r1, sp, #56 - ldr r3, [r8, #12] - movs r2, #0 - mov r0, r7 - str r3, [sp, #52] - bl log2phys - ldr r1, [r5, #1932] - adds r0, r1, #1 - beq .L2683 - ldr r0, [sp, #4] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L2683 - ldr r3, [sp, #52] - adds r2, r3, #1 - beq .L2684 - ldr r0, [r5, #1764] - movs r2, #0 - movs r1, #1 - add r0, r0, r6 - ldr r9, [r0, #12] - str r3, [r0, #4] bl FlashReadPages - ldr r2, [r5, #1764] - ldr r3, [r9, #4] - add ip, r2, r6 - str r3, [sp, #36] - ldr r3, [r2, r6] + ldr r3, [sp] adds r3, r3, #1 - bne .L2685 - b .L2686 -.L2684: - ldr r3, [sp, #60] - ldr r2, [sp, #56] + beq .L2723 + ldr r3, [r8, #4020] + ldrh r2, [r3] + movw r3, #61664 cmp r2, r3 - bne .L2687 - mov r0, r7 - add r1, sp, #52 - movs r2, #1 - bl log2phys -.L2687: - ldrh r0, [r4] - b .L2776 -.L2685: - ldr r8, [r9, #8] - cmp r8, r7 - bne .L2686 - ldr r0, [r5, #1932] - 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, .L2686 - ldr r3, [sp, #56] - ldr r1, [sp, #60] - cmp r3, r1 - beq .L2692 - ldr r1, [sp, #52] - cmp r3, r1 - beq .L2686 - adds r0, r3, #1 - beq .L2690 - str r3, [ip, #4] - mov r0, ip - movs r1, #1 - movs r2, #0 - ldr r9, [ip, #12] - bl FlashReadPages - b .L2691 -.L2690: - str r3, [r2, r6] -.L2691: - ldr r3, [r5, #1764] - ldr r3, [r3, r6] - adds r3, r3, #1 - beq .L2692 - ldr r6, [r9, #4] - ldr r0, [r5, #1932] - mov r1, r6 - bl ftl_cmp_data_ver - cbz r0, .L2692 - ldr r0, [sp, #36] - mov r1, r6 - bl ftl_cmp_data_ver - cbz r0, .L2686 -.L2692: - mov r0, r8 - ldr r1, [sp, #52] - bl FtlReUsePrevPpa -.L2686: - ldrh r0, [r4] - mov r3, #-1 - str r3, [sp, #52] - bl decrement_vpc_count - b .L2694 -.L2788: - .align 2 -.L2787: - .word .LANCHOR4 - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR2+1868 -.L2683: - ldr r3, [sp, #60] - ldr r2, [sp, #56] - cmp r2, r3 - beq .L2694 - mov r0, r7 - add r1, sp, #60 - movs r2, #1 - bl log2phys - ldr r8, [sp, #56] - cmp r8, #-1 - beq .L2694 - ldr r3, [sp, #52] - cmp r8, r3 - beq .L2694 - ubfx r0, r8, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r5, #836] - cmp r3, r0 - beq .L2697 - ldrh r3, [r5, #884] - cmp r3, r0 - beq .L2697 - ldrh r3, [r5, #932] - cmp r3, r0 - bne .L2694 -.L2697: - ldr r3, .L2789 - movs r1, #1 - movs r2, #0 - ldr r0, [r3, #1764] - str r8, [r0, #4] - ldr r6, [r0, #12] - bl FlashReadPages - ldr r3, .L2789 - ldr r1, [r6, #4] - ldr r3, [r3, #1764] - ldr r3, [r3] - adds r3, r3, #1 - beq .L2694 - ldr r0, [sp, #4] - bl ftl_cmp_data_ver - cbnz r0, .L2694 - mov r0, r7 - add r1, sp, #56 - movs r2, #1 - bl log2phys -.L2694: - ldr r0, [sp, #52] - adds r1, r0, #1 - beq .L2676 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r3, [r5, #816] - ldrh r3, [r3, r0, lsl #1] - mov r1, r0 - cbz r3, .L2698 -.L2776: - bl decrement_vpc_count - b .L2676 -.L2698: - ldr r0, .L2789+4 - bl printk - b .L2676 -.L2680: - ldrh r3, [r4] - mov r1, r7 - ldr r2, .L2789+8 - ldr r0, .L2789+12 - strh r3, [r2, #-206] @ movhi - ldr r2, [sp, #4] - bl printk - ldr r3, .L2789+8 - ldr r3, [r3, #-200] - cmp r3, #31 - bhi .L2699 - ldr r2, .L2789+8 - ldr r1, [sp, #60] - add r2, r2, r3, lsl #2 - adds r3, r3, #1 - str r1, [r2, #-196] - ldr r2, .L2789+8 - str r3, [r2, #-200] -.L2699: - ldrh r0, [r4] - bl decrement_vpc_count - ldr r3, [r5, #1932] - adds r2, r3, #1 - bne .L2700 - ldr r3, [sp, #4] - b .L2775 -.L2700: - ldr r2, [sp, #4] - cmp r3, r2 - bls .L2676 + bne .L2723 + cbz r5, .L2730 + cbz r7, .L2731 +.L2727: + ldr r1, [r8, #3988] + mov r2, r10 + mov r0, r5 + bl ftl_memcpy + movs r2, #4 + ldr r0, .L2736+12 + mov r1, r5 mov r3, r2 -.L2775: - str r3, [r5, #1932] -.L2676: - ldr r3, [sp, #28] - adds r3, r3, #1 - b .L2777 -.L2784: - ldrb r3, [r4, #8] @ zero_extendqisi2 - add fp, fp, #1 - cmp r3, #1 - uxth fp, fp - ldr r3, .L2789+16 - bne .L2702 - ldrb r2, [r3, #76] @ zero_extendqisi2 - cbz r2, .L2702 - ldrh r2, [r3, #2912] - cmp r2, fp - bne .L2702 - cmp r10, fp - beq .L2679 -.L2702: - ldrh r3, [r3, #2910] - cmp fp, r3 - bne .L2670 - ldr r2, .L2789+16 - movw r0, #65535 - movs r3, #0 - strh fp, [r4, #2] @ movhi - strh r3, [r4, #4] @ movhi - ldrh r1, [r2, #2840] -.L2703: - uxth r2, r3 - cmp r2, r1 - bcs .L2769 - ldr r6, [sp, #20] - adds r3, r3, #1 - ldrh r5, [r6, #2]! - cmp r5, r0 - str r6, [sp, #20] - beq .L2703 - strb r2, [r4, #6] - b .L2769 -.L2679: - ldrb r3, [sp, #8] @ zero_extendqisi2 - mov r0, r4 - ldr r2, [sp, #8] - mov r1, r10 - strh r10, [r4, #2] @ movhi - strb r3, [r4, #6] -.L2778: - bl ftl_sb_update_avl_pages -.L2769: + bl rknand_print_hex movs r0, #0 - add sp, sp, #68 + b .L2724 +.L2731: + ldr r6, .L2736+8 + mov lr, #1 +.L2725: + ldr r3, [r8, #4008] + uxth r4, r7 + adds r7, r7, #1 + cmp r4, r3 + bcs .L2727 + ldr r2, [r6, #3988] + lsr ip, r4, #5 + and r0, r4, #31 + lsl r3, lr, r0 + ldr r1, [r2, ip, lsl #2] + orrs r3, r3, r1 + str r3, [r2, ip, lsl #2] + b .L2725 +.L2723: + subs r6, r6, #1 + uxth r6, r6 + b .L2722 +.L2735: + mov r0, #-1 + b .L2724 +.L2730: + mov r0, r5 +.L2724: + ldr r2, [sp, #36] + ldr r3, [r9] + cmp r2, r3 + beq .L2729 + bl __stack_chk_fail +.L2729: + add sp, sp, #44 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L2790: +.L2737: .align 2 -.L2789: - .word .LANCHOR2 - .word .LC130 - .word .LANCHOR4 - .word .LC131 +.L2736: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR2 + .word .LC135 .fnend - .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .size FlashReadFacBbtData, .-FlashReadFacBbtData + .align 1 + .global FlashGetBadBlockList + .thumb + .thumb_func + .type FlashGetBadBlockList, %function +FlashGetBadBlockList: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L2748 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + mov r5, r0 + ldr r3, [r3, #692] + ldr r6, .L2748+4 + ldrb r4, [r3, #13] @ zero_extendqisi2 + ldrh r3, [r3, #14] + ldr r0, [r6, #4016] + smulbb r4, r4, r3 + uxth r4, r4 + adds r2, r4, #7 + asrs r2, r2, #3 + bl FlashReadFacBbtData + adds r0, r0, #1 + bne .L2739 +.L2743: + movs r3, #0 + b .L2740 +.L2739: + movs r1, #0 + lsr lr, r4, #4 + mov ip, #1 + subs r4, r4, #1 + mov r3, r1 +.L2741: + uxth r2, r1 + cmp r2, r4 + bge .L2740 + ldr r7, [r6, #4016] + 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 .L2741 + b .L2743 +.L2740: + movw r2, #65535 + movs r0, #0 + strh r2, [r5, r3, lsl #1] @ movhi + pop {r4, r5, r6, r7, r8, pc} +.L2749: + .align 2 +.L2748: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size FlashGetBadBlockList, .-FlashGetBadBlockList + .align 1 + .global FtlMakeBbt + .thumb + .thumb_func + .type FtlMakeBbt, %function +FtlMakeBbt: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + ldr r4, .L2772 + ldr r5, [r4, #4052] + cmp r5, #0 + bne .L2751 + bl FtlBbtMemInit + ldr r7, .L2772+4 + bl FtlLoadFactoryBbt + addw r8, r4, #1964 + addw r9, r4, #1946 + mov fp, r4 + mov r10, r7 +.L2752: + ldrh r3, [r4, #1826] + cmp r5, r3 + bcs .L2770 + ldr r3, [r7, #1800] + movw r2, #65535 + ldr r0, [r7, #1776] + str r3, [sp] + str r3, [r7, #4064] + ldrh r3, [r9, #2]! + str r0, [r7, #4060] + cmp r3, r2 + beq .L2753 + ldrh ip, [fp, #1870] + movs r1, #1 + ldr r0, .L2772+8 + mov r2, r1 + mla ip, ip, r5, r3 + lsl r3, ip, #10 + str ip, [sp] + str r3, [r7, #4056] + bl FlashReadPages + ldrh r2, [fp, #1870] + ldr r0, [r8] + adds r2, r2, #7 + ldr r1, [r7, #4060] + asrs r2, r2, #3 + bl ftl_memcpy + ldr ip, [sp] + b .L2754 +.L2753: + mov r1, r5 + bl FlashGetBadBlockList + ldr r0, [r7, #4060] + ldr r1, [r8] + bl FtlBbt2Bitmap + ldrh r6, [fp, #1870] +.L2756: + subs r6, r6, #1 + uxth r6, r6 +.L2755: + ldrh r0, [r4, #1870] + smlabb r0, r0, r5, r6 + uxth r0, r0 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L2756 + movs r1, #0 + movs r2, #16 + strh r6, [r9] @ movhi + ldr r0, [r10, #1800] + bl ftl_memset + movw r3, #61664 + ldr r2, [sp] + strh r3, [r2] @ movhi + movs r3, #0 + str r3, [r2, #4] + ldrh r3, [r9] + ldrh ip, [fp, #1870] + strh r3, [r2, #2] @ movhi + ldrh r3, [r9] + ldrh r2, [r10, #1864] + ldr r1, [r8] + mla ip, ip, r5, r3 + lsls r2, r2, #2 + ldr r0, [r10, #4060] + lsl r3, ip, #10 + str ip, [sp, #4] + str r3, [r10, #4056] + bl ftl_memcpy + movs r1, #1 + ldr r0, .L2772+8 + mov r2, r1 + bl FlashEraseBlocks + movs r1, #1 + ldr r0, .L2772+8 + mov r3, r1 + mov r2, r1 + bl FlashProgPages + ldr r3, [r10, #4052] + adds r3, r3, #1 + ldr ip, [sp, #4] + bne .L2754 + uxth r0, ip + bl FtlBbmMapBadBlock + b .L2755 +.L2754: + uxth r0, ip + adds r5, r5, #1 + bl FtlBbmMapBadBlock + add r8, r8, #4 + b .L2752 +.L2770: + movs r5, #0 +.L2759: + ldrh r3, [r4, #1886] + uxth r0, r5 + ldr r6, .L2772 + adds r5, r5, #1 + cmp r3, r0 + bls .L2771 + bl FtlBbmMapBadBlock + b .L2759 +.L2771: + ldrh r5, [r6, #1948] + movw r7, #65535 + subs r5, r5, #1 + uxth r5, r5 +.L2761: + ldrh r3, [r4, #1948] + subs r3, r3, #48 + cmp r5, r3 + ble .L2765 + mov r0, r5 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L2762 + mov r0, r5 + bl FlashTestBlk + cbz r0, .L2763 + mov r0, r5 + bl FtlBbmMapBadBlock + b .L2762 +.L2763: + ldrh r3, [r6, #1936] + cmp r3, r7 + bne .L2764 + strh r5, [r6, #1936] @ movhi + b .L2762 +.L2764: + ldr r3, .L2772 + strh r5, [r3, #1940] @ movhi + b .L2765 +.L2762: + subs r5, r5, #1 + uxth r5, r5 + b .L2761 +.L2765: + ldr r0, [r4, #4056] + movs r5, #0 + ldrh r3, [r4, #1936] + movs r2, #2 + str r5, [r4, #1944] + movs r1, #1 + strh r5, [r4, #1938] @ movhi + lsls r3, r3, #10 + str r3, [r0, #4] + ldrh r3, [r4, #1940] + lsls r3, r3, #10 + str r3, [r0, #40] + bl FlashEraseBlocks + ldrh r0, [r4, #1936] + bl FtlBbmMapBadBlock + ldrh r0, [r4, #1940] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [r4, #1944] + ldrh r2, [r4, #1940] + adds r3, r3, #1 + str r3, [r4, #1944] + ldrh r3, [r4, #1936] + strh r5, [r4, #1938] @ movhi + strh r2, [r4, #1936] @ movhi + strh r3, [r4, #1940] @ movhi + bl FtlBbmTblFlush +.L2751: + movs r0, #0 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2773: + .align 2 +.L2772: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR2+4052 + .fnend + .size FtlMakeBbt, .-FtlMakeBbt + .align 1 + .global log2phys + .thumb + .thumb_func + .type log2phys, %function +log2phys: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r9, r0 + ldr r6, .L2790 + mov r10, r1 + str r2, [sp, #4] + ldr r3, [r6, #1932] + ldrh r8, [r6, #1880] + cmp r0, r3 + bcs .L2775 + add r3, r8, #7 + ldr r2, .L2790+4 + lsr r5, r0, r3 + str r3, [sp] + ldrh r1, [r6, #1910] + movs r4, #0 + ldr fp, [r2, #-56] + mov r8, r2 + uxth r5, r5 + movs r2, #12 + b .L2776 +.L2775: + ldr r3, [sp, #4] + mov r0, #-1 + cmp r3, #0 + bne .L2777 + str r0, [r1] + b .L2777 +.L2781: + adds r4, r4, #1 + mla r0, r2, r4, fp + ldrh r0, [r0, #-12] + cmp r0, r5 + beq .L2778 +.L2776: + uxth r7, r4 + cmp r7, r1 + bcc .L2781 + 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 .L2789 +.L2782: + ldr r3, [r8, #1848] + ldr fp, .L2790+4 + ldr r8, [r3, r5, lsl #2] + cmp r8, #0 + bne .L2783 + ldr r2, [fp, #-56] + movs r1, #255 + add r2, r2, r4 + ldr r0, [r2, #8] + ldrh r2, [r6, #1882] + bl ftl_memset + ldr r2, [fp, #-56] + strh r5, [r2, r4] @ movhi + ldr r2, [fp, #-56] + add r4, r4, r2 + str r8, [r4, #4] +.L2778: + ldr r3, [sp] + movs r2, #1 + ldr r1, [sp, #4] + lsls r2, r2, r3 + movs r3, #12 + subs r2, r2, #1 + and r9, r9, r2 + ldr r2, .L2790+4 + uxth r9, r9 + cbnz r1, .L2779 + ldr r1, [r2, #-56] + mla r3, r3, r7, r1 + ldr r3, [r3, #8] + ldr r3, [r3, r9, lsl #2] + str r3, [r10] + b .L2780 +.L2779: + muls r3, r7, r3 + ldr r1, [r2, #-56] + ldr r0, [r10] + add r1, r1, r3 + ldr r1, [r1, #8] + str r0, [r1, r9, lsl #2] + ldr r1, [r2, #-56] + strh r5, [r2, #-52] @ movhi + add r3, r3, r1 + ldr r1, [r3, #4] + orr r1, r1, #-2147483648 + str r1, [r3, #4] +.L2780: + ldr r2, [r2, #-56] + movs r3, #12 + mla r7, r3, r7, r2 + ldr r3, [r7, #4] + adds r2, r3, #1 + beq .L2787 + adds r3, r3, #1 + str r3, [r7, #4] + b .L2787 +.L2789: + ldr r3, [r2, #4] + cmp r3, #0 + bge .L2782 + bl flush_l2p_region + b .L2782 +.L2783: + ldr r2, [fp, #-56] + movs r1, #1 + addw r0, fp, #4052 + str r8, [fp, #4056] + add r2, r2, r4 + ldr r2, [r2, #8] + str r2, [fp, #4060] + ldr r2, [fp, #1800] + str r2, [fp, #4064] + mov r2, r1 + bl FlashReadPages + ldr r2, [fp, #4064] + ldrh r2, [r2, #8] + cmp r2, r5 + beq .L2784 + mov r1, r5 + mov r2, r8 + ldr r0, .L2790+8 + bl printk + movs r2, #4 + ldr r0, .L2790+12 + mov r3, r2 + ldr r1, [fp, #4064] + bl rknand_print_hex + ldrh r3, [r6, #1908] + ldr r0, .L2790+16 + movs r2, #4 + ldr r1, [fp, #1848] + bl rknand_print_hex + movs r3, #1 + str r3, [r6, #4052] + b .L2785 +.L2784: + ldr r2, [fp, #4052] + cmp r2, #256 + bne .L2785 + mov r1, r5 + mov r2, r8 + ldr r0, .L2790+20 + bl printk + ldr r3, [fp, #-56] + addw r0, fp, #1868 + mov r1, r5 + add r3, r3, r4 + ldr r2, [r3, #8] + bl FtlMapWritePage +.L2785: + ldr r3, .L2790+4 + movs r1, #0 + ldr r3, [r3, #-56] + adds r2, r3, r4 + str r1, [r2, #4] + strh r5, [r3, r4] @ movhi + b .L2778 +.L2787: + movs r0, #0 +.L2777: + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2791: + .align 2 +.L2790: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC136 + .word .LC100 + .word .LC137 + .word .LC138 + .fnend + .size log2phys, .-log2phys .align 1 .global FtlWriteDumpData .thumb @@ -17306,110 +17593,120 @@ FtlRecoverySuperblock: .type FtlWriteDumpData, %function FtlWriteDumpData: .fnstart - @ args = 0, pretend = 0, frame = 40 + @ args = 0, pretend = 0, frame = 48 @ 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} - .pad #40 - sub sp, sp, #40 - ldr r4, .L2809 - ldr r3, [r4, #744] + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r7, .L2811 + ldr r8, .L2811+12 + ldr r3, [r7] + str r3, [sp, #44] + ldr r3, [r8, #4052] cmp r3, #0 - bne .L2791 - ldrh r2, [r4, #840] + bne .L2792 + ldr r4, .L2811+4 + ldrh r2, [r4, #-196] cmp r2, #0 - beq .L2793 - ldrb r3, [r4, #844] @ zero_extendqisi2 + beq .L2794 + ldrb r3, [r4, #-192] @ zero_extendqisi2 cmp r3, #0 - bne .L2793 - ldr r7, .L2809+4 - ldrb r1, [r4, #843] @ zero_extendqisi2 - ldrh r3, [r7, #2910] + bne .L2794 + ldrb r1, [r4, #-193] @ zero_extendqisi2 + ldrh r3, [r8, #1872] muls r3, r1, r3 cmp r2, r3 - beq .L2793 - ldrb r9, [r4, #846] @ zero_extendqisi2 - ldr r6, [r7, #2968] - ldrh r8, [r7, #2840] - cmp r9, #0 - bne .L2791 + beq .L2794 + ldrb r10, [r4, #-190] @ zero_extendqisi2 + ldr r6, [r8, #1932] + ldrh r9, [r8, #1804] + cmp r10, #0 + bne .L2792 subs r6, r6, #1 - mov r1, sp - mov r2, r9 + add r1, sp, #4 + mov r2, r10 mov r0, r6 bl log2phys - ldr r3, [sp] ldr r5, [r4, #1800] ldr r0, [r4, #1776] - str r3, [sp, #8] + ldr r3, [sp, #4] + str r6, [sp, #24] + str r0, [sp, #16] + str r3, [sp, #12] adds r3, r3, #1 - str r6, [sp, #20] - str r0, [sp, #12] - str r5, [sp, #16] - str r9, [r5, #4] - beq .L2795 - add r0, sp, #4 + str r5, [sp, #20] + str r10, [r5, #4] + beq .L2796 movs r1, #1 - mov r2, r9 + mov r2, r10 + add r0, sp, #8 bl FlashReadPages - b .L2796 -.L2795: - movs r1, #255 - ldrh r2, [r7, #2920] - bl ftl_memset + b .L2797 .L2796: - movs r7, #0 - ldr r10, .L2809 - lsl r8, r8, #2 - movw r3, #61589 - mov r9, r7 - strh r3, [r5] @ movhi + movs r1, #255 + ldrh r2, [r8, #1882] + bl ftl_memset .L2797: - cmp r7, r8 - beq .L2798 - ldrh r3, [r4, #840] - cbz r3, .L2798 - ldr r3, [sp, #8] - adds r7, r7, #1 + mov r8, #0 + ldr fp, .L2811+4 + lsl r9, r9, #2 + movw r3, #61589 + mov r10, r8 + strh r3, [r5] @ movhi +.L2798: + cmp r8, r9 + beq .L2799 + ldrh r3, [r4, #-196] + cbz r3, .L2799 + ldr r3, [sp, #12] + add r8, r8, #1 str r6, [r5, #8] - ldr r0, .L2809+8 + ldr r0, .L2811+8 str r3, [r5, #12] - ldrh r3, [r10, #836] + ldrh r3, [fp, #-200] strh r3, [r5, #2] @ movhi bl get_new_active_ppa - ldr r3, [r10, #1032] + ldr r3, [fp, #-4] movs r1, #1 - str r0, [sp, #8] - add r0, sp, #4 + str r0, [sp, #12] + add r0, sp, #8 str r3, [r5, #4] adds r3, r3, #1 adds r2, r3, #1 mov r2, #0 it eq - moveq r3, r9 - str r3, [r10, #1032] + moveq r3, r10 + str r3, [fp, #-4] mov r3, r2 bl FlashProgPages - ldrh r0, [r4, #836] + ldrh r0, [r4, #-200] bl decrement_vpc_count - b .L2797 -.L2798: + b .L2798 +.L2799: movs r3, #1 - b .L2808 -.L2793: + b .L2810 +.L2794: movs r3, #0 -.L2808: - strb r3, [r4, #846] -.L2791: - add sp, sp, #40 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} .L2810: + strb r3, [r4, #-190] +.L2792: + ldr r2, [sp, #44] + ldr r3, [r7] + cmp r2, r3 + beq .L2803 + bl __stack_chk_fail +.L2803: + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L2812: .align 2 -.L2809: +.L2811: + .word __stack_chk_guard .word .LANCHOR2 + .word .LANCHOR2-200 .word .LANCHOR0 - .word .LANCHOR2+836 .fnend .size FtlWriteDumpData, .-FtlWriteDumpData .align 1 @@ -17425,131 +17722,34 @@ l2p_flush: .save {r3, r4, r5, r6, r7, lr} bl FtlWriteDumpData movs r4, #0 - ldr r5, .L2816 + ldr r5, .L2818 movs r7, #12 - ldr r6, .L2816+4 -.L2812: - ldrh r3, [r5, #2950] + ldr r6, .L2818+4 +.L2814: + ldrh r3, [r5, #1910] uxth r0, r4 cmp r3, r0 - bls .L2815 - ldr r3, [r6, #980] + bls .L2817 + ldr r3, [r6, #-56] mla r3, r7, r0, r3 ldr r3, [r3, #4] cmp r3, #0 - bge .L2813 + bge .L2815 bl flush_l2p_region -.L2813: - adds r4, r4, #1 - b .L2812 .L2815: + adds r4, r4, #1 + b .L2814 +.L2817: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L2817: +.L2819: .align 2 -.L2816: +.L2818: .word .LANCHOR0 .word .LANCHOR2 .fnend .size l2p_flush, .-l2p_flush .align 1 - .global FtlVpcCheckAndModify - .thumb - .thumb_func - .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 r6, .L2832 - ldr r1, .L2832+4 - ldr r0, .L2832+8 - bl printk - ldr r5, .L2832+12 - ldrh r2, [r6, #2850] - movs r1, #0 - ldr r0, [r5, #1824] - lsls r2, r2, #1 - bl ftl_memset -.L2819: - ldr r3, [r6, #2968] - cmp r4, r3 - bcs .L2830 - mov r0, r4 - add r1, sp, #4 - movs r2, #0 - bl log2phys - ldr r0, [sp, #4] - adds r3, r0, #1 - beq .L2820 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r5, #1824] - ldrh r3, [r2, r0, lsl #1] - adds r3, r3, #1 - strh r3, [r2, r0, lsl #1] @ movhi -.L2820: - adds r4, r4, #1 - b .L2819 -.L2830: - ldr r7, .L2832+12 - mov r8, #0 - movw r9, #65535 -.L2822: - ldrh r3, [r6, #2848] - uxth r4, r8 - cmp r3, r4 - bls .L2831 - ldr r3, [r5, #816] - ldrh r2, [r3, r4, lsl #1] - ldr r3, [r5, #1824] - ldrh r3, [r3, r4, lsl #1] - cmp r2, r3 - beq .L2824 - cmp r2, r9 - beq .L2824 - ldr r0, .L2832+16 - mov r1, r4 - bl printk - ldrh r3, [r7, #836] - cmp r3, r4 - beq .L2824 - ldrh r3, [r7, #932] - cmp r3, r4 - beq .L2824 - ldrh r3, [r7, #884] - cmp r3, r4 - beq .L2824 - ldr r3, [r7, #1824] - mov r0, r4 - ldrh r2, [r3, r4, lsl #1] - ldr r3, [r7, #816] - strh r2, [r3, r4, lsl #1] @ movhi - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L2824: - add r8, r8, #1 - b .L2822 -.L2831: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L2833: - .align 2 -.L2832: - .word .LANCHOR0 - .word .LANCHOR3+16 - .word .LC132 - .word .LANCHOR2 - .word .LC133 - .fnend - .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify - .align 1 .global allocate_new_data_superblock .thumb .thumb_func @@ -17558,96 +17758,2674 @@ allocate_new_data_superblock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - ldr r4, .L2860 - ldrh r5, [r0] - ldr r3, [r4, #744] + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r7, .L2846 + ldrh r6, [r0] + ldr r3, [r7, #4052] cmp r3, #0 - bne .L2835 + bne .L2821 movw r3, #65535 - cmp r5, r3 - beq .L2836 - ldr r3, [r4, #816] - mov r0, r5 - ldrh r3, [r3, r5, lsl #1] - cbz r3, .L2837 - bl INSERT_DATA_LIST - b .L2836 -.L2837: - bl INSERT_FREE_LIST -.L2836: - ldr r2, .L2860 - movs r3, #0 - strb r3, [r6, #8] - add r3, r2, #884 cmp r6, r3 - beq .L2838 - ldr r3, .L2860+4 - ldrh r1, [r3, #2860] - cmp r1, #1 - beq .L2838 - ldrb r0, [r3, #76] @ zero_extendqisi2 - cbz r0, .L2839 -.L2838: - movs r3, #1 - strb r3, [r6, #8] - b .L2840 -.L2839: - add r0, r2, #836 - cmp r6, r0 - bne .L2840 - cmp r1, #3 - beq .L2842 - ldr r2, [r2, #1120] + ldr r5, .L2846+4 + beq .L2822 + ldr r3, [r5, #-220] + mov r0, r6 + ldrh r3, [r3, r6, lsl #1] + cbz r3, .L2823 + bl INSERT_DATA_LIST + b .L2822 +.L2823: + bl INSERT_FREE_LIST +.L2822: + movs r3, #0 + strb r3, [r4, #8] + ldr r3, .L2846+4 + sub r2, r3, #152 + cmp r4, r2 + beq .L2824 + ldrh r2, [r7, #1824] cmp r2, #1 - bne .L2843 -.L2842: - movs r2, #1 - strb r2, [r4, #844] -.L2843: - ldr r3, [r3, #2832] - cbz r3, .L2840 - ldr r3, [r4, #1052] - cmp r3, #29 + beq .L2824 + ldr r1, .L2846 + ldrb r1, [r1, #140] @ zero_extendqisi2 + cbz r1, .L2825 +.L2824: + movs r3, #1 + strb r3, [r4, #8] + b .L2826 +.L2825: + sub r1, r3, #200 + cmp r4, r1 + bne .L2826 + cmp r2, #3 + beq .L2828 + ldr r3, [r3, #88] + cmp r3, #1 + bne .L2829 +.L2828: + movs r3, #1 + strb r3, [r5, #-192] +.L2829: + ldr r3, [r7, #1796] + cbz r3, .L2826 + ldr r3, [r5, #16] + cmp r3, #39 ittt ls movls r2, #1 - ldrls r3, .L2860 - strbls r2, [r3, #844] -.L2840: - ldrh r0, [r4, #1920] + ldrls r3, .L2846+4 + strbls r2, [r3, #-192] +.L2826: + ldrh r0, [r5, #1920] movw r3, #65535 cmp r0, r3 - beq .L2845 - cmp r5, r0 - bne .L2846 - ldr r3, .L2860 - ldr r3, [r3, #816] + beq .L2831 + cmp r6, r0 + bne .L2832 + ldr r3, .L2846+4 + ldr r3, [r3, #-220] ldrh r3, [r3, r0, lsl #1] - cbz r3, .L2847 -.L2846: + cbz r3, .L2833 +.L2832: bl update_vpc_list -.L2847: +.L2833: movw r3, #65535 - strh r3, [r4, #1920] @ movhi -.L2845: - mov r0, r6 + strh r3, [r5, #1920] @ movhi +.L2831: + mov r0, r4 bl allocate_data_superblock bl l2p_flush movs r0, #0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2835: +.L2821: movs r0, #0 - pop {r4, r5, r6, pc} -.L2861: + pop {r3, r4, r5, r6, r7, pc} +.L2847: .align 2 +.L2846: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size allocate_new_data_superblock, .-allocate_new_data_superblock + .align 1 + .global FtlCheckVpc + .thumb + .thumb_func + .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 + movs r4, #0 + ldr r6, .L2869 + ldr r1, .L2869+4 + ldr r0, .L2869+8 + ldr r3, [r6] + ldr r5, .L2869+12 + ldr r8, .L2869+36 + str r3, [sp, #4] + bl printk + ldr r0, .L2869+16 + movs r1, #0 + mov r2, #8192 + bl memset +.L2849: + ldr r3, [r5, #1932] + ldr r7, .L2869+12 + cmp r4, r3 + bcs .L2867 + mov r0, r4 + mov r1, sp + movs r2, #0 + bl log2phys + ldr r0, [sp] + adds r3, r0, #1 + beq .L2850 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + add r0, r8, r0, lsl #1 + ldrh r3, [r0, #-204] + adds r3, r3, #1 + strh r3, [r0, #-204] @ movhi +.L2850: + adds r4, r4, #1 + b .L2849 +.L2867: + ldr r9, .L2869+20 + movs r4, #0 + ldr r8, .L2869+36 +.L2852: + ldrh r3, [r7, #1812] + uxth r1, r4 + ldr r5, .L2869+20 + cmp r3, r1 + bls .L2868 + ldr r3, [r9, #-220] + ldrh r2, [r3, r1, lsl #1] + add r3, r8, r1, lsl #1 + ldrh r3, [r3, #-204] + cmp r2, r3 + beq .L2853 + ldr r0, .L2869+24 + bl printk +.L2853: + adds r4, r4, #1 + b .L2852 +.L2868: + ldr r4, [r5, #-208] + cbz r4, .L2848 + ldr r3, [r5, #-228] + movs r7, #0 + ldrh r8, [r5, #-204] + mov r10, #6 + subs r4, r4, r3 + ldr r3, .L2869+28 + ldr r9, .L2869+36 + asrs r4, r4, #1 + muls r4, r3, r4 + uxth r4, r4 +.L2856: + uxth r3, r7 + cmp r3, r8 + bcs .L2848 + ldr r3, [r5, #-220] + ldrh r2, [r3, r4, lsl #1] + cbz r2, .L2857 + add r3, r9, r4, lsl #1 + ldr r0, .L2869+32 + mov r1, r4 + ldrh r3, [r3, #-204] + bl printk +.L2857: + mul r4, r10, r4 + ldr r3, [r5, #-228] + adds r7, r7, #1 + ldrh r4, [r3, r4] + movw r3, #65535 + cmp r4, r3 + bne .L2856 +.L2848: + ldr r2, [sp, #4] + ldr r3, [r6] + cmp r2, r3 + beq .L2860 + bl __stack_chk_fail .L2860: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L2870: + .align 2 +.L2869: + .word __stack_chk_guard + .word .LANCHOR3+72 + .word .LC107 + .word .LANCHOR0 + .word .LANCHOR4-204 + .word .LANCHOR2 + .word .LC139 + .word -1431655765 + .word .LC140 + .word .LANCHOR4 + .fnend + .size FtlCheckVpc, .-FtlCheckVpc + .align 1 + .global Ftlscanalldata + .thumb + .thumb_func + .type Ftlscanalldata, %function +Ftlscanalldata: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #32 + sub sp, sp, #32 + ldr r6, .L2887 + movs r1, #0 + ldr r0, .L2887+4 + movs r4, #0 + ldr r8, .L2887+24 + ldr r3, [r6] + ldr r5, .L2887+8 + str r3, [sp, #28] + bl printk +.L2872: + ldr r3, [r8, #1932] + cmp r4, r3 + bcs .L2886 + mov r0, r4 + add r1, sp, #24 + movs r2, #0 + bl log2phys + ubfx r3, r4, #0, #11 + cbnz r3, .L2873 + ldr r0, .L2887+12 + mov r1, r4 + ldr r2, [sp, #24] + bl printk +.L2873: + ldr r3, [sp, #24] + adds r2, r3, #1 + beq .L2875 + str r3, [r5, #4056] + movs r2, #0 + ldr r3, [r5, #1776] + movs r1, #1 + ldr r7, [r5, #1800] + ldr r0, .L2887+16 + str r3, [r5, #4060] + str r2, [r5, #4052] + str r4, [r5, #4068] + str r7, [r5, #4064] + bl FlashReadPages + ldr r3, [r5, #4052] + ldr r2, .L2887+8 + cmp r3, #256 + beq .L2876 + adds r3, r3, #1 + beq .L2876 + ldr r3, [r7, #8] + cmp r3, r4 + beq .L2875 +.L2876: + ldr r3, [r2, #4064] + ldr r1, [r2, #4060] + 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, .L2887+20 + str r1, [sp, #16] + mov r1, r4 + ldr r2, [r2, #4056] + ldr r3, [r3] + bl printk +.L2875: + adds r4, r4, #1 + b .L2872 +.L2886: + ldr r2, [sp, #28] + ldr r3, [r6] + cmp r2, r3 + beq .L2879 + bl __stack_chk_fail +.L2879: + add sp, sp, #32 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L2888: + .align 2 +.L2887: + .word __stack_chk_guard + .word .LC141 + .word .LANCHOR2 + .word .LC142 + .word .LANCHOR2+4052 + .word .LC143 + .word .LANCHOR0 + .fnend + .size Ftlscanalldata, .-Ftlscanalldata + .align 1 + .global FtlReUsePrevPpa + .thumb + .thumb_func + .type FtlReUsePrevPpa, %function +FtlReUsePrevPpa: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + .pad #12 + mov r6, r0 + ubfx r0, r1, #10, #16 + str r1, [sp, #4] + bl P2V_block_in_plane + ldr r5, .L2898 + ldr r4, [r5, #-220] + ldrh r3, [r4, r0, lsl #1] + cbnz r3, .L2890 + ldr r4, [r5, #-208] + cbz r4, .L2891 + ldr r1, [r5, #-228] + mov lr, #6 + ldr r2, .L2898+4 + movw ip, #65535 + subs r4, r4, r1 + ldrh r7, [r5, #-204] + asrs r4, r4, #1 + muls r4, r2, r4 + uxth r4, r4 +.L2892: + uxth r2, r3 + cmp r2, r7 + bcs .L2891 + cmp r4, r0 + bne .L2893 + mov r1, r4 + ldr r0, .L2898+8 + bl List_remove_node + ldrh r3, [r5, #-204] + mov r0, r4 + subs r3, r3, #1 + strh r3, [r5, #-204] @ movhi + bl INSERT_DATA_LIST + ldr r2, [r5, #-220] + ldrh r3, [r2, r4, lsl #1] + adds r3, r3, #1 + strh r3, [r2, r4, lsl #1] @ movhi + b .L2891 +.L2893: + mul r4, lr, r4 + adds r3, r3, #1 + ldrh r4, [r1, r4] + cmp r4, ip + bne .L2892 + b .L2891 +.L2890: + adds r3, r3, #1 + strh r3, [r4, r0, lsl #1] @ movhi +.L2891: + mov r0, r6 + add r1, sp, #4 + movs r2, #1 + bl log2phys + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, pc} +.L2899: + .align 2 +.L2898: + .word .LANCHOR2 + .word -1431655765 + .word .LANCHOR2-208 + .fnend + .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .align 1 + .global FtlRecoverySuperblock + .thumb + .thumb_func + .type FtlRecoverySuperblock, %function +FtlRecoverySuperblock: + .fnstart + @ args = 0, pretend = 0, frame = 64 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L3061 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #68 + sub sp, sp, #68 + ldr r3, [r3] + movw r7, #65535 + mov r4, r0 + str r3, [sp, #60] + ldrh r3, [r0] + cmp r3, r7 + beq .L2902 + ldrh r3, [r0, #2] + movs r5, #0 + ldr r6, .L3061+4 + str r3, [sp, #12] + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r2, [sp, #12] + str r3, [sp, #28] + ldrh r3, [r6, #1872] + cmp r3, r2 + bne .L2903 + strh r5, [r0, #4] @ movhi + strb r5, [r0, #6] + b .L2902 +.L2903: + ldrh r0, [r0, #16] +.L2904: + cmp r0, r7 + add r5, r5, #1 + bne .L3056 + uxth r3, r5 + adds r3, r3, #8 + ldrh r0, [r4, r3, lsl #1] + b .L2904 +.L3056: + ldrb r1, [r4, #8] @ zero_extendqisi2 + cmp r1, #1 + bne .L2906 + bl FtlGetLastWrittenPage + adds r2, r0, #1 + mov r5, r0 + beq .L2907 + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbnz r3, .L3047 + ldr r3, .L3061+4 + add r3, r3, r0, lsl #1 + ldrh r7, [r3, #144] + b .L2981 +.L2906: + movs r1, #0 + bl FtlGetLastWrittenPage + adds r3, r0, #1 + mov r5, r0 + beq .L2907 +.L3047: + mov r7, r5 +.L2981: + ldr r3, .L3061+8 + movw r9, #65535 + ldrh ip, [r6, #1804] + mov r10, #36 + ldrh r0, [r6, #1884] + ldr r2, [r3, #1764] + ldr r8, [r3, #632] + 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 .L2909 +.L2907: + movs r3, #0 + strh r3, [r4, #2] @ movhi + strb r3, [r4, #6] + b .L2902 +.L2912: + ldrh r3, [lr, #2]! + cmp r3, r9 + beq .L2910 + ldr r1, [sp, #4] + orr r3, r7, r3, lsl #10 + mla r1, r10, r6, r1 + str r3, [r1, #4] + mov r3, r0 + 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 r3, [r1, #12] +.L2910: + adds r2, r2, #1 +.L2909: + uxth r3, r2 + cmp r3, ip + bcc .L2912 + ldrb r3, [r4, #8] @ zero_extendqisi2 + cmp r3, #1 + bne .L2984 + ldr r3, .L3061+4 + ldrb r1, [r3, #140] @ zero_extendqisi2 + adds r3, r1, #0 + it ne + movne r3, #1 + b .L3048 +.L2984: + movs r3, #0 +.L3048: + ldr r8, .L3061+8 + mov r1, r6 + str r3, [sp, #24] + mov fp, #0 + ldr r2, [sp, #24] + ldr r0, [r8, #1764] + bl FlashReadPages + ldr r3, [r8, #-4] + subs r3, r3, #1 + str r8, [sp, #8] + str r3, [sp, #4] + movw r3, #65535 + str r3, [sp, #16] +.L2914: + uxth r9, fp + cmp r9, r6 + bcs .L2921 + movs r1, #36 + ldr r0, [r8, #1764] + mul r1, r1, fp + add lr, r0, r1 + ldr r1, [r0, r1] + cbnz r1, .L2915 + ldr r3, [lr, #12] + ldr r10, [r3, #4] + cmp r10, #-1 + beq .L2916 + mov r0, r10 + ldr r1, [r8, #-4] + str r3, [sp, #32] + bl ftl_cmp_data_ver + ldr r3, [sp, #32] + cbz r0, .L2916 + add r1, r10, #1 + str r1, [r8, #-4] +.L2916: + ldr r1, [r3] + adds r1, r1, #1 + bne .L2917 +.L2921: + cmp r9, r6 + ldr r6, .L3061+8 + bne .L3045 + ldr r3, [r6, #1764] + adds r5, r5, #1 + uxth r10, r5 + ldr r0, [r3, #4] + b .L3049 +.L2915: + ldr r1, [lr, #4] + ldr r0, .L3061+12 + bl printk + uxth r3, r7 + ldrh r1, [r4] + str r3, [sp, #16] + ldr r3, .L3061+16 + strh r1, [r3, #3644] @ movhi +.L2917: + add fp, fp, #1 + b .L2914 +.L3045: + ldr r3, [sp, #8] + movs r2, #36 + uxth r10, r5 + ldr r3, [r3, #1764] + mla r9, r2, r9, r3 + ldr r0, [r9, #4] +.L3049: + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrb r5, [r4, #8] @ zero_extendqisi2 + ldr r2, .L3061+4 + cmp r5, #1 + str r0, [sp, #8] + bne .L2923 + ldrb r3, [r2, #140] @ zero_extendqisi2 + cbnz r3, .L2923 + add r3, r2, r10, lsl #1 + ldrh r10, [r3, #144] +.L2923: + ldrh r3, [r2, #1872] + 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 .L2925 + ldr r3, [sp, #8] + ldr r2, [sp, #32] + cmp r3, r2 + bne .L2925 + mov r0, r4 + mov r1, r10 + mov r2, r3 + b .L3054 +.L2925: + ldr r2, [sp, #16] + movw r3, #65535 + cmp r2, r3 + bne .L2926 + cmp r5, #0 + bne .L2927 +.L2926: + ldr r3, [r6, #1932] + uxth fp, r7 + mov r9, #-1 + ldr r7, .L3061+8 + adds r3, r3, #1 + mov r8, r9 + ittt eq + ldreq r3, .L3061+8 + ldreq r2, [sp, #4] + streq r2, [r3, #1932] + ldr r3, [r6, #1932] + str r3, [sp, #16] + ldr r3, [sp, #12] + adds r3, r3, #7 + cmp fp, r3 + itet gt + subgt r5, fp, #7 + ldrle r5, [sp, #12] + uxthgt r5, r5 +.L2930: + cmp r5, fp + bhi .L2943 + ldr r3, .L3061+4 + ldr r1, [sp, #20] + ldrh ip, [r3, #1804] + ldr r3, [r7, #1764] + str r3, [sp, #28] + movs r3, #0 + mov r6, r3 +.L2944: + uxth r2, r3 + cmp r2, ip + bcs .L3057 + ldrh r2, [r1, #2]! + movw r0, #65535 + cmp r2, r0 + beq .L2931 + ldr r0, [sp, #28] + mov lr, #36 + orr r2, r5, r2, lsl #10 + mla r0, lr, r6, r0 + adds r6, r6, #1 + uxth r6, r6 + str r2, [r0, #4] +.L2931: + adds r3, r3, #1 + b .L2944 +.L3062: + .align 2 +.L3061: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC144 + .word .LANCHOR5 +.L3057: + mov r1, r6 + ldr r2, [sp, #24] + ldr r0, [r7, #1764] + bl FlashReadPages + ldr r3, .L3063 + movs r2, #36 + add lr, r7, r5, lsl #1 + movw r1, #65535 + ldrb r0, [r3, #140] @ zero_extendqisi2 + ldr r3, [r7, #1764] + mla r6, r2, r6, r3 +.L2933: + cmp r3, r6 + beq .L3058 + ldr r2, [r3] + cbnz r2, .L2934 + ldr r2, [r3, #12] + ldrh ip, [r2] + cmp ip, r1 + beq .L2935 + ldr r2, [r2, #4] + cmp r2, #-1 + beq .L2935 + cmp r9, #-1 + ldr r8, [r7, #1932] + str r2, [r7, #1932] + bne .L2935 + ldrh r2, [lr, #704] + cmp r2, r1 + bne .L2936 + cbz r0, .L2935 +.L2936: + ldr r2, [sp, #4] + cmp r8, r2 + ite ne + movne r9, r8 + moveq r9, #-1 + b .L2935 +.L2934: + ldr r3, .L3063+4 + ldrh r2, [r4] + strh r2, [r3, #3644] @ movhi + ldrb r3, [r4, #8] @ zero_extendqisi2 + cbnz r3, .L2927 + ldr r3, .L3063+8 + movw r2, #65535 + add r5, r3, r5, lsl #1 + ldrh r1, [r5, #704] + cmp r1, r2 + bne .L2938 + cmp r9, #-1 + beq .L2939 + str r9, [r3, #1932] + b .L2927 +.L2939: + ldr r2, [sp, #16] + ldr r1, [sp, #4] + cmp r2, r1 + bne .L3050 + ldr r2, [r3, #1932] + b .L3055 +.L2938: + ldr r2, [sp, #4] + cmp r8, r2 + beq .L2941 + cmp r8, #-1 + beq .L2927 + str r8, [r3, #1932] + b .L2927 +.L2941: + ldr r2, [r3, #1932] + ldr r1, [sp, #4] + cmp r2, r1 + beq .L2927 +.L3055: + subs r2, r2, #1 + b .L3050 +.L2935: + adds r3, r3, #36 + b .L2933 +.L3058: + adds r5, r5, #1 + uxth r5, r5 + b .L2930 +.L2943: + ldr r3, .L3063+8 + mov r2, #-1 +.L3050: + str r2, [r3, #1932] +.L2927: + ldr r3, .L3063+4 + movs r2, #1 + ldr fp, [sp, #12] + ldr r5, .L3063+8 + strh r2, [r3, #3646] @ movhi +.L2945: + ldr r3, .L3063 + movw r9, #65535 + ldr r1, [r5, #1764] + movs r6, #0 + ldr r7, [sp, #20] + ldrh r8, [r3, #1804] + ldrb r0, [r3, #140] @ zero_extendqisi2 + str r6, [sp, #16] +.L2946: + uxth r3, r6 + cmp r3, r8 + bcs .L3059 + ldrh r3, [r7, #2]! + cmp r3, r9 + beq .L2947 + 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 .L2948 + cbz r0, .L2948 + orr r3, r3, #-2147483648 + str r3, [r2, #4] +.L2948: + ldr r3, [sp, #16] + add ip, r3, #1 + uxth r3, ip + str r3, [sp, #16] +.L2947: + adds r6, r6, #1 + b .L2946 +.L3059: + ldr r0, [r5, #1764] + ldr r1, [sp, #16] + ldr r2, [sp, #24] + bl FlashReadPages + movs r3, #0 +.L3053: + str r3, [sp, #28] + ldr r2, [sp, #16] + ldrh r3, [sp, #28] + cmp r3, r2 + bcs .L3060 + ldr r3, [sp, #28] + movs r6, #36 + ldr r9, [r5, #1764] + muls r6, r3, r6 + add r8, r9, r6 + ldr r7, [r8, #4] + ubfx r0, r7, #10, #16 + str r7, [sp, #56] + bl P2V_plane + ldr r3, [sp, #12] + cmp fp, r3 + bcc .L2951 + bne .L2952 + ldr r3, [sp, #32] + cmp r0, r3 + bcc .L2951 +.L2952: + cmp fp, r10 + bne .L2953 + ldr r3, [sp, #8] + cmp r0, r3 + beq .L2954 +.L2953: + ldr r3, [r9, r6] + adds r3, r3, #1 + beq .L2955 + ldr r8, [r8, #12] + movw r3, #61589 + ldrh r2, [r8] + cmp r2, r3 + beq .L2956 + ldrh r0, [r4] + b .L3051 +.L2956: + ldr r3, [r8, #4] + adds r7, r3, #1 + str r3, [sp, #4] + beq .L2957 + mov r0, r3 + ldr r1, [r5, #-4] + bl ftl_cmp_data_ver + cbz r0, .L2957 + ldr r3, [sp, #4] + adds r3, r3, #1 + str r3, [r5, #-4] +.L2957: + ldr r7, [r8, #8] + add r1, sp, #52 + ldr r3, [r8, #12] + movs r2, #0 + mov r0, r7 + str r3, [sp, #48] + bl log2phys + ldr r1, [r5, #1932] + adds r0, r1, #1 + beq .L2958 + ldr r0, [sp, #4] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L2958 + ldr r3, [sp, #48] + adds r2, r3, #1 + beq .L2959 + ldr r0, [r5, #1764] + movs r2, #0 + movs r1, #1 + add r0, r0, r6 + str r3, [r0, #4] + ldr r9, [r0, #12] + bl FlashReadPages + ldr r2, [r5, #1764] + ldr r3, [r9, #4] + add ip, r2, r6 + str r3, [sp, #36] + ldr r3, [r2, r6] + adds r3, r3, #1 + bne .L2960 + b .L2961 +.L2959: + ldr r3, [sp, #56] + ldr r2, [sp, #52] + cmp r2, r3 + bne .L2951 + mov r0, r7 + add r1, sp, #48 + movs r2, #1 + bl log2phys + b .L2951 +.L2960: + ldr r8, [r9, #8] + cmp r8, r7 + bne .L2961 + ldr r0, [r5, #1932] + 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, .L2961 + ldr r3, [sp, #52] + ldr r1, [sp, #56] + cmp r3, r1 + beq .L2966 + ldr r1, [sp, #48] + cmp r3, r1 + beq .L2961 + adds r0, r3, #1 + beq .L2964 + str r3, [ip, #4] + mov r0, ip + movs r1, #1 + movs r2, #0 + ldr r9, [ip, #12] + bl FlashReadPages + b .L2965 +.L2964: + str r3, [r2, r6] +.L2965: + ldr r3, [r5, #1764] + ldr r3, [r3, r6] + adds r3, r3, #1 + beq .L2966 + ldr r6, [r9, #4] + ldr r0, [r5, #1932] + mov r1, r6 + bl ftl_cmp_data_ver + cbz r0, .L2966 + ldr r0, [sp, #36] + mov r1, r6 + bl ftl_cmp_data_ver + cbz r0, .L2961 +.L2966: + mov r0, r8 + ldr r1, [sp, #48] + bl FtlReUsePrevPpa +.L2961: + mov r3, #-1 + str r3, [sp, #48] + b .L2968 +.L3064: + .align 2 +.L3063: + .word .LANCHOR0 + .word .LANCHOR5 + .word .LANCHOR2 +.L2958: + ldr r3, [sp, #56] + ldr r2, [sp, #52] + cmp r2, r3 + beq .L2968 + ldr r2, .L3065 + ldr r3, [sp, #48] + ldr r2, [r2, #1820] + cmp r2, r3, lsr #10 + bhi .L2970 + adds r3, r3, #1 + bne .L2951 +.L2970: + mov r0, r7 + add r1, sp, #56 + movs r2, #1 + bl log2phys + ldr r8, [sp, #52] + cmp r8, #-1 + beq .L2968 + ldr r3, [sp, #48] + cmp r8, r3 + beq .L2968 + ubfx r0, r8, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r5, #-200] + cmp r3, r0 + beq .L2972 + ldrh r3, [r5, #-152] + cmp r3, r0 + beq .L2972 + ldrh r3, [r5, #-104] + cmp r3, r0 + bne .L2968 +.L2972: + ldr r3, .L3065+4 + movs r1, #1 + movs r2, #0 + ldr r0, [r3, #1764] + str r8, [r0, #4] + ldr r6, [r0, #12] + bl FlashReadPages + ldr r3, .L3065+4 + ldr r1, [r6, #4] + ldr r3, [r3, #1764] + ldr r3, [r3] + adds r3, r3, #1 + beq .L2968 + ldr r0, [sp, #4] + bl ftl_cmp_data_ver + cbnz r0, .L2968 + mov r0, r7 + add r1, sp, #52 + movs r2, #1 + bl log2phys +.L2968: + ldr r0, [sp, #48] + adds r1, r0, #1 + beq .L2951 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r3, [r5, #-220] + ldrh r3, [r3, r0, lsl #1] + mov r1, r0 + cbz r3, .L2973 +.L3051: + bl decrement_vpc_count + b .L2951 +.L2973: + ldr r0, .L3065+8 + bl printk + b .L2951 +.L2955: + ldrh r3, [r4] + mov r1, r7 + ldr r2, .L3065+12 + ldr r0, .L3065+16 + strh r3, [r2, #3644] @ movhi + ldr r2, [sp, #4] + bl printk + ldr r3, .L3065+12 + ldr r3, [r3, #3648] + cmp r3, #31 + bhi .L2974 + ldr r2, .L3065+12 + ldr r1, [sp, #56] + add r2, r2, r3, lsl #2 + adds r3, r3, #1 + str r1, [r2, #3652] + ldr r2, .L3065+12 + str r3, [r2, #3648] +.L2974: + ldrh r0, [r4] + bl decrement_vpc_count + ldr r3, [r5, #1932] + adds r2, r3, #1 + bne .L2975 + ldr r3, [sp, #4] + b .L3052 +.L2975: + ldr r2, [sp, #4] + cmp r3, r2 + bls .L2951 + mov r3, r2 +.L3052: + str r3, [r5, #1932] +.L2951: + ldr r3, [sp, #28] + adds r3, r3, #1 + b .L3053 +.L3060: + ldrb r3, [r4, #8] @ zero_extendqisi2 + add fp, fp, #1 + cmp r3, #1 + uxth fp, fp + ldr r3, .L3065 + bne .L2977 + ldrb r2, [r3, #140] @ zero_extendqisi2 + cbz r2, .L2977 + ldrh r2, [r3, #1874] + cmp r2, fp + bne .L2977 + cmp r10, fp + beq .L2954 +.L2977: + ldrh r3, [r3, #1872] + cmp fp, r3 + bne .L2945 + ldr r2, .L3065 + movw r0, #65535 + movs r3, #0 + strh fp, [r4, #2] @ movhi + strh r3, [r4, #4] @ movhi + ldrh r1, [r2, #1804] +.L2978: + uxth r2, r3 + cmp r2, r1 + bcs .L2902 + ldr r6, [sp, #20] + adds r3, r3, #1 + ldrh r5, [r6, #2]! + cmp r5, r0 + str r6, [sp, #20] + beq .L2978 + strb r2, [r4, #6] + b .L2902 +.L2954: + ldrb r3, [sp, #8] @ zero_extendqisi2 + mov r0, r4 + ldr r2, [sp, #8] + mov r1, r10 + strh r10, [r4, #2] @ movhi + strb r3, [r4, #6] +.L3054: + bl ftl_sb_update_avl_pages +.L2902: + ldr r3, .L3065+20 + movs r0, #0 + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L2982 + bl __stack_chk_fail +.L2982: + add sp, sp, #68 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3066: + .align 2 +.L3065: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC145 + .word .LANCHOR5 + .word .LC146 + .word __stack_chk_guard + .fnend + .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .align 1 + .global FtlVpcCheckAndModify + .thumb + .thumb_func + .type FtlVpcCheckAndModify, %function +FtlVpcCheckAndModify: + .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 + movs r4, #0 + ldr r6, .L3083 + ldr r7, .L3083+4 + ldr r1, .L3083+8 + ldr r3, [r6] + mov r8, r6 + ldr r0, .L3083+12 + ldr r5, .L3083+16 + str r3, [sp, #4] + bl printk + ldrh r2, [r7, #1814] + movs r1, #0 + ldr r0, [r5, #1824] + lsls r2, r2, #1 + bl ftl_memset +.L3068: + ldr r3, [r7, #1932] + cmp r4, r3 + bcs .L3081 + mov r0, r4 + mov r1, sp + movs r2, #0 + bl log2phys + ldr r0, [sp] + adds r3, r0, #1 + beq .L3069 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r5, #1824] + ldrh r3, [r2, r0, lsl #1] + adds r3, r3, #1 + strh r3, [r2, r0, lsl #1] @ movhi +.L3069: + adds r4, r4, #1 + b .L3068 +.L3081: + ldr r6, .L3083+16 + mov r9, #0 + movw r10, #65535 +.L3071: + ldrh r3, [r7, #1812] + uxth r4, r9 + cmp r3, r4 + bls .L3082 + ldr r3, [r5, #-220] + ldrh r2, [r3, r4, lsl #1] + ldr r3, [r5, #1824] + ldrh r3, [r3, r4, lsl #1] + cmp r2, r3 + beq .L3073 + cmp r2, r10 + beq .L3073 + ldr r0, .L3083+20 + mov r1, r4 + bl printk + ldrh r3, [r6, #-200] + cmp r3, r4 + beq .L3073 + ldrh r3, [r6, #-104] + cmp r3, r4 + beq .L3073 + ldrh r3, [r6, #-152] + cmp r3, r4 + beq .L3073 + ldr r3, [r6, #-220] + ldrh r2, [r3, r4, lsl #1] + cbnz r2, .L3075 + ldr r2, [r6, #1824] + ldrh r2, [r2, r4, lsl #1] + strh r2, [r3, r4, lsl #1] @ movhi + b .L3073 +.L3075: + ldr r2, [r6, #1824] + mov r0, r4 + ldrh r2, [r2, r4, lsl #1] + strh r2, [r3, r4, lsl #1] @ movhi + bl update_vpc_list +.L3073: + add r9, r9, #1 + b .L3071 +.L3082: + bl l2p_flush + bl FtlVpcTblFlush + ldr r2, [sp, #4] + ldr r3, [r8] + cmp r2, r3 + beq .L3077 + bl __stack_chk_fail +.L3077: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3084: + .align 2 +.L3083: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR3+84 + .word .LC107 + .word .LANCHOR2 + .word .LC147 + .fnend + .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify + .align 1 + .global FtlGcScanTempBlk + .thumb + .thumb_func + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + .fnstart + @ args = 0, pretend = 0, frame = 80 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L3133 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #84 + sub sp, sp, #84 + ldr r3, [r3] + mov r4, r0 + str r1, [sp, #16] + str r3, [sp, #76] + ldr r3, .L3133+4 + ldrh r5, [r3, #3288] + movw r3, #65535 + cmp r5, r3 + beq .L3119 + cbnz r5, .L3086 + b .L3087 +.L3119: + movs r5, #0 +.L3086: + ldr r3, .L3133+8 + ldr r2, [sp, #16] + ldrh r3, [r3, #1872] + cmp r2, r3 + bne .L3088 +.L3087: + bl FtlGcPageVarInit +.L3088: + ldr r6, .L3133+12 + mov r3, #-1 + str r3, [sp, #12] + movs r3, #0 + str r3, [sp, #4] +.L3089: + ldrh r2, [r4] + movs r3, #0 + strb r3, [r4, #8] + movw r3, #65535 + cmp r2, r3 + beq .L3090 +.L3091: + ldr r10, .L3133+8 +.L3115: + ldr r3, [r6, #1764] + movs r2, #0 + ldrh r9, [r10, #1804] + add lr, r4, #14 + ldrh fp, [r10, #1882] + mov r8, #36 + str r3, [sp, #8] + mov r7, r2 + ldr r3, [r6, #628] + movw ip, #65535 + str r3, [sp, #20] + ldr r3, [r6, #632] + str r3, [sp, #24] + ldrh r3, [r10, #1884] + str r3, [sp, #28] +.L3092: + uxth r3, r2 + cmp r3, r9 + bcs .L3131 + ldrh r3, [lr, #2]! + cmp r3, ip + beq .L3093 + ldr r1, [sp, #8] + orr r3, r5, r3, lsl #10 + ldr r0, [sp, #20] + mla r1, r8, r7, r1 + str r3, [r1, #4] + mov r3, fp + muls r3, r7, r3 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + add r3, r3, r0 + str r3, [r1, #8] + ldr r3, [sp, #28] + muls r3, r7, r3 + add r7, r7, #1 + it mi + addmi r3, r3, #3 + ldr r0, [sp, #24] + bic r3, r3, #3 + uxth r7, r7 + add r3, r3, r0 + str r3, [r1, #12] +.L3093: + adds r2, r2, #1 + b .L3092 +.L3131: + ldr r0, [r6, #1764] + mov r1, r7 + movs r2, #0 + mov fp, #0 + bl FlashReadPages +.L3097: + uxth r3, fp + cmp r3, r7 + bcs .L3132 + mov r9, #36 + ldr r2, [r6, #1764] + ldr ip, .L3133+12 + mul r9, r9, fp + add r3, r2, r9 + ldr r1, [r3, #4] + ldr r8, [r2, r9] + ldr r3, [r3, #12] + str r1, [sp, #8] + cmp r8, #0 + bne .L3098 + ldrh r1, [r3] + movw r2, #65535 + cmp r1, r2 + bne .L3099 +.L3101: + ldr r3, .L3133+12 + movs r1, #0 + ldrh r2, [r4] + ldr r3, [r3, #-220] + strh r1, [r3, r2, lsl #1] @ movhi + ldrh r0, [r4] + bl INSERT_FREE_LIST + ldr r2, .L3133+12 + movw r3, #65535 + strh r3, [r4] @ movhi + strh r3, [r2, #40] @ movhi + b .L3130 +.L3099: + ldr r0, [r3, #8] + ldr r2, [r10, #1932] + cmp r0, r2 + bhi .L3101 + ldrb r2, [r10] @ zero_extendqisi2 + cmp r2, #0 + beq .L3103 + add r1, sp, #36 + mov r2, r8 + str r3, [sp, #20] + bl log2phys + ldr r3, [sp, #20] + ldr r2, [sp, #36] + ldr r1, [r3, #12] + cmp r2, r1 + bne .L3103 + adds r1, r2, #1 + beq .L3103 + str r2, [sp, #44] + movs r1, #1 + ldr r2, [r6, #1796] + add r0, sp, #40 + str r2, [sp, #48] + ldr r2, [r6, #1804] + str r2, [sp, #52] + mov r2, r8 + bl FlashReadPages + ldrh r2, [r10, #1878] + ldr r1, [r6, #1764] + lsl lr, r2, #7 + add r9, r9, r1 + ldr r0, [sp, #48] + ldr r3, [sp, #20] +.L3105: + cmp r8, lr + beq .L3103 + ldr r1, [r9, #8] + ldr r2, [r0, r8, lsl #2] + ldr r1, [r1, r8, lsl #2] + cmp r1, r2 + beq .L3106 + ldrh r1, [r4] + ldr r2, [sp, #44] + ldr r0, .L3133+16 + bl printk + ldr r3, [r6, #-220] + ldrh r2, [r4] + 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, #40] @ movhi + b .L3130 +.L3106: + add r8, r8, #1 + b .L3105 +.L3103: + ldr r0, [r3, #12] + add fp, fp, #1 + ldr r1, [sp, #8] + ldr r2, [r3, #8] + bl FtlGcUpdatePage + b .L3097 +.L3098: + ldrh r1, [r4] + ldr r2, [sp, #8] + ldr r0, .L3133+20 + str ip, [sp, #20] + bl printk + ldr r3, .L3133+8 + ldrh r2, [r4] + ldr r1, [r3, #1796] + ldr ip, [sp, #20] + cbnz r1, .L3109 + ldrb r1, [r3, #140] @ zero_extendqisi2 + cbz r1, .L3110 +.L3109: + ldr r3, [r3, #4060] + ldrh r3, [r3, r2, lsl #1] + cmp r3, #159 + bls .L3111 +.L3110: + ldr r3, [ip, #1764] + ldr r3, [r3, r9] + adds r3, r3, #1 + bne .L3112 +.L3111: + ldr r3, [ip, #1764] + add r9, r9, r3 + ldr r3, [r9, #4] + str r3, [sp, #12] +.L3112: + ldr r3, .L3133+12 + movs r1, #0 + ldr r3, [r3, #-220] + strh r1, [r3, r2, lsl #1] @ movhi + ldrh r0, [r4] + bl INSERT_FREE_LIST + movw r3, #65535 + strh r3, [r4] @ movhi +.L3130: + bl FtlGcPageVarInit + movs r5, #0 + b .L3089 +.L3132: + ldr r3, [sp, #4] + adds r5, r5, #1 + ldr r2, [sp, #16] + adds r3, r3, #1 + uxth r5, r5 + cmp r3, r2 + str r3, [sp, #4] + bcs .L3114 +.L3116: + ldrh r3, [r10, #1872] + cmp r3, r5 + bhi .L3115 + b .L3090 +.L3114: + ldr r2, .L3133+4 + movw r1, #65535 + ldrh r3, [r2, #3288] + cmp r3, r1 + beq .L3116 + ldr r1, [sp, #4] + add r3, r3, r1 + strh r3, [r2, #3288] @ movhi + ldrh r3, [r10, #1872] + cmp r3, r5 + bls .L3116 + b .L3117 +.L3090: + ldr r3, .L3133+4 + movw r2, #65535 + strh r5, [r4, #2] @ movhi + mov r0, r4 + mov r1, r5 + strh r2, [r3, #3288] @ movhi + movs r2, #0 + strb r2, [r4, #6] + bl ftl_sb_update_avl_pages +.L3117: + ldr r3, .L3133 + ldr r2, [sp, #76] + ldr r0, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L3118 + bl __stack_chk_fail +.L3118: + add sp, sp, #84 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3134: + .align 2 +.L3133: + .word __stack_chk_guard + .word .LANCHOR1 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC148 + .word .LC149 + .fnend + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 1 + .global FtlReadRefresh + .thumb + .thumb_func + .type FtlReadRefresh, %function +FtlReadRefresh: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r7, .L3152 + ldr r5, .L3152+4 + ldr r8, .L3152+8 + ldr r3, [r7] + ldr fp, [r5, #172] + mov r6, r5 + str r3, [sp, #44] + cmp fp, #0 + beq .L3136 + ldr r2, [r5, #176] + ldr r3, [r8, #1932] + cmp r2, r3 + bcs .L3137 + mov r4, #2048 +.L3142: + ldr r0, [r6, #176] + ldr r3, [r8, #1932] + cmp r0, r3 + bcs .L3141 + add r1, sp, #4 + movs r2, #0 + bl log2phys + ldr r3, [r5, #176] + adds r3, r3, #1 + str r3, [r5, #176] + ldr r2, [sp, #4] + adds r1, r2, #1 + beq .L3140 + add r0, sp, #48 + str r2, [sp, #12] + movs r1, #1 + movs r2, #0 + str r2, [r0, #-40]! + str r3, [sp, #24] + str r2, [sp, #16] + str r2, [sp, #20] + bl FlashReadPages + ldr r3, [sp, #8] + cmp r3, #256 + bne .L3141 + ldr r0, [sp, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L3141: + mov r0, #-1 + b .L3144 +.L3140: + subs r4, r4, #1 + bne .L3142 + b .L3141 +.L3137: + ldr r3, [r5, #-40] + movs r0, #0 + str r0, [r5, #172] + str r0, [r5, #176] + str r3, [r5, #168] + b .L3144 +.L3136: + ldr r10, [r5, #-40] + movw r4, #10000 + ldr r1, [r5, #12] + ldr r9, [r5, #168] + add r2, r10, #1048576 + cmp r1, r4 + ite hi + movhi r4, #31 + movls r4, #63 + ldr r3, [r8, #1932] + cmp r9, r2 + add r8, r8, #4096 + bhi .L3146 + mov r0, #1000 + lsrs r1, r1, #10 + adds r1, r1, #1 + muls r0, r3, r0 + bl __aeabi_uidiv + add r0, r0, r9 + cmp r0, r10 + bcc .L3146 + ldrh r3, [r8] + ands r0, r4, r3 + bne .L3149 + ldr r2, [r5, #192] + cmp r2, r3 + beq .L3144 +.L3146: + ldrh r3, [r8] + movs r0, #0 + str r10, [r6, #168] + str r0, [r6, #176] + str r3, [r6, #192] + movs r3, #1 + str r3, [r6, #172] + b .L3144 +.L3149: + mov r0, fp +.L3144: + ldr r2, [sp, #44] + ldr r3, [r7] + cmp r2, r3 + beq .L3147 + bl __stack_chk_fail +.L3147: + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3153: + .align 2 +.L3152: + .word __stack_chk_guard .word .LANCHOR2 .word .LANCHOR0 .fnend - .size allocate_new_data_superblock, .-allocate_new_data_superblock + .size FtlReadRefresh, .-FtlReadRefresh + .align 1 + .global FtlGcFreeTempBlock + .thumb + .thumb_func + .type FtlGcFreeTempBlock, %function +FtlGcFreeTempBlock: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #20 + sub sp, sp, #20 + ldr r6, .L3193 + ldr r7, .L3193+4 + ldr r2, [r6, #4052] + ldr r3, [r7] + ldrh r1, [r6, #1872] + str r3, [sp, #12] + cmp r2, #0 + bne .L3191 + ldr r4, .L3193+8 + movw lr, #65535 + ldrh r5, [r4, #-104] + cmp r5, lr + bne .L3157 +.L3166: + ldrh r2, [r4, #-104] + movw r3, #65535 + mov r8, #0 + ldr r5, .L3193+8 + cmp r2, r3 + str r8, [r4, #1928] + beq .L3191 + bl FtlCacheWriteBack + ldrb r0, [r5, #-97] @ zero_extendqisi2 + ldrh r3, [r6, #1872] + mov r10, #12 + ldr r2, [r5, #-220] + ldrh r1, [r5, #-104] + smulbb r3, r0, r3 + strh r3, [r2, r1, lsl #1] @ movhi + ldr r3, [r5, #-20] + ldrh r2, [r5, #656] + add r3, r3, r2 + str r3, [r5, #-20] + b .L3167 +.L3157: + cbz r0, .L3160 + ldr r3, .L3193+12 + ldrh r0, [r3, #3288] + cmp r0, lr + beq .L3161 +.L3162: + movs r1, #2 + b .L3160 +.L3161: + strh r2, [r3, #3288] @ movhi + ldrh r3, [r4, #-204] + cmp r3, #17 + bhi .L3162 +.L3160: + ldr r0, .L3193+16 + bl FtlGcScanTempBlk + str r0, [sp, #8] + adds r0, r0, #1 + beq .L3163 + ldr r2, [r6, #4060] + ldrh r3, [r2, r5, lsl #1] + cmp r3, #4 + bls .L3164 + subs r3, r3, #5 + movs r0, #1 + strh r3, [r2, r5, lsl #1] @ movhi + bl FtlEctTblFlush +.L3164: + ldr r3, [r4, #1928] + ldr r2, .L3193+8 + cbnz r3, .L3165 + ldr r0, [sp, #8] + ldr r3, [r2, #188] + ubfx r0, r0, #10, #16 + adds r3, r3, #1 + str r3, [r2, #188] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L3165: + movs r3, #0 + str r3, [r4, #1928] + b .L3178 +.L3163: + ldr r3, .L3193+12 + ldrh r2, [r3, #3288] + movw r3, #65535 + cmp r2, r3 + bne .L3178 + b .L3166 +.L3170: + ldr r3, [fp, #4] + cmp r0, r3 + bne .L3189 +.L3169: + add r8, r8, #1 +.L3167: + ldrh r3, [r4, #656] + uxth r9, r8 + cmp r3, r9 + bls .L3192 + mul r9, r10, r9 + ldr r3, [r5, #652] + ldr r2, [r6, #1932] + add fp, r3, r9 + ldr r0, [fp, #8] + cmp r0, r2 + bcs .L3189 + add r1, sp, #8 + movs r2, #0 + str r3, [sp, #4] + bl log2phys + ldr r3, [sp, #4] + ldr r0, [sp, #8] + ldr r3, [r3, r9] + cmp r0, r3 + bne .L3170 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + add r1, fp, #4 + movs r2, #1 + mov r9, r0 + ldr r0, [fp, #8] + bl log2phys + mov r0, r9 + b .L3190 +.L3189: + ldrh r0, [r5, #-104] +.L3190: + bl decrement_vpc_count + b .L3169 +.L3192: + movw r0, #65535 + bl decrement_vpc_count + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbz r3, .L3172 + ldr r3, .L3193+8 + ldr r0, .L3193+20 + ldrh r1, [r3, #-104] + bl printk +.L3172: + ldrh r0, [r4, #-104] + ldr r3, [r4, #-220] + ldrh r3, [r3, r0, lsl #1] + cbz r3, .L3173 + bl INSERT_DATA_LIST + b .L3174 +.L3173: + bl INSERT_FREE_LIST +.L3174: + movw r9, #65535 + movs r5, #0 + strh r9, [r4, #-104] @ movhi + strh r5, [r4, #656] @ movhi + strh r5, [r4, #648] @ movhi + bl l2p_flush + bl FtlVpcTblFlush + ldr r3, [r6, #1796] + ldr r8, .L3193+8 + strh r9, [r4, #40] @ movhi + cbz r3, .L3175 + ldr r3, [r8, #16] + cmp r3, #39 + bhi .L3175 + ldrh r3, [r8, #20] + ldrh r2, [r8, #-204] + cmp r2, r3 + bcs .L3191 + lsls r3, r3, #1 + strh r3, [r8, #604] @ movhi + b .L3191 +.L3175: + ldrh r3, [r4, #20] + ldrh r1, [r4, #-204] + ldr r2, .L3193+8 + add r0, r3, r3, lsl #1 + cmp r1, r0, asr #2 + ble .L3191 + ldrb r0, [r6, #140] @ zero_extendqisi2 + cbz r0, .L3176 + subs r3, r3, #2 + strh r3, [r2, #604] @ movhi +.L3191: + movs r0, #0 + b .L3156 +.L3176: + movs r3, #20 + strh r3, [r2, #604] @ movhi + b .L3156 +.L3178: + movs r0, #1 +.L3156: + ldr r2, [sp, #12] + ldr r3, [r7] + cmp r2, r3 + beq .L3177 + bl __stack_chk_fail +.L3177: + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3194: + .align 2 +.L3193: + .word .LANCHOR0 + .word __stack_chk_guard + .word .LANCHOR2 + .word .LANCHOR1 + .word .LANCHOR2-104 + .word .LC150 + .fnend + .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock + .align 1 + .global FtlGcPageRecovery + .thumb + .thumb_func + .type FtlGcPageRecovery, %function +FtlGcPageRecovery: + .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 r5, .L3197 + ldr r4, .L3197+4 + ldrh r1, [r5, #1872] + sub r0, r4, #104 + bl FtlGcScanTempBlk + ldrh r2, [r4, #-102] + ldrh r3, [r5, #1872] + cmp r2, r3 + bcc .L3195 + addw r0, r4, #1868 + bl FtlMapBlkWriteDumpData + movs r0, #0 + bl FtlGcFreeTempBlock + movs r3, #0 + str r3, [r4, #1928] +.L3195: + pop {r3, r4, r5, pc} +.L3198: + .align 2 +.L3197: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size FtlGcPageRecovery, .-FtlGcPageRecovery + .align 1 + .global FtlPowerLostRecovery + .thumb + .thumb_func + .type FtlPowerLostRecovery, %function +FtlPowerLostRecovery: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movs r5, #0 + ldr r4, .L3200 + ldr r3, .L3200+4 + sub r6, r4, #200 + subs r4, r4, #152 + mov r0, r6 + str r5, [r3, #3648] + bl FtlRecoverySuperblock + mov r0, r6 + bl FtlSlcSuperblockCheck + mov r0, r4 + bl FtlRecoverySuperblock + mov r0, r4 + bl FtlSlcSuperblockCheck + bl FtlGcPageRecovery + movw r0, #65535 + bl decrement_vpc_count + mov r0, r5 + pop {r4, r5, r6, pc} +.L3201: + .align 2 +.L3200: + .word .LANCHOR2 + .word .LANCHOR5 + .fnend + .size FtlPowerLostRecovery, .-FtlPowerLostRecovery + .align 1 + .global FtlSysBlkInit + .thumb + .thumb_func + .type FtlSysBlkInit, %function +FtlSysBlkInit: + .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} + movs r3, #0 + ldr r5, .L3219 + movw r6, #65535 + ldr r7, .L3219+4 + ldr r4, .L3219+8 + ldrh r0, [r5, #1808] + strh r3, [r7, #3646] @ movhi + strh r6, [r7, #3644] @ movhi + bl FtlFreeSysBlkQueueInit + bl FtlScanSysBlk + ldrh r3, [r4, #24] + cmp r3, r6 + bne .L3203 +.L3205: + mov r8, #-1 + b .L3204 +.L3203: + bl FtlLoadSysInfo + mov r8, r0 + cmp r0, #0 + bne .L3205 + bl FtlLoadMapInfo + bl FtlLoadVonderInfo + bl Ftl_load_ext_data + bl FtlLoadEctTbl + bl FtlFreeSysBLkSort + bl SupperBlkListInit + bl FtlPowerLostRecovery + movs r0, #1 + bl FtlUpdateVaildLpn + ldrh r1, [r5, #1910] + ldr r2, [r4, #-56] + movs r0, #12 + mov r3, r8 +.L3206: + cmp r3, r1 + bge .L3211 + mla r6, r0, r3, r2 + ldr r6, [r6, #4] + cmp r6, #0 + bge .L3207 +.L3211: + ldr r6, .L3219+12 + cmp r3, r1 + ldrh r2, [r6] + add r2, r2, #1 + strh r2, [r6] @ movhi + bge .L3218 + b .L3208 +.L3207: + adds r3, r3, #1 + b .L3206 +.L3218: + ldrh r3, [r7, #3646] + cbz r3, .L3212 +.L3208: + ldrh r1, [r4, #-200] + ldr r2, [r4, #-220] + ldrh r0, [r4, #-196] + ldrh r3, [r2, r1, lsl #1] + subs r3, r3, r0 + strh r3, [r2, r1, lsl #1] @ movhi + ldr r1, [r4, #-220] + ldrh r3, [r5, #1872] + ldrh r0, [r4, #-152] + ldrh r7, [r4, #-148] + strh r3, [r4, #-198] @ movhi + movs r3, #0 + strb r3, [r4, #-194] + strh r3, [r4, #-196] @ movhi + ldrh r2, [r1, r0, lsl #1] + subs r2, r2, r7 + strh r2, [r1, r0, lsl #1] @ movhi + ldrh r2, [r5, #1872] + strb r3, [r4, #-146] + strh r3, [r4, #-148] @ movhi + strh r2, [r4, #-150] @ movhi + movw r2, #4098 + ldrh r3, [r5, r2] + adds r3, r3, #1 + strh r3, [r5, r2] @ movhi + bl l2p_flush + bl FtlVpcTblFlush + bl FtlVpcTblFlush +.L3212: + ldrh r0, [r4, #-200] + movw r3, #65535 + ldr r7, .L3219+8 + cmp r0, r3 + beq .L3213 + ldrh r3, [r7, #-196] + cbnz r3, .L3213 + ldrh r3, [r7, #-148] + cbnz r3, .L3213 + bl FtlGcRefreshOpenBlock + ldrh r0, [r7, #-152] + bl FtlGcRefreshOpenBlock + bl FtlVpcTblFlush + sub r0, r7, #200 + bl allocate_new_data_superblock + sub r0, r7, #152 + bl allocate_new_data_superblock +.L3213: + ldrb r3, [r5] @ zero_extendqisi2 + cbnz r3, .L3214 + ldrh r3, [r6] + lsls r3, r3, #27 + bne .L3204 +.L3214: + bl FtlVpcCheckAndModify +.L3204: + mov r0, r8 + pop {r4, r5, r6, r7, r8, pc} +.L3220: + .align 2 +.L3219: + .word .LANCHOR0 + .word .LANCHOR5 + .word .LANCHOR2 + .word .LANCHOR0+4096 + .fnend + .size FtlSysBlkInit, .-FtlSysBlkInit + .align 1 + .global FtlLowFormat + .thumb + .thumb_func + .type FtlLowFormat, %function +FtlLowFormat: + .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 r5, .L3255 + ldr r6, [r5, #4052] + cmp r6, #0 + bne .L3223 + ldr r4, .L3255+4 + mov r1, r6 + ldrh r2, [r5, #1908] + ldr r0, [r4, #1852] + lsls r2, r2, #2 + bl ftl_memset + ldrh r2, [r5, #1908] + mov r1, r6 + ldr r0, [r4, #1848] + lsls r2, r2, #2 + bl ftl_memset + ldrh r0, [r5, #1808] + str r6, [r4, #-8] + str r6, [r4, #-4] + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cbz r0, .L3224 + bl FtlMakeBbt +.L3224: + ldr r0, .L3255+8 + movs r2, #0 +.L3225: + ldrh r1, [r5, #1878] + uxth r3, r2 + adds r2, r2, #1 + cmp r3, r1, lsl #7 + bge .L3252 + ldr r6, [r4, #1792] + mvns r1, r3 + orr r1, r3, r1, lsl #16 + str r1, [r6, r3, lsl #2] + ldr r1, [r4, #1796] + str r0, [r1, r3, lsl #2] + b .L3225 +.L3252: + ldr r3, .L3255 + movs r6, #0 + ldrh r7, [r3, #1812] +.L3227: + ldrh r3, [r5, #1814] + ldr r8, .L3255 + cmp r3, r7 + bls .L3253 + mov r0, r7 + movs r1, #1 + bl FtlLowFormatEraseBlock + adds r7, r7, #1 + uxth r7, r7 + add r0, r0, r6 + uxth r6, r0 + b .L3227 +.L3253: + ldrh r1, [r8, #1804] + subs r3, r6, #3 + cmp r3, r1, lsl #1 + bge .L3229 +.L3233: + movs r6, #0 + mov r7, r6 + b .L3230 +.L3229: + mov r0, r6 + bl __aeabi_uidiv + ldr r3, [r8, #1904] + add r0, r0, r3 + uxth r0, r0 + bl FtlSysBlkNumInit + ldrh r0, [r8, #1808] + bl FtlFreeSysBlkQueueInit + ldrh r6, [r8, #1812] +.L3231: + ldrh r3, [r5, #1814] + cmp r3, r6 + bls .L3233 + mov r0, r6 + adds r6, r6, #1 + movs r1, #1 + bl FtlLowFormatEraseBlock + uxth r6, r6 + b .L3231 +.L3230: + ldrh r3, [r5, #1812] + uxth r0, r6 + ldr r10, .L3255 + adds r6, r6, #1 + cmp r3, r0 + bls .L3254 + movs r1, #0 + bl FtlLowFormatEraseBlock + add r0, r0, r7 + uxth r7, r0 + b .L3230 +.L3254: + ldrh r3, [r10, #1814] + ldrh r6, [r10, #1804] + ldr fp, [r10, #1816] + str r3, [r4, #1752] + mov r1, r6 + mov r0, fp + bl __aeabi_uidiv + ubfx r8, r0, #5, #16 + mov r9, r0 + add r3, r8, #36 + strh r3, [r4, #20] @ movhi + movs r3, #24 + str r0, [r10, #1932] + muls r3, r6, r3 + cmp r7, r3 + ble .L3235 + rsb r0, r7, fp + mov r1, r6 + bl __aeabi_uidiv + ldr r3, .L3255+4 + str r0, [r10, #1932] + lsrs r0, r0, #5 + adds r0, r0, #24 + strh r0, [r3, #20] @ movhi +.L3235: + ldr r3, [r5, #1796] + cmp r3, #1 + bne .L3236 + mov r0, r7 + mov r1, r6 + bl __aeabi_uidiv + ldrh r10, [r4, #20] + uxtah r0, r10, r0 + add r10, r10, r0, asr #2 + strh r10, [r4, #20] @ movhi +.L3236: + ldrb r3, [r5, #140] @ zero_extendqisi2 + cbz r3, .L3237 + mov r0, r7 + mov r1, r6 + bl __aeabi_uidiv + ldrh r10, [r4, #20] + uxtah r0, r10, r0 + add r10, r10, r0, asr #2 + strh r10, [r4, #20] @ movhi +.L3237: + ldrh r3, [r5, #1866] + cbz r3, .L3239 + ldrh r2, [r4, #20] + add r2, r2, r3, lsr #1 + strh r2, [r4, #20] @ movhi + mul r2, r6, r3 + cmp r2, r7 + itttt gt + addgt r3, r3, #32 + ldrgt r2, .L3255 + addgt r3, r3, r8 + strgt r9, [r2, #1932] + itt gt + ldrgt r2, .L3255+4 + strhgt r3, [r2, #20] @ movhi +.L3239: + ldrh r2, [r4, #20] + ldr r3, [r5, #1932] + ldr r7, .L3255+4 + subs r3, r3, r2 + muls r6, r3, r6 + ldrh r3, [r5, #1872] + str r6, [r4, #4088] + muls r6, r3, r6 + ldrh r3, [r5, #1878] + str r6, [r5, #1932] + muls r6, r3, r6 + str r6, [r5, #1912] + bl FtlBbmTblFlush + ldrh r2, [r5, #1814] + movs r1, #0 + ldr r0, [r4, #-220] + movw r6, #65535 + lsls r2, r2, #1 + bl ftl_memset + ldrh r2, [r5, #1812] + ldr r0, [r4, #-44] + movs r1, #255 + movs r3, #0 + strh r6, [r4, #40] @ movhi + lsrs r2, r2, #3 + str r3, [r4, #-48] + strh r3, [r4, #42] @ movhi + strb r3, [r4, #46] + strb r3, [r4, #48] + strh r3, [r4, #-198] @ movhi + strb r3, [r4, #-194] + strh r3, [r4, #-200] @ movhi + movs r3, #1 + strb r3, [r4, #-192] + bl ftl_memset +.L3241: + ldr r5, .L3255+4 + sub r0, r5, #200 + bl make_superblock + ldrb r3, [r4, #-193] @ zero_extendqisi2 + ldrh r2, [r4, #-200] + cbnz r3, .L3242 + ldr r3, [r7, #-220] + strh r6, [r3, r2, lsl #1] @ movhi + ldrh r3, [r7, #-200] + adds r3, r3, #1 + strh r3, [r7, #-200] @ movhi + b .L3241 +.L3242: + ldr r3, [r5, #-8] + movw r7, #65535 + ldrh r1, [r5, #-196] + str r3, [r5, #-188] + adds r3, r3, #1 + str r3, [r5, #-8] + ldr r3, [r5, #-220] + strh r1, [r3, r2, lsl #1] @ movhi + movs r3, #0 + strh r3, [r5, #-150] @ movhi + strb r3, [r5, #-146] + ldrh r3, [r5, #-200] + adds r3, r3, #1 + strh r3, [r5, #-152] @ movhi + movs r3, #1 + strb r3, [r5, #-144] +.L3243: + ldr r6, .L3255+4 + sub r0, r6, #152 + bl make_superblock + ldrb r3, [r4, #-145] @ zero_extendqisi2 + ldrh r2, [r4, #-152] + cbnz r3, .L3244 + ldr r3, [r5, #-220] + strh r7, [r3, r2, lsl #1] @ movhi + ldrh r3, [r5, #-152] + adds r3, r3, #1 + strh r3, [r5, #-152] @ movhi + b .L3243 +.L3244: + ldr r3, [r6, #-8] + movw r4, #65535 + ldrh r1, [r6, #-148] + str r3, [r6, #-140] + adds r3, r3, #1 + str r3, [r6, #-8] + ldr r3, [r6, #-220] + strh r1, [r3, r2, lsl #1] @ movhi + strh r4, [r6, #-104] @ movhi + bl FtlFreeSysBlkQueueOut + movs r3, #0 + strh r3, [r6, #26] @ movhi + ldr r3, [r6, #4088] + strh r4, [r6, #28] @ movhi + strh r3, [r6, #30] @ movhi + ldr r3, [r6, #-8] + str r3, [r6, #32] + adds r3, r3, #1 + str r3, [r6, #-8] + strh r0, [r6, #24] @ movhi + bl FtlVpcTblFlush + bl FtlSysBlkInit + cbnz r0, .L3223 + ldr r3, .L3255+12 + movs r2, #1 + str r2, [r3, #504] +.L3223: + movs r0, #0 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3256: + .align 2 +.L3255: + .word .LANCHOR0 + .word .LANCHOR2 + .word 168778952 + .word .LANCHOR1 + .fnend + .size FtlLowFormat, .-FtlLowFormat + .align 1 + .global FtlReInitForSDUpdata + .thumb + .thumb_func + .type FtlReInitForSDUpdata, %function +FtlReInitForSDUpdata: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + .pad #28 + sub sp, sp, #28 + ldr r5, .L3286 + ldr r0, .L3286+4 + ldr r3, [r5] + mov r4, r0 + str r3, [sp, #20] + ldrb r3, [r0, #140] @ zero_extendqisi2 + cbz r3, .L3258 +.L3260: + movs r0, #0 + b .L3259 +.L3258: + ldr r6, .L3286+8 + ldr r0, [r6, #3984] + bl FlashInit + cmp r0, #0 + bne .L3260 + bl FlashLoadFactorBbt + cbz r0, .L3261 + bl FlashMakeFactorBbt +.L3261: + ldr r0, [r6, #4016] + bl FlashReadIdbDataRaw + cbz r0, .L3262 + movs r2, #16 + add r0, sp, #4 + movs r1, #0 + movs r7, #1 + bl FlashReadFacBbtData + movs r3, #0 + mov r0, r3 + ldr r2, [sp, #4] +.L3263: + lsl r6, r7, r0 + adds r1, r3, #1 + tst r6, r2 + add r0, r0, #1 + it ne + movne r3, r1 + cmp r0, #16 + bne .L3263 + cmp r3, #6 + bls .L3282 + movs r0, #0 + movs r7, #1 +.L3266: + lsl r6, r7, r0 + adds r1, r3, #1 + tst r6, r2 + add r0, r0, #1 + it ne + movne r3, r1 + cmp r0, #24 + bne .L3266 + cmp r3, #17 + bhi .L3267 +.L3282: + strb r0, [r4, #1] + b .L3265 +.L3267: + movs r3, #36 + strb r3, [r4, #1] +.L3265: + ldrb r3, [r4, #1] @ zero_extendqisi2 + strh r3, [r4, #138] @ movhi +.L3262: + ldr r1, .L3286+12 + ldr r0, .L3286+16 + bl printk + ldr r0, .L3286+20 + bl FtlConstantsInit + bl FtlVariablesInit + ldrh r0, [r4, #1808] + bl FtlFreeSysBlkQueueInit + movs r4, #1 +.L3268: + bl FtlLoadBbt + cbz r0, .L3269 +.L3284: + bl FtlLowFormat + cmp r4, #3 + bhi .L3285 + adds r4, r4, #1 + b .L3268 +.L3285: + mov r0, #-1 + b .L3259 +.L3269: + bl FtlSysBlkInit + cmp r0, #0 + bne .L3284 + ldr r3, .L3286+24 + movs r2, #1 + str r2, [r3, #504] +.L3259: + ldr r2, [sp, #20] + ldr r3, [r5] + cmp r2, r3 + beq .L3273 + bl __stack_chk_fail +.L3273: + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, pc} +.L3287: + .align 2 +.L3286: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC77 + .word .LC76 + .word .LANCHOR0+112 + .word .LANCHOR1 + .fnend + .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata + .align 1 + .global Ftl_gc_temp_data_write_back + .thumb + .thumb_func + .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 + ldr r3, .L3304 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + ldr r2, [r3, #4052] + cbz r2, .L3289 +.L3292: + movs r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L3289: + ldrb r3, [r3, #140] @ zero_extendqisi2 + ldr r5, .L3304+4 + cbz r3, .L3291 + ldr r3, [r5, #620] + lsls r3, r3, #31 + bpl .L3291 + ldrh r3, [r5, #-100] + cmp r3, #0 + bne .L3292 +.L3291: + movs r2, #0 + ldr r0, [r5, #1768] + ldr r1, [r5, #620] + movs r6, #0 + mov r3, r2 + ldr r7, .L3304+4 + bl FlashProgPages + mov r8, #36 +.L3293: + ldr r1, [r5, #620] + uxth r3, r6 + ldr r4, .L3304+4 + cmp r3, r1 + bcs .L3303 + mul r3, r8, r3 + ldr r0, [r7, #1768] + adds r6, r6, #1 + adds r1, r0, r3 + ldr r0, [r0, r3] + ldr r2, [r1, #12] + cmp r0, #-1 + bne .L3294 + ldrh r1, [r4, #-104] + movs r5, #0 + ldr r2, [r4, #-220] + strh r5, [r2, r1, lsl #1] @ movhi + ldr r2, [r4, #188] + strh r0, [r4, #-104] @ movhi + adds r2, r2, #1 + str r2, [r4, #188] + ldr r2, [r4, #1768] + add r3, r3, r2 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + bl FtlGcPageVarInit + b .L3302 +.L3294: + ldr r0, [r2, #12] + ldr r1, [r1, #4] + ldr r2, [r2, #8] + bl FtlGcUpdatePage + b .L3293 +.L3303: + ldr r0, [r4, #1768] + bl FtlGcBufFree + movs r3, #0 + str r3, [r4, #620] + ldrh r3, [r4, #-100] + cmp r3, #0 + bne .L3292 + movs r0, #1 + bl FtlGcFreeTempBlock +.L3302: + movs r0, #1 + pop {r4, r5, r6, r7, r8, pc} +.L3305: + .align 2 +.L3304: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .align 1 + .global Ftl_get_new_temp_ppa + .thumb + .thumb_func + .type Ftl_get_new_temp_ppa, %function +Ftl_get_new_temp_ppa: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + movw r3, #65535 + ldr r4, .L3309 + ldrh r2, [r4, #-104] + cmp r2, r3 + beq .L3307 + ldrh r3, [r4, #-100] + cbnz r3, .L3308 +.L3307: + bl FtlCacheWriteBack + movs r0, #0 + movs r5, #0 + bl FtlGcFreeTempBlock + ldr r0, .L3309+4 + strb r5, [r4, #-96] + bl allocate_data_superblock + strh r5, [r4, #648] @ movhi + strh r5, [r4, #656] @ movhi + bl l2p_flush + mov r0, r5 + bl FtlEctTblFlush + bl FtlVpcTblFlush +.L3308: + ldr r0, .L3309+4 + pop {r3, r4, r5, lr} + b get_new_active_ppa +.L3310: + .align 2 +.L3309: + .word .LANCHOR2 + .word .LANCHOR2-104 + .fnend + .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa .align 1 .global ftl_do_gc .thumb @@ -17655,540 +20433,555 @@ allocate_new_data_superblock: .type ftl_do_gc, %function ftl_do_gc: .fnstart - @ args = 0, pretend = 0, frame = 32 + @ 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} mov r8, r0 - ldr r4, .L3030 - .pad #44 - sub sp, sp, #44 - mov r6, r1 - ldr r0, [r4, #744] - mov r7, r4 + ldr r3, .L3486 + .pad #52 + sub sp, sp, #52 + ldr r6, .L3486+4 + mov r9, r1 + ldr r3, [r3] + ldr r0, [r6, #4052] + str r3, [sp, #44] cmp r0, #0 - bne .L2956 - ldr r3, [r4, #1740] - cmp r3, #0 - bne .L3014 - ldrh r2, [r4, #824] - cmp r2, #47 - bls .L2958 - ldr r3, .L3030+4 - ldrh r2, [r3, #3064] - movw r3, #65535 - cmp r2, r3 - bne .L2864 -.L2867: - ldrh r1, [r7, #1692] - movw r0, #65535 - ldr r3, .L3030 - cmp r1, r0 - beq .L2866 - ldrh r2, [r3, #1690] - cmp r2, r0 - itt eq - strheq r1, [r3, #1690] @ movhi - strheq r2, [r3, #1692] @ movhi - b .L2866 -.L2864: - ldrh r2, [r4, #932] - cmp r2, r3 - beq .L2867 + bne .L3412 + ldr r2, .L3486+8 + ldr r3, [r2, #504] + adds r3, r3, #1 + beq .L3312 + ldr r3, .L3486+12 + ldr r4, [r3, #1740] + mov r7, r3 + cmp r4, #0 + bne .L3312 + ldrh r1, [r3, #-212] + cmp r1, #47 + bls .L3415 + ldrh r1, [r2, #3288] + movw r2, #65535 + cmp r1, r2 + bne .L3313 +.L3316: + ldrh r4, [r7, #660] + movw r1, #65535 + ldr r3, .L3486+12 + cmp r4, r1 + bne .L3314 + b .L3315 +.L3313: + ldrh r3, [r3, #-104] + cmp r3, r2 + beq .L3316 movs r0, #1 bl FtlGcFreeTempBlock cmp r0, #0 - beq .L2867 + beq .L3316 movs r0, #1 - b .L3014 -.L2866: - ldr r4, [r7, #1640] + b .L3312 +.L3314: + ldrh r2, [r3, #658] + cmp r2, r1 + bne .L3315 + ldrh r0, [r3, #662] + cmp r0, r2 + beq .L3315 + ldrh r1, [r3, #664] + cmp r1, r2 + itttt ne + strhne r4, [r3, #658] @ movhi + strhne r0, [r3, #660] @ movhi + strhne r1, [r3, #662] @ movhi + strhne r2, [r3, #664] @ movhi +.L3315: + ldr r4, [r7, #608] cmp r8, #1 add r4, r4, #1 add r4, r4, r8, lsl #7 - str r4, [r7, #1640] - bne .L2878 - ldr r3, .L3030+8 - ldr r2, [r3, #2832] - mov r10, r3 - cbnz r2, .L2869 - ldrb r3, [r3, #76] @ zero_extendqisi2 + str r4, [r7, #608] + bne .L3327 + ldr r3, [r6, #1796] + cbnz r3, .L3318 + ldr r3, .L3486+4 + ldrb r3, [r3, #140] @ zero_extendqisi2 cmp r3, #0 - beq .L2878 -.L2869: - ldr r3, [r7, #1052] - ldr r5, .L3030 - cmp r3, #29 - bhi .L2878 - ldr r9, .L3030+12 - ldrh r3, [r9, #-68] + beq .L3327 +.L3318: + ldr r3, [r7, #16] + ldr r5, .L3486+12 + cmp r3, #39 + bhi .L3327 + ldr r10, .L3486+16 + ldrh r3, [r10, #3780] add r4, r4, r3 - str r4, [r5, #1640] + str r4, [r5, #608] bl FtlGcReFreshBadBlk - ldrh r3, [r5, #1072] + ldrh r3, [r5, #40] movw r2, #65535 cmp r3, r2 - bne .L2878 - ldrh r2, [r5, #1690] + bne .L3327 + ldrh r2, [r5, #658] cmp r2, r3 - bne .L2878 - ldr r3, [r5, #1640] + bne .L3327 + ldr r3, [r5, #608] cmp r3, #1024 - bhi .L2870 - ldrh r3, [r5, #832] + bhi .L3319 + ldrh r3, [r5, #-204] cmp r3, #63 - bhi .L2878 -.L2870: - ldrh r3, [r7, #1638] + bhi .L3327 +.L3319: + ldrh r3, [r7, #606] movs r0, #0 - ldrh r4, [r7, #832] + ldrh r4, [r7, #-204] adds r3, r3, #64 - ldr r2, .L3030+12 + ldr r2, .L3486+16 cmp r4, r3 - strh r0, [r9, #-68] @ movhi - ldr r1, .L3030 - bgt .L2878 - ldr r3, [r1, #1052] - str r0, [r1, #1640] - cbnz r3, .L2871 + strh r0, [r10, #3780] @ movhi + ldr r1, .L3486+12 + bgt .L3327 + ldr r3, [r1, #16] + str r0, [r1, #608] + cbnz r3, .L3320 movs r3, #6 - b .L3015 -.L2871: + b .L3473 +.L3320: cmp r3, #5 - bhi .L2872 + bhi .L3321 movs r3, #18 -.L3015: - strh r3, [r2, #-68] @ movhi -.L2872: +.L3473: + strh r3, [r2, #3780] @ movhi +.L3321: movs r0, #32 bl List_get_gc_head_node - movw ip, #65535 - uxth r2, r0 - cmp r2, ip - beq .L2877 - ldrh r0, [r7, #1644] - ldr r5, .L3030 + movw r1, #65535 + uxth ip, r0 + cmp ip, r1 + beq .L3326 + ldrh r0, [r7, #612] + ldr r5, .L3486+12 cmp r0, #0 - beq .L2874 - ldrh r4, [r10, #2912] - ldrh r3, [r10, #2840] - ldr fp, [r5, #816] - muls r3, r4, r3 - ldrh r1, [fp, r2, lsl #1] + beq .L3323 + ldrh lr, [r6, #1874] + ldrh r3, [r6, #1804] + ldr r2, [r5, #-220] + mul r3, r3, lr + ldrh r4, [r2, ip, lsl #1] adds r3, r3, #1 - cmp r1, r3 - bgt .L2877 - adds r1, r0, #1 + cmp r4, r3 + bgt .L3326 + adds r3, r0, #1 + str r1, [sp, #24] str ip, [sp, #20] + mov fp, #0 + uxth r3, r3 str r2, [sp, #16] - mov r10, #0 - uxth r1, r1 - str r10, [r5, #1648] - strh r1, [r5, #1644] @ movhi - str r1, [sp, #12] + strh r3, [r5, #612] @ movhi + str r3, [sp, #12] + str fp, [r5, #616] bl List_get_gc_head_node - ldr ip, [sp, #20] - ldr r1, [sp, #12] - ldr r2, [sp, #16] + ldr r1, [sp, #24] uxth r4, r0 - cmp r4, ip - beq .L2877 - ldrh r2, [fp, r2, lsl #1] - ldrh r3, [fp, r4, lsl #1] - ldr r0, .L3030+16 + ldr r3, [sp, #12] + cmp r4, r1 + ldr r2, [sp, #16] + ldr ip, [sp, #20] + beq .L3326 + ldrh lr, [r2, r4, lsl #1] + mov r1, r3 + ldrh r2, [r2, ip, lsl #1] + ldr r0, .L3486+20 + mov r3, lr str r2, [sp] mov r2, r4 bl printk - ldrh r3, [r5, #1644] + ldrh r3, [r5, #612] cmp r3, #40 - bls .L2875 - ldr r3, [r5, #816] + bls .L3324 + ldr r3, [r5, #-220] ldrh r3, [r3, r4, lsl #1] cmp r3, #32 it hi - strhhi r10, [r5, #1644] @ movhi -.L2875: + strhhi fp, [r5, #612] @ movhi +.L3324: movs r3, #6 - strh r3, [r9, #-68] @ movhi - b .L2894 -.L2874: + strh r3, [r10, #3780] @ movhi + b .L3343 +.L3323: movs r3, #1 - strh r3, [r5, #1644] @ movhi -.L2877: + strh r3, [r5, #612] @ movhi +.L3326: bl GetSwlReplaceBlock movw r3, #65535 cmp r0, r3 mov r4, r0 - bne .L2894 + bne .L3343 movs r3, #0 - strh r3, [r9, #-68] @ movhi -.L2878: - ldrh r3, [r7, #1072] + strh r3, [r10, #3780] @ movhi +.L3327: + ldrh r3, [r7, #40] movw r4, #65535 - ldr r5, .L3030 + ldr r5, .L3486+12 cmp r3, r4 - bne .L3022 - ldrh r4, [r5, #932] + bne .L3478 + ldrh r4, [r5, #-104] cmp r4, r3 - bne .L2879 - ldrh r10, [r5, #1690] - cmp r10, r4 - bne .L2880 - ldrh r3, [r5, #832] - ldr r2, [r5, #1640] + bne .L3328 + ldrh fp, [r5, #658] + cmp fp, r4 + bne .L3329 + ldrh r3, [r5, #-204] + ldr r2, [r5, #608] cmp r3, #24 ite cc movcc r3, #5120 movcs r3, #1024 cmp r2, r3 - bls .L2882 - ldr r2, .L3030+12 + bls .L3331 + ldr r2, .L3486+16 movs r3, #0 - str r3, [r7, #1640] - mov r9, r5 - strh r3, [r2, #-68] @ movhi + str r3, [r7, #608] + strh r3, [r2, #3780] @ movhi bl GetSwlReplaceBlock - cmp r0, r10 + cmp r0, fp mov r4, r0 - bne .L2883 - ldrh r2, [r5, #832] - ldrh r3, [r5, #1638] + bne .L3332 + ldrh r2, [r5, #-204] + ldrh r3, [r5, #606] cmp r2, r3 - bcs .L2884 + bcs .L3333 movs r0, #64 bl List_get_gc_head_node uxth r3, r0 cmp r3, r4 - bne .L3023 -.L2893: + bne .L3479 +.L3342: bl FtlGcReFreshBadBlk cmp r8, #0 - beq .L3024 -.L2894: - ldrh r2, [r7, #932] + beq .L3480 +.L3343: + ldrh r2, [r7, #-104] movw r3, #65535 cmp r2, r3 - bne .L2905 -.L2954: - ldrh r3, [r7, #1690] + bne .L3354 +.L3409: + ldrh r3, [r7, #658] movw r2, #65535 cmp r3, r2 - bne .L2905 + bne .L3354 cmp r4, r3 - bne .L2905 -.L2955: - ldrh r2, [r7, #1072] + bne .L3354 +.L3410: + ldrh r1, [r7, #40] movw r3, #65535 - ldr r4, .L3030 - cmp r2, r3 - beq .L2906 -.L2910: + ldr r2, .L3486+12 + cmp r1, r3 + beq .L3355 +.L3359: movw r4, #65535 - b .L2905 -.L2906: + b .L3354 +.L3355: movs r3, #0 - ldrh r9, [r4, #832] - str r3, [r4, #1648] - ldrh r3, [r4, #1636] - ldr r5, .L3030+12 - cmp r3, r9 - bcs .L2907 - ldrh r3, [r5, #-68] - cbnz r3, .L2908 - ldr r3, .L3030+8 - ldr r2, [r4, #988] - ldr r3, [r3, #2968] + ldrh r1, [r2, #-204] + str r3, [r2, #616] + ldrh r3, [r2, #604] + ldr r4, .L3486+16 + cmp r1, r3 + bls .L3356 + ldrh r3, [r4, #3780] + cbnz r3, .L3357 + ldr r3, [r6, #1932] + ldr r2, [r2, #-48] add r3, r3, r3, lsl #1 cmp r2, r3, lsr #2 - bcs .L2966 -.L2908: - ldrh r3, [r7, #1056] + bcs .L3423 +.L3357: + ldrh r3, [r7, #20] add r3, r3, r3, lsl #1 ubfx r3, r3, #2, #16 - b .L2909 -.L2966: + b .L3358 +.L3423: movs r3, #18 -.L2909: - strh r3, [r7, #1636] @ movhi - b .L3019 -.L2907: - ldrh r0, [r5, #-68] - cmp r0, #0 - bne .L2910 - ldrh r6, [r4, #1056] - add r3, r6, r6, lsl #1 - asrs r3, r3, #2 - strh r3, [r4, #1636] @ movhi +.L3358: + strh r3, [r7, #604] @ movhi + bl FtlReadRefresh + movs r0, #0 bl List_get_gc_head_node - ldr r2, .L3030+8 - ldr r3, [r4, #816] - ldrh r1, [r2, #2912] - ldrh r4, [r2, #2840] - muls r4, r1, r4 - add r4, r4, r4, lsr #31 + ldr r3, [r7, #-220] uxth r0, r0 ldrh r3, [r3, r0, lsl #1] - cmp r3, r4, asr #1 - ble .L2911 - subs r6, r6, #1 - cmp r9, r6 - blt .L2911 -.L3019: + cmp r3, #4 + bls .L3356 + ldrh r0, [r4, #3780] + b .L3312 +.L3356: + ldrh r0, [r4, #3780] + cmp r0, #0 + bne .L3359 + ldrh r4, [r7, #20] + add r3, r4, r4, lsl #1 + asrs r3, r3, #2 + strh r3, [r7, #604] @ movhi + bl List_get_gc_head_node + ldr r3, [r7, #-220] + ldrh r1, [r6, #1874] + uxth r0, r0 + ldrh r2, [r3, r0, lsl #1] + ldrh r3, [r6, #1804] + muls r3, r1, r3 + add r3, r3, r3, lsr #31 + cmp r2, r3, asr #1 + ble .L3360 + ldr r3, .L3486+12 + subs r4, r4, #1 + ldrh r3, [r3, #-204] + cmp r3, r4 + blt .L3360 bl FtlReadRefresh - b .L3020 -.L2911: - cmp r3, #0 - bne .L2910 + b .L3477 +.L3487: + .align 2 +.L3486: + .word __stack_chk_guard + .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR2 + .word .LANCHOR5 + .word .LC151 +.L3360: + cmp r2, #0 + bne .L3359 movw r0, #65535 bl decrement_vpc_count - ldrh r0, [r7, #832] + ldrh r0, [r7, #-204] adds r0, r0, #1 - b .L3014 -.L2905: - ldr r3, .L3030+8 - ldr r3, [r3, #2832] + b .L3312 +.L3354: + ldr r3, [r6, #1796] cmp r3, #0 ite eq moveq r5, #1 movne r5, #2 - b .L2904 -.L3031: - .align 2 -.L3030: - .word .LANCHOR2 - .word .LANCHOR1 - .word .LANCHOR0 - .word .LANCHOR4 - .word .LC134 -.L3024: + b .L3353 +.L3480: movw r3, #65535 cmp r4, r3 - bne .L2894 -.L2953: - ldrh r4, [r7, #832] + bne .L3343 +.L3408: + ldrh r4, [r7, #-204] cmp r4, #24 - bhi .L2962 - ldr r3, .L3032 + bhi .L3419 cmp r4, #16 - ldrh r5, [r3, #2910] - bls .L2896 + ldrh r5, [r6, #1872] + bls .L3345 lsrs r5, r5, #5 -.L2895: - ldrh r3, [r7, #1636] - ldr r2, .L3032+4 +.L3344: + ldrh r3, [r7, #604] + ldr r2, .L3488 cmp r3, r4 - bcc .L3025 -.L2899: - ldr r3, .L3032 - ldr r3, [r3, #2832] + bcc .L3481 +.L3348: + ldr r3, [r6, #1796] cmp r3, #0 - bne .L3026 -.L2965: + bne .L3482 +.L3422: movw r4, #65535 -.L2904: - ldrh r2, [r7, #1072] +.L3353: + ldrh r2, [r7, #40] movw r1, #65535 - ldr r3, .L3032+4 + ldr r3, .L3488 cmp r2, r1 - bne .L2913 + bne .L3362 cmp r4, r2 - beq .L2914 - strh r4, [r3, #1072] @ movhi - b .L2915 -.L2914: - ldrh r2, [r3, #1690] + beq .L3363 + strh r4, [r3, #40] @ movhi + b .L3364 +.L3363: + ldrh r2, [r3, #658] cmp r2, r4 - beq .L2915 - ldr r1, [r3, #816] + beq .L3364 + ldr r1, [r3, #-220] ldrh r2, [r1, r2, lsl #1] - cbnz r2, .L2916 - strh r4, [r3, #1690] @ movhi -.L2916: - ldrh r3, [r7, #1690] - strh r3, [r7, #1072] @ movhi + cbnz r2, .L3365 + strh r4, [r3, #658] @ movhi +.L3365: + ldrh r3, [r7, #658] + strh r3, [r7, #40] @ movhi movw r3, #65535 - strh r3, [r7, #1690] @ movhi -.L2915: - ldrh r0, [r7, #1072] - movw r6, #65535 + strh r3, [r7, #658] @ movhi +.L3364: + ldrh r0, [r7, #40] + movw r9, #65535 movs r3, #0 - strb r3, [r7, #1080] - cmp r0, r6 - beq .L2913 + strb r3, [r7, #48] + cmp r0, r9 + beq .L3362 bl IsBlkInGcList - cbz r0, .L2918 - ldr r3, .L3032+4 - strh r6, [r3, #1072] @ movhi -.L2918: - ldr r3, .L3032 - ldrb r3, [r3, #76] @ zero_extendqisi2 - cbz r3, .L2919 - ldrh r0, [r7, #1072] + cbz r0, .L3367 + ldr r3, .L3488 + strh r9, [r3, #40] @ movhi +.L3367: + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbz r3, .L3368 + ldrh r0, [r7, #40] bl ftl_get_blk_mode - strb r0, [r7, #1080] -.L2919: - ldrh r2, [r7, #1072] + strb r0, [r7, #48] +.L3368: + ldrh r2, [r7, #40] movw r3, #65535 - ldr r6, .L3032+4 + ldr r6, .L3488 cmp r2, r3 - beq .L2913 - add r0, r6, #1072 + beq .L3362 + add r0, r6, #40 bl make_superblock - ldr r2, .L3032+8 + ldr r2, .L3488+4 movs r3, #0 - ldrh r1, [r6, #1072] - strh r3, [r6, #1074] @ movhi - strb r3, [r6, #1078] - strh r3, [r2, #-66] @ movhi - ldr r3, [r6, #816] + ldrh r1, [r6, #40] + strh r3, [r6, #42] @ movhi + strb r3, [r6, #46] + strh r3, [r2, #3782] @ movhi + ldr r3, [r6, #-220] ldrh r3, [r3, r1, lsl #1] - strh r3, [r2, #-64] @ movhi -.L2913: - ldrh r3, [r7, #1072] - ldrh r2, [r7, #836] + strh r3, [r2, #3784] @ movhi +.L3362: + ldrh r3, [r7, #40] + ldrh r1, [r7, #-200] + ldr r2, .L3488 + cmp r1, r3 + beq .L3369 + ldrh r1, [r2, #-152] + cmp r1, r3 + beq .L3369 + ldrh r2, [r2, #-104] cmp r2, r3 - beq .L2920 - ldr r2, .L3032+4 - ldrh r2, [r2, #884] - cmp r2, r3 - beq .L2920 -.L2921: - ldr r7, .L3032 - b .L2922 -.L2920: + bne .L3370 +.L3369: movw r3, #65535 - strh r3, [r7, #1072] @ movhi - b .L3021 -.L2943: - ldrh r3, [r6, #1074] - add r5, r5, r3 - ldr r3, [sp, #12] - uxth r5, r5 - strh r5, [r6, #1074] @ movhi - cmp r5, r3 - bcs .L3027 -.L2945: - ldrh r3, [r6, #832] - cmp r3, #2 - bhi .L2948 - ldrh r5, [r7, #2910] -.L2922: - ldr r6, .L3032+4 + strh r3, [r7, #40] @ movhi +.L3370: + ldr r7, .L3488+8 +.L3403: + ldr r6, .L3488 movw r3, #65535 - ldrh r2, [r6, #1072] + ldrh r2, [r6, #40] mov fp, r6 cmp r2, r3 - bne .L2923 + bne .L3371 mov r10, r6 movs r3, #0 - str r3, [r6, #1648] -.L2924: - ldrh r9, [fp, #1644] + str r3, [r6, #616] +.L3372: + ldrh r9, [fp, #612] mov r0, r9 bl List_get_gc_head_node movw r2, #65535 uxth r3, r0 - strh r3, [fp, #1072] @ movhi + strh r3, [fp, #40] @ movhi cmp r3, r2 - bne .L2925 - ldr r3, .L3032+4 + bne .L3373 + ldr r3, .L3488 movs r2, #0 movs r0, #8 - strh r2, [r3, #1644] @ movhi - b .L3014 -.L2925: + strh r2, [r3, #612] @ movhi + b .L3312 +.L3373: mov r0, r3 str r3, [sp, #12] bl IsBlkInGcList add r9, r9, #1 ldr r3, [sp, #12] - cbz r0, .L2926 - strh r9, [r10, #1644] @ movhi - b .L2924 -.L2926: - ldrh lr, [r7, #2840] + cbz r0, .L3374 + strh r9, [r10, #612] @ movhi + b .L3372 +.L3374: + ldrh lr, [r7, #1804] uxth r9, r9 - ldrh r2, [r7, #2910] - ldr r1, [r10, #816] - strh r9, [r10, #1644] @ movhi + ldrh r2, [r7, #1872] + ldr r1, [r10, #-220] + strh r9, [r10, #612] @ movhi mul r2, lr, r2 ldrh r0, [r1, r3, lsl #1] add lr, r2, r2, lsr #31 cmp r0, lr, asr #1 - bgt .L2928 + bgt .L3376 cmp r9, #48 - bls .L2929 + bls .L3377 cmp r0, #8 - bls .L2929 - ldrh r0, [r10, #1680] + bls .L3377 + ldrh r0, [r10, #648] cmp r0, #35 - bhi .L2929 -.L2928: + bhi .L3377 +.L3376: movs r0, #0 - strh r0, [fp, #1644] @ movhi -.L2929: + strh r0, [fp, #612] @ movhi +.L3377: ldrh r1, [r1, r3, lsl #1] cmp r1, r2 - blt .L2930 + blt .L3378 movw r2, #65535 cmp r4, r2 - bne .L2930 + bne .L3378 + ldrh r0, [fp, #612] + ldr r2, .L3488 + cmp r0, #3 + bhi .L3378 movs r3, #0 - strh r4, [fp, #1072] @ movhi - strh r3, [fp, #1644] @ movhi -.L3021: - ldr r3, .L3032+8 - ldrh r0, [r3, #-68] - b .L3014 -.L2930: - cbnz r1, .L2931 + strh r4, [r2, #40] @ movhi + strh r3, [r2, #612] @ movhi +.L3477: + ldr r3, .L3488+4 + ldrh r0, [r3, #3780] + b .L3312 +.L3378: + cbnz r1, .L3379 movw r0, #65535 bl decrement_vpc_count - ldrh r3, [fp, #1644] + ldrh r3, [fp, #612] adds r3, r3, #1 - strh r3, [fp, #1644] @ movhi - b .L2924 -.L2931: + strh r3, [fp, #612] @ movhi + b .L3372 +.L3379: movs r2, #0 - strb r2, [r6, #1080] - ldr r2, .L3032 - ldrb r2, [r2, #76] @ zero_extendqisi2 - cbz r2, .L2932 + strb r2, [r6, #48] + ldr r2, .L3488+8 + ldrb r2, [r2, #140] @ zero_extendqisi2 + cbz r2, .L3380 mov r0, r3 bl ftl_get_blk_mode - ldr r3, .L3032+4 - strb r0, [r3, #1080] -.L2932: - ldr r0, .L3032+12 + ldr r3, .L3488 + strb r0, [r3, #48] +.L3380: + ldr r0, .L3488+12 bl make_superblock - ldr r2, .L3032+8 - ldrh r0, [r6, #1072] + ldr r2, .L3488+4 + ldrh r0, [r6, #40] movs r3, #0 - ldr r1, [r6, #816] - strh r3, [r2, #-66] @ movhi + ldr r1, [r6, #-220] + strh r3, [r2, #3782] @ movhi ldrh r1, [r1, r0, lsl #1] - strh r3, [r6, #1074] @ movhi - strb r3, [r6, #1078] - strh r1, [r2, #-64] @ movhi -.L2923: + strh r3, [r6, #42] @ movhi + strb r3, [r6, #46] + strh r1, [r2, #3784] @ movhi +.L3371: cmp r8, #1 - bne .L2933 + bne .L3381 bl FtlReadRefresh -.L2933: +.L3381: movs r3, #1 str r3, [r6, #1740] - ldrh r3, [r7, #2910] + ldrh r3, [r7, #1872] str r3, [sp, #12] - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbz r3, .L2934 - ldr r3, .L3032+4 - ldrb r3, [r3, #1080] @ zero_extendqisi2 + ldrb r3, [r7, #140] @ zero_extendqisi2 + cbz r3, .L3382 + ldr r3, .L3488 + ldrb r3, [r3, #48] @ zero_extendqisi2 cmp r3, #1 itt eq - ldrheq r3, [r7, #2912] + ldrheq r3, [r7, #1874] streq r3, [sp, #12] -.L2934: - ldrh r3, [r6, #1074] +.L3382: + ldrh r3, [r6, #42] ldr r1, [sp, #12] adds r2, r3, r5 cmp r2, r1 @@ -18197,29 +20990,29 @@ ftl_do_gc: subgt r3, r2, r3 uxthgt r5, r3 movs r3, #0 -.L3018: +.L3476: str r3, [sp, #16] ldrh r3, [sp, #16] - ldr r6, .L3032+4 + ldr r6, .L3488 cmp r3, r5 - bcs .L2943 - ldr r3, [r6, #1668] - addw r1, r6, #1086 + bcs .L3391 + ldr r3, [r6, #636] + add r1, r6, #54 ldr r2, [sp, #16] movw lr, #65535 - ldrh r10, [r7, #2840] + ldrh r10, [r7, #1804] str r3, [sp, #20] - ldrh r3, [r6, #1074] + ldrh r3, [r6, #42] add ip, r3, r2 movs r3, #0 mov r9, r3 -.L2944: +.L3392: uxth r2, r3 cmp r2, r10 - bcs .L3028 + bcs .L3483 ldrh r2, [r1, #2]! cmp r2, lr - beq .L2937 + beq .L3385 ldr r0, [sp, #20] mov fp, #36 orr r2, ip, r2, lsl #10 @@ -18227,74 +21020,74 @@ ftl_do_gc: add r9, r9, #1 uxth r9, r9 str r2, [fp, #4] -.L2937: +.L3385: adds r3, r3, #1 - b .L2944 -.L3033: + b .L3392 +.L3489: .align 2 -.L3032: - .word .LANCHOR0 +.L3488: .word .LANCHOR2 - .word .LANCHOR4 - .word .LANCHOR2+1072 -.L3028: - ldr r0, [r6, #1668] + .word .LANCHOR5 + .word .LANCHOR0 + .word .LANCHOR2+40 +.L3483: + ldr r0, [r6, #636] mov r1, r9 - ldrb r2, [r6, #1080] @ zero_extendqisi2 + ldrb r2, [r6, #48] @ zero_extendqisi2 mov fp, #0 bl FlashReadPages - ldr r6, .L3034 -.L2939: + ldr r6, .L3490 +.L3387: uxth r3, fp cmp r3, r9 - bcs .L3029 + bcs .L3484 mov ip, #36 - ldr r2, [r6, #1668] + ldr r2, [r6, #636] mul r10, ip, fp add r3, r2, r10 ldr r2, [r2, r10] ldr r3, [r3, #12] adds r2, r2, #1 - beq .L2968 + beq .L3426 ldrh r1, [r3] movw r2, #61589 cmp r1, r2 - bne .L2968 + bne .L3426 add r1, sp, ip ldr r0, [r3, #8] movs r2, #0 str ip, [sp, #24] str r3, [sp, #20] bl log2phys - ldr r1, [r6, #1668] - ldr r2, [sp, #36] + ldr r1, [r6, #636] add r1, r1, r10 + ldr r0, [r1, #4] + ldr r2, [sp, #36] ldr r3, [sp, #20] bic r2, r2, #-2147483648 ldr ip, [sp, #24] - ldr r0, [r1, #4] cmp r2, r0 - bne .L2968 + bne .L3426 str r3, [sp, #28] - ldr r3, .L3034+4 - ldr r0, [r6, #1652] + ldr r3, .L3490+4 + ldr r0, [r6, #620] ldr r1, [r1, #16] - ldrh r2, [r3, #-66] + ldrh r2, [r3, #3782] adds r2, r2, #1 - strh r2, [r3, #-66] @ movhi + strh r2, [r3, #3782] @ movhi ldr r2, [r6, #1768] mla r2, ip, r0, r2 str r1, [r2, #16] str r2, [sp, #20] bl Ftl_get_new_temp_ppa + ldr r1, [r6, #620] ldr r2, [sp, #20] - ldr r1, [r6, #1652] ldr ip, [sp, #24] ldr r3, [sp, #28] str r0, [r2, #4] ldr r2, [r6, #1768] mla ip, ip, r1, r2 - ldr r2, [r6, #1668] + ldr r2, [r6, #636] add r2, r2, r10 ldr r1, [r2, #8] str r1, [ip, #8] @@ -18303,243 +21096,290 @@ ftl_do_gc: str r2, [ip, #12] ldr r2, [sp, #36] str r2, [r3, #12] - ldrh r2, [r6, #932] + ldrh r2, [r6, #-104] strh r2, [r3, #2] @ movhi - ldr r2, [r6, #1032] - ldr r0, [r6, #1668] + ldr r2, [r6, #-4] + ldr r0, [r6, #636] str r2, [r3, #4] add r0, r0, r10 - ldr r3, [r6, #1652] + ldr r3, [r6, #620] adds r3, r3, #1 - str r3, [r6, #1652] + str r3, [r6, #620] bl FtlGcBufAlloc - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbnz r3, .L2941 - ldrb r3, [r6, #939] @ zero_extendqisi2 - ldr r2, [r6, #1652] + ldrb r3, [r7, #140] @ zero_extendqisi2 + cbnz r3, .L3389 + ldrb r3, [r6, #-97] @ zero_extendqisi2 + ldr r2, [r6, #620] cmp r2, r3 - beq .L2941 - ldrh r3, [r6, #936] - cbnz r3, .L2968 -.L2941: + beq .L3389 + ldrh r3, [r6, #-100] + cbnz r3, .L3426 +.L3389: bl Ftl_gc_temp_data_write_back - cbz r0, .L2968 - ldr r3, .L3034 + cbz r0, .L3426 + ldr r3, .L3490 movs r2, #0 + movw r1, #65535 str r2, [r3, #1740] - b .L3021 -.L2968: + strh r1, [r3, #40] @ movhi + strh r2, [r3, #42] @ movhi + b .L3477 +.L3426: add fp, fp, #1 - b .L2939 -.L3029: + b .L3387 +.L3484: ldr r3, [sp, #16] adds r3, r3, #1 - b .L3018 -.L3027: - ldr r3, [r6, #1652] - ldr r5, .L3034+4 - cbz r3, .L2946 + b .L3476 +.L3391: + ldrh r3, [r6, #42] + add r5, r5, r3 + ldr r3, [sp, #12] + uxth r5, r5 + strh r5, [r6, #42] @ movhi + cmp r5, r3 + bcc .L3393 + ldr r3, [r6, #620] + ldr r5, .L3490+4 + cbz r3, .L3394 bl Ftl_gc_temp_data_write_back - cbz r0, .L2946 + cbz r0, .L3394 movs r3, #0 + ldrh r0, [r5, #3780] str r3, [r6, #1740] -.L3020: - ldrh r0, [r5, #-68] - b .L3014 -.L2946: - ldrh r1, [r5, #-66] - cbnz r1, .L2947 - ldrh r2, [r6, #1072] - ldr r3, [r6, #816] - ldrh r0, [r3, r2, lsl #1] - cbz r0, .L2947 + b .L3312 +.L3394: + ldrh r5, [r5, #3782] + cbnz r5, .L3395 + ldrh r2, [r6, #40] + ldr r3, [r6, #-220] + ldrh r3, [r3, r2, lsl #1] + cbz r3, .L3395 +.L3396: + ldr r3, [r7, #1932] + cmp r5, r3 + bcs .L3401 + mov r0, r5 + add r1, sp, #40 + movs r2, #0 + bl log2phys + ldr r0, [sp, #40] + adds r3, r0, #1 + beq .L3397 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r6, #40] + cmp r3, r0 + bne .L3397 +.L3401: + ldr r3, .L3490+8 + ldr r3, [r3, #1932] + cmp r5, r3 + bcc .L3395 + ldrh r2, [r6, #40] + movs r1, #0 + ldr r3, [r6, #-220] strh r1, [r3, r2, lsl #1] @ movhi - ldr r3, .L3034 - ldrh r0, [r3, #1072] + ldrh r0, [r6, #40] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush -.L2947: + b .L3395 +.L3397: + adds r5, r5, #1 + b .L3396 +.L3395: movw r3, #65535 - strh r3, [r6, #1072] @ movhi - b .L2945 -.L2948: - ldr r2, .L3034 + strh r3, [r6, #40] @ movhi +.L3393: + ldrh r3, [r6, #-204] + cmp r3, #2 + bhi .L3402 + ldrh r5, [r7, #1872] + b .L3403 +.L3402: + ldr r2, .L3490 movs r1, #0 str r1, [r2, #1740] - ldr r2, .L3034+4 - ldrh r0, [r2, #-68] - cmp r0, #0 - bne .L3014 + ldr r2, .L3490+4 + ldrh r0, [r2, #3780] + cbnz r0, .L3312 adds r0, r3, #1 - b .L3014 -.L2956: + b .L3312 +.L3412: movs r0, #0 - b .L3014 -.L2958: - mov r0, r3 - b .L3014 -.L3023: + b .L3312 +.L3415: + mov r0, r4 + b .L3312 +.L3481: + ldrh r3, [r2, #-104] + movw r1, #65535 + cmp r3, r1 + bne .L3349 + ldrh r1, [r2, #658] + cmp r1, r3 + bne .L3349 + ldr r3, .L3490+4 + ldrh r0, [r3, #3780] + cmp r0, #0 + beq .L3485 +.L3350: + ldrh r3, [r7, #20] + add r3, r3, r3, lsl #1 + ubfx r3, r3, #2, #16 +.L3351: + strh r3, [r7, #604] @ movhi + movs r3, #0 + str r3, [r7, #616] +.L3312: + ldr r3, .L3490+12 + ldr r2, [sp, #44] + ldr r3, [r3] + cmp r2, r3 + beq .L3411 + bl __stack_chk_fail +.L3479: ldr r2, [r5, #1736] - ldr r5, .L3034+8 - cbnz r2, .L2886 - ldrh r2, [r5, #2860] - cmp r2, #3 - beq .L2886 - ldr r2, [r9, #1120] - cbnz r2, .L2886 - ldr r2, [r5, #2832] - cbnz r2, .L2886 - ldrb r0, [r5, #76] @ zero_extendqisi2 - cbz r0, .L2887 -.L2886: - ldr r2, [r7, #816] - ldrh r0, [r5, #2860] + cbnz r2, .L3335 + ldrh r1, [r6, #1824] + ldr r2, .L3490+8 + cmp r1, #3 + beq .L3335 + ldr r1, [r5, #88] + cbnz r1, .L3335 + ldr r1, [r2, #1796] + cbnz r1, .L3335 + ldrb r0, [r2, #140] @ zero_extendqisi2 + cbz r0, .L3336 +.L3335: + ldr r2, [r7, #-220] + ldrh r0, [r6, #1824] ldrh r1, [r2, r3, lsl #1] cmp r0, #3 - ldrh r3, [r5, #2912] - ldrh r2, [r5, #2840] + ldrh r3, [r6, #1874] + ldrh r2, [r6, #1804] mul r2, r2, r3 ite eq lsreq r3, r3, #1 movne r3, #0 add r3, r3, r2 cmp r1, r3 - bgt .L2889 + bgt .L3338 movs r0, #0 bl List_get_gc_head_node - ldr r3, [r5, #2968] - ldr r2, .L3034 - ldr r1, [r7, #988] + ldr r3, [r6, #1932] + ldr r2, .L3490 + ldr r1, [r7, #-48] add r3, r3, r3, lsl #1 cmp r1, r3, lsr #2 ite hi movhi r3, #128 movls r3, #160 - strh r3, [r2, #1638] @ movhi + strh r3, [r2, #606] @ movhi uxth r4, r0 - b .L2891 -.L2889: + b .L3340 +.L3338: movs r3, #128 - b .L3017 -.L2887: - ldr r2, [r9, #816] + b .L3475 +.L3336: + ldr r2, [r5, #-220] ldrh r3, [r2, r3, lsl #1] cmp r3, #7 - bhi .L2892 + bhi .L3341 bl List_get_gc_head_node movs r3, #128 - strh r3, [r7, #1638] @ movhi + strh r3, [r7, #606] @ movhi uxth r4, r0 - b .L2891 -.L2892: + b .L3340 +.L3341: movs r3, #64 -.L3017: - strh r3, [r7, #1638] @ movhi - b .L2893 -.L2884: +.L3475: + strh r3, [r7, #606] @ movhi + b .L3342 +.L3333: movs r3, #80 - strh r3, [r5, #1638] @ movhi - b .L2893 -.L2891: + strh r3, [r5, #606] @ movhi + b .L3342 +.L3340: movw r3, #65535 cmp r4, r3 - beq .L2893 -.L2883: - ldr r1, [r7, #752] - ldr r3, [r7, #816] - ldrh r2, [r7, #832] + beq .L3342 +.L3332: + ldr r1, [r6, #4060] + ldr r3, [r7, #-220] + ldrh r2, [r7, #-204] ldrh r1, [r1, r4, lsl #1] ldrh r3, [r3, r4, lsl #1] - ldr r0, .L3034+12 + ldr r0, .L3490+16 str r1, [sp] - ldrh r1, [r7, #1636] + ldrh r1, [r7, #604] str r1, [sp, #4] mov r1, r4 bl printk - b .L2893 -.L2896: + b .L3342 +.L3345: cmp r4, #12 - bls .L2897 + bls .L3346 lsrs r5, r5, #4 - b .L2895 -.L2897: + b .L3344 +.L3346: cmp r4, #8 - bls .L2895 + bls .L3344 lsrs r5, r5, #2 - b .L2895 -.L2962: + b .L3344 +.L3419: movs r5, #1 - b .L2895 -.L3025: - ldrh r3, [r2, #932] - movw r1, #65535 - cmp r3, r1 - bne .L2900 - ldrh r1, [r2, #1690] - cmp r1, r3 - bne .L2900 - ldr r3, .L3034+4 - ldrh r0, [r3, #-68] - cbnz r0, .L2901 - ldr r3, .L3034+8 - ldr r2, [r2, #988] - ldr r3, [r3, #2968] + b .L3344 +.L3491: + .align 2 +.L3490: + .word .LANCHOR2 + .word .LANCHOR5 + .word .LANCHOR0 + .word __stack_chk_guard + .word .LC152 +.L3485: + ldr r3, [r6, #1932] + ldr r2, [r2, #-48] add r3, r3, r3, lsl #1 cmp r2, r3, lsr #2 - bcs .L2963 -.L2901: - ldrh r3, [r7, #1056] - add r3, r3, r3, lsl #1 - ubfx r3, r3, #2, #16 - b .L2902 -.L2963: + bcc .L3350 movs r3, #18 -.L2902: - strh r3, [r7, #1636] @ movhi - movs r3, #0 - str r3, [r7, #1648] - b .L3014 -.L2900: - ldrh r3, [r7, #1056] + b .L3351 +.L3349: + ldrh r3, [r7, #20] add r3, r3, r3, lsl #1 asrs r3, r3, #2 - strh r3, [r7, #1636] @ movhi - b .L2899 -.L3026: - cmp r6, #2 - bhi .L2965 + strh r3, [r7, #604] @ movhi + b .L3348 +.L3482: + cmp r9, #2 + bhi .L3422 adds r5, r5, #1 uxth r5, r5 - b .L2965 -.L3022: + b .L3422 +.L3478: cmp r8, #0 - beq .L2953 - b .L2894 -.L2879: + beq .L3408 + b .L3343 +.L3329: cmp r8, #0 - beq .L2953 - b .L2910 -.L2880: + beq .L3408 + b .L3409 +.L3328: cmp r8, #0 - beq .L2953 - b .L2954 -.L2882: + beq .L3408 + b .L3359 +.L3331: cmp r8, #0 - beq .L2953 - b .L2955 -.L3014: - add sp, sp, #44 + beq .L3408 + b .L3410 +.L3411: + add sp, sp, #52 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3035: - .align 2 -.L3034: - .word .LANCHOR2 - .word .LANCHOR4 - .word .LANCHOR0 - .word .LC135 .fnend .size ftl_do_gc, .-ftl_do_gc .align 1 @@ -18549,195 +21389,216 @@ ftl_do_gc: .type FtlCacheWriteBack, %function FtlCacheWriteBack: .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} + ldr r3, .L3536 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r3, .L3078 - ldr r6, .L3078+4 - ldr r5, [r3, #-60] - ldr r3, [r6, #744] - cmp r3, #0 - bne .L3038 - ldr r4, .L3078+8 - ldr r1, [r4, #2960] + .pad #20 + sub sp, sp, #20 + ldr r2, [r3] + ldr r4, .L3536+4 + str r3, [sp, #4] + str r2, [sp, #12] + ldr r2, .L3536+8 + ldr r5, [r2, #3788] + ldr r2, [r4, #4052] + cmp r2, #0 + bne .L3494 + ldr r1, [r4, #1924] cmp r1, #0 - beq .L3038 - ldrb r7, [r4, #76] @ zero_extendqisi2 - cbz r7, .L3040 + beq .L3494 + ldrb r7, [r4, #140] @ zero_extendqisi2 + cbz r7, .L3496 ldrb r7, [r5, #8] @ zero_extendqisi2 subs r0, r7, #1 rsbs r7, r0, #0 adcs r7, r7, r0 -.L3040: - ldr r0, [r4, #2964] +.L3496: + ldr r0, [r4, #1928] mov r2, r7 ldrb r3, [r5, #9] @ zero_extendqisi2 - mov r9, #0 + mov r8, #0 bl FlashProgPages - ldr r10, .L3078+8 - mov fp, #36 -.L3041: - ldr r3, [r4, #2960] - cmp r9, r3 - bcs .L3058 - mul r8, fp, r9 - ldr r3, [r10, #2964] - add r2, r3, r8 - ldr r3, [r3, r8] + ldr r9, .L3536+4 + ldr r10, .L3536+16 +.L3497: + ldr r3, [r4, #1924] + cmp r8, r3 + bcs .L3515 + movs r6, #36 + ldr r3, [r9, #1928] + mul r6, r6, r8 + adds r2, r3, r6 + ldr r3, [r3, r6] adds r3, r3, #1 - beq .L3061 + beq .L3519 ldr r3, [r2, #4] - cbz r7, .L3074 + cbz r7, .L3532 orr r3, r3, #-2147483648 -.L3074: +.L3532: ldr r0, [r2, #16] - add r1, sp, #4 + add r1, sp, #8 movs r2, #1 - str r3, [sp, #4] + str r3, [sp, #8] bl log2phys - ldr r3, [r4, #2964] - add r8, r8, r3 - ldr r3, [r8, #12] + ldr r3, [r4, #1928] + add r6, r6, r3 + ldr r3, [r6, #12] ldr r0, [r3, #12] adds r2, r0, #1 - beq .L3045 + beq .L3501 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, [r6, #816] + ldr r3, [r10, #-220] ldrh r2, [r3, r0, lsl #1] - mov r8, r0 - cbnz r2, .L3046 - ldr r0, .L3078+12 - mov r1, r8 + mov r6, r0 + cbnz r2, .L3502 + ldr r0, .L3536+12 + mov r1, r6 bl printk -.L3046: - mov r0, r8 +.L3502: + mov r0, r6 bl decrement_vpc_count -.L3045: - add r9, r9, #1 - b .L3041 -.L3076: +.L3501: + add r8, r8, #1 + b .L3497 +.L3534: + ldr r6, .L3536+16 movw r5, #16386 -.L3057: - ldrh r3, [r6, #1694] - cbz r3, .L3058 +.L3514: + ldrh r3, [r6, #666] + cbz r3, .L3515 movs r0, #1 mov r1, r0 bl ftl_do_gc subs r5, r5, #1 - bne .L3057 -.L3058: + bne .L3514 +.L3515: movs r3, #0 - str r3, [r4, #2960] - b .L3038 -.L3061: - ldr r10, .L3078+8 - mov r9, #0 -.L3042: - ldr r3, [r4, #2960] - cmp r9, r3 - bcs .L3076 - mov r8, #36 - ldr r3, [r10, #2964] + str r3, [r4, #1924] + b .L3494 +.L3519: + ldr r10, .L3536+4 + mov r8, #0 + ldr r9, .L3536+16 +.L3498: + ldr r3, [r4, #1924] + cmp r8, r3 + bcs .L3534 + movs r6, #36 + ldr r3, [r10, #1928] mov fp, #0 mov r2, #-1 - mul r8, r8, r9 - str r2, [r3, r8] -.L3048: - ldr r3, [r4, #2964] - add r2, r3, r8 - ldr r3, [r3, r8] + mul r6, r6, r8 + str r2, [r3, r6] +.L3504: + ldr r3, [r4, #1928] + adds r2, r3, r6 + ldr r3, [r3, r6] adds r3, r3, #1 - bne .L3077 + bne .L3535 ldr r0, [r2, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane ldrh r3, [r5] cmp r3, r0 - bne .L3049 - ldr r1, [r6, #816] + bne .L3505 + ldr r1, [r9, #-220] ldrh r0, [r5, #4] ldrh r2, [r1, r3, lsl #1] subs r2, r2, r0 strh r2, [r1, r3, lsl #1] @ movhi - ldrh r3, [r10, #2910] + ldrh r3, [r10, #1872] strb fp, [r5, #6] strh fp, [r5, #4] @ movhi strh r3, [r5, #2] @ movhi -.L3049: +.L3505: ldrh r3, [r5, #4] - cbnz r3, .L3050 + cbnz r3, .L3506 mov r0, r5 bl allocate_new_data_superblock -.L3050: - ldr r3, [r6, #1220] +.L3506: + ldr r3, [r9, #188] adds r3, r3, #1 - str r3, [r6, #1220] - ldr r3, [r4, #2964] - add r3, r3, r8 + str r3, [r9, #188] + ldr r3, [r4, #1928] + 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, #2964] + ldr r3, [r4, #1928] movs r1, #1 mov r2, r7 - add r3, r3, r8 - str r0, [sp, #4] + add r3, r3, r6 + str r0, [sp, #8] str r0, [r3, #4] mov r0, r3 ldrb r3, [r5, #9] @ zero_extendqisi2 bl FlashProgPages - ldr r3, [r6, #744] + ldr r3, [r4, #1928] + ldr r3, [r3, r6] + adds r3, r3, #1 + itt eq + moveq r3, #1 + streq r3, [r10, #4052] + ldr r3, [r4, #4052] cmp r3, #0 - beq .L3048 - b .L3038 -.L3077: + beq .L3504 + b .L3494 +.L3535: ldr r3, [r2, #4] - cbz r7, .L3075 + cbz r7, .L3533 orr r3, r3, #-2147483648 -.L3075: +.L3533: ldr r0, [r2, #16] - add r1, sp, #4 + add r1, sp, #8 movs r2, #1 - str r3, [sp, #4] + str r3, [sp, #8] bl log2phys - ldr r3, [r4, #2964] - add r8, r8, r3 - ldr r3, [r8, #12] + ldr r3, [r4, #1928] + add r6, r6, r3 + ldr r3, [r6, #12] ldr r0, [r3, #12] adds r3, r0, #1 - beq .L3054 + beq .L3511 ubfx r0, r0, #10, #16 bl P2V_block_in_plane - ldr r3, [r6, #816] + ldr r3, [r9, #-220] ldrh r2, [r3, r0, lsl #1] - mov r8, r0 - cbnz r2, .L3055 - ldr r0, .L3078+12 - mov r1, r8 + mov r6, r0 + cbnz r2, .L3512 + ldr r0, .L3536+12 + mov r1, r6 bl printk -.L3055: - mov r0, r8 +.L3512: + mov r0, r6 bl decrement_vpc_count -.L3054: - add r9, r9, #1 - b .L3042 -.L3038: +.L3511: + add r8, r8, #1 + b .L3498 +.L3494: + ldr r3, [sp, #4] movs r0, #0 - add sp, sp, #12 + ldr r2, [sp, #12] + ldr r3, [r3] + cmp r2, r3 + beq .L3517 + bl __stack_chk_fail +.L3517: + add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3079: +.L3537: .align 2 -.L3078: - .word .LANCHOR4 - .word .LANCHOR2 +.L3536: + .word __stack_chk_guard .word .LANCHOR0 - .word .LC136 + .word .LANCHOR5 + .word .LC153 + .word .LANCHOR2 .fnend .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 1 @@ -18751,21 +21612,26 @@ FtlSysFlush: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, lr} .save {r3, lr} - ldr r3, .L3082 - ldr r3, [r3, #744] - cbnz r3, .L3081 + ldr r3, .L3543 + ldr r3, [r3, #4052] + cbnz r3, .L3539 + ldr r3, .L3543+4 + ldr r3, [r3, #504] + adds r3, r3, #1 + beq .L3539 bl FtlCacheWriteBack bl l2p_flush movs r0, #1 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3081: +.L3539: movs r0, #0 pop {r3, pc} -.L3083: +.L3544: .align 2 -.L3082: - .word .LANCHOR2 +.L3543: + .word .LANCHOR0 + .word .LANCHOR1 .fnend .size FtlSysFlush, .-FtlSysFlush .align 1 @@ -18779,17 +21645,17 @@ FtlDeInit: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, lr} .save {r3, lr} - ldr r3, .L3086 + ldr r3, .L3547 ldr r3, [r3, #504] cmp r3, #1 - bne .L3085 + bne .L3546 bl FtlSysFlush -.L3085: +.L3546: movs r0, #0 pop {r3, pc} -.L3087: +.L3548: .align 2 -.L3086: +.L3547: .word .LANCHOR1 .fnend .size FtlDeInit, .-FtlDeInit @@ -18822,14 +21688,14 @@ rk_ftl_de_init: push {r3, lr} .save {r3, lr} movs r1, #0 - ldr r0, .L3090 + ldr r0, .L3551 bl printk pop {r3, lr} b ftl_deinit -.L3091: +.L3552: .align 2 -.L3090: - .word .LC137 +.L3551: + .word .LC154 .fnend .size rk_ftl_de_init, .-rk_ftl_de_init .align 1 @@ -18865,101 +21731,117 @@ rk_ftl_cache_write_back: .type ftl_discard, %function ftl_discard: .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, lr} + push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} - .pad #12 adds r2, r0, r1 - ldr r7, .L3111 - mov r6, r0 + ldr r6, .L3574 + mov r8, r0 + ldr r0, .L3574+4 + .pad #20 + sub sp, sp, #20 mov r5, r1 - ldr r3, [r7, #1896] + ldr r3, [r6] + mov r7, r0 + str r3, [sp, #12] + ldr r3, [r0, #1912] cmp r2, r3 - bhi .L3101 + bhi .L3563 + ldr r3, .L3574+8 + ldr r0, [r3, #504] + adds r3, r0, #1 + beq .L3556 cmp r1, #31 - bls .L3103 - ldr r3, .L3111+4 - ldr r2, [r3, #744] - mov r8, r3 - cmp r2, #0 - bne .L3103 + bls .L3566 + ldr r3, [r7, #4052] + cmp r3, #0 + bne .L3566 bl FtlCacheWriteBack - ldrh r4, [r7, #2916] - mov r0, r6 + ldrh r4, [r7, #1878] + mov r0, r8 mov r1, r4 bl __aeabi_uidiv smulbb r3, r0, r4 mov r9, r0 - subs r6, r6, r3 - uxth r6, r6 - cbz r6, .L3096 - subs r4, r4, r6 + rsb r3, r3, r8 + uxth r3, r3 + cbz r3, .L3557 + subs r4, r4, r3 add r9, r0, #1 cmp r4, r5 it cs movcs r4, r5 uxth r4, r4 subs r5, r5, r4 -.L3096: - ldr r4, .L3111+8 +.L3557: + ldr r4, .L3574+12 mov r3, #-1 - str r3, [sp, #4] -.L3097: - ldrh r3, [r7, #2916] + ldr r8, .L3574+16 + str r3, [sp, #8] +.L3558: + ldrh r3, [r7, #1878] cmp r5, r3 - bcc .L3110 + bcc .L3573 mov r0, r9 - mov r1, sp + add r1, sp, #4 movs r2, #0 bl log2phys - ldr r3, [sp] + ldr r3, [sp, #4] adds r3, r3, #1 - beq .L3098 - ldr r3, [r4, #-56] - add r1, sp, #4 + beq .L3559 + ldr r3, [r4, #3792] + add r1, sp, #8 movs r2, #1 mov r0, r9 adds r3, r3, #1 - str r3, [r4, #-56] - ldr r3, [r8, #1000] + str r3, [r4, #3792] + ldr r3, [r8, #-36] adds r3, r3, #1 - str r3, [r8, #1000] + str r3, [r8, #-36] bl log2phys - ldr r0, [sp] + ldr r0, [sp, #4] ubfx r0, r0, #10, #16 bl P2V_block_in_plane bl decrement_vpc_count -.L3098: - ldrh r3, [r7, #2916] +.L3559: + ldrh r3, [r7, #1878] add r9, r9, #1 subs r5, r5, r3 - b .L3097 -.L3110: - ldr r3, .L3111+8 - ldr r2, [r3, #-56] + b .L3558 +.L3573: + ldr r3, .L3574+12 + ldr r2, [r3, #3792] cmp r2, #32 - bls .L3103 + bls .L3566 movs r2, #0 - str r2, [r3, #-56] + str r2, [r3, #3792] bl l2p_flush bl FtlVpcTblFlush - b .L3103 -.L3101: + b .L3566 +.L3563: mov r0, #-1 - b .L3095 -.L3103: + b .L3556 +.L3566: movs r0, #0 -.L3095: - add sp, sp, #12 +.L3556: + ldr r2, [sp, #12] + ldr r3, [r6] + cmp r2, r3 + beq .L3562 + bl __stack_chk_fail +.L3562: + add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, pc} -.L3112: +.L3575: .align 2 -.L3111: +.L3574: + .word __stack_chk_guard .word .LANCHOR0 + .word .LANCHOR1 + .word .LANCHOR5 .word .LANCHOR2 - .word .LANCHOR4 .fnend .size ftl_discard, .-ftl_discard .align 1 @@ -18976,557 +21858,435 @@ FtlDiscard: .fnend .size FtlDiscard, .-FtlDiscard .align 1 - .global FtlGcFreeTempBlock + .global ftl_read .thumb .thumb_func - .type FtlGcFreeTempBlock, %function -FtlGcFreeTempBlock: + .type ftl_read, %function +ftl_read: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 56 @ 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 - ldr r4, .L3151 - ldr r6, .L3151+4 - ldr r2, [r4, #744] - ldrh r1, [r6, #2910] - cmp r2, #0 - bne .L3149 - ldrh r5, [r4, #932] - movw r7, #65535 - cmp r5, r7 - bne .L3117 -.L3126: - ldrh r2, [r4, #932] - movw r3, #65535 - movs r7, #0 - ldr r5, .L3151 - cmp r2, r3 - str r7, [r4, #1928] - beq .L3149 + mov r8, r3 + ldr r3, .L3621 + .pad #84 + sub sp, sp, #84 + mov r7, r1 + str r2, [sp, #44] + ldr r3, [r3] + str r3, [sp, #76] + ldr r3, .L3621+4 + ldr r3, [r3, #504] + adds r4, r3, #1 + beq .L3601 + cmp r0, #16 + bne .L3579 + add r0, r1, #256 + mov r1, r2 + mov r2, r8 + bl FtlVendorPartRead + b .L3578 +.L3579: + ldr r3, [sp, #44] + adds r3, r1, r3 + str r3, [sp, #36] + ldr r3, .L3621+8 + ldr r1, [sp, #36] + ldr r2, [r3, #1912] + cmp r1, r2 + bhi .L3602 + ldrh r4, [r3, #1878] + mov r0, r7 + mov r1, r4 + bl __aeabi_uidiv + mov r1, r4 + ldr r3, [sp, #36] + str r0, [sp, #28] + subs r0, r3, #1 + bl __aeabi_uidiv + ldr r3, [sp, #28] + ldr r1, [sp, #44] + rsb r3, r3, #1 + str r0, [sp, #32] + add r3, r3, r0 + str r3, [sp, #24] + ldr r3, .L3621+12 + ldr r0, [sp, #28] + ldr r2, [r3, #-12] + add r2, r2, r1 + ldr r1, [sp, #24] + str r2, [r3, #-12] + ldr r2, [r3, #-40] + add r2, r2, r1 + ldr r1, [sp, #32] + str r2, [r3, #-40] + bl FtlCacheMetchLpa + cbz r0, .L3580 bl FtlCacheWriteBack - ldrb r0, [r5, #939] @ zero_extendqisi2 - ldrh r3, [r6, #2910] - mov r10, #12 - ldr r2, [r5, #816] - ldrh r1, [r5, #932] - smulbb r3, r0, r3 - strh r3, [r2, r1, lsl #1] @ movhi - ldr r3, [r5, #1016] - ldrh r2, [r5, #1688] - add r3, r3, r2 - str r3, [r5, #1016] - b .L3127 -.L3117: - cbz r0, .L3120 - ldr r3, .L3151+8 - ldrh r0, [r3, #3064] - cmp r0, r7 - beq .L3121 -.L3122: - movs r1, #2 - b .L3120 -.L3121: - strh r2, [r3, #3064] @ movhi - ldrh r3, [r4, #832] - cmp r3, #17 - bhi .L3122 -.L3120: - ldr r7, .L3151 - add r0, r7, #932 - bl FtlGcScanTempBlk - str r0, [sp, #4] - adds r0, r0, #1 - beq .L3123 - ldr r2, [r7, #752] - ldrh r3, [r2, r5, lsl #1] - cmp r3, #4 - bls .L3124 - subs r3, r3, #5 - movs r0, #1 - strh r3, [r2, r5, lsl #1] @ movhi - bl FtlEctTblFlush -.L3124: - ldr r3, [r4, #1928] - ldr r2, .L3151 - cbnz r3, .L3125 - ldr r0, [sp, #4] - ldr r3, [r2, #1220] - ubfx r0, r0, #10, #16 - adds r3, r3, #1 - str r3, [r2, #1220] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L3125: - movs r3, #0 - str r3, [r4, #1928] - b .L3137 -.L3123: - ldr r3, .L3151+8 - ldrh r2, [r3, #3064] - movw r3, #65535 - cmp r2, r3 - bne .L3137 - b .L3126 -.L3130: - mul r8, r10, r8 - ldr fp, [r5, #1684] - add r1, sp, #4 +.L3580: + mov r10, #0 + ldr r5, [sp, #28] + ldr r4, .L3621+12 + ldr r9, .L3621+8 + mov r6, r10 + str r10, [sp, #48] + str r10, [sp, #52] +.L3581: + ldr r3, [sp, #24] + cmp r3, #0 + beq .L3620 + add r1, sp, #72 + mov r0, r5 movs r2, #0 - add r9, fp, r8 - ldr r0, [r9, #8] bl log2phys - ldr r0, [sp, #4] - ldr r3, [fp, r8] + ldr r3, [sp, #72] + adds r1, r3, #1 + bne .L3617 + mov fp, #0 +.L3582: + ldrh r0, [r9, #1878] + cmp fp, r0 + bcs .L3586 + mla r0, r0, r5, fp + cmp r0, r7 + bcc .L3584 + ldr r3, [sp, #36] cmp r0, r3 - bne .L3128 + bcs .L3584 + subs r0, r0, r7 + movs r1, #0 + mov r2, #512 + add r0, r8, r0, lsl #9 + bl ftl_memset +.L3584: + add fp, fp, #1 + b .L3582 +.L3617: + ldr r2, [r4, #1764] + mov fp, #36 + mla fp, fp, r6, r2 + str r3, [fp, #4] + ldr r3, [sp, #28] + cmp r5, r3 + bne .L3587 + ldrh ip, [r9, #1878] + mov r0, r7 + ldr r3, [r4, #1792] + mov r1, ip + str ip, [sp, #40] + str r3, [fp, #8] + bl __aeabi_uidivmod + ldr ip, [sp, #40] + ldr r2, [sp, #44] + rsb r3, r1, ip + str r1, [sp, #56] + cmp r3, r2 + it cs + movcs r3, r2 + cmp r3, ip + str r3, [sp, #48] + bne .L3588 + str r8, [fp, #8] + b .L3588 +.L3587: + ldr r3, [sp, #32] + cmp r5, r3 + bne .L3589 + ldr r3, [r4, #1796] + ldrh r2, [r9, #1878] + ldr r1, [sp, #36] + str r3, [fp, #8] + mul r3, r2, r5 + rsb r10, r3, r1 + cmp r10, r2 + bne .L3588 + b .L3618 +.L3589: + ldrh r3, [r9, #1878] + muls r3, r5, r3 +.L3618: + subs r3, r3, r7 + add r3, r8, r3, lsl #9 + str r3, [fp, #8] +.L3588: + ldrh r3, [r9, #1884] + ldr r2, [r4, #1804] + str r5, [fp, #16] + muls r3, r6, r3 + adds r6, r6, #1 + bic r3, r3, #3 + add r3, r3, r2 + str r3, [fp, #12] +.L3586: + ldr r3, [sp, #24] + adds r5, r5, #1 + subs r3, r3, #1 + str r3, [sp, #24] + beq .L3590 + ldrh r3, [r9, #1804] + cmp r6, r3, lsl #3 + bne .L3581 +.L3590: + cmp r6, #0 + beq .L3581 + ldr r0, [r4, #1764] + mov r1, r6 + movs r2, #0 + bl FlashReadPages + ldr r3, [sp, #56] + lsls r3, r3, #9 + str r3, [sp, #60] + ldr r3, [sp, #48] + lsls r3, r3, #9 + str r3, [sp, #64] + lsl r3, r10, #9 + str r3, [sp, #68] + movs r3, #0 + str r3, [sp, #40] +.L3597: + ldr r3, [sp, #40] + mov ip, #36 + ldr r1, [sp, #28] + mul fp, ip, r3 + ldr r3, [r4, #1764] + add r3, r3, fp + ldr r2, [r3, #16] + cmp r2, r1 + bne .L3592 + ldr r1, [r3, #8] + ldr r3, [r4, #1792] + cmp r1, r3 + bne .L3593 + ldr r3, [sp, #60] + mov r0, r8 + ldr r2, [sp, #64] + add r1, r1, r3 + b .L3619 +.L3592: + ldr r1, [sp, #32] + cmp r2, r1 + bne .L3593 + ldr r1, [r3, #8] + ldr r3, [r4, #1796] + cmp r1, r3 + bne .L3593 + ldrh r0, [r9, #1878] + ldr r3, [sp, #32] + ldr r2, [sp, #68] + muls r0, r3, r0 + subs r0, r0, r7 + add r0, r8, r0, lsl #9 +.L3619: + bl ftl_memcpy +.L3593: + ldr r2, [r4, #1764] + add r3, r2, fp + ldr r1, [r2, fp] + adds r2, r1, #1 + itttt eq + streq r1, [sp, #52] + ldreq r2, [r4, #164] + addeq r2, r2, #1 + streq r2, [r4, #164] + ldr r2, [r3, #12] + ldr r1, [r3, #16] + ldr r2, [r2, #8] + cmp r1, r2 + beq .L3595 + ldr r2, [r4, #164] + ldr r0, .L3621+16 + adds r2, r2, #1 + str r2, [r4, #164] + 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 +.L3595: + ldr r3, [r4, #1764] + add r2, r3, fp + ldr r3, [r3, fp] + cmp r3, #256 + bne .L3596 + ldr r0, [r2, #4] 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 -.L3148: - bl decrement_vpc_count -.L3129: - adds r7, r7, #1 -.L3127: - ldrh r3, [r4, #1688] - uxth r8, r7 - cmp r3, r8 - bhi .L3130 - b .L3150 -.L3128: - ldr r3, [r9, #4] - cmp r0, r3 - beq .L3129 - ldrh r0, [r5, #932] - b .L3148 -.L3150: - movw r0, #65535 - bl decrement_vpc_count - ldrb r3, [r6, #76] @ zero_extendqisi2 - cbz r3, .L3131 - ldr r3, .L3151 - ldr r0, .L3151+12 - ldrh r1, [r3, #932] - bl printk -.L3131: - ldrh r0, [r4, #932] - ldr r3, [r4, #816] - ldrh r3, [r3, r0, lsl #1] - cbz r3, .L3132 - bl INSERT_DATA_LIST - b .L3133 -.L3132: - bl INSERT_FREE_LIST -.L3133: - movw r3, #65535 - strh r3, [r4, #932] @ movhi - movs r3, #0 - strh r3, [r4, #1688] @ movhi - strh r3, [r4, #1680] @ movhi - bl l2p_flush - bl FtlVpcTblFlush - ldr r3, [r6, #2832] - ldr r5, .L3151 - cbz r3, .L3134 - ldr r3, [r5, #1052] - cmp r3, #29 - bhi .L3134 - ldrh r3, [r5, #1056] - ldrh r2, [r5, #832] + bl FtlGcRefreshBlock +.L3596: + ldr r3, [sp, #40] + adds r3, r3, #1 + str r3, [sp, #40] + cmp r3, r6 + bne .L3597 + movs r6, #0 + b .L3581 +.L3620: + ldr r3, .L3621+12 + ldrh r3, [r3, #666] + cbz r3, .L3599 + ldr r0, [sp, #24] + movs r1, #1 + bl ftl_do_gc +.L3599: + ldr r0, [sp, #52] + b .L3578 +.L3601: + mov r0, r3 + b .L3578 +.L3602: + mov r0, #-1 +.L3578: + ldr r3, .L3621 + ldr r2, [sp, #76] + ldr r3, [r3] cmp r2, r3 - itt cc - lslcc r3, r3, #1 - strhcc r3, [r5, #1636] @ movhi - movw r3, #65535 - strh r3, [r4, #1072] @ movhi - b .L3149 -.L3134: - ldrh r3, [r4, #1056] - ldrh r1, [r4, #832] - ldr r2, .L3151 - add r0, r3, r3, lsl #1 - cmp r1, r0, asr #2 - ble .L3149 - ldrb r0, [r6, #76] @ zero_extendqisi2 - movw r1, #65535 - strh r1, [r2, #1072] @ movhi - cbz r0, .L3136 - subs r3, r3, #2 - strh r3, [r2, #1636] @ movhi -.L3149: - movs r0, #0 - b .L3116 -.L3136: - movs r3, #20 - strh r3, [r2, #1636] @ movhi - b .L3116 -.L3137: - movs r0, #1 -.L3116: - add sp, sp, #12 + beq .L3600 + bl __stack_chk_fail +.L3600: + add sp, sp, #84 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3152: +.L3622: .align 2 -.L3151: - .word .LANCHOR2 - .word .LANCHOR0 +.L3621: + .word __stack_chk_guard .word .LANCHOR1 - .word .LC138 + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC143 .fnend - .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock + .size ftl_read, .-ftl_read .align 1 - .global Ftl_gc_temp_data_write_back + .global ftl_vendor_read .thumb .thumb_func - .type Ftl_gc_temp_data_write_back, %function -Ftl_gc_temp_data_write_back: + .type ftl_vendor_read, %function +ftl_vendor_read: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3171 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - ldrb r3, [r3, #76] @ zero_extendqisi2 - ldr r5, .L3171+4 - cbz r3, .L3154 - ldr r3, [r5, #1652] - lsls r4, r3, #31 - bpl .L3154 - ldrh r3, [r5, #936] - cbz r3, .L3154 -.L3159: - movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L3154: - movs r2, #0 - ldr r0, [r5, #1768] - ldr r1, [r5, #1652] - movs r6, #0 + push {r4, r5, lr} + .save {r4, r5, lr} + mov r5, r0 + mov r4, r1 mov r3, r2 - ldr r7, .L3171+4 - bl FlashProgPages - mov r8, #36 -.L3156: - ldr r1, [r5, #1652] - uxth r3, r6 - ldr r4, .L3171+4 - cmp r3, r1 - bcs .L3170 - mul r3, r8, r3 - ldr r1, [r7, #1768] - adds r6, r6, #1 - adds r2, r1, r3 - ldr r1, [r1, r3] - adds r0, r1, #1 - bne .L3157 - ldrh r0, [r4, #932] - movs r5, #0 - ldr r2, [r4, #816] - strh r5, [r2, r0, lsl #1] @ movhi - ldr r2, [r4, #1220] - strh r1, [r4, #932] @ movhi - adds r2, r2, #1 - str r2, [r4, #1220] - ldr r2, [r4, #1768] - add r3, r3, r2 - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - bl FtlGcPageVarInit - b .L3169 -.L3157: - ldr r3, [r2, #12] - ldr r1, [r2, #4] - ldr r0, [r3, #12] - ldr r2, [r3, #8] - bl FtlGcUpdatePage - b .L3156 -.L3170: - ldr r0, [r4, #1768] - bl FtlGcBufFree - movs r3, #0 - str r3, [r4, #1652] - ldrh r3, [r4, #936] - cmp r3, #0 - bne .L3159 - movs r0, #1 - bl FtlGcFreeTempBlock -.L3169: - movs r0, #1 - pop {r4, r5, r6, r7, r8, pc} -.L3172: - .align 2 -.L3171: - .word .LANCHOR0 - .word .LANCHOR2 + mov r1, r5 + mov r2, r4 + movs r0, #16 + pop {r4, r5, lr} + b ftl_read .fnend - .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .size ftl_vendor_read, .-ftl_vendor_read .align 1 - .global FtlGcPageRecovery + .global FlashBootVendorRead .thumb .thumb_func - .type FtlGcPageRecovery, %function -FtlGcPageRecovery: - .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 r5, .L3175 - ldr r4, .L3175+4 - ldrh r1, [r5, #2910] - add r0, r4, #932 - bl FtlGcScanTempBlk - ldrh r2, [r4, #934] - ldrh r3, [r5, #2910] - cmp r2, r3 - bcc .L3173 - addw r0, r4, #1868 - bl FtlMapBlkWriteDumpData - movs r0, #0 - bl FtlGcFreeTempBlock - movs r3, #0 - str r3, [r4, #1928] -.L3173: - pop {r3, r4, r5, pc} -.L3176: - .align 2 -.L3175: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size FtlGcPageRecovery, .-FtlGcPageRecovery - .align 1 - .global FtlPowerLostRecovery - .thumb - .thumb_func - .type FtlPowerLostRecovery, %function -FtlPowerLostRecovery: + .type FlashBootVendorRead, %function +FlashBootVendorRead: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} .save {r4, r5, r6, lr} - movs r5, #0 - ldr r4, .L3178 - ldr r3, .L3178+4 - add r6, r4, #836 - add r4, r4, #884 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl rknand_device_lock + ldr r3, .L3627 + ldr r3, [r3, #504] + cmp r3, #1 + bne .L3626 + mov r2, r4 mov r0, r6 - str r5, [r3, #-200] - bl FtlRecoverySuperblock - mov r0, r6 - bl FtlSlcSuperblockCheck + mov r1, r5 + bl ftl_vendor_read + mov r4, r0 + b .L3625 +.L3626: + mov r4, #-1 +.L3625: + bl rknand_device_unlock mov r0, r4 - bl FtlRecoverySuperblock - mov r0, r4 - bl FtlSlcSuperblockCheck - bl FtlGcPageRecovery - movw r0, #65535 - bl decrement_vpc_count - mov r0, r5 pop {r4, r5, r6, pc} -.L3179: +.L3628: .align 2 -.L3178: - .word .LANCHOR2 - .word .LANCHOR4 +.L3627: + .word .LANCHOR1 .fnend - .size FtlPowerLostRecovery, .-FtlPowerLostRecovery + .size FlashBootVendorRead, .-FlashBootVendorRead .align 1 - .global FtlSysBlkInit + .global ftl_sys_read .thumb .thumb_func - .type FtlSysBlkInit, %function -FtlSysBlkInit: + .type ftl_sys_read, %function +ftl_sys_read: .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} - movs r3, #0 - ldr r5, .L3196 - movw r6, #65535 - ldr r7, .L3196+4 - ldr r4, .L3196+8 - ldrh r0, [r5, #2844] - strh r3, [r7, #-204] @ movhi - strh r6, [r7, #-206] @ movhi - bl FtlFreeSysBlkQueueInit - bl FtlScanSysBlk - ldrh r3, [r4, #1060] - cmp r3, r6 - bne .L3181 -.L3183: - mov r6, #-1 - b .L3182 -.L3181: - bl FtlLoadSysInfo - mov r6, r0 - cmp r0, #0 - bne .L3183 - bl FtlLoadMapInfo - bl FtlLoadVonderInfo - bl Ftl_load_ext_data - bl FtlLoadEctTbl - bl FtlFreeSysBLkSort - bl SupperBlkListInit - bl FtlPowerLostRecovery - movs r0, #1 - bl FtlUpdateVaildLpn - ldrh r1, [r5, #2950] - ldr r2, [r4, #980] - movs r0, #12 - mov r3, r6 -.L3184: - cmp r3, r1 - bge .L3189 - mla lr, r0, r3, r2 - ldr lr, [lr, #4] - cmp lr, #0 - bge .L3185 -.L3189: - ldrh r2, [r4, #788] - cmp r3, r1 - add r2, r2, #1 - strh r2, [r4, #788] @ movhi - bge .L3195 - b .L3186 -.L3185: - adds r3, r3, #1 - b .L3184 -.L3195: - ldrh r3, [r7, #-204] - cmp r3, #0 - beq .L3190 -.L3186: - ldr r0, .L3196+12 - bl FtlSuperblockPowerLostFix - ldr r0, .L3196+16 - bl FtlSuperblockPowerLostFix - ldrh r1, [r4, #836] - ldr r2, [r4, #816] - ldrh r0, [r4, #840] - ldrh r3, [r2, r1, lsl #1] - subs r3, r3, r0 - strh r3, [r2, r1, lsl #1] @ movhi - ldr r1, [r4, #816] - ldrh r3, [r5, #2910] - ldrh r0, [r4, #884] - ldrh r7, [r4, #888] - strh r3, [r4, #838] @ movhi - movs r3, #0 - strb r3, [r4, #842] - strh r3, [r4, #840] @ movhi - ldrh r2, [r1, r0, lsl #1] - subs r2, r2, r7 - strh r2, [r1, r0, lsl #1] @ movhi - ldrh r2, [r5, #2910] - ldr r0, .L3196+20 - strb r3, [r4, #890] - strh r2, [r4, #886] @ movhi - strh r3, [r4, #888] @ movhi - bl FtlMapBlkWriteDumpData - ldr r0, .L3196+24 - bl FtlMapBlkWriteDumpData - ldrh r3, [r4, #790] - adds r3, r3, #1 - strh r3, [r4, #790] @ movhi - bl l2p_flush - bl FtlVpcTblFlush - bl FtlVpcTblFlush -.L3190: - ldrh r2, [r4, #836] - movw r3, #65535 - ldr r5, .L3196+8 - cmp r2, r3 - beq .L3191 - ldrh r3, [r5, #840] - cbnz r3, .L3191 - ldrh r3, [r5, #888] - cbnz r3, .L3191 - bl FtlVpcTblFlush - ldrh r0, [r5, #836] - bl FtlGcRefreshOpenBlock - ldrh r0, [r5, #884] - bl FtlGcRefreshOpenBlock - add r0, r5, #836 - bl allocate_new_data_superblock - add r0, r5, #884 - bl allocate_new_data_superblock - addw r0, r5, #4092 - bl FtlMapBlkWriteDumpData -.L3191: - ldrh r3, [r4, #788] - lsls r3, r3, #27 - bne .L3182 - bl FtlVpcCheckAndModify -.L3182: - mov r0, r6 - pop {r3, r4, r5, r6, r7, pc} -.L3197: - .align 2 -.L3196: - .word .LANCHOR0 - .word .LANCHOR4 - .word .LANCHOR2 - .word .LANCHOR2+836 - .word .LANCHOR2+884 - .word .LANCHOR2+1868 - .word .LANCHOR2+4092 + push {r4, lr} + .save {r4, lr} + mov r4, r1 + mov r3, r2 + add r1, r0, #256 + mov r2, r4 + movs r0, #16 + pop {r4, lr} + b ftl_read .fnend - .size FtlSysBlkInit, .-FtlSysBlkInit + .size ftl_sys_read, .-ftl_sys_read .align 1 - .global Ftl_get_new_temp_ppa + .global StorageSysDataLoad .thumb .thumb_func - .type Ftl_get_new_temp_ppa, %function -Ftl_get_new_temp_ppa: + .type StorageSysDataLoad, %function +StorageSysDataLoad: .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 - ldr r4, .L3201 - ldrh r2, [r4, #932] - cmp r2, r3 - beq .L3199 - ldrh r3, [r4, #936] - cbnz r3, .L3200 -.L3199: - movs r5, #0 - bl FtlCacheWriteBack - movs r0, #0 - bl FtlGcFreeTempBlock - ldr r0, .L3201+4 - strb r5, [r4, #940] - bl allocate_data_superblock - strh r5, [r4, #1680] @ movhi - strh r5, [r4, #1688] @ movhi - bl l2p_flush + mov r2, #512 + mov r5, r0 + mov r4, r1 + mov r0, r1 + movs r1, #0 + bl ftl_memset + bl rknand_device_lock + mov r2, r4 + movs r1, #1 mov r0, r5 - bl FtlEctTblFlush - bl FtlVpcTblFlush -.L3200: - ldr r0, .L3201+4 - pop {r3, r4, r5, lr} - b get_new_active_ppa -.L3202: - .align 2 -.L3201: - .word .LANCHOR2 - .word .LANCHOR2+932 + bl ftl_sys_read + mov r4, r0 + bl rknand_device_unlock + mov r0, r4 + pop {r3, r4, r5, pc} .fnend - .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .size StorageSysDataLoad, .-StorageSysDataLoad + .align 1 + .global FtlRead + .thumb + .thumb_func + .type FtlRead, %function +FtlRead: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + b ftl_read + .fnend + .size FtlRead, .-FtlRead .align 1 .global FtlInit .thumb @@ -19536,78 +22296,99 @@ FtlInit: .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 {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} mov r3, #-1 - ldr r2, .L3217 - ldr r6, .L3217+4 - ldr r5, .L3217+8 - ldr r4, .L3217+12 - ldr r1, .L3217+16 - ldr r0, .L3217+20 - str r3, [r6, #504] + ldr r2, .L3648 + ldr r6, .L3648+4 + ldr r5, .L3648+8 + ldr r1, .L3648+12 + ldr r0, .L3648+16 + str r3, [r5, #504] movs r3, #0 - str r3, [r2, #-52] - str r3, [r5, #744] + str r3, [r2, #3796] + str r3, [r6, #4052] bl printk - add r0, r4, #1864 + add r0, r6, #112 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh r0, [r4, #2844] + ldrh r0, [r6, #1808] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz r0, .L3204 - ldr r0, .L3217+24 - b .L3216 -.L3204: + cbz r0, .L3633 + ldr r0, .L3648+20 + b .L3647 +.L3633: bl FtlSysBlkInit - cbz r0, .L3206 - ldr r0, .L3217+28 -.L3216: - ldr r1, .L3217+32 + mov r4, r0 + cbz r0, .L3635 + ldr r0, .L3648+24 +.L3647: + ldr r1, .L3648+28 bl printk - b .L3205 -.L3206: + b .L3634 +.L3635: movs r1, #1 - str r1, [r6, #504] + str r1, [r5, #504] + ldr r5, .L3648+32 bl ftl_do_gc - ldrh r3, [r5, #832] - cmp r3, #15 - bhi .L3207 - mov r4, #1024 -.L3208: + ldrh r7, [r5, #-204] + cmp r7, #15 + bhi .L3636 + mov r8, r5 + movw r6, #65535 +.L3639: + ldrh r3, [r5, #40] + cmp r3, r6 + bne .L3637 + ldrh r3, [r8, #658] + cmp r3, r6 + bne .L3637 + and r0, r4, #7 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L3637: movs r0, #1 mov r1, r0 bl ftl_do_gc - subs r4, r4, #1 - bne .L3208 - b .L3205 -.L3207: - ldrb r3, [r4, #76] @ zero_extendqisi2 - cbz r3, .L3205 - movs r4, #128 -.L3210: - movs r0, #1 - mov r1, r0 - bl ftl_do_gc - subs r4, r4, #1 - bne .L3210 -.L3205: movs r0, #0 - pop {r4, r5, r6, pc} -.L3218: + movs r1, #1 + bl ftl_do_gc + ldrh r2, [r5, #-204] + adds r3, r7, #2 + cmp r2, r3 + bhi .L3634 + adds r4, r4, #1 + cmp r4, #1024 + bne .L3639 + b .L3634 +.L3636: + ldrb r3, [r6, #140] @ zero_extendqisi2 + cbz r3, .L3634 + movs r4, #128 +.L3641: + movs r0, #1 + mov r1, r0 + bl ftl_do_gc + subs r4, r4, #1 + bne .L3641 +.L3634: + movs r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L3649: .align 2 -.L3217: - .word .LANCHOR4 - .word .LANCHOR1 - .word .LANCHOR2 +.L3648: + .word .LANCHOR5 .word .LANCHOR0 - .word .LC78 + .word .LANCHOR1 .word .LC77 - .word .LC139 - .word .LC140 - .word .LANCHOR3+40 + .word .LC76 + .word .LC155 + .word .LC156 + .word .LANCHOR3+108 + .word .LANCHOR2 .fnend .size FtlInit, .-FtlInit .align 1 @@ -19623,44 +22404,44 @@ rk_ftl_init: .save {r4, r5, r6, lr} mov r0, #2048 bl ftl_malloc - ldr r6, .L3223 - ldr r4, .L3223+4 - movs r5, #0 - mov r1, r6 - str r5, [r1, #-44]! - str r5, [r4, #3984] - str r0, [r6, #-48] + ldr r5, .L3654 + ldr r4, .L3654+4 + movs r6, #0 + addw r1, r5, #3804 + str r6, [r5, #3804] + str r6, [r4, #3984] + str r0, [r5, #3800] add r0, r4, #3984 bl rknand_get_reg_addr ldr r3, [r4, #3984] - cbz r3, .L3222 + cbz r3, .L3653 bl rk_nandc_irq_init - mov r1, r5 - mov r2, r5 + mov r1, r6 + mov r2, r6 mov r3, #2048 - ldr r0, [r6, #-48] + ldr r0, [r5, #3800] bl FlashSramLoadStore bl rknand_flash_cs_init ldr r0, [r4, #3984] bl FlashInit mov r4, r0 - cbnz r0, .L3221 + cbnz r0, .L3652 bl FtlInit -.L3221: +.L3652: mov r1, r4 - ldr r0, .L3223+8 + ldr r0, .L3654+8 bl printk mov r0, r4 pop {r4, r5, r6, pc} -.L3222: +.L3653: mov r0, #-1 pop {r4, r5, r6, pc} -.L3224: +.L3655: .align 2 -.L3223: - .word .LANCHOR4 +.L3654: + .word .LANCHOR5 .word .LANCHOR2 - .word .LC141 + .word .LC157 .fnend .size rk_ftl_init, .-rk_ftl_init .align 1 @@ -19670,111 +22451,122 @@ rk_ftl_init: .type ftl_fix_nand_power_lost_error, %function ftl_fix_nand_power_lost_error: .fnstart - @ args = 0, pretend = 0, frame = 48 + @ args = 0, pretend = 0, frame = 64 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3240 - 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, #76] @ zero_extendqisi2 - mov r8, r3 - cmp r2, #0 - beq .L3225 - ldr r4, .L3240+4 - movw r7, #4097 - ldr r6, .L3240+8 - ldr r0, .L3240+12 - ldr r3, [r4, #816] - ldrh r5, [r6, #-206] + ldr r3, .L3672 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #68 + sub sp, sp, #68 + ldr r2, [r3] + str r3, [sp, #4] + str r2, [sp, #60] + ldr r2, .L3672+4 + ldrb r1, [r2, #140] @ zero_extendqisi2 + mov r7, r2 + cmp r1, #0 + beq .L3656 + ldr r4, .L3672+8 + movw r6, #4097 + ldr r8, .L3672+20 + ldr r0, .L3672+12 + ldr r3, [r4, #-220] + ldrh r5, [r8, #3644] mov r1, r5 ldrh r2, [r3, r5, lsl #1] bl printk - ldrh r0, [r4, #836] + ldrh r0, [r4, #-200] bl FtlGcRefreshOpenBlock - ldrh r0, [r4, #884] + ldrh r0, [r4, #-152] bl FtlGcRefreshOpenBlock - add r0, r4, #836 + sub r0, r4, #200 bl allocate_new_data_superblock - add r0, r4, #884 + sub r0, r4, #152 bl allocate_new_data_superblock lsl r9, r5, #1 -.L3227: - subs r7, r7, #1 - beq .L3231 +.L3658: + subs r6, r6, #1 + beq .L3662 movs r0, #1 mov r1, r0 bl ftl_do_gc - ldr r3, [r4, #816] + ldr r3, [r4, #-220] ldrh r3, [r3, r9] cmp r3, #0 - bne .L3227 -.L3231: - ldr r3, [r4, #816] + bne .L3658 +.L3662: + ldr r3, [r4, #-220] mov r1, r5 - ldr r0, .L3240+12 + ldr r0, .L3672+12 ldrh r2, [r3, r5, lsl #1] bl printk - ldr r3, [r4, #816] - ldrh r7, [r3, r5, lsl #1] - cbnz r7, .L3229 - add r0, sp, #48 - mov r10, #36 - movw r9, #65535 - strh r5, [r0, #-48]! @ movhi + ldr r3, [r4, #-220] + ldrh r6, [r3, r5, lsl #1] + cbnz r6, .L3660 + add r0, sp, #64 + mov fp, #36 + movw r10, #65535 + strh r5, [r0, #-52]! @ movhi bl make_superblock - ldr r3, .L3240+4 - ldrh ip, [r8, #2840] - add r0, sp, #14 - ldr r8, [r3, #748] - mov r3, r7 + ldrh ip, [r7, #1804] + ldr r9, [r7, #4056] + mov r3, r6 mov lr, r3 -.L3232: + add r0, sp, #26 +.L3663: uxth r2, r3 cmp r2, ip - bcs .L3239 + bcs .L3671 ldrh r2, [r0, #2]! - cmp r2, r9 - beq .L3233 - mla r1, r10, r7, r8 - adds r7, r7, #1 + cmp r2, r10 + beq .L3664 + mla r1, fp, r6, r9 + adds r6, r6, #1 lsls r2, r2, #10 - uxth r7, r7 + uxth r6, r6 str r2, [r1, #4] str lr, [r1, #8] str lr, [r1, #12] -.L3233: +.L3664: adds r3, r3, #1 - b .L3232 -.L3239: - ldr r3, [r4, #816] + b .L3663 +.L3671: + ldr r3, [r4, #-220] mov r1, r5 - ldr r0, .L3240+16 + ldr r0, .L3672+16 ldrh r2, [r3, r5, lsl #1] bl printk movs r1, #0 - mov r2, r7 - ldr r0, [r4, #748] + mov r2, r6 + ldr r0, [r7, #4056] bl FlashEraseBlocks - ldr r0, [r4, #748] + ldr r0, [r7, #4056] movs r1, #1 - mov r2, r7 + mov r2, r6 bl FlashEraseBlocks -.L3229: +.L3660: movw r3, #65535 - strh r3, [r6, #-206] @ movhi -.L3225: - add sp, sp, #48 + strh r3, [r8, #3644] @ movhi +.L3656: + ldr r3, [sp, #4] + ldr r2, [sp, #60] + ldr r3, [r3] + cmp r2, r3 + beq .L3666 + bl __stack_chk_fail +.L3666: + add sp, sp, #68 @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L3241: + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L3673: .align 2 -.L3240: +.L3672: + .word __stack_chk_guard .word .LANCHOR0 .word .LANCHOR2 - .word .LANCHOR4 - .word .LC142 - .word .LC143 + .word .LC158 + .word .LC159 + .word .LANCHOR5 .fnend .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .align 1 @@ -19791,319 +22583,51 @@ rk_ftl_garbage_collect: .fnend .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 1 - .global ftl_read - .thumb - .thumb_func - .type ftl_read, %function -ftl_read: - .fnstart - @ args = 0, pretend = 0, frame = 56 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - cmp r0, #16 - .pad #60 - sub sp, sp, #60 - mov r6, r1 - mov r7, r3 - str r2, [sp, #16] - bne .L3244 - add r0, r1, #256 - mov r1, r2 - mov r2, r3 - bl FtlVendorPartRead - b .L3245 -.L3244: - ldr r3, [sp, #16] - adds r3, r1, r3 - str r3, [sp, #12] - ldr r3, .L3284 - ldr r1, [sp, #12] - ldr r2, [r3, #1896] - cmp r1, r2 - bhi .L3265 - ldrh r4, [r3, #2916] - mov r0, r6 - mov r1, r4 - bl __aeabi_uidiv - ldr r3, [sp, #12] - mov r1, r4 - str r0, [sp, #4] - subs r0, r3, #1 - bl __aeabi_uidiv - ldr r3, [sp, #4] - ldr r1, [sp, #16] - rsb r3, r3, #1 - add r3, r3, r0 - str r3, [sp] - ldr r3, .L3284+4 - str r0, [sp, #8] - ldr r0, [sp, #4] - ldr r2, [r3, #1024] - add r2, r2, r1 - ldr r1, [sp] - str r2, [r3, #1024] - ldr r2, [r3, #996] - add r2, r2, r1 - ldr r1, [sp, #8] - str r2, [r3, #996] - bl FtlCacheMetchLpa - cbz r0, .L3246 - bl FtlCacheWriteBack -.L3246: - mov r9, #0 - ldr r4, [sp, #4] - ldr r10, .L3284+4 - ldr r8, .L3284 - mov r5, r9 - str r9, [sp, #20] - str r9, [sp, #24] -.L3247: - ldr r3, [sp] - cmp r3, #0 - beq .L3283 - add r1, sp, #52 - movs r2, #0 - mov r0, r4 - bl log2phys - ldr r2, [sp, #52] - adds r1, r2, #1 - bne .L3280 - mov fp, #0 -.L3248: - ldrh r0, [r8, #2916] - cmp fp, r0 - bcs .L3252 - mla r0, r0, r4, fp - cmp r0, r6 - bcc .L3250 - ldr r3, [sp, #12] - cmp r0, r3 - bcs .L3250 - subs r0, r0, r6 - mov r1, #512 - add r0, r7, r0, lsl #9 - bl __memzero -.L3250: - add fp, fp, #1 - b .L3248 -.L3280: - ldr r1, [r10, #1764] - mov fp, #36 - ldr r3, [sp, #4] - mla fp, fp, r5, r1 - cmp r4, r3 - str r2, [fp, #4] - bne .L3253 - ldr r2, [r10, #1792] - mov r0, r6 - str r2, [fp, #8] - ldrh r2, [r8, #2916] - mov r1, r2 - str r2, [sp, #20] - bl __aeabi_uidivmod - ldr r2, [sp, #20] - ldr r0, [sp, #16] - str r1, [sp, #28] - subs r1, r2, r1 - cmp r1, r0 - mov r3, r1 - it cs - movcs r3, r0 - cmp r3, r2 - str r3, [sp, #20] - bne .L3254 - str r7, [fp, #8] - b .L3254 -.L3253: - ldr r3, [sp, #8] - cmp r4, r3 - bne .L3255 - ldr r2, [r10, #1796] - ldrh r1, [r8, #2916] - ldr r3, [sp, #12] - str r2, [fp, #8] - mul r2, r1, r4 - rsb r9, r2, r3 - cmp r9, r1 - bne .L3254 - b .L3281 -.L3255: - ldrh r2, [r8, #2916] - muls r2, r4, r2 -.L3281: - subs r2, r2, r6 - add r2, r7, r2, lsl #9 - str r2, [fp, #8] -.L3254: - ldrh r2, [r8, #2922] - ldr r1, [r10, #1804] - str r4, [fp, #16] - muls r2, r5, r2 - adds r5, r5, #1 - bic r2, r2, #3 - add r2, r2, r1 - str r2, [fp, #12] -.L3252: - ldr r3, [sp] - adds r4, r4, #1 - subs r3, r3, #1 - str r3, [sp] - beq .L3256 - ldrh r2, [r8, #2840] - cmp r5, r2, lsl #3 - bne .L3247 -.L3256: - cmp r5, #0 - beq .L3247 - ldr r0, [r10, #1764] - mov r1, r5 - movs r2, #0 - mov fp, #0 - bl FlashReadPages - ldr r3, [sp, #28] - lsls r3, r3, #9 - str r3, [sp, #32] - ldr r3, [sp, #20] - lsls r3, r3, #9 - str r3, [sp, #36] - lsl r3, r9, #9 - str r3, [sp, #40] -.L3262: - movs r3, #36 - ldr r2, [r10, #1764] - mul ip, r3, fp - ldr r3, [sp, #4] - add r2, r2, ip - ldr r1, [r2, #16] - cmp r1, r3 - bne .L3258 - ldr r1, [r2, #8] - ldr r2, [r10, #1792] - cmp r1, r2 - bne .L3259 - ldr r3, [sp, #32] - mov r0, r7 - str ip, [sp, #44] - add r1, r1, r3 - ldr r2, [sp, #36] - b .L3282 -.L3258: - ldr r3, [sp, #8] - cmp r1, r3 - bne .L3259 - ldr r1, [r2, #8] - ldr r2, [r10, #1796] - cmp r1, r2 - bne .L3259 - ldrh r0, [r8, #2916] - ldr r2, [sp, #40] - str ip, [sp, #44] - muls r0, r3, r0 - subs r0, r0, r6 - add r0, r7, r0, lsl #9 -.L3282: - bl ftl_memcpy - ldr ip, [sp, #44] -.L3259: - ldr r2, [r10, #1764] - add lr, r2, ip - ldr r0, [r2, ip] - adds r3, r0, #1 - itttt eq - streq r0, [sp, #24] - ldreq r1, [r10, #1196] - addeq r1, r1, #1 - streq r1, [r10, #1196] - ldr r2, [r2, ip] - cmp r2, #256 - bne .L3261 - ldr r0, [lr, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L3261: - add fp, fp, #1 - cmp fp, r5 - bne .L3262 - movs r5, #0 - b .L3247 -.L3283: - ldr r3, .L3284+4 - ldrh r3, [r3, #1694] - cbz r3, .L3264 - ldr r0, [sp] - movs r1, #1 - bl ftl_do_gc -.L3264: - ldr r0, [sp, #24] - b .L3245 -.L3265: - mov r0, #-1 -.L3245: - add sp, sp, #60 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3285: - .align 2 -.L3284: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size ftl_read, .-ftl_read - .align 1 - .global FtlRead - .thumb - .thumb_func - .type FtlRead, %function -FtlRead: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b ftl_read - .fnend - .size FtlRead, .-FtlRead - .align 1 .global ftl_write .thumb .thumb_func .type ftl_write, %function ftl_write: .fnstart - @ args = 0, pretend = 0, frame = 88 + @ args = 0, pretend = 0, frame = 96 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #92 - sub sp, sp, #92 - ldr r9, .L3356+12 + .pad #100 + sub sp, sp, #100 + ldr r7, .L3749 mov r8, r1 - str r3, [sp, #8] - str r2, [sp, #4] - ldr r3, [r9, #744] + str r3, [sp, #12] + ldr r3, .L3749+4 + str r2, [sp, #8] + ldr r3, [r3] + str r3, [sp, #92] + ldr r3, [r7, #4052] cmp r3, #0 - bne .L3328 + bne .L3718 + ldr r2, .L3749+8 + ldr r2, [r2, #504] + adds r2, r2, #1 + beq .L3719 cmp r0, #16 - bne .L3289 + bne .L3677 add r0, r1, #256 - mov r1, r2 - ldr r2, [sp, #8] + ldr r2, [sp, #12] + ldr r1, [sp, #8] bl FtlVendorPartWrite - b .L3288 -.L3289: - ldr r7, .L3356 - ldr r3, [sp, #4] + b .L3676 +.L3677: + ldr r3, [sp, #8] adds r6, r1, r3 - ldr r3, [r7, #1896] + ldr r3, [r7, #1912] cmp r6, r3 - bhi .L3329 - ldrh r4, [r7, #2916] + bhi .L3720 + ldrh r4, [r7, #1878] mov r3, #2048 - ldr r5, .L3356+4 + ldr r5, .L3749+12 mov r0, r1 mov r1, r4 - str r3, [r5, #-40] + str r3, [r5, #3808] bl __aeabi_uidiv mov r1, r4 mov fp, r0 @@ -20112,131 +22636,132 @@ ftl_write: rsb r6, fp, r0 str r0, [sp, #20] adds r3, r6, #1 - str r3, [sp, #12] - ldr r2, [sp, #12] - ldr r3, [r9, #1004] - add r3, r3, r2 - ldr r2, [sp, #4] - str r3, [r9, #1004] - ldr r3, [r9, #1020] - cmp r2, r4, lsl #1 - add r3, r3, r2 - str r3, [r9, #1020] - mov r3, r2 - ldr r2, [r7, #2960] + str r3, [sp, #4] + ldr r3, .L3749+16 + ldr r1, [sp, #4] + ldr r2, [r3, #-32] + add r2, r2, r1 + ldr r1, [sp, #8] + str r2, [r3, #-32] + ldr r2, [r3, #-16] + cmp r1, r4, lsl #1 + add r2, r2, r1 + str r2, [r3, #-16] + mov r2, r1 + ldr r1, [r7, #1924] ite cs - movcs r3, #1 - movcc r3, #0 - str r3, [sp, #28] - cmp r2, #0 - beq .L3291 - movs r3, #36 - ldr r7, [r7, #2964] - muls r3, r2, r3 - subs r3, r3, #36 - add r7, r7, r3 - ldr r3, [r7, #16] - cmp fp, r3 - bne .L3292 - ldr r3, [r9, #1008] + movcs r2, #1 + movcc r2, #0 + str r2, [sp, #28] + cmp r1, #0 + beq .L3679 + movs r2, #36 + muls r2, r1, r2 + ldr r1, [r7, #1928] + subs r2, r2, #36 + add r9, r1, r2 + ldr r2, [r9, #16] + cmp fp, r2 + bne .L3680 + ldr r2, [r3, #-28] mov r1, r4 mov r0, r8 + adds r2, r2, #1 + str r2, [r3, #-28] + ldr r3, [r5, #3812] adds r3, r3, #1 - str r3, [r9, #1008] - ldr r3, [r5, #-36] - adds r3, r3, #1 - str r3, [r5, #-36] + str r3, [r5, #3812] bl __aeabi_uidivmod - ldr r3, [sp, #4] - ldr r0, [r7, #8] + ldr r0, [r9, #8] + ldr r3, [sp, #8] subs r4, r4, r1 add r0, r0, r1, lsl #9 + ldr r1, [sp, #12] cmp r4, r3 - ldr r1, [sp, #8] it cs movcs r4, r3 - lsl r9, r4, #9 - mov r2, r9 + lsls r7, r4, #9 + mov r2, r7 bl ftl_memcpy - cbnz r6, .L3293 - ldr r3, [r5, #-36] + cbnz r6, .L3681 + ldr r3, [r5, #3812] cmp r3, #2 - ble .L3328 -.L3293: - ldr r3, [sp, #4] + ble .L3718 +.L3681: + ldr r3, [sp, #8] add r8, r8, r4 add fp, fp, #1 - str r6, [sp, #12] + str r6, [sp, #4] subs r3, r3, r4 - str r3, [sp, #4] - ldr r3, [sp, #8] - add r3, r3, r9 str r3, [sp, #8] -.L3292: + ldr r3, [sp, #12] + add r3, r3, r7 + str r3, [sp, #12] +.L3680: movs r3, #0 - str r3, [r5, #-36] -.L3291: + str r3, [r5, #3812] +.L3679: mov r0, fp ldr r1, [sp, #20] bl FtlCacheMetchLpa - cbz r0, .L3294 + cbz r0, .L3682 bl FtlCacheWriteBack -.L3294: - ldr r4, .L3356 +.L3682: + ldr r4, .L3749 mov r6, fp - ldr r7, .L3356+8 + ldr r7, .L3749+20 mov r10, r4 - str r7, [r5, #-60] -.L3295: - ldr r3, [sp, #12] - ldr r5, .L3356+12 + str r7, [r5, #3788] +.L3683: + ldr r3, [sp, #4] + ldr r5, .L3749+16 cmp r3, #0 - beq .L3355 + beq .L3748 ldrh r3, [r7, #4] - cbnz r3, .L3296 - add r2, r5, #836 - ldr r9, .L3356+24 + cbnz r3, .L3684 + sub r2, r5, #200 + ldr r9, .L3749+8 cmp r7, r2 - bne .L3297 - ldrh r7, [r5, #888] - cbnz r7, .L3298 - add r0, r5, #884 + bne .L3685 + ldrh r7, [r5, #-148] + cbnz r7, .L3686 + sub r0, r5, #152 bl allocate_new_data_superblock - str r7, [r9, #3068] -.L3298: - ldr r0, .L3356+8 + str r7, [r9, #3292] +.L3686: + ldr r0, .L3749+20 bl allocate_new_data_superblock - ldr r3, [r9, #3068] - cbnz r3, .L3330 -.L3300: - ldr r7, .L3356+8 - b .L3299 -.L3297: - str r3, [r9, #3068] - ldrh r3, [r5, #840] + ldr r3, [r9, #3292] + cbnz r3, .L3721 +.L3688: + ldr r7, .L3749+20 + b .L3687 +.L3685: + str r3, [r9, #3292] + ldrh r3, [r5, #-196] cmp r3, #0 - bne .L3300 + bne .L3688 mov r0, r7 bl allocate_new_data_superblock - b .L3299 -.L3330: - ldr r7, .L3356+16 -.L3299: + b .L3687 +.L3721: + ldr r7, .L3749+24 +.L3687: ldrh r3, [r7, #4] - cbnz r3, .L3301 + cbnz r3, .L3689 mov r0, r7 bl allocate_new_data_superblock -.L3301: - ldr r3, .L3356+4 - str r7, [r3, #-60] -.L3296: +.L3689: + ldr r3, .L3749+12 + str r7, [r3, #3788] +.L3684: ldr r2, [r5, #1760] - ldr r3, [r4, #2960] + ldr r3, [r4, #1924] ldrh ip, [r7, #4] subs r3, r2, r3 - ldr r2, [sp, #12] + ldr r2, [sp, #4] cmp ip, r3 - ldr r9, .L3356+12 + ldr r9, .L3749+16 it cs movcs ip, r3 cmp ip, r2 @@ -20246,38 +22771,38 @@ ftl_write: str r3, [sp, #44] movs r3, #0 str r3, [sp, #24] -.L3302: +.L3690: ldr r3, [sp, #24] ldr r2, [sp, #44] cmp r3, r2 - beq .L3303 + beq .L3691 ldrh r3, [r7, #4] cmp r3, #0 - beq .L3303 + beq .L3691 ldr r3, [sp, #28] - cbz r3, .L3304 + cbz r3, .L3692 ldr r3, [sp, #20] cmp r6, r3 - bne .L3304 + bne .L3692 ldr r3, [sp, #24] - cbz r3, .L3304 - ldr r3, [sp, #4] - ldrh r2, [r4, #2916] + cbz r3, .L3692 + ldr r3, [sp, #8] + ldrh r2, [r4, #1878] add r3, r8, r3 mls r3, r2, r6, r3 cmp r3, r2 - bne .L3303 -.L3304: - add r1, sp, #48 + bne .L3691 +.L3692: + add r1, sp, #52 movs r2, #0 mov r0, r6 movs r5, #36 bl log2phys mov r0, r7 bl get_new_active_ppa - ldr r3, [r4, #2960] - ldr r1, [r4, #2964] - ldrh r2, [r4, #2922] + ldr r3, [r4, #1924] + ldr r1, [r4, #1928] + ldrh r2, [r4, #1884] mla r1, r5, r3, r1 mul ip, r3, r2 str r6, [r1, #16] @@ -20289,7 +22814,7 @@ ftl_write: str r0, [sp, #40] ldr r0, [sp, #36] add r0, lr, r0, lsl #2 - ldrh lr, [r4, #2920] + ldrh lr, [r4, #1882] str r0, [sp, #16] str r0, [r1, #12] mul r3, r3, lr @@ -20301,252 +22826,295 @@ ftl_write: movs r1, #0 bl ftl_memset cmp r6, fp - beq .L3305 + beq .L3693 ldr r3, [sp, #20] cmp r6, r3 - bne .L3352 - ldr r3, [sp, #4] + bne .L3745 + ldr r3, [sp, #8] add r5, r8, r3 - ldrh r3, [r4, #2916] + ldrh r3, [r4, #1878] smulbb r3, r3, r6 subs r5, r5, r3 movs r3, #0 str r3, [sp, #32] uxth r5, r5 - b .L3308 -.L3305: - ldrh r5, [r4, #2916] + b .L3696 +.L3693: + ldrh r5, [r4, #1878] mov r0, r8 mov r1, r5 bl __aeabi_uidivmod - ldr r3, [sp, #4] + ldr r3, [sp, #8] subs r5, r5, r1 str r1, [sp, #32] cmp r5, r3 it cs movcs r5, r3 -.L3308: - ldrh r3, [r4, #2916] +.L3696: + ldrh r3, [r4, #1878] cmp r5, r3 - bne .L3309 + bne .L3697 cmp r6, fp mov lr, #36 ittet ne mulne r1, r6, r5 - ldrne r3, [sp, #8] - ldreq r1, [sp, #8] + 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, .L3311 - ldr r2, [r10, #2960] - ldr r5, [r10, #2964] + cbz r3, .L3699 + ldr r2, [r10, #1924] + ldr r5, [r10, #1928] mla r2, lr, r2, r5 str r1, [r2, #8] - b .L3312 -.L3311: - ldr r0, [r10, #2964] - ldr r3, [r10, #2960] - ldrh r2, [r10, #2920] + b .L3700 +.L3699: + ldr r0, [r10, #1928] + ldr r3, [r10, #1924] + ldrh r2, [r10, #1882] mla r3, lr, r3, r0 ldr r0, [r3, #8] - b .L3353 -.L3309: - ldr r2, [sp, #48] + b .L3746 +.L3750: + .align 2 +.L3749: + .word .LANCHOR0 + .word __stack_chk_guard + .word .LANCHOR1 + .word .LANCHOR5 + .word .LANCHOR2 + .word .LANCHOR2-200 + .word .LANCHOR2-152 +.L3697: + ldr r2, [sp, #52] movs r3, #36 adds r1, r2, #1 - beq .L3313 - ldr r1, [r4, #2964] - add r0, sp, #52 - str r2, [sp, #56] - ldr r2, [r4, #2960] - str r6, [sp, #68] + beq .L3701 + ldr r1, [r4, #1928] + add r0, sp, #56 + str r2, [sp, #60] + ldr r2, [r4, #1924] + str r6, [sp, #72] mla r3, r3, r2, r1 movs r1, #1 ldr r2, [r3, #8] ldr r3, [r3, #12] - str r2, [sp, #60] + str r2, [sp, #64] movs r2, #0 - str r3, [sp, #64] + str r3, [sp, #68] bl FlashReadPages - ldr r3, [sp, #52] + ldr r3, [sp, #56] adds r3, r3, #1 - bne .L3314 - ldr r3, [r9, #1196] + bne .L3702 + ldr r3, [r9, #164] adds r3, r3, #1 - str r3, [r9, #1196] - b .L3316 -.L3314: + str r3, [r9, #164] + b .L3704 +.L3702: ldr r3, [sp, #16] ldr r3, [r3, #8] cmp r3, r6 - beq .L3316 - ldr r3, [r9, #1196] + beq .L3704 + ldr r3, [r9, #164] mov r2, r6 - ldr r0, .L3356+20 + ldr r0, .L3751 adds r3, r3, #1 - str r3, [r9, #1196] + str r3, [r9, #164] ldr r3, [sp, #16] ldr r1, [r3, #8] bl printk - b .L3316 -.L3357: - .align 2 -.L3356: - .word .LANCHOR0 - .word .LANCHOR4 - .word .LANCHOR2+836 - .word .LANCHOR2 - .word .LANCHOR2+884 - .word .LC144 - .word .LANCHOR1 -.L3313: - ldr r1, [r4, #2964] - ldr r2, [r4, #2960] + b .L3704 +.L3701: + ldr r1, [r4, #1928] + ldr r2, [r4, #1924] mla r2, r3, r2, r1 movs r1, #0 ldr r0, [r2, #8] - ldrh r2, [r4, #2920] + ldrh r2, [r4, #1882] bl ftl_memset -.L3316: +.L3704: cmp r6, fp mov lr, #36 lsl r2, r5, #9 - bne .L3317 - ldr r1, [r4, #2960] - ldr r5, [r4, #2964] + bne .L3705 + ldr r1, [r4, #1924] + ldr r5, [r4, #1928] ldr r3, [sp, #32] mla r1, lr, r1, r5 ldr r0, [r1, #8] - ldr r1, [sp, #8] + ldr r1, [sp, #12] add r0, r0, r3, lsl #9 - b .L3353 -.L3317: - ldr r0, [r4, #2964] - ldr r3, [r4, #2960] - ldrh r1, [r4, #2916] + b .L3746 +.L3705: + ldr r0, [r4, #1928] + ldr r3, [r4, #1924] + ldrh r1, [r4, #1878] mla r3, lr, r3, r0 muls r1, r6, r1 ldr r0, [r3, #8] rsb r1, r8, r1 - ldr r3, [sp, #8] + ldr r3, [sp, #12] add r1, r3, r1, lsl #9 - b .L3353 -.L3352: + b .L3746 +.L3745: ldr r3, [sp, #28] - cbz r3, .L3318 - ldr r3, [r4, #2960] - ldr r2, [r4, #2964] + cbz r3, .L3706 + ldr r3, [r4, #1924] + ldr r2, [r4, #1928] mla r5, r5, r3, r2 - ldrh r3, [r4, #2916] - ldr r2, [sp, #8] + ldrh r3, [r4, #1878] + ldr r2, [sp, #12] muls r3, r6, r3 rsb r3, r8, r3 add r3, r2, r3, lsl #9 str r3, [r5, #8] - b .L3312 -.L3318: - ldr r2, [r4, #2964] - ldr r3, [r4, #2960] - ldrh r1, [r4, #2916] + b .L3700 +.L3706: + ldr r2, [r4, #1928] + ldr r3, [r4, #1924] + ldrh r1, [r4, #1878] mla r3, r5, r3, r2 - ldrh r2, [r4, #2920] + ldrh r2, [r4, #1882] muls r1, r6, r1 ldr r0, [r3, #8] rsb r1, r8, r1 - ldr r3, [sp, #8] + ldr r3, [sp, #12] add r1, r3, r1, lsl #9 -.L3353: +.L3746: bl ftl_memcpy -.L3312: +.L3700: 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, #1032] + ldr r3, [r9, #-4] str r3, [r2, #4] adds r3, r3, #1 adds r2, r3, #1 ldr r2, [sp, #16] it eq moveq r3, #0 - str r3, [r9, #1032] + str r3, [r9, #-4] ldr r3, [sp, #16] str r6, [r3, #8] adds r6, r6, #1 - ldr r3, [sp, #48] + ldr r3, [sp, #52] str r3, [r2, #12] ldrh r3, [r7] strh r3, [r2, #2] @ movhi - ldr r3, [r4, #2960] + ldr r3, [r4, #1924] adds r3, r3, #1 - str r3, [r4, #2960] + str r3, [r4, #1924] ldr r3, [sp, #24] adds r3, r3, #1 str r3, [sp, #24] - b .L3302 -.L3303: - ldr r3, [sp, #12] + b .L3690 +.L3691: + ldr r3, [sp, #4] ldr r2, [sp, #24] subs r3, r3, r2 - str r3, [sp, #12] - ldr r3, .L3358 - ldr r2, [r10, #2960] + str r3, [sp, #4] + ldr r3, .L3751+4 + ldr r2, [r10, #1924] ldr r3, [r3, #1760] cmp r2, r3 - bcs .L3322 + bcs .L3710 ldr r3, [sp, #28] - cbnz r3, .L3322 + cbnz r3, .L3710 ldrh r3, [r7, #4] - cbz r3, .L3322 -.L3324: + cbz r3, .L3710 +.L3712: movs r3, #0 str r3, [sp, #28] - b .L3295 -.L3322: + b .L3683 +.L3710: bl FtlCacheWriteBack movs r3, #0 - str r3, [r10, #2960] - ldr r3, [sp, #12] + str r3, [r10, #1924] + ldr r3, [sp, #4] cmp r3, #1 - bhi .L3295 - b .L3324 -.L3355: + bhi .L3683 + b .L3712 +.L3748: mov r0, r3 ldr r3, [sp, #20] rsb r1, fp, r3 bl ftl_do_gc - ldrh r3, [r5, #832] + ldrh r3, [r5, #-204] + cmp r3, #5 + bls .L3724 cmp r3, #31 - bhi .L3328 - movs r4, #16 + bhi .L3718 + ldr r3, .L3751+8 + ldrb r3, [r3] @ zero_extendqisi2 + cbnz r3, .L3718 +.L3724: + ldr r4, [sp, #4] + movw r7, #65535 + ldr r6, .L3751+4 + ldr r8, .L3751+8 +.L3737: + ldrh r3, [r5, #40] + cmp r3, r7 + bne .L3716 + ldrh r3, [r6, #658] + cmp r3, r7 + bne .L3716 + ldrh r3, [r6, #660] + cmp r3, r7 + bne .L3716 + and r0, r4, #7 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L3716: + movs r0, #1 movs r3, #128 - strh r3, [r5, #1638] @ movhi - strh r3, [r5, #1636] @ movhi -.L3327: + strh r3, [r5, #606] @ movhi + mov r1, r0 + strh r3, [r5, #604] @ movhi + bl ftl_do_gc movs r0, #0 movs r1, #1 bl ftl_do_gc - ldr r3, [r5, #744] - cbnz r3, .L3328 - subs r4, r4, #1 - bne .L3327 - b .L3328 -.L3329: + ldr r3, [r8, #4052] + cbnz r3, .L3718 + ldrh r3, [r6, #-204] + cmp r3, #2 + bhi .L3718 + adds r4, r4, #1 + cmp r4, #256 + bne .L3737 + b .L3718 +.L3720: mov r0, #-1 - b .L3288 -.L3328: + b .L3676 +.L3718: movs r0, #0 -.L3288: - add sp, sp, #92 + b .L3676 +.L3719: + mov r0, r3 +.L3676: + ldr r3, .L3751+12 + ldr r2, [sp, #92] + ldr r3, [r3] + cmp r2, r3 + beq .L3717 + bl __stack_chk_fail +.L3717: + add sp, sp, #100 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3359: +.L3752: .align 2 -.L3358: +.L3751: + .word .LC160 .word .LANCHOR2 + .word .LANCHOR0 + .word __stack_chk_guard .fnend .size ftl_write, .-ftl_write .align 1 @@ -20585,14 +23153,26 @@ FlashBootVendorWrite: mov r5, r1 mov r4, r2 bl rknand_device_lock + ldr r3, .L3757 + ldr r3, [r3, #504] + cmp r3, #1 + bne .L3756 mov r2, r4 - mov r1, r5 mov r0, r6 + mov r1, r5 bl ftl_vendor_write mov r4, r0 + b .L3755 +.L3756: + mov r4, #-1 +.L3755: bl rknand_device_unlock mov r0, r4 pop {r4, r5, r6, pc} +.L3758: + .align 2 +.L3757: + .word .LANCHOR1 .fnend .size FlashBootVendorWrite, .-FlashBootVendorWrite .align 1 @@ -20640,786 +23220,264 @@ StorageSysDataStore: .fnend .size StorageSysDataStore, .-StorageSysDataStore .align 1 - .global FtlWrite + .global FtlDumpSysBlock .thumb .thumb_func - .type FtlWrite, %function -FtlWrite: + .type FtlDumpSysBlock, %function +FtlDumpSysBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - b ftl_write - .fnend - .size FtlWrite, .-FtlWrite - .align 1 - .global FlashReadFacBbtData - .thumb - .thumb_func - .type FlashReadFacBbtData, %function -FlashReadFacBbtData: - .fnstart - @ args = 0, pretend = 0, frame = 40 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3379 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r8, r2 - ldrh r2, [r3, #1876] - mov r7, r1 - ldrh r3, [r3, #1878] - .pad #40 - sub sp, sp, #40 - mov r5, r0 - smulbb r3, r2, r3 - ldr r2, .L3379+4 - ldr r1, [r2, #3988] - mov r9, r2 - uxth r3, r3 - subs r6, r3, #1 - str r1, [sp, #12] - mul r10, r3, r7 - ldr r1, [r2, #4020] - uxth r6, r6 - sub r4, r3, #16 - str r1, [sp, #16] -.L3366: - cmp r6, r4 - ble .L3378 - movs r1, #1 - add r3, r6, r10 - add r0, sp, #4 - mov r2, r1 - lsls r3, r3, #10 - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #4] - adds r3, r3, #1 - beq .L3367 - ldr r3, [r9, #4020] - ldrh r2, [r3] - movw r3, #61664 - cmp r2, r3 - bne .L3367 - cbz r5, .L3373 - cbz r7, .L3374 -.L3371: - ldr r1, [r9, #3988] - mov r2, r8 - mov r0, r5 - bl ftl_memcpy - movs r2, #4 - ldr r0, .L3379+8 - mov r1, r5 - mov r3, r2 - bl rknand_print_hex - movs r0, #0 - b .L3368 -.L3374: - ldr r6, .L3379+4 - mov lr, #1 -.L3369: - ldr r2, [r9, #4008] - uxth r3, r7 - adds r7, r7, #1 + push {r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + lsl r8, r0, #10 + ldr r4, .L3769 + .pad #28 + sub sp, sp, #28 + ldr r7, .L3769+4 + movs r5, #0 + mov r6, r0 + ldr r3, [r4, #1776] + mov r9, r4 + str r3, [r4, #4060] + ldr r3, [r4, #1800] + str r3, [r4, #4064] +.L3762: + ldrh r2, [r7, #1874] + sxth r3, r5 cmp r3, r2 - bcs .L3371 - ldr r2, [r6, #3988] - 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 .L3369 -.L3367: - subs r6, r6, #1 - uxth r6, r6 - b .L3366 -.L3378: - mov r0, #-1 - b .L3368 -.L3373: - mov r0, r5 -.L3368: - add sp, sp, #40 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L3380: - .align 2 -.L3379: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC145 - .fnend - .size FlashReadFacBbtData, .-FlashReadFacBbtData - .align 1 - .global FlashGetBadBlockList - .thumb - .thumb_func - .type FlashGetBadBlockList, %function -FlashGetBadBlockList: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3391 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r5, r0 - ldr r3, [r3, #1788] - ldr r6, .L3391+4 - ldrb r4, [r3, #13] @ zero_extendqisi2 - ldrh r3, [r3, #14] - ldr r0, [r6, #4016] - smulbb r4, r4, r3 - uxth r4, r4 - adds r2, r4, #7 - asrs r2, r2, #3 - bl FlashReadFacBbtData - adds r0, r0, #1 - bne .L3382 -.L3386: - movs r3, #0 - b .L3383 -.L3382: - movs r1, #0 - lsr lr, r4, #4 - mov ip, #1 - subs r4, r4, #1 - mov r3, r1 -.L3384: - uxth r2, r1 - cmp r2, r4 - bge .L3383 - ldr r7, [r6, #4016] - 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 .L3384 - b .L3386 -.L3383: - movw r2, #65535 - movs r0, #0 - strh r2, [r5, r3, lsl #1] @ movhi - pop {r4, r5, r6, r7, r8, pc} -.L3392: - .align 2 -.L3391: - .word .LANCHOR0 - .word .LANCHOR2 - .fnend - .size FlashGetBadBlockList, .-FlashGetBadBlockList - .align 1 - .global FtlMakeBbt - .thumb - .thumb_func - .type FtlMakeBbt, %function -FtlMakeBbt: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - ldr r4, .L3415 - ldr r5, [r4, #744] - cmp r5, #0 - bne .L3394 - bl FtlBbtMemInit - ldr r7, .L3415+4 - bl FtlLoadFactoryBbt - mov fp, r4 - sub r9, r7, #18 - subw r8, r7, #3000 -.L3395: - ldrh r3, [r8, #2862] - ldr r6, .L3415+8 - cmp r5, r3 - bcs .L3413 - ldrh r3, [r9, #2]! - movw r2, #65535 - ldr r0, [r4, #1776] - ldr r10, [r4, #1800] - cmp r3, r2 - str r0, [r4, #4060] - str r10, [r4, #4064] - beq .L3396 - ldrh ip, [r8, #2906] + bge .L3768 movs r1, #1 - ldr r0, .L3415+12 - mov r2, r1 - mla ip, ip, r5, r3 - lsl r3, ip, #10 - str ip, [sp, #4] - str r3, [fp, #4056] - bl FlashReadPages - ldrh r2, [r8, #2906] - ldr r0, [r7] - adds r2, r2, #7 - ldr r1, [fp, #4060] - asrs r2, r2, #3 - bl ftl_memcpy - ldr ip, [sp, #4] - b .L3397 -.L3396: - mov r1, r5 - bl FlashGetBadBlockList - ldr r0, [fp, #4060] - ldr r1, [r7] - bl FtlBbt2Bitmap - ldrh r6, [r8, #2906] -.L3399: - subs r6, r6, #1 - uxth r6, r6 -.L3398: - ldr r3, .L3415+8 - ldrh r0, [r3, #2906] - smlabb r0, r0, r5, r6 - uxth r0, r0 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L3399 - ldr r0, [r4, #1800] - movs r1, #16 - strh r6, [r9] @ movhi - bl __memzero - movw r3, #61664 - strh r3, [r10] @ movhi - movs r3, #0 - str r3, [r10, #4] - ldrh r3, [r9] - ldrh ip, [r8, #2906] - ldrh r2, [r4, #1864] - strh r3, [r10, #2] @ movhi - ldrh r3, [r9] - ldr r1, [r7] - lsls r2, r2, #2 - ldr r0, [r4, #4060] - mla ip, ip, r5, r3 - lsl r3, ip, #10 - str ip, [sp, #4] + ldr r0, .L3769+8 + orr r3, r3, r8 str r3, [r4, #4056] - bl ftl_memcpy - movs r1, #1 - ldr r0, .L3415+12 mov r2, r1 - bl FlashEraseBlocks - movs r1, #1 - ldr r0, .L3415+12 - mov r3, r1 - mov r2, r1 - bl FlashProgPages - ldr r3, [r4, #4052] - ldr ip, [sp, #4] + bl FlashReadPages + ldr r3, [r4, #4064] + ldr r0, .L3769+12 + 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, #4052] + str r3, [sp, #12] + ldr r3, [r4, #4060] + ldr r3, [r3] + str r3, [sp, #16] + ldr r3, [r4, #4056] + bl printk + ldr r3, [r4, #4064] + ldr r3, [r3] adds r3, r3, #1 - bne .L3397 - uxth r0, ip - bl FtlBbmMapBadBlock - b .L3398 -.L3397: - uxth r0, ip + beq .L3763 + ldr r0, .L3769+16 + movs r2, #4 + ldr r1, [r9, #1776] + mov r3, #768 + bl rknand_print_hex +.L3763: adds r5, r5, #1 - bl FtlBbmMapBadBlock - adds r7, r7, #4 - b .L3395 -.L3413: - movs r5, #0 -.L3402: - ldrh r3, [r6, #2924] - uxth r0, r5 - ldr r7, .L3415+8 - adds r5, r5, #1 - cmp r3, r0 - bls .L3414 - bl FtlBbmMapBadBlock - b .L3402 -.L3414: - ldrh r5, [r7, #2984] - movw r8, #65535 - subs r5, r5, #1 - uxth r5, r5 -.L3404: - ldrh r3, [r6, #2984] - subs r3, r3, #48 - cmp r5, r3 - ble .L3408 - mov r0, r5 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L3405 - mov r0, r5 - bl FlashTestBlk - cbz r0, .L3406 - mov r0, r5 - bl FtlBbmMapBadBlock - b .L3405 -.L3406: - ldrh r3, [r7, #2972] - cmp r3, r8 - bne .L3407 - strh r5, [r7, #2972] @ movhi - b .L3405 -.L3407: - ldr r3, .L3415+8 - strh r5, [r3, #2976] @ movhi - b .L3408 -.L3405: - subs r5, r5, #1 - uxth r5, r5 - b .L3404 -.L3408: - ldr r0, [r4, #748] - movs r5, #0 - ldrh r3, [r6, #2972] - movs r2, #2 - str r5, [r6, #2980] - movs r1, #1 - strh r5, [r6, #2974] @ movhi - lsls r3, r3, #10 - str r3, [r0, #4] - ldrh r3, [r6, #2976] - lsls r3, r3, #10 - str r3, [r0, #40] - bl FlashEraseBlocks - ldrh r0, [r6, #2972] - bl FtlBbmMapBadBlock - ldrh r0, [r6, #2976] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldr r3, [r6, #2980] - ldrh r2, [r6, #2976] - adds r3, r3, #1 - str r3, [r6, #2980] - ldrh r3, [r6, #2972] - strh r5, [r6, #2974] @ movhi - strh r2, [r6, #2972] @ movhi - strh r3, [r6, #2976] @ movhi - bl FtlBbmTblFlush -.L3394: - movs r0, #0 - add sp, sp, #12 + b .L3762 +.L3768: + add sp, sp, #28 @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3416: + pop {r4, r5, r6, r7, r8, r9, pc} +.L3770: .align 2 -.L3415: +.L3769: .word .LANCHOR2 - .word .LANCHOR0+3000 .word .LANCHOR0 .word .LANCHOR2+4052 + .word .LC161 + .word .LC162 .fnend - .size FtlMakeBbt, .-FtlMakeBbt + .size FtlDumpSysBlock, .-FtlDumpSysBlock .align 1 - .global FtlLowFormat + .global dump_map_info .thumb .thumb_func - .type FtlLowFormat, %function -FtlLowFormat: + .type dump_map_info, %function +dump_map_info: .fnstart - @ args = 0, pretend = 0, frame = 0 + @ args = 0, pretend = 0, frame = 24 @ 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, .L3451 - ldr r6, [r4, #744] - cmp r6, #0 - bne .L3419 - ldr r5, .L3451+4 - mov r1, r6 - ldr r0, [r4, #1852] - ldrh r2, [r5, #2948] - lsls r2, r2, #2 - bl ftl_memset - ldrh r2, [r5, #2948] - mov r1, r6 - ldr r0, [r4, #1848] - lsls r2, r2, #2 - bl ftl_memset - ldrh r0, [r5, #2844] - str r6, [r4, #1028] - str r6, [r4, #1032] - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt - cbz r0, .L3420 - bl FtlMakeBbt -.L3420: - ldr r0, .L3451+8 - movs r2, #0 -.L3421: - ldrh r1, [r5, #2916] - uxth r3, r2 - adds r2, r2, #1 - cmp r3, r1, lsl #7 - bge .L3448 - ldr r6, [r4, #1792] - mvns r1, r3 - orr r1, r3, r1, lsl #16 - str r1, [r6, r3, lsl #2] - ldr r1, [r4, #1796] - str r0, [r1, r3, lsl #2] - b .L3421 -.L3448: - ldr r3, .L3451+4 - movs r6, #0 - ldrh r7, [r3, #2848] -.L3423: - ldrh r3, [r5, #2850] - ldr r8, .L3451+4 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r5, .L3789 + add fp, r5, #1832 + ldrh r7, [r5, #1812] + mov r9, r5 +.L3772: + ldrh r3, [r5, #1814] + ldr r4, .L3789+4 cmp r3, r7 - bls .L3449 - mov r0, r7 - movs r1, #1 - bl FtlLowFormatEraseBlock + bls .L3786 + ldr r1, [r4, #632] + mov r8, #0 + ldrh ip, [r9, #1804] + mov r10, #36 + ldr r2, [r4, #1764] + mov r6, r8 + str r1, [sp, #24] + ldr r3, [r4, #628] + ldrh r1, [r9, #1884] + str r1, [sp, #28] +.L3782: + uxth r1, r8 + cmp r1, ip + bcs .L3787 + 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] + bl FtlBbmIsBadBlock + ldr r1, [sp, #32] + ldr ip, [sp, #36] + ldr r2, [sp, #40] + ldr r3, [sp, #44] + cbnz r0, .L3773 + mla r0, r10, r6, r2 + lsls r1, r1, #10 + str r1, [r0, #4] + ldr r1, [sp, #28] + muls r1, r6, r1 + add r6, r6, #1 + it mi + addmi r1, r1, #3 + bic lr, r1, #3 + ldr r1, [sp, #24] + uxth r6, r6 + str r3, [r0, #8] + add r1, r1, lr + str r1, [r0, #12] +.L3773: + add r8, r8, #1 + b .L3782 +.L3787: + cbz r6, .L3777 + ldr r0, [r4, #1764] + mov r1, r6 + movs r2, #1 + mov r8, #0 + bl FlashReadPages + mov r10, #36 +.L3778: + uxth r3, r8 + cmp r3, r6 + bcs .L3777 + ldr r3, [r4, #1764] + ldr r0, .L3789+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 .L3778 +.L3777: adds r7, r7, #1 uxth r7, r7 - add r0, r0, r6 - uxth r6, r0 - b .L3423 -.L3449: - ldrh r1, [r8, #2840] - subs r3, r6, #3 - cmp r3, r1, lsl #1 - bge .L3425 -.L3429: - movs r6, #0 - mov r7, r6 - b .L3426 -.L3425: - mov r0, r6 - bl __aeabi_uidiv - ldr r3, [r8, #2944] - add r0, r0, r3 - uxth r0, r0 - bl FtlSysBlkNumInit - ldrh r0, [r8, #2844] - bl FtlFreeSysBlkQueueInit - ldrh r6, [r8, #2848] -.L3427: - ldrh r3, [r5, #2850] - cmp r3, r6 - bls .L3429 - mov r0, r6 - adds r6, r6, #1 + b .L3772 +.L3786: + mov r8, #0 +.L3781: + ldrh r3, [r4, #1912] + sxth r6, r8 + ldr r7, .L3789+4 + cmp r6, r3 + bge .L3784 + lsls r6, r6, #1 + movs r7, #0 +.L3785: + ldrh r2, [r5, #1874] + sxth r3, r7 + adds r7, r7, #1 + cmp r3, r2 + bge .L3788 + ldr r2, [r4, #1828] movs r1, #1 - bl FtlLowFormatEraseBlock - uxth r6, r6 - b .L3427 -.L3426: - ldrh r3, [r5, #2848] - uxth r0, r6 - ldr r10, .L3451+4 - adds r6, r6, #1 - cmp r3, r0 - bls .L3450 - movs r1, #0 - bl FtlLowFormatEraseBlock - add r0, r0, r7 - uxth r7, r0 - b .L3426 -.L3450: - ldrh r3, [r10, #2850] - ldrh r6, [r10, #2840] - ldr fp, [r10, #2852] - str r3, [r4, #1752] - mov r1, r6 - mov r0, fp - bl __aeabi_uidiv - ubfx r8, r0, #5, #16 - mov r9, r0 - add r3, r8, #36 - strh r3, [r4, #1056] @ movhi - movs r3, #24 - str r0, [r10, #2968] - muls r3, r6, r3 - cmp r7, r3 - ble .L3431 - rsb r0, r7, fp - mov r1, r6 - bl __aeabi_uidiv - ldr r3, .L3451 - str r0, [r10, #2968] - lsrs r0, r0, #5 - adds r0, r0, #24 - strh r0, [r3, #1056] @ movhi -.L3431: - ldr r3, [r5, #2832] - cmp r3, #1 - bne .L3432 - mov r0, r7 - mov r1, r6 - bl __aeabi_uidiv - ldrh r10, [r4, #1056] - uxtah r0, r10, r0 - add r10, r10, r0, asr #2 - strh r10, [r4, #1056] @ movhi -.L3432: - ldrb r3, [r5, #76] @ zero_extendqisi2 - cbz r3, .L3433 - mov r0, r7 - mov r1, r6 - bl __aeabi_uidiv - ldrh r10, [r4, #1056] - uxtah r0, r10, r0 - add r10, r10, r0, asr #2 - strh r10, [r4, #1056] @ movhi -.L3433: - ldrh r3, [r5, #2902] - cbz r3, .L3435 - ldrh r2, [r4, #1056] - add r2, r2, r3, lsr #1 - strh r2, [r4, #1056] @ movhi - mul r2, r6, r3 - cmp r2, r7 - itttt gt - addgt r3, r3, #32 - ldrgt r2, .L3451+4 - addgt r3, r3, r8 - strgt r9, [r2, #2968] - itt gt - ldrgt r2, .L3451 - strhgt r3, [r2, #1056] @ movhi -.L3435: - ldrh r2, [r4, #1056] - ldr r3, [r5, #2968] - ldr r7, .L3451 - subs r3, r3, r2 - muls r6, r3, r6 - ldrh r3, [r5, #2910] - str r6, [r4, #4088] - muls r6, r3, r6 - ldrh r3, [r5, #2916] - str r6, [r5, #2968] - muls r6, r3, r6 - str r6, [r5, #1896] - bl FtlBbmTblFlush - ldrh r2, [r5, #2850] - movs r1, #0 - ldr r0, [r4, #816] - movw r6, #65535 - lsls r2, r2, #1 - bl ftl_memset - ldrh r2, [r5, #2848] - ldr r0, [r4, #992] - movs r1, #255 - movs r3, #0 - strh r6, [r4, #1072] @ movhi - lsrs r2, r2, #3 - str r3, [r4, #988] - strh r3, [r4, #1074] @ movhi - strb r3, [r4, #1078] - strb r3, [r4, #1080] - strh r3, [r4, #838] @ movhi - strb r3, [r4, #842] - strh r3, [r4, #836] @ movhi - movs r3, #1 - strb r3, [r4, #844] - bl ftl_memset -.L3437: - ldr r5, .L3451 - add r0, r5, #836 - bl make_superblock - ldrb r3, [r4, #843] @ zero_extendqisi2 - ldrh r2, [r4, #836] - cbnz r3, .L3438 - ldr r3, [r7, #816] - strh r6, [r3, r2, lsl #1] @ movhi - ldrh r3, [r7, #836] - adds r3, r3, #1 - strh r3, [r7, #836] @ movhi - b .L3437 -.L3438: - ldr r3, [r5, #1028] - movw r7, #65535 - ldrh r1, [r5, #840] - str r3, [r5, #848] - adds r3, r3, #1 - str r3, [r5, #1028] - ldr r3, [r5, #816] - strh r1, [r3, r2, lsl #1] @ movhi - movs r3, #0 - strh r3, [r5, #886] @ movhi - strb r3, [r5, #890] - ldrh r3, [r5, #836] - adds r3, r3, #1 - strh r3, [r5, #884] @ movhi - movs r3, #1 - strb r3, [r5, #892] -.L3439: - ldr r6, .L3451 - add r0, r6, #884 - bl make_superblock - ldrb r3, [r4, #891] @ zero_extendqisi2 - ldrh r2, [r4, #884] - cbnz r3, .L3440 - ldr r3, [r5, #816] - strh r7, [r3, r2, lsl #1] @ movhi - ldrh r3, [r5, #884] - adds r3, r3, #1 - strh r3, [r5, #884] @ movhi - b .L3439 -.L3440: - ldr r3, [r6, #1028] - movw r4, #65535 - ldrh r1, [r6, #888] - str r3, [r6, #896] - adds r3, r3, #1 - str r3, [r6, #1028] - ldr r3, [r6, #816] - strh r1, [r3, r2, lsl #1] @ movhi - strh r4, [r6, #932] @ movhi - bl FtlFreeSysBlkQueueOut - movs r3, #0 - strh r3, [r6, #1062] @ movhi - ldr r3, [r6, #4088] - strh r4, [r6, #1064] @ movhi - strh r3, [r6, #1066] @ movhi - ldr r3, [r6, #1028] - str r3, [r6, #1068] - adds r3, r3, #1 - str r3, [r6, #1028] - strh r0, [r6, #1060] @ movhi - bl FtlVpcTblFlush - bl FtlSysBlkInit - cbnz r0, .L3419 - ldr r3, .L3451+12 - movs r2, #1 - str r2, [r3, #504] -.L3419: - movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3452: - .align 2 -.L3451: - .word .LANCHOR2 - .word .LANCHOR0 - .word 168778952 - .word .LANCHOR1 - .fnend - .size FtlLowFormat, .-FtlLowFormat - .align 1 - .global FtlReInitForSDUpdata - .thumb - .thumb_func - .type FtlReInitForSDUpdata, %function -FtlReInitForSDUpdata: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r3, r4, r5, r6, lr} - .save {r4, r5, r6, lr} - .pad #16 - ldr r4, .L3481 - ldrb r3, [r4, #76] @ zero_extendqisi2 - cbz r3, .L3454 -.L3456: - movs r0, #0 - b .L3455 -.L3454: - ldr r5, .L3481+4 - ldr r0, [r5, #3984] - bl FlashInit - cmp r0, #0 - bne .L3456 - bl FlashLoadFactorBbt - cbz r0, .L3457 - bl FlashMakeFactorBbt -.L3457: - ldr r0, [r5, #4016] - bl FlashReadIdbDataRaw - cbz r0, .L3458 - movs r1, #0 - movs r2, #16 - mov r0, sp - movs r6, #1 - bl FlashReadFacBbtData - movs r3, #0 - ldr r1, [sp] - mov r2, r3 -.L3459: - lsl r5, r6, r2 - adds r0, r3, #1 - tst r5, r1 - add r2, r2, #1 - it ne - movne r3, r0 - cmp r2, #16 - bne .L3459 - cmp r3, #6 - bls .L3477 - movs r2, #0 - movs r6, #1 -.L3462: - lsl r5, r6, r2 - adds r0, r3, #1 - tst r5, r1 - add r2, r2, #1 - it ne - movne r3, r0 - cmp r2, #24 - bne .L3462 - cmp r3, #17 - bhi .L3463 -.L3477: - strb r2, [r4, #1] - b .L3461 -.L3463: - movs r3, #36 - strb r3, [r4, #1] -.L3461: - ldrb r3, [r4, #1] @ zero_extendqisi2 - strh r3, [r4, #1890] @ movhi -.L3458: - ldr r1, .L3481+8 - ldr r0, .L3481+12 + ldr r0, .L3789+12 + ldrh r2, [r2, r6] + orr r3, r3, r2, lsl #10 + mov r2, r1 + str r3, [r4, #4056] + bl FlashReadPages + ldr r3, [r4, #4064] + ldr r1, [r4, #1828] + ldr r2, [r4, #4060] + ldr r0, [r3] + ldrh r1, [r1, r6] + 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, .L3789+16 + str r3, [sp, #12] + ldr r3, [r2] + str r3, [sp, #16] + ldr r3, [r2, #4] + ldr r2, [r4, #4052] + str r3, [sp, #20] + ldr r3, [r4, #4056] bl printk - ldr r0, .L3481+16 - bl FtlConstantsInit - bl FtlVariablesInit - ldrh r0, [r4, #2844] - bl FtlFreeSysBlkQueueInit - movs r4, #1 -.L3464: - bl FtlLoadBbt - cbz r0, .L3465 -.L3479: - bl FtlLowFormat - cmp r4, #3 - bhi .L3480 - adds r4, r4, #1 - b .L3464 -.L3480: - mov r0, #-1 - b .L3455 -.L3465: - bl FtlSysBlkInit - cmp r0, #0 - bne .L3479 - ldr r3, .L3481+20 - movs r2, #1 - str r2, [r3, #504] -.L3455: - add sp, sp, #16 + b .L3785 +.L3788: + add r8, r8, #1 + b .L3781 +.L3784: + ldr r1, [r7, #1828] + movs r2, #2 + ldr r3, [r5, #1900] + ldr r0, .L3789+20 + bl rknand_print_hex + ldr r1, [r7, #1848] + ldrh r3, [r5, #1908] + movs r2, #4 + ldr r0, .L3789+24 + bl rknand_print_hex + ldr r0, .L3789+28 + ldr r1, [r7, #1852] + movs r2, #4 + ldrh r3, [r5, #1908] + add sp, sp, #52 @ sp needed - pop {r4, r5, r6, pc} -.L3482: + pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} + b rknand_print_hex +.L3790: .align 2 -.L3481: +.L3789: .word .LANCHOR0 .word .LANCHOR2 - .word .LC78 - .word .LC77 - .word .LANCHOR0+1864 - .word .LANCHOR1 + .word .LC163 + .word .LANCHOR2+4052 + .word .LC110 + .word .LC164 + .word .LC165 + .word .LC166 .fnend - .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata + .size dump_map_info, .-dump_map_info .align 1 .global flash_boot_enter_slc_mode .thumb @@ -21430,17 +23488,17 @@ flash_boot_enter_slc_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L3485 - ldr r2, [r3, #2768] - ldr r3, .L3485+4 + ldr r3, .L3793 + ldr r2, [r3, #1744] + ldr r3, .L3793+4 cmp r2, r3 - bne .L3483 + bne .L3791 b flash_enter_slc_mode -.L3483: +.L3791: bx lr -.L3486: +.L3794: .align 2 -.L3485: +.L3793: .word .LANCHOR0 .word 1446522928 .fnend @@ -21455,17 +23513,17 @@ flash_boot_exit_slc_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L3489 - ldr r2, [r3, #2768] - ldr r3, .L3489+4 + ldr r3, .L3797 + ldr r2, [r3, #1744] + ldr r3, .L3797+4 cmp r2, r3 - bne .L3487 + bne .L3795 b flash_exit_slc_mode -.L3487: +.L3795: bx lr -.L3490: +.L3798: .align 2 -.L3489: +.L3797: .word .LANCHOR0 .word 1446522928 .fnend @@ -21481,21 +23539,21 @@ IdBlockReadData: push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r6, r0 - ldr r4, .L3499 + ldr r4, .L3807 mov r8, r1 .pad #20 sub sp, sp, #20 mov r1, r6 mov fp, r2 - ldr r0, .L3499+4 - ldr r3, [r4, #1788] + ldr r0, .L3807+4 + ldr r3, [r4, #692] mov r2, r8 movs r7, #0 ldrb r9, [r3, #9] @ zero_extendqisi2 - ldrh r5, [r3, #10] + ldr r3, [r4, #4] + smulbb r5, r3, r9 bl printk mov r0, r6 - smulbb r5, r5, r9 uxth r5, r5 mov r1, r5 bl __aeabi_uidivmod @@ -21504,35 +23562,35 @@ IdBlockReadData: subs r3, r6, r1 str r3, [sp] ubfx ip, ip, #2, #2 -.L3492: +.L3800: cmp r7, r8 - bcs .L3498 + bcs .L3806 add r2, r7, r10 - ldrb r1, [r4, #76] @ zero_extendqisi2 + ldrb r1, [r4, #140] @ zero_extendqisi2 ubfx r2, r2, #2, #16 rsb r5, ip, #4 add r3, r4, r2, lsl #1 uxth r5, r5 - ldrh r3, [r3, #80] - cbz r1, .L3493 - ldr r1, .L3499 - ldr r0, .L3499+8 - ldr r1, [r1, #2768] + ldrh r3, [r3, #144] + cbz r1, .L3801 + ldr r1, .L3807 + ldr r0, .L3807+8 + ldr r1, [r1, #1744] cmp r1, r0 it eq moveq r3, r2 -.L3493: +.L3801: ldr r2, [sp] add r7, r7, r5 add r2, ip, r2 - ldrb ip, [r4, #1892] @ zero_extendqisi2 + ldrb ip, [r4, #1792] @ zero_extendqisi2 uxth r7, r7 mla r3, r9, r3, r2 - ldr r2, [r4, #1788] + ldr r2, [r4, #692] str ip, [sp, #4] ldrb r1, [r2, #9] @ zero_extendqisi2 str r3, [sp, #12] - ldr r3, .L3499+12 + ldr r3, .L3807+12 str r1, [sp, #8] ldrb r0, [r3, #4014] @ zero_extendqisi2 bl FlashBchSel @@ -21554,25 +23612,25 @@ IdBlockReadData: mov r0, ip bl FlashBchSel mov ip, #0 - b .L3492 -.L3498: + b .L3800 +.L3806: mov r1, r6 mov r2, r8 movs r3, #0 - ldr r0, .L3499+16 + ldr r0, .L3807+16 bl printk movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3500: +.L3808: .align 2 -.L3499: +.L3807: .word .LANCHOR0 - .word .LC146 + .word .LC167 .word 1446522928 .word .LANCHOR2 - .word .LC147 + .word .LC168 .fnend .size IdBlockReadData, .-IdBlockReadData .align 1 @@ -21582,48 +23640,55 @@ IdBlockReadData: .type write_idblock, %function write_idblock: .fnstart - @ args = 0, pretend = 0, frame = 112 + @ args = 0, pretend = 0, frame = 120 @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L3852 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r2 - ldr r7, .L3542 - .pad #124 - sub sp, sp, #124 + .pad #132 + sub sp, sp, #132 + ldr r3, [r3] mov r4, r0 + ldr r7, .L3852+4 mov r0, #256000 mov r6, r1 - ldr r2, [r7, #1788] - ldrb r10, [r2, #9] @ zero_extendqisi2 - ldrh r8, [r2, #10] + mov r5, r2 + str r3, [sp, #124] + ldr r3, [r7, #692] + ldr r8, [r7, #4] + ldrb r10, [r3, #9] @ zero_extendqisi2 bl ftl_malloc - mov r9, r0 + str r0, [sp, #8] cmp r0, #0 - beq .L3524 + beq .L3834 addw r4, r4, #511 lsrs r4, r4, #9 cmp r4, #8 - bls .L3523 + bls .L3832 cmp r4, #500 - bhi .L3524 - b .L3503 -.L3523: + bhi .L3834 + b .L3811 +.L3832: movs r4, #8 -.L3503: +.L3811: + ldr r2, [r6] + ldr r3, .L3852+8 + cmp r2, r3 + bne .L3834 smulbb r3, r10, r8 - mov r0, r4 - uxth r3, r3 - str r3, [sp, #8] - mov r1, r3 + uxth r9, r3 + add r0, r9, #-1 + add r0, r0, r4 + mov r1, r9 bl __aeabi_uidiv movs r3, #0 - movw r2, #63999 + movw r2, #63871 str r0, [sp, #28] add r0, r6, #254976 - add r0, r0, #1020 -.L3507: - ldr r1, [r0] - cbnz r1, .L3504 + add r0, r0, #512 +.L3815: + ldr r1, [r0, #-4]! + cbnz r1, .L3812 ldr r1, [r6, r3, lsl #2] adds r3, r3, #1 cmp r3, #4096 @@ -21631,33 +23696,33 @@ write_idblock: it hi movhi r3, #0 cmp r2, #4096 - str r1, [r0], #-4 - bne .L3507 - b .L3506 -.L3504: - ldr r0, .L3542+4 + str r1, [r0, #512] + bne .L3815 + b .L3814 +.L3812: + ldr r0, .L3852+12 bl printk -.L3506: +.L3814: mov r1, r5 movs r3, #5 - ldr r0, .L3542+8 + ldr r0, .L3852+16 movs r2, #4 bl rknand_print_hex ldrb r2, [r7, #1] @ zero_extendqisi2 ldr r1, [r6, #512] subs r5, r5, #4 - ldr r0, .L3542+12 + ldr r0, .L3852+20 bl printk - ldr r2, .L3542+16 - ldrh r3, [r7, #1890] + ldr r2, .L3852+24 + ldrh r3, [r7, #138] mov r1, r4 - ldr r0, .L3542+20 + ldr r0, .L3852+28 ldr r2, [r2, #4008] str r2, [sp] mov r2, r4 bl printk ldrb r3, [r7, #1] @ zero_extendqisi2 - ldr r7, .L3542 + ldr r7, .L3852+4 ldr r2, [r6, #512] cmp r2, r3 it hi @@ -21667,66 +23732,66 @@ write_idblock: movs r3, #0 str r3, [sp, #16] str r3, [sp, #12] -.L3521: +.L3829: ldr r2, [r5, #4] ldrb r3, [r7, #1] @ zero_extendqisi2 + ldr r10, .L3852+4 cmp r2, r3 - bcs .L3509 - ldr r3, .L3542+16 + bcs .L3817 + ldr r3, .L3852+24 ldr r3, [r3, #4008] cmp r2, r3 - bcc .L3509 + bcc .L3817 ldr r3, [sp, #28] cmp r3, #1 - bls .L3510 + bls .L3818 ldr r3, [sp, #12] - cbz r3, .L3510 + cbz r3, .L3818 ldr r3, [r5] adds r3, r3, #1 cmp r2, r3 - beq .L3509 -.L3510: - mov r0, r9 - mov r1, #512 - bl __memzero + beq .L3817 +.L3818: + movs r1, #0 + mov r2, #512 + ldr r0, [sp, #8] + bl memset ldr r3, [r5, #4] - ldr r2, [sp, #8] - ldr r0, .L3542+24 - mul r8, r3, r2 - ldr r3, .L3542 - ldr r3, [r3, #1788] + ldr r0, .L3852+32 + mul r8, r3, r9 + ldr r3, [r10, #692] + ldrb r3, [r3, #9] @ zero_extendqisi2 mov r1, r8 - ldrb r2, [r3, #9] @ zero_extendqisi2 - ldrh r10, [r3, #10] - str r2, [sp, #20] + str r3, [sp, #20] + ldr r3, [r10, #4] + ldrh r2, [sp, #20] + smulbb r10, r3, r2 mov r2, r4 - ldrh r3, [sp, #20] - smulbb r10, r10, r3 bl printk movs r0, #0 bl flash_boot_enter_slc_mode - ldr r1, [sp, #20] mov r0, r8 - bl __aeabi_uidiv uxth r10, r10 + ldr r1, [sp, #20] + bl __aeabi_uidiv mov r1, r0 movs r0, #0 mov r2, r0 bl FlashEraseBlock cmp r4, r10 - bls .L3525 + bls .L3835 movs r0, #0 add r1, r8, r10 mov fp, #2 mov r2, r0 bl FlashEraseBlock - b .L3511 -.L3525: + b .L3819 +.L3835: mov fp, #1 -.L3511: +.L3819: movs r0, #0 bl flash_boot_exit_slc_mode - ldr r3, [r7, #1788] + ldr r3, [r7, #692] ldrh r0, [r3, #10] ldrb r1, [r3, #12] @ zero_extendqisi2 lsls r0, r0, #2 @@ -21737,69 +23802,69 @@ write_idblock: str r0, [sp, #44] mov r0, r8 bl __aeabi_uidivmod - str r6, [sp, #24] mov ip, r1 rsb r3, r1, r8 + str r6, [sp, #24] str r3, [sp, #36] -.L3512: +.L3820: ldr r3, [sp, #44] cmp r10, r3 - bcs .L3541 + bcs .L3851 add r2, r10, ip ubfx r2, r2, #2, #16 - cbz r2, .L3513 + cbz r2, .L3821 adds r3, r2, #1 add r1, r7, r3, lsl #1 - ldrh fp, [r1, #80] - ldrb r1, [r7, #76] @ zero_extendqisi2 - cbz r1, .L3514 - ldr r1, [r7, #2768] - ldr r0, .L3542+28 + ldrh fp, [r1, #144] + ldrb r1, [r7, #140] @ zero_extendqisi2 + cbz r1, .L3822 + ldr r1, [r7, #1744] + ldr r0, .L3852+36 cmp r1, r0 it eq moveq fp, r3 -.L3514: +.L3822: add fp, fp, #1073741824 add fp, fp, #-1 lsl r3, fp, #2 - str r3, [sp, #56] -.L3513: - movw r3, #61424 str r3, [sp, #60] +.L3821: + movw r3, #61424 + str r3, [sp, #64] add r3, r7, r2, lsl #1 - ldrh fp, [r3, #80] - ldrb r3, [r7, #76] @ zero_extendqisi2 - cbz r3, .L3515 - ldr r3, [r7, #2768] - ldr r1, .L3542+28 + ldrh fp, [r3, #144] + ldrb r3, [r7, #140] @ zero_extendqisi2 + cbz r3, .L3823 + ldr r3, [r7, #1744] + ldr r1, .L3852+36 cmp r3, r1 it eq moveq fp, r2 -.L3515: +.L3823: ldr r3, [sp, #20] add r10, r10, #4 ldr r2, [sp, #36] str ip, [sp, #52] uxth r10, r10 mla r2, r3, fp, r2 - ldr r3, .L3542 - ldrb r3, [r3, #1892] @ zero_extendqisi2 + ldr r3, .L3852+4 + ldrb r3, [r3, #1792] @ zero_extendqisi2 str r2, [sp, #48] str r3, [sp, #40] - ldr r3, .L3542+16 + ldr r3, .L3852+24 ldrb r0, [r3, #4014] @ zero_extendqisi2 bl FlashBchSel movs r0, #0 bl flash_boot_enter_slc_mode - ldr r3, .L3542 - ldr r2, [sp, #48] - ldr r3, [r3, #1788] - mov r0, r2 + ldr r3, .L3852+4 + ldr r3, [r3, #692] ldrb r1, [r3, #9] @ zero_extendqisi2 + ldr r2, [sp, #48] + mov r0, r2 bl __aeabi_uidiv - add r3, sp, #56 - ldr r2, [sp, #24] + add r3, sp, #60 mov r1, r0 + ldr r2, [sp, #24] movs r0, #0 bl FlashProgPage movs r0, #0 @@ -21818,130 +23883,139 @@ write_idblock: ldr ip, [sp, #52] add r3, r3, #2048 str r3, [sp, #24] - b .L3512 -.L3543: + b .L3820 +.L3853: .align 2 -.L3542: +.L3852: + .word __stack_chk_guard .word .LANCHOR0 - .word .LC148 - .word .LC149 - .word .LC150 + .word -52655045 + .word .LC169 + .word .LC170 + .word .LC171 .word .LANCHOR2 - .word .LC151 - .word .LC152 + .word .LC172 + .word .LC173 .word 1446522928 -.L3541: +.L3851: mov r1, r8 - mov r2, r4 movs r3, #0 - ldr r0, .L3544 + mov r2, r4 + ldr r0, .L3854 bl printk ldr r0, [r5, #4] - ldr r3, [sp, #8] mov r1, r4 - mov r2, r9 mov r8, #0 - muls r0, r3, r0 + mul r0, r0, r9 + ldr r2, [sp, #8] bl IdBlockReadData - mov r0, r9 - mov r1, r6 -.L3520: + mov r3, r6 + ldr r0, [sp, #8] +.L3828: mov fp, r0 - mov r10, r1 - ldr r2, [fp] + mov r10, r3 + ldr r1, [fp] adds r0, r0, #4 - ldr r3, [r10] - adds r1, r1, #4 - cmp r2, r3 - beq .L3517 - mov r0, r9 - mov r1, #512 - bl __memzero + ldr r2, [r10] + adds r3, r3, #4 + cmp r1, r2 + beq .L3825 + movs r1, #0 + mov r2, #512 + ldr r0, [sp, #8] + bl memset ldr r3, [fp] - ldr r1, [sp, #12] - ldr r0, .L3544+4 + ldr r0, .L3854+4 str r3, [sp] ldr r3, [r10] bic r10, r8, #255 + ldr r1, [sp, #12] lsl r10, r10, #2 str r3, [sp, #4] mov r3, r8 ldr r2, [r5, #4] bl printk - ldr r0, .L3544+8 + ldr r0, .L3854+8 add r1, r6, r10 movs r2, #4 mov r3, #256 bl rknand_print_hex - add r1, r9, r10 movs r2, #4 + ldr r0, .L3854+12 + ldr r3, [sp, #8] + add r1, r3, r10 mov r3, #256 - ldr r0, .L3544+12 bl rknand_print_hex movs r0, #0 bl flash_boot_enter_slc_mode - ldr r3, [sp, #8] ldr r1, [r5, #4] movs r0, #0 + mul r1, r1, r9 mov r2, r0 - muls r1, r3, r1 bl FlashEraseBlock ldr r3, [sp, #28] cmp r3, #1 - bls .L3518 + bls .L3826 ldr r1, [r5, #4] movs r0, #0 - ldr r3, [sp, #8] mov r2, r0 - mla r1, r1, r3, r3 + mla r1, r1, r9, r9 bl FlashEraseBlock -.L3518: +.L3826: movs r0, #0 bl flash_boot_exit_slc_mode - ldr r0, .L3544+16 + ldr r0, .L3854+16 ldr r1, [r5, #4] bl printk ldr r3, [sp, #32] cmp r8, r3 - bcc .L3509 - b .L3519 -.L3517: - ldr r3, [sp, #32] + bcc .L3817 + b .L3827 +.L3825: + ldr r2, [sp, #32] add r8, r8, #1 - cmp r8, r3 - bne .L3520 -.L3519: + cmp r8, r2 + bne .L3828 +.L3827: ldr r3, [sp, #16] adds r3, r3, #1 str r3, [sp, #16] -.L3509: +.L3817: ldr r3, [sp, #12] adds r5, r5, #4 adds r3, r3, #1 str r3, [sp, #12] cmp r3, #5 - bne .L3521 - mov r0, r9 + bne .L3829 + ldr r0, [sp, #8] bl ftl_free ldr r3, [sp, #16] clz r0, r3 lsrs r0, r0, #5 negs r0, r0 - b .L3502 -.L3524: + b .L3810 +.L3834: mov r0, #-1 -.L3502: - add sp, sp, #124 +.L3810: + ldr r3, .L3854+20 + ldr r2, [sp, #124] + ldr r3, [r3] + cmp r2, r3 + beq .L3830 + bl __stack_chk_fail +.L3830: + add sp, sp, #132 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3545: +.L3855: .align 2 -.L3544: - .word .LC153 - .word .LC154 - .word .LC155 - .word .LC156 - .word .LC157 +.L3854: + .word .LC174 + .word .LC175 + .word .LC176 + .word .LC177 + .word .LC178 + .word __stack_chk_guard .fnend .size write_idblock, .-write_idblock .align 1 @@ -21956,27 +24030,216 @@ CRC_32: push {r4, lr} .save {r4, lr} add r1, r1, r0 - ldr r4, .L3550 + ldr r4, .L3860 movs r2, #0 -.L3547: +.L3857: cmp r0, r1 - beq .L3549 + beq .L3859 ldrb r3, [r0], #1 @ zero_extendqisi2 eor r3, r3, r2, lsr #24 add r3, r4, r3, lsl #2 - ldr r3, [r3, #3072] + ldr r3, [r3, #3296] eor r2, r3, r2, lsl #8 - b .L3547 -.L3549: + b .L3857 +.L3859: mov r0, r2 pop {r4, pc} -.L3551: +.L3861: .align 2 -.L3550: +.L3860: .word .LANCHOR1 .fnend .size CRC_32, .-CRC_32 .align 1 + .global write_loader_lba + .thumb + .thumb_func + .type write_loader_lba, %function +write_loader_lba: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ 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} + cmp r0, #64 + ldr r6, .L3885 + .pad #56 + sub sp, sp, #56 + mov r5, r0 + mov r7, r1 + mov r9, r2 + ldr r4, .L3885+4 + ldr r3, [r6] + str r3, [sp, #52] + bne .L3863 + ldr r2, [r2] + ldr r3, .L3885+8 + cmp r2, r3 + bne .L3863 + mov r0, #256000 + movs r3, #1 + strb r3, [r4, #3816] + bl ftl_malloc + movs r1, #0 + mov r2, #256000 + str r0, [r4, #3820] + bl ftl_memset + str r5, [r4, #3824] +.L3863: + str r7, [sp] + mov r3, r5 + ldr r0, .L3885+12 + ldr r1, [r4, #3820] + ldr r2, [r9] + bl printk + ldrb r3, [r4, #3816] @ zero_extendqisi2 + ldr r10, .L3885+4 + cmp r3, #0 + beq .L3862 + sub r0, r5, #64 + ldr r8, [r10, #3820] + cmp r0, #500 + bcs .L3865 + rsb r2, r5, #564 + add r0, r8, r0, lsl #9 + cmp r2, r7 + mov r1, r9 + it cs + movcs r2, r7 + lsls r2, r2, #9 + bl ftl_memcpy + b .L3866 +.L3865: + cmp r5, #564 + bcs .L3874 +.L3866: + ldr r3, [r4, #3824] + cmp r3, r5 + beq .L3872 + ldr r2, .L3885+4 + movs r3, #0 + mov r9, r3 + strb r3, [r2, #3816] + cmp r8, #0 + beq .L3873 + mov r0, r8 + bl ftl_free +.L3873: + str r9, [r4, #3820] +.L3872: + add r5, r5, r7 + str r5, [r4, #3824] + b .L3862 +.L3874: + ldr r3, .L3885+16 + ldr r0, [r10, #3824] + ldr r3, [r3, #692] + subs r0, r0, #64 + cmp r0, #500 + it cs + movcs r0, #500 + ldrb r3, [r3, #9] @ zero_extendqisi2 + cmp r3, #4 + beq .L3876 + movs r3, #2 + str r3, [sp, #12] + movs r3, #3 + str r3, [sp, #16] + movs r3, #4 + str r3, [sp, #20] + movs r3, #5 + str r3, [sp, #24] + movs r3, #6 + str r3, [sp, #28] + b .L3868 +.L3876: + movs r3, #0 +.L3867: + add r1, sp, #12 + 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 .L3867 +.L3868: + movw r3, #63872 +.L3871: + ldr r2, [r8, r3, lsl #2] + cbz r2, .L3869 + adds r3, r3, #128 + lsls r0, r3, #2 + b .L3870 +.L3869: + subs r3, r3, #1 + cmp r3, #4096 + bne .L3871 + lsls r0, r0, #9 +.L3870: + mov r1, r8 + add r2, sp, #12 + bl write_idblock + ldr r0, [r4, #3820] + mov r8, #0 + strb r8, [r4, #3816] + bl ftl_free + str r8, [r4, #3820] + b .L3872 +.L3862: + ldr r2, [sp, #52] + ldr r3, [r6] + cmp r2, r3 + beq .L3875 + bl __stack_chk_fail +.L3875: + add sp, sp, #56 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L3886: + .align 2 +.L3885: + .word __stack_chk_guard + .word .LANCHOR5 + .word -52655045 + .word .LC179 + .word .LANCHOR0 + .fnend + .size write_loader_lba, .-write_loader_lba + .align 1 + .global FtlWrite + .thumb + .thumb_func + .type FtlWrite, %function +FtlWrite: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + mov r5, r3 + sub r3, r1, #64 + mov r7, r0 + cmp r3, #1984 + mov r4, r1 + mov r6, r2 + bcs .L3888 + cbnz r0, .L3888 + mov r0, r1 + mov r1, r2 + mov r2, r5 + bl write_loader_lba +.L3888: + mov r0, r7 + mov r1, r4 + mov r2, r6 + mov r3, r5 + pop {r4, r5, r6, r7, r8, lr} + b ftl_write + .fnend + .size FtlWrite, .-FtlWrite + .align 1 .global rknand_sys_storage_ioctl .thumb .thumb_func @@ -21985,328 +24248,334 @@ rknand_sys_storage_ioctl: .fnstart @ args = 0, pretend = 0, frame = 528 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L3660 - push {r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - cmp r1, r3 - .pad #532 - sub sp, sp, #532 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #528 + sub sp, sp, #528 + ldr r5, .L3998 mov r4, r1 - mov r5, r2 - beq .L3554 - bhi .L3555 + mov r6, r2 + ldr r3, [r5] + str r3, [sp, #524] + ldr r3, .L3998+4 + cmp r1, r3 + beq .L3891 + bhi .L3892 subw r3, r3, #3461 cmp r1, r3 - beq .L3556 - bhi .L3557 + beq .L3893 + bhi .L3894 subs r3, r3, #125 cmp r1, r3 - beq .L3558 - bhi .L3559 + beq .L3895 + bhi .L3896 subs r3, r3, #237 cmp r1, r3 - bne .L3615 + bne .L3953 bl rknand_dev_flush - b .L3648 -.L3559: - ldr r3, .L3660+4 + b .L3986 +.L3896: + ldr r3, .L3998+8 cmp r1, r3 - beq .L3561 + beq .L3898 adds r3, r3, #1 cmp r1, r3 - beq .L3562 - b .L3615 -.L3557: - ldr r3, .L3660+8 + beq .L3899 + b .L3953 +.L3894: + ldr r3, .L3998+12 cmp r1, r3 - beq .L3563 - bhi .L3564 + beq .L3900 + bhi .L3901 mvn r1, #1960 add r3, r3, r1 cmp r4, r3 - beq .L3565 - b .L3615 -.L3564: - ldr r3, .L3660+12 + beq .L3902 + b .L3953 +.L3901: + ldr r3, .L3998+16 cmp r1, r3 - beq .L3563 + beq .L3900 adds r3, r3, #10 cmp r1, r3 - beq .L3563 - b .L3615 -.L3555: - ldr r3, .L3660+16 + beq .L3900 + b .L3953 +.L3892: + ldr r3, .L3998+20 cmp r1, r3 - beq .L3566 - bhi .L3567 + beq .L3903 + bhi .L3904 subs r3, r3, #78 cmp r1, r3 - beq .L3568 - bcc .L3569 + beq .L3905 + bcc .L3906 adds r3, r3, #21 cmp r1, r3 - beq .L3570 + beq .L3907 adds r3, r3, #56 cmp r1, r3 - beq .L3571 - b .L3615 -.L3567: - ldr r3, .L3660+20 + beq .L3908 + b .L3953 +.L3904: + ldr r3, .L3998+24 cmp r1, r3 - mov r6, r3 - beq .L3572 - bhi .L3573 + mov r7, r3 + beq .L3909 + bhi .L3910 mvn r2, #956 add r3, r3, r2 cmp r1, r3 - beq .L3574 + beq .L3911 add r3, r3, #956 cmp r1, r3 - beq .L3575 - b .L3615 -.L3573: - ldr r3, .L3660+24 + beq .L3912 + b .L3953 +.L3910: + ldr r3, .L3998+28 cmp r1, r3 - beq .L3575 + beq .L3912 adds r3, r3, #1 cmp r1, r3 - beq .L3572 - b .L3615 -.L3569: - ldr r0, .L3660+28 + beq .L3909 + b .L3953 +.L3906: + ldr r0, .L3998+32 bl printk mov r0, #4096 bl ftl_malloc mov r4, r0 - cbnz r0, .L3576 -.L3581: + cbnz r0, .L3913 +.L3918: mvn r0, #11 - b .L3553 -.L3576: - mov r1, r5 + b .L3890 +.L3913: + mov r1, r6 mov r2, #512 bl rk_copy_from_user - cbnz r0, .L3654 - ldr r0, .L3660+32 + cbnz r0, .L3992 + ldr r0, .L3998+36 ldmia r4, {r1, r2} bl printk ldr r3, [r4, #4] cmp r3, #8 - str r3, [sp, #4] - bhi .L3652 + str r3, [sp] + bhi .L3990 bl rknand_device_lock - ldr r1, [sp, #4] mov r2, r4 ldr r0, [r4] + ldr r1, [sp] bl IdBlockReadData bl rknand_device_unlock - ldr r2, [sp, #4] - mov r0, r5 + mov r0, r6 mov r1, r4 + ldr r2, [sp] lsls r2, r2, #9 bl rk_copy_to_user cmp r0, #0 - beq .L3647 - ldr r0, .L3660+36 -.L3650: + beq .L3985 + ldr r0, .L3998+40 +.L3988: bl printk -.L3652: +.L3990: mov r0, r4 -.L3653: +.L3991: bl ftl_free -.L3651: +.L3989: mvn r0, #13 - b .L3553 -.L3568: - ldr r0, .L3660+40 + b .L3890 +.L3905: + ldr r0, .L3998+44 bl printk mov r0, #4096 bl ftl_malloc mov r4, r0 cmp r0, #0 - beq .L3581 - mov r1, r5 + beq .L3918 + mov r1, r6 mov r2, #4096 bl rk_copy_from_user - cbz r0, .L3582 -.L3654: - ldr r0, .L3660+44 - b .L3650 -.L3582: - ldr r5, .L3660+48 - ldr r0, .L3660+52 + cbz r0, .L3919 +.L3992: + ldr r0, .L3998+48 + b .L3988 +.L3919: + ldr r6, .L3998+52 + ldr r0, .L3998+56 ldmia r4, {r1, r2} bl printk - ldr r3, [r5, #-32] - mov r6, r5 - cbnz r3, .L3583 + ldr r7, [r6, #3828] + mov r8, r6 + cbnz r7, .L3920 mov r0, #260096 bl ftl_malloc - str r0, [r5, #-32] + str r0, [r6, #3828] cmp r0, #0 - beq .L3652 - mov r1, #260096 - bl __memzero -.L3583: + beq .L3990 + mov r1, r7 + mov r2, #260096 + bl memset +.L3920: ldr r2, [r4, #4] movw r3, #4088 cmp r2, r3 - bhi .L3652 + bhi .L3990 ldr r3, [r4] cmp r3, #251904 - bhi .L3652 - ldr r0, [r6, #-32] + bhi .L3990 + ldr r0, [r8, #3828] add r1, r4, #8 add r0, r0, r3 bl memcpy -.L3647: +.L3985: mov r0, r4 bl ftl_free -.L3648: +.L3986: movs r4, #0 - b .L3580 -.L3571: - ldr r0, .L3660+56 + b .L3917 +.L3908: + ldr r0, .L3998+60 bl printk mov r0, #4096 bl ftl_malloc - mov r6, r0 + mov r7, r0 cmp r0, #0 - beq .L3581 - mov r1, r5 + beq .L3918 + mov r1, r6 movs r2, #28 bl rk_copy_from_user - cbz r0, .L3586 - ldr r0, .L3660+44 + cbz r0, .L3923 + ldr r0, .L3998+48 bl printk - b .L3587 -.L3586: - ldmia r6, {r1, r2} - ldr r0, .L3660+60 + b .L3924 +.L3923: + ldmia r7, {r1, r2} + ldr r0, .L3998+64 bl printk - ldr r1, [r6] + ldr r1, [r7] cmp r1, #256000 - bhi .L3587 - ldr r5, .L3660+48 - ldr r0, [r5, #-32] - cbz r0, .L3587 + bhi .L3924 + ldr r6, .L3998+52 + ldr r0, [r6, #3828] + cbz r0, .L3924 bl CRC_32 - ldr r3, [r6, #4] + ldr r3, [r7, #4] cmp r3, r0 - beq .L3589 - mov r0, r6 + beq .L3926 + mov r0, r7 bl ftl_free - b .L3616 -.L3589: + b .L3954 +.L3926: bl rknand_device_lock - ldr r1, [r5, #-32] - add r2, r6, #8 - ldr r0, [r6] + ldr r1, [r6, #3828] + add r2, r7, #8 + ldr r0, [r7] bl write_idblock movs r4, #0 bl rknand_device_unlock - ldr r0, [r5, #-32] + ldr r0, [r6, #3828] bl ftl_free - str r4, [r5, #-32] - mov r0, r6 - b .L3593 -.L3587: - mov r0, r6 - b .L3653 -.L3570: - ldr r0, .L3660+64 + str r4, [r6, #3828] + mov r0, r7 + b .L3930 +.L3924: + mov r0, r7 + b .L3991 +.L3907: + ldr r0, .L3998+68 bl printk mov r0, #4096 bl ftl_malloc - mov r6, r0 + mov r7, r0 cmp r0, #0 - beq .L3581 + beq .L3918 bl ftl_read_flash_info - mov r0, r5 - mov r1, r6 + mov r0, r6 + mov r1, r7 movs r2, #11 - b .L3658 -.L3554: - ldr r0, .L3660+68 + b .L3996 +.L3891: + ldr r0, .L3998+72 bl printk bl nand_blk_add_whole_disk mov r0, #4096 bl ftl_malloc - mov r6, r0 + mov r7, r0 cmp r0, #0 - beq .L3581 - bl rknand_device_lock + beq .L3918 movs r1, #0 movs r2, #64 + bl ftl_memset mov r0, r6 - bl FlashReadFacBbtData - bl rknand_device_unlock - ldr r0, .L3660+72 - mov r1, r6 - movs r2, #4 - movs r3, #8 - bl rknand_print_hex - mov r0, r5 - mov r1, r6 + mov r1, r7 movs r2, #64 - b .L3658 -.L3566: - ldr r0, .L3660+76 + b .L3996 +.L3903: + ldr r0, .L3998+76 bl printk - ldr r3, .L3660+48 - add r1, sp, #4 + ldr r3, .L3998+52 movs r2, #4 - mov r0, r5 - ldr r3, [r3, #-28] + mov r0, r6 + ldr r3, [r3, #3832] ldr r3, [r3, #20] - str r3, [sp, #4] -.L3642: + mov r1, sp + str r3, [sp] +.L3980: bl rk_copy_to_user cmp r0, #0 - bne .L3651 - b .L3648 -.L3574: - ldr r0, .L3660+80 + bne .L3989 + b .L3986 +.L3911: + ldr r0, .L3998+80 bl printk mov r0, #4096 bl ftl_malloc - mov r6, r0 + mov r7, r0 cmp r0, #0 - beq .L3581 + beq .L3918 bl rknand_device_lock - movs r1, #2 - mov r2, r6 - mov r0, #520 - bl FtlVendorPartRead + mov r1, #264 + movs r2, #2 + mov r3, r7 + movs r0, #16 + bl ftl_read bl rknand_device_unlock mov r2, #1024 - mov r0, r5 - mov r1, r6 -.L3658: + mov r0, r6 + mov r1, r7 +.L3996: bl rk_copy_to_user mov r4, r0 - mov r0, r6 + mov r0, r7 cmp r4, #0 - bne .L3653 -.L3593: + bne .L3991 +.L3930: bl ftl_free - b .L3580 -.L3558: - ldr r0, .L3660+84 + b .L3917 +.L3895: + ldr r0, .L3998+84 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user mov r4, r0 - cbz r0, .L3594 -.L3599: - ldr r0, .L3660+44 + cbz r0, .L3931 +.L3936: + ldr r0, .L3998+48 bl printk - b .L3651 -.L3661: + b .L3989 +.L3931: + ldr r2, [sp, #4] + ldr r3, .L3998+88 + cmp r2, r3 + beq .L3932 +.L3933: + mov r4, #-1 + b .L3917 +.L3999: .align 2 -.L3660: +.L3998: + .word __stack_chk_guard .word 1074033155 .word 1074029570 .word 1074031656 @@ -22314,185 +24583,179 @@ rknand_sys_storage_ioctl: .word 1074033235 .word 1074034193 .word 1074034194 - .word .LC158 - .word .LC160 - .word .LC161 - .word .LC162 - .word .LC159 - .word .LANCHOR4 - .word .LC163 - .word .LC164 - .word .LC165 - .word .LC166 - .word .LC167 - .word .LC168 - .word .LC169 - .word .LC170 - .word .LC171 -.L3594: - ldr r2, [sp, #8] - ldr r3, .L3662 - cmp r2, r3 - beq .L3595 -.L3596: - mov r4, #-1 - b .L3580 -.L3595: - ldr r3, [sp, #12] + .word .LC180 + .word .LC182 + .word .LC183 + .word .LC184 + .word .LC181 + .word .LANCHOR5 + .word .LC185 + .word .LC186 + .word .LC187 + .word .LC188 + .word .LC189 + .word .LC190 + .word .LC191 + .word .LC192 + .word 1263358532 +.L3932: + ldr r3, [sp, #8] cmp r3, #512 - bhi .L3596 - ldr r6, .L3662+4 + bhi .L3933 + ldr r7, .L4000 mov r2, #512 - add r0, sp, #8 - ldr r1, [r6, #-28] + add r0, sp, #4 + ldr r1, [r7, #3832] bl memcpy - ldr r2, [r6, #-24] - ldr r3, .L3662+8 + ldr r2, [r7, #3836] + ldr r3, .L4000+4 cmp r2, r3 - beq .L3597 - add r0, sp, #72 - movs r1, #128 + beq .L3934 + add r0, sp, #68 + mov r1, r4 + movs r2, #128 + str r4, [sp, #12] str r4, [sp, #16] - str r4, [sp, #20] - bl __memzero -.L3597: - add r0, sp, #264 - mov r1, #256 - movs r3, #0 - str r3, [sp, #24] - bl __memzero - b .L3656 -.L3561: - ldr r0, .L3662+12 + bl memset +.L3934: + movs r1, #0 + mov r2, #256 + add r0, sp, #260 + str r1, [sp, #20] + bl memset + b .L3994 +.L3898: + ldr r0, .L4000+8 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3662 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4000+12 cmp r2, r3 - bne .L3596 - ldr r3, [sp, #12] + bne .L3933 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L3596 - ldr r2, .L3662+4 - ldr r3, .L3662+8 - ldr r1, [r2, #-24] + bhi .L3933 + ldr r2, .L4000 + ldr r3, .L4000+4 + ldr r1, [r2, #3836] cmp r1, r3 - bne .L3616 - ldr r3, [sp, #20] + bne .L3954 + ldr r3, [sp, #16] subs r1, r3, #1 cmp r1, #127 - bhi .L3617 - ldr r4, [r2, #-28] - add r1, sp, #72 + bhi .L3955 + ldr r4, [r2, #3832] + add r1, sp, #68 add r0, r4, #64 str r3, [r4, #12] - ldr r2, [sp, #20] + ldr r2, [sp, #16] bl memcpy movs r0, #1 mov r1, r4 - b .L3649 -.L3565: - ldr r0, .L3662+16 + b .L3987 +.L3902: + ldr r0, .L4000+16 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3662+20 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4000+20 cmp r2, r3 - bne .L3596 - ldr r3, [sp, #12] + bne .L3933 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L3596 - ldr r5, .L3662+4 - ldr r3, [r5, #-20] - cbnz r3, .L3600 -.L3603: + bhi .L3933 + ldr r6, .L4000 + ldr r3, [r6, #3840] + cbnz r3, .L3937 +.L3940: movs r0, #0 - b .L3553 -.L3600: - ldr r3, [r5, #-16] - ldr r2, .L3662+24 + b .L3890 +.L3937: + ldr r3, [r6, #3844] + ldr r2, .L4000+24 ldr r1, [r3] cmp r1, r2 - beq .L3601 + beq .L3938 str r2, [r3] mov r2, #504 - ldr r3, [r5, #-16] + ldr r3, [r6, #3844] str r2, [r3, #4] movs r2, #0 str r2, [r3, #8] str r2, [r3, #12] -.L3601: - ldr r1, [r5, #-16] +.L3938: + ldr r1, [r6, #3844] movs r4, #0 mov r0, r4 str r4, [r1, #16] bl StorageSysDataStore - ldr r3, [r5, #-28] - ldr r2, .L3662 + ldr r3, [r6, #3832] + ldr r2, .L4000+12 ldr r1, [r3] cmp r1, r2 it ne strne r2, [r3] - ldr r0, [r5, #-28] + ldr r7, [r6, #3832] itt ne movne r2, #504 - ldrne r3, .L3662+4 - mov r1, #128 - add r0, r0, #64 + ldrne r3, .L4000 + add r0, r7, #64 itt ne - ldrne r3, [r3, #-28] + ldrne r3, [r3, #3832] strne r4, [r3, #8] mov r4, #0 it ne strne r2, [r3, #4] - str r4, [r0, #-52] - bl __memzero + movs r2, #128 + mov r1, r4 + str r4, [r7, #12] + bl memset movs r0, #1 - ldr r1, [r5, #-28] + mov r1, r7 bl StorageSysDataStore - str r4, [r5, #-20] - str r4, [r5, #-24] - b .L3580 -.L3556: - ldr r0, .L3662+28 + str r4, [r6, #3840] + str r4, [r6, #3836] + b .L3917 +.L3893: + ldr r0, .L4000+28 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3662+32 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4000+32 cmp r2, r3 - bne .L3596 - ldr r3, [sp, #12] + bne .L3933 + ldr r3, [sp, #8] cmp r3, #512 - bhi .L3596 - ldr r5, .L3662+4 - ldr r3, [r5, #-20] + bhi .L3933 + ldr r6, .L4000 + ldr r3, [r6, #3840] cmp r3, #1 - beq .L3603 - ldr r3, [r5, #-16] - ldr r2, .L3662+24 + beq .L3940 + ldr r3, [r6, #3844] + ldr r2, .L4000+24 ldr r1, [r3] cmp r1, r2 it ne strne r2, [r3] - ldr r1, [r5, #-16] + ldr r1, [r6, #3844] itttt ne movne r2, #504 - ldrne r3, [r5, #-16] + ldrne r3, [r6, #3844] strne r2, [r3, #4] strne r0, [r3, #8] it ne @@ -22501,238 +24764,249 @@ rknand_sys_storage_ioctl: movs r0, #0 str r3, [r1, #16] bl StorageSysDataStore - ldr r3, [r5, #-28] - ldr r2, .L3662 + ldr r3, [r6, #3832] + ldr r2, .L4000+12 ldr r1, [r3] cmp r1, r2 - beq .L3605 + beq .L3942 str r2, [r3] mov r2, #504 - ldr r3, .L3662+4 - ldr r3, [r3, #-28] + ldr r3, .L4000 + ldr r3, [r3, #3832] str r2, [r3, #4] movs r2, #0 str r2, [r3, #8] -.L3605: - ldr r0, [r5, #-28] - movs r1, #128 +.L3942: + ldr r7, [r6, #3832] movs r4, #0 - adds r0, r0, #64 - str r4, [r0, #-52] - bl __memzero + movs r2, #128 + mov r1, r4 + add r0, r7, #64 + str r4, [r7, #12] + bl memset movs r0, #1 - ldr r1, [r5, #-28] + mov r1, r7 bl StorageSysDataStore movs r3, #1 - str r3, [r5, #-20] - b .L3580 -.L3562: - ldr r0, .L3662+36 + str r3, [r6, #3840] + b .L3917 +.L3899: + ldr r0, .L4000+36 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3662+40 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4000+40 cmp r2, r3 - bne .L3596 - ldr r2, [sp, #12] + bne .L3933 + ldr r2, [sp, #8] cmp r2, #512 - bhi .L3596 - add r0, sp, #16 - ldr r1, .L3662+44 - b .L3655 -.L3563: - ldr r0, .L3662+48 - cmp r4, r0 - mov r7, r0 - bne .L3606 - ldr r0, .L3662+52 - b .L3645 -.L3606: - ldr r3, .L3662+56 + bhi .L3933 + add r0, sp, #12 + ldr r1, .L4000+44 + b .L3993 +.L3900: + ldr r7, .L4000+48 + cmp r4, r7 + bne .L3943 + ldr r0, .L4000+52 + b .L3983 +.L3943: + ldr r3, .L4000+56 cmp r4, r3 ite eq - ldreq r0, .L3662+60 - ldrne r0, .L3662+64 -.L3645: + ldreq r0, .L4000+60 + ldrne r0, .L4000+64 +.L3983: bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3662+68 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4000+68 cmp r2, r3 - bne .L3651 - ldr r3, .L3662+56 - ldr r6, .L3662+4 + bne .L3989 + ldr r3, .L4000+56 cmp r4, r3 - bne .L3609 - ldr r3, [r6, #-28] - mov r0, r5 - add r1, sp, #8 + bne .L3946 + ldr r3, .L4000 + mov r0, r6 + add r1, sp, #4 movs r2, #16 + ldr r3, [r3, #3832] ldr r3, [r3, #20] - str r3, [sp, #12] - strb r3, [sp, #16] + str r3, [sp, #8] + strb r3, [sp, #12] bl rk_copy_to_user cmp r0, #0 - beq .L3553 - b .L3651 -.L3609: - ldr r3, [r6, #500] + beq .L3890 + b .L3989 +.L3946: + ldr r6, .L4000+72 + ldr r3, [r6, #16] + mov r0, r6 cmp r3, #10 - bhi .L3651 - ldr r1, [r6, #-28] - ldr r3, [sp, #12] + bhi .L3989 + ldr r3, .L4000 + ldr r1, [r3, #3832] + ldr r3, [sp, #8] ldr r2, [r1, #24] cmp r2, r3 - beq .L3610 - cbz r2, .L3610 + beq .L3947 + cbz r2, .L3947 mov r1, r3 - ldr r0, .L3662+72 + ldr r0, .L4000+76 bl printk - ldr r3, [r6, #500] + ldr r3, [r6, #16] adds r3, r3, #1 - str r3, [r6, #500] - b .L3651 -.L3610: + str r3, [r6, #16] + b .L3989 +.L3947: movs r2, #0 cmp r4, r7 - str r2, [r6, #500] - mov r0, #1 - itet eq - moveq r3, r2 + str r2, [r0, #16] + ite ne movne r2, #1 + moveq r3, r2 + mov r0, #1 + it eq moveq r2, r3 str r3, [r1, #24] str r2, [r1, #20] bl StorageSysDataStore adds r0, r0, #1 - bne .L3648 + bne .L3986 mvn r4, #1 - b .L3580 -.L3663: + b .L3917 +.L4001: .align 2 -.L3662: - .word 1263358532 - .word .LANCHOR4 +.L4000: + .word .LANCHOR5 .word -1067903959 - .word .LC172 - .word .LC173 + .word .LC193 + .word 1263358532 + .word .LC194 .word 1112753220 .word 1146313043 - .word .LC174 + .word .LC195 .word 1112755781 - .word .LC175 + .word .LC196 .word 1094995539 - .word .LANCHOR4-12 + .word .LANCHOR5+3848 .word 1074031666 - .word .LC176 + .word .LC197 .word 1074031676 - .word .LC177 - .word .LC178 + .word .LC198 + .word .LC199 .word 1280262987 - .word .LC179 -.L3575: - ldr r0, .L3664 + .word .LANCHOR6 + .word .LC200 +.L3912: + ldr r0, .L4002 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3664+4 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4002+4 cmp r2, r3 - bne .L3596 - ldr r2, [sp, #12] + bne .L3933 + ldr r2, [sp, #8] cmp r2, #504 - bhi .L3596 - ldr r3, .L3664+8 - add r0, sp, #16 + bhi .L3933 + ldr r3, .L4002+8 + add r0, sp, #12 cmp r4, r3 - ldr r3, .L3664+12 + ldr r3, .L4002+12 ite eq - ldreq r1, [r3, #504] - ldrne r1, [r3, #508] + ldreq r1, [r3, #20] + ldrne r1, [r3, #24] adds r1, r1, #8 -.L3655: +.L3993: bl memcpy -.L3656: - mov r0, r5 - add r1, sp, #8 +.L3994: + mov r0, r6 + add r1, sp, #4 mov r2, #520 - b .L3642 -.L3572: - ldr r0, .L3664+16 + b .L3980 +.L3909: + ldr r0, .L4002+16 bl printk - add r0, sp, #8 - mov r1, r5 + mov r1, r6 mov r2, #520 + add r0, sp, #4 bl rk_copy_from_user cmp r0, #0 - bne .L3599 - ldr r2, [sp, #8] - ldr r3, .L3664+4 + bne .L3936 + ldr r2, [sp, #4] + ldr r3, .L4002+4 cmp r2, r3 - bne .L3596 - ldr r2, [sp, #12] + bne .L3933 + ldr r2, [sp, #8] cmp r2, #504 - bhi .L3596 - cmp r4, r6 + bhi .L3933 + cmp r4, r7 add r2, r2, #8 - ldr r4, .L3664+12 - bne .L3614 - add r1, sp, #8 - ldr r0, [r4, #504] + ldr r4, .L4002+12 + bne .L3951 + add r1, sp, #4 + ldr r0, [r4, #20] bl memcpy movs r0, #2 - ldr r1, [r4, #504] - b .L3649 -.L3614: - add r1, sp, #8 - ldr r0, [r4, #508] + ldr r1, [r4, #20] + b .L3987 +.L3951: + add r1, sp, #4 + ldr r0, [r4, #24] bl memcpy - ldr r1, [r4, #508] + ldr r1, [r4, #24] movs r0, #3 -.L3649: +.L3987: bl StorageSysDataStore mov r4, r0 -.L3580: - ldr r0, .L3664+20 +.L3917: + ldr r0, .L4002+20 mov r1, r4 bl printk mov r0, r4 - b .L3553 -.L3615: + b .L3890 +.L3953: mvn r0, #21 - b .L3553 -.L3616: + b .L3890 +.L3954: mvn r0, #1 - b .L3553 -.L3617: + b .L3890 +.L3955: mvn r0, #2 -.L3553: - add sp, sp, #532 +.L3890: + ldr r2, [sp, #524] + ldr r3, [r5] + cmp r2, r3 + beq .L3952 + bl __stack_chk_fail +.L3952: + add sp, sp, #528 @ sp needed - pop {r4, r5, r6, r7, pc} -.L3665: + pop {r4, r5, r6, r7, r8, pc} +.L4003: .align 2 -.L3664: - .word .LC180 +.L4002: + .word .LC201 .word 1145980246 .word 1074034192 - .word .LANCHOR4 - .word .LC181 - .word .LC182 + .word .LANCHOR6 + .word .LC202 + .word .LC203 .fnend .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 1 @@ -22744,58 +25018,65 @@ rk_ftl_storage_sys_init: .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} + mov r3, #-1 + ldr r4, .L4013 mov r2, #512 - ldr r4, .L3675 - movs r5, #0 - sub r0, r4, #12 - ldr r1, [r4, #-48] - str r5, [r4, #-32] + ldr r5, .L4013+4 + movs r6, #0 + addw r0, r4, #3848 + ldr r1, [r4, #3800] + str r3, [r4, #3824] add r3, r1, #512 - str r3, [r4, #-28] - str r1, [r4, #-16] + str r3, [r4, #3832] + str r1, [r4, #3844] add r3, r1, #1024 add r1, r1, #1536 - str r3, [r4, #504] - str r1, [r4, #508] + str r3, [r5, #20] + strb r6, [r4, #3816] + str r6, [r4, #3820] + str r6, [r4, #3828] + str r1, [r5, #24] bl ftl_memcpy - ldr r6, [r4, #-16] - str r5, [r4, #-24] - str r5, [r4, #500] - ldr r3, [r6, #16] - ldr r7, [r6, #508] - str r3, [r4, #-20] - cbz r7, .L3667 - mov r0, r6 + ldr r7, [r4, #3844] + str r6, [r4, #3836] + str r6, [r5, #16] + ldr r3, [r7, #16] + ldr r8, [r7, #508] + str r3, [r4, #3840] + cmp r8, #0 + beq .L4005 + mov r0, r7 mov r1, #508 - bl JSHash - cmp r7, r0 - beq .L3667 - str r5, [r6, #16] - ldr r0, .L3675+4 - str r5, [r4, #-20] + bl js_hash + cmp r8, r0 + beq .L4005 + str r6, [r7, #16] + ldr r0, .L4013+8 + str r6, [r4, #3840] bl printk -.L3667: - ldr r3, [r4, #-20] - cbz r3, .L3668 - ldr r2, .L3675+8 - ldr r3, .L3675 - str r2, [r3, #-24] -.L3668: - ldr r1, [r4, #504] +.L4005: + ldr r3, [r4, #3840] + cbz r3, .L4006 + ldr r2, .L4013+12 + ldr r3, .L4013 + str r2, [r3, #3836] +.L4006: + ldr r1, [r5, #20] movs r0, #2 bl StorageSysDataLoad - ldr r1, [r4, #508] + ldr r1, [r5, #24] movs r0, #3 bl StorageSysDataLoad - pop {r3, r4, r5, r6, r7, lr} + pop {r4, r5, r6, r7, r8, lr} b rknand_sys_storage_init -.L3676: +.L4014: .align 2 -.L3675: - .word .LANCHOR4 - .word .LC183 +.L4013: + .word .LANCHOR5 + .word .LANCHOR6 + .word .LC204 .word -1067903959 .fnend .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init @@ -22822,89 +25103,90 @@ rk_ftl_vendor_storage_init: .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 {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r0, #65536 bl ftl_malloc - ldr r5, .L3687 - str r0, [r5, #512] + ldr r6, .L4025 + str r0, [r6, #28] cmp r0, #0 - beq .L3684 - movs r7, #0 - ldr r8, .L3687+8 - mov r9, r5 - mov r4, r7 - mov r6, r7 -.L3682: - lsls r0, r6, #7 + beq .L4022 + mov r8, #0 + ldr r9, .L4025+8 + mov r10, r6 + mov r4, r8 + mov r7, r8 +.L4020: + lsls r0, r7, #7 movs r1, #128 - ldr r2, [r5, #512] + ldr r2, [r6, #28] bl FlashBootVendorRead cmp r0, #0 - bne .L3680 - ldr r3, [r9, #512] - ldr r0, .L3687+4 + bne .L4018 + ldr r3, [r10, #28] + ldr r0, .L4025+4 add r2, r3, #65280 adds r2, r2, #252 ldr r1, [r3] ldr r3, [r3, #4] ldr r2, [r2] bl printk - ldr r2, [r9, #512] - ldr r3, [r2] - cmp r3, r8 - bne .L3681 - add r3, r2, #65280 - ldr r1, [r2, #4] + ldr r5, [r10, #28] + ldr r3, [r5] + cmp r3, r9 + bne .L4019 + add r3, r5, #65280 + ldr r2, [r5, #4] adds r3, r3, #252 ldr r3, [r3] - cmp r3, r1 - bne .L3681 + cmp r3, r2 + bne .L4019 cmp r4, r3 itt cc - movcc r7, r6 + movcc r8, r7 movcc r4, r3 -.L3681: - cbnz r6, .L3686 - movs r6, #1 - b .L3682 -.L3686: - cbz r4, .L3683 - lsls r0, r7, #7 +.L4019: + cbnz r7, .L4024 + movs r7, #1 + b .L4020 +.L4024: + cbz r4, .L4021 + lsl r0, r8, #7 movs r1, #128 + mov r2, r5 bl FlashBootVendorRead - cbnz r0, .L3680 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L3683: - mov r0, r2 - mov r1, #65536 - bl __memzero - ldr r3, [r5, #512] - ldr r2, .L3687+8 + cbnz r0, .L4018 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L4021: + mov r0, r5 + mov r1, r4 + mov r2, #65536 + bl memset + ldr r3, .L4025+8 + str r7, [r5, #4] mov r0, r4 - str r6, [r3, #4] - str r2, [r3] - movw r2, #65532 - str r6, [r3, r2] - movw r2, #64504 - strh r4, [r3, #12] @ movhi - strh r2, [r3, #14] @ movhi - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L3680: - ldr r0, [r5, #512] + str r3, [r5] + movw r3, #65532 + str r7, [r5, r3] + movw r3, #64504 + strh r4, [r5, #12] @ movhi + strh r3, [r5, #14] @ movhi + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L4018: + ldr r0, [r6, #28] bl kfree movs r3, #0 mov r0, #-1 - str r3, [r5, #512] - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L3684: + str r3, [r6, #28] + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L4022: mvn r0, #11 - pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L3688: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L4026: .align 2 -.L3687: - .word .LANCHOR4 - .word .LC184 +.L4025: + .word .LANCHOR6 + .word .LC205 .word 1380668996 .fnend .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init @@ -22919,18 +25201,18 @@ rk_ftl_vendor_read: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} - ldr r3, .L3695 - ldr r5, [r3, #512] - cbz r5, .L3694 + ldr r3, .L4033 + ldr r5, [r3, #28] + cbz r5, .L4032 ldrh r7, [r5, #10] movs r3, #0 -.L3691: +.L4029: cmp r3, r7 - bcs .L3694 + bcs .L4032 add r6, r5, r3, lsl #3 ldrh r4, [r6, #16] cmp r4, r0 - bne .L3692 + bne .L4030 ldrh r3, [r6, #20] mov r0, r1 cmp r2, r3 @@ -22943,16 +25225,16 @@ rk_ftl_vendor_read: bl memcpy mov r0, r4 pop {r3, r4, r5, r6, r7, pc} -.L3692: +.L4030: adds r3, r3, #1 - b .L3691 -.L3694: + b .L4029 +.L4032: mov r0, #-1 pop {r3, r4, r5, r6, r7, pc} -.L3696: +.L4034: .align 2 -.L3695: - .word .LANCHOR4 +.L4033: + .word .LANCHOR6 .fnend .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 1 @@ -22967,45 +25249,45 @@ rk_ftl_vendor_write: 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, .L3719 + ldr r2, .L4057 .pad #28 sub sp, sp, #28 mov ip, r0 mov r3, r1 - ldr r4, [r2, #512] + ldr r4, [r2, #28] cmp r4, #0 - beq .L3712 + beq .L4050 add r7, r9, #63 ldrh r1, [r4, #8] ldrh r2, [r4, #10] bic r7, r7, #63 movs r6, #0 str r1, [sp, #4] -.L3699: +.L4037: cmp r6, r2 - bcs .L3717 + bcs .L4055 add r5, r4, r6, lsl #3 ldrh r1, [r5, #16] cmp r1, ip - bne .L3700 + bne .L4038 ldrh r1, [r5, #20] add fp, r4, #1024 adds r1, r1, #63 bic r1, r1, #63 str r1, [sp, #8] cmp r9, r1 - bls .L3701 + bls .L4039 ldrh r1, [r4, #14] cmp r1, r7 - bcc .L3712 + bcc .L4050 ldrh r8, [r5, #18] subs r2, r2, #1 str r2, [sp, #12] -.L3702: +.L4040: ldr r2, [sp, #12] adds r5, r5, #8 cmp r6, r2 - bcs .L3718 + bcs .L4056 ldrh r2, [r5, #16] add r0, fp, r8 ldrh r1, [r5, #18] @@ -23024,8 +25306,8 @@ rk_ftl_vendor_write: bl memcpy ldr r3, [sp, #20] ldr ip, [sp, #16] - b .L3702 -.L3718: + b .L4040 +.L4056: add r6, r4, r6, lsl #3 uxth r8, r8 add r0, fp, r8 @@ -23038,27 +25320,27 @@ rk_ftl_vendor_write: add r8, r8, r7 bl memcpy ldrh r5, [r4, #14] - ldr r3, [sp, #8] strh r8, [r4, #12] @ movhi + ldr r3, [sp, #8] add r3, r3, r5 subs r7, r3, r7 strh r7, [r4, #14] @ movhi - b .L3716 -.L3701: + b .L4054 +.L4039: ldrh r0, [r5, #18] mov r1, r3 mov r2, r9 add r0, r0, fp bl memcpy strh r9, [r5, #20] @ movhi - b .L3716 -.L3700: + b .L4054 +.L4038: adds r6, r6, #1 - b .L3699 -.L3717: + b .L4037 +.L4055: ldrh r1, [r4, #14] cmp r1, r7 - bcc .L3712 + bcc .L4050 add r2, r4, r2, lsl #3 uxth r7, r7 subs r1, r1, r7 @@ -23078,7 +25360,7 @@ rk_ftl_vendor_write: ldrh r3, [r4, #10] adds r3, r3, #1 strh r3, [r4, #10] @ movhi -.L3716: +.L4054: ldr r3, [r4, #4] movw r2, #65532 movs r1, #128 @@ -23097,17 +25379,17 @@ rk_ftl_vendor_write: lsls r0, r3, #7 bl FlashBootVendorWrite movs r0, #0 - b .L3698 -.L3712: + b .L4036 +.L4050: mov r0, #-1 -.L3698: +.L4036: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L3720: +.L4058: .align 2 -.L3719: - .word .LANCHOR4 +.L4057: + .word .LANCHOR6 .fnend .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 1 @@ -23127,34 +25409,34 @@ rk_ftl_vendor_storage_ioctl: bl ftl_malloc mov r4, r0 cmp r0, #0 - beq .L3730 - ldr r3, .L3737 + beq .L4068 + ldr r3, .L4075 cmp r6, r3 - beq .L3724 + beq .L4062 adds r3, r3, #1 cmp r6, r3 - beq .L3725 - b .L3736 -.L3724: + beq .L4063 + b .L4074 +.L4062: mov r1, r5 movs r2, #8 bl rk_copy_from_user cmp r0, #0 - bne .L3736 + bne .L4074 ldr r2, [r4] - ldr r3, .L3737+4 + ldr r3, .L4075+4 cmp r2, r3 - beq .L3727 -.L3728: + beq .L4065 +.L4066: mov r5, #-1 - b .L3723 -.L3727: + b .L4061 +.L4065: ldrh r0, [r4, #4] add r1, r4, #8 ldrh r2, [r4, #6] bl rk_ftl_vendor_read adds r3, r0, #1 - beq .L3728 + beq .L4066 uxth r2, r0 strh r0, [r4, #6] @ movhi mov r1, r4 @@ -23165,45 +25447,45 @@ rk_ftl_vendor_storage_ioctl: ite eq moveq r5, #0 mvnne r5, #13 - b .L3723 -.L3725: + b .L4061 +.L4063: mov r1, r5 movs r2, #8 bl rk_copy_from_user - cbnz r0, .L3736 + cbnz r0, .L4074 ldr r2, [r4] - ldr r3, .L3737+4 + ldr r3, .L4075+4 cmp r2, r3 - bne .L3728 + bne .L4066 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L3728 + bhi .L4066 mov r0, r4 mov r1, r5 adds r2, r2, #8 bl rk_copy_from_user - cbnz r0, .L3736 + cbnz r0, .L4074 ldrh r0, [r4, #4] add r1, r4, #8 ldrh r2, [r4, #6] bl rk_ftl_vendor_write mov r5, r0 - b .L3723 -.L3736: + b .L4061 +.L4074: mvn r5, #13 -.L3723: +.L4061: mov r0, r4 bl kfree - b .L3722 -.L3730: + b .L4060 +.L4068: mov r5, #-1 -.L3722: +.L4060: mov r0, r5 pop {r4, r5, r6, pc} -.L3738: +.L4076: .align 2 -.L3737: +.L4075: .word 1074034177 .word 1448232273 .fnend @@ -23222,6 +25504,7 @@ rk_ftl_vendor_storage_ioctl: .global RK29_NANDC1_REG_BASE .global RK29_NANDC_REG_BASE .global gc_ink_free_return_value + .global check_valid_page_count_table .global FtlUpdateVaildLpnCount .global g_ect_tbl_power_up_flush .global last_cache_match_count @@ -23277,6 +25560,8 @@ rk_ftl_vendor_storage_ioctl: .global g_gc_bad_block_temp_tbl .global g_gc_bad_block_gc_index .global g_gc_bad_block_temp_num + .global g_gc_next_blk_3 + .global g_gc_next_blk_2 .global g_gc_next_blk_1 .global g_gc_next_blk .global g_gc_cur_blk_max_valid_pages @@ -23386,7 +25671,6 @@ rk_ftl_vendor_storage_ioctl: .global c_ftl_nand_ext_blk_pre_plane .global c_ftl_nand_blk_pre_plane .global c_ftl_nand_planes_num - .global c_ftl_nand_blks_per_die_shift .global c_ftl_nand_blks_per_die .global c_ftl_nand_planes_per_die .global c_ftl_nand_die_num @@ -23403,6 +25687,7 @@ rk_ftl_vendor_storage_ioctl: .global gNandcVer .global gNandChipMap .global gNandIDataBuf + .global idb_flash_slc_mode .global FlashDdrTunningReadCount .global FlashWaitBusyScheduleEn .global gNandPhyInfo @@ -23415,6 +25700,7 @@ rk_ftl_vendor_storage_ioctl: .global gReadRetryInfo .global gpNandParaInfo .global gNandOptPara + .global g_nand_ecc_en .global g_slc2KBNand .global g_maxRetryCount .global g_maxRegNum @@ -23450,9 +25736,9 @@ rk_ftl_vendor_storage_ioctl: .section .rodata .align 2 .LANCHOR3 = . + 0 - .type __func__.17344, %object - .size __func__.17344, 11 -__func__.17344: + .type __func__.20216, %object + .size __func__.20216, 11 +__func__.20216: .ascii "FtlMemInit\000" .LC0: .byte 60 @@ -23460,14 +25746,32 @@ __func__.17344: .byte 24 .byte 16 .space 1 - .type __func__.18293, %object - .size __func__.18293, 21 -__func__.18293: + .type __func__.20991, %object + .size __func__.20991, 17 +__func__.20991: + .ascii "FtlDumpBlockInfo\000" + .space 3 + .type __func__.21010, %object + .size __func__.21010, 16 +__func__.21010: + .ascii "FtlScanAllBlock\000" + .type __func__.21276, %object + .size __func__.21276, 17 +__func__.21276: + .ascii "ftl_scan_all_ppa\000" + .space 3 + .type __func__.20959, %object + .size __func__.20959, 12 +__func__.20959: + .ascii "FtlCheckVpc\000" + .type __func__.21258, %object + .size __func__.21258, 21 +__func__.21258: .ascii "FtlVpcCheckAndModify\000" .space 3 - .type __func__.17417, %object - .size __func__.17417, 8 -__func__.17417: + .type __func__.20289, %object + .size __func__.20289, 8 +__func__.20289: .ascii "FtlInit\000" .section .rodata.str1.1,"aMS",%progbits,1 .LC1: @@ -23476,373 +25780,422 @@ __func__.17417: .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" .ascii "\000" .LC3: - .ascii "remove_from_free_sys_Queue %x\012\000" -.LC4: .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" -.LC5: +.LC4: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" .ascii "\000" -.LC6: +.LC5: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC7: +.LC6: .ascii "FLASH INFO:\012\000" -.LC8: +.LC7: .ascii "FLASH ID: %x\012\000" -.LC9: +.LC8: .ascii "Device Capacity: %d MB\012\000" -.LC10: +.LC9: .ascii "FMWAIT: %x %x %x %x\012\000" -.LC11: +.LC10: .ascii "FTL INFO:\012\000" -.LC12: +.LC11: .ascii "g_MaxLpn = 0x%x\012\000" -.LC13: +.LC12: .ascii "g_VaildLpn = 0x%x\012\000" -.LC14: +.LC13: .ascii "read_page_count = 0x%x\012\000" -.LC15: +.LC14: .ascii "discard_page_count = 0x%x\012\000" -.LC16: +.LC15: .ascii "write_page_count = 0x%x\012\000" -.LC17: +.LC16: .ascii "cache_write_count = 0x%x\012\000" -.LC18: +.LC17: .ascii "l2p_write_count = 0x%x\012\000" -.LC19: +.LC18: .ascii "gc_page_count = 0x%x\012\000" -.LC20: +.LC19: .ascii "totle_write = %d MB\012\000" -.LC21: +.LC20: .ascii "totle_read = %d MB\012\000" -.LC22: +.LC21: .ascii "GSV = 0x%x\012\000" -.LC23: +.LC22: .ascii "GDV = 0x%x\012\000" -.LC24: +.LC23: .ascii "bad blk num = %d %d\012\000" -.LC25: +.LC24: .ascii "free_superblocks = 0x%x\012\000" -.LC26: +.LC25: .ascii "mlc_EC = 0x%x\012\000" -.LC27: +.LC26: .ascii "slc_EC = 0x%x\012\000" -.LC28: +.LC27: .ascii "avg_EC = 0x%x\012\000" -.LC29: +.LC28: .ascii "sys_EC = 0x%x\012\000" -.LC30: +.LC29: .ascii "max_EC = 0x%x\012\000" -.LC31: +.LC30: .ascii "min_EC = 0x%x\012\000" -.LC32: +.LC31: .ascii "PLT = 0x%x\012\000" -.LC33: +.LC32: .ascii "POT = 0x%x\012\000" -.LC34: +.LC33: .ascii "MaxSector = 0x%x\012\000" -.LC35: +.LC34: .ascii "init_sys_blks_pp = 0x%x\012\000" -.LC36: +.LC35: .ascii "sys_blks_pp = 0x%x\012\000" -.LC37: +.LC36: .ascii "free sysblock = 0x%x\012\000" -.LC38: +.LC37: .ascii "data_blks_pp = 0x%x\012\000" -.LC39: +.LC38: .ascii "data_op_blks_pp = 0x%x\012\000" -.LC40: +.LC39: .ascii "max_data_blks = 0x%x\012\000" -.LC41: +.LC40: .ascii "Sys.id = 0x%x\012\000" -.LC42: +.LC41: .ascii "Bbt.id = 0x%x\012\000" -.LC43: +.LC42: .ascii "ACT.page = 0x%x\012\000" -.LC44: +.LC43: .ascii "ACT.plane = 0x%x\012\000" -.LC45: +.LC44: .ascii "ACT.id = 0x%x\012\000" -.LC46: +.LC45: .ascii "ACT.mode = 0x%x\012\000" -.LC47: +.LC46: .ascii "ACT.a_pages = 0x%x\012\000" -.LC48: +.LC47: .ascii "ACT VPC = 0x%x\012\000" -.LC49: +.LC48: .ascii "BUF.page = 0x%x\012\000" -.LC50: +.LC49: .ascii "BUF.plane = 0x%x\012\000" -.LC51: +.LC50: .ascii "BUF.id = 0x%x\012\000" -.LC52: +.LC51: .ascii "BUF.mode = 0x%x\012\000" -.LC53: +.LC52: .ascii "BUF.a_pages = 0x%x\012\000" -.LC54: +.LC53: .ascii "BUF VPC = 0x%x\012\000" -.LC55: +.LC54: .ascii "TMP.page = 0x%x\012\000" -.LC56: +.LC55: .ascii "TMP.plane = 0x%x\012\000" -.LC57: +.LC56: .ascii "TMP.id = 0x%x\012\000" -.LC58: +.LC57: .ascii "TMP.mode = 0x%x\012\000" -.LC59: +.LC58: .ascii "TMP.a_pages = 0x%x\012\000" -.LC60: +.LC59: .ascii "GC.page = 0x%x\012\000" -.LC61: +.LC60: .ascii "GC.plane = 0x%x\012\000" -.LC62: +.LC61: .ascii "GC.id = 0x%x\012\000" -.LC63: +.LC62: .ascii "GC.mode = 0x%x\012\000" -.LC64: +.LC63: .ascii "GC.a_pages = 0x%x\012\000" -.LC65: +.LC64: .ascii "WR_CHK = 0x%x %x %x %x\012\000" +.LC65: + .ascii "Read Err = 0x%x\012\000" .LC66: - .ascii "Read Err Cnt = 0x%x\012\000" + .ascii "Prog Err = 0x%x\012\000" .LC67: - .ascii "Prog Err Cnt = 0x%x\012\000" -.LC68: .ascii "gc_free_blk_th= 0x%x\012\000" -.LC69: +.LC68: .ascii "gc_merge_free_blk_th= 0x%x\012\000" -.LC70: +.LC69: .ascii "gc_skip_write_count= 0x%x\012\000" -.LC71: +.LC70: .ascii "gc_blk_index= 0x%x\012\000" -.LC72: +.LC71: .ascii "free min EC= 0x%x\012\000" -.LC73: +.LC72: .ascii "free max EC= 0x%x\012\000" -.LC74: +.LC73: .ascii "GC__SB VPC = 0x%x\012\000" -.LC75: +.LC74: .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" -.LC76: +.LC75: .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" -.LC77: +.LC76: .ascii "%s\012\000" +.LC77: + .ascii "FTL version: 5.0.56 20190508\000" .LC78: - .ascii "FTL version: 5.0.48 20180528\000" -.LC79: .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" .ascii "\012\000" -.LC80: +.LC79: .ascii "FtlGcRefreshBlock 0x%x\012\000" -.LC81: +.LC80: .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" -.LC82: +.LC81: .ascii "%s error allocating memory. return -1\012\000" -.LC83: +.LC82: .ascii "%s %p:0x%x:\000" -.LC84: +.LC83: .ascii "%x \000" -.LC85: +.LC84: .ascii "\000" -.LC86: +.LC85: .ascii "otp error! %d\000" -.LC87: +.LC86: .ascii "rr\000" -.LC88: +.LC87: .ascii "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012" .ascii "\000" -.LC89: +.LC88: .ascii "nandc:\000" -.LC90: +.LC89: .ascii "%d flReg.d32=%x %x\012\000" -.LC91: +.LC90: .ascii "sdr read ok %x ecc=%d\012\000" -.LC92: +.LC91: .ascii "sync para %d\012\000" -.LC93: +.LC92: .ascii "TOG mode Read error %x %x\012\000" -.LC94: +.LC93: .ascii "read retry status %x %x %x\012\000" -.LC95: +.LC94: .ascii "micron RR %d row=%x,count %d,status=%d\012\000" -.LC96: +.LC95: .ascii "ECC:%d\012\000" -.LC97: +.LC96: .ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000" -.LC98: +.LC97: .ascii "FlashLoadPhyInfo fail %x!!\012\000" -.LC99: +.LC98: .ascii "Read pageadd=%x ecc=%x err=%x\012\000" -.LC100: +.LC99: .ascii "data:\000" -.LC101: +.LC100: .ascii "spare:\000" -.LC102: +.LC101: .ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000" -.LC103: +.LC102: .ascii "FLFB:%d %d\012\000" -.LC104: +.LC103: .ascii "prog error: = %x\012\000" -.LC105: +.LC104: .ascii "prog read error: = %x\012\000" -.LC106: +.LC105: .ascii "prog read s error: = %x %x %x\012\000" -.LC107: +.LC106: .ascii "prog read d error: = %x %x %x\012\000" -.LC108: - .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" -.LC109: - .ascii "FlashMakeFactorBbt %d\012\000" -.LC110: - .ascii "bad block:%d %d\012\000" -.LC111: - .ascii "FMFB:%d %d\012\000" -.LC112: - .ascii "E:bad block:%d\012\000" -.LC113: - .ascii "FMFB:Save %d %d\012\000" -.LC114: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" -.LC115: - .ascii "FtlBbmTblFlush error:%x\012\000" -.LC116: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" -.LC117: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" -.LC118: - .ascii "decrement_vpc_count %x = %d\012\000" -.LC119: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" -.LC120: - .ascii "ftl_map_blk_gc blk info: %x %x %x\012\000" -.LC121: - .ascii "page map lost: %x %x\012\000" -.LC122: - .ascii "FtlMapWritePage error = %x\012\000" -.LC123: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" -.LC124: - .ascii "page map lost %x %x %x %x\012\000" -.LC125: - .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" -.LC126: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" -.LC127: - .ascii "no ect\000" -.LC128: - .ascii "slc mode\000" -.LC129: - .ascii "RSB refresh addr %x\012\000" -.LC130: - .ascii "spuer block %x vpn is 0\012 \000" -.LC131: - .ascii "g_recovery_ppa %x ver %x\012 \000" -.LC132: +.LC107: .ascii "...%s enter...\012\000" +.LC108: + .ascii "superBlkID = %x vpc=%x\012\000" +.LC109: + .ascii "flashmode = %x pagenum = %x %x\012\000" +.LC110: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC111: + .ascii "blk = %x vpc=%x mode = %x\012\000" +.LC112: + .ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" +.LC113: + .ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x " + .ascii "%x\012\000" +.LC114: + .ascii "ftl_scan_all_ppa blk %x page %x\012\000" +.LC115: + .ascii "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC116: + .ascii "%s finished\012\000" +.LC117: + .ascii "FlashMakeFactorBbt %d\012\000" +.LC118: + .ascii "bad block:%d %d\012\000" +.LC119: + .ascii "FMFB:%d %d\012\000" +.LC120: + .ascii "E:bad block:%d\012\000" +.LC121: + .ascii "FMFB:Save %d %d\012\000" +.LC122: + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" +.LC123: + .ascii "FtlBbmTblFlush error:%x\012\000" +.LC124: + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" +.LC125: + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" +.LC126: + .ascii "decrement_vpc_count %x = %d\012\000" +.LC127: + .ascii "decrement_vpc_count %x = %d in free list\012\000" +.LC128: + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" +.LC129: + .ascii "page map lost: %x %x\012\000" +.LC130: + .ascii "FtlMapWritePage error = %x\012\000" +.LC131: + .ascii "FtlMapWritePage error = %x error count = %d\012\000" +.LC132: + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" .LC133: - .ascii "FtlCheckVpc %x = %x %x\012\000" + .ascii "no ect\000" .LC134: - .ascii "%d GC datablk = %x vpc %x %x\012\000" + .ascii "slc mode\000" .LC135: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" + .ascii "BBT:\000" .LC136: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" + .ascii "region_id = %x phyAddr = %x\012\000" .LC137: - .ascii "rk_ftl_de_init %x\012\000" + .ascii "map_ppn:\000" .LC138: - .ascii "GC des block %x done\012\000" + .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" .LC139: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" +.LC140: + .ascii "free blk vpc error %x = %x %x\012\000" +.LC141: + .ascii "Ftlscanalldata = %x\012\000" +.LC142: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC143: + .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC144: + .ascii "RSB refresh addr %x\012\000" +.LC145: + .ascii "spuer block %x vpn is 0\012 \000" +.LC146: + .ascii "g_recovery_ppa %x ver %x\012 \000" +.LC147: + .ascii "FtlCheckVpc %x = %x %x\012\000" +.LC148: + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" +.LC149: + .ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000" +.LC150: + .ascii "GC des block %x done\012\000" +.LC151: + .ascii "%d GC datablk = %x vpc %x %x\012\000" +.LC152: + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" +.LC153: + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" +.LC154: + .ascii "rk_ftl_de_init %x\012\000" +.LC155: .ascii "...%s: no bad block mapping table, format device\012" .ascii "\000" -.LC140: +.LC156: .ascii "...%s FtlSysBlkInit error ,format device!\012\000" -.LC141: +.LC157: .ascii "FtlInit %x\012\000" -.LC142: +.LC158: .ascii "fix power lost blk = %x vpc=%x\012\000" -.LC143: +.LC159: .ascii "erase power lost blk = %x vpc=%x\012\000" -.LC144: +.LC160: .ascii "FtlWrite: lpa error:%x %x\012\000" -.LC145: - .ascii "BBT:\000" -.LC146: +.LC161: + .ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012" + .ascii "\000" +.LC162: + .ascii ":\000" +.LC163: + .ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" + .ascii "\000" +.LC164: + .ascii "Mblk:\000" +.LC165: + .ascii "L2P:\000" +.LC166: + .ascii "L2PC:\000" +.LC167: .ascii "IdBlockReadData %x %x\012\000" -.LC147: +.LC168: .ascii "IdBlockReadData %x %x ret= %x\012\000" -.LC148: +.LC169: .ascii "write_idblock fix data %x %x\012\000" -.LC149: +.LC170: .ascii "idblk:\000" -.LC150: +.LC171: .ascii "idb reverse %x %x\012\000" -.LC151: +.LC172: .ascii "write_idblock totle_sec %x %x %x %x\012\000" -.LC152: +.LC173: .ascii "IDBlockWriteData %x %x\012\000" -.LC153: +.LC174: .ascii "IDBlockWriteData %x %x ret= %x\012\000" -.LC154: +.LC175: .ascii "write and check error:%d idb=%x,offset=%x,r=%x,w=%x" .ascii "\012\000" -.LC155: - .ascii "write\000" -.LC156: - .ascii "read\000" -.LC157: - .ascii "write_idblock error %d\012\000" -.LC158: - .ascii "READ_SECTOR_IO\012\000" -.LC159: - .ascii "rk_copy_from_user error\012\000" -.LC160: - .ascii "READ_SECTOR_IO %x %x\012\000" -.LC161: - .ascii "rk_copy_to_user error\012\000" -.LC162: - .ascii "WRITE_SECTOR_IO\012\000" -.LC163: - .ascii "WRITE_SECTOR_IO %x %x\012\000" -.LC164: - .ascii "END_WRITE_SECTOR_IO\012\000" -.LC165: - .ascii "END_WRITE_SECTOR_IO %x %x\012\000" -.LC166: - .ascii "GET_FLASH_INFO_IO\012\000" -.LC167: - .ascii "GET_BAD_BLOCK_IO\012\000" -.LC168: - .ascii "bbt:\000" -.LC169: - .ascii "GET_LOCK_FLAG_IO\012\000" -.LC170: - .ascii "GET_PUBLIC_KEY_IO\012\000" -.LC171: - .ascii "RKNAND_GET_DRM_KEY\012\000" -.LC172: - .ascii "RKNAND_STORE_DRM_KEY\012\000" -.LC173: - .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" -.LC174: - .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" -.LC175: - .ascii "RKNAND_GET_SN_SECTOR\012\000" .LC176: - .ascii "RKNAND_LOADER_UNLOCK\012\000" + .ascii "write\000" .LC177: - .ascii "RKNAND_LOADER_STATUS\012\000" + .ascii "read\000" .LC178: - .ascii "RKNAND_LOADER_LOCK\012\000" + .ascii "write_idblock error %d\012\000" .LC179: - .ascii "LockKey not match %d\012\000" + .ascii "wl_lba %p %x %x %x\012\000" .LC180: - .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" + .ascii "READ_SECTOR_IO\012\000" .LC181: - .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" + .ascii "rk_copy_from_user error\012\000" .LC182: - .ascii "return ret = %lx\012\000" + .ascii "READ_SECTOR_IO %x %x\012\000" .LC183: - .ascii "secureBootEn check error\012\000" + .ascii "rk_copy_to_user error\012\000" .LC184: + .ascii "WRITE_SECTOR_IO\012\000" +.LC185: + .ascii "WRITE_SECTOR_IO %x %x\012\000" +.LC186: + .ascii "END_WRITE_SECTOR_IO\012\000" +.LC187: + .ascii "END_WRITE_SECTOR_IO %x %x\012\000" +.LC188: + .ascii "GET_FLASH_INFO_IO\012\000" +.LC189: + .ascii "GET_BAD_BLOCK_IO\012\000" +.LC190: + .ascii "GET_LOCK_FLAG_IO\012\000" +.LC191: + .ascii "GET_PUBLIC_KEY_IO\012\000" +.LC192: + .ascii "RKNAND_GET_DRM_KEY\012\000" +.LC193: + .ascii "RKNAND_STORE_DRM_KEY\012\000" +.LC194: + .ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000" +.LC195: + .ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000" +.LC196: + .ascii "RKNAND_GET_SN_SECTOR\012\000" +.LC197: + .ascii "RKNAND_LOADER_UNLOCK\012\000" +.LC198: + .ascii "RKNAND_LOADER_STATUS\012\000" +.LC199: + .ascii "RKNAND_LOADER_LOCK\012\000" +.LC200: + .ascii "LockKey not match %d\012\000" +.LC201: + .ascii "RKNAND_GET_VENDOR_SECTOR\012\000" +.LC202: + .ascii "RKNAND_STORE_VENDOR_SECTOR\012\000" +.LC203: + .ascii "return ret = %lx\012\000" +.LC204: + .ascii "secureBootEn check error\012\000" +.LC205: .ascii "\0013vendor storage %x,%x,%x\012\000" .data .align 2 @@ -23978,31 +26331,6 @@ random_seed: .short 28406 .short 17598 .short 28087 - .type gNandParaInfo, %object - .size gNandParaInfo, 32 -gNandParaInfo: - .byte 0 - .byte 0 - .space 5 - .byte 0 - .byte 1 - .byte 8 - .short 128 - .byte 2 - .byte 1 - .short 2048 - .short 0 - .byte 1 - .byte 0 - .byte 24 - .byte 32 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 0 - .byte 0 - .space 4 .type ToshibaA19RefValue, %object .size ToshibaA19RefValue, 45 ToshibaA19RefValue: @@ -24229,12 +26557,37 @@ SamsungRefValue: .byte 12 .byte 2 .byte 0 + .type gNandParaInfo, %object + .size gNandParaInfo, 32 +gNandParaInfo: + .byte 0 + .byte 0 + .space 5 + .byte 0 + .byte 1 + .byte 8 + .short 128 + .byte 2 + .byte 1 + .short 2048 + .short 0 + .byte 1 + .byte 0 + .byte 24 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .space 4 .type gFtlInitStatus, %object .size gFtlInitStatus, 4 gFtlInitStatus: .word -1 .type NandFlashParaTbl, %object - .size NandFlashParaTbl, 2368 + .size NandFlashParaTbl, 2592 NandFlashParaTbl: .byte 6 .byte 44 @@ -24808,6 +27161,136 @@ NandFlashParaTbl: .byte 0 .byte 0 .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 50 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 52 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte -60 + .byte 52 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 52 + .byte -92 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 2184 + .short 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .space 4 + .byte 5 + .byte 44 + .byte -124 + .byte 100 + .byte 60 + .byte -87 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 2 + .short 1024 + .short 479 + .byte 3 + .byte 17 + .byte 40 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .space 4 .byte 6 .byte -83 .byte -34 @@ -25147,6 +27630,32 @@ NandFlashParaTbl: .byte 0 .space 4 .byte 6 + .byte -83 + .byte 58 + .byte 20 + .byte 3 + .byte 8 + .byte 80 + .byte 2 + .byte 1 + .byte 32 + .short 388 + .byte 2 + .byte 2 + .short 1362 + .short 473 + .byte 9 + .byte 8 + .byte 40 + .byte 32 + .byte 3 + .byte 1 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .space 4 + .byte 6 .byte -119 .byte 100 .byte 68 @@ -25328,6 +27837,32 @@ NandFlashParaTbl: .byte 0 .byte 0 .space 4 + .byte 5 + .byte -119 + .byte 100 + .byte 100 + .byte 60 + .byte -95 + .byte 0 + .byte 7 + .byte 1 + .byte 32 + .short 512 + .byte 2 + .byte 1 + .short 1024 + .short 455 + .byte 4 + .byte 17 + .byte 40 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .space 4 .byte 6 .byte -104 .byte -41 @@ -26572,6 +29107,8 @@ gTable_Crc32: .LANCHOR0 = . + 0 .LANCHOR2 = . + 4344 .LANCHOR4 = . + 8688 +.LANCHOR5 = . + 13032 +.LANCHOR6 = . + 17376 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -26598,53 +29135,6 @@ gNandChipMap: .size gNandOptPara, 32 gNandOptPara: .space 32 - .type gFlashSlcMode, %object - .size gFlashSlcMode, 1 -gFlashSlcMode: - .space 1 - .space 3 - .type slcPageToMlcPageTbl, %object - .size slcPageToMlcPageTbl, 512 -slcPageToMlcPageTbl: - .space 512 - .type mlcPageToSlcPageTbl, %object - .size mlcPageToSlcPageTbl, 1024 -mlcPageToSlcPageTbl: - .space 1024 - .type gNandMaxDie, %object - .size gNandMaxDie, 1 -gNandMaxDie: - .space 1 - .type gNandMaxChip, %object - .size gNandMaxChip, 1 -gNandMaxChip: - .space 1 - .space 2 - .type DieCsIndex, %object - .size DieCsIndex, 8 -DieCsIndex: - .space 8 - .type DieAddrs, %object - .size DieAddrs, 32 -DieAddrs: - .space 32 - .type gDieOp, %object - .size gDieOp, 128 -gDieOp: - .space 128 - .type gpNandParaInfo, %object - .size gpNandParaInfo, 4 -gpNandParaInfo: - .space 4 - .type IDByte, %object - .size IDByte, 32 -IDByte: - .space 32 - .type gTotleBlock, %object - .size gTotleBlock, 2 -gTotleBlock: - .space 2 - .space 2 .type gpNandc, %object .size gpNandc, 4 gpNandc: @@ -26685,18 +29175,26 @@ NANDC_FMWAIT_SYN: .size gNandPhyInfo, 28 gNandPhyInfo: .space 28 - .type gNandFlashEccBits, %object - .size gNandFlashEccBits, 1 -gNandFlashEccBits: + .type gFlashSlcMode, %object + .size gFlashSlcMode, 1 +gFlashSlcMode: .space 1 .space 3 - .type g_MaxLbaSector, %object - .size g_MaxLbaSector, 4 -g_MaxLbaSector: - .space 4 + .type slcPageToMlcPageTbl, %object + .size slcPageToMlcPageTbl, 512 +slcPageToMlcPageTbl: + .space 512 + .type DieAddrs, %object + .size DieAddrs, 32 +DieAddrs: + .space 32 .type FlashWaitBusyScheduleEn, %object .size FlashWaitBusyScheduleEn, 4 FlashWaitBusyScheduleEn: + .space 4 + .type gpNandParaInfo, %object + .size gpNandParaInfo, 4 +gpNandParaInfo: .space 4 .type g_retryMode, %object .size g_retryMode, 1 @@ -26715,14 +29213,30 @@ gReadRetryInfo: .size read_retry_cur_offset, 4 read_retry_cur_offset: .space 4 + .type IDByte, %object + .size IDByte, 32 +IDByte: + .space 32 + .type gDieOp, %object + .size gDieOp, 128 +gDieOp: + .space 128 .type gFlashInterfaceMode, %object .size gFlashInterfaceMode, 1 gFlashInterfaceMode: .space 1 - .space 3 - .type g_nandc_version_data, %object - .size g_nandc_version_data, 4 -g_nandc_version_data: + .type gNandMaxDie, %object + .size gNandMaxDie, 1 +gNandMaxDie: + .space 1 + .space 2 + .type DieCsIndex, %object + .size DieCsIndex, 8 +DieCsIndex: + .space 8 + .type idb_flash_slc_mode, %object + .size idb_flash_slc_mode, 4 +idb_flash_slc_mode: .space 4 .type gFlashToggleModeEn, %object .size gFlashToggleModeEn, 1 @@ -26736,6 +29250,10 @@ gBootDdrMode: .type gNandcVer, %object .size gNandcVer, 4 gNandcVer: + .space 4 + .type g_nandc_version_data, %object + .size g_nandc_version_data, 4 +g_nandc_version_data: .space 4 .type gMasterTempBuf, %object .size gMasterTempBuf, 4 @@ -26753,11 +29271,15 @@ gNandcDumpWriteEn: .size gNandcEccBits, 4 gNandcEccBits: .space 4 + .type gNandFlashEccBits, %object + .size gNandFlashEccBits, 1 +gNandFlashEccBits: + .space 1 .type gMultiPageProgEn, %object .size gMultiPageProgEn, 1 gMultiPageProgEn: .space 1 - .space 3 + .space 2 .type g_inkDie_check_enable, %object .size g_inkDie_check_enable, 4 g_inkDie_check_enable: @@ -26823,10 +29345,6 @@ c_ftl_vendor_part_size: .type c_ftl_nand_blks_per_die, %object .size c_ftl_nand_blks_per_die, 2 c_ftl_nand_blks_per_die: - .space 2 - .type c_ftl_nand_blks_per_die_shift, %object - .size c_ftl_nand_blks_per_die_shift, 2 -c_ftl_nand_blks_per_die_shift: .space 2 .type c_ftl_nand_page_pre_blk, %object .size c_ftl_nand_page_pre_blk, 2 @@ -26859,7 +29377,6 @@ c_ftl_nand_byte_pre_oob: .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 @@ -26894,6 +29411,10 @@ c_ftl_nand_map_region_num: .size c_ftl_nand_l2pmap_ram_region_num, 2 c_ftl_nand_l2pmap_ram_region_num: .space 2 + .type g_MaxLbaSector, %object + .size g_MaxLbaSector, 4 +g_MaxLbaSector: + .space 4 .type g_page_map_check_enable, %object .size g_page_map_check_enable, 2 g_page_map_check_enable: @@ -27074,9 +29595,9 @@ c_ftl_nand_data_op_blks_per_plane: .space 2 .space 2 .type gSysInfo, %object - .size gSysInfo, 12 + .size gSysInfo, 16 gSysInfo: - .space 12 + .space 16 .type g_gc_superblock, %object .size g_gc_superblock, 48 g_gc_superblock: @@ -27158,6 +29679,14 @@ g_gc_next_blk: .type g_gc_next_blk_1, %object .size g_gc_next_blk_1, 2 g_gc_next_blk_1: + .space 2 + .type g_gc_next_blk_2, %object + .size g_gc_next_blk_2, 2 +g_gc_next_blk_2: + .space 2 + .type g_gc_next_blk_3, %object + .size g_gc_next_blk_3, 2 +g_gc_next_blk_3: .space 2 .type g_gc_bad_block_temp_num, %object .size g_gc_bad_block_temp_num, 2 @@ -27170,6 +29699,19 @@ g_gc_bad_block_temp_tbl: .type g_gc_bad_block_gc_index, %object .size g_gc_bad_block_gc_index, 2 g_gc_bad_block_gc_index: + .space 2 + .type mlcPageToSlcPageTbl, %object + .size mlcPageToSlcPageTbl, 1024 +mlcPageToSlcPageTbl: + .space 1024 + .type gNandMaxChip, %object + .size gNandMaxChip, 1 +gNandMaxChip: + .space 1 + .space 1 + .type gTotleBlock, %object + .size gTotleBlock, 2 +gTotleBlock: .space 2 .type g_free_slc_blk_num, %object .size g_free_slc_blk_num, 2 @@ -27402,11 +29944,15 @@ gFlashProgCheckBuffer: .size gFlashProgCheckSpareBuffer, 4 gFlashProgCheckSpareBuffer: .space 4 + .type g_nand_ecc_en, %object + .size g_nand_ecc_en, 1 +g_nand_ecc_en: + .space 1 .type gMultiPageReadEn, %object .size gMultiPageReadEn, 1 gMultiPageReadEn: .space 1 - .space 3 + .space 2 .type FbbtBlk, %object .size FbbtBlk, 16 FbbtBlk: @@ -27427,6 +29973,11 @@ gVendorBlkInfo: .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: @@ -27434,7 +29985,6 @@ g_power_lost_ecc_error_blk: .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 @@ -27484,6 +30034,19 @@ g_ftl_nand_free_count: .type last_cache_match_count, %object .size last_cache_match_count, 4 last_cache_match_count: + .space 4 + .type idb_write_enable, %object + .size idb_write_enable, 1 +idb_write_enable: + .space 1 + .space 3 + .type idb_buf, %object + .size idb_buf, 4 +idb_buf: + .space 4 + .type idb_last_lba, %object + .size idb_last_lba, 4 +idb_last_lba: .space 4 .type g_idb_buffer, %object .size g_idb_buffer, 4 diff --git a/drivers/rk_nand/rk_ftl_arm_v8.S b/drivers/rk_nand/rk_ftl_arm_v8.S index 37fe71ab2a53..d25a6530a2d0 100644 --- a/drivers/rk_nand/rk_ftl_arm_v8.S +++ b/drivers/rk_nand/rk_ftl_arm_v8.S @@ -5,7 +5,7 @@ * 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: 2018-09-05 + * date: 2019-05-08 */ .cpu generic+fp+simd .file "rk_ftl_arm_v8.S" @@ -42,35 +42,71 @@ ftl_set_blk_mode.part.9: ret .size ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9 .align 2 + .type flash_read_ecc, %function +flash_read_ecc: + adrp x2, .LANCHOR0 + ubfiz x0, x0, 4, 8 + stp x29, x30, [sp, -32]! + add x2, x2, :lo12:.LANCHOR0 + add x2, x2, 8 + add x29, sp, 0 + add x1, x2, x0 + str x19, [sp,16] + ldrb w1, [x1,8] + ldr x19, [x2,x0] + mov w0, 122 + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov x0, 400 + bl __const_udelay + ldr w1, [x19,2048] + ldr w0, [x19,2048] + and w1, w1, 15 + and w0, w0, 15 + cmp w0, w1 + csel w2, w0, w1, cs + ldr w1, [x19,2048] + ldr w0, [x19,2048] + and w1, w1, 15 + ldr x19, [sp,16] + cmp w2, w1 + and w0, w0, 15 + csel w1, w2, w1, cs + cmp w1, w0 + csel w0, w1, w0, cs + ldp x29, x30, [sp], 32 + ret + .size flash_read_ecc, .-flash_read_ecc + .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: mov x5, x0 - adrp x0, .LANCHOR0+8 - ldrb w0, [x0,#:lo12:.LANCHOR0+8] - cbz w0, .L7 + adrp x0, .LANCHOR0+72 + ldrb w0, [x0,#:lo12:.LANCHOR0+72] + cbz w0, .L8 ldrb w4, [x5,1] mov w0, 0 ldrb w3, [x1,1] cmp w4, w3 - beq .L4 -.L7: + beq .L5 +.L8: mov x3, 0 -.L5: +.L6: cmp w3, w2 mov w4, w3 - bcs .L11 + bcs .L12 ldrb w0, [x5,x3] add x3, x3, 1 add x6, x1, x3 ldrb w6, [x6,-1] cmp w6, w0 - beq .L5 + beq .L6 add w0, w4, 1 - b .L4 -.L11: + b .L5 +.L12: mov w0, 0 -.L4: +.L5: ret .size FlashMemCmp8, .-FlashMemCmp8 .align 2 @@ -80,8 +116,8 @@ FlashRsvdBlkChk: adrp x2, .LANCHOR0 uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrb w3, [x2,9] - ldr w2, [x2,12] + ldrb w3, [x2,73] + ldr w2, [x2,76] mul w2, w3, w2 cmp w1, w2 cset w1, cc @@ -103,14 +139,14 @@ FlashGetRandomizer: uxtb w0, w0 str x19, [sp,16] ldrh w19, [x2,w3,uxtw 1] - adrp x2, .LANCHOR0+16 - ldrb w2, [x2,#:lo12:.LANCHOR0+16] - cbz w2, .L14 + adrp x2, .LANCHOR0+80 + ldrb w2, [x2,#:lo12:.LANCHOR0+80] + cbz w2, .L15 bl FlashRsvdBlkChk cmp w0, wzr orr w1, w19, -1073741824 csel w19, w1, w19, ne -.L14: +.L15: mov w0, w19 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -132,17 +168,17 @@ FlashSetRandomizer: adrp x2, .LANCHOR0 add x0, x2, :lo12:.LANCHOR0 mov x19, x2 - ldrb w0, [x0,16] - cbz w0, .L21 + ldrb w0, [x0,80] + cbz w0, .L22 mov w0, w21 bl FlashRsvdBlkChk cmp w0, wzr orr w1, w20, -1073741824 csel w20, w1, w20, ne -.L21: +.L22: add x2, x19, :lo12:.LANCHOR0 add x2, x2, x21, sxtw 4 - ldr x0, [x2,24] + ldr x0, [x2,8] str w20, [x0,336] ldp x19, x20, [sp,16] ldr x21, [sp,32] @@ -150,6 +186,25 @@ FlashSetRandomizer: ret .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 + .global FlashBlockAlignInit + .type FlashBlockAlignInit, %function +FlashBlockAlignInit: + uxth w0, w0 + adrp x1, .LANCHOR0 + cmp w0, 256 + add x1, x1, :lo12:.LANCHOR0 + bls .L29 + mov w0, 512 + b .L32 +.L29: + cmp w0, 128 + bls .L32 + mov w0, 256 +.L32: + str w0, [x1,76] + ret + .size FlashBlockAlignInit, .-FlashBlockAlignInit + .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: @@ -157,7 +212,7 @@ FlashReadCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 24 + add x3, x3, 8 lsr w4, w1, 16 add x2, x3, x5 stp x29, x30, [sp, -16]! @@ -187,7 +242,7 @@ FlashReadDpDataOutCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x2, x0, 4, 32 - add x4, x3, 24 + add x4, x3, 8 stp x29, x30, [sp, -16]! add x5, x4, x2 add x29, sp, 0 @@ -199,7 +254,7 @@ FlashReadDpDataOutCmd: ldrb w2, [x5,8] and w5, w1, 255 add x2, x6, x2, lsl 8 - bne .L29 + bne .L35 mov w6, 6 str w6, [x2,2056] str wzr, [x2,2052] @@ -207,8 +262,8 @@ FlashReadDpDataOutCmd: str w5, [x2,2052] str w4, [x2,2052] str w3, [x2,2052] - b .L31 -.L29: + b .L37 +.L35: str wzr, [x2,2056] str wzr, [x2,2052] str wzr, [x2,2052] @@ -219,7 +274,7 @@ FlashReadDpDataOutCmd: str w3, [x2,2056] str wzr, [x2,2052] str wzr, [x2,2052] -.L31: +.L37: mov w3, 224 str w3, [x2,2056] bl FlashSetRandomizer @@ -227,48 +282,6 @@ FlashReadDpDataOutCmd: ret .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 - .global flash_enter_slc_mode - .type flash_enter_slc_mode, %function -flash_enter_slc_mode: - adrp x1, .LANCHOR0 - uxtb w0, w0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,120] - cbz w2, .L32 - sbfiz x0, x0, 4, 32 - add x1, x1, 24 - add x2, x1, x0 - ldr x1, [x1,x0] - ldrb w0, [x2,8] - add x0, x0, 8 - add x0, x1, x0, lsl 8 - mov w1, 218 - str w1, [x0,8] -.L32: - ret - .size flash_enter_slc_mode, .-flash_enter_slc_mode - .align 2 - .global flash_exit_slc_mode - .type flash_exit_slc_mode, %function -flash_exit_slc_mode: - adrp x1, .LANCHOR0 - uxtb w0, w0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,120] - cbz w2, .L37 - sbfiz x0, x0, 4, 32 - add x1, x1, 24 - add x2, x1, x0 - ldr x1, [x1,x0] - ldrb w0, [x2,8] - add x0, x0, 8 - add x0, x1, x0, lsl 8 - mov w1, 223 - str w1, [x0,8] -.L37: - ret - .size flash_exit_slc_mode, .-flash_exit_slc_mode - .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: @@ -276,7 +289,7 @@ FlashProgFirstCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 24 + add x3, x3, 8 lsr w4, w1, 16 add x2, x3, x5 stp x29, x30, [sp, -16]! @@ -304,11 +317,11 @@ FlashEraseCmd: adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 add x3, x3, :lo12:.LANCHOR0 - add x4, x3, 24 + add x4, x3, 8 add x5, x4, x0 ldr x4, [x4,x0] ldrb w0, [x5,8] - cbz w2, .L44 + cbz w2, .L40 add x2, x4, x0, lsl 8 mov w5, 96 str w5, [x2,2056] @@ -318,9 +331,9 @@ FlashEraseCmd: str w5, [x2,2052] lsr w5, w1, 16 str w5, [x2,2052] - ldr w2, [x3,12] + ldr w2, [x3,76] add w1, w1, w2 -.L44: +.L40: add x0, x4, x0, lsl 8 mov w2, 96 str w2, [x0,2056] @@ -342,7 +355,7 @@ FlashProgDpSecondCmd: uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 sbfiz x4, x0, 4, 32 - add x5, x2, 24 + add x5, x2, 8 lsr w3, w1, 16 add x7, x5, x4 stp x29, x30, [sp, -16]! @@ -370,7 +383,7 @@ FlashProgSecondCmd: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 + add x1, x1, 8 add x2, x1, x0 ldr x1, [x1,x0] ldrb w0, [x2,8] @@ -387,7 +400,7 @@ FlashProgDpFirstCmd: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x2, x1, 24 + add x2, x1, 8 add x3, x2, x0 ldrb w1, [x1,98] ldr x2, [x2,x0] @@ -398,26 +411,50 @@ FlashProgDpFirstCmd: ret .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 - .global JSHash - .type JSHash, %function -JSHash: + .global FlashReadStatus + .type FlashReadStatus, %function +FlashReadStatus: + adrp x1, .LANCHOR0 + ubfiz x0, x0, 4, 8 + stp x29, x30, [sp, -32]! + add x1, x1, :lo12:.LANCHOR0 + add x1, x1, 8 + add x29, sp, 0 + add x2, x1, x0 + str x19, [sp,16] + ldrb w2, [x2,8] + ldr x19, [x1,x0] + mov w0, 112 + add x19, x19, x2, lsl 8 + str w0, [x19,2056] + mov x0, 400 + bl __const_udelay + ldr w0, [x19,2048] + ldr x19, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size FlashReadStatus, .-FlashReadStatus + .align 2 + .global js_hash + .type js_hash, %function +js_hash: mov x5, x0 mov w0, 42982 mov x2, 0 movk w0, 0x47c6, lsl 16 -.L52: +.L49: cmp w1, w2 - bls .L54 + bls .L51 lsl w3, w0, 5 ldrb w4, [x5,x2] add w3, w3, w0, lsr 2 add x2, x2, 1 add w3, w3, w4 eor w0, w0, w3 - b .L52 -.L54: + b .L49 +.L51: ret - .size JSHash, .-JSHash + .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo .type FlashLoadIdbInfo, %function @@ -432,6 +469,110 @@ FlashPrintInfo: ret .size FlashPrintInfo, .-FlashPrintInfo .align 2 + .global ToshibaSetRRPara + .type ToshibaSetRRPara, %function +ToshibaSetRRPara: + uxtb w1, w1 + mov w3, 5 + add w2, w1, 1 + stp x29, x30, [sp, -96]! + smull x3, w2, w3 + adrp x2, .LANCHOR1 + add x29, sp, 0 + add x2, x2, :lo12:.LANCHOR1 + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + add x23, x2, x1, sxtw + add x24, x2, 256 + add x21, x2, 304 + stp x19, x20, [sp,16] + stp x25, x26, [sp,64] + str x27, [sp,80] + mov x22, x0 + add x24, x24, x3 + add x21, x21, x3 + mov x20, 0 + adrp x26, .LANCHOR0 + mov w27, 85 + mov x19, x2 +.L55: + add x25, x26, :lo12:.LANCHOR0 + ldrb w0, [x25,121] + cmp w0, w20 + bls .L61 + add x0, x19, 256 + str w27, [x22,8] + ldrsb w0, [x20,x0] + str w0, [x22,4] + mov x0, 1000 + bl __const_udelay + ldrb w0, [x25,120] + cmp w0, 34 + bne .L56 + ldrsb w0, [x24,x20] + b .L60 +.L56: + cmp w0, 35 + bne .L58 + ldrsb w0, [x21,x20] + b .L60 +.L58: + ldrsb w0, [x23,400] +.L60: + str w0, [x22] + add x20, x20, 1 + b .L55 +.L61: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldr x27, [sp,80] + ldp x29, x30, [sp], 96 + ret + .size ToshibaSetRRPara, .-ToshibaSetRRPara + .align 2 + .global SamsungSetRRPara + .type SamsungSetRRPara, %function +SamsungSetRRPara: + stp x29, x30, [sp, -64]! + adrp x2, .LANCHOR1 + add x2, x2, :lo12:.LANCHOR1 + add x29, sp, 0 + add x1, x2, x1, uxtb 2 + stp x19, x20, [sp,16] + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + mov x21, x0 + add x22, x1, 412 + mov x20, 0 + adrp x23, .LANCHOR0 + mov w24, 161 + mov x19, x2 +.L63: + add x0, x23, :lo12:.LANCHOR0 + ldrb w0, [x0,121] + cmp w0, w20 + bls .L65 + str w24, [x21,8] + add x0, x19, 408 + str wzr, [x21] + ldrsb w0, [x20,x0] + str w0, [x21] + ldrsb w0, [x22,x20] + add x20, x20, 1 + str w0, [x21] + mov x0, 1500 + bl __const_udelay + b .L63 +.L65: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x29, x30, [sp], 64 + ret + .size SamsungSetRRPara, .-SamsungSetRRPara + .align 2 .global ftl_flash_suspend .type ftl_flash_suspend, %function ftl_flash_suspend: @@ -465,8 +606,8 @@ LogAddr2PhyAddr: add x6, x7, :lo12:.LANCHOR0 ldrh w8, [x6,182] ldrh w5, [x6,180] - ldrh w9, [x6,12] - ldrb w6, [x6,8] + ldrh w9, [x6,76] + ldrb w6, [x6,72] mul w5, w5, w8 cmp w6, 1 ubfiz w8, w9, 1, 15 @@ -479,40 +620,126 @@ LogAddr2PhyAddr: udiv w10, w6, w5 msub w5, w10, w5, w6 uxth w6, w5 - bne .L60 + bne .L69 add x1, x7, :lo12:.LANCHOR0 - ldrb w5, [x1,120] - cbnz w5, .L60 - add x1, x1, 196 + ldrb w5, [x1,196] + cbnz w5, .L69 + add x1, x1, 200 ldrh w8, [x1,w8,sxtw 1] -.L60: +.L69: add x7, x7, :lo12:.LANCHOR0 cmp w4, 1 - add x7, x7, 708 + add x7, x7, 712 mov w1, 0 ldr w5, [x7,w10,uxtw 2] madd w5, w6, w9, w5 add w5, w5, w8 str w5, [x2] str w10, [x3] - bls .L61 + bls .L70 ldr w1, [x0,4] ldr w0, [x0,60] add w1, w1, 1024 cmp w1, w0 cset w1, eq -.L61: +.L70: mov w0, w1 ret .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 2 + .global FlashReadStatusEN + .type FlashReadStatusEN, %function +FlashReadStatusEN: + stp x29, x30, [sp, -32]! + adrp x3, .LANCHOR0 + ubfiz x0, x0, 4, 8 + add x4, x3, :lo12:.LANCHOR0 + add x29, sp, 0 + add x5, x4, 8 + stp x19, x20, [sp,16] + add x6, x5, x0 + uxtb w2, w2 + ldr x20, [x5,x0] + ldr x0, [x4,744] + ldrb w19, [x6,8] + ldrb w0, [x0,8] + cmp w0, 2 + bne .L73 + add x4, x4, 88 + cbnz w2, .L74 + ldrb w2, [x4,13] + b .L82 +.L74: + ldrb w2, [x4,14] +.L82: + add x0, x19, 8 + add x3, x3, :lo12:.LANCHOR0 + add x0, x20, x0, lsl 8 + str w2, [x0,8] + mov w2, 0 + ldrb w4, [x3,103] + cbz w4, .L77 + add x3, x19, 8 + lsl x3, x3, 8 +.L81: + cmp w2, w4 + bcs .L77 + add x5, x20, x3 + lsl w0, w2, 3 + lsr w0, w1, w0 + add w2, w2, 1 + and w0, w0, 255 + str w0, [x5,4] + b .L81 +.L73: + add x0, x19, 8 + mov w1, 112 + add x0, x20, x0, lsl 8 + str w1, [x0,8] +.L77: + add x19, x19, 8 + mov x0, 400 + lsl x19, x19, 8 + bl __const_udelay + ldr w0, [x20,x19] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + uxtb w0, w0 + ret + .size FlashReadStatusEN, .-FlashReadStatusEN + .align 2 + .global FlashWaitReadyEN + .type FlashWaitReadyEN, %function +FlashWaitReadyEN: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp,16] + str x21, [sp,32] + uxtb w19, w0 + mov w20, w1 + uxtb w21, w2 +.L87: + mov w0, w19 + mov w1, w20 + mov w2, w21 + bl FlashReadStatusEN + cmp w0, 255 + mov w3, w0 + beq .L87 + tbz x3, 6, .L87 + ldp x19, x20, [sp,16] + ldr x21, [sp,32] + ldp x29, x30, [sp], 48 + ret + .size FlashWaitReadyEN, .-FlashWaitReadyEN + .align 2 .global FlashScheduleEnSet .type FlashScheduleEnSet, %function FlashScheduleEnSet: adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldr w2, [x1,740] - str w0, [x1,740] + ldr w2, [x1,752] + str w0, [x1,752] mov w0, w2 ret .size FlashScheduleEnSet, .-FlashScheduleEnSet @@ -538,7 +765,7 @@ NandcGetChipIf: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 + add x1, x1, 8 add x2, x1, x0 ldr x0, [x1,x0] ldrb w2, [x2,8] @@ -594,7 +821,7 @@ NandcSetMode: tst w0, 6 ldr x2, [x1,#:lo12:.LANCHOR0+128] ldr w1, [x2] - beq .L73 + beq .L100 and w0, w0, 4 orr w1, w1, 24576 cmp w0, wzr @@ -611,10 +838,10 @@ NandcSetMode: csel w1, w3, w1, ne mov w0, 39 str w0, [x2,308] - b .L75 -.L73: + b .L102 +.L100: and w1, w1, -8193 -.L75: +.L102: str w1, [x2] mov w0, 0 ret @@ -626,7 +853,7 @@ NandcFlashCs: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 + add x1, x1, 8 add x3, x1, x0 ldr x2, [x1,x0] mov w1, 1 @@ -644,7 +871,7 @@ NandcFlashDeCs: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 + add x1, x1, 8 ldr x1, [x1,x0] ldr w0, [x1] and w0, w0, -256 @@ -653,149 +880,6 @@ NandcFlashDeCs: ret .size NandcFlashDeCs, .-NandcFlashDeCs .align 2 - .global NandcDelayns - .type NandcDelayns, %function -NandcDelayns: - sub sp, sp, #16 - lsr w0, w0, 4 - str w0, [sp,12] -.L81: - ldr w0, [sp,12] - sub w1, w0, #1 - str w1, [sp,12] - cbnz w0, .L81 - add sp, sp, 16 - ret - .size NandcDelayns, .-NandcDelayns - .align 2 - .global FlashReadStatus - .type FlashReadStatus, %function -FlashReadStatus: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 - stp x29, x30, [sp, -32]! - add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 - add x29, sp, 0 - add x2, x1, x0 - str x19, [sp,16] - ldrb w2, [x2,8] - ldr x19, [x1,x0] - mov w0, 112 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] - mov w0, 80 - bl NandcDelayns - ldr w0, [x19,2048] - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 - ret - .size FlashReadStatus, .-FlashReadStatus - .align 2 - .global ToshibaSetRRPara - .type ToshibaSetRRPara, %function -ToshibaSetRRPara: - uxtb w1, w1 - mov w3, 5 - add w2, w1, 1 - stp x29, x30, [sp, -96]! - smull x3, w2, w3 - adrp x2, .LANCHOR1 - add x29, sp, 0 - add x2, x2, :lo12:.LANCHOR1 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - add x23, x2, x1, sxtw - add x24, x2, 256 - add x21, x2, 304 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - str x27, [sp,80] - mov x22, x0 - add x24, x24, x3 - add x21, x21, x3 - mov x20, 0 - adrp x26, .LANCHOR0 - mov w27, 85 - mov x19, x2 -.L85: - add x25, x26, :lo12:.LANCHOR0 - ldrb w0, [x25,753] - cmp w0, w20 - bls .L91 - add x0, x19, 256 - str w27, [x22,8] - ldrsb w0, [x20,x0] - str w0, [x22,4] - mov w0, 200 - bl NandcDelayns - ldrb w0, [x25,752] - cmp w0, 34 - bne .L86 - ldrsb w0, [x24,x20] - b .L90 -.L86: - cmp w0, 35 - bne .L88 - ldrsb w0, [x21,x20] - b .L90 -.L88: - ldrsb w0, [x23,400] -.L90: - str w0, [x22] - add x20, x20, 1 - b .L85 -.L91: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldr x27, [sp,80] - ldp x29, x30, [sp], 96 - ret - .size ToshibaSetRRPara, .-ToshibaSetRRPara - .align 2 - .global SamsungSetRRPara - .type SamsungSetRRPara, %function -SamsungSetRRPara: - stp x29, x30, [sp, -64]! - adrp x2, .LANCHOR1 - add x2, x2, :lo12:.LANCHOR1 - add x29, sp, 0 - add x1, x2, x1, uxtb 2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov x21, x0 - add x22, x1, 412 - mov x20, 0 - adrp x23, .LANCHOR0 - mov w24, 161 - mov x19, x2 -.L93: - add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,753] - cmp w0, w20 - bls .L95 - str w24, [x21,8] - add x0, x19, 408 - str wzr, [x21] - ldrsb w0, [x20,x0] - str w0, [x21] - ldrsb w0, [x22,x20] - add x20, x20, 1 - str w0, [x21] - mov w0, 300 - bl NandcDelayns - b .L93 -.L95: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 - ret - .size SamsungSetRRPara, .-SamsungSetRRPara - .align 2 .global HynixSetRRPara .type HynixSetRRPara, %function HynixSetRRPara: @@ -806,72 +890,77 @@ HynixSetRRPara: str x27, [sp,80] add x19, x20, :lo12:.LANCHOR0 uxtb w27, w1 - stp x21, x22, [sp,32] stp x25, x26, [sp,64] + stp x21, x22, [sp,32] stp x23, x24, [sp,48] - uxtb x25, w0 - mov x22, x2 + uxtb x24, w0 + mov x21, x2 ldr x0, [x19,744] - mov x26, x25 - uxtb w21, w3 - add x19, x19, 760 + mov x26, x24 + uxtb w25, w3 ldrb w0, [x0,19] cmp w0, 6 - bne .L97 - add x19, x19, x25, lsl 6 - lsl w4, w21, 2 - add x19, x19, 20 - b .L102 -.L97: + bne .L108 + add x19, x19, x24, lsl 6 + lsl w4, w25, 2 + add x19, x19, 780 + b .L114 +.L108: cmp w0, 7 - bne .L99 + bne .L110 mov x2, 160 mov w4, 10 - madd x19, x25, x2, x19 - mul w4, w21, w4 - add x19, x19, 28 -.L102: + madd x19, x24, x2, x19 + mul w4, w25, w4 + add x19, x19, 788 +.L114: add x19, x19, x4, sxtw - b .L98 -.L99: - lsl x4, x25, 3 - add x4, x4, x21, sxtw + b .L109 +.L110: + cmp w0, 8 + bne .L111 + add x19, x19, 788 + add w4, w25, w25, lsl 2 + b .L114 +.L111: + lsl x4, x24, 3 + add x4, x4, x25, sxtw add x19, x19, x4, lsl 3 - add x19, x19, 20 -.L98: + add x19, x19, 780 +.L109: add x2, x20, :lo12:.LANCHOR0 - lsl x0, x25, 4 - add x2, x2, 24 + lsl x0, x24, 4 + add x2, x2, 8 uxtb x27, w27 add x1, x2, x0 - ldr x23, [x2,x0] + ldr x22, [x2,x0] mov w0, w26 - ldrb w24, [x1,8] + ldrb w23, [x1,8] bl NandcFlashCs - ubfiz x24, x24, 8, 8 + ubfiz x23, x23, 8, 8 mov w0, 54 - add x23, x23, x24 - mov x24, 0 - str w0, [x23,2056] -.L100: - cmp x24, x27 - beq .L103 - ldrb w0, [x22,x24] - str w0, [x23,2052] - mov w0, 200 - bl NandcDelayns - ldrsb w0, [x19,x24] - add x24, x24, 1 - str w0, [x23,2048] - b .L100 -.L103: + add x22, x22, x23 + mov x23, 0 + str w0, [x22,2056] +.L112: + cmp x23, x27 + beq .L115 + ldrb w0, [x21,x23] + str w0, [x22,2052] + mov x0, 1000 + bl __const_udelay + ldrsb w0, [x19,x23] + add x23, x23, 1 + str w0, [x22,2048] + b .L112 +.L115: add x20, x20, :lo12:.LANCHOR0 mov w0, 22 - add x25, x20, x25 - str w0, [x23,2056] + add x24, x20, x24 + str w0, [x22,2056] mov w0, w26 bl NandcFlashDeCs - strb w21, [x25,1616] + strb w25, [x24,1616] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -895,117 +984,31 @@ FlashSetReadRetryDefault: ldrb w0, [x0,19] sub w0, w0, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L104 + cmp w0, 7 + bhi .L116 add x21, x19, 1620 add x22, x19, 764 -.L109: +.L121: lsl x1, x20, 3 uxtb w0, w20 ldrb w1, [x1,x21] cmp w1, 173 - bne .L106 + bne .L118 ldrb w1, [x19,761] mov x2, x22 mov w3, 0 bl HynixSetRRPara -.L106: +.L118: add x20, x20, 1 cmp x20, 4 - bne .L109 -.L104: + bne .L121 +.L116: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 2 - .global FlashReadStatusEN - .type FlashReadStatusEN, %function -FlashReadStatusEN: - stp x29, x30, [sp, -32]! - adrp x3, .LANCHOR0 - ubfiz x0, x0, 4, 8 - add x4, x3, :lo12:.LANCHOR0 - add x29, sp, 0 - add x5, x4, 24 - stp x19, x20, [sp,16] - add x6, x5, x0 - uxtb w2, w2 - ldr x20, [x5,x0] - ldr x0, [x4,744] - ldrb w19, [x6,8] - ldrb w0, [x0,8] - cmp w0, 2 - bne .L112 - add x4, x4, 88 - cbnz w2, .L113 - ldrb w2, [x4,13] - b .L121 -.L113: - ldrb w2, [x4,14] -.L121: - add x0, x19, 8 - add x3, x3, :lo12:.LANCHOR0 - add x0, x20, x0, lsl 8 - str w2, [x0,8] - mov w2, 0 - ldrb w4, [x3,103] - cbz w4, .L116 - add x3, x19, 8 - lsl x3, x3, 8 -.L120: - cmp w2, w4 - bcs .L116 - add x5, x20, x3 - lsl w0, w2, 3 - lsr w0, w1, w0 - add w2, w2, 1 - and w0, w0, 255 - str w0, [x5,4] - b .L120 -.L112: - add x0, x19, 8 - mov w1, 112 - add x0, x20, x0, lsl 8 - str w1, [x0,8] -.L116: - add x19, x19, 8 - mov w0, 80 - lsl x19, x19, 8 - bl NandcDelayns - ldr w0, [x20,x19] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - uxtb w0, w0 - ret - .size FlashReadStatusEN, .-FlashReadStatusEN - .align 2 - .global FlashWaitReadyEN - .type FlashWaitReadyEN, %function -FlashWaitReadyEN: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w0 - mov w20, w1 - uxtb w21, w2 -.L126: - mov w0, w19 - mov w1, w20 - mov w2, w21 - bl FlashReadStatusEN - cmp w0, 255 - mov w3, w0 - beq .L126 - tbz x3, 6, .L126 - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 - ret - .size FlashWaitReadyEN, .-FlashWaitReadyEN - .align 2 .global FlashWaitCmdDone .type FlashWaitCmdDone, %function FlashWaitCmdDone: @@ -1023,9 +1026,9 @@ FlashWaitCmdDone: add x19, x0, x1 ldrb w21, [x0,x1] ldr x0, [x19,8] - cbz x0, .L131 + cbz x0, .L125 mov w0, w21 - add x20, x20, 708 + add x20, x20, 712 bl NandcFlashCs ldr w0, [x20,w22,sxtw 2] ldr w1, [x19,4] @@ -1041,10 +1044,10 @@ FlashWaitCmdDone: str w0, [x1] str xzr, [x19,8] ldr x1, [x19,16] - cbz x1, .L131 + cbz x1, .L125 str w0, [x1] str xzr, [x19,16] -.L131: +.L125: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -1052,6 +1055,50 @@ FlashWaitCmdDone: ret .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 + .global NandcDelayns + .type NandcDelayns, %function +NandcDelayns: + stp x29, x30, [sp, -16]! + uxtw x0, w0 + add x29, sp, 0 + bl __ndelay + mov w0, 0 + ldp x29, x30, [sp], 16 + ret + .size NandcDelayns, .-NandcDelayns + .align 2 + .global NandcWaitFlashReadyNoDelay + .type NandcWaitFlashReadyNoDelay, %function +NandcWaitFlashReadyNoDelay: + stp x29, x30, [sp, -48]! + adrp x1, .LANCHOR0 + ubfiz x0, x0, 4, 8 + add x1, x1, :lo12:.LANCHOR0 + add x29, sp, 0 + add x1, x1, 8 + stp x19, x20, [sp,16] + mov w19, 34464 + ldr x20, [x1,x0] + movk w19, 0x1, lsl 16 +.L133: + ldr w0, [x20] + str w0, [x29,40] + ldr w0, [x29,40] + tbnz x0, 9, .L134 + mov x0, 50 + bl __const_udelay + subs w19, w19, #1 + bne .L133 + mov w0, -1 + b .L132 +.L134: + mov w0, 0 +.L132: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 + ret + .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay + .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function NandcWaitFlashReady: @@ -1060,18 +1107,20 @@ NandcWaitFlashReady: ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 24 + add x1, x1, 8 stp x19, x20, [sp,16] mov w19, 34464 ldr x20, [x1,x0] movk w19, 0x1, lsl 16 + mov x0, 750 + bl __const_udelay .L138: - mov w0, 100 - bl NandcDelayns ldr w0, [x20] str w0, [x29,40] ldr w0, [x29,40] tbnz x0, 9, .L139 + mov x0, 50 + bl __const_udelay subs w19, w19, #1 bne .L138 mov w0, -1 @@ -1093,7 +1142,7 @@ FlashReset: stp x19, x20, [sp,16] add x1, x1, :lo12:.LANCHOR0 uxtb w20, w0 - add x1, x1, 24 + add x1, x1, 8 sbfiz x0, x20, 4, 32 add x2, x1, x0 str x21, [sp,32] @@ -1115,6 +1164,95 @@ FlashReset: ret .size FlashReset, .-FlashReset .align 2 + .global flash_enter_slc_mode + .type flash_enter_slc_mode, %function +flash_enter_slc_mode: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + uxtb w20, w0 + add x19, x19, :lo12:.LANCHOR0 + ldrb w0, [x19,196] + cbz w0, .L142 + mov w0, w20 + add x19, x19, 8 + bl NandcFlashCs + sbfiz x0, x20, 4, 32 + add x1, x19, x0 + ldr x19, [x19,x0] + mov w0, 239 + ldrb w1, [x1,8] + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov w0, 145 + str w0, [x19,2052] + mov x0, 500 + bl __const_udelay + str wzr, [x19,2048] + mov w0, 1 + str w0, [x19,2048] + str wzr, [x19,2048] + mov x0, 500 + str wzr, [x19,2048] + bl __const_udelay + mov w0, w20 + bl NandcWaitFlashReadyNoDelay + mov w0, 218 + str w0, [x19,2056] + mov w0, w20 + bl NandcWaitFlashReady +.L142: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size flash_enter_slc_mode, .-flash_enter_slc_mode + .align 2 + .global flash_exit_slc_mode + .type flash_exit_slc_mode, %function +flash_exit_slc_mode: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + uxtb w20, w0 + add x19, x19, :lo12:.LANCHOR0 + ldrb w0, [x19,196] + cbz w0, .L147 + mov w0, w20 + add x19, x19, 8 + bl NandcFlashCs + sbfiz x0, x20, 4, 32 + add x1, x19, x0 + ldr x19, [x19,x0] + mov w0, 239 + ldrb w1, [x1,8] + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov w0, 145 + str w0, [x19,2052] + mov x0, 500 + bl __const_udelay + mov w0, 2 + str w0, [x19,2048] + mov w0, 1 + str w0, [x19,2048] + str wzr, [x19,2048] + mov x0, 500 + str wzr, [x19,2048] + bl __const_udelay + mov w0, w20 + bl NandcWaitFlashReadyNoDelay + mov w0, 223 + str w0, [x19,2056] + mov w0, w20 + bl NandcWaitFlashReady +.L147: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size flash_exit_slc_mode, .-flash_exit_slc_mode + .align 2 .global FlashEraseBlock .type FlashEraseBlock, %function FlashEraseBlock: @@ -1154,7 +1292,7 @@ FlashSetInterfaceMode: add x1, x1, :lo12:.LANCHOR0 mov w8, 239 stp x29, x30, [sp, -16]! - add x7, x1, 24 + add x7, x1, 8 add x4, x1, 1620 add x29, sp, 0 ldrb w2, [x1,1844] @@ -1166,68 +1304,68 @@ FlashSetInterfaceMode: mov w13, 32 mov w14, 5 uxtb w5, w2 -.L154: +.L164: ldrb w3, [x6,x4] ldr x1, [x7] cmp w3, 152 ldrb w2, [x7,8] - beq .L144 + beq .L154 cmp w3, 69 - beq .L144 + beq .L154 cmp w3, 173 - beq .L144 + beq .L154 cmp w3, 44 - bne .L145 -.L144: + bne .L155 +.L154: cmp w0, 1 - bne .L147 - cbz w11, .L145 + bne .L157 + cbz w11, .L155 ubfiz x2, x2, 8, 8 cmp w3, 173 add x1, x1, x2 str w8, [x1,2056] - bne .L148 + bne .L158 str w0, [x1,2052] - b .L165 -.L148: + b .L175 +.L158: cmp w3, 44 - bne .L150 + bne .L160 str w0, [x1,2052] str w14, [x1,2048] - b .L152 -.L150: + b .L162 +.L160: str w9, [x1,2052] str w0, [x1,2048] - b .L152 -.L147: - cbz w5, .L145 + b .L162 +.L157: + cbz w5, .L155 ubfiz x2, x2, 8, 8 cmp w3, 173 add x1, x1, x2 str w8, [x1,2056] - bne .L151 + bne .L161 str w10, [x1,2052] str w13, [x1,2048] - b .L152 -.L151: + b .L162 +.L161: cmp w3, 44 - bne .L153 + bne .L163 str w10, [x1,2052] str w12, [x1,2048] - b .L152 -.L153: + b .L162 +.L163: str w9, [x1,2052] -.L165: +.L175: str wzr, [x1,2048] -.L152: +.L162: str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] -.L145: +.L155: add x6, x6, 8 add x7, x7, 16 cmp x6, 32 - bne .L154 + bne .L164 mov w0, 0 bl NandcWaitFlashReady mov w0, 0 @@ -1243,7 +1381,7 @@ FlashReadSpare: stp x29, x30, [sp, -48]! uxtb w0, w0 add x5, x5, :lo12:.LANCHOR0 - add x5, x5, 24 + add x5, x5, 8 sbfiz x6, x0, 4, 32 add x29, sp, 0 ldrb w4, [x3,#:lo12:.LANCHOR1+481] @@ -1283,7 +1421,7 @@ SandiskProgTestBadBlock: stp x29, x30, [sp, -32]! add x3, x3, :lo12:.LANCHOR0 sbfiz x4, x0, 4, 32 - add x3, x3, 24 + add x3, x3, 8 add x29, sp, 0 add x2, x3, x4 str x19, [sp,16] @@ -1307,8 +1445,8 @@ SandiskProgTestBadBlock: bl NandcWaitFlashReady mov w0, 112 str w0, [x19,2056] - mov w0, 80 - bl NandcDelayns + mov x0, 400 + bl __const_udelay ldr w0, [x19,2048] ldr x19, [sp,16] and w0, w0, 1 @@ -1329,8 +1467,8 @@ SandiskSetRRPara: str w0, [x20,8] mov w0, 17 str w0, [x20,4] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay mov w1, 5 adrp x2, .LANCHOR1 add x2, x2, :lo12:.LANCHOR1 @@ -1341,23 +1479,23 @@ SandiskSetRRPara: add x0, x0, x1 add x1, x2, x1 mov x2, 0 -.L169: +.L179: add x3, x5, :lo12:.LANCHOR0 - ldrb w4, [x3,753] + ldrb w4, [x3,121] cmp w4, w2 - bls .L174 - ldrb w3, [x3,752] + bls .L184 + ldrb w3, [x3,120] cmp w3, 67 - bne .L170 + bne .L180 ldrsb w3, [x0,x2] - b .L173 -.L170: + b .L183 +.L180: ldrsb w3, [x1,x2] -.L173: +.L183: str w3, [x20] add x2, x2, 1 - b .L169 -.L174: + b .L179 +.L184: mov w0, 0 bl NandcWaitFlashReady ldp x19, x20, [sp,16] @@ -1378,7 +1516,7 @@ micron_auto_read_calibration_config: bl NandcWaitFlashReady adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 - add x3, x3, 24 + add x3, x3, 8 add x0, x3, x19 ldr x19, [x3,x19] ldrb w2, [x0,8] @@ -1387,8 +1525,8 @@ micron_auto_read_calibration_config: str w0, [x19,2056] mov w0, 150 str w0, [x19,2052] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay ldr x1, [x29,40] str w1, [x19,2048] str wzr, [x19,2048] @@ -1416,9 +1554,9 @@ FlashEraseSLc2KBlocks: mov w22, 0 add x25, x21, 1652 add x23, x23, :lo12:.LC0 -.L177: +.L187: cmp w22, w24 - beq .L186 + beq .L196 add x2, x29, 88 sub w4, w24, w22 mov x0, x20 @@ -1428,11 +1566,11 @@ FlashEraseSLc2KBlocks: ldr w2, [x29,92] ldrb w0, [x21,1845] cmp w2, w0 - bcc .L178 + bcc .L188 mov w0, -1 str w0, [x20] - b .L179 -.L178: + b .L189 +.L188: uxtw x2, w2 add x0, x21, x2 ldrb w19, [x0,1848] @@ -1456,7 +1594,7 @@ FlashEraseSLc2KBlocks: str w0, [x20] mov w0, w19 ldr w1, [x29,88] - ldr w2, [x21,12] + ldr w2, [x21,76] add w1, w2, w1 mov w2, 0 bl FlashEraseCmd @@ -1465,24 +1603,24 @@ FlashEraseSLc2KBlocks: ldr w1, [x29,88] mov w0, w19 bl FlashReadStatus - tbz x0, 0, .L180 + tbz x0, 0, .L190 mov w0, -1 str w0, [x20] -.L180: +.L190: ldr w0, [x20] cmn w0, #1 - bne .L181 + bne .L191 ldr w1, [x29,88] mov x0, x23 bl printk -.L181: +.L191: mov w0, w19 bl NandcFlashDeCs -.L179: +.L189: add w22, w22, 1 add x20, x20, 56 - b .L177 -.L186: + b .L187 +.L196: mov w0, 0 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -1501,7 +1639,7 @@ FlashReadDpCmd: stp x21, x22, [sp,32] add x3, x3, :lo12:.LANCHOR0 uxtb w21, w0 - add x4, x3, 24 + add x4, x3, 8 sbfiz x0, x21, 4, 32 add x3, x3, 88 str x23, [sp,48] @@ -1517,7 +1655,7 @@ FlashReadDpCmd: cmp w0, 1 and w5, w1, 255 lsr w0, w1, 16 - bne .L188 + bne .L198 add x19, x6, x19, lsl 8 ldrb w2, [x3,8] str x1, [x29,72] @@ -1540,8 +1678,8 @@ FlashReadDpCmd: str w20, [x19,2052] str w0, [x19,2056] ldr x1, [x29,72] - b .L189 -.L188: + b .L199 +.L198: add x19, x6, x19, lsl 8 ldrb w2, [x3,8] str w2, [x19,2056] @@ -1555,7 +1693,7 @@ FlashReadDpCmd: str w22, [x19,2052] str w20, [x19,2052] str w0, [x19,2056] -.L189: +.L199: mov w0, w21 bl FlashSetRandomizer ldr x23, [sp,48] @@ -1576,27 +1714,27 @@ ftl_flash_de_init: adrp x19, .LANCHOR0 bl FlashSetReadRetryDefault add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0,1856] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L191 + ldr w0, [x0,1856] + cbz w0, .L201 mov w0, 0 bl flash_enter_slc_mode -.L191: + b .L202 +.L201: + bl flash_exit_slc_mode +.L202: add x20, x19, :lo12:.LANCHOR0 ldrb w0, [x20,1860] - cbz w0, .L192 + cbz w0, .L203 ldrb w0, [x20,1844] - tbz x0, 0, .L192 + tbz x0, 0, .L203 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x20,1860] -.L192: +.L203: add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19,24] + ldr x0, [x19,8] str wzr, [x0,336] mov w0, 0 ldp x19, x20, [sp,16] @@ -1610,7 +1748,7 @@ NandcRandmzSel: adrp x2, .LANCHOR0 ubfiz x0, x0, 4, 8 add x2, x2, :lo12:.LANCHOR0 - add x2, x2, 24 + add x2, x2, 8 ldr x0, [x2,x0] str w1, [x0,336] ret @@ -1631,37 +1769,37 @@ NandcTimeCfg: add x1, x1, :lo12:.LANCHOR0 sdiv w0, w0, w2 cmp w0, 250 - ble .L201 + ble .L212 ldr x0, [x1,128] mov w1, 8354 - b .L208 -.L201: + b .L219 +.L212: cmp w0, 220 - ble .L203 + ble .L214 ldr x0, [x1,128] - b .L209 -.L203: + b .L220 +.L214: cmp w0, 185 - ble .L204 + ble .L215 ldr x0, [x1,128] mov w1, 4226 - b .L208 -.L204: + b .L219 +.L215: cmp w0, 160 ldr x0, [x1,128] - ble .L205 + ble .L216 mov w1, 4194 - b .L208 -.L205: + b .L219 +.L216: cmp w19, 35 mov w1, 4193 - bls .L208 + bls .L219 cmp w19, 99 mov w1, 4225 - bls .L208 -.L209: + bls .L219 +.L220: mov w1, 8322 -.L208: +.L219: str w1, [x0,4] ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -1677,15 +1815,15 @@ FlashTimingCfg: and w1, w1, -33 cmp w1, 1 add x29, sp, 0 - bls .L211 + bls .L222 mov w1, 8322 cmp w0, w1 - bne .L212 -.L211: + bne .L223 +.L222: adrp x1, .LANCHOR0+128 ldr x1, [x1,#:lo12:.LANCHOR0+128] str w0, [x1,4] -.L212: +.L223: adrp x0, .LANCHOR1+493 ldrb w0, [x0,#:lo12:.LANCHOR1+493] bl NandcTimeCfg @@ -1702,16 +1840,16 @@ NandcInit: str x19, [sp,16] adrp x19, .LANCHOR0 add x1, x19, :lo12:.LANCHOR0 - str w3, [x1,48] + str w3, [x1,32] mov w3, 2 - str wzr, [x1,32] - str w3, [x1,64] + str wzr, [x1,16] + str w3, [x1,48] mov w3, 3 + str x0, [x1,8] + str w3, [x1,64] str x0, [x1,24] - str w3, [x1,80] str x0, [x1,40] str x0, [x1,56] - str x0, [x1,72] str x0, [x1,128] ldr w2, [x0] ubfx x3, x2, 13, 1 @@ -1722,12 +1860,12 @@ NandcInit: ubfx x3, x3, 16, 4 str w3, [x1,1868] ldr w3, [x0,352] - str w3, [x1,1856] + str w3, [x1,1872] cmp w3, 2049 - bne .L214 + bne .L225 mov w3, 8 str w3, [x1,1868] -.L214: +.L225: add x19, x19, :lo12:.LANCHOR0 str w2, [x0] ldr x0, [x19,128] @@ -1742,12 +1880,12 @@ NandcInit: str w1, [x0,304] mov w0, 36864 bl ftl_malloc - str wzr, [x19,1920] - str x0, [x19,1872] - str x0, [x19,1880] - add x0, x0, 32768 str wzr, [x19,1928] + str x0, [x19,1880] str x0, [x19,1888] + add x0, x0, 32768 + str wzr, [x19,1936] + str x0, [x19,1896] ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -1785,24 +1923,24 @@ NandcBchSel: mov w3, 1 cmp w0, 16 ldr x2, [x1,128] - str w0, [x1,1932] + str w0, [x1,1940] mov w1, 4096 str w3, [x2,8] - bne .L217 -.L220: + bne .L228 +.L231: and w1, w1, -17 - b .L218 -.L217: + b .L229 +.L228: cmp w0, 24 - bne .L219 + bne .L230 orr w1, w1, 16 - b .L218 -.L219: + b .L229 +.L230: cmp w0, 40 orr w1, w1, 262144 orr w1, w1, 16 - beq .L220 -.L218: + beq .L231 +.L229: orr w1, w1, 1 str w1, [x2,12] ret @@ -1812,10 +1950,10 @@ NandcBchSel: .type FlashBchSel, %function FlashBchSel: stp x29, x30, [sp, -16]! - adrp x1, .LANCHOR0+1936 + adrp x1, .LANCHOR0+1944 uxtb w0, w0 add x29, sp, 0 - strb w0, [x1,#:lo12:.LANCHOR0+1936] + strb w0, [x1,#:lo12:.LANCHOR0+1944] bl NandcBchSel ldp x29, x30, [sp], 16 ret @@ -1828,60 +1966,61 @@ ftl_flash_resume: add x29, sp, 0 stp x19, x20, [sp,16] adrp x20, .LANCHOR0 - add x1, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - add x19, x1, 1620 + str x21, [sp,32] + add x0, x20, :lo12:.LANCHOR0 mov x21, 0 - ldr x0, [x1,128] - ldr w2, [x1,136] - ldr w22, [x1,152] - str w2, [x0] - ldr w2, [x1,140] - ldr x0, [x1,128] - str w2, [x0,4] - ldr w0, [x1,144] - ldr x2, [x1,128] - str w0, [x2,8] - ldr w0, [x1,148] - str w0, [x2,12] - str w22, [x2,304] - ldr w0, [x1,156] - str w0, [x2,308] - ldr w0, [x1,160] - str w0, [x2,336] - ldr w0, [x1,164] - str w0, [x2,344] -.L227: + add x19, x0, 1620 + ldr x1, [x0,128] + ldr w2, [x0,136] + str w2, [x1] + ldr w2, [x0,140] + ldr x1, [x0,128] + str w2, [x1,4] + ldr w2, [x0,144] + ldr x1, [x0,128] + str w2, [x1,8] + ldr w2, [x0,148] + str w2, [x1,12] + ldr w2, [x0,152] + str w2, [x1,304] + ldr w2, [x0,156] + str w2, [x1,308] + ldr w2, [x0,160] + str w2, [x1,336] + ldr w2, [x0,164] + str w2, [x1,344] +.L238: lsl x0, x21, 3 - ldrb w1, [x0,x19] - sub w1, w1, #1 - uxtb w1, w1 - cmp w1, 253 - bhi .L226 + ldrb w0, [x0,x19] + sub w0, w0, #1 + uxtb w0, w0 + cmp w0, 253 + bhi .L237 mov w0, w21 bl FlashReset -.L226: +.L237: add x21, x21, 1 cmp x21, 4 - bne .L227 + bne .L238 add x19, x20, :lo12:.LANCHOR0 ldrb w0, [x19,1860] - cbz w0, .L228 + cbz w0, .L239 mov w0, 1 bl NandcSetMode ldrb w0, [x19,1844] bl FlashSetInterfaceMode ldrb w0, [x19,1844] bl NandcSetMode - lsr w0, w22, 8 + ldr w0, [x19,152] + lsr w0, w0, 8 bl NandcSetDdrPara -.L228: +.L239: add x20, x20, :lo12:.LANCHOR0 ldr x0, [x20,744] ldrb w0, [x0,20] bl FlashBchSel + ldr x21, [sp,32] ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size ftl_flash_resume, .-ftl_flash_resume @@ -1920,18 +2059,18 @@ NandcIqrWaitFlashReady: orr w0, w0, 2 str w0, [x19,364] ldr w0, [x19] - tbnz x0, 9, .L236 + tbnz x0, 9, .L247 mov x0, x19 bl wait_for_nand_flash_ready - b .L235 -.L236: + b .L246 +.L247: ldr w0, [x19,368] orr w0, w0, 2 str w0, [x19,368] ldr w0, [x19,364] and w0, w0, -3 str w0, [x19,364] -.L235: +.L246: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -1951,21 +2090,21 @@ FlashEraseBlocks: stp x23, x24, [sp,48] mov w23, w2 mov x24, x0 - ldrb w2, [x19,8] + ldrb w2, [x19,72] mov w20, 0 stp x21, x22, [sp,32] stp x25, x26, [sp,64] - cbz w2, .L239 + cbz w2, .L250 mov w1, w23 bl FlashEraseSLc2KBlocks - b .L240 -.L239: + b .L251 +.L250: mov w28, 56 add x25, x19, 1652 mov x26, 24 -.L270: +.L281: cmp w20, w23 - bcs .L271 + bcs .L282 umull x5, w20, w28 mov w1, 0 sub w4, w23, w20 @@ -1980,32 +2119,32 @@ FlashEraseBlocks: ldr w0, [x29,124] ldr x5, [x29,96] cmp w0, w1 - bcc .L241 + bcc .L252 mov w0, -1 str w0, [x24,x5] - b .L242 -.L241: - ldrb w1, [x19,1937] + b .L253 +.L252: + ldrb w1, [x19,1945] cmp w1, wzr uxtw x1, w0 csel w22, w22, wzr, ne madd x1, x1, x26, x25 ldr x1, [x1,8] - cbz x1, .L244 + cbz x1, .L255 bl FlashWaitCmdDone -.L244: +.L255: ldr w0, [x29,124] ldr w1, [x29,120] madd x2, x0, x26, x25 str x21, [x2,8] str xzr, [x2,16] str w1, [x2,4] - cbz w22, .L245 + cbz w22, .L256 add w1, w20, 1 umull x1, w1, w28 add x1, x24, x1 str x1, [x2,16] -.L245: +.L256: add x1, x19, x0 mul x0, x0, x26 ldrb w21, [x1,1848] @@ -2013,18 +2152,18 @@ FlashEraseBlocks: mov w0, w21 bl NandcFlashCs cmp w27, 1 - bne .L246 - ldrb w0, [x19,120] - cbz w0, .L246 + bne .L257 + ldrb w0, [x19,196] + cbz w0, .L257 mov w0, w21 bl flash_enter_slc_mode - b .L247 -.L246: + b .L258 +.L257: mov w0, w21 bl flash_exit_slc_mode -.L247: +.L258: ldr w1, [x29,124] - add x0, x19, 708 + add x0, x19, 712 add w20, w20, w22 ldr w0, [x0,x1,lsl 2] ldr w1, [x29,120] @@ -2038,10 +2177,10 @@ FlashEraseBlocks: bl FlashEraseCmd mov w0, w21 bl NandcFlashDeCs -.L242: +.L253: add w20, w20, 1 - b .L270 -.L271: + b .L281 +.L282: ldr x0, [x29,104] mov x20, 0 mov x22, 24 @@ -2049,42 +2188,42 @@ FlashEraseBlocks: add x21, x19, 1652 ldr x0, [x19,128] bl NandcIqrWaitFlashReady -.L249: +.L260: ldrb w0, [x19,1845] cmp w0, w20 - bls .L272 + bls .L283 mov w0, w20 bl FlashWaitCmdDone cmp w27, 1 - bne .L250 - ldrb w0, [x19,120] - cbz w0, .L250 + bne .L261 + ldrb w0, [x19,196] + cbz w0, .L261 mul x0, x20, x22 ldrb w0, [x0,x21] bl flash_exit_slc_mode -.L250: +.L261: add x20, x20, 1 - b .L249 -.L272: - ldr w0, [x19,1940] - cbnz w0, .L252 -.L254: + b .L260 +.L283: + ldr w0, [x19,1948] + cbnz w0, .L263 +.L265: mov w0, 0 - b .L240 -.L252: + b .L251 +.L263: ldrb w0, [x19,1620] cmp w0, 69 - bne .L254 + bne .L265 mov x0, 0 mov x1, 56 -.L253: +.L264: cmp w23, w0 - bls .L254 + bls .L265 mul x2, x0, x1 add x0, x0, 1 str wzr, [x24,x2] - b .L253 -.L240: + b .L264 +.L251: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -2134,11 +2273,11 @@ NandcSendDumpDataStart: .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: sub sp, sp, #16 -.L276: +.L287: ldr w1, [x0,8] str w1, [sp,8] ldr w1, [sp,8] - tbz x1, 20, .L276 + tbz x1, 20, .L287 add sp, sp, 16 ret .size NandcSendDumpDataDone, .-NandcSendDumpDataDone @@ -2157,7 +2296,7 @@ NandcXferStart: add x1, x19, :lo12:.LANCHOR0 stp x23, x24, [sp,48] uxtb w23, w2 - add x2, x1, 24 + add x2, x1, 8 stp x21, x22, [sp,32] mov x22, x4 add x4, x2, x0 @@ -2177,7 +2316,7 @@ NandcXferStart: cmp w0, 3 orr w20, w20, 1024 bfi w20, w3, 4, 1 - bls .L280 + bls .L291 ldr w0, [x21,16] cmp x5, xzr str w0, [x29,88] @@ -2185,11 +2324,11 @@ NandcXferStart: ldr w0, [x29,88] and w0, w0, -5 str w0, [x29,88] - cbnz w7, .L294 - cbz x22, .L281 -.L294: - cbnz w25, .L283 -.L291: + cbnz w7, .L305 + cbz x22, .L292 +.L305: + cbnz w25, .L294 +.L302: mov x0, x21 add w23, w23, 1 asr w23, w23, 1 @@ -2202,62 +2341,62 @@ NandcXferStart: orr w0, w0, 1 str w0, [x21,364] mov x0, x22 - cbnz x22, .L285 + cbnz x22, .L296 add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1880] - b .L285 -.L283: + ldr x0, [x0,1888] + b .L296 +.L294: add x1, x19, :lo12:.LANCHOR0 mov w4, 128 mov w2, 0 lsr w8, w23, 1 mov w3, w2 mov w9, -1 - ldr w0, [x1,1932] + ldr w0, [x1,1940] cmp w0, 25 mov w0, 64 csel w4, w0, w4, cc -.L287: +.L298: cmp w3, w8 - bcs .L291 + bcs .L302 lsr w0, w2, 2 ubfiz x0, x0, 2, 30 - cbz w7, .L288 + cbz w7, .L299 ldrh w6, [x5,2] - ldr x10, [x1,1888] + ldr x10, [x1,1896] ldrh w11, [x5],4 orr w6, w11, w6, lsl 16 str w6, [x10,x0] - b .L289 -.L288: - ldr x6, [x1,1888] + b .L300 +.L299: + ldr x6, [x1,1896] str w9, [x6,x0] -.L289: +.L300: add w3, w3, 1 add w2, w2, w4 - b .L287 -.L285: + b .L298 +.L296: add x19, x19, :lo12:.LANCHOR0 ubfx x23, x20, 22, 5 mov w2, w25 and x22, x22, 3 - ldr x1, [x19,1888] - str x1, [x19,1904] + ldr x1, [x19,1896] + str x1, [x19,1912] lsl w1, w23, 10 - str x0, [x19,1896] + str x0, [x19,1904] bl rknand_dma_map_single - str w0, [x19,1912] - ldr x0, [x19,1904] + str w0, [x19,1920] + ldr x0, [x19,1912] lsl w1, w23, 7 mov w2, w25 bl rknand_dma_map_single - str w0, [x19,1916] + str w0, [x19,1924] mov w0, 1 - str w0, [x19,1920] - ldr w0, [x19,1912] + str w0, [x19,1928] + ldr w0, [x19,1920] mov w1, 16 str w0, [x21,20] - ldr w0, [x19,1916] + ldr w0, [x19,1924] str w0, [x21,24] str wzr, [x29,88] ldr w0, [x29,88] @@ -2266,12 +2405,12 @@ NandcXferStart: ldr w0, [x29,88] orr w0, w0, 448 str w0, [x29,88] - cbnz x22, .L292 + cbnz x22, .L303 ldr w0, [x29,88] mov w1, 2 bfi w0, w1, 3, 3 str w0, [x29,88] -.L292: +.L303: ldr w0, [x29,88] cmp w25, wzr cset w1, eq @@ -2283,10 +2422,10 @@ NandcXferStart: ldr w0, [x29,88] orr w0, w0, 1 str w0, [x29,88] -.L281: +.L292: ldr w0, [x29,88] str w0, [x21,16] -.L280: +.L291: str w24, [x21,12] str w20, [x21,8] orr w20, w20, 4 @@ -2304,14 +2443,14 @@ NandcXferStart: Ftl_log2: mov w2, 1 mov w1, 0 -.L299: +.L310: cmp w2, w0 - bhi .L301 + bhi .L312 add w1, w1, 1 lsl w2, w2, 1 uxth w1, w1 - b .L299 -.L301: + b .L310 +.L312: sub w0, w1, #1 ret .size Ftl_log2, .-Ftl_log2 @@ -2331,17 +2470,17 @@ FtlSysBlkNumInit: csel w0, w0, w1, hi adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrh w2, [x1,1948] - ldrh w3, [x1,1958] - str w0, [x1,1944] + ldrh w2, [x1,1956] + ldrh w3, [x1,1966] + str w0, [x1,1952] mul w2, w0, w2 sub w0, w3, w0 - strh w0, [x1,1956] - ldr w0, [x1,1964] - str w2, [x1,1952] + strh w0, [x1,1964] + ldr w0, [x1,1972] + str w2, [x1,1960] sub w2, w0, w2 mov w0, 0 - str w2, [x1,1960] + str w2, [x1,1968] ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 @@ -2353,212 +2492,209 @@ FtlConstantsInit: add x29, sp, 0 stp x19, x20, [sp,16] stp x23, x24, [sp,48] + adrp x20, .LANCHOR0 + mov x23, x0 stp x21, x22, [sp,32] stp x25, x26, [sp,64] str x27, [sp,80] - mov x23, x0 - adrp x20, .LANCHOR0 - ldrh w6, [x0,8] - add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x23,10] - ldrh w1, [x23,12] + add x1, x20, :lo12:.LANCHOR0 ldrh w4, [x23,14] - strh w6, [x0,1968] - strh w2, [x0,1970] - strh w1, [x0,1972] - strh w4, [x0,1958] -.L306: - add x5, x0, 1976 + ldrh w6, [x0,8] + ldrh w2, [x0,10] + ldrh w0, [x0,12] + strh w6, [x1,1976] + strh w2, [x1,1978] + strh w0, [x1,1980] + strh w4, [x1,1966] +.L317: + add x5, x1, 1984 strb w3, [x3,x5] add x3, x3, 1 cmp x3, 32 - bne .L306 + bne .L317 ldrh w3, [x23,20] - ldrb w0, [x23,15] - cmp w3, w0 - bcs .L307 - uxtb w8, w1 + ldrb w1, [x23,15] + cmp w3, w1 + bcs .L318 + uxtb w8, w0 mov w3, 0 - mul w11, w1, w2 + mul w11, w0, w2 ubfiz w10, w8, 1, 7 add x12, x20, :lo12:.LANCHOR0 -.L308: - cmp w3, w1 - bcs .L310 - uxtb w0, w3 +.L319: + cmp w3, w0 + bcs .L321 + uxtb w1, w3 mov w5, w3 mov w7, 0 -.L311: +.L322: cmp w7, w2 - bcs .L333 - add x9, x12, 1976 + bcs .L344 + add x9, x12, 1984 add w13, w5, w11 - add w14, w0, w8 + add w14, w1, w8 add w7, w7, 1 - strb w0, [x9,w5,uxtw] - add w0, w0, w10 + strb w1, [x9,w5,uxtw] + add w1, w1, w10 strb w14, [x9,x13] - add w5, w5, w1 - uxtb w0, w0 - b .L311 -.L333: + add w5, w5, w0 + uxtb w1, w1 + b .L322 +.L344: add w3, w3, 1 - b .L308 -.L310: - add x0, x20, :lo12:.LANCHOR0 + b .L319 +.L321: + add x1, x20, :lo12:.LANCHOR0 lsl w2, w2, 1 lsr w4, w4, 1 - strh w2, [x0,1970] - strh w4, [x0,1958] -.L307: - add x0, x20, :lo12:.LANCHOR0 + strh w2, [x1,1978] + strh w4, [x1,1966] +.L318: + add x1, x20, :lo12:.LANCHOR0 mov w2, 5 cmp w6, 1 - strh w2, [x0,2008] - strh wzr, [x0,2010] - bne .L312 - strh w6, [x0,2008] -.L312: - add x0, x20, :lo12:.LANCHOR0 + strh w2, [x1,2016] + strh wzr, [x1,2018] + bne .L323 + strh w6, [x1,2016] +.L323: + add x1, x20, :lo12:.LANCHOR0 mov w2, 4352 - ldrb w26, [x0,8] - strh w2, [x0,2012] - cbz w26, .L313 + ldrb w26, [x1,72] + strh w2, [x1,2020] + cbz w26, .L324 mov w2, 384 - strh w2, [x0,2012] -.L313: + strh w2, [x1,2020] +.L324: add x21, x20, :lo12:.LANCHOR0 - ldrh w19, [x21,1958] - ldrh w22, [x21,1970] - mul w22, w1, w22 - mul w1, w19, w1 - uxth w22, w22 - strh w22, [x21,1948] - uxth w0, w1 - strh w0, [x21,2014] - bl Ftl_log2 ldrh w25, [x23,16] ldrh w24, [x23,20] - strh w0, [x21,2016] - mul w0, w22, w25 - strh w0, [x21,2022] - mov w0, w24 ldrh w27, [x23,18] - strh w25, [x21,2018] - strh w27, [x21,2020] - strh w24, [x21,2024] + ldrh w22, [x21,1978] + ldrh w19, [x21,1966] + strh w25, [x21,2024] + mul w22, w0, w22 + mul w0, w19, w0 + strh w0, [x21,2022] + uxth w22, w22 + strh w27, [x21,2026] + strh w22, [x21,1956] + mul w0, w22, w25 + strh w0, [x21,2028] + mov w0, w24 + strh w24, [x21,2030] bl Ftl_log2 - lsl w2, w24, 9 uxth w3, w0 - strh w0, [x21,2026] - cmp w19, 1024 - ldrh w0, [x23,26] - strh w2, [x21,2028] - ubfx x2, x2, 9, 7 + lsl w2, w24, 9 strh w0, [x21,2032] + ldrh w0, [x23,26] + cmp w19, 1024 + strh w2, [x21,2034] + ubfx x2, x2, 9, 7 + strh w0, [x21,2038] lsl w2, w2, 1 mul w0, w22, w19 - strh w2, [x21,2030] - str w0, [x21,1964] - bls .L314 + strh w2, [x21,2036] + str w0, [x21,1972] + bls .L325 and w0, w19, 255 - strh w0, [x21,2010] -.L314: + strh w0, [x21,2018] +.L325: add x2, x20, :lo12:.LANCHOR0 mul w0, w24, w27 - ldrh w1, [x2,2010] + ldrh w1, [x2,2018] sub w1, w19, w1 mul w1, w22, w1 mul w1, w1, w24 mul w1, w1, w25 asr w1, w1, 11 - str w1, [x2,2036] - ldrh w1, [x2,2012] + str w1, [x2,2040] + ldrh w1, [x2,2020] lsl w1, w1, 3 sdiv w0, w1, w0 uxth w0, w0 cmp w0, 4 - bhi .L330 + bhi .L341 mov w0, 4 -.L330: - strh w0, [x2,2040] - cbz w26, .L317 +.L341: + strh w0, [x2,2044] + cbz w26, .L328 add x0, x20, :lo12:.LANCHOR0 mov w1, 640 - strh w1, [x0,2012] -.L317: + strh w1, [x0,2020] +.L328: add x1, x20, :lo12:.LANCHOR0 lsl w19, w19, 6 cmp w22, 1 - ldrh w0, [x1,2012] + ldrh w0, [x1,2020] asr w0, w0, w3 add w3, w3, 9 asr w19, w19, w3 - strh w19, [x1,2044] + strh w19, [x1,2048] and w19, w19, 65535 add w0, w0, 2 - strh w0, [x1,2042] + strh w0, [x1,2046] mul w0, w19, w22 - str w0, [x1,2048] + str w0, [x1,2052] add w19, w19, 8 - ldrh w0, [x1,2040] + ldrh w0, [x1,2044] udiv w0, w0, w22 add w19, w19, w0 - bne .L331 + bne .L342 add w19, w19, 4 -.L331: - str w19, [x1,1944] +.L342: + str w19, [x1,1952] add x19, x20, :lo12:.LANCHOR0 - ldrh w0, [x19,1944] + ldrh w0, [x19,1952] bl FtlSysBlkNumInit - str wzr, [x19,2060] - ldr w0, [x19,1944] - str w0, [x19,2052] - ldr w0, [x19,1960] - ldrh w1, [x19,2018] + str wzr, [x19,2064] + ldr w0, [x19,1952] + str w0, [x19,2056] + ldr w0, [x19,1968] + ldrh w1, [x19,2024] lsl w0, w0, 2 - ldrh w3, [x19,2024] - ldrh w2, [x19,2040] + ldrh w3, [x19,2030] + ldrh w2, [x19,2044] mul w1, w0, w1 - ldrh w0, [x19,2026] - ldrb w5, [x19,120] + ldrh w0, [x19,2032] + ldrb w5, [x19,196] add w0, w0, 9 lsr w0, w1, w0 mov w1, 2048 add w0, w0, 2 sdiv w1, w1, w3 - strh w1, [x19,2058] + strh w1, [x19,2062] uxth w0, w0 - strh w0, [x19,2056] + strh w0, [x19,2060] add w1, w2, 3 - strh w1, [x19,2040] - ldr w1, [x19,2048] + strh w1, [x19,2044] + ldr w1, [x19,2052] add w4, w1, 3 - str w4, [x19,2048] - cbz w5, .L320 + str w4, [x19,2052] + cbz w5, .L331 add w2, w2, 4 add w1, w1, 5 - strh w2, [x19,2040] - b .L332 -.L320: + strh w2, [x19,2044] + b .L343 +.L331: cmp w4, 7 - bhi .L321 + bhi .L332 mov w1, 8 +.L343: + str w1, [x19,2052] .L332: - str w1, [x19,2048] -.L321: add x20, x20, :lo12:.LANCHOR0 - ldrh w1, [x20,1956] - strh wzr, [x20,2064] + ldrh w1, [x20,1964] + strh wzr, [x20,2068] lsr w2, w1, 3 add w1, w2, w1, lsl 1 add w1, w1, 52 add w0, w1, w0, lsl 2 cmp w0, w3, lsl 9 - bcs .L322 + bcs .L333 mov w0, 1 - strh w0, [x20,2064] -.L322: + strh w0, [x20,2068] +.L333: mov w0, 0 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -2576,24 +2712,24 @@ IsBlkInVendorPart: uxth w4, w0 add x1, x1, :lo12:.LANCHOR0 mov w0, 0 - ldrh w2, [x1,2066] - cbz w2, .L335 - ldrh w2, [x1,2040] + ldrh w2, [x1,2070] + cbz w2, .L346 + ldrh w2, [x1,2044] ldr x3, [x1,2072] mov x1, 0 -.L336: +.L347: cmp w2, w1, uxth - bls .L341 + bls .L352 add x1, x1, 1 add x0, x3, x1, lsl 1 ldrh w0, [x0,-2] cmp w0, w4 - bne .L336 + bne .L347 mov w0, 1 - b .L335 -.L341: + b .L346 +.L352: mov w0, 0 -.L335: +.L346: ret .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 @@ -2605,41 +2741,41 @@ FtlCacheMetchLpa: add x2, x2, :lo12:.LANCHOR0 mov w0, 0 ldr w3, [x2,2080] - cbz w3, .L343 + cbz w3, .L354 ldr x5, [x2,2088] mov x0, 56 mov x2, 0 -.L344: +.L355: cmp w3, w2 - bls .L353 + bls .L364 madd x4, x2, x0, x5 add x2, x2, 1 ldr w4, [x4,24] cmp w4, w6 - bcc .L344 + bcc .L355 cmp w4, w1 - bhi .L344 + bhi .L355 mov w0, 1 - b .L343 -.L353: + b .L354 +.L364: mov w0, 0 -.L343: +.L354: ret .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 2 .global FtlGetCap .type FtlGetCap, %function FtlGetCap: - adrp x0, .LANCHOR0+2060 - ldr w0, [x0,#:lo12:.LANCHOR0+2060] + adrp x0, .LANCHOR0+2064 + ldr w0, [x0,#:lo12:.LANCHOR0+2064] ret .size FtlGetCap, .-FtlGetCap .align 2 .global ftl_get_density .type ftl_get_density, %function ftl_get_density: - adrp x0, .LANCHOR0+2060 - ldr w0, [x0,#:lo12:.LANCHOR0+2060] + adrp x0, .LANCHOR0+2064 + ldr w0, [x0,#:lo12:.LANCHOR0+2064] ret .size ftl_get_density, .-ftl_get_density .align 2 @@ -2662,7 +2798,7 @@ FtlBbmMapBadBlock: adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 add x19, x19, 2104 - ldrh w3, [x19,-90] + ldrh w3, [x19,-82] udiv w2, w1, w3 add x0, x19, x2, uxth 3 ldr x0, [x0,32] @@ -2692,7 +2828,7 @@ FtlBbmIsBadBlock: adrp x2, .LANCHOR0 uxth w0, w0 add x3, x2, :lo12:.LANCHOR0 - ldrh w1, [x3,2014] + ldrh w1, [x3,2022] udiv w2, w0, w1 msub w0, w2, w1, w0 add x2, x3, x2, uxth 3 @@ -2722,22 +2858,22 @@ FtlBbtCalcTotleCnt: str x21, [sp,32] mov w19, 0 mov w20, w19 - ldrh w1, [x0,2014] - ldrh w21, [x0,1970] + ldrh w1, [x0,2022] + ldrh w21, [x0,1978] mul w21, w1, w21 -.L361: +.L372: cmp w20, w21 - bge .L367 + bge .L378 mov w0, w20 bl FtlBbmIsBadBlock - cbz w0, .L362 + cbz w0, .L373 add w19, w19, 1 uxth w19, w19 -.L362: +.L373: add w20, w20, 1 uxth w20, w20 - b .L361 -.L367: + b .L372 +.L378: mov w0, w19 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -2752,11 +2888,11 @@ V2P_block: uxth w0, w0 add x3, x3, :lo12:.LANCHOR0 uxth w1, w1 - ldrh w4, [x3,1972] + ldrh w4, [x3,1980] udiv w2, w0, w4 msub w0, w2, w4, w0 madd w0, w1, w4, w0 - ldrh w1, [x3,2014] + ldrh w1, [x3,2022] madd w0, w2, w1, w0 ret .size V2P_block, .-V2P_block @@ -2767,8 +2903,8 @@ P2V_plane: adrp x2, .LANCHOR0 uxth w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrh w1, [x2,1972] - ldrh w3, [x2,2014] + ldrh w1, [x2,1980] + ldrh w3, [x2,2022] udiv w2, w0, w1 udiv w3, w0, w3 msub w0, w2, w1, w0 @@ -2782,10 +2918,10 @@ P2V_block_in_plane: adrp x2, .LANCHOR0 uxth w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrh w3, [x2,2014] + ldrh w3, [x2,2022] udiv w1, w0, w3 msub w0, w1, w3, w0 - ldrh w1, [x2,1972] + ldrh w1, [x2,1980] uxth w0, w0 udiv w0, w0, w1 ret @@ -2796,16 +2932,16 @@ P2V_block_in_plane: ftl_cmp_data_ver: cmp w0, w1 mov w2, -2147483648 - bls .L372 + bls .L383 sub w1, w0, w1 cmp w1, w2 cset w0, ls - b .L373 -.L372: + b .L384 +.L383: sub w1, w1, w0 cmp w1, w2 cset w0, hi -.L373: +.L384: ret .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 @@ -2841,18 +2977,18 @@ FtlFreeSysBlkQueueIn: mov w0, 65533 sub w2, w21, #1 cmp w0, w2, uxth - bcc .L376 + bcc .L387 adrp x2, .LANCHOR0 add x0, x2, :lo12:.LANCHOR0 mov x19, x2 ldrh w0, [x0,2206] cmp w0, 1024 - beq .L376 - cbz w1, .L378 + beq .L387 + cbz w1, .L389 adrp x20, .LANCHOR2 add x20, x20, :lo12:.LANCHOR2 ldr w0, [x20,-96] - cbnz w0, .L378 + cbnz w0, .L389 mov w0, w21 bl P2V_block_in_plane uxth w22, w0 @@ -2871,7 +3007,7 @@ FtlFreeSysBlkQueueIn: ldr w0, [x20,-72] add w0, w0, 1 str w0, [x20,-72] -.L378: +.L389: add x1, x19, :lo12:.LANCHOR0 add x1, x1, 2200 ldrh w0, [x1,6] @@ -2883,7 +3019,7 @@ FtlFreeSysBlkQueueIn: and w2, w2, 1023 strh w21, [x0,8] strh w2, [x1,4] -.L376: +.L387: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -2899,15 +3035,15 @@ FtlFreeSysBLkSort: add x1, x0, :lo12:.LANCHOR0 add x1, x1, 2200 ldrh w2, [x1,6] - cbz w2, .L385 + cbz w2, .L396 mov w5, 0 ldrh w3, [x1,2] ldrh w2, [x1,4] mov w4, w5 and w6, w6, 31 -.L387: +.L398: cmp w4, w6 - bge .L395 + bge .L406 add x5, x1, x3, sxtw 1 ldrh w7, [x5,8] add x5, x1, x2, sxtw 1 @@ -2919,13 +3055,13 @@ FtlFreeSysBLkSort: uxth w4, w4 and w3, w3, 1023 and w2, w2, 1023 - b .L387 -.L395: - cbz w5, .L385 + b .L398 +.L406: + cbz w5, .L396 add x0, x0, :lo12:.LANCHOR0 strh w3, [x0,2202] strh w2, [x0,2204] -.L385: +.L396: ret .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 @@ -2944,9 +3080,9 @@ FtlFreeSysBlkQueueOut: add x22, x21, 2200 add x23, x23, :lo12:.LC3 mov x24, x21 -.L397: +.L408: ldrh w1, [x22,6] - cbz w1, .L398 + cbz w1, .L409 adrp x19, .LANCHOR2 ldrh w2, [x22,2] add x25, x19, :lo12:.LANCHOR2 @@ -2958,7 +3094,7 @@ FtlFreeSysBlkQueueOut: ldr w1, [x25,-96] and w2, w2, 1023 strh w2, [x22,2] - cbnz w1, .L399 + cbnz w1, .L410 mov w0, w20 str x1, [x29,88] bl P2V_block_in_plane @@ -2967,12 +3103,12 @@ FtlFreeSysBlkQueueOut: lsl w2, w20, 10 ldr x1, [x29,88] str w2, [x0,4] - ldrb w0, [x21,120] - cbz w0, .L400 + ldrb w0, [x21,196] + cbz w0, .L411 ldr x0, [x25,-88] mov w2, 1 bl FlashEraseBlocks -.L400: +.L411: add x19, x19, :lo12:.LANCHOR2 mov w1, 1 mov w2, w1 @@ -2986,24 +3122,24 @@ FtlFreeSysBlkQueueOut: ldr w0, [x19,-72] add w0, w0, 1 str w0, [x19,-72] - b .L399 -.L398: + b .L410 +.L409: adrp x0, .LC2 add x0, x0, :lo12:.LC2 bl printk -.L401: - b .L401 -.L399: +.L412: + b .L412 +.L410: sub w0, w20, #1 mov w1, 65533 cmp w1, w0, uxth - bcs .L402 + bcs .L413 ldrh w2, [x24,2206] mov x0, x23 mov w1, w20 bl printk - b .L397 -.L402: + b .L408 +.L413: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -3027,21 +3163,21 @@ test_node_in_list: madd x0, x4, x0, x0 mov w4, 6 uxth w0, w0 -.L408: +.L419: cmp w1, w0 - beq .L409 + beq .L420 ldrh w0, [x2] cmp w0, w5 - beq .L410 + beq .L421 umull x2, w0, w4 add x2, x3, x2 - b .L408 -.L409: + b .L419 +.L420: mov w0, 1 - b .L407 -.L410: + b .L418 +.L421: mov w0, 0 -.L407: +.L418: ret .size test_node_in_list, .-test_node_in_list .align 2 @@ -3051,9 +3187,9 @@ insert_data_list: adrp x9, .LANCHOR0 uxth w0, w0 add x9, x9, :lo12:.LANCHOR0 - ldrh w1, [x9,1956] + ldrh w1, [x9,1964] cmp w1, w0 - bls .L413 + bls .L424 adrp x2, .LANCHOR2 mov w7, 6 add x5, x2, :lo12:.LANCHOR2 @@ -3065,10 +3201,10 @@ insert_data_list: strh w1, [x4,2] strh w1, [x11,x10] ldr x1, [x5,-8] - cbnz x1, .L414 + cbnz x1, .L425 str x4, [x5,-8] - b .L413 -.L414: + b .L424 +.L425: ubfiz x8, x0, 1, 16 ldr x13, [x2,#:lo12:.LANCHOR2] ldrh w2, [x4,4] @@ -3077,7 +3213,7 @@ insert_data_list: mov w18, 65535 ldrh w6, [x13,x8] cmp w2, wzr - ldrh w17, [x9,1956] + ldrh w17, [x9,1964] mul w6, w6, w2 sub x2, x1, x12 asr x2, x2, 1 @@ -3088,13 +3224,13 @@ insert_data_list: add x9, x14, x8 uxth w2, w2 mov w8, w7 -.L422: +.L433: add w5, w5, 1 cmp w0, w2 uxth w5, w5 - beq .L413 + beq .L424 cmp w5, w17 - bhi .L413 + bhi .L424 ubfiz x15, x2, 1, 16 ldrh w16, [x1,4] cmp w16, wzr @@ -3102,47 +3238,47 @@ insert_data_list: mul w7, w7, w16 csinv w7, w7, wzr, ne cmp w7, w6 - bne .L418 + bne .L429 ldrh w15, [x14,x15] ldrh w7, [x9] cmp w15, w7 - bcc .L420 - b .L419 -.L418: - bhi .L419 -.L420: + bcc .L431 + b .L430 +.L429: + bhi .L430 +.L431: ldrh w7, [x1] cmp w7, w18 - bne .L421 + bne .L432 strh w2, [x4,2] add x2, x3, :lo12:.LANCHOR2 strh w0, [x1] str x4, [x2,8] - b .L413 -.L421: + b .L424 +.L432: umull x1, w7, w8 mov w2, w7 add x1, x12, x1 - b .L422 -.L419: + b .L433 +.L430: strh w2, [x11,x10] ldrh w2, [x1,2] strh w2, [x4,2] add x2, x3, :lo12:.LANCHOR2 ldr x3, [x2,-8] cmp x1, x3 - bne .L423 + bne .L434 strh w0, [x1,2] str x4, [x2,-8] - b .L413 -.L423: + b .L424 +.L434: ldrh w3, [x1,2] mov w4, 6 ldr x2, [x2,-16] umull x3, w3, w4 strh w0, [x2,x3] strh w0, [x1,2] -.L413: +.L424: mov w0, 0 ret .size insert_data_list, .-insert_data_list @@ -3168,7 +3304,7 @@ insert_free_list: uxth w0, w0 mov w7, 65535 cmp w0, w7 - beq .L428 + beq .L439 adrp x2, .LANCHOR2 mov w6, 6 add x5, x2, :lo12:.LANCHOR2 @@ -3180,10 +3316,10 @@ insert_free_list: strh w1, [x4,2] strh w1, [x9,x8] ldr x1, [x5,24] - cbnz x1, .L429 + cbnz x1, .L440 str x4, [x5,24] - b .L428 -.L429: + b .L439 +.L440: ldr x11, [x5,-80] ubfiz x2, x0, 1, 16 ldr x10, [x5,-16] @@ -3193,41 +3329,41 @@ insert_free_list: asr x2, x2, 1 madd x2, x5, x2, x2 uxth w2, w2 -.L432: +.L443: ubfiz x5, x2, 1, 16 ldrh w5, [x11,x5] cmp w5, w12 - bcs .L430 + bcs .L441 ldrh w5, [x1] cmp w5, w7 - bne .L431 + bne .L442 strh w2, [x4,2] strh w0, [x1] - b .L428 -.L431: + b .L439 +.L442: umull x1, w5, w6 mov w2, w5 add x1, x10, x1 - b .L432 -.L430: + b .L443 +.L441: ldrh w5, [x1,2] strh w5, [x4,2] strh w2, [x9,x8] add x2, x3, :lo12:.LANCHOR2 ldr x3, [x2,24] cmp x1, x3 - bne .L433 + bne .L444 strh w0, [x1,2] str x4, [x2,24] - b .L428 -.L433: + b .L439 +.L444: ldrh w3, [x1,2] mov w4, 6 ldr x2, [x2,-16] umull x3, w3, w4 strh w0, [x2,x3] strh w0, [x1,2] -.L428: +.L439: mov w0, 0 ret .size insert_free_list, .-insert_free_list @@ -3260,31 +3396,31 @@ List_remove_node: ldr x2, [x6,-16] add x4, x2, x1 cmp x4, x3 - bne .L436 + bne .L447 ldrh w3, [x2,x1] cmp w3, w7 - bne .L437 + bne .L448 str xzr, [x0] - b .L438 -.L437: + b .L449 +.L448: umull x3, w3, w5 add x3, x2, x3 str x3, [x0] mov w0, -1 strh w0, [x3,2] - b .L438 -.L436: + b .L449 +.L447: ldrh w0, [x2,x1] ldrh w3, [x4,2] cmp w0, w7 - bne .L439 + bne .L450 cmp w3, w0 - beq .L438 + beq .L449 umull x3, w3, w5 mov w0, -1 strh w0, [x2,x3] - b .L438 -.L439: + b .L449 +.L450: umull x0, w0, w5 add x0, x2, x0 strh w3, [x0,2] @@ -3293,7 +3429,7 @@ List_remove_node: ldrh w7, [x2,x1] umull x3, w3, w5 strh w7, [x0,x3] -.L438: +.L449: mov w0, -1 strh w0, [x2,x1] strh w0, [x4,2] @@ -3310,14 +3446,14 @@ List_pop_index_node: str x19, [sp,16] mov w19, 65535 ldr x2, [x0] - cbz x2, .L441 + cbz x2, .L452 adrp x3, .LANCHOR2-16 mov w5, w19 mov w6, 6 ldr x4, [x3,#:lo12:.LANCHOR2-16] -.L442: - cbnz w1, .L443 -.L445: +.L453: + cbnz w1, .L454 +.L456: sub x2, x2, x4 mov x1, -6148914691236517206 asr x2, x2, 1 @@ -3325,17 +3461,17 @@ List_pop_index_node: uxth w19, w2 mov w1, w19 bl List_remove_node - b .L441 -.L443: + b .L452 +.L454: ldrh w3, [x2] cmp w3, w5 - beq .L445 + beq .L456 umull x3, w3, w6 sub w1, w1, #1 add x2, x4, x3 uxth w1, w1 - b .L442 -.L441: + b .L453 +.L452: mov w0, w19 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -3350,26 +3486,26 @@ List_get_gc_head_node: add x2, x2, :lo12:.LANCHOR2 mov w0, 65535 ldr x1, [x2,-8] - cbz x1, .L453 + cbz x1, .L464 ldr x4, [x2,-16] mov w5, 6 -.L449: - cbz w3, .L450 +.L460: + cbz w3, .L461 ldrh w2, [x1] cmp w2, w0 - beq .L453 + beq .L464 umull x2, w2, w5 sub w3, w3, #1 add x1, x4, x2 uxth w3, w3 - b .L449 -.L450: + b .L460 +.L461: sub x1, x1, x4 mov x0, -6148914691236517206 asr x1, x1, 1 madd x1, x0, x1, x1 uxth w0, w1 -.L453: +.L464: ret .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 @@ -3384,20 +3520,20 @@ List_update_data_list: add x0, x19, :lo12:.LANCHOR2 ldrh w1, [x0,40] cmp w1, w20 - beq .L455 + beq .L466 ldrh w1, [x0,88] cmp w1, w20 - beq .L455 + beq .L466 ldrh w1, [x0,136] cmp w1, w20 - beq .L455 + beq .L466 mov w3, 6 ldr x4, [x0,-16] ldr x0, [x0,-8] umull x3, w20, w3 add x1, x4, x3 cmp x1, x0 - beq .L455 + beq .L466 ubfiz x0, x20, 1, 16 ldr x5, [x19,#:lo12:.LANCHOR2] ldrh w2, [x5,x0] @@ -3408,11 +3544,11 @@ List_update_data_list: mov w0, 65535 csinv w2, w2, wzr, ne cmp w1, w0 - bne .L457 + bne .L468 ldrh w0, [x4,x3] cmp w0, w1 - beq .L455 -.L457: + beq .L466 +.L468: mov w0, 6 mov x3, -6148914691236517206 umull x1, w1, w0 @@ -3425,7 +3561,7 @@ List_update_data_list: mul w0, w0, w1 csinv w0, w0, wzr, ne cmp w2, w0 - bcs .L455 + bcs .L466 add x19, x19, :lo12:.LANCHOR2 mov w1, w20 sub x0, x19, #8 @@ -3435,7 +3571,7 @@ List_update_data_list: strh w0, [x19,16] mov w0, w20 bl INSERT_DATA_LIST -.L455: +.L466: mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -3452,12 +3588,12 @@ ftl_map_blk_alloc_new_blk: mov w20, 0 ldrh w2, [x0,10] ldr x1, [x0,16] -.L462: +.L473: cmp w20, w2 - beq .L466 + beq .L477 mov x22, x1 ldrh w21, [x1],2 - cbnz w21, .L463 + cbnz w21, .L474 mov x19, x0 bl FtlFreeSysBlkQueueOut strh w0, [x22] @@ -3465,15 +3601,15 @@ ftl_map_blk_alloc_new_blk: sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth - bcs .L464 + bcs .L475 adrp x2, .LANCHOR0+2206 adrp x0, .LC4 add x0, x0, :lo12:.LC4 ldrh w2, [x2,#:lo12:.LANCHOR0+2206] bl printk -.L465: - b .L465 -.L464: +.L476: + b .L476 +.L475: ldr w0, [x19,48] strh w21, [x19,2] add w0, w0, 1 @@ -3482,12 +3618,12 @@ ftl_map_blk_alloc_new_blk: strh w20, [x19] add w0, w0, 1 strh w0, [x19,8] - b .L466 -.L463: + b .L477 +.L474: add w20, w20, 1 uxth w20, w20 - b .L462 -.L466: + b .L473 +.L477: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -3498,71 +3634,71 @@ ftl_map_blk_alloc_new_blk: .global select_l2p_ram_region .type select_l2p_ram_region, %function select_l2p_ram_region: - adrp x0, .LANCHOR0+2058 + adrp x0, .LANCHOR0+2062 mov x4, 0 mov w5, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR0+2058] + ldrh w2, [x0,#:lo12:.LANCHOR0+2062] adrp x0, .LANCHOR2 add x1, x0, :lo12:.LANCHOR2 mov x3, x0 ldr x1, [x1,184] -.L469: +.L480: uxth w0, w4 cmp w0, w2 - bcs .L485 + bcs .L496 add x4, x4, 1 add x6, x1, x4, lsl 4 ldrh w6, [x6,-16] cmp w6, w5 - bne .L469 - b .L470 -.L485: + bne .L480 + b .L481 +.L496: mov w0, w2 mov x4, 0 mov w7, -2147483648 -.L472: +.L483: uxth w6, w4 cmp w6, w2 - bcs .L486 + bcs .L497 add x5, x1, x4, lsl 4 ldr w5, [x5,4] - tbnz w5, #31, .L481 + tbnz w5, #31, .L492 cmp w5, w7 - bcc .L473 -.L481: + bcc .L484 +.L492: mov w5, w7 mov w6, w0 -.L473: +.L484: add x4, x4, 1 mov w7, w5 mov w0, w6 - b .L472 -.L486: + b .L483 +.L497: cmp w0, w2 - bcc .L470 + bcc .L481 add x0, x3, :lo12:.LANCHOR2 add x1, x1, 4 mov w4, -1 mov w3, 0 ldrh w5, [x0,192] mov w0, w2 -.L476: +.L487: cmp w3, w2 - beq .L470 + beq .L481 ldr w7, [x1] cmp w7, w4 - bcs .L477 + bcs .L488 ldrh w6, [x1,-4] cmp w6, w5 csel w4, w4, w7, eq cmp w6, w5 csel w0, w0, w3, eq -.L477: +.L488: add w3, w3, 1 add x1, x1, 16 uxth w3, w3 - b .L476 -.L470: + b .L487 +.L481: ret .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 @@ -3572,35 +3708,35 @@ FtlUpdateVaildLpn: adrp x1, .LANCHOR2 add x3, x1, :lo12:.LANCHOR2 ldrh w2, [x3,194] - cbnz w0, .L488 + cbnz w0, .L499 cmp w2, 4 - bhi .L488 + bhi .L499 add w2, w2, 1 strh w2, [x3,194] - b .L487 -.L488: + b .L498 +.L499: add x0, x1, :lo12:.LANCHOR2 ldr x6, [x1,#:lo12:.LANCHOR2] mov w7, 65535 strh wzr, [x0,194] str wzr, [x0,196] - adrp x0, .LANCHOR0+1956 - ldrh w5, [x0,#:lo12:.LANCHOR0+1956] + adrp x0, .LANCHOR0+1964 + ldrh w5, [x0,#:lo12:.LANCHOR0+1964] mov x0, 0 -.L489: +.L500: cmp w5, w0, uxth - bls .L487 + bls .L498 ldrh w4, [x6,x0,lsl 1] cmp w4, w7 - beq .L490 + beq .L501 add x3, x1, :lo12:.LANCHOR2 ldr w2, [x3,196] add w2, w4, w2 str w2, [x3,196] -.L490: +.L501: add x0, x0, 1 - b .L489 -.L487: + b .L500 +.L498: ret .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 @@ -3610,10 +3746,10 @@ ftl_set_blk_mode: stp x29, x30, [sp, -16]! uxth w0, w0 add x29, sp, 0 - cbz w1, .L494 + cbz w1, .L505 bl ftl_set_blk_mode.part.9 - b .L493 -.L494: + b .L504 +.L505: adrp x1, .LANCHOR0 ubfx x2, x0, 5, 11 lsl x2, x2, 2 @@ -3623,7 +3759,7 @@ ftl_set_blk_mode: ldr w1, [x3,x2] bic w0, w1, w0 str w0, [x3,x2] -.L493: +.L504: ldp x29, x30, [sp], 16 ret .size ftl_set_blk_mode, .-ftl_set_blk_mode @@ -3650,42 +3786,42 @@ ftl_sb_update_avl_pages: uxth w2, w2 strh wzr, [x0,4] mov w6, 65535 - ldrh w4, [x4,1948] -.L498: + ldrh w4, [x4,1956] +.L509: cmp w2, w4 - bcs .L504 + bcs .L515 add x5, x0, x2, sxtw 1 ldrh w5, [x5,16] cmp w5, w6 - beq .L499 + beq .L510 ldrh w5, [x0,4] add w5, w5, 1 strh w5, [x0,4] -.L499: +.L510: add w2, w2, 1 uxth w2, w2 - b .L498 -.L504: + b .L509 +.L515: add x3, x3, :lo12:.LANCHOR0 mov w6, 65535 add x4, x0, x4, uxth 1 - ldrh w5, [x3,2018] + ldrh w5, [x3,2024] mov x3, x0 -.L501: +.L512: cmp x3, x4 - beq .L505 + beq .L516 ldrh w2, [x3,16] cmp w2, w6 - beq .L502 + beq .L513 ldrh w2, [x0,4] add w2, w5, w2 sub w2, w2, #1 sub w2, w2, w1 strh w2, [x0,4] -.L502: +.L513: add x3, x3, 2 - b .L501 -.L505: + b .L512 +.L516: ret .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 @@ -3707,50 +3843,50 @@ make_superblock: mov x21, 0 mov x23, x0 mov w25, -1 - ldrh w24, [x0,1948] -.L507: + ldrh w24, [x0,1956] +.L518: cmp w24, w21, uxth - bls .L518 - add x0, x23, 1976 + bls .L529 + add x0, x23, 1984 ldrh w1, [x19] ldrb w0, [x0,x21] bl V2P_block strh w25, [x22] mov w26, w0 bl FtlBbmIsBadBlock - cbnz w0, .L508 + cbnz w0, .L519 strh w26, [x22] ldrb w0, [x19,7] add w0, w0, 1 strb w0, [x19,7] -.L508: +.L519: add x21, x21, 1 add x22, x22, 2 - b .L507 -.L518: + b .L518 +.L529: add x1, x20, :lo12:.LANCHOR0 ldrb w0, [x19,7] strb wzr, [x19,9] - ldrh w2, [x1,2018] + ldrh w2, [x1,2024] mul w0, w0, w2 strh w0, [x19,4] - ldr w0, [x1,1940] - cbz w0, .L510 + ldr w0, [x1,1948] + cbz w0, .L521 adrp x0, .LANCHOR2-80 ldrh w1, [x19] ldr x0, [x0,#:lo12:.LANCHOR2-80] ldrh w0, [x0,x1,lsl 1] cmp w0, 79 - bhi .L510 + bhi .L521 mov w0, 1 strb w0, [x19,9] -.L510: +.L521: add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,8] - cbz w0, .L511 + ldrb w0, [x20,72] + cbz w0, .L522 mov w0, 1 strb w0, [x19,9] -.L511: +.L522: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -3772,29 +3908,29 @@ update_multiplier_value: stp x23, x24, [sp,48] mov x22, 0 uxth w21, w0 - ldrh w23, [x1,1948] + ldrh w23, [x1,1956] mov w19, w22 - ldrh w24, [x1,2018] + ldrh w24, [x1,2024] mov x20, x1 -.L520: +.L531: cmp w23, w22, uxth - bls .L527 - add x0, x20, 1976 + bls .L538 + add x0, x20, 1984 mov w1, w21 ldrb w0, [x0,x22] bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L521 + cbnz w0, .L532 add w19, w19, w24 uxth w19, w19 -.L521: +.L532: add x22, x22, 1 - b .L520 -.L527: - cbz w19, .L523 + b .L531 +.L538: + cbz w19, .L534 mov w0, 32768 sdiv w19, w0, w19 -.L523: +.L534: mov w0, 6 umull x21, w21, w0 adrp x0, .LANCHOR2-16 @@ -3816,7 +3952,7 @@ GetFreeBlockMinEraseCount: add x2, x2, :lo12:.LANCHOR2 ldr x1, [x2,24] mov w0, w1 - cbz x1, .L529 + cbz x1, .L540 ldr x0, [x2,-16] sub x1, x1, x0 mov x0, -6148914691236517206 @@ -3825,7 +3961,7 @@ GetFreeBlockMinEraseCount: ldr x0, [x2,-80] and x1, x1, 65535 ldrh w0, [x0,x1,lsl 1] -.L529: +.L540: ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -3837,7 +3973,7 @@ GetFreeBlockMaxEraseCount: add x5, x2, :lo12:.LANCHOR2 ldr x1, [x5,24] mov w0, w1 - cbz x1, .L532 + cbz x1, .L543 ldrh w3, [x5,32] mov w0, 7 mov w6, 6 @@ -3853,25 +3989,25 @@ GetFreeBlockMaxEraseCount: madd x1, x3, x1, x1 mov w3, 0 uxth w1, w1 -.L534: +.L545: cmp w3, w4 - beq .L537 + beq .L548 umull x5, w1, w6 ldrh w5, [x0,x5] cmp w5, w7 - bne .L535 -.L537: + bne .L546 +.L548: add x2, x2, :lo12:.LANCHOR2 ubfiz x1, x1, 1, 16 ldr x0, [x2,-80] ldrh w0, [x0,x1] - b .L532 -.L535: + b .L543 +.L546: add w3, w3, 1 mov w1, w5 uxth w3, w3 - b .L534 -.L532: + b .L545 +.L543: ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 @@ -3899,7 +4035,7 @@ FtlPrintInfo2buf: bl sprintf add x20, x20, x0, sxtw adrp x1, .LC7 - ldr w2, [x24,2036] + ldr w2, [x24,2040] mov x0, x20 add x1, x1, :lo12:.LC7 bl sprintf @@ -3907,10 +4043,10 @@ FtlPrintInfo2buf: adrp x0, .LANCHOR1+504 ldr w0, [x0,#:lo12:.LANCHOR1+504] cmp w0, 1 - beq .L540 + beq .L551 sub w0, w20, w22 - b .L541 -.L540: + b .L552 +.L551: add x0, x29, 96 add x1, x29, 100 add x2, x29, 104 @@ -4068,19 +4204,19 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC31 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x24,2060] + ldr w2, [x24,2064] adrp x1, .LC32 mov x0, x21 add x1, x1, :lo12:.LC32 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x24,2052] + ldr w2, [x24,2056] adrp x1, .LC33 mov x0, x21 add x1, x1, :lo12:.LC33 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x24,1944] + ldr w2, [x24,1952] adrp x1, .LC34 mov x0, x21 add x1, x1, :lo12:.LC34 @@ -4092,7 +4228,7 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC35 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x24,1956] + ldrh w2, [x24,1964] adrp x1, .LC36 mov x0, x21 add x1, x1, :lo12:.LC36 @@ -4104,7 +4240,7 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC37 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x24,1960] + ldr w2, [x24,1968] adrp x1, .LC38 mov x0, x21 add x1, x1, :lo12:.LC38 @@ -4260,7 +4396,7 @@ FtlPrintInfo2buf: add x21, x21, x0, sxtw ldr w3, [x23,328] adrp x1, .LC63 - ldr w2, [x24,1940] + ldr w2, [x24,1948] add x1, x1, :lo12:.LC63 ldr w4, [x23,420] mov x0, x21 @@ -4323,7 +4459,7 @@ FtlPrintInfo2buf: ldrh w0, [x23,280] mov w1, 65535 cmp w0, w1 - beq .L542 + beq .L553 ubfiz x2, x0, 1, 16 ldr x3, [x25,#:lo12:.LANCHOR2] adrp x1, .LC72 @@ -4332,7 +4468,7 @@ FtlPrintInfo2buf: ldrh w2, [x3,x2] bl sprintf add x19, x19, x0, sxtw -.L542: +.L553: mov w0, 0 adrp x23, .LC73 mov w20, 0 @@ -4341,9 +4477,9 @@ FtlPrintInfo2buf: mov w26, 6 uxth w3, w0 add x23, x23, :lo12:.LC73 -.L544: +.L555: cmp w3, w27 - beq .L543 + beq .L554 add x21, x25, :lo12:.LANCHOR2 ubfiz x6, x3, 1, 16 umull x24, w3, w26 @@ -4363,8 +4499,8 @@ FtlPrintInfo2buf: ldr x0, [x21,-16] cmp w20, 16 ldrh w3, [x0,x24] - bne .L544 -.L543: + bne .L555 +.L554: add x1, x25, :lo12:.LANCHOR2 adrp x23, .LC74 mov w20, 0 @@ -4378,9 +4514,9 @@ FtlPrintInfo2buf: asr x3, x3, 1 madd x3, x0, x3, x3 uxth w3, w3 -.L546: +.L557: cmp w3, w27 - beq .L545 + beq .L556 add x21, x25, :lo12:.LANCHOR2 ubfiz x5, x3, 1, 16 umull x24, w3, w26 @@ -4398,10 +4534,10 @@ FtlPrintInfo2buf: ldr x0, [x21,-16] cmp w20, 4 ldrh w3, [x0,x24] - bne .L546 -.L545: + bne .L557 +.L556: sub w0, w19, w22 -.L541: +.L552: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -4447,48 +4583,48 @@ GetSwlReplaceBlock: ldr w2, [x0,248] ldr w1, [x0,256] cmp w2, w1 - bcs .L551 + bcs .L562 adrp x1, .LANCHOR0 str wzr, [x0,240] add x2, x1, :lo12:.LANCHOR0 ldr x5, [x0,-80] mov x0, 0 - ldrh w3, [x2,1956] -.L552: + ldrh w3, [x2,1964] +.L563: cmp w3, w0 - bls .L584 + bls .L595 add x4, x19, :lo12:.LANCHOR2 ldrh w6, [x5,x0,lsl 1] add x0, x0, 1 ldr w2, [x4,240] add w2, w6, w2 str w2, [x4,240] - b .L552 -.L584: + b .L563 +.L595: add x2, x19, :lo12:.LANCHOR2 add x1, x1, :lo12:.LANCHOR0 ldr w0, [x2,240] - ldrh w1, [x1,2008] + ldrh w1, [x1,2016] udiv w3, w0, w3 str w3, [x2,248] ldr w3, [x2,244] sub w0, w0, w3 udiv w0, w0, w1 str w0, [x2,240] - b .L554 -.L551: + b .L565 +.L562: ldr w1, [x0,252] cmp w2, w1 - bls .L554 + bls .L565 add w1, w1, 1 adrp x4, .LANCHOR0 str w1, [x0,252] mov w0, 0 -.L556: +.L567: add x1, x4, :lo12:.LANCHOR0 - ldrh w1, [x1,1956] + ldrh w1, [x1,1964] cmp w0, w1 - bcs .L554 + bcs .L565 add x1, x19, :lo12:.LANCHOR2 ubfiz x2, x0, 1, 32 add w0, w0, 1 @@ -4496,27 +4632,27 @@ GetSwlReplaceBlock: ldrh w1, [x3,x2] add w1, w1, 1 strh w1, [x3,x2] - b .L556 -.L554: + b .L567 +.L565: add x1, x19, :lo12:.LANCHOR2 ldr w21, [x1,256] ldr w24, [x1,248] add w0, w21, 256 cmp w0, w24 - bls .L559 + bls .L570 ldr w1, [x1,252] add w0, w21, 768 cmp w0, w1 - bls .L559 - adrp x0, .LANCHOR0+1940 - ldr w0, [x0,#:lo12:.LANCHOR0+1940] - cbz w0, .L562 + bls .L570 + adrp x0, .LANCHOR0+1948 + ldr w0, [x0,#:lo12:.LANCHOR0+1948] + cbz w0, .L573 cmp w21, 40 - bls .L559 -.L562: + bls .L570 +.L573: mov w0, 65535 - b .L561 -.L559: + b .L572 +.L570: add x0, x19, :lo12:.LANCHOR2 ldrh w0, [x0,32] add w0, w0, w0, lsl 1 @@ -4525,34 +4661,34 @@ GetSwlReplaceBlock: uxth w6, w0 add w0, w21, 64 cmp w6, w0 - bcs .L571 + bcs .L582 cmp w21, 40 - bhi .L562 -.L571: + bhi .L573 +.L582: add x0, x19, :lo12:.LANCHOR2 ldr x3, [x0,-8] - cbz x3, .L562 - adrp x1, .LANCHOR0+1956 + cbz x3, .L573 + adrp x1, .LANCHOR0+1964 mov w23, 65535 ldr x7, [x0,-16] mov w20, w23 ldr x26, [x0,-80] mov x0, -6148914691236517206 - ldrh w9, [x1,#:lo12:.LANCHOR0+1956] + ldrh w9, [x1,#:lo12:.LANCHOR0+1964] mov w8, w23 mov w1, 0 add x0, x0, 1 mov w10, 6 -.L564: +.L575: ldrh w2, [x3] cmp w2, w8 - beq .L566 + beq .L577 add w1, w1, 1 uxth w1, w1 cmp w1, w9 - bhi .L562 + bhi .L573 ldrh w4, [x3,4] - cbz w4, .L565 + cbz w4, .L576 sub x4, x3, x7 asr x4, x4, 1 mul x4, x4, x0 @@ -4560,47 +4696,47 @@ GetSwlReplaceBlock: and x4, x4, 65535 ldrh w3, [x26,x4,lsl 1] cmp w3, w21 - bls .L570 + bls .L581 cmp w3, w23 - bcs .L565 + bcs .L576 mov w23, w3 mov w20, w5 -.L565: +.L576: umull x3, w2, w10 add x3, x7, x3 - b .L564 -.L570: + b .L575 +.L581: mov w20, w5 -.L566: +.L577: mov w0, 65535 cmp w20, w0 - beq .L562 + beq .L573 ubfiz x25, x20, 1, 16 ldrh w22, [x26,x25] cmp w22, w21 - bls .L568 + bls .L579 str x6, [x29,88] bl GetFreeBlockMinEraseCount ldr x6, [x29,88] cmp w21, w0, uxth - bcs .L568 + bcs .L579 add x0, x19, :lo12:.LANCHOR2 str w23, [x0,256] -.L568: +.L579: cmp w22, w24 - bcs .L562 + bcs .L573 add w0, w22, 128 cmp w6, w0 - ble .L562 + ble .L573 add w0, w22, 256 cmp w0, w24 - bcc .L569 + bcc .L580 add x0, x19, :lo12:.LANCHOR2 add w22, w22, 768 ldr w0, [x0,252] cmp w22, w0 - bcs .L562 -.L569: + bcs .L573 +.L580: add x21, x19, :lo12:.LANCHOR2 ldr x4, [x19,#:lo12:.LANCHOR2] adrp x0, .LC77 @@ -4614,7 +4750,7 @@ GetSwlReplaceBlock: mov w0, 1 str w0, [x21,860] mov w0, w20 -.L561: +.L572: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -4631,13 +4767,13 @@ free_data_superblock: mov w1, 65535 cmp w0, w1 add x29, sp, 0 - beq .L586 + beq .L597 adrp x2, .LANCHOR2 ubfiz x1, x0, 1, 16 ldr x2, [x2,#:lo12:.LANCHOR2] strh wzr, [x2,x1] bl INSERT_FREE_LIST -.L586: +.L597: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -4655,24 +4791,24 @@ FtlGcBufInit: mov w6, 4 mov w13, 56 str wzr, [x0,864] -.L588: +.L599: add x5, x10, :lo12:.LANCHOR0 adrp x9, .LANCHOR0 - ldrh w0, [x5,1948] + ldrh w0, [x5,1956] cmp w1, w0 - bcs .L592 + bcs .L603 add x2, x3, :lo12:.LANCHOR2 umull x4, w1, w11 ldr x7, [x2,872] ldr x8, [x2,880] add x0, x7, x4 str w12, [x0,16] - ldrh w0, [x5,2028] + ldrh w0, [x5,2034] mul w0, w1, w0 sdiv w0, w0, w6 add x0, x8, x0, sxtw 2 str x0, [x7,x4] - ldrh w0, [x5,2030] + ldrh w0, [x5,2036] ldr x8, [x2,872] ldr x5, [x2,888] mul w0, w1, w0 @@ -4689,27 +4825,27 @@ FtlGcBufInit: str x2, [x0,8] ldr x2, [x7,8] str x2, [x0,16] - b .L588 -.L592: + b .L599 +.L603: mov w8, 24 mov w5, 4 -.L590: +.L601: add x2, x3, :lo12:.LANCHOR2 ldr w1, [x2,904] cmp w0, w1 - bcs .L593 + bcs .L604 umull x4, w0, w8 ldr x7, [x2,872] add x6, x9, :lo12:.LANCHOR0 ldr x10, [x2,880] add x1, x7, x4 str wzr, [x1,16] - ldrh w1, [x6,2028] + ldrh w1, [x6,2034] mul w1, w0, w1 sdiv w1, w1, w5 add x1, x10, x1, sxtw 2 str x1, [x7,x4] - ldrh w1, [x6,2030] + ldrh w1, [x6,2036] ldr x6, [x2,872] ldr x2, [x2,888] mul w1, w0, w1 @@ -4719,8 +4855,8 @@ FtlGcBufInit: uxth w0, w0 add x1, x2, x1, sxtw 2 str x1, [x4,8] - b .L590 -.L593: + b .L601 +.L604: ret .size FtlGcBufInit, .-FtlGcBufInit .align 2 @@ -4734,32 +4870,32 @@ FtlGcBufFree: mov w9, 24 ldr w8, [x2,904] ldr x5, [x2,872] -.L595: +.L606: cmp w3, w1 - bcs .L594 + bcs .L605 umull x4, w3, w7 mov w2, 0 add x4, x0, x4 -.L600: +.L611: cmp w2, w8 - bcs .L597 + bcs .L608 umull x6, w2, w9 add x10, x5, x6 ldr x11, [x5,x6] ldr x6, [x4,8] cmp x11, x6 - bne .L596 + bne .L607 str wzr, [x10,16] - b .L597 -.L596: + b .L608 +.L607: add w2, w2, 1 uxth w2, w2 - b .L600 -.L597: + b .L611 +.L608: add w3, w3, 1 uxth w3, w3 - b .L595 -.L594: + b .L606 +.L605: ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -4774,17 +4910,17 @@ FtlGcBufAlloc: ldr w5, [x2,904] ldr x6, [x2,872] mov w2, 0 -.L602: +.L613: cmp w2, w1 - bcs .L608 + bcs .L619 mov w3, 0 -.L606: +.L617: cmp w3, w5 - bcs .L604 + bcs .L615 umull x4, w3, w7 add x4, x6, x4 ldr w10, [x4,16] - cbnz w10, .L603 + cbnz w10, .L614 umull x3, w2, w9 str w8, [x4,16] add x3, x0, x3 @@ -4792,16 +4928,16 @@ FtlGcBufAlloc: str x10, [x3,8] ldr x4, [x4,8] str x4, [x3,16] - b .L604 -.L603: + b .L615 +.L614: add w3, w3, 1 uxth w3, w3 - b .L606 -.L604: + b .L617 +.L615: add w2, w2, 1 uxth w2, w2 - b .L602 -.L608: + b .L613 +.L619: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 @@ -4814,19 +4950,19 @@ IsBlkInGcList: ldrh w2, [x1,908] ldr x3, [x1,912] mov x1, 0 -.L610: +.L621: cmp w2, w1, uxth - bls .L614 + bls .L625 add x1, x1, 1 add x4, x3, x1, lsl 1 ldrh w4, [x4,-2] cmp w4, w0 - bne .L610 + bne .L621 mov w0, 1 - b .L611 -.L614: + b .L622 +.L625: mov w0, 0 -.L611: +.L622: ret .size IsBlkInGcList, .-IsBlkInGcList .align 2 @@ -4849,25 +4985,25 @@ FtlGcUpdatePage: mov x5, 0 ldrh w7, [x4,908] ldr x6, [x4,912] -.L616: +.L627: uxth w4, w5 cmp w4, w7 - bcs .L620 + bcs .L631 add x5, x5, 1 add x9, x6, x5, lsl 1 ldrh w9, [x9,-2] cmp w9, w8 - bne .L616 -.L620: + bne .L627 +.L631: cmp w4, w7 - bne .L618 + bne .L629 ubfiz x4, x4, 1, 16 strh w0, [x6,x4] add x0, x3, :lo12:.LANCHOR2 ldrh w4, [x0,908] add w4, w4, 1 strh w4, [x0,908] -.L618: +.L629: add x3, x3, :lo12:.LANCHOR2 mov w0, 12 ldrh w4, [x3,920] @@ -4892,48 +5028,52 @@ FtlGcUpdatePage: FtlGcRefreshOpenBlock: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxth w19, w0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR2 + uxth w20, w0 + add x19, x19, :lo12:.LANCHOR2 + ldrh w0, [x19,936] + cmp w0, w20 + beq .L635 + ldrh w0, [x19,938] + cmp w0, w20 + beq .L635 + ldrh w0, [x19,940] + cmp w0, w20 + beq .L635 + ldrh w0, [x19,942] + cmp w0, w20 + beq .L635 adrp x0, .LC78 - mov w1, w19 + mov w1, w20 add x0, x0, :lo12:.LC78 bl printk - adrp x2, .LANCHOR2 - add x2, x2, :lo12:.LANCHOR2 - ldrh w5, [x2,936] - cmp w5, w19 - beq .L623 - ldrh w4, [x2,938] - cmp w4, w19 - beq .L623 - ldrh w3, [x2,940] - cmp w3, w19 - beq .L623 - ldrh w1, [x2,942] - cmp w1, w19 - beq .L623 + ldrh w1, [x19,936] mov w0, 65535 - cmp w5, w0 - bne .L624 - strh w19, [x2,936] - b .L623 -.L624: - cmp w4, w0 - bne .L625 - strh w19, [x2,938] - b .L623 -.L625: - cmp w3, w0 - bne .L626 - strh w19, [x2,940] - b .L623 -.L626: cmp w1, w0 - bne .L623 - strh w19, [x2,942] -.L623: + bne .L637 + strh w20, [x19,936] + b .L635 +.L637: + ldrh w1, [x19,938] + cmp w1, w0 + bne .L638 + strh w20, [x19,938] + b .L635 +.L638: + ldrh w1, [x19,940] + cmp w1, w0 + bne .L639 + strh w20, [x19,940] + b .L635 +.L639: + ldrh w1, [x19,942] + cmp w1, w0 + bne .L635 + strh w20, [x19,942] +.L635: mov w0, 0 - ldr x19, [sp,16] + ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock @@ -4941,54 +5081,61 @@ FtlGcRefreshOpenBlock: .global FtlGcRefreshBlock .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: - stp x29, x30, [sp, -32]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] - uxth w19, w0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR2 + uxth w20, w0 + add x19, x19, :lo12:.LANCHOR2 + str x21, [sp,32] + mov w21, 0 + ldrh w0, [x19,936] + cmp w0, w20 + beq .L641 + ldrh w0, [x19,938] + cmp w0, w20 + beq .L641 + ldrh w0, [x19,940] + cmp w0, w20 + beq .L641 + ldrh w0, [x19,942] + cmp w0, w20 + beq .L641 adrp x0, .LC78 - mov w1, w19 + mov w1, w20 add x0, x0, :lo12:.LC78 bl printk - adrp x2, .LANCHOR2 - mov w0, 0 - add x2, x2, :lo12:.LANCHOR2 - ldrh w6, [x2,936] - cmp w6, w19 - beq .L628 - ldrh w5, [x2,938] - cmp w5, w19 - beq .L628 - ldrh w4, [x2,940] - cmp w4, w19 - beq .L628 - ldrh w3, [x2,942] - cmp w3, w19 - beq .L628 - mov w1, 65535 - cmp w6, w1 - bne .L629 - strh w19, [x2,936] - b .L628 -.L629: - cmp w5, w1 - bne .L630 - strh w19, [x2,938] - b .L637 -.L630: - cmp w4, w1 - bne .L631 - strh w19, [x2,940] - b .L637 -.L631: - cmp w3, w1 - mov w0, -1 - bne .L628 - strh w19, [x2,942] -.L637: - mov w0, 0 -.L628: - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + ldrh w1, [x19,936] + mov w0, 65535 + cmp w1, w0 + bne .L642 + strh w20, [x19,936] + b .L641 +.L642: + ldrh w1, [x19,938] + cmp w1, w0 + bne .L643 + strh w20, [x19,938] + b .L641 +.L643: + ldrh w1, [x19,940] + cmp w1, w0 + bne .L644 + strh w20, [x19,940] + b .L641 +.L644: + ldrh w1, [x19,942] + cmp w1, w0 + bne .L649 + strh w20, [x19,942] + b .L641 +.L649: + mov w21, -1 +.L641: + mov w0, w21 + ldr x21, [sp,32] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 ret .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 @@ -5013,39 +5160,39 @@ FtlGcMarkBadPhyBlk: bl printk mov w0, w21 bl FtlGcRefreshBlock - adrp x0, .LANCHOR0+1940 - ldr w0, [x0,#:lo12:.LANCHOR0+1940] - cbz w0, .L639 + adrp x0, .LANCHOR0+1948 + ldr w0, [x0,#:lo12:.LANCHOR0+1948] + cbz w0, .L651 ubfiz x0, x21, 1, 16 ldr x2, [x22,-80] ldrh w1, [x2,x0] cmp w1, 39 - bls .L639 + bls .L651 sub w1, w1, #40 strh w1, [x2,x0] -.L639: +.L651: add x2, x19, :lo12:.LANCHOR2 mov x0, 0 add x2, x2, 952 ldrh w1, [x2,-8] -.L640: +.L652: cmp w1, w0, uxth - bls .L646 + bls .L658 add x0, x0, 1 add x3, x2, x0, lsl 1 ldrh w3, [x3,-2] cmp w3, w20 - bne .L640 - b .L641 -.L646: + bne .L652 + b .L653 +.L658: cmp w1, 15 - bhi .L641 + bhi .L653 add x19, x19, :lo12:.LANCHOR2 add w0, w1, 1 add x19, x19, 952 strh w0, [x19,-8] strh w20, [x19,w1,sxtw 1] -.L641: +.L653: mov w0, 0 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -5063,16 +5210,16 @@ FtlGcReFreshBadBlk: adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 ldrh w1, [x0,944] - cbz w1, .L648 + cbz w1, .L660 ldrh w3, [x0,936] mov w2, 65535 cmp w3, w2 - bne .L648 + bne .L660 ldrh w2, [x0,986] cmp w2, w1 - bcc .L649 + bcc .L661 strh wzr, [x0,986] -.L649: +.L661: add x19, x19, :lo12:.LANCHOR2 add x0, x19, 952 ldrh w1, [x19,986] @@ -5082,7 +5229,7 @@ FtlGcReFreshBadBlk: ldrh w0, [x19,986] add w0, w0, 1 strh w0, [x19,986] -.L648: +.L660: mov w0, 0 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -5107,17 +5254,17 @@ BuildFlashLsbPageTable: add x29, sp, 0 stp x19, x20, [sp,16] mov w20, w1 - cbnz w0, .L655 + cbnz w0, .L667 adrp x1, .LANCHOR0 mov x0, 0 add x1, x1, :lo12:.LANCHOR0 -.L656: - add x2, x1, 196 +.L668: + add x2, x1, 200 strh w0, [x2,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L656 -.L662: + bne .L668 +.L674: adrp x19, .LANCHOR2 mov w1, 255 add x19, x19, :lo12:.LANCHOR2 @@ -5129,42 +5276,42 @@ BuildFlashLsbPageTable: adrp x1, .LANCHOR0 mov x0, 0 add x1, x1, :lo12:.LANCHOR0 - b .L657 -.L655: + b .L669 +.L667: cmp w0, 1 - bne .L658 + bne .L670 adrp x3, .LANCHOR0 mov x0, 0 mov w4, 3 mov w5, 2 add x3, x3, :lo12:.LANCHOR0 -.L661: +.L673: cmp x0, 3 uxth w1, w0 mov w2, w1 - bls .L659 + bls .L671 ubfiz w2, w1, 1, 15 and w1, w1, 1 cmp w1, wzr csel w1, w4, w5, ne sub w2, w2, w1 uxth w2, w2 -.L659: - add x1, x3, 196 +.L671: + add x1, x3, 200 strh w2, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L661 - b .L662 -.L658: + bne .L673 + b .L674 +.L670: cmp w0, 2 - bne .L663 + bne .L675 adrp x3, .LANCHOR0 mov w1, 65535 mov x0, 0 add x3, x3, :lo12:.LANCHOR0 -.L665: - add x4, x3, 196 +.L677: + add x4, x3, 200 cmp x0, 1 uxth w2, w0 csel w2, w1, w2, hi @@ -5173,45 +5320,45 @@ BuildFlashLsbPageTable: add x0, x0, 1 cmp x0, 256 uxth w1, w1 - bne .L665 - b .L662 -.L663: + bne .L677 + b .L674 +.L675: cmp w0, 3 - bne .L666 + bne .L678 adrp x3, .LANCHOR0 mov x0, 0 mov w4, 5 mov w5, 4 add x3, x3, :lo12:.LANCHOR0 -.L669: +.L681: cmp x0, 5 uxth w1, w0 mov w2, w1 - bls .L667 + bls .L679 ubfiz w2, w1, 1, 15 and w1, w1, 1 cmp w1, wzr csel w1, w4, w5, ne sub w2, w2, w1 uxth w2, w2 -.L667: - add x1, x3, 196 +.L679: + add x1, x3, 200 strh w2, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L669 - b .L662 -.L666: + bne .L681 + b .L674 +.L678: cmp w0, 4 - bne .L670 + bne .L682 adrp x1, .LANCHOR0 mov w5, 7 add x1, x1, :lo12:.LANCHOR0 mov w4, 6 - add x2, x1, 196 + add x2, x1, 200 strh w0, [x2,8] mov w0, 5 - strh wzr, [x1,196] + strh wzr, [x1,200] mov w1, 1 strh w0, [x2,10] mov w0, 7 @@ -5224,7 +5371,7 @@ BuildFlashLsbPageTable: strh w0, [x2,14] mov w0, 8 strh w1, [x2,6] -.L672: +.L684: and w3, w0, 1 ubfiz w1, w0, 1, 15 add w0, w0, 1 @@ -5235,42 +5382,42 @@ BuildFlashLsbPageTable: sub w1, w1, w3 cmp w0, 256 strh w1, [x2,14] - bne .L672 - b .L662 -.L670: + bne .L684 + b .L674 +.L682: cmp w0, 5 - bne .L673 + bne .L685 adrp x2, .LANCHOR0 mov x0, 0 add x2, x2, :lo12:.LANCHOR0 -.L674: - add x1, x2, 196 +.L686: + add x1, x2, 200 strh w0, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 16 - bne .L674 + bne .L686 mov x0, 0 -.L675: +.L687: add x2, x1, x0 add w3, w0, 16 add x0, x0, 2 cmp x0, 480 strh w3, [x2,32] - bne .L675 - b .L662 -.L673: + bne .L687 + b .L674 +.L685: cmp w0, 6 - bne .L662 + bne .L688 adrp x1, .LANCHOR0 mov x2, 0 mov w4, 12 mov w5, 10 add x1, x1, :lo12:.LANCHOR0 -.L678: +.L691: cmp x2, 5 uxth w3, w2 mov w0, w3 - bls .L676 + bls .L689 add w0, w3, w3, lsl 1 and w3, w3, 1 cmp w3, wzr @@ -5278,22 +5425,42 @@ BuildFlashLsbPageTable: csel w3, w4, w5, ne sub w0, w0, w3 uxth w0, w0 -.L676: - add x3, x1, 196 +.L689: + add x3, x1, 200 strh w0, [x3,x2,lsl 1] add x2, x2, 1 cmp x2, 256 - bne .L678 - b .L662 -.L657: + bne .L691 + b .L674 +.L688: + cmp w0, 9 + bne .L674 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x1, x0, 200 + strh wzr, [x0,200] + mov w0, 1 + strh w0, [x1,2] + mov w0, 2 + strh w0, [x1,4] + mov x0, 0 +.L692: + add x2, x1, x0 + add w3, w0, 3 + add x0, x0, 2 + cmp x0, 506 + strh w3, [x2,6] + bne .L692 + b .L674 +.L669: cmp w20, w0, uxth - bls .L696 - add x2, x1, 196 + bls .L711 + add x2, x1, 200 ldrh w2, [x2,x0,lsl 1] add x0, x0, 1 strh w2, [x19,w2,sxtw 1] - b .L657 -.L696: + b .L669 +.L711: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -5302,42 +5469,30 @@ BuildFlashLsbPageTable: .global FlashDieInfoInit .type FlashDieInfoInit, %function FlashDieInfoInit: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 stp x21, x22, [sp,32] adrp x22, .LANCHOR2 - str x27, [sp,80] - add x1, x22, :lo12:.LANCHOR2 adrp x21, .LANCHOR0 + add x0, x22, :lo12:.LANCHOR2 stp x19, x20, [sp,16] stp x23, x24, [sp,48] stp x25, x26, [sp,64] - strb wzr, [x1,2012] - adrp x1, .LANCHOR1+482 - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x1,#:lo12:.LANCHOR1+482] - strb wzr, [x0,1845] - cmp w1, 256 - bls .L698 - mov w1, 512 - b .L714 -.L698: - cmp w1, 128 - bls .L714 - mov w1, 256 -.L714: + strb wzr, [x0,2012] + adrp x0, .LANCHOR1+482 add x19, x21, :lo12:.LANCHOR0 - str w1, [x0,12] - mov w2, 8 - mov w1, 0 - add x0, x19, 1848 - add x25, x19, 708 mov x24, 0 - add x26, x19, 1620 + add x25, x19, 1620 + ldrh w0, [x0,#:lo12:.LANCHOR1+482] + strb wzr, [x19,1845] + bl FlashBlockAlignInit + mov w1, 0 + mov w2, 8 + add x0, x19, 1848 bl ftl_memset mov w1, 0 mov w2, 32 - mov x0, x25 + add x0, x19, 712 bl ftl_memset add x0, x19, 1652 mov w1, 0 @@ -5345,34 +5500,34 @@ FlashDieInfoInit: bl ftl_memset ldr x20, [x19,744] add x23, x20, 1 -.L702: +.L714: ldrb w2, [x20] mov x0, x23 - add x1, x26, x24, lsl 3 + add x1, x25, x24, lsl 3 bl FlashMemCmp8 - cbnz w0, .L701 + cbnz w0, .L713 ldrb w1, [x19,1845] - str w0, [x25,w1,sxtw 2] + add x2, x19, 712 + str w0, [x2,w1,sxtw 2] add w0, w1, 1 add x1, x19, x1, sxtw strb w0, [x19,1845] strb w24, [x1,1848] -.L701: +.L713: add x24, x24, 1 cmp x24, 4 - bne .L702 + bne .L714 add x19, x21, :lo12:.LANCHOR0 add x0, x22, :lo12:.LANCHOR2 ldrb w1, [x19,1845] strb w1, [x0,2012] ldrb w0, [x20,8] cmp w0, 2 - beq .L703 -.L707: + beq .L715 +.L719: add x21, x21, :lo12:.LANCHOR0 ldrb w1, [x20,13] add x22, x22, :lo12:.LANCHOR2 - ldr x27, [sp,80] ldp x23, x24, [sp,48] ldrb w0, [x21,1845] ldp x25, x26, [sp,64] @@ -5382,41 +5537,41 @@ FlashDieInfoInit: mul w0, w0, w1 strh w0, [x22,2014] ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 96 + ldp x29, x30, [sp], 80 ret -.L703: - ldr w26, [x19,12] +.L715: + ldr w25, [x19,76] mov x24, 0 - add x27, x19, 1620 - add x25, x19, 708 -.L706: + add x26, x19, 1620 +.L718: ldrb w2, [x20] mov x0, x23 - add x1, x27, x24, lsl 3 + add x1, x26, x24, lsl 3 bl FlashMemCmp8 - cbnz w0, .L704 + cbnz w0, .L716 ldrb w1, [x20,13] + add x4, x19, 712 ldrb w3, [x19,1845] - mul w0, w1, w26 + mul w0, w1, w25 ldrh w1, [x20,14] mov x2, x3 and w1, w1, 65280 mul w1, w0, w1 - str w1, [x25,w3,sxtw 2] + str w1, [x4,w3,sxtw 2] ldrb w0, [x20,23] - cbz w0, .L705 + cbz w0, .L717 lsl w1, w1, 1 - str w1, [x25,w3,sxtw 2] -.L705: + str w1, [x4,w3,sxtw 2] +.L717: add x0, x19, x3 add w2, w2, 1 strb w2, [x19,1845] strb w24, [x0,1848] -.L704: +.L716: add x24, x24, 1 cmp x24, 4 - bne .L706 - b .L707 + bne .L718 + b .L719 .size FlashDieInfoInit, .-FlashDieInfoInit .align 2 .global ftl_read_flash_info @@ -5434,12 +5589,12 @@ ftl_read_flash_info: add x1, x1, :lo12:.LANCHOR0 ldr x0, [x1,744] ldrb w2, [x0,9] - ldr w0, [x1,12] + ldr w0, [x1,76] mul w0, w0, w2 strh w0, [x19,4] - ldrb w0, [x1,1936] + ldrb w0, [x1,1944] strb w0, [x19,7] - ldr w0, [x1,2060] + ldr w0, [x1,2064] str w0, [x19] ldr x0, [x1,744] ldrb w4, [x1,1845] @@ -5452,9 +5607,9 @@ ftl_read_flash_info: strb w0, [x19,9] mov x0, 0 strb wzr, [x19,10] -.L716: +.L727: cmp w4, w0, uxtb - bls .L718 + bls .L729 add x2, x1, 1848 ldrb w3, [x19,10] ldrb w2, [x0,x2] @@ -5462,8 +5617,8 @@ ftl_read_flash_info: lsl w2, w5, w2 orr w2, w2, w3 strb w2, [x19,10] - b .L716 -.L718: + b .L727 +.L729: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -5511,36 +5666,36 @@ FtlMemInit: strh w1, [x0,940] strh w1, [x0,942] mov w1, 32 - ldrh w2, [x3,2024] + ldrh w2, [x3,2030] strh w1, [x0,848] mov w1, 128 strh w1, [x0,850] mov w1, 1024 strh wzr, [x0,856] sdiv w2, w1, w2 - ldrh w1, [x3,1948] + ldrh w1, [x3,1956] strh wzr, [x0,944] lsl w1, w1, 2 strh wzr, [x0,2040] strh wzr, [x0,986] cmp w2, w1 str w2, [x0,2044] - bls .L720 + bls .L731 str w1, [x0,2044] -.L720: +.L731: add x20, x22, :lo12:.LANCHOR0 add x19, x21, :lo12:.LANCHOR2 mov w24, 56 - ldrh w0, [x20,2022] + ldrh w0, [x20,2028] str wzr, [x20,2080] lsl w0, w0, 1 bl ftl_malloc str x0, [x19,912] - ldrh w1, [x20,2022] + ldrh w1, [x20,2028] mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w23, [x20,1948] + ldrh w23, [x20,1956] str x0, [x19,928] mul w23, w23, w24 lsl w25, w23, 3 @@ -5563,8 +5718,8 @@ FtlMemInit: mul w0, w0, w24 bl ftl_malloc str x0, [x20,2088] - ldrh w0, [x20,1948] - ldrh w23, [x20,2028] + ldrh w0, [x20,1956] + ldrh w23, [x20,2034] lsl w0, w0, 1 add w0, w0, 1 str w0, [x19,904] @@ -5595,9 +5750,9 @@ FtlMemInit: mov w0, 24 mul w0, w1, w0 bl ftl_malloc - ldrh w23, [x20,1948] + ldrh w23, [x20,1956] str x0, [x19,872] - ldrh w0, [x20,2030] + ldrh w0, [x20,2036] mul w23, w0, w23 mov w0, w23 bl ftl_malloc @@ -5605,17 +5760,17 @@ FtlMemInit: lsl w0, w23, 3 bl ftl_malloc str x0, [x19,2128] - ldrh w1, [x20,2030] + ldrh w1, [x20,2036] ldr w0, [x19,904] mul w0, w1, w0 bl ftl_malloc str x0, [x19,888] - ldrh w1, [x20,2030] + ldrh w1, [x20,2036] ldr w0, [x19,2044] mul w0, w1, w0 bl ftl_malloc str x0, [x19,2136] - ldrh w0, [x20,1958] + ldrh w0, [x20,1966] lsl w0, w0, 1 strh w0, [x19,2144] and w0, w0, 65534 @@ -5627,7 +5782,7 @@ FtlMemInit: strh w0, [x19,2144] lsl w0, w0, 9 bl ftl_malloc - ldrh w23, [x20,1958] + ldrh w23, [x20,1966] str x0, [x19,2160] add x0, x0, 32 lsl w23, w23, 1 @@ -5637,7 +5792,7 @@ FtlMemInit: str x0, [x19,2168] mov w0, w23 bl ftl_malloc - ldr w23, [x20,2048] + ldr w23, [x20,2052] str x0, [x21,#:lo12:.LANCHOR2] lsl w23, w23, 1 mov w0, w23 @@ -5646,32 +5801,32 @@ FtlMemInit: mov w0, w23 bl ftl_malloc str x0, [x19,2184] - ldrh w0, [x20,1958] + ldrh w0, [x20,1966] lsr w0, w0, 3 add w0, w0, 4 bl ftl_malloc str x0, [x22,#:lo12:.LANCHOR0] - ldrh w0, [x20,2040] + ldrh w0, [x20,2044] lsl w0, w0, 1 bl ftl_malloc str x0, [x20,2072] - ldrh w0, [x20,2040] + ldrh w0, [x20,2044] lsl w0, w0, 1 bl ftl_malloc str x0, [x19,2192] - ldrh w0, [x20,2040] + ldrh w0, [x20,2044] lsl w0, w0, 2 bl ftl_malloc str x0, [x19,2200] - ldrh w0, [x20,2042] + ldrh w0, [x20,2046] lsl w0, w0, 2 bl ftl_malloc str x0, [x19,2208] - ldrh w2, [x20,2042] + ldrh w2, [x20,2046] mov w1, 0 lsl w2, w2, 2 bl ftl_memset - ldrh w23, [x20,2056] + ldrh w23, [x20,2060] lsl w23, w23, 2 mov w0, w23 bl ftl_malloc @@ -5679,26 +5834,26 @@ FtlMemInit: mov w0, w23 bl ftl_malloc str x0, [x19,2224] - ldr w0, [x20,2048] + ldr w0, [x20,2052] lsl w0, w0, 2 bl ftl_malloc str x0, [x19,2232] - ldrh w0, [x20,2058] + ldrh w0, [x20,2062] lsl w0, w0, 4 bl ftl_malloc str x0, [x19,184] - ldrh w1, [x20,2058] - ldrh w0, [x20,2028] + ldrh w1, [x20,2062] + ldrh w0, [x20,2034] mul w0, w1, w0 bl ftl_malloc str x0, [x19,2240] - ldrh w1, [x20,1958] + ldrh w1, [x20,1966] mov w0, 6 mul w0, w1, w0 bl ftl_malloc str x0, [x19,-16] - ldrh w0, [x20,2014] - ldrh w1, [x20,1970] + ldrh w0, [x20,2022] + ldrh w1, [x20,1978] add w0, w0, 31 asr w0, w0, 5 strh w0, [x19,2248] @@ -5708,112 +5863,112 @@ FtlMemInit: str x0, [x20,2136] add x1, x20, 2104 ldrh w4, [x19,2248] - ldrh w5, [x20,1970] + ldrh w5, [x20,1978] mov w0, 1 mov w2, w4 -.L721: +.L732: cmp w0, w5 add x1, x1, 8 - bcs .L821 + bcs .L832 ldr x3, [x20,2136] add w0, w0, 1 add x3, x3, x2, uxtw 2 add w2, w2, w4 str x3, [x1,32] - b .L721 -.L821: + b .L732 +.L832: add x1, x22, :lo12:.LANCHOR0 -.L723: +.L734: cmp w0, 8 - beq .L822 + beq .L833 add x2, x1, x0, uxtw 3 add w0, w0, 1 str xzr, [x2,2136] - b .L723 -.L822: + b .L734 +.L833: add x0, x21, :lo12:.LANCHOR2 ldr x1, [x0,2176] - cbnz x1, .L725 -.L727: + cbnz x1, .L736 +.L738: adrp x0, .LC80 adrp x1, .LANCHOR3 add x0, x0, :lo12:.LC80 add x1, x1, :lo12:.LANCHOR3 bl printk mov w0, -1 - b .L726 -.L725: + b .L737 +.L736: ldr x1, [x0,2184] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2216] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2232] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,184] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2240] - cbz x1, .L727 + cbz x1, .L738 ldr x0, [x0,-16] - cbz x0, .L727 + cbz x0, .L738 add x22, x22, :lo12:.LANCHOR0 ldr x0, [x22,2136] - cbz x0, .L727 + cbz x0, .L738 adrp x0, .LANCHOR2 ldr x0, [x0,#:lo12:.LANCHOR2] - cbz x0, .L727 + cbz x0, .L738 add x0, x21, :lo12:.LANCHOR2 ldr x1, [x0,912] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,928] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2048] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2064] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,-88] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,896] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2056] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2072] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2080] - cbz x1, .L727 + cbz x1, .L738 ldr x0, [x0,2088] - cbz x0, .L727 + cbz x0, .L738 add x0, x21, :lo12:.LANCHOR2 ldr x1, [x0,880] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2104] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2112] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,872] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2120] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2128] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,888] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,-80] - cbz x1, .L727 + cbz x1, .L738 ldr x0, [x0,2152] - cbz x0, .L727 + cbz x0, .L738 adrp x0, .LANCHOR0+2072 ldr x0, [x0,#:lo12:.LANCHOR0+2072] - cbz x0, .L727 + cbz x0, .L738 adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 ldr x1, [x0,2192] - cbz x1, .L727 + cbz x1, .L738 ldr x1, [x0,2200] - cbz x1, .L727 + cbz x1, .L738 ldr x0, [x0,2208] - cbz x0, .L727 + cbz x0, .L738 mov w0, 0 -.L726: +.L737: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -5839,10 +5994,10 @@ FtlBbt2Bitmap: mov x3, 0 mov w0, 65535 mov w5, 1 -.L825: +.L836: ldrh w2, [x20,x3] cmp w2, w0 - beq .L823 + beq .L834 ubfx x4, x2, 5, 11 add x3, x3, 2 lsl x4, x4, 2 @@ -5851,8 +6006,8 @@ FtlBbt2Bitmap: ldr w1, [x19,x4] orr w2, w1, w2 str w2, [x19,x4] - bne .L825 -.L823: + bne .L836 +.L834: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -5915,76 +6070,76 @@ ftl_free_no_use_map_blk: mov x0, x21 bl ftl_memset mov w0, 0 -.L831: +.L842: ldrh w1, [x19,6] cmp w1, w0 - bls .L853 + bls .L864 ubfiz x1, x0, 2, 16 ldr w2, [x20,x1] mov w1, 0 ubfx x2, x2, 10, 16 -.L832: +.L843: ldrh w3, [x19,10] cmp w3, w1 - bls .L854 + bls .L865 ubfiz x3, x1, 1, 16 ldrh w4, [x22,x3] cmp w2, w4 - bne .L833 - cbz w4, .L833 + bne .L844 + cbz w4, .L844 ldrh w4, [x21,x3] add w4, w4, 1 strh w4, [x21,x3] -.L833: +.L844: add w1, w1, 1 uxth w1, w1 - b .L832 -.L854: + b .L843 +.L865: add w0, w0, 1 uxth w0, w0 - b .L831 -.L853: - adrp x0, .LANCHOR0+2020 + b .L842 +.L864: + adrp x0, .LANCHOR0+2026 mov w23, 0 mov w20, w23 - ldrh w1, [x0,#:lo12:.LANCHOR0+2020] + ldrh w1, [x0,#:lo12:.LANCHOR0+2026] ldrh w0, [x19] strh w1, [x21,x0,lsl 1] ldrh w24, [x21] -.L836: +.L847: ldrh w0, [x19,10] cmp w0, w20 - bls .L855 + bls .L866 ubfiz x2, x20, 1, 16 ldrh w1, [x21,x2] cmp w24, w1 - bls .L837 + bls .L848 ldrh w0, [x22,x2] add x25, x22, x2 - cbnz w0, .L838 - b .L839 -.L837: - cbnz w1, .L839 + cbnz w0, .L849 + b .L850 +.L848: + cbnz w1, .L850 ldrh w0, [x22,x2] add x25, x22, x2 - cbz w0, .L839 -.L841: + cbz w0, .L850 +.L852: mov w1, 1 bl FtlFreeSysBlkQueueIn strh wzr, [x25] ldrh w0, [x19,8] sub w0, w0, #1 strh w0, [x19,8] -.L839: +.L850: add w20, w20, 1 uxth w20, w20 - b .L836 -.L838: + b .L847 +.L849: mov w23, w20 mov w24, w1 - cbz w1, .L841 - b .L839 -.L855: + cbz w1, .L852 + b .L850 +.L866: mov w0, w23 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -6006,23 +6161,23 @@ FtlL2PDataInit: stp x21, x22, [sp,32] add x21, x20, :lo12:.LANCHOR0 add x22, x19, :lo12:.LANCHOR2 - ldr w2, [x21,2048] + ldr w2, [x21,2052] ldr x0, [x22,2184] lsl w2, w2, 1 bl ftl_memset - ldrh w3, [x21,2028] + ldrh w3, [x21,2034] mov w1, 255 - ldrh w2, [x21,2058] + ldrh w2, [x21,2062] ldr x0, [x22,2240] mul w2, w3, w2 bl ftl_memset mov w1, 0 mov w5, -1 -.L857: +.L868: add x3, x20, :lo12:.LANCHOR0 - ldrh w0, [x3,2058] + ldrh w0, [x3,2062] cmp w0, w1 - bls .L859 + bls .L870 add x4, x19, :lo12:.LANCHOR2 ubfiz x0, x1, 4, 16 ldr x2, [x4,184] @@ -6032,7 +6187,7 @@ FtlL2PDataInit: strh w5, [x2,x0] ldr x2, [x4,184] add x2, x2, x0 - ldrh w0, [x3,2028] + ldrh w0, [x3,2034] ldr x3, [x4,2240] mul w0, w0, w1 add w1, w1, 1 @@ -6041,20 +6196,20 @@ FtlL2PDataInit: and x0, x0, -4 add x0, x3, x0 str x0, [x2,8] - b .L857 -.L859: + b .L868 +.L870: add x0, x19, :lo12:.LANCHOR2 mov w2, -1 add x1, x0, 2256 strh w2, [x0,2258] strh w2, [x0,2256] - ldr w2, [x3,2048] + ldr w2, [x3,2052] strh w2, [x0,2266] mov w2, -3902 strh w2, [x0,2260] ldrh w2, [x0,2320] strh w2, [x0,2264] - ldrh w2, [x3,2056] + ldrh w2, [x3,2060] strh w2, [x0,2262] ldr x2, [x0,2176] str x2, [x0,2272] @@ -6084,22 +6239,22 @@ FtlVariablesInit: add x20, x20, :lo12:.LANCHOR0 strh w0, [x19,2336] mov w0, -1 - ldrh w2, [x20,2040] + ldrh w2, [x20,2044] str w0, [x19,2348] ldr x0, [x20,2072] lsl w2, w2, 1 str xzr, [x19,2328] str wzr, [x19,2340] str wzr, [x19,2344] - str wzr, [x20,1940] - strh wzr, [x20,2066] + str wzr, [x20,1948] + strh wzr, [x20,2070] bl ftl_memset - ldrh w2, [x20,1958] + ldrh w2, [x20,1966] mov w1, 0 ldr x0, [x19,-80] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,1958] + ldrh w2, [x20,1966] mov w1, 0 ldr x0, [x19,2152] lsl w2, w2, 1 @@ -6137,7 +6292,7 @@ SupperBlkListInit: adrp x21, .LANCHOR2 mov w25, 0 add x19, x21, :lo12:.LANCHOR2 - ldrh w2, [x0,1958] + ldrh w2, [x0,1966] mov w22, w25 mov w26, 32768 ldr x0, [x19,-16] @@ -6150,20 +6305,20 @@ SupperBlkListInit: strh wzr, [x19,32] strh wzr, [x19,2016] mov w19, w25 -.L862: +.L873: add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,1956] + ldrh w1, [x0,1964] cmp w19, w1 - bge .L869 + bge .L880 mov w20, 0 - ldrh w3, [x0,1948] - ldrh w2, [x0,2018] + ldrh w3, [x0,1956] + ldrh w2, [x0,2024] mov w28, w20 mov x27, x0 -.L870: +.L881: cmp w28, w3 - bge .L871 - add x0, x27, 1976 + bge .L882 + add x0, x27, 1984 mov w1, w19 str x2, [x29,96] str x3, [x29,104] @@ -6172,54 +6327,54 @@ SupperBlkListInit: bl FtlBbmIsBadBlock ldr x3, [x29,104] ldr x2, [x29,96] - cbnz w0, .L863 + cbnz w0, .L874 add w20, w2, w20 sxth w20, w20 -.L863: +.L874: add w28, w28, 1 sxth w28, w28 - b .L870 -.L871: - cbz w20, .L865 + b .L881 +.L882: + cbz w20, .L876 sdiv w20, w26, w20 sxth w20, w20 - b .L866 -.L865: + b .L877 +.L876: ldr x0, [x21,#:lo12:.LANCHOR2] mov w1, -1 strh w1, [x0,w19,sxtw 1] -.L866: +.L877: add x0, x21, :lo12:.LANCHOR2 ldr x1, [x0,-16] smaddl x1, w19, w24, x1 strh w20, [x1,4] ldrh w1, [x0,40] cmp w19, w1 - beq .L867 + beq .L878 ldrh w1, [x0,88] cmp w19, w1 - beq .L867 + beq .L878 ldrh w0, [x0,136] cmp w19, w0 - beq .L867 + beq .L878 ldr x0, [x21,#:lo12:.LANCHOR2] ldrh w0, [x0,w19,sxtw 1] - cbnz w0, .L868 + cbnz w0, .L879 add w4, w25, 1 mov w0, w19 uxth w25, w4 bl INSERT_FREE_LIST - b .L867 -.L868: + b .L878 +.L879: add w22, w22, 1 mov w0, w19 uxth w22, w22 bl INSERT_DATA_LIST -.L867: +.L878: add w19, w19, 1 sxth w19, w19 - b .L862 -.L869: + b .L873 +.L880: add x21, x21, :lo12:.LANCHOR2 mov w0, 0 ldp x19, x20, [sp,16] @@ -6244,13 +6399,13 @@ FtlGcPageVarInit: adrp x19, .LANCHOR2 add x20, x20, :lo12:.LANCHOR0 add x19, x19, :lo12:.LANCHOR2 - ldrh w2, [x20,2022] + ldrh w2, [x20,2028] ldr x0, [x19,912] lsl w2, w2, 1 strh wzr, [x19,908] strh wzr, [x19,920] bl ftl_memset - ldrh w3, [x20,2022] + ldrh w3, [x20,2028] mov w2, 12 ldr x0, [x19,928] mov w1, 255 @@ -6295,64 +6450,67 @@ FlashLoadPhyInfoInRam: add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - adrp x20, .LANCHOR1 + adrp x19, .LANCHOR1 adrp x22, .LANCHOR0 - add x21, x20, :lo12:.LANCHOR1 + add x21, x19, :lo12:.LANCHOR1 add x22, x22, :lo12:.LANCHOR0 str x23, [sp,48] add x21, x21, 512 - mov w19, 0 + mov w20, 0 add x22, x22, 1620 -.L879: +.L890: ldrb w2, [x21] add x0, x21, 1 mov x1, x22 bl FlashMemCmp8 mov w23, w0 - cbnz w0, .L876 - add x0, x20, :lo12:.LANCHOR1 - ubfiz x19, x19, 5, 32 + cbnz w0, .L887 + add x0, x19, :lo12:.LANCHOR1 + ubfiz x20, x20, 5, 32 add x1, x0, 512 - adds x19, x1, x19 - beq .L882 - ldrb w3, [x19,22] + adds x20, x1, x20 + beq .L893 + ldrb w3, [x20,22] mov x2, 0 mov x1, x0 - b .L881 -.L876: - add w19, w19, 1 + b .L892 +.L887: + add w20, w20, 1 add x21, x21, 32 - cmp w19, 77 - bne .L879 - b .L882 -.L881: + cmp w20, 81 + bne .L890 + b .L893 +.L892: add x4, x1, x2, lsl 5 mov w0, w2 - ldrb w4, [x4,2976] + ldrb w4, [x4,3104] cmp w4, w3 - beq .L880 + beq .L891 add x2, x2, 1 cmp x2, 4 - bne .L881 + bne .L892 mov w0, w2 -.L880: - add x20, x20, :lo12:.LANCHOR1 +.L891: + add x19, x19, :lo12:.LANCHOR1 ubfiz x1, x0, 5, 32 adrp x0, .LANCHOR0 - add x2, x20, 2976 + add x2, x19, 3104 add x0, x0, :lo12:.LANCHOR0 add x1, x2, x1 add x0, x0, 88 mov w2, 32 + add x19, x19, 472 bl ftl_memcpy - add x0, x20, 472 - mov x1, x19 + mov x0, x19 + mov x1, x20 mov w2, 32 bl ftl_memcpy - b .L877 -.L882: + ldrh w0, [x19,10] + bl FlashBlockAlignInit + b .L888 +.L893: mov w23, -1 -.L877: +.L888: mov w0, w23 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -6376,14 +6534,14 @@ NandcCopy1KB: add x4, x0, 4096 add x21, x0, 512 add x2, x4, x2 - bne .L887 - cbz x3, .L888 + bne .L898 + cbz x3, .L899 mov x0, x2 mov x1, x3 mov w2, 1024 bl ftl_memcpy -.L888: - cbz x20, .L886 +.L899: + cbz x20, .L897 mov w0, 48 lsr w19, w19, 1 ldrb w1, [x20,1] @@ -6397,15 +6555,15 @@ NandcCopy1KB: ldrb w1, [x20,3] orr w0, w0, w1, lsl 24 str w0, [x21,w19,sxtw 2] - b .L886 -.L887: - cbz x3, .L891 + b .L897 +.L898: + cbz x3, .L902 mov x1, x2 mov x0, x3 mov w2, 1024 bl ftl_memcpy -.L891: - cbz x20, .L886 +.L902: + cbz x20, .L897 mov w0, 48 lsr w19, w19, 1 mul w19, w19, w0 @@ -6418,7 +6576,7 @@ NandcCopy1KB: lsr w0, w0, 24 strb w1, [x20,2] strb w0, [x20,3] -.L886: +.L897: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -6429,14 +6587,14 @@ NandcCopy1KB: .type ftl_memcpy32, %function ftl_memcpy32: mov x3, 0 -.L903: +.L914: cmp w2, w3 - bls .L905 + bls .L916 ldr w4, [x1,x3,lsl 2] str w4, [x0,x3,lsl 2] add x3, x3, 1 - b .L903 -.L905: + b .L914 +.L916: ret .size ftl_memcpy32, .-ftl_memcpy32 .align 2 @@ -6451,27 +6609,6 @@ ftl_memcmp: ret .size ftl_memcmp, .-ftl_memcmp .align 2 - .global js_hash - .type js_hash, %function -js_hash: - mov x5, x0 - mov w0, 42982 - mov x2, 0 - movk w0, 0x47c6, lsl 16 -.L908: - cmp w1, w2 - bls .L910 - lsl w3, w0, 5 - ldrb w4, [x5,x2] - add w3, w3, w0, lsr 2 - add x2, x2, 1 - add w3, w3, w4 - eor w0, w0, w3 - b .L908 -.L910: - ret - .size js_hash, .-js_hash - .align 2 .global timer_get_time .type timer_get_time, %function timer_get_time: @@ -6494,13 +6631,13 @@ FlashSramLoadStore: add x29, sp, 0 ldr x4, [x4,#:lo12:.LANCHOR4+48] add x4, x4, 4096 - cbnz w2, .L913 + cbnz w2, .L920 add x1, x4, x1 - b .L915 -.L913: + b .L922 +.L920: add x0, x4, x1 mov x1, x6 -.L915: +.L922: mov w2, w3 bl ftl_memcpy ldp x29, x30, [sp], 16 @@ -6536,8 +6673,8 @@ rk_nand_resume: .global rk_ftl_get_capacity .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: - adrp x0, .LANCHOR0+2060 - ldr w0, [x0,#:lo12:.LANCHOR0+2060] + adrp x0, .LANCHOR0+2064 + ldr w0, [x0,#:lo12:.LANCHOR0+2064] ret .size rk_ftl_get_capacity, .-rk_ftl_get_capacity .align 2 @@ -6590,42 +6727,42 @@ rknand_print_hex: add x23, x23, :lo12:.LC81 add x21, x21, :lo12:.LC82 add x24, x24, :lo12:.LC75 -.L924: +.L931: cmp x19, x26 - beq .L932 - cbnz w20, .L925 + beq .L939 + cbnz w20, .L932 mov x0, x23 mov x1, x27 mov x2, x22 mov w3, w19 bl printk -.L925: +.L932: cmp w25, 4 mov x0, x21 - bne .L926 + bne .L933 ldr w1, [x22,x19,lsl 2] - b .L931 -.L926: + b .L938 +.L933: cmp w25, 2 - bne .L928 + bne .L935 ldrsh w1, [x22,x19,lsl 1] - b .L931 -.L928: + b .L938 +.L935: ldrb w1, [x22,x19] -.L931: +.L938: bl printk add w20, w20, 1 cmp w20, 15 - bls .L929 + bls .L936 adrp x1, .LC83 mov x0, x24 add x1, x1, :lo12:.LC83 mov w20, 0 bl printk -.L929: +.L936: add x19, x19, 1 - b .L924 -.L932: + b .L931 +.L939: adrp x0, .LC75 adrp x1, .LC83 add x1, x1, :lo12:.LC83 @@ -6649,31 +6786,31 @@ HynixGetReadRetryDefault: add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR0 - stp x25, x26, [sp,64] - mov w26, w0 + stp x27, x28, [sp,80] + mov w27, w0 add x0, x19, :lo12:.LANCHOR0 add x1, x0, 760 - cmp w26, 2 + cmp w27, 2 stp x21, x22, [sp,32] stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - strb w26, [x0,760] + stp x25, x26, [sp,64] + strb w27, [x0,760] mov w0, -84 strb w4, [x1,5] strb w0, [x1,4] mov w0, -81 strb w2, [x1,6] strb w0, [x1,7] - bne .L934 + bne .L941 mov w0, -89 strb w0, [x1,4] - adrp x0, .LANCHOR1+3121 + adrp x0, .LANCHOR1+3249 mov w1, -9 - strb w1, [x0,#:lo12:.LANCHOR1+3121] - b .L989 -.L934: - cmp w26, 3 - bne .L936 + strb w1, [x0,#:lo12:.LANCHOR1+3249] + b .L1004 +.L941: + cmp w27, 3 + bne .L943 mov w0, -80 strb w0, [x1,4] mov w0, -79 @@ -6689,10 +6826,10 @@ HynixGetReadRetryDefault: mov w0, -74 strb w0, [x1,10] mov w0, -73 - b .L1022 -.L936: - cmp w26, 4 - bne .L937 + b .L1044 +.L943: + cmp w27, 4 + bne .L944 mov w5, -52 strb w5, [x1,4] mov w5, -65 @@ -6705,40 +6842,40 @@ HynixGetReadRetryDefault: mov w5, -51 strb w2, [x1,10] strb w5, [x1,8] -.L1022: - mov w27, 8 +.L1044: + mov w26, 8 strb w0, [x1,11] - mov w28, w27 - b .L935 -.L937: - cmp w26, 5 - bne .L938 + mov w28, w26 + b .L942 +.L944: + cmp w27, 5 + bne .L945 mov w0, 56 strb w0, [x1,4] mov w0, 57 strb w0, [x1,5] mov w0, 58 - mov w27, 8 + mov w26, 8 strb w0, [x1,6] mov w0, 59 strb w0, [x1,7] - b .L1021 -.L938: - cmp w26, 6 - bne .L939 + b .L1045 +.L945: + cmp w27, 6 + bne .L946 mov w0, 14 strb w0, [x1,4] mov w0, 15 strb w0, [x1,5] mov w0, 16 - mov w27, 12 + mov w26, 12 strb w0, [x1,6] mov w0, 17 strb w0, [x1,7] - b .L1021 -.L939: - cmp w26, 7 - bne .L989 + b .L1045 +.L946: + cmp w27, 7 + bne .L947 mov w0, -80 strb w0, [x1,4] mov w0, -79 @@ -6756,63 +6893,78 @@ HynixGetReadRetryDefault: mov w0, -73 strb w0, [x1,11] mov w0, -44 - mov w27, 12 + mov w26, 12 strb w0, [x1,12] mov w28, 10 mov w0, -43 strb w0, [x1,13] - b .L935 -.L989: - mov w27, 7 -.L1021: + b .L942 +.L947: + cmp w27, 8 + bne .L1004 + mov w0, 6 + strb w0, [x1,4] + mov w0, 7 + strb w0, [x1,5] + mov w0, 9 + strb w27, [x1,6] + strb w0, [x1,7] + mov w26, 50 + mov w0, 10 + mov w28, 5 + strb w0, [x1,8] + b .L942 +.L1004: + mov w26, 7 +.L1045: mov w28, 4 -.L935: - sub w0, w26, #1 +.L942: + sub w0, w27, #1 cmp w0, 1 - bhi .L1018 + bhi .L1041 adrp x22, .LANCHOR1 add x25, x19, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR1 mov w21, 0 - add x26, x25, 760 - add x4, x25, 24 - add x22, x22, 3104 -.L940: + add x4, x25, 760 + add x27, x25, 8 + add x22, x22, 3232 +.L948: ldrb w0, [x25,1845] cmp w0, w21 - bls .L947 + bls .L955 add x0, x25, x21, sxtw ldrb w0, [x0,1848] mov x23, 0 - add x20, x26, x0, lsl 6 + add x20, x4, x0, lsl 6 lsl x0, x0, 4 - add x1, x4, x0 + add x1, x27, x0 add x20, x20, 20 - ldr x24, [x4,x0] + ldr x24, [x27,x0] ldrb w0, [x1,8] mov w1, 55 add x24, x24, x0, lsl 8 -.L942: - add x0, x26, x23 +.L950: + add x0, x4, x23 str w1, [x24,2056] - str x4, [x29,128] - str x1, [x29,136] + str x1, [x29,128] + str x4, [x29,136] ldrb w0, [x0,4] str w0, [x24,2052] - mov w0, 80 - bl NandcDelayns + mov x0, 400 + bl __const_udelay ldr w0, [x24,2048] strb w0, [x20,x23] add x23, x23, 1 - ldr x1, [x29,136] + ldr x4, [x29,136] cmp w28, w23, uxtb - ldr x4, [x29,128] - bhi .L942 + ldr x1, [x29,128] + bhi .L950 mov x0, 0 -.L943: +.L951: add w2, w0, 8 mov x1, 0 -.L944: +.L952: add x3, x1, x0 add x1, x1, 4 add x3, x22, x3 @@ -6822,10 +6974,10 @@ HynixGetReadRetryDefault: add w3, w6, w3 strb w3, [x20,w2,sxtw] add w2, w2, 8 - bne .L944 + bne .L952 add x0, x0, 1 cmp x0, 4 - bne .L943 + bne .L951 add w21, w21, 1 strb wzr, [x20,16] strb wzr, [x20,24] @@ -6835,264 +6987,301 @@ HynixGetReadRetryDefault: strb wzr, [x20,48] strb wzr, [x20,41] strb wzr, [x20,49] - b .L940 -.L1018: - sub w0, w26, #3 - cmp w0, 4 - bhi .L947 - mul w25, w28, w27 - sub w23, w28, #1 - add x21, x19, :lo12:.LANCHOR0 + b .L948 +.L1041: + sub w0, w27, #3 + cmp w0, 5 + bhi .L955 + mul w25, w28, w26 + sub w24, w28, #1 + add x20, x19, :lo12:.LANCHOR0 lsl w0, w25, 4 - asr w22, w25, 2 + asr w23, w25, 1 str w0, [x29,128] - lsl w0, w22, 1 - uxtb x23, w23 + lsl w0, w23, 1 + uxtb x24, w24 str w0, [x29,124] - add x0, x21, 24 - mov w20, 0 - str x0, [x29,136] - sub w25, w26, #5 - add x0, x23, 1 + sub w0, w27, #5 + mov w21, 0 + str w0, [x29,136] + add x25, x20, 8 + add x0, x24, 1 str x0, [x29,112] -.L948: - ldrb w0, [x21,1845] - cmp w0, w20 - bhi .L988 -.L947: +.L956: + ldrb w0, [x20,1845] + cmp w0, w21 + bhi .L1002 +.L955: add x19, x19, :lo12:.LANCHOR0 ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] strb w28, [x19,761] - strb w27, [x19,762] - ldp x25, x26, [sp,64] - ldp x19, x20, [sp,16] + strb w26, [x19,762] ldp x27, x28, [sp,80] + ldp x19, x20, [sp,16] + ldp x25, x26, [sp,64] ldp x29, x30, [sp], 144 ret -.L988: - add x0, x21, x20, sxtw - ldrb w1, [x0,1848] - str x1, [x29,104] - lsl x0, x1, 4 - mov x24, x1 - ldr x1, [x29,136] - add x2, x1, x0 - ldr x0, [x1,x0] - ldrb w2, [x2,8] - add x23, x0, x2, lsl 8 +.L1002: + add x0, x20, x21, sxtw + ldrb w6, [x0,1848] + str x6, [x29,104] + lsl x0, x6, 4 + mov x22, x6 + add x1, x25, x0 + ldr x0, [x25,x0] + ldrb w2, [x1,8] + add x24, x0, x2, lsl 8 mov w0, 255 - str w0, [x23,2056] - mov w0, w24 + str w0, [x24,2056] + mov w0, w6 bl NandcWaitFlashReady - cmp w26, 7 - add x6, x21, 760 - ldr x1, [x29,104] - beq .L949 - add x1, x6, x1, lsl 6 - add x6, x1, 20 - b .L950 -.L949: + cmp w27, 7 + ldr x6, [x29,104] + bne .L957 mov x0, 160 - madd x1, x1, x0, x6 - add x6, x1, 28 -.L950: - mov w0, 54 - cmp w26, 4 - str w0, [x23,2056] - bne .L951 - mov w0, 255 - str w0, [x23,2052] - mov w0, 64 - str w0, [x23,2048] - mov w0, 204 - b .L1023 -.L951: - cmp w25, 1 - bhi .L953 - ldrb w0, [x21,764] - str w0, [x23,2052] - mov w0, 82 - b .L1024 -.L953: - mov w0, 174 - str w0, [x23,2052] - str wzr, [x23,2048] - mov w0, 176 -.L1023: - str w0, [x23,2052] - mov w0, 77 -.L1024: - str w0, [x23,2048] - mov w0, 22 - str w0, [x23,2056] - mov w0, 23 - str w0, [x23,2056] - mov w0, 4 - str w0, [x23,2056] - mov w0, 25 - str w0, [x23,2056] - cmp w26, 6 - str wzr, [x23,2056] - str wzr, [x23,2052] - str wzr, [x23,2052] - bne .L954 - mov w0, 31 - str w0, [x23,2052] - b .L955 -.L954: - str wzr, [x23,2052] -.L955: - mov w1, 2 - str w1, [x23,2052] - str wzr, [x23,2052] - mov w0, 48 - str w0, [x23,2056] - mov w0, w24 - str x6, [x29,96] - str x1, [x29,104] - bl NandcWaitFlashReady - cmp w25, 1 - mov w7, 16 - ldr x6, [x29,96] - bls .L957 - ldr x1, [x29,104] - cmp w26, 7 - mov w7, 32 - csel w7, w7, w1, eq + madd x6, x6, x0, x20 + add x6, x6, 788 + b .L958 .L957: - adrp x0, .LANCHOR4 - mov x8, 0 - add x1, x0, :lo12:.LANCHOR4 - ldr x1, [x1,56] + cmp w27, 8 + beq .L959 + add x6, x20, x6, lsl 6 + add x6, x6, 780 .L958: - ldr w9, [x23,2048] - strb w9, [x1,x8] - add x8, x8, 1 - cmp w7, w8, uxtb - bhi .L958 - cmp w26, 7 - bne .L959 - mov w7, 0 + mov w0, 54 + cmp w27, 4 + str w0, [x24,2056] + bne .L960 + mov w0, 255 + str w0, [x24,2052] + mov w0, 64 + str w0, [x24,2048] + mov w0, 204 + b .L1046 +.L960: + ldr w0, [x29,136] + cmp w0, 1 + bhi .L962 + ldrb w0, [x20,764] + str w0, [x24,2052] + mov w0, 82 + b .L1047 +.L962: + cmp w27, 7 + bne .L961 + mov w0, 174 + str w0, [x24,2052] + str wzr, [x24,2048] + mov w0, 176 +.L1046: + str w0, [x24,2052] + mov w0, 77 +.L1047: + str w0, [x24,2048] .L961: - ldrb w8, [x1] - cmp w8, 12 - beq .L960 - ldrb w8, [x1,1] - cmp w8, 10 - beq .L960 + mov w0, 22 + str w0, [x24,2056] + mov w0, 23 + str w0, [x24,2056] + mov w0, 4 + str w0, [x24,2056] + mov w0, 25 + str w0, [x24,2056] + str wzr, [x24,2056] + cmp w27, 6 + str wzr, [x24,2052] + str wzr, [x24,2052] + bne .L963 + mov w0, 31 + str w0, [x24,2052] + b .L964 +.L963: + str wzr, [x24,2052] +.L964: + mov w0, 2 + str w0, [x24,2052] + str wzr, [x24,2052] +.L1003: + mov w0, 48 + str w0, [x24,2056] + mov w0, w22 + str x6, [x29,104] + bl NandcWaitFlashReady + ldr w0, [x29,136] + ldr x6, [x29,104] + cmp w0, 1 + cset w9, ls + cmp w27, 8 + cset w8, eq + cbnz w9, .L1006 + cbnz w8, .L1006 + cmp w27, 7 + mov w7, 32 + mov w0, 2 + csel w7, w0, w7, ne + b .L965 +.L1006: + mov w7, 16 +.L965: + adrp x1, .LANCHOR4 + mov x10, 0 + add x0, x1, :lo12:.LANCHOR4 + ldr x0, [x0,56] +.L966: + ldr w11, [x24,2048] + strb w11, [x0,x10] + add x10, x10, 1 + cmp w7, w10, uxtb + bhi .L966 + cbz w8, .L967 + mov w7, 0 +.L969: + ldrb w10, [x0] + cmp w10, 50 + beq .L968 + ldrb w10, [x0,1] + cmp w10, 5 + beq .L968 add w7, w7, 1 - add x1, x1, 4 + add x0, x0, 4 uxtb w7, w7 cmp w7, 8 - bne .L961 - b .L962 -.L960: - cmp w7, 7 - bne .L963 -.L962: + bne .L969 + b .L970 +.L968: + cmp w7, 6 + bls .L971 +.L970: adrp x0, .LC84 mov w1, 0 add x0, x0, :lo12:.LC84 bl printk -.L964: - b .L964 -.L959: - cmp w26, 6 - bne .L963 +.L972: + b .L972 +.L967: + cmp w27, 7 + bne .L973 + mov w7, w8 +.L975: + ldrb w10, [x0] + cmp w10, 12 + beq .L974 + ldrb w10, [x0,1] + cmp w10, 10 + beq .L974 + add w7, w7, 1 + add x0, x0, 4 + uxtb w7, w7 + cmp w7, 8 + bne .L975 + b .L976 +.L974: + cmp w7, 7 + bne .L971 +.L976: + adrp x0, .LC84 + mov w1, 0 + add x0, x0, :lo12:.LC84 + bl printk +.L977: + b .L977 +.L973: + cmp w27, 6 + bne .L971 mov x7, 0 -.L965: - ldrb w8, [x1,x7] - cmp w8, 12 - beq .L963 - add x8, x1, x7 - ldrb w8, [x8,8] - cmp w8, 4 - beq .L963 +.L978: + ldrb w10, [x0,x7] + cmp w10, 12 + beq .L971 + add x10, x0, x7 + ldrb w10, [x10,8] + cmp w10, 4 + beq .L971 add x7, x7, 1 cmp x7, 8 - bne .L965 + bne .L978 adrp x0, .LC84 mov w1, 0 add x0, x0, :lo12:.LC84 bl printk -.L967: - b .L967 -.L963: - add x1, x0, :lo12:.LANCHOR4 - ldr x10, [x1,56] - mov x1, 0 -.L968: - ldr w2, [x29,128] - cmp w2, w1 - ble .L1025 - ldr w7, [x23,2048] - strb w7, [x10,x1] - add x1, x1, 1 - b .L968 -.L1025: - add x1, x0, :lo12:.LANCHOR4 - mov w9, w22 - mov w8, 8 - ldr x12, [x1,56] +.L980: + b .L980 .L971: - mov w1, 0 -.L970: - add w7, w1, w9 - add w1, w1, 1 - sbfiz x7, x7, 2, 32 - cmp w1, w22 - ldr w11, [x12,x7] - mvn w11, w11 - str w11, [x12,x7] - bne .L970 - ldr w1, [x29,124] - subs w8, w8, #1 - add w9, w9, w1 - bne .L971 - mov x8, 0 - mov w16, 1 -.L972: - add x1, x0, :lo12:.LANCHOR4 - ldr x15, [x1,56] - mov w1, 0 - mov w11, w1 -.L976: - lsl w9, w16, w11 - mov w13, w8 - mov w7, 16 - mov w12, 0 -.L974: - ldr w14, [x15,w13,sxtw 2] - add w13, w13, w22 - and w14, w9, w14 - cmp w14, w9 - csinc w12, w12, w12, ne - subs w7, w7, #1 - bne .L974 - cmp w12, 9 - orr w9, w1, w9 - add w11, w11, 1 - csel w1, w9, w1, cs - cmp w11, 32 - bne .L976 - str w1, [x15,x8,lsl 2] - add x8, x8, 1 - cmp w22, w8 - bgt .L972 - add x0, x0, :lo12:.LANCHOR4 - ldr x1, [x0,56] + add x0, x1, :lo12:.LANCHOR4 + ldr x11, [x0,56] mov x0, 0 - mov w8, w0 -.L979: - ldr w9, [x1,x0] - add x0, x0, 4 - cmp w9, wzr - csinc w8, w8, w8, ne - cmp x0, 32 - bne .L979 - cmp w8, 7 - ble .L980 +.L981: + ldr w2, [x29,128] + cmp w2, w0 + ble .L1049 + ldr w7, [x24,2048] + strb w7, [x11,x0] + add x0, x0, 1 + b .L981 +.L1049: + add x0, x1, :lo12:.LANCHOR4 + mov w12, w23 + mov w10, 8 + ldr x13, [x0,56] +.L984: + mov w0, 0 +.L983: + add w7, w0, w12 + add w0, w0, 1 + sbfiz x7, x7, 1, 32 + cmp w0, w23 + ldrh w14, [x13,x7] + mvn w14, w14 + strh w14, [x13,x7] + bne .L983 + ldr w0, [x29,124] + subs w10, w10, #1 + add w12, w12, w0 + bne .L984 + mov x10, 0 + mov w18, 1 +.L985: + mov w7, 0 + mov w12, w7 +.L989: + lsl w14, w18, w12 + mov w16, w10 + mov w0, 16 + mov w15, 0 +.L987: + ldrh w17, [x13,w16,sxtw 1] + add w16, w16, w23 + and w17, w17, w14 + cmp w17, w14 + csinc w15, w15, w15, ne + subs w0, w0, #1 + bne .L987 + cmp w15, 8 + bls .L988 + orr w7, w7, w14 + uxth w7, w7 +.L988: + add w12, w12, 1 + cmp w12, 16 + bne .L989 + strh w7, [x13,x10,lsl 1] + add x10, x10, 1 + cmp w23, w10 + bgt .L985 + add x1, x1, :lo12:.LANCHOR4 + mov x7, 0 + mov w10, w7 + ldr x1, [x1,56] +.L992: + ldr w12, [x1,x7] + add x7, x7, 4 + cmp w12, wzr + csinc w10, w10, w10, ne + cmp x7, 32 + bne .L992 + cmp w10, 7 + ble .L993 adrp x0, .LC85 mov w2, 1 add x0, x0, :lo12:.LC85 @@ -7102,60 +7291,92 @@ HynixGetReadRetryDefault: mov w1, 0 add x0, x0, :lo12:.LC84 bl printk -.L981: - b .L981 -.L980: - cmp w26, 6 - mov w1, 4 - beq .L982 - cmp w26, 7 - mov w1, 10 - mov w0, 8 - csel w1, w0, w1, ne -.L982: - mov w8, 0 -.L983: - mov x0, 0 -.L984: - add w9, w7, w0 - ldrb w11, [x10,x0] - add x0, x0, 1 - cmp w28, w0, uxtb - strb w11, [x6,w9,sxtw] - bhi .L984 - add w8, w8, 1 - ldr x0, [x29,112] - cmp w8, w27 - add w7, w7, w1 - add x10, x10, x0 - blt .L983 +.L994: + b .L994 +.L993: + cmp w27, 6 + mov w7, 4 + beq .L995 + cmp w27, 7 + mov w7, 10 + beq .L995 + cmp w8, wzr + mov w7, 5 + mov w1, 8 + csel w7, w1, w7, eq +.L995: + mov w10, 0 +.L996: + mov x1, 0 +.L997: + add w12, w0, w1 + ldrb w13, [x11,x1] + add x1, x1, 1 + cmp w28, w1, uxtb + strb w13, [x6,w12,sxtw] + bhi .L997 + add w10, w10, 1 + ldr x1, [x29,112] + cmp w10, w26 + add w0, w0, w7 + add x11, x11, x1 + blt .L996 mov w0, 255 - str w0, [x23,2056] - mov w0, w24 + str w0, [x24,2056] + mov w0, w22 + str x8, [x29,96] + str x9, [x29,104] bl NandcWaitFlashReady - cmp w25, 1 - bhi .L986 + ldr x9, [x29,104] + ldr x8, [x29,96] + cbz w9, .L999 mov w0, 54 - str w0, [x23,2056] + str w0, [x24,2056] adrp x0, .LANCHOR0+764 mov w1, -1 ldrb w0, [x0,#:lo12:.LANCHOR0+764] - str w0, [x23,2052] + str w0, [x24,2052] mov w0, 22 - str wzr, [x23,2048] - str w0, [x23,2056] - mov w0, w20 + str wzr, [x24,2048] + str w0, [x24,2056] + mov w0, w21 bl FlashReadCmd - b .L987 -.L986: + b .L1000 +.L999: + mov w0, 190 + cbnz w8, .L1048 mov w0, 56 - str w0, [x23,2056] -.L987: - mov w0, w24 - add w20, w20, 1 +.L1048: + str w0, [x24,2056] +.L1000: + mov w0, w22 + add w21, w21, 1 bl NandcWaitFlashReady - uxtb w20, w20 - b .L948 + uxtb w21, w21 + b .L956 +.L959: + mov w0, 120 + str w0, [x24,2056] + str wzr, [x24,2052] + mov w0, 23 + str wzr, [x24,2052] + mov w1, 25 + str wzr, [x24,2052] + add x6, x20, 788 + str w0, [x24,2056] + mov w0, 4 + str w0, [x24,2056] + str w1, [x24,2056] + mov w1, 218 + str w1, [x24,2056] + mov w1, 21 + str wzr, [x24,2056] + str wzr, [x24,2052] + str wzr, [x24,2052] + str w1, [x24,2052] + str w0, [x24,2052] + str wzr, [x24,2052] + b .L1003 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 2 .global FlashGetReadRetryDefault @@ -7164,15 +7385,15 @@ FlashGetReadRetryDefault: stp x29, x30, [sp, -16]! mov w1, w0 add x29, sp, 0 - cbz w0, .L1026 + cbz w0, .L1050 sub w2, w0, #1 - cmp w2, 6 - bhi .L1028 + cmp w2, 7 + bhi .L1052 bl HynixGetReadRetryDefault - b .L1026 -.L1028: + b .L1050 +.L1052: cmp w0, 49 - bne .L1029 + bne .L1053 adrp x0, .LANCHOR0 mov w2, 64 add x0, x0, :lo12:.LANCHOR0 @@ -7185,30 +7406,30 @@ FlashGetReadRetryDefault: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 add x1, x1, 408 - b .L1044 -.L1029: + b .L1068 +.L1053: sub w0, w0, #65 cmp w0, 1 - bls .L1035 + bls .L1059 cmp w1, 33 - bne .L1030 -.L1035: + bne .L1054 +.L1059: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 strb w1, [x0,760] mov w1, 4 - b .L1045 -.L1030: + b .L1069 +.L1054: cmp w1, 67 - beq .L1036 + beq .L1060 cmp w1, 34 - bne .L1032 -.L1036: + bne .L1056 +.L1060: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 strb w1, [x0,760] mov w1, 5 -.L1045: +.L1069: strb w1, [x0,761] mov w1, 7 strb w1, [x0,762] @@ -7217,13 +7438,13 @@ FlashGetReadRetryDefault: add x0, x0, 764 add x1, x1, 256 mov w2, 45 - b .L1044 -.L1032: + b .L1068 +.L1056: cmp w1, 68 - beq .L1037 + beq .L1061 cmp w1, 35 - bne .L1026 -.L1037: + bne .L1050 +.L1061: adrp x0, .LANCHOR0 mov w2, 95 add x0, x0, :lo12:.LANCHOR0 @@ -7236,9 +7457,9 @@ FlashGetReadRetryDefault: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 add x1, x1, 304 -.L1044: +.L1068: bl ftl_memcpy -.L1026: +.L1050: ldp x29, x30, [sp], 16 ret .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault @@ -7253,41 +7474,41 @@ NandcXferComp: adrp x20, .LANCHOR0 str x23, [sp,48] add x1, x20, :lo12:.LANCHOR0 - add x2, x1, 24 + add x2, x1, 8 stp x21, x22, [sp,32] ldr x19, [x2,x0] ldr w0, [x1,1868] cmp w0, 3 - bls .L1077 + bls .L1101 ldr w0, [x19,16] - tbz x0, 2, .L1077 + tbz x0, 2, .L1101 mov x0, x19 bl wait_for_nandc_xfer_completed ldr w21, [x19,16] ldr w0, [x19,8] ubfx x21, x21, 1, 1 str w0, [x29,64] - cbz w21, .L1048 + cbz w21, .L1072 adrp x22, .LC86 adrp x23, .LC87 mov w21, 0 add x22, x22, :lo12:.LC86 add x23, x23, :lo12:.LC87 -.L1049: +.L1073: ldr w2, [x19,28] ldr w1, [x29,64] ubfx x2, x2, 16, 5 ubfx x1, x1, 22, 6 cmp w2, w1 - bge .L1057 + bge .L1081 add x0, x20, :lo12:.LANCHOR0 ldr w0, [x0,1868] cmp w0, 5 - bhi .L1050 -.L1053: + bhi .L1074 +.L1077: add w21, w21, 1 and w0, w21, 16777215 - cbnz w0, .L1049 + cbnz w0, .L1073 ldr w2, [x19,28] mov w1, w21 ldr w3, [x29,64] @@ -7300,19 +7521,19 @@ NandcXferComp: mov w2, 4 mov w3, 512 bl rknand_print_hex - b .L1049 -.L1050: + b .L1073 +.L1074: ldr w0, [x19] str w0, [x29,72] ldr w0, [x29,72] - tbz x0, 13, .L1053 + tbz x0, 13, .L1077 ldr w0, [x29,72] - tbz x0, 17, .L1053 -.L1057: + tbz x0, 17, .L1077 +.L1081: add x19, x20, :lo12:.LANCHOR0 - add x19, x19, 1880 + add x19, x19, 1888 ldr w0, [x19,40] - cbz w0, .L1058 + cbz w0, .L1082 ldr w1, [x29,64] mov w2, 0 ldr w0, [x19,32] @@ -7325,20 +7546,20 @@ NandcXferComp: ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single - b .L1058 -.L1048: + b .L1082 +.L1072: adrp x22, .LC88 adrp x23, .LC87 add x22, x22, :lo12:.LC88 add x23, x23, :lo12:.LC87 -.L1059: +.L1083: ldr w0, [x29,64] - tbnz x0, 20, .L1085 + tbnz x0, 20, .L1109 ldr w0, [x19,8] add w21, w21, 1 str w0, [x29,64] and w0, w21, 16777215 - cbnz w0, .L1059 + cbnz w0, .L1083 ldr w2, [x29,64] mov w1, w21 ldr w3, [x19,28] @@ -7350,18 +7571,18 @@ NandcXferComp: mov w2, 4 mov w3, 512 bl rknand_print_hex - b .L1059 -.L1085: + b .L1083 +.L1109: add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,1928] - cbz w0, .L1062 + ldr w0, [x0,1936] + cbz w0, .L1086 mov x0, x19 bl NandcSendDumpDataStart -.L1062: +.L1086: add x21, x20, :lo12:.LANCHOR0 - add x21, x21, 1880 + add x21, x21, 1888 ldr w0, [x21,40] - cbz w0, .L1063 + cbz w0, .L1087 ldr w1, [x29,64] mov w2, 1 ldr w0, [x21,32] @@ -7374,22 +7595,22 @@ NandcXferComp: ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single -.L1063: +.L1087: add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,1928] - cbz w0, .L1058 + ldr w0, [x0,1936] + cbz w0, .L1082 mov x0, x19 bl NandcSendDumpDataDone -.L1058: +.L1082: add x20, x20, :lo12:.LANCHOR0 - str wzr, [x20,1920] - b .L1046 -.L1077: + str wzr, [x20,1928] + b .L1070 +.L1101: ldr w0, [x19,8] str w0, [x29,64] ldr w0, [x29,64] - tbz x0, 20, .L1077 -.L1046: + tbz x0, 20, .L1101 +.L1070: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -7411,20 +7632,20 @@ NandcXferData: uxtb w25, w0 add x0, x19, :lo12:.LANCHOR0 add x0, x0, x25, sxtw 4 - ldr x20, [x0,24] + ldr x20, [x0,8] and x0, x3, 63 uxtb w21, w1 uxtb w24, w2 mov x26, x3 mov x22, x4 - cbnz x0, .L1087 - cbnz x4, .L1088 + cbnz x0, .L1111 + cbnz x4, .L1112 add x0, x29, 112 mov w1, 255 mov w2, 64 add x22, x29, 112 bl ftl_memset -.L1088: +.L1112: mov w0, w25 mov w1, w21 mov w2, w24 @@ -7435,21 +7656,21 @@ NandcXferData: bl NandcXferStart mov w0, w25 bl NandcXferComp - cbnz w21, .L1089 + cbnz w21, .L1113 add x1, x19, :lo12:.LANCHOR0 ubfx x2, x24, 1, 7 mov w3, 128 add x2, x22, x2, lsl 2 - ldr w0, [x1,1932] + ldr w0, [x1,1940] cmp w0, 25 mov w0, 64 csel w3, w0, w3, cc mov w0, w21 -.L1091: +.L1115: cmp x22, x2 add w4, w0, w3 - beq .L1133 - ldr x5, [x1,1888] + beq .L1157 + ldr x5, [x1,1896] and x0, x0, 4294967292 add x22, x22, 4 ldr w0, [x5,x0] @@ -7461,29 +7682,29 @@ NandcXferData: lsr w0, w0, 24 strb w0, [x22,-1] mov w0, w4 - b .L1091 -.L1133: + b .L1115 +.L1157: add x0, x19, :lo12:.LANCHOR0 lsr w24, w24, 2 - ldr w5, [x0,1932] + ldr w5, [x0,1940] ldr w4, [x0,1868] mov w0, 0 mov w23, w0 -.L1093: +.L1117: cmp w0, w24 - bcs .L1089 - cbz w5, .L1089 + bcs .L1113 + cbz w5, .L1113 uxtw x1, w0 add x1, x1, 8 ldr w1, [x20,x1,lsl 2] str w1, [x29,104] ldr w1, [x29,104] - tbnz x1, 2, .L1117 + tbnz x1, 2, .L1141 ldr w3, [x29,104] ubfx x3, x3, 15, 1 - cbnz w3, .L1117 + cbnz w3, .L1141 cmp w4, 5 - bls .L1095 + bls .L1119 ldr w2, [x29,104] ubfx x6, x2, 3, 5 ldr w2, [x29,104] @@ -7496,20 +7717,20 @@ NandcXferData: orr w1, w3, w1, lsl 5 ldr w3, [x29,104] cmp w2, w1 - bls .L1096 + bls .L1120 ldr w1, [x29,104] ubfx x3, x3, 3, 5 ubfx x1, x1, 27, 1 orr w3, w3, w1, lsl 5 - b .L1097 -.L1096: + b .L1121 +.L1120: ubfx x1, x3, 16, 5 ldr w3, [x29,104] ubfx x3, x3, 29, 1 - b .L1132 -.L1095: + b .L1156 +.L1119: cmp w4, 3 - bls .L1097 + bls .L1121 ldr w2, [x29,104] ubfx x6, x2, 3, 5 ldr w2, [x29,104] @@ -7522,43 +7743,43 @@ NandcXferData: orr w1, w3, w1, lsl 5 ldr w3, [x29,104] cmp w2, w1 - bls .L1098 + bls .L1122 ubfx x1, x3, 3, 5 ldr w3, [x29,104] ubfx x3, x3, 28, 1 - b .L1132 -.L1098: + b .L1156 +.L1122: ubfx x1, x3, 16, 5 ldr w3, [x29,104] ubfx x3, x3, 30, 1 -.L1132: +.L1156: orr w3, w1, w3, lsl 5 -.L1097: +.L1121: cmp w23, w3 csel w23, w23, w3, cs - b .L1094 -.L1117: + b .L1118 +.L1141: mov w23, -1 -.L1094: +.L1118: add w0, w0, 1 - b .L1093 -.L1089: + b .L1117 +.L1113: str wzr, [x20,16] - b .L1100 -.L1087: + b .L1124 +.L1111: cmp w21, 1 - bne .L1131 + bne .L1155 mov w23, 0 mov w28, 2 -.L1101: +.L1125: cmp w23, w24 - bcs .L1134 + bcs .L1158 and w27, w23, 3 mov x3, x26 - cbz x26, .L1103 + cbz x26, .L1127 ubfiz x0, x23, 9, 23 add x3, x26, x0 -.L1103: +.L1127: cmp x22, xzr mov x0, x20 csel w4, w28, wzr, ne @@ -7577,11 +7798,11 @@ NandcXferData: bl NandcXferStart mov w0, w25 bl NandcXferComp - b .L1101 -.L1134: + b .L1125 +.L1158: mov w23, 0 - b .L1100 -.L1131: + b .L1124 +.L1155: mov w1, 0 mov x4, 0 mov w27, 0 @@ -7591,16 +7812,16 @@ NandcXferData: mov x5, x4 mov w23, w27 bl NandcXferStart -.L1106: +.L1130: cmp w27, w24 - bcs .L1100 + bcs .L1124 mov w0, w25 add w28, w27, 2 bl NandcXferComp ldr w0, [x20,32] cmp w28, w24 str w0, [x29,104] - bcs .L1107 + bcs .L1131 mov x4, 0 mov w0, w25 mov w1, 0 @@ -7608,9 +7829,9 @@ NandcXferData: and w3, w28, 3 mov x5, x4 bl NandcXferStart -.L1107: +.L1131: ldr w0, [x29,104] - tbnz x0, 2, .L1122 + tbnz x0, 2, .L1146 ldr w0, [x29,104] ubfx x1, x0, 3, 5 ldr w0, [x29,104] @@ -7618,16 +7839,16 @@ NandcXferData: orr w0, w1, w0, lsl 5 cmp w23, w0 csel w23, w23, w0, cs - b .L1108 -.L1122: + b .L1132 +.L1146: mov w23, -1 -.L1108: +.L1132: and w2, w27, 3 mov x3, x26 - cbz x26, .L1109 + cbz x26, .L1133 ubfiz x3, x27, 9, 23 add x3, x26, x3 -.L1109: +.L1133: cmp x22, xzr mov w0, 2 csel w4, w0, wzr, ne @@ -7637,23 +7858,23 @@ NandcXferData: mov w27, w28 add x4, x22, x4 bl NandcCopy1KB - b .L1106 -.L1100: - cbnz w21, .L1112 + b .L1130 +.L1124: + cbnz w21, .L1136 add x19, x19, :lo12:.LANCHOR0 ldr w0, [x19,1868] cmp w0, 5 - bls .L1112 + bls .L1136 ldr w0, [x20] mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w0, w1 cmp w1, 139264 - bne .L1112 + bne .L1136 orr w0, w0, 131072 mov w23, -1 str w0, [x20] -.L1112: +.L1136: mov w0, w23 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -7676,16 +7897,16 @@ FlashReadRawPage: str x21, [sp,32] mov x21, x2 ldrb w20, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L1136 + cbnz w19, .L1160 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w5, [x0,9] - ldr w0, [x0,12] + ldrb w5, [x0,73] + ldr w0, [x0,76] mul w0, w5, w0 cmp w1, w0 mov w0, 4 csel w20, w20, w0, cs -.L1136: +.L1160: mov w0, w19 str x4, [x29,48] str x1, [x29,56] @@ -7739,7 +7960,7 @@ FlashDdrTunningRead: cmp w0, 8 mov w0, 12 csel w22, w22, w0, cc - cbz w4, .L1139 + cbz w4, .L1163 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 @@ -7757,42 +7978,42 @@ FlashDdrTunningRead: ldrb w0, [x19,1844] bl NandcSetMode cmn w21, #1 - bne .L1140 -.L1149: + bne .L1164 +.L1173: mov w21, -1 - b .L1141 -.L1140: + b .L1165 +.L1164: adrp x0, .LC89 mov w1, w24 add x0, x0, :lo12:.LC89 mov w2, w21 bl printk cmp w21, 9 - bhi .L1142 + bhi .L1166 add x19, x19, x23, sxtw 4 - ldr x0, [x19,24] + ldr x0, [x19,8] ldr w1, [x0,3840] ldr w1, [x0] orr w1, w1, 131072 str w1, [x0] -.L1142: +.L1166: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 ldr w1, [x0,64] add w1, w1, 1 str w1, [x0,64] cmp w1, 2047 - bls .L1141 + bls .L1165 mov x27, 0 str wzr, [x0,64] mov x28, x27 -.L1139: +.L1163: mov w19, 0 mov w26, -1 mov w5, w19 mov w6, w19 mov w20, w19 -.L1147: +.L1171: mov w0, w22 str x5, [x29,104] str x6, [x29,112] @@ -7806,63 +8027,63 @@ FlashDdrTunningRead: ldr x6, [x29,112] cmp w0, w1 ldr x5, [x29,104] - bhi .L1143 + bhi .L1167 cmp w0, 2 - bhi .L1153 + bhi .L1177 add w20, w20, 1 cmp w20, 9 - bls .L1153 + bls .L1177 sub w19, w22, w20 mov w21, w0 mov w26, 0 - b .L1145 -.L1143: + b .L1169 +.L1167: cmp w6, w20 - bcs .L1154 + bcs .L1178 cmp w20, 7 sub w5, w19, w20 - bhi .L1155 + bhi .L1179 mov w6, w20 - b .L1154 -.L1153: + b .L1178 +.L1177: mov x27, 0 mov w19, w22 mov w21, w0 mov w26, 0 mov x28, x27 - b .L1144 -.L1154: + b .L1168 +.L1178: mov w20, 0 -.L1144: +.L1168: add w22, w22, 2 cmp w22, 69 - bls .L1147 -.L1145: + bls .L1171 +.L1169: cmp w6, w20 csel w19, w19, w5, cc - b .L1146 -.L1155: + b .L1170 +.L1179: mov w19, w5 -.L1146: - cbz w19, .L1148 +.L1170: + cbz w19, .L1172 adrp x0, .LC90 mov w1, w19 add x0, x0, :lo12:.LC90 bl printk mov w0, w19 bl NandcSetDdrPara -.L1148: - cbz w26, .L1141 +.L1172: + cbz w26, .L1165 adrp x0, .LC91 mov w1, w23 add x0, x0, :lo12:.LC91 mov w2, w24 bl printk - cbz w25, .L1149 + cbz w25, .L1173 ldr w0, [x29,124] lsr w0, w0, 8 bl NandcSetDdrPara -.L1141: +.L1165: mov w0, w21 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -7890,29 +8111,29 @@ FlashReadPage: bl FlashReadRawPage cmn w0, #1 mov w19, w0 - bne .L1165 + bne .L1189 adrp x21, .LANCHOR0 add x25, x21, :lo12:.LANCHOR0 - ldrb w26, [x25,16] - cbnz w26, .L1166 -.L1168: + ldrb w26, [x25,80] + cbnz w26, .L1190 +.L1192: add x21, x21, :lo12:.LANCHOR0 ldrb w0, [x21,1860] - cbz w0, .L1165 - b .L1186 -.L1166: + cbz w0, .L1189 + b .L1210 +.L1190: mov w0, w20 mov w1, w22 mov x2, x24 mov x3, x23 - strb wzr, [x25,16] + strb wzr, [x25,80] bl FlashReadRawPage - strb w26, [x25,16] + strb w26, [x25,80] cmn w0, #1 - beq .L1168 + beq .L1192 mov w19, w0 - b .L1165 -.L1186: + b .L1189 +.L1210: ldr x0, [x21,128] mov w1, w22 mov x2, x24 @@ -7923,20 +8144,20 @@ FlashReadPage: bl FlashDdrTunningRead cmn w0, #1 mov w19, w0 - beq .L1169 - ldrb w0, [x21,1936] + beq .L1193 + ldrb w0, [x21,1944] cmp w19, w0, lsr 1 - bls .L1165 -.L1169: + bls .L1189 +.L1193: lsr w0, w25, 8 bl NandcSetDdrPara -.L1165: +.L1189: adrp x21, .LANCHOR4 cmn w19, #1 add x21, x21, :lo12:.LANCHOR4 ldr x4, [x21,72] - bne .L1170 - cbz x4, .L1170 + bne .L1194 + cbz x4, .L1194 mov w1, w22 mov x2, x24 mov x3, x23 @@ -7950,10 +8171,10 @@ FlashReadPage: mov w3, w22 bl printk cmn w19, #1 - bne .L1170 - adrp x0, .LANCHOR0+120 - ldrb w0, [x0,#:lo12:.LANCHOR0+120] - cbz w0, .L1170 + bne .L1194 + adrp x0, .LANCHOR0+196 + ldrb w0, [x0,#:lo12:.LANCHOR0+196] + cbz w0, .L1194 mov w0, w20 bl flash_enter_slc_mode ldr x4, [x21,72] @@ -7965,7 +8186,7 @@ FlashReadPage: mov w19, w0 mov w0, w20 bl flash_exit_slc_mode -.L1170: +.L1194: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8003,24 +8224,24 @@ FlashDdrParaScan: mov x3, x2 bl FlashReadRawPage cmn w0, #1 - beq .L1191 + beq .L1215 cmn w22, #1 - bne .L1188 -.L1191: + bne .L1212 +.L1215: add x20, x19, :lo12:.LANCHOR0 ldrb w0, [x20,1844] - tbz x0, 0, .L1188 + tbz x0, 0, .L1212 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x20,1860] - b .L1190 -.L1188: + b .L1214 +.L1212: add x19, x19, :lo12:.LANCHOR0 mov w0, 1 strb w0, [x19,1860] -.L1190: +.L1214: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8036,7 +8257,7 @@ FlashLoadPhyInfo: add x29, sp, 0 stp x23, x24, [sp,48] adrp x23, .LANCHOR4 - mov w24, -1 + adrp x24, .LANCHOR1 strb w0, [x29,120] mov w0, 40 strb w0, [x29,121] @@ -8047,27 +8268,27 @@ FlashLoadPhyInfo: add x0, x23, :lo12:.LANCHOR4 stp x21, x22, [sp,32] stp x25, x26, [sp,64] - stp x19, x20, [sp,16] stp x27, x28, [sp,80] - adrp x22, .LANCHOR1 - adrp x25, .LANCHOR0 - add x21, x22, :lo12:.LANCHOR1 + stp x19, x20, [sp,16] + adrp x22, .LANCHOR0 + add x24, x24, :lo12:.LANCHOR1 ldr x1, [x0,56] - add x21, x21, 472 - add x25, x25, :lo12:.LANCHOR0 + add x21, x22, :lo12:.LANCHOR0 str x1, [x0,80] mov w20, 0 str wzr, [x0,88] - mov w26, 4 + mov w25, 4 mov w0, 0 - add x28, x25, 88 - ldrh w27, [x21,10] + mov w28, -1 + add x24, x24, 472 + add x27, x21, 88 + ldr w26, [x21,76] bl flash_enter_slc_mode -.L1199: +.L1223: add w0, w20, 1 mov x19, 0 str w0, [x29,104] -.L1201: +.L1225: add x0, x29, 120 ldrb w0, [x19,x0] bl FlashBchSel @@ -8079,7 +8300,7 @@ FlashLoadPhyInfo: ldr x2, [x5,56] bl FlashReadRawPage cmn w0, #1 - bne .L1200 + bne .L1224 ldr x5, [x29,96] mov w0, 0 ldr w1, [x29,104] @@ -8087,29 +8308,29 @@ FlashLoadPhyInfo: ldr x2, [x5,56] bl FlashReadRawPage cmn w0, #1 - bne .L1200 + bne .L1224 add x19, x19, 1 cmp x19, 4 - beq .L1202 - b .L1201 -.L1203: + beq .L1226 + b .L1225 +.L1227: add x0, x2, 12 mov w1, 2036 str x2, [x29,104] - mov w24, -1 - bl JSHash + mov w28, -1 + bl js_hash ldr x2, [x29,104] ldr w1, [x2,8] cmp w1, w0 - beq .L1213 -.L1202: - subs w26, w26, #1 - add w20, w20, w27 - bne .L1199 - mov w0, w26 -.L1212: + beq .L1237 +.L1226: + subs w25, w25, #1 + add w20, w20, w26 + bne .L1223 + mov w0, w25 +.L1236: bl flash_exit_slc_mode - mov w0, w24 + mov w0, w28 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -8117,56 +8338,59 @@ FlashLoadPhyInfo: ldp x27, x28, [sp,80] ldp x29, x30, [sp], 128 ret -.L1200: +.L1224: add x19, x23, :lo12:.LANCHOR4 mov w0, 20036 movk w0, 0x4e41, lsl 16 ldr x2, [x19,80] ldr w1, [x2] cmp w1, w0 - bne .L1202 - cbnz w24, .L1203 - add x22, x22, :lo12:.LANCHOR1 - ldrh w0, [x22,482] + bne .L1226 + cbnz w28, .L1227 + add x22, x22, :lo12:.LANCHOR0 + ldr w0, [x22,76] udiv w20, w20, w0 - mov w0, w24 + mov w0, w28 add w20, w20, 1 str w20, [x19,92] - b .L1212 -.L1213: + b .L1236 +.L1237: add x1, x2, 160 - mov x0, x21 + mov x0, x24 mov w2, 32 bl ftl_memcpy ldr x1, [x19,80] mov w2, 32 - mov x0, x28 + mov x0, x27 add x1, x1, 192 bl ftl_memcpy ldr x1, [x19,80] mov w2, 852 - add x0, x25, 760 + add x0, x21, 760 add x1, x1, 224 bl ftl_memcpy + ldrh w0, [x24,10] + bl FlashBlockAlignInit str w20, [x19,88] - ldr x1, [x19,80] - ldr w0, [x1,1076] - strb w0, [x25,1860] - ldrh w0, [x21,10] - udiv w0, w20, w0 - add w2, w0, 1 - cbz w0, .L1205 - str w2, [x19,92] - b .L1206 -.L1205: + ldr w1, [x21,76] + ldr x2, [x19,80] + udiv w1, w20, w1 + ldr w0, [x2,1076] + add w1, w1, 1 + strb w0, [x21,1860] + cmp w1, 1 + bls .L1229 + str w1, [x19,92] + b .L1230 +.L1229: mov w0, 2 str w0, [x19,92] -.L1206: +.L1230: add x0, x23, :lo12:.LANCHOR4 - ldrh w1, [x1,14] - mov w24, 0 + ldrh w1, [x2,14] + mov w28, 0 strb w1, [x0,96] - b .L1202 + b .L1226 .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 2 .global ToshibaReadRetrial @@ -8188,7 +8412,7 @@ ToshibaReadRetrial: bl NandcWaitFlashReady add x2, x19, :lo12:.LANCHOR0 sbfiz x0, x23, 4, 32 - add x1, x2, 24 + add x1, x2, 8 mov w22, 0 add x3, x1, x0 ldr x24, [x1,x0] @@ -8196,25 +8420,25 @@ ToshibaReadRetrial: str x0, [x29,120] add x20, x0, 8 mov x28, x0 - ldrb w0, [x2,752] + ldrb w0, [x2,120] add x20, x24, x20, lsl 8 sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 - bls .L1215 + bls .L1239 ldrb w0, [x2,1860] - cbz w0, .L1216 + cbz w0, .L1240 mov w0, w22 mov w22, 1 bl NandcSetDdrMode -.L1216: +.L1240: ubfiz x0, x28, 8, 8 mov w2, 92 add x0, x24, x0 str w2, [x0,2056] mov w2, 197 str w2, [x0,2056] -.L1215: +.L1239: ldr x0, [x29,120] mov w21, 1 mov w25, -1 @@ -8223,48 +8447,48 @@ ToshibaReadRetrial: str x0, [x29,104] ubfiz x0, x28, 8, 8 str x0, [x29,96] -.L1217: +.L1241: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 ldrb w0, [x0,97] add w0, w0, 1 cmp w21, w0 - bcs .L1242 + bcs .L1266 add x0, x19, :lo12:.LANCHOR0 mov w1, w21 - ldrb w0, [x0,752] + ldrb w0, [x0,120] sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 mov x0, x20 - bhi .L1218 + bhi .L1242 bl SandiskSetRRPara - b .L1219 -.L1218: + b .L1243 +.L1242: bl ToshibaSetRRPara -.L1219: +.L1243: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,752] + ldrb w0, [x0,120] cmp w0, 34 - bne .L1220 + bne .L1244 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 ldrb w0, [x0,97] sub w0, w0, #3 cmp w21, w0 - bne .L1220 + bne .L1244 ldr x0, [x29,104] mov w1, 179 add x0, x24, x0 str w1, [x0,8] -.L1220: +.L1244: ldr x0, [x29,96] mov w1, 38 add x0, x24, x0 str w1, [x0,2056] mov w1, 93 str w1, [x0,2056] - cbz w22, .L1221 + cbz w22, .L1245 mov w0, 4 bl NandcSetDdrMode ldr w1, [x29,116] @@ -8275,65 +8499,65 @@ ToshibaReadRetrial: mov w28, w0 mov w0, 0 bl NandcSetDdrMode - b .L1222 -.L1221: + b .L1246 +.L1245: ldr w1, [x29,116] mov w0, w23 mov x2, x27 mov x3, x26 bl FlashReadRawPage mov w28, w0 -.L1222: +.L1246: cmn w28, #1 - beq .L1223 + beq .L1247 add x0, x19, :lo12:.LANCHOR0 cmn w25, #1 csel w25, w25, w28, ne - ldrb w0, [x0,1936] + ldrb w0, [x0,1944] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L1225 + bcc .L1249 mov x26, 0 mov x27, x26 -.L1223: +.L1247: add w21, w21, 1 - b .L1217 -.L1242: + b .L1241 +.L1266: mov w28, w25 -.L1225: +.L1249: add x0, x19, :lo12:.LANCHOR0 mov w1, 0 - ldrb w0, [x0,752] + ldrb w0, [x0,120] sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 mov x0, x20 - bhi .L1227 + bhi .L1251 bl SandiskSetRRPara - b .L1228 -.L1227: + b .L1252 +.L1251: bl ToshibaSetRRPara -.L1228: +.L1252: ldr x0, [x29,120] add x19, x19, :lo12:.LANCHOR0 add x0, x0, 8 add x24, x24, x0, lsl 8 mov w0, 255 str w0, [x24,8] - ldrb w0, [x19,1936] + ldrb w0, [x19,1944] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L1229 + bcc .L1253 cmn w28, #1 mov w0, 256 csel w28, w28, w0, eq -.L1229: +.L1253: mov w0, w23 bl NandcWaitFlashReady - cbz w22, .L1230 + cbz w22, .L1254 mov w0, 4 bl NandcSetDdrMode -.L1230: +.L1254: mov w0, w28 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8365,19 +8589,19 @@ SamsungReadRetrial: mov w26, 1 add x0, x20, :lo12:.LANCHOR0 sbfiz x1, x22, 4, 32 - add x0, x0, 24 + add x0, x0, 8 mov w19, -1 add x2, x0, x1 ldr x0, [x0,x1] ldrb w21, [x2,8] add x21, x21, 8 add x21, x0, x21, lsl 8 -.L1244: +.L1268: add x0, x27, :lo12:.LANCHOR4 ldrb w0, [x0,97] add w0, w0, 1 cmp w26, w0 - bcs .L1247 + bcs .L1271 mov x0, x21 mov w1, w26 bl SamsungSetRRPara @@ -8387,34 +8611,34 @@ SamsungReadRetrial: mov x3, x23 bl FlashReadRawPage cmn w0, #1 - beq .L1245 + beq .L1269 add x1, x20, :lo12:.LANCHOR0 cmn w19, #1 csel w19, w19, w0, ne - ldrb w1, [x1,1936] + ldrb w1, [x1,1944] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L1250 + bcc .L1274 mov x23, 0 mov x24, x23 -.L1245: +.L1269: add w26, w26, 1 - b .L1244 -.L1250: + b .L1268 +.L1274: mov w19, w0 -.L1247: +.L1271: mov x0, x21 mov w1, 0 add x20, x20, :lo12:.LANCHOR0 bl SamsungSetRRPara - ldrb w0, [x20,1936] + ldrb w0, [x20,1944] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L1249 + bcc .L1273 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L1249: +.L1273: mov w0, w19 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -8440,25 +8664,25 @@ MicronReadRetrial: stp x23, x24, [sp,48] mov w28, w1 mov x26, x2 - ldrb w19, [x0,1936] + ldrb w19, [x0,1944] mov x22, x3 - ldrb w0, [x0,120] - cbnz w0, .L1257 + ldrb w0, [x0,196] + cbnz w0, .L1281 add w19, w19, w19, lsl 1 ubfx x19, x19, 2, 8 - b .L1258 -.L1257: + b .L1282 +.L1281: mov w0, 3 sdiv w19, w19, w0 -.L1258: +.L1282: adrp x27, .LC93 mov w25, 0 add x0, x27, :lo12:.LC93 str x0, [x29,152] add x20, x20, :lo12:.LANCHOR0 - add x23, x20, 24 + add x23, x20, 8 add x23, x23, x21, sxtw 4 -.L1269: +.L1293: mov w0, w21 mov w24, 0 mov w27, -1 @@ -8468,14 +8692,14 @@ MicronReadRetrial: ldr x6, [x23] mov w10, 137 lsl x8, x4, 8 -.L1259: +.L1283: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 ldrb w0, [x0,97] cmp w24, w0 - bcs .L1262 + bcs .L1286 add x2, x6, x8 - mov w0, 200 + mov x0, 1000 str x4, [x29,104] str x8, [x29,112] str w9, [x2,2056] @@ -8484,7 +8708,7 @@ MicronReadRetrial: str x9, [x29,128] str x10, [x29,136] str x2, [x29,144] - bl NandcDelayns + bl __const_udelay ldr x2, [x29,144] add w7, w24, 1 mov w0, w21 @@ -8504,47 +8728,47 @@ MicronReadRetrial: ldr x6, [x29,120] ldr x8, [x29,112] ldr x4, [x29,104] - beq .L1260 + beq .L1284 cmn w27, #1 csel w27, w27, w0, ne cmp w0, w19 - bcc .L1271 + bcc .L1295 mov x22, 0 mov x26, x22 -.L1260: +.L1284: mov w24, w7 - b .L1259 -.L1271: + b .L1283 +.L1295: mov x22, 0 mov w27, w0 mov x26, x22 -.L1262: +.L1286: add x1, x6, x4, lsl 8 mov w0, 239 str x1, [x29,144] str w0, [x1,2056] mov w0, 137 str w0, [x1,2052] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay ldr x1, [x29,144] cmp w27, w19 str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] - bcc .L1264 + bcc .L1288 cmn w27, #1 mov w0, 256 csel w27, w27, w0, eq -.L1264: +.L1288: cmn w27, #1 cset w6, eq - cbnz w6, .L1273 + cbnz w6, .L1297 cmp w27, 256 cset w1, eq - cbz w1, .L1265 -.L1273: + cbz w1, .L1289 +.L1297: ldr x0, [x29,152] mov w1, w24 mov w2, w28 @@ -8552,30 +8776,30 @@ MicronReadRetrial: mov w4, w27 str x6, [x29,144] bl printk - cbnz w25, .L1267 + cbnz w25, .L1291 ldr x6, [x29,144] - cbz w6, .L1278 - ldrb w0, [x20,120] - cbz w0, .L1278 + cbz w6, .L1302 + ldrb w0, [x20,196] + cbz w0, .L1302 mov w0, w21 mov w1, 3 mov w25, 1 bl micron_auto_read_calibration_config - b .L1269 -.L1267: + b .L1293 +.L1291: mov w0, w21 mov w1, 0 bl micron_auto_read_calibration_config cmn w27, #1 mov w0, 256 csel w27, w27, w0, eq - b .L1278 -.L1265: - cbz w25, .L1278 + b .L1302 +.L1289: + cbz w25, .L1302 mov w0, w21 mov w27, 256 bl micron_auto_read_calibration_config -.L1278: +.L1302: mov w0, w27 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8594,34 +8818,36 @@ HynixReadRetrial: stp x21, x22, [sp,32] adrp x21, .LANCHOR0 uxtb x22, w0 - stp x27, x28, [sp,80] - mov w27, w1 - add x1, x21, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 stp x23, x24, [sp,48] stp x25, x26, [sp,64] + stp x27, x28, [sp,80] stp x19, x20, [sp,16] mov x26, x2 - add x2, x1, 760 - ldrb w25, [x1,762] - add x0, x2, x22 - ldr x1, [x1,744] + add x2, x0, 760 + ldrb w25, [x0,762] + mov w27, w1 + ldr x0, [x0,744] + add x1, x2, x22 mov x23, x22 mov x24, x3 - ldrb w19, [x0,12] - ldrb w1, [x1,19] - cmp w1, 7 - bne .L1287 - ldrb w19, [x0,20] -.L1287: + ldrb w0, [x0,19] + ldrb w19, [x1,12] + sub w0, w0, #7 + uxtb w0, w0 + cmp w0, 1 + bhi .L1311 + ldrb w19, [x1,20] +.L1311: mov w0, w23 mov w28, 0 mov w20, -1 bl NandcWaitFlashReady add x4, x21, :lo12:.LANCHOR0 add x5, x4, 764 -.L1288: +.L1312: cmp w28, w25 - bcs .L1292 + bcs .L1316 add w19, w19, 1 ldrb w1, [x4,761] mov x2, x5 @@ -8641,42 +8867,44 @@ HynixReadRetrial: cmn w0, #1 ldr x5, [x29,104] ldr x4, [x29,96] - beq .L1290 - ldrb w1, [x4,1936] + beq .L1314 + ldrb w1, [x4,1944] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L1297 + bcc .L1321 mov x24, 0 mov x26, x24 -.L1290: +.L1314: add w28, w28, 1 - b .L1288 -.L1297: + b .L1312 +.L1321: mov w20, w0 -.L1292: +.L1316: add x0, x21, :lo12:.LANCHOR0 add x0, x0, 760 ldr x1, [x0,-16] add x0, x0, x22 ldrb w1, [x1,19] - cmp w1, 7 - bne .L1294 + sub w1, w1, #7 + uxtb w1, w1 + cmp w1, 1 + bhi .L1318 strb w19, [x0,20] - b .L1295 -.L1294: + b .L1319 +.L1318: strb w19, [x0,12] -.L1295: +.L1319: add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,1936] + ldrb w0, [x21,1944] add w0, w0, w0, lsl 1 cmp w20, w0, lsr 2 - bcc .L1296 + bcc .L1320 cmn w20, #1 mov w0, 256 csel w20, w20, w0, eq -.L1296: +.L1320: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8700,21 +8928,21 @@ FlashProgPage: mov w20, w1 mov x22, x2 ldrb w21, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L1304 + cbnz w19, .L1328 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,9] - ldr w2, [x0,12] + ldrb w1, [x0,73] + ldr w2, [x0,76] mul w1, w1, w2 cmp w20, w1 - bcs .L1304 - ldrb w0, [x0,8] - cbnz w0, .L1305 + bcs .L1328 + ldrb w0, [x0,72] + cbnz w0, .L1329 sub w21, w21, #2 - b .L1304 -.L1305: + b .L1328 +.L1329: mov w21, 4 -.L1304: +.L1328: mov w0, w19 str x4, [x29,56] bl NandcWaitFlashReady @@ -8778,7 +9006,7 @@ FlashSavePhyInfo: ldrb w1, [x20,1845] add x0, x0, 16 strh w1, [x0,-4] - ldrb w1, [x20,9] + ldrb w1, [x20,73] strh w1, [x0,-2] ldrb w1, [x20,1860] str w1, [x0,1060] @@ -8790,7 +9018,7 @@ FlashSavePhyInfo: add x0, x0, 80 bl ftl_memcpy ldr x0, [x19,80] - add x1, x20, 708 + add x1, x20, 712 mov w2, 32 add x0, x0, 96 bl ftl_memcpy @@ -8814,7 +9042,7 @@ FlashSavePhyInfo: ldr x20, [x19,80] mov w1, 2036 add x0, x20, 12 - bl JSHash + bl js_hash str w0, [x20,8] mov w0, 1592 str w0, [x20,4] @@ -8823,63 +9051,63 @@ FlashSavePhyInfo: mov w0, 0 mov w19, w21 bl flash_enter_slc_mode -.L1309: +.L1333: add x22, x24, :lo12:.LANCHOR0 mov w2, 0 mov w0, 0 add x20, x23, :lo12:.LANCHOR4 add w26, w19, 1 - ldr w1, [x22,12] + ldr w1, [x22,76] mul w1, w19, w1 bl FlashEraseBlock - ldr w1, [x22,12] + ldr w1, [x22,76] mov x3, 0 ldr x2, [x20,56] mov w0, 0 mul w1, w19, w1 bl FlashProgPage - ldr w1, [x22,12] + ldr w1, [x22,76] mov x3, 0 ldr x2, [x20,56] mov w0, 0 mul w1, w19, w1 add w1, w1, 1 bl FlashProgPage - ldr w1, [x22,12] + ldr w1, [x22,76] mov w0, 0 ldr x2, [x20,104] mov x3, 0 mul w1, w19, w1 bl FlashReadRawPage cmn w0, #1 - beq .L1307 + beq .L1331 ldr x25, [x20,80] mov w0, 20036 movk w0, 0x4e41, lsl 16 ldr w1, [x25] cmp w1, w0 - bne .L1307 + bne .L1331 mov w1, 2036 add x0, x25, 12 - bl JSHash + bl js_hash ldr w1, [x25,8] cmp w1, w0 - bne .L1307 - ldr w0, [x22,12] + bne .L1331 + ldr w0, [x22,76] cmp w21, 1 str w26, [x20,92] mul w19, w19, w0 str w19, [x20,88] - beq .L1310 + beq .L1334 mov w21, 1 -.L1307: +.L1331: cmp w26, 4 mov w19, w26 - bne .L1309 - b .L1308 -.L1310: + bne .L1333 + b .L1332 +.L1334: mov w21, 2 -.L1308: +.L1332: mov w0, 0 bl flash_exit_slc_mode cmp w21, wzr @@ -8913,15 +9141,12 @@ FlashReadIdbDataRaw: stp x21, x22, [sp,32] stp x23, x24, [sp,48] stp x27, x28, [sp,80] - ldr w1, [x0,1856] - ldrb w27, [x0,1936] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L1316 + ldrb w27, [x0,1944] + ldr w0, [x0,1856] + cbz w0, .L1340 mov w0, 0 bl flash_enter_slc_mode -.L1316: +.L1340: mov x0, x26 mov w1, 0 mov w2, 2048 @@ -8932,38 +9157,38 @@ FlashReadIdbDataRaw: adrp x28, .LANCHOR4 add x0, x24, :lo12:.LC94 str x0, [x29,104] -.L1317: +.L1341: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,9] + ldrb w0, [x0,73] cmp w20, w0 - bcs .L1321 + bcs .L1345 mov x22, 0 -.L1319: +.L1343: add x0, x29, 120 add x24, x19, :lo12:.LANCHOR0 add x21, x28, :lo12:.LANCHOR4 ldrb w25, [x22,x0] mov w0, w25 bl FlashBchSel - ldr w1, [x24,12] + ldr w1, [x24,76] mov w0, 0 ldr x2, [x21,56] mov x3, 0 mul w1, w20, w1 bl FlashReadRawPage cmn w0, #1 - bne .L1318 + bne .L1342 add x22, x22, 1 cmp x22, 4 - bne .L1319 - b .L1320 -.L1318: + bne .L1343 + b .L1344 +.L1342: ldr x0, [x21,56] ldr w1, [x0] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 - bne .L1320 + bne .L1344 ldr x0, [x29,104] mov w1, w25 bl printk @@ -8973,30 +9198,27 @@ FlashReadIdbDataRaw: bl ftl_memcpy ldr x0, [x21,56] ldr w0, [x0,512] - strb w0, [x24,9] + strb w0, [x24,73] ldr w0, [x21,92] cmp w0, w20 - bls .L1324 + bls .L1348 mov w23, 0 str w20, [x21,92] bl FlashSavePhyInfo -.L1320: +.L1344: add w20, w20, 1 - b .L1317 -.L1324: + b .L1341 +.L1348: mov w23, 0 -.L1321: +.L1345: mov w0, w27 add x19, x19, :lo12:.LANCHOR0 bl FlashBchSel - ldr w1, [x19,1856] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L1326 + ldr w0, [x19,1856] + cbz w0, .L1352 mov w0, 0 bl flash_exit_slc_mode -.L1326: +.L1352: mov w0, w23 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -9019,20 +9241,19 @@ FlashInit: mov x23, x0 mov w0, 32768 stp x19, x20, [sp,16] - stp x25, x26, [sp,64] stp x27, x28, [sp,80] + stp x25, x26, [sp,64] bl ftl_malloc str x0, [x22,56] mov w0, 32768 adrp x19, .LANCHOR0 add x20, x19, :lo12:.LANCHOR0 - adrp x25, .LC95 + adrp x24, .LC95 bl ftl_malloc str x0, [x22,104] mov w0, 4096 - add x24, x20, 24 - mov w27, 0 - mov w28, 44 + mov w27, 144 + mov w28, 239 bl ftl_malloc str x0, [x22,112] mov w0, 32768 @@ -9042,214 +9263,252 @@ FlashInit: bl ftl_malloc str x0, [x22,128] mov w0, 128 - str w0, [x20,12] + str w0, [x20,76] mov w0, 60 mov w1, 50 strb w0, [x22,98] mov x0, x23 strb wzr, [x20,1860] - strb w1, [x20,9] - strb wzr, [x20,8] - add x20, x20, 1620 + add x23, x20, 8 + strb w1, [x20,73] strb w1, [x22,96] - mov x26, x20 str wzr, [x22,92] str wzr, [x22,64] + strb wzr, [x20,72] + add x20, x20, 1620 + strb wzr, [x22,136] bl NandcInit - add x0, x25, :lo12:.LC95 + add x0, x24, :lo12:.LC95 + mov w22, 0 str x0, [x29,104] -.L1333: - uxtb w25, w27 + mov x26, x20 +.L1364: + ldrb w2, [x23,8] + uxtb w25, w22 mov w0, w25 + str x2, [x29,96] + ldr x24, [x23] bl FlashReset - ldrb w23, [x24,8] - ldr x22, [x24] mov w0, w25 - ubfiz x23, x23, 8, 8 - add x22, x22, x23 bl NandcFlashCs - mov w0, 144 - str w0, [x22,2056] - mov w0, 200 - str wzr, [x22,2052] - bl NandcDelayns - ldr w0, [x22,2048] + ldr x2, [x29,96] + mov x0, 1000 + ubfiz x2, x2, 8, 8 + add x24, x24, x2 + str w27, [x24,2056] + str wzr, [x24,2052] + bl __const_udelay + ldr w0, [x24,2048] + uxtb w0, w0 strb w0, [x20] - ldr w0, [x22,2048] - strb w0, [x20,1] - ldr w0, [x22,2048] - strb w0, [x20,2] - ldr w0, [x22,2048] - strb w0, [x20,3] - ldr w0, [x22,2048] - strb w0, [x20,4] - ldr w0, [x22,2048] - strb w0, [x20,5] + cmp w0, 44 + ldr w2, [x24,2048] + strb w2, [x20,1] + ldr w2, [x24,2048] + strb w2, [x20,2] + ldr w2, [x24,2048] + strb w2, [x20,3] + ldr w2, [x24,2048] + strb w2, [x20,4] + ldr w2, [x24,2048] + strb w2, [x20,5] + bne .L1359 + str w28, [x24,2056] + mov w0, 1 + str w0, [x24,2052] + mov x0, 1000 + bl __const_udelay + mov w0, 4 + str w0, [x24,2048] + str wzr, [x24,2048] + str wzr, [x24,2048] + str wzr, [x24,2048] +.L1359: mov w0, w25 bl NandcFlashDeCs ldrb w2, [x20] sub w0, w2, #1 uxtb w0, w0 cmp w0, 253 - bhi .L1329 + bhi .L1360 ldr x0, [x29,104] - add w1, w27, 1 + add w1, w22, 1 ldrb w3, [x20,1] ldrb w4, [x20,2] ldrb w5, [x20,3] ldrb w6, [x20,4] ldrb w7, [x20,5] bl printk -.L1329: - cbnz w27, .L1330 +.L1360: + cbnz w22, .L1361 ldrb w0, [x26] sub w0, w0, #1 uxtb w0, w0 cmp w0, 253 - bhi .L1378 + bhi .L1415 ldrb w0, [x26,1] cmp w0, 255 - beq .L1378 -.L1330: + beq .L1415 +.L1361: ldrb w0, [x20] cmp w0, 181 - bne .L1332 - strb w28, [x20] -.L1332: - add w27, w27, 1 - add x24, x24, 16 - cmp w27, 4 + bne .L1363 + mov w0, 44 + strb w0, [x20] +.L1363: + add w22, w22, 1 + add x23, x23, 16 + cmp w22, 4 add x20, x20, 8 - bne .L1333 + bne .L1364 add x0, x19, :lo12:.LANCHOR0 ldrb w1, [x0,1620] cmp w1, 173 - beq .L1334 + beq .L1365 ldr w0, [x0,1864] bl NandcSetDdrMode -.L1334: - add x22, x19, :lo12:.LANCHOR0 +.L1365: + add x20, x19, :lo12:.LANCHOR0 mov w1, 0 - add x0, x22, 760 + add x0, x20, 760 mov w2, 852 - adrp x20, .LANCHOR1 bl ftl_memset - strb wzr, [x22,16] - add x0, x20, :lo12:.LANCHOR1 + strb wzr, [x20,80] + adrp x1, .LANCHOR1 + ldr w4, [x20,1872] + add x0, x1, :lo12:.LANCHOR1 add x0, x0, 472 - str x0, [x22,744] - ldrb w0, [x22,1621] - add x22, x22, 1620 + str x0, [x20,744] + mov w0, 12336 + movk w0, 0x5638, lsl 16 + cmp w4, w0 + bne .L1366 + mov w0, 1 + str w0, [x20,1856] +.L1366: + add x3, x19, :lo12:.LANCHOR0 + add x3, x3, 1620 + ldrb w0, [x3,1] cmp w0, 218 - cset w2, eq + cset w6, eq + cmp w0, 241 + cset w5, eq cmp w0, 161 - cset w1, eq - orr w1, w2, w1 - cbnz w1, .L1335 - and w1, w0, -33 - cmp w1, 209 - beq .L1335 + cset w2, eq + orr w2, w5, w2 + orr w2, w6, w2 + cbnz w2, .L1367 + and w2, w0, -3 + cmp w2, 209 + beq .L1367 cmp w0, 220 - bne .L1336 - ldrb w1, [x22,3] - cmp w1, 149 - bne .L1336 -.L1335: - add x1, x19, :lo12:.LANCHOR0 - mov w3, 1 - mov w4, 16 - add x5, x1, 1620 - strb w3, [x1,8] + bne .L1368 + ldrb w2, [x3,3] + cmp w2, 149 + bne .L1368 +.L1367: + add x2, x19, :lo12:.LANCHOR0 add x3, x21, :lo12:.LANCHOR4 - strb w4, [x1,9] - strb w4, [x3,98] - ldrb w4, [x1,1620] - add x1, x20, :lo12:.LANCHOR1 - cmp w4, 152 - strb w4, [x1,3137] - strb w0, [x1,3138] - bne .L1337 - ldrsb w1, [x5,4] - tbnz w1, #31, .L1337 - mov w1, 24 - strb w1, [x3,98] -.L1337: - add x1, x19, :lo12:.LANCHOR0 - ldr w3, [x1,1856] - cmp w3, 2049 - beq .L1380 - mov w1, 12336 - movk w1, 0x5638, lsl 16 - cmp w3, w1 - bne .L1338 -.L1380: - add x1, x21, :lo12:.LANCHOR4 + mov w7, 16 + mov w5, 1 + add x8, x2, 1620 + strb w7, [x2,73] + strb w5, [x2,72] + strb w7, [x3,98] + ldrb w7, [x2,1620] + add x2, x1, :lo12:.LANCHOR1 + cmp w7, 152 + strb w7, [x2,3265] + strb w0, [x2,3266] + bne .L1370 + ldrsb w2, [x8,4] + tbnz w2, #31, .L1371 + mov w2, 24 + strb w2, [x3,98] +.L1370: + cmp w4, 2049 + beq .L1418 + mov w2, 12336 + movk w2, 0x5638, lsl 16 + cmp w4, w2 + bne .L1373 +.L1418: + add x2, x21, :lo12:.LANCHOR4 mov w3, 16 - strb w3, [x1,98] -.L1338: - cbz w2, .L1340 - add x0, x20, :lo12:.LANCHOR1 - mov w1, 2048 - strh w1, [x0,3150] - mov w1, -38 - b .L1413 -.L1340: + strb w3, [x2,98] +.L1373: + cbz w6, .L1375 + add x0, x1, :lo12:.LANCHOR1 + mov w2, 2048 + strh w2, [x0,3278] + mov w2, -38 + b .L1459 +.L1375: cmp w0, 220 - bne .L1341 - add x0, x20, :lo12:.LANCHOR1 - mov w1, 4096 - strh w1, [x0,3150] - mov w1, -36 -.L1413: - strb w1, [x0,3138] -.L1341: - add x20, x20, :lo12:.LANCHOR1 + bne .L1377 + add x0, x1, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x0,3278] + mov w2, -36 +.L1459: + strb w2, [x0,3266] + b .L1376 +.L1377: + cmp w0, 211 + bne .L1376 + add x0, x1, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x0,3278] + mov w2, 2 + strb w2, [x0,3277] +.L1376: + add x20, x1, :lo12:.LANCHOR1 add x0, x19, :lo12:.LANCHOR0 - add x1, x20, 3008 + add x1, x20, 3136 mov w2, 32 add x0, x0, 88 bl ftl_memcpy add x0, x20, 472 - add x1, x20, 3136 + add x1, x20, 3264 mov w2, 32 bl ftl_memcpy -.L1336: +.L1368: add x20, x19, :lo12:.LANCHOR0 - ldrb w0, [x20,8] - cbnz w0, .L1342 + ldrb w0, [x20,72] + cbnz w0, .L1378 bl FlashLoadPhyInfoInRam - cbnz w0, .L1344 + cbnz w0, .L1380 ldr x0, [x20,744] ldrb w1, [x0,17] and w0, w1, 7 strb w0, [x20,1844] - tbnz x1, 0, .L1344 + tbnz x1, 0, .L1380 mov w1, 1 strb w1, [x20,1860] bl FlashSetInterfaceMode ldrb w0, [x20,1844] bl NandcSetMode -.L1344: +.L1380: add x20, x19, :lo12:.LANCHOR0 ldr x0, [x20,744] ldrb w0, [x0,26] - strb w0, [x20,120] + strb w0, [x20,196] bl FlashLoadPhyInfo - cbz w0, .L1342 + cbz w0, .L1378 ldr w0, [x20,1864] - cbz w0, .L1347 + cbz w0, .L1383 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 - b .L1414 -.L1347: + b .L1456 +.L1383: ldrb w0, [x20,1844] bl FlashSetInterfaceMode ldrb w0, [x20,1844] -.L1414: +.L1456: bl NandcSetMode bl FlashLoadPhyInfo - cbz w0, .L1342 + cbz w0, .L1378 mov w0, 1 add x20, x19, :lo12:.LANCHOR0 bl FlashSetInterfaceMode @@ -9262,7 +9521,7 @@ FlashInit: bl printk bl FlashLoadPhyInfoInRam cmn w0, #1 - beq .L1331 + beq .L1432 bl FlashDieInfoInit ldr x0, [x20,744] ldrb w0, [x0,19] @@ -9273,42 +9532,42 @@ FlashInit: ldrb w2, [x0,9] add w1, w1, 4095 cmp w2, w1, lsr 12 - blt .L1349 + blt .L1385 ldrh w1, [x0,14] add w1, w1, 255 cmp w2, w1, lsr 8 - bge .L1350 -.L1349: + bge .L1386 +.L1385: ldrh w1, [x0,14] and w1, w1, -256 strh w1, [x0,14] -.L1350: +.L1386: add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,1844] tst w0, 6 - beq .L1351 + beq .L1387 bl FlashSavePhyInfo add x1, x21, :lo12:.LANCHOR4 mov w0, 0 ldr w1, [x1,88] bl FlashDdrParaScan -.L1351: +.L1387: bl FlashSavePhyInfo -.L1342: +.L1378: add x20, x19, :lo12:.LANCHOR0 add x22, x21, :lo12:.LANCHOR4 ldr x2, [x20,744] str xzr, [x22,72] ldrb w0, [x2,26] - strb w0, [x20,120] + strb w0, [x20,196] ldrh w0, [x2,16] ldrh w3, [x2,10] ubfx x1, x0, 7, 1 - strb w1, [x20,16] + strb w1, [x20,80] ubfx x1, x0, 3, 1 - strb w1, [x22,136] + strb w1, [x22,137] ubfx x1, x0, 4, 1 - strb w1, [x20,1937] + strb w1, [x20,1945] ldrb w1, [x2,12] ubfx x0, x0, 8, 3 strb w0, [x20,1844] @@ -9318,85 +9577,91 @@ FlashInit: bl FlashDieInfoInit ldr x0, [x20,744] ldrh w1, [x0,16] - tbz x1, 6, .L1353 + tbz x1, 6, .L1389 ldrb w0, [x0,19] ldrb w1, [x20,762] strb w1, [x22,97] sub w1, w0, #1 ldrb w2, [x20,761] uxtb w1, w1 - strb w0, [x20,752] - strb w2, [x20,753] - cmp w1, 6 - bhi .L1354 + strb w0, [x20,120] + strb w2, [x20,121] + cmp w1, 7 + bhi .L1390 adrp x1, HynixReadRetrial + cmp w0, 8 add x1, x1, :lo12:HynixReadRetrial str x1, [x22,72] sub w1, w0, #5 + cset w2, eq uxtb w1, w1 cmp w1, 1 - bhi .L1355 - mov w1, 1 - str w1, [x20,1928] - b .L1356 -.L1355: + bls .L1419 + cbz w2, .L1391 +.L1419: + add x1, x19, :lo12:.LANCHOR0 + mov w3, 1 + str w3, [x1,1936] +.L1391: cmp w0, 7 - add x20, x20, 788 - beq .L1357 -.L1356: - add x20, x19, :lo12:.LANCHOR0 - add x20, x20, 780 -.L1357: - mov x1, 0 - mov w2, w1 -.L1359: - ldrsb w3, [x20,x1] - add x1, x1, 1 - cmp w3, wzr - csinc w2, w2, w2, ne - cmp x1, 32 - bne .L1359 - cmp w2, 27 - bls .L1353 + add x1, x19, :lo12:.LANCHOR0 + beq .L1417 + cbnz w2, .L1417 + add x1, x1, 780 + b .L1394 +.L1417: + add x1, x1, 788 +.L1394: + mov x2, 0 + mov w3, w2 +.L1396: + ldrsb w4, [x1,x2] + add x2, x2, 1 + cmp w4, wzr + csinc w3, w3, w3, ne + cmp x2, 32 + bne .L1396 + cmp w3, 27 + bls .L1389 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L1353 -.L1354: + b .L1389 +.L1390: sub w1, w0, #17 uxtb w1, w1 cmp w1, 2 - bhi .L1361 + bhi .L1398 adrp x1, MicronReadRetrial cmp w0, 19 add x1, x1, :lo12:MicronReadRetrial str x1, [x22,72] - beq .L1362 + beq .L1399 mov w0, 7 - b .L1415 -.L1362: + b .L1457 +.L1399: mov w0, 15 -.L1415: +.L1457: strb w0, [x22,97] - b .L1353 -.L1361: + b .L1389 +.L1398: sub w1, w0, #65 uxtb w1, w1 cmp w1, 1 - bls .L1381 + bls .L1420 cmp w0, 33 - bne .L1363 -.L1381: + bne .L1400 +.L1420: add x0, x21, :lo12:.LANCHOR4 adrp x1, ToshibaReadRetrial add x1, x1, :lo12:ToshibaReadRetrial mov w2, 4 str x1, [x0,72] add x1, x19, :lo12:.LANCHOR0 - strb w2, [x1,753] + strb w2, [x1,121] mov w1, 7 strb w1, [x0,97] - b .L1353 -.L1363: + b .L1389 +.L1400: sub w1, w0, #67 uxtb w1, w1 cmp w1, 1 @@ -9404,89 +9669,89 @@ FlashInit: cset w2, ls uxtb w1, w1 cmp w1, 1 - bls .L1382 - cbz w2, .L1365 -.L1382: + bls .L1421 + cbz w2, .L1402 +.L1421: add x3, x21, :lo12:.LANCHOR4 adrp x1, ToshibaReadRetrial add x1, x1, :lo12:ToshibaReadRetrial cmp w0, 35 str x1, [x3,72] - beq .L1367 + beq .L1404 cmp w0, 68 - beq .L1367 + beq .L1404 mov w0, 7 strb w0, [x3,97] - b .L1368 -.L1367: + b .L1405 +.L1404: add x0, x21, :lo12:.LANCHOR4 mov w1, 17 strb w1, [x0,97] -.L1368: +.L1405: add x0, x19, :lo12:.LANCHOR0 mov w1, 4 - cbnz w2, .L1416 + cbnz w2, .L1458 mov w1, 5 -.L1416: - strb w1, [x0,753] - b .L1353 -.L1365: +.L1458: + strb w1, [x0,121] + b .L1389 +.L1402: cmp w0, 49 - bne .L1353 + bne .L1389 adrp x0, SamsungReadRetrial add x0, x0, :lo12:SamsungReadRetrial str x0, [x22,72] -.L1353: +.L1389: add x0, x19, :lo12:.LANCHOR0 mov w1, 12336 movk w1, 0x5638, lsl 16 - ldr w2, [x0,1856] + ldr w2, [x0,1872] cmp w2, w1 - bne .L1370 - ldrb w1, [x0,120] - cbz w1, .L1370 + bne .L1407 + ldrb w1, [x0,196] + cbz w1, .L1407 ldr x0, [x0,744] strb wzr, [x0,18] -.L1370: +.L1407: add x0, x19, :lo12:.LANCHOR0 ldrb w1, [x0,1620] cmp w1, 44 - bne .L1371 + bne .L1408 ldrb w1, [x0,1860] - cbz w1, .L1371 + cbz w1, .L1408 mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 - bne .L1372 - ldrb w0, [x0,120] - cbnz w0, .L1371 -.L1372: + bne .L1409 + ldrb w0, [x0,196] + cbnz w0, .L1408 +.L1409: add x0, x19, :lo12:.LANCHOR0 strb wzr, [x0,1860] mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode -.L1371: - mov w0, 0 - bl flash_enter_slc_mode +.L1408: add x1, x19, :lo12:.LANCHOR0 ldrb w0, [x1,1844] tst w0, 6 - beq .L1373 + beq .L1410 ldrb w1, [x1,1860] - cbnz w1, .L1374 - tbnz x0, 0, .L1373 -.L1374: + cbnz w1, .L1411 + tbnz x0, 0, .L1410 +.L1411: + mov w0, 0 add x21, x21, :lo12:.LANCHOR4 - mov w0, 0 + bl flash_enter_slc_mode ldr w1, [x21,88] - bl FlashDdrParaScan -.L1373: - add x19, x19, :lo12:.LANCHOR0 mov w0, 0 - mov w20, 16 + bl FlashDdrParaScan + mov w0, 0 bl flash_exit_slc_mode +.L1410: + add x19, x19, :lo12:.LANCHOR0 + mov w20, 16 ldr x0, [x19,744] ldrb w0, [x0,20] bl FlashBchSel @@ -9494,7 +9759,7 @@ FlashInit: add x0, x0, :lo12:.LANCHOR2 add x0, x0, 2352 bl FlashReadIdbDataRaw - strb w20, [x19,9] + strb w20, [x19,73] mov w0, 18928 movk w0, 0x2, lsl 16 bl FlashTimingCfg @@ -9524,31 +9789,35 @@ FlashInit: mul w2, w2, w5 mov w5, 512 strh w5, [x19,192] - ldrb w5, [x19,9] + ldrb w5, [x19,73] strh w5, [x19,194] uxth w2, w2 - ldrb w5, [x19,8] + ldrb w5, [x19,72] strh w2, [x19,190] cmp w5, 1 - bne .L1376 + bne .L1413 lsl w2, w2, 1 lsr w4, w4, 1 lsl w3, w3, 1 strh w2, [x19,190] - strb w20, [x19,9] + strb w20, [x19,73] mov w2, 8 strh w4, [x19,182] strh w3, [x19,188] strh w2, [x19,194] -.L1376: +.L1413: ldrb w0, [x1,20] bl FlashBchSel bl ftl_flash_suspend mov w0, 0 - b .L1331 -.L1378: + b .L1432 +.L1415: mov w0, -2 -.L1331: + b .L1432 +.L1371: + strb w5, [x3,136] + b .L1370 +.L1432: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9563,65 +9832,66 @@ FlashInit: FlashPageProgMsbFFData: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w2 - adrp x2, .LANCHOR0 stp x21, x22, [sp,32] - uxtb w21, w0 - add x0, x2, :lo12:.LANCHOR0 + adrp x21, .LANCHOR0 stp x23, x24, [sp,48] + uxtb w23, w0 + add x0, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp,16] stp x25, x26, [sp,64] - mov x23, x2 - ldr x3, [x0,744] - ldrb w4, [x0,120] - ldrb w3, [x3,19] - cbz w4, .L1418 - ldr w2, [x0,1856] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w2, w0 - beq .L1417 -.L1418: - sub w2, w3, #5 + uxth w19, w2 + ldr x2, [x0,744] + ldrb w22, [x2,19] + ldrb w2, [x0,196] + cbz w2, .L1461 + ldr w0, [x0,1856] + cbnz w0, .L1460 +.L1461: + sub w0, w22, #5 + uxtb w0, w0 + cmp w0, 3 + bls .L1462 + cmp w22, 68 + beq .L1462 + sub w2, w22, #19 + and w2, w2, -17 uxtb w2, w2 - cmp w2, 2 - bls .L1419 - cmp w3, 68 - beq .L1419 - sub w3, w3, #19 - and w3, w3, -17 - uxtb w3, w3 - cbnz w3, .L1417 -.L1419: + cbnz w2, .L1460 +.L1462: adrp x20, .LANCHOR2 - mov w24, w1 + mov w25, w1 add x20, x20, :lo12:.LANCHOR2 - mov w25, 65535 + mov w26, 65535 add x20, x20, 988 - adrp x26, .LANCHOR4 -.L1421: - add x0, x23, :lo12:.LANCHOR0 + adrp x24, .LANCHOR4 +.L1464: + add x0, x21, :lo12:.LANCHOR0 ldr x0, [x0,744] ldrh w0, [x0,10] cmp w0, w19 - bls .L1417 + bls .L1460 ldrh w0, [x20,w19,sxtw 1] - cmp w0, w25 - bne .L1417 - add x22, x26, :lo12:.LANCHOR4 + cmp w0, w26 + bne .L1460 + add x0, x24, :lo12:.LANCHOR4 + cmp w22, 8 + mov w1, 0 + ldr x0, [x0,104] + beq .L1474 mov w1, 255 +.L1474: mov w2, 32768 - ldr x0, [x22,104] bl ftl_memset - ldr x2, [x22,104] - add w1, w19, w24 - mov w0, w21 - mov x3, 0 + add x0, x24, :lo12:.LANCHOR4 + add w1, w19, w25 add w19, w19, 1 - bl FlashProgPage + ldr x2, [x0,104] + mov w0, w23 uxth w19, w19 - b .L1421 -.L1417: + mov x3, x2 + bl FlashProgPage + b .L1464 +.L1460: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9633,71 +9903,101 @@ FlashPageProgMsbFFData: .global FlashReadSlc2KPages .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x25, x26, [sp,64] - mov w25, w1 - adrp x1, .LANCHOR1+481 - stp x21, x22, [sp,32] stp x23, x24, [sp,48] - adrp x21, .LANCHOR0 - adrp x23, .LC97 - adrp x24, .LC99 - ldrb w26, [x1,#:lo12:.LANCHOR1+481] + adrp x23, .LANCHOR0 + mov w24, w1 stp x19, x20, [sp,16] - stp x27, x28, [sp,80] + adrp x1, .LANCHOR1+481 mov x19, x0 - mov w27, w2 + add x0, x23, :lo12:.LANCHOR0 + str x0, [x29,120] + adrp x0, .LC97 + str w2, [x29,116] + add x0, x0, :lo12:.LC97 + str x0, [x29,104] + stp x25, x26, [sp,64] + adrp x0, .LC99 + ldrb w25, [x1,#:lo12:.LANCHOR1+481] + stp x21, x22, [sp,32] + add x0, x0, :lo12:.LC99 mov w22, 0 - add x21, x21, :lo12:.LANCHOR0 - add x23, x23, :lo12:.LC97 - add x24, x24, :lo12:.LC99 -.L1427: - cmp w22, w25 - beq .L1461 - mov w1, w27 - sub w4, w25, w22 + stp x27, x28, [sp,80] + str x0, [x29,96] +.L1476: + cmp w22, w24 + beq .L1540 + ldr w1, [x29,116] + sub w4, w24, w22 mov x0, x19 - add x2, x29, 124 - add x3, x29, 120 + add x2, x29, 140 + add x3, x29, 136 + adrp x21, .LANCHOR0 bl LogAddr2PhyAddr - ldr w0, [x29,120] - adrp x5, .LANCHOR0 - ldrb w1, [x21,1845] + ldr x1, [x29,120] + ldr w0, [x29,136] + ldrb w1, [x1,1845] cmp w0, w1 - bcc .L1428 + bcc .L1477 mov w0, -1 str w0, [x19] - b .L1429 -.L1428: - add x0, x21, x0, uxtw - ldrb w28, [x0,1848] - str x5, [x29,96] - mov w0, w28 + b .L1478 +.L1477: + ldr x1, [x29,120] + add x0, x1, x0, uxtw + ldrb w20, [x0,1848] + mov w23, 0 + adrp x27, .LANCHOR4 + mov w28, 256 + mov w0, w20 bl NandcWaitFlashReady - mov w0, w28 + mov w0, w20 bl NandcFlashCs - ldr w1, [x29,124] - mov w0, w28 +.L1479: + ldr w1, [x29,140] + mov w0, w20 bl FlashReadCmd - mov w0, w28 + mov w0, w20 bl NandcWaitFlashReady ldr x3, [x19,8] - mov w1, 0 + mov w0, w20 ldr x4, [x19,16] - mov w2, w26 - mov w0, w28 + mov w1, 0 + mov w2, w25 bl NandcXferData - mov w6, w0 - ldr w2, [x21,12] - mov w0, w28 - ldr w1, [x29,124] - str x6, [x29,104] + mov w26, w0 + add x0, x27, :lo12:.LANCHOR4 + ldrb w0, [x0,136] + cbz w0, .L1480 + mov w0, w20 + bl flash_read_ecc + cmp w0, 5 + csel w26, w26, w28, ls +.L1480: + cmn w26, #1 + bne .L1481 + cmp w23, 9 + bhi .L1481 + add w23, w23, 1 + b .L1479 +.L1481: + cmp w23, wzr + mov w27, 256 + csel w26, w26, w27, eq + mov w23, 0 +.L1483: + add x0, x21, :lo12:.LANCHOR0 + ldr w1, [x29,140] + ldr w2, [x0,76] + mov w0, w20 add w1, w2, w1 bl FlashReadCmd + mov w0, w20 + bl NandcWaitFlashReady ldr x0, [x19,8] mov w1, 0 - mov w2, w26 + mov w2, w25 cmp x0, xzr add x3, x0, 2048 ldr x0, [x19,16] @@ -9705,81 +10005,97 @@ FlashReadSlc2KPages: add x4, x0, 8 cmp x0, xzr csel x4, x4, xzr, ne - mov w0, w28 + mov w0, w20 bl NandcXferData - mov w20, w0 - mov w0, w28 + mov w28, w0 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldrb w0, [x0,136] + cbz w0, .L1486 + mov w0, w20 + bl flash_read_ecc + cmp w0, 5 + csel w28, w28, w27, ls +.L1486: + cmn w28, #1 + bne .L1487 + cmp w23, 9 + bhi .L1487 + add w23, w23, 1 + b .L1483 +.L1487: + cmp w23, wzr + mov w0, w20 + mov w27, 256 + csel w28, w28, w27, eq bl NandcFlashDeCs - ldr x5, [x29,96] - ldr x6, [x29,104] - add x0, x5, :lo12:.LANCHOR0 - cmp w20, w6 - csel w3, w20, w6, cs - ldrb w0, [x0,1936] + add x0, x21, :lo12:.LANCHOR0 + cmp w28, w26 + csel w28, w28, w26, cs + ldrb w0, [x0,1944] add w0, w0, w0, lsl 1 - cmp w3, w0, lsr 2 - bls .L1432 - cmn w3, #1 - mov w0, 256 - csel w3, w3, w0, eq -.L1432: - cmp w3, 256 - beq .L1443 - cmn w3, #1 - bne .L1433 -.L1443: - str w3, [x19] - b .L1435 -.L1433: + cmp w28, w0, lsr 2 + bls .L1489 + cmn w28, #1 + csel w28, w28, w27, eq +.L1489: + cmp w28, 256 + beq .L1500 + cmn w28, #1 + bne .L1490 +.L1500: + str w28, [x19] + b .L1492 +.L1490: str wzr, [x19] -.L1435: +.L1492: ldr x0, [x19,16] - cbz x0, .L1436 + cbz x0, .L1493 ldr w1, [x0,12] cmn w1, #1 - bne .L1436 + bne .L1493 ldr w1, [x0,8] cmn w1, #1 - bne .L1436 + bne .L1493 ldr w0, [x0] cmn w0, #1 - beq .L1436 + beq .L1493 str w1, [x19] -.L1436: +.L1493: ldr w3, [x19] cmn w3, #1 - bne .L1429 - add x5, x5, :lo12:.LANCHOR0 + bne .L1478 + add x21, x21, :lo12:.LANCHOR0 ldr w1, [x19,4] - mov x0, x23 - ldrb w2, [x5,1936] + ldr x0, [x29,104] + ldrb w2, [x21,1944] bl printk ldr x1, [x19,8] - cbz x1, .L1438 + cbz x1, .L1495 adrp x0, .LC98 mov w2, 4 add x0, x0, :lo12:.LC98 mov w3, 8 bl rknand_print_hex -.L1438: +.L1495: ldr x1, [x19,16] - cbz x1, .L1429 + cbz x1, .L1478 mov w2, 4 - mov x0, x24 + ldr x0, [x29,96] mov w3, w2 bl rknand_print_hex -.L1429: +.L1478: add w22, w22, 1 add x19, x19, 56 - b .L1427 -.L1461: + b .L1476 +.L1540: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 128 + ldp x29, x30, [sp], 144 ret .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 @@ -9800,14 +10116,14 @@ FlashReadPages: stp x27, x28, [sp,80] str w1, [x29,144] mov x26, x0 - ldrb w4, [x3,16] - ldrb w23, [x3,8] + ldrb w4, [x3,80] + ldrb w23, [x3,72] str w2, [x29,140] str w4, [x29,136] - cbz w23, .L1502 + cbz w23, .L1581 bl FlashReadSlc2KPages - b .L1551 -.L1502: + b .L1630 +.L1581: adrp x0, .LC97 mov w24, w23 add x0, x0, :lo12:.LC97 @@ -9818,10 +10134,10 @@ FlashReadPages: adrp x0, .LC100 add x0, x0, :lo12:.LC100 str x0, [x29,112] -.L1463: +.L1542: ldr w0, [x29,144] cmp w24, w0 - bcs .L1553 + bcs .L1632 mov w27, 56 ldr w0, [x29,144] ldr w1, [x29,140] @@ -9838,46 +10154,48 @@ FlashReadPages: ldr w0, [x29,168] ldrb w2, [x1,1845] cmp w0, w2 - bcc .L1465 + bcc .L1544 mov w0, -1 str w0, [x26,x27] - b .L1466 -.L1465: + b .L1545 +.L1544: add x0, x1, x0, uxtw adrp x25, .LANCHOR4 ldrb w19, [x0,1848] add x0, x25, :lo12:.LANCHOR4 str x1, [x29,152] - ldrb w0, [x0,136] + ldrb w0, [x0,137] cmp w0, wzr mov w0, w19 csel w20, w20, wzr, ne bl NandcWaitFlashReady ldr x1, [x29,152] ldr x0, [x1,744] - ldrb w2, [x0,19] - sub w0, w2, #1 - uxtb w0, w0 - cmp w0, 6 - bhi .L1468 - add x1, x1, 760 - sxtw x0, w19 - add x1, x1, x0 + ldrb w0, [x0,19] + sub w2, w0, #1 + uxtb w2, w2 cmp w2, 7 + bhi .L1547 + sub w0, w0, #7 + add x1, x1, 760 + sxtw x4, w19 + add x1, x1, x4 + uxtb w0, w0 + cmp w0, 1 ldrb w3, [x1,12] - bne .L1469 + bhi .L1548 ldrb w3, [x1,20] -.L1469: +.L1548: add x2, x22, :lo12:.LANCHOR0 - add x0, x2, x0 - ldrb w0, [x0,1616] + add x4, x2, x4 + ldrb w0, [x4,1616] cmp w0, w3 - beq .L1468 + beq .L1547 ldrb w1, [x2,761] mov w0, w19 add x2, x2, 764 bl HynixSetRRPara -.L1468: +.L1547: mov w0, w19 bl NandcFlashCs ldr w0, [x29,140] @@ -9885,38 +10203,38 @@ FlashReadPages: cset w0, eq orr w0, w0, w28, lsr 31 str w0, [x29,152] - cbz w0, .L1470 + cbz w0, .L1549 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L1470 + ldrb w0, [x0,196] + cbz w0, .L1549 mov w0, w19 bl flash_enter_slc_mode - b .L1471 -.L1470: + b .L1550 +.L1549: mov w0, w19 bl flash_exit_slc_mode -.L1471: +.L1550: cmp w19, 255 ldr w1, [x29,172] - bne .L1509 + bne .L1588 cmn w1, #1 cset w0, ne - cbz w0, .L1503 -.L1509: - cbz w20, .L1475 + cbz w0, .L1582 +.L1588: + cbz w20, .L1554 add x0, x22, :lo12:.LANCHOR0 - ldr w2, [x0,12] + ldr w2, [x0,76] mov w0, w19 add w2, w1, w2 bl FlashReadDpCmd - b .L1476 -.L1475: + b .L1555 +.L1554: mov w0, w19 bl FlashReadCmd - b .L1476 -.L1503: + b .L1555 +.L1582: mov w20, w0 -.L1473: +.L1552: ldrb w2, [x29,148] mov w0, w19 ldr x3, [x21,8] @@ -9925,18 +10243,18 @@ FlashReadPages: bl NandcXferData cmn w0, #1 mov w28, w0 - bne .L1477 + bne .L1556 add x0, x22, :lo12:.LANCHOR0 - ldrb w1, [x0,16] - cbz w1, .L1477 - strb wzr, [x0,16] + ldrb w1, [x0,80] + cbz w1, .L1556 + strb wzr, [x0,80] mov w20, 0 - b .L1471 -.L1477: - cbz w20, .L1478 + b .L1550 +.L1556: + cbz w20, .L1557 add x0, x22, :lo12:.LANCHOR0 ldr w1, [x29,172] - ldr w2, [x0,12] + ldr w2, [x0,76] mov w0, w19 add w1, w2, w1 bl FlashReadDpDataOutCmd @@ -9953,22 +10271,22 @@ FlashReadPages: cmn w0, #1 mov w23, w0 csel w20, w20, wzr, ne -.L1478: +.L1557: mov w0, w19 bl NandcFlashDeCs add x6, x22, :lo12:.LANCHOR0 ldrb w0, [x29,136] cmn w28, #1 - strb w0, [x6,16] - bne .L1485 + strb w0, [x6,80] + bne .L1564 ldrb w0, [x6,1860] - cbnz w0, .L1480 -.L1484: + cbnz w0, .L1559 +.L1563: add x0, x25, :lo12:.LANCHOR4 ldr x20, [x0,72] - cbnz x20, .L1481 - b .L1554 -.L1480: + cbnz x20, .L1560 + b .L1633 +.L1559: ldr x0, [x6,128] mov w4, 1 ldr w1, [x29,172] @@ -9980,18 +10298,18 @@ FlashReadPages: bl FlashDdrTunningRead cmn w0, #1 mov w28, w0 - beq .L1483 + beq .L1562 ldr x6, [x29,104] - ldrb w0, [x6,1936] + ldrb w0, [x6,1944] cmp w28, w0, lsr 1 - bls .L1505 -.L1483: + bls .L1584 +.L1562: lsr w0, w20, 8 bl NandcSetDdrPara cmn w28, #1 - beq .L1484 - b .L1505 -.L1481: + beq .L1563 + b .L1584 +.L1560: ldr w1, [x29,172] mov w0, w19 ldr x2, [x21,8] @@ -10000,20 +10318,20 @@ FlashReadPages: cmn w0, #1 mov w28, w0 mov w20, 0 - bne .L1486 + bne .L1565 add x2, x22, :lo12:.LANCHOR0 ldr x0, [x2,744] ldrb w0, [x0,19] sub w0, w0, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L1487 + cmp w0, 7 + bhi .L1566 ldrb w1, [x2,761] mov w0, w19 add x2, x2, 764 mov w3, w20 bl HynixSetRRPara -.L1487: +.L1566: ldr w1, [x29,172] mov w0, w19 ldr x2, [x21,8] @@ -10026,22 +10344,22 @@ FlashReadPages: ldr w1, [x21,4] mov w3, w28 str x4, [x29,104] - ldrb w2, [x4,1936] + ldrb w2, [x4,1944] bl printk cmn w28, #1 ldr x4, [x29,104] - bne .L1486 - ldrb w0, [x4,120] - cbz w0, .L1486 + bne .L1565 + ldrb w0, [x4,196] + cbz w0, .L1565 ldr w0, [x29,152] - cbz w0, .L1488 + cbz w0, .L1567 mov w0, w19 bl flash_enter_slc_mode - b .L1489 -.L1488: + b .L1568 +.L1567: mov w0, w19 bl flash_exit_slc_mode -.L1489: +.L1568: add x0, x25, :lo12:.LANCHOR4 ldr w1, [x29,172] ldr x2, [x21,8] @@ -10051,102 +10369,102 @@ FlashReadPages: mov w0, w19 blr x4 mov w28, w0 - b .L1486 -.L1554: + b .L1565 +.L1633: ldr w1, [x29,172] mov w0, w19 ldr x2, [x21,8] ldr x3, [x21,16] bl FlashReadRawPage mov w28, w0 - b .L1486 -.L1505: + b .L1565 +.L1584: mov w20, 0 -.L1485: +.L1564: add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,1936] + ldrb w0, [x0,1944] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bls .L1486 + bls .L1565 add x0, x25, :lo12:.LANCHOR4 ldr x0, [x0,72] cmp x0, xzr mov w0, 256 csel w28, w28, w0, ne -.L1486: +.L1565: cmp w28, 256 - beq .L1510 + beq .L1589 cmn w28, #1 - bne .L1490 -.L1510: + bne .L1569 +.L1589: str w28, [x26,x27] - b .L1492 -.L1490: + b .L1571 +.L1569: str wzr, [x26,x27] -.L1492: +.L1571: ldr w3, [x26,x27] cmn w3, #1 - bne .L1494 + bne .L1573 add x2, x22, :lo12:.LANCHOR0 ldr w1, [x21,4] ldr x0, [x29,128] - ldrb w2, [x2,1936] + ldrb w2, [x2,1944] bl printk ldr x1, [x21,16] - cbz x1, .L1494 + cbz x1, .L1573 mov w2, 4 ldr x0, [x29,120] mov w3, w2 bl rknand_print_hex -.L1494: - cbz w20, .L1496 +.L1573: + cbz w20, .L1575 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,1936] + ldrb w0, [x0,1944] add w0, w0, w0, lsl 1 cmp w23, w0, lsr 2 - bls .L1497 + bls .L1576 add x25, x25, :lo12:.LANCHOR4 ldr x0, [x25,72] cmp x0, xzr mov w0, 256 csel w23, w23, w0, ne -.L1497: +.L1576: add w0, w24, 1 mov w1, 56 cmp w23, 256 umull x0, w0, w1 - beq .L1511 + beq .L1590 cmn w23, #1 - bne .L1498 -.L1511: + bne .L1577 +.L1590: str w23, [x26,x0] - b .L1496 -.L1498: + b .L1575 +.L1577: str wzr, [x26,x0] -.L1496: +.L1575: ldr w0, [x29,152] add w24, w24, w20 - cbz w0, .L1466 + cbz w0, .L1545 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L1466 + ldrb w0, [x0,196] + cbz w0, .L1545 mov w0, w19 bl flash_exit_slc_mode -.L1466: +.L1545: add w24, w24, 1 - b .L1463 -.L1553: + b .L1542 +.L1632: mov w0, 0 - b .L1551 -.L1476: + b .L1630 +.L1555: mov w0, w19 bl NandcWaitFlashReady - cbz w20, .L1473 + cbz w20, .L1552 ldr w1, [x29,172] mov w0, w19 bl FlashReadDpDataOutCmd - b .L1473 -.L1551: + b .L1552 +.L1630: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -10190,18 +10508,18 @@ FlashLoadFactorBbt: str xzr, [x29,144] uxth w25, w25 str w0, [x29,124] -.L1556: +.L1635: add x1, x22, :lo12:.LANCHOR0 ldrb w1, [x1,1845] cmp w1, w19 - bls .L1566 + bls .L1645 mul w3, w19, w21 mov w20, w25 mov w4, 61664 -.L1557: +.L1636: ldr w0, [x29,124] cmp w20, w0 - ble .L1559 + ble .L1638 add w1, w3, w20 add x0, x29, 136 lsl w1, w1, 10 @@ -10215,12 +10533,12 @@ FlashLoadFactorBbt: ldr x3, [x29,112] cmn w0, #1 ldr x4, [x29,104] - beq .L1558 + beq .L1637 add x24, x23, :lo12:.LANCHOR4 ldr x0, [x24,112] ldrh w0, [x0] cmp w0, w4 - bne .L1558 + bne .L1637 mov x0, x26 mov w1, w19 mov w2, w20 @@ -10229,20 +10547,20 @@ FlashLoadFactorBbt: bl printk uxth w28, w28 strh w20, [x24,144] - b .L1559 -.L1558: + b .L1638 +.L1637: sub w20, w20, #1 uxth w20, w20 - b .L1557 -.L1559: + b .L1636 +.L1638: add x1, x22, :lo12:.LANCHOR0 add w19, w19, 1 uxtb w19, w19 ldrb w1, [x1,1845] cmp w1, w28 csel w27, w27, wzr, ne - b .L1556 -.L1566: + b .L1635 +.L1645: mov w0, w27 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10274,9 +10592,9 @@ FlashProgSlc2KPages: mov w25, 0 add x22, x22, :lo12:.LANCHOR0 mov w28, -1 -.L1568: +.L1647: cmp w25, w23 - beq .L1597 + beq .L1676 mov w1, w24 sub w4, w23, w25 mov x0, x21 @@ -10286,10 +10604,10 @@ FlashProgSlc2KPages: ldr w0, [x29,100] ldrb w1, [x22,1845] cmp w0, w1 - bcc .L1569 + bcc .L1648 str w28, [x21] - b .L1570 -.L1569: + b .L1649 +.L1648: add x0, x22, x0, uxtw ldrb w20, [x0,1848] mov w0, w20 @@ -10317,7 +10635,7 @@ FlashProgSlc2KPages: str w0, [x21] mov w0, w20 ldr w1, [x29,96] - ldr w2, [x22,12] + ldr w2, [x22,76] add w1, w2, w1 bl FlashProgFirstCmd ldr x0, [x21,8] @@ -10335,7 +10653,7 @@ FlashProgSlc2KPages: adrp x0, .LANCHOR0 ldr w1, [x29,96] add x0, x0, :lo12:.LANCHOR0 - ldr w2, [x0,12] + ldr w2, [x0,76] mov w0, w20 add w1, w2, w1 bl FlashProgSecondCmd @@ -10344,36 +10662,36 @@ FlashProgSlc2KPages: ldr w1, [x29,96] mov w0, w20 bl FlashReadStatus - tbz x0, 0, .L1573 + tbz x0, 0, .L1652 str w28, [x21] -.L1573: +.L1652: mov w0, w20 bl NandcFlashDeCs -.L1570: +.L1649: add w25, w25, 1 add x21, x21, 56 - b .L1568 -.L1597: + b .L1647 +.L1676: mov w21, 0 - cbz w27, .L1595 + cbz w27, .L1674 adrp x25, .LC105 adrp x26, .LC104 adrp x27, .LC103 add x25, x25, :lo12:.LC105 add x26, x26, :lo12:.LC104 add x27, x27, :lo12:.LC103 -.L1596: +.L1675: cmp w21, w23 - beq .L1595 + beq .L1674 ldr w0, [x19] cmn w0, #1 - bne .L1576 + bne .L1655 adrp x0, .LC102 ldr w1, [x19,4] add x0, x0, :lo12:.LC102 bl printk - b .L1577 -.L1576: + b .L1656 +.L1655: adrp x20, .LANCHOR4 sub w4, w23, w21 add x22, x20, :lo12:.LANCHOR4 @@ -10400,44 +10718,44 @@ FlashProgSlc2KPages: bl FlashReadPages ldr w22, [x29,104] cmn w22, #1 - bne .L1578 + bne .L1657 ldr w1, [x19,4] mov x0, x27 bl printk str w22, [x19] -.L1578: +.L1657: ldr x0, [x19,16] - cbz x0, .L1579 + cbz x0, .L1658 ldr w2, [x0] add x0, x20, :lo12:.LANCHOR4 ldr x0, [x0,128] ldr w3, [x0] cmp w2, w3 - beq .L1579 + beq .L1658 ldr w1, [x19,4] mov x0, x26 bl printk mov w0, -1 str w0, [x19] -.L1579: +.L1658: ldr x0, [x19,8] - cbz x0, .L1577 + cbz x0, .L1656 add x20, x20, :lo12:.LANCHOR4 ldr w2, [x0] ldr x0, [x20,120] ldr w3, [x0] cmp w2, w3 - beq .L1577 + beq .L1656 ldr w1, [x19,4] mov x0, x25 bl printk mov w0, -1 str w0, [x19] -.L1577: +.L1656: add w21, w21, 1 add x19, x19, 56 - b .L1596 -.L1595: + b .L1675 +.L1674: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10472,21 +10790,21 @@ FtlLoadFactoryBbt: str x24, [x19,16] mov w25, -1 mov w26, 61664 -.L1599: +.L1678: add x0, x22, :lo12:.LANCHOR0 - ldrh w1, [x0,1970] + ldrh w1, [x0,1978] cmp w23, w1 - bcs .L1608 - ldrh w20, [x0,2014] + bcs .L1687 + ldrh w20, [x0,2022] strh w25, [x21,12] -.L1601: +.L1680: add x0, x22, :lo12:.LANCHOR0 sub w20, w20, #1 uxth w20, w20 - ldrh w0, [x0,2014] + ldrh w0, [x0,2022] sub w1, w0, #16 cmp w20, w1 - ble .L1602 + ble .L1681 madd w0, w23, w0, w20 mov w1, 1 lsl w0, w0, 10 @@ -10496,16 +10814,16 @@ FtlLoadFactoryBbt: bl FlashReadPages ldr w0, [x19] cmn w0, #1 - beq .L1601 + beq .L1680 ldrh w0, [x24] cmp w0, w26 - bne .L1601 + bne .L1680 strh w20, [x21,12] -.L1602: +.L1681: add w23, w23, 1 add x21, x21, 2 - b .L1599 -.L1608: + b .L1678 +.L1687: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10528,12 +10846,12 @@ FtlGetLastWrittenPage: str x25, [sp,64] mov w23, w1 add x3, x3, :lo12:.LANCHOR0 - bne .L1610 - ldrh w19, [x3,2020] - b .L1611 -.L1610: - ldrh w19, [x3,2018] -.L1611: + bne .L1689 + ldrh w19, [x3,2026] + b .L1690 +.L1689: + ldrh w19, [x3,2024] +.L1690: sub w19, w19, #1 lsl w21, w0, 10 mov w1, 1 @@ -10548,12 +10866,12 @@ FtlGetLastWrittenPage: bl FlashReadPages ldr w0, [x29,144] cmn w0, #1 - bne .L1612 + bne .L1691 mov w22, 0 mov w25, 2 -.L1613: +.L1692: cmp w22, w19 - bgt .L1612 + bgt .L1691 add w3, w22, w19 mov w1, 1 mov w2, w23 @@ -10565,21 +10883,21 @@ FtlGetLastWrittenPage: bl FlashReadPages ldr w0, [x24] cmn w0, #1 - bne .L1614 + bne .L1693 ldr w0, [x24,4] cmn w0, #1 - bne .L1614 + bne .L1693 ldr w0, [x29,88] cmn w0, #1 - beq .L1614 + beq .L1693 sub w19, w20, #1 sxth w19, w19 - b .L1613 -.L1614: + b .L1692 +.L1693: add w20, w20, 1 sxth w22, w20 - b .L1613 -.L1612: + b .L1692 +.L1691: mov w0, w19 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -10611,15 +10929,15 @@ FtlLoadBbt: str x22, [x19,16] bl FtlBbtMemInit add x0, x20, :lo12:.LANCHOR0 - ldrh w21, [x0,2014] + ldrh w21, [x0,2022] sub w21, w21, #1 uxth w21, w21 -.L1621: +.L1700: add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,2014] + ldrh w0, [x0,2022] sub w0, w0, #48 cmp w21, w0 - ble .L1624 + ble .L1703 lsl w0, w21, 10 mov w1, 1 str w0, [x19,4] @@ -10628,7 +10946,7 @@ FtlLoadBbt: bl FlashReadPages ldr w0, [x19] cmn w0, #1 - bne .L1622 + bne .L1701 ldr w0, [x19,4] mov w1, 1 mov w2, w1 @@ -10636,13 +10954,13 @@ FtlLoadBbt: str w0, [x19,4] mov x0, x19 bl FlashReadPages -.L1622: +.L1701: ldr w0, [x19] cmn w0, #1 - beq .L1623 + beq .L1702 ldrh w0, [x22] cmp w0, w25 - bne .L1623 + bne .L1702 add x1, x20, :lo12:.LANCHOR0 add x0, x1, 2104 strh w21, [x1,2104] @@ -10650,21 +10968,21 @@ FtlLoadBbt: str w1, [x0,8] ldrh w1, [x22,8] strh w1, [x0,4] - b .L1624 -.L1623: + b .L1703 +.L1702: sub w21, w21, #1 uxth w21, w21 - b .L1621 -.L1624: + b .L1700 +.L1703: add x21, x20, :lo12:.LANCHOR0 mov w2, 65535 mov w0, -1 ldrh w1, [x21,2104] cmp w1, w2 - beq .L1626 + beq .L1705 ldrh w1, [x21,2108] cmp w1, w2 - beq .L1628 + beq .L1707 add x25, x23, :lo12:.LANCHOR4 lsl w1, w1, 10 add x0, x25, 160 @@ -10674,21 +10992,21 @@ FtlLoadBbt: bl FlashReadPages ldr w0, [x25,160] cmn w0, #1 - beq .L1628 + beq .L1707 ldrh w1, [x22] mov w0, 61649 cmp w1, w0 - bne .L1628 + bne .L1707 ldr w0, [x22,4] ldr w1, [x21,2112] cmp w0, w1 - bls .L1628 + bls .L1707 str w0, [x21,2112] ldrh w1, [x21,2108] ldrh w0, [x22,8] strh w1, [x21,2104] strh w0, [x21,2108] -.L1628: +.L1707: add x25, x20, :lo12:.LANCHOR0 mov w1, 1 add x21, x23, :lo12:.LANCHOR4 @@ -10699,8 +11017,8 @@ FtlLoadBbt: sxth w19, w0 add w0, w0, 1 strh w0, [x25,2106] -.L1630: - tbnz w19, #31, .L1635 +.L1709: + tbnz w19, #31, .L1714 ldrh w0, [x25,2104] mov w1, 1 mov w2, w1 @@ -10713,45 +11031,45 @@ FtlLoadBbt: bl FlashReadPages ldr w0, [x21] cmn w0, #1 - beq .L1631 + beq .L1710 ldrh w0, [x22] cmp w0, w26 - bne .L1631 -.L1635: + bne .L1710 +.L1714: add x1, x20, :lo12:.LANCHOR0 ldrh w0, [x22,10] mov w2, 65535 strh w0, [x1,2110] ldrh w0, [x22,12] cmp w0, w2 - bne .L1632 - b .L1633 -.L1631: + bne .L1711 + b .L1712 +.L1710: sub w19, w19, #1 sxth w19, w19 - b .L1630 -.L1632: - ldr w2, [x1,1944] + b .L1709 +.L1711: + ldr w2, [x1,1952] cmp w0, w2 - beq .L1633 - ldrh w1, [x1,1958] + beq .L1712 + ldrh w1, [x1,1966] lsr w1, w1, 2 cmp w0, w1 - bcs .L1633 + bcs .L1712 cmp w2, w1 - bcs .L1633 + bcs .L1712 bl FtlSysBlkNumInit -.L1633: +.L1712: add x20, x20, :lo12:.LANCHOR0 mov x19, 0 add x21, x20, 2104 add x23, x23, :lo12:.LANCHOR4 -.L1636: - ldrh w0, [x20,1970] +.L1715: + ldrh w0, [x20,1978] mov w1, w19 add x19, x19, 1 cmp w1, w0 - bcs .L1654 + bcs .L1733 add x0, x24, :lo12:.LANCHOR2 ldr x3, [x23,168] ldrh w2, [x0,2248] @@ -10761,10 +11079,10 @@ FtlLoadBbt: lsl w2, w2, 2 add x1, x3, x1, lsl 2 bl ftl_memcpy - b .L1636 -.L1654: + b .L1715 +.L1733: mov w0, 0 -.L1626: +.L1705: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -10790,46 +11108,46 @@ FtlScanSysBlk: stp x27, x28, [sp,80] strh wzr, [x21,2320] mov x24, x22 - ldr w2, [x20,2048] + ldr w2, [x20,2052] mov w22, 65535 ldr x0, [x21,2232] lsl w2, w2, 2 - strh wzr, [x20,2066] + strh wzr, [x20,2070] bl ftl_memset - ldr w2, [x20,2048] + ldr w2, [x20,2052] mov w1, 0 ldr x0, [x21,2176] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,2040] + ldrh w2, [x20,2044] mov w1, 0 ldr x0, [x21,2200] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,2040] + ldrh w2, [x20,2044] mov w1, 0 ldr x0, [x20,2072] lsl w2, w2, 1 bl ftl_memset add x0, x21, 264 mov w1, 255 - mov w2, 12 + mov w2, 16 bl ftl_memset - ldrh w21, [x20,1956] -.L1656: + ldrh w21, [x20,1964] +.L1735: add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1,1958] + ldrh w0, [x1,1966] cmp w0, w21 - bls .L1697 + bls .L1776 mov x27, 0 - ldrh w5, [x1,1948] - ldrh w4, [x1,2030] + ldrh w5, [x1,1956] + ldrh w4, [x1,2036] mov w20, w27 mov x23, x1 -.L1698: +.L1777: cmp w5, w27, uxth - bls .L1731 - add x0, x23, 1976 + bls .L1810 + add x0, x23, 1984 mov w1, w21 str x4, [x29,112] str x5, [x29,120] @@ -10839,7 +11157,7 @@ FtlScanSysBlk: bl FtlBbmIsBadBlock ldr x5, [x29,120] ldr x4, [x29,112] - cbnz w0, .L1657 + cbnz w0, .L1736 add x2, x24, :lo12:.LANCHOR2 mov w0, 56 lsl w28, w28, 10 @@ -10859,11 +11177,11 @@ FtlScanSysBlk: uxth w20, w20 add x1, x2, x1, sxtw 2 str x1, [x0,16] -.L1657: +.L1736: add x27, x27, 1 - b .L1698 -.L1731: - cbz w20, .L1660 + b .L1777 +.L1810: + cbz w20, .L1739 add x0, x24, :lo12:.LANCHOR2 mov w1, w20 mov w2, 1 @@ -10872,9 +11190,9 @@ FtlScanSysBlk: mov w28, 61604 ldr x0, [x0,2048] bl FlashReadPages -.L1661: +.L1740: cmp w20, w23, uxth - bls .L1660 + bls .L1739 mov x0, 56 mul x6, x23, x0 add x0, x24, :lo12:.LANCHOR2 @@ -10885,9 +11203,9 @@ FtlScanSysBlk: cmn w0, #1 ldr x26, [x1,16] ubfx x25, x5, 10, 16 - bne .L1663 + bne .L1742 mov w7, 16 -.L1662: +.L1741: add x8, x24, :lo12:.LANCHOR2 str x7, [x29,104] str x8, [x29,112] @@ -10908,64 +11226,64 @@ FtlScanSysBlk: ldr x6, [x29,120] ldr x7, [x29,104] ldr x0, [x8,2048] - bne .L1664 + bne .L1743 str w27, [x0,x6] - b .L1663 -.L1664: + b .L1742 +.L1743: ldr w0, [x0,x6] cmn w0, #1 - bne .L1663 + bne .L1742 sub w7, w7, #1 uxth w7, w7 - cbnz w7, .L1662 -.L1663: + cbnz w7, .L1741 +.L1742: add x0, x24, :lo12:.LANCHOR2 ldr x1, [x0,2048] ldr w1, [x1,x6] cmn w1, #1 - beq .L1666 + beq .L1745 ldr w0, [x0,232] cmn w0, #1 - beq .L1667 + beq .L1746 ldr w1, [x26,4] cmp w0, w1 - bhi .L1668 -.L1667: + bhi .L1747 +.L1746: ldr w0, [x26,4] cmn w0, #1 - beq .L1668 + beq .L1747 add x1, x24, :lo12:.LANCHOR2 add w0, w0, 1 str w0, [x1,232] -.L1668: +.L1747: ldrh w0, [x26] cmp w0, w28 - beq .L1670 - bhi .L1671 + beq .L1749 + bhi .L1750 mov w1, 61574 cmp w0, w1 - bne .L1669 + bne .L1748 add x0, x19, :lo12:.LANCHOR0 add x7, x24, :lo12:.LANCHOR2 - ldrh w6, [x0,2040] - ldrh w0, [x0,2066] + ldrh w6, [x0,2044] + ldrh w0, [x0,2070] sub w2, w6, #1 ldr x7, [x7,2200] sxth x1, w2 sub w2, w2, w0 - b .L1684 -.L1671: + b .L1763 +.L1750: mov w1, 61634 cmp w0, w1 - beq .L1673 + beq .L1752 cmp w0, w22 - bne .L1669 + bne .L1748 mov w0, w25 - b .L1730 -.L1673: + b .L1809 +.L1752: add x0, x19, :lo12:.LANCHOR0 add x7, x24, :lo12:.LANCHOR2 - ldr w6, [x0,2048] + ldr w6, [x0,2052] ldrh w0, [x7,2320] ldr x7, [x7,2232] uxth w2, w6 @@ -10974,27 +11292,27 @@ FtlScanSysBlk: sub w2, w2, #1 sxth x1, w1 sxth w2, w2 -.L1675: +.L1754: cmp w1, w2 - ble .L1732 + ble .L1811 sbfiz x8, x1, 2, 32 ldr w11, [x26,4] sxth x9, w1 ldr w10, [x7,x8] cmp w11, w10 - bls .L1676 + bls .L1755 ldr w2, [x7] - cbnz w2, .L1677 + cbnz w2, .L1756 cmp w0, w6 - beq .L1677 + beq .L1756 add x2, x24, :lo12:.LANCHOR2 add w0, w0, 1 strh w0, [x2,2320] -.L1677: +.L1756: mov w0, 0 -.L1678: +.L1757: cmp w0, w1 - beq .L1733 + beq .L1812 add x6, x24, :lo12:.LANCHOR2 sxtw x2, w0 lsl x7, x2, 2 @@ -11009,32 +11327,32 @@ FtlScanSysBlk: add x7, x6, x2 ldrh w7, [x7,2] strh w7, [x6,x2] - b .L1678 -.L1733: + b .L1757 +.L1812: add x0, x24, :lo12:.LANCHOR2 ldr w6, [x26,4] ldr x2, [x0,2232] str w6, [x2,x8] ldr x2, [x0,2176] strh w25, [x2,x9,lsl 1] - tbz w1, #31, .L1680 - b .L1669 -.L1676: + tbz w1, #31, .L1759 + b .L1748 +.L1755: sub w1, w1, #1 sxth x1, w1 - b .L1675 -.L1732: - tbz w1, #31, .L1713 - b .L1669 -.L1680: + b .L1754 +.L1811: + tbz w1, #31, .L1792 + b .L1748 +.L1759: add x2, x19, :lo12:.LANCHOR0 ldrh w0, [x0,2320] - ldr w2, [x2,2048] + ldr w2, [x2,2052] sub w2, w2, w0 sub w2, w2, #1 cmp w1, w2, sxth - bgt .L1669 -.L1713: + bgt .L1748 +.L1792: add x2, x24, :lo12:.LANCHOR2 add w0, w0, 1 ldr w4, [x26,4] @@ -11042,33 +11360,33 @@ FtlScanSysBlk: ldr x0, [x2,2232] str w4, [x0,x1,lsl 2] ldr x0, [x2,2176] - b .L1729 -.L1690: + b .L1808 +.L1769: sbfiz x8, x1, 2, 32 ldr w11, [x26,4] sxth x9, w1 ldr w10, [x7,x8] cmp w11, w10 - bhi .L1734 + bhi .L1813 sub w1, w1, #1 sxth x1, w1 -.L1684: +.L1763: cmp w1, w2 - bgt .L1690 - b .L1689 -.L1734: + bgt .L1769 + b .L1768 +.L1813: ldr w2, [x7] - cbnz w2, .L1686 + cbnz w2, .L1765 cmp w0, w6 - beq .L1686 + beq .L1765 add x2, x19, :lo12:.LANCHOR0 add w0, w0, 1 - strh w0, [x2,2066] -.L1686: + strh w0, [x2,2070] +.L1765: mov w0, 0 -.L1687: +.L1766: cmp w0, w1 - beq .L1735 + beq .L1814 add x2, x24, :lo12:.LANCHOR2 ldr x7, [x2,2200] sxtw x2, w0 @@ -11084,8 +11402,8 @@ FtlScanSysBlk: add x7, x6, x2 ldrh w7, [x7,2] strh w7, [x6,x2] - b .L1687 -.L1735: + b .L1766 +.L1814: add x0, x24, :lo12:.LANCHOR2 ldr w2, [x26,4] ldr x0, [x0,2200] @@ -11093,99 +11411,99 @@ FtlScanSysBlk: add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,2072] strh w25, [x0,x9,lsl 1] -.L1689: - tbnz w1, #31, .L1669 +.L1768: + tbnz w1, #31, .L1748 add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x2,2040] - ldrh w6, [x2,2066] + ldrh w0, [x2,2044] + ldrh w6, [x2,2070] sub w0, w0, #1 sub w0, w0, w6 cmp w1, w0, sxth - bgt .L1669 + bgt .L1748 add x0, x24, :lo12:.LANCHOR2 add w6, w6, 1 ldr w4, [x26,4] - strh w6, [x2,2066] + strh w6, [x2,2070] ldr x0, [x0,2200] str w4, [x0,x1,lsl 2] ldr x0, [x2,2072] -.L1729: +.L1808: strh w25, [x0,x1,lsl 1] - b .L1669 -.L1670: + b .L1748 +.L1749: add x0, x24, :lo12:.LANCHOR2 add x1, x0, 264 ldrh w2, [x0,264] cmp w2, w22 - bne .L1691 + bne .L1770 strh w25, [x0,264] ldr w0, [x26,4] str w0, [x1,8] - b .L1669 -.L1691: + b .L1748 +.L1770: ldrh w0, [x1,4] cmp w0, w22 - beq .L1692 + beq .L1771 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1692: +.L1771: add x1, x24, :lo12:.LANCHOR2 ldr w2, [x26,4] add x0, x1, 264 ldr w6, [x0,8] cmp w6, w2 - bcs .L1693 + bcs .L1772 ldrh w2, [x1,264] strh w2, [x0,4] strh w25, [x1,264] ldr w1, [x26,4] str w1, [x0,8] - b .L1669 -.L1693: + b .L1748 +.L1772: strh w25, [x0,4] - b .L1669 -.L1666: + b .L1748 +.L1745: add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,120] + ldrb w1, [x0,196] mov w0, w25 - cbz w1, .L1694 -.L1730: + cbz w1, .L1773 +.L1809: mov w1, 0 -.L1694: +.L1773: bl FtlFreeSysBlkQueueIn -.L1669: +.L1748: add x23, x23, 1 - b .L1661 -.L1660: + b .L1740 +.L1739: add w21, w21, 1 uxth w21, w21 - b .L1656 -.L1697: + b .L1735 +.L1776: add x4, x24, :lo12:.LANCHOR2 ldr x2, [x4,2176] ldrh w0, [x2] - cbz w0, .L1699 -.L1702: + cbz w0, .L1778 +.L1781: add x1, x19, :lo12:.LANCHOR0 ldr x2, [x1,2072] ldrh w0, [x2] - cbz w0, .L1700 - b .L1723 -.L1699: + cbz w0, .L1779 + b .L1802 +.L1778: ldrh w4, [x4,2320] - cbz w4, .L1702 - ldr w1, [x1,2048] -.L1703: + cbz w4, .L1781 + ldr w1, [x1,2052] +.L1782: cmp w0, w1 - bcs .L1702 + bcs .L1781 ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1704 + cbz w4, .L1783 mov w7, w0 -.L1705: +.L1784: add x1, x19, :lo12:.LANCHOR0 - ldr w1, [x1,2048] + ldr w1, [x1,2052] cmp w0, w1 - bcs .L1702 + bcs .L1781 add x2, x24, :lo12:.LANCHOR2 sxtw x6, w0 sub w1, w0, w7 @@ -11201,26 +11519,26 @@ FtlScanSysBlk: str w6, [x5,x1,lsl 2] ldr x1, [x2,2176] strh wzr, [x1,x4] - b .L1705 -.L1704: + b .L1784 +.L1783: add w0, w0, 1 sxth w0, w0 - b .L1703 -.L1700: - ldrh w4, [x1,2066] - cbz w4, .L1723 - ldrh w1, [x1,2040] -.L1708: + b .L1782 +.L1779: + ldrh w4, [x1,2070] + cbz w4, .L1802 + ldrh w1, [x1,2044] +.L1787: cmp w0, w1 mov w7, w0 - bge .L1723 + bge .L1802 ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1709 -.L1710: + cbz w4, .L1788 +.L1789: add x2, x19, :lo12:.LANCHOR0 - ldrh w1, [x2,2040] + ldrh w1, [x2,2044] cmp w0, w1 - bge .L1723 + bge .L1802 sxtw x6, w0 sub w1, w0, w7 ldr x5, [x2,2072] @@ -11236,12 +11554,12 @@ FtlScanSysBlk: str w6, [x5,x1,lsl 2] ldr x1, [x2,2072] strh wzr, [x1,x4] - b .L1710 -.L1709: + b .L1789 +.L1788: add w0, w0, 1 sxth w0, w0 - b .L1708 -.L1723: + b .L1787 +.L1802: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11255,85 +11573,108 @@ FtlScanSysBlk: .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! mov w1, 0 add x29, sp, 0 stp x19, x20, [sp,16] stp x23, x24, [sp,48] - adrp x19, .LANCHOR2 - adrp x23, .LANCHOR4 + adrp x20, .LANCHOR2 + adrp x24, .LANCHOR4 stp x21, x22, [sp,32] - add x22, x19, :lo12:.LANCHOR2 - add x21, x23, :lo12:.LANCHOR4 - str x25, [sp,64] + add x23, x20, :lo12:.LANCHOR2 + add x21, x24, :lo12:.LANCHOR4 add x21, x21, 160 - adrp x20, .LANCHOR0 - add x25, x22, 264 - ldr x0, [x22,2072] + adrp x19, .LANCHOR0 + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] + ldr x0, [x23,2072] + add x25, x23, 264 str x0, [x21,8] - ldr x0, [x22,2120] + ldr x0, [x23,2120] str x0, [x21,16] - add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x0,1956] - ldr x0, [x19,#:lo12:.LANCHOR2] + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x0,1964] + ldr x0, [x20,#:lo12:.LANCHOR2] lsl w2, w2, 1 bl ftl_memset - ldrh w0, [x22,264] + ldrh w0, [x23,264] mov w1, 65535 cmp w0, w1 - bne .L1737 -.L1745: + bne .L1816 +.L1827: mov w19, -1 - b .L1738 -.L1737: + b .L1817 +.L1816: mov w1, 1 + mov w26, -1 bl FtlGetLastWrittenPage - sxth w24, w0 + sxth w22, w0 add w0, w0, 1 strh w0, [x25,2] - mov w25, 61604 -.L1739: - tbnz w24, #31, .L1744 - ldrh w0, [x22,264] + ldrsh w25, [x23,264] +.L1818: + tbnz w22, #31, .L1826 + orr w0, w22, w25, lsl 10 mov w1, 1 - mov w2, w1 - orr w0, w24, w0, lsl 10 str w0, [x21,4] - ldr x0, [x22,2072] + mov w2, w1 + ldr x0, [x23,2072] + add x27, x19, :lo12:.LANCHOR0 str x0, [x21,8] mov x0, x21 bl FlashReadPages + ldrb w0, [x27,72] + cbz w0, .L1819 + ldr x0, [x21,16] + ldr w28, [x0,12] + cbz w28, .L1819 + ldr x0, [x21,8] + ldrh w1, [x27,2034] + bl js_hash + cmp w28, w0 + beq .L1819 + cbnz w22, .L1820 + ldrh w0, [x23,268] + cmp w25, w0 + beq .L1820 + sxth w25, w0 + ldrh w22, [x27,2026] + b .L1822 +.L1820: + str w26, [x21] +.L1819: ldr w0, [x21] cmn w0, #1 - beq .L1740 - ldr x0, [x22,2072] + beq .L1822 + ldr x0, [x23,2072] ldr w1, [x0] mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - bne .L1740 - ldr x0, [x22,2120] + bne .L1822 + ldr x0, [x23,2120] + mov w1, 61604 ldrh w0, [x0] - cmp w0, w25 - bne .L1740 -.L1744: - add x21, x23, :lo12:.LANCHOR4 - add x24, x19, :lo12:.LANCHOR2 + cmp w0, w1 + bne .L1822 +.L1826: + add x21, x24, :lo12:.LANCHOR4 + add x23, x20, :lo12:.LANCHOR2 add x21, x21, 160 - add x22, x20, :lo12:.LANCHOR0 + add x22, x19, :lo12:.LANCHOR0 mov w2, 48 - sub x0, x24, #64 + sub x0, x23, #64 ldr x1, [x21,8] bl ftl_memcpy ldr x1, [x21,8] - ldrh w2, [x22,1956] - ldr x0, [x19,#:lo12:.LANCHOR2] + ldrh w2, [x22,1964] + ldr x0, [x20,#:lo12:.LANCHOR2] add x1, x1, 48 lsl w2, w2, 1 bl ftl_memcpy - ldrh w2, [x22,1956] + ldrh w2, [x22,1964] ldr x3, [x21,8] - ldr x0, [x20,#:lo12:.LANCHOR0] + ldr x0, [x19,#:lo12:.LANCHOR0] uxth x1, w2 lsr w2, w2, 3 add x1, x1, 24 @@ -11341,50 +11682,50 @@ FtlLoadSysInfo: lsr x1, x1, 1 add x1, x3, x1, lsl 2 bl ftl_memcpy - ldrh w0, [x22,2064] - cbz w0, .L1742 - ldrh w0, [x22,1956] + ldrh w0, [x22,2068] + cbz w0, .L1824 + ldrh w0, [x22,1964] ldr x3, [x21,8] lsr w1, w0, 3 - ldrh w2, [x22,2056] + ldrh w2, [x22,2060] add w1, w1, w0, lsl 1 - ldr x0, [x24,2224] + ldr x0, [x23,2224] add w1, w1, 52 lsl w2, w2, 2 and x1, x1, 65532 add x1, x3, x1 bl ftl_memcpy - b .L1742 -.L1740: - sub w24, w24, #1 - sxth w24, w24 - b .L1739 -.L1742: - add x0, x19, :lo12:.LANCHOR2 + b .L1824 +.L1822: + sub w22, w22, #1 + sxth w22, w22 + b .L1818 +.L1824: + add x0, x20, :lo12:.LANCHOR2 mov w1, 19539 movk w1, 0x4654, lsl 16 ldr w2, [x0,-64] cmp w2, w1 - bne .L1745 - add x1, x20, :lo12:.LANCHOR0 + bne .L1827 + add x1, x19, :lo12:.LANCHOR0 ldrb w3, [x0,-54] ldrh w4, [x0,-56] strh w4, [x0,270] - ldrh w2, [x1,1970] + ldrh w2, [x1,1978] cmp w3, w2 - bne .L1745 - ldrh w3, [x1,2018] - add x23, x23, :lo12:.LANCHOR4 - ldrh w2, [x1,2024] + bne .L1827 + ldrh w3, [x1,2024] + add x24, x24, :lo12:.LANCHOR4 + ldrh w2, [x1,2030] strh wzr, [x0,282] mul w3, w3, w4 str w3, [x1,2096] - str w4, [x23,216] + str w4, [x24,216] mul w3, w3, w2 - str w3, [x1,2060] + str w3, [x1,2064] ldrh w2, [x1,2110] - ldr w3, [x1,1960] - ldrh w1, [x1,1948] + ldr w3, [x1,1968] + ldrh w1, [x1,1956] sub w2, w3, w2 ldrh w3, [x0,-50] sub w2, w2, w4 @@ -11432,54 +11773,55 @@ FtlLoadSysInfo: str wzr, [x0,244] str wzr, [x0,252] str wzr, [x0,212] - bls .L1746 + bls .L1828 str w1, [x0,232] -.L1746: - add x0, x19, :lo12:.LANCHOR2 +.L1828: + add x0, x20, :lo12:.LANCHOR2 ldr w1, [x0,-28] ldr w2, [x0,236] cmp w1, w2 - bls .L1747 + bls .L1829 str w1, [x0,236] -.L1747: +.L1829: mov w0, 65535 cmp w3, w0 - beq .L1748 - add x0, x19, :lo12:.LANCHOR2 + beq .L1830 + add x0, x20, :lo12:.LANCHOR2 add x0, x0, 40 bl make_superblock -.L1748: - add x1, x19, :lo12:.LANCHOR2 +.L1830: + add x1, x20, :lo12:.LANCHOR2 add x0, x1, 88 ldrh w2, [x1,88] mov w1, 65535 cmp w2, w1 - beq .L1749 + beq .L1831 bl make_superblock -.L1749: - add x1, x19, :lo12:.LANCHOR2 +.L1831: + add x1, x20, :lo12:.LANCHOR2 add x0, x1, 136 ldrh w2, [x1,136] mov w1, 65535 cmp w2, w1 - beq .L1750 + beq .L1832 bl make_superblock -.L1750: - add x19, x19, :lo12:.LANCHOR2 +.L1832: + add x20, x20, :lo12:.LANCHOR2 mov w1, 65535 - add x0, x19, 280 - ldrh w2, [x19,280] + add x0, x20, 280 mov w19, 0 + ldrh w2, [x20,280] cmp w2, w1 - beq .L1738 + beq .L1817 bl make_superblock -.L1738: +.L1817: mov w0, w19 - ldr x25, [sp,64] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 96 ret .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 @@ -11506,7 +11848,7 @@ FtlDumpBlockInfo: add x1, x1, 16 add x0, x0, :lo12:.LC106 adrp x21, .LANCHOR2 - ldrh w24, [x19,2018] + ldrh w24, [x19,2024] bl printk ubfiz x2, x23, 1, 16 adrp x0, .LC107 @@ -11518,47 +11860,47 @@ FtlDumpBlockInfo: strh w23, [x29,112] add x0, x29, 112 bl make_superblock - cbnz w25, .L1764 - ldrb w0, [x19,120] - cbz w0, .L1764 + cbnz w25, .L1852 + ldrb w0, [x19,196] + cbz w0, .L1852 mov w0, w23 bl ftl_get_blk_mode cmp w0, 1 mov w23, w0 - bne .L1756 - ldrh w24, [x19,2020] - b .L1756 -.L1764: + bne .L1844 + ldrh w24, [x19,2026] + b .L1844 +.L1852: mov w23, 0 -.L1756: +.L1844: add x3, x22, :lo12:.LANCHOR0 adrp x0, .LC108 adrp x25, .LC109 add x0, x0, :lo12:.LC108 mov w1, w23 mov w2, w24 - ldrh w3, [x3,2018] + ldrh w3, [x3,2024] mov w20, 0 mov w27, 65535 mov w28, 56 mov w26, 4 add x25, x25, :lo12:.LC109 bl printk -.L1757: +.L1845: add x0, x22, :lo12:.LANCHOR0 - ldrh w5, [x0,1948] - ldrh w6, [x0,2028] - ldrh w7, [x0,2030] + ldrh w5, [x0,1956] + ldrh w6, [x0,2034] + ldrh w7, [x0,2036] mov x0, 0 mov w19, w0 -.L1758: +.L1846: cmp w5, w0, uxth - bls .L1772 + bls .L1860 add x1, x29, 112 add x1, x1, x0, lsl 1 ldrh w2, [x1,16] cmp w2, w27 - beq .L1759 + beq .L1847 add x3, x21, :lo12:.LANCHOR2 orr w2, w20, w2, lsl 10 umull x1, w19, w28 @@ -11579,10 +11921,10 @@ FtlDumpBlockInfo: sdiv w2, w2, w26 add x2, x3, x2, sxtw 2 str x2, [x1,16] -.L1759: +.L1847: add x0, x0, 1 - b .L1758 -.L1772: + b .L1846 +.L1860: add x0, x21, :lo12:.LANCHOR2 mov w1, w19 mov w2, w23 @@ -11590,9 +11932,9 @@ FtlDumpBlockInfo: bl FlashReadPages mov x8, 0 mov x9, 56 -.L1761: +.L1849: cmp w19, w8, uxth - bls .L1773 + bls .L1861 add x0, x21, :lo12:.LANCHOR2 ldrh w1, [x29,112] mul x2, x8, x9 @@ -11617,13 +11959,13 @@ FtlDumpBlockInfo: ldr x8, [x29,104] ldr x9, [x29,96] add x8, x8, 1 - b .L1761 -.L1773: + b .L1849 +.L1861: add w20, w20, 1 uxth w20, w20 cmp w20, w24 - bne .L1757 -.L1763: + bne .L1845 +.L1851: sub sp, x29, #16 mov w0, 0 ldp x19, x20, [sp,32] @@ -11659,12 +12001,12 @@ FtlScanAllBlock: add x24, x24, :lo12:.LC112 stp x25, x26, [sp,80] bl printk -.L1775: +.L1863: adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x19,1958] + ldrh w0, [x19,1966] cmp w0, w20 - bls .L1784 + bls .L1872 mov w0, w20 adrp x21, .LANCHOR2 strh w20, [x29,80] @@ -11679,21 +12021,21 @@ FtlScanAllBlock: add x0, x29, 80 bl make_superblock mov x1, 0 - ldrh w6, [x19,1948] - ldrh w7, [x19,2028] + ldrh w6, [x19,1956] + ldrh w7, [x19,2034] mov w9, 65535 - ldrh w8, [x19,2030] + ldrh w8, [x19,2036] mov w10, 56 mov w19, w1 mov w5, 4 -.L1776: +.L1864: cmp w6, w1, uxth - bls .L1785 + bls .L1873 add x0, x29, 80 add x0, x0, x1, lsl 1 ldrh w2, [x0,16] cmp w2, w9 - beq .L1777 + beq .L1865 add x3, x21, :lo12:.LANCHOR2 lsl w2, w2, 10 umull x0, w19, w10 @@ -11714,10 +12056,10 @@ FtlScanAllBlock: sdiv w0, w0, w5 add x0, x3, x0, sxtw 2 str x0, [x2,16] -.L1777: +.L1865: add x1, x1, 1 - b .L1776 -.L1785: + b .L1864 +.L1873: add x0, x21, :lo12:.LANCHOR2 mov w1, w19 mov w2, 0 @@ -11725,10 +12067,10 @@ FtlScanAllBlock: mov x26, 56 ldr x0, [x0,2048] bl FlashReadPages -.L1779: +.L1867: add x0, x21, :lo12:.LANCHOR2 cmp w19, w25, uxth - bls .L1786 + bls .L1874 ldr x4, [x0,2048] mul x2, x25, x26 ldrh w1, [x29,80] @@ -11748,17 +12090,17 @@ FtlScanAllBlock: ldr w3, [x3,4] ldr w7, [x7,12] bl printk - b .L1779 -.L1786: + b .L1867 +.L1874: ldr x0, [x0,2048] mov w1, w19 mov w2, 1 mov x25, 0 mov x26, 56 bl FlashReadPages -.L1781: +.L1869: cmp w19, w25, uxth - bls .L1787 + bls .L1875 add x0, x21, :lo12:.LANCHOR2 ldrh w1, [x29,80] mul x2, x25, x26 @@ -11779,12 +12121,12 @@ FtlScanAllBlock: ldr w3, [x3,4] ldr w7, [x7,12] bl printk - b .L1781 -.L1787: + b .L1869 +.L1875: add w20, w20, 1 uxth w20, w20 - b .L1775 -.L1784: + b .L1863 +.L1872: sub sp, x29, #16 mov w0, 0 ldp x19, x20, [sp,32] @@ -11796,222 +12138,88 @@ FtlScanAllBlock: ret .size FtlScanAllBlock, .-FtlScanAllBlock .align 2 - .global FtlGcScanTempBlk - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: - stp x29, x30, [sp, -160]! - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR1 - mov x19, x0 - add x0, x20, :lo12:.LANCHOR1 - str w1, [x29,152] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - str x20, [x29,144] - ldrh w28, [x0,3168] - mov w0, 65535 - cmp w28, w0 - beq .L1810 - cbnz w28, .L1789 - b .L1790 -.L1810: - mov w28, 0 -.L1789: - adrp x0, .LANCHOR0+2018 - ldr w1, [x29,152] - ldrh w0, [x0,#:lo12:.LANCHOR0+2018] - cmp w1, w0 - bne .L1791 -.L1790: - bl FtlGcPageVarInit -.L1791: - mov w0, -1 - str w0, [x29,156] + .global ftl_scan_all_ppa + .type ftl_scan_all_ppa, %function +ftl_scan_all_ppa: + sub sp, sp, #96 adrp x0, .LC113 - mov w21, 0 add x0, x0, :lo12:.LC113 - mov w22, 65535 - adrp x23, .LANCHOR0 - str x0, [x29,136] -.L1804: - ldrh w0, [x19] - strb wzr, [x19,8] - cmp w0, w22 - beq .L1811 -.L1793: - adrp x27, .LANCHOR2 -.L1807: - add x0, x23, :lo12:.LANCHOR0 - mov x2, x19 - mov w20, 0 - mov w9, 4 - ldrh w5, [x0,1948] - ldrh w8, [x0,2030] - add x5, x19, x5, lsl 1 -.L1794: - cmp x2, x5 - beq .L1819 - ldrh w1, [x2,16] - cmp w1, w22 - beq .L1795 - add x6, x27, :lo12:.LANCHOR2 - mov w0, 56 - orr w1, w28, w1, lsl 10 - add w4, w20, 1 - umull x0, w20, w0 - ldr x7, [x6,2048] - add x7, x7, x0 - str w1, [x7,4] - ldr x1, [x6,2048] - ldr x6, [x6,888] - add x0, x1, x0 - mul w1, w20, w8 - uxth w20, w4 - str xzr, [x0,8] - sdiv w1, w1, w9 - add x1, x6, x1, sxtw 2 - str x1, [x0,16] -.L1795: - add x2, x2, 2 - b .L1794 -.L1819: - add x0, x27, :lo12:.LANCHOR2 - mov w1, w20 - mov w2, 0 - mov x24, 0 - adrp x25, .LANCHOR2 - ldr x0, [x0,2048] - bl FlashReadPages -.L1797: - cmp w20, w24, uxth - bls .L1820 - add x1, x25, :lo12:.LANCHOR2 - mov x0, 56 - str x1, [x29,104] - mul x26, x24, x0 - ldr x10, [x1,2048] - str x10, [x29,112] - add x9, x10, x26 - str x9, [x29,120] - ldr w2, [x9,4] - str x2, [x29,128] - lsr x0, x2, 10 - bl P2V_plane - uxth w7, w0 - ldr x10, [x29,112] - ldr x2, [x29,128] - ldr w0, [x10,x26] - cbnz w0, .L1798 - ldr x9, [x29,120] - add x24, x24, 1 - ldr x1, [x29,104] - ldr x5, [x9,16] - ldrh w0, [x5] - cmp w0, w22 - bne .L1799 - mov w0, 1 - str w0, [x1,2344] - b .L1792 -.L1799: - mov w1, w2 - ldr w0, [x5,12] - ldr w2, [x5,8] - bl FtlGcUpdatePage - b .L1797 -.L1798: - ldrh w1, [x19] - ldr x0, [x29,136] + stp x29, x30, [sp,16] + add x29, sp, 16 + stp x19, x20, [sp,32] + adrp x20, .LANCHOR0 + str x25, [sp,80] + add x2, x20, :lo12:.LANCHOR0 + adrp x19, .LANCHOR4 + stp x21, x22, [sp,48] + stp x23, x24, [sp,64] + add x19, x19, :lo12:.LANCHOR4 + adrp x23, .LC114 + ldrh w1, [x2,2022] + mov w22, 0 + ldrh w2, [x2,2024] + add x19, x19, 160 + add x23, x23, :lo12:.LC114 bl printk - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldr w1, [x0,1940] - cbnz w1, .L1800 - ldrb w0, [x0,120] - cbz w0, .L1801 -.L1800: - add x0, x25, :lo12:.LANCHOR2 - ldrh w1, [x19] - ldr x0, [x0,-80] - ldrh w0, [x0,x1,lsl 1] - cmp w0, 159 - bls .L1802 -.L1801: - add x0, x25, :lo12:.LANCHOR2 - ldr x0, [x0,2048] - ldr w0, [x0,x26] - cmn w0, #1 - bne .L1803 -.L1802: - add x0, x25, :lo12:.LANCHOR2 - ldr x0, [x0,2048] - add x5, x0, x26 - ldr w0, [x5,4] - str w0, [x29,156] -.L1803: - ldrh w1, [x19] - mov w28, 0 - ldr x0, [x25,#:lo12:.LANCHOR2] - strh wzr, [x0,x1,lsl 1] - ldrh w0, [x19] - bl INSERT_FREE_LIST - mov w0, -1 - strh w0, [x19] - bl FtlGcPageVarInit - b .L1804 -.L1820: - ldr w0, [x29,152] - add w21, w21, 1 - add w3, w28, 1 +.L1877: + add x0, x20, :lo12:.LANCHOR0 + ldrh w0, [x0,2022] + cmp w22, w0 + bcs .L1879 + lsl w25, w22, 10 + mov w21, 0 + adrp x24, .LANCHOR2 +.L1880: + add x0, x20, :lo12:.LANCHOR0 + ldrh w0, [x0,2024] cmp w21, w0 - uxth w28, w3 - bcs .L1806 -.L1808: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrh w0, [x0,2018] - cmp w0, w28 - bhi .L1807 - b .L1811 -.L1806: - ldr x0, [x29,144] - add x1, x0, :lo12:.LANCHOR1 - ldrh w0, [x1,3168] - cmp w0, w22 - beq .L1808 - add w0, w0, w21 - strh w0, [x1,3168] - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrh w0, [x0,2018] - cmp w0, w28 - bls .L1808 - b .L1809 -.L1811: - mov w7, 0 -.L1792: - ldr x0, [x29,144] - mov w1, w28 - strh w28, [x19,2] - mov w2, w7 - add x20, x0, :lo12:.LANCHOR1 - mov w0, -1 - strb w7, [x19,6] - strh w0, [x20,3168] + bcs .L1881 + add w0, w21, w25 + str w0, [x19,4] + add x0, x24, :lo12:.LANCHOR2 + mov w2, 0 + str wzr, [x19] + add w21, w21, 1 + ldr x1, [x0,2072] + ldr x0, [x0,2120] + str x1, [x19,8] + mov w1, 1 + str x0, [x19,16] mov x0, x19 - bl ftl_sb_update_avl_pages -.L1809: - ldr w0, [x29,156] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 160 + bl FlashReadPages + ldr x7, [x19,8] + ldr x6, [x19,16] + ldr w0, [x7,4] + str w0, [sp] + mov x0, x23 + ldr w3, [x6] + ldr w4, [x6,4] + ldr w5, [x6,8] + ldr w1, [x19,4] + ldr w2, [x19] + ldr w6, [x6,12] + ldr w7, [x7] + bl printk + b .L1880 +.L1881: + add w22, w22, 1 + b .L1877 +.L1879: + adrp x1, .LANCHOR3 + adrp x0, .LC115 + add x1, x1, :lo12:.LANCHOR3 + add x0, x0, :lo12:.LC115 + add x1, x1, 56 + bl printk + sub sp, x29, #16 + ldp x19, x20, [sp,32] + ldp x21, x22, [sp,48] + ldp x23, x24, [sp,64] + ldr x25, [sp,80] + ldp x29, x30, [sp,16] + add sp, sp, 96 ret - .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 2 .global FlashProgPages .type FlashProgPages, %function @@ -12032,21 +12240,21 @@ FlashProgPages: mov x19, x0 ldr x5, [x4,744] mov w25, w1 - ldrb w4, [x4,8] + ldrb w4, [x4,72] mov w23, w2 mov w22, 0 ldrb w5, [x5,19] - cbz w4, .L1822 + cbz w4, .L1883 bl FlashProgSlc2KPages - b .L1823 -.L1822: + b .L1884 +.L1883: sub w0, w5, #1 mov w27, 56 mov x28, 24 str w0, [x29,116] -.L1874: +.L1935: cmp w22, w25 - bcs .L1875 + bcs .L1936 umull x20, w22, w27 sub w4, w25, w22 add x2, x29, 128 @@ -12060,27 +12268,27 @@ FlashProgPages: ldr w0, [x29,132] ldrb w4, [x2,1845] cmp w0, w4 - bcc .L1824 + bcc .L1885 mov w0, -1 str w0, [x19,x20] - b .L1825 -.L1824: - ldrb w1, [x2,1937] + b .L1886 +.L1885: + ldrb w1, [x2,1945] add x3, x2, 1652 cmp w1, wzr uxtw x1, w0 csel w24, w24, wzr, ne madd x0, x1, x28, x3 ldr x0, [x0,8] - cbz x0, .L1827 + cbz x0, .L1888 cmp w4, 1 - bne .L1828 + bne .L1889 ldr x0, [x2,128] bl NandcIqrWaitFlashReady -.L1828: +.L1889: ldrb w0, [x29,132] bl FlashWaitCmdDone -.L1827: +.L1888: add x0, x21, :lo12:.LANCHOR0 ldr w2, [x29,132] add x0, x0, 1652 @@ -12089,12 +12297,12 @@ FlashProgPages: str x26, [x0,8] str xzr, [x0,16] str w1, [x0,4] - cbz w24, .L1829 + cbz w24, .L1890 add w1, w22, 1 umull x1, w1, w27 add x1, x19, x1 str x1, [x0,16] -.L1829: +.L1890: add x1, x21, :lo12:.LANCHOR0 add x0, x1, x2 madd x2, x2, x28, x1 @@ -12102,17 +12310,17 @@ FlashProgPages: ldrb w0, [x1,1845] strb w20, [x2,1652] cmp w0, 1 - bne .L1830 + bne .L1891 mov w0, w20 bl NandcWaitFlashReady - b .L1831 -.L1830: + b .L1892 +.L1891: mov w0, w20 str x1, [x29,104] bl NandcFlashCs ldr x1, [x29,104] ldr w0, [x29,132] - add x1, x1, 708 + add x1, x1, 712 ldr w0, [x1,x0,lsl 2] ldr w1, [x29,128] cmp w0, wzr @@ -12121,34 +12329,34 @@ FlashProgPages: bl FlashWaitReadyEN mov w0, w20 bl NandcFlashDeCs -.L1831: +.L1892: ldr w0, [x29,116] - cmp w0, 6 - bhi .L1832 + cmp w0, 7 + bhi .L1893 add x2, x21, :lo12:.LANCHOR0 add x0, x2, x20, sxtw ldrb w0, [x0,1616] - cbz w0, .L1832 + cbz w0, .L1893 ldrb w1, [x2,761] mov w0, w20 add x2, x2, 764 mov w3, 0 bl HynixSetRRPara -.L1832: +.L1893: mov w0, w20 bl NandcFlashCs cmp w23, 1 - bne .L1833 + bne .L1894 add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L1833 + ldrb w0, [x0,196] + cbz w0, .L1894 mov w0, w20 bl flash_enter_slc_mode - b .L1834 -.L1833: + b .L1895 +.L1894: mov w0, w20 bl flash_exit_slc_mode -.L1834: +.L1895: ldr w1, [x29,128] mov w0, w20 bl FlashProgFirstCmd @@ -12158,20 +12366,20 @@ FlashProgPages: mov w1, 1 ldr x4, [x26,16] bl NandcXferData - cbz w24, .L1835 + cbz w24, .L1896 ldr w1, [x29,128] mov w0, w20 add x26, x21, :lo12:.LANCHOR0 bl FlashProgDpFirstCmd ldr w1, [x29,132] - add x0, x26, 708 + add x0, x26, 712 ldr w0, [x0,x1,lsl 2] ldr w1, [x29,128] cmp w0, wzr mov w0, w20 cset w2, ne bl FlashWaitReadyEN - ldr w2, [x26,12] + ldr w2, [x26,76] mov w0, w20 ldr w1, [x29,128] add w1, w2, w1 @@ -12185,46 +12393,46 @@ FlashProgPages: ldr x3, [x4,8] ldr x4, [x4,16] bl NandcXferData -.L1835: +.L1896: ldr w1, [x29,128] mov w0, w20 add w22, w22, w24 bl FlashProgSecondCmd mov w0, w20 bl NandcFlashDeCs -.L1825: +.L1886: add w22, w22, 1 - b .L1874 -.L1875: + b .L1935 +.L1936: add x21, x21, :lo12:.LANCHOR0 mov x20, 0 add x22, x21, 1652 mov x24, 24 ldr x0, [x21,128] bl NandcIqrWaitFlashReady -.L1837: +.L1898: ldrb w0, [x21,1845] cmp w0, w20 - bls .L1876 + bls .L1937 mov w0, w20 bl FlashWaitCmdDone cmp w23, 1 - bne .L1838 - ldrb w0, [x21,120] - cbz w0, .L1838 + bne .L1899 + ldrb w0, [x21,196] + cbz w0, .L1899 mul x0, x20, x24 ldrb w0, [x0,x22] bl flash_exit_slc_mode -.L1838: +.L1899: add x20, x20, 1 - b .L1837 -.L1876: + b .L1898 +.L1937: ldr w0, [x29,120] - cbnz w0, .L1840 -.L1848: + cbnz w0, .L1901 +.L1909: mov w0, 0 - b .L1823 -.L1840: + b .L1884 +.L1901: adrp x24, .LC105 adrp x26, .LC104 adrp x27, .LC103 @@ -12232,18 +12440,18 @@ FlashProgPages: add x24, x24, :lo12:.LC105 add x26, x26, :lo12:.LC104 add x27, x27, :lo12:.LC103 -.L1841: +.L1902: cmp w21, w25 - beq .L1848 + beq .L1909 ldr w0, [x19] cmn w0, #1 - bne .L1842 + bne .L1903 adrp x0, .LC102 ldr w1, [x19,4] add x0, x0, :lo12:.LC102 bl printk - b .L1843 -.L1842: + b .L1904 +.L1903: adrp x20, .LANCHOR4 sub w4, w25, w21 add x22, x20, :lo12:.LANCHOR4 @@ -12270,44 +12478,44 @@ FlashProgPages: bl FlashReadPages ldr w22, [x29,136] cmn w22, #1 - bne .L1844 + bne .L1905 ldr w1, [x19,4] mov x0, x27 bl printk str w22, [x19] -.L1844: +.L1905: ldr x0, [x19,16] - cbz x0, .L1845 + cbz x0, .L1906 ldr w2, [x0] add x0, x20, :lo12:.LANCHOR4 ldr x0, [x0,128] ldr w3, [x0] cmp w2, w3 - beq .L1845 + beq .L1906 ldr w1, [x19,4] mov x0, x26 bl printk mov w0, -1 str w0, [x19] -.L1845: +.L1906: ldr x0, [x19,8] - cbz x0, .L1843 + cbz x0, .L1904 add x20, x20, :lo12:.LANCHOR4 ldr w2, [x0] ldr x0, [x20,120] ldr w3, [x0] cmp w2, w3 - beq .L1843 + beq .L1904 ldr w1, [x19,4] mov x0, x24 bl printk mov w0, -1 str w0, [x19] -.L1843: +.L1904: add w21, w21, 1 add x19, x19, 56 - b .L1841 -.L1823: + b .L1902 +.L1884: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -12317,8 +12525,8 @@ FlashProgPages: ret .size FlashProgPages, .-FlashProgPages .align 2 - .type FlashTestBlk.part.15, %function -FlashTestBlk.part.15: + .type FlashTestBlk.part.17, %function +FlashTestBlk.part.17: stp x29, x30, [sp, -160]! mov w1, 165 mov w2, 32 @@ -12358,7 +12566,7 @@ FlashTestBlk.part.15: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 160 ret - .size FlashTestBlk.part.15, .-FlashTestBlk.part.15 + .size FlashTestBlk.part.17, .-FlashTestBlk.part.17 .align 2 .global FlashTestBlk .type FlashTestBlk, %function @@ -12370,10 +12578,10 @@ FlashTestBlk: ldr w2, [x0,#:lo12:.LANCHOR4+92] mov w0, 0 cmp w1, w2 - bcc .L1879 + bcc .L1940 mov w0, w1 - bl FlashTestBlk.part.15 -.L1879: + bl FlashTestBlk.part.17 +.L1940: ldp x29, x30, [sp], 16 ret .size FlashTestBlk, .-FlashTestBlk @@ -12381,156 +12589,165 @@ FlashTestBlk: .global FlashMakeFactorBbt .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: - stp x29, x30, [sp, -240]! + stp x29, x30, [sp, -224]! add x29, sp, 0 stp x19, x20, [sp,16] - adrp x20, .LANCHOR4 - adrp x19, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR4 + adrp x19, .LANCHOR4 + mov w20, 0 + add x0, x19, :lo12:.LANCHOR4 stp x21, x22, [sp,32] - stp x27, x28, [sp,80] stp x23, x24, [sp,48] stp x25, x26, [sp,64] - mov w21, 0 + stp x27, x28, [sp,80] + adrp x21, .LANCHOR0 ldr x0, [x0,112] - str x0, [x29,160] - add x0, x19, :lo12:.LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - add x28, x19, 708 + str x0, [x29,136] + add x0, x21, :lo12:.LANCHOR0 ldrh w1, [x0,180] ldrh w23, [x0,182] + ldrh w26, [x0,76] mul w23, w1, w23 ldr x1, [x0,744] + ldrb w0, [x0,72] uxth w23, w23 ldrb w1, [x1,24] - str w1, [x29,128] - ldrh w1, [x0,12] - str w1, [x29,172] - ldrb w0, [x0,8] - ubfiz w1, w1, 1, 15 cmp w0, 1 - ldr w0, [x29,172] - csel w0, w1, w0, eq - str w0, [x29,172] - adrp x0, .LC114 + str w1, [x29,132] + adrp x0, .LC116 + ubfiz w1, w26, 1, 15 + add x0, x0, :lo12:.LC116 + csel w26, w1, w26, eq mov w1, 1 - add x0, x0, :lo12:.LC114 bl printk - add x0, x20, :lo12:.LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 mov w1, 0 mov w2, 4096 ldr x0, [x0,112] bl ftl_memset lsr w0, w23, 4 - str w0, [x29,168] - ldr w0, [x29,128] + str w0, [x29,128] + ldr w0, [x29,132] and w0, w0, 1 str w0, [x29,116] + ldr w0, [x29,132] + and w0, w0, 2 + uxtb w0, w0 + str w0, [x29,112] sub w0, w23, #1 uxth w0, w0 str w0, [x29,124] -.L1883: - ldrb w0, [x19,1845] - cmp w0, w21 - bls .L1934 - sxtw x25, w21 - add x0, x20, :lo12:.LANCHOR4 +.L1944: + add x24, x21, :lo12:.LANCHOR0 + ldrb w0, [x24,1845] + cmp w0, w20 + bls .L1995 + sxtw x25, w20 + add x0, x19, :lo12:.LANCHOR4 add x1, x0, x25, lsl 1 ldrh w22, [x1,144] - cbnz w22, .L1913 - ldrh w2, [x19,188] + cbnz w22, .L1974 + ldrh w2, [x24,188] mov w1, w22 ldr x0, [x0,56] - mov w26, w22 + add x24, x24, x25 lsl w2, w2, 9 - mov w24, w22 + mov w27, w22 bl ftl_memset - add x0, x19, x25 - ldrb w27, [x0,1848] - ldr w0, [x29,128] - and w0, w0, 2 + ldrb w28, [x24,1848] + ldr w0, [x29,132] + mov w24, w22 + and w0, w0, 4 uxtb w0, w0 str w0, [x29,120] -.L1885: - uxth w0, w26 +.L1946: + uxth w0, w27 str w0, [x29,144] cmp w0, w23 - bcs .L1895 + bcs .L1956 mov w0, -1 - strb w0, [x29,182] - strb w0, [x29,183] + strb w0, [x29,166] + strb w0, [x29,167] ldr w0, [x29,116] - cbz w0, .L1887 - ldr w3, [x28,x25,lsl 2] - mov w0, w27 - add x2, x29, 182 + cbz w0, .L1948 + add x4, x21, :lo12:.LANCHOR0 + add x2, x29, 166 + add x0, x4, 712 + str x4, [x29,96] + ldr w3, [x0,x25,lsl 2] + mov w0, w28 add w3, w22, w3 str x3, [x29,104] mov w1, w3 bl FlashReadSpare - ldrb w0, [x19,8] + ldr x4, [x29,96] ldr x3, [x29,104] + ldrb w0, [x4,72] cmp w0, 1 - bne .L1887 - ldr w1, [x19,12] - mov w0, w27 - add x2, x29, 183 + bne .L1948 + ldr w1, [x4,76] + mov w0, w28 + add x2, x29, 167 add w1, w3, w1 bl FlashReadSpare - ldrb w0, [x29,182] - ldrb w1, [x29,183] + ldrb w0, [x29,166] + ldrb w1, [x29,167] and w0, w1, w0 - strb w0, [x29,182] -.L1887: - ldr w0, [x29,120] - cbz w0, .L1889 - ldr x0, [x19,744] - add x2, x29, 183 - ldrh w1, [x0,10] - ldr w0, [x28,x25,lsl 2] + strb w0, [x29,166] +.L1948: + ldr w0, [x29,112] + cbz w0, .L1950 + add x0, x21, :lo12:.LANCHOR0 + add x2, x29, 167 + add x0, x0, 712 + ldr x1, [x0,32] + ldr w0, [x0,x25,lsl 2] + ldrh w1, [x1,10] sub w1, w1, #1 add w1, w1, w0 - mov w0, w27 + mov w0, w28 add w1, w1, w22 bl FlashReadSpare -.L1889: - ldr x0, [x19,744] - ldrb w1, [x29,182] +.L1950: + add x0, x21, :lo12:.LANCHOR0 + ldrb w1, [x29,166] + ldr x0, [x0,744] ldrb w0, [x0,7] cmp w0, 8 - beq .L1914 + beq .L1975 cmp w0, 1 - bne .L1890 -.L1914: + bne .L1951 +.L1975: mov w0, 1 - cbz w1, .L1892 - ldrb w0, [x29,183] + cbz w1, .L1953 + ldrb w0, [x29,167] cmp w0, wzr cset w0, eq - b .L1892 -.L1890: + b .L1953 +.L1951: cmp w1, 255 mov w0, 1 - bne .L1892 - ldrb w0, [x29,183] + bne .L1953 + ldrb w0, [x29,167] cmp w0, 255 cset w0, ne -.L1892: - ldr x1, [x29,128] - tbz x1, 2, .L1893 - ldr w1, [x28,x25,lsl 2] - mov w0, w27 +.L1953: + ldr w1, [x29,120] + cbz w1, .L1954 + add x0, x21, :lo12:.LANCHOR0 + add x0, x0, 712 + ldr w1, [x0,x25,lsl 2] + mov w0, w28 add w1, w22, w1 bl SandiskProgTestBadBlock -.L1893: - cbz w0, .L1894 - adrp x0, .LC115 - mov w1, w21 - mov w2, w26 - add x0, x0, :lo12:.LC115 +.L1954: + cbz w0, .L1955 + adrp x0, .LC117 + mov w1, w20 + mov w2, w27 + add x0, x0, :lo12:.LC117 add w24, w24, 1 bl printk - add x0, x20, :lo12:.LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 ldr x1, [x29,144] ldrb w3, [x29,144] uxth w24, w24 @@ -12542,80 +12759,82 @@ FlashMakeFactorBbt: ldr w3, [x2,x1] orr w0, w3, w0 str w0, [x2,x1] - ldr w1, [x29,168] - ldrb w0, [x19,1845] + add x0, x21, :lo12:.LANCHOR0 + ldr w1, [x29,128] + ldrb w0, [x0,1845] mul w0, w1, w0 cmp w24, w0 - bgt .L1895 -.L1894: - ldr w0, [x29,172] - add w26, w26, 1 - add w22, w22, w0 - b .L1885 -.L1895: - adrp x0, .LC116 - mov w1, w21 - add x0, x0, :lo12:.LC116 + bgt .L1956 +.L1955: + add w27, w27, 1 + add w22, w22, w26 + b .L1946 +.L1956: + adrp x0, .LC118 + mov w1, w20 mov w2, w24 + add x0, x0, :lo12:.LC118 bl printk - ldrb w0, [x19,1845] - ldr w1, [x29,168] - mul w0, w1, w0 + add x1, x21, :lo12:.LANCHOR0 + ldr w2, [x29,128] + ldrb w0, [x1,1845] + mul w0, w2, w0 cmp w24, w0 - blt .L1897 - add x0, x20, :lo12:.LANCHOR4 - ldrh w2, [x19,188] + blt .L1958 + add x0, x19, :lo12:.LANCHOR4 + ldrh w2, [x1,188] mov w1, 0 lsl w2, w2, 9 ldr x0, [x0,56] bl ftl_memset -.L1897: - cbnz w21, .L1899 - add x0, x20, :lo12:.LANCHOR4 - adrp x26, .LC117 - mov w22, w21 - add x26, x26, :lo12:.LC117 +.L1958: + cbnz w20, .L1960 + add x0, x19, :lo12:.LANCHOR4 + adrp x27, .LC119 + mov w22, w20 + add x27, x27, :lo12:.LC119 mov w24, 1 - ldrh w27, [x0,92] -.L1900: - ldrb w0, [x19,9] - cmp w0, w27 - bls .L1935 - mov w0, w27 + ldrh w28, [x0,92] +.L1961: + add x0, x21, :lo12:.LANCHOR0 + ldrb w0, [x0,73] + cmp w0, w28 + bls .L1996 + mov w0, w28 bl FlashTestBlk - cbz w0, .L1901 - mov w1, w27 - mov x0, x26 + cbz w0, .L1962 + mov w1, w28 + mov x0, x27 add w22, w22, 1 bl printk - add x0, x20, :lo12:.LANCHOR4 - ubfx x1, x27, 5, 11 + add x0, x19, :lo12:.LANCHOR4 + ubfx x1, x28, 5, 11 lsl x1, x1, 2 uxth w22, w22 ldr x2, [x0,56] - lsl w0, w24, w27 + lsl w0, w24, w28 ldr w3, [x2,x1] orr w0, w3, w0 str w0, [x2,x1] -.L1901: - add w27, w27, 1 - uxth w27, w27 - b .L1900 -.L1935: - adrp x26, .LC117 +.L1962: + add w28, w28, 1 + uxth w28, w28 + b .L1961 +.L1996: + adrp x27, .LC119 ldr w24, [x29,124] - sub w27, w23, #50 - add x26, x26, :lo12:.LC117 -.L1903: - cmp w24, w27 - ble .L1936 + sub w28, w23, #50 + add x27, x27, :lo12:.LC119 +.L1964: + cmp w24, w28 + ble .L1997 mov w0, w24 bl FlashTestBlk - cbz w0, .L1904 + cbz w0, .L1965 mov w1, w24 - mov x0, x26 + mov x0, x27 bl printk - add x0, x20, :lo12:.LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 ubfx x1, x24, 5, 11 lsl x1, x1, 2 ldr x3, [x0,56] @@ -12624,85 +12843,86 @@ FlashMakeFactorBbt: ldr w4, [x3,x1] orr w0, w4, w0 str w0, [x3,x1] -.L1904: +.L1965: sub w2, w24, #1 uxth w24, w2 - b .L1903 -.L1936: - add x1, x20, :lo12:.LANCHOR4 - ldrb w0, [x19,9] - ldr w2, [x1,92] - sub w0, w0, w2 + b .L1964 +.L1997: + add x2, x21, :lo12:.LANCHOR0 + add x1, x19, :lo12:.LANCHOR4 + ldrb w0, [x2,73] + ldr w3, [x1,92] + sub w0, w0, w3 cmp w22, w0 - bcc .L1899 - ldrh w2, [x19,188] + bcc .L1960 + ldrh w2, [x2,188] ldr x0, [x1,56] mov w1, 0 lsl w2, w2, 9 bl ftl_memset -.L1899: - adrp x24, .LC118 - ldr w27, [x29,124] - mul w26, w21, w23 - add x24, x24, :lo12:.LC118 +.L1960: + adrp x24, .LC120 + ldr w28, [x29,124] + mul w27, w20, w23 + add x24, x24, :lo12:.LC120 lsl x25, x25, 1 mov w22, -3872 -.L1907: - mov w2, w27 +.L1968: + mov w2, w28 mov x0, x24 - mov w1, w21 + mov w1, w20 bl printk - add x0, x20, :lo12:.LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 ldr x2, [x0,56] -.L1908: - ubfx x0, x27, 5, 11 +.L1969: + ubfx x0, x28, 5, 11 ldr w0, [x2,x0,lsl 2] - lsr w0, w0, w27 + lsr w0, w0, w28 and w1, w0, 1 - tbz x0, 0, .L1937 - sub w27, w27, #1 - uxth w27, w27 - b .L1908 -.L1937: - add x0, x20, :lo12:.LANCHOR4 + tbz x0, 0, .L1998 + sub w28, w28, #1 + uxth w28, w28 + b .L1969 +.L1998: + add x0, x19, :lo12:.LANCHOR4 add x2, x0, x25 - strh w27, [x2,144] - ldr x2, [x29,160] + strh w28, [x2,144] + ldr x2, [x29,136] strh w22, [x2] - strh w27, [x2,2] + strh w28, [x2,2] strh w1, [x2,8] ldr x1, [x0,56] ldr x0, [x0,112] - str x0, [x29,200] - add w0, w27, w26 - str x1, [x29,192] + str x0, [x29,184] + add w0, w28, w27 + str x1, [x29,176] lsl w0, w0, 10 mov w1, 1 - str w0, [x29,188] + str w0, [x29,172] mov w2, w1 - add x0, x29, 184 + add x0, x29, 168 bl FlashEraseBlocks mov w1, 1 - add x0, x29, 184 + add x0, x29, 168 mov w2, w1 mov w3, w1 bl FlashProgPages - ldr w0, [x29,184] - cbz w0, .L1913 - sub w27, w27, #1 - uxth w27, w27 - b .L1907 -.L1913: - add w21, w21, 1 - uxtb w21, w21 - b .L1883 -.L1934: + ldr w0, [x29,168] + cbz w0, .L1974 + sub w28, w28, #1 + uxth w28, w28 + b .L1968 +.L1974: + add w20, w20, 1 + uxtb w20, w20 + b .L1944 +.L1995: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 240 + ldp x29, x30, [sp], 224 ret .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 2 @@ -12722,41 +12942,41 @@ FtlLowFormatEraseBlock: add x1, x20, :lo12:.LANCHOR2 uxth w26, w0 stp x27, x28, [sp,80] - ldrb w0, [x24,1937] + ldrb w0, [x24,1945] ldr w2, [x1,-96] str w0, [x29,120] mov w0, 0 - cbnz w2, .L1939 - ldrb w0, [x24,120] + cbnz w2, .L2000 + ldrb w0, [x24,196] mov w28, w2 str w0, [x29,124] mov w21, w2 str w26, [x1,2036] mov w19, w2 mov w27, 56 -.L1940: - ldrh w0, [x24,1948] +.L2001: + ldrh w0, [x24,1956] cmp w0, w28 - bls .L1984 + bls .L2045 add x1, x20, :lo12:.LANCHOR2 umull x0, w28, w27 ldr x1, [x1,-88] str wzr, [x1,x0] - add x0, x24, 1976 + add x0, x24, 1984 mov w1, w26 ldrb w0, [x0,w28,sxtw] bl V2P_block uxth w23, w0 mov w1, w23 - cbz w25, .L1941 + cbz w25, .L2002 str x1, [x29,112] bl IsBlkInVendorPart ldr x1, [x29,112] - cbnz w0, .L1942 -.L1941: + cbnz w0, .L2003 +.L2002: mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L1943 + cbnz w0, .L2004 add x3, x20, :lo12:.LANCHOR2 lsl w23, w23, 10 umull x0, w21, w27 @@ -12767,7 +12987,7 @@ FtlLowFormatEraseBlock: ldr x1, [x3,-88] ldr x3, [x3,2128] add x1, x1, x0 - ldrh w0, [x24,2030] + ldrh w0, [x24,2036] mul w0, w21, w0 add w21, w21, 1 str xzr, [x1,8] @@ -12775,19 +12995,19 @@ FtlLowFormatEraseBlock: uxth w21, w21 add x0, x3, x0, sxtw 2 str x0, [x1,16] - b .L1942 -.L1943: + b .L2003 +.L2004: add w19, w19, 1 uxth w19, w19 -.L1942: +.L2003: add w2, w28, 1 uxth w28, w2 - b .L1940 -.L1984: - cbz w21, .L1963 + b .L2001 +.L2045: + cbz w21, .L2024 ldr w0, [x29,124] mov w2, w21 - strb wzr, [x24,1937] + strb wzr, [x24,1945] mov x27, 56 cmp w0, wzr add x0, x20, :lo12:.LANCHOR2 @@ -12796,77 +13016,77 @@ FtlLowFormatEraseBlock: ldr x0, [x0,-88] bl FlashEraseBlocks ldrb w0, [x29,120] - strb w0, [x24,1937] + strb w0, [x24,1945] mov x24, 0 -.L1946: +.L2007: cmp w21, w24, uxth - bls .L1985 + bls .L2046 add x1, x20, :lo12:.LANCHOR2 mul x0, x24, x27 ldr x1, [x1,-88] add x2, x1, x0 ldr w0, [x1,x0] cmn w0, #1 - bne .L1947 + bne .L2008 ldr w0, [x2,4] add w19, w19, 1 lsr w0, w0, 10 uxth w19, w19 bl FtlBbmMapBadBlock -.L1947: +.L2008: add x24, x24, 1 - b .L1946 -.L1985: - cbnz w25, .L1949 + b .L2007 +.L2046: + cbnz w25, .L2010 mov w0, 1 uxth w23, w23 mov w28, 6 str w0, [x29,124] - b .L1950 -.L1949: + b .L2011 +.L2010: add x0, x22, :lo12:.LANCHOR0 - ldrh w1, [x0,2020] - ldrb w0, [x0,120] + ldrh w1, [x0,2026] + ldrb w0, [x0,196] str w1, [x29,124] - cbnz w0, .L1966 + cbnz w0, .L2027 uxtw x0, w1 mov w23, 1 lsr w28, w0, 2 - b .L1950 -.L1966: + b .L2011 +.L2027: mov w23, 1 mov w28, w23 -.L1950: +.L2011: mov w24, 0 add x22, x22, :lo12:.LANCHOR0 -.L1959: +.L2020: mov w27, 0 mov w21, w27 -.L1951: - ldrh w0, [x22,1948] +.L2012: + ldrh w0, [x22,1956] cmp w0, w27 - bls .L1986 + bls .L2047 add x1, x20, :lo12:.LANCHOR2 mov w0, 56 umull x0, w27, w0 ldr x1, [x1,-88] str wzr, [x1,x0] - add x0, x22, 1976 + add x0, x22, 1984 mov w1, w26 ldrb w0, [x0,w27,sxtw] bl V2P_block uxth w2, w0 str w2, [x29,112] mov w1, w2 - cbz w25, .L1952 + cbz w25, .L2013 str x1, [x29,104] bl IsBlkInVendorPart ldr x1, [x29,104] - cbnz w0, .L1953 -.L1952: + cbnz w0, .L2014 +.L2013: mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L1953 + cbnz w0, .L2014 add x2, x20, :lo12:.LANCHOR2 mov w0, 56 ldr w3, [x29,112] @@ -12881,39 +13101,39 @@ FtlLowFormatEraseBlock: ldr x0, [x2,2104] ldr x2, [x2,2112] str x0, [x1,8] - ldrh w0, [x22,2030] + ldrh w0, [x22,2036] mul w0, w21, w0 add w21, w21, 1 sdiv w0, w0, w3 uxth w21, w21 add x0, x2, x0, sxtw 2 str x0, [x1,16] -.L1953: +.L2014: add w4, w27, 1 uxth w27, w4 - b .L1951 -.L1986: - cbz w21, .L1963 + b .L2012 +.L2047: + cbz w21, .L2024 add x0, x20, :lo12:.LANCHOR2 mov w1, w21 mov w2, w23 mov w3, 1 - strb wzr, [x22,1937] + strb wzr, [x22,1945] ldr x0, [x0,-88] bl FlashProgPages ldrb w0, [x29,120] mov x1, 0 - strb w0, [x22,1937] -.L1956: + strb w0, [x22,1945] +.L2017: cmp w21, w1, uxth - bls .L1987 + bls .L2048 add x2, x20, :lo12:.LANCHOR2 mov x0, 56 mul x0, x1, x0 ldr x2, [x2,-88] add x3, x2, x0 ldr w0, [x2,x0] - cbz w0, .L1957 + cbz w0, .L2018 ldr w0, [x3,4] add w19, w19, 1 str x1, [x29,112] @@ -12921,47 +13141,47 @@ FtlLowFormatEraseBlock: uxth w19, w19 bl FtlBbmMapBadBlock ldr x1, [x29,112] -.L1957: +.L2018: add x1, x1, 1 - b .L1956 -.L1987: + b .L2017 +.L2048: add w24, w24, w28 ldr w0, [x29,124] uxth w24, w24 cmp w24, w0 - bcc .L1959 + bcc .L2020 mov x22, 0 mov x24, 56 -.L1960: +.L2021: cmp w21, w22, uxth - bls .L1988 - cbz w25, .L1961 + bls .L2049 + cbz w25, .L2022 add x1, x20, :lo12:.LANCHOR2 mul x0, x22, x24 ldr x1, [x1,-88] add x2, x1, x0 ldr w0, [x1,x0] - cbnz w0, .L1961 + cbnz w0, .L2022 ldr w0, [x2,4] mov w1, 1 lsr w0, w0, 10 bl FtlFreeSysBlkQueueIn -.L1961: +.L2022: add x22, x22, 1 - b .L1960 -.L1988: + b .L2021 +.L2049: cmp w26, 63 - bls .L1967 - cbz w25, .L1963 -.L1967: + bls .L2028 + cbz w25, .L2024 +.L2028: add x20, x20, :lo12:.LANCHOR2 mov w1, w23 mov w2, w21 ldr x0, [x20,-88] bl FlashEraseBlocks -.L1963: +.L2024: mov w0, w19 -.L1939: +.L2000: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -12984,7 +13204,7 @@ FtlBbmTblFlush: stp x25, x26, [sp,64] stp x27, x28, [sp,80] ldr w1, [x2,-96] - cbnz w1, .L1991 + cbnz w1, .L2052 adrp x19, .LANCHOR4 adrp x20, .LANCHOR0 add x24, x19, :lo12:.LANCHOR4 @@ -12994,15 +13214,15 @@ FtlBbmTblFlush: ldr x2, [x2,2120] add x23, x20, 2104 str x2, [x24,176] - ldrh w2, [x20,2028] + ldrh w2, [x20,2034] str x0, [x24,168] bl ftl_memset -.L1992: - ldrh w1, [x20,1970] +.L2053: + ldrh w1, [x20,1978] mov w0, w21 add x21, x21, 1 cmp w0, w1 - bge .L2000 + bge .L2066 add x1, x22, :lo12:.LANCHOR2 ldr x3, [x24,168] ldrh w2, [x1,2248] @@ -13012,20 +13232,20 @@ FtlBbmTblFlush: add x0, x3, x0, sxtw 2 lsl w2, w2, 2 bl ftl_memcpy - b .L1992 -.L2000: + b .L2053 +.L2066: add x19, x19, :lo12:.LANCHOR4 mov w1, 255 add x19, x19, 160 mov w2, 16 mov w24, 0 - adrp x26, .LC119 + adrp x26, .LC121 ldr x21, [x19,16] - adrp x27, .LC120 + adrp x27, .LC122 mov w25, w24 - add x26, x26, :lo12:.LC119 + add x26, x26, :lo12:.LC121 mov x0, x21 - add x27, x27, :lo12:.LC120 + add x27, x27, :lo12:.LC122 bl ftl_memset mov w0, -3887 strh w0, [x21] @@ -13037,9 +13257,9 @@ FtlBbmTblFlush: strh w0, [x21,8] ldrh w0, [x23,6] strh w0, [x21,10] - ldr w0, [x20,1944] + ldr w0, [x20,1952] strh w0, [x21,12] -.L1994: +.L2055: add x28, x22, :lo12:.LANCHOR2 ldrh w1, [x20,2104] ldrh w2, [x20,2106] @@ -13054,11 +13274,11 @@ FtlBbmTblFlush: ldrh w4, [x21,10] str wzr, [x19] bl printk - ldrh w0, [x20,2020] + ldrh w0, [x20,2026] ldrh w1, [x20,2106] sub w0, w0, #1 cmp w1, w0 - blt .L1995 + blt .L2056 ldr w0, [x20,2112] strh wzr, [x20,2106] add w0, w0, 1 @@ -13077,7 +13297,7 @@ FtlBbmTblFlush: mov w2, w1 ldr x0, [x28,-88] bl FlashEraseBlocks -.L1995: +.L2056: mov w1, 1 mov x0, x19 mov w2, w1 @@ -13088,28 +13308,30 @@ FtlBbmTblFlush: strh w0, [x20,2106] ldr w0, [x19] cmn w0, #1 - bne .L1996 + bne .L2057 ldr w1, [x19,4] mov x0, x27 add w24, w24, 1 bl printk uxth w24, w24 cmp w24, 3 - bls .L1994 - adrp x0, .LC121 + bls .L2055 + adrp x0, .LC123 ldr w1, [x19,4] - add x0, x0, :lo12:.LC121 + add x0, x0, :lo12:.LC123 mov w2, w24 add x22, x22, :lo12:.LANCHOR2 bl printk mov w0, 1 str w0, [x22,-96] - b .L1991 -.L1996: - cbnz w25, .L1991 - mov w25, 1 - b .L1994 -.L1991: + b .L2052 +.L2057: + add w25, w25, 1 + cmp w25, 1 + beq .L2055 + cmp w0, 256 + beq .L2055 +.L2052: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13133,15 +13355,15 @@ allocate_data_superblock: stp x25, x26, [sp,64] ldr w1, [x19,-96] stp x27, x28, [sp,80] - cbnz w1, .L2002 + cbnz w1, .L2068 mov x20, x0 add x23, x19, 136 adrp x21, .LANCHOR0 mov w24, 7 add x25, x19, 24 -.L2003: +.L2069: cmp x20, x23 - bne .L2004 + bne .L2070 ldrh w2, [x19,32] ldr w4, [x19,860] lsr w3, w2, 1 @@ -13150,44 +13372,44 @@ allocate_data_superblock: add w1, w1, w0, lsr 2 add x0, x21, :lo12:.LANCHOR0 uxth w1, w1 - ldr w0, [x0,1940] - cbz w0, .L2005 + ldr w0, [x0,1948] + cbz w0, .L2071 ldr w0, [x19,256] cmp w0, 39 - bhi .L2005 + bhi .L2071 cmp w0, 2 mov w1, 0 - bls .L2006 - tbz x2, 0, .L2033 - cbz w4, .L2006 -.L2033: + bls .L2072 + tbz x2, 0, .L2099 + cbz w4, .L2072 +.L2099: mov w1, w3 - b .L2005 -.L2004: + b .L2071 +.L2070: ldrb w0, [x20,8] mov w1, 0 cmp w0, 1 - bne .L2006 + bne .L2072 add x2, x21, :lo12:.LANCHOR0 - ldrh w0, [x2,1968] + ldrh w0, [x2,1976] cmp w0, 1 - beq .L2006 - ldrb w0, [x2,120] - cbnz w0, .L2006 - ldr w2, [x2,1940] + beq .L2072 + ldrb w0, [x2,196] + cbnz w0, .L2072 + ldr w2, [x2,1948] ldrh w0, [x19,32] lsr w1, w0, 3 - cbz w2, .L2005 + cbz w2, .L2071 ldr w2, [x19,256] cmp w2, 1 - bhi .L2005 + bhi .L2071 mul w1, w0, w24 lsr w1, w1, 3 -.L2005: - cbz w1, .L2006 +.L2071: + cbz w1, .L2072 sub w1, w1, #1 uxth w1, w1 -.L2006: +.L2072: ldrb w2, [x20,8] mov x0, x25 add x27, x21, :lo12:.LANCHOR0 @@ -13196,26 +13418,26 @@ allocate_data_superblock: ldrh w0, [x19,32] sub w0, w0, #1 strh w0, [x19,32] - ldrh w0, [x27,1956] + ldrh w0, [x27,1964] cmp w0, w28 - bls .L2003 + bls .L2069 ubfiz x26, x28, 1, 16 ldr x0, [x19] ldrh w0, [x0,x26] - cbnz w0, .L2003 + cbnz w0, .L2069 strh w28, [x20] mov x0, x20 bl make_superblock ldrb w0, [x20,7] - cbz w0, .L2058 + cbz w0, .L2124 mov x0, 0 - ldrh w5, [x27,1948] + ldrh w5, [x27,1956] mov x3, 56 mov w27, w0 mov w6, 65535 -.L2010: +.L2076: cmp w5, w0, uxth - bls .L2061 + bls .L2127 ldr x4, [x19,-88] madd x1, x0, x3, x4 str xzr, [x1,16] @@ -13223,39 +13445,39 @@ allocate_data_superblock: add x1, x20, x0, lsl 1 ldrh w1, [x1,16] cmp w1, w6 - beq .L2011 + beq .L2077 umull x2, w27, w3 add w27, w27, 1 lsl w1, w1, 10 add x2, x4, x2 uxth w27, w27 str w1, [x2,4] -.L2011: +.L2077: add x0, x0, 1 - b .L2010 -.L2061: + b .L2076 +.L2127: add x0, x19, 40 cmp x20, x0 - bne .L2013 + bne .L2079 add x1, x21, :lo12:.LANCHOR0 - ldr w1, [x1,1940] - cbz w1, .L2013 + ldr w1, [x1,1948] + cbz w1, .L2079 ldr x1, [x19,-80] ldrh w1, [x1,x26] cmp w1, 40 - bls .L2013 + bls .L2079 strb wzr, [x19,48] -.L2013: +.L2079: ldrb w0, [x20,8] - cbnz w0, .L2014 + cbnz w0, .L2080 ldr x0, [x19,-80] mov w1, 2 ldrh w2, [x0,x26] - cbz w2, .L2059 + cbz w2, .L2125 add x1, x21, :lo12:.LANCHOR0 - ldrh w1, [x1,2008] + ldrh w1, [x1,2016] add w1, w2, w1 -.L2059: +.L2125: strh w1, [x0,x26] mov w1, 0 ldr w0, [x19,240] @@ -13263,8 +13485,8 @@ allocate_data_superblock: str w0, [x19,240] mov w0, w28 bl ftl_set_blk_mode - b .L2017 -.L2014: + b .L2083 +.L2080: ldr x1, [x19,-80] ldrh w0, [x1,x26] add w0, w0, 1 @@ -13274,20 +13496,20 @@ allocate_data_superblock: str w0, [x19,244] mov w0, w28 bl ftl_set_blk_mode.part.9 -.L2017: +.L2083: ldr x0, [x19,-80] ldr w1, [x19,252] ldrh w0, [x0,x26] cmp w0, w1 - bls .L2018 + bls .L2084 str w0, [x19,252] -.L2018: +.L2084: add x2, x21, :lo12:.LANCHOR0 ldr w3, [x19,240] ldr w0, [x19,244] - ldrh w1, [x2,2008] + ldrh w1, [x2,2016] madd w0, w1, w3, w0 - ldrh w1, [x2,1956] + ldrh w1, [x2,1964] mov x3, 56 udiv w0, w0, w1 ldr x1, [x19,2160] @@ -13296,32 +13518,32 @@ allocate_data_superblock: add w0, w0, 1 str w0, [x1,16] mov x0, 0 -.L2019: +.L2085: cmp w27, w0, uxth - bls .L2062 + bls .L2128 ldr x1, [x19,-88] madd x1, x0, x3, x1 add x0, x0, 1 ldr w2, [x1,4] and w2, w2, -1024 str w2, [x1,4] - b .L2019 -.L2062: + b .L2085 +.L2128: add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L2021 + ldrb w0, [x0,196] + cbz w0, .L2087 ldrb w0, [x20,8] cmp w0, 1 ldr x0, [x19,-88] - bne .L2022 + bne .L2088 mov w1, 0 - b .L2060 -.L2022: + b .L2126 +.L2088: mov w1, 1 -.L2060: +.L2126: mov w2, w27 bl FlashEraseBlocks -.L2021: +.L2087: ldrb w1, [x20,8] mov w2, w27 ldr x0, [x19,-88] @@ -13329,15 +13551,15 @@ allocate_data_superblock: mov x1, 0 mov x4, 56 mov w2, w1 -.L2023: +.L2089: cmp w27, w1, uxth - bls .L2063 + bls .L2129 mul x0, x1, x4 ldr x3, [x19,-88] add x5, x3, x0 ldr w3, [x3,x0] cmn w3, #1 - bne .L2024 + bne .L2090 ldr w0, [x5,4] add w2, w2, 1 str x4, [x29,104] @@ -13356,29 +13578,29 @@ allocate_data_superblock: ldrb w0, [x20,7] sub w0, w0, #1 strb w0, [x20,7] -.L2024: +.L2090: add x1, x1, 1 - b .L2023 -.L2063: - cbz w2, .L2026 + b .L2089 +.L2129: + cbz w2, .L2092 mov w0, w28 bl update_multiplier_value bl FtlBbmTblFlush -.L2026: +.L2092: ldrb w0, [x20,7] - cbnz w0, .L2027 -.L2058: + cbnz w0, .L2093 +.L2124: ldr x0, [x19] mov w1, -1 strh w1, [x0,x26] - b .L2003 -.L2027: + b .L2069 +.L2093: adrp x1, .LANCHOR0 add x2, x22, :lo12:.LANCHOR2 add x1, x1, :lo12:.LANCHOR0 strh wzr, [x20,2] strb wzr, [x20,6] - ldrh w1, [x1,2018] + ldrh w1, [x1,2024] strh w28, [x20] mul w0, w0, w1 ldr w1, [x2,232] @@ -13390,7 +13612,7 @@ allocate_data_superblock: ldr x1, [x22,#:lo12:.LANCHOR2] ldrh w2, [x20] strh w0, [x1,x2,lsl 1] -.L2002: +.L2068: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13415,29 +13637,29 @@ FtlGcFreeBadSuperBlk: ldrh w0, [x19,944] stp x21, x22, [sp,32] mov w21, 0 - cbz w0, .L2066 + cbz w0, .L2132 adrp x22, .LANCHOR0 - adrp x24, .LC122 + adrp x24, .LC124 add x22, x22, :lo12:.LANCHOR0 - add x24, x24, :lo12:.LC122 -.L2074: - ldrh w0, [x22,1948] + add x24, x24, :lo12:.LC124 +.L2140: + ldrh w0, [x22,1956] cmp w0, w21 - bls .L2075 - add x0, x22, 1976 + bls .L2141 + add x0, x22, 1984 mov w1, w23 mov w20, 0 ldrb w0, [x0,w21,sxtw] bl V2P_block uxth w25, w0 -.L2067: +.L2133: ldrh w0, [x19,944] cmp w0, w20 - bls .L2076 + bls .L2142 add x0, x19, 952 ldrh w0, [x0,w20,sxtw 1] cmp w0, w25 - bne .L2068 + bne .L2134 mov w1, w25 mov x0, x24 bl printk @@ -13446,29 +13668,29 @@ FtlGcFreeBadSuperBlk: bl FtlBbmTblFlush ldrh w2, [x19,944] mov w3, w20 -.L2069: +.L2135: cmp w3, w2 - bcs .L2077 + bcs .L2143 add x4, x19, 952 add w0, w3, 1 ldrh w1, [x4,w0,sxtw 1] strh w1, [x4,w3,sxtw 1] uxth w3, w0 - b .L2069 -.L2077: + b .L2135 +.L2143: sub w2, w2, #1 strh w2, [x19,944] -.L2068: +.L2134: add w20, w20, 1 uxth w20, w20 - b .L2067 -.L2076: + b .L2133 +.L2142: add w21, w21, 1 uxth w21, w21 - b .L2074 -.L2075: + b .L2140 +.L2141: bl FtlGcReFreshBadBlk -.L2066: +.L2132: mov w0, 0 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -13490,25 +13712,25 @@ update_vpc_list: add x1, x20, :lo12:.LANCHOR2 ldr x2, [x20,#:lo12:.LANCHOR2] ldrh w2, [x2,x0] - cbnz w2, .L2079 + cbnz w2, .L2145 ldrh w0, [x1,280] cmp w0, w19 - bne .L2080 + bne .L2146 mov w0, -1 strh w0, [x1,280] - b .L2081 -.L2080: + b .L2147 +.L2146: ldrh w3, [x1,40] mov w0, w2 cmp w3, w19 - beq .L2082 + beq .L2148 ldrh w3, [x1,88] cmp w3, w19 - beq .L2082 + beq .L2148 ldrh w1, [x1,136] cmp w1, w19 - beq .L2082 -.L2081: + beq .L2148 +.L2147: add x20, x20, :lo12:.LANCHOR2 mov w1, w19 sub x0, x20, #8 @@ -13521,12 +13743,12 @@ update_vpc_list: mov w0, w19 bl FtlGcFreeBadSuperBlk mov w0, 1 - b .L2082 -.L2079: + b .L2148 +.L2145: mov w0, w19 bl List_update_data_list mov w0, 0 -.L2082: +.L2148: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -13544,15 +13766,15 @@ decrement_vpc_count: str x23, [sp,48] cmp w19, w0 adrp x20, .LANCHOR2 - beq .L2087 + beq .L2153 ubfiz x21, x19, 1, 16 ldr x0, [x20,#:lo12:.LANCHOR2] add x22, x20, :lo12:.LANCHOR2 ldrh w2, [x0,x21] - cbnz w2, .L2088 - adrp x0, .LC123 + cbnz w2, .L2154 + adrp x0, .LC125 mov w1, w19 - add x0, x0, :lo12:.LC123 + add x0, x0, :lo12:.LC125 add x23, x22, 24 bl printk ldr x0, [x20,#:lo12:.LANCHOR2] @@ -13561,7 +13783,7 @@ decrement_vpc_count: mov x0, x23 mov w1, w19 bl test_node_in_list - cbz w0, .L2089 + cbz w0, .L2155 mov w1, w19 mov x0, x23 bl List_remove_node @@ -13571,38 +13793,38 @@ decrement_vpc_count: mov w0, w19 bl INSERT_DATA_LIST ldr x2, [x20,#:lo12:.LANCHOR2] - adrp x0, .LC124 - add x0, x0, :lo12:.LC124 + adrp x0, .LC126 + add x0, x0, :lo12:.LC126 mov w1, w19 ldrh w2, [x2,x21] bl printk -.L2089: +.L2155: mov w0, w19 bl FtlGcRefreshBlock - b .L2096 -.L2088: + b .L2162 +.L2154: sub w2, w2, #1 strh w2, [x0,x21] -.L2087: +.L2153: add x20, x20, :lo12:.LANCHOR2 mov w0, 65535 ldrh w1, [x20,2336] cmp w1, w0 - bne .L2091 + bne .L2157 strh w19, [x20,2336] -.L2096: +.L2162: mov w0, 0 - b .L2090 -.L2091: + b .L2156 +.L2157: cmp w1, w19 mov w0, 0 - beq .L2090 + beq .L2156 mov w0, w1 bl update_vpc_list cmp w0, wzr cset w0, ne strh w19, [x20,2336] -.L2090: +.L2156: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -13618,11 +13840,11 @@ FtlSlcSuperblockCheck: stp x19, x20, [sp,16] stp x21, x22, [sp,32] ldrh w1, [x0,4] - cbz w1, .L2097 + cbz w1, .L2163 ldrh w1, [x0] mov w20, 65535 cmp w1, w20 - beq .L2097 + beq .L2163 mov x19, x0 ldrb w0, [x0,6] adrp x21, .LANCHOR2 @@ -13631,61 +13853,61 @@ FtlSlcSuperblockCheck: add x21, x21, :lo12:.LANCHOR2 add x21, x21, 988 ldrh w0, [x19,x0,lsl 1] -.L2101: +.L2167: cmp w0, w20 - bne .L2108 -.L2103: + bne .L2174 +.L2169: ldrb w0, [x19,6] add x1, x22, :lo12:.LANCHOR0 add w0, w0, 1 - ldrh w1, [x1,1948] + ldrh w1, [x1,1956] uxtb w0, w0 strb w0, [x19,6] cmp w1, w0 - bne .L2102 + bne .L2168 ldrh w0, [x19,2] strb wzr, [x19,6] add w0, w0, 1 strh w0, [x19,2] -.L2102: +.L2168: ldrb w0, [x19,6] add x0, x0, 8 ldrh w0, [x19,x0,lsl 1] - b .L2101 -.L2108: + b .L2167 +.L2174: ldrb w1, [x19,8] cmp w1, 1 - bne .L2104 + bne .L2170 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbnz w0, .L2104 + ldrb w0, [x0,196] + cbnz w0, .L2170 ldrh w0, [x19,2] ldrh w0, [x21,w0,sxtw 1] cmp w0, w20 - bne .L2104 + bne .L2170 ldrh w0, [x19,4] sub w0, w0, #1 strh w0, [x19,4] ldrh w0, [x19] bl decrement_vpc_count ldrh w1, [x19,4] - cbnz w1, .L2103 + cbnz w1, .L2169 ldrh w0, [x19,2] strb w1, [x19,6] add w0, w0, 1 strh w0, [x19,2] - b .L2097 -.L2104: + b .L2163 +.L2170: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w2, [x0,120] - cbz w2, .L2097 + ldrb w2, [x0,196] + cbz w2, .L2163 cmp w1, 1 - bne .L2097 + bne .L2163 ldrh w2, [x19,2] - ldrh w1, [x0,2020] + ldrh w1, [x0,2026] cmp w2, w1 - bcc .L2097 + bcc .L2163 adrp x2, .LANCHOR2 ldrh w1, [x19] ldrh w4, [x19,4] @@ -13695,10 +13917,10 @@ FtlSlcSuperblockCheck: sub w2, w2, w4 strh w2, [x3,x1] strh wzr, [x19,4] - ldrh w0, [x0,2018] + ldrh w0, [x0,2024] strh w0, [x19,2] strb wzr, [x19,6] -.L2097: +.L2163: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -13723,46 +13945,46 @@ get_new_active_ppa: adrp x23, .LANCHOR0 add x21, x21, 988 ldrh w0, [x19,x0,lsl 1] -.L2110: +.L2176: cmp w0, w22 adrp x20, .LANCHOR0 - bne .L2125 -.L2111: + bne .L2191 +.L2177: ldrb w0, [x19,6] add x1, x23, :lo12:.LANCHOR0 add w0, w0, 1 - ldrh w1, [x1,1948] + ldrh w1, [x1,1956] uxtb w0, w0 strb w0, [x19,6] cmp w1, w0 - bne .L2112 + bne .L2178 ldrh w0, [x19,2] strb wzr, [x19,6] add w0, w0, 1 strh w0, [x19,2] -.L2112: +.L2178: ldrb w0, [x19,6] add x0, x0, 8 ldrh w0, [x19,x0,lsl 1] - b .L2110 -.L2125: + b .L2176 +.L2191: ldrb w1, [x19,8] cmp w1, 1 - bne .L2113 + bne .L2179 add x1, x23, :lo12:.LANCHOR0 - ldrb w1, [x1,120] - cbnz w1, .L2113 + ldrb w1, [x1,196] + cbnz w1, .L2179 ldrh w1, [x19,2] ldrh w1, [x21,w1,sxtw 1] cmp w1, w22 - bne .L2113 + bne .L2179 ldrh w0, [x19,4] sub w0, w0, #1 strh w0, [x19,4] ldrh w0, [x19] bl decrement_vpc_count - b .L2111 -.L2113: + b .L2177 +.L2179: ldrh w1, [x19,4] adrp x21, .LANCHOR2 ldrh w22, [x19,2] @@ -13773,50 +13995,50 @@ get_new_active_ppa: strh w1, [x19,4] mov w24, w23 add x21, x21, 988 -.L2114: +.L2180: add x0, x20, :lo12:.LANCHOR0 ldrb w1, [x19,6] - ldrh w2, [x0,1948] -.L2116: + ldrh w2, [x0,1956] +.L2182: add w1, w1, 1 uxtb w1, w1 cmp w1, w2 - bne .L2115 + bne .L2181 ldrh w1, [x19,2] add w1, w1, 1 strh w1, [x19,2] mov w1, 0 -.L2115: +.L2181: add x0, x19, x1, sxtw 1 ldrh w0, [x0,16] cmp w0, w23 - beq .L2116 + beq .L2182 ldrb w0, [x19,8] strb w1, [x19,6] cmp w0, 1 - bne .L2121 + bne .L2187 add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbnz w0, .L2118 + ldrb w0, [x0,196] + cbnz w0, .L2184 ldrh w0, [x19,2] ldrh w0, [x21,w0,sxtw 1] cmp w0, w24 - bne .L2118 + bne .L2184 ldrh w1, [x19,4] - cbz w1, .L2118 + cbz w1, .L2184 ldrh w0, [x19] sub w1, w1, #1 strh w1, [x19,4] bl decrement_vpc_count - b .L2114 -.L2118: + b .L2180 +.L2184: add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,120] - cbz w0, .L2121 + ldrb w0, [x20,196] + cbz w0, .L2187 ldrh w1, [x19,2] - ldrh w0, [x20,2020] + ldrh w0, [x20,2026] cmp w1, w0 - bcc .L2121 + bcc .L2187 adrp x0, .LANCHOR2 ldrh w1, [x19] ldrh w3, [x19,4] @@ -13826,10 +14048,10 @@ get_new_active_ppa: sub w2, w2, w3 strh w2, [x0,x1] strh wzr, [x19,4] - ldrh w0, [x20,2018] + ldrh w0, [x20,2024] strh w0, [x19,2] strb wzr, [x19,6] -.L2121: +.L2187: mov w0, w22 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13851,25 +14073,25 @@ FtlVpcTblFlush: stp x25, x26, [sp,64] ldr w0, [x19,-96] stp x27, x28, [sp,80] - cbnz w0, .L2128 + cbnz w0, .L2194 adrp x23, .LANCHOR4 - ldr x21, [x19,2120] - add x20, x23, :lo12:.LANCHOR4 + ldr x20, [x19,2120] + add x21, x23, :lo12:.LANCHOR4 ldr x1, [x19,2072] ldrh w2, [x19,264] adrp x24, .LANCHOR0 add x25, x24, :lo12:.LANCHOR0 sub x26, x19, #64 - str x1, [x20,168] - add x20, x20, 160 - str x21, [x20,16] - strh w2, [x21,2] + str x1, [x21,168] + add x21, x21, 160 + str x20, [x21,16] + strh w2, [x20,2] mov w2, -3932 - strh w2, [x21] - str w0, [x21,12] + strh w2, [x20] + str w0, [x20,12] ldr w2, [x19,272] - str w2, [x21,4] - str w0, [x21,8] + str w2, [x20,4] + str w0, [x20,8] mov w0, 19539 ldrh w1, [x19,40] movk w0, 0x4654, lsl 16 @@ -13877,7 +14099,7 @@ FtlVpcTblFlush: ldrh w1, [x19,42] ldrb w2, [x19,46] str w0, [x19,-64] - mov w0, 80 + mov w0, 86 orr w1, w2, w1, lsl 6 strh w1, [x19,-48] ldrh w1, [x19,88] @@ -13889,7 +14111,7 @@ FtlVpcTblFlush: ldrh w0, [x19,270] orr w1, w2, w1, lsl 6 strh w0, [x19,-56] - ldrh w0, [x25,1970] + ldrh w0, [x25,1978] strb w0, [x19,-54] ldrb w0, [x19,48] strb w0, [x19,-53] @@ -13913,23 +14135,23 @@ FtlVpcTblFlush: strh w0, [x19,-20] ldrh w0, [x19,938] strh w0, [x19,-18] - ldrh w2, [x25,2028] - ldr x0, [x20,8] + ldrh w2, [x25,2034] + ldr x0, [x21,8] strh w1, [x19,-40] mov w1, 255 bl ftl_memset - ldr x0, [x20,8] + ldr x0, [x21,8] mov x1, x26 mov w2, 48 bl ftl_memcpy - ldr x0, [x20,8] - ldrh w2, [x25,1956] + ldr x0, [x21,8] + ldrh w2, [x25,1964] ldr x1, [x22,#:lo12:.LANCHOR2] add x0, x0, 48 lsl w2, w2, 1 bl ftl_memcpy - ldrh w2, [x25,1956] - ldr x1, [x20,8] + ldrh w2, [x25,1964] + ldr x1, [x21,8] uxth x0, w2 lsr w2, w2, 3 add x0, x0, 24 @@ -13938,41 +14160,41 @@ FtlVpcTblFlush: add x0, x1, x0, lsl 2 ldr x1, [x24,#:lo12:.LANCHOR0] bl ftl_memcpy - ldrh w0, [x25,2064] - cbz w0, .L2129 - ldrh w0, [x25,1956] - ldrh w2, [x25,2056] + ldrh w0, [x25,2068] + cbz w0, .L2195 + ldrh w0, [x25,1964] + ldrh w2, [x25,2060] lsr w1, w0, 3 add w0, w1, w0, lsl 1 - ldr x1, [x20,8] + ldr x1, [x21,8] add w0, w0, 52 lsl w2, w2, 2 and x0, x0, 65532 add x0, x1, x0 ldr x1, [x19,2216] bl ftl_memcpy -.L2129: +.L2195: mov w0, 0 - mov w20, 0 - mov w27, 65535 - add x28, x23, :lo12:.LANCHOR4 + mov w21, 0 + mov w25, 65535 + add x26, x23, :lo12:.LANCHOR4 add x19, x22, :lo12:.LANCHOR2 bl FtlUpdateVaildLpn -.L2130: +.L2196: ldrh w1, [x19,264] ldr x0, [x19,2072] ldrh w2, [x19,266] - str x0, [x28,168] + str x0, [x26,168] ldr x0, [x19,2120] - str x0, [x28,176] + str x0, [x26,176] orr w0, w2, w1, lsl 10 - str w0, [x28,164] + str w0, [x26,164] add x0, x24, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] + ldrh w0, [x0,2026] sub w0, w0, #1 cmp w2, w0 - blt .L2131 - ldrh w27, [x19,268] + blt .L2197 + ldrh w25, [x19,268] strh wzr, [x19,266] strh w1, [x19,268] bl FtlFreeSysBlkQueueOut @@ -13981,56 +14203,64 @@ FtlVpcTblFlush: add w2, w1, 1 str w2, [x19,232] ubfiz w2, w0, 10, 16 - str w2, [x28,164] + str w2, [x26,164] strh w0, [x19,264] - str w1, [x21,4] - strh w0, [x21,2] -.L2131: + str w1, [x20,4] + strh w0, [x20,2] +.L2197: + add x1, x24, :lo12:.LANCHOR0 + ldrb w0, [x1,72] + cbz w0, .L2198 + ldr x0, [x19,2072] + ldrh w1, [x1,2034] + bl js_hash + str w0, [x20,12] +.L2198: mov w1, 1 - add x0, x28, 160 + add x0, x26, 160 mov w2, w1 mov w3, w1 bl FlashProgPages ldrh w1, [x19,266] - ldr w2, [x28,160] + ldr w2, [x26,160] add w1, w1, 1 cmn w2, #1 uxth w1, w1 strh w1, [x19,266] - bne .L2132 + bne .L2199 cmp w1, 1 - bne .L2133 + bne .L2200 add x1, x24, :lo12:.LANCHOR0 - ldrh w1, [x1,2020] + ldrh w1, [x1,2026] sub w1, w1, #1 strh w1, [x19,266] -.L2133: - add w20, w20, 1 - uxth w20, w20 - cmp w20, 3 - bls .L2130 +.L2200: + add w21, w21, 1 + uxth w21, w21 + cmp w21, 3 + bls .L2196 add x23, x23, :lo12:.LANCHOR4 - adrp x0, .LC125 - add x0, x0, :lo12:.LC125 - mov w2, w20 + adrp x0, .LC127 + add x0, x0, :lo12:.LC127 + mov w2, w21 add x22, x22, :lo12:.LANCHOR2 ldr w1, [x23,164] bl printk mov w0, 1 str w0, [x22,-96] - b .L2128 -.L2132: + b .L2194 +.L2199: cmp w1, 1 - beq .L2130 + beq .L2196 cmp w2, 256 - beq .L2130 + beq .L2196 mov w0, 65535 - cmp w27, w0 - beq .L2128 - mov w0, w27 + cmp w25, w0 + beq .L2194 + mov w0, w25 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L2128: +.L2194: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14052,21 +14282,21 @@ FtlSuperblockPowerLostFix: stp x21, x22, [sp,32] stp x23, x24, [sp,48] ldr w1, [x1,-96] - cbnz w1, .L2139 + cbnz w1, .L2209 adrp x21, .LANCHOR0 add x2, x21, :lo12:.LANCHOR0 - ldrb w22, [x2,120] - cbz w22, .L2154 + ldrb w22, [x2,196] + cbz w22, .L2224 ldrb w22, [x0,8] cmp w22, 1 - bne .L2150 + bne .L2220 ldrh w24, [x0,4] - b .L2141 -.L2150: + b .L2211 +.L2220: mov w22, w1 -.L2154: +.L2224: mov w24, 12 -.L2141: +.L2211: mov x19, x0 mov w0, -1 str w0, [x29,96] @@ -14089,13 +14319,13 @@ FtlSuperblockPowerLostFix: mov w0, 22136 movk w0, 0x1234, lsl 16 str w0, [x1,4] -.L2142: +.L2212: sub w24, w24, #1 cmn w24, #1 - beq .L2145 + beq .L2215 ldrh w0, [x19,4] - cbnz w0, .L2143 -.L2145: + cbnz w0, .L2213 +.L2215: ldrh w0, [x19] add x21, x21, :lo12:.LANCHOR0 ldr x2, [x20,#:lo12:.LANCHOR2] @@ -14105,16 +14335,16 @@ FtlSuperblockPowerLostFix: sub w1, w1, w3 strh w1, [x2,x0] strb wzr, [x19,6] - ldrh w0, [x21,2018] + ldrh w0, [x21,2024] strh w0, [x19,2] strh wzr, [x19,4] - b .L2139 -.L2143: + b .L2209 +.L2213: mov x0, x19 bl get_new_active_ppa str w0, [x29,76] cmn w0, #1 - beq .L2145 + beq .L2215 add x1, x20, :lo12:.LANCHOR2 mov w2, w22 mov w3, 0 @@ -14129,8 +14359,8 @@ FtlSuperblockPowerLostFix: bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - b .L2142 -.L2139: + b .L2212 +.L2209: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14157,12 +14387,12 @@ ftl_map_blk_gc: ldrh w2, [x19,8] sub w1, w1, #4 cmp w2, w1 - blt .L2156 + blt .L2226 ubfiz x0, x0, 1, 16 ldrh w24, [x20,x0] - cbz w24, .L2156 + cbz w24, .L2226 ldr w1, [x19,52] - cbnz w1, .L2156 + cbnz w1, .L2226 mov w2, 1 str w2, [x19,52] strh w1, [x20,x0] @@ -14171,26 +14401,26 @@ ftl_map_blk_gc: sub w0, w0, #1 strh w0, [x19,8] add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] + ldrh w0, [x0,2026] cmp w1, w0 - bcc .L2157 + bcc .L2227 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L2157: +.L2227: adrp x20, .LANCHOR4 mov w21, 0 add x20, x20, :lo12:.LANCHOR4 adrp x26, .LANCHOR2 add x20, x20, 160 -.L2158: +.L2228: ldrh w0, [x19,6] cmp w0, w21 - bls .L2167 + bls .L2237 ubfiz x0, x21, 2, 16 add x27, x25, x0 ldr w1, [x25,x0] cmp w24, w1, lsr 10 - bne .L2159 + bne .L2229 add x1, x26, :lo12:.LANCHOR2 ldr x2, [x1,2080] ldr x23, [x1,2120] @@ -14204,51 +14434,51 @@ ftl_map_blk_gc: bl FlashReadPages ldr w0, [x20] cmn w0, #1 - bne .L2160 -.L2162: + bne .L2230 +.L2232: adrp x1, .LANCHOR4 str wzr, [x27] add x1, x1, :lo12:.LANCHOR4 - adrp x0, .LC126 + adrp x0, .LC128 ldrh w2, [x23,8] - add x0, x0, :lo12:.LC126 + add x0, x0, :lo12:.LC128 ldr w1, [x1,164] bl printk adrp x0, .LANCHOR2 mov w1, 1 add x0, x0, :lo12:.LANCHOR2 str w1, [x0,-96] - b .L2161 -.L2160: + b .L2231 +.L2230: ldrh w0, [x23,8] cmp w0, w21 - bne .L2162 + bne .L2232 ldrh w1, [x23] ldrh w0, [x19,4] cmp w1, w0 - bne .L2162 + bne .L2232 ldr x2, [x20,8] mov x0, x19 mov w1, w21 bl FtlMapWritePage -.L2159: +.L2229: add w21, w21, 1 uxth w21, w21 - b .L2158 -.L2167: + b .L2228 +.L2237: mov w0, w24 mov w1, 1 bl FtlFreeSysBlkQueueIn str wzr, [x19,52] -.L2156: +.L2226: add x22, x22, :lo12:.LANCHOR0 ldrh w1, [x19,2] - ldrh w0, [x22,2020] + ldrh w0, [x22,2026] cmp w1, w0 - bcc .L2161 + bcc .L2231 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L2161: +.L2231: mov w0, 0 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -14262,23 +14492,23 @@ ftl_map_blk_gc: .global Ftl_write_map_blk_to_last_page .type Ftl_write_map_blk_to_last_page, %function Ftl_write_map_blk_to_last_page: - stp x29, x30, [sp, -64]! - adrp x1, .LANCHOR2 + stp x29, x30, [sp, -80]! add x29, sp, 0 - add x3, x1, :lo12:.LANCHOR2 stp x23, x24, [sp,48] + adrp x24, .LANCHOR2 + add x1, x24, :lo12:.LANCHOR2 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - mov x23, x1 - ldr w20, [x3,-96] + stp x25, x26, [sp,64] + ldr w20, [x1,-96] ldr x21, [x0,16] - ldr x24, [x0,40] - cbnz w20, .L2169 + ldr x26, [x0,40] + cbnz w20, .L2239 mov x19, x0 ldrh w0, [x0] - mov w1, 65535 - cmp w0, w1 - bne .L2170 + mov w2, 65535 + cmp w0, w2 + bne .L2240 ldrh w0, [x19,8] add w0, w0, 1 strh w0, [x19,8] @@ -14289,56 +14519,66 @@ Ftl_write_map_blk_to_last_page: strh w20, [x19] add w0, w0, 1 str w0, [x19,48] - b .L2169 -.L2170: + b .L2239 +.L2240: ubfiz x0, x0, 1, 16 - ldrh w22, [x21,x0] + ldrh w2, [x19,2] + ldr x23, [x1,2120] + adrp x22, .LANCHOR0 + ldrh w25, [x21,x0] adrp x21, .LANCHOR4 - ldrh w0, [x19,2] - add x1, x21, :lo12:.LANCHOR4 - orr w0, w0, w22, lsl 10 - str w0, [x1,164] - ldr x0, [x3,2072] - str x0, [x1,168] - ldr x0, [x3,2120] - str x0, [x1,176] - ldr w1, [x19,48] - str w1, [x0,4] - mov w1, -1291 - strh w1, [x0,8] - ldrh w1, [x19,4] - strh w1, [x0] + add x0, x21, :lo12:.LANCHOR4 + orr w2, w2, w25, lsl 10 + str w2, [x0,164] + ldr x2, [x1,2072] + str x2, [x0,168] + str x23, [x0,176] + ldr w0, [x19,48] + str w0, [x23,4] + mov w0, -1291 + strh w0, [x23,8] + ldrh w0, [x19,4] + strh w0, [x23] + add x0, x22, :lo12:.LANCHOR0 + strh w25, [x23,2] + ldrh w2, [x0,2026] + ldr x0, [x1,2072] mov w1, 255 - strh w22, [x0,2] - adrp x0, .LANCHOR0+2020 - ldrh w2, [x0,#:lo12:.LANCHOR0+2020] - ldr x0, [x3,2072] lsl w2, w2, 3 bl ftl_memset - mov w1, w20 -.L2171: - ldrh w0, [x19,6] - cmp w0, w1 - bls .L2174 - ubfiz x3, x1, 2, 32 - ldr w0, [x24,x3] - cmp w22, w0, lsr 10 - bne .L2172 - add x2, x23, :lo12:.LANCHOR2 + mov w0, w20 +.L2241: + ldrh w1, [x19,6] + cmp w1, w0 + bls .L2248 + ubfiz x3, x0, 2, 32 + ldr w1, [x26,x3] + cmp w25, w1, lsr 10 + bne .L2242 + add x2, x24, :lo12:.LANCHOR2 add w20, w20, 1 uxth w20, w20 ldr x4, [x2,2072] - ubfiz x0, x20, 3, 16 - str w1, [x4,x0] + ubfiz x1, x20, 3, 16 + str w0, [x4,x1] ldr x2, [x2,2072] - ldr w3, [x24,x3] - add x0, x2, x0 - str w3, [x0,4] -.L2172: - add w1, w1, 1 - uxth w1, w1 - b .L2171 -.L2174: + ldr w3, [x26,x3] + add x1, x2, x1 + str w3, [x1,4] +.L2242: + add w0, w0, 1 + uxth w0, w0 + b .L2241 +.L2248: + add x22, x22, :lo12:.LANCHOR0 + ldrb w0, [x22,72] + cbz w0, .L2244 + add x0, x21, :lo12:.LANCHOR4 + ldrh w1, [x22,2034] + ldr x0, [x0,168] + bl js_hash + str w0, [x23,12] +.L2244: mov w1, 1 add x0, x21, :lo12:.LANCHOR4 add x0, x0, 160 @@ -14350,12 +14590,13 @@ Ftl_write_map_blk_to_last_page: strh w0, [x19,2] mov x0, x19 bl ftl_map_blk_gc -.L2169: +.L2239: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 80 ret .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 2 @@ -14364,122 +14605,134 @@ Ftl_write_map_blk_to_last_page: FtlMapWritePage: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR4 - mov x19, x0 - stp x25, x26, [sp,64] - add x20, x20, :lo12:.LANCHOR4 - adrp x25, .LC127 stp x27, x28, [sp,80] - stp x21, x22, [sp,32] + adrp x27, .LANCHOR4 + mov x28, x0 stp x23, x24, [sp,48] + add x23, x27, :lo12:.LANCHOR4 + adrp x24, .LC129 + stp x21, x22, [sp,32] + stp x25, x26, [sp,64] + stp x19, x20, [sp,16] mov w26, w1 - mov x27, x2 + str x2, [x29,104] mov w22, 0 - adrp x28, .LANCHOR2 - add x20, x20, 160 - add x25, x25, :lo12:.LC127 -.L2176: - add x1, x28, :lo12:.LANCHOR2 - adrp x23, .LANCHOR0 - str x23, [x29,104] - adrp x24, .LANCHOR2 + add x23, x23, 160 + add x24, x24, :lo12:.LC129 +.L2250: + adrp x19, .LANCHOR2 + adrp x20, .LANCHOR0 + add x1, x19, :lo12:.LANCHOR2 ldr w0, [x1,216] add w0, w0, 1 str w0, [x1,216] - add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x19,2] - ldrh w0, [x0,2020] + add x0, x20, :lo12:.LANCHOR0 + ldrh w1, [x28,2] + ldrh w0, [x0,2026] sub w0, w0, #1 cmp w1, w0 - bge .L2177 - ldrh w1, [x19] + bge .L2251 + ldrh w1, [x28] mov w0, 65535 cmp w1, w0 - bne .L2178 -.L2177: - mov x0, x19 + bne .L2252 +.L2251: + mov x0, x28 bl Ftl_write_map_blk_to_last_page -.L2178: - add x2, x24, :lo12:.LANCHOR2 +.L2252: + add x2, x19, :lo12:.LANCHOR2 ldr w1, [x2,-96] - cbnz w1, .L2179 - ldrh w3, [x19] + cbnz w1, .L2253 + ldrh w3, [x28] adrp x21, .LANCHOR4 - ldr x0, [x19,16] - ldrh w23, [x0,x3,lsl 1] - ldrh w0, [x19,2] - str x27, [x20,8] - orr w0, w0, w23, lsl 10 - str w0, [x20,4] + ldr x0, [x28,16] + ldrh w25, [x0,x3,lsl 1] + add x3, x27, :lo12:.LANCHOR4 + ldrh w0, [x28,2] + add x3, x3, 160 + orr w0, w0, w25, lsl 10 + str w0, [x3,4] + ldr x0, [x29,104] + str x0, [x3,8] ldr x0, [x2,2120] mov w2, 16 - str x0, [x20,16] + str x0, [x3,16] + str x3, [x29,96] bl ftl_memset - ldr x0, [x20,16] - ldr w1, [x19,48] - str w1, [x0,4] - strh w26, [x0,8] - ldrh w1, [x19,4] - strh w1, [x0] + ldr x3, [x29,96] + add x1, x20, :lo12:.LANCHOR0 + ldr w0, [x28,48] + ldr x2, [x3,16] + str w0, [x2,4] + strh w26, [x2,8] + ldrh w0, [x28,4] + strh w0, [x2] + strh w25, [x2,2] + ldrb w0, [x1,72] + cbz w0, .L2254 + ldr x0, [x3,8] + ldrh w1, [x1,2034] + str x2, [x29,96] + bl js_hash + ldr x2, [x29,96] + str w0, [x2,12] +.L2254: mov w1, 1 - strh w23, [x0,2] + mov x0, x23 mov w2, w1 mov w3, w1 - mov x0, x20 bl FlashProgPages - ldrh w0, [x19,2] + ldrh w0, [x28,2] add w0, w0, 1 uxth w0, w0 - strh w0, [x19,2] - ldr w1, [x20] + strh w0, [x28,2] + ldr w1, [x23] cmn w1, #1 - bne .L2180 - ldr w1, [x20,4] - mov x0, x25 + bne .L2255 + ldr w1, [x23,4] + mov x0, x24 add w22, w22, 1 bl printk uxth w22, w22 - ldrh w0, [x19,2] + ldrh w0, [x28,2] cmp w0, 2 - bhi .L2181 - ldr x0, [x29,104] - add x23, x0, :lo12:.LANCHOR0 - ldrh w0, [x23,2020] + bhi .L2256 + add x20, x20, :lo12:.LANCHOR0 + ldrh w0, [x20,2026] sub w0, w0, #1 - strh w0, [x19,2] -.L2181: + strh w0, [x28,2] +.L2256: cmp w22, 3 - bls .L2176 + bls .L2250 add x21, x21, :lo12:.LANCHOR4 - adrp x0, .LC128 - add x0, x0, :lo12:.LC128 + adrp x0, .LC130 + add x0, x0, :lo12:.LC130 mov w2, w22 - add x24, x24, :lo12:.LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 ldr w1, [x21,164] bl printk mov w0, 1 - str w0, [x24,-96] - b .L2179 -.L2180: - cbz w1, .L2183 - strh w23, [x19,60] -.L2183: + str w0, [x19,-96] + b .L2253 +.L2255: + cbz w1, .L2258 + strh w25, [x28,60] +.L2258: cmp w0, 1 - beq .L2184 + beq .L2259 cmp w1, 256 - beq .L2184 - ldr w0, [x19,56] - cbz w0, .L2185 -.L2184: - str wzr, [x19,56] - b .L2176 -.L2185: + beq .L2259 + ldr w0, [x28,56] + cbz w0, .L2260 +.L2259: + str wzr, [x28,56] + b .L2250 +.L2260: add x21, x21, :lo12:.LANCHOR4 - ldr x0, [x19,40] + ldr x0, [x28,40] ldr w1, [x21,164] str w1, [x0,w26,uxtw 2] -.L2179: +.L2253: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14522,199 +14775,233 @@ FtlMapTblRecovery: stp x29, x30, [sp, -144]! mov w1, 0 add x29, sp, 0 - stp x27, x28, [sp,80] - mov x27, x0 stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + mov x23, x0 stp x19, x20, [sp,16] + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] stp x21, x22, [sp,32] - ldrh w22, [x27,6] - adrp x19, .LANCHOR2 - ldr x20, [x0,40] - mov w25, 0 - ldr x21, [x0,16] - lsl w2, w22, 2 - ldr x0, [x0,24] - adrp x24, .LANCHOR0 - str x0, [x29,128] - mov x0, x20 - ldrh w23, [x27,8] - bl ftl_memset - str x19, [x29,136] - add x1, x19, :lo12:.LANCHOR2 - adrp x0, .LANCHOR4 - add x5, x0, :lo12:.LANCHOR4 - str x0, [x29,120] - add x5, x5, 160 - sub w0, w23, #1 - ldr x2, [x1,2072] - ldr x26, [x1,2120] - mov w1, -1 - str x2, [x5,8] - str x26, [x5,16] - mov x19, x5 - strh w1, [x27] - strh w1, [x27,2] - mov w1, 1 - str wzr, [x27,52] - str wzr, [x27,48] - str w1, [x27,56] - str w0, [x29,116] -.L2191: - cmp w25, w23 - bge .L2207 - ldr w0, [x29,116] - sxtw x28, w25 - cmp w25, w0 - bne .L2192 - lsl x0, x28, 1 - mov w1, 1 - add x23, x21, x0 + ldrh w25, [x23,6] + adrp x21, .LANCHOR2 + ldr x0, [x0,40] mov w19, 0 - ldrh w0, [x21,x0] + lsl w2, w25, 2 + ldrh w27, [x23,8] + str x0, [x29,136] + adrp x26, .LANCHOR0 + ldr x24, [x23,16] + ldr x28, [x23,24] + bl ftl_memset + add x1, x21, :lo12:.LANCHOR2 + adrp x0, .LANCHOR4 + add x4, x0, :lo12:.LANCHOR4 + str x0, [x29,112] + add x4, x4, 160 + str x21, [x29,128] + ldr x2, [x1,2072] + sub w0, w27, #1 + ldr x20, [x1,2120] + mov w1, -1 + str x2, [x4,8] + str x20, [x4,16] + mov x21, x4 + strh w1, [x23] + strh w1, [x23,2] + mov w1, 1 + str wzr, [x23,52] + str wzr, [x23,48] + str w1, [x23,56] + str w0, [x29,108] +.L2269: + cmp w19, w27 + adrp x22, .LANCHOR0 + bge .L2287 + ldr w0, [x29,108] + sxtw x2, w19 + cmp w19, w0 + bne .L2270 + lsl x0, x2, 1 + mov w1, 1 + add x21, x24, x0 + str x2, [x29,128] + mov w26, 0 + mov w27, -1 + ldrh w0, [x24,x0] bl FtlGetLastWrittenPage + strh w19, [x23] + ldr x2, [x29,128] sxth w24, w0 add w0, w0, 1 - strh w0, [x27,2] - ldr x0, [x29,128] + strh w0, [x23,2] add w24, w24, 1 - strh w25, [x27] - ldr w0, [x0,x28,lsl 2] - str w0, [x27,48] - ldr x0, [x29,120] - add x21, x0, :lo12:.LANCHOR4 - add x21, x21, 160 -.L2193: - cmp w19, w24 - bge .L2207 - ldrh w0, [x23] + ldr w0, [x28,x2,lsl 2] + str w0, [x23,48] + ldr x0, [x29,112] + add x19, x0, :lo12:.LANCHOR4 + add x19, x19, 160 +.L2271: + cmp w26, w24 + bge .L2287 + ldrh w0, [x21] mov w1, 1 mov w2, w1 - orr w0, w19, w0, lsl 10 + orr w0, w26, w0, lsl 10 + str w0, [x19,4] + mov x0, x19 + bl FlashReadPages + add x1, x22, :lo12:.LANCHOR0 + ldrb w0, [x1,72] + cbz w0, .L2272 + ldr x0, [x19,16] + ldr w28, [x0,12] + cbz w28, .L2272 + ldr x0, [x19,8] + ldrh w1, [x1,2034] + bl js_hash + cmp w28, w0 + beq .L2272 + str w27, [x19] +.L2272: + ldr w0, [x19] + cmn w0, #1 + beq .L2273 + ldrh w0, [x20,8] + cmp w0, w25 + bcs .L2273 + ldrh w2, [x20] + ldrh w1, [x23,4] + cmp w2, w1 + bne .L2273 + ubfiz x0, x0, 2, 16 + ldr x2, [x29,136] + ldr w1, [x19,4] + str w1, [x2,x0] +.L2273: + add w26, w26, 1 + sxth w26, w26 + b .L2271 +.L2287: + mov x0, x23 + add x22, x22, :lo12:.LANCHOR0 + bl ftl_free_no_use_map_blk + ldrh w1, [x23,2] + ldrh w0, [x22,2026] + cmp w1, w0 + bne .L2276 + mov x0, x23 + bl ftl_map_blk_alloc_new_blk + b .L2276 +.L2270: + ldr x0, [x29,128] + lsl x2, x2, 1 + add x0, x0, :lo12:.LANCHOR2 + ldr x0, [x0,2072] + str x0, [x21,8] + add x0, x24, x2 + str x0, [x29,120] + add x0, x26, :lo12:.LANCHOR0 + ldrh w1, [x24,x2] + ldrh w0, [x0,2026] + sub w0, w0, #1 + orr w0, w0, w1, lsl 10 + mov w1, 1 str w0, [x21,4] + mov w2, w1 mov x0, x21 bl FlashReadPages ldr w0, [x21] cmn w0, #1 - beq .L2194 - ldrh w0, [x26,8] - cmp w0, w22 - bcs .L2194 - ldrh w2, [x26] - ldrh w1, [x27,4] - cmp w2, w1 - bne .L2194 - ubfiz x0, x0, 2, 16 - ldr w1, [x21,4] - str w1, [x20,x0] -.L2194: - add w19, w19, 1 - sxth w19, w19 - b .L2193 -.L2207: - mov x0, x27 - bl ftl_free_no_use_map_blk - adrp x0, .LANCHOR0+2020 - ldrh w1, [x27,2] - ldrh w0, [x0,#:lo12:.LANCHOR0+2020] + beq .L2288 + ldrh w1, [x20] + mov w22, 0 + ldrh w0, [x23,4] cmp w1, w0 - bne .L2197 - mov x0, x27 - bl ftl_map_blk_alloc_new_blk - b .L2197 -.L2192: - ldr x0, [x29,136] - add x0, x0, :lo12:.LANCHOR2 - ldr x0, [x0,2072] - str x0, [x19,8] - lsl x0, x28, 1 - add x28, x21, x0 - ldrh w1, [x21,x0] - add x0, x24, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] - sub w0, w0, #1 - orr w0, w0, w1, lsl 10 - mov w1, 1 - str w0, [x19,4] - mov w2, w1 - mov x0, x19 - bl FlashReadPages - ldr w0, [x19] - cmn w0, #1 - beq .L2208 - ldrh w1, [x26] - mov w4, 0 - ldrh w0, [x27,4] - cmp w1, w0 - bne .L2217 - ldrh w1, [x26,8] + bne .L2309 + ldrh w1, [x20,8] mov w0, 64245 cmp w1, w0 - bne .L2217 -.L2199: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] + bne .L2309 + mov w5, w22 +.L2278: + add x0, x26, :lo12:.LANCHOR0 + ldrh w0, [x0,2026] sub w0, w0, #1 - cmp w4, w0 - bge .L2202 - ldr x0, [x29,136] - sbfiz x1, x4, 3, 32 + cmp w5, w0 + bge .L2281 + ldr x0, [x29,128] + sbfiz x1, x5, 3, 32 add x0, x0, :lo12:.LANCHOR2 ldr x2, [x0,2072] ldrh w0, [x2,x1] - cmp w0, w22 - bcs .L2200 + cmp w0, w25 + bcs .L2279 add x1, x2, x1 ubfiz x0, x0, 2, 16 + ldr x2, [x29,136] ldr w1, [x1,4] - str w1, [x20,x0] -.L2200: - add w4, w4, 1 - sxth w4, w4 - b .L2199 -.L2208: - mov w4, 0 -.L2217: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] - cmp w4, w0 - bge .L2202 - ldrh w0, [x28] + str w1, [x2,x0] +.L2279: + add w5, w5, 1 + sxth w5, w5 + b .L2278 +.L2288: + mov w22, 0 +.L2309: + add x6, x26, :lo12:.LANCHOR0 + ldrh w0, [x6,2026] + cmp w22, w0 + bge .L2281 + ldr x0, [x29,120] mov w1, 1 mov w2, w1 - str x4, [x29,104] - orr w0, w4, w0, lsl 10 - str w0, [x19,4] - mov x0, x19 + str x6, [x29,96] + ldrh w0, [x0] + orr w0, w22, w0, lsl 10 + str w0, [x21,4] + mov x0, x21 bl FlashReadPages - ldr w0, [x19] - ldr x4, [x29,104] + ldr x6, [x29,96] + ldrb w0, [x6,72] + cbz w0, .L2282 + ldr x0, [x21,16] + ldr w2, [x0,12] + cbz w2, .L2282 + ldr x0, [x21,8] + ldrh w1, [x6,2034] + str x2, [x29,96] + bl js_hash + ldr x2, [x29,96] + cmp w2, w0 + beq .L2282 + mov w0, -1 + str w0, [x21] +.L2282: + ldr w0, [x21] cmn w0, #1 - beq .L2203 - ldrh w0, [x26,8] - cmp w0, w22 - bcs .L2203 - ldrh w2, [x26] - ldrh w1, [x27,4] + beq .L2283 + ldrh w0, [x20,8] + cmp w0, w25 + bcs .L2283 + ldrh w2, [x20] + ldrh w1, [x23,4] cmp w2, w1 - bne .L2203 + bne .L2283 ubfiz x0, x0, 2, 16 - ldr w1, [x19,4] - str w1, [x20,x0] -.L2203: - add w4, w4, 1 - sxth w4, w4 - b .L2217 -.L2202: - add w6, w25, 1 - sxth w25, w6 - b .L2191 -.L2197: - mov x0, x27 + ldr x2, [x29,136] + ldr w1, [x21,4] + str w1, [x2,x0] +.L2283: + add w5, w22, 1 + sxth w22, w5 + b .L2309 +.L2281: + add w19, w19, 1 + sxth w19, w19 + b .L2269 +.L2276: + mov x0, x23 bl ftl_map_blk_gc - mov x0, x27 + mov x0, x23 bl ftl_map_blk_gc mov w0, 0 ldp x19, x20, [sp,16] @@ -14736,13 +15023,13 @@ FtlLoadVonderInfo: stp x29, x30, [sp, -16]! add x0, x0, 224 add x29, sp, 0 - ldrh w2, [x1,2040] + ldrh w2, [x1,2044] strh w2, [x0,10] mov w2, -3962 strh w2, [x0,4] - ldrh w2, [x1,2066] + ldrh w2, [x1,2070] strh w2, [x0,8] - ldrh w2, [x1,2042] + ldrh w2, [x1,2046] ldr x1, [x1,2072] str x1, [x0,16] adrp x1, .LANCHOR2 @@ -14790,26 +15077,26 @@ FtlVendorPartWrite: stp x21, x22, [sp,32] mov w28, w1 add w1, w26, w1 - ldrh w21, [x0,2026] + ldrh w21, [x0,2032] mov x25, x2 - ldrh w0, [x0,2012] + ldrh w0, [x0,2020] mov w20, -1 cmp w1, w0 - bhi .L2221 + bhi .L2313 adrp x24, .LANCHOR4 lsr w21, w26, w21 add x24, x24, :lo12:.LANCHOR4 mov w20, 0 adrp x27, .LANCHOR2 add x24, x24, 224 -.L2222: - cbz w28, .L2221 +.L2314: + cbz w28, .L2313 adrp x0, .LANCHOR2 add x2, x0, :lo12:.LANCHOR2 ldr x0, [x2,2208] ldr w4, [x0,w21,uxtw 2] add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,2024] + ldrh w1, [x0,2030] uxth w0, w28 udiv w22, w26, w1 msub w22, w22, w1, w26 @@ -14818,8 +15105,8 @@ FtlVendorPartWrite: cmp w19, w28 csel w19, w0, w19, hi cmp w19, w1 - beq .L2224 - cbz w4, .L2224 + beq .L2316 + cbz w4, .L2316 ldr x0, [x2,2088] mov w1, 1 str x0, [x29,128] @@ -14828,15 +15115,15 @@ FtlVendorPartWrite: str w4, [x29,124] str xzr, [x29,136] bl FlashReadPages - b .L2225 -.L2224: + b .L2317 +.L2316: add x0, x27, :lo12:.LANCHOR2 add x2, x23, :lo12:.LANCHOR0 mov w1, 0 ldr x0, [x0,2088] - ldrh w2, [x2,2028] + ldrh w2, [x2,2034] bl ftl_memset -.L2225: +.L2317: add x5, x27, :lo12:.LANCHOR2 lsl w4, w19, 9 ubfiz x22, x22, 9, 16 @@ -14859,8 +15146,8 @@ FtlVendorPartWrite: ldr x4, [x29,104] csinv w20, w20, wzr, ne add x25, x25, x4, sxtw - b .L2222 -.L2221: + b .L2314 +.L2313: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14883,8 +15170,8 @@ Ftl_save_ext_data: add x29, sp, 0 ldr w3, [x0,336] cmp w3, w1 - bne .L2235 - mov w1, 80 + bne .L2327 + mov w1, 86 movk w1, 0x5000, lsl 16 str w1, [x2,4] ldr w1, [x0,224] @@ -14918,7 +15205,7 @@ Ftl_save_ext_data: str w0, [x2,64] mov w0, 0 bl FtlVendorPartWrite -.L2235: +.L2327: ldp x29, x30, [sp], 16 ret .size Ftl_save_ext_data, .-Ftl_save_ext_data @@ -14926,37 +15213,37 @@ Ftl_save_ext_data: .global FtlEctTblFlush .type FtlEctTblFlush, %function FtlEctTblFlush: - adrp x1, .LANCHOR0+1940 + adrp x1, .LANCHOR0+1948 adrp x2, .LANCHOR2 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w3, [x1,#:lo12:.LANCHOR0+1940] + ldr w3, [x1,#:lo12:.LANCHOR0+1948] mov w1, 32 - cbz w3, .L2238 + cbz w3, .L2330 add x3, x2, :lo12:.LANCHOR2 ldr w3, [x3,256] cmp w3, 39 mov w3, 4 csel w1, w1, w3, hi -.L2238: +.L2330: adrp x3, .LANCHOR4 add x3, x3, :lo12:.LANCHOR4 ldrh w4, [x3,288] cmp w4, 31 - bhi .L2239 + bhi .L2331 add w4, w4, 1 mov w1, 1 strh w4, [x3,288] -.L2239: - cbnz w0, .L2240 +.L2331: + cbnz w0, .L2332 add x0, x2, :lo12:.LANCHOR2 ldr x3, [x0,2160] ldr w0, [x3,20] add w1, w1, w0 ldr w0, [x3,16] cmp w0, w1 - bcc .L2241 -.L2240: + bcc .L2333 +.L2332: add x2, x2, :lo12:.LANCHOR2 ldr x0, [x2,2160] ldr w1, [x0,16] @@ -14976,7 +15263,7 @@ FtlEctTblFlush: mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2241: +.L2333: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -14998,30 +15285,30 @@ FtlVendorPartRead: stp x27, x28, [sp,80] mov x26, x2 add w3, w23, w22 - ldrh w2, [x0,2012] + ldrh w2, [x0,2020] str x1, [x29,136] cmp w3, w2 - ldrh w20, [x0,2026] + ldrh w20, [x0,2032] mov w0, -1 - bhi .L2246 + bhi .L2338 adrp x27, .LANCHOR4 - adrp x0, .LC129 - add x0, x0, :lo12:.LC129 + adrp x0, .LC131 + add x0, x0, :lo12:.LC131 add x27, x27, :lo12:.LANCHOR4 str x0, [x29,128] lsr w20, w23, w20 add x0, x27, 224 mov w21, 0 str x0, [x29,120] -.L2247: - cbz w22, .L2255 +.L2339: + cbz w22, .L2347 adrp x25, .LANCHOR2 add x4, x25, :lo12:.LANCHOR2 ldr x0, [x4,2208] ldr w3, [x0,w20,uxtw 2] ldr x0, [x29,136] add x0, x0, :lo12:.LANCHOR0 - ldrh w19, [x0,2024] + ldrh w19, [x0,2030] uxth w0, w22 udiv w24, w23, w19 msub w24, w24, w19, w23 @@ -15030,7 +15317,7 @@ FtlVendorPartRead: cmp w19, w22 csel w19, w0, w19, hi lsl w28, w19, 9 - cbz w3, .L2249 + cbz w3, .L2341 ldr x0, [x4,2088] mov w1, 1 str x0, [x29,160] @@ -15047,7 +15334,7 @@ FtlVendorPartRead: ldr w0, [x27,160] csinv w21, w21, wzr, ne cmp w0, 256 - bne .L2251 + bne .L2343 ldr x0, [x29,128] mov w1, w20 mov w2, w3 @@ -15057,7 +15344,7 @@ FtlVendorPartRead: ldr x0, [x29,120] ldr x2, [x4,2088] bl FtlMapWritePage -.L2251: +.L2343: add x25, x25, :lo12:.LANCHOR2 ubfiz x24, x24, 9, 16 mov x0, x26 @@ -15065,21 +15352,21 @@ FtlVendorPartRead: ldr x1, [x25,2088] add x1, x1, x24 bl ftl_memcpy - b .L2252 -.L2249: + b .L2344 +.L2341: mov x0, x26 mov w1, w3 mov w2, w28 bl ftl_memset -.L2252: +.L2344: add w20, w20, 1 sub w22, w22, w19 add w23, w23, w19 add x26, x26, x28, sxtw - b .L2247 -.L2255: + b .L2339 +.L2347: mov w0, w21 -.L2246: +.L2338: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -15106,10 +15393,10 @@ FtlLoadEctTbl: mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L2257 + beq .L2349 adrp x0, .LC75 - adrp x1, .LC130 - add x1, x1, :lo12:.LC130 + adrp x1, .LC132 + add x1, x1, :lo12:.LC132 add x0, x0, :lo12:.LC75 bl printk ldrh w2, [x19,2144] @@ -15117,7 +15404,7 @@ FtlLoadEctTbl: ldr x0, [x19,2160] lsl w2, w2, 9 bl ftl_memset -.L2257: +.L2349: mov w0, 0 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -15142,7 +15429,7 @@ Ftl_load_ext_data: mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - beq .L2259 + beq .L2351 mov x0, x21 mov w1, 0 mov w2, 512 @@ -15150,13 +15437,13 @@ Ftl_load_ext_data: mov w0, 19539 movk w0, 0x4654, lsl 16 str w0, [x20,336] -.L2259: +.L2351: add x0, x19, :lo12:.LANCHOR2 mov w2, 19539 movk w2, 0x4654, lsl 16 ldr w3, [x0,336] cmp w3, w2 - bne .L2260 + bne .L2352 ldr w2, [x0,424] str w2, [x0,224] ldr w2, [x0,428] @@ -15183,7 +15470,7 @@ Ftl_load_ext_data: ldr w2, [x0,384] str w2, [x0,256] str w1, [x0,328] -.L2260: +.L2352: add x0, x19, :lo12:.LANCHOR2 adrp x20, .LANCHOR0 ldr w1, [x0,404] @@ -15191,24 +15478,24 @@ Ftl_load_ext_data: mov w0, 34661 movk w0, 0x1234, lsl 16 cmp w1, w0 - bne .L2261 + bne .L2353 add x0, x20, :lo12:.LANCHOR0 mov w1, 1 - str w1, [x0,1940] + str w1, [x0,1948] adrp x0, .LC75 - adrp x1, .LC131 + adrp x1, .LC133 add x0, x0, :lo12:.LC75 - add x1, x1, :lo12:.LC131 + add x1, x1, :lo12:.LC133 bl printk -.L2261: +.L2353: add x19, x19, :lo12:.LANCHOR2 add x20, x20, :lo12:.LANCHOR0 ldr x21, [sp,32] - ldrh w1, [x20,2008] + ldrh w1, [x20,2016] ldr w2, [x19,240] ldr w0, [x19,244] madd w0, w1, w2, w0 - ldrh w1, [x20,1956] + ldrh w1, [x20,1964] udiv w0, w0, w1 str w0, [x19,248] ldp x19, x20, [sp,16] @@ -15216,73 +15503,6 @@ Ftl_load_ext_data: ret .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 - .global ftl_vendor_read - .type ftl_vendor_read, %function -ftl_vendor_read: - stp x29, x30, [sp, -16]! - add w0, w0, 256 - add x29, sp, 0 - bl FtlVendorPartRead - ldp x29, x30, [sp], 16 - ret - .size ftl_vendor_read, .-ftl_vendor_read - .align 2 - .global FlashBootVendorRead - .type FlashBootVendorRead, %function -FlashBootVendorRead: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - str x0, [x29,24] - str x1, [x29,32] - str x2, [x29,40] - bl rknand_device_lock - ldr x1, [x29,32] - ldr x2, [x29,40] - ldr x0, [x29,24] - bl ftl_vendor_read - str x0, [x29,40] - bl rknand_device_unlock - ldr x0, [x29,40] - ldp x29, x30, [sp], 48 - ret - .size FlashBootVendorRead, .-FlashBootVendorRead - .align 2 - .global ftl_sys_read - .type ftl_sys_read, %function -ftl_sys_read: - stp x29, x30, [sp, -16]! - add w0, w0, 512 - add x29, sp, 0 - bl FtlVendorPartRead - ldp x29, x30, [sp], 16 - ret - .size ftl_sys_read, .-ftl_sys_read - .align 2 - .global StorageSysDataLoad - .type StorageSysDataLoad, %function -StorageSysDataLoad: - stp x29, x30, [sp, -48]! - mov w2, 512 - add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 - mov x19, x1 - mov x0, x1 - mov w1, 0 - bl ftl_memset - bl rknand_device_lock - mov x2, x19 - mov w1, 1 - mov w0, w20 - bl ftl_sys_read - str x0, [x29,40] - bl rknand_device_unlock - ldr x0, [x29,40] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 - ret - .size StorageSysDataLoad, .-StorageSysDataLoad - .align 2 .global FtlMapBlkWriteDumpData .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: @@ -15293,12 +15513,12 @@ FtlMapBlkWriteDumpData: ldr w1, [x0,56] ldrh w20, [x0,6] ldr x4, [x0,40] - cbz w1, .L2266 + cbz w1, .L2354 adrp x3, .LANCHOR2 str wzr, [x0,56] add x3, x3, :lo12:.LANCHOR2 ldr w1, [x3,-96] - cbnz w1, .L2266 + cbnz w1, .L2354 adrp x2, .LANCHOR4 sub w20, w20, #1 add x1, x2, :lo12:.LANCHOR4 @@ -15313,32 +15533,32 @@ FtlMapBlkWriteDumpData: mov x19, x2 ldr w3, [x4,x3] str w3, [x1,4] - cbz w3, .L2270 + cbz w3, .L2358 mov x0, x1 mov w1, 1 mov w2, w1 bl FlashReadPages - b .L2271 -.L2270: - adrp x2, .LANCHOR0+2028 + b .L2359 +.L2358: + adrp x2, .LANCHOR0+2034 mov w1, 255 - ldrh w2, [x2,#:lo12:.LANCHOR0+2028] + ldrh w2, [x2,#:lo12:.LANCHOR0+2034] bl ftl_memset -.L2271: +.L2359: add x2, x19, :lo12:.LANCHOR4 mov x0, x21 mov w1, w20 ldr x2, [x2,168] bl FtlMapWritePage -.L2266: +.L2354: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 ret .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 2 - .type FlashReadFacBbtData.part.14, %function -FlashReadFacBbtData.part.14: + .type FlashReadFacBbtData.part.16, %function +FlashReadFacBbtData.part.16: stp x29, x30, [sp, -32]! mov w3, 0 adrp x4, .LANCHOR4 @@ -15346,12 +15566,12 @@ FlashReadFacBbtData.part.14: str x19, [sp,16] mov w7, 1 mov x19, x0 - cbnz w1, .L2275 -.L2277: + cbnz w1, .L2363 +.L2365: add x0, x4, :lo12:.LANCHOR4 ldr w1, [x0,92] cmp w3, w1 - bcs .L2275 + bcs .L2363 ubfx x5, x3, 5, 11 ldr x0, [x0,56] lsl x5, x5, 2 @@ -15361,23 +15581,23 @@ FlashReadFacBbtData.part.14: uxth w3, w3 orr w6, w1, w6 str w6, [x0,x5] - b .L2277 -.L2275: + b .L2365 +.L2363: add x4, x4, :lo12:.LANCHOR4 mov x0, x19 ldr x1, [x4,56] bl ftl_memcpy mov w2, 4 - adrp x0, .LC132 + adrp x0, .LC134 mov x1, x19 - add x0, x0, :lo12:.LC132 + add x0, x0, :lo12:.LC134 mov w3, w2 bl rknand_print_hex ldr x19, [sp,16] mov w0, 0 ldp x29, x30, [sp], 32 ret - .size FlashReadFacBbtData.part.14, .-FlashReadFacBbtData.part.14 + .size FlashReadFacBbtData.part.16, .-FlashReadFacBbtData.part.16 .align 2 .global FlashReadFacBbtData .type FlashReadFacBbtData, %function @@ -15409,9 +15629,9 @@ FlashReadFacBbtData: str x1, [x29,96] sub w19, w3, #16 str x0, [x29,104] -.L2280: +.L2368: cmp w20, w19 - ble .L2288 + ble .L2376 add w0, w20, w24 mov w1, 1 lsl w0, w0, 10 @@ -15421,26 +15641,26 @@ FlashReadFacBbtData: bl FlashReadPages ldr w0, [x29,88] cmn w0, #1 - beq .L2281 + beq .L2369 add x0, x21, :lo12:.LANCHOR4 ldr x0, [x0,112] ldrh w0, [x0] cmp w0, w26 - bne .L2281 + bne .L2369 mov w0, w22 - cbz x22, .L2282 + cbz x22, .L2370 mov x0, x22 mov w1, w23 mov w2, w25 - bl FlashReadFacBbtData.part.14 - b .L2282 -.L2281: + bl FlashReadFacBbtData.part.16 + b .L2370 +.L2369: sub w20, w20, #1 uxth w20, w20 - b .L2280 -.L2288: + b .L2368 +.L2376: mov w0, -1 -.L2282: +.L2370: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -15470,37 +15690,37 @@ FlashGetBadBlockList: lsr w2, w2, 3 bl FlashReadFacBbtData cmn w0, #1 - bne .L2290 -.L2294: + bne .L2378 +.L2382: mov w1, 0 - b .L2291 -.L2290: + b .L2379 +.L2378: mov w2, 0 lsr w0, w19, 4 mov w1, w2 sub w19, w19, #1 mov w5, 1 -.L2292: +.L2380: cmp w2, w19 - bge .L2291 + bge .L2379 add x3, x20, :lo12:.LANCHOR4 ubfx x4, x2, 5, 11 ldr x6, [x3,104] lsl w3, w5, w2 ldr w4, [x6,x4,lsl 2] tst w3, w4 - beq .L2293 + beq .L2381 add w3, w1, 1 ubfiz x1, x1, 1, 16 strh w2, [x21,x1] uxth w1, w3 -.L2293: +.L2381: cmp w1, w0 - bcs .L2294 + bcs .L2382 add w2, w2, 1 uxth w2, w2 - b .L2292 -.L2291: + b .L2380 +.L2379: ubfiz x1, x1, 1, 16 mov w0, -1 ldp x19, x20, [sp,16] @@ -15524,7 +15744,7 @@ FtlMakeBbt: stp x25, x26, [sp,64] stp x27, x28, [sp,80] ldr w21, [x0,-96] - cbnz w21, .L2300 + cbnz w21, .L2388 adrp x19, .LANCHOR0 adrp x20, .LANCHOR4 add x24, x19, :lo12:.LANCHOR0 @@ -15535,11 +15755,11 @@ FtlMakeBbt: mov x26, x20 bl FtlBbtMemInit bl FtlLoadFactoryBbt -.L2301: +.L2389: add x22, x19, :lo12:.LANCHOR0 - ldrh w0, [x22,1970] + ldrh w0, [x22,1978] cmp w21, w0 - bcs .L2319 + bcs .L2407 add x1, x23, :lo12:.LANCHOR2 ldrh w28, [x25,12] ldr x0, [x1,2072] @@ -15548,8 +15768,8 @@ FtlMakeBbt: str x0, [x20,8] cmp w28, w1 str x27, [x20,16] - beq .L2302 - ldrh w0, [x22,2014] + beq .L2390 + ldrh w0, [x22,2022] mov w1, 1 mov w2, w1 madd w28, w21, w0, w28 @@ -15557,30 +15777,30 @@ FtlMakeBbt: str w0, [x20,4] mov x0, x20 bl FlashReadPages - ldrh w2, [x22,2014] + ldrh w2, [x22,2022] ldr x0, [x24,32] add w2, w2, 7 ldr x1, [x20,8] lsr w2, w2, 3 bl ftl_memcpy - b .L2303 -.L2302: + b .L2391 +.L2390: mov w1, w21 bl FlashGetBadBlockList ldr x0, [x20,8] ldr x1, [x24,32] bl FtlBbt2Bitmap - ldrh w22, [x22,2014] -.L2305: + ldrh w22, [x22,2022] +.L2393: sub w22, w22, #1 uxth w22, w22 -.L2304: +.L2392: add x28, x19, :lo12:.LANCHOR0 - ldrh w0, [x28,2014] + ldrh w0, [x28,2022] madd w0, w21, w0, w22 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L2305 + beq .L2393 add x3, x23, :lo12:.LANCHOR2 mov w1, 0 mov w2, 16 @@ -15594,7 +15814,7 @@ FtlMakeBbt: ldr x3, [x29,104] ldrh w0, [x25,12] strh w0, [x27,2] - ldrh w0, [x28,2014] + ldrh w0, [x28,2022] ldrh w1, [x25,12] ldrh w2, [x3,2248] madd w28, w21, w0, w1 @@ -15615,64 +15835,64 @@ FtlMakeBbt: bl FlashProgPages ldr w0, [x26] cmn w0, #1 - bne .L2303 + bne .L2391 mov w0, w28 bl FtlBbmMapBadBlock - b .L2304 -.L2303: + b .L2392 +.L2391: mov w0, w28 add w21, w21, 1 add x24, x24, 8 add x25, x25, 2 bl FtlBbmMapBadBlock - b .L2301 -.L2319: + b .L2389 +.L2407: mov w20, 0 -.L2308: +.L2396: add x21, x19, :lo12:.LANCHOR0 - ldrh w0, [x21,2032] + ldrh w0, [x21,2038] cmp w0, w20 - bls .L2320 + bls .L2408 mov w0, w20 add w20, w20, 1 bl FtlBbmMapBadBlock uxth w20, w20 - b .L2308 -.L2320: + b .L2396 +.L2408: ldrh w20, [x21,2116] mov w24, 65535 sub w20, w20, #1 uxth w20, w20 -.L2310: +.L2398: add x22, x21, 2104 ldrh w0, [x22,12] sub w0, w0, #48 cmp w20, w0 - ble .L2314 + ble .L2402 mov w0, w20 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L2311 + beq .L2399 mov w0, w20 bl FlashTestBlk - cbz w0, .L2312 + cbz w0, .L2400 mov w0, w20 bl FtlBbmMapBadBlock - b .L2311 -.L2312: + b .L2399 +.L2400: ldrh w0, [x21,2104] cmp w0, w24 - bne .L2313 + bne .L2401 strh w20, [x21,2104] - b .L2311 -.L2313: + b .L2399 +.L2401: strh w20, [x22,4] - b .L2314 -.L2311: + b .L2402 +.L2399: sub w20, w20, #1 uxth w20, w20 - b .L2310 -.L2314: + b .L2398 +.L2402: add x23, x23, :lo12:.LANCHOR2 add x19, x19, :lo12:.LANCHOR0 mov w2, 2 @@ -15702,7 +15922,7 @@ FtlMakeBbt: strh w0, [x19,2108] strh w1, [x19,2104] bl FtlBbmTblFlush -.L2300: +.L2388: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -15716,181 +15936,194 @@ FtlMakeBbt: .global log2phys .type log2phys, %function log2phys: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR0 - add x3, x24, :lo12:.LANCHOR0 - str w2, [x29,104] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] stp x21, x22, [sp,32] - mov x27, x1 - mov x2, 1 - ldrh w1, [x3,2026] + adrp x22, .LANCHOR0 + add x3, x22, :lo12:.LANCHOR0 + str x22, [x29,120] + stp x19, x20, [sp,16] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] + ldr w4, [x3,2096] + ldrh w27, [x3,2032] + cmp w0, w4 + bcs .L2410 + add w27, w27, 7 adrp x20, .LANCHOR2 - add w1, w1, 7 - lsr w26, w0, w1 - lsl x1, x2, x1 - sub w1, w1, #1 - and w23, w1, w0 - ldrh w1, [x3,2058] - uxth w25, w26 - uxth w0, w23 - str w0, [x29,108] + lsr w24, w0, w27 + str w0, [x29,116] add x0, x20, :lo12:.LANCHOR2 - ldr x21, [x0,184] + str w2, [x29,112] + mov x26, x1 + uxth w23, w24 + ldrh w2, [x3,2062] + ldr x22, [x0,184] mov x0, 0 -.L2322: - uxth x19, w0 - cmp w19, w1 - bcs .L2337 + b .L2411 +.L2410: + mov w0, -1 + cbnz w2, .L2412 + str w0, [x1] + b .L2412 +.L2416: add x0, x0, 1 - add x2, x21, x0, lsl 4 - ldrh w2, [x2,-16] - cmp w2, w25 - bne .L2322 -.L2323: - ldr w0, [x29,104] - ldr w23, [x29,108] - cbnz w0, .L2324 + add x3, x22, x0, lsl 4 + ldrh w3, [x3,-16] + cmp w3, w23 + beq .L2413 +.L2411: + uxth x19, w0 + cmp w19, w2 + bcc .L2416 + bl select_l2p_ram_region + uxth x19, w0 + ubfiz x21, x19, 4, 16 + mov w1, 65535 + add x2, x22, x21 + ldrh w3, [x22,x21] + cmp w3, w1 + bne .L2424 +.L2417: + add x28, x20, :lo12:.LANCHOR2 + ubfiz x0, x23, 2, 16 + ldr x1, [x28,2216] + ldr w25, [x1,x0] + cbnz w25, .L2418 + ldr x1, [x29,120] + ldr x0, [x28,184] + add x22, x1, :lo12:.LANCHOR0 + mov w1, 255 + add x0, x0, x21 + ldrh w2, [x22,2034] + ldr x0, [x0,8] + bl ftl_memset + ldr x0, [x28,184] + strh w23, [x0,x21] + ldr x0, [x28,184] + add x21, x0, x21 + str w25, [x21,4] +.L2413: + mov x0, 1 + lsl x27, x0, x27 + ldr w0, [x29,116] + sub w27, w27, #1 + and w25, w0, w27 + ldr w0, [x29,112] + uxth x25, w25 + cbnz w0, .L2414 add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,184] - add x1, x1, x19, lsl 4 - ldr x0, [x1,8] - ldr w0, [x0,x23,lsl 2] - str w0, [x27] - b .L2325 -.L2324: + ldr x0, [x0,184] + add x0, x0, x19, lsl 4 + ldr x0, [x0,8] + ldr w0, [x0,x25,lsl 2] + str w0, [x26] + b .L2415 +.L2414: add x1, x20, :lo12:.LANCHOR2 lsl x0, x19, 4 - ldr w3, [x27] + ldr w3, [x26] ldr x2, [x1,184] add x2, x2, x0 ldr x2, [x2,8] - str w3, [x2,x23,lsl 2] - strh w25, [x1,192] + str w3, [x2,x25,lsl 2] + strh w23, [x1,192] ldr x2, [x1,184] add x0, x2, x0 ldr w2, [x0,4] orr w2, w2, -2147483648 str w2, [x0,4] -.L2325: +.L2415: add x20, x20, :lo12:.LANCHOR2 ldr x0, [x20,184] add x19, x0, x19, lsl 4 - ldr w0, [x19,4] - cmn w0, #1 - beq .L2334 - add w0, w0, 1 - str w0, [x19,4] - b .L2334 -.L2337: - bl select_l2p_ram_region - uxth x19, w0 - ubfiz x22, x19, 4, 16 - mov w2, 65535 - add x1, x21, x22 - ldrh w3, [x21,x22] - cmp w3, w2 - beq .L2328 - ldr w1, [x1,4] - tbz w1, #31, .L2328 + mov w0, 0 + ldr w1, [x19,4] + cmn w1, #1 + beq .L2412 + add w1, w1, 1 + str w1, [x19,4] + b .L2412 +.L2424: + ldr w1, [x2,4] + tbz w1, #31, .L2417 bl flush_l2p_region -.L2328: - add x21, x20, :lo12:.LANCHOR2 - ubfiz x0, x25, 2, 16 - ldr x1, [x21,2216] - ldr w23, [x1,x0] - cbnz w23, .L2329 - ldr x0, [x21,184] - add x24, x24, :lo12:.LANCHOR0 - mov w1, 255 - add x0, x0, x22 - ldrh w2, [x24,2028] - ldr x0, [x0,8] - bl ftl_memset - ldr x0, [x21,184] - strh w25, [x0,x22] - ldr x0, [x21,184] - add x22, x0, x22 - str w23, [x22,4] - b .L2323 -.L2329: - ldr x0, [x21,184] - adrp x5, .LANCHOR4 - add x5, x5, :lo12:.LANCHOR4 + b .L2417 +.L2418: + ldr x0, [x28,184] + adrp x6, .LANCHOR4 + add x6, x6, :lo12:.LANCHOR4 mov w1, 1 - add x0, x0, x22 - add x28, x5, 160 + add x0, x0, x21 + add x22, x6, 160 mov w2, w1 - str x5, [x29,96] - str w23, [x5,164] + str x6, [x29,104] + str w25, [x6,164] ldr x0, [x0,8] - str x0, [x5,168] - ldr x0, [x21,2120] - str x0, [x5,176] - mov x0, x28 + str x0, [x6,168] + ldr x0, [x28,2120] + str x0, [x6,176] + mov x0, x22 bl FlashReadPages - ldr x0, [x28,16] - ldr x5, [x29,96] + ldr x0, [x22,16] + ldr x6, [x29,104] ldrh w0, [x0,8] - cmp w0, w25 - beq .L2330 - adrp x0, .LC133 - uxth w1, w26 - mov w2, w23 - add x0, x0, :lo12:.LC133 - add x24, x24, :lo12:.LANCHOR0 + cmp w0, w23 + beq .L2419 + adrp x0, .LC135 + uxth w1, w24 + mov w2, w25 + add x0, x0, :lo12:.LC135 bl printk + ldr x1, [x22,16] mov w2, 4 - ldr x1, [x28,16] adrp x0, .LC99 mov w3, w2 add x0, x0, :lo12:.LC99 bl rknand_print_hex - adrp x0, .LC134 - ldr x1, [x21,2216] - ldrh w3, [x24,2056] - add x0, x0, :lo12:.LC134 + ldr x0, [x29,120] mov w2, 4 + ldr x1, [x28,2216] + add x22, x0, :lo12:.LANCHOR0 + adrp x0, .LC136 + add x0, x0, :lo12:.LC136 + ldrh w3, [x22,2060] bl rknand_print_hex mov w0, 1 - str w0, [x21,-96] - b .L2331 -.L2330: - ldr w0, [x5,160] + str w0, [x28,-96] + b .L2420 +.L2419: + ldr w0, [x6,160] cmp w0, 256 - bne .L2331 - and w26, w26, 65535 - adrp x0, .LC135 - mov w1, w26 - mov w2, w23 - add x0, x0, :lo12:.LC135 + bne .L2420 + and w24, w24, 65535 + adrp x0, .LC137 + mov w1, w24 + mov w2, w25 + add x0, x0, :lo12:.LC137 bl printk - ldr x2, [x21,184] - add x0, x21, 2256 - mov w1, w26 - add x2, x2, x22 + ldr x2, [x28,184] + add x0, x28, 2256 + mov w1, w24 + add x2, x2, x21 ldr x2, [x2,8] bl FtlMapWritePage -.L2331: +.L2420: add x1, x20, :lo12:.LANCHOR2 ldr x0, [x1,184] - add x0, x0, x22 + add x0, x0, x21 str wzr, [x0,4] ldr x0, [x1,184] - strh w25, [x0,x22] - b .L2323 -.L2334: - mov w0, 0 + strh w23, [x0,x21] + b .L2413 +.L2412: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 112 + ldp x29, x30, [sp], 128 ret .size log2phys, .-log2phys .align 2 @@ -15906,22 +16139,22 @@ FtlWriteDumpData: add x23, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] ldr w0, [x23,-96] - cbnz w0, .L2338 + cbnz w0, .L2425 ldrh w2, [x23,44] - cbz w2, .L2340 + cbz w2, .L2427 ldrb w1, [x23,48] - cbnz w1, .L2340 + cbnz w1, .L2427 adrp x21, .LANCHOR0 ldrb w1, [x23,47] add x21, x21, :lo12:.LANCHOR0 - ldrh w3, [x21,2018] + ldrh w3, [x21,2024] mul w1, w1, w3 cmp w2, w1 - beq .L2340 + beq .L2427 ldrb w24, [x23,50] ldr w22, [x21,2096] - ldrh w25, [x21,1948] - cbnz w24, .L2338 + ldrh w25, [x21,1956] + cbnz w24, .L2425 sub w22, w22, #1 add x1, x29, 84 mov w0, w22 @@ -15936,29 +16169,29 @@ FtlWriteDumpData: str x1, [x29,96] str x20, [x29,104] str w24, [x20,4] - beq .L2342 + beq .L2429 add x0, x29, 88 mov w1, 1 mov w2, w24 bl FlashReadPages - b .L2343 -.L2342: + b .L2430 +.L2429: ldr x0, [x23,2072] mov w1, 255 - ldrh w2, [x21,2028] + ldrh w2, [x21,2034] bl ftl_memset -.L2343: +.L2430: add x24, x19, :lo12:.LANCHOR2 mov w0, -3947 lsl w25, w25, 2 strh w0, [x20] mov w23, 0 add x21, x24, 40 -.L2344: +.L2431: cmp w23, w25 - beq .L2345 + beq .L2432 ldrh w0, [x21,4] - cbz w0, .L2345 + cbz w0, .L2432 ldr w0, [x29,92] add w23, w23, 1 str w0, [x20,12] @@ -15981,16 +16214,16 @@ FtlWriteDumpData: bl FlashProgPages ldrh w0, [x21] bl decrement_vpc_count - b .L2344 -.L2345: + b .L2431 +.L2432: add x19, x19, :lo12:.LANCHOR2 mov w0, 1 strb w0, [x19,50] - b .L2338 -.L2340: + b .L2425 +.L2427: add x19, x19, :lo12:.LANCHOR2 strb wzr, [x19,50] -.L2338: +.L2425: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -16010,24 +16243,24 @@ l2p_flush: adrp x20, .LANCHOR0 adrp x21, .LANCHOR2 bl FtlWriteDumpData -.L2356: +.L2443: add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,2058] + ldrh w0, [x0,2062] cmp w0, w19 - bls .L2359 + bls .L2446 add x1, x21, :lo12:.LANCHOR2 ubfiz x0, x19, 4, 16 ldr x1, [x1,184] add x0, x1, x0 ldr w0, [x0,4] - tbz w0, #31, .L2357 + tbz w0, #31, .L2444 mov w0, w19 bl flush_l2p_region -.L2357: +.L2444: add w19, w19, 1 uxth w19, w19 - b .L2356 -.L2359: + b .L2443 +.L2446: mov w0, 0 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -16046,89 +16279,89 @@ allocate_new_data_superblock: add x1, x19, :lo12:.LANCHOR2 ldrh w20, [x0] ldr w1, [x1,-96] - cbnz w1, .L2361 + cbnz w1, .L2448 mov x21, x0 mov w0, 65535 cmp w20, w0 - beq .L2362 + beq .L2449 ubfiz x1, x20, 1, 16 ldr x0, [x19,#:lo12:.LANCHOR2] ldrh w0, [x0,x1] - cbz w0, .L2363 + cbz w0, .L2450 mov w0, w20 bl INSERT_DATA_LIST - b .L2362 -.L2363: + b .L2449 +.L2450: mov w0, w20 bl INSERT_FREE_LIST -.L2362: +.L2449: add x2, x19, :lo12:.LANCHOR2 strb wzr, [x21,8] add x0, x2, 88 cmp x21, x0 - beq .L2364 + beq .L2451 adrp x1, .LANCHOR0 add x4, x1, :lo12:.LANCHOR0 - ldrh w3, [x4,1968] + ldrh w3, [x4,1976] cmp w3, 1 - beq .L2364 - ldrb w0, [x4,120] - cbz w0, .L2365 -.L2364: + beq .L2451 + ldrb w0, [x4,196] + cbz w0, .L2452 +.L2451: mov w0, 1 strb w0, [x21,8] - b .L2366 -.L2365: + b .L2453 +.L2452: add x0, x2, 40 cmp x21, x0 - bne .L2366 + bne .L2453 cmp w3, 3 - beq .L2368 + beq .L2455 ldr w0, [x2,328] cmp w0, 1 - bne .L2369 -.L2368: + bne .L2456 +.L2455: add x2, x19, :lo12:.LANCHOR2 mov w0, 1 strb w0, [x2,48] -.L2369: +.L2456: add x1, x1, :lo12:.LANCHOR0 - ldr w0, [x1,1940] - cbz w0, .L2366 + ldr w0, [x1,1948] + cbz w0, .L2453 add x1, x19, :lo12:.LANCHOR2 ldr w0, [x1,256] cmp w0, 39 - bhi .L2366 + bhi .L2453 mov w0, 1 strb w0, [x1,48] -.L2366: +.L2453: add x0, x19, :lo12:.LANCHOR2 ldrh w1, [x0,2336] mov w0, 65535 cmp w1, w0 - beq .L2371 + beq .L2458 cmp w20, w1 - bne .L2372 + bne .L2459 adrp x0, .LANCHOR2 ubfiz x2, x1, 1, 16 ldr x0, [x0,#:lo12:.LANCHOR2] ldrh w0, [x0,x2] - cbz w0, .L2373 -.L2372: + cbz w0, .L2460 +.L2459: mov w0, w1 bl update_vpc_list -.L2373: +.L2460: add x19, x19, :lo12:.LANCHOR2 mov w0, -1 strh w0, [x19,2336] -.L2371: +.L2458: mov x0, x21 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2361: +.L2448: mov w0, 0 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -16136,12 +16369,132 @@ allocate_new_data_superblock: ret .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 2 + .global FtlCheckVpc + .type FtlCheckVpc, %function +FtlCheckVpc: + stp x29, x30, [sp, -96]! + adrp x1, .LANCHOR3 + adrp x0, .LC106 + add x1, x1, :lo12:.LANCHOR3 + add x29, sp, 0 + add x1, x1, 80 + add x0, x0, :lo12:.LC106 + stp x19, x20, [sp,16] + adrp x20, .LANCHOR4 + mov w19, 0 + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + add x21, x20, :lo12:.LANCHOR4 + bl printk + add x0, x21, 296 + mov w1, 0 + mov x2, 8192 + adrp x22, .LANCHOR0 + bl memset +.L2474: + add x0, x22, :lo12:.LANCHOR0 + adrp x24, .LANCHOR0 + ldr w0, [x0,2096] + cmp w19, w0 + bcs .L2491 + mov w0, w19 + add x1, x29, 92 + mov w2, 0 + bl log2phys + ldr w0, [x29,92] + cmn w0, #1 + beq .L2475 + lsr w0, w0, 10 + bl P2V_block_in_plane + uxth w0, w0 + add x2, x21, 296 + ldrh w1, [x2,w0,sxtw 1] + add w1, w1, 1 + strh w1, [x2,w0,sxtw 1] +.L2475: + add w19, w19, 1 + b .L2474 +.L2491: + adrp x21, .LC138 + mov w19, 0 + adrp x22, .LANCHOR2 + add x25, x20, :lo12:.LANCHOR4 + add x21, x21, :lo12:.LC138 +.L2477: + add x0, x24, :lo12:.LANCHOR0 + adrp x23, .LANCHOR2 + ldrh w0, [x0,1964] + cmp w0, w19 + bls .L2492 + ubfiz x0, x19, 1, 16 + ldr x1, [x22,#:lo12:.LANCHOR2] + ldrh w2, [x1,x0] + add x0, x25, 296 + ldrh w3, [x0,w19,sxtw 1] + cmp w2, w3 + beq .L2478 + mov x0, x21 + mov w1, w19 + bl printk +.L2478: + add w19, w19, 1 + uxth w19, w19 + b .L2477 +.L2492: + add x1, x23, :lo12:.LANCHOR2 + ldr x0, [x1,24] + cbz x0, .L2473 + ldr x19, [x1,-16] + adrp x22, .LC139 + ldrh w24, [x1,32] + mov w21, 0 + sub x19, x0, x19 + mov x0, -6148914691236517206 + asr x19, x19, 1 + add x22, x22, :lo12:.LC139 + add x20, x20, :lo12:.LANCHOR4 + mov w25, 6 + madd x19, x0, x19, x19 + mov w26, 65535 + uxth w19, w19 +.L2481: + cmp w21, w24 + beq .L2473 + ubfiz x0, x19, 1, 16 + ldr x1, [x23,#:lo12:.LANCHOR2] + ldrh w2, [x1,x0] + cbz w2, .L2482 + add x3, x20, 296 + mov x0, x22 + mov w1, w19 + ldrh w3, [x3,w19,sxtw 1] + bl printk +.L2482: + add x0, x23, :lo12:.LANCHOR2 + umull x19, w19, w25 + ldr x0, [x0,-16] + ldrh w19, [x0,x19] + cmp w19, w26 + beq .L2473 + add w21, w21, 1 + uxth w21, w21 + b .L2481 +.L2473: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 96 + ret + .size FtlCheckVpc, .-FtlCheckVpc + .align 2 .global Ftlscanalldata .type Ftlscanalldata, %function Ftlscanalldata: sub sp, sp, #80 - adrp x0, .LC136 - add x0, x0, :lo12:.LC136 + adrp x0, .LC140 + add x0, x0, :lo12:.LC140 mov w1, 0 stp x29, x30, [sp,16] add x29, sp, 16 @@ -16150,29 +16503,29 @@ Ftlscanalldata: mov w20, 0 stp x21, x22, [sp,48] add x19, x19, :lo12:.LANCHOR4 - adrp x21, .LC137 - add x21, x21, :lo12:.LC137 + adrp x21, .LC141 + add x21, x21, :lo12:.LC141 add x19, x19, 160 bl printk -.L2387: +.L2494: adrp x0, .LANCHOR0+2096 ldr w0, [x0,#:lo12:.LANCHOR0+2096] cmp w20, w0 - bcs .L2394 + bcs .L2501 mov w0, w20 add x1, x29, 60 mov w2, 0 bl log2phys and w0, w20, 2047 - cbnz w0, .L2388 + cbnz w0, .L2495 ldr w2, [x29,60] mov x0, x21 mov w1, w20 bl printk -.L2388: +.L2495: ldr w0, [x29,60] cmn w0, #1 - beq .L2390 + beq .L2497 adrp x1, .LANCHOR2 str w0, [x19,4] add x1, x1, :lo12:.LANCHOR2 @@ -16188,13 +16541,13 @@ Ftlscanalldata: bl FlashReadPages ldr w0, [x19] cmn w0, #1 - beq .L2391 + beq .L2498 cmp w0, 256 - beq .L2391 + beq .L2498 ldr w0, [x22,8] cmp w0, w20 - beq .L2390 -.L2391: + beq .L2497 +.L2498: adrp x2, .LANCHOR4 mov w1, w20 add x2, x2, :lo12:.LANCHOR4 @@ -16203,8 +16556,8 @@ Ftlscanalldata: ldr x6, [x2,16] ldr w0, [x7,4] str w0, [sp] - adrp x0, .LC138 - add x0, x0, :lo12:.LC138 + adrp x0, .LC142 + add x0, x0, :lo12:.LC142 ldr w3, [x6] ldr w4, [x6,4] ldr w5, [x6,8] @@ -16212,10 +16565,10 @@ Ftlscanalldata: ldr w6, [x6,12] ldr w7, [x7] bl printk -.L2390: +.L2497: add w20, w20, 1 - b .L2387 -.L2394: + b .L2494 +.L2501: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -16243,9 +16596,9 @@ FtlReUsePrevPpa: mov x21, x2 ldr x4, [x2,#:lo12:.LANCHOR2] ldrh w1, [x4,x22] - cbnz w1, .L2396 + cbnz w1, .L2503 ldr x19, [x3,24] - cbz x19, .L2397 + cbz x19, .L2504 ldr x2, [x3,-16] mov w5, 65535 ldrh w4, [x3,32] @@ -16255,11 +16608,11 @@ FtlReUsePrevPpa: madd x19, x3, x19, x19 mov w3, 6 uxth w19, w19 -.L2398: +.L2505: cmp w1, w4 - beq .L2397 + beq .L2504 cmp w19, w0 - bne .L2399 + bne .L2506 add x23, x21, :lo12:.LANCHOR2 mov w1, w19 add x0, x23, 24 @@ -16273,19 +16626,19 @@ FtlReUsePrevPpa: ldrh w0, [x1,x22] add w0, w0, 1 strh w0, [x1,x22] - b .L2397 -.L2399: + b .L2504 +.L2506: umull x19, w19, w3 ldrh w19, [x2,x19] cmp w19, w5 - beq .L2397 + beq .L2504 add w1, w1, 1 uxth w1, w1 - b .L2398 -.L2396: + b .L2505 +.L2503: add w1, w1, 1 strh w1, [x4,x22] -.L2397: +.L2504: add x1, x29, 76 mov w0, w20 mov w2, 1 @@ -16311,7 +16664,7 @@ FtlRecoverySuperblock: mov x19, x0 ldrh w0, [x0] cmp w0, w2 - beq .L2561 + beq .L2673 ldrh w0, [x19,2] adrp x23, .LANCHOR0 str w0, [x29,188] @@ -16319,65 +16672,65 @@ FtlRecoverySuperblock: str w0, [x29,176] add x0, x23, :lo12:.LANCHOR0 ldr w1, [x29,188] - ldrh w0, [x0,2018] + ldrh w0, [x0,2024] cmp w0, w1 - bne .L2407 + bne .L2514 strh wzr, [x19,4] - b .L2567 -.L2407: + b .L2679 +.L2514: ldrh w0, [x19,16] mov w1, 0 -.L2408: +.L2515: cmp w0, w2 - bne .L2570 + bne .L2682 add w1, w1, 1 uxth w1, w1 add x0, x19, x1, sxtw 1 ldrh w0, [x0,16] - b .L2408 -.L2570: + b .L2515 +.L2682: ldrb w1, [x19,8] cmp w1, 1 - bne .L2410 + bne .L2517 bl FtlGetLastWrittenPage cmn w0, #1 mov w20, w0 - beq .L2411 + beq .L2518 add x0, x23, :lo12:.LANCHOR0 mov w24, w20 - ldrb w1, [x0,120] - cbnz w1, .L2484 - add x0, x0, 196 + ldrb w1, [x0,196] + cbnz w1, .L2592 + add x0, x0, 200 ldrh w24, [x0,w20,sxtw 1] - b .L2484 -.L2410: + b .L2592 +.L2517: mov w1, 0 bl FtlGetLastWrittenPage cmn w0, #1 mov w20, w0 - beq .L2411 + beq .L2518 mov w24, w0 -.L2484: +.L2592: add x0, x23, :lo12:.LANCHOR0 mov x2, x19 mov w26, 0 mov w8, 65535 mov w9, 56 adrp x10, .LANCHOR2 - ldrh w4, [x0,1948] + ldrh w4, [x0,1956] mov w11, 4 - ldrh w7, [x0,2030] + ldrh w7, [x0,2036] add x4, x19, x4, lsl 1 - b .L2413 -.L2411: + b .L2520 +.L2518: strh wzr, [x19,2] -.L2567: +.L2679: strb wzr, [x19,6] - b .L2561 -.L2415: + b .L2673 +.L2522: ldrh w1, [x2,16] cmp w1, w8 - beq .L2414 + beq .L2521 add x5, x10, :lo12:.LANCHOR2 orr w1, w24, w1, lsl 10 umull x0, w26, w9 @@ -16394,21 +16747,21 @@ FtlRecoverySuperblock: sdiv w1, w1, w11 add x1, x5, x1, sxtw 2 str x1, [x0,16] -.L2414: +.L2521: add x2, x2, 2 -.L2413: +.L2520: cmp x2, x4 - bne .L2415 + bne .L2522 ldrb w0, [x19,8] str wzr, [x29,184] cmp w0, 1 - bne .L2416 + bne .L2523 add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,120] + ldrb w0, [x0,196] cmp w0, wzr cset w0, ne str w0, [x29,184] -.L2416: +.L2523: adrp x21, .LANCHOR2 ldr w2, [x29,184] add x22, x21, :lo12:.LANCHOR2 @@ -16419,25 +16772,25 @@ FtlRecoverySuperblock: ldr x0, [x22,2048] bl FlashReadPages ldr w0, [x22,236] - adrp x22, .LC139 + adrp x22, .LC143 str w0, [x29,168] - add x22, x22, :lo12:.LC139 + add x22, x22, :lo12:.LC143 uxth w0, w24 str w0, [x29,160] -.L2417: +.L2524: uxth w2, w27 cmp w2, w26 - bcs .L2424 + bcs .L2531 add x6, x21, :lo12:.LANCHOR2 mul x0, x27, x28 ldr x4, [x6,2048] add x1, x4, x0 ldr w0, [x4,x0] - cbnz w0, .L2418 + cbnz w0, .L2525 ldr x7, [x1,16] ldr w4, [x7,4] cmn w4, #1 - beq .L2419 + beq .L2526 ldr w1, [x6,236] mov w0, w4 str x7, [x29,128] @@ -16449,35 +16802,35 @@ FtlRecoverySuperblock: ldr x4, [x29,144] ldr x2, [x29,136] ldr x7, [x29,128] - cbz w0, .L2419 + cbz w0, .L2526 add w4, w4, 1 str w4, [x6,236] -.L2419: +.L2526: ldr w0, [x7] cmn w0, #1 - bne .L2420 -.L2424: + bne .L2527 +.L2531: cmp w2, w26 - bne .L2562 + bne .L2674 add x0, x21, :lo12:.LANCHOR2 add w20, w20, 1 uxth w20, w20 ldr x0, [x0,2048] ldr w0, [x0,4] - b .L2563 -.L2418: + b .L2675 +.L2525: ldr w1, [x1,4] mov x0, x22 bl printk ldr w25, [x29,160] - adrp x0, .LANCHOR4 + adrp x0, .LANCHOR5 ldrh w1, [x19] - add x0, x0, :lo12:.LANCHOR4 - strh w1, [x0,290] -.L2420: + add x0, x0, :lo12:.LANCHOR5 + strh w1, [x0,-216] +.L2527: add x27, x27, 1 - b .L2417 -.L2562: + b .L2524 +.L2674: add x0, x21, :lo12:.LANCHOR2 mov w1, 56 uxth w20, w20 @@ -16485,80 +16838,80 @@ FtlRecoverySuperblock: ldr x0, [x0,2048] add x2, x0, x2 ldr w0, [x2,4] -.L2563: +.L2675: lsr x0, x0, 10 bl P2V_plane uxth w26, w0 ldrb w1, [x19,8] cmp w1, 1 - bne .L2426 + bne .L2533 add x0, x23, :lo12:.LANCHOR0 - ldrb w2, [x0,120] - cbnz w2, .L2426 - add x0, x0, 196 + ldrb w2, [x0,196] + cbnz w2, .L2533 + add x0, x0, 200 ldrh w20, [x0,w20,sxtw 1] -.L2426: +.L2533: add x0, x23, :lo12:.LANCHOR0 - ldrh w0, [x0,2018] + ldrh w0, [x0,2024] cmp w0, w20 - bne .L2427 + bne .L2534 strh w20, [x19,2] strb wzr, [x19,6] strh wzr, [x19,4] -.L2427: +.L2534: ldrh w0, [x29,176] str w0, [x29,152] ldr w0, [x29,188] cmp w20, w0 - bne .L2428 + bne .L2535 ldr w0, [x29,152] cmp w26, w0 - beq .L2568 -.L2428: + beq .L2680 +.L2535: ldr w0, [x29,168] sub w22, w0, #1 mov w0, 65535 cmp w25, w0 - bne .L2429 - cbnz w1, .L2430 -.L2429: + bne .L2536 + cbnz w1, .L2537 +.L2536: add x0, x21, :lo12:.LANCHOR2 uxth w5, w24 ldr w1, [x0,2348] cmn w1, #1 - bne .L2431 + bne .L2538 str w22, [x0,2348] -.L2431: +.L2538: add x0, x21, :lo12:.LANCHOR2 ldr w25, [x29,188] ldr w6, [x0,2348] ldr w0, [x29,188] add w0, w0, 7 cmp w0, w24, uxth - bge .L2432 + bge .L2539 sub w25, w5, #7 uxth w25, w25 -.L2432: +.L2539: mov w3, -1 add x28, x21, :lo12:.LANCHOR2 mov w27, w3 mov w4, 65535 mov w7, 56 add x8, x28, 988 -.L2433: +.L2540: cmp w25, w5 - bhi .L2446 + bhi .L2553 add x0, x23, :lo12:.LANCHOR0 mov w24, 0 - ldrh w2, [x0,1948] + ldrh w2, [x0,1956] mov x0, x19 add x2, x19, x2, lsl 1 -.L2447: +.L2554: cmp x0, x2 - beq .L2571 + beq .L2683 ldrh w1, [x0,16] cmp w1, w4 - beq .L2434 + beq .L2541 umull x9, w24, w7 ldr x10, [x28,2048] add w24, w24, 1 @@ -16566,10 +16919,10 @@ FtlRecoverySuperblock: add x9, x10, x9 uxth w24, w24 str w1, [x9,4] -.L2434: +.L2541: add x0, x0, 2 - b .L2447 -.L2571: + b .L2554 +.L2683: ldr x0, [x28,2048] mov w1, w24 ldr w2, [x29,184] @@ -16586,116 +16939,116 @@ FtlRecoverySuperblock: mov w1, 0 ldr x6, [x29,160] sxtw x10, w25 - ldrb w9, [x0,120] + ldrb w9, [x0,196] ldr x0, [x28,2048] ldr x4, [x29,144] ldr x7, [x29,136] add x0, x0, 16 ldr x8, [x29,128] -.L2436: +.L2543: cmp w1, w24 - beq .L2572 + beq .L2684 ldr w2, [x0,-16] - cbnz w2, .L2437 + cbnz w2, .L2544 ldr x2, [x0] ldrh w11, [x2] cmp w11, w4 - beq .L2438 + beq .L2545 ldr w2, [x2,4] cmn w2, #1 - beq .L2438 + beq .L2545 ldr w27, [x28,2348] cmn w3, #1 str w2, [x28,2348] - bne .L2438 + bne .L2545 ldrh w2, [x8,x10,lsl 1] cmp w2, w4 - bne .L2439 - cbz w9, .L2438 -.L2439: + bne .L2546 + cbz w9, .L2545 +.L2546: cmp w27, w22 csinv w3, w27, wzr, ne - b .L2438 -.L2437: - adrp x0, .LANCHOR4+290 + b .L2545 +.L2544: + adrp x0, .LANCHOR5-216 ldrh w1, [x19] - strh w1, [x0,#:lo12:.LANCHOR4+290] + strh w1, [x0,#:lo12:.LANCHOR5-216] ldrb w0, [x19,8] - cbnz w0, .L2430 + cbnz w0, .L2537 add x0, x21, :lo12:.LANCHOR2 add x1, x0, 988 ldrh w2, [x1,w25,sxtw 1] mov w1, 65535 cmp w2, w1 - bne .L2441 + bne .L2548 cmn w3, #1 - beq .L2442 + beq .L2549 str w3, [x0,2348] - b .L2430 -.L2442: + b .L2537 +.L2549: cmp w6, w22 - beq .L2443 + beq .L2550 str w6, [x0,2348] - b .L2430 -.L2443: + b .L2537 +.L2550: ldr w1, [x0,2348] - b .L2569 -.L2441: + b .L2681 +.L2548: cmp w27, w22 - beq .L2444 + beq .L2551 cmn w27, #1 - beq .L2430 + beq .L2537 str w27, [x0,2348] - b .L2430 -.L2444: + b .L2537 +.L2551: ldr w1, [x0,2348] cmp w1, w22 - beq .L2430 -.L2569: + beq .L2537 +.L2681: sub w1, w1, #1 - b .L2564 -.L2438: + b .L2676 +.L2545: add w1, w1, 1 add x0, x0, 56 uxth w1, w1 - b .L2436 -.L2572: + b .L2543 +.L2684: add w25, w25, 1 uxth w25, w25 - b .L2433 -.L2446: + b .L2540 +.L2553: add x0, x21, :lo12:.LANCHOR2 mov w1, -1 -.L2564: +.L2676: str w1, [x0,2348] -.L2430: - adrp x0, .LANCHOR4 +.L2537: + adrp x0, .LANCHOR5 str x0, [x29,136] - add x1, x0, :lo12:.LANCHOR4 - adrp x0, .LC141 - add x0, x0, :lo12:.LC141 + add x1, x0, :lo12:.LANCHOR5 + adrp x0, .LC145 + add x0, x0, :lo12:.LC145 ldr w24, [x29,188] str x0, [x29,128] - adrp x0, .LC140 + adrp x0, .LC144 mov w2, 1 - add x0, x0, :lo12:.LC140 - strh w2, [x1,292] + add x0, x0, :lo12:.LC144 + strh w2, [x1,-214] str x0, [x29,120] -.L2448: +.L2555: add x0, x23, :lo12:.LANCHOR0 mov x1, x19 str wzr, [x29,176] mov w7, 65535 mov w8, 56 - ldrh w3, [x0,1948] - ldrb w6, [x0,120] + ldrh w3, [x0,1956] + ldrb w6, [x0,196] add x3, x19, x3, lsl 1 -.L2449: +.L2556: cmp x1, x3 - beq .L2573 + beq .L2685 ldrh w2, [x1,16] cmp w2, w7 - beq .L2450 + beq .L2557 ldr w0, [x29,176] add x5, x21, :lo12:.LANCHOR2 orr w2, w24, w2, lsl 10 @@ -16705,33 +17058,33 @@ FtlRecoverySuperblock: str w2, [x4,4] ldrb w2, [x19,8] cmp w2, 1 - bne .L2451 - cbz w6, .L2451 + bne .L2558 + cbz w6, .L2558 ldr x2, [x5,2048] add x0, x2, x0 ldr w2, [x0,4] orr w2, w2, -2147483648 str w2, [x0,4] -.L2451: +.L2558: ldr w0, [x29,176] add w0, w0, 1 uxth w0, w0 str w0, [x29,176] -.L2450: +.L2557: add x1, x1, 2 - b .L2449 -.L2573: + b .L2556 +.L2685: add x0, x21, :lo12:.LANCHOR2 ldr w1, [x29,176] ldr w2, [x29,184] ldr x0, [x0,2048] bl FlashReadPages str xzr, [x29,160] -.L2453: +.L2560: ldrh w0, [x29,160] ldr w1, [x29,176] cmp w1, w0, uxth - bls .L2574 + bls .L2686 ldr x0, [x29,160] mov x25, 56 mul x25, x0, x25 @@ -16747,41 +17100,41 @@ FtlRecoverySuperblock: ldr w1, [x29,188] cmp w24, w1 ldr x1, [x29,168] - bcc .L2454 + bcc .L2561 ldr w2, [x29,152] cmp w0, w2 - bcs .L2488 + bcs .L2596 ldr w2, [x29,188] cmp w24, w2 - beq .L2454 -.L2488: + beq .L2561 +.L2596: cmp w0, w26 - bne .L2489 + bne .L2597 cmp w24, w20 - beq .L2456 -.L2489: + beq .L2563 +.L2597: ldr w0, [x28,x25] cmn w0, #1 - beq .L2458 + beq .L2565 ldr x28, [x27,16] mov w0, 61589 ldrh w1, [x28] cmp w1, w0 - beq .L2459 + beq .L2566 ldrh w0, [x19] - b .L2565 -.L2459: + b .L2677 +.L2566: ldr w22, [x28,4] cmn w22, #1 - beq .L2460 + beq .L2567 add x27, x21, :lo12:.LANCHOR2 mov w0, w22 ldr w1, [x27,236] bl ftl_cmp_data_ver - cbz w0, .L2460 + cbz w0, .L2567 add w0, w22, 1 str w0, [x27,236] -.L2460: +.L2567: ldr w27, [x28,8] add x1, x29, 200 ldr w0, [x28,12] @@ -16789,27 +17142,27 @@ FtlRecoverySuperblock: str w0, [x29,196] mov w0, w27 bl log2phys + ldr w28, [x29,196] add x3, x21, :lo12:.LANCHOR2 str x3, [x29,168] ldr w1, [x3,2348] cmn w1, #1 - beq .L2461 + beq .L2568 mov w0, w22 bl ftl_cmp_data_ver ldr x3, [x29,168] - cbz w0, .L2461 - ldr w1, [x29,196] - cmn w1, #1 - beq .L2462 + cbz w0, .L2568 + cmn w28, #1 + beq .L2569 ldr x0, [x3,2048] + mov w2, 0 str x3, [x29,112] add x0, x0, x25 - str w1, [x0,4] - mov w1, 1 - ldr x2, [x0,16] + str w28, [x0,4] + ldr x1, [x0,16] ldr x0, [x3,2048] - str x2, [x29,168] - mov w2, 0 + str x1, [x29,168] + mov w1, 1 add x0, x0, x25 bl FlashReadPages ldr x3, [x29,112] @@ -16820,23 +17173,23 @@ FtlRecoverySuperblock: add x4, x2, x25 ldr w0, [x2,x25] cmn w0, #1 - bne .L2463 - b .L2464 -.L2462: + bne .L2570 + b .L2571 +.L2569: ldr w0, [x29,204] ldr w1, [x29,200] cmp w1, w0 - bne .L2454 + bne .L2561 mov w0, w27 add x1, x29, 196 mov w2, 1 bl log2phys - b .L2454 -.L2463: + b .L2561 +.L2570: ldr x0, [x29,168] ldr w28, [x0,8] cmp w28, w27 - bne .L2464 + bne .L2571 ldr w0, [x3,2348] ldr w1, [x29,144] str x2, [x29,96] @@ -16846,16 +17199,16 @@ FtlRecoverySuperblock: ldr x3, [x29,112] ldr x4, [x29,104] ldr x2, [x29,96] - cbz w0, .L2464 + cbz w0, .L2571 ldr w0, [x29,200] ldr w1, [x29,204] cmp w0, w1 - beq .L2469 + beq .L2576 ldr w1, [x29,196] cmp w0, w1 - beq .L2464 + beq .L2571 cmn w0, #1 - beq .L2467 + beq .L2574 str w0, [x4,4] mov w2, 0 ldr x1, [x4,16] @@ -16864,62 +17217,69 @@ FtlRecoverySuperblock: mov w1, 1 add x0, x0, x25 bl FlashReadPages - b .L2468 -.L2467: + b .L2575 +.L2574: str w0, [x2,x25] -.L2468: +.L2575: add x0, x21, :lo12:.LANCHOR2 ldr x1, [x0,2048] ldr w1, [x1,x25] cmn w1, #1 - beq .L2469 + beq .L2576 ldr x1, [x29,168] ldr w0, [x0,2348] ldr w25, [x1,4] mov w1, w25 bl ftl_cmp_data_ver - cbz w0, .L2469 + cbz w0, .L2576 ldr w0, [x29,144] mov w1, w25 bl ftl_cmp_data_ver - cbz w0, .L2464 -.L2469: + cbz w0, .L2571 +.L2576: ldr w1, [x29,196] mov w0, w28 bl FtlReUsePrevPpa -.L2464: +.L2571: mov w0, -1 str w0, [x29,196] - b .L2471 -.L2461: + b .L2578 +.L2568: ldr w0, [x29,204] ldr w1, [x29,200] cmp w1, w0 - beq .L2471 + beq .L2578 + add x0, x23, :lo12:.LANCHOR0 + ldr w0, [x0,1972] + cmp w0, w28, lsr 10 + bhi .L2598 + cmn w28, #1 + bne .L2561 +.L2598: mov w0, w27 add x1, x29, 204 mov w2, 1 bl log2phys ldr w25, [x29,200] cmn w25, #1 - beq .L2471 + beq .L2578 ldr w0, [x29,196] cmp w25, w0 - beq .L2471 + beq .L2578 lsr x0, x25, 10 bl P2V_block_in_plane uxth w0, w0 add x1, x21, :lo12:.LANCHOR2 ldrh w2, [x1,40] cmp w2, w0 - beq .L2474 + beq .L2582 ldrh w2, [x1,88] cmp w2, w0 - beq .L2474 + beq .L2582 ldrh w1, [x1,136] cmp w1, w0 - bne .L2471 -.L2474: + bne .L2578 +.L2582: add x28, x21, :lo12:.LANCHOR2 mov w1, 1 mov w2, 0 @@ -16934,108 +17294,108 @@ FtlRecoverySuperblock: ldr w0, [x0] ldr w1, [x3,4] cmn w0, #1 - beq .L2471 + beq .L2578 mov w0, w22 bl ftl_cmp_data_ver - cbnz w0, .L2471 + cbnz w0, .L2578 mov w0, w27 add x1, x29, 200 mov w2, 1 bl log2phys -.L2471: +.L2578: ldr w0, [x29,196] cmn w0, #1 - beq .L2454 + beq .L2561 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 ubfiz x2, x1, 1, 16 ldr x3, [x21,#:lo12:.LANCHOR2] ldrh w2, [x3,x2] - cbz w2, .L2475 -.L2565: + cbz w2, .L2583 +.L2677: bl decrement_vpc_count - b .L2454 -.L2475: + b .L2561 +.L2583: ldr x0, [x29,120] bl printk - b .L2454 -.L2458: + b .L2561 +.L2565: ldr x2, [x29,136] ldrh w0, [x19] - add x25, x2, :lo12:.LANCHOR4 + add x25, x2, :lo12:.LANCHOR5 mov w2, w22 - strh w0, [x25,290] + strh w0, [x25,-216] ldr x0, [x29,128] bl printk - ldr w0, [x25,296] + ldr w0, [x25,-212] cmp w0, 31 - bhi .L2476 - add x1, x25, 304 + bhi .L2584 + sub x1, x25, #208 ldr w2, [x29,204] str w2, [x1,w0,uxtw 2] add w0, w0, 1 - str w0, [x25,296] -.L2476: + str w0, [x25,-212] +.L2584: ldrh w0, [x19] bl decrement_vpc_count add x0, x21, :lo12:.LANCHOR2 ldr w1, [x0,2348] cmn w1, #1 - beq .L2566 + beq .L2678 cmp w1, w22 - bls .L2454 -.L2566: + bls .L2561 +.L2678: str w22, [x0,2348] -.L2454: +.L2561: ldr x0, [x29,160] add x0, x0, 1 str x0, [x29,160] - b .L2453 -.L2574: + b .L2560 +.L2686: ldrb w0, [x19,8] add w24, w24, 1 cmp w0, 1 uxth w24, w24 - bne .L2479 + bne .L2587 add x0, x23, :lo12:.LANCHOR0 - ldrb w1, [x0,120] - cbz w1, .L2479 + ldrb w1, [x0,196] + cbz w1, .L2587 cmp w20, w24 - bne .L2479 - ldrh w0, [x0,2020] + bne .L2587 + ldrh w0, [x0,2026] cmp w0, w24 - beq .L2456 -.L2479: + beq .L2563 +.L2587: add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,2018] + ldrh w1, [x0,2024] cmp w24, w1 - bne .L2448 - ldrh w2, [x0,1948] + bne .L2555 + ldrh w2, [x0,1956] mov w3, 65535 strh w24, [x19,2] mov x0, 0 strh wzr, [x19,4] -.L2481: +.L2589: uxth w1, w0 cmp w1, w2 - bcs .L2561 + bcs .L2673 add x0, x0, 1 add x4, x19, x0, lsl 1 ldrh w4, [x4,14] cmp w4, w3 - beq .L2481 + beq .L2589 strb w1, [x19,6] - b .L2561 -.L2456: + b .L2673 +.L2563: strb w26, [x19,6] strh w20, [x19,2] -.L2568: +.L2680: mov x0, x19 mov w1, w20 mov w2, w26 bl ftl_sb_update_avl_pages -.L2561: +.L2673: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -17054,7 +17414,7 @@ FtlVpcCheckAndModify: adrp x0, .LC106 add x1, x1, :lo12:.LANCHOR3 add x29, sp, 0 - add x1, x1, 56 + add x1, x1, 96 add x0, x0, :lo12:.LC106 stp x19, x20, [sp,16] stp x21, x22, [sp,32] @@ -17065,23 +17425,23 @@ FtlVpcCheckAndModify: adrp x20, .LANCHOR2 add x0, x20, :lo12:.LANCHOR2 mov w19, 0 - ldrh w2, [x1,1958] + ldrh w2, [x1,1966] mov w1, 0 ldr x0, [x0,2168] lsl w2, w2, 1 bl ftl_memset -.L2576: +.L2688: add x0, x22, :lo12:.LANCHOR0 ldr w0, [x0,2096] cmp w19, w0 - bcs .L2592 + bcs .L2704 mov w0, w19 add x1, x29, 76 mov w2, 0 bl log2phys ldr w0, [x29,76] cmn w0, #1 - beq .L2577 + beq .L2689 lsr x0, x0, 10 bl P2V_block_in_plane ubfiz x0, x0, 1, 16 @@ -17090,59 +17450,59 @@ FtlVpcCheckAndModify: ldrh w1, [x2,x0] add w1, w1, 1 strh w1, [x2,x0] -.L2577: +.L2689: add w19, w19, 1 - b .L2576 -.L2592: - adrp x23, .LC142 + b .L2688 +.L2704: + adrp x23, .LC146 mov w19, 0 add x20, x20, :lo12:.LANCHOR2 mov w24, 65535 - add x23, x23, :lo12:.LC142 -.L2579: + add x23, x23, :lo12:.LC146 +.L2691: add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,1956] + ldrh w0, [x0,1964] cmp w0, w19 - bls .L2593 + bls .L2705 ubfiz x21, x19, 1, 16 ldr x0, [x20] ldrh w2, [x0,x21] ldr x0, [x20,2168] ldrh w3, [x0,x21] cmp w2, w3 - beq .L2582 + beq .L2694 cmp w2, w24 - beq .L2582 + beq .L2694 mov x0, x23 mov w1, w19 bl printk ldrh w0, [x20,40] cmp w0, w19 - beq .L2582 + beq .L2694 ldrh w0, [x20,136] cmp w0, w19 - beq .L2582 + beq .L2694 ldrh w0, [x20,88] cmp w0, w19 - beq .L2582 + beq .L2694 ldr x0, [x20] ldrh w1, [x0,x21] - cbnz w1, .L2584 + cbnz w1, .L2696 ldr x1, [x20,2168] ldrh w1, [x1,x21] strh w1, [x0,x21] - b .L2582 -.L2584: + b .L2694 +.L2696: ldr x1, [x20,2168] ldrh w1, [x1,x21] strh w1, [x0,x21] mov w0, w19 bl update_vpc_list -.L2582: +.L2694: add w19, w19, 1 uxth w19, w19 - b .L2579 -.L2593: + b .L2691 +.L2705: bl l2p_flush bl FtlVpcTblFlush ldp x19, x20, [sp,16] @@ -17152,41 +17512,320 @@ FtlVpcCheckAndModify: ret .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 + .global FtlGcScanTempBlk + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + stp x29, x30, [sp, -240]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x20, .LANCHOR1 + mov x19, x0 + add x0, x20, :lo12:.LANCHOR1 + str w1, [x29,164] + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] + str x20, [x29,152] + ldrh w26, [x0,3296] + mov w0, 65535 + cmp w26, w0 + beq .L2736 + cbnz w26, .L2707 + b .L2708 +.L2736: + mov w26, 0 +.L2707: + adrp x0, .LANCHOR0+2024 + ldr w1, [x29,164] + ldrh w0, [x0,#:lo12:.LANCHOR0+2024] + cmp w1, w0 + bne .L2709 +.L2708: + bl FtlGcPageVarInit +.L2709: + mov w0, -1 + adrp x25, .LANCHOR0 + str w0, [x29,168] + adrp x0, .LC148 + add x0, x0, :lo12:.LC148 + mov w22, 0 + mov x24, x25 + str x0, [x29,144] +.L2710: + ldrh w0, [x19] + mov w21, 65535 + strb wzr, [x19,8] + cmp w0, w21 + beq .L2711 +.L2712: +.L2733: + add x0, x25, :lo12:.LANCHOR0 + mov x2, x19 + mov w20, 0 + mov w10, 56 + adrp x11, .LANCHOR2 + mov w7, 4 + ldrh w6, [x0,1956] + ldrh w8, [x0,2034] + ldrh w9, [x0,2036] + add x6, x19, x6, lsl 1 +.L2713: + cmp x2, x6 + beq .L2753 + ldrh w1, [x2,16] + cmp w1, w21 + beq .L2714 + add x4, x11, :lo12:.LANCHOR2 + orr w1, w26, w1, lsl 10 + umull x0, w20, w10 + add w5, w20, 1 + ldr x12, [x4,2048] + add x12, x12, x0 + str w1, [x12,4] + ldr x1, [x4,2048] + ldr x12, [x4,880] + add x0, x1, x0 + ldr x4, [x4,888] + mul w1, w20, w8 + sdiv w1, w1, w7 + add x1, x12, x1, sxtw 2 + str x1, [x0,8] + mul w1, w20, w9 + uxth w20, w5 + sdiv w1, w1, w7 + add x1, x4, x1, sxtw 2 + str x1, [x0,16] +.L2714: + add x2, x2, 2 + b .L2713 +.L2753: + adrp x28, .LANCHOR2 + mov w1, w20 + add x0, x28, :lo12:.LANCHOR2 + mov w2, 0 + mov x23, 0 + mov x27, x28 + ldr x0, [x0,2048] + bl FlashReadPages +.L2716: + cmp w20, w23, uxth + bls .L2754 + add x8, x27, :lo12:.LANCHOR2 + mov x0, 56 + mul x28, x23, x0 + ldr x0, [x8,2048] + add x1, x0, x28 + ldr w10, [x0,x28] + ldr w2, [x1,4] + str w2, [x29,172] + ldr x7, [x1,16] + cbnz w10, .L2717 + ldrh w0, [x7] + cmp w0, w21 + beq .L2752 + add x9, x24, :lo12:.LANCHOR0 + ldr w0, [x7,8] + ldr w1, [x9,2096] + cmp w0, w1 + bhi .L2752 + ldrb w1, [x9,72] + cbz w1, .L2722 + add x1, x29, 180 + mov w2, w10 + str x7, [x29,136] + str x9, [x29,104] + str x8, [x29,112] + str x10, [x29,120] + bl log2phys + ldr x7, [x29,136] + ldr w1, [x29,180] + ldr w0, [x7,12] + cmp w1, w0 + bne .L2722 + cmn w1, #1 + beq .L2722 + ldr x8, [x29,112] + mov w1, 1 + str w0, [x29,188] + ldr x10, [x29,120] + ldr x0, [x8,2112] + str x0, [x29,192] + mov w2, w10 + ldr x0, [x8,2128] + str x0, [x29,200] + add x0, x29, 184 + str x7, [x29,128] + str x8, [x29,136] + bl FlashReadPages + ldr x8, [x29,136] + ldr x9, [x29,104] + ldr x7, [x29,128] + ldr x0, [x8,2048] + ldrh w2, [x9,2030] + ldr x8, [x29,192] + add x6, x0, x28 + lsl w2, w2, 7 + mov x0, 0 +.L2724: + cmp w2, w0 + bls .L2722 + lsl x1, x0, 2 + ldr x9, [x6,8] + add x0, x0, 1 + ldr w9, [x9,x1] + ldr w1, [x8,x1] + cmp w9, w1 + beq .L2724 + adrp x0, .LC147 + ldrh w1, [x19] + ldr w2, [x29,188] + add x0, x0, :lo12:.LC147 + bl printk +.L2752: + ldr x0, [x27,#:lo12:.LANCHOR2] + add x21, x27, :lo12:.LANCHOR2 + ldrh w1, [x19] + strh wzr, [x0,x1,lsl 1] + ldrh w0, [x19] + bl INSERT_FREE_LIST + mov w0, -1 + strh w0, [x19] + strh w0, [x21,280] + b .L2751 +.L2722: + ldr w0, [x7,12] + add x23, x23, 1 + ldr w1, [x29,172] + ldr w2, [x7,8] + bl FtlGcUpdatePage + b .L2716 +.L2717: + ldrh w1, [x19] + ldr x0, [x29,144] + ldr w2, [x29,172] + bl printk + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldr w1, [x0,1948] + cbnz w1, .L2727 + ldrb w0, [x0,196] + cbz w0, .L2728 +.L2727: + add x0, x27, :lo12:.LANCHOR2 + ldrh w1, [x19] + ldr x0, [x0,-80] + ldrh w0, [x0,x1,lsl 1] + cmp w0, 159 + bls .L2729 +.L2728: + add x0, x27, :lo12:.LANCHOR2 + ldr x0, [x0,2048] + ldr w0, [x0,x28] + cmn w0, #1 + bne .L2730 +.L2729: + add x0, x27, :lo12:.LANCHOR2 + ldr x0, [x0,2048] + add x6, x0, x28 + ldr w0, [x6,4] + str w0, [x29,168] +.L2730: + ldr x0, [x27,#:lo12:.LANCHOR2] + ldrh w1, [x19] + strh wzr, [x0,x1,lsl 1] + ldrh w0, [x19] + bl INSERT_FREE_LIST + mov w0, -1 + strh w0, [x19] +.L2751: + bl FtlGcPageVarInit + mov w26, 0 + b .L2710 +.L2754: + ldr w0, [x29,164] + add w22, w22, 1 + add w3, w26, 1 + cmp w22, w0 + uxth w26, w3 + bcs .L2732 +.L2734: + add x0, x24, :lo12:.LANCHOR0 + ldrh w0, [x0,2024] + cmp w0, w26 + bhi .L2733 + b .L2711 +.L2732: + ldr x0, [x29,152] + add x1, x0, :lo12:.LANCHOR1 + ldrh w0, [x1,3296] + cmp w0, w21 + beq .L2734 + add w0, w0, w22 + strh w0, [x1,3296] + add x0, x24, :lo12:.LANCHOR0 + ldrh w0, [x0,2024] + cmp w0, w26 + bls .L2734 + b .L2735 +.L2711: + ldr x0, [x29,152] + mov w1, w26 + strh w26, [x19,2] + mov w2, 0 + add x20, x0, :lo12:.LANCHOR1 + mov w0, -1 + strb wzr, [x19,6] + strh w0, [x20,3296] + mov x0, x19 + bl ftl_sb_update_avl_pages +.L2735: + ldr w0, [x29,168] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 240 + ret + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 2 .global FtlReadRefresh .type FtlReadRefresh, %function FtlReadRefresh: stp x29, x30, [sp, -112]! - adrp x1, .LANCHOR2 - add x0, x1, :lo12:.LANCHOR2 + adrp x2, .LANCHOR2 + add x1, x2, :lo12:.LANCHOR2 add x29, sp, 0 - add x2, x0, 336 + add x3, x1, 336 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - adrp x19, .LANCHOR0 - ldr w3, [x2,80] - cbz w3, .L2595 - add x1, x19, :lo12:.LANCHOR0 - ldr w3, [x2,84] - ldr w1, [x1,2096] - cmp w3, w1 - bcs .L2596 + adrp x20, .LANCHOR0 + ldr w0, [x3,80] + cbz w0, .L2756 + add x0, x20, :lo12:.LANCHOR0 + ldr w2, [x3,84] + ldr w0, [x0,2096] + cmp w2, w0 + bcs .L2757 mov w21, 2048 - mov x20, x0 -.L2601: - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x20,420] + mov x19, x1 +.L2762: + add x22, x19, 336 + add x1, x20, :lo12:.LANCHOR0 + ldr w0, [x22,84] ldr w1, [x1,2096] cmp w0, w1 - bcs .L2598 + bcs .L2761 add x1, x29, 52 mov w2, 0 bl log2phys - ldr w0, [x20,420] + ldr w0, [x22,84] ldr w1, [x29,52] add w0, w0, 1 - str w0, [x20,420] + str w0, [x22,84] cmn w1, #1 - beq .L2599 + beq .L2760 str w1, [x29,60] mov w2, 0 str w0, [x29,80] @@ -17198,56 +17837,64 @@ FtlReadRefresh: bl FlashReadPages ldr w0, [x29,56] cmp w0, 256 - bne .L2598 + bne .L2761 ldr w0, [x29,52] lsr x0, x0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock - b .L2598 -.L2599: - subs w21, w21, #1 - bne .L2601 -.L2598: +.L2761: mov w0, -1 - b .L2603 -.L2596: - ldr w0, [x0,200] - str wzr, [x2,80] - str wzr, [x2,84] - str w0, [x2,76] - b .L2609 -.L2595: - add x19, x19, :lo12:.LANCHOR0 - ldr w0, [x0,252] - mov w2, 4194304 - ldrb w4, [x19,120] - ldr w3, [x19,1940] - cbnz w4, .L2604 - add w0, w3, w0, lsr 10 - mov w3, 33554432 - asr w2, w3, w0 -.L2604: - add x4, x1, :lo12:.LANCHOR2 - ldr w3, [x4,200] - ldr w0, [x4,412] - add w5, w3, 1048576 - cmp w0, w5 - bhi .L2605 - add w0, w2, w0 - cmp w0, w3 - bcc .L2605 - ldrb w2, [x4,-36] + b .L2764 +.L2760: + subs w21, w21, #1 + bne .L2762 + b .L2761 +.L2757: + ldr w0, [x1,200] + str wzr, [x3,80] + str wzr, [x3,84] + str w0, [x3,76] + b .L2771 +.L2756: + ldr w4, [x1,252] + mov w6, 10000 + mov w8, 63 + ldr w7, [x1,200] + cmp w4, w6 + mov w6, 31 + csel w8, w6, w8, hi + ldr w6, [x3,76] + add x20, x20, :lo12:.LANCHOR0 + add w9, w7, 1048576 + cmp w6, w9 + ldr w5, [x20,2096] + bhi .L2766 + mov w9, 1000 + lsr w4, w4, 10 + add w4, w4, 1 + mul w5, w5, w9 + udiv w4, w5, w4 + add w4, w4, w6 + cmp w4, w7 + bcc .L2766 + ldrh w1, [x1,-36] + tst w8, w1 + bne .L2764 + ldr w3, [x3,100] + cmp w3, w1 + beq .L2764 +.L2766: + add x0, x2, :lo12:.LANCHOR2 + add x1, x0, 336 + ldrh w0, [x0,-36] + str w0, [x1,100] + mov w0, 1 + str wzr, [x1,84] + str w0, [x1,80] + str w7, [x1,76] +.L2771: mov w0, 0 - cbnz w2, .L2603 -.L2605: - add x0, x1, :lo12:.LANCHOR2 - mov w1, 1 - str wzr, [x0,420] - str w1, [x0,416] - str w3, [x0,412] -.L2609: - mov w0, 0 -.L2603: +.L2764: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 112 @@ -17268,27 +17915,27 @@ FtlGcFreeTempBlock: adrp x21, .LANCHOR0 add x1, x21, :lo12:.LANCHOR0 ldr w3, [x2,-96] - ldrh w1, [x1,2018] - cbnz w3, .L2644 + ldrh w1, [x1,2024] + cbnz w3, .L2808 ldrh w20, [x2,136] mov w4, 65535 cmp w20, w4 - bne .L2613 -.L2622: + bne .L2775 +.L2784: add x20, x19, :lo12:.LANCHOR2 mov w0, 65535 add x22, x20, 136 ldrh w1, [x20,136] str wzr, [x20,2344] cmp w1, w0 - beq .L2644 + beq .L2808 bl FtlCacheWriteBack mov w26, 12 adrp x0, .LANCHOR2 add x3, x21, :lo12:.LANCHOR0 ldrh w2, [x20,136] ldr x1, [x0,#:lo12:.LANCHOR2] - ldrh w3, [x3,2018] + ldrh w3, [x3,2024] ldrb w0, [x22,7] mov w22, 0 mul w0, w0, w3 @@ -17297,42 +17944,42 @@ FtlGcFreeTempBlock: ldrh w1, [x20,920] add w0, w1, w0 str w0, [x20,220] - b .L2623 -.L2613: - cbz w0, .L2616 + b .L2785 +.L2775: + cbz w0, .L2778 adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - ldrh w5, [x0,3168] + ldrh w5, [x0,3296] cmp w5, w4 - beq .L2617 -.L2618: + beq .L2779 +.L2780: mov w1, 2 - b .L2616 -.L2617: - strh w3, [x0,3168] + b .L2778 +.L2779: + strh w3, [x0,3296] ldrh w0, [x2,32] cmp w0, 17 - bhi .L2618 -.L2616: + bhi .L2780 +.L2778: add x22, x19, :lo12:.LANCHOR2 add x0, x22, 136 bl FtlGcScanTempBlk str w0, [x29,92] cmn w0, #1 - beq .L2619 + beq .L2781 ubfiz x20, x20, 1, 16 ldr x1, [x22,-80] ldrh w0, [x1,x20] cmp w0, 4 - bls .L2620 + bls .L2782 sub w0, w0, #5 strh w0, [x1,x20] mov w0, 1 bl FtlEctTblFlush -.L2620: +.L2782: add x0, x19, :lo12:.LANCHOR2 ldr w1, [x0,2344] - cbnz w1, .L2621 + cbnz w1, .L2783 ldr w1, [x0,432] add w1, w1, 1 str w1, [x0,432] @@ -17340,31 +17987,45 @@ FtlGcFreeTempBlock: lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush -.L2621: +.L2783: add x19, x19, :lo12:.LANCHOR2 mov w0, 1 str wzr, [x19,2344] - b .L2612 -.L2619: - adrp x0, .LANCHOR1+3168 + b .L2774 +.L2781: + adrp x0, .LANCHOR1+3296 mov w1, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR1+3168] + ldrh w2, [x0,#:lo12:.LANCHOR1+3296] mov w0, 1 cmp w2, w1 - bne .L2612 - b .L2622 -.L2626: - ldr x25, [x20,928] - add x1, x29, 92 + bne .L2774 + b .L2784 +.L2788: + ldr w1, [x23,4] + cmp w0, w1 + bne .L2806 +.L2787: + add w22, w22, 1 + uxth w22, w22 +.L2785: + ldrh w0, [x20,920] + cmp w0, w22 + bls .L2809 umull x24, w22, w26 - mov w2, 0 + ldr x25, [x20,928] + add x1, x21, :lo12:.LANCHOR0 add x23, x25, x24 + ldr w1, [x1,2096] ldr w0, [x23,8] + cmp w0, w1 + bcs .L2806 + add x1, x29, 92 + mov w2, 0 bl log2phys ldr w0, [x29,92] ldr w1, [x25,x24] cmp w0, w1 - bne .L2624 + bne .L2788 lsr x0, x0, 10 bl P2V_block_in_plane mov w24, w0 @@ -17373,44 +18034,34 @@ FtlGcFreeTempBlock: mov w2, 1 bl log2phys mov w0, w24 -.L2643: - bl decrement_vpc_count -.L2625: - add w22, w22, 1 - uxth w22, w22 -.L2623: - ldrh w0, [x20,920] - cmp w0, w22 - bhi .L2626 - b .L2645 -.L2624: - ldr w1, [x23,4] - cmp w0, w1 - beq .L2625 + b .L2807 +.L2806: ldrh w0, [x20,136] - b .L2643 -.L2645: +.L2807: + bl decrement_vpc_count + b .L2787 +.L2809: mov w0, -1 bl decrement_vpc_count add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L2627 - adrp x0, .LC143 + ldrb w0, [x0,196] + cbz w0, .L2790 + adrp x0, .LC149 ldrh w1, [x20,136] - add x0, x0, :lo12:.LC143 + add x0, x0, :lo12:.LC149 bl printk -.L2627: +.L2790: add x0, x19, :lo12:.LANCHOR2 ldr x2, [x19,#:lo12:.LANCHOR2] ldrh w0, [x0,136] ubfiz x1, x0, 1, 16 ldrh w1, [x2,x1] - cbz w1, .L2628 + cbz w1, .L2791 bl INSERT_DATA_LIST - b .L2629 -.L2628: + b .L2792 +.L2791: bl INSERT_FREE_LIST -.L2629: +.L2792: add x20, x19, :lo12:.LANCHOR2 mov w22, -1 strh wzr, [x20,920] @@ -17420,37 +18071,37 @@ FtlGcFreeTempBlock: bl FtlVpcTblFlush strh w22, [x20,280] add x0, x21, :lo12:.LANCHOR0 - ldr w0, [x0,1940] - cbz w0, .L2630 + ldr w0, [x0,1948] + cbz w0, .L2793 ldr w0, [x20,256] cmp w0, 39 - bhi .L2630 + bhi .L2793 ldrh w0, [x20,260] ldrh w1, [x20,32] cmp w1, w0 - bcs .L2644 + bcs .L2808 lsl w0, w0, 1 strh w0, [x20,848] -.L2644: +.L2808: mov w0, 0 - b .L2612 -.L2630: + b .L2774 +.L2793: add x19, x19, :lo12:.LANCHOR2 ldrh w1, [x19,260] ldrh w0, [x19,32] add w2, w1, w1, lsl 1 cmp w0, w2, lsr 2 - ble .L2644 + ble .L2808 add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,120] - cbz w0, .L2631 + ldrb w0, [x21,196] + cbz w0, .L2794 sub w1, w1, #2 strh w1, [x19,848] - b .L2644 -.L2631: + b .L2808 +.L2794: mov w1, 20 strh w1, [x19,848] -.L2612: +.L2774: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -17472,18 +18123,18 @@ FtlGcPageRecovery: str x21, [sp,32] add x21, x19, 136 mov x0, x21 - ldrh w1, [x20,2018] + ldrh w1, [x20,2024] bl FtlGcScanTempBlk ldrh w1, [x19,138] - ldrh w0, [x20,2018] + ldrh w0, [x20,2024] cmp w1, w0 - bcc .L2646 + bcc .L2810 add x0, x19, 2256 bl FtlMapBlkWriteDumpData mov w0, 0 bl FtlGcFreeTempBlock str wzr, [x19,2344] -.L2646: +.L2810: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -17494,11 +18145,11 @@ FtlGcPageRecovery: .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR4+296 + adrp x0, .LANCHOR5-212 add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR2 - str wzr, [x0,#:lo12:.LANCHOR4+296] + str wzr, [x0,#:lo12:.LANCHOR5-212] add x19, x19, :lo12:.LANCHOR2 add x20, x19, 40 add x19, x19, 88 @@ -17527,29 +18178,29 @@ FtlSysBlkInit: add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - adrp x20, .LANCHOR4 - adrp x21, .LANCHOR0 + adrp x20, .LANCHOR0 + adrp x21, .LANCHOR5 stp x23, x24, [sp,48] - add x0, x20, :lo12:.LANCHOR4 - add x24, x21, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR5 + add x24, x20, :lo12:.LANCHOR0 adrp x19, .LANCHOR2 add x23, x19, :lo12:.LANCHOR2 - strh w1, [x0,290] - strh wzr, [x0,292] - ldrh w0, [x24,1952] + strh w1, [x0,-216] + strh wzr, [x0,-214] + ldrh w0, [x24,1960] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk ldrh w1, [x23,264] mov w0, 65535 cmp w1, w0 - bne .L2650 -.L2652: + bne .L2814 +.L2816: mov w22, -1 - b .L2651 -.L2650: + b .L2815 +.L2814: bl FtlLoadSysInfo mov w22, w0 - cbnz w0, .L2652 + cbnz w0, .L2816 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -17559,28 +18210,28 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldrh w2, [x24,2058] + ldrh w2, [x24,2062] mov x1, 0 ldr x0, [x23,184] -.L2653: +.L2817: cmp w1, w2 mov w3, w1 - bge .L2657 + bge .L2821 add x4, x0, x1, lsl 4 add x1, x1, 1 ldr w4, [x4,4] - tbz w4, #31, .L2653 -.L2657: + tbz w4, #31, .L2817 +.L2821: add x1, x19, :lo12:.LANCHOR2 cmp w3, w2 ldrh w0, [x1,-36] add w0, w0, 1 strh w0, [x1,-36] - blt .L2654 - add x20, x20, :lo12:.LANCHOR4 - ldrh w0, [x20,292] - cbz w0, .L2658 -.L2654: + blt .L2818 + add x21, x21, :lo12:.LANCHOR5 + ldrh w0, [x21,-214] + cbz w0, .L2822 +.L2818: add x1, x19, :lo12:.LANCHOR2 ldr x4, [x19,#:lo12:.LANCHOR2] ldrh w2, [x1,40] @@ -17589,20 +18240,20 @@ FtlSysBlkInit: ldrh w3, [x4,x2] sub w3, w3, w5 strh w3, [x4,x2] - add x3, x21, :lo12:.LANCHOR0 + add x4, x20, :lo12:.LANCHOR0 strb wzr, [x1,46] - ldrh w4, [x1,88] + ldrh w0, [x1,88] ldr x5, [x19,#:lo12:.LANCHOR2] - ldrh w2, [x3,2018] - lsl x4, x4, 1 + ldrh w2, [x4,2024] + lsl x0, x0, 1 strh w2, [x1,42] strh wzr, [x1,44] ldrh w6, [x1,92] - ldrh w0, [x5,x4] - sub w0, w0, w6 - strh w0, [x5,x4] + ldrh w3, [x5,x0] + sub w3, w3, w6 + strh w3, [x5,x0] strb wzr, [x1,94] - ldrh w0, [x3,2018] + ldrh w0, [x4,2024] strh w0, [x1,90] ldrh w0, [x1,-34] strh wzr, [x1,92] @@ -17611,33 +18262,37 @@ FtlSysBlkInit: bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L2658: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,-36] - and w0, w0, 31 - cbnz w0, .L2659 - bl FtlVpcCheckAndModify -.L2659: - add x19, x19, :lo12:.LANCHOR2 +.L2822: + add x21, x19, :lo12:.LANCHOR2 mov w1, 65535 - add x21, x19, 40 - ldrh w0, [x19,40] + add x24, x21, 40 + ldrh w0, [x21,40] cmp w0, w1 - beq .L2651 - ldrh w1, [x19,44] - cbnz w1, .L2651 - ldrh w1, [x19,92] - add x20, x19, 88 - cbnz w1, .L2651 + beq .L2823 + ldrh w1, [x21,44] + cbnz w1, .L2823 + ldrh w1, [x21,92] + add x23, x21, 88 + cbnz w1, .L2823 bl FtlGcRefreshOpenBlock - ldrh w0, [x19,88] + ldrh w0, [x21,88] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush - mov x0, x21 + mov x0, x24 bl allocate_new_data_superblock - mov x0, x20 + mov x0, x23 bl allocate_new_data_superblock -.L2651: +.L2823: + add x20, x20, :lo12:.LANCHOR0 + ldrb w0, [x20,72] + cbnz w0, .L2824 + add x19, x19, :lo12:.LANCHOR2 + ldrh w0, [x19,-36] + and w0, w0, 31 + cbnz w0, .L2815 +.L2824: + bl FtlVpcCheckAndModify +.L2815: mov w0, w22 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -17657,33 +18312,33 @@ FtlLowFormat: add x19, x21, :lo12:.LANCHOR2 stp x23, x24, [sp,48] ldr w22, [x19,-96] - cbnz w22, .L2667 + cbnz w22, .L2832 adrp x20, .LANCHOR0 ldr x0, [x19,2224] add x23, x20, :lo12:.LANCHOR0 mov w1, w22 - ldrh w2, [x23,2056] + ldrh w2, [x23,2060] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x23,2056] + ldrh w2, [x23,2060] mov w1, w22 ldr x0, [x19,2216] lsl w2, w2, 2 bl ftl_memset str w22, [x19,232] - ldrh w0, [x23,1952] + ldrh w0, [x23,1960] str w22, [x19,236] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L2668 + cbz w0, .L2833 bl FtlMakeBbt -.L2668: +.L2833: mov w0, 0 -.L2669: +.L2834: add x1, x20, :lo12:.LANCHOR0 - ldrh w2, [x1,2024] + ldrh w2, [x1,2030] cmp w0, w2, lsl 7 - bge .L2696 + bge .L2861 add x3, x21, :lo12:.LANCHOR2 ubfiz x2, x0, 2, 16 mvn w1, w0 @@ -17696,15 +18351,15 @@ FtlLowFormat: uxth w0, w0 ldr x3, [x3,2112] str w1, [x3,x2] - b .L2669 -.L2696: - ldrh w22, [x1,1956] + b .L2834 +.L2861: + ldrh w22, [x1,1964] mov w19, 0 -.L2671: +.L2836: add x23, x20, :lo12:.LANCHOR0 - ldrh w0, [x23,1958] + ldrh w0, [x23,1966] cmp w0, w22 - bls .L2697 + bls .L2862 mov w0, w22 mov w1, 1 add w22, w22, 1 @@ -17712,40 +18367,40 @@ FtlLowFormat: add w0, w19, w0 uxth w22, w22 uxth w19, w0 - b .L2671 -.L2697: - ldrh w0, [x23,1948] + b .L2836 +.L2862: + ldrh w0, [x23,1956] sub w1, w19, #3 cmp w1, w0, lsl 1 - bge .L2673 -.L2677: + bge .L2838 +.L2842: mov w19, 0 mov w22, w19 - b .L2674 -.L2673: + b .L2839 +.L2838: udiv w19, w19, w0 - ldr w0, [x23,2052] + ldr w0, [x23,2056] add w0, w19, w0 bl FtlSysBlkNumInit - ldrh w0, [x23,1952] + ldrh w0, [x23,1960] bl FtlFreeSysBlkQueueInit - ldrh w19, [x23,1956] -.L2675: + ldrh w19, [x23,1964] +.L2840: add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,1958] + ldrh w0, [x0,1966] cmp w0, w19 - bls .L2677 + bls .L2842 mov w0, w19 mov w1, 1 add w19, w19, 1 bl FtlLowFormatEraseBlock uxth w19, w19 - b .L2675 -.L2674: + b .L2840 +.L2839: add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,1956] + ldrh w1, [x0,1964] cmp w1, w22 - bls .L2698 + bls .L2863 mov w0, w22 mov w1, 0 add w22, w22, 1 @@ -17753,13 +18408,13 @@ FtlLowFormat: add w0, w19, w0 uxth w22, w22 uxth w19, w0 - b .L2674 -.L2698: + b .L2839 +.L2863: add x4, x21, :lo12:.LANCHOR2 - ldrh w1, [x0,1958] - ldrh w2, [x0,1948] + ldrh w1, [x0,1966] + ldrh w2, [x0,1956] str w1, [x4,2036] - ldr w1, [x0,1960] + ldr w1, [x0,1968] udiv w3, w1, w2 str w3, [x0,2096] ubfx x6, x3, 5, 16 @@ -17768,50 +18423,50 @@ FtlLowFormat: mov w5, 24 mul w5, w2, w5 cmp w19, w5 - ble .L2679 + ble .L2844 sub w1, w1, w19 udiv w1, w1, w2 str w1, [x0,2096] lsr w1, w1, 5 add w1, w1, 24 strh w1, [x4,260] -.L2679: +.L2844: add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,1940] + ldr w0, [x0,1948] cmp w0, 1 - bne .L2680 + bne .L2845 add x1, x21, :lo12:.LANCHOR2 udiv w0, w19, w2 ldrh w4, [x1,260] add w0, w4, w0 add w0, w4, w0, asr 2 strh w0, [x1,260] -.L2680: +.L2845: add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L2681 + ldrb w0, [x0,196] + cbz w0, .L2846 add x1, x21, :lo12:.LANCHOR2 udiv w0, w19, w2 ldrh w4, [x1,260] add w0, w4, w0 add w0, w4, w0, asr 2 strh w0, [x1,260] -.L2681: +.L2846: add x5, x20, :lo12:.LANCHOR0 - ldrh w1, [x5,2010] - cbz w1, .L2683 + ldrh w1, [x5,2018] + cbz w1, .L2848 add x0, x21, :lo12:.LANCHOR2 ldrh w4, [x0,260] add w4, w4, w1, lsr 1 strh w4, [x0,260] mul w4, w1, w2 cmp w4, w19 - ble .L2683 + ble .L2848 add w1, w1, 32 str w3, [x5,2096] add w1, w6, w1 strh w1, [x0,260] -.L2683: +.L2848: add x19, x21, :lo12:.LANCHOR2 add x22, x20, :lo12:.LANCHOR0 adrp x24, .LANCHOR4 @@ -17822,21 +18477,21 @@ FtlLowFormat: add x1, x24, :lo12:.LANCHOR4 mul w0, w0, w2 str w0, [x1,216] - ldrh w1, [x22,2018] - mul w0, w0, w1 ldrh w1, [x22,2024] + mul w0, w0, w1 + ldrh w1, [x22,2030] str w0, [x22,2096] mul w0, w0, w1 - str w0, [x22,2060] + str w0, [x22,2064] bl FtlBbmTblFlush - ldrh w2, [x22,1958] + ldrh w2, [x22,1966] mov w1, 0 ldr x0, [x21,#:lo12:.LANCHOR2] add x21, x19, 40 lsl w2, w2, 1 bl ftl_memset str wzr, [x19,196] - ldrh w2, [x22,1956] + ldrh w2, [x22,1964] mov w0, 1 strb w0, [x21,8] mov w1, 255 @@ -17851,19 +18506,19 @@ FtlLowFormat: strb wzr, [x21,6] strh wzr, [x19,40] bl ftl_memset -.L2685: +.L2850: mov x0, x21 bl make_superblock ldrb w0, [x21,7] - cbnz w0, .L2686 + cbnz w0, .L2851 ldrh w1, [x21] ldr x0, [x19] strh w23, [x0,x1,lsl 1] ldrh w0, [x21] add w0, w0, 1 strh w0, [x21] - b .L2685 -.L2686: + b .L2850 +.L2851: ldr w0, [x19,232] mov x20, x19 str w0, [x21,12] @@ -17881,19 +18536,19 @@ FtlLowFormat: strh w0, [x19,88] mov w0, 1 strb w0, [x20,8] -.L2687: +.L2852: mov x0, x20 bl make_superblock ldrb w0, [x20,7] - cbnz w0, .L2688 + cbnz w0, .L2853 ldrh w1, [x20] ldr x0, [x19] strh w21, [x0,x1,lsl 1] ldrh w0, [x20] add w0, w0, 1 strh w0, [x20] - b .L2687 -.L2688: + b .L2852 +.L2853: ldr w0, [x19,232] add x22, x22, :lo12:.LANCHOR4 str w0, [x20,12] @@ -17917,11 +18572,11 @@ FtlLowFormat: str w0, [x19,232] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L2667 + cbnz w0, .L2832 adrp x0, .LANCHOR1+504 mov w1, 1 str w1, [x0,#:lo12:.LANCHOR1+504] -.L2667: +.L2832: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -17938,25 +18593,25 @@ FtlReInitForSDUpdata: stp x19, x20, [sp,16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L2700 -.L2702: + ldrb w0, [x0,196] + cbz w0, .L2865 +.L2867: mov w0, 0 - b .L2701 -.L2700: + b .L2866 +.L2865: adrp x20, .LANCHOR4 add x0, x20, :lo12:.LANCHOR4 ldr x0, [x0,48] bl FlashInit - cbnz w0, .L2702 + cbnz w0, .L2867 bl FlashLoadFactorBbt - cbz w0, .L2703 + cbz w0, .L2868 bl FlashMakeFactorBbt -.L2703: +.L2868: add x20, x20, :lo12:.LANCHOR4 ldr x0, [x20,104] bl FlashReadIdbDataRaw - cbz w0, .L2704 + cbz w0, .L2869 mov w1, 0 mov w2, 16 add x0, x29, 32 @@ -17965,39 +18620,39 @@ FtlReInitForSDUpdata: ldr w2, [x29,32] mov w1, w0 mov w4, 1 -.L2706: +.L2871: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 cset w3, ne cmp w1, 16 add w0, w0, w3 - bne .L2706 + bne .L2871 cmp w0, 6 - bhi .L2707 + bhi .L2872 add x0, x19, :lo12:.LANCHOR0 - b .L2729 -.L2707: + b .L2894 +.L2872: mov w1, 0 mov w4, 1 -.L2710: +.L2875: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 cset w3, ne cmp w1, 24 add w0, w0, w3 - bne .L2710 + bne .L2875 cmp w0, 17 add x0, x19, :lo12:.LANCHOR0 - bls .L2729 + bls .L2894 mov w1, 36 -.L2729: - strb w1, [x0,9] +.L2894: + strb w1, [x0,73] add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,9] + ldrb w1, [x0,73] strh w1, [x0,194] -.L2704: +.L2869: adrp x0, .LC75 adrp x1, .LC76 add x1, x1, :lo12:.LC76 @@ -18007,28 +18662,28 @@ FtlReInitForSDUpdata: add x0, x19, 168 bl FtlConstantsInit bl FtlVariablesInit - ldrh w0, [x19,1952] + ldrh w0, [x19,1960] mov w19, 1 bl FtlFreeSysBlkQueueInit -.L2712: +.L2877: bl FtlLoadBbt - cbz w0, .L2713 -.L2731: + cbz w0, .L2878 +.L2896: bl FtlLowFormat cmp w19, 3 - bhi .L2732 + bhi .L2897 add w19, w19, 1 - b .L2712 -.L2732: + b .L2877 +.L2897: mov w0, -1 - b .L2701 -.L2713: + b .L2866 +.L2878: bl FtlSysBlkInit - cbnz w0, .L2731 + cbnz w0, .L2896 adrp x1, .LANCHOR1+504 mov w2, 1 str w2, [x1,#:lo12:.LANCHOR1+504] -.L2701: +.L2866: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret @@ -18044,19 +18699,19 @@ Ftl_gc_temp_data_write_back: add x0, x21, :lo12:.LANCHOR2 stp x19, x20, [sp,16] ldr w1, [x0,-96] - cbz w1, .L2734 -.L2737: + cbz w1, .L2899 +.L2902: mov w0, 0 - b .L2735 -.L2734: - adrp x1, .LANCHOR0+120 - ldrb w1, [x1,#:lo12:.LANCHOR0+120] - cbz w1, .L2736 + b .L2900 +.L2899: + adrp x1, .LANCHOR0+196 + ldrb w1, [x1,#:lo12:.LANCHOR0+196] + cbz w1, .L2901 ldr w1, [x0,864] - tbz x1, 0, .L2736 + tbz x1, 0, .L2901 ldrh w0, [x0,140] - cbnz w0, .L2737 -.L2736: + cbnz w0, .L2902 +.L2901: add x1, x21, :lo12:.LANCHOR2 mov w2, 0 mov w3, w2 @@ -18065,21 +18720,22 @@ Ftl_gc_temp_data_write_back: ldr x0, [x1,2056] ldr w1, [x1,864] bl FlashProgPages -.L2738: +.L2903: add x19, x21, :lo12:.LANCHOR2 ldr w1, [x19,864] cmp w20, w1 - bcs .L2748 + bcs .L2913 umull x0, w20, w22 - ldr x2, [x19,2056] - add x1, x2, x0 - ldr w2, [x2,x0] - cmn w2, #1 - bne .L2739 - ldrh w3, [x19,136] + ldr x3, [x19,2056] + add x1, x3, x0 + ldr w3, [x3,x0] + cmn w3, #1 + ldr x2, [x1,16] + bne .L2904 + ldrh w2, [x19,136] ldr x1, [x19] - strh wzr, [x1,x3,lsl 1] - strh w2, [x19,136] + strh wzr, [x1,x2,lsl 1] + strh w3, [x19,136] ldr w1, [x19,432] add w1, w1, 1 str w1, [x19,432] @@ -18090,27 +18746,26 @@ Ftl_gc_temp_data_write_back: bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L2747 -.L2739: - ldr x2, [x1,16] + b .L2912 +.L2904: + ldr w0, [x2,12] add w20, w20, 1 ldr w1, [x1,4] - uxth w20, w20 - ldr w0, [x2,12] ldr w2, [x2,8] + uxth w20, w20 bl FtlGcUpdatePage - b .L2738 -.L2748: + b .L2903 +.L2913: ldr x0, [x19,2056] bl FtlGcBufFree str wzr, [x19,864] ldrh w0, [x19,140] - cbnz w0, .L2737 + cbnz w0, .L2902 mov w0, 1 bl FtlGcFreeTempBlock -.L2747: +.L2912: mov w0, 1 -.L2735: +.L2900: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -18129,10 +18784,10 @@ Ftl_get_new_temp_ppa: ldrh w2, [x0,136] mov w0, 65535 cmp w2, w0 - beq .L2750 + beq .L2915 ldrh w0, [x1,4] - cbnz w0, .L2751 -.L2750: + cbnz w0, .L2916 +.L2915: bl FtlCacheWriteBack add x20, x19, :lo12:.LANCHOR2 mov w0, 0 @@ -18146,7 +18801,7 @@ Ftl_get_new_temp_ppa: mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2751: +.L2916: add x0, x19, :lo12:.LANCHOR2 add x0, x0, 136 bl get_new_active_ppa @@ -18169,300 +18824,305 @@ ftl_do_gc: stp x25, x26, [sp,64] stp x27, x28, [sp,80] ldr w4, [x3,-96] - cbnz w4, .L2897 - ldr w4, [x3,2024] - cbnz w4, .L2897 - ldrh w4, [x3,16] - cmp w4, 47 - bls .L2897 - mov w23, w0 - adrp x0, .LANCHOR1+3168 + cbnz w4, .L3070 + adrp x4, .LANCHOR1 + add x4, x4, :lo12:.LANCHOR1 + ldr w5, [x4,504] + cmn w5, #1 + beq .L3070 + ldr w5, [x3,2024] + cbnz w5, .L3070 + ldrh w5, [x3,16] + cmp w5, 47 + bls .L3070 mov w22, w1 - ldrh w1, [x0,#:lo12:.LANCHOR1+3168] + ldrh w1, [x4,3296] + str w0, [x29,124] mov w0, 65535 cmp w1, w0 - bne .L2754 -.L2757: + bne .L2919 +.L2922: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 ldrh w4, [x0,938] cmp w4, w2 - bne .L2755 - b .L2756 -.L2754: + bne .L2920 + b .L2921 +.L2919: ldrh w1, [x3,136] cmp w1, w0 - beq .L2757 + beq .L2922 mov w0, 1 bl FtlGcFreeTempBlock mov w2, 1 - cbz w0, .L2757 - b .L2897 -.L2755: + cbz w0, .L2922 + b .L3070 +.L2920: ldrh w1, [x0,936] cmp w1, w2 - bne .L2756 + bne .L2921 ldrh w3, [x0,940] cmp w3, w1 - beq .L2756 + beq .L2921 ldrh w2, [x0,942] cmp w2, w1 - beq .L2756 + beq .L2921 mov w1, -1 strh w4, [x0,936] strh w3, [x0,938] strh w2, [x0,940] strh w1, [x0,942] -.L2756: +.L2921: add x1, x19, :lo12:.LANCHOR2 - cmp w23, 1 + ldr w2, [x29,124] + cmp w2, 1 ldr w0, [x1,852] add w0, w0, 1 - add w0, w0, w23, lsl 7 + add w0, w0, w2, lsl 7 str w0, [x1,852] - bne .L2768 + bne .L2933 adrp x25, .LANCHOR0 add x1, x25, :lo12:.LANCHOR0 - ldr w2, [x1,1940] - cbnz w2, .L2759 - ldrb w1, [x1,120] - cbz w1, .L2768 -.L2759: + ldr w2, [x1,1948] + cbnz w2, .L2924 + ldrb w1, [x1,196] + cbz w1, .L2933 +.L2924: add x20, x19, :lo12:.LANCHOR2 ldr w1, [x20,256] cmp w1, 39 - bhi .L2768 - adrp x21, .LANCHOR4 - add x1, x21, :lo12:.LANCHOR4 - ldrh w1, [x1,432] + bhi .L2933 + adrp x21, .LANCHOR5 + add x1, x21, :lo12:.LANCHOR5 + ldrh w1, [x1,-80] add w0, w0, w1 str w0, [x20,852] bl FtlGcReFreshBadBlk ldrh w0, [x20,280] mov w1, 65535 cmp w0, w1 - bne .L2768 + bne .L2933 ldrh w1, [x20,936] cmp w1, w0 - bne .L2768 + bne .L2933 ldr w0, [x20,852] cmp w0, 1024 - bhi .L2760 + bhi .L2925 ldrh w0, [x20,32] cmp w0, 63 - bhi .L2768 -.L2760: + bhi .L2933 +.L2925: add x0, x19, :lo12:.LANCHOR2 - add x1, x21, :lo12:.LANCHOR4 + add x1, x21, :lo12:.LANCHOR5 ldrh w2, [x0,850] ldrh w3, [x0,32] add w2, w2, 64 - strh wzr, [x1,432] + strh wzr, [x1,-80] cmp w3, w2 - bgt .L2768 + bgt .L2933 str wzr, [x0,852] ldr w0, [x0,256] - cbnz w0, .L2761 + cbnz w0, .L2926 mov w0, 6 - b .L2919 -.L2761: + b .L3092 +.L2926: cmp w0, 5 - bhi .L2762 + bhi .L2927 mov w0, 18 -.L2919: - strh w0, [x1,432] -.L2762: +.L3092: + strh w0, [x1,-80] +.L2927: mov w0, 32 + mov w24, 65535 bl List_get_gc_head_node uxth w26, w0 - mov w3, 65535 - cmp w26, w3 - beq .L2767 - add x24, x19, :lo12:.LANCHOR2 + cmp w26, w24 + beq .L2932 + add x23, x19, :lo12:.LANCHOR2 adrp x27, .LANCHOR2 - ldrh w0, [x24,856] - cbz w0, .L2764 + ldrh w0, [x23,856] + cbz w0, .L2929 add x25, x25, :lo12:.LANCHOR0 ldr x28, [x27,#:lo12:.LANCHOR2] ubfiz x26, x26, 1, 16 - ldrh w1, [x25,2020] - ldrh w4, [x25,1948] + ldrh w1, [x25,2026] + ldrh w4, [x25,1956] ldrh w2, [x28,x26] mul w1, w1, w4 add w1, w1, 1 cmp w2, w1 - bgt .L2767 + bgt .L2932 add w1, w0, 1 - str x3, [x29,112] - str wzr, [x24,860] + str wzr, [x23,860] uxth w1, w1 - strh w1, [x24,856] - str x1, [x29,120] + strh w1, [x23,856] + str x1, [x29,112] bl List_get_gc_head_node uxth w20, w0 - ldr x3, [x29,112] - ldr x1, [x29,120] - cmp w20, w3 - beq .L2767 + cmp w20, w24 + ldr x1, [x29,112] + beq .L2932 ubfiz x25, x20, 1, 16 - adrp x0, .LC144 + adrp x0, .LC150 ldrh w4, [x28,x26] - add x0, x0, :lo12:.LC144 + add x0, x0, :lo12:.LC150 mov w2, w20 ldrh w3, [x28,x25] bl printk - ldrh w0, [x24,856] + ldrh w0, [x23,856] cmp w0, 40 - bls .L2765 + bls .L2930 ldr x0, [x27,#:lo12:.LANCHOR2] ldrh w0, [x0,x25] cmp w0, 32 - bls .L2765 - strh wzr, [x24,856] -.L2765: - add x21, x21, :lo12:.LANCHOR4 + bls .L2930 + strh wzr, [x23,856] +.L2930: + add x21, x21, :lo12:.LANCHOR5 mov w0, 6 - strh w0, [x21,432] - b .L2769 -.L2764: + strh w0, [x21,-80] + b .L2934 +.L2929: mov w0, 1 - strh w0, [x24,856] -.L2767: + strh w0, [x23,856] +.L2932: bl GetSwlReplaceBlock uxth w20, w0 mov w0, 65535 cmp w20, w0 - bne .L2769 - add x21, x21, :lo12:.LANCHOR4 - strh wzr, [x21,432] -.L2768: + bne .L2934 + add x21, x21, :lo12:.LANCHOR5 + strh wzr, [x21,-80] +.L2933: add x21, x19, :lo12:.LANCHOR2 mov w0, 65535 ldrh w20, [x21,280] cmp w20, w0 - bne .L2923 + bne .L3096 ldrh w0, [x21,136] cmp w0, w20 - beq .L2924 -.L2769: + beq .L3097 +.L2934: mov w0, 65535 cmp w20, w0 - add x0, x19, :lo12:.LANCHOR2 cset w2, eq - cbz w2, .L2782 - cbnz w23, .L2782 - ldrh w1, [x0,32] + cbz w2, .L2947 + ldr w0, [x29,124] + cbnz w0, .L2947 + add x0, x19, :lo12:.LANCHOR2 mov w21, 1 + ldrh w1, [x0,32] cmp w1, 24 - bhi .L2783 + bhi .L2948 adrp x0, .LANCHOR0 cmp w1, 16 add x0, x0, :lo12:.LANCHOR0 - ldrh w21, [x0,2018] - bls .L2784 + ldrh w21, [x0,2024] + bls .L2949 lsr w21, w21, 5 - b .L2783 -.L2784: + b .L2948 +.L2949: cmp w1, 12 - bls .L2785 + bls .L2950 lsr w21, w21, 4 - b .L2783 -.L2785: + b .L2948 +.L2950: cmp w1, 8 - bls .L2783 + bls .L2948 lsr w21, w21, 2 -.L2783: +.L2948: add x0, x19, :lo12:.LANCHOR2 ldrh w2, [x0,848] cmp w2, w1 - bcs .L2787 + bcs .L2952 ldrh w1, [x0,136] mov w2, 65535 cmp w1, w2 - bne .L2788 + bne .L2953 ldrh w2, [x0,936] cmp w2, w1 - bne .L2788 - adrp x1, .LANCHOR4+432 - ldrh w2, [x1,#:lo12:.LANCHOR4+432] - cbnz w2, .L2789 + bne .L2953 + adrp x1, .LANCHOR5-80 + ldrh w2, [x1,#:lo12:.LANCHOR5-80] + cbnz w2, .L2954 adrp x1, .LANCHOR0+2096 ldr w3, [x0,196] ldr w1, [x1,#:lo12:.LANCHOR0+2096] add w1, w1, w1, lsl 1 cmp w3, w1, lsr 2 - bcs .L2790 -.L2789: + bcs .L2955 +.L2954: add x1, x19, :lo12:.LANCHOR2 ldrh w0, [x1,260] add w0, w0, w0, lsl 1 asr w0, w0, 2 strh w0, [x1,848] - b .L2791 -.L2790: + b .L2956 +.L2955: mov w1, 18 strh w1, [x0,848] -.L2791: +.L2956: add x19, x19, :lo12:.LANCHOR2 str wzr, [x19,860] - b .L2897 -.L2788: + b .L3070 +.L2953: add x1, x19, :lo12:.LANCHOR2 ldrh w0, [x1,260] add w0, w0, w0, lsl 1 asr w0, w0, 2 strh w0, [x1,848] -.L2787: +.L2952: cmp w22, 2 - bhi .L2852 - adrp x0, .LANCHOR0+1940 - ldr w0, [x0,#:lo12:.LANCHOR0+1940] - cbz w0, .L2852 + bhi .L3024 + adrp x0, .LANCHOR0+1948 + ldr w0, [x0,#:lo12:.LANCHOR0+1948] + cbz w0, .L3024 add w21, w21, 1 uxth w21, w21 - b .L2852 -.L2782: - ldrh w1, [x0,136] + b .L3024 +.L2947: + add x0, x19, :lo12:.LANCHOR2 mov w3, 65535 + ldrh w1, [x0,136] cmp w1, w3 - bne .L2794 - cbz w2, .L2794 + bne .L2959 + cbz w2, .L2959 ldrh w2, [x0,936] cmp w2, w1 - bne .L2794 + bne .L2959 ldrh w2, [x0,280] cmp w2, w1 - beq .L2795 -.L2800: + beq .L2960 +.L2965: mov w20, 65535 - b .L2794 -.L2795: + b .L2959 +.L2960: ldrh w2, [x0,32] - adrp x20, .LANCHOR4 + adrp x20, .LANCHOR5 ldrh w1, [x0,848] str wzr, [x0,860] cmp w2, w1 - bls .L2796 - add x1, x20, :lo12:.LANCHOR4 - ldrh w1, [x1,432] - cbnz w1, .L2797 + bls .L2961 + add x1, x20, :lo12:.LANCHOR5 + ldrh w1, [x1,-80] + cbnz w1, .L2962 adrp x1, .LANCHOR0+2096 ldr w2, [x0,196] ldr w1, [x1,#:lo12:.LANCHOR0+2096] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bcs .L2798 -.L2797: + bcs .L2963 +.L2962: add x1, x19, :lo12:.LANCHOR2 ldrh w0, [x1,260] add w0, w0, w0, lsl 1 asr w0, w0, 2 strh w0, [x1,848] - b .L2799 -.L2798: + b .L2964 +.L2963: mov w1, 18 strh w1, [x0,848] -.L2799: +.L2964: bl FtlReadRefresh mov w0, 0 bl List_get_gc_head_node @@ -18470,14 +19130,14 @@ ftl_do_gc: ldr x1, [x19,#:lo12:.LANCHOR2] ldrh w0, [x1,x0] cmp w0, 4 - bls .L2796 - add x20, x20, :lo12:.LANCHOR4 - ldrh w2, [x20,432] - b .L2897 -.L2796: - add x21, x20, :lo12:.LANCHOR4 - ldrh w0, [x21,432] - cbnz w0, .L2800 + bls .L2961 + add x20, x20, :lo12:.LANCHOR5 + ldrh w2, [x20,-80] + b .L3070 +.L2961: + add x21, x20, :lo12:.LANCHOR5 + ldrh w0, [x21,-80] + cbnz w0, .L2965 add x22, x19, :lo12:.LANCHOR2 ldrh w20, [x22,260] add w1, w20, w20, lsl 1 @@ -18489,329 +19149,314 @@ ftl_do_gc: ldrh w2, [x1,x0] adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrh w0, [x1,2020] - ldrh w1, [x1,1948] + ldrh w0, [x1,2026] + ldrh w1, [x1,1956] mul w0, w0, w1 mov w1, 2 sdiv w0, w0, w1 cmp w2, w0 - ble .L2801 + ble .L2966 ldrh w0, [x22,32] sub w20, w20, #1 cmp w0, w20 - blt .L2801 + blt .L2966 bl FtlReadRefresh - ldrh w2, [x21,432] - b .L2897 -.L2801: - cbnz w2, .L2800 + b .L3095 +.L2966: + cbnz w2, .L2965 mov w0, -1 add x19, x19, :lo12:.LANCHOR2 bl decrement_vpc_count ldrh w2, [x19,32] add w2, w2, 1 - b .L2897 -.L2794: - adrp x0, .LANCHOR0+1940 + b .L3070 +.L2959: + adrp x0, .LANCHOR0+1948 mov w21, 2 - ldr w0, [x0,#:lo12:.LANCHOR0+1940] + ldr w0, [x0,#:lo12:.LANCHOR0+1948] cmp w0, wzr csinc w21, w21, wzr, ne - b .L2793 -.L2852: + b .L2958 +.L3024: mov w20, 65535 -.L2793: +.L2958: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 ldrh w1, [x0,280] cmp w1, w2 - bne .L2803 + bne .L2968 cmp w20, w1 - beq .L2804 + beq .L2969 strh w20, [x0,280] - b .L2805 -.L2804: + b .L2970 +.L2969: ldrh w1, [x0,936] cmp w1, w20 - beq .L2805 + beq .L2970 adrp x2, .LANCHOR2 ubfiz x1, x1, 1, 16 ldr x2, [x2,#:lo12:.LANCHOR2] ldrh w1, [x2,x1] - cbnz w1, .L2806 + cbnz w1, .L2971 mov w1, -1 strh w1, [x0,936] -.L2806: +.L2971: add x0, x19, :lo12:.LANCHOR2 ldrh w1, [x0,936] strh w1, [x0,280] mov w1, -1 strh w1, [x0,936] -.L2805: +.L2970: add x22, x19, :lo12:.LANCHOR2 mov w1, 65535 ldrh w0, [x22,280] strb wzr, [x22,288] cmp w0, w1 - beq .L2803 + beq .L2968 bl IsBlkInGcList - cbz w0, .L2808 + cbz w0, .L2973 mov w0, -1 strh w0, [x22,280] -.L2808: - adrp x0, .LANCHOR0+120 - ldrb w0, [x0,#:lo12:.LANCHOR0+120] - cbz w0, .L2809 +.L2973: + adrp x0, .LANCHOR0+196 + ldrb w0, [x0,#:lo12:.LANCHOR0+196] + cbz w0, .L2974 add x0, x19, :lo12:.LANCHOR2 add x22, x0, 280 ldrh w0, [x0,280] bl ftl_get_blk_mode strb w0, [x22,8] -.L2809: +.L2974: add x22, x19, :lo12:.LANCHOR2 mov w0, 65535 - add x24, x22, 280 + add x23, x22, 280 ldrh w1, [x22,280] cmp w1, w0 - beq .L2803 - mov x0, x24 + beq .L2968 + mov x0, x23 bl make_superblock strh wzr, [x22,282] - adrp x0, .LANCHOR4 + adrp x0, .LANCHOR5 adrp x1, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR4 + add x0, x0, :lo12:.LANCHOR5 ldrh w2, [x22,280] strb wzr, [x22,286] ldr x1, [x1,#:lo12:.LANCHOR2] - strh wzr, [x0,434] + strh wzr, [x0,-78] ldrh w1, [x1,x2,lsl 1] - strh w1, [x0,436] -.L2803: - add x6, x19, :lo12:.LANCHOR2 - ldrh w0, [x6,280] - ldrh w1, [x6,40] - cmp w1, w0 - beq .L2810 - ldrh w1, [x6,88] - cmp w1, w0 - beq .L2810 -.L2811: - adrp x0, .LC146 - mov x28, x6 - add x0, x0, :lo12:.LC146 - mov w24, 65535 - str x0, [x29,120] - b .L2812 -.L2810: - add x19, x19, :lo12:.LANCHOR2 - mov w0, -1 - strh w0, [x19,280] - b .L2922 -.L2833: - ldrh w0, [x28,282] - add w21, w21, w0 - uxth w21, w21 - strh w21, [x28,282] - cmp w21, w25 - bcs .L2925 -.L2835: - ldrh w0, [x28,32] - cmp w0, 2 - bhi .L2838 - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrh w21, [x0,2018] -.L2812: - ldrh w0, [x28,280] - cmp w0, w24 - bne .L2813 - str wzr, [x28,860] - mov w25, 2 -.L2814: - ldrh w22, [x28,856] + strh w1, [x0,-76] +.L2968: + add x0, x19, :lo12:.LANCHOR2 + ldrh w1, [x0,280] + ldrh w2, [x0,40] + cmp w2, w1 + beq .L2975 + ldrh w2, [x0,88] + cmp w2, w1 + beq .L2975 + ldrh w0, [x0,136] + cmp w0, w1 + bne .L2976 +.L2975: + add x0, x19, :lo12:.LANCHOR2 + mov w1, -1 + strh w1, [x0,280] +.L2976: + add x24, x19, :lo12:.LANCHOR2 + mov w25, 65535 +.L3009: + ldrh w0, [x24,280] + cmp w0, w25 + bne .L2977 + str wzr, [x24,860] +.L2978: + ldrh w22, [x24,856] mov w0, w22 bl List_get_gc_head_node - uxth w26, w0 - cmp w26, w24 - strh w26, [x28,280] - bne .L2815 - strh wzr, [x28,856] + uxth w23, w0 + cmp w23, w25 + strh w23, [x24,280] + bne .L2979 + strh wzr, [x24,856] mov w2, 8 - b .L2897 -.L2815: - mov w0, w26 + b .L3070 +.L2979: + mov w0, w23 add w22, w22, 1 bl IsBlkInGcList - cbz w0, .L2816 - strh w22, [x28,856] - b .L2814 -.L2816: + cbz w0, .L2980 + strh w22, [x24,856] + b .L2978 +.L2980: adrp x0, .LANCHOR0 - ubfiz x1, x26, 1, 16 - add x4, x0, :lo12:.LANCHOR0 - ldr x2, [x28] + ubfiz x1, x23, 1, 16 + add x5, x0, :lo12:.LANCHOR0 + ldr x2, [x24] uxth w22, w22 - strh w22, [x28,856] - ldrh w0, [x4,2018] - ldrh w4, [x4,1948] - ldrh w3, [x2,x1] - mul w0, w0, w4 - sdiv w4, w0, w25 - cmp w3, w4 - bgt .L2818 - cmp w3, 8 - bls .L2819 + mov w3, 2 + strh w22, [x24,856] + ldrh w0, [x5,2024] + ldrh w5, [x5,1956] + ldrh w4, [x2,x1] + mul w0, w0, w5 + sdiv w5, w0, w3 + cmp w4, w5 + bgt .L2982 + cmp w4, 8 + bls .L2983 cmp w22, 48 - bls .L2819 - ldrh w3, [x28,908] - cmp w3, 35 - bhi .L2819 -.L2818: - strh wzr, [x28,856] -.L2819: + bls .L2983 + ldrh w4, [x24,908] + cmp w4, 35 + bhi .L2983 +.L2982: + strh wzr, [x24,856] +.L2983: + cmp w20, w25 ldrh w1, [x2,x1] + bne .L2984 cmp w1, w0 - blt .L2820 - cmp w20, w24 - bne .L2820 - add x19, x19, :lo12:.LANCHOR2 + blt .L2984 + ldrh w0, [x24,856] + cmp w0, 3 + bhi .L2984 mov w0, -1 - strh wzr, [x19,856] - strh w0, [x19,280] -.L2922: - adrp x0, .LANCHOR4+432 - ldrh w2, [x0,#:lo12:.LANCHOR4+432] - b .L2897 -.L2820: - cbnz w1, .L2821 + strh w0, [x24,280] + adrp x0, .LANCHOR5-80 + strh wzr, [x24,856] + ldrh w2, [x0,#:lo12:.LANCHOR5-80] + b .L3070 +.L2984: + cbnz w1, .L2985 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x28,856] + ldrh w0, [x24,856] add w0, w0, 1 - strh w0, [x28,856] - b .L2814 -.L2821: + strh w0, [x24,856] + b .L2978 +.L2985: adrp x0, .LANCHOR0 - strb wzr, [x28,288] + strb wzr, [x24,288] add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbz w0, .L2822 - mov w0, w26 + ldrb w0, [x0,196] + cbz w0, .L2986 + mov w0, w23 bl ftl_get_blk_mode - strb w0, [x28,288] -.L2822: - add x22, x28, 280 + strb w0, [x24,288] +.L2986: + add x22, x24, 280 mov x0, x22 bl make_superblock - adrp x1, .LANCHOR4 - ldrh w2, [x28,280] - add x1, x1, :lo12:.LANCHOR4 - ldr x0, [x28] - strh wzr, [x1,434] + adrp x1, .LANCHOR5 + ldrh w2, [x24,280] + add x1, x1, :lo12:.LANCHOR5 + ldr x0, [x24] + strh wzr, [x1,-78] ldrh w0, [x0,x2,lsl 1] - strh w0, [x1,436] - strh wzr, [x28,282] - strb wzr, [x28,286] -.L2813: - cmp w23, 1 - bne .L2823 + strh w0, [x1,-76] + strh wzr, [x24,282] + strb wzr, [x24,286] +.L2977: + ldr w0, [x29,124] + cmp w0, 1 + bne .L2987 bl FtlReadRefresh -.L2823: +.L2987: mov w0, 1 - str w0, [x28,2024] + str w0, [x24,2024] adrp x0, .LANCHOR0 + adrp x22, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,120] - ldrh w25, [x0,2018] - cbz w1, .L2824 - ldrb w1, [x28,288] + ldrb w1, [x0,196] + ldrh w26, [x0,2024] + cbz w1, .L2988 + ldrb w1, [x24,288] cmp w1, 1 - bne .L2824 - ldrh w25, [x0,2020] -.L2824: - ldrh w0, [x28,282] + bne .L2988 + ldrh w26, [x0,2026] +.L2988: + ldrh w0, [x24,282] add w1, w0, w21 - cmp w1, w25 - ble .L2825 - sub w21, w25, w0 + cmp w1, w26 + ble .L2989 + sub w21, w26, w0 uxth w21, w21 -.L2825: - mov w26, 0 -.L2826: - cmp w21, w26, uxth - bls .L2833 - adrp x0, .LANCHOR0 - add x1, x28, 280 - add x0, x0, :lo12:.LANCHOR0 - ldrh w3, [x1,2] - add w3, w3, w26 - ldrh w5, [x0,1948] +.L2989: + mov w27, 0 +.L2990: + cmp w21, w27, uxth + bls .L2997 + add x1, x24, 280 + add x0, x22, :lo12:.LANCHOR0 + ldrh w4, [x1,2] + ldrh w6, [x0,1956] mov x0, 0 - mov w22, w0 -.L2834: - cmp w5, w0, uxth - bls .L2926 + add w4, w4, w27 + mov w23, w0 +.L2998: + cmp w6, w0, uxth + bls .L3098 add x2, x1, x0, lsl 1 ldrh w2, [x2,16] - cmp w2, w24 - beq .L2827 - mov w4, 56 - ldr x7, [x28,896] - orr w2, w3, w2, lsl 10 - umull x4, w22, w4 - add w22, w22, 1 - add x4, x7, x4 - uxth w22, w22 - str w2, [x4,4] -.L2827: + cmp w2, w25 + beq .L2991 + mov w3, 56 + ldr x7, [x24,896] + orr w2, w4, w2, lsl 10 + umull x5, w23, w3 + add w23, w23, 1 + add x5, x7, x5 + uxth w23, w23 + str w2, [x5,4] +.L2991: add x0, x0, 1 - b .L2834 -.L2926: - ldr x0, [x28,896] - mov w1, w22 - ldrb w2, [x28,288] - mov x27, 0 + b .L2998 +.L3098: + ldr x0, [x24,896] + mov w1, w23 + ldrb w2, [x24,288] + mov x28, 0 bl FlashReadPages -.L2829: - cmp w22, w27, uxth - bls .L2927 +.L2993: + cmp w23, w28, uxth + bls .L3099 mov x0, 56 - mul x4, x27, x0 - ldr x0, [x28,896] - add x1, x0, x4 - ldr w0, [x0,x4] + mul x5, x28, x0 + ldr x0, [x24,896] + add x1, x0, x5 + ldr w0, [x0,x5] cmn w0, #1 - ldr x3, [x1,16] - beq .L2854 - ldrh w0, [x3] + ldr x4, [x1,16] + beq .L3027 + ldrh w0, [x4] mov w1, 61589 cmp w0, w1 - bne .L2854 - ldr w0, [x3,8] - add x1, x29, 140 + bne .L3027 + ldr w0, [x4,8] + add x1, x29, 136 mov w2, 0 - str x4, [x29,104] - str x3, [x29,112] + str x5, [x29,104] + str x4, [x29,112] bl log2phys - ldr x2, [x28,896] - ldr x4, [x29,104] - ldr w0, [x29,140] - add x2, x2, x4 - ldr x3, [x29,112] + ldr x2, [x24,896] + ldr x5, [x29,104] + ldr w0, [x29,136] + add x2, x2, x5 + ldr x4, [x29,112] and w0, w0, 2147483647 ldr w1, [x2,4] cmp w0, w1 - bne .L2854 - adrp x0, .LANCHOR4 - str x3, [x29,104] - add x1, x0, :lo12:.LANCHOR4 + bne .L3027 + adrp x0, .LANCHOR5 mov x3, 56 - str x4, [x29,96] - ldrh w0, [x1,434] + add x1, x0, :lo12:.LANCHOR5 + str x5, [x29,96] + str x4, [x29,104] + ldrh w0, [x1,-78] add w0, w0, 1 - strh w0, [x1,434] - ldr w0, [x28,864] - ldr x1, [x28,2056] + strh w0, [x1,-78] + ldr w0, [x24,864] + ldr x1, [x24,2056] madd x1, x0, x3, x1 ldr w0, [x2,24] str x1, [x29,112] @@ -18819,106 +19464,141 @@ ftl_do_gc: bl Ftl_get_new_temp_ppa ldr x1, [x29,112] mov x2, 56 - ldr x4, [x29,96] - ldr x3, [x29,104] + ldr x5, [x29,96] + ldr x4, [x29,104] str w0, [x1,4] - ldr w0, [x28,864] - ldr x1, [x28,2056] + ldr w0, [x24,864] + ldr x1, [x24,2056] madd x0, x0, x2, x1 - ldr x1, [x28,896] - add x1, x1, x4 + ldr x1, [x24,896] + add x1, x1, x5 ldr x2, [x1,8] str x2, [x0,8] - add x2, x28, 136 + add x2, x24, 136 str x2, [x29,112] ldr x1, [x1,16] str x1, [x0,16] mov w1, 1 - ldr w0, [x29,140] - str w0, [x3,12] - ldrh w0, [x28,136] - strh w0, [x3,2] - ldr w0, [x28,236] - str w0, [x3,4] - ldr w0, [x28,864] + ldr w0, [x29,136] + str w0, [x4,12] + ldrh w0, [x24,136] + strh w0, [x4,2] + ldr w0, [x24,236] + str w0, [x4,4] + ldr w0, [x24,864] add w0, w0, 1 - str w0, [x28,864] - ldr x0, [x28,896] - add x0, x0, x4 + str w0, [x24,864] + ldr x0, [x24,896] + add x0, x0, x5 bl FtlGcBufAlloc - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,120] - cbnz w0, .L2831 + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0,196] + cbnz w0, .L2995 ldr x2, [x29,112] - ldr w1, [x28,864] + ldr w1, [x24,864] ldrb w0, [x2,7] cmp w1, w0 - beq .L2831 + beq .L2995 ldrh w0, [x2,4] - cbnz w0, .L2854 -.L2831: + cbnz w0, .L3027 +.L2995: bl Ftl_gc_temp_data_write_back - cbz w0, .L2854 - adrp x0, .LANCHOR4 + cbz w0, .L3027 add x19, x19, :lo12:.LANCHOR2 - add x0, x0, :lo12:.LANCHOR4 + mov w0, -1 + strh w0, [x19,280] + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 str wzr, [x19,2024] - ldrh w2, [x0,432] - b .L2897 -.L2854: - add x27, x27, 1 - b .L2829 -.L2927: - add w26, w26, 1 - b .L2826 -.L2925: - ldr w0, [x28,864] - adrp x21, .LANCHOR4 - cbz w0, .L2836 + strh wzr, [x19,282] + ldrh w2, [x0,-80] + b .L3070 +.L3027: + add x28, x28, 1 + b .L2993 +.L3099: + add w27, w27, 1 + b .L2990 +.L2997: + ldrh w0, [x24,282] + add w21, w21, w0 + uxth w21, w21 + strh w21, [x24,282] + cmp w21, w26 + bcc .L2999 + ldr w0, [x24,864] + adrp x21, .LANCHOR5 + cbz w0, .L3000 bl Ftl_gc_temp_data_write_back - cbz w0, .L2836 - add x5, x21, :lo12:.LANCHOR4 - str wzr, [x28,2024] - ldrh w2, [x5,432] - b .L2897 -.L2836: - add x5, x21, :lo12:.LANCHOR4 - ldrh w21, [x5,434] - cbnz w21, .L2837 - ldrh w1, [x28,280] - ldr x3, [x28] - ubfiz x0, x1, 1, 16 - ldrh w4, [x3,x0] - cbz w4, .L2837 - ldrh w2, [x28,282] - mov w3, w21 - ldrh w5, [x5,436] - ldr x0, [x29,120] - bl printk - ldrh w1, [x28,280] - ldr x0, [x28] - strh w21, [x0,x1,lsl 1] - ldrh w0, [x28,280] + cbz w0, .L3000 + str wzr, [x24,2024] + add x21, x21, :lo12:.LANCHOR5 +.L3095: + ldrh w2, [x21,-80] + b .L3070 +.L3000: + add x21, x21, :lo12:.LANCHOR5 + ldrh w21, [x21,-78] + cbnz w21, .L3001 + ldrh w1, [x24,280] + ldr x0, [x24] + ldrh w0, [x0,x1,lsl 1] + cbz w0, .L3001 +.L3002: + add x0, x22, :lo12:.LANCHOR0 + ldr w0, [x0,2096] + cmp w21, w0 + bcs .L3007 + mov w0, w21 + add x1, x29, 140 + mov w2, 0 + bl log2phys + ldr w0, [x29,140] + cmn w0, #1 + beq .L3003 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldrh w1, [x24,280] + cmp w1, w0, uxth + bne .L3003 +.L3007: + add x0, x22, :lo12:.LANCHOR0 + ldr w0, [x0,2096] + cmp w21, w0 + bcc .L3001 + ldrh w1, [x24,280] + ldr x0, [x24] + strh wzr, [x0,x1,lsl 1] + ldrh w0, [x24,280] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush -.L2837: + b .L3001 +.L3003: + add w21, w21, 1 + b .L3002 +.L3001: mov w0, -1 - strh w0, [x28,280] - b .L2835 -.L2838: - adrp x1, .LANCHOR4+432 - str wzr, [x28,2024] - ldrh w2, [x1,#:lo12:.LANCHOR4+432] + strh w0, [x24,280] +.L2999: + ldrh w0, [x24,32] + cmp w0, 2 + bhi .L3008 + add x22, x22, :lo12:.LANCHOR0 + ldrh w21, [x22,2024] + b .L3009 +.L3008: + adrp x1, .LANCHOR5-80 + str wzr, [x24,2024] + ldrh w2, [x1,#:lo12:.LANCHOR5-80] cmp w2, wzr csinc w2, w2, w0, ne - b .L2897 -.L2924: - ldrh w24, [x21,936] - cmp w24, w20 - bne .L2769 + b .L3070 +.L3097: + ldrh w23, [x21,936] + cmp w23, w20 + bne .L2934 ldrh w0, [x21,32] mov w2, 1024 ldr w1, [x21,852] @@ -18926,44 +19606,44 @@ ftl_do_gc: mov w0, 5120 csel w0, w0, w2, cc cmp w1, w0 - bls .L2769 - adrp x0, .LANCHOR4+432 + bls .L2934 + adrp x0, .LANCHOR5-80 str wzr, [x21,852] - strh wzr, [x0,#:lo12:.LANCHOR4+432] + strh wzr, [x0,#:lo12:.LANCHOR5-80] bl GetSwlReplaceBlock uxth w20, w0 - cmp w20, w24 - bne .L2771 + cmp w20, w23 + bne .L2936 ldrh w1, [x21,32] ldrh w0, [x21,850] cmp w1, w0 - bcs .L2772 + bcs .L2937 mov w0, 64 bl List_get_gc_head_node uxth w0, w0 cmp w0, w20 - beq .L2781 + beq .L2946 ldr w2, [x21,2020] - adrp x24, .LANCHOR0 + adrp x23, .LANCHOR0 uxtw x1, w0 - cbnz w2, .L2774 - add x0, x24, :lo12:.LANCHOR0 - ldrh w2, [x0,1968] + cbnz w2, .L2939 + add x0, x23, :lo12:.LANCHOR0 + ldrh w2, [x0,1976] cmp w2, 3 - beq .L2774 + beq .L2939 ldr w2, [x21,328] - cbnz w2, .L2774 - ldr w2, [x0,1940] - cbnz w2, .L2774 - ldrb w0, [x0,120] - cbz w0, .L2775 -.L2774: - add x3, x24, :lo12:.LANCHOR0 + cbnz w2, .L2939 + ldr w2, [x0,1948] + cbnz w2, .L2939 + ldrb w0, [x0,196] + cbz w0, .L2940 +.L2939: + add x3, x23, :lo12:.LANCHOR0 ldr x0, [x19,#:lo12:.LANCHOR2] ldrh w4, [x0,x1,lsl 1] - ldrh w1, [x3,2020] - ldrh w0, [x3,1948] - ldrh w3, [x3,1968] + ldrh w1, [x3,2026] + ldrh w0, [x3,1956] + ldrh w3, [x3,1976] mul w2, w1, w0 cmp w3, 3 mov w0, 0 @@ -18971,60 +19651,60 @@ ftl_do_gc: csel w0, w1, w0, eq add w0, w2, w0 cmp w4, w0 - bgt .L2777 + bgt .L2942 mov w0, 0 - add x24, x24, :lo12:.LANCHOR0 + add x23, x23, :lo12:.LANCHOR0 bl List_get_gc_head_node uxth w20, w0 add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x24,2096] + ldr w0, [x23,2096] ldr w2, [x1,196] add w0, w0, w0, lsl 1 cmp w2, w0, lsr 2 - bls .L2778 + bls .L2943 mov w0, 128 - b .L2920 -.L2778: + b .L3093 +.L2943: mov w0, 160 -.L2920: +.L3093: strh w0, [x1,850] - b .L2779 -.L2777: + b .L2944 +.L2942: add x0, x19, :lo12:.LANCHOR2 mov w1, 128 - b .L2921 -.L2775: + b .L3094 +.L2940: adrp x2, .LANCHOR2 ldr x2, [x2,#:lo12:.LANCHOR2] ldrh w1, [x2,x1,lsl 1] cmp w1, 7 - bhi .L2780 + bhi .L2945 bl List_get_gc_head_node uxth w20, w0 add x0, x19, :lo12:.LANCHOR2 mov w1, 128 strh w1, [x0,850] - b .L2779 -.L2780: + b .L2944 +.L2945: add x0, x19, :lo12:.LANCHOR2 mov w1, 64 -.L2921: +.L3094: strh w1, [x0,850] - b .L2781 -.L2772: + b .L2946 +.L2937: mov w0, 80 strh w0, [x21,850] - b .L2781 -.L2779: + b .L2946 +.L2944: mov w0, 65535 cmp w20, w0 - beq .L2781 -.L2771: + beq .L2946 +.L2936: add x5, x19, :lo12:.LANCHOR2 ubfiz x4, x20, 1, 32 ldr x3, [x19,#:lo12:.LANCHOR2] - adrp x0, .LC145 - add x0, x0, :lo12:.LC145 + adrp x0, .LC151 + add x0, x0, :lo12:.LC151 mov w1, w20 ldr x6, [x5,-80] ldrh w2, [x5,32] @@ -19032,13 +19712,13 @@ ftl_do_gc: ldrh w5, [x5,848] ldrh w4, [x6,x4] bl printk -.L2781: +.L2946: bl FtlGcReFreshBadBlk - b .L2769 -.L2923: + b .L2934 +.L3096: mov w20, w0 - b .L2769 -.L2897: + b .L2934 +.L3070: mov w0, w2 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -19053,52 +19733,52 @@ ftl_do_gc: .type FtlCacheWriteBack, %function FtlCacheWriteBack: stp x29, x30, [sp, -128]! - adrp x0, .LANCHOR4+440 + adrp x0, .LANCHOR5-72 add x29, sp, 0 stp x21, x22, [sp,32] adrp x22, .LANCHOR2 stp x19, x20, [sp,16] - ldr x20, [x0,#:lo12:.LANCHOR4+440] + ldr x20, [x0,#:lo12:.LANCHOR5-72] add x0, x22, :lo12:.LANCHOR2 stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] ldr w23, [x0,-96] - cbnz w23, .L2930 + cbnz w23, .L3102 adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 ldr w1, [x0,2080] - cbz w1, .L2930 - ldrb w0, [x0,120] - cbz w0, .L2932 + cbz w1, .L3102 + ldrb w0, [x0,196] + cbz w0, .L3104 ldrb w0, [x20,8] cmp w0, 1 cset w23, eq -.L2932: +.L3104: add x0, x19, :lo12:.LANCHOR0 ldrb w3, [x20,9] - adrp x26, .LC147 + adrp x26, .LC152 mov w2, w23 mov w24, 0 mov w27, 56 ldr x0, [x0,2088] - add x26, x26, :lo12:.LC147 + add x26, x26, :lo12:.LC152 bl FlashProgPages -.L2933: +.L3105: add x0, x19, :lo12:.LANCHOR0 ldr w1, [x0,2080] cmp w24, w1 - bcs .L2951 + bcs .L3123 umull x21, w24, w27 ldr x1, [x0,2088] add x0, x1, x21 ldr w25, [x1,x21] cmn w25, #1 - beq .L2954 + beq .L3126 ldr w1, [x0,4] - cbz w23, .L2968 + cbz w23, .L3140 orr w1, w1, -2147483648 -.L2968: +.L3140: ldr w0, [x0,24] mov w2, 1 str w1, [x29,124] @@ -19110,7 +19790,7 @@ FtlCacheWriteBack: ldr x0, [x21,16] ldr w0, [x0,12] cmn w0, #1 - beq .L2937 + beq .L3109 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 @@ -19118,53 +19798,53 @@ FtlCacheWriteBack: ldr x2, [x22,#:lo12:.LANCHOR2] mov w21, w1 ldrh w2, [x2,x0] - cbnz w2, .L2938 + cbnz w2, .L3110 mov x0, x26 bl printk -.L2938: +.L3110: mov w0, w21 bl decrement_vpc_count -.L2937: +.L3109: add w24, w24, 1 - b .L2933 -.L2970: + b .L3105 +.L3142: mov w20, 16386 -.L2950: +.L3122: add x0, x22, :lo12:.LANCHOR2 ldrh w0, [x0,944] - cbz w0, .L2951 + cbz w0, .L3123 mov w0, 1 mov w1, w0 bl ftl_do_gc subs w20, w20, #1 - bne .L2950 -.L2951: + bne .L3122 +.L3123: add x19, x19, :lo12:.LANCHOR0 str wzr, [x19,2080] - b .L2930 -.L2954: - adrp x26, .LC147 + b .L3102 +.L3126: + adrp x26, .LC152 mov w24, 0 mov w27, 56 str w25, [x29,108] mov w28, 1 - add x26, x26, :lo12:.LC147 -.L2934: + add x26, x26, :lo12:.LC152 +.L3106: add x0, x19, :lo12:.LANCHOR0 ldr w1, [x0,2080] cmp w24, w1 - bcs .L2970 + bcs .L3142 umull x21, w24, w27 ldr x0, [x0,2088] ldr w1, [x29,108] str w1, [x0,x21] -.L2940: +.L3112: add x2, x19, :lo12:.LANCHOR0 ldr x0, [x2,2088] add x1, x0, x21 ldr w0, [x0,x21] cmn w0, #1 - bne .L2971 + bne .L3143 ldr w0, [x1,4] str x2, [x29,96] lsr x0, x0, 10 @@ -19172,7 +19852,7 @@ FtlCacheWriteBack: ldrh w1, [x20] cmp w1, w0, uxth ldr x2, [x29,96] - bne .L2941 + bne .L3113 ldr x3, [x22,#:lo12:.LANCHOR2] ubfiz x1, x1, 1, 16 ldrh w4, [x20,4] @@ -19180,15 +19860,15 @@ FtlCacheWriteBack: sub w0, w0, w4 strh w0, [x3,x1] strb wzr, [x20,6] - ldrh w0, [x2,2018] + ldrh w0, [x2,2024] strh w0, [x20,2] strh wzr, [x20,4] -.L2941: +.L3113: ldrh w0, [x20,4] - cbnz w0, .L2942 + cbnz w0, .L3114 mov x0, x20 bl allocate_new_data_superblock -.L2942: +.L3114: add x5, x22, :lo12:.LANCHOR2 add x25, x19, :lo12:.LANCHOR0 str x5, [x29,96] @@ -19216,18 +19896,18 @@ FtlCacheWriteBack: ldr x5, [x29,96] ldr w0, [x0,x21] cmn w0, #1 - bne .L2943 + bne .L3115 str w28, [x5,-96] -.L2943: +.L3115: add x0, x22, :lo12:.LANCHOR2 ldr w0, [x0,-96] - cbz w0, .L2940 - b .L2930 -.L2971: + cbz w0, .L3112 + b .L3102 +.L3143: ldr w0, [x1,4] - cbz w23, .L2969 + cbz w23, .L3141 orr w0, w0, -2147483648 -.L2969: +.L3141: str w0, [x29,124] mov w2, 1 ldr w0, [x1,24] @@ -19239,7 +19919,7 @@ FtlCacheWriteBack: ldr x0, [x21,16] ldr w0, [x0,12] cmn w0, #1 - beq .L2947 + beq .L3119 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 @@ -19247,16 +19927,16 @@ FtlCacheWriteBack: ldr x2, [x22,#:lo12:.LANCHOR2] mov w21, w1 ldrh w2, [x2,x0] - cbnz w2, .L2948 + cbnz w2, .L3120 mov x0, x26 bl printk -.L2948: +.L3120: mov w0, w21 bl decrement_vpc_count -.L2947: +.L3119: add w24, w24, 1 - b .L2934 -.L2930: + b .L3106 +.L3102: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -19274,13 +19954,17 @@ FtlSysFlush: stp x29, x30, [sp, -16]! add x29, sp, 0 ldr w0, [x0,#:lo12:.LANCHOR2-96] - cbnz w0, .L2973 + cbnz w0, .L3145 + adrp x0, .LANCHOR1+504 + ldr w0, [x0,#:lo12:.LANCHOR1+504] + cmn w0, #1 + beq .L3145 bl FtlCacheWriteBack bl l2p_flush mov w0, 1 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2973: +.L3145: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -19294,9 +19978,9 @@ FtlDeInit: add x29, sp, 0 ldr w0, [x0,#:lo12:.LANCHOR1+504] cmp w0, 1 - bne .L2975 + bne .L3150 bl FtlSysFlush -.L2975: +.L3150: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -19318,10 +20002,10 @@ ftl_deinit: .type rk_ftl_de_init, %function rk_ftl_de_init: stp x29, x30, [sp, -16]! - adrp x0, .LC148 + adrp x0, .LC153 mov w1, 0 add x29, sp, 0 - add x0, x0, :lo12:.LC148 + add x0, x0, :lo12:.LC153 bl printk bl ftl_deinit ldp x29, x30, [sp], 16 @@ -19361,49 +20045,54 @@ ftl_discard: stp x19, x20, [sp,16] mov w19, w1 mov w20, w0 - ldr w1, [x21,2060] + ldr w1, [x21,2064] mov w0, -1 cmp w2, w1 - bhi .L2981 + bhi .L3156 + adrp x0, .LANCHOR1+504 + ldr w1, [x0,#:lo12:.LANCHOR1+504] + cmn w1, #1 + mov w0, w1 + beq .L3156 cmp w19, 31 mov w0, 0 - bls .L2981 + bls .L3156 adrp x23, .LANCHOR2 add x1, x23, :lo12:.LANCHOR2 ldr w1, [x1,-96] - cbnz w1, .L2981 + cbnz w1, .L3156 bl FtlCacheWriteBack - ldrh w1, [x21,2024] + ldrh w1, [x21,2030] udiv w21, w20, w1 msub w20, w1, w21, w20 uxth w20, w20 - cbz w20, .L2982 + cbz w20, .L3157 sub w1, w1, w20 add w21, w21, 1 cmp w1, w19 csel w1, w1, w19, ls sub w19, w19, w1, uxth -.L2982: +.L3157: mov w0, -1 - adrp x20, .LANCHOR4 + adrp x20, .LANCHOR5 str w0, [x29,76] -.L2983: +.L3158: add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2024] + ldrh w0, [x0,2030] cmp w19, w0 - bcc .L2996 + bcc .L3172 mov w0, w21 add x1, x29, 72 mov w2, 0 bl log2phys ldr w0, [x29,72] cmn w0, #1 - beq .L2984 - add x1, x20, :lo12:.LANCHOR4 + beq .L3159 + add x1, x20, :lo12:.LANCHOR5 mov w2, 1 - ldr w0, [x1,448] + ldr w0, [x1,-64] add w0, w0, 1 - str w0, [x1,448] + str w0, [x1,-64] add x1, x23, :lo12:.LANCHOR2 ldr w0, [x1,204] add w0, w0, 1 @@ -19415,24 +20104,24 @@ ftl_discard: lsr x0, x0, 10 bl P2V_block_in_plane bl decrement_vpc_count -.L2984: +.L3159: add x0, x22, :lo12:.LANCHOR0 add w21, w21, 1 - ldrh w0, [x0,2024] + ldrh w0, [x0,2030] sub w19, w19, w0 - b .L2983 -.L2996: - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - ldr w1, [x0,448] + b .L3158 +.L3172: + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + ldr w1, [x0,-64] cmp w1, 32 - bls .L2986 - str wzr, [x0,448] + bls .L3161 + str wzr, [x0,-64] bl l2p_flush bl FtlVpcTblFlush -.L2986: +.L3161: mov w0, 0 -.L2981: +.L3156: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -19454,96 +20143,102 @@ FtlDiscard: .type ftl_read, %function ftl_read: sub sp, sp, #208 - cmp w0, 16 + mov w4, w0 + adrp x0, .LANCHOR1+504 stp x29, x30, [sp,16] add x29, sp, 16 + ldr w5, [x0,#:lo12:.LANCHOR1+504] stp x19, x20, [sp,32] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] stp x21, x22, [sp,48] stp x23, x24, [sp,64] + stp x25, x26, [sp,80] + stp x27, x28, [sp,96] + cmn w5, #1 + mov w0, w5 + beq .L3175 + cmp w4, 16 + mov x24, x3 + mov w27, w2 mov w20, w1 - mov w28, w2 - mov x26, x3 - bne .L2999 + bne .L3176 add w0, w1, 256 mov w1, w2 mov x2, x3 bl FtlVendorPartRead - b .L3000 -.L2999: + b .L3175 +.L3176: adrp x21, .LANCHOR0 add w0, w1, w2 add x1, x21, :lo12:.LANCHOR0 str w0, [x29,168] mov w0, -1 ldr w3, [x29,168] - ldr w2, [x1,2060] + ldr w2, [x1,2064] cmp w3, w2 - bhi .L3000 - ldrh w0, [x1,2024] - sub w25, w3, #1 + bhi .L3175 + ldrh w0, [x1,2030] + sub w26, w3, #1 adrp x19, .LANCHOR2 udiv w1, w20, w0 str w1, [x29,172] - udiv w25, w25, w0 + udiv w26, w26, w0 ldr w0, [x29,172] - sub w24, w25, w0 + sub w25, w26, w0 add x0, x19, :lo12:.LANCHOR2 - add w24, w24, 1 + add w25, w25, 1 ldr w1, [x0,228] - add w1, w28, w1 + add w1, w27, w1 str w1, [x0,228] ldr w1, [x0,200] - add w1, w24, w1 + add w1, w25, w1 str w1, [x0,200] ldr w0, [x29,172] - mov w1, w25 + mov w1, w26 bl FtlCacheMetchLpa - cbz w0, .L3001 + cbz w0, .L3177 bl FtlCacheWriteBack -.L3001: - mov w27, 0 - adrp x0, .LC138 +.L3177: + mov w28, 0 + adrp x0, .LC142 ldr w22, [x29,172] - add x0, x0, :lo12:.LC138 - str w27, [x29,156] - mov w23, w27 - str w27, [x29,152] + add x0, x0, :lo12:.LC142 + str w28, [x29,156] + mov w23, w28 + str w28, [x29,152] str x0, [x29,112] -.L3002: - cbz w24, .L3045 +.L3178: + cbz w25, .L3222 mov w0, w22 add x1, x29, 188 mov w2, 0 bl log2phys ldr w3, [x29,188] cmn w3, #1 - bne .L3042 + bne .L3219 mov w3, 0 -.L3003: +.L3179: add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,2024] + ldrh w0, [x0,2030] cmp w3, w0 - bcs .L3007 + bcs .L3183 madd w0, w22, w0, w3 cmp w0, w20 - bcc .L3005 + bcc .L3181 ldr w1, [x29,168] cmp w0, w1 - bcs .L3005 + bcs .L3181 sub w0, w0, w20 mov w1, 0 ubfiz x0, x0, 9, 23 mov w2, 512 - add x0, x26, x0 + add x0, x24, x0 str x3, [x29,160] bl ftl_memset ldr x3, [x29,160] -.L3005: +.L3181: add w3, w3, 1 - b .L3003 -.L3042: + b .L3179 +.L3219: mov w0, 56 umull x1, w23, w0 add x0, x19, :lo12:.LANCHOR2 @@ -19554,67 +20249,67 @@ ftl_read: cmp w22, w2 ldr x2, [x0,2048] add x2, x2, x1 - bne .L3008 + bne .L3184 ldr x0, [x0,2104] str x0, [x2,8] add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,2024] + ldrh w0, [x0,2030] udiv w3, w20, w0 msub w3, w3, w0, w20 str w3, [x29,128] sub w3, w0, w3 - cmp w3, w28 - csel w3, w3, w28, ls + cmp w3, w27 + csel w3, w3, w27, ls str w3, [x29,156] cmp w3, w0 - bne .L3009 - str x26, [x2,8] - b .L3009 -.L3008: - cmp w22, w25 - bne .L3010 + bne .L3185 + str x24, [x2,8] + b .L3185 +.L3184: + cmp w22, w26 + bne .L3186 ldr x0, [x0,2112] str x0, [x2,8] add x0, x21, :lo12:.LANCHOR0 ldr w4, [x29,168] - ldrh w3, [x0,2024] + ldrh w3, [x0,2030] mul w0, w22, w3 - sub w27, w4, w0 - cmp w27, w3 - bne .L3009 - b .L3043 -.L3010: + sub w28, w4, w0 + cmp w28, w3 + bne .L3185 + b .L3220 +.L3186: add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,2024] + ldrh w0, [x0,2030] mul w0, w22, w0 -.L3043: +.L3220: sub w0, w0, w20 ubfiz x0, x0, 9, 23 - add x0, x26, x0 + add x0, x24, x0 str x0, [x2,8] -.L3009: +.L3185: add x2, x19, :lo12:.LANCHOR2 ldr x0, [x2,2048] ldr x2, [x2,2128] add x1, x0, x1 add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,2030] + ldrh w0, [x0,2036] str w22, [x1,24] mul w0, w23, w0 add w23, w23, 1 and x0, x0, 4294967292 add x0, x2, x0 str x0, [x1,16] -.L3007: - subs w24, w24, #1 +.L3183: + subs w25, w25, #1 add w22, w22, 1 - beq .L3011 + beq .L3187 add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,1948] + ldrh w0, [x0,1956] cmp w23, w0, lsl 3 - bne .L3002 -.L3011: - cbz w23, .L3002 + bne .L3178 +.L3187: + cbz w23, .L3178 add x0, x19, :lo12:.LANCHOR2 mov w1, w23 mov w2, 0 @@ -19627,12 +20322,12 @@ ftl_read: ldr w0, [x29,156] lsl w0, w0, 9 str w0, [x29,124] - lsl w0, w27, 9 + lsl w0, w28, 9 str w0, [x29,120] -.L3013: +.L3189: ldr w0, [x29,160] cmp w23, w0 - bls .L3046 + bls .L3223 ldr x0, [x29,160] add x2, x19, :lo12:.LANCHOR2 mov x1, 56 @@ -19642,52 +20337,52 @@ ftl_read: add x0, x0, x8 ldr w1, [x0,24] cmp w1, w3 - bne .L3014 + bne .L3190 ldr x1, [x0,8] ldr x0, [x2,2104] cmp x1, x0 - bne .L3015 + bne .L3191 ldr x2, [x29,144] - mov x0, x26 + mov x0, x24 str x8, [x29,104] add x1, x1, x2 ldr w2, [x29,124] - b .L3044 -.L3014: - cmp w1, w25 - bne .L3015 + b .L3221 +.L3190: + cmp w1, w26 + bne .L3191 ldr x1, [x0,8] ldr x0, [x2,2112] cmp x1, x0 - bne .L3015 + bne .L3191 add x0, x21, :lo12:.LANCHOR0 ldr w2, [x29,120] str x8, [x29,104] - ldrh w0, [x0,2024] - mul w0, w25, w0 + ldrh w0, [x0,2030] + mul w0, w26, w0 sub w0, w0, w20 ubfiz x0, x0, 9, 23 - add x0, x26, x0 -.L3044: + add x0, x24, x0 +.L3221: bl ftl_memcpy ldr x8, [x29,104] -.L3015: +.L3191: add x0, x19, :lo12:.LANCHOR2 ldr x1, [x0,2048] add x2, x1, x8 ldr w3, [x1,x8] cmn w3, #1 - bne .L3016 + bne .L3192 ldr w1, [x0,408] str w3, [x29,152] add w1, w1, 1 str w1, [x0,408] -.L3016: +.L3192: ldr x0, [x2,16] ldr w1, [x2,24] ldr w0, [x0,8] cmp w1, w0 - beq .L3017 + beq .L3193 add x0, x19, :lo12:.LANCHOR2 str x8, [x29,104] ldr w1, [x0,408] @@ -19707,35 +20402,35 @@ ftl_read: ldr w7, [x7] bl printk ldr x8, [x29,104] -.L3017: +.L3193: add x0, x19, :lo12:.LANCHOR2 ldr x0, [x0,2048] add x1, x0, x8 ldr w0, [x0,x8] cmp w0, 256 - bne .L3018 + bne .L3194 ldr w0, [x1,4] lsr x0, x0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3018: +.L3194: ldr x0, [x29,160] add x0, x0, 1 str x0, [x29,160] - b .L3013 -.L3046: + b .L3189 +.L3223: mov w23, 0 - b .L3002 -.L3045: + b .L3178 +.L3222: add x19, x19, :lo12:.LANCHOR2 ldrh w0, [x19,944] - cbz w0, .L3021 - mov w0, w24 + cbz w0, .L3197 + mov w0, w25 mov w1, 1 bl ftl_do_gc -.L3021: +.L3197: ldr w0, [x29,152] -.L3000: +.L3175: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -19747,6 +20442,90 @@ ftl_read: ret .size ftl_read, .-ftl_read .align 2 + .global ftl_vendor_read + .type ftl_vendor_read, %function +ftl_vendor_read: + stp x29, x30, [sp, -16]! + mov w5, w0 + mov w4, w1 + add x29, sp, 0 + mov x3, x2 + mov w1, w5 + mov w2, w4 + mov w0, 16 + bl ftl_read + ldp x29, x30, [sp], 16 + ret + .size ftl_vendor_read, .-ftl_vendor_read + .align 2 + .global FlashBootVendorRead + .type FlashBootVendorRead, %function +FlashBootVendorRead: + stp x29, x30, [sp, -64]! + add x29, sp, 0 + str x19, [sp,16] + mov w19, -1 + str x0, [x29,40] + str x1, [x29,48] + str x2, [x29,56] + bl rknand_device_lock + adrp x3, .LANCHOR1+504 + ldr x2, [x29,56] + ldr x1, [x29,48] + ldr x0, [x29,40] + ldr w3, [x3,#:lo12:.LANCHOR1+504] + cmp w3, 1 + bne .L3226 + bl ftl_vendor_read + mov w19, w0 +.L3226: + bl rknand_device_unlock + mov w0, w19 + ldr x19, [sp,16] + ldp x29, x30, [sp], 64 + ret + .size FlashBootVendorRead, .-FlashBootVendorRead + .align 2 + .global ftl_sys_read + .type ftl_sys_read, %function +ftl_sys_read: + stp x29, x30, [sp, -16]! + mov w4, w1 + mov x3, x2 + add x29, sp, 0 + add w1, w0, 256 + mov w2, w4 + mov w0, 16 + bl ftl_read + ldp x29, x30, [sp], 16 + ret + .size ftl_sys_read, .-ftl_sys_read + .align 2 + .global StorageSysDataLoad + .type StorageSysDataLoad, %function +StorageSysDataLoad: + stp x29, x30, [sp, -48]! + mov w2, 512 + add x29, sp, 0 + stp x19, x20, [sp,16] + mov w20, w0 + mov x19, x1 + mov x0, x1 + mov w1, 0 + bl ftl_memset + bl rknand_device_lock + mov x2, x19 + mov w1, 1 + mov w0, w20 + bl ftl_sys_read + str x0, [x29,40] + bl rknand_device_unlock + ldr x0, [x29,40] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 + ret + .size StorageSysDataLoad, .-StorageSysDataLoad + .align 2 .global FtlRead .type FtlRead, %function FtlRead: @@ -19765,73 +20544,92 @@ FtlInit: mov w0, -1 adrp x1, .LC76 add x29, sp, 0 - str x21, [sp,32] - adrp x21, .LANCHOR1 - add x21, x21, :lo12:.LANCHOR1 + stp x21, x22, [sp,32] + adrp x22, .LANCHOR1 add x1, x1, :lo12:.LC76 + add x22, x22, :lo12:.LANCHOR1 + adrp x21, .LANCHOR0 stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - adrp x19, .LANCHOR0 - str w0, [x21,504] - adrp x0, .LANCHOR4+452 - add x20, x20, :lo12:.LANCHOR2 - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x0,#:lo12:.LANCHOR4+452] + adrp x19, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR0 + str w0, [x22,504] + adrp x0, .LANCHOR5-60 + add x19, x19, :lo12:.LANCHOR2 + str wzr, [x0,#:lo12:.LANCHOR5-60] adrp x0, .LC75 add x0, x0, :lo12:.LC75 - str wzr, [x20,-96] + str wzr, [x19,-96] bl printk - add x0, x19, 168 + add x0, x21, 168 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh w0, [x19,1952] + ldrh w0, [x21,1960] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L3049 - adrp x0, .LC149 - add x0, x0, :lo12:.LC149 - b .L3061 -.L3049: + cbz w0, .L3232 + adrp x0, .LC154 + add x0, x0, :lo12:.LC154 + b .L3246 +.L3232: bl FtlSysBlkInit - cbz w0, .L3051 - adrp x0, .LC150 - add x0, x0, :lo12:.LC150 -.L3061: + mov w20, w0 + cbz w0, .L3234 + adrp x0, .LC155 + add x0, x0, :lo12:.LC155 +.L3246: adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 - add x1, x1, 80 + add x1, x1, 120 bl printk - b .L3050 -.L3051: + b .L3233 +.L3234: mov w1, 1 - str w1, [x21,504] + str w1, [x22,504] bl ftl_do_gc - ldrh w0, [x20,32] + ldrh w0, [x19,32] cmp w0, 15 - bhi .L3052 - mov w19, 1024 -.L3053: + bhi .L3235 + mov w22, 65535 + add w21, w0, 2 +.L3238: + ldrh w0, [x19,280] + cmp w0, w22 + bne .L3236 + ldrh w0, [x19,936] + cmp w0, w22 + bne .L3236 + and w0, w20, 7 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3236: mov w0, 1 mov w1, w0 bl ftl_do_gc - subs w19, w19, #1 - bne .L3053 - b .L3050 -.L3052: - ldrb w0, [x19,120] - cbz w0, .L3050 - mov w19, 128 -.L3055: - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - subs w19, w19, #1 - bne .L3055 -.L3050: mov w0, 0 - ldr x21, [sp,32] + mov w1, 1 + bl ftl_do_gc + ldrh w0, [x19,32] + cmp w0, w21 + bhi .L3233 + add w20, w20, 1 + cmp w20, 1024 + bne .L3238 + b .L3233 +.L3235: + ldrb w0, [x21,196] + cbz w0, .L3233 + mov w19, 128 +.L3240: + mov w0, 1 + mov w1, w0 + bl ftl_do_gc + subs w19, w19, #1 + bne .L3240 +.L3233: + mov w0, 0 ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size FtlInit, .-FtlInit @@ -19842,22 +20640,24 @@ rk_ftl_init: stp x29, x30, [sp, -32]! mov w0, 2048 add x29, sp, 0 - str x19, [sp,16] + stp x19, x20, [sp,16] + adrp x20, .LANCHOR5 adrp x19, .LANCHOR4 - add x19, x19, :lo12:.LANCHOR4 + add x20, x20, :lo12:.LANCHOR5 bl ftl_malloc - add x1, x19, 464 - str x0, [x19,456] - add x0, x19, 48 - str xzr, [x19,48] - str xzr, [x19,464] + add x19, x19, :lo12:.LANCHOR4 + mov x1, x20 + str x0, [x20,-56] + mov x0, x19 + str xzr, [x1,-48]! + str xzr, [x0,48]! bl rknand_get_reg_addr ldr x1, [x19,48] mov w0, -1 - cbz x1, .L3063 + cbz x1, .L3248 bl rk_nandc_irq_init mov w1, 0 - ldr x0, [x19,456] + ldr x0, [x20,-56] mov w2, w1 mov w3, 2048 bl FlashSramLoadStore @@ -19865,16 +20665,16 @@ rk_ftl_init: ldr x0, [x19,48] bl FlashInit mov w19, w0 - cbnz w0, .L3064 + cbnz w0, .L3249 bl FtlInit -.L3064: - adrp x0, .LC151 +.L3249: + adrp x0, .LC156 mov w1, w19 - add x0, x0, :lo12:.LC151 + add x0, x0, :lo12:.LC156 bl printk mov w0, w19 -.L3063: - ldr x19, [sp,16] +.L3248: + ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret .size rk_ftl_init, .-rk_ftl_init @@ -19892,17 +20692,17 @@ ftl_fix_nand_power_lost_error: stp x23, x24, [sp,48] str x27, [sp,80] mov x25, x0 - ldrb w1, [x1,120] - cbz w1, .L3067 - adrp x21, .LANCHOR4 + ldrb w1, [x1,196] + cbz w1, .L3252 + adrp x21, .LANCHOR5 adrp x19, .LANCHOR2 - add x0, x21, :lo12:.LANCHOR4 - adrp x20, .LC152 + add x0, x21, :lo12:.LANCHOR5 + adrp x20, .LC157 add x24, x19, :lo12:.LANCHOR2 ldr x2, [x19,#:lo12:.LANCHOR2] add x27, x24, 40 - ldrh w23, [x0,290] - add x0, x20, :lo12:.LC152 + ldrh w23, [x0,-216] + add x0, x20, :lo12:.LC157 add x26, x24, 88 ubfiz x22, x23, 1, 16 mov w1, w23 @@ -19917,41 +20717,41 @@ ftl_fix_nand_power_lost_error: bl allocate_new_data_superblock mov x0, x26 bl allocate_new_data_superblock -.L3069: +.L3254: subs w24, w24, #1 - beq .L3073 + beq .L3258 mov w0, 1 mov w1, w0 bl ftl_do_gc ldr x0, [x19,#:lo12:.LANCHOR2] ldrh w0, [x0,x22] - cbnz w0, .L3069 -.L3073: + cbnz w0, .L3254 +.L3258: ldr x2, [x19,#:lo12:.LANCHOR2] - add x0, x20, :lo12:.LC152 + add x0, x20, :lo12:.LC157 mov w1, w23 ldrh w2, [x2,x22] bl printk ldr x0, [x19,#:lo12:.LANCHOR2] ldrh w0, [x0,x22] - cbnz w0, .L3071 + cbnz w0, .L3256 add x0, x29, 96 strh w23, [x29,96] bl make_superblock add x0, x25, :lo12:.LANCHOR0 mov w6, 65535 mov w7, 56 - ldrh w5, [x0,1948] + ldrh w5, [x0,1956] mov x0, 0 mov w20, w0 -.L3074: +.L3259: cmp w5, w0, uxth - bls .L3081 + bls .L3266 add x1, x29, 96 add x1, x1, x0, lsl 1 ldrh w2, [x1,16] cmp w2, w6 - beq .L3075 + beq .L3260 add x4, x19, :lo12:.LANCHOR2 lsl w2, w2, 10 umull x1, w20, w7 @@ -19964,15 +20764,15 @@ ftl_fix_nand_power_lost_error: add x1, x2, x1 str xzr, [x1,8] str xzr, [x1,16] -.L3075: +.L3260: add x0, x0, 1 - b .L3074 -.L3081: + b .L3259 +.L3266: ldr x2, [x19,#:lo12:.LANCHOR2] - adrp x0, .LC153 + adrp x0, .LC158 add x24, x19, :lo12:.LANCHOR2 mov w1, w23 - add x0, x0, :lo12:.LC153 + add x0, x0, :lo12:.LC158 ldrh w2, [x2,x22] bl printk ldr x0, [x24,-88] @@ -19983,11 +20783,11 @@ ftl_fix_nand_power_lost_error: mov w1, 1 mov w2, w20 bl FlashEraseBlocks -.L3071: - add x21, x21, :lo12:.LANCHOR4 +.L3256: + add x21, x21, :lo12:.LANCHOR5 mov w0, -1 - strh w0, [x21,290] -.L3067: + strh w0, [x21,-216] +.L3252: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -20014,299 +20814,303 @@ ftl_write: mov w4, w0 mov w0, 0 add x29, sp, 0 - stp x21, x22, [sp,32] - mov w21, w1 - adrp x1, .LANCHOR2 stp x23, x24, [sp,48] - mov w23, w2 + mov w23, w1 + adrp x1, .LANCHOR2 + stp x25, x26, [sp,64] + mov w25, w2 add x2, x1, :lo12:.LANCHOR2 stp x19, x20, [sp,16] - stp x25, x26, [sp,64] + stp x21, x22, [sp,32] stp x27, x28, [sp,80] - mov x24, x3 + mov x26, x3 str x1, [x29,176] ldr w3, [x2,-96] - cbnz w3, .L3084 + cbnz w3, .L3269 + adrp x1, .LANCHOR1 + str x1, [x29,152] + add x3, x1, :lo12:.LANCHOR1 + ldr w3, [x3,504] + cmn w3, #1 + beq .L3269 cmp w4, 16 - bne .L3085 - add w0, w21, 256 - mov w1, w23 - mov x2, x24 + bne .L3270 + add w0, w23, 256 + mov w1, w25 + mov x2, x26 bl FtlVendorPartWrite - b .L3084 -.L3085: - adrp x20, .LANCHOR0 - add w26, w21, w23 - add x4, x20, :lo12:.LANCHOR0 + b .L3269 +.L3270: + adrp x21, .LANCHOR0 + add w3, w23, w25 + add x4, x21, :lo12:.LANCHOR0 mov w0, -1 - ldr w1, [x4,2060] - cmp w26, w1 - bhi .L3084 - adrp x6, .LANCHOR4 - ldrh w1, [x4,2024] - add x28, x6, :lo12:.LANCHOR4 - sub w26, w26, #1 + ldr w1, [x4,2064] + cmp w3, w1 + bhi .L3269 + adrp x5, .LANCHOR5 + ldrh w1, [x4,2030] + add x22, x5, :lo12:.LANCHOR5 + sub w3, w3, #1 mov w0, 2048 + str x5, [x29,144] + udiv w27, w23, w1 + cmp w25, w1, lsl 1 + str w0, [x22,-40] + udiv w0, w3, w1 ldr w3, [x4,2080] - udiv w25, w21, w1 - cmp w23, w1, lsl 1 - str w0, [x28,472] - str x6, [x29,152] - udiv w0, w26, w1 - str w0, [x29,216] - sub w26, w0, w25 - add w27, w26, 1 + str w0, [x29,208] + sub w24, w0, w27 + add w20, w24, 1 ldr w0, [x2,208] - add w0, w27, w0 + add w0, w20, w0 str w0, [x2,208] ldr w0, [x2,224] - add w0, w23, w0 + add w0, w25, w0 str w0, [x2,224] cset w0, cs - str w0, [x29,220] - cbz w3, .L3087 + str w0, [x29,212] + cbz w3, .L3272 mov w0, 56 sub w3, w3, #1 umull x3, w3, w0 ldr x0, [x4,2088] add x3, x0, x3 ldr w0, [x3,24] - cmp w25, w0 - bne .L3088 + cmp w27, w0 + bne .L3273 ldr w0, [x2,212] add w0, w0, 1 str w0, [x2,212] - ldr w0, [x28,476] + ldr w0, [x22,-36] add w0, w0, 1 - str w0, [x28,476] - msub w0, w25, w1, w21 + str w0, [x22,-36] + msub w0, w27, w1, w23 sub w1, w1, w0 ubfiz x0, x0, 9, 23 - cmp w1, w23 - csel w19, w1, w23, ls + cmp w1, w25 + csel w19, w1, w25, ls ldr x1, [x3,8] - lsl w22, w19, 9 + lsl w20, w19, 9 add x0, x1, x0 - mov w2, w22 - mov x1, x24 + mov w2, w20 + mov x1, x26 bl ftl_memcpy - cbnz w26, .L3089 - ldr w0, [x28,476] + cbnz w24, .L3274 + ldr w0, [x22,-36] cmp w0, 2 - bgt .L3089 -.L3122: + bgt .L3274 +.L3308: mov w0, 0 - b .L3084 -.L3089: - sub w23, w23, w19 - add w21, w21, w19 - add x24, x24, x22 - add w25, w25, 1 - mov w27, w26 -.L3088: - ldr x0, [x29,152] - add x0, x0, :lo12:.LANCHOR4 - str wzr, [x0,476] -.L3087: - ldr w1, [x29,216] - mov w0, w25 + b .L3269 +.L3274: + add x26, x26, x20 + sub w25, w25, w19 + add w23, w23, w19 + add w27, w27, 1 + mov w20, w24 +.L3273: + ldr x0, [x29,144] + add x0, x0, :lo12:.LANCHOR5 + str wzr, [x0,-36] +.L3272: + ldr w1, [x29,208] + mov w0, w27 bl FtlCacheMetchLpa - cbz w0, .L3090 + cbz w0, .L3275 bl FtlCacheWriteBack -.L3090: - ldr x0, [x29,152] +.L3275: + ldr x0, [x29,144] ldr x1, [x29,176] - add x0, x0, :lo12:.LANCHOR4 - str w25, [x29,200] - add x22, x1, :lo12:.LANCHOR2 - add x19, x22, 40 - str x19, [x29,184] - str x19, [x0,440] - adrp x0, .LC154 - add x0, x0, :lo12:.LC154 - str x0, [x29,112] -.L3091: - cbz w27, .L3151 - ldrh w0, [x19,4] - cbnz w0, .L3092 + add x0, x0, :lo12:.LANCHOR5 + str w27, [x29,192] + add x24, x1, :lo12:.LANCHOR2 + add x22, x24, 40 + str x22, [x29,184] + str x22, [x0,-72] + adrp x0, .LC159 + add x0, x0, :lo12:.LC159 + str x0, [x29,104] +.L3276: + cbz w20, .L3339 + ldrh w0, [x22,4] + cbnz w0, .L3277 ldr x1, [x29,184] - adrp x28, .LANCHOR1 - cmp x19, x1 - bne .L3093 - add x0, x22, 88 + cmp x22, x1 + bne .L3278 + add x0, x24, 88 ldrh w19, [x0,4] - cbnz w19, .L3094 + cbnz w19, .L3279 bl allocate_new_data_superblock - add x0, x28, :lo12:.LANCHOR1 - str w19, [x0,3172] -.L3094: + ldr x0, [x29,152] + add x0, x0, :lo12:.LANCHOR1 + str w19, [x0,3300] +.L3279: ldr x0, [x29,184] - add x28, x28, :lo12:.LANCHOR1 - add x19, x22, 88 + add x22, x24, 88 bl allocate_new_data_superblock - ldr w0, [x28,3172] - cbnz w0, .L3095 -.L3096: - ldr x19, [x29,184] - b .L3095 -.L3093: - add x28, x28, :lo12:.LANCHOR1 - str w0, [x28,3172] + ldr x0, [x29,152] + add x0, x0, :lo12:.LANCHOR1 + ldr w0, [x0,3300] + cbnz w0, .L3280 +.L3281: + ldr x22, [x29,184] + b .L3280 +.L3278: + ldr x1, [x29,152] + add x1, x1, :lo12:.LANCHOR1 + str w0, [x1,3300] ldr x0, [x29,184] ldrh w0, [x0,4] - cbnz w0, .L3096 - mov x0, x19 + cbnz w0, .L3281 + mov x0, x22 bl allocate_new_data_superblock -.L3095: - ldrh w0, [x19,4] - cbnz w0, .L3097 - mov x0, x19 +.L3280: + ldrh w0, [x22,4] + cbnz w0, .L3282 + mov x0, x22 bl allocate_new_data_superblock -.L3097: - ldr x0, [x29,152] - add x0, x0, :lo12:.LANCHOR4 - str x19, [x0,440] -.L3092: - add x2, x20, :lo12:.LANCHOR0 - ldr w0, [x22,2044] - ldrh w1, [x19,4] - str xzr, [x29,208] +.L3282: + ldr x0, [x29,144] + add x0, x0, :lo12:.LANCHOR5 + str x22, [x0,-72] +.L3277: + add x2, x21, :lo12:.LANCHOR0 + ldr w0, [x24,2044] + ldrh w1, [x22,4] + str xzr, [x29,200] ldr w2, [x2,2080] sub w0, w0, w2 cmp w1, w0 csel w0, w1, w0, ls - cmp w0, w27 - csel w0, w0, w27, ls - str w0, [x29,148] - ldr w0, [x29,220] + cmp w0, w20 + csel w0, w0, w20, ls + str w0, [x29,140] + ldr w0, [x29,212] and w0, w0, 1 - str w0, [x29,124] - add w0, w23, w21 - str w0, [x29,144] -.L3098: - ldr w0, [x29,208] - ldr w2, [x29,148] - ldr w1, [x29,200] + str w0, [x29,116] + add w0, w25, w23 + str w0, [x29,136] +.L3283: + ldr w0, [x29,200] + ldr w2, [x29,140] + ldr w1, [x29,192] cmp w0, w2 - add w26, w1, w0 - bcs .L3152 - ldrh w1, [x19,4] - cbz w1, .L3128 - ldr w1, [x29,216] - cmp w26, w1 - cset w7, eq - cbz w0, .L3100 - ldr w1, [x29,124] - tst w7, w1 - beq .L3100 - add x1, x20, :lo12:.LANCHOR0 - ldr w2, [x29,144] - ldrh w1, [x1,2024] - msub w2, w26, w1, w2 + add w28, w1, w0 + bcs .L3340 + ldrh w1, [x22,4] + cbz w1, .L3315 + ldr w1, [x29,208] + cmp w28, w1 + cset w6, eq + cbz w0, .L3285 + ldr w1, [x29,116] + tst w6, w1 + beq .L3285 + add x1, x21, :lo12:.LANCHOR0 + ldr w2, [x29,136] + ldrh w1, [x1,2030] + msub w2, w28, w1, w2 cmp w2, w1 - bne .L3128 -.L3100: + bne .L3315 +.L3285: add x1, x29, 228 mov w2, 0 - mov w0, w26 - str x7, [x29,104] + mov w0, w28 + str x6, [x29,96] + add x19, x21, :lo12:.LANCHOR0 bl log2phys - mov x0, x19 + mov x0, x22 bl get_new_active_ppa - add x4, x20, :lo12:.LANCHOR0 - mov w5, 56 - str x4, [x29,192] - str x5, [x29,160] - ldr w6, [x4,2080] - ldr x2, [x4,2088] - umull x1, w6, w5 + ldr w5, [x19,2080] + mov w4, 56 + ldr x2, [x19,2088] + str x4, [x29,160] + umull x1, w5, w4 add x2, x2, x1 str w0, [x2,4] - ldrh w2, [x4,2030] - ldr x0, [x4,2088] + ldrh w2, [x19,2036] + ldr x0, [x19,2088] add x1, x0, x1 - mul w0, w2, w6 + mul w0, w2, w5 and x0, x0, 4294967292 - str x0, [x29,136] - ldr x0, [x22,2136] - ldr x3, [x29,136] str x0, [x29,128] - add x28, x0, x3 - ldrh w0, [x4,2028] - str x28, [x1,16] - str w26, [x1,24] - mul w0, w0, w6 - ldr x6, [x22,2096] + ldr x0, [x24,2136] + ldr x3, [x29,128] + str x0, [x29,120] + add x0, x0, x3 + str x0, [x29,216] + str x0, [x1,16] + ldrh w0, [x19,2034] + str w28, [x1,24] + mul w0, w0, w5 + ldr x5, [x24,2096] and x0, x0, 4294967292 - add x0, x6, x0 + add x0, x5, x0 str x0, [x1,8] - mov x0, x28 + ldr x0, [x29,216] mov w1, 0 bl ftl_memset - cmp w26, w25 - ldr x4, [x29,192] + cmp w28, w27 cset w0, eq - str w0, [x29,204] - cbnz w0, .L3131 - ldr x7, [x29,104] - ldr x5, [x29,160] - cbz w7, .L3101 - ldr w0, [x29,144] - ldrh w2, [x4,2024] - msub w2, w26, w2, w0 - uxth w0, w2 - str w0, [x29,192] - ldr w0, [x29,204] + str w0, [x29,196] + cbnz w0, .L3319 + ldr x6, [x29,96] + ldr x4, [x29,160] + cbz w6, .L3286 + ldr w0, [x29,136] + ldrh w19, [x19,2030] + msub w19, w28, w19, w0 + ldr w0, [x29,196] str w0, [x29,160] - b .L3104 -.L3131: - ldrh w2, [x4,2024] - udiv w0, w21, w2 - msub w0, w0, w2, w21 + uxth w19, w19 + b .L3289 +.L3319: + ldrh w19, [x19,2030] + udiv w0, w23, w19 + msub w0, w0, w19, w23 str w0, [x29,160] - sub w2, w2, w0 - cmp w2, w23 - csel w0, w2, w23, ls - str w0, [x29,192] -.L3104: - add x2, x20, :lo12:.LANCHOR0 - ldr w1, [x29,192] - ldrh w0, [x2,2024] - cmp w1, w0 - bne .L3105 - ldr w0, [x29,204] - mov x1, x24 - cbnz w0, .L3106 - ldr w0, [x29,192] - mul w1, w0, w26 - sub w1, w1, w21 + sub w19, w19, w0 + cmp w19, w25 + csel w19, w19, w25, ls +.L3289: + add x2, x21, :lo12:.LANCHOR0 + ldrh w0, [x2,2030] + cmp w19, w0 + bne .L3290 + ldr w0, [x29,196] + mov x1, x26 + cbnz w0, .L3291 + mul w1, w19, w28 + sub w1, w1, w23 ubfiz x1, x1, 9, 23 - add x1, x24, x1 -.L3106: - ldr w2, [x29,220] + add x1, x26, x1 +.L3291: + ldr w2, [x29,212] mov w0, 56 - add x4, x20, :lo12:.LANCHOR0 - cbz w2, .L3107 + add x4, x21, :lo12:.LANCHOR0 + cbz w2, .L3292 ldr w2, [x4,2080] umull x0, w2, w0 ldr x2, [x4,2088] add x0, x2, x0 - b .L3148 -.L3107: + b .L3337 +.L3292: ldr w2, [x4,2080] umull x0, w2, w0 ldr x2, [x4,2088] add x0, x2, x0 + ldrh w2, [x4,2034] ldr x0, [x0,8] - b .L3149 -.L3105: + b .L3338 +.L3290: ldr w0, [x29,228] cmn w0, #1 - beq .L3109 + beq .L3294 str w0, [x29,236] mov w1, 56 ldr w0, [x2,2080] - str w26, [x29,256] + str w28, [x29,256] umull x0, w0, w1 ldr x1, [x2,2088] mov w2, 0 @@ -20320,40 +21124,41 @@ ftl_write: bl FlashReadPages ldr w0, [x29,232] cmn w0, #1 - bne .L3110 - ldr w0, [x22,408] + bne .L3295 + ldr w0, [x24,408] add w0, w0, 1 - str w0, [x22,408] - b .L3112 -.L3110: - ldr w0, [x28,8] - cmp w0, w26 - beq .L3112 - ldr w0, [x22,408] - mov w2, w26 + str w0, [x24,408] + b .L3297 +.L3295: + ldr x0, [x29,216] + ldr w0, [x0,8] + cmp w0, w28 + beq .L3297 + ldr w0, [x24,408] + mov w2, w28 + ldr x1, [x29,216] add w0, w0, 1 - str w0, [x22,408] - ldr x0, [x29,112] - ldr w1, [x28,8] + str w0, [x24,408] + ldr x0, [x29,104] + ldr w1, [x1,8] bl printk - b .L3112 -.L3109: + b .L3297 +.L3294: ldr w0, [x2,2080] mov w1, 56 umull x0, w0, w1 ldr x1, [x2,2088] - ldrh w2, [x2,2028] + ldrh w2, [x2,2034] add x0, x1, x0 mov w1, 0 ldr x0, [x0,8] bl ftl_memset -.L3112: - ldr w1, [x29,192] +.L3297: + ldr w1, [x29,196] mov w0, 56 - lsl w2, w1, 9 - ldr w1, [x29,204] - cbz w1, .L3113 - add x1, x20, :lo12:.LANCHOR0 + lsl w2, w19, 9 + cbz w1, .L3298 + add x1, x21, :lo12:.LANCHOR0 ldr w4, [x1,2080] umull x0, w4, w0 ldr x4, [x1,2088] @@ -20362,126 +21167,152 @@ ftl_write: ubfiz x0, x0, 9, 23 ldr x1, [x4,8] add x0, x1, x0 - mov x1, x24 - b .L3150 -.L3113: - add x5, x20, :lo12:.LANCHOR0 + mov x1, x26 + b .L3338 +.L3298: + add x5, x21, :lo12:.LANCHOR0 ldr w4, [x5,2080] ldr x1, [x5,2088] umull x0, w4, w0 add x0, x1, x0 - ldrh w1, [x5,2024] - mul w1, w26, w1 + ldrh w1, [x5,2030] + mul w1, w28, w1 ldr x0, [x0,8] - sub w1, w1, w21 + sub w1, w1, w23 ubfiz x1, x1, 9, 23 - add x1, x24, x1 - b .L3150 -.L3101: - ldr w0, [x29,220] - ldrh w1, [x4,2024] - ldr w2, [x4,2080] - cbz w0, .L3114 - mul w1, w26, w1 - umull x0, w2, w5 - sub w1, w1, w21 - ldr x2, [x4,2088] + add x1, x26, x1 + b .L3338 +.L3286: + ldr w0, [x29,212] + ldrh w1, [x19,2030] + ldr w2, [x19,2080] + cbz w0, .L3299 + mul w1, w28, w1 + umull x0, w2, w4 + sub w1, w1, w23 + ldr x2, [x19,2088] ubfiz x1, x1, 9, 23 add x0, x2, x0 - add x1, x24, x1 -.L3148: + add x1, x26, x1 +.L3337: str x1, [x0,8] - b .L3108 -.L3114: - umull x0, w2, w5 - ldr x2, [x4,2088] - mul w1, w26, w1 + b .L3293 +.L3299: + umull x0, w2, w4 + ldr x2, [x19,2088] + mul w1, w28, w1 add x0, x2, x0 - sub w1, w1, w21 + ldrh w2, [x19,2034] + sub w1, w1, w23 ubfiz x1, x1, 9, 23 ldr x0, [x0,8] - add x1, x24, x1 -.L3149: - ldrh w2, [x4,2028] -.L3150: + add x1, x26, x1 +.L3338: bl ftl_memcpy -.L3108: - ldr x1, [x29,128] +.L3293: + ldr x1, [x29,120] mov w0, -3947 - ldr x2, [x29,136] + ldr x2, [x29,128] strh w0, [x1,x2] - add x1, x20, :lo12:.LANCHOR0 - str w26, [x28,8] - ldr w0, [x22,236] - str w0, [x28,4] + ldr x1, [x29,216] + ldr w0, [x24,236] + str w0, [x1,4] add w0, w0, 1 cmn w0, #1 + str w28, [x1,8] csel w0, w0, wzr, ne - str w0, [x22,236] + str w0, [x24,236] ldr w0, [x29,228] - str w0, [x28,12] - ldrh w0, [x19] - strh w0, [x28,2] + str w0, [x1,12] + ldrh w0, [x22] + strh w0, [x1,2] + add x1, x21, :lo12:.LANCHOR0 ldr w0, [x1,2080] add w0, w0, 1 str w0, [x1,2080] - ldr x0, [x29,208] + ldr x0, [x29,200] add x0, x0, 1 - str x0, [x29,208] - b .L3098 -.L3152: - str w26, [x29,200] + str x0, [x29,200] + b .L3283 +.L3340: + str w28, [x29,192] mov x0, x2 - b .L3099 -.L3128: - str w26, [x29,200] -.L3099: - sub w27, w27, w0 - ldr w0, [x29,220] - cbnz w0, .L3118 - add x0, x20, :lo12:.LANCHOR0 + b .L3284 +.L3315: + str w28, [x29,192] +.L3284: + sub w20, w20, w0 + ldr w0, [x29,212] + cbnz w0, .L3303 + add x0, x21, :lo12:.LANCHOR0 ldr w1, [x0,2080] - ldr w0, [x22,2044] + ldr w0, [x24,2044] cmp w1, w0 - bcs .L3118 - ldrh w0, [x19,4] - cbz w0, .L3118 -.L3120: - str wzr, [x29,220] - b .L3091 -.L3118: + bcs .L3303 + ldrh w0, [x22,4] + cbz w0, .L3303 +.L3305: + str wzr, [x29,212] + b .L3276 +.L3303: bl FtlCacheWriteBack - add x0, x20, :lo12:.LANCHOR0 - cmp w27, 1 + add x0, x21, :lo12:.LANCHOR0 + cmp w20, 1 str wzr, [x0,2080] - bhi .L3091 - b .L3120 -.L3151: - ldr w1, [x29,216] - mov w0, w27 - sub w1, w1, w25 + bhi .L3276 + b .L3305 +.L3339: + ldr w1, [x29,208] + mov w0, w20 + sub w1, w1, w27 bl ftl_do_gc ldr x0, [x29,176] add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,32] - cmp w1, 31 - bhi .L3122 - mov w1, 128 - mov w19, 16 - strh w1, [x0,850] - strh w1, [x0,848] -.L3123: + ldrh w0, [x0,32] + cmp w0, 5 + bls .L3307 + cmp w0, 31 + bhi .L3308 + add x21, x21, :lo12:.LANCHOR0 + ldrb w0, [x21,72] + cbnz w0, .L3308 +.L3307: + ldr x0, [x29,176] + mov w21, 65535 + mov w22, 128 + add x19, x0, :lo12:.LANCHOR2 +.L3330: + ldrh w0, [x19,280] + cmp w0, w21 + bne .L3309 + ldrh w0, [x19,936] + cmp w0, w21 + bne .L3309 + ldrh w0, [x19,938] + cmp w0, w21 + bne .L3309 + and w0, w20, 7 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3309: + mov w0, 1 + strh w22, [x19,850] + mov w1, w0 + strh w22, [x19,848] + bl ftl_do_gc mov w0, 0 mov w1, 1 bl ftl_do_gc - ldr x0, [x29,176] - add x0, x0, :lo12:.LANCHOR2 - ldr w0, [x0,-96] - cbnz w0, .L3122 - subs w19, w19, #1 - bne .L3123 - b .L3122 -.L3084: + ldr w0, [x19,-96] + cbnz w0, .L3308 + ldrh w0, [x19,32] + cmp w0, 2 + bhi .L3308 + add w20, w20, 1 + cmp w20, 256 + bne .L3330 + b .L3308 +.L3269: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -20510,20 +21341,28 @@ ftl_vendor_write: .global FlashBootVendorWrite .type FlashBootVendorWrite, %function FlashBootVendorWrite: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - str x0, [x29,24] - str x1, [x29,32] - str x2, [x29,40] - bl rknand_device_lock - ldr x1, [x29,32] - ldr x2, [x29,40] - ldr x0, [x29,24] - bl ftl_vendor_write + str x19, [sp,16] + mov w19, -1 str x0, [x29,40] - bl rknand_device_unlock + str x1, [x29,48] + str x2, [x29,56] + bl rknand_device_lock + adrp x3, .LANCHOR1+504 + ldr x2, [x29,56] + ldr x1, [x29,48] ldr x0, [x29,40] - ldp x29, x30, [sp], 48 + ldr w3, [x3,#:lo12:.LANCHOR1+504] + cmp w3, 1 + bne .L3343 + bl ftl_vendor_write + mov w19, w0 +.L3343: + bl rknand_device_unlock + mov w0, w19 + ldr x19, [sp,16] + ldp x29, x30, [sp], 64 ret .size FlashBootVendorWrite, .-FlashBootVendorWrite .align 2 @@ -20561,137 +21400,6 @@ StorageSysDataStore: ret .size StorageSysDataStore, .-StorageSysDataStore .align 2 - .global FtlCheckVpc - .type FtlCheckVpc, %function -FtlCheckVpc: - stp x29, x30, [sp, -96]! - adrp x1, .LANCHOR3 - adrp x0, .LC106 - add x1, x1, :lo12:.LANCHOR3 - add x29, sp, 0 - add x1, x1, 88 - add x0, x0, :lo12:.LC106 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR4 - adrp x22, .LANCHOR0 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - add x20, x21, :lo12:.LANCHOR4 - bl printk - add x0, x20, 480 - mov w1, 0 - mov x2, 8192 - mov w19, 0 - bl memset -.L3158: - add x24, x22, :lo12:.LANCHOR0 - adrp x23, .LANCHOR0 - ldr w0, [x24,2096] - cmp w19, w0 - bcs .L3175 - mov w0, w19 - add x1, x29, 92 - mov w2, 0 - bl log2phys - ldr w0, [x29,92] - cmn w0, #1 - beq .L3159 - lsr w0, w0, 10 - bl P2V_block_in_plane - uxth w0, w0 - add x2, x20, 480 - ldrh w1, [x2,w0,sxtw 1] - add w1, w1, 1 - strh w1, [x2,w0,sxtw 1] -.L3159: - add w19, w19, 1 - b .L3158 -.L3175: - adrp x20, .LANCHOR2 - ldrh w3, [x24,1956] - adrp x0, .LC155 - mov w2, 2 - add x0, x0, :lo12:.LC155 - add x22, x21, :lo12:.LANCHOR4 - ldr x1, [x20,#:lo12:.LANCHOR2] - mov w19, 0 - bl rknand_print_hex - ldrh w3, [x24,1956] - adrp x0, .LC156 - adrp x24, .LC157 - add x0, x0, :lo12:.LC156 - add x1, x22, 480 - mov w2, 2 - add x24, x24, :lo12:.LC157 - bl rknand_print_hex -.L3161: - add x0, x23, :lo12:.LANCHOR0 - ldrh w0, [x0,1956] - cmp w0, w19 - bls .L3176 - ubfiz x0, x19, 1, 16 - ldr x1, [x20,#:lo12:.LANCHOR2] - ldrh w2, [x1,x0] - add x0, x22, 480 - ldrh w3, [x0,w19,sxtw 1] - cmp w2, w3 - beq .L3162 - mov x0, x24 - mov w1, w19 - bl printk -.L3162: - add w19, w19, 1 - uxth w19, w19 - b .L3161 -.L3176: - add x1, x20, :lo12:.LANCHOR2 - ldr x0, [x1,24] - cbz x0, .L3157 - ldr x19, [x1,-16] - adrp x23, .LC158 - ldrh w24, [x1,32] - mov w22, 0 - sub x19, x0, x19 - mov x0, -6148914691236517206 - asr x19, x19, 1 - add x23, x23, :lo12:.LC158 - add x21, x21, :lo12:.LANCHOR4 - mov w25, 6 - madd x19, x0, x19, x19 - mov w26, 65535 - uxth w19, w19 -.L3165: - cmp w22, w24 - beq .L3157 - ubfiz x0, x19, 1, 16 - ldr x1, [x20,#:lo12:.LANCHOR2] - ldrh w2, [x1,x0] - cbz w2, .L3166 - add x3, x21, 480 - mov x0, x23 - mov w1, w19 - ldrh w3, [x3,w19,sxtw 1] - bl printk -.L3166: - add x0, x20, :lo12:.LANCHOR2 - umull x19, w19, w25 - ldr x0, [x0,-16] - ldrh w19, [x0,x19] - cmp w19, w26 - beq .L3157 - add w22, w22, 1 - uxth w22, w22 - b .L3165 -.L3157: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 96 - ret - .size FtlCheckVpc, .-FtlCheckVpc - .align 2 .global FtlDumpSysBlock .type FtlDumpSysBlock, %function FtlDumpSysBlock: @@ -20708,21 +21416,21 @@ FtlDumpSysBlock: add x0, x21, :lo12:.LANCHOR2 str x25, [sp,80] add x19, x19, 160 - adrp x22, .LC159 - adrp x24, .LC160 + adrp x22, .LC160 + adrp x24, .LC161 lsl w25, w23, 10 ldr x1, [x0,2072] mov w20, 0 ldr x0, [x0,2120] - add x22, x22, :lo12:.LC159 + add x22, x22, :lo12:.LC160 str x1, [x19,8] - add x24, x24, :lo12:.LC160 + add x24, x24, :lo12:.LC161 str x0, [x19,16] -.L3178: - adrp x0, .LANCHOR0+2020 - ldrh w0, [x0,#:lo12:.LANCHOR0+2020] +.L3348: + adrp x0, .LANCHOR0+2026 + ldrh w0, [x0,#:lo12:.LANCHOR0+2026] cmp w20, w0 - bge .L3184 + bge .L3354 mov w1, 1 orr w0, w20, w25 mov w2, w1 @@ -20745,18 +21453,18 @@ FtlDumpSysBlock: ldr x0, [x19,16] ldr w0, [x0] cmn w0, #1 - beq .L3179 + beq .L3349 add x1, x21, :lo12:.LANCHOR2 mov x0, x24 mov w2, 4 mov w3, 768 ldr x1, [x1,2072] bl rknand_print_hex -.L3179: +.L3349: add w20, w20, 1 sxth w20, w20 - b .L3178 -.L3184: + b .L3348 +.L3354: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -20780,26 +21488,26 @@ dump_map_info: stp x25, x26, [sp,80] stp x21, x22, [sp,48] stp x27, x28, [sp,96] - adrp x23, .LC161 + adrp x23, .LC162 mov w25, 56 - ldrh w21, [x0,1956] + ldrh w21, [x0,1964] adrp x24, .LANCHOR2 mov w26, 4 - add x23, x23, :lo12:.LC161 -.L3186: + add x23, x23, :lo12:.LC162 +.L3356: add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x2,1958] + ldrh w0, [x2,1966] cmp w0, w21 - bls .L3199 + bls .L3369 mov x22, 0 - ldrh w5, [x2,1948] - ldrh w4, [x2,2030] + ldrh w5, [x2,1956] + ldrh w4, [x2,2036] mov w27, w22 mov x20, x2 -.L3195: +.L3365: cmp w5, w22, uxth - bls .L3200 - add x0, x20, 1976 + bls .L3370 + add x0, x20, 1984 mov w1, w21 str x4, [x29,96] str x5, [x29,104] @@ -20809,7 +21517,7 @@ dump_map_info: bl FtlBbmIsBadBlock ldr x5, [x29,104] ldr x4, [x29,96] - cbnz w0, .L3187 + cbnz w0, .L3357 add x3, x24, :lo12:.LANCHOR2 lsl w28, w28, 10 umull x0, w27, w25 @@ -20827,11 +21535,11 @@ dump_map_info: ldr x1, [x3,888] add x2, x1, x2, sxtw 2 str x2, [x0,16] -.L3187: +.L3357: add x22, x22, 1 - b .L3195 -.L3200: - cbz w27, .L3190 + b .L3365 +.L3370: + cbz w27, .L3360 add x0, x24, :lo12:.LANCHOR2 mov w1, w27 mov w2, 1 @@ -20840,9 +21548,9 @@ dump_map_info: mov x28, 56 ldr x0, [x0,2048] bl FlashReadPages -.L3191: +.L3361: cmp w27, w20, uxth - bls .L3190 + bls .L3360 add x0, x22, :lo12:.LANCHOR2 ldr x3, [x0,2048] madd x3, x20, x28, x3 @@ -20860,12 +21568,12 @@ dump_map_info: ldr w7, [x7] ldr w6, [x6,12] bl printk - b .L3191 -.L3190: + b .L3361 +.L3360: add w21, w21, 1 uxth w21, w21 - b .L3186 -.L3199: + b .L3356 +.L3369: adrp x20, .LANCHOR4 adrp x23, .LC109 add x20, x20, :lo12:.LANCHOR4 @@ -20873,19 +21581,19 @@ dump_map_info: adrp x27, .LANCHOR2 add x20, x20, 160 add x23, x23, :lo12:.LC109 -.L3194: +.L3364: add x21, x27, :lo12:.LANCHOR2 adrp x26, .LANCHOR2 ldrh w0, [x21,2320] cmp w22, w0 - bge .L3197 + bge .L3367 sbfiz x24, x22, 1, 32 mov w21, 0 -.L3198: +.L3368: add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,2020] + ldrh w0, [x0,2026] cmp w21, w0 - bge .L3201 + bge .L3371 add x25, x26, :lo12:.LANCHOR2 mov w1, 1 mov w2, w1 @@ -20913,29 +21621,29 @@ dump_map_info: ldr w3, [x20,4] ldr w7, [x7,12] bl printk - b .L3198 -.L3201: + b .L3368 +.L3371: add w22, w22, 1 sxth w22, w22 - b .L3194 -.L3197: + b .L3364 +.L3367: add x19, x19, :lo12:.LANCHOR0 ldr x1, [x21,2176] - adrp x0, .LC162 + adrp x0, .LC163 mov w2, 2 - add x0, x0, :lo12:.LC162 - ldr w3, [x19,2048] + add x0, x0, :lo12:.LC163 + ldr w3, [x19,2052] bl rknand_print_hex ldr x1, [x21,2216] - adrp x0, .LC163 - ldrh w3, [x19,2056] - add x0, x0, :lo12:.LC163 + adrp x0, .LC164 + ldrh w3, [x19,2060] + add x0, x0, :lo12:.LC164 mov w2, 4 bl rknand_print_hex ldr x1, [x21,2224] - adrp x0, .LC164 - ldrh w3, [x19,2056] - add x0, x0, :lo12:.LC164 + adrp x0, .LC165 + ldrh w3, [x19,2060] + add x0, x0, :lo12:.LC165 mov w2, 4 bl rknand_print_hex sub sp, x29, #16 @@ -20952,17 +21660,17 @@ dump_map_info: .global flash_boot_enter_slc_mode .type flash_boot_enter_slc_mode, %function flash_boot_enter_slc_mode: - adrp x1, .LANCHOR0+1856 + adrp x1, .LANCHOR0+1872 uxtb w0, w0 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w2, [x1,#:lo12:.LANCHOR0+1856] + ldr w2, [x1,#:lo12:.LANCHOR0+1872] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 - bne .L3202 + bne .L3372 bl flash_enter_slc_mode -.L3202: +.L3372: ldp x29, x30, [sp], 16 ret .size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode @@ -20970,17 +21678,17 @@ flash_boot_enter_slc_mode: .global flash_boot_exit_slc_mode .type flash_boot_exit_slc_mode, %function flash_boot_exit_slc_mode: - adrp x1, .LANCHOR0+1856 + adrp x1, .LANCHOR0+1872 uxtb w0, w0 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w2, [x1,#:lo12:.LANCHOR0+1856] + ldr w2, [x1,#:lo12:.LANCHOR0+1872] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 - bne .L3204 + bne .L3374 bl flash_exit_slc_mode -.L3204: +.L3374: ldp x29, x30, [sp], 16 ret .size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode @@ -20998,50 +21706,50 @@ IdBlockReadData: stp x25, x26, [sp,64] stp x21, x22, [sp,32] stp x27, x28, [sp,80] + ldr w20, [x19,76] mov w26, w1 - mov x21, x2 ldrb w27, [x0,9] + adrp x0, .LC166 + mov x21, x2 + add x0, x0, :lo12:.LC166 mov w1, w23 - ldrh w20, [x0,10] - adrp x0, .LC165 - add x0, x0, :lo12:.LC165 mov w2, w26 - mov w25, 0 - mul w20, w27, w20 + mul w20, w20, w27 bl printk - mov w6, 4 - adrp x7, .LANCHOR4 + mov w25, 0 + mov w5, 4 + adrp x6, .LANCHOR4 uxth w20, w20 udiv w24, w23, w20 msub w24, w24, w20, w23 sub w28, w23, w24 mul w3, w24, w27 ubfx x3, x3, 2, 2 -.L3207: +.L3377: cmp w25, w26 - bcs .L3213 - add w5, w25, w24 - add x0, x19, 196 - ubfx x5, x5, 2, 16 - sub w20, w6, w3 + bcs .L3383 + add w0, w25, w24 + add x1, x19, 200 + ubfx x0, x0, 2, 16 + sub w20, w5, w3 uxth w20, w20 - ldrh w4, [x0,w5,sxtw 1] - ldrb w0, [x19,120] - cbz w0, .L3208 - ldr w1, [x19,1856] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - csel w4, w4, w5, ne -.L3208: + ldrh w4, [x1,w0,sxtw 1] + ldrb w1, [x19,196] + cbz w1, .L3378 + ldr w2, [x19,1872] + mov w1, 12336 + movk w1, 0x5638, lsl 16 + cmp w2, w1 + csel w4, w4, w0, ne +.L3378: ldr x0, [x19,744] add w3, w3, w28 - str x6, [x29,96] + str x5, [x29,96] madd w22, w4, w27, w3 ldrb w1, [x0,9] - add x0, x7, :lo12:.LANCHOR4 - ldrb w4, [x19,1936] - str x7, [x29,120] + add x0, x6, :lo12:.LANCHOR4 + ldrb w4, [x19,1944] + str x6, [x29,120] ldrb w0, [x0,98] str x4, [x29,112] str x1, [x29,104] @@ -21064,15 +21772,15 @@ IdBlockReadData: add x21, x21, x0 mov w3, 0 uxth w25, w20 - ldr x6, [x29,96] - ldr x7, [x29,120] - b .L3207 -.L3213: - adrp x0, .LC166 + ldr x5, [x29,96] + ldr x6, [x29,120] + b .L3377 +.L3383: + adrp x0, .LC167 mov w1, w23 mov w2, w26 mov w3, 0 - add x0, x0, :lo12:.LC166 + add x0, x0, :lo12:.LC167 bl printk mov w0, 0 ldp x19, x20, [sp,16] @@ -21100,127 +21808,128 @@ write_idblock: stp x27, x28, [sp,80] mov x22, x1 mov x28, x24 - ldr x0, [x0,744] - ldrb w21, [x0,9] - ldrh w20, [x0,10] + ldr x1, [x0,744] + ldr w21, [x0,76] mov w0, 59392 movk w0, 0x3, lsl 16 + ldrb w20, [x1,9] bl ftl_malloc mov x26, x0 mov w0, -1 - cbz x26, .L3252 + cbz x26, .L3422 add w19, w19, 511 lsr w19, w19, 9 cmp w19, 8 - bls .L3236 + bls .L3406 cmp w19, 500 - bhi .L3252 - b .L3216 -.L3236: + bhi .L3422 + b .L3386 +.L3406: mov w19, 8 -.L3216: +.L3386: ldr w2, [x22] mov w1, 35899 movk w1, 0xfcdc, lsl 16 mov w0, -1 cmp w2, w1 - bne .L3252 + bne .L3422 mul w21, w20, w21 - add x3, x22, 253952 - mov w2, 63999 - add x3, x3, 2044 + mov w3, 0 + mov w2, 63871 mov w4, 4097 uxth w21, w21 add w0, w21, w0 add w0, w0, w19 udiv w0, w0, w21 str w0, [x29,224] - mov w0, 0 -.L3220: - ldr w1, [x3] - cbnz w1, .L3217 - ldr w1, [x22,w0,uxtw 2] - add w0, w0, 1 - cmp w0, w4 + add x0, x22, 253952 + add x0, x0, 1532 +.L3390: + ldr w1, [x0] + cbnz w1, .L3387 + ldr w1, [x22,w3,uxtw 2] + add w3, w3, 1 + cmp w3, w4 sub w2, w2, #1 - csel w0, w0, wzr, cc - str w1, [x3],-4 + str w1, [x0,512] + csel w3, w3, wzr, cc cmp w2, 4096 - bne .L3220 - b .L3219 -.L3217: - adrp x0, .LC167 - add x0, x0, :lo12:.LC167 - bl printk -.L3219: + sub x0, x0, #4 + bne .L3390 + b .L3389 +.L3387: adrp x0, .LC168 + add x0, x0, :lo12:.LC168 + bl printk +.L3389: + adrp x0, .LC169 mov w3, 5 add x20, x28, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC168 + add x0, x0, :lo12:.LC169 mov x1, x23 mov w2, 4 adrp x24, .LANCHOR4 bl rknand_print_hex ldr w1, [x22,512] - adrp x0, .LC169 - ldrb w2, [x20,9] - add x0, x0, :lo12:.LC169 + adrp x0, .LC170 + ldrb w2, [x20,73] + add x0, x0, :lo12:.LC170 bl printk add x4, x24, :lo12:.LANCHOR4 - adrp x0, .LC170 + adrp x0, .LC171 ldrh w3, [x20,194] mov w1, w19 - add x0, x0, :lo12:.LC170 + add x0, x0, :lo12:.LC171 mov w2, w19 ldr w4, [x4,92] bl printk str x24, [x29,208] - ldrb w0, [x20,9] + ldrb w0, [x20,73] ldr w1, [x22,512] cmp w1, w0 - bls .L3221 + bls .L3391 str w0, [x22,512] -.L3221: +.L3391: lsl w0, w19, 7 str w0, [x29,204] - adrp x0, .LC171 - mov x20, 0 - add x0, x0, :lo12:.LC171 - str x0, [x29,192] adrp x0, .LC172 - str w20, [x29,236] + mov x20, 0 add x0, x0, :lo12:.LC172 - str x0, [x29,184] + str x0, [x29,192] adrp x0, .LC173 + str w20, [x29,236] add x0, x0, :lo12:.LC173 + str x0, [x29,184] + adrp x0, .LC174 + add x0, x0, :lo12:.LC174 str x0, [x29,176] -.L3234: +.L3404: add x0, x28, :lo12:.LANCHOR0 ldr w1, [x23,x20,lsl 2] str w20, [x29,232] - ldrb w0, [x0,9] + ldrb w0, [x0,73] cmp w1, w0 - bcs .L3222 + bcs .L3392 ldr x0, [x29,208] add x0, x0, :lo12:.LANCHOR4 ldr w0, [x0,92] cmp w1, w0 - bcc .L3222 + bcc .L3392 ldr w0, [x29,224] cmp w0, 1 cset w0, hi str w0, [x29,228] uxtw x0, w20 - cbz w0, .L3223 + cbz w0, .L3393 ldr w0, [x29,228] - cbz w0, .L3223 + cbz w0, .L3393 uxtw x0, w20 sub w0, w0, #1 ldr w0, [x23,x0,lsl 2] add w0, w0, 1 cmp w1, w0 - beq .L3222 -.L3223: + beq .L3392 +.L3393: mov w1, 0 mov x2, 512 mov x0, x26 @@ -21229,29 +21938,29 @@ write_idblock: add x0, x28, :lo12:.LANCHOR0 mov w2, w19 mul w24, w21, w24 - ldr x0, [x0,744] - mov w1, w24 - ldrb w27, [x0,9] - ldrh w25, [x0,10] + ldr x1, [x0,744] + ldr w25, [x0,76] ldr x0, [x29,192] - mul w25, w27, w25 + ldrb w27, [x1,9] + mov w1, w24 bl printk mov w0, 0 - uxth w25, w25 + mul w25, w25, w27 bl flash_boot_enter_slc_mode udiv w1, w24, w27 mov w2, 0 mov w0, 0 + uxth w25, w25 bl FlashEraseBlock cmp w19, w25 mov w2, 1 - bls .L3224 + bls .L3394 mov w2, 0 mov w0, 0 add w1, w24, w25 bl FlashEraseBlock mov w2, 2 -.L3224: +.L3394: mov w0, 0 str x2, [x29,216] bl flash_boot_exit_slc_mode @@ -21271,42 +21980,42 @@ write_idblock: sdiv w5, w0, w5 sub w0, w24, w8 str w0, [x29,216] -.L3225: +.L3395: cmp w6, w5 - bcs .L3263 + bcs .L3433 add w0, w6, w8 lsr w0, w0, 2 uxth w1, w0 and w0, w0, 65535 - cbz w1, .L3226 + cbz w1, .L3396 add w2, w0, 1 - add x1, x4, 196 - ldrb w3, [x4,120] + add x1, x4, 200 + ldrb w3, [x4,196] ldrh w1, [x1,w2,sxtw 1] - cbz w3, .L3227 - ldr w7, [x4,1856] + cbz w3, .L3397 + ldr w7, [x4,1872] mov w3, 12336 movk w3, 0x5638, lsl 16 cmp w7, w3 csel w1, w1, w2, ne -.L3227: +.L3397: add w1, w1, w10 lsl w1, w1, 2 str w1, [x29,240] -.L3226: - add x1, x4, 196 +.L3396: + add x1, x4, 200 str w11, [x29,244] ldrh w7, [x1,w0,sxtw 1] - ldrb w1, [x4,120] - cbz w1, .L3228 - ldr w2, [x4,1856] + ldrb w1, [x4,196] + cbz w1, .L3398 + ldr w2, [x4,1872] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 csel w7, w7, w0, ne -.L3228: +.L3398: ldr w0, [x29,216] - ldrb w12, [x4,1936] + ldrb w12, [x4,1944] str x11, [x29,104] madd w2, w7, w27, w0 ldr x0, [x29,208] @@ -21352,8 +22061,8 @@ write_idblock: uxth w6, w6 ldr x5, [x29,136] ldr x4, [x29,168] - b .L3225 -.L3263: + b .L3395 +.L3433: ldr x0, [x29,184] mov w1, w24 mov w2, w19 @@ -21367,11 +22076,11 @@ write_idblock: mov x2, x26 mov x1, x22 mov x0, 0 -.L3230: +.L3400: ldr w4, [x29,204] mov w3, w0 cmp w0, w4 - bcs .L3264 + bcs .L3434 mov x27, x2 mov x25, x1 mov x24, x0 @@ -21381,7 +22090,7 @@ write_idblock: ldr w5, [x27] ldr w4, [x25] cmp w5, w4 - beq .L3230 + beq .L3400 mov w1, 0 mov x2, 512 mov x0, x26 @@ -21396,17 +22105,17 @@ write_idblock: ldr x3, [x29,216] ldr x0, [x29,176] bl printk - adrp x0, .LC174 + adrp x0, .LC175 add x1, x22, x24 - add x0, x0, :lo12:.LC174 + add x0, x0, :lo12:.LC175 mov w2, 4 mov w3, 256 bl rknand_print_hex - adrp x0, .LC175 + adrp x0, .LC176 add x1, x26, x24 mov w2, 4 mov w3, 256 - add x0, x0, :lo12:.LC175 + add x0, x0, :lo12:.LC176 bl rknand_print_hex mov w0, 0 bl flash_boot_enter_slc_mode @@ -21416,34 +22125,34 @@ write_idblock: mul w1, w21, w1 bl FlashEraseBlock ldr w0, [x29,228] - cbz w0, .L3231 + cbz w0, .L3401 ldr w1, [x23,x20,lsl 2] mov w0, 0 mov w2, 0 madd w1, w1, w21, w21 bl FlashEraseBlock -.L3231: +.L3401: mov w0, 0 bl flash_boot_exit_slc_mode - adrp x0, .LC176 + adrp x0, .LC177 ldr w1, [x23,x20,lsl 2] - add x0, x0, :lo12:.LC176 + add x0, x0, :lo12:.LC177 bl printk - b .L3222 -.L3264: + b .L3392 +.L3434: ldr w0, [x29,236] add w0, w0, 1 str w0, [x29,236] -.L3222: +.L3392: add x20, x20, 1 cmp x20, 5 - bne .L3234 + bne .L3404 mov x0, x26 bl ftl_free ldr w0, [x29,236] cmp w0, wzr csetm w0, eq -.L3252: +.L3422: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -21461,39 +22170,39 @@ CRC_32: mov x5, x0 add x3, x3, :lo12:.LANCHOR1 mov w0, w2 -.L3266: +.L3436: cmp w1, w2 - bls .L3268 + bls .L3438 ldrb w4, [x5,x2] - add x6, x3, 3176 + add x6, x3, 3304 add x2, x2, 1 eor w4, w4, w0, lsr 24 ldr w4, [x6,w4,uxtw 2] eor w0, w4, w0, lsl 8 - b .L3266 -.L3268: + b .L3436 +.L3438: ret .size CRC_32, .-CRC_32 .align 2 .global write_loader_lba .type write_loader_lba, %function write_loader_lba: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! cmp w0, 64 add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - str x23, [sp,48] + stp x23, x24, [sp,48] mov w19, w0 mov w21, w1 - mov x23, x2 + mov x24, x2 adrp x20, .LANCHOR5 - bne .L3270 + bne .L3440 ldr w1, [x2] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 - bne .L3270 + bne .L3440 add x22, x20, :lo12:.LANCHOR5 mov w0, 1 strb w0, [x22,-32] @@ -21506,46 +22215,53 @@ write_loader_lba: movk w2, 0x3, lsl 16 bl ftl_memset str w19, [x22,-16] -.L3270: - add x3, x20, :lo12:.LANCHOR5 - ldrb w0, [x3,-32] - cbz w0, .L3269 +.L3440: + add x23, x20, :lo12:.LANCHOR5 + adrp x0, .LC178 + ldr w2, [x24] + add x0, x0, :lo12:.LC178 + mov w3, w19 + mov w4, w21 + ldr x1, [x23,-24] + bl printk + ldrb w0, [x23,-32] + cbz w0, .L3439 sub w0, w19, #64 - ldr x22, [x3,-24] + ldr x22, [x23,-24] cmp w0, 499 - bhi .L3272 + bhi .L3442 mov w3, 564 ubfiz x0, x0, 9, 25 sub w3, w3, w19 add x0, x22, x0 cmp w3, w21 - mov x1, x23 + mov x1, x24 csel w2, w3, w21, ls lsl w2, w2, 9 bl ftl_memcpy - b .L3273 -.L3272: + b .L3443 +.L3442: cmp w19, 563 - bhi .L3283 -.L3273: + bhi .L3453 +.L3443: add x0, x20, :lo12:.LANCHOR5 ldr w1, [x0,-16] cmp w1, w19 - beq .L3281 + beq .L3451 strb wzr, [x0,-32] - cbz x22, .L3282 + cbz x22, .L3452 mov x0, x22 bl ftl_free -.L3282: +.L3452: add x0, x20, :lo12:.LANCHOR5 str xzr, [x0,-24] -.L3281: +.L3451: add x20, x20, :lo12:.LANCHOR5 add w19, w19, w21 str w19, [x20,-16] - b .L3269 -.L3283: - ldr w2, [x3,-16] + b .L3439 +.L3453: + ldr w2, [x23,-16] mov w0, 500 sub w2, w2, #64 cmp w2, 500 @@ -21554,66 +22270,64 @@ write_loader_lba: ldr x0, [x0,#:lo12:.LANCHOR0+744] ldrb w0, [x0,9] cmp w0, 4 - beq .L3284 + beq .L3454 mov w0, 2 - str w0, [x29,64] - mov w0, 3 - str w0, [x29,68] - mov w0, 4 str w0, [x29,72] - mov w0, 5 + mov w0, 3 str w0, [x29,76] - mov w0, 6 + mov w0, 4 str w0, [x29,80] - b .L3275 -.L3284: + mov w0, 5 + str w0, [x29,84] + mov w0, 6 + str w0, [x29,88] + b .L3445 +.L3454: mov x3, 0 -.L3274: +.L3444: cmp w2, 256 - add x0, x29, 64 - bls .L3276 + add x0, x29, 72 + bls .L3446 lsl w1, w3, 1 str w1, [x0,x3,lsl 2] - b .L3277 -.L3276: + b .L3447 +.L3446: str w3, [x0,x3,lsl 2] -.L3277: +.L3447: add x3, x3, 1 cmp x3, 5 - bne .L3274 -.L3275: - add x0, x20, :lo12:.LANCHOR5 - mov w4, 63999 - ldr x3, [x0,-8] - add x3, x3, 61440 - add x3, x3, 2559 -.L3280: - ldrb w0, [x3] - cbz w0, .L3278 - add w2, w4, 1 - lsl w0, w2, 2 - b .L3279 -.L3278: - sub w4, w4, #1 - sub x3, x3, #1 - cmp w4, 4096 - bne .L3280 + bne .L3444 +.L3445: + add x0, x22, 253952 + mov w3, 63872 + add x0, x0, 1536 +.L3450: + ldr w1, [x0] + cbz w1, .L3448 + add w3, w3, 128 + lsl w0, w3, 2 + b .L3449 +.L3448: + sub w3, w3, #1 + sub x0, x0, #4 + cmp w3, 4096 + bne .L3450 lsl w0, w2, 9 -.L3279: +.L3449: mov x1, x22 - add x2, x29, 64 + add x2, x29, 72 add x22, x20, :lo12:.LANCHOR5 bl write_idblock ldr x0, [x22,-24] strb wzr, [x22,-32] bl ftl_free str xzr, [x22,-24] - b .L3281 -.L3269: + b .L3451 +.L3439: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 96 + ldp x23, x24, [sp,48] + ldp x29, x30, [sp], 112 ret .size write_loader_lba, .-write_loader_lba .align 2 @@ -21629,15 +22343,15 @@ FtlWrite: cmp w0, 1983 mov w19, w1 mov w20, w2 - bhi .L3294 - cbnz w21, .L3294 + bhi .L3464 + cbnz w21, .L3464 mov w0, w1 mov w1, w2 mov x2, x3 str x3, [x29,56] bl write_loader_lba ldr x3, [x29,56] -.L3294: +.L3464: mov w1, w19 mov w2, w20 mov w0, w21 @@ -21661,146 +22375,146 @@ rknand_sys_storage_ioctl: stp x21, x22, [sp,32] mov w19, w1 mov x20, x2 - beq .L3303 + beq .L3473 mov w0, 29187 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3304 + bhi .L3474 mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3305 + beq .L3475 mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3306 + bhi .L3476 mov w0, 25601 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3307 + beq .L3477 mov w0, 25601 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3308 + bhi .L3478 mov w0, 25364 movk w0, 0x4004, lsl 16 cmp w1, w0 - bne .L3365 + bne .L3535 bl rknand_dev_flush - b .L3399 -.L3308: + b .L3569 +.L3478: mov w0, 25602 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3310 + beq .L3480 mov w0, 25603 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3311 - b .L3365 -.L3306: + beq .L3481 + b .L3535 +.L3476: mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3312 + beq .L3482 mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3313 + bhi .L3483 mov w0, 25727 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3314 - b .L3365 -.L3313: + beq .L3484 + b .L3535 +.L3483: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3312 + beq .L3482 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3312 - b .L3365 -.L3304: + beq .L3482 + b .L3535 +.L3474: mov w0, 29267 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3315 + beq .L3485 mov w0, 29267 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3316 + bhi .L3486 mov w0, 29189 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3317 + beq .L3487 mov w0, 29189 movk w0, 0x4004, lsl 16 cmp w1, w0 - bcc .L3318 + bcc .L3488 mov w0, 29210 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3319 + beq .L3489 mov w0, 29266 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3320 - b .L3365 -.L3316: + beq .L3490 + b .L3535 +.L3486: mov w0, 30225 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3321 + beq .L3491 mov w0, 30225 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3322 + bhi .L3492 mov w0, 29268 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3323 + beq .L3493 mov w0, 30224 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3324 - b .L3365 -.L3322: + beq .L3494 + b .L3535 +.L3492: mov w0, 30226 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3324 + beq .L3494 mov w0, 30227 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3321 - b .L3365 -.L3318: - adrp x0, .LC177 - add x0, x0, :lo12:.LC177 + beq .L3491 + b .L3535 +.L3488: + adrp x0, .LC179 + add x0, x0, :lo12:.LC179 bl printk mov w0, 4096 bl ftl_malloc mov x19, x0 - cbnz x0, .L3325 -.L3330: + cbnz x0, .L3495 +.L3500: mov x0, -12 - b .L3302 -.L3325: + b .L3472 +.L3495: mov x1, x20 mov x2, 512 bl rk_copy_from_user - cbnz x0, .L3406 - adrp x0, .LC179 + cbnz x0, .L3576 + adrp x0, .LC181 ldr w1, [x19] ldr w2, [x19,4] - add x0, x0, :lo12:.LC179 + add x0, x0, :lo12:.LC181 bl printk ldr w0, [x19,4] str w0, [x29,52] cmp w0, 8 - bhi .L3403 + bhi .L3573 bl rknand_device_lock ldr w1, [x29,52] mov x2, x19 @@ -21812,106 +22526,106 @@ rknand_sys_storage_ioctl: mov x1, x19 ubfiz x2, x2, 9, 23 bl rk_copy_to_user - cbz x0, .L3409 - adrp x0, .LC180 - add x0, x0, :lo12:.LC180 -.L3401: - bl printk -.L3403: - mov x0, x19 -.L3404: - bl ftl_free -.L3402: - mov x0, -14 - b .L3302 -.L3317: - adrp x0, .LC181 - add x0, x0, :lo12:.LC181 - bl printk - mov w0, 4096 - bl ftl_malloc - mov x19, x0 - cbz x0, .L3330 - mov x1, x20 - mov x2, 4096 - bl rk_copy_from_user - cbnz x0, .L3406 + cbz x0, .L3579 adrp x0, .LC182 - ldr w1, [x19] - ldr w2, [x19,4] add x0, x0, :lo12:.LC182 +.L3571: bl printk - adrp x0, .LANCHOR5 - add x22, x0, :lo12:.LANCHOR5 - mov x20, x0 - ldr x21, [x22,-8] - cbnz x21, .L3332 - mov w0, 260096 - bl ftl_malloc - str x0, [x22,-8] - cbz x0, .L3403 - mov w1, w21 - mov x2, 260096 - bl memset -.L3332: - ldr w2, [x19,4] - cmp w2, 4088 - bhi .L3403 - ldr w0, [x19] - mov w1, 55296 - movk w1, 0x3, lsl 16 - cmp w0, w1 - bhi .L3403 - add x20, x20, :lo12:.LANCHOR5 - uxtw x2, w2 - ldr x1, [x20,-8] - add x0, x1, x0, uxtw - add x1, x19, 8 - bl memcpy -.L3409: +.L3573: mov x0, x19 +.L3574: bl ftl_free - b .L3399 -.L3320: +.L3572: + mov x0, -14 + b .L3472 +.L3487: adrp x0, .LC183 add x0, x0, :lo12:.LC183 bl printk mov w0, 4096 bl ftl_malloc mov x19, x0 - cbz x0, .L3330 + cbz x0, .L3500 + mov x1, x20 + mov x2, 4096 + bl rk_copy_from_user + cbnz x0, .L3576 + adrp x0, .LC184 + ldr w1, [x19] + ldr w2, [x19,4] + add x0, x0, :lo12:.LC184 + bl printk + adrp x0, .LANCHOR5 + add x22, x0, :lo12:.LANCHOR5 + mov x20, x0 + ldr x21, [x22,-8] + cbnz x21, .L3502 + mov w0, 260096 + bl ftl_malloc + str x0, [x22,-8] + cbz x0, .L3573 + mov w1, w21 + mov x2, 260096 + bl memset +.L3502: + ldr w2, [x19,4] + cmp w2, 4088 + bhi .L3573 + ldr w0, [x19] + mov w1, 55296 + movk w1, 0x3, lsl 16 + cmp w0, w1 + bhi .L3573 + add x20, x20, :lo12:.LANCHOR5 + uxtw x2, w2 + ldr x1, [x20,-8] + add x0, x1, x0, uxtw + add x1, x19, 8 + bl memcpy +.L3579: + mov x0, x19 + bl ftl_free + b .L3569 +.L3490: + adrp x0, .LC185 + add x0, x0, :lo12:.LC185 + bl printk + mov w0, 4096 + bl ftl_malloc + mov x19, x0 + cbz x0, .L3500 mov x1, x20 mov x2, 28 bl rk_copy_from_user - cbz x0, .L3335 -.L3406: - adrp x0, .LC178 - add x0, x0, :lo12:.LC178 - b .L3401 -.L3335: + cbz x0, .L3505 +.L3576: + adrp x0, .LC180 + add x0, x0, :lo12:.LC180 + b .L3571 +.L3505: ldr w1, [x19] - adrp x0, .LC184 + adrp x0, .LC186 ldr w2, [x19,4] - add x0, x0, :lo12:.LC184 + add x0, x0, :lo12:.LC186 bl printk ldr w1, [x19] mov w0, 59392 movk w0, 0x3, lsl 16 cmp w1, w0 - bhi .L3403 + bhi .L3573 adrp x20, .LANCHOR5 add x20, x20, :lo12:.LANCHOR5 ldr x0, [x20,-8] - cbz x0, .L3403 + cbz x0, .L3573 bl CRC_32 ldr w1, [x19,4] cmp w1, w0 - beq .L3338 + beq .L3508 mov x0, x19 bl ftl_free mov x0, -2 - b .L3302 -.L3338: + b .L3472 +.L3508: bl rknand_device_lock ldr x1, [x20,-8] add x2, x19, 8 @@ -21921,39 +22635,39 @@ rknand_sys_storage_ioctl: ldr x0, [x20,-8] bl ftl_free str xzr, [x20,-8] - b .L3409 -.L3319: - adrp x0, .LC185 - add x0, x0, :lo12:.LC185 + b .L3579 +.L3489: + adrp x0, .LC187 + add x0, x0, :lo12:.LC187 bl printk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3330 + cbz x0, .L3500 bl ftl_read_flash_info mov x0, x20 mov x1, x21 mov x2, 11 - b .L3411 -.L3303: - adrp x0, .LC186 - add x0, x0, :lo12:.LC186 + b .L3581 +.L3473: + adrp x0, .LC188 + add x0, x0, :lo12:.LC188 bl printk bl nand_blk_add_whole_disk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3330 + cbz x0, .L3500 mov w1, 0 mov w2, 64 bl ftl_memset mov x0, x20 mov x1, x21 mov x2, 64 - b .L3411 -.L3315: - adrp x0, .LC187 - add x0, x0, :lo12:.LC187 + b .L3581 +.L3485: + adrp x0, .LC189 + add x0, x0, :lo12:.LC189 bl printk adrp x0, .LANCHOR5 add x1, x29, 52 @@ -21962,62 +22676,63 @@ rknand_sys_storage_ioctl: ldr w0, [x0,20] str w0, [x29,52] mov x0, x20 -.L3394: +.L3564: bl rk_copy_to_user - cbnz x0, .L3402 - b .L3399 -.L3323: - adrp x0, .LC188 - add x0, x0, :lo12:.LC188 + cbnz x0, .L3572 + b .L3569 +.L3493: + adrp x0, .LC190 + add x0, x0, :lo12:.LC190 bl printk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3330 + cbz x0, .L3500 bl rknand_device_lock - mov w1, 2 - mov x2, x21 - mov w0, 520 - bl FtlVendorPartRead + mov w1, 264 + mov w2, 2 + mov x3, x21 + mov w0, 16 + bl ftl_read bl rknand_device_unlock mov x0, x20 mov x1, x21 mov x2, 1024 -.L3411: +.L3581: bl rk_copy_to_user mov x19, x0 mov x0, x21 - cbnz x19, .L3404 + cbnz x19, .L3574 bl ftl_free - b .L3329 -.L3307: - adrp x0, .LC189 - add x0, x0, :lo12:.LC189 + b .L3499 +.L3477: + adrp x0, .LC191 + add x0, x0, :lo12:.LC191 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user mov x19, x0 - cbz x0, .L3343 -.L3348: - adrp x0, .LC178 - add x0, x0, :lo12:.LC178 + cbz x0, .L3513 +.L3518: + adrp x0, .LC180 + add x0, x0, :lo12:.LC180 bl printk - b .L3402 -.L3343: + b .L3572 +.L3513: ldr w1, [x29,56] mov w0, 21060 movk w0, 0x4b4d, lsl 16 cmp w1, w0 - beq .L3344 -.L3345: + beq .L3514 +.L3515: mov x19, -1 - b .L3329 -.L3344: + b .L3499 +.L3514: ldr w0, [x29,60] cmp w0, 512 - bhi .L3345 + bhi .L3515 adrp x1, .LANCHOR5 add x0, x29, 56 add x21, x1, :lo12:.LANCHOR5 @@ -22028,37 +22743,37 @@ rknand_sys_storage_ioctl: mov w0, 5161 movk w0, 0xc059, lsl 16 cmp w1, w0 - beq .L3346 + beq .L3516 add x0, x29, 120 mov w1, w19 mov x2, 128 str w19, [x29,64] str w19, [x29,68] bl memset -.L3346: +.L3516: add x0, x29, 312 mov w1, 0 mov x2, 256 str wzr, [x29,72] bl memset - b .L3408 -.L3310: - adrp x0, .LC190 - add x0, x0, :lo12:.LC190 + b .L3578 +.L3480: + adrp x0, .LC192 + add x0, x0, :lo12:.LC192 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 21060 movk w0, 0x4b4d, lsl 16 cmp w1, w0 - bne .L3345 + bne .L3515 ldr w0, [x29,60] cmp w0, 512 - bhi .L3345 + bhi .L3515 adrp x2, .LANCHOR5 mov w1, 5161 add x0, x2, :lo12:.LANCHOR5 @@ -22066,12 +22781,12 @@ rknand_sys_storage_ioctl: ldr w3, [x0,8] mov x0, -2 cmp w3, w1 - bne .L3302 + bne .L3472 ldr w1, [x29,68] mov x0, -3 sub w3, w1, #1 cmp w3, 127 - bhi .L3302 + bhi .L3472 ldr x19, [x2,#:lo12:.LANCHOR5] add x0, x19, 64 str w1, [x19,12] @@ -22080,38 +22795,38 @@ rknand_sys_storage_ioctl: bl memcpy mov w0, 1 mov x1, x19 - b .L3400 -.L3314: - adrp x0, .LC191 - add x0, x0, :lo12:.LC191 + b .L3570 +.L3484: + adrp x0, .LC193 + add x0, x0, :lo12:.LC193 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 17476 movk w0, 0x4253, lsl 16 cmp w1, w0 - bne .L3345 + bne .L3515 ldr w0, [x29,60] cmp w0, 512 - bhi .L3345 + bhi .L3515 adrp x19, .LANCHOR5 add x0, x19, :lo12:.LANCHOR5 ldr w1, [x0,12] - cbnz w1, .L3349 -.L3352: + cbnz w1, .L3519 +.L3522: mov x0, 0 - b .L3302 -.L3349: + b .L3472 +.L3519: ldr x1, [x0,16] mov w2, 22867 movk w2, 0x4453, lsl 16 ldr w3, [x1] cmp w3, w2 - beq .L3350 + beq .L3520 mov w2, 22867 movk w2, 0x4453, lsl 16 str w2, [x1] @@ -22121,7 +22836,7 @@ rknand_sys_storage_ioctl: ldr x0, [x0,16] str wzr, [x0,8] str wzr, [x0,12] -.L3350: +.L3520: add x0, x19, :lo12:.LANCHOR5 adrp x20, .LANCHOR5 ldr x1, [x0,16] @@ -22133,7 +22848,7 @@ rknand_sys_storage_ioctl: movk w1, 0x4b4d, lsl 16 ldr w2, [x0] cmp w2, w1 - beq .L3351 + beq .L3521 mov w1, 21060 movk w1, 0x4b4d, lsl 16 str w1, [x0] @@ -22142,7 +22857,7 @@ rknand_sys_storage_ioctl: str w1, [x0,4] ldr x0, [x20,#:lo12:.LANCHOR5] str wzr, [x0,8] -.L3351: +.L3521: add x20, x19, :lo12:.LANCHOR5 ldr x19, [x19,#:lo12:.LANCHOR5] mov w1, 0 @@ -22155,35 +22870,35 @@ rknand_sys_storage_ioctl: bl StorageSysDataStore str wzr, [x20,12] str wzr, [x20,8] - b .L3399 -.L3305: - adrp x0, .LC192 - add x0, x0, :lo12:.LC192 + b .L3569 +.L3475: + adrp x0, .LC194 + add x0, x0, :lo12:.LC194 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w2, [x29,56] mov w1, 20037 movk w1, 0x4253, lsl 16 cmp w2, w1 - bne .L3345 + bne .L3515 ldr w1, [x29,60] cmp w1, 512 - bhi .L3345 + bhi .L3515 adrp x19, .LANCHOR5 add x1, x19, :lo12:.LANCHOR5 ldr w2, [x1,12] cmp w2, 1 - beq .L3352 + beq .L3522 ldr x2, [x1,16] mov w3, 22867 movk w3, 0x4453, lsl 16 ldr w4, [x2] cmp w4, w3 - beq .L3353 + beq .L3523 mov w3, 22867 movk w3, 0x4453, lsl 16 str w3, [x2] @@ -22193,7 +22908,7 @@ rknand_sys_storage_ioctl: ldr x1, [x1,16] str w0, [x1,8] str w0, [x1,12] -.L3353: +.L3523: add x0, x19, :lo12:.LANCHOR5 adrp x20, .LANCHOR5 ldr x1, [x0,16] @@ -22206,7 +22921,7 @@ rknand_sys_storage_ioctl: movk w1, 0x4b4d, lsl 16 ldr w2, [x0] cmp w2, w1 - beq .L3354 + beq .L3524 mov w1, 21060 movk w1, 0x4b4d, lsl 16 str w1, [x0] @@ -22215,7 +22930,7 @@ rknand_sys_storage_ioctl: str w1, [x0,4] ldr x0, [x20,#:lo12:.LANCHOR5] str wzr, [x0,8] -.L3354: +.L3524: add x20, x19, :lo12:.LANCHOR5 ldr x19, [x19,#:lo12:.LANCHOR5] mov w1, 0 @@ -22228,66 +22943,66 @@ rknand_sys_storage_ioctl: bl StorageSysDataStore mov w0, 1 str w0, [x20,12] - b .L3399 -.L3311: - adrp x0, .LC193 - add x0, x0, :lo12:.LC193 + b .L3569 +.L3481: + adrp x0, .LC195 + add x0, x0, :lo12:.LC195 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 20051 movk w0, 0x4144, lsl 16 cmp w1, w0 - bne .L3345 + bne .L3515 ldr w2, [x29,60] cmp w2, 512 - bhi .L3345 + bhi .L3515 adrp x1, .LANCHOR5 add x0, x29, 64 add x1, x1, :lo12:.LANCHOR5 uxtw x2, w2 add x1, x1, 24 - b .L3407 -.L3312: + b .L3577 +.L3482: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3355 - adrp x0, .LC194 - add x0, x0, :lo12:.LC194 - b .L3397 -.L3355: + bne .L3525 + adrp x0, .LC196 + add x0, x0, :lo12:.LC196 + b .L3567 +.L3525: mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3357 - adrp x0, .LC195 - add x0, x0, :lo12:.LC195 - b .L3397 -.L3357: - adrp x0, .LC196 - add x0, x0, :lo12:.LC196 -.L3397: + bne .L3527 + adrp x0, .LC197 + add x0, x0, :lo12:.LC197 + b .L3567 +.L3527: + adrp x0, .LC198 + add x0, x0, :lo12:.LC198 +.L3567: bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 17227 movk w0, 0x4c4f, lsl 16 cmp w1, w0 - bne .L3402 + bne .L3572 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 adrp x0, .LANCHOR5 - bne .L3358 + bne .L3528 ldr x0, [x0,#:lo12:.LANCHOR5] add x1, x29, 56 mov x2, 16 @@ -22296,65 +23011,65 @@ rknand_sys_storage_ioctl: strb w0, [x29,64] mov x0, x20 bl rk_copy_to_user - cbz x0, .L3302 - b .L3402 -.L3358: + cbz x0, .L3472 + b .L3572 +.L3528: add x20, x0, :lo12:.LANCHOR5 ldr w1, [x20,536] cmp w1, 10 - bhi .L3402 + bhi .L3572 ldr x1, [x0,#:lo12:.LANCHOR5] ldr w2, [x29,60] ldr w3, [x1,24] cmp w3, w2 - beq .L3359 - cbz w3, .L3359 - adrp x0, .LC197 + beq .L3529 + cbz w3, .L3529 + adrp x0, .LC199 mov w1, w2 - add x0, x0, :lo12:.LC197 + add x0, x0, :lo12:.LC199 bl printk ldr w0, [x20,536] add w0, w0, 1 str w0, [x20,536] - b .L3402 -.L3359: + b .L3572 +.L3529: add x0, x0, :lo12:.LANCHOR5 str wzr, [x0,536] mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3360 + bne .L3530 str wzr, [x1,20] str wzr, [x1,24] - b .L3361 -.L3360: + b .L3531 +.L3530: mov w0, 1 str w2, [x1,24] str w0, [x1,20] -.L3361: +.L3531: mov w0, 1 mov x19, -2 bl StorageSysDataStore cmn w0, #1 - bne .L3399 - b .L3329 -.L3324: - adrp x0, .LC198 - add x0, x0, :lo12:.LC198 + bne .L3569 + b .L3499 +.L3494: + adrp x0, .LC200 + add x0, x0, :lo12:.LC200 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3345 + bne .L3515 ldr w2, [x29,60] cmp w2, 504 - bhi .L3345 + bhi .L3515 mov w0, 30224 adrp x1, .LANCHOR5 movk w0, 0x4004, lsl 16 @@ -22362,72 +23077,72 @@ rknand_sys_storage_ioctl: cmp w19, w0 add x1, x1, :lo12:.LANCHOR5 add x0, x29, 64 - bne .L3362 + bne .L3532 ldr x1, [x1,544] - b .L3398 -.L3362: + b .L3568 +.L3532: ldr x1, [x1,552] -.L3398: +.L3568: add x1, x1, 8 -.L3407: +.L3577: bl memcpy -.L3408: +.L3578: mov x0, x20 add x1, x29, 56 mov x2, 520 - b .L3394 -.L3321: - adrp x0, .LC199 - add x0, x0, :lo12:.LC199 + b .L3564 +.L3491: + adrp x0, .LC201 + add x0, x0, :lo12:.LC201 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3348 + cbnz x0, .L3518 ldr w1, [x29,56] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3345 + bne .L3515 ldr w2, [x29,60] cmp w2, 504 - bhi .L3345 + bhi .L3515 mov w0, 30225 add w2, w2, 8 movk w0, 0x4004, lsl 16 cmp w19, w0 adrp x19, .LANCHOR5 add x19, x19, :lo12:.LANCHOR5 - bne .L3364 + bne .L3534 ldr x0, [x19,544] add x1, x29, 56 bl memcpy mov w0, 2 ldr x1, [x19,544] - b .L3400 -.L3364: + b .L3570 +.L3534: ldr x0, [x19,552] add x1, x29, 56 bl memcpy ldr x1, [x19,552] mov w0, 3 -.L3400: +.L3570: bl StorageSysDataStore uxtw x19, w0 - b .L3329 -.L3399: + b .L3499 +.L3569: mov x19, 0 -.L3329: - adrp x0, .LC200 +.L3499: + adrp x0, .LC202 mov x1, x19 - add x0, x0, :lo12:.LC200 + add x0, x0, :lo12:.LC202 bl printk mov x0, x19 - b .L3302 -.L3365: + b .L3472 +.L3535: mov x0, -22 -.L3302: +.L3472: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -22446,18 +23161,17 @@ rk_ftl_storage_sys_init: adrp x20, .LANCHOR5 add x19, x20, :lo12:.LANCHOR5 stp x21, x22, [sp,32] + ldr x1, [x19,-56] str w0, [x19,-16] - adrp x0, .LANCHOR4+456 - strb wzr, [x19,-32] - str xzr, [x19,-24] - ldr x1, [x0,#:lo12:.LANCHOR4+456] - str x1, [x19,16] add x0, x1, 512 str x0, [x20,#:lo12:.LANCHOR5] add x0, x1, 1024 - add x1, x1, 1536 + str x1, [x19,16] str x0, [x19,544] + add x1, x1, 1536 add x0, x19, 24 + strb wzr, [x19,-32] + str xzr, [x19,-24] str xzr, [x19,-8] str x1, [x19,552] bl ftl_memcpy @@ -22467,25 +23181,25 @@ rk_ftl_storage_sys_init: ldr w0, [x21,16] ldr w22, [x21,508] str w0, [x19,12] - cbz w22, .L3414 + cbz w22, .L3584 mov x0, x21 mov w1, 508 - bl JSHash + bl js_hash cmp w22, w0 - beq .L3414 - adrp x0, .LC201 + beq .L3584 + adrp x0, .LC203 str wzr, [x21,16] - add x0, x0, :lo12:.LC201 + add x0, x0, :lo12:.LC203 str wzr, [x19,12] bl printk -.L3414: +.L3584: add x0, x20, :lo12:.LANCHOR5 ldr w1, [x0,12] - cbz w1, .L3415 + cbz w1, .L3585 mov w1, 5161 movk w1, 0xc059, lsl 16 str w1, [x0,8] -.L3415: +.L3585: add x20, x20, :lo12:.LANCHOR5 mov w0, 2 ldr x1, [x20,544] @@ -22521,19 +23235,19 @@ rk_ftl_vendor_storage_init: add x1, x21, :lo12:.LANCHOR5 mov w19, -12 str x0, [x1,560] - cbz x0, .L3424 + cbz x0, .L3594 mov w23, 0 - adrp x24, .LC202 + adrp x24, .LC204 mov w19, w23 mov w22, w23 - add x24, x24, :lo12:.LC202 -.L3428: + add x24, x24, :lo12:.LC204 +.L3598: add x20, x21, :lo12:.LANCHOR5 lsl w0, w22, 7 mov w1, 128 ldr x2, [x20,560] bl FlashBootVendorRead - cbnz w0, .L3425 + cbnz w0, .L3595 ldr x3, [x20,560] mov x0, x24 add x2, x3, 61440 @@ -22546,29 +23260,29 @@ rk_ftl_vendor_storage_init: movk w0, 0x524b, lsl 16 ldr w1, [x20] cmp w1, w0 - bne .L3426 + bne .L3596 ldr w0, [x20,4] cmp w19, w0 - bcs .L3426 + bcs .L3596 add x1, x20, 61440 ldr w1, [x1,4092] cmp w1, w0 csel w23, w23, w22, ne csel w19, w19, w0, ne -.L3426: - cbnz w22, .L3436 +.L3596: + cbnz w22, .L3606 mov w22, 1 - b .L3428 -.L3436: - cbz w19, .L3429 + b .L3598 +.L3606: + cbz w19, .L3599 lsl w0, w23, 7 mov w1, 128 mov x2, x20 bl FlashBootVendorRead mov w19, w0 - cbz w0, .L3424 - b .L3425 -.L3429: + cbz w0, .L3594 + b .L3595 +.L3599: mov x0, x20 mov w1, w19 mov x2, 65536 @@ -22582,14 +23296,14 @@ rk_ftl_vendor_storage_init: mov w0, -1032 strh w19, [x20,12] strh w0, [x20,14] - b .L3424 -.L3425: + b .L3594 +.L3595: add x21, x21, :lo12:.LANCHOR5 mov w19, -1 ldr x0, [x21,560] bl kfree str xzr, [x21,560] -.L3424: +.L3594: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -22607,18 +23321,18 @@ rk_ftl_vendor_read: ldr x5, [x3,#:lo12:.LANCHOR5+560] mov w3, -1 str x19, [sp,16] - cbz x5, .L3438 + cbz x5, .L3608 ldrh w3, [x5,10] mov x4, 0 -.L3439: +.L3609: cmp w4, w3 mov w6, w4 - bcs .L3443 + bcs .L3613 add x7, x5, x4, lsl 3 add x4, x4, 1 ldrh w7, [x7,16] cmp w7, w0 - bne .L3439 + bne .L3609 add x6, x5, x6, uxtw 3 ldrh w4, [x6,20] mov x0, x1 @@ -22630,10 +23344,10 @@ rk_ftl_vendor_read: uxtw x2, w19 bl memcpy mov w3, w19 - b .L3438 -.L3443: + b .L3608 +.L3613: mov w3, -1 -.L3438: +.L3608: mov w0, w3 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -22656,38 +23370,38 @@ rk_ftl_vendor_write: mov w26, w2 mov x28, x1 mov w2, -1 - cbz x19, .L3445 + cbz x19, .L3615 add w20, w26, 63 ldrh w3, [x19,10] ldrh w23, [x19,8] and w20, w20, -64 mov x2, 0 -.L3446: +.L3616: cmp w2, w3 mov w4, w2 - bcs .L3461 + bcs .L3631 add x0, x19, x2, lsl 3 add x2, x2, 1 ldrh w0, [x0,16] cmp w0, w6 - bne .L3446 + bne .L3616 add x21, x19, x4, uxtw 3 ldrh w24, [x21,20] add x5, x19, 1024 add w24, w24, 63 and w24, w24, -64 cmp w26, w24 - bls .L3447 + bls .L3617 ldrh w0, [x19,14] mov w2, -1 cmp w0, w20 - bcc .L3445 + bcc .L3615 ldrh w21, [x21,18] add w22, w3, w2 -.L3448: +.L3618: cmp w4, w22 uxtw x3, w4 - bcs .L3462 + bcs .L3632 add x3, x19, x3, lsl 3 add w25, w4, 1 add x1, x19, x25, uxtw 3 @@ -22710,8 +23424,8 @@ rk_ftl_vendor_write: mov w4, w25 ldr x6, [x29,96] ldr x5, [x29,104] - b .L3448 -.L3462: + b .L3618 +.L3632: add x3, x19, x3, lsl 3 uxth w21, w21 mov x1, x28 @@ -22728,20 +23442,20 @@ rk_ftl_vendor_write: add w24, w24, w0 sub w24, w24, w20 strh w24, [x19,14] - b .L3460 -.L3447: + b .L3630 +.L3617: ldrh w0, [x21,18] mov x1, x28 uxtw x2, w26 add x0, x5, x0 bl memcpy strh w26, [x21,20] - b .L3460 -.L3461: + b .L3630 +.L3631: ldrh w4, [x19,14] mov w2, -1 cmp w4, w20 - bcc .L3445 + bcc .L3615 add x3, x19, x3, uxth 3 strh w6, [x3,16] uxth w20, w20 @@ -22761,7 +23475,7 @@ rk_ftl_vendor_write: ldrh w0, [x19,10] add w0, w0, 1 strh w0, [x19,10] -.L3460: +.L3630: ldr w0, [x19,4] add x1, x19, 61440 mov x2, x19 @@ -22778,7 +23492,7 @@ rk_ftl_vendor_write: lsl w0, w23, 7 bl FlashBootVendorWrite mov w2, 0 -.L3445: +.L3615: mov w0, w2 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -22802,37 +23516,37 @@ rk_ftl_vendor_storage_ioctl: mov x21, x2 bl ftl_malloc mov x19, x0 - cbz x0, .L3464 + cbz x0, .L3634 mov w2, 30209 ldr x1, [x29,56] movk w2, 0x4004, lsl 16 cmp w1, w2 - beq .L3466 + beq .L3636 mov w2, 30210 movk w2, 0x4004, lsl 16 cmp w1, w2 - beq .L3467 - b .L3478 -.L3466: + beq .L3637 + b .L3648 +.L3636: mov x1, x21 mov x2, 8 bl rk_copy_from_user - cbnz x0, .L3478 + cbnz x0, .L3648 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L3469 -.L3470: + beq .L3639 +.L3640: mov x20, -1 - b .L3465 -.L3469: + b .L3635 +.L3639: ldrh w0, [x19,4] add x1, x19, 8 ldrh w2, [x19,6] bl rk_ftl_vendor_read cmn w0, #1 - beq .L3470 + beq .L3640 uxth x2, w0 strh w0, [x19,6] mov x1, x19 @@ -22842,38 +23556,38 @@ rk_ftl_vendor_storage_ioctl: bl rk_copy_to_user cmp x0, xzr csel x20, xzr, x20, eq - b .L3465 -.L3467: + b .L3635 +.L3637: mov x1, x21 mov x2, 8 bl rk_copy_from_user - cbnz x0, .L3478 + cbnz x0, .L3648 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L3470 + bne .L3640 ldrh w3, [x19,6] cmp w3, 4087 - bhi .L3470 + bhi .L3640 add w2, w3, 8 mov x0, x19 mov x1, x21 sxtw x2, w2 bl rk_copy_from_user - cbnz x0, .L3478 + cbnz x0, .L3648 ldrh w0, [x19,4] add x1, x19, 8 ldrh w2, [x19,6] bl rk_ftl_vendor_write sxtw x20, w0 - b .L3465 -.L3478: + b .L3635 +.L3648: mov x20, -14 -.L3465: +.L3635: mov x0, x19 bl kfree -.L3464: +.L3634: mov x0, x20 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -23061,7 +23775,6 @@ rk_ftl_vendor_storage_ioctl: .global c_ftl_nand_ext_blk_pre_plane .global c_ftl_nand_blk_pre_plane .global c_ftl_nand_planes_num - .global c_ftl_nand_blks_per_die_shift .global c_ftl_nand_blks_per_die .global c_ftl_nand_planes_per_die .global c_ftl_nand_die_num @@ -23078,6 +23791,7 @@ rk_ftl_vendor_storage_ioctl: .global gNandcVer .global gNandChipMap .global gNandIDataBuf + .global idb_flash_slc_mode .global FlashDdrTunningReadCount .global FlashWaitBusyScheduleEn .global gNandPhyInfo @@ -23090,6 +23804,7 @@ rk_ftl_vendor_storage_ioctl: .global gReadRetryInfo .global gpNandParaInfo .global gNandOptPara + .global g_nand_ecc_en .global g_slc2KBNand .global g_maxRetryCount .global g_maxRegNum @@ -23125,33 +23840,39 @@ rk_ftl_vendor_storage_ioctl: .section .rodata .align 3 .LANCHOR3 = . + 0 - .type __func__.19528, %object - .size __func__.19528, 11 -__func__.19528: + .type __func__.19599, %object + .size __func__.19599, 11 +__func__.19599: .string "FtlMemInit" .zero 5 - .type __func__.20301, %object - .size __func__.20301, 17 -__func__.20301: + .type __func__.20374, %object + .size __func__.20374, 17 +__func__.20374: .string "FtlDumpBlockInfo" .zero 7 - .type __func__.20320, %object - .size __func__.20320, 16 -__func__.20320: + .type __func__.20393, %object + .size __func__.20393, 16 +__func__.20393: .string "FtlScanAllBlock" - .type __func__.20568, %object - .size __func__.20568, 21 -__func__.20568: + .type __func__.20659, %object + .size __func__.20659, 17 +__func__.20659: + .string "ftl_scan_all_ppa" + .zero 7 + .type __func__.20342, %object + .size __func__.20342, 12 +__func__.20342: + .string "FtlCheckVpc" + .zero 4 + .type __func__.20641, %object + .size __func__.20641, 21 +__func__.20641: .string "FtlVpcCheckAndModify" .zero 3 - .type __func__.19601, %object - .size __func__.19601, 8 -__func__.19601: + .type __func__.19672, %object + .size __func__.19672, 8 +__func__.19672: .string "FtlInit" - .type __func__.20269, %object - .size __func__.20269, 12 -__func__.20269: - .string "FtlCheckVpc" .section .rodata.str1.1,"aMS",%progbits,1 .LC0: .string "FlashEraseBlocks pageAddr error %x\n" @@ -23306,7 +24027,7 @@ __func__.20269: .LC75: .string "%s\n" .LC76: - .string "FTL version: 5.0.50 20180905" + .string "FTL version: 5.0.56 20190508" .LC77: .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" .LC78: @@ -23380,184 +24101,188 @@ __func__.20269: .LC112: .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" .LC113: - .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" + .string "ftl_scan_all_ppa blk %x page %x\n" .LC114: - .string "FlashMakeFactorBbt %d\n" + .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" .LC115: - .string "bad block:%d %d\n" + .string "%s finished\n" .LC116: - .string "FMFB:%d %d\n" + .string "FlashMakeFactorBbt %d\n" .LC117: - .string "E:bad block:%d\n" + .string "bad block:%d %d\n" .LC118: - .string "FMFB:Save %d %d\n" + .string "FMFB:%d %d\n" .LC119: - .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" + .string "E:bad block:%d\n" .LC120: - .string "FtlBbmTblFlush error:%x\n" + .string "FMFB:Save %d %d\n" .LC121: - .string "FtlBbmTblFlush error = %x error count = %d\n" + .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" .LC122: - .string "FtlGcFreeBadSuperBlk 0x%x\n" + .string "FtlBbmTblFlush error:%x\n" .LC123: - .string "decrement_vpc_count %x = %d\n" + .string "FtlBbmTblFlush error = %x error count = %d\n" .LC124: - .string "decrement_vpc_count %x = %d in free list\n" + .string "FtlGcFreeBadSuperBlk 0x%x\n" .LC125: - .string "FtlVpcTblFlush error = %x error count = %d\n" + .string "decrement_vpc_count %x = %d\n" .LC126: - .string "page map lost: %x %x\n" + .string "decrement_vpc_count %x = %d in free list\n" .LC127: - .string "FtlMapWritePage error = %x\n" + .string "FtlVpcTblFlush error = %x error count = %d\n" .LC128: - .string "FtlMapWritePage error = %x error count = %d\n" + .string "page map lost: %x %x\n" .LC129: - .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" + .string "FtlMapWritePage error = %x\n" .LC130: - .string "no ect" + .string "FtlMapWritePage error = %x error count = %d\n" .LC131: - .string "slc mode" + .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" .LC132: - .string "BBT:" + .string "no ect" .LC133: - .string "region_id = %x phyAddr = %x\n" + .string "slc mode" .LC134: - .string "map_ppn:" + .string "BBT:" .LC135: - .string "load_l2p_region refresh = %x phyAddr = %x\n" + .string "region_id = %x phyAddr = %x\n" .LC136: - .string "Ftlscanalldata = %x\n" + .string "map_ppn:" .LC137: - .string "scan lpa = %x ppa= %x\n" + .string "load_l2p_region refresh = %x phyAddr = %x\n" .LC138: - .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC139: - .string "RSB refresh addr %x\n" -.LC140: - .string "spuer block %x vpn is 0\n " -.LC141: - .string "g_recovery_ppa %x ver %x\n " -.LC142: - .string "FtlCheckVpc %x = %x %x\n" -.LC143: - .string "GC des block %x done\n" -.LC144: - .string "%d GC datablk = %x vpc %x %x\n" -.LC145: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" -.LC146: - .string "g_gc_superblock_free %x %x %x %x %x\n" -.LC147: - .string "Ftlwrite decrement_vpc_count %x = %d\n" -.LC148: - .string "rk_ftl_de_init %x\n" -.LC149: - .string "...%s: no bad block mapping table, format device\n" -.LC150: - .string "...%s FtlSysBlkInit error ,format device!\n" -.LC151: - .string "FtlInit %x\n" -.LC152: - .string "fix power lost blk = %x vpc=%x\n" -.LC153: - .string "erase power lost blk = %x vpc=%x\n" -.LC154: - .string "FtlWrite: lpa error:%x %x\n" -.LC155: - .string "vpc1" -.LC156: - .string "vpc2" -.LC157: .string "FtlCheckVpc2 %x = %x %x\n" -.LC158: +.LC139: .string "free blk vpc error %x = %x %x\n" +.LC140: + .string "Ftlscanalldata = %x\n" +.LC141: + .string "scan lpa = %x ppa= %x\n" +.LC142: + .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC143: + .string "RSB refresh addr %x\n" +.LC144: + .string "spuer block %x vpn is 0\n " +.LC145: + .string "g_recovery_ppa %x ver %x\n " +.LC146: + .string "FtlCheckVpc %x = %x %x\n" +.LC147: + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" +.LC148: + .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" +.LC149: + .string "GC des block %x done\n" +.LC150: + .string "%d GC datablk = %x vpc %x %x\n" +.LC151: + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" +.LC152: + .string "Ftlwrite decrement_vpc_count %x = %d\n" +.LC153: + .string "rk_ftl_de_init %x\n" +.LC154: + .string "...%s: no bad block mapping table, format device\n" +.LC155: + .string "...%s FtlSysBlkInit error ,format device!\n" +.LC156: + .string "FtlInit %x\n" +.LC157: + .string "fix power lost blk = %x vpc=%x\n" +.LC158: + .string "erase power lost blk = %x vpc=%x\n" .LC159: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" + .string "FtlWrite: lpa error:%x %x\n" .LC160: - .string ":" + .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" .LC161: - .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" + .string ":" .LC162: - .string "Mblk:" + .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" .LC163: - .string "L2P:" + .string "Mblk:" .LC164: - .string "L2PC:" + .string "L2P:" .LC165: - .string "IdBlockReadData %x %x\n" + .string "L2PC:" .LC166: - .string "IdBlockReadData %x %x ret= %x\n" + .string "IdBlockReadData %x %x\n" .LC167: - .string "write_idblock fix data %x %x\n" + .string "IdBlockReadData %x %x ret= %x\n" .LC168: - .string "idblk:" + .string "write_idblock fix data %x %x\n" .LC169: - .string "idb reverse %x %x\n" + .string "idblk:" .LC170: - .string "write_idblock totle_sec %x %x %x %x\n" + .string "idb reverse %x %x\n" .LC171: - .string "IDBlockWriteData %x %x\n" + .string "write_idblock totle_sec %x %x %x %x\n" .LC172: - .string "IDBlockWriteData %x %x ret= %x\n" + .string "IDBlockWriteData %x %x\n" .LC173: - .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n" + .string "IDBlockWriteData %x %x ret= %x\n" .LC174: - .string "write" + .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n" .LC175: - .string "read" + .string "write" .LC176: - .string "write_idblock error %d\n" + .string "read" .LC177: - .string "READ_SECTOR_IO\n" + .string "write_idblock error %d\n" .LC178: - .string "rk_copy_from_user error\n" + .string "wl_lba %p %x %x %x\n" .LC179: - .string "READ_SECTOR_IO %x %x\n" + .string "READ_SECTOR_IO\n" .LC180: - .string "rk_copy_to_user error\n" + .string "rk_copy_from_user error\n" .LC181: - .string "WRITE_SECTOR_IO\n" + .string "READ_SECTOR_IO %x %x\n" .LC182: - .string "WRITE_SECTOR_IO %x %x\n" + .string "rk_copy_to_user error\n" .LC183: - .string "END_WRITE_SECTOR_IO\n" + .string "WRITE_SECTOR_IO\n" .LC184: - .string "END_WRITE_SECTOR_IO %x %x\n" + .string "WRITE_SECTOR_IO %x %x\n" .LC185: - .string "GET_FLASH_INFO_IO\n" + .string "END_WRITE_SECTOR_IO\n" .LC186: - .string "GET_BAD_BLOCK_IO\n" + .string "END_WRITE_SECTOR_IO %x %x\n" .LC187: - .string "GET_LOCK_FLAG_IO\n" + .string "GET_FLASH_INFO_IO\n" .LC188: - .string "GET_PUBLIC_KEY_IO\n" + .string "GET_BAD_BLOCK_IO\n" .LC189: - .string "RKNAND_GET_DRM_KEY\n" + .string "GET_LOCK_FLAG_IO\n" .LC190: - .string "RKNAND_STORE_DRM_KEY\n" + .string "GET_PUBLIC_KEY_IO\n" .LC191: - .string "RKNAND_DIASBLE_SECURE_BOOT\n" + .string "RKNAND_GET_DRM_KEY\n" .LC192: - .string "RKNAND_ENASBLE_SECURE_BOOT\n" + .string "RKNAND_STORE_DRM_KEY\n" .LC193: - .string "RKNAND_GET_SN_SECTOR\n" + .string "RKNAND_DIASBLE_SECURE_BOOT\n" .LC194: - .string "RKNAND_LOADER_UNLOCK\n" + .string "RKNAND_ENASBLE_SECURE_BOOT\n" .LC195: - .string "RKNAND_LOADER_STATUS\n" + .string "RKNAND_GET_SN_SECTOR\n" .LC196: - .string "RKNAND_LOADER_LOCK\n" + .string "RKNAND_LOADER_UNLOCK\n" .LC197: - .string "LockKey not match %d\n" + .string "RKNAND_LOADER_STATUS\n" .LC198: - .string "RKNAND_GET_VENDOR_SECTOR\n" + .string "RKNAND_LOADER_LOCK\n" .LC199: - .string "RKNAND_STORE_VENDOR_SECTOR\n" + .string "LockKey not match %d\n" .LC200: - .string "return ret = %lx\n" + .string "RKNAND_GET_VENDOR_SECTOR\n" .LC201: - .string "secureBootEn check error\n" + .string "RKNAND_STORE_VENDOR_SECTOR\n" .LC202: + .string "return ret = %lx\n" +.LC203: + .string "secureBootEn check error\n" +.LC204: .string "\0013vendor storage %x,%x,%x\n" .data .align 3 @@ -23950,7 +24675,7 @@ gFtlInitStatus: .word -1 .zero 4 .type NandFlashParaTbl, %object - .size NandFlashParaTbl, 2464 + .size NandFlashParaTbl, 2592 NandFlashParaTbl: .byte 6 .byte 44 @@ -24527,6 +25252,58 @@ NandFlashParaTbl: .byte 5 .byte 44 .byte -124 + .byte 68 + .byte 50 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 1 + .hword 2184 + .hword 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .zero 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 52 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 1 + .hword 2184 + .hword 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .zero 4 + .byte 5 + .byte 44 + .byte -124 .byte -60 .byte 52 .byte -86 @@ -24576,6 +25353,32 @@ NandFlashParaTbl: .byte 1 .byte 0 .zero 4 + .byte 5 + .byte 44 + .byte -124 + .byte 100 + .byte 60 + .byte -87 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 2 + .hword 1024 + .hword 479 + .byte 3 + .byte 17 + .byte 40 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .zero 4 .byte 6 .byte -83 .byte -34 @@ -24915,6 +25718,32 @@ NandFlashParaTbl: .byte 0 .zero 4 .byte 6 + .byte -83 + .byte 58 + .byte 20 + .byte 3 + .byte 8 + .byte 80 + .byte 2 + .byte 1 + .byte 32 + .hword 388 + .byte 2 + .byte 2 + .hword 1362 + .hword 473 + .byte 9 + .byte 8 + .byte 40 + .byte 32 + .byte 3 + .byte 1 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .zero 4 + .byte 6 .byte -119 .byte 100 .byte 68 @@ -25111,7 +25940,7 @@ NandFlashParaTbl: .byte 1 .hword 1024 .hword 455 - .byte 3 + .byte 4 .byte 17 .byte 40 .byte 32 @@ -26372,6 +27201,10 @@ gTable_Crc32: .size p_blk_mode_table, 8 p_blk_mode_table: .zero 8 + .type gNandChipMap, %object + .size gNandChipMap, 64 +gNandChipMap: + .zero 64 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -26390,19 +27223,19 @@ gBlockPageAlignSize: gNandRandomizer: .zero 1 .zero 7 - .type gNandChipMap, %object - .size gNandChipMap, 64 -gNandChipMap: - .zero 64 .type gNandOptPara, %object .size gNandOptPara, 32 gNandOptPara: .zero 32 - .type gFlashSlcMode, %object - .size gFlashSlcMode, 1 -gFlashSlcMode: + .type g_retryMode, %object + .size g_retryMode, 1 +g_retryMode: .zero 1 - .zero 7 + .type g_maxRegNum, %object + .size g_maxRegNum, 1 +g_maxRegNum: + .zero 1 + .zero 6 .type gpNandc, %object .size gpNandc, 8 gpNandc: @@ -26443,6 +27276,11 @@ NANDC_FMWAIT_SYN: .size gNandPhyInfo, 28 gNandPhyInfo: .zero 28 + .type gFlashSlcMode, %object + .size gFlashSlcMode, 1 +gFlashSlcMode: + .zero 1 + .zero 3 .type slcPageToMlcPageTbl, %object .size slcPageToMlcPageTbl, 512 slcPageToMlcPageTbl: @@ -26451,23 +27289,15 @@ slcPageToMlcPageTbl: .size DieAddrs, 32 DieAddrs: .zero 32 - .type FlashWaitBusyScheduleEn, %object - .size FlashWaitBusyScheduleEn, 4 -FlashWaitBusyScheduleEn: - .zero 4 .type gpNandParaInfo, %object .size gpNandParaInfo, 8 gpNandParaInfo: .zero 8 - .type g_retryMode, %object - .size g_retryMode, 1 -g_retryMode: - .zero 1 - .type g_maxRegNum, %object - .size g_maxRegNum, 1 -g_maxRegNum: - .zero 1 - .zero 6 + .type FlashWaitBusyScheduleEn, %object + .size FlashWaitBusyScheduleEn, 4 +FlashWaitBusyScheduleEn: + .zero 4 + .zero 4 .type gReadRetryInfo, %object .size gReadRetryInfo, 852 gReadRetryInfo: @@ -26498,9 +27328,9 @@ gNandMaxDie: .size DieCsIndex, 8 DieCsIndex: .zero 8 - .type g_nandc_version_data, %object - .size g_nandc_version_data, 4 -g_nandc_version_data: + .type idb_flash_slc_mode, %object + .size idb_flash_slc_mode, 4 +idb_flash_slc_mode: .zero 4 .type gFlashToggleModeEn, %object .size gFlashToggleModeEn, 1 @@ -26514,6 +27344,11 @@ gBootDdrMode: .type gNandcVer, %object .size gNandcVer, 4 gNandcVer: + .zero 4 + .type g_nandc_version_data, %object + .size g_nandc_version_data, 4 +g_nandc_version_data: + .zero 4 .zero 4 .type gMasterTempBuf, %object .size gMasterTempBuf, 8 @@ -26605,10 +27440,6 @@ c_ftl_vendor_part_size: .type c_ftl_nand_blks_per_die, %object .size c_ftl_nand_blks_per_die, 2 c_ftl_nand_blks_per_die: - .zero 2 - .type c_ftl_nand_blks_per_die_shift, %object - .size c_ftl_nand_blks_per_die_shift, 2 -c_ftl_nand_blks_per_die_shift: .zero 2 .type c_ftl_nand_page_pre_blk, %object .size c_ftl_nand_page_pre_blk, 2 @@ -26641,7 +27472,6 @@ c_ftl_nand_byte_pre_oob: .type c_ftl_nand_reserved_blks, %object .size c_ftl_nand_reserved_blks, 2 c_ftl_nand_reserved_blks: - .zero 2 .zero 2 .type DeviceCapacity, %object .size DeviceCapacity, 4 @@ -26688,7 +27518,6 @@ g_page_map_check_enable: .size g_totle_vendor_block, 2 g_totle_vendor_block: .zero 2 - .zero 4 .type p_vendor_block_table, %object .size p_vendor_block_table, 8 p_vendor_block_table: @@ -26861,10 +27690,9 @@ c_ftl_nand_data_op_blks_per_plane: .zero 2 .zero 2 .type gSysInfo, %object - .size gSysInfo, 12 + .size gSysInfo, 16 gSysInfo: - .zero 12 - .zero 4 + .zero 16 .type g_gc_superblock, %object .size g_gc_superblock, 48 g_gc_superblock: @@ -27216,11 +28044,15 @@ gFlashProgCheckBuffer: .size gFlashProgCheckSpareBuffer, 8 gFlashProgCheckSpareBuffer: .zero 8 + .type g_nand_ecc_en, %object + .size g_nand_ecc_en, 1 +g_nand_ecc_en: + .zero 1 .type gMultiPageReadEn, %object .size gMultiPageReadEn, 1 gMultiPageReadEn: .zero 1 - .zero 7 + .zero 6 .type FbbtBlk, %object .size FbbtBlk, 16 FbbtBlk: @@ -27242,6 +28074,11 @@ gVendorBlkInfo: .size g_ect_tbl_power_up_flush, 2 g_ect_tbl_power_up_flush: .zero 2 + .zero 6 + .type check_valid_page_count_table, %object + .size check_valid_page_count_table, 8192 +check_valid_page_count_table: + .zero 8192 .type g_power_lost_ecc_error_blk, %object .size g_power_lost_ecc_error_blk, 2 g_power_lost_ecc_error_blk: @@ -27249,12 +28086,10 @@ g_power_lost_ecc_error_blk: .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: - .zero 2 .zero 2 .type g_recovery_page_num, %object .size g_recovery_page_num, 4 g_recovery_page_num: - .zero 4 .zero 4 .type g_recovery_ppa_tbl, %object .size g_recovery_ppa_tbl, 128 @@ -27301,10 +28136,6 @@ g_ftl_nand_free_count: .size last_cache_match_count, 4 last_cache_match_count: .zero 4 - .type check_valid_page_count_table, %object - .size check_valid_page_count_table, 8192 -check_valid_page_count_table: - .zero 8192 .type idb_write_enable, %object .size idb_write_enable, 1 idb_write_enable: diff --git a/drivers/rk_nand/rk_ftlv5_arm64.S b/drivers/rk_nand/rk_ftlv5_arm64.S index 2e4a3c3db025..ca9329b72fa8 100644 --- a/drivers/rk_nand/rk_ftlv5_arm64.S +++ b/drivers/rk_nand/rk_ftlv5_arm64.S @@ -5,14 +5,13 @@ * 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: 2018-09-05 + * date: 2019-05-08 * function: rk ftl v5 for rockchip soc base on arm v8 to support MLC NAND. */ .cpu generic+fp+simd .file "rk_ftlv5_arm_v8.S" #APP - .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\ - ,18,19,20,21,22,23,24,25,26,27,28,29,30 + .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 @@ -84,35 +83,71 @@ ftl_set_blk_mode.part.17: ret .size ftl_set_blk_mode.part.17, .-ftl_set_blk_mode.part.17 .align 2 + .type flash_read_ecc, %function +flash_read_ecc: + adrp x2, .LANCHOR0 + ubfiz x0, x0, 4, 8 + stp x29, x30, [sp, -32]! + add x2, x2, :lo12:.LANCHOR0 + add x2, x2, 24 + add x29, sp, 0 + add x1, x2, x0 + str x19, [sp,16] + ldrb w1, [x1,8] + ldr x19, [x2,x0] + mov w0, 122 + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov x0, 400 + bl __const_udelay + ldr w1, [x19,2048] + ldr w0, [x19,2048] + and w1, w1, 15 + and w0, w0, 15 + cmp w0, w1 + csel w2, w0, w1, cs + ldr w1, [x19,2048] + ldr w0, [x19,2048] + and w1, w1, 15 + ldr x19, [sp,16] + cmp w2, w1 + and w0, w0, 15 + csel w1, w2, w1, cs + cmp w1, w0 + csel w0, w1, w0, cs + ldp x29, x30, [sp], 32 + ret + .size flash_read_ecc, .-flash_read_ecc + .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: mov x5, x0 - adrp x0, .LANCHOR0+24 - ldrb w0, [x0,#:lo12:.LANCHOR0+24] - cbz w0, .L15 + adrp x0, .LANCHOR0+88 + ldrb w0, [x0,#:lo12:.LANCHOR0+88] + cbz w0, .L16 ldrb w4, [x5,1] mov w0, 0 ldrb w3, [x1,1] cmp w4, w3 - beq .L12 -.L15: + beq .L13 +.L16: mov x3, 0 -.L13: +.L14: cmp w3, w2 mov w4, w3 - bcs .L18 + bcs .L19 ldrb w0, [x5,x3] add x3, x3, 1 add x6, x1, x3 ldrb w6, [x6,-1] cmp w6, w0 - beq .L13 + beq .L14 add w0, w4, 1 - b .L12 -.L18: + b .L13 +.L19: mov w0, 0 -.L12: +.L13: ret .size FlashMemCmp8, .-FlashMemCmp8 .align 2 @@ -122,8 +157,8 @@ FlashRsvdBlkChk: adrp x2, .LANCHOR0 uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrb w3, [x2,25] - ldr w2, [x2,28] + ldrb w3, [x2,89] + ldr w2, [x2,92] mul w2, w3, w2 cmp w1, w2 cset w1, cc @@ -145,14 +180,14 @@ FlashGetRandomizer: uxtb w0, w0 str x19, [sp,16] ldrh w19, [x2,w3,uxtw 1] - adrp x2, .LANCHOR0+32 - ldrb w2, [x2,#:lo12:.LANCHOR0+32] - cbz w2, .L21 + adrp x2, .LANCHOR0+96 + ldrb w2, [x2,#:lo12:.LANCHOR0+96] + cbz w2, .L22 bl FlashRsvdBlkChk cmp w0, wzr orr w1, w19, -1073741824 csel w19, w1, w19, ne -.L21: +.L22: mov w0, w19 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -174,17 +209,17 @@ FlashSetRandomizer: adrp x2, .LANCHOR0 add x0, x2, :lo12:.LANCHOR0 mov x19, x2 - ldrb w0, [x0,32] - cbz w0, .L28 + ldrb w0, [x0,96] + cbz w0, .L29 mov w0, w21 bl FlashRsvdBlkChk cmp w0, wzr orr w1, w20, -1073741824 csel w20, w1, w20, ne -.L28: +.L29: add x2, x19, :lo12:.LANCHOR0 add x2, x2, x21, sxtw 4 - ldr x0, [x2,40] + ldr x0, [x2,24] str w20, [x0,336] ldp x19, x20, [sp,16] ldr x21, [sp,32] @@ -192,6 +227,25 @@ FlashSetRandomizer: ret .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 + .global FlashBlockAlignInit + .type FlashBlockAlignInit, %function +FlashBlockAlignInit: + uxth w0, w0 + adrp x1, .LANCHOR0 + cmp w0, 256 + add x1, x1, :lo12:.LANCHOR0 + bls .L36 + mov w0, 512 + b .L39 +.L36: + cmp w0, 128 + bls .L39 + mov w0, 256 +.L39: + str w0, [x1,92] + ret + .size FlashBlockAlignInit, .-FlashBlockAlignInit + .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: @@ -199,7 +253,7 @@ FlashReadCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 40 + add x3, x3, 24 lsr w4, w1, 16 add x2, x3, x5 stp x29, x30, [sp, -16]! @@ -229,7 +283,7 @@ FlashReadDpDataOutCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x2, x0, 4, 32 - add x4, x3, 40 + add x4, x3, 24 stp x29, x30, [sp, -16]! add x5, x4, x2 add x29, sp, 0 @@ -241,7 +295,7 @@ FlashReadDpDataOutCmd: ldrb w2, [x5,8] and w5, w1, 255 add x2, x6, x2, lsl 8 - bne .L36 + bne .L42 mov w6, 6 str w6, [x2,2056] str wzr, [x2,2052] @@ -249,8 +303,8 @@ FlashReadDpDataOutCmd: str w5, [x2,2052] str w4, [x2,2052] str w3, [x2,2052] - b .L38 -.L36: + b .L44 +.L42: str wzr, [x2,2056] str wzr, [x2,2052] str wzr, [x2,2052] @@ -261,7 +315,7 @@ FlashReadDpDataOutCmd: str w3, [x2,2056] str wzr, [x2,2052] str wzr, [x2,2052] -.L38: +.L44: mov w3, 224 str w3, [x2,2056] bl FlashSetRandomizer @@ -269,48 +323,6 @@ FlashReadDpDataOutCmd: ret .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 - .global flash_enter_slc_mode - .type flash_enter_slc_mode, %function -flash_enter_slc_mode: - adrp x1, .LANCHOR0 - uxtb w0, w0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,136] - cbz w2, .L39 - sbfiz x0, x0, 4, 32 - add x1, x1, 40 - add x2, x1, x0 - ldr x1, [x1,x0] - ldrb w0, [x2,8] - add x0, x0, 8 - add x0, x1, x0, lsl 8 - mov w1, 218 - str w1, [x0,8] -.L39: - ret - .size flash_enter_slc_mode, .-flash_enter_slc_mode - .align 2 - .global flash_exit_slc_mode - .type flash_exit_slc_mode, %function -flash_exit_slc_mode: - adrp x1, .LANCHOR0 - uxtb w0, w0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,136] - cbz w2, .L44 - sbfiz x0, x0, 4, 32 - add x1, x1, 40 - add x2, x1, x0 - ldr x1, [x1,x0] - ldrb w0, [x2,8] - add x0, x0, 8 - add x0, x1, x0, lsl 8 - mov w1, 223 - str w1, [x0,8] -.L44: - ret - .size flash_exit_slc_mode, .-flash_exit_slc_mode - .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: @@ -318,7 +330,7 @@ FlashProgFirstCmd: uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 40 + add x3, x3, 24 lsr w4, w1, 16 add x2, x3, x5 stp x29, x30, [sp, -16]! @@ -346,11 +358,11 @@ FlashEraseCmd: adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 add x3, x3, :lo12:.LANCHOR0 - add x4, x3, 40 + add x4, x3, 24 add x5, x4, x0 ldr x4, [x4,x0] ldrb w0, [x5,8] - cbz w2, .L51 + cbz w2, .L47 add x2, x4, x0, lsl 8 mov w5, 96 str w5, [x2,2056] @@ -360,9 +372,9 @@ FlashEraseCmd: str w5, [x2,2052] lsr w5, w1, 16 str w5, [x2,2052] - ldr w2, [x3,28] + ldr w2, [x3,92] add w1, w1, w2 -.L51: +.L47: add x0, x4, x0, lsl 8 mov w2, 96 str w2, [x0,2056] @@ -384,7 +396,7 @@ FlashProgDpSecondCmd: uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 sbfiz x4, x0, 4, 32 - add x5, x2, 40 + add x5, x2, 24 lsr w3, w1, 16 add x7, x5, x4 stp x29, x30, [sp, -16]! @@ -412,7 +424,7 @@ FlashProgSecondCmd: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 40 + add x1, x1, 24 add x2, x1, x0 ldr x1, [x1,x0] ldrb w0, [x2,8] @@ -429,7 +441,7 @@ FlashProgDpFirstCmd: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x2, x1, 40 + add x2, x1, 24 add x3, x2, x0 ldrb w1, [x1,114] ldr x2, [x2,x0] @@ -440,26 +452,50 @@ FlashProgDpFirstCmd: ret .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 - .global JSHash - .type JSHash, %function -JSHash: + .global FlashReadStatus + .type FlashReadStatus, %function +FlashReadStatus: + adrp x1, .LANCHOR0 + ubfiz x0, x0, 4, 8 + stp x29, x30, [sp, -32]! + add x1, x1, :lo12:.LANCHOR0 + add x1, x1, 24 + add x29, sp, 0 + add x2, x1, x0 + str x19, [sp,16] + ldrb w2, [x2,8] + ldr x19, [x1,x0] + mov w0, 112 + add x19, x19, x2, lsl 8 + str w0, [x19,2056] + mov x0, 400 + bl __const_udelay + ldr w0, [x19,2048] + ldr x19, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size FlashReadStatus, .-FlashReadStatus + .align 2 + .global js_hash + .type js_hash, %function +js_hash: mov x5, x0 mov w0, 42982 mov x2, 0 movk w0, 0x47c6, lsl 16 -.L59: +.L56: cmp w1, w2 - bls .L61 + bls .L58 lsl w3, w0, 5 ldrb w4, [x5,x2] add w3, w3, w0, lsr 2 add x2, x2, 1 add w3, w3, w4 eor w0, w0, w3 - b .L59 -.L61: + b .L56 +.L58: ret - .size JSHash, .-JSHash + .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo .type FlashLoadIdbInfo, %function @@ -471,65 +507,63 @@ FlashLoadIdbInfo: .global BuildFlashLsbPageTable .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! adrp x2, .LANCHOR0 add x29, sp, 0 stp x19, x20, [sp,16] - str x21, [sp,32] - mov w19, w1 - cbnz w0, .L64 + mov w20, w1 + cbnz w0, .L61 mov x0, 0 add x3, x2, :lo12:.LANCHOR0 -.L65: - add x1, x3, 140 +.L62: + add x1, x3, 136 strh w0, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L65 -.L71: - add x20, x2, :lo12:.LANCHOR0 + bne .L62 +.L68: + add x19, x2, :lo12:.LANCHOR0 mov w1, 255 - add x21, x20, 652 mov w2, 1024 - mov x0, x21 - uxth w19, w19 + add x0, x19, 648 + uxth w20, w20 bl ftl_memset - mov x1, 0 - mov x2, x20 - b .L66 -.L64: + mov x0, 0 + mov x2, x19 + b .L63 +.L61: cmp w0, 1 - bne .L67 + bne .L64 mov x0, 0 mov w5, 3 mov w6, 2 add x4, x2, :lo12:.LANCHOR0 -.L70: +.L67: cmp x0, 3 uxth w1, w0 mov w3, w1 - bls .L68 + bls .L65 ubfiz w3, w1, 1, 15 and w1, w1, 1 cmp w1, wzr csel w1, w5, w6, ne sub w3, w3, w1 uxth w3, w3 -.L68: - add x1, x4, 140 +.L65: + add x1, x4, 136 strh w3, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L70 - b .L71 -.L67: + bne .L67 + b .L68 +.L64: cmp w0, 2 - bne .L72 + bne .L69 mov w1, 65535 mov x0, 0 add x5, x2, :lo12:.LANCHOR0 -.L74: - add x4, x5, 140 +.L71: + add x4, x5, 136 cmp x0, 1 uxth w3, w0 csel w3, w1, w3, hi @@ -538,43 +572,43 @@ BuildFlashLsbPageTable: add x0, x0, 1 cmp x0, 256 uxth w1, w1 - bne .L74 - b .L71 -.L72: + bne .L71 + b .L68 +.L69: cmp w0, 3 - bne .L75 + bne .L72 mov x0, 0 - mov w6, 5 - mov w7, 4 - add x5, x2, :lo12:.LANCHOR0 -.L78: + mov w5, 5 + mov w6, 4 + add x4, x2, :lo12:.LANCHOR0 +.L75: cmp x0, 5 - uxth w4, w0 - mov w3, w4 - bls .L76 - ubfiz w3, w4, 1, 15 - and w4, w4, 1 - cmp w4, wzr - csel w1, w6, w7, ne + uxth w1, w0 + mov w3, w1 + bls .L73 + ubfiz w3, w1, 1, 15 + and w1, w1, 1 + cmp w1, wzr + csel w1, w5, w6, ne sub w3, w3, w1 uxth w3, w3 -.L76: - add x1, x5, 140 +.L73: + add x1, x4, 136 strh w3, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L78 - b .L71 -.L75: + bne .L75 + b .L68 +.L72: cmp w0, 4 - bne .L79 + bne .L76 add x1, x2, :lo12:.LANCHOR0 mov w6, 7 - add x3, x1, 140 + add x3, x1, 136 mov w5, 6 strh w0, [x3,8] mov w0, 5 - strh wzr, [x1,140] + strh wzr, [x1,136] mov w1, 1 strh w0, [x3,10] mov w0, 7 @@ -587,7 +621,7 @@ BuildFlashLsbPageTable: strh w0, [x3,14] mov w0, 8 strh w1, [x3,6] -.L81: +.L78: and w4, w0, 1 ubfiz w1, w0, 1, 15 add w0, w0, 1 @@ -598,40 +632,40 @@ BuildFlashLsbPageTable: sub w1, w1, w4 cmp w0, 256 strh w1, [x3,14] - bne .L81 - b .L71 -.L79: + bne .L78 + b .L68 +.L76: cmp w0, 5 - bne .L82 + bne .L79 mov x0, 0 add x3, x2, :lo12:.LANCHOR0 -.L83: - add x1, x3, 140 +.L80: + add x1, x3, 136 strh w0, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 16 - bne .L83 + bne .L80 mov x0, 0 -.L84: +.L81: add x3, x1, x0 add w4, w0, 16 add x0, x0, 2 cmp x0, 480 strh w4, [x3,32] - bne .L84 - b .L71 -.L82: + bne .L81 + b .L68 +.L79: cmp w0, 6 - bne .L71 + bne .L82 mov x3, 0 mov w6, 12 mov w7, 10 add x5, x2, :lo12:.LANCHOR0 -.L87: +.L85: cmp x3, 5 uxth w4, w3 mov w0, w4 - bls .L85 + bls .L83 add w0, w4, w4, lsl 1 and w4, w4, 1 cmp w4, wzr @@ -639,25 +673,44 @@ BuildFlashLsbPageTable: csel w1, w6, w7, ne sub w0, w0, w1 uxth w0, w0 -.L85: - add x1, x5, 140 +.L83: + add x1, x5, 136 strh w0, [x1,x3,lsl 1] add x3, x3, 1 cmp x3, 256 - bne .L87 - b .L71 -.L66: - cmp w19, w1, uxth + bne .L85 + b .L68 +.L82: + cmp w0, 9 + bne .L68 + add x0, x2, :lo12:.LANCHOR0 + add x3, x0, 136 + strh wzr, [x0,136] + mov w0, 1 + strh w0, [x3,2] + mov w0, 2 + strh w0, [x3,4] + mov x0, 0 +.L86: + add x1, x3, x0 + add w4, w0, 3 + add x0, x0, 2 + cmp x0, 506 + strh w4, [x1,6] + bne .L86 + b .L68 +.L63: + cmp w20, w0, uxth bls .L105 - add x0, x2, 140 - ldrh w0, [x0,x1,lsl 1] - add x1, x1, 1 - strh w0, [x21,w0,sxtw 1] - b .L66 + add x1, x2, 136 + add x3, x2, 648 + ldrh w1, [x1,x0,lsl 1] + add x0, x0, 1 + strh w1, [x3,w1,sxtw 1] + b .L63 .L105: ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 + ldp x29, x30, [sp], 32 ret .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 2 @@ -667,120 +720,216 @@ FlashPrintInfo: ret .size FlashPrintInfo, .-FlashPrintInfo .align 2 + .global ToshibaSetRRPara + .type ToshibaSetRRPara, %function +ToshibaSetRRPara: + uxtb w1, w1 + mov w3, 5 + add w2, w1, 1 + stp x29, x30, [sp, -80]! + smull x3, w2, w3 + adrp x2, .LANCHOR1 + add x29, sp, 0 + add x2, x2, :lo12:.LANCHOR1 + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + add x23, x2, x1, sxtw + stp x25, x26, [sp,64] + add x21, x2, 304 + add x25, x2, 256 + adrp x24, g_maxRegNum + adrp x26, g_retryMode + stp x19, x20, [sp,16] + mov x22, x0 + add x25, x25, x3 + add x21, x21, x3 + mov x20, 0 + add x24, x24, :lo12:g_maxRegNum + mov x19, x2 + add x26, x26, :lo12:g_retryMode +.L108: + ldrb w0, [x24] + cmp w0, w20 + bls .L114 + mov w0, 85 + str w0, [x22,8] + add x0, x19, 256 + ldrsb w0, [x20,x0] + str w0, [x22,4] + mov x0, 1000 + bl __const_udelay + ldrb w0, [x26] + cmp w0, 34 + bne .L109 + ldrsb w0, [x25,x20] + b .L113 +.L109: + cmp w0, 35 + bne .L111 + ldrsb w0, [x21,x20] + b .L113 +.L111: + ldrsb w0, [x23,400] +.L113: + str w0, [x22] + add x20, x20, 1 + b .L108 +.L114: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 80 + ret + .size ToshibaSetRRPara, .-ToshibaSetRRPara + .align 2 + .global SamsungSetRRPara + .type SamsungSetRRPara, %function +SamsungSetRRPara: + stp x29, x30, [sp, -64]! + adrp x2, .LANCHOR1 + add x29, sp, 0 + stp x21, x22, [sp,32] + add x2, x2, :lo12:.LANCHOR1 + adrp x22, g_maxRegNum + stp x19, x20, [sp,16] + add x1, x2, x1, uxtb 2 + stp x23, x24, [sp,48] + mov x21, x0 + add x23, x1, 412 + mov x20, 0 + add x22, x22, :lo12:g_maxRegNum + mov w24, 161 + mov x19, x2 +.L116: + ldrb w0, [x22] + cmp w0, w20 + bls .L118 + str w24, [x21,8] + add x0, x19, 408 + str wzr, [x21] + ldrsb w0, [x20,x0] + str w0, [x21] + ldrsb w0, [x23,x20] + add x20, x20, 1 + str w0, [x21] + mov x0, 1500 + bl __const_udelay + b .L116 +.L118: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x29, x30, [sp], 64 + ret + .size SamsungSetRRPara, .-SamsungSetRRPara + .align 2 .global FlashDieInfoInit .type FlashDieInfoInit, %function FlashDieInfoInit: - stp x29, x30, [sp, -80]! - adrp x1, .LANCHOR1+266 + stp x29, x30, [sp, -96]! + adrp x0, .LANCHOR1+482 add x29, sp, 0 stp x21, x22, [sp,32] adrp x21, .LANCHOR0 - ldrh w1, [x1,#:lo12:.LANCHOR1+266] - add x0, x21, :lo12:.LANCHOR0 - str x25, [sp,64] + ldrh w0, [x0,#:lo12:.LANCHOR1+482] stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - strb wzr, [x0,1676] - cmp w1, 256 - strb wzr, [x0,1677] - bls .L108 - mov w1, 512 - b .L124 -.L108: - cmp w1, 128 - bls .L124 - mov w1, 256 -.L124: add x19, x21, :lo12:.LANCHOR0 - str w1, [x0,28] - mov w2, 8 + str x27, [sp,80] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + strb wzr, [x19,1672] + add x25, x19, 1676 + strb wzr, [x19,1673] + bl FlashBlockAlignInit mov w1, 0 - add x0, x19, 1680 - adrp x24, IDByte + mov w2, 8 + mov x0, x25 + add x24, x19, 1684 + adrp x26, IDByte mov x23, 0 - add x24, x24, :lo12:IDByte bl ftl_memset + add x26, x26, :lo12:IDByte mov w1, 0 mov w2, 32 - add x0, x19, 1688 + mov x0, x24 bl ftl_memset - add x0, x19, 1720 + add x0, x19, 1716 mov w1, 0 mov w2, 192 bl ftl_memset ldr x20, [x19,1912] add x22, x20, 1 -.L112: +.L121: ldrb w2, [x20] mov x0, x22 - add x1, x24, x23, lsl 3 + add x1, x26, x23, lsl 3 bl FlashMemCmp8 - cbnz w0, .L111 - ldrb w1, [x19,1676] - add x2, x19, 1688 - str w0, [x2,w1,sxtw 2] + cbnz w0, .L120 + ldrb w1, [x19,1672] + str w0, [x24,w1,sxtw 2] add w0, w1, 1 - add x1, x19, x1, sxtw - strb w0, [x19,1676] - strb w23, [x1,1680] -.L111: + strb w23, [x25,w1,sxtw] + strb w0, [x19,1672] +.L120: add x23, x23, 1 cmp x23, 4 - bne .L112 + bne .L121 add x19, x21, :lo12:.LANCHOR0 - ldrb w0, [x19,1676] - strb w0, [x19,1677] + ldrb w0, [x19,1672] + strb w0, [x19,1673] ldrb w0, [x20,8] cmp w0, 2 - beq .L113 -.L117: + beq .L122 +.L126: add x21, x21, :lo12:.LANCHOR0 ldrb w1, [x20,13] ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldrb w0, [x21,1676] + ldp x25, x26, [sp,64] + ldrb w0, [x21,1672] + ldr x27, [sp,80] mul w0, w0, w1 ldrh w1, [x20,14] ldp x19, x20, [sp,16] mul w0, w0, w1 strh w0, [x21,1920] ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + ldp x29, x30, [sp], 96 ret -.L113: +.L122: adrp x24, IDByte - ldr w25, [x19,28] + ldr w26, [x19,92] mov x23, 0 add x24, x24, :lo12:IDByte -.L116: + add x25, x19, 1684 + add x27, x19, 1676 +.L125: ldrb w2, [x20] mov x0, x22 add x1, x24, x23, lsl 3 bl FlashMemCmp8 - cbnz w0, .L114 + cbnz w0, .L123 ldrb w1, [x20,13] - add x4, x19, 1688 - ldrb w3, [x19,1676] - mul w2, w1, w25 + ldrb w3, [x19,1672] + mul w2, w1, w26 ldrh w1, [x20,14] mov x0, x3 and w1, w1, 65280 mul w1, w2, w1 - str w1, [x4,w3,sxtw 2] + str w1, [x25,w3,sxtw 2] ldrb w2, [x20,23] - cbz w2, .L115 + cbz w2, .L124 lsl w1, w1, 1 - str w1, [x4,w3,sxtw 2] -.L115: + str w1, [x25,w3,sxtw 2] +.L124: add w0, w0, 1 - strb w0, [x19,1676] - add x0, x19, x3 - strb w23, [x0,1680] -.L114: + strb w23, [x27,x3] + strb w0, [x19,1672] +.L123: add x23, x23, 1 cmp x23, 4 - bne .L116 - b .L117 + bne .L125 + b .L126 .size FlashDieInfoInit, .-FlashDieInfoInit .align 2 .global FlashReadIdbData @@ -804,64 +953,67 @@ FlashLoadPhyInfoInRam: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp,16] - adrp x20, .LANCHOR1 + adrp x19, .LANCHOR1 str x23, [sp,48] stp x21, x22, [sp,32] adrp x23, IDByte - add x21, x20, :lo12:.LANCHOR1 - add x21, x21, 288 - mov w19, 0 + add x21, x19, :lo12:.LANCHOR1 + add x21, x21, 504 + mov w20, 0 add x23, x23, :lo12:IDByte -.L130: +.L138: ldrb w2, [x21] add x0, x21, 1 mov x1, x23 bl FlashMemCmp8 mov w22, w0 - cbnz w0, .L127 - add x0, x20, :lo12:.LANCHOR1 - ubfiz x19, x19, 5, 32 - add x1, x0, 288 - adds x19, x1, x19 - beq .L133 - ldrb w3, [x19,22] + cbnz w0, .L135 + add x0, x19, :lo12:.LANCHOR1 + ubfiz x20, x20, 5, 32 + add x1, x0, 504 + adds x20, x1, x20 + beq .L141 + ldrb w3, [x20,22] mov x2, 0 mov x1, x0 - b .L132 -.L127: - add w19, w19, 1 + b .L140 +.L135: + add w20, w20, 1 add x21, x21, 32 - cmp w19, 77 - bne .L130 - b .L133 -.L132: + cmp w20, 81 + bne .L138 + b .L141 +.L140: add x4, x1, x2, lsl 5 mov w0, w2 - ldrb w4, [x4,2752] + ldrb w4, [x4,3096] cmp w4, w3 - beq .L131 + beq .L139 add x2, x2, 1 cmp x2, 4 - bne .L132 + bne .L140 mov w0, w2 -.L131: - add x20, x20, :lo12:.LANCHOR1 +.L139: + add x19, x19, :lo12:.LANCHOR1 ubfiz x1, x0, 5, 32 adrp x0, .LANCHOR0 - add x2, x20, 2752 + add x2, x19, 3096 add x0, x0, :lo12:.LANCHOR0 add x1, x2, x1 add x0, x0, 104 mov w2, 32 + add x19, x19, 472 bl ftl_memcpy - add x0, x20, 256 - mov x1, x19 + mov x0, x19 + mov x1, x20 mov w2, 32 bl ftl_memcpy - b .L128 -.L133: + ldrh w0, [x19,10] + bl FlashBlockAlignInit + b .L136 +.L141: mov w22, -1 -.L128: +.L136: mov w0, w22 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -903,8 +1055,8 @@ LogAddr2PhyAddr: add x6, x7, :lo12:.LANCHOR0 ldrh w8, [x6,4030] ldrh w5, [x6,4028] - ldrh w9, [x6,28] - ldrb w6, [x6,24] + ldrh w9, [x6,92] + ldrb w6, [x6,88] mul w5, w5, w8 cmp w6, 1 ubfiz w8, w9, 1, 15 @@ -917,33 +1069,119 @@ LogAddr2PhyAddr: udiv w10, w6, w5 msub w5, w10, w5, w6 uxth w6, w5 - bne .L140 + bne .L148 add x1, x7, :lo12:.LANCHOR0 - ldrb w5, [x1,136] - cbnz w5, .L140 - add x1, x1, 140 + ldrb w5, [x1,4044] + cbnz w5, .L148 + add x1, x1, 136 ldrh w8, [x1,w8,sxtw 1] -.L140: +.L148: add x7, x7, :lo12:.LANCHOR0 cmp w4, 1 - add x7, x7, 1688 + add x7, x7, 1684 mov w1, 0 ldr w5, [x7,w10,uxtw 2] madd w5, w6, w9, w5 add w5, w5, w8 str w5, [x2] str w10, [x3] - bls .L141 + bls .L149 ldr w1, [x0,4] ldr w0, [x0,60] add w1, w1, 1024 cmp w1, w0 cset w1, eq -.L141: +.L149: mov w0, w1 ret .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 2 + .global FlashReadStatusEN + .type FlashReadStatusEN, %function +FlashReadStatusEN: + stp x29, x30, [sp, -32]! + adrp x3, .LANCHOR0 + ubfiz x0, x0, 4, 8 + add x4, x3, :lo12:.LANCHOR0 + add x29, sp, 0 + add x5, x4, 24 + stp x19, x20, [sp,16] + add x6, x5, x0 + uxtb w2, w2 + ldr x20, [x5,x0] + ldr x0, [x4,1912] + ldrb w19, [x6,8] + ldrb w0, [x0,8] + cmp w0, 2 + bne .L152 + add x4, x4, 104 + cbnz w2, .L153 + ldrb w2, [x4,13] + b .L161 +.L153: + ldrb w2, [x4,14] +.L161: + add x0, x19, 8 + add x3, x3, :lo12:.LANCHOR0 + add x0, x20, x0, lsl 8 + str w2, [x0,8] + mov w2, 0 + ldrb w4, [x3,119] + cbz w4, .L156 + add x3, x19, 8 + lsl x3, x3, 8 +.L160: + cmp w2, w4 + bcs .L156 + add x5, x20, x3 + lsl w0, w2, 3 + lsr w0, w1, w0 + add w2, w2, 1 + and w0, w0, 255 + str w0, [x5,4] + b .L160 +.L152: + add x0, x19, 8 + mov w1, 112 + add x0, x20, x0, lsl 8 + str w1, [x0,8] +.L156: + add x19, x19, 8 + mov x0, 400 + lsl x19, x19, 8 + bl __const_udelay + ldr w0, [x20,x19] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + uxtb w0, w0 + ret + .size FlashReadStatusEN, .-FlashReadStatusEN + .align 2 + .global FlashWaitReadyEN + .type FlashWaitReadyEN, %function +FlashWaitReadyEN: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp,16] + str x21, [sp,32] + uxtb w19, w0 + mov w20, w1 + uxtb w21, w2 +.L166: + mov w0, w19 + mov w1, w20 + mov w2, w21 + bl FlashReadStatusEN + cmp w0, 255 + mov w3, w0 + beq .L166 + tbz x3, 6, .L166 + ldp x19, x20, [sp,16] + ldr x21, [sp,32] + ldp x29, x30, [sp], 48 + ret + .size FlashWaitReadyEN, .-FlashWaitReadyEN + .align 2 .global ftl_read_flash_info .type ftl_read_flash_info, %function ftl_read_flash_info: @@ -959,36 +1197,36 @@ ftl_read_flash_info: add x1, x1, :lo12:.LANCHOR0 ldr x0, [x1,1912] ldrb w2, [x0,9] - ldr w0, [x1,28] + ldr w0, [x1,92] + add x1, x1, 1676 mul w0, w0, w2 strh w0, [x19,4] - ldrb w0, [x1,4044] + ldrb w0, [x1,2369] strb w0, [x19,7] - ldr w0, [x1,4048] + ldr w0, [x1,2372] str w0, [x19] - ldr x0, [x1,1912] - ldrb w4, [x1,1676] + ldr x0, [x1,236] + ldrb w4, [x1,-4] ldrb w0, [x0,9] strb w0, [x19,6] mov w0, 32 strb w0, [x19,8] - ldr x0, [x1,1912] + ldr x0, [x1,236] ldrb w0, [x0,7] strb w0, [x19,9] mov x0, 0 strb wzr, [x19,10] -.L144: +.L170: cmp w4, w0, uxtb - bls .L146 - add x2, x1, 1680 - ldrb w3, [x19,10] - ldrb w2, [x0,x2] + bls .L172 + ldrb w2, [x0,x1] add x0, x0, 1 + ldrb w3, [x19,10] lsl w2, w5, w2 orr w2, w2, w3 strb w2, [x19,10] - b .L144 -.L146: + b .L170 +.L172: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -1026,7 +1264,7 @@ NandcGetChipIf: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 40 + add x1, x1, 24 add x2, x1, x0 ldr x0, [x1,x0] ldrb w2, [x2,8] @@ -1082,7 +1320,7 @@ NandcSetMode: tst w0, 6 ldr x2, [x1,#:lo12:.LANCHOR0+3976] ldr w1, [x2] - beq .L157 + beq .L183 and w0, w0, 4 orr w1, w1, 24576 cmp w0, wzr @@ -1099,10 +1337,10 @@ NandcSetMode: csel w1, w3, w1, ne mov w0, 39 str w0, [x2,308] - b .L159 -.L157: + b .L185 +.L183: and w1, w1, -8193 -.L159: +.L185: str w1, [x2] mov w0, 0 ret @@ -1114,7 +1352,7 @@ NandcFlashCs: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 40 + add x1, x1, 24 add x3, x1, x0 ldr x2, [x1,x0] mov w1, 1 @@ -1132,7 +1370,7 @@ NandcFlashDeCs: adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 40 + add x1, x1, 24 ldr x1, [x1,x0] ldr w0, [x1] and w0, w0, -256 @@ -1141,225 +1379,87 @@ NandcFlashDeCs: ret .size NandcFlashDeCs, .-NandcFlashDeCs .align 2 - .global NandcDelayns - .type NandcDelayns, %function -NandcDelayns: - sub sp, sp, #16 - lsr w0, w0, 4 - str w0, [sp,12] -.L165: - ldr w0, [sp,12] - sub w1, w0, #1 - str w1, [sp,12] - cbnz w0, .L165 - add sp, sp, 16 - ret - .size NandcDelayns, .-NandcDelayns - .align 2 - .global FlashReadStatus - .type FlashReadStatus, %function -FlashReadStatus: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 - stp x29, x30, [sp, -32]! - add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 40 - add x29, sp, 0 - add x2, x1, x0 - str x19, [sp,16] - ldrb w2, [x2,8] - ldr x19, [x1,x0] - mov w0, 112 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] - mov w0, 80 - bl NandcDelayns - ldr w0, [x19,2048] - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 - ret - .size FlashReadStatus, .-FlashReadStatus - .align 2 - .global ToshibaSetRRPara - .type ToshibaSetRRPara, %function -ToshibaSetRRPara: - uxtb w1, w1 - mov w3, 5 - add w2, w1, 1 - stp x29, x30, [sp, -80]! - smull x3, w2, w3 - adrp x2, .LANCHOR1 - add x29, sp, 0 - add x2, x2, :lo12:.LANCHOR1 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - add x23, x2, x1, sxtw - stp x25, x26, [sp,64] - add x21, x2, 2928 - add x25, x2, 2880 - adrp x24, g_maxRegNum - adrp x26, g_retryMode - stp x19, x20, [sp,16] - mov x22, x0 - add x25, x25, x3 - add x21, x21, x3 - mov x20, 0 - add x24, x24, :lo12:g_maxRegNum - mov x19, x2 - add x26, x26, :lo12:g_retryMode -.L169: - ldrb w0, [x24] - cmp w0, w20 - bls .L175 - mov w0, 85 - str w0, [x22,8] - add x0, x19, 2880 - ldrsb w0, [x20,x0] - str w0, [x22,4] - mov w0, 200 - bl NandcDelayns - ldrb w0, [x26] - cmp w0, 34 - bne .L170 - ldrsb w0, [x25,x20] - b .L174 -.L170: - cmp w0, 35 - bne .L172 - ldrsb w0, [x21,x20] - b .L174 -.L172: - ldrsb w0, [x23,3024] -.L174: - str w0, [x22] - add x20, x20, 1 - b .L169 -.L175: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 80 - ret - .size ToshibaSetRRPara, .-ToshibaSetRRPara - .align 2 - .global SamsungSetRRPara - .type SamsungSetRRPara, %function -SamsungSetRRPara: - stp x29, x30, [sp, -64]! - adrp x2, .LANCHOR1 - add x29, sp, 0 - stp x21, x22, [sp,32] - add x2, x2, :lo12:.LANCHOR1 - adrp x22, g_maxRegNum - stp x19, x20, [sp,16] - add x1, x2, x1, uxtb 2 - stp x23, x24, [sp,48] - mov x21, x0 - add x23, x1, 3036 - mov x20, 0 - add x22, x22, :lo12:g_maxRegNum - mov w24, 161 - mov x19, x2 -.L177: - ldrb w0, [x22] - cmp w0, w20 - bls .L179 - str w24, [x21,8] - add x0, x19, 3032 - str wzr, [x21] - ldrsb w0, [x20,x0] - str w0, [x21] - ldrsb w0, [x23,x20] - add x20, x20, 1 - str w0, [x21] - mov w0, 300 - bl NandcDelayns - b .L177 -.L179: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 - ret - .size SamsungSetRRPara, .-SamsungSetRRPara - .align 2 .global HynixSetRRPara .type HynixSetRRPara, %function HynixSetRRPara: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - mov x21, x2 - adrp x2, .LANCHOR0 stp x19, x20, [sp,16] + mov x20, x2 + adrp x2, .LANCHOR0 add x19, x2, :lo12:.LANCHOR0 - uxtb w20, w3 - stp x25, x26, [sp,64] stp x23, x24, [sp,48] - uxtb x24, w0 + stp x25, x26, [sp,64] + stp x21, x22, [sp,32] + uxtb x23, w0 uxtb w26, w1 ldr x0, [x19,1912] - mov x25, x24 - add x19, x19, 4056 + mov x25, x23 + uxtb w24, w3 ldrb w0, [x0,19] cmp w0, 6 - bne .L181 - add x19, x19, x24, lsl 6 - lsl w4, w20, 2 - add x19, x19, 20 - b .L186 -.L181: + bne .L191 + add x19, x19, x23, lsl 6 + lsl w4, w24, 2 + add x19, x19, 4076 + b .L197 +.L191: cmp w0, 7 - bne .L183 + bne .L193 mov x0, 160 mov w4, 10 - madd x19, x24, x0, x19 - mul w4, w20, w4 - add x19, x19, 28 -.L186: + madd x19, x23, x0, x19 + mul w4, w24, w4 + add x19, x19, 4084 +.L197: add x19, x19, x4, sxtw - b .L182 -.L183: - lsl x4, x24, 3 - add x4, x4, x20, sxtw + b .L192 +.L193: + cmp w0, 8 + bne .L194 + add x19, x19, 4084 + add w4, w24, w24, lsl 2 + b .L197 +.L194: + lsl x4, x23, 3 + add x4, x4, x24, sxtw add x19, x19, x4, lsl 3 - add x19, x19, 20 -.L182: + add x19, x19, 4076 +.L192: add x2, x2, :lo12:.LANCHOR0 - lsl x0, x24, 4 - add x2, x2, 40 + lsl x0, x23, 4 + add x2, x2, 24 uxtb x26, w26 add x1, x2, x0 - ldr x22, [x2,x0] + ldr x21, [x2,x0] mov w0, w25 - ldrb w23, [x1,8] + ldrb w22, [x1,8] bl NandcFlashCs - ubfiz x23, x23, 8, 8 + ubfiz x22, x22, 8, 8 mov w0, 54 - add x22, x22, x23 - mov x23, 0 - str w0, [x22,2056] -.L184: - cmp x23, x26 - beq .L187 - ldrb w0, [x21,x23] - str w0, [x22,2052] - mov w0, 200 - bl NandcDelayns - ldrsb w0, [x19,x23] - add x23, x23, 1 - str w0, [x22,2048] - b .L184 -.L187: + add x21, x21, x22 + mov x22, 0 + str w0, [x21,2056] +.L195: + cmp x22, x26 + beq .L198 + ldrb w0, [x20,x22] + str w0, [x21,2052] + mov x0, 1000 + bl __const_udelay + ldrsb w0, [x19,x22] + add x22, x22, 1 + str w0, [x21,2048] + b .L195 +.L198: mov w0, 22 - str w0, [x22,2056] + str w0, [x21,2056] mov w0, w25 bl NandcFlashDeCs adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - add x24, x0, x24 - strb w20, [x24,560] + add x23, x0, x23 + strb w24, [x23,560] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -1382,118 +1482,32 @@ FlashSetReadRetryDefault: ldrb w0, [x0,19] sub w0, w0, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L188 + cmp w0, 7 + bhi .L199 adrp x21, IDByte add x22, x19, 4060 add x21, x21, :lo12:IDByte -.L193: +.L204: lsl x1, x20, 3 uxtb w0, w20 ldrb w1, [x1,x21] cmp w1, 173 - bne .L190 + bne .L201 ldrb w1, [x19,4057] mov x2, x22 mov w3, 0 bl HynixSetRRPara -.L190: +.L201: add x20, x20, 1 cmp x20, 4 - bne .L193 -.L188: + bne .L204 +.L199: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 2 - .global FlashReadStatusEN - .type FlashReadStatusEN, %function -FlashReadStatusEN: - stp x29, x30, [sp, -32]! - adrp x3, .LANCHOR0 - ubfiz x0, x0, 4, 8 - add x4, x3, :lo12:.LANCHOR0 - add x29, sp, 0 - add x5, x4, 40 - stp x19, x20, [sp,16] - add x6, x5, x0 - uxtb w2, w2 - ldr x20, [x5,x0] - ldr x0, [x4,1912] - ldrb w19, [x6,8] - ldrb w0, [x0,8] - cmp w0, 2 - bne .L196 - add x4, x4, 104 - cbnz w2, .L197 - ldrb w2, [x4,13] - b .L205 -.L197: - ldrb w2, [x4,14] -.L205: - add x0, x19, 8 - add x3, x3, :lo12:.LANCHOR0 - add x0, x20, x0, lsl 8 - str w2, [x0,8] - mov w2, 0 - ldrb w4, [x3,119] - cbz w4, .L200 - add x3, x19, 8 - lsl x3, x3, 8 -.L204: - cmp w2, w4 - bcs .L200 - add x5, x20, x3 - lsl w0, w2, 3 - lsr w0, w1, w0 - add w2, w2, 1 - and w0, w0, 255 - str w0, [x5,4] - b .L204 -.L196: - add x0, x19, 8 - mov w1, 112 - add x0, x20, x0, lsl 8 - str w1, [x0,8] -.L200: - add x19, x19, 8 - mov w0, 80 - lsl x19, x19, 8 - bl NandcDelayns - ldr w0, [x20,x19] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - uxtb w0, w0 - ret - .size FlashReadStatusEN, .-FlashReadStatusEN - .align 2 - .global FlashWaitReadyEN - .type FlashWaitReadyEN, %function -FlashWaitReadyEN: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w0 - mov w20, w1 - uxtb w21, w2 -.L210: - mov w0, w19 - mov w1, w20 - mov w2, w21 - bl FlashReadStatusEN - cmp w0, 255 - mov w3, w0 - beq .L210 - tbz x3, 6, .L210 - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 - ret - .size FlashWaitReadyEN, .-FlashWaitReadyEN - .align 2 .global FlashWaitCmdDone .type FlashWaitCmdDone, %function FlashWaitCmdDone: @@ -1507,13 +1521,13 @@ FlashWaitCmdDone: add x20, x20, :lo12:.LANCHOR0 mov x22, x1 mul x1, x1, x2 - add x0, x20, 1720 + add x0, x20, 1716 add x19, x0, x1 ldrb w21, [x0,x1] ldr x0, [x19,8] - cbz x0, .L215 + cbz x0, .L208 mov w0, w21 - add x20, x20, 1688 + add x20, x20, 1684 bl NandcFlashCs ldr w0, [x20,w22,sxtw 2] ldr w1, [x19,4] @@ -1529,10 +1543,10 @@ FlashWaitCmdDone: str w0, [x1] str xzr, [x19,8] ldr x1, [x19,16] - cbz x1, .L215 + cbz x1, .L208 str w0, [x1] str xzr, [x19,16] -.L215: +.L208: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -1540,6 +1554,50 @@ FlashWaitCmdDone: ret .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 + .global NandcDelayns + .type NandcDelayns, %function +NandcDelayns: + stp x29, x30, [sp, -16]! + uxtw x0, w0 + add x29, sp, 0 + bl __ndelay + mov w0, 0 + ldp x29, x30, [sp], 16 + ret + .size NandcDelayns, .-NandcDelayns + .align 2 + .global NandcWaitFlashReadyNoDelay + .type NandcWaitFlashReadyNoDelay, %function +NandcWaitFlashReadyNoDelay: + stp x29, x30, [sp, -48]! + adrp x1, .LANCHOR0 + ubfiz x0, x0, 4, 8 + add x1, x1, :lo12:.LANCHOR0 + add x29, sp, 0 + add x1, x1, 24 + stp x19, x20, [sp,16] + mov w19, 34464 + ldr x20, [x1,x0] + movk w19, 0x1, lsl 16 +.L216: + ldr w0, [x20] + str w0, [x29,40] + ldr w0, [x29,40] + tbnz x0, 9, .L217 + mov x0, 50 + bl __const_udelay + subs w19, w19, #1 + bne .L216 + mov w0, -1 + b .L215 +.L217: + mov w0, 0 +.L215: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 + ret + .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay + .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function NandcWaitFlashReady: @@ -1548,25 +1606,27 @@ NandcWaitFlashReady: ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 40 + add x1, x1, 24 stp x19, x20, [sp,16] mov w19, 34464 ldr x20, [x1,x0] movk w19, 0x1, lsl 16 -.L222: - mov w0, 100 - bl NandcDelayns + mov x0, 750 + bl __const_udelay +.L221: ldr w0, [x20] str w0, [x29,40] ldr w0, [x29,40] - tbnz x0, 9, .L223 + tbnz x0, 9, .L222 + mov x0, 50 + bl __const_udelay subs w19, w19, #1 - bne .L222 + bne .L221 mov w0, -1 - b .L221 -.L223: + b .L220 +.L222: mov w0, 0 -.L221: +.L220: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret @@ -1581,7 +1641,7 @@ FlashReset: stp x19, x20, [sp,16] add x1, x1, :lo12:.LANCHOR0 uxtb w20, w0 - add x1, x1, 40 + add x1, x1, 24 sbfiz x0, x20, 4, 32 add x2, x1, x0 str x21, [sp,32] @@ -1603,6 +1663,95 @@ FlashReset: ret .size FlashReset, .-FlashReset .align 2 + .global flash_enter_slc_mode + .type flash_enter_slc_mode, %function +flash_enter_slc_mode: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + uxtb w20, w0 + add x19, x19, :lo12:.LANCHOR0 + ldrb w0, [x19,4044] + cbz w0, .L225 + mov w0, w20 + add x19, x19, 24 + bl NandcFlashCs + sbfiz x0, x20, 4, 32 + add x1, x19, x0 + ldr x19, [x19,x0] + mov w0, 239 + ldrb w1, [x1,8] + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov w0, 145 + str w0, [x19,2052] + mov x0, 500 + bl __const_udelay + str wzr, [x19,2048] + mov w0, 1 + str w0, [x19,2048] + str wzr, [x19,2048] + mov x0, 500 + str wzr, [x19,2048] + bl __const_udelay + mov w0, w20 + bl NandcWaitFlashReadyNoDelay + mov w0, 218 + str w0, [x19,2056] + mov w0, w20 + bl NandcWaitFlashReady +.L225: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size flash_enter_slc_mode, .-flash_enter_slc_mode + .align 2 + .global flash_exit_slc_mode + .type flash_exit_slc_mode, %function +flash_exit_slc_mode: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + uxtb w20, w0 + add x19, x19, :lo12:.LANCHOR0 + ldrb w0, [x19,4044] + cbz w0, .L230 + mov w0, w20 + add x19, x19, 24 + bl NandcFlashCs + sbfiz x0, x20, 4, 32 + add x1, x19, x0 + ldr x19, [x19,x0] + mov w0, 239 + ldrb w1, [x1,8] + add x19, x19, x1, lsl 8 + str w0, [x19,2056] + mov w0, 145 + str w0, [x19,2052] + mov x0, 500 + bl __const_udelay + mov w0, 2 + str w0, [x19,2048] + mov w0, 1 + str w0, [x19,2048] + str wzr, [x19,2048] + mov x0, 500 + str wzr, [x19,2048] + bl __const_udelay + mov w0, w20 + bl NandcWaitFlashReadyNoDelay + mov w0, 223 + str w0, [x19,2056] + mov w0, w20 + bl NandcWaitFlashReady +.L230: + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size flash_exit_slc_mode, .-flash_exit_slc_mode + .align 2 .global FlashEraseBlock .type FlashEraseBlock, %function FlashEraseBlock: @@ -1644,7 +1793,7 @@ FlashSetInterfaceMode: adrp x7, IDByte add x29, sp, 0 ldrb w1, [x1,#:lo12:.LANCHOR2+564] - add x3, x3, 40 + add x3, x3, 24 mov x6, 0 add x7, x7, :lo12:IDByte and w11, w1, 1 @@ -1656,68 +1805,68 @@ FlashSetInterfaceMode: mov w12, 35 mov w13, 32 mov w14, 5 -.L238: +.L247: ldrb w4, [x6,x7] ldr x1, [x3] cmp w4, 152 ldrb w2, [x3,8] - beq .L228 + beq .L237 cmp w4, 69 - beq .L228 + beq .L237 cmp w4, 173 - beq .L228 + beq .L237 cmp w4, 44 - bne .L229 -.L228: + bne .L238 +.L237: cmp w0, 1 - bne .L231 - cbz w11, .L229 + bne .L240 + cbz w11, .L238 ubfiz x2, x2, 8, 8 cmp w4, 173 add x1, x1, x2 str w8, [x1,2056] - bne .L232 + bne .L241 str w0, [x1,2052] - b .L249 -.L232: + b .L258 +.L241: cmp w4, 44 - bne .L234 + bne .L243 str w0, [x1,2052] str w14, [x1,2048] - b .L236 -.L234: + b .L245 +.L243: str w9, [x1,2052] str w0, [x1,2048] - b .L236 -.L231: - cbz w5, .L229 + b .L245 +.L240: + cbz w5, .L238 ubfiz x2, x2, 8, 8 cmp w4, 173 add x1, x1, x2 str w8, [x1,2056] - bne .L235 + bne .L244 str w10, [x1,2052] str w13, [x1,2048] - b .L236 -.L235: + b .L245 +.L244: cmp w4, 44 - bne .L237 + bne .L246 str w10, [x1,2052] str w12, [x1,2048] - b .L236 -.L237: + b .L245 +.L246: str w9, [x1,2052] -.L249: +.L258: str wzr, [x1,2048] -.L236: +.L245: str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] -.L229: +.L238: add x6, x6, 8 add x3, x3, 16 cmp x6, 32 - bne .L238 + bne .L247 mov w0, 0 bl NandcWaitFlashReady mov w0, 0 @@ -1728,15 +1877,15 @@ FlashSetInterfaceMode: .global FlashReadSpare .type FlashReadSpare, %function FlashReadSpare: - adrp x3, .LANCHOR1+265 + adrp x3, .LANCHOR1+481 adrp x5, .LANCHOR0 stp x29, x30, [sp, -48]! uxtb w0, w0 add x5, x5, :lo12:.LANCHOR0 - add x5, x5, 40 + add x5, x5, 24 sbfiz x6, x0, 4, 32 add x29, sp, 0 - ldrb w4, [x3,#:lo12:.LANCHOR1+265] + ldrb w4, [x3,#:lo12:.LANCHOR1+481] add x3, x5, x6 str x19, [sp,16] lsl w4, w4, 9 @@ -1773,7 +1922,7 @@ SandiskProgTestBadBlock: stp x29, x30, [sp, -32]! add x3, x3, :lo12:.LANCHOR0 sbfiz x4, x0, 4, 32 - add x3, x3, 40 + add x3, x3, 24 add x29, sp, 0 add x2, x3, x4 str x19, [sp,16] @@ -1797,8 +1946,8 @@ SandiskProgTestBadBlock: bl NandcWaitFlashReady mov w0, 112 str w0, [x19,2056] - mov w0, 80 - bl NandcDelayns + mov x0, 400 + bl __const_udelay ldr w0, [x19,2048] ldr x19, [sp,16] and w0, w0, 1 @@ -1819,37 +1968,37 @@ SandiskSetRRPara: str w0, [x20,8] mov w0, 17 str w0, [x20,4] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay mov w1, 5 adrp x2, .LANCHOR1 add x2, x2, :lo12:.LANCHOR1 adrp x0, g_maxRegNum smull x1, w19, w1 - add x3, x2, 2880 + add x3, x2, 256 adrp x4, g_retryMode - add x2, x2, 2928 + add x2, x2, 304 add x3, x3, x1 add x0, x0, :lo12:g_maxRegNum add x1, x2, x1 add x4, x4, :lo12:g_retryMode mov x2, 0 -.L253: +.L262: ldrb w5, [x0] cmp w5, w2 - bls .L258 + bls .L267 ldrb w5, [x4] cmp w5, 67 - bne .L254 + bne .L263 ldrsb w5, [x3,x2] - b .L257 -.L254: + b .L266 +.L263: ldrsb w5, [x1,x2] -.L257: +.L266: str w5, [x20] add x2, x2, 1 - b .L253 -.L258: + b .L262 +.L267: mov w0, 0 bl NandcWaitFlashReady ldp x19, x20, [sp,16] @@ -1870,7 +2019,7 @@ micron_auto_read_calibration_config: bl NandcWaitFlashReady adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 - add x3, x3, 40 + add x3, x3, 24 add x0, x3, x19 ldr x19, [x3,x19] ldrb w2, [x0,8] @@ -1879,8 +2028,8 @@ micron_auto_read_calibration_config: str w0, [x19,2056] mov w0, 150 str w0, [x19,2052] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay ldr x1, [x29,40] str w1, [x19,2048] str wzr, [x19,2048] @@ -1906,11 +2055,11 @@ FlashEraseSLc2KBlocks: mov w24, w1 mov x20, x0 mov w22, 0 - add x25, x21, 1720 + add x25, x21, 1676 add x23, x23, :lo12:.LC1 -.L261: +.L270: cmp w22, w24 - beq .L270 + beq .L279 add x2, x29, 88 sub w4, w24, w22 mov x0, x20 @@ -1918,20 +2067,19 @@ FlashEraseSLc2KBlocks: add x3, x29, 92 bl LogAddr2PhyAddr ldr w2, [x29,92] - ldrb w0, [x21,1676] + ldrb w0, [x21,1672] cmp w2, w0 - bcc .L262 + bcc .L271 mov w0, -1 str w0, [x20] - b .L263 -.L262: + b .L272 +.L271: uxtw x2, w2 - add x0, x21, x2 - ldrb w19, [x0,1680] mov x0, 24 - mul x2, x2, x0 + ldrb w19, [x25,x2] + madd x2, x2, x0, x21 mov w0, w19 - strb w19, [x25,x2] + strb w19, [x2,1716] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs @@ -1948,7 +2096,7 @@ FlashEraseSLc2KBlocks: str w0, [x20] mov w0, w19 ldr w1, [x29,88] - ldr w2, [x21,28] + ldr w2, [x21,92] add w1, w2, w1 mov w2, 0 bl FlashEraseCmd @@ -1957,24 +2105,24 @@ FlashEraseSLc2KBlocks: ldr w1, [x29,88] mov w0, w19 bl FlashReadStatus - tbz x0, 0, .L264 + tbz x0, 0, .L273 mov w0, -1 str w0, [x20] -.L264: +.L273: ldr w0, [x20] cmn w0, #1 - bne .L265 + bne .L274 ldr w1, [x29,88] mov x0, x23 bl printk -.L265: +.L274: mov w0, w19 bl NandcFlashDeCs -.L263: +.L272: add w22, w22, 1 add x20, x20, 56 - b .L261 -.L270: + b .L270 +.L279: mov w0, 0 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -2008,16 +2156,16 @@ HynixGetReadRetryDefault: mov w0, -81 strb w3, [x1,6] strb w0, [x1,7] - bne .L272 + bne .L281 mov w0, -89 strb w0, [x1,4] - adrp x0, .LANCHOR1+3113 + adrp x0, .LANCHOR1+3241 mov w1, -9 - strb w1, [x0,#:lo12:.LANCHOR1+3113] - b .L327 -.L272: + strb w1, [x0,#:lo12:.LANCHOR1+3241] + b .L344 +.L281: cmp w26, 3 - bne .L274 + bne .L283 mov w0, -80 strb w0, [x1,4] mov w0, -79 @@ -2033,10 +2181,10 @@ HynixGetReadRetryDefault: mov w0, -74 strb w0, [x1,10] mov w0, -73 - b .L360 -.L274: + b .L384 +.L283: cmp w26, 4 - bne .L275 + bne .L284 mov w5, -52 strb w5, [x1,4] mov w5, -65 @@ -2049,40 +2197,40 @@ HynixGetReadRetryDefault: mov w5, -51 strb w3, [x1,10] strb w5, [x1,8] -.L360: - mov w27, 8 +.L384: + mov w28, 8 strb w0, [x1,11] - mov w28, w27 - b .L273 -.L275: + mov w27, w28 + b .L282 +.L284: cmp w26, 5 - bne .L276 + bne .L285 mov w0, 56 strb w0, [x1,4] mov w0, 57 strb w0, [x1,5] mov w0, 58 - mov w27, 8 + mov w28, 8 strb w0, [x1,6] mov w0, 59 strb w0, [x1,7] - b .L359 -.L276: + b .L385 +.L285: cmp w26, 6 - bne .L277 + bne .L286 mov w0, 14 strb w0, [x1,4] mov w0, 15 strb w0, [x1,5] mov w0, 16 - mov w27, 12 + mov w28, 12 strb w0, [x1,6] mov w0, 17 strb w0, [x1,7] - b .L359 -.L277: + b .L385 +.L286: cmp w26, 7 - bne .L327 + bne .L287 mov w0, -80 strb w0, [x1,4] mov w0, -79 @@ -2100,63 +2248,78 @@ HynixGetReadRetryDefault: mov w0, -73 strb w0, [x1,11] mov w0, -44 - mov w27, 12 + mov w28, 12 strb w0, [x1,12] - mov w28, 10 + mov w27, 10 mov w0, -43 strb w0, [x1,13] - b .L273 -.L327: - mov w27, 7 -.L359: - mov w28, 4 -.L273: + b .L282 +.L287: + cmp w26, 8 + bne .L344 + mov w0, 6 + strb w0, [x1,4] + mov w0, 7 + strb w0, [x1,5] + mov w0, 9 + strb w26, [x1,6] + strb w0, [x1,7] + mov w28, 50 + mov w0, 10 + mov w27, 5 + strb w0, [x1,8] + b .L282 +.L344: + mov w28, 7 +.L385: + mov w27, 4 +.L282: sub w0, w26, #1 cmp w0, 1 - bhi .L356 + bhi .L381 adrp x22, .LANCHOR1 add x25, x20, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR1 mov w21, 0 + add x3, x25, 1676 add x26, x25, 4056 - add x3, x25, 40 - add x22, x22, 3096 -.L278: - ldrb w0, [x25,1676] + add x22, x22, 3224 +.L288: + ldrb w0, [x25,1672] cmp w0, w21 - bls .L285 - add x0, x25, x21, sxtw - ldrb w0, [x0,1680] + bls .L295 + ldrb w0, [x3,w21,sxtw] + add x1, x25, 24 mov x23, 0 add x19, x26, x0, lsl 6 lsl x0, x0, 4 - add x1, x3, x0 + add x2, x1, x0 add x19, x19, 20 - ldr x24, [x3,x0] - ldrb w0, [x1,8] + ldr x24, [x1,x0] mov w1, 55 + ldrb w0, [x2,8] add x24, x24, x0, lsl 8 -.L280: +.L290: add x0, x26, x23 str w1, [x24,2056] str x3, [x29,128] str x1, [x29,136] ldrb w0, [x0,4] str w0, [x24,2052] - mov w0, 80 - bl NandcDelayns + mov x0, 400 + bl __const_udelay ldr w0, [x24,2048] strb w0, [x19,x23] add x23, x23, 1 ldr x1, [x29,136] - cmp w28, w23, uxtb + cmp w27, w23, uxtb ldr x3, [x29,128] - bhi .L280 + bhi .L290 mov x0, 0 -.L281: +.L291: add w2, w0, 8 mov x1, 0 -.L282: +.L292: add x5, x1, x0 add x1, x1, 4 add x5, x22, x5 @@ -2166,10 +2329,10 @@ HynixGetReadRetryDefault: add w5, w6, w5 strb w5, [x19,w2,sxtw] add w2, w2, 8 - bne .L282 + bne .L292 add x0, x0, 1 cmp x0, 4 - bne .L281 + bne .L291 add w21, w21, 1 strb wzr, [x19,16] strb wzr, [x19,24] @@ -2179,96 +2342,100 @@ HynixGetReadRetryDefault: strb wzr, [x19,48] strb wzr, [x19,41] strb wzr, [x19,49] - b .L278 -.L356: + b .L288 +.L381: sub w0, w26, #3 - cmp w0, 4 - bhi .L285 - mul w25, w28, w27 - sub w23, w28, #1 + cmp w0, 5 + bhi .L295 + mul w25, w27, w28 + sub w24, w27, #1 mov w21, 0 lsl w0, w25, 4 - asr w22, w25, 2 - str w0, [x29,124] + asr w23, w25, 1 + str w0, [x29,128] add x25, x20, :lo12:.LANCHOR0 - lsl w0, w22, 1 - uxtb x23, w23 - str w0, [x29,120] - add x0, x25, 40 - add x23, x23, 1 - str x0, [x29,128] + lsl w0, w23, 1 + uxtb x24, w24 + str w0, [x29,124] + add x0, x25, 1676 + add x24, x24, 1 + str x0, [x29,112] sub w0, w26, #5 str w0, [x29,136] -.L286: - ldrb w0, [x25,1676] +.L296: + ldrb w0, [x25,1672] cmp w0, w21 - bhi .L326 -.L285: + bhi .L342 +.L295: add x20, x20, :lo12:.LANCHOR0 ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - strb w28, [x20,4057] - strb w27, [x20,4058] + strb w27, [x20,4057] + strb w28, [x20,4058] ldp x25, x26, [sp,64] ldp x19, x20, [sp,16] ldp x27, x28, [sp,80] ldp x29, x30, [sp], 144 ret -.L326: - add x0, x25, x21, sxtw - ldrb w1, [x0,1680] - str x1, [x29,112] - lsl x0, x1, 4 - mov x24, x1 - ldr x1, [x29,128] - add x6, x1, x0 - ldr x0, [x1,x0] - ldrb w19, [x6,8] +.L342: + ldr x0, [x29,112] + ldrb w5, [x0,w21,sxtw] + add x0, x25, 24 + str x5, [x29,104] + lsl x1, x5, 4 + mov x22, x5 + add x7, x0, x1 + ldr x0, [x0,x1] + ldrb w19, [x7,8] add x19, x0, x19, lsl 8 mov w0, 255 str w0, [x19,2056] - mov w0, w24 + mov w0, w5 bl NandcWaitFlashReady cmp w26, 7 - add x6, x25, 4056 - ldr x1, [x29,112] - beq .L287 - add x1, x6, x1, lsl 6 - add x6, x1, 20 - b .L288 -.L287: + ldr x5, [x29,104] + bne .L297 mov x0, 160 - madd x1, x1, x0, x6 - add x6, x1, 28 -.L288: + madd x5, x5, x0, x25 + add x5, x5, 4084 + b .L298 +.L297: + cmp w26, 8 + beq .L299 + add x5, x25, x5, lsl 6 + add x5, x5, 4076 +.L298: mov w0, 54 cmp w26, 4 str w0, [x19,2056] - bne .L289 + bne .L300 mov w0, 255 str w0, [x19,2052] mov w0, 64 str w0, [x19,2048] mov w0, 204 - b .L361 -.L289: + b .L386 +.L300: ldr w0, [x29,136] cmp w0, 1 - bhi .L291 + bhi .L302 ldrb w0, [x25,4060] str w0, [x19,2052] mov w0, 82 - b .L362 -.L291: + b .L387 +.L302: + cmp w26, 7 + bne .L301 mov w0, 174 str w0, [x19,2052] str wzr, [x19,2048] mov w0, 176 -.L361: +.L386: str w0, [x19,2052] mov w0, 77 -.L362: +.L387: str w0, [x19,2048] +.L301: mov w0, 22 str w0, [x19,2056] mov w0, 23 @@ -2277,162 +2444,195 @@ HynixGetReadRetryDefault: str w0, [x19,2056] mov w0, 25 str w0, [x19,2056] - cmp w26, 6 str wzr, [x19,2056] + cmp w26, 6 str wzr, [x19,2052] str wzr, [x19,2052] - bne .L292 + bne .L303 mov w0, 31 str w0, [x19,2052] - b .L293 -.L292: + b .L304 +.L303: str wzr, [x19,2052] -.L293: - mov w7, 2 - str w7, [x19,2052] +.L304: + mov w0, 2 + str w0, [x19,2052] str wzr, [x19,2052] +.L343: mov w0, 48 str w0, [x19,2056] - mov w0, w24 - str x6, [x29,104] - str x7, [x29,112] + mov w0, w22 + str x5, [x29,104] bl NandcWaitFlashReady ldr w0, [x29,136] - mov w1, 16 - ldr x6, [x29,104] + ldr x5, [x29,104] cmp w0, 1 - bls .L295 - ldr x7, [x29,112] + cset w8, ls + cmp w26, 8 + cset w7, eq + cbnz w8, .L346 + cbnz w7, .L346 cmp w26, 7 mov w1, 32 - csel w1, w1, w7, eq -.L295: + mov w0, 2 + csel w1, w0, w1, ne + b .L305 +.L346: + mov w1, 16 +.L305: ldr x0, [x25] - mov x7, 0 -.L296: - ldr w8, [x19,2048] - strb w8, [x0,x7] - add x7, x7, 1 - cmp w1, w7, uxtb - bhi .L296 - cmp w26, 7 - bne .L297 + mov x9, 0 +.L306: + ldr w10, [x19,2048] + strb w10, [x0,x9] + add x9, x9, 1 + cmp w1, w9, uxtb + bhi .L306 + cbz w7, .L307 mov w1, 0 -.L299: - ldrb w7, [x0] - cmp w7, 12 - beq .L298 - ldrb w7, [x0,1] - cmp w7, 10 - beq .L298 +.L309: + ldrb w9, [x0] + cmp w9, 50 + beq .L308 + ldrb w9, [x0,1] + cmp w9, 5 + beq .L308 add w1, w1, 1 add x0, x0, 4 uxtb w1, w1 cmp w1, 8 - bne .L299 - b .L300 -.L298: - cmp w1, 7 - bne .L301 -.L300: + bne .L309 + b .L310 +.L308: + cmp w1, 6 + bls .L311 +.L310: adrp x0, .LC2 mov w1, 0 add x0, x0, :lo12:.LC2 bl printk -.L302: - b .L302 -.L297: +.L312: + b .L312 +.L307: + cmp w26, 7 + bne .L313 + mov w1, w7 +.L315: + ldrb w9, [x0] + cmp w9, 12 + beq .L314 + ldrb w9, [x0,1] + cmp w9, 10 + beq .L314 + add w1, w1, 1 + add x0, x0, 4 + uxtb w1, w1 + cmp w1, 8 + bne .L315 + b .L316 +.L314: + cmp w1, 7 + bne .L311 +.L316: + adrp x0, .LC2 + mov w1, 0 + add x0, x0, :lo12:.LC2 + bl printk +.L317: + b .L317 +.L313: cmp w26, 6 - bne .L301 + bne .L311 mov x1, 0 -.L303: - ldrb w7, [x0,x1] - cmp w7, 12 - beq .L301 - add x7, x0, x1 - ldrb w7, [x7,8] - cmp w7, 4 - beq .L301 +.L318: + ldrb w9, [x0,x1] + cmp w9, 12 + beq .L311 + add x9, x0, x1 + ldrb w9, [x9,8] + cmp w9, 4 + beq .L311 add x1, x1, 1 cmp x1, 8 - bne .L303 + bne .L318 adrp x0, .LC2 mov w1, 0 add x0, x0, :lo12:.LC2 bl printk -.L305: - b .L305 -.L301: - ldr x9, [x25] +.L320: + b .L320 +.L311: + ldr x10, [x25] mov x0, 0 -.L306: - ldr w1, [x29,124] +.L321: + ldr w1, [x29,128] cmp w1, w0 - ble .L363 + ble .L389 ldr w1, [x19,2048] - strb w1, [x9,x0] + strb w1, [x10,x0] add x0, x0, 1 - b .L306 -.L363: - ldr x11, [x25] - mov w8, w22 - mov w7, 8 -.L309: + b .L321 +.L389: + ldr x12, [x25] + mov w11, w23 + mov w9, 8 +.L324: mov w0, 0 -.L308: - add w1, w0, w8 +.L323: + add w1, w0, w11 add w0, w0, 1 - sbfiz x1, x1, 2, 32 - cmp w0, w22 - ldr w10, [x11,x1] - mvn w10, w10 - str w10, [x11,x1] - bne .L308 - ldr w0, [x29,120] - subs w7, w7, #1 - add w8, w8, w0 - bne .L309 - mov x7, 0 - mov w15, 1 -.L310: + sbfiz x1, x1, 1, 32 + cmp w0, w23 + ldrh w13, [x12,x1] + mvn w13, w13 + strh w13, [x12,x1] + bne .L323 + ldr w0, [x29,124] + subs w9, w9, #1 + add w11, w11, w0 + bne .L324 + mov x9, 0 + mov w17, 1 +.L325: mov w1, 0 - ldr x14, [x25] - mov w10, w1 -.L314: - lsl w8, w15, w10 - mov w12, w7 + mov w11, w1 +.L329: + lsl w13, w17, w11 + mov w15, w9 mov w0, 16 - mov w11, 0 -.L312: - ldr w13, [x14,w12,sxtw 2] - add w12, w12, w22 - and w13, w8, w13 - cmp w13, w8 - csinc w11, w11, w11, ne + mov w14, 0 +.L327: + ldrh w16, [x12,w15,sxtw 1] + add w15, w15, w23 + and w16, w16, w13 + cmp w16, w13 + csinc w14, w14, w14, ne subs w0, w0, #1 - bne .L312 - cmp w11, 9 - orr w8, w1, w8 - add w10, w10, 1 - csel w1, w8, w1, cs - cmp w10, 32 - bne .L314 - str w1, [x14,x7,lsl 2] - add x7, x7, 1 - cmp w22, w7 - bgt .L310 - mov x7, 0 + bne .L327 + cmp w14, 8 + bls .L328 + orr w1, w1, w13 + uxth w1, w1 +.L328: + add w11, w11, 1 + cmp w11, 16 + bne .L329 + strh w1, [x12,x9,lsl 1] + add x9, x9, 1 + cmp w23, w9 + bgt .L325 + mov x9, 0 ldr x1, [x25] - mov w8, w7 -.L317: - ldr w10, [x1,x7] - add x7, x7, 4 - cmp w10, wzr - csinc w8, w8, w8, ne - cmp x7, 32 - bne .L317 - cmp w8, 7 - ble .L318 + mov w11, w9 +.L332: + ldr w12, [x1,x9] + add x9, x9, 4 + cmp w12, wzr + csinc w11, w11, w11, ne + cmp x9, 32 + bne .L332 + cmp w11, 7 + ble .L333 adrp x0, .LC3 mov w2, 1 add x0, x0, :lo12:.LC3 @@ -2442,39 +2642,44 @@ HynixGetReadRetryDefault: mov w1, 0 add x0, x0, :lo12:.LC2 bl printk -.L319: - b .L319 -.L318: +.L334: + b .L334 +.L333: cmp w26, 6 - mov w7, 4 - beq .L320 + mov w9, 4 + beq .L335 cmp w26, 7 - mov w7, 10 + mov w9, 10 + beq .L335 + cmp w7, wzr + mov w9, 5 mov w1, 8 - csel w7, w1, w7, ne -.L320: - mov w8, 0 -.L321: + csel w9, w1, w9, eq +.L335: + mov w11, 0 +.L336: mov x1, 0 -.L322: - add w10, w0, w1 - ldrb w11, [x9,x1] +.L337: + add w12, w0, w1 + ldrb w13, [x10,x1] add x1, x1, 1 - cmp w28, w1, uxtb - strb w11, [x6,w10,sxtw] - bhi .L322 - add w8, w8, 1 - add x9, x9, x23 - cmp w8, w27 - add w0, w0, w7 - blt .L321 + cmp w27, w1, uxtb + strb w13, [x5,w12,sxtw] + bhi .L337 + add w11, w11, 1 + add x10, x10, x24 + cmp w11, w28 + add w0, w0, w9 + blt .L336 mov w0, 255 str w0, [x19,2056] - mov w0, w24 + mov w0, w22 + str x7, [x29,96] + str x8, [x29,104] bl NandcWaitFlashReady - ldr w0, [x29,136] - cmp w0, 1 - bhi .L324 + ldr x8, [x29,104] + ldr x7, [x29,96] + cbz w8, .L339 mov w0, 54 str w0, [x19,2056] adrp x0, .LANCHOR0+4060 @@ -2486,16 +2691,42 @@ HynixGetReadRetryDefault: str w0, [x19,2056] mov w0, w21 bl FlashReadCmd - b .L325 -.L324: + b .L340 +.L339: + mov w0, 190 + cbnz w7, .L388 mov w0, 56 +.L388: str w0, [x19,2056] -.L325: - mov w0, w24 +.L340: + mov w0, w22 add w21, w21, 1 bl NandcWaitFlashReady uxtb w21, w21 - b .L286 + b .L296 +.L299: + mov w0, 120 + str w0, [x19,2056] + str wzr, [x19,2052] + mov w0, 23 + str wzr, [x19,2052] + mov w1, 25 + str wzr, [x19,2052] + add x5, x25, 4084 + str w0, [x19,2056] + mov w0, 4 + str w0, [x19,2056] + str w1, [x19,2056] + mov w1, 218 + str w1, [x19,2056] + mov w1, 21 + str wzr, [x19,2056] + str wzr, [x19,2052] + str wzr, [x19,2052] + str w1, [x19,2052] + str w0, [x19,2052] + str wzr, [x19,2052] + b .L343 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 2 .global FlashGetReadRetryDefault @@ -2504,15 +2735,15 @@ FlashGetReadRetryDefault: stp x29, x30, [sp, -16]! mov w1, w0 add x29, sp, 0 - cbz w0, .L364 + cbz w0, .L390 sub w2, w0, #1 - cmp w2, 6 - bhi .L366 + cmp w2, 7 + bhi .L392 bl HynixGetReadRetryDefault - b .L364 -.L366: + b .L390 +.L392: cmp w0, 49 - bne .L367 + bne .L393 adrp x0, .LANCHOR0 mov w2, 64 add x0, x0, :lo12:.LANCHOR0 @@ -2524,46 +2755,46 @@ FlashGetReadRetryDefault: strb w1, [x0,-2] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 3032 - b .L382 -.L367: + add x1, x1, 408 + b .L408 +.L393: sub w0, w0, #65 cmp w0, 1 - bls .L373 + bls .L399 cmp w1, 33 - bne .L368 -.L373: + bne .L394 +.L399: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 strb w1, [x0,4056] mov w1, 4 - b .L383 -.L368: + b .L409 +.L394: cmp w1, 67 - beq .L374 + beq .L400 cmp w1, 34 - bne .L370 -.L374: + bne .L396 +.L400: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 strb w1, [x0,4056] mov w1, 5 -.L383: +.L409: strb w1, [x0,4057] mov w1, 7 strb w1, [x0,4058] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 add x0, x0, 4060 - add x1, x1, 2880 + add x1, x1, 256 mov w2, 45 - b .L382 -.L370: + b .L408 +.L396: cmp w1, 68 - beq .L375 + beq .L401 cmp w1, 35 - bne .L364 -.L375: + bne .L390 +.L401: adrp x0, .LANCHOR0 mov w2, 95 add x0, x0, :lo12:.LANCHOR0 @@ -2575,10 +2806,10 @@ FlashGetReadRetryDefault: strb w1, [x0,-2] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 2928 -.L382: + add x1, x1, 304 +.L408: bl ftl_memcpy -.L364: +.L390: ldp x29, x30, [sp], 16 ret .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault @@ -2592,7 +2823,7 @@ FlashReadDpCmd: stp x21, x22, [sp,32] add x3, x3, :lo12:.LANCHOR0 uxtb w21, w0 - add x4, x3, 40 + add x4, x3, 24 sbfiz x0, x21, 4, 32 add x3, x3, 104 str x23, [sp,48] @@ -2608,7 +2839,7 @@ FlashReadDpCmd: cmp w0, 1 and w5, w1, 255 lsr w0, w1, 16 - bne .L385 + bne .L411 add x19, x6, x19, lsl 8 ldrb w2, [x3,8] str x1, [x29,72] @@ -2631,8 +2862,8 @@ FlashReadDpCmd: str w20, [x19,2052] str w0, [x19,2056] ldr x1, [x29,72] - b .L386 -.L385: + b .L412 +.L411: add x19, x6, x19, lsl 8 ldrb w2, [x3,8] str w2, [x19,2056] @@ -2646,7 +2877,7 @@ FlashReadDpCmd: str w22, [x19,2052] str w20, [x19,2052] str w0, [x19,2056] -.L386: +.L412: mov w0, w21 bl FlashSetRandomizer ldr x23, [sp,48] @@ -2667,27 +2898,27 @@ ftl_flash_de_init: bl NandcWaitFlashReady bl FlashSetReadRetryDefault add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,568] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L388 + ldr w0, [x0,568] + cbz w0, .L414 mov w0, 0 bl flash_enter_slc_mode -.L388: + b .L415 +.L414: + bl flash_exit_slc_mode +.L415: add x19, x19, :lo12:.LANCHOR2 ldrb w0, [x19,572] - cbz w0, .L389 + cbz w0, .L416 ldrb w0, [x19,564] - tbz x0, 0, .L389 + tbz x0, 0, .L416 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x19,572] -.L389: - adrp x0, .LANCHOR0+40 - ldr x0, [x0,#:lo12:.LANCHOR0+40] +.L416: + adrp x0, .LANCHOR0+24 + ldr x0, [x0,#:lo12:.LANCHOR0+24] str wzr, [x0,336] mov w0, 0 ldr x19, [sp,16] @@ -2701,7 +2932,7 @@ NandcRandmzSel: adrp x2, .LANCHOR0 ubfiz x0, x0, 4, 8 add x2, x2, :lo12:.LANCHOR0 - add x2, x2, 40 + add x2, x2, 24 ldr x0, [x2,x0] str w1, [x0,336] ret @@ -2722,37 +2953,37 @@ NandcTimeCfg: add x1, x1, :lo12:.LANCHOR0 sdiv w0, w0, w2 cmp w0, 250 - ble .L398 + ble .L425 ldr x0, [x1,3976] mov w1, 8354 - b .L405 -.L398: + b .L432 +.L425: cmp w0, 220 - ble .L400 + ble .L427 ldr x0, [x1,3976] - b .L406 -.L400: + b .L433 +.L427: cmp w0, 185 - ble .L401 + ble .L428 ldr x0, [x1,3976] mov w1, 4226 - b .L405 -.L401: + b .L432 +.L428: cmp w0, 160 ldr x0, [x1,3976] - ble .L402 + ble .L429 mov w1, 4194 - b .L405 -.L402: + b .L432 +.L429: cmp w19, 35 mov w1, 4193 - bls .L405 + bls .L432 cmp w19, 99 mov w1, 4225 - bls .L405 -.L406: + bls .L432 +.L433: mov w1, 8322 -.L405: +.L432: str w1, [x0,4] ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -2768,17 +2999,17 @@ FlashTimingCfg: and w1, w1, -33 cmp w1, 1 add x29, sp, 0 - bls .L408 + bls .L435 mov w1, 8322 cmp w0, w1 - bne .L409 -.L408: + bne .L436 +.L435: adrp x1, .LANCHOR0+3976 ldr x1, [x1,#:lo12:.LANCHOR0+3976] str w0, [x1,4] -.L409: - adrp x0, .LANCHOR1+277 - ldrb w0, [x0,#:lo12:.LANCHOR1+277] +.L436: + adrp x0, .LANCHOR1+493 + ldrb w0, [x0,#:lo12:.LANCHOR1+493] bl NandcTimeCfg ldp x29, x30, [sp], 16 ret @@ -2795,17 +3026,17 @@ NandcInit: adrp x20, .LANCHOR0 mov x19, x1 add x2, x20, :lo12:.LANCHOR0 - str w3, [x2,64] + str w3, [x2,48] mov w3, 2 - str wzr, [x2,48] - str w3, [x2,80] + str wzr, [x2,32] + str w3, [x2,64] mov w3, 3 - str x0, [x2,40] - str w3, [x2,96] + str x0, [x2,24] + str w3, [x2,80] add x3, x1, :lo12:.LANCHOR2 + str x0, [x2,40] str x0, [x2,56] str x0, [x2,72] - str x0, [x2,88] str x0, [x2,3976] ldr w2, [x0] ubfx x4, x2, 13, 1 @@ -2816,12 +3047,12 @@ NandcInit: ubfx x4, x4, 16, 4 str w4, [x3,580] ldr w4, [x0,352] - str w4, [x3,568] + str w4, [x3,584] cmp w4, 2049 - bne .L411 + bne .L438 mov w1, 8 str w1, [x3,580] -.L411: +.L438: add x20, x20, :lo12:.LANCHOR0 str w2, [x0] ldr x0, [x20,3976] @@ -2837,12 +3068,12 @@ NandcInit: mov w0, 36864 bl ftl_malloc add x1, x19, :lo12:.LANCHOR2 - str x0, [x1,584] str x0, [x1,592] - add x0, x0, 32768 - str wzr, [x1,632] str x0, [x1,600] + add x0, x0, 32768 str wzr, [x1,640] + str x0, [x1,608] + str wzr, [x1,648] ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -2880,24 +3111,24 @@ NandcBchSel: ldr x2, [x1,#:lo12:.LANCHOR0+3976] mov w1, 1 str w1, [x2,8] - adrp x1, .LANCHOR2+644 - str w0, [x1,#:lo12:.LANCHOR2+644] + adrp x1, .LANCHOR2+652 + str w0, [x1,#:lo12:.LANCHOR2+652] mov w1, 4096 - bne .L414 -.L417: + bne .L441 +.L444: and w1, w1, -17 - b .L415 -.L414: + b .L442 +.L441: cmp w0, 24 - bne .L416 + bne .L443 orr w1, w1, 16 - b .L415 -.L416: + b .L442 +.L443: cmp w0, 40 orr w1, w1, 262144 orr w1, w1, 16 - beq .L417 -.L415: + beq .L444 +.L442: orr w1, w1, 1 str w1, [x2,12] ret @@ -2907,10 +3138,10 @@ NandcBchSel: .type FlashBchSel, %function FlashBchSel: stp x29, x30, [sp, -16]! - adrp x1, .LANCHOR0+4044 + adrp x1, .LANCHOR0+4045 uxtb w0, w0 add x29, sp, 0 - strb w0, [x1,#:lo12:.LANCHOR0+4044] + strb w0, [x1,#:lo12:.LANCHOR0+4045] bl NandcBchSel ldp x29, x30, [sp], 16 ret @@ -2920,66 +3151,67 @@ FlashBchSel: .type ftl_flash_resume, %function ftl_flash_resume: stp x29, x30, [sp, -48]! - adrp x0, .LANCHOR0 - add x1, x0, :lo12:.LANCHOR0 add x29, sp, 0 stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, IDByte - mov x19, 0 - ldr x2, [x1,3976] - mov x22, x0 - ldr w3, [x1,3984] - add x20, x20, :lo12:IDByte - ldr w21, [x1,4000] - str w3, [x2] - ldr w3, [x1,3988] - ldr x2, [x1,3976] - str w3, [x2,4] - ldr w3, [x1,3992] - ldr x2, [x1,3976] - str w3, [x2,8] - ldr w3, [x1,3996] - str w3, [x2,12] - str w21, [x2,304] - ldr w3, [x1,4004] - str w3, [x2,308] - ldr w3, [x1,4008] - str w3, [x2,336] - ldr w1, [x1,4012] - str w1, [x2,344] -.L424: - lsl x0, x19, 3 - ldrb w1, [x0,x20] - sub w1, w1, #1 - uxtb w1, w1 - cmp w1, 253 - bhi .L423 - mov w0, w19 + adrp x19, .LANCHOR0 + str x21, [sp,32] + add x0, x19, :lo12:.LANCHOR0 + adrp x21, IDByte + mov x20, 0 + add x21, x21, :lo12:IDByte + ldr x1, [x0,3976] + ldr w2, [x0,3984] + str w2, [x1] + ldr w2, [x0,3988] + ldr x1, [x0,3976] + str w2, [x1,4] + ldr w2, [x0,3992] + ldr x1, [x0,3976] + str w2, [x1,8] + ldr w2, [x0,3996] + str w2, [x1,12] + ldr w2, [x0,4000] + str w2, [x1,304] + ldr w2, [x0,4004] + str w2, [x1,308] + ldr w2, [x0,4008] + str w2, [x1,336] + ldr w0, [x0,4012] + str w0, [x1,344] +.L451: + lsl x0, x20, 3 + ldrb w0, [x0,x21] + sub w0, w0, #1 + uxtb w0, w0 + cmp w0, 253 + bhi .L450 + mov w0, w20 bl FlashReset -.L423: - add x19, x19, 1 - cmp x19, 4 - bne .L424 - adrp x19, .LANCHOR2 - add x19, x19, :lo12:.LANCHOR2 - ldrb w0, [x19,572] - cbz w0, .L425 +.L450: + add x20, x20, 1 + cmp x20, 4 + bne .L451 + adrp x20, .LANCHOR2 + add x20, x20, :lo12:.LANCHOR2 + ldrb w0, [x20,572] + cbz w0, .L452 mov w0, 1 bl NandcSetMode - ldrb w0, [x19,564] + ldrb w0, [x20,564] bl FlashSetInterfaceMode - ldrb w0, [x19,564] + ldrb w0, [x20,564] bl NandcSetMode - lsr w0, w21, 8 + add x0, x19, :lo12:.LANCHOR0 + ldr w0, [x0,4000] + lsr w0, w0, 8 bl NandcSetDdrPara -.L425: - add x0, x22, :lo12:.LANCHOR0 - ldr x0, [x0,1912] +.L452: + add x19, x19, :lo12:.LANCHOR0 + ldr x0, [x19,1912] ldrb w0, [x0,20] bl FlashBchSel + ldr x21, [sp,32] ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size ftl_flash_resume, .-ftl_flash_resume @@ -3006,18 +3238,18 @@ NandcIqrWaitFlashReady: orr w0, w0, 2 str w0, [x19,364] ldr w0, [x19] - tbnz x0, 9, .L432 + tbnz x0, 9, .L459 mov x0, x19 bl wait_for_nand_flash_ready - b .L431 -.L432: + b .L458 +.L459: ldr w0, [x19,368] orr w0, w0, 2 str w0, [x19,368] ldr w0, [x19,364] and w0, w0, -3 str w0, [x19,364] -.L431: +.L458: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -3039,19 +3271,19 @@ FlashEraseBlocks: stp x27, x28, [sp,80] mov w23, w2 mov x24, x0 - ldrb w2, [x20,24] + ldrb w2, [x20,88] mov w19, 0 - cbz w2, .L435 + cbz w2, .L462 mov w1, w23 bl FlashEraseSLc2KBlocks - b .L436 -.L435: + b .L463 +.L462: mov w27, 56 adrp x28, .LANCHOR2 - add x25, x20, 1720 -.L466: + add x25, x20, 1716 +.L493: cmp w19, w23 - bcs .L467 + bcs .L494 umull x5, w19, w27 mov w1, 0 sub w4, w23, w19 @@ -3062,26 +3294,26 @@ FlashEraseBlocks: str x5, [x29,96] bl LogAddr2PhyAddr mov w22, w0 - ldrb w1, [x20,1676] + ldrb w1, [x20,1672] ldr w0, [x29,124] ldr x5, [x29,96] cmp w0, w1 - bcc .L437 + bcc .L464 mov w0, -1 str w0, [x24,x5] - b .L438 -.L437: + b .L465 +.L464: add x1, x28, :lo12:.LANCHOR2 mov x2, 24 - ldrb w1, [x1,648] + ldrb w1, [x1,656] cmp w1, wzr uxtw x1, w0 csel w22, w22, wzr, ne madd x1, x1, x2, x25 ldr x1, [x1,8] - cbz x1, .L440 + cbz x1, .L467 bl FlashWaitCmdDone -.L440: +.L467: ldr w1, [x29,124] mov x0, 24 ldr w2, [x29,120] @@ -3089,32 +3321,32 @@ FlashEraseBlocks: str x21, [x0,8] str xzr, [x0,16] str w2, [x0,4] - cbz w22, .L441 + cbz w22, .L468 add w2, w19, 1 umull x2, w2, w27 add x2, x24, x2 str x2, [x0,16] -.L441: - add x0, x20, x1 - ldrb w21, [x0,1680] +.L468: + add x0, x20, 1676 + ldrb w21, [x0,x1] mov x0, 24 mul x1, x1, x0 mov w0, w21 strb w21, [x25,x1] bl NandcFlashCs cmp w26, 1 - bne .L442 - ldrb w0, [x20,136] - cbz w0, .L442 + bne .L469 + ldrb w0, [x20,4044] + cbz w0, .L469 mov w0, w21 bl flash_enter_slc_mode - b .L443 -.L442: + b .L470 +.L469: mov w0, w21 bl flash_exit_slc_mode -.L443: +.L470: ldr w1, [x29,124] - add x0, x20, 1688 + add x0, x20, 1684 add w19, w19, w22 ldr w0, [x0,x1,lsl 2] ldr w1, [x29,120] @@ -3128,54 +3360,55 @@ FlashEraseBlocks: bl FlashEraseCmd mov w0, w21 bl NandcFlashDeCs -.L438: +.L465: add w19, w19, 1 - b .L466 -.L467: + b .L493 +.L494: ldr x0, [x29,104] mov x20, 0 - mov x21, 24 + mov x22, 24 add x19, x0, :lo12:.LANCHOR0 + add x21, x19, 1716 ldr x0, [x19,3976] bl NandcIqrWaitFlashReady -.L445: - ldrb w0, [x19,1676] +.L472: + ldrb w0, [x19,1672] cmp w0, w20 - bls .L468 + bls .L495 mov w0, w20 bl FlashWaitCmdDone cmp w26, 1 - bne .L446 - ldrb w0, [x19,136] - cbz w0, .L446 - madd x0, x20, x21, x19 - ldrb w0, [x0,1720] + bne .L473 + ldrb w0, [x19,4044] + cbz w0, .L473 + mul x0, x20, x22 + ldrb w0, [x0,x21] bl flash_exit_slc_mode -.L446: +.L473: add x20, x20, 1 - b .L445 -.L468: - adrp x0, .LANCHOR2+652 - ldr w0, [x0,#:lo12:.LANCHOR2+652] - cbnz w0, .L448 -.L450: + b .L472 +.L495: + adrp x0, .LANCHOR2+660 + ldr w0, [x0,#:lo12:.LANCHOR2+660] + cbnz w0, .L475 +.L477: mov w0, 0 - b .L436 -.L448: + b .L463 +.L475: adrp x0, IDByte ldrb w0, [x0,#:lo12:IDByte] cmp w0, 69 - bne .L450 + bne .L477 mov x0, 0 mov x1, 56 -.L449: +.L476: cmp w23, w0 - bls .L450 + bls .L477 mul x2, x0, x1 add x0, x0, 1 str wzr, [x24,x2] - b .L449 -.L436: + b .L476 +.L463: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -3213,11 +3446,11 @@ NandcSendDumpDataStart: .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: sub sp, sp, #16 -.L471: +.L498: ldr w1, [x0,8] str w1, [sp,8] ldr w1, [sp,8] - tbz x1, 20, .L471 + tbz x1, 20, .L498 add sp, sp, 16 ret .size NandcSendDumpDataDone, .-NandcSendDumpDataDone @@ -3234,7 +3467,7 @@ NandcXferStart: adrp x4, .LANCHOR0 add x4, x4, :lo12:.LANCHOR0 str x25, [sp,64] - add x4, x4, 40 + add x4, x4, 24 uxtb w25, w1 stp x19, x20, [sp,16] stp x23, x24, [sp,48] @@ -3258,7 +3491,7 @@ NandcXferStart: ldr w0, [x0,580] bfi w20, w3, 4, 1 cmp w0, 3 - bls .L475 + bls .L502 ldr w0, [x21,16] cmp x5, xzr str w0, [x29,88] @@ -3266,11 +3499,11 @@ NandcXferStart: ldr w0, [x29,88] and w0, w0, -5 str w0, [x29,88] - cbnz w7, .L489 - cbz x22, .L476 -.L489: - cbnz w25, .L478 -.L486: + cbnz w7, .L516 + cbz x22, .L503 +.L516: + cbnz w25, .L505 +.L513: mov x0, x21 add w23, w23, 1 asr w23, w23, 1 @@ -3283,62 +3516,62 @@ NandcXferStart: orr w0, w0, 1 str w0, [x21,364] mov x0, x22 - cbnz x22, .L480 + cbnz x22, .L507 add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,592] - b .L480 -.L478: + ldr x0, [x0,600] + b .L507 +.L505: add x1, x19, :lo12:.LANCHOR2 mov w4, 128 mov w2, 0 lsr w8, w23, 1 mov w3, w2 mov w9, -1 - ldr w0, [x1,644] + ldr w0, [x1,652] cmp w0, 25 mov w0, 64 csel w4, w0, w4, cc -.L482: +.L509: cmp w3, w8 - bcs .L486 + bcs .L513 lsr w0, w2, 2 ubfiz x0, x0, 2, 30 - cbz w7, .L483 + cbz w7, .L510 ldrh w6, [x5,2] - ldr x10, [x1,600] + ldr x10, [x1,608] ldrh w11, [x5],4 orr w6, w11, w6, lsl 16 str w6, [x10,x0] - b .L484 -.L483: - ldr x6, [x1,600] + b .L511 +.L510: + ldr x6, [x1,608] str w9, [x6,x0] -.L484: +.L511: add w3, w3, 1 add w2, w2, w4 - b .L482 -.L480: + b .L509 +.L507: add x19, x19, :lo12:.LANCHOR2 ubfx x23, x20, 22, 5 mov w2, w25 and x22, x22, 3 - ldr x1, [x19,600] - str x1, [x19,616] + ldr x1, [x19,608] + str x1, [x19,624] lsl w1, w23, 10 - str x0, [x19,608] + str x0, [x19,616] bl rknand_dma_map_single - str w0, [x19,624] - ldr x0, [x19,616] + str w0, [x19,632] + ldr x0, [x19,624] lsl w1, w23, 7 mov w2, w25 bl rknand_dma_map_single - str w0, [x19,628] + str w0, [x19,636] mov w0, 1 - str w0, [x19,632] - ldr w0, [x19,624] + str w0, [x19,640] + ldr w0, [x19,632] mov w1, 16 str w0, [x21,20] - ldr w0, [x19,628] + ldr w0, [x19,636] str w0, [x21,24] str wzr, [x29,88] ldr w0, [x29,88] @@ -3347,12 +3580,12 @@ NandcXferStart: ldr w0, [x29,88] orr w0, w0, 448 str w0, [x29,88] - cbnz x22, .L487 + cbnz x22, .L514 ldr w0, [x29,88] mov w1, 2 bfi w0, w1, 3, 3 str w0, [x29,88] -.L487: +.L514: ldr w0, [x29,88] cmp w25, wzr cset w1, eq @@ -3364,10 +3597,10 @@ NandcXferStart: ldr w0, [x29,88] orr w0, w0, 1 str w0, [x29,88] -.L476: +.L503: ldr w0, [x29,88] str w0, [x21,16] -.L475: +.L502: str w24, [x21,12] str w20, [x21,8] orr w20, w20, 4 @@ -3388,7 +3621,7 @@ NandcXferComp: ubfiz x0, x0, 4, 8 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 40 + add x1, x1, 24 stp x19, x20, [sp,16] stp x21, x22, [sp,32] str x23, [sp,48] @@ -3397,36 +3630,36 @@ NandcXferComp: add x0, x20, :lo12:.LANCHOR2 ldr w0, [x0,580] cmp w0, 3 - bls .L524 + bls .L551 ldr w0, [x19,16] - tbz x0, 2, .L524 + tbz x0, 2, .L551 mov x0, x19 bl wait_for_nandc_xfer_completed ldr w21, [x19,16] ldr w0, [x19,8] ubfx x21, x21, 1, 1 str w0, [x29,64] - cbz w21, .L495 + cbz w21, .L522 adrp x22, .LC4 adrp x23, .LC5 mov w21, 0 add x22, x22, :lo12:.LC4 add x23, x23, :lo12:.LC5 -.L496: +.L523: ldr w2, [x19,28] ldr w1, [x29,64] ubfx x2, x2, 16, 5 ubfx x1, x1, 22, 6 cmp w2, w1 - bge .L504 + bge .L531 add x0, x20, :lo12:.LANCHOR2 ldr w0, [x0,580] cmp w0, 5 - bhi .L497 -.L500: + bhi .L524 +.L527: add w21, w21, 1 and w0, w21, 16777215 - cbnz w0, .L496 + cbnz w0, .L523 ldr w2, [x19,28] mov w1, w21 ldr w3, [x29,64] @@ -3439,19 +3672,19 @@ NandcXferComp: mov w2, 4 mov w3, 512 bl rknand_print_hex - b .L496 -.L497: + b .L523 +.L524: ldr w0, [x19] str w0, [x29,72] ldr w0, [x29,72] - tbz x0, 13, .L500 + tbz x0, 13, .L527 ldr w0, [x29,72] - tbz x0, 17, .L500 -.L504: + tbz x0, 17, .L527 +.L531: add x19, x20, :lo12:.LANCHOR2 - add x19, x19, 592 + add x19, x19, 600 ldr w0, [x19,40] - cbz w0, .L505 + cbz w0, .L532 ldr w1, [x29,64] mov w2, 0 ldr w0, [x19,32] @@ -3464,20 +3697,20 @@ NandcXferComp: ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single - b .L505 -.L495: + b .L532 +.L522: adrp x22, .LC6 adrp x23, .LC5 add x22, x22, :lo12:.LC6 add x23, x23, :lo12:.LC5 -.L506: +.L533: ldr w0, [x29,64] - tbnz x0, 20, .L532 + tbnz x0, 20, .L559 ldr w0, [x19,8] add w21, w21, 1 str w0, [x29,64] and w0, w21, 16777215 - cbnz w0, .L506 + cbnz w0, .L533 ldr w2, [x29,64] mov w1, w21 ldr w3, [x19,28] @@ -3489,18 +3722,18 @@ NandcXferComp: mov w2, 4 mov w3, 512 bl rknand_print_hex - b .L506 -.L532: + b .L533 +.L559: add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,640] - cbz w0, .L509 + ldr w0, [x0,648] + cbz w0, .L536 mov x0, x19 bl NandcSendDumpDataStart -.L509: +.L536: add x21, x20, :lo12:.LANCHOR2 - add x21, x21, 592 + add x21, x21, 600 ldr w0, [x21,40] - cbz w0, .L510 + cbz w0, .L537 ldr w1, [x29,64] mov w2, 1 ldr w0, [x21,32] @@ -3513,22 +3746,22 @@ NandcXferComp: ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single -.L510: +.L537: add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,640] - cbz w0, .L505 + ldr w0, [x0,648] + cbz w0, .L532 mov x0, x19 bl NandcSendDumpDataDone -.L505: +.L532: add x20, x20, :lo12:.LANCHOR2 - str wzr, [x20,632] - b .L493 -.L524: + str wzr, [x20,640] + b .L520 +.L551: ldr w0, [x19,8] str w0, [x29,64] ldr w0, [x29,64] - tbz x0, 20, .L524 -.L493: + tbz x0, 20, .L551 +.L520: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -3551,14 +3784,14 @@ NandcCopy1KB: add x4, x0, 4096 add x21, x0, 512 add x2, x4, x2 - bne .L534 - cbz x3, .L535 + bne .L561 + cbz x3, .L562 mov x0, x2 mov x1, x3 mov w2, 1024 bl ftl_memcpy -.L535: - cbz x20, .L533 +.L562: + cbz x20, .L560 mov w0, 48 lsr w19, w19, 1 ldrb w1, [x20,1] @@ -3572,15 +3805,15 @@ NandcCopy1KB: ldrb w1, [x20,3] orr w0, w0, w1, lsl 24 str w0, [x21,w19,sxtw 2] - b .L533 -.L534: - cbz x3, .L538 + b .L560 +.L561: + cbz x3, .L565 mov x1, x2 mov x0, x3 mov w2, 1024 bl ftl_memcpy -.L538: - cbz x20, .L533 +.L565: + cbz x20, .L560 mov w0, 48 lsr w19, w19, 1 mul w19, w19, w0 @@ -3593,7 +3826,7 @@ NandcCopy1KB: lsr w0, w0, 24 strb w1, [x20,2] strb w0, [x20,3] -.L533: +.L560: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -3614,20 +3847,20 @@ NandcXferData: stp x27, x28, [sp,80] add x0, x0, :lo12:.LANCHOR0 add x0, x0, x24, sxtw 4 - ldr x19, [x0,40] + ldr x19, [x0,24] and x0, x3, 63 uxtb w20, w1 uxtb w23, w2 mov x25, x3 mov x21, x4 - cbnz x0, .L550 - cbnz x4, .L551 + cbnz x0, .L577 + cbnz x4, .L578 add x0, x29, 112 mov w1, 255 mov w2, 64 add x21, x29, 112 bl ftl_memset -.L551: +.L578: mov w0, w24 mov w1, w20 mov w2, w23 @@ -3638,22 +3871,22 @@ NandcXferData: bl NandcXferStart mov w0, w24 bl NandcXferComp - cbnz w20, .L552 + cbnz w20, .L579 adrp x0, .LANCHOR2 ubfx x3, x23, 1, 7 add x2, x0, :lo12:.LANCHOR2 mov w4, 128 add x3, x21, x3, lsl 2 - ldr w1, [x2,644] + ldr w1, [x2,652] cmp w1, 25 mov w1, 64 csel w4, w1, w4, cc mov w1, w20 -.L554: +.L581: cmp x21, x3 add w5, w1, w4 - beq .L596 - ldr x6, [x2,600] + beq .L623 + ldr x6, [x2,608] and x1, x1, 4294967292 add x21, x21, 4 ldr w1, [x6,x1] @@ -3665,29 +3898,29 @@ NandcXferData: lsr w1, w1, 24 strb w1, [x21,-1] mov w1, w5 - b .L554 -.L596: + b .L581 +.L623: add x0, x0, :lo12:.LANCHOR2 lsr w23, w23, 2 - ldr w4, [x0,644] + ldr w4, [x0,652] ldr w5, [x0,580] mov w0, 0 mov w22, w0 -.L556: +.L583: cmp w0, w23 - bcs .L552 - cbz w4, .L552 + bcs .L579 + cbz w4, .L579 uxtw x1, w0 add x1, x1, 8 ldr w1, [x19,x1,lsl 2] str w1, [x29,104] ldr w1, [x29,104] - tbnz x1, 2, .L580 + tbnz x1, 2, .L607 ldr w3, [x29,104] ubfx x3, x3, 15, 1 - cbnz w3, .L580 + cbnz w3, .L607 cmp w5, 5 - bls .L558 + bls .L585 ldr w2, [x29,104] ubfx x6, x2, 3, 5 ldr w2, [x29,104] @@ -3700,20 +3933,20 @@ NandcXferData: orr w1, w3, w1, lsl 5 ldr w3, [x29,104] cmp w2, w1 - bls .L559 + bls .L586 ldr w1, [x29,104] ubfx x3, x3, 3, 5 ubfx x1, x1, 27, 1 orr w3, w3, w1, lsl 5 - b .L560 -.L559: + b .L587 +.L586: ubfx x1, x3, 16, 5 ldr w3, [x29,104] ubfx x3, x3, 29, 1 - b .L595 -.L558: + b .L622 +.L585: cmp w5, 3 - bls .L560 + bls .L587 ldr w2, [x29,104] ubfx x6, x2, 3, 5 ldr w2, [x29,104] @@ -3726,43 +3959,43 @@ NandcXferData: orr w1, w3, w1, lsl 5 ldr w3, [x29,104] cmp w2, w1 - bls .L561 + bls .L588 ubfx x1, x3, 3, 5 ldr w3, [x29,104] ubfx x3, x3, 28, 1 - b .L595 -.L561: + b .L622 +.L588: ubfx x1, x3, 16, 5 ldr w3, [x29,104] ubfx x3, x3, 30, 1 -.L595: +.L622: orr w3, w1, w3, lsl 5 -.L560: +.L587: cmp w22, w3 csel w22, w22, w3, cs - b .L557 -.L580: + b .L584 +.L607: mov w22, -1 -.L557: +.L584: add w0, w0, 1 - b .L556 -.L552: + b .L583 +.L579: str wzr, [x19,16] - b .L563 -.L550: + b .L590 +.L577: cmp w20, 1 - bne .L594 + bne .L621 mov w22, 0 mov w27, 2 -.L564: +.L591: cmp w22, w23 - bcs .L597 + bcs .L624 and w26, w22, 3 mov x3, x25 - cbz x25, .L566 + cbz x25, .L593 ubfiz x0, x22, 9, 23 add x3, x25, x0 -.L566: +.L593: cmp x21, xzr mov x0, x19 csel w4, w27, wzr, ne @@ -3781,11 +4014,11 @@ NandcXferData: bl NandcXferStart mov w0, w24 bl NandcXferComp - b .L564 -.L597: + b .L591 +.L624: mov w22, 0 - b .L563 -.L594: + b .L590 +.L621: mov w1, 0 mov x4, 0 mov w26, 0 @@ -3796,16 +4029,16 @@ NandcXferData: mov w22, w26 mov w27, 2 bl NandcXferStart -.L569: +.L596: cmp w26, w23 - bcs .L563 + bcs .L590 mov w0, w24 add w28, w26, 2 bl NandcXferComp ldr w0, [x19,32] cmp w28, w23 str w0, [x29,104] - bcs .L570 + bcs .L597 mov x4, 0 mov w0, w24 mov w1, 0 @@ -3813,9 +4046,9 @@ NandcXferData: and w3, w28, 3 mov x5, x4 bl NandcXferStart -.L570: +.L597: ldr w0, [x29,104] - tbnz x0, 2, .L585 + tbnz x0, 2, .L612 ldr w0, [x29,104] ubfx x1, x0, 3, 5 ldr w0, [x29,104] @@ -3823,16 +4056,16 @@ NandcXferData: orr w0, w1, w0, lsl 5 cmp w22, w0 csel w22, w22, w0, cs - b .L571 -.L585: + b .L598 +.L612: mov w22, -1 -.L571: +.L598: and w2, w26, 3 mov x3, x25 - cbz x25, .L572 + cbz x25, .L599 ubfiz x3, x26, 9, 23 add x3, x25, x3 -.L572: +.L599: cmp x21, xzr mov x0, x19 csel w4, w27, wzr, ne @@ -3841,23 +4074,23 @@ NandcXferData: mov w26, w28 add x4, x21, x4 bl NandcCopy1KB - b .L569 -.L563: - cbnz w20, .L575 + b .L596 +.L590: + cbnz w20, .L602 adrp x0, .LANCHOR2+580 ldr w0, [x0,#:lo12:.LANCHOR2+580] cmp w0, 5 - bls .L575 + bls .L602 ldr w0, [x19] mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w0, w1 cmp w1, 139264 - bne .L575 + bne .L602 orr w0, w0, 131072 mov w22, -1 str w0, [x19] -.L575: +.L602: mov w0, w22 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -3876,20 +4109,20 @@ FlashReadRawPage: add x29, sp, 0 stp x19, x20, [sp,16] uxtb w19, w0 - adrp x0, .LANCHOR1+265 + adrp x0, .LANCHOR1+481 str x21, [sp,32] mov x21, x2 - ldrb w20, [x0,#:lo12:.LANCHOR1+265] - cbnz w19, .L599 + ldrb w20, [x0,#:lo12:.LANCHOR1+481] + cbnz w19, .L626 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w5, [x0,25] - ldr w0, [x0,28] + ldrb w5, [x0,89] + ldr w0, [x0,92] mul w0, w5, w0 cmp w1, w0 mov w0, 4 csel w20, w20, w0, cs -.L599: +.L626: mov w0, w19 str x4, [x29,48] str x1, [x29,56] @@ -3945,7 +4178,7 @@ FlashDdrTunningRead: cmp w0, 8 mov w0, 12 csel w22, w22, w0, cc - cbz w4, .L602 + cbz w4, .L629 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 @@ -3963,41 +4196,41 @@ FlashDdrTunningRead: ldrb w0, [x27,564] bl NandcSetMode cmn w21, #1 - bne .L603 -.L612: + bne .L630 +.L639: mov w21, -1 - b .L604 -.L603: + b .L631 +.L630: adrp x0, .LC7 mov w1, w25 add x0, x0, :lo12:.LC7 mov w2, w21 bl printk cmp w21, 9 - bhi .L605 + bhi .L632 add x20, x20, x24, sxtw 4 - ldr x0, [x20,40] + ldr x0, [x20,24] ldr w1, [x0,3840] ldr w1, [x0] orr w1, w1, 131072 str w1, [x0] -.L605: +.L632: add x19, x19, :lo12:.LANCHOR2 - ldr w0, [x19,656] + ldr w0, [x19,664] add w0, w0, 1 - str w0, [x19,656] + str w0, [x19,664] cmp w0, 2047 - bls .L604 + bls .L631 mov x23, 0 - str wzr, [x19,656] + str wzr, [x19,664] mov x28, x23 -.L602: +.L629: mov w19, 0 mov w27, -1 mov w5, w19 mov w6, w19 mov w20, w19 -.L610: +.L637: mov w0, w22 str x5, [x29,104] str x6, [x29,112] @@ -4011,63 +4244,63 @@ FlashDdrTunningRead: ldr x6, [x29,112] cmp w0, w1 ldr x5, [x29,104] - bhi .L606 + bhi .L633 cmp w0, 2 - bhi .L616 + bhi .L643 add w20, w20, 1 cmp w20, 9 - bls .L616 + bls .L643 sub w19, w22, w20 mov w21, w0 mov w27, 0 - b .L608 -.L606: + b .L635 +.L633: cmp w6, w20 - bcs .L617 + bcs .L644 cmp w20, 7 sub w5, w19, w20 - bhi .L618 + bhi .L645 mov w6, w20 - b .L617 -.L616: + b .L644 +.L643: mov x23, 0 mov w19, w22 mov w21, w0 mov w27, 0 mov x28, x23 - b .L607 -.L617: + b .L634 +.L644: mov w20, 0 -.L607: +.L634: add w22, w22, 2 cmp w22, 69 - bls .L610 -.L608: + bls .L637 +.L635: cmp w6, w20 csel w19, w19, w5, cc - b .L609 -.L618: + b .L636 +.L645: mov w19, w5 -.L609: - cbz w19, .L611 +.L636: + cbz w19, .L638 adrp x0, .LC8 mov w1, w19 add x0, x0, :lo12:.LC8 bl printk mov w0, w19 bl NandcSetDdrPara -.L611: - cbz w27, .L604 +.L638: + cbz w27, .L631 adrp x0, .LC9 mov w1, w24 add x0, x0, :lo12:.LC9 mov w2, w25 bl printk - cbz w26, .L612 + cbz w26, .L639 ldr w0, [x29,124] lsr w0, w0, 8 bl NandcSetDdrPara -.L604: +.L631: mov w0, w21 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4097,29 +4330,29 @@ FlashReadPage: cmn w0, #1 mov w19, w0 adrp x23, .LANCHOR2 - bne .L628 + bne .L655 adrp x21, .LANCHOR0 add x26, x21, :lo12:.LANCHOR0 - ldrb w27, [x26,32] - cbnz w27, .L629 -.L631: + ldrb w27, [x26,96] + cbnz w27, .L656 +.L658: add x0, x23, :lo12:.LANCHOR2 ldrb w0, [x0,572] - cbz w0, .L628 - b .L649 -.L629: + cbz w0, .L655 + b .L676 +.L656: mov w0, w20 mov w1, w22 mov x2, x25 mov x3, x24 - strb wzr, [x26,32] + strb wzr, [x26,96] bl FlashReadRawPage - strb w27, [x26,32] + strb w27, [x26,96] cmn w0, #1 - beq .L631 + beq .L658 mov w19, w0 - b .L628 -.L649: + b .L655 +.L676: add x21, x21, :lo12:.LANCHOR0 mov w1, w22 mov x2, x25 @@ -4131,19 +4364,19 @@ FlashReadPage: bl FlashDdrTunningRead cmn w0, #1 mov w19, w0 - beq .L632 - ldrb w0, [x21,4044] + beq .L659 + ldrb w0, [x21,4045] cmp w19, w0, lsr 1 - bls .L628 -.L632: + bls .L655 +.L659: lsr w0, w26, 8 bl NandcSetDdrPara -.L628: +.L655: add x21, x23, :lo12:.LANCHOR2 cmn w19, #1 - ldr x4, [x21,664] - bne .L633 - cbz x4, .L633 + ldr x4, [x21,672] + bne .L660 + cbz x4, .L660 mov w1, w22 mov x2, x25 mov x3, x24 @@ -4157,13 +4390,13 @@ FlashReadPage: mov w3, w22 bl printk cmn w19, #1 - bne .L633 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L633 + bne .L660 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L660 mov w0, w20 bl flash_enter_slc_mode - ldr x4, [x21,664] + ldr x4, [x21,672] mov w0, w20 mov w1, w22 mov x2, x25 @@ -4172,7 +4405,7 @@ FlashReadPage: mov w19, w0 mov w0, w20 bl flash_exit_slc_mode -.L633: +.L660: mov w0, w19 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -4211,24 +4444,24 @@ FlashDdrParaScan: mov x3, x2 bl FlashReadRawPage cmn w0, #1 - beq .L654 + beq .L681 cmn w22, #1 - bne .L651 -.L654: + bne .L678 +.L681: add x20, x19, :lo12:.LANCHOR2 ldrb w0, [x20,564] - tbz x0, 0, .L651 + tbz x0, 0, .L678 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x20,572] - b .L653 -.L651: + b .L680 +.L678: add x19, x19, :lo12:.LANCHOR2 mov w0, 1 strb w0, [x19,572] -.L653: +.L680: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4243,38 +4476,39 @@ FlashLoadPhyInfo: mov w0, 60 add x29, sp, 0 stp x19, x20, [sp,16] - stp x25, x26, [sp,64] + adrp x19, .LANCHOR0 + str x27, [sp,80] strb w0, [x29,104] mov w0, 40 strb w0, [x29,105] mov w0, 24 - adrp x25, .LANCHOR2 strb w0, [x29,106] - adrp x19, .LANCHOR0 mov w0, 16 - stp x23, x24, [sp,48] strb w0, [x29,107] - adrp x23, .LANCHOR1 - add x0, x25, :lo12:.LANCHOR2 - ldr x1, [x19,#:lo12:.LANCHOR0] + add x0, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp,48] stp x21, x22, [sp,32] - add x21, x23, :lo12:.LANCHOR1 + stp x25, x26, [sp,64] + adrp x23, .LANCHOR2 + adrp x22, .LANCHOR1 + ldr w25, [x0,92] + add x0, x23, :lo12:.LANCHOR2 + ldr x1, [x19,#:lo12:.LANCHOR0] + add x22, x22, :lo12:.LANCHOR1 mov w20, 0 - stp x27, x28, [sp,80] - add x21, x21, 256 - str x1, [x0,672] - str wzr, [x0,680] - mov w27, 4 + mov w24, 4 + str x1, [x0,680] + mov w26, -1 + str wzr, [x0,688] + add x22, x22, 472 mov w0, 0 - mov w24, -1 - ldrh w28, [x21,10] bl flash_enter_slc_mode -.L662: - add w26, w20, 1 - mov x22, 0 -.L664: +.L689: + add w27, w20, 1 + mov x21, 0 +.L691: add x0, x29, 104 - ldrb w0, [x22,x0] + ldrb w0, [x21,x0] bl FlashBchSel ldr x2, [x19,#:lo12:.LANCHOR0] mov w0, 0 @@ -4282,93 +4516,95 @@ FlashLoadPhyInfo: mov x3, 0 bl FlashReadRawPage cmn w0, #1 - bne .L663 + bne .L690 ldr x2, [x19,#:lo12:.LANCHOR0] mov w0, 0 - mov w1, w26 + mov w1, w27 mov x3, 0 bl FlashReadRawPage cmn w0, #1 - bne .L663 - add x22, x22, 1 - cmp x22, 4 - beq .L665 - b .L664 -.L666: + bne .L690 + add x21, x21, 1 + cmp x21, 4 + beq .L692 + b .L691 +.L693: mov w1, 2036 - add x0, x26, 12 - mov w24, -1 - bl JSHash - ldr w1, [x26,8] + add x0, x27, 12 + mov w26, -1 + bl js_hash + ldr w1, [x27,8] cmp w1, w0 - beq .L676 -.L665: - subs w27, w27, #1 - add w20, w20, w28 - bne .L662 - mov w0, w27 -.L675: - bl flash_exit_slc_mode + beq .L703 +.L692: + subs w24, w24, #1 + add w20, w20, w25 + bne .L689 mov w0, w24 +.L702: + bl flash_exit_slc_mode + ldr x27, [sp,80] + mov w0, w26 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] ldp x29, x30, [sp], 112 ret -.L663: - add x22, x25, :lo12:.LANCHOR2 +.L690: + add x21, x23, :lo12:.LANCHOR2 mov w0, 20036 movk w0, 0x4e41, lsl 16 - ldr x26, [x22,672] - ldr w1, [x26] + ldr x27, [x21,680] + ldr w1, [x27] cmp w1, w0 - bne .L665 - cbnz w24, .L666 - add x23, x23, :lo12:.LANCHOR1 + bne .L692 + cbnz w26, .L693 add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x23,266] + ldr w0, [x19,92] udiv w20, w20, w0 - mov w0, w24 + mov w0, w26 add w20, w20, 1 str w20, [x19,8] - b .L675 -.L676: - add x1, x26, 160 + b .L702 +.L703: + add x1, x27, 160 mov w2, 32 - mov x0, x21 - add x24, x19, :lo12:.LANCHOR0 + mov x0, x22 + add x26, x19, :lo12:.LANCHOR0 bl ftl_memcpy - ldr x1, [x22,672] + ldr x1, [x21,680] mov w2, 32 - add x0, x24, 104 + add x0, x26, 104 add x1, x1, 192 bl ftl_memcpy - ldr x1, [x22,672] + ldr x1, [x21,680] mov w2, 852 - add x0, x24, 4056 + add x0, x26, 4056 add x1, x1, 224 bl ftl_memcpy - str w20, [x22,680] - ldr x1, [x22,672] - ldr w0, [x1,1076] - strb w0, [x22,572] - ldrh w0, [x21,10] - udiv w0, w20, w0 - add w2, w0, 1 - cbz w0, .L668 - str w2, [x24,8] - b .L669 -.L668: + ldrh w0, [x22,10] + bl FlashBlockAlignInit + str w20, [x21,688] + ldr w1, [x26,92] + ldr x2, [x21,680] + udiv w1, w20, w1 + ldr w0, [x2,1076] + add w1, w1, 1 + strb w0, [x21,572] + cmp w1, 1 + bls .L695 + str w1, [x26,8] + b .L696 +.L695: mov w0, 2 - str w0, [x24,8] -.L669: - add x0, x25, :lo12:.LANCHOR2 - ldrh w1, [x1,14] - mov w24, 0 - strb w1, [x0,684] - b .L665 + str w0, [x26,8] +.L696: + add x0, x23, :lo12:.LANCHOR2 + ldrh w1, [x2,14] + mov w26, 0 + strb w1, [x0,692] + b .L692 .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 2 .global ToshibaReadRetrial @@ -4392,7 +4628,7 @@ ToshibaReadRetrial: sbfiz x1, x23, 4, 32 add x0, x2, :lo12:.LANCHOR0 str x2, [x29,120] - add x0, x0, 40 + add x0, x0, 24 mov w22, 0 add x3, x0, x1 ldr x24, [x0,x1] @@ -4405,21 +4641,21 @@ ToshibaReadRetrial: sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 - bls .L678 + bls .L705 adrp x0, .LANCHOR2+572 ldrb w0, [x0,#:lo12:.LANCHOR2+572] - cbz w0, .L679 + cbz w0, .L706 mov w0, w22 mov w22, 1 bl NandcSetDdrMode -.L679: +.L706: ubfiz x0, x28, 8, 8 mov w2, 92 add x0, x24, x0 str w2, [x0,2056] mov w2, 197 str w2, [x0,2056] -.L678: +.L705: adrp x0, g_maxRetryCount mov w21, 1 add x0, x0, :lo12:g_maxRetryCount @@ -4431,44 +4667,44 @@ ToshibaReadRetrial: str x0, [x29,104] ubfiz x0, x28, 8, 8 str x0, [x29,96] -.L680: +.L707: adrp x0, g_maxRetryCount ldrb w0, [x0,#:lo12:g_maxRetryCount] add w0, w0, 1 cmp w21, w0 - bcs .L705 + bcs .L732 ldrb w0, [x20,#:lo12:g_retryMode] mov w1, w21 sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 mov x0, x19 - bhi .L681 + bhi .L708 bl SandiskSetRRPara - b .L682 -.L681: + b .L709 +.L708: bl ToshibaSetRRPara -.L682: +.L709: ldrb w0, [x20,#:lo12:g_retryMode] cmp w0, 34 - bne .L683 + bne .L710 ldr x0, [x29,112] ldrb w0, [x0] sub w0, w0, #3 cmp w21, w0 - bne .L683 + bne .L710 ldr x0, [x29,104] mov w1, 179 add x0, x24, x0 str w1, [x0,8] -.L683: +.L710: ldr x0, [x29,96] mov w1, 38 add x0, x24, x0 str w1, [x0,2056] mov w1, 93 str w1, [x0,2056] - cbz w22, .L684 + cbz w22, .L711 mov w0, 4 bl NandcSetDdrMode ldr w1, [x29,132] @@ -4479,45 +4715,45 @@ ToshibaReadRetrial: mov w28, w0 mov w0, 0 bl NandcSetDdrMode - b .L685 -.L684: + b .L712 +.L711: ldr w1, [x29,132] mov w0, w23 mov x2, x27 mov x3, x26 bl FlashReadRawPage mov w28, w0 -.L685: +.L712: cmn w28, #1 - beq .L686 + beq .L713 ldr x0, [x29,120] cmn w25, #1 csel w25, w25, w28, ne add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,4044] + ldrb w0, [x0,4045] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L688 + bcc .L715 mov x26, 0 mov x27, x26 -.L686: +.L713: add w21, w21, 1 - b .L680 -.L705: + b .L707 +.L732: mov w28, w25 -.L688: +.L715: ldrb w0, [x20,#:lo12:g_retryMode] mov w1, 0 sub w0, w0, #67 uxtb w0, w0 cmp w0, 1 mov x0, x19 - bhi .L690 + bhi .L717 bl SandiskSetRRPara - b .L691 -.L690: + b .L718 +.L717: bl ToshibaSetRRPara -.L691: +.L718: ldr x0, [x29,136] add x0, x0, 8 add x24, x24, x0, lsl 8 @@ -4525,20 +4761,20 @@ ToshibaReadRetrial: str w0, [x24,8] ldr x0, [x29,120] add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,4044] + ldrb w0, [x0,4045] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L692 + bcc .L719 cmn w28, #1 mov w0, 256 csel w28, w28, w0, eq -.L692: +.L719: mov w0, w23 bl NandcWaitFlashReady - cbz w22, .L693 + cbz w22, .L720 mov w0, 4 bl NandcSetDdrMode -.L693: +.L720: mov w0, w28 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4570,7 +4806,7 @@ SamsungReadRetrial: mov w26, 1 add x0, x20, :lo12:.LANCHOR0 sbfiz x1, x22, 4, 32 - add x0, x0, 40 + add x0, x0, 24 mov w19, -1 add x2, x0, x1 add x27, x27, :lo12:g_maxRetryCount @@ -4578,11 +4814,11 @@ SamsungReadRetrial: ldrb w21, [x2,8] add x21, x21, 8 add x21, x0, x21, lsl 8 -.L707: +.L734: ldrb w0, [x27] add w0, w0, 1 cmp w26, w0 - bcs .L710 + bcs .L737 mov x0, x21 mov w1, w26 bl SamsungSetRRPara @@ -4592,34 +4828,34 @@ SamsungReadRetrial: mov x3, x23 bl FlashReadRawPage cmn w0, #1 - beq .L708 + beq .L735 add x1, x20, :lo12:.LANCHOR0 cmn w19, #1 csel w19, w19, w0, ne - ldrb w1, [x1,4044] + ldrb w1, [x1,4045] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L713 + bcc .L740 mov x23, 0 mov x24, x23 -.L708: +.L735: add w26, w26, 1 - b .L707 -.L713: + b .L734 +.L740: mov w19, w0 -.L710: +.L737: mov x0, x21 mov w1, 0 add x20, x20, :lo12:.LANCHOR0 bl SamsungSetRRPara - ldrb w0, [x20,4044] + ldrb w0, [x20,4045] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L712 + bcc .L739 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L712: +.L739: mov w0, w19 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -4645,17 +4881,17 @@ MicronReadRetrial: stp x23, x24, [sp,48] mov w28, w1 mov x26, x2 - ldrb w19, [x0,4044] + ldrb w19, [x0,4045] mov x22, x3 - ldrb w0, [x0,136] - cbnz w0, .L720 + ldrb w0, [x0,4044] + cbnz w0, .L747 add w19, w19, w19, lsl 1 ubfx x19, x19, 2, 8 - b .L721 -.L720: + b .L748 +.L747: mov w0, 3 sdiv w19, w19, w0 -.L721: +.L748: adrp x0, g_maxRetryCount adrp x27, .LC11 add x0, x0, :lo12:g_maxRetryCount @@ -4664,9 +4900,9 @@ MicronReadRetrial: add x0, x27, :lo12:.LC11 str x0, [x29,144] add x20, x20, :lo12:.LANCHOR0 - add x23, x20, 40 + add x23, x20, 24 add x23, x23, x21, sxtw 4 -.L732: +.L759: mov w0, w21 mov w24, 0 mov w27, -1 @@ -4676,13 +4912,13 @@ MicronReadRetrial: ldr x6, [x23] mov w10, 137 lsl x8, x4, 8 -.L722: +.L749: ldr x0, [x29,152] ldrb w0, [x0] cmp w24, w0 - bcs .L725 + bcs .L752 add x2, x6, x8 - mov w0, 200 + mov x0, 1000 str x4, [x29,96] str x8, [x29,104] str w9, [x2,2056] @@ -4691,7 +4927,7 @@ MicronReadRetrial: str x9, [x29,120] str x10, [x29,128] str x2, [x29,136] - bl NandcDelayns + bl __const_udelay ldr x2, [x29,136] add w7, w24, 1 mov w0, w21 @@ -4711,47 +4947,47 @@ MicronReadRetrial: ldr x6, [x29,112] ldr x8, [x29,104] ldr x4, [x29,96] - beq .L723 + beq .L750 cmn w27, #1 csel w27, w27, w0, ne cmp w0, w19 - bcc .L734 + bcc .L761 mov x22, 0 mov x26, x22 -.L723: +.L750: mov w24, w7 - b .L722 -.L734: + b .L749 +.L761: mov x22, 0 mov w27, w0 mov x26, x22 -.L725: +.L752: add x1, x6, x4, lsl 8 mov w0, 239 str x1, [x29,136] str w0, [x1,2056] mov w0, 137 str w0, [x1,2052] - mov w0, 200 - bl NandcDelayns + mov x0, 1000 + bl __const_udelay ldr x1, [x29,136] cmp w27, w19 str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] - bcc .L727 + bcc .L754 cmn w27, #1 mov w0, 256 csel w27, w27, w0, eq -.L727: +.L754: cmn w27, #1 cset w6, eq - cbnz w6, .L736 + cbnz w6, .L763 cmp w27, 256 cset w1, eq - cbz w1, .L728 -.L736: + cbz w1, .L755 +.L763: ldr x0, [x29,144] mov w1, w24 mov w2, w28 @@ -4759,30 +4995,30 @@ MicronReadRetrial: mov w4, w27 str x6, [x29,136] bl printk - cbnz w25, .L730 + cbnz w25, .L757 ldr x6, [x29,136] - cbz w6, .L741 - ldrb w0, [x20,136] - cbz w0, .L741 + cbz w6, .L768 + ldrb w0, [x20,4044] + cbz w0, .L768 mov w0, w21 mov w1, 3 mov w25, 1 bl micron_auto_read_calibration_config - b .L732 -.L730: + b .L759 +.L757: mov w0, w21 mov w1, 0 bl micron_auto_read_calibration_config cmn w27, #1 mov w0, 256 csel w27, w27, w0, eq - b .L741 -.L728: - cbz w25, .L741 + b .L768 +.L755: + cbz w25, .L768 mov w0, w21 mov w27, 256 bl micron_auto_read_calibration_config -.L741: +.L768: mov w0, w27 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4801,34 +5037,36 @@ HynixReadRetrial: stp x21, x22, [sp,32] adrp x21, .LANCHOR0 uxtb x22, w0 - stp x27, x28, [sp,80] - mov w27, w1 - add x1, x21, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 stp x23, x24, [sp,48] stp x25, x26, [sp,64] + stp x27, x28, [sp,80] stp x19, x20, [sp,16] mov x26, x2 - add x2, x1, 4056 - ldrb w25, [x1,4058] - add x0, x2, x22 - ldr x1, [x1,1912] + add x2, x0, 4056 + ldrb w25, [x0,4058] + mov w27, w1 + ldr x0, [x0,1912] + add x1, x2, x22 mov x23, x22 mov x24, x3 - ldrb w19, [x0,12] - ldrb w1, [x1,19] - cmp w1, 7 - bne .L750 - ldrb w19, [x0,20] -.L750: + ldrb w0, [x0,19] + ldrb w19, [x1,12] + sub w0, w0, #7 + uxtb w0, w0 + cmp w0, 1 + bhi .L777 + ldrb w19, [x1,20] +.L777: mov w0, w23 mov w28, 0 mov w20, -1 bl NandcWaitFlashReady add x4, x21, :lo12:.LANCHOR0 add x5, x4, 4060 -.L751: +.L778: cmp w28, w25 - bcs .L755 + bcs .L782 add w19, w19, 1 ldrb w1, [x4,4057] mov x2, x5 @@ -4848,42 +5086,44 @@ HynixReadRetrial: cmn w0, #1 ldr x5, [x29,104] ldr x4, [x29,96] - beq .L753 - ldrb w1, [x4,4044] + beq .L780 + ldrb w1, [x4,4045] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L760 + bcc .L787 mov x24, 0 mov x26, x24 -.L753: +.L780: add w28, w28, 1 - b .L751 -.L760: + b .L778 +.L787: mov w20, w0 -.L755: +.L782: add x0, x21, :lo12:.LANCHOR0 ldr x1, [x0,1912] add x0, x0, 4056 add x0, x0, x22 ldrb w1, [x1,19] - cmp w1, 7 - bne .L757 + sub w1, w1, #7 + uxtb w1, w1 + cmp w1, 1 + bhi .L784 strb w19, [x0,20] - b .L758 -.L757: + b .L785 +.L784: strb w19, [x0,12] -.L758: +.L785: add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,4044] + ldrb w0, [x21,4045] add w0, w0, w0, lsl 1 cmp w20, w0, lsr 2 - bcc .L759 + bcc .L786 cmn w20, #1 mov w0, 256 csel w20, w20, w0, eq -.L759: +.L786: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4902,26 +5142,26 @@ FlashProgPage: add x29, sp, 0 stp x19, x20, [sp,16] uxtb w19, w0 - adrp x0, .LANCHOR1+265 + adrp x0, .LANCHOR1+481 stp x21, x22, [sp,32] mov w20, w1 mov x22, x2 - ldrb w21, [x0,#:lo12:.LANCHOR1+265] - cbnz w19, .L767 + ldrb w21, [x0,#:lo12:.LANCHOR1+481] + cbnz w19, .L794 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,25] - ldr w2, [x0,28] + ldrb w1, [x0,89] + ldr w2, [x0,92] mul w1, w1, w2 cmp w20, w1 - bcs .L767 - ldrb w0, [x0,24] - cbnz w0, .L768 + bcs .L794 + ldrb w0, [x0,88] + cbnz w0, .L795 sub w21, w21, #2 - b .L767 -.L768: + b .L794 +.L795: mov w21, 4 -.L767: +.L794: mov w0, w19 str x4, [x29,56] bl NandcWaitFlashReady @@ -4969,125 +5209,125 @@ FlashSavePhyInfo: stp x25, x26, [sp,64] ldr x0, [x22,#:lo12:.LANCHOR0] mov w21, 0 - str x0, [x19,672] - ldrb w0, [x19,685] + str x0, [x19,680] + ldrb w0, [x19,693] bl FlashBchSel ldr x0, [x22,#:lo12:.LANCHOR0] mov w1, 0 mov w2, 2048 bl ftl_memset - ldr x1, [x19,672] + ldr x1, [x19,680] mov w0, 20036 movk w0, 0x4e41, lsl 16 mov w2, 32 str w0, [x1] - ldr x0, [x19,672] - ldrb w1, [x20,1676] + ldr x0, [x19,680] + ldrb w1, [x20,1672] add x0, x0, 16 strh w1, [x0,-4] - ldrb w1, [x20,25] + ldrb w1, [x20,89] strh w1, [x0,-2] ldrb w1, [x19,572] str w1, [x0,1060] adrp x1, IDByte add x1, x1, :lo12:IDByte bl ftl_memcpy - ldr x0, [x19,672] - add x1, x20, 1680 + ldr x0, [x19,680] + add x1, x20, 1676 mov w2, 8 add x0, x0, 80 bl ftl_memcpy - ldr x0, [x19,672] - add x1, x20, 1688 + ldr x0, [x19,680] + add x1, x20, 1684 mov w2, 32 add x0, x0, 96 bl ftl_memcpy - ldr x0, [x19,672] + ldr x0, [x19,680] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 mov w2, 32 - add x1, x1, 256 + add x1, x1, 472 add x0, x0, 160 bl ftl_memcpy - ldr x0, [x19,672] + ldr x0, [x19,680] add x1, x20, 104 mov w2, 32 add x0, x0, 192 bl ftl_memcpy - ldr x0, [x19,672] + ldr x0, [x19,680] add x1, x20, 4056 mov w2, 852 add x0, x0, 224 bl ftl_memcpy - ldr x20, [x19,672] + ldr x20, [x19,680] mov w1, 2036 add x0, x20, 12 - bl JSHash + bl js_hash str w0, [x20,8] mov w0, 1592 str w0, [x20,4] - ldr x0, [x19,688] - str x0, [x19,672] + ldr x0, [x19,696] + str x0, [x19,680] mov w0, 0 mov w19, w21 bl flash_enter_slc_mode -.L772: +.L799: add x20, x22, :lo12:.LANCHOR0 mov w2, 0 mov w0, 0 add x24, x23, :lo12:.LANCHOR2 add w26, w19, 1 - ldr w1, [x20,28] + ldr w1, [x20,92] mul w1, w19, w1 bl FlashEraseBlock - ldr w1, [x20,28] + ldr w1, [x20,92] mov x3, 0 ldr x2, [x22,#:lo12:.LANCHOR0] mov w0, 0 mul w1, w19, w1 bl FlashProgPage - ldr w1, [x20,28] + ldr w1, [x20,92] mov x3, 0 ldr x2, [x22,#:lo12:.LANCHOR0] mov w0, 0 mul w1, w19, w1 add w1, w1, 1 bl FlashProgPage - ldr w1, [x20,28] + ldr w1, [x20,92] mov w0, 0 - ldr x2, [x24,688] + ldr x2, [x24,696] mov x3, 0 mul w1, w19, w1 bl FlashReadRawPage cmn w0, #1 - beq .L770 - ldr x25, [x24,672] + beq .L797 + ldr x25, [x24,680] mov w0, 20036 movk w0, 0x4e41, lsl 16 ldr w1, [x25] cmp w1, w0 - bne .L770 + bne .L797 mov w1, 2036 add x0, x25, 12 - bl JSHash + bl js_hash ldr w1, [x25,8] cmp w1, w0 - bne .L770 - ldr w0, [x20,28] + bne .L797 + ldr w0, [x20,92] cmp w21, 1 str w26, [x20,8] mul w19, w19, w0 - str w19, [x24,680] - beq .L773 + str w19, [x24,688] + beq .L800 mov w21, 1 -.L770: +.L797: cmp w26, 4 mov w19, w26 - bne .L772 - b .L771 -.L773: + bne .L799 + b .L798 +.L800: mov w21, 2 -.L771: +.L798: mov w0, 0 bl flash_exit_slc_mode cmp w21, wzr @@ -5122,16 +5362,13 @@ FlashReadIdbDataRaw: stp x19, x20, [sp,16] stp x23, x24, [sp,48] stp x25, x26, [sp,64] - ldrb w28, [x0,4044] + ldrb w28, [x0,4045] add x0, x22, :lo12:.LANCHOR2 - ldr w1, [x0,568] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L779 + ldr w0, [x0,568] + cbz w0, .L806 mov w0, 0 bl flash_enter_slc_mode -.L779: +.L806: adrp x25, .LC12 mov x0, x27 mov w1, 0 @@ -5140,37 +5377,37 @@ FlashReadIdbDataRaw: mov w20, 2 add x25, x25, :lo12:.LC12 bl ftl_memset -.L780: +.L807: add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,25] + ldrb w0, [x0,89] cmp w20, w0 - bcs .L784 + bcs .L811 mov x23, 0 -.L782: +.L809: add x0, x29, 104 add x19, x21, :lo12:.LANCHOR0 ldrb w26, [x23,x0] mov w0, w26 bl FlashBchSel - ldr w1, [x19,28] + ldr w1, [x19,92] mov w0, 0 ldr x2, [x21,#:lo12:.LANCHOR0] mov x3, 0 mul w1, w20, w1 bl FlashReadRawPage cmn w0, #1 - bne .L781 + bne .L808 add x23, x23, 1 cmp x23, 4 - bne .L782 - b .L783 -.L781: + bne .L809 + b .L810 +.L808: ldr x0, [x19] ldr w1, [x0] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 - bne .L783 + bne .L810 mov w1, w26 mov x0, x25 bl printk @@ -5180,30 +5417,27 @@ FlashReadIdbDataRaw: bl ftl_memcpy ldr x0, [x19] ldr w0, [x0,512] - strb w0, [x19,25] + strb w0, [x19,89] ldr w0, [x19,8] cmp w0, w20 - bls .L787 + bls .L814 mov w24, 0 str w20, [x19,8] bl FlashSavePhyInfo -.L783: +.L810: add w20, w20, 1 - b .L780 -.L787: + b .L807 +.L814: mov w24, 0 -.L784: +.L811: mov w0, w28 add x22, x22, :lo12:.LANCHOR2 bl FlashBchSel - ldr w1, [x22,568] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w1, w0 - bne .L789 + ldr w0, [x22,568] + cbz w0, .L818 mov w0, 0 bl flash_exit_slc_mode -.L789: +.L818: mov w0, w24 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -5220,494 +5454,534 @@ FlashInit: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x19, x20, [sp,16] - stp x21, x22, [sp,32] + stp x23, x24, [sp,48] adrp x19, .LANCHOR0 - mov x22, x0 + mov x23, x0 mov w0, 32768 adrp x20, .LANCHOR2 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + stp x21, x22, [sp,32] stp x27, x28, [sp,80] + stp x25, x26, [sp,64] bl ftl_malloc add x21, x20, :lo12:.LANCHOR2 str x0, [x19,#:lo12:.LANCHOR0] mov w0, 32768 - add x24, x19, :lo12:.LANCHOR0 - adrp x23, IDByte - bl ftl_malloc - str x0, [x21,688] - mov w0, 4096 - adrp x25, .LC13 - add x24, x24, 40 - mov w27, 0 + add x22, x19, :lo12:.LANCHOR0 + adrp x24, .LC13 bl ftl_malloc str x0, [x21,696] - mov w0, 32768 - mov w28, 44 + mov w0, 4096 + add x22, x22, 24 + mov w27, 1 + mov w28, 4 bl ftl_malloc str x0, [x21,704] - mov w0, 4096 + mov w0, 32768 bl ftl_malloc str x0, [x21,712] + mov w0, 4096 + bl ftl_malloc + str x0, [x21,720] mov w0, 128 - str w0, [x24,-12] + str w0, [x22,68] mov w0, 60 mov w1, 50 - strb w0, [x21,685] - mov x0, x22 - strb w1, [x24,-15] - strb w1, [x21,684] - str wzr, [x24,-32] + strb w0, [x21,693] + mov x0, x23 + strb w1, [x22,65] + mov w23, 0 + strb w1, [x21,692] + str wzr, [x22,-16] strb wzr, [x21,572] - str wzr, [x21,656] - add x21, x23, :lo12:IDByte - strb wzr, [x24,-16] + str wzr, [x21,664] + strb wzr, [x22,64] + strb wzr, [x21,728] bl NandcInit - add x0, x25, :lo12:.LC13 - mov x26, x21 + adrp x21, IDByte + add x0, x24, :lo12:.LC13 + add x26, x21, :lo12:IDByte str x0, [x29,104] -.L796: - uxtb w25, w27 - mov w0, w25 - bl FlashReset - ldrb w22, [x24,8] - ldr x2, [x24] +.L830: + ldrb w2, [x22,8] + uxtb w25, w23 mov w0, w25 str x2, [x29,96] - ubfiz x22, x22, 8, 8 + ldr x24, [x22] + bl FlashReset + mov w0, w25 bl NandcFlashCs ldr x2, [x29,96] mov w0, 144 - add x22, x2, x22 - str w0, [x22,2056] - mov w0, 200 - str wzr, [x22,2052] - bl NandcDelayns - ldr w0, [x22,2048] - strb w0, [x21] - ldr w0, [x22,2048] - strb w0, [x21,1] - ldr w0, [x22,2048] - strb w0, [x21,2] - ldr w0, [x22,2048] - strb w0, [x21,3] - ldr w0, [x22,2048] - strb w0, [x21,4] - ldr w0, [x22,2048] - strb w0, [x21,5] + ubfiz x2, x2, 8, 8 + add x24, x24, x2 + str w0, [x24,2056] + mov x0, 1000 + str wzr, [x24,2052] + bl __const_udelay + ldr w0, [x24,2048] + uxtb w0, w0 + strb w0, [x26] + cmp w0, 44 + ldr w2, [x24,2048] + strb w2, [x26,1] + ldr w2, [x24,2048] + strb w2, [x26,2] + ldr w2, [x24,2048] + strb w2, [x26,3] + ldr w2, [x24,2048] + strb w2, [x26,4] + ldr w2, [x24,2048] + strb w2, [x26,5] + bne .L825 + mov w0, 239 + str w0, [x24,2056] + str w27, [x24,2052] + mov x0, 1000 + bl __const_udelay + str w28, [x24,2048] + str wzr, [x24,2048] + str wzr, [x24,2048] + str wzr, [x24,2048] +.L825: mov w0, w25 bl NandcFlashDeCs - ldrb w2, [x21] + ldrb w2, [x26] sub w0, w2, #1 uxtb w0, w0 cmp w0, 253 - bhi .L792 + bhi .L826 ldr x0, [x29,104] - add w1, w27, 1 - ldrb w3, [x21,1] - ldrb w4, [x21,2] - ldrb w5, [x21,3] - ldrb w6, [x21,4] - ldrb w7, [x21,5] + add w1, w23, 1 + ldrb w3, [x26,1] + ldrb w4, [x26,2] + ldrb w5, [x26,3] + ldrb w6, [x26,4] + ldrb w7, [x26,5] bl printk -.L792: - cbnz w27, .L793 - ldrb w0, [x26] +.L826: + cbnz w23, .L827 + ldrb w0, [x21,#:lo12:IDByte] + add x1, x21, :lo12:IDByte sub w0, w0, #1 uxtb w0, w0 cmp w0, 253 - bhi .L841 - ldrb w0, [x26,1] + bhi .L881 + ldrb w0, [x1,1] cmp w0, 255 - beq .L841 + beq .L881 bl FlashCs123Init -.L793: - ldrb w0, [x21] +.L827: + ldrb w0, [x26] cmp w0, 181 - bne .L795 - strb w28, [x21] -.L795: - add w27, w27, 1 - add x24, x24, 16 - cmp w27, 4 - add x21, x21, 8 - bne .L796 - ldrb w0, [x23,#:lo12:IDByte] + bne .L829 + mov w0, 44 + strb w0, [x26] +.L829: + add w23, w23, 1 + add x22, x22, 16 + cmp w23, 4 + add x26, x26, 8 + bne .L830 + ldrb w0, [x21,#:lo12:IDByte] cmp w0, 173 - beq .L797 + beq .L831 add x0, x20, :lo12:.LANCHOR2 ldr w0, [x0,576] bl NandcSetDdrMode -.L797: - add x21, x19, :lo12:.LANCHOR0 +.L831: + add x22, x19, :lo12:.LANCHOR0 mov w1, 0 mov w2, 852 - add x0, x21, 4056 + add x0, x22, 4056 bl ftl_memset - strb wzr, [x21,32] + strb wzr, [x22,96] adrp x1, .LANCHOR1 - add x4, x23, :lo12:IDByte + mov w2, 12336 add x0, x1, :lo12:.LANCHOR1 - add x0, x0, 256 - str x0, [x21,1912] - ldrb w0, [x4,1] + movk w2, 0x5638, lsl 16 + add x0, x0, 472 + str x0, [x22,1912] + add x0, x20, :lo12:.LANCHOR2 + ldr w4, [x0,584] + cmp w4, w2 + bne .L832 + mov w2, 1 + str w2, [x0,568] +.L832: + add x3, x21, :lo12:IDByte + ldrb w0, [x3,1] cmp w0, 218 - cset w3, eq + cset w6, eq + cmp w0, 241 + cset w5, eq cmp w0, 161 cset w2, eq - orr w2, w3, w2 - cbnz w2, .L798 - and w2, w0, -33 + orr w2, w5, w2 + orr w2, w6, w2 + cbnz w2, .L833 + and w2, w0, -3 cmp w2, 209 - beq .L798 + beq .L833 cmp w0, 220 - bne .L799 - ldrb w2, [x4,3] + bne .L834 + ldrb w2, [x3,3] cmp w2, 149 - bne .L799 -.L798: + bne .L834 +.L833: add x2, x19, :lo12:.LANCHOR0 - mov w4, 1 - mov w5, 16 - add x6, x23, :lo12:IDByte - strb w4, [x2,24] - add x4, x20, :lo12:.LANCHOR2 - strb w5, [x2,25] + add x3, x20, :lo12:.LANCHOR2 + mov w7, 16 + mov w5, 1 + add x8, x21, :lo12:IDByte + strb w7, [x2,89] + strb w5, [x2,88] add x2, x1, :lo12:.LANCHOR1 - strb w5, [x4,685] - ldrb w5, [x23,#:lo12:IDByte] - strb w5, [x2,3129] - strb w0, [x2,3130] - cmp w5, 152 - bne .L800 - ldrsb w2, [x6,4] - tbnz w2, #31, .L800 + strb w7, [x3,693] + ldrb w7, [x21,#:lo12:IDByte] + strb w7, [x2,3257] + strb w0, [x2,3258] + cmp w7, 152 + bne .L836 + ldrsb w2, [x8,4] + tbnz w2, #31, .L837 mov w2, 24 - strb w2, [x4,685] -.L800: - add x2, x20, :lo12:.LANCHOR2 - ldr w4, [x2,568] + strb w2, [x3,693] +.L836: cmp w4, 2049 - beq .L843 + beq .L884 mov w2, 12336 movk w2, 0x5638, lsl 16 cmp w4, w2 - bne .L801 -.L843: + bne .L839 +.L884: add x2, x20, :lo12:.LANCHOR2 - mov w4, 16 - strb w4, [x2,685] -.L801: - cbz w3, .L803 + mov w3, 16 + strb w3, [x2,693] +.L839: + cbz w6, .L841 add x0, x1, :lo12:.LANCHOR1 mov w2, 2048 - strh w2, [x0,3142] + strh w2, [x0,3270] mov w2, -38 - b .L876 -.L803: + b .L926 +.L841: cmp w0, 220 - bne .L804 + bne .L843 add x0, x1, :lo12:.LANCHOR1 mov w2, 4096 - strh w2, [x0,3142] + strh w2, [x0,3270] mov w2, -36 -.L876: - strb w2, [x0,3130] -.L804: - add x21, x1, :lo12:.LANCHOR1 +.L926: + strb w2, [x0,3258] + b .L842 +.L843: + cmp w0, 211 + bne .L842 + add x0, x1, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x0,3270] + mov w2, 2 + strb w2, [x0,3269] +.L842: + add x22, x1, :lo12:.LANCHOR1 add x0, x19, :lo12:.LANCHOR0 - add x1, x21, 2784 + add x1, x22, 3128 mov w2, 32 add x0, x0, 104 bl ftl_memcpy - add x0, x21, 256 - add x1, x21, 3128 + add x0, x22, 472 + add x1, x22, 3256 mov w2, 32 bl ftl_memcpy -.L799: - add x21, x19, :lo12:.LANCHOR0 - ldrb w0, [x21,24] - cbnz w0, .L805 +.L834: + add x22, x19, :lo12:.LANCHOR0 + ldrb w0, [x22,88] + cbnz w0, .L844 bl FlashLoadPhyInfoInRam - cbnz w0, .L807 - ldr x0, [x21,1912] - add x21, x20, :lo12:.LANCHOR2 + cbnz w0, .L846 + ldr x0, [x22,1912] + add x22, x20, :lo12:.LANCHOR2 ldrb w1, [x0,17] and w0, w1, 7 - strb w0, [x21,564] - tbnz x1, 0, .L807 + strb w0, [x22,564] + tbnz x1, 0, .L846 mov w1, 1 - strb w1, [x21,572] + strb w1, [x22,572] bl FlashSetInterfaceMode - ldrb w0, [x21,564] + ldrb w0, [x22,564] bl NandcSetMode -.L807: +.L846: add x0, x19, :lo12:.LANCHOR0 ldr x1, [x0,1912] ldrb w1, [x1,26] - strb w1, [x0,136] + strb w1, [x0,4044] bl FlashLoadPhyInfo - cbz w0, .L805 - add x21, x20, :lo12:.LANCHOR2 - ldr w0, [x21,576] - cbz w0, .L810 + cbz w0, .L844 + add x22, x20, :lo12:.LANCHOR2 + ldr w0, [x22,576] + cbz w0, .L849 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 - b .L877 -.L810: - ldrb w0, [x21,564] + b .L922 +.L849: + ldrb w0, [x22,564] bl FlashSetInterfaceMode - ldrb w0, [x21,564] -.L877: + ldrb w0, [x22,564] +.L922: bl NandcSetMode bl FlashLoadPhyInfo - cbz w0, .L805 + cbz w0, .L844 mov w0, 1 - add x21, x19, :lo12:.LANCHOR0 + add x22, x19, :lo12:.LANCHOR0 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - ldr x1, [x21,1912] + ldr x1, [x22,1912] adrp x0, .LC14 add x0, x0, :lo12:.LC14 ldrh w1, [x1,14] bl printk bl FlashLoadPhyInfoInRam cmn w0, #1 - beq .L794 + beq .L898 bl FlashDieInfoInit - ldr x0, [x21,1912] + ldr x0, [x22,1912] ldrb w0, [x0,19] bl FlashGetReadRetryDefault - ldr x0, [x21,1912] - ldrh w1, [x21,1920] + ldr x0, [x22,1912] + ldrh w1, [x22,1920] ldrb w2, [x0,9] add w1, w1, 4095 cmp w2, w1, lsr 12 - blt .L812 + blt .L851 ldrh w1, [x0,14] add w1, w1, 255 cmp w2, w1, lsr 8 - bge .L813 -.L812: + bge .L852 +.L851: ldrh w1, [x0,14] and w1, w1, -256 strh w1, [x0,14] -.L813: - add x21, x20, :lo12:.LANCHOR2 - ldrb w0, [x21,564] +.L852: + add x22, x20, :lo12:.LANCHOR2 + ldrb w0, [x22,564] tst w0, 6 - beq .L814 + beq .L853 bl FlashSavePhyInfo - ldr w1, [x21,680] + ldr w1, [x22,688] mov w0, 0 bl FlashDdrParaScan -.L814: +.L853: bl FlashSavePhyInfo -.L805: - add x21, x19, :lo12:.LANCHOR0 - add x22, x20, :lo12:.LANCHOR2 - ldr x2, [x21,1912] - str xzr, [x22,664] +.L844: + add x22, x19, :lo12:.LANCHOR0 + add x23, x20, :lo12:.LANCHOR2 + ldr x2, [x22,1912] + str xzr, [x23,672] ldrb w0, [x2,26] - strb w0, [x21,136] + strb w0, [x22,4044] ldrh w0, [x2,16] ldrh w3, [x2,10] ubfx x1, x0, 7, 1 - strb w1, [x21,32] + strb w1, [x22,96] ubfx x1, x0, 3, 1 - strb w1, [x22,720] + strb w1, [x23,729] ubfx x1, x0, 4, 1 - strb w1, [x22,648] + strb w1, [x23,656] ldrb w1, [x2,12] ubfx x0, x0, 8, 3 - strb w0, [x22,564] + strb w0, [x23,564] ldrb w0, [x2,18] sdiv w1, w3, w1 bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr x0, [x21,1912] + ldr x0, [x22,1912] ldrh w1, [x0,16] - tbz x1, 6, .L816 + tbz x1, 6, .L855 adrp x1, g_retryMode - adrp x3, g_maxRegNum ldrb w0, [x0,19] - mov x5, x3 - ldrb w2, [x21,4058] + ldrb w2, [x22,4057] + ldrb w3, [x22,4058] strb w0, [x1,#:lo12:g_retryMode] - ldrb w1, [x21,4057] - strb w1, [x3,#:lo12:g_maxRegNum] - adrp x1, g_maxRetryCount - strb w2, [x1,#:lo12:g_maxRetryCount] - sub w2, w0, #1 - uxtb w2, w2 - cmp w2, 6 - mov x2, x1 - bhi .L817 + adrp x1, g_maxRegNum + strb w2, [x1,#:lo12:g_maxRegNum] + adrp x2, g_maxRetryCount + strb w3, [x2,#:lo12:g_maxRetryCount] + sub w3, w0, #1 + uxtb w3, w3 + cmp w3, 7 + mov x3, x2 + bhi .L856 adrp x1, HynixReadRetrial + cmp w0, 8 add x1, x1, :lo12:HynixReadRetrial - str x1, [x22,664] + str x1, [x23,672] sub w1, w0, #5 + cset w2, eq uxtb w1, w1 cmp w1, 1 - bhi .L818 - mov w1, 1 - str w1, [x22,640] - b .L819 -.L818: + bls .L885 + cbz w2, .L857 +.L885: + add x1, x20, :lo12:.LANCHOR2 + mov w3, 1 + str w3, [x1,648] +.L857: cmp w0, 7 - add x21, x21, 4084 - beq .L820 -.L819: - add x21, x19, :lo12:.LANCHOR0 - add x21, x21, 4076 -.L820: - mov x1, 0 - mov w2, w1 -.L822: - ldrsb w3, [x21,x1] - add x1, x1, 1 - cmp w3, wzr - csinc w2, w2, w2, ne - cmp x1, 32 - bne .L822 - cmp w2, 27 - bls .L816 + add x1, x19, :lo12:.LANCHOR0 + beq .L883 + cbnz w2, .L883 + add x1, x1, 4076 + b .L860 +.L883: + add x1, x1, 4084 +.L860: + mov x2, 0 + mov w3, w2 +.L862: + ldrsb w4, [x1,x2] + add x2, x2, 1 + cmp w4, wzr + csinc w3, w3, w3, ne + cmp x2, 32 + bne .L862 + cmp w3, 27 + bls .L855 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L816 -.L817: - sub w3, w0, #17 - uxtb w3, w3 - cmp w3, 2 - bhi .L824 - adrp x2, MicronReadRetrial + b .L855 +.L856: + sub w4, w0, #17 + uxtb w4, w4 + cmp w4, 2 + bhi .L864 + adrp x1, MicronReadRetrial cmp w0, 19 - add x2, x2, :lo12:MicronReadRetrial - str x2, [x22,664] - beq .L825 + add x1, x1, :lo12:MicronReadRetrial + str x1, [x23,672] + beq .L865 mov w0, 7 - b .L879 -.L825: + b .L924 +.L865: mov w0, 15 -.L879: - strb w0, [x1,#:lo12:g_maxRetryCount] - b .L816 -.L824: - sub w1, w0, #65 - uxtb w1, w1 - cmp w1, 1 - bls .L844 +.L924: + strb w0, [x2,#:lo12:g_maxRetryCount] + b .L855 +.L864: + sub w2, w0, #65 + uxtb w2, w2 + cmp w2, 1 + bls .L886 cmp w0, 33 - bne .L826 -.L844: + bne .L866 +.L886: add x0, x20, :lo12:.LANCHOR2 - adrp x1, ToshibaReadRetrial - add x1, x1, :lo12:ToshibaReadRetrial - str x1, [x0,664] + adrp x2, ToshibaReadRetrial + add x2, x2, :lo12:ToshibaReadRetrial + str x2, [x0,672] mov w0, 4 - strb w0, [x5,#:lo12:g_maxRegNum] + strb w0, [x1,#:lo12:g_maxRegNum] mov w0, 7 - strb w0, [x2,#:lo12:g_maxRetryCount] - b .L816 -.L826: - sub w1, w0, #67 - uxtb w1, w1 - cmp w1, 1 - sub w1, w0, #34 - cset w4, ls - uxtb w1, w1 - cmp w1, 1 - bls .L845 - cbz w4, .L828 -.L845: - add x1, x20, :lo12:.LANCHOR2 - adrp x3, ToshibaReadRetrial - add x3, x3, :lo12:ToshibaReadRetrial + strb w0, [x3,#:lo12:g_maxRetryCount] + b .L855 +.L866: + sub w2, w0, #67 + uxtb w2, w2 + cmp w2, 1 + sub w2, w0, #34 + cset w5, ls + uxtb w2, w2 + cmp w2, 1 + bls .L887 + cbz w5, .L868 +.L887: + add x2, x20, :lo12:.LANCHOR2 + adrp x4, ToshibaReadRetrial + add x4, x4, :lo12:ToshibaReadRetrial cmp w0, 35 - str x3, [x1,664] - beq .L830 + str x4, [x2,672] + beq .L870 cmp w0, 68 - beq .L830 + beq .L870 mov w0, 7 - b .L878 -.L830: + b .L923 +.L870: mov w0, 17 -.L878: - strb w0, [x2,#:lo12:g_maxRetryCount] +.L923: + strb w0, [x3,#:lo12:g_maxRetryCount] mov w0, 4 - cbnz w4, .L880 + cbnz w5, .L925 mov w0, 5 -.L880: - strb w0, [x5,#:lo12:g_maxRegNum] - b .L816 -.L828: +.L925: + strb w0, [x1,#:lo12:g_maxRegNum] + b .L855 +.L868: cmp w0, 49 - bne .L816 + bne .L855 adrp x0, SamsungReadRetrial add x0, x0, :lo12:SamsungReadRetrial - str x0, [x22,664] -.L816: + str x0, [x23,672] +.L855: add x0, x20, :lo12:.LANCHOR2 - ldr w1, [x0,568] + ldr w1, [x0,584] mov w0, 12336 movk w0, 0x5638, lsl 16 cmp w1, w0 - bne .L833 + bne .L873 add x0, x19, :lo12:.LANCHOR0 - ldrb w2, [x0,136] - cbz w2, .L833 + ldrb w2, [x0,4044] + cbz w2, .L873 ldr x0, [x0,1912] strb wzr, [x0,18] -.L833: - ldrb w0, [x23,#:lo12:IDByte] +.L873: + ldrb w0, [x21,#:lo12:IDByte] cmp w0, 44 - bne .L834 + bne .L874 add x0, x20, :lo12:.LANCHOR2 ldrb w0, [x0,572] - cbz w0, .L834 + cbz w0, .L874 mov w0, 12336 movk w0, 0x5638, lsl 16 cmp w1, w0 - bne .L835 + bne .L875 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbnz w0, .L834 -.L835: + ldrb w0, [x0,4044] + cbnz w0, .L874 +.L875: add x0, x20, :lo12:.LANCHOR2 strb wzr, [x0,572] mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode -.L834: - mov w0, 0 - bl flash_enter_slc_mode +.L874: add x1, x20, :lo12:.LANCHOR2 ldrb w0, [x1,564] tst w0, 6 - beq .L836 + beq .L876 ldrb w1, [x1,572] - cbnz w1, .L837 - tbnz x0, 0, .L836 -.L837: + cbnz w1, .L877 + tbnz x0, 0, .L876 +.L877: + mov w0, 0 add x20, x20, :lo12:.LANCHOR2 + bl flash_enter_slc_mode + ldr w1, [x20,688] mov w0, 0 - ldr w1, [x20,680] bl FlashDdrParaScan -.L836: - add x19, x19, :lo12:.LANCHOR0 mov w0, 0 - mov w20, 16 - add x23, x23, :lo12:IDByte bl flash_exit_slc_mode +.L876: + add x19, x19, :lo12:.LANCHOR0 + mov w20, 16 + add x21, x21, :lo12:IDByte ldr x0, [x19,1912] ldrb w0, [x0,20] bl FlashBchSel add x0, x19, 1928 bl FlashReadIdbDataRaw - strb w20, [x19,25] + strb w20, [x19,89] mov w0, 18928 movk w0, 0x2, lsl 16 bl FlashTimingCfg @@ -5717,9 +5991,9 @@ FlashInit: ldrh w4, [x1,14] ldrb w2, [x1,7] str w2, [x19,4020] - ldr w2, [x23] + ldr w2, [x21] str w2, [x19,4016] - ldrb w2, [x19,1676] + ldrb w2, [x19,1672] strh w2, [x19,4026] ldrb w2, [x1,13] strh w2, [x19,4028] @@ -5737,31 +6011,35 @@ FlashInit: mul w2, w2, w5 mov w5, 512 strh w5, [x19,4040] - ldrb w5, [x19,25] + ldrb w5, [x19,89] strh w5, [x19,4042] uxth w2, w2 - ldrb w5, [x19,24] + ldrb w5, [x19,88] strh w2, [x19,4038] cmp w5, 1 - bne .L839 + bne .L879 lsl w2, w2, 1 lsr w4, w4, 1 lsl w3, w3, 1 strh w2, [x19,4038] - strb w20, [x19,25] + strb w20, [x19,89] mov w2, 8 strh w4, [x19,4030] strh w3, [x19,4036] strh w2, [x19,4042] -.L839: +.L879: ldrb w0, [x1,20] bl FlashBchSel bl ftl_flash_suspend mov w0, 0 - b .L794 -.L841: + b .L898 +.L881: mov w0, -2 -.L794: + b .L898 +.L837: + strb w5, [x3,728] + b .L836 +.L898: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -5777,66 +6055,69 @@ FlashPageProgMsbFFData: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 uxth w19, w2 + adrp x2, .LANCHOR0 stp x21, x22, [sp,32] - uxtb w22, w0 - add x0, x20, :lo12:.LANCHOR0 + uxtb w21, w0 + add x0, x2, :lo12:.LANCHOR0 stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr x2, [x0,1912] - ldrb w0, [x0,136] - ldrb w3, [x2,19] - cbz w0, .L882 + str x25, [sp,64] + ldr x3, [x0,1912] + ldrb w0, [x0,4044] + ldrb w20, [x3,19] + mov x3, x2 + cbz w0, .L928 adrp x0, .LANCHOR2+568 - ldr w2, [x0,#:lo12:.LANCHOR2+568] - mov w0, 12336 - movk w0, 0x5638, lsl 16 - cmp w2, w0 - beq .L881 -.L882: - sub w0, w3, #5 - uxtb w0, w0 - cmp w0, 2 - bls .L883 - cmp w3, 68 - beq .L883 - sub w3, w3, #19 - and w3, w3, -17 - uxtb w3, w3 - cbnz w3, .L881 -.L883: - add x20, x20, :lo12:.LANCHOR0 - mov w21, w1 - add x24, x20, 652 + ldr w0, [x0,#:lo12:.LANCHOR2+568] + cbnz w0, .L927 +.L928: + sub w2, w20, #5 + uxtb w2, w2 + cmp w2, 3 + bls .L929 + cmp w20, 68 + beq .L929 + sub w2, w20, #19 + and w2, w2, -17 + uxtb w2, w2 + cbnz w2, .L927 +.L929: + mov w24, w1 + add x22, x3, :lo12:.LANCHOR0 mov w25, 65535 - adrp x26, .LANCHOR2 -.L885: - ldr x0, [x20,1912] + adrp x23, .LANCHOR2 +.L931: + ldr x0, [x22,1912] ldrh w0, [x0,10] cmp w0, w19 - bls .L881 - ldrh w0, [x24,w19,sxtw 1] + bls .L927 + add x0, x22, 648 + ldrh w0, [x0,w19,sxtw 1] cmp w0, w25 - bne .L881 - add x23, x26, :lo12:.LANCHOR2 + bne .L927 + add x0, x23, :lo12:.LANCHOR2 + cmp w20, 8 + mov w1, 0 + ldr x0, [x0,696] + beq .L941 mov w1, 255 +.L941: mov w2, 32768 - ldr x0, [x23,688] bl ftl_memset - ldr x2, [x23,688] - add w1, w19, w21 - mov w0, w22 - mov x3, 0 + add x0, x23, :lo12:.LANCHOR2 + add w1, w19, w24 add w19, w19, 1 - bl FlashProgPage + ldr x2, [x0,696] + mov w0, w21 uxth w19, w19 - b .L885 -.L881: + mov x3, x2 + bl FlashProgPage + b .L931 +.L927: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + ldr x25, [sp,64] ldp x29, x30, [sp], 80 ret .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData @@ -5844,71 +6125,99 @@ FlashPageProgMsbFFData: .global FlashReadSlc2KPages .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x25, x26, [sp,64] - mov w25, w1 - adrp x1, .LANCHOR1+265 - stp x21, x22, [sp,32] stp x23, x24, [sp,48] - adrp x21, .LANCHOR0 - adrp x23, .LC15 - adrp x24, .LC17 - ldrb w26, [x1,#:lo12:.LANCHOR1+265] + mov w24, w1 + adrp x23, .LANCHOR0 + adrp x1, .LANCHOR1+481 + str w2, [x29,116] stp x19, x20, [sp,16] - stp x27, x28, [sp,80] mov x19, x0 - mov w27, w2 + add x0, x23, :lo12:.LANCHOR0 + str x0, [x29,120] + add x0, x0, 1676 + stp x25, x26, [sp,64] + str x0, [x29,104] + adrp x0, .LC15 + ldrb w25, [x1,#:lo12:.LANCHOR1+481] + add x0, x0, :lo12:.LC15 + stp x21, x22, [sp,32] + stp x27, x28, [sp,80] mov w22, 0 - add x21, x21, :lo12:.LANCHOR0 - add x23, x23, :lo12:.LC15 - add x24, x24, :lo12:.LC17 -.L891: - cmp w22, w25 - beq .L925 - mov w1, w27 - sub w4, w25, w22 + str x0, [x29,96] +.L943: + cmp w22, w24 + beq .L1007 + ldr w1, [x29,116] + sub w4, w24, w22 mov x0, x19 - add x2, x29, 124 - add x3, x29, 120 + add x2, x29, 140 + add x3, x29, 136 + adrp x21, .LANCHOR0 bl LogAddr2PhyAddr - ldr w0, [x29,120] - adrp x5, .LANCHOR0 - ldrb w1, [x21,1676] + ldr x1, [x29,120] + ldr w0, [x29,136] + ldrb w1, [x1,1672] cmp w0, w1 - bcc .L892 + bcc .L944 mov w0, -1 str w0, [x19] - b .L893 -.L892: - add x0, x21, x0, uxtw - ldrb w28, [x0,1680] - str x5, [x29,96] - mov w0, w28 + b .L945 +.L944: + ldr x1, [x29,104] + mov w23, 0 + adrp x27, .LANCHOR2 + mov w28, 256 + ldrb w20, [x1,w0,uxtw] + mov w0, w20 bl NandcWaitFlashReady - mov w0, w28 + mov w0, w20 bl NandcFlashCs - ldr w1, [x29,124] - mov w0, w28 +.L946: + ldr w1, [x29,140] + mov w0, w20 bl FlashReadCmd - mov w0, w28 + mov w0, w20 bl NandcWaitFlashReady ldr x3, [x19,8] - mov w1, 0 + mov w0, w20 ldr x4, [x19,16] - mov w2, w26 - mov w0, w28 + mov w1, 0 + mov w2, w25 bl NandcXferData - mov w6, w0 - ldr w2, [x21,28] - mov w0, w28 - ldr w1, [x29,124] - str x6, [x29,104] + mov w26, w0 + add x0, x27, :lo12:.LANCHOR2 + ldrb w0, [x0,728] + cbz w0, .L947 + mov w0, w20 + bl flash_read_ecc + cmp w0, 5 + csel w26, w26, w28, ls +.L947: + cmn w26, #1 + bne .L948 + cmp w23, 9 + bhi .L948 + add w23, w23, 1 + b .L946 +.L948: + cmp w23, wzr + mov w27, 256 + csel w26, w26, w27, eq + mov w23, 0 +.L950: + add x0, x21, :lo12:.LANCHOR0 + ldr w1, [x29,140] + ldr w2, [x0,92] + mov w0, w20 add w1, w2, w1 bl FlashReadCmd + mov w0, w20 + bl NandcWaitFlashReady ldr x0, [x19,8] mov w1, 0 - mov w2, w26 + mov w2, w25 cmp x0, xzr add x3, x0, 2048 ldr x0, [x19,16] @@ -5916,456 +6225,456 @@ FlashReadSlc2KPages: add x4, x0, 8 cmp x0, xzr csel x4, x4, xzr, ne - mov w0, w28 + mov w0, w20 bl NandcXferData - mov w20, w0 - mov w0, w28 + mov w28, w0 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldrb w0, [x0,728] + cbz w0, .L953 + mov w0, w20 + bl flash_read_ecc + cmp w0, 5 + csel w28, w28, w27, ls +.L953: + cmn w28, #1 + bne .L954 + cmp w23, 9 + bhi .L954 + add w23, w23, 1 + b .L950 +.L954: + cmp w23, wzr + mov w0, w20 + mov w27, 256 + csel w28, w28, w27, eq bl NandcFlashDeCs - ldr x5, [x29,96] - ldr x6, [x29,104] - add x0, x5, :lo12:.LANCHOR0 - cmp w20, w6 - csel w3, w20, w6, cs - ldrb w0, [x0,4044] + add x0, x21, :lo12:.LANCHOR0 + cmp w28, w26 + csel w28, w28, w26, cs + ldrb w0, [x0,4045] add w0, w0, w0, lsl 1 - cmp w3, w0, lsr 2 - bls .L896 - cmn w3, #1 - mov w0, 256 - csel w3, w3, w0, eq -.L896: - cmp w3, 256 - beq .L907 - cmn w3, #1 - bne .L897 -.L907: - str w3, [x19] - b .L899 -.L897: + cmp w28, w0, lsr 2 + bls .L956 + cmn w28, #1 + csel w28, w28, w27, eq +.L956: + cmp w28, 256 + beq .L967 + cmn w28, #1 + bne .L957 +.L967: + str w28, [x19] + b .L959 +.L957: str wzr, [x19] -.L899: +.L959: ldr x0, [x19,16] - cbz x0, .L900 + cbz x0, .L960 ldr w1, [x0,12] cmn w1, #1 - bne .L900 + bne .L960 ldr w1, [x0,8] cmn w1, #1 - bne .L900 + bne .L960 ldr w0, [x0] cmn w0, #1 - beq .L900 + beq .L960 str w1, [x19] -.L900: +.L960: ldr w3, [x19] cmn w3, #1 - bne .L893 - add x5, x5, :lo12:.LANCHOR0 + bne .L945 + add x21, x21, :lo12:.LANCHOR0 ldr w1, [x19,4] - mov x0, x23 - ldrb w2, [x5,4044] + ldr x0, [x29,96] + ldrb w2, [x21,4045] bl printk ldr x1, [x19,8] - cbz x1, .L902 + cbz x1, .L962 adrp x0, .LC16 mov w2, 4 add x0, x0, :lo12:.LC16 mov w3, 8 bl rknand_print_hex -.L902: +.L962: ldr x1, [x19,16] - cbz x1, .L893 + cbz x1, .L945 + adrp x0, .LC17 mov w2, 4 - mov x0, x24 + add x0, x0, :lo12:.LC17 mov w3, w2 bl rknand_print_hex -.L893: +.L945: add w22, w22, 1 add x19, x19, 56 - b .L891 -.L925: + b .L943 +.L1007: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 128 + ldp x29, x30, [sp], 144 ret .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 .global FlashReadPages .type FlashReadPages, %function FlashReadPages: - stp x29, x30, [sp, -176]! - adrp x3, .LANCHOR1+265 + stp x29, x30, [sp, -160]! + adrp x3, .LANCHOR1+481 add x29, sp, 0 - stp x21, x22, [sp,32] - ldrb w3, [x3,#:lo12:.LANCHOR1+265] - adrp x22, .LANCHOR0 - str w3, [x29,148] - add x3, x22, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + ldrb w3, [x3,#:lo12:.LANCHOR1+481] + add x19, x19, :lo12:.LANCHOR0 + str w3, [x29,136] stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - str w1, [x29,144] + stp x25, x26, [sp,64] + ldrb w3, [x19,96] mov x26, x0 - ldrb w4, [x3,32] - ldrb w23, [x3,24] - str w2, [x29,140] - str w4, [x29,136] - cbz w23, .L966 + ldrb w23, [x19,88] + stp x21, x22, [sp,32] + stp x27, x28, [sp,80] + str w1, [x29,132] + str w2, [x29,128] + str w3, [x29,124] + cbz w23, .L1048 bl FlashReadSlc2KPages - b .L1015 -.L966: + b .L1097 +.L1048: + add x0, x19, 1676 + str x0, [x29,112] adrp x0, .LC15 mov w25, w23 add x0, x0, :lo12:.LC15 - str x0, [x29,128] + str x0, [x29,104] adrp x0, .LC17 add x0, x0, :lo12:.LC17 - str x0, [x29,120] - adrp x0, .LC18 - add x0, x0, :lo12:.LC18 - str x0, [x29,112] -.L927: - ldr w0, [x29,144] + str x0, [x29,96] +.L1009: + ldr w0, [x29,132] cmp w25, w0 - bcs .L1017 + bcs .L1099 mov w27, 56 - ldr w0, [x29,144] - ldr w1, [x29,140] - add x2, x29, 172 + ldr w0, [x29,132] + ldr w1, [x29,128] + add x2, x29, 156 umull x27, w25, w27 sub w4, w0, w25 - add x3, x29, 168 - add x21, x26, x27 - mov x0, x21 - ldr w28, [x21,4] + add x3, x29, 152 + add x22, x26, x27 + mov x0, x22 + ldr w28, [x22,4] bl LogAddr2PhyAddr - add x1, x22, :lo12:.LANCHOR0 - mov w20, w0 - ldr w0, [x29,168] - ldrb w2, [x1,1676] - cmp w0, w2 - bcc .L929 + ldrb w1, [x19,1672] + mov w21, w0 + ldr w0, [x29,152] + cmp w0, w1 + bcc .L1011 mov w0, -1 str w0, [x26,x27] - b .L930 -.L929: - add x0, x1, x0, uxtw + b .L1012 +.L1011: + ldr x1, [x29,112] adrp x24, .LANCHOR2 - ldrb w19, [x0,1680] + ldrb w20, [x1,w0,uxtw] add x0, x24, :lo12:.LANCHOR2 - str x1, [x29,152] - ldrb w0, [x0,720] + ldrb w0, [x0,729] cmp w0, wzr - mov w0, w19 - csel w20, w20, wzr, ne + mov w0, w20 + csel w21, w21, wzr, ne bl NandcWaitFlashReady - ldr x1, [x29,152] - ldr x0, [x1,1912] - ldrb w2, [x0,19] - sub w0, w2, #1 + ldr x0, [x19,1912] + ldrb w1, [x0,19] + sub w0, w1, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L932 - add x1, x1, 4056 - sxtw x0, w19 - add x1, x1, x0 - cmp w2, 7 - ldrb w3, [x1,12] - bne .L933 - ldrb w3, [x1,20] -.L933: - add x1, x24, :lo12:.LANCHOR2 - add x0, x1, x0 - ldrb w0, [x0,560] + cmp w0, 7 + bhi .L1014 + sub w1, w1, #7 + add x0, x19, 4056 + sxtw x2, w20 + add x0, x0, x2 + uxtb w1, w1 + cmp w1, 1 + ldrb w3, [x0,12] + bhi .L1015 + ldrb w3, [x0,20] +.L1015: + add x0, x24, :lo12:.LANCHOR2 + add x2, x0, x2 + ldrb w0, [x2,560] cmp w0, w3 - beq .L932 - add x2, x22, :lo12:.LANCHOR0 - mov w0, w19 - add x2, x2, 4060 - ldrb w1, [x2,-3] + beq .L1014 + ldrb w1, [x19,4057] + mov w0, w20 + add x2, x19, 4060 bl HynixSetRRPara -.L932: - mov w0, w19 +.L1014: + mov w0, w20 bl NandcFlashCs - ldr w0, [x29,140] + ldr w0, [x29,128] cmp w0, 1 cset w0, eq orr w0, w0, w28, lsr 31 - str w0, [x29,152] - cbz w0, .L934 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L934 - mov w0, w19 + str w0, [x29,140] + cbz w0, .L1016 + ldrb w0, [x19,4044] + cbz w0, .L1016 + mov w0, w20 bl flash_enter_slc_mode - b .L935 -.L934: - mov w0, w19 + b .L1017 +.L1016: + mov w0, w20 bl flash_exit_slc_mode -.L935: - cmp w19, 255 - ldr w1, [x29,172] - bne .L973 +.L1017: + cmp w20, 255 + ldr w1, [x29,156] + bne .L1055 cmn w1, #1 cset w0, ne - cbz w0, .L967 -.L973: - cbz w20, .L939 - add x0, x22, :lo12:.LANCHOR0 - ldr w2, [x0,28] - mov w0, w19 + cbz w0, .L1049 +.L1055: + cbz w21, .L1021 + ldr w2, [x19,92] + mov w0, w20 add w2, w1, w2 bl FlashReadDpCmd - b .L940 -.L939: - mov w0, w19 + b .L1022 +.L1021: + mov w0, w20 bl FlashReadCmd - b .L940 -.L967: - mov w20, w0 -.L937: - ldrb w2, [x29,148] - mov w0, w19 - ldr x3, [x21,8] + b .L1022 +.L1049: + mov w21, w0 +.L1019: + ldrb w2, [x29,136] + mov w0, w20 + ldr x3, [x22,8] mov w1, 0 - ldr x4, [x21,16] + ldr x4, [x22,16] bl NandcXferData cmn w0, #1 mov w28, w0 - bne .L941 - add x0, x22, :lo12:.LANCHOR0 - ldrb w1, [x0,32] - cbz w1, .L941 - strb wzr, [x0,32] - mov w20, 0 - b .L935 -.L941: - cbz w20, .L942 - add x0, x22, :lo12:.LANCHOR0 - ldr w1, [x29,172] - ldr w2, [x0,28] - mov w0, w19 + bne .L1023 + ldrb w0, [x19,96] + cbz w0, .L1023 + strb wzr, [x19,96] + mov w21, 0 + b .L1017 +.L1023: + cbz w21, .L1024 + ldr w2, [x19,92] + mov w0, w20 + ldr w1, [x29,156] add w1, w2, w1 bl FlashReadDpDataOutCmd add w0, w25, 1 mov w4, 56 - ldrb w2, [x29,148] + ldrb w2, [x29,136] mov w1, 0 umull x4, w0, w4 - mov w0, w19 + mov w0, w20 add x4, x26, x4 ldr x3, [x4,8] ldr x4, [x4,16] bl NandcXferData cmn w0, #1 mov w23, w0 - csel w20, w20, wzr, ne -.L942: - mov w0, w19 + csel w21, w21, wzr, ne +.L1024: + mov w0, w20 bl NandcFlashDeCs - add x6, x22, :lo12:.LANCHOR0 - ldrb w0, [x29,136] + ldrb w0, [x29,124] cmn w28, #1 - strb w0, [x6,32] - bne .L949 + strb w0, [x19,96] + bne .L1031 add x0, x24, :lo12:.LANCHOR2 ldrb w0, [x0,572] - cbnz w0, .L944 -.L948: + cbnz w0, .L1026 +.L1030: add x0, x24, :lo12:.LANCHOR2 - ldr x20, [x0,664] - cbnz x20, .L945 - b .L1018 -.L944: - ldr x0, [x6,3976] + ldr x21, [x0,672] + cbnz x21, .L1027 + b .L1100 +.L1026: + ldr x0, [x19,3976] mov w4, 1 - ldr w1, [x29,172] - ldr x2, [x21,8] - ldr x3, [x21,16] - ldr w20, [x0,304] - mov w0, w19 - str x6, [x29,104] + ldr w1, [x29,156] + ldr x2, [x22,8] + ldr x3, [x22,16] + ldr w21, [x0,304] + mov w0, w20 bl FlashDdrTunningRead cmn w0, #1 mov w28, w0 - beq .L947 - ldr x6, [x29,104] - ldrb w0, [x6,4044] + beq .L1029 + ldrb w0, [x19,4045] cmp w28, w0, lsr 1 - bls .L969 -.L947: - lsr w0, w20, 8 + bls .L1051 +.L1029: + lsr w0, w21, 8 bl NandcSetDdrPara cmn w28, #1 - beq .L948 - b .L969 -.L945: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - ldr x3, [x21,16] - blr x20 + beq .L1030 + b .L1051 +.L1027: + ldr w1, [x29,156] + mov w0, w20 + ldr x2, [x22,8] + ldr x3, [x22,16] + blr x21 cmn w0, #1 mov w28, w0 - mov w20, 0 - bne .L950 - add x2, x22, :lo12:.LANCHOR0 - ldr x0, [x2,1912] + mov w21, 0 + bne .L1032 + ldr x0, [x19,1912] ldrb w0, [x0,19] sub w0, w0, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L951 - ldrb w1, [x2,4057] - mov w0, w19 - add x2, x2, 4060 - mov w3, w20 + cmp w0, 7 + bhi .L1033 + ldrb w1, [x19,4057] + mov w0, w20 + add x2, x19, 4060 + mov w3, w21 bl HynixSetRRPara -.L951: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - mov w20, 0 - ldr x3, [x21,16] +.L1033: + ldr w1, [x29,156] + mov w0, w20 + ldr x2, [x22,8] + mov w21, 0 + ldr x3, [x22,16] bl FlashReadRawPage mov w28, w0 - add x4, x22, :lo12:.LANCHOR0 - ldr x0, [x29,112] - ldr w1, [x21,4] + ldr w1, [x22,4] + adrp x0, .LC18 + ldrb w2, [x19,4045] + add x0, x0, :lo12:.LC18 mov w3, w28 - str x4, [x29,104] - ldrb w2, [x4,4044] bl printk cmn w28, #1 - ldr x4, [x29,104] - bne .L950 - ldrb w0, [x4,136] - cbz w0, .L950 - ldr w0, [x29,152] - cbz w0, .L952 - mov w0, w19 + bne .L1032 + ldrb w0, [x19,4044] + cbz w0, .L1032 + ldr w0, [x29,140] + cbz w0, .L1034 + mov w0, w20 bl flash_enter_slc_mode - b .L953 -.L952: - mov w0, w19 + b .L1035 +.L1034: + mov w0, w20 bl flash_exit_slc_mode -.L953: +.L1035: add x0, x24, :lo12:.LANCHOR2 - ldr w1, [x29,172] - ldr x2, [x21,8] - mov w20, 0 - ldr x3, [x21,16] - ldr x4, [x0,664] - mov w0, w19 + ldr w1, [x29,156] + ldr x2, [x22,8] + mov w21, 0 + ldr x3, [x22,16] + ldr x4, [x0,672] + mov w0, w20 blr x4 mov w28, w0 - b .L950 -.L1018: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - ldr x3, [x21,16] + b .L1032 +.L1100: + ldr w1, [x29,156] + mov w0, w20 + ldr x2, [x22,8] + ldr x3, [x22,16] bl FlashReadRawPage mov w28, w0 - b .L950 -.L969: - mov w20, 0 -.L949: - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,4044] + b .L1032 +.L1051: + mov w21, 0 +.L1031: + ldrb w0, [x19,4045] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bls .L950 + bls .L1032 add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,664] + ldr x0, [x0,672] cmp x0, xzr mov w0, 256 csel w28, w28, w0, ne -.L950: +.L1032: cmp w28, 256 - beq .L974 + beq .L1056 cmn w28, #1 - bne .L954 -.L974: + bne .L1036 +.L1056: str w28, [x26,x27] - b .L956 -.L954: + b .L1038 +.L1036: str wzr, [x26,x27] -.L956: +.L1038: ldr w3, [x26,x27] cmn w3, #1 - bne .L958 - add x2, x22, :lo12:.LANCHOR0 - ldr w1, [x21,4] - ldr x0, [x29,128] - ldrb w2, [x2,4044] + bne .L1040 + ldr w1, [x22,4] + ldr x0, [x29,104] + ldrb w2, [x19,4045] bl printk - ldr x1, [x21,16] - cbz x1, .L958 + ldr x1, [x22,16] + cbz x1, .L1040 mov w2, 4 - ldr x0, [x29,120] + ldr x0, [x29,96] mov w3, w2 bl rknand_print_hex -.L958: - cbz w20, .L960 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,4044] +.L1040: + cbz w21, .L1042 + ldrb w0, [x19,4045] add w0, w0, w0, lsl 1 cmp w23, w0, lsr 2 - bls .L961 + bls .L1043 add x24, x24, :lo12:.LANCHOR2 - ldr x0, [x24,664] + ldr x0, [x24,672] cmp x0, xzr mov w0, 256 csel w23, w23, w0, ne -.L961: +.L1043: add w0, w25, 1 mov w1, 56 cmp w23, 256 umull x0, w0, w1 - beq .L975 + beq .L1057 cmn w23, #1 - bne .L962 -.L975: + bne .L1044 +.L1057: str w23, [x26,x0] - b .L960 -.L962: + b .L1042 +.L1044: str wzr, [x26,x0] -.L960: - ldr w0, [x29,152] - add w25, w25, w20 - cbz w0, .L930 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L930 - mov w0, w19 +.L1042: + ldr w0, [x29,140] + add w25, w25, w21 + cbz w0, .L1012 + ldrb w0, [x19,4044] + cbz w0, .L1012 + mov w0, w20 bl flash_exit_slc_mode -.L930: +.L1012: add w25, w25, 1 - b .L927 -.L1017: + b .L1009 +.L1099: mov w0, 0 - b .L1015 -.L940: - mov w0, w19 + b .L1097 +.L1022: + mov w0, w20 bl NandcWaitFlashReady - cbz w20, .L937 - ldr w1, [x29,172] - mov w0, w19 + cbz w21, .L1019 + ldr w1, [x29,156] + mov w0, w20 bl FlashReadDpDataOutCmd - b .L937 -.L1015: + b .L1019 +.L1097: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 176 + ldp x29, x30, [sp], 160 ret .size FlashReadPages, .-FlashReadPages .align 2 @@ -6387,7 +6696,7 @@ FlashLoadFactorBbt: ldrh w1, [x0,4028] add x19, x23, :lo12:.LANCHOR2 ldrh w21, [x0,4030] - add x0, x19, 728 + add x0, x19, 736 mov w28, 0 adrp x26, .LC19 add x26, x26, :lo12:.LC19 @@ -6396,25 +6705,25 @@ FlashLoadFactorBbt: uxth w21, w21 bl ftl_memset add w25, w21, w27 - ldr x0, [x19,696] + ldr x0, [x19,704] str x0, [x29,152] mov w19, w28 sub w0, w21, #12 str xzr, [x29,144] uxth w25, w25 str w0, [x29,124] -.L1020: +.L1102: add x1, x22, :lo12:.LANCHOR0 - ldrb w1, [x1,1676] + ldrb w1, [x1,1672] cmp w1, w19 - bls .L1030 + bls .L1112 mul w3, w19, w21 mov w20, w25 mov w4, 61664 -.L1021: +.L1103: ldr w0, [x29,124] cmp w20, w0 - ble .L1023 + ble .L1105 add w1, w3, w20 add x0, x29, 136 lsl w1, w1, 10 @@ -6428,13 +6737,13 @@ FlashLoadFactorBbt: ldr x3, [x29,112] cmn w0, #1 ldr x4, [x29,104] - beq .L1022 + beq .L1104 add x24, x23, :lo12:.LANCHOR2 - ldr x0, [x24,696] + ldr x0, [x24,704] ldrh w0, [x0] cmp w0, w4 - bne .L1022 - add x24, x24, 728 + bne .L1104 + add x24, x24, 736 mov x0, x26 mov w1, w19 mov w2, w20 @@ -6442,20 +6751,20 @@ FlashLoadFactorBbt: bl printk strh w20, [x24,w19,sxtw 1] uxth w28, w28 - b .L1023 -.L1022: + b .L1105 +.L1104: sub w20, w20, #1 uxth w20, w20 - b .L1021 -.L1023: + b .L1103 +.L1105: add x1, x22, :lo12:.LANCHOR0 add w19, w19, 1 uxtb w19, w19 - ldrb w1, [x1,1676] + ldrb w1, [x1,1672] cmp w1, w28 csel w27, w27, wzr, ne - b .L1020 -.L1030: + b .L1102 +.L1112: mov w0, w27 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -6489,16 +6798,16 @@ FlashReadFacBbtData: mov x21, x4 mov w26, 61664 mul w3, w3, w1 - ldr x0, [x0,696] + ldr x0, [x0,704] str x0, [x29,104] uxth w3, w3 sub w20, w3, #1 sub w19, w3, #16 mul w24, w23, w3 uxth w20, w20 -.L1032: +.L1114: cmp w20, w19 - ble .L1040 + ble .L1122 add w0, w20, w24 mov w1, 1 lsl w0, w0, 10 @@ -6508,26 +6817,26 @@ FlashReadFacBbtData: bl FlashReadPages ldr w0, [x29,88] cmn w0, #1 - beq .L1033 + beq .L1115 add x0, x21, :lo12:.LANCHOR2 - ldr x0, [x0,696] + ldr x0, [x0,704] ldrh w0, [x0] cmp w0, w26 - bne .L1033 + bne .L1115 mov w0, w22 - cbz x22, .L1034 + cbz x22, .L1116 mov x0, x22 mov w1, w23 mov w2, w25 bl FlashReadFacBbtData.part.6 - b .L1034 -.L1033: + b .L1116 +.L1115: sub w20, w20, #1 uxth w20, w20 - b .L1032 -.L1040: + b .L1114 +.L1122: mov w0, -1 -.L1034: +.L1116: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -6551,43 +6860,43 @@ FlashGetBadBlockList: ldrh w19, [x0,14] add x0, x20, :lo12:.LANCHOR2 mul w19, w2, w19 - ldr x0, [x0,688] + ldr x0, [x0,696] uxth w19, w19 add w2, w19, 7 lsr w2, w2, 3 bl FlashReadFacBbtData cmn w0, #1 - bne .L1042 -.L1046: + bne .L1124 +.L1128: mov w1, 0 - b .L1043 -.L1042: + b .L1125 +.L1124: mov w2, 0 lsr w0, w19, 4 mov w1, w2 sub w19, w19, #1 mov w5, 1 -.L1044: +.L1126: cmp w2, w19 - bge .L1043 + bge .L1125 add x3, x20, :lo12:.LANCHOR2 ubfx x4, x2, 5, 11 - ldr x6, [x3,688] + ldr x6, [x3,696] lsl w3, w5, w2 ldr w4, [x6,x4,lsl 2] tst w3, w4 - beq .L1045 + beq .L1127 add w3, w1, 1 ubfiz x1, x1, 1, 16 strh w2, [x21,x1] uxth w1, w3 -.L1045: +.L1127: cmp w1, w0 - bcs .L1046 + bcs .L1128 add w2, w2, 1 uxth w2, w2 - b .L1044 -.L1043: + b .L1126 +.L1125: ubfiz x1, x1, 1, 16 mov w0, -1 ldp x19, x20, [sp,16] @@ -6605,23 +6914,23 @@ FlashProgSlc2KPages: add x29, sp, 0 stp x23, x24, [sp,48] mov w23, w1 - adrp x1, .LANCHOR1+265 + adrp x1, .LANCHOR1+481 stp x21, x22, [sp,32] - stp x25, x26, [sp,64] adrp x22, .LANCHOR0 - ldrb w26, [x1,#:lo12:.LANCHOR1+265] + mov w24, w2 + stp x25, x26, [sp,64] + add x22, x22, :lo12:.LANCHOR0 + ldrb w26, [x1,#:lo12:.LANCHOR1+481] stp x27, x28, [sp,80] stp x19, x20, [sp,16] - mov w24, w2 mov w27, w3 mov x19, x0 mov x21, x0 mov w25, 0 - add x22, x22, :lo12:.LANCHOR0 - mov w28, -1 -.L1052: + add x28, x22, 1676 +.L1134: cmp w25, w23 - beq .L1081 + beq .L1163 mov w1, w24 sub w4, w23, w25 mov x0, x21 @@ -6629,14 +6938,14 @@ FlashProgSlc2KPages: add x3, x29, 100 bl LogAddr2PhyAddr ldr w0, [x29,100] - ldrb w1, [x22,1676] + ldrb w1, [x22,1672] cmp w0, w1 - bcc .L1053 - str w28, [x21] - b .L1054 -.L1053: - add x0, x22, x0, uxtw - ldrb w20, [x0,1680] + bcc .L1135 + mov w0, -1 + str w0, [x21] + b .L1136 +.L1135: + ldrb w20, [x28,w0,uxtw] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 @@ -6662,7 +6971,7 @@ FlashProgSlc2KPages: str w0, [x21] mov w0, w20 ldr w1, [x29,96] - ldr w2, [x22,28] + ldr w2, [x22,92] add w1, w2, w1 bl FlashProgFirstCmd ldr x0, [x21,8] @@ -6680,7 +6989,7 @@ FlashProgSlc2KPages: adrp x0, .LANCHOR0 ldr w1, [x29,96] add x0, x0, :lo12:.LANCHOR0 - ldr w2, [x0,28] + ldr w2, [x0,92] mov w0, w20 add w1, w2, w1 bl FlashProgSecondCmd @@ -6689,36 +6998,37 @@ FlashProgSlc2KPages: ldr w1, [x29,96] mov w0, w20 bl FlashReadStatus - tbz x0, 0, .L1057 - str w28, [x21] -.L1057: + tbz x0, 0, .L1139 + mov w0, -1 + str w0, [x21] +.L1139: mov w0, w20 bl NandcFlashDeCs -.L1054: +.L1136: add w25, w25, 1 add x21, x21, 56 - b .L1052 -.L1081: + b .L1134 +.L1163: mov w21, 0 - cbz w27, .L1079 + cbz w27, .L1161 adrp x25, .LC23 adrp x26, .LC22 adrp x27, .LC21 add x25, x25, :lo12:.LC23 add x26, x26, :lo12:.LC22 add x27, x27, :lo12:.LC21 -.L1080: +.L1162: cmp w21, w23 - beq .L1079 + beq .L1161 ldr w0, [x19] cmn w0, #1 - bne .L1060 + bne .L1142 adrp x0, .LC20 ldr w1, [x19,4] add x0, x0, :lo12:.LC20 bl printk - b .L1061 -.L1060: + b .L1143 +.L1142: adrp x20, .LANCHOR2 sub w4, w23, w21 add x22, x20, :lo12:.LANCHOR2 @@ -6727,62 +7037,62 @@ FlashProgSlc2KPages: add x2, x29, 96 mov x0, x19 bl LogAddr2PhyAddr - ldr x0, [x22,704] + ldr x0, [x22,712] mov x1, x19 mov x2, 56 str wzr, [x0] - ldr x0, [x22,712] + ldr x0, [x22,720] str wzr, [x0] add x0, x29, 104 bl memcpy - ldr x0, [x22,704] + ldr x0, [x22,712] mov w1, 1 str x0, [x29,112] mov w2, w24 - ldr x0, [x22,712] + ldr x0, [x22,720] str x0, [x29,120] add x0, x29, 104 bl FlashReadPages ldr w22, [x29,104] cmn w22, #1 - bne .L1062 + bne .L1144 ldr w1, [x19,4] mov x0, x27 bl printk str w22, [x19] -.L1062: +.L1144: ldr x0, [x19,16] - cbz x0, .L1063 + cbz x0, .L1145 ldr w2, [x0] add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,712] + ldr x0, [x0,720] ldr w3, [x0] cmp w2, w3 - beq .L1063 + beq .L1145 ldr w1, [x19,4] mov x0, x26 bl printk mov w0, -1 str w0, [x19] -.L1063: +.L1145: ldr x0, [x19,8] - cbz x0, .L1061 + cbz x0, .L1143 add x20, x20, :lo12:.LANCHOR2 ldr w2, [x0] - ldr x0, [x20,704] + ldr x0, [x20,712] ldr w3, [x0] cmp w2, w3 - beq .L1061 + beq .L1143 ldr w1, [x19,4] mov x0, x25 bl printk mov w0, -1 str w0, [x19] -.L1061: +.L1143: add w21, w21, 1 add x19, x19, 56 - b .L1080 -.L1079: + b .L1162 +.L1161: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -6797,7 +7107,7 @@ FlashProgSlc2KPages: .type FlashProgPages, %function FlashProgPages: stp x29, x30, [sp, -192]! - adrp x6, .LANCHOR1+265 + adrp x6, .LANCHOR1+481 add x29, sp, 0 stp x21, x22, [sp,32] adrp x21, .LANCHOR0 @@ -6812,92 +7122,93 @@ FlashProgPages: mov w25, w1 ldr x5, [x4,1912] mov w23, w2 - ldrb w4, [x4,24] - ldrb w27, [x6,#:lo12:.LANCHOR1+265] + ldrb w4, [x4,88] + ldrb w27, [x6,#:lo12:.LANCHOR1+481] ldrb w5, [x5,19] - cbz w4, .L1083 + cbz w4, .L1165 bl FlashProgSlc2KPages - b .L1084 -.L1083: + b .L1166 +.L1165: sub w0, w5, #1 adrp x28, .LANCHOR2 str w0, [x29,120] add x0, x28, :lo12:.LANCHOR2 str x0, [x29,112] -.L1135: +.L1217: cmp w22, w25 - bcs .L1136 + bcs .L1218 mov w20, 56 - mov w1, w23 - add x2, x29, 128 sub w4, w25, w22 + add x2, x29, 128 + mov w1, w23 umull x20, w22, w20 add x3, x29, 132 add x26, x19, x20 mov x0, x26 bl LogAddr2PhyAddr mov w24, w0 - add x1, x21, :lo12:.LANCHOR0 + add x2, x21, :lo12:.LANCHOR0 ldr w0, [x29,132] - ldrb w2, [x1,1676] - cmp w0, w2 - bcc .L1085 + ldrb w4, [x2,1672] + cmp w0, w4 + bcc .L1167 mov w0, -1 str w0, [x19,x20] - b .L1086 -.L1085: - add x3, x28, :lo12:.LANCHOR2 - uxtw x0, w0 - ldrb w3, [x3,648] - cmp w3, wzr - mov x3, 24 + b .L1168 +.L1167: + add x1, x28, :lo12:.LANCHOR2 + add x3, x2, 1716 + mov x5, 24 + ldrb w1, [x1,656] + cmp w1, wzr + uxtw x1, w0 csel w24, w24, wzr, ne - madd x0, x0, x3, x1 - ldr x0, [x0,1728] - cbz x0, .L1088 - cmp w2, 1 - bne .L1089 - ldr x0, [x1,3976] + madd x0, x1, x5, x3 + ldr x0, [x0,8] + cbz x0, .L1170 + cmp w4, 1 + bne .L1171 + ldr x0, [x2,3976] bl NandcIqrWaitFlashReady -.L1089: +.L1171: ldrb w0, [x29,132] bl FlashWaitCmdDone -.L1088: +.L1170: add x0, x21, :lo12:.LANCHOR0 ldr w2, [x29,132] mov x1, 24 - add x0, x0, 1720 + add x0, x0, 1716 madd x0, x2, x1, x0 ldr w1, [x29,128] str x26, [x0,8] str xzr, [x0,16] str w1, [x0,4] - cbz w24, .L1090 + cbz w24, .L1172 add w1, w22, 1 mov w3, 56 umull x1, w1, w3 add x1, x19, x1 str x1, [x0,16] -.L1090: +.L1172: add x1, x21, :lo12:.LANCHOR0 - add x0, x1, x2 - ldrb w20, [x0,1680] + add x0, x1, 1676 + ldrb w20, [x0,x2] mov x0, 24 madd x2, x2, x0, x1 - ldrb w0, [x1,1676] - strb w20, [x2,1720] + ldrb w0, [x1,1672] + strb w20, [x2,1716] cmp w0, 1 - bne .L1091 + bne .L1173 mov w0, w20 bl NandcWaitFlashReady - b .L1092 -.L1091: + b .L1174 +.L1173: mov w0, w20 str x1, [x29,104] bl NandcFlashCs ldr x1, [x29,104] ldr w0, [x29,132] - add x1, x1, 1688 + add x1, x1, 1684 ldr w0, [x1,x0,lsl 2] ldr w1, [x29,128] cmp w0, wzr @@ -6906,35 +7217,35 @@ FlashProgPages: bl FlashWaitReadyEN mov w0, w20 bl NandcFlashDeCs -.L1092: +.L1174: ldr w0, [x29,120] - cmp w0, 6 - bhi .L1093 + cmp w0, 7 + bhi .L1175 ldr x0, [x29,112] add x0, x0, x20, sxtw ldrb w0, [x0,560] - cbz w0, .L1093 + cbz w0, .L1175 add x2, x21, :lo12:.LANCHOR0 mov w0, w20 add x2, x2, 4060 mov w3, 0 ldrb w1, [x2,-3] bl HynixSetRRPara -.L1093: +.L1175: mov w0, w20 bl NandcFlashCs cmp w23, 1 - bne .L1094 + bne .L1176 add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L1094 + ldrb w0, [x0,4044] + cbz w0, .L1176 mov w0, w20 bl flash_enter_slc_mode - b .L1095 -.L1094: + b .L1177 +.L1176: mov w0, w20 bl flash_exit_slc_mode -.L1095: +.L1177: ldr w1, [x29,128] mov w0, w20 bl FlashProgFirstCmd @@ -6944,20 +7255,20 @@ FlashProgPages: mov w1, 1 mov w2, w27 bl NandcXferData - cbz w24, .L1096 + cbz w24, .L1178 ldr w1, [x29,128] mov w0, w20 add x26, x21, :lo12:.LANCHOR0 bl FlashProgDpFirstCmd ldr w1, [x29,132] - add x0, x26, 1688 + add x0, x26, 1684 ldr w0, [x0,x1,lsl 2] ldr w1, [x29,128] cmp w0, wzr mov w0, w20 cset w2, ne bl FlashWaitReadyEN - ldr w2, [x26,28] + ldr w2, [x26,92] mov w0, w20 ldr w1, [x29,128] add w1, w2, w1 @@ -6972,45 +7283,46 @@ FlashProgPages: ldr x3, [x4,8] ldr x4, [x4,16] bl NandcXferData -.L1096: +.L1178: ldr w1, [x29,128] mov w0, w20 add w22, w22, w24 bl FlashProgSecondCmd mov w0, w20 bl NandcFlashDeCs -.L1086: +.L1168: add w22, w22, 1 - b .L1135 -.L1136: + b .L1217 +.L1218: add x21, x21, :lo12:.LANCHOR0 mov x20, 0 - mov x22, 24 + add x22, x21, 1716 + mov x24, 24 ldr x0, [x21,3976] bl NandcIqrWaitFlashReady -.L1098: - ldrb w0, [x21,1676] +.L1180: + ldrb w0, [x21,1672] cmp w0, w20 - bls .L1137 + bls .L1219 mov w0, w20 bl FlashWaitCmdDone cmp w23, 1 - bne .L1099 - ldrb w0, [x21,136] - cbz w0, .L1099 - madd x0, x20, x22, x21 - ldrb w0, [x0,1720] + bne .L1181 + ldrb w0, [x21,4044] + cbz w0, .L1181 + mul x0, x20, x24 + ldrb w0, [x0,x22] bl flash_exit_slc_mode -.L1099: +.L1181: add x20, x20, 1 - b .L1098 -.L1137: + b .L1180 +.L1219: ldr w0, [x29,124] - cbnz w0, .L1101 -.L1109: + cbnz w0, .L1183 +.L1191: mov w0, 0 - b .L1084 -.L1101: + b .L1166 +.L1183: adrp x24, .LC23 adrp x26, .LC22 adrp x27, .LC21 @@ -7018,18 +7330,18 @@ FlashProgPages: add x24, x24, :lo12:.LC23 add x26, x26, :lo12:.LC22 add x27, x27, :lo12:.LC21 -.L1102: +.L1184: cmp w21, w25 - beq .L1109 + beq .L1191 ldr w0, [x19] cmn w0, #1 - bne .L1103 + bne .L1185 adrp x0, .LC20 ldr w1, [x19,4] add x0, x0, :lo12:.LC20 bl printk - b .L1104 -.L1103: + b .L1186 +.L1185: adrp x20, .LANCHOR2 sub w4, w25, w21 add x22, x20, :lo12:.LANCHOR2 @@ -7038,62 +7350,62 @@ FlashProgPages: add x2, x29, 128 mov x0, x19 bl LogAddr2PhyAddr - ldr x0, [x22,704] + ldr x0, [x22,712] mov x1, x19 mov x2, 56 str wzr, [x0] - ldr x0, [x22,712] + ldr x0, [x22,720] str wzr, [x0] add x0, x29, 136 bl memcpy - ldr x0, [x22,704] + ldr x0, [x22,712] mov w1, 1 str x0, [x29,144] mov w2, w23 - ldr x0, [x22,712] + ldr x0, [x22,720] str x0, [x29,152] add x0, x29, 136 bl FlashReadPages ldr w22, [x29,136] cmn w22, #1 - bne .L1105 + bne .L1187 ldr w1, [x19,4] mov x0, x27 bl printk str w22, [x19] -.L1105: +.L1187: ldr x0, [x19,16] - cbz x0, .L1106 + cbz x0, .L1188 ldr w2, [x0] add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,712] + ldr x0, [x0,720] ldr w3, [x0] cmp w2, w3 - beq .L1106 + beq .L1188 ldr w1, [x19,4] mov x0, x26 bl printk mov w0, -1 str w0, [x19] -.L1106: +.L1188: ldr x0, [x19,8] - cbz x0, .L1104 + cbz x0, .L1186 add x20, x20, :lo12:.LANCHOR2 ldr w2, [x0] - ldr x0, [x20,704] + ldr x0, [x20,712] ldr w3, [x0] cmp w2, w3 - beq .L1104 + beq .L1186 ldr w1, [x19,4] mov x0, x24 bl printk mov w0, -1 str w0, [x19] -.L1104: +.L1186: add w21, w21, 1 add x19, x19, 56 - b .L1102 -.L1084: + b .L1184 +.L1166: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -7114,12 +7426,12 @@ FlashTestBlk.part.7: uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 lsl w20, w20, 10 - ldr x0, [x19,688] + ldr x0, [x19,696] str x0, [x29,48] add x0, x29, 96 str x0, [x29,56] bl ftl_memset - ldr x0, [x19,688] + ldr x0, [x19,696] mov w1, 90 mov w2, 8 bl ftl_memset @@ -7156,10 +7468,10 @@ FlashTestBlk: ldr w2, [x0,#:lo12:.LANCHOR0+8] mov w0, 0 cmp w1, w2 - bcc .L1140 + bcc .L1222 mov w0, w1 bl FlashTestBlk.part.7 -.L1140: +.L1222: ldp x29, x30, [sp], 16 ret .size FlashTestBlk, .-FlashTestBlk @@ -7167,334 +7479,324 @@ FlashTestBlk: .global FlashMakeFactorBbt .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -240]! adrp x2, .LANCHOR2 + adrp x4, .LANCHOR0 add x29, sp, 0 add x0, x2, :lo12:.LANCHOR2 stp x19, x20, [sp,16] - stp x21, x22, [sp,32] stp x23, x24, [sp,48] + stp x21, x22, [sp,32] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - adrp x19, .LANCHOR0 + mov x20, x4 str x2, [x29,136] - ldr x0, [x0,696] - mov w20, 0 - str x0, [x29,152] - add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0,704] + add x24, x20, :lo12:.LANCHOR0 + str x0, [x29,160] + add x0, x4, :lo12:.LANCHOR0 + mov w19, 0 ldrh w1, [x0,4028] - ldrh w22, [x0,4030] - ldrh w25, [x0,28] - mul w22, w1, w22 + ldrh w21, [x0,4030] + mul w21, w1, w21 ldr x1, [x0,1912] - ldrb w0, [x0,24] - uxth w22, w22 + uxth w21, w21 ldrb w1, [x1,24] + str w1, [x29,144] + ldrh w1, [x0,92] + str w1, [x29,172] + ldrb w0, [x0,88] + ubfiz w1, w1, 1, 15 cmp w0, 1 - str w1, [x29,148] + ldr w0, [x29,172] + csel w0, w1, w0, eq + str w0, [x29,172] adrp x0, .LC24 - ubfiz w1, w25, 1, 15 - add x0, x0, :lo12:.LC24 - csel w25, w1, w25, eq mov w1, 1 + add x0, x0, :lo12:.LC24 bl printk ldr x0, [x29,136] mov w1, 0 mov w2, 4096 add x0, x0, :lo12:.LANCHOR2 - ldr x0, [x0,696] + ldr x0, [x0,704] bl ftl_memset - lsr w0, w22, 4 - str w0, [x29,144] - ldr w0, [x29,148] + lsr w0, w21, 4 + str w0, [x29,168] + add x0, x24, 1676 + str x0, [x29,120] + ldr w0, [x29,144] and w0, w0, 1 - str w0, [x29,124] - ldr w0, [x29,148] - and w0, w0, 2 - uxtb w0, w0 - str w0, [x29,120] - sub w0, w22, #1 + str w0, [x29,116] + sub w0, w21, #1 uxth w0, w0 str w0, [x29,132] -.L1144: - add x23, x19, :lo12:.LANCHOR0 - ldrb w0, [x23,1676] - cmp w0, w20 - bls .L1195 +.L1226: + ldrb w0, [x24,1672] + cmp w0, w19 + bls .L1277 ldr x0, [x29,136] - sxtw x24, w20 + sxtw x23, w19 add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 728 - ldrh w21, [x0,w20,sxtw 1] - cbnz w21, .L1174 - ldrh w2, [x23,4036] - mov w1, w21 - ldr x0, [x19,#:lo12:.LANCHOR0] - add x23, x23, x24 + add x0, x0, 736 + ldrh w20, [x0,w19,sxtw 1] + cbnz w20, .L1256 + ldrh w2, [x24,4036] + mov w1, w20 + ldr x0, [x24] + mov w25, w20 lsl w2, w2, 9 - mov w26, w21 + mov w22, w20 + add x28, x24, 1684 bl ftl_memset - ldrb w27, [x23,1680] - ldr w0, [x29,148] - mov w23, w21 - and w0, w0, 4 + ldr x0, [x29,120] + ldrb w26, [x0,x23] + ldr w0, [x29,144] + and w0, w0, 2 uxtb w0, w0 str w0, [x29,128] -.L1146: - uxth w28, w26 - cmp w28, w22 - bcs .L1156 +.L1228: + uxth w27, w25 + cmp w27, w21 + bcs .L1238 mov w0, -1 - strb w0, [x29,166] - strb w0, [x29,167] - ldr w0, [x29,124] - cbz w0, .L1148 - add x4, x19, :lo12:.LANCHOR0 - add x2, x29, 166 - add x0, x4, 1688 - str x4, [x29,104] - ldr w3, [x0,x24,lsl 2] - mov w0, w27 - add w3, w21, w3 - str x3, [x29,112] + strb w0, [x29,182] + strb w0, [x29,183] + ldr w0, [x29,116] + cbz w0, .L1230 + ldr w3, [x28,x23,lsl 2] + mov w0, w26 + add x2, x29, 182 + add w3, w20, w3 + str x3, [x29,104] mov w1, w3 bl FlashReadSpare - ldr x4, [x29,104] - ldr x3, [x29,112] - ldrb w0, [x4,24] + ldrb w0, [x24,88] + ldr x3, [x29,104] cmp w0, 1 - bne .L1148 - ldr w1, [x4,28] - mov w0, w27 - add x2, x29, 167 + bne .L1230 + ldr w1, [x24,92] + mov w0, w26 + add x2, x29, 183 add w1, w3, w1 bl FlashReadSpare - ldrb w0, [x29,166] - ldrb w1, [x29,167] + ldrb w0, [x29,182] + ldrb w1, [x29,183] and w0, w1, w0 - strb w0, [x29,166] -.L1148: - ldr w0, [x29,120] - cbz w0, .L1150 - add x0, x19, :lo12:.LANCHOR0 - add x2, x29, 167 - add x0, x0, 1688 - ldr x1, [x0,224] - ldr w0, [x0,x24,lsl 2] - ldrh w1, [x1,10] + strb w0, [x29,182] +.L1230: + ldr w0, [x29,128] + cbz w0, .L1232 + ldr x0, [x24,1912] + add x2, x29, 183 + ldrh w1, [x0,10] + ldr w0, [x28,x23,lsl 2] sub w1, w1, #1 add w1, w1, w0 - mov w0, w27 - add w1, w1, w21 + mov w0, w26 + add w1, w1, w20 bl FlashReadSpare -.L1150: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x29,166] - ldr x0, [x0,1912] +.L1232: + ldr x0, [x24,1912] + ldrb w1, [x29,182] ldrb w0, [x0,7] cmp w0, 8 - beq .L1175 + beq .L1257 cmp w0, 1 - bne .L1151 -.L1175: + bne .L1233 +.L1257: mov w0, 1 - cbz w1, .L1153 - ldrb w0, [x29,167] + cbz w1, .L1235 + ldrb w0, [x29,183] cmp w0, wzr cset w0, eq - b .L1153 -.L1151: + b .L1235 +.L1233: cmp w1, 255 mov w0, 1 - bne .L1153 - ldrb w0, [x29,167] + bne .L1235 + ldrb w0, [x29,183] cmp w0, 255 cset w0, ne -.L1153: - ldr w1, [x29,128] - cbz w1, .L1154 - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 1688 - ldr w1, [x0,x24,lsl 2] - mov w0, w27 - add w1, w21, w1 +.L1235: + ldr x1, [x29,144] + tbz x1, 2, .L1236 + ldr w1, [x28,x23,lsl 2] + mov w0, w26 + add w1, w20, w1 bl SandiskProgTestBadBlock -.L1154: - cbz w0, .L1155 +.L1236: + cbz w0, .L1237 adrp x0, .LC25 - mov w1, w20 - mov w2, w26 + mov w1, w19 + mov w2, w25 add x0, x0, :lo12:.LC25 - add w23, w23, 1 - bl printk - ubfx x1, x28, 5, 11 - ldr x3, [x19,#:lo12:.LANCHOR0] - lsl x1, x1, 2 - mov w0, 1 - lsl w28, w0, w28 - add x2, x19, :lo12:.LANCHOR0 - uxth w23, w23 - ldr w0, [x3,x1] - orr w28, w0, w28 - str w28, [x3,x1] - ldr w1, [x29,144] - ldrb w0, [x2,1676] - mul w0, w1, w0 - cmp w23, w0 - bgt .L1156 -.L1155: - add w26, w26, 1 - add w21, w21, w25 - b .L1146 -.L1156: - adrp x0, .LC26 - mov w1, w20 - mov w2, w23 - add x0, x0, :lo12:.LC26 - bl printk - add x1, x19, :lo12:.LANCHOR0 - ldr w2, [x29,144] - ldrb w0, [x1,1676] - mul w0, w2, w0 - cmp w23, w0 - blt .L1158 - ldrh w2, [x1,4036] - mov w1, 0 - ldr x0, [x19,#:lo12:.LANCHOR0] - lsl w2, w2, 9 - bl ftl_memset -.L1158: - cbnz w20, .L1160 - add x0, x19, :lo12:.LANCHOR0 - adrp x26, .LC27 - mov w21, w20 - add x26, x26, :lo12:.LC27 - mov w23, 1 - ldrh w27, [x0,8] -.L1161: - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,25] - cmp w0, w27 - bls .L1196 - mov w0, w27 - bl FlashTestBlk - cbz w0, .L1162 - mov w1, w27 - mov x0, x26 - add w21, w21, 1 + add w22, w22, 1 bl printk ubfx x1, x27, 5, 11 - ldr x2, [x19,#:lo12:.LANCHOR0] + ldr x2, [x24] lsl x1, x1, 2 - lsl w0, w23, w27 - uxth w21, w21 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] -.L1162: - add w27, w27, 1 - uxth w27, w27 - b .L1161 -.L1196: - adrp x26, .LC27 - ldr w28, [x29,132] - sub w27, w22, #50 - add x26, x26, :lo12:.LC27 - mov w23, 1 -.L1164: - cmp w28, w27 - ble .L1197 - mov w0, w28 - bl FlashTestBlk - cbz w0, .L1165 - mov w1, w28 - mov x0, x26 + mov w0, 1 + lsl w27, w0, w27 + uxth w22, w22 + ldr w0, [x2,x1] + orr w27, w0, w27 + str w27, [x2,x1] + ldr w1, [x29,168] + ldrb w0, [x24,1672] + mul w0, w1, w0 + cmp w22, w0 + bgt .L1238 +.L1237: + ldr w0, [x29,172] + add w25, w25, 1 + add w20, w20, w0 + b .L1228 +.L1238: + adrp x0, .LC26 + mov w1, w19 + add x0, x0, :lo12:.LC26 + mov w2, w22 bl printk - ubfx x1, x28, 5, 11 - ldr x2, [x19,#:lo12:.LANCHOR0] - lsl x1, x1, 2 - lsl w0, w23, w28 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] -.L1165: - sub w28, w28, #1 - uxth w28, w28 - b .L1164 -.L1197: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,25] - ldr w2, [x0,8] - sub w1, w1, w2 - cmp w21, w1 - bcc .L1160 - ldrh w2, [x0,4036] + ldrb w0, [x24,1672] + ldr w1, [x29,168] + mul w0, w1, w0 + cmp w22, w0 + blt .L1240 + ldrh w2, [x24,4036] mov w1, 0 - ldr x0, [x19,#:lo12:.LANCHOR0] + ldr x0, [x24] lsl w2, w2, 9 bl ftl_memset -.L1160: - ldr x0, [x29,136] - adrp x23, .LC28 - ldr w27, [x29,132] - add x23, x23, :lo12:.LC28 - mul w26, w20, w22 - add x28, x0, :lo12:.LANCHOR2 - mov w21, -3872 -.L1168: - mov w2, w27 - mov x0, x23 - mov w1, w20 +.L1240: + cbnz w19, .L1242 + adrp x25, .LC27 + ldrh w26, [x24,8] + mov w20, w19 + add x25, x25, :lo12:.LC27 + mov w22, 1 +.L1243: + ldrb w0, [x24,89] + cmp w0, w26 + bls .L1278 + mov w0, w26 + bl FlashTestBlk + cbz w0, .L1244 + mov w1, w26 + mov x0, x25 + add w20, w20, 1 bl printk - ldr x2, [x19,#:lo12:.LANCHOR0] -.L1169: - ubfx x0, x27, 5, 11 - ldr w0, [x2,x0,lsl 2] - lsr w0, w0, w27 - and w1, w0, 1 - tbz x0, 0, .L1198 + ubfx x1, x26, 5, 11 + ldr x2, [x24] + lsl x1, x1, 2 + lsl w0, w22, w26 + uxth w20, w20 + ldr w3, [x2,x1] + orr w0, w3, w0 + str w0, [x2,x1] +.L1244: + add w26, w26, 1 + uxth w26, w26 + b .L1243 +.L1278: + adrp x25, .LC27 + ldr w27, [x29,132] + sub w26, w21, #50 + add x25, x25, :lo12:.LC27 + mov w22, 1 +.L1246: + cmp w27, w26 + ble .L1279 + mov w0, w27 + bl FlashTestBlk + cbz w0, .L1247 + mov w1, w27 + mov x0, x25 + bl printk + ubfx x1, x27, 5, 11 + ldr x2, [x24] + lsl x1, x1, 2 + lsl w0, w22, w27 + ldr w3, [x2,x1] + orr w0, w3, w0 + str w0, [x2,x1] +.L1247: sub w27, w27, #1 uxth w27, w27 - b .L1169 -.L1198: - add x0, x28, 728 - strh w27, [x0,x24,lsl 1] - ldr x0, [x29,152] - strh w21, [x0] - strh w27, [x0,2] + b .L1246 +.L1279: + ldrb w0, [x24,89] + ldr w1, [x24,8] + sub w0, w0, w1 + cmp w20, w0 + bcc .L1242 + ldrh w2, [x24,4036] + mov w1, 0 + ldr x0, [x24] + lsl w2, w2, 9 + bl ftl_memset +.L1242: + ldr x0, [x29,136] + adrp x22, .LC28 + ldr w26, [x29,132] + add x22, x22, :lo12:.LC28 + mul w25, w19, w21 + add x27, x0, :lo12:.LANCHOR2 + mov w20, -3872 +.L1250: + mov w2, w26 + mov x0, x22 + mov w1, w19 + bl printk + ldr x2, [x24] +.L1251: + ubfx x0, x26, 5, 11 + ldr w0, [x2,x0,lsl 2] + lsr w0, w0, w26 + and w1, w0, 1 + tbz x0, 0, .L1280 + sub w26, w26, #1 + uxth w26, w26 + b .L1251 +.L1280: + add x0, x27, 736 + strh w26, [x0,x23,lsl 1] + ldr x0, [x29,160] + strh w20, [x0] + strh w26, [x0,2] strh w1, [x0,8] mov w1, 1 - ldr x0, [x19,#:lo12:.LANCHOR0] + ldr x0, [x24] mov w2, w1 - str x0, [x29,176] - ldr x0, [x28,696] - str x0, [x29,184] - add w0, w27, w26 + str x0, [x29,192] + ldr x0, [x27,704] + str x0, [x29,200] + add w0, w26, w25 lsl w0, w0, 10 - str w0, [x29,172] - add x0, x29, 168 + str w0, [x29,188] + add x0, x29, 184 bl FlashEraseBlocks mov w1, 1 - add x0, x29, 168 + add x0, x29, 184 mov w2, w1 mov w3, w1 bl FlashProgPages - ldr w0, [x29,168] - cbz w0, .L1174 - sub w27, w27, #1 - uxth w27, w27 - b .L1168 -.L1174: - add w20, w20, 1 - uxtb w20, w20 - b .L1144 -.L1195: + ldr w0, [x29,184] + cbz w0, .L1256 + sub w26, w26, #1 + uxth w26, w26 + b .L1250 +.L1256: + add w19, w19, 1 + uxtb w19, w19 + b .L1226 +.L1277: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 224 + ldp x29, x30, [sp], 240 ret .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 2 @@ -7503,14 +7805,14 @@ FlashMakeFactorBbt: Ftl_log2: mov w2, 1 mov w1, 0 -.L1200: +.L1282: cmp w2, w0 - bhi .L1202 + bhi .L1284 add w1, w1, 1 lsl w2, w2, 1 uxth w1, w1 - b .L1200 -.L1202: + b .L1282 +.L1284: sub w0, w1, #1 ret .size Ftl_log2, .-Ftl_log2 @@ -7530,17 +7832,17 @@ FtlSysBlkNumInit: csel w0, w0, w1, hi adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 - ldrh w2, [x1,748] - ldrh w3, [x1,758] - str w0, [x1,744] + ldrh w2, [x1,756] + ldrh w3, [x1,766] + str w0, [x1,752] mul w2, w0, w2 sub w0, w3, w0 - strh w0, [x1,756] - ldr w0, [x1,764] - str w2, [x1,752] + strh w0, [x1,764] + ldr w0, [x1,772] + str w2, [x1,760] sub w2, w0, w2 mov w0, 0 - str w2, [x1,760] + str w2, [x1,768] ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 @@ -7552,215 +7854,212 @@ FtlConstantsInit: add x29, sp, 0 stp x19, x20, [sp,16] stp x23, x24, [sp,48] + adrp x19, .LANCHOR2 + mov x24, x0 stp x21, x22, [sp,32] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - mov x24, x0 - adrp x19, .LANCHOR2 - ldrh w6, [x0,8] - add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x24,10] - ldrh w1, [x24,12] + add x1, x19, :lo12:.LANCHOR2 ldrh w4, [x24,14] - strh w6, [x0,768] - strh w2, [x0,770] - strh w1, [x0,772] - strh w4, [x0,758] -.L1207: - add x5, x0, 776 + ldrh w6, [x0,8] + ldrh w2, [x0,10] + ldrh w0, [x0,12] + strh w6, [x1,776] + strh w2, [x1,778] + strh w0, [x1,780] + strh w4, [x1,766] +.L1289: + add x5, x1, 784 strb w3, [x3,x5] add x3, x3, 1 cmp x3, 32 - bne .L1207 + bne .L1289 ldrh w3, [x24,20] - ldrb w0, [x24,15] - cmp w3, w0 - bcs .L1208 - uxtb w8, w1 + ldrb w1, [x24,15] + cmp w3, w1 + bcs .L1290 + uxtb w8, w0 mov w3, 0 - mul w11, w1, w2 + mul w11, w0, w2 ubfiz w10, w8, 1, 7 add x12, x19, :lo12:.LANCHOR2 -.L1209: - cmp w3, w1 - bcs .L1211 - uxtb w0, w3 +.L1291: + cmp w3, w0 + bcs .L1293 + uxtb w1, w3 mov w5, w3 mov w7, 0 -.L1212: +.L1294: cmp w7, w2 - bcs .L1234 - add x9, x12, 776 + bcs .L1316 + add x9, x12, 784 add w13, w5, w11 - add w14, w0, w8 + add w14, w1, w8 add w7, w7, 1 - strb w0, [x9,w5,uxtw] - add w0, w0, w10 + strb w1, [x9,w5,uxtw] + add w1, w1, w10 strb w14, [x9,x13] - add w5, w5, w1 - uxtb w0, w0 - b .L1212 -.L1234: + add w5, w5, w0 + uxtb w1, w1 + b .L1294 +.L1316: add w3, w3, 1 - b .L1209 -.L1211: - add x0, x19, :lo12:.LANCHOR2 + b .L1291 +.L1293: + add x1, x19, :lo12:.LANCHOR2 lsl w2, w2, 1 lsr w4, w4, 1 - strh w2, [x0,770] - strh w4, [x0,758] -.L1208: - add x0, x19, :lo12:.LANCHOR2 + strh w2, [x1,778] + strh w4, [x1,766] +.L1290: + add x1, x19, :lo12:.LANCHOR2 mov w2, 5 cmp w6, 1 - strh w2, [x0,808] - strh wzr, [x0,810] - bne .L1213 - strh w6, [x0,808] -.L1213: - add x0, x19, :lo12:.LANCHOR2 + strh w2, [x1,816] + strh wzr, [x1,818] + bne .L1295 + strh w6, [x1,816] +.L1295: + add x1, x19, :lo12:.LANCHOR2 mov w2, 4352 - adrp x22, .LANCHOR0 - strh w2, [x0,812] - add x2, x22, :lo12:.LANCHOR0 - ldrb w27, [x2,24] - cbz w27, .L1214 + adrp x21, .LANCHOR0 + strh w2, [x1,820] + add x2, x21, :lo12:.LANCHOR0 + ldrb w27, [x2,88] + cbz w27, .L1296 mov w2, 384 - strh w2, [x0,812] -.L1214: - add x21, x19, :lo12:.LANCHOR2 - ldrh w20, [x21,758] - ldrh w23, [x21,770] - mul w23, w1, w23 - mul w1, w20, w1 - uxth w23, w23 - strh w23, [x21,748] - uxth w0, w1 - strh w0, [x21,814] - bl Ftl_log2 + strh w2, [x1,820] +.L1296: + add x22, x19, :lo12:.LANCHOR2 ldrh w26, [x24,16] ldrh w25, [x24,20] - strh w0, [x21,816] - mul w0, w23, w26 - strh w0, [x21,822] - mov w0, w25 ldrh w28, [x24,18] - strh w26, [x21,818] - strh w28, [x21,820] - strh w25, [x21,824] + ldrh w23, [x22,778] + ldrh w20, [x22,766] + strh w26, [x22,824] + mul w23, w0, w23 + mul w0, w20, w0 + strh w0, [x22,822] + uxth w23, w23 + strh w28, [x22,826] + strh w23, [x22,756] + mul w0, w23, w26 + strh w0, [x22,828] + mov w0, w25 + strh w25, [x22,830] bl Ftl_log2 - lsl w2, w25, 9 uxth w3, w0 - strh w0, [x21,826] - cmp w20, 1024 + lsl w2, w25, 9 + strh w0, [x22,832] ldrh w0, [x24,26] - strh w2, [x21,828] + cmp w20, 1024 + strh w2, [x22,834] ubfx x2, x2, 9, 7 - strh w0, [x21,832] + strh w0, [x22,838] lsl w2, w2, 1 mul w0, w23, w20 - strh w2, [x21,830] - str w0, [x21,764] - bls .L1215 + strh w2, [x22,836] + str w0, [x22,772] + bls .L1297 and w0, w20, 255 - strh w0, [x21,810] -.L1215: + strh w0, [x22,818] +.L1297: add x2, x19, :lo12:.LANCHOR2 mul w0, w25, w28 - ldrh w1, [x2,810] + ldrh w1, [x2,818] sub w1, w20, w1 mul w1, w23, w1 mul w1, w1, w25 mul w1, w1, w26 asr w1, w1, 11 - str w1, [x2,836] - ldrh w1, [x2,812] + str w1, [x2,840] + ldrh w1, [x2,820] lsl w1, w1, 3 sdiv w0, w1, w0 uxth w0, w0 cmp w0, 4 - bhi .L1231 + bhi .L1313 mov w0, 4 -.L1231: - strh w0, [x2,840] - cbz w27, .L1218 +.L1313: + strh w0, [x2,844] + cbz w27, .L1300 add x0, x19, :lo12:.LANCHOR2 mov w1, 640 - strh w1, [x0,812] -.L1218: + strh w1, [x0,820] +.L1300: add x1, x19, :lo12:.LANCHOR2 lsl w20, w20, 6 cmp w23, 1 - ldrh w0, [x1,812] + ldrh w0, [x1,820] asr w0, w0, w3 add w3, w3, 9 asr w20, w20, w3 - strh w20, [x1,844] + strh w20, [x1,848] and w20, w20, 65535 add w0, w0, 2 - strh w0, [x1,842] + strh w0, [x1,846] mul w0, w20, w23 - str w0, [x1,848] + str w0, [x1,852] add w20, w20, 8 - ldrh w0, [x1,840] + ldrh w0, [x1,844] udiv w0, w0, w23 add w20, w20, w0 - bne .L1232 + bne .L1314 add w20, w20, 4 -.L1232: - str w20, [x1,744] +.L1314: + str w20, [x1,752] add x20, x19, :lo12:.LANCHOR2 - add x22, x22, :lo12:.LANCHOR0 - ldrh w0, [x20,744] + add x21, x21, :lo12:.LANCHOR0 + ldrh w0, [x20,752] bl FtlSysBlkNumInit - str wzr, [x22,4048] - ldr w0, [x20,744] - str w0, [x20,852] - ldr w0, [x20,760] - ldrh w1, [x20,818] + str wzr, [x21,4048] + ldr w0, [x20,752] + str w0, [x20,856] + ldr w0, [x20,768] + ldrh w1, [x20,824] lsl w0, w0, 2 - ldrh w3, [x20,824] - ldrh w2, [x20,840] + ldrh w3, [x20,830] + ldrh w2, [x20,844] mul w1, w0, w1 - ldrh w0, [x20,826] - ldrb w5, [x22,136] + ldrh w0, [x20,832] + ldrb w5, [x21,4044] add w0, w0, 9 lsr w0, w1, w0 mov w1, 2048 add w0, w0, 2 sdiv w1, w1, w3 - strh w1, [x20,858] + strh w1, [x20,862] uxth w0, w0 - strh w0, [x20,856] + strh w0, [x20,860] add w1, w2, 3 - strh w1, [x20,840] - ldr w1, [x20,848] + strh w1, [x20,844] + ldr w1, [x20,852] add w4, w1, 3 - str w4, [x20,848] - cbz w5, .L1221 + str w4, [x20,852] + cbz w5, .L1303 add w2, w2, 4 add w1, w1, 5 - strh w2, [x20,840] - b .L1233 -.L1221: + strh w2, [x20,844] + b .L1315 +.L1303: cmp w4, 7 - bhi .L1222 + bhi .L1304 mov w1, 8 -.L1233: - str w1, [x20,848] -.L1222: +.L1315: + str w1, [x20,852] +.L1304: add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x19,756] - strh wzr, [x19,860] + ldrh w1, [x19,764] + strh wzr, [x19,864] lsr w2, w1, 3 add w1, w2, w1, lsl 1 add w1, w1, 52 add w0, w1, w0, lsl 2 cmp w0, w3, lsl 9 - bcs .L1223 + bcs .L1305 mov w0, 1 - strh w0, [x19,860] -.L1223: + strh w0, [x19,864] +.L1305: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -7782,13 +8081,12 @@ FtlMemInit: str x23, [sp,48] add x0, x20, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - str w1, [x0,932] + str w1, [x0,936] mov w1, -1 - strh wzr, [x0,862] - strh w1, [x0,948] - strh w1, [x0,950] + strh wzr, [x0,866] strh w1, [x0,952] - str wzr, [x0,864] + strh w1, [x0,954] + strh w1, [x0,956] str wzr, [x0,868] str wzr, [x0,872] str wzr, [x0,876] @@ -7805,311 +8103,312 @@ FtlMemInit: str wzr, [x0,920] str wzr, [x0,924] str wzr, [x0,928] - str wzr, [x0,936] + str wzr, [x0,932] str wzr, [x0,940] str wzr, [x0,944] - strh w1, [x0,954] - mov w1, 32 - ldrh w2, [x0,824] - strh w1, [x0,956] - mov w1, 128 + str wzr, [x0,948] strh w1, [x0,958] + mov w1, 32 + ldrh w2, [x0,830] + strh w1, [x0,960] + mov w1, 128 + strh w1, [x0,962] mov w1, 1024 - strh wzr, [x0,960] - sdiv w2, w1, w2 - ldrh w1, [x0,748] - strh wzr, [x0,962] - lsl w1, w1, 2 strh wzr, [x0,964] + sdiv w2, w1, w2 + ldrh w1, [x0,756] strh wzr, [x0,966] + lsl w1, w1, 2 + strh wzr, [x0,968] + strh wzr, [x0,970] cmp w2, w1 - str w2, [x0,968] - bls .L1236 - str w1, [x0,968] -.L1236: + str w2, [x0,972] + bls .L1318 + str w1, [x0,972] +.L1318: add x19, x20, :lo12:.LANCHOR2 mov w22, 56 - ldrh w0, [x19,822] - str wzr, [x19,972] + ldrh w0, [x19,828] + str wzr, [x19,976] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,976] - ldrh w1, [x19,822] + str x0, [x19,984] + ldrh w1, [x19,828] mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19,748] - str x0, [x19,984] + ldrh w21, [x19,756] + str x0, [x19,992] mul w21, w21, w22 lsl w23, w21, 3 mov w0, w23 bl ftl_malloc - str x0, [x19,992] - mov w0, w21 - bl ftl_malloc str x0, [x19,1000] - mov w0, w23 + mov w0, w21 bl ftl_malloc str x0, [x19,1008] - mov w0, w21 + mov w0, w23 bl ftl_malloc str x0, [x19,1016] mov w0, w21 bl ftl_malloc str x0, [x19,1024] - ldr w0, [x19,968] - mul w0, w0, w22 - bl ftl_malloc - str x0, [x19,1032] - ldrh w0, [x19,748] - ldrh w21, [x19,828] - lsl w0, w0, 1 - add w0, w0, 1 - str w0, [x19,1040] mov w0, w21 bl ftl_malloc - str x0, [x19,1048] + str x0, [x19,1032] + ldr w0, [x19,972] + mul w0, w0, w22 + bl ftl_malloc + str x0, [x19,1040] + ldrh w0, [x19,756] + ldrh w21, [x19,834] + lsl w0, w0, 1 + add w0, w0, 1 + str w0, [x19,1048] mov w0, w21 bl ftl_malloc str x0, [x19,1056] mov w0, w21 bl ftl_malloc str x0, [x19,1064] - ldr w0, [x19,1040] - mul w0, w21, w0 + mov w0, w21 bl ftl_malloc str x0, [x19,1072] - ldr w0, [x19,968] + ldr w0, [x19,1048] mul w0, w21, w0 bl ftl_malloc str x0, [x19,1080] - mov w0, w21 + ldr w0, [x19,972] + mul w0, w21, w0 bl ftl_malloc str x0, [x19,1088] mov w0, w21 bl ftl_malloc str x0, [x19,1096] - ldr w1, [x19,1040] + mov w0, w21 + bl ftl_malloc + str x0, [x19,1104] + ldr w1, [x19,1048] mov w0, 24 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19,748] - str x0, [x19,1104] - ldrh w0, [x19,830] + ldrh w21, [x19,756] + str x0, [x19,1112] + ldrh w0, [x19,836] mul w21, w0, w21 mov w0, w21 bl ftl_malloc - str x0, [x19,1112] + str x0, [x19,1120] lsl w0, w21, 3 bl ftl_malloc - str x0, [x19,1120] - ldrh w1, [x19,830] - ldr w0, [x19,1040] - mul w0, w1, w0 - bl ftl_malloc str x0, [x19,1128] - ldrh w1, [x19,830] - ldr w0, [x19,968] + ldrh w1, [x19,836] + ldr w0, [x19,1048] mul w0, w1, w0 bl ftl_malloc str x0, [x19,1136] - ldrh w0, [x19,758] + ldrh w1, [x19,836] + ldr w0, [x19,972] + mul w0, w1, w0 + bl ftl_malloc + str x0, [x19,1144] + ldrh w0, [x19,766] lsl w0, w0, 1 - strh w0, [x19,1144] + strh w0, [x19,1152] and w0, w0, 65534 bl ftl_malloc - str x0, [x19,1152] - ldrh w0, [x19,1144] + str x0, [x19,1160] + ldrh w0, [x19,1152] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19,1144] + strh w0, [x19,1152] lsl w0, w0, 9 bl ftl_malloc - ldrh w21, [x19,758] - str x0, [x19,1160] + ldrh w21, [x19,766] + str x0, [x19,1168] add x0, x0, 32 lsl w21, w21, 1 - str x0, [x19,1168] - mov w0, w21 - bl ftl_malloc str x0, [x19,1176] mov w0, w21 bl ftl_malloc - ldr w21, [x19,848] str x0, [x19,1184] + mov w0, w21 + bl ftl_malloc + ldr w21, [x19,852] + str x0, [x19,1192] lsl w21, w21, 1 mov w0, w21 bl ftl_malloc - str x0, [x19,1192] + str x0, [x19,1200] mov w0, w21 bl ftl_malloc - str x0, [x19,1200] - ldrh w0, [x19,758] + str x0, [x19,1208] + ldrh w0, [x19,766] lsr w0, w0, 3 add w0, w0, 4 bl ftl_malloc adrp x1, .LANCHOR0+16 str x0, [x1,#:lo12:.LANCHOR0+16] - ldrh w0, [x19,840] - lsl w0, w0, 1 - bl ftl_malloc - str x0, [x19,1208] - ldrh w0, [x19,840] + ldrh w0, [x19,844] lsl w0, w0, 1 bl ftl_malloc str x0, [x19,1216] - ldrh w0, [x19,840] - lsl w0, w0, 2 + ldrh w0, [x19,844] + lsl w0, w0, 1 bl ftl_malloc str x0, [x19,1224] - ldrh w0, [x19,842] + ldrh w0, [x19,844] lsl w0, w0, 2 bl ftl_malloc str x0, [x19,1232] - ldrh w2, [x19,842] + ldrh w0, [x19,846] + lsl w0, w0, 2 + bl ftl_malloc + str x0, [x19,1240] + ldrh w2, [x19,846] mov w1, 0 lsl w2, w2, 2 bl ftl_memset - ldrh w21, [x19,856] + ldrh w21, [x19,860] lsl w21, w21, 2 mov w0, w21 bl ftl_malloc - str x0, [x19,1240] + str x0, [x19,1248] mov w0, w21 bl ftl_malloc - str x0, [x19,1248] - ldr w0, [x19,848] + str x0, [x19,1256] + ldr w0, [x19,852] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,1256] - ldrh w0, [x19,858] + str x0, [x19,1264] + ldrh w0, [x19,862] lsl w0, w0, 4 bl ftl_malloc - str x0, [x19,1264] - ldrh w1, [x19,858] - ldrh w0, [x19,828] - mul w0, w1, w0 - bl ftl_malloc str x0, [x19,1272] - ldrh w1, [x19,758] - mov w0, 6 + ldrh w1, [x19,862] + ldrh w0, [x19,834] mul w0, w1, w0 bl ftl_malloc str x0, [x19,1280] - ldrh w0, [x19,814] - ldrh w1, [x19,770] + ldrh w1, [x19,766] + mov w0, 6 + mul w0, w1, w0 + bl ftl_malloc + str x0, [x19,1288] + ldrh w0, [x19,822] + ldrh w1, [x19,778] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x19,1288] + strh w0, [x19,1296] mul w0, w0, w1 lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,1328] - add x1, x19, 1296 - ldrh w4, [x19,1288] - ldrh w5, [x19,770] + str x0, [x19,1336] + add x1, x19, 1304 + ldrh w4, [x19,1296] + ldrh w5, [x19,778] mov w0, 1 mov w2, w4 -.L1237: +.L1319: cmp w0, w5 add x1, x1, 8 - bcs .L1337 - ldr x3, [x19,1328] + bcs .L1419 + ldr x3, [x19,1336] add w0, w0, 1 add x3, x3, x2, uxtw 2 add w2, w2, w4 str x3, [x1,32] - b .L1237 -.L1337: + b .L1319 +.L1419: add x1, x20, :lo12:.LANCHOR2 -.L1239: +.L1321: cmp w0, 8 - beq .L1338 + beq .L1420 add x2, x1, x0, uxtw 3 add w0, w0, 1 - str xzr, [x2,1328] - b .L1239 -.L1338: + str xzr, [x2,1336] + b .L1321 +.L1420: add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,1192] - cbnz x1, .L1241 -.L1243: + ldr x1, [x0,1200] + cbnz x1, .L1323 +.L1325: adrp x0, .LC29 adrp x1, .LANCHOR3 add x0, x0, :lo12:.LC29 add x1, x1, :lo12:.LANCHOR3 bl printk mov w0, -1 - b .L1242 -.L1241: - ldr x1, [x0,1200] - cbz x1, .L1243 - ldr x1, [x0,1240] - cbz x1, .L1243 - ldr x1, [x0,1256] - cbz x1, .L1243 + b .L1324 +.L1323: + ldr x1, [x0,1208] + cbz x1, .L1325 + ldr x1, [x0,1248] + cbz x1, .L1325 ldr x1, [x0,1264] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1272] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1280] - cbz x1, .L1243 - ldr x1, [x0,1328] - cbz x1, .L1243 - ldr x0, [x0,1184] - cbz x0, .L1243 + cbz x1, .L1325 + ldr x1, [x0,1288] + cbz x1, .L1325 + ldr x1, [x0,1336] + cbz x1, .L1325 + ldr x0, [x0,1192] + cbz x0, .L1325 add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,976] - cbz x1, .L1243 ldr x1, [x0,984] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,992] - cbz x1, .L1243 - ldr x1, [x0,1008] - cbz x1, .L1243 - ldr x1, [x0,1016] - cbz x1, .L1243 - ldr x1, [x0,1024] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1000] - cbz x1, .L1243 - ldr x1, [x0,1048] - cbz x1, .L1243 + cbz x1, .L1325 + ldr x1, [x0,1016] + cbz x1, .L1325 + ldr x1, [x0,1024] + cbz x1, .L1325 + ldr x1, [x0,1032] + cbz x1, .L1325 + ldr x1, [x0,1008] + cbz x1, .L1325 ldr x1, [x0,1056] - cbz x1, .L1243 - ldr x0, [x0,1064] - cbz x0, .L1243 + cbz x1, .L1325 + ldr x1, [x0,1064] + cbz x1, .L1325 + ldr x0, [x0,1072] + cbz x0, .L1325 add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,1072] - cbz x1, .L1243 - ldr x1, [x0,1088] - cbz x1, .L1243 + ldr x1, [x0,1080] + cbz x1, .L1325 ldr x1, [x0,1096] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1104] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1112] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1120] - cbz x1, .L1243 + cbz x1, .L1325 ldr x1, [x0,1128] - cbz x1, .L1243 - ldr x1, [x0,1168] - cbz x1, .L1243 - ldr x1, [x0,1152] - cbz x1, .L1243 - ldr x0, [x0,1208] - cbz x0, .L1243 + cbz x1, .L1325 + ldr x1, [x0,1136] + cbz x1, .L1325 + ldr x1, [x0,1176] + cbz x1, .L1325 + ldr x1, [x0,1160] + cbz x1, .L1325 + ldr x0, [x0,1216] + cbz x0, .L1325 adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldr x1, [x0,1216] - cbz x1, .L1243 ldr x1, [x0,1224] - cbz x1, .L1243 - ldr x0, [x0,1232] - cbz x0, .L1243 + cbz x1, .L1325 + ldr x1, [x0,1232] + cbz x1, .L1325 + ldr x0, [x0,1240] + cbz x0, .L1325 mov w0, 0 -.L1242: +.L1324: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -8124,24 +8423,24 @@ IsBlkInVendorPart: uxth w4, w0 add x1, x1, :lo12:.LANCHOR2 mov w0, 0 - ldrh w2, [x1,1392] - cbz w2, .L1340 - ldrh w2, [x1,840] - ldr x3, [x1,1208] + ldrh w2, [x1,1400] + cbz w2, .L1422 + ldrh w2, [x1,844] + ldr x3, [x1,1216] mov x1, 0 -.L1341: +.L1423: cmp w2, w1, uxth - bls .L1346 + bls .L1428 add x1, x1, 1 add x0, x3, x1, lsl 1 ldrh w0, [x0,-2] cmp w0, w4 - bne .L1341 + bne .L1423 mov w0, 1 - b .L1340 -.L1346: + b .L1422 +.L1428: mov w0, 0 -.L1340: +.L1422: ret .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 @@ -8152,26 +8451,26 @@ FtlCacheMetchLpa: mov w6, w0 add x2, x2, :lo12:.LANCHOR2 mov w0, 0 - ldr w3, [x2,972] - cbz w3, .L1348 - ldr x5, [x2,1032] + ldr w3, [x2,976] + cbz w3, .L1430 + ldr x5, [x2,1040] mov x0, 56 mov x2, 0 -.L1349: +.L1431: cmp w3, w2 - bls .L1358 + bls .L1440 madd x4, x2, x0, x5 add x2, x2, 1 ldr w4, [x4,24] cmp w4, w6 - bcc .L1349 + bcc .L1431 cmp w4, w1 - bhi .L1349 + bhi .L1431 mov w0, 1 - b .L1348 -.L1358: + b .L1430 +.L1440: mov w0, 0 -.L1348: +.L1430: ret .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 2 @@ -8194,8 +8493,8 @@ ftl_get_density: .global FtlGetLpn .type FtlGetLpn, %function FtlGetLpn: - adrp x0, .LANCHOR2+1396 - ldr w0, [x0,#:lo12:.LANCHOR2+1396] + adrp x0, .LANCHOR2+1404 + ldr w0, [x0,#:lo12:.LANCHOR2+1404] ret .size FtlGetLpn, .-FtlGetLpn .align 2 @@ -8209,8 +8508,8 @@ FtlBbmMapBadBlock: str x19, [sp,16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - ldrh w3, [x19,814] - add x19, x19, 1296 + ldrh w3, [x19,822] + add x19, x19, 1304 udiv w2, w1, w3 add x0, x19, x2, uxth 3 ldr x0, [x0,32] @@ -8240,11 +8539,11 @@ FtlBbmIsBadBlock: adrp x2, .LANCHOR2 uxth w0, w0 add x3, x2, :lo12:.LANCHOR2 - ldrh w1, [x3,814] + ldrh w1, [x3,822] udiv w2, w0, w1 msub w0, w2, w1, w0 add x2, x3, x2, uxth 3 - ldr x1, [x2,1328] + ldr x1, [x2,1336] uxth w0, w0 ubfx x3, x0, 5, 11 ldr w1, [x1,x3,lsl 2] @@ -8266,9 +8565,9 @@ FtlBbt2Bitmap: add x29, sp, 0 stp x19, x20, [sp,16] mov x20, x0 - adrp x0, .LANCHOR2+1288 + adrp x0, .LANCHOR2+1296 mov x19, x1 - ldrh w2, [x0,#:lo12:.LANCHOR2+1288] + ldrh w2, [x0,#:lo12:.LANCHOR2+1296] mov x0, x1 mov w1, 0 lsl w2, w2, 2 @@ -8276,10 +8575,10 @@ FtlBbt2Bitmap: mov x3, 0 mov w0, 65535 mov w5, 1 -.L1367: +.L1449: ldrh w2, [x20,x3] cmp w2, w0 - beq .L1365 + beq .L1447 ubfx x4, x2, 5, 11 add x3, x3, 2 lsl x4, x4, 2 @@ -8288,8 +8587,8 @@ FtlBbt2Bitmap: ldr w1, [x19,x4] orr w2, w1, w2 str w2, [x19,x4] - bne .L1367 -.L1365: + bne .L1449 +.L1447: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -8305,126 +8604,128 @@ FtlBbmTblFlush: add x19, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] stp x23, x24, [sp,48] - ldr w1, [x19,1400] + ldr w1, [x19,1408] stp x25, x26, [sp,64] - cbnz w1, .L1372 - ldr x0, [x19,1048] + cbnz w1, .L1454 + ldr x0, [x19,1056] mov x22, 0 - ldr x3, [x19,1112] - add x21, x19, 1296 - ldrh w2, [x19,828] - str x0, [x19,1416] - str x3, [x19,1424] + ldr x3, [x19,1120] + add x21, x19, 1304 + ldrh w2, [x19,834] + str x0, [x19,1424] + str x3, [x19,1432] bl ftl_memset -.L1373: - ldrh w1, [x19,770] +.L1455: + ldrh w1, [x19,778] mov w0, w22 - add x20, x19, 1408 + add x20, x19, 1416 add x22, x22, 1 cmp w0, w1 - bge .L1381 + bge .L1468 add x1, x21, x22, lsl 3 - ldrh w2, [x19,1288] + ldrh w2, [x19,1296] ldr x3, [x20,8] ldr x1, [x1,24] mul w0, w0, w2 add x0, x3, x0, sxtw 2 lsl w2, w2, 2 bl ftl_memcpy - b .L1373 -.L1381: + b .L1455 +.L1468: ldr x26, [x20,16] mov w1, 255 mov w2, 16 mov w22, 0 mov x0, x26 - adrp x23, .LC31 + adrp x24, .LC31 adrp x25, .LC32 - mov w24, w22 + mov w23, w22 bl ftl_memset - add x23, x23, :lo12:.LC31 + add x24, x24, :lo12:.LC31 mov w0, -3887 strh w0, [x26] add x25, x25, :lo12:.LC32 ldr w0, [x21,8] str w0, [x26,4] - ldrh w0, [x19,1296] + ldrh w0, [x19,1304] strh w0, [x26,2] ldrh w0, [x21,4] strh w0, [x26,8] ldrh w0, [x21,6] strh w0, [x26,10] - ldr w0, [x19,744] + ldr w0, [x19,752] strh w0, [x26,12] -.L1375: - ldr x0, [x19,1048] +.L1457: + ldr x0, [x19,1056] str x0, [x20,8] - ldrh w1, [x19,1296] - ldr x0, [x19,1112] + ldrh w1, [x19,1304] + ldr x0, [x19,1120] str x0, [x20,16] - ldrh w2, [x19,1298] - ldrh w3, [x19,1300] + ldrh w2, [x19,1306] + ldrh w3, [x19,1308] orr w0, w2, w1, lsl 10 ldrh w4, [x26,10] str w0, [x20,4] - mov x0, x23 + mov x0, x24 str wzr, [x20] bl printk - ldrh w1, [x19,820] - ldrh w0, [x19,1298] + ldrh w1, [x19,826] + ldrh w0, [x19,1306] sub w1, w1, #1 cmp w0, w1 - blt .L1376 - ldr w1, [x19,1304] - ldrh w0, [x19,1296] + blt .L1458 + ldr w1, [x19,1312] + ldrh w0, [x19,1304] add w1, w1, 1 - str w1, [x19,1304] + str w1, [x19,1312] str w1, [x26,4] strh w0, [x26,8] - ldrh w1, [x19,1300] - strh w0, [x19,1300] - ldr x0, [x19,1016] - strh w1, [x19,1296] + ldrh w1, [x19,1308] + strh w0, [x19,1308] + ldr x0, [x19,1024] + strh w1, [x19,1304] lsl w1, w1, 10 str w1, [x20,4] str w1, [x0,4] mov w1, 1 mov w2, w1 - strh wzr, [x19,1298] - ldr x0, [x19,1016] + strh wzr, [x19,1306] + ldr x0, [x19,1024] bl FlashEraseBlocks -.L1376: +.L1458: mov w1, 1 mov x0, x20 mov w2, w1 mov w3, w1 bl FlashProgPages - ldrh w1, [x19,1298] + ldrh w1, [x19,1306] ldr w0, [x20] add w1, w1, 1 - strh w1, [x19,1298] + strh w1, [x19,1306] cmn w0, #1 - bne .L1377 + bne .L1459 ldr w1, [x20,4] mov x0, x25 add w22, w22, 1 bl printk uxth w22, w22 cmp w22, 3 - bls .L1375 + bls .L1457 adrp x0, .LC33 ldr w1, [x20,4] add x0, x0, :lo12:.LC33 mov w2, w22 bl printk mov w0, 1 - str w0, [x19,1400] - b .L1372 -.L1377: - cbnz w24, .L1372 - mov w24, 1 - b .L1375 -.L1372: + str w0, [x19,1408] + b .L1454 +.L1459: + add w23, w23, 1 + cmp w23, 1 + beq .L1457 + cmp w0, 256 + beq .L1457 +.L1454: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8445,29 +8746,29 @@ FtlLoadFactoryBbt: stp x25, x26, [sp,64] stp x19, x20, [sp,16] stp x23, x24, [sp,48] - add x21, x1, 1408 - add x23, x1, 1296 - ldr x0, [x1,1048] + add x21, x1, 1416 + add x23, x1, 1304 + ldr x0, [x1,1056] mov w22, 0 - ldr x24, [x1,1112] + ldr x24, [x1,1120] mov x19, x1 str x0, [x21,8] mov w25, -1 str x24, [x21,16] mov w26, 61664 -.L1383: - ldrh w0, [x19,770] +.L1470: + ldrh w0, [x19,778] cmp w22, w0 - bcs .L1392 - ldrh w20, [x19,814] + bcs .L1479 + ldrh w20, [x19,822] strh w25, [x23,12] -.L1385: +.L1472: sub w20, w20, #1 - ldrh w0, [x19,814] + ldrh w0, [x19,822] uxth w20, w20 sub w1, w0, #16 cmp w20, w1 - ble .L1386 + ble .L1473 madd w0, w22, w0, w20 mov w1, 1 lsl w0, w0, 10 @@ -8477,16 +8778,16 @@ FtlLoadFactoryBbt: bl FlashReadPages ldr w0, [x21] cmn w0, #1 - beq .L1385 + beq .L1472 ldrh w0, [x24] cmp w0, w26 - bne .L1385 + bne .L1472 strh w20, [x23,12] -.L1386: +.L1473: add w22, w22, 1 add x23, x23, 2 - b .L1383 -.L1392: + b .L1470 +.L1479: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8505,7 +8806,7 @@ FtlBbtMemInit: add x0, x0, :lo12:.LANCHOR2 mov w2, 16 add x29, sp, 0 - add x0, x0, 1308 + add x0, x0, 1316 strh w1, [x0,-12] mov w1, 255 strh wzr, [x0,-6] @@ -8525,22 +8826,22 @@ FtlBbtCalcTotleCnt: str x21, [sp,32] mov w19, 0 mov w20, w19 - ldrh w1, [x0,814] - ldrh w21, [x0,770] + ldrh w1, [x0,822] + ldrh w21, [x0,778] mul w21, w1, w21 -.L1395: +.L1482: cmp w20, w21 - bge .L1401 + bge .L1488 mov w0, w20 bl FtlBbmIsBadBlock - cbz w0, .L1396 + cbz w0, .L1483 add w19, w19, 1 uxth w19, w19 -.L1396: +.L1483: add w20, w20, 1 uxth w20, w20 - b .L1395 -.L1401: + b .L1482 +.L1488: mov w0, w19 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -8561,28 +8862,28 @@ FtlMakeBbt: stp x25, x26, [sp,64] stp x27, x28, [sp,80] mov x21, x19 - ldr w22, [x20,1400] - cbnz w22, .L1403 - add x24, x20, 1296 + ldr w22, [x20,1408] + cbnz w22, .L1490 + add x24, x20, 1304 mov x19, x20 mov x25, x24 - add x20, x20, 1408 + add x20, x20, 1416 mov w28, -3872 bl FtlBbtMemInit bl FtlLoadFactoryBbt -.L1404: - ldrh w0, [x19,770] +.L1491: + ldrh w0, [x19,778] cmp w22, w0 - bcs .L1422 + bcs .L1509 ldrh w4, [x25,12] mov w1, 65535 - ldr x0, [x19,1048] - ldr x26, [x19,1112] + ldr x0, [x19,1056] + ldr x26, [x19,1120] cmp w4, w1 str x0, [x20,8] str x26, [x20,16] - beq .L1405 - ldrh w0, [x19,814] + beq .L1492 + ldrh w0, [x19,822] mov w1, 1 mov w2, w1 madd w27, w22, w0, w4 @@ -8590,41 +8891,41 @@ FtlMakeBbt: str w0, [x20,4] mov x0, x20 bl FlashReadPages - ldrh w2, [x19,814] + ldrh w2, [x19,822] ldr x0, [x24,32] add w2, w2, 7 ldr x1, [x20,8] lsr w2, w2, 3 bl ftl_memcpy - b .L1406 -.L1405: + b .L1493 +.L1492: mov w1, w22 bl FlashGetBadBlockList ldr x0, [x20,8] ldr x1, [x24,32] bl FtlBbt2Bitmap - ldrh w23, [x19,814] -.L1408: + ldrh w23, [x19,822] +.L1495: sub w23, w23, #1 uxth w23, w23 -.L1407: - ldrh w0, [x19,814] +.L1494: + ldrh w0, [x19,822] madd w0, w22, w0, w23 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L1408 - ldr x0, [x19,1112] + beq .L1495 + ldr x0, [x19,1120] mov w1, 0 mov w2, 16 strh w23, [x25,12] bl ftl_memset strh w28, [x26] str wzr, [x26,4] - ldrh w2, [x19,1288] + ldrh w2, [x19,1296] ldrh w0, [x25,12] strh w0, [x26,2] lsl w2, w2, 2 - ldrh w0, [x19,814] + ldrh w0, [x19,822] ldrh w4, [x25,12] ldr x1, [x24,32] madd w27, w22, w0, w4 @@ -8643,93 +8944,93 @@ FtlMakeBbt: bl FlashProgPages ldr w0, [x20] cmn w0, #1 - bne .L1406 + bne .L1493 mov w0, w27 bl FtlBbmMapBadBlock - b .L1407 -.L1406: + b .L1494 +.L1493: mov w0, w27 add w22, w22, 1 add x24, x24, 8 add x25, x25, 2 bl FtlBbmMapBadBlock - b .L1404 -.L1422: + b .L1491 +.L1509: mov w19, 0 -.L1411: +.L1498: add x20, x21, :lo12:.LANCHOR2 - ldrh w0, [x20,832] + ldrh w0, [x20,838] cmp w0, w19 - bls .L1423 + bls .L1510 mov w0, w19 add w19, w19, 1 bl FtlBbmMapBadBlock uxth w19, w19 - b .L1411 -.L1423: - ldrh w19, [x20,1308] + b .L1498 +.L1510: + ldrh w19, [x20,1316] mov w23, 65535 sub w19, w19, #1 uxth w19, w19 -.L1413: - add x22, x20, 1296 +.L1500: + add x22, x20, 1304 ldrh w0, [x22,12] sub w0, w0, #48 cmp w19, w0 - ble .L1417 + ble .L1504 mov w0, w19 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L1414 + beq .L1501 mov w0, w19 bl FlashTestBlk - cbz w0, .L1415 + cbz w0, .L1502 mov w0, w19 bl FtlBbmMapBadBlock - b .L1414 -.L1415: - ldrh w0, [x20,1296] + b .L1501 +.L1502: + ldrh w0, [x20,1304] cmp w0, w23 - bne .L1416 - strh w19, [x20,1296] - b .L1414 -.L1416: + bne .L1503 + strh w19, [x20,1304] + b .L1501 +.L1503: strh w19, [x22,4] - b .L1417 -.L1414: + b .L1504 +.L1501: sub w19, w19, #1 uxth w19, w19 - b .L1413 -.L1417: + b .L1500 +.L1504: add x19, x21, :lo12:.LANCHOR2 mov w2, 2 - ldr x1, [x19,1016] - ldrh w0, [x19,1296] - str wzr, [x19,1304] + ldr x1, [x19,1024] + ldrh w0, [x19,1304] + str wzr, [x19,1312] lsl w0, w0, 10 str w0, [x1,4] - strh wzr, [x19,1298] - ldr x0, [x19,1016] - ldrh w1, [x19,1300] + strh wzr, [x19,1306] + ldr x0, [x19,1024] + ldrh w1, [x19,1308] lsl w1, w1, 10 str w1, [x0,60] mov w1, 1 bl FlashEraseBlocks - ldrh w0, [x19,1296] + ldrh w0, [x19,1304] bl FtlBbmMapBadBlock - ldrh w0, [x19,1300] + ldrh w0, [x19,1308] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - strh wzr, [x19,1298] - ldr w0, [x19,1304] - ldrh w1, [x19,1300] + strh wzr, [x19,1306] + ldr w0, [x19,1312] + ldrh w1, [x19,1308] add w0, w0, 1 - str w0, [x19,1304] - ldrh w0, [x19,1296] - strh w0, [x19,1300] - strh w1, [x19,1296] + str w0, [x19,1312] + ldrh w0, [x19,1304] + strh w0, [x19,1308] + strh w1, [x19,1304] bl FtlBbmTblFlush -.L1403: +.L1490: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8747,11 +9048,11 @@ V2P_block: uxth w0, w0 add x3, x3, :lo12:.LANCHOR2 uxth w1, w1 - ldrh w4, [x3,772] + ldrh w4, [x3,780] udiv w2, w0, w4 msub w0, w2, w4, w0 madd w0, w1, w4, w0 - ldrh w1, [x3,814] + ldrh w1, [x3,822] madd w0, w2, w1, w0 ret .size V2P_block, .-V2P_block @@ -8762,8 +9063,8 @@ P2V_plane: adrp x2, .LANCHOR2 uxth w0, w0 add x2, x2, :lo12:.LANCHOR2 - ldrh w1, [x2,772] - ldrh w3, [x2,814] + ldrh w1, [x2,780] + ldrh w3, [x2,822] udiv w2, w0, w1 udiv w3, w0, w3 msub w0, w2, w1, w0 @@ -8777,10 +9078,10 @@ P2V_block_in_plane: adrp x2, .LANCHOR2 uxth w0, w0 add x2, x2, :lo12:.LANCHOR2 - ldrh w3, [x2,814] + ldrh w3, [x2,822] udiv w1, w0, w3 msub w0, w1, w3, w0 - ldrh w1, [x2,772] + ldrh w1, [x2,780] uxth w0, w0 udiv w0, w0, w1 ret @@ -8791,16 +9092,16 @@ P2V_block_in_plane: ftl_cmp_data_ver: cmp w0, w1 mov w2, -2147483648 - bls .L1428 + bls .L1515 sub w1, w0, w1 cmp w1, w2 cset w0, ls - b .L1429 -.L1428: + b .L1516 +.L1515: sub w1, w1, w0 cmp w1, w2 cset w0, hi -.L1429: +.L1516: ret .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 @@ -8817,12 +9118,12 @@ FtlGetLastWrittenPage: str x25, [sp,64] mov w23, w1 add x3, x3, :lo12:.LANCHOR2 - bne .L1431 - ldrh w19, [x3,820] - b .L1432 -.L1431: - ldrh w19, [x3,818] -.L1432: + bne .L1518 + ldrh w19, [x3,826] + b .L1519 +.L1518: + ldrh w19, [x3,824] +.L1519: sub w19, w19, #1 lsl w21, w0, 10 mov w1, 1 @@ -8837,12 +9138,12 @@ FtlGetLastWrittenPage: bl FlashReadPages ldr w0, [x29,144] cmn w0, #1 - bne .L1433 + bne .L1520 mov w22, 0 mov w25, 2 -.L1434: +.L1521: cmp w22, w19 - bgt .L1433 + bgt .L1520 add w3, w22, w19 mov w1, 1 mov w2, w23 @@ -8854,21 +9155,21 @@ FtlGetLastWrittenPage: bl FlashReadPages ldr w0, [x24] cmn w0, #1 - bne .L1435 + bne .L1522 ldr w0, [x24,4] cmn w0, #1 - bne .L1435 + bne .L1522 ldr w0, [x29,88] cmn w0, #1 - beq .L1435 + beq .L1522 sub w19, w20, #1 sxth w19, w19 - b .L1434 -.L1435: + b .L1521 +.L1522: add w20, w20, 1 sxth w22, w20 - b .L1434 -.L1433: + b .L1521 +.L1520: mov w0, w19 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -8889,20 +9190,20 @@ FtlLoadBbt: add x23, x19, :lo12:.LANCHOR2 mov w24, 61649 stp x21, x22, [sp,32] - add x21, x23, 1408 - ldr x0, [x23,1048] - ldr x22, [x23,1112] + add x21, x23, 1416 + ldr x0, [x23,1056] + ldr x22, [x23,1120] str x0, [x21,8] str x22, [x21,16] bl FtlBbtMemInit - ldrh w20, [x23,814] + ldrh w20, [x23,822] sub w20, w20, #1 uxth w20, w20 -.L1442: - ldrh w0, [x23,814] +.L1529: + ldrh w0, [x23,822] sub w0, w0, #48 cmp w20, w0 - ble .L1445 + ble .L1532 lsl w0, w20, 10 mov w1, 1 str w0, [x21,4] @@ -8911,7 +9212,7 @@ FtlLoadBbt: bl FlashReadPages ldr w0, [x21] cmn w0, #1 - bne .L1443 + bne .L1530 ldr w0, [x21,4] mov w1, 1 mov w2, w1 @@ -8919,128 +9220,128 @@ FtlLoadBbt: str w0, [x21,4] mov x0, x21 bl FlashReadPages -.L1443: +.L1530: ldr w0, [x21] cmn w0, #1 - beq .L1444 + beq .L1531 ldrh w0, [x22] cmp w0, w24 - bne .L1444 + bne .L1531 ldr w1, [x22,4] - str w1, [x23,1304] - strh w20, [x23,1296] + str w1, [x23,1312] + strh w20, [x23,1304] ldrh w1, [x22,8] - strh w1, [x23,1300] - b .L1445 -.L1444: + strh w1, [x23,1308] + b .L1532 +.L1531: sub w20, w20, #1 uxth w20, w20 - b .L1442 -.L1445: + b .L1529 +.L1532: add x21, x19, :lo12:.LANCHOR2 mov w2, 65535 mov w0, -1 - ldrh w1, [x21,1296] + ldrh w1, [x21,1304] cmp w1, w2 - beq .L1447 - ldrh w1, [x21,1300] + beq .L1534 + ldrh w1, [x21,1308] cmp w1, w2 - beq .L1449 - add x0, x21, 1408 + beq .L1536 + add x0, x21, 1416 lsl w1, w1, 10 str w1, [x0,4] mov w1, 1 mov w2, w1 bl FlashReadPages - ldr w0, [x21,1408] + ldr w0, [x21,1416] cmn w0, #1 - beq .L1449 + beq .L1536 ldrh w1, [x22] mov w0, 61649 cmp w1, w0 - bne .L1449 + bne .L1536 ldr w0, [x22,4] - ldr w1, [x21,1304] + ldr w1, [x21,1312] cmp w0, w1 - bls .L1449 - str w0, [x21,1304] - ldrh w1, [x21,1300] + bls .L1536 + str w0, [x21,1312] + ldrh w1, [x21,1308] ldrh w0, [x22,8] - strh w1, [x21,1296] - strh w0, [x21,1300] -.L1449: + strh w1, [x21,1304] + strh w0, [x21,1308] +.L1536: add x20, x19, :lo12:.LANCHOR2 mov w1, 1 - add x23, x20, 1408 + add x23, x20, 1416 mov w24, 61649 - ldrh w0, [x20,1296] + ldrh w0, [x20,1304] bl FtlGetLastWrittenPage sxth w21, w0 add w0, w0, 1 - strh w0, [x20,1298] -.L1451: - tbnz w21, #31, .L1456 - ldrh w0, [x20,1296] + strh w0, [x20,1306] +.L1538: + tbnz w21, #31, .L1543 + ldrh w0, [x20,1304] mov w1, 1 mov w2, w1 orr w0, w21, w0, lsl 10 str w0, [x23,4] - ldr x0, [x20,1048] + ldr x0, [x20,1056] str x0, [x23,8] mov x0, x23 bl FlashReadPages ldr w0, [x23] cmn w0, #1 - beq .L1452 + beq .L1539 ldrh w0, [x22] cmp w0, w24 - bne .L1452 -.L1456: + bne .L1539 +.L1543: add x1, x19, :lo12:.LANCHOR2 ldrh w0, [x22,10] mov w2, 65535 - strh w0, [x1,1302] + strh w0, [x1,1310] ldrh w0, [x22,12] cmp w0, w2 - bne .L1453 - b .L1454 -.L1452: + bne .L1540 + b .L1541 +.L1539: sub w21, w21, #1 sxth w21, w21 - b .L1451 -.L1453: - ldr w2, [x1,744] + b .L1538 +.L1540: + ldr w2, [x1,752] cmp w0, w2 - beq .L1454 - ldrh w1, [x1,758] + beq .L1541 + ldrh w1, [x1,766] lsr w1, w1, 2 cmp w0, w1 - bcs .L1454 + bcs .L1541 cmp w2, w1 - bcs .L1454 + bcs .L1541 bl FtlSysBlkNumInit -.L1454: +.L1541: add x19, x19, :lo12:.LANCHOR2 mov x20, 0 - add x21, x19, 1296 -.L1457: - ldrh w0, [x19,770] + add x21, x19, 1304 +.L1544: + ldrh w0, [x19,778] mov w1, w20 add x20, x20, 1 cmp w1, w0 - bcs .L1475 - ldrh w2, [x19,1288] + bcs .L1562 + ldrh w2, [x19,1296] add x0, x21, x20, lsl 3 - ldr x3, [x19,1416] + ldr x3, [x19,1424] mul w1, w1, w2 ldr x0, [x0,24] lsl w2, w2, 2 add x1, x3, x1, lsl 2 bl ftl_memcpy - b .L1457 -.L1475: + b .L1544 +.L1562: mov w0, 0 -.L1447: +.L1534: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9056,11 +9357,11 @@ FtlFreeSysBlkQueueInit: stp x29, x30, [sp, -16]! add x1, x1, :lo12:.LANCHOR2 add x29, sp, 0 - strh w0, [x1,1464] - add x0, x1, 1472 - strh wzr, [x1,1466] - strh wzr, [x1,1468] - strh wzr, [x1,1470] + strh w0, [x1,1472] + add x0, x1, 1480 + strh wzr, [x1,1474] + strh wzr, [x1,1476] + strh wzr, [x1,1478] mov w1, 0 bl ftl_memset mov w0, 0 @@ -9071,8 +9372,8 @@ FtlFreeSysBlkQueueInit: .global FtlFreeSysBlkQueueEmpty .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: - adrp x0, .LANCHOR2+1470 - ldrh w0, [x0,#:lo12:.LANCHOR2+1470] + adrp x0, .LANCHOR2+1478 + ldrh w0, [x0,#:lo12:.LANCHOR2+1478] cmp w0, wzr cset w0, eq ret @@ -9081,8 +9382,8 @@ FtlFreeSysBlkQueueEmpty: .global FtlFreeSysBlkQueueFull .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: - adrp x0, .LANCHOR2+1470 - ldrh w0, [x0,#:lo12:.LANCHOR2+1470] + adrp x0, .LANCHOR2+1478 + ldrh w0, [x0,#:lo12:.LANCHOR2+1478] cmp w0, 1024 cset w0, eq ret @@ -9100,37 +9401,37 @@ FtlFreeSysBlkQueueIn: mov w0, 65533 sub w2, w21, #1 cmp w0, w2, uxth - bcc .L1479 + bcc .L1566 adrp x2, .LANCHOR2 add x20, x2, :lo12:.LANCHOR2 mov x19, x2 - ldrh w0, [x20,1470] + ldrh w0, [x20,1478] cmp w0, 1024 - beq .L1479 - cbz w1, .L1481 - ldr w0, [x20,1400] - cbnz w0, .L1481 + beq .L1566 + cbz w1, .L1568 + ldr w0, [x20,1408] + cbnz w0, .L1568 mov w0, w21 bl P2V_block_in_plane uxth w22, w0 - ldr x0, [x20,1016] + ldr x0, [x20,1024] lsl w1, w21, 10 str w1, [x0,4] mov w1, 1 mov w2, w1 - ldr x0, [x20,1016] + ldr x0, [x20,1024] bl FlashEraseBlocks ubfiz x0, x22, 1, 16 - ldr x2, [x20,1168] + ldr x2, [x20,1176] ldrh w1, [x2,x0] add w1, w1, 1 strh w1, [x2,x0] - ldr w0, [x20,912] + ldr w0, [x20,916] add w0, w0, 1 - str w0, [x20,912] -.L1481: + str w0, [x20,916] +.L1568: add x1, x19, :lo12:.LANCHOR2 - add x1, x1, 1464 + add x1, x1, 1472 ldrh w0, [x1,6] ldrh w2, [x1,4] add w0, w0, 1 @@ -9140,7 +9441,7 @@ FtlFreeSysBlkQueueIn: and w2, w2, 1023 strh w21, [x0,8] strh w2, [x1,4] -.L1479: +.L1566: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -9161,53 +9462,53 @@ FtlLowFormatEraseBlock: stp x27, x28, [sp,80] uxth w25, w0 uxtb w24, w1 - ldrb w0, [x3,648] - ldr w2, [x3,1400] + ldrb w0, [x3,656] + ldr w2, [x3,1408] str w0, [x29,120] mov w0, 0 - cbnz w2, .L1489 + cbnz w2, .L1576 adrp x28, .LANCHOR0 - str w25, [x3,944] + str w25, [x3,948] add x0, x28, :lo12:.LANCHOR0 mov w27, w2 mov w20, w2 mov w19, w2 mov x26, x3 mov w23, 56 - ldrb w0, [x0,136] + ldrb w0, [x0,4044] str w0, [x29,124] -.L1490: - ldrh w0, [x26,748] +.L1577: + ldrh w0, [x26,756] cmp w0, w27 - bls .L1534 + bls .L1621 umull x0, w27, w23 - ldr x1, [x26,1016] + ldr x1, [x26,1024] str wzr, [x1,x0] - add x0, x26, 776 + add x0, x26, 784 mov w1, w25 ldrb w0, [x0,w27,sxtw] bl V2P_block uxth w22, w0 mov w1, w22 - cbz w24, .L1491 + cbz w24, .L1578 str x1, [x29,112] bl IsBlkInVendorPart ldr x1, [x29,112] - cbnz w0, .L1492 -.L1491: + cbnz w0, .L1579 +.L1578: mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L1493 + cbnz w0, .L1580 umull x0, w20, w23 - ldr x1, [x26,1016] + ldr x1, [x26,1024] lsl w22, w22, 10 mov w2, 4 add x1, x1, x0 str w22, [x1,4] - ldr x1, [x26,1016] - ldr x4, [x26,1120] + ldr x1, [x26,1024] + ldr x4, [x26,1128] add x1, x1, x0 - ldrh w0, [x26,830] + ldrh w0, [x26,836] mul w0, w20, w0 add w20, w20, 1 str xzr, [x1,8] @@ -9215,141 +9516,141 @@ FtlLowFormatEraseBlock: uxth w20, w20 add x0, x4, x0, sxtw 2 str x0, [x1,16] - b .L1492 -.L1493: + b .L1579 +.L1580: add w19, w19, 1 uxth w19, w19 -.L1492: +.L1579: add w2, w27, 1 uxth w27, w2 - b .L1490 -.L1534: - cbz w20, .L1513 + b .L1577 +.L1621: + cbz w20, .L1600 ldr w0, [x29,124] mov w2, w20 - strb wzr, [x26,648] + strb wzr, [x26,656] mov x23, 0 cmp w0, wzr - ldr x0, [x26,1016] + ldr x0, [x26,1024] cset w22, ne mov w1, w22 bl FlashEraseBlocks ldrb w0, [x29,120] - strb w0, [x26,648] + strb w0, [x26,656] mov x26, 56 -.L1496: +.L1583: cmp w20, w23, uxth - bls .L1535 + bls .L1622 add x1, x21, :lo12:.LANCHOR2 mul x0, x23, x26 - ldr x1, [x1,1016] + ldr x1, [x1,1024] add x2, x1, x0 ldr w0, [x1,x0] cmn w0, #1 - bne .L1497 + bne .L1584 ldr w0, [x2,4] add w19, w19, 1 lsr w0, w0, 10 uxth w19, w19 bl FtlBbmMapBadBlock -.L1497: +.L1584: add x23, x23, 1 - b .L1496 -.L1535: - cbnz w24, .L1499 + b .L1583 +.L1622: + cbnz w24, .L1586 mov w0, 1 uxth w22, w22 mov w27, 6 str w0, [x29,124] - b .L1500 -.L1499: + b .L1587 +.L1586: add x0, x21, :lo12:.LANCHOR2 add x28, x28, :lo12:.LANCHOR0 - ldrh w0, [x0,820] + ldrh w0, [x0,826] str w0, [x29,124] - ldrb w0, [x28,136] - cbnz w0, .L1516 + ldrb w0, [x28,4044] + cbnz w0, .L1603 ldr w0, [x29,124] mov w22, 1 lsr w27, w0, 2 - b .L1500 -.L1516: + b .L1587 +.L1603: mov w22, 1 mov w27, w22 -.L1500: +.L1587: mov w23, 0 add x28, x21, :lo12:.LANCHOR2 -.L1509: +.L1596: mov w26, 0 mov w20, w26 -.L1501: - ldrh w0, [x28,748] +.L1588: + ldrh w0, [x28,756] cmp w0, w26 - bls .L1536 + bls .L1623 mov w0, 56 - ldr x1, [x28,1016] + ldr x1, [x28,1024] umull x0, w26, w0 str wzr, [x1,x0] - add x0, x28, 776 + add x0, x28, 784 mov w1, w25 ldrb w0, [x0,w26,sxtw] bl V2P_block uxth w2, w0 str w2, [x29,112] mov w1, w2 - cbz w24, .L1502 + cbz w24, .L1589 str x1, [x29,104] bl IsBlkInVendorPart ldr x1, [x29,104] - cbnz w0, .L1503 -.L1502: + cbnz w0, .L1590 +.L1589: mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L1503 + cbnz w0, .L1590 mov w0, 56 - ldr x1, [x28,1016] + ldr x1, [x28,1024] ldr w2, [x29,112] umull x0, w20, w0 add x1, x1, x0 add w2, w23, w2, lsl 10 str w2, [x1,4] mov w2, 4 - ldr x1, [x28,1016] + ldr x1, [x28,1024] add x1, x1, x0 - ldr x0, [x28,1088] + ldr x0, [x28,1096] str x0, [x1,8] - ldrh w0, [x28,830] + ldrh w0, [x28,836] mul w0, w20, w0 add w20, w20, 1 sdiv w0, w0, w2 uxth w20, w20 - ldr x2, [x28,1096] + ldr x2, [x28,1104] add x0, x2, x0, sxtw 2 str x0, [x1,16] -.L1503: +.L1590: add w3, w26, 1 uxth w26, w3 - b .L1501 -.L1536: - cbz w20, .L1513 - ldr x0, [x28,1016] + b .L1588 +.L1623: + cbz w20, .L1600 + ldr x0, [x28,1024] mov w1, w20 mov w2, w22 mov w3, 1 - strb wzr, [x28,648] + strb wzr, [x28,656] bl FlashProgPages ldrb w0, [x29,120] mov x1, 0 - strb w0, [x28,648] -.L1506: + strb w0, [x28,656] +.L1593: cmp w20, w1, uxth - bls .L1537 + bls .L1624 mov x0, 56 - ldr x2, [x28,1016] + ldr x2, [x28,1024] mul x0, x1, x0 add x3, x2, x0 ldr w0, [x2,x0] - cbz w0, .L1507 + cbz w0, .L1594 ldr w0, [x3,4] add w19, w19, 1 str x1, [x29,112] @@ -9357,47 +9658,47 @@ FtlLowFormatEraseBlock: uxth w19, w19 bl FtlBbmMapBadBlock ldr x1, [x29,112] -.L1507: +.L1594: add x1, x1, 1 - b .L1506 -.L1537: + b .L1593 +.L1624: add w23, w23, w27 ldr w0, [x29,124] uxth w23, w23 cmp w23, w0 - bcc .L1509 + bcc .L1596 mov x23, 0 mov x26, 56 -.L1510: +.L1597: cmp w20, w23, uxth - bls .L1538 - cbz w24, .L1511 + bls .L1625 + cbz w24, .L1598 add x1, x21, :lo12:.LANCHOR2 mul x0, x23, x26 - ldr x1, [x1,1016] + ldr x1, [x1,1024] add x2, x1, x0 ldr w0, [x1,x0] - cbnz w0, .L1511 + cbnz w0, .L1598 ldr w0, [x2,4] mov w1, 1 lsr w0, w0, 10 bl FtlFreeSysBlkQueueIn -.L1511: +.L1598: add x23, x23, 1 - b .L1510 -.L1538: + b .L1597 +.L1625: cmp w25, 63 - bls .L1517 - cbz w24, .L1513 -.L1517: + bls .L1604 + cbz w24, .L1600 +.L1604: add x21, x21, :lo12:.LANCHOR2 mov w1, w22 mov w2, w20 - ldr x0, [x21,1016] + ldr x0, [x21,1024] bl FlashEraseBlocks -.L1513: +.L1600: mov w0, w19 -.L1489: +.L1576: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9412,18 +9713,18 @@ FtlLowFormatEraseBlock: FtlFreeSysBLkSort: adrp x1, .LANCHOR2 add x0, x1, :lo12:.LANCHOR2 - add x0, x0, 1464 + add x0, x0, 1472 ldrh w6, [x0,2084] ldrh w2, [x0,6] - cbz w2, .L1539 + cbz w2, .L1626 mov w5, 0 ldrh w3, [x0,2] ldrh w2, [x0,4] mov w4, w5 and w6, w6, 31 -.L1541: +.L1628: cmp w4, w6 - bge .L1549 + bge .L1636 add x5, x0, x3, sxtw 1 ldrh w7, [x5,8] add x5, x0, x2, sxtw 1 @@ -9435,13 +9736,13 @@ FtlFreeSysBLkSort: uxth w4, w4 and w3, w3, 1023 and w2, w2, 1023 - b .L1541 -.L1549: - cbz w5, .L1539 + b .L1628 +.L1636: + cbz w5, .L1626 add x0, x1, :lo12:.LANCHOR2 - strh w3, [x0,1466] - strh w2, [x0,1468] -.L1539: + strh w3, [x0,1474] + strh w2, [x0,1476] +.L1626: ret .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 @@ -9457,70 +9758,70 @@ FtlFreeSysBlkQueueOut: adrp x23, .LC35 stp x21, x22, [sp,32] stp x25, x26, [sp,64] - add x21, x19, 1464 + add x21, x19, 1472 adrp x24, .LANCHOR0 add x23, x23, :lo12:.LC35 -.L1551: +.L1638: ldrh w1, [x21,6] adrp x22, .LANCHOR2 - cbz w1, .L1552 + cbz w1, .L1639 ldrh w2, [x21,2] sub w1, w1, #1 add x0, x21, x2, sxtw 1 strh w1, [x21,6] add w2, w2, 1 - ldr w1, [x19,1400] + ldr w1, [x19,1408] and w2, w2, 1023 strh w2, [x21,2] ldrh w20, [x0,8] - cbnz w1, .L1553 + cbnz w1, .L1640 mov w0, w20 str x1, [x29,88] bl P2V_block_in_plane uxth w26, w0 - ldr x0, [x19,1016] + ldr x0, [x19,1024] lsl w2, w20, 10 ldr x1, [x29,88] str w2, [x0,4] add x0, x24, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L1554 - ldr x0, [x19,1016] + ldrb w0, [x0,4044] + cbz w0, .L1641 + ldr x0, [x19,1024] mov w2, 1 bl FlashEraseBlocks -.L1554: +.L1641: add x25, x22, :lo12:.LANCHOR2 mov w1, 1 mov w2, w1 - ldr x0, [x25,1016] + ldr x0, [x25,1024] bl FlashEraseBlocks ubfiz x0, x26, 1, 16 - ldr x2, [x25,1168] + ldr x2, [x25,1176] ldrh w1, [x2,x0] add w1, w1, 1 strh w1, [x2,x0] - ldr w0, [x25,912] + ldr w0, [x25,916] add w0, w0, 1 - str w0, [x25,912] - b .L1553 -.L1552: + str w0, [x25,916] + b .L1640 +.L1639: adrp x0, .LC34 add x0, x0, :lo12:.LC34 bl printk -.L1555: - b .L1555 -.L1553: +.L1642: + b .L1642 +.L1640: sub w0, w20, #1 mov w1, 65533 cmp w1, w0, uxth - bcs .L1556 + bcs .L1643 add x22, x22, :lo12:.LANCHOR2 mov x0, x23 mov w1, w20 - ldrh w2, [x22,1470] + ldrh w2, [x22,1478] bl printk - b .L1551 -.L1556: + b .L1638 +.L1643: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -9534,31 +9835,31 @@ FtlFreeSysBlkQueueOut: .type test_node_in_list, %function test_node_in_list: ldr x2, [x0] - adrp x0, .LANCHOR2+1280 + adrp x0, .LANCHOR2+1288 mov x4, -6148914691236517206 uxth w1, w1 mov w5, 65535 - ldr x3, [x0,#:lo12:.LANCHOR2+1280] + ldr x3, [x0,#:lo12:.LANCHOR2+1288] sub x0, x2, x3 asr x0, x0, 1 madd x0, x4, x0, x0 mov w4, 6 uxth w0, w0 -.L1562: +.L1649: cmp w1, w0 - beq .L1563 + beq .L1650 ldrh w0, [x2] cmp w0, w5 - beq .L1564 + beq .L1651 umull x2, w0, w4 add x2, x3, x2 - b .L1562 -.L1563: + b .L1649 +.L1650: mov w0, 1 - b .L1561 -.L1564: + b .L1648 +.L1651: mov w0, 0 -.L1561: +.L1648: ret .size test_node_in_list, .-test_node_in_list .align 2 @@ -9569,31 +9870,31 @@ insert_data_list: uxth w0, w0 add x3, x2, :lo12:.LANCHOR2 mov x4, x2 - ldrh w1, [x3,756] + ldrh w1, [x3,764] cmp w1, w0 - bls .L1567 + bls .L1654 mov w7, 6 - ldr x11, [x3,1280] + ldr x11, [x3,1288] mov w1, -1 umull x10, w0, w7 add x5, x11, x10 strh w1, [x5,2] strh w1, [x11,x10] - ldr x1, [x3,3568] - cbnz x1, .L1568 - str x5, [x3,3568] - b .L1567 -.L1568: + ldr x1, [x3,3576] + cbnz x1, .L1655 + str x5, [x3,3576] + b .L1654 +.L1655: ubfiz x8, x0, 1, 16 - ldr x13, [x3,1184] + ldr x13, [x3,1192] ldrh w2, [x5,4] mov x9, -6148914691236517206 - ldr x12, [x3,1280] + ldr x12, [x3,1288] mov w18, 65535 ldrh w6, [x13,x8] cmp w2, wzr - ldr x14, [x3,1168] - ldrh w17, [x3,756] + ldr x14, [x3,1176] + ldrh w17, [x3,764] mov w3, 0 mul w6, w6, w2 sub x2, x1, x12 @@ -9603,13 +9904,13 @@ insert_data_list: add x9, x14, x8 mov w8, w7 uxth w2, w2 -.L1576: +.L1663: add w3, w3, 1 cmp w0, w2 uxth w3, w3 - beq .L1567 + beq .L1654 cmp w3, w17 - bhi .L1567 + bhi .L1654 ubfiz x15, x2, 1, 16 ldrh w16, [x1,4] cmp w16, wzr @@ -9617,47 +9918,47 @@ insert_data_list: mul w7, w7, w16 csinv w7, w7, wzr, ne cmp w7, w6 - bne .L1572 + bne .L1659 ldrh w15, [x14,x15] ldrh w7, [x9] cmp w15, w7 - bcc .L1574 - b .L1573 -.L1572: - bhi .L1573 -.L1574: + bcc .L1661 + b .L1660 +.L1659: + bhi .L1660 +.L1661: ldrh w7, [x1] cmp w7, w18 - bne .L1575 + bne .L1662 strh w2, [x5,2] add x2, x4, :lo12:.LANCHOR2 strh w0, [x1] - str x5, [x2,3576] - b .L1567 -.L1575: + str x5, [x2,3584] + b .L1654 +.L1662: umull x1, w7, w8 mov w2, w7 add x1, x12, x1 - b .L1576 -.L1573: + b .L1663 +.L1660: strh w2, [x11,x10] ldrh w2, [x1,2] strh w2, [x5,2] add x2, x4, :lo12:.LANCHOR2 - ldr x3, [x2,3568] + ldr x3, [x2,3576] cmp x1, x3 - bne .L1577 + bne .L1664 strh w0, [x1,2] - str x5, [x2,3568] - b .L1567 -.L1577: + str x5, [x2,3576] + b .L1654 +.L1664: ldrh w3, [x1,2] mov w4, 6 - ldr x2, [x2,1280] + ldr x2, [x2,1288] umull x3, w3, w4 strh w0, [x2,x3] strh w0, [x1,2] -.L1567: +.L1654: mov w0, 0 ret .size insert_data_list, .-insert_data_list @@ -9670,9 +9971,9 @@ INSERT_DATA_LIST: bl insert_data_list adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,3584] + ldrh w1, [x0,3592] add w1, w1, 1 - strh w1, [x0,3584] + strh w1, [x0,3592] ldp x29, x30, [sp], 16 ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST @@ -9683,66 +9984,66 @@ insert_free_list: uxth w0, w0 mov w7, 65535 cmp w0, w7 - beq .L1582 + beq .L1669 adrp x2, .LANCHOR2 mov w6, 6 add x5, x2, :lo12:.LANCHOR2 mov w1, -1 umull x8, w0, w6 mov x3, x2 - ldr x9, [x5,1280] + ldr x9, [x5,1288] add x4, x9, x8 strh w1, [x4,2] strh w1, [x9,x8] - ldr x1, [x5,3592] - cbnz x1, .L1583 - str x4, [x5,3592] - b .L1582 -.L1583: - ldr x11, [x5,1168] + ldr x1, [x5,3600] + cbnz x1, .L1670 + str x4, [x5,3600] + b .L1669 +.L1670: + ldr x11, [x5,1176] ubfiz x2, x0, 1, 16 - ldr x10, [x5,1280] + ldr x10, [x5,1288] mov x5, -6148914691236517206 ldrh w12, [x11,x2] sub x2, x1, x10 asr x2, x2, 1 madd x2, x5, x2, x2 uxth w2, w2 -.L1586: +.L1673: ubfiz x5, x2, 1, 16 ldrh w5, [x11,x5] cmp w5, w12 - bcs .L1584 + bcs .L1671 ldrh w5, [x1] cmp w5, w7 - bne .L1585 + bne .L1672 strh w2, [x4,2] strh w0, [x1] - b .L1582 -.L1585: + b .L1669 +.L1672: umull x1, w5, w6 mov w2, w5 add x1, x10, x1 - b .L1586 -.L1584: + b .L1673 +.L1671: ldrh w5, [x1,2] strh w5, [x4,2] strh w2, [x9,x8] add x2, x3, :lo12:.LANCHOR2 - ldr x3, [x2,3592] + ldr x3, [x2,3600] cmp x1, x3 - bne .L1587 + bne .L1674 strh w0, [x1,2] - str x4, [x2,3592] - b .L1582 -.L1587: + str x4, [x2,3600] + b .L1669 +.L1674: ldrh w3, [x1,2] mov w4, 6 - ldr x2, [x2,1280] + ldr x2, [x2,1288] umull x3, w3, w4 strh w0, [x2,x3] strh w0, [x1,2] -.L1582: +.L1669: mov w0, 0 ret .size insert_free_list, .-insert_free_list @@ -9755,9 +10056,9 @@ INSERT_FREE_LIST: bl insert_free_list adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,3600] + ldrh w1, [x0,3608] add w1, w1, 1 - strh w1, [x0,3600] + strh w1, [x0,3608] ldp x29, x30, [sp], 16 ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST @@ -9772,43 +10073,43 @@ List_remove_node: ldr x3, [x0] mov w7, 65535 umull x1, w1, w5 - ldr x2, [x6,1280] + ldr x2, [x6,1288] add x4, x2, x1 cmp x4, x3 - bne .L1590 + bne .L1677 ldrh w3, [x2,x1] cmp w3, w7 - bne .L1591 + bne .L1678 str xzr, [x0] - b .L1592 -.L1591: + b .L1679 +.L1678: umull x3, w3, w5 add x3, x2, x3 str x3, [x0] mov w0, -1 strh w0, [x3,2] - b .L1592 -.L1590: + b .L1679 +.L1677: ldrh w0, [x2,x1] ldrh w3, [x4,2] cmp w0, w7 - bne .L1593 + bne .L1680 cmp w3, w0 - beq .L1592 + beq .L1679 umull x3, w3, w5 mov w0, -1 strh w0, [x2,x3] - b .L1592 -.L1593: + b .L1679 +.L1680: umull x0, w0, w5 add x0, x2, x0 strh w3, [x0,2] ldrh w3, [x4,2] - ldr x0, [x6,1280] + ldr x0, [x6,1288] ldrh w7, [x2,x1] umull x3, w3, w5 strh w7, [x0,x3] -.L1592: +.L1679: mov w0, -1 strh w0, [x2,x1] strh w0, [x4,2] @@ -9825,14 +10126,14 @@ List_pop_index_node: str x19, [sp,16] mov w19, 65535 ldr x2, [x0] - cbz x2, .L1595 - adrp x3, .LANCHOR2+1280 + cbz x2, .L1682 + adrp x3, .LANCHOR2+1288 mov w5, w19 mov w6, 6 - ldr x4, [x3,#:lo12:.LANCHOR2+1280] -.L1596: - cbnz w1, .L1597 -.L1599: + ldr x4, [x3,#:lo12:.LANCHOR2+1288] +.L1683: + cbnz w1, .L1684 +.L1686: sub x2, x2, x4 mov x1, -6148914691236517206 asr x2, x2, 1 @@ -9840,17 +10141,17 @@ List_pop_index_node: uxth w19, w2 mov w1, w19 bl List_remove_node - b .L1595 -.L1597: + b .L1682 +.L1684: ldrh w3, [x2] cmp w3, w5 - beq .L1599 + beq .L1686 umull x3, w3, w6 sub w1, w1, #1 add x2, x4, x3 uxth w1, w1 - b .L1596 -.L1595: + b .L1683 +.L1682: mov w0, w19 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -9864,27 +10165,27 @@ List_get_gc_head_node: uxth w3, w0 add x2, x2, :lo12:.LANCHOR2 mov w0, 65535 - ldr x1, [x2,3568] - cbz x1, .L1607 - ldr x4, [x2,1280] + ldr x1, [x2,3576] + cbz x1, .L1694 + ldr x4, [x2,1288] mov w5, 6 -.L1603: - cbz w3, .L1604 +.L1690: + cbz w3, .L1691 ldrh w2, [x1] cmp w2, w0 - beq .L1607 + beq .L1694 umull x2, w2, w5 sub w3, w3, #1 add x1, x4, x2 uxth w3, w3 - b .L1603 -.L1604: + b .L1690 +.L1691: sub x1, x1, x4 mov x0, -6148914691236517206 asr x1, x1, 1 madd x1, x0, x1, x1 uxth w0, w1 -.L1607: +.L1694: ret .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 @@ -9897,23 +10198,23 @@ List_update_data_list: adrp x19, .LANCHOR2 uxth w20, w0 add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,3608] + ldrh w1, [x0,3616] cmp w1, w20 - beq .L1609 - ldrh w1, [x0,3656] + beq .L1696 + ldrh w1, [x0,3664] cmp w1, w20 - beq .L1609 - ldrh w1, [x0,3704] + beq .L1696 + ldrh w1, [x0,3712] cmp w1, w20 - beq .L1609 + beq .L1696 mov w3, 6 - ldr x4, [x0,1280] - ldr x2, [x0,3568] + ldr x4, [x0,1288] + ldr x2, [x0,3576] umull x3, w20, w3 add x1, x4, x3 cmp x1, x2 - beq .L1609 - ldr x5, [x0,1184] + beq .L1696 + ldr x5, [x0,1192] ubfiz x0, x20, 1, 16 ldrh w2, [x5,x0] ldrh w0, [x1,4] @@ -9923,11 +10224,11 @@ List_update_data_list: mov w0, 65535 csinv w2, w2, wzr, ne cmp w1, w0 - bne .L1611 + bne .L1698 ldrh w0, [x4,x3] cmp w0, w1 - beq .L1609 -.L1611: + beq .L1696 +.L1698: mov w0, 6 mov x3, -6148914691236517206 umull x1, w1, w0 @@ -9940,17 +10241,17 @@ List_update_data_list: mul w0, w0, w1 csinv w0, w0, wzr, ne cmp w2, w0 - bcs .L1609 + bcs .L1696 add x19, x19, :lo12:.LANCHOR2 mov w1, w20 - add x0, x19, 3568 + add x0, x19, 3576 bl List_remove_node - ldrh w0, [x19,3584] + ldrh w0, [x19,3592] sub w0, w0, #1 - strh w0, [x19,3584] + strh w0, [x19,3592] mov w0, w20 bl INSERT_DATA_LIST -.L1609: +.L1696: mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -9976,76 +10277,76 @@ ftl_free_no_use_map_blk: mov x0, x21 bl ftl_memset mov w0, 0 -.L1616: +.L1703: ldrh w1, [x19,6] cmp w1, w0 - bls .L1638 + bls .L1725 ubfiz x1, x0, 2, 16 ldr w2, [x20,x1] mov w1, 0 ubfx x2, x2, 10, 16 -.L1617: +.L1704: ldrh w3, [x19,10] cmp w3, w1 - bls .L1639 + bls .L1726 ubfiz x3, x1, 1, 16 ldrh w4, [x22,x3] cmp w2, w4 - bne .L1618 - cbz w4, .L1618 + bne .L1705 + cbz w4, .L1705 ldrh w4, [x21,x3] add w4, w4, 1 strh w4, [x21,x3] -.L1618: +.L1705: add w1, w1, 1 uxth w1, w1 - b .L1617 -.L1639: + b .L1704 +.L1726: add w0, w0, 1 uxth w0, w0 - b .L1616 -.L1638: - adrp x0, .LANCHOR2+820 + b .L1703 +.L1725: + adrp x0, .LANCHOR2+826 mov w23, 0 mov w20, w23 - ldrh w1, [x0,#:lo12:.LANCHOR2+820] + ldrh w1, [x0,#:lo12:.LANCHOR2+826] ldrh w0, [x19] strh w1, [x21,x0,lsl 1] ldrh w24, [x21] -.L1621: +.L1708: ldrh w0, [x19,10] cmp w0, w20 - bls .L1640 + bls .L1727 ubfiz x2, x20, 1, 16 ldrh w1, [x21,x2] cmp w24, w1 - bls .L1622 + bls .L1709 ldrh w0, [x22,x2] add x25, x22, x2 - cbnz w0, .L1623 - b .L1624 -.L1622: - cbnz w1, .L1624 + cbnz w0, .L1710 + b .L1711 +.L1709: + cbnz w1, .L1711 ldrh w0, [x22,x2] add x25, x22, x2 - cbz w0, .L1624 -.L1626: + cbz w0, .L1711 +.L1713: mov w1, 1 bl FtlFreeSysBlkQueueIn strh wzr, [x25] ldrh w0, [x19,8] sub w0, w0, #1 strh w0, [x19,8] -.L1624: +.L1711: add w20, w20, 1 uxth w20, w20 - b .L1621 -.L1623: + b .L1708 +.L1710: mov w23, w20 mov w24, w1 - cbz w1, .L1626 - b .L1624 -.L1640: + cbz w1, .L1713 + b .L1711 +.L1727: mov w0, w23 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -10065,12 +10366,12 @@ ftl_map_blk_alloc_new_blk: mov w20, 0 ldrh w2, [x0,10] ldr x1, [x0,16] -.L1642: +.L1729: cmp w20, w2 - beq .L1646 + beq .L1733 mov x22, x1 ldrh w21, [x1],2 - cbnz w21, .L1643 + cbnz w21, .L1730 mov x19, x0 bl FtlFreeSysBlkQueueOut strh w0, [x22] @@ -10078,15 +10379,15 @@ ftl_map_blk_alloc_new_blk: sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth - bcs .L1644 - adrp x2, .LANCHOR2+1470 + bcs .L1731 + adrp x2, .LANCHOR2+1478 adrp x0, .LC36 add x0, x0, :lo12:.LC36 - ldrh w2, [x2,#:lo12:.LANCHOR2+1470] + ldrh w2, [x2,#:lo12:.LANCHOR2+1478] bl printk -.L1645: - b .L1645 -.L1644: +.L1732: + b .L1732 +.L1731: ldr w0, [x19,48] strh w21, [x19,2] add w0, w0, 1 @@ -10095,12 +10396,12 @@ ftl_map_blk_alloc_new_blk: strh w20, [x19] add w0, w0, 1 strh w0, [x19,8] - b .L1646 -.L1643: + b .L1733 +.L1730: add w20, w20, 1 uxth w20, w20 - b .L1642 -.L1646: + b .L1729 +.L1733: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10114,113 +10415,127 @@ FtlMapWritePage: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x25, x26, [sp,64] - adrp x25, .LANCHOR2 - mov x26, x2 stp x23, x24, [sp,48] - stp x27, x28, [sp,80] + adrp x26, .LANCHOR2 adrp x23, .LC37 - add x28, x25, :lo12:.LANCHOR2 stp x21, x22, [sp,32] + stp x27, x28, [sp,80] stp x19, x20, [sp,16] - mov w24, w1 + mov w25, w1 mov x19, x0 + mov x27, x2 mov w22, 0 - add x0, x23, :lo12:.LC37 - mov w27, 65535 - add x21, x28, 1408 - str x0, [x29,104] -.L1649: - add x0, x25, :lo12:.LANCHOR2 + mov w28, 65535 + add x21, x26, :lo12:.LANCHOR2 + add x23, x23, :lo12:.LC37 +.L1736: + add x0, x26, :lo12:.LANCHOR2 adrp x20, .LANCHOR2 - ldr w1, [x0,896] + ldr w1, [x0,900] add w1, w1, 1 - str w1, [x0,896] - ldrh w0, [x0,820] + str w1, [x0,900] + ldrh w0, [x0,826] ldrh w1, [x19,2] sub w0, w0, #1 cmp w1, w0 - bge .L1650 + bge .L1737 ldrh w0, [x19] - cmp w0, w27 - bne .L1651 -.L1650: + cmp w0, w28 + bne .L1738 +.L1737: mov x0, x19 bl Ftl_write_map_blk_to_last_page -.L1651: - ldr w1, [x28,1400] - cbnz w1, .L1652 +.L1738: + ldr w1, [x21,1408] + cbnz w1, .L1739 ldrh w2, [x19] + add x3, x21, 1416 ldr x0, [x19,16] - ldrh w23, [x0,x2,lsl 1] + str x3, [x29,104] + ldrh w24, [x0,x2,lsl 1] mov w2, 16 ldrh w0, [x19,2] - str x26, [x21,8] - orr w0, w0, w23, lsl 10 - str w0, [x21,4] - ldr x0, [x28,1112] - str x0, [x21,16] + str x27, [x21,1424] + orr w0, w0, w24, lsl 10 + str w0, [x21,1420] + ldr x0, [x21,1120] + str x0, [x21,1432] bl ftl_memset - ldr x0, [x21,16] - ldr w1, [x19,48] - str w1, [x0,4] - strh w24, [x0,8] - ldrh w1, [x19,4] - strh w1, [x0] + ldr x3, [x29,104] + ldr w0, [x19,48] + ldr x2, [x3,16] + str w0, [x2,4] + strh w25, [x2,8] + ldrh w0, [x19,4] + strh w0, [x2] + adrp x0, .LANCHOR0+88 + strh w24, [x2,2] + ldrb w0, [x0,#:lo12:.LANCHOR0+88] + cbz w0, .L1740 + ldr x0, [x3,8] + ldrh w1, [x21,834] + str x2, [x29,104] + bl js_hash + ldr x2, [x29,104] + str w0, [x2,12] +.L1740: + add x4, x21, 1416 mov w1, 1 - strh w23, [x0,2] - mov w3, w1 - mov x0, x21 mov w2, w1 + mov x0, x4 + mov w3, w1 + str x4, [x29,104] bl FlashProgPages - ldrh w3, [x19,2] - add w3, w3, 1 - uxth w3, w3 - strh w3, [x19,2] - ldr w0, [x21] - cmn w0, #1 - bne .L1653 - ldr x0, [x29,104] + ldrh w1, [x19,2] + ldr x4, [x29,104] + add w1, w1, 1 + uxth w1, w1 + strh w1, [x19,2] + ldr w2, [x21,1416] + cmn w2, #1 + bne .L1741 + ldr w1, [x4,4] + mov x0, x23 add w22, w22, 1 - ldr w1, [x21,4] - uxth w22, w22 bl printk + uxth w22, w22 ldrh w0, [x19,2] cmp w0, 2 - bhi .L1654 - ldrh w0, [x28,820] + bhi .L1742 + ldrh w0, [x21,826] sub w0, w0, #1 strh w0, [x19,2] -.L1654: +.L1742: cmp w22, 3 - bls .L1649 + bls .L1736 add x20, x20, :lo12:.LANCHOR2 adrp x0, .LC38 add x0, x0, :lo12:.LC38 mov w2, w22 - ldr w1, [x20,1412] + ldr w1, [x20,1420] bl printk mov w0, 1 - str w0, [x20,1400] - b .L1652 -.L1653: - cbz w0, .L1656 - strh w23, [x19,60] -.L1656: - cmp w3, 1 - beq .L1657 - cmp w0, 256 - beq .L1657 + str w0, [x20,1408] + b .L1739 +.L1741: + cbz w2, .L1744 + strh w24, [x19,60] +.L1744: + cmp w1, 1 + beq .L1745 + cmp w2, 256 + beq .L1745 ldr w0, [x19,56] - cbz w0, .L1658 -.L1657: + cbz w0, .L1746 +.L1745: str wzr, [x19,56] - b .L1649 -.L1658: + b .L1736 +.L1746: add x20, x20, :lo12:.LANCHOR2 ldr x0, [x19,40] - ldr w1, [x20,1412] - str w1, [x0,w24,uxtw 2] -.L1652: + ldr w1, [x20,1420] + str w1, [x0,w25,uxtw 2] +.L1739: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10250,12 +10565,12 @@ ftl_map_blk_gc: ldrh w2, [x19,8] sub w1, w1, #4 cmp w2, w1 - blt .L1663 + blt .L1754 ubfiz x1, x0, 1, 16 ldrh w24, [x21,x1] - cbz w24, .L1663 + cbz w24, .L1754 ldr w0, [x19,52] - cbnz w0, .L1663 + cbnz w0, .L1754 mov w2, 1 str w2, [x19,52] strh w0, [x21,x1] @@ -10264,26 +10579,26 @@ ftl_map_blk_gc: sub w0, w0, #1 strh w0, [x19,8] add x0, x20, :lo12:.LANCHOR2 - ldrh w0, [x0,820] + ldrh w0, [x0,826] cmp w1, w0 - bcc .L1664 + bcc .L1755 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L1664: +.L1755: add x26, x20, :lo12:.LANCHOR2 mov w21, 0 - add x22, x26, 1408 -.L1665: + add x22, x26, 1416 +.L1756: ldrh w0, [x19,6] cmp w0, w21 - bls .L1674 + bls .L1765 ubfiz x0, x21, 2, 16 add x27, x25, x0 ldr w1, [x25,x0] cmp w24, w1, lsr 10 - bne .L1666 - ldr x1, [x26,1056] - ldr x23, [x26,1112] + bne .L1757 + ldr x1, [x26,1064] + ldr x23, [x26,1120] str x1, [x22,8] mov w1, 1 str x23, [x22,16] @@ -10294,48 +10609,48 @@ ftl_map_blk_gc: bl FlashReadPages ldr w0, [x22] cmn w0, #1 - bne .L1667 -.L1669: + bne .L1758 +.L1760: add x20, x20, :lo12:.LANCHOR2 str wzr, [x27] adrp x0, .LC39 ldrh w2, [x23,8] add x0, x0, :lo12:.LC39 - ldr w1, [x20,1412] + ldr w1, [x20,1420] bl printk mov w0, 1 - str w0, [x20,1400] - b .L1668 -.L1667: + str w0, [x20,1408] + b .L1759 +.L1758: ldrh w0, [x23,8] cmp w0, w21 - bne .L1669 + bne .L1760 ldrh w1, [x23] ldrh w0, [x19,4] cmp w1, w0 - bne .L1669 + bne .L1760 ldr x2, [x22,8] mov x0, x19 mov w1, w21 bl FtlMapWritePage -.L1666: +.L1757: add w21, w21, 1 uxth w21, w21 - b .L1665 -.L1674: + b .L1756 +.L1765: mov w0, w24 mov w1, 1 bl FtlFreeSysBlkQueueIn str wzr, [x19,52] -.L1663: +.L1754: add x20, x20, :lo12:.LANCHOR2 ldrh w1, [x19,2] - ldrh w0, [x20,820] + ldrh w0, [x20,826] cmp w1, w0 - bcc .L1668 + bcc .L1759 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L1668: +.L1759: mov w0, 0 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -10353,18 +10668,18 @@ Ftl_write_map_blk_to_last_page: add x29, sp, 0 stp x21, x22, [sp,32] adrp x21, .LANCHOR2 - str x23, [sp,48] add x1, x21, :lo12:.LANCHOR2 stp x19, x20, [sp,16] - ldr w20, [x1,1400] + stp x23, x24, [sp,48] + ldr w20, [x1,1408] ldr x22, [x0,16] - ldr x23, [x0,40] - cbnz w20, .L1676 + ldr x24, [x0,40] + cbnz w20, .L1767 mov x19, x0 ldrh w0, [x0] mov w2, 65535 cmp w0, w2 - bne .L1677 + bne .L1768 ldrh w0, [x19,8] add w0, w0, 1 strh w0, [x19,8] @@ -10375,56 +10690,65 @@ Ftl_write_map_blk_to_last_page: strh w20, [x19] add w0, w0, 1 str w0, [x19,48] - b .L1676 -.L1677: + b .L1767 +.L1768: ubfiz x0, x0, 1, 16 - ldr w2, [x19,48] - ldrh w22, [x22,x0] - ldrh w0, [x19,2] - orr w0, w0, w22, lsl 10 - str w0, [x1,1412] - ldr x0, [x1,1048] - str x0, [x1,1416] - ldr x0, [x1,1112] - str x0, [x1,1424] - str w2, [x0,4] - mov w2, -1291 - strh w2, [x0,8] - ldrh w2, [x19,4] - strh w2, [x0] - strh w22, [x0,2] - ldrh w2, [x1,820] - ldr x0, [x1,1048] + ldrh w2, [x19,2] + ldrh w23, [x22,x0] + ldr x22, [x1,1120] + str x22, [x1,1432] + orr w2, w2, w23, lsl 10 + str w2, [x1,1420] + ldr x2, [x1,1056] + str x2, [x1,1424] + ldr w0, [x19,48] + str w0, [x22,4] + mov w0, -1291 + strh w0, [x22,8] + ldrh w0, [x19,4] + strh w0, [x22] + strh w23, [x22,2] + ldrh w2, [x1,826] + ldr x0, [x1,1056] mov w1, 255 lsl w2, w2, 3 bl ftl_memset mov w0, w20 -.L1678: +.L1769: ldrh w1, [x19,6] cmp w1, w0 - bls .L1681 + bls .L1776 ubfiz x3, x0, 2, 32 - ldr w1, [x23,x3] - cmp w22, w1, lsr 10 - bne .L1679 + ldr w1, [x24,x3] + cmp w23, w1, lsr 10 + bne .L1770 add x2, x21, :lo12:.LANCHOR2 add w20, w20, 1 uxth w20, w20 - ldr x4, [x2,1048] + ldr x4, [x2,1056] ubfiz x1, x20, 3, 16 str w0, [x4,x1] - ldr x2, [x2,1048] - ldr w3, [x23,x3] + ldr x2, [x2,1056] + ldr w3, [x24,x3] add x1, x2, x1 str w3, [x1,4] -.L1679: +.L1770: add w0, w0, 1 uxth w0, w0 - b .L1678 -.L1681: + b .L1769 +.L1776: + adrp x0, .LANCHOR0+88 + ldrb w0, [x0,#:lo12:.LANCHOR0+88] + cbz w0, .L1772 + add x1, x21, :lo12:.LANCHOR2 + ldr x0, [x1,1424] + ldrh w1, [x1,834] + bl js_hash + str w0, [x22,12] +.L1772: mov w1, 1 add x0, x21, :lo12:.LANCHOR2 - add x0, x0, 1408 + add x0, x0, 1416 mov w2, w1 mov w3, 0 bl FlashProgPages @@ -10433,11 +10757,11 @@ Ftl_write_map_blk_to_last_page: strh w0, [x19,2] mov x0, x19 bl ftl_map_blk_gc -.L1676: +.L1767: mov w0, 0 - ldr x23, [sp,48] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] ldp x29, x30, [sp], 64 ret .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page @@ -10451,13 +10775,13 @@ flush_l2p_region: adrp x20, .LANCHOR2 ubfiz x19, x0, 4, 16 add x20, x20, :lo12:.LANCHOR2 - add x0, x20, 3752 - ldr x1, [x20,1264] + add x0, x20, 3760 + ldr x1, [x20,1272] add x2, x1, x19 ldrh w1, [x1,x19] ldr x2, [x2,8] bl FtlMapWritePage - ldr x0, [x20,1264] + ldr x0, [x20,1272] add x19, x0, x19 ldr w0, [x19,4] and w0, w0, 2147483647 @@ -10476,65 +10800,65 @@ select_l2p_ram_region: add x1, x0, :lo12:.LANCHOR2 mov x3, x0 mov w5, 65535 - ldrh w2, [x1,858] - ldr x1, [x1,1264] -.L1684: + ldrh w2, [x1,862] + ldr x1, [x1,1272] +.L1779: uxth w0, w4 cmp w0, w2 - bcs .L1700 + bcs .L1795 add x4, x4, 1 add x6, x1, x4, lsl 4 ldrh w6, [x6,-16] cmp w6, w5 - bne .L1684 - b .L1685 -.L1700: + bne .L1779 + b .L1780 +.L1795: mov w0, w2 mov x4, 0 mov w7, -2147483648 -.L1687: +.L1782: uxth w6, w4 cmp w6, w2 - bcs .L1701 + bcs .L1796 add x5, x1, x4, lsl 4 ldr w5, [x5,4] - tbnz w5, #31, .L1696 + tbnz w5, #31, .L1791 cmp w5, w7 - bcc .L1688 -.L1696: + bcc .L1783 +.L1791: mov w5, w7 mov w6, w0 -.L1688: +.L1783: add x4, x4, 1 mov w7, w5 mov w0, w6 - b .L1687 -.L1701: + b .L1782 +.L1796: cmp w0, w2 - bcc .L1685 + bcc .L1780 add x0, x3, :lo12:.LANCHOR2 add x1, x1, 4 mov w4, -1 mov w3, 0 - ldrh w5, [x0,3816] + ldrh w5, [x0,3824] mov w0, w2 -.L1691: +.L1786: cmp w3, w2 - beq .L1685 + beq .L1780 ldr w7, [x1] cmp w7, w4 - bcs .L1692 + bcs .L1787 ldrh w6, [x1,-4] cmp w6, w5 csel w4, w4, w7, eq cmp w6, w5 csel w0, w0, w3, eq -.L1692: +.L1787: add w3, w3, 1 add x1, x1, 16 uxth w3, w3 - b .L1691 -.L1685: + b .L1786 +.L1780: ret .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 @@ -10545,162 +10869,174 @@ log2phys: add x29, sp, 0 stp x21, x22, [sp,32] adrp x21, .LANCHOR2 - add x3, x21, :lo12:.LANCHOR2 + add x4, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp,16] stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - stp x19, x20, [sp,16] - mov x26, x1 - mov w27, w2 - ldrh w1, [x3,826] - mov x2, 1 - ldr x19, [x3,1264] - add w1, w1, 7 - lsr w25, w0, w1 - lsl x1, x2, x1 - sub w1, w1, #1 - and w23, w1, w0 - ldrh w1, [x3,858] - uxth w24, w25 - uxth w0, w23 - str w0, [x29,108] + ldr w5, [x4,1404] + ldrh w3, [x4,832] + cmp w0, w5 + bcs .L1798 + add w27, w3, 7 + str x1, [x29,104] + lsr w28, w0, w27 + mov w25, w0 + str w2, [x29,100] mov x0, 0 -.L1703: - uxth x20, w0 - cmp w20, w1 - bcs .L1718 + uxth w22, w28 + ldrh w1, [x4,862] + ldr x19, [x4,1272] + b .L1799 +.L1798: + mov w0, -1 + cbnz w2, .L1800 + str w0, [x1] + b .L1800 +.L1804: add x0, x0, 1 add x2, x19, x0, lsl 4 ldrh w2, [x2,-16] - cmp w2, w24 - bne .L1703 -.L1704: - ldr w23, [x29,108] - cbnz w27, .L1705 - add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,1264] - add x1, x1, x20, lsl 4 - ldr x0, [x1,8] - ldr w0, [x0,x23,lsl 2] - str w0, [x26] - b .L1706 -.L1705: - add x1, x21, :lo12:.LANCHOR2 - lsl x0, x20, 4 - ldr w3, [x26] - ldr x2, [x1,1264] - add x2, x2, x0 - ldr x2, [x2,8] - str w3, [x2,x23,lsl 2] - strh w24, [x1,3816] - ldr x2, [x1,1264] - add x0, x2, x0 - ldr w2, [x0,4] - orr w2, w2, -2147483648 - str w2, [x0,4] -.L1706: - add x21, x21, :lo12:.LANCHOR2 - ldr x0, [x21,1264] - add x20, x0, x20, lsl 4 - ldr w0, [x20,4] - cmn w0, #1 - beq .L1715 - add w0, w0, 1 - str w0, [x20,4] - b .L1715 -.L1718: + cmp w2, w22 + beq .L1801 +.L1799: + uxth x20, w0 + cmp w20, w1 + bcc .L1804 bl select_l2p_ram_region uxth x20, w0 - ubfiz x22, x20, 4, 16 + ubfiz x26, x20, 4, 16 mov w2, 65535 - add x1, x19, x22 - ldrh w3, [x19,x22] + add x1, x19, x26 + ldrh w3, [x19,x26] cmp w3, w2 - beq .L1709 - ldr w1, [x1,4] - tbz w1, #31, .L1709 - bl flush_l2p_region -.L1709: + bne .L1812 +.L1805: add x19, x21, :lo12:.LANCHOR2 - ubfiz x0, x24, 2, 16 - ldr x1, [x19,1240] - ldr w23, [x1,x0] - cbnz w23, .L1710 - ldr x0, [x19,1264] + ubfiz x0, x22, 2, 16 + ldr x1, [x19,1248] + ldr w24, [x1,x0] + cbnz w24, .L1806 + ldr x0, [x19,1272] mov w1, 255 - ldrh w2, [x19,828] - add x0, x0, x22 + ldrh w2, [x19,834] + add x0, x0, x26 ldr x0, [x0,8] bl ftl_memset - ldr x0, [x19,1264] - strh w24, [x0,x22] - ldr x0, [x19,1264] - add x22, x0, x22 - str w23, [x22,4] - b .L1704 -.L1710: - ldr x0, [x19,1264] + ldr x0, [x19,1272] + strh w22, [x0,x26] + ldr x0, [x19,1272] + add x26, x0, x26 + str w24, [x26,4] +.L1801: + mov x1, 1 + lsl x3, x1, x27 + ldr w1, [x29,100] + sub w3, w3, #1 + and w0, w25, w3 + uxth x0, w0 + cbnz w1, .L1802 + add x1, x21, :lo12:.LANCHOR2 + ldr x1, [x1,1272] + add x1, x1, x20, lsl 4 + ldr x1, [x1,8] + ldr w0, [x1,x0,lsl 2] + ldr x1, [x29,104] + str w0, [x1] + b .L1803 +.L1802: + ldr x2, [x29,104] + lsl x1, x20, 4 + ldr w4, [x2] + add x2, x21, :lo12:.LANCHOR2 + ldr x3, [x2,1272] + add x3, x3, x1 + ldr x3, [x3,8] + str w4, [x3,x0,lsl 2] + strh w22, [x2,3824] + ldr x0, [x2,1272] + add x0, x0, x1 + ldr w1, [x0,4] + orr w1, w1, -2147483648 + str w1, [x0,4] +.L1803: + add x21, x21, :lo12:.LANCHOR2 + ldr x0, [x21,1272] + add x20, x0, x20, lsl 4 + mov w0, 0 + ldr w1, [x20,4] + cmn w1, #1 + beq .L1800 + add w1, w1, 1 + str w1, [x20,4] + b .L1800 +.L1812: + ldr w1, [x1,4] + tbz w1, #31, .L1805 + bl flush_l2p_region + b .L1805 +.L1806: + ldr x0, [x19,1272] mov w1, 1 - add x28, x19, 1408 + add x23, x19, 1416 mov w2, w1 - add x0, x0, x22 - str w23, [x19,1412] + add x0, x0, x26 + str w24, [x19,1420] ldr x0, [x0,8] - str x0, [x19,1416] - ldr x0, [x19,1112] str x0, [x19,1424] - mov x0, x28 + ldr x0, [x19,1120] + str x0, [x19,1432] + mov x0, x23 bl FlashReadPages - ldr x0, [x19,1424] + ldr x0, [x19,1432] ldrh w0, [x0,8] - cmp w0, w24 - beq .L1711 + cmp w0, w22 + beq .L1807 adrp x0, .LC40 - uxth w1, w25 - mov w2, w23 + uxth w1, w28 + mov w2, w24 add x0, x0, :lo12:.LC40 bl printk mov w2, 4 - ldr x1, [x19,1424] + ldr x1, [x19,1432] adrp x0, .LC17 mov w3, w2 add x0, x0, :lo12:.LC17 bl rknand_print_hex adrp x0, .LC41 - ldr x1, [x19,1240] - ldrh w3, [x19,856] + ldr x1, [x19,1248] + ldrh w3, [x19,860] add x0, x0, :lo12:.LC41 mov w2, 4 bl rknand_print_hex mov w0, 1 - str w0, [x19,1400] - b .L1712 -.L1711: - ldr w0, [x19,1408] + str w0, [x19,1408] + b .L1808 +.L1807: + ldr w0, [x19,1416] cmp w0, 256 - bne .L1712 - and w25, w25, 65535 + bne .L1808 + and w28, w28, 65535 adrp x0, .LC42 - mov w1, w25 - mov w2, w23 + mov w1, w28 + mov w2, w24 add x0, x0, :lo12:.LC42 bl printk - ldr x2, [x19,1264] - add x0, x19, 3752 - mov w1, w25 - add x2, x2, x22 + ldr x2, [x19,1272] + add x0, x19, 3760 + mov w1, w28 + add x2, x2, x26 ldr x2, [x2,8] bl FtlMapWritePage -.L1712: +.L1808: add x1, x21, :lo12:.LANCHOR2 - ldr x0, [x1,1264] - add x0, x0, x22 + ldr x0, [x1,1272] + add x0, x0, x26 str wzr, [x0,4] - ldr x0, [x1,1264] - strh w24, [x0,x22] - b .L1704 -.L1715: - mov w0, 0 + ldr x0, [x1,1272] + strh w22, [x0,x26] + b .L1801 +.L1800: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -10723,21 +11059,21 @@ FtlVendorPartWrite: mov w22, w1 mov w25, w0 add w1, w0, w1 - ldrh w0, [x19,812] + ldrh w0, [x19,820] stp x23, x24, [sp,48] stp x27, x28, [sp,80] cmp w1, w0 mov x24, x2 - ldrh w23, [x19,826] + ldrh w23, [x19,832] mov w21, -1 - bhi .L1720 + bhi .L1814 lsr w23, w25, w23 mov w21, 0 - add x27, x19, 3824 -.L1721: - cbz w22, .L1720 - ldrh w1, [x19,824] - ldr x0, [x19,1232] + add x27, x19, 3832 +.L1815: + cbz w22, .L1814 + ldrh w1, [x19,830] + ldr x0, [x19,1240] udiv w26, w25, w1 ldr w2, [x0,w23,uxtw 2] uxth w0, w22 @@ -10747,9 +11083,9 @@ FtlVendorPartWrite: cmp w20, w22 csel w20, w0, w20, hi cmp w20, w1 - beq .L1723 - cbz w2, .L1723 - ldr x0, [x19,1064] + beq .L1817 + cbz w2, .L1817 + ldr x0, [x19,1072] mov w1, 1 str w2, [x29,108] mov w2, w1 @@ -10757,14 +11093,14 @@ FtlVendorPartWrite: add x0, x29, 104 str xzr, [x29,120] bl FlashReadPages - b .L1724 -.L1723: - ldr x0, [x19,1064] + b .L1818 +.L1817: + ldr x0, [x19,1072] mov w1, 0 - ldrh w2, [x19,828] + ldrh w2, [x19,834] bl ftl_memset -.L1724: - ldr x0, [x19,1064] +.L1818: + ldr x0, [x19,1072] lsl w28, w20, 9 ubfiz x26, x26, 9, 16 mov x1, x24 @@ -10774,15 +11110,15 @@ FtlVendorPartWrite: add w25, w25, w20 bl ftl_memcpy add x24, x24, x28, sxtw - ldr x2, [x19,1064] + ldr x2, [x19,1072] mov w1, w23 mov x0, x27 add w23, w23, 1 bl FtlMapWritePage cmn w0, #1 csinv w21, w21, wzr, ne - b .L1721 -.L1720: + b .L1815 +.L1814: mov w0, w21 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -10808,23 +11144,23 @@ FtlVendorPartRead: mov w22, w1 mov x25, x2 add w2, w0, w1 - ldrh w1, [x3,812] + ldrh w1, [x3,820] mov w23, w0 - ldrh w20, [x3,826] + ldrh w20, [x3,832] cmp w2, w1 mov w0, -1 - bhi .L1735 + bhi .L1829 adrp x26, .LC43 - add x0, x3, 3824 + add x0, x3, 3832 lsr w20, w23, w20 mov w21, 0 mov x28, x3 add x26, x26, :lo12:.LC43 str x0, [x29,104] -.L1736: - cbz w22, .L1744 - ldrh w19, [x28,824] - ldr x0, [x28,1232] +.L1830: + cbz w22, .L1838 + ldrh w19, [x28,830] + ldr x0, [x28,1240] udiv w24, w23, w19 ldr w4, [x0,w20,uxtw 2] uxth w0, w22 @@ -10834,8 +11170,8 @@ FtlVendorPartRead: cmp w19, w22 csel w19, w0, w19, hi lsl w27, w19, 9 - cbz w4, .L1738 - ldr x0, [x28,1064] + cbz w4, .L1832 + ldr x0, [x28,1072] mov w1, 1 str x0, [x29,128] mov w2, w1 @@ -10847,40 +11183,40 @@ FtlVendorPartRead: ldr w0, [x29,120] ldr x4, [x29,96] cmn w0, #1 - ldr w0, [x28,1408] + ldr w0, [x28,1416] csinv w21, w21, wzr, ne cmp w0, 256 - bne .L1740 + bne .L1834 mov w1, w20 mov w2, w4 mov x0, x26 bl printk ldr x0, [x29,104] mov w1, w20 - ldr x2, [x28,1064] + ldr x2, [x28,1072] bl FtlMapWritePage -.L1740: - ldr x1, [x28,1064] +.L1834: + ldr x1, [x28,1072] ubfiz x24, x24, 9, 16 mov x0, x25 mov w2, w27 add x1, x1, x24 bl ftl_memcpy - b .L1741 -.L1738: + b .L1835 +.L1832: mov x0, x25 mov w1, w4 mov w2, w27 bl ftl_memset -.L1741: +.L1835: add w20, w20, 1 sub w22, w22, w19 add w23, w23, w19 add x25, x25, x27, sxtw - b .L1736 -.L1744: + b .L1830 +.L1838: mov w0, w21 -.L1735: +.L1829: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -10890,62 +11226,40 @@ FtlVendorPartRead: ret .size FtlVendorPartRead, .-FtlVendorPartRead .align 2 - .global ftl_vendor_read - .type ftl_vendor_read, %function -ftl_vendor_read: - stp x29, x30, [sp, -16]! - add w0, w0, 256 - add x29, sp, 0 - bl FtlVendorPartRead - ldp x29, x30, [sp], 16 - ret - .size ftl_vendor_read, .-ftl_vendor_read - .align 2 - .global ftl_sys_read - .type ftl_sys_read, %function -ftl_sys_read: - stp x29, x30, [sp, -16]! - add w0, w0, 512 - add x29, sp, 0 - bl FtlVendorPartRead - ldp x29, x30, [sp], 16 - ret - .size ftl_sys_read, .-ftl_sys_read - .align 2 .global FtlUpdateVaildLpn .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: adrp x1, .LANCHOR2 add x3, x1, :lo12:.LANCHOR2 - ldrh w2, [x3,3888] - cbnz w0, .L1748 + ldrh w2, [x3,3896] + cbnz w0, .L1840 cmp w2, 4 - bhi .L1748 + bhi .L1840 add w2, w2, 1 - strh w2, [x3,3888] - b .L1747 -.L1748: + strh w2, [x3,3896] + b .L1839 +.L1840: add x0, x1, :lo12:.LANCHOR2 mov w7, 65535 - strh wzr, [x0,3888] - str wzr, [x0,3892] - ldrh w5, [x0,756] - ldr x6, [x0,1184] + strh wzr, [x0,3896] + str wzr, [x0,3900] + ldrh w5, [x0,764] + ldr x6, [x0,1192] mov x0, 0 -.L1749: +.L1841: cmp w5, w0, uxth - bls .L1747 + bls .L1839 ldrh w4, [x6,x0,lsl 1] cmp w4, w7 - beq .L1750 + beq .L1842 add x3, x1, :lo12:.LANCHOR2 - ldr w2, [x3,3892] + ldr w2, [x3,3900] add w2, w4, w2 - str w2, [x3,3892] -.L1750: + str w2, [x3,3900] +.L1842: add x0, x0, 1 - b .L1749 -.L1747: + b .L1841 +.L1839: ret .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 @@ -10959,41 +11273,41 @@ FtlMapBlkWriteDumpData: ldr w1, [x0,56] ldrh w19, [x0,6] ldr x4, [x0,40] - cbz w1, .L1753 + cbz w1, .L1845 adrp x1, .LANCHOR2 str wzr, [x0,56] add x2, x1, :lo12:.LANCHOR2 mov x21, x1 - ldr w3, [x2,1400] - cbnz w3, .L1753 + ldr w3, [x2,1408] + cbnz w3, .L1845 mov x20, x0 sub w19, w19, #1 - add x0, x2, 1408 - ldr x3, [x2,1112] + add x0, x2, 1416 + ldr x3, [x2,1120] uxth w19, w19 - ldr x1, [x2,1056] + ldr x1, [x2,1064] str x3, [x0,16] ubfiz x3, x19, 2, 16 str x1, [x0,8] ldr w3, [x4,x3] str w3, [x0,4] - cbz w3, .L1757 + cbz w3, .L1849 mov w1, 1 mov w2, w1 bl FlashReadPages - b .L1758 -.L1757: - ldrh w2, [x2,828] + b .L1850 +.L1849: + ldrh w2, [x2,834] mov x0, x1 mov w1, 255 bl ftl_memset -.L1758: +.L1850: add x2, x21, :lo12:.LANCHOR2 mov x0, x20 mov w1, w19 - ldr x2, [x2,1416] + ldr x2, [x2,1424] bl FtlMapWritePage -.L1753: +.L1845: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -11007,188 +11321,197 @@ FtlVpcTblFlush: add x29, sp, 0 stp x21, x22, [sp,32] adrp x22, .LANCHOR2 - str x25, [sp,64] stp x19, x20, [sp,16] add x19, x22, :lo12:.LANCHOR2 stp x23, x24, [sp,48] - ldr w0, [x19,1400] - cbnz w0, .L1761 - ldr x21, [x19,1112] - add x20, x19, 3520 - ldr x1, [x19,1048] - str x1, [x19,1416] - str x21, [x19,1424] - ldrh w2, [x19,3896] + stp x25, x26, [sp,64] + ldr w0, [x19,1408] + cbnz w0, .L1853 + ldr x21, [x19,1120] + add x20, x19, 3528 + ldr x1, [x19,1056] + str x1, [x19,1424] + str x21, [x19,1432] + ldrh w2, [x19,3904] strh w2, [x21,2] mov w2, -3932 strh w2, [x21] str w0, [x21,12] - ldr w2, [x19,3904] + ldr w2, [x19,3912] str w2, [x21,4] str w0, [x21,8] mov w0, 19539 - ldrh w1, [x19,3608] + ldrh w1, [x19,3616] movk w0, 0x4654, lsl 16 strh w1, [x20,14] - ldrh w1, [x19,3610] - ldrb w2, [x19,3614] - str w0, [x19,3520] - mov w0, 80 + ldrh w1, [x19,3618] + ldrb w2, [x19,3622] + str w0, [x19,3528] + mov w0, 86 orr w1, w2, w1, lsl 6 strh w1, [x20,16] - ldrh w1, [x19,3656] + ldrh w1, [x19,3664] movk w0, 0x5000, lsl 16 strh w1, [x20,18] - ldrh w1, [x19,3658] - ldrb w2, [x19,3662] + ldrh w1, [x19,3666] str w0, [x20,4] - ldrh w0, [x19,3902] - orr w1, w2, w1, lsl 6 + ldrb w2, [x19,3670] + ldrh w0, [x19,3910] strh w0, [x20,8] - ldrh w0, [x19,770] + orr w1, w2, w1, lsl 6 + ldrh w0, [x19,778] strb w0, [x20,10] - ldrb w0, [x19,3616] + ldrb w0, [x19,3624] strb w0, [x20,11] strh w1, [x20,20] - ldrb w0, [x19,3664] - ldrh w1, [x19,3704] + ldrb w0, [x19,3672] + ldrh w1, [x19,3712] strb w0, [x20,12] strh w1, [x20,22] - ldrh w1, [x19,3706] - ldrb w0, [x19,3712] + ldrh w1, [x19,3714] + ldrb w0, [x19,3720] strb w0, [x20,13] - ldr w0, [x19,904] + ldr w0, [x19,908] str w0, [x20,32] - ldr w0, [x19,872] - str w0, [x20,40] ldr w0, [x19,876] - ldrb w2, [x19,3710] + str w0, [x20,40] + ldr w0, [x19,880] + ldrb w2, [x19,3718] str w0, [x20,36] - ldrh w0, [x19,948] + ldrh w0, [x19,952] orr w1, w2, w1, lsl 6 strh w0, [x20,44] - ldrh w0, [x19,950] + ldrh w0, [x19,954] strh w0, [x20,46] - ldrh w2, [x19,828] - ldr x0, [x19,1416] + ldrh w2, [x19,834] + ldr x0, [x19,1424] strh w1, [x20,24] mov w1, 255 bl ftl_memset - ldr x0, [x19,1416] + ldr x0, [x19,1424] mov x1, x20 mov w2, 48 + adrp x20, .LANCHOR0 bl ftl_memcpy - ldr x0, [x19,1416] - ldrh w2, [x19,756] - ldr x1, [x19,1184] + ldr x0, [x19,1424] + ldrh w2, [x19,764] + ldr x1, [x19,1192] add x0, x0, 48 lsl w2, w2, 1 bl ftl_memcpy - ldrh w2, [x19,756] - ldr x1, [x19,1416] + ldrh w2, [x19,764] + add x1, x20, :lo12:.LANCHOR0 + ldr x3, [x19,1424] uxth x0, w2 - lsr w2, w2, 3 + ldr x1, [x1,16] add x0, x0, 24 - add w2, w2, 4 + lsr w2, w2, 3 lsr x0, x0, 1 - add x0, x1, x0, lsl 2 - adrp x1, .LANCHOR0+16 - ldr x1, [x1,#:lo12:.LANCHOR0+16] + add w2, w2, 4 + add x0, x3, x0, lsl 2 bl ftl_memcpy - ldrh w0, [x19,860] - cbz w0, .L1762 - ldrh w0, [x19,756] - ldrh w2, [x19,856] + ldrh w0, [x19,864] + cbz w0, .L1854 + ldrh w0, [x19,764] + ldrh w2, [x19,860] lsr w1, w0, 3 add w0, w1, w0, lsl 1 - ldr x1, [x19,1416] + ldr x1, [x19,1424] add w0, w0, 52 lsl w2, w2, 2 and x0, x0, 65532 add x0, x1, x0 - ldr x1, [x19,1240] + ldr x1, [x19,1248] bl ftl_memcpy -.L1762: +.L1854: mov w0, 0 - mov w20, 0 + mov w23, 0 mov w25, 65535 add x19, x22, :lo12:.LANCHOR2 bl FtlUpdateVaildLpn -.L1763: - ldrh w1, [x19,3896] - ldr x0, [x19,1048] - ldrh w2, [x19,3898] - str x0, [x19,1416] - ldr x0, [x19,1112] +.L1855: + ldrh w1, [x19,3904] + ldr x0, [x19,1056] + ldrh w2, [x19,3906] str x0, [x19,1424] + ldr x0, [x19,1120] + str x0, [x19,1432] orr w0, w2, w1, lsl 10 - str w0, [x19,1412] - ldrh w0, [x19,820] + str w0, [x19,1420] + ldrh w0, [x19,826] sub w0, w0, #1 cmp w2, w0 - blt .L1764 - ldrh w25, [x19,3900] - strh wzr, [x19,3898] - strh w1, [x19,3900] + blt .L1856 + ldrh w25, [x19,3908] + strh wzr, [x19,3906] + strh w1, [x19,3908] bl FtlFreeSysBlkQueueOut - ldr w1, [x19,872] - str w1, [x19,3904] + ldr w1, [x19,876] + str w1, [x19,3912] add w2, w1, 1 - str w2, [x19,872] + str w2, [x19,876] ubfiz w2, w0, 10, 16 - str w2, [x19,1412] - strh w0, [x19,3896] + str w2, [x19,1420] + strh w0, [x19,3904] str w1, [x21,4] strh w0, [x21,2] -.L1764: +.L1856: + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0,88] + cbz w0, .L1857 + ldr x0, [x19,1056] + ldrh w1, [x19,834] + bl js_hash + str w0, [x21,12] +.L1857: mov w1, 1 - add x0, x19, 1408 + add x0, x19, 1416 mov w2, w1 mov w3, w1 bl FlashProgPages - ldrh w1, [x19,3898] - ldr w2, [x19,1408] + ldrh w1, [x19,3906] + ldr w2, [x19,1416] add w1, w1, 1 cmn w2, #1 uxth w1, w1 - strh w1, [x19,3898] - bne .L1765 + strh w1, [x19,3906] + bne .L1858 cmp w1, 1 - bne .L1766 - ldrh w1, [x19,820] + bne .L1859 + ldrh w1, [x19,826] sub w1, w1, #1 - strh w1, [x19,3898] -.L1766: - add w20, w20, 1 - uxth w20, w20 - cmp w20, 3 - bls .L1763 + strh w1, [x19,3906] +.L1859: + add w23, w23, 1 + uxth w23, w23 + cmp w23, 3 + bls .L1855 add x22, x22, :lo12:.LANCHOR2 adrp x0, .LC44 add x0, x0, :lo12:.LC44 - mov w2, w20 - ldr w1, [x22,1412] + mov w2, w23 + ldr w1, [x22,1420] bl printk mov w0, 1 - str w0, [x22,1400] - b .L1761 -.L1765: + str w0, [x22,1408] + b .L1853 +.L1858: cmp w1, 1 - beq .L1763 + beq .L1855 cmp w2, 256 - beq .L1763 + beq .L1855 mov w0, 65535 cmp w25, w0 - beq .L1761 + beq .L1853 mov w0, w25 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1761: +.L1853: mov w0, 0 - ldr x25, [sp,64] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] ldp x29, x30, [sp], 80 ret .size FtlVpcTblFlush, .-FtlVpcTblFlush @@ -11206,48 +11529,48 @@ FtlScanSysBlk: stp x25, x26, [sp,64] stp x23, x24, [sp,48] stp x27, x28, [sp,80] - strh wzr, [x20,3908] + strh wzr, [x20,3920] mov x26, 56 - ldr w2, [x20,848] + ldr w2, [x20,852] mov w22, 65535 - ldr x0, [x20,1256] + ldr x0, [x20,1264] lsl w2, w2, 2 - strh wzr, [x20,1392] + strh wzr, [x20,1400] bl ftl_memset - ldr w2, [x20,848] + ldr w2, [x20,852] mov w1, 0 - ldr x0, [x20,1192] + ldr x0, [x20,1200] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,840] + ldrh w2, [x20,844] mov w1, 0 - ldr x0, [x20,1224] + ldr x0, [x20,1232] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,840] + ldrh w2, [x20,844] mov w1, 0 - ldr x0, [x20,1208] + ldr x0, [x20,1216] lsl w2, w2, 1 bl ftl_memset - add x0, x20, 3896 + add x0, x20, 3904 mov w1, 255 - mov w2, 12 + mov w2, 16 bl ftl_memset - ldrh w21, [x20,756] -.L1773: + ldrh w21, [x20,764] +.L1869: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,758] + ldrh w0, [x1,766] cmp w0, w21 - bls .L1814 + bls .L1910 mov x27, 0 - ldrh w3, [x1,748] - ldrh w2, [x1,830] + ldrh w3, [x1,756] + ldrh w2, [x1,836] mov w20, w27 mov x23, x1 -.L1815: +.L1911: cmp w3, w27, uxth - bls .L1848 - add x0, x23, 776 + bls .L1944 + add x0, x23, 784 mov w1, w21 str x2, [x29,112] str x3, [x29,120] @@ -11257,64 +11580,64 @@ FtlScanSysBlk: bl FtlBbmIsBadBlock ldr x3, [x29,120] ldr x2, [x29,112] - cbnz w0, .L1774 + cbnz w0, .L1870 mov w0, 56 - ldr x1, [x23,992] + ldr x1, [x23,1000] lsl w28, w28, 10 mov w4, 4 umull x0, w20, w0 add x1, x1, x0 str w28, [x1,4] - ldr x1, [x23,992] + ldr x1, [x23,1000] add x0, x1, x0 - ldr x1, [x23,1072] + ldr x1, [x23,1080] str x1, [x0,8] mul w1, w20, w2 add w20, w20, 1 sdiv w1, w1, w4 uxth w20, w20 - ldr x4, [x23,1128] + ldr x4, [x23,1136] add x1, x4, x1, sxtw 2 str x1, [x0,16] -.L1774: +.L1870: add x27, x27, 1 - b .L1815 -.L1848: - cbz w20, .L1777 + b .L1911 +.L1944: + cbz w20, .L1873 add x0, x19, :lo12:.LANCHOR2 mov w1, w20 mov w2, 1 mov x23, 0 mov w27, -1 adrp x28, .LANCHOR0 - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages -.L1778: +.L1874: cmp w20, w23, uxth - bls .L1777 + bls .L1873 add x0, x19, :lo12:.LANCHOR2 mul x5, x23, x26 - ldr x0, [x0,992] + ldr x0, [x0,1000] add x1, x0, x5 ldr w0, [x0,x5] ldr w4, [x1,4] cmn w0, #1 ldr x25, [x1,16] ubfx x24, x4, 10, 16 - bne .L1780 + bne .L1876 mov w6, 16 -.L1779: +.L1875: add x7, x19, :lo12:.LANCHOR2 str x6, [x29,104] str x7, [x29,112] str x5, [x29,120] - ldr x0, [x7,992] + ldr x0, [x7,1000] add x0, x0, x5 ldr w1, [x0,4] add w1, w1, 1 str w1, [x0,4] mov w1, 1 - ldr x0, [x7,992] + ldr x0, [x7,1000] mov w2, w1 add x0, x0, x5 bl FlashReadPages @@ -11323,333 +11646,333 @@ FtlScanSysBlk: cmp w0, w22 ldr x5, [x29,120] ldr x6, [x29,104] - ldr x0, [x7,992] - bne .L1781 + ldr x0, [x7,1000] + bne .L1877 str w27, [x0,x5] - b .L1780 -.L1781: + b .L1876 +.L1877: ldr w0, [x0,x5] cmn w0, #1 - bne .L1780 + bne .L1876 sub w6, w6, #1 uxth w6, w6 - cbnz w6, .L1779 -.L1780: + cbnz w6, .L1875 +.L1876: add x0, x19, :lo12:.LANCHOR2 - ldr x1, [x0,992] + ldr x1, [x0,1000] ldr w1, [x1,x5] cmn w1, #1 - beq .L1783 - ldr w0, [x0,872] + beq .L1879 + ldr w0, [x0,876] cmn w0, #1 - beq .L1784 + beq .L1880 ldr w1, [x25,4] cmp w0, w1 - bhi .L1785 -.L1784: + bhi .L1881 +.L1880: ldr w0, [x25,4] cmn w0, #1 - beq .L1785 + beq .L1881 add x1, x19, :lo12:.LANCHOR2 add w0, w0, 1 - str w0, [x1,872] -.L1785: + str w0, [x1,876] +.L1881: ldrh w0, [x25] mov w1, 61604 cmp w0, w1 - beq .L1787 - bhi .L1788 + beq .L1883 + bhi .L1884 mov w1, 61574 cmp w0, w1 - bne .L1786 + bne .L1882 add x5, x19, :lo12:.LANCHOR2 - ldrh w6, [x5,840] - ldrh w0, [x5,1392] + ldrh w6, [x5,844] + ldrh w0, [x5,1400] sub w2, w6, #1 - ldr x5, [x5,1224] + ldr x5, [x5,1232] sxth x1, w2 sub w2, w2, w0 - b .L1801 -.L1788: + b .L1897 +.L1884: mov w1, 61634 cmp w0, w1 - beq .L1790 + beq .L1886 cmp w0, w22 - bne .L1786 + bne .L1882 mov w0, w24 - b .L1847 -.L1790: + b .L1943 +.L1886: add x5, x19, :lo12:.LANCHOR2 - ldr w6, [x5,848] - ldrh w0, [x5,3908] - ldr x5, [x5,1256] + ldr w6, [x5,852] + ldrh w0, [x5,3920] + ldr x5, [x5,1264] uxth w2, w6 sub w1, w2, #1 sub w2, w2, w0 sub w2, w2, #1 sxth x1, w1 sxth w2, w2 -.L1792: +.L1888: cmp w1, w2 - ble .L1849 + ble .L1945 sbfiz x7, x1, 2, 32 ldr w10, [x25,4] sxth x8, w1 ldr w9, [x5,x7] cmp w10, w9 - bls .L1793 + bls .L1889 ldr w2, [x5] - cbnz w2, .L1794 + cbnz w2, .L1890 cmp w0, w6 - beq .L1794 + beq .L1890 add x2, x19, :lo12:.LANCHOR2 add w0, w0, 1 - strh w0, [x2,3908] -.L1794: + strh w0, [x2,3920] +.L1890: mov w0, 0 -.L1795: +.L1891: cmp w0, w1 - beq .L1850 + beq .L1946 add x5, x19, :lo12:.LANCHOR2 sxtw x2, w0 lsl x6, x2, 2 lsl x2, x2, 1 add w0, w0, 1 - ldr x9, [x5,1256] + ldr x9, [x5,1264] sxth w0, w0 add x10, x9, x6 ldr w10, [x10,4] str w10, [x9,x6] - ldr x5, [x5,1192] + ldr x5, [x5,1200] add x6, x5, x2 ldrh w6, [x6,2] strh w6, [x5,x2] - b .L1795 -.L1850: + b .L1891 +.L1946: add x2, x19, :lo12:.LANCHOR2 ldr w5, [x25,4] - ldr x0, [x2,1256] + ldr x0, [x2,1264] str w5, [x0,x7] - ldr x0, [x2,1192] + ldr x0, [x2,1200] strh w24, [x0,x8,lsl 1] - tbz w1, #31, .L1797 - b .L1786 -.L1793: + tbz w1, #31, .L1893 + b .L1882 +.L1889: sub w1, w1, #1 sxth x1, w1 - b .L1792 -.L1849: - tbz w1, #31, .L1830 - b .L1786 -.L1797: - ldrh w0, [x2,3908] - ldr w2, [x2,848] + b .L1888 +.L1945: + tbz w1, #31, .L1926 + b .L1882 +.L1893: + ldrh w0, [x2,3920] + ldr w2, [x2,852] sub w2, w2, w0 sub w2, w2, #1 cmp w1, w2, sxth - bgt .L1786 -.L1830: + bgt .L1882 +.L1926: add x2, x19, :lo12:.LANCHOR2 add w0, w0, 1 ldr w3, [x25,4] - strh w0, [x2,3908] - ldr x0, [x2,1256] + strh w0, [x2,3920] + ldr x0, [x2,1264] str w3, [x0,x1,lsl 2] - ldr x0, [x2,1192] - b .L1846 -.L1807: + ldr x0, [x2,1200] + b .L1942 +.L1903: sbfiz x7, x1, 2, 32 ldr w10, [x25,4] sxth x8, w1 ldr w9, [x5,x7] cmp w10, w9 - bhi .L1851 + bhi .L1947 sub w1, w1, #1 sxth x1, w1 -.L1801: +.L1897: cmp w1, w2 - bgt .L1807 - b .L1806 -.L1851: + bgt .L1903 + b .L1902 +.L1947: ldr w2, [x5] - cbnz w2, .L1803 + cbnz w2, .L1899 cmp w0, w6 - beq .L1803 + beq .L1899 add x2, x19, :lo12:.LANCHOR2 add w0, w0, 1 - strh w0, [x2,1392] -.L1803: + strh w0, [x2,1400] +.L1899: mov w0, 0 -.L1804: +.L1900: cmp w0, w1 - beq .L1852 + beq .L1948 add x5, x19, :lo12:.LANCHOR2 sxtw x2, w0 lsl x6, x2, 2 lsl x2, x2, 1 add w0, w0, 1 - ldr x9, [x5,1224] + ldr x9, [x5,1232] sxth w0, w0 add x10, x9, x6 ldr w10, [x10,4] str w10, [x9,x6] - ldr x5, [x5,1208] + ldr x5, [x5,1216] add x6, x5, x2 ldrh w6, [x6,2] strh w6, [x5,x2] - b .L1804 -.L1852: + b .L1900 +.L1948: add x0, x19, :lo12:.LANCHOR2 ldr w5, [x25,4] - ldr x2, [x0,1224] + ldr x2, [x0,1232] str w5, [x2,x7] - ldr x0, [x0,1208] + ldr x0, [x0,1216] strh w24, [x0,x8,lsl 1] -.L1806: - tbnz w1, #31, .L1786 +.L1902: + tbnz w1, #31, .L1882 add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x0,840] - ldrh w5, [x0,1392] + ldrh w2, [x0,844] + ldrh w5, [x0,1400] sub w2, w2, #1 sub w2, w2, w5 cmp w1, w2, sxth - bgt .L1786 - ldr x2, [x0,1224] + bgt .L1882 + ldr x2, [x0,1232] add w5, w5, 1 ldr w3, [x25,4] - strh w5, [x0,1392] + strh w5, [x0,1400] str w3, [x2,x1,lsl 2] - ldr x0, [x0,1208] -.L1846: + ldr x0, [x0,1216] +.L1942: strh w24, [x0,x1,lsl 1] - b .L1786 -.L1787: + b .L1882 +.L1883: add x0, x19, :lo12:.LANCHOR2 - add x1, x0, 3896 - ldrh w2, [x0,3896] + add x1, x0, 3904 + ldrh w2, [x0,3904] cmp w2, w22 - bne .L1808 - strh w24, [x0,3896] + bne .L1904 + strh w24, [x0,3904] ldr w0, [x25,4] str w0, [x1,8] - b .L1786 -.L1808: + b .L1882 +.L1904: ldrh w0, [x1,4] cmp w0, w22 - beq .L1809 + beq .L1905 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1809: +.L1905: add x1, x19, :lo12:.LANCHOR2 ldr w2, [x25,4] - add x0, x1, 3896 + add x0, x1, 3904 ldr w5, [x0,8] cmp w5, w2 - bcs .L1810 - ldrh w2, [x1,3896] + bcs .L1906 + ldrh w2, [x1,3904] strh w2, [x0,4] - strh w24, [x1,3896] + strh w24, [x1,3904] ldr w1, [x25,4] str w1, [x0,8] - b .L1786 -.L1810: + b .L1882 +.L1906: strh w24, [x0,4] - b .L1786 -.L1783: + b .L1882 +.L1879: add x0, x28, :lo12:.LANCHOR0 - ldrb w1, [x0,136] + ldrb w1, [x0,4044] mov w0, w24 - cbz w1, .L1811 -.L1847: + cbz w1, .L1907 +.L1943: mov w1, 0 -.L1811: +.L1907: bl FtlFreeSysBlkQueueIn -.L1786: +.L1882: add x23, x23, 1 - b .L1778 -.L1777: + b .L1874 +.L1873: add w21, w21, 1 uxth w21, w21 - b .L1773 -.L1814: - ldr x2, [x1,1192] + b .L1869 +.L1910: + ldr x2, [x1,1200] ldrh w0, [x2] - cbz w0, .L1816 -.L1819: + cbz w0, .L1912 +.L1915: add x1, x19, :lo12:.LANCHOR2 - ldr x2, [x1,1208] + ldr x2, [x1,1216] ldrh w0, [x2] - cbz w0, .L1817 - b .L1840 -.L1816: - ldrh w3, [x1,3908] - cbz w3, .L1819 - ldr w1, [x1,848] -.L1820: + cbz w0, .L1913 + b .L1936 +.L1912: + ldrh w3, [x1,3920] + cbz w3, .L1915 + ldr w1, [x1,852] +.L1916: cmp w0, w1 - bcs .L1819 + bcs .L1915 ldrh w3, [x2,w0,sxtw 1] - cbz w3, .L1821 + cbz w3, .L1917 mov w6, w0 -.L1822: +.L1918: add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x1,848] + ldr w2, [x1,852] cmp w0, w2 - bcs .L1819 + bcs .L1915 sxtw x5, w0 sub w2, w0, w6 - ldr x4, [x1,1192] + ldr x4, [x1,1200] lsl x3, x5, 1 sxtw x2, w2 add w0, w0, 1 ldrh w7, [x4,x3] sxth w0, w0 strh w7, [x4,x2,lsl 1] - ldr x4, [x1,1256] + ldr x4, [x1,1264] ldr w5, [x4,x5,lsl 2] str w5, [x4,x2,lsl 2] - ldr x1, [x1,1192] + ldr x1, [x1,1200] strh wzr, [x1,x3] - b .L1822 -.L1821: + b .L1918 +.L1917: add w0, w0, 1 sxth w0, w0 - b .L1820 -.L1817: - ldrh w3, [x1,1392] - cbz w3, .L1840 - ldrh w1, [x1,840] -.L1825: + b .L1916 +.L1913: + ldrh w3, [x1,1400] + cbz w3, .L1936 + ldrh w1, [x1,844] +.L1921: cmp w0, w1 mov w6, w0 - bge .L1840 + bge .L1936 ldrh w3, [x2,w0,sxtw 1] - cbz w3, .L1826 -.L1827: + cbz w3, .L1922 +.L1923: add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,840] + ldrh w2, [x1,844] cmp w0, w2 - bge .L1840 + bge .L1936 sxtw x5, w0 sub w2, w0, w6 - ldr x4, [x1,1208] + ldr x4, [x1,1216] lsl x3, x5, 1 sxtw x2, w2 add w0, w0, 1 ldrh w7, [x4,x3] sxth w0, w0 strh w7, [x4,x2,lsl 1] - ldr x4, [x1,1224] + ldr x4, [x1,1232] ldr w5, [x4,x5,lsl 2] str w5, [x4,x2,lsl 2] - ldr x1, [x1,1208] + ldr x1, [x1,1216] strh wzr, [x1,x3] - b .L1827 -.L1826: + b .L1923 +.L1922: add w0, w0, 1 sxth w0, w0 - b .L1825 -.L1840: + b .L1921 +.L1936: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11669,26 +11992,26 @@ FtlLoadEctTbl: str x19, [sp,16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x19,1144] - ldr x2, [x19,1160] + ldrh w1, [x19,1152] + ldr x2, [x19,1168] bl FtlVendorPartRead - ldr x0, [x19,1160] + ldr x0, [x19,1168] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L1854 + beq .L1950 adrp x0, .LC45 adrp x1, .LC46 add x1, x1, :lo12:.LC46 add x0, x0, :lo12:.LC45 bl printk - ldrh w2, [x19,1144] + ldrh w2, [x19,1152] mov w1, 0 - ldr x0, [x19,1160] + ldr x0, [x19,1168] lsl w2, w2, 9 bl ftl_memset -.L1854: +.L1950: mov w0, 0 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -11701,10 +12024,10 @@ ftl_set_blk_mode: stp x29, x30, [sp, -16]! uxth w0, w0 add x29, sp, 0 - cbz w1, .L1856 + cbz w1, .L1952 bl ftl_set_blk_mode.part.17 - b .L1855 -.L1856: + b .L1951 +.L1952: adrp x1, .LANCHOR0+16 ubfx x2, x0, 5, 11 lsl x2, x2, 2 @@ -11714,7 +12037,7 @@ ftl_set_blk_mode: ldr w1, [x3,x2] bic w0, w1, w0 str w0, [x3,x2] -.L1855: +.L1951: ldp x29, x30, [sp], 16 ret .size ftl_set_blk_mode, .-ftl_set_blk_mode @@ -11744,108 +12067,97 @@ FtlCheckVpc: add x0, x0, :lo12:.LC47 str x25, [sp,64] stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - mov w20, 0 + adrp x20, .LANCHOR2 stp x21, x22, [sp,32] stp x23, x24, [sp,48] - add x19, x19, :lo12:.LANCHOR2 + add x19, x20, :lo12:.LANCHOR2 bl printk - add x0, x19, 3912 + add x0, x19, 3928 mov w1, 0 mov x2, 8192 + mov w21, 0 bl memset -.L1860: - ldr w0, [x19,1396] - cmp w20, w0 - bcs .L1877 - mov w0, w20 +.L1956: + ldr w0, [x19,1404] + cmp w21, w0 + bcs .L1973 + mov w0, w21 add x1, x29, 92 mov w2, 0 bl log2phys ldr w0, [x29,92] cmn w0, #1 - beq .L1861 + beq .L1957 lsr w0, w0, 10 bl P2V_block_in_plane uxth w0, w0 - add x2, x19, 3912 + add x2, x19, 3928 ldrh w1, [x2,w0,sxtw 1] add w1, w1, 1 strh w1, [x2,w0,sxtw 1] -.L1861: - add w20, w20, 1 - b .L1860 -.L1877: - ldr x1, [x19,1184] - adrp x0, .LC48 - ldrh w3, [x19,756] - add x0, x0, :lo12:.LC48 - mov w2, 2 - adrp x21, .LC50 - mov w20, 0 - add x21, x21, :lo12:.LC50 - bl rknand_print_hex - adrp x0, .LC49 - ldrh w3, [x19,756] - add x0, x0, :lo12:.LC49 - add x1, x19, 3912 - mov w2, 2 - bl rknand_print_hex -.L1863: - ldrh w0, [x19,756] - cmp w0, w20 - bls .L1878 - ubfiz x0, x20, 1, 16 - ldr x1, [x19,1184] +.L1957: + add w21, w21, 1 + b .L1956 +.L1973: + adrp x21, .LC48 + mov w19, 0 + add x20, x20, :lo12:.LANCHOR2 + add x21, x21, :lo12:.LC48 +.L1959: + ldrh w0, [x20,764] + cmp w0, w19 + bls .L1974 + ubfiz x0, x19, 1, 16 + ldr x1, [x20,1192] ldrh w2, [x1,x0] - add x0, x19, 3912 - ldrh w3, [x0,w20,sxtw 1] + add x0, x20, 3928 + ldrh w3, [x0,w19,sxtw 1] cmp w2, w3 - beq .L1864 + beq .L1960 mov x0, x21 - mov w1, w20 + mov w1, w19 bl printk -.L1864: - add w20, w20, 1 - uxth w20, w20 - b .L1863 -.L1878: - ldr x0, [x19,3592] - cbz x0, .L1859 - ldr x20, [x19,1280] - adrp x22, .LC51 - ldrh w23, [x19,3600] +.L1960: + add w19, w19, 1 + uxth w19, w19 + b .L1959 +.L1974: + ldr x0, [x20,3600] + cbz x0, .L1955 + ldr x19, [x20,1288] + adrp x22, .LC49 + ldrh w23, [x20,3608] mov w21, 0 - sub x20, x0, x20 + sub x19, x0, x19 mov x0, -6148914691236517206 - asr x20, x20, 1 - add x22, x22, :lo12:.LC51 + asr x19, x19, 1 + add x22, x22, :lo12:.LC49 mov w24, 6 mov w25, 65535 - madd x20, x0, x20, x20 - uxth w20, w20 -.L1867: + madd x19, x0, x19, x19 + uxth w19, w19 +.L1963: cmp w21, w23 - beq .L1859 - ubfiz x0, x20, 1, 16 - ldr x1, [x19,1184] + beq .L1955 + ubfiz x0, x19, 1, 16 + ldr x1, [x20,1192] ldrh w2, [x1,x0] - cbz w2, .L1868 - add x3, x19, 3912 + cbz w2, .L1964 + add x3, x20, 3928 mov x0, x22 - mov w1, w20 - ldrh w3, [x3,w20,sxtw 1] + mov w1, w19 + ldrh w3, [x3,w19,sxtw 1] bl printk -.L1868: - umull x20, w20, w24 - ldr x0, [x19,1280] - ldrh w20, [x0,x20] - cmp w20, w25 - beq .L1859 +.L1964: + umull x19, w19, w24 + ldr x0, [x20,1288] + ldrh w19, [x0,x19] + cmp w19, w25 + beq .L1955 add w21, w21, 1 uxth w21, w21 - b .L1867 -.L1859: + b .L1963 +.L1955: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -11866,23 +12178,23 @@ FtlDumpSysBlock: stp x21, x22, [sp,48] stp x23, x24, [sp,64] str x25, [sp,80] - add x19, x2, 1408 + add x19, x2, 1416 uxth w23, w0 - adrp x22, .LC52 - ldr x0, [x2,1048] - adrp x25, .LC53 + adrp x22, .LC50 + ldr x0, [x2,1056] + adrp x25, .LC51 str x0, [x19,8] lsl w24, w23, 10 - ldr x0, [x2,1112] + ldr x0, [x2,1120] mov w20, 0 str x0, [x19,16] mov x21, x2 - add x22, x22, :lo12:.LC52 - add x25, x25, :lo12:.LC53 -.L1880: - ldrh w0, [x21,820] + add x22, x22, :lo12:.LC50 + add x25, x25, :lo12:.LC51 +.L1976: + ldrh w0, [x21,826] cmp w20, w0 - bge .L1886 + bge .L1982 mov w1, 1 orr w0, w20, w24 mov w2, w1 @@ -11905,17 +12217,17 @@ FtlDumpSysBlock: ldr x0, [x19,16] ldr w0, [x0] cmn w0, #1 - beq .L1881 - ldr x1, [x21,1048] + beq .L1977 + ldr x1, [x21,1056] mov x0, x25 mov w2, 4 mov w3, 768 bl rknand_print_hex -.L1881: +.L1977: add w20, w20, 1 sxth w20, w20 - b .L1880 -.L1886: + b .L1976 +.L1982: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -11930,67 +12242,67 @@ FtlDumpSysBlock: .type Ftlscanalldata, %function Ftlscanalldata: sub sp, sp, #96 - adrp x0, .LC54 - add x0, x0, :lo12:.LC54 + adrp x0, .LC52 + add x0, x0, :lo12:.LC52 mov w1, 0 stp x29, x30, [sp,16] add x29, sp, 16 stp x23, x24, [sp,64] adrp x23, .LANCHOR2 stp x21, x22, [sp,48] - adrp x21, .LC55 + adrp x21, .LC53 add x22, x23, :lo12:.LANCHOR2 stp x19, x20, [sp,32] - add x21, x21, :lo12:.LC55 + add x21, x21, :lo12:.LC53 mov w20, 0 - add x19, x22, 1408 + add x19, x22, 1416 bl printk -.L1888: +.L1984: add x0, x23, :lo12:.LANCHOR2 - ldr w0, [x0,1396] + ldr w0, [x0,1404] cmp w20, w0 - bcs .L1895 + bcs .L1991 mov w0, w20 add x1, x29, 76 mov w2, 0 bl log2phys and w0, w20, 2047 - cbnz w0, .L1889 + cbnz w0, .L1985 ldr w2, [x29,76] mov x0, x21 mov w1, w20 bl printk -.L1889: +.L1985: ldr w0, [x29,76] cmn w0, #1 - beq .L1891 + beq .L1987 str w0, [x19,4] mov w1, 1 - ldr x0, [x22,1048] + ldr x0, [x22,1056] mov w2, 0 str x0, [x19,8] mov x0, x19 - ldr x24, [x22,1112] + ldr x24, [x22,1120] str w20, [x19,24] str x24, [x19,16] str wzr, [x19] bl FlashReadPages ldr w0, [x19] cmn w0, #1 - beq .L1892 + beq .L1988 cmp w0, 256 - beq .L1892 + beq .L1988 ldr w0, [x24,8] cmp w0, w20 - beq .L1891 -.L1892: + beq .L1987 +.L1988: ldr x7, [x19,8] mov w1, w20 ldr x6, [x19,16] ldr w0, [x7,4] str w0, [sp] - adrp x0, .LC56 - add x0, x0, :lo12:.LC56 + adrp x0, .LC54 + add x0, x0, :lo12:.LC54 ldr w3, [x6] ldr w4, [x6,4] ldr w5, [x6,8] @@ -11998,10 +12310,10 @@ Ftlscanalldata: ldr w6, [x6,12] ldr w7, [x7] bl printk -.L1891: +.L1987: add w20, w20, 1 - b .L1888 -.L1895: + b .L1984 +.L1991: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -12024,25 +12336,25 @@ dump_map_info: stp x23, x24, [sp,64] stp x27, x28, [sp,96] stp x19, x20, [sp,32] - adrp x24, .LC57 + adrp x24, .LC55 mov w25, 56 - ldrh w21, [x0,756] + ldrh w21, [x0,764] mov w26, 4 mov x27, 56 - add x24, x24, :lo12:.LC57 -.L1897: + add x24, x24, :lo12:.LC55 +.L1993: add x19, x22, :lo12:.LANCHOR2 - ldrh w0, [x19,758] + ldrh w0, [x19,766] cmp w0, w21 - bls .L1910 + bls .L2006 mov x23, 0 - ldrh w3, [x19,748] - ldrh w2, [x19,830] + ldrh w3, [x19,756] + ldrh w2, [x19,836] mov w20, w23 -.L1906: +.L2002: cmp w3, w23, uxth - bls .L1911 - add x0, x19, 776 + bls .L2007 + add x0, x19, 784 mov w1, w21 str x2, [x29,96] str x3, [x29,104] @@ -12052,16 +12364,16 @@ dump_map_info: bl FtlBbmIsBadBlock ldr x3, [x29,104] ldr x2, [x29,96] - cbnz w0, .L1898 + cbnz w0, .L1994 umull x0, w20, w25 - ldr x1, [x19,992] + ldr x1, [x19,1000] lsl w28, w28, 10 add x1, x1, x0 str w28, [x1,4] - ldr x1, [x19,992] - ldr x4, [x19,1128] + ldr x1, [x19,1000] + ldr x4, [x19,1136] add x0, x1, x0 - ldr x1, [x19,1072] + ldr x1, [x19,1080] str x1, [x0,8] mul w1, w20, w2 add w20, w20, 1 @@ -12069,22 +12381,22 @@ dump_map_info: uxth w20, w20 add x1, x4, x1, sxtw 2 str x1, [x0,16] -.L1898: +.L1994: add x23, x23, 1 - b .L1906 -.L1911: - cbz w20, .L1901 + b .L2002 +.L2007: + cbz w20, .L1997 add x0, x22, :lo12:.LANCHOR2 mov w1, w20 mov w2, 1 mov x19, 0 - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages -.L1902: +.L1998: cmp w20, w19, uxth - bls .L1901 + bls .L1997 add x0, x22, :lo12:.LANCHOR2 - ldr x0, [x0,992] + ldr x0, [x0,1000] madd x0, x19, x27, x0 add x19, x19, 1 ldr x7, [x0,8] @@ -12100,27 +12412,27 @@ dump_map_info: ldr w7, [x7] ldr w6, [x6,12] bl printk - b .L1902 -.L1901: + b .L1998 +.L1997: add w21, w21, 1 uxth w21, w21 - b .L1897 -.L1910: - adrp x23, .LC58 + b .L1993 +.L2006: + adrp x23, .LC56 mov w21, 0 - add x22, x19, 1408 - add x23, x23, :lo12:.LC58 -.L1905: - ldrh w0, [x19,3908] + add x22, x19, 1416 + add x23, x23, :lo12:.LC56 +.L2001: + ldrh w0, [x19,3920] cmp w21, w0 - bge .L1908 + bge .L2004 sbfiz x24, x21, 1, 32 mov w20, 0 -.L1909: - ldrh w0, [x19,820] +.L2005: + ldrh w0, [x19,826] cmp w20, w0 - bge .L1912 - ldr x0, [x19,1192] + bge .L2008 + ldr x0, [x19,1200] mov w1, 1 mov w2, w1 ldrh w0, [x0,x24] @@ -12131,7 +12443,7 @@ dump_map_info: bl FlashReadPages sxth w20, w20 ldr x0, [x22,8] - ldr x1, [x19,1192] + ldr x1, [x19,1200] ldr x7, [x22,16] ldr w2, [x0] ldrh w1, [x1,x24] @@ -12146,28 +12458,28 @@ dump_map_info: ldr w3, [x22,4] ldr w7, [x7,12] bl printk - b .L1909 -.L1912: + b .L2005 +.L2008: add w21, w21, 1 sxth w21, w21 - b .L1905 -.L1908: - ldr x1, [x19,1192] - adrp x0, .LC59 - ldr w3, [x19,848] - add x0, x0, :lo12:.LC59 + b .L2001 +.L2004: + ldr x1, [x19,1200] + adrp x0, .LC57 + ldr w3, [x19,852] + add x0, x0, :lo12:.LC57 mov w2, 2 bl rknand_print_hex - ldr x1, [x19,1240] - adrp x0, .LC60 - ldrh w3, [x19,856] - add x0, x0, :lo12:.LC60 + ldr x1, [x19,1248] + adrp x0, .LC58 + ldrh w3, [x19,860] + add x0, x0, :lo12:.LC58 mov w2, 4 bl rknand_print_hex - ldr x1, [x19,1248] - adrp x0, .LC61 - ldrh w3, [x19,856] - add x0, x0, :lo12:.LC61 + ldr x1, [x19,1256] + adrp x0, .LC59 + ldrh w3, [x19,860] + add x0, x0, :lo12:.LC59 mov w2, 4 bl rknand_print_hex sub sp, x29, #16 @@ -12184,192 +12496,227 @@ dump_map_info: .global FtlMapTblRecovery .type FtlMapTblRecovery, %function FtlMapTblRecovery: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! mov w1, 0 add x29, sp, 0 stp x19, x20, [sp,16] - mov x19, x0 - adrp x20, .LANCHOR2 stp x21, x22, [sp,32] - stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - ldrh w23, [x19,6] - mov w27, 0 - ldr x0, [x0,40] - lsl w2, w23, 2 - ldrh w24, [x19,8] - str x0, [x29,120] - ldr x22, [x19,16] - ldr x25, [x19,24] + stp x23, x24, [sp,48] + mov x27, x0 + adrp x20, .LANCHOR2 + ldr x22, [x0,40] + mov w19, 0 + ldrh w24, [x0,6] + ldr x23, [x0,16] + ldr x26, [x0,24] + lsl w2, w24, 2 + ldrh w0, [x0,8] + str w0, [x29,136] + mov x0, x22 bl ftl_memset - add x5, x20, :lo12:.LANCHOR2 - str x20, [x29,112] - add x4, x5, 1408 - str wzr, [x19,52] - str wzr, [x19,48] - mov x26, x5 - ldr x0, [x5,1048] - mov x20, x4 - ldr x21, [x5,1112] - str x0, [x5,1416] + str x20, [x29,128] + add x6, x20, :lo12:.LANCHOR2 + str wzr, [x27,52] + add x4, x6, 1416 + str wzr, [x27,48] + mov x20, x6 + mov x25, x4 + ldr x0, [x6,1056] + ldr x21, [x6,1120] + str x0, [x6,1424] mov w0, -1 - str x21, [x5,1424] - strh w0, [x19] - strh w0, [x19,2] + str x21, [x6,1432] + strh w0, [x27] + strh w0, [x27,2] mov w0, 1 - str w0, [x19,56] - sub w0, w24, #1 - str w0, [x29,108] -.L1914: - cmp w27, w24 - bge .L1930 - ldr w0, [x29,108] - sxtw x28, w27 - cmp w27, w0 - bne .L1915 + str w0, [x27,56] + ldr w0, [x29,136] + sub w0, w0, #1 + str w0, [x29,116] +.L2010: + ldr w0, [x29,136] + cmp w19, w0 + bge .L2028 + ldr w0, [x29,116] + sxtw x28, w19 + cmp w19, w0 + bne .L2011 lsl x0, x28, 1 mov w1, 1 - add x24, x22, x0 - ldrh w0, [x22,x0] - mov w22, 0 + add x25, x23, x0 + mov w20, 0 + ldrh w0, [x23,x0] bl FtlGetLastWrittenPage - strh w27, [x19] - sxth w26, w0 + strh w19, [x27] + sxth w1, w0 add w0, w0, 1 - strh w0, [x19,2] - add w26, w26, 1 - ldr w0, [x25,x28,lsl 2] - str w0, [x19,48] - ldr x0, [x29,112] - add x25, x0, :lo12:.LANCHOR2 - add x25, x25, 1408 -.L1916: - cmp w22, w26 - bge .L1930 - ldrh w0, [x24] + strh w0, [x27,2] + add w19, w1, 1 + ldr w0, [x26,x28,lsl 2] + adrp x26, .LANCHOR0 + str w0, [x27,48] + ldr x0, [x29,128] + add x23, x0, :lo12:.LANCHOR2 + add x28, x23, 1416 +.L2012: + cmp w20, w19 + bge .L2028 + ldrh w0, [x25] mov w1, 1 mov w2, w1 - orr w0, w22, w0, lsl 10 + orr w0, w20, w0, lsl 10 + str w0, [x28,4] + mov x0, x28 + bl FlashReadPages + add x0, x26, :lo12:.LANCHOR0 + ldrb w0, [x0,88] + cbz w0, .L2013 + ldr x0, [x28,16] + ldr w2, [x0,12] + cbz w2, .L2013 + ldr x0, [x28,8] + ldrh w1, [x23,834] + str x2, [x29,136] + bl js_hash + ldr x2, [x29,136] + cmp w2, w0 + beq .L2013 + mov w0, -1 + str w0, [x28] +.L2013: + ldr w0, [x28] + cmn w0, #1 + beq .L2014 + ldrh w0, [x21,8] + cmp w0, w24 + bcs .L2014 + ldrh w2, [x21] + ldrh w1, [x27,4] + cmp w2, w1 + bne .L2014 + ubfiz x0, x0, 2, 16 + ldr w1, [x28,4] + str w1, [x22,x0] +.L2014: + add w4, w20, 1 + sxth w20, w4 + b .L2012 +.L2028: + mov x0, x27 + bl ftl_free_no_use_map_blk + ldr x0, [x29,128] + ldrh w1, [x27,2] + add x20, x0, :lo12:.LANCHOR2 + ldrh w0, [x20,826] + cmp w1, w0 + bne .L2017 + mov x0, x27 + bl ftl_map_blk_alloc_new_blk + b .L2017 +.L2011: + ldr x0, [x20,1056] + str x0, [x25,8] + lsl x0, x28, 1 + add x1, x23, x0 + str x1, [x29,120] + ldrh w1, [x23,x0] + ldrh w0, [x20,826] + sub w0, w0, #1 + orr w0, w0, w1, lsl 10 + mov w1, 1 str w0, [x25,4] + mov w2, w1 mov x0, x25 bl FlashReadPages ldr w0, [x25] cmn w0, #1 - beq .L1917 - ldrh w0, [x21,8] - cmp w0, w23 - bcs .L1917 - ldrh w2, [x21] - ldrh w1, [x19,4] - cmp w2, w1 - bne .L1917 - ubfiz x0, x0, 2, 16 - ldr x2, [x29,120] - ldr w1, [x25,4] - str w1, [x2,x0] -.L1917: - add w22, w22, 1 - sxth w22, w22 - b .L1916 -.L1930: - mov x0, x19 - bl ftl_free_no_use_map_blk - ldr x0, [x29,112] - ldrh w1, [x19,2] - add x20, x0, :lo12:.LANCHOR2 - ldrh w0, [x20,820] - cmp w1, w0 - bne .L1920 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk - b .L1920 -.L1915: - ldr x0, [x26,1048] - str x0, [x20,8] - lsl x0, x28, 1 - add x28, x22, x0 - ldrh w1, [x22,x0] - ldrh w0, [x26,820] - sub w0, w0, #1 - orr w0, w0, w1, lsl 10 - mov w1, 1 - str w0, [x20,4] - mov w2, w1 - mov x0, x20 - bl FlashReadPages - ldr w0, [x20] - cmn w0, #1 - beq .L1931 + beq .L2029 ldrh w1, [x21] - mov w3, 0 - ldrh w0, [x19,4] + mov w28, 0 + ldrh w0, [x27,4] cmp w1, w0 - bne .L1940 - ldrh w0, [x21,8] - mov w1, 64245 - cmp w0, w1 - bne .L1940 -.L1922: - ldrh w0, [x26,820] + bne .L2050 + ldrh w1, [x21,8] + mov w0, 64245 + cmp w1, w0 + bne .L2050 + mov w5, w28 +.L2019: + ldrh w0, [x20,826] sub w0, w0, #1 - cmp w3, w0 - bge .L1925 - ldr x2, [x26,1048] - sbfiz x1, x3, 3, 32 + cmp w5, w0 + bge .L2022 + ldr x2, [x20,1056] + sbfiz x1, x5, 3, 32 ldrh w0, [x2,x1] - cmp w0, w23 - bcs .L1923 + cmp w0, w24 + bcs .L2020 add x1, x2, x1 ubfiz x0, x0, 2, 16 - ldr x2, [x29,120] ldr w1, [x1,4] - str w1, [x2,x0] -.L1923: - add w3, w3, 1 - sxth w3, w3 - b .L1922 -.L1931: - mov w3, 0 -.L1940: - ldrh w0, [x26,820] - cmp w3, w0 - bge .L1925 - ldrh w0, [x28] + str w1, [x22,x0] +.L2020: + add w5, w5, 1 + sxth w5, w5 + b .L2019 +.L2029: + mov w28, 0 +.L2050: + ldrh w0, [x20,826] + cmp w28, w0 + bge .L2022 + ldr x0, [x29,120] mov w1, 1 mov w2, w1 - str x3, [x29,96] - orr w0, w3, w0, lsl 10 - str w0, [x20,4] - mov x0, x20 + ldrh w0, [x0] + orr w0, w28, w0, lsl 10 + str w0, [x25,4] + mov x0, x25 bl FlashReadPages - ldr w0, [x20] - ldr x3, [x29,96] + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldrb w0, [x0,88] + cbz w0, .L2023 + ldr x0, [x25,16] + ldr w2, [x0,12] + cbz w2, .L2023 + ldr x0, [x25,8] + ldrh w1, [x20,834] + str x2, [x29,104] + bl js_hash + ldr x2, [x29,104] + cmp w2, w0 + beq .L2023 + mov w0, -1 + str w0, [x25] +.L2023: + ldr w0, [x25] cmn w0, #1 - beq .L1926 + beq .L2024 ldrh w0, [x21,8] - cmp w0, w23 - bcs .L1926 + cmp w0, w24 + bcs .L2024 ldrh w2, [x21] - ldrh w1, [x19,4] + ldrh w1, [x27,4] cmp w2, w1 - bne .L1926 + bne .L2024 ubfiz x0, x0, 2, 16 - ldr x2, [x29,120] - ldr w1, [x20,4] - str w1, [x2,x0] -.L1926: - add w3, w3, 1 - sxth w3, w3 - b .L1940 -.L1925: - add w6, w27, 1 - sxth w27, w6 - b .L1914 -.L1920: - mov x0, x19 + ldr w1, [x25,4] + str w1, [x22,x0] +.L2024: + add w5, w28, 1 + sxth w28, w5 + b .L2050 +.L2022: + add w19, w19, 1 + sxth w19, w19 + b .L2010 +.L2017: + mov x0, x27 bl ftl_map_blk_gc - mov x0, x19 + mov x0, x27 bl ftl_map_blk_gc mov w0, 0 ldp x19, x20, [sp,16] @@ -12377,7 +12724,7 @@ FtlMapTblRecovery: ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 128 + ldp x29, x30, [sp], 144 ret .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 @@ -12387,22 +12734,22 @@ FtlLoadVonderInfo: adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 stp x29, x30, [sp, -16]! - add x0, x1, 3824 + add x0, x1, 3832 add x29, sp, 0 - ldrh w2, [x1,840] + ldrh w2, [x1,844] strh w2, [x0,10] mov w2, -3962 strh w2, [x0,4] - ldrh w2, [x1,1392] + ldrh w2, [x1,1400] strh w2, [x0,8] - ldrh w2, [x1,842] + ldrh w2, [x1,846] strh w2, [x0,6] - ldr x2, [x1,1208] - str x2, [x0,16] - ldr x2, [x1,1224] - str x2, [x0,24] ldr x2, [x1,1216] - ldr x1, [x1,1232] + str x2, [x0,16] + ldr x2, [x1,1232] + str x2, [x0,24] + ldr x2, [x1,1224] + ldr x1, [x1,1240] str x2, [x0,32] str x1, [x0,40] bl FtlMapTblRecovery @@ -12420,33 +12767,33 @@ FtlL2PDataInit: stp x19, x20, [sp,16] adrp x20, .LANCHOR2 add x19, x20, :lo12:.LANCHOR2 - ldr w2, [x19,848] - ldr x0, [x19,1200] + ldr w2, [x19,852] + ldr x0, [x19,1208] lsl w2, w2, 1 bl ftl_memset - ldrh w3, [x19,828] + ldrh w3, [x19,834] mov w1, 255 - ldrh w2, [x19,858] - ldr x0, [x19,1272] + ldrh w2, [x19,862] + ldr x0, [x19,1280] mul w2, w3, w2 bl ftl_memset mov w2, 0 mov w4, -1 -.L1943: +.L2053: add x0, x20, :lo12:.LANCHOR2 - ldrh w1, [x0,858] + ldrh w1, [x0,862] cmp w1, w2 - bls .L1945 - ldr x3, [x0,1264] + bls .L2055 + ldr x3, [x0,1272] ubfiz x1, x2, 4, 16 add x3, x3, x1 str wzr, [x3,4] - ldr x3, [x0,1264] + ldr x3, [x0,1272] strh w4, [x3,x1] - ldr x3, [x0,1264] + ldr x3, [x0,1272] add x3, x3, x1 - ldrh w1, [x0,828] - ldr x0, [x0,1272] + ldrh w1, [x0,834] + ldr x0, [x0,1280] mul w1, w1, w2 add w2, w2, 1 sxtw x1, w1 @@ -12454,27 +12801,27 @@ FtlL2PDataInit: and x1, x1, -4 add x0, x0, x1 str x0, [x3,8] - b .L1943 -.L1945: + b .L2053 +.L2055: mov w2, -1 - strh w2, [x0,3754] - strh w2, [x0,3752] - add x1, x0, 3752 - ldr w2, [x0,848] strh w2, [x0,3762] - mov w2, -3902 - strh w2, [x0,3756] - ldrh w2, [x0,3908] strh w2, [x0,3760] - ldrh w2, [x0,856] - strh w2, [x0,3758] - ldr x2, [x0,1192] - str x2, [x0,3768] - ldr x2, [x0,1256] - str x2, [x0,3776] + add x1, x0, 3760 + ldr w2, [x0,852] + strh w2, [x0,3770] + mov w2, -3902 + strh w2, [x0,3764] + ldrh w2, [x0,3920] + strh w2, [x0,3768] + ldrh w2, [x0,860] + strh w2, [x0,3766] ldr x2, [x0,1200] + str x2, [x0,3776] + ldr x2, [x0,1264] str x2, [x0,3784] - ldr x0, [x0,1240] + ldr x2, [x0,1208] + str x2, [x0,3792] + ldr x0, [x0,1248] str x0, [x1,40] ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -12489,7 +12836,7 @@ FtlLoadMapInfo: bl FtlL2PDataInit adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 3752 + add x0, x0, 3760 bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 @@ -12505,42 +12852,42 @@ ftl_sb_update_avl_pages: uxth w2, w2 strh wzr, [x0,4] mov w6, 65535 - ldrh w4, [x4,748] -.L1948: + ldrh w4, [x4,756] +.L2058: cmp w2, w4 - bcs .L1954 + bcs .L2064 add x5, x0, x2, sxtw 1 ldrh w5, [x5,16] cmp w5, w6 - beq .L1949 + beq .L2059 ldrh w5, [x0,4] add w5, w5, 1 strh w5, [x0,4] -.L1949: +.L2059: add w2, w2, 1 uxth w2, w2 - b .L1948 -.L1954: + b .L2058 +.L2064: add x3, x3, :lo12:.LANCHOR2 mov w6, 65535 add x4, x0, x4, uxth 1 - ldrh w5, [x3,818] + ldrh w5, [x3,824] mov x3, x0 -.L1951: +.L2061: cmp x3, x4 - beq .L1955 + beq .L2065 ldrh w2, [x3,16] cmp w2, w6 - beq .L1952 + beq .L2062 ldrh w2, [x0,4] add w2, w5, w2 sub w2, w2, #1 sub w2, w2, w1 strh w2, [x0,4] -.L1952: +.L2062: add x3, x3, 2 - b .L1951 -.L1955: + b .L2061 +.L2065: ret .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 @@ -12559,51 +12906,51 @@ FtlReUsePrevPpa: uxth w0, w0 add x2, x21, :lo12:.LANCHOR2 ubfiz x22, x0, 1, 16 - ldr x3, [x2,1184] + ldr x3, [x2,1192] ldrh w1, [x3,x22] - cbnz w1, .L1957 - ldr x19, [x2,3592] - cbz x19, .L1958 - ldrh w3, [x2,3600] + cbnz w1, .L2067 + ldr x19, [x2,3600] + cbz x19, .L2068 + ldrh w3, [x2,3608] mov x4, -6148914691236517206 - ldr x2, [x2,1280] + ldr x2, [x2,1288] mov w5, 65535 sub x19, x19, x2 asr x19, x19, 1 madd x19, x4, x19, x19 mov w4, 6 uxth w19, w19 -.L1959: +.L2069: cmp w1, w3 - beq .L1958 + beq .L2068 cmp w19, w0 - bne .L1960 + bne .L2070 add x21, x21, :lo12:.LANCHOR2 mov w1, w19 - add x0, x21, 3592 + add x0, x21, 3600 bl List_remove_node - ldrh w0, [x21,3600] + ldrh w0, [x21,3608] sub w0, w0, #1 - strh w0, [x21,3600] + strh w0, [x21,3608] mov w0, w19 bl INSERT_DATA_LIST - ldr x1, [x21,1184] + ldr x1, [x21,1192] ldrh w0, [x1,x22] add w0, w0, 1 strh w0, [x1,x22] - b .L1958 -.L1960: + b .L2068 +.L2070: umull x19, w19, w4 ldrh w19, [x2,x19] cmp w19, w5 - beq .L1958 + beq .L2068 add w1, w1, 1 uxth w1, w1 - b .L1959 -.L1957: + b .L2069 +.L2067: add w1, w1, 1 strh w1, [x3,x22] -.L1958: +.L2068: add x1, x29, 60 mov w0, w20 mov w2, 1 @@ -12633,49 +12980,49 @@ make_superblock: mov x20, x0 mov x23, x1 mov w25, -1 - ldrh w24, [x1,748] -.L1966: + ldrh w24, [x1,756] +.L2076: cmp w24, w21, uxth - bls .L1977 - add x0, x23, 776 + bls .L2087 + add x0, x23, 784 ldrh w1, [x19] ldrb w0, [x0,x21] bl V2P_block strh w25, [x22] mov w26, w0 bl FtlBbmIsBadBlock - cbnz w0, .L1967 + cbnz w0, .L2077 strh w26, [x22] ldrb w0, [x19,7] add w0, w0, 1 strb w0, [x19,7] -.L1967: +.L2077: add x21, x21, 1 add x22, x22, 2 - b .L1966 -.L1977: + b .L2076 +.L2087: add x0, x20, :lo12:.LANCHOR2 ldrb w1, [x19,7] strb wzr, [x19,9] - ldrh w2, [x0,818] + ldrh w2, [x0,824] mul w1, w1, w2 strh w1, [x19,4] - ldr w1, [x0,652] - cbz w1, .L1969 + ldr w1, [x0,660] + cbz w1, .L2079 ldrh w1, [x19] - ldr x0, [x0,1168] + ldr x0, [x0,1176] ldrh w0, [x0,x1,lsl 1] cmp w0, 79 - bhi .L1969 + bhi .L2079 mov w0, 1 strb w0, [x19,9] -.L1969: - adrp x0, .LANCHOR0+24 - ldrb w0, [x0,#:lo12:.LANCHOR0+24] - cbz w0, .L1970 +.L2079: + adrp x0, .LANCHOR0+88 + ldrb w0, [x0,#:lo12:.LANCHOR0+88] + cbz w0, .L2080 mov w0, 1 strb w0, [x19,9] -.L1970: +.L2080: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -12688,79 +13035,104 @@ make_superblock: .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -96]! mov w1, 0 add x29, sp, 0 stp x19, x20, [sp,16] adrp x20, .LANCHOR2 - str x23, [sp,48] add x19, x20, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - add x21, x19, 1408 - add x23, x19, 3896 - ldr x0, [x19,1048] - ldrh w2, [x19,756] - str x0, [x21,8] - ldr x0, [x19,1112] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] + add x22, x19, 1416 + add x23, x19, 3904 + ldr x0, [x19,1056] + ldrh w2, [x19,764] + str x0, [x22,8] + ldr x0, [x19,1120] lsl w2, w2, 1 - str x0, [x21,16] - ldr x0, [x19,1184] + str x0, [x22,16] + ldr x0, [x19,1192] bl ftl_memset - ldrh w0, [x19,3896] + ldrh w0, [x19,3904] mov w1, 65535 cmp w0, w1 - bne .L1979 -.L1987: + bne .L2089 +.L2100: mov w19, -1 - b .L1980 -.L1979: + b .L2090 +.L2089: mov w1, 1 + adrp x24, .LANCHOR0 + mov w25, 61604 + mov w26, -1 bl FtlGetLastWrittenPage - sxth w22, w0 + ldrsh w28, [x19,3904] + sxth w21, w0 add w0, w0, 1 strh w0, [x23,2] - mov w23, 61604 -.L1981: - tbnz w22, #31, .L1986 - ldrh w0, [x19,3896] +.L2091: + adrp x23, .LANCHOR0 + tbnz w21, #31, .L2099 + orr w0, w21, w28, lsl 10 mov w1, 1 + str w0, [x22,4] mov w2, w1 - orr w0, w22, w0, lsl 10 - str w0, [x21,4] - ldr x0, [x19,1048] - str x0, [x21,8] - mov x0, x21 + ldr x0, [x19,1056] + str x0, [x22,8] + mov x0, x22 bl FlashReadPages - ldr w0, [x21] + add x0, x24, :lo12:.LANCHOR0 + ldrb w0, [x0,88] + cbz w0, .L2092 + ldr x0, [x22,16] + ldr w27, [x0,12] + cbz w27, .L2092 + ldr x0, [x22,8] + ldrh w1, [x19,834] + bl js_hash + cmp w27, w0 + beq .L2092 + cbnz w21, .L2093 + ldrh w0, [x19,3908] + cmp w28, w0 + beq .L2093 + sxth w28, w0 + ldrh w21, [x19,826] + b .L2095 +.L2093: + str w26, [x22] +.L2092: + ldr w0, [x22] cmn w0, #1 - beq .L1982 - ldr x0, [x19,1048] + beq .L2095 + ldr x0, [x19,1056] ldr w1, [x0] mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - bne .L1982 - ldr x0, [x19,1112] + bne .L2095 + ldr x0, [x19,1120] ldrh w0, [x0] - cmp w0, w23 - bne .L1982 -.L1986: + cmp w0, w25 + bne .L2095 +.L2099: add x19, x20, :lo12:.LANCHOR2 mov w2, 48 - add x22, x19, 1408 - add x0, x19, 3520 - adrp x21, .LANCHOR0 - ldr x1, [x22,8] + add x21, x19, 1416 + add x0, x19, 3528 + ldr x1, [x21,8] bl ftl_memcpy - ldr x1, [x22,8] - ldrh w2, [x19,756] - ldr x0, [x19,1184] + ldr x1, [x21,8] + ldrh w2, [x19,764] + ldr x0, [x19,1192] add x1, x1, 48 lsl w2, w2, 1 bl ftl_memcpy - ldrh w2, [x19,756] - add x0, x21, :lo12:.LANCHOR0 - ldr x3, [x22,8] + ldrh w2, [x19,764] + add x0, x23, :lo12:.LANCHOR0 + ldr x3, [x21,8] uxth x1, w2 ldr x0, [x0,16] add x1, x1, 24 @@ -12769,146 +13141,148 @@ FtlLoadSysInfo: add w2, w2, 4 add x1, x3, x1, lsl 2 bl ftl_memcpy - ldrh w0, [x19,860] - cbz w0, .L1984 - ldrh w0, [x19,756] - ldr x3, [x22,8] + ldrh w0, [x19,864] + cbz w0, .L2097 + ldrh w0, [x19,764] + ldr x3, [x21,8] lsr w1, w0, 3 - ldrh w2, [x19,856] + ldrh w2, [x19,860] add w1, w1, w0, lsl 1 - ldr x0, [x19,1248] + ldr x0, [x19,1256] add w1, w1, 52 lsl w2, w2, 2 and x1, x1, 65532 add x1, x3, x1 bl ftl_memcpy - b .L1984 -.L1982: - sub w22, w22, #1 - sxth w22, w22 - b .L1981 -.L1984: + b .L2097 +.L2095: + sub w21, w21, #1 + sxth w21, w21 + b .L2091 +.L2097: add x0, x20, :lo12:.LANCHOR2 mov w2, 19539 movk w2, 0x4654, lsl 16 - ldr w3, [x0,3520] + ldr w3, [x0,3528] cmp w3, w2 - bne .L1987 - ldrb w3, [x0,3530] - ldrh w2, [x0,770] - ldrh w6, [x0,3528] - strh w6, [x0,3902] + bne .L2100 + ldrb w3, [x0,3538] + ldrh w2, [x0,778] + ldrh w5, [x0,3536] + strh w5, [x0,3910] cmp w3, w2 - bne .L1987 - ldrh w3, [x0,818] - add x21, x21, :lo12:.LANCHOR0 - ldrh w2, [x0,824] - adrp x4, .LANCHOR4 - add x5, x4, :lo12:.LANCHOR4 - mov x19, x4 - mul w3, w3, w6 - str w3, [x0,1396] - str w6, [x5,3400] + bne .L2100 + ldrh w3, [x0,824] + add x23, x23, :lo12:.LANCHOR0 + ldrh w2, [x0,830] + adrp x6, .LANCHOR4 + add x4, x6, :lo12:.LANCHOR4 + mov x19, x6 + mul w3, w3, w5 + str w3, [x0,1404] + str w5, [x4,3416] mul w3, w3, w2 - str w3, [x21,4048] - ldrh w2, [x0,1302] - ldr w3, [x0,760] - strh wzr, [x5,3410] + str w3, [x23,4048] + ldrh w2, [x0,1310] + ldr w3, [x0,768] + strh wzr, [x4,3426] sub w2, w3, w2 - ldrh w3, [x0,748] - sub w2, w2, w6 - strb wzr, [x5,3414] - strb wzr, [x5,3416] + ldrh w3, [x0,756] + sub w2, w2, w5 + strb wzr, [x4,3430] + strb wzr, [x4,3432] udiv w2, w2, w3 - ldrh w3, [x0,3536] - strh w2, [x5,3404] + ldrh w3, [x0,3544] + strh w2, [x4,3420] lsr w7, w3, 6 and w3, w3, 63 - strb w3, [x0,3614] - ldrb w3, [x0,3531] - strb w3, [x0,3616] + strb w3, [x0,3622] + ldrb w3, [x0,3539] + strb w3, [x0,3624] mov w3, -1 - strh w3, [x5,3408] - ldrh w3, [x0,3538] - strh w3, [x0,3656] - ldrh w3, [x0,3540] - ldrh w6, [x0,3534] - lsr w5, w3, 6 + strh w3, [x4,3424] + ldrh w3, [x0,3546] + strh w3, [x0,3664] + ldrh w3, [x0,3548] + ldrh w5, [x0,3542] + lsr w4, w3, 6 and w3, w3, 63 - strb w3, [x0,3662] - ldrb w3, [x0,3532] - strb w3, [x0,3664] - ldrh w3, [x0,3542] - strh w3, [x0,3704] - ldrh w3, [x0,3544] - strh w5, [x0,3658] - lsr w5, w3, 6 + strb w3, [x0,3670] + ldrb w3, [x0,3540] + strb w3, [x0,3672] + ldrh w3, [x0,3550] + strh w3, [x0,3712] + ldrh w3, [x0,3552] + strh w4, [x0,3666] + lsr w4, w3, 6 and w3, w3, 63 - strh w6, [x0,3608] - strb w3, [x0,3710] - strh w7, [x0,3610] - strh w5, [x0,3706] - ldrb w3, [x0,3533] - strb w3, [x0,3712] - ldr w2, [x0,3552] - str w2, [x0,904] - ldr w1, [x0,3560] - ldr w2, [x0,872] - str wzr, [x0,880] - str wzr, [x0,884] - cmp w1, w2 - str wzr, [x0,900] - str wzr, [x0,896] - str wzr, [x0,908] - str wzr, [x0,916] - str wzr, [x0,892] - bls .L1988 - str w1, [x0,872] -.L1988: - add x0, x20, :lo12:.LANCHOR2 - ldr w1, [x0,3556] + strh w5, [x0,3616] + strb w3, [x0,3718] + strh w7, [x0,3618] + strh w4, [x0,3714] + ldrb w3, [x0,3541] + strb w3, [x0,3720] + ldr w2, [x0,3560] + str w2, [x0,908] + ldr w1, [x0,3568] ldr w2, [x0,876] + str wzr, [x0,884] + str wzr, [x0,888] cmp w1, w2 - bls .L1989 + str wzr, [x0,904] + str wzr, [x0,900] + str wzr, [x0,912] + str wzr, [x0,920] + str wzr, [x0,896] + bls .L2101 str w1, [x0,876] -.L1989: - mov w0, 65535 - cmp w6, w0 - beq .L1990 +.L2101: add x0, x20, :lo12:.LANCHOR2 - add x0, x0, 3608 + ldr w1, [x0,3564] + ldr w2, [x0,880] + cmp w1, w2 + bls .L2102 + str w1, [x0,880] +.L2102: + mov w0, 65535 + cmp w5, w0 + beq .L2103 + add x0, x20, :lo12:.LANCHOR2 + add x0, x0, 3616 bl make_superblock -.L1990: +.L2103: add x1, x20, :lo12:.LANCHOR2 - add x0, x1, 3656 - ldrh w2, [x1,3656] + add x0, x1, 3664 + ldrh w2, [x1,3664] mov w1, 65535 cmp w2, w1 - beq .L1991 + beq .L2104 bl make_superblock -.L1991: +.L2104: add x20, x20, :lo12:.LANCHOR2 mov w1, 65535 - add x0, x20, 3704 - ldrh w2, [x20,3704] + add x0, x20, 3712 + ldrh w2, [x20,3712] cmp w2, w1 - beq .L1992 + beq .L2105 bl make_superblock -.L1992: +.L2105: add x1, x19, :lo12:.LANCHOR4 mov w19, 0 - add x0, x1, 3408 - ldrh w2, [x1,3408] + add x0, x1, 3424 + ldrh w2, [x1,3424] mov w1, 65535 cmp w2, w1 - beq .L1980 + beq .L2090 bl make_superblock -.L1980: +.L2090: mov w0, w19 - ldr x23, [sp,48] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 96 ret .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 @@ -12934,70 +13308,70 @@ FtlDumpBlockInfo: adrp x0, .LC47 add x1, x1, 32 add x0, x0, :lo12:.LC47 - ldrh w23, [x19,818] + ldrh w23, [x19,824] bl printk - ldr x3, [x19,1184] + ldr x3, [x19,1192] ubfiz x2, x22, 1, 16 - adrp x0, .LC62 + adrp x0, .LC60 mov w1, w22 - add x0, x0, :lo12:.LC62 + add x0, x0, :lo12:.LC60 ldrh w2, [x3,x2] bl printk strh w22, [x29,112] add x0, x29, 112 bl make_superblock - cbnz w24, .L2006 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2006 + cbnz w24, .L2125 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2125 mov w0, w22 bl ftl_get_blk_mode cmp w0, 1 mov w22, w0 - bne .L1998 - ldrh w23, [x19,820] - b .L1998 -.L2006: + bne .L2117 + ldrh w23, [x19,826] + b .L2117 +.L2125: mov w22, 0 -.L1998: +.L2117: add x3, x20, :lo12:.LANCHOR2 - adrp x0, .LC63 - adrp x24, .LC58 - add x0, x0, :lo12:.LC63 + adrp x0, .LC61 + adrp x24, .LC56 + add x0, x0, :lo12:.LC61 mov w1, w22 mov w2, w23 - ldrh w3, [x3,818] + ldrh w3, [x3,824] mov w21, 0 mov w26, 65535 mov w27, 56 mov w25, 4 - add x24, x24, :lo12:.LC58 + add x24, x24, :lo12:.LC56 bl printk -.L1999: +.L2118: add x0, x20, :lo12:.LANCHOR2 mov x3, 0 mov w19, w3 - ldrh w5, [x0,748] - ldrh w6, [x0,828] - ldrh w7, [x0,830] -.L2000: + ldrh w5, [x0,756] + ldrh w6, [x0,834] + ldrh w7, [x0,836] +.L2119: cmp w5, w3, uxth - bls .L2014 + bls .L2133 add x0, x29, 112 add x0, x0, x3, lsl 1 ldrh w1, [x0,16] cmp w1, w26 - beq .L2001 + beq .L2120 add x2, x20, :lo12:.LANCHOR2 orr w1, w21, w1, lsl 10 umull x0, w19, w27 - ldr x4, [x2,992] + ldr x4, [x2,1000] add x4, x4, x0 str w1, [x4,4] - ldr x1, [x2,992] - ldr x4, [x2,1072] + ldr x1, [x2,1000] + ldr x4, [x2,1080] add x0, x1, x0 - ldr x2, [x2,1128] + ldr x2, [x2,1136] mul w1, w19, w6 sdiv w1, w1, w25 add x1, x4, x1, sxtw 2 @@ -13008,26 +13382,26 @@ FtlDumpBlockInfo: sdiv w1, w1, w25 add x1, x2, x1, sxtw 2 str x1, [x0,16] -.L2001: +.L2120: add x3, x3, 1 - b .L2000 -.L2014: + b .L2119 +.L2133: add x0, x20, :lo12:.LANCHOR2 mov w1, w19 mov w2, w22 mov x28, 0 - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages mov x8, 56 -.L2003: +.L2122: cmp w19, w28, uxth - bls .L2015 + bls .L2134 add x0, x20, :lo12:.LANCHOR2 ldrh w1, [x29,112] mul x2, x28, x8 str x8, [x29,104] add x28, x28, 1 - ldr x4, [x0,992] + ldr x4, [x0,1000] add x3, x4, x2 ldr x0, [x3,8] ldr x7, [x3,16] @@ -13044,13 +13418,13 @@ FtlDumpBlockInfo: ldr w7, [x7,12] bl printk ldr x8, [x29,104] - b .L2003 -.L2015: + b .L2122 +.L2134: add w21, w21, 1 uxth w21, w21 cmp w21, w23 - bne .L1999 -.L2005: + bne .L2118 +.L2124: sub sp, x29, #16 mov w0, 0 ldp x19, x20, [sp,32] @@ -13076,27 +13450,27 @@ FtlScanAllBlock: add x29, sp, 16 stp x23, x24, [sp,64] stp x21, x22, [sp,48] - adrp x23, .LC65 - adrp x22, .LC64 - adrp x24, .LC66 - add x22, x22, :lo12:.LC64 + adrp x23, .LC63 + adrp x22, .LC62 + adrp x24, .LC64 + add x22, x22, :lo12:.LC62 stp x19, x20, [sp,32] - add x23, x23, :lo12:.LC65 + add x23, x23, :lo12:.LC63 mov w20, 0 - add x24, x24, :lo12:.LC66 + add x24, x24, :lo12:.LC64 stp x25, x26, [sp,80] bl printk -.L2017: +.L2136: adrp x21, .LANCHOR2 add x19, x21, :lo12:.LANCHOR2 - ldrh w0, [x19,758] + ldrh w0, [x19,766] cmp w0, w20 - bls .L2026 + bls .L2145 mov w0, w20 strh w20, [x29,80] bl ftl_get_blk_mode mov w3, w0 - ldr x4, [x19,1184] + ldr x4, [x19,1192] ubfiz x2, x20, 1, 16 mov w1, w20 mov x0, x22 @@ -13105,31 +13479,31 @@ FtlScanAllBlock: add x0, x29, 80 bl make_superblock mov x1, 0 - ldrh w6, [x19,748] - ldrh w7, [x19,828] + ldrh w6, [x19,756] + ldrh w7, [x19,834] mov w9, 65535 - ldrh w8, [x19,830] + ldrh w8, [x19,836] mov w10, 56 mov w19, w1 mov w5, 4 -.L2018: +.L2137: cmp w6, w1, uxth - bls .L2027 + bls .L2146 add x0, x29, 80 add x0, x0, x1, lsl 1 ldrh w0, [x0,16] cmp w0, w9 - beq .L2019 + beq .L2138 add x3, x21, :lo12:.LANCHOR2 lsl w0, w0, 10 umull x2, w19, w10 - ldr x4, [x3,992] + ldr x4, [x3,1000] add x4, x4, x2 str w0, [x4,4] - ldr x0, [x3,992] - ldr x4, [x3,1072] + ldr x0, [x3,1000] + ldr x4, [x3,1080] add x2, x0, x2 - ldr x3, [x3,1128] + ldr x3, [x3,1136] mul w0, w19, w7 sdiv w0, w0, w5 add x0, x4, x0, sxtw 2 @@ -13140,22 +13514,22 @@ FtlScanAllBlock: sdiv w0, w0, w5 add x0, x3, x0, sxtw 2 str x0, [x2,16] -.L2019: +.L2138: add x1, x1, 1 - b .L2018 -.L2027: + b .L2137 +.L2146: add x0, x21, :lo12:.LANCHOR2 mov w1, w19 mov w2, 0 mov x25, 0 mov x26, 56 - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages -.L2021: +.L2140: add x0, x21, :lo12:.LANCHOR2 cmp w19, w25, uxth - bls .L2028 - ldr x4, [x0,992] + bls .L2147 + ldr x4, [x0,1000] mul x2, x25, x26 ldrh w1, [x29,80] add x25, x25, 1 @@ -13174,22 +13548,22 @@ FtlScanAllBlock: ldr w3, [x3,4] ldr w7, [x7,12] bl printk - b .L2021 -.L2028: - ldr x0, [x0,992] + b .L2140 +.L2147: + ldr x0, [x0,1000] mov w1, w19 mov w2, 1 mov x25, 0 mov x26, 56 bl FlashReadPages -.L2023: +.L2142: cmp w19, w25, uxth - bls .L2029 + bls .L2148 add x0, x21, :lo12:.LANCHOR2 ldrh w1, [x29,80] mul x2, x25, x26 add x25, x25, 1 - ldr x4, [x0,992] + ldr x4, [x0,1000] add x3, x4, x2 ldr x0, [x3,8] ldr x7, [x3,16] @@ -13205,12 +13579,12 @@ FtlScanAllBlock: ldr w3, [x3,4] ldr w7, [x7,12] bl printk - b .L2023 -.L2029: + b .L2142 +.L2148: add w20, w20, 1 uxth w20, w20 - b .L2017 -.L2026: + b .L2136 +.L2145: sub sp, x29, #16 mov w0, 0 ldp x19, x20, [sp,32] @@ -13237,34 +13611,34 @@ SupperBlkListInit: stp x27, x28, [sp,80] mov w23, 6 mov w27, 0 - ldrh w2, [x19,758] + ldrh w2, [x19,766] mov w22, w27 - ldr x0, [x19,1280] + ldr x0, [x19,1288] mov w24, -1 mov w25, 32768 mul w2, w2, w23 bl ftl_memset - str xzr, [x19,3592] - str xzr, [x19,3568] + str xzr, [x19,3600] str xzr, [x19,3576] - strh wzr, [x19,3584] - strh wzr, [x19,3600] - strh wzr, [x19,862] + str xzr, [x19,3584] + strh wzr, [x19,3592] + strh wzr, [x19,3608] + strh wzr, [x19,866] mov w19, w27 -.L2031: +.L2150: add x0, x21, :lo12:.LANCHOR2 - ldrh w1, [x0,756] + ldrh w1, [x0,764] cmp w19, w1 - bge .L2038 + bge .L2157 mov w20, 0 - ldrh w3, [x0,748] - ldrh w2, [x0,818] + ldrh w3, [x0,756] + ldrh w2, [x0,824] mov w28, w20 mov x26, x0 -.L2039: +.L2158: cmp w28, w3 - bge .L2040 - add x0, x26, 776 + bge .L2159 + add x0, x26, 784 mov w1, w19 str x2, [x29,96] str x3, [x29,104] @@ -13273,56 +13647,56 @@ SupperBlkListInit: bl FtlBbmIsBadBlock ldr x3, [x29,104] ldr x2, [x29,96] - cbnz w0, .L2032 + cbnz w0, .L2151 add w20, w2, w20 sxth w20, w20 -.L2032: +.L2151: add w28, w28, 1 sxth w28, w28 - b .L2039 -.L2040: - cbz w20, .L2034 + b .L2158 +.L2159: + cbz w20, .L2153 sdiv w20, w25, w20 sxth w20, w20 - b .L2035 -.L2034: + b .L2154 +.L2153: add x0, x21, :lo12:.LANCHOR2 - ldr x0, [x0,1184] + ldr x0, [x0,1192] strh w24, [x0,w19,sxtw 1] -.L2035: +.L2154: add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,1280] + ldr x1, [x0,1288] smaddl x1, w19, w23, x1 strh w20, [x1,4] - ldrh w1, [x0,3608] + ldrh w1, [x0,3616] cmp w19, w1 - beq .L2036 - ldrh w1, [x0,3656] + beq .L2155 + ldrh w1, [x0,3664] cmp w19, w1 - beq .L2036 - ldrh w1, [x0,3704] + beq .L2155 + ldrh w1, [x0,3712] cmp w19, w1 - beq .L2036 - ldr x0, [x0,1184] + beq .L2155 + ldr x0, [x0,1192] ldrh w0, [x0,w19,sxtw 1] - cbnz w0, .L2037 + cbnz w0, .L2156 add w27, w27, 1 mov w0, w19 uxth w27, w27 bl INSERT_FREE_LIST - b .L2036 -.L2037: + b .L2155 +.L2156: add w22, w22, 1 mov w0, w19 uxth w22, w22 bl INSERT_DATA_LIST -.L2036: +.L2155: add w19, w19, 1 sxth w19, w19 - b .L2031 -.L2038: - strh w22, [x0,3584] - strh w27, [x0,3600] + b .L2150 +.L2157: + strh w22, [x0,3592] + strh w27, [x0,3608] mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13341,48 +13715,48 @@ Ftl_save_ext_data: add x0, x0, :lo12:.LANCHOR4 movk w1, 0x4654, lsl 16 stp x29, x30, [sp, -16]! - add x2, x0, 3456 + add x2, x0, 3472 add x29, sp, 0 - ldr w3, [x0,3456] + ldr w3, [x0,3472] cmp w3, w1 - bne .L2041 - mov w1, 80 + bne .L2160 + mov w1, 86 movk w1, 0x5000, lsl 16 str w1, [x2,4] - ldr w1, [x0,3968] - ldr w0, [x0,3972] + ldr w1, [x0,3984] + ldr w0, [x0,3988] str w0, [x2,92] adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 str w1, [x2,88] - ldr w1, [x0,880] - str w1, [x2,8] ldr w1, [x0,884] - str w1, [x2,12] - ldr w1, [x0,900] - str w1, [x2,16] - ldr w1, [x0,896] - str w1, [x2,20] - ldr w1, [x0,908] - str w1, [x2,28] - ldr w1, [x0,912] - str w1, [x2,32] + str w1, [x2,8] ldr w1, [x0,888] - str w1, [x2,36] - ldr w1, [x0,892] - str w1, [x2,40] + str w1, [x2,12] + ldr w1, [x0,904] + str w1, [x2,16] + ldr w1, [x0,900] + str w1, [x2,20] + ldr w1, [x0,912] + str w1, [x2,28] ldr w1, [x0,916] - str w1, [x2,44] + str w1, [x2,32] + ldr w1, [x0,892] + str w1, [x2,36] + ldr w1, [x0,896] + str w1, [x2,40] ldr w1, [x0,920] + str w1, [x2,44] + ldr w1, [x0,924] str w1, [x2,48] - ldr w1, [x0,868] - ldr w0, [x0,864] + ldr w1, [x0,872] + ldr w0, [x0,868] str w1, [x2,60] mov w1, 1 str w0, [x2,64] mov w0, 0 bl FtlVendorPartWrite -.L2041: +.L2160: ldp x29, x30, [sp], 16 ret .size Ftl_save_ext_data, .-Ftl_save_ext_data @@ -13395,51 +13769,51 @@ FtlEctTblFlush: add x3, x2, :lo12:.LANCHOR2 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w4, [x3,652] - cbz w4, .L2044 - ldr w3, [x3,920] + ldr w4, [x3,660] + cbz w4, .L2163 + ldr w3, [x3,924] cmp w3, 39 mov w3, 4 csel w1, w1, w3, hi -.L2044: +.L2163: adrp x3, .LANCHOR4 add x3, x3, :lo12:.LANCHOR4 - ldrh w4, [x3,3976] + ldrh w4, [x3,3992] cmp w4, 31 - bhi .L2045 + bhi .L2164 add w4, w4, 1 mov w1, 1 - strh w4, [x3,3976] -.L2045: - cbnz w0, .L2046 + strh w4, [x3,3992] +.L2164: + cbnz w0, .L2165 add x0, x2, :lo12:.LANCHOR2 - ldr x3, [x0,1160] + ldr x3, [x0,1168] ldr w0, [x3,20] add w1, w1, w0 ldr w0, [x3,16] cmp w0, w1 - bcc .L2047 -.L2046: + bcc .L2166 +.L2165: add x2, x2, :lo12:.LANCHOR2 - ldr x0, [x2,1160] + ldr x0, [x2,1168] ldr w1, [x0,16] str w1, [x0,20] mov w1, 17221 movk w1, 0x4254, lsl 16 str w1, [x0] - ldr x0, [x2,1160] - ldrh w1, [x2,1144] + ldr x0, [x2,1168] + ldrh w1, [x2,1152] str wzr, [x0,4] lsl w3, w1, 9 str w3, [x0,12] ldr w3, [x0,8] - ldr x2, [x2,1160] + ldr x2, [x2,1168] add w3, w3, 1 str w3, [x0,8] mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2047: +.L2166: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -13456,89 +13830,164 @@ Ftl_load_ext_data: adrp x19, .LANCHOR4 str x21, [sp,32] add x20, x19, :lo12:.LANCHOR4 - add x21, x20, 3456 + add x21, x20, 3472 mov x2, x21 bl FtlVendorPartRead - ldr w1, [x20,3456] + ldr w1, [x20,3472] mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - beq .L2052 + beq .L2171 mov x0, x21 mov w1, 0 mov w2, 512 bl ftl_memset mov w0, 19539 movk w0, 0x4654, lsl 16 - str w0, [x20,3456] -.L2052: + str w0, [x20,3472] +.L2171: add x1, x19, :lo12:.LANCHOR4 mov w2, 19539 movk w2, 0x4654, lsl 16 - add x0, x1, 3456 + add x0, x1, 3472 adrp x20, .LANCHOR2 - ldr w3, [x1,3456] + ldr w3, [x1,3472] cmp w3, w2 - bne .L2053 - ldr w2, [x1,3544] - str w2, [x1,3968] - ldr w2, [x1,3548] - str w2, [x1,3972] + bne .L2172 + ldr w2, [x1,3560] + str w2, [x1,3984] + ldr w2, [x1,3564] + str w2, [x1,3988] add x1, x20, :lo12:.LANCHOR2 ldr w2, [x0,8] - str w2, [x1,880] - ldr w2, [x0,12] str w2, [x1,884] - ldr w2, [x0,16] - str w2, [x1,900] - ldr w2, [x0,20] - str w2, [x1,896] - ldr w2, [x0,28] - str w2, [x1,908] - ldr w2, [x0,32] - str w2, [x1,912] - ldr w2, [x0,36] + ldr w2, [x0,12] str w2, [x1,888] - ldr w2, [x0,40] - str w2, [x1,892] - ldr w2, [x0,44] + ldr w2, [x0,16] + str w2, [x1,904] + ldr w2, [x0,20] + str w2, [x1,900] + ldr w2, [x0,28] + str w2, [x1,912] + ldr w2, [x0,32] str w2, [x1,916] + ldr w2, [x0,36] + str w2, [x1,892] + ldr w2, [x0,40] + str w2, [x1,896] + ldr w2, [x0,44] + str w2, [x1,920] ldr w2, [x0,48] ldr w0, [x0,60] - str w2, [x1,920] - str w0, [x1,868] -.L2053: + str w2, [x1,924] + str w0, [x1,872] +.L2172: add x1, x19, :lo12:.LANCHOR4 add x0, x20, :lo12:.LANCHOR2 - ldr w2, [x1,3524] + ldr w2, [x1,3540] mov w1, 34661 movk w1, 0x1234, lsl 16 - str wzr, [x0,864] + str wzr, [x0,868] cmp w2, w1 - bne .L2054 + bne .L2173 mov w1, 1 - str w1, [x0,652] + str w1, [x0,660] adrp x0, .LC45 - adrp x1, .LC67 + adrp x1, .LC65 add x0, x0, :lo12:.LC45 - add x1, x1, :lo12:.LC67 + add x1, x1, :lo12:.LC65 bl printk -.L2054: +.L2173: add x0, x20, :lo12:.LANCHOR2 add x19, x19, :lo12:.LANCHOR4 ldr x21, [sp,32] - ldrh w2, [x0,808] - ldr w3, [x0,904] - ldr w1, [x0,908] - ldrh w0, [x0,756] + ldrh w2, [x0,816] + ldr w3, [x0,908] + ldr w1, [x0,912] + ldrh w0, [x0,764] madd w1, w2, w3, w1 udiv w0, w1, w0 - str w0, [x19,3980] + str w0, [x19,3996] ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 + .global ftl_scan_all_ppa + .type ftl_scan_all_ppa, %function +ftl_scan_all_ppa: + sub sp, sp, #80 + adrp x0, .LC66 + add x0, x0, :lo12:.LC66 + stp x29, x30, [sp,16] + add x29, sp, 16 + stp x19, x20, [sp,32] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + stp x23, x24, [sp,64] + adrp x23, .LC67 + add x20, x19, 1416 + ldrh w1, [x19,822] + add x23, x23, :lo12:.LC67 + ldrh w2, [x19,824] + stp x21, x22, [sp,48] + mov w22, 0 + bl printk +.L2175: + ldrh w0, [x19,822] + cmp w22, w0 + bcs .L2177 + lsl w24, w22, 10 + mov w21, 0 +.L2178: + ldrh w0, [x19,824] + cmp w21, w0 + bcs .L2179 + add w0, w21, w24 + str w0, [x20,4] + ldr x0, [x19,1056] + mov w1, 1 + str x0, [x20,8] + mov w2, 0 + ldr x0, [x19,1120] + add w21, w21, 1 + str x0, [x20,16] + mov x0, x20 + str wzr, [x20] + bl FlashReadPages + ldr x7, [x20,8] + ldr x6, [x20,16] + ldr w0, [x7,4] + str w0, [sp] + mov x0, x23 + ldr w3, [x6] + ldr w4, [x6,4] + ldr w5, [x6,8] + ldr w1, [x20,4] + ldr w2, [x20] + ldr w6, [x6,12] + ldr w7, [x7] + bl printk + b .L2178 +.L2179: + add w22, w22, 1 + b .L2175 +.L2177: + adrp x1, .LANCHOR3 + adrp x0, .LC68 + add x1, x1, :lo12:.LANCHOR3 + add x0, x0, :lo12:.LC68 + add x1, x1, 72 + bl printk + sub sp, x29, #16 + ldp x19, x20, [sp,32] + ldp x21, x22, [sp,48] + ldp x23, x24, [sp,64] + ldp x29, x30, [sp,16] + add sp, sp, 80 + ret + .size ftl_scan_all_ppa, .-ftl_scan_all_ppa + .align 2 .global update_multiplier_value .type update_multiplier_value, %function update_multiplier_value: @@ -13553,33 +14002,33 @@ update_multiplier_value: stp x23, x24, [sp,48] mov x22, 0 mov x21, x0 - ldrh w24, [x1,748] + ldrh w24, [x1,756] mov w19, w22 - ldrh w25, [x1,818] + ldrh w25, [x1,824] mov x23, x1 -.L2056: +.L2181: cmp w24, w22, uxth - bls .L2063 - add x0, x23, 776 + bls .L2188 + add x0, x23, 784 mov w1, w20 ldrb w0, [x0,x22] bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L2057 + cbnz w0, .L2182 add w19, w19, w25 uxth w19, w19 -.L2057: +.L2182: add x22, x22, 1 - b .L2056 -.L2063: - cbz w19, .L2059 + b .L2181 +.L2188: + cbz w19, .L2184 mov w0, 32768 sdiv w19, w0, w19 -.L2059: +.L2184: add x0, x21, :lo12:.LANCHOR2 mov w1, 6 umull x20, w20, w1 - ldr x0, [x0,1280] + ldr x0, [x0,1288] add x20, x0, x20 mov w0, 0 strh w19, [x20,4] @@ -13596,18 +14045,18 @@ update_multiplier_value: GetFreeBlockMinEraseCount: adrp x2, .LANCHOR2 add x2, x2, :lo12:.LANCHOR2 - ldr x1, [x2,3592] + ldr x1, [x2,3600] mov w0, w1 - cbz x1, .L2065 - ldr x0, [x2,1280] + cbz x1, .L2190 + ldr x0, [x2,1288] sub x1, x1, x0 mov x0, -6148914691236517206 asr x1, x1, 1 madd x1, x0, x1, x1 - ldr x0, [x2,1168] + ldr x0, [x2,1176] and x1, x1, 65535 ldrh w0, [x0,x1,lsl 1] -.L2065: +.L2190: ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -13617,15 +14066,15 @@ GetFreeBlockMaxEraseCount: adrp x2, .LANCHOR2 uxth w4, w0 add x5, x2, :lo12:.LANCHOR2 - ldr x1, [x5,3592] + ldr x1, [x5,3600] mov w0, w1 - cbz x1, .L2068 - ldrh w3, [x5,3600] + cbz x1, .L2193 + ldrh w3, [x5,3608] mov w0, 7 mov w6, 6 mov w7, 65535 mul w3, w3, w0 - ldr x0, [x5,1280] + ldr x0, [x5,1288] asr w3, w3, 3 cmp w4, w3 sub x1, x1, x0 @@ -13635,25 +14084,25 @@ GetFreeBlockMaxEraseCount: madd x1, x3, x1, x1 mov w3, 0 uxth w1, w1 -.L2070: +.L2195: cmp w3, w4 - beq .L2073 + beq .L2198 umull x5, w1, w6 ldrh w5, [x0,x5] cmp w5, w7 - bne .L2071 -.L2073: + bne .L2196 +.L2198: add x2, x2, :lo12:.LANCHOR2 ubfiz x1, x1, 1, 16 - ldr x0, [x2,1168] + ldr x0, [x2,1176] ldrh w0, [x0,x1] - b .L2068 -.L2071: + b .L2193 +.L2196: add w3, w3, 1 mov w1, w5 uxth w3, w3 - b .L2070 -.L2068: + b .L2195 +.L2193: ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 @@ -13661,11 +14110,11 @@ GetFreeBlockMaxEraseCount: .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: stp x29, x30, [sp, -112]! - adrp x1, .LC68 + adrp x1, .LC69 add x29, sp, 0 stp x25, x26, [sp,64] adrp x25, .LANCHOR0 - add x1, x1, :lo12:.LC68 + add x1, x1, :lo12:.LC69 add x25, x25, :lo12:.LANCHOR0 str x27, [sp,80] stp x23, x24, [sp,48] @@ -13675,78 +14124,72 @@ FtlPrintInfo2buf: bl strcpy add x20, x23, 12 ldr w2, [x25,4016] - adrp x1, .LC69 + adrp x1, .LC70 adrp x24, .LANCHOR2 mov x0, x20 - add x1, x1, :lo12:.LC69 + add x1, x1, :lo12:.LC70 add x22, x24, :lo12:.LANCHOR2 bl sprintf add x20, x20, x0, sxtw - adrp x1, .LC70 + adrp x1, .LC71 mov x0, x20 - ldr w2, [x22,836] - add x1, x1, :lo12:.LC70 + ldr w2, [x22,840] + add x1, x1, :lo12:.LC71 bl sprintf add x20, x20, x0, sxtw - adrp x0, .LANCHOR1+3160 - ldr w0, [x0,#:lo12:.LANCHOR1+3160] + adrp x0, .LANCHOR1+3288 + ldr w0, [x0,#:lo12:.LANCHOR1+3288] cmp w0, 1 - beq .L2076 + beq .L2201 sub w0, w20, w23 - b .L2077 -.L2076: + b .L2202 +.L2201: add x0, x29, 96 add x1, x29, 100 add x2, x29, 104 add x3, x29, 108 bl NandcGetTimeCfg ldr w4, [x29,104] - adrp x1, .LC71 + adrp x1, .LC72 ldr w5, [x29,108] mov x0, x20 ldr w3, [x29,100] - add x1, x1, :lo12:.LC71 + add x1, x1, :lo12:.LC72 ldr w2, [x29,96] bl sprintf add x21, x20, x0, sxtw - adrp x1, .LC72 + adrp x1, .LC73 mov x0, x21 - add x1, x1, :lo12:.LC72 + add x1, x1, :lo12:.LC73 add x21, x21, 10 adrp x20, .LANCHOR4 bl strcpy add x20, x20, :lo12:.LANCHOR4 - ldr w2, [x22,1396] - adrp x1, .LC73 - mov x0, x21 - add x1, x1, :lo12:.LC73 - bl sprintf - add x21, x21, x0, sxtw - ldr w2, [x22,3892] + ldr w2, [x22,1404] adrp x1, .LC74 mov x0, x21 add x1, x1, :lo12:.LC74 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,900] + ldr w2, [x22,3900] adrp x1, .LC75 mov x0, x21 add x1, x1, :lo12:.LC75 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,888] + ldr w2, [x22,904] adrp x1, .LC76 mov x0, x21 add x1, x1, :lo12:.LC76 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,884] + ldr w2, [x22,892] adrp x1, .LC77 mov x0, x21 add x1, x1, :lo12:.LC77 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,892] + ldr w2, [x22,888] adrp x1, .LC78 mov x0, x21 add x1, x1, :lo12:.LC78 @@ -13758,53 +14201,53 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC79 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,880] + ldr w2, [x22,900] adrp x1, .LC80 mov x0, x21 add x1, x1, :lo12:.LC80 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x20,3968] + ldr w2, [x22,884] adrp x1, .LC81 mov x0, x21 add x1, x1, :lo12:.LC81 - lsr w2, w2, 11 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x20,3972] + ldr w2, [x20,3984] adrp x1, .LC82 mov x0, x21 add x1, x1, :lo12:.LC82 lsr w2, w2, 11 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,872] + ldr w2, [x20,3988] adrp x1, .LC83 mov x0, x21 add x1, x1, :lo12:.LC83 + lsr w2, w2, 11 bl sprintf add x21, x21, x0, sxtw ldr w2, [x22,876] adrp x1, .LC84 + mov x0, x21 add x1, x1, :lo12:.LC84 + bl sprintf + add x21, x21, x0, sxtw + ldr w2, [x22,880] + adrp x1, .LC85 + add x1, x1, :lo12:.LC85 mov x0, x21 bl sprintf add x21, x21, x0, sxtw bl FtlBbtCalcTotleCnt uxth w3, w0 - ldrh w2, [x22,1302] - adrp x1, .LC85 - mov x0, x21 - add x1, x1, :lo12:.LC85 - bl sprintf - add x21, x21, x0, sxtw - ldrh w2, [x22,3600] + ldrh w2, [x22,1310] adrp x1, .LC86 mov x0, x21 add x1, x1, :lo12:.LC86 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,904] + ldrh w2, [x22,3608] adrp x1, .LC87 mov x0, x21 add x1, x1, :lo12:.LC87 @@ -13816,13 +14259,13 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC88 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x20,3980] + ldr w2, [x22,912] adrp x1, .LC89 mov x0, x21 add x1, x1, :lo12:.LC89 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,912] + ldr w2, [x20,3996] adrp x1, .LC90 mov x0, x21 add x1, x1, :lo12:.LC90 @@ -13840,352 +14283,358 @@ FtlPrintInfo2buf: add x1, x1, :lo12:.LC92 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3550] + ldr w2, [x22,924] adrp x1, .LC93 mov x0, x21 add x1, x1, :lo12:.LC93 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3548] + ldrh w2, [x22,3558] adrp x1, .LC94 mov x0, x21 add x1, x1, :lo12:.LC94 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x25,4048] + ldrh w2, [x22,3556] adrp x1, .LC95 mov x0, x21 add x1, x1, :lo12:.LC95 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,852] + ldr w2, [x25,4048] adrp x1, .LC96 mov x0, x21 add x1, x1, :lo12:.LC96 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,744] + ldr w2, [x22,856] adrp x1, .LC97 mov x0, x21 add x1, x1, :lo12:.LC97 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,1470] + ldr w2, [x22,752] adrp x1, .LC98 mov x0, x21 add x1, x1, :lo12:.LC98 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,756] + ldrh w2, [x22,1478] adrp x1, .LC99 mov x0, x21 add x1, x1, :lo12:.LC99 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x20,3404] + ldrh w2, [x22,764] adrp x1, .LC100 mov x0, x21 add x1, x1, :lo12:.LC100 bl sprintf add x21, x21, x0, sxtw - ldr w2, [x22,760] + ldrh w2, [x20,3420] adrp x1, .LC101 mov x0, x21 add x1, x1, :lo12:.LC101 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3896] + ldr w2, [x22,768] adrp x1, .LC102 mov x0, x21 add x1, x1, :lo12:.LC102 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,1296] + ldrh w2, [x22,3904] adrp x1, .LC103 mov x0, x21 add x1, x1, :lo12:.LC103 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3610] + ldrh w2, [x22,1304] adrp x1, .LC104 mov x0, x21 add x1, x1, :lo12:.LC104 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x22,3614] + ldrh w2, [x22,3618] adrp x1, .LC105 mov x0, x21 add x1, x1, :lo12:.LC105 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3608] + ldrb w2, [x22,3622] adrp x1, .LC106 mov x0, x21 add x1, x1, :lo12:.LC106 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x22,3616] + ldrh w2, [x22,3616] adrp x1, .LC107 mov x0, x21 add x1, x1, :lo12:.LC107 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3612] + ldrb w2, [x22,3624] adrp x1, .LC108 mov x0, x21 add x1, x1, :lo12:.LC108 bl sprintf add x21, x21, x0, sxtw - ldrh w3, [x22,3608] + ldrh w2, [x22,3620] adrp x1, .LC109 - ldr x2, [x22,1184] mov x0, x21 add x1, x1, :lo12:.LC109 + bl sprintf + add x21, x21, x0, sxtw + ldrh w3, [x22,3616] + adrp x1, .LC110 + ldr x2, [x22,1192] + mov x0, x21 + add x1, x1, :lo12:.LC110 ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3658] - adrp x1, .LC110 - mov x0, x21 - add x1, x1, :lo12:.LC110 - bl sprintf - add x21, x21, x0, sxtw - ldrb w2, [x22,3662] + ldrh w2, [x22,3666] adrp x1, .LC111 mov x0, x21 add x1, x1, :lo12:.LC111 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3656] + ldrb w2, [x22,3670] adrp x1, .LC112 mov x0, x21 add x1, x1, :lo12:.LC112 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x22,3664] + ldrh w2, [x22,3664] adrp x1, .LC113 mov x0, x21 add x1, x1, :lo12:.LC113 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3660] + ldrb w2, [x22,3672] adrp x1, .LC114 mov x0, x21 add x1, x1, :lo12:.LC114 bl sprintf add x21, x21, x0, sxtw - ldrh w3, [x22,3656] + ldrh w2, [x22,3668] adrp x1, .LC115 - ldr x2, [x22,1184] mov x0, x21 add x1, x1, :lo12:.LC115 + bl sprintf + add x21, x21, x0, sxtw + ldrh w3, [x22,3664] + adrp x1, .LC116 + ldr x2, [x22,1192] + mov x0, x21 + add x1, x1, :lo12:.LC116 ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3706] - adrp x1, .LC116 - mov x0, x21 - add x1, x1, :lo12:.LC116 - bl sprintf - add x21, x21, x0, sxtw - ldrb w2, [x22,3710] + ldrh w2, [x22,3714] adrp x1, .LC117 mov x0, x21 add x1, x1, :lo12:.LC117 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3704] + ldrb w2, [x22,3718] adrp x1, .LC118 mov x0, x21 add x1, x1, :lo12:.LC118 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x22,3712] + ldrh w2, [x22,3712] adrp x1, .LC119 mov x0, x21 add x1, x1, :lo12:.LC119 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x22,3708] + ldrb w2, [x22,3720] adrp x1, .LC120 mov x0, x21 add x1, x1, :lo12:.LC120 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x20,3410] + ldrh w2, [x22,3716] adrp x1, .LC121 mov x0, x21 add x1, x1, :lo12:.LC121 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x20,3414] + ldrh w2, [x20,3426] adrp x1, .LC122 mov x0, x21 add x1, x1, :lo12:.LC122 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x20,3408] + ldrb w2, [x20,3430] adrp x1, .LC123 mov x0, x21 add x1, x1, :lo12:.LC123 bl sprintf add x21, x21, x0, sxtw - ldrb w2, [x20,3416] + ldrh w2, [x20,3424] adrp x1, .LC124 mov x0, x21 add x1, x1, :lo12:.LC124 bl sprintf add x21, x21, x0, sxtw - ldrh w2, [x20,3412] + ldrb w2, [x20,3432] adrp x1, .LC125 mov x0, x21 add x1, x1, :lo12:.LC125 bl sprintf add x21, x21, x0, sxtw - ldr w3, [x22,868] + ldrh w2, [x20,3428] adrp x1, .LC126 - ldr w2, [x22,652] - add x1, x1, :lo12:.LC126 - ldr w4, [x20,3540] mov x0, x21 - ldr w5, [x20,3532] + add x1, x1, :lo12:.LC126 + bl sprintf + add x21, x21, x0, sxtw + ldr w3, [x22,872] + adrp x1, .LC127 + ldr w2, [x22,660] + add x1, x1, :lo12:.LC127 + ldr w4, [x20,3556] + mov x0, x21 + ldr w5, [x20,3548] orr w2, w2, w3, lsl 8 - ldr w3, [x20,3536] + ldr w3, [x20,3552] bl sprintf add x19, x21, x0, sxtw - ldr w2, [x20,3528] - adrp x1, .LC127 - mov x0, x19 - add x1, x1, :lo12:.LC127 - bl sprintf - add x19, x19, x0, sxtw - ldr w2, [x20,3552] + ldr w2, [x20,3544] adrp x1, .LC128 mov x0, x19 add x1, x1, :lo12:.LC128 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x22,956] + ldr w2, [x20,3568] adrp x1, .LC129 mov x0, x19 add x1, x1, :lo12:.LC129 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x22,958] + ldrh w2, [x22,960] adrp x1, .LC130 mov x0, x19 add x1, x1, :lo12:.LC130 bl sprintf add x19, x19, x0, sxtw - ldr w2, [x22,940] + ldrh w2, [x22,962] adrp x1, .LC131 mov x0, x19 add x1, x1, :lo12:.LC131 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x22,960] + ldr w2, [x22,944] adrp x1, .LC132 + mov x0, x19 add x1, x1, :lo12:.LC132 + bl sprintf + add x19, x19, x0, sxtw + ldrh w2, [x22,964] + adrp x1, .LC133 + add x1, x1, :lo12:.LC133 mov x0, x19 bl sprintf add x19, x19, x0, sxtw bl GetFreeBlockMinEraseCount uxth w2, w0 - adrp x1, .LC133 - mov x0, x19 - add x1, x1, :lo12:.LC133 - bl sprintf - add x19, x19, x0, sxtw - ldrh w0, [x22,3600] - bl GetFreeBlockMaxEraseCount - uxth w2, w0 adrp x1, .LC134 mov x0, x19 add x1, x1, :lo12:.LC134 bl sprintf add x19, x19, x0, sxtw - ldrh w0, [x20,3408] - mov w1, 65535 - cmp w0, w1 - beq .L2078 - ubfiz x2, x0, 1, 16 - ldr x3, [x22,1184] + ldrh w0, [x22,3608] + bl GetFreeBlockMaxEraseCount + uxth w2, w0 adrp x1, .LC135 mov x0, x19 add x1, x1, :lo12:.LC135 + bl sprintf + add x19, x19, x0, sxtw + ldrh w0, [x20,3424] + mov w1, 65535 + cmp w0, w1 + beq .L2203 + ubfiz x2, x0, 1, 16 + ldr x3, [x22,1192] + adrp x1, .LC136 + mov x0, x19 + add x1, x1, :lo12:.LC136 ldrh w2, [x3,x2] bl sprintf add x19, x19, x0, sxtw -.L2078: +.L2203: mov w0, 0 - adrp x22, .LC136 + adrp x22, .LC137 mov w20, 0 mov w27, 65535 bl List_get_gc_head_node mov w26, 6 uxth w3, w0 - add x22, x22, :lo12:.LC136 -.L2080: + add x22, x22, :lo12:.LC137 +.L2205: cmp w3, w27 - beq .L2079 + beq .L2204 add x21, x24, :lo12:.LANCHOR2 ubfiz x6, x3, 1, 16 umull x25, w3, w26 mov x0, x19 mov w2, w20 - ldr x5, [x21,1280] + ldr x5, [x21,1288] mov x1, x22 - ldr x4, [x21,1184] + ldr x4, [x21,1192] add w20, w20, 1 - ldr x7, [x21,1168] + ldr x7, [x21,1176] add x5, x5, x25 ldrh w4, [x4,x6] ldrh w5, [x5,4] ldrh w6, [x7,x6] bl sprintf add x19, x19, x0, sxtw - ldr x0, [x21,1280] + ldr x0, [x21,1288] cmp w20, 16 ldrh w3, [x0,x25] - bne .L2080 -.L2079: + bne .L2205 +.L2204: add x1, x24, :lo12:.LANCHOR2 - adrp x22, .LC137 + adrp x22, .LC138 mov w20, 0 mov w27, 65535 mov w26, 6 - add x22, x22, :lo12:.LC137 - ldr x0, [x1,3592] - ldr x3, [x1,1280] + add x22, x22, :lo12:.LC138 + ldr x0, [x1,3600] + ldr x3, [x1,1288] sub x3, x0, x3 mov x0, -6148914691236517206 asr x3, x3, 1 madd x3, x0, x3, x3 uxth w3, w3 -.L2082: +.L2207: cmp w3, w27 - beq .L2081 + beq .L2206 add x21, x24, :lo12:.LANCHOR2 ubfiz x5, x3, 1, 16 umull x25, w3, w26 mov x0, x19 mov w2, w20 - ldr x4, [x21,1280] + ldr x4, [x21,1288] mov x1, x22 - ldr x6, [x21,1168] + ldr x6, [x21,1176] add w20, w20, 1 add x4, x4, x25 ldrh w5, [x6,x5] ldrh w4, [x4,4] bl sprintf add x19, x19, x0, sxtw - ldr x0, [x21,1280] + ldr x0, [x21,1288] cmp w20, 4 ldrh w3, [x0,x25] - bne .L2082 -.L2081: + bne .L2207 +.L2206: sub w0, w19, w23 -.L2077: +.L2202: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14200,10 +14649,10 @@ FtlPrintInfo2buf: ftl_proc_ftl_read: stp x29, x30, [sp, -32]! adrp x1, .LC45 - adrp x2, .LC138 + adrp x2, .LC139 add x29, sp, 0 add x1, x1, :lo12:.LC45 - add x2, x2, :lo12:.LC138 + add x2, x2, :lo12:.LC139 stp x19, x20, [sp,16] mov x20, x0 bl sprintf @@ -14229,111 +14678,111 @@ GetSwlReplaceBlock: stp x23, x24, [sp,48] stp x25, x26, [sp,64] adrp x19, .LANCHOR2 - ldr w3, [x1,3980] + ldr w3, [x1,3996] add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x1,920] + ldr w2, [x1,924] cmp w3, w2 - bcs .L2087 - str wzr, [x1,904] - ldrh w3, [x1,756] - ldr x5, [x1,1168] + bcs .L2212 + str wzr, [x1,908] + ldrh w3, [x1,764] + ldr x5, [x1,1176] mov x1, 0 -.L2088: +.L2213: cmp w3, w1 - bls .L2120 + bls .L2245 add x4, x19, :lo12:.LANCHOR2 ldrh w6, [x5,x1,lsl 1] add x1, x1, 1 - ldr w2, [x4,904] + ldr w2, [x4,908] add w2, w6, w2 - str w2, [x4,904] - b .L2088 -.L2120: + str w2, [x4,908] + b .L2213 +.L2245: add x2, x19, :lo12:.LANCHOR2 add x4, x0, :lo12:.LANCHOR4 - ldr w1, [x2,904] + ldr w1, [x2,908] udiv w3, w1, w3 - str w3, [x4,3980] - ldr w3, [x2,908] + str w3, [x4,3996] + ldr w3, [x2,912] sub w1, w1, w3 - ldrh w3, [x2,808] + ldrh w3, [x2,816] udiv w1, w1, w3 - str w1, [x2,904] - b .L2090 -.L2087: - ldr w2, [x1,916] + str w1, [x2,908] + b .L2215 +.L2212: + ldr w2, [x1,920] cmp w3, w2 - bls .L2090 + bls .L2215 add w2, w2, 1 - str w2, [x1,916] + str w2, [x1,920] mov w1, 0 -.L2092: +.L2217: add x2, x19, :lo12:.LANCHOR2 - ldrh w3, [x2,756] + ldrh w3, [x2,764] cmp w1, w3 - bcs .L2090 + bcs .L2215 ubfiz x3, x1, 1, 32 - ldr x4, [x2,1168] + ldr x4, [x2,1176] add w1, w1, 1 ldrh w2, [x4,x3] add w2, w2, 1 strh w2, [x4,x3] - b .L2092 -.L2090: + b .L2217 +.L2215: add x1, x19, :lo12:.LANCHOR2 add x0, x0, :lo12:.LANCHOR4 - ldr w21, [x1,920] - ldr w23, [x0,3980] + ldr w21, [x1,924] + ldr w23, [x0,3996] add w0, w21, 256 cmp w0, w23 - bls .L2095 - ldr w2, [x1,916] + bls .L2220 + ldr w2, [x1,920] add w0, w21, 768 cmp w0, w2 - bls .L2095 - ldr w0, [x1,652] - cbz w0, .L2098 + bls .L2220 + ldr w0, [x1,660] + cbz w0, .L2223 cmp w21, 40 - bls .L2095 -.L2098: + bls .L2220 +.L2223: mov w0, 65535 - b .L2097 -.L2095: + b .L2222 +.L2220: add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,3600] + ldrh w0, [x0,3608] add w0, w0, w0, lsl 1 lsr w0, w0, 2 bl GetFreeBlockMaxEraseCount uxth w6, w0 add w0, w21, 64 cmp w6, w0 - bcs .L2107 + bcs .L2232 cmp w21, 40 - bhi .L2098 -.L2107: + bhi .L2223 +.L2232: add x1, x19, :lo12:.LANCHOR2 - ldr x3, [x1,3568] - cbz x3, .L2098 + ldr x3, [x1,3576] + cbz x3, .L2223 mov w26, 65535 mov x0, -6148914691236517206 - ldrh w9, [x1,756] + ldrh w9, [x1,764] mov w20, w26 - ldr x7, [x1,1280] + ldr x7, [x1,1288] mov w8, w26 - ldr x25, [x1,1168] + ldr x25, [x1,1176] add x0, x0, 1 mov w1, 0 mov w10, 6 -.L2100: +.L2225: ldrh w5, [x3] cmp w5, w8 - beq .L2102 + beq .L2227 add w1, w1, 1 uxth w1, w1 cmp w1, w9 - bhi .L2098 + bhi .L2223 ldrh w2, [x3,4] - cbz w2, .L2101 + cbz w2, .L2226 sub x4, x3, x7 asr x4, x4, 1 mul x4, x4, x0 @@ -14341,61 +14790,61 @@ GetSwlReplaceBlock: and x4, x4, 65535 ldrh w2, [x25,x4,lsl 1] cmp w2, w21 - bls .L2106 + bls .L2231 cmp w2, w26 - bcs .L2101 + bcs .L2226 mov w26, w2 mov w20, w3 -.L2101: +.L2226: umull x3, w5, w10 add x3, x7, x3 - b .L2100 -.L2106: + b .L2225 +.L2231: mov w20, w3 -.L2102: +.L2227: mov w0, 65535 cmp w20, w0 - beq .L2098 + beq .L2223 ubfiz x24, x20, 1, 16 ldrh w22, [x25,x24] cmp w22, w21 - bls .L2104 + bls .L2229 str x6, [x29,88] bl GetFreeBlockMinEraseCount ldr x6, [x29,88] cmp w21, w0, uxth - bcs .L2104 + bcs .L2229 add x0, x19, :lo12:.LANCHOR2 - str w26, [x0,920] -.L2104: + str w26, [x0,924] +.L2229: cmp w22, w23 - bcs .L2098 + bcs .L2223 add w0, w22, 128 cmp w6, w0 - ble .L2098 + ble .L2223 add w0, w22, 256 cmp w0, w23 - bcc .L2105 + bcc .L2230 add x0, x19, :lo12:.LANCHOR2 add w22, w22, 768 - ldr w0, [x0,916] + ldr w0, [x0,920] cmp w22, w0 - bcs .L2098 -.L2105: + bcs .L2223 +.L2230: add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC139 + adrp x0, .LC140 ldrh w5, [x25,x24] - add x0, x0, :lo12:.LC139 + add x0, x0, :lo12:.LC140 mov w1, w20 mov w2, w23 - ldr x4, [x19,1184] - ldr w3, [x19,916] + ldr x4, [x19,1192] + ldr w3, [x19,920] ldrh w4, [x4,x24] bl printk mov w0, 1 - str w0, [x19,928] + str w0, [x19,932] mov w0, w20 -.L2097: +.L2222: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14412,13 +14861,13 @@ free_data_superblock: mov w1, 65535 cmp w0, w1 add x29, sp, 0 - beq .L2122 - adrp x2, .LANCHOR2+1184 + beq .L2247 + adrp x2, .LANCHOR2+1192 ubfiz x1, x0, 1, 16 - ldr x2, [x2,#:lo12:.LANCHOR2+1184] + ldr x2, [x2,#:lo12:.LANCHOR2+1192] strh wzr, [x2,x1] bl INSERT_FREE_LIST -.L2122: +.L2247: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -14435,209 +14884,209 @@ allocate_data_superblock: add x19, x21, :lo12:.LANCHOR2 stp x23, x24, [sp,48] stp x25, x26, [sp,64] - ldr w1, [x19,1400] + ldr w1, [x19,1408] stp x27, x28, [sp,80] - cbnz w1, .L2124 + cbnz w1, .L2249 mov x20, x0 - add x23, x19, 3704 + add x23, x19, 3712 adrp x22, .LANCHOR0 mov w24, 7 - add x25, x19, 3592 -.L2125: + add x25, x19, 3600 +.L2250: cmp x20, x23 - bne .L2126 - ldrh w2, [x19,3600] - ldr w4, [x19,928] + bne .L2251 + ldrh w2, [x19,3608] + ldr w4, [x19,932] lsr w3, w2, 1 add w1, w3, 1 mul w0, w2, w4 add w1, w1, w0, lsr 2 - ldr w0, [x19,652] + ldr w0, [x19,660] uxth w1, w1 - cbz w0, .L2127 - ldr w0, [x19,920] + cbz w0, .L2252 + ldr w0, [x19,924] cmp w0, 39 - bhi .L2127 + bhi .L2252 cmp w0, 2 mov w1, 0 - bls .L2128 - tbz x2, 0, .L2155 - cbz w4, .L2128 -.L2155: + bls .L2253 + tbz x2, 0, .L2280 + cbz w4, .L2253 +.L2280: mov w1, w3 - b .L2127 -.L2126: + b .L2252 +.L2251: ldrb w0, [x20,8] mov w1, 0 cmp w0, 1 - bne .L2128 - ldrh w0, [x19,768] + bne .L2253 + ldrh w0, [x19,776] cmp w0, 1 - beq .L2128 + beq .L2253 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbnz w0, .L2128 - ldr w2, [x19,652] - ldrh w0, [x19,3600] + ldrb w0, [x0,4044] + cbnz w0, .L2253 + ldr w2, [x19,660] + ldrh w0, [x19,3608] lsr w1, w0, 3 - cbz w2, .L2127 - ldr w2, [x19,920] + cbz w2, .L2252 + ldr w2, [x19,924] cmp w2, 1 - bhi .L2127 + bhi .L2252 mul w1, w0, w24 lsr w1, w1, 3 -.L2127: - cbz w1, .L2128 +.L2252: + cbz w1, .L2253 sub w1, w1, #1 uxth w1, w1 -.L2128: +.L2253: ldrb w2, [x20,8] mov x0, x25 bl List_pop_index_node uxth w28, w0 - ldrh w0, [x19,3600] + ldrh w0, [x19,3608] sub w0, w0, #1 - strh w0, [x19,3600] - ldrh w0, [x19,756] + strh w0, [x19,3608] + ldrh w0, [x19,764] cmp w0, w28 - bls .L2125 + bls .L2250 ubfiz x26, x28, 1, 16 - ldr x0, [x19,1184] + ldr x0, [x19,1192] ldrh w0, [x0,x26] - cbnz w0, .L2125 + cbnz w0, .L2250 strh w28, [x20] mov x0, x20 bl make_superblock ldrb w0, [x20,7] - cbz w0, .L2180 + cbz w0, .L2305 mov x0, 0 - ldrh w5, [x19,748] + ldrh w5, [x19,756] mov w27, w0 mov x3, 56 mov w6, 65535 -.L2132: +.L2257: cmp w5, w0, uxth - bls .L2183 - ldr x4, [x19,1016] + bls .L2308 + ldr x4, [x19,1024] madd x1, x0, x3, x4 str xzr, [x1,16] str xzr, [x1,8] add x1, x20, x0, lsl 1 ldrh w1, [x1,16] cmp w1, w6 - beq .L2133 + beq .L2258 umull x2, w27, w3 add w27, w27, 1 lsl w1, w1, 10 add x2, x4, x2 uxth w27, w27 str w1, [x2,4] -.L2133: +.L2258: add x0, x0, 1 - b .L2132 -.L2183: - add x0, x19, 3608 + b .L2257 +.L2308: + add x0, x19, 3616 cmp x20, x0 - bne .L2135 - ldr w1, [x19,652] - cbz w1, .L2135 - ldr x1, [x19,1168] + bne .L2260 + ldr w1, [x19,660] + cbz w1, .L2260 + ldr x1, [x19,1176] ldrh w1, [x1,x26] cmp w1, 40 - bls .L2135 - strb wzr, [x19,3616] -.L2135: + bls .L2260 + strb wzr, [x19,3624] +.L2260: ldrb w0, [x20,8] - cbnz w0, .L2136 - ldr x0, [x19,1168] + cbnz w0, .L2261 + ldr x0, [x19,1176] mov w1, 2 ldrh w2, [x0,x26] - cbz w2, .L2181 - ldrh w1, [x19,808] + cbz w2, .L2306 + ldrh w1, [x19,816] add w1, w2, w1 -.L2181: +.L2306: strh w1, [x0,x26] mov w1, 0 - ldr w0, [x19,904] - add w0, w0, 1 - str w0, [x19,904] - mov w0, w28 - bl ftl_set_blk_mode - b .L2139 -.L2136: - ldr x1, [x19,1168] - ldrh w0, [x1,x26] - add w0, w0, 1 - strh w0, [x1,x26] ldr w0, [x19,908] add w0, w0, 1 str w0, [x19,908] mov w0, w28 + bl ftl_set_blk_mode + b .L2264 +.L2261: + ldr x1, [x19,1176] + ldrh w0, [x1,x26] + add w0, w0, 1 + strh w0, [x1,x26] + ldr w0, [x19,912] + add w0, w0, 1 + str w0, [x19,912] + mov w0, w28 bl ftl_set_blk_mode.part.17 -.L2139: - ldr x0, [x19,1168] - ldr w1, [x19,916] +.L2264: + ldr x0, [x19,1176] + ldr w1, [x19,920] ldrh w0, [x0,x26] cmp w0, w1 - bls .L2140 - str w0, [x19,916] -.L2140: - ldrh w1, [x19,808] + bls .L2265 + str w0, [x19,920] +.L2265: + ldrh w1, [x19,816] mov x3, 56 - ldr w2, [x19,904] - ldr w0, [x19,908] + ldr w2, [x19,908] + ldr w0, [x19,912] madd w0, w1, w2, w0 - ldrh w1, [x19,756] + ldrh w1, [x19,764] udiv w0, w0, w1 - adrp x1, .LANCHOR4+3980 - str w0, [x1,#:lo12:.LANCHOR4+3980] - ldr x1, [x19,1160] + adrp x1, .LANCHOR4+3996 + str w0, [x1,#:lo12:.LANCHOR4+3996] + ldr x1, [x19,1168] ldr w0, [x1,16] add w0, w0, 1 str w0, [x1,16] mov x0, 0 -.L2141: +.L2266: cmp w27, w0, uxth - bls .L2184 - ldr x1, [x19,1016] + bls .L2309 + ldr x1, [x19,1024] madd x1, x0, x3, x1 add x0, x0, 1 ldr w2, [x1,4] and w2, w2, -1024 str w2, [x1,4] - b .L2141 -.L2184: + b .L2266 +.L2309: add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2143 + ldrb w0, [x0,4044] + cbz w0, .L2268 ldrb w0, [x20,8] cmp w0, 1 - ldr x0, [x19,1016] - bne .L2144 + ldr x0, [x19,1024] + bne .L2269 mov w1, 0 - b .L2182 -.L2144: + b .L2307 +.L2269: mov w1, 1 -.L2182: +.L2307: mov w2, w27 bl FlashEraseBlocks -.L2143: +.L2268: ldrb w1, [x20,8] mov w2, w27 - ldr x0, [x19,1016] + ldr x0, [x19,1024] bl FlashEraseBlocks mov x1, 0 mov x4, 56 mov w2, w1 -.L2145: +.L2270: cmp w27, w1, uxth - bls .L2185 + bls .L2310 mul x0, x1, x4 - ldr x3, [x19,1016] + ldr x3, [x19,1024] add x5, x3, x0 ldr w3, [x3,x0] cmn w3, #1 - bne .L2146 + bne .L2271 ldr w0, [x5,4] add w2, w2, 1 str x4, [x29,104] @@ -14656,39 +15105,39 @@ allocate_data_superblock: ldrb w0, [x20,7] sub w0, w0, #1 strb w0, [x20,7] -.L2146: +.L2271: add x1, x1, 1 - b .L2145 -.L2185: - cbz w2, .L2148 + b .L2270 +.L2310: + cbz w2, .L2273 mov w0, w28 bl update_multiplier_value bl FtlBbmTblFlush -.L2148: +.L2273: ldrb w0, [x20,7] - cbnz w0, .L2149 -.L2180: - ldr x0, [x19,1184] + cbnz w0, .L2274 +.L2305: + ldr x0, [x19,1192] mov w1, -1 strh w1, [x0,x26] - b .L2125 -.L2149: + b .L2250 +.L2274: add x21, x21, :lo12:.LANCHOR2 strh wzr, [x20,2] strb wzr, [x20,6] - ldrh w1, [x21,818] + ldrh w1, [x21,824] strh w28, [x20] mul w0, w0, w1 - ldr w1, [x21,872] + ldr w1, [x21,876] str w1, [x20,12] uxth w0, w0 add w1, w1, 1 strh w0, [x20,4] - str w1, [x21,872] - ldr x1, [x21,1184] + str w1, [x21,876] + ldr x1, [x21,1192] ldrh w2, [x20] strh w0, [x1,x2,lsl 1] -.L2124: +.L2249: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14702,36 +15151,36 @@ allocate_data_superblock: .global FtlGcBufInit .type FtlGcBufInit, %function FtlGcBufInit: - adrp x0, .LANCHOR4+3984 + adrp x0, .LANCHOR4+4000 mov w1, 0 adrp x7, .LANCHOR2 mov w8, 24 mov w9, 1 mov w4, 4 - str wzr, [x0,#:lo12:.LANCHOR4+3984] + str wzr, [x0,#:lo12:.LANCHOR4+4000] mov w10, 56 -.L2187: +.L2312: add x2, x7, :lo12:.LANCHOR2 adrp x6, .LANCHOR2 - ldrh w0, [x2,748] + ldrh w0, [x2,756] cmp w1, w0 - bcs .L2191 + bcs .L2316 umull x3, w1, w8 - ldr x5, [x2,1104] - ldr x6, [x2,1072] + ldr x5, [x2,1112] + ldr x6, [x2,1080] add x0, x5, x3 str w9, [x0,16] - ldrh w0, [x2,828] + ldrh w0, [x2,834] mul w0, w1, w0 sdiv w0, w0, w4 add x0, x6, x0, sxtw 2 str x0, [x5,x3] - ldrh w0, [x2,830] - ldr x6, [x2,1104] - ldr x11, [x2,1128] + ldrh w0, [x2,836] + ldr x6, [x2,1112] + ldr x11, [x2,1136] mul w0, w1, w0 add x5, x6, x3 - ldr x2, [x2,1024] + ldr x2, [x2,1032] sdiv w0, w0, w4 add x0, x11, x0, sxtw 2 str x0, [x5,8] @@ -14743,28 +15192,28 @@ FtlGcBufInit: str x2, [x0,8] ldr x2, [x5,8] str x2, [x0,16] - b .L2187 -.L2191: + b .L2312 +.L2316: mov w7, 24 mov w4, 4 -.L2189: +.L2314: add x1, x6, :lo12:.LANCHOR2 - ldr w2, [x1,1040] + ldr w2, [x1,1048] cmp w0, w2 - bcs .L2192 + bcs .L2317 umull x3, w0, w7 - ldr x5, [x1,1104] - ldr x8, [x1,1072] + ldr x5, [x1,1112] + ldr x8, [x1,1080] add x2, x5, x3 str wzr, [x2,16] - ldrh w2, [x1,828] + ldrh w2, [x1,834] mul w2, w0, w2 sdiv w2, w2, w4 add x2, x8, x2, sxtw 2 str x2, [x5,x3] - ldrh w2, [x1,830] - ldr x5, [x1,1104] - ldr x1, [x1,1128] + ldrh w2, [x1,836] + ldr x5, [x1,1112] + ldr x1, [x1,1136] mul w2, w0, w2 add x3, x5, x3 add w0, w0, 1 @@ -14772,8 +15221,8 @@ FtlGcBufInit: uxth w0, w0 add x1, x1, x2, sxtw 2 str x1, [x3,8] - b .L2189 -.L2192: + b .L2314 +.L2317: ret .size FtlGcBufInit, .-FtlGcBufInit .align 2 @@ -14789,35 +15238,35 @@ FtlVariablesInit: adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 add x20, x20, :lo12:.LANCHOR4 - ldrh w2, [x19,840] - strh w0, [x20,4000] + ldrh w2, [x19,844] + strh w0, [x20,4016] mov w0, -1 - str w0, [x20,4012] + str w0, [x20,4028] lsl w2, w2, 1 - ldr x0, [x19,1208] - str xzr, [x20,3992] - str wzr, [x20,4004] - str wzr, [x20,4008] - str wzr, [x19,652] - strh wzr, [x19,1392] + ldr x0, [x19,1216] + str xzr, [x20,4008] + str wzr, [x20,4020] + str wzr, [x20,4024] + str wzr, [x19,660] + strh wzr, [x19,1400] bl ftl_memset - ldrh w2, [x19,758] + ldrh w2, [x19,766] mov w1, 0 - ldr x0, [x19,1168] + ldr x0, [x19,1176] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x19,758] + ldrh w2, [x19,766] mov w1, 0 - ldr x0, [x19,1152] + ldr x0, [x19,1160] lsl w2, w2, 1 bl ftl_memset - add x0, x19, 3520 + add x0, x19, 3528 mov w1, 0 mov w2, 48 bl ftl_memset mov w1, 0 mov w2, 512 - add x0, x20, 3456 + add x0, x20, 3472 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit @@ -14835,34 +15284,34 @@ FtlGcBufFree: add x2, x2, :lo12:.LANCHOR2 mov w7, 56 mov w9, 24 - ldr w8, [x2,1040] - ldr x5, [x2,1104] -.L2195: + ldr w8, [x2,1048] + ldr x5, [x2,1112] +.L2320: cmp w3, w1 - bcs .L2194 + bcs .L2319 umull x4, w3, w7 mov w2, 0 add x4, x0, x4 -.L2200: +.L2325: cmp w2, w8 - bcs .L2197 + bcs .L2322 umull x6, w2, w9 add x10, x5, x6 ldr x11, [x5,x6] ldr x6, [x4,8] cmp x11, x6 - bne .L2196 + bne .L2321 str wzr, [x10,16] - b .L2197 -.L2196: + b .L2322 +.L2321: add w2, w2, 1 uxth w2, w2 - b .L2200 -.L2197: + b .L2325 +.L2322: add w3, w3, 1 uxth w3, w3 - b .L2195 -.L2194: + b .L2320 +.L2319: ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -14874,20 +15323,20 @@ FtlGcBufAlloc: add x2, x2, :lo12:.LANCHOR2 mov w8, 1 mov w9, 56 - ldr w5, [x2,1040] - ldr x6, [x2,1104] + ldr w5, [x2,1048] + ldr x6, [x2,1112] mov w2, 0 -.L2202: +.L2327: cmp w2, w1 - bcs .L2208 + bcs .L2333 mov w3, 0 -.L2206: +.L2331: cmp w3, w5 - bcs .L2204 + bcs .L2329 umull x4, w3, w7 add x4, x6, x4 ldr w10, [x4,16] - cbnz w10, .L2203 + cbnz w10, .L2328 umull x3, w2, w9 str w8, [x4,16] add x3, x0, x3 @@ -14895,41 +15344,41 @@ FtlGcBufAlloc: str x10, [x3,8] ldr x4, [x4,8] str x4, [x3,16] - b .L2204 -.L2203: + b .L2329 +.L2328: add w3, w3, 1 uxth w3, w3 - b .L2206 -.L2204: + b .L2331 +.L2329: add w2, w2, 1 uxth w2, w2 - b .L2202 -.L2208: + b .L2327 +.L2333: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 .global IsBlkInGcList .type IsBlkInGcList, %function IsBlkInGcList: - adrp x1, .LANCHOR4+4016 + adrp x1, .LANCHOR4+4032 uxth w0, w0 - ldrh w2, [x1,#:lo12:.LANCHOR4+4016] - adrp x1, .LANCHOR2+976 - ldr x3, [x1,#:lo12:.LANCHOR2+976] + ldrh w2, [x1,#:lo12:.LANCHOR4+4032] + adrp x1, .LANCHOR2+984 + ldr x3, [x1,#:lo12:.LANCHOR2+984] mov x1, 0 -.L2210: +.L2335: cmp w2, w1, uxth - bls .L2214 + bls .L2339 add x1, x1, 1 add x4, x3, x1, lsl 1 ldrh w4, [x4,-2] cmp w4, w0 - bne .L2210 + bne .L2335 mov w0, 1 - b .L2211 -.L2214: + b .L2336 +.L2339: mov w0, 0 -.L2211: +.L2336: ret .size IsBlkInGcList, .-IsBlkInGcList .align 2 @@ -14950,44 +15399,44 @@ FtlGcUpdatePage: ldr x1, [x29,32] uxth w9, w0 mov x6, 0 - ldrh w8, [x4,4016] + ldrh w8, [x4,4032] adrp x4, .LANCHOR2 add x5, x4, :lo12:.LANCHOR2 - ldr x7, [x5,976] -.L2216: + ldr x7, [x5,984] +.L2341: uxth w5, w6 cmp w5, w8 - bcs .L2220 + bcs .L2345 add x6, x6, 1 add x10, x7, x6, lsl 1 ldrh w10, [x10,-2] cmp w10, w9 - bne .L2216 -.L2220: + bne .L2341 +.L2345: cmp w5, w8 - bne .L2218 + bne .L2343 ubfiz x5, x5, 1, 16 strh w0, [x7,x5] add x0, x3, :lo12:.LANCHOR4 - ldrh w5, [x0,4016] + ldrh w5, [x0,4032] add w5, w5, 1 - strh w5, [x0,4016] -.L2218: + strh w5, [x0,4032] +.L2343: add x3, x3, :lo12:.LANCHOR4 add x4, x4, :lo12:.LANCHOR2 mov w0, 12 - ldrh w5, [x3,4018] - ldr x6, [x4,984] + ldrh w5, [x3,4034] + ldr x6, [x4,992] umull x5, w5, w0 add x6, x6, x5 str w1, [x6,4] - ldr x1, [x4,984] + ldr x1, [x4,992] add x0, x1, x5 str w2, [x0,8] str w19, [x1,x5] - ldrh w0, [x3,4018] + ldrh w0, [x3,4034] add w0, w0, 1 - strh w0, [x3,4018] + strh w0, [x3,4034] ldr x19, [sp,16] ldp x29, x30, [sp], 48 ret @@ -15004,15 +15453,15 @@ FtlGcPageVarInit: adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 add x0, x0, :lo12:.LANCHOR4 - ldrh w2, [x19,822] - strh wzr, [x0,4016] - strh wzr, [x0,4018] + ldrh w2, [x19,828] + strh wzr, [x0,4032] + strh wzr, [x0,4034] lsl w2, w2, 1 - ldr x0, [x19,976] - bl ftl_memset - ldrh w3, [x19,822] - mov w2, 12 ldr x0, [x19,984] + bl ftl_memset + ldrh w3, [x19,828] + mov w2, 12 + ldr x0, [x19,992] mov w1, 255 mul w2, w3, w2 bl ftl_memset @@ -15025,216 +15474,275 @@ FtlGcPageVarInit: .global FtlGcScanTempBlk .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -208]! add x29, sp, 0 stp x19, x20, [sp,16] - adrp x20, .LANCHOR1 mov x19, x0 - add x0, x20, :lo12:.LANCHOR1 - str w1, [x29,152] + adrp x0, .LANCHOR1 + str w1, [x29,128] + add x1, x0, :lo12:.LANCHOR1 stp x21, x22, [sp,32] stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - str x20, [x29,136] - ldrh w26, [x0,3164] - mov w0, 65535 - cmp w26, w0 - beq .L2245 - cbnz w26, .L2224 - b .L2225 -.L2245: + str x0, [x29,120] + ldrh w26, [x1,3292] + mov w1, 65535 + cmp w26, w1 + beq .L2378 + cbnz w26, .L2349 + b .L2350 +.L2378: mov w26, 0 -.L2224: - adrp x0, .LANCHOR2+818 - ldr w1, [x29,152] - ldrh w0, [x0,#:lo12:.LANCHOR2+818] +.L2349: + adrp x0, .LANCHOR2+824 + ldr w1, [x29,128] + ldrh w0, [x0,#:lo12:.LANCHOR2+824] cmp w1, w0 - bne .L2226 -.L2225: + bne .L2351 +.L2350: bl FtlGcPageVarInit -.L2226: +.L2351: mov w0, -1 adrp x25, .LANCHOR2 - str w0, [x29,156] - adrp x0, .LC140 - add x0, x0, :lo12:.LC140 - mov w22, 0 - mov w23, 65535 + str w0, [x29,132] + adrp x0, .LC142 + add x0, x0, :lo12:.LC142 + mov w23, 0 + mov x22, x25 mov x21, x25 - mov x24, x25 - str x0, [x29,128] -.L2239: + str x0, [x29,112] +.L2352: ldrh w0, [x19] + mov w20, 65535 strb wzr, [x19,8] - cmp w0, w23 - beq .L2246 -.L2228: -.L2242: + cmp w0, w20 + beq .L2353 +.L2354: + str w20, [x29,140] +.L2375: add x0, x25, :lo12:.LANCHOR2 mov x2, x19 - mov w20, 0 - ldrh w5, [x0,748] - ldrh w8, [x0,830] - add x5, x19, x5, lsl 1 -.L2229: - cmp x2, x5 - beq .L2254 + mov w27, 0 + mov w11, 56 + mov w8, 4 + ldrh w6, [x0,756] + ldrh w9, [x0,834] + ldrh w10, [x0,836] + add x6, x19, x6, lsl 1 +.L2355: + cmp x2, x6 + beq .L2395 ldrh w1, [x2,16] - cmp w1, w23 - beq .L2230 - add x6, x21, :lo12:.LANCHOR2 - mov w0, 56 + ldr w0, [x29,140] + cmp w1, w0 + beq .L2356 + add x5, x22, :lo12:.LANCHOR2 orr w1, w26, w1, lsl 10 - mov w3, 4 - umull x0, w20, w0 - ldr x7, [x6,992] - add w4, w20, 1 + umull x0, w27, w11 + add w4, w27, 1 + ldr x7, [x5,1000] add x7, x7, x0 str w1, [x7,4] - ldr x1, [x6,992] - ldr x6, [x6,1128] + ldr x1, [x5,1000] + ldr x7, [x5,1080] add x0, x1, x0 - mul w1, w20, w8 - uxth w20, w4 - str xzr, [x0,8] - sdiv w1, w1, w3 - add x1, x6, x1, sxtw 2 + ldr x5, [x5,1136] + mul w1, w27, w9 + sdiv w1, w1, w8 + add x1, x7, x1, sxtw 2 + str x1, [x0,8] + mul w1, w27, w10 + uxth w27, w4 + sdiv w1, w1, w8 + add x1, x5, x1, sxtw 2 str x1, [x0,16] -.L2230: +.L2356: add x2, x2, 2 - b .L2229 -.L2254: - add x0, x21, :lo12:.LANCHOR2 - mov w1, w20 + b .L2355 +.L2395: + add x0, x22, :lo12:.LANCHOR2 + mov w1, w27 mov w2, 0 - mov x27, 0 - ldr x0, [x0,992] + mov x24, 0 + ldr x0, [x0,1000] bl FlashReadPages -.L2232: - cmp w20, w27, uxth - bls .L2255 +.L2358: + cmp w27, w24, uxth + bls .L2396 + add x20, x22, :lo12:.LANCHOR2 mov x0, 56 - mul x28, x27, x0 - add x0, x21, :lo12:.LANCHOR2 - str x0, [x29,144] - ldr x8, [x0,992] - str x8, [x29,104] - add x1, x8, x28 - str x1, [x29,112] + mul x28, x24, x0 + ldr x0, [x20,1000] + add x1, x0, x28 + ldr w8, [x0,x28] ldr w2, [x1,4] - str x2, [x29,120] - lsr x0, x2, 10 - bl P2V_plane - uxth w6, w0 - ldr x8, [x29,104] - ldr x2, [x29,120] - ldr w0, [x8,x28] - cbnz w0, .L2233 - ldr x1, [x29,112] - add x27, x27, 1 - ldr x5, [x1,16] - ldrh w0, [x5] - cmp w0, w23 - bne .L2234 - adrp x0, .LANCHOR4+4008 + str w2, [x29,136] + ldr x7, [x1,16] + cbnz w8, .L2359 + ldrh w0, [x7] + ldr w1, [x29,140] + cmp w0, w1 + beq .L2394 + ldr w0, [x7,8] + ldr w1, [x20,1404] + cmp w0, w1 + bhi .L2394 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + ldrb w1, [x1,88] + cbz w1, .L2364 + add x1, x29, 148 + mov w2, w8 + str x7, [x29,104] + str x8, [x29,96] + bl log2phys + ldr x7, [x29,104] + ldr w1, [x29,148] + ldr w0, [x7,12] + cmp w1, w0 + bne .L2364 + cmn w1, #1 + beq .L2364 + str w0, [x29,156] mov w1, 1 - str w1, [x0,#:lo12:.LANCHOR4+4008] - b .L2227 -.L2234: - mov w1, w2 - ldr w0, [x5,12] - ldr w2, [x5,8] - bl FtlGcUpdatePage - b .L2232 -.L2233: - ldr x0, [x29,128] + ldr x0, [x20,1104] + ldr x8, [x29,96] + str x0, [x29,160] + ldr x0, [x20,1128] + mov w2, w8 + str x0, [x29,168] + add x0, x29, 152 + bl FlashReadPages + ldr x0, [x20,1000] + ldrh w2, [x20,830] + ldr x6, [x29,160] + add x5, x0, x28 + ldr x7, [x29,104] + lsl w2, w2, 7 + mov x0, 0 +.L2366: + cmp w2, w0 + bls .L2364 + lsl x1, x0, 2 + ldr x8, [x5,8] + add x0, x0, 1 + ldr w8, [x8,x1] + ldr w1, [x6,x1] + cmp w8, w1 + beq .L2366 + adrp x0, .LC141 ldrh w1, [x19] + ldr w2, [x29,156] + add x0, x0, :lo12:.LC141 bl printk - ldr x0, [x29,144] - ldr w0, [x0,652] - cbnz w0, .L2235 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2236 -.L2235: - add x0, x24, :lo12:.LANCHOR2 +.L2394: + add x0, x21, :lo12:.LANCHOR2 ldrh w1, [x19] - ldr x0, [x0,1168] + ldr x0, [x0,1192] + strh wzr, [x0,x1,lsl 1] + ldrh w0, [x19] + bl INSERT_FREE_LIST + adrp x1, .LANCHOR4+3424 + mov w0, -1 + strh w0, [x19] + strh w0, [x1,#:lo12:.LANCHOR4+3424] + b .L2393 +.L2364: + ldr w0, [x7,12] + add x24, x24, 1 + ldr w1, [x29,136] + ldr w2, [x7,8] + bl FtlGcUpdatePage + b .L2358 +.L2359: + ldr x0, [x29,112] + ldrh w1, [x19] + ldr w2, [x29,136] + bl printk + ldr w0, [x20,660] + cbnz w0, .L2369 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2370 +.L2369: + add x0, x21, :lo12:.LANCHOR2 + ldrh w1, [x19] + ldr x0, [x0,1176] ldrh w0, [x0,x1,lsl 1] cmp w0, 159 - bls .L2237 -.L2236: - add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,992] + bls .L2371 +.L2370: + add x0, x21, :lo12:.LANCHOR2 + ldr x0, [x0,1000] ldr w0, [x0,x28] cmn w0, #1 - bne .L2238 -.L2237: - add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,992] + bne .L2372 +.L2371: + add x0, x21, :lo12:.LANCHOR2 + ldr x0, [x0,1000] add x5, x0, x28 ldr w0, [x5,4] - str w0, [x29,156] -.L2238: - add x0, x24, :lo12:.LANCHOR2 + str w0, [x29,132] +.L2372: + add x0, x21, :lo12:.LANCHOR2 ldrh w1, [x19] - mov w26, 0 - ldr x0, [x0,1184] + ldr x0, [x0,1192] strh wzr, [x0,x1,lsl 1] ldrh w0, [x19] bl INSERT_FREE_LIST mov w0, -1 strh w0, [x19] +.L2393: bl FtlGcPageVarInit - b .L2239 -.L2255: - ldr w0, [x29,152] - add w22, w22, 1 + mov w26, 0 + b .L2352 +.L2396: + ldr w0, [x29,128] + add w23, w23, 1 add w3, w26, 1 - cmp w22, w0 + cmp w23, w0 uxth w26, w3 - bcs .L2241 -.L2243: - add x0, x21, :lo12:.LANCHOR2 - ldrh w0, [x0,818] + bcs .L2374 +.L2376: + add x0, x22, :lo12:.LANCHOR2 + ldrh w0, [x0,824] cmp w0, w26 - bhi .L2242 - b .L2246 -.L2241: - ldr x0, [x29,136] + bhi .L2375 + b .L2353 +.L2374: + ldr x0, [x29,120] + ldr w2, [x29,140] add x1, x0, :lo12:.LANCHOR1 - ldrh w0, [x1,3164] - cmp w0, w23 - beq .L2243 - add w0, w0, w22 - strh w0, [x1,3164] - add x0, x21, :lo12:.LANCHOR2 - ldrh w0, [x0,818] + ldrh w0, [x1,3292] + cmp w0, w2 + beq .L2376 + add w0, w0, w23 + strh w0, [x1,3292] + add x0, x22, :lo12:.LANCHOR2 + ldrh w0, [x0,824] cmp w0, w26 - bls .L2243 - b .L2244 -.L2246: - mov w6, 0 -.L2227: - ldr x0, [x29,136] - mov w1, w26 + bls .L2376 + b .L2377 +.L2353: + ldr x0, [x29,120] + mov w1, -1 strh w26, [x19,2] - mov w2, w6 - add x20, x0, :lo12:.LANCHOR1 - mov w0, -1 - strb w6, [x19,6] - strh w0, [x20,3164] + mov w2, 0 + add x0, x0, :lo12:.LANCHOR1 + strb wzr, [x19,6] + strh w1, [x0,3292] mov x0, x19 + mov w1, w26 bl ftl_sb_update_avl_pages -.L2244: - ldr w0, [x29,156] +.L2377: + ldr w0, [x29,132] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 160 + ldp x29, x30, [sp], 208 ret .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 @@ -15243,48 +15751,52 @@ FtlGcScanTempBlk: FtlGcRefreshOpenBlock: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxth w19, w0 - adrp x0, .LC141 - mov w1, w19 - add x0, x0, :lo12:.LC141 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR2 + uxth w20, w0 + add x19, x19, :lo12:.LANCHOR2 + ldrh w0, [x19,952] + cmp w0, w20 + beq .L2399 + ldrh w0, [x19,954] + cmp w0, w20 + beq .L2399 + ldrh w0, [x19,956] + cmp w0, w20 + beq .L2399 + ldrh w0, [x19,958] + cmp w0, w20 + beq .L2399 + adrp x0, .LC143 + mov w1, w20 + add x0, x0, :lo12:.LC143 bl printk - adrp x2, .LANCHOR2 - add x2, x2, :lo12:.LANCHOR2 - ldrh w5, [x2,948] - cmp w5, w19 - beq .L2257 - ldrh w4, [x2,950] - cmp w4, w19 - beq .L2257 - ldrh w3, [x2,952] - cmp w3, w19 - beq .L2257 - ldrh w1, [x2,954] - cmp w1, w19 - beq .L2257 + ldrh w1, [x19,952] mov w0, 65535 - cmp w5, w0 - bne .L2258 - strh w19, [x2,948] - b .L2257 -.L2258: - cmp w4, w0 - bne .L2259 - strh w19, [x2,950] - b .L2257 -.L2259: - cmp w3, w0 - bne .L2260 - strh w19, [x2,952] - b .L2257 -.L2260: cmp w1, w0 - bne .L2257 - strh w19, [x2,954] -.L2257: + bne .L2401 + strh w20, [x19,952] + b .L2399 +.L2401: + ldrh w1, [x19,954] + cmp w1, w0 + bne .L2402 + strh w20, [x19,954] + b .L2399 +.L2402: + ldrh w1, [x19,956] + cmp w1, w0 + bne .L2403 + strh w20, [x19,956] + b .L2399 +.L2403: + ldrh w1, [x19,958] + cmp w1, w0 + bne .L2399 + strh w20, [x19,958] +.L2399: mov w0, 0 - ldr x19, [sp,16] + ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock @@ -15292,54 +15804,61 @@ FtlGcRefreshOpenBlock: .global FtlGcRefreshBlock .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: - stp x29, x30, [sp, -32]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] - uxth w19, w0 - adrp x0, .LC141 - mov w1, w19 - add x0, x0, :lo12:.LC141 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR2 + uxth w20, w0 + add x19, x19, :lo12:.LANCHOR2 + str x21, [sp,32] + mov w21, 0 + ldrh w0, [x19,952] + cmp w0, w20 + beq .L2405 + ldrh w0, [x19,954] + cmp w0, w20 + beq .L2405 + ldrh w0, [x19,956] + cmp w0, w20 + beq .L2405 + ldrh w0, [x19,958] + cmp w0, w20 + beq .L2405 + adrp x0, .LC143 + mov w1, w20 + add x0, x0, :lo12:.LC143 bl printk - adrp x2, .LANCHOR2 - mov w0, 0 - add x2, x2, :lo12:.LANCHOR2 - ldrh w6, [x2,948] - cmp w6, w19 - beq .L2262 - ldrh w5, [x2,950] - cmp w5, w19 - beq .L2262 - ldrh w4, [x2,952] - cmp w4, w19 - beq .L2262 - ldrh w3, [x2,954] - cmp w3, w19 - beq .L2262 - mov w1, 65535 - cmp w6, w1 - bne .L2263 - strh w19, [x2,948] - b .L2262 -.L2263: - cmp w5, w1 - bne .L2264 - strh w19, [x2,950] - b .L2271 -.L2264: - cmp w4, w1 - bne .L2265 - strh w19, [x2,952] - b .L2271 -.L2265: - cmp w3, w1 - mov w0, -1 - bne .L2262 - strh w19, [x2,954] -.L2271: - mov w0, 0 -.L2262: - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + ldrh w1, [x19,952] + mov w0, 65535 + cmp w1, w0 + bne .L2406 + strh w20, [x19,952] + b .L2405 +.L2406: + ldrh w1, [x19,954] + cmp w1, w0 + bne .L2407 + strh w20, [x19,954] + b .L2405 +.L2407: + ldrh w1, [x19,956] + cmp w1, w0 + bne .L2408 + strh w20, [x19,956] + b .L2405 +.L2408: + ldrh w1, [x19,958] + cmp w1, w0 + bne .L2413 + strh w20, [x19,958] + b .L2405 +.L2413: + mov w21, -1 +.L2405: + mov w0, w21 + ldr x21, [sp,32] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 ret .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 @@ -15357,49 +15876,49 @@ FtlGcMarkBadPhyBlk: str x23, [sp,48] bl P2V_block_in_plane uxth w21, w0 - ldrh w1, [x22,962] - adrp x0, .LC142 + ldrh w1, [x22,966] + adrp x0, .LC144 mov w2, w20 - add x0, x0, :lo12:.LC142 + add x0, x0, :lo12:.LC144 bl printk mov w0, w21 bl FtlGcRefreshBlock - ldr w0, [x22,652] - cbz w0, .L2273 + ldr w0, [x22,660] + cbz w0, .L2415 ubfiz x0, x21, 1, 16 - ldr x2, [x22,1168] + ldr x2, [x22,1176] ldrh w1, [x2,x0] cmp w1, 39 - bls .L2273 + bls .L2415 sub w1, w1, #40 strh w1, [x2,x0] -.L2273: +.L2415: add x0, x19, :lo12:.LANCHOR2 adrp x1, .LANCHOR4 add x1, x1, :lo12:.LANCHOR4 - add x1, x1, 4024 - ldrh w3, [x0,962] + add x1, x1, 4040 + ldrh w3, [x0,966] mov x0, 0 -.L2274: +.L2416: cmp w3, w0, uxth - bls .L2280 + bls .L2422 add x0, x0, 1 add x2, x1, x0, lsl 1 ldrh w2, [x2,-2] cmp w2, w20 - bne .L2274 - b .L2275 -.L2280: + bne .L2416 + b .L2417 +.L2422: cmp w3, 15 - bhi .L2275 + bhi .L2417 adrp x1, .LANCHOR4 add x19, x19, :lo12:.LANCHOR2 add x1, x1, :lo12:.LANCHOR4 add w0, w3, 1 - add x1, x1, 4024 - strh w0, [x19,962] + add x1, x1, 4040 + strh w0, [x19,966] strh w20, [x1,w3,sxtw 1] -.L2275: +.L2417: mov w0, 0 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -15416,29 +15935,29 @@ FtlGcReFreshBadBlk: str x19, [sp,16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,962] - cbz w1, .L2282 - ldrh w3, [x0,948] + ldrh w1, [x0,966] + cbz w1, .L2424 + ldrh w3, [x0,952] mov w2, 65535 cmp w3, w2 - bne .L2282 - ldrh w2, [x0,966] + bne .L2424 + ldrh w2, [x0,970] cmp w2, w1 - bcc .L2283 - strh wzr, [x0,966] -.L2283: + bcc .L2425 + strh wzr, [x0,970] +.L2425: add x19, x19, :lo12:.LANCHOR2 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - add x0, x0, 4024 - ldrh w1, [x19,966] + add x0, x0, 4040 + ldrh w1, [x19,970] ldrh w0, [x0,w1,sxtw 1] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh w0, [x19,966] + ldrh w0, [x19,970] add w0, w0, 1 - strh w0, [x19,966] -.L2282: + strh w0, [x19,970] +.L2424: mov w0, 0 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -15456,65 +15975,65 @@ FtlGcFreeBadSuperBlk: add x19, x19, :lo12:.LANCHOR2 stp x23, x24, [sp,48] uxth w23, w0 - ldrh w0, [x19,962] + ldrh w0, [x19,966] stp x21, x22, [sp,32] stp x25, x26, [sp,64] mov w21, 0 - cbz w0, .L2289 + cbz w0, .L2431 adrp x24, .LANCHOR4 - adrp x22, .LC143 - add x22, x22, :lo12:.LC143 + adrp x22, .LC145 + add x22, x22, :lo12:.LC145 add x25, x24, :lo12:.LANCHOR4 -.L2297: - ldrh w0, [x19,748] +.L2439: + ldrh w0, [x19,756] cmp w0, w21 - bls .L2298 - add x0, x19, 776 + bls .L2440 + add x0, x19, 784 mov w1, w23 mov w20, 0 add x27, x24, :lo12:.LANCHOR4 ldrb w0, [x0,w21,sxtw] bl V2P_block uxth w26, w0 -.L2290: - ldrh w0, [x19,962] +.L2432: + ldrh w0, [x19,966] cmp w0, w20 - bls .L2299 - add x0, x27, 4024 + bls .L2441 + add x0, x27, 4040 ldrh w0, [x0,w20,sxtw 1] cmp w0, w26 - bne .L2291 + bne .L2433 mov w1, w26 mov x0, x22 bl printk mov w0, w26 bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh w2, [x19,962] + ldrh w2, [x19,966] mov w3, w20 -.L2292: +.L2434: cmp w3, w2 - bcs .L2300 - add x4, x25, 4024 + bcs .L2442 + add x4, x25, 4040 add w0, w3, 1 ldrh w1, [x4,w0,sxtw 1] strh w1, [x4,w3,sxtw 1] uxth w3, w0 - b .L2292 -.L2300: + b .L2434 +.L2442: sub w2, w2, #1 - strh w2, [x19,962] -.L2291: + strh w2, [x19,966] +.L2433: add w20, w20, 1 uxth w20, w20 - b .L2290 -.L2299: + b .L2432 +.L2441: add w21, w21, 1 uxth w21, w21 - b .L2297 -.L2298: + b .L2439 +.L2440: bl FtlGcReFreshBadBlk -.L2289: +.L2431: mov w0, 0 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -15535,47 +16054,47 @@ update_vpc_list: uxth w19, w0 add x2, x20, :lo12:.LANCHOR2 ubfiz x0, x19, 1, 16 - ldr x1, [x2,1184] + ldr x1, [x2,1192] ldrh w1, [x1,x0] - cbnz w1, .L2302 + cbnz w1, .L2444 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrh w3, [x0,3408] + ldrh w3, [x0,3424] cmp w3, w19 - bne .L2303 + bne .L2445 mov w1, -1 - strh w1, [x0,3408] - b .L2304 -.L2303: - ldrh w3, [x2,3608] + strh w1, [x0,3424] + b .L2446 +.L2445: + ldrh w3, [x2,3616] mov w0, w1 cmp w3, w19 - beq .L2305 - ldrh w3, [x2,3656] + beq .L2447 + ldrh w3, [x2,3664] cmp w3, w19 - beq .L2305 - ldrh w2, [x2,3704] + beq .L2447 + ldrh w2, [x2,3712] cmp w2, w19 - beq .L2305 -.L2304: + beq .L2447 +.L2446: add x20, x20, :lo12:.LANCHOR2 mov w1, w19 - add x0, x20, 3568 + add x0, x20, 3576 bl List_remove_node - ldrh w0, [x20,3584] + ldrh w0, [x20,3592] sub w0, w0, #1 - strh w0, [x20,3584] + strh w0, [x20,3592] mov w0, w19 bl free_data_superblock mov w0, w19 bl FtlGcFreeBadSuperBlk mov w0, 1 - b .L2305 -.L2302: + b .L2447 +.L2444: mov w0, w19 bl List_update_data_list mov w0, 0 -.L2305: +.L2447: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -15591,67 +16110,67 @@ decrement_vpc_count: mov w0, 65535 stp x21, x22, [sp,32] cmp w19, w0 - beq .L2310 + beq .L2452 adrp x20, .LANCHOR2 ubfiz x21, x19, 1, 16 add x20, x20, :lo12:.LANCHOR2 - ldr x0, [x20,1184] + ldr x0, [x20,1192] ldrh w2, [x0,x21] - cbnz w2, .L2311 - adrp x0, .LC144 + cbnz w2, .L2453 + adrp x0, .LC146 mov w1, w19 - add x0, x0, :lo12:.LC144 - add x22, x20, 3592 + add x0, x0, :lo12:.LC146 + add x22, x20, 3600 bl printk - ldr x0, [x20,1184] + ldr x0, [x20,1192] mov w1, 32 strh w1, [x0,x21] mov x0, x22 mov w1, w19 bl test_node_in_list - cbz w0, .L2312 + cbz w0, .L2454 mov w1, w19 mov x0, x22 bl List_remove_node - ldrh w0, [x20,3600] + ldrh w0, [x20,3608] sub w0, w0, #1 - strh w0, [x20,3600] + strh w0, [x20,3608] mov w0, w19 bl INSERT_DATA_LIST - ldr x2, [x20,1184] - adrp x0, .LC145 - add x0, x0, :lo12:.LC145 + ldr x2, [x20,1192] + adrp x0, .LC147 + add x0, x0, :lo12:.LC147 mov w1, w19 ldrh w2, [x2,x21] bl printk -.L2312: +.L2454: mov w0, w19 bl FtlGcRefreshBlock - b .L2319 -.L2311: + b .L2461 +.L2453: sub w2, w2, #1 strh w2, [x0,x21] -.L2310: +.L2452: adrp x20, .LANCHOR4 mov w0, 65535 add x20, x20, :lo12:.LANCHOR4 - ldrh w1, [x20,4000] + ldrh w1, [x20,4016] cmp w1, w0 - bne .L2314 - strh w19, [x20,4000] -.L2319: + bne .L2456 + strh w19, [x20,4016] +.L2461: mov w0, 0 - b .L2313 -.L2314: + b .L2455 +.L2456: cmp w1, w19 mov w0, 0 - beq .L2313 + beq .L2455 mov w0, w1 bl update_vpc_list cmp w0, wzr cset w0, ne - strh w19, [x20,4000] -.L2313: + strh w19, [x20,4016] +.L2455: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -15672,81 +16191,81 @@ FtlRecoverySuperblock: mov x19, x0 ldrh w0, [x0] cmp w0, w2 - beq .L2477 + beq .L2624 ldrh w0, [x19,2] adrp x20, .LANCHOR2 str w0, [x29,188] add x0, x20, :lo12:.LANCHOR2 ldrb w28, [x19,6] ldr w1, [x29,188] - ldrh w0, [x0,818] + ldrh w0, [x0,824] cmp w0, w1 - bne .L2323 + bne .L2465 strh wzr, [x19,4] - b .L2483 -.L2323: + b .L2630 +.L2465: ldrh w0, [x19,16] mov w1, 0 -.L2324: +.L2466: cmp w0, w2 - bne .L2486 + bne .L2633 add w1, w1, 1 uxth w1, w1 add x0, x19, x1, sxtw 1 ldrh w0, [x0,16] - b .L2324 -.L2486: + b .L2466 +.L2633: ldrb w1, [x19,8] cmp w1, 1 - bne .L2326 + bne .L2468 bl FtlGetLastWrittenPage cmn w0, #1 mov w21, w0 - beq .L2327 + beq .L2469 adrp x0, .LANCHOR0 mov w23, w21 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,136] - cbnz w1, .L2400 - add x0, x0, 140 + ldrb w1, [x0,4044] + cbnz w1, .L2543 + add x0, x0, 136 ldrh w23, [x0,w21,sxtw 1] - b .L2400 -.L2326: + b .L2543 +.L2468: mov w1, 0 bl FtlGetLastWrittenPage cmn w0, #1 mov w21, w0 - beq .L2327 + beq .L2469 mov w23, w0 -.L2400: +.L2543: add x0, x20, :lo12:.LANCHOR2 mov x2, x19 mov w25, 0 mov w8, 65535 mov w9, 56 mov w10, 4 - ldrh w4, [x0,748] - ldrh w7, [x0,830] + ldrh w4, [x0,756] + ldrh w7, [x0,836] add x4, x19, x4, lsl 1 - b .L2329 -.L2327: + b .L2471 +.L2469: strh wzr, [x19,2] -.L2483: +.L2630: strb wzr, [x19,6] - b .L2477 -.L2331: + b .L2624 +.L2473: ldrh w1, [x2,16] cmp w1, w8 - beq .L2330 + beq .L2472 add x5, x20, :lo12:.LANCHOR2 orr w1, w23, w1, lsl 10 umull x0, w25, w9 add w3, w25, 1 - ldr x6, [x5,992] + ldr x6, [x5,1000] add x6, x6, x0 str w1, [x6,4] - ldr x1, [x5,992] - ldr x5, [x5,1128] + ldr x1, [x5,1000] + ldr x5, [x5,1136] add x0, x1, x0 mul w1, w25, w7 uxth w25, w3 @@ -15754,51 +16273,51 @@ FtlRecoverySuperblock: sdiv w1, w1, w10 add x1, x5, x1, sxtw 2 str x1, [x0,16] -.L2330: +.L2472: add x2, x2, 2 -.L2329: +.L2471: cmp x2, x4 - bne .L2331 + bne .L2473 ldrb w0, [x19,8] str wzr, [x29,184] cmp w0, 1 - bne .L2332 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] + bne .L2474 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] cmp w0, wzr cset w0, ne str w0, [x29,184] -.L2332: +.L2474: add x22, x20, :lo12:.LANCHOR2 ldr w2, [x29,184] mov w1, w25 mov x26, 0 mov w24, 65535 adrp x27, .LANCHOR4 - ldr x0, [x22,992] + ldr x0, [x22,1000] bl FlashReadPages - ldr w0, [x22,876] - adrp x22, .LC146 + ldr w0, [x22,880] + adrp x22, .LC148 str w0, [x29,176] - add x22, x22, :lo12:.LC146 + add x22, x22, :lo12:.LC148 uxth w0, w23 str w0, [x29,168] -.L2333: +.L2475: uxth w2, w26 cmp w2, w25 - bcs .L2340 + bcs .L2482 add x6, x20, :lo12:.LANCHOR2 mov x0, 56 mul x0, x26, x0 - ldr x4, [x6,992] + ldr x4, [x6,1000] add x1, x4, x0 ldr w0, [x4,x0] - cbnz w0, .L2334 + cbnz w0, .L2476 ldr x7, [x1,16] ldr w4, [x7,4] cmn w4, #1 - beq .L2335 - ldr w1, [x6,876] + beq .L2477 + ldr w1, [x6,880] mov w0, w4 str x7, [x29,136] str x2, [x29,144] @@ -15809,300 +16328,302 @@ FtlRecoverySuperblock: ldr x4, [x29,152] ldr x2, [x29,144] ldr x7, [x29,136] - cbz w0, .L2335 + cbz w0, .L2477 add w4, w4, 1 - str w4, [x6,876] -.L2335: + str w4, [x6,880] +.L2477: ldr w0, [x7] cmn w0, #1 - bne .L2336 -.L2340: - cmp w2, w25 bne .L2478 +.L2482: + cmp w2, w25 + bne .L2625 add x0, x20, :lo12:.LANCHOR2 add w21, w21, 1 uxth w21, w21 - ldr x0, [x0,992] + ldr x0, [x0,1000] ldr w0, [x0,4] - b .L2479 -.L2334: + b .L2626 +.L2476: ldr w1, [x1,4] mov x0, x22 bl printk ldr w24, [x29,168] add x0, x27, :lo12:.LANCHOR4 ldrh w1, [x19] - strh w1, [x0,4058] -.L2336: - add x26, x26, 1 - b .L2333 + strh w1, [x0,4074] .L2478: + add x26, x26, 1 + b .L2475 +.L2625: add x0, x20, :lo12:.LANCHOR2 mov w1, 56 uxth w21, w21 umull x2, w2, w1 - ldr x0, [x0,992] + ldr x0, [x0,1000] add x2, x0, x2 ldr w0, [x2,4] -.L2479: +.L2626: lsr x0, x0, 10 bl P2V_plane uxth w26, w0 ldrb w1, [x19,8] cmp w1, 1 - bne .L2342 + bne .L2484 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w2, [x0,136] - cbnz w2, .L2342 - add x0, x0, 140 + ldrb w2, [x0,4044] + cbnz w2, .L2484 + add x0, x0, 136 ldrh w21, [x0,w21,sxtw 1] -.L2342: +.L2484: add x0, x20, :lo12:.LANCHOR2 - ldrh w0, [x0,818] + ldrh w0, [x0,824] cmp w0, w21 - bne .L2343 + bne .L2485 strh w21, [x19,2] strb wzr, [x19,6] strh wzr, [x19,4] -.L2343: +.L2485: uxth w0, w28 str w0, [x29,152] ldr w0, [x29,188] cmp w21, w0 - bne .L2344 + bne .L2486 ldr w0, [x29,152] cmp w26, w0 - beq .L2484 -.L2344: + beq .L2631 +.L2486: ldr w0, [x29,176] adrp x25, .LANCHOR4 sub w22, w0, #1 mov w0, 65535 cmp w24, w0 - bne .L2345 - cbnz w1, .L2346 -.L2345: + bne .L2487 + cbnz w1, .L2488 +.L2487: add x0, x25, :lo12:.LANCHOR4 - uxth w6, w23 - ldr w1, [x0,4012] + uxth w5, w23 + ldr w1, [x0,4028] cmn w1, #1 - bne .L2347 - str w22, [x0,4012] -.L2347: + bne .L2489 + str w22, [x0,4028] +.L2489: add x0, x25, :lo12:.LANCHOR4 ldr w24, [x29,188] - ldr w3, [x0,4012] + ldr w3, [x0,4028] ldr w0, [x29,188] add w0, w0, 7 cmp w0, w23, uxth - bge .L2348 - sub w24, w6, #7 + bge .L2490 + sub w24, w5, #7 uxth w24, w24 -.L2348: - adrp x7, .LANCHOR0 +.L2490: mov w28, -1 - add x5, x7, :lo12:.LANCHOR0 + adrp x6, .LANCHOR0 mov w27, w28 mov w4, 65535 - add x5, x5, 652 -.L2349: - cmp w24, w6 - bhi .L2362 + mov w7, 56 + add x8, x6, :lo12:.LANCHOR0 +.L2491: + cmp w24, w5 + bhi .L2504 add x0, x20, :lo12:.LANCHOR2 mov w23, 0 - mov w10, 56 - ldrh w2, [x0,748] + ldrh w2, [x0,756] mov x0, x19 add x2, x19, x2, lsl 1 -.L2363: +.L2505: cmp x0, x2 - beq .L2487 + beq .L2634 ldrh w1, [x0,16] cmp w1, w4 - beq .L2350 - add x9, x20, :lo12:.LANCHOR2 + beq .L2492 + add x10, x20, :lo12:.LANCHOR2 orr w1, w24, w1, lsl 10 - umull x8, w23, w10 + umull x9, w23, w7 add w23, w23, 1 - ldr x9, [x9,992] + ldr x10, [x10,1000] uxth w23, w23 - add x8, x9, x8 - str w1, [x8,4] -.L2350: + add x9, x10, x9 + str w1, [x9,4] +.L2492: add x0, x0, 2 - b .L2363 -.L2487: - add x8, x20, :lo12:.LANCHOR2 + b .L2505 +.L2634: + add x9, x20, :lo12:.LANCHOR2 ldr w2, [x29,184] mov w1, w23 - str x5, [x29,128] + str x8, [x29,120] + str x6, [x29,128] + ldr x0, [x9,1000] str x7, [x29,136] - ldr x0, [x8,992] str x4, [x29,144] str x3, [x29,160] - str x6, [x29,168] - str x8, [x29,176] + str x5, [x29,168] + str x9, [x29,176] bl FlashReadPages - ldr x7, [x29,136] + ldr x6, [x29,128] mov w1, 0 - ldr x8, [x29,176] - sxtw x10, w24 - add x0, x7, :lo12:.LANCHOR0 - ldr x6, [x29,168] + ldr x9, [x29,176] + sxtw x11, w24 + add x0, x6, :lo12:.LANCHOR0 + ldr x5, [x29,168] ldr x3, [x29,160] ldr x4, [x29,144] - ldrb w9, [x0,136] - ldr x0, [x8,992] - ldr x5, [x29,128] + ldrb w10, [x0,4044] + ldr x0, [x9,1000] + ldr x7, [x29,136] + ldr x8, [x29,120] add x0, x0, 16 -.L2352: +.L2494: cmp w1, w23 - beq .L2488 + beq .L2635 ldr w2, [x0,-16] - cbnz w2, .L2353 + cbnz w2, .L2495 ldr x2, [x0] - ldrh w8, [x2] - cmp w8, w4 - beq .L2354 - ldr w8, [x2,4] - cmn w8, #1 - beq .L2354 + ldrh w9, [x2] + cmp w9, w4 + beq .L2496 + ldr w9, [x2,4] + cmn w9, #1 + beq .L2496 add x2, x25, :lo12:.LANCHOR4 cmn w28, #1 - ldr w27, [x2,4012] - str w8, [x2,4012] - bne .L2354 - ldrh w2, [x5,x10,lsl 1] + ldr w27, [x2,4028] + str w9, [x2,4028] + bne .L2496 + add x2, x8, 648 + ldrh w2, [x2,x11,lsl 1] cmp w2, w4 - bne .L2355 - cbz w9, .L2354 -.L2355: + bne .L2497 + cbz w10, .L2496 +.L2497: cmp w27, w22 csinv w28, w27, wzr, ne - b .L2354 -.L2353: + b .L2496 +.L2495: add x0, x25, :lo12:.LANCHOR4 ldrh w1, [x19] - strh w1, [x0,4058] + strh w1, [x0,4074] ldrb w1, [x19,8] - cbnz w1, .L2346 + cbnz w1, .L2488 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 652 + add x1, x1, 648 ldrh w2, [x1,w24,sxtw 1] mov w1, 65535 cmp w2, w1 - bne .L2357 + bne .L2499 cmn w28, #1 - beq .L2358 - str w28, [x0,4012] - b .L2346 -.L2358: + beq .L2500 + str w28, [x0,4028] + b .L2488 +.L2500: cmp w3, w22 - beq .L2359 - str w3, [x0,4012] - b .L2346 -.L2359: - ldr w1, [x0,4012] - b .L2485 -.L2357: + beq .L2501 + str w3, [x0,4028] + b .L2488 +.L2501: + ldr w1, [x0,4028] + b .L2632 +.L2499: cmp w27, w22 - beq .L2360 + beq .L2502 cmn w27, #1 - beq .L2346 - str w27, [x0,4012] - b .L2346 -.L2360: - ldr w1, [x0,4012] + beq .L2488 + str w27, [x0,4028] + b .L2488 +.L2502: + ldr w1, [x0,4028] cmp w1, w22 - beq .L2346 -.L2485: + beq .L2488 +.L2632: sub w1, w1, #1 - b .L2480 -.L2354: + b .L2627 +.L2496: add w1, w1, 1 add x0, x0, 56 uxth w1, w1 - b .L2352 -.L2488: + b .L2494 +.L2635: add w24, w24, 1 uxth w24, w24 - b .L2349 -.L2362: + b .L2491 +.L2504: add x0, x25, :lo12:.LANCHOR4 mov w1, -1 -.L2480: - str w1, [x0,4012] -.L2346: +.L2627: + str w1, [x0,4028] +.L2488: add x0, x25, :lo12:.LANCHOR4 mov w1, 1 ldr w23, [x29,188] - strh w1, [x0,4060] - adrp x0, .LC148 - add x0, x0, :lo12:.LC148 + strh w1, [x0,4076] + adrp x0, .LC150 + add x0, x0, :lo12:.LC150 str x0, [x29,128] - adrp x0, .LC147 - add x0, x0, :lo12:.LC147 + adrp x0, .LC149 + add x0, x0, :lo12:.LC149 str x0, [x29,120] -.L2364: +.L2506: add x0, x20, :lo12:.LANCHOR2 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 str wzr, [x29,176] mov w7, 65535 mov w8, 56 - ldrh w3, [x0,748] - ldrb w6, [x1,136] + ldrh w3, [x0,756] + ldrb w6, [x1,4044] mov x1, x19 add x3, x19, x3, lsl 1 -.L2365: +.L2507: cmp x1, x3 - beq .L2489 + beq .L2636 ldrh w2, [x1,16] cmp w2, w7 - beq .L2366 + beq .L2508 ldr w0, [x29,176] add x5, x20, :lo12:.LANCHOR2 orr w2, w23, w2, lsl 10 - ldr x4, [x5,992] + ldr x4, [x5,1000] umull x0, w0, w8 add x4, x4, x0 str w2, [x4,4] ldrb w2, [x19,8] cmp w2, 1 - bne .L2367 - cbz w6, .L2367 - ldr x2, [x5,992] + bne .L2509 + cbz w6, .L2509 + ldr x2, [x5,1000] add x0, x2, x0 ldr w2, [x0,4] orr w2, w2, -2147483648 str w2, [x0,4] -.L2367: +.L2509: ldr w0, [x29,176] add w0, w0, 1 uxth w0, w0 str w0, [x29,176] -.L2366: +.L2508: add x1, x1, 2 - b .L2365 -.L2489: + b .L2507 +.L2636: add x0, x20, :lo12:.LANCHOR2 ldr w1, [x29,176] ldr w2, [x29,184] - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages str xzr, [x29,160] -.L2369: +.L2511: ldrh w0, [x29,160] ldr w1, [x29,176] cmp w1, w0, uxth - bls .L2490 + bls .L2637 ldr x0, [x29,160] mov x24, 56 mul x24, x0, x24 add x0, x20, :lo12:.LANCHOR2 - ldr x28, [x0,992] + ldr x28, [x0,1000] add x27, x28, x24 ldr w1, [x27,4] str w1, [x29,204] @@ -16113,41 +16634,41 @@ FtlRecoverySuperblock: ldr w1, [x29,188] cmp w23, w1 ldr x1, [x29,168] - bcc .L2370 + bcc .L2512 ldr w2, [x29,152] cmp w0, w2 - bcs .L2404 + bcs .L2547 ldr w2, [x29,188] cmp w23, w2 - beq .L2370 -.L2404: + beq .L2512 +.L2547: cmp w0, w26 - bne .L2405 + bne .L2548 cmp w23, w21 - beq .L2372 -.L2405: + beq .L2514 +.L2548: ldr w0, [x28,x24] cmn w0, #1 - beq .L2374 + beq .L2516 ldr x28, [x27,16] mov w0, 61589 ldrh w1, [x28] cmp w1, w0 - beq .L2375 + beq .L2517 ldrh w0, [x19] - b .L2481 -.L2375: + b .L2628 +.L2517: ldr w22, [x28,4] cmn w22, #1 - beq .L2376 + beq .L2518 add x27, x20, :lo12:.LANCHOR2 mov w0, w22 - ldr w1, [x27,876] + ldr w1, [x27,880] bl ftl_cmp_data_ver - cbz w0, .L2376 + cbz w0, .L2518 add w0, w22, 1 - str w0, [x27,876] -.L2376: + str w0, [x27,880] +.L2518: ldr w27, [x28,8] add x1, x29, 200 ldr w0, [x28,12] @@ -16155,257 +16676,266 @@ FtlRecoverySuperblock: str w0, [x29,196] mov w0, w27 bl log2phys + ldr w28, [x29,196] add x0, x25, :lo12:.LANCHOR4 str x0, [x29,136] - ldr w1, [x0,4012] + ldr w1, [x0,4028] cmn w1, #1 - beq .L2377 + beq .L2519 mov w0, w22 bl ftl_cmp_data_ver - cbz w0, .L2377 - ldr w1, [x29,196] - cmn w1, #1 - beq .L2378 + cbz w0, .L2519 + cmn w28, #1 + beq .L2520 add x3, x20, :lo12:.LANCHOR2 - str x3, [x29,112] - ldr x0, [x3,992] - add x0, x0, x24 - str w1, [x0,4] - mov w1, 1 - ldr x2, [x0,16] - ldr x0, [x3,992] - str x2, [x29,168] mov w2, 0 + str x3, [x29,112] + ldr x0, [x3,1000] + add x0, x0, x24 + str w28, [x0,4] + ldr x1, [x0,16] + ldr x0, [x3,1000] + str x1, [x29,168] + mov w1, 1 add x0, x0, x24 bl FlashReadPages ldr x3, [x29,112] ldr x0, [x29,168] - ldr x2, [x3,992] + ldr x2, [x3,1000] ldr w0, [x0,4] str w0, [x29,144] add x4, x2, x24 ldr w0, [x2,x24] cmn w0, #1 - bne .L2379 - b .L2380 -.L2378: + bne .L2521 + b .L2522 +.L2520: ldr w0, [x29,204] ldr w1, [x29,200] cmp w1, w0 - bne .L2370 + bne .L2512 mov w0, w27 add x1, x29, 196 mov w2, 1 bl log2phys - b .L2370 -.L2379: + b .L2512 +.L2521: ldr x0, [x29,168] ldr w28, [x0,8] cmp w28, w27 - bne .L2380 + bne .L2522 ldr x0, [x29,136] ldr w1, [x29,144] str x2, [x29,96] - ldr w0, [x0,4012] + ldr w0, [x0,4028] str x3, [x29,104] str x4, [x29,112] bl ftl_cmp_data_ver ldr x4, [x29,112] ldr x3, [x29,104] ldr x2, [x29,96] - cbz w0, .L2380 + cbz w0, .L2522 ldr w0, [x29,200] ldr w1, [x29,204] cmp w0, w1 - beq .L2385 + beq .L2527 ldr w1, [x29,196] cmp w0, w1 - beq .L2380 + beq .L2522 cmn w0, #1 - beq .L2383 + beq .L2525 str w0, [x4,4] mov w2, 0 ldr x1, [x4,16] - ldr x0, [x3,992] + ldr x0, [x3,1000] str x1, [x29,168] mov w1, 1 add x0, x0, x24 bl FlashReadPages - b .L2384 -.L2383: + b .L2526 +.L2525: str w0, [x2,x24] -.L2384: - adrp x0, .LANCHOR2+992 - ldr x0, [x0,#:lo12:.LANCHOR2+992] +.L2526: + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr x0, [x0,1000] ldr w0, [x0,x24] cmn w0, #1 - beq .L2385 + beq .L2527 ldr x0, [x29,168] ldr w24, [x0,4] add x0, x25, :lo12:.LANCHOR4 mov w1, w24 - ldr w0, [x0,4012] + ldr w0, [x0,4028] bl ftl_cmp_data_ver - cbz w0, .L2385 + cbz w0, .L2527 ldr w0, [x29,144] mov w1, w24 bl ftl_cmp_data_ver - cbz w0, .L2380 -.L2385: + cbz w0, .L2522 +.L2527: ldr w1, [x29,196] mov w0, w28 bl FtlReUsePrevPpa -.L2380: +.L2522: mov w0, -1 str w0, [x29,196] - b .L2387 -.L2377: + b .L2529 +.L2519: ldr w0, [x29,204] ldr w1, [x29,200] cmp w1, w0 - beq .L2387 + beq .L2529 + add x0, x20, :lo12:.LANCHOR2 + ldr w0, [x0,772] + cmp w0, w28, lsr 10 + bhi .L2549 + cmn w28, #1 + bne .L2512 +.L2549: mov w0, w27 add x1, x29, 204 mov w2, 1 bl log2phys - ldr w24, [x29,200] - cmn w24, #1 - beq .L2387 + ldr w28, [x29,200] + cmn w28, #1 + beq .L2529 ldr w0, [x29,196] - cmp w24, w0 - beq .L2387 - lsr x0, x24, 10 + cmp w28, w0 + beq .L2529 + lsr x0, x28, 10 bl P2V_block_in_plane uxth w0, w0 add x1, x20, :lo12:.LANCHOR2 - ldrh w2, [x1,3608] + ldrh w2, [x1,3616] cmp w2, w0 - beq .L2390 - ldrh w2, [x1,3656] + beq .L2533 + ldrh w2, [x1,3664] cmp w2, w0 - beq .L2390 - ldrh w1, [x1,3704] + beq .L2533 + ldrh w1, [x1,3712] cmp w1, w0 - bne .L2387 -.L2390: - add x28, x20, :lo12:.LANCHOR2 + bne .L2529 +.L2533: + adrp x0, .LANCHOR2 mov w1, 1 + add x24, x0, :lo12:.LANCHOR2 mov w2, 0 - ldr x0, [x28,992] - str w24, [x0,4] + ldr x0, [x24,1000] + str w28, [x0,4] ldr x3, [x0,16] - ldr x0, [x28,992] + ldr x0, [x24,1000] str x3, [x29,168] bl FlashReadPages - ldr x0, [x28,992] + ldr x0, [x24,1000] ldr x3, [x29,168] ldr w0, [x0] ldr w1, [x3,4] cmn w0, #1 - beq .L2387 + beq .L2529 mov w0, w22 bl ftl_cmp_data_ver - cbnz w0, .L2387 + cbnz w0, .L2529 mov w0, w27 add x1, x29, 200 mov w2, 1 bl log2phys -.L2387: +.L2529: ldr w0, [x29,196] cmn w0, #1 - beq .L2370 + beq .L2512 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 add x2, x20, :lo12:.LANCHOR2 ubfiz x3, x1, 1, 16 - ldr x2, [x2,1184] + ldr x2, [x2,1192] ldrh w2, [x2,x3] - cbz w2, .L2391 -.L2481: + cbz w2, .L2534 +.L2628: bl decrement_vpc_count - b .L2370 -.L2391: + b .L2512 +.L2534: ldr x0, [x29,120] bl printk - b .L2370 -.L2374: + b .L2512 +.L2516: add x24, x25, :lo12:.LANCHOR4 ldrh w0, [x19] mov w2, w22 - strh w0, [x24,4058] + strh w0, [x24,4074] ldr x0, [x29,128] bl printk - ldr w0, [x24,4064] + ldr w0, [x24,4080] cmp w0, 31 - bhi .L2392 - add x1, x24, 4072 + bhi .L2535 + add x1, x24, 4088 ldr w2, [x29,204] str w2, [x1,w0,uxtw 2] add w0, w0, 1 - str w0, [x24,4064] -.L2392: + str w0, [x24,4080] +.L2535: ldrh w0, [x19] bl decrement_vpc_count add x0, x25, :lo12:.LANCHOR4 - ldr w1, [x0,4012] + ldr w1, [x0,4028] cmn w1, #1 - beq .L2482 + beq .L2629 cmp w1, w22 - bls .L2370 -.L2482: - str w22, [x0,4012] -.L2370: + bls .L2512 +.L2629: + str w22, [x0,4028] +.L2512: ldr x0, [x29,160] add x0, x0, 1 str x0, [x29,160] - b .L2369 -.L2490: + b .L2511 +.L2637: ldrb w0, [x19,8] add w23, w23, 1 cmp w0, 1 uxth w23, w23 - bne .L2395 + bne .L2538 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2395 + ldrb w0, [x0,4044] + cbz w0, .L2538 cmp w21, w23 - bne .L2395 + bne .L2538 add x0, x20, :lo12:.LANCHOR2 - ldrh w0, [x0,820] + ldrh w0, [x0,826] cmp w0, w23 - beq .L2372 -.L2395: + beq .L2514 +.L2538: add x0, x20, :lo12:.LANCHOR2 - ldrh w1, [x0,818] + ldrh w1, [x0,824] cmp w23, w1 - bne .L2364 - ldrh w2, [x0,748] + bne .L2506 + ldrh w2, [x0,756] mov w3, 65535 strh w23, [x19,2] mov x0, 0 strh wzr, [x19,4] -.L2397: +.L2540: uxth w1, w0 cmp w1, w2 - bcs .L2477 + bcs .L2624 add x0, x0, 1 add x4, x19, x0, lsl 1 ldrh w4, [x4,14] cmp w4, w3 - beq .L2397 + beq .L2540 strb w1, [x19,6] - b .L2477 -.L2372: + b .L2624 +.L2514: strb w26, [x19,6] strh w21, [x19,2] -.L2484: +.L2631: mov x0, x19 mov w1, w21 mov w2, w26 bl ftl_sb_update_avl_pages -.L2477: +.L2624: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -16419,231 +16949,227 @@ FtlRecoverySuperblock: .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - str x23, [sp,48] ldrh w1, [x0,4] - cbz w1, .L2491 + cbz w1, .L2638 ldrh w1, [x0] mov w20, 65535 cmp w1, w20 - beq .L2491 + beq .L2638 mov x19, x0 ldrb w0, [x0,6] adrp x21, .LANCHOR0 - adrp x23, .LANCHOR2 + adrp x22, .LANCHOR2 add x0, x0, 8 add x21, x21, :lo12:.LANCHOR0 - add x22, x21, 652 ldrh w0, [x19,x0,lsl 1] -.L2495: +.L2642: cmp w0, w20 - bne .L2502 -.L2497: + bne .L2649 +.L2644: ldrb w0, [x19,6] - add x1, x23, :lo12:.LANCHOR2 + add x1, x22, :lo12:.LANCHOR2 add w0, w0, 1 - ldrh w1, [x1,748] + ldrh w1, [x1,756] uxtb w0, w0 strb w0, [x19,6] cmp w1, w0 - bne .L2496 + bne .L2643 ldrh w0, [x19,2] strb wzr, [x19,6] add w0, w0, 1 strh w0, [x19,2] -.L2496: +.L2643: ldrb w0, [x19,6] add x0, x0, 8 ldrh w0, [x19,x0,lsl 1] - b .L2495 -.L2502: + b .L2642 +.L2649: ldrb w1, [x19,8] cmp w1, 1 - bne .L2498 - ldrb w0, [x21,136] - cbnz w0, .L2498 - ldrh w0, [x19,2] - ldrh w0, [x22,w0,sxtw 1] + bne .L2645 + ldrb w0, [x21,4044] + cbnz w0, .L2645 + add x0, x21, 648 + ldrh w2, [x19,2] + ldrh w0, [x0,w2,sxtw 1] cmp w0, w20 - bne .L2498 + bne .L2645 ldrh w0, [x19,4] sub w0, w0, #1 strh w0, [x19,4] ldrh w0, [x19] bl decrement_vpc_count ldrh w1, [x19,4] - cbnz w1, .L2497 + cbnz w1, .L2644 ldrh w0, [x19,2] strb w1, [x19,6] add w0, w0, 1 strh w0, [x19,2] - b .L2491 -.L2498: + b .L2638 +.L2645: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2491 + ldrb w0, [x0,4044] + cbz w0, .L2638 cmp w1, 1 - bne .L2491 + bne .L2638 adrp x0, .LANCHOR2 ldrh w2, [x19,2] add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,820] + ldrh w1, [x0,826] cmp w2, w1 - bcc .L2491 + bcc .L2638 ldrh w1, [x19] - ldr x3, [x0,1184] + ldr x3, [x0,1192] lsl x1, x1, 1 ldrh w4, [x19,4] ldrh w2, [x3,x1] sub w2, w2, w4 strh w2, [x3,x1] strh wzr, [x19,4] - ldrh w0, [x0,818] + ldrh w0, [x0,824] strh w0, [x19,2] strb wzr, [x19,6] -.L2491: +.L2638: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 64 + ldp x29, x30, [sp], 48 ret .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global get_new_active_ppa .type get_new_active_ppa, %function get_new_active_ppa: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp,16] - stp x23, x24, [sp,48] stp x21, x22, [sp,32] - str x25, [sp,64] + stp x23, x24, [sp,48] mov x19, x0 strb wzr, [x0,10] - adrp x20, .LANCHOR0 ldrb w0, [x0,6] - add x20, x20, :lo12:.LANCHOR0 + adrp x20, .LANCHOR0 mov w22, 65535 adrp x23, .LANCHOR2 add x0, x0, 8 - add x24, x20, 652 + add x20, x20, :lo12:.LANCHOR0 ldrh w0, [x19,x0,lsl 1] -.L2504: +.L2651: cmp w0, w22 adrp x21, .LANCHOR2 - bne .L2519 -.L2505: + bne .L2666 +.L2652: ldrb w0, [x19,6] add x1, x23, :lo12:.LANCHOR2 add w0, w0, 1 - ldrh w1, [x1,748] + ldrh w1, [x1,756] uxtb w0, w0 strb w0, [x19,6] cmp w1, w0 - bne .L2506 + bne .L2653 ldrh w0, [x19,2] strb wzr, [x19,6] add w0, w0, 1 strh w0, [x19,2] -.L2506: +.L2653: ldrb w0, [x19,6] add x0, x0, 8 ldrh w0, [x19,x0,lsl 1] - b .L2504 -.L2519: + b .L2651 +.L2666: ldrb w1, [x19,8] cmp w1, 1 - bne .L2507 - ldrb w1, [x20,136] - cbnz w1, .L2507 - ldrh w1, [x19,2] - ldrh w1, [x24,w1,sxtw 1] + bne .L2654 + ldrb w1, [x20,4044] + cbnz w1, .L2654 + add x1, x20, 648 + ldrh w2, [x19,2] + ldrh w1, [x1,w2,sxtw 1] cmp w1, w22 - bne .L2507 + bne .L2654 ldrh w0, [x19,4] sub w0, w0, #1 strh w0, [x19,4] ldrh w0, [x19] bl decrement_vpc_count - b .L2505 -.L2507: + b .L2652 +.L2654: ldrh w1, [x19,4] - adrp x20, .LANCHOR0 - ldrh w22, [x19,2] mov w23, 65535 - add x20, x20, :lo12:.LANCHOR0 + ldrh w22, [x19,2] + adrp x20, .LANCHOR0 sub w1, w1, #1 + mov w24, w23 orr w22, w22, w0, lsl 10 strh w1, [x19,4] - mov w24, w23 - add x25, x20, 652 -.L2508: + add x20, x20, :lo12:.LANCHOR0 +.L2655: add x0, x21, :lo12:.LANCHOR2 ldrb w1, [x19,6] - ldrh w2, [x0,748] -.L2510: + ldrh w2, [x0,756] +.L2657: add w1, w1, 1 uxtb w1, w1 cmp w1, w2 - bne .L2509 + bne .L2656 ldrh w1, [x19,2] add w1, w1, 1 strh w1, [x19,2] mov w1, 0 -.L2509: +.L2656: add x0, x19, x1, sxtw 1 ldrh w0, [x0,16] cmp w0, w23 - beq .L2510 + beq .L2657 ldrb w0, [x19,8] strb w1, [x19,6] cmp w0, 1 - bne .L2515 - ldrb w0, [x20,136] - cbnz w0, .L2512 + bne .L2662 + ldrb w0, [x20,4044] + cbnz w0, .L2659 + add x1, x20, 648 ldrh w0, [x19,2] - ldrh w0, [x25,w0,sxtw 1] + ldrh w0, [x1,w0,sxtw 1] cmp w0, w24 - bne .L2512 + bne .L2659 ldrh w1, [x19,4] - cbz w1, .L2512 + cbz w1, .L2659 ldrh w0, [x19] sub w1, w1, #1 strh w1, [x19,4] bl decrement_vpc_count - b .L2508 -.L2512: + b .L2655 +.L2659: adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrb w0, [x1,136] - cbz w0, .L2515 + ldrb w0, [x1,4044] + cbz w0, .L2662 add x2, x21, :lo12:.LANCHOR2 ldrh w1, [x19,2] - ldrh w0, [x2,820] + ldrh w0, [x2,826] cmp w1, w0 - bcc .L2515 + bcc .L2662 ldrh w1, [x19] - ldr x0, [x2,1184] + ldr x0, [x2,1192] lsl x1, x1, 1 ldrh w4, [x19,4] ldrh w3, [x0,x1] sub w3, w3, w4 strh w3, [x0,x1] strh wzr, [x19,4] - ldrh w0, [x2,818] + ldrh w0, [x2,824] strh w0, [x19,2] strb wzr, [x19,6] -.L2515: +.L2662: mov w0, w22 - ldr x25, [sp,64] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 + ldp x29, x30, [sp], 64 ret .size get_new_active_ppa, .-get_new_active_ppa .align 2 @@ -16658,58 +17184,58 @@ FtlWriteDumpData: add x20, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] stp x23, x24, [sp,48] - ldr w0, [x20,1400] - cbnz w0, .L2520 - ldrh w2, [x20,3612] - cbz w2, .L2522 - ldrb w1, [x20,3616] - cbnz w1, .L2522 - ldrb w1, [x20,3615] - ldrh w3, [x20,818] + ldr w0, [x20,1408] + cbnz w0, .L2667 + ldrh w2, [x20,3620] + cbz w2, .L2669 + ldrb w1, [x20,3624] + cbnz w1, .L2669 + ldrb w1, [x20,3623] + ldrh w3, [x20,824] mul w1, w1, w3 cmp w2, w1 - beq .L2522 - ldrb w23, [x20,3618] - ldr w22, [x20,1396] - ldrh w24, [x20,748] - cbnz w23, .L2520 + beq .L2669 + ldrb w23, [x20,3626] + ldr w22, [x20,1404] + ldrh w24, [x20,756] + cbnz w23, .L2667 sub w22, w22, #1 add x1, x29, 84 mov w0, w22 mov w2, w23 bl log2phys - ldr x21, [x20,1112] + ldr x21, [x20,1120] ldr w0, [x29,84] - ldr x1, [x20,1048] + ldr x1, [x20,1056] str w0, [x29,92] cmn w0, #1 str w22, [x29,112] str x1, [x29,96] str x21, [x29,104] str w23, [x21,4] - beq .L2524 + beq .L2671 add x0, x29, 88 mov w1, 1 mov w2, w23 bl FlashReadPages - b .L2525 -.L2524: - ldr x0, [x20,1048] + b .L2672 +.L2671: + ldr x0, [x20,1056] mov w1, 255 - ldrh w2, [x20,828] + ldrh w2, [x20,834] bl ftl_memset -.L2525: +.L2672: add x25, x19, :lo12:.LANCHOR2 mov w0, -3947 lsl w24, w24, 2 strh w0, [x21] mov w23, 0 - add x20, x25, 3608 -.L2526: + add x20, x25, 3616 +.L2673: cmp w23, w24 - beq .L2527 + beq .L2674 ldrh w0, [x20,4] - cbz w0, .L2527 + cbz w0, .L2674 ldr w0, [x29,92] add w23, w23, 1 str w0, [x21,12] @@ -16719,7 +17245,7 @@ FtlWriteDumpData: str w22, [x21,8] bl get_new_active_ppa str w0, [x29,92] - ldr w1, [x25,876] + ldr w1, [x25,880] mov w2, 0 str w1, [x21,4] mov w3, w2 @@ -16727,21 +17253,21 @@ FtlWriteDumpData: add x0, x29, 88 cmn w1, #1 csel w1, w1, wzr, ne - str w1, [x25,876] + str w1, [x25,880] mov w1, 1 bl FlashProgPages ldrh w0, [x20] bl decrement_vpc_count - b .L2526 -.L2527: + b .L2673 +.L2674: add x19, x19, :lo12:.LANCHOR2 mov w0, 1 - strb w0, [x19,3618] - b .L2520 -.L2522: + strb w0, [x19,3626] + b .L2667 +.L2669: add x19, x19, :lo12:.LANCHOR2 - strb wzr, [x19,3618] -.L2520: + strb wzr, [x19,3626] +.L2667: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -16759,23 +17285,23 @@ l2p_flush: mov w19, 0 adrp x20, .LANCHOR2 bl FtlWriteDumpData -.L2538: +.L2685: add x1, x20, :lo12:.LANCHOR2 - ldrh w0, [x1,858] + ldrh w0, [x1,862] cmp w0, w19 - bls .L2541 - ldr x1, [x1,1264] + bls .L2688 + ldr x1, [x1,1272] ubfiz x0, x19, 4, 16 add x0, x1, x0 ldr w0, [x0,4] - tbz w0, #31, .L2539 + tbz w0, #31, .L2686 mov w0, w19 bl flush_l2p_region -.L2539: +.L2686: add w19, w19, 1 uxth w19, w19 - b .L2538 -.L2541: + b .L2685 +.L2688: mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -16792,28 +17318,28 @@ FtlSuperblockPowerLostFix: str x23, [sp,48] add x1, x20, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - ldr w1, [x1,1400] - cbnz w1, .L2542 - adrp x2, .LANCHOR0+136 - ldrb w21, [x2,#:lo12:.LANCHOR0+136] - cbz w21, .L2557 + ldr w1, [x1,1408] + cbnz w1, .L2689 + adrp x2, .LANCHOR0+4044 + ldrb w21, [x2,#:lo12:.LANCHOR0+4044] + cbz w21, .L2704 ldrb w21, [x0,8] cmp w21, 1 - bne .L2553 + bne .L2700 ldrh w23, [x0,4] - b .L2544 -.L2553: + b .L2691 +.L2700: mov w21, w1 -.L2557: +.L2704: mov w23, 12 -.L2544: +.L2691: mov x19, x0 mov w0, -1 str w0, [x29,96] add x0, x20, :lo12:.LANCHOR2 mov w2, 61589 - ldr x22, [x0,1112] - ldr x1, [x0,1048] + ldr x22, [x0,1120] + ldr x1, [x0,1056] str x1, [x29,80] mov w1, -3 str x22, [x29,88] @@ -16823,54 +17349,54 @@ FtlSuperblockPowerLostFix: ldrh w1, [x19] strh w1, [x22,2] strh wzr, [x22] - ldr x1, [x0,1048] + ldr x1, [x0,1056] str w2, [x1] - ldr x1, [x0,1048] + ldr x1, [x0,1056] mov w0, 22136 movk w0, 0x1234, lsl 16 str w0, [x1,4] -.L2545: +.L2692: sub w23, w23, #1 cmn w23, #1 - beq .L2548 + beq .L2695 ldrh w0, [x19,4] - cbnz w0, .L2546 -.L2548: + cbnz w0, .L2693 +.L2695: add x20, x20, :lo12:.LANCHOR2 ldrh w0, [x19] ldrh w3, [x19,4] lsl x0, x0, 1 - ldr x2, [x20,1184] + ldr x2, [x20,1192] ldrh w1, [x2,x0] sub w1, w1, w3 strh w1, [x2,x0] strb wzr, [x19,6] - ldrh w0, [x20,818] + ldrh w0, [x20,824] strh w0, [x19,2] strh wzr, [x19,4] - b .L2542 -.L2546: + b .L2689 +.L2693: mov x0, x19 bl get_new_active_ppa str w0, [x29,76] cmn w0, #1 - beq .L2548 + beq .L2695 add x1, x20, :lo12:.LANCHOR2 mov w2, w21 mov w3, 0 - ldr w0, [x1,876] + ldr w0, [x1,880] str w0, [x22,4] add w0, w0, 1 cmn w0, #1 csel w0, w0, wzr, ne - str w0, [x1,876] + str w0, [x1,880] add x0, x29, 72 mov w1, 1 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - b .L2545 -.L2542: + b .L2692 +.L2689: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -16886,7 +17412,7 @@ FtlVpcCheckAndModify: adrp x0, .LC47 add x1, x1, :lo12:.LANCHOR3 add x29, sp, 0 - add x1, x1, 72 + add x1, x1, 96 add x0, x0, :lo12:.LC47 stp x19, x20, [sp,16] stp x21, x22, [sp,32] @@ -16897,80 +17423,80 @@ FtlVpcCheckAndModify: add x0, x19, :lo12:.LANCHOR2 mov w1, 0 mov x21, x19 - ldrh w2, [x0,758] - ldr x0, [x0,1176] + ldrh w2, [x0,766] + ldr x0, [x0,1184] lsl w2, w2, 1 bl ftl_memset -.L2559: +.L2706: add x19, x21, :lo12:.LANCHOR2 - ldr w0, [x19,1396] + ldr w0, [x19,1404] cmp w20, w0 - bcs .L2575 + bcs .L2722 mov w0, w20 add x1, x29, 76 mov w2, 0 bl log2phys ldr w0, [x29,76] cmn w0, #1 - beq .L2560 + beq .L2707 lsr x0, x0, 10 bl P2V_block_in_plane ubfiz x0, x0, 1, 16 - ldr x2, [x19,1176] + ldr x2, [x19,1184] ldrh w1, [x2,x0] add w1, w1, 1 strh w1, [x2,x0] -.L2560: +.L2707: add w20, w20, 1 - b .L2559 -.L2575: - adrp x22, .LC149 + b .L2706 +.L2722: + adrp x22, .LC151 mov w20, 0 mov w23, 65535 - add x22, x22, :lo12:.LC149 -.L2562: - ldrh w0, [x19,756] + add x22, x22, :lo12:.LC151 +.L2709: + ldrh w0, [x19,764] cmp w0, w20 - bls .L2576 + bls .L2723 ubfiz x21, x20, 1, 16 - ldr x0, [x19,1184] + ldr x0, [x19,1192] ldrh w2, [x0,x21] - ldr x0, [x19,1176] + ldr x0, [x19,1184] ldrh w3, [x0,x21] cmp w2, w3 - beq .L2565 + beq .L2712 cmp w2, w23 - beq .L2565 + beq .L2712 mov x0, x22 mov w1, w20 bl printk - ldrh w0, [x19,3608] + ldrh w0, [x19,3616] cmp w0, w20 - beq .L2565 - ldrh w0, [x19,3704] + beq .L2712 + ldrh w0, [x19,3712] cmp w0, w20 - beq .L2565 - ldrh w0, [x19,3656] + beq .L2712 + ldrh w0, [x19,3664] cmp w0, w20 - beq .L2565 - ldr x0, [x19,1184] + beq .L2712 + ldr x0, [x19,1192] ldrh w1, [x0,x21] - cbnz w1, .L2567 - ldr x1, [x19,1176] + cbnz w1, .L2714 + ldr x1, [x19,1184] ldrh w1, [x1,x21] strh w1, [x0,x21] - b .L2565 -.L2567: - ldr x1, [x19,1176] + b .L2712 +.L2714: + ldr x1, [x19,1184] ldrh w1, [x1,x21] strh w1, [x0,x21] mov w0, w20 bl update_vpc_list -.L2565: +.L2712: add w20, w20, 1 uxth w20, w20 - b .L2562 -.L2576: + b .L2709 +.L2723: bl l2p_flush bl FtlVpcTblFlush ldr x23, [sp,48] @@ -16989,91 +17515,91 @@ allocate_new_data_superblock: adrp x19, .LANCHOR2 add x2, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - ldr w1, [x2,1400] + ldr w1, [x2,1408] ldrh w22, [x0] - cbnz w1, .L2578 + cbnz w1, .L2725 mov x21, x0 mov w0, 65535 cmp w22, w0 - beq .L2579 + beq .L2726 ubfiz x1, x22, 1, 16 - ldr x0, [x2,1184] + ldr x0, [x2,1192] ldrh w0, [x0,x1] - cbz w0, .L2580 + cbz w0, .L2727 mov w0, w22 bl INSERT_DATA_LIST - b .L2579 -.L2580: + b .L2726 +.L2727: mov w0, w22 bl INSERT_FREE_LIST -.L2579: +.L2726: add x1, x19, :lo12:.LANCHOR2 strb wzr, [x21,8] - add x0, x1, 3656 + add x0, x1, 3664 cmp x21, x0 - beq .L2581 - ldrh w2, [x1,768] + beq .L2728 + ldrh w2, [x1,776] cmp w2, 1 - beq .L2581 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2582 -.L2581: + beq .L2728 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2729 +.L2728: mov w0, 1 strb w0, [x21,8] - b .L2583 -.L2582: - add x0, x1, 3608 + b .L2730 +.L2729: + add x0, x1, 3616 cmp x21, x0 - bne .L2583 + bne .L2730 cmp w2, 3 - beq .L2585 - ldr w0, [x1,868] + beq .L2732 + ldr w0, [x1,872] cmp w0, 1 - bne .L2586 -.L2585: + bne .L2733 +.L2732: add x1, x19, :lo12:.LANCHOR2 mov w0, 1 - strb w0, [x1,3616] -.L2586: + strb w0, [x1,3624] +.L2733: add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x1,652] - cbz w0, .L2583 - ldr w0, [x1,920] + ldr w0, [x1,660] + cbz w0, .L2730 + ldr w0, [x1,924] cmp w0, 39 - bhi .L2583 + bhi .L2730 mov w0, 1 - strb w0, [x1,3616] -.L2583: + strb w0, [x1,3624] +.L2730: adrp x1, .LANCHOR4 add x0, x1, :lo12:.LANCHOR4 mov x20, x1 - ldrh w2, [x0,4000] + ldrh w2, [x0,4016] mov w0, 65535 cmp w2, w0 - beq .L2588 + beq .L2735 cmp w22, w2 - bne .L2589 + bne .L2736 add x19, x19, :lo12:.LANCHOR2 ubfiz x1, x2, 1, 16 - ldr x0, [x19,1184] + ldr x0, [x19,1192] ldrh w0, [x0,x1] - cbz w0, .L2590 -.L2589: + cbz w0, .L2737 +.L2736: mov w0, w2 bl update_vpc_list -.L2590: +.L2737: add x1, x20, :lo12:.LANCHOR4 mov w0, -1 - strh w0, [x1,4000] -.L2588: + strh w0, [x1,4016] +.L2735: mov x0, x21 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2578: +.L2725: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -17086,36 +17612,37 @@ allocate_new_data_superblock: FtlReadRefresh: stp x29, x30, [sp, -112]! adrp x1, .LANCHOR4 - add x2, x1, :lo12:.LANCHOR4 + add x3, x1, :lo12:.LANCHOR4 add x29, sp, 0 - add x0, x2, 3456 + add x2, x3, 3472 stp x19, x20, [sp,16] stp x21, x22, [sp,32] adrp x19, .LANCHOR2 - ldr w3, [x0,80] - cbz w3, .L2604 - add x1, x19, :lo12:.LANCHOR2 - ldr w4, [x0,84] - ldr w3, [x1,1396] - cmp w4, w3 - bcs .L2605 + ldr w0, [x2,80] + cbz w0, .L2751 + add x0, x19, :lo12:.LANCHOR2 + ldr w4, [x2,84] + ldr w1, [x0,1404] + cmp w4, w1 + bcs .L2752 mov w21, 2048 - mov x20, x2 -.L2610: + mov x20, x3 +.L2757: + add x22, x20, 3472 add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x20,3540] - ldr w1, [x1,1396] + ldr w0, [x22,84] + ldr w1, [x1,1404] cmp w0, w1 - bcs .L2607 + bcs .L2756 add x1, x29, 52 mov w2, 0 bl log2phys - ldr w0, [x20,3540] + ldr w0, [x22,84] ldr w1, [x29,52] add w0, w0, 1 - str w0, [x20,3540] + str w0, [x22,84] cmn w1, #1 - beq .L2608 + beq .L2755 str w1, [x29,60] mov w2, 0 str w0, [x29,80] @@ -17127,58 +17654,64 @@ FtlReadRefresh: bl FlashReadPages ldr w0, [x29,56] cmp w0, 256 - bne .L2607 + bne .L2756 ldr w0, [x29,52] lsr x0, x0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock - b .L2607 -.L2608: - subs w21, w21, #1 - bne .L2610 -.L2607: +.L2756: mov w0, -1 - b .L2612 -.L2605: - ldr w1, [x1,900] - str wzr, [x0,80] - str wzr, [x0,84] - str w1, [x0,76] - b .L2618 -.L2604: - add x2, x19, :lo12:.LANCHOR2 - ldr w0, [x2,916] - ldr w3, [x2,652] - adrp x2, .LANCHOR0+136 - ldrb w4, [x2,#:lo12:.LANCHOR0+136] - mov w2, 4194304 - cbnz w4, .L2613 - add w0, w3, w0, lsr 10 - mov w3, 33554432 - asr w2, w3, w0 -.L2613: + b .L2759 +.L2755: + subs w21, w21, #1 + bne .L2757 + b .L2756 +.L2752: + ldr w0, [x0,904] + str wzr, [x2,80] + str wzr, [x2,84] + str w0, [x2,76] + b .L2766 +.L2751: + add x5, x19, :lo12:.LANCHOR2 + mov w6, 10000 + mov w8, 63 + ldr w3, [x5,920] + ldr w7, [x5,904] + cmp w3, w6 + mov w6, 31 + csel w8, w6, w8, hi + ldr w6, [x2,76] + add w9, w7, 1048576 + ldr w4, [x5,1404] + cmp w6, w9 + bhi .L2761 + mov w9, 1000 + lsr w3, w3, 10 + add w3, w3, 1 + mul w4, w4, w9 + udiv w3, w4, w3 + add w3, w3, w6 + cmp w3, w7 + bcc .L2761 + ldrh w3, [x5,3556] + tst w8, w3 + bne .L2759 + ldr w2, [x2,100] + cmp w2, w3 + beq .L2759 +.L2761: add x19, x19, :lo12:.LANCHOR2 add x0, x1, :lo12:.LANCHOR4 - ldr w3, [x19,900] - ldr w0, [x0,3532] - add w4, w3, 1048576 - cmp w0, w4 - bhi .L2614 - add w0, w2, w0 - cmp w0, w3 - bcc .L2614 - ldrb w2, [x19,3548] - mov w0, 0 - cbnz w2, .L2612 -.L2614: - add x0, x1, :lo12:.LANCHOR4 + ldrh w1, [x19,3556] + str w1, [x0,3572] mov w1, 1 - str wzr, [x0,3540] - str w1, [x0,3536] - str w3, [x0,3532] -.L2618: + str wzr, [x0,3556] + str w1, [x0,3552] + str w7, [x0,3548] +.L2766: mov w0, 0 -.L2612: +.L2759: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 112 @@ -17188,7 +17721,7 @@ FtlReadRefresh: .global ftl_do_gc .type ftl_do_gc, %function ftl_do_gc: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -144]! mov w2, 0 add x29, sp, 0 stp x19, x20, [sp,16] @@ -17198,812 +17731,842 @@ ftl_do_gc: stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - ldr w4, [x3,1400] - cbnz w4, .L2764 - ldr w4, [x3,924] - cbnz w4, .L2764 - ldrh w4, [x3,3584] - cmp w4, 47 - bls .L2764 - str w0, [x29,140] - adrp x0, .LANCHOR1+3164 + ldr w4, [x3,1408] + cbnz w4, .L2920 + adrp x4, .LANCHOR1 + add x4, x4, :lo12:.LANCHOR1 + ldr w5, [x4,3288] + cmn w5, #1 + beq .L2920 + ldr w5, [x3,928] + cbnz w5, .L2920 + ldrh w5, [x3,3592] + cmp w5, 47 + bls .L2920 mov w24, w1 - ldrh w1, [x0,#:lo12:.LANCHOR1+3164] + ldrh w1, [x4,3292] + str w0, [x29,124] mov w0, 65535 cmp w1, w0 - bne .L2621 -.L2624: + bne .L2769 +.L2772: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 - ldrh w4, [x0,950] + ldrh w4, [x0,954] cmp w4, w2 - bne .L2622 - b .L2623 -.L2621: - ldrh w1, [x3,3704] + bne .L2770 + b .L2771 +.L2769: + ldrh w1, [x3,3712] cmp w1, w0 - beq .L2624 + beq .L2772 mov w0, 1 bl FtlGcFreeTempBlock mov w2, 1 - cbz w0, .L2624 - b .L2764 -.L2622: - ldrh w1, [x0,948] + cbz w0, .L2772 + b .L2920 +.L2770: + ldrh w1, [x0,952] cmp w1, w2 - bne .L2623 - ldrh w3, [x0,952] + bne .L2771 + ldrh w3, [x0,956] cmp w3, w1 - beq .L2623 - ldrh w2, [x0,954] + beq .L2771 + ldrh w2, [x0,958] cmp w2, w1 - beq .L2623 + beq .L2771 mov w1, -1 - strh w4, [x0,948] - strh w3, [x0,950] - strh w2, [x0,952] - strh w1, [x0,954] -.L2623: + strh w4, [x0,952] + strh w3, [x0,954] + strh w2, [x0,956] + strh w1, [x0,958] +.L2771: add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x29,140] - adrp x23, .LANCHOR4 + ldr w2, [x29,124] + adrp x21, .LANCHOR4 cmp w2, 1 - ldr w0, [x1,940] + ldr w0, [x1,944] add w0, w0, 1 add w0, w0, w2, lsl 7 - str w0, [x1,940] - bne .L2635 - ldr w1, [x1,652] - cbnz w1, .L2626 - adrp x1, .LANCHOR0+136 - ldrb w1, [x1,#:lo12:.LANCHOR0+136] - cbz w1, .L2635 -.L2626: + str w0, [x1,944] + bne .L2783 + ldr w1, [x1,660] + cbnz w1, .L2774 + adrp x1, .LANCHOR0+4044 + ldrb w1, [x1,#:lo12:.LANCHOR0+4044] + cbz w1, .L2783 +.L2774: add x20, x19, :lo12:.LANCHOR2 - ldr w1, [x20,920] + ldr w1, [x20,924] cmp w1, 39 - bhi .L2635 - adrp x21, .LANCHOR5 - add x1, x21, :lo12:.LANCHOR5 - ldrh w1, [x1,-152] + bhi .L2783 + adrp x22, .LANCHOR5 + add x1, x22, :lo12:.LANCHOR5 + ldrh w1, [x1,-136] add w0, w0, w1 - str w0, [x20,940] + str w0, [x20,944] bl FtlGcReFreshBadBlk - add x0, x23, :lo12:.LANCHOR4 + add x0, x21, :lo12:.LANCHOR4 mov w1, 65535 - ldrh w0, [x0,3408] + ldrh w0, [x0,3424] cmp w0, w1 - bne .L2635 - ldrh w1, [x20,948] + bne .L2783 + ldrh w1, [x20,952] cmp w1, w0 - bne .L2635 - ldr w0, [x20,940] + bne .L2783 + ldr w0, [x20,944] cmp w0, 1024 - bhi .L2627 - ldrh w0, [x20,3600] + bhi .L2775 + ldrh w0, [x20,3608] cmp w0, 63 - bhi .L2635 -.L2627: + bhi .L2783 +.L2775: add x0, x19, :lo12:.LANCHOR2 - add x1, x21, :lo12:.LANCHOR5 - ldrh w2, [x0,958] - ldrh w3, [x0,3600] + add x1, x22, :lo12:.LANCHOR5 + ldrh w2, [x0,962] + ldrh w3, [x0,3608] add w2, w2, 64 - strh wzr, [x1,-152] + strh wzr, [x1,-136] cmp w3, w2 - bgt .L2635 - str wzr, [x0,940] - ldr w0, [x0,920] - cbnz w0, .L2628 + bgt .L2783 + str wzr, [x0,944] + ldr w0, [x0,924] + cbnz w0, .L2776 mov w0, 6 - b .L2786 -.L2628: + b .L2942 +.L2776: cmp w0, 5 - bhi .L2629 + bhi .L2777 mov w0, 18 -.L2786: - strh w0, [x1,-152] -.L2629: +.L2942: + strh w0, [x1,-136] +.L2777: mov w0, 32 - mov w28, 65535 + mov w27, 65535 bl List_get_gc_head_node - uxth w26, w0 - cmp w26, w28 - beq .L2634 - add x22, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,960] - cbz w0, .L2631 - ldrh w1, [x22,820] - ubfiz x26, x26, 1, 16 - ldrh w3, [x22,748] - ldr x27, [x22,1184] + uxth w25, w0 + cmp w25, w27 + beq .L2782 + add x23, x19, :lo12:.LANCHOR2 + ldrh w0, [x23,964] + cbz w0, .L2779 + ldrh w1, [x23,826] + ubfiz x25, x25, 1, 16 + ldrh w3, [x23,756] + ldr x26, [x23,1192] mul w1, w1, w3 - ldrh w2, [x27,x26] + ldrh w2, [x26,x25] add w1, w1, 1 cmp w2, w1 - bgt .L2634 + bgt .L2782 add w1, w0, 1 - str wzr, [x22,928] + str wzr, [x23,932] uxth w1, w1 - strh w1, [x22,960] - str x1, [x29,128] + strh w1, [x23,964] + str x1, [x29,112] bl List_get_gc_head_node uxth w20, w0 - cmp w20, w28 - ldr x1, [x29,128] - beq .L2634 - ubfiz x28, x20, 1, 16 - adrp x0, .LC150 - ldrh w4, [x27,x26] - add x0, x0, :lo12:.LC150 + cmp w20, w27 + ldr x1, [x29,112] + beq .L2782 + ubfiz x27, x20, 1, 16 + adrp x0, .LC152 + ldrh w4, [x26,x25] + add x0, x0, :lo12:.LC152 mov w2, w20 - ldrh w3, [x27,x28] + ldrh w3, [x26,x27] bl printk - ldrh w0, [x22,960] + ldrh w0, [x23,964] cmp w0, 40 - bls .L2632 - ldr x0, [x22,1184] - ldrh w0, [x0,x28] + bls .L2780 + ldr x0, [x23,1192] + ldrh w0, [x0,x27] cmp w0, 32 - bls .L2632 - strh wzr, [x22,960] -.L2632: - add x21, x21, :lo12:.LANCHOR5 + bls .L2780 + strh wzr, [x23,964] +.L2780: + add x22, x22, :lo12:.LANCHOR5 mov w0, 6 - strh w0, [x21,-152] - b .L2636 -.L2631: + strh w0, [x22,-136] + b .L2784 +.L2779: mov w0, 1 - strh w0, [x22,960] -.L2634: + strh w0, [x23,964] +.L2782: bl GetSwlReplaceBlock uxth w20, w0 mov w0, 65535 cmp w20, w0 - bne .L2636 - add x21, x21, :lo12:.LANCHOR5 - strh wzr, [x21,-152] -.L2635: - add x0, x23, :lo12:.LANCHOR4 - ldrh w20, [x0,3408] + bne .L2784 + add x22, x22, :lo12:.LANCHOR5 + strh wzr, [x22,-136] +.L2783: + add x0, x21, :lo12:.LANCHOR4 + ldrh w20, [x0,3424] mov w0, 65535 cmp w20, w0 - bne .L2791 - add x22, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,3704] + bne .L2946 + add x23, x19, :lo12:.LANCHOR2 + ldrh w0, [x23,3712] cmp w0, w20 - beq .L2792 -.L2636: + beq .L2947 +.L2784: mov w0, 65535 cmp w20, w0 cset w2, eq - cbz w2, .L2649 - ldr w0, [x29,140] - cbnz w0, .L2649 + cbz w2, .L2797 + ldr w0, [x29,124] + cbnz w0, .L2797 add x0, x19, :lo12:.LANCHOR2 mov w22, 1 - ldrh w1, [x0,3600] + ldrh w1, [x0,3608] cmp w1, 24 - bhi .L2650 + bhi .L2798 cmp w1, 16 - ldrh w22, [x0,818] - bls .L2651 + ldrh w22, [x0,824] + bls .L2799 lsr w22, w22, 5 - b .L2650 -.L2651: + b .L2798 +.L2799: cmp w1, 12 - bls .L2652 + bls .L2800 lsr w22, w22, 4 - b .L2650 -.L2652: + b .L2798 +.L2800: lsr w0, w22, 2 cmp w1, 9 csel w22, w0, w22, cs -.L2650: +.L2798: add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x0,956] + ldrh w2, [x0,960] cmp w2, w1 - bcs .L2654 - ldrh w1, [x0,3704] + bcs .L2802 + ldrh w1, [x0,3712] mov w2, 65535 cmp w1, w2 - bne .L2655 - ldrh w2, [x0,948] + bne .L2803 + ldrh w2, [x0,952] cmp w2, w1 - bne .L2655 - adrp x1, .LANCHOR5-152 - ldrh w2, [x1,#:lo12:.LANCHOR5-152] - cbnz w2, .L2656 - ldr w1, [x0,1396] - ldr w3, [x0,3892] + bne .L2803 + adrp x1, .LANCHOR5-136 + ldrh w2, [x1,#:lo12:.LANCHOR5-136] + cbnz w2, .L2804 + ldr w1, [x0,1404] + ldr w3, [x0,3900] add w1, w1, w1, lsl 1 cmp w3, w1, lsr 2 - bcs .L2657 -.L2656: - add x23, x23, :lo12:.LANCHOR4 + bcs .L2805 +.L2804: + add x21, x21, :lo12:.LANCHOR4 add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x23,3404] + ldrh w0, [x21,3420] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,956] - b .L2658 -.L2657: + strh w0, [x1,960] + b .L2806 +.L2805: mov w1, 18 - strh w1, [x0,956] -.L2658: + strh w1, [x0,960] +.L2806: add x19, x19, :lo12:.LANCHOR2 - str wzr, [x19,928] - b .L2764 -.L2655: - add x0, x23, :lo12:.LANCHOR4 + str wzr, [x19,932] + b .L2920 +.L2803: + add x0, x21, :lo12:.LANCHOR4 add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,3404] + ldrh w0, [x0,3420] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,956] -.L2654: + strh w0, [x1,960] +.L2802: cmp w24, 2 - bhi .L2719 + bhi .L2874 add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,652] - cbz w0, .L2719 + ldr w0, [x0,660] + cbz w0, .L2874 add w22, w22, 1 uxth w22, w22 - b .L2719 -.L2649: + b .L2874 +.L2797: add x0, x19, :lo12:.LANCHOR2 mov w3, 65535 - ldrh w1, [x0,3704] + ldrh w1, [x0,3712] cmp w1, w3 - bne .L2661 - cbz w2, .L2661 - ldrh w2, [x0,948] + bne .L2809 + cbz w2, .L2809 + ldrh w2, [x0,952] cmp w2, w1 - bne .L2661 - add x2, x23, :lo12:.LANCHOR4 - ldrh w2, [x2,3408] + bne .L2809 + add x2, x21, :lo12:.LANCHOR4 + ldrh w2, [x2,3424] cmp w2, w1 - beq .L2662 -.L2667: + beq .L2810 +.L2815: mov w20, 65535 - b .L2661 -.L2662: - ldrh w2, [x0,3600] + b .L2809 +.L2810: + ldrh w2, [x0,3608] adrp x20, .LANCHOR5 - ldrh w1, [x0,956] - str wzr, [x0,928] + ldrh w1, [x0,960] + str wzr, [x0,932] cmp w2, w1 - bls .L2663 + bls .L2811 add x1, x20, :lo12:.LANCHOR5 - ldrh w1, [x1,-152] - cbnz w1, .L2664 - ldr w1, [x0,1396] - ldr w2, [x0,3892] + ldrh w1, [x1,-136] + cbnz w1, .L2812 + ldr w1, [x0,1404] + ldr w2, [x0,3900] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bcs .L2665 -.L2664: - add x0, x23, :lo12:.LANCHOR4 + bcs .L2813 +.L2812: + add x0, x21, :lo12:.LANCHOR4 add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,3404] + ldrh w0, [x0,3420] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,956] - b .L2666 -.L2665: + strh w0, [x1,960] + b .L2814 +.L2813: mov w1, 18 - strh w1, [x0,956] -.L2666: + strh w1, [x0,960] +.L2814: bl FtlReadRefresh mov w0, 0 bl List_get_gc_head_node ubfiz x0, x0, 1, 16 add x1, x19, :lo12:.LANCHOR2 - ldr x1, [x1,1184] + ldr x1, [x1,1192] ldrh w0, [x1,x0] cmp w0, 4 - bls .L2663 + bls .L2811 add x20, x20, :lo12:.LANCHOR5 - ldrh w2, [x20,-152] - b .L2764 -.L2663: - add x22, x20, :lo12:.LANCHOR5 - ldrh w0, [x22,-152] - cbnz w0, .L2667 - add x1, x23, :lo12:.LANCHOR4 - add x21, x19, :lo12:.LANCHOR2 - ldrh w20, [x1,3404] + ldrh w2, [x20,-136] + b .L2920 +.L2811: + add x23, x20, :lo12:.LANCHOR5 + ldrh w0, [x23,-136] + cbnz w0, .L2815 + add x1, x21, :lo12:.LANCHOR4 + add x22, x19, :lo12:.LANCHOR2 + ldrh w20, [x1,3420] add w1, w20, w20, lsl 1 asr w1, w1, 2 - strh w1, [x21,956] + strh w1, [x22,960] bl List_get_gc_head_node ubfiz x0, x0, 1, 16 - ldr x1, [x21,1184] - ldrh w2, [x21,748] + ldr x1, [x22,1192] + ldrh w2, [x22,756] ldrh w1, [x1,x0] - ldrh w0, [x21,820] + ldrh w0, [x22,826] mul w0, w0, w2 mov w2, 2 sdiv w0, w0, w2 cmp w1, w0 - ble .L2668 - ldrh w0, [x21,3600] + ble .L2816 + ldrh w0, [x22,3608] sub w20, w20, #1 cmp w0, w20 - blt .L2668 + blt .L2816 bl FtlReadRefresh - ldrh w2, [x22,-152] - b .L2764 -.L2668: - cbnz w1, .L2667 + ldrh w2, [x23,-136] + b .L2920 +.L2816: + cbnz w1, .L2815 mov w0, -1 add x19, x19, :lo12:.LANCHOR2 bl decrement_vpc_count - ldrh w2, [x19,3600] + ldrh w2, [x19,3608] add w2, w2, 1 - b .L2764 -.L2661: + b .L2920 +.L2809: add x0, x19, :lo12:.LANCHOR2 mov w22, 2 - ldr w0, [x0,652] + ldr w0, [x0,660] cmp w0, wzr csinc w22, w22, wzr, ne - b .L2660 -.L2719: + b .L2808 +.L2874: mov w20, 65535 -.L2660: - add x0, x23, :lo12:.LANCHOR4 +.L2808: + add x0, x21, :lo12:.LANCHOR4 mov w2, 65535 - ldrh w1, [x0,3408] + ldrh w1, [x0,3424] cmp w1, w2 - bne .L2670 + bne .L2818 cmp w20, w1 - beq .L2671 - strh w20, [x0,3408] - b .L2672 -.L2671: + beq .L2819 + strh w20, [x0,3424] + b .L2820 +.L2819: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,948] + ldrh w0, [x1,952] cmp w0, w20 - beq .L2672 + beq .L2820 ubfiz x0, x0, 1, 16 - ldr x2, [x1,1184] + ldr x2, [x1,1192] ldrh w0, [x2,x0] - cbnz w0, .L2673 + cbnz w0, .L2821 mov w0, -1 - strh w0, [x1,948] -.L2673: + strh w0, [x1,952] +.L2821: add x1, x19, :lo12:.LANCHOR2 - add x0, x23, :lo12:.LANCHOR4 - ldrh w2, [x1,948] - strh w2, [x0,3408] + add x0, x21, :lo12:.LANCHOR4 + ldrh w2, [x1,952] + strh w2, [x0,3424] mov w0, -1 - strh w0, [x1,948] -.L2672: - add x21, x23, :lo12:.LANCHOR4 + strh w0, [x1,952] +.L2820: + add x23, x21, :lo12:.LANCHOR4 mov w1, 65535 - ldrh w0, [x21,3408] - strb wzr, [x21,3416] + ldrh w0, [x23,3424] + strb wzr, [x23,3432] cmp w0, w1 - beq .L2670 + beq .L2818 bl IsBlkInGcList - cbz w0, .L2675 + cbz w0, .L2823 mov w0, -1 - strh w0, [x21,3408] -.L2675: - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2676 - add x0, x23, :lo12:.LANCHOR4 - add x21, x0, 3408 - ldrh w0, [x0,3408] + strh w0, [x23,3424] +.L2823: + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2824 + add x0, x21, :lo12:.LANCHOR4 + add x23, x0, 3424 + ldrh w0, [x0,3424] bl ftl_get_blk_mode - strb w0, [x21,8] -.L2676: - add x21, x23, :lo12:.LANCHOR4 + strb w0, [x23,8] +.L2824: + add x23, x21, :lo12:.LANCHOR4 mov w0, 65535 - add x24, x21, 3408 - ldrh w1, [x21,3408] + add x24, x23, 3424 + ldrh w1, [x23,3424] cmp w1, w0 - beq .L2670 + beq .L2818 mov x0, x24 bl make_superblock - strh wzr, [x21,3410] + strh wzr, [x23,3426] adrp x0, .LANCHOR5 add x1, x19, :lo12:.LANCHOR2 add x0, x0, :lo12:.LANCHOR5 - ldrh w2, [x21,3408] - strb wzr, [x21,3414] - ldr x1, [x1,1184] - strh wzr, [x0,-150] + ldrh w2, [x23,3424] + strb wzr, [x23,3430] + ldr x1, [x1,1192] + strh wzr, [x0,-134] ldrh w1, [x1,x2,lsl 1] - strh w1, [x0,-148] -.L2670: - add x21, x23, :lo12:.LANCHOR4 + strh w1, [x0,-132] +.L2818: + add x0, x21, :lo12:.LANCHOR4 add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x21,3408] - ldrh w2, [x1,3608] + ldrh w0, [x0,3424] + ldrh w2, [x1,3616] cmp w2, w0 - beq .L2677 - ldrh w1, [x1,3656] + beq .L2825 + ldrh w2, [x1,3664] + cmp w2, w0 + beq .L2825 + ldrh w1, [x1,3712] cmp w1, w0 - beq .L2677 -.L2678: - adrp x0, .LC152 - add x0, x0, :lo12:.LC152 - str x0, [x29,128] - b .L2679 -.L2677: - add x23, x23, :lo12:.LANCHOR4 - mov w0, -1 - strh w0, [x23,3408] - b .L2790 -.L2700: - ldrh w0, [x21,3410] - add w22, w22, w0 - uxth w22, w22 - strh w22, [x21,3410] - cmp w22, w26 - bcs .L2793 -.L2702: - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,3600] - cmp w0, 2 - bhi .L2705 - ldrh w22, [x1,818] -.L2679: - ldrh w26, [x21,3408] - mov w0, 65535 - cmp w26, w0 - bne .L2680 + bne .L2826 +.L2825: + add x0, x21, :lo12:.LANCHOR4 + mov w1, -1 + strh w1, [x0,3424] +.L2826: + add x23, x21, :lo12:.LANCHOR4 +.L2859: + ldrh w0, [x23,3424] + mov w1, 65535 + cmp w0, w1 + bne .L2827 add x0, x19, :lo12:.LANCHOR2 - mov w27, 2 - str wzr, [x0,928] -.L2681: - add x28, x19, :lo12:.LANCHOR2 - ldrh w24, [x28,960] + mov w26, 2 + str wzr, [x0,932] +.L2828: + add x27, x19, :lo12:.LANCHOR2 + ldrh w24, [x27,964] mov w0, w24 bl List_get_gc_head_node - uxth w25, w0 - cmp w25, w26 - strh w25, [x21,3408] - bne .L2682 - strh wzr, [x28,960] + uxth w28, w0 + mov w0, 65535 + strh w28, [x23,3424] + cmp w28, w0 + bne .L2829 + strh wzr, [x27,964] mov w2, 8 - b .L2764 -.L2682: - mov w0, w25 + b .L2920 +.L2829: + mov w0, w28 add w24, w24, 1 bl IsBlkInGcList - cbz w0, .L2683 - strh w24, [x28,960] - b .L2681 -.L2683: - ldrh w5, [x28,748] - ubfiz x2, x25, 1, 16 - ldrh w0, [x28,818] + cbz w0, .L2830 + strh w24, [x27,964] + b .L2828 +.L2830: + ldrh w4, [x27,756] + ubfiz x1, x28, 1, 16 + ldrh w0, [x27,824] uxth w24, w24 - ldr x3, [x28,1184] - strh w24, [x28,960] - mul w0, w0, w5 - ldrh w4, [x3,x2] - sdiv w5, w0, w27 - cmp w4, w5 - bgt .L2685 - cmp w4, 8 - bls .L2686 + ldr x2, [x27,1192] + strh w24, [x27,964] + mul w0, w0, w4 + ldrh w3, [x2,x1] + sdiv w4, w0, w26 + cmp w3, w4 + bgt .L2832 + cmp w3, 8 + bls .L2833 cmp w24, 48 - bls .L2686 - ldrh w4, [x21,4016] - cmp w4, 35 - bhi .L2686 -.L2685: - add x4, x19, :lo12:.LANCHOR2 - strh wzr, [x4,960] -.L2686: - ldrh w2, [x3,x2] - cmp w2, w0 - blt .L2687 - cmp w20, w26 - bne .L2687 - add x23, x23, :lo12:.LANCHOR4 - add x19, x19, :lo12:.LANCHOR2 - mov w0, -1 - strh wzr, [x19,960] - strh w0, [x23,3408] -.L2790: - adrp x0, .LANCHOR5-152 - ldrh w2, [x0,#:lo12:.LANCHOR5-152] - b .L2764 -.L2687: - cbnz w2, .L2688 + bls .L2833 + ldrh w3, [x23,4032] + cmp w3, 35 + bhi .L2833 +.L2832: + add x3, x19, :lo12:.LANCHOR2 + strh wzr, [x3,964] +.L2833: + ldrh w1, [x2,x1] + mov w2, 65535 + cmp w20, w2 + bne .L2834 + cmp w1, w0 + blt .L2834 + add x0, x19, :lo12:.LANCHOR2 + ldrh w2, [x0,964] + cmp w2, 3 + bhi .L2834 + add x21, x21, :lo12:.LANCHOR4 + strh wzr, [x0,964] + adrp x0, .LANCHOR5-136 + mov w1, -1 + strh w1, [x21,3424] + ldrh w2, [x0,#:lo12:.LANCHOR5-136] + b .L2920 +.L2834: + cbnz w1, .L2835 mov w0, -1 bl decrement_vpc_count add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,960] + ldrh w0, [x1,964] add w0, w0, 1 - strh w0, [x1,960] - b .L2681 -.L2688: + strh w0, [x1,964] + b .L2828 +.L2835: adrp x0, .LANCHOR0 - strb wzr, [x21,3416] + strb wzr, [x23,3432] add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2689 - mov w0, w25 + ldrb w0, [x0,4044] + cbz w0, .L2836 + mov w0, w28 bl ftl_get_blk_mode - strb w0, [x21,3416] -.L2689: - add x24, x21, 3408 + strb w0, [x23,3432] +.L2836: + add x24, x23, 3424 mov x0, x24 bl make_superblock adrp x1, .LANCHOR5 add x0, x19, :lo12:.LANCHOR2 add x1, x1, :lo12:.LANCHOR5 - ldrh w2, [x21,3408] - ldr x0, [x0,1184] - strh wzr, [x1,-150] + ldrh w2, [x23,3424] + ldr x0, [x0,1192] + strh wzr, [x1,-134] ldrh w0, [x0,x2,lsl 1] - strh w0, [x1,-148] - strh wzr, [x21,3410] - strb wzr, [x21,3414] -.L2680: - ldr w0, [x29,140] + strh w0, [x1,-132] + strh wzr, [x23,3426] + strb wzr, [x23,3430] +.L2827: + ldr w0, [x29,124] cmp w0, 1 - bne .L2690 + bne .L2837 bl FtlReadRefresh -.L2690: +.L2837: add x0, x19, :lo12:.LANCHOR2 mov w1, 1 - str w1, [x0,924] + str w1, [x0,928] adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrh w26, [x0,818] - ldrb w1, [x1,136] - cbz w1, .L2691 - ldrb w1, [x21,3416] + ldrh w26, [x0,824] + ldrb w1, [x1,4044] + cbz w1, .L2838 + ldrb w1, [x23,3432] cmp w1, 1 - bne .L2691 - ldrh w26, [x0,820] -.L2691: - ldrh w0, [x21,3410] + bne .L2838 + ldrh w26, [x0,826] +.L2838: + ldrh w0, [x23,3426] add w1, w0, w22 cmp w1, w26 - ble .L2692 + ble .L2839 sub w22, w26, w0 uxth w22, w22 -.L2692: +.L2839: mov w27, 0 -.L2693: +.L2840: cmp w22, w27, uxth - bls .L2700 - add x1, x21, 3408 + bls .L2847 + add x1, x23, 3424 add x0, x19, :lo12:.LANCHOR2 ldrh w3, [x1,2] - ldrh w6, [x0,748] + ldrh w6, [x0,756] mov x0, 0 add w3, w3, w27 mov w24, w0 -.L2701: +.L2848: cmp w6, w0, uxth - bls .L2794 + bls .L2948 add x2, x1, x0, lsl 1 mov w4, 65535 ldrh w2, [x2,16] cmp w2, w4 - beq .L2694 + beq .L2841 add x5, x19, :lo12:.LANCHOR2 mov w4, 56 orr w2, w3, w2, lsl 10 umull x4, w24, w4 - ldr x5, [x5,1024] + ldr x5, [x5,1032] add w24, w24, 1 add x4, x5, x4 uxth w24, w24 str w2, [x4,4] -.L2694: +.L2841: add x0, x0, 1 - b .L2701 -.L2794: + b .L2848 +.L2948: add x25, x19, :lo12:.LANCHOR2 - ldrb w2, [x21,3416] + ldrb w2, [x23,3432] mov w1, w24 mov x28, 0 - ldr x0, [x25,1024] + ldr x0, [x25,1032] bl FlashReadPages -.L2696: +.L2843: cmp w24, w28, uxth - bls .L2795 + bls .L2949 mov x0, 56 mul x5, x28, x0 - ldr x0, [x25,1024] + ldr x0, [x25,1032] add x1, x0, x5 ldr w0, [x0,x5] cmn w0, #1 ldr x4, [x1,16] - beq .L2721 + beq .L2877 ldrh w0, [x4] mov w1, 61589 cmp w0, w1 - bne .L2721 + bne .L2877 ldr w0, [x4,8] - add x1, x29, 156 + add x1, x29, 136 mov w2, 0 - str x5, [x29,112] - str x4, [x29,120] + str x5, [x29,104] + str x4, [x29,112] bl log2phys - ldr x2, [x25,1024] - ldr x5, [x29,112] - ldr w0, [x29,156] + ldr x2, [x25,1032] + ldr x5, [x29,104] + ldr w0, [x29,136] add x2, x2, x5 - ldr x4, [x29,120] + ldr x4, [x29,112] and w0, w0, 2147483647 ldr w1, [x2,4] cmp w0, w1 - bne .L2721 + bne .L2877 adrp x0, .LANCHOR5 mov x3, 56 add x1, x0, :lo12:.LANCHOR5 - str x5, [x29,104] - str x4, [x29,112] - ldrh w0, [x1,-150] + str x5, [x29,96] + str x4, [x29,104] + ldrh w0, [x1,-134] add w0, w0, 1 - strh w0, [x1,-150] - ldr w0, [x21,3984] - ldr x1, [x25,1000] + strh w0, [x1,-134] + ldr w0, [x23,4000] + ldr x1, [x25,1008] madd x1, x0, x3, x1 ldr w0, [x2,24] - str x1, [x29,120] + str x1, [x29,112] str w0, [x1,24] bl Ftl_get_new_temp_ppa - ldr x1, [x29,120] + ldr x1, [x29,112] mov x2, 56 - ldr x5, [x29,104] - ldr x4, [x29,112] + ldr x5, [x29,96] + ldr x4, [x29,104] str w0, [x1,4] - ldr w0, [x21,3984] - ldr x1, [x25,1000] + ldr w0, [x23,4000] + ldr x1, [x25,1008] madd x0, x0, x2, x1 - ldr x1, [x25,1024] + ldr x1, [x25,1032] add x1, x1, x5 ldr x2, [x1,8] str x2, [x0,8] - add x2, x25, 3704 - str x2, [x29,120] + add x2, x25, 3712 + str x2, [x29,112] ldr x1, [x1,16] str x1, [x0,16] mov w1, 1 - ldr w0, [x29,156] + ldr w0, [x29,136] str w0, [x4,12] - ldrh w0, [x25,3704] + ldrh w0, [x25,3712] strh w0, [x4,2] - ldr w0, [x25,876] + ldr w0, [x25,880] str w0, [x4,4] - ldr w0, [x21,3984] + ldr w0, [x23,4000] add w0, w0, 1 - str w0, [x21,3984] - ldr x0, [x25,1024] + str w0, [x23,4000] + ldr x0, [x25,1032] add x0, x0, x5 bl FtlGcBufAlloc adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbnz w0, .L2698 - ldr x2, [x29,120] - ldr w1, [x21,3984] + ldrb w0, [x0,4044] + cbnz w0, .L2845 + ldr x2, [x29,112] + ldr w1, [x23,4000] ldrb w0, [x2,7] cmp w1, w0 - beq .L2698 + beq .L2845 ldrh w0, [x2,4] - cbnz w0, .L2721 -.L2698: + cbnz w0, .L2877 +.L2845: bl Ftl_gc_temp_data_write_back - cbz w0, .L2721 + cbz w0, .L2877 + add x21, x21, :lo12:.LANCHOR4 + mov w0, -1 + add x19, x19, :lo12:.LANCHOR2 + strh w0, [x21,3424] adrp x0, .LANCHOR5 - add x19, x19, :lo12:.LANCHOR2 add x0, x0, :lo12:.LANCHOR5 - str wzr, [x19,924] - ldrh w2, [x0,-152] - b .L2764 -.L2721: + str wzr, [x19,928] + strh wzr, [x21,3426] + ldrh w2, [x0,-136] + b .L2920 +.L2877: add x28, x28, 1 - b .L2696 -.L2795: + b .L2843 +.L2949: add w27, w27, 1 - b .L2693 -.L2793: - ldr w0, [x21,3984] + b .L2840 +.L2847: + ldrh w0, [x23,3426] + add w22, w22, w0 + uxth w22, w22 + strh w22, [x23,3426] + cmp w22, w26 + bcc .L2849 + ldr w0, [x23,4000] adrp x22, .LANCHOR5 - cbz w0, .L2703 + cbz w0, .L2850 bl Ftl_gc_temp_data_write_back - cbz w0, .L2703 + cbz w0, .L2850 add x19, x19, :lo12:.LANCHOR2 - add x5, x22, :lo12:.LANCHOR5 - str wzr, [x19,924] - ldrh w2, [x5,-152] - b .L2764 -.L2703: - add x5, x22, :lo12:.LANCHOR5 - ldrh w22, [x5,-150] - cbnz w22, .L2704 - add x24, x19, :lo12:.LANCHOR2 - ldrh w1, [x21,3408] - ubfiz x0, x1, 1, 16 - ldr x3, [x24,1184] - ldrh w4, [x3,x0] - cbz w4, .L2704 - ldrh w2, [x21,3410] - mov w3, w22 - ldrh w5, [x5,-148] - ldr x0, [x29,128] - bl printk - ldrh w1, [x21,3408] - ldr x0, [x24,1184] - strh w22, [x0,x1,lsl 1] - ldrh w0, [x21,3408] + add x22, x22, :lo12:.LANCHOR5 + str wzr, [x19,928] + ldrh w2, [x22,-136] + b .L2920 +.L2850: + add x22, x22, :lo12:.LANCHOR5 + ldrh w22, [x22,-134] + cbnz w22, .L2851 + add x0, x19, :lo12:.LANCHOR2 + ldrh w1, [x23,3424] + ldr x0, [x0,1192] + ldrh w0, [x0,x1,lsl 1] + cbz w0, .L2851 +.L2852: + add x0, x19, :lo12:.LANCHOR2 + ldr w0, [x0,1404] + cmp w22, w0 + bcs .L2857 + mov w0, w22 + add x1, x29, 140 + mov w2, 0 + bl log2phys + ldr w0, [x29,140] + cmn w0, #1 + beq .L2853 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldrh w1, [x23,3424] + cmp w1, w0, uxth + bne .L2853 +.L2857: + add x0, x19, :lo12:.LANCHOR2 + ldr w1, [x0,1404] + cmp w22, w1 + bcc .L2851 + ldrh w1, [x23,3424] + ldr x0, [x0,1192] + strh wzr, [x0,x1,lsl 1] + ldrh w0, [x23,3424] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush -.L2704: + b .L2851 +.L2853: + add w22, w22, 1 + b .L2852 +.L2851: mov w0, -1 - strh w0, [x21,3408] - b .L2702 -.L2705: - str wzr, [x1,924] - adrp x1, .LANCHOR5-152 - ldrh w2, [x1,#:lo12:.LANCHOR5-152] + strh w0, [x23,3424] +.L2849: + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x1,3608] + cmp w0, 2 + bhi .L2858 + ldrh w22, [x1,824] + b .L2859 +.L2858: + str wzr, [x1,928] + adrp x1, .LANCHOR5-136 + ldrh w2, [x1,#:lo12:.LANCHOR5-136] cmp w2, wzr csinc w2, w2, w0, ne - b .L2764 -.L2792: - ldrh w26, [x22,948] - cmp w26, w20 - bne .L2636 - ldrh w0, [x22,3600] + b .L2920 +.L2947: + ldrh w25, [x23,952] + cmp w25, w20 + bne .L2784 + ldrh w0, [x23,3608] mov w2, 1024 - ldr w1, [x22,940] + ldr w1, [x23,944] cmp w0, 24 mov w0, 5120 csel w0, w0, w2, cc cmp w1, w0 - bls .L2636 - adrp x0, .LANCHOR5-152 - str wzr, [x22,940] - strh wzr, [x0,#:lo12:.LANCHOR5-152] + bls .L2784 + adrp x0, .LANCHOR5-136 + str wzr, [x23,944] + strh wzr, [x0,#:lo12:.LANCHOR5-136] bl GetSwlReplaceBlock uxth w20, w0 - cmp w20, w26 - bne .L2638 - ldrh w1, [x22,3600] - ldrh w0, [x22,958] + cmp w20, w25 + bne .L2786 + ldrh w1, [x23,3608] + ldrh w0, [x23,962] cmp w1, w0 - bcs .L2639 + bcs .L2787 mov w0, 64 bl List_get_gc_head_node uxth w0, w0 cmp w0, w20 - beq .L2648 - ldr w2, [x22,864] + beq .L2796 + ldr w2, [x23,868] uxtw x1, w0 - cbnz w2, .L2641 - ldrh w0, [x22,768] + cbnz w2, .L2789 + ldrh w0, [x23,776] cmp w0, 3 - beq .L2641 - ldr w0, [x22,868] - cbnz w0, .L2641 - ldr w0, [x22,652] - cbnz w0, .L2641 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2642 -.L2641: + beq .L2789 + ldr w0, [x23,872] + cbnz w0, .L2789 + ldr w0, [x23,660] + cbnz w0, .L2789 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2790 +.L2789: add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,1184] + ldr x0, [x2,1192] ldrh w4, [x0,x1,lsl 1] - ldrh w1, [x2,820] - ldrh w0, [x2,748] - ldrh w2, [x2,768] + ldrh w1, [x2,826] + ldrh w0, [x2,756] + ldrh w2, [x2,776] mul w3, w1, w0 cmp w2, 3 mov w0, 0 @@ -18011,75 +18574,75 @@ ftl_do_gc: csel w0, w1, w0, eq add w0, w3, w0 cmp w4, w0 - bgt .L2644 + bgt .L2792 mov w0, 0 bl List_get_gc_head_node uxth w20, w0 add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,1396] - ldr w2, [x0,3892] + ldr w1, [x0,1404] + ldr w2, [x0,3900] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bhi .L2788 + bhi .L2945 mov w1, 160 - b .L2787 -.L2644: +.L2943: + strh w1, [x0,962] + mov w0, 65535 + cmp w20, w0 + beq .L2796 + b .L2786 +.L2792: add x0, x19, :lo12:.LANCHOR2 mov w1, 128 - b .L2789 -.L2642: - ldr x2, [x22,1184] + b .L2944 +.L2790: + ldr x2, [x23,1192] ldrh w1, [x2,x1,lsl 1] cmp w1, 7 - bhi .L2647 + bhi .L2795 bl List_get_gc_head_node uxth w20, w0 add x0, x19, :lo12:.LANCHOR2 -.L2788: +.L2945: mov w1, 128 -.L2787: - strh w1, [x0,958] - mov w0, 65535 - cmp w20, w0 - beq .L2648 - b .L2638 -.L2647: + b .L2943 +.L2795: add x0, x19, :lo12:.LANCHOR2 mov w1, 64 -.L2789: - strh w1, [x0,958] - b .L2648 -.L2639: +.L2944: + strh w1, [x0,962] + b .L2796 +.L2787: mov w0, 80 - strh w0, [x22,958] - b .L2648 -.L2638: + strh w0, [x23,962] + b .L2796 +.L2786: add x5, x19, :lo12:.LANCHOR2 ubfiz x4, x20, 1, 32 - adrp x0, .LC151 + adrp x0, .LC153 mov w1, w20 - add x0, x0, :lo12:.LC151 - ldr x3, [x5,1184] - ldr x6, [x5,1168] - ldrh w2, [x5,3600] + add x0, x0, :lo12:.LC153 + ldr x3, [x5,1192] + ldr x6, [x5,1176] + ldrh w2, [x5,3608] ldrh w3, [x3,x4] - ldrh w5, [x5,956] + ldrh w5, [x5,960] ldrh w4, [x6,x4] bl printk -.L2648: +.L2796: bl FtlGcReFreshBadBlk - b .L2636 -.L2791: + b .L2784 +.L2946: mov w20, w0 - b .L2636 -.L2764: + b .L2784 +.L2920: mov w0, w2 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 160 + ldp x29, x30, [sp], 144 ret .size ftl_do_gc, .-ftl_do_gc .align 2 @@ -18087,145 +18650,145 @@ ftl_do_gc: .type FtlCacheWriteBack, %function FtlCacheWriteBack: stp x29, x30, [sp, -112]! - adrp x0, .LANCHOR5-144 + adrp x0, .LANCHOR5-128 add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR2 - ldr x20, [x0,#:lo12:.LANCHOR5-144] + ldr x20, [x0,#:lo12:.LANCHOR5-128] add x0, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - ldr w22, [x0,1400] - cbnz w22, .L2798 - ldr w1, [x0,972] - cbz w1, .L2798 - adrp x0, .LANCHOR0+136 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] - cbz w0, .L2800 + ldr w22, [x0,1408] + cbnz w22, .L2952 + ldr w1, [x0,976] + cbz w1, .L2952 + adrp x0, .LANCHOR0+4044 + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] + cbz w0, .L2954 ldrb w0, [x20,8] cmp w0, 1 cset w22, eq -.L2800: +.L2954: add x0, x19, :lo12:.LANCHOR2 ldrb w3, [x20,9] - adrp x24, .LC153 + adrp x24, .LC154 mov w2, w22 mov w23, 0 mov w25, 56 - ldr x0, [x0,1032] - add x24, x24, :lo12:.LC153 + ldr x0, [x0,1040] + add x24, x24, :lo12:.LC154 bl FlashProgPages -.L2801: +.L2955: add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,972] + ldr w1, [x0,976] cmp w23, w1 - bcs .L2819 + bcs .L2973 umull x21, w23, w25 - ldr x1, [x0,1032] + ldr x1, [x0,1040] add x0, x1, x21 ldr w1, [x1,x21] cmn w1, #1 - beq .L2822 + beq .L2976 ldr w1, [x0,4] - cbz w22, .L2836 + cbz w22, .L2990 orr w1, w1, -2147483648 -.L2836: +.L2990: ldr w0, [x0,24] mov w2, 1 str w1, [x29,108] add x26, x19, :lo12:.LANCHOR2 add x1, x29, 108 bl log2phys - ldr x0, [x26,1032] + ldr x0, [x26,1040] add x21, x0, x21 ldr x0, [x21,16] ldr w0, [x0,12] cmn w0, #1 - beq .L2805 + beq .L2959 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 ubfiz x0, x1, 1, 16 - ldr x2, [x26,1184] + ldr x2, [x26,1192] mov w21, w1 ldrh w2, [x2,x0] - cbnz w2, .L2806 + cbnz w2, .L2960 mov x0, x24 bl printk -.L2806: +.L2960: mov w0, w21 bl decrement_vpc_count -.L2805: +.L2959: add w23, w23, 1 - b .L2801 -.L2838: + b .L2955 +.L2992: mov w20, 16386 -.L2818: +.L2972: add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,962] - cbz w0, .L2819 + ldrh w0, [x0,966] + cbz w0, .L2973 mov w0, 1 mov w1, w0 bl ftl_do_gc subs w20, w20, #1 - bne .L2818 -.L2819: + bne .L2972 +.L2973: add x19, x19, :lo12:.LANCHOR2 - str wzr, [x19,972] - b .L2798 -.L2822: + str wzr, [x19,976] + b .L2952 +.L2976: adrp x25, .LANCHOR4 - adrp x26, .LC153 + adrp x26, .LC154 mov w24, 0 mov w27, 56 add x25, x25, :lo12:.LANCHOR4 - add x26, x26, :lo12:.LC153 -.L2802: + add x26, x26, :lo12:.LC154 +.L2956: add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,972] + ldr w1, [x0,976] cmp w24, w1 - bcs .L2838 + bcs .L2992 umull x21, w24, w27 - ldr x0, [x0,1032] + ldr x0, [x0,1040] mov w1, -1 mov w28, 1 str w1, [x0,x21] -.L2808: +.L2962: add x23, x19, :lo12:.LANCHOR2 - ldr x0, [x23,1032] + ldr x0, [x23,1040] add x1, x0, x21 ldr w0, [x0,x21] cmn w0, #1 ldr w0, [x1,4] - bne .L2839 + bne .L2993 lsr x0, x0, 10 bl P2V_block_in_plane ldrh w1, [x20] cmp w1, w0, uxth - bne .L2809 - ldr x2, [x23,1184] + bne .L2963 + ldr x2, [x23,1192] ubfiz x1, x1, 1, 16 ldrh w3, [x20,4] ldrh w0, [x2,x1] sub w0, w0, w3 strh w0, [x2,x1] strb wzr, [x20,6] - ldrh w0, [x23,818] + ldrh w0, [x23,824] strh w0, [x20,2] strh wzr, [x20,4] -.L2809: +.L2963: ldrh w0, [x20,4] - cbnz w0, .L2810 + cbnz w0, .L2964 mov x0, x20 bl allocate_new_data_superblock -.L2810: +.L2964: add x23, x19, :lo12:.LANCHOR2 - ldr w0, [x25,3552] + ldr w0, [x25,3568] add w0, w0, 1 - str w0, [x25,3552] - ldr x0, [x23,1032] + str w0, [x25,3568] + ldr x0, [x23,1040] add x0, x0, x21 ldr w0, [x0,4] lsr x0, x0, 10 @@ -18233,58 +18796,58 @@ FtlCacheWriteBack: mov x0, x20 bl get_new_active_ppa str w0, [x29,108] - ldr x1, [x23,1032] + ldr x1, [x23,1040] mov w2, w22 add x1, x1, x21 str w0, [x1,4] mov w1, 1 - ldr x0, [x23,1032] + ldr x0, [x23,1040] ldrb w3, [x20,9] add x0, x0, x21 bl FlashProgPages - ldr x0, [x23,1032] + ldr x0, [x23,1040] ldr w0, [x0,x21] cmn w0, #1 - bne .L2811 - str w28, [x23,1400] -.L2811: + bne .L2965 + str w28, [x23,1408] +.L2965: add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,1400] - cbz w0, .L2808 - b .L2798 -.L2839: - cbz w22, .L2837 + ldr w0, [x0,1408] + cbz w0, .L2962 + b .L2952 +.L2993: + cbz w22, .L2991 orr w0, w0, -2147483648 -.L2837: +.L2991: str w0, [x29,108] mov w2, 1 ldr w0, [x1,24] add x23, x19, :lo12:.LANCHOR2 add x1, x29, 108 bl log2phys - ldr x0, [x23,1032] + ldr x0, [x23,1040] add x21, x0, x21 ldr x0, [x21,16] ldr w0, [x0,12] cmn w0, #1 - beq .L2815 + beq .L2969 lsr x0, x0, 10 bl P2V_block_in_plane uxth w1, w0 ubfiz x0, x1, 1, 16 - ldr x2, [x23,1184] + ldr x2, [x23,1192] mov w21, w1 ldrh w2, [x2,x0] - cbnz w2, .L2816 + cbnz w2, .L2970 mov x0, x26 bl printk -.L2816: +.L2970: mov w0, w21 bl decrement_vpc_count -.L2815: +.L2969: add w24, w24, 1 - b .L2802 -.L2798: + b .L2956 +.L2952: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -18298,17 +18861,21 @@ FtlCacheWriteBack: .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: - adrp x0, .LANCHOR2+1400 + adrp x0, .LANCHOR2+1408 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2+1400] - cbnz w0, .L2841 + ldr w0, [x0,#:lo12:.LANCHOR2+1408] + cbnz w0, .L2995 + adrp x0, .LANCHOR1+3288 + ldr w0, [x0,#:lo12:.LANCHOR1+3288] + cmn w0, #1 + beq .L2995 bl FtlCacheWriteBack bl l2p_flush mov w0, 1 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2841: +.L2995: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -18317,14 +18884,14 @@ FtlSysFlush: .global FtlDeInit .type FtlDeInit, %function FtlDeInit: - adrp x0, .LANCHOR1+3160 + adrp x0, .LANCHOR1+3288 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR1+3160] + ldr w0, [x0,#:lo12:.LANCHOR1+3288] cmp w0, 1 - bne .L2843 + bne .L3000 bl FtlSysFlush -.L2843: +.L3000: mov w0, 0 ldp x29, x30, [sp], 16 ret @@ -18367,73 +18934,78 @@ ftl_discard: ldr w1, [x0,#:lo12:.LANCHOR0+4048] mov w0, -1 cmp w2, w1 - bhi .L2847 + bhi .L3004 + adrp x0, .LANCHOR1+3288 + ldr w1, [x0,#:lo12:.LANCHOR1+3288] + cmn w1, #1 + mov w0, w1 + beq .L3004 cmp w19, 31 - bls .L2861 + bls .L3019 adrp x22, .LANCHOR2 add x21, x22, :lo12:.LANCHOR2 - ldr w0, [x21,1400] - cbnz w0, .L2861 + ldr w0, [x21,1408] + cbnz w0, .L3019 bl FtlCacheWriteBack - ldrh w1, [x21,824] + ldrh w1, [x21,830] udiv w21, w20, w1 msub w20, w1, w21, w20 uxth w20, w20 - cbz w20, .L2850 + cbz w20, .L3007 sub w1, w1, w20 add w21, w21, 1 cmp w1, w19 csel w1, w1, w19, ls sub w19, w19, w1, uxth -.L2850: +.L3007: mov w0, -1 adrp x23, .LANCHOR5 str w0, [x29,76] -.L2851: +.L3008: add x20, x22, :lo12:.LANCHOR2 - ldrh w0, [x20,824] + ldrh w0, [x20,830] cmp w19, w0 - bcc .L2862 + bcc .L3020 mov w0, w21 add x1, x29, 72 mov w2, 0 bl log2phys ldr w0, [x29,72] cmn w0, #1 - beq .L2852 + beq .L3009 add x1, x23, :lo12:.LANCHOR5 mov w2, 1 - ldr w0, [x1,-136] + ldr w0, [x1,-120] add w0, w0, 1 - str w0, [x1,-136] - ldr w0, [x20,888] + str w0, [x1,-120] + ldr w0, [x20,892] add x1, x29, 76 add w0, w0, 1 - str w0, [x20,888] + str w0, [x20,892] mov w0, w21 bl log2phys ldr w0, [x29,72] lsr x0, x0, 10 bl P2V_block_in_plane bl decrement_vpc_count -.L2852: +.L3009: add x0, x22, :lo12:.LANCHOR2 add w21, w21, 1 - ldrh w0, [x0,824] + ldrh w0, [x0,830] sub w19, w19, w0 - b .L2851 -.L2862: + b .L3008 +.L3020: adrp x0, .LANCHOR5 add x0, x0, :lo12:.LANCHOR5 - ldr w1, [x0,-136] + ldr w1, [x0,-120] cmp w1, 32 - bls .L2861 - str wzr, [x0,-136] + bls .L3019 + str wzr, [x0,-120] bl l2p_flush bl FtlVpcTblFlush -.L2861: +.L3019: mov w0, 0 -.L2847: +.L3004: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -18452,106 +19024,120 @@ FtlGcFreeTempBlock: stp x21, x22, [sp,32] stp x23, x24, [sp,48] stp x25, x26, [sp,64] - ldr w3, [x2,1400] - ldrh w1, [x2,818] - cbnz w3, .L2897 - ldrh w20, [x2,3704] + ldr w3, [x2,1408] + ldrh w1, [x2,824] + cbnz w3, .L3057 + ldrh w20, [x2,3712] mov w4, 65535 cmp w20, w4 - bne .L2866 -.L2875: + bne .L3024 +.L3033: add x20, x19, :lo12:.LANCHOR2 adrp x21, .LANCHOR4 add x22, x21, :lo12:.LANCHOR4 mov w0, 65535 - add x23, x20, 3704 - ldrh w1, [x20,3704] - str wzr, [x22,4008] + add x23, x20, 3712 + ldrh w1, [x20,3712] + str wzr, [x22,4024] cmp w1, w0 - beq .L2897 + beq .L3057 bl FtlCacheWriteBack mov w26, 12 ldrb w0, [x23,7] - ldrh w3, [x20,818] - ldr x1, [x20,1184] - ldrh w2, [x20,3704] + ldrh w3, [x20,824] + ldr x1, [x20,1192] + ldrh w2, [x20,3712] mul w0, w0, w3 strh w0, [x1,x2,lsl 1] - ldrh w1, [x22,4018] + ldrh w1, [x22,4034] mov w22, 0 - ldr w0, [x20,880] + ldr w0, [x20,884] add w0, w1, w0 - str w0, [x20,880] - b .L2876 -.L2866: - cbz w0, .L2869 + str w0, [x20,884] + b .L3034 +.L3024: + cbz w0, .L3027 adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - ldrh w5, [x0,3164] + ldrh w5, [x0,3292] cmp w5, w4 - beq .L2870 -.L2871: + beq .L3028 +.L3029: mov w1, 2 - b .L2869 -.L2870: - strh w3, [x0,3164] - ldrh w0, [x2,3600] + b .L3027 +.L3028: + strh w3, [x0,3292] + ldrh w0, [x2,3608] cmp w0, 17 - bhi .L2871 -.L2869: + bhi .L3029 +.L3027: add x21, x19, :lo12:.LANCHOR2 - add x0, x21, 3704 + add x0, x21, 3712 bl FtlGcScanTempBlk str w0, [x29,92] cmn w0, #1 - beq .L2872 + beq .L3030 ubfiz x20, x20, 1, 16 - ldr x1, [x21,1168] + ldr x1, [x21,1176] ldrh w0, [x1,x20] cmp w0, 4 - bls .L2873 + bls .L3031 sub w0, w0, #5 strh w0, [x1,x20] mov w0, 1 bl FtlEctTblFlush -.L2873: +.L3031: adrp x0, .LANCHOR4 add x1, x0, :lo12:.LANCHOR4 mov x19, x0 - ldr w2, [x1,4008] - cbnz w2, .L2874 - ldr w0, [x1,3552] + ldr w2, [x1,4024] + cbnz w2, .L3032 + ldr w0, [x1,3568] add w0, w0, 1 - str w0, [x1,3552] + str w0, [x1,3568] ldr w0, [x29,92] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush -.L2874: +.L3032: add x0, x19, :lo12:.LANCHOR4 - str wzr, [x0,4008] + str wzr, [x0,4024] mov w0, 1 - b .L2865 -.L2872: - adrp x0, .LANCHOR1+3164 + b .L3023 +.L3030: + adrp x0, .LANCHOR1+3292 mov w1, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR1+3164] + ldrh w2, [x0,#:lo12:.LANCHOR1+3292] mov w0, 1 cmp w2, w1 - bne .L2865 - b .L2875 -.L2879: - ldr x25, [x20,984] - add x1, x29, 92 + bne .L3023 + b .L3033 +.L3037: + ldr w1, [x23,4] + cmp w0, w1 + bne .L3055 +.L3036: + add w22, w22, 1 + uxth w22, w22 +.L3034: + add x0, x21, :lo12:.LANCHOR4 + ldrh w0, [x0,4034] + cmp w0, w22 + bls .L3058 umull x24, w22, w26 - mov w2, 0 + ldr x25, [x20,992] + ldr w1, [x20,1404] add x23, x25, x24 ldr w0, [x23,8] + cmp w0, w1 + bcs .L3055 + add x1, x29, 92 + mov w2, 0 bl log2phys ldr w0, [x29,92] ldr w1, [x25,x24] cmp w0, w1 - bne .L2877 + bne .L3037 lsr x0, x0, 10 bl P2V_block_in_plane mov w24, w0 @@ -18560,88 +19146,77 @@ FtlGcFreeTempBlock: mov w2, 1 bl log2phys mov w0, w24 -.L2896: + b .L3056 +.L3055: + ldrh w0, [x20,3712] +.L3056: bl decrement_vpc_count -.L2878: - add w22, w22, 1 - uxth w22, w22 -.L2876: - add x0, x21, :lo12:.LANCHOR4 - ldrh w0, [x0,4018] - cmp w0, w22 - bhi .L2879 - b .L2898 -.L2877: - ldr w1, [x23,4] - cmp w0, w1 - beq .L2878 - ldrh w0, [x20,3704] - b .L2896 -.L2898: + b .L3036 +.L3058: mov w0, -1 adrp x20, .LANCHOR0 bl decrement_vpc_count add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2880 + ldrb w0, [x0,4044] + cbz w0, .L3039 add x1, x19, :lo12:.LANCHOR2 - adrp x0, .LC154 - add x0, x0, :lo12:.LC154 - ldrh w1, [x1,3704] + adrp x0, .LC155 + add x0, x0, :lo12:.LC155 + ldrh w1, [x1,3712] bl printk -.L2880: +.L3039: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,3704] - ldr x1, [x1,1184] + ldrh w0, [x1,3712] + ldr x1, [x1,1192] ubfiz x2, x0, 1, 16 ldrh w1, [x1,x2] - cbz w1, .L2881 + cbz w1, .L3040 bl INSERT_DATA_LIST - b .L2882 -.L2881: + b .L3041 +.L3040: bl INSERT_FREE_LIST -.L2882: +.L3041: add x23, x21, :lo12:.LANCHOR4 add x22, x19, :lo12:.LANCHOR2 mov w24, -1 - strh wzr, [x23,4018] - strh w24, [x22,3704] - strh wzr, [x23,4016] + strh wzr, [x23,4034] + strh w24, [x22,3712] + strh wzr, [x23,4032] bl l2p_flush bl FtlVpcTblFlush - strh w24, [x23,3408] - ldr w0, [x22,652] - cbz w0, .L2883 - ldr w0, [x22,920] + strh w24, [x23,3424] + ldr w0, [x22,660] + cbz w0, .L3042 + ldr w0, [x22,924] cmp w0, 39 - bhi .L2883 - ldrh w0, [x23,3404] - ldrh w1, [x22,3600] + bhi .L3042 + ldrh w0, [x23,3420] + ldrh w1, [x22,3608] cmp w1, w0 - bcs .L2897 + bcs .L3057 lsl w0, w0, 1 - strh w0, [x22,956] -.L2897: + strh w0, [x22,960] +.L3057: mov w0, 0 - b .L2865 -.L2883: + b .L3023 +.L3042: add x21, x21, :lo12:.LANCHOR4 add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x21,3404] - ldrh w0, [x19,3600] + ldrh w1, [x21,3420] + ldrh w0, [x19,3608] add w2, w1, w1, lsl 1 cmp w0, w2, lsr 2 - ble .L2897 + ble .L3057 add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,136] - cbz w0, .L2884 + ldrb w0, [x20,4044] + cbz w0, .L3043 sub w1, w1, #2 - strh w1, [x19,956] - b .L2897 -.L2884: + strh w1, [x19,960] + b .L3057 +.L3043: mov w1, 20 - strh w1, [x19,956] -.L2865: + strh w1, [x19,960] +.L3023: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -18658,21 +19233,21 @@ FtlGcPageRecovery: stp x19, x20, [sp,16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - add x20, x19, 3704 + add x20, x19, 3712 mov x0, x20 - ldrh w1, [x19,818] + ldrh w1, [x19,824] bl FtlGcScanTempBlk - ldrh w1, [x19,3706] - ldrh w0, [x19,818] + ldrh w1, [x19,3714] + ldrh w0, [x19,824] cmp w1, w0 - bcc .L2899 - add x0, x19, 3752 + bcc .L3059 + add x0, x19, 3760 bl FtlMapBlkWriteDumpData mov w0, 0 bl FtlGcFreeTempBlock - adrp x0, .LANCHOR4+4008 - str wzr, [x0,#:lo12:.LANCHOR4+4008] -.L2899: + adrp x0, .LANCHOR4+4024 + str wzr, [x0,#:lo12:.LANCHOR4+4024] +.L3059: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -18682,14 +19257,14 @@ FtlGcPageRecovery: .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR4+4064 + adrp x0, .LANCHOR4+4080 add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR2 - str wzr, [x0,#:lo12:.LANCHOR4+4064] + str wzr, [x0,#:lo12:.LANCHOR4+4080] add x19, x19, :lo12:.LANCHOR2 - add x20, x19, 3608 - add x19, x19, 3656 + add x20, x19, 3616 + add x19, x19, 3664 mov x0, x20 bl FtlRecoverySuperblock mov x0, x20 @@ -18710,7 +19285,7 @@ FtlPowerLostRecovery: .global FtlSysBlkInit .type FtlSysBlkInit, %function FtlSysBlkInit: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -64]! mov w1, -1 add x29, sp, 0 stp x19, x20, [sp,16] @@ -18719,22 +19294,23 @@ FtlSysBlkInit: stp x21, x22, [sp,32] add x0, x20, :lo12:.LANCHOR4 add x22, x19, :lo12:.LANCHOR2 - strh w1, [x0,4058] - strh wzr, [x0,4060] - ldrh w0, [x22,752] + str x23, [sp,48] + strh w1, [x0,4074] + strh wzr, [x0,4076] + ldrh w0, [x22,760] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldrh w1, [x22,3896] + ldrh w1, [x22,3904] mov w0, 65535 cmp w1, w0 - bne .L2903 -.L2905: + bne .L3063 +.L3065: mov w21, -1 - b .L2904 -.L2903: + b .L3064 +.L3063: bl FtlLoadSysInfo mov w21, w0 - cbnz w0, .L2905 + cbnz w0, .L3065 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -18744,88 +19320,93 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldrh w2, [x22,858] + ldrh w2, [x22,862] mov x1, 0 - ldr x0, [x22,1264] -.L2906: + ldr x0, [x22,1272] +.L3066: cmp w1, w2 mov w3, w1 - bge .L2910 + bge .L3070 add x4, x0, x1, lsl 4 add x1, x1, 1 ldr w4, [x4,4] - tbz w4, #31, .L2906 -.L2910: + tbz w4, #31, .L3066 +.L3070: add x0, x19, :lo12:.LANCHOR2 cmp w3, w2 - ldrh w1, [x0,3548] + ldrh w1, [x0,3556] add w1, w1, 1 - strh w1, [x0,3548] - blt .L2907 + strh w1, [x0,3556] + blt .L3067 add x20, x20, :lo12:.LANCHOR4 - ldrh w0, [x20,4060] - cbz w0, .L2911 -.L2907: + ldrh w0, [x20,4076] + cbz w0, .L3071 +.L3067: add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,3608] - ldr x4, [x1,1184] + ldrh w2, [x1,3616] + ldr x4, [x1,1192] lsl x2, x2, 1 - ldrh w5, [x1,3612] + ldrh w5, [x1,3620] ldrh w3, [x4,x2] sub w3, w3, w5 strh w3, [x4,x2] - strb wzr, [x1,3614] - ldrh w3, [x1,3656] - ldrh w2, [x1,818] + strb wzr, [x1,3622] + ldrh w3, [x1,3664] + ldrh w2, [x1,824] lsl x3, x3, 1 - ldr x4, [x1,1184] - strh w2, [x1,3610] - strh wzr, [x1,3612] - ldrh w5, [x1,3660] + ldr x4, [x1,1192] + strh w2, [x1,3618] + strh wzr, [x1,3620] + ldrh w5, [x1,3668] ldrh w0, [x4,x3] sub w0, w0, w5 strh w0, [x4,x3] - strb wzr, [x1,3662] - ldrh w0, [x1,818] - strh w0, [x1,3658] - ldrh w0, [x1,3550] - strh wzr, [x1,3660] + strb wzr, [x1,3670] + ldrh w0, [x1,824] + strh w0, [x1,3666] + ldrh w0, [x1,3558] + strh wzr, [x1,3668] add w0, w0, 1 - strh w0, [x1,3550] + strh w0, [x1,3558] bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L2911: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,3548] - and w0, w0, 31 - cbnz w0, .L2912 - bl FtlVpcCheckAndModify -.L2912: - add x19, x19, :lo12:.LANCHOR2 +.L3071: + add x20, x19, :lo12:.LANCHOR2 mov w1, 65535 - add x22, x19, 3608 - ldrh w0, [x19,3608] + add x23, x20, 3616 + ldrh w0, [x20,3616] cmp w0, w1 - beq .L2904 - ldrh w1, [x19,3612] - cbnz w1, .L2904 - ldrh w1, [x19,3660] - add x20, x19, 3656 - cbnz w1, .L2904 + beq .L3072 + ldrh w1, [x20,3620] + cbnz w1, .L3072 + ldrh w1, [x20,3668] + add x22, x20, 3664 + cbnz w1, .L3072 bl FtlGcRefreshOpenBlock - ldrh w0, [x19,3656] + ldrh w0, [x20,3664] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush + mov x0, x23 + bl allocate_new_data_superblock mov x0, x22 bl allocate_new_data_superblock - mov x0, x20 - bl allocate_new_data_superblock -.L2904: +.L3072: + adrp x0, .LANCHOR0+88 + ldrb w0, [x0,#:lo12:.LANCHOR0+88] + cbnz w0, .L3073 + add x19, x19, :lo12:.LANCHOR2 + ldrh w0, [x19,3556] + and w0, w0, 31 + cbnz w0, .L3064 +.L3073: + bl FtlVpcCheckAndModify +.L3064: mov w0, w21 + ldr x23, [sp,48] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 + ldp x29, x30, [sp], 64 ret .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 @@ -18839,52 +19420,52 @@ FtlLowFormat: str x23, [sp,48] add x20, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - ldr w21, [x20,1400] - cbnz w21, .L2920 - ldrh w2, [x20,856] + ldr w21, [x20,1408] + cbnz w21, .L3081 + ldrh w2, [x20,860] + mov w1, w21 + ldr x0, [x20,1256] + lsl w2, w2, 2 + bl ftl_memset + ldrh w2, [x20,860] mov w1, w21 ldr x0, [x20,1248] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,856] - mov w1, w21 - ldr x0, [x20,1240] - lsl w2, w2, 2 - bl ftl_memset - str w21, [x20,872] - ldrh w0, [x20,752] str w21, [x20,876] + ldrh w0, [x20,760] + str w21, [x20,880] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L2921 + cbz w0, .L3082 bl FtlMakeBbt -.L2921: +.L3082: mov w0, 0 -.L2922: +.L3083: add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,824] + ldrh w2, [x1,830] cmp w0, w2, lsl 7 - bge .L2949 + bge .L3110 ubfiz x3, x0, 2, 16 - ldr x4, [x1,1088] + ldr x4, [x1,1096] mvn w2, w0 orr w2, w0, w2, lsl 16 str w2, [x4,x3] add w0, w0, 1 - ldr x2, [x1,1096] + ldr x2, [x1,1104] mov w1, 23752 movk w1, 0xa0f, lsl 16 uxth w0, w0 str w1, [x2,x3] - b .L2922 -.L2949: - ldrh w21, [x1,756] + b .L3083 +.L3110: + ldrh w21, [x1,764] mov w20, 0 -.L2924: +.L3085: add x22, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,758] + ldrh w0, [x22,766] cmp w0, w21 - bls .L2950 + bls .L3111 mov w0, w21 mov w1, 1 add w21, w21, 1 @@ -18892,40 +19473,40 @@ FtlLowFormat: add w0, w20, w0 uxth w21, w21 uxth w20, w0 - b .L2924 -.L2950: - ldrh w0, [x22,748] + b .L3085 +.L3111: + ldrh w0, [x22,756] sub w1, w20, #3 cmp w1, w0, lsl 1 - bge .L2926 -.L2930: + bge .L3087 +.L3091: mov w20, 0 mov w21, w20 - b .L2927 -.L2926: + b .L3088 +.L3087: udiv w20, w20, w0 - ldr w0, [x22,852] + ldr w0, [x22,856] add w0, w20, w0 bl FtlSysBlkNumInit - ldrh w0, [x22,752] + ldrh w0, [x22,760] bl FtlFreeSysBlkQueueInit - ldrh w20, [x22,756] -.L2928: + ldrh w20, [x22,764] +.L3089: add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,758] + ldrh w0, [x0,766] cmp w0, w20 - bls .L2930 + bls .L3091 mov w0, w20 mov w1, 1 add w20, w20, 1 bl FtlLowFormatEraseBlock uxth w20, w20 - b .L2928 -.L2927: + b .L3089 +.L3088: add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,756] + ldrh w1, [x0,764] cmp w1, w21 - bls .L2951 + bls .L3112 mov w0, w21 mov w1, 0 add w21, w21, 1 @@ -18933,176 +19514,176 @@ FtlLowFormat: add w0, w20, w0 uxth w21, w21 uxth w20, w0 - b .L2927 -.L2951: - ldrh w1, [x0,758] + b .L3088 +.L3112: + ldrh w1, [x0,766] adrp x21, .LANCHOR4 - ldrh w2, [x0,748] + ldrh w2, [x0,756] add x6, x21, :lo12:.LANCHOR4 - str w1, [x0,944] - ldr w1, [x0,760] + str w1, [x0,948] + ldr w1, [x0,768] udiv w3, w1, w2 - str w3, [x0,1396] + str w3, [x0,1404] ubfx x5, x3, 5, 16 add w4, w5, 36 - strh w4, [x6,3404] + strh w4, [x6,3420] mov w4, 24 mul w4, w2, w4 cmp w20, w4 - ble .L2932 + ble .L3093 sub w1, w1, w20 udiv w1, w1, w2 - str w1, [x0,1396] + str w1, [x0,1404] lsr w1, w1, 5 add w1, w1, 24 - strh w1, [x6,3404] -.L2932: + strh w1, [x6,3420] +.L3093: add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,652] + ldr w0, [x0,660] cmp w0, 1 - bne .L2933 + bne .L3094 add x1, x21, :lo12:.LANCHOR4 udiv w0, w20, w2 - ldrh w4, [x1,3404] + ldrh w4, [x1,3420] add w0, w4, w0 add w0, w4, w0, asr 2 - strh w0, [x1,3404] -.L2933: + strh w0, [x1,3420] +.L3094: adrp x22, .LANCHOR0 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2934 + ldrb w0, [x0,4044] + cbz w0, .L3095 add x1, x21, :lo12:.LANCHOR4 udiv w0, w20, w2 - ldrh w4, [x1,3404] + ldrh w4, [x1,3420] add w0, w4, w0 add w0, w4, w0, asr 2 - strh w0, [x1,3404] -.L2934: + strh w0, [x1,3420] +.L3095: add x6, x19, :lo12:.LANCHOR2 - ldrh w1, [x6,810] - cbz w1, .L2936 + ldrh w1, [x6,818] + cbz w1, .L3097 add x0, x21, :lo12:.LANCHOR4 - ldrh w4, [x0,3404] + ldrh w4, [x0,3420] add w4, w4, w1, lsr 1 - strh w4, [x0,3404] + strh w4, [x0,3420] mul w4, w1, w2 cmp w4, w20 - ble .L2936 + ble .L3097 add w1, w1, 32 - str w3, [x6,1396] + str w3, [x6,1404] add w1, w5, w1 - strh w1, [x0,3404] -.L2936: + strh w1, [x0,3420] +.L3097: add x19, x19, :lo12:.LANCHOR2 add x20, x21, :lo12:.LANCHOR4 add x22, x22, :lo12:.LANCHOR0 mov w23, -1 - ldrh w0, [x20,3404] - ldr w1, [x19,1396] + ldrh w0, [x20,3420] + ldr w1, [x19,1404] sub w0, w1, w0 - ldrh w1, [x19,818] - mul w0, w0, w2 - str w0, [x20,3400] - mul w0, w0, w1 ldrh w1, [x19,824] - str w0, [x19,1396] + mul w0, w0, w2 + str w0, [x20,3416] + mul w0, w0, w1 + ldrh w1, [x19,830] + str w0, [x19,1404] mul w0, w0, w1 str w0, [x22,4048] bl FtlBbmTblFlush - ldrh w2, [x19,758] + ldrh w2, [x19,766] mov w1, 0 - ldr x0, [x19,1184] + ldr x0, [x19,1192] lsl w2, w2, 1 bl ftl_memset - strh w23, [x20,3408] - strh wzr, [x20,3410] + strh w23, [x20,3424] + strh wzr, [x20,3426] mov w0, 1 - strb wzr, [x20,3414] + strb wzr, [x20,3430] mov w1, 255 - strb wzr, [x20,3416] - add x20, x19, 3608 - ldrh w2, [x19,756] + strb wzr, [x20,3432] + add x20, x19, 3616 + ldrh w2, [x19,764] strb w0, [x20,8] ldr x0, [x22,16] lsr w2, w2, 3 - str wzr, [x19,3892] + str wzr, [x19,3900] strh wzr, [x20,2] strb wzr, [x20,6] - strh wzr, [x19,3608] + strh wzr, [x19,3616] bl ftl_memset -.L2938: +.L3099: mov x0, x20 bl make_superblock ldrb w0, [x20,7] - cbnz w0, .L2939 + cbnz w0, .L3100 ldrh w1, [x20] - ldr x0, [x19,1184] + ldr x0, [x19,1192] strh w23, [x0,x1,lsl 1] ldrh w0, [x20] add w0, w0, 1 strh w0, [x20] - b .L2938 -.L2939: - ldr w0, [x19,872] + b .L3099 +.L3100: + ldr w0, [x19,876] mov w22, -1 str w0, [x20,12] add w0, w0, 1 ldrh w1, [x20] - str w0, [x19,872] - ldr x0, [x19,1184] + str w0, [x19,876] + ldr x0, [x19,1192] ldrh w2, [x20,4] strh w2, [x0,x1,lsl 1] - add x0, x19, 3656 - strh wzr, [x19,3658] + add x0, x19, 3664 + strh wzr, [x19,3666] ldrh w1, [x20] mov x20, x0 - strb wzr, [x19,3662] + strb wzr, [x19,3670] add w1, w1, 1 - strh w1, [x19,3656] + strh w1, [x19,3664] mov w1, 1 - strb w1, [x19,3664] -.L2940: + strb w1, [x19,3672] +.L3101: mov x0, x20 bl make_superblock ldrb w0, [x20,7] - cbnz w0, .L2941 + cbnz w0, .L3102 ldrh w1, [x20] - ldr x0, [x19,1184] + ldr x0, [x19,1192] strh w22, [x0,x1,lsl 1] ldrh w0, [x20] add w0, w0, 1 strh w0, [x20] - b .L2940 -.L2941: - ldr w0, [x19,872] + b .L3101 +.L3102: + ldr w0, [x19,876] add x21, x21, :lo12:.LANCHOR4 str w0, [x20,12] add w0, w0, 1 ldrh w1, [x20] - str w0, [x19,872] - ldr x0, [x19,1184] + str w0, [x19,876] + ldr x0, [x19,1192] ldrh w2, [x20,4] mov w20, -1 strh w2, [x0,x1,lsl 1] - strh w20, [x19,3704] + strh w20, [x19,3712] bl FtlFreeSysBlkQueueOut - strh w0, [x19,3896] - ldr w0, [x21,3400] - strh w0, [x19,3902] - ldr w0, [x19,872] - str w0, [x19,3904] + strh w0, [x19,3904] + ldr w0, [x21,3416] + strh w0, [x19,3910] + ldr w0, [x19,876] + str w0, [x19,3912] add w0, w0, 1 - strh wzr, [x19,3898] - strh w20, [x19,3900] - str w0, [x19,872] + strh wzr, [x19,3906] + strh w20, [x19,3908] + str w0, [x19,876] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L2920 - adrp x0, .LANCHOR1+3160 + cbnz w0, .L3081 + adrp x0, .LANCHOR1+3288 mov w1, 1 - str w1, [x0,#:lo12:.LANCHOR1+3160] -.L2920: + str w1, [x0,#:lo12:.LANCHOR1+3288] +.L3081: mov w0, 0 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -19119,25 +19700,25 @@ FtlReInitForSDUpdata: stp x19, x20, [sp,16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,136] - cbz w0, .L2953 -.L2955: + ldrb w0, [x0,4044] + cbz w0, .L3114 +.L3116: mov w0, 0 - b .L2954 -.L2953: + b .L3115 +.L3114: adrp x0, RK29_NANDC_REG_BASE ldr x0, [x0,#:lo12:RK29_NANDC_REG_BASE] bl FlashInit - cbnz w0, .L2955 + cbnz w0, .L3116 bl FlashLoadFactorBbt - cbz w0, .L2956 + cbz w0, .L3117 bl FlashMakeFactorBbt -.L2956: +.L3117: adrp x20, .LANCHOR2 add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,688] + ldr x0, [x0,696] bl FlashReadIdbDataRaw - cbz w0, .L2957 + cbz w0, .L3118 mov w1, 0 mov w2, 16 add x0, x29, 32 @@ -19146,42 +19727,42 @@ FtlReInitForSDUpdata: ldr w2, [x29,32] mov w1, w0 mov w4, 1 -.L2959: +.L3120: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 cset w3, ne cmp w1, 16 add w0, w0, w3 - bne .L2959 + bne .L3120 cmp w0, 6 - bhi .L2960 + bhi .L3121 add x0, x19, :lo12:.LANCHOR0 - b .L2982 -.L2960: + b .L3143 +.L3121: mov w1, 0 mov w4, 1 -.L2963: +.L3124: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 cset w3, ne cmp w1, 24 add w0, w0, w3 - bne .L2963 + bne .L3124 cmp w0, 17 add x0, x19, :lo12:.LANCHOR0 - bls .L2982 + bls .L3143 mov w1, 36 -.L2982: - strb w1, [x0,25] +.L3143: + strb w1, [x0,89] add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,25] + ldrb w1, [x0,89] strh w1, [x0,4042] -.L2957: +.L3118: adrp x0, .LC45 - adrp x1, .LC138 - add x1, x1, :lo12:.LC138 + adrp x1, .LC139 + add x1, x1, :lo12:.LC139 add x0, x0, :lo12:.LC45 add x20, x20, :lo12:.LANCHOR2 bl printk @@ -19190,27 +19771,27 @@ FtlReInitForSDUpdata: add x0, x0, 4016 bl FtlConstantsInit bl FtlVariablesInit - ldrh w0, [x20,752] + ldrh w0, [x20,760] bl FtlFreeSysBlkQueueInit -.L2965: +.L3126: bl FtlLoadBbt - cbz w0, .L2966 -.L2984: + cbz w0, .L3127 +.L3145: bl FtlLowFormat cmp w19, 3 - bhi .L2985 + bhi .L3146 add w19, w19, 1 - b .L2965 -.L2985: + b .L3126 +.L3146: mov w0, -1 - b .L2954 -.L2966: + b .L3115 +.L3127: bl FtlSysBlkInit - cbnz w0, .L2984 - adrp x1, .LANCHOR1+3160 + cbnz w0, .L3145 + adrp x1, .LANCHOR1+3288 mov w2, 1 - str w2, [x1,#:lo12:.LANCHOR1+3160] -.L2954: + str w2, [x1,#:lo12:.LANCHOR1+3288] +.L3115: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret @@ -19226,79 +19807,79 @@ Ftl_gc_temp_data_write_back: str x23, [sp,48] add x0, x19, :lo12:.LANCHOR2 stp x21, x22, [sp,32] - ldr w1, [x0,1400] - cbz w1, .L2987 -.L2990: + ldr w1, [x0,1408] + cbz w1, .L3148 +.L3151: mov w0, 0 - b .L2988 -.L2987: - adrp x1, .LANCHOR0+136 + b .L3149 +.L3148: + adrp x1, .LANCHOR0+4044 adrp x22, .LANCHOR4 - ldrb w1, [x1,#:lo12:.LANCHOR0+136] - cbz w1, .L2989 + ldrb w1, [x1,#:lo12:.LANCHOR0+4044] + cbz w1, .L3150 add x1, x22, :lo12:.LANCHOR4 - ldr w1, [x1,3984] - tbz x1, 0, .L2989 - ldrh w0, [x0,3708] - cbnz w0, .L2990 -.L2989: + ldr w1, [x1,4000] + tbz x1, 0, .L3150 + ldrh w0, [x0,3716] + cbnz w0, .L3151 +.L3150: add x0, x19, :lo12:.LANCHOR2 add x1, x22, :lo12:.LANCHOR4 mov w2, 0 mov w21, 0 mov w3, w2 mov w23, 56 - ldr x0, [x0,1000] - ldr w1, [x1,3984] + ldr x0, [x0,1008] + ldr w1, [x1,4000] bl FlashProgPages -.L2991: +.L3152: add x20, x22, :lo12:.LANCHOR4 - ldr w1, [x20,3984] + ldr w1, [x20,4000] cmp w21, w1 - bcs .L3001 + bcs .L3162 add x1, x19, :lo12:.LANCHOR2 umull x0, w21, w23 - ldr x2, [x1,1000] - add x3, x2, x0 - ldr w2, [x2,x0] - cmn w2, #1 - bne .L2992 - ldrh w4, [x1,3704] - ldr x3, [x1,1184] - strh wzr, [x3,x4,lsl 1] - strh w2, [x1,3704] - ldr x1, [x1,1000] - ldr w2, [x20,3552] + ldr x4, [x1,1008] + add x3, x4, x0 + ldr w4, [x4,x0] + cmn w4, #1 + ldr x2, [x3,16] + bne .L3153 + ldrh w3, [x1,3712] + ldr x2, [x1,1192] + strh wzr, [x2,x3,lsl 1] + strh w4, [x1,3712] + ldr x1, [x1,1008] + ldr w2, [x20,3568] add x0, x1, x0 add w2, w2, 1 - str w2, [x20,3552] + str w2, [x20,3568] ldr w0, [x0,4] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L3000 -.L2992: - ldr x2, [x3,16] + b .L3161 +.L3153: + ldr w0, [x2,12] add w21, w21, 1 ldr w1, [x3,4] - uxth w21, w21 - ldr w0, [x2,12] ldr w2, [x2,8] + uxth w21, w21 bl FtlGcUpdatePage - b .L2991 -.L3001: + b .L3152 +.L3162: add x19, x19, :lo12:.LANCHOR2 - ldr x0, [x19,1000] + ldr x0, [x19,1008] bl FtlGcBufFree - str wzr, [x20,3984] - ldrh w0, [x19,3708] - cbnz w0, .L2990 + str wzr, [x20,4000] + ldrh w0, [x19,3716] + cbnz w0, .L3151 mov w0, 1 bl FtlGcFreeTempBlock -.L3000: +.L3161: mov w0, 1 -.L2988: +.L3149: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -19314,32 +19895,32 @@ Ftl_get_new_temp_ppa: str x19, [sp,16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - add x1, x0, 3704 - ldrh w2, [x0,3704] + add x1, x0, 3712 + ldrh w2, [x0,3712] mov w0, 65535 cmp w2, w0 - beq .L3003 + beq .L3164 ldrh w0, [x1,4] - cbnz w0, .L3004 -.L3003: + cbnz w0, .L3165 +.L3164: bl FtlCacheWriteBack mov w0, 0 bl FtlGcFreeTempBlock add x0, x19, :lo12:.LANCHOR2 - add x0, x0, 3704 + add x0, x0, 3712 strb wzr, [x0,8] bl allocate_data_superblock adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - strh wzr, [x0,4016] - strh wzr, [x0,4018] + strh wzr, [x0,4032] + strh wzr, [x0,4034] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3004: +.L3165: add x0, x19, :lo12:.LANCHOR2 - add x0, x0, 3704 + add x0, x0, 3712 bl get_new_active_ppa ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -19350,24 +19931,30 @@ Ftl_get_new_temp_ppa: .type ftl_read, %function ftl_read: sub sp, sp, #224 - cmp w0, 16 + mov w4, w0 + adrp x0, .LANCHOR1+3288 stp x29, x30, [sp,16] add x29, sp, 16 + ldr w5, [x0,#:lo12:.LANCHOR1+3288] stp x19, x20, [sp,32] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] stp x21, x22, [sp,48] stp x23, x24, [sp,64] + stp x25, x26, [sp,80] + stp x27, x28, [sp,96] + cmn w5, #1 + mov w0, w5 + beq .L3167 + cmp w4, 16 + mov x23, x3 + mov w26, w2 mov w20, w1 - mov w28, w2 - mov x25, x3 - bne .L3006 + bne .L3168 add w0, w1, 256 mov w1, w2 mov x2, x3 bl FtlVendorPartRead - b .L3007 -.L3006: + b .L3167 +.L3168: add w0, w1, w2 str w0, [x29,188] adrp x0, .LANCHOR0+4048 @@ -19375,146 +19962,146 @@ ftl_read: ldr w1, [x0,#:lo12:.LANCHOR0+4048] mov w0, -1 cmp w2, w1 - bhi .L3007 + bhi .L3167 adrp x19, .LANCHOR2 adrp x21, .LANCHOR4 add x0, x19, :lo12:.LANCHOR2 - sub w24, w2, #1 + sub w25, w2, #1 add x2, x21, :lo12:.LANCHOR4 - ldrh w1, [x0,824] - udiv w27, w20, w1 - udiv w24, w24, w1 - ldr w1, [x2,3972] - add w1, w28, w1 - sub w23, w24, w27 - str w1, [x2,3972] - add w23, w23, 1 - ldr w1, [x0,900] - add w1, w23, w1 - str w1, [x0,900] - mov w0, w27 - mov w1, w24 + ldrh w1, [x0,830] + udiv w28, w20, w1 + udiv w25, w25, w1 + ldr w1, [x2,3988] + add w1, w26, w1 + sub w24, w25, w28 + str w1, [x2,3988] + add w24, w24, 1 + ldr w1, [x0,904] + add w1, w24, w1 + str w1, [x0,904] + mov w0, w28 + mov w1, w25 bl FtlCacheMetchLpa str x21, [x29,120] - cbz w0, .L3008 + cbz w0, .L3169 bl FtlCacheWriteBack -.L3008: - mov w26, 0 - adrp x0, .LC56 - add x0, x0, :lo12:.LC56 - mov w21, w27 - str w26, [x29,184] - mov w22, w26 - str w26, [x29,172] +.L3169: + mov w27, 0 + adrp x0, .LC54 + add x0, x0, :lo12:.LC54 + mov w21, w28 + str w27, [x29,184] + mov w22, w27 + str w27, [x29,172] str x0, [x29,112] -.L3009: - cbz w23, .L3051 +.L3170: + cbz w24, .L3213 mov w0, w21 add x1, x29, 204 mov w2, 0 bl log2phys ldr w3, [x29,204] cmn w3, #1 - bne .L3049 + bne .L3211 mov w3, 0 -.L3010: +.L3171: add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,824] + ldrh w0, [x0,830] cmp w3, w0 - bcs .L3014 + bcs .L3175 madd w0, w21, w0, w3 cmp w0, w20 - bcc .L3012 + bcc .L3173 ldr w1, [x29,188] cmp w0, w1 - bcs .L3012 + bcs .L3173 sub w0, w0, w20 mov w1, 0 ubfiz x0, x0, 9, 23 mov w2, 512 - add x0, x25, x0 + add x0, x23, x0 str x3, [x29,176] bl ftl_memset ldr x3, [x29,176] -.L3012: +.L3173: add w3, w3, 1 - b .L3010 -.L3049: + b .L3171 +.L3211: add x2, x19, :lo12:.LANCHOR2 mov w0, 56 - cmp w21, w27 + cmp w21, w28 umull x1, w22, w0 - ldr x0, [x2,992] + ldr x0, [x2,1000] add x0, x0, x1 str w3, [x0,4] - ldrh w0, [x2,824] - bne .L3015 - ldr x3, [x2,992] - ldr x2, [x2,1088] + ldrh w0, [x2,830] + bne .L3176 + ldr x3, [x2,1000] + ldr x2, [x2,1096] add x3, x3, x1 str x2, [x3,8] udiv w2, w20, w0 msub w2, w2, w0, w20 str w2, [x29,144] sub w2, w0, w2 - cmp w2, w28 - csel w2, w2, w28, ls + cmp w2, w26 + csel w2, w2, w26, ls str w2, [x29,184] cmp w2, w0 - bne .L3016 - str x25, [x3,8] - b .L3016 -.L3015: - cmp w21, w24 - bne .L3017 - ldr x3, [x2,992] - ldr x2, [x2,1096] + bne .L3177 + str x23, [x3,8] + b .L3177 +.L3176: + cmp w21, w25 + bne .L3178 + ldr x3, [x2,1000] + ldr x2, [x2,1104] add x3, x3, x1 ldr w4, [x29,188] str x2, [x3,8] mul w2, w21, w0 - sub w26, w4, w2 - cmp w26, w0 - bne .L3016 + sub w27, w4, w2 + cmp w27, w0 + bne .L3177 sub w2, w2, w20 ubfiz x2, x2, 9, 23 - add x2, x25, x2 + add x2, x23, x2 str x2, [x3,8] - b .L3016 -.L3017: - ldr x2, [x2,992] + b .L3177 +.L3178: + ldr x2, [x2,1000] mul w0, w21, w0 add x2, x2, x1 sub w0, w0, w20 ubfiz x0, x0, 9, 23 - add x0, x25, x0 + add x0, x23, x0 str x0, [x2,8] -.L3016: +.L3177: add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,992] + ldr x0, [x2,1000] add x1, x0, x1 - ldrh w0, [x2,830] - ldr x2, [x2,1120] + ldrh w0, [x2,836] + ldr x2, [x2,1128] mul w0, w22, w0 str w21, [x1,24] add w22, w22, 1 and x0, x0, 4294967292 add x0, x2, x0 str x0, [x1,16] -.L3014: - subs w23, w23, #1 +.L3175: + subs w24, w24, #1 add w21, w21, 1 - beq .L3018 + beq .L3179 add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,748] + ldrh w0, [x0,756] cmp w22, w0, lsl 3 - bne .L3009 -.L3018: - cbz w22, .L3009 + bne .L3170 +.L3179: + cbz w22, .L3170 add x0, x19, :lo12:.LANCHOR2 mov w1, w22 mov w2, 0 - ldr x0, [x0,992] + ldr x0, [x0,1000] bl FlashReadPages str xzr, [x29,176] ldr x0, [x29,144] @@ -19523,74 +20110,74 @@ ftl_read: ldr w0, [x29,184] lsl w0, w0, 9 str w0, [x29,168] - lsl w0, w26, 9 + lsl w0, w27, 9 str w0, [x29,132] ldr x0, [x29,120] add x0, x0, :lo12:.LANCHOR4 str x0, [x29,160] -.L3020: +.L3181: ldr w0, [x29,176] cmp w22, w0 - bls .L3052 + bls .L3214 ldr x0, [x29,176] add x2, x19, :lo12:.LANCHOR2 mov x1, 56 mul x8, x0, x1 - ldr x0, [x2,992] + ldr x0, [x2,1000] add x0, x0, x8 ldr w1, [x0,24] - cmp w1, w27 - bne .L3021 - ldr x1, [x0,8] - ldr x0, [x2,1088] - cmp x1, x0 - bne .L3022 - ldr x2, [x29,136] - mov x0, x25 - str x8, [x29,104] - add x1, x1, x2 - ldr w2, [x29,168] - b .L3050 -.L3021: - cmp w1, w24 - bne .L3022 + cmp w1, w28 + bne .L3182 ldr x1, [x0,8] ldr x0, [x2,1096] cmp x1, x0 - bne .L3022 - ldrh w0, [x2,824] + bne .L3183 + ldr x2, [x29,136] + mov x0, x23 + str x8, [x29,104] + add x1, x1, x2 + ldr w2, [x29,168] + b .L3212 +.L3182: + cmp w1, w25 + bne .L3183 + ldr x1, [x0,8] + ldr x0, [x2,1104] + cmp x1, x0 + bne .L3183 + ldrh w0, [x2,830] ldr w2, [x29,132] str x8, [x29,104] - mul w0, w24, w0 + mul w0, w25, w0 sub w0, w0, w20 ubfiz x0, x0, 9, 23 - add x0, x25, x0 -.L3050: + add x0, x23, x0 +.L3212: bl ftl_memcpy ldr x8, [x29,104] -.L3022: +.L3183: add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,992] + ldr x0, [x0,1000] add x2, x0, x8 ldr w1, [x0,x8] cmn w1, #1 - bne .L3023 + bne .L3184 ldr x0, [x29,160] str w1, [x29,172] - add x3, x0, 3456 - ldr w0, [x0,3528] + add x3, x0, 3472 + ldr w0, [x0,3544] add w0, w0, 1 str w0, [x3,72] -.L3023: +.L3184: ldr x0, [x2,16] ldr w1, [x2,24] ldr w0, [x0,8] cmp w1, w0 - beq .L3024 + beq .L3185 ldr x0, [x29,160] str x8, [x29,104] - add x1, x0, 3456 - ldr w0, [x0,3528] + add x1, x0, 3472 + ldr w0, [x0,3544] add w0, w0, 1 str w0, [x1,72] ldr x7, [x2,8] @@ -19607,35 +20194,35 @@ ftl_read: ldr w7, [x7] bl printk ldr x8, [x29,104] -.L3024: +.L3185: add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,992] + ldr x0, [x0,1000] add x1, x0, x8 ldr w0, [x0,x8] cmp w0, 256 - bne .L3025 + bne .L3186 ldr w0, [x1,4] lsr x0, x0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3025: +.L3186: ldr x0, [x29,176] add x0, x0, 1 str x0, [x29,176] - b .L3020 -.L3052: + b .L3181 +.L3214: mov w22, 0 - b .L3009 -.L3051: + b .L3170 +.L3213: add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,962] - cbz w0, .L3028 - mov w0, w23 + ldrh w0, [x19,966] + cbz w0, .L3189 + mov w0, w24 mov w1, 1 bl ftl_do_gc -.L3028: +.L3189: ldr w0, [x29,172] -.L3007: +.L3167: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -19647,81 +20234,137 @@ ftl_read: ret .size ftl_read, .-ftl_read .align 2 + .global ftl_vendor_read + .type ftl_vendor_read, %function +ftl_vendor_read: + stp x29, x30, [sp, -16]! + mov w5, w0 + mov w4, w1 + add x29, sp, 0 + mov x3, x2 + mov w1, w5 + mov w2, w4 + mov w0, 16 + bl ftl_read + ldp x29, x30, [sp], 16 + ret + .size ftl_vendor_read, .-ftl_vendor_read + .align 2 + .global ftl_sys_read + .type ftl_sys_read, %function +ftl_sys_read: + stp x29, x30, [sp, -16]! + mov w4, w1 + mov x3, x2 + add x29, sp, 0 + add w1, w0, 256 + mov w2, w4 + mov w0, 16 + bl ftl_read + ldp x29, x30, [sp], 16 + ret + .size ftl_sys_read, .-ftl_sys_read + .align 2 .global FtlInit .type FtlInit, %function FtlInit: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -64]! mov w0, -1 - adrp x1, .LC138 + adrp x1, .LC139 add x29, sp, 0 - str x21, [sp,32] - adrp x21, .LANCHOR1 - add x21, x21, :lo12:.LANCHOR1 - add x1, x1, :lo12:.LC138 + stp x21, x22, [sp,32] + adrp x22, .LANCHOR1 + str x23, [sp,48] + add x22, x22, :lo12:.LANCHOR1 + add x1, x1, :lo12:.LC139 stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - adrp x20, .LANCHOR0 - str w0, [x21,3160] - adrp x0, .LANCHOR5-132 - add x19, x19, :lo12:.LANCHOR2 - add x20, x20, :lo12:.LANCHOR0 - str wzr, [x0,#:lo12:.LANCHOR5-132] + adrp x20, .LANCHOR2 + adrp x21, .LANCHOR0 + str w0, [x22,3288] + adrp x0, .LANCHOR5-116 + add x23, x20, :lo12:.LANCHOR2 + add x21, x21, :lo12:.LANCHOR0 + str wzr, [x0,#:lo12:.LANCHOR5-116] adrp x0, .LC45 add x0, x0, :lo12:.LC45 - str wzr, [x19,1400] + str wzr, [x23,1408] bl printk - add x0, x20, 4016 + add x0, x21, 4016 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh w0, [x19,752] + ldrh w0, [x23,760] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L3054 - adrp x0, .LC155 - add x0, x0, :lo12:.LC155 - b .L3066 -.L3054: - bl FtlSysBlkInit - cbz w0, .L3056 + cbz w0, .L3218 adrp x0, .LC156 add x0, x0, :lo12:.LC156 -.L3066: + b .L3232 +.L3218: + bl FtlSysBlkInit + mov w19, w0 + cbz w0, .L3220 + adrp x0, .LC157 + add x0, x0, :lo12:.LC157 +.L3232: adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 - add x1, x1, 96 + add x1, x1, 120 bl printk - b .L3055 -.L3056: + b .L3219 +.L3220: mov w1, 1 - str w1, [x21,3160] + str w1, [x22,3288] bl ftl_do_gc - ldrh w0, [x19,3600] + ldrh w0, [x23,3608] cmp w0, 15 - bhi .L3057 - mov w19, 1024 -.L3058: + bhi .L3221 + adrp x22, .LANCHOR4 + mov w23, 65535 + add x22, x22, :lo12:.LANCHOR4 + add w21, w0, 2 +.L3224: + ldrh w0, [x22,3424] + cmp w0, w23 + bne .L3222 + add x0, x20, :lo12:.LANCHOR2 + ldrh w0, [x0,952] + cmp w0, w23 + bne .L3222 + and w0, w19, 7 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3222: mov w0, 1 mov w1, w0 bl ftl_do_gc - subs w19, w19, #1 - bne .L3058 - b .L3055 -.L3057: - ldrb w0, [x20,136] - cbz w0, .L3055 - mov w19, 128 -.L3060: - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - subs w19, w19, #1 - bne .L3060 -.L3055: mov w0, 0 - ldr x21, [sp,32] + mov w1, 1 + bl ftl_do_gc + add x0, x20, :lo12:.LANCHOR2 + ldrh w0, [x0,3608] + cmp w0, w21 + bhi .L3219 + add w19, w19, 1 + cmp w19, 1024 + bne .L3224 + b .L3219 +.L3221: + ldrb w0, [x21,4044] + cbz w0, .L3219 + mov w19, 128 +.L3226: + mov w0, 1 + mov w1, w0 + bl ftl_do_gc + subs w19, w19, #1 + bne .L3226 +.L3219: + mov w0, 0 + ldr x23, [sp,48] ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 64 ret .size FtlInit, .-FtlInit .align 2 @@ -19732,298 +20375,305 @@ ftl_write: mov w4, w0 mov w0, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w1 - adrp x1, .LANCHOR2 stp x21, x22, [sp,32] - mov w21, w2 - add x2, x1, :lo12:.LANCHOR2 + mov w22, w1 + adrp x1, .LANCHOR2 stp x23, x24, [sp,48] + mov w23, w2 + add x2, x1, :lo12:.LANCHOR2 + stp x19, x20, [sp,16] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - mov x22, x3 + mov x24, x3 + str x1, [x29,168] + ldr w3, [x2,1408] + cbnz w3, .L3234 + adrp x1, .LANCHOR1 str x1, [x29,152] - ldr w3, [x2,1400] - cbnz w3, .L3068 + add x3, x1, :lo12:.LANCHOR1 + ldr w3, [x3,3288] + cmn w3, #1 + beq .L3234 cmp w4, 16 - bne .L3069 - add w0, w20, 256 - mov w1, w21 - mov x2, x22 + bne .L3235 + add w0, w22, 256 + mov w1, w23 + mov x2, x24 bl FtlVendorPartWrite - b .L3068 -.L3069: - adrp x0, .LANCHOR0+4048 - add w24, w20, w21 - ldr w1, [x0,#:lo12:.LANCHOR0+4048] + b .L3234 +.L3235: + adrp x1, .LANCHOR0 + add w3, w22, w23 + add x0, x1, :lo12:.LANCHOR0 + str x1, [x29,104] + ldr w4, [x0,4048] mov w0, -1 - cmp w24, w1 - bhi .L3068 + cmp w3, w4 + bhi .L3234 adrp x5, .LANCHOR5 - ldrh w1, [x2,824] - add x26, x5, :lo12:.LANCHOR5 - sub w24, w24, #1 + ldrh w1, [x2,830] + add x21, x5, :lo12:.LANCHOR5 mov w0, 2048 + sub w3, w3, #1 adrp x4, .LANCHOR4 - udiv w23, w20, w1 - add x3, x4, :lo12:.LANCHOR4 - str w0, [x26,-128] - cmp w21, w1, lsl 1 + cmp w23, w1, lsl 1 str x5, [x29,144] - str x4, [x29,112] - udiv w0, w24, w1 - str w0, [x29,200] - sub w28, w0, w23 - add w25, w28, 1 - ldr w0, [x2,884] - add w0, w25, w0 - str w0, [x2,884] - ldr w0, [x3,3968] - add w0, w21, w0 - str w0, [x3,3968] - ldr w3, [x2,972] - cset w0, cs + str w0, [x21,-112] + udiv w0, w22, w1 + str x4, [x29,136] str w0, [x29,204] - cbz w3, .L3071 + udiv w0, w3, w1 + ldr w3, [x29,204] + str w0, [x29,188] + sub w26, w0, w3 + add x3, x4, :lo12:.LANCHOR4 + add w20, w26, 1 + ldr w0, [x2,888] + add w0, w20, w0 + str w0, [x2,888] + ldr w0, [x3,3984] + add w0, w23, w0 + str w0, [x3,3984] + ldr w3, [x2,976] + cset w0, cs + str w0, [x29,200] + cbz w3, .L3237 mov w0, 56 sub w3, w3, #1 + ldr w4, [x29,204] umull x3, w3, w0 - ldr x0, [x2,1032] + ldr x0, [x2,1040] add x3, x0, x3 ldr w0, [x3,24] - cmp w23, w0 - bne .L3072 - ldr w0, [x2,892] + cmp w4, w0 + bne .L3238 + ldr w0, [x2,896] add w0, w0, 1 - str w0, [x2,892] - ldr w0, [x26,-124] + str w0, [x2,896] + ldr w0, [x21,-108] add w0, w0, 1 - str w0, [x26,-124] - msub w0, w23, w1, w20 + str w0, [x21,-108] + msub w0, w4, w1, w22 sub w1, w1, w0 ubfiz x0, x0, 9, 23 - cmp w1, w21 - csel w19, w1, w21, ls + cmp w1, w23 + csel w19, w1, w23, ls ldr x1, [x3,8] - lsl w25, w19, 9 + lsl w20, w19, 9 add x0, x1, x0 - mov w2, w25 - mov x1, x22 + mov w2, w20 + mov x1, x24 bl ftl_memcpy - cbnz w28, .L3073 - ldr w0, [x26,-124] + cbnz w26, .L3239 + ldr w0, [x21,-108] cmp w0, 2 - bgt .L3073 -.L3106: + bgt .L3239 +.L3273: mov w0, 0 - b .L3068 -.L3073: - add x22, x22, x25 - sub w21, w21, w19 - add w20, w20, w19 - add w23, w23, 1 - mov w25, w28 -.L3072: + b .L3234 +.L3239: + ldr w0, [x29,204] + add x24, x24, x20 + sub w23, w23, w19 + add w22, w22, w19 + add w0, w0, 1 + mov w20, w26 + str w0, [x29,204] +.L3238: ldr x0, [x29,144] add x0, x0, :lo12:.LANCHOR5 - str wzr, [x0,-124] -.L3071: - ldr w1, [x29,200] - mov w0, w23 + str wzr, [x0,-108] +.L3237: + ldr w0, [x29,204] + ldr w1, [x29,188] bl FtlCacheMetchLpa - cbz w0, .L3074 + cbz w0, .L3240 bl FtlCacheWriteBack -.L3074: +.L3240: ldr x0, [x29,144] - ldr x1, [x29,152] + ldr x1, [x29,168] add x0, x0, :lo12:.LANCHOR5 - str w23, [x29,192] add x3, x1, :lo12:.LANCHOR2 - add x19, x3, 3608 - mov x24, x3 - str x19, [x0,-144] - adrp x0, .LC157 - add x0, x0, :lo12:.LC157 - str x19, [x29,176] + add x21, x3, 3616 + mov x28, x3 + str x21, [x0,-128] + ldr w0, [x29,204] + str w0, [x29,180] + adrp x0, .LC158 + add x0, x0, :lo12:.LC158 + str x21, [x29,160] str x0, [x29,96] -.L3075: - cbz w25, .L3135 - ldrh w0, [x19,4] - cbnz w0, .L3076 - ldr x1, [x29,176] - adrp x26, .LANCHOR1 - cmp x19, x1 - bne .L3077 - add x0, x24, 3656 +.L3241: + cbz w20, .L3305 + ldrh w0, [x21,4] + cbnz w0, .L3242 + ldr x1, [x29,160] + cmp x21, x1 + bne .L3243 + add x0, x28, 3664 ldrh w19, [x0,4] - cbnz w19, .L3078 + cbnz w19, .L3244 bl allocate_new_data_superblock - add x0, x26, :lo12:.LANCHOR1 - str w19, [x0,3168] -.L3078: - ldr x0, [x29,176] - add x26, x26, :lo12:.LANCHOR1 - add x19, x24, 3656 + ldr x0, [x29,152] + add x0, x0, :lo12:.LANCHOR1 + str w19, [x0,3296] +.L3244: + ldr x0, [x29,160] + add x21, x28, 3664 bl allocate_new_data_superblock - ldr w0, [x26,3168] - cbnz w0, .L3079 -.L3080: - ldr x19, [x29,176] - b .L3079 -.L3077: - add x26, x26, :lo12:.LANCHOR1 - str w0, [x26,3168] - ldr x0, [x29,176] + ldr x0, [x29,152] + add x0, x0, :lo12:.LANCHOR1 + ldr w0, [x0,3296] + cbnz w0, .L3245 +.L3246: + ldr x21, [x29,160] + b .L3245 +.L3243: + ldr x1, [x29,152] + add x1, x1, :lo12:.LANCHOR1 + str w0, [x1,3296] + ldr x0, [x29,160] ldrh w0, [x0,4] - cbnz w0, .L3080 - mov x0, x19 + cbnz w0, .L3246 + mov x0, x21 bl allocate_new_data_superblock -.L3079: - ldrh w0, [x19,4] - cbnz w0, .L3081 - mov x0, x19 +.L3245: + ldrh w0, [x21,4] + cbnz w0, .L3247 + mov x0, x21 bl allocate_new_data_superblock -.L3081: +.L3247: ldr x0, [x29,144] add x0, x0, :lo12:.LANCHOR5 - str x19, [x0,-144] -.L3076: - ldr w0, [x24,968] - mov x28, 0 - ldr w2, [x24,972] - ldrh w1, [x19,4] + str x21, [x0,-128] +.L3242: + ldr w0, [x28,972] + ldr w2, [x28,976] + ldrh w1, [x21,4] sub w0, w0, w2 + str xzr, [x29,192] cmp w1, w0 csel w0, w1, w0, ls - cmp w0, w25 - csel w0, w0, w25, ls - str w0, [x29,140] - ldr w0, [x29,204] + cmp w0, w20 + csel w0, w0, w20, ls + str w0, [x29,176] + ldr w0, [x29,200] and w0, w0, 1 - str w0, [x29,108] - add w0, w21, w20 - str w0, [x29,136] -.L3082: - ldr w1, [x29,192] - mov w0, w28 - add w27, w1, w28 - ldr w1, [x29,140] - cmp w28, w1 - bcs .L3136 - ldrh w1, [x19,4] - cbz w1, .L3112 - ldr w1, [x29,200] - cmp w27, w1 - cset w7, eq - cbz w0, .L3084 - ldr w1, [x29,108] - tst w7, w1 - beq .L3084 - ldrh w1, [x24,824] - ldr w2, [x29,136] - msub w2, w27, w1, w2 + str w0, [x29,112] + add w0, w23, w22 + str w0, [x29,116] +.L3248: + ldr w0, [x29,192] + ldr w2, [x29,176] + ldr w1, [x29,180] + cmp w0, w2 + add w25, w1, w0 + bcs .L3306 + ldrh w1, [x21,4] + cbz w1, .L3280 + ldr w1, [x29,188] + cmp w25, w1 + cset w27, eq + cbz w0, .L3250 + ldr w1, [x29,112] + tst w27, w1 + beq .L3250 + ldrh w1, [x28,830] + ldr w2, [x29,116] + msub w2, w25, w1, w2 cmp w2, w1 - bne .L3112 -.L3084: + bne .L3280 +.L3250: add x1, x29, 212 mov w2, 0 - mov w0, w27 - str x7, [x29,160] + mov w0, w25 + mov w19, 56 bl log2phys - mov x0, x19 + mov x0, x21 bl get_new_active_ppa - ldr w6, [x24,972] - mov w5, 56 - ldr x2, [x24,1032] - str x5, [x29,184] - umull x1, w6, w5 + ldr w5, [x28,976] + ldr x2, [x28,1040] + umull x1, w5, w19 add x2, x2, x1 str w0, [x2,4] - ldrh w2, [x24,830] - ldr x0, [x24,1032] + ldrh w2, [x28,836] + ldr x0, [x28,1040] add x1, x0, x1 - mul w0, w2, w6 + mul w0, w2, w5 and x0, x0, 4294967292 str x0, [x29,128] - ldr x0, [x24,1136] + ldr x0, [x28,1144] ldr x3, [x29,128] str x0, [x29,120] add x26, x0, x3 - ldrh w0, [x24,828] + ldrh w0, [x28,834] str x26, [x1,16] - str w27, [x1,24] - mul w0, w0, w6 - ldr x6, [x24,1080] + str w25, [x1,24] + mul w0, w0, w5 + ldr x5, [x28,1088] and x0, x0, 4294967292 - add x0, x6, x0 + add x0, x5, x0 str x0, [x1,8] mov x0, x26 mov w1, 0 bl ftl_memset - cmp w27, w23 + ldr w0, [x29,204] + cmp w25, w0 cset w0, eq - str w0, [x29,196] - cbnz w0, .L3115 - ldr x7, [x29,160] - ldr x5, [x29,184] - cbz w7, .L3085 - ldr w0, [x29,136] - ldrh w2, [x24,824] - msub w2, w27, w2, w0 - uxth w0, w2 str w0, [x29,184] - ldr w0, [x29,196] - str w0, [x29,160] - b .L3088 -.L3115: - ldrh w2, [x24,824] - udiv w0, w20, w2 - msub w0, w0, w2, w20 - str w0, [x29,160] - sub w2, w2, w0 - cmp w2, w21 - csel w0, w2, w21, ls - str w0, [x29,184] -.L3088: - ldrh w0, [x24,824] - ldr w1, [x29,184] - cmp w1, w0 - bne .L3089 - ldr w0, [x29,196] - mov x1, x22 - cbnz w0, .L3090 + cbnz w0, .L3284 + cbz w27, .L3251 + ldrh w19, [x28,830] + ldr w0, [x29,116] + ldr w27, [x29,184] + msub w19, w25, w19, w0 + uxth w19, w19 + b .L3254 +.L3284: + ldrh w19, [x28,830] + udiv w27, w22, w19 + msub w27, w27, w19, w22 + sub w19, w19, w27 + cmp w19, w23 + csel w19, w19, w23, ls +.L3254: + ldrh w0, [x28,830] + cmp w19, w0 + bne .L3255 ldr w0, [x29,184] - mul w1, w0, w27 - sub w1, w1, w20 + mov x1, x24 + cbnz w0, .L3256 + mul w1, w19, w25 + sub w1, w1, w22 ubfiz x1, x1, 9, 23 - add x1, x22, x1 -.L3090: - ldr w2, [x29,204] + add x1, x24, x1 +.L3256: + ldr w2, [x29,200] mov w0, 56 - cbz w2, .L3091 - ldr w2, [x24,972] + cbz w2, .L3257 + ldr w2, [x28,976] umull x0, w2, w0 - ldr x2, [x24,1032] + ldr x2, [x28,1040] add x0, x2, x0 - b .L3132 -.L3091: - ldr w2, [x24,972] + b .L3302 +.L3257: + ldr w2, [x28,976] umull x0, w2, w0 - ldr x2, [x24,1032] + ldr x2, [x28,1040] add x0, x2, x0 ldr x0, [x0,8] - b .L3133 -.L3089: + b .L3303 +.L3255: ldr w0, [x29,212] cmn w0, #1 - beq .L3093 + beq .L3259 str w0, [x29,220] mov w1, 56 - ldr w0, [x24,972] + ldr w0, [x28,976] mov w2, 0 - str w27, [x29,240] + str w25, [x29,240] umull x0, w0, w1 - ldr x1, [x24,1032] + ldr x1, [x28,1040] add x0, x1, x0 ldr x1, [x0,8] ldr x0, [x0,16] @@ -20034,165 +20684,197 @@ ftl_write: bl FlashReadPages ldr w0, [x29,216] cmn w0, #1 - bne .L3094 - ldr x0, [x29,112] + bne .L3260 + ldr x0, [x29,136] add x0, x0, :lo12:.LANCHOR4 - ldr w1, [x0,3528] + ldr w1, [x0,3544] add w1, w1, 1 - str w1, [x0,3528] - b .L3096 -.L3094: + str w1, [x0,3544] + b .L3262 +.L3260: ldr w0, [x26,8] - cmp w0, w27 - beq .L3096 - ldr x0, [x29,112] - mov w2, w27 + cmp w0, w25 + beq .L3262 + ldr x0, [x29,136] + mov w2, w25 add x0, x0, :lo12:.LANCHOR4 - ldr w1, [x0,3528] + ldr w1, [x0,3544] add w1, w1, 1 - str w1, [x0,3528] + str w1, [x0,3544] ldr x0, [x29,96] ldr w1, [x26,8] bl printk - b .L3096 -.L3093: - ldr w0, [x24,972] + b .L3262 +.L3259: + ldr w0, [x28,976] mov w1, 56 - ldrh w2, [x24,828] + ldrh w2, [x28,834] umull x0, w0, w1 - ldr x1, [x24,1032] + ldr x1, [x28,1040] add x0, x1, x0 mov w1, 0 ldr x0, [x0,8] bl ftl_memset -.L3096: +.L3262: ldr w1, [x29,184] mov w0, 56 - lsl w2, w1, 9 - ldr w1, [x29,196] - cbz w1, .L3097 - ldr w1, [x24,972] + lsl w2, w19, 9 + cbz w1, .L3263 + ldr w1, [x28,976] + ubfiz x27, x27, 9, 23 umull x0, w1, w0 - ldr x1, [x24,1032] - add x1, x1, x0 - ldr x0, [x29,160] - ubfiz x0, x0, 9, 23 - ldr x1, [x1,8] + ldr x1, [x28,1040] add x0, x1, x0 - mov x1, x22 - b .L3134 -.L3097: - ldr w1, [x24,972] - umull x0, w1, w0 - ldr x1, [x24,1032] - add x0, x1, x0 - ldrh w1, [x24,824] - mul w1, w27, w1 + mov x1, x24 ldr x0, [x0,8] - sub w1, w1, w20 + add x0, x0, x27 + b .L3304 +.L3263: + ldr w1, [x28,976] + umull x0, w1, w0 + ldr x1, [x28,1040] + add x0, x1, x0 + ldrh w1, [x28,830] + mul w1, w25, w1 + ldr x0, [x0,8] + sub w1, w1, w22 ubfiz x1, x1, 9, 23 - add x1, x22, x1 - b .L3134 -.L3085: - ldr w0, [x29,204] - ldrh w1, [x24,824] - ldr w2, [x24,972] - cbz w0, .L3098 - mul w1, w27, w1 - umull x0, w2, w5 - sub w1, w1, w20 - ldr x2, [x24,1032] + add x1, x24, x1 + b .L3304 +.L3251: + ldr w0, [x29,200] + ldrh w1, [x28,830] + ldr w2, [x28,976] + cbz w0, .L3264 + mul w1, w25, w1 + umull x0, w2, w19 + sub w1, w1, w22 + ldr x2, [x28,1040] ubfiz x1, x1, 9, 23 add x0, x2, x0 - add x1, x22, x1 -.L3132: + add x1, x24, x1 +.L3302: str x1, [x0,8] - b .L3092 -.L3098: - umull x0, w2, w5 - ldr x2, [x24,1032] - mul w1, w27, w1 + b .L3258 +.L3264: + umull x0, w2, w19 + ldr x2, [x28,1040] + mul w1, w25, w1 add x0, x2, x0 - sub w1, w1, w20 + sub w1, w1, w22 ubfiz x1, x1, 9, 23 ldr x0, [x0,8] - add x1, x22, x1 -.L3133: - ldrh w2, [x24,828] -.L3134: + add x1, x24, x1 +.L3303: + ldrh w2, [x28,834] +.L3304: bl ftl_memcpy -.L3092: +.L3258: ldr x1, [x29,120] mov w0, -3947 ldr x2, [x29,128] - add x28, x28, 1 strh w0, [x1,x2] - str w27, [x26,8] - ldr w0, [x24,876] + str w25, [x26,8] + ldr w0, [x28,880] str w0, [x26,4] add w0, w0, 1 cmn w0, #1 csel w0, w0, wzr, ne - str w0, [x24,876] + str w0, [x28,880] ldr w0, [x29,212] str w0, [x26,12] - ldrh w0, [x19] + ldrh w0, [x21] strh w0, [x26,2] - ldr w0, [x24,972] + ldr w0, [x28,976] add w0, w0, 1 - str w0, [x24,972] - b .L3082 -.L3136: - str w27, [x29,192] - mov x0, x1 - b .L3083 -.L3112: - str w27, [x29,192] -.L3083: - sub w25, w25, w0 - ldr w0, [x29,204] - cbnz w0, .L3102 - ldr w1, [x24,972] - ldr w0, [x24,968] + str w0, [x28,976] + ldr x0, [x29,192] + add x0, x0, 1 + str x0, [x29,192] + b .L3248 +.L3306: + str w25, [x29,180] + mov x0, x2 + b .L3249 +.L3280: + str w25, [x29,180] +.L3249: + sub w20, w20, w0 + ldr w0, [x29,200] + cbnz w0, .L3268 + ldr w1, [x28,976] + ldr w0, [x28,972] cmp w1, w0 - bcs .L3102 - ldrh w0, [x19,4] - cbz w0, .L3102 -.L3104: - str wzr, [x29,204] - b .L3075 -.L3102: + bcs .L3268 + ldrh w0, [x21,4] + cbz w0, .L3268 +.L3270: + str wzr, [x29,200] + b .L3241 +.L3268: bl FtlCacheWriteBack - str wzr, [x24,972] - cmp w25, 1 - bhi .L3075 - b .L3104 -.L3135: - ldr w1, [x29,200] - mov w0, w25 - sub w1, w1, w23 + str wzr, [x28,976] + cmp w20, 1 + bhi .L3241 + b .L3270 +.L3305: + ldr w1, [x29,188] + mov w0, w20 + ldr w2, [x29,204] + sub w1, w1, w2 bl ftl_do_gc - ldr x0, [x29,152] + ldr x0, [x29,168] add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,3600] - cmp w1, 31 - bhi .L3106 - mov w1, 128 - mov w19, 16 - strh w1, [x0,958] - strh w1, [x0,956] -.L3107: + ldrh w0, [x0,3608] + cmp w0, 5 + bls .L3272 + cmp w0, 31 + bhi .L3273 + ldr x0, [x29,104] + add x0, x0, :lo12:.LANCHOR0 + ldrb w0, [x0,88] + cbnz w0, .L3273 +.L3272: + ldr x0, [x29,136] + mov w21, 65535 + mov w22, 128 + add x23, x0, :lo12:.LANCHOR4 +.L3295: + ldrh w0, [x23,3424] + cmp w0, w21 + bne .L3274 + ldr x0, [x29,168] + add x0, x0, :lo12:.LANCHOR2 + ldrh w1, [x0,952] + cmp w1, w21 + bne .L3274 + ldrh w0, [x0,954] + cmp w0, w21 + bne .L3274 + and w0, w20, 7 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3274: + ldr x0, [x29,168] + add x19, x0, :lo12:.LANCHOR2 + mov w0, 1 + mov w1, w0 + strh w22, [x19,962] + strh w22, [x19,960] + bl ftl_do_gc mov w0, 0 mov w1, 1 bl ftl_do_gc - ldr x0, [x29,152] - add x0, x0, :lo12:.LANCHOR2 - ldr w0, [x0,1400] - cbnz w0, .L3106 - subs w19, w19, #1 - bne .L3107 - b .L3106 -.L3068: + ldr w0, [x19,1408] + cbnz w0, .L3273 + ldrh w0, [x19,3608] + cmp w0, 2 + bhi .L3273 + add w20, w20, 1 + cmp w20, 256 + bne .L3295 + b .L3273 +.L3234: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -20236,110 +20918,110 @@ ftl_sys_write: .global ftl_fix_nand_power_lost_error .type ftl_fix_nand_power_lost_error, %function ftl_fix_nand_power_lost_error: - adrp x0, .LANCHOR0+136 + adrp x0, .LANCHOR0+4044 stp x29, x30, [sp, -128]! add x29, sp, 0 - ldrb w0, [x0,#:lo12:.LANCHOR0+136] + ldrb w0, [x0,#:lo12:.LANCHOR0+4044] stp x19, x20, [sp,16] stp x21, x22, [sp,32] stp x23, x24, [sp,48] stp x25, x26, [sp,64] - cbz w0, .L3139 + cbz w0, .L3309 adrp x21, .LANCHOR4 adrp x19, .LANCHOR2 add x0, x21, :lo12:.LANCHOR4 add x20, x19, :lo12:.LANCHOR2 - adrp x24, .LC158 - add x26, x20, 3608 - add x25, x20, 3656 - ldrh w23, [x0,4058] - add x0, x24, :lo12:.LC158 - ldr x2, [x20,1184] + adrp x24, .LC159 + add x26, x20, 3616 + add x25, x20, 3664 + ldrh w23, [x0,4074] + add x0, x24, :lo12:.LC159 + ldr x2, [x20,1192] ubfiz x22, x23, 1, 16 mov w1, w23 ldrh w2, [x2,x22] bl printk - ldrh w0, [x20,3608] + ldrh w0, [x20,3616] bl FtlGcRefreshOpenBlock - ldrh w0, [x20,3656] + ldrh w0, [x20,3664] mov w20, 4097 bl FtlGcRefreshOpenBlock mov x0, x26 bl allocate_new_data_superblock mov x0, x25 bl allocate_new_data_superblock -.L3141: +.L3311: subs w20, w20, #1 - beq .L3145 + beq .L3315 mov w0, 1 mov w1, w0 bl ftl_do_gc add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,1184] + ldr x0, [x0,1192] ldrh w0, [x0,x22] - cbnz w0, .L3141 -.L3145: + cbnz w0, .L3311 +.L3315: add x20, x19, :lo12:.LANCHOR2 - add x0, x24, :lo12:.LC158 + add x0, x24, :lo12:.LC159 mov w1, w23 - ldr x2, [x20,1184] + ldr x2, [x20,1192] ldrh w2, [x2,x22] bl printk - ldr x0, [x20,1184] + ldr x0, [x20,1192] ldrh w0, [x0,x22] - cbnz w0, .L3143 + cbnz w0, .L3313 add x0, x29, 80 strh w23, [x29,80] bl make_superblock mov x0, 0 - ldrh w5, [x20,748] + ldrh w5, [x20,756] mov w6, 65535 mov w20, w0 mov w7, 56 -.L3146: +.L3316: cmp w5, w0, uxth - bls .L3153 + bls .L3323 add x1, x29, 80 add x1, x1, x0, lsl 1 ldrh w2, [x1,16] cmp w2, w6 - beq .L3147 + beq .L3317 add x4, x19, :lo12:.LANCHOR2 lsl w2, w2, 10 umull x1, w20, w7 add w20, w20, 1 - ldr x3, [x4,1016] + ldr x3, [x4,1024] uxth w20, w20 add x3, x3, x1 str w2, [x3,4] - ldr x2, [x4,1016] + ldr x2, [x4,1024] add x1, x2, x1 str xzr, [x1,8] str xzr, [x1,16] -.L3147: +.L3317: add x0, x0, 1 - b .L3146 -.L3153: + b .L3316 +.L3323: add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC159 + adrp x0, .LC160 mov w1, w23 - add x0, x0, :lo12:.LC159 - ldr x2, [x19,1184] + add x0, x0, :lo12:.LC160 + ldr x2, [x19,1192] ldrh w2, [x2,x22] bl printk - ldr x0, [x19,1016] + ldr x0, [x19,1024] mov w1, 0 mov w2, w20 bl FlashEraseBlocks - ldr x0, [x19,1016] + ldr x0, [x19,1024] mov w1, 1 mov w2, w20 bl FlashEraseBlocks -.L3143: +.L3313: add x21, x21, :lo12:.LANCHOR4 mov w0, -1 - strh w0, [x21,4058] -.L3139: + strh w0, [x21,4074] +.L3309: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -20515,7 +21197,6 @@ ftl_fix_nand_power_lost_error: .global c_ftl_nand_ext_blk_pre_plane .global c_ftl_nand_blk_pre_plane .global c_ftl_nand_planes_num - .global c_ftl_nand_blks_per_die_shift .global c_ftl_nand_blks_per_die .global c_ftl_nand_planes_per_die .global c_ftl_nand_die_num @@ -20532,6 +21213,7 @@ ftl_fix_nand_power_lost_error: .global gNandcVer .global gNandChipMap .global gNandIDataBuf + .global idb_flash_slc_mode .global FlashDdrTunningReadCount .global FlashWaitBusyScheduleEn .global gNandPhyInfo @@ -20544,6 +21226,7 @@ ftl_fix_nand_power_lost_error: .global gReadRetryInfo .global gpNandParaInfo .global gNandOptPara + .global g_nand_ecc_en .global g_slc2KBNand .global gNandIDBResBlkNumSaveInFlash .global gNandIDBResBlkNum @@ -20575,33 +21258,38 @@ ftl_fix_nand_power_lost_error: .section .rodata .align 3 .LANCHOR3 = . + 0 - .type __func__.19520, %object - .size __func__.19520, 11 -__func__.19520: + .type __func__.19591, %object + .size __func__.19591, 11 +__func__.19591: .string "FtlMemInit" .zero 5 - .type __func__.20261, %object - .size __func__.20261, 12 -__func__.20261: + .type __func__.20334, %object + .size __func__.20334, 12 +__func__.20334: .string "FtlCheckVpc" .zero 4 - .type __func__.20293, %object - .size __func__.20293, 17 -__func__.20293: + .type __func__.20366, %object + .size __func__.20366, 17 +__func__.20366: .string "FtlDumpBlockInfo" .zero 7 - .type __func__.20312, %object - .size __func__.20312, 16 -__func__.20312: + .type __func__.20385, %object + .size __func__.20385, 16 +__func__.20385: .string "FtlScanAllBlock" - .type __func__.20560, %object - .size __func__.20560, 21 -__func__.20560: + .type __func__.20651, %object + .size __func__.20651, 17 +__func__.20651: + .string "ftl_scan_all_ppa" + .zero 7 + .type __func__.20633, %object + .size __func__.20633, 21 +__func__.20633: .string "FtlVpcCheckAndModify" .zero 3 - .type __func__.19593, %object - .size __func__.19593, 8 -__func__.19593: + .type __func__.19664, %object + .size __func__.19664, 8 +__func__.19664: .string "FtlInit" .section .rodata.str1.1,"aMS",%progbits,1 .LC0: @@ -20701,228 +21389,230 @@ __func__.19593: .LC47: .string "...%s enter...\n" .LC48: - .string "vpc1" -.LC49: - .string "vpc2" -.LC50: .string "FtlCheckVpc2 %x = %x %x\n" -.LC51: +.LC49: .string "free blk vpc error %x = %x %x\n" -.LC52: +.LC50: .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" -.LC53: +.LC51: .string ":" -.LC54: +.LC52: .string "Ftlscanalldata = %x\n" -.LC55: +.LC53: .string "scan lpa = %x ppa= %x\n" -.LC56: +.LC54: .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC57: +.LC55: .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC58: +.LC56: .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC59: +.LC57: .string "Mblk:" -.LC60: +.LC58: .string "L2P:" -.LC61: +.LC59: .string "L2PC:" -.LC62: +.LC60: .string "superBlkID = %x vpc=%x\n" -.LC63: +.LC61: .string "flashmode = %x pagenum = %x %x\n" -.LC64: +.LC62: .string "blk = %x vpc=%x mode = %x\n" -.LC65: +.LC63: .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC66: +.LC64: .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC67: +.LC65: .string "slc mode" +.LC66: + .string "ftl_scan_all_ppa blk %x page %x\n" +.LC67: + .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" .LC68: - .string "FLASH INFO:\n" + .string "%s finished\n" .LC69: - .string "FLASH ID: %x\n" + .string "FLASH INFO:\n" .LC70: - .string "Device Capacity: %d MB\n" + .string "FLASH ID: %x\n" .LC71: - .string "FMWAIT: %x %x %x %x\n" + .string "Device Capacity: %d MB\n" .LC72: - .string "FTL INFO:\n" + .string "FMWAIT: %x %x %x %x\n" .LC73: - .string "g_MaxLpn = 0x%x\n" + .string "FTL INFO:\n" .LC74: - .string "g_VaildLpn = 0x%x\n" + .string "g_MaxLpn = 0x%x\n" .LC75: - .string "read_page_count = 0x%x\n" + .string "g_VaildLpn = 0x%x\n" .LC76: - .string "discard_page_count = 0x%x\n" + .string "read_page_count = 0x%x\n" .LC77: - .string "write_page_count = 0x%x\n" + .string "discard_page_count = 0x%x\n" .LC78: - .string "cache_write_count = 0x%x\n" + .string "write_page_count = 0x%x\n" .LC79: - .string "l2p_write_count = 0x%x\n" + .string "cache_write_count = 0x%x\n" .LC80: - .string "gc_page_count = 0x%x\n" + .string "l2p_write_count = 0x%x\n" .LC81: - .string "totle_write = %d MB\n" + .string "gc_page_count = 0x%x\n" .LC82: - .string "totle_read = %d MB\n" + .string "totle_write = %d MB\n" .LC83: - .string "GSV = 0x%x\n" + .string "totle_read = %d MB\n" .LC84: - .string "GDV = 0x%x\n" + .string "GSV = 0x%x\n" .LC85: - .string "bad blk num = %d %d\n" + .string "GDV = 0x%x\n" .LC86: - .string "free_superblocks = 0x%x\n" + .string "bad blk num = %d %d\n" .LC87: - .string "mlc_EC = 0x%x\n" + .string "free_superblocks = 0x%x\n" .LC88: - .string "slc_EC = 0x%x\n" + .string "mlc_EC = 0x%x\n" .LC89: - .string "avg_EC = 0x%x\n" + .string "slc_EC = 0x%x\n" .LC90: - .string "sys_EC = 0x%x\n" + .string "avg_EC = 0x%x\n" .LC91: - .string "max_EC = 0x%x\n" + .string "sys_EC = 0x%x\n" .LC92: - .string "min_EC = 0x%x\n" + .string "max_EC = 0x%x\n" .LC93: - .string "PLT = 0x%x\n" + .string "min_EC = 0x%x\n" .LC94: - .string "POT = 0x%x\n" + .string "PLT = 0x%x\n" .LC95: - .string "MaxSector = 0x%x\n" + .string "POT = 0x%x\n" .LC96: - .string "init_sys_blks_pp = 0x%x\n" + .string "MaxSector = 0x%x\n" .LC97: - .string "sys_blks_pp = 0x%x\n" + .string "init_sys_blks_pp = 0x%x\n" .LC98: - .string "free sysblock = 0x%x\n" + .string "sys_blks_pp = 0x%x\n" .LC99: - .string "data_blks_pp = 0x%x\n" + .string "free sysblock = 0x%x\n" .LC100: - .string "data_op_blks_pp = 0x%x\n" + .string "data_blks_pp = 0x%x\n" .LC101: - .string "max_data_blks = 0x%x\n" + .string "data_op_blks_pp = 0x%x\n" .LC102: - .string "Sys.id = 0x%x\n" + .string "max_data_blks = 0x%x\n" .LC103: - .string "Bbt.id = 0x%x\n" + .string "Sys.id = 0x%x\n" .LC104: - .string "ACT.page = 0x%x\n" + .string "Bbt.id = 0x%x\n" .LC105: - .string "ACT.plane = 0x%x\n" + .string "ACT.page = 0x%x\n" .LC106: - .string "ACT.id = 0x%x\n" + .string "ACT.plane = 0x%x\n" .LC107: - .string "ACT.mode = 0x%x\n" + .string "ACT.id = 0x%x\n" .LC108: - .string "ACT.a_pages = 0x%x\n" + .string "ACT.mode = 0x%x\n" .LC109: - .string "ACT VPC = 0x%x\n" + .string "ACT.a_pages = 0x%x\n" .LC110: - .string "BUF.page = 0x%x\n" + .string "ACT VPC = 0x%x\n" .LC111: - .string "BUF.plane = 0x%x\n" + .string "BUF.page = 0x%x\n" .LC112: - .string "BUF.id = 0x%x\n" + .string "BUF.plane = 0x%x\n" .LC113: - .string "BUF.mode = 0x%x\n" + .string "BUF.id = 0x%x\n" .LC114: - .string "BUF.a_pages = 0x%x\n" + .string "BUF.mode = 0x%x\n" .LC115: - .string "BUF VPC = 0x%x\n" + .string "BUF.a_pages = 0x%x\n" .LC116: - .string "TMP.page = 0x%x\n" + .string "BUF VPC = 0x%x\n" .LC117: - .string "TMP.plane = 0x%x\n" + .string "TMP.page = 0x%x\n" .LC118: - .string "TMP.id = 0x%x\n" + .string "TMP.plane = 0x%x\n" .LC119: - .string "TMP.mode = 0x%x\n" + .string "TMP.id = 0x%x\n" .LC120: - .string "TMP.a_pages = 0x%x\n" + .string "TMP.mode = 0x%x\n" .LC121: - .string "GC.page = 0x%x\n" + .string "TMP.a_pages = 0x%x\n" .LC122: - .string "GC.plane = 0x%x\n" + .string "GC.page = 0x%x\n" .LC123: - .string "GC.id = 0x%x\n" + .string "GC.plane = 0x%x\n" .LC124: - .string "GC.mode = 0x%x\n" + .string "GC.id = 0x%x\n" .LC125: - .string "GC.a_pages = 0x%x\n" + .string "GC.mode = 0x%x\n" .LC126: - .string "WR_CHK = 0x%x %x %x %x\n" + .string "GC.a_pages = 0x%x\n" .LC127: - .string "Read Err = 0x%x\n" + .string "WR_CHK = 0x%x %x %x %x\n" .LC128: - .string "Prog Err = 0x%x\n" + .string "Read Err = 0x%x\n" .LC129: - .string "gc_free_blk_th= 0x%x\n" + .string "Prog Err = 0x%x\n" .LC130: - .string "gc_merge_free_blk_th= 0x%x\n" + .string "gc_free_blk_th= 0x%x\n" .LC131: - .string "gc_skip_write_count= 0x%x\n" + .string "gc_merge_free_blk_th= 0x%x\n" .LC132: - .string "gc_blk_index= 0x%x\n" + .string "gc_skip_write_count= 0x%x\n" .LC133: - .string "free min EC= 0x%x\n" + .string "gc_blk_index= 0x%x\n" .LC134: - .string "free max EC= 0x%x\n" + .string "free min EC= 0x%x\n" .LC135: - .string "GC__SB VPC = 0x%x\n" + .string "free max EC= 0x%x\n" .LC136: - .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" + .string "GC__SB VPC = 0x%x\n" .LC137: - .string "free %d. [0x%x] 0x%x 0x%x\n" + .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" .LC138: - .string "FTL version: 5.0.50 20180905" + .string "free %d. [0x%x] 0x%x 0x%x\n" .LC139: - .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" + .string "FTL version: 5.0.56 20190508" .LC140: - .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" + .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" .LC141: - .string "FtlGcRefreshBlock 0x%x\n" + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" .LC142: - .string "FtlGcMarkBadPhyBlk %d 0x%x\n" + .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" .LC143: - .string "FtlGcFreeBadSuperBlk 0x%x\n" + .string "FtlGcRefreshBlock 0x%x\n" .LC144: - .string "decrement_vpc_count %x = %d\n" + .string "FtlGcMarkBadPhyBlk %d 0x%x\n" .LC145: - .string "decrement_vpc_count %x = %d in free list\n" + .string "FtlGcFreeBadSuperBlk 0x%x\n" .LC146: - .string "RSB refresh addr %x\n" + .string "decrement_vpc_count %x = %d\n" .LC147: - .string "spuer block %x vpn is 0\n " + .string "decrement_vpc_count %x = %d in free list\n" .LC148: - .string "g_recovery_ppa %x ver %x\n " + .string "RSB refresh addr %x\n" .LC149: - .string "FtlCheckVpc %x = %x %x\n" + .string "spuer block %x vpn is 0\n " .LC150: - .string "%d GC datablk = %x vpc %x %x\n" + .string "g_recovery_ppa %x ver %x\n " .LC151: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" + .string "FtlCheckVpc %x = %x %x\n" .LC152: - .string "g_gc_superblock_free %x %x %x %x %x\n" + .string "%d GC datablk = %x vpc %x %x\n" .LC153: - .string "Ftlwrite decrement_vpc_count %x = %d\n" + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" .LC154: - .string "GC des block %x done\n" + .string "Ftlwrite decrement_vpc_count %x = %d\n" .LC155: - .string "...%s: no bad block mapping table, format device\n" + .string "GC des block %x done\n" .LC156: - .string "...%s FtlSysBlkInit error ,format device!\n" + .string "...%s: no bad block mapping table, format device\n" .LC157: - .string "FtlWrite: lpa error:%x %x\n" + .string "...%s FtlSysBlkInit error ,format device!\n" .LC158: - .string "fix power lost blk = %x vpc=%x\n" + .string "FtlWrite: lpa error:%x %x\n" .LC159: + .string "fix power lost blk = %x vpc=%x\n" +.LC160: .string "erase power lost blk = %x vpc=%x\n" .data .align 3 @@ -21058,6 +21748,232 @@ random_seed: .hword 28406 .hword 17598 .hword 28087 + .type ToshibaA19RefValue, %object + .size ToshibaA19RefValue, 45 +ToshibaA19RefValue: + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 4 + .byte 124 + .byte 126 + .byte 0 + .byte 0 + .byte 124 + .byte 120 + .byte 120 + .byte 0 + .byte 124 + .byte 118 + .byte 116 + .byte 114 + .byte 0 + .byte 8 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 126 + .byte 118 + .byte 116 + .byte 0 + .byte 16 + .byte 118 + .byte 114 + .byte 112 + .byte 0 + .byte 2 + .byte 0 + .byte 126 + .byte 124 + .byte 0 + .zero 3 + .type Toshiba15RefValue, %object + .size Toshiba15RefValue, 95 +Toshiba15RefValue: + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 4 + .byte 2 + .byte 0 + .byte 0 + .byte 8 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 124 + .byte 0 + .byte 124 + .byte 124 + .byte 0 + .byte 122 + .byte 0 + .byte 122 + .byte 122 + .byte 0 + .byte 11 + .byte 126 + .byte 118 + .byte 116 + .byte 0 + .byte 120 + .byte 2 + .byte 120 + .byte 122 + .byte 0 + .byte 126 + .byte 4 + .byte 126 + .byte 122 + .byte 0 + .byte 16 + .byte 118 + .byte 114 + .byte 112 + .byte 0 + .byte 118 + .byte 4 + .byte 118 + .byte 120 + .byte 0 + .byte 4 + .byte 4 + .byte 4 + .byte 118 + .byte 0 + .byte 2 + .byte 0 + .byte 126 + .byte 124 + .byte 0 + .byte 6 + .byte 10 + .byte 6 + .byte 2 + .byte 0 + .byte 116 + .byte 124 + .byte 116 + .byte 118 + .byte 0 + .byte 4 + .byte 4 + .byte 124 + .byte 126 + .byte 0 + .byte 0 + .byte 124 + .byte 120 + .byte 120 + .byte 0 + .byte 124 + .byte 118 + .byte 116 + .byte 114 + .byte 0 + .zero 1 + .type ToshibaRefValue, %object + .size ToshibaRefValue, 8 +ToshibaRefValue: + .byte 0 + .byte 4 + .byte 124 + .byte 120 + .byte 116 + .byte 8 + .byte 12 + .byte 112 + .type SamsungRefValue, %object + .size SamsungRefValue, 64 +SamsungRefValue: + .byte -89 + .byte -92 + .byte -91 + .byte -90 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 10 + .byte 0 + .byte 0 + .byte 40 + .byte 0 + .byte -20 + .byte -40 + .byte -19 + .byte -11 + .byte -19 + .byte -26 + .byte 10 + .byte 15 + .byte 5 + .byte 0 + .byte 15 + .byte 10 + .byte -5 + .byte -20 + .byte -24 + .byte -17 + .byte -24 + .byte -36 + .byte -15 + .byte -5 + .byte -2 + .byte -16 + .byte 10 + .byte 0 + .byte -5 + .byte -20 + .byte -48 + .byte -30 + .byte -48 + .byte -62 + .byte 20 + .byte 15 + .byte -5 + .byte -20 + .byte -24 + .byte -5 + .byte -24 + .byte -36 + .byte 30 + .byte 20 + .byte -5 + .byte -20 + .byte -5 + .byte -1 + .byte -5 + .byte -8 + .byte 7 + .byte 12 + .byte 2 + .byte 0 .type gNandParaInfo, %object .size gNandParaInfo, 32 gNandParaInfo: @@ -21084,7 +22000,7 @@ gNandParaInfo: .byte 0 .zero 4 .type NandFlashParaTbl, %object - .size NandFlashParaTbl, 2464 + .size NandFlashParaTbl, 2592 NandFlashParaTbl: .byte 6 .byte 44 @@ -21661,6 +22577,58 @@ NandFlashParaTbl: .byte 5 .byte 44 .byte -124 + .byte 68 + .byte 50 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 1 + .hword 2184 + .hword 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .zero 4 + .byte 5 + .byte 44 + .byte -124 + .byte 68 + .byte 52 + .byte -86 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 1 + .hword 2184 + .hword 1479 + .byte 5 + .byte 19 + .byte 60 + .byte 32 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .zero 4 + .byte 5 + .byte 44 + .byte -124 .byte -60 .byte 52 .byte -86 @@ -21710,6 +22678,32 @@ NandFlashParaTbl: .byte 1 .byte 0 .zero 4 + .byte 5 + .byte 44 + .byte -124 + .byte 100 + .byte 60 + .byte -87 + .byte 0 + .byte 4 + .byte 1 + .byte 32 + .hword 512 + .byte 2 + .byte 2 + .hword 1024 + .hword 479 + .byte 3 + .byte 17 + .byte 40 + .byte 32 + .byte 1 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .zero 4 .byte 6 .byte -83 .byte -34 @@ -22049,6 +23043,32 @@ NandFlashParaTbl: .byte 0 .zero 4 .byte 6 + .byte -83 + .byte 58 + .byte 20 + .byte 3 + .byte 8 + .byte 80 + .byte 2 + .byte 1 + .byte 32 + .hword 388 + .byte 2 + .byte 2 + .hword 1362 + .hword 473 + .byte 9 + .byte 8 + .byte 40 + .byte 32 + .byte 3 + .byte 1 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .zero 4 + .byte 6 .byte -119 .byte 100 .byte 68 @@ -22245,7 +23265,7 @@ NandFlashParaTbl: .byte 1 .hword 1024 .hword 455 - .byte 3 + .byte 4 .byte 17 .byte 40 .byte 32 @@ -23167,232 +24187,6 @@ NandOptPara: .byte 0 .byte 0 .zero 14 - .type ToshibaA19RefValue, %object - .size ToshibaA19RefValue, 45 -ToshibaA19RefValue: - .byte 4 - .byte 5 - .byte 6 - .byte 7 - .byte 13 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 4 - .byte 4 - .byte 124 - .byte 126 - .byte 0 - .byte 0 - .byte 124 - .byte 120 - .byte 120 - .byte 0 - .byte 124 - .byte 118 - .byte 116 - .byte 114 - .byte 0 - .byte 8 - .byte 8 - .byte 0 - .byte 0 - .byte 0 - .byte 11 - .byte 126 - .byte 118 - .byte 116 - .byte 0 - .byte 16 - .byte 118 - .byte 114 - .byte 112 - .byte 0 - .byte 2 - .byte 0 - .byte 126 - .byte 124 - .byte 0 - .zero 3 - .type Toshiba15RefValue, %object - .size Toshiba15RefValue, 95 -Toshiba15RefValue: - .byte 4 - .byte 5 - .byte 6 - .byte 7 - .byte 13 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 2 - .byte 4 - .byte 2 - .byte 0 - .byte 0 - .byte 8 - .byte 8 - .byte 0 - .byte 0 - .byte 0 - .byte 124 - .byte 0 - .byte 124 - .byte 124 - .byte 0 - .byte 122 - .byte 0 - .byte 122 - .byte 122 - .byte 0 - .byte 11 - .byte 126 - .byte 118 - .byte 116 - .byte 0 - .byte 120 - .byte 2 - .byte 120 - .byte 122 - .byte 0 - .byte 126 - .byte 4 - .byte 126 - .byte 122 - .byte 0 - .byte 16 - .byte 118 - .byte 114 - .byte 112 - .byte 0 - .byte 118 - .byte 4 - .byte 118 - .byte 120 - .byte 0 - .byte 4 - .byte 4 - .byte 4 - .byte 118 - .byte 0 - .byte 2 - .byte 0 - .byte 126 - .byte 124 - .byte 0 - .byte 6 - .byte 10 - .byte 6 - .byte 2 - .byte 0 - .byte 116 - .byte 124 - .byte 116 - .byte 118 - .byte 0 - .byte 4 - .byte 4 - .byte 124 - .byte 126 - .byte 0 - .byte 0 - .byte 124 - .byte 120 - .byte 120 - .byte 0 - .byte 124 - .byte 118 - .byte 116 - .byte 114 - .byte 0 - .zero 1 - .type ToshibaRefValue, %object - .size ToshibaRefValue, 8 -ToshibaRefValue: - .byte 0 - .byte 4 - .byte 124 - .byte 120 - .byte 116 - .byte 8 - .byte 12 - .byte 112 - .type SamsungRefValue, %object - .size SamsungRefValue, 64 -SamsungRefValue: - .byte -89 - .byte -92 - .byte -91 - .byte -90 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 5 - .byte 10 - .byte 0 - .byte 0 - .byte 40 - .byte 0 - .byte -20 - .byte -40 - .byte -19 - .byte -11 - .byte -19 - .byte -26 - .byte 10 - .byte 15 - .byte 5 - .byte 0 - .byte 15 - .byte 10 - .byte -5 - .byte -20 - .byte -24 - .byte -17 - .byte -24 - .byte -36 - .byte -15 - .byte -5 - .byte -2 - .byte -16 - .byte 10 - .byte 0 - .byte -5 - .byte -20 - .byte -48 - .byte -30 - .byte -48 - .byte -62 - .byte 20 - .byte 15 - .byte -5 - .byte -20 - .byte -24 - .byte -5 - .byte -24 - .byte -36 - .byte 30 - .byte 20 - .byte -5 - .byte -20 - .byte -5 - .byte -1 - .byte -5 - .byte -8 - .byte 7 - .byte 12 - .byte 2 - .byte 0 .type refValueDefault, %object .size refValueDefault, 28 refValueDefault: @@ -23486,6 +24280,10 @@ gNandFlashIdbBlockAddr: .size p_blk_mode_table, 8 p_blk_mode_table: .zero 8 + .type gNandChipMap, %object + .size gNandChipMap, 64 +gNandChipMap: + .zero 64 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -23504,19 +24302,10 @@ gBlockPageAlignSize: gNandRandomizer: .zero 1 .zero 7 - .type gNandChipMap, %object - .size gNandChipMap, 64 -gNandChipMap: - .zero 64 .type gNandOptPara, %object .size gNandOptPara, 32 gNandOptPara: .zero 32 - .type gFlashSlcMode, %object - .size gFlashSlcMode, 1 -gFlashSlcMode: - .zero 1 - .zero 3 .type slcPageToMlcPageTbl, %object .size slcPageToMlcPageTbl, 512 slcPageToMlcPageTbl: @@ -23546,6 +24335,7 @@ DieAddrs: .size gDieOp, 192 gDieOp: .zero 192 + .zero 4 .type gpNandParaInfo, %object .size gpNandParaInfo, 8 gpNandParaInfo: @@ -23599,11 +24389,15 @@ NANDC_FMWAIT_SYN: .size gNandPhyInfo, 28 gNandPhyInfo: .zero 28 + .type gFlashSlcMode, %object + .size gFlashSlcMode, 1 +gFlashSlcMode: + .zero 1 .type gNandFlashEccBits, %object .size gNandFlashEccBits, 1 gNandFlashEccBits: .zero 1 - .zero 3 + .zero 2 .type g_MaxLbaSector, %object .size g_MaxLbaSector, 4 g_MaxLbaSector: @@ -23626,9 +24420,9 @@ read_retry_cur_offset: gFlashInterfaceMode: .zero 1 .zero 3 - .type g_nandc_version_data, %object - .size g_nandc_version_data, 4 -g_nandc_version_data: + .type idb_flash_slc_mode, %object + .size idb_flash_slc_mode, 4 +idb_flash_slc_mode: .zero 4 .type gFlashToggleModeEn, %object .size gFlashToggleModeEn, 1 @@ -23642,6 +24436,11 @@ gBootDdrMode: .type gNandcVer, %object .size gNandcVer, 4 gNandcVer: + .zero 4 + .type g_nandc_version_data, %object + .size g_nandc_version_data, 4 +g_nandc_version_data: + .zero 4 .zero 4 .type gMasterTempBuf, %object .size gMasterTempBuf, 8 @@ -23710,11 +24509,15 @@ gFlashProgCheckBuffer: .size gFlashProgCheckSpareBuffer, 8 gFlashProgCheckSpareBuffer: .zero 8 + .type g_nand_ecc_en, %object + .size g_nand_ecc_en, 1 +g_nand_ecc_en: + .zero 1 .type gMultiPageReadEn, %object .size gMultiPageReadEn, 1 gMultiPageReadEn: .zero 1 - .zero 7 + .zero 6 .type FbbtBlk, %object .size FbbtBlk, 16 FbbtBlk: @@ -23780,10 +24583,6 @@ c_ftl_vendor_part_size: .type c_ftl_nand_blks_per_die, %object .size c_ftl_nand_blks_per_die, 2 c_ftl_nand_blks_per_die: - .zero 2 - .type c_ftl_nand_blks_per_die_shift, %object - .size c_ftl_nand_blks_per_die_shift, 2 -c_ftl_nand_blks_per_die_shift: .zero 2 .type c_ftl_nand_page_pre_blk, %object .size c_ftl_nand_page_pre_blk, 2 @@ -23816,7 +24615,6 @@ c_ftl_nand_byte_pre_oob: .type c_ftl_nand_reserved_blks, %object .size c_ftl_nand_reserved_blks, 2 c_ftl_nand_reserved_blks: - .zero 2 .zero 2 .type DeviceCapacity, %object .size DeviceCapacity, 4 @@ -23990,6 +24788,7 @@ c_wr_page_buf_num: .type g_wr_page_num, %object .size g_wr_page_num, 4 g_wr_page_num: + .zero 4 .zero 4 .type p_gc_blk_tbl, %object .size p_gc_blk_tbl, 8 @@ -24241,14 +25040,14 @@ FtlUpdateVaildLpnCount: g_VaildLpn: .zero 4 .type gSysInfo, %object - .size gSysInfo, 12 + .size gSysInfo, 16 gSysInfo: - .zero 12 + .zero 16 .type g_totle_map_block, %object .size g_totle_map_block, 2 g_totle_map_block: .zero 2 - .zero 2 + .zero 6 .type check_valid_page_count_table, %object .size check_valid_page_count_table, 8192 check_valid_page_count_table: diff --git a/drivers/rk_nand/rk_nand_base.c b/drivers/rk_nand/rk_nand_base.c index 14b451a2a6ca..d181f04d7769 100644 --- a/drivers/rk_nand/rk_nand_base.c +++ b/drivers/rk_nand/rk_nand_base.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "rk_nand_blk.h" @@ -40,8 +41,8 @@ static int rk_nand_shutdown_state; /*1:flash 2:emmc 4:sdcard0 8:sdcard1*/ static int rknand_boot_media = 2; static DECLARE_WAIT_QUEUE_HEAD(rk29_nandc_wait); -static void rk_nand_iqr_timeout_hack(unsigned long data); -static DEFINE_TIMER(rk_nand_iqr_timeout, rk_nand_iqr_timeout_hack, 0, 0); +static void rk_nand_iqr_timeout_hack(struct timer_list *unused); +static DEFINE_TIMER(rk_nand_iqr_timeout, rk_nand_iqr_timeout_hack); static int nandc0_xfer_completed_flag; static int nandc0_ready_completed_flag; static int nandc1_xfer_completed_flag; @@ -188,7 +189,7 @@ int rk_nand_schedule_enable_config(int en) return tmp; } -static void rk_nand_iqr_timeout_hack(unsigned long data) +static void rk_nand_iqr_timeout_hack(struct timer_list *unused) { del_timer(&rk_nand_iqr_timeout); rk_timer_add = 0; diff --git a/drivers/rk_nand/rk_nand_blk.c b/drivers/rk_nand/rk_nand_blk.c index 1f24efbd69ba..3f59caf83caf 100644 --- a/drivers/rk_nand/rk_nand_blk.c +++ b/drivers/rk_nand/rk_nand_blk.c @@ -183,12 +183,12 @@ static int nand_dev_transfer(struct nand_blk_dev *dev, } static DECLARE_WAIT_QUEUE_HEAD(rknand_thread_wait); -static void rk_ftl_gc_timeout_hack(unsigned long data); -static DEFINE_TIMER(rk_ftl_gc_timeout, rk_ftl_gc_timeout_hack, 0, 0); +static void rk_ftl_gc_timeout_hack(struct timer_list *unused); +static DEFINE_TIMER(rk_ftl_gc_timeout, rk_ftl_gc_timeout_hack); static unsigned long rk_ftl_gc_jiffies; static unsigned long rk_ftl_gc_do; -static void rk_ftl_gc_timeout_hack(unsigned long data) +static void rk_ftl_gc_timeout_hack(struct timer_list *unused) { del_timer(&rk_ftl_gc_timeout); rk_ftl_gc_do++; @@ -288,7 +288,7 @@ static int nand_blktrans_thread(void *arg) buf = 0; res = 0; - if (req->cmd_flags & REQ_DISCARD) { + if (req->cmd_flags & REQ_OP_DISCARD) { spin_unlock_irq(rq->queue_lock); rknand_device_lock(); if (FtlDiscard(blk_rq_pos(req) + @@ -299,7 +299,7 @@ static int nand_blktrans_thread(void *arg) if (!__blk_end_request_cur(req, res)) req = NULL; continue; - } else if (req->cmd_flags & REQ_FLUSH) { + } else if (req->cmd_flags & REQ_OP_FLUSH) { spin_unlock_irq(rq->queue_lock); rknand_device_lock(); rk_ftl_cache_write_back(); @@ -310,7 +310,7 @@ static int nand_blktrans_thread(void *arg) continue; } - rw_flag = req->cmd_flags & REQ_WRITE; + rw_flag = req->cmd_flags & REQ_OP_WRITE; if (rw_flag == READ && mtd_read_temp_buffer) { buf = mtd_read_temp_buffer; req_check_buffer_align(req, &buf); @@ -586,7 +586,6 @@ static int nand_add_dev(struct nand_blk_ops *nandr, struct nand_part *part) part->name); } else { gd->flags = GENHD_FL_EXT_DEVT; - gd->driverfs_dev = g_nand_device; gd->minors = 255; snprintf(gd->disk_name, sizeof(gd->disk_name), @@ -674,8 +673,10 @@ static int nand_blk_register(struct nand_blk_ops *nandr) blk_queue_max_hw_sectors(nandr->rq, MTD_RW_SECTORS); blk_queue_max_segments(nandr->rq, MTD_RW_SECTORS); - queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, nandr->rq); + blk_queue_flag_set(QUEUE_FLAG_DISCARD, nandr->rq); blk_queue_max_discard_sectors(nandr->rq, UINT_MAX >> 9); + /* discard_granularity config to one nand page size 32KB*/ + nandr->rq->limits.discard_granularity = 64 << 9; nandr->rq->queuedata = nandr; INIT_LIST_HEAD(&nandr->devs); diff --git a/drivers/rk_nand/rk_zftl_arm64.S b/drivers/rk_nand/rk_zftl_arm64.S index 54c4a5c99d38..65c22ad657ac 100644 --- a/drivers/rk_nand/rk_zftl_arm64.S +++ b/drivers/rk_nand/rk_zftl_arm64.S @@ -5,7 +5,7 @@ * 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: 2018-11-08 + * date: 2019-04-27 * function: rk ftl v5 for rockchip soc base on arm v8 to support 3D/2D * TLC and MLC. */ @@ -713,8 +713,8 @@ zftl_get_gc_node.part.12: .size zftl_get_gc_node.part.12, .-zftl_get_gc_node.part.12 .section .text.unlikely .align 2 - .type rk_simple_strtoull.constprop.29, %function -rk_simple_strtoull.constprop.29: + .type rk_simple_strtoull.constprop.33, %function +rk_simple_strtoull.constprop.33: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp,16] @@ -773,7 +773,7 @@ rk_simple_strtoull.constprop.29: ldp x21, x22, [sp,32] ldp x29, x30, [sp], 64 ret - .size rk_simple_strtoull.constprop.29, .-rk_simple_strtoull.constprop.29 + .size rk_simple_strtoull.constprop.33, .-rk_simple_strtoull.constprop.33 .text .align 2 .global nand_flash_print_info @@ -1042,17 +1042,19 @@ nand_flash_print_info: ldr w0, [x19,#:lo12:.LANCHOR2] tbz x0, 12, .L145 adrp x1, .LANCHOR0 - adrp x0, .LC17 - add x0, x0, :lo12:.LC17 + adrp x0, .LC31 + add x2, x1, :lo12:.LANCHOR0 + add x0, x0, :lo12:.LC31 ldrb w1, [x1,#:lo12:.LANCHOR0] + ldrb w2, [x2,634] bl printk .L145: ldr w0, [x19,#:lo12:.LANCHOR2] tbz x0, 12, .L146 adrp x2, .LANCHOR0 - adrp x0, .LC31 + adrp x0, .LC32 add x2, x2, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC31 + add x0, x0, :lo12:.LC32 add x2, x2, 640 ldrb w1, [x2,10] ldrb w2, [x2,11] @@ -1061,9 +1063,9 @@ nand_flash_print_info: ldr w0, [x19,#:lo12:.LANCHOR2] tbz x0, 12, .L147 adrp x2, .LANCHOR0 - adrp x0, .LC32 + adrp x0, .LC33 add x2, x2, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC32 + add x0, x0, :lo12:.LC33 add x2, x2, 640 ldrb w1, [x2,8] ldrb w2, [x2,9] @@ -1072,8 +1074,8 @@ nand_flash_print_info: ldr w0, [x19,#:lo12:.LANCHOR2] tbz x0, 12, .L117 adrp x1, .LANCHOR0+672 - adrp x0, .LC33 - add x0, x0, :lo12:.LC33 + adrp x0, .LC34 + add x0, x0, :lo12:.LC34 ldrb w1, [x1,#:lo12:.LANCHOR0+672] bl printk .L117: @@ -1095,9 +1097,9 @@ nandc_init: ldr w0, [x21,#:lo12:.LANCHOR2] tbz x0, 12, .L243 adrp x1, .LANCHOR1 - adrp x0, .LC34 + adrp x0, .LC35 add x1, x1, :lo12:.LANCHOR1 - add x0, x0, :lo12:.LC34 + add x0, x0, :lo12:.LC35 add x1, x1, 72 mov x2, x22 bl printk @@ -1199,8 +1201,8 @@ nandc_init: ldr w4, [x0,308] ldr w5, [x0,312] .L260: - adrp x0, .LC35 - add x0, x0, :lo12:.LC35 + adrp x0, .LC36 + add x0, x0, :lo12:.LC36 bl printk .L248: add x1, x20, :lo12:.LANCHOR0 @@ -1210,9 +1212,9 @@ nandc_init: strh wzr, [x1,722] strb wzr, [x1,724] tbz x0, 12, .L242 - adrp x0, .LC36 + adrp x0, .LC37 ldrb w1, [x1,516] - add x0, x0, :lo12:.LC36 + add x0, x0, :lo12:.LC37 bl printk .L242: ldp x19, x20, [sp,16] @@ -1321,41 +1323,50 @@ toshiba_set_rr_para: hynix_set_rr_para: stp x29, x30, [sp, -64]! adrp x3, .LANCHOR0 - uxtb w0, w0 + uxtb w1, w1 add x3, x3, :lo12:.LANCHOR0 add x29, sp, 0 - uxtb w1, w1 - stp x19, x20, [sp,16] + uxtb w0, w0 stp x21, x22, [sp,32] str x23, [sp,48] - mov x20, 160 - mov x21, 0 - ldr x4, [x3,728] + stp x19, x20, [sp,16] + ldr x2, [x3,728] ldr x19, [x3,536] - add x23, x4, 128 - ldrb w22, [x4,113] - mul w2, w1, w22 - sxtw x1, w0 + add x23, x2, 128 + add x21, x2, 112 + ldrb w22, [x2,113] + ldrb w2, [x2,112] + mul w1, w1, w22 + cmp w2, 8 + sxtw x1, w1 + beq .L274 + sxtw x2, w0 + mov x3, 160 + madd x2, x2, x3, x1 + add x2, x2, 32 + add x21, x21, x2 + b .L275 +.L274: + add x1, x1, 32 + add x21, x21, x1 +.L275: ubfiz x0, x0, 8, 8 + mov x20, 0 add x19, x19, x0 mov w0, 54 - mul x20, x1, x20 - add x1, x20, x2, sxtw - add x20, x4, x1 - add x20, x20, 144 str w0, [x19,2056] -.L274: - cmp w22, w21, uxtb - bls .L276 - ldrb w0, [x23,x21] +.L276: + cmp w22, w20, uxtb + bls .L278 + ldrb w0, [x23,x20] str w0, [x19,2052] mov w0, 120 bl timer_delay_ns - ldrsb w0, [x20,x21] - add x21, x21, 1 + ldrsb w0, [x21,x20] + add x20, x20, 1 str w0, [x19,2048] - b .L274 -.L276: + b .L276 +.L278: mov w0, 22 str w0, [x19,2056] ldp x19, x20, [sp,16] @@ -1377,19 +1388,19 @@ hynix_reconfig_rr_para: ldrb w1, [x19,725] sub w1, w1, #1 uxtb w1, w1 - cmp w1, 6 - bhi .L277 + cmp w1, 7 + bhi .L279 ldr x1, [x19,728] sxtw x20, w0 add x1, x1, x20 ldrb w1, [x1,120] - cbz w1, .L277 + cbz w1, .L279 mov w1, 0 bl hynix_set_rr_para ldr x0, [x19,728] add x20, x0, x20 strb wzr, [x20,120] -.L277: +.L279: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -1408,12 +1419,12 @@ nandc_set_ddr_para: lsl w0, w0, 8 orr w0, w2, w0 orr w0, w0, 3 - bne .L283 + bne .L285 str w0, [x1,80] - b .L282 -.L283: + b .L284 +.L285: str w0, [x1,304] -.L282: +.L284: ret .size nandc_set_ddr_para, .-nandc_set_ddr_para .align 2 @@ -1425,12 +1436,12 @@ nandc_get_ddr_para: ldrb w1, [x0,516] ldr x0, [x0,536] cmp w1, 9 - bne .L286 + bne .L288 ldr w0, [x0,80] - b .L288 -.L286: - ldr w0, [x0,304] + b .L290 .L288: + ldr w0, [x0,304] +.L290: ubfx x0, x0, 8, 8 ret .size nandc_get_ddr_para, .-nandc_get_ddr_para @@ -1444,7 +1455,7 @@ nandc_set_if_mode: tst w0, 6 ldr x2, [x3,536] ldr w1, [x2] - beq .L290 + beq .L292 orr w1, w1, 24576 and w0, w0, 4 and w1, w1, -32769 @@ -1455,7 +1466,7 @@ nandc_set_if_mode: csel w1, w4, w1, ne cmp w0, 9 mov w0, 8321 - bne .L292 + bne .L294 str w0, [x2,8] mov w0, 4099 movk w0, 0x10, lsl 16 @@ -1464,8 +1475,8 @@ nandc_set_if_mode: str w0, [x2,84] mov w0, 39 str w0, [x2,84] - b .L293 -.L292: + b .L295 +.L294: str w0, [x2,344] mov w0, 4099 movk w0, 0x10, lsl 16 @@ -1474,10 +1485,10 @@ nandc_set_if_mode: str w0, [x2,308] mov w0, 39 str w0, [x2,308] - b .L293 -.L290: + b .L295 +.L292: and w1, w1, -8193 -.L293: +.L295: str w1, [x2] ret .size nandc_set_if_mode, .-nandc_set_if_mode @@ -1524,16 +1535,16 @@ flash_wait_device_ready_raw: ldrb w0, [x0,633] mov x19, x3 cmp w0, w21 - bhi .L299 + bhi .L301 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 612 + mov w2, 677 add x1, x1, 240 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L299: +.L301: add x3, x19, :lo12:.LANCHOR0 add x21, x3, x21, sxtw ldrb w23, [x21,736] @@ -1546,7 +1557,7 @@ flash_wait_device_ready_raw: bl nandc_cs ubfiz x3, x23, 8, 8 add x19, x19, x3 -.L301: +.L303: str w26, [x19,2056] mov w0, 120 str w21, [x19,2052] @@ -1557,9 +1568,9 @@ flash_wait_device_ready_raw: and w20, w20, 255 and w0, w22, w20 cmp w0, w22 - bne .L301 + bne .L303 cmp w20, 255 - beq .L301 + beq .L303 mov w0, w23 bl nandc_de_cs mov w0, w20 @@ -1580,14 +1591,14 @@ flash_wait_device_ready: add x29, sp, 0 and w1, w0, 2097151 ubfx x6, x0, 21, 3 - cbnz w3, .L303 + cbnz w3, .L305 adrp x3, .LANCHOR0 add x0, x3, :lo12:.LANCHOR0 ldrb w4, [x3,#:lo12:.LANCHOR0] - cbz w4, .L304 + cbz w4, .L306 ldrb w0, [x0,1] - cbz w0, .L303 -.L304: + cbz w0, .L305 +.L306: add x3, x3, :lo12:.LANCHOR0 ldrh w5, [x3,2] ldrb w0, [x3,1] @@ -1595,11 +1606,11 @@ flash_wait_device_ready: mul w5, w4, w5 sub w4, w1, w5 add w1, w5, w4, lsl 1 - cbnz w0, .L303 + cbnz w0, .L305 add x3, x3, 4 ldrh w3, [x3,w4,uxtw 1] add w1, w3, w5 -.L303: +.L305: mov w0, w6 bl flash_wait_device_ready_raw ldp x29, x30, [sp], 16 @@ -1615,22 +1626,22 @@ nandc_wait_flash_ready_no_delay: mov w19, 34464 adrp x20, .LANCHOR0 movk w19, 0x1, lsl 16 -.L314: +.L316: add x0, x20, :lo12:.LANCHOR0 ldr x0, [x0,536] ldr w0, [x0] str w0, [x29,40] ldr w0, [x29,40] - tbnz x0, 9, .L315 + tbnz x0, 9, .L317 mov w0, 10 bl timer_delay_ns subs w19, w19, #1 - bne .L314 + bne .L316 mov w0, -1 - b .L313 -.L315: + b .L315 +.L317: mov w0, 0 -.L313: +.L315: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret @@ -1646,38 +1657,38 @@ zftl_flash_enter_slc_mode: add x29, sp, 0 ldrb w2, [x2,#:lo12:.LANCHOR0] str x19, [sp,16] - cbz w2, .L317 + cbz w2, .L319 cmp w2, 1 ldr x19, [x1,536] - bne .L320 + bne .L322 adrp x1, .LANCHOR2+37 ldrb w2, [x1,#:lo12:.LANCHOR2+37] - cbz w2, .L317 + cbz w2, .L319 sxtw x1, w0 add x1, x1, 8 add x0, x19, x1, lsl 8 str w2, [x0,8] - b .L317 -.L320: + b .L319 +.L322: cmp w2, 2 - bne .L322 + bne .L324 add x1, x1, x0 ldrb w2, [x1,744] - cbz w2, .L317 + cbz w2, .L319 strb wzr, [x1,744] adrp x1, .LANCHOR2+37 ldrb w1, [x1,#:lo12:.LANCHOR2+37] - cbz w1, .L317 + cbz w1, .L319 add x0, x0, 8 add x0, x19, x0, lsl 8 str w1, [x0,8] - b .L317 -.L322: + b .L319 +.L324: cmp w2, 3 - bne .L317 + bne .L319 add x1, x1, x0, sxtw ldrb w2, [x1,744] - cbz w2, .L317 + cbz w2, .L319 strb wzr, [x1,744] ubfiz x1, x0, 8, 8 add x19, x19, x1 @@ -1691,12 +1702,16 @@ zftl_flash_enter_slc_mode: mov w0, 1 str w0, [x19,2048] str wzr, [x19,2048] + mov w0, 150 str wzr, [x19,2048] + bl timer_delay_ns bl nandc_wait_flash_ready_no_delay mov w0, 218 str w0, [x19,2056] + mov w0, 150 + bl timer_delay_ns bl nandc_wait_flash_ready_no_delay -.L317: +.L319: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -1713,24 +1728,24 @@ zftl_flash_exit_slc_mode: add x20, x1, :lo12:.LANCHOR0 ldrb w1, [x1,#:lo12:.LANCHOR0] str x21, [sp,32] - cbz w1, .L335 + cbz w1, .L337 cmp w1, 1 ldr x19, [x20,536] - bne .L338 + bne .L340 adrp x1, .LANCHOR2+38 ldrb w2, [x1,#:lo12:.LANCHOR2+38] - cbz w2, .L335 + cbz w2, .L337 sxtw x1, w0 add x1, x1, 8 add x0, x19, x1, lsl 8 str w2, [x0,8] - b .L335 -.L338: + b .L337 +.L340: cmp w1, 2 - bne .L340 + bne .L342 add x20, x20, x0 ldrb w1, [x20,744] - cbnz w1, .L335 + cbnz w1, .L337 adrp x1, .LANCHOR2 mov w3, 4 add x1, x1, :lo12:.LANCHOR2 @@ -1740,20 +1755,21 @@ zftl_flash_exit_slc_mode: cmp w2, 2 csel w2, w2, w3, eq strb w2, [x20,744] - cbz w1, .L335 + cbz w1, .L337 add x0, x0, 8 add x0, x19, x0, lsl 8 str w1, [x0,8] - b .L335 -.L340: + b .L337 +.L342: cmp w1, 3 - bne .L335 + bne .L337 add x20, x20, x0, sxtw - ldrb w21, [x20,744] - cbnz w21, .L335 - adrp x1, .LANCHOR2+20 + ldrb w1, [x20,744] + cbnz w1, .L337 + adrp x21, .LANCHOR2 mov w2, 4 - ldrb w1, [x1,#:lo12:.LANCHOR2+20] + add x21, x21, :lo12:.LANCHOR2 + ldrb w1, [x21,20] cmp w1, 2 csel w1, w1, w2, eq strb w1, [x20,744] @@ -1765,17 +1781,28 @@ zftl_flash_exit_slc_mode: str w0, [x19,2052] mov w0, 50 bl timer_delay_ns - ldrb w0, [x20,744] - str w0, [x19,2048] + ldrb w0, [x21,15] + cmp w0, 9 mov w0, 1 + bne .L345 str w0, [x19,2048] - str w21, [x19,2048] - str w21, [x19,2048] + b .L346 +.L345: + ldrb w1, [x20,744] + str w1, [x19,2048] +.L346: + str w0, [x19,2048] + mov w0, 150 + str wzr, [x19,2048] + str wzr, [x19,2048] + bl timer_delay_ns bl nandc_wait_flash_ready_no_delay mov w0, 223 str w0, [x19,2056] + mov w0, 150 + bl timer_delay_ns bl nandc_wait_flash_ready_no_delay -.L335: +.L337: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -1798,46 +1825,46 @@ flash_start_page_read: ubfx x22, x1, 24, 2 ldrb w0, [x0,633] cmp w0, w19 - bhi .L354 + bhi .L358 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 754 + mov w2, 845 add x1, x1, 272 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L354: +.L358: add x20, x20, :lo12:.LANCHOR0 add x19, x20, x19, sxtw ldrb w19, [x19,736] mov w0, w19 ldr x24, [x20,536] bl nandc_cs - cbnz w22, .L355 + cbnz w22, .L359 mov w0, w21 bl slc_phy_page_address_calc mov w21, w0 adrp x0, .LANCHOR0 ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L356 + cbz w0, .L360 mov w0, w19 bl zftl_flash_enter_slc_mode - b .L356 -.L355: + b .L360 +.L359: ldr x0, [x20,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L357 + bne .L361 sxtw x0, w19 add x0, x0, 8 add x0, x24, x0, lsl 8 str w22, [x0,8] - b .L356 -.L357: + b .L360 +.L361: mov w0, w19 bl zftl_flash_exit_slc_mode -.L356: +.L360: ubfiz x19, x19, 8, 8 and w0, w21, 255 add x1, x24, x19 @@ -1870,22 +1897,22 @@ nandc_wait_flash_ready: adrp x20, .LANCHOR0 movk w19, 0x1, lsl 16 bl timer_delay_ns -.L363: +.L367: add x0, x20, :lo12:.LANCHOR0 ldr x0, [x0,536] ldr w0, [x0] str w0, [x29,40] ldr w0, [x29,40] - tbnz x0, 9, .L364 + tbnz x0, 9, .L368 mov w0, 10 bl timer_delay_ns subs w19, w19, #1 - bne .L363 + bne .L367 mov w0, -1 - b .L362 -.L364: + b .L366 +.L368: mov w0, 0 -.L362: +.L366: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 ret @@ -1916,23 +1943,23 @@ sandisk_set_rr_para: add x0, x0, x1 add x1, x2, x1 mov x2, 0 -.L367: +.L371: add x3, x5, :lo12:.LANCHOR0 ldrb w4, [x3,726] cmp w4, w2 - bls .L372 + bls .L376 ldrb w3, [x3,725] cmp w3, 67 - bne .L368 + bne .L372 ldrsb w3, [x0,x2] - b .L371 -.L368: + b .L375 +.L372: ldrsb w3, [x1,x2] -.L371: +.L375: str w3, [x20] add x2, x2, 1 - b .L367 -.L372: + b .L371 +.L376: bl nandc_wait_flash_ready ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -2021,7 +2048,7 @@ toshiba_tlc_set_rr_para: mov w21, 239 adrp x0, .LANCHOR2 str w21, [x19,8] - cbz w2, .L376 + cbz w2, .L380 mov w2, 18 str w2, [x19,4] mov x2, 7 @@ -2048,8 +2075,8 @@ toshiba_tlc_set_rr_para: ldrb w0, [x20,6] str w0, [x19] str wzr, [x19] - b .L377 -.L376: + b .L381 +.L380: add x0, x0, :lo12:.LANCHOR2 mov w3, 20 add x0, x0, 376 @@ -2059,7 +2086,7 @@ toshiba_tlc_set_rr_para: str w2, [x19] str w2, [x19] str w2, [x19] -.L377: +.L381: bl nandc_wait_flash_ready ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -2085,23 +2112,23 @@ flash_start_plane_read: stp x27, x28, [sp,80] ldrb w0, [x0,633] cmp w0, w19 - bhi .L379 + bhi .L383 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 849 + mov w2, 940 add x1, x1, 712 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L379: +.L383: add x26, x22, :lo12:.LANCHOR0 add x19, x26, x19, sxtw ldrb w24, [x19,736] mov w0, w24 ldr x25, [x26,536] bl nandc_cs - cbnz w20, .L380 + cbnz w20, .L384 mov w0, w23 bl slc_phy_page_address_calc mov w23, w0 @@ -2110,24 +2137,24 @@ flash_start_plane_read: mov w21, w0 adrp x0, .LANCHOR0 ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L381 + cbz w0, .L385 mov w0, w24 bl zftl_flash_enter_slc_mode - b .L381 -.L380: + b .L385 +.L384: ldr x0, [x26,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L382 + bne .L386 sxtw x0, w24 add x0, x0, 8 add x0, x25, x0, lsl 8 str w20, [x0,8] - b .L381 -.L382: + b .L385 +.L386: mov w0, w24 bl zftl_flash_exit_slc_mode -.L381: +.L385: add x26, x22, :lo12:.LANCHOR0 and w2, w23, 255 add x0, x26, 640 @@ -2139,7 +2166,7 @@ flash_start_plane_read: cmp w1, 1 lsr w1, w23, 8 lsr w23, w23, 16 - bne .L383 + bne .L387 add x19, x25, x19, lsl 8 ldrb w3, [x0,8] ldrb w0, [x0,9] @@ -2151,35 +2178,35 @@ flash_start_plane_read: str w23, [x19,2052] str w0, [x19,2056] bl nandc_wait_flash_ready - cbz w20, .L384 + cbz w20, .L388 ldr x0, [x26,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L384 + bne .L388 str w20, [x19,2056] -.L384: +.L388: str wzr, [x19,2056] str wzr, [x19,2052] str wzr, [x19,2052] - b .L402 -.L383: + b .L406 +.L387: add x19, x25, x19, lsl 8 ldrb w0, [x0,8] str w0, [x19,2056] str w2, [x19,2052] str w1, [x19,2052] str w23, [x19,2052] - cbz w20, .L386 + cbz w20, .L390 ldr x0, [x26,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L386 + bne .L390 str w20, [x19,2056] -.L386: +.L390: add x22, x22, :lo12:.LANCHOR0 ldrb w0, [x22,649] str w0, [x19,2056] -.L402: +.L406: str w28, [x19,2052] mov w0, 48 str w27, [x19,2052] @@ -2206,87 +2233,100 @@ flash_set_interface_mode: mov x21, 0 stp x23, x24, [sp,48] add x22, x22, :lo12:.LANCHOR0 - adrp x23, .LC38 + adrp x23, .LC39 stp x25, x26, [sp,64] stp x19, x20, [sp,16] mov w25, w0 add x26, x22, 748 adrp x24, .LANCHOR2 - add x23, x23, :lo12:.LC38 -.L416: + add x23, x23, :lo12:.LC39 +.L422: lsl x0, x21, 3 ldr x20, [x22,536] ldrb w19, [x0,x26] adrp x0, .LANCHOR0 cmp w19, 152 - beq .L404 + beq .L408 cmp w19, 69 - beq .L404 + beq .L408 + cmp w19, 155 + beq .L408 cmp w19, 44 - beq .L404 + cset w2, eq cmp w19, 137 - bne .L405 -.L404: + cset w1, eq + orr w1, w2, w1 + cbz w1, .L409 +.L408: add x0, x0, :lo12:.LANCHOR0 cmp w25, 1 ldrb w1, [x0,780] - bne .L407 - tbz x1, 0, .L405 - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L408 - adrp x0, .LC37 - add x0, x0, :lo12:.LC37 - bl printk -.L408: - add x1, x20, x21, lsl 8 - mov w0, 239 - cmp w19, 137 - str w0, [x1,2056] - beq .L417 - cmp w19, 44 - bne .L409 -.L417: - mov w0, 1 - str w0, [x1,2052] - mov w0, 5 - b .L436 -.L409: - mov w0, 128 - str w0, [x1,2052] - mov w0, 1 - b .L436 -.L407: - tbz x1, 2, .L405 + bne .L411 + tbz x1, 0, .L409 ldr w0, [x24,#:lo12:.LANCHOR2] tbz x0, 12, .L412 - mov x0, x23 + adrp x0, .LC38 + add x0, x0, :lo12:.LC38 bl printk .L412: add x1, x20, x21, lsl 8 mov w0, 239 cmp w19, 137 str w0, [x1,2056] - beq .L418 + beq .L423 + cmp w19, 44 + bne .L413 +.L423: + mov w0, 1 + str w0, [x1,2052] + mov w0, 5 + b .L442 +.L413: + cmp w19, 155 + mov w0, 1 + bne .L421 + str w0, [x1,2052] + mov w0, 3 + b .L442 +.L411: + tbz x1, 2, .L409 + ldr w0, [x24,#:lo12:.LANCHOR2] + tbz x0, 12, .L417 + mov x0, x23 + bl printk +.L417: + add x1, x20, x21, lsl 8 + mov w0, 239 + cmp w19, 137 + str w0, [x1,2056] + beq .L424 cmp w19, 44 cset w0, eq - cbz w0, .L413 -.L418: + cbz w0, .L418 +.L424: mov w0, 1 str w0, [x1,2052] mov w0, 35 - b .L436 -.L413: + b .L442 +.L418: + cmp w19, 155 + bne .L421 + mov w0, 1 + str w0, [x1,2052] + mov w0, 37 + b .L442 +.L421: mov w2, 128 str w2, [x1,2052] -.L436: +.L442: str w0, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] str wzr, [x1,2048] -.L405: +.L409: add x21, x21, 1 cmp x21, 4 - bne .L416 + bne .L422 bl nandc_wait_flash_ready mov w0, 0 ldp x19, x20, [sp,16] @@ -2358,17 +2398,17 @@ flash_read_id: sub w0, w2, #1 uxtb w0, w0 cmp w0, 253 - bhi .L439 - adrp x0, .LC39 + bhi .L445 + adrp x0, .LC40 ldrb w3, [x19,1] ldrb w4, [x19,2] - add x0, x0, :lo12:.LC39 + add x0, x0, :lo12:.LC40 ldrb w5, [x19,3] add w1, w21, 1 ldrb w6, [x19,4] ldrb w7, [x19,5] bl printk -.L439: +.L445: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -2410,6 +2450,84 @@ flash_read_spare: ret .size flash_read_spare, .-flash_read_spare .align 2 + .global flash_read_otp_data + .type flash_read_otp_data, %function +flash_read_otp_data: + stp x29, x30, [sp, -64]! + add x29, sp, 0 + stp x21, x22, [sp,32] + uxtb w21, w0 + adrp x0, .LANCHOR0+536 + stp x19, x20, [sp,16] + str x23, [sp,48] + mov w20, w1 + ldr x19, [x0,#:lo12:.LANCHOR0+536] + mov w0, w21 + mov x23, x2 + mov w22, 144 + bl nandc_cs + ubfiz x3, x21, 8, 8 + mov w0, 239 + add x19, x19, x3 + str w0, [x19,2056] + mov w0, 50 + str w22, [x19,2052] + bl timer_delay_ns + mov w0, 1 + str w0, [x19,2048] + str wzr, [x19,2048] + str wzr, [x19,2048] + str wzr, [x19,2048] + bl nandc_wait_flash_ready + mov w0, 238 + str w0, [x19,2056] + str w22, [x19,2052] + adrp x0, .LC41 + mov w1, w20 + add x0, x0, :lo12:.LC41 + ldr w2, [x19,2048] + ldr w3, [x19,2048] + ldr w4, [x19,2048] + bl printk + bl nandc_wait_flash_ready + str wzr, [x19,2056] + str wzr, [x19,2052] + and w0, w20, 255 + str wzr, [x19,2052] + str w0, [x19,2052] + lsr w0, w20, 8 + str w0, [x19,2052] + lsr w20, w20, 16 + str w20, [x19,2052] + mov w0, 48 + str w0, [x19,2056] + bl nandc_wait_flash_ready + mov x1, 0 +.L449: + ldr w0, [x19,2048] + strb w0, [x23,x1] + add x1, x1, 1 + cmp x1, 16384 + bne .L449 + mov w0, 239 + str w0, [x19,2056] + mov w0, 144 + str w0, [x19,2052] + mov w0, 50 + bl timer_delay_ns + str wzr, [x19,2048] + str wzr, [x19,2048] + mov w0, w21 + str wzr, [x19,2048] + str wzr, [x19,2048] + bl nandc_de_cs + ldr x23, [sp,48] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 64 + ret + .size flash_read_otp_data, .-flash_read_otp_data + .align 2 .global sandisk_prog_test_bad_block .type sandisk_prog_test_bad_block, %function sandisk_prog_test_bad_block: @@ -2426,9 +2544,9 @@ sandisk_prog_test_bad_block: add x2, x2, 8 ldrb w3, [x3,37] add x2, x19, x2, lsl 8 - cbnz w3, .L452 + cbnz w3, .L461 mov w3, 162 -.L452: +.L461: ubfiz x0, x0, 8, 8 str w3, [x2,8] add x19, x19, x0 @@ -2453,14 +2571,14 @@ sandisk_prog_test_bad_block: ldr w2, [x19,2048] mov w0, 5 ands w19, w2, w0 - beq .L445 + beq .L454 ldr w0, [x20,#:lo12:.LANCHOR2] ldr x1, [x29,40] - tbz x0, 12, .L445 - adrp x0, .LC40 - add x0, x0, :lo12:.LC40 + tbz x0, 12, .L454 + adrp x0, .LC42 + add x0, x0, :lo12:.LC42 bl printk -.L445: +.L454: mov w0, w19 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 48 @@ -2491,44 +2609,44 @@ nandc_bch_sel: strb w0, [x1,724] cmp w2, 9 ldr x2, [x1,536] - bne .L455 + bne .L464 str w3, [x2,16] cmp w0, 70 mov w1, 0 - beq .L456 + beq .L465 cmp w0, 60 mov w1, 3 - beq .L456 + beq .L465 cmp w0, 40 mov w1, 2 csel w1, w1, w3, eq -.L456: +.L465: lsl w1, w1, 25 orr w1, w1, 1 str w1, [x2,32] - b .L454 -.L455: + b .L463 +.L464: str w3, [x2,8] cmp w0, 16 mov w1, 4096 - bne .L458 -.L461: + bne .L467 +.L470: and w1, w1, -17 - b .L459 -.L458: + b .L468 +.L467: cmp w0, 24 - bne .L460 + bne .L469 orr w1, w1, 16 - b .L459 -.L460: + b .L468 +.L469: cmp w0, 40 orr w1, w1, 262144 orr w1, w1, 16 - beq .L461 -.L459: + beq .L470 +.L468: orr w1, w1, 1 str w1, [x2,12] -.L454: +.L463: ret .size nandc_bch_sel, .-nandc_bch_sel .align 2 @@ -2552,7 +2670,7 @@ zftl_flash_resume: str w2, [x1,4] ldr x1, [x0,536] ldr w2, [x0,552] - bne .L469 + bne .L478 str w2, [x1,16] ldr w2, [x0,556] str w2, [x1,32] @@ -2564,8 +2682,8 @@ zftl_flash_resume: str w2, [x1,520] ldr w0, [x0,572] str w0, [x1,8] - b .L470 -.L469: + b .L479 +.L478: str w2, [x1,8] ldr w2, [x0,556] str w2, [x1,12] @@ -2577,18 +2695,18 @@ zftl_flash_resume: str w2, [x1,336] ldr w0, [x0,572] str w0, [x1,344] -.L470: +.L479: add x22, x20, :lo12:.LANCHOR0 mov x19, 0 add x23, x22, 748 mov w24, 2 -.L472: +.L481: lsl x0, x19, 3 ldrb w0, [x0,x23] sub w0, w0, #1 uxtb w0, w0 cmp w0, 253 - bhi .L471 + bhi .L480 uxtb w21, w19 mov w0, w21 bl flash_reset @@ -2596,13 +2714,13 @@ zftl_flash_resume: strb w24, [x19,x0] mov w0, w21 bl zftl_flash_enter_slc_mode -.L471: +.L480: add x19, x19, 1 cmp x19, 4 - bne .L472 + bne .L481 add x20, x20, :lo12:.LANCHOR0 ldrb w0, [x20,672] - cbz w0, .L473 + cbz w0, .L482 mov w0, 1 bl nandc_set_if_mode mov w0, w19 @@ -2612,7 +2730,7 @@ zftl_flash_resume: ldr w0, [x20,560] lsr w0, w0, 8 bl nandc_set_ddr_para -.L473: +.L482: adrp x0, .LANCHOR2+28 ldrb w0, [x0,#:lo12:.LANCHOR2+28] bl nandc_bch_sel @@ -2647,30 +2765,30 @@ nandc_iqr_wait_flash_ready: ldrb w1, [x19,516] ldr x0, [x19,536] cmp w1, 9 - bne .L480 + bne .L489 ldr w1, [x0,292] orr w1, w1, 2 str w1, [x0,292] ldr w1, [x0,288] orr w1, w1, 2 str w1, [x0,288] - b .L481 -.L480: + b .L490 +.L489: ldr w1, [x0,368] orr w1, w1, 2 str w1, [x0,368] ldr w1, [x0,364] orr w1, w1, 2 str w1, [x0,364] -.L481: +.L490: ldr w1, [x0] - tbnz x1, 9, .L482 + tbnz x1, 9, .L491 bl wait_for_nand_flash_ready - b .L479 -.L482: + b .L488 +.L491: mov w1, 1 bl nandc_irq_disable -.L479: +.L488: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -2693,16 +2811,16 @@ flash_erase_duplane_block: ldrb w0, [x0,633] mov w24, w3 cmp w0, w19 - bhi .L485 + bhi .L494 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 523 + mov w2, 588 add x1, x1, 736 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L485: +.L494: add x0, x20, :lo12:.LANCHOR0 add x19, x0, x19, sxtw ldrb w23, [x19,736] @@ -2712,24 +2830,24 @@ flash_erase_duplane_block: add x23, x23, 8 ldr w0, [x0,#:lo12:.LANCHOR2] add x23, x19, x23, lsl 8 - tbz x0, 4, .L486 - adrp x0, .LC41 + tbz x0, 4, .L495 + adrp x0, .LC43 mov w1, w21 - add x0, x0, :lo12:.LC41 + add x0, x0, :lo12:.LC43 mov w2, w22 mov w3, w24 bl printk -.L486: +.L495: bl nandc_wait_flash_ready mov w0, w21 bl nandc_cs mov w0, w21 - cbnz w25, .L487 + cbnz w25, .L496 bl zftl_flash_enter_slc_mode - b .L488 -.L487: + b .L497 +.L496: bl zftl_flash_exit_slc_mode -.L488: +.L497: ubfiz x4, x21, 8, 8 mov w0, 96 add x19, x19, x4 @@ -2743,7 +2861,7 @@ flash_erase_duplane_block: str w0, [x19,2052] ldrb w0, [x20,781] mov w20, 0 - cbnz w0, .L489 + cbnz w0, .L498 mov w0, 208 str w0, [x19,2056] mov w20, 5 @@ -2751,7 +2869,7 @@ flash_erase_duplane_block: mov x0, x23 bl flash_read_status and w20, w0, w20 -.L489: +.L498: mov w0, 96 str w0, [x19,2056] and w0, w24, 255 @@ -2774,12 +2892,12 @@ flash_erase_duplane_block: ldr x2, [x29,88] and w19, w2, w19 orr w19, w19, w20 - cbz w19, .L490 - adrp x0, .LC42 + cbz w19, .L499 + adrp x0, .LC44 mov w1, w22 - add x0, x0, :lo12:.LC42 + add x0, x0, :lo12:.LC44 bl printk -.L490: +.L499: mov w0, w19 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -2806,16 +2924,16 @@ flash_erase_block_en: ldrb w0, [x0,633] and w24, w2, 2097151 cmp w0, w23 - bhi .L499 + bhi .L508 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 568 + mov w2, 633 add x1, x1, 768 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L499: +.L508: add x0, x19, :lo12:.LANCHOR0 add x1, x0, x23, sxtw ldrb w21, [x1,736] @@ -2825,24 +2943,24 @@ flash_erase_block_en: add x21, x21, 8 ldr w0, [x0,#:lo12:.LANCHOR2] add x21, x25, x21, lsl 8 - tbz x0, 4, .L500 - adrp x0, .LC43 + tbz x0, 4, .L509 + adrp x0, .LC45 mov w1, w20 - add x0, x0, :lo12:.LC43 + add x0, x0, :lo12:.LC45 mov w2, w22 mov w3, w26 bl printk -.L500: +.L509: bl nandc_wait_flash_ready mov w0, w20 bl nandc_cs mov w0, w20 - cbnz w26, .L501 + cbnz w26, .L510 bl zftl_flash_enter_slc_mode - b .L502 -.L501: + b .L511 +.L510: bl zftl_flash_exit_slc_mode -.L502: +.L511: ubfiz x3, x20, 8, 8 mov w0, 96 add x3, x25, x3 @@ -2864,16 +2982,16 @@ flash_erase_block_en: bl nandc_de_cs mov w3, 5 ands w20, w21, w3 - beq .L503 + beq .L512 add x19, x19, :lo12:.LANCHOR0 - adrp x0, .LC44 - add x0, x0, :lo12:.LC44 + adrp x0, .LC46 + add x0, x0, :lo12:.LC46 mov w1, w23 mov w3, w20 ldrh w2, [x19,2] udiv w2, w22, w2 bl printk -.L503: +.L512: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -2913,31 +3031,31 @@ flash_erase_all: mov x21, x0 mul w20, w1, w20 uxth w20, w20 -.L512: +.L521: ldrb w0, [x23,633] cmp w0, w19 - bls .L516 + bls .L525 add x0, x23, x19, sxtw ldrb w24, [x0,736] mov w22, 0 -.L513: +.L522: cmp w20, w22, uxth - bls .L517 + bls .L526 add x0, x21, :lo12:.LANCHOR0 ldrh w1, [x0,2] mov w0, w24 mul w1, w22, w1 add w22, w22, 1 bl flash_erase_block - b .L513 -.L517: + b .L522 +.L526: add w19, w19, 1 uxth w19, w19 - b .L512 -.L516: - adrp x0, .LC45 + b .L521 +.L525: + adrp x0, .LC47 mov w1, 0 - add x0, x0, :lo12:.LC45 + add x0, x0, :lo12:.LC47 bl printk ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -2980,7 +3098,7 @@ nandc_xfer_start: cmp w0, 9 ldr x3, [x29,88] ldr x2, [x29,80] - bne .L520 + bne .L529 ldr w0, [x4,292] ubfiz w19, w23, 1, 1 orr w19, w19, 8 @@ -2998,13 +3116,13 @@ nandc_xfer_start: and w19, w19, -17 bfi w19, w20, 22, 6 orr w19, w19, 128 - cbz w0, .L522 + cbz w0, .L531 ldrb w1, [x21,720] orr w0, w19, 512 cmp w1, wzr csel w19, w0, w19, ne - b .L522 -.L520: + b .L531 +.L529: ldr w0, [x4,368] ubfiz w19, w23, 1, 1 orr w19, w19, 8 @@ -3025,7 +3143,7 @@ nandc_xfer_start: orr w19, w19, 1024 and w19, w19, -17 bfi w19, w20, 22, 6 - cbz w23, .L534 + cbz w23, .L543 ldrb w0, [x21,724] ubfx x24, x24, 1, 7 mov w1, 64 @@ -3034,8 +3152,8 @@ nandc_xfer_start: add x24, x3, x24, lsl 2 csel w4, w1, w4, cc mov w1, 0 - b .L527 -.L522: + b .L536 +.L531: add x22, x22, :lo12:.LANCHOR0 and w20, w20, 63 mov x0, x2 @@ -3073,11 +3191,11 @@ nandc_xfer_start: str w19, [x2,16] orr w19, w19, 4 str w19, [x2,16] - b .L519 -.L527: + b .L528 +.L536: cmp x3, x24 add w0, w1, w4 - beq .L529 + beq .L538 ldrh w5, [x3,2] and x1, x1, 4294967292 ldr x6, [x21,680] @@ -3085,11 +3203,11 @@ nandc_xfer_start: orr w5, w7, w5, lsl 16 str w5, [x6,x1] mov w1, w0 - b .L527 -.L534: + b .L536 +.L543: ldr x1, [x21,680] str w0, [x1] -.L529: +.L538: add x22, x22, :lo12:.LANCHOR0 and w20, w20, 63 lsl w1, w20, 10 @@ -3122,7 +3240,7 @@ nandc_xfer_start: str w19, [x3,8] orr w19, w19, 4 str w19, [x3,8] -.L519: +.L528: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -3148,12 +3266,12 @@ nandc_set_seed: ldrb w2, [x0,516] ldr x0, [x0,536] cmp w2, 9 - bne .L537 + bne .L546 str w1, [x0,520] - b .L535 -.L537: + b .L544 +.L546: str w1, [x0,336] -.L535: +.L544: ret .size nandc_set_seed, .-nandc_set_seed .align 2 @@ -3163,30 +3281,37 @@ zftl_flash_de_init: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp,16] - bl nandc_wait_flash_ready adrp x19, .LANCHOR0 + bl nandc_wait_flash_ready + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x19,#:lo12:.LANCHOR0] + cbz w1, .L551 + ldrb w0, [x0,634] + cbnz w0, .L551 + bl zftl_flash_exit_slc_mode +.L551: mov w0, 0 add x20, x19, :lo12:.LANCHOR0 bl hynix_reconfig_rr_para ldrb w0, [x20,672] - cbz w0, .L542 + cbz w0, .L552 ldrb w0, [x20,780] - tbz x0, 0, .L542 + tbz x0, 0, .L552 mov w0, 1 bl flash_set_interface_mode mov w0, 1 bl nandc_set_if_mode strb wzr, [x20,672] -.L542: +.L552: add x19, x19, :lo12:.LANCHOR0 ldrb w0, [x19,720] - cbz w0, .L543 + cbz w0, .L553 mov w0, 0 strb wzr, [x19,720] bl nandc_set_seed mov w0, 1 strb w0, [x19,720] -.L543: +.L553: mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -3224,7 +3349,7 @@ buf_init: add x19, x19, 784 mov w21, 0 mov x22, x0 -.L556: +.L569: add x20, x22, :lo12:.LANCHOR0 uxtb w0, w21 add w1, w0, 1 @@ -3243,7 +3368,7 @@ buf_init: bl ftl_malloc str x0, [x19,-40] cmp w21, 32 - bne .L556 + bne .L569 strb w21, [x20,2834] mov w0, -1 strb wzr, [x20,2833] @@ -3261,7 +3386,7 @@ buf_reinit: mov w2, 0 add x1, x0, :lo12:.LANCHOR0 add x1, x1, 784 -.L559: +.L572: uxtb w3, w2 add w2, w2, 1 add w4, w3, 1 @@ -3271,7 +3396,7 @@ buf_reinit: strb wzr, [x1,2] add x1, x1, 64 str xzr, [x1,-48] - bne .L559 + bne .L572 add x0, x0, :lo12:.LANCHOR0 mov w1, -1 strb wzr, [x0,2833] @@ -3292,10 +3417,10 @@ buf_add_tail: mov x19, x1 ldrb w1, [x20] cmp w1, 255 - bne .L567 + bne .L580 ldrb w0, [x19,1] cmp w0, 255 - bne .L563 + bne .L576 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 @@ -3304,23 +3429,23 @@ buf_add_tail: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L563: +.L576: ldrb w0, [x19,1] strb w0, [x20] - b .L561 -.L567: + b .L574 +.L580: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x0, x0, 784 -.L568: +.L581: mov w20, w1 sbfiz x1, x1, 6, 32 ldrb w1, [x0,x1] cmp w1, 255 - bne .L568 + bne .L581 ldrb w0, [x19,1] cmp w0, 255 - bne .L565 + bne .L578 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 @@ -3329,14 +3454,14 @@ buf_add_tail: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L565: +.L578: adrp x0, .LANCHOR0 sbfiz x20, x20, 6, 32 add x0, x0, :lo12:.LANCHOR0 ldrb w1, [x19,1] add x0, x0, 784 strb w1, [x0,x20] -.L561: +.L574: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -3377,22 +3502,22 @@ buf_free: and w1, w1, 8 uxtb w1, w1 strb w1, [x0,2] - cbz w1, .L571 + cbz w1, .L584 ldr w1, [x0,36] cmn w1, #1 - beq .L571 + beq .L584 mov x1, x0 add x0, x19, :lo12:.LANCHOR0 add x0, x0, 2833 bl buf_add_tail - b .L572 -.L571: + b .L585 +.L584: add x1, x19, :lo12:.LANCHOR0 ldrb w2, [x1,2833] strb w2, [x0] ldrb w0, [x0,1] strb w0, [x1,2833] -.L572: +.L585: add x19, x19, :lo12:.LANCHOR0 ldrb w0, [x19,2834] add w0, w0, 1 @@ -3414,15 +3539,15 @@ buf_alloc: uxtb w21, w0 mov x19, x1 ldrb w0, [x20,2834] - cbz w0, .L580 -.L583: + cbz w0, .L593 +.L596: add x1, x19, :lo12:.LANCHOR0 add x0, x1, 784 ldrb w2, [x1,2833] add x0, x0, x2, lsl 6 - cbz w21, .L581 - b .L582 -.L580: + cbz w21, .L594 + b .L595 +.L593: adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 @@ -3432,15 +3557,15 @@ buf_alloc: bl printk bl dump_stack ldrb w1, [x20,2834] - cbnz w1, .L583 -.L585: + cbnz w1, .L596 +.L598: mov x0, 0 - b .L584 -.L581: + b .L597 +.L594: ldrb w1, [x1,2834] cmp w1, 1 - beq .L585 -.L582: + beq .L598 +.L595: add x1, x19, :lo12:.LANCHOR0 lsl x2, x2, 6 add x4, x1, 784 @@ -3460,7 +3585,7 @@ buf_alloc: strb wzr, [x3,56] str w1, [x3,36] strb wzr, [x3,57] -.L584: +.L597: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -3473,33 +3598,33 @@ buf_remove_buf: ldrb w4, [x1,1] ldrb w2, [x0] cmp w4, w2 - bne .L592 + bne .L605 ldrb w1, [x1] strb w1, [x0] - b .L596 -.L592: + b .L609 +.L605: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x0, x0, 784 -.L594: +.L607: cmp w2, 255 - beq .L597 + beq .L610 mov w3, w2 sbfiz x2, x2, 6, 32 ldrb w2, [x0,x2] cmp w2, w4 - bne .L594 + bne .L607 sbfiz x3, x3, 6, 32 ldrb w2, [x1] strb w2, [x0,x3] mov w0, -1 strb w0, [x1] -.L596: +.L609: mov w0, 1 - b .L591 -.L597: + b .L604 +.L610: mov w0, 0 -.L591: +.L604: ret .size buf_remove_buf, .-buf_remove_buf .align 2 @@ -3513,7 +3638,7 @@ buf_remove_free: mov x20, x0 add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2834] - cbnz w0, .L599 + cbnz w0, .L612 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 @@ -3522,22 +3647,22 @@ buf_remove_free: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L599: +.L612: add x19, x19, :lo12:.LANCHOR0 ldrb w0, [x19,2834] - cbz w0, .L598 + cbz w0, .L611 add x0, x19, 2833 mov x1, x20 bl buf_remove_buf cmp w0, 1 - bne .L598 + bne .L611 ldrb w0, [x19,2834] sub w0, w0, #1 strb w0, [x19,2834] ldrb w0, [x20,2] orr w0, w0, 1 strb w0, [x20,2] -.L598: +.L611: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -3586,8 +3711,8 @@ flash_mask_bad_block: mov w2, w21 ldrh w20, [x3,22] mul w20, w0, w20 - adrp x0, .LC46 - add x0, x0, :lo12:.LC46 + adrp x0, .LC48 + add x0, x0, :lo12:.LC48 uxth w20, w20 add w20, w20, 31 bl printk @@ -3617,49 +3742,49 @@ flash_mask_bad_block: str2hex: ldrb w1, [x0] cmp w1, 48 - bne .L606 + bne .L619 ldrb w1, [x0,1] add x2, x0, 2 and w1, w1, -33 uxtb w1, w1 cmp w1, 88 csel x0, x0, x2, ne -.L606: +.L619: ldrb w1, [x0] and w1, w1, -33 uxtb w1, w1 cmp w1, 88 mov w1, 0 csinc x0, x0, x0, ne -.L608: +.L621: ldrb w2, [x0] - cbz w2, .L615 + cbz w2, .L628 sub w3, w2, #48 uxtb w3, w3 cmp w3, 9 - bhi .L609 + bhi .L622 add w1, w2, w1, lsl 4 sub w1, w1, #48 - b .L610 -.L609: + b .L623 +.L622: sub w3, w2, #97 uxtb w3, w3 cmp w3, 5 - bhi .L611 + bhi .L624 add w1, w2, w1, lsl 4 sub w1, w1, #87 - b .L610 -.L611: + b .L623 +.L624: sub w3, w2, #65 uxtb w3, w3 cmp w3, 5 - bhi .L615 + bhi .L628 add w1, w2, w1, lsl 4 sub w1, w1, #55 -.L610: +.L623: add x0, x0, 1 - b .L608 -.L615: + b .L621 +.L628: mov w0, w1 ret .size str2hex, .-str2hex @@ -3670,13 +3795,13 @@ zftl_proc_debug_init: stp x29, x30, [sp, -16]! adrp x3, .LANCHOR1 mov x2, 0 - adrp x0, .LC47 + adrp x0, .LC49 add x3, x3, :lo12:.LANCHOR1 add x29, sp, 0 mov w1, 292 add x3, x3, 1096 mov x4, x2 - add x0, x0, :lo12:.LC47 + add x0, x0, :lo12:.LC49 bl proc_create_data ldp x29, x30, [sp], 16 ret @@ -3698,11 +3823,11 @@ ftl_print_info_to_buf: adrp x7, .LANCHOR2 adrp x22, .LANCHOR0 add x7, x7, :lo12:.LANCHOR2 - adrp x1, .LC48 + adrp x1, .LC50 add x7, x7, 8 add x21, x22, :lo12:.LANCHOR0 add x19, x20, x0, sxtw - add x1, x1, :lo12:.LC48 + add x1, x1, :lo12:.LC50 ldrb w5, [x7,4] mov x0, x19 ldrb w6, [x7,5] @@ -3713,105 +3838,105 @@ ftl_print_info_to_buf: bl sprintf add x19, x19, x0, sxtw ldr w2, [x21,520] - adrp x1, .LC49 + adrp x1, .LC51 mov x0, x19 - add x1, x1, :lo12:.LC49 + add x1, x1, :lo12:.LC51 lsr w2, w2, 11 bl sprintf add x19, x19, x0, sxtw ldr w2, [x21,2836] - adrp x1, .LC50 - mov x0, x19 - add x1, x1, :lo12:.LC50 - lsr w2, w2, 11 - bl sprintf - add x19, x19, x0, sxtw - adrp x1, .LC51 - mov x0, x19 - add x1, x1, :lo12:.LC51 - add x19, x19, 10 - bl strcpy - ldr w2, [x21,2840] adrp x1, .LC52 mov x0, x19 add x1, x1, :lo12:.LC52 + lsr w2, w2, 11 bl sprintf add x19, x19, x0, sxtw - ldr w2, [x21,520] adrp x1, .LC53 mov x0, x19 add x1, x1, :lo12:.LC53 - bl sprintf - add x19, x19, x0, sxtw - ldr x2, [x21,608] + add x19, x19, 10 + bl strcpy + ldr w2, [x21,2840] adrp x1, .LC54 mov x0, x19 add x1, x1, :lo12:.LC54 + bl sprintf + add x19, x19, x0, sxtw + ldr w2, [x21,520] + adrp x1, .LC55 + mov x0, x19 + add x1, x1, :lo12:.LC55 + bl sprintf + add x19, x19, x0, sxtw + ldr x2, [x21,608] + adrp x1, .LC56 + mov x0, x19 + add x1, x1, :lo12:.LC56 ldr w2, [x2,524] bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,608] - adrp x1, .LC55 + adrp x1, .LC57 mov x0, x19 - add x1, x1, :lo12:.LC55 + add x1, x1, :lo12:.LC57 ldr w2, [x2,528] bl sprintf add x19, x19, x0, sxtw ldrh w2, [x21,2844] - adrp x1, .LC56 - mov x0, x19 - add x1, x1, :lo12:.LC56 - bl sprintf - add x19, x19, x0, sxtw - ldrh w2, [x21,2846] - adrp x1, .LC57 - mov x0, x19 - add x1, x1, :lo12:.LC57 - bl sprintf - add x19, x19, x0, sxtw - ldrh w2, [x21,2848] adrp x1, .LC58 mov x0, x19 add x1, x1, :lo12:.LC58 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x21,2850] + ldrh w2, [x21,2846] adrp x1, .LC59 mov x0, x19 add x1, x1, :lo12:.LC59 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x21,2852] + ldrh w2, [x21,2848] adrp x1, .LC60 mov x0, x19 add x1, x1, :lo12:.LC60 bl sprintf add x19, x19, x0, sxtw - ldrh w2, [x21,2854] + ldrh w2, [x21,2850] adrp x1, .LC61 mov x0, x19 add x1, x1, :lo12:.LC61 bl sprintf add x19, x19, x0, sxtw - ldrb w4, [x21,2857] + ldrh w2, [x21,2852] adrp x1, .LC62 - ldrb w2, [x21,2834] mov x0, x19 - ldrb w3, [x21,2856] add x1, x1, :lo12:.LC62 bl sprintf add x19, x19, x0, sxtw - ldr x3, [x21,2864] + ldrh w2, [x21,2854] adrp x1, .LC63 mov x0, x19 add x1, x1, :lo12:.LC63 + bl sprintf + add x19, x19, x0, sxtw + ldrb w4, [x21,2857] + adrp x1, .LC64 + ldrb w2, [x21,2834] + mov x0, x19 + ldrb w3, [x21,2856] + add x1, x1, :lo12:.LC64 + bl sprintf + add x19, x19, x0, sxtw + ldr x3, [x21,2864] + adrp x1, .LC65 + mov x0, x19 + add x1, x1, :lo12:.LC65 ldrh w2, [x3,148] ldrh w3, [x3,146] bl sprintf add x19, x19, x0, sxtw ldr x0, [x21,2864] - adrp x1, .LC64 - add x1, x1, :lo12:.LC64 + adrp x1, .LC66 + add x1, x1, :lo12:.LC66 ldr w3, [x0,16] ldr w2, [x0,20] mov x0, x19 @@ -3819,8 +3944,8 @@ ftl_print_info_to_buf: bl sprintf add x19, x19, x0, sxtw ldr x0, [x21,2864] - adrp x1, .LC65 - add x1, x1, :lo12:.LC65 + adrp x1, .LC67 + add x1, x1, :lo12:.LC67 ldr w3, [x0,24] ldr w2, [x0,28] mov x0, x19 @@ -3828,107 +3953,107 @@ ftl_print_info_to_buf: bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,2864] - adrp x1, .LC66 + adrp x1, .LC68 mov x0, x19 - add x1, x1, :lo12:.LC66 + add x1, x1, :lo12:.LC68 ldr w2, [x2,64] bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,2864] - adrp x1, .LC67 + adrp x1, .LC69 mov x0, x19 - add x1, x1, :lo12:.LC67 + add x1, x1, :lo12:.LC69 ldr w2, [x2,68] bl sprintf add x19, x19, x0, sxtw ldr x0, [x21,608] mov w2, 10 - adrp x1, .LC68 - add x1, x1, :lo12:.LC68 + adrp x1, .LC70 + add x1, x1, :lo12:.LC70 ldr w3, [x0,12] mov x0, x19 udiv w2, w3, w2 bl sprintf add x19, x19, x0, sxtw ldrb w2, [x22,#:lo12:.LANCHOR0] - adrp x1, .LC69 + adrp x1, .LC71 mov x0, x19 - add x1, x1, :lo12:.LC69 + add x1, x1, :lo12:.LC71 bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,608] - adrp x1, .LC70 + adrp x1, .LC72 mov x0, x19 - add x1, x1, :lo12:.LC70 + add x1, x1, :lo12:.LC72 ldr w2, [x2,556] bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,608] - adrp x1, .LC71 - mov x0, x19 - add x1, x1, :lo12:.LC71 - ldr w2, [x2,552] - bl sprintf - add x19, x19, x0, sxtw - ldr x2, [x21,2864] - adrp x1, .LC72 - mov x0, x19 - add x1, x1, :lo12:.LC72 - ldr w2, [x2,52] - bl sprintf - add x19, x19, x0, sxtw - ldr x2, [x21,2864] adrp x1, .LC73 mov x0, x19 add x1, x1, :lo12:.LC73 - ldr w2, [x2,60] + ldr w2, [x2,552] bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,2864] adrp x1, .LC74 mov x0, x19 add x1, x1, :lo12:.LC74 - ldr w2, [x2,76] + ldr w2, [x2,52] bl sprintf add x19, x19, x0, sxtw ldr x2, [x21,2864] adrp x1, .LC75 mov x0, x19 add x1, x1, :lo12:.LC75 - ldr w2, [x2,8] + ldr w2, [x2,60] bl sprintf add x19, x19, x0, sxtw - ldr x4, [x21,608] + ldr x2, [x21,2864] adrp x1, .LC76 mov x0, x19 add x1, x1, :lo12:.LC76 - ldrh w2, [x4,16] - ldrh w3, [x4,22] - ldrb w4, [x4,25] + ldr w2, [x2,76] bl sprintf add x19, x19, x0, sxtw - ldr x4, [x21,608] + ldr x2, [x21,2864] adrp x1, .LC77 mov x0, x19 add x1, x1, :lo12:.LC77 - ldrh w2, [x4,48] - ldrh w3, [x4,54] - ldrb w4, [x4,57] + ldr w2, [x2,8] bl sprintf add x19, x19, x0, sxtw ldr x4, [x21,608] adrp x1, .LC78 mov x0, x19 add x1, x1, :lo12:.LC78 + ldrh w2, [x4,16] + ldrh w3, [x4,22] + ldrb w4, [x4,25] + bl sprintf + add x19, x19, x0, sxtw + ldr x4, [x21,608] + adrp x1, .LC79 + mov x0, x19 + add x1, x1, :lo12:.LC79 + ldrh w2, [x4,48] + ldrh w3, [x4,54] + ldrb w4, [x4,57] + bl sprintf + add x19, x19, x0, sxtw + ldr x4, [x21,608] + adrp x1, .LC80 + mov x0, x19 + add x1, x1, :lo12:.LC80 ldrh w2, [x4,80] ldrh w3, [x4,86] ldrb w4, [x4,89] bl sprintf add x19, x19, x0, sxtw ldr x6, [x21,2864] - adrp x1, .LC79 + adrp x1, .LC81 mov x0, x19 - add x1, x1, :lo12:.LC79 + add x1, x1, :lo12:.LC81 ldrh w2, [x6,74] ldr w3, [x6,84] ldrh w4, [x6,88] @@ -3937,9 +4062,9 @@ ftl_print_info_to_buf: bl sprintf add x19, x19, x0, sxtw ldr x6, [x21,2864] - adrp x1, .LC80 + adrp x1, .LC82 mov x0, x19 - add x1, x1, :lo12:.LC80 + add x1, x1, :lo12:.LC82 ldr w3, [x6,80] ldrh w4, [x6,90] ldrh w5, [x6,94] @@ -3948,30 +4073,42 @@ ftl_print_info_to_buf: bl sprintf add x19, x19, x0, sxtw ldrh w2, [x21,2872] - adrp x1, .LC81 + adrp x1, .LC83 mov x0, x19 - add x1, x1, :lo12:.LC81 + add x1, x1, :lo12:.LC83 bl sprintf add x19, x19, x0, sxtw ldr w6, [x21,2884] - adrp x1, .LC82 + adrp x1, .LC84 ldrh w2, [x21,2874] mov x0, x19 ldrh w3, [x21,2876] - add x1, x1, :lo12:.LC82 + add x1, x1, :lo12:.LC84 ldrh w4, [x21,2878] ldrh w5, [x21,2880] bl sprintf add x19, x19, x0, sxtw ldr x5, [x21,608] - adrp x1, .LC83 + adrp x1, .LC85 mov x0, x19 - add x1, x1, :lo12:.LC83 + add x1, x1, :lo12:.LC85 ldrh w2, [x5,584] ldrh w3, [x5,586] ldrh w4, [x5,588] ldrh w5, [x5,590] bl sprintf + add x19, x19, x0, sxtw + ldr x6, [x21,608] + adrp x1, .LC86 + ldr x5, [x21,2864] + mov x0, x19 + add x1, x1, :lo12:.LC86 + ldr w2, [x6,536] + ldr w3, [x6,540] + ldr w4, [x6,544] + ldr w5, [x5,44] + ldr w6, [x6,548] + bl sprintf add x0, x19, x0, sxtw ldp x21, x22, [sp,32] sub w0, w0, w20 @@ -4041,16 +4178,16 @@ gc_add_sblk: uxth w20, w2 ldrh w0, [x0,576] cmp w0, w21 - bhi .L623 + bhi .L636 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 259 + mov w2, 338 add x1, x1, 1312 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L623: +.L636: add x6, x22, :lo12:.LANCHOR0 uxtw x19, w21 lsl x25, x19, 1 @@ -4058,7 +4195,7 @@ gc_add_sblk: ldr x0, [x6,600] ldrh w26, [x0,x25] ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 8, .L624 + tbz x0, 8, .L637 ldr x0, [x6,584] mov w1, w21 ldrh w5, [x6,2952] @@ -4067,137 +4204,137 @@ gc_add_sblk: ldrh w6, [x6,2878] mov w4, w26 ldrb w3, [x0,2] - adrp x0, .LC84 - add x0, x0, :lo12:.LC84 + adrp x0, .LC87 + add x0, x0, :lo12:.LC87 ubfx x3, x3, 5, 3 bl printk -.L624: +.L637: add x3, x22, :lo12:.LANCHOR0 ldr x0, [x3,584] add x0, x0, x19, lsl 2 ldrb w19, [x0,2] ands w19, w19, 224 - bne .L625 - cbz w26, .L626 + bne .L638 + cbz w26, .L639 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 264 + mov w2, 343 add x1, x1, 1312 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L626 -.L625: + b .L639 +.L638: ldrh w1, [x3,2896] add x6, x3, 2896 mov w19, 0 cmp w1, w21 - beq .L626 + beq .L639 ldr x3, [x3,608] ldrh w1, [x3,48] cmp w1, w21 - beq .L626 + beq .L639 ldrh w1, [x3,16] cmp w1, w21 - beq .L626 + beq .L639 ldrh w1, [x3,80] cmp w1, w21 - beq .L626 + beq .L639 ldrh w5, [x6,56] mov x4, 0 -.L627: +.L640: cmp w5, w4 - bls .L658 + bls .L671 add x4, x4, 1 add x1, x6, x4, lsl 1 ldrh w1, [x1,56] cmp w1, w21 - bne .L627 + bne .L640 mov w19, 0 - b .L626 -.L658: - cbnz w23, .L629 + b .L639 +.L671: + cbnz w23, .L642 add x4, x22, :lo12:.LANCHOR0 mov w19, w23 - ldrh w7, [x4,3224] + ldrh w7, [x4,3240] cmp w7, w21 - beq .L626 + beq .L639 mov x6, 0 -.L631: - add x1, x4, 3232 +.L644: + add x1, x4, 3248 ldrh w1, [x6,x1] cmp w21, w1 - bne .L630 + bne .L643 ldr w1, [x24,#:lo12:.LANCHOR2] mov w19, 0 - tbz x1, 8, .L626 + tbz x1, 8, .L639 ldr x3, [x4,600] mov w1, w21 ldrb w2, [x0,2] - adrp x0, .LC85 + adrp x0, .LC88 mov w4, w21 mov w5, w7 ldrh w3, [x3,x25] ubfx x2, x2, 5, 3 - add x0, x0, :lo12:.LC85 + add x0, x0, :lo12:.LC88 bl printk - b .L626 -.L630: + b .L639 +.L643: add x6, x6, 2 cmp x6, 16 - bne .L631 + bne .L644 sxtw x4, w20 add x3, x3, x4, lsl 7 add x19, x3, 136 - b .L633 -.L629: + b .L646 +.L642: add x19, x3, 392 -.L633: +.L646: ldr w1, [x24,#:lo12:.LANCHOR2] - tbz x1, 8, .L634 + tbz x1, 8, .L647 add x6, x22, :lo12:.LANCHOR0 ldrb w3, [x0,2] - adrp x0, .LC84 + adrp x0, .LC87 mov w1, w21 - add x0, x0, :lo12:.LC84 + add x0, x0, :lo12:.LC87 mov w2, w23 ldr x4, [x6,600] ubfx x3, x3, 5, 3 ldrh w6, [x6,2878] ldrh w4, [x4,x25] bl printk -.L634: +.L647: mov x3, x19 add x0, x19, 128 mov w1, 65535 -.L637: +.L650: ldrh w2, [x3] cmp w2, w1 - bne .L635 + bne .L648 strh w21, [x3] add x22, x22, :lo12:.LANCHOR0 - cbz w23, .L636 + cbz w23, .L649 ldr x1, [x22,608] ldrh w0, [x1,124] add w0, w0, 1 strh w0, [x1,124] - b .L657 -.L636: + b .L670 +.L649: ldr x0, [x22,608] add x2, x0, x20, uxth 1 ldrh w0, [x2,120] add w0, w0, 1 strh w0, [x2,120] -.L657: +.L670: mov w19, 1 - b .L626 -.L635: + b .L639 +.L648: add x3, x3, 2 cmp x3, x0 - bne .L637 - b .L657 -.L626: + bne .L650 + b .L670 +.L639: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4207,12 +4344,75 @@ gc_add_sblk: ret .size gc_add_sblk, .-gc_add_sblk .align 2 + .global gc_mark_bad_ppa + .type gc_mark_bad_ppa, %function +gc_mark_bad_ppa: + stp x29, x30, [sp, -64]! + mov w1, 21 + mov w3, w0 + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x20, .LANCHOR0 + str x23, [sp,48] + stp x21, x22, [sp,32] + add x21, x20, :lo12:.LANCHOR0 + mov w23, 1 + add x21, x21, 2896 + ldrh w19, [x21,368] + lsr w2, w0, w19 + sub w19, w1, w19 + lsl w19, w23, w19 + ldrb w0, [x21,370] + sub w19, w19, #1 + uxth w22, w2 + and w19, w19, w2 + mov w2, w22 + ldr w1, [x21,328] + udiv w19, w19, w0 + adrp x0, .LC89 + add x0, x0, :lo12:.LC89 + bl printk + mov w1, w23 + mov w2, 0 + uxth w19, w19 + mov w0, w19 + bl gc_add_sblk + ldr w0, [x21,328] + mov w1, 0 +.L673: + cmp w1, w0 + bcs .L676 + add x2, x21, x1, sxtw 1 + ldrh w2, [x2,332] + cmp w2, w22 + beq .L674 + add w1, w1, 1 + uxth w1, w1 + b .L673 +.L676: + cmp w0, 5 + bhi .L674 + add x20, x20, :lo12:.LANCHOR0 + add w1, w0, 1 + add x20, x20, 2896 + str w1, [x20,328] + add x20, x20, x0, uxtw 1 + strh w22, [x20,332] +.L674: + mov w0, 0 + ldr x23, [sp,48] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 64 + ret + .size gc_mark_bad_ppa, .-gc_mark_bad_ppa + .align 2 .global gc_get_src_ppa_from_index .type gc_get_src_ppa_from_index, %function gc_get_src_ppa_from_index: - adrp x1, .LANCHOR0+3248 + adrp x1, .LANCHOR0+3272 ubfiz x0, x0, 2, 16 - ldr x1, [x1,#:lo12:.LANCHOR0+3248] + ldr x1, [x1,#:lo12:.LANCHOR0+3272] ldr w0, [x1,x0] ret .size gc_get_src_ppa_from_index, .-gc_get_src_ppa_from_index @@ -4231,98 +4431,114 @@ gc_write_completed: stp x19, x20, [sp,16] stp x25, x26, [sp,64] str x27, [sp,80] - add x23, x21, 784 + add x24, x21, 784 add x22, x22, 1328 -.L661: - ldrb w0, [x21,3256] +.L679: + ldrb w0, [x21,3280] adrp x19, .LANCHOR0 cmp w0, 255 - beq .L683 + beq .L709 sxtw x25, w0 lsl x0, x25, 6 - add x2, x23, x0 - ldrb w0, [x23,x0] + add x2, x24, x0 + ldrb w0, [x24,x0] ldr w1, [x2,52] - strb w0, [x21,3256] - ldrh w24, [x2,48] - cbz w1, .L662 + strb w0, [x21,3280] + ldrh w23, [x2,48] + cbz w1, .L680 ldr w2, [x2,40] - adrp x0, .LC86 + adrp x0, .LC90 mov w3, 1 - add x0, x0, :lo12:.LC86 + add x0, x0, :lo12:.LC90 strh w3, [x21,3216] str w2, [x21,3220] bl printk adrp x0, .LC0 mov x1, x22 - mov w2, 545 + mov w2, 672 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L662: - add x0, x19, :lo12:.LANCHOR0 - mov w20, 1 - ldrb w1, [x0,3257] - cmp w1, 3 - bne .L663 - ldr x0, [x0,608] +.L680: + add x1, x19, :lo12:.LANCHOR0 + ldrb w0, [x1,3281] + cmp w0, 3 + bne .L681 + ldr x0, [x1,608] ldrb w20, [x0,89] add w20, w20, w20, lsl 1 and w20, w20, 1023 -.L663: + b .L682 +.L681: + ldrb w0, [x1,3282] + mov w20, 1 + cbz w0, .L682 + ldrb w0, [x1,3283] + cbz w0, .L682 + ldr x0, [x1,608] + ldrb w20, [x0,89] + ubfiz w20, w20, 1, 8 +.L682: adrp x0, .LANCHOR2 - uxth x26, w24 + uxth x26, w23 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L664 + tbz x0, 8, .L683 add x0, x19, :lo12:.LANCHOR0 - mov w1, w24 + mov w1, w23 add x2, x0, x25, lsl 6 - mov w3, w24 - ldr x4, [x0,3264] - adrp x0, .LC87 + mov w3, w23 + ldr x4, [x0,3288] + adrp x0, .LC91 ldrb w2, [x2,785] - add x0, x0, :lo12:.LC87 + add x0, x0, :lo12:.LC91 ldrb w4, [x4,x26] bl printk -.L664: +.L683: add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x0,3264] + ldr x1, [x0,3288] add x0, x0, x25, lsl 6 ldrb w1, [x1,x26] ldrb w0, [x0,785] cmp w1, w0 - beq .L665 + beq .L684 adrp x0, .LC0 mov x1, x22 - mov w2, 552 + mov w2, 681 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L665: - add x2, x19, :lo12:.LANCHOR0 - add x1, x2, 784 +.L684: + add x1, x19, :lo12:.LANCHOR0 add x0, x1, x25, lsl 6 - ldrb w0, [x0,61] + ldrb w0, [x0,845] cmp w0, 3 - beq .L666 - ldrb w0, [x2,3257] + beq .L685 + ldrb w0, [x1,3281] cmp w0, 3 - bne .L666 - ldrb w0, [x2,3272] - cbnz w0, .L666 - ldr x3, [x2,3264] - b .L667 -.L666: + bne .L685 + ldrb w0, [x1,3296] + cbnz w0, .L685 + ldrb w0, [x1,3282] + cbz w0, .L686 + ldrb w0, [x1,3283] + cbnz w0, .L685 +.L686: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 0 + add x19, x19, 784 + ldr x2, [x19,2504] + b .L687 +.L685: add x19, x19, :lo12:.LANCHOR0 mov w25, 0 mov w26, -1 add x27, x19, 784 - strh w24, [x19,3212] -.L668: + strh w23, [x19,3212] +.L688: cmp w20, w25, uxth - bls .L661 - add w1, w25, w24 - ldr x2, [x19,3264] + bls .L679 + add w1, w25, w23 + ldr x2, [x19,3288] add w25, w25, 1 ldrb w0, [x2,x1] strb w26, [x2,x1] @@ -4333,17 +4549,17 @@ gc_write_completed: ldrb w0, [x19,2903] sub w0, w0, #1 strb w0, [x19,2903] - b .L668 -.L667: + b .L688 +.L687: cmp w20, w0, uxth - bls .L661 - add w2, w0, w24 + bls .L679 + add w1, w0, w23 add w0, w0, 1 - ldrb w2, [x3,x2] - add x2, x1, x2, lsl 6 - strb wzr, [x2,61] - b .L667 -.L683: + ldrb w1, [x2,x1] + add x1, x19, x1, lsl 6 + strb wzr, [x1,61] + b .L687 +.L709: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -4359,50 +4575,50 @@ gc_get_src_blk: adrp x3, .LANCHOR0 add x0, x3, :lo12:.LANCHOR0 ldr x1, [x0,608] - ldrb w0, [x0,3273] + ldrb w0, [x0,3297] ldrh w4, [x1,124] - cbz w4, .L685 + cbz w4, .L711 add x1, x1, 392 mov w2, 1 - b .L686 -.L685: + b .L712 +.L711: sxtw x2, w0 add x0, x1, x2, lsl 1 ldrh w5, [x0,120] mov w0, 65535 - cbz w5, .L687 + cbz w5, .L713 add x1, x1, x2, lsl 7 mov w2, w4 add x1, x1, 136 -.L686: +.L712: add x4, x1, 128 mov w5, 65535 -.L690: +.L716: ldrh w0, [x1] cmp w0, w5 - beq .L688 + beq .L714 mov w4, -1 strh w4, [x1] add x3, x3, :lo12:.LANCHOR0 - cbz w2, .L689 + cbz w2, .L715 ldr x2, [x3,608] ldrh w1, [x2,124] sub w1, w1, #1 strh w1, [x2,124] - b .L687 -.L689: - ldrb w1, [x3,3273] + b .L713 +.L715: + ldrb w1, [x3,3297] ldr x2, [x3,608] add x1, x2, x1, lsl 1 ldrh w2, [x1,120] sub w2, w2, #1 strh w2, [x1,120] - b .L687 -.L688: + b .L713 +.L714: add x1, x1, 2 cmp x1, x4 - bne .L690 -.L687: + bne .L716 +.L713: ret .size gc_get_src_blk, .-gc_get_src_blk .align 2 @@ -4417,58 +4633,58 @@ gc_free_temp_buf: str x21, [sp,32] add x2, x19, :lo12:.LANCHOR0 ldrb w3, [x2,2903] - cbz w3, .L695 + cbz w3, .L721 ldrb w3, [x2,2834] cmp w3, 1 - bhi .L695 - ldrh w4, [x2,3274] + bhi .L721 + ldrh w4, [x2,3298] mov x20, x2 - ldrb w0, [x2,3276] + ldrb w0, [x2,3300] add x2, x2, 784 ldrh w1, [x2,2428] mul w0, w4, w0 add w3, w1, 24 - ldr x4, [x2,2480] + ldr x4, [x2,2504] cmp w0, w3 csel w3, w0, w3, ls -.L696: +.L722: cmp w1, w3 - bcs .L709 + bcs .L735 uxtw x21, w1 ldrb w0, [x4,x21] cmp w0, 255 - beq .L697 + beq .L723 sbfiz x0, x0, 6, 32 add x0, x2, x0 ldrb w5, [x0,61] - cbnz w5, .L697 + cbnz w5, .L723 str x1, [x29,56] bl buf_free adrp x0, .LANCHOR2 ldr x1, [x29,56] ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L698 - ldr x2, [x20,3264] - adrp x0, .LC88 - add x0, x0, :lo12:.LC88 + tbz x0, 8, .L724 + ldr x2, [x20,3288] + adrp x0, .LC92 + add x0, x0, :lo12:.LC92 ldrb w2, [x2,x21] bl printk -.L698: +.L724: add x19, x19, :lo12:.LANCHOR0 mov w1, -1 - ldr x0, [x19,3264] + ldr x0, [x19,3288] strb w1, [x0,x21] ldrb w0, [x19,2903] sub w0, w0, #1 strb w0, [x19,2903] mov w0, 1 - b .L695 -.L697: + b .L721 +.L723: add w1, w1, 1 - b .L696 -.L709: + b .L722 +.L735: mov w0, 0 -.L695: +.L721: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 64 @@ -4479,9 +4695,9 @@ gc_free_temp_buf: .type print_gc_debug_info, %function print_gc_debug_info: adrp x6, .LANCHOR0 - adrp x0, .LC89 + adrp x0, .LC93 add x6, x6, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC89 + add x0, x0, :lo12:.LC93 stp x29, x30, [sp, -16]! add x29, sp, 0 ldrh w1, [x6,2896] @@ -4503,23 +4719,23 @@ zftl_get_gc_node: uxth w2, w0 cmp w1, 5 add x29, sp, 0 - bne .L712 - adrp x0, .LANCHOR0+3280 - ldr x0, [x0,#:lo12:.LANCHOR0+3280] - b .L715 -.L712: + bne .L738 + adrp x0, .LANCHOR0+3304 + ldr x0, [x0,#:lo12:.LANCHOR0+3304] + b .L741 +.L738: cmp w1, 2 - bne .L714 + bne .L740 mov w0, w2 bl zftl_get_gc_node.part.12 - b .L716 -.L714: - adrp x0, .LANCHOR0+3288 - ldr x0, [x0,#:lo12:.LANCHOR0+3288] -.L715: + b .L742 +.L740: + adrp x0, .LANCHOR0+3312 + ldr x0, [x0,#:lo12:.LANCHOR0+3312] +.L741: mov w1, w2 bl _list_get_gc_head_node.isra.5 -.L716: +.L742: uxth w0, w0 ldp x29, x30, [sp], 16 ret @@ -4543,23 +4759,23 @@ gc_search_src_blk: ldr x1, [x0,608] add x1, x1, x21, sxtw 1 ldrh w19, [x1,120] - cbnz w19, .L764 - cbnz w21, .L720 - adrp x26, .LC90 - strh w21, [x0,3296] + cbnz w19, .L790 + cbnz w21, .L746 + adrp x26, .LC94 + strh w21, [x0,3320] mov w19, w21 mov w25, w21 uxth w23, w22 mov w27, 65535 adrp x28, .LANCHOR2 - add x26, x26, :lo12:.LC90 -.L721: + add x26, x26, :lo12:.LC94 +.L747: cmp w25, w23 - bcs .L726 + bcs .L752 add x3, x20, :lo12:.LANCHOR0 mov w1, 3 str x3, [x29,96] - ldrh w2, [x3,3296] + ldrh w2, [x3,3320] str x2, [x29,104] mov w0, w2 bl zftl_get_gc_node @@ -4570,11 +4786,11 @@ gc_search_src_blk: mov w4, w1 add w2, w2, 1 uxth w2, w2 - strh w2, [x3,3296] - beq .L722 + strh w2, [x3,3320] + beq .L748 ldr w0, [x28,#:lo12:.LANCHOR2] uxtw x5, w1 - tbz x0, 8, .L723 + tbz x0, 8, .L749 ldr x3, [x3,600] mov x0, x26 str x4, [x29,96] @@ -4583,232 +4799,232 @@ gc_search_src_blk: bl printk ldr x4, [x29,96] ldr x5, [x29,104] -.L723: +.L749: add x1, x20, :lo12:.LANCHOR0 ldr x0, [x1,600] ldrh w2, [x0,x5,lsl 1] ldrh w0, [x1,2878] cmp w2, w0 - bcs .L724 + bcs .L750 mov w1, 0 mov w0, w4 mov w2, w1 bl gc_add_sblk - cbz w0, .L725 + cbz w0, .L751 add w19, w19, 1 uxth w19, w19 cmp w19, w23 - bls .L725 - b .L726 -.L724: - strh wzr, [x1,3296] - b .L726 -.L722: - strh wzr, [x3,3296] - b .L726 -.L725: + bls .L751 + b .L752 +.L750: + strh wzr, [x1,3320] + b .L752 +.L748: + strh wzr, [x3,3320] + b .L752 +.L751: add w25, w25, 1 uxth w25, w25 - b .L721 -.L726: - tbz x24, 1, .L728 + b .L747 +.L752: + tbz x24, 1, .L754 mov w26, 0 mov w27, 65535 -.L729: +.L755: cmp w26, w23 - beq .L733 + beq .L759 add x25, x20, :lo12:.LANCHOR0 mov w1, 5 - ldrh w28, [x25,3298] + ldrh w28, [x25,3322] mov w0, w28 add w28, w28, 1 bl zftl_get_gc_node uxth w1, w0 - strh w28, [x25,3298] + strh w28, [x25,3322] cmp w1, w27 - beq .L730 + beq .L756 ubfiz x1, x1, 1, 16 ldr x2, [x25,600] ldrh w2, [x2,x1] ldrh w1, [x25,2880] cmp w2, w1 - bcs .L730 + bcs .L756 mov w1, 0 mov w2, w1 bl gc_add_sblk - cbz w0, .L732 + cbz w0, .L758 add w19, w19, 1 uxth w19, w19 cmp w19, w23 - bls .L732 - b .L735 -.L730: - strh wzr, [x25,3298] - b .L733 -.L732: + bls .L758 + b .L761 +.L756: + strh wzr, [x25,3322] + b .L759 +.L758: add w26, w26, 1 uxth w26, w26 - b .L729 -.L733: + b .L755 +.L759: cmp w19, w23 - bcs .L735 + bcs .L761 add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,3274] - ldrb w4, [x0,3276] - ldrh w2, [x0,3300] + ldrh w1, [x0,3298] + ldrb w4, [x0,3300] + ldrh w2, [x0,3324] ldrh w3, [x0,2880] mul w1, w1, w4 sub w1, w1, w2, lsr 2 cmp w3, w1 - bge .L728 + bge .L754 add w2, w3, w2, lsr 3 strh w2, [x0,2880] - b .L728 -.L735: + b .L754 +.L761: add x1, x20, :lo12:.LANCHOR0 ldrh w2, [x1,2880] - ldrh w0, [x1,3300] + ldrh w0, [x1,3324] cmp w2, w0 - bls .L728 + bls .L754 sub w0, w2, w0, lsr 3 strh w0, [x1,2880] -.L728: - tbz x24, 0, .L736 +.L754: + tbz x24, 0, .L762 cmp w19, w23 - bcs .L736 + bcs .L762 mov w25, 0 mov w27, 65535 -.L737: +.L763: cmp w25, w23 - beq .L740 + beq .L766 add x28, x20, :lo12:.LANCHOR0 - ldrh w26, [x28,3302] + ldrh w26, [x28,3326] mov w0, w26 add w26, w26, 1 bl zftl_get_gc_node.part.12 - strh w26, [x28,3302] + strh w26, [x28,3326] cmp w27, w0, uxth - beq .L738 + beq .L764 mov w1, 0 mov w2, w1 bl gc_add_sblk - cbz w0, .L739 + cbz w0, .L765 add w19, w19, 1 uxth w19, w19 cmp w19, w23 - bcc .L739 - b .L742 -.L738: - strh wzr, [x28,3302] - b .L740 -.L739: + bcc .L765 + b .L768 +.L764: + strh wzr, [x28,3326] + b .L766 +.L765: add w25, w25, 1 uxth w25, w25 - b .L737 -.L740: + b .L763 +.L766: cmp w19, w23 - bcs .L742 + bcs .L768 add x20, x20, :lo12:.LANCHOR0 ldrh w1, [x20,2878] - ldrh w0, [x20,3300] + ldrh w0, [x20,3324] cmp w1, w0 - bcs .L736 + bcs .L762 add w0, w1, w0, lsr 3 - b .L817 -.L742: + b .L843 +.L768: add x20, x20, :lo12:.LANCHOR0 - ldrh w0, [x20,3300] + ldrh w0, [x20,3324] ldrh w1, [x20,2878] cmp w1, w0, lsr 1 - bls .L736 + bls .L762 sub w0, w1, w0, lsr 3 -.L817: +.L843: strh w0, [x20,2878] - b .L736 -.L720: + b .L762 +.L746: and w1, w24, 1 strh w19, [x0,3214] - strh w19, [x0,3304] + strh w19, [x0,3328] str w1, [x29,104] - tbz x24, 0, .L743 - ldrh w2, [x0,3306] + tbz x24, 0, .L769 + ldrh w2, [x0,3330] ldrh w1, [x0,2852] cmp w1, w2, lsr 2 - bcc .L744 + bcc .L770 ldrh w0, [x0,2850] cmp w0, w1 - bls .L745 -.L744: + bls .L771 +.L770: add x23, x20, :lo12:.LANCHOR0 mov w19, 0 ldrh w0, [x23,2850] lsr w0, w0, 2 - strh w0, [x23,3302] + strh w0, [x23,3326] mov w0, 0 bl zftl_get_gc_node.part.12 uxth w1, w0 mov w2, 65535 cmp w1, w2 - beq .L746 + beq .L772 ubfiz x1, x1, 1, 16 ldr x3, [x23,600] - ldrh w2, [x23,3300] + ldrh w2, [x23,3324] ldrh w1, [x3,x1] cmp w1, w2, lsr 2 - bcs .L746 + bcs .L772 mov w1, w19 mov w2, w21 - strh w19, [x23,3302] + strh w19, [x23,3326] bl gc_add_sblk cmp w0, w19 cset w19, ne -.L746: +.L772: mov w23, 64 mov w26, 65535 uxth w27, w22 -.L748: +.L774: add x25, x20, :lo12:.LANCHOR0 - ldrh w28, [x25,3302] + ldrh w28, [x25,3326] mov w0, w28 add w28, w28, 1 bl zftl_get_gc_node.part.12 - strh w28, [x25,3302] + strh w28, [x25,3326] cmp w26, w0, uxth - beq .L745 + beq .L771 mov w1, 0 mov w2, w21 bl gc_add_sblk - cbz w0, .L747 + cbz w0, .L773 add w19, w19, 1 uxth w19, w19 cmp w19, w27 - bcs .L745 -.L747: + bcs .L771 +.L773: sub w23, w23, #1 uxth w23, w23 - cbnz w23, .L748 -.L745: + cbnz w23, .L774 +.L771: add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x0,3306] + ldrh w2, [x0,3330] ldrh w1, [x0,2852] cmp w1, w2, lsr 3 - bhi .L765 + bhi .L791 ldrh w0, [x0,2850] add w0, w0, 8 cmp w1, w0 - bgt .L765 -.L743: - tbz x24, 1, .L751 + bgt .L791 +.L769: + tbz x24, 1, .L777 add x0, x20, :lo12:.LANCHOR0 mov w25, 64 mov w26, 0 mov w27, 65535 uxth w28, w22 - strh wzr, [x0,3298] -.L756: + strh wzr, [x0,3322] +.L782: add x23, x20, :lo12:.LANCHOR0 mov w1, 5 - ldrh w2, [x23,3298] + ldrh w2, [x23,3322] str x2, [x29,96] mov w0, w2 bl zftl_get_gc_node @@ -4816,152 +5032,152 @@ gc_search_src_blk: ldr x2, [x29,96] cmp w1, w27 add w2, w2, 1 - strh w2, [x23,3298] - beq .L752 + strh w2, [x23,3322] + beq .L778 cmp w22, 1 - bne .L753 - ldrh w3, [x23,3274] - ldrb w2, [x23,3276] + bne .L779 + ldrh w3, [x23,3298] + ldrb w2, [x23,3300] mul w2, w2, w3 - ldrh w3, [x23,3300] + ldrh w3, [x23,3324] sub w2, w2, w3, lsr 3 strh w2, [x23,2874] -.L753: +.L779: add x2, x20, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 ldr x3, [x2,600] ldrh w3, [x3,x1] ldrh w1, [x2,2874] cmp w3, w1 - bcs .L754 + bcs .L780 mov w1, 0 mov w2, w21 bl gc_add_sblk - cbz w0, .L755 + cbz w0, .L781 add w19, w19, 1 add w26, w26, 1 uxth w19, w19 uxth w26, w26 cmp w19, w28 - bcc .L755 - b .L752 -.L754: - strh wzr, [x2,3298] - b .L752 -.L755: + bcc .L781 + b .L778 +.L780: + strh wzr, [x2,3322] + b .L778 +.L781: sub w0, w25, #1 uxth w25, w0 - cbnz w25, .L756 -.L752: + cbnz w25, .L782 +.L778: cmp w19, w22 - bcc .L757 - cbnz w26, .L758 + bcc .L783 + cbnz w26, .L784 add x0, x20, :lo12:.LANCHOR0 ldrh w1, [x0,2854] - ldrh w0, [x0,3308] + ldrh w0, [x0,3332] cmp w1, w0 - bls .L758 -.L757: + bls .L784 +.L783: add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,3274] - ldrb w4, [x0,3276] - ldrh w3, [x0,3300] + ldrh w1, [x0,3298] + ldrb w4, [x0,3300] + ldrh w3, [x0,3324] ldrh w2, [x0,2874] mul w1, w1, w4 lsr w3, w3, 3 sub w1, w1, w3 cmp w2, w1 - bge .L751 + bge .L777 add w2, w3, w2 strh w2, [x0,2874] - b .L751 -.L758: + b .L777 +.L784: add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,3300] - ldrb w2, [x0,3276] + ldrh w1, [x0,3324] + ldrb w2, [x0,3300] ldrh w3, [x0,2874] mul w2, w1, w2 cmp w3, w2 - ble .L751 + ble .L777 sub w1, w3, w1, lsr 3 strh w1, [x0,2874] -.L751: +.L777: ldr w0, [x29,104] - cbz w0, .L736 + cbz w0, .L762 add x0, x20, :lo12:.LANCHOR0 mov w25, 64 mov w26, 65535 uxth w27, w22 - strh wzr, [x0,3296] -.L762: + strh wzr, [x0,3320] +.L788: add x23, x20, :lo12:.LANCHOR0 mov w1, 3 - ldrh w28, [x23,3296] + ldrh w28, [x23,3320] mov w0, w28 add w28, w28, 1 bl zftl_get_gc_node uxth w1, w0 - strh w28, [x23,3296] + strh w28, [x23,3320] cmp w1, w26 - beq .L759 + beq .L785 ubfiz x1, x1, 1, 16 ldr x2, [x23,600] ldrh w1, [x2,x1] cmp w1, 2 - bls .L760 + bls .L786 ldrh w2, [x23,2876] cmp w2, w1 - bls .L760 - ldrh w2, [x23,3306] + bls .L786 + ldrh w2, [x23,3330] ldrh w1, [x23,2852] cmp w1, w2, lsr 1 - bls .L759 -.L760: + bls .L785 +.L786: mov w1, 0 mov w2, w21 bl gc_add_sblk - cbz w0, .L761 + cbz w0, .L787 add w19, w19, 1 uxth w19, w19 cmp w19, w27 - bcs .L759 -.L761: + bcs .L785 +.L787: sub w25, w25, #1 uxth w25, w25 - cbnz w25, .L762 -.L759: + cbnz w25, .L788 +.L785: cmp w19, w22 add x20, x20, :lo12:.LANCHOR0 - bcs .L763 - ldrh w0, [x20,3300] + bcs .L789 + ldrh w0, [x20,3324] ldrh w1, [x20,2876] cmp w1, w0, lsr 1 - bls .L736 + bls .L762 sub w0, w1, w0, lsr 3 strh w0, [x20,2876] - b .L736 -.L763: - ldrh w1, [x20,3300] - ldrb w0, [x20,3276] + b .L762 +.L789: + ldrh w1, [x20,3324] + ldrb w0, [x20,3300] ldrh w2, [x20,2876] mul w0, w1, w0 sub w0, w0, #32 cmp w2, w0 - bge .L736 + bge .L762 add w1, w2, w1, lsr 3 strh w1, [x20,2876] -.L736: +.L762: adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L764 - adrp x0, .LC91 + tbz x0, 8, .L790 + adrp x0, .LC95 mov w1, w21 - add x0, x0, :lo12:.LC91 + add x0, x0, :lo12:.LC95 mov w2, w24 mov w3, w19 mov w4, w22 bl printk -.L764: +.L790: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -4970,35 +5186,35 @@ gc_search_src_blk: ldp x27, x28, [sp,80] ldp x29, x30, [sp], 112 ret -.L765: +.L791: add x0, x20, :lo12:.LANCHOR0 mov w23, 64 mov w26, 65535 uxth w27, w22 - strh wzr, [x0,3296] -.L750: + strh wzr, [x0,3320] +.L776: add x25, x20, :lo12:.LANCHOR0 mov w1, 3 - ldrh w28, [x25,3296] + ldrh w28, [x25,3320] mov w0, w28 add w28, w28, 1 bl zftl_get_gc_node - strh w28, [x25,3296] + strh w28, [x25,3320] cmp w26, w0, uxth - beq .L743 + beq .L769 mov w1, 0 mov w2, w21 bl gc_add_sblk - cbz w0, .L749 + cbz w0, .L775 add w19, w19, 1 uxth w19, w19 cmp w19, w27 - bcs .L743 -.L749: + bcs .L769 +.L775: sub w23, w23, #1 uxth w23, w23 - cbnz w23, .L750 - b .L743 + cbnz w23, .L776 + b .L769 .size gc_search_src_blk, .-gc_search_src_blk .align 2 .global zftl_insert_free_list @@ -5013,20 +5229,20 @@ zftl_insert_free_list: add x0, x0, x1, uxth 2 ldrb w0, [x0,2] ands w0, w0, 24 - bne .L819 - add x0, x2, 3312 + bne .L845 + add x0, x2, 3336 add x2, x2, 2844 - b .L822 -.L819: + b .L848 +.L845: cmp w0, 16 - bne .L821 - add x0, x2, 3320 + bne .L847 + add x0, x2, 3344 add x2, x2, 2846 - b .L822 -.L821: - add x0, x2, 3328 + b .L848 +.L847: + add x0, x2, 3352 add x2, x2, 2848 -.L822: +.L848: bl _insert_free_list ldp x29, x30, [sp], 16 ret @@ -5045,24 +5261,24 @@ zftl_insert_data_list: ldrb w3, [x0,2] and w3, w3, 224 cmp w3, 64 - bne .L824 + bne .L850 add x0, x2, 616 add x2, x2, 2850 - b .L827 -.L824: + b .L853 +.L850: cmp w3, 96 - bne .L826 - add x0, x2, 3288 + bne .L852 + add x0, x2, 3312 add x2, x2, 2852 - b .L827 -.L826: + b .L853 +.L852: cmp w3, 160 - bne .L823 - add x0, x2, 3280 + bne .L849 + add x0, x2, 3304 add x2, x2, 2854 -.L827: +.L853: bl _insert_data_list -.L823: +.L849: ldp x29, x30, [sp], 16 ret .size zftl_insert_data_list, .-zftl_insert_data_list @@ -5081,64 +5297,64 @@ zftl_gc_get_free_sblk: uxth w22, w1 ldr x0, [x23,608] ldrh w19, [x0,588] - cbnz w21, .L829 + cbnz w21, .L855 mov w0, 65535 cmp w19, w0 - beq .L829 - adrp x0, .LC92 + beq .L855 + adrp x0, .LC96 mov w1, w19 - add x0, x0, :lo12:.LC92 + add x0, x0, :lo12:.LC96 bl printk ldr x0, [x23,608] mov w1, -1 strh w1, [x0,588] - b .L830 -.L829: + b .L856 +.L855: add x0, x20, :lo12:.LANCHOR0 ldrh w3, [x0,2846] ldrh w1, [x0,2848] cmp w3, w1 - bls .L831 + bls .L857 mov w1, 0 mov x2, x0 lsr w3, w3, 3 cmp w21, w1 csel w1, w3, w1, ne - add x0, x0, 3320 + add x0, x0, 3344 add x2, x2, 2846 - b .L849 -.L831: + b .L875 +.L857: lsr w1, w1, 2 - cbz w21, .L835 + cbz w21, .L861 mov w1, 7 mul w3, w3, w1 mov w1, 8 sdiv w3, w3, w1 uxth w1, w3 -.L835: +.L861: add x2, x20, :lo12:.LANCHOR0 - add x0, x2, 3328 + add x0, x2, 3352 add x2, x2, 2848 -.L849: +.L875: bl _list_pop_index_node uxth w19, w0 mov w0, 65535 cmp w19, w0 - bne .L836 + bne .L862 add x5, x20, :lo12:.LANCHOR0 - adrp x0, .LC93 - add x0, x0, :lo12:.LC93 + adrp x0, .LC97 + add x0, x0, :lo12:.LC97 mov w1, w19 mov w2, w22 - ldr x3, [x5,3312] + ldr x3, [x5,3336] ldrh w4, [x5,2844] ldrh w5, [x5,2848] bl printk -.L836: - cbz w21, .L830 +.L862: + cbz w21, .L856 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L830 + tbz x0, 8, .L856 add x20, x20, :lo12:.LANCHOR0 uxtw x6, w19 lsl x0, x6, 2 @@ -5147,9 +5363,9 @@ zftl_gc_get_free_sblk: add x2, x1, x0 ldr w4, [x1,x0] ldrh w5, [x1,x0] - adrp x0, .LC94 + adrp x0, .LC98 ldrb w3, [x2,2] - add x0, x0, :lo12:.LC94 + add x0, x0, :lo12:.LC98 ldrh w6, [x7,x6,lsl 1] mov w1, w19 ubfx x2, x3, 5, 3 @@ -5157,7 +5373,7 @@ zftl_gc_get_free_sblk: ubfx x3, x3, 3, 2 and w5, w5, 2047 bl printk -.L830: +.L856: mov w0, w19 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -5177,89 +5393,89 @@ zftl_get_free_sblk: stp x19, x20, [sp,16] cmp w21, 5 adrp x19, .LANCHOR0 - bne .L851 + bne .L877 add x0, x19, :lo12:.LANCHOR0 ldrh w2, [x0,2846] ldrh w1, [x0,2848] cmp w2, w1 - bcc .L852 + bcc .L878 ldrh w0, [x0,2844] cmp w0, w2 - bls .L853 - cbz w1, .L853 -.L852: + bls .L879 + cbz w1, .L879 +.L878: add x2, x19, :lo12:.LANCHOR0 lsr w1, w1, 1 - add x0, x2, 3328 - b .L881 -.L853: + add x0, x2, 3352 + b .L907 +.L879: add x2, x19, :lo12:.LANCHOR0 mov w1, 0 - add x0, x2, 3320 + add x0, x2, 3344 add x2, x2, 2846 - b .L880 -.L851: + b .L906 +.L877: add x22, x19, :lo12:.LANCHOR0 cmp w21, 1 ldr x0, [x22,608] ldrh w20, [x0,590] - beq .L855 + beq .L881 mov w0, 65535 cmp w20, w0 - beq .L855 - adrp x0, .LC95 + beq .L881 + adrp x0, .LC99 mov w1, w20 - add x0, x0, :lo12:.LC95 + add x0, x0, :lo12:.LC99 bl printk ldr x0, [x22,608] mov w1, -1 strh w1, [x0,590] - b .L856 -.L855: + b .L882 +.L881: add x2, x19, :lo12:.LANCHOR0 ldrh w0, [x2,2844] ldrh w1, [x2,2848] cmp w0, w1 - bcc .L857 + bcc .L883 ldrh w2, [x2,2846] cmp w2, w0 - bls .L858 - cbz w1, .L858 -.L857: + bls .L884 + cbz w1, .L884 +.L883: lsr w1, w1, 1 cmp w21, 1 csel w3, w1, w3, eq add x2, x19, :lo12:.LANCHOR0 - add x0, x2, 3328 + add x0, x2, 3352 mov w1, w3 -.L881: +.L907: add x2, x2, 2848 - b .L880 -.L858: + b .L906 +.L884: lsr w0, w0, 1 cmp w21, 1 csel w3, w0, w3, eq add x2, x19, :lo12:.LANCHOR0 - add x0, x2, 3312 + add x0, x2, 3336 mov w1, w3 add x2, x2, 2844 -.L880: +.L906: bl _list_pop_index_node uxth w0, w0 mov w20, w0 mov w0, 65535 cmp w20, w0 - bne .L856 + bne .L882 add x19, x19, :lo12:.LANCHOR0 - adrp x0, .LC93 - add x0, x0, :lo12:.LC93 + adrp x0, .LC97 + add x0, x0, :lo12:.LC97 mov w1, w20 mov w2, w21 - ldr x3, [x19,3312] + ldr x3, [x19,3336] ldrh w4, [x19,2844] ldrh w5, [x19,2848] bl printk -.L856: +.L882: mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -5280,24 +5496,24 @@ zftl_remove_data_node: ldrb w3, [x0,2] and w3, w3, 224 cmp w3, 64 - bne .L883 + bne .L909 add x0, x2, 616 add x2, x2, 2850 - b .L886 -.L883: + b .L912 +.L909: cmp w3, 96 - bne .L885 - add x0, x2, 3288 + bne .L911 + add x0, x2, 3312 add x2, x2, 2852 - b .L886 -.L885: + b .L912 +.L911: cmp w3, 160 - bne .L882 - add x0, x2, 3280 + bne .L908 + add x0, x2, 3304 add x2, x2, 2854 -.L886: +.L912: bl _list_remove_node -.L882: +.L908: ldp x29, x30, [sp], 16 ret .size zftl_remove_data_node, .-zftl_remove_data_node @@ -5314,20 +5530,20 @@ zftl_remove_free_node: add x0, x0, x1, uxth 2 ldrb w0, [x0,2] ands w0, w0, 24 - bne .L888 - add x0, x2, 3312 + bne .L914 + add x0, x2, 3336 add x2, x2, 2844 - b .L891 -.L888: + b .L917 +.L914: cmp w0, 16 - bne .L890 - add x0, x2, 3320 + bne .L916 + add x0, x2, 3344 add x2, x2, 2846 - b .L891 -.L890: - add x0, x2, 3328 + b .L917 +.L916: + add x0, x2, 3352 add x2, x2, 2848 -.L891: +.L917: bl _list_remove_node ldp x29, x30, [sp], 16 ret @@ -5346,24 +5562,24 @@ zftl_list_update_data_list: ldrb w3, [x0,2] and w3, w3, 224 cmp w3, 64 - bne .L893 + bne .L919 add x0, x2, 616 add x2, x2, 2850 - b .L896 -.L893: + b .L922 +.L919: cmp w3, 96 - bne .L895 - add x0, x2, 3288 + bne .L921 + add x0, x2, 3312 add x2, x2, 2852 - b .L896 -.L895: + b .L922 +.L921: cmp w3, 160 - bne .L892 - add x0, x2, 3280 + bne .L918 + add x0, x2, 3304 add x2, x2, 2854 -.L896: +.L922: bl _list_update_data_list -.L892: +.L918: ldp x29, x30, [sp], 16 ret .size zftl_list_update_data_list, .-zftl_list_update_data_list @@ -5376,25 +5592,25 @@ print_list_info: add x29, sp, 32 stp x19, x20, [sp,48] mov x19, x0 - adrp x0, .LC96 + adrp x0, .LC100 stp x21, x22, [sp,64] stp x23, x24, [sp,80] stp x25, x26, [sp,96] - add x0, x0, :lo12:.LC96 + add x0, x0, :lo12:.LC100 ldrh w2, [x1] ldr x1, [x19] bl printk ldr x19, [x19] - cbz x19, .L897 + cbz x19, .L923 mov x22, -6148914691236517206 - adrp x23, .LC97 + adrp x23, .LC101 mov w20, 0 adrp x25, .LANCHOR0 add x22, x22, 1 - add x23, x23, :lo12:.LC97 + add x23, x23, :lo12:.LC101 mov w26, 65535 mov w24, 6 -.L900: +.L926: add x21, x25, :lo12:.LANCHOR0 ldrh w3, [x19] ldrh w4, [x19,2] @@ -5425,16 +5641,16 @@ print_list_info: bl printk ldrh w19, [x19] cmp w19, w26 - beq .L897 + beq .L923 ldr x0, [x21,528] add w20, w20, 1 umull x19, w19, w24 uxth w20, w20 add x19, x0, x19 - ldrh w0, [x21,3336] + ldrh w0, [x21,3360] cmp w0, w20 - bcs .L900 -.L897: + bcs .L926 +.L923: sub sp, x29, #32 ldp x19, x20, [sp,48] ldp x21, x22, [sp,64] @@ -5453,22 +5669,22 @@ dump_all_list_info: str x19, [sp,16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x0, x19, 3312 + add x0, x19, 3336 add x1, x19, 2844 bl print_list_info - add x0, x19, 3320 + add x0, x19, 3344 add x1, x19, 2846 bl print_list_info - add x0, x19, 3328 + add x0, x19, 3352 add x1, x19, 2848 bl print_list_info add x0, x19, 616 add x1, x19, 2850 bl print_list_info - add x0, x19, 3288 + add x0, x19, 3312 add x1, x19, 2852 bl print_list_info - add x0, x19, 3280 + add x0, x19, 3304 add x1, x19, 2854 bl print_list_info ldr x19, [sp,16] @@ -5483,44 +5699,44 @@ ftl_tmp_into_update: ldr x0, [x0,#:lo12:.LANCHOR0+2864] ldr w2, [x0,16] cmp w2, 2048 - bls .L903 + bls .L929 lsr w1, w2, 11 ldr w3, [x0,20] add w3, w3, w1 sub w1, w2, w1, lsl 11 str w3, [x0,20] str w1, [x0,16] -.L903: +.L929: ldr w2, [x0,24] cmp w2, 2048 - bls .L904 + bls .L930 lsr w1, w2, 11 ldr w3, [x0,28] add w3, w3, w1 sub w1, w2, w1, lsl 11 str w3, [x0,28] str w1, [x0,24] -.L904: +.L930: ldr w2, [x0,32] cmp w2, 1024 - bls .L905 + bls .L931 lsr w1, w2, 10 ldr w3, [x0,36] add w3, w3, w1 sub w1, w2, w1, lsl 10 str w3, [x0,36] str w1, [x0,32] -.L905: +.L931: ldr w2, [x0,40] cmp w2, 1024 - bls .L902 + bls .L928 lsr w1, w2, 10 ldr w3, [x0,44] add w3, w3, w1 sub w1, w2, w1, lsl 10 str w3, [x0,44] str w1, [x0,40] -.L902: +.L928: ret .size ftl_tmp_into_update, .-ftl_tmp_into_update .align 2 @@ -5536,354 +5752,49 @@ ftl_get_blk_list_in_sblk: ldrb w11, [x2,3] mov w2, 0 mov w6, w2 -.L908: +.L934: add x8, x7, :lo12:.LANCHOR0 - ldrb w3, [x8,3276] + ldrb w3, [x8,3300] cmp w6, w3 - bge .L914 + bge .L940 asr w3, w11, w6 - tbnz x3, 0, .L909 - ldrb w5, [x8,3338] + tbnz x3, 0, .L935 + ldrb w5, [x8,3266] sbfiz x10, x2, 1, 32 - ldrh w3, [x8,3340] + ldrh w3, [x8,3264] sdiv w9, w6, w5 sub w3, w12, w3 lsl w3, w9, w3 madd w3, w0, w5, w3 uxth w4, w3 strh w4, [x1,x10] - ldrb w3, [x8,3338] + ldrb w3, [x8,3266] cmp w3, 1 - bls .L910 + bls .L936 sub w3, w3, #1 and w3, w6, w3 add w3, w4, w3 strh w3, [x1,x10] -.L910: +.L936: add w2, w2, 1 -.L909: +.L935: add w6, w6, 1 - b .L908 -.L914: + b .L934 +.L940: mov w0, w2 mov w4, -1 -.L912: +.L938: add x3, x7, :lo12:.LANCHOR0 - ldrb w3, [x3,3276] + ldrb w3, [x3,3300] cmp w2, w3 - bge .L915 + bge .L941 strh w4, [x1,w2,sxtw 1] add w2, w2, 1 - b .L912 -.L915: + b .L938 +.L941: ret .size ftl_get_blk_list_in_sblk, .-ftl_get_blk_list_in_sblk .align 2 - .global ftl_free_sblk - .type ftl_free_sblk, %function -ftl_free_sblk: - stp x29, x30, [sp, -64]! - add x29, sp, 0 - stp x21, x22, [sp,32] - uxth x22, w0 - adrp x0, .LANCHOR0 - add x3, x0, :lo12:.LANCHOR0 - mov x1, x22 - stp x19, x20, [sp,16] - lsl x19, x22, 2 - mov x21, x0 - ldr x7, [x3,584] - add x20, x7, x19 - ldrb w2, [x20,2] - tbz x2, 3, .L918 - ldr x6, [x3,2864] - ldrh w4, [x7,x19] - ldrh w10, [x3,3342] - ldrh w0, [x6,74] - and w5, w4, 2047 - ldr w4, [x7,x19] - add w0, w5, w0 - ldrh w6, [x6,72] - ubfx x9, x4, 11, 8 - ldrh w4, [x3,592] - uxth w8, w0 - add w6, w9, w6 - uxth w0, w6 - udiv w6, w8, w4 - add w6, w0, w6 - cmp w6, w10 - ble .L919 - ldrh w0, [x3,2846] - ldrh w6, [x3,2854] - add w6, w6, w0 - ldrh w0, [x3,3308] - add w0, w0, 8 - cmp w6, w0 - blt .L935 - ldrh w0, [x3,2844] - ldrh w6, [x3,2850] - add w6, w6, w0 - ldrh w0, [x3,2852] - add w6, w6, w0 - ldrh w0, [x3,3344] - add w0, w0, 8 - cmp w6, w0 - bge .L935 - b .L924 -.L919: - madd w0, w0, w4, w8 - ldrh w6, [x3,3346] - cmp w0, w6 - ble .L921 - ldrh w0, [x3,2844] - ldrh w6, [x3,2850] - add w6, w6, w0 - ldrh w0, [x3,2852] - add w6, w6, w0 - ldrh w0, [x3,3344] - add w0, w0, 8 - cmp w6, w0 - blt .L924 - ldrh w0, [x3,2846] - ldrh w6, [x3,2854] - add w6, w6, w0 - ldrh w0, [x3,3308] - add w0, w0, 8 - cmp w6, w0 - bge .L924 -.L935: - mov w0, 2 - bfi w2, w0, 3, 2 - b .L933 -.L924: - and w2, w2, -25 -.L933: - strb w2, [x20,2] -.L921: - ldrb w0, [x20,2] - ands w0, w0, 24 - bne .L925 - mul w4, w9, w4 - ldrh w0, [x7,x19] - add w4, w4, w4, lsl 1 - add w4, w5, w4, lsr 2 - ubfx x5, x4, 2, 9 - bfi w0, w5, 0, 11 - strh w0, [x7,x19] - b .L918 -.L925: - cmp w0, 16 - bne .L918 - sdiv w4, w5, w4 - ldr w0, [x7,x19] - add w4, w4, w4, lsl 1 - add w4, w9, w4, lsr 2 - ubfx x4, x4, 2, 6 - bfi w0, w4, 11, 8 - str w0, [x7,x19] -.L918: - mov w0, w1 - str x1, [x29,56] - bl zftl_remove_data_node - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x29,56] - ldr x2, [x0,584] - add x2, x2, x19 - ldrb w3, [x2,2] - and w3, w3, 31 - strb w3, [x2,2] - ldr x2, [x0,600] - strh wzr, [x2,x22,lsl 1] - ldrb w2, [x20,2] - tbz x2, 3, .L927 - ldr x2, [x0,608] - ldrh w0, [x2,584] - cmp w0, w1 - bne .L928 - mov w0, -1 - ldrh w3, [x2,588] - strh w0, [x2,584] - mov w0, 65535 - cmp w3, w0 - bne .L927 - adrp x0, .LC98 - strh w1, [x2,588] - add x0, x0, :lo12:.LC98 - b .L934 -.L928: - ldrh w0, [x2,586] - cmp w0, w1 - bne .L927 - mov w0, -1 - ldrh w3, [x2,590] - strh w0, [x2,586] - mov w0, 65535 - cmp w3, w0 - bne .L927 - adrp x0, .LC99 - strh w1, [x2,590] - add x0, x0, :lo12:.LC99 -.L934: - bl printk - b .L916 -.L927: - mov w0, w1 - bl zftl_insert_free_list -.L916: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 - ret - .size ftl_free_sblk, .-ftl_free_sblk - .align 2 - .global gc_free_src_blk - .type gc_free_src_blk, %function -gc_free_src_blk: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - adrp x23, .LANCHOR0 - adrp x21, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR0 - add x21, x21, :lo12:.LANCHOR1 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - mov w20, 0 - add x24, x23, 2896 - add x21, x21, 1352 -.L937: - ldrh w0, [x24,56] - adrp x25, .LANCHOR0 - cmp w0, w20 - bls .L975 - add x0, x24, x20, sxtw 1 - ldrh w22, [x0,58] - ldr x0, [x23,600] - lsl x26, x22, 1 - mov x19, x22 - ldrh w2, [x0,x26] - cbz w2, .L938 - adrp x0, .LC100 - mov w1, w22 - add x0, x0, :lo12:.LC100 - bl printk -.L938: - add x0, x25, :lo12:.LANCHOR0 - ldr x1, [x0,600] - strh wzr, [x1,x26] - ldr x1, [x0,600] - ldrh w1, [x1,x26] - cbnz w1, .L939 - ldr x0, [x0,584] - add x22, x0, x22, lsl 2 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L940 - ldrb w2, [x22,2] - adrp x0, .LC101 - add x0, x0, :lo12:.LC101 - mov w1, w19 - ubfx x2, x2, 5, 3 - bl printk -.L940: - ldrb w0, [x22,2] - tst w0, 192 - beq .L953 - and w0, w0, 224 - cmp w0, 224 - bne .L941 -.L953: - adrp x0, .LC0 - mov x1, x21 - mov w2, 799 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L941: - mov w0, w19 - add x25, x25, :lo12:.LANCHOR0 - bl ftl_free_sblk - ldr x2, [x25,608] - ldrh w1, [x2,124] - cbz w1, .L943 - mov x0, 0 -.L945: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,392] - cmp w4, w19 - bne .L944 - add x0, x2, x3, sxtw 1 - mov w3, -1 - strh w3, [x0,392] - sub w1, w1, #1 - strh w1, [x2,124] - b .L943 -.L944: - add x0, x0, 1 - cmp x0, 64 - bne .L945 -.L943: - ldrh w1, [x2,120] - cbz w1, .L946 - mov x0, 0 -.L948: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,136] - cmp w4, w19 - bne .L947 - add x0, x2, x3, sxtw 1 - mov w3, -1 - strh w3, [x0,136] - sub w1, w1, #1 - strh w1, [x2,120] - b .L946 -.L947: - add x0, x0, 1 - cmp x0, 64 - bne .L948 -.L946: - ldrh w1, [x2,122] - cbz w1, .L949 - mov x0, 0 -.L951: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,264] - cmp w4, w19 - bne .L950 - add x0, x2, x3, sxtw 1 - mov w3, -1 - strh w3, [x0,264] - sub w1, w1, #1 - strh w1, [x2,122] - b .L949 -.L950: - add x0, x0, 1 - cmp x0, 64 - bne .L951 - b .L949 -.L939: - mov w0, w19 - mov w1, 1 - mov w2, 0 - bl gc_add_sblk -.L949: - add w20, w20, 1 - uxth w20, w20 - b .L937 -.L975: - strh wzr, [x24,56] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 80 - ret - .size gc_free_src_blk, .-gc_free_src_blk - .align 2 .global ftl_erase_phy_blk .type ftl_erase_phy_blk, %function ftl_erase_phy_blk: @@ -5897,27 +5808,29 @@ ftl_erase_phy_blk: stp x19, x20, [sp,16] mov w4, 1 mov w21, w1 - ldrh w19, [x5,3340] + ldrh w19, [x5,3264] mov x20, x3 sub w19, w0, w19 - ldrb w0, [x5,3348] + ldrb w0, [x5,3282] asr w22, w2, w19 lsl w19, w4, w19 sub w19, w19, #1 and w19, w19, w2 sxth w19, w19 - cbz w0, .L977 - ldrh w2, [x5,3350] + cbz w0, .L943 + ldrb w0, [x5,3283] + cbnz w0, .L943 + ldrh w2, [x5,3362] cmp w1, wzr mov w0, w22 cset w1, eq mul w2, w19, w2 bl flash_erase_block_en -.L977: +.L943: add x3, x20, :lo12:.LANCHOR0 mov w1, w21 mov w0, w22 - ldrh w2, [x3,3350] + ldrh w2, [x3,3362] mul w2, w19, w2 bl flash_erase_block_en ldp x19, x20, [sp,16] @@ -5944,87 +5857,91 @@ ftl_erase_sblk: mov w19, 0 add x0, x0, x20 ldrb w25, [x0,3] -.L982: +.L948: add x2, x23, :lo12:.LANCHOR0 - ldrb w0, [x2,3352] + ldrb w0, [x2,3364] cmp w19, w0 - bge .L993 - ldrb w3, [x2,3338] + bge .L959 + ldrb w3, [x2,3266] mov w21, 0 - ldrh w2, [x2,3350] + ldrh w2, [x2,3362] mov w1, w21 sub w4, w3, #1 mul w6, w19, w3 mul w5, w24, w3 -.L994: +.L960: cmp w1, w3 - bge .L1007 + bge .L973 add w0, w1, w6 asr w0, w25, w0 - tbnz x0, 0, .L983 + tbnz x0, 0, .L949 and w0, w1, w4 add x7, x29, 80 add w0, w5, w0 mul w0, w0, w2 str w0, [x7,w21,sxtw 2] add w21, w21, 1 -.L983: +.L949: add w1, w1, 1 - b .L994 -.L1007: + b .L960 +.L973: cmp w3, 4 - bne .L1006 + bne .L972 mov x26, 0 -.L985: +.L951: cmp w21, w26 - ble .L988 + ble .L954 add x2, x29, 80 mov w0, w19 mov w1, w22 ldr w2, [x2,x26,lsl 2] add x26, x26, 1 bl flash_erase_block_en - b .L985 -.L1006: + b .L951 +.L972: cmp w21, 2 - bne .L989 + bne .L955 add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,3348] - cbz w0, .L990 + ldrb w1, [x0,3282] + cbz w1, .L956 + ldrb w0, [x0,3283] + cbnz w0, .L956 cmp w22, wzr ldr w2, [x29,80] ldr w3, [x29,84] mov w0, w19 cset w1, eq bl flash_erase_duplane_block -.L990: +.L956: ldr w2, [x29,80] mov w0, w19 ldr w3, [x29,84] mov w1, w22 bl flash_erase_duplane_block - b .L988 -.L989: + b .L954 +.L955: cmp w21, 1 - bne .L988 + bne .L954 add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,3348] - cbz w0, .L992 + ldrb w1, [x0,3282] + cbz w1, .L958 + ldrb w0, [x0,3283] + cbnz w0, .L958 cmp w22, wzr ldr w2, [x29,80] mov w0, w19 cset w1, eq bl flash_erase_block_en -.L992: +.L958: ldr w2, [x29,80] mov w0, w19 mov w1, w22 bl flash_erase_block_en -.L988: +.L954: add w19, w19, 1 - b .L982 -.L993: - cbnz w22, .L995 + b .L948 +.L959: + cbnz w22, .L961 ldr x1, [x2,584] ldrh w0, [x1,x20] add w3, w0, 1 @@ -6040,10 +5957,10 @@ ftl_erase_sblk: ubfx x1, x1, 0, 11 uxth w2, w1 cmp w3, w2 - bge .L997 + bge .L963 strh w1, [x0,96] - b .L997 -.L995: + b .L963 +.L961: ldr x3, [x2,584] ldr w0, [x3,x20] ubfx x1, x0, 11, 8 @@ -6059,9 +5976,9 @@ ftl_erase_sblk: ldr w1, [x1,x20] ubfx x1, x1, 11, 8 cmp w2, w1, uxtb - bcs .L997 + bcs .L963 strh w1, [x0,98] -.L997: +.L963: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -6083,39 +6000,39 @@ ftl_alloc_sys_blk: ldr x1, [x1,2864] ldrh w2, [x1,136] cmp w2, 63 - bls .L1009 + bls .L975 strh wzr, [x1,136] -.L1009: +.L975: ldrh w0, [x1,112] - cbnz w0, .L1010 + cbnz w0, .L976 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1117 - add x1, x1, 1368 + mov w2, 1130 + add x1, x1, 1352 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1010: +.L976: add x0, x19, :lo12:.LANCHOR0 mov w4, 65535 ldr x1, [x0,2864] -.L1014: +.L980: ldrh w2, [x1,136] -.L1011: +.L977: cmp w2, 63 - bgt .L1017 + bgt .L983 sxtw x3, w2 add x3, x3, 80 ldrh w0, [x1,x3,lsl 1] cmp w0, w4 - bne .L1016 + bne .L982 add w2, w2, 1 - b .L1011 -.L1017: + b .L977 +.L983: strh wzr, [x1,136] - b .L1014 -.L1016: + b .L980 +.L982: mov w4, -1 strh w4, [x1,x3,lsl 1] strh w2, [x1,136] @@ -6140,34 +6057,34 @@ ftl_free_sys_blk: ldr x2, [x0,2864] ldrh w0, [x2,138] cmp w0, 63 - bls .L1019 + bls .L985 strh wzr, [x2,138] -.L1019: +.L985: ldrh w0, [x2,112] cmp w0, 63 - bls .L1020 + bls .L986 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1141 - add x1, x1, 1392 + mov w2, 1154 + add x1, x1, 1376 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1020: +.L986: add x1, x19, :lo12:.LANCHOR0 mov w0, 65535 ldr x1, [x1,2864] -.L1024: +.L990: ldrh w2, [x1,138] -.L1021: +.L987: cmp w2, 63 - bgt .L1026 + bgt .L992 sxtw x3, w2 add x3, x3, 80 ldrh w4, [x1,x3,lsl 1] cmp w4, w0 - bne .L1022 + bne .L988 strh w20, [x1,x3,lsl 1] strh w2, [x1,138] ldrh w0, [x1,112] @@ -6176,12 +6093,12 @@ ftl_free_sys_blk: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret -.L1022: +.L988: add w2, w2, 1 - b .L1021 -.L1026: + b .L987 +.L992: strh wzr, [x1,138] - b .L1024 + b .L990 .size ftl_free_sys_blk, .-ftl_free_sys_blk .align 2 .global ftl_info_data_recovery @@ -6195,7 +6112,7 @@ ftl_info_data_recovery: str x23, [sp,48] ldrh w2, [x0] cmp w2, w1 - beq .L1027 + beq .L993 adrp x19, .LANCHOR0 ubfiz x20, x2, 2, 16 add x23, x19, :lo12:.LANCHOR0 @@ -6203,36 +6120,36 @@ ftl_info_data_recovery: add x22, x21, x20 ldrb w1, [x22,2] tst w1, 224 - bne .L1027 + bne .L993 ldrb w0, [x0,4] bfi w1, w0, 5, 3 mov w0, w2 strb w1, [x22,2] bl zftl_remove_free_node ldrb w0, [x22,2] - tbz x0, 3, .L1031 + tbz x0, 3, .L997 ldr x1, [x23,2864] ldrh w0, [x1,116] sub w0, w0, #1 strh w0, [x1,116] - b .L1032 -.L1031: + b .L998 +.L997: tst w0, 24 ldr x1, [x23,2864] - bne .L1033 + bne .L999 ldrh w0, [x1,114] sub w0, w0, #1 strh w0, [x1,114] - b .L1032 -.L1033: + b .L998 +.L999: ldrh w0, [x1,118] sub w0, w0, #1 strh w0, [x1,118] -.L1032: +.L998: ldrb w0, [x22,2] and w0, w0, 224 cmp w0, 160 - bne .L1034 + bne .L1000 ldr w0, [x21,x20] add x19, x19, :lo12:.LANCHOR0 ubfx x1, x0, 11, 8 @@ -6243,29 +6160,29 @@ ftl_info_data_recovery: ldrh w0, [x1,120] sub w0, w0, #1 strh w0, [x1,120] - b .L1027 -.L1034: + b .L993 +.L1000: ldrh w1, [x21,x20] cmp w0, 64 add w2, w1, 1 bfi w1, w2, 0, 11 strh w1, [x21,x20] - bne .L1035 + bne .L1001 add x19, x19, :lo12:.LANCHOR0 ldr x1, [x19,2864] ldrh w0, [x1,122] sub w0, w0, #1 strh w0, [x1,122] - b .L1027 -.L1035: + b .L993 +.L1001: cmp w0, 96 - bne .L1027 + bne .L993 add x19, x19, :lo12:.LANCHOR0 ldr x1, [x19,2864] ldrh w0, [x1,124] sub w0, w0, #1 strh w0, [x1,124] -.L1027: +.L993: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -6284,19 +6201,19 @@ ftl_get_ppa_from_index: stp x19, x20, [sp,16] str x21, [sp,32] mov x19, x2 - ldrh w0, [x4,3300] + ldrh w0, [x4,3324] ldr x3, [x4,608] - ldrb w4, [x4,3276] + ldrb w4, [x4,3300] mul w0, w0, w4 cmp w1, w0 - bge .L1037 + bge .L1003 add x3, x3, 16 - b .L1038 -.L1037: + b .L1004 +.L1003: sub w1, w1, w0 add x3, x3, 48 uxth w1, w1 -.L1038: +.L1004: ldrb w2, [x3,9] mov w0, 65535 sdiv w20, w1, w2 @@ -6304,18 +6221,18 @@ ftl_get_ppa_from_index: add x1, x3, x1, uxth 1 ldrh w21, [x1,16] cmp w21, w0 - bne .L1039 + bne .L1005 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1528 - add x1, x1, 1416 + mov w2, 1593 + add x1, x1, 1400 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1039: +.L1005: add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x2,3350] + ldrh w0, [x2,3362] madd w0, w21, w0, w20 ldp x19, x20, [sp,16] ldr x21, [sp,32] @@ -6332,25 +6249,25 @@ lpa_hash_get_ppa: add x2, x1, x0, uxtb 1 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldrh w2, [x2,3360] - ldr x4, [x1,3872] - ldr x5, [x1,3880] -.L1041: + ldrh w2, [x2,3368] + ldr x4, [x1,3880] + ldr x5, [x1,3888] +.L1007: cmp w2, w3 - beq .L1045 + beq .L1011 uxtw x1, w2 ldr w6, [x4,x1,lsl 2] cmp w6, w0 - bne .L1042 + bne .L1008 mov w0, w2 bl ftl_get_ppa_from_index - b .L1043 -.L1042: + b .L1009 +.L1008: ldrh w2, [x5,x1,lsl 1] - b .L1041 -.L1045: + b .L1007 +.L1011: mov w0, -1 -.L1043: +.L1009: ldp x29, x30, [sp], 16 ret .size lpa_hash_get_ppa, .-lpa_hash_get_ppa @@ -6365,71 +6282,71 @@ ftl_get_new_free_page: ldrh w1, [x0] mov w0, 65535 cmp w1, w0 - bne .L1047 + bne .L1013 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1643 - add x1, x1, 1440 + mov w2, 1716 + add x1, x1, 1424 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1047: +.L1013: adrp x20, .LANCHOR0 ldrh w1, [x19,2] add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,3300] + ldrh w0, [x0,3324] cmp w1, w0 - bne .L1048 + bne .L1014 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1644 - add x1, x1, 1440 + mov w2, 1717 + add x1, x1, 1424 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1048: +.L1014: ldrh w0, [x19,6] - cbnz w0, .L1049 + cbnz w0, .L1015 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1645 - add x1, x1, 1440 + mov w2, 1718 + add x1, x1, 1424 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1049: +.L1015: ldrb w0, [x19,5] add x1, x20, :lo12:.LANCHOR0 add x0, x0, 8 - ldrb w2, [x1,3276] + ldrb w2, [x1,3300] mov w1, 65535 ldrh w0, [x19,x0,lsl 1] -.L1050: +.L1016: cmp w0, w1 - bne .L1054 + bne .L1020 ldrb w0, [x19,5] add w0, w0, 1 uxtb w0, w0 strb w0, [x19,5] cmp w0, w2 - bne .L1051 + bne .L1017 ldrh w0, [x19,2] strb wzr, [x19,5] add w0, w0, 1 strh w0, [x19,2] -.L1051: +.L1017: ldrb w0, [x19,5] add x0, x0, 8 ldrh w0, [x19,x0,lsl 1] - b .L1050 -.L1054: + b .L1016 +.L1020: add x20, x20, :lo12:.LANCHOR0 ldrh w2, [x19,2] - ldrh w1, [x20,3350] - ldrb w3, [x20,3276] + ldrh w1, [x20,3362] + ldrb w3, [x20,3300] mul w0, w0, w1 ldrh w1, [x19,6] orr w0, w0, w2 @@ -6443,11 +6360,11 @@ ftl_get_new_free_page: uxtb w1, w1 strb w1, [x19,5] cmp w3, w1 - bne .L1053 + bne .L1019 add w2, w2, 1 strb wzr, [x19,5] strh w2, [x19,2] -.L1053: +.L1019: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -6465,16 +6382,16 @@ ftl_ext_alloc_new_blk: mov w1, 65533 sub w0, w0, #1 cmp w1, w0, uxth - bcs .L1056 + bcs .L1022 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1676 - add x1, x1, 1464 + mov w2, 1749 + add x1, x1, 1448 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1056: +.L1022: adrp x19, .LANCHOR0 mov w1, 0 add x19, x19, :lo12:.LANCHOR0 @@ -6497,52 +6414,52 @@ ftl_ext_alloc_new_blk: ftl_total_vpn_update: adrp x1, .LANCHOR0 add x3, x1, :lo12:.LANCHOR0 - ldrh w2, [x3,3888] - cbnz w0, .L1058 + ldrh w2, [x3,3896] + cbnz w0, .L1024 cmp w2, 4 - bhi .L1058 + bhi .L1024 add w2, w2, 1 - strh w2, [x3,3888] - b .L1057 -.L1058: + strh w2, [x3,3896] + b .L1023 +.L1024: add x0, x1, :lo12:.LANCHOR0 mov w9, 65535 - strh wzr, [x0,3888] + strh wzr, [x0,3896] ldrh w6, [x0,576] ldr x7, [x0,600] ldr x8, [x0,584] mov x0, 0 mov w2, w0 mov w3, w0 -.L1060: +.L1026: cmp w6, w0, uxth - bls .L1068 + bls .L1034 ldrh w4, [x7,x0,lsl 1] cmp w4, w9 - beq .L1061 + beq .L1027 add x5, x8, x0, lsl 2 ldrb w5, [x5,2] and w5, w5, 224 cmp w5, 160 - bne .L1062 + bne .L1028 add w2, w2, w4 - b .L1061 -.L1062: + b .L1027 +.L1028: add w3, w3, w4 -.L1061: +.L1027: add x0, x0, 1 - b .L1060 -.L1068: + b .L1026 +.L1034: add x1, x1, :lo12:.LANCHOR0 ldr x0, [x1,608] ldr x1, [x1,2864] str w3, [x0,524] str w2, [x0,528] ldrh w1, [x1,120] - cbz w1, .L1057 + cbz w1, .L1023 udiv w2, w2, w1 str w2, [x0,532] -.L1057: +.L1023: ret .size ftl_total_vpn_update, .-ftl_total_vpn_update .align 2 @@ -6568,10 +6485,10 @@ ftl_vpn_update: ldr x0, [x1,600] ldrh w2, [x0,x19] mov w0, 0 - cbnz w2, .L1071 + cbnz w2, .L1037 mov w0, 1 str w0, [x1,2884] -.L1071: +.L1037: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -6587,13 +6504,13 @@ ftl_vpn_decrement: str x19, [sp,16] cmp w1, w0 adrp x2, .LANCHOR0 - beq .L1074 + beq .L1040 add x5, x2, :lo12:.LANCHOR0 uxtw x0, w1 lsl x3, x0, 1 ldr x4, [x5,600] ldrh w19, [x4,x3] - cbnz w19, .L1075 + cbnz w19, .L1041 ldr x2, [x5,584] add x0, x2, x0, lsl 2 mov w2, w19 @@ -6602,41 +6519,41 @@ ftl_vpn_decrement: add x0, x0, :lo12:.LC102 ubfx x3, x3, 5, 3 bl printk - b .L1081 -.L1075: + b .L1047 +.L1041: sub w19, w19, #1 strh w19, [x4,x3] -.L1074: +.L1040: add x19, x2, :lo12:.LANCHOR0 mov w0, 0 - ldrh w2, [x19,3224] + ldrh w2, [x19,3240] cmp w2, w1 - beq .L1076 + beq .L1042 mov w0, 65535 cmp w2, w0 - bne .L1077 - strh w1, [x19,3224] -.L1081: + bne .L1043 + strh w1, [x19,3240] +.L1047: mov w0, 0 - b .L1076 -.L1077: + b .L1042 +.L1043: mov w0, w2 str x1, [x29,40] bl ftl_vpn_update cmp w0, wzr - ldrh w3, [x19,3890] + ldrh w3, [x19,3898] cset w0, ne - ldrh w2, [x19,3224] + ldrh w2, [x19,3240] add w3, w3, 1 ldr x1, [x29,40] - strh w1, [x19,3224] + strh w1, [x19,3240] uxth w3, w3 cmp w3, 7 csel w3, w3, wzr, ls - strh w3, [x19,3890] + strh w3, [x19,3898] add x3, x19, x3, uxth 1 - strh w2, [x3,3232] -.L1076: + strh w2, [x3,3248] +.L1042: ldr x19, [sp,16] ldp x29, x30, [sp], 48 ret @@ -6649,73 +6566,73 @@ lpa_hash_update_ppa: uxtb w5, w0 add x6, x3, :lo12:.LANCHOR0 uxth w2, w2 - add x4, x6, 3360 + add x4, x6, 3368 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x8, [x6,3872] - ldr x12, [x6,3880] + ldr x8, [x6,3880] + ldr x12, [x6,3888] mov w6, 65535 ldrh w4, [x4,w5,sxtw 1] mov w11, w6 -.L1083: +.L1049: cmp w4, w11 - beq .L1087 + beq .L1053 uxtw x9, w4 uxth x7, w4 lsl x10, x9, 2 add x13, x8, x10 ldr w10, [x8,x10] cmp w10, w0 - bne .L1084 + bne .L1050 mov w4, -1 str w4, [x13] mov w4, 65535 cmp w6, w4 add x4, x3, :lo12:.LANCHOR0 - bne .L1085 - ldr x6, [x4,3880] - add x4, x4, 3360 + bne .L1051 + ldr x6, [x4,3888] + add x4, x4, 3368 ldrh w6, [x6,x7,lsl 1] strh w6, [x4,w5,sxtw 1] - b .L1086 -.L1085: - ldr x4, [x4,3880] + b .L1052 +.L1051: + ldr x4, [x4,3888] ldrh w8, [x4,x7,lsl 1] strh w8, [x4,w6,uxtw 1] -.L1086: +.L1052: add x4, x3, :lo12:.LANCHOR0 mov w6, -1 - ldr x4, [x4,3880] + ldr x4, [x4,3888] strh w6, [x4,x7,lsl 1] - b .L1087 -.L1084: + b .L1053 +.L1050: mov w6, w4 ldrh w4, [x12,x9,lsl 1] - b .L1083 -.L1087: + b .L1049 +.L1053: add x3, x3, :lo12:.LANCHOR0 uxtw x4, w2 cmn w1, #1 - ldr x6, [x3,3872] + ldr x6, [x3,3880] str w0, [x6,x4,lsl 2] - add x0, x3, 3360 + add x0, x3, 3368 ldrh w6, [x0,w5,sxtw 1] strh w2, [x0,w5,sxtw 1] - ldr x0, [x3,3880] + ldr x0, [x3,3888] strh w6, [x0,x4,lsl 1] - beq .L1089 - ldrh w0, [x3,3340] + beq .L1055 + ldrh w0, [x3,3264] mov w2, 21 mov w4, 1 sub w2, w2, w0 lsr w1, w1, w0 lsl w2, w4, w2 - ldrb w0, [x3,3338] + ldrb w0, [x3,3266] sub w2, w2, #1 and w1, w2, w1 udiv w0, w1, w0 bl ftl_vpn_decrement -.L1089: +.L1055: mov w0, -1 ldp x29, x30, [sp], 16 ret @@ -6725,51 +6642,463 @@ lpa_hash_update_ppa: .type ftl_mask_bad_block, %function ftl_mask_bad_block: stp x29, x30, [sp, -48]! - adrp x3, .LANCHOR0 - mov w2, 21 - add x1, x3, :lo12:.LANCHOR0 + adrp x6, .LANCHOR0 + ubfx x1, x0, 21, 3 + add x3, x6, :lo12:.LANCHOR0 add x29, sp, 0 - mov w4, 1 stp x19, x20, [sp,16] str x21, [sp,32] - ubfx x21, x0, 21, 3 - mov x19, x3 - ldrh w5, [x1,3340] - sub w2, w2, w5 - lsr w0, w0, w5 - lsl w2, w4, w2 - sub w2, w2, #1 - and w0, w2, w0 - ldrb w2, [x1,3338] - udiv w2, w0, w2 + mov x19, x6 + ldrb w5, [x3,3266] + ldrh w3, [x3,3264] + mul w2, w1, w5 + lsr w0, w0, w3 + uxtb w20, w2 + mov w2, 21 + sub w3, w2, w3 + mov w2, 1 + lsl w3, w2, w3 + cmp w5, w2 + sub w3, w3, #1 + and w3, w3, w0 + uxth w4, w3 + udiv w3, w3, w5 + uxth w21, w3 + bls .L1060 + sub w5, w5, #1 + and w5, w4, w5 + add w2, w20, w5 + uxtb w20, w2 +.L1060: adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - uxth w20, w2 - tbz x0, 14, .L1094 + tbz x0, 14, .L1061 adrp x0, .LC103 - mov w1, w21 - add x0, x0, :lo12:.LC103 mov w2, w20 + add x0, x0, :lo12:.LC103 + uxth w3, w3 bl printk -.L1094: +.L1061: add x0, x19, :lo12:.LANCHOR0 ldrh w1, [x0,576] - cmp w1, w20 - bls .L1093 + cmp w1, w21 + bls .L1059 ldr x0, [x0,584] - add x20, x0, x20, uxth 2 - mov w0, 1 - lsl w1, w0, w21 - ldrb w0, [x20,3] - orr w1, w1, w0 - strb w1, [x20,3] -.L1093: + mov w2, 1 + add x21, x0, x21, uxth 2 + ldrb w0, [x21,3] + lsl w2, w2, w20 + orr w2, w2, w0 + strb w2, [x21,3] +.L1059: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 ret .size ftl_mask_bad_block, .-ftl_mask_bad_block .align 2 + .global gc_free_bad_sblk + .type gc_free_bad_sblk, %function +gc_free_bad_sblk: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp,32] + add x21, x20, 2896 + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + uxth w25, w0 + mov w24, 0 + ldr w0, [x21,328] + cbz w0, .L1077 + adrp x23, .LC104 + mov w26, 21 + add x23, x23, :lo12:.LC104 +.L1078: + ldrb w1, [x20,3300] + cmp w1, w24 + bls .L1077 + ldrb w3, [x20,3266] + ldrh w19, [x20,3264] + cmp w3, 1 + sdiv w1, w24, w3 + sub w19, w26, w19 + uxth w2, w3 + lsl w19, w1, w19 + madd w19, w25, w2, w19 + uxth w19, w19 + bls .L1068 + sub w2, w2, #1 + and w2, w24, w2 + add w19, w19, w2 + uxth w19, w19 +.L1068: + mov w22, 0 +.L1069: + ldr w0, [x21,328] + cmp w22, w0 + bcs .L1079 + add x0, x21, x22, sxtw 1 + ldrh w0, [x0,332] + cmp w0, w19 + bne .L1070 + mov w1, w19 + mov x0, x23 + bl printk + ldrh w0, [x20,3264] + lsl w0, w19, w0 + bl ftl_mask_bad_block + ldr w2, [x21,328] + mov w1, w22 +.L1071: + cmp w1, w2 + bcs .L1080 + add w3, w1, 1 + add x1, x21, x1, sxtw 1 + add x0, x21, x3, sxtw 1 + ldrh w0, [x0,332] + strh w0, [x1,332] + uxth w1, w3 + b .L1071 +.L1080: + sub w2, w2, #1 + str w2, [x21,328] +.L1070: + add w22, w22, 1 + uxth w22, w22 + b .L1069 +.L1079: + add w24, w24, 1 + uxth w24, w24 + b .L1078 +.L1077: + mov w0, 0 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 80 + ret + .size gc_free_bad_sblk, .-gc_free_bad_sblk + .align 2 + .global ftl_free_sblk + .type ftl_free_sblk, %function +ftl_free_sblk: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR0 + str x23, [sp,48] + add x3, x19, :lo12:.LANCHOR0 + uxth x23, w0 + stp x21, x22, [sp,32] + lsl x20, x23, 2 + mov x1, x23 + ldr x7, [x3,584] + add x21, x7, x20 + ldrb w2, [x21,2] + ubfx x22, x2, 5, 3 + tbz x2, 3, .L1083 + ldr x6, [x3,2864] + ldrh w4, [x7,x20] + ldrh w10, [x3,3900] + ldrh w0, [x6,74] + and w5, w4, 2047 + ldr w4, [x7,x20] + add w0, w5, w0 + ldrh w6, [x6,72] + ubfx x9, x4, 11, 8 + ldrh w4, [x3,592] + uxth w8, w0 + add w6, w9, w6 + uxth w0, w6 + udiv w6, w8, w4 + add w6, w0, w6 + cmp w6, w10 + ble .L1084 + ldrh w0, [x3,2846] + ldrh w6, [x3,2854] + add w6, w6, w0 + ldrh w0, [x3,3332] + add w0, w0, 8 + cmp w6, w0 + blt .L1101 + ldrh w0, [x3,2844] + ldrh w6, [x3,2850] + add w6, w6, w0 + ldrh w0, [x3,2852] + add w6, w6, w0 + ldrh w0, [x3,3902] + add w0, w0, 8 + cmp w6, w0 + bge .L1101 + b .L1089 +.L1084: + madd w0, w0, w4, w8 + ldrh w6, [x3,3904] + cmp w0, w6 + ble .L1086 + ldrh w0, [x3,2844] + ldrh w6, [x3,2850] + add w6, w6, w0 + ldrh w0, [x3,2852] + add w6, w6, w0 + ldrh w0, [x3,3902] + add w0, w0, 8 + cmp w6, w0 + blt .L1089 + ldrh w0, [x3,2846] + ldrh w6, [x3,2854] + add w6, w6, w0 + ldrh w0, [x3,3332] + add w0, w0, 8 + cmp w6, w0 + bge .L1089 +.L1101: + mov w0, 2 + bfi w2, w0, 3, 2 + b .L1099 +.L1089: + and w2, w2, -25 +.L1099: + strb w2, [x21,2] +.L1086: + ldrb w0, [x21,2] + ands w0, w0, 24 + bne .L1090 + mul w4, w9, w4 + ldrh w0, [x7,x20] + add w4, w4, w4, lsl 1 + add w4, w5, w4, lsr 2 + ubfx x5, x4, 2, 9 + bfi w0, w5, 0, 11 + strh w0, [x7,x20] + b .L1083 +.L1090: + cmp w0, 16 + bne .L1083 + sdiv w4, w5, w4 + ldr w0, [x7,x20] + add w4, w4, w4, lsl 1 + add w4, w9, w4, lsr 2 + ubfx x4, x4, 2, 6 + bfi w0, w4, 11, 8 + str w0, [x7,x20] +.L1083: + mov w0, w1 + str x1, [x29,72] + add w22, w22, 6 + bl zftl_remove_data_node + and w22, w22, 7 + add x3, x19, :lo12:.LANCHOR0 + cmp w22, 4 + ldr x1, [x29,72] + ldr x2, [x3,584] + add x2, x2, x20 + ldrb w0, [x2,2] + and w0, w0, 31 + strb w0, [x2,2] + ldr x0, [x3,600] + strh wzr, [x0,x23,lsl 1] + bhi .L1092 + mov w0, w1 + bl gc_free_bad_sblk + ldr x1, [x29,72] +.L1092: + ldrb w0, [x21,2] + tbz x0, 3, .L1093 + add x19, x19, :lo12:.LANCHOR0 + ldr x2, [x19,608] + ldrh w0, [x2,584] + cmp w0, w1 + bne .L1094 + mov w0, -1 + ldrh w3, [x2,588] + strh w0, [x2,584] + mov w0, 65535 + cmp w3, w0 + bne .L1093 + adrp x0, .LC105 + strh w1, [x2,588] + add x0, x0, :lo12:.LC105 + b .L1100 +.L1094: + ldrh w0, [x2,586] + cmp w0, w1 + bne .L1093 + mov w0, -1 + ldrh w3, [x2,590] + strh w0, [x2,586] + mov w0, 65535 + cmp w3, w0 + bne .L1093 + adrp x0, .LC106 + strh w1, [x2,590] + add x0, x0, :lo12:.LC106 +.L1100: + bl printk + b .L1081 +.L1093: + mov w0, w1 + bl zftl_insert_free_list +.L1081: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldr x23, [sp,48] + ldp x29, x30, [sp], 80 + ret + .size ftl_free_sblk, .-ftl_free_sblk + .align 2 + .global gc_free_src_blk + .type gc_free_src_blk, %function +gc_free_src_blk: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x23, x24, [sp,48] + stp x21, x22, [sp,32] + adrp x23, .LANCHOR0 + adrp x21, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR0 + add x21, x21, :lo12:.LANCHOR1 + stp x19, x20, [sp,16] + stp x25, x26, [sp,64] + mov w20, 0 + add x24, x23, 2896 + add x21, x21, 1472 +.L1103: + ldrh w0, [x24,56] + adrp x25, .LANCHOR0 + cmp w0, w20 + bls .L1141 + add x0, x24, x20, sxtw 1 + ldrh w22, [x0,58] + ldr x0, [x23,600] + lsl x26, x22, 1 + mov x19, x22 + ldrh w2, [x0,x26] + cbz w2, .L1104 + adrp x0, .LC107 + mov w1, w22 + add x0, x0, :lo12:.LC107 + bl printk +.L1104: + add x0, x25, :lo12:.LANCHOR0 + ldr x1, [x0,600] + strh wzr, [x1,x26] + ldr x1, [x0,600] + ldrh w1, [x1,x26] + cbnz w1, .L1105 + ldr x0, [x0,584] + add x22, x0, x22, lsl 2 + adrp x0, .LANCHOR2 + ldr w0, [x0,#:lo12:.LANCHOR2] + tbz x0, 8, .L1106 + ldrb w2, [x22,2] + adrp x0, .LC108 + add x0, x0, :lo12:.LC108 + mov w1, w19 + ubfx x2, x2, 5, 3 + bl printk +.L1106: + ldrb w0, [x22,2] + tst w0, 192 + beq .L1119 + and w0, w0, 224 + cmp w0, 224 + bne .L1107 +.L1119: + adrp x0, .LC0 + mov x1, x21 + mov w2, 931 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L1107: + mov w0, w19 + add x25, x25, :lo12:.LANCHOR0 + bl ftl_free_sblk + ldr x2, [x25,608] + ldrh w1, [x2,124] + cbz w1, .L1109 + mov x0, 0 +.L1111: + add x4, x2, x0, lsl 1 + mov w3, w0 + ldrh w4, [x4,392] + cmp w4, w19 + bne .L1110 + add x0, x2, x3, sxtw 1 + mov w3, -1 + strh w3, [x0,392] + sub w1, w1, #1 + strh w1, [x2,124] + b .L1109 +.L1110: + add x0, x0, 1 + cmp x0, 64 + bne .L1111 +.L1109: + ldrh w1, [x2,120] + cbz w1, .L1112 + mov x0, 0 +.L1114: + add x4, x2, x0, lsl 1 + mov w3, w0 + ldrh w4, [x4,136] + cmp w4, w19 + bne .L1113 + add x0, x2, x3, sxtw 1 + mov w3, -1 + strh w3, [x0,136] + sub w1, w1, #1 + strh w1, [x2,120] + b .L1112 +.L1113: + add x0, x0, 1 + cmp x0, 64 + bne .L1114 +.L1112: + ldrh w1, [x2,122] + cbz w1, .L1115 + mov x0, 0 +.L1117: + add x4, x2, x0, lsl 1 + mov w3, w0 + ldrh w4, [x4,264] + cmp w4, w19 + bne .L1116 + add x0, x2, x3, sxtw 1 + mov w3, -1 + strh w3, [x0,264] + sub w1, w1, #1 + strh w1, [x2,122] + b .L1115 +.L1116: + add x0, x0, 1 + cmp x0, 64 + bne .L1117 + b .L1115 +.L1105: + mov w0, w19 + mov w1, 1 + mov w2, 0 + bl gc_add_sblk +.L1115: + add w20, w20, 1 + uxth w20, w20 + b .L1103 +.L1141: + strh wzr, [x24,56] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 80 + ret + .size gc_free_src_blk, .-gc_free_src_blk + .align 2 .global print_ftl_debug_info .type print_ftl_debug_info, %function print_ftl_debug_info: @@ -6779,33 +7108,38 @@ print_ftl_debug_info: str x19, [sp,48] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldr x7, [x19,608] - ldrh w6, [x19,2854] - ldrh w1, [x19,2844] - ldr w0, [x7,528] - str w0, [sp] + ldr x2, [x19,2864] + ldr x0, [x19,608] + ldrh w8, [x19,2854] + ldrh w1, [x2,148] + ldrh w2, [x2,146] + str w8, [sp] + ldrh w6, [x19,2850] + ldr w8, [x0,524] + str w8, [sp,8] + ldrh w7, [x19,2852] + ldr w0, [x0,528] + str w0, [sp,16] ldr w0, [x19,2840] - str w0, [sp,8] - adrp x0, .LC104 - ldrh w2, [x19,2846] - add x0, x0, :lo12:.LC104 - ldr w7, [x7,524] - ldrh w3, [x19,2848] - ldrh w4, [x19,2850] - ldrh w5, [x19,2852] + ldrh w3, [x19,2844] + ldrh w4, [x19,2846] + ldrh w5, [x19,2848] + str w0, [sp,24] + adrp x0, .LC109 + add x0, x0, :lo12:.LC109 bl printk ldr x5, [x19,2864] - adrp x0, .LC105 + adrp x0, .LC110 ldrb w3, [x19,2857] - add x0, x0, :lo12:.LC105 + add x0, x0, :lo12:.LC110 ldr w4, [x5,8] ldr w1, [x5,20] ldr w2, [x5,28] ldr w5, [x5,64] bl printk ldr x2, [x19,2864] - adrp x0, .LC106 - add x0, x0, :lo12:.LC106 + adrp x0, .LC111 + add x0, x0, :lo12:.LC111 ldr w3, [x2,16] ldr w1, [x2,52] ldr w2, [x2,60] @@ -6823,18 +7157,26 @@ print_ftl_debug_info: str w0, [sp,8] ldrh w0, [x7,98] str w0, [sp,16] - adrp x0, .LC107 - add x0, x0, :lo12:.LC107 + adrp x0, .LC112 + add x0, x0, :lo12:.LC112 ldr w2, [x7,84] ldr w7, [x7,80] bl printk + ldrh w5, [x19,2872] + adrp x0, .LC113 ldrh w1, [x19,2874] - adrp x0, .LC108 + add x0, x0, :lo12:.LC113 ldrh w2, [x19,2876] - add x0, x0, :lo12:.LC108 ldrh w3, [x19,2878] ldrh w4, [x19,2880] - ldrh w5, [x19,2872] + bl printk + ldr x4, [x19,608] + adrp x0, .LC114 + add x0, x0, :lo12:.LC114 + ldrh w1, [x4,584] + ldrh w2, [x4,586] + ldrh w3, [x4,588] + ldrh w4, [x4,590] bl printk sub sp, x29, #32 ldr x19, [sp,48] @@ -6851,47 +7193,47 @@ ftl_write_buf: stp x19, x20, [sp,16] str x21, [sp,32] mov x20, x0 - cbnz x0, .L1101 + cbnz x0, .L1144 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 662 + mov w2, 668 add x1, x1, 1488 add x0, x0, :lo12:.LC0 bl printk bl dump_stack bl print_ftl_debug_info mov w0, -1 - b .L1110 -.L1101: + b .L1153 +.L1144: adrp x19, .LANCHOR0 ldrb w1, [x20,56] add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2832] cmp w1, w0 - bls .L1106 + bls .L1149 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 667 + mov w2, 673 add x1, x1, 1488 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1106: +.L1149: ldrb w0, [x20,56] - cbz w0, .L1103 + cbz w0, .L1146 add x21, x19, :lo12:.LANCHOR0 ldrb w1, [x21,2832] cmp w1, w0 - bcs .L1104 -.L1103: + bcs .L1147 +.L1146: mov x0, x20 add x19, x19, :lo12:.LANCHOR0 bl buf_free ldrb w0, [x19,2856] - b .L1110 -.L1104: + b .L1153 +.L1147: add x0, x21, 2888 mov x1, x20 bl buf_add_tail @@ -6908,7 +7250,7 @@ ftl_write_buf: add w1, w1, 1 str w1, [x0,32] mov w0, w2 -.L1110: +.L1153: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -6918,87 +7260,110 @@ ftl_write_buf: .global ftl_write_completed .type ftl_write_completed, %function ftl_write_completed: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR0 - str x25, [sp,64] - stp x21, x22, [sp,32] add x19, x19, :lo12:.LANCHOR0 - adrp x21, .LC109 + add x20, x19, 784 + stp x21, x22, [sp,32] stp x23, x24, [sp,48] - add x22, x19, 784 - mov w23, 21 - mov w24, 1 - add x21, x21, :lo12:.LC109 -.L1112: - ldrb w0, [x19,3892] - cmp w0, 255 - beq .L1119 - sbfiz x0, x0, 6, 32 - add x20, x22, x0 - add x4, x20, 32 - ldrb w0, [x22,x0] - strb w0, [x19,3892] - ldr w0, [x20,52] + mov x21, x19 + mov w23, 0 + mov x22, x20 +.L1155: + ldrb w3, [x19,3906] + cmp w3, 255 + beq .L1164 + lsl x0, x3, 6 + add x24, x20, x0 + add x4, x24, 32 + ldrb w0, [x20,x0] + strb w0, [x19,3906] + ldr w0, [x24,52] cmn w0, #1 - bne .L1113 - ldrh w2, [x19,3340] - mov x0, x21 - ldr w3, [x4,8] - sub w1, w23, w2 - lsl w1, w24, w1 - lsr w2, w3, w2 - sub w1, w1, #1 - and w2, w1, w2 - ldrb w1, [x19,3338] - udiv w1, w2, w1 - ldr w2, [x4,4] - uxth w25, w1 - mov w1, w25 - bl printk - mov w1, 1 - mov w0, w25 - mov w2, 0 - bl gc_add_sblk + bne .L1156 + ldrh w1, [x19,3264] + mov w0, 21 + mov w2, 1 + sub w0, w0, w1 + lsl w0, w2, w0 + ldr w2, [x4,8] + sub w0, w0, #1 + lsr w1, w2, w1 + mov w2, 65535 + and w1, w0, w1 + ldrb w0, [x19,3266] + udiv w1, w1, w0 ldr x0, [x19,608] + ldr w5, [x0,560] + cmp w5, w2 + uxth w23, w1 + and w1, w1, w2 + bne .L1157 + str w1, [x0,560] + ldr w2, [x4,8] + str w2, [x0,564] +.L1157: + add x3, x22, x3, lsl 6 + adrp x0, .LC115 + add x3, x3, 32 + add x0, x0, :lo12:.LC115 + ldr w2, [x3,4] + ldr w3, [x3,8] + bl printk + ldr x0, [x21,608] ldr w1, [x0,556] add w1, w1, 1 str w1, [x0,556] ldrh w1, [x0,16] - cmp w1, w25 - bne .L1114 + cmp w1, w23 + bne .L1158 strh wzr, [x0,22] - b .L1115 -.L1114: + b .L1159 +.L1158: ldrh w1, [x0,48] - cmp w1, w25 - bne .L1115 + cmp w1, w23 + bne .L1159 strh wzr, [x0,54] -.L1115: - mov x0, x20 +.L1159: + mov x0, x24 + mov w23, 1 bl ftl_write_buf - b .L1112 -.L1113: + b .L1155 +.L1156: + cmp w23, 1 + bne .L1161 + ldr w1, [x4,4] + adrp x0, .LC116 + ldr w2, [x4,8] + add x0, x0, :lo12:.LC116 + bl printk + mov x0, x24 + bl ftl_write_buf + b .L1155 +.L1161: ldr w0, [x4,4] ldr w1, [x4,12] - ldrh w2, [x20,48] + ldrh w2, [x24,48] bl lpa_hash_update_ppa - ldrb w0, [x20,2] - tbz x0, 2, .L1117 + ldrb w0, [x24,2] + and w23, w0, 4 + uxtb w23, w23 + cbz w23, .L1162 and w0, w0, -3 - strb w0, [x20,2] - b .L1112 -.L1117: - mov x0, x20 + mov w23, 0 + strb w0, [x24,2] + b .L1155 +.L1162: + mov x0, x24 bl buf_free - b .L1112 -.L1119: + b .L1155 +.L1164: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 80 + ldp x29, x30, [sp], 64 ret .size ftl_write_completed, .-ftl_write_completed .align 2 @@ -7009,41 +7374,41 @@ zftl_add_read_buf: add x29, sp, 0 stp x19, x20, [sp,16] mov x20, x0 - cbnz x0, .L1121 + cbnz x0, .L1166 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 949 + mov w2, 964 add x1, x1, 1504 add x0, x0, :lo12:.LC0 bl printk bl dump_stack bl print_ftl_debug_info - b .L1120 -.L1121: + b .L1165 +.L1166: adrp x19, .LANCHOR0 ldrb w1, [x20,56] add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2832] cmp w1, w0 - bls .L1124 + bls .L1169 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 954 + mov w2, 969 add x1, x1, 1504 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1124: +.L1169: add x19, x19, :lo12:.LANCHOR0 mov x1, x20 - add x0, x19, 3893 + add x0, x19, 3907 bl buf_add_tail - ldrb w0, [x19,3894] + ldrb w0, [x19,3908] add w0, w0, 1 - strb w0, [x19,3894] -.L1120: + strb w0, [x19,3908] +.L1165: ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -7068,33 +7433,33 @@ ftl_alloc_sblk: uxth w19, w0 mov w0, 65535 cmp w19, w0 - beq .L1127 + beq .L1172 adrp x0, .LANCHOR0+584 ldr x21, [x0,#:lo12:.LANCHOR0+584] add x21, x21, x19, uxth 2 ldrb w0, [x21,2] tst w0, 224 - beq .L1128 + beq .L1173 adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 827 + mov w2, 833 add x1, x1, 1528 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1128: +.L1173: ldrb w1, [x21,2] bfi w1, w20, 5, 3 ubfx x2, x1, 3, 2 orr w0, w22, w2 bfi w1, w0, 3, 2 strb w1, [x21,2] - b .L1134 -.L1127: - adrp x21, .LC110 + b .L1179 +.L1172: + adrp x21, .LC117 bl print_ftl_debug_info - add x21, x21, :lo12:.LC110 + add x21, x21, :lo12:.LC117 mov w1, w19 mov w2, w20 mov x0, x21 @@ -7111,12 +7476,12 @@ ftl_alloc_sblk: adrp x1, .LANCHOR1 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 837 + mov w2, 843 add x1, x1, 1528 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1134: +.L1179: mov w0, w19 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -7132,9 +7497,9 @@ sblk_init: mov w1, -1 add x0, x0, :lo12:.LANCHOR0 strb w1, [x0,2835] - strb w1, [x0,3892] - strb w1, [x0,3895] - strb w1, [x0,3256] + strb w1, [x0,3906] + strb w1, [x0,3909] + strb w1, [x0,3280] mov w0, 0 ret .size sblk_init, .-sblk_init @@ -7143,24 +7508,24 @@ sblk_init: .type dump_sblk_queue, %function dump_sblk_queue: stp x29, x30, [sp, -48]! - adrp x0, .LC111 + adrp x0, .LC118 add x29, sp, 0 stp x19, x20, [sp,16] adrp x20, .LANCHOR0 str x21, [sp,32] add x20, x20, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC111 + add x0, x0, :lo12:.LC118 ldrb w1, [x20,2835] bl printk ldrb w19, [x20,2835] cmp w19, 255 - beq .L1136 + beq .L1181 add x20, x20, 784 sbfiz x19, x19, 6, 32 - adrp x21, .LC112 + adrp x21, .LC119 add x19, x20, x19 - add x21, x21, :lo12:.LC112 -.L1138: + add x21, x21, :lo12:.LC119 +.L1183: ldrb w1, [x19,1] mov x0, x21 ldrb w2, [x19,58] @@ -7168,11 +7533,11 @@ dump_sblk_queue: bl printk ldrb w19, [x19] cmp w19, 255 - beq .L1136 + beq .L1181 sbfiz x19, x19, 6, 32 add x19, x20, x19 - b .L1138 -.L1136: + b .L1183 +.L1181: ldp x19, x20, [sp,16] ldr x21, [sp,32] ldp x29, x30, [sp], 48 @@ -7188,10 +7553,10 @@ queue_lun_state: mov w0, 0 ldrb w2, [x3,2835] cmp w2, 255 - beq .L1146 - ldrh w8, [x3,3340] + beq .L1191 + ldrh w8, [x3,3264] mov w4, 21 - ldrb w7, [x3,3338] + ldrb w7, [x3,3266] mov w0, 1 sub w4, w4, w8 ubfx x9, x5, 21, 3 @@ -7200,60 +7565,60 @@ queue_lun_state: sub w4, w4, #1 asr w5, w5, w8 uxth w7, w7 - adrp x10, .L1149 + adrp x10, .L1194 uxth w4, w4 and w5, w5, w7 and w5, w5, w4 add x3, x3, 784 - add x10, x10, :lo12:.L1149 -.L1152: + add x10, x10, :lo12:.L1194 +.L1197: add x0, x3, x2, lsl 6 ldr w6, [x0,40] ubfx x11, x6, 21, 3 cmp w11, w9 - bne .L1147 + bne .L1192 lsr w6, w6, w8 ldrb w0, [x0,58] and w6, w7, w6 and w6, w4, w6 cmp w6, w5 - bne .L1148 + bne .L1193 cmp w1, 1 - beq .L1150 - b .L1146 -.L1148: + beq .L1195 + b .L1191 +.L1193: cmp w1, 3 - bhi .L1147 + bhi .L1192 ldrb w6, [x10,w1,uxtw] - adr x11, .Lrtx1149 + adr x11, .Lrtx1194 add x6, x11, w6, sxtb #2 br x6 -.Lrtx1149: +.Lrtx1194: .section .rodata .align 0 .align 2 -.L1149: - .byte (.L1146 - .Lrtx1149) / 4 - .byte (.L1150 - .Lrtx1149) / 4 - .byte (.L1151 - .Lrtx1149) / 4 - .byte (.L1146 - .Lrtx1149) / 4 +.L1194: + .byte (.L1191 - .Lrtx1194) / 4 + .byte (.L1195 - .Lrtx1194) / 4 + .byte (.L1196 - .Lrtx1194) / 4 + .byte (.L1191 - .Lrtx1194) / 4 .text -.L1150: - sub w6, w0, #6 +.L1195: + sub w6, w0, #7 and w6, w6, -3 uxtb w6, w6 - cbz w6, .L1147 - b .L1146 -.L1151: - cmp w0, 10 - bne .L1146 -.L1147: + cbz w6, .L1192 + b .L1191 +.L1196: + cmp w0, 11 + bne .L1191 +.L1192: lsl x2, x2, 6 ldrb w2, [x3,x2] cmp w2, 255 - bne .L1152 + bne .L1197 mov w0, 0 -.L1146: +.L1191: ret .size queue_lun_state, .-queue_lun_state .align 2 @@ -7265,80 +7630,80 @@ queue_remove_completed_req: add x0, x3, :lo12:.LANCHOR0 mov w11, -1 add x4, x0, 784 - add x12, x0, 3895 - add x13, x0, 3892 + add x12, x0, 3909 + add x13, x0, 3906 ldrb w7, [x0,2835] - ldrb w9, [x0,3895] - ldrb w8, [x0,3256] - ldrb w10, [x0,3892] -.L1162: + ldrb w9, [x0,3909] + ldrb w8, [x0,3280] + ldrb w10, [x0,3906] +.L1207: cmp w7, 255 - beq .L1163 + beq .L1208 sbfiz x6, x7, 6, 32 sxtw x1, w7 add x2, x4, x6 ldrb w2, [x2,58] - sub w2, w2, #11 + sub w2, w2, #12 uxtb w2, w2 cmp w2, 1 - bls .L1164 - cbz w5, .L1161 + bls .L1209 + cbz w5, .L1206 strb w7, [x0,2835] - b .L1161 -.L1164: + b .L1206 +.L1209: lsl x5, x1, 6 ldrb w7, [x4,x6] add x2, x4, x5 strb w11, [x4,x5] ldrb w5, [x2,59] cmp w5, 1 - bne .L1167 + bne .L1212 ldrh w2, [x2,50] - cbnz w2, .L1175 + cbnz w2, .L1220 mov w2, w10 mov x5, x13 - b .L1168 -.L1167: - cbz w5, .L1185 -.L1169: + b .L1213 +.L1212: + cbz w5, .L1230 +.L1214: mov w5, 1 - b .L1162 -.L1185: + b .L1207 +.L1230: ldr w2, [x2,36] cmn w2, #1 - beq .L1169 + beq .L1214 mov w2, w9 mov x5, x12 - b .L1168 -.L1175: + b .L1213 +.L1220: mov w2, w8 - add x5, x0, 3256 -.L1168: + add x5, x0, 3280 +.L1213: cmp w2, 255 - bne .L1173 + bne .L1218 add x3, x3, :lo12:.LANCHOR0 add x1, x3, x1, lsl 6 strb w7, [x3,2835] ldrb w0, [x1,785] strb w0, [x5] - b .L1161 -.L1173: + b .L1206 +.L1218: mov w5, w2 sbfiz x2, x2, 6, 32 ldrb w2, [x4,x2] cmp w2, 255 - bne .L1173 + bne .L1218 add x1, x4, x1, lsl 6 sbfiz x5, x5, 6, 32 ldrb w1, [x1,1] strb w1, [x4,x5] - b .L1169 -.L1163: - cbz w5, .L1161 + b .L1214 +.L1208: + cbz w5, .L1206 add x3, x3, :lo12:.LANCHOR0 mov w0, -1 strb w0, [x3,2835] -.L1161: +.L1206: ret .size queue_remove_completed_req, .-queue_remove_completed_req .align 2 @@ -7356,19 +7721,19 @@ pm_alloc_new_blk: ldrh w1, [x2,690] add w1, w1, 1 uxth w0, w1 - ldrb w1, [x3,3276] + ldrb w1, [x3,3300] strh w0, [x2,690] cmp w1, w0 - bls .L1187 + bls .L1232 add x0, x2, x0, sxtw 1 ldrh w1, [x0,672] mov w0, 65535 cmp w1, w0 - bne .L1188 -.L1187: - adrp x22, .LC113 - add x22, x22, :lo12:.LC113 -.L1200: + bne .L1233 +.L1232: + adrp x22, .LC120 + add x22, x22, :lo12:.LC120 +.L1245: mov w0, 1 add x20, x19, :lo12:.LANCHOR0 bl ftl_alloc_sblk @@ -7380,7 +7745,7 @@ pm_alloc_new_blk: add x1, x1, 672 bl ftl_get_blk_list_in_sblk uxth w0, w0 - cbnz w0, .L1189 + cbnz w0, .L1234 mov w1, w21 mov x0, x22 bl printk @@ -7389,23 +7754,23 @@ pm_alloc_new_blk: ldrb w2, [x1,2] orr w2, w2, -32 strb w2, [x1,2] - b .L1200 -.L1189: + b .L1245 +.L1234: ldr x1, [x20,2864] mov w0, 1 mov w2, 65535 - str w0, [x20,3896] + str w0, [x20,3912] mov x20, 0 strh wzr, [x1,690] -.L1191: +.L1236: add x3, x1, x20, lsl 1 uxth w0, w20 ldrh w3, [x3,416] cmp w3, w2 - beq .L1190 + beq .L1235 add x20, x20, 1 cmp x20, 128 - bne .L1191 + bne .L1236 adrp x0, .LC0 adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 @@ -7414,7 +7779,7 @@ pm_alloc_new_blk: bl printk bl dump_stack mov w0, w20 -.L1190: +.L1235: add x1, x19, :lo12:.LANCHOR0 ldr x1, [x1,2864] add x0, x1, x0, sxtw 1 @@ -7422,7 +7787,7 @@ pm_alloc_new_blk: ldrh w0, [x1,688] add w0, w0, 1 strh w0, [x1,688] -.L1188: +.L1233: add x0, x19, :lo12:.LANCHOR0 ldr x1, [x0,2864] ldrh w0, [x1,690] @@ -7431,7 +7796,7 @@ pm_alloc_new_blk: mov w0, 65533 sub w1, w20, #1 cmp w0, w1, uxth - bcs .L1193 + bcs .L1238 adrp x0, .LC0 adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 @@ -7439,11 +7804,11 @@ pm_alloc_new_blk: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1193: +.L1238: add x19, x19, :lo12:.LANCHOR0 mov w0, 21 ldr x1, [x19,2864] - ldrh w2, [x19,3340] + ldrh w2, [x19,3264] sub w0, w0, w2 strh wzr, [x1,696] asr w4, w20, w0 @@ -7451,17 +7816,17 @@ pm_alloc_new_blk: strh w4, [x1,694] adrp x1, .LANCHOR2 ldr w1, [x1,#:lo12:.LANCHOR2] - tbz x1, 12, .L1197 + tbz x1, 12, .L1242 mov w2, 1 mov w1, w20 lsl w2, w2, w0 - adrp x0, .LC114 - add x0, x0, :lo12:.LC114 + adrp x0, .LC121 + add x0, x0, :lo12:.LC121 sub w2, w2, #1 mov w3, w20 uxth w4, w4 bl printk -.L1197: +.L1242: mov w0, 0 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -7480,58 +7845,58 @@ pm_select_ram_region: str x19, [sp,16] add x2, x2, :lo12:.LANCHOR0 mov x19, 0 -.L1204: - add x1, x2, 3904 +.L1249: + add x1, x2, 3920 lsl x4, x19, 4 uxth w0, w19 ldrh w4, [x4,x1] cmp w4, w3 - beq .L1203 + beq .L1248 add x19, x19, 1 cmp x19, 32 - bne .L1204 + bne .L1249 mov x0, 0 mov w3, 32768 -.L1206: +.L1251: add x2, x1, x0, lsl 4 uxth w4, w0 ldrh w2, [x2,2] - tbnz x2, 15, .L1205 + tbnz x2, 15, .L1250 cmp w2, w3 - bcs .L1205 + bcs .L1250 mov w3, w2 mov w19, w4 -.L1205: +.L1250: add x0, x0, 1 cmp x0, 32 - bne .L1206 + bne .L1251 cmp w19, 32 mov w0, w19 - bne .L1203 - adrp x0, .LANCHOR4+64 + bne .L1248 + adrp x0, .LANCHOR4+80 mov w2, -1 mov w1, 0 - ldrb w3, [x0,#:lo12:.LANCHOR4+64] + ldrb w3, [x0,#:lo12:.LANCHOR4+80] adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 3904 -.L1208: + add x0, x0, 3920 +.L1253: ldrh w5, [x0,2] cmp w5, w2 - bcs .L1207 + bcs .L1252 ldrh w4, [x0] cmp w4, w3 csel w2, w2, w5, eq cmp w4, w3 csel w19, w19, w1, eq -.L1207: +.L1252: add w1, w1, 1 add x0, x0, 16 uxth w1, w1 cmp w1, 32 - bne .L1208 + bne .L1253 cmp w19, 32 - bne .L1209 + bne .L1254 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 @@ -7540,9 +7905,9 @@ pm_select_ram_region: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1209: +.L1254: mov w0, w19 -.L1203: +.L1248: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -7566,57 +7931,57 @@ flash_lsb_page_tbl_build: add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR0 - cbnz w0, .L1217 + cbnz w0, .L1262 mov x0, 0 add x2, x19, :lo12:.LANCHOR0 -.L1218: +.L1263: add x1, x2, 4 strh w0, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L1218 -.L1224: + bne .L1263 +.L1269: adrp x20, .LANCHOR4 mov w1, 255 add x20, x20, :lo12:.LANCHOR4 mov w2, 1024 - add x0, x20, 68 + add x0, x20, 84 add x19, x19, :lo12:.LANCHOR0 bl ftl_memset mov x0, 0 - b .L1219 -.L1217: + b .L1264 +.L1262: cmp w0, 1 - bne .L1220 + bne .L1265 mov x0, 0 mov w4, 3 mov w5, 2 add x3, x19, :lo12:.LANCHOR0 -.L1223: +.L1268: cmp x0, 3 uxth w2, w0 mov w1, w2 - bls .L1221 + bls .L1266 ubfiz w1, w2, 1, 15 and w2, w2, 1 cmp w2, wzr csel w2, w4, w5, ne sub w1, w1, w2 uxth w1, w1 -.L1221: +.L1266: add x2, x3, 4 strh w1, [x2,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L1223 - b .L1224 -.L1220: + bne .L1268 + b .L1269 +.L1265: cmp w0, 2 - bne .L1225 + bne .L1270 mov w1, 65535 mov x0, 0 add x4, x19, :lo12:.LANCHOR0 -.L1227: +.L1272: add x3, x4, 4 cmp x0, 1 uxth w2, w0 @@ -7626,36 +7991,36 @@ flash_lsb_page_tbl_build: add x0, x0, 1 cmp x0, 256 uxth w1, w1 - bne .L1227 - b .L1224 -.L1225: + bne .L1272 + b .L1269 +.L1270: cmp w0, 3 - bne .L1228 + bne .L1273 mov x0, 0 mov w4, 5 mov w5, 4 add x3, x19, :lo12:.LANCHOR0 -.L1231: +.L1276: cmp x0, 5 uxth w2, w0 mov w1, w2 - bls .L1229 + bls .L1274 ubfiz w1, w2, 1, 15 and w2, w2, 1 cmp w2, wzr csel w2, w4, w5, ne sub w1, w1, w2 uxth w1, w1 -.L1229: +.L1274: add x2, x3, 4 strh w1, [x2,x0,lsl 1] add x0, x0, 1 cmp x0, 256 - bne .L1231 - b .L1224 -.L1228: + bne .L1276 + b .L1269 +.L1273: cmp w0, 4 - bne .L1232 + bne .L1277 add x2, x19, :lo12:.LANCHOR0 mov w5, 7 add x1, x2, 4 @@ -7675,7 +8040,7 @@ flash_lsb_page_tbl_build: strh w0, [x1,14] mov w0, 8 strh w2, [x1,6] -.L1234: +.L1279: and w3, w0, 1 ubfiz w2, w0, 1, 15 add w0, w0, 1 @@ -7686,48 +8051,67 @@ flash_lsb_page_tbl_build: sub w2, w2, w3 cmp w0, 256 strh w2, [x1,14] - bne .L1234 - b .L1224 -.L1232: + bne .L1279 + b .L1269 +.L1277: cmp w0, 5 - bne .L1235 + bne .L1280 mov x0, 0 add x2, x19, :lo12:.LANCHOR0 -.L1236: +.L1281: add x1, x2, 4 strh w0, [x1,x0,lsl 1] add x0, x0, 1 cmp x0, 16 - bne .L1236 + bne .L1281 mov x0, 0 -.L1237: +.L1282: add x2, x1, x0 add w3, w0, 16 add x0, x0, 2 cmp x0, 480 strh w3, [x2,32] - bne .L1237 - b .L1224 -.L1235: + bne .L1282 + b .L1269 +.L1280: cmp w0, 8 - bne .L1224 + bne .L1283 mov x0, 0 add x2, x19, :lo12:.LANCHOR0 -.L1238: +.L1284: add x1, x2, 4 strh w0, [x0,x1] add x0, x0, 2 cmp x0, 512 - bne .L1238 - b .L1224 -.L1219: + bne .L1284 + b .L1269 +.L1283: + cmp w0, 9 + bne .L1269 + add x0, x19, :lo12:.LANCHOR0 + add x1, x0, 4 + strh wzr, [x0,4] + mov w0, 1 + strh w0, [x1,2] + mov w0, 2 + strh w0, [x1,4] + mov x0, 0 +.L1285: + add x2, x1, x0 + add w3, w0, 3 + add x0, x0, 2 + cmp x0, 506 + strh w3, [x2,6] + bne .L1285 + b .L1269 +.L1264: add x1, x19, 4 - add x2, x20, 68 + add x2, x20, 84 ldrh w1, [x0,x1] add x0, x0, 2 cmp x0, 512 strh w1, [x2,w1,sxtw 1] - bne .L1219 + bne .L1264 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 ret @@ -7745,14 +8129,14 @@ flash_die_info_init: ldr w0, [x19,#:lo12:.LANCHOR2] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - tbz x0, 12, .L1255 + tbz x0, 12, .L1303 adrp x1, .LANCHOR3 adrp x0, .LC4 add x1, x1, :lo12:.LANCHOR3 add x0, x0, :lo12:.LC4 add x1, x1, 48 bl printk -.L1255: +.L1303: add x24, x19, :lo12:.LANCHOR2 adrp x21, .LANCHOR0 add x20, x21, :lo12:.LANCHOR0 @@ -7770,23 +8154,23 @@ flash_die_info_init: strb wzr, [x20,633] sdiv w0, w0, w1 mov w1, 0 - strh w0, [x25,1092] + strh w0, [x25,1108] add x0, x20, 736 bl ftl_memset - add x0, x25, 1096 + add x0, x25, 1112 mov w1, 0 mov w2, 32 bl ftl_memset -.L1257: +.L1305: add x0, x20, 744 ldrb w2, [x24,8] add x1, x28, x23, lsl 3 strb w26, [x23,x0] mov x0, x27 bl flash_mem_cmp8 - cbnz w0, .L1256 + cbnz w0, .L1304 ldrb w1, [x20,633] - add x2, x25, 1096 + add x2, x25, 1112 str w0, [x2,w1,sxtw 2] add w0, w1, 1 strb w0, [x20,633] @@ -7794,16 +8178,16 @@ flash_die_info_init: add x1, x20, x1, sxtw strb w0, [x1,736] bl zftl_flash_enter_slc_mode -.L1256: +.L1304: add x23, x23, 1 cmp x23, 4 - bne .L1257 + bne .L1305 add x0, x19, :lo12:.LANCHOR2 add x1, x0, 8 ldrb w2, [x1,8] cmp w2, 2 - beq .L1258 -.L1262: + beq .L1306 +.L1310: add x19, x19, :lo12:.LANCHOR2 add x21, x21, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR4 @@ -7816,11 +8200,11 @@ flash_die_info_init: ldrh w1, [x19,22] ldp x19, x20, [sp,16] mul w0, w0, w1 - strh w0, [x22,1128] + strh w0, [x22,1144] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 112 ret -.L1258: +.L1306: add x23, x21, :lo12:.LANCHOR0 ldrh w20, [x1,14] ldrb w26, [x0,8] @@ -7835,7 +8219,7 @@ flash_die_info_init: ldrb w2, [x1,13] mul w20, w20, w2 lsl w28, w20, 1 -.L1261: +.L1309: add x1, x3, x24, lsl 3 mov x0, x25 mov w2, w26 @@ -7844,9 +8228,9 @@ flash_die_info_init: bl flash_mem_cmp8 ldr x3, [x29,104] ldr x4, [x29,96] - cbnz w0, .L1259 + cbnz w0, .L1307 ldrb w0, [x23,633] - add x1, x4, 1096 + add x1, x4, 1112 cmp w27, wzr csel w2, w20, w28, eq str w2, [x1,w0,sxtw 2] @@ -7854,11 +8238,11 @@ flash_die_info_init: add x0, x23, x0, sxtw strb w1, [x23,633] strb w24, [x0,736] -.L1259: +.L1307: add x24, x24, 1 cmp x24, 4 - bne .L1261 - b .L1262 + bne .L1309 + b .L1310 .size flash_die_info_init, .-flash_die_info_init .align 2 .global lpa_hash_init @@ -7871,13 +8255,13 @@ lpa_hash_init: str x19, [sp,16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x0, x19, 3360 + add x0, x19, 3368 bl ftl_memset - ldrh w0, [x19,3300] + ldrh w0, [x19,3324] mov w1, 255 - ldrb w2, [x19,3276] + ldrb w2, [x19,3300] mul w2, w0, w2 - ldr x0, [x19,3880] + ldr x0, [x19,3888] lsl w2, w2, 2 bl ftl_memset ldr x19, [sp,16] @@ -7893,52 +8277,52 @@ lpa_rebuild_hash: add x29, sp, 0 ldr w0, [x0,#:lo12:.LANCHOR2] str x19, [sp,16] - tbz x0, 12, .L1273 + tbz x0, 12, .L1321 adrp x1, .LANCHOR3 - adrp x0, .LC115 + adrp x0, .LC122 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC115 + add x0, x0, :lo12:.LC122 add x1, x1, 72 - mov w2, 222 + mov w2, 224 mov w3, 0 bl printk -.L1273: +.L1321: adrp x19, .LANCHOR0 mov w1, 255 add x19, x19, :lo12:.LANCHOR0 mov w2, 512 - add x0, x19, 3360 + add x0, x19, 3368 bl ftl_memset - ldrh w0, [x19,3300] + ldrh w0, [x19,3324] mov w1, 255 - ldrb w2, [x19,3276] + ldrb w2, [x19,3300] mul w2, w0, w2 - ldr x0, [x19,3880] + ldr x0, [x19,3888] lsl w2, w2, 2 bl ftl_memset mov w0, 0 -.L1274: - ldrh w1, [x19,3300] - ldrb w2, [x19,3276] +.L1322: + ldrh w1, [x19,3324] + ldrb w2, [x19,3300] mul w1, w1, w2 cmp w0, w1, lsl 1 - bge .L1283 + bge .L1331 uxtw x2, w0 - ldr x1, [x19,3872] + ldr x1, [x19,3880] ldr w1, [x1,x2,lsl 2] cmn w1, #1 - beq .L1275 + beq .L1323 uxtb w1, w1 - add x3, x19, 3360 + add x3, x19, 3368 ldrh w4, [x3,w1,sxtw 1] strh w0, [x3,w1,sxtw 1] - ldr x1, [x19,3880] + ldr x1, [x19,3888] strh w4, [x1,x2,lsl 1] -.L1275: +.L1323: add w0, w0, 1 uxth w0, w0 - b .L1274 -.L1283: + b .L1322 +.L1331: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -7977,9 +8361,9 @@ zftl_read_flash_info: strb w1, [x19,9] mov x1, 0 strb w2, [x19,8] -.L1285: +.L1333: cmp w4, w1, uxtb - bls .L1287 + bls .L1335 add x2, x0, 736 ldrb w3, [x19,10] ldrb w2, [x1,x2] @@ -7987,8 +8371,8 @@ zftl_read_flash_info: lsl w2, w5, w2 orr w2, w2, w3 strb w2, [x19,10] - b .L1285 -.L1287: + b .L1333 +.L1335: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -7999,7 +8383,7 @@ zftl_read_flash_info: gc_init: stp x29, x30, [sp, -48]! mov w1, 0 - mov w2, 328 + mov w2, 344 add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR0 @@ -8009,20 +8393,20 @@ gc_init: str x21, [sp,32] add x21, x19, 2896 mov x0, x21 - strb wzr, [x19,3273] - strb wzr, [x20,1130] - str wzr, [x20,1132] - strh wzr, [x19,3304] + strb wzr, [x19,3297] + strb wzr, [x20,1146] + str wzr, [x20,1148] + strh wzr, [x19,3328] bl ftl_memset - ldrh w1, [x19,3300] + ldrh w1, [x19,3324] mov w0, -1 - ldrb w3, [x19,3276] + ldrb w3, [x19,3300] strh w0, [x19,2896] lsr w0, w1, 2 lsr w2, w1, 1 strh w0, [x19,2932] strh w0, [x19,2878] - ldrh w0, [x19,3274] + ldrh w0, [x19,3298] strh w2, [x19,2934] mul w2, w1, w3 mul w0, w0, w3 @@ -8032,36 +8416,36 @@ gc_init: sub w4, w2, #32 strh w2, [x19,2874] strh w4, [x19,2876] - strh wzr, [x19,3302] - strh wzr, [x19,3296] - strh wzr, [x19,3298] + strh wzr, [x19,3326] + strh wzr, [x19,3320] + strh wzr, [x19,3322] str xzr, [x19,2904] bl ftl_malloc - ldrb w1, [x19,3276] - str x0, [x20,1136] - ldrh w0, [x19,3274] + ldrb w1, [x19,3300] + str x0, [x20,1152] + ldrh w0, [x19,3298] mul w0, w0, w1 lsl w0, w0, 2 bl ftl_malloc - str x0, [x20,1144] - ldrh w1, [x19,3274] - ldrb w0, [x19,3276] + str x0, [x20,1160] + ldrh w1, [x19,3298] + ldrb w0, [x19,3300] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,3264] - ldrb w1, [x19,3276] - ldrh w0, [x19,3274] + str x0, [x19,3288] + ldrb w1, [x19,3300] + ldrh w0, [x19,3298] mul w0, w0, w1 lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,3248] - ldrb w1, [x19,3276] - ldrh w0, [x19,3274] + str x0, [x19,3272] + ldrb w1, [x19,3300] + ldrh w0, [x19,3298] mul w0, w0, w1 lsl w0, w0, 2 bl ftl_malloc - str x0, [x20,1152] - ldrh w0, [x19,3306] + str x0, [x20,1168] + ldrh w0, [x19,3330] ldr x21, [sp,32] lsr w0, w0, 2 strh w0, [x19,2872] @@ -8086,9 +8470,9 @@ gc_static_wearleveling: ldr w1, [x0,32] mov w0, 10240 cmp w1, w0 - bls .L1290 + bls .L1338 bl ftl_tmp_into_update -.L1290: +.L1338: add x3, x19, :lo12:.LANCHOR0 ldr x0, [x3,608] ldr w1, [x0,568] @@ -8096,18 +8480,18 @@ gc_static_wearleveling: add w1, w1, 860160 add w1, w1, 3840 cmp w2, w1 - bhi .L1291 + bhi .L1339 ldr x3, [x3,2864] ldr w1, [x0,572] ldr w3, [x3,36] add w1, w1, 32 cmp w3, w1 - bls .L1341 -.L1291: + bls .L1389 +.L1339: add x1, x19, :lo12:.LANCHOR0 mov w22, 0 mov w20, 65535 - adrp x8, .LC116 + adrp x8, .LC123 mov w28, w22 str w22, [x29,136] ldr x1, [x1,2864] @@ -8122,13 +8506,13 @@ gc_static_wearleveling: mov w9, w20 str w2, [x0,568] adrp x10, .LANCHOR2 - add x8, x8, :lo12:.LC116 + add x8, x8, :lo12:.LC123 ldrh w23, [x1,134] -.L1293: +.L1341: add x4, x19, :lo12:.LANCHOR0 ldrh w0, [x4,576] cmp w0, w23 - bls .L1402 + bls .L1450 uxtw x7, w23 ldr x0, [x4,584] lsl x1, x7, 2 @@ -8136,70 +8520,70 @@ gc_static_wearleveling: ldrb w2, [x6,2] and w3, w2, 224 cmp w3, 224 - beq .L1294 - tbz x2, 3, .L1295 + beq .L1342 + tbz x2, 3, .L1343 ldrh w3, [x0,x1] ldr w2, [x0,x1] and w3, w3, 2047 ubfx x2, x2, 11, 8 - b .L1296 -.L1295: + b .L1344 +.L1343: tst w2, 24 - bne .L1297 + bne .L1345 ldrh w3, [x0,x1] mov w2, 65535 and w3, w3, 2047 - b .L1296 -.L1297: + b .L1344 +.L1345: ldr w2, [x0,x1] mov w3, 65535 ubfx x2, x2, 11, 8 - b .L1298 -.L1296: + b .L1346 +.L1344: ldr w4, [x29,136] add w26, w26, 1 cmp w20, w3 add w4, w4, w3 str w4, [x29,136] uxth w26, w26 - bls .L1340 + bls .L1388 add x4, x19, :lo12:.LANCHOR0 mov w20, w3 ldr x4, [x4,608] strh w23, [x4,586] -.L1340: +.L1388: cmp w25, w3 - bcs .L1299 + bcs .L1347 mov w22, w23 mov w25, w3 -.L1299: +.L1347: cmp w2, w9 - beq .L1300 -.L1298: + beq .L1348 +.L1346: ldr w4, [x29,140] add w27, w27, 1 cmp w21, w2 add w4, w4, w2 str w4, [x29,140] uxth w27, w27 - bls .L1301 + bls .L1349 add x4, x19, :lo12:.LANCHOR0 mov w21, w2 ldr x4, [x4,608] strh w23, [x4,584] -.L1301: +.L1349: cmp w24, w2 - bcs .L1300 + bcs .L1348 mov w28, w23 mov w24, w2 -.L1300: +.L1348: cmp w3, 9 - bls .L1343 + bls .L1391 cmp w2, 9 - bhi .L1294 -.L1343: + bhi .L1342 +.L1391: ldr w2, [x10,#:lo12:.LANCHOR2] - tbz x2, 8, .L1294 + tbz x2, 8, .L1342 ldrh w2, [x0,x1] ldr w3, [x0,x1] add x0, x19, :lo12:.LANCHOR0 @@ -8220,11 +8604,11 @@ gc_static_wearleveling: ldr x10, [x29,112] ldr x9, [x29,120] ldr x8, [x29,128] -.L1294: +.L1342: add w23, w23, 1 uxth w23, w23 - b .L1293 -.L1402: + b .L1341 +.L1450: ldr x0, [x4,608] mov w1, 255 mov w2, 128 @@ -8241,29 +8625,29 @@ gc_static_wearleveling: lsl x0, x7, 2 mov x1, x7 add x8, x3, x0 - tbz x2, 10, .L1304 + tbz x2, 10, .L1352 ldr x9, [x4,600] ldrh w2, [x3,x0] ldrb w5, [x8,2] ldr w3, [x3,x0] - adrp x0, .LC117 + adrp x0, .LC124 ldrb w6, [x8,3] ubfx x4, x5, 3, 2 ldrh w7, [x9,x7,lsl 1] - add x0, x0, :lo12:.LC117 + add x0, x0, :lo12:.LC124 and w2, w2, 2047 ubfx x3, x3, 11, 8 ubfx x5, x5, 5, 3 str x8, [x29,128] bl printk ldr x8, [x29,128] -.L1304: +.L1352: ldrb w0, [x8,2] - tbz x0, 3, .L1305 + tbz x0, 3, .L1353 ldrb w0, [x8,2] and w1, w0, 192 cmp w1, 64 - bne .L1306 + bne .L1354 add x3, x19, :lo12:.LANCHOR0 mov w1, 0 mov w2, 1 @@ -8274,21 +8658,21 @@ gc_static_wearleveling: ldr x3, [x29,128] mov w0, 1 strh w0, [x3,3214] - b .L1305 -.L1306: + b .L1353 +.L1354: tst w0, 224 - bne .L1305 + bne .L1353 add x2, x19, :lo12:.LANCHOR0 mov w0, 65535 ldr x1, [x2,608] ldrh w3, [x1,590] cmp w3, w0 - bne .L1305 + bne .L1353 ldrh w0, [x1,586] ldrh w1, [x1,588] str x2, [x29,128] cmp w1, w0 - beq .L1305 + beq .L1353 bl zftl_remove_free_node ldr x2, [x29,128] ldr x0, [x2,608] @@ -8296,7 +8680,7 @@ gc_static_wearleveling: strh w1, [x0,590] mov w1, -1 strh w1, [x0,586] -.L1305: +.L1353: add x0, x19, :lo12:.LANCHOR0 ldr w2, [x23,#:lo12:.LANCHOR2] ldr x1, [x0,608] @@ -8305,11 +8689,11 @@ gc_static_wearleveling: lsl x3, x7, 2 mov x1, x7 add x8, x4, x3 - tbz x2, 10, .L1307 + tbz x2, 10, .L1355 ldr x9, [x0,600] - adrp x0, .LC118 + adrp x0, .LC125 ldrh w2, [x4,x3] - add x0, x0, :lo12:.LC118 + add x0, x0, :lo12:.LC125 ldrb w5, [x8,2] ldr w3, [x4,x3] and w2, w2, 2047 @@ -8321,13 +8705,13 @@ gc_static_wearleveling: str x8, [x29,128] bl printk ldr x8, [x29,128] -.L1307: +.L1355: ldrb w0, [x8,2] - tbz x0, 3, .L1308 + tbz x0, 3, .L1356 ldrb w0, [x8,2] and w1, w0, 192 cmp w1, 64 - bne .L1309 + bne .L1357 add x3, x19, :lo12:.LANCHOR0 mov w1, 0 mov w2, 1 @@ -8338,21 +8722,21 @@ gc_static_wearleveling: ldr x3, [x29,128] mov w0, 1 strh w0, [x3,3214] - b .L1308 -.L1309: + b .L1356 +.L1357: tst w0, 224 - bne .L1308 + bne .L1356 add x2, x19, :lo12:.LANCHOR0 mov w0, 65535 ldr x1, [x2,608] ldrh w3, [x1,588] cmp w3, w0 - bne .L1308 + bne .L1356 ldrh w0, [x1,584] ldrh w1, [x1,590] str x2, [x29,128] cmp w1, w0 - beq .L1308 + beq .L1356 bl zftl_remove_free_node ldr x2, [x29,128] ldr x0, [x2,608] @@ -8360,11 +8744,11 @@ gc_static_wearleveling: strh w1, [x0,588] mov w1, -1 strh w1, [x0,584] -.L1308: +.L1356: add x4, x19, :lo12:.LANCHOR0 ldr w0, [x23,#:lo12:.LANCHOR2] ldr x1, [x4,584] - tbz x0, 10, .L1310 + tbz x0, 10, .L1358 uxtw x7, w22 ldr x8, [x4,600] lsl x0, x7, 2 @@ -8372,9 +8756,9 @@ gc_static_wearleveling: ldrh w7, [x8,x7,lsl 1] ldrh w2, [x1,x0] ldr w3, [x1,x0] - adrp x0, .LC119 + adrp x0, .LC126 ldrb w5, [x6,2] - add x0, x0, :lo12:.LC119 + add x0, x0, :lo12:.LC126 ldrb w6, [x6,3] mov w1, w22 ubfx x4, x5, 3, 2 @@ -8382,11 +8766,11 @@ gc_static_wearleveling: ubfx x3, x3, 11, 8 ubfx x5, x5, 5, 3 bl printk -.L1310: +.L1358: add x4, x19, :lo12:.LANCHOR0 ldr w0, [x23,#:lo12:.LANCHOR2] ldr x1, [x4,584] - tbz x0, 10, .L1311 + tbz x0, 10, .L1359 uxtw x7, w28 ldr x8, [x4,600] lsl x0, x7, 2 @@ -8394,9 +8778,9 @@ gc_static_wearleveling: ldrh w7, [x8,x7,lsl 1] ldrh w2, [x1,x0] ldr w3, [x1,x0] - adrp x0, .LC120 + adrp x0, .LC127 ldrb w5, [x6,2] - add x0, x0, :lo12:.LC120 + add x0, x0, :lo12:.LC127 ldrb w6, [x6,3] mov w1, w28 ubfx x4, x5, 3, 2 @@ -8404,7 +8788,7 @@ gc_static_wearleveling: ubfx x3, x3, 11, 8 ubfx x5, x5, 5, 3 bl printk -.L1311: +.L1359: ldr w1, [x29,136] add x0, x19, :lo12:.LANCHOR0 udiv w3, w1, w26 @@ -8418,41 +8802,41 @@ gc_static_wearleveling: strh w3, [x0,88] strh w4, [x0,90] ldr w0, [x23,#:lo12:.LANCHOR2] - tbz x0, 10, .L1312 - adrp x0, .LC121 + tbz x0, 10, .L1360 + adrp x0, .LC128 mov w1, w26 - add x0, x0, :lo12:.LC121 + add x0, x0, :lo12:.LC128 mov w2, w27 uxth w3, w3 uxth w4, w4 bl printk -.L1312: +.L1360: ldr w0, [x23,#:lo12:.LANCHOR2] adrp x28, .LANCHOR4 - tbz x0, 10, .L1313 + tbz x0, 10, .L1361 add x6, x28, :lo12:.LANCHOR4 - adrp x0, .LC122 - add x0, x0, :lo12:.LC122 + adrp x0, .LC129 + add x0, x0, :lo12:.LC129 mov w1, w20 mov w2, w21 mov w3, w25 - ldrh w5, [x6,1160] + ldrh w5, [x6,1176] mov w4, w24 - ldrh w6, [x6,1162] + ldrh w6, [x6,1178] bl printk -.L1313: +.L1361: add x1, x28, :lo12:.LANCHOR4 sub w0, w24, w21 str w0, [x29,140] - ldrh w0, [x1,1162] + ldrh w0, [x1,1178] ldr w2, [x29,140] cmp w2, w0 - bgt .L1314 - ldrh w1, [x1,1160] + bgt .L1362 + ldrh w1, [x1,1176] sub w0, w25, w20 cmp w0, w1 - ble .L1342 -.L1314: + ble .L1390 +.L1362: add x0, x19, :lo12:.LANCHOR0 mov w26, 0 mov w22, w26 @@ -8462,17 +8846,17 @@ gc_static_wearleveling: ldrh w27, [x0,134] sub w0, w25, w20 str w0, [x29,136] - adrp x0, .LC124 - add x0, x0, :lo12:.LC124 - adrp x25, .LC123 + adrp x0, .LC131 + add x0, x0, :lo12:.LC131 + adrp x25, .LC130 str x0, [x29,128] - add x0, x25, :lo12:.LC123 + add x0, x25, :lo12:.LC130 str x0, [x29,120] -.L1316: +.L1364: add x1, x19, :lo12:.LANCHOR0 ldrh w0, [x1,576] cmp w27, w0 - bcs .L1325 + bcs .L1373 add w7, w24, 1 ldr x4, [x1,584] uxth w24, w7 @@ -8484,31 +8868,31 @@ gc_static_wearleveling: ldrb w0, [x0,2] and w2, w0, 224 cmp w2, 224 - beq .L1318 + beq .L1366 tst w0, 192 - beq .L1318 + beq .L1366 ubfx x0, x0, 3, 2 cmp w2, 160 and w1, w0, 1 - tbnz x0, 0, .L1400 + tbnz x0, 0, .L1448 cmp w0, 2 -.L1400: +.L1448: add x0, x28, :lo12:.LANCHOR4 - bne .L1321 - ldrh w0, [x0,1162] + bne .L1369 + ldrh w0, [x0,1178] ldr w2, [x29,140] cmp w2, w0 - ble .L1322 + ble .L1370 ldr w0, [x4,x3] ubfx x0, x0, 11, 8 cmp w0, w21 - bls .L1323 - cbz w1, .L1322 + bls .L1371 + cbz w1, .L1370 ldrh w0, [x4,x3] and w0, w0, 2047 cmp w0, w20 - bgt .L1322 -.L1323: + bgt .L1370 +.L1371: mov w1, 0 mov w0, w24 mov w2, 1 @@ -8523,7 +8907,7 @@ gc_static_wearleveling: ldr x4, [x29,104] strh w1, [x0,3214] ldr w1, [x23,#:lo12:.LANCHOR2] - tbz x1, 10, .L1322 + tbz x1, 10, .L1370 ldr x1, [x0,584] ldr x10, [x0,600] add x1, x1, x3 @@ -8531,24 +8915,24 @@ gc_static_wearleveling: ldr w6, [x4,x3] ldr x0, [x29,120] ldrb w2, [x1,2] - b .L1401 -.L1321: - ldrh w0, [x0,1160] + b .L1449 +.L1369: + ldrh w0, [x0,1176] ldr w2, [x29,136] cmp w2, w0 - ble .L1322 + ble .L1370 ldrh w0, [x4,x3] add w2, w20, 8 and w0, w0, 2047 cmp w0, w2 - ble .L1324 - cbz w1, .L1322 + ble .L1372 + cbz w1, .L1370 ldr w0, [x4,x3] add w1, w21, 4 ubfx x0, x0, 11, 8 cmp w0, w1 - bgt .L1322 -.L1324: + bgt .L1370 +.L1372: mov w1, 0 mov w0, w24 mov w2, 1 @@ -8563,7 +8947,7 @@ gc_static_wearleveling: ldr x4, [x29,104] strh w1, [x0,3214] ldr w1, [x23,#:lo12:.LANCHOR2] - tbz x1, 10, .L1322 + tbz x1, 10, .L1370 ldr x1, [x0,584] ldr x10, [x0,600] add x1, x1, x3 @@ -8571,7 +8955,7 @@ gc_static_wearleveling: ldr w6, [x4,x3] ldr x0, [x29,128] ldrb w2, [x1,2] -.L1401: +.L1449: ldrh w3, [x10,x25,lsl 1] mov w1, w24 ldrh w4, [x9,56] @@ -8579,122 +8963,122 @@ gc_static_wearleveling: and w5, w5, 2047 ubfx x6, x6, 11, 8 bl printk -.L1322: +.L1370: cmp w26, 4 - bhi .L1325 + bhi .L1373 cmp w22, 4 - bhi .L1325 -.L1318: + bhi .L1373 +.L1366: add w27, w27, 1 uxth w27, w27 - b .L1316 -.L1325: + b .L1364 +.L1373: add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,608] str w24, [x0,580] - b .L1315 -.L1342: + b .L1363 +.L1390: mov w26, 0 mov w22, w26 -.L1315: - cbz w21, .L1328 +.L1363: + cbz w21, .L1376 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldrh w0, [x0,134] -.L1329: +.L1377: add x1, x19, :lo12:.LANCHOR0 ldrh w2, [x1,576] cmp w2, w0 - bls .L1403 + bls .L1451 ubfiz x3, x0, 2, 16 ldr x4, [x1,584] add x5, x4, x3 ldr w1, [x4,x3] ubfx x2, x1, 11, 8 cmp w2, w21 - bcc .L1330 + bcc .L1378 ldrb w5, [x5,2] tst w5, 24 - beq .L1330 + beq .L1378 sub w2, w2, w21 bfi w1, w2, 11, 8 str w1, [x4,x3] -.L1330: +.L1378: add w0, w0, 1 uxth w0, w0 - b .L1329 -.L1403: + b .L1377 +.L1451: ldr x0, [x1,2864] ldrh w1, [x0,72] add w1, w21, w1 strh w1, [x0,72] ldrh w1, [x0,98] cmp w1, w21 - bls .L1328 + bls .L1376 sub w21, w1, w21 strh w21, [x0,98] -.L1328: - cbz w20, .L1334 +.L1376: + cbz w20, .L1382 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldrh w0, [x0,134] -.L1335: +.L1383: add x1, x19, :lo12:.LANCHOR0 ldrh w2, [x1,576] cmp w2, w0 - bls .L1404 + bls .L1452 ubfiz x3, x0, 2, 16 ldr x4, [x1,584] add x5, x4, x3 ldrh w1, [x4,x3] and w2, w1, 2047 cmp w2, w20 - blt .L1336 + blt .L1384 ldrb w5, [x5,2] and w5, w5, 24 cmp w5, 16 - beq .L1336 + beq .L1384 sub w2, w2, w20 bfi w1, w2, 0, 11 strh w1, [x4,x3] -.L1336: +.L1384: add w0, w0, 1 uxth w0, w0 - b .L1335 -.L1404: + b .L1383 +.L1452: ldr x0, [x1,2864] ldrh w1, [x0,74] add w1, w20, w1 strh w1, [x0,74] ldrh w1, [x0,96] cmp w1, w20 - bls .L1334 + bls .L1382 sub w20, w1, w20 strh w20, [x0,96] -.L1334: +.L1382: mov w1, 5 mov w0, 0 bl zftl_get_gc_node uxth w1, w0 mov w2, 65535 cmp w1, w2 - beq .L1292 + beq .L1340 add x19, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 ldr x2, [x19,600] ldrh w2, [x2,x1] - ldrh w1, [x19,3300] + ldrh w1, [x19,3324] cmp w2, w1 - bhi .L1292 + bhi .L1340 mov w1, 0 mov w2, 1 add w22, w22, 1 bl gc_add_sblk - b .L1292 -.L1341: + b .L1340 +.L1389: mov w26, 0 mov w22, w26 -.L1292: +.L1340: add w0, w26, w22 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -8721,24 +9105,24 @@ zftl_sblk_list_init: mov w24, 6 mov w23, 32768 ldrh w2, [x19,576] - adrp x26, .LC125 + adrp x26, .LC132 ldr x0, [x19,528] mov w25, -1 - add x26, x26, :lo12:.LC125 + add x26, x26, :lo12:.LC132 mul w2, w2, w24 bl ftl_memset - ldrh w22, [x19,3274] + ldrh w22, [x19,3298] mov w0, 16 - strh w0, [x19,3336] - ldrb w0, [x19,3276] - str xzr, [x19,3312] - str xzr, [x19,3320] + strh w0, [x19,3360] + ldrb w0, [x19,3300] + str xzr, [x19,3336] + str xzr, [x19,3344] mul w22, w0, w22 - str xzr, [x19,3328] - str xzr, [x19,3288] + str xzr, [x19,3352] + str xzr, [x19,3312] sdiv w22, w23, w22 str xzr, [x19,616] - str xzr, [x19,3280] + str xzr, [x19,3304] strh wzr, [x19,2844] strh wzr, [x19,2846] strh wzr, [x19,2848] @@ -8750,52 +9134,52 @@ zftl_sblk_list_init: ldr x0, [x19,2864] ldrsh w19, [x0,134] strh wzr, [x0,146] -.L1406: +.L1454: add x0, x21, :lo12:.LANCHOR0 ldrh w1, [x0,576] cmp w19, w1 - bge .L1436 + bge .L1484 sxtw x22, w19 ldr x27, [x0,584] ldr w1, [x29,108] add x27, x27, x22, lsl 2 ldrb w2, [x27,3] - cbz w2, .L1407 - ldrb w5, [x0,3276] - ldrh w6, [x0,3274] + cbz w2, .L1455 + ldrb w5, [x0,3300] + ldrh w6, [x0,3298] ldr x4, [x0,2864] mov w0, 0 mov w1, w0 -.L1408: +.L1456: cmp w0, w5 - bge .L1437 + bge .L1485 ldrb w2, [x27,3] asr w2, w2, w0 - tbnz x2, 0, .L1409 + tbnz x2, 0, .L1457 add w1, w6, w1 sxth w1, w1 - b .L1410 -.L1409: + b .L1458 +.L1457: ldrh w2, [x4,146] add w2, w2, 1 strh w2, [x4,146] -.L1410: +.L1458: add w0, w0, 1 - b .L1408 -.L1437: - cbz w1, .L1412 + b .L1456 +.L1485: + cbz w1, .L1460 sdiv w1, w23, w1 add w1, w1, 1 sxth w1, w1 - b .L1407 -.L1412: + b .L1455 +.L1460: ldrb w0, [x27,2] orr w0, w0, -32 strb w0, [x27,2] add x0, x21, :lo12:.LANCHOR0 ldr x0, [x0,600] strh w25, [x0,x22,lsl 1] -.L1407: +.L1455: add x20, x21, :lo12:.LANCHOR0 smull x0, w19, w24 ldr x2, [x20,528] @@ -8808,101 +9192,101 @@ zftl_sblk_list_init: ldrb w1, [x27,2] and w0, w1, 224 cmp w0, 224 - beq .L1415 + beq .L1463 cmp w0, 32 cset w28, eq - cbnz w28, .L1415 + cbnz w28, .L1463 ldr x2, [x20,608] ldrh w4, [x2,16] cmp w19, w4 - beq .L1415 + beq .L1463 ldrh w4, [x2,48] cmp w19, w4 - beq .L1415 + beq .L1463 ldrh w2, [x2,80] cmp w19, w2 - beq .L1415 + beq .L1463 cmp w0, 64 - bne .L1417 + bne .L1465 uxth w27, w19 add x0, x20, 616 mov w1, w27 add x2, x20, 2850 - b .L1434 -.L1417: + b .L1482 +.L1465: cmp w0, 96 - bne .L1418 + bne .L1466 uxth w27, w19 - add x0, x20, 3288 + add x0, x20, 3312 mov w1, w27 add x2, x20, 2852 - b .L1434 -.L1418: + b .L1482 +.L1466: cmp w0, 160 - bne .L1419 + bne .L1467 uxth w27, w19 - add x0, x20, 3280 + add x0, x20, 3304 mov w1, w27 add x2, x20, 2854 -.L1434: +.L1482: bl _insert_data_list ldr x0, [x20,600] ldrh w0, [x0,x22,lsl 1] cmp w0, 7 - bhi .L1415 + bhi .L1463 mov w0, w27 mov w1, 1 mov w2, w28 - b .L1432 -.L1419: - cbnz w0, .L1415 + b .L1480 +.L1467: + cbnz w0, .L1463 ldr x0, [x20,600] ldrh w2, [x0,x22,lsl 1] - cbz w2, .L1420 + cbz w2, .L1468 mov x0, x26 mov w1, w19 bl printk ldrb w0, [x27,2] - tbz x0, 4, .L1421 + tbz x0, 4, .L1469 mov w1, 5 - b .L1428 -.L1421: + b .L1476 +.L1469: mov w1, 2 -.L1428: +.L1476: bfi w0, w1, 5, 3 mov w2, 0 strb w0, [x27,2] mov w1, 1 mov w0, w19 -.L1432: +.L1480: bl gc_add_sblk - b .L1415 -.L1420: + b .L1463 +.L1468: ands w1, w1, 24 add x2, x21, :lo12:.LANCHOR0 - bne .L1423 - add x0, x2, 3312 + bne .L1471 + add x0, x2, 3336 mov w1, w19 add x2, x2, 2844 - b .L1430 -.L1423: + b .L1478 +.L1471: cmp w1, 16 - bne .L1424 - add x0, x2, 3320 + bne .L1472 + add x0, x2, 3344 mov w1, w19 add x2, x2, 2846 - b .L1430 -.L1424: - add x0, x2, 3328 + b .L1478 +.L1472: + add x0, x2, 3352 mov w1, w19 add x2, x2, 2848 -.L1430: +.L1478: bl _insert_free_list -.L1415: +.L1463: add w19, w19, 1 sxth w19, w19 - b .L1406 -.L1436: + b .L1454 +.L1484: ldr x1, [x0,2864] ldrh w2, [x0,2844] strh w2, [x1,114] @@ -8932,7 +9316,7 @@ ftl_open_sblk_init: add x29, sp, 0 stp x19, x20, [sp,16] stp x23, x24, [sp,48] - adrp x20, .LC113 + adrp x20, .LC120 adrp x23, .LANCHOR0 stp x25, x26, [sp,64] stp x21, x22, [sp,32] @@ -8941,10 +9325,10 @@ ftl_open_sblk_init: mov w21, w1 add x25, x0, 16 mov x26, x23 - add x20, x20, :lo12:.LC113 + add x20, x20, :lo12:.LC120 mov w24, -1 -.L1439: -.L1442: +.L1487: +.L1490: mov w0, w21 bl ftl_alloc_sblk uxth w22, w0 @@ -8960,22 +9344,22 @@ ftl_open_sblk_init: cmp w21, 2 strh wzr, [x19,2] mov w3, 0 - ldrh w1, [x0,3300] + ldrh w1, [x0,3324] strb wzr, [x19,5] strh wzr, [x19,10] mul w2, w1, w2 strh w2, [x19,6] strb w21, [x19,4] - beq .L1440 - ldrb w3, [x0,3276] + beq .L1488 + ldrb w3, [x0,3300] mul w3, w1, w3 uxth w3, w3 -.L1440: +.L1488: add x27, x26, :lo12:.LANCHOR0 strh w3, [x19,12] ubfiz x28, x22, 1, 16 - ldrb w2, [x27,3276] - ldr x0, [x27,3872] + ldrb w2, [x27,3300] + ldr x0, [x27,3880] add x0, x0, x3, uxth 2 mul w2, w1, w2 mov w1, 255 @@ -8985,7 +9369,7 @@ ftl_open_sblk_init: ldrh w1, [x19,6] strh w1, [x0,x28] ldrb w0, [x19,9] - cbnz w0, .L1438 + cbnz w0, .L1486 mov x0, x20 mov w1, w22 bl printk @@ -8993,8 +9377,8 @@ ftl_open_sblk_init: strh w24, [x0,x28] mov w0, 7 strb w0, [x19,4] - b .L1442 -.L1438: + b .L1490 +.L1486: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9016,9 +9400,9 @@ pm_free_sblk: stp x21, x22, [sp,32] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - ldrh w0, [x0,1164] + ldrh w0, [x0,1180] cmp w0, 128 - bls .L1445 + bls .L1493 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 @@ -9027,7 +9411,7 @@ pm_free_sblk: add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1445: +.L1493: add x28, x29, 112 mov w1, 0 mov w2, 256 @@ -9038,18 +9422,18 @@ pm_free_sblk: mov w0, 21 mov w1, 1 mov x3, 0 - ldrh w6, [x2,3340] + ldrh w6, [x2,3264] ldr x4, [x2,2864] sub w0, w0, w6 - ldrb w8, [x2,3338] + ldrb w8, [x2,3266] lsl w0, w1, w0 add x1, x23, :lo12:.LANCHOR4 ldrh w7, [x4,698] sub w0, w0, #1 - ldrh w9, [x1,1164] -.L1446: + ldrh w9, [x1,1180] +.L1494: cmp w7, w3, uxth - bls .L1471 + bls .L1519 add x1, x4, x3, lsl 2 mov x2, 0 ldr w1, [x1,704] @@ -9057,73 +9441,73 @@ pm_free_sblk: and w1, w1, w0 udiv w1, w1, w8 uxth w1, w1 -.L1447: +.L1495: cmp w9, w2, uxth - bls .L1472 + bls .L1520 add x5, x4, x2, lsl 1 ldrh w5, [x5,416] cmp w5, w1 - bne .L1448 + bne .L1496 ldrh w5, [x28,x2,lsl 1] add w5, w5, 1 strh w5, [x28,x2,lsl 1] -.L1448: +.L1496: add x2, x2, 1 - b .L1447 -.L1472: + b .L1495 +.L1520: add x3, x3, 1 - b .L1446 -.L1471: + b .L1494 +.L1519: add x1, x21, :lo12:.LANCHOR0 mov w25, 0 - adrp x24, .LC126 + adrp x24, .LC133 mov w19, w25 adrp x26, .LANCHOR2 mov w27, -1 - ldrb w0, [x1,3276] - add x24, x24, :lo12:.LC126 - ldrh w20, [x1,3300] + ldrb w0, [x1,3300] + add x24, x24, :lo12:.LC133 + ldrh w20, [x1,3324] mul w20, w0, w20 uxth w20, w20 -.L1451: +.L1499: add x0, x23, :lo12:.LANCHOR4 - ldrh w0, [x0,1164] + ldrh w0, [x0,1180] cmp w0, w19 - bls .L1473 + bls .L1521 add x0, x21, :lo12:.LANCHOR0 sxtw x22, w19 add x1, x22, 208 ldr x4, [x0,2864] - ldrb w2, [x0,3338] + ldrb w2, [x0,3266] ldrh w3, [x4,x1,lsl 1] ldrh w1, [x4,692] sdiv w1, w1, w2 cmp w1, w3 - bne .L1452 - ldrb w1, [x0,3276] - ldrh w0, [x0,3300] + bne .L1500 + ldrb w1, [x0,3300] + ldrh w0, [x0,3324] mul w0, w1, w0 strh w0, [x28,w19,sxtw 1] -.L1452: +.L1500: ldrh w0, [x28,x22,lsl 1] cmp w20, w0 - bls .L1453 + bls .L1501 cmp w0, wzr csel w25, w25, w19, eq csel w20, w20, w0, eq -.L1453: - cbnz w0, .L1455 +.L1501: + cbnz w0, .L1503 mov w0, 65535 cmp w3, w0 - beq .L1455 + beq .L1503 ldr w0, [x26,#:lo12:.LANCHOR2] - tbz x0, 12, .L1456 + tbz x0, 12, .L1504 ldrh w4, [x4,688] mov x0, x24 mov w1, w19 mov w2, 0 bl printk -.L1456: +.L1504: add x1, x21, :lo12:.LANCHOR0 add x22, x22, 208 str x1, [x29,104] @@ -9136,11 +9520,11 @@ pm_free_sblk: ldrh w1, [x0,688] sub w1, w1, #1 strh w1, [x0,688] -.L1455: +.L1503: add w19, w19, 1 uxth w19, w19 - b .L1451 -.L1473: + b .L1499 +.L1521: mov w0, w25 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -9171,15 +9555,15 @@ flash_info_data_init: ldr w0, [x1,#:lo12:.LANCHOR2] stp x19, x20, [sp,16] mov x20, x1 - tbz x0, 12, .L1476 + tbz x0, 12, .L1524 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 100 + add x0, x0, :lo12:.LC134 + mov w1, 105 add x2, x2, 112 bl printk -.L1476: +.L1524: adrp x19, .LANCHOR0 mov w1, 0 add x19, x19, :lo12:.LANCHOR0 @@ -9214,14 +9598,14 @@ flash_info_data_init: .type ftl_memcpy32, %function ftl_memcpy32: mov x3, 0 -.L1481: +.L1529: cmp w2, w3 - bls .L1483 + bls .L1531 ldr w4, [x1,x3,lsl 2] str w4, [x0,x3,lsl 2] add x3, x3, 1 - b .L1481 -.L1483: + b .L1529 +.L1531: ret .size ftl_memcpy32, .-ftl_memcpy32 .align 2 @@ -9236,27 +9620,6 @@ ftl_memcmp: ret .size ftl_memcmp, .-ftl_memcmp .align 2 - .global js_hash - .type js_hash, %function -js_hash: - mov x5, x0 - mov w0, 42982 - mov x2, 0 - movk w0, 0x47c6, lsl 16 -.L1486: - cmp w1, w2 - bls .L1488 - lsl w3, w0, 5 - ldrb w4, [x5,x2] - add w3, w3, w0, lsr 2 - add x2, x2, 1 - add w3, w3, w4 - eor w0, w0, w3 - b .L1486 -.L1488: - ret - .size js_hash, .-js_hash - .align 2 .global timer_get_time .type timer_get_time, %function timer_get_time: @@ -9264,8 +9627,8 @@ timer_get_time: stp x29, x30, [sp, -16]! add x29, sp, 0 ldr x1, [x0,#:lo12:jiffies] - adrp x0, .LANCHOR4+1168 - ldr x0, [x0,#:lo12:.LANCHOR4+1168] + adrp x0, .LANCHOR4+1184 + ldr x0, [x0,#:lo12:.LANCHOR4+1184] sub x0, x1, x0 bl jiffies_to_msecs ldp x29, x30, [sp], 16 @@ -9285,10 +9648,10 @@ StorageSysDataLoad: mov w1, 0 bl ftl_memset bl rknand_device_lock - adrp x0, .LANCHOR4+1176 + adrp x0, .LANCHOR4+1192 mov x2, x19 mov w1, 1 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x3, [x0,24] mov w0, w20 blr x3 @@ -9308,10 +9671,10 @@ StorageSysDataStore: str x0, [x29,16] str x1, [x29,24] bl rknand_device_lock - adrp x1, .LANCHOR4+1176 + adrp x1, .LANCHOR4+1192 ldr x2, [x29,24] ldr x0, [x29,16] - ldr x1, [x1,#:lo12:.LANCHOR4+1176] + ldr x1, [x1,#:lo12:.LANCHOR4+1192] ldr x3, [x1,32] mov w1, 1 blr x3 @@ -9331,11 +9694,11 @@ FlashBootVendorRead: str x1, [x29,32] str x2, [x29,40] bl rknand_device_lock - adrp x3, .LANCHOR4+1176 + adrp x3, .LANCHOR4+1192 ldr x1, [x29,32] ldr x2, [x29,40] ldr x0, [x29,24] - ldr x3, [x3,#:lo12:.LANCHOR4+1176] + ldr x3, [x3,#:lo12:.LANCHOR4+1192] ldr x3, [x3,8] blr x3 str x0, [x29,40] @@ -9354,11 +9717,11 @@ FlashBootVendorWrite: str x1, [x29,32] str x2, [x29,40] bl rknand_device_lock - adrp x3, .LANCHOR4+1176 + adrp x3, .LANCHOR4+1192 ldr x1, [x29,32] ldr x2, [x29,40] ldr x0, [x29,24] - ldr x3, [x3,#:lo12:.LANCHOR4+1176] + ldr x3, [x3,#:lo12:.LANCHOR4+1192] ldr x3, [x3,16] blr x3 str x0, [x29,40] @@ -9371,20 +9734,20 @@ FlashBootVendorWrite: .global flash_sram_load_store .type flash_sram_load_store, %function flash_sram_load_store: - adrp x4, .LANCHOR4+1184 + adrp x4, .LANCHOR4+1200 mov x6, x0 stp x29, x30, [sp, -16]! uxtw x1, w1 add x29, sp, 0 - ldr x4, [x4,#:lo12:.LANCHOR4+1184] + ldr x4, [x4,#:lo12:.LANCHOR4+1200] add x4, x4, 4096 - cbnz w2, .L1495 + cbnz w2, .L1539 add x1, x4, x1 - b .L1497 -.L1495: + b .L1541 +.L1539: add x0, x4, x1 mov x1, x6 -.L1497: +.L1541: mov w2, w3 bl ftl_memcpy ldp x29, x30, [sp], 16 @@ -9401,13 +9764,13 @@ FlashCs123Init: .type rk_ftl_de_init, %function rk_ftl_de_init: stp x29, x30, [sp, -16]! - adrp x0, .LC128 + adrp x0, .LC135 mov w1, 0 add x29, sp, 0 - add x0, x0, :lo12:.LC128 + add x0, x0, :lo12:.LC135 bl printk - adrp x0, .LANCHOR4+1176 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + adrp x0, .LANCHOR4+1192 + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x0, [x0,80] blr x0 ldp x29, x30, [sp], 16 @@ -9417,10 +9780,10 @@ rk_ftl_de_init: .global rk_ftl_cache_write_back .type rk_ftl_cache_write_back, %function rk_ftl_cache_write_back: - adrp x0, .LANCHOR4+1176 + adrp x0, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x1, [x0,64] mov w0, 0 blr x1 @@ -9431,10 +9794,10 @@ rk_ftl_cache_write_back: .global rk_nand_suspend .type rk_nand_suspend, %function rk_nand_suspend: - adrp x0, .LANCHOR4+1176 + adrp x0, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x0, [x0,88] blr x0 ldp x29, x30, [sp], 16 @@ -9444,10 +9807,10 @@ rk_nand_suspend: .global rk_nand_resume .type rk_nand_resume, %function rk_nand_resume: - adrp x0, .LANCHOR4+1176 + adrp x0, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x0, [x0,96] blr x0 ldp x29, x30, [sp], 16 @@ -9457,10 +9820,10 @@ rk_nand_resume: .global rk_ftl_get_capacity .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: - adrp x0, .LANCHOR4+1176 + adrp x0, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x1, [x0,72] mov w0, 0 blr x1 @@ -9471,10 +9834,10 @@ rk_ftl_get_capacity: .global rk_nandc_get_irq_status .type rk_nandc_get_irq_status, %function rk_nandc_get_irq_status: - adrp x1, .LANCHOR4+1176 + adrp x1, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR4+1176] + ldr x1, [x1,#:lo12:.LANCHOR4+1192] ldr x1, [x1,120] blr x1 ldp x29, x30, [sp], 16 @@ -9484,10 +9847,10 @@ rk_nandc_get_irq_status: .global rknand_proc_ftlread .type rknand_proc_ftlread, %function rknand_proc_ftlread: - adrp x1, .LANCHOR4+1176 + adrp x1, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR4+1176] + ldr x1, [x1,#:lo12:.LANCHOR4+1192] ldr x1, [x1,128] blr x1 ldp x29, x30, [sp], 16 @@ -9497,11 +9860,11 @@ rknand_proc_ftlread: .global FtlRead .type FtlRead, %function FtlRead: - adrp x4, .LANCHOR4+1176 + adrp x4, .LANCHOR4+1192 uxtb w0, w0 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x4, [x4,#:lo12:.LANCHOR4+1176] + ldr x4, [x4,#:lo12:.LANCHOR4+1192] ldr x4, [x4,40] blr x4 ldp x29, x30, [sp], 16 @@ -9511,10 +9874,10 @@ FtlRead: .global FtlDiscard .type FtlDiscard, %function FtlDiscard: - adrp x2, .LANCHOR4+1176 + adrp x2, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x2, [x2,#:lo12:.LANCHOR4+1176] + ldr x2, [x2,#:lo12:.LANCHOR4+1192] ldr x2, [x2,56] blr x2 ldp x29, x30, [sp], 16 @@ -9524,10 +9887,10 @@ FtlDiscard: .global rk_ftl_garbage_collect .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: - adrp x2, .LANCHOR4+1176 + adrp x2, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x2, [x2,#:lo12:.LANCHOR4+1176] + ldr x2, [x2,#:lo12:.LANCHOR4+1192] ldr x2, [x2,104] blr x2 ldp x29, x30, [sp], 16 @@ -9537,10 +9900,10 @@ rk_ftl_garbage_collect: .global ReadFlashInfo .type ReadFlashInfo, %function ReadFlashInfo: - adrp x1, .LANCHOR4+1176 + adrp x1, .LANCHOR4+1192 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR4+1176] + ldr x1, [x1,#:lo12:.LANCHOR4+1192] ldr x1, [x1,112] blr x1 ldp x29, x30, [sp], 16 @@ -9556,8 +9919,8 @@ rknand_print_hex: stp x21, x22, [sp,32] stp x23, x24, [sp,48] mov x19, 0 - adrp x23, .LC129 - adrp x21, .LC130 + adrp x23, .LC136 + adrp x21, .LC137 adrp x24, .LC1 stp x25, x26, [sp,64] str x27, [sp,80] @@ -9566,48 +9929,48 @@ rknand_print_hex: mov w25, w2 uxtw x26, w3 mov w20, w19 - add x23, x23, :lo12:.LC129 - add x21, x21, :lo12:.LC130 + add x23, x23, :lo12:.LC136 + add x21, x21, :lo12:.LC137 add x24, x24, :lo12:.LC1 -.L1511: +.L1555: cmp x19, x26 - beq .L1519 - cbnz w20, .L1512 + beq .L1563 + cbnz w20, .L1556 mov x0, x23 mov x1, x27 mov x2, x22 mov w3, w19 bl printk -.L1512: +.L1556: cmp w25, 4 mov x0, x21 - bne .L1513 + bne .L1557 ldr w1, [x22,x19,lsl 2] - b .L1518 -.L1513: + b .L1562 +.L1557: cmp w25, 2 - bne .L1515 + bne .L1559 ldrsh w1, [x22,x19,lsl 1] - b .L1518 -.L1515: + b .L1562 +.L1559: ldrb w1, [x22,x19] -.L1518: +.L1562: bl printk add w20, w20, 1 cmp w20, 15 - bls .L1516 - adrp x1, .LC131 + bls .L1560 + adrp x1, .LC138 mov x0, x24 - add x1, x1, :lo12:.LC131 + add x1, x1, :lo12:.LC138 mov w20, 0 bl printk -.L1516: +.L1560: add x19, x19, 1 - b .L1511 -.L1519: + b .L1555 +.L1563: adrp x0, .LC1 - adrp x1, .LC131 - add x1, x1, :lo12:.LC131 + adrp x1, .LC138 + add x1, x1, :lo12:.LC138 add x0, x0, :lo12:.LC1 bl printk ldr x27, [sp,80] @@ -9623,171 +9986,185 @@ rknand_print_hex: .type hynix_get_read_retry_default, %function hynix_get_read_retry_default: stp x29, x30, [sp, -144]! + adrp x3, .LANCHOR0 mov w2, -83 - mov w1, -82 add x29, sp, 0 stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - stp x25, x26, [sp,64] - mov w25, w0 - add x0, x19, :lo12:.LANCHOR0 + mov w19, w0 + add x0, x3, :lo12:.LANCHOR0 stp x21, x22, [sp,32] + stp x25, x26, [sp,64] stp x23, x24, [sp,48] stp x27, x28, [sp,80] - cmp w25, 2 - str x19, [x29,128] - ldr x27, [x0,728] - add x0, x27, 112 - str x0, [x29,136] + mov w1, -82 + cmp w19, 2 + ldr x25, [x0,728] mov w0, -84 - strb w25, [x27,112] - strb w0, [x27,128] + str x3, [x29,136] + add x26, x25, 128 + add x22, x25, 112 + strb w0, [x25,128] mov w0, -81 - strb w2, [x27,129] - add x26, x27, 128 - strb w1, [x27,130] - strb w0, [x27,131] - bne .L1521 - ldr x1, [x29,136] + strb w19, [x25,112] + strb w2, [x25,129] + strb w1, [x25,130] + strb w0, [x25,131] + bne .L1565 mov w0, -89 - strb w0, [x1,16] + strb w0, [x22,16] adrp x0, .LANCHOR2+425 mov w1, -9 strb w1, [x0,#:lo12:.LANCHOR2+425] - b .L1576 -.L1521: - cmp w25, 3 - bne .L1523 - mov x4, 0 -.L1524: - sub w0, w4, #80 - strb w0, [x26,x4] - add x4, x4, 1 - cmp x4, 8 - bne .L1524 - mov w21, w4 - mov w28, w4 - b .L1522 -.L1523: - cmp w25, 4 - bne .L1525 - mov w4, -52 - strb w4, [x27,128] - mov w4, -65 - strb w4, [x27,129] - mov w4, -86 - mov w21, 8 - strb w4, [x27,130] - mov w4, -85 - strb w2, [x27,133] - mov w28, w21 - strb w4, [x27,131] - mov w4, -51 - strb w1, [x27,134] - strb w4, [x27,132] - strb w0, [x27,135] - b .L1522 -.L1525: - cmp w25, 5 - bne .L1526 + b .L1628 +.L1565: + cmp w19, 3 + bne .L1567 + mov x5, 0 +.L1568: + sub w0, w5, #80 + strb w0, [x26,x5] + add x5, x5, 1 + cmp x5, 8 + bne .L1568 + mov w27, w5 + mov w28, w5 + b .L1566 +.L1567: + cmp w19, 4 + bne .L1569 + mov w5, -52 + strb w5, [x25,128] + mov w5, -65 + strb w5, [x25,129] + mov w5, -86 + mov w27, 8 + strb w5, [x25,130] + mov w5, -85 + strb w2, [x25,133] + mov w28, w27 + strb w5, [x25,131] + mov w5, -51 + strb w1, [x25,134] + strb w5, [x25,132] + strb w0, [x25,135] + b .L1566 +.L1569: + cmp w19, 5 + bne .L1570 mov w0, 56 - strb w0, [x27,128] + strb w0, [x25,128] mov w0, 57 - strb w0, [x27,129] + strb w0, [x25,129] mov w0, 58 - mov w21, 8 - strb w0, [x27,130] + mov w27, 8 + strb w0, [x25,130] mov w0, 59 - strb w0, [x27,131] - b .L1610 -.L1526: - cmp w25, 6 - bne .L1527 + strb w0, [x25,131] + b .L1670 +.L1570: + cmp w19, 6 + bne .L1571 mov w0, 14 - strb w0, [x27,128] + strb w0, [x25,128] mov w0, 15 - strb w0, [x27,129] + strb w0, [x25,129] mov w0, 16 - mov w21, 12 - strb w0, [x27,130] + mov w27, 12 + strb w0, [x25,130] mov w0, 17 - strb w0, [x27,131] - b .L1610 -.L1527: - cmp w25, 7 - bne .L1576 + strb w0, [x25,131] + b .L1670 +.L1571: + cmp w19, 7 + bne .L1572 mov x0, 0 -.L1528: +.L1573: sub w1, w0, #80 strb w1, [x26,x0] add x0, x0, 1 cmp x0, 8 - bne .L1528 + bne .L1573 mov w0, -44 - mov w21, 12 - strb w0, [x27,136] + mov w27, 12 + strb w0, [x25,136] mov w28, 10 mov w0, -43 - strb w0, [x27,137] - b .L1522 -.L1576: - mov w21, 7 -.L1610: + strb w0, [x25,137] + b .L1566 +.L1572: + cmp w19, 8 + bne .L1628 + mov w0, 6 + strb w0, [x25,128] + mov w0, 7 + strb w0, [x25,129] + mov w0, 9 + strb w19, [x25,130] + strb w0, [x25,131] + mov w27, 50 + mov w0, 10 + mov w28, 5 + strb w0, [x25,132] + b .L1566 +.L1628: + mov w27, 7 +.L1670: mov w28, 4 -.L1522: - sub w0, w25, #1 +.L1566: + sub w0, w19, #1 cmp w0, 1 - bhi .L1607 - ldr x0, [x29,128] + bhi .L1667 + ldr x0, [x29,136] adrp x24, .LANCHOR2 add x24, x24, :lo12:.LANCHOR2 mov w23, 0 add x19, x0, :lo12:.LANCHOR0 - mov w27, 55 + mov w5, 55 add x24, x24, 408 -.L1529: +.L1574: ldrb w0, [x19,633] cmp w0, w23 - bls .L1536 + bls .L1581 add x0, x19, x23, sxtw - ldr x2, [x29,136] ldrb w0, [x0,736] mov x20, 160 - ldr x22, [x19,536] - mov x25, 0 + ldr x21, [x19,536] ubfiz x1, x0, 8, 8 - madd x20, x0, x20, x2 - add x22, x22, x1 + mov x25, 0 + madd x20, x0, x20, x22 + add x21, x21, x1 add x20, x20, 32 -.L1531: - str w27, [x22,2056] +.L1576: + str w5, [x21,2056] + str x5, [x29,136] ldrb w0, [x26,x25] - str w0, [x22,2052] + str w0, [x21,2052] mov w0, 80 bl timer_delay_ns - ldr w0, [x22,2048] + ldr w0, [x21,2048] strb w0, [x20,x25] add x25, x25, 1 + ldr x5, [x29,136] cmp w28, w25, uxtb - bhi .L1531 + bhi .L1576 mov x0, 0 -.L1532: +.L1577: add w2, w0, 8 mov x1, 0 -.L1533: +.L1578: add x3, x1, x0 add x1, x1, 4 add x3, x24, x3 cmp x1, 24 - ldrb w5, [x3,4] + ldrb w4, [x3,4] ldrb w3, [x20,x0] - add w3, w5, w3 + add w3, w4, w3 strb w3, [x20,w2,sxtw] add w2, w2, 8 - bne .L1533 + bne .L1578 add x0, x0, 1 cmp x0, 4 - bne .L1532 + bne .L1577 add w23, w23, 1 strb wzr, [x20,16] strb wzr, [x20,24] @@ -9797,34 +10174,34 @@ hynix_get_read_retry_default: strb wzr, [x20,48] strb wzr, [x20,41] strb wzr, [x20,49] - b .L1529 -.L1607: - sub w0, w25, #3 - cmp w0, 4 - bhi .L1536 - mul w0, w28, w21 - sub w23, w28, #1 + b .L1574 +.L1667: + sub w0, w19, #3 + cmp w0, 5 + bhi .L1581 + mul w0, w28, w27 + sub w24, w28, #1 mov w20, 0 - asr w22, w0, 2 + asr w23, w0, 1 lsl w0, w0, 4 - uxtb x23, w23 - str w0, [x29,120] - lsl w0, w22, 1 - sub w19, w25, #5 + str w0, [x29,128] + lsl w0, w23, 1 + uxtb x24, w24 str w0, [x29,124] + sub w0, w19, #5 adrp x26, .LANCHOR4 - add x0, x23, 1 + str w0, [x29,132] + add x0, x24, 1 str x0, [x29,112] -.L1537: - ldr x0, [x29,128] +.L1582: + ldr x0, [x29,136] add x1, x0, :lo12:.LANCHOR0 ldrb w0, [x1,633] cmp w0, w20 - bhi .L1575 -.L1536: - ldr x0, [x29,136] - strb w28, [x0,1] - strb w21, [x0,2] + bhi .L1627 +.L1581: + strb w28, [x22,1] + strb w27, [x22,2] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -9832,280 +10209,349 @@ hynix_get_read_retry_default: ldp x27, x28, [sp,80] ldp x29, x30, [sp], 144 ret -.L1575: +.L1627: add x0, x1, x20, sxtw - ldrb w23, [x0,736] + ldrb w24, [x0,736] str x1, [x29,104] - mov x24, 160 - mov w0, w23 + mov x21, 160 + mov w0, w24 bl zftl_flash_exit_slc_mode - ldr x1, [x29,136] - sxtw x0, w23 - ubfiz x2, x23, 8, 8 - madd x24, x0, x24, x1 ldr x1, [x29,104] - add x24, x24, 32 + sxtw x0, w24 + ubfiz x2, x24, 8, 8 + madd x21, x0, x21, x22 ldr x0, [x1,536] mov w1, 255 str x1, [x29,104] - add x23, x0, x2 - str w1, [x23,2056] + add x21, x21, 32 + add x24, x0, x2 + str w1, [x24,2056] bl nandc_wait_flash_ready - mov w0, 54 - cmp w25, 4 - str w0, [x23,2056] + cmp w19, 8 ldr x1, [x29,104] - bne .L1538 - mov w0, 64 - str w1, [x23,2052] - str w0, [x23,2048] - mov w0, 204 - b .L1611 -.L1538: - cmp w19, 1 - bhi .L1540 - ldrb w0, [x27,128] - str w0, [x23,2052] - mov w0, 82 - b .L1612 -.L1540: - mov w0, 174 - str w0, [x23,2052] - str wzr, [x23,2048] - mov w0, 176 -.L1611: - str w0, [x23,2052] - mov w0, 77 -.L1612: - str w0, [x23,2048] - mov w0, 22 - str w0, [x23,2056] + bne .L1583 + mov w0, 120 + str w0, [x24,2056] + str wzr, [x24,2052] mov w0, 23 - str w0, [x23,2056] + str wzr, [x24,2052] + mov w1, 25 + str wzr, [x24,2052] + add x21, x25, 144 + str w0, [x24,2056] mov w0, 4 - str w0, [x23,2056] + str w0, [x24,2056] + str w1, [x24,2056] + mov w1, 218 + str w1, [x24,2056] + mov w1, 21 + str wzr, [x24,2056] + str wzr, [x24,2052] + str wzr, [x24,2052] + str w1, [x24,2052] + b .L1673 +.L1583: + mov w0, 54 + cmp w19, 4 + str w0, [x24,2056] + bne .L1585 + mov w0, 64 + str w1, [x24,2052] + str w0, [x24,2048] + mov w0, 204 + b .L1671 +.L1585: + ldr w0, [x29,132] + cmp w0, 1 + bhi .L1587 + ldrb w0, [x25,128] + str w0, [x24,2052] + mov w0, 82 + b .L1672 +.L1587: + cmp w19, 7 + bne .L1586 + mov w0, 174 + str w0, [x24,2052] + str wzr, [x24,2048] + mov w0, 176 +.L1671: + str w0, [x24,2052] + mov w0, 77 +.L1672: + str w0, [x24,2048] +.L1586: + mov w0, 22 + str w0, [x24,2056] + mov w0, 23 + str w0, [x24,2056] + mov w0, 4 + str w0, [x24,2056] mov w0, 25 - str w0, [x23,2056] - cmp w25, 6 - str wzr, [x23,2056] - str wzr, [x23,2052] - str wzr, [x23,2052] - bne .L1541 + str w0, [x24,2056] + str wzr, [x24,2056] + cmp w19, 6 + str wzr, [x24,2052] + str wzr, [x24,2052] + bne .L1588 mov w0, 31 - str w0, [x23,2052] - b .L1542 -.L1541: - str wzr, [x23,2052] -.L1542: - mov w7, 2 - str w7, [x23,2052] - str wzr, [x23,2052] + str w0, [x24,2052] + b .L1589 +.L1588: + str wzr, [x24,2052] +.L1589: + mov w0, 2 +.L1673: + str w0, [x24,2052] mov w0, 48 - str w0, [x23,2056] - str x7, [x29,104] + str wzr, [x24,2052] + str w0, [x24,2056] bl nandc_wait_flash_ready - cmp w19, 1 - mov w1, 16 - bls .L1544 - ldr x7, [x29,104] - cmp w25, 7 + ldr w0, [x29,132] + cmp w0, 1 + cset w8, ls + cmp w19, 8 + cset w7, eq + cbnz w8, .L1630 + cbnz w7, .L1630 + cmp w19, 7 mov w1, 32 - csel w1, w1, w7, eq -.L1544: + mov w0, 2 + csel w1, w0, w1, ne + b .L1590 +.L1630: + mov w1, 16 +.L1590: adrp x0, .LANCHOR4 - mov x7, 0 + mov x9, 0 add x0, x0, :lo12:.LANCHOR4 - ldr x0, [x0,1192] -.L1545: - ldr w8, [x23,2048] - strb w8, [x0,x7] - add x7, x7, 1 - cmp w1, w7, uxtb - bhi .L1545 - cmp w25, 7 - bne .L1546 + ldr x0, [x0,1208] +.L1591: + ldr w10, [x24,2048] + strb w10, [x0,x9] + add x9, x9, 1 + cmp w1, w9, uxtb + bhi .L1591 + cbz w7, .L1592 mov w1, 0 -.L1548: - ldrb w7, [x0] - cmp w7, 12 - beq .L1547 - ldrb w7, [x0,1] - cmp w7, 10 - beq .L1547 +.L1594: + ldrb w9, [x0] + cmp w9, 50 + beq .L1593 + ldrb w9, [x0,1] + cmp w9, 5 + beq .L1593 add w1, w1, 1 add x0, x0, 4 uxtb w1, w1 cmp w1, 8 - bne .L1548 - b .L1549 -.L1547: + bne .L1594 + b .L1595 +.L1593: cmp w1, 7 - bne .L1550 -.L1549: - adrp x0, .LC132 + bne .L1596 +.L1595: + adrp x0, .LC139 mov w1, 0 - add x0, x0, :lo12:.LC132 + add x0, x0, :lo12:.LC139 bl printk -.L1551: - b .L1551 -.L1546: - cmp w25, 6 - bne .L1550 +.L1597: + b .L1597 +.L1592: + cmp w19, 7 + bne .L1598 + mov w1, w7 +.L1600: + ldrb w9, [x0] + cmp w9, 12 + beq .L1599 + ldrb w9, [x0,1] + cmp w9, 10 + beq .L1599 + add w1, w1, 1 + add x0, x0, 4 + uxtb w1, w1 + cmp w1, 8 + bne .L1600 + b .L1601 +.L1599: + cmp w1, 7 + bne .L1596 +.L1601: + adrp x0, .LC139 + mov w1, 0 + add x0, x0, :lo12:.LC139 + bl printk +.L1602: + b .L1602 +.L1598: + cmp w19, 6 + bne .L1596 mov x1, 0 -.L1552: - ldrb w7, [x0,x1] - cmp w7, 12 - beq .L1550 - add x7, x0, x1 - ldrb w7, [x7,8] - cmp w7, 4 - beq .L1550 +.L1603: + ldrb w9, [x0,x1] + cmp w9, 12 + beq .L1596 + add x9, x0, x1 + ldrb w9, [x9,8] + cmp w9, 4 + beq .L1596 add x1, x1, 1 cmp x1, 8 - bne .L1552 - adrp x0, .LC132 + bne .L1603 + adrp x0, .LC139 mov w1, 0 - add x0, x0, :lo12:.LC132 + add x0, x0, :lo12:.LC139 bl printk -.L1554: - b .L1554 -.L1550: +.L1605: + b .L1605 +.L1596: add x0, x26, :lo12:.LANCHOR4 - ldr x9, [x0,1192] + ldr x10, [x0,1208] mov x0, 0 -.L1555: - ldr w1, [x29,120] +.L1606: + ldr w1, [x29,128] cmp w1, w0 - ble .L1614 - ldr w1, [x23,2048] - strb w1, [x9,x0] + ble .L1675 + ldr w1, [x24,2048] + strb w1, [x10,x0] add x0, x0, 1 - b .L1555 -.L1614: + b .L1606 +.L1675: add x0, x26, :lo12:.LANCHOR4 - mov w8, w22 - mov w7, 8 - ldr x11, [x0,1192] -.L1558: + mov w11, w23 + mov w9, 8 + ldr x12, [x0,1208] +.L1609: mov w0, 0 -.L1557: - add w1, w0, w8 +.L1608: + add w1, w0, w11 add w0, w0, 1 - sbfiz x1, x1, 2, 32 - cmp w0, w22 - ldr w10, [x11,x1] - mvn w10, w10 - str w10, [x11,x1] - bne .L1557 + sbfiz x1, x1, 1, 32 + cmp w0, w23 + ldrh w13, [x12,x1] + mvn w13, w13 + strh w13, [x12,x1] + bne .L1608 ldr w0, [x29,124] - subs w7, w7, #1 - add w8, w8, w0 - bne .L1558 - mov x7, 0 - mov w15, 1 -.L1559: - add x0, x26, :lo12:.LANCHOR4 + subs w9, w9, #1 + add w11, w11, w0 + bne .L1609 + mov x9, 0 + mov w17, 1 +.L1610: mov w1, 0 - mov w10, w1 - ldr x14, [x0,1192] -.L1563: - lsl w8, w15, w10 - mov w12, w7 + mov w11, w1 +.L1614: + lsl w13, w17, w11 + mov w15, w9 mov w0, 16 - mov w11, 0 -.L1561: - ldr w13, [x14,w12,sxtw 2] - add w12, w12, w22 - and w13, w8, w13 - cmp w13, w8 - csinc w11, w11, w11, ne + mov w14, 0 +.L1612: + ldrh w16, [x12,w15,sxtw 1] + add w15, w15, w23 + and w16, w16, w13 + cmp w16, w13 + csinc w14, w14, w14, ne subs w0, w0, #1 - bne .L1561 - cmp w11, 9 - orr w8, w1, w8 - add w10, w10, 1 - csel w1, w8, w1, cs - cmp w10, 32 - bne .L1563 - str w1, [x14,x7,lsl 2] - add x7, x7, 1 - cmp w22, w7 - bgt .L1559 + bne .L1612 + cmp w14, 8 + bls .L1613 + orr w1, w1, w13 + uxth w1, w1 +.L1613: + add w11, w11, 1 + cmp w11, 16 + bne .L1614 + strh w1, [x12,x9,lsl 1] + add x9, x9, 1 + cmp w23, w9 + bgt .L1610 add x1, x26, :lo12:.LANCHOR4 - mov x7, 0 - mov w8, w7 - ldr x1, [x1,1192] -.L1566: - ldr w10, [x1,x7] - add x7, x7, 4 - cmp w10, wzr - csinc w8, w8, w8, ne - cmp x7, 32 - bne .L1566 - cmp w8, 7 - ble .L1567 - adrp x0, .LC133 + mov x9, 0 + mov w11, w9 + ldr x1, [x1,1208] +.L1617: + ldr w12, [x1,x9] + add x9, x9, 4 + cmp w12, wzr + csinc w11, w11, w11, ne + cmp x9, 32 + bne .L1617 + cmp w11, 7 + ble .L1618 + adrp x0, .LC140 mov w2, 1 - add x0, x0, :lo12:.LC133 + add x0, x0, :lo12:.LC140 mov w3, 1024 bl rknand_print_hex - adrp x0, .LC132 + adrp x0, .LC139 mov w1, 0 - add x0, x0, :lo12:.LC132 + add x0, x0, :lo12:.LC139 bl printk -.L1568: - b .L1568 -.L1567: - cmp w25, 6 - mov w7, 4 - beq .L1569 - cmp w25, 7 - mov w7, 10 +.L1619: + b .L1619 +.L1618: + cmp w19, 6 + mov w9, 4 + beq .L1620 + cmp w19, 7 + mov w9, 10 + beq .L1620 + cmp w7, wzr + mov w9, 5 mov w1, 8 - csel w7, w1, w7, ne -.L1569: - mov w8, 0 -.L1570: + csel w9, w1, w9, eq +.L1620: + mov w11, 0 +.L1621: mov x1, 0 -.L1571: - add w10, w0, w1 - ldrb w11, [x9,x1] +.L1622: + add w12, w0, w1 + ldrb w13, [x10,x1] add x1, x1, 1 cmp w28, w1, uxtb - strb w11, [x24,w10,sxtw] - bhi .L1571 - add w8, w8, 1 + strb w13, [x21,w12,sxtw] + bhi .L1622 + add w11, w11, 1 ldr x1, [x29,112] - cmp w8, w21 - add w0, w0, w7 - add x9, x9, x1 - blt .L1570 - mov w24, 255 - str w24, [x23,2056] + cmp w11, w27 + add w0, w0, w9 + add x10, x10, x1 + blt .L1621 + mov w21, 255 + str w21, [x24,2056] + str x7, [x29,96] + str x8, [x29,104] bl nandc_wait_flash_ready - cmp w19, 1 - mov w0, 56 - bhi .L1613 + ldr x8, [x29,104] + ldr x7, [x29,96] + cbz w8, .L1624 mov w0, 54 - str w0, [x23,2056] - ldrb w0, [x27,128] - str w0, [x23,2052] + str w0, [x24,2056] + ldrb w0, [x25,128] + str w0, [x24,2052] mov w0, 22 - str wzr, [x23,2048] - str w0, [x23,2056] + str wzr, [x24,2048] + str w0, [x24,2056] mov w0, 48 - str wzr, [x23,2056] - str wzr, [x23,2052] - str wzr, [x23,2052] - str w24, [x23,2052] - str w24, [x23,2052] - str w24, [x23,2052] -.L1613: - str w0, [x23,2056] + str wzr, [x24,2056] + str wzr, [x24,2052] + str wzr, [x24,2052] + str w21, [x24,2052] + str w21, [x24,2052] + str w21, [x24,2052] + b .L1674 +.L1624: + mov w0, 190 + cbnz w7, .L1674 + mov w0, 56 +.L1674: + str w0, [x24,2056] add w20, w20, 1 bl nandc_wait_flash_ready uxtb w20, w20 - b .L1537 + b .L1582 .size hynix_get_read_retry_default, .-hynix_get_read_retry_default .align 2 .global flash_get_read_retry_tbl @@ -10117,10 +10563,10 @@ flash_get_read_retry_tbl: ldrb w0, [x0,#:lo12:.LANCHOR2+27] sub w1, w0, #1 uxtb w1, w1 - cmp w1, 6 - bhi .L1615 + cmp w1, 7 + bhi .L1676 bl hynix_get_read_retry_default -.L1615: +.L1676: ldp x29, x30, [sp], 16 ret .size flash_get_read_retry_tbl, .-flash_get_read_retry_tbl @@ -10140,54 +10586,54 @@ nandc_xfer_done: adrp x0, .LANCHOR4 add x1, x0, :lo12:.LANCHOR4 mov x23, x0 - strb wzr, [x1,1200] + strb wzr, [x1,1216] ldrb w1, [x20,516] cmp w1, 9 - bne .L1618 + bne .L1679 ldr x24, [x20,536] ldr w0, [x24,16] str w0, [x29,64] ldr w20, [x24,48] ubfx x20, x20, 1, 1 - cbnz w20, .L1638 - adrp x21, .LC137 - adrp x23, .LC136 - add x21, x21, :lo12:.LC137 - add x23, x23, :lo12:.LC136 - b .L1620 -.L1638: - adrp x21, .LC135 - adrp x22, .LC136 + cbnz w20, .L1699 + adrp x21, .LC144 + adrp x23, .LC143 + add x21, x21, :lo12:.LC144 + add x23, x23, :lo12:.LC143 + b .L1681 +.L1699: + adrp x21, .LC142 + adrp x22, .LC143 mov w20, 0 - add x21, x21, :lo12:.LC135 - add x22, x22, :lo12:.LC136 -.L1619: + add x21, x21, :lo12:.LC142 + add x22, x22, :lo12:.LC143 +.L1680: ldr w2, [x24,64] ldr w1, [x29,64] ubfx x2, x2, 16, 6 ubfx x1, x1, 22, 6 cmp w2, w1 - bge .L1622 + bge .L1683 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,536] ldr w0, [x0] str w0, [x29,72] ldr w0, [x29,72] - tbz x0, 13, .L1621 + tbz x0, 13, .L1682 ldr w0, [x29,72] - tbz x0, 17, .L1621 + tbz x0, 17, .L1682 ldr w1, [x29,72] - adrp x0, .LC134 - add x0, x0, :lo12:.LC134 + adrp x0, .LC141 + add x0, x0, :lo12:.LC141 ubfx x1, x1, 17, 1 bl printk - b .L1622 -.L1621: + b .L1683 +.L1682: ldr w0, [x29,64] add w20, w20, 1 ubfx x0, x0, 22, 6 cmp w20, w0, lsl 12 - bne .L1619 + bne .L1680 ldr w2, [x24,64] mov w1, w20 ldr w3, [x29,64] @@ -10202,15 +10648,15 @@ nandc_xfer_done: ldr x1, [x1,536] bl rknand_print_hex ldr w0, [x29,72] - tbz x0, 13, .L1619 + tbz x0, 13, .L1680 add x0, x23, :lo12:.LANCHOR4 mov w1, 1 - strb w1, [x0,1200] -.L1622: + strb w1, [x0,1216] +.L1683: add x20, x19, :lo12:.LANCHOR0 add x20, x20, 680 ldr w0, [x20,32] - cbz w0, .L1626 + cbz w0, .L1687 ldr w1, [x29,64] mov w2, 0 ldr w0, [x20,24] @@ -10221,15 +10667,15 @@ nandc_xfer_done: ldr w0, [x20,28] ubfx x1, x1, 22, 6 lsl w1, w1, 2 - b .L1666 -.L1628: + b .L1727 +.L1689: add x22, x19, :lo12:.LANCHOR0 add w20, w20, 1 ldr x0, [x22,536] ldr w0, [x0,16] str w0, [x29,64] and w0, w20, 16777215 - cbnz w0, .L1620 + cbnz w0, .L1681 ldr w2, [x29,64] mov w1, w20 ldr w3, [x24,64] @@ -10241,13 +10687,13 @@ nandc_xfer_done: mov w2, 4 mov w3, 64 bl rknand_print_hex -.L1620: +.L1681: ldr w0, [x29,64] - tbz x0, 20, .L1628 + tbz x0, 20, .L1689 add x20, x19, :lo12:.LANCHOR0 add x20, x20, 680 ldr w0, [x20,32] - cbz w0, .L1626 + cbz w0, .L1687 ldr w1, [x29,64] mov w2, 1 ldr w0, [x20,24] @@ -10258,49 +10704,49 @@ nandc_xfer_done: ldr w0, [x20,28] ubfx x1, x1, 22, 6 lsl w1, w1, 2 - b .L1665 -.L1618: + b .L1726 +.L1679: ldr x23, [x20,536] ldr w0, [x23,8] str w0, [x29,64] ldr w20, [x23,16] ubfx x20, x20, 1, 1 - cbnz w20, .L1639 - adrp x21, .LC137 - adrp x24, .LC136 - add x21, x21, :lo12:.LC137 - add x24, x24, :lo12:.LC136 - b .L1631 -.L1639: - adrp x21, .LC135 - adrp x22, .LC136 + cbnz w20, .L1700 + adrp x21, .LC144 + adrp x24, .LC143 + add x21, x21, :lo12:.LC144 + add x24, x24, :lo12:.LC143 + b .L1692 +.L1700: + adrp x21, .LC142 + adrp x22, .LC143 mov w20, 0 - add x21, x21, :lo12:.LC135 - add x22, x22, :lo12:.LC136 -.L1630: + add x21, x21, :lo12:.LC142 + add x22, x22, :lo12:.LC143 +.L1691: ldr w2, [x23,28] ldr w1, [x29,64] ubfx x2, x2, 16, 5 ubfx x1, x1, 22, 6 cmp w2, w1 - bge .L1633 + bge .L1694 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,536] ldr w0, [x0] str w0, [x29,72] ldr w0, [x29,72] - tbz x0, 13, .L1632 + tbz x0, 13, .L1693 ldr w0, [x29,72] - tbz x0, 17, .L1632 + tbz x0, 17, .L1693 ldr w1, [x29,72] - adrp x0, .LC138 - add x0, x0, :lo12:.LC138 + adrp x0, .LC145 + add x0, x0, :lo12:.LC145 bl printk - b .L1633 -.L1632: + b .L1694 +.L1693: add w20, w20, 1 and w0, w20, 16777215 - cbnz w0, .L1630 + cbnz w0, .L1691 ldr w2, [x23,28] mov w1, w20 ldr w3, [x29,64] @@ -10314,12 +10760,12 @@ nandc_xfer_done: mov w3, 64 ldr x1, [x1,536] bl rknand_print_hex - b .L1630 -.L1633: + b .L1691 +.L1694: add x20, x19, :lo12:.LANCHOR0 add x20, x20, 680 ldr w0, [x20,32] - cbz w0, .L1626 + cbz w0, .L1687 ldr w1, [x29,64] mov w2, 0 ldr w0, [x20,24] @@ -10330,17 +10776,17 @@ nandc_xfer_done: ldr w0, [x20,28] ubfx x1, x1, 22, 6 lsl w1, w1, 7 -.L1666: +.L1727: mov w2, 0 - b .L1664 -.L1637: + b .L1725 +.L1698: add x22, x19, :lo12:.LANCHOR0 add w20, w20, 1 ldr x0, [x22,536] ldr w0, [x0,8] str w0, [x29,64] and w0, w20, 16777215 - cbnz w0, .L1631 + cbnz w0, .L1692 ldr w2, [x29,64] mov w1, w20 ldr w3, [x23,28] @@ -10352,13 +10798,13 @@ nandc_xfer_done: mov w2, 4 mov w3, 64 bl rknand_print_hex -.L1631: +.L1692: ldr w0, [x29,64] - tbz x0, 20, .L1637 + tbz x0, 20, .L1698 add x20, x19, :lo12:.LANCHOR0 add x20, x20, 680 ldr w0, [x20,32] - cbz w0, .L1626 + cbz w0, .L1687 ldr w1, [x29,64] mov w2, 1 ldr w0, [x20,24] @@ -10369,11 +10815,11 @@ nandc_xfer_done: ldr w0, [x20,28] ubfx x1, x1, 22, 6 lsl w1, w1, 7 -.L1665: +.L1726: mov w2, 1 -.L1664: +.L1725: bl rknand_dma_unmap_single -.L1626: +.L1687: add x19, x19, :lo12:.LANCHOR0 ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -10402,19 +10848,19 @@ nandc_xfer: bl nandc_xfer_start bl nandc_xfer_done mov w0, 0 - cbnz w20, .L1697 + cbnz w20, .L1758 adrp x19, .LANCHOR0 add x2, x19, :lo12:.LANCHOR0 ldrb w1, [x2,516] cmp w1, 9 - bne .L1669 + bne .L1730 ldr x5, [x2,536] lsr w22, w22, 2 mov w4, 1 mov w3, w0 -.L1670: +.L1731: cmp w3, w22 - bcs .L1706 + bcs .L1767 uxtw x1, w3 add x1, x1, 84 ldr w1, [x5,x1,lsl 2] @@ -10426,30 +10872,30 @@ nandc_xfer: and w1, w1, w2 and w4, w4, w1 ldr w1, [x29,72] - tbnz x1, 2, .L1689 + tbnz x1, 2, .L1750 ldr w1, [x29,72] - tbnz x1, 18, .L1689 + tbnz x1, 18, .L1750 ldr w2, [x29,72] ldr w1, [x29,72] ubfx x2, x2, 3, 7 ubfx x1, x1, 19, 7 cmp w2, w1 ldr w1, [x29,72] - ble .L1672 + ble .L1733 ubfx x1, x1, 3, 7 - b .L1673 -.L1672: + b .L1734 +.L1733: ubfx x1, x1, 19, 7 -.L1673: +.L1734: cmp w0, w1 csel w0, w0, w1, cs - b .L1671 -.L1689: + b .L1732 +.L1750: mov w0, -1 -.L1671: +.L1732: add w3, w3, 1 - b .L1670 -.L1706: + b .L1731 +.L1767: add x22, x19, :lo12:.LANCHOR0 cmp w4, wzr ldr x1, [x22,536] @@ -10460,30 +10906,30 @@ nandc_xfer: movk w1, 0x2, lsl 16 and w1, w20, w1 cmp w1, 139264 - bne .L1676 - adrp x0, .LC139 + bne .L1737 + adrp x0, .LC146 mov w1, w20 - add x0, x0, :lo12:.LC139 + add x0, x0, :lo12:.LC146 orr w20, w20, 131072 bl printk ldr x0, [x22,536] str w20, [x0] mov w0, -1 -.L1676: - tbz x20, 13, .L1677 - adrp x1, .LANCHOR4+1200 - ldrb w1, [x1,#:lo12:.LANCHOR4+1200] - cbz w1, .L1677 - adrp x0, .LC140 +.L1737: + tbz x20, 13, .L1738 + adrp x1, .LANCHOR4+1216 + ldrb w1, [x1,#:lo12:.LANCHOR4+1216] + cbz w1, .L1738 + adrp x0, .LC147 mov w1, w20 - add x0, x0, :lo12:.LC140 + add x0, x0, :lo12:.LC147 add x19, x19, :lo12:.LANCHOR0 bl printk ldr x0, [x19,536] mov w1, 1 str w1, [x0,16] - b .L1678 -.L1669: + b .L1739 +.L1730: ldrb w0, [x2,724] mov w5, 128 lsr w6, w22, 1 @@ -10493,10 +10939,10 @@ nandc_xfer: csel w5, w0, w5, cc mov w1, w20 mov w4, w20 -.L1680: +.L1741: cmp w4, w6 add w7, w1, w5 - bcs .L1707 + bcs .L1768 ldr x0, [x2,680] and x1, x1, 4294967292 ldr w0, [x0,x1] @@ -10513,24 +10959,24 @@ nandc_xfer: add w3, w3, 4 strb w0, [x23,x1] mov w1, w7 - b .L1680 -.L1707: + b .L1741 +.L1768: add x0, x19, :lo12:.LANCHOR0 mov w2, 0 lsr w22, w22, 2 ldr x6, [x0,536] mov w0, w2 -.L1682: +.L1743: cmp w2, w22 - bcs .L1708 + bcs .L1769 uxtw x1, w2 add x1, x1, 8 ldr w1, [x6,x1,lsl 2] str w1, [x29,72] ldr w1, [x29,72] - tbnz x1, 2, .L1692 + tbnz x1, 2, .L1753 ldr w1, [x29,72] - tbnz x1, 15, .L1692 + tbnz x1, 15, .L1753 ldr w3, [x29,72] ubfx x5, x3, 3, 5 ldr w3, [x29,72] @@ -10543,26 +10989,26 @@ nandc_xfer: orr w1, w4, w1, lsl 5 cmp w3, w1 ldr w1, [x29,72] - bls .L1684 + bls .L1745 ubfx x3, x1, 3, 5 ldr w1, [x29,72] ubfx x1, x1, 27, 1 - b .L1705 -.L1684: + b .L1766 +.L1745: ubfx x3, x1, 16, 5 ldr w1, [x29,72] ubfx x1, x1, 29, 1 -.L1705: +.L1766: orr w1, w3, w1, lsl 5 cmp w0, w1 csel w0, w0, w1, cs - b .L1683 -.L1692: + b .L1744 +.L1753: mov w0, -1 -.L1683: +.L1744: add w2, w2, 1 - b .L1682 -.L1708: + b .L1743 +.L1769: add x19, x19, :lo12:.LANCHOR0 ldr x1, [x19,536] str wzr, [x1,16] @@ -10571,32 +11017,32 @@ nandc_xfer: movk w1, 0x2, lsl 16 and w1, w20, w1 cmp w1, 139264 - bne .L1677 - adrp x0, .LC141 + bne .L1738 + adrp x0, .LC148 mov w1, w20 - add x0, x0, :lo12:.LC141 + add x0, x0, :lo12:.LC148 orr w20, w20, 131072 bl printk ldr x0, [x19,536] str w20, [x0] - b .L1678 -.L1677: + b .L1739 +.L1738: cmn w0, #1 - beq .L1697 + beq .L1758 ldr w1, [x23] cmn w1, #1 - bne .L1697 + bne .L1758 ldr w1, [x23,4] cmn w1, #1 - bne .L1697 + bne .L1758 ldr w1, [x21] cmn w1, #1 mov w1, 512 csel w0, w0, w1, ne - b .L1697 -.L1678: + b .L1758 +.L1739: mov w0, -1 -.L1697: +.L1758: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldr x23, [sp,48] @@ -10626,36 +11072,36 @@ flash_read_page: and w20, w1, 2097151 ubfx x24, x23, 24, 2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1710 - adrp x0, .LC142 + tbz x0, 4, .L1771 + adrp x0, .LC149 mov w1, w21 - add x0, x0, :lo12:.LC142 + add x0, x0, :lo12:.LC149 mov w2, w24 mov w3, w23 bl printk -.L1710: +.L1771: bl nandc_wait_flash_ready mov w0, w21 bl nandc_cs - cbnz w24, .L1711 + cbnz w24, .L1772 mov w0, w21 bl zftl_flash_enter_slc_mode - b .L1712 -.L1711: + b .L1773 +.L1772: add x0, x22, :lo12:.LANCHOR0 ldr x0, [x0,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L1713 + bne .L1774 sxtw x0, w21 add x0, x0, 8 add x0, x19, x0, lsl 8 str w24, [x0,8] - b .L1712 -.L1713: + b .L1773 +.L1774: mov w0, w21 bl zftl_flash_exit_slc_mode -.L1712: +.L1773: ubfiz x5, x21, 8, 8 and w23, w23, 255 add x19, x19, x5 @@ -10669,19 +11115,19 @@ flash_read_page: str w0, [x19,2052] mov w0, 48 str w0, [x19,2056] - cbz w24, .L1714 + cbz w24, .L1775 add x22, x22, :lo12:.LANCHOR0 ldr x0, [x22,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L1714 + bne .L1775 add w20, w20, w20, lsl 1 sub w0, w20, #1 add w0, w0, w24 - b .L1725 -.L1714: + b .L1786 +.L1775: mov w0, w20 -.L1725: +.L1786: bl nandc_set_seed bl nandc_wait_flash_ready mov w0, 5 @@ -10738,14 +11184,14 @@ micron_read_retrial: uxtb x19, w24 lsl x0, x19, 8 str x0, [x29,112] - adrp x0, .LC143 - add x0, x0, :lo12:.LC143 + adrp x0, .LC150 + add x0, x0, :lo12:.LC150 str x0, [x29,104] -.L1727: +.L1788: add x0, x23, :lo12:.LANCHOR4 - ldrb w0, [x0,1216] + ldrb w0, [x0,1232] cmp w20, w0 - bcs .L1731 + bcs .L1792 ldr x0, [x29,112] add w27, w20, 1 add x1, x22, x0 @@ -10770,7 +11216,7 @@ micron_read_retrial: mov w6, w0 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L1728 + tbz x0, 12, .L1789 ldr x0, [x29,104] mov w4, w6 mov w1, w20 @@ -10779,24 +11225,24 @@ micron_read_retrial: str x6, [x29,96] bl printk ldr x6, [x29,96] -.L1728: +.L1789: cmn w6, #1 - beq .L1729 + beq .L1790 adrp x0, .LANCHOR4 cmn w28, #1 add x0, x0, :lo12:.LANCHOR4 csel w28, w28, w6, ne - ldr x25, [x0,1192] - ldr x26, [x0,1208] + ldr x25, [x0,1208] + ldr x26, [x0,1224] ldr w0, [x29,124] cmp w6, w0 - bcc .L1736 -.L1729: + bcc .L1797 +.L1790: mov w20, w27 - b .L1727 -.L1736: + b .L1788 +.L1797: mov w28, w6 -.L1731: +.L1792: add x19, x22, x19, lsl 8 mov w0, 239 str w0, [x19,2056] @@ -10810,24 +11256,24 @@ micron_read_retrial: str wzr, [x19,2048] str wzr, [x19,2048] cmp w28, w0 - bcc .L1733 + bcc .L1794 cmn w28, #1 mov w0, 256 csel w28, w28, w0, eq -.L1733: +.L1794: cmn w28, #1 - beq .L1737 + beq .L1798 cmp w28, 256 - bne .L1734 -.L1737: - adrp x0, .LC144 + bne .L1795 +.L1798: + adrp x0, .LC151 mov w1, w20 - add x0, x0, :lo12:.LC144 + add x0, x0, :lo12:.LC151 mov w2, w21 mov w3, w20 mov w4, w28 bl printk -.L1734: +.L1795: bl nandc_wait_flash_ready mov w0, w28 ldp x19, x20, [sp,16] @@ -10873,19 +11319,19 @@ toshiba_3d_read_retrial: cmp w1, 36 mov w1, 26 csel w21, w21, w1, ne - cbnz w19, .L1751 + cbnz w19, .L1812 str x0, [x29,112] - adrp x0, .LC145 - add x0, x0, :lo12:.LC145 + adrp x0, .LC152 + add x0, x0, :lo12:.LC152 mov w19, -1 mov w28, 1 str x0, [x29,104] -.L1758: +.L1819: add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 36 mov x0, x23 - bne .L1752 + bne .L1813 mov w1, w28 mov w2, 0 bl toshiba_tlc_set_rr_para @@ -10893,11 +11339,11 @@ toshiba_3d_read_retrial: mov w1, 93 add x0, x25, x0 str w1, [x0,8] - b .L1753 -.L1752: + b .L1814 +.L1813: mov w1, w28 bl toshiba_3d_set_slc_rr_para -.L1753: +.L1814: ldr w4, [x29,124] mov w0, w22 mov w1, w24 @@ -10907,7 +11353,7 @@ toshiba_3d_read_retrial: mov w4, w0 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1754 + tbz x0, 4, .L1815 ldr x0, [x29,104] mov w3, w4 mov w1, w28 @@ -10915,66 +11361,66 @@ toshiba_3d_read_retrial: str x4, [x29,96] bl printk ldr x4, [x29,96] -.L1754: +.L1815: cmn w4, #1 - beq .L1755 + beq .L1816 adrp x0, .LANCHOR4 cmn w19, #1 add x0, x0, :lo12:.LANCHOR4 csel w19, w19, w4, ne - ldr x26, [x0,1192] - ldr x27, [x0,1208] + ldr x26, [x0,1208] + ldr x27, [x0,1224] add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,724] add w0, w0, w0, lsl 1 cmp w4, w0, lsr 2 - bcc .L1774 -.L1755: + bcc .L1835 +.L1816: add w28, w28, 1 cmp w28, w21 - bne .L1758 - b .L1757 -.L1774: + bne .L1819 + b .L1818 +.L1835: mov w21, w28 mov w19, w4 -.L1757: +.L1818: add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 36 mov x0, x23 - bne .L1759 + bne .L1820 mov w1, 0 mov w2, w1 - b .L1797 -.L1759: + b .L1858 +.L1820: mov w1, 0 bl toshiba_3d_set_slc_rr_para - b .L1760 -.L1751: + b .L1821 +.L1812: mov x28, x0 - adrp x0, .LC146 - add x0, x0, :lo12:.LC146 + adrp x0, .LC153 + add x0, x0, :lo12:.LC153 mov w19, -1 mov w21, 1 str x0, [x29,104] -.L1767: +.L1828: add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 36 mov x0, x23 - bne .L1761 + bne .L1822 mov w1, w21 mov w2, 1 bl toshiba_tlc_set_rr_para add x0, x25, x28 mov w1, 93 - b .L1796 -.L1761: + b .L1857 +.L1822: mov w1, w21 bl toshiba_3d_set_tlc_rr_para add x0, x25, x28 mov w1, 38 -.L1796: +.L1857: str w1, [x0,8] mov x2, x26 mov w0, w22 @@ -10985,7 +11431,7 @@ toshiba_3d_read_retrial: mov w4, w0 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1763 + tbz x0, 4, .L1824 ldr x0, [x29,104] mov w3, w4 mov w1, w21 @@ -10993,47 +11439,47 @@ toshiba_3d_read_retrial: str x4, [x29,96] bl printk ldr x4, [x29,96] -.L1763: +.L1824: cmn w4, #1 - beq .L1764 + beq .L1825 adrp x0, .LANCHOR4 cmn w19, #1 add x0, x0, :lo12:.LANCHOR4 csel w19, w19, w4, ne - ldr x26, [x0,1192] - ldr x27, [x0,1208] + ldr x26, [x0,1208] + ldr x27, [x0,1224] add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,724] add w0, w0, w0, lsl 1 cmp w4, w0, lsr 2 - bcc .L1775 -.L1764: + bcc .L1836 +.L1825: ldr w0, [x29,112] add w21, w21, 1 cmp w21, w0 - bne .L1767 - b .L1766 -.L1775: + bne .L1828 + b .L1827 +.L1836: mov w19, w4 -.L1766: +.L1827: add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 36 mov x0, x23 - bne .L1768 + bne .L1829 mov w1, 0 mov w2, 1 -.L1797: +.L1858: bl toshiba_tlc_set_rr_para - b .L1760 -.L1768: + b .L1821 +.L1829: mov w1, 0 bl toshiba_3d_set_tlc_rr_para -.L1760: +.L1821: add x0, x20, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 36 - bne .L1769 + bne .L1830 ubfiz x22, x22, 8, 8 mov w0, 85 add x25, x25, x22 @@ -11042,29 +11488,29 @@ toshiba_3d_read_retrial: str wzr, [x25,2052] str wzr, [x25,2048] str w0, [x25,2056] -.L1769: +.L1830: add x20, x20, :lo12:.LANCHOR0 ldrb w0, [x20,724] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L1770 + bcc .L1831 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L1770: +.L1831: cmn w19, #1 - beq .L1776 + beq .L1837 cmp w19, 256 - bne .L1771 -.L1776: - adrp x0, .LC147 + bne .L1832 +.L1837: + adrp x0, .LC154 mov w1, w21 - add x0, x0, :lo12:.LC147 + add x0, x0, :lo12:.LC154 mov w2, w24 mov w3, w21 mov w4, w19 bl printk -.L1771: +.L1832: bl nandc_wait_flash_ready mov w0, w19 ldp x19, x20, [sp,16] @@ -11104,20 +11550,20 @@ toshiba_read_retrial: add x21, x22, x21, lsl 8 uxtb w0, w0 cmp w0, 1 - bls .L1799 + bls .L1860 ldrb w0, [x1,672] - cbz w0, .L1800 + cbz w0, .L1861 mov w0, 1 mov w25, 1 bl nandc_set_if_mode -.L1800: +.L1861: ubfiz x0, x23, 8, 8 mov w1, 92 add x0, x22, x0 str w1, [x0,2056] mov w1, 197 str w1, [x0,2056] -.L1799: +.L1860: ldr x0, [x29,112] mov w20, 1 mov w24, -1 @@ -11126,13 +11572,13 @@ toshiba_read_retrial: str x0, [x29,104] ubfiz x0, x23, 8, 8 str x0, [x29,96] -.L1801: +.L1862: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1216] + ldrb w0, [x0,1232] add w0, w0, 1 cmp w20, w0 - bcs .L1832 + bcs .L1893 add x0, x19, :lo12:.LANCHOR0 mov w1, w20 ldrb w0, [x0,725] @@ -11140,27 +11586,27 @@ toshiba_read_retrial: uxtb w0, w0 cmp w0, 1 mov x0, x21 - bhi .L1802 + bhi .L1863 bl sandisk_set_rr_para - b .L1803 -.L1802: + b .L1864 +.L1863: bl toshiba_set_rr_para -.L1803: +.L1864: add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,725] cmp w0, 34 - bne .L1804 + bne .L1865 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1216] + ldrb w0, [x0,1232] sub w0, w0, #3 cmp w20, w0 - bne .L1804 + bne .L1865 ldr x0, [x29,104] mov w1, 179 add x0, x22, x0 str w1, [x0,8] -.L1804: +.L1865: ldr x0, [x29,96] mov w1, 38 ldr w4, [x29,120] @@ -11175,24 +11621,24 @@ toshiba_read_retrial: bl flash_read_page cmn w0, #1 mov w28, w0 - beq .L1807 + beq .L1868 cmn w24, #1 csel w24, w24, w0, ne adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldr x26, [x0,1192] - ldr x27, [x0,1208] + ldr x26, [x0,1208] + ldr x27, [x0,1224] add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,724] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L1809 -.L1807: + bcc .L1870 +.L1868: add w20, w20, 1 - b .L1801 -.L1832: + b .L1862 +.L1893: mov w28, w24 -.L1809: +.L1870: add x0, x19, :lo12:.LANCHOR0 mov w1, 0 ldrb w0, [x0,725] @@ -11200,12 +11646,12 @@ toshiba_read_retrial: uxtb w0, w0 cmp w0, 1 mov x0, x21 - bhi .L1811 + bhi .L1872 bl sandisk_set_rr_para - b .L1812 -.L1811: + b .L1873 +.L1872: bl toshiba_set_rr_para -.L1812: +.L1873: ldr x0, [x29,112] add x19, x19, :lo12:.LANCHOR0 add x0, x0, 8 @@ -11215,29 +11661,29 @@ toshiba_read_retrial: ldrb w0, [x19,724] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 - bcc .L1813 + bcc .L1874 cmn w28, #1 mov w0, 256 csel w28, w28, w0, eq -.L1813: +.L1874: cmn w28, #1 - beq .L1819 + beq .L1880 cmp w28, 256 - bne .L1814 -.L1819: - adrp x0, .LC147 + bne .L1875 +.L1880: + adrp x0, .LC154 ldr w2, [x29,124] - add x0, x0, :lo12:.LC147 + add x0, x0, :lo12:.LC154 mov w1, w20 mov w3, w20 mov w4, w28 bl printk -.L1814: +.L1875: bl nandc_wait_flash_ready - cbz w25, .L1816 + cbz w25, .L1877 mov w0, 4 bl nandc_set_if_mode -.L1816: +.L1877: mov w0, w28 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11275,9 +11721,9 @@ hynix_read_retrial: bl nandc_wait_flash_ready mov w6, 0 adrp x7, .LANCHOR4 -.L1834: +.L1895: cmp w6, w24 - bcs .L1838 + bcs .L1899 add w20, w20, 1 mov w0, w22 str x7, [x29,104] @@ -11296,47 +11742,47 @@ hynix_read_retrial: cmn w0, #1 ldr x6, [x29,112] ldr x7, [x29,104] - beq .L1836 + beq .L1897 add x1, x7, :lo12:.LANCHOR4 cmn w19, #1 csel w19, w19, w0, ne - ldr x25, [x1,1192] - ldr x26, [x1,1208] + ldr x25, [x1,1208] + ldr x26, [x1,1224] add x1, x28, :lo12:.LANCHOR0 ldrb w1, [x1,724] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L1843 -.L1836: + bcc .L1904 +.L1897: add w6, w6, 1 - b .L1834 -.L1843: + b .L1895 +.L1904: mov w19, w0 -.L1838: +.L1899: add x28, x28, :lo12:.LANCHOR0 add x21, x27, x21 ldrb w0, [x28,724] strb w20, [x21,8] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L1840 + bcc .L1901 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L1840: +.L1901: cmn w19, #1 - beq .L1844 + beq .L1905 cmp w19, 256 - bne .L1841 -.L1844: - adrp x0, .LC148 + bne .L1902 +.L1905: + adrp x0, .LC155 mov w1, w6 - add x0, x0, :lo12:.LC148 + add x0, x0, :lo12:.LC155 mov w2, w23 mov w3, w6 mov w4, w19 bl printk -.L1841: +.L1902: bl nandc_wait_flash_ready mov w0, w19 ldp x19, x20, [sp,16] @@ -11366,16 +11812,16 @@ flash_ddr_tuning_read: bl nandc_get_ddr_para mov w27, 0 str w0, [x29,116] - adrp x0, .LC149 + adrp x0, .LC156 str w27, [x29,124] - add x0, x0, :lo12:.LC149 + add x0, x0, :lo12:.LC156 mov w25, w27 mov w28, w27 mov w19, 1024 mov w26, 6 mov w21, -1 str x0, [x29,104] -.L1859: +.L1920: mov w0, w26 bl nandc_set_ddr_para ldr w4, [x29,120] @@ -11387,7 +11833,7 @@ flash_ddr_tuning_read: mov w4, w0 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1854 + tbz x0, 4, .L1915 ldr x0, [x29,104] mov w3, w4 mov w1, w26 @@ -11395,73 +11841,73 @@ flash_ddr_tuning_read: str x4, [x29,96] bl printk ldr x4, [x29,96] -.L1854: +.L1915: add w0, w19, 1 cmp w4, w0 - bhi .L1855 + bhi .L1916 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldr x24, [x0,1192] - ldr x23, [x0,1208] + ldr x24, [x0,1208] + ldr x23, [x0,1224] adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 ldrb w0, [x0,724] cmp w4, w0, lsr 2 - bcs .L1865 + bcs .L1926 add w28, w28, 1 cmp w28, 7 - bls .L1865 + bls .L1926 sub w27, w26, w28 mov w19, w4 mov w21, 0 - b .L1857 -.L1855: + b .L1918 +.L1916: cmp w25, w28 - bcs .L1866 + bcs .L1927 sub w0, w27, w28 cmp w28, 7 str w0, [x29,124] - bhi .L1858 + bhi .L1919 mov w25, w28 - b .L1866 -.L1865: + b .L1927 +.L1926: mov w27, w26 mov w19, w4 mov w21, 0 - b .L1856 -.L1866: + b .L1917 +.L1927: mov w28, 0 -.L1856: +.L1917: add w26, w26, 2 cmp w26, 50 - bne .L1859 -.L1857: + bne .L1920 +.L1918: ldr w0, [x29,124] cmp w25, w28 csel w27, w27, w0, ls -.L1858: - cbz w27, .L1860 +.L1919: + cbz w27, .L1921 adrp x0, .LANCHOR0+724 mov w1, 3 ldrb w0, [x0,#:lo12:.LANCHOR0+724] udiv w0, w0, w1 cmp w19, w0 - bcs .L1860 - adrp x0, .LC150 + bcs .L1921 + adrp x0, .LC157 mov w1, w27 - add x0, x0, :lo12:.LC150 + add x0, x0, :lo12:.LC157 bl printk mov w0, w27 - b .L1875 -.L1860: + b .L1936 +.L1921: ldrb w0, [x29,116] -.L1875: +.L1936: bl nandc_set_ddr_para - cbz w21, .L1862 - adrp x0, .LC151 + cbz w21, .L1923 + adrp x0, .LC158 mov w2, w22 mov w1, w20 - add x0, x0, :lo12:.LC151 + add x0, x0, :lo12:.LC158 adrp x26, .LANCHOR0 bl printk add x27, x26, :lo12:.LANCHOR0 @@ -11483,33 +11929,33 @@ flash_ddr_tuning_read: mov w0, w20 bl flash_read_page mov w19, w0 - adrp x0, .LC152 + adrp x0, .LC159 mov w1, w20 - add x0, x0, :lo12:.LC152 + add x0, x0, :lo12:.LC159 mov w2, w22 mov w3, w19 bl printk ldrb w0, [x27,724] cmp w19, w0 - bhi .L1867 + bhi .L1928 adrp x1, .LANCHOR4 add x1, x1, :lo12:.LANCHOR4 - ldr w0, [x1,1220] + ldr w0, [x1,1236] add w0, w0, 1 - str w0, [x1,1220] + str w0, [x1,1236] cmp w0, 100 - bls .L1863 + bls .L1924 strb wzr, [x27,672] - b .L1862 -.L1867: + b .L1923 +.L1928: mov w19, w21 -.L1863: +.L1924: add x26, x26, :lo12:.LANCHOR0 ldrb w0, [x26,780] bl flash_set_interface_mode ldrb w0, [x26,780] bl nandc_set_if_mode -.L1862: +.L1923: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11538,57 +11984,57 @@ flash_read_page_en: ldrb w0, [x0,633] mov w22, w4 cmp w0, w25 - bhi .L1877 + bhi .L1938 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 386 + mov w2, 398 add x1, x1, 136 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1877: +.L1938: add x0, x20, :lo12:.LANCHOR0 add x1, x0, x25, sxtw ldrb w21, [x1,736] ldrb w1, [x0,633] cmp w1, w25 - bcs .L1878 + bcs .L1939 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L1904 - adrp x0, .LC153 + tbz x0, 6, .L1965 + adrp x0, .LC160 mov w1, w21 - add x0, x0, :lo12:.LC153 + add x0, x0, :lo12:.LC160 mov w2, w25 mov w3, w19 bl printk -.L1904: +.L1965: mov w0, -1 - b .L1903 -.L1878: + b .L1964 +.L1939: ubfx x1, x19, 24, 2 - cbnz w1, .L1881 + cbnz w1, .L1942 adrp x1, .LANCHOR0 ldrb w1, [x1,#:lo12:.LANCHOR0] - cbz w1, .L1882 + cbz w1, .L1943 ldrb w0, [x0,1] - cbz w0, .L1881 -.L1882: + cbz w0, .L1942 +.L1943: add x1, x20, :lo12:.LANCHOR0 ldrh w2, [x1,2] udiv w0, w19, w2 mul w0, w0, w2 ldrb w2, [x1,1] sub w19, w19, w0 - cbz w2, .L1883 + cbz w2, .L1944 add w19, w0, w19, lsl 1 - b .L1881 -.L1883: + b .L1942 +.L1944: add x1, x1, 4 ldrh w19, [x1,w19,uxtw 1] add w19, w19, w0 -.L1881: +.L1942: mov w0, w21 mov w1, w19 mov x2, x24 @@ -11596,16 +12042,16 @@ flash_read_page_en: mov w4, w22 bl flash_read_page cmn w0, #1 - bne .L1903 + bne .L1964 add x25, x20, :lo12:.LANCHOR0 ldrb w26, [x25,720] - cbnz w26, .L1885 -.L1888: - adrp x0, .LANCHOR4+1224 - ldr x5, [x0,#:lo12:.LANCHOR4+1224] - cbnz x5, .L1886 - b .L1887 -.L1885: + cbnz w26, .L1946 +.L1949: + adrp x0, .LANCHOR4+1240 + ldr x5, [x0,#:lo12:.LANCHOR4+1240] + cbnz x5, .L1947 + b .L1948 +.L1946: mov w0, w21 mov w1, w19 mov x2, x24 @@ -11615,9 +12061,9 @@ flash_read_page_en: bl flash_read_page strb w26, [x25,720] cmn w0, #1 - beq .L1888 - b .L1903 -.L1886: + beq .L1949 + b .L1964 +.L1947: mov w0, w21 mov w1, w19 mov x2, x24 @@ -11625,25 +12071,25 @@ flash_read_page_en: mov w4, w22 blr x5 cmn w0, #1 - bne .L1903 -.L1887: + bne .L1964 +.L1948: add x20, x20, :lo12:.LANCHOR0 - adrp x0, .LC154 - add x0, x0, :lo12:.LC154 + adrp x0, .LC161 + add x0, x0, :lo12:.LC161 mov w1, 0 mov w2, w19 mov w3, -1 ldrb w4, [x20,720] bl printk ldrb w0, [x20,672] - cbz w0, .L1904 + cbz w0, .L1965 mov w0, w21 mov w1, w19 mov x2, x24 mov x3, x23 mov w4, w22 bl flash_ddr_tuning_read -.L1903: +.L1964: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -11659,11 +12105,11 @@ flash_get_last_written_page: add x29, sp, 0 stp x23, x24, [sp,48] uxtb w23, w0 - adrp x0, .LANCHOR4+1092 + adrp x0, .LANCHOR4+1108 stp x19, x20, [sp,16] adrp x20, .LANCHOR2 mov x24, x2 - ldrh w19, [x0,#:lo12:.LANCHOR4+1092] + ldrh w19, [x0,#:lo12:.LANCHOR4+1108] add x0, x20, :lo12:.LANCHOR2 stp x21, x22, [sp,32] stp x25, x26, [sp,64] @@ -11680,12 +12126,12 @@ flash_get_last_written_page: add w1, w26, w19 bl flash_read_page_en cmp w0, 512 - bne .L1906 + bne .L1967 mov w28, 0 mov w5, 2 -.L1907: +.L1968: cmp w28, w19 - bgt .L1906 + bgt .L1967 add w0, w28, w19 mov x2, x24 mov x3, x21 @@ -11697,24 +12143,24 @@ flash_get_last_written_page: bl flash_read_page_en cmp w0, 512 ldr x5, [x29,104] - bne .L1908 + bne .L1969 sub w19, w20, #1 sxth w19, w19 - b .L1907 -.L1908: + b .L1968 +.L1969: add w20, w20, 1 sxth w28, w20 - b .L1907 -.L1906: + b .L1968 +.L1967: ldr w0, [x27,#:lo12:.LANCHOR2] - tbz x0, 12, .L1911 - adrp x0, .LC155 + tbz x0, 12, .L1972 + adrp x0, .LC162 ldr w3, [x21] - add x0, x0, :lo12:.LC155 + add x0, x0, :lo12:.LC162 mov w1, w22 mov w2, w19 bl printk -.L1911: +.L1972: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11729,12 +12175,12 @@ flash_get_last_written_page: .type flash_get_last_written_page_ext, %function flash_get_last_written_page_ext: uxth w6, w0 - adrp x0, .LANCHOR0+3340 + adrp x0, .LANCHOR0+3264 stp x29, x30, [sp, -16]! mov w5, 21 mov x8, x1 add x29, sp, 0 - ldrh w0, [x0,#:lo12:.LANCHOR0+3340] + ldrh w0, [x0,#:lo12:.LANCHOR0+3264] mov x7, x2 mov w4, w3 mov x2, x8 @@ -11750,163 +12196,6 @@ flash_get_last_written_page_ext: ret .size flash_get_last_written_page_ext, .-flash_get_last_written_page_ext .align 2 - .global flash_info_blk_init - .type flash_info_blk_init, %function -flash_info_blk_init: - adrp x0, .LANCHOR2 - stp x29, x30, [sp, -64]! - add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x20, .LANCHOR0 - tbz x0, 12, .L1917 - add x4, x20, :lo12:.LANCHOR0 - adrp x2, .LANCHOR3 - adrp x0, .LC156 - add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC156 - mov w1, 49 - ldr x4, [x4,728] - add x2, x2, 160 - mov w3, 2048 - bl printk -.L1917: - mov w22, 4 - adrp x24, .LANCHOR4 -.L1920: - add x19, x20, :lo12:.LANCHOR0 - add x21, x24, :lo12:.LANCHOR4 - mov w0, 0 - mov w4, 4 - adrp x23, .LANCHOR4 - ldrh w1, [x19,2] - ldr x2, [x19,728] - ldr x3, [x21,1232] - mul w1, w22, w1 - bl flash_read_page_en - cmn w0, #1 - beq .L1918 - ldr x2, [x19,728] - mov w0, 21321 - movk w0, 0x5359, lsl 16 - ldr w1, [x2] - cmp w1, w0 - beq .L1919 -.L1918: - add w22, w22, 1 - cmp w22, 16 - bne .L1920 -.L1944: - mov w0, -1 - b .L1943 -.L1919: - ldrb w1, [x2,36] - mov w4, 4 - ldrh w3, [x19,2] - strb w1, [x21,1240] - ldrb w0, [x2,37] - mul w1, w1, w3 - ldr x3, [x21,1232] - strb w0, [x21,1241] - mov w0, 0 - mov w21, 0 - bl flash_read_page_en - cmn w0, #1 - beq .L1922 - ldr x0, [x19,728] - mov w1, 21321 - movk w1, 0x5359, lsl 16 - mov w21, 0 - ldr w2, [x0] - cmp w2, w1 - bne .L1922 - ldr w21, [x0,4] -.L1922: - add x19, x23, :lo12:.LANCHOR4 - add x22, x20, :lo12:.LANCHOR0 - mov w0, 0 - mov w4, 4 - ldrb w2, [x19,1241] - ldrh w1, [x22,2] - ldr x3, [x19,1232] - mul w1, w2, w1 - ldr x2, [x22,728] - bl flash_read_page_en - cmn w0, #1 - beq .L1923 - ldr x0, [x22,728] - mov w1, 21321 - movk w1, 0x5359, lsl 16 - ldr w2, [x0] - cmp w2, w1 - bne .L1923 - ldr w1, [x0,4] - cmp w21, w1 - bcs .L1923 - ldrb w1, [x0,37] - ldrb w0, [x0,36] - strb w1, [x19,1240] - strb w0, [x19,1241] -.L1923: - add x21, x23, :lo12:.LANCHOR4 - add x22, x20, :lo12:.LANCHOR0 - mov w0, 0 - mov w4, 4 - ldrb w1, [x21,1240] - ldr x3, [x21,1232] - ldr x2, [x22,728] - bl flash_get_last_written_page - sxth w19, w0 - add w0, w0, 1 - strh w0, [x21,1242] - ldrb w0, [x21,1240] - ldrh w21, [x22,2] - mul w21, w0, w21 -.L1924: - tbnz w19, #31, .L1945 - add x22, x20, :lo12:.LANCHOR0 - add x3, x23, :lo12:.LANCHOR4 - mov w0, 0 - add w1, w19, w21 - mov w4, 4 - ldr x2, [x22,728] - ldr x3, [x3,1232] - bl flash_read_page_en - cmn w0, #1 - beq .L1925 - ldr x0, [x22,728] - ldr w1, [x0] - mov w0, 21321 - movk w0, 0x5359, lsl 16 - cmp w1, w0 - bne .L1925 -.L1927: - mov w0, 0 - b .L1943 -.L1925: - sub w19, w19, #1 - sxth w19, w19 - b .L1924 -.L1945: - cmn w19, #1 - bne .L1927 - add x20, x20, :lo12:.LANCHOR0 - adrp x0, .LC157 - add x0, x0, :lo12:.LC157 - ldr x1, [x20,728] - ldr w1, [x1] - bl printk - b .L1944 -.L1943: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 - ret - .size flash_info_blk_init, .-flash_info_blk_init - .align 2 .global flash_ddr_para_scan .type flash_ddr_para_scan, %function flash_ddr_para_scan: @@ -11940,20 +12229,20 @@ flash_ddr_para_scan: mov w4, 4 bl flash_read_page cmn w0, #1 - bne .L1947 + bne .L1978 ldrb w0, [x21,780] - tbz x0, 0, .L1947 + tbz x0, 0, .L1978 mov w0, 1 bl flash_set_interface_mode mov w0, w22 bl nandc_set_if_mode strb wzr, [x21,672] - b .L1948 -.L1947: + b .L1979 +.L1978: add x19, x19, :lo12:.LANCHOR0 mov w0, 1 strb w0, [x19,672] -.L1948: +.L1979: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -11962,34 +12251,36 @@ flash_ddr_para_scan: ret .size flash_ddr_para_scan, .-flash_ddr_para_scan .align 2 - .type id_block_read_data.constprop.31, %function -id_block_read_data.constprop.31: + .type id_block_read_data.constprop.30, %function +id_block_read_data.constprop.30: stp x29, x30, [sp, -240]! add x29, sp, 0 - stp x27, x28, [sp,80] - mov w27, w1 - adrp x1, .LANCHOR0 - stp x19, x20, [sp,16] - add x19, x1, :lo12:.LANCHOR0 - str x1, [x29,120] stp x25, x26, [sp,64] mov w26, w0 - ldr x0, [x19,624] + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 stp x21, x22, [sp,32] + stp x19, x20, [sp,16] stp x23, x24, [sp,48] + stp x27, x28, [sp,80] + add x0, x0, 8 + mov w27, w1 + ldrb w1, [x0,9] mov x21, x2 + str w1, [x29,164] mov w22, 0 - ldrb w2, [x0,9] + ldrh w0, [x0,26] mov w23, 4 - ldrh w0, [x0,10] mov w25, w22 - str w2, [x29,164] - mul w0, w2, w0 + mul w0, w1, w0 + adrp x1, .LANCHOR0 + str x1, [x29,120] + add x19, x1, :lo12:.LANCHOR0 + uxth w0, w0 ldrb w2, [x19,720] str w2, [x29,136] - uxth w0, w0 - strb wzr, [x19,720] udiv w2, w26, w0 + strb wzr, [x19,720] msub w0, w2, w0, w26 str w0, [x29,172] sub w0, w26, w0 @@ -11997,34 +12288,32 @@ id_block_read_data.constprop.31: ldr w0, [x29,172] and w0, w0, 3 str w0, [x29,168] - adrp x0, .LC158 - add x0, x0, :lo12:.LC158 + adrp x0, .LC163 + add x0, x0, :lo12:.LC163 str x0, [x29,112] -.L1953: +.L1984: cmp w22, w27 - bcs .L1990 + bcs .L2021 ldr w0, [x29,168] - adrp x1, .LANCHOR4 - add x1, x1, :lo12:.LANCHOR4 + ldrb w1, [x19,634] sub w0, w23, w0 uxth w0, w0 str w0, [x29,144] ldr w0, [x29,172] - ldrb w1, [x1,1264] add w20, w22, w0 add x0, x19, 4 udiv w20, w20, w23 and w20, w20, 65535 ldrh w0, [x0,w20,sxtw 1] - cbnz w1, .L1954 + cbnz w1, .L1985 mov w20, w0 - b .L1955 -.L1954: + b .L1986 +.L1985: ldrb w1, [x19,1] lsl w0, w20, 1 cmp w1, wzr csel w20, w0, w20, ne -.L1955: +.L1986: ldr w1, [x29,160] ldr w0, [x29,164] ldrb w28, [x19,632] @@ -12039,7 +12328,7 @@ id_block_read_data.constprop.31: str w0, [x29,132] mov w0, w28 bl nandc_bch_sel -.L1956: +.L1987: mov w0, 0 mov w1, w24 mov x2, x21 @@ -12048,16 +12337,16 @@ id_block_read_data.constprop.31: bl flash_read_page cmn w0, #1 mov w20, w0 - bne .L1963 + bne .L1994 ldrb w6, [x19,720] - cbnz w6, .L1958 -.L1961: + cbnz w6, .L1989 +.L1992: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldr x6, [x0,1224] - cbnz x6, .L1959 - b .L1960 -.L1958: + ldr x6, [x0,1240] + cbnz x6, .L1990 + b .L1991 +.L1989: mov w0, 0 mov w1, w24 mov x2, x21 @@ -12069,9 +12358,9 @@ id_block_read_data.constprop.31: cmn w0, #1 ldr x6, [x29,104] strb w6, [x19,720] - beq .L1961 - b .L1989 -.L1959: + beq .L1992 + b .L2020 +.L1990: mov w0, 0 mov w1, w24 mov x2, x21 @@ -12079,28 +12368,28 @@ id_block_read_data.constprop.31: mov w4, w23 blr x6 cmn w0, #1 - bne .L1989 -.L1960: + bne .L2020 +.L1991: ldrb w0, [x19,672] - cbz w0, .L1963 + cbz w0, .L1994 mov w0, 0 mov w1, w24 mov x2, x21 add x3, x29, 176 mov w4, w23 bl flash_ddr_tuning_read -.L1989: +.L2020: mov w20, w0 -.L1963: +.L1994: cmn w20, #1 - bne .L1964 + bne .L1995 cmp w28, 16 - beq .L1964 + beq .L1995 mov w0, 16 mov w28, 16 bl nandc_bch_sel - b .L1956 -.L1964: + b .L1987 +.L1995: ldr w0, [x29,132] bl nandc_bch_sel cmn w20, #1 @@ -12111,18 +12400,18 @@ id_block_read_data.constprop.31: cmp w0, w26 cset w0, eq tst w1, w0 - beq .L1966 - cbnz w25, .L1966 + beq .L1997 + cbnz w25, .L1997 ldr w1, [x21] mov w0, 18766 movk w0, 0x464e, lsl 16 cmp w1, w0 - bne .L1966 + bne .L1997 ldr w0, [x29,144] ldrb w23, [x21,17] add w27, w27, w0 - b .L1967 -.L1966: + b .L1998 +.L1997: ldr x0, [x29,144] mov w2, w22 ldr w1, [x29,140] @@ -12133,12 +12422,12 @@ id_block_read_data.constprop.31: ldr x0, [x29,112] bl printk str wzr, [x29,168] -.L1967: +.L1998: ldr w0, [x29,144] add w22, w0, w22 uxth w22, w22 - b .L1953 -.L1990: + b .L1984 +.L2021: ldr x0, [x29,120] ldrb w1, [x29,136] add x0, x0, :lo12:.LANCHOR0 @@ -12151,7 +12440,7 @@ id_block_read_data.constprop.31: ldp x27, x28, [sp,80] ldp x29, x30, [sp], 240 ret - .size id_block_read_data.constprop.31, .-id_block_read_data.constprop.31 + .size id_block_read_data.constprop.30, .-id_block_read_data.constprop.30 .align 2 .global flash_complete_plane_page_read .type flash_complete_plane_page_read, %function @@ -12171,27 +12460,27 @@ flash_complete_plane_page_read: mov x23, x2 ldrb w0, [x0,633] cmp w0, w22 - bhi .L1992 + bhi .L2023 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 795 - add x1, x1, 184 + mov w2, 886 + add x1, x1, 160 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1992: +.L2023: add x0, x21, :lo12:.LANCHOR0 add x22, x0, x22, sxtw ldrb w22, [x22,736] ldr x25, [x0,536] mov w0, w22 bl nandc_cs - cbnz w20, .L1993 + cbnz w20, .L2024 mov w0, w19 bl slc_phy_page_address_calc mov w19, w0 -.L1993: +.L2024: add x3, x21, :lo12:.LANCHOR0 uxtb x5, w22 and w2, w19, 255 @@ -12199,26 +12488,26 @@ flash_complete_plane_page_read: ldrb w0, [x3,656] cmp w0, 1 lsr w0, w19, 16 - bne .L1994 + bne .L2025 add x5, x25, x5, lsl 8 mov w3, 6 - b .L2007 -.L1994: + b .L2038 +.L2025: ldr x3, [x3,624] add x5, x25, x5, lsl 8 ldrb w3, [x3,12] cmp w3, 3 - bne .L1996 + bne .L2027 mov w3, 5 -.L2007: +.L2038: str w3, [x5,2056] str wzr, [x5,2052] str wzr, [x5,2052] str w2, [x5,2052] str w1, [x5,2052] str w0, [x5,2052] - b .L2005 -.L1996: + b .L2036 +.L2027: str wzr, [x5,2056] str wzr, [x5,2052] str wzr, [x5,2052] @@ -12229,22 +12518,22 @@ flash_complete_plane_page_read: str w0, [x5,2056] str wzr, [x5,2052] str wzr, [x5,2052] -.L2005: +.L2036: mov w0, 224 str w0, [x5,2056] - cbz w20, .L1997 + cbz w20, .L2028 add x21, x21, :lo12:.LANCHOR0 ldr x0, [x21,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L1997 + bne .L2028 sub w20, w20, #1 add w0, w19, w19, lsl 1 add w0, w20, w0 - b .L2006 -.L1997: + b .L2037 +.L2028: mov w0, w19 -.L2006: +.L2037: bl nandc_set_seed adrp x2, .LANCHOR2+17 mov x3, x24 @@ -12285,27 +12574,27 @@ flash_complete_page_read: mov x26, x2 ubfx x22, x24, 24, 2 cmp w0, w21 - bhi .L2009 + bhi .L2040 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 917 - add x1, x1, 216 + mov w2, 1008 + add x1, x1, 192 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2009: +.L2040: add x0, x19, :lo12:.LANCHOR0 add x21, x0, x21, sxtw ldrb w23, [x21,736] ldr x21, [x0,536] mov w0, w23 bl nandc_cs - cbnz w22, .L2010 + cbnz w22, .L2041 mov w0, w20 bl slc_phy_page_address_calc mov w20, w0 -.L2010: +.L2041: ubfiz x0, x23, 8, 8 add x5, x21, x0 mov w0, 5 @@ -12320,19 +12609,19 @@ flash_complete_page_read: str w0, [x5,2052] mov w0, 224 str w0, [x5,2056] - cbz w22, .L2011 + cbz w22, .L2042 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,624] ldrb w0, [x0,12] cmp w0, 3 - bne .L2011 + bne .L2042 sub w0, w22, #1 add w1, w20, w20, lsl 1 add w0, w0, w1 - b .L2043 -.L2011: + b .L2074 +.L2042: mov w0, w20 -.L2043: +.L2074: adrp x21, .LANCHOR2 bl nandc_set_seed add x27, x21, :lo12:.LANCHOR2 @@ -12344,10 +12633,10 @@ flash_complete_page_read: ldrb w2, [x27,9] bl nandc_xfer cmn w0, #1 - bne .L2013 + bne .L2044 add x28, x19, :lo12:.LANCHOR0 ldrb w5, [x28,720] - cbz w5, .L2014 + cbz w5, .L2045 ldrb w4, [x27,9] mov w0, w23 orr w1, w20, w22, lsl 24 @@ -12358,44 +12647,44 @@ flash_complete_page_read: bl flash_read_page ldr x5, [x29,104] strb w5, [x28,720] - cbnz w22, .L2015 -.L2022: + cbnz w22, .L2046 +.L2053: ldrb w2, [x19,#:lo12:.LANCHOR0] add x1, x19, :lo12:.LANCHOR0 - cbz w2, .L2015 + cbz w2, .L2046 ldrb w1, [x1,724] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - blt .L2015 + blt .L2046 add x21, x21, :lo12:.LANCHOR2 ldrb w1, [x21,27] sub w1, w1, #4 uxtb w1, w1 - cmp w1, 3 + cmp w1, 4 mov w1, 256 csel w0, w0, w1, hi - b .L2030 -.L2015: + b .L2061 +.L2046: cmn w0, #1 - bne .L2030 -.L2023: - adrp x0, .LANCHOR4+1224 - ldr x5, [x0,#:lo12:.LANCHOR4+1224] - cbnz x5, .L2018 -.L2021: + bne .L2061 +.L2054: + adrp x0, .LANCHOR4+1240 + ldr x5, [x0,#:lo12:.LANCHOR4+1240] + cbnz x5, .L2049 +.L2052: add x19, x19, :lo12:.LANCHOR0 - adrp x0, .LC159 - add x0, x0, :lo12:.LC159 + adrp x0, .LC164 + add x0, x0, :lo12:.LC164 mov w1, 0 mov w2, w24 mov w3, -1 ldrb w4, [x19,720] bl printk ldrb w0, [x19,672] - cbnz w0, .L2019 + cbnz w0, .L2050 mov w0, -1 - b .L2030 -.L2018: + b .L2061 +.L2049: add x4, x21, :lo12:.LANCHOR2 mov w0, w23 orr w1, w20, w22, lsl 24 @@ -12404,9 +12693,9 @@ flash_complete_page_read: ldrb w4, [x4,17] blr x5 cmn w0, #1 - bne .L2030 - b .L2021 -.L2019: + bne .L2061 + b .L2052 +.L2050: add x21, x21, :lo12:.LANCHOR2 mov w0, w23 orr w1, w20, w22, lsl 24 @@ -12414,14 +12703,14 @@ flash_complete_page_read: mov x3, x26 ldrb w4, [x21,17] bl flash_ddr_tuning_read - b .L2030 -.L2013: - cbz w22, .L2022 - b .L2030 -.L2014: - cbz w22, .L2022 - b .L2023 -.L2030: + b .L2061 +.L2044: + cbz w22, .L2053 + b .L2061 +.L2045: + cbz w22, .L2053 + b .L2054 +.L2061: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -12442,375 +12731,456 @@ queue_wait_first_req_completed: stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - ldrb w21, [x0,2835] - cmp w21, 255 - beq .L2128 + ldrb w22, [x0,2835] + cmp w22, 255 + beq .L2169 add x0, x0, 784 - mov w1, 0 - add x0, x0, x21, lsl 6 + mov w20, 0 + add x0, x0, x22, lsl 6 ldrb w2, [x0,58] - ldr w20, [x0,40] - sub w3, w2, #1 - cmp w3, 9 - bhi .L2046 - adrp x0, .L2048 - add x0, x0, :lo12:.L2048 - ldrh w0, [x0,w3,uxtw #1] - adr x1, .Lrtx2048 + ldr w24, [x0,40] + sub w0, w2, #1 + cmp w0, 10 + bhi .L2077 + adrp x1, .L2079 + add x1, x1, :lo12:.L2079 + ldrh w0, [x1,w0,uxtw #1] + adr x1, .Lrtx2079 add x0, x1, w0, sxth #2 br x0 -.Lrtx2048: +.Lrtx2079: .section .rodata .align 0 .align 2 -.L2048: - .2byte (.L2047 - .Lrtx2048) / 4 - .2byte (.L2049 - .Lrtx2048) / 4 - .2byte (.L2050 - .Lrtx2048) / 4 - .2byte (.L2050 - .Lrtx2048) / 4 - .2byte (.L2050 - .Lrtx2048) / 4 - .2byte (.L2051 - .Lrtx2048) / 4 - .2byte (.L2052 - .Lrtx2048) / 4 - .2byte (.L2053 - .Lrtx2048) / 4 - .2byte (.L2050 - .Lrtx2048) / 4 - .2byte (.L2053 - .Lrtx2048) / 4 +.L2079: + .2byte (.L2078 - .Lrtx2079) / 4 + .2byte (.L2080 - .Lrtx2079) / 4 + .2byte (.L2081 - .Lrtx2079) / 4 + .2byte (.L2081 - .Lrtx2079) / 4 + .2byte (.L2081 - .Lrtx2079) / 4 + .2byte (.L2081 - .Lrtx2079) / 4 + .2byte (.L2082 - .Lrtx2079) / 4 + .2byte (.L2083 - .Lrtx2079) / 4 + .2byte (.L2084 - .Lrtx2079) / 4 + .2byte (.L2081 - .Lrtx2079) / 4 + .2byte (.L2084 - .Lrtx2079) / 4 .text -.L2047: - mov w0, w20 +.L2078: + mov w0, w24 mov w1, 64 bl flash_wait_device_ready - tbz x0, 6, .L2128 + tbz x0, 6, .L2169 add x3, x19, :lo12:.LANCHOR0 - add x0, x3, 784 - add x0, x0, x21, lsl 6 - ldr x2, [x0,16] - ldr x1, [x0,8] - cbz x2, .L2055 - ldrb w4, [x0,56] - ldrb w0, [x3,2832] - cmp w4, w0 - csel x1, x1, x2, ne -.L2055: + add x2, x3, 784 + add x2, x2, x22, lsl 6 + ldr x0, [x2,16] + ldr x1, [x2,8] + cbz x0, .L2086 + ldrb w4, [x2,56] + ldrb w2, [x3,2832] + cmp w4, w2 + csel x1, x1, x0, ne +.L2086: add x19, x19, :lo12:.LANCHOR0 - mov w0, w20 + mov w0, w24 add x19, x19, 784 - add x19, x19, x21, lsl 6 + add x19, x19, x22, lsl 6 ldr x2, [x19,24] bl flash_complete_page_read str w0, [x19,52] - mov w0, 12 + mov w0, 13 strb w0, [x19,58] - ldrb w0, [x19,2] - orr w0, w0, 8 - strb w0, [x19,2] - b .L2128 -.L2049: - mov w0, w20 + b .L2170 +.L2080: mov w1, 64 + mov w0, w24 bl flash_wait_device_ready - add x2, x19, :lo12:.LANCHOR0 - lsl x4, x21, 6 - add x3, x2, 784 - add x1, x3, x4 - ldrb w20, [x3,x4] - tbz x0, 6, .L2128 + add x1, x19, :lo12:.LANCHOR0 + lsl x2, x22, 6 + add x3, x1, 784 + add x4, x3, x2 + ldrb w20, [x3,x2] + tbz x0, 6, .L2169 add x3, x3, x20, lsl 6 - ldr x0, [x1,16] - ldr x27, [x1,8] - ldr x23, [x3,8] - cbz x0, .L2056 - ldrb w3, [x1,56] - ldrb w1, [x2,2832] - cmp w3, w1 + ldr x0, [x4,16] + ldr x27, [x4,8] + ldr x24, [x3,8] + cbz x0, .L2087 + ldrb w2, [x4,56] + ldrb w1, [x1,2832] + cmp w2, w1 csel x27, x27, x0, ne -.L2056: +.L2087: add x2, x19, :lo12:.LANCHOR0 add x0, x2, 784 add x0, x0, x20, lsl 6 ldr x1, [x0,16] - cbz x1, .L2057 + cbz x1, .L2088 ldrb w3, [x0,56] ldrb w0, [x2,2832] cmp w3, w0 - csel x23, x23, x1, ne -.L2057: - add x24, x19, :lo12:.LANCHOR0 + csel x24, x24, x1, ne +.L2088: + add x21, x19, :lo12:.LANCHOR0 mov x1, x27 - add x24, x24, 784 - add x26, x24, x21, lsl 6 - add x24, x24, x20, lsl 6 + add x21, x21, 784 + add x26, x21, x22, lsl 6 + add x21, x21, x20, lsl 6 add x28, x26, 32 add x26, x26, 16 ldr x2, [x26,8] ldr w0, [x26,24] bl flash_complete_plane_page_read - mov w22, w0 - ldr x2, [x24,24] - mov x1, x23 - ldr w0, [x24,40] + mov w23, w0 + ldr x2, [x21,24] + mov x1, x24 + ldr w0, [x21,40] bl flash_complete_plane_page_read mov w25, w0 - cmn w22, #1 - beq .L2058 + cmn w23, #1 + beq .L2089 ldr w0, [x28,4] cmn w0, #1 - beq .L2059 + beq .L2090 ldr x1, [x26,8] ldr w1, [x1,4] cmp w0, w1 - beq .L2059 -.L2058: + beq .L2090 +.L2089: add x4, x19, :lo12:.LANCHOR0 mov x2, x27 - add x24, x4, 784 - add x24, x24, x21, lsl 6 - ldrb w4, [x4,2832] - add x26, x24, 32 - add x24, x24, 16 - ldr w1, [x24,24] - ldr x3, [x24,8] - ubfx x0, x1, 21, 3 - and w1, w1, -14680065 - bl flash_read_page_en - mov w22, w0 - ldr w2, [x26,4] - cmn w2, #1 - beq .L2060 - ldr x3, [x24,8] - ldr w4, [x3,4] - cmp w2, w4 - beq .L2060 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L2060 - adrp x0, .LC160 - ldr w1, [x26,8] - ldr w3, [x3] - add x0, x0, :lo12:.LC160 - bl printk -.L2060: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 784 - add x0, x0, x21, lsl 6 - ldr w1, [x0,36] - cmn w1, #1 - beq .L2059 - ldr x0, [x0,24] - ldr w0, [x0,4] - cmp w1, w0 - beq .L2059 - adrp x1, .LANCHOR3 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR3 - mov w2, 338 - add x1, x1, 248 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L2059: - add x3, x19, :lo12:.LANCHOR0 - mov w1, 12 - add x3, x3, 784 - cmn w25, #1 - add x21, x3, x21, lsl 6 - ldrb w0, [x21,2] - str w22, [x21,52] - orr w0, w0, 8 - strb w1, [x21,58] - strb w0, [x21,2] - beq .L2061 - add x3, x3, x20, lsl 6 - ldr w0, [x3,36] - cmn w0, #1 - beq .L2063 - ldr x1, [x3,24] - ldr w1, [x1,4] - cmp w0, w1 - beq .L2063 -.L2061: - add x4, x19, :lo12:.LANCHOR0 - mov x2, x23 add x21, x4, 784 - add x21, x21, x20, lsl 6 + add x21, x21, x22, lsl 6 ldrb w4, [x4,2832] - add x24, x21, 32 + add x26, x21, 32 add x21, x21, 16 ldr w1, [x21,24] ldr x3, [x21,8] ubfx x0, x1, 21, 3 and w1, w1, -14680065 bl flash_read_page_en - ldr w2, [x24,4] + mov w23, w0 + ldr w2, [x26,4] cmn w2, #1 - beq .L2065 + beq .L2091 ldr x3, [x21,8] ldr w4, [x3,4] cmp w2, w4 - beq .L2065 + beq .L2091 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L2065 - adrp x0, .LC160 - ldr w1, [x24,8] + tbz x0, 6, .L2091 + adrp x0, .LC165 + ldr w1, [x26,8] ldr w3, [x3] - add x0, x0, :lo12:.LC160 + add x0, x0, :lo12:.LC165 bl printk -.L2065: +.L2091: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 784 + add x0, x0, x22, lsl 6 + ldr w1, [x0,36] + cmn w1, #1 + beq .L2090 + ldr x0, [x0,24] + ldr w0, [x0,4] + cmp w1, w0 + beq .L2090 + adrp x1, .LANCHOR3 + adrp x0, .LC0 + add x1, x1, :lo12:.LANCHOR3 + mov w2, 360 + add x1, x1, 224 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2090: + add x3, x19, :lo12:.LANCHOR0 + mov w1, 13 + add x3, x3, 784 + cmn w25, #1 + add x22, x3, x22, lsl 6 + ldrb w0, [x22,2] + str w23, [x22,52] + orr w0, w0, 8 + strb w1, [x22,58] + strb w0, [x22,2] + beq .L2092 + add x3, x3, x20, lsl 6 + ldr w0, [x3,36] + cmn w0, #1 + beq .L2094 + ldr x1, [x3,24] + ldr w1, [x1,4] + cmp w0, w1 + beq .L2094 +.L2092: + add x4, x19, :lo12:.LANCHOR0 + mov x2, x24 + add x21, x4, 784 + add x21, x21, x20, lsl 6 + ldrb w4, [x4,2832] + add x22, x21, 32 + add x21, x21, 16 + ldr w1, [x21,24] + ldr x3, [x21,8] + ubfx x0, x1, 21, 3 + and w1, w1, -14680065 + bl flash_read_page_en + ldr w2, [x22,4] + cmn w2, #1 + beq .L2096 + ldr x3, [x21,8] + ldr w4, [x3,4] + cmp w2, w4 + beq .L2096 + adrp x0, .LANCHOR2 + ldr w0, [x0,#:lo12:.LANCHOR2] + tbz x0, 6, .L2096 + adrp x0, .LC165 + ldr w1, [x22,8] + ldr w3, [x3] + add x0, x0, :lo12:.LC165 + bl printk +.L2096: add x0, x19, :lo12:.LANCHOR0 add x0, x0, 784 add x0, x0, x20, lsl 6 ldr w1, [x0,36] cmn w1, #1 - beq .L2063 + beq .L2094 ldr x0, [x0,24] ldr w0, [x0,4] cmp w1, w0 - beq .L2063 + beq .L2094 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 353 - add x1, x1, 248 + mov w2, 375 + add x1, x1, 224 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2063: +.L2094: add x19, x19, :lo12:.LANCHOR0 - mov w1, 12 + mov w1, 13 add x19, x19, 784 - add x20, x19, x20, lsl 6 - ldrb w0, [x20,2] - str w22, [x20,52] + add x19, x19, x20, lsl 6 + str w23, [x19,52] + strb w1, [x19,58] +.L2170: + ldrb w0, [x19,2] orr w0, w0, 8 - strb w1, [x20,58] - strb w0, [x20,2] - b .L2128 -.L2050: + strb w0, [x19,2] + b .L2169 +.L2081: bl nandc_iqr_wait_flash_ready - mov w0, w20 + mov w0, w24 mov w1, 64 bl flash_wait_device_ready - mov w20, w0 - tbz x20, 6, .L2128 - mov w1, 5 + mov w21, w0 + tbz x21, 6, .L2169 + mov w20, 5 + ands w20, w21, w20 + beq .L2097 add x19, x19, :lo12:.LANCHOR0 - ands w1, w20, w1 - beq .L2066 + mov w0, 12 add x19, x19, 784 - mov w0, 11 - add x19, x19, x21, lsl 6 - mov w2, w20 - mov w4, 11 + mov w2, w21 + add x19, x19, x22, lsl 6 + mov w4, 12 + mov w20, w21 strb w0, [x19,58] - adrp x0, .LC161 + adrp x0, .LC166 ldrb w1, [x19,1] - add x0, x0, :lo12:.LC161 + add x0, x0, :lo12:.LC166 ldr w3, [x19,40] bl printk mov w0, -1 str w0, [x19,52] - b .L2129 -.L2066: - add x19, x19, x21, lsl 6 - b .L2073 -.L2053: - add x22, x19, :lo12:.LANCHOR0 - mov w0, 3 - cmp w2, 10 - mov w1, 9 - add x22, x22, 784 - csel w1, w0, w1, ne - ubfx x3, x20, 21, 3 - add x0, x22, x21, lsl 6 -.L2068: - ldrb w23, [x0] - cmp w23, 255 - beq .L2130 - add x0, x22, x23, lsl 6 - ldrb w2, [x0,58] + b .L2077 +.L2097: + add x4, x19, :lo12:.LANCHOR0 + mov w1, 13 + add x23, x4, 784 + add x23, x23, x22, lsl 6 + strb w1, [x23,58] + ldr x1, [x4,2864] + str w20, [x23,52] + ldr w2, [x1,156] + mov w1, 20041 + movk w1, 0x444b, lsl 16 cmp w2, w1 - bne .L2068 - ldr w2, [x0,40] - ubfx x2, x2, 21, 3 + bne .L2169 + ldrh w0, [x23,50] + cbnz w0, .L2169 + adrp x21, .LANCHOR4 + ldr w1, [x23,40] + add x21, x21, :lo12:.LANCHOR4 + ldrb w4, [x4,2832] + ubfx x0, x1, 21, 3 + and w1, w1, -14680065 + ldr x3, [x21,1256] + ldr x2, [x21,1248] + bl flash_read_page_en + cmn w0, #1 + mov w3, w0 + beq .L2098 + ldr x1, [x23,24] + ldr x0, [x21,1256] + ldr w1, [x1] + ldr w0, [x0] + cmp w1, w0 + beq .L2169 +.L2098: + add x4, x19, :lo12:.LANCHOR0 + adrp x0, .LC167 + add x19, x4, 784 + add x0, x0, :lo12:.LC167 + add x19, x19, x22, lsl 6 + ldrb w4, [x4,720] + ldrb w1, [x19,1] + ldr w2, [x19,40] + bl printk + mov w0, -1 + str w0, [x19,52] + b .L2077 +.L2084: + add x3, x19, :lo12:.LANCHOR0 + cmp w2, 11 + mov w1, 3 + mov w2, 10 + add x21, x3, 784 + csel w2, w1, w2, ne + ubfx x0, x24, 21, 3 + add x1, x21, x22, lsl 6 + mov x25, x3 +.L2100: + ldrb w1, [x1] + cmp w1, 255 + beq .L2171 + sxtw x23, w1 + add x1, x21, x23, lsl 6 + ldrb w3, [x1,58] cmp w3, w2 - bne .L2068 + bne .L2100 + ldr w3, [x1,40] + ubfx x3, x3, 21, 3 + cmp w0, w3 + bne .L2100 bl nandc_iqr_wait_flash_ready - mov w0, w20 + mov w0, w24 mov w1, 64 bl flash_wait_device_ready mov w20, w0 - and w0, w0, 64 - tbz x20, 6, .L2076 - ands w0, w20, 15 - add x22, x22, x21, lsl 6 - beq .L2071 - adrp x0, .LC162 - ldrb w1, [x22,1] - ldr w3, [x22,40] - add x0, x0, :lo12:.LC162 + tbz x20, 6, .L2168 + ands w1, w20, 15 + beq .L2104 + add x21, x21, x22, lsl 6 + adrp x0, .LC168 + add x0, x0, :lo12:.LC168 mov w2, w20 - mov w4, 11 + mov w4, 12 + ldrb w1, [x21,1] + ldr w3, [x21,40] bl printk - mov w0, 11 - strb w0, [x22,58] + mov w0, 12 + strb w0, [x21,58] mov w0, -1 - str w0, [x22,52] -.L2070: - add x19, x19, :lo12:.LANCHOR0 - add x19, x19, 784 - add x21, x19, x21, lsl 6 - add x23, x19, x23, lsl 6 - ldrb w0, [x21,58] - strb w0, [x23,58] - ldr w0, [x21,52] - str w0, [x23,52] -.L2129: - mov w1, w20 - b .L2046 -.L2071: - mov w1, 12 - str w0, [x22,52] - strb w1, [x22,58] -.L2076: - mov w20, w0 - b .L2070 -.L2130: - mov w1, -1 - b .L2046 -.L2051: + str w0, [x21,52] + b .L2103 +.L2104: + add x20, x21, x22, lsl 6 + mov w2, 13 + str w1, [x20,52] + ldr x1, [x25,2864] + strb w2, [x20,58] + ldr w2, [x1,156] + mov w1, 20041 + movk w1, 0x444b, lsl 16 + cmp w2, w1 + bne .L2168 + ldrh w0, [x20,50] + cbnz w0, .L2168 + adrp x21, .LANCHOR4 + ldr w1, [x20,40] + add x21, x21, :lo12:.LANCHOR4 + ldrb w4, [x25,2832] + ubfx x0, x1, 21, 3 + and w1, w1, -14680065 + ldr x3, [x21,1256] + ldr x2, [x21,1248] + bl flash_read_page_en + cmn w0, #1 + mov w3, w0 + beq .L2106 + ldr x1, [x20,24] + ldr x0, [x21,1256] + ldr w1, [x1] + ldr w0, [x0] + cmp w1, w0 + beq .L2168 +.L2106: + add x4, x19, :lo12:.LANCHOR0 + adrp x0, .LC169 + add x20, x4, 784 + add x0, x0, :lo12:.LC169 + add x20, x20, x22, lsl 6 + ldrb w4, [x4,720] + ldrb w1, [x20,1] + ldr w2, [x20,40] + bl printk + mov w0, -1 + str w0, [x20,52] +.L2168: + mov w20, 0 +.L2103: + add x1, x19, :lo12:.LANCHOR0 + add x1, x1, 784 + add x19, x1, x22, lsl 6 + add x1, x1, x23, lsl 6 + ldrb w0, [x19,58] + strb w0, [x1,58] + ldr w0, [x19,52] + str w0, [x1,52] + b .L2077 +.L2171: + mov w20, -1 + b .L2077 +.L2082: mov w1, 32 - mov w0, w20 + mov w0, w24 bl flash_wait_device_ready - tbz x0, 5, .L2128 - ands w1, w0, 15 + tbz x0, 5, .L2169 + ands w20, w0, 15 add x19, x19, :lo12:.LANCHOR0 - add x19, x19, x21, lsl 6 - beq .L2073 - mov w1, 11 + add x19, x19, x22, lsl 6 + beq .L2108 + mov w1, 12 + mov w20, w0 strb w1, [x19,842] mov w1, -1 str w1, [x19,836] - mov w1, w0 - b .L2046 -.L2073: - mov w0, 12 - str w1, [x19,836] + b .L2077 +.L2108: + mov w0, 13 + str w20, [x19,836] strb w0, [x19,842] - b .L2046 -.L2052: + b .L2077 +.L2083: mov w1, 64 - mov w0, w20 + mov w0, w24 bl flash_wait_device_ready - tbz x0, 6, .L2128 + tbz x0, 6, .L2169 add x19, x19, :lo12:.LANCHOR0 - add x19, x19, x21, lsl 6 + add x19, x19, x22, lsl 6 str w0, [x19,836] - mov w0, 6 + mov w0, 7 strb w0, [x19,842] -.L2128: - mov w1, 0 -.L2046: - mov w0, w1 +.L2169: + mov w20, 0 +.L2077: + mov w0, w20 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -12827,15 +13197,15 @@ sblk_wait_write_queue_completed: add x29, sp, 0 str x19, [sp,16] adrp x19, .LANCHOR0 -.L2132: +.L2173: add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2835] cmp w0, 255 - beq .L2134 + beq .L2175 bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2132 -.L2134: + b .L2173 +.L2175: ldr x19, [sp,16] ldp x29, x30, [sp], 32 ret @@ -12908,49 +13278,49 @@ sblk_read_page: mov x19, x0 mov w20, w21 add x27, x22, 784 - add x23, x23, 280 -.L2138: - cbz w20, .L2161 + add x23, x23, 256 +.L2179: + cbz w20, .L2202 ldrb w28, [x19] ldr w26, [x19,40] -.L2139: +.L2180: mov w0, w26 mov w1, 0 bl queue_lun_state - cbz w0, .L2162 + cbz w0, .L2203 bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2139 -.L2162: + b .L2180 +.L2203: cmp w20, 1 - beq .L2145 - adrp x0, .LANCHOR4+1265 - ldrb w0, [x0,#:lo12:.LANCHOR4+1265] - cbz w0, .L2145 + beq .L2186 + adrp x0, .LANCHOR4+1264 + ldrb w0, [x0,#:lo12:.LANCHOR4+1264] + cbz w0, .L2186 ldrb w0, [x19] ubfx x3, x26, 21, 3 cmp w0, 255 - bne .L2144 + bne .L2185 adrp x0, .LC0 mov x1, x23 - mov w2, 624 + mov w2, 661 add x0, x0, :lo12:.LC0 str x3, [x29,120] bl printk bl dump_stack ldr x3, [x29,120] -.L2144: +.L2185: ldrb w24, [x19] lsl x24, x24, 6 add x2, x27, x24 ldr w1, [x2,40] ubfx x0, x1, 21, 3 cmp w3, w0 - bne .L2145 - ldrh w0, [x22,3350] + bne .L2186 + ldrh w0, [x22,3362] add w26, w0, w26 cmp w1, w26 - bne .L2145 + bne .L2186 ldr w0, [x19,40] add x26, x22, 2835 str x2, [x29,104] @@ -12976,36 +13346,36 @@ sblk_read_page: strb wzr, [x2,59] strb w3, [x27,x24] bl buf_add_tail - b .L2143 -.L2145: + b .L2184 +.L2186: mov x0, x19 bl queue_read_cmd -.L2143: +.L2184: subs w20, w20, #1 - beq .L2161 + beq .L2202 sbfiz x19, x28, 6, 32 add x19, x27, x19 - b .L2138 -.L2161: + b .L2179 +.L2202: adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 add x19, x19, 784 -.L2149: - cbz w21, .L2163 +.L2190: + cbz w21, .L2204 ldrb w0, [x25,58] - cmp w0, 12 - bne .L2150 + cmp w0, 13 + bne .L2191 ldrb w0, [x25] sub w21, w21, #1 cmp w0, 255 - beq .L2150 + beq .L2191 sbfiz x25, x0, 6, 32 add x25, x19, x25 -.L2150: +.L2191: bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2149 -.L2163: + b .L2190 +.L2204: mov w0, w21 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13016,543 +13386,6 @@ sblk_read_page: ret .size sblk_read_page, .-sblk_read_page .align 2 - .global flash_prog_page - .type flash_prog_page, %function -flash_prog_page: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb x22, w0 - adrp x21, .LANCHOR2 - adrp x0, .LANCHOR0+536 - str x27, [sp,80] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - ldr x19, [x0,#:lo12:.LANCHOR0+536] - mov x20, x22 - ldr w0, [x21,#:lo12:.LANCHOR2] - add x22, x22, 8 - stp x25, x26, [sp,64] - mov w23, w1 - mov x25, x3 - mov x26, x2 - mov w3, w4 - add x22, x19, x22, lsl 8 - and w24, w1, 2097151 - ubfx x27, x23, 24, 2 - tbz x0, 4, .L2165 - adrp x0, .LC163 - mov w2, w27 - add x0, x0, :lo12:.LC163 - bl printk -.L2165: - bl nandc_wait_flash_ready - mov w0, w20 - bl hynix_reconfig_rr_para - mov w0, w20 - bl nandc_cs - mov w0, w20 - cbnz w27, .L2166 - bl zftl_flash_enter_slc_mode - b .L2167 -.L2166: - bl zftl_flash_exit_slc_mode -.L2167: - ubfiz x4, x20, 8, 8 - mov w0, 128 - add x19, x19, x4 - add x21, x21, :lo12:.LANCHOR2 - str w0, [x19,2056] - and w0, w23, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w0, [x19,2052] - lsr w0, w24, 8 - str w0, [x19,2052] - lsr w0, w24, 16 - str w0, [x19,2052] - mov w0, w24 - bl nandc_set_seed - ldrb w1, [x21,17] - mov x2, x26 - mov x3, x25 - mov w0, 1 - bl nandc_xfer_start - bl nandc_xfer_done - mov w0, 16 - str w0, [x19,2056] - bl nandc_iqr_wait_flash_ready - bl nandc_wait_flash_ready - mov x0, x22 - bl flash_read_status - mov w21, w0 - mov w0, w20 - and w19, w21, 4 - bl nandc_de_cs - tbz x21, 2, .L2168 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2168 - adrp x0, .LC164 - mov w1, w23 - add x0, x0, :lo12:.LC164 - mov w2, w19 - bl printk -.L2168: - mov w0, w19 - ldr x27, [sp,80] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 96 - ret - .size flash_prog_page, .-flash_prog_page - .align 2 - .global flash_test_blk - .type flash_test_blk, %function -flash_test_blk: - stp x29, x30, [sp, -48]! - mov w2, 32 - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR4 - uxth w20, w1 - add x19, x19, :lo12:.LANCHOR4 - mov w1, 165 - stp x21, x22, [sp,32] - uxtb w22, w0 - ldr x0, [x19,1192] - bl ftl_memset - ldr x0, [x19,1208] - mov w1, 90 - mov w2, 8 - bl ftl_memset - adrp x0, .LANCHOR0+2 - ldrh w0, [x0,#:lo12:.LANCHOR0+2] - mul w20, w20, w0 - mov w0, w22 - mov w1, w20 - bl flash_erase_block - cmn w0, #1 - bne .L2179 -.L2181: - mov w19, -1 - b .L2180 -.L2179: - adrp x21, .LANCHOR2 - ldr x2, [x19,1192] - add x21, x21, :lo12:.LANCHOR2 - ldr x3, [x19,1208] - mov w0, w22 - mov w1, w20 - add x21, x21, 8 - ldrb w4, [x21,9] - bl flash_prog_page - cmn w0, #1 - beq .L2181 - ldr x2, [x19,1192] - mov w0, w22 - ldr x3, [x19,1208] - mov w1, w20 - ldrb w4, [x21,9] - bl flash_read_page - cmn w0, #1 - beq .L2181 - ldr x0, [x19,1192] - ldr w1, [x0] - mov w0, 42405 - bfi w0, w0, 16, 16 - cmp w1, w0 - bne .L2181 - ldr x0, [x19,1208] - ldr w1, [x0] - mov w0, 23130 - bfi w0, w0, 16, 16 - cmp w1, w0 - csetm w19, ne -.L2180: - mov w1, w20 - mov w0, w22 - bl flash_erase_block - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret - .size flash_test_blk, .-flash_test_blk - .section .text.unlikely - .align 2 - .type fw_flash_page_prog.constprop.30, %function -fw_flash_page_prog.constprop.30: - stp x29, x30, [sp, -64]! - adrp x4, .LANCHOR0 - add x29, sp, 0 - add x4, x4, :lo12:.LANCHOR0 - str x21, [sp,32] - mov x21, x1 - stp x19, x20, [sp,16] - str x2, [x29,56] - ldr x1, [x4,624] - ldrb w20, [x4,724] - ldrb w19, [x1,9] - udiv w19, w0, w19 - ldrb w0, [x4,632] - bl nandc_bch_sel - ldr x3, [x29,56] - mov w1, w19 - mov x2, x21 - mov w4, 4 - mov w0, 0 - bl flash_prog_page - mov w19, w0 - mov w0, w20 - bl nandc_bch_sel - ldr x21, [sp,32] - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 - ret - .size fw_flash_page_prog.constprop.30, .-fw_flash_page_prog.constprop.30 - .text - .align 2 - .global flash_start_page_prog - .type flash_start_page_prog, %function -flash_start_page_prog: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR0 - stp x25, x26, [sp,64] - uxtb w25, w0 - add x0, x22, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - ubfx x24, x1, 21, 3 - mov x27, x2 - ldrb w0, [x0,633] - mov x26, x3 - and w20, w1, 2097151 - ubfx x23, x1, 24, 2 - cmp w0, w24 - bhi .L2190 - adrp x1, .LANCHOR3 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR3 - mov w2, 712 - add x1, x1, 296 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L2190: - add x28, x22, :lo12:.LANCHOR0 - add x0, x28, x24, sxtw - ldrb w21, [x0,736] - ldr x19, [x28,536] - bl nandc_rdy_status - cbnz w0, .L2191 - ldrb w0, [x28,633] - cmp w0, 1 - bne .L2192 - bl nandc_wait_flash_ready - b .L2191 -.L2192: - mov w0, w24 - mov w1, w20 - mov w2, 64 - bl flash_wait_device_ready_raw -.L2191: - mov w0, w21 - bl hynix_reconfig_rr_para - mov w0, w21 - bl nandc_cs - cbnz w23, .L2193 - mov w0, w20 - bl slc_phy_page_address_calc - mov w20, w0 - ldrb w0, [x22,#:lo12:.LANCHOR0] - cbz w0, .L2194 - mov w0, w21 - bl zftl_flash_enter_slc_mode - b .L2194 -.L2193: - mov w0, w21 - bl zftl_flash_exit_slc_mode -.L2194: - ubfiz x4, x21, 8, 8 - mov w0, 128 - add x19, x19, x4 - str w0, [x19,2056] - and w0, w20, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w0, [x19,2052] - lsr w0, w20, 8 - str w0, [x19,2052] - lsr w0, w20, 16 - str w0, [x19,2052] - mov w0, w20 - bl nandc_set_seed - adrp x1, .LANCHOR2+17 - mov x2, x27 - mov x3, x26 - mov w0, 1 - ldrb w1, [x1,#:lo12:.LANCHOR2+17] - bl nandc_xfer_start - bl nandc_xfer_done - str w25, [x19,2056] - mov w0, w21 - bl nandc_de_cs - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 96 - ret - .size flash_start_page_prog, .-flash_start_page_prog - .align 2 - .type queue_prog_cmd, %function -queue_prog_cmd: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - str x19, [sp,16] - mov x19, x0 - mov w0, 16 - ldr w1, [x19,40] - ldr x2, [x19,8] - ldr x3, [x19,24] - bl flash_start_page_prog - adrp x0, .LANCHOR0 - ldr w4, [x19,40] - add x1, x0, :lo12:.LANCHOR0 - ldrb w2, [x1,2835] - cmp w2, 255 - beq .L2199 - ubfx x4, x4, 21, 3 - add x1, x1, 784 -.L2201: - add x3, x1, x2, lsl 6 - ldr w5, [x3,40] - ubfx x5, x5, 21, 3 - cmp w4, w5 - bne .L2200 - ldrb w5, [x3,58] - add x3, x3, 48 - cmp w5, 6 - bne .L2200 - mov w1, 3 - strb w1, [x3,10] - b .L2199 -.L2200: - lsl x2, x2, 6 - ldrb w2, [x1,x2] - cmp w2, 255 - bne .L2201 -.L2199: - mov w1, 3 - strb w1, [x19,58] - mov w1, 1 - add x0, x0, :lo12:.LANCHOR0 - strb w1, [x19,59] - mov w1, -1 - add x0, x0, 2835 - strb w1, [x19] - mov x1, x19 - bl buf_add_tail - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 - ret - .size queue_prog_cmd, .-queue_prog_cmd - .align 2 - .global sblk_prog_page - .type sblk_prog_page, %function -sblk_prog_page: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov x19, x0 - uxtb w20, w1 - ldrh w0, [x0,50] - cbz w0, .L2207 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L2207 - adrp x0, .LC165 - ldr w1, [x19,40] - add x0, x0, :lo12:.LC165 - mov w2, w20 - bl printk -.L2207: - adrp x24, .LANCHOR0 - adrp x25, .LC0 - add x23, x24, :lo12:.LANCHOR0 - mov w21, 0 - add x27, x23, 784 - add x25, x25, :lo12:.LC0 -.L2208: - cbz w20, .L2238 - ldrb w26, [x19] - ldr w22, [x19,40] -.L2209: - mov w0, w22 - mov w1, 1 - bl queue_lun_state - cbz w0, .L2239 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2209 -.L2239: - cmp w20, 1 - beq .L2211 - add x0, x24, :lo12:.LANCHOR0 - ldrb w0, [x0,781] - cbnz w0, .L2212 -.L2211: - mov x0, x19 - bl queue_prog_cmd - b .L2213 -.L2212: - ldrb w0, [x19] - ubfx x28, x22, 21, 3 - cmp w0, 255 - bne .L2214 - adrp x1, .LANCHOR3 - mov w2, 546 - add x1, x1, :lo12:.LANCHOR3 - mov x0, x25 - add x1, x1, 320 - bl printk - bl dump_stack -.L2214: - ldrb w0, [x19] - add x0, x27, x0, lsl 6 - ldr w4, [x0,40] - ubfx x0, x4, 21, 3 - cmp w28, w0 - bne .L2215 - ldrh w3, [x23,3340] - mov w1, 21 - ldrb w6, [x23,3338] - mov w28, 1 - sub w1, w1, w3 - lsr w0, w22, w3 - sub w6, w6, #1 - lsl w1, w28, w1 - sub w1, w1, #1 - lsl w2, w28, w3 - uxth w7, w6 - sub w2, w2, #1 - and w5, w7, w0 - lsr w0, w4, w3 - uxth w1, w1 - and w3, w7, w0 - and w3, w1, w3 - and w0, w1, w5 - cmp w0, w3 - uxth w2, w2 - beq .L2215 - and w22, w2, w22 - and w2, w2, w4 - cmp w22, w2 - bne .L2215 - cmp w21, w6 - beq .L2215 - ldr w1, [x19,40] - mov w0, 17 - ldr x2, [x19,8] - add w21, w21, w28 - ldr x3, [x19,24] - bl flash_start_page_prog - strb w28, [x19,59] - mov w0, 8 - strb w0, [x19,58] - mov w0, -1 - mov x1, x19 - strb w0, [x19] - add x0, x23, 2835 - bl buf_add_tail - b .L2213 -.L2215: - mov x0, x19 - mov w21, 0 - bl queue_prog_cmd -.L2213: - subs w20, w20, #1 - beq .L2238 - add x19, x24, :lo12:.LANCHOR0 - sbfiz x26, x26, 6, 32 - add x19, x19, 784 - add x19, x19, x26 - b .L2208 -.L2238: - mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 96 - ret - .size sblk_prog_page, .-sblk_prog_page - .align 2 - .global ftl_flush - .type ftl_flush, %function -ftl_flush: - stp x29, x30, [sp, -32]! - adrp x2, .LANCHOR0 - add x29, sp, 0 - add x0, x2, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - mov x19, x2 - adrp x20, .LANCHOR4 - ldrb w1, [x0,2857] - cbz w1, .L2241 - add x2, x20, :lo12:.LANCHOR4 - add x0, x0, 784 - ldrb w2, [x2,1266] - add x0, x0, x2, lsl 6 - bl sblk_prog_page -.L2241: - add x2, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR4 - mov w0, -1 - strb wzr, [x2,2857] - strb w0, [x20,1266] - bl sblk_wait_write_queue_completed - bl ftl_write_completed - mov w0, -1 - bl ftl_vpn_decrement - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - ret - .size ftl_flush, .-ftl_flush - .align 2 - .global zftl_cache_flush - .type zftl_cache_flush, %function -zftl_cache_flush: - adrp x0, .LANCHOR0+2857 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldrb w0, [x0,#:lo12:.LANCHOR0+2857] - cbz w0, .L2245 - bl timer_get_time - adrp x1, .LANCHOR4+1268 - ldr w1, [x1,#:lo12:.LANCHOR4+1268] - add w1, w1, 100 - cmp w0, w1 - bls .L2245 - bl ftl_flush -.L2245: - ldp x29, x30, [sp], 16 - ret - .size zftl_cache_flush, .-zftl_cache_flush - .align 2 .global flash_start_tlc_page_prog .type flash_start_tlc_page_prog, %function flash_start_tlc_page_prog: @@ -13574,28 +13407,28 @@ flash_start_tlc_page_prog: mov x23, x6 cmp w0, w26 mov x19, x4 - bhi .L2250 + bhi .L2206 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 661 - add x1, x1, 336 + mov w2, 726 + add x1, x1, 272 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2250: +.L2206: add x4, x19, :lo12:.LANCHOR0 add x26, x4, x26, sxtw ldrb w26, [x26,736] mov w0, w26 ldr x19, [x4,536] bl nandc_cs - cbz w25, .L2251 + cbz w25, .L2207 sxtw x1, w26 add x1, x1, 8 add x1, x19, x1, lsl 8 str w25, [x1,8] -.L2251: +.L2207: ubfiz x7, x26, 8, 8 mov w0, 128 add x19, x19, x7 @@ -13701,16 +13534,16 @@ sblk_tlc_prog_one_page: mov x20, x0 ldr x0, [x0] ldr w21, [x0,40] -.L2257: +.L2213: mov w0, w21 mov w1, 1 bl queue_lun_state mov w19, w0 - cbz w0, .L2259 + cbz w0, .L2215 bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2257 -.L2259: + b .L2213 +.L2215: mov x0, x20 bl queue_tlc_prog_cmd ldr x21, [sp,32] @@ -13733,17 +13566,17 @@ sblk_xlc_prog_pages: ldr x0, [x0] mov w24, w2 ldr w20, [x0,40] -.L2261: +.L2217: mov w0, w20 mov w1, 1 bl queue_lun_state - cbz w0, .L2265 + cbz w0, .L2221 bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2261 -.L2265: + b .L2217 +.L2221: cmp w24, 2 - bne .L2263 + bne .L2219 ldr x6, [x19] mov w1, 1 ldr x0, [x22] @@ -13827,11 +13660,11 @@ sblk_xlc_prog_pages: add x0, x0, :lo12:.LANCHOR0 add x0, x0, 2835 bl buf_add_tail - b .L2264 -.L2263: + b .L2220 +.L2219: mov x0, x19 bl queue_tlc_prog_cmd -.L2264: +.L2220: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -13840,148 +13673,321 @@ sblk_xlc_prog_pages: ret .size sblk_xlc_prog_pages, .-sblk_xlc_prog_pages .align 2 - .global flash_prog_page_en - .type flash_prog_page_en, %function -flash_prog_page_en: - stp x29, x30, [sp, -96]! - adrp x6, .LANCHOR0 + .global sblk_3d_tlc_dump_prog + .type sblk_3d_tlc_dump_prog, %function +sblk_3d_tlc_dump_prog: + stp x29, x30, [sp, -48]! add x29, sp, 0 + stp x19, x20, [sp,16] + str x21, [sp,32] + mov x19, x0 + ldr w2, [x0,40] + adrp x0, .LC170 + add x0, x0, :lo12:.LC170 + and w20, w2, 2097151 + mov w3, w2 + mov w1, w20 + ubfx x21, x2, 21, 3 + bl printk + ldr x5, [x19,8] + mov w3, w21 + ldr x6, [x19,24] + mov w4, w20 + mov w1, 1 + mov w2, 26 + mov w0, 0 + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x5, [x19,8] + mov w3, w21 + ldr x6, [x19,24] + mov w4, w20 + mov w1, 2 + mov w2, 26 + mov w0, 0 + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x5, [x19,8] + mov w3, w21 + ldr x6, [x19,24] + mov w4, w20 + mov w2, 16 + mov w1, 3 + mov w0, 0 + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr w0, [x19,40] + mov w1, 64 + bl flash_wait_device_ready + ldr x21, [sp,32] + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 + ret + .size sblk_3d_tlc_dump_prog, .-sblk_3d_tlc_dump_prog + .align 2 + .global flash_start_3d_mlc_page_prog + .type flash_start_3d_mlc_page_prog, %function +flash_start_3d_mlc_page_prog: + stp x29, x30, [sp, -64]! + adrp x5, .LANCHOR0 + add x29, sp, 0 + stp x21, x22, [sp,32] + uxtb w22, w0 + add x0, x5, :lo12:.LANCHOR0 + stp x19, x20, [sp,16] stp x23, x24, [sp,48] - uxtb w23, w0 - add x0, x6, :lo12:.LANCHOR0 + uxtb w20, w1 + mov w21, w2 + ldrb w0, [x0,633] + mov x23, x3 + mov x24, x4 + mov x19, x5 + cmp w0, w20 + bhi .L2224 + adrp x1, .LANCHOR3 + adrp x0, .LC0 + add x1, x1, :lo12:.LANCHOR3 + mov w2, 756 + add x1, x1, 304 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2224: + add x5, x19, :lo12:.LANCHOR0 + add x20, x5, x20, sxtw + ldrb w20, [x20,736] + ldr x19, [x5,536] + mov w0, w20 + ubfiz x20, x20, 8, 8 + add x19, x19, x20 + bl nandc_cs + mov w0, 128 + str w0, [x19,2056] + and w0, w21, 255 + str wzr, [x19,2052] + str wzr, [x19,2052] + str w0, [x19,2052] + lsr w0, w21, 8 + str w0, [x19,2052] + lsr w0, w21, 16 + str w0, [x19,2052] + mov w0, w21 + bl nandc_set_seed + adrp x1, .LANCHOR2+17 + mov x2, x23 + mov x3, x24 + mov w0, 1 + ldrb w1, [x1,#:lo12:.LANCHOR2+17] + bl nandc_xfer_start + bl nandc_xfer_done + str w22, [x19,2056] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x29, x30, [sp], 64 + ret + .size flash_start_3d_mlc_page_prog, .-flash_start_3d_mlc_page_prog + .align 2 + .global sblk_3d_mlc_prog_pages + .type sblk_3d_mlc_prog_pages, %function +sblk_3d_mlc_prog_pages: + stp x29, x30, [sp, -48]! + add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w20, w1 - mov x22, x2 - ldrb w0, [x0,633] - mov x21, x3 - mov w24, w4 - uxtb w25, w5 - cmp w0, w23 - ubfx x28, x20, 24, 2 - mov x19, x6 - bhi .L2267 - adrp x1, .LANCHOR3 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR3 - mov w2, 484 - add x1, x1, 368 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L2267: - add x0, x19, :lo12:.LANCHOR0 - mov w26, w20 - add x1, x0, x23, sxtw - ldrb w27, [x1,736] - cbnz w28, .L2268 - adrp x1, .LANCHOR0 - ldrb w1, [x1,#:lo12:.LANCHOR0] - cbz w1, .L2269 - ldrb w0, [x0,1] - cbz w0, .L2268 -.L2269: - add x6, x19, :lo12:.LANCHOR0 - ldrh w26, [x6,2] - ldrb w1, [x6,1] - udiv w2, w20, w26 - mul w26, w2, w26 - sub w0, w20, w26 - cbz w1, .L2270 - add w26, w26, w0, lsl 1 - b .L2268 -.L2270: - add x6, x6, 4 - ldrh w0, [x6,w0,uxtw 1] - add w26, w0, w26 -.L2268: - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L2271 - adrp x0, .LC166 - mov w1, w27 - add x0, x0, :lo12:.LC166 - mov w2, w20 - bl printk -.L2271: - mov w1, w26 - mov w0, w27 - mov x2, x22 - mov x3, x21 - mov w4, w24 - bl flash_prog_page - mov w26, w0 - cbz w25, .L2272 - adrp x19, .LANCHOR4 - mov w0, w23 - add x25, x19, :lo12:.LANCHOR4 - mov w1, w20 - mov w4, w24 - ldr x2, [x25,1248] - ldr x3, [x25,1256] - bl flash_read_page_en - cmp w0, 512 - beq .L2273 - cmn w0, #1 - beq .L2273 - ldr x0, [x25,1248] - ldr w1, [x22] - ldr w0, [x0] - cmp w1, w0 - bne .L2273 - ldr x0, [x25,1256] - ldr w1, [x21] - ldr w0, [x0] - cmp w1, w0 - beq .L2272 -.L2273: - mov w2, 4 - adrp x0, .LC167 - mov x1, x22 - mov w3, w2 - add x0, x0, :lo12:.LC167 - add x19, x19, :lo12:.LANCHOR4 - bl rknand_print_hex - mov w2, 4 - adrp x0, .LC168 - mov x1, x21 - mov w3, w2 - add x0, x0, :lo12:.LC168 - bl rknand_print_hex - ldr x1, [x19,1256] - mov w2, 4 - adrp x0, .LC169 - mov w3, w2 - add x0, x0, :lo12:.LC169 - bl rknand_print_hex - mov w2, 4 - adrp x0, .LC170 - ldr x1, [x19,1248] - add x0, x0, :lo12:.LC170 - mov w3, w2 - bl rknand_print_hex - b .L2274 -.L2272: - cmn w26, #1 - mov w0, w26 - bne .L2275 -.L2274: - adrp x0, .LC171 - mov w1, w20 - add x0, x0, :lo12:.LC171 - bl printk - adrp x1, .LANCHOR3 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR3 - mov w2, 512 - add x1, x1, 368 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack + mov x20, x0 + ldr x0, [x0] + ldr w19, [x0,40] +.L2226: + mov w0, w19 + mov w1, 1 + bl queue_lun_state + mov w21, w0 + cbz w0, .L2228 + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2226 +.L2228: + ldr x0, [x20] + ldr w19, [x0,40] + and w22, w19, 2097151 + ubfx x19, x19, 21, 3 + mov w0, w19 + bl zftl_flash_exit_slc_mode + ldr x4, [x20] + mov w1, w19 + mov w2, w22 + mov w0, 16 + ldr x3, [x4,8] + ldr x4, [x4,24] + bl flash_start_3d_mlc_page_prog + bl nandc_wait_flash_ready + ldr x4, [x20,8] + mov w1, w19 + add w2, w22, 1 + mov w0, 16 + ldr x3, [x4,8] + ldr x4, [x4,24] + bl flash_start_3d_mlc_page_prog + mov w0, w19 + bl nandc_de_cs + ldr x1, [x20] + mov w0, 4 + adrp x2, .LANCHOR0 + strb w0, [x1,58] + mov w0, 1 + strb w0, [x1,59] mov w0, -1 -.L2275: + strb w0, [x1] + add x0, x2, :lo12:.LANCHOR0 + add x0, x0, 2835 + bl buf_add_tail + mov w0, w21 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 48 + ret + .size sblk_3d_mlc_prog_pages, .-sblk_3d_mlc_prog_pages + .align 2 + .global sblk_mlc_dump_prog + .type sblk_mlc_dump_prog, %function +sblk_mlc_dump_prog: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp,16] + str x21, [sp,32] + mov x20, x0 + ldr w19, [x0,40] + and w21, w19, 2097151 + ubfx x19, x19, 21, 3 + mov w0, w19 + bl zftl_flash_exit_slc_mode + ldr w2, [x20,40] + adrp x0, .LC171 + mov w1, w21 + add x0, x0, :lo12:.LC171 + add w3, w2, 1 + bl printk + ldr x3, [x20,8] + mov w1, w19 + ldr x4, [x20,24] + mov w2, w21 + mov w0, 16 + bl flash_start_3d_mlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x3, [x20,8] + add w2, w21, 1 + ldr x4, [x20,24] + mov w1, w19 + mov w0, 16 + bl flash_start_3d_mlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr w0, [x20,40] + mov w1, 64 + bl flash_wait_device_ready + mov w20, w0 + mov w0, w19 + bl nandc_de_cs + ldr x21, [sp,32] + mov w0, w20 + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 + ret + .size sblk_mlc_dump_prog, .-sblk_mlc_dump_prog + .align 2 + .global flash_start_page_prog + .type flash_start_page_prog, %function +flash_start_page_prog: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x21, x22, [sp,32] + adrp x22, .LANCHOR0 + stp x25, x26, [sp,64] + uxtb w25, w0 + add x0, x22, :lo12:.LANCHOR0 + stp x23, x24, [sp,48] + stp x19, x20, [sp,16] + stp x27, x28, [sp,80] + ubfx x24, x1, 21, 3 + mov x27, x2 + ldrb w0, [x0,633] + mov x26, x3 + and w20, w1, 2097151 + ubfx x23, x1, 24, 2 + cmp w0, w24 + bhi .L2231 + adrp x1, .LANCHOR3 + adrp x0, .LC0 + add x1, x1, :lo12:.LANCHOR3 + mov w2, 803 + add x1, x1, 336 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2231: + add x28, x22, :lo12:.LANCHOR0 + add x0, x28, x24, sxtw + ldrb w21, [x0,736] + ldr x19, [x28,536] + bl nandc_rdy_status + cbnz w0, .L2232 + ldrb w0, [x28,633] + cmp w0, 1 + bne .L2233 + bl nandc_wait_flash_ready + b .L2232 +.L2233: + mov w0, w24 + mov w1, w20 + mov w2, 64 + bl flash_wait_device_ready_raw +.L2232: + mov w0, w21 + bl hynix_reconfig_rr_para + mov w0, w21 + bl nandc_cs + cbnz w23, .L2234 + mov w0, w20 + bl slc_phy_page_address_calc + mov w20, w0 + ldrb w0, [x22,#:lo12:.LANCHOR0] + cbz w0, .L2235 + mov w0, w21 + bl zftl_flash_enter_slc_mode + b .L2235 +.L2234: + mov w0, w21 + bl zftl_flash_exit_slc_mode +.L2235: + ubfiz x4, x21, 8, 8 + mov w0, 128 + add x19, x19, x4 + str w0, [x19,2056] + and w0, w20, 255 + str wzr, [x19,2052] + str wzr, [x19,2052] + str w0, [x19,2052] + lsr w0, w20, 8 + str w0, [x19,2052] + lsr w0, w20, 16 + str w0, [x19,2052] + mov w0, w20 + bl nandc_set_seed + adrp x1, .LANCHOR2+17 + mov x2, x27 + mov x3, x26 + mov w0, 1 + ldrb w1, [x1,#:lo12:.LANCHOR2+17] + bl nandc_xfer_start + bl nandc_xfer_done + str w25, [x19,2056] + mov w0, w21 + bl nandc_de_cs ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -13989,6 +13995,752 @@ flash_prog_page_en: ldp x27, x28, [sp,80] ldp x29, x30, [sp], 96 ret + .size flash_start_page_prog, .-flash_start_page_prog + .align 2 + .type queue_prog_cmd, %function +queue_prog_cmd: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + str x19, [sp,16] + mov x19, x0 + mov w0, 16 + ldr w1, [x19,40] + ldr x2, [x19,8] + ldr x3, [x19,24] + bl flash_start_page_prog + adrp x0, .LANCHOR0 + ldr w4, [x19,40] + add x1, x0, :lo12:.LANCHOR0 + ldrb w2, [x1,2835] + cmp w2, 255 + beq .L2240 + ubfx x4, x4, 21, 3 + add x1, x1, 784 +.L2242: + add x3, x1, x2, lsl 6 + ldr w5, [x3,40] + ubfx x5, x5, 21, 3 + cmp w4, w5 + bne .L2241 + ldrb w5, [x3,58] + add x3, x3, 48 + cmp w5, 7 + bne .L2241 + mov w1, 3 + strb w1, [x3,10] + b .L2240 +.L2241: + lsl x2, x2, 6 + ldrb w2, [x1,x2] + cmp w2, 255 + bne .L2242 +.L2240: + mov w1, 3 + strb w1, [x19,58] + mov w1, 1 + add x0, x0, :lo12:.LANCHOR0 + strb w1, [x19,59] + mov w1, -1 + add x0, x0, 2835 + strb w1, [x19] + mov x1, x19 + bl buf_add_tail + ldr x19, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size queue_prog_cmd, .-queue_prog_cmd + .align 2 + .global sblk_prog_page + .type sblk_prog_page, %function +sblk_prog_page: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x19, x20, [sp,16] + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + stp x25, x26, [sp,64] + stp x27, x28, [sp,80] + mov x19, x0 + uxtb w20, w1 + ldrh w0, [x0,50] + cbz w0, .L2248 + adrp x0, .LANCHOR2 + ldr w0, [x0,#:lo12:.LANCHOR2] + tbz x0, 8, .L2248 + adrp x0, .LC172 + ldr w1, [x19,40] + add x0, x0, :lo12:.LC172 + mov w2, w20 + bl printk +.L2248: + adrp x24, .LANCHOR0 + adrp x25, .LC0 + add x23, x24, :lo12:.LANCHOR0 + mov w21, 0 + add x27, x23, 784 + add x25, x25, :lo12:.LC0 +.L2249: + cbz w20, .L2279 + ldrb w26, [x19] + ldr w22, [x19,40] +.L2250: + mov w0, w22 + mov w1, 1 + bl queue_lun_state + cbz w0, .L2280 + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2250 +.L2280: + cmp w20, 1 + beq .L2252 + add x0, x24, :lo12:.LANCHOR0 + ldrb w0, [x0,781] + cbnz w0, .L2253 +.L2252: + mov x0, x19 + bl queue_prog_cmd + b .L2254 +.L2253: + ldrb w0, [x19] + ubfx x28, x22, 21, 3 + cmp w0, 255 + bne .L2255 + adrp x1, .LANCHOR3 + mov w2, 583 + add x1, x1, :lo12:.LANCHOR3 + mov x0, x25 + add x1, x1, 360 + bl printk + bl dump_stack +.L2255: + ldrb w0, [x19] + add x0, x27, x0, lsl 6 + ldr w4, [x0,40] + ubfx x0, x4, 21, 3 + cmp w28, w0 + bne .L2256 + ldrh w3, [x23,3264] + mov w1, 21 + ldrb w6, [x23,3266] + mov w28, 1 + sub w1, w1, w3 + lsr w0, w22, w3 + sub w6, w6, #1 + lsl w1, w28, w1 + sub w1, w1, #1 + lsl w2, w28, w3 + uxth w7, w6 + sub w2, w2, #1 + and w5, w7, w0 + lsr w0, w4, w3 + uxth w1, w1 + and w3, w7, w0 + and w3, w1, w3 + and w0, w1, w5 + cmp w0, w3 + uxth w2, w2 + beq .L2256 + and w22, w2, w22 + and w2, w2, w4 + cmp w22, w2 + bne .L2256 + cmp w21, w6 + beq .L2256 + ldr w1, [x19,40] + mov w0, 17 + ldr x2, [x19,8] + add w21, w21, w28 + ldr x3, [x19,24] + bl flash_start_page_prog + strb w28, [x19,59] + mov w0, 9 + strb w0, [x19,58] + mov w0, -1 + mov x1, x19 + strb w0, [x19] + add x0, x23, 2835 + bl buf_add_tail + b .L2254 +.L2256: + mov x0, x19 + mov w21, 0 + bl queue_prog_cmd +.L2254: + subs w20, w20, #1 + beq .L2279 + add x19, x24, :lo12:.LANCHOR0 + sbfiz x26, x26, 6, 32 + add x19, x19, 784 + add x19, x19, x26 + b .L2249 +.L2279: + mov w0, 0 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 96 + ret + .size sblk_prog_page, .-sblk_prog_page + .align 2 + .global ftl_flush + .type ftl_flush, %function +ftl_flush: + stp x29, x30, [sp, -32]! + adrp x2, .LANCHOR0 + add x29, sp, 0 + add x0, x2, :lo12:.LANCHOR0 + stp x19, x20, [sp,16] + mov x19, x2 + adrp x20, .LANCHOR4 + ldrb w1, [x0,2857] + cbz w1, .L2282 + add x2, x20, :lo12:.LANCHOR4 + add x0, x0, 784 + ldrb w2, [x2,1265] + add x0, x0, x2, lsl 6 + bl sblk_prog_page +.L2282: + add x2, x19, :lo12:.LANCHOR0 + add x20, x20, :lo12:.LANCHOR4 + mov w0, -1 + strb wzr, [x2,2857] + strb w0, [x20,1265] + bl sblk_wait_write_queue_completed + bl ftl_write_completed + mov w0, -1 + bl ftl_vpn_decrement + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 32 + ret + .size ftl_flush, .-ftl_flush + .align 2 + .global zftl_cache_flush + .type zftl_cache_flush, %function +zftl_cache_flush: + adrp x0, .LANCHOR0+2857 + stp x29, x30, [sp, -16]! + add x29, sp, 0 + ldrb w0, [x0,#:lo12:.LANCHOR0+2857] + cbz w0, .L2286 + bl timer_get_time + adrp x1, .LANCHOR4+1268 + ldr w1, [x1,#:lo12:.LANCHOR4+1268] + add w1, w1, 100 + cmp w0, w1 + bls .L2286 + bl ftl_flush +.L2286: + ldp x29, x30, [sp], 16 + ret + .size zftl_cache_flush, .-zftl_cache_flush + .align 2 + .global flash_prog_page + .type flash_prog_page, %function +flash_prog_page: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x21, x22, [sp,32] + uxtb x22, w0 + adrp x21, .LANCHOR2 + adrp x0, .LANCHOR0+536 + str x27, [sp,80] + stp x19, x20, [sp,16] + stp x23, x24, [sp,48] + ldr x19, [x0,#:lo12:.LANCHOR0+536] + mov x20, x22 + ldr w0, [x21,#:lo12:.LANCHOR2] + add x22, x22, 8 + stp x25, x26, [sp,64] + mov w23, w1 + mov x25, x3 + mov x26, x2 + mov w3, w4 + add x22, x19, x22, lsl 8 + and w24, w1, 2097151 + ubfx x27, x23, 24, 2 + tbz x0, 4, .L2291 + adrp x0, .LC173 + mov w2, w27 + add x0, x0, :lo12:.LC173 + bl printk +.L2291: + bl nandc_wait_flash_ready + mov w0, w20 + bl hynix_reconfig_rr_para + mov w0, w20 + bl nandc_cs + mov w0, w20 + cbnz w27, .L2292 + bl zftl_flash_enter_slc_mode + b .L2293 +.L2292: + bl zftl_flash_exit_slc_mode +.L2293: + ubfiz x4, x20, 8, 8 + mov w0, 128 + add x19, x19, x4 + add x21, x21, :lo12:.LANCHOR2 + str w0, [x19,2056] + and w0, w23, 255 + str wzr, [x19,2052] + str wzr, [x19,2052] + str w0, [x19,2052] + lsr w0, w24, 8 + str w0, [x19,2052] + lsr w0, w24, 16 + str w0, [x19,2052] + mov w0, w24 + bl nandc_set_seed + ldrb w1, [x21,17] + mov x2, x26 + mov x3, x25 + mov w0, 1 + bl nandc_xfer_start + bl nandc_xfer_done + mov w0, 16 + str w0, [x19,2056] + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + mov x0, x22 + bl flash_read_status + mov w21, w0 + mov w0, w20 + and w19, w21, 4 + bl nandc_de_cs + tbz x21, 2, .L2294 + adrp x0, .LC174 + mov w1, w23 + add x0, x0, :lo12:.LC174 + mov w2, w19 + bl printk +.L2294: + mov w0, w19 + ldr x27, [sp,80] + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x29, x30, [sp], 96 + ret + .size flash_prog_page, .-flash_prog_page + .align 2 + .global flash_test_blk + .type flash_test_blk, %function +flash_test_blk: + stp x29, x30, [sp, -48]! + mov w2, 32 + add x29, sp, 0 + stp x19, x20, [sp,16] + adrp x19, .LANCHOR4 + uxth w20, w1 + add x19, x19, :lo12:.LANCHOR4 + mov w1, 165 + stp x21, x22, [sp,32] + uxtb w22, w0 + ldr x0, [x19,1208] + bl ftl_memset + ldr x0, [x19,1224] + mov w1, 90 + mov w2, 8 + bl ftl_memset + adrp x0, .LANCHOR0+2 + ldrh w0, [x0,#:lo12:.LANCHOR0+2] + mul w20, w20, w0 + mov w0, w22 + mov w1, w20 + bl flash_erase_block + cmn w0, #1 + bne .L2302 +.L2304: + mov w19, -1 + b .L2303 +.L2302: + adrp x21, .LANCHOR2 + ldr x2, [x19,1208] + add x21, x21, :lo12:.LANCHOR2 + ldr x3, [x19,1224] + mov w0, w22 + mov w1, w20 + add x21, x21, 8 + ldrb w4, [x21,9] + bl flash_prog_page + cmn w0, #1 + beq .L2304 + ldr x2, [x19,1208] + mov w0, w22 + ldr x3, [x19,1224] + mov w1, w20 + ldrb w4, [x21,9] + bl flash_read_page + cmn w0, #1 + beq .L2304 + ldr x0, [x19,1208] + ldr w1, [x0] + mov w0, 42405 + bfi w0, w0, 16, 16 + cmp w1, w0 + bne .L2304 + ldr x0, [x19,1224] + ldr w1, [x0] + mov w0, 23130 + bfi w0, w0, 16, 16 + cmp w1, w0 + csetm w19, ne +.L2303: + mov w1, w20 + mov w0, w22 + bl flash_erase_block + mov w0, w19 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 48 + ret + .size flash_test_blk, .-flash_test_blk + .align 2 + .global flash_dual_page_prog + .type flash_dual_page_prog, %function +flash_dual_page_prog: + stp x29, x30, [sp, -112]! + add x29, sp, 0 + stp x21, x22, [sp,32] + uxtb x21, w0 + adrp x0, .LANCHOR0+536 + stp x23, x24, [sp,48] + stp x27, x28, [sp,80] + ldr x23, [x0,#:lo12:.LANCHOR0+536] + adrp x0, .LANCHOR2 + mov x28, x2 + str x0, [x29,104] + stp x19, x20, [sp,16] + ldr w2, [x0,#:lo12:.LANCHOR2] + mov x20, x21 + stp x25, x26, [sp,64] + add x21, x21, 8 + mov w22, w1 + mov x27, x3 + mov x26, x4 + mov x25, x5 + mov w3, w6 + add x21, x23, x21, lsl 8 + and w19, w1, 2097151 + ubfx x24, x22, 24, 2 + tbz x2, 4, .L2312 + adrp x0, .LC173 + mov w2, w24 + add x0, x0, :lo12:.LC173 + bl printk +.L2312: + bl nandc_wait_flash_ready + mov w0, w20 + bl nandc_cs + mov w0, w20 + cbnz w24, .L2313 + bl zftl_flash_enter_slc_mode + b .L2314 +.L2313: + bl zftl_flash_exit_slc_mode +.L2314: + ubfiz x0, x20, 8, 8 + mov w4, 128 + add x23, x23, x0 + and w0, w22, 255 + str x4, [x29,96] + str w4, [x23,2056] + str wzr, [x23,2052] + str wzr, [x23,2052] + str w0, [x23,2052] + lsr w0, w19, 8 + str w0, [x23,2052] + lsr w0, w19, 16 + str w0, [x23,2052] + mov w0, w19 + bl nandc_set_seed + ldr x0, [x29,104] + mov x3, x27 + mov x2, x28 + mov w27, 16 + add x24, x0, :lo12:.LANCHOR2 + mov w0, 1 + ldrb w1, [x24,17] + bl nandc_xfer_start + bl nandc_xfer_done + str w27, [x23,2056] + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x4, [x29,96] + add w0, w19, 1 + str w4, [x23,2056] + and w1, w0, 255 + str wzr, [x23,2052] + str wzr, [x23,2052] + str w1, [x23,2052] + lsr w1, w0, 8 + str w1, [x23,2052] + lsr w1, w0, 16 + str w1, [x23,2052] + bl nandc_set_seed + ldrb w1, [x24,17] + mov x2, x26 + mov x3, x25 + mov w0, 1 + bl nandc_xfer_start + bl nandc_xfer_done + str w27, [x23,2056] + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + mov x0, x21 + bl flash_read_status + mov w21, w0 + mov w0, w20 + and w19, w21, 4 + bl nandc_de_cs + tbz x21, 2, .L2315 + adrp x0, .LANCHOR2 + ldr w0, [x0,#:lo12:.LANCHOR2] + tbz x0, 12, .L2315 + adrp x0, .LC174 + mov w1, w22 + add x0, x0, :lo12:.LC174 + mov w2, w19 + bl printk +.L2315: + mov w0, w19 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 112 + ret + .size flash_dual_page_prog, .-flash_dual_page_prog + .section .text.unlikely + .align 2 + .type fw_flash_page_prog.constprop.29, %function +fw_flash_page_prog.constprop.29: + stp x29, x30, [sp, -64]! + adrp x4, .LANCHOR0 + add x29, sp, 0 + add x4, x4, :lo12:.LANCHOR0 + stp x21, x22, [sp,32] + stp x19, x20, [sp,16] + mov x21, x1 + str x2, [x29,56] + ldr x1, [x4,624] + ldrb w22, [x4,724] + ldrb w19, [x1,9] + udiv w19, w0, w19 + ldrb w0, [x4,632] + bl nandc_bch_sel + adrp x0, .LANCHOR2+15 + ldr x3, [x29,56] + ldrb w0, [x0,#:lo12:.LANCHOR2+15] + cmp w0, 9 + bne .L2326 + adrp x20, .LANCHOR4 + mov w1, 255 + add x20, x20, :lo12:.LANCHOR4 + mov w2, 16384 + ldr x0, [x20,1208] + bl ftl_memset + ldr x4, [x20,1208] + mov w1, w19 + ldr x3, [x29,56] + mov x2, x21 + mov x5, x4 + mov w6, 4 + mov w0, 0 + bl flash_dual_page_prog + b .L2328 +.L2326: + mov w0, 0 + mov w1, w19 + mov x2, x21 + mov w4, 4 + bl flash_prog_page +.L2328: + mov w19, w0 + mov w0, w22 + bl nandc_bch_sel + mov w0, w19 + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x29, x30, [sp], 64 + ret + .size fw_flash_page_prog.constprop.29, .-fw_flash_page_prog.constprop.29 + .text + .align 2 + .global flash_prog_page_en + .type flash_prog_page_en, %function +flash_prog_page_en: + stp x29, x30, [sp, -128]! + add x29, sp, 0 + stp x23, x24, [sp,48] + uxtb w24, w0 + adrp x0, .LANCHOR0 + stp x19, x20, [sp,16] + mov w20, w1 + add x1, x0, :lo12:.LANCHOR0 + stp x21, x22, [sp,32] + stp x27, x28, [sp,80] + stp x25, x26, [sp,64] + mov x22, x2 + mov x21, x3 + ldrb w1, [x1,633] + mov w27, w4 + uxtb w28, w5 + ubfx x25, x20, 24, 2 + cmp w1, w24 + mov x23, x0 + bhi .L2330 + adrp x1, .LANCHOR3 + adrp x0, .LC0 + add x1, x1, :lo12:.LANCHOR3 + mov w2, 546 + add x1, x1, 376 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2330: + add x0, x23, :lo12:.LANCHOR0 + mov w19, w20 + add x1, x0, x24, sxtw + ldrb w26, [x1,736] + cbnz w25, .L2331 + adrp x1, .LANCHOR0 + ldrb w1, [x1,#:lo12:.LANCHOR0] + cbz w1, .L2332 + ldrb w0, [x0,1] + cbz w0, .L2331 +.L2332: + add x0, x23, :lo12:.LANCHOR0 + ldrh w19, [x0,2] + ldrb w2, [x0,1] + udiv w1, w20, w19 + mul w19, w1, w19 + sub w1, w20, w19 + cbz w2, .L2333 + add w19, w19, w1, lsl 1 + b .L2331 +.L2333: + add x0, x0, 4 + ldrh w0, [x0,w1,uxtw 1] + add w19, w0, w19 +.L2331: + adrp x25, .LC175 + adrp x23, .LC176 + adrp x0, .LC177 + add x25, x25, :lo12:.LC175 + add x0, x0, :lo12:.LC177 + add x23, x23, :lo12:.LC176 + str x0, [x29,120] +.L2337: + adrp x0, .LANCHOR2 + ldr w0, [x0,#:lo12:.LANCHOR2] + tbz x0, 4, .L2334 + mov x0, x25 + mov w1, w26 + mov w2, w20 + mov w3, w19 + bl printk +.L2334: + mov w0, w26 + mov w1, w19 + mov x2, x22 + mov x3, x21 + mov w4, w27 + bl flash_prog_page + mov w6, w0 + cbz w28, .L2335 + adrp x5, .LANCHOR4 + mov w4, w27 + add x7, x5, :lo12:.LANCHOR4 + mov w0, w24 + mov w1, w20 + str x5, [x29,104] + str x6, [x29,96] + ldr x2, [x7,1248] + ldr x3, [x7,1256] + str x7, [x29,112] + bl flash_read_page_en + cmp w0, 512 + cset w4, eq + ldr x5, [x29,104] + cbnz w4, .L2336 + cmn w0, #1 + beq .L2336 + ldr x7, [x29,112] + ldr w1, [x22] + ldr x6, [x29,96] + ldr x0, [x7,1248] + ldr w0, [x0] + cmp w1, w0 + bne .L2336 + ldr x0, [x7,1256] + ldr w1, [x21] + ldr w0, [x0] + cmp w1, w0 + beq .L2335 +.L2336: + mov w2, 4 + mov x0, x23 + mov w3, w2 + mov x1, x22 + str x4, [x29,104] + str x5, [x29,112] + bl rknand_print_hex + mov w2, 4 + ldr x0, [x29,120] + mov w3, w2 + mov x1, x21 + bl rknand_print_hex + ldr x5, [x29,112] + mov w2, 4 + adrp x0, .LC178 + mov w3, w2 + add x5, x5, :lo12:.LANCHOR4 + add x0, x0, :lo12:.LC178 + str x5, [x29,112] + ldr x1, [x5,1256] + bl rknand_print_hex + ldr x5, [x29,112] + mov w2, 4 + adrp x0, .LC179 + mov w3, w2 + add x0, x0, :lo12:.LC179 + ldr x1, [x5,1248] + bl rknand_print_hex + ldr x4, [x29,104] + cbnz w4, .L2337 +.L2339: + adrp x0, .LC180 + mov w1, w20 + add x0, x0, :lo12:.LC180 + bl printk + adrp x1, .LANCHOR3 + adrp x0, .LC0 + add x1, x1, :lo12:.LANCHOR3 + mov w2, 577 + add x1, x1, 376 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack + mov w0, -1 + b .L2338 +.L2335: + cmn w6, #1 + mov w0, w6 + beq .L2339 +.L2338: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldp x25, x26, [sp,64] + ldp x27, x28, [sp,80] + ldp x29, x30, [sp], 128 + ret .size flash_prog_page_en, .-flash_prog_page_en .align 2 .global ftl_prog_page @@ -14012,20 +14764,20 @@ ftl_prog_page: bl flash_prog_page_en cmn w0, #1 mov w19, w0 - bne .L2289 + bne .L2357 adrp x2, .LANCHOR3 adrp x0, .LC0 add x1, x2, :lo12:.LANCHOR3 add x0, x0, :lo12:.LC0 - add x1, x1, 392 - mov w2, 2150 + add x1, x1, 400 + mov w2, 2231 bl printk bl dump_stack - adrp x0, .LC171 + adrp x0, .LC180 mov w1, w20 - add x0, x0, :lo12:.LC171 + add x0, x0, :lo12:.LC180 bl printk -.L2289: +.L2357: mov w0, w19 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 64 @@ -14050,20 +14802,20 @@ ftl_info_flush: adrp x23, .LANCHOR3 add x19, x22, :lo12:.LANCHOR4 ldrb w2, [x0,2832] - adrp x24, .LC172 + adrp x24, .LC181 add x23, x23, :lo12:.LANCHOR3 add x0, x19, 1280 lsl w2, w2, 1 mov w25, 0 - add x24, x24, :lo12:.LC172 - add x23, x23, 408 + add x24, x24, :lo12:.LC181 + add x23, x23, 416 bl ftl_memset -.L2291: +.L2359: add x0, x21, :lo12:.LANCHOR0 ldrb w27, [x19,1536] ldrh w20, [x19,1538] ldr x2, [x0,2864] - ldrh w28, [x0,3350] + ldrh w28, [x0,3362] ldr w1, [x2,4] add w1, w1, 1 str w1, [x2,4] @@ -14073,29 +14825,29 @@ ftl_info_flush: str w0, [x19,1284] adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2292 + tbz x0, 12, .L2360 ldr w3, [x3,4] mov x0, x24 mov w1, w27 mov w2, w20 bl printk -.L2292: +.L2360: add x1, x21, :lo12:.LANCHOR0 ldrh w0, [x19,1538] - ldrh w1, [x1,3300] + ldrh w1, [x1,3324] cmp w1, w0 - bhi .L2293 + bhi .L2361 adrp x20, .LC0 add x20, x20, :lo12:.LC0 -.L2298: +.L2366: ldrb w1, [x19,1537] add w1, w1, 1 uxtb w1, w1 strb w1, [x19,1537] cmp w1, 7 - bls .L2294 + bls .L2362 mov x1, 0 -.L2297: +.L2365: add x0, x21, :lo12:.LANCHOR0 uxth w25, w1 ldr x2, [x0,728] @@ -14105,24 +14857,24 @@ ftl_info_flush: add w0, w2, 127 uxtb w0, w0 cmp w0, 125 - bhi .L2295 + bhi .L2363 mov x1, x23 - mov w2, 742 + mov w2, 748 mov x0, x20 bl printk bl dump_stack - b .L2296 -.L2295: + b .L2364 +.L2363: cmp w2, 255 - bne .L2296 + bne .L2364 add x1, x1, 1 cmp x1, 8 - bne .L2297 + bne .L2365 mov w25, w1 -.L2296: +.L2364: strb w25, [x19,1537] mov w25, 1 -.L2294: +.L2362: add x27, x21, :lo12:.LANCHOR0 ldrb w1, [x19,1537] ldr x0, [x27,728] @@ -14130,8 +14882,8 @@ ftl_info_flush: ldrb w2, [x1,40] strb w2, [x19,1536] cmp w2, 255 - beq .L2298 - ldrh w20, [x27,3350] + beq .L2366 + ldrh w20, [x27,3362] mov w0, 0 mul w20, w2, w20 mov w1, w20 @@ -14145,13 +14897,13 @@ ftl_info_flush: bl ftl_prog_page mov w0, 1 strh w0, [x19,1538] - b .L2299 -.L2293: + b .L2367 +.L2361: madd w20, w27, w28, w20 - cbnz w0, .L2299 + cbnz w0, .L2367 mov w1, w20 bl flash_erase_block -.L2299: +.L2367: add x4, x21, :lo12:.LANCHOR0 mov w1, w20 mov w0, 0 @@ -14164,41 +14916,41 @@ ftl_info_flush: adrp x0, .LANCHOR5 add w1, w1, 1 strh w1, [x19,1538] - beq .L2300 + beq .L2368 add x1, x0, :lo12:.LANCHOR5 ldrb w1, [x1,576] - cbz w1, .L2301 -.L2300: + cbz w1, .L2369 +.L2368: add x0, x0, :lo12:.LANCHOR5 strb wzr, [x0,576] - b .L2291 -.L2301: - cbnz w25, .L2302 -.L2310: + b .L2359 +.L2369: + cbnz w25, .L2370 +.L2378: add x22, x22, :lo12:.LANCHOR4 ldrb w0, [x22,1536] cmp w0, 255 - bne .L2304 + bne .L2372 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 778 - add x1, x1, 408 + mov w2, 784 + add x1, x1, 416 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L2304 -.L2302: + b .L2372 +.L2370: ldrb w19, [x19,1537] adrp x20, .LANCHOR3 adrp x23, .LC0 add x20, x20, :lo12:.LANCHOR3 add w19, w19, 1 add x23, x23, :lo12:.LC0 - add x20, x20, 408 -.L2305: + add x20, x20, 416 +.L2373: cmp w19, 7 - bhi .L2310 + bhi .L2378 add x0, x21, :lo12:.LANCHOR0 ldr x1, [x0,728] add w0, w19, 8 @@ -14207,27 +14959,27 @@ ftl_info_flush: add w0, w24, 127 uxtb w0, w0 cmp w0, 125 - bhi .L2306 + bhi .L2374 mov x1, x20 - mov w2, 771 + mov w2, 777 mov x0, x23 bl printk bl dump_stack - b .L2307 -.L2306: + b .L2375 +.L2374: cmp w24, 255 - beq .L2308 -.L2307: + beq .L2376 +.L2375: add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0,3350] + ldrh w1, [x0,3362] mov w0, 0 mul w1, w24, w1 bl flash_erase_block -.L2308: +.L2376: add w19, w19, 1 uxth w19, w19 - b .L2305 -.L2304: + b .L2373 +.L2372: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14246,34 +14998,34 @@ ftl_info_blk_init: mov w2, 16384 add x29, sp, 0 stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - adrp x20, .LANCHOR5 + adrp x20, .LANCHOR0 + adrp x19, .LANCHOR5 stp x23, x24, [sp,48] - add x23, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR5 + add x23, x20, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR5 stp x21, x22, [sp,32] stp x25, x26, [sp,64] stp x27, x28, [sp,80] adrp x21, .LANCHOR4 - strb w0, [x20,576] + strb w0, [x19,576] ldrh w1, [x23,576] add x22, x21, :lo12:.LANCHOR4 add x24, x22, 1600 - strb w0, [x20,578] + strb w0, [x19,578] mov x0, x24 - strb wzr, [x20,577] + strb wzr, [x19,577] add x1, x24, x1, lsl 2 str x1, [x23,2864] mov w1, 0 str x24, [x23,584] - adrp x26, .LC173 + adrp x26, .LC182 adrp x27, .LANCHOR2 bl ftl_memset - add x26, x26, :lo12:.LC173 - add x0, x20, 640 + add x26, x26, :lo12:.LC182 + add x0, x19, 640 mov w1, 0 mov w2, 16384 - mov w20, 7 + mov w19, 7 bl ftl_memset strb wzr, [x22,1537] ldr x0, [x23,728] @@ -14281,16 +15033,16 @@ ftl_info_blk_init: strh wzr, [x22,1538] ldrb w0, [x0,40] strb w0, [x22,1536] -.L2328: - add x5, x19, :lo12:.LANCHOR0 - add w0, w20, 8 - sxth w25, w20 +.L2396: + add x5, x20, :lo12:.LANCHOR0 + add w0, w19, 8 + sxth w25, w19 ldr x1, [x5,728] add x0, x1, x0, sxtw ldrb w1, [x0,32] cmp w1, 255 - beq .L2324 - ldrh w22, [x5,3350] + beq .L2392 + ldrh w22, [x5,3362] mov w0, 0 ldrb w4, [x5,2832] mov x2, x24 @@ -14302,7 +15054,7 @@ ftl_info_blk_init: cmn w0, #1 mov w28, w0 ldr x5, [x29,104] - bne .L2325 + bne .L2393 ldrb w4, [x5,2832] mov w0, 0 add w1, w22, 1 @@ -14310,111 +15062,120 @@ ftl_info_blk_init: mov x3, x23 bl ftl_read_page mov w28, w0 -.L2325: +.L2393: ldr w0, [x27,#:lo12:.LANCHOR2] - tbz x0, 12, .L2326 - add x0, x19, :lo12:.LANCHOR0 - mov w1, w20 + tbz x0, 12, .L2394 + add x0, x20, :lo12:.LANCHOR0 + mov w1, w19 mov w2, w28 mov w3, 672 ldr x4, [x0,2864] mov x0, x26 ldr w4, [x4] bl printk -.L2326: +.L2394: cmn w28, #1 - beq .L2324 - add x0, x19, :lo12:.LANCHOR0 + beq .L2392 + add x0, x20, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldr w1, [x0] mov w0, 21574 movk w0, 0x494c, lsl 16 cmp w1, w0 - beq .L2336 -.L2324: - sub w20, w20, #1 - cmn w20, #1 - bne .L2328 + beq .L2405 +.L2392: + sub w19, w19, #1 + cmn w19, #1 + bne .L2396 mov w25, 0 - b .L2327 -.L2336: - mov w20, w25 -.L2327: - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2329 - add x0, x19, :lo12:.LANCHOR0 - mov w1, w20 + b .L2395 +.L2405: + mov w19, w25 +.L2395: + adrp x23, .LANCHOR2 + ldr w0, [x23,#:lo12:.LANCHOR2] + tbz x0, 12, .L2397 + add x0, x20, :lo12:.LANCHOR0 + mov w1, w19 mov w2, 4800 ldr x3, [x0,2864] - adrp x0, .LC174 - add x0, x0, :lo12:.LC174 + adrp x0, .LC183 + add x0, x0, :lo12:.LC183 ldr w3, [x3] bl printk -.L2329: - cmn w20, #1 - bne .L2330 +.L2397: + cmn w19, #1 + bne .L2398 add x0, x21, :lo12:.LANCHOR4 mov w1, 0 - add x19, x19, :lo12:.LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 add x0, x0, 1600 mov w2, 16384 bl ftl_memset - ldr x1, [x19,2864] + ldr x1, [x20,2864] mov w0, 21574 movk w0, 0x494c, lsl 16 str w0, [x1] - mov w0, 20 + mov w0, 22 movk w0, 0x6, lsl 16 - ldr x1, [x19,2864] + ldr x1, [x20,2864] str w0, [x1,12] - mov w0, w20 - b .L2331 -.L2330: - add x26, x19, :lo12:.LANCHOR0 - add x23, x21, :lo12:.LANCHOR4 + b .L2422 +.L2398: + add x27, x20, :lo12:.LANCHOR0 + add x24, x21, :lo12:.LANCHOR4 add w0, w25, 8 - add x24, x23, 1600 - mov x2, x24 + add x26, x24, 1280 + mov x3, x26 mov w4, 4 - ldr x1, [x26,728] + ldr x1, [x27,728] add x0, x1, x0, sxtw - strb w25, [x23,1537] - add x25, x23, 1280 + strb w25, [x24,1537] + add x25, x24, 1600 ldrb w1, [x0,32] - mov x3, x25 + mov x2, x25 mov w0, 0 - strb w1, [x23,1536] + strb w1, [x24,1536] bl flash_get_last_written_page sxth w22, w0 add w0, w0, 1 - uxth w20, w0 - ldrb w0, [x23,1536] - ldrh w23, [x26,3350] - mul w23, w0, w23 -.L2332: - tbnz w22, #31, .L2335 - add x26, x19, :lo12:.LANCHOR0 + uxth w19, w0 + ldrb w0, [x24,1536] + ldrh w24, [x27,3362] + mul w24, w0, w24 + b .L2400 +.L2422: + mov w0, w19 + b .L2399 +.L2403: + add x27, x20, :lo12:.LANCHOR0 mov w0, 0 - add w1, w22, w23 - mov x2, x24 - mov x3, x25 - ldrb w4, [x26,2832] + add w1, w22, w24 + mov x2, x25 + mov x3, x26 + ldrb w4, [x27,2832] bl ftl_read_page cmn w0, #1 - beq .L2333 - ldr x0, [x26,2864] + bne .L2423 +.L2401: + sub w22, w22, #1 + sxth w22, w22 +.L2400: + tbz w22, #31, .L2403 + b .L2404 +.L2423: + ldr x0, [x27,2864] ldr w1, [x0] mov w0, 21574 movk w0, 0x494c, lsl 16 cmp w1, w0 - bne .L2333 -.L2335: + bne .L2401 +.L2404: add x21, x21, :lo12:.LANCHOR4 - add x19, x19, :lo12:.LANCHOR0 - strh w20, [x21,1538] + add x20, x20, :lo12:.LANCHOR0 + strh w19, [x21,1538] bl ftl_tmp_into_update - ldr x1, [x19,2864] + ldr x1, [x20,2864] ldr w0, [x1,64] add w0, w0, 1 str w0, [x1,64] @@ -14422,13 +15183,16 @@ ftl_info_blk_init: bl ftl_info_flush mov w0, 0 bl ftl_info_flush + ldr w0, [x23,#:lo12:.LANCHOR2] + and w19, w0, 16384 + tbz x0, 14, .L2422 + ldr x1, [x20,2864] + adrp x0, .LC184 + add x0, x0, :lo12:.LC184 + ldr w1, [x1,156] + bl printk mov w0, 0 - b .L2331 -.L2333: - sub w22, w22, #1 - sxth w22, w22 - b .L2332 -.L2331: +.L2399: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14455,59 +15219,59 @@ ftl_ext_info_flush: ldr x1, [x1,608] ldr w3, [x1,520] cmp w0, w3 - bls .L2354 + bls .L2425 ldr w2, [x1,12] sub w2, w2, w3 add w2, w2, w0 str w2, [x1,12] - b .L2367 -.L2354: - bcs .L2355 -.L2367: + b .L2438 +.L2425: + bcs .L2426 +.L2438: str w0, [x1,520] -.L2355: +.L2426: adrp x23, .LANCHOR3 adrp x19, .LANCHOR4 add x23, x23, :lo12:.LANCHOR3 add x19, x19, :lo12:.LANCHOR4 mov w0, 0 - add x23, x23, 424 + add x23, x23, 432 add x19, x19, 1280 bl ftl_total_vpn_update -.L2356: +.L2427: adrp x24, .LANCHOR5 add x24, x24, :lo12:.LANCHOR5 add x25, x24, 640 -.L2359: +.L2430: add x2, x22, :lo12:.LANCHOR0 ldr x0, [x2,2864] ldr w1, [x0,56] add w1, w1, 1 str w1, [x0,56] ldrh w1, [x0,140] - ldrh w0, [x2,3300] + ldrh w0, [x2,3324] cmp w1, w0 - bcc .L2357 + bcc .L2428 bl ftl_ext_alloc_new_blk -.L2357: +.L2428: add x0, x22, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldrh w1, [x0,130] mov w0, 65535 cmp w1, w0 - bne .L2358 + bne .L2429 adrp x0, .LC0 mov x1, x23 - mov w2, 1746 + mov w2, 1819 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2358: +.L2429: add x21, x22, :lo12:.LANCHOR0 mov w0, 21 mov w1, 1 ldr x2, [x21,2864] - ldrh w20, [x21,3340] + ldrh w20, [x21,3264] ldrh w3, [x2,130] sub w20, w0, w20 ldrh w0, [x2,140] @@ -14516,7 +15280,7 @@ ftl_ext_info_flush: sub w20, w20, #1 ldrb w2, [x21,2832] and w3, w20, w3 - ldrh w20, [x21,3350] + ldrh w20, [x21,3362] mov w1, 0 lsl w2, w2, 1 madd w20, w3, w20, w0 @@ -14539,17 +15303,17 @@ ftl_ext_info_flush: uxth w1, w1 strh w1, [x2,140] cmp w1, 1 - beq .L2359 + beq .L2430 cmn w0, #1 - beq .L2360 + beq .L2431 ldrb w0, [x24,578] - cbz w0, .L2361 -.L2360: + cbz w0, .L2432 +.L2431: adrp x0, .LANCHOR5 add x0, x0, :lo12:.LANCHOR5 strb wzr, [x0,578] - b .L2356 -.L2361: + b .L2427 +.L2432: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14576,10 +15340,10 @@ ftl_ext_info_init: add x2, x20, :lo12:.LANCHOR5 ldr x0, [x26,2864] add x3, x21, :lo12:.LANCHOR4 - ldrh w22, [x26,3340] + ldrh w22, [x26,3264] add x2, x2, 640 add x3, x3, 1280 - strh wzr, [x26,3888] + strh wzr, [x26,3896] ldrh w1, [x0,130] mov w0, 21 sub w22, w0, w22 @@ -14596,60 +15360,60 @@ ftl_ext_info_init: adrp x0, .LANCHOR2 mov w23, w24 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2369 + tbz x0, 12, .L2440 ldr x5, [x26,2864] adrp x1, .LANCHOR3 - adrp x0, .LC175 + adrp x0, .LC185 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC175 - add x1, x1, 448 + add x0, x0, :lo12:.LC185 + add x1, x1, 456 ldrh w5, [x5,130] - mov w2, 1790 + mov w2, 1863 mov w3, w24 uxth w4, w27 bl printk -.L2369: +.L2440: add x20, x20, :lo12:.LANCHOR5 add x21, x21, :lo12:.LANCHOR4 mov w26, w24 add x20, x20, 640 add x21, x21, 1280 -.L2370: - tbnz w26, #31, .L2375 +.L2441: + tbnz w26, #31, .L2446 add x27, x19, :lo12:.LANCHOR0 mov w0, w25 mov x2, x20 mov x3, x21 - ldrh w1, [x27,3350] + ldrh w1, [x27,3362] ldrb w4, [x27,2832] madd w1, w22, w1, w26 bl flash_read_page_en cmp w0, 512 - beq .L2371 + beq .L2442 cmn w0, #1 - beq .L2371 + beq .L2442 ldr x0, [x27,608] ldr w1, [x0] mov w0, 20038 movk w0, 0x4549, lsl 16 cmp w1, w0 - bne .L2371 -.L2375: + bne .L2442 +.L2446: bl zftl_sblk_list_init add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldrh w1, [x0,140] cmp w1, w24 - bgt .L2373 + bgt .L2444 add w23, w23, 1 strh w23, [x0,140] bl ftl_ext_info_flush - b .L2373 -.L2371: + b .L2444 +.L2442: sub w26, w26, #1 sxth w26, w26 - b .L2370 -.L2373: + b .L2441 +.L2444: add x19, x19, :lo12:.LANCHOR0 ldr x20, [x19,608] bl timer_get_time @@ -14659,15 +15423,19 @@ ftl_ext_info_init: ldr x20, [x19,608] bl timer_get_time str w0, [x20,604] - ldr x1, [x19,608] - mov w0, -1 - strh w0, [x19,3224] - strh w0, [x1,584] - strh w0, [x1,586] - strh w0, [x1,588] - strh w0, [x1,590] + ldr x0, [x19,608] + mov w1, -1 + strh w1, [x0,584] + strh w1, [x0,586] + strh w1, [x0,588] + strh w1, [x0,590] + mov w1, 65535 + str wzr, [x0,608] + str w1, [x0,560] + mov w1, -1 + str w1, [x0,564] mov w0, 0 - str wzr, [x1,608] + strh w1, [x19,3240] ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -14709,14 +15477,14 @@ ftl_write_last_log_page: add x19, x19, :lo12:.LANCHOR0 ldrh w24, [x0,12] cmp w1, 1 - ldr x22, [x19,3872] - bne .L2387 + ldr x22, [x19,3880] + bne .L2458 mov x20, x0 bl ftl_get_new_free_page cmn w0, #1 mov w23, w0 mov w21, 0 - beq .L2387 + beq .L2458 ldrh w0, [x20] add x22, x22, x24, uxth 2 bl ftl_vpn_decrement @@ -14727,8 +15495,8 @@ ftl_write_last_log_page: add x2, x1, 3968 str x2, [x29,72] str w0, [x1,3968] - ldrb w0, [x19,3276] - ldrh w1, [x19,3300] + ldrb w0, [x19,3300] + ldrh w1, [x19,3324] mul w1, w1, w0 mov x0, x22 lsl w1, w1, 2 @@ -14741,7 +15509,7 @@ ftl_write_last_log_page: str w21, [x2,8] str w21, [x2,12] bl ftl_prog_ppa_page -.L2387: +.L2458: mov w0, w21 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -14753,380 +15521,510 @@ ftl_write_last_log_page: .global ftl_open_sblk_recovery .type ftl_open_sblk_recovery, %function ftl_open_sblk_recovery: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -208]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR2 - stp x19, x20, [sp,16] - mov x19, x0 - ldr w0, [x24,#:lo12:.LANCHOR2] - stp x27, x28, [sp,80] stp x21, x22, [sp,32] + adrp x21, .LANCHOR2 stp x25, x26, [sp,64] - mov x27, x1 - tbz x0, 12, .L2392 - adrp x0, .LC176 - ldrh w1, [x19,2] - add x0, x0, :lo12:.LC176 + mov x25, x0 + str x1, [x29,120] + ldr w0, [x21,#:lo12:.LANCHOR2] + stp x19, x20, [sp,16] + stp x23, x24, [sp,48] + stp x27, x28, [sp,80] + tbz x0, 12, .L2463 + adrp x0, .LC186 + ldrh w1, [x25,2] + add x0, x0, :lo12:.LC186 bl printk -.L2392: - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L2393 - adrp x0, .LC177 - ldrb w1, [x19,5] - add x0, x0, :lo12:.LC177 +.L2463: + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 12, .L2464 + adrp x0, .LC187 + ldrb w1, [x25,5] + add x0, x0, :lo12:.LC187 bl printk -.L2393: - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L2394 - adrp x0, .LC178 - ldrh w1, [x19] - add x0, x0, :lo12:.LC178 +.L2464: + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 12, .L2465 + adrp x0, .LC188 + ldrh w1, [x25] + add x0, x0, :lo12:.LC188 bl printk -.L2394: - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L2395 - adrp x0, .LC179 - ldrh w1, [x19,16] - ldrh w2, [x19,18] - add x0, x0, :lo12:.LC179 +.L2465: + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 12, .L2466 + adrp x0, .LC189 + ldrh w1, [x25,16] + ldrh w2, [x25,18] + add x0, x0, :lo12:.LC189 bl printk -.L2395: - ldrh w0, [x19,10] - adrp x21, .LANCHOR0 - strh w0, [x19,14] - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x19] +.L2466: + ldrh w0, [x25,10] + adrp x19, .LANCHOR0 + strh w0, [x25,14] + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x25] ldrh w0, [x0,576] cmp w1, w0 - bcs .L2391 + bcs .L2462 mov w0, 1 - adrp x25, .LANCHOR4 - adrp x26, .LANCHOR3 - add x25, x25, :lo12:.LANCHOR4 + add x20, x29, 144 + adrp x24, .LANCHOR4 + mov w26, 2 bl buf_alloc - add x26, x26, :lo12:.LANCHOR3 - ldrb w22, [x19,5] - mov x20, x0 - ldrh w23, [x19,2] - add x0, x26, 472 - mov w28, 0 - add x25, x25, 1280 - str x0, [x29,120] -.L2398: - add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,3300] + mov x27, x0 + mov w1, 255 + mov x0, x20 + mov w2, 64 + add x24, x24, :lo12:.LANCHOR4 + add x24, x24, 1280 + bl ftl_memset + ldrb w22, [x25,5] + adrp x0, .LANCHOR3 + ldrh w23, [x25,2] + add x0, x0, :lo12:.LANCHOR3 + str wzr, [x29,136] + add x0, x0, 480 + str x0, [x29,112] +.L2468: + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0,3324] cmp w0, w23 - bls .L2401 - ldrb w22, [x19,5] -.L2399: - ldrb w0, [x19,9] + bls .L2471 + ldrb w22, [x25,5] +.L2469: + ldrb w0, [x25,9] cmp w0, w22 - bls .L2475 - add x0, x19, x22, sxtw 1 + bls .L2579 + add x0, x25, x22, sxtw 1 ldrh w0, [x0,16] mov w1, 65535 cmp w0, w1 - beq .L2400 - add x3, x21, :lo12:.LANCHOR0 - ldr x2, [x20,24] - ldrh w1, [x3,3350] + beq .L2470 + add x3, x19, :lo12:.LANCHOR0 + ldr x2, [x27,24] + ldrh w1, [x3,3362] ldrb w3, [x3,2832] madd w0, w0, w1, w23 - ldr x1, [x20,8] + ldr x1, [x27,8] + str w0, [x29,132] bl ftl_read_ppa_page cmp w0, 512 - mov w26, w0 - beq .L2401 + mov w28, w0 + beq .L2471 cmn w0, #1 - beq .L2402 - ldr x0, [x20,24] + beq .L2472 + ldr x0, [x27,24] ldr w1, [x0] cmn w1, #1 - bne .L2402 + bne .L2472 ldr w0, [x0,4] cmn w0, #1 - bne .L2402 - ldr x0, [x20,8] + bne .L2472 + ldr x0, [x27,8] ldr w0, [x0] cmn w0, #1 - beq .L2401 -.L2402: + beq .L2471 +.L2472: adrp x0, .LANCHOR5+577 mov w1, 1 strb w1, [x0,#:lo12:.LANCHOR5+577] - ldrb w0, [x19,9] - ldrh w1, [x19,10] + ldrb w0, [x25,9] + ldrh w1, [x25,10] madd w0, w23, w0, w22 cmp w1, w0 - beq .L2403 + beq .L2473 adrp x0, .LC0 - ldr x1, [x29,120] - mov w2, 1395 + ldr x1, [x29,112] + mov w2, 1412 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2403: - ldrh w0, [x19,10] - ldrh w1, [x19,6] - ldrb w2, [x19,9] +.L2473: + ldrh w0, [x25,10] + ldrh w1, [x25,6] + ldrb w2, [x25,9] add w1, w1, w0 - add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0,3300] + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0,3324] mul w0, w0, w2 cmp w1, w0 - beq .L2404 + beq .L2474 adrp x0, .LC0 - ldr x1, [x29,120] - mov w2, 1396 + ldr x1, [x29,112] + mov w2, 1413 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2404: - cmn w26, #1 - beq .L2408 - ldr x0, [x20,24] +.L2474: + cmn w28, #1 + beq .L2478 + ldr x0, [x27,24] ldr w0, [x0,4] cmn w0, #1 - beq .L2408 + beq .L2478 bl lpa_hash_get_ppa - cbz x27, .L2406 - ldr x2, [x20,24] - ldr w3, [x2,8] - cmp w0, w3 - beq .L2406 + ldr x1, [x29,120] + cbz x1, .L2476 + ldr x3, [x27,24] + ldr w1, [x3,8] + cmp w0, w1 + beq .L2476 cmn w0, #1 - beq .L2406 - add x4, x21, :lo12:.LANCHOR0 - mov w5, 21 - mov w28, 1 - ldrh w3, [x4,3340] - lsr w1, w0, w3 - sub w3, w5, w3 - lsl w3, w28, w3 - sub w3, w3, #1 - and w3, w1, w3 - ldrb w1, [x4,3338] - udiv w3, w3, w1 - ldrh w1, [x27] - cmp w1, w3, uxth - bne .L2406 - ldr w6, [x2] - mov x2, x25 - ldrb w3, [x4,2832] - ldr x1, [x20,8] - str x5, [x29,96] - str x6, [x29,104] - str x4, [x29,112] + beq .L2476 + add x28, x19, :lo12:.LANCHOR0 + mov w4, 21 + mov w26, 1 + ldrh w1, [x28,3264] + lsr w2, w0, w1 + sub w1, w4, w1 + lsl w1, w26, w1 + sub w1, w1, #1 + and w1, w2, w1 + ldrb w2, [x28,3266] + udiv w1, w1, w2 + ldr x2, [x29,120] + ldrh w2, [x2] + cmp w2, w1, uxth + bne .L2476 + ldr w7, [x3] + mov x2, x24 + ldr x1, [x27,8] + ldrb w3, [x28,2832] + str x4, [x29,104] + str x7, [x29,136] bl ftl_read_ppa_page - ldr w0, [x25] - ldr x6, [x29,104] - ldr x4, [x29,112] - cmp w0, w6 - ldr x5, [x29,96] - bcc .L2406 - ldr x0, [x20,24] + ldr w0, [x24] + ldr x7, [x29,136] + ldr x4, [x29,104] + cmp w0, w7 + bcc .L2476 + ldr x0, [x27,24] ldr w1, [x0,8] cmn w1, #1 - beq .L2408 - ldrh w0, [x4,3340] - sub w5, w5, w0 + beq .L2478 + ldrh w0, [x28,3264] + sub w4, w4, w0 lsr w1, w1, w0 - lsl w28, w28, w5 - ldrb w0, [x4,3338] - sub w28, w28, #1 - and w1, w28, w1 + lsl w26, w26, w4 + ldrb w0, [x28,3266] + sub w26, w26, #1 + and w1, w26, w1 udiv w0, w1, w0 bl ftl_vpn_decrement - b .L2408 -.L2406: - ldr x2, [x20,24] - add x1, x21, :lo12:.LANCHOR0 + b .L2478 +.L2476: + ldr x2, [x27,24] + add x1, x19, :lo12:.LANCHOR0 ldr w3, [x2,4] ldr w0, [x1,2840] cmp w3, w0 - bcs .L2408 - ldrb w0, [x19,9] - ldrh w4, [x1,3300] - ldrh w3, [x19,10] + bcs .L2478 + ldrb w0, [x25,9] + ldrh w4, [x1,3324] + ldrh w3, [x25,10] mul w0, w0, w4 sub w0, w0, #1 cmp w3, w0 - blt .L2476 -.L2408: - ldrh w0, [x19,6] - mov w28, 1 + blt .L2580 +.L2478: + ldrh w0, [x25,6] + mov w26, 4 sub w0, w0, #1 - strh w0, [x19,6] - ldrh w0, [x19,10] + strh w0, [x25,6] + ldrh w0, [x25,10] add w0, w0, 1 - strh w0, [x19,10] -.L2400: + strh w0, [x25,10] + mov w0, 1 + str w0, [x29,136] +.L2470: add w22, w22, 1 uxth w22, w22 - b .L2399 -.L2475: + b .L2469 +.L2579: add w23, w23, 1 - strb wzr, [x19,5] + strb wzr, [x25,5] uxth w23, w23 - b .L2398 -.L2401: - add x2, x21, :lo12:.LANCHOR0 - ldrh w0, [x19,10] - ldrh w1, [x19,6] - strh w23, [x19,2] + b .L2468 +.L2471: + add x2, x19, :lo12:.LANCHOR0 + ldrh w0, [x25,10] + ldrh w1, [x25,6] + strh w23, [x25,2] add w1, w1, w0 - ldrh w2, [x2,3300] - ldrb w0, [x19,9] - strb w22, [x19,5] + ldrh w2, [x2,3324] + ldrb w0, [x25,9] + strb w22, [x25,5] mul w0, w0, w2 cmp w1, w0 - beq .L2412 + beq .L2482 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1472 - add x1, x1, 472 + mov w2, 1493 + add x1, x1, 480 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2412: - add x0, x21, :lo12:.LANCHOR0 - ldrh w3, [x19,10] - ldr x4, [x0,3872] +.L2482: + add x0, x19, :lo12:.LANCHOR0 + ldrh w3, [x25,10] + ldr x4, [x0,3880] mov w0, 0 mov w2, w0 -.L2413: +.L2483: cmp w2, w3 - bcs .L2477 - ldrh w1, [x19,12] + bcs .L2581 + ldrh w1, [x25,12] add w1, w2, w1 ldr w1, [x4,x1,lsl 2] cmn w1, #1 - beq .L2414 + beq .L2484 add w1, w0, 1 uxth w0, w1 -.L2414: +.L2484: add w2, w2, 1 - b .L2413 -.L2477: - add x2, x21, :lo12:.LANCHOR0 - ldrb w1, [x19,9] + b .L2483 +.L2581: + add x2, x19, :lo12:.LANCHOR0 + ldrb w1, [x25,9] sub w0, w0, w3 - ldrh w22, [x2,3300] + ldrh w22, [x2,3324] madd w0, w1, w22, w0 uxth w22, w0 - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L2416 - ldrh w1, [x19] - adrp x0, .LC180 + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 12, .L2486 + ldrh w1, [x25] + adrp x0, .LC190 ldr x4, [x2,600] - add x0, x0, :lo12:.LC180 + add x0, x0, :lo12:.LC190 ubfiz x3, x1, 1, 16 mov w2, w22 ldrh w3, [x4,x3] bl printk -.L2416: - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x19] - adrp x23, .LC181 - mov w25, -1 - add x23, x23, :lo12:.LC181 +.L2486: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x25] ldr x0, [x0,600] strh w22, [x0,x1,lsl 1] - mov x0, x20 - mov w22, 0 - bl buf_free -.L2417: - add x2, x21, :lo12:.LANCHOR0 - ldrb w0, [x2,3276] - cmp w22, w0, lsl 1 - bcs .L2478 - cbz w28, .L2418 - ldrh w0, [x19,6] - cmp w0, 1 - bls .L2418 - mov x0, x19 - bl ftl_get_new_free_page - mov w26, w0 - ldr w0, [x24,#:lo12:.LANCHOR2] - tbz x0, 12, .L2419 - mov x0, x23 - mov w1, w26 + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 14, .L2487 + adrp x0, .LC191 + ldr w1, [x29,144] + ldr w2, [x29,148] + add x0, x0, :lo12:.LC191 + ldr w3, [x29,152] + ldr w4, [x29,156] bl printk -.L2419: - add x3, x21, :lo12:.LANCHOR0 - ldr x0, [x20,24] - ldr x1, [x3,2864] +.L2487: + add x0, x19, :lo12:.LANCHOR0 + mov w1, 0 + adrp x24, .LC192 + mov x23, 0 + add x24, x24, :lo12:.LC192 + ldrb w2, [x0,2832] + ldr x0, [x27,8] + lsl w2, w2, 9 + bl ftl_memset + adrp x0, .LC193 + add x28, x0, :lo12:.LC193 + adrp x0, .LC194 + add x0, x0, :lo12:.LC194 + str x0, [x29,120] +.L2488: + add x22, x19, :lo12:.LANCHOR0 + str w23, [x29,132] + ldrb w0, [x22,3300] + mul w0, w26, w0 + cmp w23, w0 + bcs .L2582 + ldr w0, [x20,x23,lsl 2] + cmn w0, #1 + bne .L2489 +.L2493: + add x1, x19, :lo12:.LANCHOR0 + ldr x0, [x27,24] + mov w22, -1 + ldr x1, [x1,2864] ldr w1, [x1,8] str w1, [x0] - ldr x0, [x20,24] - str w25, [x0,4] - ldr x0, [x20,24] - str w25, [x0,8] - ldr x0, [x20,24] + ldr x0, [x27,24] + str w22, [x0,4] + ldr x0, [x27,24] + str w22, [x0,8] + ldr x0, [x27,24] str wzr, [x0,12] - ldr x0, [x20,8] + ldr x0, [x27,8] str wzr, [x0] - mov w0, w26 - ldr x1, [x20,8] - ldr x2, [x20,24] + b .L2490 +.L2489: + ldrb w3, [x22,2832] + ldr x1, [x27,8] + ldr x2, [x27,24] + bl ftl_read_ppa_page + mov w22, w0 + ldr x0, [x27,24] + ldr w0, [x0,4] + bl lpa_hash_get_ppa + mov w4, w0 + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 14, .L2491 + ldr x3, [x27,24] + mov w1, w4 + ldr w2, [x20,x23,lsl 2] + mov x0, x24 + str x4, [x29,112] + ldr w3, [x3,4] + bl printk + ldr x4, [x29,112] +.L2491: + ldr w0, [x20,x23,lsl 2] + ldr x2, [x27,24] + cmp w4, w0 + add x0, x19, :lo12:.LANCHOR0 + csinv w22, w22, wzr, eq + cmn w22, #1 + ldr x1, [x0,2864] + ldr w0, [x1,8] + add w3, w0, 1 + str w3, [x1,8] + str w0, [x2] + mov w1, 1 + ldr x0, [x27,24] + str w4, [x0,8] + ldr x0, [x27,24] + str w1, [x0,12] + beq .L2493 +.L2490: + ldr w0, [x29,136] + cbz w0, .L2495 +.L2578: + ldrh w0, [x25,6] + cmp w0, 1 + bls .L2495 + mov x0, x25 + bl ftl_get_new_free_page + mov w4, w0 + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 14, .L2497 + ldr x2, [x27,24] + mov w1, w4 + mov x0, x28 + str x4, [x29,112] + ldr w2, [x2,4] + bl printk + ldr x4, [x29,112] +.L2497: + add x3, x19, :lo12:.LANCHOR0 + ldr w1, [x29,132] + ldrh w0, [x25,6] + ldrb w2, [x3,3300] + mul w2, w26, w2 + add w2, w2, 1 + sub w2, w2, w1 + cmp w0, w2 + bls .L2495 + ldr x1, [x27,8] + mov w0, w4 + ldr x2, [x27,24] ldrb w3, [x3,2832] bl ftl_prog_ppa_page - ldrh w0, [x19] + mov w2, w0 + ldrh w0, [x25] + str x2, [x29,112] bl ftl_vpn_decrement -.L2418: - add w22, w22, 1 - b .L2417 -.L2478: - ldrh w1, [x2,3300] - ldrh w0, [x19,12] - ldrb w3, [x19,9] - madd w0, w1, w3, w0 + ldr x2, [x29,112] + cmn w22, #1 + cset w1, ne + cmn w2, #1 + beq .L2498 + cbz w1, .L2495 + ldr w0, [x21,#:lo12:.LANCHOR2] + tbz x0, 14, .L2499 + ldr x2, [x27,24] + ldrh w0, [x25,12] + ldrh w3, [x25,10] + ldr w1, [x2,4] + add w3, w3, w0 + ldr w2, [x2,8] + ldr x0, [x29,120] + sub w3, w3, #1 + bl printk +.L2499: + ldr x1, [x27,24] + ldrh w0, [x25,12] + ldrh w2, [x25,10] + add w2, w2, w0 + ldr w0, [x1,4] + ldr w1, [x1,8] + sub w2, w2, #1 + bl lpa_hash_update_ppa + b .L2495 +.L2498: + cbnz w1, .L2578 +.L2495: + add x23, x23, 1 + b .L2488 +.L2582: + mov x0, x27 + bl buf_free + ldrh w1, [x22,3324] + ldrh w0, [x25,12] + ldrb w2, [x25,9] + madd w0, w1, w2, w0 mov x1, -4 add x0, x1, x0, sxtw 2 - ldr x1, [x2,3872] + ldr x1, [x22,3880] ldr w0, [x1,x0] cmn w0, #1 - beq .L2421 + beq .L2503 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1502 - add x1, x1, 472 + mov w2, 1567 + add x1, x1, 480 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2421: - ldrh w0, [x19,6] +.L2503: + ldrh w0, [x25,6] cmp w0, 1 - bne .L2391 - mov x0, x19 + bne .L2462 + mov x0, x25 bl ftl_write_last_log_page - b .L2391 -.L2476: + b .L2462 +.L2580: ldr x0, [x1,2864] ldr w2, [x2] ldr w1, [x0,8] cmp w2, w1 - bls .L2409 + bls .L2479 str w2, [x0,8] -.L2409: - ldr x1, [x20,24] - ldrh w0, [x19,10] - ldrh w2, [x19,12] +.L2479: + ldr x1, [x27,24] + ldrh w0, [x25,10] + ldrh w2, [x25,12] add w2, w2, w0 ldr w0, [x1,4] ldr w1, [x1,8] bl lpa_hash_update_ppa - b .L2408 -.L2391: + ldr w0, [x20,4] + str w0, [x20] + ldr w0, [x20,8] + str w0, [x20,4] + ldr w0, [x20,12] + str w0, [x20,8] + ldr w0, [x29,132] + str w0, [x20,12] + b .L2478 +.L2462: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 128 + ldp x29, x30, [sp], 208 ret .size ftl_open_sblk_recovery, .-ftl_open_sblk_recovery .align 2 @@ -15147,8 +16045,8 @@ pm_write_page: mov x24, x1 adrp x25, .LANCHOR0 add x23, x23, :lo12:.LC0 - add x22, x22, 496 -.L2480: + add x22, x22, 504 +.L2584: add x2, x25, :lo12:.LANCHOR0 adrp x19, .LANCHOR0 ldr x0, [x2,2864] @@ -15156,36 +16054,36 @@ pm_write_page: ldrh w3, [x0,696] add w1, w1, 1 str w1, [x0,48] - ldrh w1, [x2,3300] + ldrh w1, [x2,3324] cmp w3, w1 - bcs .L2481 + bcs .L2585 ldrh w1, [x0,692] mov w0, 65535 cmp w1, w0 - bne .L2482 -.L2481: + bne .L2586 +.L2585: bl pm_alloc_new_blk mov w0, 0 bl ftl_info_flush -.L2482: +.L2586: add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,2864] ldrh w1, [x0,692] mov w0, 65535 cmp w1, w0 - bne .L2483 + bne .L2587 mov x1, x22 mov w2, 230 mov x0, x23 bl printk bl dump_stack -.L2483: +.L2587: add x19, x19, :lo12:.LANCHOR0 adrp x20, .LANCHOR7 add x27, x20, :lo12:.LANCHOR7 mov w2, 64 ldr x1, [x19,2864] - ldrh w26, [x19,3350] + ldrh w26, [x19,3362] ldrh w0, [x1,692] ldrh w1, [x1,696] madd w26, w0, w26, w1 @@ -15211,28 +16109,28 @@ pm_write_page: uxth w2, w2 strh w2, [x1,696] cmp w2, 1 - beq .L2484 + beq .L2588 ldrb w2, [x27,-120] - cbz w2, .L2485 -.L2484: + cbz w2, .L2589 +.L2588: add x20, x20, :lo12:.LANCHOR7 strb wzr, [x20,-120] - b .L2480 -.L2485: + b .L2584 +.L2589: cmn w0, #1 - bne .L2487 - adrp x0, .LC182 + bne .L2591 + adrp x0, .LC195 mov w1, w26 - add x0, x0, :lo12:.LC182 + add x0, x0, :lo12:.LC195 bl printk - b .L2480 -.L2487: + b .L2584 +.L2591: ldrh w0, [x1,698] cmp w21, w0 - bcs .L2488 + bcs .L2592 add x21, x1, x21, uxtw 2 str w26, [x21,704] -.L2488: +.L2592: mov w0, 0 ldr x27, [sp,80] ldp x19, x20, [sp,16] @@ -15243,11 +16141,267 @@ pm_write_page: ret .size pm_write_page, .-pm_write_page .align 2 + .global ftl_dump_write_open_sblk + .type ftl_dump_write_open_sblk, %function +ftl_dump_write_open_sblk: + sub sp, sp, #208 + stp x29, x30, [sp,48] + add x29, sp, 48 + stp x21, x22, [sp,80] + adrp x22, .LANCHOR0 + stp x23, x24, [sp,96] + uxth w23, w0 + add x0, x22, :lo12:.LANCHOR0 + stp x19, x20, [sp,64] + stp x25, x26, [sp,112] + stp x27, x28, [sp,128] + ldrh w1, [x0,576] + cmp w1, w23 + bls .L2596 + ldrb w1, [x0,3296] + cbnz w1, .L2598 + ldrb w0, [x0,3282] + cbz w0, .L2596 +.L2598: + add x1, x22, :lo12:.LANCHOR0 + ubfiz x19, x23, 2, 16 + mov w27, 1 + ldr x0, [x1,584] + add x0, x0, x19 + ldrb w0, [x0,2] + and w0, w0, 224 + cmp w0, 160 + bne .L2599 + ldrb w27, [x1,3281] +.L2599: + add x24, x29, 128 + mov w0, w23 + add x1, x24, 16 + strh w23, [x29,128] + mov w21, 0 + adrp x25, .LC197 + bl ftl_get_blk_list_in_sblk + uxtb w0, w0 + add x1, x22, :lo12:.LANCHOR0 + strb w0, [x29,137] + strh wzr, [x29,130] + mov w20, w21 + strb wzr, [x29,133] + mov w26, w21 + ldrh w2, [x1,3324] + add x25, x25, :lo12:.LC197 + strh wzr, [x29,138] + mul w0, w0, w2 + strh w0, [x29,134] + ldr x0, [x1,584] + add x1, x0, x19 + ldrh w4, [x0,x19] + ldr w5, [x0,x19] + adrp x0, .LC196 + ldrb w3, [x1,2] + and w4, w4, 2047 + mov w1, w23 + ubfx x5, x5, 11, 8 + ubfx x2, x3, 5, 3 + add x0, x0, :lo12:.LC196 + ubfx x3, x3, 3, 2 + bl printk + mov w0, 1 + bl buf_alloc + mov x19, x0 + mov w8, 65535 +.L2600: + add x0, x22, :lo12:.LANCHOR0 + ldrh w0, [x0,3324] + cmp w0, w20 + bls .L2621 + lsl w28, w20, 1 + mov w26, 0 + sub w28, w28, #1 +.L2610: + ldrb w0, [x24,9] + cmp w0, w26 + bls .L2625 + mov w21, 1 + sxtw x9, w26 +.L2609: + cmp w21, w27 + bhi .L2626 + add x0, x9, 8 + ldrh w5, [x24,x0,lsl 1] + cmp w5, w8 + beq .L2602 + add x0, x22, :lo12:.LANCHOR0 + cmp w27, 3 + ldrh w2, [x0,3362] + mul w2, w5, w2 + bne .L2603 + add w2, w2, w20 + orr w3, w2, w21, lsl 24 + b .L2604 +.L2603: + cmp w27, 2 + add w3, w2, w20 + bne .L2604 + ldrb w3, [x0,3281] + add w2, w2, w28 + add w2, w2, w21 + orr w3, w2, w3, lsl 24 +.L2604: + str w3, [x19,40] + mov w1, 1 + mov x0, x19 + str x8, [x29,96] + str x9, [x29,104] + str x5, [x29,112] + str x3, [x29,120] + bl sblk_read_page + ldr x7, [x19,8] + mov w2, w20 + ldr x0, [x19,24] + ldr w10, [x19,52] + ldr w1, [x7,12] + str w1, [sp] + mov w4, w10 + ldr x5, [x29,112] + ldr w1, [x0] + str w1, [sp,8] + ldr x3, [x29,120] + ldr w1, [x0,4] + str w1, [sp,16] + str x10, [x29,120] + ldr w1, [x0,8] + str w1, [sp,24] + mov w1, w5 + ldr w0, [x0,12] + str w0, [sp,32] + mov x0, x25 + ldr w5, [x7] + ldr w6, [x7,4] + ldr w7, [x7,8] + bl printk + ldr x10, [x29,120] + ldr x9, [x29,104] + cmp w10, 512 + ldr x8, [x29,96] + beq .L2621 +.L2602: + add w21, w21, 1 + uxth w21, w21 + b .L2609 +.L2626: + add w26, w26, 1 + uxth w26, w26 + b .L2610 +.L2625: + add w20, w20, 1 + uxth w20, w20 + b .L2600 +.L2621: +.L2606: + adrp x0, .LC198 + mov w4, w21 + mov w2, w20 + mov w3, w26 + mov w1, w23 + mov w25, w20 + add x0, x0, :lo12:.LC198 + add x20, x22, :lo12:.LANCHOR0 + adrp x21, .LC199 + bl printk + add x21, x21, :lo12:.LC199 + ldrb w2, [x20,2832] + mov w1, 0 + ldr x0, [x19,8] + lsl w2, w2, 9 + bl ftl_memset + ldrb w2, [x20,2832] + mov w1, 0 + ldr x0, [x19,24] + lsl w2, w2, 1 + bl ftl_memset +.L2611: + add x0, x22, :lo12:.LANCHOR0 + ldrh w0, [x0,3324] + cmp w0, w25 + bls .L2616 + lsl w26, w25, 1 + mov w20, 0 +.L2617: + ldrb w0, [x24,9] + cmp w0, w20 + bls .L2627 + mov w1, w25 + mov x0, x21 + mov w2, w20 + bl printk + add x4, x22, :lo12:.LANCHOR0 + sxtw x3, w20 + ldrb w5, [x4,3296] + ldrh w1, [x4,3362] + cbz w5, .L2612 + add x3, x3, 8 + ldrh w0, [x24,x3,lsl 1] + mul w1, w0, w1 + mov x0, x19 + orr w1, w1, w25 + str w1, [x19,40] + bl sblk_3d_tlc_dump_prog + b .L2613 +.L2612: + add x3, x3, 8 + ldrb w0, [x4,3281] + cmp w0, 2 + ldrh w0, [x24,x3,lsl 1] + mul w1, w0, w1 + bne .L2614 + orr w1, w1, w26 + mov x0, x19 + orr w1, w1, 33554432 + str w1, [x19,40] + bl sblk_mlc_dump_prog + b .L2613 +.L2614: + orr w1, w1, w25 + ldr x2, [x19,8] + ldr x3, [x19,24] + ubfx x0, x1, 21, 3 + ldrb w4, [x4,2832] + str w1, [x19,40] + and w1, w1, -14680065 + bl flash_prog_page_en +.L2613: + add w20, w20, 1 + uxth w20, w20 + b .L2617 +.L2627: + add w25, w25, 1 + uxth w25, w25 + b .L2611 +.L2616: + mov x0, x19 + bl buf_free + adrp x0, .LC200 + mov w1, w23 + add x0, x0, :lo12:.LC200 + bl printk +.L2596: + sub sp, x29, #48 + ldp x19, x20, [sp,64] + ldp x21, x22, [sp,80] + ldp x23, x24, [sp,96] + ldp x25, x26, [sp,112] + ldp x27, x28, [sp,128] + ldp x29, x30, [sp,48] + add sp, sp, 208 + ret + .size ftl_dump_write_open_sblk, .-ftl_dump_write_open_sblk + .align 2 .global flash_info_flush .type flash_info_flush, %function flash_info_flush: adrp x0, .LANCHOR2 - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! add x29, sp, 0 ldr w0, [x0,#:lo12:.LANCHOR2] stp x19, x20, [sp,16] @@ -15255,31 +16409,32 @@ flash_info_flush: stp x23, x24, [sp,48] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - tbz x0, 12, .L2493 + tbz x0, 12, .L2629 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 250 - add x2, x2, 512 + add x0, x0, :lo12:.LC134 + mov w1, 324 + add x2, x2, 520 bl printk -.L2493: - adrp x22, .LANCHOR4 +.L2629: + adrp x22, .LANCHOR7 adrp x23, .LANCHOR0 - add x0, x22, :lo12:.LANCHOR4 + add x0, x22, :lo12:.LANCHOR7 mov w1, 0 mov w2, 64 add x19, x23, :lo12:.LANCHOR0 - adrp x24, .LC184 - adrp x25, .LC185 - ldr x0, [x0,1232] + adrp x24, .LC202 + adrp x25, .LC203 + ldr x0, [x0,-112] mov w26, 0 - add x24, x24, :lo12:.LC184 - add x25, x25, :lo12:.LC185 + add x24, x24, :lo12:.LC202 + adrp x27, .LANCHOR4 + add x25, x25, :lo12:.LC203 bl ftl_memset ldr x1, [x19,728] - adrp x0, .LC183 - add x0, x0, :lo12:.LC183 + adrp x0, .LC201 + add x0, x0, :lo12:.LC201 mov w2, 4 mov w3, 16 bl rknand_print_hex @@ -15288,90 +16443,258 @@ flash_info_flush: ldr w1, [x19,8] bl js_hash str w0, [x19,12] -.L2494: - add x21, x22, :lo12:.LANCHOR4 - add x27, x23, :lo12:.LANCHOR0 +.L2630: + add x21, x22, :lo12:.LANCHOR7 + add x28, x23, :lo12:.LANCHOR0 mov x0, x24 - ldrb w20, [x21,1240] - ldrh w19, [x21,1242] + ldrb w20, [x21,-104] + ldrh w19, [x21,-102] + ldrh w3, [x28,2] mov w1, w20 - ldrh w28, [x27,2] mov w2, w19 + str x3, [x29,104] bl printk - ldrh w1, [x21,1092] - ldrh w0, [x21,1242] + add x1, x27, :lo12:.LANCHOR4 + ldrh w0, [x21,-102] + ldr x3, [x29,104] + ldrh w1, [x1,1108] sub w1, w1, #1 cmp w0, w1 - blt .L2495 - ldr x1, [x27,728] - ldrb w19, [x21,1241] - strh wzr, [x21,1242] + blt .L2631 + ldr x1, [x28,728] + strh wzr, [x21,-102] ldr w0, [x1,4] add w0, w0, 1 str w0, [x1,4] - ldrb w0, [x21,1240] - ldr x20, [x27,728] - strb w0, [x21,1241] - mov x0, x20 - strb w19, [x21,1240] - ldrh w1, [x20,16] + ldrb w0, [x21,-104] + ldr x19, [x28,728] + ldrb w1, [x21,-103] + strb w0, [x21,-103] + mov x0, x19 + strb w1, [x21,-104] + ldrh w1, [x19,16] add w1, w1, 1 strh w1, [x0,16]! - ldr w1, [x20,8] + ldr w1, [x19,8] bl js_hash - str w0, [x20,12] - ldrh w0, [x27,2] - mul w19, w19, w0 + str w0, [x19,12] + ldrb w1, [x21,-104] mov w0, 0 - b .L2503 -.L2495: - madd w19, w20, w28, w19 - cbnz w0, .L2496 -.L2503: + ldrh w19, [x28,2] + mul w19, w1, w19 + b .L2639 +.L2631: + madd w19, w20, w3, w19 + cbnz w0, .L2632 +.L2639: mov w1, w19 bl flash_erase_block -.L2496: +.L2632: add x2, x23, :lo12:.LANCHOR0 - add x20, x22, :lo12:.LANCHOR4 + add x20, x22, :lo12:.LANCHOR7 mov w4, 4 mov w5, 1 ldr x1, [x2,728] - ldr x0, [x20,1232] + ldr x0, [x20,-112] ldr w1, [x1,4] str w1, [x0] mov w0, 21321 movk w0, 0x5359, lsl 16 - ldr x1, [x20,1232] + ldr x1, [x20,-112] str w0, [x1,4] mov w1, w19 mov w0, 0 ldr x2, [x2,728] - ldr x3, [x20,1232] + ldr x3, [x20,-112] bl flash_prog_page_en cmn w0, #1 - ldrh w1, [x20,1242] + ldrh w1, [x20,-102] add w1, w1, 1 - strh w1, [x20,1242] - bne .L2497 + strh w1, [x20,-102] + bne .L2633 mov x0, x25 mov w1, w19 bl printk - b .L2494 -.L2497: - cbnz w26, .L2504 + b .L2630 +.L2633: + cbnz w26, .L2640 mov w26, 1 - b .L2494 -.L2504: + b .L2630 +.L2640: mov w0, 0 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 96 + ldp x29, x30, [sp], 112 ret .size flash_info_flush, .-flash_info_flush .align 2 + .global flash_info_blk_init + .type flash_info_blk_init, %function +flash_info_blk_init: + adrp x0, .LANCHOR2 + stp x29, x30, [sp, -80]! + add x29, sp, 0 + ldr w0, [x0,#:lo12:.LANCHOR2] + stp x19, x20, [sp,16] + stp x21, x22, [sp,32] + stp x23, x24, [sp,48] + str x25, [sp,64] + adrp x20, .LANCHOR0 + tbz x0, 12, .L2642 + add x4, x20, :lo12:.LANCHOR0 + adrp x2, .LANCHOR3 + adrp x0, .LC204 + add x2, x2, :lo12:.LANCHOR3 + add x0, x0, :lo12:.LC204 + mov w1, 50 + ldr x4, [x4,728] + add x2, x2, 544 + mov w3, 2048 + bl printk +.L2642: + mov w23, 4 + adrp x24, .LANCHOR7 +.L2645: + add x19, x20, :lo12:.LANCHOR0 + add x21, x24, :lo12:.LANCHOR7 + mov w0, 0 + mov w4, 4 + adrp x22, .LANCHOR7 + ldrh w1, [x19,2] + ldr x2, [x19,728] + ldr x3, [x21,-112] + mul w1, w23, w1 + bl flash_read_page_en + cmn w0, #1 + beq .L2643 + ldr x2, [x19,728] + mov w0, 21321 + movk w0, 0x5359, lsl 16 + ldr w1, [x2] + cmp w1, w0 + beq .L2644 +.L2643: + add w23, w23, 1 + cmp w23, 16 + bne .L2645 +.L2670: + mov w0, -1 + b .L2669 +.L2644: + ldrb w1, [x2,36] + mov w4, 4 + ldrh w3, [x19,2] + strb w1, [x21,-104] + ldrb w0, [x2,37] + mul w1, w1, w3 + ldr x3, [x21,-112] + strb w0, [x21,-103] + mov w0, 0 + mov w21, 0 + bl flash_read_page_en + cmn w0, #1 + beq .L2647 + ldr x0, [x19,728] + mov w1, 21321 + movk w1, 0x5359, lsl 16 + mov w21, 0 + ldr w2, [x0] + cmp w2, w1 + bne .L2647 + ldr w21, [x0,4] +.L2647: + add x19, x22, :lo12:.LANCHOR7 + add x23, x20, :lo12:.LANCHOR0 + mov w0, 0 + mov w4, 4 + ldrb w2, [x19,-103] + ldrh w1, [x23,2] + ldr x3, [x19,-112] + mul w1, w2, w1 + ldr x2, [x23,728] + bl flash_read_page_en + cmn w0, #1 + beq .L2648 + ldr x0, [x23,728] + mov w1, 21321 + movk w1, 0x5359, lsl 16 + ldr w2, [x0] + cmp w2, w1 + bne .L2648 + ldr w1, [x0,4] + cmp w21, w1 + bcs .L2648 + ldrb w1, [x0,37] + ldrb w0, [x0,36] + strb w1, [x19,-104] + strb w0, [x19,-103] +.L2648: + add x19, x22, :lo12:.LANCHOR7 + add x21, x20, :lo12:.LANCHOR0 + mov w0, 0 + mov w4, 4 + ldrb w1, [x19,-104] + ldr x2, [x21,728] + ldr x3, [x19,-112] + bl flash_get_last_written_page + ldrh w23, [x21,2] + ldrb w1, [x19,-104] + uxth w24, w0 + add w0, w24, 1 + mov w21, 0 + strh w0, [x19,-102] + mul w23, w1, w23 +.L2649: + sub w19, w24, w21 + sxth w19, w19 + tbnz w19, #31, .L2671 + add x25, x20, :lo12:.LANCHOR0 + add x3, x22, :lo12:.LANCHOR7 + mov w0, 0 + add w1, w19, w23 + mov w4, 4 + ldr x2, [x25,728] + ldr x3, [x3,-112] + bl flash_read_page_en + cmn w0, #1 + beq .L2650 + ldr x0, [x25,728] + ldr w1, [x0] + mov w0, 21321 + movk w0, 0x5359, lsl 16 + cmp w1, w0 + beq .L2651 +.L2650: + add w21, w21, 1 + b .L2649 +.L2671: + cmn w19, #1 + bne .L2651 + add x20, x20, :lo12:.LANCHOR0 + adrp x0, .LC205 + add x0, x0, :lo12:.LC205 + ldr x1, [x20,728] + ldr w1, [x1] + bl printk + b .L2670 +.L2651: + cmp w21, 1 + mov w0, 0 + bls .L2669 + bl flash_info_flush + mov w0, 0 +.L2669: + ldp x19, x20, [sp,16] + ldp x21, x22, [sp,32] + ldp x23, x24, [sp,48] + ldr x25, [sp,64] + ldp x29, x30, [sp], 80 + ret + .size flash_info_blk_init, .-flash_info_blk_init + .align 2 .global nand_flash_init .type nand_flash_init, %function nand_flash_init: @@ -15384,22 +16707,22 @@ nand_flash_init: stp x23, x24, [sp,48] ldr w0, [x20,#:lo12:.LANCHOR2] str x25, [sp,64] - tbz x0, 12, .L2506 + tbz x0, 12, .L2673 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 2258 - add x2, x2, 536 + add x0, x0, :lo12:.LC134 + mov w1, 2490 + add x2, x2, 568 bl printk -.L2506: +.L2673: adrp x21, .LANCHOR4 mov x0, x19 add x23, x21, :lo12:.LANCHOR4 adrp x19, .LANCHOR0 add x22, x19, :lo12:.LANCHOR0 mov w25, 44 - str wzr, [x23,1220] + str wzr, [x23,1236] bl nandc_init add x1, x20, :lo12:.LANCHOR2 mov w0, 1 @@ -15412,78 +16735,78 @@ nand_flash_init: add x22, x22, 748 bl ftl_memset mov x24, x22 - add x0, x23, 1096 + add x0, x23, 1112 mov w1, 0 mov w2, 32 mov w23, 0 bl ftl_memset -.L2512: +.L2679: mov w0, w23 mov x1, x22 bl flash_read_id - cbnz w23, .L2507 + cbnz w23, .L2674 ldrb w0, [x24] sub w0, w0, #1 uxtb w0, w0 cmp w0, 253 - bls .L2508 -.L2510: + bls .L2675 +.L2677: mov w22, -2 - b .L2579 -.L2508: + b .L2749 +.L2675: ldrb w0, [x24,1] cmp w0, 255 - beq .L2510 -.L2507: + beq .L2677 +.L2674: ldrb w0, [x22] cmp w0, 181 - bne .L2511 + bne .L2678 strb w25, [x22] -.L2511: +.L2678: add w23, w23, 1 add x22, x22, 8 uxtb w23, w23 cmp w23, 4 - bne .L2512 + bne .L2679 add x23, x20, :lo12:.LANCHOR2 add x24, x19, :lo12:.LANCHOR0 add x23, x23, 440 mov w22, 0 add x24, x24, 748 -.L2515: +.L2682: ldrb w2, [x23] add x0, x23, 1 mov x1, x24 bl flash_mem_cmp8 - cbnz w0, .L2513 + cbnz w0, .L2680 add x1, x20, :lo12:.LANCHOR2 ubfiz x22, x22, 5, 32 add x0, x1, 440 adds x22, x0, x22 - beq .L2510 + beq .L2677 ldrb w3, [x22,22] mov x0, 0 - b .L2517 -.L2513: + b .L2684 +.L2680: add w22, w22, 1 add x23, x23, 32 - cmp w22, 36 - bne .L2515 - b .L2510 -.L2517: + cmp w22, 38 + bne .L2682 + b .L2677 +.L2684: add x4, x1, x0, lsl 5 mov w2, w0 - ldrb w4, [x4,1592] + ldrb w4, [x4,1656] cmp w4, w3 - beq .L2516 + beq .L2683 add x0, x0, 1 cmp x0, 4 - bne .L2517 + bne .L2684 mov w2, w0 -.L2516: +.L2683: add x23, x20, :lo12:.LANCHOR2 add x24, x19, :lo12:.LANCHOR0 - add x1, x23, 1592 + add x1, x23, 1656 ubfiz x2, x2, 5, 32 add x1, x1, x2 add x0, x24, 640 @@ -15496,262 +16819,280 @@ nand_flash_init: bl ftl_memcpy ldrb w0, [x24,516] cmp w0, 8 - bhi .L2518 + bhi .L2685 ldrb w1, [x23,20] cmp w1, 60 - bls .L2519 + bls .L2686 mov w1, 60 strb w1, [x23,20] -.L2519: +.L2686: cmp w0, 8 - bne .L2518 + bne .L2685 add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,748] cmp w0, 137 - beq .L2543 + beq .L2715 cmp w0, 44 - beq .L2543 -.L2518: + beq .L2715 +.L2685: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2521 + tbz x0, 12, .L2688 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 2283 - add x2, x2, 536 + add x0, x0, :lo12:.LC134 + mov w1, 2515 + add x2, x2, 568 bl printk -.L2521: - add x23, x21, :lo12:.LANCHOR4 +.L2688: + add x24, x21, :lo12:.LANCHOR4 mov w0, 16384 add x22, x19, :lo12:.LANCHOR0 - add x24, x20, :lo12:.LANCHOR2 + adrp x23, .LANCHOR7 bl ftl_malloc - str x0, [x23,1248] + add x25, x20, :lo12:.LANCHOR2 + str x0, [x24,1248] mov w0, 16384 bl ftl_malloc - str x0, [x23,1192] + str x0, [x24,1208] mov w0, 2048 bl ftl_malloc str x0, [x22,728] mov w0, 64 bl ftl_malloc - str x0, [x23,1256] + str x0, [x24,1256] mov w0, 64 bl ftl_malloc - str x0, [x23,1208] + str x0, [x24,1224] mov w0, 64 bl ftl_malloc - str x0, [x23,1232] - adrp x0, .LANCHOR7-119 - strb wzr, [x0,#:lo12:.LANCHOR7-119] + add x1, x23, :lo12:.LANCHOR7 + str x0, [x1,-112] + strb wzr, [x1,-100] bl flash_die_info_init - ldrb w0, [x24,26] + ldrb w0, [x25,26] bl flash_lsb_page_tbl_build - ldrb w0, [x24,28] + ldrb w0, [x25,28] bl nandc_bch_sel - str xzr, [x23,1224] + str xzr, [x24,1240] ldr x1, [x22,624] ldrh w0, [x1,16] + ldrb w1, [x1,28] ubfx x2, x0, 8, 3 strb w2, [x22,780] ubfx x2, x0, 3, 1 - strb w2, [x23,1265] + strb w2, [x24,1264] ubfx x2, x0, 4, 1 strb w2, [x22,781] ubfx x2, x0, 12, 1 - strb w2, [x22,3272] + strb w2, [x22,3296] ubfx x2, x0, 13, 1 - ubfx x0, x0, 14, 1 - strb w0, [x22,1] - ldrb w0, [x1,28] - mov w1, 60 - strb w1, [x22,632] - ldrb w1, [x22,516] - strb w2, [x22,3348] - strb w0, [x19,#:lo12:.LANCHOR0] + strb w2, [x22,3282] + ubfx x2, x0, 14, 1 + lsr w0, w0, 15 + strb w0, [x22,3283] + mov w0, 60 + strb w0, [x22,632] + ldrb w0, [x22,516] + strb w2, [x22,1] + strb w1, [x19,#:lo12:.LANCHOR0] + cmp w0, 9 + bne .L2689 + mov w0, 70 + strb w0, [x22,632] +.L2689: + add x0, x19, :lo12:.LANCHOR0 + strb w1, [x0,634] + add x1, x20, :lo12:.LANCHOR2 + ldrb w1, [x1,15] cmp w1, 9 - bne .L2522 - mov w1, 70 - strb w1, [x22,632] -.L2522: - add x2, x20, :lo12:.LANCHOR2 - add x1, x21, :lo12:.LANCHOR4 - add x2, x2, 8 - add x3, x19, :lo12:.LANCHOR0 - strb w0, [x1,1264] - ldrb w0, [x2,19] - ldrh w2, [x2,16] - strb w0, [x3,725] - tbz x2, 6, .L2523 - sub w2, w0, #17 - uxtb w2, w2 - cmp w2, 2 - bhi .L2524 - adrp x0, micron_read_retrial - add x0, x0, :lo12:micron_read_retrial - str x0, [x1,1224] - mov w0, 15 - b .L2581 -.L2524: - sub w2, w0, #65 - uxtb w2, w2 - cmp w2, 1 - bls .L2544 + bne .L2690 + strb wzr, [x0,634] +.L2690: + add x1, x20, :lo12:.LANCHOR2 + add x2, x19, :lo12:.LANCHOR0 + add x1, x1, 8 + ldrb w0, [x1,19] + ldrh w1, [x1,16] + strb w0, [x2,725] + tbz x1, 6, .L2692 + sub w1, w0, #17 + cmp w0, 21 + cset w2, eq + uxtb w1, w1 + cmp w1, 2 + bls .L2716 + cbz w2, .L2693 +.L2716: + add x0, x21, :lo12:.LANCHOR4 + adrp x1, micron_read_retrial + add x1, x1, :lo12:micron_read_retrial + str x1, [x0,1240] + mov w1, 15 + cbz w2, .L2751 + mov w1, 4 + b .L2751 +.L2693: + sub w1, w0, #65 + uxtb w1, w1 + cmp w1, 1 + bls .L2717 cmp w0, 33 - bne .L2525 -.L2544: + bne .L2697 +.L2717: add x0, x21, :lo12:.LANCHOR4 adrp x1, toshiba_read_retrial add x1, x1, :lo12:toshiba_read_retrial mov w2, 4 - str x1, [x0,1224] + str x1, [x0,1240] add x1, x19, :lo12:.LANCHOR0 strb w2, [x1,726] - mov w1, 7 - strb w1, [x0,1216] - b .L2523 -.L2525: - sub w2, w0, #67 - uxtb w2, w2 - cmp w2, 1 - sub w2, w0, #34 - cset w3, ls - uxtb w2, w2 - cmp w2, 1 - bls .L2545 - cbz w3, .L2527 -.L2545: - add x2, x21, :lo12:.LANCHOR4 + b .L2753 +.L2697: + sub w1, w0, #67 + uxtb w1, w1 + cmp w1, 1 + sub w1, w0, #34 + cset w2, ls + uxtb w1, w1 + cmp w1, 1 + bls .L2718 + cbz w2, .L2699 +.L2718: + add x3, x21, :lo12:.LANCHOR4 adrp x1, toshiba_read_retrial add x1, x1, :lo12:toshiba_read_retrial cmp w0, 35 - str x1, [x2,1224] - beq .L2529 + str x1, [x3,1240] + beq .L2701 cmp w0, 68 - beq .L2529 + beq .L2701 mov w0, 7 - strb w0, [x2,1216] - b .L2530 -.L2529: + strb w0, [x3,1232] + b .L2702 +.L2701: add x0, x21, :lo12:.LANCHOR4 mov w1, 17 - strb w1, [x0,1216] -.L2530: + strb w1, [x0,1232] +.L2702: add x0, x19, :lo12:.LANCHOR0 mov w1, 4 - cbnz w3, .L2582 + cbnz w2, .L2752 mov w1, 5 -.L2582: +.L2752: strb w1, [x0,726] - b .L2523 -.L2527: + b .L2692 +.L2699: sub w0, w0, #36 uxtb w0, w0 cmp w0, 1 - bhi .L2523 - adrp x0, toshiba_3d_read_retrial - add x0, x0, :lo12:toshiba_3d_read_retrial - str x0, [x1,1224] - mov w0, 7 -.L2581: - strb w0, [x1,1216] -.L2523: + bhi .L2692 + add x0, x21, :lo12:.LANCHOR4 + adrp x1, toshiba_3d_read_retrial + add x1, x1, :lo12:toshiba_3d_read_retrial + str x1, [x0,1240] +.L2753: + mov w1, 7 +.L2751: + strb w1, [x0,1232] +.L2692: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2532 + tbz x0, 12, .L2704 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 2331 - add x2, x2, 536 + add x0, x0, :lo12:.LC134 + mov w1, 2573 + add x2, x2, 568 bl printk -.L2532: +.L2704: add x0, x19, :lo12:.LANCHOR0 strb wzr, [x0,672] ldrb w0, [x0,780] - tbz x0, 0, .L2533 + tbz x0, 0, .L2705 mov w0, 4 bl nandc_set_if_mode mov w0, 1 bl flash_set_interface_mode mov w0, 1 - b .L2583 -.L2533: + b .L2754 +.L2705: mov w0, 4 -.L2583: +.L2754: bl nandc_set_if_mode bl flash_info_blk_init cmn w0, #1 mov w22, w0 - bne .L2535 + bne .L2707 ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2536 + tbz x0, 12, .L2708 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 2352 - add x2, x2, 536 + add x0, x0, :lo12:.LC134 + mov w1, 2605 + add x2, x2, 568 bl printk -.L2536: +.L2708: add x19, x19, :lo12:.LANCHOR0 mov w1, 17 ldr x0, [x19,728] strb w1, [x0,32] - b .L2579 -.L2535: + mov w0, 0 + bl zftl_flash_exit_slc_mode + b .L2749 +.L2707: add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,725] sub w0, w0, #1 uxtb w0, w0 - cmp w0, 6 - bhi .L2537 - add x0, x21, :lo12:.LANCHOR4 - adrp x1, hynix_read_retrial - add x1, x1, :lo12:hynix_read_retrial - str x1, [x0,1224] -.L2537: + cmp w0, 7 + bhi .L2709 + add x21, x21, :lo12:.LANCHOR4 + adrp x0, hynix_read_retrial + add x0, x0, :lo12:hynix_read_retrial + str x0, [x21,1240] +.L2709: add x19, x19, :lo12:.LANCHOR0 ldrb w0, [x19,780] - tbz x0, 2, .L2539 + tbz x0, 2, .L2711 ldr x0, [x19,728] ldrb w0, [x0,19] - cbz w0, .L2539 - add x21, x21, :lo12:.LANCHOR4 + cbz w0, .L2711 + add x23, x23, :lo12:.LANCHOR7 ldrh w1, [x19,2] mov w0, 0 - ldrb w2, [x21,1240] + ldrb w2, [x23,-104] mul w1, w2, w1 bl flash_ddr_para_scan ldrb w0, [x19,672] - cbnz w0, .L2539 + cbnz w0, .L2711 ldr x1, [x19,728] strb w0, [x1,19] bl flash_info_flush -.L2539: +.L2711: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2541 + tbz x0, 12, .L2713 adrp x2, .LANCHOR3 - adrp x0, .LC127 + adrp x0, .LC134 add x2, x2, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC127 - mov w1, 2409 - add x2, x2, 536 + add x0, x0, :lo12:.LC134 + mov w1, 2671 + add x2, x2, 568 bl printk -.L2541: +.L2713: bl nand_flash_print_info mov w22, 0 - b .L2579 -.L2543: + b .L2749 +.L2715: add x0, x20, :lo12:.LANCHOR2 add x0, x0, 8 ldrb w1, [x0,28] cmp w1, 3 - bne .L2518 + bne .L2685 strb wzr, [x0,28] - b .L2518 -.L2579: + b .L2685 +.L2749: mov w0, w22 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -15767,42 +17108,39 @@ ftl_sysblk_dump: sub sp, sp, #144 stp x29, x30, [sp,48] add x29, sp, 48 - stp x25, x26, [sp,112] - uxth w25, w0 + stp x23, x24, [sp,96] + uxth w24, w0 mov w0, 1 stp x19, x20, [sp,64] - stp x23, x24, [sp,96] - stp x27, x28, [sp,128] stp x21, x22, [sp,80] + stp x25, x26, [sp,112] + str x27, [sp,128] + mov w21, 0 bl buf_alloc - ldr x24, [x0,8] - mov w20, 0 - adrp x22, .LC186 - adrp x23, .LC187 - mov x27, x0 - mov w19, w20 - adrp x28, .LANCHOR0 - add x22, x22, :lo12:.LC186 - add x23, x23, :lo12:.LC187 - add x24, x24, 704 -.L2585: - add x3, x28, :lo12:.LANCHOR0 - ldrh w1, [x3,3300] - cmp w1, w19 - bls .L2597 - ldrh w21, [x3,3350] - ldr x1, [x27,8] - ldr x2, [x27,24] - madd w21, w25, w21, w19 + adrp x23, .LC197 + ldr x26, [x0,8] + mov x20, x0 + mov w19, w21 + adrp x27, .LANCHOR0 + add x23, x23, :lo12:.LC197 +.L2756: + add x3, x27, :lo12:.LANCHOR0 + ldrh w0, [x3,3324] + cmp w0, w19 + bls .L2768 + ldrh w22, [x3,3362] + ldr x1, [x20,8] + ldr x2, [x20,24] + madd w22, w24, w22, w19 ldrb w3, [x3,2832] - mov w0, w21 + mov w0, w22 bl ftl_read_ppa_page - mov w26, w0 - ldr x7, [x27,8] - mov w1, w25 - ldr x2, [x27,24] - mov w3, w21 - mov w4, w26 + mov w25, w0 + ldr x7, [x20,8] + mov w1, w24 + ldr x2, [x20,24] + mov w3, w22 + mov w4, w25 ldr w0, [x7,12] str w0, [sp] ldr w0, [x2] @@ -15814,46 +17152,47 @@ ftl_sysblk_dump: ldr w0, [x2,12] mov w2, w19 str w0, [sp,32] - mov x0, x22 + mov x0, x23 ldr w5, [x7] ldr w6, [x7,4] ldr w7, [x7,8] bl printk - mov x0, x23 - mov x1, x24 + cmp w25, 512 + beq .L2761 + cmn w25, #1 + bne .L2757 +.L2761: + mov w21, 1 +.L2757: + add w19, w19, 1 + uxth w19, w19 + b .L2756 +.L2768: + adrp x0, .LC206 + add x1, x26, 704 + add x0, x0, :lo12:.LC206 mov w2, 4 mov w3, 32 bl rknand_print_hex - cmp w26, 512 - beq .L2590 - cmn w26, #1 - bne .L2586 -.L2590: - mov w20, 1 -.L2586: - add w19, w19, 1 - uxth w19, w19 - b .L2585 -.L2597: - mov x0, x27 + mov x0, x20 bl buf_free - cbz w20, .L2589 + cbz w21, .L2760 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1338 - add x1, x1, 552 + mov w2, 1351 + add x1, x1, 584 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2589: +.L2760: sub sp, x29, #48 - mov w0, w20 + mov w0, w21 ldp x19, x20, [sp,64] ldp x21, x22, [sp,80] ldp x23, x24, [sp,96] ldp x25, x26, [sp,112] - ldp x27, x28, [sp,128] + ldr x27, [sp,128] ldp x29, x30, [sp,48] add sp, sp, 144 ret @@ -15863,31 +17202,31 @@ ftl_sysblk_dump: .type dump_ftl_info, %function dump_ftl_info: stp x29, x30, [sp, -32]! - adrp x0, .LC188 + adrp x0, .LC207 add x29, sp, 0 str x19, [sp,16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC188 + add x0, x0, :lo12:.LC207 ldrb w1, [x19,2834] bl printk adrp x3, .LANCHOR4 - adrp x0, .LC189 + adrp x0, .LC208 add x3, x3, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC189 + add x0, x0, :lo12:.LC208 ldrb w1, [x3,1536] ldrb w2, [x3,1537] ldrh w3, [x3,1538] bl printk ldr x2, [x19,2864] - adrp x0, .LC190 - add x0, x0, :lo12:.LC190 + adrp x0, .LC209 + add x0, x0, :lo12:.LC209 ldrh w1, [x2,130] ldrh w2, [x2,140] bl printk ldr x1, [x19,608] - adrp x0, .LC191 - add x0, x0, :lo12:.LC191 + adrp x0, .LC210 + add x0, x0, :lo12:.LC210 add x5, x1, 16 ldrh w1, [x1,16] ldrh w2, [x5,2] @@ -15896,8 +17235,8 @@ dump_ftl_info: ldrh w5, [x5,10] bl printk ldr x1, [x19,608] - adrp x0, .LC192 - add x0, x0, :lo12:.LC192 + adrp x0, .LC211 + add x0, x0, :lo12:.LC211 add x5, x1, 48 ldrh w1, [x1,48] ldrh w2, [x5,2] @@ -15906,8 +17245,8 @@ dump_ftl_info: ldrh w5, [x5,10] bl printk ldr x1, [x19,608] - adrp x0, .LC193 - add x0, x0, :lo12:.LC193 + adrp x0, .LC212 + add x0, x0, :lo12:.LC212 add x5, x1, 80 ldrh w1, [x1,80] ldrh w4, [x5,6] @@ -15915,47 +17254,47 @@ dump_ftl_info: ldrb w3, [x5,5] ldrh w5, [x5,10] bl printk - ldrh w0, [x19,3300] + ldrh w0, [x19,3324] mov w2, 4 - ldrb w3, [x19,3276] - ldr x1, [x19,3872] + ldrb w3, [x19,3300] + ldr x1, [x19,3880] mul w3, w0, w3 - adrp x0, .LC194 - add x0, x0, :lo12:.LC194 + adrp x0, .LC213 + add x0, x0, :lo12:.LC213 lsl w3, w3, 1 bl rknand_print_hex ldr x1, [x19,600] - adrp x0, .LC195 + adrp x0, .LC214 ldrh w3, [x19,576] - add x0, x0, :lo12:.LC195 + add x0, x0, :lo12:.LC214 mov w2, 2 bl rknand_print_hex ldr x3, [x19,2864] - adrp x0, .LC187 - add x0, x0, :lo12:.LC187 + adrp x0, .LC206 + add x0, x0, :lo12:.LC206 mov w2, 4 add x1, x3, 704 ldrh w3, [x3,698] bl rknand_print_hex ldr x1, [x19,584] - adrp x0, .LC196 + adrp x0, .LC215 ldrh w3, [x19,576] - add x0, x0, :lo12:.LC196 + add x0, x0, :lo12:.LC215 mov w2, 4 bl rknand_print_hex - adrp x0, .LC197 - add x1, x19, 3360 - add x0, x0, :lo12:.LC197 + adrp x0, .LC216 + add x1, x19, 3368 + add x0, x0, :lo12:.LC216 mov w2, 2 mov w3, 256 bl rknand_print_hex - ldrh w0, [x19,3300] + ldrh w0, [x19,3324] mov w2, 2 - ldrb w3, [x19,3276] - ldr x1, [x19,3880] + ldrb w3, [x19,3300] + ldr x1, [x19,3888] mul w3, w0, w3 - adrp x0, .LC198 - add x0, x0, :lo12:.LC198 + adrp x0, .LC217 + add x0, x0, :lo12:.LC217 lsl w3, w3, 1 bl rknand_print_hex ldr x19, [sp,16] @@ -15972,8 +17311,8 @@ pm_ppa_update_check: mov w7, 1 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldrh w4, [x5,3340] - ldrb w3, [x5,3338] + ldrh w4, [x5,3264] + ldrb w3, [x5,3266] sub w6, w6, w4 lsr w4, w2, w4 lsl w6, w7, w6 @@ -15986,19 +17325,19 @@ pm_ppa_update_check: ubfx x3, x3, 5, 3 cmp w3, 7 cset w4, eq - cbnz w4, .L2603 + cbnz w4, .L2774 cmp w3, w7 - bne .L2600 -.L2603: + bne .L2771 +.L2774: mov w3, w2 mov w2, w1 mov x1, x0 - adrp x0, .LC199 - add x0, x0, :lo12:.LC199 + adrp x0, .LC218 + add x0, x0, :lo12:.LC218 bl printk bl dump_ftl_info mov w4, -1 -.L2600: +.L2771: mov w0, w4 ldp x29, x30, [sp], 16 ret @@ -16014,65 +17353,65 @@ load_l2p_region: stp x19, x20, [sp,16] cmp w22, 31 uxth w20, w0 - bls .L2606 + bls .L2777 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 mov w2, 31 - add x1, x1, 568 + add x1, x1, 600 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2606: +.L2777: adrp x21, .LANCHOR0 adrp x19, .LANCHOR7 add x21, x21, :lo12:.LANCHOR0 ldr x0, [x21,2864] ldrh w2, [x0,698] cmp w20, w2 - bls .L2607 - adrp x0, .LC200 + bls .L2778 + adrp x0, .LC219 mov w1, w20 - add x0, x0, :lo12:.LC200 + add x0, x0, :lo12:.LC219 add x19, x19, :lo12:.LANCHOR7 bl printk mov x0, 0 - ldrh w2, [x19,-118] + ldrh w2, [x19,-98] mov w1, 255 ldr x0, [x0,8] bl ftl_memset ldr x0, [x21,2864] ldrh w0, [x0,698] cmp w0, w20 - bcs .L2609 + bcs .L2780 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 add x0, x0, :lo12:.LC0 - add x1, x1, 568 + add x1, x1, 600 mov w2, 35 - b .L2613 -.L2607: + b .L2784 +.L2778: add x0, x0, x20, sxtw 2 sbfiz x22, x22, 4, 32 ldr w4, [x0,704] - add x0, x21, 3904 + add x0, x21, 3920 add x23, x0, x22 strh w20, [x0,x22] strh wzr, [x23,2] - cbnz w4, .L2610 - adrp x0, .LC201 + cbnz w4, .L2781 + adrp x0, .LC220 mov w1, w20 mov w2, w4 add x19, x19, :lo12:.LANCHOR7 - add x0, x0, :lo12:.LC201 + add x0, x0, :lo12:.LC220 bl printk ldr x0, [x23,8] mov w1, 255 - ldrh w2, [x19,-118] + ldrh w2, [x19,-98] bl ftl_memset - b .L2609 -.L2610: + b .L2780 +.L2781: add x22, x19, :lo12:.LANCHOR7 ldrb w3, [x21,2832] ldr x1, [x23,8] @@ -16085,47 +17424,47 @@ load_l2p_region: ldr x4, [x29,72] ldr w2, [x0] cmp w2, w20 - beq .L2611 - adrp x0, .LC202 + beq .L2782 + adrp x0, .LC221 mov w1, w20 - add x0, x0, :lo12:.LC202 + add x0, x0, :lo12:.LC221 bl printk ldr x3, [x21,2864] - adrp x0, .LC203 - add x0, x0, :lo12:.LC203 + adrp x0, .LC222 + add x0, x0, :lo12:.LC222 mov w2, 4 add x1, x3, 704 ldrh w3, [x3,698] bl rknand_print_hex ldrb w3, [x21,2832] - adrp x0, .LC204 + adrp x0, .LC223 ldr x1, [x23,8] - add x0, x0, :lo12:.LC204 + add x0, x0, :lo12:.LC223 mov w2, 4 lsl w3, w3, 7 bl rknand_print_hex - adrp x0, .LC205 + adrp x0, .LC224 ldr x1, [x22,-128] - add x0, x0, :lo12:.LC205 + add x0, x0, :lo12:.LC224 mov w2, 4 mov w3, 16 bl rknand_print_hex -.L2611: +.L2782: add x19, x19, :lo12:.LANCHOR7 ldr x0, [x19,-128] ldr w0, [x0] cmp w0, w20 - beq .L2609 + beq .L2780 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 add x0, x0, :lo12:.LC0 - add x1, x1, 568 + add x1, x1, 600 mov w2, 59 -.L2613: +.L2784: bl printk bl dump_stack -.L2609: +.L2780: mov w0, 0 ldr x23, [sp,48] ldp x19, x20, [sp,16] @@ -16149,27 +17488,27 @@ pm_gc: add x19, x19, :lo12:.LANCHOR4 ldr x0, [x20,2864] ldrh w1, [x0,688] - ldrh w0, [x19,1164] + ldrh w0, [x19,1180] sub w0, w0, #1 cmp w1, w0 - blt .L2616 + blt .L2787 bl pm_free_sblk ldr x2, [x20,2864] - ldrh w1, [x19,1164] + ldrh w1, [x19,1180] ldrh w3, [x2,688] sub w1, w1, #1 cmp w3, w1 - blt .L2616 + blt .L2787 add x0, x2, x0, uxth 1 ldrh w21, [x0,416] mov w0, 65535 cmp w21, w0 - bne .L2618 + bne .L2789 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 mov w2, 131 - add x1, x1, 584 + add x1, x1, 616 add x0, x0, :lo12:.LC0 bl printk bl dump_stack @@ -16177,39 +17516,39 @@ pm_gc: ldr x1, [x20,2864] add x0, x1, x0, uxth 1 ldrh w21, [x0,416] -.L2618: +.L2789: bl pm_select_ram_region uxth x20, w0 add x0, x23, :lo12:.LANCHOR0 lsl x1, x20, 4 - add x0, x0, 3904 + add x0, x0, 3920 mov x22, x20 add x19, x0, x1 ldrh w0, [x0,x1] mov w1, 65535 cmp w0, w1 - beq .L2619 + beq .L2790 ldr x1, [x19,8] - cbz x1, .L2619 + cbz x1, .L2790 ldrsh w2, [x19,2] - tbz w2, #31, .L2619 + tbz w2, #31, .L2790 bl pm_write_page ldrh w0, [x19,2] and w0, w0, 32767 strh w0, [x19,2] -.L2619: +.L2790: add x23, x23, :lo12:.LANCHOR0 mov w19, 0 - add x0, x23, 3904 + add x0, x23, 3920 mov w24, 21 mov w25, 1 add x20, x0, x20, lsl 4 -.L2620: +.L2791: ldr x0, [x23,2864] ldrh w1, [x0,698] cmp w1, w19 - bls .L2626 - ldrh w1, [x23,3340] + bls .L2797 + ldrh w1, [x23,3264] add x0, x0, x19, sxtw 2 ldr w0, [x0,704] lsr w0, w0, w1 @@ -16217,10 +17556,10 @@ pm_gc: lsl w1, w25, w1 sub w1, w1, #1 and w1, w0, w1 - ldrb w0, [x23,3338] + ldrb w0, [x23,3266] udiv w1, w1, w0 cmp w21, w1, uxth - bne .L2621 + bne .L2792 mov w1, w22 mov w0, w19 bl load_l2p_region @@ -16229,13 +17568,13 @@ pm_gc: bl pm_write_page mov w0, -1 strh w0, [x20] -.L2621: +.L2792: add w19, w19, 1 uxth w19, w19 - b .L2620 -.L2626: + b .L2791 +.L2797: bl pm_free_sblk -.L2616: +.L2787: mov w0, 0 ldr x25, [sp,64] ldp x19, x20, [sp,16] @@ -16254,7 +17593,7 @@ pm_flush_id: stp x19, x20, [sp,16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x1, x19, 3904 + add x1, x19, 3920 add x20, x1, x0 ldrh w0, [x1,x0] ldr x1, [x20,8] @@ -16262,11 +17601,11 @@ pm_flush_id: ldrh w0, [x20,2] and w0, w0, 32767 strh w0, [x20,2] - ldr w0, [x19,3896] - cbz w0, .L2628 + ldr w0, [x19,3912] + cbz w0, .L2799 bl pm_gc - str wzr, [x19,3896] -.L2628: + str wzr, [x19,3912] +.L2799: mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -16282,17 +17621,17 @@ pm_flush: adrp x20, .LANCHOR0 mov x19, 0 add x20, x20, :lo12:.LANCHOR0 - add x20, x20, 3904 -.L2634: + add x20, x20, 3920 +.L2805: add x1, x20, x19, lsl 4 uxth w0, w19 ldrsh w1, [x1,2] - tbz w1, #31, .L2633 + tbz w1, #31, .L2804 bl pm_flush_id -.L2633: +.L2804: add x19, x19, 1 cmp x19, 32 - bne .L2634 + bne .L2805 mov w0, 0 ldp x19, x20, [sp,16] ldp x29, x30, [sp], 32 @@ -16343,31 +17682,31 @@ pm_init: mov w0, 1 strb w0, [x22,-120] mov w0, 64 - str wzr, [x20,3896] - add x20, x20, 3904 + str wzr, [x20,3912] + add x20, x20, 3920 bl ftl_malloc mov w24, -1 str x0, [x22,-128] add x22, x20, 512 -.L2640: +.L2811: strh w24, [x20] strh wzr, [x20,2] - cbz w23, .L2639 + cbz w23, .L2810 add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2832] lsl w0, w0, 9 bl ftl_malloc str x0, [x20,8] -.L2639: +.L2810: add x20, x20, 16 cmp x20, x22 - bne .L2640 + bne .L2811 add x20, x19, :lo12:.LANCHOR0 add x21, x21, :lo12:.LANCHOR7 mov w4, 4 ldr x1, [x20,2864] ldr x25, [x21,-128] - ldr x23, [x20,3912] + ldr x23, [x20,3928] ldrb w0, [x1,694] mov x3, x25 ldrh w1, [x1,692] @@ -16378,25 +17717,25 @@ pm_init: mov w24, w21 ldrh w2, [x1,696] cmp w2, w21 - bgt .L2641 - adrp x0, .LC206 + bgt .L2812 + adrp x0, .LC225 ldrh w1, [x1,692] mov w3, w21 - add x0, x0, :lo12:.LC206 - adrp x26, .LC207 + add x0, x0, :lo12:.LC225 + adrp x26, .LC226 add w21, w21, 1 bl printk - add x26, x26, :lo12:.LC207 + add x26, x26, :lo12:.LC226 ldr x0, [x20,2864] ldrsh w20, [x0,696] -.L2642: +.L2813: cmp w20, w21 - bge .L2655 + bge .L2826 add x27, x19, :lo12:.LANCHOR0 mov x2, x23 mov x3, x25 ldr x0, [x27,2864] - ldrh w22, [x27,3350] + ldrh w22, [x27,3362] ldrb w4, [x27,2832] ldrh w1, [x0,692] ldrb w0, [x0,694] @@ -16414,21 +17753,21 @@ pm_init: ldr w1, [x25] bl printk cmp w28, 512 - beq .L2643 + beq .L2814 cmn w28, #1 - beq .L2643 + beq .L2814 ldr x1, [x27,2864] ldr w0, [x25] ldrh w2, [x1,698] cmp w0, w2 - bcs .L2643 + bcs .L2814 add x0, x1, x0, uxtw 2 str w22, [x0,704] -.L2643: +.L2814: add w20, w20, 1 sxth w20, w20 - b .L2642 -.L2655: + b .L2813 +.L2826: adrp x0, .LANCHOR5+577 mov w1, 1 add w24, w24, 1 @@ -16437,18 +17776,18 @@ pm_init: ldr x0, [x0,2864] strh w24, [x0,696] bl pm_free_sblk -.L2641: +.L2812: add x19, x19, :lo12:.LANCHOR0 mov w0, -1 - ldr x1, [x19,3912] + ldr x1, [x19,3928] bl pm_write_page - ldr x1, [x19,3912] + ldr x1, [x19,3928] mov w0, -1 bl pm_write_page - ldr x1, [x19,3912] + ldr x1, [x19,3928] mov w0, -1 bl pm_write_page - ldr x1, [x19,3912] + ldr x1, [x19,3928] mov w0, -1 bl pm_write_page bl pm_free_sblk @@ -16480,7 +17819,7 @@ pm_log2phys: mov x19, 0 ldrb w4, [x3,2832] ldr w2, [x3,2840] - add x3, x3, 3904 + add x3, x3, 3920 lsl w20, w4, 7 lsl w24, w4, 7 cmp w0, w2 @@ -16488,87 +17827,87 @@ pm_log2phys: uxth w25, w20 msub w24, w25, w24, w0 uxth x24, w24 - bcc .L2669 - adrp x0, .LC208 + bcc .L2840 + adrp x0, .LC227 mov w1, w5 - add x0, x0, :lo12:.LC208 + add x0, x0, :lo12:.LC227 bl printk mov w0, -1 - cbnz w23, .L2658 + cbnz w23, .L2829 str w0, [x22] - b .L2658 -.L2673: + b .L2829 +.L2844: ldrh w0, [x3] cmp w0, w25 - beq .L2660 -.L2659: + beq .L2831 +.L2830: add w19, w19, 1 add x3, x3, 16 uxth x19, w19 cmp w19, 32 - beq .L2672 -.L2669: + beq .L2843 +.L2840: ldr x0, [x3,8] - cbnz x0, .L2673 - b .L2659 -.L2672: + cbnz x0, .L2844 + b .L2830 +.L2843: bl pm_select_ram_region uxth x19, w0 add x2, x21, :lo12:.LANCHOR0 sbfiz x3, x19, 4, 32 - add x2, x2, 3904 + add x2, x2, 3920 mov w1, w0 add x4, x2, x3 ldrh w3, [x2,x3] mov w2, 65535 cmp w3, w2 - bne .L2674 -.L2664: - adrp x0, .LANCHOR7-116 - strb w19, [x0,#:lo12:.LANCHOR7-116] + bne .L2845 +.L2835: + adrp x0, .LANCHOR7-96 + strb w19, [x0,#:lo12:.LANCHOR7-96] mov w0, w25 bl load_l2p_region -.L2660: - cbnz w23, .L2661 +.L2831: + cbnz w23, .L2832 add x0, x21, :lo12:.LANCHOR0 add x0, x0, x19, lsl 4 - ldr x0, [x0,3912] + ldr x0, [x0,3928] ldr w0, [x0,x24,lsl 2] str w0, [x22] - b .L2662 -.L2661: + b .L2833 +.L2832: add x0, x21, :lo12:.LANCHOR0 ldr w2, [x22] - add x0, x0, 3904 + add x0, x0, 3920 add x0, x0, x19, lsl 4 ldr x1, [x0,8] str w2, [x1,x24,lsl 2] ldrh w1, [x0,2] orr w1, w1, -32768 strh w1, [x0,2] - adrp x0, .LANCHOR4+64 - strb w20, [x0,#:lo12:.LANCHOR4+64] -.L2662: + adrp x0, .LANCHOR4+80 + strb w20, [x0,#:lo12:.LANCHOR4+80] +.L2833: add x21, x21, :lo12:.LANCHOR0 mov w2, 32767 - add x21, x21, 3904 + add x21, x21, 3920 mov w0, 0 add x19, x21, x19, lsl 4 ldrh w1, [x19,2] and w3, w1, 32767 cmp w3, w2 - beq .L2658 + beq .L2829 add w1, w1, 1 strh w1, [x19,2] - b .L2658 -.L2674: + b .L2829 +.L2845: ldrsh w2, [x4,2] - tbz w2, #31, .L2664 + tbz w2, #31, .L2835 str x1, [x29,88] bl pm_flush_id ldr x1, [x29,88] - b .L2664 -.L2658: + b .L2835 +.L2829: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -16584,395 +17923,397 @@ gc_recovery: stp x29, x30, [sp,32] add x29, sp, 32 stp x19, x20, [sp,48] - adrp x20, .LANCHOR0 + adrp x19, .LANCHOR0 stp x23, x24, [sp,80] - add x24, x20, :lo12:.LANCHOR0 + add x24, x19, :lo12:.LANCHOR0 adrp x23, .LANCHOR4 stp x21, x22, [sp,64] stp x25, x26, [sp,96] stp x27, x28, [sp,112] add x0, x23, :lo12:.LANCHOR4 - strb wzr, [x24,3273] - ldr x21, [x24,608] - strb wzr, [x0,1130] - bl gc_init - ldrh w1, [x21,80] + strb wzr, [x24,3297] + ldr x20, [x24,608] + strb wzr, [x0,1146] mov w0, 65535 - str x23, [x29,136] - add x22, x21, 80 + ldrh w1, [x20,80] + add x22, x20, 80 cmp w1, w0 - ldr x0, [x24,608] - beq .L2676 - mov w1, -1 - strh w1, [x0,130] + beq .L2847 + mov w0, -1 + strh w0, [x20,130] mov w0, 1 bl buf_alloc - mov x19, x0 + mov x21, x0 ldrb w0, [x22,9] - ldrh w1, [x24,3350] + ldrh w1, [x24,3362] sub w0, w0, #1 add x0, x22, x0, sxtw 1 ldrh w0, [x0,16] mul w0, w0, w1 - ldrb w1, [x24,3257] + ldrb w1, [x24,3281] str w0, [x29,152] cmp w1, 3 - bne .L2677 - ldrh w1, [x24,3300] + bne .L2848 + ldrh w1, [x24,3324] sub w1, w1, #1 add w0, w1, w0 orr w0, w0, 50331648 - b .L2720 -.L2677: + b .L2891 +.L2848: cmp w1, 2 - bne .L2678 - ldrh w1, [x24,3300] + bne .L2849 + ldrh w1, [x24,3324] add w0, w0, w1, lsl 1 sub w0, w0, #1 orr w0, w0, 33554432 -.L2720: - str w0, [x19,40] -.L2678: - mov x0, x19 +.L2891: + str w0, [x21,40] +.L2849: + mov x0, x21 mov w1, 1 bl sblk_read_page - ldr w0, [x19,52] + ldr w0, [x21,52] cmp w0, 512 - beq .L2679 + beq .L2850 cmn w0, #1 - beq .L2679 - ldr x0, [x19,24] + beq .L2850 + ldr x0, [x21,24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 cmp w1, w0 - beq .L2680 -.L2679: - mov x0, x19 + beq .L2851 +.L2850: + mov x0, x21 bl buf_free - ldr x7, [x19,24] - ldr x6, [x19,8] + ldr x7, [x21,24] + ldr x6, [x21,8] ldr w0, [x7,4] str w0, [sp] ldr w0, [x7,8] str w0, [sp,8] ldr w0, [x7,12] str w0, [sp,16] - adrp x0, .LC209 - add x0, x0, :lo12:.LC209 + adrp x0, .LC228 + add x0, x0, :lo12:.LC228 ldr w3, [x6] ldr w4, [x6,4] ldr w5, [x6,8] - ldr w1, [x19,40] - ldr w2, [x19,52] + ldr w1, [x21,40] + ldr w2, [x21,52] ldr w6, [x6,12] ldr w7, [x7] bl printk - b .L2723 -.L2680: - add x24, x20, :lo12:.LANCHOR0 - ldr x0, [x29,136] - ldr x1, [x19,8] - add x25, x0, :lo12:.LANCHOR4 - ldrb w2, [x24,3276] - ldrh w0, [x24,3274] + b .L2894 +.L2851: + add x24, x19, :lo12:.LANCHOR0 + add x25, x23, :lo12:.LANCHOR4 + ldr x1, [x21,8] + ldrh w0, [x24,3298] + ldrb w2, [x24,3300] mul w2, w0, w2 - ldr x0, [x25,1136] + ldr x0, [x25,1152] lsl w2, w2, 2 bl ftl_memcpy - ldrh w0, [x24,3274] - ldrb w2, [x24,3276] - ldr x1, [x19,8] + ldrh w0, [x24,3298] + ldrb w2, [x24,3300] + ldr x1, [x21,8] mul w2, w0, w2 add x1, x1, x2, sxtw 2 - ldr x0, [x25,1144] + ldr x0, [x25,1160] lsl w2, w2, 2 bl ftl_memcpy - ldrb w26, [x24,3257] - ldrh w25, [x24,3300] + ldrb w26, [x24,3281] + ldrh w25, [x24,3324] cmp w26, 2 - bne .L2682 + bne .L2853 lsl w25, w25, 1 mov w26, 1 -.L2682: - mov w23, 0 - adrp x24, .LC210 - add x0, x24, :lo12:.LC210 - mov w27, w23 - str x0, [x29,112] - b .L2683 -.L2725: - ldr x0, [x0,1144] +.L2853: + mov w27, 0 + adrp x24, .LC229 + add x0, x24, :lo12:.LC229 + mov w28, w27 + str x0, [x29,120] + b .L2854 +.L2896: + ldr x0, [x0,1160] ldr w1, [x0,x12] ldr w0, [x7,8] cmp w1, w0 - bne .L2687 -.L2710: - add w27, w27, 1 + bne .L2858 +.L2881: add w28, w28, 1 -.L2691: - cmp w28, w26 - bhi .L2724 - ldr x0, [x29,128] - add x1, x20, :lo12:.LANCHOR0 + add w9, w9, 1 +.L2862: + cmp w9, w26 + bhi .L2895 + ldr x0, [x29,136] + add x1, x19, :lo12:.LANCHOR0 add x0, x0, 8 - ldrh w2, [x1,3350] - ldrb w1, [x1,3257] + ldrh w2, [x1,3362] + ldrb w1, [x1,3281] ldrh w0, [x22,x0,lsl 1] cmp w1, 3 mul w0, w0, w2 str w0, [x29,152] - bne .L2684 - add w0, w0, w23 - orr w0, w0, w28, lsl 24 -.L2721: - str w0, [x19,40] + bne .L2855 + add w0, w0, w27 + orr w0, w0, w9, lsl 24 +.L2892: + str w0, [x21,40] mov w1, 1 - mov x0, x19 + mov x0, x21 + str x9, [x29,112] bl sblk_read_page - ldr x0, [x29,136] - sbfiz x12, x27, 2, 32 - ldr x7, [x19,24] - add x0, x0, :lo12:.LANCHOR4 + add x0, x23, :lo12:.LANCHOR4 + sbfiz x12, x28, 2, 32 + ldr x7, [x21,24] + ldr x9, [x29,112] + ldr x1, [x0,1152] ldr w6, [x7,4] - ldr x1, [x0,1136] ldr w3, [x1,x12] cmp w3, w6 - beq .L2725 -.L2687: - ldr x0, [x29,136] - str x12, [x29,104] - add x13, x0, :lo12:.LANCHOR4 + beq .L2896 +.L2858: + add x13, x23, :lo12:.LANCHOR4 ldr w0, [x7,12] - str x13, [x29,96] - ldr x4, [x13,1144] + str x9, [x29,96] + str x13, [x29,104] + ldr x4, [x13,1160] str w0, [sp] - ldr x0, [x29,112] + ldr x0, [x29,120] ldr w4, [x4,x12] ldr w5, [x7] - ldr w1, [x19,40] - ldr w2, [x19,52] + ldr w1, [x21,40] + ldr w2, [x21,52] ldr w7, [x7,8] + str x12, [x29,112] bl printk - ldr x13, [x29,96] - ldr x12, [x29,104] - ldr x0, [x13,1136] + ldr x13, [x29,104] + ldr x12, [x29,112] + ldr x9, [x29,96] + ldr x0, [x13,1152] ldr w0, [x0,x12] cmn w0, #1 - beq .L2710 - mov x0, x19 + beq .L2881 + mov x0, x21 bl buf_free -.L2723: - add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x21,80] - mov w28, 0 +.L2894: + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x20,80] + mov w21, 0 ldr x1, [x0,600] strh wzr, [x1,x2,lsl 1] ldr x0, [x0,608] - ldrh w1, [x21,80] + ldrh w1, [x20,80] strh w1, [x0,130] - b .L2681 -.L2690: - add w23, w23, 1 -.L2683: - cmp w23, w25 - beq .L2692 - sub w0, w23, #1 - mov w24, 0 - str w0, [x29,124] -.L2693: - ldrb w0, [x22,9] - cmp w24, w0 - bge .L2690 - sxtw x0, w24 - mov w28, 1 - str x0, [x29,128] - b .L2691 -.L2684: - cmp w1, 2 - bne .L2686 - ldr w1, [x29,124] - add w0, w0, w1 - add w0, w0, w28 - orr w0, w0, 33554432 - b .L2721 -.L2686: - add w0, w0, w23 - b .L2721 -.L2724: - add w24, w24, 1 - b .L2693 -.L2692: - mov x0, x19 - mov w28, 0 - mov w27, w28 - bl buf_free - str w28, [x29,128] - add x0, x20, :lo12:.LANCHOR0 - ldrb w1, [x22,9] - ldrh w3, [x21,80] - ldr x2, [x0,600] - ldrh w0, [x0,3274] - mul w0, w1, w0 - strh w0, [x2,x3,lsl 1] -.L2694: + b .L2852 +.L2861: + add w27, w27, 1 +.L2854: cmp w27, w25 - beq .L2705 + beq .L2863 sub w0, w27, #1 mov w24, 0 - str w0, [x29,104] -.L2706: + str w0, [x29,132] +.L2864: ldrb w0, [x22,9] cmp w24, w0 - bge .L2703 + bge .L2861 sxtw x0, w24 - mov w23, 1 + mov w9, 1 + str x0, [x29,136] + b .L2862 +.L2855: + cmp w1, 2 + bne .L2857 + ldr w1, [x29,132] + add w0, w0, w1 + add w0, w0, w9 + orr w0, w0, 33554432 + b .L2892 +.L2857: + add w0, w0, w27 + b .L2892 +.L2895: + add w24, w24, 1 + b .L2864 +.L2863: + mov x0, x21 + mov w21, 0 + mov w28, w21 + bl buf_free + str w21, [x29,136] + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x22,9] + ldrh w3, [x20,80] + ldr x2, [x0,600] + ldrh w0, [x0,3298] + mul w0, w1, w0 + strh w0, [x2,x3,lsl 1] +.L2865: + cmp w28, w25 + beq .L2876 + sub w0, w28, #1 + mov w24, 0 + str w0, [x29,104] +.L2877: + ldrb w0, [x22,9] + cmp w24, w0 + bge .L2874 + sxtw x0, w24 + mov w27, 1 str x0, [x29,112] -.L2704: - cmp w23, w26 - bhi .L2726 - ldr x1, [x29,136] - ldr w0, [x29,128] - add x1, x1, :lo12:.LANCHOR4 +.L2875: + cmp w27, w26 + bhi .L2897 + add x1, x23, :lo12:.LANCHOR4 + ldr w0, [x29,136] sbfiz x0, x0, 2, 32 - ldr x2, [x1,1136] - ldr w6, [x2,x0] - cmn w6, #1 - beq .L2695 - ldr x1, [x1,1144] - str x6, [x29,96] + ldr x2, [x1,1152] + ldr w5, [x2,x0] + cmn w5, #1 + beq .L2866 + ldr x1, [x1,1160] + str x5, [x29,120] ldr w0, [x1,x0] - str w0, [x29,124] - mov w0, w6 + str w0, [x29,132] + mov w0, w5 bl lpa_hash_get_ppa str w0, [x29,156] cmn w0, #1 - ldr x6, [x29,96] - bne .L2696 - mov w0, w6 + ldr x5, [x29,120] + bne .L2867 + mov w0, w5 add x1, x29, 156 mov w2, 0 bl pm_log2phys - ldr x6, [x29,96] -.L2696: + ldr x5, [x29,120] +.L2867: ldr x0, [x29,112] add x0, x0, 8 ldrh w1, [x22,x0,lsl 1] - add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x0,3350] - ldrb w0, [x0,3257] + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x0,3362] + ldrb w0, [x0,3281] cmp w0, 3 mul w1, w1, w2 - bne .L2697 - add w1, w1, w27 - orr w1, w1, w23, lsl 24 - b .L2722 -.L2697: + bne .L2868 + add w1, w1, w28 + orr w1, w1, w27, lsl 24 + b .L2893 +.L2868: cmp w0, 2 - bne .L2699 + bne .L2870 ldr w0, [x29,104] add w1, w1, w0 - add w1, w1, w23 - orr w1, w1, 33554432 - b .L2722 -.L2699: add w1, w1, w27 -.L2722: - add x0, x20, :lo12:.LANCHOR0 - ldr w2, [x29,124] + orr w1, w1, 33554432 + b .L2893 +.L2870: + add w1, w1, w28 +.L2893: + add x0, x19, :lo12:.LANCHOR0 str w1, [x29,152] - ldrh w1, [x0,3340] - lsr w19, w2, w1 - mov w2, 21 - sub w1, w2, w1 - mov w2, 1 - lsl w1, w2, w1 + ldr w2, [x29,132] + mov w3, 21 + ldrh w1, [x0,3264] + ldrb w0, [x0,3266] + lsr w2, w2, w1 + sub w1, w3, w1 + mov w3, 1 + lsl w1, w3, w1 sub w1, w1, #1 - and w1, w19, w1 - ldrb w19, [x0,3338] + and w1, w2, w1 + udiv w1, w1, w0 + uxth w0, w1 + ldr w1, [x29,132] + str w0, [x29,120] ldr w0, [x29,156] - udiv w19, w1, w19 - ldr w1, [x29,124] cmp w0, w1 - uxth x19, w19 - bne .L2700 - mov w0, w6 + bne .L2871 + mov w0, w5 add x1, x29, 152 - add w28, w28, 1 + mov w2, w3 + add w21, w21, 1 bl pm_log2phys - mov w0, w19 + ldrh w0, [x29,120] bl ftl_vpn_decrement - b .L2701 -.L2700: + b .L2872 +.L2871: ldr w1, [x29,152] cmp w0, w1 - csinc w28, w28, w28, ne -.L2701: - ldr w0, [x29,128] - add x1, x20, :lo12:.LANCHOR0 + csinc w21, w21, w21, ne +.L2872: + ldr w0, [x29,136] + add x2, x19, :lo12:.LANCHOR0 add w0, w0, 1 - str w0, [x29,128] - ldr x0, [x1,584] - add x0, x0, x19, lsl 2 - ldrb w0, [x0,2] - ands w0, w0, 224 - bne .L2695 - lsl x19, x19, 1 - ldr x1, [x1,600] - ldrh w2, [x1,x19] - cbz w2, .L2695 - strh w0, [x1,x19] -.L2695: - add w23, w23, 1 - b .L2704 -.L2726: - add w24, w24, 1 - b .L2706 -.L2703: + str w0, [x29,136] + ldr w0, [x29,120] + ldr x1, [x2,584] + add x1, x1, x0, lsl 2 + ldrb w1, [x1,2] + ands w1, w1, 224 + bne .L2866 + lsl x0, x0, 1 + ldr x2, [x2,600] + ldrh w5, [x2,x0] + cbz w5, .L2866 + strh w1, [x2,x0] +.L2866: add w27, w27, 1 - b .L2694 -.L2705: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x21,80] + b .L2875 +.L2897: + add w24, w24, 1 + b .L2877 +.L2874: + add w28, w28, 1 + b .L2865 +.L2876: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x20,80] ldr x0, [x0,600] - strh w28, [x0,x1,lsl 1] - ldrh w0, [x21,80] + strh w21, [x0,x1,lsl 1] + ldrh w0, [x20,80] bl zftl_insert_data_list -.L2681: - ldrh w1, [x21,80] - adrp x0, .LC211 - mov w2, w28 - add x0, x0, :lo12:.LC211 +.L2852: + ldrh w0, [x20,80] + bl ftl_dump_write_open_sblk + ldrh w1, [x20,80] + adrp x0, .LC230 + mov w2, w21 + add x0, x0, :lo12:.LC230 bl printk mov w0, -1 - strh w0, [x21,80] + strh w0, [x20,80] bl pm_flush bl ftl_ext_info_flush - add x0, x20, :lo12:.LANCHOR0 + add x0, x19, :lo12:.LANCHOR0 mov w1, 65535 ldr x0, [x0,608] ldrh w0, [x0,130] cmp w0, w1 - beq .L2707 + beq .L2878 bl ftl_free_sblk -.L2707: - add x20, x20, :lo12:.LANCHOR0 +.L2878: + add x19, x19, :lo12:.LANCHOR0 mov w0, -1 - ldr x1, [x20,2864] + ldr x1, [x19,2864] strh w0, [x1,126] - ldr x1, [x20,608] + ldr x1, [x19,608] strh w0, [x1,130] mov w0, 0 bl ftl_info_flush - b .L2675 -.L2676: - ldrh w0, [x0,130] + b .L2846 +.L2847: + ldrh w0, [x20,130] cmp w0, w1 - beq .L2675 + beq .L2846 ldr x1, [x24,2864] ldrh w1, [x1,126] cmp w1, w0 - bne .L2709 + bne .L2880 bl pm_flush ldr x0, [x24,608] ldrh w0, [x0,130] @@ -16982,12 +18323,12 @@ gc_recovery: strh w1, [x0,126] mov w0, 0 bl ftl_info_flush -.L2709: - add x20, x20, :lo12:.LANCHOR0 +.L2880: + add x19, x19, :lo12:.LANCHOR0 mov w1, -1 - ldr x0, [x20,608] + ldr x0, [x19,608] strh w1, [x0,130] -.L2675: +.L2846: sub sp, x29, #32 ldp x19, x20, [sp,48] ldp x21, x22, [sp,64] @@ -17015,24 +18356,24 @@ zftl_init: stp x23, x24, [sp,48] add x23, x21, :lo12:.LANCHOR7 strb w0, [x20,2888] - strb w0, [x20,3893] - strb w0, [x1,1266] + strb w0, [x20,3907] + strb w0, [x1,1265] mov w0, -1 adrp x1, .LC2 - str w0, [x23,-112] + str w0, [x23,-92] adrp x0, .LC1 add x1, x1, :lo12:.LC2 add x0, x0, :lo12:.LC1 strb wzr, [x20,2856] - strb wzr, [x20,3894] + strb wzr, [x20,3908] strb wzr, [x20,2857] bl printk adrp x11, .LANCHOR2 ldrb w6, [x20,633] add x1, x11, :lo12:.LANCHOR2 - strb w6, [x20,3352] + strb w6, [x20,3364] ldrh w4, [x20,2] - strh w4, [x20,3350] + strh w4, [x20,3362] ldrb w2, [x1,21] ldrb w8, [x1,20] ldrh w3, [x1,18] @@ -17041,42 +18382,42 @@ zftl_init: ldrh w7, [x1,22] mov w1, 0 sdiv w9, w3, w8 - strb w2, [x20,3338] - strb w8, [x20,3257] + strb w2, [x20,3266] + strb w8, [x20,3281] uxtb w6, w6 strb w0, [x20,2832] ubfiz w10, w0, 9, 7 - strh w3, [x20,3274] + strh w3, [x20,3298] mov w2, 1 - strh w9, [x20,3300] - strb w6, [x20,3276] + strh w9, [x20,3324] + strb w6, [x20,3300] strh w7, [x20,576] mov x20, x11 - strh w10, [x23,-118] -.L2728: + strh w10, [x23,-98] +.L2899: cmp w2, w4 - bhi .L2794 + bhi .L2965 add w1, w1, 1 lsl w2, w2, 1 uxth w1, w1 - b .L2728 -.L2794: + b .L2899 +.L2965: mul w3, w0, w3 add x2, x19, :lo12:.LANCHOR0 sub w1, w1, #1 mul w5, w3, w7 - strh w1, [x2,3340] + strh w1, [x2,3264] mov w1, 1 lsr w4, w5, 21 mov w2, 0 -.L2730: +.L2901: cmp w1, w4 - bhi .L2795 + bhi .L2966 add w2, w2, 1 lsl w1, w1, 1 uxth w2, w2 - b .L2730 -.L2795: + b .L2901 +.L2966: mov w1, 57344 mov w4, 1 movk w1, 0x1c, lsl 16 @@ -17090,7 +18431,7 @@ zftl_init: mul w1, w1, w2 mul w9, w9, w6 add w5, w1, 24576 - str w5, [x11,-108] + str w5, [x11,-88] mul w3, w3, w6 udiv w2, w5, w0 sub w0, w10, #1 @@ -17101,126 +18442,126 @@ zftl_init: add x2, x22, :lo12:.LANCHOR4 udiv w5, w5, w3 add w5, w5, 8 - strh w5, [x4,3308] + strh w5, [x4,3332] udiv w0, w0, w10 - strh w0, [x11,-104] + strh w0, [x11,-84] ubfiz w0, w0, 4, 16 sdiv w0, w0, w9 - strh w0, [x2,1164] + strh w0, [x2,1180] add w0, w7, w7, lsl 1 asr w0, w0, 2 - strh w0, [x4,3344] + strh w0, [x4,3902] lsr w0, w7, 4 - strh w0, [x4,3306] + strh w0, [x4,3330] cmp w0, 79 - bhi .L2732 + bhi .L2903 mov w0, 80 - strh w0, [x4,3306] -.L2732: + strh w0, [x4,3330] +.L2903: add x0, x19, :lo12:.LANCHOR0 mov w2, 2000 mov w3, 256 cmp w8, 2 - strh w2, [x0,3346] + strh w2, [x0,3904] mov w2, 50 - strh w2, [x0,3342] + strh w2, [x0,3900] add x2, x22, :lo12:.LANCHOR4 - strh w3, [x2,1160] + strh w3, [x2,1176] mov w3, 48 - strh w3, [x2,1162] + strh w3, [x2,1178] mov w2, 32 strh w2, [x0,592] - beq .L2733 - ldrb w0, [x0,3272] - cbz w0, .L2734 -.L2733: + beq .L2904 + ldrb w0, [x0,3296] + cbz w0, .L2905 +.L2904: add x0, x19, :lo12:.LANCHOR0 mov w2, 150 mov w3, 64 - strh w2, [x0,3342] + strh w2, [x0,3900] add x2, x22, :lo12:.LANCHOR4 - strh w3, [x2,1162] + strh w3, [x2,1178] mov w3, 12 strh w3, [x0,592] ldrb w3, [x19,#:lo12:.LANCHOR0] - cbnz w3, .L2734 + cbnz w3, .L2905 mov w3, 4 strh w3, [x0,592] mov w3, 600 - strh w3, [x0,3346] + strh w3, [x0,3904] mov w0, 128 - strh w0, [x2,1160] -.L2734: + strh w0, [x2,1176] +.L2905: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2736 - adrp x0, .LC212 - add x0, x0, :lo12:.LC212 + tbz x0, 12, .L2907 + adrp x0, .LC231 + add x0, x0, :lo12:.LC231 bl printk -.L2736: +.L2907: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2737 + tbz x0, 12, .L2908 add x1, x19, :lo12:.LANCHOR0 - adrp x0, .LC213 - add x0, x0, :lo12:.LC213 + adrp x0, .LC232 + add x0, x0, :lo12:.LC232 ldr w1, [x1,2836] bl printk -.L2737: +.L2908: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2738 + tbz x0, 12, .L2909 add x1, x19, :lo12:.LANCHOR0 - adrp x0, .LC214 - add x0, x0, :lo12:.LC214 + adrp x0, .LC233 + add x0, x0, :lo12:.LC233 ldr w1, [x1,2840] bl printk -.L2738: +.L2909: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2739 + tbz x0, 12, .L2910 add x1, x21, :lo12:.LANCHOR7 - adrp x0, .LC215 - add x0, x0, :lo12:.LC215 - ldr w1, [x1,-108] + adrp x0, .LC234 + add x0, x0, :lo12:.LC234 + ldr w1, [x1,-88] bl printk -.L2739: +.L2910: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2740 + tbz x0, 12, .L2911 add x1, x21, :lo12:.LANCHOR7 - adrp x0, .LC216 - add x0, x0, :lo12:.LC216 - ldrh w1, [x1,-104] + adrp x0, .LC235 + add x0, x0, :lo12:.LC235 + ldrh w1, [x1,-84] bl printk -.L2740: +.L2911: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2741 + tbz x0, 12, .L2912 add x1, x21, :lo12:.LANCHOR7 - adrp x0, .LC217 - add x0, x0, :lo12:.LC217 - ldrh w1, [x1,-118] + adrp x0, .LC236 + add x0, x0, :lo12:.LC236 + ldrh w1, [x1,-98] bl printk -.L2741: +.L2912: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2742 + tbz x0, 12, .L2913 add x22, x22, :lo12:.LANCHOR4 - adrp x0, .LC218 - add x0, x0, :lo12:.LC218 - ldrh w1, [x22,1164] + adrp x0, .LC237 + add x0, x0, :lo12:.LC237 + ldrh w1, [x22,1180] bl printk -.L2742: +.L2913: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2743 + tbz x0, 12, .L2914 add x1, x19, :lo12:.LANCHOR0 - adrp x0, .LC219 - add x0, x0, :lo12:.LC219 - ldrh w1, [x1,3306] + adrp x0, .LC238 + add x0, x0, :lo12:.LC238 + ldrh w1, [x1,3330] bl printk -.L2743: +.L2914: ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2744 + tbz x0, 12, .L2915 add x1, x19, :lo12:.LANCHOR0 - adrp x0, .LC220 - add x0, x0, :lo12:.LC220 - ldrh w1, [x1,3308] + adrp x0, .LC239 + add x0, x0, :lo12:.LC239 + ldrh w1, [x1,3332] bl printk -.L2744: +.L2915: add x22, x19, :lo12:.LANCHOR0 bl buf_init mov w0, 6 @@ -17229,17 +18570,17 @@ zftl_init: mul w0, w1, w0 bl ftl_malloc str x0, [x22,528] - ldrb w1, [x22,3276] - ldrh w0, [x22,3300] + ldrb w1, [x22,3300] + ldrh w0, [x22,3324] mul w0, w0, w1 lsl w0, w0, 2 bl ftl_malloc - str x0, [x22,3880] - ldrb w1, [x22,3276] + str x0, [x22,3888] + ldrb w1, [x22,3300] add x2, x23, :lo12:.LANCHOR5 - ldrh w0, [x22,3300] + ldrh w0, [x22,3324] add x2, x2, 640 - str x2, [x22,3872] + str x2, [x22,3880] mul w1, w0, w1 ldrh w0, [x22,576] lsl w1, w1, 1 @@ -17249,17 +18590,17 @@ zftl_init: ldr w0, [x20,#:lo12:.LANCHOR2] add x1, x2, x1, sxtw 2 str x1, [x22,608] - tbz x0, 12, .L2745 - adrp x0, .LC221 - add x0, x0, :lo12:.LC221 + tbz x0, 12, .L2916 + adrp x0, .LC240 + add x0, x0, :lo12:.LC240 bl printk -.L2745: +.L2916: add x2, x19, :lo12:.LANCHOR0 add x3, x21, :lo12:.LANCHOR7 - ldrh w0, [x2,3300] - ldrb w22, [x2,3276] + ldrh w0, [x2,3324] + ldrb w22, [x2,3300] ldrh w1, [x2,576] - ldrh w24, [x3,-104] + ldrh w24, [x3,-84] mul w22, w0, w22 ldr w0, [x20,#:lo12:.LANCHOR2] lsl w24, w24, 2 @@ -17268,32 +18609,33 @@ zftl_init: add w24, w24, 704 lsl w22, w22, 1 add w22, w22, 632 - tbz x0, 12, .L2746 - adrp x0, .LC222 - ldrh w3, [x3,-118] - add x0, x0, :lo12:.LC222 + tbz x0, 12, .L2917 + adrp x0, .LC241 + ldrh w3, [x3,-98] + add x0, x0, :lo12:.LC241 mov w1, w22 mov w2, w24 bl printk -.L2746: +.L2917: add x21, x21, :lo12:.LANCHOR7 - ldrh w0, [x21,-118] + ldrh w0, [x21,-98] cmp w22, w0 - bhi .L2748 + bhi .L2919 cmp w24, w0 - bls .L2747 -.L2748: -.L2749: - b .L2749 -.L2747: + bls .L2918 +.L2919: +.L2920: + b .L2920 +.L2918: bl sblk_init bl ftl_info_blk_init cmn w0, #1 - beq .L2750 + beq .L2921 bl ftl_ext_info_init add x19, x19, :lo12:.LANCHOR0 - mov w0, 1 + bl gc_init add x23, x23, :lo12:.LANCHOR5 + mov w0, 1 bl pm_init bl lpa_rebuild_hash ldr x0, [x19,608] @@ -17322,18 +18664,18 @@ zftl_init: mov w0, 1 bl ftl_total_vpn_update ldrb w0, [x23,577] - cbz w0, .L2751 + cbz w0, .L2922 ldr x1, [x19,2864] ldr w0, [x1,68] add w0, w0, 1 str w0, [x1,68] -.L2751: +.L2922: bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush bl print_ftl_debug_info mov w0, 0 -.L2750: +.L2921: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -17347,41 +18689,41 @@ rk_ftl_init: stp x29, x30, [sp, -48]! adrp x0, jiffies add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR4 - ldr x0, [x0,#:lo12:jiffies] - add x19, x20, :lo12:.LANCHOR4 stp x21, x22, [sp,32] - adrp x21, .LANCHOR7 - add x21, x21, :lo12:.LANCHOR7 - str x0, [x19,1168] + adrp x21, .LANCHOR4 + ldr x0, [x0,#:lo12:jiffies] + stp x19, x20, [sp,16] + add x19, x21, :lo12:.LANCHOR4 + adrp x20, .LANCHOR7 + add x20, x20, :lo12:.LANCHOR7 + str x0, [x19,1184] mov w0, 136 - strb wzr, [x21,-102] + strb wzr, [x20,-82] bl ftl_malloc - str x0, [x19,1176] - cbnz x0, .L2797 -.L2799: + str x0, [x19,1192] + cbnz x0, .L2968 +.L2970: mov w0, -1 - b .L2798 -.L2797: + b .L2969 +.L2968: mov w0, 2048 bl ftl_malloc - str x0, [x21,-96] - mov x1, x21 - add x0, x19, 1184 - str xzr, [x19,1184] - str xzr, [x1,-88]! + str x0, [x20,-80] + mov x1, x20 + add x0, x19, 1200 + str xzr, [x19,1200] + str xzr, [x1,-72]! bl rknand_get_reg_addr - ldr x0, [x19,1184] - cbz x0, .L2799 + ldr x0, [x19,1200] + cbz x0, .L2970 bl rk_nandc_irq_init mov w1, 0 - ldr x0, [x21,-96] + ldr x0, [x20,-80] mov w2, w1 mov w3, 2048 bl flash_sram_load_store bl rknand_flash_cs_init - ldr x0, [x19,1176] + ldr x0, [x19,1192] adrp x1, zftl_deinit add x1, x1, :lo12:zftl_deinit str x1, [x0,80] @@ -17430,18 +18772,18 @@ rk_ftl_init: adrp x1, zftl_discard add x1, x1, :lo12:zftl_discard str x1, [x0,56] - ldr x0, [x19,1184] + ldr x0, [x19,1200] bl nand_flash_init mov w22, w0 - cbnz w0, .L2800 + cbnz w0, .L2971 bl zftl_init mov w19, w0 bl zftl_proc_debug_init mov w0, 1 - strb w0, [x21,-102] - b .L2801 -.L2800: - ldr x1, [x19,1176] + strb w0, [x20,-82] + b .L2972 +.L2971: + ldr x1, [x19,1192] adrp x2, ftl_read_flash_info add x2, x2, :lo12:ftl_read_flash_info adrp x0, ftl_deinit @@ -17488,76 +18830,76 @@ rk_ftl_init: str x0, [x1,72] str x2, [x1,104] adrp x2, ftl_discard - ldr x0, [x19,1184] + ldr x0, [x19,1200] add x2, x2, :lo12:ftl_discard str x2, [x1,56] bl FlashInit mov w19, w0 cmn w22, #2 adrp x22, .LANCHOR2 - bne .L2802 - add x21, x22, :lo12:.LANCHOR2 + bne .L2973 + add x20, x22, :lo12:.LANCHOR2 adrp x1, gNandParaInfo - add x21, x21, 8 + add x20, x20, 8 add x1, x1, :lo12:gNandParaInfo mov w2, 32 - mov x0, x21 + mov x0, x20 bl ftl_memcpy - ldrb w0, [x21,18] + ldrb w0, [x20,18] bl flash_lsb_page_tbl_build - ldrh w0, [x21,10] - strh w0, [x21,26] -.L2802: + ldrh w0, [x20,10] + strh w0, [x20,26] +.L2973: adrp x0, g_nandc_version_data ldr w1, [x0,#:lo12:g_nandc_version_data] mov w0, 12336 movk w0, 0x5638, lsl 16 cmp w1, w0 - adrp x1, .LANCHOR0 - bne .L2803 - adrp x0, gFlashSlcMode - ldrb w0, [x0,#:lo12:gFlashSlcMode] - cbnz w0, .L2804 -.L2803: - add x0, x20, :lo12:.LANCHOR4 - strb wzr, [x1,#:lo12:.LANCHOR0] - strb wzr, [x0,1264] -.L2804: + adrp x0, .LANCHOR0 + bne .L2974 + adrp x1, gFlashSlcMode + ldrb w1, [x1,#:lo12:gFlashSlcMode] + cbnz w1, .L2975 +.L2974: + add x1, x0, :lo12:.LANCHOR0 + strb wzr, [x0,#:lo12:.LANCHOR0] + strb wzr, [x1,634] +.L2975: adrp x2, gNandFlashIDBEccBits - add x0, x1, :lo12:.LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR2 - add x20, x20, :lo12:.LANCHOR4 + add x21, x21, :lo12:.LANCHOR4 ldrb w2, [x2,#:lo12:gNandFlashIDBEccBits] - strb w2, [x0,632] + strb w2, [x1,632] adrp x2, gNandFlashEccBits ldrh w3, [x22,18] - str xzr, [x20,1224] + str xzr, [x21,1240] ldrb w2, [x2,#:lo12:gNandFlashEccBits] - strb w2, [x0,724] + strb w2, [x1,724] mov w2, 1 - mov w0, 0 -.L2805: + mov w1, 0 +.L2976: cmp w2, w3 - bhi .L2810 - add w0, w0, 1 + bhi .L2981 + add w1, w1, 1 lsl w2, w2, 1 - uxth w0, w0 - b .L2805 -.L2810: - add x1, x1, :lo12:.LANCHOR0 - sub w0, w0, #1 - strb wzr, [x1,672] - strh w0, [x1,3340] - cbnz w19, .L2801 + uxth w1, w1 + b .L2976 +.L2981: + add x0, x0, :lo12:.LANCHOR0 + sub w1, w1, #1 + strb wzr, [x0,672] + strh w1, [x0,3264] + cbnz w19, .L2972 bl FtlInit mov w19, w0 -.L2801: - adrp x0, .LC223 +.L2972: + adrp x0, .LC242 mov w1, w19 - add x0, x0, :lo12:.LC223 + add x0, x0, :lo12:.LC242 bl printk mov w0, w19 -.L2798: +.L2969: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -17578,19 +18920,19 @@ gc_update_l2p_map_new: stp x27, x28, [sp,80] adrp x22, .LANCHOR2 ldr x20, [x0,608] - ldrh w24, [x0,3274] + ldrh w24, [x0,3298] add x0, x20, 80 str x0, [x29,128] ldrb w0, [x0,9] mul w24, w24, w0 bl timer_get_time ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 8, .L2812 - adrp x0, .LC224 + tbz x0, 8, .L2983 + adrp x0, .LC243 ldrh w1, [x20,80] - add x0, x0, :lo12:.LC224 + add x0, x0, :lo12:.LC243 bl printk -.L2812: +.L2983: add x0, x19, :lo12:.LANCHOR0 ldrh w1, [x20,80] sub w2, w24, #1 @@ -17599,21 +18941,21 @@ gc_update_l2p_map_new: adrp x27, .LANCHOR4 ldr x0, [x0,600] strh w2, [x0,x1,lsl 1] - adrp x0, .LC226 - add x0, x0, :lo12:.LC226 + adrp x0, .LC245 + add x0, x0, :lo12:.LC245 str x0, [x29,120] - adrp x0, .LC225 - add x0, x0, :lo12:.LC225 + adrp x0, .LC244 + add x0, x0, :lo12:.LC244 str x0, [x29,112] -.L2813: +.L2984: cmp w23, w24 - beq .L2845 + beq .L3016 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldr x0, [x0,1136] + ldr x0, [x0,1152] ldr w2, [x0,w23,sxtw 2] cmn w2, #1 - beq .L2814 + beq .L2985 add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2832] lsl w0, w0, 7 @@ -17621,28 +18963,28 @@ gc_update_l2p_map_new: and w0, w0, 65535 str w0, [x29,140] ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 8, .L2815 + tbz x0, 8, .L2986 ldr x0, [x29,112] mov w3, w23 ldr w1, [x29,140] bl printk -.L2815: +.L2986: mov w25, w23 -.L2821: +.L2992: add x1, x27, :lo12:.LANCHOR4 sbfiz x26, x25, 2, 32 - ldr x0, [x1,1136] + ldr x0, [x1,1152] ldr w4, [x0,x26] cmn w4, #1 - beq .L2816 + beq .L2987 add x0, x19, :lo12:.LANCHOR0 ldr w2, [x29,140] ldrb w0, [x0,2832] lsl w0, w0, 7 udiv w0, w4, w0 cmp w2, w0, uxth - bne .L2816 - ldr x0, [x1,1144] + bne .L2987 + ldr x0, [x1,1160] str x4, [x29,104] ldr w28, [x0,x26] mov w0, w4 @@ -17650,90 +18992,90 @@ gc_update_l2p_map_new: str w0, [x29,156] cmn w0, #1 ldr x4, [x29,104] - bne .L2817 + bne .L2988 mov w0, w4 add x1, x29, 156 mov w2, 0 bl pm_log2phys ldr x4, [x29,104] -.L2817: +.L2988: ldr w3, [x29,156] cmp w3, w28 - bne .L2818 + bne .L2989 add x0, x27, :lo12:.LANCHOR4 add x1, x29, 152 mov w2, 1 add w21, w21, 1 - ldr x0, [x0,1152] + ldr x0, [x0,1168] ldr w0, [x0,x26] str w0, [x29,152] mov w0, w4 bl pm_log2phys add x2, x19, :lo12:.LANCHOR0 mov w0, 21 - ldrh w1, [x2,3340] + ldrh w1, [x2,3264] sub w3, w0, w1 mov w0, 1 lsl w0, w0, w3 lsr w28, w28, w1 sub w0, w0, #1 and w28, w0, w28 - ldrb w0, [x2,3338] + ldrb w0, [x2,3266] udiv w0, w28, w0 - b .L2844 -.L2818: + b .L3015 +.L2989: ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 8, .L2820 + tbz x0, 8, .L2991 ldr x0, [x29,120] mov w1, w4 mov w2, w28 bl printk -.L2820: +.L2991: ldr x0, [x29,128] ldrh w0, [x0] -.L2844: +.L3015: bl ftl_vpn_decrement add x0, x27, :lo12:.LANCHOR4 mov w1, -1 - ldr x0, [x0,1136] + ldr x0, [x0,1152] str w1, [x0,x26] bl timer_get_time -.L2816: +.L2987: add w25, w25, 1 cmp w25, w24 - bne .L2821 -.L2814: + bne .L2992 +.L2985: add w23, w23, 1 - b .L2813 -.L2845: + b .L2984 +.L3016: ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 8, .L2823 + tbz x0, 8, .L2994 add x0, x19, :lo12:.LANCHOR0 ldrh w3, [x20,80] ldr x1, [x0,608] ldr x2, [x0,600] - adrp x0, .LC227 - add x0, x0, :lo12:.LC227 + adrp x0, .LC246 + add x0, x0, :lo12:.LC246 ldrh w1, [x1,80] ldrh w2, [x2,x3,lsl 1] mov w3, w21 bl printk -.L2823: +.L2994: add x0, x19, :lo12:.LANCHOR0 ldrh w1, [x20,80] ldr x0, [x0,600] ldrh w0, [x0,x1,lsl 1] cmp w0, w21 - beq .L2824 + beq .L2995 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 489 - add x1, x1, 592 + mov w2, 616 + add x1, x1, 624 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2824: +.L2995: add x19, x19, :lo12:.LANCHOR0 ldrh w1, [x20,80] ldr x0, [x19,600] @@ -17757,129 +19099,131 @@ gc_scan_src_blk_one_page: add x29, sp, 0 stp x19, x20, [sp,16] adrp x19, .LANCHOR0 + str x23, [sp,48] add x2, x19, :lo12:.LANCHOR0 add x1, x2, 2896 stp x21, x22, [sp,32] - stp x23, x24, [sp,48] ldrb w0, [x1,4] add x3, x1, x0, sxtw 1 - ldrb w6, [x2,3276] + ldrb w6, [x2,3300] ldrh w22, [x3,40] mov w3, 0 ldrh w2, [x1,2] mov w4, w3 -.L2847: +.L3018: cmp w22, w5 - bne .L2873 + bne .L3044 add w0, w0, 1 uxtb w0, w0 cmp w0, w6 - bne .L2848 + bne .L3019 add w2, w2, 1 mov w0, 0 mov w4, 1 uxth w2, w2 -.L2848: +.L3019: add x3, x1, x0, sxtw 1 ldrh w22, [x3,40] mov w3, 1 - b .L2847 -.L2873: - cbz w4, .L2850 + b .L3018 +.L3044: + cbz w4, .L3021 add x1, x19, :lo12:.LANCHOR0 strh w2, [x1,2898] -.L2850: - cbz w3, .L2851 +.L3021: + cbz w3, .L3022 add x1, x19, :lo12:.LANCHOR0 strb w0, [x1,2900] -.L2851: +.L3022: mov w0, 1 mov w23, 1 add x19, x19, :lo12:.LANCHOR0 bl buf_alloc mov x21, x0 -.L2852: +.L3023: add x20, x19, 2896 ldrb w1, [x20,6] cmp w23, w1 - bgt .L2874 - ldrh w0, [x19,3350] + bgt .L3045 + ldrh w0, [x19,3362] cmp w1, 3 mul w0, w22, w0 - bne .L2853 + bne .L3024 ldrh w1, [x20,2] add w0, w0, w1 orr w0, w0, w23, lsl 24 - b .L2872 -.L2853: + b .L3043 +.L3024: cmp w1, 2 ldrh w1, [x20,2] - bne .L2855 + bne .L3026 add w0, w0, w1, lsl 1 - ldrb w1, [x19,3257] + ldrb w1, [x19,3281] sub w0, w0, #1 add w0, w0, w23 orr w0, w0, w1, lsl 24 - b .L2872 -.L2855: + b .L3043 +.L3026: add w0, w0, w1 -.L2872: +.L3043: str w0, [x21,40] mov w1, 1 mov x0, x21 - ldr w24, [x21,40] bl sblk_read_page ldr w0, [x21,52] cmp w0, 512 - beq .L2858 + beq .L3029 cmn w0, #1 - beq .L2858 + beq .L3029 ldr x0, [x21,24] ldr w20, [x0,4] mov w0, w20 bl lpa_hash_get_ppa str w0, [x29,76] cmn w0, #1 - bne .L2859 + bne .L3030 + ldr w0, [x19,2840] + cmp w20, w0 + bcs .L3030 mov w0, w20 add x1, x29, 76 mov w2, 0 bl pm_log2phys -.L2859: +.L3030: ldr w1, [x21,40] ldr w0, [x29,76] cmp w1, w0 - bne .L2858 - ldrh w2, [x19,2920] - ldr x1, [x19,3248] - str w24, [x1,x2,lsl 2] + bne .L3029 + ldrh w3, [x19,2920] + ldr x2, [x19,3272] + str w1, [x2,x3,lsl 2] ldrh w1, [x19,2920] add w1, w1, 1 strh w1, [x19,2920] -.L2858: +.L3029: ldrh w0, [x19,2922] add w23, w23, 1 add w0, w0, 1 strh w0, [x19,2922] - b .L2852 -.L2874: + b .L3023 +.L3045: mov x0, x21 bl buf_free ldrb w0, [x20,4] - ldrb w1, [x19,3276] + ldrb w1, [x19,3300] add w0, w0, 1 uxtb w0, w0 strb w0, [x20,4] cmp w1, w0 - bne .L2846 + bne .L3017 ldrh w0, [x20,2] strb wzr, [x20,4] add w0, w0, 1 strh w0, [x20,2] -.L2846: +.L3017: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldr x23, [sp,48] ldp x29, x30, [sp], 80 ret .size gc_scan_src_blk_one_page, .-gc_scan_src_blk_one_page @@ -17898,32 +19242,32 @@ gc_scan_src_blk: ldrh w1, [x0,2896] mov w0, 65535 cmp w1, w0 - bne .L2876 + bne .L3047 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 919 - add x1, x1, 616 + mov w2, 1051 + add x1, x1, 648 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2876: +.L3047: add x2, x19, :lo12:.LANCHOR0 mov w3, 65535 mov w0, 0 ldrh w1, [x2,2896] cmp w1, w3 - beq .L2877 + beq .L3048 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L2878 + tbz x0, 8, .L3049 ubfiz x3, x1, 1, 16 ldr x2, [x2,600] - adrp x0, .LC228 - add x0, x0, :lo12:.LC228 + adrp x0, .LC247 + add x0, x0, :lo12:.LC247 ldrh w2, [x2,x3] bl printk -.L2878: +.L3049: add x20, x19, :lo12:.LANCHOR0 bl timer_get_time add x21, x20, 2896 @@ -17932,97 +19276,97 @@ gc_scan_src_blk: bl ftl_get_blk_list_in_sblk uxtb w1, w0 strb w1, [x21,5] - cbnz w1, .L2879 + cbnz w1, .L3050 mov w0, -1 strh w0, [x20,2896] - b .L2905 -.L2879: + b .L3076 +.L3050: ldrh w3, [x20,2896] ldr x2, [x20,584] add x2, x2, x3, lsl 2 ldrb w2, [x2,2] tst w2, 192 and w4, w2, 224 - beq .L2880 + beq .L3051 cmp w4, 224 - beq .L2880 + beq .L3051 ldr x2, [x20,608] ldrh w5, [x2,16] cmp w5, w3 - beq .L2880 + beq .L3051 ldrh w5, [x2,48] cmp w5, w3 - beq .L2880 + beq .L3051 ldrh w2, [x2,80] cmp w2, w3 - bne .L2881 -.L2880: - cbnz w4, .L2882 + bne .L3052 +.L3051: + cbnz w4, .L3053 add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,600] ldrh w0, [x0,x3,lsl 1] - cbz w0, .L2883 + cbz w0, .L3054 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 939 - add x1, x1, 616 + mov w2, 1071 + add x1, x1, 648 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2883: +.L3054: add x0, x19, :lo12:.LANCHOR0 ldrh w1, [x0,2896] ldr x0, [x0,600] strh wzr, [x0,x1,lsl 1] -.L2882: +.L3053: add x19, x19, :lo12:.LANCHOR0 mov w0, -1 strh wzr, [x19,2920] strh w0, [x19,2896] -.L2905: +.L3076: mov w0, 0 - b .L2877 -.L2881: + b .L3048 +.L3052: and w0, w0, 255 sub w0, w0, #1 add x0, x21, x0, sxtw 1 ldrh w20, [x0,40] mov w0, 65535 cmp w20, w0 - bne .L2884 + bne .L3055 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 947 - add x1, x1, 616 + mov w2, 1079 + add x1, x1, 648 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2884: +.L3055: add x2, x19, :lo12:.LANCHOR0 mov w25, 1 ldrh w3, [x2,2896] ldr x4, [x2,584] - ldrh w0, [x2,3300] + ldrh w0, [x2,3324] add x3, x4, x3, lsl 2 - ldrh w1, [x2,3350] + ldrh w1, [x2,3362] sub w0, w0, #1 ldrb w3, [x3,2] uxth w0, w0 mul w1, w20, w1 and w3, w3, 224 cmp w3, 160 - bne .L2885 - ldrb w3, [x2,3257] + bne .L3056 + ldrb w3, [x2,3281] cmp w3, 2 uxth w25, w3 orr w1, w1, w3, lsl 24 - bne .L2885 - ldrh w0, [x2,3274] + bne .L3056 + ldrh w0, [x2,3298] sub w0, w0, #1 uxth w0, w0 -.L2885: +.L3056: add x20, x19, :lo12:.LANCHOR0 orr w23, w0, w1 mov w0, 1 @@ -18036,64 +19380,64 @@ gc_scan_src_blk: str w23, [x0,40] mov x21, x0 bl sblk_read_page - ldrh w0, [x20,3274] + ldrh w0, [x20,3298] mov w1, 255 - ldrb w2, [x20,3276] + ldrb w2, [x20,3300] mul w2, w0, w2 - ldr x0, [x20,3248] + ldr x0, [x20,3272] lsl w2, w2, 2 bl ftl_memset strh wzr, [x20,2920] ldr w0, [x21,52] cmp w0, 512 - beq .L2906 + beq .L3077 cmn w0, #1 - beq .L2906 + beq .L3077 ldr x0, [x21,24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 cmp w1, w0 - beq .L2888 + beq .L3059 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 980 - add x1, x1, 616 + mov w2, 1112 + add x1, x1, 648 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2906: +.L3077: mov x0, x21 bl buf_free mov w0, -1 - b .L2877 -.L2888: - ldrb w0, [x20,3276] + b .L3048 +.L3059: + ldrb w0, [x20,3300] mov x26, 0 - ldrh w22, [x20,3300] + ldrh w22, [x20,3324] mov w24, 21 ldr x23, [x21,8] mul w22, w0, w22 mul w22, w25, w22 mov w25, 1 uxth w22, w22 -.L2889: +.L3060: cmp w22, w26 - ble .L2907 + ble .L3078 ldr w0, [x23,x26,lsl 2] cmn w0, #1 - beq .L2891 + beq .L3062 bl lpa_hash_get_ppa str w0, [x29,92] cmn w0, #1 - bne .L2892 + bne .L3063 ldr w0, [x23,x26,lsl 2] add x1, x29, 92 mov w2, 0 bl pm_log2phys -.L2892: - ldrh w1, [x20,3340] +.L3063: + ldrh w1, [x20,3264] ldr w2, [x29,92] sub w0, w24, w1 ldrh w3, [x20,2896] @@ -18101,21 +19445,21 @@ gc_scan_src_blk: lsr w1, w2, w1 sub w0, w0, #1 and w1, w0, w1 - ldrb w0, [x20,3338] + ldrb w0, [x20,3266] udiv w1, w1, w0 cmp w1, w3 - bne .L2891 + bne .L3062 ldrh w3, [x20,2920] - ldr x1, [x20,3248] + ldr x1, [x20,3272] str w2, [x1,x3,lsl 2] ldrh w1, [x20,2920] add w1, w1, 1 strh w1, [x20,2920] -.L2891: +.L3062: bl timer_get_time add x26, x26, 1 - b .L2889 -.L2907: + b .L3060 +.L3078: mov x0, x21 bl buf_free add x0, x19, :lo12:.LANCHOR0 @@ -18125,11 +19469,11 @@ gc_scan_src_blk: ldrh w2, [x3,x2] ldrh w3, [x0,2920] cmp w2, w3 - beq .L2895 - adrp x0, .LC229 - add x0, x0, :lo12:.LC229 + beq .L3066 + adrp x0, .LC248 + add x0, x0, :lo12:.LC248 bl printk -.L2895: +.L3066: add x19, x19, :lo12:.LANCHOR0 ldrh w2, [x19,2896] ldr x1, [x19,600] @@ -18137,7 +19481,7 @@ gc_scan_src_blk: strh w3, [x1,x2,lsl 1] strh wzr, [x19,2924] ldrh w0, [x19,2920] -.L2877: +.L3048: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -18159,14 +19503,14 @@ gc_scan_static_data: ldr x0, [x3,608] ldr w1, [x0,544] cmn w1, #1 - beq .L2909 + beq .L3080 adrp x21, .LANCHOR3 adrp x22, .LC0 add x21, x21, :lo12:.LANCHOR3 mov w20, 11 add x22, x22, :lo12:.LC0 - add x21, x21, 632 -.L2910: + add x21, x21, 664 +.L3081: add x24, x19, :lo12:.LANCHOR0 add x1, x29, 76 mov w2, 0 @@ -18175,7 +19519,7 @@ gc_scan_static_data: bl pm_log2phys ldr w0, [x29,76] cmn w0, #1 - beq .L2911 + beq .L3082 mov w0, 1 bl buf_alloc mov x23, x0 @@ -18185,8 +19529,8 @@ gc_scan_static_data: bl sblk_read_page ldr w0, [x23,52] cmp w0, 256 - bne .L2912 - ldrh w0, [x24,3340] + bne .L3083 + ldrh w0, [x24,3264] mov w2, 21 mov w1, 1 ldr w3, [x29,76] @@ -18194,28 +19538,28 @@ gc_scan_static_data: lsl w2, w1, w2 lsr w3, w3, w0 sub w2, w2, #1 - ldrb w0, [x24,3338] + ldrb w0, [x24,3266] and w2, w2, w3 udiv w0, w2, w0 mov w2, 0 bl gc_add_sblk -.L2912: +.L3083: add x0, x19, :lo12:.LANCHOR0 ldr x1, [x23,24] ldr x0, [x0,608] ldr w1, [x1,4] ldr w0, [x0,544] cmp w1, w0 - beq .L2913 + beq .L3084 mov x1, x21 - mov w2, 1419 + mov w2, 1551 mov x0, x22 bl printk bl dump_stack -.L2913: +.L3084: mov x0, x23 bl buf_free -.L2911: +.L3082: add x2, x19, :lo12:.LANCHOR0 ldr x1, [x2,608] ldr w2, [x2,2840] @@ -18223,7 +19567,7 @@ gc_scan_static_data: add w0, w0, 1 str w0, [x1,544] cmp w0, w2 - bcc .L2914 + bcc .L3085 mov w0, -1 str w0, [x1,544] ldr w0, [x1,548] @@ -18234,37 +19578,37 @@ gc_scan_static_data: bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush - b .L2908 -.L2914: + b .L3079 +.L3085: ldr w0, [x29,76] cmn w0, #1 - bne .L2908 + bne .L3079 sub w20, w20, #1 uxth w20, w20 - cbnz w20, .L2910 - b .L2908 -.L2909: + cbnz w20, .L3081 + b .L3079 +.L3080: ldr w1, [x0,536] ldr w2, [x0,12] add w1, w1, 12959744 add w1, w1, 256 cmp w2, w1 - bhi .L2919 + bhi .L3090 ldr x3, [x3,2864] ldr w1, [x0,540] ldr w3, [x3,44] - add w1, w1, 98304 - add w1, w1, 1696 + add w1, w1, 4096 + add w1, w1, 904 cmp w3, w1 - bls .L2908 -.L2919: + bls .L3079 +.L3090: add x19, x19, :lo12:.LANCHOR0 ldr x1, [x19,2864] ldr w1, [x1,44] str w1, [x0,540] str w2, [x0,536] str wzr, [x0,544] -.L2908: +.L3079: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -18288,45 +19632,45 @@ gc_block_vpn_scan: ldrh w0, [x20,576] ldr w1, [x1,608] cmp w1, w0 - bcs .L2924 + bcs .L3095 bl timer_get_time ldr x21, [x20,608] ldr w1, [x21,604] add w1, w1, 28672 add w1, w1, 1328 cmp w0, w1 - bls .L2924 + bls .L3095 bl timer_get_time str w0, [x21,604] ldr x0, [x20,608] ldrh w2, [x20,576] ldr w1, [x0,600] cmp w1, w2 - bcs .L2928 + bcs .L3099 ldr x2, [x20,2864] ldrh w2, [x2,134] cmp w1, w2 - bcs .L2929 -.L2928: + bcs .L3100 +.L3099: add x1, x19, :lo12:.LANCHOR0 ldr x1, [x1,2864] ldrh w1, [x1,134] str w1, [x0,600] -.L2929: +.L3100: ldr w25, [x0,600] mov w0, 65535 uxth w20, w25 cmp w20, w0 - bne .L2930 + bne .L3101 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1714 - add x1, x1, 656 + mov w2, 1846 + add x1, x1, 688 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2930: +.L3101: add x21, x19, :lo12:.LANCHOR0 ldr x0, [x21,608] ldr w1, [x0,600] @@ -18339,47 +19683,47 @@ gc_block_vpn_scan: mov w0, w20 bl ftl_get_blk_list_in_sblk uxth w1, w0 - cbz w1, .L2924 + cbz w1, .L3095 uxtw x22, w20 ldr x24, [x21,584] add x24, x24, x22, lsl 2 ldrb w1, [x24,2] tst w1, 192 and w2, w1, 224 - beq .L2931 + beq .L3102 cmp w2, 224 - beq .L2931 + beq .L3102 ldr x1, [x21,608] ldrh w3, [x1,16] cmp w3, w20 - beq .L2931 + beq .L3102 ldrh w3, [x1,48] cmp w3, w20 - beq .L2931 + beq .L3102 ldrh w1, [x1,80] cmp w1, w20 - bne .L2932 -.L2931: - cbnz w2, .L2924 + bne .L3103 +.L3102: + cbnz w2, .L3095 add x0, x19, :lo12:.LANCHOR0 lsl x22, x22, 1 ldr x0, [x0,600] ldrh w0, [x0,x22] - cbz w0, .L2933 + cbz w0, .L3104 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1730 - add x1, x1, 656 + mov w2, 1862 + add x1, x1, 688 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2933: +.L3104: add x19, x19, :lo12:.LANCHOR0 ldr x0, [x19,600] strh wzr, [x0,x22] - b .L2924 -.L2932: + b .L3095 +.L3103: and w0, w0, 65535 add x1, x29, 144 sub w0, w0, #1 @@ -18387,36 +19731,36 @@ gc_block_vpn_scan: ldrh w21, [x0,-16] mov w0, 65535 cmp w21, w0 - bne .L2935 + bne .L3106 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1736 - add x1, x1, 656 + mov w2, 1868 + add x1, x1, 688 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2935: +.L3106: add x2, x19, :lo12:.LANCHOR0 ldrb w3, [x24,2] mov w26, 1 and w3, w3, 224 - ldrh w0, [x2,3300] + ldrh w0, [x2,3324] cmp w3, 160 - ldrh w1, [x2,3350] + ldrh w1, [x2,3362] sub w0, w0, #1 mul w1, w21, w1 uxth w0, w0 - bne .L2936 - ldrb w3, [x2,3257] + bne .L3107 + ldrb w3, [x2,3281] cmp w3, 2 uxth w26, w3 orr w1, w1, w3, lsl 24 - bne .L2936 - ldrh w0, [x2,3274] + bne .L3107 + ldrh w0, [x2,3298] sub w0, w0, #1 uxth w0, w0 -.L2936: +.L3107: orr w21, w0, w1 mov w0, 1 bl buf_alloc @@ -18425,42 +19769,42 @@ gc_block_vpn_scan: add x21, x19, :lo12:.LANCHOR0 mov x23, x0 bl sblk_read_page - ldrh w0, [x21,3274] + ldrh w0, [x21,3298] mov w1, 255 - ldrb w2, [x21,3276] + ldrb w2, [x21,3300] mul w2, w0, w2 - ldr x0, [x21,3248] + ldr x0, [x21,3272] lsl w2, w2, 2 bl ftl_memset ldr w0, [x23,52] cmp w0, 512 - beq .L2948 + beq .L3119 cmn w0, #1 cset w2, eq - cbz w2, .L2937 -.L2948: + cbz w2, .L3108 +.L3119: mov w0, w20 mov w1, 1 mov w2, 0 - b .L2961 -.L2937: + b .L3132 +.L3108: ldr x0, [x23,24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 cmp w1, w0 - beq .L2939 + beq .L3110 mov w0, w20 mov w1, 1 -.L2961: +.L3132: bl gc_add_sblk mov x0, x23 bl buf_free - b .L2924 -.L2939: - ldrb w0, [x21,3276] + b .L3095 +.L3110: + ldrb w0, [x21,3300] mov x27, 0 - ldrh w1, [x21,3300] + ldrh w1, [x21,3324] and w28, w25, 65535 mov w21, w27 mul w0, w0, w1 @@ -18468,68 +19812,68 @@ gc_block_vpn_scan: uxth w0, w26 ldr x26, [x23,8] str w0, [x29,108] -.L2940: +.L3111: ldr w0, [x29,108] cmp w0, w27 - ble .L2962 + ble .L3133 ldr w0, [x26,x27,lsl 2] cmn w0, #1 - beq .L2941 + beq .L3112 bl lpa_hash_get_ppa str w0, [x29,124] cmn w0, #1 - bne .L2942 + bne .L3113 ldr w0, [x26,x27,lsl 2] add x1, x29, 124 mov w2, 0 bl pm_log2phys -.L2942: +.L3113: add x4, x19, :lo12:.LANCHOR0 mov w1, 21 - ldrh w0, [x4,3340] + ldrh w0, [x4,3264] sub w2, w1, w0 mov w1, 1 lsl w2, w1, w2 ldr w1, [x29,124] sub w2, w2, #1 lsr w0, w1, w0 - ldrb w1, [x4,3338] + ldrb w1, [x4,3266] and w0, w2, w0 udiv w0, w0, w1 cmp w0, w28 - bne .L2941 + bne .L3112 add w21, w21, 1 uxth w21, w21 -.L2941: +.L3112: add x27, x27, 1 - b .L2940 -.L2962: + b .L3111 +.L3133: mov x0, x23 bl buf_free adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L2944 + tbz x0, 8, .L3115 add x0, x19, :lo12:.LANCHOR0 ldrb w4, [x24,2] uxth w1, w25 mov w3, w21 ubfx x4, x4, 5, 3 ldr x2, [x0,600] - adrp x0, .LC230 - add x0, x0, :lo12:.LC230 + adrp x0, .LC249 + add x0, x0, :lo12:.LC249 ldrh w2, [x2,x22,lsl 1] bl printk -.L2944: +.L3115: add x19, x19, :lo12:.LANCHOR0 cmp w21, 31 ldr x0, [x19,600] strh w21, [x0,x22,lsl 1] - bhi .L2924 + bhi .L3095 mov w0, w20 mov w1, 1 mov w2, 0 bl gc_add_sblk -.L2924: +.L3095: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -18561,9 +19905,9 @@ ftl_sblk_dump: add x1, x0, x25 ldrh w4, [x0,x25] ldr w5, [x0,x25] - adrp x0, .LC231 + adrp x0, .LC250 ldrb w3, [x1,2] - add x0, x0, :lo12:.LC231 + add x0, x0, :lo12:.LC250 mov w1, w20 and w4, w4, 2047 ubfx x2, x3, 5, 3 @@ -18573,19 +19917,19 @@ ftl_sblk_dump: mov w1, 65535 mov w0, 0 cmp w20, w1 - beq .L2964 + beq .L3135 ldrh w1, [x19,576] cmp w1, w20 - bls .L2964 + bls .L3135 ldr x0, [x19,584] mov w26, 1 add x0, x0, x25 ldrb w0, [x0,2] and w0, w0, 224 cmp w0, 160 - bne .L2965 - ldrb w26, [x19,3257] -.L2965: + bne .L3136 + ldrb w26, [x19,3281] +.L3136: add x1, x29, 192 mov w0, w20 strh w20, [x29,176] @@ -18598,7 +19942,7 @@ ftl_sblk_dump: mov w3, w26 strh wzr, [x29,178] uxtb w4, w4 - ldrh w2, [x0,3300] + ldrh w2, [x0,3324] mov w27, w22 strb wzr, [x29,181] mov w19, w22 @@ -18606,8 +19950,8 @@ ftl_sblk_dump: mul w1, w1, w2 strh w1, [x29,182] ldr x1, [x0,584] - adrp x0, .LC232 - add x0, x0, :lo12:.LC232 + adrp x0, .LC251 + add x0, x0, :lo12:.LC251 add x1, x1, x25 ldrb w2, [x1,2] mov w1, w20 @@ -18616,56 +19960,56 @@ ftl_sblk_dump: mov w0, 1 bl buf_alloc mov x28, x0 - adrp x0, .LC186 + adrp x0, .LC197 str w22, [x29,152] - add x0, x0, :lo12:.LC186 + add x0, x0, :lo12:.LC197 str x0, [x29,120] adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 680 + add x0, x0, 712 str x0, [x29,112] -.L2966: +.L3137: add x21, x23, :lo12:.LANCHOR0 - ldrh w0, [x21,3300] + ldrh w0, [x21,3324] cmp w0, w19 - bls .L2982 + bls .L3153 lsl w0, w19, 1 str wzr, [x29,156] sub w0, w0, #1 str w0, [x29,132] -.L2983: +.L3154: ldrb w0, [x29,185] ldr w1, [x29,156] cmp w0, w1 - bls .L2980 + bls .L3151 mov w24, 1 -.L2981: +.L3152: cmp w24, w26 ldr w0, [x29,156] - bhi .L3000 + bhi .L3171 add x1, x29, 176 add x0, x1, x0, sxtw 1 ldrh w2, [x0,16] mov w0, 65535 cmp w2, w0 - beq .L2967 + beq .L3138 add x1, x23, :lo12:.LANCHOR0 cmp w26, 3 - ldrh w0, [x1,3350] + ldrh w0, [x1,3362] mul w0, w2, w0 add w21, w0, w19 - bne .L2968 + bne .L3139 orr w21, w21, w24, lsl 24 - b .L2969 -.L2968: + b .L3140 +.L3139: cmp w26, 2 - bne .L2969 + bne .L3140 ldr w3, [x29,132] - ldrb w21, [x1,3257] + ldrb w21, [x1,3281] add w0, w0, w3 add w0, w0, w24 orr w21, w0, w21, lsl 24 -.L2969: +.L3140: mov w1, 1 str w21, [x28,40] mov x0, x28 @@ -18697,23 +20041,23 @@ ftl_sblk_dump: bl printk ldr x9, [x29,104] cmp w9, 512 - beq .L2987 + beq .L3158 cmn w9, #1 - bne .L2971 -.L2987: + bne .L3142 +.L3158: mov w0, 1 str w0, [x29,152] -.L2971: +.L3142: add x0, x23, :lo12:.LANCHOR0 ldr x0, [x0,584] add x0, x0, x25 ldrb w0, [x0,2] and w0, w0, 224 cmp w0, 32 - beq .L2967 + beq .L3138 cmp w0, 224 cset w2, eq - cbnz w2, .L2967 + cbnz w2, .L3138 ldr x0, [x28,24] str x2, [x29,104] ldr w0, [x0,4] @@ -18721,82 +20065,82 @@ ftl_sblk_dump: str w0, [x29,172] cmn w0, #1 ldr x2, [x29,104] - bne .L2973 + bne .L3144 ldr x0, [x28,24] add x1, x29, 172 ldr w0, [x0,4] bl pm_log2phys -.L2973: +.L3144: ldr w0, [x29,172] cmp w0, w21 - bne .L2974 + bne .L3145 ldr x2, [x28,24] add w22, w22, 1 - adrp x0, .LC233 + adrp x0, .LC252 mov w1, w21 - add x0, x0, :lo12:.LC233 + add x0, x0, :lo12:.LC252 mov w3, w22 ldr w2, [x2,4] bl printk -.L2974: +.L3145: ldr x0, [x29,144] - cbz x0, .L2976 + cbz x0, .L3147 ubfiz x21, x27, 2, 32 ldr w2, [x0,x21] ldr x0, [x28,24] ldr w0, [x0,4] cmp w0, w2 - beq .L2977 + beq .L3148 adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2977 - adrp x0, .LC234 + tbz x0, 12, .L3148 + adrp x0, .LC253 mov w1, w27 - add x0, x0, :lo12:.LC234 + add x0, x0, :lo12:.LC253 bl printk -.L2977: +.L3148: ldr x0, [x29,144] ldr x1, [x28,24] ldr w0, [x0,x21] ldr w1, [x1,4] cmp w1, w0 - beq .L2976 + beq .L3147 cmn w0, #1 - beq .L2976 + beq .L3147 adrp x0, .LC0 ldr x1, [x29,112] - mov w2, 1299 + mov w2, 1312 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2976: +.L3147: add w27, w27, 1 -.L2967: +.L3138: add w24, w24, 1 uxth w24, w24 - b .L2981 -.L3000: + b .L3152 +.L3171: add w0, w0, 1 uxth w0, w0 str w0, [x29,156] - b .L2983 -.L2980: + b .L3154 +.L3151: add w19, w19, 1 uxth w19, w19 - b .L2966 -.L2982: + b .L3137 +.L3153: mov x0, x28 bl buf_free ldr x3, [x29,136] - adrp x0, .LC235 + adrp x0, .LC254 ldr x2, [x21,600] - add x0, x0, :lo12:.LC235 + add x0, x0, :lo12:.LC254 mov w1, w20 ldrh w2, [x2,x3,lsl 1] mov w3, w22 bl printk ldr w0, [x29,152] -.L2964: +.L3135: sub sp, x29, #48 ldp x19, x20, [sp,64] ldp x21, x22, [sp,80] @@ -18811,357 +20155,370 @@ ftl_sblk_dump: .global zftl_read .type zftl_read, %function zftl_read: - stp x29, x30, [sp, -160]! - add x29, sp, 0 - stp x19, x20, [sp,16] + sub sp, sp, #176 + stp x29, x30, [sp,16] + add x29, sp, 16 + stp x19, x20, [sp,32] mov w19, w0 adrp x0, .LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x21, x22, [sp,48] + stp x23, x24, [sp,64] ldr w0, [x0,#:lo12:.LANCHOR2] - mov w22, w1 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w25, w2 - mov x23, x3 - tbz x0, 12, .L3002 - adrp x0, .LC236 + mov w21, w1 + stp x25, x26, [sp,80] + stp x27, x28, [sp,96] + mov w24, w2 + mov x22, x3 + tbz x0, 12, .L3173 + adrp x0, .LC255 mov w1, w19 - add x0, x0, :lo12:.LC236 - mov w2, w22 - mov w3, w25 + add x0, x0, :lo12:.LC255 + mov w2, w21 + mov w3, w24 bl printk -.L3002: - cbnz w19, .L3003 +.L3173: + cbnz w19, .L3174 adrp x0, .LANCHOR0+520 mov w19, 24576 ldr w2, [x0,#:lo12:.LANCHOR0+520] - b .L3004 -.L3003: + b .L3175 +.L3174: cmp w19, 3 mov w0, -1 - bhi .L3005 + bhi .L3176 lsl w19, w19, 13 mov w2, 8192 -.L3004: - add w1, w22, w25 +.L3175: + add w1, w21, w24 mov w0, -1 cmp w1, w2 - bhi .L3005 - add w22, w19, w22 + bhi .L3176 + add w21, w19, w21 adrp x19, .LANCHOR0 add x1, x19, :lo12:.LANCHOR0 - add w28, w22, w25 + add w27, w21, w24 str wzr, [x29,140] ldr x2, [x1,2864] ldr w0, [x2,24] - add w0, w0, w25 + add w0, w0, w24 str w0, [x2,24] ldrb w0, [x1,2832] - sub w1, w28, #1 - udiv w27, w22, w0 - mov w20, w27 + sub w1, w27, #1 + udiv w26, w21, w0 + mov w20, w26 udiv w0, w1, w0 str w0, [x29,136] - sub w24, w0, w27 - add w24, w24, 1 + sub w23, w0, w26 + add w23, w23, 1 adrp x0, .LC0 add x0, x0, :lo12:.LC0 str x0, [x29,128] adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 696 + add x0, x0, 728 str x0, [x29,120] -.L3006: - cbz w24, .L3066 +.L3177: + cbz w23, .L3242 add x0, x19, :lo12:.LANCHOR0 ldr w1, [x29,136] - cmp w20, w27 + cmp w20, w26 cset w2, eq cmp w20, w1 ldrb w0, [x0,2832] - cset w26, eq - uxth w21, w0 - cbnz w26, .L3036 - cbz w2, .L3007 - b .L3065 -.L3036: - cbz w2, .L3009 -.L3065: - udiv w26, w22, w0 - msub w26, w26, w0, w22 - uxth w0, w25 - uxth w26, w26 - sub w21, w21, w26 - uxth w21, w21 - cmp w21, w25 - csel w21, w0, w21, hi - b .L3007 -.L3009: - msub w21, w0, w20, w28 - mov w26, w2 - uxtb w21, w21 -.L3007: + cset w28, eq + uxth w25, w0 + cbnz w28, .L3208 + cbz w2, .L3178 + b .L3241 +.L3208: + cbz w2, .L3180 +.L3241: + udiv w28, w21, w0 + msub w28, w28, w0, w21 + uxth w0, w24 + uxth w28, w28 + sub w25, w25, w28 + uxth w25, w25 + cmp w25, w24 + csel w25, w0, w25, hi + b .L3178 +.L3180: + msub w25, w0, w20, w27 + mov w28, w2 + uxtb w25, w25 +.L3178: add x1, x19, :lo12:.LANCHOR0 mov w0, 0 add x1, x1, 784 -.L3012: +.L3183: ldr w2, [x1,36] cmp w2, w20 - bne .L3010 + bne .L3181 ldrb w2, [x1,2] - tbz x2, 3, .L3010 + tbz x2, 3, .L3181 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x0, 6, 32 add x0, x2, x1 - ubfiz x26, x26, 9, 16 - lsl w2, w21, 9 - ubfiz x21, x21, 9, 16 + ubfiz x28, x28, 9, 16 + lsl w2, w25, 9 + ubfiz x25, x25, 9, 16 ldr x1, [x0,792] - mov x0, x23 - add x23, x23, x21 - add x1, x1, x26 + mov x0, x22 + add x22, x22, x25 + add x1, x1, x28 bl ftl_memcpy - b .L3011 -.L3010: + b .L3182 +.L3181: add w0, w0, 1 add x1, x1, 64 cmp w0, 32 - bne .L3012 + bne .L3183 mov w0, w20 bl lpa_hash_get_ppa str w0, [x29,156] cmn w0, #1 - bne .L3013 + bne .L3184 mov w0, w20 add x1, x29, 156 mov w2, 0 bl pm_log2phys -.L3013: +.L3184: ldr w0, [x29,156] cmn w0, #1 - bne .L3014 - mov w21, 0 -.L3015: + bne .L3185 + mov w25, 0 +.L3186: add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2832] - cmp w21, w0 - bcs .L3011 - madd w0, w20, w0, w21 - cmp w0, w22 - bcc .L3016 - cmp w0, w28 - bcs .L3016 - mov x0, x23 + cmp w25, w0 + bcs .L3182 + madd w0, w20, w0, w25 + cmp w0, w21 + bcc .L3187 + cmp w0, w27 + bcs .L3187 + mov x0, x22 mov w1, 0 mov w2, 512 - add x23, x23, 512 + add x22, x22, 512 bl ftl_memset -.L3016: - add w21, w21, 1 - b .L3015 -.L3014: +.L3187: + add w25, w25, 1 + b .L3186 +.L3185: mov w0, 0 bl buf_alloc - cbz x0, .L3018 + cbz x0, .L3189 add x2, x19, :lo12:.LANCHOR0 ldr x3, [x2,2864] ldr w2, [x3,40] add w2, w2, 1 str w2, [x3,40] ldr w2, [x29,156] - strb w21, [x0,56] - ubfiz x21, x21, 9, 16 - str x23, [x0,16] - add x23, x23, x21 + strb w25, [x0,56] + ubfiz x25, x25, 9, 16 + str x22, [x0,16] + add x22, x22, x25 str w2, [x0,40] str w2, [x0,44] str w20, [x0,36] - strb w26, [x0,57] + strb w28, [x0,57] bl zftl_add_read_buf -.L3011: +.L3182: add w20, w20, 1 - sub w24, w24, #1 -.L3018: - cbz w24, .L3037 + sub w23, w23, #1 +.L3189: + cbz w23, .L3209 add x0, x19, :lo12:.LANCHOR0 ldrb w0, [x0,2834] cmp w0, 2 - bhi .L3006 -.L3037: + bhi .L3177 +.L3209: add x2, x19, :lo12:.LANCHOR0 - ldrb w1, [x2,3894] - cbz w1, .L3006 + ldrb w1, [x2,3908] + cbz w1, .L3177 add x0, x2, 784 - ldrb w2, [x2,3893] + ldrb w2, [x2,3907] add x0, x0, x2, lsl 6 bl sblk_read_page -.L3021: +.L3192: add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,3894] - cbz w1, .L3067 - ldrb w0, [x0,3893] + ldrb w1, [x0,3908] + cbz w1, .L3243 + ldrb w0, [x0,3907] cmp w0, 255 - bne .L3022 + bne .L3193 ldr x1, [x29,120] - mov w2, 1065 + mov w2, 1080 ldr x0, [x29,128] bl printk bl dump_stack -.L3022: - add x2, x19, :lo12:.LANCHOR0 - add x1, x2, 784 - ldrb w21, [x2,3893] - lsl x0, x21, 6 - add x26, x1, x0 +.L3193: + add x5, x19, :lo12:.LANCHOR0 + add x1, x5, 784 + ldrb w28, [x5,3907] + lsl x0, x28, 6 + add x25, x1, x0 ldrb w0, [x1,x0] - ldr w8, [x26,52] - strb w0, [x2,3893] - cmn w8, #1 - bne .L3023 - ldr x1, [x2,608] - str w8, [x29,140] + ldr w6, [x25,52] + strb w0, [x5,3907] + cmn w6, #1 + bne .L3194 + ldr x1, [x5,608] + str w6, [x29,140] ldr w0, [x1,552] add w0, w0, 1 str w0, [x1,552] - b .L3024 -.L3023: - cmp w8, 256 - bne .L3024 - ldrh w0, [x2,3340] + b .L3195 +.L3194: + cmp w6, 256 + bne .L3195 + ldrh w0, [x5,3264] mov w1, 21 - mov w5, 1 - ldr w3, [x26,40] + mov w7, 1 + ldr w3, [x25,40] sub w4, w1, w0 - str x8, [x29,96] - lsl w4, w5, w4 + ldr w2, [x25,36] + lsl w4, w7, w4 lsr w0, w3, w0 sub w4, w4, #1 - str x5, [x29,104] + str x6, [x29,96] and w0, w4, w0 - ldrb w4, [x2,3338] - ldr w2, [x26,36] + ldrb w4, [x5,3266] + str x7, [x29,104] udiv w4, w0, w4 - adrp x0, .LC237 - add x0, x0, :lo12:.LC237 + adrp x0, .LC256 + add x0, x0, :lo12:.LC256 str x4, [x29,112] uxth w1, w4 bl printk ldr x4, [x29,112] mov w2, 0 - ldr x5, [x29,104] + ldr x7, [x29,104] mov w0, w4 - mov w1, w5 + mov w1, w7 bl gc_add_sblk - ldr x8, [x29,96] -.L3024: - add x9, x19, :lo12:.LANCHOR0 - add x1, x9, 784 - add x1, x1, x21, lsl 6 - add x10, x1, 32 - ldr x0, [x1,24] - ldr w3, [x0,4] - ldr w0, [x1,36] - cmp w3, w0 - beq .L3025 - ldr x3, [x9,608] - str x8, [x29,96] - str x9, [x29,104] - ldr w0, [x3,552] - str x10, [x29,112] - add w0, w0, 1 - str w0, [x3,552] - adrp x0, .LC238 - ldr x7, [x1,24] - add x0, x0, :lo12:.LC238 - ldr w2, [x10,4] - ldr w3, [x10,8] - ldr w4, [x7] - ldr w5, [x7,4] - ldr w6, [x7,8] - ldrb w1, [x1,1] - ldr w7, [x7,12] - bl printk - ldr x9, [x29,104] - mov w1, 21 - ldr x10, [x29,112] - ldrh w0, [x9,3340] - sub w2, w1, w0 - mov w1, 1 - lsl w2, w1, w2 - ldr w1, [x10,8] - sub w2, w2, #1 - lsr w0, w1, w0 - ldrb w1, [x9,3338] - and w0, w2, w0 - udiv w0, w0, w1 - mov x1, 0 - bl ftl_sblk_dump - ldr x8, [x29,96] -.L3025: + ldr x6, [x29,96] +.L3195: add x0, x19, :lo12:.LANCHOR0 + cmn w6, #1 add x0, x0, 784 - add x0, x0, x21, lsl 6 + cset w10, eq + add x0, x0, x28, lsl 6 ldr x1, [x0,24] ldr w0, [x0,36] ldr w1, [x1,4] cmp w1, w0 - bne .L3038 - cmn w8, #1 - bne .L3026 -.L3038: + bne .L3210 + cbz w10, .L3196 +.L3210: + add x11, x19, :lo12:.LANCHOR0 + mov w2, w6 + add x9, x11, 784 + str x10, [x29,96] + add x9, x9, x28, lsl 6 + str x11, [x29,104] + ldr x1, [x11,608] + add x9, x9, 32 + ldr w0, [x1,552] + add w0, w0, 1 + str w0, [x1,552] + ldr x7, [x9,-8] + ldrb w1, [x9,-31] + ldr w0, [x7,12] + str w0, [sp] + adrp x0, .LC257 + add x0, x0, :lo12:.LC257 + ldr w3, [x9,4] + ldr w4, [x9,8] + ldr w5, [x7] + ldr w6, [x7,4] + ldr w7, [x7,8] + str x9, [x29,112] + bl printk + ldr x11, [x29,104] + mov w1, 21 + ldr x9, [x29,112] + ldrh w0, [x11,3264] + sub w2, w1, w0 + mov w1, 1 + lsl w2, w1, w2 + ldr w1, [x9,8] + sub w2, w2, #1 + lsr w0, w1, w0 + ldrb w1, [x11,3266] + and w0, w2, w0 + udiv w0, w0, w1 + mov x1, 0 + bl ftl_sblk_dump + ldr x10, [x29,96] +.L3196: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 784 + add x0, x0, x28, lsl 6 + ldr x1, [x0,24] + ldr w0, [x0,36] + ldr w1, [x1,4] + cmp w1, w0 + bne .L3211 + cbz w10, .L3198 +.L3211: ldr x1, [x29,120] - mov w2, 1086 + mov w2, 1101 ldr x0, [x29,128] bl printk bl dump_stack -.L3026: +.L3198: add x1, x19, :lo12:.LANCHOR0 add x0, x1, 784 - add x21, x0, x21, lsl 6 + add x8, x0, x28, lsl 6 ldrb w1, [x1,2832] - ldrb w2, [x21,56] + ldrb w2, [x8,56] cmp w1, w2 - bls .L3028 - ldrb w3, [x21,57] + bls .L3200 + ldrb w3, [x8,57] lsl w2, w2, 9 - ldr x1, [x21,8] - ldr x0, [x21,16] + ldr x1, [x8,8] + ldr x0, [x8,16] add x1, x1, x3, lsl 9 bl ftl_memcpy - b .L3029 -.L3028: - ldrb w0, [x21,2] + b .L3201 +.L3200: + ldrb w0, [x8,2] and w0, w0, -9 - strb w0, [x21,2] -.L3029: - add x21, x19, :lo12:.LANCHOR0 - mov x1, x26 - add x0, x21, 3895 + strb w0, [x8,2] +.L3201: + add x2, x19, :lo12:.LANCHOR0 + mov x1, x25 + add x0, x2, 3909 + str x2, [x29,112] bl buf_remove_buf - mov x0, x26 + mov x0, x25 bl buf_free - ldrb w0, [x21,3894] + ldr x2, [x29,112] + ldrb w0, [x2,3908] sub w0, w0, #1 - strb w0, [x21,3894] - b .L3021 -.L3067: + strb w0, [x2,3908] + b .L3192 +.L3243: mov w2, -1 - strb w1, [x0,3894] - strb w2, [x0,3893] - b .L3006 -.L3066: + strb w1, [x0,3908] + strb w2, [x0,3907] + b .L3177 +.L3242: bl timer_get_time - adrp x1, .LANCHOR7-80 - str w0, [x1,#:lo12:.LANCHOR7-80] + adrp x1, .LANCHOR7-64 + str w0, [x1,#:lo12:.LANCHOR7-64] ldr w0, [x29,140] -.L3005: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 160 +.L3176: + sub sp, x29, #16 + ldp x19, x20, [sp,32] + ldp x21, x22, [sp,48] + ldp x23, x24, [sp,64] + ldp x25, x26, [sp,80] + ldp x27, x28, [sp,96] + ldp x29, x30, [sp,16] + add sp, sp, 176 ret .size zftl_read, .-zftl_read .align 2 @@ -19210,34 +20567,34 @@ zftl_debug_proc_write: stp x23, x24, [sp,80] stp x25, x26, [sp,96] mov x21, x2 - bhi .L3071 + bhi .L3247 mov x0, x19 bl rk_copy_from_user mov x22, x0 mov x0, -14 - cbnz x22, .L3071 - adrp x0, .LC239 + cbnz x22, .L3247 + adrp x0, .LC258 mov x1, x19 - add x0, x0, :lo12:.LC239 + add x0, x0, :lo12:.LC258 strb w22, [x19,x21] bl printk - adrp x0, .LC240 + adrp x0, .LC259 mov x1, x19 - add x0, x0, :lo12:.LC240 + add x0, x0, :lo12:.LC259 mov w2, 1 mov w3, 16 bl rknand_print_hex bl rknand_device_lock - adrp x1, .LC241 + adrp x1, .LC260 mov x0, x19 - add x1, x1, :lo12:.LC241 + add x1, x1, :lo12:.LC260 mov x2, 7 bl memcmp - cbnz w0, .L3072 + cbnz w0, .L3248 adrp x23, .LANCHOR0 - adrp x0, .LC242 + adrp x0, .LC261 add x19, x23, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC242 + add x0, x0, :lo12:.LC261 mov w2, 4 adrp x20, .LANCHOR4 ldr x3, [x19,2864] @@ -19246,19 +20603,19 @@ zftl_debug_proc_write: bl rknand_print_hex add x3, x20, :lo12:.LANCHOR4 ldr x1, [x19,2864] - adrp x0, .LC243 + adrp x0, .LC262 mov w2, 2 - add x0, x0, :lo12:.LC243 + add x0, x0, :lo12:.LC262 add x1, x1, 416 - ldrh w3, [x3,1164] + ldrh w3, [x3,1180] mov w19, w22 mov w22, 65535 bl rknand_print_hex -.L3073: +.L3249: add x0, x20, :lo12:.LANCHOR4 - ldrh w0, [x0,1164] + ldrh w0, [x0,1180] cmp w19, w0 - bge .L3076 + bge .L3252 mov w0, 300 bl msleep add x0, x23, :lo12:.LANCHOR0 @@ -19266,63 +20623,63 @@ zftl_debug_proc_write: add x0, x0, x19, sxtw 1 ldrh w0, [x0,416] cmp w0, w22 - beq .L3074 + beq .L3250 mov x1, 0 bl ftl_sblk_dump -.L3074: +.L3250: add w19, w19, 1 - b .L3073 -.L3072: - adrp x1, .LC244 + b .L3249 +.L3248: + adrp x1, .LC263 mov x0, x19 - add x1, x1, :lo12:.LC244 + add x1, x1, :lo12:.LC263 mov x2, 7 bl memcmp - cbnz w0, .L3077 + cbnz w0, .L3253 adrp x23, .LANCHOR0 - adrp x0, .LC242 + adrp x0, .LC261 add x20, x23, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC242 + add x0, x0, :lo12:.LC261 mov w2, 4 add x22, x29, 192 - adrp x24, .LC247 + adrp x24, .LC266 ldr x3, [x20,2864] - add x24, x24, :lo12:.LC247 + add x24, x24, :lo12:.LC266 add x1, x3, 704 ldrh w3, [x3,698] bl rknand_print_hex - adrp x3, .LANCHOR4+1164 + adrp x3, .LANCHOR4+1180 ldr x1, [x20,2864] - adrp x0, .LC243 + adrp x0, .LC262 mov w2, 2 - add x0, x0, :lo12:.LC243 + add x0, x0, :lo12:.LC262 add x1, x1, 416 - ldrh w3, [x3,#:lo12:.LANCHOR4+1164] + ldrh w3, [x3,#:lo12:.LANCHOR4+1180] bl rknand_print_hex - adrp x0, .LC245 + adrp x0, .LC264 add x1, x19, 7 - add x0, x0, :lo12:.LC245 + add x0, x0, :lo12:.LC264 str x1, [x22,-88]! - add x19, x20, 3904 + add x19, x20, 3920 mov x20, x23 bl printk - adrp x23, .LC246 + adrp x23, .LC265 ldr x0, [x29,104] mov x1, x22 add x25, x19, 512 - add x23, x23, :lo12:.LC246 - bl rk_simple_strtoull.constprop.29 + add x23, x23, :lo12:.LC265 + bl rk_simple_strtoull.constprop.33 mov w22, w0 str w0, [x29,100] uxth w26, w0 -.L3079: +.L3255: ldrh w1, [x19] mov x0, x23 ldrh w2, [x19,2] bl printk ldrh w0, [x19] cmp w0, w26 - bne .L3078 + bne .L3254 add x0, x20, :lo12:.LANCHOR0 ldr x1, [x19,8] mov w2, 4 @@ -19330,10 +20687,10 @@ zftl_debug_proc_write: mov x0, x24 lsl w3, w3, 7 bl rknand_print_hex -.L3078: +.L3254: add x19, x19, 16 cmp x19, x25 - bne .L3079 + bne .L3255 mov w0, 300 add x20, x20, :lo12:.LANCHOR0 bl msleep @@ -19356,8 +20713,8 @@ zftl_debug_proc_write: str w0, [sp,8] ldr w0, [x7,12] str w0, [sp,16] - adrp x0, .LC209 - add x0, x0, :lo12:.LC209 + adrp x0, .LC228 + add x0, x0, :lo12:.LC228 ldr w3, [x6] ldr w2, [x19,52] ldr w4, [x6,4] @@ -19366,61 +20723,61 @@ zftl_debug_proc_write: ldr w6, [x6,12] bl printk ldrb w3, [x20,2832] - adrp x0, .LC248 - add x0, x0, :lo12:.LC248 + adrp x0, .LC267 + add x0, x0, :lo12:.LC267 ldr x1, [x19,8] mov w2, 4 lsl w3, w3, 7 - b .L3094 -.L3077: - adrp x1, .LC249 + b .L3270 +.L3253: + adrp x1, .LC268 mov x0, x19 - add x1, x1, :lo12:.LC249 + add x1, x1, :lo12:.LC268 mov x2, 7 bl memcmp - cbnz w0, .L3080 + cbnz w0, .L3256 bl dump_ftl_info - b .L3076 -.L3080: - adrp x1, .LC250 + b .L3252 +.L3256: + adrp x1, .LC269 mov x0, x19 - add x1, x1, :lo12:.LC250 + add x1, x1, :lo12:.LC269 mov x2, 9 bl memcmp - cbnz w0, .L3081 + cbnz w0, .L3257 add x1, x29, 192 add x0, x19, 9 str x0, [x1,-88]! - bl rk_simple_strtoull.constprop.29 + bl rk_simple_strtoull.constprop.33 str w0, [x29,100] - adrp x1, .LANCHOR0+3336 - strh w0, [x1,#:lo12:.LANCHOR0+3336] + adrp x1, .LANCHOR0+3360 + strh w0, [x1,#:lo12:.LANCHOR0+3360] bl dump_all_list_info - b .L3076 -.L3081: - adrp x1, .LC251 + b .L3252 +.L3257: + adrp x1, .LC270 mov x0, x19 - add x1, x1, :lo12:.LC251 + add x1, x1, :lo12:.LC270 mov x2, 8 bl memcmp - cbz w0, .L3076 - adrp x1, .LC252 + cbz w0, .L3252 + adrp x1, .LC271 mov x0, x19 - add x1, x1, :lo12:.LC252 + add x1, x1, :lo12:.LC271 mov x2, 8 bl memcmp - cbnz w0, .L3083 + cbnz w0, .L3259 add x20, x29, 192 - adrp x0, .LC245 + adrp x0, .LC264 add x1, x19, 8 - add x0, x0, :lo12:.LC245 + add x0, x0, :lo12:.LC264 str x1, [x20,-88]! bl printk ldr x0, [x29,104] mov x1, x20 adrp x20, .LANCHOR0 add x20, x20, :lo12:.LANCHOR0 - bl rk_simple_strtoull.constprop.29 + bl rk_simple_strtoull.constprop.33 str w0, [x29,100] mov w0, 1 bl buf_alloc @@ -19438,8 +20795,8 @@ zftl_debug_proc_write: str w0, [sp,8] ldr w0, [x7,12] str w0, [sp,16] - adrp x0, .LC209 - add x0, x0, :lo12:.LC209 + adrp x0, .LC228 + add x0, x0, :lo12:.LC228 ldr w3, [x6] ldr w4, [x6,4] ldr w5, [x6,8] @@ -19448,129 +20805,129 @@ zftl_debug_proc_write: ldr w7, [x7] bl printk ldrb w3, [x20,2832] - adrp x0, .LC204 + adrp x0, .LC223 ldr x1, [x19,8] - add x0, x0, :lo12:.LC204 + add x0, x0, :lo12:.LC223 mov w2, 4 lsl w3, w3, 7 bl rknand_print_hex ldrb w3, [x20,2832] - adrp x0, .LC205 + adrp x0, .LC224 ldr x1, [x19,24] - add x0, x0, :lo12:.LC205 + add x0, x0, :lo12:.LC224 mov w2, 4 lsl w3, w3, 1 -.L3094: +.L3270: bl rknand_print_hex mov x0, x19 bl buf_free - b .L3076 -.L3083: - adrp x1, .LC253 + b .L3252 +.L3259: + adrp x1, .LC272 mov x0, x19 - add x1, x1, :lo12:.LC253 + add x1, x1, :lo12:.LC272 mov x2, 8 bl memcmp - cbnz w0, .L3084 + cbnz w0, .L3260 add x20, x29, 192 - adrp x0, .LC245 + adrp x0, .LC264 add x1, x19, 8 - add x0, x0, :lo12:.LC245 + add x0, x0, :lo12:.LC264 str x1, [x20,-88]! bl printk ldr x0, [x29,104] mov x1, x20 - bl rk_simple_strtoull.constprop.29 + bl rk_simple_strtoull.constprop.33 str w0, [x29,100] mov x1, x22 bl ftl_sblk_dump - b .L3076 -.L3084: - adrp x1, .LC254 + b .L3252 +.L3260: + adrp x1, .LC273 mov x0, x19 - add x1, x1, :lo12:.LC254 + add x1, x1, :lo12:.LC273 mov x2, 10 bl memcmp - cbnz w0, .L3085 + cbnz w0, .L3261 add x20, x29, 192 - adrp x0, .LC245 + adrp x0, .LC264 add x1, x19, 10 - add x0, x0, :lo12:.LC245 + add x0, x0, :lo12:.LC264 str x1, [x20,-88]! bl printk ldr x0, [x29,104] mov x1, x20 - bl rk_simple_strtoull.constprop.29 + bl rk_simple_strtoull.constprop.33 str w0, [x29,100] adrp x1, .LANCHOR2 str w0, [x1,#:lo12:.LANCHOR2] - b .L3076 -.L3085: - adrp x1, .LC255 + b .L3252 +.L3261: + adrp x1, .LC274 mov x2, 8 mov x0, x19 - add x1, x1, :lo12:.LC255 + add x1, x1, :lo12:.LC274 bl memcmp mov w2, w0 str x2, [x29,88] - cbnz w0, .L3086 + cbnz w0, .L3262 add x1, x19, 8 - adrp x0, .LC245 + adrp x0, .LC264 add x19, x29, 192 - add x0, x0, :lo12:.LC245 + add x0, x0, :lo12:.LC264 str x1, [x19,-88]! bl printk ldr x0, [x29,104] mov x1, x19 - bl rk_simple_strtoull.constprop.29 + bl rk_simple_strtoull.constprop.33 mov w19, w0 bl lpa_hash_get_ppa str w0, [x29,100] cmn w0, #1 ldr x2, [x29,88] - bne .L3087 + bne .L3263 mov w0, w19 add x1, x29, 100 bl pm_log2phys -.L3087: - adrp x0, .LC256 +.L3263: + adrp x0, .LC275 ldr w2, [x29,100] mov w1, w19 - add x0, x0, :lo12:.LC256 + add x0, x0, :lo12:.LC275 bl printk - b .L3076 -.L3086: - adrp x0, .LC257 - add x0, x0, :lo12:.LC257 + b .L3252 +.L3262: + adrp x0, .LC276 + add x0, x0, :lo12:.LC276 bl printk - adrp x0, .LC258 - add x0, x0, :lo12:.LC258 + adrp x0, .LC277 + add x0, x0, :lo12:.LC277 bl printk - adrp x0, .LC259 - add x0, x0, :lo12:.LC259 + adrp x0, .LC278 + add x0, x0, :lo12:.LC278 bl printk - adrp x0, .LC260 - add x0, x0, :lo12:.LC260 + adrp x0, .LC279 + add x0, x0, :lo12:.LC279 bl printk - adrp x0, .LC261 - add x0, x0, :lo12:.LC261 + adrp x0, .LC280 + add x0, x0, :lo12:.LC280 bl printk - adrp x0, .LC262 - add x0, x0, :lo12:.LC262 + adrp x0, .LC281 + add x0, x0, :lo12:.LC281 bl printk - adrp x0, .LC263 - add x0, x0, :lo12:.LC263 + adrp x0, .LC282 + add x0, x0, :lo12:.LC282 bl printk - adrp x0, .LC264 - add x0, x0, :lo12:.LC264 + adrp x0, .LC283 + add x0, x0, :lo12:.LC283 bl printk - adrp x0, .LC265 - add x0, x0, :lo12:.LC265 + adrp x0, .LC284 + add x0, x0, :lo12:.LC284 bl printk -.L3076: +.L3252: bl rknand_device_unlock mov x0, x21 -.L3071: +.L3247: sub sp, x29, #32 ldp x19, x20, [sp,48] ldp x21, x22, [sp,64] @@ -19597,118 +20954,118 @@ gc_check_data_one_wl: ldr x0, [x20,2904] ldr x23, [x20,608] add x20, x20, 2896 - cbnz x0, .L3096 + cbnz x0, .L3272 mov w0, 1 bl buf_alloc str x0, [x20,8] -.L3096: +.L3272: add x0, x19, :lo12:.LANCHOR0 ldr x20, [x0,2904] - cbnz x20, .L3097 + cbnz x20, .L3273 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 367 - add x1, x1, 712 + mov w2, 494 + add x1, x1, 744 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3097: +.L3273: mov w24, 0 add x25, x23, 80 add x21, x19, :lo12:.LANCHOR0 adrp x27, .LANCHOR4 -.L3098: +.L3274: ldrb w0, [x25,9] cmp w24, w0 - bge .L3121 + bge .L3297 mov w22, 1 sxtw x28, w24 -.L3107: +.L3283: add x0, x21, 2896 ldrh w1, [x0,20] cmp w22, w1 - bgt .L3122 + bgt .L3298 add x1, x28, 8 - ldrh w2, [x21,3350] + ldrh w2, [x21,3362] ldrh w0, [x0,16] ldrh w1, [x25,x1,lsl 1] mul w1, w1, w2 - ldrb w2, [x21,3257] + ldrb w2, [x21,3281] cmp w2, 3 - bne .L3099 + bne .L3275 add w1, w1, w0 orr w1, w1, w22, lsl 24 - b .L3120 -.L3099: + b .L3296 +.L3275: cmp w2, 2 - bne .L3101 + bne .L3277 sub w0, w0, #1 add w1, w0, w1 add w1, w1, w22 orr w1, w1, 33554432 - b .L3120 -.L3101: + b .L3296 +.L3277: add w1, w1, w0 -.L3120: +.L3296: str w1, [x20,40] mov x0, x20 mov w1, 1 bl sblk_read_page ldr w0, [x20,52] cmn w0, #1 - beq .L3102 + beq .L3278 add x2, x27, :lo12:.LANCHOR4 ldrh w0, [x21,2918] ldr x1, [x20,24] lsl x0, x0, 2 - ldr x3, [x2,1136] + ldr x3, [x2,1152] ldr w4, [x3,x0] ldr w3, [x1,4] cmp w4, w3 - bne .L3102 - ldr x2, [x2,1144] + bne .L3278 + ldr x2, [x2,1160] ldr w2, [x2,x0] ldr w0, [x1,8] cmp w2, w0 - beq .L3103 -.L3102: + beq .L3279 +.L3278: add x26, x27, :lo12:.LANCHOR4 ldrh w0, [x21,2918] add x4, x21, 2896 - ldr x1, [x26,1136] + ldr x1, [x26,1152] ldr w0, [x1,x0,lsl 2] cmn w0, #1 - beq .L3103 + beq .L3279 ldrb w5, [x25,9] - adrp x0, .LC266 - ldrh w3, [x21,3274] - add x0, x0, :lo12:.LC266 + adrp x0, .LC285 + ldrh w3, [x21,3298] + add x0, x0, :lo12:.LC285 mov w2, 4 str x4, [x29,104] mul w3, w5, w3 bl rknand_print_hex ldrb w5, [x25,9] - adrp x0, .LC267 - ldrh w3, [x21,3274] - add x0, x0, :lo12:.LC267 - ldr x1, [x26,1144] + adrp x0, .LC286 + ldrh w3, [x21,3298] + add x0, x0, :lo12:.LC286 + ldr x1, [x26,1160] mov w2, 4 mul w3, w5, w3 bl rknand_print_hex adrp x0, .LANCHOR2 ldr x4, [x29,104] ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 10, .L3104 + tbz x0, 10, .L3280 ldr x7, [x20,24] ldrh w4, [x4,22] - ldr x5, [x26,1144] + ldr x5, [x26,1160] ldr w0, [x7,12] lsl x4, x4, 2 - ldr x3, [x26,1136] + ldr x3, [x26,1152] str w0, [sp] - adrp x0, .LC268 - add x0, x0, :lo12:.LC268 + adrp x0, .LC287 + add x0, x0, :lo12:.LC287 ldr w3, [x3,x4] ldr w6, [x7,4] ldr w4, [x5,x4] @@ -19717,7 +21074,7 @@ gc_check_data_one_wl: ldr w2, [x20,52] ldr w7, [x7,8] bl printk -.L3104: +.L3280: add x19, x19, :lo12:.LANCHOR0 mov x1, 0 ldr x0, [x19,608] @@ -19727,27 +21084,27 @@ gc_check_data_one_wl: ldrh w1, [x23,80] strh wzr, [x0,x1,lsl 1] mov w0, -1 - b .L3105 -.L3103: + b .L3281 +.L3279: ldrh w0, [x21,2918] add w22, w22, 1 add w0, w0, 1 strh w0, [x21,2918] - b .L3107 -.L3122: + b .L3283 +.L3298: add w24, w24, 1 - b .L3098 -.L3121: + b .L3274 +.L3297: add x19, x19, :lo12:.LANCHOR0 ldrh w1, [x19,2912] - ldrb w3, [x19,3348] + ldrb w3, [x19,3282] add w0, w1, 1 strh w0, [x19,2912] mov w0, 0 - cbz w3, .L3105 + cbz w3, .L3281 add w1, w1, 2 strh w1, [x19,2912] -.L3105: +.L3281: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -19773,41 +21130,41 @@ ftl_update_l2p_map: stp x25, x26, [sp,64] stp x27, x28, [sp,80] ldrb w1, [x23,9] - ldrh w24, [x0,3300] + ldrh w24, [x0,3324] ldrh w20, [x23,12] - ldr x0, [x0,3872] + ldr x0, [x0,3880] mul w24, w24, w1 add x20, x0, x20, lsl 2 add x0, x20, x24, sxtw 2 ldr w0, [x0,-4] cmn w0, #1 - beq .L3124 + beq .L3300 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1575 - add x1, x1, 736 + mov w2, 1640 + add x1, x1, 768 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3124: - adrp x0, .LC270 +.L3300: + adrp x0, .LC289 mov x28, 0 - add x0, x0, :lo12:.LC270 - adrp x27, .LC269 + add x0, x0, :lo12:.LC289 + adrp x27, .LC288 str x0, [x29,120] - adrp x0, .LC271 - add x0, x0, :lo12:.LC271 + adrp x0, .LC290 + add x0, x0, :lo12:.LC290 mov w22, w28 str x0, [x29,112] - add x27, x27, :lo12:.LC269 -.L3125: + add x27, x27, :lo12:.LC288 +.L3301: cmp w28, w24 mov w25, w28 - bge .L3152 + bge .L3328 ldr w2, [x20,x28,lsl 2] cmn w2, #1 - beq .L3126 + beq .L3302 add x0, x19, :lo12:.LANCHOR0 ldrb w21, [x0,2832] adrp x0, .LANCHOR2 @@ -19815,24 +21172,24 @@ ftl_update_l2p_map: ldr w0, [x0,#:lo12:.LANCHOR2] udiv w21, w2, w21 and w21, w21, 65535 - tbz x0, 12, .L3130 + tbz x0, 12, .L3306 mov x0, x27 mov w1, w21 mov w3, w28 bl printk -.L3130: +.L3306: sbfiz x26, x25, 2, 32 ldr w0, [x20,x26] cmn w0, #1 - beq .L3128 + beq .L3304 add x3, x19, :lo12:.LANCHOR0 ldrb w1, [x3,2832] lsl w1, w1, 7 udiv w0, w0, w1 cmp w21, w0, uxth - bne .L3128 + bne .L3304 ldrb w0, [x23,9] - ldrh w2, [x3,3350] + ldrh w2, [x3,3362] str x3, [x29,104] sdiv w1, w25, w0 msub w0, w1, w0, w25 @@ -19844,13 +21201,13 @@ ftl_update_l2p_map: ldr w1, [x20,x26] bl pm_ppa_update_check ldr x3, [x29,104] - cbz w0, .L3129 - ldr x1, [x3,3872] + cbz w0, .L3305 + ldr x1, [x3,3880] mov w2, 4 ldr x0, [x29,112] mov w3, w24 bl rknand_print_hex -.L3129: +.L3305: ldr w0, [x20,x26] add x1, x29, 140 mov w2, 1 @@ -19859,27 +21216,27 @@ ftl_update_l2p_map: uxth w22, w22 mov w0, -1 str w0, [x20,x26] -.L3128: +.L3304: add w25, w25, 1 cmp w25, w24 - bne .L3130 -.L3126: + bne .L3306 +.L3302: add x28, x28, 1 - b .L3125 -.L3152: + b .L3301 +.L3328: adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L3132 + tbz x0, 12, .L3308 add x0, x19, :lo12:.LANCHOR0 ldrh w1, [x23] mov w2, w22 ubfiz x3, x1, 1, 16 ldr x4, [x0,600] - adrp x0, .LC272 - add x0, x0, :lo12:.LC272 + adrp x0, .LC291 + add x0, x0, :lo12:.LC291 ldrh w3, [x4,x3] bl printk -.L3132: +.L3308: add x19, x19, :lo12:.LANCHOR0 ldrh w1, [x23] ldr x0, [x19,600] @@ -19896,34 +21253,57 @@ ftl_update_l2p_map: .global ftl_alloc_new_data_sblk .type ftl_alloc_new_data_sblk, %function ftl_alloc_new_data_sblk: - stp x29, x30, [sp, -32]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] - mov x19, x0 + stp x19, x20, [sp,16] + str x21, [sp,32] + mov x20, x0 + ldrh w21, [x0] bl ftl_update_l2p_map bl pm_flush - ldrh w0, [x19] + ldrh w0, [x20] mov w1, 65535 cmp w0, w1 - beq .L3154 + beq .L3330 bl zftl_insert_data_list -.L3154: - adrp x0, .LANCHOR0+608 +.L3330: + adrp x19, .LANCHOR0 mov w2, 2 + add x19, x19, :lo12:.LANCHOR0 mov w1, 3 - ldr x0, [x0,#:lo12:.LANCHOR0+608] + ldr x0, [x19,608] add x0, x0, 16 - cmp x19, x0 - mov x0, x19 + cmp x20, x0 + mov x0, x20 csel w1, w2, w1, eq bl ftl_open_sblk_init + ldr x0, [x19,608] + ldr w0, [x0,560] + cmp w0, w21 + bne .L3332 + mov w20, 65535 + cmp w21, w20 + beq .L3332 + adrp x0, .LC292 + mov w1, w21 + add x0, x0, :lo12:.LC292 + bl printk + ldr x0, [x19,608] + ldr w0, [x0,564] + bl gc_mark_bad_ppa + ldr x0, [x19,608] + mov w1, -1 + str w20, [x0,560] + str w1, [x0,564] +.L3332: bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush bl lpa_rebuild_hash - ldr x19, [sp,16] + ldr x21, [sp,32] mov w0, 0 - ldp x29, x30, [sp], 32 + ldp x19, x20, [sp,16] + ldp x29, x30, [sp], 48 ret .size ftl_alloc_new_data_sblk, .-ftl_alloc_new_data_sblk .align 2 @@ -19941,15 +21321,15 @@ ftl_write_commit: add x0, x0, :lo12:.LANCHOR4 str x0, [x29,120] stp x19, x20, [sp,16] - add x0, x0, 1266 + add x0, x0, 1265 str x0, [x29,104] stp x21, x22, [sp,32] stp x25, x26, [sp,64] stp x27, x28, [sp,80] -.L3158: +.L3341: ldrb w0, [x24,2856] adrp x21, .LANCHOR0 - cbz w0, .L3160 + cbz w0, .L3343 ldrb w1, [x24,2888] sub w0, w0, #1 ldr x2, [x29,112] @@ -19962,16 +21342,16 @@ ftl_write_commit: strb w1, [x24,2888] ldr w1, [x27,36] cmp w1, w0 - bcc .L3161 + bcc .L3344 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 496 - add x1, x1, 760 + mov w2, 502 + add x1, x1, 792 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3161: +.L3344: ldr x0, [x29,128] add x1, x21, :lo12:.LANCHOR0 add x4, x1, 784 @@ -19979,32 +21359,32 @@ ftl_write_commit: ldr w2, [x1,2840] ldr w23, [x0,36] cmp w23, w2 - bcc .L3162 + bcc .L3345 mov x0, x27 bl buf_free mov w0, -1 - b .L3216 -.L3162: + b .L3399 +.L3345: ldr x25, [x0,8] ldr x28, [x0,24] ldrb w22, [x0,57] ldrb w20, [x0,56] ldrb w0, [x1,2857] - cbz w0, .L3164 + cbz w0, .L3347 ldr x0, [x29,120] - ldrb w3, [x0,1266] + ldrb w3, [x0,1265] add x3, x4, x3, lsl 6 -.L3165: +.L3348: ldrb w5, [x3] cmp w5, 255 - beq .L3218 + beq .L3401 sbfiz x3, x5, 6, 32 add x3, x4, x3 - b .L3165 -.L3218: + b .L3348 +.L3401: ldr w0, [x3,36] cmp w0, w23 - bne .L3164 + bne .L3347 ldr x0, [x3,8] ubfiz x1, x22, 9, 8 lsl w2, w20, 9 @@ -20013,29 +21393,29 @@ ftl_write_commit: bl ftl_memcpy mov x0, x27 bl buf_free - b .L3158 -.L3164: + b .L3341 +.L3347: mov w0, w23 bl lpa_hash_get_ppa str w0, [x29,156] cmn w0, #1 - bne .L3168 + bne .L3351 mov w0, w23 add x1, x29, 156 mov w2, 0 bl pm_log2phys -.L3168: +.L3351: add x4, x21, :lo12:.LANCHOR0 mov w3, 0 add x4, x4, 784 ldr x19, [x4,-176] add x19, x19, 16 -.L3171: +.L3354: ldr w0, [x4,36] cmp w0, w23 - bne .L3169 + bne .L3352 ldrb w5, [x4,2] - tbz x5, 3, .L3169 + tbz x5, 3, .L3352 add x0, x21, :lo12:.LANCHOR0 ubfiz x3, x3, 6, 32 add x0, x0, 784 @@ -20045,22 +21425,22 @@ ftl_write_commit: strb w5, [x3,2] ldr x26, [x3,8] str w0, [x29,156] - b .L3170 -.L3169: + b .L3353 +.L3352: add w3, w3, 1 add x4, x4, 64 cmp w3, 32 - bne .L3171 + bne .L3354 mov x26, 0 -.L3170: +.L3353: add x3, x21, :lo12:.LANCHOR0 str wzr, [x29,136] ldrb w0, [x3,2832] cmp w20, w0 - bcs .L3172 + bcs .L3355 add w20, w22, w20 - cbz x26, .L3173 - cbz w22, .L3174 + cbz x26, .L3356 + cbz w22, .L3357 mov x0, x25 mov x1, x26 lsl w2, w22, 9 @@ -20069,28 +21449,28 @@ ftl_write_commit: ldr x3, [x29,136] ldr x19, [x3,608] add x19, x19, 48 -.L3174: +.L3357: add x0, x21, :lo12:.LANCHOR0 ldrb w2, [x0,2832] cmp w20, w2 - bcc .L3175 + bcc .L3358 ldr x19, [x0,608] add x19, x19, 16 - b .L3217 -.L3175: + b .L3400 +.L3358: ubfiz x1, x20, 9, 9 sub w2, w2, w20 add x0, x25, x1 lsl w2, w2, 9 add x1, x26, x1 bl ftl_memcpy -.L3217: +.L3400: str wzr, [x29,136] - b .L3172 -.L3173: + b .L3355 +.L3356: ldr w0, [x29,156] cmn w0, #1 - beq .L3176 + beq .L3359 mov w0, 1 bl buf_alloc mov x26, x0 @@ -20105,11 +21485,11 @@ ftl_write_commit: add w1, w1, 1 str w1, [x29,136] cmp w0, w23 - bne .L3177 + bne .L3360 ldr w0, [x26,52] cmn w0, #1 - bne .L3178 -.L3177: + bne .L3361 +.L3360: add x0, x21, :lo12:.LANCHOR0 ldr w2, [x29,156] mov w3, w23 @@ -20117,99 +21497,99 @@ ftl_write_commit: ldr w0, [x1,552] add w0, w0, 1 str w0, [x1,552] - adrp x0, .LC273 + adrp x0, .LC293 ldrb w1, [x26,1] - add x0, x0, :lo12:.LC273 + add x0, x0, :lo12:.LC293 ldr w4, [x26,52] bl printk - adrp x0, .LC205 + adrp x0, .LC224 mov w2, 4 ldr x1, [x26,24] - add x0, x0, :lo12:.LC205 + add x0, x0, :lo12:.LC224 mov w3, w2 bl rknand_print_hex -.L3178: +.L3361: ldr x0, [x26,24] ldr w0, [x0,4] cmp w0, w23 - bne .L3179 + bne .L3362 ldr w0, [x26,52] cmn w0, #1 - bne .L3180 -.L3179: + bne .L3363 +.L3362: adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 567 - add x1, x1, 760 + mov w2, 573 + add x1, x1, 792 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3180: - cbz w22, .L3181 +.L3363: + cbz w22, .L3364 ldr w0, [x29,156] lsl w2, w22, 9 cmn w0, #1 - beq .L3182 + beq .L3365 ldr x1, [x26,8] mov x0, x25 bl ftl_memcpy - b .L3183 -.L3176: - cbz w22, .L3181 + b .L3366 +.L3359: + cbz w22, .L3364 lsl w2, w22, 9 -.L3182: +.L3365: mov x0, x25 mov w1, 0 bl ftl_memset -.L3183: +.L3366: add x0, x21, :lo12:.LANCHOR0 ldr x19, [x0,608] add x19, x19, 48 -.L3181: +.L3364: add x0, x21, :lo12:.LANCHOR0 ldrb w2, [x0,2832] cmp w20, w2 - bcc .L3184 - bls .L3185 + bcc .L3367 + bls .L3368 ldr x19, [x0,608] add x19, x19, 16 - b .L3185 -.L3184: + b .L3368 +.L3367: ldr w0, [x29,156] sub w2, w2, w20 lsl w2, w2, 9 cmn w0, #1 ubfiz x0, x20, 7, 9 - beq .L3186 + beq .L3369 ldr x1, [x26,8] lsl x20, x0, 2 add x0, x25, x20 add x1, x1, x20 bl ftl_memcpy - b .L3185 -.L3186: + b .L3368 +.L3369: add x0, x25, x0, lsl 2 mov w1, 0 bl ftl_memset -.L3185: - cbz x26, .L3172 +.L3368: + cbz x26, .L3355 ldrb w0, [x26,2] mov x1, x26 and w0, w0, -9 strb w0, [x26,2] add x0, x21, :lo12:.LANCHOR0 - add x0, x0, 3895 + add x0, x0, 3909 bl buf_remove_buf mov x0, x26 bl buf_free -.L3172: +.L3355: ldrh w0, [x19,6] - cbnz w0, .L3187 + cbnz w0, .L3370 bl ftl_flush mov x0, x19 bl ftl_alloc_new_data_sblk -.L3187: +.L3370: mov x0, x19 add x20, x21, :lo12:.LANCHOR0 bl ftl_get_new_free_page @@ -20249,11 +21629,11 @@ ftl_write_commit: str w0, [x1,1268] cmp w2, 2 adrp x0, .LANCHOR4 - bhi .L3188 + bhi .L3371 ldrh w1, [x19,6] cmp w1, 1 - bne .L3160 -.L3188: + bne .L3343 +.L3371: ldrb w1, [x19,5] mov w4, 2 add x6, x21, :lo12:.LANCHOR0 @@ -20264,22 +21644,22 @@ ftl_write_commit: cmp w1, 1 add x1, x0, :lo12:.LANCHOR4 csel w4, w4, w2, ne - ldrb w5, [x1,1266] + ldrb w5, [x1,1265] mov w1, 0 mov w3, w5 -.L3192: +.L3375: cmp w1, w4 - beq .L3219 + beq .L3402 ubfiz x3, x3, 6, 8 add w1, w1, 1 ldrb w3, [x6,x3] - b .L3192 -.L3219: + b .L3375 +.L3402: add x0, x0, :lo12:.LANCHOR4 uxtb w1, w1 sub w2, w2, w1 ubfiz x5, x5, 6, 8 - strb w3, [x0,1266] + strb w3, [x0,1265] add x0, x21, :lo12:.LANCHOR0 add x0, x0, 784 strb w2, [x0,2073] @@ -20287,20 +21667,20 @@ ftl_write_commit: bl sblk_prog_page ldrh w0, [x19,6] cmp w0, 1 - bne .L3160 + bne .L3343 bl sblk_wait_write_queue_completed bl ftl_write_completed mov x0, x19 bl ftl_write_last_log_page mov x0, x19 bl ftl_alloc_new_data_sblk -.L3160: +.L3343: add x21, x21, :lo12:.LANCHOR0 ldrb w19, [x21,2856] - cbnz w19, .L3158 + cbnz w19, .L3341 bl ftl_write_completed mov w0, w19 -.L3216: +.L3399: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -20323,12 +21703,12 @@ gc_do_copy_back: stp x23, x24, [sp,64] stp x25, x26, [sp,80] stp x27, x28, [sp,96] - ldrb w0, [x21,3273] + ldrb w0, [x21,3297] ldr x22, [x21,608] - cbnz w0, .L3221 + cbnz w0, .L3404 bl buf_alloc mov x20, x0 - cbz x0, .L3220 + cbz x0, .L3403 ldrh w22, [x21,2922] mov w0, w22 add w22, w22, 1 @@ -20341,60 +21721,60 @@ gc_do_copy_back: bl sblk_read_page ldr w0, [x20,52] cmp w0, 512 - beq .L3274 + beq .L3459 cmn w0, #1 - bne .L3223 -.L3274: + bne .L3406 +.L3459: adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 601 - add x1, x1, 784 + mov w2, 731 + add x1, x1, 816 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3223: +.L3406: ldr x0, [x20,24] ldr w21, [x0,4] mov w0, w21 bl lpa_hash_get_ppa str w0, [x29,144] cmn w0, #1 - bne .L3225 + bne .L3408 mov w0, w21 add x1, x29, 144 mov w2, 0 bl pm_log2phys -.L3225: +.L3408: ldr w22, [x29,144] cmp w22, w23 - bne .L3226 + bne .L3409 add x1, x19, :lo12:.LANCHOR0 add x0, x1, 784 add x1, x1, 2832 -.L3229: +.L3412: ldr w2, [x0,36] cmp w2, w21 - bne .L3227 + bne .L3410 ldrb w2, [x0,2] - tbz x2, 1, .L3227 + tbz x2, 1, .L3410 mov x0, x20 bl buf_free adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3220 + tbz x0, 8, .L3403 add x19, x19, :lo12:.LANCHOR0 - adrp x0, .LC274 + adrp x0, .LC294 mov w1, w21 mov w2, w22 - add x0, x0, :lo12:.LC274 + add x0, x0, :lo12:.LC294 ldrh w3, [x19,2922] bl printk - b .L3220 -.L3227: + b .L3403 +.L3410: add x0, x0, 64 cmp x0, x1 - bne .L3229 + bne .L3412 add x23, x19, :lo12:.LANCHOR0 ldrb w1, [x20,2] str w21, [x20,36] @@ -20409,20 +21789,20 @@ gc_do_copy_back: str w0, [x20,32] adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3230 + tbz x0, 8, .L3413 ldr w2, [x29,144] mov w0, w21 str x2, [x29,136] bl lpa_hash_get_ppa mov w3, w0 ldr x2, [x29,136] - adrp x0, .LC275 + adrp x0, .LC295 ldrh w5, [x23,2922] - add x0, x0, :lo12:.LC275 + add x0, x0, :lo12:.LC295 mov w1, w21 mov w4, w22 bl printk -.L3230: +.L3413: add x19, x19, :lo12:.LANCHOR0 mov x0, x20 bl ftl_gc_write_buf @@ -20434,34 +21814,34 @@ gc_do_copy_back: ldrh w0, [x19,2924] add w0, w0, 1 strh w0, [x19,2924] - b .L3220 -.L3226: + b .L3403 +.L3409: adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3232 + tbz x0, 8, .L3415 mov w0, w21 add x19, x19, :lo12:.LANCHOR0 bl lpa_hash_get_ppa mov w3, w0 ldrh w5, [x19,2922] - adrp x0, .LC275 - add x0, x0, :lo12:.LC275 + adrp x0, .LC295 + add x0, x0, :lo12:.LC295 mov w1, w21 mov w2, w22 mov w4, w23 bl printk -.L3232: +.L3415: mov x0, x20 bl buf_free - b .L3220 -.L3221: - ldrb w24, [x21,3257] + b .L3403 +.L3404: + ldrb w24, [x21,3281] add x0, x21, 2896 add x22, x22, 80 cmp w24, 3 - bne .L3233 - ldrb w1, [x21,3272] - cbz w1, .L3234 + bne .L3416 + ldrb w1, [x21,3296] + cbz w1, .L3417 ldrb w20, [x22,9] ldrh w21, [x0,314] str w24, [x29,136] @@ -20470,13 +21850,13 @@ gc_do_copy_back: sdiv w23, w21, w23 madd w20, w23, w20, w21 uxth w20, w20 - b .L3236 -.L3234: + b .L3419 +.L3417: ldrh w20, [x0,314] adrp x0, .LANCHOR2 ldrb w21, [x22,9] add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 1720 + add x0, x0, 1784 str w24, [x29,136] sdiv w1, w20, w21 msub w20, w1, w21, w20 @@ -20488,48 +21868,48 @@ gc_do_copy_back: cmp w25, 1 add w21, w21, w21, lsl 1 uxth w21, w21 - bne .L3237 - b .L3236 -.L3233: + bne .L3420 + b .L3419 +.L3416: ldrb w20, [x22,9] - ldrb w1, [x21,3348] + ldrb w1, [x21,3282] ldrh w21, [x0,314] mov w0, 1 sdiv w23, w21, w20 msub w20, w23, w20, w21 uxth w20, w20 - cbz w1, .L3315 + cbz w1, .L3501 mov w0, 2 -.L3315: +.L3501: str w0, [x29,136] -.L3236: +.L3419: mov w25, 0 add x24, x19, :lo12:.LANCHOR0 adrp x3, .LANCHOR4 -.L3239: +.L3422: ldrb w1, [x22,9] ldr w0, [x29,136] mul w0, w0, w1 cmp w25, w0 - bge .L3272 - ldrh w0, [x24,3274] + bge .L3456 + ldrh w0, [x24,3298] add w26, w21, w25 mul w0, w0, w1 sub w0, w0, #1 cmp w26, w0 - beq .L3272 + beq .L3456 add x0, x3, :lo12:.LANCHOR4 sbfiz x26, x26, 2, 32 - ldr x1, [x0,1144] + ldr x1, [x0,1160] ldr w0, [x1,x26] cmn w0, #1 - bne .L3240 + bne .L3423 ldrh w27, [x24,2922] ldrh w0, [x24,2920] str x3, [x29,120] str x1, [x29,128] cmp w0, w27 - bls .L3220 + bls .L3403 mov w0, w27 add w27, w27, 1 bl gc_get_src_ppa_from_index @@ -20537,58 +21917,58 @@ gc_do_copy_back: ldr x1, [x29,128] ldr x3, [x29,120] str w0, [x1,x26] -.L3240: +.L3423: add w25, w25, 1 uxth w25, w25 - b .L3239 -.L3272: + b .L3422 +.L3456: mov w25, 1 -.L3237: +.L3420: adrp x0, .LANCHOR2 str x0, [x29,120] ldr w1, [x0,#:lo12:.LANCHOR2] - tbz x1, 8, .L3242 - adrp x0, .LANCHOR4+1144 + tbz x1, 8, .L3425 + adrp x0, .LANCHOR4+1160 add x4, x19, :lo12:.LANCHOR0 ubfiz x5, x21, 2, 16 mov w1, w23 mov w2, w25 mov w3, w20 - ldr x6, [x0,#:lo12:.LANCHOR4+1144] - adrp x0, .LC276 + ldr x6, [x0,#:lo12:.LANCHOR4+1160] + adrp x0, .LC296 ldrh w4, [x4,3210] - add x0, x0, :lo12:.LC276 + add x0, x0, :lo12:.LC296 ldr w5, [x6,x5] mov w6, w21 bl printk -.L3242: +.L3425: adrp x0, .LC0 mov w27, 0 add x0, x0, :lo12:.LC0 str x0, [x29,112] adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 784 + add x0, x0, 816 str x0, [x29,104] -.L3243: - ldrb w0, [x22,9] - ldr w1, [x29,136] - mul w0, w1, w0 +.L3426: + ldrb w1, [x22,9] + ldr w0, [x29,136] + mul w0, w0, w1 cmp w27, w0 - bge .L3319 + bge .L3505 add w26, w21, w27 sxtw x0, w26 str x0, [x29,128] add x0, x19, :lo12:.LANCHOR0 ldr x1, [x29,128] - ldr x0, [x0,3264] + ldr x0, [x0,3288] ldrb w0, [x0,x1] cmp w0, 255 - bne .L3244 + bne .L3427 mov w0, 0 bl buf_alloc mov x24, x0 - cbnz x0, .L3245 + cbnz x0, .L3428 bl sblk_wait_write_queue_completed bl ftl_write_completed bl gc_write_completed @@ -20596,12 +21976,12 @@ gc_do_copy_back: mov w0, w24 bl buf_alloc mov x24, x0 - cbz x0, .L3220 -.L3245: + cbz x0, .L3403 +.L3428: add x28, x19, :lo12:.LANCHOR0 ldr x2, [x29,128] ldrb w1, [x24,1] - ldr x0, [x28,3264] + ldr x0, [x28,3288] strb w1, [x0,x2] strh w26, [x24,48] ldrb w0, [x28,2903] @@ -20609,26 +21989,26 @@ gc_do_copy_back: add w0, w0, 1 strb w0, [x28,2903] ldrb w1, [x22,9] - ldrh w0, [x28,3274] + ldrh w0, [x28,3298] mul w0, w0, w1 sub w0, w0, #1 cmp w26, w0 adrp x26, .LANCHOR4 - bne .L3246 + bne .L3429 add x26, x26, :lo12:.LANCHOR4 mov w1, -1 - ldr x0, [x26,1136] + ldr x0, [x26,1152] str w1, [x0,x2,lsl 2] - ldrh w0, [x28,3274] - ldrb w2, [x28,3276] - ldr x1, [x26,1136] + ldrh w0, [x28,3298] + ldrb w2, [x28,3300] + ldr x1, [x26,1152] mul w2, w0, w2 ldr x0, [x24,8] lsl w2, w2, 2 bl ftl_memcpy - ldrh w0, [x28,3274] - ldrb w2, [x28,3276] - ldr x1, [x26,1144] + ldrh w0, [x28,3298] + ldrb w2, [x28,3300] + ldr x1, [x26,1160] mul w2, w0, w2 ldr x0, [x24,8] add x0, x0, x2, sxtw 2 @@ -20643,8 +22023,8 @@ gc_do_copy_back: mov w0, 15555 movk w0, 0xf55f, lsl 16 str w0, [x1] - ldrh w0, [x28,3274] - ldrb w1, [x28,3276] + ldrh w0, [x28,3298] + ldrb w1, [x28,3300] ldr x26, [x24,24] mul w1, w0, w1 ldr x0, [x24,8] @@ -20654,96 +22034,96 @@ gc_do_copy_back: ldr x1, [x28,608] ldr x0, [x24,24] ldr w1, [x1,132] - b .L3316 -.L3246: + b .L3502 +.L3429: ldr x0, [x29,128] mov w1, 1 lsl x28, x0, 2 add x0, x26, :lo12:.LANCHOR4 - ldr x0, [x0,1144] + ldr x0, [x0,1160] ldr w0, [x0,x28] str w0, [x24,40] mov x0, x24 bl sblk_read_page ldr w0, [x24,52] cmp w0, 512 - beq .L3247 + beq .L3430 cmn w0, #1 - bne .L3248 -.L3247: + bne .L3431 +.L3430: add x4, x19, :lo12:.LANCHOR0 mov w2, 21 mov w1, 1 - ldrh w0, [x4,3340] + ldrh w0, [x4,3264] sub w2, w2, w0 lsl w2, w1, w2 ldr w1, [x24,40] sub w2, w2, #1 lsr w0, w1, w0 - ldrb w1, [x4,3338] + ldrb w1, [x4,3266] and w0, w2, w0 udiv w0, w0, w1 mov x1, 0 bl ftl_sblk_dump ldr w0, [x24,52] cmp w0, 512 - beq .L3275 + beq .L3460 cmn w0, #1 - bne .L3248 -.L3275: + bne .L3431 +.L3460: ldr x0, [x24,24] mov w1, -1 str w1, [x0,4] -.L3248: +.L3431: ldr w0, [x24,52] cmp w0, 512 - beq .L3276 + beq .L3461 cmn w0, #1 - bne .L3251 -.L3276: + bne .L3434 +.L3461: ldr x1, [x29,104] - mov w2, 716 + mov w2, 846 ldr x0, [x29,112] bl printk bl dump_stack -.L3251: +.L3434: ldr x1, [x24,24] add x0, x19, :lo12:.LANCHOR0 ldr w2, [x1,4] ldr w0, [x0,2840] cmp w2, w0 - bcc .L3253 + bcc .L3436 mov w0, -1 str w0, [x1,4] -.L3253: +.L3436: ldr x0, [x24,24] add x26, x26, :lo12:.LANCHOR4 ldr w1, [x0,4] - ldr x0, [x26,1136] + ldr x0, [x26,1152] str w1, [x0,x28] ldr x0, [x24,24] ldr w1, [x24,40] -.L3316: +.L3502: str w1, [x0,8] -.L3244: +.L3427: add x3, x19, :lo12:.LANCHOR0 ldr x2, [x29,128] add x1, x3, 784 sxtw x5, w27 - ldr x0, [x3,3264] + ldr x0, [x3,3288] ldrb w4, [x0,x2] add x0, x29, 144 mov w2, 2 add x1, x1, x4, lsl 6 str x1, [x0,w27,sxtw 3] - ldrb w0, [x3,3257] + ldrb w0, [x3,3281] strh w2, [x1,50] cmp w0, 3 strb w25, [x1,61] adrp x2, .LANCHOR4 - bne .L3254 + bne .L3437 udiv w0, w27, w0 - ldrh w3, [x3,3350] + ldrh w3, [x3,3362] add x2, x2, :lo12:.LANCHOR4 add w4, w0, w20 add x4, x22, x4, sxtw 1 @@ -20754,54 +22134,54 @@ gc_do_copy_back: orr w3, w3, w23 sub w0, w27, w0 str w3, [x1,40] - ldr x1, [x2,1152] + ldr x1, [x2,1168] uxth w0, w0 add w0, w0, 1 orr w0, w3, w0, lsl 24 str w0, [x1,x4,lsl 2] - b .L3255 -.L3254: + b .L3438 +.L3437: cmp w0, 2 - bne .L3256 - ldrb w6, [x3,3348] + bne .L3439 + ldrb w6, [x3,3282] add x1, x1, 32 - ldrh w0, [x3,3350] - cbnz w6, .L3257 + ldrh w0, [x3,3362] + cbnz w6, .L3440 add w3, w27, w20 add x3, x22, x3, sxtw 1 ldrh w3, [x3,16] madd w0, w3, w0, w23 - b .L3318 -.L3257: + b .L3504 +.L3440: add w3, w20, w27, lsr 1 add x3, x22, x3, sxtw 1 ldrh w3, [x3,16] madd w0, w3, w0, w23 and w3, w27, 1 add w0, w0, w3 -.L3318: +.L3504: orr w0, w0, 33554432 str w0, [x1,8] -.L3256: +.L3439: add x0, x19, :lo12:.LANCHOR0 add x2, x2, :lo12:.LANCHOR4 add x0, x0, 784 add x0, x0, x4, lsl 6 ldr w3, [x0,40] ldrh w1, [x0,48] - ldr x0, [x2,1152] + ldr x0, [x2,1168] str w3, [x0,x1,lsl 2] -.L3255: +.L3438: ldr x0, [x29,120] ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3258 + tbz x0, 8, .L3441 add x0, x29, 144 ldr x1, [x29,128] mov w2, w25 ldr x5, [x0,x5,lsl 3] add x0, x19, :lo12:.LANCHOR0 ldrb w3, [x0,2902] - ldr x0, [x0,3264] + ldr x0, [x0,3288] ldrh w6, [x5,48] ldrb w7, [x5,1] ldrb w4, [x0,x1] @@ -20813,78 +22193,85 @@ gc_do_copy_back: ldr x0, [x5,24] ldr w0, [x0,4] str w0, [sp,8] - adrp x0, .LC277 - add x0, x0, :lo12:.LC277 + adrp x0, .LC297 + add x0, x0, :lo12:.LC297 ldr w5, [x5,40] bl printk -.L3258: +.L3441: add w8, w27, 1 uxth w27, w8 - b .L3243 -.L3319: - add x2, x19, :lo12:.LANCHOR0 - mov w1, 0 - ldrb w0, [x2,3257] + b .L3426 +.L3505: + add x3, x19, :lo12:.LANCHOR0 + ldrb w0, [x3,3281] cmp w0, 3 add x0, x29, 144 - bne .L3302 - ldrb w1, [x2,3272] - cbz w1, .L3261 -.L3264: + bne .L3443 + ldrb w1, [x3,3296] + cbz w1, .L3444 +.L3447: ldr x1, [x29,144] strb wzr, [x1,60] - b .L3262 -.L3261: + b .L3445 +.L3444: cmp w25, 1 mov w2, 9 - beq .L3317 + beq .L3503 cmp w25, 2 - bne .L3264 + bne .L3447 mov w2, 13 -.L3317: +.L3503: ldr x1, [x29,144] strb w2, [x1,60] -.L3262: +.L3445: ldrb w2, [x22,9] add x1, x0, 24 bl sblk_xlc_prog_pages - b .L3265 -.L3302: - ldrb w2, [x22,9] + b .L3448 +.L3443: + ldrb w2, [x3,3282] + cbz w2, .L3487 + ldrb w3, [x3,3283] + mov w2, 0 + cbz w3, .L3487 + bl sblk_3d_mlc_prog_pages + b .L3448 +.L3487: + ldrb w1, [x22,9] ldr w3, [x29,136] - mul w2, w2, w3 - sub w2, w2, #1 - cmp w1, w2 - bge .L3320 - ldr x2, [x0,w1,sxtw 3] - add w1, w1, 1 - ldr x3, [x0,w1,sxtw 3] - uxth w1, w1 + mul w1, w1, w3 + sub w1, w1, #1 + cmp w2, w1 + bge .L3506 + ldr x1, [x0,w2,sxtw 3] + add w2, w2, 1 + ldr x3, [x0,w2,sxtw 3] + uxth w2, w2 ldrb w3, [x3,1] - strb w3, [x2] - b .L3302 -.L3320: - ldr x0, [x0,w2,sxtw 3] + strb w3, [x1] + b .L3487 +.L3506: + ldr x0, [x0,w1,sxtw 3] mov w1, -1 strb w1, [x0] ldrb w1, [x22,9] ldr x0, [x29,144] mul w1, w3, w1 bl sblk_prog_page -.L3265: +.L3448: add x1, x19, :lo12:.LANCHOR0 ldrb w2, [x22,9] - ldrb w3, [x1,3272] - cbz w3, .L3267 + ldrb w3, [x1,3296] + cbz w3, .L3451 add w0, w2, w2, lsl 1 and w2, w0, 1023 - b .L3268 -.L3267: - ldrb w1, [x1,3348] + b .L3452 +.L3451: + ldrb w1, [x1,3282] ubfiz w0, w2, 1, 8 cmp w1, wzr csel w2, w0, w2, ne -.L3268: +.L3452: add x19, x19, :lo12:.LANCHOR0 ldr x1, [x19,2864] ldr w0, [x1,52] @@ -20892,18 +22279,18 @@ gc_do_copy_back: str w0, [x1,52] ldrh w1, [x19,3210] add w0, w2, w1 - ldrh w1, [x19,3274] + ldrh w1, [x19,3298] uxth w0, w0 strh w0, [x19,3210] ldrb w2, [x22,9] mul w1, w1, w2 cmp w0, w1 - blt .L3269 + blt .L3453 ldr x0, [x19,608] strh wzr, [x0,86] -.L3269: +.L3453: bl gc_write_completed -.L3220: +.L3403: sub sp, x29, #16 ldp x19, x20, [sp,32] ldp x21, x22, [sp,48] @@ -20932,720 +22319,737 @@ zftl_do_gc: ldrh w20, [x1,2844] cmp w26, 1 ldrh w0, [x1,2848] - ldr x24, [x1,608] + ldr x22, [x1,608] add w20, w0, w20 - ldrh w22, [x1,2846] + ldrh w21, [x1,2846] uxth w20, w20 - bne .L3322 - adrp x21, .LANCHOR7 - add x1, x21, :lo12:.LANCHOR7 - ldr w23, [x1,-80] - cbnz w23, .L3323 - ldr w1, [x1,-76] - cbz w1, .L3322 -.L3323: + bne .L3508 + adrp x23, .LANCHOR7 + add x1, x23, :lo12:.LANCHOR7 + ldr w24, [x1,-64] + cbnz w24, .L3509 + ldr w1, [x1,-60] + cbz w1, .L3508 +.L3509: add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1,3306] + ldrh w2, [x1,3330] cmp w20, w2, lsr 2 - bls .L3322 + bls .L3508 ldrh w1, [x1,2872] cmp w1, w20 - bcs .L3322 - add w23, w23, 20 + bcs .L3508 + add w24, w24, 20 bl timer_get_time - cmp w23, w0 - bcs .L3324 - add x0, x21, :lo12:.LANCHOR7 - str wzr, [x0,-80] -.L3324: - add x19, x21, :lo12:.LANCHOR7 - ldr w20, [x19,-76] + cmp w24, w0 + bcs .L3510 + add x0, x23, :lo12:.LANCHOR7 + str wzr, [x0,-64] +.L3510: + add x19, x23, :lo12:.LANCHOR7 + ldr w20, [x19,-60] bl timer_get_time add w20, w20, 20 cmp w20, w0 - bcs .L3507 - str wzr, [x19,-76] - b .L3507 -.L3322: + bcs .L3697 + str wzr, [x19,-60] + b .L3697 +.L3508: adrp x23, .LANCHOR4 add x1, x23, :lo12:.LANCHOR4 - ldrb w2, [x1,1130] + ldrb w2, [x1,1146] mov w1, 16 cmp w2, 6 - bhi .L3480 - adrp x1, .L3328 - add x1, x1, :lo12:.L3328 + bhi .L3669 + adrp x1, .L3514 + add x1, x1, :lo12:.L3514 ldrh w1, [x1,w2,uxtw #1] - adr x2, .Lrtx3328 + adr x2, .Lrtx3514 add x1, x2, w1, sxth #2 br x1 -.Lrtx3328: +.Lrtx3514: .section .rodata .align 0 .align 2 -.L3328: - .2byte (.L3327 - .Lrtx3328) / 4 - .2byte (.L3329 - .Lrtx3328) / 4 - .2byte (.L3330 - .Lrtx3328) / 4 - .2byte (.L3331 - .Lrtx3328) / 4 - .2byte (.L3332 - .Lrtx3328) / 4 - .2byte (.L3438 - .Lrtx3328) / 4 - .2byte (.L3334 - .Lrtx3328) / 4 +.L3514: + .2byte (.L3513 - .Lrtx3514) / 4 + .2byte (.L3515 - .Lrtx3514) / 4 + .2byte (.L3516 - .Lrtx3514) / 4 + .2byte (.L3517 - .Lrtx3514) / 4 + .2byte (.L3518 - .Lrtx3514) / 4 + .2byte (.L3625 - .Lrtx3514) / 4 + .2byte (.L3520 - .Lrtx3514) / 4 .text -.L3327: - add x21, x19, :lo12:.LANCHOR0 - add w22, w22, w0 - ldrh w1, [x24,80] - uxth w22, w22 - ldrh w0, [x21,2850] - ldrh w25, [x21,2852] - add w25, w25, w0 - mov w0, 65535 - cmp w1, w0 +.L3513: + add w21, w21, w0 + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x22,80] + uxth w21, w21 + ldrh w1, [x0,2850] + ldrh w25, [x0,2852] + add w25, w25, w1 + mov w1, 65535 + cmp w2, w1 uxth w25, w25 - beq .L3335 - cbnz w26, .L3336 - ldrh w0, [x21,2872] + beq .L3521 + cbnz w26, .L3522 + ldrh w0, [x0,2872] cmp w20, w0, lsl 1 - bge .L3507 -.L3336: - add x21, x19, :lo12:.LANCHOR0 + bge .L3697 +.L3522: + add x24, x19, :lo12:.LANCHOR0 mov w1, 5 - ldrh w0, [x21,3304] + ldrh w0, [x24,3328] add w0, w0, 1 uxth w0, w0 - strh w0, [x21,3304] + strh w0, [x24,3328] bl zftl_get_gc_node uxth w2, w0 mov w1, 65535 cmp w2, w1 - beq .L3338 + beq .L3524 add x3, x23, :lo12:.LANCHOR4 ubfiz x2, x2, 1, 16 - ldr w1, [x3,1132] + ldr w1, [x3,1148] add w1, w1, 1 - str w1, [x3,1132] - ldr x3, [x21,600] + str w1, [x3,1148] + ldr x3, [x24,600] ldrh w2, [x3,x2] - ldrh w3, [x21,3300] + ldrh w3, [x24,3324] cmp w3, w2 - bcs .L3339 - ldrh w3, [x21,576] + bcs .L3525 + ldrh w3, [x24,576] cmp w1, w3, lsr 4 - bls .L3338 - ldrh w1, [x21,2874] + bls .L3524 + ldrh w1, [x24,2874] cmp w1, w2 - bls .L3338 -.L3339: + bls .L3524 +.L3525: add x2, x19, :lo12:.LANCHOR0 mov w1, 0 - ldrb w2, [x2,3273] + ldrb w2, [x2,3297] bl gc_add_sblk - cbz w0, .L3340 + cbz w0, .L3526 add x23, x23, :lo12:.LANCHOR4 mov w0, 1 - str wzr, [x23,1132] - strb w0, [x23,1130] - b .L3507 -.L3338: + str wzr, [x23,1148] + strb w0, [x23,1146] + b .L3697 +.L3524: add x0, x19, :lo12:.LANCHOR0 - strh wzr, [x0,3304] -.L3340: - cmp w22, 15 - mov w21, 2 - bls .L3341 - cbz w25, .L3440 + strh wzr, [x0,3328] +.L3526: + cmp w21, 15 + mov w24, 2 + bls .L3527 + cbz w25, .L3627 add x0, x19, :lo12:.LANCHOR0 - mov w21, 1 + mov w24, 1 ldrh w1, [x0,2854] - ldrh w0, [x0,3308] + ldrh w0, [x0,3332] cmp w1, w0 - bls .L3341 -.L3440: - mov w21, 2 -.L3341: + bls .L3527 +.L3627: + mov w24, 2 +.L3527: adrp x0, .LANCHOR2 ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3342 + tbz x0, 8, .L3528 add x1, x19, :lo12:.LANCHOR0 mov w3, w20 - mov w4, w22 + mov w4, w21 ldr x0, [x1,608] - ldrb w2, [x1,3273] - mov w1, 1850 + ldrb w2, [x1,3297] + mov w1, 1982 ldrh w5, [x0,124] ldrh w6, [x0,120] ldrh w7, [x0,122] - ldrh w0, [x24,80] + ldrh w0, [x22,80] str w0, [sp] - adrp x0, .LC278 - add x0, x0, :lo12:.LC278 + adrp x0, .LC298 + add x0, x0, :lo12:.LC298 bl printk -.L3342: +.L3528: add x19, x19, :lo12:.LANCHOR0 - mov w1, w21 + mov w1, w24 mov w2, 1 - ldrb w0, [x19,3273] + ldrb w0, [x19,3297] bl gc_search_src_blk cmp w0, wzr - ble .L3343 -.L3344: + ble .L3529 +.L3530: add x23, x23, :lo12:.LANCHOR4 mov w0, 1 - b .L3510 -.L3343: - ldrb w0, [x19,3273] + b .L3700 +.L3529: + ldrb w0, [x19,3297] mov w1, 3 mov w2, 1 bl gc_search_src_blk cmp w0, wzr - bgt .L3344 - b .L3507 -.L3335: + bgt .L3530 + b .L3697 +.L3521: + adrp x27, .LANCHOR2 + ldr w1, [x27,#:lo12:.LANCHOR2] + tbz x1, 8, .L3531 + ldrb w2, [x0,3297] + adrp x0, .LC298 + ldrh w5, [x22,124] + add x0, x0, :lo12:.LC298 + ldrh w6, [x22,120] + mov w1, 1994 + ldrh w7, [x22,122] + mov w3, w20 + str w26, [sp] + mov w4, w21 + bl printk +.L3531: cmp w26, 1 - bne .L3345 + bne .L3532 + add x22, x19, :lo12:.LANCHOR0 bl gc_scan_static_data - ldr x0, [x21,608] + ldr x0, [x22,608] ldrh w0, [x0,122] - cbz w0, .L3346 -.L3347: + cbz w0, .L3533 +.L3534: add x19, x19, :lo12:.LANCHOR0 mov w0, 1 add x23, x23, :lo12:.LANCHOR4 - strb w0, [x19,3273] - b .L3510 -.L3346: + strb w0, [x19,3297] + b .L3700 +.L3533: bl gc_static_wearleveling - cbnz w0, .L3347 + cbnz w0, .L3534 bl gc_block_vpn_scan - cbz w22, .L3441 + cbz w21, .L3628 cmp w20, w25 - bcs .L3350 - ldrh w0, [x21,3306] - cmp w20, w0, lsl 1 - blt .L3351 -.L3350: + bcs .L3537 + ldrh w0, [x22,3330] + cmp w0, w20 + bhi .L3538 +.L3537: add x0, x19, :lo12:.LANCHOR0 add w1, w20, w25 - ldrh w2, [x0,3306] - cmp w1, w2, lsl 1 - blt .L3351 + ldrh w2, [x0,3330] + cmp w1, w2 + blt .L3538 ldrh w1, [x0,2854] - ldrh w0, [x0,3308] + ldrh w0, [x0,3332] cmp w1, w0 - bcc .L3441 -.L3351: - add x21, x19, :lo12:.LANCHOR0 - add x27, x23, :lo12:.LANCHOR4 - mov w28, 1 - ldr w1, [x27,1132] - ldrh w0, [x21,576] + bcc .L3628 +.L3538: + add x22, x19, :lo12:.LANCHOR0 + add x28, x23, :lo12:.LANCHOR4 + mov w2, 1 + ldr w1, [x28,1148] + ldrh w0, [x22,576] add w1, w1, 1 - strb w28, [x21,3273] - str w1, [x27,1132] + strb w2, [x22,3297] + str w1, [x28,1148] cmp w1, w0, lsr 5 - bls .L3353 - ldrh w0, [x21,2854] - cmp w0, w22 - bls .L3353 + bls .L3540 + ldrh w0, [x22,2854] + cmp w0, w21 + bls .L3540 mov w1, 5 mov w0, 0 + str x2, [x29,104] bl zftl_get_gc_node uxth w1, w0 mov w0, 65535 cmp w1, w0 - beq .L3441 + beq .L3628 ubfiz x1, x1, 1, 16 - ldr x0, [x21,600] - ldrb w2, [x21,3276] + ldr x0, [x22,600] + ldrb w3, [x22,3300] mov w24, 16 + ldr x2, [x29,104] ldrh w0, [x0,x1] - ldrh w1, [x21,3300] - mul w1, w1, w2 + ldrh w1, [x22,3324] + mul w1, w1, w3 cmp w0, w1 - bgt .L3349 - str wzr, [x27,1132] - mov w0, w28 + bgt .L3536 + str wzr, [x28,1148] + mov w0, w2 mov w1, 2 - b .L3500 -.L3353: + b .L3690 +.L3540: add x0, x19, :lo12:.LANCHOR0 ldrh w2, [x0,2854] - ldrh w1, [x0,3308] + ldrh w1, [x0,3332] cmp w2, w1 - bcc .L3356 + bcc .L3543 mov w0, 1 mov w1, 2 mov w2, w0 - b .L3501 -.L3356: + b .L3691 +.L3543: ldrh w24, [x0,2850] - cbnz w24, .L3357 + cbnz w24, .L3544 ldrh w0, [x0,2852] cmp w0, 8 - bls .L3349 -.L3357: + bls .L3536 +.L3544: mov w0, 1 mov w1, w0 -.L3500: +.L3690: mov w2, 4 -.L3501: +.L3691: bl gc_search_src_blk uxth w0, w0 - cbnz w0, .L3344 - b .L3441 -.L3345: - ldrh w0, [x21,2872] + cbnz w0, .L3530 + b .L3628 +.L3532: + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0,2872] cmp w0, w20 - bcc .L3507 -.L3441: + bcc .L3697 +.L3628: mov w24, 16 -.L3349: - add x21, x19, :lo12:.LANCHOR0 - ldr w0, [x21,2884] - cbz w0, .L3358 +.L3536: + add x22, x19, :lo12:.LANCHOR0 + ldr w0, [x22,2884] + cbz w0, .L3545 mov w0, 1 mov w1, 5 - strb w0, [x21,3273] + strb w0, [x22,3297] mov w0, 0 - str wzr, [x21,2884] + str wzr, [x22,2884] bl zftl_get_gc_node uxth w1, w0 mov w2, 65535 cmp w1, w2 - beq .L3359 + beq .L3546 ubfiz x1, x1, 1, 16 - ldr x2, [x21,600] + ldr x2, [x22,600] ldrh w1, [x2,x1] cmp w1, 8 - bhi .L3359 + bhi .L3546 mov w2, 1 mov w1, 0 - str w2, [x21,2884] + str w2, [x22,2884] bl gc_add_sblk - cbnz w0, .L3344 -.L3359: + cbnz w0, .L3530 +.L3546: mov w1, 4 mov w0, 0 bl zftl_get_gc_node uxth w1, w0 mov w2, 65535 cmp w1, w2 - beq .L3360 + beq .L3547 add x3, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 ldr x2, [x3,600] ldrh w1, [x2,x1] cmp w1, 4 - bhi .L3360 + bhi .L3547 mov w2, 1 mov w1, 0 str w2, [x3,2884] bl gc_add_sblk - cbnz w0, .L3344 -.L3360: + cbnz w0, .L3530 +.L3547: mov w0, 0 bl zftl_get_gc_node.part.12 uxth w1, w0 mov w2, 65535 cmp w1, w2 - beq .L3358 + beq .L3545 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 ldr x3, [x2,600] ldrh w1, [x3,x1] cmp w1, 4 - bhi .L3358 + bhi .L3545 mov w1, 1 str w1, [x2,2884] mov w2, 0 bl gc_add_sblk - cbnz w0, .L3344 -.L3358: - add x21, x19, :lo12:.LANCHOR0 + cbnz w0, .L3530 +.L3545: + add x22, x19, :lo12:.LANCHOR0 mov w0, 1 - ldr x7, [x21,608] - strb w0, [x21,3273] + ldr x7, [x22,608] + strb w0, [x22,3297] ldrh w5, [x7,124] - cbz w5, .L3361 + cbz w5, .L3548 add x23, x23, :lo12:.LANCHOR4 - strb wzr, [x21,3273] - strb w0, [x23,1130] - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3362 + strb wzr, [x22,3297] + strb w0, [x23,1146] + ldr w0, [x27,#:lo12:.LANCHOR2] + tbz x0, 8, .L3549 ldrh w6, [x7,120] - adrp x0, .LC279 + adrp x0, .LC299 ldrh w7, [x7,122] - mov w1, 1948 + mov w1, 2084 mov w2, 0 mov w3, w20 - mov w4, w22 - add x0, x0, :lo12:.LC279 + mov w4, w21 + add x0, x0, :lo12:.LC299 bl printk - b .L3362 -.L3361: - ldrh w2, [x21,2872] + b .L3549 +.L3548: + ldrh w2, [x22,2872] cmp w20, w2 - bcs .L3363 - cbz w22, .L3364 - cmp w22, 16 - bls .L3365 - ldrh w2, [x21,2854] - ldrh w1, [x21,3308] + bcs .L3550 + cbz w21, .L3551 + cmp w21, 16 + bls .L3552 + ldrh w2, [x22,2854] + ldrh w1, [x22,3332] cmp w2, w1 - bhi .L3365 + bhi .L3552 mov w1, w0 mov w2, 4 str x5, [x29,104] bl gc_search_src_blk uxth w0, w0 ldr x5, [x29,104] - cbnz w0, .L3366 - ldrb w0, [x21,3273] - b .L3509 -.L3366: + cbnz w0, .L3553 + ldrb w0, [x22,3297] + b .L3699 +.L3553: mov w1, 5 mov w0, w5 bl zftl_get_gc_node uxth w2, w0 mov w1, 65535 cmp w2, w1 - beq .L3435 + beq .L3622 add x3, x23, :lo12:.LANCHOR4 ubfiz x2, x2, 1, 16 - ldr w1, [x3,1132] + ldr w1, [x3,1148] add w1, w1, 1 - str w1, [x3,1132] - ldr x3, [x21,600] + str w1, [x3,1148] + ldr x3, [x22,600] ldrh w2, [x3,x2] - ldrh w3, [x21,3300] + ldrh w3, [x22,3324] cmp w3, w2 - bcs .L3369 - ldrh w3, [x21,576] + bcs .L3556 + ldrh w3, [x22,576] cmp w1, w3, lsr 4 - bls .L3435 - ldrh w1, [x21,2874] + bls .L3622 + ldrh w1, [x22,2874] cmp w1, w2 - bls .L3435 -.L3369: + bls .L3622 +.L3556: add x19, x19, :lo12:.LANCHOR0 mov w1, 0 - ldrb w2, [x19,3273] + ldrb w2, [x19,3297] bl gc_add_sblk mov w0, 1 str w0, [x19,2884] add x0, x23, :lo12:.LANCHOR4 - str wzr, [x0,1132] - b .L3435 -.L3365: + str wzr, [x0,1148] + b .L3622 +.L3552: mov w0, 1 mov w1, 2 mov w2, w0 bl gc_search_src_blk uxth w0, w0 - cbnz w0, .L3435 + cbnz w0, .L3622 add x19, x19, :lo12:.LANCHOR0 -.L3506: - ldrb w0, [x19,3273] +.L3696: + ldrb w0, [x19,3297] mov w1, 3 mov w2, 2 -.L3503: +.L3693: bl gc_search_src_blk uxth w0, w0 - b .L3367 -.L3364: - adrp x0, .LANCHOR2 - strb w22, [x21,3273] - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3371 - adrp x0, .LC279 + b .L3554 +.L3551: + ldr w0, [x27,#:lo12:.LANCHOR2] + strb w21, [x22,3297] + tbz x0, 8, .L3558 + adrp x0, .LC299 ldrh w6, [x7,120] ldrh w7, [x7,122] - add x0, x0, :lo12:.LC279 - mov w1, 1978 - mov w2, w22 + add x0, x0, :lo12:.LC299 + mov w1, 2114 + mov w2, w21 mov w3, w20 - mov w4, w22 - mov w5, w22 + mov w4, w21 + mov w5, w21 bl printk -.L3371: +.L3558: add x19, x19, :lo12:.LANCHOR0 cmp w20, 16 - ldrb w0, [x19,3273] - bls .L3372 -.L3509: + ldrb w0, [x19,3297] + bls .L3559 +.L3699: mov w1, 3 mov w2, 4 - b .L3503 -.L3372: + b .L3693 +.L3559: mov w1, 1 mov w2, w1 bl gc_search_src_blk uxth w0, w0 - cbnz w0, .L3435 - b .L3506 -.L3363: + cbnz w0, .L3622 + b .L3696 +.L3550: cmp w26, 1 mov w1, w24 - bne .L3480 + bne .L3669 cmp w20, w2, lsl 1 - bge .L3373 - cmp w25, w22, lsr 1 - bcs .L3374 - ldrh w2, [x21,2854] - ldrh w0, [x21,3308] + bge .L3560 + cmp w25, w21, lsr 1 + bcs .L3561 + ldrh w2, [x22,2854] + ldrh w0, [x22,3332] cmp w2, w0 - bcs .L3374 - ldrh w0, [x21,3306] + bcs .L3561 + ldrh w0, [x22,3330] lsr w0, w0, 2 - strh w0, [x21,2872] - b .L3480 -.L3374: + strh w0, [x22,2872] + b .L3669 +.L3561: mov w1, 5 mov w0, 0 bl zftl_get_gc_node - uxth w21, w0 + uxth w22, w0 mov w1, 65535 - mov w27, w21 - cmp w21, w1 - bne .L3375 -.L3380: - cmp w22, 1 - bhi .L3376 - b .L3377 -.L3375: + mov w27, w22 + cmp w22, w1 + bne .L3562 +.L3567: + cmp w21, 1 + bhi .L3563 + b .L3564 +.L3562: add x26, x23, :lo12:.LANCHOR4 add x2, x19, :lo12:.LANCHOR0 - uxtw x21, w21 - ldr w1, [x26,1132] + uxtw x22, w22 + ldr w1, [x26,1148] ldrh w3, [x2,576] add w1, w1, 1 - str w1, [x26,1132] + str w1, [x26,1148] cmp w1, w3, lsr 4 - bls .L3378 + bls .L3565 ldr x1, [x2,600] - str wzr, [x26,1132] - ldrh w3, [x1,x21,lsl 1] + str wzr, [x26,1148] + ldrh w3, [x1,x22,lsl 1] ldrh w1, [x2,2874] cmp w3, w1 - bcs .L3378 + bcs .L3565 mov w1, 0 mov w2, 1 bl gc_add_sblk - cbz w0, .L3378 + cbz w0, .L3565 mov w0, 1 - strb w0, [x26,1130] - b .L3362 -.L3378: + strb w0, [x26,1146] + b .L3549 +.L3565: add x1, x19, :lo12:.LANCHOR0 ldr x0, [x1,600] - ldrh w2, [x0,x21,lsl 1] - ldrh w0, [x1,3300] + ldrh w2, [x0,x22,lsl 1] + ldrh w0, [x1,3324] cmp w2, w0, lsr 1 - bhi .L3379 + bhi .L3566 mov w0, w27 mov w1, 1 mov w2, 0 bl gc_add_sblk - b .L3435 -.L3379: + b .L3622 +.L3566: ldrh w3, [x1,2850] ldrh w0, [x1,2852] add w0, w3, w0 - ldrh w3, [x1,3306] + ldrh w3, [x1,3330] cmp w0, w3, lsl 1 - ble .L3380 + ble .L3567 ldrh w0, [x1,2874] cmp w0, w2 - bcc .L3377 - b .L3380 -.L3376: - add x21, x19, :lo12:.LANCHOR0 + bcc .L3564 + b .L3567 +.L3563: + add x22, x19, :lo12:.LANCHOR0 mov w0, 1 - cmp w22, 16 - strb w0, [x21,3273] - bls .L3381 - ldrh w2, [x21,2854] - ldrh w1, [x21,3308] + cmp w21, 16 + strb w0, [x22,3297] + bls .L3568 + ldrh w2, [x22,2854] + ldrh w1, [x22,3332] cmp w2, w1 - bhi .L3381 + bhi .L3568 mov w1, w0 mov w2, 4 bl gc_search_src_blk uxth w0, w0 - cbnz w0, .L3382 - ldrb w0, [x21,3273] + cbnz w0, .L3569 + ldrb w0, [x22,3297] mov w1, 3 mov w2, 4 - b .L3502 -.L3381: + b .L3692 +.L3568: mov w0, 1 mov w1, 2 mov w2, w0 bl gc_search_src_blk uxth w0, w0 - cbnz w0, .L3382 + cbnz w0, .L3569 add x0, x19, :lo12:.LANCHOR0 mov w1, 3 mov w2, 2 - ldrb w0, [x0,3273] -.L3502: + ldrb w0, [x0,3297] +.L3692: bl gc_search_src_blk uxth w0, w0 -.L3382: +.L3569: add x19, x19, :lo12:.LANCHOR0 cmp w20, w25, lsr 1 - ldrh w1, [x19,3306] - bls .L3504 + ldrh w1, [x19,3330] + bls .L3694 lsr w1, w1, 2 - b .L3505 -.L3377: + b .L3695 +.L3564: cmp w20, w25 add x19, x19, :lo12:.LANCHOR0 - bcs .L3384 + bcs .L3571 mov w0, 4 - strb wzr, [x19,3273] + strb wzr, [x19,3297] bl zftl_get_gc_node.part.12 uxth w0, w0 mov w1, 65535 cmp w0, w1 - beq .L3384 + beq .L3571 ubfiz x0, x0, 1, 16 ldr x1, [x19,600] - ldrb w2, [x19,3276] + ldrb w2, [x19,3300] ldrh w1, [x1,x0] - ldrh w0, [x19,3300] + ldrh w0, [x19,3324] mul w0, w0, w2 cmp w1, w0, lsr 1 - bgt .L3384 + bgt .L3571 mov w1, 3 mov w0, 0 mov w2, 4 bl gc_search_src_blk uxth w0, w0 - ldrh w1, [x19,3306] -.L3504: + ldrh w1, [x19,3330] +.L3694: lsr w1, w1, 1 -.L3505: +.L3695: strh w1, [x19,2872] - b .L3367 -.L3384: - ldrh w0, [x19,3306] + b .L3554 +.L3571: + ldrh w0, [x19,3330] lsr w0, w0, 2 strh w0, [x19,2872] - b .L3362 -.L3373: - ldrh w0, [x21,3306] + b .L3549 +.L3560: + ldrh w0, [x22,3330] mov w24, w5 lsr w0, w0, 2 - strh w0, [x21,2872] - b .L3362 -.L3367: + strh w0, [x22,2872] + b .L3549 +.L3554: mov w1, w24 - cbz w0, .L3480 -.L3435: + cbz w0, .L3669 +.L3622: add x23, x23, :lo12:.LANCHOR4 mov w0, 1 - strb w0, [x23,1130] - b .L3362 -.L3329: + strb w0, [x23,1146] + b .L3549 +.L3515: add x20, x19, :lo12:.LANCHOR0 mov w0, 65535 ldrh w1, [x20,2896] cmp w1, w0 - bne .L3387 + bne .L3574 bl gc_get_src_blk strh w0, [x20,2896] -.L3387: +.L3574: add x0, x19, :lo12:.LANCHOR0 mov w2, 65535 add x1, x0, 2896 ldrh w3, [x0,2896] cmp w3, w2 - beq .L3508 + beq .L3698 ldrh w5, [x1,56] uxtw x4, w3 ldr x2, [x0,584] add x2, x2, x4, lsl 2 - cbz w5, .L3390 + cbz w5, .L3577 mov x0, 0 -.L3389: +.L3576: cmp w5, w0, uxth - bls .L3390 + bls .L3577 add x0, x0, 1 add x6, x1, x0, lsl 1 ldrh w6, [x6,56] cmp w6, w3 - bne .L3389 -.L3395: + bne .L3576 +.L3582: add x19, x19, :lo12:.LANCHOR0 mov w0, -1 strh w0, [x19,2896] - b .L3507 -.L3390: + b .L3697 +.L3577: ldrb w0, [x2,2] tst w0, 192 - beq .L3448 + beq .L3635 and w0, w0, 224 cmp w0, 224 - bne .L3392 -.L3448: + bne .L3579 +.L3635: add x0, x19, :lo12:.LANCHOR0 ldr x0, [x0,600] ldrh w0, [x0,x4,lsl 1] - cbz w0, .L3395 + cbz w0, .L3582 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2211 - add x1, x1, 800 + mov w2, 2347 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L3395 -.L3392: + b .L3582 +.L3579: add x23, x23, :lo12:.LANCHOR4 mov w0, 2 - b .L3510 -.L3330: + b .L3700 +.L3516: bl gc_scan_src_blk cmn w0, #1 - bne .L3396 + bne .L3583 add x23, x23, :lo12:.LANCHOR4 mov w0, 3 -.L3510: - strb w0, [x23,1130] - b .L3507 -.L3396: +.L3700: + strb w0, [x23,1146] + b .L3697 +.L3583: add x1, x19, :lo12:.LANCHOR0 mov w3, 65535 ldrh w0, [x1,2896] cmp w0, w3 - beq .L3344 + beq .L3530 ldrh w3, [x1,2920] add x23, x23, :lo12:.LANCHOR4 - cbz w3, .L3397 + cbz w3, .L3584 mov w0, 4 strh wzr, [x1,2922] - strb w0, [x23,1130] - b .L3507 -.L3397: + strb w0, [x23,1146] + b .L3697 +.L3584: ubfiz x0, x0, 1, 16 ldr x1, [x1,600] mov w2, 1 - strb w2, [x23,1130] + strb w2, [x23,1146] ldrh w0, [x1,x0] - cbz w0, .L3398 + cbz w0, .L3585 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2239 - add x1, x1, 800 + mov w2, 2375 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3398: +.L3585: add x20, x19, :lo12:.LANCHOR0 add x21, x20, 2896 ldrh w0, [x20,2896] @@ -21657,100 +23061,100 @@ zftl_do_gc: add w0, w0, 1 uxth w0, w0 cmp w0, 8 - bhi .L3399 + bhi .L3586 strh w0, [x21,30] - b .L3395 -.L3399: + b .L3582 +.L3586: strh wzr, [x21,30] bl ftl_flush bl pm_flush bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush - b .L3395 -.L3331: + b .L3582 +.L3517: add x21, x19, :lo12:.LANCHOR0 -.L3481: +.L3670: bl gc_scan_src_blk_one_page ldrh w2, [x21,2898] add x0, x21, 2896 - ldrh w1, [x21,3300] + ldrh w1, [x21,3324] cmp w2, w1 - bcs .L3401 + bcs .L3588 cmp w20, 7 - bls .L3481 - b .L3507 -.L3401: + bls .L3670 + b .L3697 +.L3588: ldrh w3, [x0,24] adrp x2, .LANCHOR2 - cbz w3, .L3402 + cbz w3, .L3589 add x23, x23, :lo12:.LANCHOR4 mov w1, 4 strh wzr, [x0,26] - strb w1, [x23,1130] + strb w1, [x23,1146] ldr w1, [x2,#:lo12:.LANCHOR2] - tbz x1, 8, .L3403 + tbz x1, 8, .L3590 ldrh w1, [x0] - adrp x0, .LC280 + adrp x0, .LC300 ldr x4, [x21,600] - add x0, x0, :lo12:.LC280 + add x0, x0, :lo12:.LC300 ubfiz x2, x1, 1, 16 ldrh w2, [x4,x2] bl printk -.L3403: +.L3590: add x0, x19, :lo12:.LANCHOR0 ldrh w2, [x0,2896] ldr x1, [x0,600] ldrh w0, [x0,2920] ldrh w1, [x1,x2,lsl 1] cmp w1, w0 - beq .L3404 + beq .L3591 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2273 - add x1, x1, 800 + mov w2, 2409 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3404: +.L3591: add x19, x19, :lo12:.LANCHOR0 ldrh w1, [x19,2896] ldr x0, [x19,600] ldrh w2, [x19,2920] strh w2, [x0,x1,lsl 1] - b .L3507 -.L3402: + b .L3697 +.L3589: add x23, x23, :lo12:.LANCHOR4 ldrh w1, [x0] mov w0, 1 ldr x20, [x21,584] add x20, x20, x1, uxth 2 - strb w0, [x23,1130] + strb w0, [x23,1146] ldr w0, [x2,#:lo12:.LANCHOR2] - tbz x0, 8, .L3405 + tbz x0, 8, .L3592 ldrb w2, [x20,2] - adrp x0, .LC281 - add x0, x0, :lo12:.LC281 + adrp x0, .LC301 + add x0, x0, :lo12:.LC301 ubfx x2, x2, 5, 3 bl printk -.L3405: +.L3592: ldrb w0, [x20,2] tst w0, 192 - beq .L3449 + beq .L3636 and w0, w0, 224 cmp w0, 224 - bne .L3406 -.L3449: + bne .L3593 +.L3636: adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2283 - add x1, x1, 800 + mov w2, 2419 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3406: +.L3593: add x19, x19, :lo12:.LANCHOR0 add x20, x19, 2896 ldrh w0, [x19,2896] @@ -21761,96 +23165,96 @@ zftl_do_gc: add w0, w0, 1 uxth w0, w0 cmp w0, 8 - bhi .L3408 + bhi .L3595 strh w0, [x20,30] - b .L3507 -.L3408: + b .L3697 +.L3595: strh wzr, [x20,30] - b .L3511 -.L3332: - cbnz w26, .L3409 + b .L3701 +.L3518: + cbnz w26, .L3596 add x0, x19, :lo12:.LANCHOR0 ldrh w0, [x0,2872] cmp w0, w20 - bcc .L3507 -.L3409: - ldrh w1, [x24,80] + bcc .L3697 +.L3596: + ldrh w1, [x22,80] mov w0, 65535 cmp w1, w0 - bne .L3410 - add x22, x19, :lo12:.LANCHOR0 - ldrb w21, [x22,3273] + bne .L3597 + add x24, x19, :lo12:.LANCHOR0 + ldrb w21, [x24,3297] cmp w21, 1 - bne .L3410 + bne .L3597 bl ftl_flush - ldrh w0, [x22,3214] - cbz w0, .L3411 + ldrh w0, [x24,3214] + cbz w0, .L3598 mov w0, w21 -.L3411: +.L3598: mov w1, 5 bl zftl_gc_get_free_sblk uxth w20, w0 mov w0, 65535 cmp w20, w0 - beq .L3413 + beq .L3600 add x0, x19, :lo12:.LANCHOR0 ldr x21, [x0,584] add x21, x21, x20, uxth 2 ldrb w0, [x21,2] tst w0, 224 - beq .L3414 + beq .L3601 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2312 - add x1, x1, 800 + mov w2, 2448 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3414: +.L3601: ldrb w0, [x21,2] mov w1, 5 bfi w0, w1, 5, 3 orr w0, w0, 16 strb w0, [x21,2] -.L3436: +.L3623: mov w0, w20 mov w1, 1 add x19, x19, :lo12:.LANCHOR0 add x23, x23, :lo12:.LANCHOR4 bl ftl_erase_sblk mov w0, 5 - add x1, x24, 96 - strb w0, [x24,84] + add x1, x22, 96 + strb w0, [x22,84] mov w0, w20 bl ftl_get_blk_list_in_sblk uxtb w0, w0 - ldrh w1, [x19,3300] - strb w0, [x24,89] - ldrb w2, [x19,3276] + ldrh w1, [x19,3324] + strb w0, [x22,89] + ldrb w2, [x19,3300] mul w0, w0, w1 - strh w0, [x24,86] + strh w0, [x22,86] mov w1, 255 - ldrh w0, [x19,3274] - strh w20, [x24,80] - strh wzr, [x24,82] + ldrh w0, [x19,3298] + strh w20, [x22,80] + strh wzr, [x22,82] mul w2, w0, w2 - ldr x0, [x23,1136] - strb wzr, [x24,85] + ldr x0, [x23,1152] + strb wzr, [x22,85] lsl w2, w2, 2 - strh wzr, [x24,90] + strh wzr, [x22,90] bl ftl_memset - ldrh w0, [x19,3274] + ldrh w0, [x19,3298] mov w1, 255 - ldrb w2, [x19,3276] + ldrb w2, [x19,3300] mul w2, w0, w2 - ldr x0, [x23,1144] + ldr x0, [x23,1160] lsl w2, w2, 2 bl ftl_memset - ldrh w3, [x19,3274] + ldrh w3, [x19,3298] mov w1, 255 - ldrb w2, [x19,3276] - ldr x0, [x19,3264] + ldrb w2, [x19,3300] + ldr x0, [x19,3288] mul w2, w3, w2 bl ftl_memset ldr x0, [x19,608] @@ -21870,77 +23274,77 @@ zftl_do_gc: strh wzr, [x19,3212] strh wzr, [x19,3216] bl ftl_info_flush - b .L3507 -.L3410: + b .L3697 +.L3597: cmp w26, 1 mov w21, 4 csinc w21, w21, wzr, eq cmp w20, 15 add w0, w21, 4 - add x22, x19, :lo12:.LANCHOR0 + add x24, x19, :lo12:.LANCHOR0 csel w21, w0, w21, ls -.L3417: +.L3604: sub w21, w21, #1 uxtb w21, w21 cmp w21, 255 - beq .L3507 + beq .L3697 bl gc_do_copy_back - ldrb w0, [x22,3273] - cbnz w0, .L3418 - ldrb w0, [x22,2834] + ldrb w0, [x24,3297] + cbnz w0, .L3605 + ldrb w0, [x24,2834] cmp w0, 3 - bhi .L3419 + bhi .L3606 bl ftl_write_commit -.L3419: - ldrh w1, [x22,2922] - ldrh w0, [x22,2920] +.L3606: + ldrh w1, [x24,2922] + ldrh w0, [x24,2920] cmp w1, w0 - bcc .L3417 + bcc .L3604 add x23, x23, :lo12:.LANCHOR4 mov w0, 1 - strb w0, [x23,1130] + strb w0, [x23,1146] bl ftl_write_commit bl ftl_flush - ldrh w1, [x22,2896] - ldr x0, [x22,600] + ldrh w1, [x24,2896] + ldr x0, [x24,600] ldrh w0, [x0,x1,lsl 1] - cbz w0, .L3421 + cbz w0, .L3608 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2387 - add x1, x1, 800 + mov w2, 2523 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3421: +.L3608: add x1, x19, :lo12:.LANCHOR0 ldrh w0, [x1,2896] ldr x3, [x1,600] ubfiz x2, x0, 1, 16 ldrh w4, [x3,x2] - cbnz w4, .L3422 + cbnz w4, .L3609 strh w4, [x3,x2] ldrh w0, [x1,2896] bl ftl_free_sblk - b .L3395 -.L3422: + b .L3582 +.L3609: mov w1, 0 mov w2, 1 bl gc_add_sblk - b .L3395 -.L3418: - add x20, x22, 2896 + b .L3582 +.L3605: + add x20, x24, 2896 ldrh w0, [x20,320] - cbz w0, .L3423 + cbz w0, .L3610 strh wzr, [x20,320] bl sblk_wait_write_queue_completed bl gc_write_completed ldr w0, [x20,324] cmn w0, #1 - beq .L3424 + beq .L3611 bl ftl_mask_bad_block -.L3424: +.L3611: add x20, x19, :lo12:.LANCHOR0 ldr x0, [x20,608] str wzr, [x20,3220] @@ -21954,9 +23358,9 @@ zftl_do_gc: strh w0, [x2,126] strh w0, [x1,130] ldr x0, [x20,2904] - cbz x0, .L3425 + cbz x0, .L3612 bl buf_free -.L3425: +.L3612: add x19, x19, :lo12:.LANCHOR0 add x23, x23, :lo12:.LANCHOR4 str xzr, [x19,2904] @@ -21964,24 +23368,24 @@ zftl_do_gc: adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2425 - add x1, x1, 800 + mov w2, 2561 + add x1, x1, 832 add x0, x0, :lo12:.LC0 - strb wzr, [x23,1130] + strb wzr, [x23,1146] bl printk bl dump_stack - b .L3507 -.L3423: - ldrh w0, [x24,86] + b .L3697 +.L3610: + ldrh w0, [x22,86] cmp w0, 1 - bls .L3426 + bls .L3613 ldrh w1, [x20,26] ldrh w0, [x20,24] cmp w1, w0 - bcc .L3417 + bcc .L3604 add x23, x23, :lo12:.LANCHOR4 mov w0, 1 - strb w0, [x23,1130] + strb w0, [x23,1146] ldrh w0, [x20,56] add w1, w0, 1 add x0, x20, x0, sxtw 1 @@ -21990,15 +23394,15 @@ zftl_do_gc: strh w1, [x0,58] mov w0, -1 strh w0, [x20] - b .L3507 -.L3426: + b .L3697 +.L3613: add x23, x23, :lo12:.LANCHOR4 mov w0, 5 ldrh w1, [x20,26] - strb w0, [x23,1130] + strb w0, [x23,1146] ldrh w0, [x20,24] cmp w1, w0 - bcc .L3427 + bcc .L3614 ldrh w0, [x20,56] add w1, w0, 1 add x0, x20, x0, sxtw 1 @@ -22007,39 +23411,39 @@ zftl_do_gc: strh w1, [x0,58] mov w0, -1 strh w0, [x20] -.L3427: +.L3614: add x20, x19, :lo12:.LANCHOR0 bl ftl_flush bl sblk_wait_write_queue_completed bl gc_write_completed ldr x0, [x20,608] - ldrh w1, [x24,80] + ldrh w1, [x22,80] strh w1, [x0,128] bl pm_flush bl ftl_ext_info_flush strh wzr, [x20,2912] - ldrb w2, [x20,3257] - ldrh w1, [x20,3300] + ldrb w2, [x20,3281] + ldrh w1, [x20,3324] strh w1, [x20,2914] cmp w2, 2 strh w2, [x20,2916] - bne .L3429 + bne .L3616 lsl w1, w1, 1 strh w1, [x20,2914] - ldrb w1, [x20,3348] - cbnz w1, .L3429 + ldrb w1, [x20,3282] + cbnz w1, .L3616 mov w1, 1 strh w1, [x20,2916] -.L3429: +.L3616: add x19, x19, :lo12:.LANCHOR0 strh wzr, [x19,2918] - b .L3507 -.L3438: + b .L3697 +.L3625: mov w21, 0 add x24, x19, :lo12:.LANCHOR0 -.L3333: +.L3519: bl gc_check_data_one_wl - cbz w0, .L3432 + cbz w0, .L3619 add x19, x19, :lo12:.LANCHOR0 add x23, x23, :lo12:.LANCHOR4 ldr x0, [x19,608] @@ -22055,65 +23459,65 @@ zftl_do_gc: ldr x0, [x19,2904] bl buf_free str xzr, [x19,2904] - strb wzr, [x23,1130] -.L3511: + strb wzr, [x23,1146] +.L3701: bl flt_sys_flush - b .L3507 -.L3432: + b .L3697 +.L3619: ldrh w1, [x24,2912] ldrh w0, [x24,2914] cmp w1, w0 - bcc .L3433 + bcc .L3620 add x23, x23, :lo12:.LANCHOR4 mov w0, 6 - strb w0, [x23,1130] + strb w0, [x23,1146] ldr x0, [x24,2904] bl buf_free str xzr, [x24,2904] - b .L3507 -.L3433: + b .L3697 +.L3620: cmp w20, 15 - bls .L3333 + bls .L3519 cmp w26, 1 - bne .L3507 + bne .L3697 add w21, w21, 1 uxtb w21, w21 cmp w21, 4 - bls .L3333 - b .L3507 -.L3334: + bls .L3519 + b .L3697 +.L3520: bl gc_update_l2p_map_new mov w20, -1 bl gc_free_src_blk add x19, x19, :lo12:.LANCHOR0 bl ftl_flush bl pm_flush - strh w20, [x24,80] + strh w20, [x22,80] bl ftl_ext_info_flush ldr x0, [x19,2864] strh w20, [x0,126] mov w0, 0 bl ftl_info_flush -.L3508: +.L3698: add x23, x23, :lo12:.LANCHOR4 - strb wzr, [x23,1130] -.L3507: + strb wzr, [x23,1146] +.L3697: mov w1, 16 - b .L3480 -.L3362: + b .L3669 +.L3549: mov w1, w24 - b .L3480 -.L3413: + b .L3669 +.L3600: adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 2318 - add x1, x1, 800 + mov w2, 2454 + add x1, x1, 832 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L3436 -.L3480: + b .L3623 +.L3669: sub sp, x29, #16 mov w0, w1 ldp x19, x20, [sp,32] @@ -22135,37 +23539,38 @@ zftl_write: mov w19, w0 adrp x0, .LANCHOR2 stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr w0, [x0,#:lo12:.LANCHOR2] - mov w23, w2 stp x27, x28, [sp,80] - stp x21, x22, [sp,32] + ldr w0, [x0,#:lo12:.LANCHOR2] mov w28, w1 - mov x25, x3 - tbz x0, 12, .L3513 - adrp x0, .LC282 + stp x21, x22, [sp,32] + stp x25, x26, [sp,64] + mov w23, w2 + mov x24, x3 + tbz x0, 12, .L3703 + adrp x0, .LC302 + ldr w4, [x24] + add x0, x0, :lo12:.LC302 mov w1, w19 - add x0, x0, :lo12:.LC282 mov w2, w28 mov w3, w23 bl printk -.L3513: - cbnz w19, .L3514 +.L3703: + cbnz w19, .L3704 adrp x0, .LANCHOR0+520 mov w19, 24576 ldr w2, [x0,#:lo12:.LANCHOR0+520] - b .L3515 -.L3514: + b .L3705 +.L3704: cmp w19, 3 mov w0, -1 - bhi .L3516 + bhi .L3706 lsl w19, w19, 13 mov w2, 8192 -.L3515: +.L3705: add w1, w28, w23 mov w0, -1 cmp w1, w2 - bhi .L3516 + bhi .L3706 add w28, w19, w28 adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 @@ -22173,33 +23578,33 @@ zftl_write: add w22, w22, w28 add w26, w28, w23 ldrb w0, [x0,2832] - udiv w24, w28, w0 - mov w21, w24 + udiv w25, w28, w0 + mov w21, w25 udiv w22, w22, w0 - sub w20, w22, w24 + sub w20, w22, w25 add w20, w20, 1 -.L3517: - cbz w20, .L3536 +.L3707: + cbz w20, .L3726 mov w0, 0 bl buf_alloc mov x27, x0 - cbnz x0, .L3518 + cbnz x0, .L3708 bl ftl_write_commit - b .L3517 -.L3518: + b .L3707 +.L3708: strb wzr, [x0,57] add x0, x19, :lo12:.LANCHOR0 - cmp w21, w24 + cmp w21, w25 ldrb w4, [x0,2832] cset w0, eq strb w4, [x27,56] cmp w21, w22 - beq .L3520 - cbz w0, .L3521 - b .L3530 -.L3520: - cbz w0, .L3522 -.L3530: + beq .L3710 + cbz w0, .L3711 + b .L3720 +.L3710: + cbz w0, .L3712 +.L3720: udiv w0, w28, w4 msub w0, w0, w4, w28 uxtb w0, w0 @@ -22208,18 +23613,18 @@ zftl_write: uxtb w4, w4 cmp w4, w23 csel w4, w23, w4, hi - b .L3534 -.L3522: + b .L3724 +.L3712: msub w4, w4, w21, w26 -.L3534: +.L3724: strb w4, [x27,56] -.L3521: +.L3711: ldrb w1, [x27,57] sub w20, w20, #1 ldr x0, [x27,8] ldrb w2, [x27,56] add x0, x0, x1, lsl 9 - mov x1, x25 + mov x1, x24 lsl w2, w2, 9 bl ftl_memcpy str w21, [x27,36] @@ -22233,12 +23638,12 @@ zftl_write: mov x0, x27 bl ftl_write_buf ldrb w0, [x27,56] - add x25, x25, x0, lsl 9 - b .L3517 -.L3536: + add x24, x24, x0, lsl 9 + b .L3707 +.L3726: bl ftl_write_commit mov w0, w20 -.L3535: +.L3725: mov w1, 1 bl zftl_do_gc add x1, x19, :lo12:.LANCHOR0 @@ -22246,15 +23651,15 @@ zftl_write: ldrh w0, [x1,2848] add w0, w2, w0 cmp w0, 7 - bgt .L3537 + bgt .L3727 mov w0, 0 - b .L3535 -.L3537: + b .L3725 +.L3727: bl timer_get_time - adrp x1, .LANCHOR7-76 - str w0, [x1,#:lo12:.LANCHOR7-76] + adrp x1, .LANCHOR7-60 + str w0, [x1,#:lo12:.LANCHOR7-60] mov w0, 0 -.L3516: +.L3706: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -22312,23 +23717,23 @@ zftl_discard: stp x27, x28, [sp,80] ldr w1, [x1,520] cmp w2, w1 - bhi .L3541 + bhi .L3731 adrp x23, .LANCHOR7 add w24, w0, 24576 add x0, x23, :lo12:.LANCHOR7 adrp x25, .LANCHOR2 - ldr w1, [x0,-72] + ldr w1, [x0,-56] add w1, w19, w1 - str w1, [x0,-72] + str w1, [x0,-56] ldr w0, [x25,#:lo12:.LANCHOR2] - tbz x0, 12, .L3542 - adrp x0, .LC283 + tbz x0, 12, .L3732 + adrp x0, .LC303 mov w2, w24 - add x0, x0, :lo12:.LC283 + add x0, x0, :lo12:.LC303 mov w3, w19 mov w4, 0 bl printk -.L3542: +.L3732: add x20, x21, :lo12:.LANCHOR0 ldr x0, [x20,2864] ldr w26, [x0,8] @@ -22339,7 +23744,7 @@ zftl_discard: ldrb w22, [x20,2832] udiv w20, w24, w22 msub w27, w20, w22, w24 - cbz w27, .L3543 + cbz w27, .L3733 sub w22, w22, w27 mov w0, w20 cmp w22, w19 @@ -22347,20 +23752,20 @@ zftl_discard: bl lpa_hash_get_ppa str w0, [x29,120] cmn w0, #1 - bne .L3544 + bne .L3734 mov w0, w20 add x1, x29, 120 mov w2, 0 bl pm_log2phys -.L3544: +.L3734: ldr w0, [x29,120] and w28, w22, 65535 cmn w0, #1 - beq .L3546 + beq .L3736 mov w0, 0 bl buf_alloc mov x3, x0 - cbz x0, .L3546 + cbz x0, .L3736 strb w27, [x0,57] ubfiz x27, x27, 9, 25 str w20, [x0,36] @@ -22381,31 +23786,31 @@ zftl_discard: ldr w0, [x1,76] add w0, w0, 1 str w0, [x1,76] -.L3546: +.L3736: add w20, w20, 1 sub w19, w19, w28 -.L3543: - cbz w19, .L3548 +.L3733: + cbz w19, .L3738 bl ftl_flush -.L3548: +.L3738: mov w0, -1 mov w27, 1 str w0, [x29,124] mov w28, 21 -.L3549: +.L3739: add x22, x21, :lo12:.LANCHOR0 ldrb w0, [x22,2832] cmp w19, w0 - bcc .L3588 + bcc .L3778 mov w0, w20 bl lpa_hash_get_ppa str w0, [x29,120] cmn w0, #1 - beq .L3550 + beq .L3740 mov w0, 0 bl buf_alloc mov x3, x0 - cbz x0, .L3552 + cbz x0, .L3742 ldrb w2, [x22,2832] mov w1, 0 str w20, [x0,36] @@ -22420,59 +23825,59 @@ zftl_discard: mov x0, x3 bl ftl_write_buf bl ftl_write_commit - b .L3587 -.L3550: + b .L3777 +.L3740: mov w0, w20 add x1, x29, 120 mov w2, 0 bl pm_log2phys ldr w0, [x29,120] cmn w0, #1 - beq .L3552 + beq .L3742 add x1, x29, 124 mov w2, 1 mov w0, w20 bl pm_log2phys - ldrh w0, [x22,3340] + ldrh w0, [x22,3264] ldr w1, [x29,120] sub w2, w28, w0 lsl w2, w27, w2 lsr w0, w1, w0 sub w2, w2, #1 - ldrb w1, [x22,3338] + ldrb w1, [x22,3266] and w0, w2, w0 udiv w0, w0, w1 bl ftl_vpn_decrement -.L3587: +.L3777: ldr x1, [x22,2864] ldr w0, [x1,76] add w0, w0, 1 str w0, [x1,76] -.L3552: +.L3742: add x0, x21, :lo12:.LANCHOR0 add w20, w20, 1 ldrb w0, [x0,2832] sub w19, w19, w0 - b .L3549 -.L3588: - cbz w19, .L3556 + b .L3739 +.L3778: + cbz w19, .L3746 mov w0, w20 bl lpa_hash_get_ppa str w0, [x29,120] cmn w0, #1 - bne .L3557 + bne .L3747 mov w0, w20 add x1, x29, 120 mov w2, 0 bl pm_log2phys -.L3557: +.L3747: ldr w0, [x29,120] cmn w0, #1 - beq .L3556 + beq .L3746 mov w0, 0 bl buf_alloc mov x22, x0 - cbz x0, .L3556 + cbz x0, .L3746 str w20, [x0,36] strb wzr, [x0,57] strb w19, [x0,56] @@ -22480,16 +23885,16 @@ zftl_discard: add x0, x21, :lo12:.LANCHOR0 ldrb w0, [x0,2832] cmp w19, w0 - bcc .L3559 + bcc .L3749 adrp x1, .LANCHOR3 adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR3 - mov w2, 1236 - add x1, x1, 816 + mov w2, 1251 + add x1, x1, 848 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3559: +.L3749: ldr x0, [x22,8] mov w1, 0 lsl w2, w19, 9 @@ -22502,28 +23907,28 @@ zftl_discard: ldr w0, [x1,76] add w0, w0, 1 str w0, [x1,76] -.L3556: +.L3746: add x0, x23, :lo12:.LANCHOR7 mov w4, 0 - ldr w1, [x0,-72] + ldr w1, [x0,-56] cmp w1, 8192 - bls .L3541 + bls .L3731 ldr w0, [x25,#:lo12:.LANCHOR2] - tbz x0, 12, .L3560 - adrp x0, .LC283 + tbz x0, 12, .L3750 + adrp x0, .LC303 mov w2, w24 - add x0, x0, :lo12:.LC283 + add x0, x0, :lo12:.LC303 mov w3, w19 bl printk -.L3560: +.L3750: add x23, x23, :lo12:.LANCHOR7 add x21, x21, :lo12:.LANCHOR0 - str wzr, [x23,-72] + str wzr, [x23,-56] bl flt_sys_flush mov w0, 1 mov w4, 0 str w0, [x21,2884] -.L3541: +.L3731: mov w0, w4 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -22547,36 +23952,35 @@ id_block_prog_msb_ff_data: stp x19, x20, [sp,16] stp x25, x26, [sp,64] stp x27, x28, [sp,80] - adrp x20, .LANCHOR4 uxth w19, w2 - ldr x0, [x0,624] - ldrb w2, [x0,19] - add x0, x20, :lo12:.LANCHOR4 - ldrb w0, [x0,1264] - cbnz w0, .L3589 + ldr x2, [x0,624] + ldrb w0, [x0,634] + ldrb w2, [x2,19] + cbnz w0, .L3779 sub w0, w2, #5 uxtb w0, w0 cmp w0, 2 - bls .L3591 + bls .L3781 cmp w2, 68 - beq .L3591 + beq .L3781 sub w2, w2, #19 and w2, w2, -17 uxtb w2, w2 - cbnz w2, .L3589 -.L3591: - adrp x24, .LC284 + cbnz w2, .L3779 +.L3781: + adrp x24, .LC304 + adrp x20, .LANCHOR4 mov w25, w1 - add x24, x24, :lo12:.LC284 + add x24, x24, :lo12:.LC304 add x20, x20, :lo12:.LANCHOR4 mov w27, 65535 -.L3593: +.L3783: add x28, x21, :lo12:.LANCHOR0 ldr x0, [x28,624] ldrh w0, [x0,10] cmp w0, w19 - bls .L3589 - add x22, x20, 68 + bls .L3779 + add x22, x20, 84 add w26, w19, w25 mov x0, x24 mov w1, w19 @@ -22585,8 +23989,8 @@ id_block_prog_msb_ff_data: bl printk ldrh w0, [x22,w19,sxtw 1] cmp w0, w27 - bne .L3589 - ldr x0, [x20,1192] + bne .L3779 + ldr x0, [x20,1208] mov w1, 255 mov w2, 16384 add w19, w19, 1 @@ -22594,13 +23998,13 @@ id_block_prog_msb_ff_data: uxth w19, w19 ldr x4, [x28,624] mov w0, w23 - ldr x2, [x20,1192] + ldr x2, [x20,1208] mov w1, w26 ldrb w4, [x4,9] mov x3, x2 bl flash_prog_page - b .L3593 -.L3589: + b .L3783 +.L3779: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] @@ -22613,295 +24017,383 @@ id_block_prog_msb_ff_data: .global write_idblock .type write_idblock, %function write_idblock: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -256]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR0 - stp x19, x20, [sp,16] - mov w19, w0 - add x0, x22, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] stp x25, x26, [sp,64] + adrp x25, .LANCHOR0 + add x26, x25, :lo12:.LANCHOR0 + str x2, [x29,160] + stp x23, x24, [sp,48] + stp x19, x20, [sp,16] + stp x21, x22, [sp,32] stp x27, x28, [sp,80] - mov x25, x1 - str x2, [x29,128] - ldr x0, [x0,624] - ldrb w21, [x0,9] - ldrh w20, [x0,10] + mov w19, w0 + mov x24, x1 + ldr x0, [x26,624] + ldrb w20, [x0,9] + ldrh w22, [x0,10] + adrp x0, .LANCHOR2+34 + ldrh w21, [x0,#:lo12:.LANCHOR2+34] + ldrb w0, [x25,#:lo12:.LANCHOR0] + str w0, [x29,168] mov w0, 59392 movk w0, 0x3, lsl 16 bl ftl_malloc + str x25, [x29,176] mov x23, x0 + cbnz x0, .L3786 +.L3790: mov w0, -1 - cbz x23, .L3641 + b .L3852 +.L3786: + ldr x0, [x29,176] + str wzr, [x29,172] + ldrb w0, [x0,#:lo12:.LANCHOR0] + cbz w0, .L3788 + ldrb w0, [x26,634] + cbnz w0, .L3788 + adrp x0, .LANCHOR7-82 + ldrb w0, [x0,#:lo12:.LANCHOR7-82] + cmp w0, wzr + cset w0, ne + str w0, [x29,172] +.L3788: + mov w0, 0 add w19, w19, 511 lsr w19, w19, 9 + bl zftl_flash_exit_slc_mode + ldr x0, [x29,176] cmp w19, 8 - bls .L3626 + ldr x1, [x29,176] + add x0, x0, :lo12:.LANCHOR0 + ldrb w0, [x0,634] + strb w0, [x1,#:lo12:.LANCHOR0] + bls .L3823 cmp w19, 500 - bhi .L3641 - b .L3597 -.L3626: + bhi .L3790 + b .L3789 +.L3823: mov w19, 8 -.L3597: - ldr w2, [x25] - mov w1, 35899 - movk w1, 0xfcdc, lsl 16 - mov w0, -1 - cmp w2, w1 - bne .L3641 - mul w20, w20, w21 - add x3, x25, 253952 - mov w2, 63999 - add x3, x3, 2044 +.L3789: + ldr w1, [x24] + mov w0, 35899 + movk w0, 0xfcdc, lsl 16 + cmp w1, w0 + bne .L3790 + uxth w20, w20 + mov w3, 0 + mov w2, 63871 mov w4, 4097 - uxth w0, w20 - str w0, [x29,156] - sub w0, w0, #1 - ldr w1, [x29,156] + mul w22, w20, w22 + uxth w22, w22 + sub w0, w22, #1 add w0, w0, w19 - udiv w0, w0, w1 - str w0, [x29,120] - mov w0, 0 -.L3601: - ldr w1, [x3] - cbnz w1, .L3598 - ldr w1, [x25,w0,uxtw 2] - add w0, w0, 1 - cmp w0, w4 + udiv w0, w0, w22 + str w0, [x29,148] + add x0, x24, 253952 + add x0, x0, 1532 +.L3794: + ldr w1, [x0] + cbnz w1, .L3791 + ldr w1, [x24,w3,uxtw 2] + add w3, w3, 1 + cmp w3, w4 sub w2, w2, #1 - csel w0, w0, wzr, cc - str w1, [x3],-4 + str w1, [x0,512] + csel w3, w3, wzr, cc cmp w2, 4096 - bne .L3601 - b .L3600 -.L3598: - adrp x0, .LC285 - add x0, x0, :lo12:.LC285 + sub x0, x0, #4 + bne .L3794 + b .L3793 +.L3791: + adrp x0, .LC305 + add x0, x0, :lo12:.LC305 bl printk -.L3600: - ldr x1, [x29,128] - adrp x0, .LC286 - add x0, x0, :lo12:.LC286 +.L3793: + mul w20, w20, w21 + ldr x1, [x29,160] mov w2, 4 mov w3, 5 mov x21, 0 - mov w28, w21 + uxth w0, w20 + str w0, [x29,156] + adrp x0, .LC306 + adrp x25, .LANCHOR0 + add x0, x0, :lo12:.LC306 bl rknand_print_hex - adrp x0, .LC287 + adrp x0, .LC307 mov w1, w19 - add x0, x0, :lo12:.LC287 + add x0, x0, :lo12:.LC307 mov w2, w19 bl printk -.L3623: - adrp x1, .LANCHOR7 - add x1, x1, :lo12:.LANCHOR7 - ldrb w1, [x1,-102] - cbnz w1, .L3602 - ldr x1, [x29,128] + str w21, [x29,188] + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + str x0, [x29,128] + adrp x0, .LC308 + add x0, x0, :lo12:.LC308 + str x0, [x29,120] +.L3819: + adrp x1, .LANCHOR7-82 + ldrb w1, [x1,#:lo12:.LANCHOR7-82] + cbnz w1, .L3795 + ldr x1, [x29,160] ldr w2, [x29,156] ldr w1, [x1,x21,lsl 2] mul w20, w1, w2 - cbz w21, .L3603 - ldr w2, [x29,120] + cbz w21, .L3796 + ldr w2, [x29,148] cmp w2, 1 - bls .L3603 + bls .L3796 sub w0, w21, #1 - ldr x2, [x29,128] + ldr x2, [x29,160] ldr w0, [x2,x0,lsl 2] add w0, w0, 1 cmp w1, w0 - bne .L3603 - b .L3604 -.L3602: - add x0, x22, :lo12:.LANCHOR0 - ldr x0, [x0,728] + bne .L3796 + b .L3797 +.L3795: + add x22, x25, :lo12:.LANCHOR0 + ldr x0, [x22,728] add x0, x0, x21, uxtw ldrb w20, [x0,32] cmp w20, 255 - beq .L3604 + beq .L3797 ldr w0, [x29,156] mul w20, w20, w0 -.L3603: - mov w2, 512 + ldr w0, [x29,172] + cbz w0, .L3796 + cmp x21, 1 + bne .L3798 + ldrb w0, [x29,168] + strb w0, [x25,#:lo12:.LANCHOR0] + strb w0, [x22,634] + b .L3796 +.L3798: + mov w0, 0 + bl zftl_flash_exit_slc_mode + strb wzr, [x25,#:lo12:.LANCHOR0] + strb wzr, [x22,634] +.L3796: mov w1, 0 + mov w2, 512 mov x0, x23 bl ftl_memset - add x0, x22, :lo12:.LANCHOR0 - ldr x1, [x0,624] - ldrb w26, [x1,9] - ldrh w24, [x1,10] - ldrb w1, [x0,720] - str w1, [x29,116] + ldr x0, [x29,176] + add x1, x0, :lo12:.LANCHOR0 + ldr x2, [x1,624] + ldrb w26, [x2,9] + ldrh w27, [x2,10] + ldr x2, [x29,128] + uxth w0, w26 + ldrh w22, [x2,34] + mul w27, w0, w27 + mul w22, w0, w22 + ldrb w0, [x1,720] + uxth w27, w27 + strb wzr, [x1,720] udiv w1, w20, w26 - strb wzr, [x0,720] - mul w24, w26, w24 + str w0, [x29,144] mov w0, 0 - uxth w24, w24 + uxth w22, w22 bl flash_erase_block - cmp w19, w24 + cmp w19, w27 mov w2, 1 - bls .L3605 + bls .L3799 mov w0, 0 - add w1, w20, w24 + add w1, w20, w22 bl flash_erase_block mov w2, 2 -.L3605: - add x27, x22, :lo12:.LANCHOR0 +.L3799: + add x27, x25, :lo12:.LANCHOR0 ldr x1, [x27,624] ldrh w0, [x1,10] ldrb w1, [x1,12] lsl w0, w0, 2 mul w0, w0, w2 sdiv w0, w0, w1 - str w0, [x29,112] - udiv w0, w20, w24 - msub w0, w0, w24, w20 - str w0, [x29,124] - sub w0, w20, w0 + str w0, [x29,140] + udiv w0, w20, w22 + msub w0, w0, w22, w20 str w0, [x29,152] + sub w0, w20, w0 + str w0, [x29,184] cmp w20, w0 - bne .L3631 + bne .L3826 ldrb w0, [x27,516] cmp w0, 9 - bne .L3631 - adrp x0, .LANCHOR4 + bne .L3826 + adrp x0, .LANCHOR4+1248 mov w1, 0 - add x0, x0, :lo12:.LANCHOR4 mov w2, 1024 - ldr x3, [x0,1248] - str x3, [x29,144] + ldr x3, [x0,#:lo12:.LANCHOR4+1248] + str x3, [x29,112] mov x0, x3 bl ftl_memset - ldr x3, [x29,144] + ldr x3, [x29,112] mov w0, 18766 movk w0, 0x464e, lsl 16 - mov w1, 12 - cmp w26, 8 str w0, [x3] - str w1, [x3,4] + mov w0, 12 + str w0, [x3,4] + ldrb w0, [x27,634] str wzr, [x3,12] - ldr x2, [x27,624] - ldrb w0, [x2,29] + strb wzr, [x3,16] + cbz w0, .L3801 + ldr x0, [x27,624] + ldrb w0, [x0,29] strb w0, [x3,16] +.L3801: mov w0, 4 strb w0, [x3,17] - ldrh w0, [x2,10] - ldrb w2, [x2,12] + adrp x0, .LANCHOR0 + cmp w26, 8 + add x0, x0, :lo12:.LANCHOR0 + str x3, [x29,112] + sub w22, w19, #4 + ldr x1, [x0,624] + ldrh w0, [x1,10] + ldrb w1, [x1,12] strb wzr, [x3,20] strh wzr, [x3,22] - sdiv w0, w0, w2 - mov w2, 16 + sdiv w0, w0, w1 + mov w1, 16 strh w0, [x3,18] mov w0, 70 - csel w0, w0, w2, hi + csel w0, w0, w1, hi + mov w1, 12 strb w0, [x3,21] add x0, x3, 12 bl js_hash - ldr x3, [x29,144] + ldr x3, [x29,112] str w0, [x3,8] - sub w0, w19, #4 - str w0, [x29,144] - b .L3606 -.L3631: - str w19, [x29,144] + b .L3800 +.L3826: + mov w22, w19 mov x3, 0 -.L3606: - str x25, [x29,136] - mov w24, 0 - add x27, x22, :lo12:.LANCHOR0 -.L3608: - ldr w0, [x29,112] - cmp w24, w0 - bcs .L3650 - ldr w0, [x29,124] - adrp x2, .LANCHOR4 - add x2, x2, :lo12:.LANCHOR4 - add w4, w24, w0 - add x0, x27, 4 - ubfx x4, x4, 2, 16 - add w1, w4, 1 - ldrb w2, [x2,1264] +.L3800: + mov x28, x24 + mov w27, 0 + add x11, x25, :lo12:.LANCHOR0 +.L3803: + ldr w0, [x29,140] + cmp w27, w0 + bcs .L3855 + ldr w0, [x29,152] + ldrb w2, [x11,634] + add w8, w27, w0 + add x0, x11, 4 + ubfx x8, x8, 2, 16 + add w1, w8, 1 ldrh w0, [x0,w1,sxtw 1] - cbz w2, .L3610 - ldrb w6, [x27,1] + cbz w2, .L3805 + ldrb w4, [x11,1] lsl w0, w1, 1 - cmp w6, wzr + cmp w4, wzr csel w0, w0, w1, ne -.L3610: - ldrb w1, [x27,516] +.L3805: + ldrb w1, [x11,516] cmp w1, 9 - beq .L3649 + beq .L3854 sub w0, w0, #1 lsl w0, w0, 2 -.L3649: - str w0, [x29,160] +.L3854: + str w0, [x29,192] mov w0, 61424 - str w0, [x29,164] - add x0, x27, 4 - ldrh w0, [x0,w4,sxtw 1] - cbnz w2, .L3614 - mov w4, w0 - b .L3615 -.L3614: - ldrb w1, [x27,1] - lsl w0, w4, 1 + str w0, [x29,196] + add x0, x11, 4 + ldrh w0, [x0,w8,sxtw 1] + cbnz w2, .L3809 + mov w8, w0 + b .L3810 +.L3809: + ldrb w1, [x11,1] + lsl w0, w8, 1 cmp w1, wzr - csel w4, w0, w4, ne -.L3615: - mul w0, w4, w26 - cbnz x3, .L3616 - ldr w1, [x29,152] - add x2, x29, 160 - str x4, [x29,104] - add w0, w0, w1 - ldr x1, [x29,136] - bl fw_flash_page_prog.constprop.30 - adrp x0, .LANCHOR4 - ldr x4, [x29,104] - add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1264] - cbnz w0, .L3617 - ldr w1, [x29,152] - add w2, w4, 1 + csel w8, w0, w8, ne +.L3810: + mul w0, w8, w26 + cbnz x3, .L3811 + ldr w1, [x29,184] + mov w2, w27 + ldr w5, [x28] + mov w3, w19 + add w12, w0, w1 + ldr w6, [x29,192] + ldr x0, [x29,120] + mov w1, w12 + mov x4, x28 + mov w7, 61424 + str x11, [x29,96] + str x8, [x29,104] + str x12, [x29,112] + bl printk + ldr x12, [x29,112] + mov x1, x28 + add x2, x29, 192 + mov w0, w12 + bl fw_flash_page_prog.constprop.29 + ldr x11, [x29,96] + ldr x8, [x29,104] + ldrb w0, [x11,634] + cbnz w0, .L3812 + ldr w1, [x29,184] + add w2, w8, 1 + str x11, [x29,112] udiv w1, w1, w26 bl id_block_prog_msb_ff_data -.L3617: - ldr x0, [x29,136] - add x0, x0, 2048 - str x0, [x29,136] - b .L3618 -.L3616: - ldr w1, [x29,152] - add x2, x29, 160 + ldr x11, [x29,112] +.L3812: + add w0, w22, 16 + add x28, x28, 2048 + cmp w27, w0 + bcc .L3813 + add w1, w22, 20 + add x0, x24, 2048 + cmp w27, w1 + csel x28, x28, x0, cs + b .L3813 +.L3811: + ldr w1, [x29,184] + add x2, x29, 192 + str x11, [x29,112] add w0, w0, w1 mov x1, x3 - bl fw_flash_page_prog.constprop.30 -.L3618: - add w24, w24, 4 + bl fw_flash_page_prog.constprop.29 + ldr x11, [x29,112] +.L3813: + add w9, w27, 4 mov x3, 0 - uxth w24, w24 - b .L3608 -.L3650: - add x0, x22, :lo12:.LANCHOR0 - ldrb w1, [x29,116] + uxth w27, w9 + b .L3803 +.L3855: + adrp x0, .LANCHOR0 + mov w1, w22 + add x26, x0, :lo12:.LANCHOR0 + ldrb w0, [x29,144] mov x2, x23 - strb w1, [x0,720] + strb w0, [x26,720] mov w0, w20 - ldr w1, [x29,144] - bl id_block_read_data.constprop.31 - ldr w0, [x29,144] - mov x1, 0 - lsl w0, w0, 7 -.L3620: - cmp w0, w1 - bls .L3651 - ldr w3, [x23,x1,lsl 2] - add x1, x1, 1 - add x2, x25, x1, lsl 2 - ldr w2, [x2,-4] - cmp w3, w2 - beq .L3620 + bl id_block_read_data.constprop.30 + ldr w0, [x29,172] + cbz w0, .L3815 + mov w0, 0 + bl zftl_flash_exit_slc_mode + strb wzr, [x26,634] + adrp x0, .LANCHOR0 + strb wzr, [x0,#:lo12:.LANCHOR0] +.L3815: + lsl w22, w22, 7 + mov x0, 0 +.L3816: + cmp w22, w0 + bls .L3856 + ldr w2, [x23,x0,lsl 2] + add x0, x0, 1 + add x1, x24, x0, lsl 2 + ldr w1, [x1,-4] + cmp w2, w1 + beq .L3816 mov x0, x23 mov w1, 0 mov w2, 512 @@ -22909,27 +24401,38 @@ write_idblock: mov w1, w20 mov w0, 0 bl flash_erase_block - b .L3604 -.L3651: - add w28, w28, 1 - cmp w28, 5 - bhi .L3624 -.L3604: + b .L3797 +.L3856: + ldr w0, [x29,188] + add w0, w0, 1 + str w0, [x29,188] + cmp w0, 5 + bhi .L3820 +.L3797: add x21, x21, 1 cmp x21, 4 - bne .L3623 -.L3624: + bne .L3819 +.L3820: + adrp x0, .LANCHOR0 + ldrb w2, [x29,168] + add x1, x0, :lo12:.LANCHOR0 + strb w2, [x0,#:lo12:.LANCHOR0] + mov w0, 2 + strb w0, [x1,744] + mov w0, 0 + bl zftl_flash_enter_slc_mode mov x0, x23 bl ftl_free - cmp w28, wzr + ldr w0, [x29,188] + cmp w0, wzr csetm w0, eq -.L3641: +.L3852: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x23, x24, [sp,48] ldp x25, x26, [sp,64] ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 224 + ldp x29, x30, [sp], 256 ret .size write_idblock, .-write_idblock .align 2 @@ -22941,91 +24444,96 @@ CRC_32: mov x5, x0 add x3, x3, :lo12:.LANCHOR2 mov w0, w2 -.L3653: +.L3858: cmp w1, w2 - bls .L3655 + bls .L3860 ldrb w4, [x5,x2] - add x6, x3, 2488 + add x6, x3, 2552 add x2, x2, 1 eor w4, w4, w0, lsr 24 ldr w4, [x6,w4,uxtw 2] eor w0, w4, w0, lsl 8 - b .L3653 -.L3655: + b .L3858 +.L3860: ret .size CRC_32, .-CRC_32 .align 2 .global write_loader_lba .type write_loader_lba, %function write_loader_lba: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! cmp w0, 64 add x29, sp, 0 stp x19, x20, [sp,16] stp x21, x22, [sp,32] - str x23, [sp,48] + stp x23, x24, [sp,48] mov w19, w0 mov w21, w1 - mov x23, x2 + mov x24, x2 adrp x20, .LANCHOR7 - bne .L3657 + bne .L3862 ldr w1, [x2] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 - bne .L3657 + bne .L3862 add x22, x20, :lo12:.LANCHOR7 mov w0, 1 - strb w0, [x22,-68] + strb w0, [x22,-52] mov w0, 59392 movk w0, 0x3, lsl 16 bl ftl_malloc - str x0, [x22,-64] + str x0, [x22,-48] mov w2, 59392 mov w1, 0 movk w2, 0x3, lsl 16 bl ftl_memset - str w19, [x22,-56] -.L3657: - add x3, x20, :lo12:.LANCHOR7 - ldrb w0, [x3,-68] - cbz w0, .L3656 + str w19, [x22,-40] +.L3862: + add x23, x20, :lo12:.LANCHOR7 + adrp x0, .LC309 + ldr w2, [x24] + add x0, x0, :lo12:.LC309 + mov w3, w19 + mov w4, w21 + ldr x1, [x23,-48] + bl printk + ldrb w0, [x23,-52] + cbz w0, .L3861 + ldr x22, [x23,-48] + cbz x22, .L3861 sub w0, w19, #64 - ldr x22, [x3,-64] cmp w0, 499 - bhi .L3659 + bhi .L3864 mov w3, 564 ubfiz x0, x0, 9, 25 sub w3, w3, w19 add x0, x22, x0 cmp w3, w21 - mov x1, x23 + mov x1, x24 csel w2, w3, w21, ls lsl w2, w2, 9 bl ftl_memcpy - b .L3660 -.L3659: + b .L3865 +.L3864: cmp w19, 563 - bhi .L3670 -.L3660: - add x0, x20, :lo12:.LANCHOR7 - ldr w1, [x0,-56] - cmp w1, w19 - beq .L3668 - strb wzr, [x0,-68] - cbz x22, .L3669 + bhi .L3875 +.L3865: + add x23, x20, :lo12:.LANCHOR7 + ldr w0, [x23,-40] + cmp w0, w19 + beq .L3873 mov x0, x22 + strb wzr, [x23,-52] bl ftl_free -.L3669: - add x0, x20, :lo12:.LANCHOR7 - str xzr, [x0,-64] -.L3668: + str xzr, [x23,-48] +.L3873: add x20, x20, :lo12:.LANCHOR7 add w19, w19, w21 - str w19, [x20,-56] - b .L3656 -.L3670: - ldr w2, [x3,-56] + str w19, [x20,-40] + b .L3861 +.L3875: + ldr w2, [x23,-40] mov w0, 500 sub w2, w2, #64 cmp w2, 500 @@ -23034,66 +24542,64 @@ write_loader_lba: ldr x0, [x0,#:lo12:.LANCHOR0+624] ldrb w0, [x0,9] cmp w0, 4 - beq .L3671 + beq .L3876 mov w0, 2 - str w0, [x29,64] - mov w0, 3 - str w0, [x29,68] - mov w0, 4 str w0, [x29,72] - mov w0, 5 + mov w0, 3 str w0, [x29,76] - mov w0, 6 + mov w0, 4 str w0, [x29,80] - b .L3662 -.L3671: + mov w0, 5 + str w0, [x29,84] + mov w0, 6 + str w0, [x29,88] + b .L3867 +.L3876: mov x3, 0 -.L3661: +.L3866: cmp w2, 256 - add x0, x29, 64 - bls .L3663 + add x0, x29, 72 + bls .L3868 lsl w1, w3, 1 str w1, [x0,x3,lsl 2] - b .L3664 -.L3663: + b .L3869 +.L3868: str w3, [x0,x3,lsl 2] -.L3664: +.L3869: add x3, x3, 1 cmp x3, 5 - bne .L3661 -.L3662: - add x0, x20, :lo12:.LANCHOR7 - mov w4, 63999 - ldr x3, [x0,-48] - add x3, x3, 61440 - add x3, x3, 2559 -.L3667: - ldrb w0, [x3] - cbz w0, .L3665 - add w2, w4, 1 - lsl w0, w2, 2 - b .L3666 -.L3665: - sub w4, w4, #1 - sub x3, x3, #1 - cmp w4, 4096 - bne .L3667 + bne .L3866 +.L3867: + add x0, x22, 245760 + mov w3, 61952 + add x0, x0, 2048 +.L3872: + ldr w1, [x0] + cbz w1, .L3870 + add w3, w3, 2048 + lsl w0, w3, 2 + b .L3871 +.L3870: + sub w3, w3, #1 + sub x0, x0, #4 + cmp w3, 4096 + bne .L3872 lsl w0, w2, 9 -.L3666: +.L3871: mov x1, x22 - add x2, x29, 64 + add x2, x29, 72 add x22, x20, :lo12:.LANCHOR7 bl write_idblock - ldr x0, [x22,-64] - strb wzr, [x22,-68] + ldr x0, [x22,-48] + strb wzr, [x22,-52] bl ftl_free - str xzr, [x22,-64] - b .L3668 -.L3656: + str xzr, [x22,-48] + b .L3873 +.L3861: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 96 + ldp x23, x24, [sp,48] + ldp x29, x30, [sp], 112 ret .size write_loader_lba, .-write_loader_lba .align 2 @@ -23109,19 +24615,19 @@ FtlWrite: cmp w0, 1983 mov w19, w1 mov w20, w2 - bhi .L3681 - cbnz w21, .L3681 + bhi .L3886 + cbnz w21, .L3886 mov w0, w1 mov w1, w2 mov x2, x3 str x3, [x29,56] bl write_loader_lba ldr x3, [x29,56] -.L3681: - adrp x0, .LANCHOR4+1176 +.L3886: + adrp x0, .LANCHOR4+1192 mov w1, w19 mov w2, w20 - ldr x0, [x0,#:lo12:.LANCHOR4+1176] + ldr x0, [x0,#:lo12:.LANCHOR4+1192] ldr x4, [x0,48] mov w0, w21 blr x4 @@ -23144,319 +24650,319 @@ rknand_sys_storage_ioctl: stp x21, x22, [sp,32] mov w19, w1 mov x20, x2 - beq .L3690 + beq .L3895 mov w0, 29187 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3691 + bhi .L3896 mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3692 + beq .L3897 mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3693 + bhi .L3898 mov w0, 25601 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3694 + beq .L3899 mov w0, 25601 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3695 + bhi .L3900 mov w0, 25364 movk w0, 0x4004, lsl 16 cmp w1, w0 - bne .L3752 + bne .L3957 bl rknand_dev_flush - b .L3786 -.L3695: + b .L3991 +.L3900: mov w0, 25602 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3697 + beq .L3902 mov w0, 25603 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3698 - b .L3752 -.L3693: + beq .L3903 + b .L3957 +.L3898: mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3699 + beq .L3904 mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3700 + bhi .L3905 mov w0, 25727 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3701 - b .L3752 -.L3700: + beq .L3906 + b .L3957 +.L3905: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3699 + beq .L3904 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3699 - b .L3752 -.L3691: + beq .L3904 + b .L3957 +.L3896: mov w0, 29267 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3702 + beq .L3907 mov w0, 29267 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3703 + bhi .L3908 mov w0, 29189 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3704 + beq .L3909 mov w0, 29189 movk w0, 0x4004, lsl 16 cmp w1, w0 - bcc .L3705 + bcc .L3910 mov w0, 29210 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3706 + beq .L3911 mov w0, 29266 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3707 - b .L3752 -.L3703: + beq .L3912 + b .L3957 +.L3908: mov w0, 30225 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3708 + beq .L3913 mov w0, 30225 movk w0, 0x4004, lsl 16 cmp w1, w0 - bhi .L3709 + bhi .L3914 mov w0, 29268 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3710 + beq .L3915 mov w0, 30224 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3711 - b .L3752 -.L3709: + beq .L3916 + b .L3957 +.L3914: mov w0, 30226 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3711 + beq .L3916 mov w0, 30227 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3708 - b .L3752 -.L3705: - adrp x0, .LC288 - add x0, x0, :lo12:.LC288 + beq .L3913 + b .L3957 +.L3910: + adrp x0, .LC310 + add x0, x0, :lo12:.LC310 bl printk mov w0, 4096 bl ftl_malloc mov x19, x0 - cbnz x0, .L3712 -.L3717: + cbnz x0, .L3917 +.L3922: mov x0, -12 - b .L3689 -.L3712: + b .L3894 +.L3917: mov x1, x20 mov x2, 512 bl rk_copy_from_user - cbnz x0, .L3793 - adrp x0, .LC290 + cbnz x0, .L3998 + adrp x0, .LC312 ldr w1, [x19] ldr w2, [x19,4] - add x0, x0, :lo12:.LC290 + add x0, x0, :lo12:.LC312 bl printk ldr w0, [x19,4] str w0, [x29,52] cmp w0, 8 - bhi .L3790 + bhi .L3995 bl rknand_device_lock ldr w1, [x29,52] mov x2, x19 ldr w0, [x19] - bl id_block_read_data.constprop.31 + bl id_block_read_data.constprop.30 bl rknand_device_unlock ldr w2, [x29,52] mov x0, x20 mov x1, x19 ubfiz x2, x2, 9, 23 bl rk_copy_to_user - cbz x0, .L3796 - adrp x0, .LC291 - add x0, x0, :lo12:.LC291 -.L3788: + cbz x0, .L4001 + adrp x0, .LC313 + add x0, x0, :lo12:.LC313 +.L3993: bl printk -.L3790: +.L3995: mov x0, x19 -.L3791: +.L3996: bl ftl_free -.L3789: +.L3994: mov x0, -14 - b .L3689 -.L3704: - adrp x0, .LC292 - add x0, x0, :lo12:.LC292 + b .L3894 +.L3909: + adrp x0, .LC314 + add x0, x0, :lo12:.LC314 bl printk mov w0, 4096 bl ftl_malloc mov x19, x0 - cbz x0, .L3717 + cbz x0, .L3922 mov x1, x20 mov x2, 4096 bl rk_copy_from_user - cbnz x0, .L3793 - adrp x0, .LC293 + cbnz x0, .L3998 + adrp x0, .LC315 ldr w1, [x19] ldr w2, [x19,4] - add x0, x0, :lo12:.LC293 + add x0, x0, :lo12:.LC315 bl printk adrp x0, .LANCHOR7 add x22, x0, :lo12:.LANCHOR7 mov x20, x0 - ldr x21, [x22,-48] - cbnz x21, .L3719 + ldr x21, [x22,-32] + cbnz x21, .L3924 mov w0, 260096 bl ftl_malloc - str x0, [x22,-48] - cbz x0, .L3790 + str x0, [x22,-32] + cbz x0, .L3995 mov w1, w21 mov x2, 260096 bl memset -.L3719: +.L3924: ldr w2, [x19,4] cmp w2, 4088 - bhi .L3790 + bhi .L3995 ldr w0, [x19] mov w1, 55296 movk w1, 0x3, lsl 16 cmp w0, w1 - bhi .L3790 + bhi .L3995 add x20, x20, :lo12:.LANCHOR7 uxtw x2, w2 - ldr x1, [x20,-48] + ldr x1, [x20,-32] add x0, x1, x0, uxtw add x1, x19, 8 bl memcpy -.L3796: +.L4001: mov x0, x19 bl ftl_free - b .L3786 -.L3707: - adrp x0, .LC294 - add x0, x0, :lo12:.LC294 + b .L3991 +.L3912: + adrp x0, .LC316 + add x0, x0, :lo12:.LC316 bl printk mov w0, 4096 bl ftl_malloc mov x19, x0 - cbz x0, .L3717 + cbz x0, .L3922 mov x1, x20 mov x2, 28 bl rk_copy_from_user - cbz x0, .L3722 -.L3793: - adrp x0, .LC289 - add x0, x0, :lo12:.LC289 - b .L3788 -.L3722: + cbz x0, .L3927 +.L3998: + adrp x0, .LC311 + add x0, x0, :lo12:.LC311 + b .L3993 +.L3927: ldr w1, [x19] - adrp x0, .LC295 + adrp x0, .LC317 ldr w2, [x19,4] - add x0, x0, :lo12:.LC295 + add x0, x0, :lo12:.LC317 bl printk ldr w1, [x19] mov w0, 59392 movk w0, 0x3, lsl 16 cmp w1, w0 - bhi .L3790 + bhi .L3995 adrp x20, .LANCHOR7 add x20, x20, :lo12:.LANCHOR7 - ldr x0, [x20,-48] - cbz x0, .L3790 + ldr x0, [x20,-32] + cbz x0, .L3995 bl CRC_32 ldr w1, [x19,4] cmp w1, w0 - beq .L3725 + beq .L3930 mov x0, x19 bl ftl_free mov x0, -2 - b .L3689 -.L3725: + b .L3894 +.L3930: bl rknand_device_lock - ldr x1, [x20,-48] + ldr x1, [x20,-32] add x2, x19, 8 ldr w0, [x19] bl write_idblock bl rknand_device_unlock - ldr x0, [x20,-48] + ldr x0, [x20,-32] bl ftl_free - str xzr, [x20,-48] - b .L3796 -.L3706: - adrp x0, .LC296 - add x0, x0, :lo12:.LC296 + str xzr, [x20,-32] + b .L4001 +.L3911: + adrp x0, .LC318 + add x0, x0, :lo12:.LC318 bl printk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3717 + cbz x0, .L3922 bl ReadFlashInfo mov x0, x20 mov x1, x21 mov x2, 11 - b .L3798 -.L3690: - adrp x0, .LC297 - add x0, x0, :lo12:.LC297 + b .L4003 +.L3895: + adrp x0, .LC319 + add x0, x0, :lo12:.LC319 bl printk bl nand_blk_add_whole_disk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3717 + cbz x0, .L3922 mov w1, 0 mov w2, 64 bl ftl_memset mov x0, x20 mov x1, x21 mov x2, 64 - b .L3798 -.L3702: - adrp x0, .LC298 - add x0, x0, :lo12:.LC298 + b .L4003 +.L3907: + adrp x0, .LC320 + add x0, x0, :lo12:.LC320 bl printk - adrp x0, .LANCHOR7-40 + adrp x0, .LANCHOR7-24 add x1, x29, 52 mov x2, 4 - ldr x0, [x0,#:lo12:.LANCHOR7-40] + ldr x0, [x0,#:lo12:.LANCHOR7-24] ldr w0, [x0,20] str w0, [x29,52] mov x0, x20 -.L3781: +.L3986: bl rk_copy_to_user - cbnz x0, .L3789 - b .L3786 -.L3710: - adrp x0, .LC299 - add x0, x0, :lo12:.LC299 + cbnz x0, .L3994 + b .L3991 +.L3915: + adrp x0, .LC321 + add x0, x0, :lo12:.LC321 bl printk mov w0, 4096 bl ftl_malloc mov x21, x0 - cbz x0, .L3717 + cbz x0, .L3922 bl rknand_device_lock mov w1, 264 mov w2, 2 @@ -23467,96 +24973,96 @@ rknand_sys_storage_ioctl: mov x0, x20 mov x1, x21 mov x2, 1024 -.L3798: +.L4003: bl rk_copy_to_user mov x19, x0 mov x0, x21 - cbnz x19, .L3791 + cbnz x19, .L3996 bl ftl_free - b .L3716 -.L3694: - adrp x0, .LC300 - add x0, x0, :lo12:.LC300 + b .L3921 +.L3899: + adrp x0, .LC322 + add x0, x0, :lo12:.LC322 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user mov x19, x0 - cbz x0, .L3730 -.L3735: - adrp x0, .LC289 - add x0, x0, :lo12:.LC289 + cbz x0, .L3935 +.L3940: + adrp x0, .LC311 + add x0, x0, :lo12:.LC311 bl printk - b .L3789 -.L3730: + b .L3994 +.L3935: ldr w1, [x29,56] mov w0, 21060 movk w0, 0x4b4d, lsl 16 cmp w1, w0 - beq .L3731 -.L3732: + beq .L3936 +.L3937: mov x19, -1 - b .L3716 -.L3731: + b .L3921 +.L3936: ldr w0, [x29,60] cmp w0, 512 - bhi .L3732 + bhi .L3937 adrp x21, .LANCHOR7 add x0, x29, 56 add x21, x21, :lo12:.LANCHOR7 mov x2, 512 - ldr x1, [x21,-40] + ldr x1, [x21,-24] bl memcpy - ldr w1, [x21,-32] + ldr w1, [x21,-16] mov w0, 5161 movk w0, 0xc059, lsl 16 cmp w1, w0 - beq .L3733 + beq .L3938 add x0, x29, 120 mov w1, w19 mov x2, 128 str w19, [x29,64] str w19, [x29,68] bl memset -.L3733: +.L3938: add x0, x29, 312 mov w1, 0 mov x2, 256 str wzr, [x29,72] bl memset - b .L3795 -.L3697: - adrp x0, .LC301 - add x0, x0, :lo12:.LC301 + b .L4000 +.L3902: + adrp x0, .LC323 + add x0, x0, :lo12:.LC323 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 21060 movk w0, 0x4b4d, lsl 16 cmp w1, w0 - bne .L3732 + bne .L3937 ldr w0, [x29,60] cmp w0, 512 - bhi .L3732 + bhi .L3937 adrp x1, .LANCHOR7 mov w2, 5161 add x1, x1, :lo12:.LANCHOR7 movk w2, 0xc059, lsl 16 mov x0, -2 - ldr w3, [x1,-32] + ldr w3, [x1,-16] cmp w3, w2 - bne .L3689 + bne .L3894 ldr w2, [x29,68] mov x0, -3 sub w3, w2, #1 cmp w3, 127 - bhi .L3689 - ldr x19, [x1,-40] + bhi .L3894 + ldr x19, [x1,-24] add x1, x29, 120 add x0, x19, 64 str w2, [x19,12] @@ -23564,144 +25070,144 @@ rknand_sys_storage_ioctl: bl memcpy mov w0, 1 mov x1, x19 - b .L3787 -.L3701: - adrp x0, .LC302 - add x0, x0, :lo12:.LC302 + b .L3992 +.L3906: + adrp x0, .LC324 + add x0, x0, :lo12:.LC324 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 17476 movk w0, 0x4253, lsl 16 cmp w1, w0 - bne .L3732 + bne .L3937 ldr w0, [x29,60] cmp w0, 512 - bhi .L3732 + bhi .L3937 adrp x19, .LANCHOR7 add x0, x19, :lo12:.LANCHOR7 - ldr w1, [x0,-28] - cbnz w1, .L3736 -.L3739: + ldr w1, [x0,-12] + cbnz w1, .L3941 +.L3944: mov x0, 0 - b .L3689 -.L3736: - ldr x1, [x0,-24] + b .L3894 +.L3941: + ldr x1, [x0,-8] mov w2, 22867 movk w2, 0x4453, lsl 16 ldr w3, [x1] cmp w3, w2 - beq .L3737 + beq .L3942 mov w2, 22867 movk w2, 0x4453, lsl 16 str w2, [x1] mov w2, 504 - ldr x1, [x0,-24] + ldr x1, [x0,-8] str w2, [x1,4] - ldr x0, [x0,-24] + ldr x0, [x0,-8] str wzr, [x0,8] str wzr, [x0,12] -.L3737: +.L3942: add x20, x19, :lo12:.LANCHOR7 mov w0, 0 - ldr x1, [x20,-24] + ldr x1, [x20,-8] str wzr, [x1,16] bl StorageSysDataStore - ldr x0, [x20,-40] + ldr x0, [x20,-24] mov w1, 21060 movk w1, 0x4b4d, lsl 16 ldr w2, [x0] cmp w2, w1 - beq .L3738 + beq .L3943 mov w1, 21060 movk w1, 0x4b4d, lsl 16 str w1, [x0] mov w1, 504 - ldr x0, [x20,-40] + ldr x0, [x20,-24] str w1, [x0,4] - ldr x0, [x20,-40] + ldr x0, [x20,-24] str wzr, [x0,8] -.L3738: +.L3943: add x19, x19, :lo12:.LANCHOR7 mov w1, 0 mov x2, 128 - ldr x20, [x19,-40] + ldr x20, [x19,-24] add x0, x20, 64 str wzr, [x20,12] bl memset mov w0, 1 mov x1, x20 bl StorageSysDataStore - str wzr, [x19,-28] - str wzr, [x19,-32] - b .L3786 -.L3692: - adrp x0, .LC303 - add x0, x0, :lo12:.LC303 + str wzr, [x19,-12] + str wzr, [x19,-16] + b .L3991 +.L3897: + adrp x0, .LC325 + add x0, x0, :lo12:.LC325 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w2, [x29,56] mov w1, 20037 movk w1, 0x4253, lsl 16 cmp w2, w1 - bne .L3732 + bne .L3937 ldr w1, [x29,60] cmp w1, 512 - bhi .L3732 + bhi .L3937 adrp x19, .LANCHOR7 add x1, x19, :lo12:.LANCHOR7 - ldr w2, [x1,-28] + ldr w2, [x1,-12] cmp w2, 1 - beq .L3739 - ldr x2, [x1,-24] + beq .L3944 + ldr x2, [x1,-8] mov w3, 22867 movk w3, 0x4453, lsl 16 ldr w4, [x2] cmp w4, w3 - beq .L3740 + beq .L3945 mov w3, 22867 movk w3, 0x4453, lsl 16 str w3, [x2] mov w3, 504 - ldr x2, [x1,-24] + ldr x2, [x1,-8] str w3, [x2,4] - ldr x1, [x1,-24] + ldr x1, [x1,-8] str w0, [x1,8] str w0, [x1,12] -.L3740: +.L3945: add x20, x19, :lo12:.LANCHOR7 mov w0, 1 - ldr x1, [x20,-24] + ldr x1, [x20,-8] str w0, [x1,16] mov w0, 0 bl StorageSysDataStore - ldr x0, [x20,-40] + ldr x0, [x20,-24] mov w1, 21060 movk w1, 0x4b4d, lsl 16 ldr w2, [x0] cmp w2, w1 - beq .L3741 + beq .L3946 mov w1, 21060 movk w1, 0x4b4d, lsl 16 str w1, [x0] mov w1, 504 - ldr x0, [x20,-40] + ldr x0, [x20,-24] str w1, [x0,4] - ldr x0, [x20,-40] + ldr x0, [x20,-24] str wzr, [x0,8] -.L3741: +.L3946: add x19, x19, :lo12:.LANCHOR7 mov w1, 0 mov x2, 128 - ldr x20, [x19,-40] + ldr x20, [x19,-24] add x0, x20, 64 str wzr, [x20,12] bl memset @@ -23709,135 +25215,134 @@ rknand_sys_storage_ioctl: mov x1, x20 bl StorageSysDataStore mov w0, 1 - str w0, [x19,-28] - b .L3786 -.L3698: - adrp x0, .LC304 - add x0, x0, :lo12:.LC304 + str w0, [x19,-12] + b .L3991 +.L3903: + adrp x0, .LC326 + add x0, x0, :lo12:.LC326 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 20051 movk w0, 0x4144, lsl 16 cmp w1, w0 - bne .L3732 + bne .L3937 ldr w2, [x29,60] cmp w2, 512 - bhi .L3732 + bhi .L3937 adrp x1, .LANCHOR7 add x0, x29, 64 add x1, x1, :lo12:.LANCHOR7 uxtw x2, w2 - sub x1, x1, #16 - b .L3794 -.L3699: + b .L3999 +.L3904: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3742 - adrp x0, .LC305 - add x0, x0, :lo12:.LC305 - b .L3784 -.L3742: + bne .L3947 + adrp x0, .LC327 + add x0, x0, :lo12:.LC327 + b .L3989 +.L3947: mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3744 - adrp x0, .LC306 - add x0, x0, :lo12:.LC306 - b .L3784 -.L3744: - adrp x0, .LC307 - add x0, x0, :lo12:.LC307 -.L3784: + bne .L3949 + adrp x0, .LC328 + add x0, x0, :lo12:.LC328 + b .L3989 +.L3949: + adrp x0, .LC329 + add x0, x0, :lo12:.LC329 +.L3989: bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 17227 movk w0, 0x4c4f, lsl 16 cmp w1, w0 - bne .L3789 + bne .L3994 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 adrp x0, .LANCHOR7 - bne .L3745 + bne .L3950 add x0, x0, :lo12:.LANCHOR7 add x1, x29, 56 mov x2, 16 - ldr x0, [x0,-40] + ldr x0, [x0,-24] ldr w0, [x0,20] str w0, [x29,60] strb w0, [x29,64] mov x0, x20 bl rk_copy_to_user - cbz x0, .L3689 - b .L3789 -.L3745: + cbz x0, .L3894 + b .L3994 +.L3950: add x20, x0, :lo12:.LANCHOR7 - ldr w1, [x20,496] + ldr w1, [x20,512] cmp w1, 10 - bhi .L3789 - ldr x1, [x20,-40] + bhi .L3994 + ldr x1, [x20,-24] ldr w2, [x29,60] ldr w3, [x1,24] cmp w3, w2 - beq .L3746 - cbz w3, .L3746 - adrp x0, .LC308 + beq .L3951 + cbz w3, .L3951 + adrp x0, .LC330 mov w1, w2 - add x0, x0, :lo12:.LC308 + add x0, x0, :lo12:.LC330 bl printk - ldr w0, [x20,496] + ldr w0, [x20,512] add w0, w0, 1 - str w0, [x20,496] - b .L3789 -.L3746: + str w0, [x20,512] + b .L3994 +.L3951: add x0, x0, :lo12:.LANCHOR7 - str wzr, [x0,496] + str wzr, [x0,512] mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3747 + bne .L3952 str wzr, [x1,20] str wzr, [x1,24] - b .L3748 -.L3747: + b .L3953 +.L3952: mov w0, 1 str w2, [x1,24] str w0, [x1,20] -.L3748: +.L3953: mov w0, 1 mov x19, -2 bl StorageSysDataStore cmn w0, #1 - bne .L3786 - b .L3716 -.L3711: - adrp x0, .LC309 - add x0, x0, :lo12:.LC309 + bne .L3991 + b .L3921 +.L3916: + adrp x0, .LC331 + add x0, x0, :lo12:.LC331 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3732 + bne .L3937 ldr w2, [x29,60] cmp w2, 504 - bhi .L3732 + bhi .L3937 mov w0, 30224 adrp x1, .LANCHOR7 movk w0, 0x4004, lsl 16 @@ -23845,72 +25350,72 @@ rknand_sys_storage_ioctl: cmp w19, w0 add x1, x1, :lo12:.LANCHOR7 add x0, x29, 64 - bne .L3749 - ldr x1, [x1,504] - b .L3785 -.L3749: - ldr x1, [x1,512] -.L3785: + bne .L3954 + ldr x1, [x1,520] + b .L3990 +.L3954: + ldr x1, [x1,528] +.L3990: add x1, x1, 8 -.L3794: +.L3999: bl memcpy -.L3795: +.L4000: mov x0, x20 add x1, x29, 56 mov x2, 520 - b .L3781 -.L3708: - adrp x0, .LC310 - add x0, x0, :lo12:.LC310 + b .L3986 +.L3913: + adrp x0, .LC332 + add x0, x0, :lo12:.LC332 bl printk add x0, x29, 56 mov x1, x20 mov x2, 520 bl rk_copy_from_user - cbnz x0, .L3735 + cbnz x0, .L3940 ldr w1, [x29,56] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3732 + bne .L3937 ldr w2, [x29,60] cmp w2, 504 - bhi .L3732 + bhi .L3937 mov w0, 30225 add w2, w2, 8 movk w0, 0x4004, lsl 16 cmp w19, w0 adrp x19, .LANCHOR7 add x19, x19, :lo12:.LANCHOR7 - bne .L3751 - ldr x0, [x19,504] + bne .L3956 + ldr x0, [x19,520] add x1, x29, 56 bl memcpy mov w0, 2 - ldr x1, [x19,504] - b .L3787 -.L3751: - ldr x0, [x19,512] + ldr x1, [x19,520] + b .L3992 +.L3956: + ldr x0, [x19,528] add x1, x29, 56 bl memcpy - ldr x1, [x19,512] + ldr x1, [x19,528] mov w0, 3 -.L3787: +.L3992: bl StorageSysDataStore uxtw x19, w0 - b .L3716 -.L3786: + b .L3921 +.L3991: mov x19, 0 -.L3716: - adrp x0, .LC311 +.L3921: + adrp x0, .LC333 mov x1, x19 - add x0, x0, :lo12:.LC311 + add x0, x0, :lo12:.LC333 bl printk mov x0, x19 - b .L3689 -.L3752: + b .L3894 +.L3957: mov x0, -22 -.L3689: +.L3894: ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 @@ -23927,57 +25432,57 @@ rk_ftl_storage_sys_init: add x29, sp, 0 stp x19, x20, [sp,16] adrp x20, .LANCHOR7 + str x21, [sp,32] add x19, x20, :lo12:.LANCHOR7 - stp x21, x22, [sp,32] - ldr x1, [x19,-96] - str w0, [x19,-56] + ldr x1, [x19,-80] + str w0, [x19,-40] add x0, x1, 512 - str x0, [x19,-40] + str x0, [x19,-24] add x0, x1, 1024 - str x1, [x19,-24] - str x0, [x19,504] + str x1, [x19,-8] + str x0, [x19,520] add x1, x1, 1536 - sub x0, x19, #16 - strb wzr, [x19,-68] - str xzr, [x19,-64] + mov x0, x19 + str x1, [x19,528] + strb wzr, [x19,-52] str xzr, [x19,-48] - str x1, [x19,512] + str xzr, [x19,-32] bl ftl_memcpy - ldr x21, [x19,-24] - str wzr, [x19,-32] - str wzr, [x19,496] - ldr w0, [x21,16] - ldr w22, [x21,508] - str w0, [x19,-28] - cbz w22, .L3801 - mov x0, x21 + ldr x0, [x19,-8] + str wzr, [x19,-16] + str wzr, [x19,512] + ldr w1, [x0,16] + ldr w21, [x0,508] + str w1, [x19,-12] + cbz w21, .L4007 mov w1, 508 bl js_hash - cmp w22, w0 - beq .L3801 - adrp x0, .LC312 - str wzr, [x21,16] - add x0, x0, :lo12:.LC312 - str wzr, [x19,-28] + cmp w21, w0 + beq .L4007 + ldr x0, [x19,-8] + str wzr, [x19,-12] + str wzr, [x0,16] + adrp x0, .LC334 + add x0, x0, :lo12:.LC334 bl printk -.L3801: +.L4007: add x0, x20, :lo12:.LANCHOR7 - ldr w1, [x0,-28] - cbz w1, .L3802 + ldr w1, [x0,-12] + cbz w1, .L4009 mov w1, 5161 movk w1, 0xc059, lsl 16 - str w1, [x0,-32] -.L3802: + str w1, [x0,-16] +.L4009: add x20, x20, :lo12:.LANCHOR7 mov w0, 2 - ldr x1, [x20,504] + ldr x1, [x20,520] bl StorageSysDataLoad - ldr x1, [x20,512] + ldr x1, [x20,528] mov w0, 3 bl StorageSysDataLoad bl rknand_sys_storage_init + ldr x21, [sp,32] ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] ldp x29, x30, [sp], 48 ret .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init @@ -24002,55 +25507,55 @@ rk_ftl_vendor_storage_init: bl ftl_malloc add x1, x21, :lo12:.LANCHOR7 mov w19, -12 - str x0, [x1,520] - cbz x0, .L3811 + str x0, [x1,536] + cbz x0, .L4015 mov w23, 0 - adrp x24, .LC313 + adrp x24, .LC335 mov w19, w23 mov w22, w23 - add x24, x24, :lo12:.LC313 -.L3815: + add x24, x24, :lo12:.LC335 +.L4019: add x20, x21, :lo12:.LANCHOR7 lsl w0, w22, 7 mov w1, 128 - ldr x2, [x20,520] + ldr x2, [x20,536] bl FlashBootVendorRead - cbnz w0, .L3812 - ldr x3, [x20,520] + cbnz w0, .L4016 + ldr x3, [x20,536] mov x0, x24 add x2, x3, 61440 ldr w1, [x3] ldr w3, [x3,4] ldr w2, [x2,4092] bl printk - ldr x20, [x20,520] + ldr x20, [x20,536] mov w0, 22084 movk w0, 0x524b, lsl 16 ldr w1, [x20] cmp w1, w0 - bne .L3813 + bne .L4017 ldr w0, [x20,4] cmp w19, w0 - bcs .L3813 + bcs .L4017 add x1, x20, 61440 ldr w1, [x1,4092] cmp w1, w0 csel w23, w23, w22, ne csel w19, w19, w0, ne -.L3813: - cbnz w22, .L3823 +.L4017: + cbnz w22, .L4027 mov w22, 1 - b .L3815 -.L3823: - cbz w19, .L3816 + b .L4019 +.L4027: + cbz w19, .L4020 lsl w0, w23, 7 mov w1, 128 mov x2, x20 bl FlashBootVendorRead mov w19, w0 - cbz w0, .L3811 - b .L3812 -.L3816: + cbz w0, .L4015 + b .L4016 +.L4020: mov x0, x20 mov w1, w19 mov x2, 65536 @@ -24064,14 +25569,14 @@ rk_ftl_vendor_storage_init: mov w0, -1032 strh w19, [x20,12] strh w0, [x20,14] - b .L3811 -.L3812: + b .L4015 +.L4016: add x21, x21, :lo12:.LANCHOR7 mov w19, -1 - ldr x0, [x21,520] + ldr x0, [x21,536] bl kfree - str xzr, [x21,520] -.L3811: + str xzr, [x21,536] +.L4015: mov w0, w19 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -24083,24 +25588,24 @@ rk_ftl_vendor_storage_init: .global rk_ftl_vendor_read .type rk_ftl_vendor_read, %function rk_ftl_vendor_read: - adrp x3, .LANCHOR7+520 + adrp x3, .LANCHOR7+536 stp x29, x30, [sp, -32]! add x29, sp, 0 - ldr x5, [x3,#:lo12:.LANCHOR7+520] + ldr x5, [x3,#:lo12:.LANCHOR7+536] mov w3, -1 str x19, [sp,16] - cbz x5, .L3825 + cbz x5, .L4029 ldrh w3, [x5,10] mov x4, 0 -.L3826: +.L4030: cmp w4, w3 mov w6, w4 - bcs .L3830 + bcs .L4034 add x7, x5, x4, lsl 3 add x4, x4, 1 ldrh w7, [x7,16] cmp w7, w0 - bne .L3826 + bne .L4030 add x6, x5, x6, uxtw 3 ldrh w4, [x6,20] mov x0, x1 @@ -24112,10 +25617,10 @@ rk_ftl_vendor_read: uxtw x2, w19 bl memcpy mov w3, w19 - b .L3825 -.L3830: + b .L4029 +.L4034: mov w3, -1 -.L3825: +.L4029: mov w0, w3 ldr x19, [sp,16] ldp x29, x30, [sp], 32 @@ -24127,10 +25632,10 @@ rk_ftl_vendor_read: rk_ftl_vendor_write: stp x29, x30, [sp, -112]! mov w6, w0 - adrp x0, .LANCHOR7+520 + adrp x0, .LANCHOR7+536 add x29, sp, 0 stp x19, x20, [sp,16] - ldr x19, [x0,#:lo12:.LANCHOR7+520] + ldr x19, [x0,#:lo12:.LANCHOR7+536] stp x25, x26, [sp,64] stp x27, x28, [sp,80] stp x21, x22, [sp,32] @@ -24138,38 +25643,38 @@ rk_ftl_vendor_write: mov w26, w2 mov x28, x1 mov w2, -1 - cbz x19, .L3832 + cbz x19, .L4036 add w20, w26, 63 ldrh w3, [x19,10] ldrh w23, [x19,8] and w20, w20, -64 mov x2, 0 -.L3833: +.L4037: cmp w2, w3 mov w4, w2 - bcs .L3848 + bcs .L4052 add x0, x19, x2, lsl 3 add x2, x2, 1 ldrh w0, [x0,16] cmp w0, w6 - bne .L3833 + bne .L4037 add x21, x19, x4, uxtw 3 ldrh w24, [x21,20] add x5, x19, 1024 add w24, w24, 63 and w24, w24, -64 cmp w26, w24 - bls .L3834 + bls .L4038 ldrh w0, [x19,14] mov w2, -1 cmp w0, w20 - bcc .L3832 + bcc .L4036 ldrh w21, [x21,18] add w22, w3, w2 -.L3835: +.L4039: cmp w4, w22 uxtw x3, w4 - bcs .L3849 + bcs .L4053 add x3, x19, x3, lsl 3 add w25, w4, 1 add x1, x19, x25, uxtw 3 @@ -24192,8 +25697,8 @@ rk_ftl_vendor_write: mov w4, w25 ldr x6, [x29,96] ldr x5, [x29,104] - b .L3835 -.L3849: + b .L4039 +.L4053: add x3, x19, x3, lsl 3 uxth w21, w21 mov x1, x28 @@ -24210,20 +25715,20 @@ rk_ftl_vendor_write: add w24, w24, w0 sub w24, w24, w20 strh w24, [x19,14] - b .L3847 -.L3834: + b .L4051 +.L4038: ldrh w0, [x21,18] mov x1, x28 uxtw x2, w26 add x0, x5, x0 bl memcpy strh w26, [x21,20] - b .L3847 -.L3848: + b .L4051 +.L4052: ldrh w4, [x19,14] mov w2, -1 cmp w4, w20 - bcc .L3832 + bcc .L4036 add x3, x19, x3, uxth 3 strh w6, [x3,16] uxth w20, w20 @@ -24243,7 +25748,7 @@ rk_ftl_vendor_write: ldrh w0, [x19,10] add w0, w0, 1 strh w0, [x19,10] -.L3847: +.L4051: ldr w0, [x19,4] add x1, x19, 61440 mov x2, x19 @@ -24260,7 +25765,7 @@ rk_ftl_vendor_write: lsl w0, w23, 7 bl FlashBootVendorWrite mov w2, 0 -.L3832: +.L4036: mov w0, w2 ldp x19, x20, [sp,16] ldp x21, x22, [sp,32] @@ -24284,37 +25789,37 @@ rk_ftl_vendor_storage_ioctl: mov x21, x2 bl ftl_malloc mov x19, x0 - cbz x0, .L3851 + cbz x0, .L4055 mov w2, 30209 ldr x1, [x29,56] movk w2, 0x4004, lsl 16 cmp w1, w2 - beq .L3853 + beq .L4057 mov w2, 30210 movk w2, 0x4004, lsl 16 cmp w1, w2 - beq .L3854 - b .L3865 -.L3853: + beq .L4058 + b .L4069 +.L4057: mov x1, x21 mov x2, 8 bl rk_copy_from_user - cbnz x0, .L3865 + cbnz x0, .L4069 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L3856 -.L3857: + beq .L4060 +.L4061: mov x20, -1 - b .L3852 -.L3856: + b .L4056 +.L4060: ldrh w0, [x19,4] add x1, x19, 8 ldrh w2, [x19,6] bl rk_ftl_vendor_read cmn w0, #1 - beq .L3857 + beq .L4061 uxth x2, w0 strh w0, [x19,6] mov x1, x19 @@ -24324,38 +25829,38 @@ rk_ftl_vendor_storage_ioctl: bl rk_copy_to_user cmp x0, xzr csel x20, xzr, x20, eq - b .L3852 -.L3854: + b .L4056 +.L4058: mov x1, x21 mov x2, 8 bl rk_copy_from_user - cbnz x0, .L3865 + cbnz x0, .L4069 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L3857 + bne .L4061 ldrh w3, [x19,6] cmp w3, 4087 - bhi .L3857 + bhi .L4061 add w2, w3, 8 mov x0, x19 mov x1, x21 sxtw x2, w2 bl rk_copy_from_user - cbnz x0, .L3865 + cbnz x0, .L4069 ldrh w0, [x19,4] add x1, x19, 8 ldrh w2, [x19,6] bl rk_ftl_vendor_write sxtw x20, w0 - b .L3852 -.L3865: + b .L4056 +.L4069: mov x20, -14 -.L3852: +.L4056: mov x0, x19 bl kfree -.L3851: +.L4055: mov x0, x20 ldr x21, [sp,32] ldp x19, x20, [sp,16] @@ -24517,6 +26022,7 @@ rk_ftl_vendor_storage_ioctl: .global g_flash_interface_mode .global g_idb_ecc_bits .global g_idb_slc_mode_enable + .global g_one_pass_program .global g_slc_mode_addr2 .global g_slc_mode_enable .global g_flash_cur_mode @@ -24534,24 +26040,24 @@ rk_ftl_vendor_storage_ioctl: .section .rodata .align 3 .LANCHOR1 = . + 0 - .type __func__.34004, %object - .size __func__.34004, 18 -__func__.34004: + .type __func__.34137, %object + .size __func__.34137, 18 +__func__.34137: .string "_list_remove_node" .zero 6 - .type __func__.34029, %object - .size __func__.34029, 23 -__func__.34029: + .type __func__.34162, %object + .size __func__.34162, 23 +__func__.34162: .string "_list_update_data_list" .zero 1 - .type __func__.19018, %object - .size __func__.19018, 22 -__func__.19018: + .type __func__.19088, %object + .size __func__.19088, 22 +__func__.19088: .string "nand_flash_print_info" .zero 2 - .type __func__.19104, %object - .size __func__.19104, 11 -__func__.19104: + .type __func__.19174, %object + .size __func__.19174, 11 +__func__.19174: .string "nandc_init" .zero 5 .type toshiba_A19ref_value, %object @@ -24713,14 +26219,14 @@ toshiba_ref_value: .byte 8 .byte 12 .byte 112 - .type __func__.18606, %object - .size __func__.18606, 28 -__func__.18606: + .type __func__.18644, %object + .size __func__.18644, 28 +__func__.18644: .string "flash_wait_device_ready_raw" .zero 4 - .type __func__.18659, %object - .size __func__.18659, 22 -__func__.18659: + .type __func__.18708, %object + .size __func__.18708, 22 +__func__.18708: .string "flash_start_page_read" .zero 2 .type toshiba_3D_tlc_value, %object @@ -25141,19 +26647,19 @@ toshiba_3D_slc_value: .byte -56 .byte 56 .zero 5 - .type __func__.18684, %object - .size __func__.18684, 23 -__func__.18684: + .type __func__.18733, %object + .size __func__.18733, 23 +__func__.18733: .string "flash_start_plane_read" .zero 1 - .type __func__.18581, %object - .size __func__.18581, 26 -__func__.18581: + .type __func__.18619, %object + .size __func__.18619, 26 +__func__.18619: .string "flash_erase_duplane_block" .zero 6 - .type __func__.18592, %object - .size __func__.18592, 21 -__func__.18592: + .type __func__.18630, %object + .size __func__.18630, 21 +__func__.18630: .string "flash_erase_block_en" .zero 3 .type random_seed, %object @@ -25287,19 +26793,19 @@ random_seed: .hword 28406 .hword 17598 .hword 28087 - .type __func__.19283, %object - .size __func__.19283, 13 -__func__.19283: + .type __func__.19353, %object + .size __func__.19353, 13 +__func__.19353: .string "buf_add_tail" .zero 3 - .type __func__.19296, %object - .size __func__.19296, 10 -__func__.19296: + .type __func__.19366, %object + .size __func__.19366, 10 +__func__.19366: .string "buf_alloc" .zero 6 - .type __func__.19310, %object - .size __func__.19310, 16 -__func__.19310: + .type __func__.19380, %object + .size __func__.19380, 16 +__func__.19380: .string "buf_remove_free" .type zftl_debug_proc_fops, %object .size zftl_debug_proc_fops, 216 @@ -25313,249 +26819,254 @@ zftl_debug_proc_fops: .zero 8 .xword single_release .zero 104 - .type __func__.33599, %object - .size __func__.33599, 12 -__func__.33599: + .type __func__.33706, %object + .size __func__.33706, 12 +__func__.33706: .string "gc_add_sblk" .zero 4 - .type __func__.33667, %object - .size __func__.33667, 19 -__func__.33667: + .type __func__.33800, %object + .size __func__.33800, 19 +__func__.33800: .string "gc_write_completed" .zero 5 - .type __func__.33718, %object - .size __func__.33718, 16 -__func__.33718: - .string "gc_free_src_blk" - .type __func__.34210, %object - .size __func__.34210, 18 -__func__.34210: + .type __func__.34344, %object + .size __func__.34344, 18 +__func__.34344: .string "ftl_alloc_sys_blk" .zero 6 - .type __func__.34220, %object - .size __func__.34220, 17 -__func__.34220: + .type __func__.34354, %object + .size __func__.34354, 17 +__func__.34354: .string "ftl_free_sys_blk" .zero 7 - .type __func__.34324, %object - .size __func__.34324, 23 -__func__.34324: + .type __func__.34465, %object + .size __func__.34465, 23 +__func__.34465: .string "ftl_get_ppa_from_index" .zero 1 - .type __func__.34363, %object - .size __func__.34363, 22 -__func__.34363: + .type __func__.34505, %object + .size __func__.34505, 22 +__func__.34505: .string "ftl_get_new_free_page" .zero 2 - .type __func__.34374, %object - .size __func__.34374, 22 -__func__.34374: + .type __func__.34516, %object + .size __func__.34516, 22 +__func__.34516: .string "ftl_ext_alloc_new_blk" .zero 2 - .type __func__.33381, %object - .size __func__.33381, 14 -__func__.33381: + .type __func__.33851, %object + .size __func__.33851, 16 +__func__.33851: + .string "gc_free_src_blk" + .type __func__.33459, %object + .size __func__.33459, 14 +__func__.33459: .string "ftl_write_buf" .zero 2 - .type __func__.33425, %object - .size __func__.33425, 18 -__func__.33425: + .type __func__.33504, %object + .size __func__.33504, 18 +__func__.33504: .string "zftl_add_read_buf" .zero 6 - .type __func__.34169, %object - .size __func__.34169, 15 -__func__.34169: + .type __func__.34302, %object + .size __func__.34302, 15 +__func__.34302: .string "ftl_alloc_sblk" .align 3 .LANCHOR3 = . + 0 - .type __func__.34721, %object - .size __func__.34721, 17 -__func__.34721: + .type __func__.34892, %object + .size __func__.34892, 17 +__func__.34892: .string "pm_alloc_new_blk" .zero 7 - .type __func__.34749, %object - .size __func__.34749, 21 -__func__.34749: + .type __func__.34920, %object + .size __func__.34920, 21 +__func__.34920: .string "pm_select_ram_region" .zero 3 - .type __func__.19008, %object - .size __func__.19008, 20 -__func__.19008: + .type __func__.19078, %object + .size __func__.19078, 20 +__func__.19078: .string "flash_die_info_init" .zero 4 - .type __func__.33316, %object - .size __func__.33316, 17 -__func__.33316: + .type __func__.33394, %object + .size __func__.33394, 17 +__func__.33394: .string "lpa_rebuild_hash" .zero 7 - .type __func__.34685, %object - .size __func__.34685, 13 -__func__.34685: + .type __func__.34856, %object + .size __func__.34856, 13 +__func__.34856: .string "pm_free_sblk" .zero 3 - .type __func__.19333, %object - .size __func__.19333, 21 -__func__.19333: + .type __func__.19404, %object + .size __func__.19404, 21 +__func__.19404: .string "flash_info_data_init" .zero 3 - .type __func__.18537, %object - .size __func__.18537, 19 -__func__.18537: + .type __func__.18561, %object + .size __func__.18561, 19 +__func__.18561: .string "flash_read_page_en" .zero 5 - .type __func__.19322, %object - .size __func__.19322, 20 -__func__.19322: - .string "flash_info_blk_init" - .zero 4 - .type __func__.18672, %object - .size __func__.18672, 31 -__func__.18672: + .type __func__.18721, %object + .size __func__.18721, 31 +__func__.18721: .string "flash_complete_plane_page_read" .zero 1 - .type __func__.18697, %object - .size __func__.18697, 25 -__func__.18697: + .type __func__.18746, %object + .size __func__.18746, 25 +__func__.18746: .string "flash_complete_page_read" .zero 7 - .type __func__.34552, %object - .size __func__.34552, 31 -__func__.34552: + .type __func__.34701, %object + .size __func__.34701, 31 +__func__.34701: .string "queue_wait_first_req_completed" .zero 1 - .type __func__.34632, %object - .size __func__.34632, 15 -__func__.34632: + .type __func__.34782, %object + .size __func__.34782, 15 +__func__.34782: .string "sblk_read_page" .zero 1 - .type __func__.18648, %object - .size __func__.18648, 22 -__func__.18648: - .string "flash_start_page_prog" - .zero 2 - .type __func__.34605, %object - .size __func__.34605, 15 -__func__.34605: - .string "sblk_prog_page" - .zero 1 - .type __func__.18630, %object - .size __func__.18630, 26 -__func__.18630: + .type __func__.18668, %object + .size __func__.18668, 26 +__func__.18668: .string "flash_start_tlc_page_prog" .zero 6 - .type __func__.18566, %object - .size __func__.18566, 19 -__func__.18566: + .type __func__.18679, %object + .size __func__.18679, 29 +__func__.18679: + .string "flash_start_3d_mlc_page_prog" + .zero 3 + .type __func__.18697, %object + .size __func__.18697, 22 +__func__.18697: + .string "flash_start_page_prog" + .zero 2 + .type __func__.34755, %object + .size __func__.34755, 15 +__func__.34755: + .string "sblk_prog_page" + .zero 1 + .type __func__.18603, %object + .size __func__.18603, 19 +__func__.18603: .string "flash_prog_page_en" .zero 5 - .type __func__.34435, %object - .size __func__.34435, 14 -__func__.34435: + .type __func__.34579, %object + .size __func__.34579, 14 +__func__.34579: .string "ftl_prog_page" .zero 2 - .type __func__.34137, %object - .size __func__.34137, 15 -__func__.34137: + .type __func__.34270, %object + .size __func__.34270, 15 +__func__.34270: .string "ftl_info_flush" .zero 1 - .type __func__.34399, %object - .size __func__.34399, 19 -__func__.34399: + .type __func__.34541, %object + .size __func__.34541, 19 +__func__.34541: .string "ftl_ext_info_flush" .zero 5 - .type __func__.34411, %object - .size __func__.34411, 18 -__func__.34411: + .type __func__.34553, %object + .size __func__.34553, 18 +__func__.34553: .string "ftl_ext_info_init" .zero 6 - .type __func__.34298, %object - .size __func__.34298, 23 -__func__.34298: + .type __func__.34435, %object + .size __func__.34435, 23 +__func__.34435: .string "ftl_open_sblk_recovery" .zero 1 - .type __func__.34731, %object - .size __func__.34731, 14 -__func__.34731: + .type __func__.34902, %object + .size __func__.34902, 14 +__func__.34902: .string "pm_write_page" .zero 2 - .type __func__.19355, %object - .size __func__.19355, 17 -__func__.19355: + .type __func__.19426, %object + .size __func__.19426, 17 +__func__.19426: .string "flash_info_flush" .zero 7 - .type __func__.19063, %object - .size __func__.19063, 16 -__func__.19063: + .type __func__.19393, %object + .size __func__.19393, 20 +__func__.19393: + .string "flash_info_blk_init" + .zero 4 + .type __func__.19133, %object + .size __func__.19133, 16 +__func__.19133: .string "nand_flash_init" - .type __func__.34279, %object - .size __func__.34279, 16 -__func__.34279: + .type __func__.34413, %object + .size __func__.34413, 16 +__func__.34413: .string "ftl_sysblk_dump" - .type __func__.34671, %object - .size __func__.34671, 16 -__func__.34671: + .type __func__.34842, %object + .size __func__.34842, 16 +__func__.34842: .string "load_l2p_region" - .type __func__.34705, %object - .size __func__.34705, 6 -__func__.34705: + .type __func__.34876, %object + .size __func__.34876, 6 +__func__.34876: .string "pm_gc" .zero 2 - .type __func__.33654, %object - .size __func__.33654, 22 -__func__.33654: + .type __func__.33787, %object + .size __func__.33787, 22 +__func__.33787: .string "gc_update_l2p_map_new" .zero 2 - .type __func__.33762, %object - .size __func__.33762, 16 -__func__.33762: + .type __func__.33895, %object + .size __func__.33895, 16 +__func__.33895: .string "gc_scan_src_blk" - .type __func__.33820, %object - .size __func__.33820, 20 -__func__.33820: + .type __func__.33953, %object + .size __func__.33953, 20 +__func__.33953: .string "gc_scan_static_data" .zero 4 - .type __func__.33883, %object - .size __func__.33883, 18 -__func__.33883: + .type __func__.34016, %object + .size __func__.34016, 18 +__func__.34016: .string "gc_block_vpn_scan" .zero 6 - .type __func__.34255, %object - .size __func__.34255, 14 -__func__.34255: + .type __func__.34389, %object + .size __func__.34389, 14 +__func__.34389: .string "ftl_sblk_dump" .zero 2 - .type __func__.33458, %object - .size __func__.33458, 10 -__func__.33458: + .type __func__.33537, %object + .size __func__.33537, 10 +__func__.33537: .string "zftl_read" .zero 6 - .type __func__.33620, %object - .size __func__.33620, 21 -__func__.33620: + .type __func__.33753, %object + .size __func__.33753, 21 +__func__.33753: .string "gc_check_data_one_wl" .zero 3 - .type __func__.34345, %object - .size __func__.34345, 19 -__func__.34345: + .type __func__.34486, %object + .size __func__.34486, 19 +__func__.34486: .string "ftl_update_l2p_map" .zero 5 - .type __func__.33363, %object - .size __func__.33363, 17 -__func__.33363: + .type __func__.33441, %object + .size __func__.33441, 17 +__func__.33441: .string "ftl_write_commit" .zero 7 - .type __func__.33696, %object - .size __func__.33696, 16 -__func__.33696: + .type __func__.33829, %object + .size __func__.33829, 16 +__func__.33829: .string "gc_do_copy_back" - .type __func__.33911, %object - .size __func__.33911, 11 -__func__.33911: + .type __func__.34044, %object + .size __func__.34044, 11 +__func__.34044: .string "zftl_do_gc" .zero 5 - .type __func__.33489, %object - .size __func__.33489, 13 -__func__.33489: + .type __func__.33568, %object + .size __func__.33568, 13 +__func__.33568: .string "_ftl_discard" .section .rodata.str1.1,"aMS",%progbits,1 .LC0: @@ -25563,7 +27074,7 @@ __func__.33489: .LC1: .string "%s\n" .LC2: - .string "FTL version: 6.0.14 20181108" + .string "FTL version: 6.0.16 20190427" .LC3: .string "zftl_debug:0x%x\n" .LC4: @@ -25621,570 +27132,614 @@ __func__.33489: .LC30: .string "TOGGLE enable: %x\n" .LC31: - .string "MultiPlaneProgCmd: %x %x\n" + .string "g_flash_slc_mode: %x %x\n" .LC32: - .string "MultiPlaneReadCmd: %x %x\n" + .string "MultiPlaneProgCmd: %x %x\n" .LC33: - .string "g_flash_toggle_mode_en: %x\n" + .string "MultiPlaneReadCmd: %x %x\n" .LC34: - .string "...%s enter... %p\n" + .string "g_flash_toggle_mode_en: %x\n" .LC35: - .string "0:%x %x %x %x %x\n" + .string "...%s enter... %p\n" .LC36: - .string "g_nandc_ver...%d\n" + .string "0:%x %x %x %x %x\n" .LC37: - .string "nand sdr mode %x\n" + .string "g_nandc_ver...%d\n" .LC38: - .string "nand ddr mode %x\n" + .string "nand sdr mode %x\n" .LC39: - .string "No.%d FLASH ID:%x %x %x %x %x %x\n" + .string "nand ddr mode %x\n" .LC40: - .string "bad block test:%x %x\n" + .string "No.%d FLASH ID:%x %x %x %x %x %x\n" .LC41: - .string "flash_erase_duplane_block %x %x %x\n" + .string "otp:%x %x %x %x\n" .LC42: - .string "flash_erase_duplane_block pageadd = %x status = %x\n" + .string "bad block test:%x %x\n" .LC43: - .string "flash_erase_block %x %x %x\n" + .string "flash_erase_duplane_block %x %x %x\n" .LC44: - .string "flash_erase_block %d block = %x status = %x\n" + .string "flash_erase_duplane_block pageadd = %x status = %x\n" .LC45: - .string "erase done: %x\n" + .string "flash_erase_block %x %x %x\n" .LC46: - .string "flash_mask_bad_block %d %d\n" + .string "flash_erase_block %d block = %x status = %x\n" .LC47: - .string "zftl_debug" + .string "erase done: %x\n" .LC48: - .string "FLASH ID: %x %x %x %x %x %x\n" + .string "flash_mask_bad_block %d %d\n" .LC49: - .string "density: %d MB\n" + .string "zftl_debug" .LC50: - .string "device density: %d MB\n" + .string "FLASH ID: %x %x %x %x %x %x\n" .LC51: - .string "FTL INFO:\n" + .string "density: %d MB\n" .LC52: - .string "max_lpn = 0x%x\n" + .string "device density: %d MB\n" .LC53: - .string "density = 0x%x\n" + .string "FTL INFO:\n" .LC54: - .string "slc vpn = 0x%x\n" + .string "max_lpn = 0x%x\n" .LC55: - .string "xlc vpn = 0x%x\n" + .string "density = 0x%x\n" .LC56: - .string "free slc blk = 0x%x\n" + .string "slc vpn = 0x%x\n" .LC57: - .string "free xlc blk = 0x%x\n" + .string "xlc vpn = 0x%x\n" .LC58: - .string "free mix blk = 0x%x\n" + .string "free slc blk = 0x%x\n" .LC59: - .string "slc data blk = 0x%x\n" + .string "free xlc blk = 0x%x\n" .LC60: - .string "slc cache blk = 0x%x\n" + .string "free mix blk = 0x%x\n" .LC61: - .string "xlc data blk = 0x%x\n" + .string "slc data blk = 0x%x\n" .LC62: - .string "free buf = %d, %d, %d\n" + .string "slc cache blk = 0x%x\n" .LC63: - .string "bad blk = %d %d\n" + .string "xlc data blk = 0x%x\n" .LC64: - .string "TBW = %d MB\n" + .string "free buf = %d, %d, %d\n" .LC65: - .string "TBR = %d MB\n" + .string "bad blk = %d %d\n" .LC66: - .string "POC = %d\n" + .string "TBW = %d MB\n" .LC67: - .string "PLC = %d\n" + .string "TBR = %d MB\n" .LC68: - .string "sys run time = %d S\n" + .string "POC = %d\n" .LC69: - .string "slc mode = %d\n" + .string "PLC = %d\n" .LC70: - .string "prog err = %d\n" + .string "sys run time = %d S\n" .LC71: - .string "read err = %d\n" + .string "slc mode = %d\n" .LC72: - .string "GC XLC page = %d\n" + .string "prog err = %d\n" .LC73: - .string "GC SLC page = %d\n" + .string "read err = %d\n" .LC74: - .string "discard page = 0x%x\n" + .string "GC XLC page = %d\n" .LC75: - .string "version = %d\n" + .string "GC SLC page = %d\n" .LC76: - .string "acblk = 0x%x %d %d\n" + .string "discard page = 0x%x\n" .LC77: - .string "tmblk = 0x%x %d %d\n" + .string "version = %d\n" .LC78: - .string "gcblk = 0x%x %d %d\n" + .string "acblk = 0x%x %d %d\n" .LC79: - .string "slc ec = %d, %d, %d, %d, %d\n" + .string "tmblk = 0x%x %d %d\n" .LC80: - .string "xlc ec = %d, %d, %d, %d, %d\n" + .string "gcblk = 0x%x %d %d\n" .LC81: - .string "gc free blk th = %d\n" + .string "slc ec = %d, %d, %d, %d, %d\n" .LC82: - .string "gc vpn th = %d %d %d %d %d\n" + .string "xlc ec = %d, %d, %d, %d, %d\n" .LC83: - .string "swl blk = %x %x %x %x\n" + .string "gc free blk th = %d\n" .LC84: - .string "gc_add_sblk = %d, %d, %d, %d, %d, %d\n" + .string "gc vpn th = %d %d %d %d %d\n" .LC85: - .string "gc_add_sblk = %d, %d, %d,last update:%d, %d\n" + .string "swl blk = %x %x %x %x\n" .LC86: - .string "status: %x, ppa: %x\n" + .string "rf info = %x %x %x %x %x\n" .LC87: - .string "gc_write_completed: %x %x %x %x\n" + .string "gc_add_sblk = %d, %d, %d, %d, %d, %d\n" .LC88: - .string "%d gc_free_temp_buf buf id= %x\n" + .string "gc_add_sblk = %d, %d, %d,last update:%d, %d\n" .LC89: - .string "gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n" + .string "gc_mark_bad_ppa %d %x %x\n" .LC90: - .string "zftl_get_gc_node cache = %x index = %d vpn = %x\n" + .string "status: %x, ppa: %x\n" .LC91: - .string "gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n" + .string "gc_write_completed: %x %x %x %x\n" .LC92: - .string "swl_tlc_free_mini_ec_blk alloc sblk %x\n" + .string "%d gc_free_temp_buf buf id= %x\n" .LC93: - .string "zftl_get_free_sblk %x %d, %p %d %d\n" + .string "gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n" .LC94: - .string "zftl_gc_get_free_sblk %x %x %x, %d %d %d\n" + .string "zftl_get_gc_node cache = %x index = %d vpn = %x\n" .LC95: - .string "swl_slc_free_mini_ec_blk alloc sblk %x\n" + .string "gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n" .LC96: - .string "list count:%p %d\n" + .string "swl_tlc_free_mini_ec_blk alloc sblk %x\n" .LC97: - .string "%d: node:%x %x %x %x, %d %d %d %d %d\n" + .string "zftl_get_free_sblk %x %d, %p %d %d\n" .LC98: - .string "swl_tlc_free_mini_ec_blk sblk %x\n" + .string "zftl_gc_get_free_sblk %x %x %x, %d %d %d\n" .LC99: - .string "swl_slc_free_mini_ec_blk sblk %x\n" + .string "swl_slc_free_mini_ec_blk alloc sblk %x\n" .LC100: - .string "gc_free_src_blk = %x, vpn = %d\n" + .string "list count:%p %d\n" .LC101: - .string "gc_free_src_blk %x, %d\n" + .string "%d: node:%x %x %x %x, %d %d %d %d %d\n" .LC102: .string "ftl_vpn_decrement %x = %d, %d\n" .LC103: - .string "mask bad block:cs %x block: %x\n" + .string "mask bad block:cs %x %x block: %x %x\n" .LC104: - .string "free blk: s:%x,t:%x,m:%x, data blk:s:%x,%x,t%x vpn: s:%x t:%x, max_vpn: %x\n" + .string "gc_free_bad_sblk 0x%x\n" .LC105: - .string "totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n" + .string "swl_tlc_free_mini_ec_blk sblk %x\n" .LC106: - .string "gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n" + .string "swl_slc_free_mini_ec_blk sblk %x\n" .LC107: - .string "slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n" + .string "gc_free_src_blk = %x, vpn = %d\n" .LC108: - .string "gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n" + .string "gc_free_src_blk %x, %d\n" .LC109: - .string "ftl prog error =%x, lpa = %x, ppa= %x\n" + .string "bad blk = %x, %x free blk: s:%x,t:%x,m:%x, data blk:s:%x,%x,t%x vpn: s:%x t:%x, max_vpn: %x\n" .LC110: - .string "alloc sblk %x %d\n" + .string "totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n" .LC111: - .string "dump_sblk_queue: %d\n" + .string "gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n" .LC112: - .string "buf id= %d state = %d ppa = %x\n" + .string "slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n" .LC113: - .string "blk %x is bad block\n" + .string "gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n" .LC114: - .string "pm_alloc_new_blk: %x %x %x %x\n" + .string "swl : %x %x %x %x\n" .LC115: - .string "%s %d %d\n" + .string "ftl prog error =%x, lpa = %x, ppa= %x\n" .LC116: - .string "gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" + .string "ftl re prog: lpa = %x, ppa= %x\n" .LC117: - .string "gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" + .string "alloc sblk %x %d\n" .LC118: - .string "gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" + .string "dump_sblk_queue: %d\n" .LC119: - .string "gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" + .string "buf id= %d state = %d ppa = %x\n" .LC120: - .string "gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" + .string "blk %x is bad block\n" .LC121: - .string "gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n" + .string "pm_alloc_new_blk: %x %x %x %x\n" .LC122: - .string "gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n" + .string "%s %d %d\n" .LC123: - .string "swl add tlc gc = %x, %d, %d, %d, %d, %d\n" + .string "gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" .LC124: - .string "swl add slc gc = %x, %d, %d, %d, %d, %d\n" + .string "gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" .LC125: - .string "free blk vpn error: %x %x\n" + .string "gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" .LC126: - .string "ftl_free_no_use_map_blk %x %x %x %d\n" + .string "gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" .LC127: - .string "...%d @ %s\n" + .string "gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" .LC128: - .string "rk_ftl_de_init %x\n" + .string "gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n" .LC129: - .string "%s %p:0x%x:" + .string "gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n" .LC130: - .string "%x " + .string "swl add tlc gc = %x, %d, %d, %d, %d, %d\n" .LC131: - .string "" + .string "swl add slc gc = %x, %d, %d, %d, %d, %d\n" .LC132: - .string "otp error! %d" + .string "free blk vpn error: %x %x\n" .LC133: - .string "rr" + .string "ftl_free_no_use_map_blk %x %x %x %d\n" .LC134: - .string "flash_abort_clear = %d\n" + .string "...%d @ %s\n" .LC135: - .string "%d mtrans_cnt = %d page_num = %d\n" + .string "rk_ftl_de_init %x\n" .LC136: - .string "nandc:" + .string "%s %p:0x%x:" .LC137: - .string "%d flReg.d32=%x %x\n" + .string "%x " .LC138: - .string "nandc_xfer_done read error %x\n" + .string "" .LC139: - .string "dqs data abort %x\n" + .string "otp error! %d" .LC140: - .string "dqs data timeout %x\n" + .string "rr" .LC141: - .string "xfer error %x\n" + .string "flash_abort_clear = %d\n" .LC142: - .string "flash_read_page %x %x %x\n" + .string "%d mtrans_cnt = %d page_num = %d\n" .LC143: - .string "micron %d row=%x,last status %d,status = %d\n" + .string "nandc:" .LC144: - .string "micron RR %d row=%x,count %d,status=%d\n" + .string "%d flReg.d32=%x %x\n" .LC145: - .string "toshiba SRR %d row=%x, status=%d\n" + .string "nandc_xfer_done read error %x\n" .LC146: - .string "toshiba TRR %d row=%x, status=%d\n" + .string "dqs data abort %x\n" .LC147: - .string "toshiba RR %d row=%x,count %d,status=%d\n" + .string "dqs data timeout %x\n" .LC148: - .string "hynix RR %d row=%x, count %d, status=%d\n" + .string "xfer error %x\n" .LC149: - .string "%d flash_ddr_tuning_read %x ecc=%d\n" + .string "flash_read_page %x %x %x\n" .LC150: - .string "sync para %d\n" + .string "micron %d row=%x,last status %d,status = %d\n" .LC151: - .string "DDR mode Read error %x %x\n" + .string "micron RR %d row=%x,count %d,status=%d\n" .LC152: - .string "SDR mode Read %x %x ecc:%x\n" + .string "toshiba SRR %d row=%x, status=%d\n" .LC153: - .string "flash_read_page_en %x %x %x\n" + .string "toshiba TRR %d row=%x, status=%d\n" .LC154: - .string "flash_read_page_en %x %x error_ecc %d %d\n" + .string "toshiba RR %d row=%x,count %d,status=%d\n" .LC155: - .string "flash_get_last_written_page: %x %x %x\n" + .string "hynix RR %d row=%x, count %d, status=%d\n" .LC156: - .string "...%d @ %s %d %p\n" + .string "%d flash_ddr_tuning_read %x ecc=%d\n" .LC157: - .string "no sys info %x\n" + .string "sync para %d\n" .LC158: - .string "read page: %x %x %x %x\n" + .string "DDR mode Read error %x %x\n" .LC159: - .string "flash_complete_page_read %x %x error_ecc %d %d\n" + .string "SDR mode Read %x %x ecc:%x\n" .LC160: - .string "read: %x %x %x %x\n" + .string "flash_read_page_en %x %x %x\n" .LC161: - .string "0set buf %d,status = %x, ppa = %x lun state = %d\n" + .string "flash_read_page_en %x %x error_ecc %d %d\n" .LC162: - .string "1set buf %d,status = %x, ppa = %x lun state = %d\n" + .string "flash_get_last_written_page: %x %x %x\n" .LC163: - .string "flash_prog_page %x %x %x\n" + .string "read page: %x %x %x %x\n" .LC164: - .string "flash_prog_page page_addr = %x status = %x\n" + .string "flash_complete_page_read %x %x error_ecc %d %d\n" .LC165: - .string "sblk_prog_page ppa = %x, count = %d\n" + .string "read: %x %x %x %x\n" .LC166: - .string "flash_prog_page_en:%x %x\n" + .string "0set buf %d,status = %x, ppa = %x lun state = %d\n" .LC167: - .string "w d:" + .string "prog end %x %x error_ecc %d %d\n" .LC168: - .string "w s:" + .string "1set buf %d,status = %x, ppa = %x lun state = %d\n" .LC169: - .string "spare" + .string "dp prog end %x %x error_ecc %d %d\n" .LC170: - .string "data" + .string "sblk_3d_tlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n" .LC171: - .string "write error: %x\n" + .string "sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n" .LC172: - .string "g_ftl_info_blk blk = %x, page = %x version = %d\n" + .string "sblk_prog_page ppa = %x, count = %d\n" .LC173: - .string "%d %x @%d %x\n" + .string "flash_prog_page %x %x %x\n" .LC174: - .string "ftl_info_blk_init %d %d %x\n" + .string "flash_prog_page page_addr = %x status = %x\n" .LC175: - .string "%s %d %d %x %x\n" + .string "flash_prog_page_en:%x %x %x\n" .LC176: - .string "saved_active_page = %x\n" + .string "w d:" .LC177: - .string "saved_active_plane = %x\n" + .string "w s:" .LC178: - .string "sblk = %x\n" + .string "spare" .LC179: - .string "phy_blk = %x %x\n" + .string "data" .LC180: - .string "sblk = %x, vpn0 = %d, vpn1 = %d\n" + .string "write error: %x\n" .LC181: - .string "dump write = %x\n" + .string "g_ftl_info_blk blk = %x, page = %x version = %d\n" .LC182: - .string "pm_write_page write error: %x\n" + .string "%d %x @%d %x\n" .LC183: - .string "finfo:" + .string "ftl_info_blk_init %d %d %x\n" .LC184: - .string "flash_info_flush id = %x, page = %x\n" + .string "ink flag: %x\n" .LC185: - .string "sys_info_flush error:%x\n" + .string "%s %d %d %x %x\n" .LC186: - .string "blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" + .string "saved_active_page = %x\n" .LC187: - .string "l2p:" + .string "saved_active_plane = %x\n" .LC188: - .string "free_buf_count: %d\n" + .string "sblk = %x\n" .LC189: - .string "g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n" + .string "phy_blk = %x %x\n" .LC190: - .string "ftl_ext_info_blk blk:0x%x, page:0x%x\n" + .string "sblk = %x, vpn0 = %d, vpn1 = %d\n" .LC191: - .string "ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" + .string "dump_write_lpa = %x %x %x %x\n" .LC192: - .string "tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" + .string "dump write new ppa = %x, last ppa = %x lpa = %x\n" .LC193: - .string "gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" + .string "dump write = %x %x\n" .LC194: - .string "lpa:" + .string "dump write hash update = %x %x %x\n" .LC195: - .string "vpn:" + .string "pm_write_page write error: %x\n" .LC196: - .string "sblk:" + .string "ftl_sblk_dump_write = %x %d %d %d %d\n" .LC197: - .string "lpa_hash:" + .string "blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" .LC198: - .string "lpa_hash_index:" + .string "ftl_sblk_dump_write2 = %x %d %d %d\n" .LC199: - .string "%s w error lpn = %x, max ppa = %d\n" + .string "ftl_sblk_dump_write = %x %x\n" .LC200: - .string "region_id = %d, pm_max_region = %d\n" + .string "ftl_sblk_dump_write done = %x\n" .LC201: - .string "load_l2p_region no ppa = %x , %x, all setting 0xff....\n" + .string "finfo:" .LC202: - .string "load_l2p_region = %x,%x,%x, %x\n" + .string "flash_info_flush id = %x, page = %x\n" .LC203: - .string "pm_ppa:" + .string "sys_info_flush error:%x\n" .LC204: - .string "data:" + .string "...%d @ %s %d %p\n" .LC205: - .string "spare:" + .string "no sys info %x\n" .LC206: - .string "pm_init posr %x %x %x\n" + .string "l2p:" .LC207: - .string "pm_init recovery %x %x %x\n" + .string "free_buf_count: %d\n" .LC208: - .string "pm_log2phys lpn = %d, max lpn = %d\n" + .string "g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n" .LC209: - .string "ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" + .string "ftl_ext_info_blk blk:0x%x, page:0x%x\n" .LC210: - .string "ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" + .string "ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" .LC211: - .string "gc_recovery: %x vpn = %x\n" + .string "tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" .LC212: - .string "_c_user_data_density := %d\n" + .string "gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" .LC213: - .string "_c_totle_phy_density := %d\n" + .string "lpa:" .LC214: - .string "_c_totle_log_page := %d\n" + .string "vpn:" .LC215: - .string "_c_totle_data_density := %d\n" + .string "sblk:" .LC216: - .string "_c_ftl_pm_page_num := %d\n" + .string "lpa_hash:" .LC217: - .string "_c_ftl_byte_pre_page := %d\n" + .string "lpa_hash_index:" .LC218: - .string "_c_max_pm_sblk := %d\n" + .string "%s w error lpn = %x, max ppa = %d\n" .LC219: - .string "_min_slc_super_block := %d\n" + .string "region_id = %d, pm_max_region = %d\n" .LC220: - .string "_max_xlc_super_block := %d\n" + .string "load_l2p_region no ppa = %x , %x, all setting 0xff....\n" .LC221: - .string "gp_ftl_ext_info %p %p %p\n" + .string "load_l2p_region = %x,%x,%x, %x\n" .LC222: - .string "flash info size: %d %d %d\n" + .string "pm_ppa:" .LC223: - .string "ftl_init %x\n" + .string "data:" .LC224: - .string "gc_update_l2p_map_new sblk %x\n" + .string "spare:" .LC225: - .string "gc_update_l2p_map_new: %x %x %x\n" + .string "pm_init posr %x %x %x\n" .LC226: - .string "lpa: %x %x %x\n" + .string "pm_init recovery %x %x %x\n" .LC227: - .string "gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n" + .string "pm_log2phys lpn = %d, max lpn = %d\n" .LC228: - .string "gc_scan_src_blk = %x, vpn = %d\n" + .string "ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" .LC229: - .string "gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n" + .string "ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" .LC230: - .string "gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n" + .string "gc_recovery: %x vpn = %x\n" .LC231: - .string "ftl_sblk_dump = %x %d %d %d %d\n" + .string "_c_user_data_density := %d\n" .LC232: - .string "ftl_sblk_dump = %x %x %x %x\n" + .string "_c_totle_phy_density := %d\n" .LC233: - .string "page_addr = %x, lpa=%x vpn = %d\n" + .string "_c_totle_log_page := %d\n" .LC234: - .string "index= %x, lpa=%x\n" + .string "_c_totle_data_density := %d\n" .LC235: - .string "block = %x, vpn=%x check vpn = %d\n" + .string "_c_ftl_pm_page_num := %d\n" .LC236: - .string "ftl_read %x %x %x\n" + .string "_c_ftl_byte_pre_page := %d\n" .LC237: - .string "ftl_read refresh =%x, lpa = %x, ppa= %x\n" + .string "_c_max_pm_sblk := %d\n" .LC238: - .string "id=%d, lpa = %x, ppa = %x spare = %x %x %x %x\n" + .string "_min_slc_super_block := %d\n" .LC239: - .string "zftl debug cmd: %s\n" + .string "_max_xlc_super_block := %d\n" .LC240: - .string "cmd:" + .string "gp_ftl_ext_info %p %p %p\n" .LC241: - .string "dumpl2p" + .string "flash info size: %d %d %d\n" .LC242: - .string "pm l2p:" + .string "ftl_init %x\n" .LC243: - .string "pm blk:" + .string "gc_update_l2p_map_new sblk %x\n" .LC244: - .string "dumppm:" + .string "gc_update_l2p_map_new: %x %x %x\n" .LC245: - .string "p_cmd: %s\n" + .string "lpa: %x %x %x\n" .LC246: - .string "pm ram = %x, %x\n" + .string "gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n" .LC247: - .string "ram:" + .string "gc_scan_src_blk = %x, vpn = %d\n" .LC248: - .string "pm:" + .string "gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n" .LC249: - .string "dumpsys" + .string "gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n" .LC250: - .string "dumplist:" + .string "ftl_sblk_dump = %x %d %d %d %d\n" .LC251: - .string "vpncheck" + .string "ftl_sblk_dump = %x %x %x %x\n" .LC252: - .string "dumpppa:" + .string "page_addr = %x, lpa=%x vpn = %d\n" .LC253: - .string "dumpblk:" + .string "index= %x, lpa=%x\n" .LC254: - .string "setzdebug:" + .string "block = %x, vpn=%x check vpn = %d\n" .LC255: - .string "lpa2ppa:" + .string "ftl_read %x %x %x\n" .LC256: - .string "lpa: %x--> ppa: %x\n" + .string "ftl_read refresh =%x, lpa = %x, ppa= %x\n" .LC257: - .string "help:\n" + .string "id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n" .LC258: - .string "1. echo dumpl2p > /proc/zftl_debug\n" + .string "zftl debug cmd: %s\n" .LC259: - .string "2. echo dumppm:x > /proc/zftl_debug\n" + .string "cmd:" .LC260: - .string "3. echo dumpsys > /proc/zftl_debug\n" + .string "dumpl2p" .LC261: - .string "4. echo dumpppa:x > /proc/zftl_debug\n" + .string "pm l2p:" .LC262: - .string "5. echo vpncheck > /proc/zftl_debug\n" + .string "pm blk:" .LC263: - .string "6. echo setzdebug:x > /proc/zftl_debug\n" + .string "dumppm:" .LC264: - .string "7. echo dumplist > /proc/zftl_debug\n" + .string "p_cmd: %s\n" .LC265: - .string "8. echo lpa2ppa:x> /proc/zftl_debug\n" + .string "pm ram = %x, %x\n" .LC266: - .string "gc_lpa:" + .string "ram:" .LC267: - .string "gc_ppa:" + .string "pm:" .LC268: - .string "err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" + .string "dumpsys" .LC269: - .string "ftl_update_l2p_map: %x %x %x\n" + .string "dumplist:" .LC270: - .string "ftl_update_l2p_map" + .string "vpncheck" .LC271: - .string "lpa_tbl:" + .string "dumpppa:" .LC272: - .string "sblk %x vpn: %d %d\n" + .string "dumpblk:" .LC273: - .string "%d read error: ppa:%x, lpa:%x, status:%x\n" + .string "setzdebug:" .LC274: - .string "gc page in buf: lpa %x ppa = %x pageindex= %x\n" + .string "lpa2ppa:" .LC275: - .string "gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n" + .string "lpa: %x--> ppa: %x\n" .LC276: - .string "gc_do_copy_back: %x %x %x %x gc_ppa:%x %x\n" + .string "help:\n" .LC277: - .string "%d prog_step: %x %x buf id= %x ppa = %x hash=%x id = %x plane = %x lpa=%x\n" + .string "1. echo dumpl2p > /proc/zftl_debug\n" .LC278: - .string "gc %d: %d %d %d %d %d %d %d\n" + .string "2. echo dumppm:x > /proc/zftl_debug\n" .LC279: - .string "gc %d: %d %d %d %d %d %d\n" + .string "3. echo dumpsys > /proc/zftl_debug\n" .LC280: - .string "GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n" + .string "4. echo dumpppa:x > /proc/zftl_debug\n" .LC281: - .string "gc free %x, %d\n" + .string "5. echo vpncheck > /proc/zftl_debug\n" .LC282: - .string "ftlwrite %x %x %x\n" + .string "6. echo setzdebug:x > /proc/zftl_debug\n" .LC283: - .string "ftl_discard:(%x, %x, %x, %x)\n" + .string "7. echo dumplist > /proc/zftl_debug\n" .LC284: - .string "id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n" + .string "8. echo lpa2ppa:x> /proc/zftl_debug\n" .LC285: - .string "write_idblock fix data %x %x\n" + .string "gc_lpa:" .LC286: - .string "idblk:" + .string "gc_ppa:" .LC287: - .string "write_idblock totle_sec %x %x\n" + .string "err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" .LC288: - .string "READ_SECTOR_IO\n" + .string "ftl_update_l2p_map: %x %x %x\n" .LC289: - .string "rk_copy_from_user error\n" + .string "ftl_update_l2p_map" .LC290: - .string "READ_SECTOR_IO %x %x\n" + .string "lpa_tbl:" .LC291: - .string "rk_copy_to_user error\n" + .string "sblk %x vpn: %d %d\n" .LC292: - .string "WRITE_SECTOR_IO\n" + .string "error gc_add_sblk: %x\n" .LC293: - .string "WRITE_SECTOR_IO %x %x\n" + .string "%d read error: ppa:%x, lpa:%x, status:%x\n" .LC294: - .string "END_WRITE_SECTOR_IO\n" + .string "gc page in buf: lpa %x ppa = %x pageindex= %x\n" .LC295: - .string "END_WRITE_SECTOR_IO %x %x\n" + .string "gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n" .LC296: - .string "GET_FLASH_INFO_IO\n" + .string "gc_do_copy_back: %x %x %x %x gc_ppa:%x %x\n" .LC297: - .string "GET_BAD_BLOCK_IO\n" + .string "%d prog_step: %x %x buf id= %x ppa = %x hash=%x id = %x plane = %x lpa=%x\n" .LC298: - .string "GET_LOCK_FLAG_IO\n" + .string "gc %d: %d %d %d %d %d %d %d\n" .LC299: - .string "GET_PUBLIC_KEY_IO\n" + .string "gc %d: %d %d %d %d %d %d\n" .LC300: - .string "RKNAND_GET_DRM_KEY\n" + .string "GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n" .LC301: - .string "RKNAND_STORE_DRM_KEY\n" + .string "gc free %x, %d\n" .LC302: - .string "RKNAND_DIASBLE_SECURE_BOOT\n" + .string "ftlwrite %x %x %x %x\n" .LC303: - .string "RKNAND_ENASBLE_SECURE_BOOT\n" + .string "ftl_discard:(%x, %x, %x, %x)\n" .LC304: - .string "RKNAND_GET_SN_SECTOR\n" + .string "id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n" .LC305: - .string "RKNAND_LOADER_UNLOCK\n" + .string "write_idblock fix data %x %x\n" .LC306: - .string "RKNAND_LOADER_STATUS\n" + .string "idblk:" .LC307: - .string "RKNAND_LOADER_LOCK\n" + .string "write_idblock totle_sec %x %x\n" .LC308: - .string "LockKey not match %d\n" + .string "prog page: %x %x %x, %p %x %x %x\n" .LC309: - .string "RKNAND_GET_VENDOR_SECTOR\n" + .string "wl_lba %p %x %x %x\n" .LC310: - .string "RKNAND_STORE_VENDOR_SECTOR\n" + .string "READ_SECTOR_IO\n" .LC311: - .string "return ret = %lx\n" + .string "rk_copy_from_user error\n" .LC312: - .string "secureBootEn check error\n" + .string "READ_SECTOR_IO %x %x\n" .LC313: + .string "rk_copy_to_user error\n" +.LC314: + .string "WRITE_SECTOR_IO\n" +.LC315: + .string "WRITE_SECTOR_IO %x %x\n" +.LC316: + .string "END_WRITE_SECTOR_IO\n" +.LC317: + .string "END_WRITE_SECTOR_IO %x %x\n" +.LC318: + .string "GET_FLASH_INFO_IO\n" +.LC319: + .string "GET_BAD_BLOCK_IO\n" +.LC320: + .string "GET_LOCK_FLAG_IO\n" +.LC321: + .string "GET_PUBLIC_KEY_IO\n" +.LC322: + .string "RKNAND_GET_DRM_KEY\n" +.LC323: + .string "RKNAND_STORE_DRM_KEY\n" +.LC324: + .string "RKNAND_DIASBLE_SECURE_BOOT\n" +.LC325: + .string "RKNAND_ENASBLE_SECURE_BOOT\n" +.LC326: + .string "RKNAND_GET_SN_SECTOR\n" +.LC327: + .string "RKNAND_LOADER_UNLOCK\n" +.LC328: + .string "RKNAND_LOADER_STATUS\n" +.LC329: + .string "RKNAND_LOADER_LOCK\n" +.LC330: + .string "LockKey not match %d\n" +.LC331: + .string "RKNAND_GET_VENDOR_SECTOR\n" +.LC332: + .string "RKNAND_STORE_VENDOR_SECTOR\n" +.LC333: + .string "return ret = %lx\n" +.LC334: + .string "secureBootEn check error\n" +.LC335: .string "\0013vendor storage %x,%x,%x\n" .data .align 3 @@ -26620,7 +28175,7 @@ hy_f26_ref_value: .byte -37 .zero 4 .type zftl_nand_flash_para_tbl, %object - .size zftl_nand_flash_para_tbl, 1152 + .size zftl_nand_flash_para_tbl, 1216 zftl_nand_flash_para_tbl: .byte 6 .byte -104 @@ -27178,7 +28733,7 @@ zftl_nand_flash_para_tbl: .byte 1 .byte 0 .hword 512 - .byte 3 + .byte 0 .byte 0 .byte 0 .byte 0 @@ -27339,7 +28894,7 @@ zftl_nand_flash_para_tbl: .hword 9671 .byte 5 .byte 19 - .byte 60 + .byte 70 .byte 32 .byte 1 .byte 0 @@ -27367,7 +28922,7 @@ zftl_nand_flash_para_tbl: .hword 9671 .byte 5 .byte 19 - .byte 60 + .byte 70 .byte 32 .byte 1 .byte 0 @@ -27407,6 +28962,34 @@ zftl_nand_flash_para_tbl: .byte -33 .byte 0 .byte 6 + .byte -101 + .byte 73 + .byte 1 + .byte 0 + .byte -101 + .byte 73 + .byte 9 + .byte 1 + .byte 32 + .hword 256 + .byte 2 + .byte 1 + .hword 2144 + .hword -23097 + .byte 8 + .byte 21 + .byte 70 + .byte 32 + .byte 1 + .byte 0 + .byte 8 + .byte 0 + .hword 256 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 6 .byte -83 .byte -34 .byte 20 @@ -27574,6 +29157,34 @@ zftl_nand_flash_para_tbl: .byte 0 .byte 0 .byte 0 + .byte 6 + .byte -83 + .byte 58 + .byte 20 + .byte 3 + .byte 8 + .byte 80 + .byte 2 + .byte 1 + .byte 32 + .hword 388 + .byte 2 + .byte 2 + .hword 1362 + .hword 473 + .byte 9 + .byte 8 + .byte 40 + .byte 32 + .byte 3 + .byte 1 + .byte 4 + .byte 0 + .hword 512 + .byte 2 + .byte -65 + .byte -66 + .byte 0 .byte 5 .byte -119 .byte 100 @@ -27589,7 +29200,7 @@ zftl_nand_flash_para_tbl: .byte 1 .hword 1024 .hword 455 - .byte 3 + .byte 4 .byte 17 .byte 40 .byte 32 @@ -27617,7 +29228,7 @@ zftl_nand_flash_para_tbl: .byte 2 .hword 1024 .hword 455 - .byte 3 + .byte 4 .byte 17 .byte 40 .byte 32 @@ -28466,7 +30077,11 @@ g_idb_ecc_bits: .size g_nand_max_die, 1 g_nand_max_die: .zero 1 - .zero 6 + .type g_idb_slc_mode_enable, %object + .size g_idb_slc_mode_enable, 1 +g_idb_slc_mode_enable: + .zero 1 + .zero 5 .type g_nand_opt_para, %object .size g_nand_opt_para, 32 g_nand_opt_para: @@ -28627,9 +30242,9 @@ write_buf_head: .zero 1 .zero 7 .type g_gc_info, %object - .size g_gc_info, 328 + .size g_gc_info, 344 g_gc_info: - .zero 328 + .zero 344 .type ftl_sblk_vpn_update_id, %object .size ftl_sblk_vpn_update_id, 2 ftl_sblk_vpn_update_id: @@ -28639,6 +30254,15 @@ ftl_sblk_vpn_update_id: .size ftl_sblk_update_list, 16 ftl_sblk_update_list: .zero 16 + .type _c_ftl_block_addr_log2, %object + .size _c_ftl_block_addr_log2, 2 +_c_ftl_block_addr_log2: + .zero 2 + .type _c_ftl_planes_per_die, %object + .size _c_ftl_planes_per_die, 1 +_c_ftl_planes_per_die: + .zero 1 + .zero 5 .type gc_valid_page_ppa, %object .size gc_valid_page_ppa, 8 gc_valid_page_ppa: @@ -28651,7 +30275,15 @@ sblk_gc_write_completed_queue_head: .size _c_ftl_nand_type, 1 _c_ftl_nand_type: .zero 1 - .zero 6 + .type g_flash_3d_mlc_flag, %object + .size g_flash_3d_mlc_flag, 1 +g_flash_3d_mlc_flag: + .zero 1 + .type g_one_pass_program, %object + .size g_one_pass_program, 1 +g_one_pass_program: + .zero 1 + .zero 4 .type gc_page_buf_id, %object .size gc_page_buf_id, 8 gc_page_buf_id: @@ -28726,32 +30358,6 @@ gp_free_mix_head: .size zftl_print_list_count, 2 zftl_print_list_count: .zero 2 - .type _c_ftl_planes_per_die, %object - .size _c_ftl_planes_per_die, 1 -_c_ftl_planes_per_die: - .zero 1 - .zero 1 - .type _c_ftl_block_addr_log2, %object - .size _c_ftl_block_addr_log2, 2 -_c_ftl_block_addr_log2: - .zero 2 - .type _c_mix_max_xlc_ec_count, %object - .size _c_mix_max_xlc_ec_count, 2 -_c_mix_max_xlc_ec_count: - .zero 2 - .type _max_slc_super_block, %object - .size _max_slc_super_block, 2 -_max_slc_super_block: - .zero 2 - .type _c_mix_max_slc_ec_count, %object - .size _c_mix_max_slc_ec_count, 2 -_c_mix_max_slc_ec_count: - .zero 2 - .type g_flash_3d_mlc_flag, %object - .size g_flash_3d_mlc_flag, 1 -g_flash_3d_mlc_flag: - .zero 1 - .zero 1 .type _c_ftl_block_align_addr, %object .size _c_ftl_block_align_addr, 2 _c_ftl_block_align_addr: @@ -28760,7 +30366,7 @@ _c_ftl_block_align_addr: .size _c_ftl_nand_die_num, 1 _c_ftl_nand_die_num: .zero 1 - .zero 7 + .zero 3 .type lpa_hash, %object .size lpa_hash, 512 lpa_hash: @@ -28780,6 +30386,18 @@ ftl_vpn_update_count: .type ftl_sblk_update_list_offset, %object .size ftl_sblk_update_list_offset, 2 ftl_sblk_update_list_offset: + .zero 2 + .type _c_mix_max_xlc_ec_count, %object + .size _c_mix_max_xlc_ec_count, 2 +_c_mix_max_xlc_ec_count: + .zero 2 + .type _max_slc_super_block, %object + .size _max_slc_super_block, 2 +_max_slc_super_block: + .zero 2 + .type _c_mix_max_slc_ec_count, %object + .size _c_mix_max_slc_ec_count, 2 +_c_mix_max_slc_ec_count: .zero 2 .type sblk_write_completed_queue_head, %object .size sblk_write_completed_queue_head, 1 @@ -28797,6 +30415,7 @@ read_buf_count: .size sblk_read_completed_queue_head, 1 sblk_read_completed_queue_head: .zero 1 + .zero 2 .type pm_gc_enable, %object .size pm_gc_enable, 4 pm_gc_enable: @@ -28900,15 +30519,6 @@ flash_ddr_tuning_sdr_read_count: .size flash_read_retry, 8 flash_read_retry: .zero 8 - .type g_flash_sys_spare_buffer, %object - .size g_flash_sys_spare_buffer, 8 -g_flash_sys_spare_buffer: - .zero 8 - .type g_flash_blk_info, %object - .size g_flash_blk_info, 4 -g_flash_blk_info: - .zero 4 - .zero 4 .type g_flash_page_buffer, %object .size g_flash_page_buffer, 8 g_flash_page_buffer: @@ -28917,10 +30527,6 @@ g_flash_page_buffer: .size g_flash_spare_buffer, 8 g_flash_spare_buffer: .zero 8 - .type g_idb_slc_mode_enable, %object - .size g_idb_slc_mode_enable, 1 -g_idb_slc_mode_enable: - .zero 1 .type g_flash_multi_page_read_en, %object .size g_flash_multi_page_read_en, 1 g_flash_multi_page_read_en: @@ -28929,7 +30535,7 @@ g_flash_multi_page_read_en: .size write_commit_head, 1 write_commit_head: .zero 1 - .zero 1 + .zero 2 .type ftl_flush_jiffies, %object .size ftl_flush_jiffies, 4 ftl_flush_jiffies: @@ -28977,9 +30583,19 @@ g_pm_spare: .size pm_first_write, 1 pm_first_write: .zero 1 + .zero 7 + .type g_flash_sys_spare_buffer, %object + .size g_flash_sys_spare_buffer, 8 +g_flash_sys_spare_buffer: + .zero 8 + .type g_flash_blk_info, %object + .size g_flash_blk_info, 4 +g_flash_blk_info: + .zero 4 .type g_flash_reversd_blks, %object .size g_flash_reversd_blks, 1 g_flash_reversd_blks: + .zero 1 .zero 1 .type _c_ftl_byte_pre_page, %object .size _c_ftl_byte_pre_page, 2 @@ -29006,7 +30622,7 @@ _c_ftl_pm_page_num: .size rk_zftl_enable, 1 rk_zftl_enable: .zero 1 - .zero 5 + .zero 1 .type gLoaderBootInfo, %object .size gLoaderBootInfo, 8 gLoaderBootInfo: @@ -29086,7 +30702,7 @@ g_vendor: .size ftl_low_format_cur_blk, 2 ftl_low_format_cur_blk: .zero 2 - .zero 46 + .zero 30 .type ftl_tmp_buffer, %object .size ftl_tmp_buffer, 16384 ftl_tmp_buffer: