diff --git a/drivers/rk_nand/rk_ftl_arm_v8.S b/drivers/rk_nand/rk_ftl_arm_v8.S index efe4ddffb715..68b05318eebe 100644 --- a/drivers/rk_nand/rk_ftl_arm_v8.S +++ b/drivers/rk_nand/rk_ftl_arm_v8.S @@ -5,92 +5,88 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * date: 2020-09-23 + * date: 2021-06-16 */ - .cpu generic+fp+simd .file "rk_ftl_arm_v8.S" .text .align 2 - .type ftl_set_blk_mode.part.9, %function -ftl_set_blk_mode.part.9: - adrp x1, .LANCHOR0 - uxth w0, w0 - ubfx x2, x0, 5, 11 - lsl x2, x2, 2 - ldr x3, [x1,#:lo12:.LANCHOR0] - mov w1, 1 - lsl w0, w1, w0 - ldr w1, [x3,x2] - orr w0, w1, w0 - str w0, [x3,x2] - 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 + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + add x2, x1, x0 add x29, sp, 0 - add x1, x2, x0 - str x19, [sp,16] - ldrb w1, [x1,8] - ldr x19, [x2,x0] + str x19, [sp, 16] + ldr x0, [x1, x0] + ldrb w19, [x2, 8] + add x19, x0, x19, lsl 8 mov w0, 122 - add x19, x19, x1, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w1, [x19,2048] - ldr w0, [x19,2048] + 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 + csel w1, w1, w0, cs + ldr w0, [x19, 2048] + ldr w2, [x19, 2048] + and w0, w0, 15 + ldr x19, [sp, 16] + and w2, w2, 15 + cmp w0, w2 + csel w0, w0, w2, cs + cmp w0, w1 + csel w0, w0, w1, cs ldp x29, x30, [sp], 32 ret .size flash_read_ecc, .-flash_read_ecc .align 2 + .type ftl_set_blk_mode.part.9, %function +ftl_set_blk_mode.part.9: + and w0, w0, 65535 + adrp x2, .LANCHOR0+64 + ubfx x1, x0, 5, 11 + ldr x3, [x2, #:lo12:.LANCHOR0+64] + lsl x1, x1, 2 + mov w2, 1 + lsl w2, w2, w0 + ldr w0, [x3, x1] + orr w0, w0, w2 + str w0, [x3, x1] + ret + .size ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9 + .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: - mov x5, x0 - adrp x0, .LANCHOR0+72 - ldrb w0, [x0,#:lo12:.LANCHOR0+72] - cbz w0, .L8 - ldrb w4, [x5,1] - mov w0, 0 - ldrb w3, [x1,1] + adrp x3, .LANCHOR0+72 + ldrb w3, [x3, #:lo12:.LANCHOR0+72] + cbz w3, .L9 + ldrb w4, [x0, 1] + ldrb w3, [x1, 1] cmp w4, w3 - beq .L5 -.L8: + beq .L10 +.L9: mov x3, 0 -.L6: - cmp w3, w2 +.L7: mov w4, w3 - bcs .L12 - ldrb w0, [x5,x3] + cmp w3, w2 + bcc .L8 +.L10: + mov w0, 0 + ret +.L8: + ldrb w5, [x0, x3] add x3, x3, 1 add x6, x1, x3 - ldrb w6, [x6,-1] - cmp w6, w0 - beq .L6 + ldrb w6, [x6, -1] + cmp w6, w5 + beq .L7 add w0, w4, 1 - b .L5 -.L12: - mov w0, 0 -.L5: ret .size FlashMemCmp8, .-FlashMemCmp8 .align 2 @@ -98,138 +94,139 @@ FlashMemCmp8: .type FlashRsvdBlkChk, %function FlashRsvdBlkChk: adrp x2, .LANCHOR0 - uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrb w3, [x2,73] - ldr w2, [x2,76] + and w0, w0, 255 + ldrb w3, [x2, 73] + ldr w2, [x2, 76] mul w2, w3, w2 - cmp w1, w2 - cset w1, cc - cmp w0, wzr - cset w0, eq - and w0, w1, w0 - eor w0, w0, 1 + cmp w2, w1 + bls .L14 + cmp w0, 0 + cset w0, ne + ret +.L14: + mov w0, 1 ret .size FlashRsvdBlkChk, .-FlashRsvdBlkChk .align 2 .global FlashGetRandomizer .type FlashGetRandomizer, %function FlashGetRandomizer: - stp x29, x30, [sp, -32]! + and x3, x1, 127 adrp x2, .LANCHOR1 - and w3, w1, 127 add x2, x2, :lo12:.LANCHOR1 - add x29, sp, 0 - uxtb w0, w0 - str x19, [sp,16] - ldrh w19, [x2,w3,uxtw 1] + ldrh w4, [x2, x3, lsl 1] adrp x2, .LANCHOR0+80 - ldrb w2, [x2,#:lo12:.LANCHOR0+80] - cbz w2, .L15 + ldrb w2, [x2, #:lo12:.LANCHOR0+80] + cbz w2, .L23 + stp x29, x30, [sp, -16]! + and w0, w0, 255 + add x29, sp, 0 bl FlashRsvdBlkChk - cmp w0, wzr - orr w1, w19, -1073741824 - csel w19, w1, w19, ne -.L15: - mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + cmp w0, 0 + orr w1, w4, -1073741824 + csel w4, w1, w4, ne + mov w0, w4 + ldp x29, x30, [sp], 16 + ret +.L23: + mov w0, w4 ret .size FlashGetRandomizer, .-FlashGetRandomizer .align 2 .global FlashSetRandomizer .type FlashSetRandomizer, %function FlashSetRandomizer: - stp x29, x30, [sp, -48]! - and w2, w1, 127 - add x29, sp, 0 - str x21, [sp,32] - uxtb w21, w0 + and x2, x1, 127 + and w6, w0, 255 adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - stp x19, x20, [sp,16] - ldrh w20, [x0,w2,uxtw 1] - adrp x2, .LANCHOR0 - add x0, x2, :lo12:.LANCHOR0 - mov x19, x2 - ldrb w0, [x0,80] - cbz w0, .L22 - mov w0, w21 + ldrh w5, [x0, x2, lsl 1] + adrp x0, .LANCHOR0 + add x2, x0, :lo12:.LANCHOR0 + mov x4, x0 + ldrb w2, [x2, 80] + cbz w2, .L34 + stp x29, x30, [sp, -16]! + mov w0, w6 + add x29, sp, 0 bl FlashRsvdBlkChk - cmp w0, wzr - orr w1, w20, -1073741824 - csel w20, w1, w20, ne -.L22: - add x2, x19, :lo12:.LANCHOR0 - add x2, x2, w21, sxtw 4 - ldr x0, [x2,8] - str w20, [x0,336] - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 + cmp w0, 0 + sbfiz x6, x6, 4, 32 + add x0, x4, :lo12:.LANCHOR0 + orr w1, w5, -1073741824 + csel w5, w1, w5, ne + ldr x0, [x0, x6] + str w5, [x0, 336] + ldp x29, x30, [sp], 16 + ret +.L34: + add x0, x0, :lo12:.LANCHOR0 + sbfiz x6, x6, 4, 32 + ldr x0, [x0, x6] + str w5, [x0, 336] ret .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 .global FlashBlockAlignInit .type FlashBlockAlignInit, %function FlashBlockAlignInit: - uxth w0, w0 + and w0, w0, 65535 adrp x1, .LANCHOR0 cmp w0, 512 add x1, x1, :lo12:.LANCHOR0 - bls .L29 + bls .L38 mov w0, 1024 - b .L33 -.L29: - cmp w0, 256 - bls .L31 - mov w0, 512 - b .L33 -.L31: - cmp w0, 128 - bls .L33 - mov w0, 256 -.L33: - str w0, [x1,76] +.L42: + str w0, [x1, 76] ret +.L38: + cmp w0, 256 + bls .L40 + mov w0, 512 + b .L42 +.L40: + cmp w0, 128 + bls .L42 + mov w0, 256 + b .L42 .size FlashBlockAlignInit, .-FlashBlockAlignInit .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: - adrp x4, .LANCHOR0 - uxtb w0, w0 - add x4, x4, :lo12:.LANCHOR0 + and w0, w0, 255 + adrp x3, .LANCHOR0 sbfiz x2, x0, 4, 32 + add x3, x3, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! - add x3, x4, 8 + add x4, x3, x2 add x29, sp, 0 - ldr x4, [x4,88] - add x5, x3, x2 - ldr x2, [x3,x2] - ldrb w4, [x4,7] - ldrb w3, [x5,8] - cmp w4, 1 - bne .L35 - sxtw x4, w3 + ldr x2, [x3, x2] + ldr x3, [x3, 88] + ldrb w4, [x4, 8] + ldrb w3, [x3, 7] + cmp w3, 1 + bne .L44 + sxtw x3, w4 mov w5, 38 - add x4, x4, 8 - add x4, x2, x4, lsl 8 - str w5, [x4,8] -.L35: - ubfiz x3, x3, 8, 8 - add x2, x2, x3 + add x3, x3, 8 + add x3, x2, x3, lsl 8 + str w5, [x3, 8] +.L44: + ubfiz x4, x4, 8, 8 and w3, w1, 255 - str wzr, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w3, [x2,2052] + add x2, x2, x4 + str wzr, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w3, [x2, 2052] lsr w3, w1, 8 - str w3, [x2,2052] + str w3, [x2, 2052] lsr w3, w1, 16 - str w3, [x2,2052] + str w3, [x2, 2052] mov w3, 48 - str w3, [x2,2056] + str w3, [x2, 2056] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -238,74 +235,72 @@ FlashReadCmd: .global FlashReadDpDataOutCmd .type FlashReadDpDataOutCmd, %function FlashReadDpDataOutCmd: + and w0, w0, 255 adrp x3, .LANCHOR0 - uxtb w0, w0 - add x3, x3, :lo12:.LANCHOR0 sbfiz x2, x0, 4, 32 - add x4, x3, 8 + add x3, x3, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! - add x5, x4, x2 + add x4, x3, x2 + and w5, w1, 255 add x29, sp, 0 - ldr x6, [x4,x2] - lsr w4, w1, 8 - ldrb w2, [x3,112] + ldr x6, [x3, x2] + ldrb w2, [x3, 112] lsr w3, w1, 16 cmp w2, 1 - ldrb w2, [x5,8] - and w5, w1, 255 + ldrb w2, [x4, 8] + lsr w4, w1, 8 add x2, x6, x2, lsl 8 - bne .L37 + bne .L47 mov w6, 6 - str w6, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w5, [x2,2052] - str w4, [x2,2052] - str w3, [x2,2052] - b .L39 -.L37: - str wzr, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w5, [x2,2052] - str w4, [x2,2052] - str w3, [x2,2052] - mov w3, 5 - str w3, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] -.L39: + str w6, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w5, [x2, 2052] + str w4, [x2, 2052] + str w3, [x2, 2052] +.L50: mov w3, 224 - str w3, [x2,2056] + str w3, [x2, 2056] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret +.L47: + str wzr, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w5, [x2, 2052] + str w4, [x2, 2052] + str w3, [x2, 2052] + mov w3, 5 + str w3, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + b .L50 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: - adrp x3, .LANCHOR0 - uxtb w0, w0 - add x3, x3, :lo12:.LANCHOR0 + and w0, w0, 255 + adrp x4, .LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 8 - lsr w4, w1, 16 - add x2, x3, x5 + add x4, x4, :lo12:.LANCHOR0 + add x2, x4, x5 stp x29, x30, [sp, -16]! + lsr w3, w1, 16 add x29, sp, 0 - ldrb w2, [x2,8] - ldr x3, [x3,x5] - add x2, x3, x2, lsl 8 - mov w3, 128 - str w3, [x2,2056] - and w3, w1, 255 - str wzr, [x2,2052] - str wzr, [x2,2052] - str w3, [x2,2052] - lsr w3, w1, 8 - str w3, [x2,2052] - str w4, [x2,2052] + ldr x4, [x4, x5] + ldrb w2, [x2, 8] + add x2, x4, x2, lsl 8 + mov w4, 128 + str w4, [x2, 2056] + and w4, w1, 255 + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w4, [x2, 2052] + lsr w4, w1, 8 + str w4, [x2, 2052] + str w3, [x2, 2052] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -314,64 +309,62 @@ FlashProgFirstCmd: .global FlashEraseCmd .type FlashEraseCmd, %function FlashEraseCmd: - adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 - add x4, x3, 8 - add x5, x4, x0 - ldr x4, [x4,x0] - ldrb w0, [x5,8] - cbz w2, .L42 + add x5, x3, x0 + ldr x4, [x3, x0] + ldrb w0, [x5, 8] + cbz w2, .L54 add x2, x4, x0, lsl 8 mov w5, 96 - str w5, [x2,2056] + str w5, [x2, 2056] and w5, w1, 255 - str w5, [x2,2052] + str w5, [x2, 2052] lsr w5, w1, 8 - str w5, [x2,2052] + str w5, [x2, 2052] lsr w5, w1, 16 - str w5, [x2,2052] - ldr w2, [x3,76] + str w5, [x2, 2052] + ldr w2, [x3, 76] add w1, w1, w2 -.L42: +.L54: add x0, x4, x0, lsl 8 mov w2, 96 - str w2, [x0,2056] + str w2, [x0, 2056] and w2, w1, 255 - str w2, [x0,2052] + str w2, [x0, 2052] lsr w2, w1, 8 - str w2, [x0,2052] + str w2, [x0, 2052] lsr w1, w1, 16 - str w1, [x0,2052] + str w1, [x0, 2052] mov w1, 208 - str w1, [x0,2056] + str w1, [x0, 2056] ret .size FlashEraseCmd, .-FlashEraseCmd .align 2 .global FlashProgDpSecondCmd .type FlashProgDpSecondCmd, %function FlashProgDpSecondCmd: - adrp x2, .LANCHOR0 - uxtb w0, w0 - add x2, x2, :lo12:.LANCHOR0 - sbfiz x4, x0, 4, 32 - add x5, x2, 8 - lsr w3, w1, 16 - add x7, x5, x4 + and w0, w0, 255 + adrp x4, .LANCHOR0 + sbfiz x5, x0, 4, 32 + add x4, x4, :lo12:.LANCHOR0 + add x2, x4, x5 stp x29, x30, [sp, -16]! + lsr w3, w1, 16 add x29, sp, 0 - ldrb w6, [x2,107] - ldrb w2, [x7,8] - ldr x4, [x5,x4] + ldrb w6, [x4, 107] + ldrb w2, [x2, 8] + ldr x4, [x4, x5] add x2, x4, x2, lsl 8 and w4, w1, 255 - str w6, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w4, [x2,2052] + str w6, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w4, [x2, 2052] lsr w4, w1, 8 - str w4, [x2,2052] - str w3, [x2,2052] + str w4, [x2, 2052] + str w3, [x2, 2052] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -380,24 +373,23 @@ FlashProgDpSecondCmd: .global FlashProgSecondCmd .type FlashProgSecondCmd, %function FlashProgSecondCmd: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 stp x29, x30, [sp, -32]! + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 8 add x29, sp, 0 add x2, x1, x0 - stp x19, x20, [sp,16] - ldrb w19, [x2,8] - ldr x20, [x1,x0] + stp x19, x20, [sp, 16] + ldr x20, [x1, x0] mov x0, 36284 - add x19, x19, 8 + ldrb w19, [x2, 8] movk x0, 0x6, lsl 16 - add x19, x20, x19, lsl 8 bl __const_udelay + add x19, x19, 8 mov w0, 16 - str w0, [x19,8] - ldp x19, x20, [sp,16] + add x19, x20, x19, lsl 8 + str w0, [x19, 8] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashProgSecondCmd, .-FlashProgSecondCmd @@ -405,40 +397,38 @@ FlashProgSecondCmd: .global FlashProgDpFirstCmd .type FlashProgDpFirstCmd, %function FlashProgDpFirstCmd: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x2, x1, 8 - add x3, x2, x0 - ldrb w1, [x1,106] - ldr x2, [x2,x0] - ldrb w0, [x3,8] + add x3, x1, x0 + ldr x2, [x1, x0] + ldrb w0, [x3, 8] + ldrb w1, [x1, 106] add x0, x0, 8 add x0, x2, x0, lsl 8 - str w1, [x0,8] + str w1, [x0, 8] ret .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 .global FlashReadStatus .type FlashReadStatus, %function FlashReadStatus: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 stp x29, x30, [sp, -32]! + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 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] + str x19, [sp, 16] + ldr x0, [x1, x0] + ldrb w19, [x2, 8] + add x19, x0, x19, lsl 8 mov w0, 112 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w0, [x19,2048] - ldr x19, [sp,16] + ldr w0, [x19, 2048] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashReadStatus, .-FlashReadStatus @@ -446,22 +436,22 @@ FlashReadStatus: .global js_hash .type js_hash, %function js_hash: - mov x5, x0 + mov x4, x0 mov w0, 42982 - mov x2, 0 + mov x3, 0 movk w0, 0x47c6, lsl 16 -.L51: - cmp w1, w2 - bls .L53 - 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 .L51 -.L53: +.L66: + cmp w1, w3 + bhi .L67 ret +.L67: + lsr w2, w0, 2 + ldrb w5, [x4, x3] + add w2, w2, w0, lsl 5 + add x3, x3, 1 + add w2, w2, w5 + eor w0, w0, w2 + b .L66 .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo @@ -480,105 +470,104 @@ FlashPrintInfo: .global ToshibaSetRRPara .type ToshibaSetRRPara, %function ToshibaSetRRPara: - uxtb w1, w1 - mov w3, 5 + stp x29, x30, [sp, -80]! + and w1, w1, 255 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, w1, 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 + stp x21, x22, [sp, 32] + mov x21, x0 + mov w0, 5 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + adrp x22, .LANCHOR0 + umull x2, w2, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + stp x19, x20, [sp, 16] + add x25, x0, 256 + add x24, x0, 352 + add x25, x25, x2 + add x24, x24, x2 + add x22, x22, :lo12:.LANCHOR0 + mov x19, x0 + add x23, x0, w1, sxtw mov x20, 0 - adrp x26, .LANCHOR0 - mov w27, 85 - mov x19, x2 -.L57: - add x25, x26, :lo12:.LANCHOR0 - ldrb w0, [x25,129] + mov w26, 85 +.L71: + ldrb w0, [x22, 129] cmp w0, w20 - bls .L63 - add x0, x19, 256 - str w27, [x22,8] - ldrsb w0, [x20,x0] - str w0, [x22,4] + bhi .L75 + 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 +.L75: + add x0, x19, 352 + str w26, [x21, 8] + ldrsb w0, [x20, x0] + str w0, [x21, 4] mov x0, 1000 bl __const_udelay - ldrb w0, [x25,128] + ldrb w0, [x22, 128] cmp w0, 34 - bne .L58 - ldrsb w0, [x24,x20] - b .L62 -.L58: - cmp w0, 35 - bne .L60 - ldrsb w0, [x21,x20] - b .L62 -.L60: - ldrsb w0, [x23,400] -.L62: - str w0, [x22] + bne .L72 + ldrsb w0, [x24, x20] +.L77: add x20, x20, 1 - b .L57 -.L63: - 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 + str w0, [x21] + b .L71 +.L72: + cmp w0, 35 + bne .L74 + ldrsb w0, [x25, x20] + b .L77 +.L74: + ldrsb w0, [x23, 400] + b .L77 .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, w1, 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 + stp x21, x22, [sp, 32] + mov x22, x0 + ubfiz x21, x1, 2, 8 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x21, x21, 4 + add x0, x0, 408 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + add x21, x0, x21 adrp x23, .LANCHOR0 + mov x19, x0 + add x23, x23, :lo12:.LANCHOR0 + mov x20, 0 mov w24, 161 - mov x19, x2 -.L65: - add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,129] +.L79: + ldrb w0, [x23, 129] cmp w0, w20 - bls .L67 - 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 .L65 -.L67: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + bhi .L80 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L80: + str w24, [x22, 8] + str wzr, [x22] + ldrsb w0, [x20, x19] + str w0, [x22] + ldrsb w0, [x21, x20] + add x20, x20, 1 + str w0, [x22] + mov x0, 1500 + bl __const_udelay + b .L79 .size SamsungSetRRPara, .-SamsungSetRRPara .align 2 .global ftl_flash_suspend @@ -586,72 +575,73 @@ SamsungSetRRPara: ftl_flash_suspend: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0,136] + ldr x1, [x0, 136] ldr w2, [x1] - str w2, [x0,144] - ldr w2, [x1,4] - str w2, [x0,148] - ldr w2, [x1,8] - str w2, [x0,152] - ldr w2, [x1,12] - str w2, [x0,156] - ldr w2, [x1,304] - str w2, [x0,160] - ldr w2, [x1,308] - str w2, [x0,164] - ldr w2, [x1,336] - ldr w1, [x1,344] - str w2, [x0,168] - str w1, [x0,172] + str w2, [x0, 144] + ldr w2, [x1, 4] + str w2, [x0, 148] + ldr w2, [x1, 8] + str w2, [x0, 152] + ldr w2, [x1, 12] + str w2, [x0, 156] + ldr w2, [x1, 304] + str w2, [x0, 160] + ldr w2, [x1, 308] + str w2, [x0, 164] + ldr w2, [x1, 336] + ldr w1, [x1, 344] + stp w2, w1, [x0, 168] ret .size ftl_flash_suspend, .-ftl_flash_suspend .align 2 .global LogAddr2PhyAddr .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: - adrp x7, .LANCHOR0 - uxtb w4, w4 - add x6, x7, :lo12:.LANCHOR0 - ldrh w8, [x6,190] - ldrh w5, [x6,188] - ldrh w9, [x6,76] - ldrb w6, [x6,72] - mul w5, w5, w8 - cmp w6, 1 - ubfiz w8, w9, 1, 15 - csel w9, w8, w9, eq - ldr w8, [x0,4] - uxth w5, w5 + adrp x6, .LANCHOR0 + add x7, x6, :lo12:.LANCHOR0 + and w4, w4, 255 + ldrh w9, [x7, 188] + ldrh w5, [x7, 190] + ldrh w8, [x7, 76] + ldrb w7, [x7, 72] + cmp w7, 1 + ldr w7, [x0, 4] + mul w5, w5, w9 + ubfx x11, x7, 10, 16 + and w9, w5, 65535 + ubfiz w5, w8, 1, 15 + and w7, w7, 1023 + csel w8, w5, w8, eq cmp w1, 1 - ubfx x6, x8, 10, 16 - and w8, w8, 1023 - udiv w10, w6, w5 - msub w5, w10, w5, w6 - uxth w6, w5 - bne .L71 - add x1, x7, :lo12:.LANCHOR0 - ldrb w5, [x1,204] - cbnz w5, .L71 + udiv w5, w11, w9 + and w10, w5, 65535 + msub w5, w5, w9, w11 + and w5, w5, 65535 + bne .L85 + add x1, x6, :lo12:.LANCHOR0 + ldrb w9, [x1, 204] + cbnz w9, .L85 add x1, x1, 208 - ldrh w8, [x1,w8,sxtw 1] -.L71: - add x7, x7, :lo12:.LANCHOR0 + ldrh w7, [x1, w7, sxtw 1] +.L85: + add x6, x6, :lo12:.LANCHOR0 + uxtw x1, w10 + add x6, x6, 1232 cmp w4, 1 - add x7, x7, 1232 - mov w1, 0 - ldr w5, [x7,w10,uxtw 2] - madd w5, w6, w9, w5 - add w5, w5, w8 + ldr w1, [x6, x1, lsl 2] + madd w5, w5, w8, w1 + add w5, w5, w7 str w5, [x2] str w10, [x3] - bls .L72 - ldr w1, [x0,4] - ldr w0, [x0,60] + bls .L87 + ldr w1, [x0, 4] + ldr w0, [x0, 60] add w1, w1, 1024 cmp w1, w0 - cset w1, eq -.L72: - mov w0, w1 + cset w0, eq + ret +.L87: + mov w0, 0 ret .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 2 @@ -659,61 +649,61 @@ LogAddr2PhyAddr: .type FlashReadStatusEN, %function FlashReadStatusEN: stp x29, x30, [sp, -32]! - adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 - add x4, x3, :lo12:.LANCHOR0 + adrp x4, .LANCHOR0 + add x3, x4, :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,88] - ldrb w19, [x6,8] - ldrb w0, [x0,8] + stp x19, x20, [sp, 16] + add x5, x3, x0 + ldr x20, [x3, x0] + ldr x0, [x3, 88] + ldrb w19, [x5, 8] + ldrb w0, [x0, 8] cmp w0, 2 - bne .L75 - add x4, x4, 96 - cbnz w2, .L76 - ldrb w2, [x4,13] - b .L84 -.L76: - ldrb w2, [x4,14] -.L84: + bne .L89 + and w2, w2, 255 + add x3, x3, 96 + cbnz w2, .L90 + ldrb w2, [x3, 13] +.L100: add x0, x19, 8 - add x3, x3, :lo12:.LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 add x0, x20, x0, lsl 8 - str w2, [x0,8] - mov w2, 0 - ldrb w4, [x3,111] - cbz w4, .L79 + str w2, [x0, 8] + ldrb w4, [x4, 111] + cbz w4, .L94 add x3, x19, 8 - lsl x3, x3, 8 -.L83: + mov w2, 0 + add x3, x20, x3, lsl 8 +.L93: cmp w2, w4 - bcs .L79 - 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 .L83 -.L75: - add x0, x19, 8 - mov w1, 112 - add x0, x20, x0, lsl 8 - str w1, [x0,8] -.L79: + bcc .L95 +.L94: add x19, x19, 8 mov x0, 400 lsl x19, x19, 8 bl __const_udelay - ldr w0, [x20,x19] - ldp x19, x20, [sp,16] + ldr w0, [x20, x19] + ldp x19, x20, [sp, 16] + and w0, w0, 255 ldp x29, x30, [sp], 32 - uxtb w0, w0 ret +.L90: + ldrb w2, [x3, 14] + b .L100 +.L95: + lsl w0, w2, 3 + add w2, w2, 1 + lsr w0, w1, w0 + and w0, w0, 255 + str w0, [x3, 4] + b .L93 +.L89: + add x0, x19, 8 + mov w1, 112 + add x0, x20, x0, lsl 8 + str w1, [x0, 8] + b .L94 .size FlashReadStatusEN, .-FlashReadStatusEN .align 2 .global FlashWaitReadyEN @@ -721,27 +711,27 @@ FlashReadStatusEN: FlashWaitReadyEN: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 + str x21, [sp, 32] mov w20, w1 - uxtb w21, w2 -.L86: - mov w0, w19 + and w21, w2, 255 +.L102: mov w1, w20 mov w2, w21 + mov w0, w19 bl FlashReadStatusEN + mov w1, w0 cmp w0, 255 - mov w3, w0 - beq .L86 - tbnz x3, 6, .L87 - mov x0, 1 + beq .L102 + tbnz x1, 6, .L101 mov x1, 3 + mov x0, 1 bl usleep_range - b .L86 -.L87: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + b .L102 +.L101: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashWaitReadyEN, .-FlashWaitReadyEN @@ -751,8 +741,8 @@ FlashWaitReadyEN: FlashScheduleEnSet: adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldr w2, [x1,1264] - str w0, [x1,1264] + ldr w2, [x1, 1264] + str w0, [x1, 1264] mov w0, w2 ret .size FlashScheduleEnSet, .-FlashScheduleEnSet @@ -761,8 +751,8 @@ FlashScheduleEnSet: .type FlashGetPageSize, %function FlashGetPageSize: adrp x0, .LANCHOR0+88 - ldr x0, [x0,#:lo12:.LANCHOR0+88] - ldrb w0, [x0,9] + ldr x0, [x0, #:lo12:.LANCHOR0+88] + ldrb w0, [x0, 9] ret .size FlashGetPageSize, .-FlashGetPageSize .align 2 @@ -775,13 +765,12 @@ NandcReadDontCaseBusyEn: .global NandcGetChipIf .type NandcGetChipIf, %function NandcGetChipIf: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 8 add x2, x1, x0 - ldr x0, [x1,x0] - ldrb w2, [x2,8] + ldr x0, [x1, x0] + ldrb w2, [x2, 8] add x2, x2, 8 add x0, x0, x2, lsl 8 ret @@ -791,12 +780,12 @@ NandcGetChipIf: .type NandcSetDdrPara, %function NandcSetDdrPara: adrp x1, .LANCHOR0+136 - uxtb w0, w0 + and w0, w0, 255 lsl w2, w0, 8 + ldr x1, [x1, #:lo12:.LANCHOR0+136] orr w0, w2, w0, lsl 16 - ldr x1, [x1,#:lo12:.LANCHOR0+136] orr w0, w0, 1 - str w0, [x1,304] + str w0, [x1, 304] ret .size NandcSetDdrPara, .-NandcSetDdrPara .align 2 @@ -804,11 +793,11 @@ NandcSetDdrPara: .type NandcSetDdrDiv, %function NandcSetDdrDiv: adrp x1, .LANCHOR0+136 - uxtb w0, w0 - ldr x2, [x1,#:lo12:.LANCHOR0+136] - mov w1, 16640 - orr w0, w0, w1 - str w0, [x2,344] + and w0, w0, 255 + mov w2, 16640 + orr w0, w0, w2 + ldr x1, [x1, #:lo12:.LANCHOR0+136] + str w0, [x1, 344] ret .size NandcSetDdrDiv, .-NandcSetDdrDiv .align 2 @@ -816,8 +805,8 @@ NandcSetDdrDiv: .type NandcSetDdrMode, %function NandcSetDdrMode: adrp x1, .LANCHOR0+136 - cmp w0, wzr - ldr x2, [x1,#:lo12:.LANCHOR0+136] + cmp w0, 0 + ldr x2, [x1, #:lo12:.LANCHOR0+136] ldr w1, [x2] and w3, w1, -8193 orr w1, w1, 253952 @@ -830,47 +819,45 @@ NandcSetDdrMode: .type NandcSetMode, %function NandcSetMode: adrp x1, .LANCHOR0+136 - uxtb w0, w0 + and w0, w0, 255 tst w0, 6 - ldr x2, [x1,#:lo12:.LANCHOR0+136] + ldr x2, [x1, #:lo12:.LANCHOR0+136] ldr w1, [x2] - beq .L101 - and w0, w0, 4 + beq .L118 orr w1, w1, 24576 - cmp w0, wzr - mov w0, 8322 + tst x0, 4 and w1, w1, -32769 - str w0, [x2,344] - mov w0, 4099 + mov w0, 8322 orr w1, w1, 196608 - movk w0, 0x10, lsl 16 - str w0, [x2,304] + str w0, [x2, 344] + mov w0, 4099 orr w3, w1, 32768 - mov w0, 38 - str w0, [x2,308] + movk w0, 0x10, lsl 16 + str w0, [x2, 304] csel w1, w3, w1, ne + mov w0, 38 + str w0, [x2, 308] mov w0, 39 - str w0, [x2,308] - b .L103 -.L101: - and w1, w1, -8193 -.L103: - str w1, [x2] + str w0, [x2, 308] +.L120: mov w0, 0 + str w1, [x2] ret +.L118: + and w1, w1, -8193 + b .L120 .size NandcSetMode, .-NandcSetMode .align 2 .global NandcFlashCs .type NandcFlashCs, %function NandcFlashCs: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 8 add x3, x1, x0 - ldr x2, [x1,x0] + ldr x2, [x1, x0] mov w1, 1 - ldrb w3, [x3,8] + ldrb w3, [x3, 8] ldr w0, [x2] lsl w1, w1, w3 bfi w0, w1, 0, 8 @@ -881,11 +868,10 @@ NandcFlashCs: .global NandcFlashDeCs .type NandcFlashDeCs, %function NandcFlashDeCs: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 8 - ldr x1, [x1,x0] + ldr x1, [x1, x0] ldr w0, [x1] and w0, w0, -256 and w0, w0, -131073 @@ -898,89 +884,92 @@ NandcFlashDeCs: HynixSetRRPara: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x27, [sp,80] - add x19, x20, :lo12:.LANCHOR0 - uxtb w27, w1 - stp x25, x26, [sp,64] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxtb x24, w0 + stp x23, x24, [sp, 48] + and w23, w0, 255 + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + str x27, [sp, 80] + and w27, w1, 255 + stp x25, x26, [sp, 64] mov x21, x2 - ldr x0, [x19,88] - mov x26, x24 - uxtb w25, w3 - ldrb w0, [x0,19] - cmp w0, 6 - bne .L109 - add x19, x19, x24, lsl 6 - lsl w4, w25, 2 - add x19, x19, 1292 - b .L115 -.L109: - cmp w0, 7 - bne .L111 - mov x2, 160 - mov w4, 10 - madd x19, x24, x2, x19 - mul w4, w25, w4 - add x19, x19, 1300 -.L115: - add x19, x19, w4, sxtw - b .L110 -.L111: - cmp w0, 8 - bne .L112 - add x19, x19, 1300 - add w4, w25, w25, lsl 2 - b .L115 -.L112: - lsl x4, x24, 3 - add x4, x4, w25, sxtw - add x19, x19, x4, lsl 3 - add x19, x19, 1292 -.L110: - add x2, x20, :lo12:.LANCHOR0 - lsl x0, x24, 4 - add x2, x2, 8 - uxtb x27, w27 - add x1, x2, x0 - ldr x22, [x2,x0] - mov w0, w26 - ldrb w23, [x1,8] + and w22, w3, 255 + ldr x1, [x0, 88] + ldrb w1, [x1, 19] + cmp w1, 6 + bne .L126 + ubfiz x19, x23, 6, 8 + add x0, x0, 1272 + add x19, x19, 20 + add x19, x19, w22, uxtw 2 +.L133: + add x19, x0, x19 +.L127: + sxtw x26, w23 + add x0, x20, :lo12:.LANCHOR0 + lsl x1, x26, 4 + and x27, x27, 255 + add x2, x0, x1 + mov x25, 0 + ldr x24, [x0, x1] + mov w0, w23 + ldrb w5, [x2, 8] bl NandcFlashCs - ubfiz x23, x23, 8, 8 + ubfiz x5, x5, 8, 8 + add x24, x24, x5 mov w0, 54 - add x22, x22, x23 - mov x23, 0 - str w0, [x22,2056] -.L113: - cmp x23, x27 - beq .L116 - 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 .L113 -.L116: + str w0, [x24, 2056] +.L130: + cmp x25, x27 + bne .L131 add x20, x20, :lo12:.LANCHOR0 mov w0, 22 - add x24, x20, x24 - str w0, [x22,2056] - mov w0, w26 + add x20, x20, x26 + str w0, [x24, 2056] + mov w0, w23 bl NandcFlashDeCs - strb w25, [x24,2128] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldr x27, [sp,80] + strb w22, [x20, 2128] + 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 +.L126: + cmp w1, 7 + bne .L128 + mov w19, 160 + mov x1, 28 + add x0, x0, 1272 + umaddl x1, w19, w23, x1 + mov w19, 10 + umaddl x19, w22, w19, x1 + b .L133 +.L128: + cmp w1, 8 + bne .L129 + add x0, x0, 1300 + add w19, w22, w22, lsl 2 + add x19, x0, w19, sxtw + b .L127 +.L129: + and x19, x22, 255 + add x19, x19, 2 + add x19, x19, w23, uxtw 3 + add x19, x0, x19, lsl 3 + add x19, x19, 1276 + b .L127 +.L131: + ldrb w0, [x21, x25] + str w0, [x24, 2052] + mov x0, 1000 + bl __const_udelay + ldrsb w0, [x19, x25] + add x25, x25, 1 + str w0, [x24, 2048] + b .L130 .size HynixSetRRPara, .-HynixSetRRPara .align 2 .global FlashSetReadRetryDefault @@ -988,36 +977,36 @@ HynixSetRRPara: FlashSetReadRetryDefault: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - mov x20, 0 add x19, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - ldr x0, [x19,88] - ldrb w0, [x0,19] + stp x21, x22, [sp, 32] + ldr x0, [x19, 88] + ldrb w0, [x0, 19] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 7 - bhi .L117 + bhi .L134 add x21, x19, 2132 add x22, x19, 1276 -.L122: + mov x20, 0 +.L137: lsl x1, x20, 3 - uxtb w0, w20 - ldrb w1, [x1,x21] + and w0, w20, 255 + ldrb w1, [x1, x21] cmp w1, 173 - bne .L119 - ldrb w1, [x19,1273] - mov x2, x22 + bne .L136 + ldrb w1, [x19, 1273] mov w3, 0 + mov x2, x22 bl HynixSetRRPara -.L119: +.L136: add x20, x20, 1 cmp x20, 4 - bne .L122 -.L117: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + bne .L137 +.L134: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault @@ -1025,46 +1014,43 @@ FlashSetReadRetryDefault: .global FlashWaitCmdDone .type FlashWaitCmdDone, %function FlashWaitCmdDone: - stp x29, x30, [sp, -48]! - uxtb x1, w0 - mov x2, 24 + and x5, x0, 255 + mov x0, 24 + stp x29, x30, [sp, -32]! + adrp x4, .LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 + mul x0, x5, x0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x21, x22, [sp,32] - add x20, x20, :lo12:.LANCHOR0 - mov x22, x1 - mul x1, x1, x2 - add x0, x20, 2164 - add x19, x0, x1 - ldrb w21, [x0,x1] - ldr x0, [x19,8] - cbz x0, .L126 - mov w0, w21 - add x20, x20, 1232 + add x1, x4, 2164 + stp x19, x20, [sp, 16] + add x19, x1, x0 + ldr x2, [x19, 8] + cbz x2, .L143 + ldrb w20, [x1, x0] + mov w0, w20 bl NandcFlashCs - ldr w0, [x20,w22,sxtw 2] - ldr w1, [x19,4] - cmp w0, wzr - mov w0, w21 + add x4, x4, 1232 + ldr w1, [x19, 4] + ldr w0, [x4, x5, lsl 2] + cmp w0, 0 + mov w0, w20 cset w2, ne bl FlashWaitReadyEN - mov w20, w0 - mov w0, w21 + mov w2, w0 + mov w0, w20 bl NandcFlashDeCs - ldr x1, [x19,8] - sbfx x0, x20, 0, 1 + sbfx x0, x2, 0, 1 + ldr x1, [x19, 8] str w0, [x1] - str xzr, [x19,8] - ldr x1, [x19,16] - cbz x1, .L126 + str xzr, [x19, 8] + ldr x1, [x19, 16] + cbz x1, .L143 str w0, [x1] - str xzr, [x19,16] -.L126: + str xzr, [x19, 16] +.L143: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 @@ -1084,97 +1070,92 @@ NandcDelayns: .type NandcWaitFlashReadyNoDelay, %function NandcWaitFlashReadyNoDelay: stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 8 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 - ldr x20, [x1,x0] movk w19, 0x1, lsl 16 -.L134: + ldr x20, [x1, x0] +.L153: ldr w0, [x20] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L135 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L154 mov x0, 50 bl __const_udelay subs w19, w19, #1 - bne .L134 + bne .L153 mov w0, -1 - b .L133 -.L135: - mov w0, 0 -.L133: - ldp x19, x20, [sp,16] +.L151: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L154: + mov w0, 0 + b .L151 .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function NandcWaitFlashReady: stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 8 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 - ldr x20, [x1,x0] movk w19, 0x1, lsl 16 + ldr x20, [x1, x0] mov x0, 650 bl __const_udelay -.L139: +.L159: ldr w0, [x20] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L140 - mov x0, 1 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L160 mov x1, 2 + mov x0, 1 bl usleep_range subs w19, w19, #1 - bne .L139 + bne .L159 mov w0, -1 - b .L138 -.L140: - mov w0, 0 -.L138: - ldp x19, x20, [sp,16] +.L157: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L160: + mov w0, 0 + b .L157 .size NandcWaitFlashReady, .-NandcWaitFlashReady .align 2 .global FlashReset .type FlashReset, %function FlashReset: - stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 + stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - add x1, x1, :lo12:.LANCHOR0 - uxtb w20, w0 - add x1, x1, 8 - sbfiz x0, x20, 4, 32 - add x2, x1, x0 - str x21, [sp,32] - ldr x21, [x1,x0] - mov w0, w20 - ldrb w19, [x2,8] + str x19, [sp, 16] + and w19, w0, 255 + sbfiz x1, x19, 4, 32 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x2, x0, x1 + ldr x5, [x0, x1] + mov w0, w19 + ldrb w4, [x2, 8] bl NandcFlashCs - add x19, x19, 8 + add x4, x4, 8 + add x4, x5, x4, lsl 8 mov w0, 255 - add x19, x21, x19, lsl 8 - str w0, [x19,8] - mov w0, w20 + str w0, [x4, 8] + mov w0, w19 bl NandcWaitFlashReady - mov w0, w20 + mov w0, w19 bl NandcFlashDeCs - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashReset, .-FlashReset .align 2 @@ -1183,57 +1164,56 @@ FlashReset: flash_enter_slc_mode: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - str x23, [sp,48] - stp x19, x20, [sp,16] - add x20, x21, :lo12:.LANCHOR0 - uxtb w22, w0 - ldrb w0, [x20,204] - cbz w0, .L143 + add x4, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + str x23, [sp, 48] + and w22, w0, 255 + ldrb w0, [x4, 204] + cbz w0, .L165 mov w0, w22 bl NandcFlashCs - sxtw x1, w22 - add x2, x20, 8 - lsl x0, x1, 4 - add x1, x20, x1, lsl 3 - add x3, x2, x0 - ldr x23, [x2,x0] - ldrb w0, [x1,2132] - ldrb w19, [x3,8] + sxtw x0, w22 + lsl x1, x0, 4 + add x0, x4, x0, lsl 3 + add x2, x4, x1 + ldrb w0, [x0, 2132] + ldr x23, [x4, x1] + ldrb w19, [x2, 8] cmp w0, 44 - bne .L145 + bne .L167 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x23, x20 - str w0, [x20,2056] + str w0, [x20, 2056] mov w0, 145 - str w0, [x20,2052] + str w0, [x20, 2052] mov x0, 250 bl __const_udelay - str wzr, [x20,2048] + str wzr, [x20, 2048] mov w0, 1 - str w0, [x20,2048] - str wzr, [x20,2048] + str w0, [x20, 2048] + str wzr, [x20, 2048] mov x0, 500 - str wzr, [x20,2048] + str wzr, [x20, 2048] bl __const_udelay -.L145: +.L167: add x19, x19, 8 mov w0, w22 - add x21, x21, :lo12:.LANCHOR0 add x19, x23, x19, lsl 8 bl NandcWaitFlashReadyNoDelay mov w0, 218 - str w0, [x19,8] + add x21, x21, :lo12:.LANCHOR0 + str w0, [x19, 8] mov w0, w22 bl NandcWaitFlashReady mov w0, 2 - strb w0, [x21,2356] -.L143: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] + strb w0, [x21, 2356] +.L165: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size flash_enter_slc_mode, .-flash_enter_slc_mode @@ -1243,57 +1223,56 @@ flash_enter_slc_mode: flash_exit_slc_mode: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - str x23, [sp,48] - stp x19, x20, [sp,16] - add x20, x21, :lo12:.LANCHOR0 - uxtb w22, w0 - ldrb w0, [x20,204] - cbz w0, .L149 + add x4, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + str x23, [sp, 48] + and w22, w0, 255 + ldrb w0, [x4, 204] + cbz w0, .L172 mov w0, w22 bl NandcFlashCs - sxtw x1, w22 - add x2, x20, 8 - lsl x0, x1, 4 - add x1, x20, x1, lsl 3 - add x3, x2, x0 - ldr x23, [x2,x0] - ldrb w0, [x1,2132] - ldrb w19, [x3,8] + sxtw x0, w22 + lsl x1, x0, 4 + add x0, x4, x0, lsl 3 + add x2, x4, x1 + ldrb w0, [x0, 2132] + ldr x23, [x4, x1] + ldrb w19, [x2, 8] cmp w0, 44 - bne .L151 + bne .L174 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x23, x20 - str w0, [x20,2056] + str w0, [x20, 2056] mov w0, 145 - str w0, [x20,2052] + str w0, [x20, 2052] mov x0, 250 bl __const_udelay mov w0, 2 - str w0, [x20,2048] + str w0, [x20, 2048] mov w0, 1 - str w0, [x20,2048] - str wzr, [x20,2048] + str w0, [x20, 2048] + str wzr, [x20, 2048] mov x0, 500 - str wzr, [x20,2048] + str wzr, [x20, 2048] bl __const_udelay -.L151: +.L174: add x19, x19, 8 mov w0, w22 - add x21, x21, :lo12:.LANCHOR0 add x19, x23, x19, lsl 8 bl NandcWaitFlashReadyNoDelay + add x21, x21, :lo12:.LANCHOR0 mov w0, 223 - str w0, [x19,8] + str w0, [x19, 8] mov w0, w22 bl NandcWaitFlashReady - strb wzr, [x21,2356] -.L149: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] + strb wzr, [x21, 2356] +.L172: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size flash_exit_slc_mode, .-flash_exit_slc_mode @@ -1303,15 +1282,16 @@ flash_exit_slc_mode: FlashEraseBlock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 mov w20, w1 + str x21, [sp, 32] mov w0, w19 - str x2, [x29,40] + mov w21, w2 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr x2, [x29,40] + mov w2, w21 mov w1, w20 mov w0, w19 bl FlashEraseCmd @@ -1320,11 +1300,12 @@ FlashEraseBlock: mov w1, w20 mov w0, w19 bl FlashReadStatus - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - and w0, w20, 1 - ldp x19, x20, [sp,16] + and w0, w2, 1 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashEraseBlock, .-FlashEraseBlock @@ -1333,167 +1314,163 @@ FlashEraseBlock: .type FlashSetInterfaceMode, %function FlashSetInterfaceMode: adrp x1, .LANCHOR0 - mov x6, 0 add x1, x1, :lo12:.LANCHOR0 - mov w8, 239 stp x29, x30, [sp, -16]! - add x7, x1, 8 - add x4, x1, 2132 + add x6, x1, 8 + add x3, x1, 2132 + mov x5, 0 add x29, sp, 0 - ldrb w2, [x1,2357] + ldrb w2, [x1, 2357] + mov w12, 69 + mov w8, 239 mov w9, 128 + and w11, w2, 4 + and w7, w2, 1 mov w10, 1 - mov w12, 35 - and w11, w2, 1 - and w2, w2, 4 - mov w13, 32 - mov w14, 5 - uxtb w5, w2 -.L167: - ldrb w3, [x6,x4] - ldr x1, [x7] - cmp w3, 152 - ldrb w2, [x7,8] - beq .L157 - cmp w3, 69 - beq .L157 - cmp w3, 173 - beq .L157 - cmp w3, 44 - bne .L158 -.L157: + mov w13, 35 + mov w14, 32 + mov w15, 5 + mov w16, 44 +.L191: + ldrb w2, [x5, x3] + ldrb w4, [x6] + cmp w2, 152 + ccmp w2, w12, 4, ne + beq .L182 + cmp w2, 173 + ccmp w2, w16, 4, ne + bne .L183 +.L182: cmp w0, 1 - bne .L160 - cbz w11, .L158 - ubfiz x2, x2, 8, 8 - cmp w3, 173 - add x1, x1, x2 - str w8, [x1,2056] - bne .L161 - str w0, [x1,2052] - b .L178 -.L161: - cmp w3, 44 - bne .L163 - str w0, [x1,2052] - str w14, [x1,2048] - b .L165 -.L163: - str w9, [x1,2052] - str w0, [x1,2048] - b .L165 -.L160: - cbz w5, .L158 - ubfiz x2, x2, 8, 8 - cmp w3, 173 - add x1, x1, x2 - str w8, [x1,2056] - bne .L164 - str w10, [x1,2052] - str w13, [x1,2048] - b .L165 -.L164: - cmp w3, 44 - bne .L166 - str w10, [x1,2052] - str w12, [x1,2048] - b .L165 -.L166: - str w9, [x1,2052] -.L178: - str wzr, [x1,2048] -.L165: - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] -.L158: - add x6, x6, 8 - add x7, x7, 16 - cmp x6, 32 - bne .L167 + ldr x1, [x6, -8] + bne .L184 + cbz w7, .L183 + ubfiz x4, x4, 8, 8 + cmp w2, 173 + add x1, x1, x4 + str w8, [x1, 2056] + bne .L185 + str w0, [x1, 2052] +.L203: + str wzr, [x1, 2048] + b .L189 +.L185: + cmp w2, 44 + bne .L187 + str w0, [x1, 2052] + str w15, [x1, 2048] +.L189: + str wzr, [x1, 2048] + str wzr, [x1, 2048] + str wzr, [x1, 2048] +.L183: + add x5, x5, 8 + add x6, x6, 16 + cmp x5, 32 + bne .L191 mov w0, 0 bl NandcWaitFlashReady mov w0, 0 ldp x29, x30, [sp], 16 ret +.L187: + str w9, [x1, 2052] + str w0, [x1, 2048] + b .L189 +.L184: + cbz w11, .L183 + ubfiz x4, x4, 8, 8 + cmp w2, 173 + add x1, x1, x4 + str w8, [x1, 2056] + bne .L188 + str w10, [x1, 2052] + str w14, [x1, 2048] + b .L189 +.L188: + cmp w2, 44 + bne .L190 + str w10, [x1, 2052] + str w13, [x1, 2048] + b .L189 +.L190: + str w9, [x1, 2052] + b .L203 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .align 2 .global FlashReadSpare .type FlashReadSpare, %function FlashReadSpare: - adrp x3, .LANCHOR1+481 - adrp x5, .LANCHOR0 - stp x29, x30, [sp, -48]! - uxtb w0, w0 - add x5, x5, :lo12:.LANCHOR0 - add x5, x5, 8 - sbfiz x6, x0, 4, 32 + stp x29, x30, [sp, -32]! + and w0, w0, 255 + sbfiz x5, x0, 4, 32 + adrp x4, .LANCHOR0 add x29, sp, 0 - ldrb w4, [x3,#:lo12:.LANCHOR1+481] - add x3, x5, x6 - str x19, [sp,16] - lsl w4, w4, 9 - str x2, [x29,40] - ldrb w3, [x3,8] - ldr x19, [x5,x6] - add x19, x19, x3, lsl 8 - and w3, w1, 255 - str wzr, [x19,2056] - str w4, [x19,2052] - lsr w4, w4, 8 - str w4, [x19,2052] - str w3, [x19,2052] - lsr w3, w1, 8 - str w3, [x19,2052] + stp x19, x20, [sp, 16] + mov x20, x2 + adrp x2, .LANCHOR1+481 + add x4, x4, :lo12:.LANCHOR0 + ldrb w3, [x2, #:lo12:.LANCHOR1+481] + add x2, x4, x5 + ldrb w19, [x2, 8] + lsl w3, w3, 9 + ldr x2, [x4, x5] + add x19, x2, x19, lsl 8 + and w2, w1, 255 + str wzr, [x19, 2056] + str w3, [x19, 2052] + lsr w3, w3, 8 + str w3, [x19, 2052] + str w2, [x19, 2052] + lsr w2, w1, 8 + str w2, [x19, 2052] lsr w1, w1, 16 - str w1, [x19,2052] + str w1, [x19, 2052] mov w1, 48 - str w1, [x19,2056] + str w1, [x19, 2056] bl NandcWaitFlashReady - ldr x2, [x29,40] - ldr w0, [x19,2048] - strb w0, [x2] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + ldr w0, [x19, 2048] + strb w0, [x20] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashReadSpare, .-FlashReadSpare .align 2 .global SandiskProgTestBadBlock .type SandiskProgTestBadBlock, %function SandiskProgTestBadBlock: - adrp x3, .LANCHOR0 - uxtb w0, w0 stp x29, x30, [sp, -32]! - add x3, x3, :lo12:.LANCHOR0 - sbfiz x4, x0, 4, 32 - add x3, x3, 8 + and w0, w0, 255 + sbfiz x3, x0, 4, 32 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 add x29, sp, 0 - add x2, x3, x4 - str x19, [sp,16] - ldrb w2, [x2,8] - ldr x19, [x3,x4] - add x19, x19, x2, lsl 8 + add x4, x2, x3 + str x19, [sp, 16] + ldr x2, [x2, x3] + ldrb w19, [x4, 8] + add x19, x2, x19, lsl 8 mov w2, 162 - str w2, [x19,2056] + str w2, [x19, 2056] mov w2, 128 - str w2, [x19,2056] + str w2, [x19, 2056] and w2, w1, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w2, [x19,2052] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w2, [x19, 2052] lsr w2, w1, 8 - str w2, [x19,2052] + str w2, [x19, 2052] lsr w1, w1, 16 - str w1, [x19,2052] + str w1, [x19, 2052] mov w1, 16 - str w1, [x19,2056] + str w1, [x19, 2056] bl NandcWaitFlashReady mov w0, 112 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w0, [x19,2048] - ldr x19, [sp,16] + ldr w0, [x19, 2048] + ldr x19, [sp, 16] and w0, w0, 1 ldp x29, x30, [sp], 32 ret @@ -1504,422 +1481,408 @@ SandiskProgTestBadBlock: SandiskSetRRPara: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x20, x0 mov w0, 239 - uxtb w19, w1 - add w19, w19, 1 - str w0, [x20,8] + and w19, w1, 255 + str w0, [x20, 8] mov w0, 17 - str w0, [x20,4] + str w0, [x20, 4] mov x0, 1000 bl __const_udelay - mov w1, 5 - adrp x2, .LANCHOR1 - add x2, x2, :lo12:.LANCHOR1 - adrp x5, .LANCHOR0 - smull x1, w19, w1 - add x0, x2, 256 - add x2, x2, 304 + add w1, w19, 1 + mov w0, 5 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + umull x1, w1, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x3, x0, 256 + add x0, x0, 352 + add x3, x3, x1 add x0, x0, x1 - add x1, x2, x1 - mov x2, 0 -.L182: - add x3, x5, :lo12:.LANCHOR0 - ldrb w4, [x3,129] - cmp w4, w2 - bls .L187 - ldrb w3, [x3,128] - cmp w3, 67 - bne .L183 - ldrsb w3, [x0,x2] - b .L186 -.L183: - ldrsb w3, [x1,x2] -.L186: - str w3, [x20] - add x2, x2, 1 - b .L182 -.L187: + mov x1, 0 +.L209: + ldrb w4, [x2, 129] + cmp w4, w1 + bhi .L212 mov w0, 0 bl NandcWaitFlashReady - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L212: + ldrb w4, [x2, 128] + cmp w4, 67 + bne .L210 + ldrsb w4, [x0, x1] +.L214: + add x1, x1, 1 + str w4, [x20] + b .L209 +.L210: + ldrsb w4, [x3, x1] + b .L214 .size SandiskSetRRPara, .-SandiskSetRRPara .align 2 .global micron_auto_read_calibration_config .type micron_auto_read_calibration_config, %function micron_auto_read_calibration_config: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 + mov w20, w1 mov w0, w19 - sbfiz x19, x19, 4, 32 - str x1, [x29,40] bl NandcWaitFlashReady - adrp x3, .LANCHOR0 - add x3, x3, :lo12:.LANCHOR0 - add x3, x3, 8 - add x0, x3, x19 - ldr x19, [x3,x19] - ldrb w2, [x0,8] + sbfiz x0, x19, 4, 32 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + add x1, x2, x0 + ldr x0, [x2, x0] + ldrb w19, [x1, 8] + add x19, x0, x19, lsl 8 mov w0, 239 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov w0, 150 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 1000 bl __const_udelay - ldr x1, [x29,40] - str w1, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + str w20, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .align 2 .global FlashEraseSLc2KBlocks .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x23, x24, [sp, 48] + mov w23, 56 + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - str x25, [sp,64] - stp x23, x24, [sp,48] + umaddl x23, w1, w23, x0 add x21, x21, :lo12:.LANCHOR0 - adrp x23, .LC0 - stp x19, x20, [sp,16] - mov w24, w1 + stp x19, x20, [sp, 16] + and w22, w1, 255 mov x20, x0 - mov w22, 0 - add x25, x21, 2164 - add x23, x23, :lo12:.LC0 -.L190: - cmp w22, w24 - beq .L199 - add x2, x29, 88 - sub w4, w24, w22 - mov x0, x20 + add x24, x21, 2164 +.L218: + cmp x20, x23 + bne .L223 + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L223: mov w1, 0 - add x3, x29, 92 + mov w4, w22 + add x3, x29, 76 + add x2, x29, 72 + mov x0, x20 bl LogAddr2PhyAddr - ldr w2, [x29,92] - ldrb w0, [x21,2358] - cmp w2, w0 - bcc .L191 + ldrb w1, [x21, 2358] + ldr w0, [x29, 76] + cmp w1, w0 + bhi .L219 mov w0, -1 str w0, [x20] - b .L192 -.L191: - uxtw x2, w2 - add x0, x21, x2 - ldrb w19, [x0,2360] - mov x0, 24 - mul x2, x2, x0 +.L220: + sub w22, w22, #1 + add x20, x20, 56 + and w22, w22, 255 + b .L218 +.L219: + uxtw x0, w0 + add x1, x21, x0 + ldrb w19, [x1, 2360] + mov x1, 24 + mul x0, x0, x1 + strb w19, [x24, x0] mov w0, w19 - strb w19, [x25,x2] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w2, 0 mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus sbfx x0, x0, 0, 1 str w0, [x20] - mov w0, w19 - ldr w1, [x29,88] - ldr w2, [x21,76] - add w1, w2, w1 mov w2, 0 + ldr w1, [x29, 72] + ldr w0, [x21, 76] + add w1, w1, w0 + mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus - tbz x0, 0, .L193 + tbz x0, 0, .L221 mov w0, -1 str w0, [x20] -.L193: +.L221: ldr w0, [x20] cmn w0, #1 - bne .L194 - ldr w1, [x29,88] - mov x0, x23 + bne .L222 + ldr w1, [x29, 72] + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk -.L194: +.L222: mov w0, w19 bl NandcFlashDeCs -.L192: - add w22, w22, 1 - add x20, x20, 56 - b .L190 -.L199: - mov w0, 0 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 96 - ret + b .L220 .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks .align 2 .global FlashEraseBlocks .type FlashEraseBlocks, %function FlashEraseBlocks: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x27, x28, [sp,80] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x21, x22, [sp, 32] + add x21, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + mov w24, w2 + stp x27, x28, [sp, 80] mov w27, w1 - adrp x1, .LANCHOR0 - stp x19, x20, [sp,16] - add x19, x1, :lo12:.LANCHOR0 - str x1, [x29,104] - stp x23, x24, [sp,48] - mov w23, w2 - mov x24, x0 - ldrb w2, [x19,72] - mov w20, 0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - cbz w2, .L201 - mov w1, w23 - bl FlashEraseSLc2KBlocks - b .L202 -.L201: + stp x25, x26, [sp, 64] + ldrb w1, [x21, 72] + cbnz w1, .L229 + mov x20, x0 + add x26, x21, 2164 + mov w22, 0 mov w28, 56 - add x25, x19, 2164 - mov x26, 24 -.L232: - cmp w20, w23 - bcs .L233 - umull x5, w20, w28 +.L230: + cmp w22, w24 + bcc .L239 + add x19, x19, :lo12:.LANCHOR0 + mov x21, 0 + add x22, x19, 2164 + mov x23, 24 +.L240: + ldrb w0, [x19, 2358] + cmp w0, w21 + bhi .L242 + ldr w0, [x19, 2372] + cbnz w0, .L243 +.L244: + mov w0, 0 + b .L228 +.L229: + mov w1, w2 + bl FlashEraseSLc2KBlocks +.L228: + 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 +.L239: + umull x12, w22, w28 mov w1, 0 - sub w4, w23, w20 - add x21, x24, x5 - add x2, x29, 120 - mov x0, x21 - add x3, x29, 124 - str x5, [x29,96] + sub w4, w24, w22 + add x3, x29, 108 + add x23, x20, x12 + add x2, x29, 104 + mov x0, x23 bl LogAddr2PhyAddr - mov w22, w0 - ldrb w1, [x19,2358] - ldr w0, [x29,124] - ldr x5, [x29,96] - cmp w0, w1 - bcc .L203 + mov w25, w0 + ldrb w1, [x21, 2358] + ldr w0, [x29, 108] + cmp w1, w0 + bhi .L232 mov w0, -1 - str w0, [x24,x5] - b .L204 -.L203: - ldrb w1, [x19,2368] - cmp w1, wzr + str w0, [x20, x12] +.L233: + add w22, w22, 1 + b .L230 +.L232: + ldrb w1, [x21, 2368] + mov x2, 24 + cmp w1, 0 uxtw x1, w0 - csel w22, w22, wzr, ne - madd x1, x1, x26, x25 - ldr x1, [x1,8] - cbz x1, .L206 + csel w25, w25, wzr, ne + madd x1, x1, x2, x26 + ldr x1, [x1, 8] + cbz x1, .L235 bl FlashWaitCmdDone -.L206: - 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, .L207 - add w1, w20, 1 - umull x1, w1, w28 - add x1, x24, x1 - str x1, [x2,16] -.L207: - add x1, x19, x0 - mul x0, x0, x26 - ldrb w21, [x1,2360] - strb w21, [x25,x0] - mov w0, w21 +.L235: + ldp w2, w1, [x29, 104] + mov x0, 24 + madd x0, x1, x0, x26 + str w2, [x0, 4] + stp x23, xzr, [x0, 8] + cbz w25, .L236 + add w2, w22, 1 + umaddl x2, w2, w28, x20 + str x2, [x0, 16] +.L236: + add x0, x21, x1 + ldrb w23, [x0, 2360] + mov x0, 24 + mul x1, x1, x0 + mov w0, w23 + strb w23, [x26, x1] bl NandcFlashCs cmp w27, 1 - bne .L208 - ldrb w0, [x19,204] - cbz w0, .L208 - mov w0, w21 + bne .L237 + ldrb w0, [x21, 204] + cbz w0, .L237 + mov w0, w23 bl flash_enter_slc_mode - b .L209 -.L208: - mov w0, w21 - bl flash_exit_slc_mode -.L209: - ldr w1, [x29,124] - add x0, x19, 1232 - add w20, w20, w22 - ldr w0, [x0,x1,lsl 2] - ldr w1, [x29,120] - cmp w0, wzr - mov w0, w21 +.L238: + ldr w1, [x29, 108] + add x0, x21, 1232 + add w22, w22, w25 + ldr w0, [x0, x1, lsl 2] + ldr w1, [x29, 104] + cmp w0, 0 + mov w0, w23 cset w2, ne bl FlashWaitReadyEN - ldr w1, [x29,120] - mov w0, w21 - mov w2, w22 + ldr w1, [x29, 104] + mov w2, w25 + mov w0, w23 bl FlashEraseCmd - mov w0, w21 + mov w0, w23 bl NandcFlashDeCs -.L204: - add w20, w20, 1 - b .L232 -.L233: - ldr x0, [x29,104] - mov x20, 0 - mov x22, 24 - add x19, x0, :lo12:.LANCHOR0 - add x21, x19, 2164 -.L211: - ldrb w0, [x19,2358] - cmp w0, w20 - bls .L234 - mov w0, w20 + b .L233 +.L237: + mov w0, w23 + bl flash_exit_slc_mode + b .L238 +.L242: + mov w0, w21 bl FlashWaitCmdDone cmp w27, 1 - bne .L212 - ldrb w0, [x19,204] - cbz w0, .L212 - mul x0, x20, x22 - ldrb w0, [x0,x21] + bne .L241 + ldrb w0, [x19, 204] + cbz w0, .L241 + mul x0, x21, x23 + ldrb w0, [x0, x22] bl flash_exit_slc_mode -.L212: - add x20, x20, 1 - b .L211 -.L234: - ldr w0, [x19,2372] - cbnz w0, .L214 -.L216: - mov w0, 0 - b .L202 -.L214: - ldrb w0, [x19,2132] +.L241: + add x21, x21, 1 + b .L240 +.L243: + ldrb w0, [x19, 2132] cmp w0, 69 - bne .L216 - mov x0, 0 - mov x1, 56 -.L215: - cmp w23, w0 - bls .L216 - mul x2, x0, x1 - add x0, x0, 1 - str wzr, [x24,x2] - b .L215 -.L202: - 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 + bne .L244 + mov w1, 56 + mov x0, x20 + umaddl x24, w24, w1, x20 +.L245: + cmp x24, x0 + beq .L244 + str wzr, [x0], 56 + b .L245 .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FlashReadDpCmd .type FlashReadDpCmd, %function FlashReadDpCmd: - stp x29, x30, [sp, -80]! - adrp x3, .LANCHOR0 - and w8, w1, 255 + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - add x6, x3, :lo12:.LANCHOR0 - uxtb w21, w0 - sbfiz x0, x21, 4, 32 - add x4, x6, 8 - stp x19, x20, [sp,16] - str x23, [sp,48] - add x7, x4, x0 - and w23, w2, 255 - lsr w22, w2, 8 - ldr x5, [x4,x0] + stp x21, x22, [sp, 32] + and w22, w0, 255 + adrp x0, .LANCHOR0 + add x4, x0, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + mov w21, w1 + stp x19, x20, [sp, 16] + sbfiz x1, x22, 4, 32 + and w24, w2, 255 + lsr w23, w2, 8 lsr w20, w2, 16 - ldrb w0, [x6,112] - ldr x2, [x6,88] - cmp w0, 1 - ldrb w19, [x7,8] - lsr w0, w1, 16 - lsr w7, w1, 8 - ldrb w2, [x2,7] - bne .L236 + ldr x2, [x4, 88] + add x3, x4, x1 + ldr x5, [x4, x1] + ldrb w1, [x4, 112] + and w7, w21, 255 + lsr w6, w21, 8 + cmp w1, 1 + ldrb w19, [x3, 8] + lsr w1, w21, 16 + ldrb w2, [x2, 7] + bne .L261 cmp w2, 1 - bne .L237 - sxtw x4, w19 + bne .L262 + sxtw x3, w19 mov w2, 38 - add x4, x4, 8 - add x4, x5, x4, lsl 8 - str w2, [x4,8] -.L237: - add x3, x3, :lo12:.LANCHOR0 + add x3, x3, 8 + add x3, x5, x3, lsl 8 + str w2, [x3, 8] +.L262: + add x0, x0, :lo12:.LANCHOR0 add x19, x5, x19, lsl 8 - str x1, [x29,72] - ldrb w2, [x3,104] - str w2, [x19,2056] - str wzr, [x19,2052] - str wzr, [x19,2052] - str w8, [x19,2052] - str w7, [x19,2052] - str w0, [x19,2052] - ldrb w0, [x3,105] - str w0, [x19,2056] - mov w0, w21 + add x0, x0, 96 + ldrb w2, [x0, 8] + str w2, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w7, [x19, 2052] + str w6, [x19, 2052] + ldrb w0, [x0, 9] + str w1, [x19, 2052] + str w0, [x19, 2056] + mov w0, w22 bl NandcWaitFlashReady - str wzr, [x19,2056] - str wzr, [x19,2052] + str wzr, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] +.L266: + str w24, [x19, 2052] mov w0, 48 - str wzr, [x19,2052] - str w23, [x19,2052] - str w22, [x19,2052] - str w20, [x19,2052] - str w0, [x19,2056] - ldr x1, [x29,72] - b .L238 -.L236: - cmp w2, 1 - bne .L239 - sxtw x4, w19 - mov w2, 38 - add x4, x4, 8 - add x4, x5, x4, lsl 8 - str w2, [x4,8] -.L239: - add x3, x3, :lo12:.LANCHOR0 - add x19, x5, x19, lsl 8 - ldrb w2, [x3,104] - str w2, [x19,2056] - str w8, [x19,2052] - str w7, [x19,2052] - str w0, [x19,2052] - ldrb w0, [x3,105] - str w0, [x19,2056] - mov w0, 48 - str w23, [x19,2052] - str w22, [x19,2052] - str w20, [x19,2052] - str w0, [x19,2056] -.L238: - mov w0, w21 + str w23, [x19, 2052] + mov w1, w21 + str w20, [x19, 2052] + str w0, [x19, 2056] + mov w0, w22 bl FlashSetRandomizer - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L261: + cmp w2, 1 + bne .L264 + sxtw x3, w19 + mov w2, 38 + add x3, x3, 8 + add x3, x5, x3, lsl 8 + str w2, [x3, 8] +.L264: + add x0, x0, :lo12:.LANCHOR0 + add x19, x5, x19, lsl 8 + add x0, x0, 96 + ldrb w2, [x0, 8] + str w2, [x19, 2056] + str w7, [x19, 2052] + str w6, [x19, 2052] + ldrb w0, [x0, 9] + str w1, [x19, 2052] + str w0, [x19, 2056] + b .L266 .size FlashReadDpCmd, .-FlashReadDpCmd .align 2 .global ftl_flash_de_init @@ -1928,48 +1891,47 @@ ftl_flash_de_init: stp x29, x30, [sp, -32]! mov w0, 0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] bl NandcWaitFlashReady - adrp x19, .LANCHOR0 bl FlashSetReadRetryDefault + adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - ldr w0, [x0,2376] - cbz w0, .L241 + ldr w0, [x0, 2376] + cbz w0, .L268 mov w0, 0 bl flash_enter_slc_mode - b .L242 -.L241: - bl flash_exit_slc_mode -.L242: +.L269: add x20, x19, :lo12:.LANCHOR0 - ldrb w0, [x20,2380] - cbz w0, .L243 - ldrb w0, [x20,2357] - tbz x0, 0, .L243 + ldrb w0, [x20, 2380] + cbz w0, .L270 + ldrb w0, [x20, 2357] + tbz x0, 0, .L270 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - strb wzr, [x20,2380] -.L243: - add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19,8] - str wzr, [x0,336] + strb wzr, [x20, 2380] +.L270: + ldr x0, [x19, #:lo12:.LANCHOR0] + str wzr, [x0, 336] mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L268: + mov w0, 0 + bl flash_exit_slc_mode + b .L269 .size ftl_flash_de_init, .-ftl_flash_de_init .align 2 .global NandcRandmzSel .type NandcRandmzSel, %function NandcRandmzSel: - adrp x2, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 - add x2, x2, 8 - ldr x0, [x2,x0] - str w1, [x0,336] + ldr x0, [x2, x0] + str w1, [x0, 336] ret .size NandcRandmzSel, .-NandcRandmzSel .align 2 @@ -1978,73 +1940,77 @@ NandcRandmzSel: NandcTimeCfg: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov w19, w0 mov w0, 0 bl rknand_get_clk_rate - mov w2, 16960 + mov w1, 16960 + movk w1, 0xf, lsl 16 + sdiv w0, w0, w1 adrp x1, .LANCHOR0 - movk w2, 0xf, lsl 16 add x1, x1, :lo12:.LANCHOR0 - sdiv w0, w0, w2 cmp w0, 250 - ble .L252 - ldr x0, [x1,136] + ble .L280 + ldr x0, [x1, 136] mov w1, 8354 - b .L259 -.L252: - cmp w0, 220 - ble .L254 - ldr x0, [x1,136] - b .L260 -.L254: - cmp w0, 185 - ble .L255 - ldr x0, [x1,136] - mov w1, 4226 - b .L259 -.L255: - cmp w0, 160 - ldr x0, [x1,136] - ble .L256 - mov w1, 4194 - b .L259 -.L256: - cmp w19, 35 - mov w1, 4193 - bls .L259 - cmp w19, 99 - mov w1, 4225 - bls .L259 -.L260: - mov w1, 8322 -.L259: - str w1, [x0,4] - ldr x19, [sp,16] +.L288: + str w1, [x0, 4] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L280: + cmp w0, 220 + ble .L282 + ldr x0, [x1, 136] +.L289: + mov w1, 8322 + b .L288 +.L282: + cmp w0, 185 + ble .L283 + ldr x0, [x1, 136] + mov w1, 4226 + b .L288 +.L283: + cmp w0, 160 + ldr x0, [x1, 136] + ble .L284 + mov w1, 4194 + b .L288 +.L284: + cmp w19, 35 + bhi .L285 + mov w1, 4193 + b .L288 +.L285: + cmp w19, 99 + bhi .L289 + mov w1, 4225 + b .L288 .size NandcTimeCfg, .-NandcTimeCfg .align 2 .global FlashTimingCfg .type FlashTimingCfg, %function FlashTimingCfg: - sub w1, w0, #4096 - sub w1, w1, #97 stp x29, x30, [sp, -16]! - and w1, w1, -33 - cmp w1, 1 + mov w1, -4193 + add w2, w0, w1 + mov w3, -4225 add x29, sp, 0 - bls .L262 + add w1, w0, w3 + cmp w2, 1 + ccmp w1, 1, 0, hi + bls .L291 mov w1, 8322 cmp w0, w1 - bne .L263 -.L262: + bne .L292 +.L291: adrp x1, .LANCHOR0+136 - ldr x1, [x1,#:lo12:.LANCHOR0+136] - str w0, [x1,4] -.L263: + ldr x1, [x1, #:lo12:.LANCHOR0+136] + str w0, [x1, 4] +.L292: adrp x0, .LANCHOR1+493 - ldrb w0, [x0,#:lo12:.LANCHOR1+493] + ldrb w0, [x0, #:lo12:.LANCHOR1+493] bl NandcTimeCfg ldp x29, x30, [sp], 16 ret @@ -2054,58 +2020,58 @@ FlashTimingCfg: .type NandcInit, %function NandcInit: stp x29, x30, [sp, -32]! - mov w3, 1 + mov w2, 1 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 add x1, x19, :lo12:.LANCHOR0 - str w3, [x1,32] - mov w3, 2 - str wzr, [x1,16] - str w3, [x1,48] - mov w3, 3 - str x0, [x1,8] - str w3, [x1,64] - str x0, [x1,24] - str x0, [x1,40] - str x0, [x1,56] - str x0, [x1,136] + str x0, [x19, #:lo12:.LANCHOR0] + str w2, [x1, 24] + mov w2, 2 + str wzr, [x1, 8] + str w2, [x1, 40] + mov w2, 3 + str x0, [x1, 16] + str x0, [x1, 32] + str x0, [x1, 48] + str x0, [x1, 136] + str w2, [x1, 56] ldr w2, [x0] ubfx x3, x2, 13, 1 - str w3, [x1,2384] - ldr w3, [x0,352] + str w3, [x1, 2384] + ldr w3, [x0, 352] and w2, w2, 245760 orr w2, w2, 256 ubfx x3, x3, 16, 4 - str w3, [x1,2388] - ldr w3, [x0,352] - str w3, [x1,2392] + str w3, [x1, 2388] + ldr w3, [x0, 352] + str w3, [x1, 2392] cmp w3, 2049 - bne .L265 + bne .L295 mov w3, 8 - str w3, [x1,2388] -.L265: + str w3, [x1, 2388] +.L295: add x19, x19, :lo12:.LANCHOR0 str w2, [x0] - ldr x0, [x19,136] - str wzr, [x0,336] + ldr x0, [x19, 136] + str wzr, [x0, 336] mov w0, 40 bl NandcTimeCfg - ldr x0, [x19,136] + ldr x0, [x19, 136] mov w1, 8322 - str w1, [x0,344] + str w1, [x0, 344] mov w1, 6145 movk w1, 0x18, lsl 16 - str w1, [x0,304] + str w1, [x0, 304] mov w0, 36864 bl ftl_malloc - str wzr, [x19,2448] - str x0, [x19,2400] - str x0, [x19,2408] + str wzr, [x19, 2448] + str x0, [x19, 2400] + str x0, [x19, 2408] add x0, x0, 32768 - str wzr, [x19,2456] - str x0, [x19,2416] - ldr x19, [sp,16] + str wzr, [x19, 2456] + str x0, [x19, 2416] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size NandcInit, .-NandcInit @@ -2115,20 +2081,20 @@ NandcInit: NandcGetTimeCfg: adrp x4, .LANCHOR0 add x4, x4, :lo12:.LANCHOR0 - ldr x5, [x4,136] - ldr w5, [x5,4] + ldr x5, [x4, 136] + ldr w5, [x5, 4] str w5, [x0] - ldr x0, [x4,136] + ldr x0, [x4, 136] ldr w0, [x0] str w0, [x1] - ldr x0, [x4,136] - ldr w0, [x0,304] + ldr x0, [x4, 136] + ldr w0, [x0, 304] str w0, [x2] - ldr x1, [x4,136] - ldr w0, [x1,308] - ldr w1, [x1,344] - and w0, w0, 255 - orr w0, w0, w1, lsl 16 + ldr x0, [x4, 136] + ldr w1, [x0, 308] + ldr w0, [x0, 344] + and w1, w1, 255 + orr w0, w1, w0, lsl 16 str w0, [x3] ret .size NandcGetTimeCfg, .-NandcGetTimeCfg @@ -2137,32 +2103,32 @@ NandcGetTimeCfg: .type NandcBchSel, %function NandcBchSel: adrp x1, .LANCHOR0 - uxtb w0, w0 add x1, x1, :lo12:.LANCHOR0 + and w0, w0, 255 mov w3, 1 cmp w0, 16 - ldr x2, [x1,136] - str w0, [x1,2460] + ldr x2, [x1, 136] + str w0, [x1, 2460] mov w1, 4096 - str w3, [x2,8] - bne .L268 -.L271: + str w3, [x2, 8] + bne .L299 +.L302: and w1, w1, -17 - b .L269 -.L268: - cmp w0, 24 - bne .L270 - orr w1, w1, 16 - b .L269 -.L270: - cmp w0, 40 - orr w1, w1, 262144 - orr w1, w1, 16 - beq .L271 -.L269: +.L300: orr w1, w1, 1 - str w1, [x2,12] + str w1, [x2, 12] ret +.L299: + cmp w0, 24 + bne .L301 + orr w1, w1, 16 + b .L300 +.L301: + orr w1, w1, 262144 + cmp w0, 40 + orr w1, w1, 16 + bne .L300 + b .L302 .size NandcBchSel, .-NandcBchSel .align 2 .global FlashBchSel @@ -2170,9 +2136,9 @@ NandcBchSel: FlashBchSel: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR0+2464 - uxtb w0, w0 + and w0, w0, 255 add x29, sp, 0 - strb w0, [x1,#:lo12:.LANCHOR0+2464] + strb w0, [x1, #:lo12:.LANCHOR0+2464] bl NandcBchSel ldp x29, x30, [sp], 16 ret @@ -2183,63 +2149,63 @@ FlashBchSel: ftl_flash_resume: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x21, [sp,32] add x0, x20, :lo12:.LANCHOR0 - mov x21, 0 + str x21, [sp, 32] add x19, x0, 2132 - ldr x1, [x0,136] - ldr w2, [x0,144] + mov x21, 0 + ldr x1, [x0, 136] + ldr w2, [x0, 144] str w2, [x1] - ldr w2, [x0,148] - ldr x1, [x0,136] - str w2, [x1,4] - ldr w2, [x0,152] - ldr x1, [x0,136] - str w2, [x1,8] - ldr w2, [x0,156] - str w2, [x1,12] - ldr w2, [x0,160] - str w2, [x1,304] - ldr w2, [x0,164] - str w2, [x1,308] - ldr w2, [x0,168] - str w2, [x1,336] - ldr w2, [x0,172] - str w2, [x1,344] -.L278: + ldr w2, [x0, 148] + ldr x1, [x0, 136] + str w2, [x1, 4] + ldr w2, [x0, 152] + ldr x1, [x0, 136] + str w2, [x1, 8] + ldr w2, [x0, 156] + str w2, [x1, 12] + ldr w2, [x0, 160] + str w2, [x1, 304] + ldr w2, [x0, 164] + str w2, [x1, 308] + ldr w2, [x0, 168] + str w2, [x1, 336] + ldr w2, [x0, 172] + str w2, [x1, 344] +.L310: lsl x0, x21, 3 - ldrb w0, [x0,x19] + ldrb w0, [x0, x19] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L277 + bhi .L309 mov w0, w21 bl FlashReset -.L277: +.L309: add x21, x21, 1 cmp x21, 4 - bne .L278 + bne .L310 add x19, x20, :lo12:.LANCHOR0 - ldrb w0, [x19,2380] - cbz w0, .L279 + ldrb w0, [x19, 2380] + cbz w0, .L311 mov w0, 1 bl NandcSetMode - ldrb w0, [x19,2357] + ldrb w0, [x19, 2357] bl FlashSetInterfaceMode - ldrb w0, [x19,2357] + ldrb w0, [x19, 2357] bl NandcSetMode - ldr w0, [x19,160] + ldr w0, [x19, 160] lsr w0, w0, 8 bl NandcSetDdrPara -.L279: +.L311: add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20,88] - ldrb w0, [x0,20] + ldr x0, [x20, 88] + ldrb w0, [x0, 20] bl FlashBchSel - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size ftl_flash_resume, .-ftl_flash_resume @@ -2247,19 +2213,19 @@ ftl_flash_resume: .global ftl_nandc_get_irq_status .type ftl_nandc_get_irq_status, %function ftl_nandc_get_irq_status: - ldr w0, [x0,372] + ldr w0, [x0, 372] ret .size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status .align 2 .global rk_nandc_flash_ready .type rk_nandc_flash_ready, %function rk_nandc_flash_ready: - ldr w1, [x0,368] + ldr w1, [x0, 368] orr w1, w1, 2 - str w1, [x0,368] - ldr w1, [x0,364] + str w1, [x0, 368] + ldr w1, [x0, 364] and w1, w1, -3 - str w1, [x0,364] + str w1, [x0, 364] ret .size rk_nandc_flash_ready, .-rk_nandc_flash_ready .align 2 @@ -2272,12 +2238,12 @@ NandcIqrWaitFlashReady: .global rk_nandc_flash_xfer_completed .type rk_nandc_flash_xfer_completed, %function rk_nandc_flash_xfer_completed: - ldr w1, [x0,368] + ldr w1, [x0, 368] orr w1, w1, 1 - str w1, [x0,368] - ldr w1, [x0,364] + str w1, [x0, 368] + ldr w1, [x0, 364] and w1, w1, -2 - str w1, [x0,364] + str w1, [x0, 364] ret .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed .align 2 @@ -2285,23 +2251,19 @@ rk_nandc_flash_xfer_completed: .type NandcSendDumpDataStart, %function NandcSendDumpDataStart: sub sp, sp, #16 - mov w2, 1 - mov w1, 10 - bfi w1, w2, 5, 2 - ldr w2, [x0,16] - str w2, [sp,8] - orr w1, w1, 536870912 - orr w1, w1, 1024 - ldr w2, [sp,8] - orr w1, w1, 2097152 + ldr w2, [x0, 16] + mov w1, 1066 + movk w1, 0x2020, lsl 16 + str w2, [sp, 8] + ldr w2, [sp, 8] and w2, w2, -5 - str w2, [sp,8] - ldr w2, [sp,8] - add sp, sp, 16 - str w2, [x0,16] - str w1, [x0,8] + str w2, [sp, 8] + ldr w2, [sp, 8] + str w2, [x0, 16] + str w1, [x0, 8] orr w1, w1, 4 - str w1, [x0,8] + str w1, [x0, 8] + add sp, sp, 16 ret .size NandcSendDumpDataStart, .-NandcSendDumpDataStart .align 2 @@ -2309,11 +2271,11 @@ NandcSendDumpDataStart: .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: sub sp, sp, #16 -.L290: - ldr w1, [x0,8] - str w1, [sp,8] - ldr w1, [sp,8] - tbz x1, 20, .L290 +.L324: + ldr w1, [x0, 8] + str w1, [sp, 8] + ldr w1, [sp, 8] + tbz x1, 20, .L324 add sp, sp, 16 ret .size NandcSendDumpDataDone, .-NandcSendDumpDataDone @@ -2325,144 +2287,142 @@ NandcXferStart: ubfiz x0, x0, 4, 8 ubfx x3, x3, 1, 7 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - uxtb w2, w2 - stp x23, x24, [sp,48] - uxtb w23, w1 + stp x23, x24, [sp, 48] + and w24, w1, 255 add x1, x19, :lo12:.LANCHOR0 - add x6, x1, 8 - ubfiz w20, w23, 1, 1 - stp x21, x22, [sp,32] - add x7, x6, x0 + stp x21, x22, [sp, 32] + str x25, [sp, 64] + add x6, x1, x0 + ubfiz w20, w24, 1, 1 + ldr x21, [x1, x0] orr w20, w20, 8 - ldr x21, [x6,x0] + ldrb w0, [x6, 8] mov w6, 16 - ldrb w0, [x7,8] - ldr w22, [x21,12] - bfi w22, w6, 8, 8 - and w22, w22, -9 - bfi w22, w0, 5, 3 + ldr w23, [x21, 12] + bfi w23, w6, 8, 8 + and w23, w23, -9 + bfi w23, w0, 5, 3 mov w0, 1 bfi w20, w0, 5, 2 - ldr w0, [x1,2388] + ldr w0, [x1, 2388] orr w20, w20, 536870912 - cmp w0, 3 orr w20, w20, 1024 + cmp w0, 3 bfi w20, w3, 4, 1 - bls .L294 - ldr w0, [x21,16] - cmp x5, xzr - str w0, [x29,88] - cset w9, ne - ldr w0, [x29,88] + bls .L329 + ldr w0, [x21, 16] + cmp x5, 0 + str w0, [x29, 88] + ccmp x4, 0, 0, eq + ldr w0, [x29, 88] and w0, w0, -5 - str w0, [x29,88] - cbnz w9, .L308 - cbz x4, .L295 -.L308: - cbnz w23, .L297 -.L305: + str w0, [x29, 88] + beq .L330 + and w2, w2, 255 + cbnz w24, .L331 +.L339: add w2, w2, 1 - mov x0, x4 asr w2, w2, 1 bfi w20, w2, 22, 6 - cbnz x4, .L299 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,2408] - b .L299 -.L297: - add x1, x19, :lo12:.LANCHOR0 - mov w7, 128 - mov w3, 0 - lsr w10, w2, 1 - mov w6, w3 - mov w11, -1 - ldr w0, [x1,2460] - cmp w0, 25 - mov w0, 64 - csel w7, w0, w7, cc -.L301: - cmp w6, w10 - bcs .L305 - lsr w0, w3, 2 - ubfiz x0, x0, 2, 30 - cbz w9, .L302 - ldrh w8, [x5,2] - ldr x12, [x1,2416] - ldrh w13, [x5],4 - orr w8, w13, w8, lsl 16 - str w8, [x12,x0] - b .L303 -.L302: - ldr x8, [x1,2416] - str w11, [x8,x0] -.L303: - add w6, w6, 1 - add w3, w3, w7 - b .L301 -.L299: + cbz x4, .L332 + mov x0, x4 +.L333: add x19, x19, :lo12:.LANCHOR0 - ubfx x24, x20, 22, 5 - mov w2, w23 - str x4, [x29,72] - ldr x1, [x19,2416] - str x1, [x19,2432] - lsl w1, w24, 10 - str x0, [x19,2424] + ubfx x25, x20, 22, 5 + mov x22, x4 + mov w2, w24 + ldr x1, [x19, 2416] + str x1, [x19, 2432] + lsl w1, w25, 10 + str x0, [x19, 2424] bl rknand_dma_map_single - str w0, [x19,2440] - ldr x0, [x19,2432] - lsl w1, w24, 7 - mov w2, w23 + str w0, [x19, 2440] + lsl w1, w25, 7 + ldr x0, [x19, 2432] + mov w2, w24 bl rknand_dma_map_single - str w0, [x19,2444] + str w0, [x19, 2444] mov w0, 1 - str w0, [x19,2448] - ldr w0, [x19,2440] + str w0, [x19, 2448] + ldr w0, [x19, 2440] mov w1, 16 - str w0, [x21,20] - ldr x4, [x29,72] - ldr w0, [x19,2444] - str w0, [x21,24] - and x4, x4, 3 - str wzr, [x29,88] - ldr w0, [x29,88] + str w0, [x21, 20] + tst x22, 3 + ldr w0, [x19, 2444] + str w0, [x21, 24] + str wzr, [x29, 88] + ldr w0, [x29, 88] bfi w0, w1, 9, 5 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] orr w0, w0, 448 - str w0, [x29,88] - cbnz x4, .L306 - ldr w0, [x29,88] + str w0, [x29, 88] + bne .L340 + ldr w0, [x29, 88] mov w1, 2 bfi w0, w1, 3, 3 - str w0, [x29,88] -.L306: - ldr w0, [x29,88] - cmp w23, wzr + str w0, [x29, 88] +.L340: + ldr w0, [x29, 88] + cmp w24, 0 cset w1, eq orr w0, w0, 4 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] bfi w0, w1, 1, 1 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] orr w0, w0, 1 - str w0, [x29,88] -.L295: - ldr w0, [x29,88] - str w0, [x21,16] -.L294: - str w22, [x21,12] - str w20, [x21,8] + str w0, [x29, 88] +.L330: + ldr w0, [x29, 88] + str w0, [x21, 16] +.L329: + str w23, [x21, 12] + str w20, [x21, 8] orr w20, w20, 4 - str w20, [x21,8] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + str w20, [x21, 8] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] ldp x29, x30, [sp], 96 ret +.L331: + ldr w0, [x1, 2460] + mov w6, 64 + lsr w9, w2, 1 + mov x8, x5 + cmp w0, 25 + mov w0, 128 + csel w6, w6, w0, cc + mov w7, 0 + mov w3, 0 + mov w10, -1 +.L335: + cmp w3, w9 + bcs .L339 + lsr w0, w7, 2 + cbz x5, .L336 + ldr x11, [x1, 2416] + lsl w0, w0, 2 + ldr w12, [x8], 4 + str w12, [x11, x0] +.L337: + add w3, w3, 1 + add w7, w7, w6 + b .L335 +.L336: + ldr x11, [x1, 2416] + lsl w0, w0, 2 + str w10, [x11, x0] + b .L337 +.L332: + add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0, 2408] + b .L333 .size NandcXferStart, .-NandcXferStart .align 2 .global Ftl_log2 @@ -2470,16 +2430,16 @@ NandcXferStart: Ftl_log2: mov w2, 1 mov w1, 0 -.L313: +.L347: cmp w2, w0 - bhi .L315 - add w1, w1, 1 - lsl w2, w2, 1 - uxth w1, w1 - b .L313 -.L315: + bls .L348 sub w0, w1, #1 ret +.L348: + add w1, w1, 1 + lsl w2, w2, 1 + and w1, w1, 65535 + b .L347 .size Ftl_log2, .-Ftl_log2 .align 2 .global FtlPrintInfo @@ -2491,272 +2451,267 @@ FtlPrintInfo: .global FtlSysBlkNumInit .type FtlSysBlkNumInit, %function FtlSysBlkNumInit: - uxth w0, w0 + and w0, w0, 65535 mov w1, 24 - cmp w0, 23 - csel w0, w0, w1, hi + cmp w0, 24 + csel w0, w0, w1, cs adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrh w2, [x1,2472] - ldrh w3, [x1,2482] - str w0, [x1,2468] - mul w2, w0, w2 + and w0, w0, 65535 + ldrh w2, [x1, 2472] + ldrh w3, [x1, 2482] + str w0, [x1, 2468] + mul w2, w2, w0 sub w0, w3, w0 - strh w0, [x1,2480] - ldr w0, [x1,2488] - str w2, [x1,2476] + strh w0, [x1, 2480] + ldr w0, [x1, 2488] + str w2, [x1, 2476] sub w2, w0, w2 mov w0, 0 - str w2, [x1,2484] + str w2, [x1, 2484] ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 .global FtlConstantsInit .type FtlConstantsInit, %function FtlConstantsInit: - stp x29, x30, [sp, -96]! - mov x3, 0 + mov x7, x0 + stp x29, x30, [sp, -16]! + adrp x5, .LANCHOR0 + add x1, x5, :lo12:.LANCHOR0 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] - add x1, x20, :lo12:.LANCHOR0 - ldrh w4, [x23,14] - ldrh w6, [x0,8] - ldrh w2, [x0,10] - ldrh w0, [x0,12] - strh w6, [x1,2492] - strh w2, [x1,2494] - strh w0, [x1,2496] - strh w4, [x1,2482] -.L320: - add x5, x1, 2504 - strb w3, [x3,x5] + ldrh w9, [x0, 8] + add x1, x1, 2504 + ldrh w2, [x0, 10] + mov x3, 0 + ldrh w0, [x0, 12] + ldrh w4, [x7, 14] + strh w9, [x1, -12] + strh w2, [x1, -10] + strh w0, [x1, -8] + strh w4, [x1, -22] +.L352: + strb w3, [x3, x1] add x3, x3, 1 cmp x3, 32 - bne .L320 - ldrh w3, [x23,20] - ldrb w1, [x23,15] + bne .L352 + ldrh w3, [x7, 20] + ldrb w1, [x7, 15] cmp w3, w1 - bcs .L321 - uxtb w8, w0 + bcs .L353 + and w11, w0, 255 + add x8, x5, :lo12:.LANCHOR0 + mul w13, w0, w2 + ubfiz w12, w11, 1, 7 + add x8, x8, 2504 mov w3, 0 - mul w11, w0, w2 - ubfiz w10, w8, 1, 7 - add x12, x20, :lo12:.LANCHOR0 -.L322: +.L354: cmp w3, w0 - bcs .L324 - uxtb w1, w3 - mov w5, w3 - mov w7, 0 -.L325: - cmp w7, w2 - bcs .L347 - add x9, x12, 2504 - add w13, w5, w11 - add w14, w1, w8 - add w7, w7, 1 - strb w1, [x9,w5,uxtw] - add w1, w1, w10 - strb w14, [x9,x13] - add w5, w5, w0 - uxtb w1, w1 - b .L325 -.L347: + bcs .L356 + and w1, w3, 255 + mov w6, w3 + mov w10, 0 + b .L357 +.L355: + add w14, w13, w6 + strb w1, [x8, w6, uxtw] + add w15, w11, w1 + add w1, w12, w1 + add w10, w10, 1 + and w1, w1, 255 + add w6, w6, w0 + strb w15, [x8, x14] +.L357: + cmp w10, w2 + bcc .L355 add w3, w3, 1 - b .L322 -.L324: - add x1, x20, :lo12:.LANCHOR0 - lsl w2, w2, 1 + b .L354 +.L356: + add x1, x5, :lo12:.LANCHOR0 + ubfiz w2, w2, 1, 15 lsr w4, w4, 1 - strh w2, [x1,2494] - strh w4, [x1,2482] -.L321: - add x1, x20, :lo12:.LANCHOR0 + strh w2, [x1, 2494] + strh w4, [x1, 2482] +.L353: + add x1, x5, :lo12:.LANCHOR0 mov w2, 5 - cmp w6, 1 - strh w2, [x1,2536] - strh wzr, [x1,2538] - bne .L326 - strh w6, [x1,2536] -.L326: - add x1, x20, :lo12:.LANCHOR0 + cmp w9, 1 + strh w2, [x1, 2536] + strh wzr, [x1, 2538] + bne .L358 + strh w9, [x1, 2536] +.L358: + add x1, x5, :lo12:.LANCHOR0 mov w2, 4352 - ldrb w26, [x1,72] - strh w2, [x1,2540] - cbz w26, .L327 + ldrb w11, [x1, 72] + strh w2, [x1, 2540] + cbz w11, .L359 mov w2, 384 - strh w2, [x1,2540] -.L327: - add x21, x20, :lo12:.LANCHOR0 - ldrh w25, [x23,16] - ldrh w24, [x23,20] - ldrh w27, [x23,18] - ldrh w22, [x21,2494] - ldrh w19, [x21,2482] - strh w25, [x21,2544] - mul w22, w0, w22 - mul w0, w19, w0 - strh w0, [x21,2542] - uxth w22, w22 - strh w27, [x21,2546] - strh w22, [x21,2472] - mul w0, w22, w25 - strh w0, [x21,2548] - mov w0, w24 - strh w24, [x21,2550] + strh w2, [x1, 2540] +.L359: + add x4, x5, :lo12:.LANCHOR0 + ldrh w10, [x7, 16] + ldrh w8, [x7, 20] + ldrh w9, [x7, 18] + ldrh w6, [x4, 2494] + ldrh w3, [x4, 2482] + strh w10, [x4, 2544] + strh w9, [x4, 2546] + mul w6, w0, w6 + strh w8, [x4, 2550] + mul w0, w0, w3 + and w6, w6, 65535 + strh w0, [x4, 2542] + strh w6, [x4, 2472] + mul w0, w6, w10 + strh w0, [x4, 2548] + mov w0, w8 bl Ftl_log2 - uxth w3, w0 - lsl w2, w24, 9 - strh w0, [x21,2552] - ldrh w0, [x23,26] - cmp w19, 1024 - strh w2, [x21,2554] - ubfx x2, x2, 9, 7 - strh w0, [x21,2558] - lsl w2, w2, 1 - mul w0, w22, w19 - strh w2, [x21,2556] - str w0, [x21,2488] - bls .L328 - and w0, w19, 255 - strh w0, [x21,2538] -.L328: - add x2, x20, :lo12:.LANCHOR0 - mul w0, w24, w27 - ldrh w1, [x2,2538] - sub w1, w19, w1 - mul w1, w22, w1 - mul w1, w1, w24 - mul w1, w1, w25 - asr w1, w1, 11 - str w1, [x2,2560] - ldrh w1, [x2,2540] - lsl w1, w1, 3 - sdiv w0, w1, w0 - uxth w0, w0 + and w2, w0, 65535 + strh w0, [x4, 2552] + ubfiz w0, w8, 9, 7 + strh w0, [x4, 2554] + ubfx w0, w0, 8, 8 + strh w0, [x4, 2556] + cmp w3, 1024 + ldrh w0, [x7, 26] + strh w0, [x4, 2558] + mul w0, w6, w3 + str w0, [x4, 2488] + bls .L360 + and w0, w3, 255 + strh w0, [x4, 2538] +.L360: + add x1, x5, :lo12:.LANCHOR0 + ldrh w0, [x1, 2538] + sub w0, w3, w0 + mul w0, w0, w6 + mul w0, w0, w8 + mul w8, w9, w8 + mul w0, w0, w10 + asr w0, w0, 11 + str w0, [x1, 2560] + ldrh w0, [x1, 2540] + lsl w0, w0, 3 + sdiv w0, w0, w8 + and w0, w0, 65535 cmp w0, 4 - bhi .L344 - mov w0, 4 -.L344: - strh w0, [x2,2564] - cbz w26, .L331 - add x0, x20, :lo12:.LANCHOR0 + bls .L361 +.L377: + strh w0, [x1, 2564] + cbz w11, .L363 + add x0, x5, :lo12:.LANCHOR0 mov w1, 640 - strh w1, [x0,2540] -.L331: - add x1, x20, :lo12:.LANCHOR0 - lsl w19, w19, 6 - cmp w22, 1 - ldrh w0, [x1,2540] - asr w0, w0, w3 - add w3, w3, 9 - asr w19, w19, w3 - strh w19, [x1,2568] - and w19, w19, 65535 + strh w1, [x0, 2540] +.L363: + add x1, x5, :lo12:.LANCHOR0 + lsl w3, w3, 6 + cmp w6, 1 + ldrh w0, [x1, 2540] + asr w0, w0, w2 + add w2, w2, 9 add w0, w0, 2 - strh w0, [x1,2566] - mul w0, w19, w22 - str w0, [x1,2572] - add w19, w19, 8 - ldrh w0, [x1,2564] - udiv w0, w0, w22 - add w19, w19, w0 - bne .L345 - add w19, w19, 4 -.L345: - str w19, [x1,2468] - add x19, x20, :lo12:.LANCHOR0 - ldrh w0, [x19,2468] + strh w0, [x1, 2566] + asr w3, w3, w2 + strh w3, [x1, 2568] + and w3, w3, 65535 + mul w0, w6, w3 + add w3, w3, 8 + str w0, [x1, 2572] + ldrh w0, [x1, 2564] + udiv w0, w0, w6 + add w3, w0, w3 + beq .L364 +.L378: + add x4, x5, :lo12:.LANCHOR0 + str w3, [x1, 2468] + ldrh w0, [x4, 2468] bl FtlSysBlkNumInit - str wzr, [x19,2584] - ldr w0, [x19,2468] - str w0, [x19,2576] - ldr w0, [x19,2484] - ldrh w1, [x19,2544] + ldr w0, [x4, 2468] + str w0, [x4, 2576] + ldr w0, [x4, 2484] + ldrh w1, [x4, 2544] + ldrh w3, [x4, 2550] lsl w0, w0, 2 - ldrh w3, [x19,2550] - ldrh w2, [x19,2564] - mul w1, w0, w1 - ldrh w0, [x19,2552] - ldrb w5, [x19,204] - add w0, w0, 9 - lsr w0, w1, w0 + ldrh w2, [x4, 2564] + ldrb w7, [x4, 204] + str wzr, [x4, 2584] + mul w0, w0, w1 + ldrh w1, [x4, 2552] + add w1, w1, 9 + lsr w0, w0, w1 mov w1, 2048 add w0, w0, 2 sdiv w1, w1, w3 - strh w1, [x19,2582] - uxth w0, w0 - strh w0, [x19,2580] + and w0, w0, 65535 + strh w0, [x4, 2580] + strh w1, [x4, 2582] add w1, w2, 3 - strh w1, [x19,2564] - ldr w1, [x19,2572] - add w4, w1, 3 - str w4, [x19,2572] - cbz w5, .L334 - add w2, w2, 4 + strh w1, [x4, 2564] + ldr w1, [x4, 2572] + add w6, w1, 3 + str w6, [x4, 2572] + cbz w7, .L366 add w1, w1, 5 - strh w2, [x19,2564] - b .L346 -.L334: - cmp w4, 7 - bhi .L335 - mov w1, 8 -.L346: - str w1, [x19,2572] -.L335: - add x20, x20, :lo12:.LANCHOR0 - ldrh w1, [x20,2480] - strh wzr, [x20,2588] - lsr w2, w1, 3 - add w1, w2, w1, lsl 1 - add w1, w1, 52 - add w0, w1, w0, lsl 2 + add w2, w2, 4 + strh w2, [x4, 2564] +.L379: + str w1, [x4, 2572] +.L367: + add x5, x5, :lo12:.LANCHOR0 + ldrh w1, [x5, 2480] + strh wzr, [x5, 2588] + lsl w2, w1, 1 + lsr w1, w1, 3 + add w2, w2, 48 + add w1, w1, 4 + add w0, w2, w0, lsl 2 + add w0, w0, w1 cmp w0, w3, lsl 9 - bcs .L336 + bcs .L368 mov w0, 1 - strh w0, [x20,2588] -.L336: + strh w0, [x5, 2588] +.L368: mov w0, 0 - 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 + ldp x29, x30, [sp], 16 ret +.L361: + mov w0, 4 + b .L377 +.L364: + add w3, w3, 4 + b .L378 +.L366: + cmp w6, 7 + bhi .L367 + mov w1, 8 + b .L379 .size FtlConstantsInit, .-FtlConstantsInit .align 2 .global IsBlkInVendorPart .type IsBlkInVendorPart, %function IsBlkInVendorPart: adrp x1, .LANCHOR0 - uxth w4, w0 add x1, x1, :lo12:.LANCHOR0 - mov w0, 0 - ldrh w2, [x1,2590] - cbz w2, .L349 - ldrh w2, [x1,2564] - ldr x3, [x1,2592] + and w0, w0, 65535 + ldrh w2, [x1, 2590] + cbz w2, .L384 + ldrh w2, [x1, 2564] + ldr x3, [x1, 2592] mov x1, 0 -.L350: +.L382: cmp w2, w1, uxth - bls .L355 - add x1, x1, 1 - add x0, x3, x1, lsl 1 - ldrh w0, [x0,-2] - cmp w0, w4 - bne .L350 - mov w0, 1 - b .L349 -.L355: + bhi .L383 +.L384: mov w0, 0 -.L349: + ret +.L383: + add x1, x1, 1 + add x4, x3, x1, lsl 1 + ldrh w4, [x4, -2] + cmp w4, w0 + bne .L382 + mov w0, 1 ret .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 @@ -2764,29 +2719,33 @@ IsBlkInVendorPart: .type FtlCacheMetchLpa, %function FtlCacheMetchLpa: adrp x2, .LANCHOR0 - mov w6, w0 add x2, x2, :lo12:.LANCHOR0 + ldr w4, [x2, 2600] + cbz w4, .L391 + mov x5, 24 + mov w6, 56 + ldr x2, [x2, 2608] + nop // between mem op and mult-accumulate + umaddl x4, w4, w6, x5 + add x3, x2, 24 + add x2, x2, x4 +.L388: + cmp x3, x2 + bne .L390 +.L391: mov w0, 0 - ldr w3, [x2,2600] - cbz w3, .L357 - ldr x5, [x2,2608] - mov x0, 56 - mov x2, 0 -.L358: - cmp w3, w2 - bls .L367 - madd x4, x2, x0, x5 - add x2, x2, 1 - ldr w4, [x4,24] - cmp w4, w6 - bcc .L358 + ret +.L390: + ldr w4, [x3] + cmp w4, w0 + bcc .L389 cmp w4, w1 - bhi .L358 + bls .L392 +.L389: + add x3, x3, 56 + b .L388 +.L392: mov w0, 1 - b .L357 -.L367: - mov w0, 0 -.L357: ret .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 2 @@ -2794,7 +2753,7 @@ FtlCacheMetchLpa: .type FtlGetCap, %function FtlGetCap: adrp x0, .LANCHOR0+2584 - ldr w0, [x0,#:lo12:.LANCHOR0+2584] + ldr w0, [x0, #:lo12:.LANCHOR0+2584] ret .size FtlGetCap, .-FtlGetCap .align 2 @@ -2802,7 +2761,7 @@ FtlGetCap: .type FtlGetCapacity, %function FtlGetCapacity: adrp x0, .LANCHOR0+2584 - ldr w0, [x0,#:lo12:.LANCHOR0+2584] + ldr w0, [x0, #:lo12:.LANCHOR0+2584] ret .size FtlGetCapacity, .-FtlGetCapacity .align 2 @@ -2810,7 +2769,7 @@ FtlGetCapacity: .type ftl_get_density, %function ftl_get_density: adrp x0, .LANCHOR0+2584 - ldr w0, [x0,#:lo12:.LANCHOR0+2584] + ldr w0, [x0, #:lo12:.LANCHOR0+2584] ret .size ftl_get_density, .-ftl_get_density .align 2 @@ -2818,7 +2777,7 @@ ftl_get_density: .type FtlGetLpn, %function FtlGetLpn: adrp x0, .LANCHOR0+2616 - ldr w0, [x0,#:lo12:.LANCHOR0+2616] + ldr w0, [x0, #:lo12:.LANCHOR0+2616] ret .size FtlGetLpn, .-FtlGetLpn .align 2 @@ -2826,33 +2785,34 @@ FtlGetLpn: .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: stp x29, x30, [sp, -32]! - uxth w1, w0 + and w1, w0, 65535 mov w4, 1 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 add x19, x19, 2624 - ldrh w3, [x19,-82] - udiv w2, w1, w3 + ldrh w0, [x19, -82] + udiv w3, w1, w0 + and w2, w3, 65535 + msub w3, w3, w0, w1 add x0, x19, w2, uxth 3 - ldr x0, [x0,32] - msub w3, w2, w3, w1 - uxth w3, w3 - ubfx x6, x3, 5, 11 + and w3, w3, 65535 + ldr x0, [x0, 32] + ubfx x5, x3, 5, 11 + lsl x5, x5, 2 lsl w4, w4, w3 - lsl x6, x6, 2 - ldr w5, [x0,x6] - orr w4, w4, w5 - str w4, [x0,x6] + ldr w6, [x0, x5] + orr w4, w4, w6 + str w4, [x0, x5] adrp x0, .LC1 add x0, x0, :lo12:.LC1 bl printk - ldrh w0, [x19,6] + ldrh w0, [x19, 6] add w0, w0, 1 - strh w0, [x19,6] + strh w0, [x19, 6] mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock @@ -2861,16 +2821,16 @@ FtlBbmMapBadBlock: .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: adrp x2, .LANCHOR0 - uxth w0, w0 add x3, x2, :lo12:.LANCHOR0 - ldrh w1, [x3,2542] + and w0, w0, 65535 + ldrh w1, [x3, 2542] udiv w2, w0, w1 msub w0, w2, w1, w0 add x2, x3, w2, uxth 3 - ldr x1, [x2,2656] - uxth w0, w0 + and w0, w0, 65535 + ldr x1, [x2, 2656] ubfx x3, x0, 5, 11 - ldr w1, [x1,x3,lsl 2] + ldr w1, [x1, x3, lsl 2] lsr w0, w1, w0 and w0, w0, 1 ret @@ -2885,50 +2845,49 @@ FtlBbtInfoPrint: .global FtlBbtCalcTotleCnt .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: - stp x29, x30, [sp, -48]! adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 + mov w4, 0 + mov w5, 0 + ldrh w6, [x0, 2542] + ldrh w0, [x0, 2494] + mul w6, w6, w0 + cmp w4, w6 + blt .L411 + mov w0, w5 + ret +.L411: + stp x29, x30, [sp, -16]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov w19, 0 - mov w20, w19 - ldrh w1, [x0,2542] - ldrh w21, [x0,2494] - mul w21, w1, w21 -.L376: - cmp w20, w21 - bge .L382 - mov w0, w20 +.L404: + mov w0, w4 bl FtlBbmIsBadBlock - cbz w0, .L377 - add w19, w19, 1 - uxth w19, w19 -.L377: - add w20, w20, 1 - uxth w20, w20 - b .L376 -.L382: - mov w0, w19 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + cbz w0, .L403 + add w5, w5, 1 + and w5, w5, 65535 +.L403: + add w4, w4, 1 + and w4, w4, 65535 + cmp w4, w6 + blt .L404 + mov w0, w5 + ldp x29, x30, [sp], 16 ret .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 2 .global V2P_block .type V2P_block, %function V2P_block: - adrp x3, .LANCHOR0 - uxth w0, w0 - add x3, x3, :lo12:.LANCHOR0 - uxth w1, w1 - ldrh w4, [x3,2496] - udiv w2, w0, w4 - msub w0, w2, w4, w0 - madd w0, w1, w4, w0 - ldrh w1, [x3,2542] - madd w0, w2, w1, w0 + adrp x4, .LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 + and w0, w0, 65535 + and w1, w1, 65535 + ldrh w2, [x4, 2496] + ldrh w4, [x4, 2542] + udiv w3, w0, w2 + msub w0, w3, w2, w0 + madd w2, w2, w1, w0 + madd w0, w3, w4, w2 ret .size V2P_block, .-V2P_block .align 2 @@ -2936,28 +2895,28 @@ V2P_block: .type P2V_plane, %function P2V_plane: adrp x2, .LANCHOR0 - uxth w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrh w1, [x2,2496] - ldrh w3, [x2,2542] - udiv w2, w0, w1 - udiv w3, w0, w3 - msub w0, w2, w1, w0 - madd w0, w1, w3, w0 + and w3, w0, 65535 + ldrh w1, [x2, 2496] + ldrh w2, [x2, 2542] + udiv w0, w3, w1 + udiv w2, w3, w2 + msub w0, w0, w1, w3 + madd w0, w1, w2, w0 ret .size P2V_plane, .-P2V_plane .align 2 .global P2V_block_in_plane .type P2V_block_in_plane, %function P2V_block_in_plane: - adrp x2, .LANCHOR0 - uxth w0, w0 - add x2, x2, :lo12:.LANCHOR0 - ldrh w3, [x2,2542] - udiv w1, w0, w3 - msub w0, w1, w3, w0 - ldrh w1, [x2,2496] - uxth w0, w0 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + and w3, w0, 65535 + ldrh w2, [x1, 2542] + ldrh w1, [x1, 2496] + udiv w0, w3, w2 + msub w0, w0, w2, w3 + and w0, w0, 65535 udiv w0, w0, w1 ret .size P2V_block_in_plane, .-P2V_block_in_plane @@ -2967,16 +2926,15 @@ P2V_block_in_plane: ftl_cmp_data_ver: cmp w0, w1 mov w2, -2147483648 - bls .L387 + bls .L416 sub w1, w0, w1 cmp w1, w2 cset w0, ls - b .L388 -.L387: + ret +.L416: sub w1, w1, w0 cmp w1, w2 cset w0, hi -.L388: ret .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 @@ -2984,8 +2942,8 @@ ftl_cmp_data_ver: .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: adrp x0, .LANCHOR0+2726 - ldrh w0, [x0,#:lo12:.LANCHOR0+2726] - cmp w0, wzr + ldrh w0, [x0, #:lo12:.LANCHOR0+2726] + cmp w0, 0 cset w0, eq ret .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty @@ -2994,7 +2952,7 @@ FtlFreeSysBlkQueueEmpty: .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: adrp x0, .LANCHOR0+2726 - ldrh w0, [x0,#:lo12:.LANCHOR0+2726] + ldrh w0, [x0, #:lo12:.LANCHOR0+2726] cmp w0, 1024 cset w0, eq ret @@ -3004,59 +2962,59 @@ FtlFreeSysBlkQueueFull: .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: stp x29, x30, [sp, -48]! - uxth w1, w1 add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - uxth w21, w0 - mov w0, 65533 + stp x21, x22, [sp, 32] + and w21, w0, 65535 + stp x19, x20, [sp, 16] sub w2, w21, #1 + mov w0, 65533 cmp w0, w2, uxth - bcc .L391 - adrp x2, .LANCHOR0 - add x0, x2, :lo12:.LANCHOR0 - mov x19, x2 - ldrh w0, [x0,2726] - cmp w0, 1024 - beq .L391 - cbz w1, .L393 + bcc .L420 + adrp x0, .LANCHOR0 + add x2, x0, :lo12:.LANCHOR0 + mov x19, x0 + ldrh w2, [x2, 2726] + cmp w2, 1024 + beq .L420 + and w1, w1, 65535 + cbz w1, .L422 adrp x20, .LANCHOR2 add x20, x20, :lo12:.LANCHOR2 - ldr w0, [x20,424] - cbnz w0, .L393 + ldr w0, [x20, 424] + cbnz w0, .L422 mov w0, w21 bl P2V_block_in_plane - uxth w22, w0 - ldr x0, [x20,432] + and w22, w0, 65535 + ldr x0, [x20, 432] lsl w1, w21, 10 - str w1, [x0,4] - mov w1, 1 - mov w2, w1 - ldr x0, [x20,432] + mov w2, 1 + str w1, [x0, 4] + mov w1, w2 + ldr x0, [x20, 432] bl FlashEraseBlocks + ldr x2, [x20, 440] ubfiz x0, x22, 1, 16 - ldr x2, [x20,440] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] add w1, w1, 1 - strh w1, [x2,x0] - ldr w0, [x20,448] + strh w1, [x2, x0] + ldr w0, [x20, 448] add w0, w0, 1 - str w0, [x20,448] -.L393: - add x1, x19, :lo12:.LANCHOR0 - add x1, x1, 2720 - ldrh w0, [x1,6] - ldrh w2, [x1,4] - add w0, w0, 1 - strh w0, [x1,6] - add x0, x1, w2, sxtw 1 - add w2, w2, 1 - and w2, w2, 1023 - strh w21, [x0,8] - strh w2, [x1,4] -.L391: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + str w0, [x20, 448] +.L422: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 2720 + ldrh w1, [x0, 6] + add w1, w1, 1 + strh w1, [x0, 6] + ldrh w1, [x0, 4] + add x2, x0, w1, sxtw 1 + add w1, w1, 1 + and w1, w1, 1023 + strh w1, [x0, 4] + strh w21, [x2, 8] +.L420: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn @@ -3064,123 +3022,119 @@ FtlFreeSysBlkQueueIn: .global FtlFreeSysBLkSort .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: - adrp x0, .LANCHOR2+484 - ldrh w6, [x0,#:lo12:.LANCHOR2+484] adrp x0, .LANCHOR0 add x1, x0, :lo12:.LANCHOR0 add x1, x1, 2720 - ldrh w2, [x1,6] - cbz w2, .L400 - mov w5, 0 - ldrh w3, [x1,2] - ldrh w2, [x1,4] - mov w4, w5 - and w6, w6, 31 -.L402: - cmp w4, w6 - bge .L410 - add x5, x1, w3, sxtw 1 - ldrh w7, [x5,8] - add x5, x1, w2, sxtw 1 - add w4, w4, 1 - strh w7, [x5,8] - mov w5, 1 - add w3, w3, 1 - add w2, w2, w5 - uxth w4, w4 - and w3, w3, 1023 - and w2, w2, 1023 - b .L402 -.L410: - cbz w5, .L400 + ldrh w2, [x1, 6] + cbz w2, .L430 + adrp x2, .LANCHOR2+484 + ldrh w3, [x1, 2] + mov w6, 0 + mov w4, 0 + ldrh w5, [x2, #:lo12:.LANCHOR2+484] + ldrh w2, [x1, 4] + and w5, w5, 31 +.L432: + cmp w5, w4 + bgt .L433 + cbz w6, .L430 add x0, x0, :lo12:.LANCHOR0 - strh w3, [x0,2722] - strh w2, [x0,2724] -.L400: + strh w3, [x0, 2722] + strh w2, [x0, 2724] +.L430: ret +.L433: + add x6, x1, w3, sxtw 1 + add w4, w4, 1 + add w3, w3, 1 + and w4, w4, 65535 + and w3, w3, 1023 + ldrh w7, [x6, 8] + add x6, x1, w2, sxtw 1 + strh w7, [x6, 8] + mov w6, 1 + add w2, w2, w6 + and w2, w2, 1023 + b .L432 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 .global FtlFreeSysBlkQueueOut .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - stp x23, x24, [sp,48] add x21, x21, :lo12:.LANCHOR0 - adrp x23, .LC3 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - add x22, x21, 2720 - add x23, x23, :lo12:.LC3 - mov x24, x21 -.L412: - ldrh w1, [x22,6] - cbz w1, .L413 + stp x19, x20, [sp, 16] + add x20, x21, 2720 + stp x23, x24, [sp, 48] + mov x22, x20 +.L440: + ldrh w1, [x20, 6] + cbz w1, .L441 + ldrh w0, [x20, 2] adrp x19, .LANCHOR2 - ldrh w2, [x22,2] - add x25, x19, :lo12:.LANCHOR2 + add x4, x19, :lo12:.LANCHOR2 sub w1, w1, #1 - add x0, x22, w2, sxtw 1 - strh w1, [x22,6] - add w2, w2, 1 - ldrh w20, [x0,8] - ldr w1, [x25,424] - and w2, w2, 1023 - strh w2, [x22,2] - cbnz w1, .L414 - mov w0, w20 - str x1, [x29,88] - bl P2V_block_in_plane - uxth w26, w0 - ldr x0, [x25,432] - lsl w2, w20, 10 - ldr x1, [x29,88] - str w2, [x0,4] - ldrb w0, [x21,204] - cbz w0, .L415 - ldr x0, [x25,432] - mov w2, 1 - bl FlashEraseBlocks -.L415: - add x19, x19, :lo12:.LANCHOR2 - mov w1, 1 - mov w2, w1 - ldr x0, [x19,432] - bl FlashEraseBlocks - ubfiz x0, x26, 1, 16 - ldr x2, [x19,440] - ldrh w1, [x2,x0] - add w1, w1, 1 - strh w1, [x2,x0] - ldr w0, [x19,448] + strh w1, [x20, 6] + add x2, x20, w0, sxtw 1 add w0, w0, 1 - str w0, [x19,448] - b .L414 -.L413: - adrp x0, .LC2 - add x0, x0, :lo12:.LC2 - bl printk -.L416: - b .L416 -.L414: - sub w0, w20, #1 + and w0, w0, 1023 + strh w0, [x20, 2] + ldr w0, [x4, 424] + ldrh w23, [x2, 8] + cbnz w0, .L442 + mov w0, w23 + bl P2V_block_in_plane + and w24, w0, 65535 + ldr x0, [x4, 432] + lsl w1, w23, 10 + str w1, [x0, 4] + ldrb w0, [x21, 204] + cbz w0, .L443 + ldr x0, [x4, 432] + mov w2, 1 + mov w1, 0 + bl FlashEraseBlocks +.L443: + add x19, x19, :lo12:.LANCHOR2 + mov w2, 1 + mov w1, w2 + ldr x0, [x19, 432] + bl FlashEraseBlocks + ldr x2, [x19, 440] + ubfiz x0, x24, 1, 16 + ldrh w1, [x2, x0] + add w1, w1, 1 + strh w1, [x2, x0] + ldr w0, [x19, 448] + add w0, w0, 1 + str w0, [x19, 448] +.L442: + sub w0, w23, #1 mov w1, 65533 cmp w1, w0, uxth - bcs .L417 - ldrh w2, [x24,2726] - mov x0, x23 - mov w1, w20 + bcs .L445 + ldrh w2, [x22, 6] + mov w1, w23 + adrp x0, .LC3 + add x0, x0, :lo12:.LC3 bl printk - b .L412 -.L417: - mov w0, w20 - 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 + b .L440 +.L441: + adrp x0, .LC2 + mov w1, 0 + add x0, x0, :lo12:.LC2 + bl printk +.L444: + b .L444 +.L445: + mov w0, w23 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 @@ -3190,29 +3144,28 @@ test_node_in_list: ldr x2, [x0] adrp x0, .LANCHOR2+504 mov x4, -6148914691236517206 - uxth w1, w1 + and w1, w1, 65535 + ldr x3, [x0, #:lo12:.LANCHOR2+504] + movk x4, 0xaaab, lsl 0 mov w5, 65535 - ldr x3, [x0,#:lo12:.LANCHOR2+504] sub x0, x2, x3 asr x0, x0, 1 - madd x0, x4, x0, x0 + mul x0, x0, x4 mov w4, 6 - uxth w0, w0 -.L423: - cmp w1, w0 - beq .L424 + and w0, w0, 65535 +.L452: + cmp w0, w1 + beq .L453 ldrh w0, [x2] cmp w0, w5 - beq .L425 - umull x2, w0, w4 - add x2, x3, x2 - b .L423 -.L424: + beq .L454 + umaddl x2, w0, w4, x3 + b .L452 +.L453: mov w0, 1 - b .L422 -.L425: + ret +.L454: mov w0, 0 -.L422: ret .size test_node_in_list, .-test_node_in_list .align 2 @@ -3220,102 +3173,107 @@ test_node_in_list: .type insert_data_list, %function insert_data_list: adrp x9, .LANCHOR0 - uxth w0, w0 add x9, x9, :lo12:.LANCHOR0 - ldrh w1, [x9,2480] + and w0, w0, 65535 + ldrh w1, [x9, 2480] cmp w1, w0 - bls .L428 + bls .L471 adrp x2, .LANCHOR2 - mov w7, 6 - add x5, x2, :lo12:.LANCHOR2 + add x4, x2, :lo12:.LANCHOR2 + mov w5, 6 mov w1, -1 - umull x10, w0, w7 mov x3, x2 - ldr x11, [x5,504] - add x4, x11, x10 - strh w1, [x4,2] - strh w1, [x11,x10] - ldr x1, [x5,512] - cbnz x1, .L429 - str x4, [x5,512] - b .L428 -.L429: - ubfiz x8, x0, 1, 16 - ldr x13, [x5,520] - ldrh w2, [x4,4] - mov x14, -6148914691236517206 - ldr x12, [x5,504] - mov w18, 65535 - ldrh w6, [x13,x8] - cmp w2, wzr - ldrh w17, [x9,2480] - mul w6, w6, w2 - sub x2, x1, x12 - asr x2, x2, 1 - csinv w6, w6, wzr, ne - madd x2, x14, x2, x2 - ldr x14, [x5,440] - mov w5, 0 - add x9, x14, x8 - uxth w2, w2 - mov w8, w7 -.L437: - add w5, w5, 1 - cmp w0, w2 - uxth w5, w5 - beq .L428 - cmp w5, w17 - bhi .L428 - ubfiz x15, x2, 1, 16 - ldrh w16, [x1,4] - cmp w16, wzr - ldrh w7, [x13,x15] - mul w7, w7, w16 - csinv w7, w7, wzr, ne - cmp w7, w6 - bne .L433 - ldrh w15, [x14,x15] - ldrh w7, [x9] - cmp w15, w7 - bcc .L435 - b .L434 -.L433: - bhi .L434 -.L435: - ldrh w7, [x1] - cmp w7, w18 - bne .L436 - strh w2, [x4,2] - add x2, x3, :lo12:.LANCHOR2 - strh w0, [x1] - str x4, [x2,528] - b .L428 -.L436: - umull x1, w7, w8 - mov w2, w7 - add x1, x12, x1 - b .L437 -.L434: - strh w2, [x11,x10] - ldrh w2, [x1,2] - strh w2, [x4,2] - add x2, x3, :lo12:.LANCHOR2 - ldr x3, [x2,512] - cmp x1, x3 - bne .L438 - strh w0, [x1,2] - str x4, [x2,512] - b .L428 -.L438: - ldrh w3, [x1,2] - mov w4, 6 - ldr x2, [x2,504] - umull x3, w3, w4 - strh w0, [x2,x3] - strh w0, [x1,2] -.L428: + ldr x12, [x4, 504] + umull x11, w0, w5 + add x6, x12, x11 + strh w1, [x6, 2] + strh w1, [x12, x11] + ldr x1, [x4, 512] + cbnz x1, .L458 + str x6, [x4, 512] +.L471: mov w0, 0 ret +.L458: + stp x29, x30, [sp, -16]! + ubfiz x8, x0, 1, 16 + mov x15, -6148914691236517206 + mov w10, -1 + add x29, sp, 0 + ldr x14, [x4, 520] + movk x15, 0xaaab, lsl 0 + ldrh w2, [x6, 4] + mov w30, 65535 + ldr x13, [x4, 504] + cmp w2, 0 + ldrh w18, [x9, 2480] + ldrh w7, [x14, x8] + mul w7, w7, w2 + sub x2, x1, x13 + asr x2, x2, 1 + csel w7, w7, w10, ne + mul x2, x2, x15 + ldr x15, [x4, 440] + mov w4, 0 + add x9, x15, x8 + and w2, w2, 65535 + mov w8, w5 +.L466: + add w4, w4, 1 + and w4, w4, 65535 + cmp w4, w18 + bhi .L457 + cmp w0, w2 + beq .L457 + ubfiz x16, x2, 1, 16 + ldrh w17, [x1, 4] + cmp w17, 0 + ldrh w5, [x14, x16] + mul w5, w5, w17 + csel w5, w5, w10, ne + cmp w7, w5 + bne .L462 + ldrh w16, [x15, x16] + ldrh w5, [x9] + cmp w16, w5 + bcc .L464 +.L463: + strh w2, [x12, x11] + ldrh w2, [x1, 2] + strh w2, [x6, 2] + add x2, x3, :lo12:.LANCHOR2 + ldr x3, [x2, 512] + cmp x1, x3 + bne .L467 + strh w0, [x1, 2] + str x6, [x2, 512] + b .L457 +.L462: + bcc .L463 +.L464: + ldrh w5, [x1] + cmp w5, w30 + bne .L465 + strh w2, [x6, 2] + add x2, x3, :lo12:.LANCHOR2 + strh w0, [x1] + str x6, [x2, 528] +.L457: + mov w0, 0 + ldp x29, x30, [sp], 16 + ret +.L465: + umaddl x1, w5, w8, x13 + mov w2, w5 + b .L466 +.L467: + ldrh w3, [x1, 2] + mov w4, 6 + ldr x2, [x2, 504] + umull x3, w3, w4 + strh w0, [x2, x3] + strh w0, [x1, 2] + b .L457 .size insert_data_list, .-insert_data_list .align 2 .global INSERT_DATA_LIST @@ -3326,9 +3284,9 @@ INSERT_DATA_LIST: bl insert_data_list adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,536] + ldrh w1, [x0, 536] add w1, w1, 1 - strh w1, [x0,536] + strh w1, [x0, 536] ldp x29, x30, [sp], 16 ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST @@ -3336,71 +3294,71 @@ INSERT_DATA_LIST: .global insert_free_list .type insert_free_list, %function insert_free_list: - uxth w0, w0 + and w0, w0, 65535 mov w7, 65535 cmp w0, w7 - beq .L443 + beq .L476 adrp x2, .LANCHOR2 - mov w6, 6 add x5, x2, :lo12:.LANCHOR2 + mov w6, 6 mov w1, -1 - umull x8, w0, w6 mov x3, x2 - ldr x9, [x5,504] + ldr x9, [x5, 504] + umull x8, w0, w6 add x4, x9, x8 - strh w1, [x4,2] - strh w1, [x9,x8] - ldr x1, [x5,544] - cbnz x1, .L444 - str x4, [x5,544] - b .L443 -.L444: - ldr x11, [x5,440] - ubfiz x2, x0, 1, 16 - ldr x10, [x5,504] - mov x5, -6148914691236517206 - ldrh w12, [x11,x2] - sub x2, x1, x10 - asr x2, x2, 1 - madd x2, x5, x2, x2 - uxth w2, w2 -.L447: - ubfiz x5, x2, 1, 16 - ldrh w5, [x11,x5] - cmp w5, w12 - bcs .L445 - ldrh w5, [x1] - cmp w5, w7 - bne .L446 - strh w2, [x4,2] - strh w0, [x1] - b .L443 -.L446: - umull x1, w5, w6 - mov w2, w5 - add x1, x10, x1 - b .L447 -.L445: - ldrh w5, [x1,2] - strh w5, [x4,2] - strh w2, [x9,x8] - add x2, x3, :lo12:.LANCHOR2 - ldr x3, [x2,544] - cmp x1, x3 - bne .L448 - strh w0, [x1,2] - str x4, [x2,544] - b .L443 -.L448: - ldrh w3, [x1,2] - mov w4, 6 - ldr x2, [x2,504] - umull x3, w3, w4 - strh w0, [x2,x3] - strh w0, [x1,2] -.L443: + strh w1, [x4, 2] + strh w1, [x9, x8] + ldr x1, [x5, 544] + cbnz x1, .L477 + str x4, [x5, 544] +.L476: mov w0, 0 ret +.L477: + ldr x11, [x5, 440] + ubfiz x2, x0, 1, 16 + ldr x10, [x5, 504] + mov x5, -6148914691236517206 + movk x5, 0xaaab, lsl 0 + ldrh w12, [x11, x2] + sub x2, x1, x10 + asr x2, x2, 1 + mul x2, x2, x5 + and w2, w2, 65535 +.L480: + ubfiz x5, x2, 1, 16 + ldrh w5, [x11, x5] + cmp w5, w12 + bcs .L478 + ldrh w5, [x1] + cmp w5, w7 + bne .L479 + strh w2, [x4, 2] + strh w0, [x1] + b .L476 +.L479: + umaddl x1, w5, w6, x10 + mov w2, w5 + b .L480 +.L478: + ldrh w5, [x1, 2] + strh w5, [x4, 2] + strh w2, [x9, x8] + add x2, x3, :lo12:.LANCHOR2 + ldr x3, [x2, 544] + cmp x1, x3 + bne .L481 + strh w0, [x1, 2] + str x4, [x2, 544] + b .L476 +.L481: + ldrh w3, [x1, 2] + mov w4, 6 + ldr x2, [x2, 504] + umull x3, w3, w4 + strh w0, [x2, x3] + strh w0, [x1, 2] + b .L476 .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST @@ -3411,9 +3369,9 @@ INSERT_FREE_LIST: bl insert_free_list adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldrh w1, [x0,552] + ldrh w1, [x0, 552] add w1, w1, 1 - strh w1, [x0,552] + strh w1, [x0, 552] ldp x29, x30, [sp], 16 ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST @@ -3421,195 +3379,194 @@ INSERT_FREE_LIST: .global List_remove_node .type List_remove_node, %function List_remove_node: + and w1, w1, 65535 adrp x6, .LANCHOR2 - uxth w1, w1 add x6, x6, :lo12:.LANCHOR2 - mov w5, 6 - ldr x3, [x0] + mov w4, 6 + ldr x2, [x0] mov w7, 65535 - umull x1, w1, w5 - ldr x2, [x6,504] - add x4, x2, x1 - cmp x4, x3 - bne .L451 - ldrh w3, [x2,x1] - cmp w3, w7 - bne .L452 + umull x1, w1, w4 + ldr x3, [x6, 504] + add x5, x3, x1 + cmp x5, x2 + ldrh w2, [x3, x1] + bne .L485 + cmp w2, w7 + bne .L486 str xzr, [x0] - b .L453 -.L452: - umull x3, w3, w5 - add x3, x2, x3 - str x3, [x0] +.L487: mov w0, -1 - strh w0, [x3,2] - b .L453 -.L451: - ldrh w0, [x2,x1] - ldrh w3, [x4,2] - cmp w0, w7 - bne .L454 - cmp w3, w0 - beq .L453 - umull x3, w3, w5 - mov w0, -1 - strh w0, [x2,x3] - b .L453 -.L454: - umull x0, w0, w5 - add x0, x2, x0 - strh w3, [x0,2] - ldrh w3, [x4,2] - ldr x0, [x6,504] - ldrh w7, [x2,x1] - umull x3, w3, w5 - strh w7, [x0,x3] -.L453: - mov w0, -1 - strh w0, [x2,x1] - strh w0, [x4,2] + strh w0, [x3, x1] + strh w0, [x5, 2] mov w0, 0 ret +.L486: + umaddl x2, w2, w4, x3 + str x2, [x0] + mov w0, -1 + strh w0, [x2, 2] + b .L487 +.L485: + cmp w2, w7 + ldrh w0, [x5, 2] + bne .L488 + cmp w0, w2 + beq .L487 + umull x2, w0, w4 + mov w0, -1 + strh w0, [x3, x2] + b .L487 +.L488: + umaddl x2, w2, w4, x3 + strh w0, [x2, 2] + ldrh w2, [x5, 2] + ldr x0, [x6, 504] + ldrh w7, [x3, x1] + umull x2, w2, w4 + strh w7, [x0, x2] + b .L487 .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node .type List_pop_index_node, %function List_pop_index_node: - stp x29, x30, [sp, -32]! - uxth w1, w1 - add x29, sp, 0 - str x19, [sp,16] - mov w19, 65535 ldr x2, [x0] - cbz x2, .L456 + cbz x2, .L495 + stp x29, x30, [sp, -16]! adrp x3, .LANCHOR2+504 - mov w5, w19 - mov w6, 6 - ldr x4, [x3,#:lo12:.LANCHOR2+504] -.L457: - cbnz w1, .L458 -.L460: - sub x2, x2, x4 - mov x1, -6148914691236517206 - asr x2, x2, 1 - madd x2, x1, x2, x2 - uxth w19, w2 - mov w1, w19 + and w1, w1, 65535 + mov w4, 65535 + add x29, sp, 0 + ldr x8, [x3, #:lo12:.LANCHOR2+504] + mov w5, 6 +.L491: + cbnz w1, .L492 +.L494: + sub x8, x2, x8 + mov x2, -6148914691236517206 + asr x8, x8, 1 + movk x2, 0xaaab, lsl 0 + mul x8, x8, x2 + and w8, w8, 65535 + mov w1, w8 bl List_remove_node - b .L456 -.L458: + mov w0, w8 + ldp x29, x30, [sp], 16 + ret +.L492: ldrh w3, [x2] - cmp w3, w5 - beq .L460 - umull x3, w3, w6 + cmp w3, w4 + beq .L494 sub w1, w1, #1 - add x2, x4, x3 - uxth w1, w1 - b .L457 -.L456: - mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + umaddl x2, w3, w5, x8 + and w1, w1, 65535 + b .L491 +.L495: + mov w0, 65535 ret .size List_pop_index_node, .-List_pop_index_node .align 2 .global List_get_gc_head_node .type List_get_gc_head_node, %function List_get_gc_head_node: - adrp x2, .LANCHOR2 - uxth w3, w0 - add x2, x2, :lo12:.LANCHOR2 + and w2, w0, 65535 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr x1, [x0, 512] + cbz x1, .L505 + ldr x3, [x0, 504] + mov w4, 6 mov w0, 65535 - ldr x1, [x2,512] - cbz x1, .L468 - ldr x4, [x2,504] - mov w5, 6 -.L464: - cbz w3, .L465 - ldrh w2, [x1] - cmp w2, w0 - beq .L468 - umull x2, w2, w5 - sub w3, w3, #1 - add x1, x4, x2 - uxth w3, w3 - b .L464 -.L465: - sub x1, x1, x4 - mov x0, -6148914691236517206 - asr x1, x1, 1 - madd x1, x0, x1, x1 - uxth w0, w1 -.L468: +.L502: + cbz w2, .L503 + ldrh w1, [x1] + cmp w1, w0 + bne .L504 + ret +.L504: + sub w2, w2, #1 + umaddl x1, w1, w4, x3 + and w2, w2, 65535 + b .L502 +.L505: + mov w0, 65535 + ret +.L503: + sub x0, x1, x3 + mov x1, -6148914691236517206 + asr x0, x0, 1 + movk x1, 0xaaab, lsl 0 + mul x0, x0, x1 + and w0, w0, 65535 ret .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 .global List_update_data_list .type List_update_data_list, %function List_update_data_list: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - uxth w20, w0 - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,560] - cmp w1, w20 - beq .L470 - ldrh w1, [x0,608] - cmp w1, w20 - beq .L470 - ldrh w1, [x0,656] - cmp w1, w20 - beq .L470 - mov w3, 6 - ldr x4, [x0,504] - ldr x2, [x0,512] - umull x3, w20, w3 - add x1, x4, x3 - cmp x1, x2 - beq .L470 - ldr x5, [x0,520] - ubfiz x0, x20, 1, 16 - ldrh w2, [x5,x0] - ldrh w0, [x1,4] - ldrh w1, [x1,2] - cmp w0, wzr - mul w2, w2, w0 - mov w0, 65535 + adrp x8, .LANCHOR2 + add x1, x8, :lo12:.LANCHOR2 + and w9, w0, 65535 + ldrh w0, [x1, 560] + cmp w0, w9 + beq .L514 + ldrh w0, [x1, 608] + cmp w0, w9 + beq .L514 + ldrh w0, [x1, 656] + cmp w0, w9 + beq .L514 + mov w4, 6 + ldp x3, x2, [x1, 504] + umull x4, w9, w4 + add x0, x3, x4 + cmp x0, x2 + beq .L514 + ldr x5, [x1, 520] + ubfiz x1, x9, 1, 16 + ldrh w2, [x5, x1] + ldrh w1, [x0, 4] + ldrh w0, [x0, 2] + cmp w1, 0 + mul w2, w2, w1 + mov w1, 65535 csinv w2, w2, wzr, ne - cmp w1, w0 - bne .L472 - ldrh w0, [x4,x3] cmp w0, w1 - beq .L470 -.L472: - mov w0, 6 - mov x3, -6148914691236517206 - umull x1, w1, w0 - asr x0, x1, 1 - add x1, x4, x1 - madd x0, x3, x0, x0 - ldrh w1, [x1,4] - ldrh w0, [x5,x0,lsl 1] - cmp w1, wzr - mul w0, w0, w1 + bne .L509 + ldrh w1, [x3, x4] + cmp w1, w0 + beq .L514 +.L509: + mov w1, 6 + mov x4, -6148914691236517206 + movk x4, 0xaaab, lsl 0 + umull x0, w0, w1 + asr x1, x0, 1 + add x0, x3, x0 + mul x1, x1, x4 + ldrh w3, [x0, 4] + cmp w3, 0 + ldrh w1, [x5, x1, lsl 1] + mul w0, w1, w3 csinv w0, w0, wzr, ne cmp w2, w0 - bcs .L470 - add x19, x19, :lo12:.LANCHOR2 - mov w1, w20 - add x0, x19, 512 + bcs .L514 + add x8, x8, :lo12:.LANCHOR2 + stp x29, x30, [sp, -16]! + mov w1, w9 + add x0, x8, 512 + add x29, sp, 0 bl List_remove_node - ldrh w0, [x19,536] + ldrh w0, [x8, 536] sub w0, w0, #1 - strh w0, [x19,536] - mov w0, w20 + strh w0, [x8, 536] + mov w0, w9 bl INSERT_DATA_LIST -.L470: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 + ldp x29, x30, [sp], 16 + ret +.L514: + mov w0, 0 ret .size List_update_data_list, .-List_update_data_list .align 2 @@ -3618,52 +3575,51 @@ List_update_data_list: ftl_map_blk_alloc_new_blk: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] mov w20, 0 - ldrh w2, [x0,10] - ldr x1, [x0,16] -.L477: + str x21, [sp, 32] + ldrh w2, [x0, 10] + ldr x1, [x0, 16] +.L518: cmp w20, w2 - beq .L481 - mov x22, x1 - ldrh w21, [x1],2 - cbnz w21, .L478 + beq .L522 + mov x21, x1 + ldrh w3, [x1], 2 + cbnz w3, .L519 mov x19, x0 bl FtlFreeSysBlkQueueOut - strh w0, [x22] - uxth w1, w0 + and w1, w0, 65535 + strh w0, [x21] sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth - bcs .L479 - adrp x2, .LANCHOR0+2726 + bcs .L520 + adrp x0, .LANCHOR0+2726 + ldrh w2, [x0, #:lo12:.LANCHOR0+2726] adrp x0, .LC4 add x0, x0, :lo12:.LC4 - ldrh w2, [x2,#:lo12:.LANCHOR0+2726] bl printk -.L480: - b .L480 -.L479: - ldr w0, [x19,48] - strh w21, [x19,2] +.L521: + b .L521 +.L520: + ldr w0, [x19, 48] + strh wzr, [x19, 2] add w0, w0, 1 - str w0, [x19,48] - ldrh w0, [x19,8] + str w0, [x19, 48] + ldrh w0, [x19, 8] strh w20, [x19] add w0, w0, 1 - strh w0, [x19,8] - b .L481 -.L478: - add w20, w20, 1 - uxth w20, w20 - b .L477 -.L481: + strh w0, [x19, 8] +.L522: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L519: + add w20, w20, 1 + and w20, w20, 65535 + b .L518 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global select_l2p_ram_region @@ -3672,69 +3628,64 @@ select_l2p_ram_region: adrp x0, .LANCHOR0+2582 mov x4, 0 mov w5, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR0+2582] + ldrh w2, [x0, #:lo12:.LANCHOR0+2582] adrp x0, .LANCHOR2 add x1, x0, :lo12:.LANCHOR2 mov x3, x0 - ldr x1, [x1,704] -.L484: - uxth w0, w4 + ldr x1, [x1, 704] +.L526: + and w0, w4, 65535 cmp w0, w2 - bcs .L500 - add x4, x4, 1 - add x6, x1, x4, lsl 4 - ldrh w6, [x6,-16] - cmp w6, w5 - bne .L484 - b .L485 -.L500: + bcc .L528 + add x5, x1, 4 mov w0, w2 - mov x4, 0 mov w7, -2147483648 -.L487: - uxth w6, w4 - cmp w6, w2 - bcs .L501 - add x5, x1, x4, lsl 4 - ldr w5, [x5,4] - tbnz w5, #31, .L496 - cmp w5, w7 - bcc .L488 -.L496: - mov w5, w7 - mov w6, w0 -.L488: - add x4, x4, 1 - mov w7, w5 - mov w0, w6 - b .L487 -.L501: + mov w4, 0 +.L529: + cmp w4, w2 + bne .L531 cmp w0, w2 - bcc .L485 + bcc .L527 add x0, x3, :lo12:.LANCHOR2 - add x1, x1, 4 mov w4, -1 mov w3, 0 - ldrh w5, [x0,712] + ldrh w5, [x0, 712] mov w0, w2 -.L491: +.L532: cmp w3, w2 - beq .L485 - ldr w7, [x1] - cmp w7, w4 - bcs .L492 - ldrh w6, [x1,-4] + beq .L527 + ldr w7, [x1, 4] + cmp w4, w7 + bls .L533 + ldrh w6, [x1] cmp w6, w5 csel w4, w4, w7, eq - cmp w6, w5 csel w0, w0, w3, eq -.L492: +.L533: add w3, w3, 1 add x1, x1, 16 - uxth w3, w3 - b .L491 -.L485: + and w3, w3, 65535 + b .L532 +.L528: + add x4, x4, 1 + add x6, x1, x4, lsl 4 + ldrh w6, [x6, -16] + cmp w6, w5 + bne .L526 +.L527: ret +.L531: + ldr w6, [x5] + tbnz w6, #31, .L530 + cmp w7, w6 + bls .L530 + mov w7, w6 + mov w0, w4 +.L530: + add w4, w4, 1 + add x5, x5, 16 + and w4, w4, 65535 + b .L529 .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global FtlUpdateVaildLpn @@ -3742,72 +3693,70 @@ select_l2p_ram_region: FtlUpdateVaildLpn: adrp x1, .LANCHOR2 add x3, x1, :lo12:.LANCHOR2 - ldrh w2, [x3,714] - cbnz w0, .L503 + ldrh w2, [x3, 714] cmp w2, 4 - bhi .L503 + bhi .L536 + cbnz w0, .L536 add w2, w2, 1 - strh w2, [x3,714] - b .L502 -.L503: - adrp x2, .LANCHOR0+2480 - add x0, x1, :lo12:.LANCHOR2 - mov w7, 65535 - ldrh w5, [x2,#:lo12:.LANCHOR0+2480] - strh wzr, [x0,714] - str wzr, [x0,716] - ldr x6, [x0,520] - mov x0, 0 -.L504: - cmp w5, w0, uxth - bls .L502 - ldrh w4, [x6,x0,lsl 1] - cmp w4, w7 - beq .L505 - add x3, x1, :lo12:.LANCHOR2 - ldr w2, [x3,716] - add w2, w4, w2 - str w2, [x3,716] -.L505: - add x0, x0, 1 - b .L504 -.L502: + strh w2, [x3, 714] ret +.L536: + add x0, x1, :lo12:.LANCHOR2 + adrp x1, .LANCHOR0+2480 + mov w6, 65535 + ldrh w4, [x1, #:lo12:.LANCHOR0+2480] + mov x1, 0 + ldr x5, [x0, 520] + strh wzr, [x0, 714] + str wzr, [x0, 716] +.L537: + cmp w4, w1, uxth + bhi .L539 + ret +.L539: + ldrh w3, [x5, x1, lsl 1] + cmp w3, w6 + beq .L538 + ldr w2, [x0, 716] + add w2, w2, w3 + str w2, [x0, 716] +.L538: + add x1, x1, 1 + b .L537 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 .global ftl_set_blk_mode .type ftl_set_blk_mode, %function ftl_set_blk_mode: + and w0, w0, 65535 + cbz w1, .L542 stp x29, x30, [sp, -16]! - uxth w0, w0 add x29, sp, 0 - cbz w1, .L509 bl ftl_set_blk_mode.part.9 - b .L508 -.L509: - adrp x1, .LANCHOR0 + ldp x29, x30, [sp], 16 + ret +.L542: + adrp x1, .LANCHOR0+64 ubfx x2, x0, 5, 11 lsl x2, x2, 2 - ldr x3, [x1,#:lo12:.LANCHOR0] + ldr x3, [x1, #:lo12:.LANCHOR0+64] mov w1, 1 lsl w0, w1, w0 - ldr w1, [x3,x2] + ldr w1, [x3, x2] bic w0, w1, w0 - str w0, [x3,x2] -.L508: - ldp x29, x30, [sp], 16 + str w0, [x3, x2] ret .size ftl_set_blk_mode, .-ftl_set_blk_mode .align 2 .global ftl_get_blk_mode .type ftl_get_blk_mode, %function ftl_get_blk_mode: - adrp x1, .LANCHOR0 - uxth w0, w0 - ubfx x2, x0, 5, 11 - ldr x1, [x1,#:lo12:.LANCHOR0] - ldr w1, [x1,x2,lsl 2] - lsr w0, w1, w0 + and w1, w0, 65535 + adrp x0, .LANCHOR0+64 + ldr x0, [x0, #:lo12:.LANCHOR0+64] + ubfx x2, x1, 5, 11 + ldr w0, [x0, x2, lsl 2] + lsr w0, w0, w1 and w0, w0, 1 ret .size ftl_get_blk_mode, .-ftl_get_blk_mode @@ -3815,188 +3764,219 @@ ftl_get_blk_mode: .global ftl_sb_update_avl_pages .type ftl_sb_update_avl_pages, %function ftl_sb_update_avl_pages: - adrp x3, .LANCHOR0 - uxth w1, w1 - add x4, x3, :lo12:.LANCHOR0 - uxth w2, w2 - strh wzr, [x0,4] - mov w6, 65535 - ldrh w4, [x4,2472] -.L513: - cmp w2, w4 - bcs .L519 - add x5, x0, w2, sxtw 1 - ldrh w5, [x5,16] - cmp w5, w6 - beq .L514 - ldrh w5, [x0,4] - add w5, w5, 1 - strh w5, [x0,4] -.L514: - add w2, w2, 1 - uxth w2, w2 - b .L513 -.L519: - add x3, x3, :lo12:.LANCHOR0 - mov w6, 65535 - add x4, x0, w4, uxth 1 - ldrh w5, [x3,2544] - mov x3, x0 -.L516: - cmp x3, x4 - beq .L520 - ldrh w2, [x3,16] - cmp w2, w6 - beq .L517 - ldrh w2, [x0,4] - add w2, w5, w2 - sub w2, w2, #1 - sub w2, w2, w1 - strh w2, [x0,4] -.L517: - add x3, x3, 2 - b .L516 -.L520: + and w6, w1, 65535 + adrp x4, .LANCHOR0 + add x1, x4, :lo12:.LANCHOR0 + and w2, w2, 65535 + strh wzr, [x0, 4] + ldrh w3, [x1, 2472] + mov w1, 65535 +.L550: + cmp w3, w2, uxth + bhi .L552 + add x4, x4, :lo12:.LANCHOR0 + ubfiz x3, x3, 1, 16 + add x3, x3, 16 + add x2, x0, 16 + add x3, x0, x3 + mov w5, 65535 + ldrh w1, [x4, 2544] + sub w1, w1, #1 + and w1, w1, 65535 + sub w1, w1, w6 +.L553: + cmp x2, x3 + bne .L555 ret +.L552: + add x5, x0, w2, sxtw 1 + ldrh w5, [x5, 16] + cmp w5, w1 + beq .L551 + ldrh w5, [x0, 4] + add w5, w5, 1 + strh w5, [x0, 4] +.L551: + add w2, w2, 1 + b .L550 +.L555: + ldrh w4, [x2] + cmp w4, w5 + beq .L554 + ldrh w4, [x0, 4] + add w4, w1, w4 + strh w4, [x0, 4] +.L554: + add x2, x2, 2 + b .L553 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global make_superblock .type make_superblock, %function make_superblock: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - adrp x20, .LANCHOR0 - mov x19, x0 - strh wzr, [x0,4] - add x22, x19, 16 - strb wzr, [x0,7] - add x0, x20, :lo12:.LANCHOR0 - mov x21, 0 - mov x23, x0 - mov w25, -1 - ldrh w24, [x0,2472] -.L522: - cmp w24, w21, uxth - bls .L533 - add x0, x23, 2504 - ldrh w1, [x19] - ldrb w0, [x0,x21] - bl V2P_block - strh w25, [x22] - mov w26, w0 - bl FtlBbmIsBadBlock - cbnz w0, .L523 - strh w26, [x22] - ldrb w0, [x19,7] - add w0, w0, 1 - strb w0, [x19,7] -.L523: - add x21, x21, 1 - add x22, x22, 2 - b .L522 -.L533: - add x1, x20, :lo12:.LANCHOR0 - ldrb w0, [x19,7] - strb wzr, [x19,9] - ldrh w2, [x1,2544] + mov x5, x0 + strh wzr, [x0, 4] + strb wzr, [x0, 7] + adrp x6, .LANCHOR0 + add x0, x6, :lo12:.LANCHOR0 + mov x7, 0 + add x8, x5, 16 + add x9, x0, 2504 + mov w11, -1 + ldrh w10, [x0, 2472] + cmp w10, w7, uxth + bhi .L576 + add x1, x6, :lo12:.LANCHOR0 + ldrb w0, [x5, 7] + strb wzr, [x5, 9] + ldrh w2, [x1, 2544] mul w0, w0, w2 - strh w0, [x19,4] - ldr w0, [x1,2372] - cbz w0, .L525 + strh w0, [x5, 4] + ldr w0, [x1, 2372] + cbz w0, .L572 adrp x0, .LANCHOR2+440 - ldrh w1, [x19] - ldr x0, [x0,#:lo12:.LANCHOR2+440] - ldrh w0, [x0,x1,lsl 1] + ldrh w1, [x5] + ldr x0, [x0, #:lo12:.LANCHOR2+440] + ldrh w0, [x0, x1, lsl 1] cmp w0, 79 - bhi .L525 + bhi .L572 mov w0, 1 - strb w0, [x19,9] -.L525: - add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,72] - cbz w0, .L526 + strb w0, [x5, 9] +.L572: + add x6, x6, :lo12:.LANCHOR0 + ldrb w0, [x6, 72] + cbz w0, .L575 mov w0, 1 - strb w0, [x19,9] -.L526: + strb w0, [x5, 9] +.L575: 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 +.L576: + stp x29, x30, [sp, -16]! + add x29, sp, 0 +.L559: + ldrh w1, [x5] + ldrb w0, [x9, x7] + bl V2P_block + mov w4, w0 + strh w11, [x8] + bl FtlBbmIsBadBlock + cbnz w0, .L558 + strh w4, [x8] + ldrb w0, [x5, 7] + add w0, w0, 1 + strb w0, [x5, 7] +.L558: + add x7, x7, 1 + add x8, x8, 2 + cmp w10, w7, uxth + bhi .L559 + add x1, x6, :lo12:.LANCHOR0 + ldrb w0, [x5, 7] + strb wzr, [x5, 9] + ldrh w2, [x1, 2544] + mul w0, w0, w2 + strh w0, [x5, 4] + ldr w0, [x1, 2372] + cbz w0, .L560 + adrp x0, .LANCHOR2+440 + ldrh w1, [x5] + ldr x0, [x0, #:lo12:.LANCHOR2+440] + ldrh w0, [x0, x1, lsl 1] + cmp w0, 79 + bhi .L560 + mov w0, 1 + strb w0, [x5, 9] +.L560: + add x6, x6, :lo12:.LANCHOR0 + ldrb w0, [x6, 72] + cbz w0, .L561 + mov w0, 1 + strb w0, [x5, 9] +.L561: + mov w0, 0 + ldp x29, x30, [sp], 16 ret .size make_superblock, .-make_superblock .align 2 .global update_multiplier_value .type update_multiplier_value, %function update_multiplier_value: - stp x29, x30, [sp, -64]! - adrp x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 + and w7, w0, 65535 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov x8, 0 + mov w6, 0 + add x5, x0, 2504 + ldrh w9, [x0, 2472] + ldrh w10, [x0, 2544] + cmp w9, w8, uxth + bhi .L589 + cbz w6, .L587 + mov w0, 32768 + sdiv w6, w0, w6 +.L588: + adrp x0, .LANCHOR2+504 + mov w1, 6 + ldr x0, [x0, #:lo12:.LANCHOR2+504] + umaddl x7, w7, w1, x0 + mov w0, 0 + strh w6, [x7, 4] + ret +.L582: + mov w6, 0 + b .L581 +.L587: + mov w6, 0 + b .L588 +.L589: + stp x29, x30, [sp, -16]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov x22, 0 - uxth w21, w0 - ldrh w23, [x1,2472] - mov w19, w22 - ldrh w24, [x1,2544] - mov x20, x1 -.L535: - cmp w23, w22, uxth - bls .L542 - add x0, x20, 2504 - mov w1, w21 - ldrb w0, [x0,x22] +.L580: + ldrb w0, [x5, x8] + mov w1, w7 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L536 - add w19, w19, w24 - uxth w19, w19 -.L536: - add x22, x22, 1 - b .L535 -.L542: - cbz w19, .L538 + cbnz w0, .L579 + add w6, w6, w10 + and w6, w6, 65535 +.L579: + add x8, x8, 1 + cmp w9, w8, uxth + bhi .L580 + cbz w6, .L582 mov w0, 32768 - sdiv w19, w0, w19 -.L538: - mov w0, 6 - umull x21, w21, w0 + sdiv w6, w0, w6 +.L581: adrp x0, .LANCHOR2+504 - ldr x0, [x0,#:lo12:.LANCHOR2+504] - add x21, x0, x21 + mov w1, 6 + ldr x0, [x0, #:lo12:.LANCHOR2+504] + umaddl x7, w7, w1, x0 mov w0, 0 - strh w19, [x21,4] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 + strh w6, [x7, 4] + ldp x29, x30, [sp], 16 ret .size update_multiplier_value, .-update_multiplier_value .align 2 .global GetFreeBlockMinEraseCount .type GetFreeBlockMinEraseCount, %function GetFreeBlockMinEraseCount: - adrp x2, .LANCHOR2 - add x2, x2, :lo12:.LANCHOR2 - ldr x1, [x2,544] - mov w0, w1 - cbz x1, .L544 - ldr x0, [x2,504] - sub x1, x1, x0 - mov x0, -6148914691236517206 - asr x1, x1, 1 - madd x1, x0, x1, x1 - ldr x0, [x2,440] - and x1, x1, 65535 - ldrh w0, [x0,x1,lsl 1] -.L544: + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldr x0, [x1, 544] + cbz x0, .L592 + ldr x2, [x1, 504] + ldr x1, [x1, 440] + sub x0, x0, x2 + mov x2, -6148914691236517206 + asr x0, x0, 1 + movk x2, 0xaaab, lsl 0 + mul x0, x0, x2 + and x0, x0, 65535 + ldrh w0, [x1, x0, lsl 1] + ret +.L592: + mov w0, 0 ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -4004,45 +3984,46 @@ GetFreeBlockMinEraseCount: .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: adrp x2, .LANCHOR2 - uxth w4, w0 - add x5, x2, :lo12:.LANCHOR2 - ldr x1, [x5,544] - mov w0, w1 - cbz x1, .L547 - ldrh w3, [x5,552] - mov w0, 7 + add x4, x2, :lo12:.LANCHOR2 + and w0, w0, 65535 + ldr x1, [x4, 544] + cbz x1, .L600 + ldrh w3, [x4, 552] + mov w5, 7 + ldr x4, [x4, 504] mov w6, 6 mov w7, 65535 - mul w3, w3, w0 - ldr x0, [x5,504] - asr w3, w3, 3 - cmp w4, w3 - sub x1, x1, x0 - csel w4, w3, w4, gt + sub x1, x1, x4 + mul w3, w3, w5 asr x1, x1, 1 + asr w3, w3, 3 + cmp w0, w3 + csel w0, w3, w0, gt mov x3, -6148914691236517206 - madd x1, x3, x1, x1 + movk x3, 0xaaab, lsl 0 + mul x1, x1, x3 mov w3, 0 - uxth w1, w1 -.L549: - cmp w3, w4 - beq .L552 + and w1, w1, 65535 +.L596: + cmp w0, w3 + beq .L599 umull x5, w1, w6 - ldrh w5, [x0,x5] + ldrh w5, [x4, x5] cmp w5, w7 - bne .L550 -.L552: + bne .L597 +.L599: add x2, x2, :lo12:.LANCHOR2 ubfiz x1, x1, 1, 16 - ldr x0, [x2,440] - ldrh w0, [x0,x1] - b .L547 -.L550: + ldr x0, [x2, 440] + ldrh w0, [x0, x1] + ret +.L597: add w3, w3, 1 mov w1, w5 - uxth w3, w3 - b .L549 -.L547: + and w3, w3, 65535 + b .L596 +.L600: + mov w0, 0 ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 @@ -4051,547 +4032,546 @@ GetFreeBlockMaxEraseCount: FtlPrintInfo2buf: stp x29, x30, [sp, -112]! adrp x1, .LC5 - add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR0 add x1, x1, :lo12:.LC5 + add x29, sp, 0 + stp x23, x24, [sp, 48] + adrp x24, .LANCHOR0 add x24, x24, :lo12:.LANCHOR0 - str x27, [sp,80] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + add x20, x0, 12 + stp x25, x26, [sp, 64] mov x22, x0 + str x27, [sp, 80] bl strcpy - add x20, x22, 12 - ldr w2, [x24,176] - adrp x1, .LC6 + ldr w2, [x24, 176] mov x0, x20 + adrp x1, .LC6 add x1, x1, :lo12:.LC6 bl sprintf add x20, x20, w0, sxtw - adrp x1, .LC7 - ldr w2, [x24,2560] + ldr w2, [x24, 2560] mov x0, x20 + adrp x1, .LC7 add x1, x1, :lo12:.LC7 bl sprintf add x20, x20, w0, sxtw adrp x0, .LANCHOR1+504 - ldr w0, [x0,#:lo12:.LANCHOR1+504] + ldr w0, [x0, #:lo12:.LANCHOR1+504] cmp w0, 1 - beq .L555 + beq .L602 sub w0, w20, w22 - b .L556 -.L555: - add x0, x29, 96 - add x1, x29, 100 - add x2, x29, 104 +.L601: + 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], 112 + ret +.L602: add x3, x29, 108 - adrp x25, .LANCHOR2 + add x2, x29, 104 + add x1, x29, 100 + add x0, x29, 96 bl NandcGetTimeCfg - add x23, x25, :lo12:.LANCHOR2 - ldr w4, [x29,104] + adrp x25, .LANCHOR2 + ldp w4, w5, [x29, 104] adrp x1, .LC8 - ldr w5, [x29,108] + ldp w2, w3, [x29, 96] add x1, x1, :lo12:.LC8 - ldr w3, [x29,100] mov x0, x20 - ldr w2, [x29,96] + add x23, x25, :lo12:.LANCHOR2 bl sprintf add x21, x20, w0, sxtw + mov x0, x21 adrp x1, .LC9 - mov x0, x21 add x1, x1, :lo12:.LC9 - add x21, x21, 10 bl strcpy - ldr w2, [x24,2616] - adrp x1, .LC10 + ldr w2, [x24, 2616] + add x21, x21, 10 mov x0, x21 + adrp x1, .LC10 add x1, x1, :lo12:.LC10 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,716] - adrp x1, .LC11 + ldr w2, [x23, 716] mov x0, x21 + adrp x1, .LC11 add x1, x1, :lo12:.LC11 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,720] - adrp x1, .LC12 + ldr w2, [x23, 720] mov x0, x21 + adrp x1, .LC12 add x1, x1, :lo12:.LC12 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,724] - adrp x1, .LC13 + ldr w2, [x23, 724] mov x0, x21 + adrp x1, .LC13 add x1, x1, :lo12:.LC13 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,728] - adrp x1, .LC14 + ldr w2, [x23, 728] mov x0, x21 + adrp x1, .LC14 add x1, x1, :lo12:.LC14 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,732] - adrp x1, .LC15 + ldr w2, [x23, 732] mov x0, x21 + adrp x1, .LC15 add x1, x1, :lo12:.LC15 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,736] - adrp x1, .LC16 + ldr w2, [x23, 736] mov x0, x21 + adrp x1, .LC16 add x1, x1, :lo12:.LC16 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,740] - adrp x1, .LC17 + ldr w2, [x23, 740] mov x0, x21 + adrp x1, .LC17 add x1, x1, :lo12:.LC17 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,744] - adrp x1, .LC18 + ldr w2, [x23, 744] mov x0, x21 + adrp x1, .LC18 add x1, x1, :lo12:.LC18 lsr w2, w2, 11 bl sprintf + ldr w2, [x23, 748] add x21, x21, w0, sxtw - ldr w2, [x23,748] - adrp x1, .LC19 mov x0, x21 + adrp x1, .LC19 add x1, x1, :lo12:.LC19 lsr w2, w2, 11 bl sprintf + ldr w2, [x23, 752] add x21, x21, w0, sxtw - ldr w2, [x23,752] - adrp x1, .LC20 mov x0, x21 + adrp x1, .LC20 add x1, x1, :lo12:.LC20 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,756] + ldr w2, [x23, 756] adrp x1, .LC21 add x1, x1, :lo12:.LC21 mov x0, x21 bl sprintf add x21, x21, w0, sxtw bl FtlBbtCalcTotleCnt - uxth w3, w0 - ldrh w2, [x24,2630] - adrp x1, .LC22 + and w3, w0, 65535 + ldrh w2, [x24, 2630] mov x0, x21 + adrp x1, .LC22 add x1, x1, :lo12:.LC22 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,552] - adrp x1, .LC23 + ldrh w2, [x23, 552] mov x0, x21 + adrp x1, .LC23 add x1, x1, :lo12:.LC23 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,760] - adrp x1, .LC24 + ldr w2, [x23, 760] mov x0, x21 + adrp x1, .LC24 add x1, x1, :lo12:.LC24 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,764] - adrp x1, .LC25 + ldr w2, [x23, 764] mov x0, x21 + adrp x1, .LC25 add x1, x1, :lo12:.LC25 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,768] - adrp x1, .LC26 + ldr w2, [x23, 768] mov x0, x21 + adrp x1, .LC26 add x1, x1, :lo12:.LC26 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,448] - adrp x1, .LC27 + ldr w2, [x23, 448] mov x0, x21 + adrp x1, .LC27 add x1, x1, :lo12:.LC27 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,772] - adrp x1, .LC28 + ldr w2, [x23, 772] mov x0, x21 + adrp x1, .LC28 add x1, x1, :lo12:.LC28 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x23,776] - adrp x1, .LC29 + ldr w2, [x23, 776] mov x0, x21 + adrp x1, .LC29 add x1, x1, :lo12:.LC29 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,486] - adrp x1, .LC30 + ldrh w2, [x23, 486] mov x0, x21 + adrp x1, .LC30 add x1, x1, :lo12:.LC30 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,484] - adrp x1, .LC31 + ldrh w2, [x23, 484] mov x0, x21 + adrp x1, .LC31 add x1, x1, :lo12:.LC31 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x24,2584] - adrp x1, .LC32 + ldr w2, [x24, 2584] mov x0, x21 + adrp x1, .LC32 add x1, x1, :lo12:.LC32 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x24,2576] - adrp x1, .LC33 + ldr w2, [x24, 2576] mov x0, x21 + adrp x1, .LC33 add x1, x1, :lo12:.LC33 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x24,2468] - adrp x1, .LC34 + ldr w2, [x24, 2468] mov x0, x21 + adrp x1, .LC34 add x1, x1, :lo12:.LC34 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x24,2726] - adrp x1, .LC35 + ldrh w2, [x24, 2726] mov x0, x21 + adrp x1, .LC35 add x1, x1, :lo12:.LC35 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x24,2480] - adrp x1, .LC36 + ldrh w2, [x24, 2480] mov x0, x21 + adrp x1, .LC36 add x1, x1, :lo12:.LC36 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,780] - adrp x1, .LC37 + ldrh w2, [x23, 780] mov x0, x21 + adrp x1, .LC37 add x1, x1, :lo12:.LC37 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x24,2484] - adrp x1, .LC38 + ldr w2, [x24, 2484] mov x0, x21 + adrp x1, .LC38 add x1, x1, :lo12:.LC38 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,784] - adrp x1, .LC39 + ldrh w2, [x23, 784] mov x0, x21 + adrp x1, .LC39 add x1, x1, :lo12:.LC39 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x24,2624] - adrp x1, .LC40 + ldrh w2, [x24, 2624] mov x0, x21 + adrp x1, .LC40 add x1, x1, :lo12:.LC40 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,562] - adrp x1, .LC41 + ldrh w2, [x23, 562] mov x0, x21 + adrp x1, .LC41 add x1, x1, :lo12:.LC41 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,566] - adrp x1, .LC42 + ldrb w2, [x23, 566] mov x0, x21 + adrp x1, .LC42 add x1, x1, :lo12:.LC42 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,560] - adrp x1, .LC43 + ldrh w2, [x23, 560] mov x0, x21 + adrp x1, .LC43 add x1, x1, :lo12:.LC43 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,568] - adrp x1, .LC44 + ldrb w2, [x23, 568] mov x0, x21 + adrp x1, .LC44 add x1, x1, :lo12:.LC44 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,564] - adrp x1, .LC45 + ldrh w2, [x23, 564] mov x0, x21 + adrp x1, .LC45 add x1, x1, :lo12:.LC45 bl sprintf add x21, x21, w0, sxtw - ldrh w3, [x23,560] - adrp x1, .LC46 - ldr x2, [x23,520] + ldrh w1, [x23, 560] + ldr x0, [x23, 520] + ldrh w2, [x0, x1, lsl 1] mov x0, x21 + adrp x1, .LC46 add x1, x1, :lo12:.LC46 - ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,610] - adrp x1, .LC47 + ldrh w2, [x23, 610] mov x0, x21 + adrp x1, .LC47 add x1, x1, :lo12:.LC47 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,614] - adrp x1, .LC48 + ldrb w2, [x23, 614] mov x0, x21 + adrp x1, .LC48 add x1, x1, :lo12:.LC48 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,608] - adrp x1, .LC49 + ldrh w2, [x23, 608] mov x0, x21 + adrp x1, .LC49 add x1, x1, :lo12:.LC49 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,616] - adrp x1, .LC50 + ldrb w2, [x23, 616] mov x0, x21 + adrp x1, .LC50 add x1, x1, :lo12:.LC50 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,612] - adrp x1, .LC51 + ldrh w2, [x23, 612] mov x0, x21 + adrp x1, .LC51 add x1, x1, :lo12:.LC51 bl sprintf add x21, x21, w0, sxtw - ldrh w3, [x23,608] - adrp x1, .LC52 - ldr x2, [x23,520] + ldrh w1, [x23, 608] + ldr x0, [x23, 520] + ldrh w2, [x0, x1, lsl 1] mov x0, x21 + adrp x1, .LC52 add x1, x1, :lo12:.LC52 - ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,658] - adrp x1, .LC53 + ldrh w2, [x23, 658] mov x0, x21 + adrp x1, .LC53 add x1, x1, :lo12:.LC53 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,662] - adrp x1, .LC54 + ldrb w2, [x23, 662] mov x0, x21 + adrp x1, .LC54 add x1, x1, :lo12:.LC54 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,656] - adrp x1, .LC55 + ldrh w2, [x23, 656] mov x0, x21 + adrp x1, .LC55 add x1, x1, :lo12:.LC55 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,664] - adrp x1, .LC56 + ldrb w2, [x23, 664] mov x0, x21 + adrp x1, .LC56 add x1, x1, :lo12:.LC56 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,660] - adrp x1, .LC57 + ldrh w2, [x23, 660] mov x0, x21 + adrp x1, .LC57 add x1, x1, :lo12:.LC57 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,802] - adrp x1, .LC58 + ldrh w2, [x23, 802] mov x0, x21 + adrp x1, .LC58 add x1, x1, :lo12:.LC58 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,806] - adrp x1, .LC59 + ldrb w2, [x23, 806] mov x0, x21 + adrp x1, .LC59 add x1, x1, :lo12:.LC59 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,800] - adrp x1, .LC60 + ldrh w2, [x23, 800] mov x0, x21 + adrp x1, .LC60 add x1, x1, :lo12:.LC60 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x23,808] - adrp x1, .LC61 + ldrb w2, [x23, 808] mov x0, x21 + adrp x1, .LC61 add x1, x1, :lo12:.LC61 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x23,804] - adrp x1, .LC62 + ldrh w2, [x23, 804] mov x0, x21 + adrp x1, .LC62 add x1, x1, :lo12:.LC62 bl sprintf add x21, x21, w0, sxtw - ldr w3, [x23,848] + ldr w5, [x23, 924] adrp x1, .LC63 - ldr w2, [x24,2372] + ldr w3, [x23, 928] add x1, x1, :lo12:.LC63 - ldr w4, [x23,940] + ldr w4, [x23, 932] + ldr w0, [x24, 2372] + ldr w2, [x23, 1360] + orr w2, w0, w2, lsl 8 mov x0, x21 - ldr w5, [x23,932] - orr w2, w2, w3, lsl 8 - ldr w3, [x23,936] bl sprintf add x19, x21, w0, sxtw - ldr w2, [x23,928] - adrp x1, .LC64 + ldr w2, [x23, 920] mov x0, x19 + adrp x1, .LC64 add x1, x1, :lo12:.LC64 bl sprintf add x19, x19, w0, sxtw - ldr w2, [x23,952] - adrp x1, .LC65 + ldr w2, [x23, 944] mov x0, x19 + adrp x1, .LC65 add x1, x1, :lo12:.LC65 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x23,1368] - adrp x1, .LC66 + ldrh w2, [x23, 1364] mov x0, x19 + adrp x1, .LC66 add x1, x1, :lo12:.LC66 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x23,1370] - adrp x1, .LC67 + ldrh w2, [x23, 1366] mov x0, x19 + adrp x1, .LC67 add x1, x1, :lo12:.LC67 bl sprintf add x19, x19, w0, sxtw - ldr w2, [x23,1372] - adrp x1, .LC68 + ldr w2, [x23, 1368] mov x0, x19 + adrp x1, .LC68 add x1, x1, :lo12:.LC68 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x23,1376] + ldrh w2, [x23, 1372] adrp x1, .LC69 add x1, x1, :lo12:.LC69 mov x0, x19 bl sprintf add x19, x19, w0, sxtw bl GetFreeBlockMinEraseCount - uxth w2, w0 + and w2, w0, 65535 adrp x1, .LC70 mov x0, x19 add x1, x1, :lo12:.LC70 bl sprintf add x19, x19, w0, sxtw - ldrh w0, [x23,552] + ldrh w0, [x23, 552] bl GetFreeBlockMaxEraseCount - uxth w2, w0 + and w2, w0, 65535 adrp x1, .LC71 mov x0, x19 add x1, x1, :lo12:.LC71 bl sprintf add x19, x19, w0, sxtw - ldrh w0, [x23,800] + ldrh w0, [x23, 800] mov w1, 65535 cmp w0, w1 - beq .L557 - ubfiz x2, x0, 1, 16 - ldr x3, [x23,520] - adrp x1, .LC72 + beq .L604 + ldr x1, [x23, 520] + ubfiz x0, x0, 1, 16 + ldrh w2, [x1, x0] mov x0, x19 + adrp x1, .LC72 add x1, x1, :lo12:.LC72 - ldrh w2, [x3,x2] bl sprintf add x19, x19, w0, sxtw -.L557: +.L604: mov w0, 0 adrp x23, .LC73 + bl List_get_gc_head_node + add x21, x25, :lo12:.LANCHOR2 + and w3, w0, 65535 + add x23, x23, :lo12:.LC73 mov w20, 0 mov w27, 65535 - bl List_get_gc_head_node mov w26, 6 - uxth w3, w0 - add x23, x23, :lo12:.LC73 -.L559: +.L606: cmp w3, w27 - beq .L558 - add x21, x25, :lo12:.LANCHOR2 - ubfiz x6, x3, 1, 16 + beq .L605 umull x24, w3, w26 + ldr x0, [x21, 504] + ldr x4, [x21, 440] + ubfiz x1, x3, 1, 16 + ldr x2, [x21, 520] + add x0, x0, x24 + ldrh w6, [x4, x1] + ldrh w5, [x0, 4] mov x0, x19 + ldrh w4, [x2, x1] mov w2, w20 - ldr x5, [x21,504] mov x1, x23 - ldr x4, [x21,520] add w20, w20, 1 - ldr x7, [x21,440] - add x5, x5, x24 - ldrh w4, [x4,x6] - ldrh w5, [x5,4] - ldrh w6, [x7,x6] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,504] + ldr x0, [x21, 504] cmp w20, 16 - ldrh w3, [x0,x24] - bne .L559 -.L558: - add x1, x25, :lo12:.LANCHOR2 - adrp x23, .LC74 + ldrh w3, [x0, x24] + bne .L606 +.L605: + add x25, x25, :lo12:.LANCHOR2 + adrp x21, .LC74 + add x21, x21, :lo12:.LC74 mov w20, 0 - mov w27, 65535 + mov w24, 65535 mov w26, 6 - add x23, x23, :lo12:.LC74 - ldr x0, [x1,544] - ldr x3, [x1,504] - sub x3, x0, x3 + ldr x0, [x25, 504] + ldr x3, [x25, 544] + sub x3, x3, x0 mov x0, -6148914691236517206 asr x3, x3, 1 - madd x3, x0, x3, x3 - uxth w3, w3 -.L561: - cmp w3, w27 - beq .L560 - add x21, x25, :lo12:.LANCHOR2 - ubfiz x5, x3, 1, 16 - umull x24, w3, w26 - mov x0, x19 + movk x0, 0xaaab, lsl 0 + mul x3, x3, x0 + and w3, w3, 65535 +.L608: + cmp w3, w24 + beq .L607 + umull x23, w3, w26 + ldr x0, [x25, 504] + ldr x2, [x25, 440] + ubfiz x1, x3, 1, 16 + add x0, x0, x23 + ldrh w5, [x2, x1] mov w2, w20 - ldr x4, [x21,504] - mov x1, x23 - ldr x6, [x21,440] + ldrh w4, [x0, 4] + mov x1, x21 + mov x0, x19 add w20, w20, 1 - add x4, x4, x24 - ldrh w5, [x6,x5] - ldrh w4, [x4,4] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,504] cmp w20, 4 - ldrh w3, [x0,x24] - bne .L561 -.L560: + beq .L607 + ldr x0, [x25, 504] + ldrh w3, [x0, x23] + b .L608 +.L607: sub w0, w19, w22 -.L556: - 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], 112 - ret + b .L601 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 2 .global ftl_proc_ftl_read .type ftl_proc_ftl_read, %function ftl_proc_ftl_read: stp x29, x30, [sp, -32]! - adrp x1, .LC75 - adrp x2, .LC76 + adrp x2, .LC75 + adrp x1, .LC76 + add x2, x2, :lo12:.LC75 add x29, sp, 0 - add x1, x1, :lo12:.LC75 - add x2, x2, :lo12:.LC76 - stp x19, x20, [sp,16] + add x1, x1, :lo12:.LC76 + stp x19, x20, [sp, 16] mov x20, x0 bl sprintf add x19, x20, w0, sxtw @@ -4599,7 +4579,7 @@ ftl_proc_ftl_read: bl FtlPrintInfo2buf add x0, x19, w0, sxtw sub w0, w0, w20 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_proc_ftl_read, .-ftl_proc_ftl_read @@ -4607,330 +4587,318 @@ ftl_proc_ftl_read: .global GetSwlReplaceBlock .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -32]! + adrp x8, .LANCHOR2 + add x0, x8, :lo12:.LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - add x0, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr w2, [x0,768] - ldr w1, [x0,776] + stp x19, x20, [sp, 16] + ldr w2, [x0, 768] + ldr w1, [x0, 776] cmp w2, w1 - bcs .L566 + bcs .L617 adrp x1, .LANCHOR0 - str wzr, [x0,760] add x2, x1, :lo12:.LANCHOR0 - ldr x5, [x0,440] - mov x0, 0 - ldrh w3, [x2,2480] -.L567: - cmp w3, w0 - bls .L599 - add x4, x19, :lo12:.LANCHOR2 - ldrh w6, [x5,x0,lsl 1] - add x0, x0, 1 - ldr w2, [x4,760] - add w2, w6, w2 - str w2, [x4,760] - b .L567 -.L599: - add x2, x19, :lo12:.LANCHOR2 + ldr x5, [x0, 440] + str wzr, [x0, 760] + ldrh w3, [x2, 2480] + mov x2, 0 +.L618: + cmp w3, w2 + bhi .L619 + add x2, x8, :lo12:.LANCHOR2 add x1, x1, :lo12:.LANCHOR0 - ldr w0, [x2,760] - ldrh w1, [x1,2536] + ldr w0, [x2, 760] + ldrh w1, [x1, 2536] udiv w3, w0, w3 - str w3, [x2,768] - ldr w3, [x2,764] + str w3, [x2, 768] + ldr w3, [x2, 764] sub w0, w0, w3 udiv w0, w0, w1 - str w0, [x2,760] - b .L569 -.L566: - ldr w1, [x0,772] - cmp w2, w1 - bls .L569 - add w1, w1, 1 - adrp x4, .LANCHOR0 - str w1, [x0,772] - mov w0, 0 -.L571: - add x1, x4, :lo12:.LANCHOR0 - ldrh w1, [x1,2480] + str w0, [x2, 760] +.L620: + add x1, x8, :lo12:.LANCHOR2 + ldr w9, [x1, 776] + ldr w10, [x1, 768] + add w0, w9, 256 + cmp w0, w10 + bls .L625 + ldr w1, [x1, 772] + add w0, w9, 768 cmp w0, w1 - bcs .L569 - add x1, x19, :lo12:.LANCHOR2 - ubfiz x2, x0, 1, 32 - add w0, w0, 1 - ldr x3, [x1,440] - ldrh w1, [x3,x2] - add w1, w1, 1 - strh w1, [x3,x2] - b .L571 -.L569: - add x1, x19, :lo12:.LANCHOR2 - ldr w21, [x1,776] - ldr w24, [x1,768] - add w0, w21, 256 - cmp w0, w24 - bls .L574 - ldr w1, [x1,772] - add w0, w21, 768 - cmp w0, w1 - bls .L574 + bls .L625 adrp x0, .LANCHOR0+2372 - ldr w0, [x0,#:lo12:.LANCHOR0+2372] - cbz w0, .L577 - cmp w21, 40 - bls .L574 -.L577: - mov w0, 65535 - b .L576 -.L574: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,552] + ldr w0, [x0, #:lo12:.LANCHOR0+2372] + cbnz w0, .L626 +.L628: + mov w20, 65535 +.L627: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L619: + ldrh w4, [x5, x2, lsl 1] + add x2, x2, 1 + ldr w6, [x0, 760] + add w4, w4, w6 + str w4, [x0, 760] + b .L618 +.L617: + ldr w1, [x0, 772] + cmp w2, w1 + bls .L620 + add w1, w1, 1 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + str w1, [x0, 772] + mov w1, 0 +.L622: + ldrh w3, [x2, 2480] + cmp w1, w3 + bcs .L620 + ldr x5, [x0, 440] + ubfiz x4, x1, 1, 32 + add w1, w1, 1 + ldrh w3, [x5, x4] + add w3, w3, 1 + strh w3, [x5, x4] + b .L622 +.L626: + cmp w9, 40 + bhi .L628 +.L625: + add x0, x8, :lo12:.LANCHOR2 + ldrh w0, [x0, 552] add w0, w0, w0, lsl 1 lsr w0, w0, 2 bl GetFreeBlockMaxEraseCount - uxth w6, w0 - add w0, w21, 64 + and w6, w0, 65535 + add w0, w9, 64 cmp w6, w0 - bcs .L586 - cmp w21, 40 - bhi .L577 -.L586: - add x0, x19, :lo12:.LANCHOR2 - ldr x3, [x0,512] - cbz x3, .L577 - adrp x1, .LANCHOR0+2480 - mov w23, 65535 - ldr x7, [x0,504] - mov w20, w23 - ldr x26, [x0,440] - mov x0, -6148914691236517206 - ldrh w9, [x1,#:lo12:.LANCHOR0+2480] - mov w8, w23 + bcs .L629 + cmp w9, 40 + bhi .L628 +.L629: + add x1, x8, :lo12:.LANCHOR2 + ldr x0, [x1, 512] + cbz x0, .L628 + adrp x2, .LANCHOR0+2480 + mov w4, 65535 + mov x13, -6148914691236517206 + mov w11, w4 + ldrh w12, [x2, #:lo12:.LANCHOR0+2480] + mov w2, w4 + ldr x5, [x1, 440] + movk x13, 0xaaab, lsl 0 + ldr x7, [x1, 504] + mov w14, 6 mov w1, 0 - add x0, x0, 1 - mov w10, 6 -.L579: - ldrh w2, [x3] - cmp w2, w8 - beq .L581 - add w1, w1, 1 - uxth w1, w1 - cmp w1, w9 - bhi .L577 - ldrh w4, [x3,4] - cbz w4, .L580 - sub x4, x3, x7 - asr x4, x4, 1 - mul x4, x4, x0 - uxth w5, w4 - and x4, x4, 65535 - ldrh w3, [x26,x4,lsl 1] - cmp w3, w21 - bls .L585 - cmp w3, w23 - bcs .L580 - mov w23, w3 - mov w20, w5 -.L580: - umull x3, w2, w10 - add x3, x7, x3 - b .L579 -.L585: - mov w20, w5 -.L581: +.L630: + ldrh w3, [x0] + cmp w3, w11 + bne .L633 + mov w20, w2 +.L632: mov w0, 65535 cmp w20, w0 - beq .L577 - ubfiz x25, x20, 1, 16 - ldrh w22, [x26,x25] - cmp w22, w21 - bls .L583 - str x6, [x29,88] + beq .L628 + ubfiz x7, x20, 1, 32 + ldrh w3, [x5, x7] + cmp w9, w3 + bcs .L634 bl GetFreeBlockMinEraseCount - ldr x6, [x29,88] - cmp w21, w0, uxth - bcs .L583 - add x0, x19, :lo12:.LANCHOR2 - str w23, [x0,776] -.L583: - cmp w22, w24 - bcs .L577 - add w0, w22, 128 + cmp w9, w0, uxth + bcs .L634 + add x0, x8, :lo12:.LANCHOR2 + str w4, [x0, 776] +.L634: + cmp w10, w3 + bls .L628 + add w0, w3, 128 cmp w6, w0 - ble .L577 - add w0, w22, 256 - cmp w0, w24 - bcc .L584 - add x0, x19, :lo12:.LANCHOR2 - add w22, w22, 768 - ldr w0, [x0,772] - cmp w22, w0 - bcs .L577 -.L584: - add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC77 - ldrh w5, [x26,x25] - add x0, x0, :lo12:.LC77 + ble .L628 + add w0, w3, 256 + cmp w10, w0 + bhi .L635 + add x0, x8, :lo12:.LANCHOR2 + add w3, w3, 768 + ldr w0, [x0, 772] + cmp w3, w0 + bcs .L628 +.L635: + add x19, x8, :lo12:.LANCHOR2 + ldrh w5, [x5, x7] + mov w2, w10 mov w1, w20 - mov w2, w24 - ldr x4, [x19,520] - ldr w3, [x19,772] - ldrh w4, [x4,x25] + ldr x0, [x19, 520] + ldr w3, [x19, 772] + ldrh w4, [x0, x7] + adrp x0, .LC77 + add x0, x0, :lo12:.LC77 bl printk mov w0, 1 - str w0, [x19,1380] - mov w0, w20 -.L576: - 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 + str w0, [x19, 1376] + b .L627 +.L633: + add w1, w1, 1 + and w1, w1, 65535 + cmp w1, w12 + bhi .L628 + ldrh w15, [x0, 4] + cbz w15, .L631 + sub x0, x0, x7 + asr x0, x0, 1 + mul x0, x0, x13 + and w20, w0, 65535 + and x0, x0, 65535 + ldrh w0, [x5, x0, lsl 1] + cmp w9, w0 + bcs .L632 + cmp w4, w0 + bls .L631 + mov w4, w0 + mov w2, w20 +.L631: + umaddl x0, w3, w14, x7 + b .L630 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock .type free_data_superblock, %function free_data_superblock: - stp x29, x30, [sp, -16]! - uxth w0, w0 + and w0, w0, 65535 mov w1, 65535 cmp w0, w1 - add x29, sp, 0 - beq .L601 + beq .L646 + stp x29, x30, [sp, -16]! adrp x2, .LANCHOR2+520 ubfiz x1, x0, 1, 16 - ldr x2, [x2,#:lo12:.LANCHOR2+520] - strh wzr, [x2,x1] + add x29, sp, 0 + ldr x2, [x2, #:lo12:.LANCHOR2+520] + strh wzr, [x2, x1] bl INSERT_FREE_LIST -.L601: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L646: + mov w0, 0 + ret .size free_data_superblock, .-free_data_superblock .align 2 .global FtlGcBufInit .type FtlGcBufInit, %function FtlGcBufInit: - adrp x3, .LANCHOR2 - mov w1, 0 - add x0, x3, :lo12:.LANCHOR2 - adrp x10, .LANCHOR0 - mov w11, 24 - mov w12, 1 + adrp x0, .LANCHOR2 + add x1, x0, :lo12:.LANCHOR2 + adrp x3, .LANCHOR0 + mov x7, x0 + add x9, x3, :lo12:.LANCHOR0 + mov w8, 0 + mov w10, 24 + mov w11, 1 + mov w4, 4 + mov w12, 56 + str wzr, [x1, 1380] +.L650: + ldrh w0, [x9, 2472] + cmp w8, w0 + bcc .L651 + add x3, x3, :lo12:.LANCHOR0 + add x1, x7, :lo12:.LANCHOR2 mov w6, 4 - mov w13, 56 - str wzr, [x0,1384] -.L603: - add x5, x10, :lo12:.LANCHOR0 - adrp x9, .LANCHOR0 - ldrh w0, [x5,2472] - cmp w1, w0 - bcs .L607 - add x2, x3, :lo12:.LANCHOR2 - umull x4, w1, w11 - ldr x7, [x2,1392] - ldr x8, [x2,1400] - add x0, x7, x4 - str w12, [x0,16] - ldrh w0, [x5,2554] - mul w0, w1, w0 - sdiv w0, w0, w6 - add x0, x8, w0, sxtw 2 - str x0, [x7,x4] - ldrh w0, [x5,2556] - ldr x8, [x2,1392] - ldr x5, [x2,1408] - mul w0, w1, w0 - add x7, x8, x4 - ldr x2, [x2,1416] - sdiv w0, w0, w6 - add x0, x5, w0, sxtw 2 - str x0, [x7,8] - umull x0, w1, w13 - add w1, w1, 1 - add x0, x2, x0 - ldr x2, [x8,x4] - uxth w1, w1 - str x2, [x0,8] - ldr x2, [x7,8] - str x2, [x0,16] - b .L603 -.L607: - mov w8, 24 - mov w5, 4 -.L605: - add x2, x3, :lo12:.LANCHOR2 - ldr w1, [x2,1424] - cmp w0, w1 - bcs .L608 - umull x4, w0, w8 - ldr x7, [x2,1392] - add x6, x9, :lo12:.LANCHOR0 - ldr x10, [x2,1400] - add x1, x7, x4 - str wzr, [x1,16] - ldrh w1, [x6,2554] - mul w1, w0, w1 - sdiv w1, w1, w5 - add x1, x10, w1, sxtw 2 - str x1, [x7,x4] - ldrh w1, [x6,2556] - ldr x6, [x2,1392] - ldr x2, [x2,1408] - mul w1, w0, w1 - add x4, x6, x4 - add w0, w0, 1 - sdiv w1, w1, w5 - uxth w0, w0 - add x1, x2, w1, sxtw 2 - str x1, [x4,8] - b .L605 -.L608: + mov w7, 24 +.L652: + ldr w2, [x1, 1416] + cmp w0, w2 + bcc .L653 ret +.L651: + umull x2, w8, w10 + ldr x5, [x1, 1384] + ldr x6, [x1, 1392] + add x0, x5, x2 + str w11, [x0, 16] + ldrh w0, [x9, 2554] + mul w0, w0, w8 + sdiv w0, w0, w4 + add x0, x6, w0, sxtw 2 + str x0, [x5, x2] + ldrh w0, [x9, 2556] + ldr x6, [x1, 1384] + ldr x13, [x1, 1400] + add x5, x6, x2 + mul w0, w0, w8 + sdiv w0, w0, w4 + add x0, x13, w0, sxtw 2 + str x0, [x5, 8] + ldr x0, [x1, 1408] + ldr x2, [x6, x2] + nop // between mem op and mult-accumulate + umaddl x0, w8, w12, x0 + add w8, w8, 1 + and w8, w8, 65535 + str x2, [x0, 8] + ldr x2, [x5, 8] + str x2, [x0, 16] + b .L650 +.L653: + umull x5, w0, w7 + ldr x4, [x1, 1384] + ldr x8, [x1, 1392] + add x2, x4, x5 + str wzr, [x2, 16] + ldrh w2, [x3, 2554] + mul w2, w2, w0 + sdiv w2, w2, w6 + add x2, x8, w2, sxtw 2 + str x2, [x4, x5] + ldrh w2, [x3, 2556] + ldr x4, [x1, 1384] + add x4, x4, x5 + ldr x5, [x1, 1400] + mul w2, w2, w0 + add w0, w0, 1 + and w0, w0, 65535 + sdiv w2, w2, w6 + add x2, x5, w2, sxtw 2 + str x2, [x4, 8] + b .L652 .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlGcBufFree .type FtlGcBufFree, %function FtlGcBufFree: adrp x2, .LANCHOR2 - mov w3, 0 add x2, x2, :lo12:.LANCHOR2 + mov w3, 0 mov w7, 56 mov w9, 24 - ldr w8, [x2,1424] - ldr x5, [x2,1392] -.L610: + ldr w8, [x2, 1416] + ldr x4, [x2, 1384] +.L655: cmp w3, w1 - bcs .L609 - umull x4, w3, w7 + bcs .L654 + umaddl x6, w3, w7, x0 mov w2, 0 - add x4, x0, x4 -.L615: - cmp w2, w8 - bcs .L612 - umull x6, w2, w9 - add x10, x5, x6 - ldr x11, [x5,x6] - ldr x6, [x4,8] - cmp x11, x6 - bne .L611 - str wzr, [x10,16] - b .L612 -.L611: + b .L660 +.L656: add w2, w2, 1 - uxth w2, w2 - b .L615 -.L612: + and w2, w2, 65535 +.L660: + cmp w2, w8 + bcs .L657 + umull x5, w2, w9 + add x10, x4, x5 + ldr x11, [x4, x5] + ldr x5, [x6, 8] + cmp x11, x5 + bne .L656 + str wzr, [x10, 16] +.L657: add w3, w3, 1 - uxth w3, w3 - b .L610 -.L609: + and w3, w3, 65535 + b .L655 +.L654: ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -4938,41 +4906,38 @@ FtlGcBufFree: .type FtlGcBufAlloc, %function FtlGcBufAlloc: adrp x2, .LANCHOR2 - mov w7, 24 add x2, x2, :lo12:.LANCHOR2 + mov w3, 0 + mov w7, 24 mov w8, 1 mov w9, 56 - ldr w5, [x2,1424] - ldr x6, [x2,1392] + ldr w5, [x2, 1416] + ldr x6, [x2, 1384] +.L662: + cmp w3, w1 + bcs .L661 mov w2, 0 -.L617: - cmp w2, w1 - bcs .L623 - mov w3, 0 -.L621: - cmp w3, w5 - bcs .L619 - umull x4, w3, w7 - add x4, x6, x4 - ldr w10, [x4,16] - cbnz w10, .L618 - umull x3, w2, w9 - str w8, [x4,16] - add x3, x0, x3 - ldr x10, [x4] - str x10, [x3,8] - ldr x4, [x4,8] - str x4, [x3,16] - b .L619 -.L618: - add w3, w3, 1 - uxth w3, w3 - b .L621 -.L619: + b .L667 +.L663: add w2, w2, 1 - uxth w2, w2 - b .L617 -.L623: + and w2, w2, 65535 +.L667: + cmp w2, w5 + bcs .L664 + umaddl x4, w2, w7, x6 + ldr w10, [x4, 16] + cbnz w10, .L663 + umaddl x2, w3, w9, x0 + ldr x10, [x4] + str w8, [x4, 16] + str x10, [x2, 8] + ldr x4, [x4, 8] + str x4, [x2, 16] +.L664: + add w3, w3, 1 + and w3, w3, 65535 + b .L662 +.L661: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 @@ -4980,81 +4945,76 @@ FtlGcBufAlloc: .type IsBlkInGcList, %function IsBlkInGcList: adrp x1, .LANCHOR2 - uxth w0, w0 add x1, x1, :lo12:.LANCHOR2 - ldrh w2, [x1,1428] - ldr x3, [x1,1432] + and w0, w0, 65535 + ldrh w2, [x1, 1420] + ldr x3, [x1, 1424] mov x1, 0 -.L625: +.L669: cmp w2, w1, uxth - bls .L629 + bhi .L671 + mov w0, 0 + ret +.L671: add x1, x1, 1 add x4, x3, x1, lsl 1 - ldrh w4, [x4,-2] + ldrh w4, [x4, -2] cmp w4, w0 - bne .L625 + bne .L669 mov w0, 1 - b .L626 -.L629: - mov w0, 0 -.L626: ret .size IsBlkInGcList, .-IsBlkInGcList .align 2 .global FtlGcUpdatePage .type FtlGcUpdatePage, %function FtlGcUpdatePage: - stp x29, x30, [sp, -48]! + mov w5, w0 + mov w8, w1 + mov w7, w2 + stp x29, x30, [sp, -16]! + lsr w0, w0, 10 add x29, sp, 0 - str x19, [sp,16] - mov w19, w0 - lsr x0, x19, 10 - str x1, [x29,32] - str x2, [x29,40] bl P2V_block_in_plane + and w9, w0, 65535 adrp x3, .LANCHOR2 - ldr x2, [x29,40] add x4, x3, :lo12:.LANCHOR2 - ldr x1, [x29,32] - uxth w8, w0 - mov x5, 0 - ldrh w7, [x4,1428] - ldr x6, [x4,1432] -.L631: - uxth w4, w5 - cmp w4, w7 - bcs .L635 - add x5, x5, 1 - add x9, x6, x5, lsl 1 - ldrh w9, [x9,-2] - cmp w9, w8 - bne .L631 -.L635: - cmp w4, w7 - bne .L633 - ubfiz x4, x4, 1, 16 - strh w0, [x6,x4] - add x0, x3, :lo12:.LANCHOR2 - ldrh w4, [x0,1428] - add w4, w4, 1 - strh w4, [x0,1428] -.L633: - add x3, x3, :lo12:.LANCHOR2 - mov w0, 12 - ldrh w4, [x3,1440] - ldr x5, [x3,1448] - umull x4, w4, w0 - add x5, x5, x4 - str w1, [x5,4] - ldr x1, [x3,1448] - add x0, x1, x4 - str w2, [x0,8] - str w19, [x1,x4] - ldrh w0, [x3,1440] + ldrh w1, [x4, 1420] + ldr x6, [x4, 1424] + mov x4, 0 +.L674: + and w2, w4, 65535 + cmp w2, w1 + bcc .L676 + bne .L675 + and x4, x4, 65535 + strh w0, [x6, x4, lsl 1] + add x4, x3, :lo12:.LANCHOR2 + ldrh w0, [x4, 1420] add w0, w0, 1 - strh w0, [x3,1440] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + strh w0, [x4, 1420] + b .L675 +.L676: + add x4, x4, 1 + add x2, x6, x4, lsl 1 + ldrh w2, [x2, -2] + cmp w2, w9 + bne .L674 +.L675: + add x0, x3, :lo12:.LANCHOR2 + mov w1, 12 + ldrh w3, [x0, 1432] + ldr x4, [x0, 1440] + umull x3, w3, w1 + add x4, x4, x3 + str w8, [x4, 4] + ldr x1, [x0, 1440] + add x4, x1, x3 + str w7, [x4, 8] + str w5, [x1, x3] + ldrh w1, [x0, 1432] + add w1, w1, 1 + strh w1, [x0, 1432] + ldp x29, x30, [sp], 16 ret .size FtlGcUpdatePage, .-FtlGcUpdatePage .align 2 @@ -5063,54 +5023,54 @@ FtlGcUpdatePage: FtlGcRefreshOpenBlock: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,1456] + and w20, w0, 65535 + ldrh w0, [x19, 1448] cmp w0, w20 - beq .L639 - ldrh w0, [x19,1458] + beq .L680 + ldrh w0, [x19, 1450] cmp w0, w20 - beq .L639 - ldrh w0, [x19,1460] + beq .L680 + ldrh w0, [x19, 1452] cmp w0, w20 - beq .L639 - ldrh w0, [x19,1462] + beq .L680 + ldrh w0, [x19, 1454] cmp w0, w20 - beq .L639 - adrp x0, .LC78 + beq .L680 mov w1, w20 + adrp x0, .LC78 add x0, x0, :lo12:.LC78 bl printk - ldrh w1, [x19,1456] + ldrh w1, [x19, 1448] mov w0, 65535 cmp w1, w0 - bne .L641 - strh w20, [x19,1456] - b .L639 -.L641: - ldrh w1, [x19,1458] - cmp w1, w0 - bne .L642 - strh w20, [x19,1458] - b .L639 -.L642: - ldrh w1, [x19,1460] - cmp w1, w0 - bne .L643 - strh w20, [x19,1460] - b .L639 -.L643: - ldrh w1, [x19,1462] - cmp w1, w0 - bne .L639 - strh w20, [x19,1462] -.L639: + bne .L682 + strh w20, [x19, 1448] +.L680: mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L682: + ldrh w1, [x19, 1450] + cmp w1, w0 + bne .L683 + strh w20, [x19, 1450] + b .L680 +.L683: + ldrh w1, [x19, 1452] + cmp w1, w0 + bne .L684 + strh w20, [x19, 1452] + b .L680 +.L684: + ldrh w1, [x19, 1454] + cmp w1, w0 + bne .L680 + strh w20, [x19, 1454] + b .L680 .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 2 .global FtlGcRefreshBlock @@ -5118,60 +5078,63 @@ FtlGcRefreshOpenBlock: FtlGcRefreshBlock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 - str x21, [sp,32] + and w20, w0, 65535 + str x21, [sp, 32] + ldrh w0, [x19, 1448] + cmp w0, w20 + beq .L693 + ldrh w0, [x19, 1450] + cmp w0, w20 + beq .L693 + ldrh w0, [x19, 1452] + cmp w0, w20 + beq .L693 + ldrh w0, [x19, 1454] mov w21, 0 - ldrh w0, [x19,1456] cmp w0, w20 - beq .L645 - ldrh w0, [x19,1458] - cmp w0, w20 - beq .L645 - ldrh w0, [x19,1460] - cmp w0, w20 - beq .L645 - ldrh w0, [x19,1462] - cmp w0, w20 - beq .L645 - adrp x0, .LC78 + beq .L686 mov w1, w20 + adrp x0, .LC78 add x0, x0, :lo12:.LC78 bl printk - ldrh w1, [x19,1456] + ldrh w1, [x19, 1448] mov w0, 65535 cmp w1, w0 - bne .L646 - strh w20, [x19,1456] - b .L645 -.L646: - ldrh w1, [x19,1458] - cmp w1, w0 - bne .L647 - strh w20, [x19,1458] - b .L645 -.L647: - ldrh w1, [x19,1460] - cmp w1, w0 - bne .L648 - strh w20, [x19,1460] - b .L645 -.L648: - ldrh w1, [x19,1462] - cmp w1, w0 - bne .L653 - strh w20, [x19,1462] - b .L645 -.L653: - mov w21, -1 -.L645: + bne .L688 + strh w20, [x19, 1448] +.L686: mov w0, w21 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L688: + ldrh w1, [x19, 1450] + cmp w1, w0 + bne .L689 + strh w20, [x19, 1450] + b .L686 +.L689: + ldrh w1, [x19, 1452] + cmp w1, w0 + bne .L690 + strh w20, [x19, 1452] + b .L686 +.L690: + ldrh w1, [x19, 1454] + cmp w1, w0 + bne .L695 + strh w20, [x19, 1454] + b .L686 +.L693: + mov w21, 0 + b .L686 +.L695: + mov w21, -1 + b .L686 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 .global FtlGcMarkBadPhyBlk @@ -5179,59 +5142,59 @@ FtlGcRefreshBlock: FtlGcMarkBadPhyBlk: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w20, w0 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x21, x22, [sp,32] - mov w0, w20 + stp x21, x22, [sp, 32] add x22, x19, :lo12:.LANCHOR2 - str x23, [sp,48] + and w20, w0, 65535 + str x23, [sp, 48] + mov w0, w20 bl P2V_block_in_plane - uxth w21, w0 - ldrh w1, [x22,1464] - adrp x0, .LC79 + ldrh w1, [x22, 1456] mov w2, w20 + and w21, w0, 65535 + adrp x0, .LC79 add x0, x0, :lo12:.LC79 bl printk mov w0, w21 bl FtlGcRefreshBlock adrp x0, .LANCHOR0+2372 - ldr w0, [x0,#:lo12:.LANCHOR0+2372] - cbz w0, .L655 + ldr w0, [x0, #:lo12:.LANCHOR0+2372] + cbz w0, .L698 + ldr x2, [x22, 440] ubfiz x0, x21, 1, 16 - ldr x2, [x22,440] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] cmp w1, 39 - bls .L655 + bls .L698 sub w1, w1, #40 - strh w1, [x2,x0] -.L655: + strh w1, [x2, x0] +.L698: add x2, x19, :lo12:.LANCHOR2 - mov x0, 0 - add x2, x2, 1472 - ldrh w1, [x2,-8] -.L656: - cmp w1, w0, uxth - bls .L662 - add x0, x0, 1 - add x3, x2, x0, lsl 1 - ldrh w3, [x3,-2] - cmp w3, w20 - bne .L656 - b .L657 -.L662: - cmp w1, 15 - bhi .L657 + mov x1, 0 + add x2, x2, 1464 + ldrh w0, [x2, -8] +.L699: + cmp w0, w1, uxth + bhi .L701 + cmp w0, 15 + bhi .L700 add x19, x19, :lo12:.LANCHOR2 - add w0, w1, 1 - add x19, x19, 1472 - strh w0, [x19,-8] - strh w20, [x19,w1,sxtw 1] -.L657: + add w1, w0, 1 + add x19, x19, 1464 + strh w1, [x19, -8] + strh w20, [x19, w0, sxtw 1] + b .L700 +.L701: + add x1, x1, 1 + add x3, x2, x1, lsl 1 + ldrh w3, [x3, -2] + cmp w3, w20 + bne .L699 +.L700: mov w0, 0 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk @@ -5241,32 +5204,32 @@ FtlGcMarkBadPhyBlk: FtlGcReFreshBadBlk: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,1464] - cbz w1, .L664 - ldrh w3, [x0,1456] + ldrh w1, [x0, 1456] + cbz w1, .L707 + ldrh w3, [x0, 1448] mov w2, 65535 cmp w3, w2 - bne .L664 - ldrh w2, [x0,1506] + bne .L707 + ldrh w2, [x0, 1498] cmp w2, w1 - bcc .L665 - strh wzr, [x0,1506] -.L665: + bcc .L708 + strh wzr, [x0, 1498] +.L708: add x19, x19, :lo12:.LANCHOR2 - add x0, x19, 1472 - ldrh w1, [x19,1506] - ldrh w0, [x0,w1,sxtw 1] + add x0, x19, 1464 + ldrh w1, [x19, 1498] + ldrh w0, [x0, x1, lsl 1] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh w0, [x19,1506] + ldrh w0, [x19, 1498] add w0, w0, 1 - strh w0, [x19,1506] -.L664: + strh w0, [x19, 1498] +.L707: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk @@ -5287,448 +5250,423 @@ ftl_memset: BuildFlashLsbPageTable: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w20, w1 - cbnz w0, .L671 + cbnz w0, .L716 adrp x1, .LANCHOR0 - mov x0, 0 add x1, x1, :lo12:.LANCHOR0 -.L672: - add x2, x1, 208 - strh w0, [x2,x0,lsl 1] + add x1, x1, 208 + mov x0, 0 +.L717: + strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 512 - bne .L672 -.L678: + bne .L717 +.L723: adrp x19, .LANCHOR2 - mov w1, 255 add x19, x19, :lo12:.LANCHOR2 + add x19, x19, 1500 + mov w1, 255 mov w2, 2048 - add x19, x19, 1508 - uxth w20, w20 mov x0, x19 bl ftl_memset - adrp x1, .LANCHOR0 - mov x0, 0 - add x1, x1, :lo12:.LANCHOR0 - b .L673 -.L671: + and w20, w20, 65535 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x0, x0, 208 + mov x1, 0 +.L718: + cmp w20, w1, uxth + bhi .L751 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L716: cmp w0, 1 - bne .L674 - adrp x3, .LANCHOR0 - mov x0, 0 - mov w4, 3 - mov w5, 2 - add x3, x3, :lo12:.LANCHOR0 -.L677: - cmp x0, 3 - uxth w2, w0 - mov w1, w2 - bls .L675 - ubfiz w1, w2, 1, 15 - and w2, w2, 1 - cmp w2, wzr - csel w2, w4, w5, ne - sub w1, w1, w2 - uxth w1, w1 -.L675: - add x2, x3, 208 - strh w1, [x2,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L677 - b .L678 -.L674: + bne .L719 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + add x2, x2, 208 + mov x1, 0 +.L722: + and w0, w1, 65535 + cmp x1, 3 + bls .L720 + ubfiz w3, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 2 + sub w0, w3, w0 + and w0, w0, 65535 +.L720: + strh w0, [x2, x1, lsl 1] + add x1, x1, 1 + cmp x1, 512 + bne .L722 + b .L723 +.L719: cmp w0, 2 - bne .L679 - adrp x3, .LANCHOR0 + bne .L724 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + add x2, x2, 208 mov w1, 65535 mov x0, 0 - add x3, x3, :lo12:.LANCHOR0 -.L681: - add x4, x3, 208 - cmp x0, 1 - uxth w2, w0 - csel w2, w1, w2, hi +.L726: + cmp x0, 2 + and w3, w0, 65535 + csel w3, w3, w1, cc + strh w3, [x2, x0, lsl 1] add w1, w1, 2 - strh w2, [x4,x0,lsl 1] add x0, x0, 1 + and w1, w1, 65535 cmp x0, 512 - uxth w1, w1 - bne .L681 - b .L678 -.L679: + bne .L726 + b .L723 +.L724: cmp w0, 3 - bne .L682 - adrp x3, .LANCHOR0 - mov x0, 0 - mov w4, 5 - mov w5, 4 - add x3, x3, :lo12:.LANCHOR0 -.L685: - cmp x0, 5 - uxth w2, w0 - mov w1, w2 - bls .L683 - ubfiz w1, w2, 1, 15 - and w2, w2, 1 - cmp w2, wzr - csel w2, w4, w5, ne - sub w1, w1, w2 - uxth w1, w1 -.L683: - add x2, x3, 208 - strh w1, [x2,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L685 - b .L678 -.L682: - cmp w0, 4 - bne .L686 - adrp x1, .LANCHOR0 - mov w5, 7 - add x1, x1, :lo12:.LANCHOR0 - mov w4, 6 - add x2, x1, 208 - strh w0, [x2,8] - mov w0, 5 - strh wzr, [x1,208] - mov w1, 1 - strh w0, [x2,10] - mov w0, 7 - strh w1, [x2,2] - mov w1, 2 - strh w0, [x2,12] - mov w0, 8 - strh w1, [x2,4] - mov w1, 3 - strh w0, [x2,14] - mov w0, 8 - strh w1, [x2,6] -.L688: - and w3, w0, 1 - ubfiz w1, w0, 1, 15 - add w0, w0, 1 - cmp w3, wzr - csel w3, w5, w4, ne - add x2, x2, 2 - uxth w0, w0 - sub w1, w1, w3 - cmp w0, 512 - strh w1, [x2,14] - bne .L688 - b .L678 -.L686: - cmp w0, 5 - bne .L689 + bne .L727 adrp x2, .LANCHOR0 - mov x0, 0 add x2, x2, :lo12:.LANCHOR0 -.L690: - add x1, x2, 208 - strh w0, [x1,x0,lsl 1] + add x2, x2, 208 + mov x1, 0 +.L730: + and w0, w1, 65535 + cmp x1, 5 + bls .L728 + ubfiz w3, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 4 + sub w0, w3, w0 + and w0, w0, 65535 +.L728: + strh w0, [x2, x1, lsl 1] + add x1, x1, 1 + cmp x1, 512 + bne .L730 + b .L723 +.L727: + cmp w0, 4 + bne .L731 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + mov w3, 1 + add x1, x1, 224 + strh w0, [x1, -8] + mov w0, 5 + strh w3, [x1, -14] + mov w3, 2 + strh w0, [x1, -6] + mov w0, 7 + strh w3, [x1, -12] + mov w3, 3 + strh w0, [x1, -4] + mov w0, 8 + strh wzr, [x1, -16] + strh w0, [x1, -2] + mov w0, 8 + strh w3, [x1, -10] +.L733: + and w3, w0, 1 + ubfiz w2, w0, 1, 15 + add w3, w3, 6 + add w0, w0, 1 + sub w2, w2, w3 + strh w2, [x1], 2 + and w0, w0, 65535 + cmp w0, 512 + bne .L733 + b .L723 +.L731: + cmp w0, 5 + bne .L734 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + add x2, x1, 208 + mov x0, 0 +.L735: + strh w0, [x2, x0, lsl 1] add x0, x0, 1 cmp x0, 16 - bne .L690 - mov x0, 0 -.L691: - add x2, x1, x0 - add w3, w0, 16 - add x0, x0, 2 - cmp x0, 992 - strh w3, [x2,32] - bne .L691 - b .L678 -.L689: + bne .L735 + add x1, x1, 240 +.L736: + strh w0, [x1], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 1008 + bne .L736 + b .L723 +.L734: cmp w0, 6 - bne .L692 - adrp x1, .LANCHOR0 + bne .L737 + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 + add x3, x3, 208 + mov w1, 0 mov x2, 0 mov w4, 12 mov w5, 10 - add x1, x1, :lo12:.LANCHOR0 -.L695: +.L740: + and w0, w2, 65535 cmp x2, 5 - uxth w3, w2 - mov w0, w3 - bls .L693 - add w0, w3, w3, lsl 1 - and w3, w3, 1 - cmp w3, wzr - uxth w0, w0 - csel w3, w4, w5, ne - sub w0, w0, w3 - uxth w0, w0 -.L693: - add x3, x1, 208 - strh w0, [x3,x2,lsl 1] + bls .L738 + tst x0, 1 + csel w0, w4, w5, ne + sub w0, w1, w0 + and w0, w0, 65535 +.L738: + strh w0, [x3, x2, lsl 1] + add w1, w1, 3 + and w1, w1, 65535 add x2, x2, 1 - cmp x2, 512 - bne .L695 - b .L678 -.L692: + cmp w1, 1536 + bne .L740 + b .L723 +.L737: cmp w0, 9 - bne .L696 + bne .L741 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - add x1, x0, 208 - strh wzr, [x0,208] - mov w0, 1 - strh w0, [x1,2] - mov w0, 2 - strh w0, [x1,4] - mov x0, 0 -.L697: - add x2, x1, x0 - add w3, w0, 3 - add x0, x0, 2 - cmp x0, 1018 - strh w3, [x2,6] - bne .L697 - b .L678 -.L696: + mov w2, 1 + add x0, x0, 214 + mov w1, 3 + strh w2, [x0, -4] + mov w2, 2 + strh wzr, [x0, -6] + strh w2, [x0, -2] +.L742: + strh w1, [x0], 2 + add w1, w1, 2 + and w1, w1, 65535 + cmp w1, 1021 + bne .L742 + b .L723 +.L741: cmp w0, 10 - bne .L698 - adrp x2, .LANCHOR0 + bne .L743 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + add x2, x1, 208 mov x0, 0 - add x2, x2, :lo12:.LANCHOR0 -.L699: - add x1, x2, 208 - strh w0, [x1,x0,lsl 1] +.L744: + strh w0, [x2, x0, lsl 1] add x0, x0, 1 cmp x0, 63 - bne .L699 - mov x0, 0 -.L700: - add x2, x1, x0 - add w3, w0, 63 - add x0, x0, 2 - cmp x0, 898 - strh w3, [x2,126] - bne .L700 - b .L678 -.L698: + bne .L744 + add x1, x1, 334 +.L745: + strh w0, [x1], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 961 + bne .L745 + b .L723 +.L743: cmp w0, 11 - bne .L701 + bne .L746 adrp x1, .LANCHOR0 - mov x0, 0 add x1, x1, :lo12:.LANCHOR0 -.L702: add x2, x1, 208 - strh w0, [x2,x0,lsl 1] + mov x0, 0 +.L747: + strh w0, [x2, x0, lsl 1] add x0, x0, 1 cmp x0, 8 - bne .L702 - mov w5, 7 - mov w4, 6 -.L704: + bne .L747 + add x1, x1, 224 +.L749: and w3, w0, 1 - ubfiz w1, w0, 1, 15 + ubfiz w2, w0, 1, 15 + add w3, w3, 6 add w0, w0, 1 - cmp w3, wzr - csel w3, w5, w4, ne - add x2, x2, 2 - uxth w0, w0 - sub w1, w1, w3 + sub w2, w2, w3 + strh w2, [x1], 2 + and w0, w0, 65535 cmp w0, 512 - strh w1, [x2,14] - bne .L704 - b .L678 -.L701: + bne .L749 + b .L723 +.L746: cmp w0, 12 - bne .L678 - adrp x1, .LANCHOR0 - mov w2, 4 - add x1, x1, :lo12:.LANCHOR0 - add x0, x1, 208 - strh wzr, [x1,208] - mov w1, 1 - strh w1, [x0,2] - mov w1, 2 - strh w1, [x0,4] - mov w1, 3 - strh w1, [x0,6] -.L705: - sub w1, w2, #1 - add x0, x0, 2 - add w1, w1, w2, lsr 1 - add w2, w2, 1 - strh w1, [x0,6] - uxth w2, w2 - cmp w2, 512 - bne .L705 - b .L678 -.L673: - cmp w20, w0, uxth - bls .L730 - add x2, x1, 208 - ldrh w2, [x2,x0,lsl 1] - add x0, x0, 1 - strh w2, [x19,w2,sxtw 1] - b .L673 -.L730: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - ret + bne .L723 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov w2, 1 + add x0, x0, 216 + mov w1, 4 + strh w2, [x0, -6] + mov w2, 2 + strh wzr, [x0, -8] + strh w2, [x0, -4] + mov w2, 3 + strh w2, [x0, -2] +.L750: + sub w2, w1, #1 + add w2, w2, w1, lsr 1 + add w1, w1, 1 + strh w2, [x0], 2 + and w1, w1, 65535 + cmp w1, 512 + bne .L750 + b .L723 +.L751: + ldrh w2, [x0, x1, lsl 1] + add x1, x1, 1 + strh w2, [x19, w2, sxtw 1] + b .L718 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 2 .global FlashDieInfoInit .type FlashDieInfoInit, %function FlashDieInfoInit: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .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, [x0,3556] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + add x0, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + adrp x22, .LANCHOR0 + add x19, x22, :lo12:.LANCHOR0 + add x20, x19, 1232 + strb wzr, [x0, 3548] adrp x0, .LANCHOR1+482 - add x19, x21, :lo12:.LANCHOR0 - mov x24, 0 - add x25, x19, 2132 - ldrh w0, [x0,#:lo12:.LANCHOR1+482] - strb wzr, [x19,2358] + strb wzr, [x19, 2358] + ldrh w0, [x0, #:lo12:.LANCHOR1+482] bl FlashBlockAlignInit - mov w1, 0 mov w2, 8 + mov w1, 0 add x0, x19, 2360 bl ftl_memset - mov w1, 0 mov w2, 32 - add x0, x19, 1232 - bl ftl_memset - add x0, x19, 2164 mov w1, 0 - mov w2, 192 + mov x0, x20 bl ftl_memset - ldr x20, [x19,88] - add x23, x20, 1 -.L733: - ldrb w2, [x20] - mov x0, x23 - add x1, x25, x24, lsl 3 + mov w2, 192 + mov w1, 0 + add x0, x19, 2164 + bl ftl_memset + ldr x7, [x19, 88] + add x11, x19, 2132 + mov x8, 0 + add x12, x7, 1 +.L775: + ldrb w2, [x7] + add x1, x11, x8, lsl 3 + mov x0, x12 bl FlashMemCmp8 - cbnz w0, .L732 - ldrb w1, [x19,2358] - add x2, x19, 1232 - str w0, [x2,w1,sxtw 2] - add w0, w1, 1 - add x1, x19, w1, sxtw - strb w0, [x19,2358] - strb w24, [x1,2360] -.L732: - add x24, x24, 1 - cmp x24, 4 - bne .L733 - add x19, x21, :lo12:.LANCHOR0 - add x0, x22, :lo12:.LANCHOR2 - ldrb w1, [x19,2358] - strb w1, [x0,3556] - ldrb w0, [x20,8] + cbnz w0, .L774 + ldrb w0, [x19, 2358] + add w1, w0, 1 + strb w1, [x19, 2358] + str wzr, [x20, x0, lsl 2] + add x0, x19, x0 + strb w8, [x0, 2360] +.L774: + add x8, x8, 1 + cmp x8, 4 + bne .L775 + add x8, x22, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR2 + ldrb w1, [x8, 2358] + strb w1, [x0, 3548] + ldrb w0, [x7, 8] cmp w0, 2 - beq .L734 -.L738: - add x21, x21, :lo12:.LANCHOR0 - ldrb w1, [x20,13] - add x22, x22, :lo12:.LANCHOR2 - ldp x23, x24, [sp,48] - ldrb w0, [x21,2358] - ldp x25, x26, [sp,64] + beq .L776 +.L780: + add x9, x22, :lo12:.LANCHOR0 + ldrh w1, [x7, 14] + add x10, x21, :lo12:.LANCHOR2 + ldp x19, x20, [sp, 16] + ldrb w0, [x9, 2358] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 mul w0, w0, w1 - ldrh w1, [x20,14] - ldp x19, x20, [sp,16] + ldrb w1, [x7, 13] mul w0, w0, w1 - strh w0, [x22,3558] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + strh w0, [x10, 3550] ret -.L734: - ldr w25, [x19,76] - mov x24, 0 - add x26, x19, 2132 -.L737: - ldrb w2, [x20] - mov x0, x23 - add x1, x26, x24, lsl 3 +.L776: + ldr w14, [x8, 76] + add x15, x8, 2132 + add x13, x8, 1232 + mov x11, 0 +.L779: + ldrb w2, [x7] + add x1, x15, x11, lsl 3 + mov x0, x12 bl FlashMemCmp8 - cbnz w0, .L735 - ldrb w1, [x20,13] - add x4, x19, 1232 - ldrb w3, [x19,2358] - mul w0, w1, w25 - ldrh w1, [x20,14] - mov x2, x3 - and w1, w1, 65280 - mul w1, w0, w1 - str w1, [x4,w3,sxtw 2] - ldrb w0, [x20,23] - cbz w0, .L736 - lsl w1, w1, 1 - str w1, [x4,w3,sxtw 2] -.L736: - add x0, x19, x3 + cbnz w0, .L777 + ldrb w1, [x7, 13] + ldrh w0, [x7, 14] + ldrb w2, [x8, 2358] + and w0, w0, 65280 + mul w1, w1, w14 + mul w0, w0, w1 + sxtw x1, w2 + str w0, [x13, x1, lsl 2] + ldrb w3, [x7, 23] + cbz w3, .L778 + lsl w0, w0, 1 + str w0, [x13, x1, lsl 2] +.L778: + add x1, x8, x1 add w2, w2, 1 - strb w2, [x19,2358] - strb w24, [x0,2360] -.L735: - add x24, x24, 1 - cmp x24, 4 - bne .L737 - b .L738 + strb w2, [x8, 2358] + strb w11, [x1, 2360] +.L777: + add x11, x11, 1 + cmp x11, 4 + bne .L779 + b .L780 .size FlashDieInfoInit, .-FlashDieInfoInit .align 2 .global ftl_read_flash_info .type ftl_read_flash_info, %function ftl_read_flash_info: stp x29, x30, [sp, -32]! - mov w1, 0 mov w2, 11 + mov w1, 0 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov x19, x0 bl ftl_memset - adrp x1, .LANCHOR0 - mov w5, 1 - add x1, x1, :lo12:.LANCHOR0 - ldr x0, [x1,88] - ldrb w2, [x0,9] - ldr w0, [x1,76] - mul w0, w0, w2 - strh w0, [x19,4] - ldrb w0, [x1,2464] - strb w0, [x19,7] - ldr w0, [x1,2584] - str w0, [x19] - ldr x0, [x1,88] - ldrb w4, [x1,2358] - ldrb w0, [x0,9] - strb w0, [x19,6] - mov w0, 32 - strb w0, [x19,8] - ldr x0, [x1,88] - ldrb w0, [x0,7] - strb w0, [x19,9] - mov x0, 0 - strb wzr, [x19,10] -.L746: - cmp w4, w0, uxtb - bls .L748 - add x2, x1, 2360 - ldrb w3, [x19,10] - ldrb w2, [x0,x2] - add x0, x0, 1 - lsl w2, w5, w2 - orr w2, w2, w3 - strb w2, [x19,10] - b .L746 -.L748: - ldr x19, [sp,16] + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov w4, 1 + ldr x1, [x0, 88] + ldrb w2, [x1, 9] + ldr w1, [x0, 76] + mul w1, w1, w2 + mov x2, 0 + strh w1, [x19, 4] + ldrb w1, [x0, 2464] + strb w1, [x19, 7] + ldr w1, [x0, 2584] + str w1, [x19] + ldr x1, [x0, 88] + ldrb w3, [x0, 2358] + ldrb w1, [x1, 9] + strb w1, [x19, 6] + mov w1, 32 + strb w1, [x19, 8] + ldr x1, [x0, 88] + add x0, x0, 2360 + ldrb w1, [x1, 7] + strb w1, [x19, 9] + strb wzr, [x19, 10] +.L789: + cmp w3, w2, uxtb + bhi .L790 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L790: + ldrb w1, [x2, x0] + add x2, x2, 1 + ldrb w5, [x19, 10] + lsl w1, w4, w1 + orr w1, w1, w5 + strb w1, [x19, 10] + b .L789 .size ftl_read_flash_info, .-ftl_read_flash_info .align 2 .global FtlMemInit @@ -5736,351 +5674,353 @@ ftl_read_flash_info: FtlMemInit: stp x29, x30, [sp, -80]! mov w1, 65535 + mov w2, 1024 add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR2 - adrp x22, .LANCHOR0 add x0, x21, :lo12:.LANCHOR2 - str x25, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - add x3, x22, :lo12:.LANCHOR0 - str w1, [x0,3572] - strh wzr, [x0,3560] + stp x19, x20, [sp, 16] + add x3, x0, 512 + stp x23, x24, [sp, 48] + str x25, [sp, 64] + add x4, x0, 512 + strh wzr, [x0, 3552] + add x5, x0, 3328 + str wzr, [x0, 448] + adrp x22, .LANCHOR0 + stp wzr, wzr, [x3, 208] + stp wzr, wzr, [x3, 216] + str wzr, [x0, 736] + str wzr, [x0, 740] + stp wzr, wzr, [x4, 240] + stp wzr, wzr, [x4, 248] + str wzr, [x0, 772] + str wzr, [x0, 776] + str wzr, [x0, 1360] + str wzr, [x0, 1368] + str wzr, [x0, 1376] + stp w1, wzr, [x5, 236] mov w1, -1 - str wzr, [x0,3564] - strh w1, [x0,1456] - str wzr, [x0,848] - str wzr, [x0,752] - str wzr, [x0,756] - str wzr, [x0,740] - str wzr, [x0,728] - str wzr, [x0,724] - str wzr, [x0,732] - str wzr, [x0,736] - str wzr, [x0,720] - str wzr, [x0,760] - str wzr, [x0,764] - str wzr, [x0,448] - str wzr, [x0,772] - str wzr, [x0,776] - str wzr, [x0,3568] - str wzr, [x0,1380] - str wzr, [x0,3576] - str wzr, [x0,1372] - str wzr, [x0,3580] - strh w1, [x0,1458] - strh w1, [x0,1460] - strh w1, [x0,1462] + stp wzr, wzr, [x5, 228] + str wzr, [x0, 3572] + strh w1, [x0, 1448] + strh w1, [x0, 1450] + strh w1, [x0, 1452] + strh w1, [x0, 1454] mov w1, 32 - ldrh w2, [x3,2550] - strh w1, [x0,1368] + strh w1, [x0, 1364] mov w1, 128 - strh w1, [x0,1370] - mov w1, 1024 - strh wzr, [x0,1376] - sdiv w2, w1, w2 - ldrh w1, [x3,2472] - strh wzr, [x0,1464] + strh w1, [x0, 1366] + add x1, x22, :lo12:.LANCHOR0 + strh wzr, [x0, 1372] + strh wzr, [x0, 1456] + ldrh w3, [x1, 2550] + ldrh w1, [x1, 2472] + strh wzr, [x0, 3576] + strh wzr, [x0, 1498] + sdiv w2, w2, w3 lsl w1, w1, 2 - strh wzr, [x0,3584] - strh wzr, [x0,1506] + str w2, [x0, 3580] cmp w2, w1 - str w2, [x0,3588] - bls .L750 - str w1, [x0,3588] -.L750: + bls .L793 + str w1, [x0, 3580] +.L793: add x20, x22, :lo12:.LANCHOR0 add x19, x21, :lo12:.LANCHOR2 mov w24, 56 - ldrh w0, [x20,2548] - str wzr, [x20,2600] + ldrh w0, [x20, 2548] + str wzr, [x20, 2600] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,1432] - ldrh w1, [x20,2548] + ldrh w1, [x20, 2548] + str x0, [x19, 1424] mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w23, [x20,2472] - str x0, [x19,1448] + ldrh w23, [x20, 2472] + str x0, [x19, 1440] mul w23, w23, w24 lsl w25, w23, 3 mov w0, w25 bl ftl_malloc - str x0, [x19,3592] + str x0, [x19, 3584] mov w0, w23 bl ftl_malloc - str x0, [x19,3600] + str x0, [x19, 3592] mov w0, w25 bl ftl_malloc - str x0, [x19,3608] + str x0, [x19, 3600] mov w0, w23 bl ftl_malloc - str x0, [x19,432] + str x0, [x19, 432] mov w0, w23 bl ftl_malloc - str x0, [x19,1416] - ldr w0, [x19,3588] + str x0, [x19, 1408] + ldr w0, [x19, 3580] mul w0, w0, w24 bl ftl_malloc - str x0, [x20,2608] - ldrh w0, [x20,2472] - ldrh w23, [x20,2554] + str x0, [x20, 2608] + ldrh w0, [x20, 2472] + ldrh w23, [x20, 2554] lsl w0, w0, 1 add w0, w0, 1 - str w0, [x19,1424] + str w0, [x19, 1416] mov w0, w23 bl ftl_malloc - str x0, [x19,3616] + str x0, [x19, 3608] mov w0, w23 bl ftl_malloc - str x0, [x19,3624] + str x0, [x19, 3616] mov w0, w23 bl ftl_malloc - str x0, [x19,3632] - ldr w0, [x19,1424] + str x0, [x19, 3624] + ldr w0, [x19, 1416] mul w0, w23, w0 bl ftl_malloc - str x0, [x19,1400] - ldr w0, [x19,3588] + str x0, [x19, 1392] + ldr w0, [x19, 3580] mul w0, w23, w0 bl ftl_malloc - str x0, [x19,3640] + str x0, [x19, 3632] mov w0, w23 bl ftl_malloc - str x0, [x19,3648] + str x0, [x19, 3640] mov w0, w23 bl ftl_malloc - str x0, [x19,3656] - ldr w1, [x19,1424] + str x0, [x19, 3648] + ldr w1, [x19, 1416] mov w0, 24 mul w0, w1, w0 bl ftl_malloc - ldrh w23, [x20,2472] - str x0, [x19,1392] - ldrh w0, [x20,2556] - mul w23, w0, w23 + ldrh w23, [x20, 2556] + str x0, [x19, 1384] + ldrh w0, [x20, 2472] + mul w23, w23, w0 mov w0, w23 bl ftl_malloc - str x0, [x19,3664] + str x0, [x19, 3656] lsl w0, w23, 3 bl ftl_malloc - str x0, [x19,3672] - ldrh w1, [x20,2556] - ldr w0, [x19,1424] + str x0, [x19, 3664] + ldrh w1, [x20, 2556] + ldr w0, [x19, 1416] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,1408] - ldrh w1, [x20,2556] - ldr w0, [x19,3588] + str x0, [x19, 1400] + ldrh w1, [x20, 2556] + ldr w0, [x19, 3580] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,3680] - ldrh w0, [x20,2482] - lsl w0, w0, 1 - strh w0, [x19,3688] + str x0, [x19, 3672] + ldrh w0, [x20, 2482] + ubfiz w0, w0, 1, 15 + strh w0, [x19, 3680] and w0, w0, 65534 bl ftl_malloc - str x0, [x19,3696] - ldrh w0, [x19,3688] + str x0, [x19, 3688] + ldrh w0, [x19, 3680] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19,3688] + strh w0, [x19, 3680] lsl w0, w0, 9 bl ftl_malloc - ldrh w23, [x20,2482] - str x0, [x19,3704] + ldrh w23, [x20, 2482] + str x0, [x19, 3696] add x0, x0, 32 - lsl w23, w23, 1 - str x0, [x19,440] - mov w0, w23 - bl ftl_malloc - str x0, [x19,3712] - mov w0, w23 - bl ftl_malloc - ldr w23, [x20,2572] - str x0, [x19,520] + str x0, [x19, 440] lsl w23, w23, 1 mov w0, w23 bl ftl_malloc - str x0, [x19,3720] + str x0, [x19, 3704] mov w0, w23 bl ftl_malloc - str x0, [x19,3728] - ldrh w0, [x20,2482] + ldr w23, [x20, 2572] + str x0, [x19, 520] + lsl w23, w23, 1 + mov w0, w23 + bl ftl_malloc + str x0, [x19, 3712] + mov w0, w23 + bl ftl_malloc + str x0, [x19, 3720] + ldrh w0, [x20, 2482] lsr w0, w0, 3 add w0, w0, 4 bl ftl_malloc - str x0, [x22,#:lo12:.LANCHOR0] - ldrh w0, [x20,2564] + str x0, [x20, 64] + ldrh w0, [x20, 2564] lsl w0, w0, 1 bl ftl_malloc - str x0, [x20,2592] - ldrh w0, [x20,2564] + str x0, [x20, 2592] + ldrh w0, [x20, 2564] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,3736] - ldrh w0, [x20,2564] + str x0, [x19, 3728] + ldrh w0, [x20, 2564] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,3744] - ldrh w0, [x20,2566] + str x0, [x19, 3736] + ldrh w0, [x20, 2566] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,3752] - ldrh w2, [x20,2566] + ldrh w2, [x20, 2566] mov w1, 0 + str x0, [x19, 3744] lsl w2, w2, 2 bl ftl_memset - ldrh w23, [x20,2580] + ldrh w23, [x20, 2580] lsl w23, w23, 2 mov w0, w23 bl ftl_malloc - str x0, [x19,3760] + str x0, [x19, 3752] mov w0, w23 bl ftl_malloc - str x0, [x19,3768] - ldr w0, [x20,2572] + str x0, [x19, 3760] + ldr w0, [x20, 2572] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,3776] - ldrh w0, [x20,2582] + str x0, [x19, 3768] + ldrh w0, [x20, 2582] lsl w0, w0, 4 bl ftl_malloc - str x0, [x19,704] - ldrh w1, [x20,2582] - ldrh w0, [x20,2554] + ldrh w1, [x20, 2582] + str x0, [x19, 704] + ldrh w0, [x20, 2554] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,3784] - ldrh w1, [x20,2482] + str x0, [x19, 3776] + ldrh w1, [x20, 2482] mov w0, 6 mul w0, w1, w0 bl ftl_malloc - str x0, [x19,504] - ldrh w0, [x20,2542] - ldrh w1, [x20,2494] + str x0, [x19, 504] + ldrh w0, [x20, 2542] + ldrh w1, [x20, 2494] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x19,3792] - mul w0, w0, w1 + strh w0, [x19, 3784] + mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc - str x0, [x20,2656] - add x1, x20, 2624 - ldrh w4, [x19,3792] - ldrh w5, [x20,2494] - mov w0, 1 - mov w2, w4 -.L751: + ldrh w3, [x19, 3784] + add x4, x20, 2664 + ldrh w5, [x20, 2494] + mov w1, w3 + str x0, [x20, 2656] + mov x0, 1 +.L794: cmp w0, w5 - add x1, x1, 8 - bcs .L851 - ldr x3, [x20,2656] - add w0, w0, 1 - add x3, x3, w2, uxtw 2 - add w2, w2, w4 - str x3, [x1,32] - b .L751 -.L851: - add x1, x22, :lo12:.LANCHOR0 -.L753: - cmp w0, 8 - beq .L852 - add x2, x1, w0, uxtw 3 - add w0, w0, 1 - str xzr, [x2,2656] - b .L753 -.L852: + bcc .L795 + mov w1, 8 + add x3, x22, :lo12:.LANCHOR0 + sub w1, w1, w0 + add x3, x3, 2624 + add x1, x1, 1 + mov x2, 0 +.L796: + add x2, x2, 1 + cmp x2, x1 + bne .L797 add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,3720] - cbnz x1, .L755 -.L757: - adrp x0, .LC80 + ldr x1, [x0, 3712] + cbnz x1, .L798 +.L800: adrp x1, .LANCHOR3 - add x0, x0, :lo12:.LC80 + adrp x0, .LC80 add x1, x1, :lo12:.LANCHOR3 + add x0, x0, :lo12:.LC80 bl printk mov w0, -1 - b .L756 -.L755: - ldr x1, [x0,3728] - cbz x1, .L757 - ldr x1, [x0,3760] - cbz x1, .L757 - ldr x1, [x0,3776] - cbz x1, .L757 - ldr x1, [x0,704] - cbz x1, .L757 - ldr x1, [x0,3784] - cbz x1, .L757 - ldr x1, [x0,504] - cbz x1, .L757 - add x22, x22, :lo12:.LANCHOR0 - ldr x1, [x22,2656] - cbz x1, .L757 - ldr x0, [x0,520] - cbz x0, .L757 - add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,1432] - cbz x1, .L757 - ldr x1, [x0,1448] - cbz x1, .L757 - ldr x1, [x0,3592] - cbz x1, .L757 - ldr x1, [x0,3608] - cbz x1, .L757 - ldr x1, [x0,432] - cbz x1, .L757 - ldr x1, [x0,1416] - cbz x1, .L757 - ldr x1, [x0,3600] - cbz x1, .L757 - ldr x1, [x0,3616] - cbz x1, .L757 - ldr x1, [x0,3624] - cbz x1, .L757 - ldr x0, [x0,3632] - cbz x0, .L757 - add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,1400] - cbz x1, .L757 - ldr x1, [x0,3648] - cbz x1, .L757 - ldr x1, [x0,3656] - cbz x1, .L757 - ldr x1, [x0,1392] - cbz x1, .L757 - ldr x1, [x0,3664] - cbz x1, .L757 - ldr x1, [x0,3672] - cbz x1, .L757 - ldr x1, [x0,1408] - cbz x1, .L757 - ldr x1, [x0,440] - cbz x1, .L757 - ldr x0, [x0,3696] - cbz x0, .L757 - adrp x0, .LANCHOR0+2592 - ldr x0, [x0,#:lo12:.LANCHOR0+2592] - cbz x0, .L757 - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldr x1, [x0,3736] - cbz x1, .L757 - ldr x1, [x0,3744] - cbz x1, .L757 - ldr x0, [x0,3752] - cbz x0, .L757 - mov w0, 0 -.L756: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] +.L792: + 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 +.L795: + ldr x2, [x20, 2656] + add w0, w0, 1 + add x2, x2, w1, uxtw 2 + add w1, w1, w3 + str x2, [x4], 8 + b .L794 +.L797: + add x4, x0, x2 + add x4, x3, x4, lsl 3 + str xzr, [x4, 24] + b .L796 +.L798: + ldr x1, [x0, 3720] + cbz x1, .L800 + ldr x1, [x0, 3752] + cbz x1, .L800 + ldr x1, [x0, 3768] + cbz x1, .L800 + ldr x1, [x0, 704] + cbz x1, .L800 + ldr x1, [x0, 3776] + cbz x1, .L800 + ldr x1, [x0, 504] + cbz x1, .L800 + add x22, x22, :lo12:.LANCHOR0 + ldr x1, [x22, 2656] + cbz x1, .L800 + ldr x0, [x0, 520] + cbz x0, .L800 + add x0, x21, :lo12:.LANCHOR2 + ldr x1, [x0, 1424] + cbz x1, .L800 + ldr x1, [x0, 1440] + cbz x1, .L800 + ldr x1, [x0, 3584] + cbz x1, .L800 + ldr x1, [x0, 3600] + cbz x1, .L800 + ldr x1, [x0, 432] + cbz x1, .L800 + ldr x1, [x0, 1408] + cbz x1, .L800 + ldr x1, [x0, 3592] + cbz x1, .L800 + ldr x1, [x0, 3608] + cbz x1, .L800 + ldr x1, [x0, 3616] + cbz x1, .L800 + ldr x0, [x0, 3624] + cbz x0, .L800 + add x0, x21, :lo12:.LANCHOR2 + ldr x1, [x0, 1392] + cbz x1, .L800 + ldr x1, [x0, 3640] + cbz x1, .L800 + ldr x1, [x0, 3648] + cbz x1, .L800 + ldr x1, [x0, 1384] + cbz x1, .L800 + ldr x1, [x0, 3656] + cbz x1, .L800 + ldr x1, [x0, 3664] + cbz x1, .L800 + ldr x1, [x0, 1400] + cbz x1, .L800 + ldr x1, [x0, 440] + cbz x1, .L800 + ldr x0, [x0, 3688] + cbz x0, .L800 + adrp x0, .LANCHOR0+2592 + ldr x0, [x0, #:lo12:.LANCHOR0+2592] + cbz x0, .L800 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr x1, [x0, 3728] + cbz x1, .L800 + ldr x1, [x0, 3736] + cbz x1, .L800 + ldr x0, [x0, 3744] + cbz x0, .L800 + mov w0, 0 + b .L792 .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap @@ -6088,38 +6028,38 @@ FtlMemInit: FtlBbt2Bitmap: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x20, x0 - adrp x0, .LANCHOR2+3792 + adrp x0, .LANCHOR2+3784 mov x19, x1 - ldrh w2, [x0,#:lo12:.LANCHOR2+3792] - mov x0, x1 mov w1, 0 + ldrh w2, [x0, #:lo12:.LANCHOR2+3784] + mov x0, x19 lsl w2, w2, 2 bl ftl_memset - adrp x5, .LANCHOR0 - mov x3, 0 - mov w0, 65535 - mov w6, 1 - add x5, x5, :lo12:.LANCHOR0 -.L855: - ldrh w2, [x20,x3] - cmp w2, w0 - beq .L853 - ubfx x4, x2, 5, 11 - lsl w2, w6, w2 - lsl x4, x4, 2 - add x3, x3, 2 - cmp x3, 1024 - ldr w1, [x19,x4] - orr w2, w1, w2 - str w2, [x19,x4] - ldrh w2, [x5,2630] - add w2, w2, 1 - strh w2, [x5,2630] - bne .L855 -.L853: - ldp x19, x20, [sp,16] + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 + mov x1, 0 + mov w6, 65535 + mov w5, 1 +.L897: + ldrh w0, [x20, x1] + cmp w0, w6 + beq .L895 + ubfx x2, x0, 5, 11 + lsl w0, w5, w0 + lsl x2, x2, 2 + add x1, x1, 2 + cmp x1, 1024 + ldr w4, [x19, x2] + orr w0, w4, w0 + str w0, [x19, x2] + ldrh w0, [x3, 2630] + add w0, w0, 1 + strh w0, [x3, 2630] + bne .L897 +.L895: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlBbt2Bitmap, .-FtlBbt2Bitmap @@ -6127,16 +6067,16 @@ FtlBbt2Bitmap: .global FtlBbtMemInit .type FtlBbtMemInit, %function FtlBbtMemInit: - adrp x0, .LANCHOR0 - mov w1, -1 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - mov w2, 16 + mov w1, -1 add x29, sp, 0 + mov w2, 16 add x0, x0, 2636 - strh w1, [x0,-12] + strh w1, [x0, -12] mov w1, 255 - strh wzr, [x0,-6] + strh wzr, [x0, -6] bl ftl_memset ldp x29, x30, [sp], 16 ret @@ -6145,17 +6085,17 @@ FtlBbtMemInit: .global FtlFreeSysBlkQueueInit .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: - adrp x1, .LANCHOR0 - mov w2, 2048 stp x29, x30, [sp, -16]! - add x1, x1, :lo12:.LANCHOR0 + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 + mov w2, 2048 add x29, sp, 0 - strh w0, [x1,2720] - add x0, x1, 2728 - strh wzr, [x1,2722] - strh wzr, [x1,2724] - strh wzr, [x1,2726] mov w1, 0 + strh w0, [x3, 2720] + add x0, x3, 2728 + strh wzr, [x3, 2722] + strh wzr, [x3, 2724] + strh wzr, [x3, 2726] bl ftl_memset mov w0, 0 ldp x29, x30, [sp], 16 @@ -6168,96 +6108,98 @@ ftl_free_no_use_map_blk: stp x29, x30, [sp, -80]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - str x25, [sp,64] + stp x19, x20, [sp, 16] mov x19, x0 - ldrh w2, [x0,10] - ldr x21, [x0,32] - ldr x22, [x0,16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldrh w2, [x0, 10] + ldp x21, x20, [x0, 32] + ldr x22, [x0, 16] lsl w2, w2, 1 - ldr x20, [x0,40] mov x0, x21 bl ftl_memset mov w0, 0 -.L861: - ldrh w1, [x19,6] +.L906: + ldrh w1, [x19, 6] cmp w1, w0 - bls .L883 - ubfiz x1, x0, 2, 16 - ldr w2, [x20,x1] - mov w1, 0 - ubfx x2, x2, 10, 16 -.L862: - ldrh w3, [x19,10] - cmp w3, w1 - bls .L884 - ubfiz x3, x1, 1, 16 - ldrh w4, [x22,x3] - cmp w2, w4 - bne .L863 - cbz w4, .L863 - ldrh w4, [x21,x3] - add w4, w4, 1 - strh w4, [x21,x3] -.L863: - add w1, w1, 1 - uxth w1, w1 - b .L862 -.L884: - add w0, w0, 1 - uxth w0, w0 - b .L861 -.L883: + bhi .L910 adrp x0, .LANCHOR0+2546 mov w23, 0 - mov w20, w23 - ldrh w1, [x0,#:lo12:.LANCHOR0+2546] + mov w20, 0 + ldrh w1, [x0, #:lo12:.LANCHOR0+2546] ldrh w0, [x19] - strh w1, [x21,x0,lsl 1] + strh w1, [x21, x0, lsl 1] ldrh w24, [x21] -.L866: - ldrh w0, [x19,10] +.L911: + ldrh w0, [x19, 10] cmp w0, w20 - bls .L885 - ubfiz x2, x20, 1, 16 - ldrh w1, [x21,x2] + bhi .L915 + mov w0, w23 + ldr x25, [sp, 64] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L910: + ubfiz x1, x0, 2, 16 + ldr w2, [x20, x1] + mov w1, 0 + ubfx x2, x2, 10, 16 +.L907: + ldrh w3, [x19, 10] + cmp w3, w1 + bhi .L909 + add w0, w0, 1 + and w0, w0, 65535 + b .L906 +.L909: + ubfiz x3, x1, 1, 16 + ldrh w4, [x22, x3] + cmp w4, w2 + bne .L908 + cbz w2, .L908 + ldrh w4, [x21, x3] + add w4, w4, 1 + strh w4, [x21, x3] +.L908: + add w1, w1, 1 + and w1, w1, 65535 + b .L907 +.L915: + ubfiz x0, x20, 1, 16 + ldrh w1, [x21, x0] cmp w24, w1 - bls .L867 - ldrh w0, [x22,x2] - add x25, x22, x2 - cbnz w0, .L868 - b .L869 -.L867: - cbnz w1, .L869 - ldrh w0, [x22,x2] - add x25, x22, x2 - cbz w0, .L869 -.L871: + bls .L912 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbnz w0, .L913 +.L914: + add w20, w20, 1 + and w20, w20, 65535 + b .L911 +.L912: + cbnz w1, .L914 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbz w0, .L914 +.L916: mov w1, 1 bl FtlFreeSysBlkQueueIn strh wzr, [x25] - ldrh w0, [x19,8] + ldrh w0, [x19, 8] sub w0, w0, #1 - strh w0, [x19,8] -.L869: - add w20, w20, 1 - uxth w20, w20 - b .L866 -.L868: + strh w0, [x19, 8] + b .L914 +.L917: + mov w24, 0 + b .L916 +.L913: mov w23, w20 + cbz w1, .L917 mov w24, w1 - cbz w1, .L871 - b .L869 -.L885: - mov w0, w23 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L914 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global FtlL2PDataInit @@ -6266,74 +6208,73 @@ FtlL2PDataInit: stp x29, x30, [sp, -48]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x21, x22, [sp,32] - add x21, x20, :lo12:.LANCHOR0 - add x22, x19, :lo12:.LANCHOR2 - ldr w2, [x21,2572] - ldr x0, [x22,3728] + str x21, [sp, 32] + add x21, x19, :lo12:.LANCHOR2 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + ldr x0, [x21, 3720] + ldr w2, [x20, 2572] lsl w2, w2, 1 bl ftl_memset - ldrh w3, [x21,2554] + ldrh w0, [x20, 2582] mov w1, 255 - ldrh w2, [x21,2582] - ldr x0, [x22,3784] - mul w2, w3, w2 + ldrh w2, [x20, 2554] + mul w2, w2, w0 + ldr x0, [x21, 3776] bl ftl_memset + mov x0, x21 mov w1, 0 mov w5, -1 -.L887: - add x3, x20, :lo12:.LANCHOR0 - ldrh w0, [x3,2582] - cmp w0, w1 - bls .L889 - add x4, x19, :lo12:.LANCHOR2 - ubfiz x0, x1, 4, 16 - ldr x2, [x4,704] - add x2, x2, x0 - str wzr, [x2,4] - ldr x2, [x4,704] - strh w5, [x2,x0] - ldr x2, [x4,704] - add x2, x2, x0 - ldrh w0, [x3,2554] - ldr x3, [x4,3784] - mul w0, w0, w1 - add w1, w1, 1 - sxtw x0, w0 - uxth w1, w1 - and x0, x0, -4 - add x0, x3, x0 - str x0, [x2,8] - b .L887 -.L889: +.L927: + ldrh w2, [x20, 2582] + cmp w2, w1 + bhi .L928 add x0, x19, :lo12:.LANCHOR2 mov w2, -1 - add x1, x0, 3800 - strh w2, [x0,3802] - strh w2, [x0,3800] - ldr w2, [x3,2572] - strh w2, [x0,3810] + add x1, x0, 3792 + strh w2, [x0, 3794] + strh w2, [x0, 3792] + ldr w2, [x20, 2572] + strh w2, [x0, 3802] mov w2, -3902 - strh w2, [x0,3804] - ldrh w2, [x0,3864] - strh w2, [x0,3808] - ldrh w2, [x3,2580] - strh w2, [x0,3806] - ldr x2, [x0,3720] - str x2, [x0,3816] - ldr x2, [x0,3776] - str x2, [x0,3824] - ldr x2, [x0,3728] - str x2, [x0,3832] - ldr x0, [x0,3760] - str x0, [x1,40] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + strh w2, [x0, 3796] + ldrh w2, [x0, 3856] + strh w2, [x0, 3800] + ldrh w2, [x20, 2580] + strh w2, [x0, 3798] + ldr x2, [x0, 3712] + str x2, [x0, 3808] + ldr x2, [x0, 3768] + str x2, [x0, 3816] + ldr x2, [x0, 3720] + str x2, [x0, 3824] + ldr x0, [x0, 3752] + str x0, [x1, 40] + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L928: + ldr x3, [x0, 704] + ubfiz x2, x1, 4, 16 + add x3, x3, x2 + str wzr, [x3, 4] + ldr x3, [x0, 704] + strh w5, [x3, x2] + ldr x3, [x0, 704] + ldr x4, [x0, 3776] + add x3, x3, x2 + ldrh w2, [x20, 2554] + mul w2, w2, w1 + add w1, w1, 1 + and w1, w1, 65535 + sxtw x2, w2 + and x2, x2, -4 + add x2, x4, x2 + str x2, [x3, 8] + b .L927 .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 .global FtlVariablesInit @@ -6343,45 +6284,45 @@ FtlVariablesInit: mov w0, -1 mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - adrp x20, .LANCHOR0 add x19, x19, :lo12:.LANCHOR2 + adrp x20, .LANCHOR0 add x20, x20, :lo12:.LANCHOR0 - strh w0, [x19,3880] + strh w0, [x19, 3872] mov w0, -1 - ldrh w2, [x20,2564] - str w0, [x19,3892] - ldr x0, [x20,2592] + str w0, [x19, 3884] + ldr x0, [x20, 2592] + ldrh w2, [x20, 2564] + strh wzr, [x20, 2590] + str xzr, [x19, 3864] lsl w2, w2, 1 - str xzr, [x19,3872] - str wzr, [x19,3884] - str wzr, [x19,3888] - str wzr, [x20,2372] - strh wzr, [x20,2590] + str wzr, [x19, 3876] + str wzr, [x19, 3880] + str wzr, [x20, 2372] bl ftl_memset - ldrh w2, [x20,2482] + ldr x0, [x19, 440] mov w1, 0 - ldr x0, [x19,440] + ldrh w2, [x20, 2482] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,2482] + ldr x0, [x19, 3688] mov w1, 0 - ldr x0, [x19,3696] + ldrh w2, [x20, 2482] lsl w2, w2, 1 bl ftl_memset - add x0, x19, 456 - mov w1, 0 mov w2, 48 - bl ftl_memset mov w1, 0 + add x0, x19, 456 + bl ftl_memset mov w2, 512 - add x0, x19, 856 + mov w1, 0 + add x0, x19, 848 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlVariablesInit, .-FtlVariablesInit @@ -6389,114 +6330,105 @@ FtlVariablesInit: .global SupperBlkListInit .type SupperBlkListInit, %function SupperBlkListInit: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -64]! + mov w0, 6 mov w1, 0 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - mov w24, 6 - add x0, x23, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - adrp x21, .LANCHOR2 - mov w25, 0 - add x19, x21, :lo12:.LANCHOR2 - ldrh w2, [x0,2482] - mov w22, w25 - mov w26, 32768 - ldr x0, [x19,504] - mul w2, w2, w24 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x21, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x19, x20, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + add x24, x21, 2504 + ldrh w2, [x21, 2482] + mov w22, 0 + mov w23, 0 + mul w2, w2, w0 + ldr x0, [x19, 504] bl ftl_memset - str xzr, [x19,544] - str xzr, [x19,512] - str xzr, [x19,528] - strh wzr, [x19,536] - strh wzr, [x19,552] - strh wzr, [x19,3560] - mov w19, w25 -.L892: - add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,2480] - cmp w19, w1 - bge .L899 - mov w20, 0 - ldrh w3, [x0,2472] - ldrh w2, [x0,2544] - mov w28, w20 - mov x27, x0 -.L900: - cmp w28, w3 - bge .L901 - add x0, x27, 2504 + strh wzr, [x19, 536] + strh wzr, [x19, 552] + strh wzr, [x19, 3552] + str xzr, [x19, 512] + str xzr, [x19, 528] + str xzr, [x19, 544] + mov w19, 0 +.L933: + ldrh w0, [x21, 2480] + cmp w19, w0 + bge .L940 + ldrh w8, [x21, 2472] + mov w5, 0 + ldrh w7, [x21, 2544] + mov w6, 0 + b .L941 +.L935: + ldrb w0, [x24, w6, sxtw] mov w1, w19 - str x2, [x29,96] - str x3, [x29,104] - ldrb w0, [x0,w28,sxtw] bl V2P_block bl FtlBbmIsBadBlock - ldr x3, [x29,104] - ldr x2, [x29,96] - cbnz w0, .L893 - add w20, w2, w20 - sxth w20, w20 -.L893: - add w28, w28, 1 - sxth w28, w28 - b .L900 -.L901: - cbz w20, .L895 - sdiv w20, w26, w20 - sxth w20, w20 - b .L896 -.L895: - add x0, x21, :lo12:.LANCHOR2 - mov w1, -1 - ldr x0, [x0,520] - strh w1, [x0,w19,sxtw 1] -.L896: - add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,504] - smaddl x1, w19, w24, x1 - strh w20, [x1,4] - ldrh w1, [x0,560] + cbnz w0, .L934 + add w5, w7, w5 + sxth w5, w5 +.L934: + add w6, w6, 1 + sxth w6, w6 +.L941: + cmp w6, w8 + blt .L935 + cbz w5, .L936 + mov w0, 32768 + sdiv w5, w0, w5 + sxth w5, w5 +.L937: + add x0, x20, :lo12:.LANCHOR2 + mov w1, 6 + ldr x2, [x0, 504] + smaddl x1, w19, w1, x2 + strh w5, [x1, 4] + ldrh w1, [x0, 560] cmp w19, w1 - beq .L897 - ldrh w1, [x0,608] + beq .L938 + ldrh w1, [x0, 608] cmp w19, w1 - beq .L897 - ldrh w1, [x0,656] + beq .L938 + ldrh w1, [x0, 656] cmp w19, w1 - beq .L897 - ldr x0, [x0,520] - ldrh w0, [x0,w19,sxtw 1] - cbnz w0, .L898 - add w4, w25, 1 - mov w0, w19 - uxth w25, w4 - bl INSERT_FREE_LIST - b .L897 -.L898: + beq .L938 + ldr x0, [x0, 520] + ldrh w0, [x0, w19, sxtw 1] + cbnz w0, .L939 add w22, w22, 1 mov w0, w19 - uxth w22, w22 - bl INSERT_DATA_LIST -.L897: + and w22, w22, 65535 + bl INSERT_FREE_LIST +.L938: add w19, w19, 1 sxth w19, w19 - b .L892 -.L899: - add x21, x21, :lo12:.LANCHOR2 + b .L933 +.L936: + add x0, x20, :lo12:.LANCHOR2 + mov w1, -1 + ldr x0, [x0, 520] + strh w1, [x0, w19, sxtw 1] + b .L937 +.L939: + add w23, w23, 1 + mov w0, w19 + and w23, w23, 65535 + bl INSERT_DATA_LIST + b .L938 +.L940: + add x20, x20, :lo12:.LANCHOR2 mov w0, 0 - ldp x19, x20, [sp,16] - ldp x23, x24, [sp,48] - strh w25, [x21,552] - strh w22, [x21,536] - ldp x25, x26, [sp,64] - ldp x21, x22, [sp,32] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 112 + strh w23, [x20, 536] + strh w22, [x20, 552] + ldp x23, x24, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 ret .size SupperBlkListInit, .-SupperBlkListInit .align 2 @@ -6506,25 +6438,25 @@ FtlGcPageVarInit: stp x29, x30, [sp, -32]! mov w1, 255 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - add x20, x20, :lo12:.LANCHOR0 add x19, x19, :lo12:.LANCHOR2 - ldrh w2, [x20,2548] - ldr x0, [x19,1432] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + ldr x0, [x19, 1424] + ldrh w2, [x20, 2548] + strh wzr, [x19, 1420] + strh wzr, [x19, 1432] lsl w2, w2, 1 - strh wzr, [x19,1428] - strh wzr, [x19,1440] bl ftl_memset - ldrh w3, [x20,2548] - mov w2, 12 - ldr x0, [x19,1448] + ldrh w2, [x20, 2548] + mov w0, 12 mov w1, 255 - mul w2, w3, w2 + mul w2, w2, w0 + ldr x0, [x19, 1440] bl ftl_memset bl FtlGcBufInit - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlGcPageVarInit, .-FtlGcPageVarInit @@ -6545,10 +6477,10 @@ ftl_memcpy: FlashReadIdbData: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR2 - mov w2, 2048 add x1, x1, :lo12:.LANCHOR2 + mov w2, 2048 add x29, sp, 0 - add x1, x1, 3896 + add x1, x1, 3888 bl ftl_memcpy mov w0, 0 ldp x29, x30, [sp], 16 @@ -6558,76 +6490,73 @@ FlashReadIdbData: .global FlashLoadPhyInfoInRam .type FlashLoadPhyInfoInRam, %function FlashLoadPhyInfoInRam: - stp x29, x30, [sp, -64]! - add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x19, .LANCHOR1 - adrp x22, .LANCHOR0 - add x21, x19, :lo12:.LANCHOR1 - add x22, x22, :lo12:.LANCHOR0 - str x23, [sp,48] - add x21, x21, 512 - mov w20, 0 - add x22, x22, 2132 -.L909: - ldrb w2, [x21] - add x0, x21, 1 - mov x1, x22 - bl FlashMemCmp8 - mov w23, w0 - cbnz w0, .L906 - add x0, x19, :lo12:.LANCHOR1 - ubfiz x20, x20, 5, 32 - add x1, x0, 512 - adds x20, x1, x20 - beq .L912 - ldrb w3, [x20,22] - mov x2, 0 - mov x1, x0 - b .L911 -.L906: - add w20, w20, 1 - add x21, x21, 32 - cmp w20, 86 - bne .L909 - b .L912 -.L911: - add x4, x1, x2, lsl 5 - mov w0, w2 - ldrb w4, [x4,3264] - cmp w4, w3 - beq .L910 - add x2, x2, 1 - cmp x2, 4 - bne .L911 - mov w0, w2 -.L910: - add x19, x19, :lo12:.LANCHOR1 - ubfiz x1, x0, 5, 32 + stp x29, x30, [sp, -48]! adrp x0, .LANCHOR0 - add x2, x19, 3264 - add x0, x0, :lo12:.LANCHOR0 - add x1, x2, x1 - add x0, x0, 96 - mov w2, 32 + add x10, x0, :lo12:.LANCHOR0 + mov x7, x0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR1 + add x8, x19, :lo12:.LANCHOR1 + add x10, x10, 2132 + add x8, x8, 513 + mov x9, 0 + str x21, [sp, 32] +.L952: + ldrb w2, [x8, -1] + mov w11, w9 + lsl x21, x9, 5 + mov x1, x10 + mov x0, x8 + bl FlashMemCmp8 + mov w20, w0 + cbnz w0, .L950 + add x2, x19, :lo12:.LANCHOR1 + ubfiz x11, x11, 5, 32 + add x0, x2, 512 + add x1, x2, 3264 + add x21, x0, x21 + add x0, x0, x11 + ldrb w3, [x0, 22] + mov x0, 0 +.L951: + lsl x4, x0, 5 + mov w2, w0 + ldrb w4, [x4, x1] + cmp w4, w3 + beq .L954 + add x0, x0, 1 + cmp x0, 4 + bne .L951 + mov w2, w0 +.L954: + add x19, x19, :lo12:.LANCHOR1 + add x0, x7, :lo12:.LANCHOR0 + add x3, x19, 3264 + ubfiz x1, x2, 5, 32 add x19, x19, 472 - bl ftl_memcpy - mov x0, x19 - mov x1, x20 + add x1, x3, x1 mov w2, 32 + add x0, x0, 96 bl ftl_memcpy - ldrh w0, [x19,10] + mov w2, 32 + mov x1, x21 + mov x0, x19 + bl ftl_memcpy + ldrh w0, [x19, 10] bl FlashBlockAlignInit - b .L907 -.L912: - mov w23, -1 -.L907: - mov w0, w23 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + b .L949 +.L950: + add x9, x9, 1 + add x8, x8, 32 + cmp x9, 86 + bne .L952 + mov w20, -1 +.L949: + mov w0, w20 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .align 2 @@ -6635,79 +6564,71 @@ FlashLoadPhyInfoInRam: .type NandcCopy1KB, %function NandcCopy1KB: stp x29, x30, [sp, -48]! - uxtb w1, w1 - add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w2 + and w1, w1, 255 cmp w1, 1 - mov x20, x4 - ubfiz x2, x19, 9, 8 - add x4, x0, 4096 + add x29, sp, 0 + stp x19, x20, [sp, 16] + and w19, w2, 255 + str x21, [sp, 32] + add x2, x0, 4096 add x21, x0, 512 - add x2, x4, x2 - bne .L917 - cbz x3, .L918 - mov x0, x2 + ubfiz x0, x19, 9, 8 + mov x20, x4 + add x0, x2, x0 + bne .L959 + cbz x3, .L960 + mov w2, 1024 mov x1, x3 - mov w2, 1024 bl ftl_memcpy -.L918: - cbz x20, .L916 - mov w0, 48 +.L960: + cbz x20, .L958 lsr w19, w19, 1 - ldrb w1, [x20,1] - mul w19, w19, w0 - ldrb w0, [x20,2] - asr w19, w19, 2 - lsl w0, w0, 16 - orr w0, w0, w1, lsl 8 - ldrb w1, [x20] - orr w0, w0, w1 - ldrb w1, [x20,3] - orr w0, w0, w1, lsl 24 - str w0, [x21,w19,sxtw 2] - b .L916 -.L917: - cbz x3, .L921 - mov x1, x2 - mov x0, x3 - mov w2, 1024 - bl ftl_memcpy -.L921: - cbz x20, .L916 - mov w0, 48 - lsr w19, w19, 1 - mul w19, w19, w0 - asr w19, w19, 2 - ldr w0, [x21,w19,sxtw 2] - strb w0, [x20] - lsr w1, w0, 8 - strb w1, [x20,1] - lsr w1, w0, 16 - lsr w0, w0, 24 - strb w1, [x20,2] - strb w0, [x20,3] -.L916: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + mov w1, 48 + ldr w0, [x20] + mul w19, w19, w1 + and x19, x19, 8176 + str w0, [x21, x19] +.L958: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L959: + cbz x3, .L963 + mov x1, x0 + mov w2, 1024 + mov x0, x3 + bl ftl_memcpy +.L963: + cbz x20, .L958 + lsr w19, w19, 1 + mov w0, 48 + mul w19, w19, w0 + and x19, x19, 8176 + ldr w0, [x21, x19] + strb w0, [x20] + lsr w1, w0, 8 + strb w1, [x20, 1] + lsr w1, w0, 16 + lsr w0, w0, 24 + strb w1, [x20, 2] + strb w0, [x20, 3] + b .L958 .size NandcCopy1KB, .-NandcCopy1KB .align 2 .global ftl_memcpy32 .type ftl_memcpy32, %function ftl_memcpy32: mov x3, 0 -.L933: +.L976: cmp w2, w3 - bls .L935 - ldr w4, [x1,x3,lsl 2] - str w4, [x0,x3,lsl 2] - add x3, x3, 1 - b .L933 -.L935: + bhi .L977 ret +.L977: + ldr w4, [x1, x3, lsl 2] + str w4, [x0, x3, lsl 2] + add x3, x3, 1 + b .L976 .size ftl_memcpy32, .-ftl_memcpy32 .align 2 .global ftl_memcmp @@ -6724,10 +6645,10 @@ ftl_memcmp: .global timer_get_time .type timer_get_time, %function timer_get_time: - adrp x0, jiffies stp x29, x30, [sp, -16]! + adrp x0, jiffies add x29, sp, 0 - ldr x0, [x0,#:lo12:jiffies] + ldr x0, [x0, #:lo12:jiffies] bl jiffies_to_msecs ldp x29, x30, [sp], 16 ret @@ -6736,24 +6657,24 @@ timer_get_time: .global FlashSramLoadStore .type FlashSramLoadStore, %function FlashSramLoadStore: - adrp x4, .LANCHOR4+1592 - mov x6, x0 stp x29, x30, [sp, -16]! - uxtw x1, w1 + adrp x4, .LANCHOR4+1584 + uxtw x5, w1 add x29, sp, 0 - ldr x4, [x4,#:lo12:.LANCHOR4+1592] + ldr x4, [x4, #:lo12:.LANCHOR4+1584] add x4, x4, 4096 - cbnz w2, .L939 - add x1, x4, x1 - b .L941 -.L939: - add x0, x4, x1 - mov x1, x6 -.L941: + cbnz w2, .L983 mov w2, w3 + add x1, x4, x5 +.L986: bl ftl_memcpy ldp x29, x30, [sp], 16 ret +.L983: + mov x1, x0 + mov w2, w3 + add x0, x4, x5 + b .L986 .size FlashSramLoadStore, .-FlashSramLoadStore .align 2 .global FlashCs123Init @@ -6762,6 +6683,46 @@ FlashCs123Init: ret .size FlashCs123Init, .-FlashCs123Init .align 2 + .global ftl_dma32_malloc + .type ftl_dma32_malloc, %function +ftl_dma32_malloc: + stp x29, x30, [sp, -48]! + cmp w0, 8192 + add x29, sp, 0 + stp x19, x20, [sp, 16] + str x21, [sp, 32] + ble .L989 + bl ftl_malloc +.L988: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L989: + adrp x1, .LANCHOR4 + add x21, x1, :lo12:.LANCHOR4 + add w19, w0, 63 + mov x20, x1 + and w19, w19, -64 + ldr w0, [x21, 1592] + cmp w19, w0 + ble .L991 + mov w0, 16384 + bl ftl_malloc + str x0, [x21, 1600] + mov w0, 16384 + str w0, [x21, 1592] +.L991: + add x1, x20, :lo12:.LANCHOR4 + ldr w0, [x1, 1592] + sub w0, w0, w19 + str w0, [x1, 1592] + ldr x0, [x1, 1600] + add x19, x0, w19, sxtw + str x19, [x1, 1600] + b .L988 + .size ftl_dma32_malloc, .-ftl_dma32_malloc + .align 2 .global rk_nand_suspend .type rk_nand_suspend, %function rk_nand_suspend: @@ -6786,14 +6747,14 @@ rk_nand_resume: .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: adrp x0, .LANCHOR0+2584 - ldr w0, [x0,#:lo12:.LANCHOR0+2584] + ldr w0, [x0, #:lo12:.LANCHOR0+2584] ret .size rk_ftl_get_capacity, .-rk_ftl_get_capacity .align 2 .global rk_nandc_get_irq_status .type rk_nandc_get_irq_status, %function rk_nandc_get_irq_status: - ldr w0, [x0,372] + ldr w0, [x0, 372] ret .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status .align 2 @@ -6822,757 +6783,745 @@ ReadFlashInfo: rknand_print_hex: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov x19, 0 - adrp x23, .LC81 + stp x21, x22, [sp, 32] adrp x21, .LC82 - adrp x24, .LC75 - stp x25, x26, [sp,64] - str x27, [sp,80] + stp x23, x24, [sp, 48] mov x22, x1 - mov x27, x0 - mov w25, w2 - uxtw x26, w3 - mov w20, w19 + stp x25, x26, [sp, 64] + adrp x23, .LC81 + mov x26, x0 + mov w24, w2 + uxtw x25, w3 add x23, x23, :lo12:.LC81 add x21, x21, :lo12:.LC82 - add x24, x24, :lo12:.LC75 -.L950: - cmp x19, x26 - beq .L958 - cbnz w20, .L951 - mov x0, x23 - mov x1, x27 - mov x2, x22 - mov w3, w19 - bl printk -.L951: - cmp w25, 4 - mov x0, x21 - bne .L952 - ldr w1, [x22,x19,lsl 2] - b .L957 -.L952: - cmp w25, 2 - bne .L954 - ldrsh w1, [x22,x19,lsl 1] - b .L957 -.L954: - ldrb w1, [x22,x19] -.L957: - bl printk - add w20, w20, 1 - cmp w20, 15 - bls .L955 - adrp x1, .LC83 - mov x0, x24 - add x1, x1, :lo12:.LC83 + stp x19, x20, [sp, 16] + str x27, [sp, 80] + mov x19, 0 mov w20, 0 - bl printk -.L955: - add x19, x19, 1 - b .L950 -.L958: - adrp x0, .LC75 + adrp x27, .LC83 +.L1004: + cmp x25, x19 + bne .L1010 adrp x1, .LC83 + adrp x0, .LC76 add x1, x1, :lo12:.LC83 - add x0, x0, :lo12:.LC75 + add x0, x0, :lo12:.LC76 bl printk - ldr x27, [sp,80] - 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 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 +.L1010: + cbnz w20, .L1005 + mov w3, w19 + mov x2, x22 + mov x1, x26 + mov x0, x23 + bl printk +.L1005: + cmp w24, 4 + bne .L1006 + ldr w1, [x22, x19, lsl 2] +.L1012: + mov x0, x21 + add w20, w20, 1 + bl printk + cmp w20, 15 + bls .L1009 + mov w20, 0 + add x1, x27, :lo12:.LC83 + adrp x0, .LC76 + add x0, x0, :lo12:.LC76 + bl printk +.L1009: + add x19, x19, 1 + b .L1004 +.L1006: + cmp w24, 2 + bne .L1008 + ldrsh w1, [x22, x19, lsl 1] + b .L1012 +.L1008: + ldrb w1, [x22, x19] + b .L1012 .size rknand_print_hex, .-rknand_print_hex .align 2 .global HynixGetReadRetryDefault .type HynixGetReadRetryDefault, %function HynixGetReadRetryDefault: - stp x29, x30, [sp, -144]! - mov w4, -83 + stp x29, x30, [sp, -128]! + mov w3, -83 mov w2, -82 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - stp x27, x28, [sp,80] - mov w27, w0 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 1272 - cmp w27, 2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - strb w27, [x0,1272] - mov w0, -84 - strb w4, [x1,5] - strb w0, [x1,4] - mov w0, -81 - strb w2, [x1,6] - strb w0, [x1,7] - bne .L960 - mov w0, -89 - strb w0, [x1,4] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x1, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov w20, w0 + add x0, x1, 1272 + stp x23, x24, [sp, 48] + cmp w20, 2 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + strb w20, [x1, 1272] + mov w1, -84 + strb w3, [x0, 5] + strb w1, [x0, 4] + mov w1, -81 + strb w2, [x0, 6] + strb w1, [x0, 7] + bne .L1014 + mov w1, -89 + strb w1, [x0, 4] adrp x0, .LANCHOR1+3409 mov w1, -9 - strb w1, [x0,#:lo12:.LANCHOR1+3409] - b .L1023 -.L960: - cmp w27, 3 - bne .L962 - mov w0, -80 - strb w0, [x1,4] - mov w0, -79 - strb w0, [x1,5] - mov w0, -78 - strb w0, [x1,6] - mov w0, -77 - strb w0, [x1,7] - mov w0, -76 - strb w0, [x1,8] - mov w0, -75 - strb w0, [x1,9] - mov w0, -74 - strb w0, [x1,10] - mov w0, -73 - b .L1063 -.L962: - cmp w27, 4 - bne .L963 - mov w5, -52 - strb w5, [x1,4] - mov w5, -65 - strb w5, [x1,5] - mov w5, -86 - strb w5, [x1,6] - mov w5, -85 - strb w4, [x1,9] - strb w5, [x1,7] - mov w5, -51 - strb w2, [x1,10] - strb w5, [x1,8] -.L1063: - mov w26, 8 - strb w0, [x1,11] - mov w28, w26 - b .L961 -.L963: - cmp w27, 5 - bne .L964 - mov w0, 56 - strb w0, [x1,4] - mov w0, 57 - strb w0, [x1,5] - mov w0, 58 - mov w26, 8 - strb w0, [x1,6] - mov w0, 59 - strb w0, [x1,7] - b .L1064 -.L964: - cmp w27, 6 - bne .L965 - mov w0, 14 - strb w0, [x1,4] - mov w0, 15 - strb w0, [x1,5] - mov w0, 16 - mov w26, 12 - strb w0, [x1,6] - mov w0, 17 - strb w0, [x1,7] - b .L1064 -.L965: - cmp w27, 7 - bne .L966 - mov w0, -80 - strb w0, [x1,4] - mov w0, -79 - strb w0, [x1,5] - mov w0, -78 - strb w0, [x1,6] - mov w0, -77 - strb w0, [x1,7] - mov w0, -76 - strb w0, [x1,8] - mov w0, -75 - strb w0, [x1,9] - mov w0, -74 - strb w0, [x1,10] - mov w0, -73 - strb w0, [x1,11] - mov w0, -44 - mov w26, 12 - strb w0, [x1,12] - mov w28, 10 - mov w0, -43 - strb w0, [x1,13] - b .L961 -.L966: - cmp w27, 8 - bne .L1023 - 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 .L961 -.L1023: - mov w26, 7 -.L1064: - mov w28, 4 -.L961: - sub w0, w27, #1 + strb w1, [x0, #:lo12:.LANCHOR1+3409] +.L1079: + mov w27, 7 + b .L1123 +.L1014: + cmp w20, 3 + bne .L1016 + mov w1, -80 + strb w1, [x0, 4] + mov w1, -79 + strb w1, [x0, 5] + mov w1, -78 + strb w1, [x0, 6] + mov w1, -77 + strb w1, [x0, 7] + mov w1, -76 + strb w1, [x0, 8] + mov w1, -75 + strb w1, [x0, 9] + mov w1, -74 + strb w1, [x0, 10] + mov w1, -73 +.L1122: + mov w27, 8 + mov w28, w27 + strb w1, [x0, 11] +.L1015: + sub w0, w20, #1 cmp w0, 1 - bhi .L1060 - adrp x22, .LANCHOR1 - add x25, x19, :lo12:.LANCHOR0 - add x22, x22, :lo12:.LANCHOR1 - mov w21, 0 - add x4, x25, 1272 - add x27, x25, 8 - add x22, x22, 3392 -.L967: - ldrb w0, [x25,2358] - cmp w0, w21 - bls .L974 - add x0, x25, w21, sxtw - ldrb w0, [x0,2360] - mov x23, 0 - add x20, x4, x0, lsl 6 - lsl x0, x0, 4 - add x1, x27, x0 - add x20, x20, 20 - ldr x24, [x27,x0] - ldrb w0, [x1,8] + bhi .L1021 + add x25, x21, :lo12:.LANCHOR0 + adrp x24, .LANCHOR1 + add x24, x24, :lo12:.LANCHOR1 + add x26, x25, 1272 + add x24, x24, 3392 + mov w23, 0 +.L1022: + ldrb w0, [x25, 2358] + cmp w0, w23 + bhi .L1028 +.L1029: + add x21, x21, :lo12:.LANCHOR0 + ldp x19, x20, [sp, 16] + strb w28, [x21, 1273] + strb w27, [x21, 1274] + ldp x23, x24, [sp, 48] + ldp x21, x22, [sp, 32] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 128 + ret +.L1016: + cmp w20, 4 + bne .L1017 + mov w4, -52 + strb w4, [x0, 4] + mov w4, -65 + strb w4, [x0, 5] + mov w4, -86 + strb w4, [x0, 6] + mov w4, -85 + strb w3, [x0, 9] + strb w4, [x0, 7] + mov w4, -51 + strb w2, [x0, 10] + strb w4, [x0, 8] + b .L1122 +.L1017: + cmp w20, 5 + bne .L1018 + mov w1, 56 + strb w1, [x0, 4] + mov w1, 57 + strb w1, [x0, 5] + mov w1, 58 + mov w27, 8 + strb w1, [x0, 6] + mov w1, 59 + strb w1, [x0, 7] +.L1123: + mov w28, 4 + b .L1015 +.L1018: + cmp w20, 6 + bne .L1019 + mov w1, 14 + strb w1, [x0, 4] + mov w1, 15 + strb w1, [x0, 5] + mov w1, 16 + mov w27, 12 + strb w1, [x0, 6] + mov w1, 17 + strb w1, [x0, 7] + b .L1123 +.L1019: + cmp w20, 7 + bne .L1020 + mov w1, -80 + strb w1, [x0, 4] + mov w1, -79 + strb w1, [x0, 5] + mov w1, -78 + strb w1, [x0, 6] + mov w1, -77 + strb w1, [x0, 7] + mov w1, -76 + strb w1, [x0, 8] + mov w1, -75 + strb w1, [x0, 9] + mov w1, -74 + strb w1, [x0, 10] + mov w1, -73 + strb w1, [x0, 11] + mov w1, -44 + mov w27, 12 + strb w1, [x0, 12] + mov w28, 10 + mov w1, -43 + strb w1, [x0, 13] + b .L1015 +.L1020: + cmp w20, 8 + bne .L1079 + mov w1, 6 + strb w1, [x0, 4] + mov w1, 7 + strb w1, [x0, 5] + mov w1, 9 + strb w20, [x0, 6] + strb w1, [x0, 7] + mov w27, 50 + mov w1, 10 + mov w28, 5 + strb w1, [x0, 8] + b .L1015 +.L1028: + add x0, x25, w23, sxtw + mov x20, 0 + ldrb w0, [x0, 2360] + ubfiz x19, x0, 6, 8 + sbfiz x0, x0, 4, 32 + add x1, x25, x0 + add x19, x19, 20 + add x19, x26, x19 + ldr x0, [x25, x0] + ldrb w22, [x1, 8] mov w1, 55 - add x24, x24, x0, lsl 8 -.L969: - add x0, x4, x23 - str w1, [x24,2056] - str x1, [x29,128] - str x4, [x29,136] - ldrb w0, [x0,4] - str w0, [x24,2052] + add x22, x0, x22, lsl 8 +.L1023: + add x0, x26, x20 + str w1, [x22, 2056] + str w1, [x29, 124] + ldrb w0, [x0, 4] + str w0, [x22, 2052] mov x0, 400 bl __const_udelay - ldr w0, [x24,2048] - strb w0, [x20,x23] - add x23, x23, 1 - ldr x4, [x29,136] - cmp w28, w23, uxtb - ldr x1, [x29,128] - bhi .L969 + ldr w0, [x22, 2048] + strb w0, [x19, x20] + add x20, x20, 1 + cmp w28, w20, uxtb + ldr w1, [x29, 124] + bhi .L1023 mov x0, 0 -.L970: - add w2, w0, 8 - mov x1, 0 -.L971: - add x3, x1, x0 - add x1, x1, 4 - add x3, x22, x3 - cmp x1, 24 - ldrb w6, [x3,4] - ldrb w3, [x20,x0] - add w3, w6, w3 - strb w3, [x20,w2,sxtw] - add w2, w2, 8 - bne .L971 +.L1026: + add x1, x0, 4 + add x4, x0, 28 + add w5, w0, 8 + add x1, x24, x1 + add x4, x24, x4 +.L1025: + ldrb w6, [x19, x0] + ldrb w7, [x1], 4 + add w6, w6, w7 + strb w6, [x19, w5, sxtw] + cmp x4, x1 + add w5, w5, 8 + bne .L1025 add x0, x0, 1 cmp x0, 4 - bne .L970 - add w21, w21, 1 - strb wzr, [x20,16] - strb wzr, [x20,24] - strb wzr, [x20,32] - uxtb w21, w21 - strb wzr, [x20,40] - strb wzr, [x20,48] - strb wzr, [x20,41] - strb wzr, [x20,49] - b .L967 -.L1060: - sub w0, w27, #3 - cmp w0, 5 - bhi .L974 - mul w25, w28, w26 - sub w24, w28, #1 - add x20, x19, :lo12:.LANCHOR0 - lsl w0, w25, 4 - asr w23, w25, 1 - str w0, [x29,128] - lsl w0, w23, 1 - uxtb x24, w24 - str w0, [x29,124] - sub w0, w27, #5 - mov w21, 0 - str w0, [x29,136] - add x25, x20, 8 - add x0, x24, 1 - str x0, [x29,112] -.L975: - ldrb w0, [x20,2358] - cmp w0, w21 - bhi .L1021 -.L974: - add x19, x19, :lo12:.LANCHOR0 - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - strb w28, [x19,1273] - strb w26, [x19,1274] - ldp x27, x28, [sp,80] - ldp x19, x20, [sp,16] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 144 - ret + bne .L1026 + add w23, w23, 1 + strb wzr, [x19, 16] + strb wzr, [x19, 24] + and w23, w23, 255 + strb wzr, [x19, 32] + strb wzr, [x19, 40] + strb wzr, [x19, 48] + strb wzr, [x19, 41] + strb wzr, [x19, 49] + b .L1022 .L1021: - add x0, x20, w21, sxtw - ldrb w6, [x0,2360] - 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, [x24,2056] - mov w0, w6 - bl NandcWaitFlashReady - cmp w27, 7 - ldr x6, [x29,104] - bne .L976 - mov x0, 160 - madd x6, x6, x0, x20 - add x6, x6, 1300 - b .L977 -.L976: - cmp w27, 8 - beq .L978 - add x6, x20, x6, lsl 6 - add x6, x6, 1292 -.L977: - mov w0, 54 - cmp w27, 4 - str w0, [x24,2056] - bne .L979 - mov w0, 255 - str w0, [x24,2052] - mov w0, 64 - str w0, [x24,2048] - mov w0, 204 - b .L1065 -.L979: - ldr w0, [x29,136] - cmp w0, 1 - bhi .L981 - ldrb w0, [x20,1276] - str w0, [x24,2052] - mov w0, 82 - b .L1066 -.L981: - cmp w27, 7 - bne .L980 - mov w0, 174 - str w0, [x24,2052] - str wzr, [x24,2048] - mov w0, 176 -.L1065: - str w0, [x24,2052] - mov w0, 77 -.L1066: - str w0, [x24,2048] -.L980: - 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 .L982 - mov w0, 31 - str w0, [x24,2052] - b .L983 -.L982: - str wzr, [x24,2052] -.L983: - mov w0, 2 - str w0, [x24,2052] - str wzr, [x24,2052] -.L1022: - 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, .L1025 - cbnz w8, .L1025 - cmp w27, 7 - mov w7, 32 - mov w0, 2 - csel w7, w0, w7, ne - b .L984 -.L1025: - mov w7, 16 -.L984: - adrp x1, .LANCHOR4 - mov x10, 0 - add x0, x1, :lo12:.LANCHOR4 - ldr x0, [x0,1600] -.L985: - ldr w11, [x24,2048] - strb w11, [x0,x10] - add x10, x10, 1 - cmp w7, w10, uxtb - bhi .L985 - cbz w8, .L986 - mov w7, 0 -.L988: - ldrb w10, [x0] - cmp w10, 50 - beq .L987 - ldrb w10, [x0,1] - cmp w10, 5 - beq .L987 - add w7, w7, 1 - add x0, x0, 4 - uxtb w7, w7 - cmp w7, 8 - bne .L988 - b .L989 -.L987: - cmp w7, 6 - bls .L990 -.L989: - adrp x0, .LC84 - mov w1, 0 - add x0, x0, :lo12:.LC84 - bl printk -.L991: - b .L991 -.L986: - cmp w27, 7 - bne .L992 - mov w7, w8 -.L994: - ldrb w10, [x0] - cmp w10, 12 - beq .L993 - ldrb w10, [x0,1] - cmp w10, 10 - beq .L993 - add w7, w7, 1 - add x0, x0, 4 - uxtb w7, w7 - cmp w7, 8 - bne .L994 - b .L995 -.L993: - cmp w7, 7 - bne .L990 -.L995: - adrp x0, .LC84 - mov w1, 0 - add x0, x0, :lo12:.LC84 - bl printk -.L996: - b .L996 -.L992: - cmp w27, 6 - bne .L990 - mov x7, 0 -.L997: - ldrb w10, [x0,x7] - cmp w10, 12 - beq .L990 - add x10, x0, x7 - ldrb w10, [x10,8] - cmp w10, 4 - beq .L990 - add x7, x7, 1 - cmp x7, 8 - bne .L997 - adrp x0, .LC84 - mov w1, 0 - add x0, x0, :lo12:.LC84 - bl printk -.L999: - b .L999 -.L990: - add x0, x1, :lo12:.LANCHOR4 - ldr x11, [x0,1600] - mov x0, 0 -.L1000: - ldr w2, [x29,128] - cmp w2, w0 - ble .L1068 - ldr w7, [x24,2048] - strb w7, [x11,x0] - add x0, x0, 1 - b .L1000 -.L1068: - add x0, x1, :lo12:.LANCHOR4 - mov w12, w23 - mov w10, 8 - ldr x13, [x0,1600] -.L1003: - mov w0, 0 -.L1002: - add w7, w0, w12 - add w0, w0, 1 - sbfiz x7, x7, 1, 32 + sub w0, w20, #3 + cmp w0, 5 + bhi .L1029 + mul w26, w28, w27 + sub w25, w28, #1 + and x25, x25, 255 + add x22, x21, :lo12:.LANCHOR0 + mov w23, 0 + lsl w0, w26, 4 + asr w24, w26, 1 + str w0, [x29, 120] + sub w26, w20, #5 + lsl w0, w24, 1 + str w0, [x29, 124] + add x0, x25, 1 + str x0, [x29, 112] +.L1030: + ldrb w0, [x22, 2358] cmp w0, w23 - ldrh w14, [x13,x7] - mvn w14, w14 - strh w14, [x13,x7] - bne .L1002 - ldr w0, [x29,124] - subs w10, w10, #1 - add w12, w12, w0 - bne .L1003 - mov x10, 0 - mov w18, 1 -.L1004: - mov w7, 0 - mov w12, w7 -.L1008: - lsl w14, w18, w12 - mov w16, w10 - mov w0, 16 - mov w15, 0 -.L1006: - 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 .L1006 - cmp w15, 8 - bls .L1007 - orr w7, w7, w14 - uxth w7, w7 -.L1007: - add w12, w12, 1 - cmp w12, 16 - bne .L1008 - strh w7, [x13,x10,lsl 1] - add x10, x10, 1 - cmp w23, w10 - bgt .L1004 - add x1, x1, :lo12:.LANCHOR4 + bls .L1029 + add x0, x22, w23, sxtw + ldrb w25, [x0, 2360] + sbfiz x0, x25, 4, 32 + add x1, x22, x0 + ldr x0, [x22, x0] + ldrb w19, [x1, 8] + add x19, x0, x19, lsl 8 + mov w0, 255 + str w0, [x19, 2056] + mov w0, w25 + bl NandcWaitFlashReady + cmp w20, 7 + bne .L1031 + mov x1, 28 + mov w0, 160 + add x4, x22, 1272 + umaddl x0, w0, w25, x1 + add x4, x4, x0 +.L1032: + mov w0, 54 + str w0, [x19, 2056] + cmp w20, 4 + bne .L1034 + mov w0, 255 + str w0, [x19, 2052] + mov w0, 64 + str w0, [x19, 2048] + mov w0, 204 +.L1124: + str w0, [x19, 2052] + mov w0, 77 + b .L1125 +.L1031: + cmp w20, 8 + beq .L1033 + ubfiz x4, x25, 6, 8 + add x4, x22, x4 + add x4, x4, 1292 + b .L1032 +.L1034: + cmp w26, 1 + bhi .L1036 + ldrb w0, [x22, 1276] + str w0, [x19, 2052] + mov w0, 82 +.L1125: + str w0, [x19, 2048] +.L1035: + mov w0, 22 + str w0, [x19, 2056] + mov w0, 23 + str w0, [x19, 2056] + mov w0, 4 + str w0, [x19, 2056] + mov w0, 25 + str w0, [x19, 2056] + str wzr, [x19, 2056] + cmp w20, 6 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + bne .L1037 + mov w0, 31 + str w0, [x19, 2052] +.L1038: + mov w0, 2 + str w0, [x19, 2052] + str wzr, [x19, 2052] +.L1078: + mov w0, 48 + str w0, [x19, 2056] + str x4, [x29, 104] + mov w0, w25 + bl NandcWaitFlashReady + cmp w26, 1 + ldr x4, [x29, 104] + ccmp w20, 8, 4, hi + beq .L1080 + cmp w20, 7 + mov w0, 2 + mov w6, 32 + csel w6, w6, w0, eq +.L1039: + adrp x1, .LANCHOR4 + add x0, x1, :lo12:.LANCHOR4 mov x7, 0 - mov w10, w7 - ldr x1, [x1,1600] -.L1011: - ldr w12, [x1,x7] - add x7, x7, 4 - cmp w12, wzr - csinc w10, w10, w10, ne - cmp x7, 32 - bne .L1011 - cmp w10, 7 - ble .L1012 - adrp x0, .LC85 - mov w2, 1 - add x0, x0, :lo12:.LC85 + ldr x0, [x0, 1608] +.L1040: + ldr w8, [x19, 2048] + strb w8, [x0, x7] + add x7, x7, 1 + cmp w6, w7, uxtb + bhi .L1040 + cmp w20, 8 + bne .L1041 + mov w6, 0 +.L1043: + ldrb w7, [x0] + cmp w7, 50 + beq .L1042 + ldrb w7, [x0, 1] + cmp w7, 5 + beq .L1042 + add w6, w6, 1 + add x0, x0, 4 + and w6, w6, 255 + cmp w6, 8 + bne .L1043 +.L1044: + adrp x0, .LC84 + mov w1, 0 + add x0, x0, :lo12:.LC84 + bl printk +.L1046: + b .L1046 +.L1036: + cmp w20, 7 + bne .L1035 + mov w0, 174 + str w0, [x19, 2052] + str wzr, [x19, 2048] + mov w0, 176 + b .L1124 +.L1037: + str wzr, [x19, 2052] + b .L1038 +.L1080: + mov w6, 16 + b .L1039 +.L1042: + cmp w6, 6 + bhi .L1044 +.L1045: + add x0, x1, :lo12:.LANCHOR4 + ldr x8, [x0, 1608] + mov x0, 0 +.L1055: + ldr w2, [x29, 120] + cmp w2, w0 + bgt .L1056 + add x0, x1, :lo12:.LANCHOR4 + mov w9, w24 + mov w7, 8 + ldr x10, [x0, 1608] +.L1058: + mov w0, 0 +.L1057: + add w6, w0, w9 + add w0, w0, 1 + sbfiz x6, x6, 1, 32 + cmp w24, w0 + ldrh w11, [x10, x6] + mvn w11, w11 + strh w11, [x10, x6] + bgt .L1057 + ldr w0, [x29, 124] + subs w7, w7, #1 + add w9, w9, w0 + bne .L1058 + mov x7, 0 + mov w14, 1 +.L1064: + mov w6, 0 + mov w9, 0 +.L1063: + mov w12, w7 + lsl w13, w14, w9 + mov w0, 16 + mov w11, 0 +.L1061: + ldrh w15, [x10, w12, sxtw 1] + add w12, w12, w24 + bics wzr, w13, w15 + cinc w11, w11, eq + subs w0, w0, #1 + bne .L1061 + cmp w11, 8 + bls .L1062 + orr w6, w6, w13 + and w6, w6, 65535 +.L1062: + add w9, w9, 1 + cmp w9, 16 + bne .L1063 + strh w6, [x10, x7, lsl 1] + add x7, x7, 1 + cmp w24, w7 + bgt .L1064 + add x1, x1, :lo12:.LANCHOR4 + mov x6, 0 + mov w7, 0 + ldr x1, [x1, 1608] +.L1067: + ldr w9, [x1, x6] + add x6, x6, 4 + cmp w9, 0 + cinc w7, w7, eq + cmp x6, 32 + bne .L1067 + cmp w7, 7 + ble .L1068 mov w3, 1024 + mov w2, 1 + adrp x0, .LC85 + add x0, x0, :lo12:.LC85 bl rknand_print_hex adrp x0, .LC84 mov w1, 0 add x0, x0, :lo12:.LC84 bl printk -.L1013: - b .L1013 -.L1012: - cmp w27, 6 - mov w7, 4 - beq .L1014 - cmp w27, 7 - mov w7, 10 - beq .L1014 - cmp w8, wzr - mov w7, 5 +.L1069: + b .L1069 +.L1041: + cmp w20, 7 + bne .L1047 + mov w6, 0 +.L1049: + ldrb w7, [x0] + cmp w7, 12 + beq .L1048 + ldrb w7, [x0, 1] + cmp w7, 10 + beq .L1048 + add w6, w6, 1 + add x0, x0, 4 + and w6, w6, 255 + cmp w6, 8 + bne .L1049 +.L1050: + adrp x0, .LC84 + mov w1, 0 + add x0, x0, :lo12:.LC84 + bl printk +.L1051: + b .L1051 +.L1048: + cmp w6, 6 + bls .L1045 + b .L1050 +.L1047: + cmp w20, 6 + bne .L1045 + mov x6, 0 +.L1052: + ldrb w7, [x0, x6] + cmp w7, 12 + beq .L1045 + add x7, x0, x6 + ldrb w7, [x7, 8] + cmp w7, 4 + beq .L1045 + add x6, x6, 1 + cmp x6, 8 + bne .L1052 + adrp x0, .LC84 + mov w1, 0 + add x0, x0, :lo12:.LC84 + bl printk +.L1054: + b .L1054 +.L1056: + ldr w6, [x19, 2048] + strb w6, [x8, x0] + add x0, x0, 1 + b .L1055 +.L1068: + cmp w20, 6 + beq .L1082 + cmp w20, 7 + beq .L1083 + cmp w20, 8 mov w1, 8 - csel w7, w1, w7, eq -.L1014: - mov w10, 0 -.L1015: + mov w6, 5 + csel w6, w6, w1, eq +.L1070: + mov w7, 0 +.L1071: mov x1, 0 -.L1016: - add w12, w0, w1 - ldrb w13, [x11,x1] +.L1072: + add w9, w0, w1 + ldrb w10, [x8, x1] add x1, x1, 1 cmp w28, w1, uxtb - strb w13, [x6,w12,sxtw] - bhi .L1016 - add w10, w10, 1 - ldr x1, [x29,112] - cmp w10, w26 - add w0, w0, w7 - add x11, x11, x1 - blt .L1015 + strb w10, [x4, w9, sxtw] + bhi .L1072 + ldr x1, [x29, 112] + add w7, w7, 1 + add w0, w0, w6 + cmp w27, w7 + add x8, x8, x1 + bgt .L1071 mov w0, 255 - str w0, [x24,2056] - mov w0, w22 - str x8, [x29,96] - str x9, [x29,104] + str w0, [x19, 2056] + mov w0, w25 bl NandcWaitFlashReady - ldr x9, [x29,104] - ldr x8, [x29,96] - cbz w9, .L1018 + cmp w26, 1 + bhi .L1074 mov w0, 54 - str w0, [x24,2056] + str w0, [x19, 2056] adrp x0, .LANCHOR0+1276 mov w1, -1 - ldrb w0, [x0,#:lo12:.LANCHOR0+1276] - str w0, [x24,2052] + ldrb w0, [x0, #:lo12:.LANCHOR0+1276] + str w0, [x19, 2052] + str wzr, [x19, 2048] mov w0, 22 - str wzr, [x24,2048] - str w0, [x24,2056] - mov w0, w21 + str w0, [x19, 2056] + mov w0, w23 bl FlashReadCmd - b .L1019 -.L1018: - mov w0, 190 - cbnz w8, .L1067 - mov w0, 56 -.L1067: - str w0, [x24,2056] -.L1019: - mov w0, w22 - add w21, w21, 1 +.L1075: + add w23, w23, 1 + mov w0, w25 + and w23, w23, 255 bl NandcWaitFlashReady - uxtb w21, w21 - b .L975 -.L978: + b .L1030 +.L1082: + mov w6, 4 + b .L1070 +.L1083: + mov w6, 10 + b .L1070 +.L1074: + cmp w20, 8 + bne .L1076 + mov w0, 190 +.L1126: + str w0, [x19, 2056] + b .L1075 +.L1076: + mov w0, 56 + b .L1126 +.L1033: mov w0, 120 - str w0, [x24,2056] - str wzr, [x24,2052] + str w0, [x19, 2056] + str wzr, [x19, 2052] mov w0, 23 - str wzr, [x24,2052] + str wzr, [x19, 2052] mov w1, 25 - str wzr, [x24,2052] - add x6, x20, 1300 - str w0, [x24,2056] + str wzr, [x19, 2052] + add x4, x22, 1300 + str w0, [x19, 2056] mov w0, 4 - str w0, [x24,2056] - str w1, [x24,2056] + str w0, [x19, 2056] + str w1, [x19, 2056] mov w1, 218 - str w1, [x24,2056] + str w1, [x19, 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 .L1022 + 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 .L1078 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 2 .global FlashGetReadRetryDefault .type FlashGetReadRetryDefault, %function FlashGetReadRetryDefault: + cbz w0, .L1140 stp x29, x30, [sp, -16]! - mov w1, w0 - add x29, sp, 0 - cbz w0, .L1069 sub w2, w0, #1 + mov w1, w0 cmp w2, 7 - bhi .L1071 + add x29, sp, 0 + bhi .L1129 bl HynixGetReadRetryDefault - b .L1069 -.L1071: +.L1127: + ldp x29, x30, [sp], 16 + ret +.L1129: cmp w0, 49 - bne .L1072 + bne .L1130 adrp x0, .LANCHOR0 - mov w2, 64 add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 1276 - strb w1, [x0,-4] + mov w2, 64 + strb w1, [x0, 1272] mov w1, 4 - strb w1, [x0,-3] + strb w1, [x0, 1273] mov w1, 15 - strb w1, [x0,-2] + strb w1, [x0, 1274] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 add x1, x1, 408 - b .L1087 -.L1072: - sub w0, w0, #65 - cmp w0, 1 - bls .L1078 - cmp w1, 33 - bne .L1073 -.L1078: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - strb w1, [x0,1272] - mov w1, 4 - b .L1088 -.L1073: - cmp w1, 67 - beq .L1079 - cmp w1, 34 - bne .L1075 -.L1079: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - strb w1, [x0,1272] - mov w1, 5 -.L1088: - strb w1, [x0,1273] - mov w1, 7 - strb w1, [x0,1274] - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 +.L1143: add x0, x0, 1276 - add x1, x1, 256 - mov w2, 45 - b .L1087 -.L1075: - cmp w1, 68 - beq .L1080 - cmp w1, 35 - bne .L1069 -.L1080: - adrp x0, .LANCHOR0 - mov w2, 95 - add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 1276 - strb w1, [x0,-4] - mov w1, 5 - strb w1, [x0,-3] - mov w1, 17 - strb w1, [x0,-2] - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 304 -.L1087: bl ftl_memcpy -.L1069: - ldp x29, x30, [sp], 16 + b .L1127 +.L1130: + sub w0, w0, #65 + cmp w1, 33 + ccmp w0, 1, 0, ne + bhi .L1131 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + strb w1, [x0, 1272] + mov w1, 4 +.L1144: + strb w1, [x0, 1273] + mov w1, 7 + strb w1, [x0, 1274] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + mov w2, 45 + add x1, x1, 352 + b .L1143 +.L1131: + cmp w1, 34 + mov w0, 67 + ccmp w1, w0, 4, ne + bne .L1132 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + strb w1, [x0, 1272] + mov w1, 5 + b .L1144 +.L1132: + cmp w1, 35 + mov w0, 68 + ccmp w1, w0, 4, ne + bne .L1127 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov w2, 95 + strb w1, [x0, 1272] + mov w1, 5 + strb w1, [x0, 1273] + mov w1, 17 + strb w1, [x0, 1274] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 256 + b .L1143 +.L1140: ret .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .align 2 @@ -7582,476 +7531,495 @@ NandcXferComp: stp x29, x30, [sp, -80]! ubfiz x0, x0, 4, 8 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x23, [sp,48] add x1, x20, :lo12:.LANCHOR0 - add x2, x1, 8 - stp x21, x22, [sp,32] - ldr x19, [x2,x0] - ldr w0, [x1,2388] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldr x19, [x1, x0] + ldr w0, [x1, 2388] cmp w0, 3 - bls .L1120 - ldr w0, [x19,16] - tbz x0, 2, .L1120 - ldr w21, [x19,16] - ldr w0, [x19,8] - ubfx x21, x21, 1, 1 - str w0, [x29,64] - cbz w21, .L1091 + bls .L1176 + ldr w0, [x19, 16] + tbz x0, 2, .L1176 + ldr w0, [x19, 16] + tbz x0, 1, .L1147 adrp x22, .LC86 adrp x23, .LC87 - mov w21, 0 + ldr w0, [x19, 8] + mov x24, x1 add x22, x22, :lo12:.LC86 add x23, x23, :lo12:.LC87 -.L1092: - ldr w2, [x19,28] - ldr w1, [x29,64] - ubfx x2, x2, 16, 5 - ubfx x1, x1, 22, 6 - cmp w2, w1 - bge .L1100 - add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,2388] + mov w21, 0 + str w0, [x29, 64] +.L1148: + ldr w1, [x19, 28] + ldr w0, [x29, 64] + ubfx x1, x1, 16, 5 + ubfx x0, x0, 22, 6 + cmp w1, w0 + bge .L1156 + ldr w0, [x24, 2388] cmp w0, 5 - bhi .L1093 -.L1096: + bhi .L1149 +.L1152: add w21, w21, 1 - and w0, w21, 16777215 - cbnz w0, .L1095 - ldr w2, [x19,28] + tst x21, 16777215 + bne .L1151 + ldr w2, [x19, 28] mov w1, w21 - ldr w3, [x29,64] + ldr w3, [x29, 64] mov x0, x22 ubfx x2, x2, 16, 5 ubfx x3, x3, 22, 6 bl printk - mov x0, x23 - mov x1, x19 - mov w2, 4 mov w3, 512 + mov w2, 4 + mov x1, x19 + mov x0, x23 bl rknand_print_hex - b .L1095 -.L1093: +.L1151: + mov x1, 5 + mov x0, 1 + bl usleep_range + b .L1148 +.L1149: ldr w0, [x19] - str w0, [x29,72] - ldr w0, [x29,72] - tbz x0, 13, .L1096 - ldr w0, [x29,72] - tbz x0, 17, .L1096 -.L1100: + str w0, [x29, 72] + ldr w0, [x29, 72] + tbz x0, 13, .L1152 + ldr w0, [x29, 72] + tbz x0, 17, .L1152 +.L1156: add x19, x20, :lo12:.LANCHOR0 add x19, x19, 2408 - ldr w0, [x19,40] - cbz w0, .L1101 - ldr w1, [x29,64] + ldr w0, [x19, 40] + cbz w0, .L1157 + ldr w0, [x19, 32] mov w2, 0 - ldr w0, [x19,32] + ldr w1, [x29, 64] ubfx x1, x1, 22, 5 lsl w1, w1, 10 bl rknand_dma_unmap_single - ldr w1, [x29,64] + ldr w1, [x29, 64] mov w2, 0 - ldr w0, [x19,36] + ldr w0, [x19, 36] ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single - b .L1101 -.L1095: - mov x0, 1 - mov x1, 5 - bl usleep_range - b .L1092 -.L1091: +.L1157: + add x20, x20, :lo12:.LANCHOR0 + str wzr, [x20, 2448] +.L1145: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L1147: adrp x22, .LC88 adrp x23, .LC87 + ldr w0, [x19, 8] add x22, x22, :lo12:.LC88 add x23, x23, :lo12:.LC87 -.L1102: - ldr w0, [x29,64] - tbnz x0, 20, .L1128 - ldr w0, [x19,8] + mov w21, 0 + str w0, [x29, 64] +.L1158: + ldr w0, [x29, 64] + tbz x0, 20, .L1160 + add x0, x20, :lo12:.LANCHOR0 + ldr w0, [x0, 2456] + cbz w0, .L1161 + mov x0, x19 + bl NandcSendDumpDataStart +.L1161: + add x21, x20, :lo12:.LANCHOR0 + add x21, x21, 2408 + ldr w0, [x21, 40] + cbz w0, .L1162 + ldr w0, [x21, 32] + mov w2, 1 + ldr w1, [x29, 64] + ubfx x1, x1, 22, 5 + lsl w1, w1, 10 + bl rknand_dma_unmap_single + ldr w1, [x29, 64] + mov w2, 1 + ldr w0, [x21, 36] + ubfx x1, x1, 22, 5 + lsl w1, w1, 7 + bl rknand_dma_unmap_single +.L1162: + add x0, x20, :lo12:.LANCHOR0 + ldr w0, [x0, 2456] + cbz w0, .L1157 + mov x0, x19 + bl NandcSendDumpDataDone + b .L1157 +.L1160: + ldr w0, [x19, 8] add w21, w21, 1 - str w0, [x29,64] - and w0, w21, 16777215 - cbnz w0, .L1103 - ldr w2, [x29,64] + str w0, [x29, 64] + tst x21, 16777215 + bne .L1159 + ldr w2, [x29, 64] mov w1, w21 - ldr w3, [x19,28] + ldr w3, [x19, 28] mov x0, x22 ubfx x3, x3, 16, 5 bl printk - mov x0, x23 - mov x1, x19 - mov w2, 4 mov w3, 512 + mov w2, 4 + mov x1, x19 + mov x0, x23 bl rknand_print_hex -.L1103: - mov x0, 1 +.L1159: mov x1, 5 + mov x0, 1 bl usleep_range - b .L1102 -.L1128: - add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,2456] - cbz w0, .L1105 - mov x0, x19 - bl NandcSendDumpDataStart -.L1105: - add x21, x20, :lo12:.LANCHOR0 - add x21, x21, 2408 - ldr w0, [x21,40] - cbz w0, .L1106 - ldr w1, [x29,64] - mov w2, 1 - ldr w0, [x21,32] - ubfx x1, x1, 22, 5 - lsl w1, w1, 10 - bl rknand_dma_unmap_single - ldr w1, [x29,64] - mov w2, 1 - ldr w0, [x21,36] - ubfx x1, x1, 22, 5 - lsl w1, w1, 7 - bl rknand_dma_unmap_single -.L1106: - add x0, x20, :lo12:.LANCHOR0 - ldr w0, [x0,2456] - cbz w0, .L1101 - mov x0, x19 - bl NandcSendDumpDataDone -.L1101: - add x20, x20, :lo12:.LANCHOR0 - str wzr, [x20,2448] - b .L1089 -.L1120: - ldr w0, [x19,8] - str w0, [x29,64] - ldr w0, [x29,64] - tbz x0, 20, .L1120 -.L1089: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L1158 +.L1176: + ldr w0, [x19, 8] + str w0, [x29, 64] + ldr w0, [x29, 64] + tbz x0, 20, .L1176 + b .L1145 .size NandcXferComp, .-NandcXferComp .align 2 .global NandcXferData .type NandcXferData, %function NandcXferData: - stp x29, x30, [sp, -176]! + stp x29, x30, [sp, -192]! + tst x3, 63 add x29, sp, 0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] + stp x25, x26, [sp, 64] + and w25, w0, 255 + stp x21, x22, [sp, 32] + sbfiz x0, x25, 4, 32 + stp x19, x20, [sp, 16] + and w21, w1, 255 adrp x19, .LANCHOR0 - uxtb w25, w0 - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, w25, sxtw 4 - ldr x20, [x0,8] - and x0, x3, 63 - uxtb w21, w1 - uxtb w24, w2 + add x1, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] mov x26, x3 + stp x27, x28, [sp, 80] + and w24, w2, 255 mov x22, x4 - cbnz x0, .L1130 - cbnz x4, .L1131 - add x0, x29, 112 - mov w1, 255 + ldr x20, [x1, x0] + bne .L1186 + cbnz x4, .L1187 + add x22, x29, 128 mov w2, 64 - add x22, x29, 112 + mov w1, 255 + add x0, x29, 128 bl ftl_memset -.L1131: - mov w0, w25 - mov w1, w21 +.L1187: + mov x5, x22 + mov x4, x26 mov w2, w24 mov w3, 0 - mov x4, x26 - mov x5, x22 - mov w23, 0 - bl NandcXferStart - mov w0, w25 mov w1, w21 + mov w0, w25 + bl NandcXferStart + mov w1, w21 + mov w0, w25 bl NandcXferComp - cbnz w21, .L1132 + cbnz w21, .L1211 add x1, x19, :lo12:.LANCHOR0 ubfx x2, x24, 1, 7 - mov w3, 128 add x2, x22, x2, lsl 2 - ldr w0, [x1,2460] + mov w3, 64 + ldr w0, [x1, 2460] cmp w0, 25 - mov w0, 64 - csel w3, w0, w3, cc - mov w0, w21 -.L1134: + mov w0, 128 + csel w3, w3, w0, cc + mov w0, 0 +.L1190: + add w4, w3, w0 cmp x22, x2 - add w4, w0, w3 - beq .L1176 - ldr x5, [x1,2416] - and x0, x0, 4294967292 - add x22, x22, 4 - ldr w0, [x5,x0] - strb w0, [x22,-4] - lsr w5, w0, 8 - strb w5, [x22,-3] - lsr w5, w0, 16 - strb w5, [x22,-2] - lsr w0, w0, 24 - strb w0, [x22,-1] - mov w0, w4 - b .L1134 -.L1176: + bne .L1191 add x0, x19, :lo12:.LANCHOR0 lsr w24, w24, 2 - ldr w5, [x0,2460] - ldr w4, [x0,2388] - mov w0, 0 - mov w23, w0 -.L1136: - cmp w0, w24 - bcs .L1132 - cbz w5, .L1132 - uxtw x1, w0 - add x1, x1, 8 - ldr w1, [x20,x1,lsl 2] - str w1, [x29,104] - ldr w1, [x29,104] - tbnz x1, 2, .L1160 - ldr w3, [x29,104] - ubfx x3, x3, 15, 1 - cbnz w3, .L1160 - cmp w4, 5 - bls .L1138 - ldr w2, [x29,104] - ubfx x6, x2, 3, 5 - ldr w2, [x29,104] - ldr w1, [x29,104] - ubfx x2, x2, 27, 1 - ubfx x3, x1, 16, 5 - ldr w1, [x29,104] - orr w2, w6, w2, lsl 5 - ubfx x1, x1, 29, 1 - orr w1, w3, w1, lsl 5 - ldr w3, [x29,104] - cmp w2, w1 - bls .L1139 - ldr w1, [x29,104] - ubfx x3, x3, 3, 5 - ubfx x1, x1, 27, 1 - orr w3, w3, w1, lsl 5 - b .L1140 -.L1139: - ubfx x1, x3, 16, 5 - ldr w3, [x29,104] - ubfx x3, x3, 29, 1 - b .L1175 -.L1138: - cmp w4, 3 - bls .L1140 - ldr w2, [x29,104] - ubfx x6, x2, 3, 5 - ldr w2, [x29,104] - ldr w1, [x29,104] - ubfx x2, x2, 28, 1 - ubfx x3, x1, 16, 5 - ldr w1, [x29,104] - orr w2, w6, w2, lsl 5 - ubfx x1, x1, 30, 1 - orr w1, w3, w1, lsl 5 - ldr w3, [x29,104] - cmp w2, w1 - bls .L1141 - ubfx x1, x3, 3, 5 - ldr w3, [x29,104] - ubfx x3, x3, 28, 1 - b .L1175 -.L1141: - ubfx x1, x3, 16, 5 - ldr w3, [x29,104] - ubfx x3, x3, 30, 1 -.L1175: - orr w3, w1, w3, lsl 5 -.L1140: - cmp w23, w3 - csel w23, w23, w3, cs - b .L1137 -.L1160: - mov w23, -1 -.L1137: - add w0, w0, 1 - b .L1136 -.L1132: - str wzr, [x20,16] - b .L1143 -.L1130: - cmp w21, 1 - bne .L1174 + mov w2, 0 mov w23, 0 - mov w28, 2 -.L1144: - cmp w23, w24 - bcs .L1177 - and w27, w23, 3 - mov x3, x26 - cbz x26, .L1146 - ubfiz x0, x23, 9, 23 - add x3, x26, x0 -.L1146: - cmp x22, xzr - mov x0, x20 - csel w4, w28, wzr, ne - mov w1, 1 - mov w2, w27 - mul w4, w4, w23 - add w23, w23, 2 - add x4, x22, x4 - bl NandcCopy1KB - mov x4, 0 - mov w0, w25 - mov w1, 1 - mov w2, 2 - mov w3, w27 - mov x5, x4 - bl NandcXferStart - mov w0, w25 - mov w1, 1 - bl NandcXferComp - b .L1144 -.L1177: - mov w23, 0 - b .L1143 -.L1174: - mov w1, 0 - mov x4, 0 - mov w27, 0 - mov w0, w25 - mov w2, 2 - mov w3, w1 - mov x5, x4 - mov w23, w27 - bl NandcXferStart -.L1149: - cmp w27, w24 - bcs .L1143 - mov w0, w25 - mov w1, w21 - add w28, w27, 2 - bl NandcXferComp - ldr w0, [x20,32] - cmp w28, w24 - str w0, [x29,104] - bcs .L1150 - mov x4, 0 - mov w0, w25 - mov w1, 0 - mov w2, 2 - and w3, w28, 3 - mov x5, x4 - bl NandcXferStart -.L1150: - ldr w0, [x29,104] - tbnz x0, 2, .L1165 - ldr w0, [x29,104] - ubfx x1, x0, 3, 5 - ldr w0, [x29,104] - ubfx x0, x0, 27, 1 - orr w0, w1, w0, lsl 5 - cmp w23, w0 - csel w23, w23, w0, cs - b .L1151 -.L1165: - mov w23, -1 -.L1151: - and w2, w27, 3 - mov x3, x26 - cbz x26, .L1152 - ubfiz x3, x27, 9, 23 - add x3, x26, x3 -.L1152: - cmp x22, xzr - mov w0, 2 - csel w4, w0, wzr, ne - mov w1, 0 - mov x0, x20 - mul w4, w4, w27 - mov w27, w28 - add x4, x22, x4 - bl NandcCopy1KB - b .L1149 -.L1143: - cbnz w21, .L1155 + ldr w3, [x0, 2388] + ldr w4, [x0, 2460] +.L1192: + cmp w2, w24 + bcs .L1188 + cbnz w4, .L1198 +.L1188: + str wzr, [x20, 16] +.L1199: add x19, x19, :lo12:.LANCHOR0 - ldr w0, [x19,2388] + ldr w0, [x19, 2388] cmp w0, 5 - bls .L1155 + bls .L1185 + cbnz w21, .L1185 ldr w0, [x20] mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w0, w1 cmp w1, 139264 - bne .L1155 + bne .L1185 orr w0, w0, 131072 mov w23, -1 str w0, [x20] -.L1155: +.L1185: mov w0, w23 - 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 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], 192 ret +.L1191: + ldr x5, [x1, 2416] + and x0, x0, 4294967292 + add x22, x22, 4 + ldr w0, [x5, x0] + strb w0, [x22, -4] + lsr w5, w0, 8 + strb w5, [x22, -3] + lsr w5, w0, 16 + strb w5, [x22, -2] + lsr w0, w0, 24 + strb w0, [x22, -1] + mov w0, w4 + b .L1190 +.L1198: + uxtw x0, w2 + add x0, x0, 8 + ldr w0, [x20, x0, lsl 2] + str w0, [x29, 120] + ldr w0, [x29, 120] + tbnz x0, 2, .L1214 + ldr w0, [x29, 120] + tbnz x0, 15, .L1214 + cmp w3, 5 + bls .L1194 + ldr w1, [x29, 120] + ubfx x6, x1, 3, 5 + ldr w1, [x29, 120] + ldr w0, [x29, 120] + ubfx x1, x1, 27, 1 + ubfx x5, x0, 16, 5 + ldr w0, [x29, 120] + orr w1, w6, w1, lsl 5 + ubfx x0, x0, 29, 1 + orr w0, w5, w0, lsl 5 + cmp w1, w0 + ldr w0, [x29, 120] + bls .L1195 + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 27, 1 +.L1220: + orr w0, w1, w0, lsl 5 +.L1196: + cmp w23, w0 + csel w23, w23, w0, cs +.L1193: + add w2, w2, 1 + b .L1192 +.L1195: + ubfx x1, x0, 16, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 29, 1 + b .L1220 +.L1194: + cmp w3, 3 + bls .L1215 + ldr w1, [x29, 120] + ubfx x6, x1, 3, 5 + ldr w1, [x29, 120] + ldr w0, [x29, 120] + ubfx x1, x1, 28, 1 + ubfx x5, x0, 16, 5 + ldr w0, [x29, 120] + orr w1, w6, w1, lsl 5 + ubfx x0, x0, 30, 1 + orr w0, w5, w0, lsl 5 + cmp w1, w0 + ldr w0, [x29, 120] + bls .L1197 + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 28, 1 + b .L1220 +.L1197: + ubfx x1, x0, 16, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 30, 1 + b .L1220 +.L1215: + mov w0, 0 + b .L1196 +.L1214: + mov w23, -1 + b .L1193 +.L1211: + mov w23, 0 + b .L1188 +.L1186: + cmp w21, 1 + bne .L1200 + cmp x4, 0 + mov w27, 2 + csel w27, w27, wzr, ne + mov w28, 0 + lsl w27, w27, 1 + mov w23, 0 +.L1201: + cmp w23, w24 + bcc .L1203 + mov w23, 0 + b .L1199 +.L1203: + and w6, w23, 3 + cbz x26, .L1216 + lsl w3, w23, 9 + add x3, x26, x3 +.L1202: + add x4, x22, w28, uxtw + mov w2, w6 + mov x0, x20 + str w6, [x29, 108] + mov w1, 1 + bl NandcCopy1KB + ldr w6, [x29, 108] + mov x5, 0 + mov x4, 0 + mov w2, 2 + mov w3, w6 + mov w0, w25 + mov w1, 1 + add w23, w23, 2 + bl NandcXferStart + add w28, w28, w27 + mov w1, 1 + mov w0, w25 + bl NandcXferComp + b .L1201 +.L1216: + mov x3, 0 + b .L1202 +.L1200: + mov w0, w25 + mov x5, 0 + mov x4, 0 + mov w3, 0 + mov w2, 2 + mov w1, 0 + bl NandcXferStart + mov w27, 2 + cmp x22, 0 + mov w28, 0 + csel w27, w27, wzr, ne + mov w23, 0 + lsl w0, w27, 1 + mov w27, 0 + str w0, [x29, 108] +.L1204: + cmp w24, w27 + bls .L1199 + mov w0, w25 + mov w1, w21 + bl NandcXferComp + ldr w0, [x20, 32] + add w7, w27, 2 + str w0, [x29, 120] + cmp w24, w7 + bls .L1205 + and w3, w7, 3 + str w7, [x29, 104] + mov x5, 0 + mov x4, 0 + mov w2, 2 + mov w1, 0 + mov w0, w25 + bl NandcXferStart + ldr w7, [x29, 104] +.L1205: + ldr w0, [x29, 120] + tbnz x0, 2, .L1217 + ldr w0, [x29, 120] + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 27, 1 + orr w0, w1, w0, lsl 5 + cmp w23, w0 + csel w23, w23, w0, cs +.L1206: + and w2, w27, 3 + cbz x26, .L1218 + lsl w3, w27, 9 + add x3, x26, x3 +.L1207: + add x4, x22, w28, uxtw + mov x0, x20 + str w7, [x29, 104] + mov w1, 0 + bl NandcCopy1KB + ldp w7, w0, [x29, 104] + add w28, w28, w0 + mov w27, w7 + b .L1204 +.L1217: + mov w23, -1 + b .L1206 +.L1218: + mov x3, 0 + b .L1207 .size NandcXferData, .-NandcXferData .align 2 .global FlashReadRawPage .type FlashReadRawPage, %function FlashReadRawPage: stp x29, x30, [sp, -64]! - mov x4, x3 add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 - adrp x0, .LANCHOR1+481 - str x21, [sp,32] - mov x21, x2 - ldrb w20, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L1179 + stp x19, x20, [sp, 16] + ands w19, w0, 255 + stp x21, x22, [sp, 32] + mov w21, w1 + str x23, [sp, 48] + adrp x1, .LANCHOR1+481 + mov x22, x2 + mov x23, x3 + ldrb w20, [x1, #:lo12:.LANCHOR1+481] + bne .L1222 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w5, [x0,73] - ldr w0, [x0,76] + ldrb w5, [x0, 73] + ldr w0, [x0, 76] mul w0, w5, w0 - cmp w1, w0 + cmp w0, w21 mov w0, 4 - csel w20, w20, w0, cs -.L1179: + csel w20, w20, w0, ls +.L1222: mov w0, w19 - str x4, [x29,48] - str x1, [x29,56] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr x1, [x29,56] + mov w1, w21 mov w0, w19 bl FlashReadCmd mov w0, w19 bl NandcWaitFlashReady - ldr x4, [x29,48] mov w2, w20 - mov x3, x21 + mov x4, x23 + mov x3, x22 mov w1, 0 mov w0, w19 bl NandcXferData - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - ldr x21, [sp,32] - mov w0, w20 - ldp x19, x20, [sp,16] + mov w0, w2 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size FlashReadRawPage, .-FlashReadRawPage @@ -8059,161 +8027,160 @@ FlashReadRawPage: .global FlashDdrTunningRead .type FlashDdrTunningRead, %function FlashDdrTunningRead: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - stp x25, x26, [sp,64] - uxtb w23, w0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + and w23, w0, 255 + stp x21, x22, [sp, 32] + mov w25, w1 + stp x27, x28, [sp, 80] mov w22, 6 - ldr x0, [x19,136] - mov w24, w1 - mov x28, x2 - mov x27, x3 - mov w25, w4 - mov w21, 1024 - ldr w0, [x0,304] - str w0, [x29,124] - ldr w0, [x19,2388] + mov x24, x2 + mov x28, x3 + ldr x0, [x19, 136] + mov w26, w4 + ldr w0, [x0, 304] + str w0, [x29, 108] + ldr w0, [x19, 2388] cmp w0, 8 mov w0, 12 csel w22, w22, w0, cc - cbz w4, .L1182 + cbz w4, .L1238 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode mov w0, w23 bl FlashReset - mov w1, w24 - mov x2, x28 - mov x3, x27 + mov x3, x28 + mov x2, x24 + mov w1, w25 mov w0, w23 bl FlashReadRawPage - mov w21, w0 - ldrb w0, [x19,2357] + mov w20, w0 + ldrb w0, [x19, 2357] bl FlashSetInterfaceMode - ldrb w0, [x19,2357] + ldrb w0, [x19, 2357] bl NandcSetMode - cmn w21, #1 - bne .L1183 -.L1192: - mov w21, -1 - b .L1184 -.L1183: + cmn w20, #1 + bne .L1227 +.L1236: + mov w20, -1 +.L1224: + mov w0, w20 + 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 +.L1227: + mov w2, w20 + mov w1, w25 adrp x0, .LC89 - mov w1, w24 add x0, x0, :lo12:.LC89 - mov w2, w21 bl printk - cmp w21, 9 - bhi .L1185 - add x19, x19, w23, sxtw 4 - ldr x0, [x19,8] - ldr w1, [x0,3840] + cmp w20, 9 + bhi .L1229 + sbfiz x0, x23, 4, 32 + ldr x0, [x19, x0] + ldr w1, [x0, 3840] ldr w1, [x0] orr w1, w1, 131072 str w1, [x0] -.L1185: +.L1229: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldr w1, [x0,1608] + ldr w1, [x0, 1616] add w1, w1, 1 - str w1, [x0,1608] + str w1, [x0, 1616] cmp w1, 2047 - bls .L1184 - mov x27, 0 - str wzr, [x0,1608] - mov x28, x27 -.L1182: + bls .L1224 + mov x28, 0 + mov x24, 0 + str wzr, [x0, 1616] +.L1226: + mov w5, 0 + mov w21, 0 + mov w6, 0 mov w19, 0 - mov w26, -1 - mov w5, w19 - mov w6, w19 - mov w20, w19 -.L1190: + mov w27, -1 +.L1234: + stp w5, w6, [x29, 100] mov w0, w22 - str x5, [x29,104] - str x6, [x29,112] bl NandcSetDdrPara - mov w1, w24 + mov w1, w25 + mov x3, x28 + mov x2, x24 mov w0, w23 - mov x2, x28 - mov x3, x27 bl FlashReadRawPage - add w1, w21, 1 - ldr x6, [x29,112] + add w1, w20, 1 cmp w0, w1 - ldr x5, [x29,104] - bhi .L1186 + ldp w5, w6, [x29, 100] + bhi .L1230 cmp w0, 2 - bhi .L1196 - add w20, w20, 1 - cmp w20, 9 - bls .L1196 - sub w19, w22, w20 - mov w21, w0 - mov w26, 0 - b .L1188 -.L1186: - cmp w6, w20 - bcs .L1197 - cmp w20, 7 - sub w5, w19, w20 - bhi .L1198 - mov w6, w20 - b .L1197 -.L1196: - mov x27, 0 - mov w19, w22 - mov w21, w0 - mov w26, 0 - mov x28, x27 - b .L1187 -.L1197: - mov w20, 0 -.L1187: - add w22, w22, 2 - cmp w22, 69 - bls .L1190 -.L1188: - cmp w6, w20 - csel w19, w19, w5, cc - b .L1189 -.L1198: - mov w19, w5 -.L1189: - cbz w19, .L1191 + bhi .L1240 + add w19, w19, 1 + cmp w19, 9 + bls .L1240 + mov w1, w21 + mov w20, w0 + sub w21, w22, w19 + mov w27, 0 +.L1232: + cmp w19, w6 + csel w21, w21, w1, hi +.L1233: + cbz w21, .L1235 + mov w1, w21 adrp x0, .LC90 - mov w1, w19 add x0, x0, :lo12:.LC90 bl printk - mov w0, w19 + mov w0, w21 bl NandcSetDdrPara -.L1191: - cbz w26, .L1184 +.L1235: + cbz w27, .L1224 adrp x0, .LC91 + mov w2, w25 mov w1, w23 add x0, x0, :lo12:.LC91 - mov w2, w24 bl printk - cbz w25, .L1192 - ldr w0, [x29,124] - lsr w0, w0, 8 + cbz w26, .L1236 + ldr w1, [x29, 108] + lsr w0, w1, 8 bl NandcSetDdrPara -.L1184: - mov w0, w21 - 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 + b .L1224 +.L1238: + mov w20, 1024 + b .L1226 +.L1230: + cmp w19, w6 + bls .L1241 + sub w21, w5, w19 + cmp w19, 7 + bhi .L1233 + mov w6, w19 +.L1241: + mov w19, 0 + b .L1231 +.L1240: + mov w5, w22 + mov w20, w0 + mov w27, 0 + mov x28, 0 + mov x24, 0 +.L1231: + add w22, w22, 2 + cmp w22, 69 + bls .L1234 + mov w1, w21 + mov w21, w5 + b .L1232 .size FlashDdrTunningRead, .-FlashDdrTunningRead .align 2 .global FlashReadPage @@ -8221,99 +8188,97 @@ FlashDdrTunningRead: FlashReadPage: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w20, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x23, x24, [sp, 48] mov w0, w20 - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] + stp x21, x22, [sp, 32] + mov x23, x2 + stp x25, x26, [sp, 64] mov w22, w1 - mov x24, x2 - mov x23, x3 + mov x24, x3 bl FlashReadRawPage - cmn w0, #1 mov w19, w0 - bne .L1208 + cmn w0, #1 + bne .L1251 adrp x21, .LANCHOR0 add x25, x21, :lo12:.LANCHOR0 - ldrb w26, [x25,80] - cbnz w26, .L1209 -.L1211: + ldrb w26, [x25, 80] + cbnz w26, .L1252 +.L1254: add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,2380] - cbz w0, .L1208 - b .L1229 -.L1209: - mov w0, w20 - mov w1, w22 - mov x2, x24 - mov x3, x23 - strb wzr, [x25,80] - bl FlashReadRawPage - strb w26, [x25,80] - cmn w0, #1 - beq .L1211 - mov w19, w0 - b .L1208 -.L1229: - ldr x0, [x21,136] - mov w1, w22 - mov x2, x24 - mov x3, x23 + ldrb w0, [x21, 2380] + cbz w0, .L1251 + ldr x0, [x21, 136] mov w4, 1 - ldr w25, [x0,304] + mov x3, x24 + mov x2, x23 + mov w1, w22 + ldr w25, [x0, 304] mov w0, w20 bl FlashDdrTunningRead - cmn w0, #1 mov w19, w0 - beq .L1212 - ldrb w0, [x21,2464] + cmn w0, #1 + beq .L1255 + ldrb w0, [x21, 2464] cmp w19, w0, lsr 1 - bls .L1208 -.L1212: + bls .L1251 +.L1255: lsr w0, w25, 8 bl NandcSetDdrPara -.L1208: - adrp x21, .LANCHOR4 - cmn w19, #1 - add x21, x21, :lo12:.LANCHOR4 - ldr x4, [x21,1616] - bne .L1213 - cbz x4, .L1213 + b .L1251 +.L1252: + strb wzr, [x25, 80] + mov x3, x24 + mov x2, x23 + mov w1, w22 + mov w0, w20 + bl FlashReadRawPage + strb w26, [x25, 80] + cmn w0, #1 + beq .L1254 + mov w19, w0 +.L1251: + adrp x21, .LANCHOR4 + add x21, x21, :lo12:.LANCHOR4 + ldr x4, [x21, 1624] + cbz x4, .L1250 + cmn w19, #1 + bne .L1250 + mov x3, x24 + mov x2, x23 mov w1, w22 - mov x2, x24 - mov x3, x23 mov w0, w20 blr x4 mov w19, w0 - adrp x0, .LC92 - mov w1, w19 - add x0, x0, :lo12:.LC92 - mov w2, w20 + mov w1, w0 mov w3, w22 + mov w2, w20 + adrp x0, .LC92 + add x0, x0, :lo12:.LC92 bl printk cmn w19, #1 - bne .L1213 + bne .L1250 adrp x0, .LANCHOR0+204 - ldrb w0, [x0,#:lo12:.LANCHOR0+204] - cbz w0, .L1213 + ldrb w0, [x0, #:lo12:.LANCHOR0+204] + cbz w0, .L1250 mov w0, w20 bl flash_enter_slc_mode - ldr x4, [x21,1616] - mov w0, w20 + ldr x4, [x21, 1624] + mov x3, x24 + mov x2, x23 mov w1, w22 - mov x2, x24 - mov x3, x23 + mov w0, w20 blr x4 mov w19, w0 mov w0, w20 bl flash_exit_slc_mode -.L1213: +.L1250: mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [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 FlashReadPage, .-FlashReadPage @@ -8323,52 +8288,52 @@ FlashReadPage: FlashDdrParaScan: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - mov w20, w1 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x22, x19, :lo12:.LANCHOR0 - uxtb w21, w0 - ldrb w0, [x22,2357] + and w20, w0, 255 + mov w21, w1 + ldrb w0, [x22, 2357] bl FlashSetInterfaceMode - ldrb w0, [x22,2357] + ldrb w0, [x22, 2357] bl NandcSetMode + mov w4, 0 + mov x3, 0 mov x2, 0 - mov w1, w20 - mov x3, x2 - mov w4, w2 - mov w0, w21 + mov w1, w21 + mov w0, w20 bl FlashDdrTunningRead + mov x3, 0 mov w22, w0 mov x2, 0 - mov w0, w21 - mov w1, w20 - mov x3, x2 + mov w1, w21 + mov w0, w20 bl FlashReadRawPage cmn w0, #1 - beq .L1234 + beq .L1271 cmn w22, #1 - bne .L1231 -.L1234: + bne .L1272 +.L1271: add x20, x19, :lo12:.LANCHOR0 - ldrb w0, [x20,2357] - tbz x0, 0, .L1231 + ldrb w0, [x20, 2357] + tbz x0, 0, .L1272 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - strb wzr, [x20,2380] - b .L1233 -.L1231: - add x19, x19, :lo12:.LANCHOR0 - mov w0, 1 - strb w0, [x19,2380] -.L1233: + strb wzr, [x20, 2380] +.L1273: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L1272: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 1 + strb w0, [x19, 2380] + b .L1273 .size FlashDdrParaScan, .-FlashDdrParaScan .align 2 .global FlashLoadPhyInfo @@ -8377,142 +8342,137 @@ FlashLoadPhyInfo: stp x29, x30, [sp, -128]! mov w0, 60 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR4 - adrp x24, .LANCHOR1 - strb w0, [x29,120] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR4 + strb w0, [x29, 120] mov w0, 40 - strb w0, [x29,121] + strb w0, [x29, 121] mov w0, 24 - strb w0, [x29,122] + strb w0, [x29, 122] mov w0, 16 - strb w0, [x29,123] - add x0, x23, :lo12:.LANCHOR4 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x19, x20, [sp,16] - adrp x22, .LANCHOR0 - add x24, x24, :lo12:.LANCHOR1 - ldr x1, [x0,1600] - add x21, x22, :lo12:.LANCHOR0 - str x1, [x0,1624] - mov w20, 0 - str wzr, [x0,1632] - mov w25, 4 + strb w0, [x29, 123] + add x0, x20, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + adrp x22, .LANCHOR1 + stp x27, x28, [sp, 80] + add x22, x22, :lo12:.LANCHOR1 + stp x25, x26, [sp, 64] + mov w27, 20036 + mov w19, 0 + mov w24, 4 + ldr w0, [x0, 76] + mov w23, -1 + str w0, [x29, 108] + add x0, x21, :lo12:.LANCHOR4 + movk w27, 0x4e41, lsl 16 + add x22, x22, 472 + ldr x1, [x0, 1608] + str x1, [x0, 1632] + str wzr, [x0, 1640] mov w0, 0 - mov w28, -1 - add x24, x24, 472 - add x27, x21, 96 - ldr w26, [x21,76] bl flash_enter_slc_mode -.L1242: - add w0, w20, 1 - mov x19, 0 - str w0, [x29,104] -.L1244: +.L1282: + add w28, w19, 1 + add x25, x21, :lo12:.LANCHOR4 + mov x26, 0 +.L1284: add x0, x29, 120 - ldrb w0, [x19,x0] + ldrb w0, [x0, x26] bl FlashBchSel - add x5, x23, :lo12:.LANCHOR4 - mov w0, 0 - mov w1, w20 + ldr x2, [x25, 1608] mov x3, 0 - str x5, [x29,96] - ldr x2, [x5,1600] + mov w1, w19 + mov w0, 0 bl FlashReadRawPage cmn w0, #1 - bne .L1243 - ldr x5, [x29,96] - mov w0, 0 - ldr w1, [x29,104] + bne .L1283 + ldr x2, [x25, 1608] mov x3, 0 - ldr x2, [x5,1600] + mov w1, w28 + mov w0, 0 bl FlashReadRawPage cmn w0, #1 - bne .L1243 - add x19, x19, 1 - cmp x19, 4 - beq .L1245 - b .L1244 -.L1246: - add x0, x2, 12 + bne .L1283 + add x26, x26, 1 + cmp x26, 4 + bne .L1284 +.L1285: + ldr w0, [x29, 108] + subs w24, w24, #1 + add w19, w19, w0 + bne .L1282 + b .L1290 +.L1286: mov w1, 2036 - str x2, [x29,104] - mov w28, -1 + add x0, x6, 12 bl js_hash - ldr x2, [x29,104] - ldr w1, [x2,8] + ldr w1, [x6, 8] cmp w1, w0 - beq .L1256 -.L1245: - subs w25, w25, #1 - add w20, w20, w26 - bne .L1242 - mov w0, w25 -.L1255: - bl flash_exit_slc_mode - mov w0, w28 - 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 -.L1243: - add x19, x23, :lo12:.LANCHOR4 - mov w0, 20036 - movk w0, 0x4e41, lsl 16 - ldr x2, [x19,1624] - ldr w1, [x2] - cmp w1, w0 - bne .L1245 - cbnz w28, .L1246 - add x22, x22, :lo12:.LANCHOR0 - ldr w0, [x22,76] - udiv w20, w20, w0 - mov w0, w28 - add w20, w20, 1 - str w20, [x19,1636] - b .L1255 -.L1256: - add x1, x2, 160 - mov x0, x24 + bne .L1292 + add x1, x6, 160 mov w2, 32 + mov x0, x22 bl ftl_memcpy - ldr x1, [x19,1624] + ldr x1, [x25, 1632] + add x23, x20, :lo12:.LANCHOR0 mov w2, 32 - mov x0, x27 + add x0, x23, 96 add x1, x1, 192 bl ftl_memcpy - ldr x1, [x19,1624] + ldr x1, [x25, 1632] mov w2, 852 - add x0, x21, 1272 + add x0, x23, 1272 add x1, x1, 224 bl ftl_memcpy - ldrh w0, [x24,10] + ldrh w0, [x22, 10] bl FlashBlockAlignInit - str w20, [x19,1632] - ldr w1, [x21,76] - ldr x2, [x19,1624] - udiv w1, w20, w1 - ldr w0, [x2,1076] - add w1, w1, 1 - strb w0, [x21,2380] - cmp w1, 1 - bls .L1248 - str w1, [x19,1636] - b .L1249 -.L1248: + str w19, [x25, 1640] + ldr x1, [x25, 1632] + ldr w0, [x1, 1076] + strb w0, [x23, 2380] + ldr w0, [x23, 76] + udiv w0, w19, w0 + add w0, w0, 1 + cmp w0, 1 + bls .L1288 +.L1295: + str w0, [x25, 1644] + add x0, x21, :lo12:.LANCHOR4 + ldrh w1, [x1, 14] + mov w23, 0 + strb w1, [x0, 1648] + b .L1285 +.L1288: mov w0, 2 - str w0, [x19,1636] -.L1249: - add x0, x23, :lo12:.LANCHOR4 - ldrh w1, [x2,14] - mov w28, 0 - strb w1, [x0,1640] - b .L1245 + b .L1295 +.L1292: + mov w23, -1 + b .L1285 +.L1283: + add x25, x21, :lo12:.LANCHOR4 + ldr x6, [x25, 1632] + ldr w0, [x6] + cmp w0, w27 + bne .L1285 + cbnz w23, .L1286 + add x20, x20, :lo12:.LANCHOR0 + ldr w0, [x20, 76] + udiv w19, w19, w0 + add w19, w19, 1 + str w19, [x25, 1644] +.L1290: + mov w0, 0 + bl flash_exit_slc_mode + mov w0, w23 + 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 FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 2 .global ToshibaReadRetrial @@ -8520,174 +8480,172 @@ FlashLoadPhyInfo: ToshibaReadRetrial: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x23, x24, [sp,48] - uxtb w23, w0 - mov w0, w23 - str w1, [x29,116] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - mov x27, x2 - mov x26, x3 - adrp x19, .LANCHOR0 - bl NandcWaitFlashReady - add x2, x19, :lo12:.LANCHOR0 - sbfiz x0, x23, 4, 32 - add x1, x2, 8 - mov w22, 0 - add x3, x1, x0 - ldr x24, [x1,x0] - ldrb w0, [x3,8] - str x0, [x29,120] - add x20, x0, 8 - mov x28, x0 - ldrb w0, [x2,128] - add x20, x24, x20, lsl 8 - sub w0, w0, #67 - uxtb w0, w0 - cmp w0, 1 - bls .L1258 - ldrb w0, [x2,2380] - cbz w0, .L1259 + stp x21, x22, [sp, 32] + and w22, w0, 255 + stp x19, x20, [sp, 16] mov w0, w22 - mov w22, 1 + stp x27, x28, [sp, 80] + mov x27, x3 + stp x23, x24, [sp, 48] + adrp x19, .LANCHOR0 + str x2, [x29, 112] + str w1, [x29, 120] + stp x25, x26, [sp, 64] + bl NandcWaitFlashReady + add x1, x19, :lo12:.LANCHOR0 + sbfiz x0, x22, 4, 32 + add x2, x1, x0 + ldr x23, [x1, x0] + ldrb w0, [x1, 128] + ldrb w28, [x2, 8] + sub w0, w0, #67 + str w28, [x29, 124] + add x20, x28, 8 + and w0, w0, 255 + add x20, x23, x20, lsl 8 + cmp w0, 1 + bls .L1313 + ldrb w0, [x1, 2380] + cbz w0, .L1314 + mov w24, 1 + mov w0, 0 bl NandcSetDdrMode -.L1259: - ubfiz x0, x28, 8, 8 - mov w2, 92 - add x0, x24, x0 - str w2, [x0,2056] - mov w2, 197 - str w2, [x0,2056] -.L1258: - ldr x0, [x29,120] +.L1298: + add x0, x23, x28, lsl 8 + mov w1, 92 + str w1, [x0, 2056] + mov w1, 197 + str w1, [x0, 2056] +.L1297: + ldrsw x0, [x29, 124] mov w21, 1 mov w25, -1 add x0, x0, 8 - lsl x0, x0, 8 - str x0, [x29,104] - ubfiz x0, x28, 8, 8 - str x0, [x29,96] -.L1260: + add x0, x23, x0, lsl 8 + str x0, [x29, 104] +.L1299: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1641] + ldrb w0, [x0, 1649] add w0, w0, 1 cmp w21, w0 - bcs .L1285 - add x0, x19, :lo12:.LANCHOR0 - mov w1, w21 - ldrb w0, [x0,128] - sub w0, w0, #67 - uxtb w0, w0 - cmp w0, 1 - mov x0, x20 - bhi .L1261 - bl SandiskSetRRPara - b .L1262 -.L1261: - bl ToshibaSetRRPara -.L1262: - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,128] - cmp w0, 34 - bne .L1263 - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1641] - sub w0, w0, #3 - cmp w21, w0 - bne .L1263 - ldr x0, [x29,104] - mov w1, 179 - add x0, x24, x0 - str w1, [x0,8] -.L1263: - ldr x0, [x29,96] - mov w1, 38 - add x0, x24, x0 - str w1, [x0,2056] - mov w1, 93 - str w1, [x0,2056] - cbz w22, .L1264 - mov w0, 4 - bl NandcSetDdrMode - ldr w1, [x29,116] - mov w0, w23 - mov x2, x27 - mov x3, x26 - bl FlashReadRawPage - mov w28, w0 - mov w0, 0 - bl NandcSetDdrMode - b .L1265 -.L1264: - ldr w1, [x29,116] - mov w0, w23 - mov x2, x27 - mov x3, x26 - bl FlashReadRawPage - mov w28, w0 -.L1265: - cmn w28, #1 - beq .L1266 - add x0, x19, :lo12:.LANCHOR0 - cmn w25, #1 - csel w25, w25, w28, ne - ldrb w0, [x0,2464] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L1268 - mov x26, 0 - mov x27, x26 -.L1266: - add w21, w21, 1 - b .L1260 -.L1285: - mov w28, w25 -.L1268: + bcc .L1308 + mov w26, w25 +.L1307: add x0, x19, :lo12:.LANCHOR0 mov w1, 0 - ldrb w0, [x0,128] + ldrb w0, [x0, 128] sub w0, w0, #67 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 mov x0, x20 - bhi .L1270 + bhi .L1309 bl SandiskSetRRPara - b .L1271 -.L1270: - bl ToshibaSetRRPara -.L1271: - ldr x0, [x29,120] +.L1310: + ldrsw x0, [x29, 124] add x19, x19, :lo12:.LANCHOR0 add x0, x0, 8 - add x24, x24, x0, lsl 8 + add x23, x23, x0, lsl 8 mov w0, 255 - str w0, [x24,8] - ldrb w0, [x19,2464] + str w0, [x23, 8] + ldrb w0, [x19, 2464] add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L1272 - cmn w28, #1 + cmp w26, w0, lsr 2 + bcc .L1311 + cmn w26, #1 mov w0, 256 - csel w28, w28, w0, eq -.L1272: - mov w0, w23 + csel w26, w26, w0, eq +.L1311: + mov w0, w22 bl NandcWaitFlashReady - cbz w22, .L1273 + cbz w24, .L1296 mov w0, 4 bl NandcSetDdrMode -.L1273: - mov w0, w28 - 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] +.L1296: + 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], 128 ret +.L1314: + mov w24, 0 + b .L1298 +.L1313: + mov w24, 0 + b .L1297 +.L1308: + add x0, x19, :lo12:.LANCHOR0 + mov w1, w21 + ldrb w0, [x0, 128] + sub w0, w0, #67 + and w0, w0, 255 + cmp w0, 1 + mov x0, x20 + bhi .L1300 + bl SandiskSetRRPara +.L1301: + add x0, x19, :lo12:.LANCHOR0 + ldrb w0, [x0, 128] + cmp w0, 34 + bne .L1302 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldrb w0, [x0, 1649] + sub w0, w0, #3 + cmp w21, w0 + bne .L1302 + ldr x1, [x29, 104] + mov w0, 179 + str w0, [x1, 8] +.L1302: + add x0, x23, x28, lsl 8 + mov w1, 38 + str w1, [x0, 2056] + mov w1, 93 + str w1, [x0, 2056] + cbz w24, .L1303 + mov w0, 4 + bl NandcSetDdrMode + ldr w1, [x29, 120] + mov x3, x27 + ldr x2, [x29, 112] + mov w0, w22 + bl FlashReadRawPage + mov w26, w0 + mov w0, 0 + bl NandcSetDdrMode +.L1304: + cmn w26, #1 + beq .L1305 + add x0, x19, :lo12:.LANCHOR0 + cmn w25, #1 + csel w25, w25, w26, ne + ldrb w0, [x0, 2464] + add w0, w0, w0, lsl 1 + cmp w26, w0, lsr 2 + bcc .L1307 + mov x27, 0 + str xzr, [x29, 112] +.L1305: + add w21, w21, 1 + b .L1299 +.L1300: + bl ToshibaSetRRPara + b .L1301 +.L1303: + ldr w1, [x29, 120] + mov x3, x27 + ldr x2, [x29, 112] + mov w0, w22 + bl FlashReadRawPage + mov w26, w0 + b .L1304 +.L1309: + bl ToshibaSetRRPara + b .L1310 .size ToshibaReadRetrial, .-ToshibaReadRetrial .align 2 .global SamsungReadRetrial @@ -8695,80 +8653,81 @@ ToshibaReadRetrial: SamsungReadRetrial: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w22, w0 - str x27, [sp,80] + stp x21, x22, [sp, 32] + and w22, w0, 255 + stp x19, x20, [sp, 16] mov w0, w22 - adrp x27, .LANCHOR4 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov x24, x2 + stp x23, x24, [sp, 48] + mov x23, x2 + stp x25, x26, [sp, 64] + mov x24, x3 + stp x27, x28, [sp, 80] mov w25, w1 - mov x23, x3 - adrp x20, .LANCHOR0 bl NandcWaitFlashReady - mov w26, 1 - add x0, x20, :lo12:.LANCHOR0 + adrp x20, .LANCHOR0 sbfiz x1, x22, 4, 32 - add x0, x0, 8 - mov w19, -1 + add x0, x20, :lo12:.LANCHOR0 add x2, x0, x1 - ldr x0, [x0,x1] - ldrb w21, [x2,8] + adrp x28, .LANCHOR4 + mov x26, x0 + add x28, x28, :lo12:.LANCHOR4 + ldr x1, [x0, x1] + mov w27, 1 + ldrb w21, [x2, 8] + mov w19, -1 add x21, x21, 8 - add x21, x0, x21, lsl 8 -.L1287: - add x0, x27, :lo12:.LANCHOR4 - ldrb w0, [x0,1641] + add x21, x1, x21, lsl 8 +.L1325: + ldrb w0, [x28, 1649] add w0, w0, 1 - cmp w26, w0 - bcs .L1290 - mov x0, x21 - mov w1, w26 - bl SamsungSetRRPara - mov w0, w22 - mov w1, w25 - mov x2, x24 - mov x3, x23 - bl FlashReadRawPage - cmn w0, #1 - beq .L1288 - add x1, x20, :lo12:.LANCHOR0 - cmn w19, #1 - csel w19, w19, w0, ne - ldrb w1, [x1,2464] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L1293 - mov x23, 0 - mov x24, x23 -.L1288: - add w26, w26, 1 - b .L1287 -.L1293: - mov w19, w0 -.L1290: + cmp w27, w0 + bcc .L1329 +.L1328: + add x20, x20, :lo12:.LANCHOR0 mov x0, x21 mov w1, 0 - add x20, x20, :lo12:.LANCHOR0 bl SamsungSetRRPara - ldrb w0, [x20,2464] + ldrb w0, [x20, 2464] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L1292 + bcc .L1324 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L1292: +.L1324: 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 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 +.L1329: + mov w1, w27 + mov x0, x21 + bl SamsungSetRRPara + mov x3, x24 + mov x2, x23 + mov w1, w25 + mov w0, w22 + bl FlashReadRawPage + cmn w0, #1 + beq .L1326 + ldrb w1, [x26, 2464] + cmn w19, #1 + csel w19, w19, w0, ne + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L1331 + mov x24, 0 + mov x23, 0 +.L1326: + add w27, w27, 1 + b .L1325 +.L1331: + mov w19, w0 + b .L1328 .size SamsungReadRetrial, .-SamsungReadRetrial .align 2 .global MicronReadRetrial @@ -8776,160 +8735,148 @@ SamsungReadRetrial: MicronReadRetrial: stp x29, x30, [sp, -160]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x21, x22, [sp,32] - uxtb w21, w0 - add x0, x20, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x23, x24, [sp,48] - mov w28, w1 - mov x26, x2 - ldrb w19, [x0,2464] - mov x22, x3 - ldrb w0, [x0,204] - cbnz w0, .L1300 + stp x19, x20, [sp, 16] + and w20, w0, 255 + adrp x0, .LANCHOR0 + stp x23, x24, [sp, 48] + str w1, [x29, 156] + add x1, x0, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov x23, x2 + stp x25, x26, [sp, 64] + mov x24, x3 + stp x27, x28, [sp, 80] + ldrb w19, [x1, 2464] + ldrb w1, [x1, 204] + cbnz w1, .L1339 add w19, w19, w19, lsl 1 - ubfx x19, x19, 2, 8 - b .L1301 -.L1300: - mov w0, 3 - sdiv w19, w19, w0 -.L1301: - adrp x27, .LC93 - mov w25, 0 - add x0, x27, :lo12:.LC93 - str x0, [x29,152] - add x20, x20, :lo12:.LANCHOR0 - add x23, x20, 8 - add x23, x23, w21, sxtw 4 -.L1312: - mov w0, w21 - mov w24, 0 - mov w27, -1 + asr w19, w19, 2 +.L1340: + add x0, x0, :lo12:.LANCHOR0 + mov w22, 0 + str x0, [x29, 144] + mov w27, 239 + add x0, x0, w20, sxtw 4 + mov w28, 137 + str x0, [x29, 136] +.L1350: + mov w0, w20 bl NandcWaitFlashReady - ldrb w4, [x23,8] - mov w9, 239 - ldr x6, [x23] - mov w10, 137 - lsl x8, x4, 8 -.L1302: - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1641] - cmp w24, w0 - bcs .L1305 - add x2, x6, x8 + ldr x0, [x29, 136] + adrp x7, .LANCHOR4 + add x7, x7, :lo12:.LANCHOR4 + mov w21, 0 + mov w25, -1 + ldrb w4, [x0, 8] + ldr x8, [x0] + add x26, x8, x4, lsl 8 +.L1341: + ldrb w0, [x7, 1649] + cmp w21, w0 + bcc .L1345 +.L1344: + add x4, x8, x4, lsl 8 mov x0, 1000 - str x4, [x29,104] - str x8, [x29,112] - str w9, [x2,2056] - str w10, [x2,2052] - str x6, [x29,120] - str x9, [x29,128] - str x10, [x29,136] - str x2, [x29,144] + str x4, [x29, 128] + str w27, [x4, 2056] + str w28, [x4, 2052] bl __const_udelay - ldr x2, [x29,144] - add w7, w24, 1 - mov w0, w21 - mov w1, w28 - mov x3, x22 - str x7, [x29,144] - str w7, [x2,2048] - str wzr, [x2,2048] - str wzr, [x2,2048] - str wzr, [x2,2048] - mov x2, x26 + ldr x4, [x29, 128] + cmp w25, w19 + str wzr, [x4, 2048] + str wzr, [x4, 2048] + str wzr, [x4, 2048] + str wzr, [x4, 2048] + bcc .L1346 + cmn w25, #1 + mov w0, 256 + csel w25, w25, w0, eq +.L1346: + cmp w25, 256 + ccmn w25, #1, 4, ne + bne .L1347 + ldr w2, [x29, 156] + adrp x0, .LC93 + mov w4, w25 + mov w3, w21 + mov w1, w21 + add x0, x0, :lo12:.LC93 + bl printk + cbnz w22, .L1348 + ldr x0, [x29, 144] + ldrb w0, [x0, 204] + cbz w0, .L1338 + cmn w25, #1 + bne .L1338 + mov w1, 3 + mov w0, w20 + mov w22, 1 + bl micron_auto_read_calibration_config + b .L1350 +.L1339: + mov w1, 3 + sdiv w19, w19, w1 + b .L1340 +.L1345: + str w27, [x26, 2056] + mov x0, 1000 + str w28, [x26, 2052] + stp x4, x7, [x29, 104] + str x8, [x29, 120] + bl __const_udelay + add w9, w21, 1 + str w9, [x26, 2048] + str wzr, [x26, 2048] + mov x3, x24 + ldr w1, [x29, 156] + mov x2, x23 + str wzr, [x26, 2048] + mov w0, w20 + str wzr, [x26, 2048] + str w9, [x29, 128] bl FlashReadRawPage cmn w0, #1 - ldr x7, [x29,144] - ldr x10, [x29,136] - ldr x9, [x29,128] - ldr x6, [x29,120] - ldr x8, [x29,112] - ldr x4, [x29,104] - beq .L1303 - cmn w27, #1 - csel w27, w27, w0, ne + ldr w9, [x29, 128] + ldp x4, x7, [x29, 104] + ldr x8, [x29, 120] + beq .L1342 + cmn w25, #1 + csel w25, w25, w0, ne cmp w0, w19 - bcc .L1314 - mov x22, 0 - mov x26, x22 -.L1303: - mov w24, w7 - b .L1302 -.L1314: - mov x22, 0 - mov w27, w0 - mov x26, x22 -.L1305: - 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 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 .L1307 - cmn w27, #1 - mov w0, 256 - csel w27, w27, w0, eq -.L1307: - cmn w27, #1 - cset w6, eq - cbnz w6, .L1316 - cmp w27, 256 - cset w1, eq - cbz w1, .L1308 -.L1316: - ldr x0, [x29,152] - mov w1, w24 - mov w2, w28 - mov w3, w24 - mov w4, w27 - str x6, [x29,144] - bl printk - cbnz w25, .L1310 - ldr x6, [x29,144] - cbz w6, .L1321 - ldrb w0, [x20,204] - cbz w0, .L1321 - mov w0, w21 - mov w1, 3 - mov w25, 1 - bl micron_auto_read_calibration_config - b .L1312 -.L1310: - mov w0, w21 + bcc .L1352 + mov x24, 0 + mov x23, 0 +.L1342: + mov w21, w9 + b .L1341 +.L1352: + mov w25, w0 + mov x24, 0 + mov x23, 0 + b .L1344 +.L1348: + mov w0, w20 mov w1, 0 bl micron_auto_read_calibration_config - cmn w27, #1 + cmn w25, #1 mov w0, 256 - csel w27, w27, w0, eq - b .L1321 -.L1308: - cbz w25, .L1321 - mov w0, w21 - mov w27, 256 - bl micron_auto_read_calibration_config -.L1321: - mov w0, w27 - 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] + csel w25, w25, w0, eq +.L1338: + mov w0, w25 + 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 ret +.L1347: + cbz w22, .L1338 + mov w1, 0 + mov w0, w20 + mov w25, 256 + bl micron_auto_read_calibration_config + b .L1338 .size MicronReadRetrial, .-MicronReadRetrial .align 2 .global HynixReadRetrial @@ -8937,321 +8884,306 @@ MicronReadRetrial: HynixReadRetrial: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - uxtb x22, w0 + stp x27, x28, [sp, 80] + and x27, x0, 255 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 + stp x25, x26, [sp, 64] + stp x23, x24, [sp, 48] + mov x24, x2 + stp x19, x20, [sp, 16] add x2, x0, 1272 - ldrb w25, [x0,1274] - mov w27, w1 - ldr x0, [x0,88] - add x1, x2, x22 - mov x23, x22 - mov x24, x3 - ldrb w0, [x0,19] - ldrb w19, [x1,12] + mov w26, w1 + add x1, x2, x27 + ldrb w23, [x0, 1274] + mov x22, x27 + ldr x0, [x0, 88] + mov x25, x3 + ldrb w19, [x1, 12] + ldrb w0, [x0, 19] sub w0, w0, #7 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 - bhi .L1330 - ldrb w19, [x1,20] -.L1330: - mov w0, w23 - mov w28, 0 - mov w20, -1 + bhi .L1364 + ldrb w19, [x1, 20] +.L1364: + mov w0, w22 bl NandcWaitFlashReady add x4, x21, :lo12:.LANCHOR0 + mov w28, 0 add x5, x4, 1276 -.L1331: - cmp w28, w25 - bcs .L1335 + mov w20, -1 +.L1365: + cmp w28, w23 + bcc .L1370 +.L1369: + add x0, x21, :lo12:.LANCHOR0 + ldr x1, [x0, 88] + add x0, x0, 1272 + add x0, x0, x27 + ldrb w1, [x1, 19] + sub w1, w1, #7 + and w1, w1, 255 + cmp w1, 1 + bhi .L1371 + strb w19, [x0, 20] +.L1372: + add x21, x21, :lo12:.LANCHOR0 + ldrb w0, [x21, 2464] + add w0, w0, w0, lsl 1 + cmp w20, w0, lsr 2 + bcc .L1363 + cmn w20, #1 + mov w0, 256 + csel w20, w20, w0, eq +.L1363: + mov w0, w20 + 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 +.L1370: add w19, w19, 1 - ldrb w1, [x4,1273] + ldrb w1, [x4, 1273] + and w19, w19, 255 mov x2, x5 - mov w0, w23 - uxtb w19, w19 - str x4, [x29,96] - cmp w19, w25 - str x5, [x29,104] - csel w19, w19, wzr, cc + cmp w23, w19 + stp x5, x4, [x29, 96] + csel w19, w19, wzr, hi + mov w0, w22 mov w3, w19 bl HynixSetRRPara - mov w0, w23 - mov w1, w27 - mov x2, x26 - mov x3, x24 + mov x3, x25 + mov x2, x24 + mov w1, w26 + mov w0, w22 bl FlashReadRawPage cmn w0, #1 - ldr x5, [x29,104] - ldr x4, [x29,96] - beq .L1333 - ldrb w1, [x4,2464] + ldp x5, x4, [x29, 96] + beq .L1367 + ldrb w1, [x4, 2464] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L1340 + bcc .L1374 + mov x25, 0 mov x24, 0 - mov x26, x24 -.L1333: +.L1367: add w28, w28, 1 - b .L1331 -.L1340: + b .L1365 +.L1374: mov w20, w0 -.L1335: - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0,88] - add x0, x0, 1272 - add x0, x0, x22 - ldrb w1, [x1,19] - sub w1, w1, #7 - uxtb w1, w1 - cmp w1, 1 - bhi .L1337 - strb w19, [x0,20] - b .L1338 -.L1337: - strb w19, [x0,12] -.L1338: - add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,2464] - add w0, w0, w0, lsl 1 - cmp w20, w0, lsr 2 - bcc .L1339 - cmn w20, #1 - mov w0, 256 - csel w20, w20, w0, eq -.L1339: - mov w0, w20 - 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 + b .L1369 +.L1371: + strb w19, [x0, 12] + b .L1372 .size HynixReadRetrial, .-HynixReadRetrial .align 2 .type samsung_read_retrial, %function samsung_read_retrial: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w22, w0 - adrp x21, .LANCHOR3 - mov w0, w22 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w23, w1 + stp x23, x24, [sp, 48] + and w23, w0, 255 + stp x21, x22, [sp, 32] mov x24, x2 - mov x27, x3 - adrp x25, .LANCHOR0 + stp x25, x26, [sp, 64] + mov w0, w23 + stp x19, x20, [sp, 16] + mov w26, w1 + mov x25, x3 + stp x27, x28, [sp, 80] bl NandcWaitFlashReady - add x0, x25, :lo12:.LANCHOR0 - sbfiz x1, x22, 4, 32 - add x2, x0, 8 - add x3, x2, x1 - ldrb w0, [x0,2356] - ldr x5, [x2,x1] - ldrb w19, [x3,8] - cbnz w0, .L1347 - lsl x19, x19, 8 + adrp x22, .LANCHOR0 + add x0, x22, :lo12:.LANCHOR0 + sbfiz x1, x23, 4, 32 + add x3, x0, x1 + adrp x21, .LANCHOR3 + ldrb w2, [x0, 2356] + ldr x1, [x0, x1] + ldrb w19, [x3, 8] + cbnz w2, .L1382 add x21, x21, :lo12:.LANCHOR3 + add x19, x1, x19, lsl 8 + add x21, x21, 16 + mov x27, x0 mov x4, 0 mov w20, -1 - add x28, x5, x19 mov w6, 239 - mov w7, 141 - add x21, x21, 16 -.L1351: - str w6, [x28,2056] + mov w5, 141 +.L1386: + str w6, [x19, 2056] add x0, x21, x4 - str w7, [x28,2052] - mov w1, w23 + str w5, [x19, 2052] + add w28, w4, 1 + stp w6, w5, [x29, 96] + mov x3, x25 + ldrsb w0, [x0, 1] mov x2, x24 - mov x3, x27 - ldrsb w0, [x0,1] - add w26, w4, 1 - str w0, [x28,2048] - mov w0, w22 - str wzr, [x28,2048] - str wzr, [x28,2048] - str wzr, [x28,2048] - str x5, [x29,96] - str x6, [x29,104] - str x7, [x29,112] - str x4, [x29,120] + str w0, [x19, 2048] + mov w1, w26 + str wzr, [x19, 2048] + mov w0, w23 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str x4, [x29, 104] bl FlashReadRawPage cmn w0, #1 - ldr x4, [x29,120] - ldr x7, [x29,112] - ldr x6, [x29,104] - ldr x5, [x29,96] - beq .L1348 - add x1, x25, :lo12:.LANCHOR0 + ldp w6, w5, [x29, 96] + ldr x4, [x29, 104] + beq .L1383 + ldrb w1, [x27, 2464] cmn w20, #1 csel w20, w20, w0, ne - ldrb w1, [x1,2464] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L1360 - mov x27, 0 - mov x24, x27 -.L1348: + bcc .L1394 + mov x25, 0 + mov x24, 0 +.L1383: add x4, x4, 1 cmp x4, 25 - bne .L1351 - mov w26, 26 - b .L1350 -.L1360: - mov w20, w0 -.L1350: - add x3, x5, x19 + bne .L1386 + mov w28, 26 +.L1385: mov w0, 239 - str w0, [x3,2056] + str w0, [x19, 2056] mov w0, 141 - b .L1376 -.L1347: - add x21, x21, :lo12:.LANCHOR3 - lsl x19, x19, 8 - add x21, x21, 48 - mov w20, -1 - mov w26, 1 - add x28, x5, x19 - mov w4, 239 - mov w6, 137 -.L1356: - str w4, [x28,2056] - mov w1, w23 - str w6, [x28,2052] - mov x2, x24 - mov x3, x27 - str x5, [x29,104] - ldrb w0, [x21,4] - str w0, [x28,2048] - str x4, [x29,112] - ldrb w0, [x21,5] - str w0, [x28,2048] - str x6, [x29,120] - ldrb w0, [x21,6] - str w0, [x28,2048] - ldrb w0, [x21,7] - str w0, [x28,2048] - mov w0, w22 - bl FlashReadRawPage - cmn w0, #1 - ldr x6, [x29,120] - ldr x4, [x29,112] - ldr x5, [x29,104] - beq .L1353 - add x1, x25, :lo12:.LANCHOR0 - cmn w20, #1 - csel w20, w20, w0, ne - ldrb w1, [x1,2464] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L1361 - mov x27, 0 - mov x24, x27 -.L1353: - add w26, w26, 1 - add x21, x21, 4 - cmp w26, 26 - bne .L1356 - b .L1355 -.L1361: - mov w20, w0 -.L1355: - add x3, x5, x19 - mov w0, 239 - str w0, [x3,2056] - mov w0, 137 -.L1376: - str w0, [x3,2052] - add x25, x25, :lo12:.LANCHOR0 - str wzr, [x3,2048] - str wzr, [x3,2048] - str wzr, [x3,2048] - str wzr, [x3,2048] - ldrb w0, [x25,2464] +.L1410: + str w0, [x19, 2052] + add x22, x22, :lo12:.LANCHOR0 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldrb w0, [x22, 2464] add w0, w0, w0, lsl 1 cmp w20, w0, lsr 2 - bcc .L1357 + bcc .L1392 cmn w20, #1 mov w0, 256 csel w20, w20, w0, eq -.L1357: - cmn w20, #1 - beq .L1362 +.L1392: cmp w20, 256 - bne .L1358 -.L1362: + ccmn w20, #1, 4, ne + bne .L1393 adrp x0, .LC94 - mov w1, w26 - add x0, x0, :lo12:.LC94 - mov w2, w23 - mov w3, w26 mov w4, w20 + mov w3, w28 + mov w2, w26 + mov w1, w28 + add x0, x0, :lo12:.LC94 bl printk -.L1358: - mov w0, w22 +.L1393: + mov w0, w23 bl NandcWaitFlashReady mov w0, w20 - 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 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 +.L1394: + mov w20, w0 + b .L1385 +.L1382: + add x21, x21, :lo12:.LANCHOR3 + add x19, x1, x19, lsl 8 + add x21, x21, 52 + mov x27, x0 + mov w20, -1 + mov w28, 1 + mov w5, 239 + mov w4, 137 +.L1391: + str w5, [x19, 2056] + mov x3, x25 + str w4, [x19, 2052] + mov x2, x24 + stp w5, w4, [x29, 100] + mov w1, w26 + ldrb w0, [x21] + str w0, [x19, 2048] + ldrb w0, [x21, 1] + str w0, [x19, 2048] + ldrb w0, [x21, 2] + str w0, [x19, 2048] + ldrb w0, [x21, 3] + str w0, [x19, 2048] + mov w0, w23 + bl FlashReadRawPage + cmn w0, #1 + ldp w5, w4, [x29, 100] + beq .L1388 + ldrb w1, [x27, 2464] + cmn w20, #1 + csel w20, w20, w0, ne + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L1395 + mov x25, 0 + mov x24, 0 +.L1388: + add w28, w28, 1 + add x21, x21, 4 + cmp w28, 26 + bne .L1391 +.L1390: + mov w0, 239 + str w0, [x19, 2056] + mov w0, 137 + b .L1410 +.L1395: + mov w20, w0 + b .L1390 .size samsung_read_retrial, .-samsung_read_retrial .align 2 .global FlashProgPage .type FlashProgPage, %function FlashProgPage: stp x29, x30, [sp, -64]! - mov x4, x3 add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 - adrp x0, .LANCHOR1+481 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] mov w20, w1 + stp x21, x22, [sp, 32] + adrp x1, .LANCHOR1+481 + str x23, [sp, 48] mov x22, x2 - ldrb w21, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L1378 + ldrb w21, [x1, #:lo12:.LANCHOR1+481] + ands w19, w0, 255 + mov x23, x3 + bne .L1412 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,73] - ldr w2, [x0,76] + ldrb w1, [x0, 73] + ldr w2, [x0, 76] mul w1, w1, w2 - cmp w20, w1 - bcs .L1378 - ldrb w0, [x0,72] - cmp w0, wzr + cmp w1, w20 + bls .L1412 + ldrb w0, [x0, 72] + cmp w0, 0 mov w0, 4 csel w21, w21, w0, eq -.L1378: +.L1412: mov w0, w19 - str x4, [x29,56] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - mov w0, w19 mov w1, w20 - bl FlashProgFirstCmd - ldr x4, [x29,56] - mov w2, w21 - mov x3, x22 mov w0, w19 + bl FlashProgFirstCmd + mov x4, x23 + mov x3, x22 + mov w2, w21 mov w1, 1 + mov w0, w19 bl NandcXferData mov w1, w20 mov w0, w19 @@ -9261,12 +9193,13 @@ FlashProgPage: mov w1, w20 mov w0, w19 bl FlashReadStatus - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - and w0, w20, 1 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + and w0, w2, 1 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size FlashProgPage, .-FlashProgPage @@ -9274,167 +9207,156 @@ FlashProgPage: .global FlashSavePhyInfo .type FlashSavePhyInfo, %function FlashSavePhyInfo: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR4 - stp x19, x20, [sp,16] - add x19, x23, :lo12:.LANCHOR4 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - adrp x21, .LANCHOR0 - ldr x0, [x19,1600] - add x20, x21, :lo12:.LANCHOR0 - str x0, [x19,1624] - ldrb w0, [x19,1642] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR4 + add x20, x20, :lo12:.LANCHOR4 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov w23, 20036 + movk w23, 0x4e41, lsl 16 + adrp x19, .LANCHOR0 + ldr x0, [x20, 1608] + add x19, x19, :lo12:.LANCHOR0 + str x0, [x20, 1632] + mov w22, 0 + ldrb w0, [x20, 1650] + mov w21, 0 bl FlashBchSel - ldr x0, [x19,1600] - mov w1, 0 + ldr x0, [x20, 1608] mov w2, 2048 + mov w1, 0 bl ftl_memset - ldr x1, [x19,1624] - mov w0, 20036 - movk w0, 0x4e41, lsl 16 + ldr x0, [x20, 1632] mov w2, 32 - str w0, [x1] - ldr x0, [x19,1624] - ldrb w1, [x20,2358] + str w23, [x0] + ldr x0, [x20, 1632] + ldrb w1, [x19, 2358] add x0, x0, 16 - strh w1, [x0,-4] - ldrb w1, [x20,73] - strh w1, [x0,-2] - ldrb w1, [x20,2380] - str w1, [x0,1060] - add x1, x20, 2132 + strh w1, [x0, -4] + ldrb w1, [x19, 73] + strh w1, [x0, -2] + ldrb w1, [x19, 2380] + str w1, [x0, 1060] + add x1, x19, 2132 bl ftl_memcpy - ldr x0, [x19,1624] - add x1, x20, 2360 + ldr x0, [x20, 1632] mov w2, 8 + add x1, x19, 2360 add x0, x0, 80 bl ftl_memcpy - ldr x0, [x19,1624] - add x1, x20, 1232 + ldr x0, [x20, 1632] mov w2, 32 + add x1, x19, 1232 add x0, x0, 96 bl ftl_memcpy - ldr x0, [x19,1624] + ldr x0, [x20, 1632] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 mov w2, 32 add x1, x1, 472 add x0, x0, 160 bl ftl_memcpy - ldr x0, [x19,1624] - add x1, x20, 96 + ldr x0, [x20, 1632] mov w2, 32 + add x1, x19, 96 add x0, x0, 192 bl ftl_memcpy - ldr x0, [x19,1624] - add x1, x20, 1272 + ldr x0, [x20, 1632] mov w2, 852 - mov x20, x23 + add x1, x19, 1272 add x0, x0, 224 bl ftl_memcpy - ldr x22, [x19,1624] + ldr x6, [x20, 1632] mov w1, 2036 - add x0, x22, 12 + add x0, x6, 12 bl js_hash - str w0, [x22,8] + str w0, [x6, 8] mov w0, 1592 - str w0, [x22,4] - mov w22, 0 - ldr x0, [x19,1648] - str x0, [x19,1624] + str w0, [x6, 4] + ldr x0, [x20, 1656] + str x0, [x20, 1632] mov w0, 0 - mov w19, w22 bl flash_enter_slc_mode -.L1386: - add x24, x21, :lo12:.LANCHOR0 - mov w0, 0 +.L1421: + ldr w1, [x19, 76] mov w2, 0 - ldr w1, [x24,76] - mul w1, w19, w1 + mov w0, 0 + mul w1, w21, w1 bl FlashEraseBlock - ldrb w25, [x24,204] - cbz w25, .L1381 - mov w23, 0 -.L1382: - add x0, x21, :lo12:.LANCHOR0 - add x2, x20, :lo12:.LANCHOR4 + ldrb w0, [x19, 204] + cbz w0, .L1416 + mov w24, 0 +.L1417: + ldr w1, [x19, 76] mov x3, 0 - ldr w1, [x0,76] + ldr x2, [x20, 1608] mov w0, 0 - ldr x2, [x2,1600] - madd w1, w19, w1, w23 - add w23, w23, 1 + madd w1, w21, w1, w24 + add w24, w24, 1 bl FlashProgPage - cmp w23, 10 - bne .L1382 - b .L1383 -.L1381: - ldr w1, [x24,76] - add x23, x20, :lo12:.LANCHOR4 + cmp w24, 10 + bne .L1417 +.L1418: + ldr w1, [x19, 76] mov x3, 0 - mov w0, w25 - mul w1, w19, w1 - ldr x2, [x23,1600] - bl FlashProgPage - ldr w1, [x24,76] - mov w0, w25 - ldr x2, [x23,1600] - mov x3, 0 - mul w1, w19, w1 - add w1, w1, 1 - bl FlashProgPage -.L1383: - add x26, x21, :lo12:.LANCHOR0 - add x23, x20, :lo12:.LANCHOR4 + ldr x2, [x20, 1656] mov w0, 0 - mov x3, 0 - add w25, w19, 1 - ldr w1, [x26,76] - ldr x2, [x23,1648] - mul w1, w19, w1 + mul w1, w21, w1 bl FlashReadRawPage cmn w0, #1 - beq .L1384 - ldr x24, [x23,1624] - mov w0, 20036 - movk w0, 0x4e41, lsl 16 - ldr w1, [x24] - cmp w1, w0 - bne .L1384 + add w7, w21, 1 + beq .L1419 + ldr x6, [x20, 1632] + ldr w0, [x6] + cmp w0, w23 + bne .L1419 mov w1, 2036 - add x0, x24, 12 + add x0, x6, 12 bl js_hash - ldr w1, [x24,8] + ldr w1, [x6, 8] cmp w1, w0 - bne .L1384 - ldr w0, [x26,76] + bne .L1419 + ldr w0, [x19, 76] cmp w22, 1 - str w25, [x23,1636] - mul w19, w19, w0 - str w19, [x23,1632] - beq .L1387 + str w7, [x20, 1644] + mul w21, w0, w21 + str w21, [x20, 1640] + beq .L1422 mov w22, 1 -.L1384: - cmp w25, 4 - mov w19, w25 - bne .L1386 - b .L1385 -.L1387: - mov w22, 2 -.L1385: +.L1419: + mov w21, w7 + cmp w7, 4 + bne .L1421 +.L1420: mov w0, 0 bl flash_exit_slc_mode - cmp w22, wzr + cmp w22, 0 csetm w0, eq - 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 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L1416: + ldr w1, [x19, 76] + mov x3, 0 + ldr x2, [x20, 1608] + mov w0, 0 + mul w1, w21, w1 + bl FlashProgPage + ldr w1, [x19, 76] + mov x3, 0 + ldr x2, [x20, 1608] + mov w0, 0 + mul w1, w21, w1 + add w1, w1, 1 + bl FlashProgPage + b .L1418 +.L1422: + mov w22, 2 + b .L1420 .size FlashSavePhyInfo, .-FlashSavePhyInfo .align 2 .global FlashReadIdbDataRaw @@ -9442,108 +9364,109 @@ FlashSavePhyInfo: FlashReadIdbDataRaw: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x25, x26, [sp,64] - mov x26, x0 + stp x25, x26, [sp, 64] + mov x25, x0 mov w0, 60 - strb w0, [x29,120] + stp x19, x20, [sp, 16] + strb w0, [x29, 120] mov w0, 40 - strb w0, [x29,121] + strb w0, [x29, 121] mov w0, 24 - stp x19, x20, [sp,16] - strb w0, [x29,122] - adrp x19, .LANCHOR0 + strb w0, [x29, 122] mov w0, 16 - strb w0, [x29,123] - add x0, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - ldrb w27, [x0,2464] - ldr w0, [x0,2376] - cbz w0, .L1394 + adrp x20, .LANCHOR0 + strb w0, [x29, 123] + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldrb w26, [x0, 2464] + ldr w0, [x0, 2376] + cbz w0, .L1430 mov w0, 0 bl flash_enter_slc_mode -.L1394: - mov x0, x26 - mov w1, 0 - mov w2, 2048 - adrp x24, .LC95 +.L1430: + adrp x19, .LANCHOR4 + mov w28, 35899 + add x24, x20, :lo12:.LANCHOR0 + add x27, x29, 120 + add x19, x19, :lo12:.LANCHOR4 mov w23, -1 - mov w20, 2 - bl ftl_memset - adrp x28, .LANCHOR4 - add x0, x24, :lo12:.LC95 - str x0, [x29,104] -.L1395: - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,73] - cmp w20, w0 - bcs .L1399 - mov x22, 0 -.L1397: - 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,76] - mov w0, 0 - ldr x2, [x21,1600] - mov x3, 0 - mul w1, w20, w1 - bl FlashReadRawPage - cmn w0, #1 - bne .L1396 - add x22, x22, 1 - cmp x22, 4 - bne .L1397 - b .L1398 -.L1396: - ldr x0, [x21,1600] - ldr w1, [x0] - mov w0, 35899 - movk w0, 0xfcdc, lsl 16 - cmp w1, w0 - bne .L1398 - ldr x0, [x29,104] - mov w1, w25 - bl printk - ldr x1, [x21,1600] - mov x0, x26 + mov w21, 2 + movk w28, 0xfcdc, lsl 16 mov w2, 2048 - bl ftl_memcpy - ldr x0, [x21,1600] - ldr w0, [x0,512] - strb w0, [x24,73] - ldr w0, [x21,1636] - cmp w0, w20 - bls .L1402 - mov w23, 0 - str w20, [x21,1636] - bl FlashSavePhyInfo -.L1398: - add w20, w20, 1 - b .L1395 -.L1402: - mov w23, 0 -.L1399: - mov w0, w27 - add x19, x19, :lo12:.LANCHOR0 + mov w1, 0 + mov x0, x25 + bl ftl_memset +.L1431: + ldrb w0, [x24, 73] + cmp w21, w0 + bcc .L1436 +.L1435: + add x20, x20, :lo12:.LANCHOR0 + mov w0, w26 bl FlashBchSel - ldr w0, [x19,2376] - cbz w0, .L1406 + ldr w0, [x20, 2376] + cbz w0, .L1429 mov w0, 0 bl flash_exit_slc_mode -.L1406: +.L1429: mov w0, w23 - 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 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 +.L1436: + mov x22, 0 +.L1433: + ldrb w4, [x22, x27] + str w4, [x29, 108] + mov w0, w4 + bl FlashBchSel + ldr w1, [x24, 76] + mov x3, 0 + ldr x2, [x19, 1608] + mov w0, 0 + mul w1, w21, w1 + bl FlashReadRawPage + cmn w0, #1 + ldr w4, [x29, 108] + bne .L1432 + add x22, x22, 1 + cmp x22, 4 + bne .L1433 +.L1434: + add w21, w21, 1 + b .L1431 +.L1439: + mov w23, 0 + b .L1435 +.L1432: + ldr x0, [x19, 1608] + ldr w0, [x0] + cmp w0, w28 + bne .L1434 + mov w1, w4 + adrp x0, .LC95 + add x0, x0, :lo12:.LC95 + bl printk + ldr x1, [x19, 1608] + mov w2, 2048 + mov x0, x25 + bl ftl_memcpy + ldr x0, [x19, 1608] + ldr w0, [x0, 512] + strb w0, [x24, 73] + ldr w0, [x19, 1644] + cmp w21, w0 + bcs .L1439 + mov w23, 0 + str w21, [x19, 1644] + bl FlashSavePhyInfo + b .L1434 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 2 .global FlashInit @@ -9551,1705 +9474,1640 @@ FlashReadIdbDataRaw: FlashInit: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR4 - add x22, x21, :lo12:.LANCHOR4 - stp x23, x24, [sp,48] - mov x23, x0 - mov w0, 32768 - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - stp x25, x26, [sp,64] - bl ftl_malloc - str x0, [x22,1600] - mov w0, 32768 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 - adrp x24, .LC96 - bl ftl_malloc - str x0, [x22,1648] - mov w0, 4096 - mov w27, 144 - mov w28, 239 - bl ftl_malloc - str x0, [x22,1656] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR4 + add x20, x23, :lo12:.LANCHOR4 + stp x21, x22, [sp, 32] + stp x27, x28, [sp, 80] + mov x21, x0 + stp x25, x26, [sp, 64] mov w0, 32768 bl ftl_malloc - str x0, [x22,1664] - mov w0, 4096 + str x0, [x20, 1608] + mov w0, 32768 bl ftl_malloc - str x0, [x22,1672] + str x0, [x20, 1656] + mov w0, 4096 + bl ftl_dma32_malloc + add x22, x19, :lo12:.LANCHOR0 + str x0, [x20, 1664] + mov w0, 32768 + bl ftl_malloc + str x0, [x20, 1672] + mov w0, 4096 + bl ftl_dma32_malloc + str x0, [x20, 1680] + mov w0, 50 + strb w0, [x20, 1648] + adrp x25, .LC96 + strb w0, [x22, 73] mov w0, 128 - str w0, [x20,76] + strb wzr, [x20, 1688] + add x25, x25, :lo12:.LC96 + str wzr, [x20, 1616] + mov w24, 0 + str wzr, [x20, 1644] + mov w28, 144 + str w0, [x22, 76] mov w0, 60 - mov w1, 50 - strb w0, [x22,1642] - mov x0, x23 - strb wzr, [x20,2380] - add x23, x20, 8 - strb w1, [x20,73] - strb w1, [x22,1640] - str wzr, [x22,1636] - str wzr, [x22,1608] - strb wzr, [x20,72] - add x20, x20, 2132 - strb wzr, [x22,1680] + strb w0, [x20, 1650] + add x20, x22, 2132 + mov x27, x20 + strb wzr, [x22, 2380] + strb wzr, [x22, 72] + mov x0, x21 bl NandcInit - add x0, x24, :lo12:.LC96 - mov w22, 0 - str x0, [x29,104] - mov x26, x20 -.L1418: - ldrb w2, [x23,8] - uxtb w25, w22 - mov w0, w25 - str x2, [x29,96] - ldr x24, [x23] +.L1454: + ldrb w1, [x22, 8] + and w26, w24, 255 + str w1, [x29, 108] + mov w0, w26 + ldr x21, [x22] bl FlashReset - mov w0, w25 + mov w0, w26 bl NandcFlashCs - ldr x2, [x29,96] + ldr w1, [x29, 108] mov x0, 1000 - ubfiz x2, x2, 8, 8 - add x24, x24, x2 - str w27, [x24,2056] - str wzr, [x24,2052] + ubfiz x1, x1, 8, 8 + add x21, x21, x1 + str w28, [x21, 2056] + str wzr, [x21, 2052] bl __const_udelay - ldr w0, [x24,2048] - uxtb w0, w0 + ldr w0, [x21, 2048] + and w0, w0, 255 strb w0, [x20] 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 .L1413 - str w28, [x24,2056] + ldr w1, [x21, 2048] + strb w1, [x20, 1] + ldr w1, [x21, 2048] + strb w1, [x20, 2] + ldr w1, [x21, 2048] + strb w1, [x20, 3] + ldr w1, [x21, 2048] + strb w1, [x20, 4] + ldr w1, [x21, 2048] + strb w1, [x20, 5] + bne .L1449 + mov w0, 239 + str w0, [x21, 2056] mov w0, 1 - str w0, [x24,2052] + str w0, [x21, 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] -.L1413: - mov w0, w25 + str w0, [x21, 2048] + str wzr, [x21, 2048] + str wzr, [x21, 2048] + str wzr, [x21, 2048] +.L1449: + mov w0, w26 bl NandcFlashDeCs ldrb w2, [x20] sub w0, w2, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L1414 - ldr x0, [x29,104] - add w1, w22, 1 - ldrb w3, [x20,1] - ldrb w4, [x20,2] - ldrb w5, [x20,3] - ldrb w6, [x20,4] - ldrb w7, [x20,5] + bhi .L1450 + ldrb w7, [x20, 5] + add w1, w24, 1 + ldrb w6, [x20, 4] + mov x0, x25 + ldrb w5, [x20, 3] + ldrb w4, [x20, 2] + ldrb w3, [x20, 1] bl printk -.L1414: - cbnz w22, .L1415 - ldrb w0, [x26] +.L1450: + cbnz w24, .L1451 + ldrb w0, [x27] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L1470 - ldrb w0, [x26,1] + bhi .L1502 + ldrb w0, [x27, 1] cmp w0, 255 - beq .L1470 -.L1415: + beq .L1502 +.L1451: ldrb w0, [x20] cmp w0, 181 - bne .L1417 + bne .L1453 mov w0, 44 strb w0, [x20] -.L1417: - add w22, w22, 1 - add x23, x23, 16 - cmp w22, 4 +.L1453: + add w24, w24, 1 + add x22, x22, 16 add x20, x20, 8 - bne .L1418 + cmp w24, 4 + bne .L1454 add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,2132] + ldrb w1, [x0, 2132] cmp w1, 173 - beq .L1419 - ldr w0, [x0,2384] + beq .L1455 + ldr w0, [x0, 2384] bl NandcSetDdrMode -.L1419: +.L1455: add x20, x19, :lo12:.LANCHOR0 - mov w1, 0 mov w2, 852 + mov w1, 0 add x0, x20, 1272 bl ftl_memset - strb wzr, [x20,80] - adrp x1, .LANCHOR1 - ldr w4, [x20,2392] + adrp x0, .LANCHOR1 + add x1, x0, :lo12:.LANCHOR1 + add x1, x1, 472 + ldr w4, [x20, 2392] + strb wzr, [x20, 80] mov w2, 12336 - add x0, x1, :lo12:.LANCHOR1 + str x1, [x20, 88] movk w2, 0x5638, lsl 16 - add x0, x0, 472 cmp w4, w2 - str x0, [x20,88] - bne .L1420 - ldrb w0, [x0,19] - cmp w0, 50 - beq .L1420 - mov w0, 1 - str w0, [x20,2376] -.L1420: - add x3, x19, :lo12:.LANCHOR0 - add x3, x3, 2132 - ldrb w0, [x3,1] - cmp w0, 218 - cset w6, eq - cmp w0, 241 - cset w5, eq - cmp w0, 161 - cset w2, eq - orr w2, w5, w2 - orr w2, w6, w2 - cbnz w2, .L1421 - and w2, w0, -3 - cmp w2, 209 - beq .L1421 - cmp w0, 220 - bne .L1422 - ldrb w2, [x3,3] - cmp w2, 149 - bne .L1422 -.L1421: - add x2, x19, :lo12:.LANCHOR0 - add x3, x21, :lo12:.LANCHOR4 - mov w7, 16 + bne .L1456 + ldrb w1, [x1, 19] + cmp w1, 50 + beq .L1456 + mov w1, 1 + str w1, [x20, 2376] +.L1456: + add x1, x19, :lo12:.LANCHOR0 + ldrb w2, [x1, 2133] + add w1, w2, 95 + and w3, w1, 255 + mov x1, 1 + cmp w3, 57 + bhi .L1457 + movk x1, 0x205, lsl 48 + lsr x1, x1, x3 + mvn x1, x1 +.L1457: + and w1, w1, 1 + cmp w2, 241 + eor w1, w1, 1 + cset w3, eq + orr w1, w3, w1 + cbnz w1, .L1458 + cmp w2, 220 + bne .L1459 + add x1, x19, :lo12:.LANCHOR0 + ldrb w1, [x1, 2135] + cmp w1, 149 + bne .L1459 +.L1458: + add x1, x19, :lo12:.LANCHOR0 + add x3, x23, :lo12:.LANCHOR4 + mov w6, 16 mov w5, 1 - add x8, x2, 2132 - strb w7, [x2,73] - strb w5, [x2,72] - strb w7, [x3,1642] - ldrb w7, [x2,2132] - add x2, x1, :lo12:.LANCHOR1 - cmp w7, 152 - strb w7, [x2,3425] - strb w0, [x2,3426] - bne .L1424 - ldrsb w2, [x8,4] - tbnz w2, #31, .L1425 - mov w2, 24 - strb w2, [x3,1642] -.L1424: + add x7, x1, 2132 + strb w6, [x1, 73] + strb w5, [x1, 72] + strb w6, [x3, 1650] + ldrb w6, [x1, 2132] + add x1, x0, :lo12:.LANCHOR1 + cmp w6, 152 + strb w6, [x1, 3425] + strb w2, [x1, 3426] + bne .L1461 + ldrsb w1, [x7, 4] + tbnz w1, #31, .L1462 + mov w1, 24 + strb w1, [x3, 1650] +.L1461: cmp w4, 2049 - beq .L1473 - mov w2, 12336 - movk w2, 0x5638, lsl 16 - cmp w4, w2 - bne .L1427 -.L1473: - add x2, x21, :lo12:.LANCHOR4 + mov w1, 12336 + movk w1, 0x5638, lsl 16 + ccmp w4, w1, 4, ne + bne .L1464 + add x1, x23, :lo12:.LANCHOR4 mov w3, 16 - strb w3, [x2,1642] -.L1427: - cbz w6, .L1429 - add x0, x1, :lo12:.LANCHOR1 + strb w3, [x1, 1650] +.L1464: + cmp w2, 218 + bne .L1465 + add x1, x0, :lo12:.LANCHOR1 mov w2, 2048 - strh w2, [x0,3438] + strh w2, [x1, 3438] mov w2, -38 - b .L1517 -.L1429: - cmp w0, 220 - bne .L1431 - add x0, x1, :lo12:.LANCHOR1 - mov w2, 4096 - strh w2, [x0,3438] - mov w2, -36 -.L1517: - strb w2, [x0,3426] - b .L1430 -.L1431: - cmp w0, 211 - bne .L1430 - add x0, x1, :lo12:.LANCHOR1 - mov w2, 4096 - strh w2, [x0,3438] - mov w2, 2 - strb w2, [x0,3437] -.L1430: - add x20, x1, :lo12:.LANCHOR1 +.L1548: + strb w2, [x1, 3426] +.L1466: + add x20, x0, :lo12:.LANCHOR1 add x0, x19, :lo12:.LANCHOR0 - add x1, x20, 3296 mov w2, 32 + add x1, x20, 3296 add x0, x0, 96 bl ftl_memcpy - add x0, x20, 472 - add x1, x20, 3424 mov w2, 32 + add x1, x20, 3424 + add x0, x20, 472 bl ftl_memcpy -.L1422: +.L1459: add x20, x19, :lo12:.LANCHOR0 - ldrb w0, [x20,72] - cbnz w0, .L1432 + ldrb w0, [x20, 72] + cbnz w0, .L1469 bl FlashLoadPhyInfoInRam - cbnz w0, .L1434 - ldr x0, [x20,88] - ldrb w1, [x0,17] + cbnz w0, .L1471 + ldr x0, [x20, 88] + ldrb w1, [x0, 17] and w0, w1, 7 - strb w0, [x20,2357] - tbnz x1, 0, .L1434 + strb w0, [x20, 2357] + tbnz x1, 0, .L1471 mov w1, 1 - strb w1, [x20,2380] + strb w1, [x20, 2380] bl FlashSetInterfaceMode - ldrb w0, [x20,2357] + ldrb w0, [x20, 2357] bl NandcSetMode -.L1434: +.L1471: add x20, x19, :lo12:.LANCHOR0 - ldr x0, [x20,88] - ldrb w0, [x0,26] - strb w0, [x20,204] + ldr x0, [x20, 88] + ldrb w0, [x0, 26] + strb w0, [x20, 204] bl FlashLoadPhyInfo - cbz w0, .L1432 - ldr w0, [x20,2384] - cbz w0, .L1437 + cbz w0, .L1469 + ldr w0, [x20, 2384] + cbz w0, .L1474 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 - b .L1514 -.L1437: - ldrb w0, [x20,2357] - bl FlashSetInterfaceMode - ldrb w0, [x20,2357] -.L1514: +.L1543: bl NandcSetMode bl FlashLoadPhyInfo - cbz w0, .L1432 - mov w0, 1 + cbz w0, .L1469 add x20, x19, :lo12:.LANCHOR0 + mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - ldr x1, [x20,88] + ldr x0, [x20, 88] + ldrh w1, [x0, 14] adrp x0, .LC97 add x0, x0, :lo12:.LC97 - ldrh w1, [x1,14] bl printk bl FlashLoadPhyInfoInRam cmn w0, #1 - beq .L1488 + beq .L1448 bl FlashDieInfoInit - ldr x0, [x20,88] - ldrb w0, [x0,19] + ldr x0, [x20, 88] + ldrb w0, [x0, 19] bl FlashGetReadRetryDefault - adrp x1, .LANCHOR2+3558 - ldr x0, [x20,88] - ldrh w1, [x1,#:lo12:.LANCHOR2+3558] - ldrb w2, [x0,9] + ldr x0, [x20, 88] + adrp x1, .LANCHOR2+3550 + ldrh w1, [x1, #:lo12:.LANCHOR2+3550] + ldrb w2, [x0, 9] add w1, w1, 4095 cmp w2, w1, lsr 12 - blt .L1439 - ldrh w1, [x0,14] + blt .L1476 + ldrh w1, [x0, 14] add w1, w1, 255 cmp w2, w1, lsr 8 - bge .L1440 -.L1439: - ldrh w1, [x0,14] + bge .L1477 +.L1476: + ldrh w1, [x0, 14] and w1, w1, -256 - strh w1, [x0,14] -.L1440: + strh w1, [x0, 14] +.L1477: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,2357] + ldrb w0, [x0, 2357] tst w0, 6 - beq .L1441 + beq .L1478 bl FlashSavePhyInfo mov w0, 0 bl flash_enter_slc_mode - add x1, x21, :lo12:.LANCHOR4 + add x0, x23, :lo12:.LANCHOR4 + ldr w1, [x0, 1640] mov w0, 0 - ldr w1, [x1,1632] bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode -.L1441: +.L1478: bl FlashSavePhyInfo -.L1432: - add x20, x19, :lo12:.LANCHOR0 - add x22, x21, :lo12:.LANCHOR4 - ldr x2, [x20,88] - str xzr, [x22,1616] - ldrb w0, [x2,26] - strb w0, [x20,204] - ldrh w0, [x2,16] - ldrh w3, [x2,10] +.L1469: + add x21, x19, :lo12:.LANCHOR0 + add x20, x23, :lo12:.LANCHOR4 + ldr x2, [x21, 88] + str xzr, [x20, 1624] + ldrb w0, [x2, 26] + strb w0, [x21, 204] + ldrh w0, [x2, 16] ubfx x1, x0, 7, 1 - strb w1, [x20,80] + strb w1, [x21, 80] ubfx x1, x0, 3, 1 - strb w1, [x22,1681] + strb w1, [x20, 1689] ubfx x1, x0, 4, 1 - strb w1, [x20,2368] - ldrb w1, [x2,12] ubfx x0, x0, 8, 3 - strb w0, [x20,2357] - ldrb w0, [x2,18] - sdiv w1, w3, w1 + strb w1, [x21, 2368] + strb w0, [x21, 2357] + ldrh w1, [x2, 10] + ldrb w0, [x2, 12] + sdiv w1, w1, w0 + ldrb w0, [x2, 18] bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr x0, [x20,88] - ldrh w1, [x0,16] - tbz x1, 6, .L1443 - ldrb w0, [x0,19] - ldrb w1, [x20,1274] - strb w1, [x22,1641] + ldr x0, [x21, 88] + ldrh w1, [x0, 16] + tbz x1, 6, .L1480 + ldrb w0, [x0, 19] + ldrb w1, [x21, 1274] + ldrb w2, [x21, 1273] + strb w1, [x20, 1649] sub w1, w0, #1 - ldrb w2, [x20,1273] - uxtb w1, w1 - strb w0, [x20,128] - strb w2, [x20,129] + strb w0, [x21, 128] + and w1, w1, 255 + strb w2, [x21, 129] cmp w1, 7 - bhi .L1444 + bhi .L1481 adrp x1, HynixReadRetrial - cmp w0, 8 add x1, x1, :lo12:HynixReadRetrial - str x1, [x22,1616] + str x1, [x20, 1624] sub w1, w0, #5 - cset w2, eq - uxtb w1, w1 + and w1, w1, 255 cmp w1, 1 - bls .L1474 - cbz w2, .L1445 -.L1474: + ccmp w0, 8, 4, hi + bne .L1482 + mov w1, 1 + str w1, [x21, 2456] +.L1482: add x1, x19, :lo12:.LANCHOR0 - mov w3, 1 - str w3, [x1,2456] -.L1445: cmp w0, 7 - add x1, x19, :lo12:.LANCHOR0 - beq .L1472 - cbnz w2, .L1472 - add x1, x1, 1292 - b .L1448 -.L1472: + beq .L1544 + cmp w0, 8 + bne .L1505 +.L1544: add x1, x1, 1300 -.L1448: +.L1483: mov x2, 0 - mov w3, w2 -.L1450: - ldrsb w4, [x1,x2] + mov w3, 0 +.L1485: + ldrsb w4, [x1, x2] add x2, x2, 1 - cmp w4, wzr - csinc w3, w3, w3, ne + cmp w4, 0 + cinc w3, w3, eq cmp x2, 32 - bne .L1450 + bne .L1485 cmp w3, 27 - bls .L1443 + bls .L1480 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L1443 -.L1444: - sub w1, w0, #17 - uxtb w1, w1 - cmp w1, 2 - bhi .L1452 - adrp x1, MicronReadRetrial - cmp w0, 19 - add x1, x1, :lo12:MicronReadRetrial - str x1, [x22,1616] - beq .L1453 - mov w0, 7 - b .L1515 -.L1453: - mov w0, 15 -.L1515: - strb w0, [x22,1641] - b .L1443 -.L1452: - sub w1, w0, #65 - uxtb w1, w1 - cmp w1, 1 - bls .L1475 - cmp w0, 33 - bne .L1454 -.L1475: - add x0, x21, :lo12:.LANCHOR4 - adrp x1, ToshibaReadRetrial - add x1, x1, :lo12:ToshibaReadRetrial - mov w2, 4 - str x1, [x0,1616] - add x1, x19, :lo12:.LANCHOR0 - strb w2, [x1,129] - mov w1, 7 - strb w1, [x0,1641] - b .L1443 -.L1454: - sub w1, w0, #67 - sub w2, w0, #34 - uxtb w1, w1 - uxtb w2, w2 - cmp w1, 1 - cset w1, ls - cmp w2, 1 - bls .L1476 - cbz w1, .L1456 -.L1476: - add x3, x21, :lo12:.LANCHOR4 - adrp x2, ToshibaReadRetrial - add x2, x2, :lo12:ToshibaReadRetrial - cmp w0, 35 - str x2, [x3,1616] - beq .L1458 - cmp w0, 68 - beq .L1458 - mov w0, 7 - strb w0, [x3,1641] - b .L1459 -.L1458: - add x0, x21, :lo12:.LANCHOR4 - mov w2, 17 - strb w2, [x0,1641] -.L1459: +.L1480: add x0, x19, :lo12:.LANCHOR0 - cbz w1, .L1460 - mov w1, 4 - b .L1516 -.L1460: - mov w1, 5 -.L1516: - strb w1, [x0,129] - b .L1443 -.L1456: - cmp w0, 49 - bne .L1461 - adrp x0, SamsungReadRetrial - add x0, x0, :lo12:SamsungReadRetrial - str x0, [x22,1616] - b .L1443 -.L1461: - cmp w0, 50 - bne .L1443 - adrp x0, samsung_read_retrial - str w1, [x20,2376] - add x0, x0, :lo12:samsung_read_retrial - str x0, [x22,1616] -.L1443: + mov w2, 12336 + movk w2, 0x5638, lsl 16 + ldr w1, [x0, 2392] + cmp w1, w2 + bne .L1495 + ldrb w2, [x0, 204] + cbz w2, .L1495 + ldr x0, [x0, 88] + strb wzr, [x0, 18] +.L1495: add x0, x19, :lo12:.LANCHOR0 - mov w1, 12336 - movk w1, 0x5638, lsl 16 - ldr w2, [x0,2392] - cmp w2, w1 - bne .L1462 - ldrb w1, [x0,204] - cbz w1, .L1462 - ldr x0, [x0,88] - strb wzr, [x0,18] -.L1462: + ldrb w2, [x0, 2132] + cmp w2, 44 + bne .L1496 + ldrb w2, [x0, 2380] + cbz w2, .L1496 + mov w2, 12336 + movk w2, 0x5638, lsl 16 + cmp w1, w2 + bne .L1497 + ldrb w0, [x0, 204] + cbnz w0, .L1496 +.L1497: add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,2132] - cmp w1, 44 - bne .L1463 - ldrb w1, [x0,2380] - cbz w1, .L1463 - mov w1, 12336 - movk w1, 0x5638, lsl 16 - cmp w2, w1 - bne .L1464 - ldrb w0, [x0,204] - cbnz w0, .L1463 -.L1464: - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0,2380] + strb wzr, [x0, 2380] mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode -.L1463: +.L1496: add x1, x19, :lo12:.LANCHOR0 - ldrb w0, [x1,2357] + ldrb w0, [x1, 2357] tst w0, 6 - beq .L1465 - ldrb w1, [x1,2380] - cbnz w1, .L1466 - tbnz x0, 0, .L1465 -.L1466: + beq .L1498 + ldrb w1, [x1, 2380] + cbnz w1, .L1499 + tbnz x0, 0, .L1498 +.L1499: + add x23, x23, :lo12:.LANCHOR4 mov w0, 0 - add x21, x21, :lo12:.LANCHOR4 bl flash_enter_slc_mode - ldr w1, [x21,1632] mov w0, 0 + ldr w1, [x23, 1640] bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode -.L1465: +.L1498: add x19, x19, :lo12:.LANCHOR0 mov w20, 16 - ldr x0, [x19,88] - ldrb w0, [x0,20] + ldr x0, [x19, 88] + ldrb w0, [x0, 20] bl FlashBchSel adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 3896 + add x0, x0, 3888 bl FlashReadIdbDataRaw - strb w20, [x19,73] mov w0, 18928 + strb w20, [x19, 73] movk w0, 0x2, lsl 16 bl FlashTimingCfg - ldr x1, [x19,88] - ldrb w2, [x1,12] - strh w2, [x19,184] - ldrh w4, [x1,14] - ldrb w2, [x1,7] - str w2, [x19,180] - ldrb w2, [x19,2133] - lsl w3, w2, w20 - orr w2, w3, w2, lsl 8 - ldrb w3, [x19,2132] + ldr x1, [x19, 88] + ldrb w3, [x19, 2133] + ldrb w4, [x19, 2132] + ldrb w2, [x1, 12] + strh w2, [x19, 184] + ldrb w2, [x1, 7] + str w2, [x19, 180] + ldrb w2, [x19, 2135] + orr w2, w4, w2, lsl 24 + lsl w4, w3, w20 + orr w3, w4, w3, lsl 8 + ldrh w4, [x1, 14] orr w2, w2, w3 - ldrb w3, [x19,2135] - orr w2, w2, w3, lsl 24 - str w2, [x19,176] - ldrb w2, [x19,2358] - strh w2, [x19,186] - ldrb w2, [x1,13] - strh w2, [x19,188] - strh w4, [x19,190] - ldrh w2, [x1,10] - strh w2, [x19,192] - ldrb w3, [x1,12] - ldrh w2, [x1,10] + str w2, [x19, 176] + ldrb w2, [x19, 2358] + strh w2, [x19, 186] + ldrb w2, [x1, 13] + strh w2, [x19, 188] + strh w4, [x19, 190] + ldrh w2, [x1, 10] + strh w2, [x19, 192] + ldrb w3, [x1, 12] + ldrh w2, [x1, 10] sdiv w2, w2, w3 - strh w2, [x19,194] - ldrb w3, [x1,9] - strh w3, [x19,196] - ldrh w5, [x1,10] - ldrb w2, [x1,9] + strh w2, [x19, 194] + ldrb w3, [x1, 9] + strh w3, [x19, 196] + ldrh w5, [x1, 10] + ldrb w2, [x1, 9] mul w2, w2, w5 mov w5, 512 - strh w5, [x19,200] - ldrb w5, [x19,73] - strh w5, [x19,202] - uxth w2, w2 - ldrb w5, [x19,72] - strh w2, [x19,198] + strh w5, [x19, 200] + ldrb w5, [x19, 73] + and w2, w2, 65535 + strh w5, [x19, 202] + strh w2, [x19, 198] + ldrb w5, [x19, 72] cmp w5, 1 - bne .L1468 - lsl w2, w2, 1 + bne .L1500 + ubfiz w2, w2, 1, 15 lsr w4, w4, 1 - lsl w3, w3, 1 - strh w2, [x19,198] - strb w20, [x19,73] + ubfiz w3, w3, 1, 15 + strh w2, [x19, 198] + strb w20, [x19, 73] mov w2, 8 - strh w4, [x19,190] - strh w3, [x19,196] - strh w2, [x19,202] -.L1468: - ldrb w0, [x1,20] + strh w4, [x19, 190] + strh w3, [x19, 196] + strh w2, [x19, 202] +.L1500: + ldrb w0, [x1, 20] bl FlashBchSel bl ftl_flash_suspend mov w0, 0 - b .L1488 -.L1470: - mov w0, -2 - b .L1488 -.L1425: - strb w5, [x3,1680] - b .L1424 -.L1488: - 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] +.L1448: + 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 +.L1465: + cmp w2, 220 + bne .L1467 + add x1, x0, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x1, 3438] + mov w2, -36 + b .L1548 +.L1467: + cmp w2, 211 + bne .L1466 + add x1, x0, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x1, 3438] + mov w2, 2 + strb w2, [x1, 3437] + b .L1466 +.L1474: + ldrb w0, [x20, 2357] + bl FlashSetInterfaceMode + ldrb w0, [x20, 2357] + b .L1543 +.L1505: + add x1, x1, 1292 + b .L1483 +.L1481: + sub w1, w0, #17 + and w1, w1, 255 + cmp w1, 2 + bhi .L1487 + adrp x1, MicronReadRetrial + add x1, x1, :lo12:MicronReadRetrial + str x1, [x20, 1624] + cmp w0, 19 + beq .L1488 +.L1549: + mov w0, 7 + b .L1546 +.L1488: + mov w0, 15 +.L1546: + strb w0, [x20, 1649] + b .L1480 +.L1487: + sub w1, w0, #65 + cmp w0, 33 + and w1, w1, 255 + ccmp w1, 1, 0, ne + bhi .L1489 + adrp x0, ToshibaReadRetrial + add x0, x0, :lo12:ToshibaReadRetrial + str x0, [x20, 1624] + mov w0, 4 + strb w0, [x21, 129] + b .L1549 +.L1489: + sub w2, w0, #34 + sub w1, w0, #67 + and w2, w2, 255 + and w1, w1, 255 + cmp w2, 1 + ccmp w1, 1, 0, hi + bhi .L1490 + adrp x2, ToshibaReadRetrial + add x2, x2, :lo12:ToshibaReadRetrial + str x2, [x20, 1624] + cmp w0, 35 + mov w2, 68 + ccmp w0, w2, 4, ne + beq .L1491 + mov w0, 7 +.L1545: + strb w0, [x20, 1649] + cmp w1, 1 + add x0, x19, :lo12:.LANCHOR0 + bhi .L1493 + mov w1, 4 +.L1547: + strb w1, [x0, 129] + b .L1480 +.L1491: + mov w0, 17 + b .L1545 +.L1493: + mov w1, 5 + b .L1547 +.L1490: + cmp w0, 49 + bne .L1494 + adrp x0, SamsungReadRetrial + add x0, x0, :lo12:SamsungReadRetrial + str x0, [x20, 1624] + b .L1480 +.L1494: + cmp w0, 50 + bne .L1480 + adrp x0, samsung_read_retrial + str wzr, [x21, 2376] + add x0, x0, :lo12:samsung_read_retrial + str x0, [x20, 1624] + b .L1480 +.L1502: + mov w0, -2 + b .L1448 +.L1462: + strb w5, [x3, 1688] + b .L1461 .size FlashInit, .-FlashInit .align 2 .global FlashPageProgMsbFFData .type FlashPageProgMsbFFData, %function FlashPageProgMsbFFData: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! 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 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov x23, x2 - ldr x3, [x0,88] - ldrb w4, [x0,204] - ldrb w3, [x3,19] - cbz w4, .L1519 - ldr w0, [x0,2376] - cbnz w0, .L1518 -.L1519: - sub w2, w3, #5 - uxtb w2, w2 - cmp w2, 2 - bls .L1520 - cmp w3, 50 - beq .L1520 - sub w2, w3, #19 - and w2, w2, -17 - uxtb w2, w2 - cbz w2, .L1520 - cmp w3, 68 - bne .L1518 -.L1520: - adrp x20, .LANCHOR2 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x23, x24, [sp, 48] + and w23, w0, 255 + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + and w19, w2, 65535 + ldrb w2, [x0, 204] + cbz w2, .L1551 + ldr w0, [x0, 2376] + cbnz w0, .L1550 +.L1551: + add x0, x20, :lo12:.LANCHOR0 + ldr x0, [x0, 88] + ldrb w0, [x0, 19] + sub w0, w0, #5 + and w3, w0, 255 + cmp w3, 63 + bhi .L1550 + mov x2, 16391 + movk x2, 0x4000, lsl 16 + movk x2, 0x2000, lsl 32 + movk x2, 0x8000, lsl 48 + lsr x0, x2, x3 + tbz x0, 0, .L1550 + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + adrp x22, .LANCHOR4 mov w24, w1 - add x20, x20, :lo12:.LANCHOR2 - mov w25, 65535 - add x20, x20, 1508 - adrp x26, .LANCHOR4 -.L1523: - add x0, x23, :lo12:.LANCHOR0 - ldr x0, [x0,88] - ldrh w0, [x0,10] + add x21, x21, 1500 + add x22, x22, :lo12:.LANCHOR4 +.L1553: + add x0, x20, :lo12:.LANCHOR0 + ldr x0, [x0, 88] + ldrh w0, [x0, 10] cmp w0, w19 - bls .L1518 - ldrh w0, [x20,w19,sxtw 1] - cmp w0, w25 - bne .L1518 - add x22, x26, :lo12:.LANCHOR4 - mov w1, 255 - mov w2, 32768 - ldr x0, [x22,1648] - bl ftl_memset - ldr x2, [x22,1648] - add w1, w19, w24 - mov w0, w21 - add w19, w19, 1 - mov x3, x2 - uxth w19, w19 - bl FlashProgPage - b .L1523 -.L1518: - 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 + bhi .L1554 +.L1550: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L1554: + ldrh w1, [x21, w19, sxtw 1] + mov w0, 65535 + cmp w1, w0 + bne .L1550 + ldr x0, [x22, 1656] + mov w2, 32768 + mov w1, 255 + bl ftl_memset + ldr x3, [x22, 1656] + add w1, w19, w24 + add w19, w19, 1 + mov w0, w23 + and w19, w19, 65535 + mov x2, x3 + bl FlashProgPage + b .L1553 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .align 2 .global FlashReadSlc2KPages .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - mov w24, w1 - stp x19, x20, [sp,16] - adrp x1, .LANCHOR1+481 + stp x19, x20, [sp, 16] mov x19, x0 - add x0, x23, :lo12:.LANCHOR0 - str x0, [x29,120] - adrp x0, .LC98 - str w2, [x29,116] - add x0, x0, :lo12:.LC98 - str x0, [x29,104] - stp x25, x26, [sp,64] - adrp x0, .LC100 - ldrb w25, [x1,#:lo12:.LANCHOR1+481] - stp x21, x22, [sp,32] - add x0, x0, :lo12:.LC100 - mov w22, 0 - stp x27, x28, [sp,80] - str x0, [x29,96] -.L1535: - cmp w22, w24 - beq .L1599 - ldr w1, [x29,116] - sub w4, w24, w22 + mov w0, 56 + stp x21, x22, [sp, 32] + str w2, [x29, 104] + adrp x2, .LANCHOR1+481 + stp x23, x24, [sp, 48] + nop // between mem op and mult-accumulate + umaddl x0, w1, w0, x19 + stp x25, x26, [sp, 64] + and w22, w1, 255 + adrp x25, .LANCHOR0 + ldrb w2, [x2, #:lo12:.LANCHOR1+481] + add x23, x25, :lo12:.LANCHOR0 + stp x27, x28, [sp, 80] + str x0, [x29, 96] + str w2, [x29, 108] +.L1560: + ldr x0, [x29, 96] + cmp x19, x0 + bne .L1580 + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 +.L1580: + ldr w1, [x29, 104] + add x2, x29, 124 + mov w4, w22 + add x3, x29, 120 mov x0, x19 - add x2, x29, 140 - add x3, x29, 136 - adrp x21, .LANCHOR0 bl LogAddr2PhyAddr - ldr x1, [x29,120] - ldr w0, [x29,136] - ldrb w1, [x1,2358] - cmp w0, w1 - bcc .L1536 + add x1, x25, :lo12:.LANCHOR0 + ldr w0, [x29, 120] + ldrb w2, [x1, 2358] + cmp w2, w0 + bhi .L1561 mov w0, -1 str w0, [x19] - b .L1537 -.L1536: - ldr x1, [x29,120] +.L1562: + sub w22, w22, #1 + add x19, x19, 56 + and w22, w22, 255 + b .L1560 +.L1561: add x0, x1, w0, uxtw - ldrb w20, [x0,2360] - mov w23, 0 - adrp x27, .LANCHOR4 + adrp x21, .LANCHOR4 + add x27, x21, :lo12:.LANCHOR4 + mov w24, 0 mov w28, 256 + ldrb w20, [x0, 2360] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 bl NandcFlashCs -.L1538: - ldr w1, [x29,140] +.L1563: + ldr w1, [x29, 124] mov w0, w20 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady - ldr x3, [x19,8] - mov w0, w20 - ldr x4, [x19,16] + ldrb w2, [x29, 108] mov w1, 0 - mov w2, w25 + ldp x3, x4, [x19, 8] + mov w0, w20 bl NandcXferData mov w26, w0 - add x0, x27, :lo12:.LANCHOR4 - ldrb w0, [x0,1680] - cbz w0, .L1539 + ldrb w0, [x27, 1688] + cbz w0, .L1564 mov w0, w20 bl flash_read_ecc cmp w0, 5 csel w26, w26, w28, ls -.L1539: - cmn w26, #1 - bne .L1540 - cmp w23, 9 - bhi .L1540 - add w23, w23, 1 - b .L1538 -.L1540: - cmp w23, wzr +.L1564: + cmp w24, 9 + ccmn w26, #1, 0, ls + bne .L1565 + add w24, w24, 1 + b .L1563 +.L1565: + cmp w24, 0 mov w27, 256 + add x21, x21, :lo12:.LANCHOR4 csel w26, w26, w27, eq - mov w23, 0 -.L1542: - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x29,140] - ldr w2, [x0,76] + mov w24, 0 +.L1567: + ldr w0, [x23, 76] + ldr w1, [x29, 124] + add w1, w1, w0 mov w0, w20 - add w1, w2, w1 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady - ldr x0, [x19,8] + ldr x0, [x19, 8] mov w1, 0 - mov w2, w25 - cmp x0, xzr + ldrb w2, [x29, 108] + cmp x0, 0 add x3, x0, 2048 - ldr x0, [x19,16] + ldr x0, [x19, 16] csel x3, x3, xzr, ne + cmp x0, 0 add x4, x0, 8 - cmp x0, xzr csel x4, x4, xzr, ne mov w0, w20 bl NandcXferData mov w28, w0 - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - ldrb w0, [x0,1680] - cbz w0, .L1545 + ldrb w0, [x21, 1688] + cbz w0, .L1570 mov w0, w20 bl flash_read_ecc cmp w0, 5 csel w28, w28, w27, ls -.L1545: - cmn w28, #1 - bne .L1546 - cmp w23, 9 - bhi .L1546 - add w23, w23, 1 - b .L1542 -.L1546: - cmp w23, wzr +.L1570: + cmp w24, 9 + ccmn w28, #1, 0, ls + bne .L1571 + add w24, w24, 1 + b .L1567 +.L1571: + cmp w24, 0 + mov w2, 256 mov w0, w20 - mov w27, 256 - csel w28, w28, w27, eq + csel w28, w28, w2, eq bl NandcFlashDeCs - add x0, x21, :lo12:.LANCHOR0 - cmp w28, w26 - csel w28, w28, w26, cs - ldrb w0, [x0,2464] + ldrb w0, [x23, 2464] + cmp w26, w28 + csel w5, w26, w28, cs add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bls .L1548 - cmn w28, #1 - csel w28, w28, w27, eq -.L1548: - cmp w28, 256 - beq .L1559 - cmn w28, #1 - bne .L1549 -.L1559: - str w28, [x19] - b .L1551 -.L1549: - str wzr, [x19] -.L1551: - ldr x0, [x19,16] - cbz x0, .L1552 - ldr w1, [x0,12] + cmp w5, w0, lsr 2 + bls .L1573 + cmn w5, #1 + csel w5, w5, w2, eq +.L1573: + cmp w5, 256 + ldr x0, [x19, 16] + ccmn w5, #1, 4, ne + csel w5, w5, wzr, eq + str w5, [x19] + cbz x0, .L1576 + ldr w1, [x0, 12] cmn w1, #1 - bne .L1552 - ldr w1, [x0,8] + bne .L1576 + ldr w1, [x0, 8] cmn w1, #1 - bne .L1552 + bne .L1576 ldr w0, [x0] cmn w0, #1 - beq .L1552 + beq .L1576 str w1, [x19] -.L1552: +.L1576: ldr w3, [x19] cmn w3, #1 - bne .L1537 - add x21, x21, :lo12:.LANCHOR0 - ldr w1, [x19,4] - ldr x0, [x29,104] - ldrb w2, [x21,2464] + bne .L1562 + ldr w1, [x19, 4] + adrp x0, .LC98 + ldrb w2, [x23, 2464] + add x0, x0, :lo12:.LC98 bl printk - ldr x1, [x19,8] - cbz x1, .L1554 + ldr x1, [x19, 8] + cbz x1, .L1578 adrp x0, .LC99 + mov w3, 8 mov w2, 4 add x0, x0, :lo12:.LC99 - mov w3, 8 bl rknand_print_hex -.L1554: - ldr x1, [x19,16] - cbz x1, .L1537 - mov w2, 4 - ldr x0, [x29,96] - mov w3, w2 +.L1578: + ldr x1, [x19, 16] + cbz x1, .L1562 + mov w3, 4 + adrp x0, .LC100 + mov w2, w3 + add x0, x0, :lo12:.LC100 bl rknand_print_hex -.L1537: - add w22, w22, 1 - add x19, x19, 56 - b .L1535 -.L1599: - 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], 144 - ret + b .L1562 .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 .global FlashReadPages .type FlashReadPages, %function FlashReadPages: - stp x29, x30, [sp, -176]! - adrp x3, .LANCHOR1+481 + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x21, x22, [sp,32] - ldrb w3, [x3,#:lo12:.LANCHOR1+481] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR0 - str w3, [x29,148] add x3, x22, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - str w1, [x29,144] - mov x26, x0 - ldrb w4, [x3,80] - ldrb w23, [x3,72] - str w2, [x29,140] - str w4, [x29,136] - cbz w23, .L1640 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + stp w2, w1, [x29, 104] + ldrb w4, [x3, 72] + cbnz w4, .L1609 + mov x25, x0 + adrp x0, .LANCHOR1+481 + mov w24, 0 + mov w23, 0 + ldrb w0, [x0, #:lo12:.LANCHOR1+481] + str w0, [x29, 120] + ldrb w0, [x3, 80] + str w0, [x29, 100] + adrp x0, .LANCHOR4 + add x27, x0, :lo12:.LANCHOR4 +.L1610: + ldr w0, [x29, 108] + cmp w23, w0 + bcc .L1644 + mov w0, 0 + b .L1608 +.L1609: bl FlashReadSlc2KPages - b .L1689 -.L1640: - adrp x0, .LC98 - mov w24, w23 - add x0, x0, :lo12:.LC98 - str x0, [x29,128] - adrp x0, .LC100 - add x0, x0, :lo12:.LC100 - str x0, [x29,120] - adrp x0, .LC101 - add x0, x0, :lo12:.LC101 - str x0, [x29,112] -.L1601: - ldr w0, [x29,144] - cmp w24, w0 - bcs .L1691 - mov w27, 56 - ldr w0, [x29,144] - ldr w1, [x29,140] - add x2, x29, 172 - umull x27, w24, w27 - sub w4, w0, w24 - add x3, x29, 168 - add x21, x26, x27 +.L1608: + 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], 144 + ret +.L1644: + mov w26, 56 + ldr w1, [x29, 104] + add x2, x29, 140 + add x3, x29, 136 + umull x0, w23, w26 + add x26, x22, :lo12:.LANCHOR0 + str x0, [x29, 112] + add x21, x25, x0 + ldr w0, [x29, 108] + sub w4, w0, w23 mov x0, x21 - ldr w28, [x21,4] + ldr w28, [x21, 4] bl LogAddr2PhyAddr - add x1, x22, :lo12:.LANCHOR0 + ldrb w2, [x26, 2358] mov w20, w0 - ldr w0, [x29,168] - ldrb w2, [x1,2358] - cmp w0, w2 - bcc .L1603 + ldr w0, [x29, 136] + cmp w2, w0 + bhi .L1612 + ldr x1, [x29, 112] mov w0, -1 - str w0, [x26,x27] - b .L1604 -.L1603: - add x0, x1, w0, uxtw - adrp x25, .LANCHOR4 - ldrb w19, [x0,2360] - add x0, x25, :lo12:.LANCHOR4 - str x1, [x29,152] - ldrb w0, [x0,1681] - cmp w0, wzr + str w0, [x25, x1] +.L1613: + add w23, w23, 1 + b .L1610 +.L1612: + add x0, x26, w0, uxtw + ldrb w19, [x0, 2360] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldrb w0, [x0, 1689] + cmp w0, 0 mov w0, w19 csel w20, w20, wzr, ne bl NandcWaitFlashReady - ldr x1, [x29,152] - ldr x0, [x1,88] - ldrb w0, [x0,19] + ldr x0, [x26, 88] + ldrb w0, [x0, 19] sub w2, w0, #1 - uxtb w2, w2 + and w2, w2, 255 cmp w2, 7 - bhi .L1606 + bhi .L1615 + add x1, x26, 1272 + sxtw x2, w19 + add x1, x1, x2 sub w0, w0, #7 - add x1, x1, 1272 - sxtw x4, w19 - add x1, x1, x4 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 - ldrb w3, [x1,12] - bhi .L1607 - ldrb w3, [x1,20] -.L1607: - add x2, x22, :lo12:.LANCHOR0 - add x4, x2, x4 - ldrb w0, [x4,2128] - cmp w0, w3 - beq .L1606 - ldrb w1, [x2,1273] + ldrb w3, [x1, 12] + bhi .L1616 + ldrb w3, [x1, 20] +.L1616: + add x0, x22, :lo12:.LANCHOR0 + add x2, x0, x2 + ldrb w1, [x2, 2128] + cmp w1, w3 + beq .L1615 + ldrb w1, [x0, 1273] + add x2, x0, 1276 mov w0, w19 - add x2, x2, 1276 bl HynixSetRRPara -.L1606: +.L1615: mov w0, w19 bl NandcFlashCs - ldr w0, [x29,140] + ldr w0, [x29, 104] cmp w0, 1 cset w0, eq orr w0, w0, w28, lsr 31 - str w0, [x29,152] - cbz w0, .L1608 + str w0, [x29, 124] + cbz w0, .L1617 add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L1608 + ldrb w0, [x0, 204] + cbz w0, .L1617 mov w0, w19 bl flash_enter_slc_mode - b .L1609 -.L1608: - mov w0, w19 - bl flash_exit_slc_mode -.L1609: - cmp w19, 255 - ldr w1, [x29,172] - bne .L1647 +.L1618: + add x28, x22, :lo12:.LANCHOR0 +.L1624: + ldr w1, [x29, 140] cmn w1, #1 - cset w0, ne - cbz w0, .L1641 -.L1647: - cbz w20, .L1613 - add x0, x22, :lo12:.LANCHOR0 - ldr w2, [x0,76] + bne .L1619 + cmp w19, 255 + beq .L1646 +.L1619: + cbz w20, .L1621 + ldr w2, [x28, 76] mov w0, w19 add w2, w1, w2 bl FlashReadDpCmd - b .L1614 -.L1613: - mov w0, w19 - bl FlashReadCmd - b .L1614 -.L1641: - mov w20, w0 -.L1611: - ldrb w2, [x29,148] - mov w0, w19 - ldr x3, [x21,8] - mov w1, 0 - ldr x4, [x21,16] - bl NandcXferData - cmn w0, #1 - mov w28, w0 - bne .L1615 - add x0, x22, :lo12:.LANCHOR0 - ldrb w1, [x0,80] - cbz w1, .L1615 - strb wzr, [x0,80] - mov w20, 0 - b .L1609 -.L1615: - cbz w20, .L1616 - add x0, x22, :lo12:.LANCHOR0 - ldr w1, [x29,172] - ldr w2, [x0,76] - mov w0, w19 - add w1, w2, w1 - bl FlashReadDpDataOutCmd - add w0, w24, 1 - mov w4, 56 - ldrb w2, [x29,148] - mov w1, 0 - umull x4, w0, w4 - mov w0, w19 - 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 -.L1616: - mov w0, w19 - bl NandcFlashDeCs - add x6, x22, :lo12:.LANCHOR0 - ldrb w0, [x29,136] - cmn w28, #1 - strb w0, [x6,80] - bne .L1623 - ldrb w0, [x6,2380] - cbnz w0, .L1618 .L1622: - add x0, x25, :lo12:.LANCHOR4 - ldr x20, [x0,1616] - cbnz x20, .L1619 - b .L1692 -.L1618: - ldr x0, [x6,136] - 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] - bl FlashDdrTunningRead - cmn w0, #1 - mov w28, w0 - beq .L1621 - ldr x6, [x29,104] - ldrb w0, [x6,2464] - cmp w28, w0, lsr 1 - bls .L1643 -.L1621: - lsr w0, w20, 8 - bl NandcSetDdrPara - cmn w28, #1 - beq .L1622 - b .L1643 -.L1619: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - ldr x3, [x21,16] - blr x20 - cmn w0, #1 - mov w28, w0 - mov w20, 0 - bne .L1624 - add x2, x22, :lo12:.LANCHOR0 - ldr x0, [x2,88] - ldrb w0, [x0,19] - sub w0, w0, #1 - uxtb w0, w0 - cmp w0, 7 - bhi .L1625 - ldrb w1, [x2,1273] - mov w0, w19 - add x2, x2, 1276 - mov w3, w20 - bl HynixSetRRPara -.L1625: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - mov w20, 0 - ldr x3, [x21,16] - bl FlashReadRawPage - mov w28, w0 - add x4, x22, :lo12:.LANCHOR0 - ldr x0, [x29,112] - ldr w1, [x21,4] - mov w3, w28 - str x4, [x29,104] - ldrb w2, [x4,2464] - bl printk - cmn w28, #1 - ldr x4, [x29,104] - bne .L1624 - ldrb w0, [x4,204] - cbz w0, .L1624 - ldr w0, [x29,152] - cbz w0, .L1626 - mov w0, w19 - bl flash_enter_slc_mode - b .L1627 -.L1626: - mov w0, w19 - bl flash_exit_slc_mode -.L1627: - add x0, x25, :lo12:.LANCHOR4 - ldr w1, [x29,172] - ldr x2, [x21,8] - mov w20, 0 - ldr x3, [x21,16] - ldr x4, [x0,1616] - mov w0, w19 - blr x4 - mov w28, w0 - b .L1624 -.L1692: - ldr w1, [x29,172] - mov w0, w19 - ldr x2, [x21,8] - ldr x3, [x21,16] - bl FlashReadRawPage - mov w28, w0 - b .L1624 -.L1643: - mov w20, 0 -.L1623: - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,2464] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bls .L1624 - add x0, x25, :lo12:.LANCHOR4 - ldr x0, [x0,1616] - cmp x0, xzr - mov w0, 256 - csel w28, w28, w0, ne -.L1624: - cmp w28, 256 - beq .L1648 - cmn w28, #1 - bne .L1628 -.L1648: - str w28, [x26,x27] - b .L1630 -.L1628: - str wzr, [x26,x27] -.L1630: - ldr w3, [x26,x27] - cmn w3, #1 - bne .L1632 - add x2, x22, :lo12:.LANCHOR0 - ldr w1, [x21,4] - ldr x0, [x29,128] - ldrb w2, [x2,2464] - bl printk - ldr x1, [x21,16] - cbz x1, .L1632 - mov w2, 4 - ldr x0, [x29,120] - mov w3, w2 - bl rknand_print_hex -.L1632: - cbz w20, .L1634 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,2464] - add w0, w0, w0, lsl 1 - cmp w23, w0, lsr 2 - bls .L1635 - add x25, x25, :lo12:.LANCHOR4 - ldr x0, [x25,1616] - cmp x0, xzr - mov w0, 256 - csel w23, w23, w0, ne -.L1635: - add w0, w24, 1 - mov w1, 56 - cmp w23, 256 - umull x0, w0, w1 - beq .L1649 - cmn w23, #1 - bne .L1636 -.L1649: - str w23, [x26,x0] - b .L1634 -.L1636: - str wzr, [x26,x0] -.L1634: - ldr w0, [x29,152] - add w24, w24, w20 - cbz w0, .L1604 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L1604 - mov w0, w19 - bl flash_exit_slc_mode -.L1604: - add w24, w24, 1 - b .L1601 -.L1691: - mov w0, 0 - b .L1689 -.L1614: mov w0, w19 bl NandcWaitFlashReady - cbz w20, .L1611 - ldr w1, [x29,172] + cbz w20, .L1620 + ldr w1, [x29, 140] mov w0, w19 bl FlashReadDpDataOutCmd - b .L1611 -.L1689: - 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 - ret +.L1620: + ldrb w2, [x29, 120] + mov w1, 0 + ldp x3, x4, [x21, 8] + mov w0, w19 + bl NandcXferData + mov w26, w0 + ldrb w0, [x28, 80] + cbz w0, .L1623 + cmn w26, #1 + bne .L1623 + strb wzr, [x28, 80] + mov w20, 0 + b .L1624 +.L1617: + mov w0, w19 + bl flash_exit_slc_mode + b .L1618 +.L1621: + mov w0, w19 + bl FlashReadCmd + b .L1622 +.L1646: + mov w20, 0 + b .L1620 +.L1623: + cbz w20, .L1625 + add x0, x22, :lo12:.LANCHOR0 + ldr w1, [x29, 140] + ldr w0, [x0, 76] + add w1, w1, w0 + mov w0, w19 + bl FlashReadDpDataOutCmd + add w0, w23, 1 + mov w1, 56 + ldrb w2, [x29, 120] + nop // between mem op and mult-accumulate + umaddl x0, w0, w1, x25 + mov w1, 0 + ldp x3, x4, [x0, 8] + mov w0, w19 + bl NandcXferData + cmn w0, #1 + mov w24, w0 + csel w20, w20, wzr, ne +.L1625: + add x28, x22, :lo12:.LANCHOR0 + mov w0, w19 + bl NandcFlashDeCs + ldrb w0, [x29, 100] + cmn w26, #1 + strb w0, [x28, 80] + bne .L1626 + ldrb w0, [x28, 2380] + cbnz w0, .L1627 +.L1631: + ldr x4, [x27, 1624] + cbnz x4, .L1628 + ldr w1, [x29, 140] + mov w0, w19 + ldp x2, x3, [x21, 8] + bl FlashReadRawPage + b .L1683 +.L1627: + ldr x0, [x28, 136] + mov w4, 1 + ldr w1, [x29, 140] + ldp x2, x3, [x21, 8] + ldr w20, [x0, 304] + mov w0, w19 + bl FlashDdrTunningRead + mov w26, w0 + cmn w0, #1 + beq .L1630 + ldrb w0, [x28, 2464] + cmp w26, w0, lsr 1 + bls .L1647 +.L1630: + lsr w0, w20, 8 + bl NandcSetDdrPara + cmn w26, #1 + beq .L1631 +.L1647: + mov w20, 0 +.L1626: + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 2464] + add w0, w0, w0, lsl 1 + cmp w26, w0, lsr 2 + bls .L1632 + ldr x0, [x27, 1624] + cmp x0, 0 + mov w0, 256 + csel w26, w26, w0, ne +.L1632: + ldr x0, [x29, 112] + cmp w26, 256 + ccmn w26, #1, 4, ne + csel w3, w26, wzr, eq + cmn w3, #1 + str w3, [x25, x0] + bne .L1639 + add x0, x22, :lo12:.LANCHOR0 + ldr w1, [x21, 4] + ldrb w2, [x0, 2464] + adrp x0, .LC98 + add x0, x0, :lo12:.LC98 + bl printk + ldr x1, [x21, 16] + cbz x1, .L1639 + mov w3, 4 + adrp x0, .LC100 + mov w2, w3 + add x0, x0, :lo12:.LC100 + bl rknand_print_hex +.L1639: + cbz w20, .L1641 + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 2464] + add w0, w0, w0, lsl 1 + cmp w24, w0, lsr 2 + bls .L1642 + ldr x0, [x27, 1624] + cmp x0, 0 + mov w0, 256 + csel w24, w24, w0, ne +.L1642: + add w0, w23, 1 + mov w1, 56 + cmp w24, 256 + ccmn w24, #1, 4, ne + umull x0, w0, w1 + csel w1, w24, wzr, eq + str w1, [x25, x0] +.L1641: + ldr w0, [x29, 124] + add w23, w23, w20 + cbz w0, .L1613 + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 204] + cbz w0, .L1613 + mov w0, w19 + bl flash_exit_slc_mode + b .L1613 +.L1628: + ldr w1, [x29, 140] + mov w0, w19 + ldp x2, x3, [x21, 8] + mov w20, 0 + blr x4 + mov w26, w0 + cmn w0, #1 + bne .L1632 + add x1, x22, :lo12:.LANCHOR0 + ldr x0, [x1, 88] + ldrb w0, [x0, 19] + sub w0, w0, #1 + and w0, w0, 255 + cmp w0, 7 + bhi .L1633 + add x2, x1, 1276 + ldrb w1, [x1, 1273] + mov w3, 0 + mov w0, w19 + bl HynixSetRRPara +.L1633: + ldp x2, x3, [x21, 8] + add x20, x22, :lo12:.LANCHOR0 + ldr w1, [x29, 140] + mov w0, w19 + bl FlashReadRawPage + mov w26, w0 + ldrb w2, [x20, 2464] + mov w3, w0 + ldr w1, [x21, 4] + adrp x0, .LC101 + add x0, x0, :lo12:.LC101 + bl printk + cmn w26, #1 + bne .L1650 + ldrb w0, [x20, 204] + cbz w0, .L1650 + ldr w0, [x29, 124] + cbz w0, .L1634 + mov w0, w19 + bl flash_enter_slc_mode +.L1635: + ldr w1, [x29, 140] + mov w0, w19 + ldp x2, x3, [x21, 8] + ldr x4, [x27, 1624] + blr x4 +.L1683: + mov w26, w0 +.L1650: + mov w20, 0 + b .L1632 +.L1634: + mov w0, w19 + bl flash_exit_slc_mode + b .L1635 .size FlashReadPages, .-FlashReadPages .align 2 .global FlashLoadFactorBbt .type FlashLoadFactorBbt, %function FlashLoadFactorBbt: - stp x29, x30, [sp, -192]! + stp x29, x30, [sp, -176]! mov w2, 16 + mov w1, 0 add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR0 add x0, x22, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x25, x26, [sp, 64] + stp x19, x20, [sp, 16] + add x0, x0, 176 + stp x23, x24, [sp, 48] adrp x23, .LANCHOR4 - mov w27, -1 - ldrh w1, [x0,188] + stp x27, x28, [sp, 80] add x19, x23, :lo12:.LANCHOR4 - ldrh w21, [x0,190] - add x0, x19, 1688 - mov w28, 0 - adrp x26, .LC102 - add x26, x26, :lo12:.LC102 - mul w21, w1, w21 - mov w1, 0 - uxth w21, w21 + mov w26, -1 + mov w27, 0 + ldrh w21, [x0, 14] + ldrh w0, [x0, 12] + mul w21, w21, w0 + add x0, x19, 1696 bl ftl_memset - add w25, w21, w27 - ldr x0, [x19,1656] - str x0, [x29,152] - mov w19, w28 + and w21, w21, 65535 + ldr x0, [x19, 1664] + add w25, w21, w26 + stp xzr, x0, [x29, 128] + and w25, w25, 65535 sub w0, w21, #12 - str xzr, [x29,144] - uxth w25, w25 - str w0, [x29,124] -.L1694: - add x1, x22, :lo12:.LANCHOR0 - ldrb w1, [x1,2358] - cmp w1, w19 - bls .L1704 - mul w3, w19, w21 - mov w20, w25 - mov w4, 61664 -.L1695: - ldr w0, [x29,124] - cmp w20, w0 - ble .L1697 - add w1, w3, w20 - add x0, x29, 136 - lsl w1, w1, 10 - str w1, [x29,140] - mov w1, 1 - str x4, [x29,104] - mov w2, w1 - str x3, [x29,112] - bl FlashReadPages - ldr w0, [x29,136] - ldr x3, [x29,112] - cmn w0, #1 - ldr x4, [x29,104] - beq .L1696 - add x24, x23, :lo12:.LANCHOR4 - ldr x0, [x24,1656] - ldrh w0, [x0] - cmp w0, w4 - bne .L1696 - add x24, x24, 1688 - mov x0, x26 - mov w1, w19 - mov w2, w20 - add w28, w28, 1 - bl printk - strh w20, [x24,w19,sxtw 1] - uxth w28, w28 - b .L1697 -.L1696: - sub w20, w20, #1 - uxth w20, w20 - b .L1695 -.L1697: - add x1, x22, :lo12:.LANCHOR0 - add w19, w19, 1 - uxtb w19, w19 - ldrb w1, [x1,2358] - cmp w1, w28 - csel w27, w27, wzr, ne - b .L1694 -.L1704: - mov w0, w27 - 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], 192 + mov w19, 0 + str w0, [x29, 108] +.L1685: + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 2358] + cmp w0, w19 + bhi .L1691 + 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], 176 ret +.L1691: + mul w28, w21, w19 + mov w20, w25 + add x24, x23, :lo12:.LANCHOR4 + mov w3, 61664 +.L1686: + ldr w0, [x29, 108] + cmp w20, w0 + ble .L1688 + add w0, w20, w28 + mov w2, 1 + lsl w0, w0, 10 + str w3, [x29, 104] + str w0, [x29, 124] + mov w1, w2 + add x0, x29, 120 + bl FlashReadPages + ldr w0, [x29, 120] + ldr w3, [x29, 104] + cmn w0, #1 + beq .L1687 + ldr x0, [x24, 1664] + ldrh w0, [x0] + cmp w0, w3 + bne .L1687 + add x24, x24, 1696 + add w27, w27, 1 + and w27, w27, 65535 + mov w2, w20 + mov w1, w19 + adrp x0, .LC102 + add x0, x0, :lo12:.LC102 + bl printk + strh w20, [x24, w19, sxtw 1] +.L1688: + add x0, x22, :lo12:.LANCHOR0 + add w19, w19, 1 + and w19, w19, 255 + ldrb w0, [x0, 2358] + cmp w0, w27 + csel w26, w26, wzr, ne + b .L1685 +.L1687: + sub w20, w20, #1 + and w20, w20, 65535 + b .L1686 .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 2 .global FlashProgSlc2KPages .type FlashProgSlc2KPages, %function FlashProgSlc2KPages: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x23, x24, [sp,48] - mov w23, w1 - adrp x1, .LANCHOR1+481 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - adrp x22, .LANCHOR0 - ldrb w26, [x1,#:lo12:.LANCHOR1+481] - stp x19, x20, [sp,16] - str x27, [sp,80] - mov w24, w2 - mov x19, x0 + stp x23, x24, [sp, 48] + mov w24, 56 + stp x25, x26, [sp, 64] + mov w25, w2 + adrp x2, .LANCHOR1+481 + stp x21, x22, [sp, 32] + nop // between mem op and mult-accumulate + umaddl x24, w1, w24, x0 + and w22, w1, 255 + ldrb w26, [x2, #:lo12:.LANCHOR1+481] + mov w23, w22 + stp x27, x28, [sp, 80] mov x21, x0 - mov w25, 0 - add x22, x22, :lo12:.LANCHOR0 - mov w27, -1 -.L1706: - cmp w25, w23 - beq .L1732 - mov w1, w24 - sub w4, w23, w25 + stp x19, x20, [sp, 16] + adrp x27, .LANCHOR0 + mov x19, x0 + add x28, x27, :lo12:.LANCHOR0 +.L1697: + cmp x21, x24 + bne .L1703 + adrp x23, .LANCHOR4 + add x24, x23, :lo12:.LANCHOR4 +.L1704: + cmp x19, x21 + bne .L1711 + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 + ret +.L1703: + mov w1, w25 + mov w4, w23 + add x3, x29, 116 + add x2, x29, 112 mov x0, x21 - add x2, x29, 96 - add x3, x29, 100 bl LogAddr2PhyAddr - ldr w0, [x29,100] - ldrb w1, [x22,2358] - cmp w0, w1 - bcc .L1707 - str w27, [x21] - b .L1708 -.L1707: - add x0, x22, w0, uxtw - ldrb w20, [x0,2360] + add x5, x27, :lo12:.LANCHOR0 + ldr w0, [x29, 116] + ldrb w1, [x5, 2358] + cmp w1, w0 + bhi .L1698 + mov w0, -1 + str w0, [x21] +.L1699: + sub w23, w23, #1 + add x21, x21, 56 + and w23, w23, 255 + b .L1697 +.L1698: + add x0, x5, w0, uxtw + str x5, [x29, 104] + ldrb w20, [x0, 2360] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 bl NandcFlashCs - ldr w1, [x29,96] + ldr w1, [x29, 112] mov w0, w20 bl FlashProgFirstCmd - ldr x3, [x21,8] + ldp x3, x4, [x21, 8] mov w2, w26 - ldr x4, [x21,16] mov w1, 1 mov w0, w20 bl NandcXferData - ldr w1, [x29,96] + ldr w1, [x29, 112] mov w0, w20 bl FlashProgSecondCmd mov w0, w20 bl NandcWaitFlashReady - ldr w1, [x29,96] + ldr w1, [x29, 112] mov w0, w20 bl FlashReadStatus sbfx x0, x0, 0, 1 + ldr x5, [x29, 104] str w0, [x21] + ldr w1, [x29, 112] + ldr w0, [x5, 76] + add w1, w1, w0 mov w0, w20 - ldr w1, [x29,96] - ldr w2, [x22,76] - add w1, w2, w1 bl FlashProgFirstCmd - ldr x0, [x21,8] - mov w1, 1 + ldr x0, [x21, 8] mov w2, w26 - cmp x0, xzr + mov w1, 1 + cmp x0, 0 add x3, x0, 2048 - ldr x0, [x21,16] + ldr x0, [x21, 16] csel x3, x3, xzr, ne + cmp x0, 0 add x4, x0, 8 - cmp x0, xzr csel x4, x4, xzr, ne mov w0, w20 bl NandcXferData - adrp x0, .LANCHOR0 - ldr w1, [x29,96] - add x0, x0, :lo12:.LANCHOR0 - ldr w2, [x0,76] + ldr w0, [x28, 76] + ldr w1, [x29, 112] + add w1, w1, w0 mov w0, w20 - add w1, w2, w1 bl FlashProgSecondCmd mov w0, w20 bl NandcWaitFlashReady - ldr w1, [x29,96] + ldr w1, [x29, 112] mov w0, w20 bl FlashReadStatus - tbz x0, 0, .L1711 - str w27, [x21] -.L1711: + tbz x0, 0, .L1702 + mov w0, -1 + str w0, [x21] +.L1702: mov w0, w20 bl NandcFlashDeCs -.L1708: - add w25, w25, 1 - add x21, x21, 56 - b .L1706 -.L1732: - adrp x25, .LC107 - adrp x26, .LC106 - adrp x27, .LC105 - mov w21, 0 - add x25, x25, :lo12:.LC107 - add x26, x26, :lo12:.LC106 - add x27, x27, :lo12:.LC105 -.L1713: - cmp w21, w23 - beq .L1733 + b .L1699 +.L1711: ldr w0, [x19] cmn w0, #1 - bne .L1714 + bne .L1705 + ldr w1, [x19, 4] adrp x0, .LC103 - ldr w1, [x19,4] add x0, x0, :lo12:.LC103 bl printk - b .L1715 -.L1714: - adrp x20, .LANCHOR4 - sub w4, w23, w21 - add x22, x20, :lo12:.LANCHOR4 - add x3, x29, 100 - mov w1, w24 - add x2, x29, 96 +.L1706: + sub w22, w22, #1 + add x19, x19, 56 + and w22, w22, 255 + b .L1704 +.L1705: + add x20, x23, :lo12:.LANCHOR4 + mov w4, w22 + add x3, x29, 116 + add x2, x29, 112 + mov w1, w25 mov x0, x19 bl LogAddr2PhyAddr - ldr x0, [x22,1664] - mov x1, x19 + ldr x0, [x20, 1672] mov x2, 56 + mov x1, x19 str wzr, [x0] - ldr x0, [x22,1672] + ldr x0, [x20, 1680] str wzr, [x0] - add x0, x29, 104 + add x0, x29, 120 bl memcpy - ldr x0, [x22,1664] + ldr x0, [x20, 1672] + mov w2, w25 + str x0, [x29, 128] mov w1, 1 - str x0, [x29,112] - mov w2, w24 - ldr x0, [x22,1672] - str x0, [x29,120] - add x0, x29, 104 + ldr x0, [x20, 1680] + str x0, [x29, 136] + add x0, x29, 120 bl FlashReadPages - ldr w22, [x29,104] - cmn w22, #1 - bne .L1716 + ldr w20, [x29, 120] + cmn w20, #1 + bne .L1707 + ldr w1, [x19, 4] adrp x0, .LC104 - ldr w1, [x19,4] add x0, x0, :lo12:.LC104 bl printk - str w22, [x19] -.L1716: - ldr w22, [x29,104] - cmp w22, 256 - bne .L1717 - ldr w1, [x19,4] - mov x0, x27 + str w20, [x19] +.L1707: + ldr w20, [x29, 120] + cmp w20, 256 + bne .L1708 + ldr w1, [x19, 4] + adrp x0, .LC105 + add x0, x0, :lo12:.LC105 bl printk - str w22, [x19] -.L1717: - ldr x0, [x19,16] - cbz x0, .L1718 + str w20, [x19] +.L1708: + ldr x0, [x19, 16] + cbz x0, .L1709 ldr w2, [x0] - add x0, x20, :lo12:.LANCHOR4 - ldr x0, [x0,1672] + ldr x0, [x24, 1680] ldr w3, [x0] cmp w2, w3 - beq .L1718 - ldr w1, [x19,4] - mov x0, x26 + beq .L1709 + ldr w1, [x19, 4] + adrp x0, .LC106 + add x0, x0, :lo12:.LC106 bl printk mov w0, -1 str w0, [x19] -.L1718: - ldr x0, [x19,8] - cbz x0, .L1715 - add x20, x20, :lo12:.LANCHOR4 +.L1709: + ldr x0, [x19, 8] + cbz x0, .L1706 ldr w2, [x0] - ldr x0, [x20,1664] + ldr x0, [x24, 1672] ldr w3, [x0] cmp w2, w3 - beq .L1715 - ldr w1, [x19,4] - mov x0, x25 + beq .L1706 + ldr w1, [x19, 4] + adrp x0, .LC107 + add x0, x0, :lo12:.LC107 bl printk mov w0, -1 str w0, [x19] -.L1715: - add w21, w21, 1 - add x19, x19, 56 - b .L1713 -.L1733: - mov w0, 0 - 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], 160 - ret + b .L1706 .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 2 .global FtlLoadFactoryBbt .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! adrp x0, .LANCHOR2 - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR4 add x0, x0, :lo12:.LANCHOR2 - add x19, x19, :lo12:.LANCHOR4 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x23, x24, [sp,48] - add x19, x19, 1704 - adrp x22, .LANCHOR0 - ldr x1, [x0,3616] - add x21, x22, :lo12:.LANCHOR0 - ldr x24, [x0,3664] - add x21, x21, 2624 - str x1, [x19,8] + add x29, sp, 0 + stp x23, x24, [sp, 48] mov w23, 0 - str x24, [x19,16] - mov w25, -1 - mov w26, 61664 -.L1735: - add x0, x22, :lo12:.LANCHOR0 - ldrh w1, [x0,2494] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR4 + stp x21, x22, [sp, 32] + add x20, x20, :lo12:.LANCHOR4 + stp x25, x26, [sp, 64] + add x20, x20, 1712 + str x27, [sp, 80] + mov x26, x20 + mov w27, 61664 + ldr x1, [x0, 3608] + ldr x25, [x0, 3656] + adrp x0, .LANCHOR0 + add x21, x0, :lo12:.LANCHOR0 + mov x24, x0 + add x21, x21, 2636 + stp x1, x25, [x20, 8] +.L1725: + add x0, x24, :lo12:.LANCHOR0 + ldrh w1, [x0, 2494] cmp w23, w1 - bcs .L1744 - ldrh w20, [x0,2542] - strh w25, [x21,12] -.L1737: - add x0, x22, :lo12:.LANCHOR0 - sub w20, w20, #1 - uxth w20, w20 - ldrh w0, [x0,2542] + bcc .L1730 + mov w0, 0 + 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 +.L1730: + ldrh w19, [x0, 2542] + mov x22, x0 + mov w1, -1 + strh w1, [x21] + sub w19, w19, #1 + and w19, w19, 65535 +.L1726: + ldrh w0, [x22, 2542] sub w1, w0, #16 - cmp w20, w1 - ble .L1738 - madd w0, w23, w0, w20 - mov w1, 1 + cmp w19, w1 + ble .L1728 + madd w0, w0, w23, w19 + mov w2, 1 + mov w1, w2 lsl w0, w0, 10 - mov w2, w1 - str w0, [x19,4] - mov x0, x19 + str w0, [x26, 4] + mov x0, x20 bl FlashReadPages - ldr w0, [x19] + ldr w0, [x26] cmn w0, #1 - beq .L1737 - ldrh w0, [x24] - cmp w0, w26 - bne .L1737 - strh w20, [x21,12] -.L1738: + beq .L1727 + ldrh w0, [x25] + cmp w0, w27 + bne .L1727 + strh w19, [x21] +.L1728: add w23, w23, 1 add x21, x21, 2 - b .L1735 -.L1744: - 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 + b .L1725 +.L1727: + sub w19, w19, #1 + and w19, w19, 65535 + b .L1726 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 2 .global FtlGetLastWrittenPage .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: - stp x29, x30, [sp, -208]! + stp x29, x30, [sp, -192]! cmp w1, 1 - adrp x3, .LANCHOR0 add x29, sp, 0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - str x25, [sp,64] + stp x23, x24, [sp, 48] mov w23, w1 - add x3, x3, :lo12:.LANCHOR0 - bne .L1746 - ldrh w19, [x3,2546] - b .L1747 -.L1746: - ldrh w19, [x3,2544] -.L1747: + stp x19, x20, [sp, 16] + adrp x1, .LANCHOR0 + stp x21, x22, [sp, 32] + add x1, x1, :lo12:.LANCHOR0 + bne .L1736 + ldrh w19, [x1, 2546] +.L1737: sub w19, w19, #1 lsl w21, w0, 10 - mov w1, 1 - mov w2, w23 sxth w19, w19 - str xzr, [x29,96] + add x1, x29, 128 orr w0, w19, w21 - str w0, [x29,92] - add x0, x29, 88 - add x24, x29, 144 - str x24, [x29,104] - bl FlashReadPages - ldr w0, [x29,144] - cmn w0, #1 - bne .L1748 - mov w22, 0 - mov w25, 2 -.L1749: - cmp w22, w19 - bgt .L1748 - add w3, w22, w19 - mov w1, 1 + stp xzr, x1, [x29, 80] + str w0, [x29, 76] mov w2, w23 - sdiv w20, w3, w25 + mov w1, 1 + add x0, x29, 72 + bl FlashReadPages + ldr w0, [x29, 128] + cmn w0, #1 + bne .L1738 + mov w22, 0 + mov w24, 2 +.L1739: + cmp w22, w19 + ble .L1742 +.L1738: + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 192 + ret +.L1736: + ldrh w19, [x1, 2544] + b .L1737 +.L1742: + add w20, w22, w19 + mov w2, w23 + mov w1, 1 + sdiv w20, w20, w24 sxth w0, w20 orr w0, w0, w21 - str w0, [x29,92] - add x0, x29, 88 + str w0, [x29, 76] + add x0, x29, 72 bl FlashReadPages - ldr w0, [x24] + ldr w0, [x29, 128] cmn w0, #1 - bne .L1750 - ldr w0, [x24,4] + bne .L1740 + ldr w0, [x29, 132] cmn w0, #1 - bne .L1750 - ldr w0, [x29,88] + bne .L1740 + ldr w0, [x29, 72] cmn w0, #1 - beq .L1750 + beq .L1740 sub w19, w20, #1 sxth w19, w19 - b .L1749 -.L1750: + b .L1739 +.L1740: add w20, w20, 1 sxth w22, w20 - b .L1749 -.L1748: - 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], 208 - ret + b .L1739 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 2 .global FtlLoadBbt @@ -11257,183 +11115,180 @@ FtlGetLastWrittenPage: FtlLoadBbt: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x23, x24, [sp,48] + stp x23, x24, [sp, 48] adrp x24, .LANCHOR2 - adrp x23, .LANCHOR4 add x0, x24, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - add x19, x23, :lo12:.LANCHOR4 - adrp x20, .LANCHOR0 - ldr x1, [x0,3616] - add x19, x19, 1704 - ldr x22, [x0,3664] - mov w25, 61649 - str x1, [x19,8] - str x22, [x19,16] + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + adrp x23, .LANCHOR4 + stp x21, x22, [sp, 32] + add x20, x23, :lo12:.LANCHOR4 + add x20, x20, 1712 + adrp x19, .LANCHOR0 + ldr x1, [x0, 3608] + add x25, x19, :lo12:.LANCHOR0 + ldr x22, [x0, 3656] + mov w26, 61649 + stp x1, x22, [x20, 8] bl FtlBbtMemInit - add x0, x20, :lo12:.LANCHOR0 - ldrh w21, [x0,2542] + ldrh w21, [x25, 2542] sub w21, w21, #1 - uxth w21, w21 -.L1757: - add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,2542] + and w21, w21, 65535 +.L1748: + ldrh w0, [x25, 2542] sub w0, w0, #48 cmp w21, w0 - ble .L1760 + ble .L1751 lsl w0, w21, 10 - mov w1, 1 - str w0, [x19,4] - mov w2, w1 - mov x0, x19 + mov w2, 1 + str w0, [x20, 4] + mov w1, w2 + mov x0, x20 bl FlashReadPages - ldr w0, [x19] + ldr w0, [x20] cmn w0, #1 - bne .L1758 - ldr w0, [x19,4] - mov w1, 1 - mov w2, w1 + bne .L1749 + ldr w0, [x20, 4] + mov w2, 1 + mov w1, w2 add w0, w0, 1 - str w0, [x19,4] - mov x0, x19 + str w0, [x20, 4] + mov x0, x20 bl FlashReadPages -.L1758: - ldr w0, [x19] +.L1749: + ldr w0, [x20] cmn w0, #1 - beq .L1759 + beq .L1750 ldrh w0, [x22] - cmp w0, w25 - bne .L1759 - add x1, x20, :lo12:.LANCHOR0 + cmp w0, w26 + bne .L1750 + add x1, x19, :lo12:.LANCHOR0 add x0, x1, 2624 - strh w21, [x1,2624] - ldr w1, [x22,4] - str w1, [x0,8] - ldrh w1, [x22,8] - strh w1, [x0,4] - b .L1760 -.L1759: - sub w21, w21, #1 - uxth w21, w21 - b .L1757 -.L1760: - add x21, x20, :lo12:.LANCHOR0 - mov w2, 65535 - mov w0, -1 - ldrh w1, [x21,2624] - cmp w1, w2 - beq .L1762 - ldrh w1, [x21,2628] - cmp w1, w2 - beq .L1764 + strh w21, [x1, 2624] + ldr w1, [x22, 4] + str w1, [x0, 8] + ldrh w1, [x22, 8] + strh w1, [x0, 4] +.L1751: + add x21, x19, :lo12:.LANCHOR0 + mov w0, 65535 + ldrh w1, [x21, 2624] + cmp w1, w0 + beq .L1765 + ldrh w1, [x21, 2628] + cmp w1, w0 + beq .L1755 add x25, x23, :lo12:.LANCHOR4 lsl w1, w1, 10 - add x0, x25, 1704 - str w1, [x0,4] - mov w1, 1 - mov w2, w1 + add x0, x25, 1712 + mov w2, 1 + str w1, [x0, 4] + mov w1, w2 bl FlashReadPages - ldr w0, [x25,1704] + ldr w0, [x25, 1712] cmn w0, #1 - beq .L1764 + beq .L1755 ldrh w1, [x22] mov w0, 61649 cmp w1, w0 - bne .L1764 - ldr w0, [x22,4] - ldr w1, [x21,2632] + bne .L1755 + ldr w1, [x21, 2632] + ldr w0, [x22, 4] cmp w0, w1 - bls .L1764 - str w0, [x21,2632] - ldrh w1, [x21,2628] - ldrh w0, [x22,8] - strh w1, [x21,2624] - strh w0, [x21,2628] -.L1764: - add x25, x20, :lo12:.LANCHOR0 - mov w1, 1 + bls .L1755 + str w0, [x21, 2632] + ldrh w1, [x21, 2628] + ldrh w0, [x22, 8] + strh w1, [x21, 2624] + strh w0, [x21, 2628] +.L1755: + add x25, x19, :lo12:.LANCHOR0 add x21, x23, :lo12:.LANCHOR4 - mov w26, 61649 - add x21, x21, 1704 - ldrh w0, [x25,2624] - bl FtlGetLastWrittenPage - sxth w19, w0 - add w0, w0, 1 - strh w0, [x25,2626] -.L1766: - tbnz w19, #31, .L1771 - ldrh w0, [x25,2624] + add x21, x21, 1712 + add x26, x24, :lo12:.LANCHOR2 mov w1, 1 - mov w2, w1 - orr w0, w19, w0, lsl 10 - str w0, [x21,4] - add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,3616] - str x0, [x21,8] + ldrh w0, [x25, 2624] + bl FtlGetLastWrittenPage + sxth w20, w0 + add w0, w0, 1 + strh w0, [x25, 2626] +.L1757: + tbnz w20, #31, .L1762 + ldrh w0, [x25, 2624] + mov w2, 1 + mov w1, w2 + orr w0, w20, w0, lsl 10 + str w0, [x21, 4] + ldr x0, [x26, 3608] + str x0, [x21, 8] mov x0, x21 bl FlashReadPages ldr w0, [x21] cmn w0, #1 - beq .L1767 - ldrh w0, [x22] - cmp w0, w26 - bne .L1767 -.L1771: - add x1, x20, :lo12:.LANCHOR0 - ldrh w0, [x22,10] - mov w2, 65535 - strh w0, [x1,2630] - ldrh w0, [x22,12] - cmp w0, w2 - bne .L1768 - b .L1769 -.L1767: - sub w19, w19, #1 - sxth w19, w19 - b .L1766 -.L1768: - ldr w2, [x1,2468] - cmp w0, w2 - beq .L1769 - ldrh w1, [x1,2482] - lsr w1, w1, 2 - cmp w0, w1 - bcs .L1769 - cmp w2, w1 - bcs .L1769 - bl FtlSysBlkNumInit -.L1769: - add x20, x20, :lo12:.LANCHOR0 - mov x19, 0 - add x21, x20, 2624 - add x23, x23, :lo12:.LANCHOR4 -.L1772: - ldrh w0, [x20,2494] - mov w1, w19 - add x19, x19, 1 + beq .L1758 + ldrh w1, [x22] + mov w0, 61649 cmp w1, w0 - bcs .L1790 - add x0, x24, :lo12:.LANCHOR2 - ldr x3, [x23,1712] - ldrh w2, [x0,3792] - add x0, x21, x19, lsl 3 - mul w1, w1, w2 - ldr x0, [x0,24] - lsl w2, w2, 2 - add x1, x3, x1, lsl 2 - bl ftl_memcpy - b .L1772 -.L1790: - mov w0, 0 + bne .L1758 .L1762: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + add x1, x19, :lo12:.LANCHOR0 + ldrh w0, [x22, 10] + mov w2, 65535 + strh w0, [x1, 2630] + ldrh w0, [x22, 12] + cmp w0, w2 + bne .L1759 +.L1760: + add x19, x19, :lo12:.LANCHOR0 + add x24, x24, :lo12:.LANCHOR2 + add x21, x19, 2656 + add x23, x23, :lo12:.LANCHOR4 + mov w20, 0 +.L1763: + ldrh w0, [x19, 2494] + cmp w20, w0 + bcc .L1764 + mov w0, 0 +.L1747: + 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 +.L1750: + sub w21, w21, #1 + and w21, w21, 65535 + b .L1748 +.L1758: + sub w20, w20, #1 + sxth w20, w20 + b .L1757 +.L1759: + ldr w2, [x1, 2468] + cmp w0, w2 + beq .L1760 + ldrh w1, [x1, 2482] + lsr w1, w1, 2 + cmp w2, w1 + bcs .L1760 + cmp w0, w1 + bcs .L1760 + bl FtlSysBlkNumInit + b .L1760 +.L1764: + ldrh w2, [x24, 3784] + ldr x0, [x23, 1720] + mul w1, w2, w20 + lsl w2, w2, 2 + add w20, w20, 1 + add x1, x0, x1, lsl 2 + ldr x0, [x21], 8 + bl ftl_memcpy + b .L1763 +.L1765: + mov w0, -1 + b .L1747 .size FtlLoadBbt, .-FtlLoadBbt .align 2 .global FtlScanSysBlk @@ -11442,909 +11297,846 @@ FtlScanSysBlk: stp x29, x30, [sp, -128]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - stp x21, x22, [sp,32] - add x20, x19, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR2 - add x21, x22, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - strh wzr, [x21,3864] - mov x24, x22 - ldr w2, [x20,2572] - mov w22, 65535 - ldr x0, [x21,3776] + add x19, x22, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR0 + add x20, x23, :lo12:.LANCHOR0 + stp x25, x26, [sp, 64] + mov w25, 56 + ldr x0, [x19, 3768] + ldr w2, [x20, 2572] + stp x27, x28, [sp, 80] + strh wzr, [x19, 3856] lsl w2, w2, 2 - strh wzr, [x20,2590] + strh wzr, [x20, 2590] bl ftl_memset - ldr w2, [x20,2572] + ldr x0, [x19, 3712] mov w1, 0 - ldr x0, [x21,3720] + ldr w2, [x20, 2572] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,2564] + ldr x0, [x19, 3736] mov w1, 0 - ldr x0, [x21,3744] + ldrh w2, [x20, 2564] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,2564] + ldr x0, [x20, 2592] mov w1, 0 - ldr x0, [x20,2592] + ldrh w2, [x20, 2564] lsl w2, w2, 1 bl ftl_memset - add x0, x21, 784 - mov w1, 255 mov w2, 16 + mov w1, 255 + add x0, x19, 784 bl ftl_memset - ldrh w21, [x20,2480] -.L1792: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1,2482] - cmp w0, w21 - bls .L1833 - mov x27, 0 - ldrh w5, [x1,2472] - ldrh w4, [x1,2556] - mov w20, w27 - mov x23, x1 -.L1834: - cmp w5, w27, uxth - bls .L1867 - add x0, x23, 2504 - mov w1, w21 - str x4, [x29,112] - str x5, [x29,120] - ldrb w0, [x0,x27] + ldrh w24, [x20, 2480] + add x0, x20, 2504 + str x0, [x29, 112] +.L1777: + ldrh w0, [x20, 2482] + cmp w0, w24 + bls .L1816 + ldrh w9, [x20, 2472] + mov x6, 0 + ldrh w8, [x20, 2556] + mov w21, 0 + add x5, x22, :lo12:.LANCHOR2 + mov w7, 4 + b .L1817 +.L1779: + ldr x0, [x29, 112] + mov w1, w24 + ldrb w0, [x0, x6] bl V2P_block - uxth w28, w0 + and w4, w0, 65535 bl FtlBbmIsBadBlock - ldr x5, [x29,120] - ldr x4, [x29,112] - cbnz w0, .L1793 - add x2, x24, :lo12:.LANCHOR2 - mov w0, 56 - lsl w28, w28, 10 - mov w3, 4 - umull x0, w20, w0 - ldr x1, [x2,3592] - add x1, x1, x0 - str w28, [x1,4] - ldr x1, [x2,3592] - add x0, x1, x0 - ldr x1, [x2,1400] - ldr x2, [x2,1408] - str x1, [x0,8] - mul w1, w20, w4 - add w20, w20, 1 - sdiv w1, w1, w3 - uxth w20, w20 - add x1, x2, w1, sxtw 2 - str x1, [x0,16] -.L1793: - add x27, x27, 1 - b .L1834 -.L1867: - cbz w20, .L1796 - add x0, x24, :lo12:.LANCHOR2 - mov w1, w20 + cbnz w0, .L1778 + umull x2, w21, w25 + ldr x0, [x5, 3584] + lsl w4, w4, 10 + add x0, x0, x2 + str w4, [x0, 4] + ldr x1, [x5, 3584] + ldr x0, [x5, 1392] + add x1, x1, x2 + ldr x2, [x5, 1400] + str x0, [x1, 8] + mul w0, w21, w8 + add w21, w21, 1 + and w21, w21, 65535 + sdiv w0, w0, w7 + add x0, x2, w0, sxtw 2 + str x0, [x1, 16] +.L1778: + add x6, x6, 1 +.L1817: + cmp w9, w6, uxth + bhi .L1779 + cbnz w21, .L1780 +.L1815: + add w24, w24, 1 + and w24, w24, 65535 + b .L1777 +.L1780: + add x19, x22, :lo12:.LANCHOR2 mov w2, 1 - mov x23, 0 - mov w27, -1 - mov w28, 61604 - ldr x0, [x0,3592] + mov w1, w21 + add x27, x19, 784 + mov x26, 0 + ldr x0, [x19, 3584] bl FlashReadPages -.L1797: - cmp w20, w23, uxth - bls .L1796 - mov x0, 56 - mul x6, x23, x0 - add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,3592] - add x1, x0, x6 - ldr w0, [x0,x6] - ldr w5, [x1,4] + umull x0, w21, w25 + str x0, [x29, 120] +.L1814: + ldr x0, [x19, 3584] + add x1, x0, x26 + ldr w0, [x0, x26] + ldr w28, [x1, 4] cmn w0, #1 - ldr x26, [x1,16] - ubfx x25, x5, 10, 16 - bne .L1799 - mov w7, 16 -.L1798: - add x8, x24, :lo12:.LANCHOR2 - str x7, [x29,104] - str x8, [x29,112] - str x6, [x29,120] - ldr x0, [x8,3592] - add x0, x0, x6 - ldr w1, [x0,4] + ldr x21, [x1, 16] + ubfx x28, x28, 10, 16 + bne .L1783 + mov w6, 16 + mov w7, 65535 +.L1785: + ldr x0, [x19, 3584] + mov w2, 1 + stp w7, w6, [x29, 104] + add x0, x0, x26 + ldr w1, [x0, 4] add w1, w1, 1 - str w1, [x0,4] - mov w1, 1 - ldr x0, [x8,3592] - mov w2, w1 - add x0, x0, x6 + str w1, [x0, 4] + mov w1, w2 + ldr x0, [x19, 3584] + add x0, x0, x26 bl FlashReadPages - ldrh w0, [x26] - ldr x8, [x29,112] - cmp w0, w22 - ldr x6, [x29,120] - ldr x7, [x29,104] - ldr x0, [x8,3592] - bne .L1800 - str w27, [x0,x6] - b .L1799 -.L1800: - ldr w0, [x0,x6] - cmn w0, #1 - bne .L1799 - sub w7, w7, #1 - uxth w7, w7 - cbnz w7, .L1798 -.L1799: - add x0, x24, :lo12:.LANCHOR2 - ldr x1, [x0,3592] - ldr w1, [x1,x6] - cmn w1, #1 - beq .L1802 - ldr w0, [x0,752] - cmn w0, #1 - beq .L1803 - ldr w1, [x26,4] + ldp w7, w6, [x29, 104] + ldrh w0, [x21] + cmp w0, w7 + ldr x0, [x19, 3584] + bne .L1782 + mov w1, -1 + str w1, [x0, x26] + ldr x0, [x19, 3584] + ldr w0, [x0, x26] cmp w0, w1 - bhi .L1804 -.L1803: - ldr w0, [x26,4] + beq .L1851 +.L1783: + ldr w0, [x19, 752] + ldr w10, [x21, 4] cmn w0, #1 - beq .L1804 - add x1, x24, :lo12:.LANCHOR2 - add w0, w0, 1 - str w0, [x1,752] -.L1804: - ldrh w0, [x26] - cmp w0, w28 - beq .L1806 - bhi .L1807 + beq .L1786 + cmp w0, w10 + bhi .L1787 +.L1786: + cmn w10, #1 + beq .L1787 + add w0, w10, 1 + str w0, [x19, 752] +.L1787: + ldrh w0, [x21] + mov w1, 61604 + cmp w0, w1 + beq .L1789 + bhi .L1790 mov w1, 61574 cmp w0, w1 - bne .L1805 - add x0, x19, :lo12:.LANCHOR0 - add x7, x24, :lo12:.LANCHOR2 - ldrh w6, [x0,2564] - ldrh w0, [x0,2590] - sub w2, w6, #1 - ldr x7, [x7,3744] - sxth x1, w2 - sub w2, w2, w0 - b .L1820 -.L1807: + beq .L1791 +.L1788: + ldr x0, [x29, 120] + add x26, x26, 56 + cmp x26, x0 + bne .L1814 + b .L1815 +.L1782: + ldr w0, [x0, x26] + cmn w0, #1 + bne .L1783 + sub w6, w6, #1 + ands w6, w6, 65535 + bne .L1785 +.L1851: + mov w1, 0 + mov w0, w28 + bl FtlFreeSysBlkQueueIn + b .L1788 +.L1790: mov w1, 61634 cmp w0, w1 - beq .L1809 - cmp w0, w22 - bne .L1805 - mov w0, w25 - b .L1866 -.L1809: - add x0, x19, :lo12:.LANCHOR0 - add x7, x24, :lo12:.LANCHOR2 - ldr w6, [x0,2572] - ldrh w0, [x7,3864] - ldr x7, [x7,3776] - uxth w2, w6 - sub w1, w2, #1 - sub w2, w2, w0 + beq .L1792 + mov w1, 65535 + cmp w0, w1 + beq .L1851 + b .L1788 +.L1792: + ldr w6, [x20, 2572] + ldrh w1, [x19, 3856] + and w2, w6, 65535 + ldr x7, [x19, 3768] + sub w0, w2, #1 + sub w2, w2, w1 sub w2, w2, #1 - sxth x1, w1 + sxth x0, w0 sxth w2, w2 -.L1811: - cmp w1, w2 - ble .L1868 - sbfiz x8, x1, 2, 32 - ldr w11, [x26,4] - sxth x9, w1 - ldr w10, [x7,x8] - cmp w11, w10 - bls .L1812 +.L1794: + cmp w0, w2 + bgt .L1800 + tbz w0, #31, .L1832 + b .L1788 +.L1800: + sxtw x8, w0 + lsl x9, x8, 2 + ldr w11, [x7, x9] + cmp w10, w11 + bls .L1795 ldr w2, [x7] - cbnz w2, .L1813 - cmp w0, w6 - beq .L1813 - add x2, x24, :lo12:.LANCHOR2 - add w0, w0, 1 - strh w0, [x2,3864] -.L1813: - mov w0, 0 -.L1814: - cmp w0, w1 - beq .L1869 - add x6, x24, :lo12:.LANCHOR2 - sxtw x2, w0 - lsl x7, x2, 2 - lsl x2, x2, 1 - add w0, w0, 1 - ldr x10, [x6,3776] - sxth w0, w0 - add x11, x10, x7 - ldr w11, [x11,4] - str w11, [x10,x7] - ldr x6, [x6,3720] - add x7, x6, x2 - ldrh w7, [x7,2] - strh w7, [x6,x2] - b .L1814 -.L1869: - add x0, x24, :lo12:.LANCHOR2 - ldr w6, [x26,4] - ldr x2, [x0,3776] - str w6, [x2,x8] - ldr x2, [x0,3720] - strh w25, [x2,x9,lsl 1] - tbz w1, #31, .L1816 - b .L1805 -.L1812: - sub w1, w1, #1 - sxth x1, w1 - b .L1811 -.L1868: - tbz w1, #31, .L1849 - b .L1805 -.L1816: - add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,3864] - ldr w2, [x2,2572] - sub w2, w2, w0 + cbnz w2, .L1796 + cmp w6, w1 + beq .L1796 + add w1, w1, 1 + strh w1, [x19, 3856] +.L1796: + mov w1, 0 +.L1797: + cmp w1, w0 + bne .L1798 + ldr x1, [x19, 3768] + ldr w2, [x21, 4] + str w2, [x1, x9] + ldr x1, [x19, 3712] + strh w28, [x1, x8, lsl 1] + tbnz w0, #31, .L1788 + ldrh w1, [x19, 3856] + ldr w2, [x20, 2572] + sub w2, w2, w1 sub w2, w2, #1 - cmp w1, w2, sxth - bgt .L1805 -.L1849: - add x2, x24, :lo12:.LANCHOR2 - add w0, w0, 1 - ldr w4, [x26,4] - strh w0, [x2,3864] - ldr x0, [x2,3776] - str w4, [x0,x1,lsl 2] - ldr x0, [x2,3720] - b .L1865 -.L1826: - sbfiz x8, x1, 2, 32 - ldr w11, [x26,4] - sxth x9, w1 - ldr w10, [x7,x8] - cmp w11, w10 - bhi .L1870 - sub w1, w1, #1 - sxth x1, w1 -.L1820: - cmp w1, w2 - bgt .L1826 - b .L1825 -.L1870: - ldr w2, [x7] - cbnz w2, .L1822 - cmp w0, w6 - beq .L1822 - add x2, x19, :lo12:.LANCHOR0 - add w0, w0, 1 - strh w0, [x2,2590] -.L1822: - mov w0, 0 -.L1823: - cmp w0, w1 - beq .L1871 - add x2, x24, :lo12:.LANCHOR2 - ldr x7, [x2,3744] - sxtw x2, w0 + cmp w0, w2, sxth + bgt .L1788 +.L1832: + add w1, w1, 1 + strh w1, [x19, 3856] + ldr x1, [x19, 3768] + ldr w2, [x21, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x19, 3712] +.L1850: + strh w28, [x1, x0, lsl 1] + b .L1788 +.L1798: + ldr x7, [x19, 3768] + sxtw x2, w1 lsl x6, x2, 2 lsl x2, x2, 1 add x10, x7, x6 - add w0, w0, 1 - sxth w0, w0 - ldr w10, [x10,4] - str w10, [x7,x6] - add x6, x19, :lo12:.LANCHOR0 - ldr x6, [x6,2592] + add w1, w1, 1 + sxth w1, w1 + ldr w10, [x10, 4] + str w10, [x7, x6] + ldr x6, [x19, 3712] add x7, x6, x2 - ldrh w7, [x7,2] - strh w7, [x6,x2] - b .L1823 -.L1871: - add x0, x24, :lo12:.LANCHOR2 - ldr w2, [x26,4] - ldr x0, [x0,3744] - str w2, [x0,x8] - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,2592] - strh w25, [x0,x9,lsl 1] -.L1825: - tbnz w1, #31, .L1805 - add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x2,2564] - ldrh w6, [x2,2590] + ldrh w7, [x7, 2] + strh w7, [x6, x2] + b .L1797 +.L1795: sub w0, w0, #1 - sub w0, w0, w6 - cmp w1, w0, sxth - bgt .L1805 - add x0, x24, :lo12:.LANCHOR2 - add w6, w6, 1 - ldr w4, [x26,4] - strh w6, [x2,2590] - ldr x0, [x0,3744] - str w4, [x0,x1,lsl 2] - ldr x0, [x2,2592] -.L1865: - strh w25, [x0,x1,lsl 1] - b .L1805 + sxth x0, w0 + b .L1794 +.L1791: + ldrh w6, [x20, 2564] + ldrh w1, [x20, 2590] + sub w2, w6, #1 + ldr x7, [x19, 3736] + sxth x0, w2 + sub w2, w2, w1 +.L1803: + cmp w0, w2 + ble .L1808 + sxtw x8, w0 + lsl x9, x8, 2 + ldr w11, [x7, x9] + cmp w10, w11 + bls .L1804 + ldr w2, [x7] + cbnz w2, .L1805 + cmp w6, w1 + beq .L1805 + add w1, w1, 1 + strh w1, [x20, 2590] +.L1805: + mov w1, 0 .L1806: - add x0, x24, :lo12:.LANCHOR2 - add x1, x0, 784 - ldrh w2, [x0,784] - cmp w2, w22 - bne .L1827 - strh w25, [x0,784] - ldr w0, [x26,4] - str w0, [x1,8] - b .L1805 -.L1827: - ldrh w0, [x1,4] - cmp w0, w22 - beq .L1828 + cmp w1, w0 + bne .L1807 + ldr x1, [x19, 3736] + ldr w2, [x21, 4] + str w2, [x1, x9] + ldr x1, [x20, 2592] + strh w28, [x1, x8, lsl 1] +.L1808: + tbnz w0, #31, .L1788 + ldrh w1, [x20, 2564] + ldrh w2, [x20, 2590] + sub w1, w1, #1 + sub w1, w1, w2 + cmp w0, w1, sxth + bgt .L1788 + ldr x1, [x19, 3736] + add w2, w2, 1 + strh w2, [x20, 2590] + ldr w2, [x21, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x20, 2592] + b .L1850 +.L1807: + ldr x7, [x19, 3736] + sxtw x2, w1 + lsl x6, x2, 2 + lsl x2, x2, 1 + add x10, x7, x6 + add w1, w1, 1 + sxth w1, w1 + ldr w10, [x10, 4] + str w10, [x7, x6] + ldr x6, [x20, 2592] + add x7, x6, x2 + ldrh w7, [x7, 2] + strh w7, [x6, x2] + b .L1806 +.L1804: + sub w0, w0, #1 + sxth x0, w0 + b .L1803 +.L1789: + ldrh w0, [x27] + mov w1, 65535 + cmp w0, w1 + bne .L1810 + strh w28, [x27] + str w10, [x27, 8] + b .L1788 +.L1810: + ldrh w0, [x27, 4] + cmp w0, w1 + beq .L1811 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1828: - add x1, x24, :lo12:.LANCHOR2 - ldr w2, [x26,4] - add x0, x1, 784 - ldr w6, [x0,8] - cmp w6, w2 - bcs .L1829 - ldrh w2, [x1,784] - strh w2, [x0,4] - strh w25, [x1,784] - ldr w1, [x26,4] - str w1, [x0,8] - b .L1805 -.L1829: - strh w25, [x0,4] - b .L1805 -.L1802: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,204] - mov w0, w25 - cbz w1, .L1830 -.L1866: - mov w1, 0 -.L1830: - bl FtlFreeSysBlkQueueIn -.L1805: - add x23, x23, 1 - b .L1797 -.L1796: - add w21, w21, 1 - uxth w21, w21 - b .L1792 -.L1833: - add x4, x24, :lo12:.LANCHOR2 - ldr x2, [x4,3720] - ldrh w0, [x2] - cbz w0, .L1835 -.L1838: - add x1, x19, :lo12:.LANCHOR0 - ldr x2, [x1,2592] - ldrh w0, [x2] - cbz w0, .L1836 - b .L1859 -.L1835: - ldrh w4, [x4,3864] - cbz w4, .L1838 - ldr w1, [x1,2572] -.L1839: - cmp w0, w1 - bcs .L1838 - ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1840 - mov w7, w0 -.L1841: - add x1, x19, :lo12:.LANCHOR0 - ldr w1, [x1,2572] - cmp w0, w1 - bcs .L1838 - add x2, x24, :lo12:.LANCHOR2 - sxtw x6, w0 - sub w1, w0, w7 - lsl x4, x6, 1 - add w0, w0, 1 - ldr x5, [x2,3720] - sxtw x1, w1 - sxth w0, w0 - ldrh w8, [x5,x4] - strh w8, [x5,x1,lsl 1] - ldr x5, [x2,3776] - ldr w6, [x5,x6,lsl 2] - str w6, [x5,x1,lsl 2] - ldr x1, [x2,3720] - strh wzr, [x1,x4] - b .L1841 -.L1840: - add w0, w0, 1 - sxth w0, w0 - b .L1839 -.L1836: - ldrh w4, [x1,2590] - cbz w4, .L1859 - ldrh w1, [x1,2564] -.L1844: - cmp w0, w1 - mov w7, w0 - bge .L1859 - ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1845 -.L1846: - add x2, x19, :lo12:.LANCHOR0 - ldrh w1, [x2,2564] - cmp w0, w1 - bge .L1859 - sxtw x6, w0 - sub w1, w0, w7 - ldr x5, [x2,2592] - lsl x4, x6, 1 - sxtw x1, w1 - add w0, w0, 1 - ldrh w8, [x5,x4] - sxth w0, w0 - strh w8, [x5,x1,lsl 1] - add x5, x24, :lo12:.LANCHOR2 - ldr x5, [x5,3744] - ldr w6, [x5,x6,lsl 2] - str w6, [x5,x1,lsl 2] - ldr x1, [x2,2592] - strh wzr, [x1,x4] - b .L1846 -.L1845: - add w0, w0, 1 - sxth w0, w0 - b .L1844 -.L1859: +.L1811: + ldr w0, [x21, 4] + ldr w1, [x27, 8] + cmp w1, w0 + bcs .L1812 + ldrh w0, [x27] + strh w0, [x27, 4] + strh w28, [x27] + ldr w0, [x21, 4] + str w0, [x27, 8] + b .L1788 +.L1812: + strh w28, [x27, 4] + b .L1788 +.L1816: + add x0, x22, :lo12:.LANCHOR2 + ldr x1, [x0, 3712] + ldrh w2, [x1] + cbz w2, .L1818 +.L1821: + add x0, x23, :lo12:.LANCHOR0 + ldr x1, [x0, 2592] + ldrh w2, [x1] + cbz w2, .L1819 +.L1837: + ldp x19, x20, [sp, 16] 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 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 +.L1818: + ldrh w0, [x0, 3856] + cbz w0, .L1821 + ldr w2, [x20, 2572] + mov w0, 0 +.L1822: + cmp w0, w2 + bcs .L1821 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L1823 + mov w1, w0 + add x7, x23, :lo12:.LANCHOR0 + add x3, x22, :lo12:.LANCHOR2 +.L1824: + ldr w2, [x7, 2572] + cmp w1, w2 + bcs .L1821 + ldr x5, [x3, 3712] + sxtw x6, w1 + lsl x4, x6, 1 + sub w2, w1, w0 + sxtw x2, w2 + add w1, w1, 1 + sxth w1, w1 + ldrh w8, [x5, x4] + strh w8, [x5, x2, lsl 1] + ldr x5, [x3, 3768] + ldr w6, [x5, x6, lsl 2] + str w6, [x5, x2, lsl 2] + ldr x2, [x3, 3712] + strh wzr, [x2, x4] + b .L1824 +.L1823: + add w0, w0, 1 + sxth w0, w0 + b .L1822 +.L1819: + ldrh w2, [x0, 2590] + cbz w2, .L1837 + ldrh w2, [x0, 2564] + mov w0, 0 +.L1827: + mov w5, w0 + cmp w0, w2 + bge .L1837 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L1828 + add x23, x23, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LANCHOR2 +.L1829: + ldrh w1, [x23, 2564] + cmp w0, w1 + bge .L1837 + ldr x3, [x23, 2592] + sxtw x4, w0 + lsl x2, x4, 1 + sub w1, w0, w5 + sxtw x1, w1 + add w0, w0, 1 + sxth w0, w0 + ldrh w6, [x3, x2] + strh w6, [x3, x1, lsl 1] + ldr x3, [x22, 3736] + ldr w4, [x3, x4, lsl 2] + str w4, [x3, x1, lsl 2] + ldr x1, [x23, 2592] + strh wzr, [x1, x2] + b .L1829 +.L1828: + add w0, w0, 1 + sxth w0, w0 + b .L1827 .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: - sub sp, sp, #144 + sub sp, sp, #112 mov w1, 0 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x23, x24, [sp,64] - stp x21, x22, [sp,48] - adrp x23, .LANCHOR4 - adrp x21, .LANCHOR2 - stp x19, x20, [sp,32] - add x24, x21, :lo12:.LANCHOR2 - add x19, x23, :lo12:.LANCHOR4 - add x19, x19, 1704 + stp x19, x20, [sp, 32] adrp x20, .LANCHOR0 - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - ldr x0, [x24,3616] - add x25, x24, 784 - str x0, [x19,8] - ldr x0, [x24,3664] - str x0, [x19,16] + stp x23, x24, [sp, 64] + adrp x23, .LANCHOR4 + stp x21, x22, [sp, 48] + add x19, x23, :lo12:.LANCHOR4 + adrp x21, .LANCHOR2 + add x24, x21, :lo12:.LANCHOR2 + add x19, x19, 1712 + stp x25, x26, [sp, 80] + stp x27, x28, [sp, 96] + ldr x0, [x24, 3608] + str x0, [x19, 8] + ldr x0, [x24, 3656] + str x0, [x19, 16] add x0, x20, :lo12:.LANCHOR0 - ldrh w2, [x0,2480] - ldr x0, [x24,520] + ldrh w2, [x0, 2480] + ldr x0, [x24, 520] lsl w2, w2, 1 bl ftl_memset - str x23, [x29,120] - ldrh w0, [x24,784] + ldrh w0, [x24, 784] mov w1, 65535 cmp w0, w1 - bne .L1873 -.L1884: - mov w19, -1 - b .L1874 -.L1873: + bne .L1853 +.L1864: + mov w0, -1 +.L1852: + 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, 112 + ret +.L1853: + add x25, x24, 784 mov w1, 1 - adrp x26, .LC108 - add x26, x26, :lo12:.LC108 bl FtlGetLastWrittenPage - ldrsh w23, [x24,784] + ldrsh w28, [x24, 784] + mov w26, 19539 sxth w22, w0 + movk w26, 0x4654, lsl 16 add w0, w0, 1 - strh w0, [x25,2] -.L1875: - tbnz w22, #31, .L1883 - orr w0, w22, w23, lsl 10 - mov w1, 1 - str w0, [x19,4] - mov w2, w1 - ldr x0, [x24,3616] + strh w0, [x25, 2] +.L1855: + tbnz w22, #31, .L1863 + orr w0, w22, w28, lsl 10 add x27, x20, :lo12:.LANCHOR0 - str x0, [x19,8] + str w0, [x19, 4] + mov w2, 1 + ldr x0, [x24, 3608] + mov w1, w2 + str x0, [x19, 8] mov x0, x19 bl FlashReadPages - ldrb w0, [x27,72] - cbz w0, .L1876 - ldr x25, [x19,16] - ldr w7, [x25,12] - cbz w7, .L1876 - ldr x2, [x19,8] - ldrh w1, [x27,2554] - mov x0, x2 - str x7, [x29,104] - str x2, [x29,112] + ldrb w0, [x27, 72] + cbz w0, .L1856 + ldr x8, [x19, 16] + ldr w7, [x8, 12] + cbz w7, .L1856 + ldr x6, [x19, 8] + ldrh w1, [x27, 2554] + mov x0, x6 bl js_hash - ldr x7, [x29,104] cmp w7, w0 - beq .L1876 - ldr x2, [x29,112] - cbnz w22, .L1877 - ldrh w0, [x24,788] - cmp w23, w0 - beq .L1877 - ldr w0, [x2] + beq .L1856 + cbnz w22, .L1857 + ldrh w0, [x25, 4] + cmp w28, w0 + beq .L1857 + ldr w0, [x6] + ldrh w1, [x25] str w0, [sp] - mov x0, x26 - ldrh w1, [x24,784] - ldr w2, [x19] - ldr w3, [x19,4] - ldr w4, [x25] - ldr w5, [x25,4] - ldr w6, [x25,8] + adrp x0, .LC108 + add x0, x0, :lo12:.LC108 + ldp w4, w5, [x8] + ldr w6, [x8, 8] + ldp w2, w3, [x19] bl printk - ldrsh w23, [x24,788] - ldrh w22, [x27,2546] - b .L1879 -.L1877: + ldrsh w28, [x25, 4] + ldrh w22, [x27, 2546] +.L1859: + sub w22, w22, #1 + sxth w22, w22 + b .L1855 +.L1857: mov w0, -1 str w0, [x19] -.L1876: +.L1856: ldr w0, [x19] cmn w0, #1 - beq .L1879 - ldr x0, [x24,3616] - ldr w1, [x0] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - bne .L1879 - ldr x0, [x24,3664] + beq .L1859 + ldr x0, [x24, 3608] + ldr w0, [x0] + cmp w0, w26 + bne .L1859 + ldr x0, [x24, 3656] ldrh w1, [x0] mov w0, 61604 cmp w1, w0 - bne .L1879 -.L1883: - ldr x0, [x29,120] + bne .L1859 +.L1863: + add x19, x23, :lo12:.LANCHOR4 add x24, x21, :lo12:.LANCHOR2 + add x19, x19, 1712 add x22, x20, :lo12:.LANCHOR0 mov w2, 48 - add x19, x0, :lo12:.LANCHOR4 add x0, x24, 456 - add x19, x19, 1704 - ldr x1, [x19,8] + ldr x1, [x19, 8] bl ftl_memcpy - ldr x1, [x19,8] - ldrh w2, [x22,2480] - ldr x0, [x24,520] - add x1, x1, 48 + ldr x0, [x24, 520] + ldrh w2, [x22, 2480] + ldr x1, [x19, 8] lsl w2, w2, 1 + add x1, x1, 48 bl ftl_memcpy - ldrh w2, [x22,2480] - ldr x3, [x19,8] - ubfiz x1, x2, 1, 16 - ldr x0, [x20,#:lo12:.LANCHOR0] + ldrh w1, [x22, 2480] + ldr x0, [x19, 8] + lsr w2, w1, 3 + ubfiz x1, x1, 1, 16 add x1, x1, 51 - lsr w2, w2, 3 - and x1, x1, 262140 add w2, w2, 4 - add x1, x3, x1 + and x1, x1, -4 + add x1, x0, x1 + ldr x0, [x22, 64] bl ftl_memcpy - ldrh w0, [x22,2588] - cbz w0, .L1881 - ldrh w0, [x22,2480] - ldr x3, [x19,8] - lsr w1, w0, 3 - ldrh w2, [x22,2580] - add w1, w1, w0, lsl 1 - ldr x0, [x24,3768] + ldrh w0, [x22, 2588] + cbz w0, .L1861 + ldrh w1, [x22, 2480] + ldrh w2, [x22, 2580] + lsr w0, w1, 3 + add w1, w0, w1, lsl 1 + ldr x0, [x19, 8] add w1, w1, 52 lsl w2, w2, 2 and x1, x1, 65532 - add x1, x3, x1 + add x1, x0, x1 + ldr x0, [x24, 3760] bl ftl_memcpy - b .L1881 -.L1879: - sub w22, w22, #1 - sxth w22, w22 - b .L1875 -.L1881: +.L1861: add x0, x21, :lo12:.LANCHOR2 mov w1, 19539 movk w1, 0x4654, lsl 16 - ldr w2, [x0,456] + ldr w2, [x0, 456] cmp w2, w1 - bne .L1884 + bne .L1864 add x1, x20, :lo12:.LANCHOR0 - ldrb w3, [x0,466] - ldrh w5, [x0,464] - strh w5, [x0,790] - ldrh w2, [x1,2494] - cmp w3, w2 - bne .L1884 - ldrh w3, [x1,2544] - ldr x2, [x29,120] - strh wzr, [x0,802] - mul w3, w3, w5 - add x23, x2, :lo12:.LANCHOR4 - ldrh w2, [x1,2550] - str w3, [x1,2616] - strb wzr, [x0,806] - mul w3, w3, w2 - str w3, [x1,2584] - ldrh w2, [x1,2630] - ldr w3, [x1,2484] - ldrh w1, [x1,2472] - sub w2, w3, w2 - str w5, [x23,1760] + ldrh w4, [x0, 464] + ldrb w5, [x0, 466] + strh w4, [x0, 790] + ldrh w2, [x1, 2494] + cmp w5, w2 + bne .L1864 + ldrh w2, [x1, 2544] + add x23, x23, :lo12:.LANCHOR4 + ldrh w5, [x1, 2550] + add x3, x0, 512 + strh wzr, [x0, 802] + str w4, [x23, 1768] + mul w2, w2, w4 + strb wzr, [x0, 806] + str w2, [x1, 2616] + strb wzr, [x0, 808] + mul w2, w5, w2 + ldrh w5, [x1, 2630] + str w2, [x1, 2584] + ldr w2, [x1, 2484] + ldrh w1, [x1, 2472] sub w2, w2, w5 - ldrh w3, [x0,470] - strh w3, [x0,560] + sub w2, w2, w4 + ldrh w4, [x0, 470] + strh w4, [x0, 560] udiv w1, w2, w1 - ldrh w2, [x0,472] - strh w1, [x0,780] + ldrh w2, [x0, 472] lsr w5, w2, 6 and w2, w2, 63 - strb w2, [x0,566] - ldrb w2, [x0,467] - strb w2, [x0,568] + strb w2, [x0, 566] + ldrb w2, [x0, 467] + strb w2, [x0, 568] mov w2, -1 - strh w2, [x0,800] - ldrh w2, [x0,474] - strh w2, [x0,608] - ldrh w2, [x0,476] - strh w5, [x0,562] + strh w2, [x0, 800] + ldrh w2, [x0, 474] + strh w2, [x0, 608] + ldrh w2, [x0, 476] + strh w5, [x0, 562] + strh w1, [x0, 780] lsr w5, w2, 6 and w2, w2, 63 - strb w2, [x0,614] - ldrb w2, [x0,468] - strb w2, [x0,616] - ldrh w2, [x0,478] - strh w2, [x0,656] - ldrh w2, [x0,480] - strh w5, [x0,610] + strb w2, [x0, 614] + ldrb w2, [x0, 468] + strb w2, [x0, 616] + ldrh w2, [x0, 478] + strh w2, [x0, 656] + ldrh w2, [x0, 480] + strh w5, [x0, 610] lsr w5, w2, 6 and w2, w2, 63 - strb wzr, [x0,808] - strh w5, [x0,658] - strb w2, [x0,662] - ldrb w2, [x0,469] - ldr w1, [x0,488] - strb w2, [x0,664] - str w1, [x0,760] - ldr w2, [x0,752] - ldr w1, [x0,496] - str wzr, [x0,740] - str wzr, [x0,728] + strh w5, [x0, 658] + strb w2, [x0, 662] + ldrb w2, [x0, 469] + strb w2, [x0, 664] + str wzr, [x0, 720] + ldr w1, [x0, 488] + ldr w2, [x0, 752] + stp wzr, wzr, [x3, 216] + stp wzr, wzr, [x3, 224] + str w1, [x0, 760] + str wzr, [x0, 764] + ldr w1, [x0, 496] + str wzr, [x0, 772] cmp w1, w2 - str wzr, [x0,720] - str wzr, [x0,736] - str wzr, [x0,764] - str wzr, [x0,772] - str wzr, [x0,732] - bls .L1885 - str w1, [x0,752] -.L1885: + bls .L1865 + str w1, [x0, 752] +.L1865: add x0, x21, :lo12:.LANCHOR2 - ldr w1, [x0,492] - ldr w2, [x0,756] + ldr w1, [x0, 492] + ldr w2, [x0, 756] cmp w1, w2 - bls .L1886 - str w1, [x0,756] -.L1886: + bls .L1866 + str w1, [x0, 756] +.L1866: mov w0, 65535 - cmp w3, w0 - beq .L1887 + cmp w4, w0 + beq .L1867 add x0, x21, :lo12:.LANCHOR2 add x0, x0, 560 bl make_superblock -.L1887: +.L1867: add x1, x21, :lo12:.LANCHOR2 add x0, x1, 608 - ldrh w2, [x1,608] + ldrh w2, [x1, 608] mov w1, 65535 cmp w2, w1 - beq .L1888 + beq .L1868 bl make_superblock -.L1888: +.L1868: add x1, x21, :lo12:.LANCHOR2 add x0, x1, 656 - ldrh w2, [x1,656] + ldrh w2, [x1, 656] mov w1, 65535 cmp w2, w1 - beq .L1889 + beq .L1869 bl make_superblock -.L1889: +.L1869: add x21, x21, :lo12:.LANCHOR2 mov w1, 65535 add x0, x21, 800 - mov w19, 0 - ldrh w2, [x21,800] + ldrh w2, [x21, 800] cmp w2, w1 - beq .L1874 + beq .L1870 bl make_superblock -.L1874: - sub sp, x29, #16 - mov w0, w19 - 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, 144 - ret +.L1870: + mov w0, 0 + b .L1852 .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 .global FtlDumpBlockInfo .type FtlDumpBlockInfo, %function FtlDumpBlockInfo: - sub sp, sp, #176 - lsr x0, x0, 10 - stp x29, x30, [sp,16] + sub sp, sp, #160 + lsr w0, w0, 10 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x21, x22, [sp,48] - stp x19, x20, [sp,32] - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - uxtb w25, w1 + stp x19, x20, [sp, 32] + adrp x19, .LANCHOR2 + stp x23, x24, [sp, 64] + adrp x23, .LANCHOR0 + add x20, x23, :lo12:.LANCHOR0 + stp x21, x22, [sp, 48] + stp x25, x26, [sp, 80] + and w24, w1, 255 + stp x27, x28, [sp, 96] bl P2V_block_in_plane - adrp x2, .LANCHOR3 - adrp x22, .LANCHOR0 - uxth w23, w0 - add x1, x2, :lo12:.LANCHOR3 - add x19, x22, :lo12:.LANCHOR0 - adrp x0, .LC109 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 + and w22, w0, 65535 add x1, x1, 152 + ldrh w26, [x20, 2544] + adrp x0, .LC109 add x0, x0, :lo12:.LC109 - adrp x21, .LANCHOR2 - ldrh w24, [x19,2544] bl printk - add x0, x21, :lo12:.LANCHOR2 - ubfiz x2, x23, 1, 16 - mov w1, w23 - ldr x3, [x0,520] + add x1, x19, :lo12:.LANCHOR2 + ubfiz x0, x22, 1, 16 + add x25, x29, 144 + ldr x1, [x1, 520] + ldrh w2, [x1, x0] + mov w1, w22 adrp x0, .LC110 add x0, x0, :lo12:.LC110 - ldrh w2, [x3,x2] bl printk - strh w23, [x29,112] - add x0, x29, 112 - bl make_superblock - cbnz w25, .L1909 - ldrb w0, [x19,204] - cbz w0, .L1909 - mov w0, w23 - bl ftl_get_blk_mode - cmp w0, 1 - mov w23, w0 - bne .L1901 - ldrh w24, [x19,2546] - b .L1901 -.L1909: - mov w23, 0 -.L1901: - add x3, x22, :lo12:.LANCHOR0 - adrp x0, .LC111 - adrp x25, .LC112 - add x0, x0, :lo12:.LC111 - mov w1, w23 - mov w2, w24 - ldrh w3, [x3,2544] - mov w20, 0 - mov w27, 65535 - mov w28, 56 - mov w26, 4 - add x25, x25, :lo12:.LC112 - bl printk -.L1902: - add x0, x22, :lo12:.LANCHOR0 - ldrh w5, [x0,2472] - ldrh w6, [x0,2554] - ldrh w7, [x0,2556] - mov x0, 0 - mov w19, w0 -.L1903: - cmp w5, w0, uxth - bls .L1917 - add x1, x29, 112 - add x1, x1, x0, lsl 1 - ldrh w2, [x1,16] - cmp w2, w27 - beq .L1904 - add x3, x21, :lo12:.LANCHOR2 - orr w2, w20, w2, lsl 10 - umull x1, w19, w28 - ldr x4, [x3,3592] - add x4, x4, x1 - str w2, [x4,4] - ldr x2, [x3,3592] - ldr x4, [x3,1400] - add x1, x2, x1 - ldr x3, [x3,1408] - mul w2, w19, w6 - sdiv w2, w2, w26 - add x2, x4, w2, sxtw 2 - str x2, [x1,8] - mul w2, w19, w7 - add w19, w19, 1 - uxth w19, w19 - sdiv w2, w2, w26 - add x2, x3, w2, sxtw 2 - str x2, [x1,16] -.L1904: - add x0, x0, 1 - b .L1903 -.L1917: - add x0, x21, :lo12:.LANCHOR2 - mov w1, w19 - mov w2, w23 - ldr x0, [x0,3592] - bl FlashReadPages - mov x8, 0 - mov x9, 56 -.L1906: - cmp w19, w8, uxth - bls .L1918 - add x0, x21, :lo12:.LANCHOR2 - ldrh w1, [x29,112] - mul x2, x8, x9 - str x9, [x29,96] - ldr x4, [x0,3592] - str x8, [x29,104] - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] + strh w22, [x25, -48]! mov x0, x25 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] + bl make_superblock + ldrb w0, [x20, 204] + cbz w0, .L1891 + cbnz w24, .L1891 + mov w0, w22 + bl ftl_get_blk_mode + mov w22, w0 + cmp w0, 1 + bne .L1882 + ldrh w26, [x20, 2546] +.L1882: + add x0, x23, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR2 + mov w21, 0 + mov w27, 56 + mov w2, w26 + mov w1, w22 + ldrh w3, [x0, 2544] + adrp x0, .LC111 + add x0, x0, :lo12:.LC111 bl printk - ldr x8, [x29,104] - ldr x9, [x29,96] - add x8, x8, 1 - b .L1906 -.L1918: - add w20, w20, 1 - uxth w20, w20 - cmp w20, w24 - bne .L1902 -.L1908: - sub sp, x29, #16 +.L1883: + add x0, x23, :lo12:.LANCHOR0 + add x5, x25, 16 + mov w20, 0 + mov w10, 65535 + mov w6, 4 + ldrh w7, [x0, 2472] + ldrh w8, [x0, 2554] + ldrh w9, [x0, 2556] mov w0, 0 - 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 +.L1884: + cmp w0, w7 + bne .L1886 + ldr x0, [x19, 3584] + mov w1, w20 + adrp x28, .LC112 + mov w2, w22 + umull x20, w20, w27 + mov x24, 0 + add x28, x28, :lo12:.LC112 + bl FlashReadPages +.L1887: + cmp x24, x20 + bne .L1888 + add w21, w21, 1 + and w21, w21, 65535 + cmp w26, w21 + bne .L1883 +.L1889: + ldp x19, x20, [sp, 32] + mov w0, 0 + 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, 160 ret +.L1891: + mov w22, 0 + b .L1882 +.L1886: + ldrh w1, [x5] + cmp w1, w10 + beq .L1885 + umull x4, w20, w27 + ldr x3, [x19, 3584] + orr w1, w21, w1, lsl 10 + add x3, x3, x4 + str w1, [x3, 4] + mul w1, w20, w8 + ldr x2, [x19, 3584] + ldr x3, [x19, 1392] + sdiv w1, w1, w6 + add x2, x2, x4 + add x1, x3, w1, sxtw 2 + str x1, [x2, 8] + mul w1, w20, w9 + ldr x3, [x19, 1400] + add w20, w20, 1 + and w20, w20, 65535 + sdiv w1, w1, w6 + add x1, x3, w1, sxtw 2 + str x1, [x2, 16] +.L1885: + add w0, w0, 1 + add x5, x5, 2 + and w0, w0, 65535 + b .L1884 +.L1888: + ldr x8, [x19, 3584] + ldrh w1, [x29, 96] + add x2, x8, x24 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x28 + ldr w3, [x2, 4] + ldr w2, [x8, x24] + add x24, x24, 56 + bl printk + b .L1887 .size FtlDumpBlockInfo, .-FtlDumpBlockInfo .align 2 .global FtlScanAllBlock @@ -12352,615 +12144,582 @@ FtlDumpBlockInfo: FtlScanAllBlock: sub sp, sp, #144 adrp x1, .LANCHOR3 - adrp x0, .LC109 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC109 + adrp x0, .LC109 add x1, x1, 176 - stp x29, x30, [sp,16] + add x0, x0, :lo12:.LC109 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x23, x24, [sp,64] - stp x21, x22, [sp,48] - adrp x23, .LC114 - adrp x22, .LC113 - adrp x24, .LC115 - add x22, x22, :lo12:.LC113 - stp x19, x20, [sp,32] - add x23, x23, :lo12:.LC114 + stp x21, x22, [sp, 48] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 64] + add x22, x22, :lo12:.LANCHOR0 + adrp x24, .LANCHOR2 + add x21, x24, :lo12:.LANCHOR2 + stp x19, x20, [sp, 32] mov w20, 0 - add x24, x24, :lo12:.LC115 - stp x25, x26, [sp,80] + stp x25, x26, [sp, 80] bl printk -.L1920: - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x19,2482] +.L1895: + ldrh w0, [x22, 2482] cmp w0, w20 - bls .L1929 - mov w0, w20 - strh w20, [x29,80] - adrp x21, .LANCHOR2 - bl ftl_get_blk_mode - mov w3, w0 - add x0, x21, :lo12:.LANCHOR2 - ubfiz x2, x20, 1, 16 - mov w1, w20 - ldr x4, [x0,520] - mov x0, x22 - ldrh w2, [x4,x2] - bl printk - add x0, x29, 80 - bl make_superblock - mov x1, 0 - ldrh w6, [x19,2472] - ldrh w7, [x19,2554] - mov w9, 65535 - ldrh w8, [x19,2556] - mov w10, 56 - mov w19, w1 - mov w5, 4 -.L1921: - cmp w6, w1, uxth - bls .L1930 - add x0, x29, 80 - add x0, x0, x1, lsl 1 - ldrh w2, [x0,16] - cmp w2, w9 - beq .L1922 - add x3, x21, :lo12:.LANCHOR2 - lsl w2, w2, 10 - umull x0, w19, w10 - ldr x4, [x3,3592] - add x4, x4, x0 - str w2, [x4,4] - ldr x2, [x3,3592] - ldr x4, [x3,1400] - add x2, x2, x0 - ldr x3, [x3,1408] - mul w0, w19, w7 - sdiv w0, w0, w5 - add x0, x4, w0, sxtw 2 - str x0, [x2,8] - mul w0, w19, w8 - add w19, w19, 1 - uxth w19, w19 - sdiv w0, w0, w5 - add x0, x3, w0, sxtw 2 - str x0, [x2,16] -.L1922: - add x1, x1, 1 - b .L1921 -.L1930: - add x0, x21, :lo12:.LANCHOR2 - mov w1, w19 - mov w2, 0 - mov x25, 0 - mov x26, 56 - ldr x0, [x0,3592] - bl FlashReadPages -.L1924: - add x0, x21, :lo12:.LANCHOR2 - cmp w19, w25, uxth - bls .L1931 - ldr x4, [x0,3592] - mul x2, x25, x26 - ldrh w1, [x29,80] - add x25, x25, 1 - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x23 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] - bl printk - b .L1924 -.L1931: - ldr x0, [x0,3592] - mov w1, w19 - mov w2, 1 - mov x25, 0 - mov x26, 56 - bl FlashReadPages -.L1926: - cmp w19, w25, uxth - bls .L1932 - add x0, x21, :lo12:.LANCHOR2 - ldrh w1, [x29,80] - mul x2, x25, x26 - add x25, x25, 1 - ldr x4, [x0,3592] - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x24 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] - bl printk - b .L1926 -.L1932: - add w20, w20, 1 - uxth w20, w20 - b .L1920 -.L1929: - sub sp, x29, #16 + bhi .L1903 + ldp x19, x20, [sp, 32] mov w0, 0 - ldp x19, x20, [sp,32] - ldp x21, x22, [sp,48] - ldp x23, x24, [sp,64] - ldp x25, x26, [sp,80] - ldp x29, x30, [sp,16] + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x25, x26, [sp, 80] + ldp x29, x30, [sp, 16] add sp, sp, 144 ret +.L1903: + add x19, x29, 128 + mov w0, w20 + strh w20, [x19, -48]! + bl ftl_get_blk_mode + add x2, x24, :lo12:.LANCHOR2 + ubfiz x1, x20, 1, 16 + mov w3, w0 + adrp x0, .LC113 + add x0, x0, :lo12:.LC113 + ldr x2, [x2, 520] + ldrh w2, [x2, x1] + mov w1, w20 + bl printk + mov x0, x19 + bl make_superblock + ldrh w7, [x22, 2472] + add x0, x19, 16 + ldrh w8, [x22, 2554] + mov w19, 0 + ldrh w9, [x22, 2556] + mov w1, 0 + mov w10, 65535 + mov w11, 56 + mov w5, 4 +.L1896: + cmp w1, w7 + bne .L1898 + ldr x0, [x21, 3584] + mov w25, 56 + adrp x26, .LC114 + mov w2, 0 + mov w1, w19 + umull x25, w19, w25 + mov x23, 0 + add x26, x26, :lo12:.LC114 + bl FlashReadPages +.L1899: + cmp x23, x25 + bne .L1900 + ldr x0, [x21, 3584] + mov w1, w19 + adrp x25, .LC115 + mov w2, 1 + mov x19, 0 + add x25, x25, :lo12:.LC115 + bl FlashReadPages +.L1901: + cmp x23, x19 + bne .L1902 + add w20, w20, 1 + and w20, w20, 65535 + b .L1895 +.L1898: + ldrh w2, [x0] + cmp w2, w10 + beq .L1897 + umull x6, w19, w11 + ldr x4, [x21, 3584] + lsl w2, w2, 10 + add x4, x4, x6 + str w2, [x4, 4] + mul w2, w19, w8 + ldr x3, [x21, 3584] + ldr x4, [x21, 1392] + sdiv w2, w2, w5 + add x3, x3, x6 + add x2, x4, w2, sxtw 2 + str x2, [x3, 8] + mul w2, w19, w9 + ldr x4, [x21, 1400] + add w19, w19, 1 + and w19, w19, 65535 + sdiv w2, w2, w5 + add x2, x4, w2, sxtw 2 + str x2, [x3, 16] +.L1897: + add w1, w1, 1 + add x0, x0, 2 + and w1, w1, 65535 + b .L1896 +.L1900: + ldr x8, [x21, 3584] + ldrh w1, [x29, 80] + add x2, x8, x23 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x26 + ldr w3, [x2, 4] + ldr w2, [x8, x23] + add x23, x23, 56 + bl printk + b .L1899 +.L1902: + ldr x8, [x21, 3584] + ldrh w1, [x29, 80] + add x2, x8, x19 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x25 + ldr w3, [x2, 4] + ldr w2, [x8, x19] + add x19, x19, 56 + bl printk + b .L1901 .size FtlScanAllBlock, .-FtlScanAllBlock .align 2 .global ftl_scan_all_ppa .type ftl_scan_all_ppa, %function ftl_scan_all_ppa: sub sp, sp, #96 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] + stp x19, x20, [sp, 32] adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + stp x25, x26, [sp, 80] adrp x19, .LANCHOR4 - add x0, x20, :lo12:.LANCHOR0 add x19, x19, :lo12:.LANCHOR4 - stp x23, x24, [sp,64] - stp x21, x22, [sp,48] - stp x25, x26, [sp,80] - adrp x23, .LC116 - add x19, x19, 1704 - ldrh w26, [x0,2542] - add x23, x23, :lo12:.LC116 + add x19, x19, 1712 + stp x21, x22, [sp, 48] + ldrh w26, [x20, 2542] + stp x23, x24, [sp, 64] sub w26, w26, #16 -.L1934: - add x21, x20, :lo12:.LANCHOR0 - ldrh w0, [x21,2542] + lsl w25, w26, 10 +.L1906: + ldrh w0, [x20, 2542] cmp w26, w0 - bge .L1949 - uxth w22, w26 - mov w0, w22 - bl ftl_get_blk_mode - ldrb w1, [x21,204] - cbz w1, .L1935 - ldrh w1, [x21,2480] - cmp w26, w1 - bge .L1936 - ldrh w1, [x21,2558] - cmp w26, w1 - blt .L1936 -.L1935: - cmp w0, 1 - bne .L1937 -.L1936: - add x0, x20, :lo12:.LANCHOR0 - mov w21, -2147483648 - ldrh w24, [x0,2546] - b .L1938 -.L1937: - add x0, x20, :lo12:.LANCHOR0 - mov w21, 0 - ldrh w24, [x0,2544] -.L1938: - mov x0, x23 - mov w1, w26 - mov w2, w24 - mov w3, w21 - bl printk - mov w0, w22 - bl FtlBbmIsBadBlock - cbz w0, .L1939 - adrp x0, .LC117 - mov w1, w26 - add x0, x0, :lo12:.LC117 - mov w2, w24 - mov w3, w21 - bl printk -.L1939: - adrp x25, .LC118 - mov w22, 0 - add w21, w21, w26, lsl 10 - add x25, x25, :lo12:.LC118 -.L1940: - cmp w22, w24 - beq .L1950 - adrp x3, .LANCHOR2 - add w0, w21, w22 - add x3, x3, :lo12:.LANCHOR2 - str w0, [x19,4] - mov w1, 1 - mov w2, 0 - str wzr, [x19] - add w22, w22, 1 - ldr x0, [x3,3616] - str x0, [x19,8] - ldr x0, [x3,3664] - str x0, [x19,16] - mov x0, x19 - bl FlashReadPages - ldr x7, [x19,8] - ldr x6, [x19,16] - ldr w0, [x7,4] - str w0, [sp] - mov x0, x25 - 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 .L1940 -.L1950: - add w26, w26, 1 - b .L1934 -.L1949: + blt .L1914 adrp x1, .LANCHOR3 - adrp x0, .LC119 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC119 add x1, x1, 192 + adrp x0, .LC119 + add x0, x0, :lo12:.LC119 bl printk - 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 x29, x30, [sp,16] + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x25, x26, [sp, 80] + ldp x29, x30, [sp, 16] add sp, sp, 96 ret +.L1914: + and w21, w26, 65535 + mov w0, w21 + bl ftl_get_blk_mode + ldrb w1, [x20, 204] + cbz w1, .L1907 + ldrh w1, [x20, 2480] + cmp w26, w1 + bge .L1908 + ldrh w1, [x20, 2558] + cmp w26, w1 + blt .L1908 +.L1907: + cmp w0, 1 + bne .L1909 +.L1908: + ldrh w23, [x20, 2546] + mov w24, -2147483648 +.L1910: + mov w3, w24 + mov w2, w23 + mov w1, w26 + adrp x0, .LC116 + add x0, x0, :lo12:.LC116 + bl printk + mov w0, w21 + bl FtlBbmIsBadBlock + cbz w0, .L1911 + adrp x0, .LC117 + mov w3, w24 + mov w2, w23 + mov w1, w26 + add x0, x0, :lo12:.LC117 + bl printk +.L1911: + adrp x22, .LANCHOR2 + add x22, x22, :lo12:.LANCHOR2 + mov w21, 0 +.L1912: + cmp w21, w23 + bne .L1913 + add w26, w26, 1 + add w25, w25, 1024 + b .L1906 +.L1909: + ldrh w23, [x20, 2544] + mov w24, 0 + b .L1910 +.L1913: + add w0, w24, w25 + mov w2, 0 + add w0, w0, w21 + stp wzr, w0, [x19] + ldr x0, [x22, 3608] + mov w1, 1 + str x0, [x19, 8] + add w21, w21, 1 + ldr x0, [x22, 3656] + str x0, [x19, 16] + mov x0, x19 + bl FlashReadPages + ldp x1, x0, [x19, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] + adrp x0, .LC118 + ldr w7, [x1] + add x0, x0, :lo12:.LC118 + ldp w2, w1, [x19] + bl printk + b .L1912 .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 2 .global FlashProgPages .type FlashProgPages, %function FlashProgPages: - stp x29, x30, [sp, -192]! - adrp x6, .LANCHOR1+481 + stp x29, x30, [sp, -176]! + adrp x4, .LANCHOR0 add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR0 - ldrb w6, [x6,#:lo12:.LANCHOR1+481] - add x4, x21, :lo12:.LANCHOR0 - str w3, [x29,120] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - str w6, [x29,124] + stp x21, x22, [sp, 32] + add x21, x4, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + str x4, [x29, 96] + ldr x5, [x21, 88] + ldrb w6, [x21, 72] + str w3, [x29, 108] + ldrb w5, [x5, 19] + cbnz w6, .L1923 mov x19, x0 - ldr x5, [x4,88] + adrp x0, .LANCHOR1+481 mov w25, w1 - ldrb w4, [x4,72] mov w23, w2 + add x27, x21, 2164 + ldrb w28, [x0, #:lo12:.LANCHOR1+481] mov w22, 0 - ldrb w5, [x5,19] - cbz w4, .L1952 - bl FlashProgSlc2KPages - b .L1953 -.L1952: sub w0, w5, #1 - mov w27, 56 - mov x28, 24 - str w0, [x29,116] -.L2003: + str w0, [x29, 104] +.L1924: cmp w22, w25 - bcs .L2004 - umull x20, w22, w27 + bcc .L1937 + ldr x0, [x29, 96] + mov x20, 0 + mov x24, 24 + add x21, x0, :lo12:.LANCHOR0 + add x22, x21, 2164 +.L1938: + ldrb w0, [x21, 2358] + cmp w0, w20 + bhi .L1940 + ldr w0, [x29, 108] + cbnz w0, .L1941 +.L1949: + mov w0, 0 + b .L1922 +.L1923: + bl FlashProgSlc2KPages +.L1922: + 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 + ret +.L1937: + mov w12, 56 mov w1, w23 - add x2, x29, 128 - add x26, x19, x20 sub w4, w25, w22 + add x3, x29, 116 + umull x12, w22, w12 + add x2, x29, 112 + add x26, x19, x12 mov x0, x26 - add x3, x29, 132 bl LogAddr2PhyAddr mov w24, w0 - add x1, x21, :lo12:.LANCHOR0 - ldr w0, [x29,132] - ldrb w2, [x1,2358] - cmp w0, w2 - bcc .L1954 + ldrb w1, [x21, 2358] + ldr w0, [x29, 116] + cmp w1, w0 + bhi .L1926 mov w0, -1 - str w0, [x19,x20] - b .L1955 -.L1954: - ldrb w2, [x1,2368] - add x1, x1, 2164 - cmp w2, wzr - uxtw x2, w0 + str w0, [x19, x12] +.L1927: + add w22, w22, 1 + b .L1924 +.L1926: + ldrb w1, [x21, 2368] + mov x2, 24 + cmp w1, 0 + uxtw x1, w0 csel w24, w24, wzr, ne - madd x1, x2, x28, x1 - ldr x1, [x1,8] - cbz x1, .L1957 + madd x1, x1, x2, x27 + ldr x1, [x1, 8] + cbz x1, .L1929 bl FlashWaitCmdDone -.L1957: - add x0, x21, :lo12:.LANCHOR0 - ldr w2, [x29,132] - add x0, x0, 2164 - ldr w1, [x29,128] - madd x0, x2, x28, x0 - str x26, [x0,8] - str xzr, [x0,16] - str w1, [x0,4] - cbz w24, .L1958 - add w1, w22, 1 - umull x1, w1, w27 - add x1, x19, x1 - str x1, [x0,16] -.L1958: - add x1, x21, :lo12:.LANCHOR0 - add x0, x1, x2 - madd x2, x2, x28, x1 - ldrb w20, [x0,2360] - ldrb w0, [x1,2358] - strb w20, [x2,2164] +.L1929: + ldp w2, w1, [x29, 112] + mov x0, 24 + madd x0, x1, x0, x27 + str w2, [x0, 4] + stp x26, xzr, [x0, 8] + cbz w24, .L1930 + add w2, w22, 1 + mov w3, 56 + umaddl x2, w2, w3, x19 + str x2, [x0, 16] +.L1930: + add x0, x21, x1 + ldrb w20, [x0, 2360] + mov x0, 24 + mul x1, x1, x0 + ldrb w0, [x21, 2358] cmp w0, 1 - bne .L1959 mov w0, w20 + strb w20, [x27, x1] + bne .L1931 bl NandcWaitFlashReady - b .L1960 -.L1959: - mov w0, w20 - str x1, [x29,104] - bl NandcFlashCs - ldr x1, [x29,104] - ldr w0, [x29,132] - add x1, x1, 1232 - ldr w0, [x1,x0,lsl 2] - ldr w1, [x29,128] - cmp w0, wzr - mov w0, w20 - cset w2, ne - bl FlashWaitReadyEN - mov w0, w20 - bl NandcFlashDeCs -.L1960: - ldr w0, [x29,116] +.L1932: + ldr w0, [x29, 104] cmp w0, 7 - bhi .L1961 - add x2, x21, :lo12:.LANCHOR0 - add x0, x2, w20, sxtw - ldrb w0, [x0,2128] - cbz w0, .L1961 - ldrb w1, [x2,1273] - mov w0, w20 - add x2, x2, 1276 + bhi .L1933 + add x0, x21, w20, sxtw + ldrb w0, [x0, 2128] + cbz w0, .L1933 + ldrb w1, [x21, 1273] mov w3, 0 + add x2, x21, 1276 + mov w0, w20 bl HynixSetRRPara -.L1961: +.L1933: mov w0, w20 bl NandcFlashCs cmp w23, 1 - bne .L1962 - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L1962 + bne .L1934 + ldrb w0, [x21, 204] + cbz w0, .L1934 mov w0, w20 bl flash_enter_slc_mode - b .L1963 -.L1962: - mov w0, w20 - bl flash_exit_slc_mode -.L1963: - ldr w1, [x29,128] +.L1935: + ldr w1, [x29, 112] mov w0, w20 bl FlashProgFirstCmd - ldrb w2, [x29,124] - mov w0, w20 - ldr x3, [x26,8] + ldp x3, x4, [x26, 8] + mov w2, w28 mov w1, 1 - ldr x4, [x26,16] - bl NandcXferData - cbz w24, .L1964 - ldr w1, [x29,128] mov w0, w20 - add x26, x21, :lo12:.LANCHOR0 + bl NandcXferData + cbz w24, .L1936 + ldr w1, [x29, 112] + mov w0, w20 bl FlashProgDpFirstCmd - ldr w1, [x29,132] - add x0, x26, 1232 - ldr w0, [x0,x1,lsl 2] - ldr w1, [x29,128] - cmp w0, wzr + ldr w1, [x29, 116] + add x0, x21, 1232 + ldr w0, [x0, x1, lsl 2] + ldr w1, [x29, 112] + cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN - ldr w2, [x26,76] + ldr w0, [x21, 76] + ldr w1, [x29, 112] + add w1, w1, w0 mov w0, w20 - ldr w1, [x29,128] - add w1, w2, w1 bl FlashProgDpSecondCmd - add w4, w22, 1 - ldrb w2, [x29,124] - mov w0, w20 + add w0, w22, 1 + mov w1, 56 + mov w2, w28 + umaddl x0, w0, w1, x19 mov w1, 1 - umull x4, w4, w27 - add x4, x19, x4 - ldr x3, [x4,8] - ldr x4, [x4,16] + ldp x3, x4, [x0, 8] + mov w0, w20 bl NandcXferData -.L1964: - ldr w1, [x29,128] +.L1936: + ldr w1, [x29, 112] mov w0, w20 add w22, w22, w24 bl FlashProgSecondCmd mov w0, w20 bl NandcFlashDeCs -.L1955: - add w22, w22, 1 - b .L2003 -.L2004: - add x21, x21, :lo12:.LANCHOR0 - mov x20, 0 - add x22, x21, 2164 - mov x24, 24 -.L1966: - ldrb w0, [x21,2358] - cmp w0, w20 - bls .L2005 + b .L1927 +.L1931: + bl NandcFlashCs + ldr w1, [x29, 116] + add x0, x21, 1232 + ldr w0, [x0, x1, lsl 2] + ldr w1, [x29, 112] + cmp w0, 0 + mov w0, w20 + cset w2, ne + bl FlashWaitReadyEN + mov w0, w20 + bl NandcFlashDeCs + b .L1932 +.L1934: + mov w0, w20 + bl flash_exit_slc_mode + b .L1935 +.L1940: mov w0, w20 bl FlashWaitCmdDone cmp w23, 1 - bne .L1967 - ldrb w0, [x21,204] - cbz w0, .L1967 + bne .L1939 + ldrb w0, [x21, 204] + cbz w0, .L1939 mul x0, x20, x24 - ldrb w0, [x0,x22] + ldrb w0, [x0, x22] bl flash_exit_slc_mode -.L1967: +.L1939: add x20, x20, 1 - b .L1966 -.L2005: - ldr w0, [x29,120] - cbnz w0, .L1969 -.L1977: - mov w0, 0 - b .L1953 -.L1969: - adrp x24, .LC107 - adrp x26, .LC106 - adrp x27, .LC104 - mov w21, 0 - add x24, x24, :lo12:.LC107 - add x26, x26, :lo12:.LC106 - add x27, x27, :lo12:.LC104 -.L1970: - cmp w21, w25 - beq .L1977 + b .L1938 +.L1941: + mov w0, 56 + and w20, w25, 255 + adrp x22, .LANCHOR4 + add x24, x22, :lo12:.LANCHOR4 + umaddl x25, w25, w0, x19 +.L1942: + cmp x25, x19 + beq .L1949 ldr w0, [x19] cmn w0, #1 - bne .L1971 + bne .L1943 + ldr w1, [x19, 4] adrp x0, .LC103 - ldr w1, [x19,4] add x0, x0, :lo12:.LC103 bl printk - b .L1972 -.L1971: - adrp x20, .LANCHOR4 - sub w4, w25, w21 - add x22, x20, :lo12:.LANCHOR4 - add x3, x29, 132 +.L1944: + sub w20, w20, #1 + add x19, x19, 56 + and w20, w20, 255 + b .L1942 +.L1943: + add x21, x22, :lo12:.LANCHOR4 + mov w4, w20 + add x3, x29, 116 + add x2, x29, 112 mov w1, w23 - add x2, x29, 128 mov x0, x19 bl LogAddr2PhyAddr - ldr x0, [x22,1664] - mov x1, x19 + ldr x0, [x21, 1672] mov x2, 56 + mov x1, x19 str wzr, [x0] - ldr x0, [x22,1672] + ldr x0, [x21, 1680] str wzr, [x0] - add x0, x29, 136 + add x0, x29, 120 bl memcpy - ldr x0, [x22,1664] - mov w1, 1 - str x0, [x29,144] + ldr x0, [x21, 1672] mov w2, w23 - ldr x0, [x22,1672] - str x0, [x29,152] - add x0, x29, 136 + str x0, [x29, 128] + mov w1, 1 + ldr x0, [x21, 1680] + str x0, [x29, 136] + add x0, x29, 120 bl FlashReadPages - ldr w22, [x29,136] - cmn w22, #1 - bne .L1973 - ldr w1, [x19,4] - mov x0, x27 + ldr w21, [x29, 120] + cmn w21, #1 + bne .L1945 + ldr w1, [x19, 4] + adrp x0, .LC104 + add x0, x0, :lo12:.LC104 bl printk - str w22, [x19] -.L1973: - ldr x0, [x19,16] - cbz x0, .L1974 + str w21, [x19] +.L1945: + ldr x0, [x19, 16] + cbz x0, .L1946 ldr w2, [x0] - add x0, x20, :lo12:.LANCHOR4 - ldr x0, [x0,1672] + ldr x0, [x24, 1680] ldr w3, [x0] cmp w2, w3 - beq .L1974 - ldr w1, [x19,4] - mov x0, x26 + beq .L1946 + ldr w1, [x19, 4] + adrp x0, .LC106 + add x0, x0, :lo12:.LC106 bl printk mov w0, -1 str w0, [x19] -.L1974: - ldr x0, [x19,8] - cbz x0, .L1972 - add x20, x20, :lo12:.LANCHOR4 +.L1946: + ldr x0, [x19, 8] + cbz x0, .L1944 ldr w2, [x0] - ldr x0, [x20,1664] + ldr x0, [x24, 1672] ldr w3, [x0] cmp w2, w3 - beq .L1972 - ldr w1, [x19,4] - mov x0, x24 + beq .L1944 + ldr w1, [x19, 4] + adrp x0, .LC107 + add x0, x0, :lo12:.LC107 bl printk mov w0, -1 str w0, [x19] -.L1972: - add w21, w21, 1 - add x19, x19, 56 - b .L1970 -.L1953: - 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], 192 - ret + b .L1944 .size FlashProgPages, .-FlashProgPages .align 2 .type FlashTestBlk.part.18, %function FlashTestBlk.part.18: stp x29, x30, [sp, -160]! - mov w1, 165 mov w2, 32 + mov w1, 165 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR4 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR4 + and w20, w0, 65535 lsl w20, w20, 10 - ldr x0, [x19,1648] - str x0, [x29,48] + ldr x0, [x19, 1656] + str x0, [x29, 48] add x0, x29, 96 - str x0, [x29,56] + str x0, [x29, 56] bl ftl_memset - ldr x0, [x19,1648] - mov w1, 90 + ldr x0, [x19, 1656] mov w2, 8 + mov w1, 90 bl ftl_memset - str w20, [x29,44] - mov w1, 1 - add x0, x29, 40 - mov w2, w1 - bl FlashEraseBlocks - mov w1, 1 - add x0, x29, 40 - mov w3, w1 - mov w2, w1 - bl FlashProgPages - ldr w0, [x29,40] - mov w1, 0 + str w20, [x29, 44] mov w2, 1 - cmp w0, wzr + add x0, x29, 40 + mov w1, w2 + bl FlashEraseBlocks + mov w3, 1 + add x0, x29, 40 + mov w2, w3 + mov w1, w3 + bl FlashProgPages + ldr w0, [x29, 40] + mov w2, 1 + mov w1, 0 + cmp w0, 0 add x0, x29, 40 csetm w19, ne bl FlashEraseBlocks mov w0, w19 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 160 ret .size FlashTestBlk.part.18, .-FlashTestBlk.part.18 @@ -12968,626 +12727,596 @@ FlashTestBlk.part.18: .global FlashTestBlk .type FlashTestBlk, %function FlashTestBlk: - uxth w1, w0 - adrp x0, .LANCHOR4+1636 + adrp x1, .LANCHOR4+1644 + and w0, w0, 65535 + ldr w1, [x1, #:lo12:.LANCHOR4+1644] + cmp w0, w1 + bcc .L1979 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w2, [x0,#:lo12:.LANCHOR4+1636] - mov w0, 0 - cmp w1, w2 - bcc .L2008 - mov w0, w1 bl FlashTestBlk.part.18 -.L2008: ldp x29, x30, [sp], 16 ret +.L1979: + mov w0, 0 + ret .size FlashTestBlk, .-FlashTestBlk .align 2 .global FlashMakeFactorBbt .type FlashMakeFactorBbt, %function FlashMakeFactorBbt: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -240]! + adrp x1, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR4 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR4 + add x0, x21, :lo12:.LANCHOR4 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] mov w19, 0 - add x0, x20, :lo12:.LANCHOR4 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x21, .LANCHOR0 - ldr x0, [x0,1656] - str x0, [x29,136] - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0,188] - ldrh w23, [x0,190] - ldrh w26, [x0,76] - mul w23, w1, w23 - ldr x1, [x0,88] - ldrb w0, [x0,72] - uxth w23, w23 - ldrb w1, [x1,24] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x0, [x0, 1664] + stp x0, x1, [x29, 152] + add x0, x1, :lo12:.LANCHOR0 + ldrh w2, [x0, 188] + ldrh w22, [x0, 190] + mul w22, w22, w2 + ldr x2, [x0, 88] + and w22, w22, 65535 + ldrb w2, [x2, 24] + str w2, [x29, 128] + ldrh w2, [x0, 76] + ldrb w0, [x0, 72] + uxtw x1, w2 cmp w0, 1 - str w1, [x29,132] - adrp x0, .LC120 - ubfiz w1, w26, 1, 15 - add x0, x0, :lo12:.LC120 - csel w26, w1, w26, eq + ubfiz w2, w2, 1, 15 + csel w0, w2, w1, eq mov w1, 1 + str w0, [x29, 168] + adrp x0, .LC120 + add x0, x0, :lo12:.LC120 bl printk - add x0, x20, :lo12:.LANCHOR4 - mov w1, 0 + add x0, x21, :lo12:.LANCHOR4 mov w2, 4096 - ldr x0, [x0,1656] + mov w1, 0 + ldr x0, [x0, 1664] bl ftl_memset - lsr w0, w23, 4 - 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] -.L2012: - add x24, x21, :lo12:.LANCHOR0 - ldrb w0, [x24,2358] + lsr w0, w22, 4 + str w0, [x29, 148] + sub w0, w22, #1 + and w0, w0, 65535 + str w0, [x29, 144] + adrp x0, .LC123 + add x0, x0, :lo12:.LC123 + str x0, [x29, 104] +.L1986: + ldr x0, [x29, 160] + add x20, x0, :lo12:.LANCHOR0 + ldrb w0, [x20, 2358] cmp w0, w19 - bls .L2062 - add x0, x20, :lo12:.LANCHOR4 - sxtw x25, w19 - add x1, x0, 1688 - ldrh w22, [x1,w19,sxtw 1] - cbnz w22, .L2042 - ldrh w2, [x24,196] - mov w1, w22 - ldr x0, [x0,1600] - add x24, x24, x25 + bhi .L2013 + 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 +.L2013: + add x0, x21, :lo12:.LANCHOR4 + sxtw x24, w19 + add x1, x0, 1696 + ldrh w1, [x1, x24, lsl 1] + str w1, [x29, 172] + cbnz w1, .L1987 + ldr x0, [x0, 1608] + add x28, x20, 1232 + ldrh w2, [x20, 196] + mov w23, 0 + mov w25, 0 + mov w26, 0 lsl w2, w2, 9 - mov w27, w22 bl ftl_memset - ldrb w28, [x24,2360] - ldr w0, [x29,132] - mov w24, w22 - and w0, w0, 4 - uxtb w0, w0 - str w0, [x29,120] -.L2014: - uxth w0, w27 - str w0, [x29,144] - cmp w0, w23 - bcs .L2024 - mov w0, -1 - strb w0, [x29,166] - strb w0, [x29,167] - ldr w0, [x29,116] - cbz w0, .L2016 - add x4, x21, :lo12:.LANCHOR0 - add x2, x29, 166 - add x0, x4, 1232 - 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 - ldr x4, [x29,96] - ldr x3, [x29,104] - ldrb w0, [x4,72] - cmp w0, 1 - bne .L2016 - ldr w1, [x4,76] - mov w0, w28 - add x2, x29, 167 - add w1, w3, w1 - bl FlashReadSpare - ldrb w0, [x29,166] - ldrb w1, [x29,167] - and w0, w1, w0 - strb w0, [x29,166] -.L2016: - ldr w0, [x29,112] - cbz w0, .L2018 - add x0, x21, :lo12:.LANCHOR0 - add x2, x29, 167 - ldr x1, [x0,88] - add x0, x0, 1232 - ldrh w1, [x1,10] - ldr w0, [x0,x25,lsl 2] - sub w1, w1, #1 - add w1, w1, w0 - mov w0, w28 - add w1, w1, w22 - bl FlashReadSpare -.L2018: - add x0, x21, :lo12:.LANCHOR0 - ldrb w1, [x29,166] - ldr x0, [x0,88] - ldrb w2, [x0,7] - cmp w2, 8 - beq .L2019 - cmp w2, 1 - beq .L2019 - ldrb w0, [x0,18] - cmp w0, 12 - bne .L2020 -.L2019: - mov w0, 1 - cbz w1, .L2021 - ldrb w0, [x29,167] - cmp w0, wzr - cset w0, eq - b .L2021 -.L2020: - cmp w1, 255 - mov w0, 1 - bne .L2021 - ldrb w0, [x29,167] - cmp w0, 255 - cset w0, ne -.L2021: - ldr w1, [x29,120] - cbz w1, .L2022 - add x0, x21, :lo12:.LANCHOR0 - add x0, x0, 1232 - ldr w1, [x0,x25,lsl 2] - mov w0, w28 - add w1, w22, w1 - bl SandiskProgTestBadBlock -.L2022: - cbz w0, .L2023 - adrp x0, .LC121 + add x0, x20, x24 + ldrb w27, [x0, 2360] + ldr w0, [x29, 128] + and w0, w0, 1 + str w0, [x29, 100] +.L1988: + and w0, w26, 65535 + str w0, [x29, 112] + cmp w0, w22 + bcc .L1999 +.L1998: + mov w2, w23 mov w1, w19 - mov w2, w27 - add x0, x0, :lo12:.LC121 - add w24, w24, 1 - bl printk - add x0, x20, :lo12:.LANCHOR4 - ldr x1, [x29,144] - ldrb w3, [x29,144] - uxth w24, w24 - ubfx x1, x1, 5, 11 - lsl x1, x1, 2 - ldr x2, [x0,1600] - mov w0, 1 - lsl w0, w0, w3 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x29,128] - ldrb w0, [x0,2358] - mul w0, w1, w0 - cmp w24, w0 - bgt .L2024 -.L2023: - add w27, w27, 1 - add w22, w22, w26 - b .L2014 -.L2024: adrp x0, .LC122 - mov w1, w19 - mov w2, w24 add x0, x0, :lo12:.LC122 bl printk - add x1, x21, :lo12:.LANCHOR0 - ldr w2, [x29,128] - ldrb w0, [x1,2358] - mul w0, w2, w0 - cmp w24, w0 - blt .L2026 - add x0, x20, :lo12:.LANCHOR4 - ldrh w2, [x1,196] + ldr x0, [x29, 160] + ldr w2, [x29, 148] + add x1, x0, :lo12:.LANCHOR0 + ldrb w0, [x1, 2358] + mul w0, w0, w2 + cmp w23, w0 + blt .L2000 + add x0, x21, :lo12:.LANCHOR4 + ldrh w2, [x1, 196] mov w1, 0 + ldr x0, [x0, 1608] lsl w2, w2, 9 - ldr x0, [x0,1600] bl ftl_memset -.L2026: - cbnz w19, .L2028 - add x0, x20, :lo12:.LANCHOR4 - adrp x27, .LC123 - mov w22, w19 - add x27, x27, :lo12:.LC123 - mov w24, 1 - ldrh w28, [x0,1636] -.L2029: - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,73] - cmp w0, w28 - bls .L2063 - mov w0, w28 - bl FlashTestBlk - cbz w0, .L2030 - mov w1, w28 - mov x0, x27 - add w22, w22, 1 - bl printk - add x0, x20, :lo12:.LANCHOR4 - ubfx x1, x28, 5, 11 - lsl x1, x1, 2 - uxth w22, w22 - ldr x2, [x0,1600] - lsl w0, w24, w28 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] -.L2030: - add w28, w28, 1 - uxth w28, w28 - b .L2029 -.L2063: - adrp x27, .LC123 - ldr w24, [x29,124] - sub w28, w23, #50 - add x27, x27, :lo12:.LC123 -.L2032: - cmp w24, w28 - ble .L2064 - mov w0, w24 - bl FlashTestBlk - cbz w0, .L2033 - mov w1, w24 - mov x0, x27 - bl printk - add x0, x20, :lo12:.LANCHOR4 - ubfx x1, x24, 5, 11 - lsl x1, x1, 2 - ldr x3, [x0,1600] - mov w0, 1 - lsl w0, w0, w24 - ldr w4, [x3,x1] - orr w0, w4, w0 - str w0, [x3,x1] -.L2033: - sub w2, w24, #1 - uxth w24, w2 - b .L2032 -.L2064: - add x2, x21, :lo12:.LANCHOR0 - add x1, x20, :lo12:.LANCHOR4 - ldrb w0, [x2,73] - ldr w3, [x1,1636] - sub w0, w0, w3 - cmp w22, w0 - bcc .L2028 - ldrh w2, [x2,196] - ldr x0, [x1,1600] +.L2000: + cbnz w19, .L2002 + add x20, x21, :lo12:.LANCHOR4 + ldr x0, [x29, 160] + mov w23, 1 + add x25, x0, :lo12:.LANCHOR0 + ldrh w26, [x20, 1644] +.L2003: + ldrb w0, [x25, 73] + cmp w0, w26 + bhi .L2005 + ldr w26, [x29, 144] + sub w25, w22, #50 + add x20, x21, :lo12:.LANCHOR4 + mov w23, 1 +.L2006: + cmp w26, w25 + bgt .L2008 + ldr x0, [x29, 160] + add x3, x21, :lo12:.LANCHOR4 + add x1, x0, :lo12:.LANCHOR0 + ldr w2, [x3, 1644] + ldrb w0, [x1, 73] + sub w0, w0, w2 + ldr w2, [x29, 172] + cmp w2, w0 + bcc .L2002 + ldr x0, [x3, 1608] + ldrh w2, [x1, 196] mov w1, 0 lsl w2, w2, 9 bl ftl_memset -.L2028: - adrp x24, .LC124 - ldr w28, [x29,124] - mul w27, w19, w23 - add x24, x24, :lo12:.LC124 - mov w22, -3872 -.L2036: - mov w2, w28 - mov x0, x24 +.L2002: + add x27, x21, :lo12:.LANCHOR4 + mul w25, w19, w22 + ldr w26, [x29, 144] + adrp x23, .LC124 + add x20, x27, 1696 + add x23, x23, :lo12:.LC124 +.L2010: mov w1, w19 + mov w2, w26 + mov x0, x23 bl printk - add x0, x20, :lo12:.LANCHOR4 - ldr x2, [x0,1600] -.L2037: - ubfx x0, x28, 5, 11 - ldr w0, [x2,x0,lsl 2] - lsr w0, w0, w28 - and w1, w0, 1 - tbz x0, 0, .L2065 - sub w28, w28, #1 - uxth w28, w28 - b .L2037 -.L2065: - add x0, x20, :lo12:.LANCHOR4 - add x2, x0, 1688 - strh w28, [x2,x25,lsl 1] - ldr x2, [x29,136] - strh w22, [x2] - strh w28, [x2,2] - strh w1, [x2,8] - ldr x1, [x0,1600] - ldr x0, [x0,1656] - str x0, [x29,184] - add w0, w28, w27 - str x1, [x29,176] + ldr x1, [x27, 1608] +.L2011: + ubfx x0, x26, 5, 11 + ldr w0, [x1, x0, lsl 2] + lsr w0, w0, w26 + tbnz x0, 0, .L2012 + ldr x1, [x29, 152] + mov w0, -3872 + strh w26, [x20, x24, lsl 1] + mov w2, 1 + strh w0, [x1] + strh w26, [x1, 2] + strh wzr, [x1, 8] + mov w1, w2 + ldr x0, [x27, 1608] + str x0, [x29, 192] + ldr x0, [x27, 1664] + str x0, [x29, 200] + add w0, w26, w25 lsl w0, w0, 10 - mov w1, 1 - str w0, [x29,172] - mov w2, w1 - add x0, x29, 168 + str w0, [x29, 188] + add x0, x29, 184 bl FlashEraseBlocks - mov w1, 1 - add x0, x29, 168 - mov w2, w1 - mov w3, w1 + mov w3, 1 + add x0, x29, 184 + mov w2, w3 + mov w1, w3 bl FlashProgPages - ldr w0, [x29,168] - cbz w0, .L2042 - sub w28, w28, #1 - uxth w28, w28 - b .L2036 -.L2042: + ldr w0, [x29, 184] + cbz w0, .L1987 + sub w26, w26, #1 + and w26, w26, 65535 + b .L2010 +.L1999: + mov w0, -1 + strb w0, [x29, 182] + strb w0, [x29, 183] + ldr w0, [x29, 100] + cbz w0, .L1990 + ldr w3, [x28, x24, lsl 2] + mov w0, w27 + add x2, x29, 182 + add w3, w25, w3 + str w3, [x29, 96] + mov w1, w3 + bl FlashReadSpare + ldrb w0, [x20, 72] + ldr w3, [x29, 96] + cmp w0, 1 + bne .L1990 + ldr w1, [x20, 76] + mov w0, w27 + add x2, x29, 183 + add w1, w3, w1 + bl FlashReadSpare + ldrb w0, [x29, 182] + ldrb w1, [x29, 183] + and w0, w0, w1 + strb w0, [x29, 182] +.L1990: + ldr x0, [x29, 128] + tbz x0, 1, .L1992 + ldr x0, [x20, 88] + add x2, x29, 183 + ldrh w1, [x0, 10] + ldr w0, [x28, x24, lsl 2] + sub w1, w1, #1 + add w0, w25, w0 + add w1, w1, w0 + mov w0, w27 + bl FlashReadSpare +.L1992: + ldr x1, [x20, 88] + ldrb w0, [x1, 7] + cmp w0, 1 + ccmp w0, 8, 4, ne + ldrb w0, [x29, 182] + beq .L1993 + ldrb w1, [x1, 18] + cmp w1, 12 + bne .L1994 +.L1993: + cbz w0, .L2015 + ldrb w0, [x29, 183] + cmp w0, 0 + cset w0, eq +.L1995: + ldr x1, [x29, 128] + tbz x1, 2, .L1996 + ldr w1, [x28, x24, lsl 2] + mov w0, w27 + add w1, w25, w1 + bl SandiskProgTestBadBlock +.L1996: + cbz w0, .L1997 + mov w2, w26 + mov w1, w19 + adrp x0, .LC121 + add x0, x0, :lo12:.LC121 + bl printk + add w23, w23, 1 + add x1, x21, :lo12:.LANCHOR4 + ldr x0, [x29, 112] + ldrb w2, [x29, 112] + and w23, w23, 65535 + ldr x3, [x1, 1608] + ubfx x0, x0, 5, 11 + lsl x0, x0, 2 + mov w1, 1 + lsl w2, w1, w2 + ldr w1, [x3, x0] + orr w1, w1, w2 + str w1, [x3, x0] + ldr w1, [x29, 148] + ldrb w0, [x20, 2358] + mul w0, w0, w1 + cmp w23, w0 + bgt .L1998 +.L1997: + ldr w0, [x29, 168] + add w26, w26, 1 + add w25, w25, w0 + b .L1988 +.L1994: + cmp w0, 255 + bne .L2015 + ldrb w0, [x29, 183] + cmp w0, 255 + cset w0, ne + b .L1995 +.L2015: + mov w0, 1 + b .L1995 +.L2005: + mov w0, w26 + bl FlashTestBlk + cbz w0, .L2004 + ldr x0, [x29, 104] + mov w1, w26 + bl printk + ldr x3, [x20, 1608] + ubfx x0, x26, 5, 11 + lsl x0, x0, 2 + lsl w1, w23, w26 + ldr w2, [x3, x0] + orr w1, w2, w1 + str w1, [x3, x0] + ldr w0, [x29, 172] + add w0, w0, 1 + and w0, w0, 65535 + str w0, [x29, 172] +.L2004: + add w26, w26, 1 + and w26, w26, 65535 + b .L2003 +.L2008: + mov w0, w26 + bl FlashTestBlk + cbz w0, .L2007 + ldr x0, [x29, 104] + mov w1, w26 + bl printk + ldr x3, [x20, 1608] + ubfx x0, x26, 5, 11 + lsl x0, x0, 2 + lsl w1, w23, w26 + ldr w2, [x3, x0] + orr w1, w2, w1 + str w1, [x3, x0] +.L2007: + sub w26, w26, #1 + and w26, w26, 65535 + b .L2006 +.L2012: + sub w26, w26, #1 + and w26, w26, 65535 + b .L2011 +.L1987: add w19, w19, 1 - uxtb w19, w19 - b .L2012 -.L2062: - 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 - ret + and w19, w19, 255 + b .L1986 .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 2 .global FtlLowFormatEraseBlock .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, .LANCHOR2 - adrp x22, .LANCHOR0 - stp x25, x26, [sp,64] - stp x23, x24, [sp,48] - uxtb w25, w1 - add x24, x22, :lo12:.LANCHOR0 - add x1, x20, :lo12:.LANCHOR2 - uxth w26, w0 - stp x27, x28, [sp,80] - ldrb w0, [x24,2368] - ldr w2, [x1,424] - str w0, [x29,120] - mov w0, 0 - cbnz w2, .L2067 - ldrb w0, [x24,204] - mov w28, w2 - str w0, [x29,124] - mov w21, w2 - str w26, [x1,3580] - mov w19, w2 - mov w27, 56 -.L2068: - ldrh w0, [x24,2472] - cmp w0, w28 - bls .L2112 - add x1, x20, :lo12:.LANCHOR2 - umull x0, w28, w27 - ldr x1, [x1,432] - str wzr, [x1,x0] - add x0, x24, 2504 - mov w1, w26 - ldrb w0, [x0,w28,sxtw] - bl V2P_block - uxth w23, w0 - mov w1, w23 - cbz w25, .L2069 - str x1, [x29,112] - bl IsBlkInVendorPart - ldr x1, [x29,112] - cbnz w0, .L2070 -.L2069: - mov w0, w1 - bl FtlBbmIsBadBlock - cbnz w0, .L2071 - add x3, x20, :lo12:.LANCHOR2 - lsl w23, w23, 10 - umull x0, w21, w27 - mov w2, 4 - ldr x1, [x3,432] - add x1, x1, x0 - str w23, [x1,4] - ldr x1, [x3,432] - ldr x3, [x3,3672] - add x1, x1, x0 - ldrh w0, [x24,2556] - mul w0, w21, w0 - add w21, w21, 1 - str xzr, [x1,8] - sdiv w0, w0, w2 - uxth w21, w21 - add x0, x3, w0, sxtw 2 - str x0, [x1,16] - b .L2070 -.L2071: - add w19, w19, 1 - uxth w19, w19 -.L2070: - add w2, w28, 1 - uxth w28, w2 - b .L2068 -.L2112: - cbz w21, .L2091 - ldr w0, [x29,124] - mov w2, w21 - strb wzr, [x24,2368] - mov x27, 56 - cmp w0, wzr - add x0, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR2 + add x5, x22, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] + stp x19, x20, [sp, 16] + and w26, w0, 65535 + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldr w0, [x5, 424] + cbnz w0, .L2058 + adrp x20, .LANCHOR0 + add x24, x20, :lo12:.LANCHOR0 + and w25, w1, 255 + add x9, x24, 2504 + mov w6, 0 + mov w21, 0 + ldrb w8, [x24, 204] + mov w19, 0 + ldrb w0, [x24, 2368] + mov w7, 56 + mov w10, 4 + str w26, [x5, 3572] + str w0, [x29, 132] +.L2037: + ldrh w0, [x24, 2472] + cmp w0, w6 + bhi .L2041 + cbz w21, .L2035 + add x27, x22, :lo12:.LANCHOR2 + cmp w8, 0 cset w23, ne + strb wzr, [x24, 2368] + mov w2, w21 mov w1, w23 - ldr x0, [x0,432] + ldr x0, [x27, 432] bl FlashEraseBlocks - ldrb w0, [x29,120] - strb w0, [x24,2368] + ldrb w0, [x29, 132] + strb w0, [x24, 2368] mov x24, 0 -.L2074: - cmp w21, w24, uxth - bls .L2113 - add x1, x20, :lo12:.LANCHOR2 - mul x0, x24, x27 - ldr x1, [x1,432] - add x2, x1, x0 - ldr w0, [x1,x0] + mov w0, 56 + umull x21, w21, w0 +.L2044: + ldr x0, [x27, 432] + add x1, x0, x24 + ldr w0, [x0, x24] cmn w0, #1 - bne .L2075 - ldr w0, [x2,4] + bne .L2043 + ldr w0, [x1, 4] add w19, w19, 1 + and w19, w19, 65535 lsr w0, w0, 10 - uxth w19, w19 bl FtlBbmMapBadBlock -.L2075: - add x24, x24, 1 - b .L2074 -.L2113: - cbnz w25, .L2077 +.L2043: + add x24, x24, 56 + cmp x21, x24 + bne .L2044 + cbnz w25, .L2045 + and w23, w23, 65535 mov w0, 1 - uxth w23, w23 mov w28, 6 - str w0, [x29,124] - b .L2078 -.L2077: - add x0, x22, :lo12:.LANCHOR0 - ldrh w1, [x0,2546] - ldrb w0, [x0,204] - str w1, [x29,124] - cbnz w0, .L2094 + str w0, [x29, 136] +.L2046: + add x20, x20, :lo12:.LANCHOR0 + add x27, x22, :lo12:.LANCHOR2 + add x0, x20, 2504 + mov w24, 0 + str x0, [x29, 120] +.L2054: + mov w5, 0 + mov w21, 0 + mov w6, 56 + mov w7, 4 +.L2047: + ldrh w0, [x20, 2472] + cmp w0, w5 + bhi .L2050 + cbz w21, .L2035 + ldr x0, [x27, 432] + mov w2, w23 + mov w1, w21 + strb wzr, [x20, 2368] + mov w3, 1 + bl FlashProgPages + mov w1, 56 + ldrb w0, [x29, 132] + strb w0, [x20, 2368] + mov x2, 0 + umull x1, w21, w1 +.L2053: + ldr x0, [x27, 432] + add x3, x0, x2 + ldr w0, [x0, x2] + cbz w0, .L2052 + ldr w0, [x3, 4] + add w19, w19, 1 + stp x2, x1, [x29, 104] + and w19, w19, 65535 + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldp x2, x1, [x29, 104] +.L2052: + add x2, x2, 56 + cmp x1, x2 + bne .L2053 + add w24, w24, w28 + ldr w0, [x29, 136] + and w24, w24, 65535 + cmp w0, w24 + bhi .L2054 + add x24, x22, :lo12:.LANCHOR2 + mov x20, 0 +.L2056: + cbz w25, .L2055 + ldr x0, [x24, 432] + add x1, x0, x20 + ldr w0, [x0, x20] + cbnz w0, .L2055 + ldr w0, [x1, 4] + mov w1, 1 + str x2, [x29, 136] + lsr w0, w0, 10 + bl FtlFreeSysBlkQueueIn + ldr x2, [x29, 136] +.L2055: + add x20, x20, 56 + cmp x20, x2 + bne .L2056 + cmp w26, 63 + ccmp w25, 0, 0, hi + beq .L2035 + add x22, x22, :lo12:.LANCHOR2 + mov w2, w21 + mov w1, w23 + ldr x0, [x22, 432] + bl FlashEraseBlocks +.L2035: + 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], 144 + ret +.L2041: + umull x0, w6, w7 + ldr x1, [x5, 432] + str wzr, [x1, x0] + mov w1, w26 + ldrb w0, [x9, w6, sxtw] + bl V2P_block + and w11, w0, 65535 + mov w12, w11 + cbz w25, .L2038 + bl IsBlkInVendorPart + cbnz w0, .L2039 +.L2038: + mov w0, w12 + bl FtlBbmIsBadBlock + cbnz w0, .L2040 + umull x2, w21, w7 + ldr x0, [x5, 432] + lsl w11, w11, 10 + add x0, x0, x2 + str w11, [x0, 4] + ldrh w0, [x24, 2556] + ldr x1, [x5, 432] + add x1, x1, x2 + ldr x2, [x5, 3664] + mul w0, w0, w21 + add w21, w21, 1 + and w21, w21, 65535 + sdiv w0, w0, w10 + add x0, x2, w0, sxtw 2 + stp xzr, x0, [x1, 8] +.L2039: + add w6, w6, 1 + and w6, w6, 65535 + b .L2037 +.L2040: + add w19, w19, 1 + and w19, w19, 65535 + b .L2039 +.L2045: + add x0, x20, :lo12:.LANCHOR0 + ldrh w1, [x0, 2546] + ldrb w0, [x0, 204] + str w1, [x29, 136] + cbnz w0, .L2059 uxtw x0, w1 mov w23, 1 lsr w28, w0, 2 - b .L2078 -.L2094: + b .L2046 +.L2059: mov w23, 1 mov w28, w23 -.L2078: - mov w24, 0 - add x22, x22, :lo12:.LANCHOR0 -.L2087: - mov w27, 0 - mov w21, w27 -.L2079: - ldrh w0, [x22,2472] - cmp w0, w27 - bls .L2114 - add x1, x20, :lo12:.LANCHOR2 - mov w0, 56 - umull x0, w27, w0 - ldr x1, [x1,432] - str wzr, [x1,x0] - add x0, x22, 2504 + b .L2046 +.L2050: + umull x0, w5, w6 + ldr x1, [x27, 432] + str wzr, [x1, x0] mov w1, w26 - ldrb w0, [x0,w27,sxtw] + ldr x0, [x29, 120] + ldrb w0, [x0, w5, sxtw] bl V2P_block - uxth w2, w0 - str w2, [x29,112] - mov w1, w2 - cbz w25, .L2080 - str x1, [x29,104] + and w8, w0, 65535 + mov w9, w8 + cbz w25, .L2048 bl IsBlkInVendorPart - ldr x1, [x29,104] - cbnz w0, .L2081 -.L2080: - mov w0, w1 + cbnz w0, .L2049 +.L2048: + mov w0, w9 bl FtlBbmIsBadBlock - cbnz w0, .L2081 - add x2, x20, :lo12:.LANCHOR2 - mov w0, 56 - ldr w3, [x29,112] - umull x0, w21, w0 - ldr x1, [x2,432] - add w3, w24, w3, lsl 10 - add x1, x1, x0 - str w3, [x1,4] - mov w3, 4 - ldr x1, [x2,432] - add x1, x1, x0 - ldr x0, [x2,3648] - ldr x2, [x2,3656] - str x0, [x1,8] - ldrh w0, [x22,2556] - mul w0, w21, w0 + cbnz w0, .L2049 + umull x2, w21, w6 + ldr x0, [x27, 432] + add w8, w24, w8, lsl 10 + add x0, x0, x2 + str w8, [x0, 4] + ldr x1, [x27, 432] + ldr x0, [x27, 3640] + add x1, x1, x2 + ldr x2, [x27, 3648] + str x0, [x1, 8] + ldrh w0, [x20, 2556] + mul w0, w0, w21 add w21, w21, 1 - sdiv w0, w0, w3 - uxth w21, w21 + and w21, w21, 65535 + sdiv w0, w0, w7 add x0, x2, w0, sxtw 2 - str x0, [x1,16] -.L2081: - add w4, w27, 1 - uxth w27, w4 - b .L2079 -.L2114: - cbz w21, .L2091 - add x0, x20, :lo12:.LANCHOR2 - mov w1, w21 - mov w2, w23 - mov w3, 1 - strb wzr, [x22,2368] - ldr x0, [x0,432] - bl FlashProgPages - ldrb w0, [x29,120] - mov x1, 0 - strb w0, [x22,2368] -.L2084: - cmp w21, w1, uxth - bls .L2115 - add x2, x20, :lo12:.LANCHOR2 - mov x0, 56 - mul x0, x1, x0 - ldr x2, [x2,432] - add x3, x2, x0 - ldr w0, [x2,x0] - cbz w0, .L2085 - ldr w0, [x3,4] - add w19, w19, 1 - str x1, [x29,112] - lsr w0, w0, 10 - uxth w19, w19 - bl FtlBbmMapBadBlock - ldr x1, [x29,112] -.L2085: - add x1, x1, 1 - b .L2084 -.L2115: - add w24, w24, w28 - ldr w0, [x29,124] - uxth w24, w24 - cmp w24, w0 - bcc .L2087 - mov x22, 0 - mov x24, 56 -.L2088: - cmp w21, w22, uxth - bls .L2116 - cbz w25, .L2089 - add x1, x20, :lo12:.LANCHOR2 - mul x0, x22, x24 - ldr x1, [x1,432] - add x2, x1, x0 - ldr w0, [x1,x0] - cbnz w0, .L2089 - ldr w0, [x2,4] - mov w1, 1 - lsr w0, w0, 10 - bl FtlFreeSysBlkQueueIn -.L2089: - add x22, x22, 1 - b .L2088 -.L2116: - cmp w26, 63 - bls .L2095 - cbz w25, .L2091 -.L2095: - add x20, x20, :lo12:.LANCHOR2 - mov w1, w23 - mov w2, w21 - ldr x0, [x20,432] - bl FlashEraseBlocks -.L2091: - mov w0, w19 -.L2067: - 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 + str x0, [x1, 16] +.L2049: + add w5, w5, 1 + and w5, w5, 65535 + b .L2047 +.L2058: + mov w19, 0 + b .L2035 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FtlBbmTblFlush @@ -13595,562 +13324,556 @@ FtlLowFormatEraseBlock: FtlBbmTblFlush: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR2 - add x2, x22, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w1, [x2,424] - cbnz w1, .L2119 - adrp x19, .LANCHOR4 - adrp x20, .LANCHOR0 - add x24, x19, :lo12:.LANCHOR4 - add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x2,3616] - mov x21, 0 - ldr x2, [x2,3664] - add x23, x20, 2624 - str x2, [x24,1720] - ldrh w2, [x20,2554] - str x0, [x24,1712] - bl ftl_memset -.L2120: - ldrh w1, [x20,2494] - mov w0, w21 - add x21, x21, 1 - cmp w0, w1 - bge .L2133 - add x1, x22, :lo12:.LANCHOR2 - ldr x3, [x24,1712] - ldrh w2, [x1,3792] - add x1, x23, x21, lsl 3 - ldr x1, [x1,24] - mul w0, w0, w2 - add x0, x3, w0, sxtw 2 - lsl w2, w2, 2 - bl ftl_memcpy - b .L2120 -.L2133: - add x19, x19, :lo12:.LANCHOR4 - mov w1, 255 - add x19, x19, 1704 - mov w2, 16 + add x19, x22, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w0, [x19, 424] + cbnz w0, .L2082 + adrp x20, .LANCHOR4 + adrp x23, .LANCHOR0 + add x25, x20, :lo12:.LANCHOR4 + add x21, x23, :lo12:.LANCHOR0 + ldr x2, [x19, 3656] + mov w1, 0 + ldr x0, [x19, 3608] + add x26, x21, 2656 + str x2, [x25, 1728] mov w24, 0 + ldrh w2, [x21, 2554] + str x0, [x25, 1720] + bl ftl_memset +.L2083: + ldrh w0, [x21, 2494] + cmp w24, w0 + blt .L2084 + add x20, x20, :lo12:.LANCHOR4 + add x19, x21, 2624 + mov w2, 16 + mov w1, 255 adrp x26, .LC125 - ldr x21, [x19,16] - adrp x27, .LC126 - mov w25, w24 + add x23, x23, :lo12:.LANCHOR0 + ldr x28, [x20, 1728] add x26, x26, :lo12:.LC125 - mov x0, x21 - add x27, x27, :lo12:.LC126 + mov w24, 0 + mov x0, x28 bl ftl_memset mov w0, -3887 - strh w0, [x21] - ldr w0, [x23,8] - str w0, [x21,4] - ldrh w0, [x20,2624] - strh w0, [x21,2] - ldrh w0, [x23,4] - strh w0, [x21,8] - ldrh w0, [x23,6] - strh w0, [x21,10] - ldr w0, [x20,2468] - strh w0, [x21,12] -.L2122: - add x28, x22, :lo12:.LANCHOR2 - ldrh w1, [x20,2624] - ldrh w2, [x20,2626] - ldrh w3, [x20,2628] - ldr x0, [x28,3616] - str x0, [x19,8] - ldr x0, [x28,3664] - str x0, [x19,16] + strh w0, [x28] + ldr w0, [x19, 8] + str w0, [x28, 4] + ldrh w0, [x21, 2624] + strh w0, [x28, 2] + ldrh w0, [x19, 4] + strh w0, [x28, 8] + ldrh w0, [x19, 6] + strh w0, [x28, 10] + ldr w0, [x21, 2468] + mov w21, 0 + strh w0, [x28, 12] +.L2085: + add x25, x22, :lo12:.LANCHOR2 + ldrh w1, [x19] + ldrh w2, [x19, 2] + ldrh w3, [x19, 4] + ldr x0, [x25, 3608] + str x0, [x20, 1720] + ldr x0, [x25, 3656] + str x0, [x20, 1728] orr w0, w2, w1, lsl 10 - str w0, [x19,4] + str wzr, [x20, 1712] + ldrh w4, [x28, 10] + str w0, [x20, 1716] mov x0, x26 - ldrh w4, [x21,10] - str wzr, [x19] bl printk - ldrh w0, [x20,2546] - ldrh w1, [x20,2626] + ldrh w0, [x23, 2546] + ldrh w1, [x19, 2] sub w0, w0, #1 cmp w1, w0 - blt .L2123 - ldr w0, [x20,2632] - strh wzr, [x20,2626] + blt .L2086 + ldr w0, [x19, 8] + mov w2, 1 + ldrh w1, [x19] add w0, w0, 1 - str w0, [x20,2632] - str w0, [x21,4] - ldrh w0, [x20,2624] - ldrh w1, [x20,2628] - strh w0, [x21,8] - strh w0, [x20,2628] - ldr x0, [x28,432] - strh w1, [x20,2624] - lsl w1, w1, 10 - str w1, [x19,4] - str w1, [x0,4] - mov w1, 1 - mov w2, w1 - ldr x0, [x28,432] + str w0, [x19, 8] + str w0, [x28, 4] + strh w1, [x28, 8] + ldrh w0, [x19, 4] + strh w1, [x19, 4] + ldr x1, [x25, 432] + strh w0, [x19] + lsl w0, w0, 10 + str w0, [x20, 1716] + strh wzr, [x19, 2] + str w0, [x1, 4] + mov w1, w2 + ldr x0, [x25, 432] bl FlashEraseBlocks -.L2123: - mov w1, 1 - mov x0, x19 - mov w2, w1 - mov w3, w1 +.L2086: + add x25, x20, 1712 + mov w3, 1 + mov x0, x25 + mov w2, w3 + mov w1, w3 bl FlashProgPages - ldrh w0, [x20,2626] + ldrh w0, [x19, 2] add w0, w0, 1 - strh w0, [x20,2626] - ldr w0, [x19] + strh w0, [x19, 2] + ldr w0, [x20, 1712] cmn w0, #1 - bne .L2124 - ldr w1, [x19,4] - mov x0, x27 - add w24, w24, 1 + bne .L2087 + ldr w1, [x20, 1716] + add w21, w21, 1 + adrp x0, .LC126 + and w21, w21, 65535 + add x0, x0, :lo12:.LC126 bl printk - uxth w24, w24 - cmp w24, 3 - bls .L2122 - adrp x0, .LC127 - ldr w1, [x19,4] - add x0, x0, :lo12:.LC127 - mov w2, w24 + cmp w21, 3 + bls .L2085 + ldr w1, [x20, 1716] add x22, x22, :lo12:.LANCHOR2 + mov w2, w21 + adrp x0, .LC127 + add x0, x0, :lo12:.LC127 bl printk mov w0, 1 - str w0, [x22,424] - b .L2119 -.L2124: - add w25, w25, 1 - cmp w25, 1 - beq .L2122 - cmp w0, 256 - beq .L2122 -.L2119: + str w0, [x22, 424] +.L2082: 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 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 +.L2084: + ldrh w2, [x19, 3784] + ldr x1, [x26], 8 + ldr x0, [x25, 1720] + mul w3, w2, w24 + lsl w2, w2, 2 + add w24, w24, 1 + add x0, x0, w3, sxtw 2 + bl ftl_memcpy + b .L2083 +.L2090: + mov w24, 1 + b .L2085 +.L2087: + add w24, w24, 1 + cmp w24, 1 + ble .L2090 + cmp w0, 256 + bne .L2082 + b .L2085 .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 .global allocate_data_superblock .type allocate_data_superblock, %function allocate_data_superblock: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR2 - stp x19, x20, [sp,16] - add x19, x21, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr w1, [x19,424] - stp x27, x28, [sp,80] - cbnz w1, .L2135 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR2 + add x19, x22, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w1, [x19, 424] + cbnz w1, .L2096 + adrp x23, .LANCHOR0 mov x20, x0 - add x23, x19, 656 - adrp x22, .LANCHOR0 - mov w24, 7 - add x25, x19, 544 -.L2136: - cmp x20, x23 - bne .L2137 - ldrh w2, [x19,552] - ldr w4, [x19,1380] - lsr w3, w2, 1 - add w1, w3, 1 - mul w0, w2, w4 - add w1, w1, w0, lsr 2 - add x0, x22, :lo12:.LANCHOR0 - uxth w1, w1 - ldr w0, [x0,2372] - cbz w0, .L2138 - ldr w0, [x19,776] - cmp w0, 39 - bhi .L2138 - cmp w0, 2 - mov w1, 0 - bls .L2139 - tbz x2, 0, .L2166 - cbz w4, .L2139 -.L2166: - mov w1, w3 - b .L2138 -.L2137: - ldrb w0, [x20,8] - mov w1, 0 + add x24, x19, 656 + add x21, x23, :lo12:.LANCHOR0 +.L2097: + cmp x20, x24 + bne .L2098 + ldrh w2, [x19, 552] + ldr w3, [x19, 1376] + lsr w0, w2, 1 + add w4, w0, 1 + mul w1, w2, w3 + add w1, w4, w1, lsr 2 + ldr w4, [x21, 2372] + and w1, w1, 65535 + cbz w4, .L2099 + ldr w4, [x19, 776] + cmp w4, 39 + bhi .L2099 + cmp w4, 2 + bls .L2126 + tbz x2, 0, .L2122 + cbz w3, .L2126 +.L2122: + mov w1, w0 + b .L2099 +.L2098: + ldrb w0, [x20, 8] cmp w0, 1 - bne .L2139 - add x2, x22, :lo12:.LANCHOR0 - ldrh w0, [x2,2492] + bne .L2126 + ldrh w0, [x21, 2492] cmp w0, 1 - beq .L2139 - ldrb w0, [x2,204] - cbnz w0, .L2139 - ldr w2, [x2,2372] - ldrh w0, [x19,552] + beq .L2126 + ldrb w0, [x21, 204] + cbnz w0, .L2126 + ldr w2, [x21, 2372] + ldrh w0, [x19, 552] lsr w1, w0, 3 - cbz w2, .L2138 - ldr w2, [x19,776] + cbz w2, .L2099 + ldr w2, [x19, 776] cmp w2, 1 - bhi .L2138 - mul w1, w0, w24 + bhi .L2099 + mov w1, 7 + mul w1, w0, w1 lsr w1, w1, 3 -.L2138: - cbz w1, .L2139 +.L2099: + cbz w1, .L2100 sub w1, w1, #1 - uxth w1, w1 -.L2139: - ldrb w2, [x20,8] - mov x0, x25 - add x27, x22, :lo12:.LANCHOR0 + and w1, w1, 65535 +.L2100: + ldrb w2, [x20, 8] + add x0, x19, 544 bl List_pop_index_node - uxth w28, w0 - ldrh w0, [x19,552] + and w27, w0, 65535 + ldrh w0, [x19, 552] sub w0, w0, #1 - strh w0, [x19,552] - ldrh w0, [x27,2480] - cmp w0, w28 - bls .L2136 - ubfiz x26, x28, 1, 16 - ldr x0, [x19,520] - ldrh w0, [x0,x26] - cbnz w0, .L2136 - strh w28, [x20] + strh w0, [x19, 552] + ldrh w0, [x21, 2480] + cmp w0, w27 + bls .L2097 + ldr x0, [x19, 520] + ubfiz x26, x27, 1, 16 + ldrh w25, [x0, x26] + cbnz w25, .L2097 + strh w27, [x20] mov x0, x20 bl make_superblock - ldrb w0, [x20,7] - cbz w0, .L2191 + ldrb w0, [x20, 7] + cbz w0, .L2143 + add x28, x20, 16 + ldrh w5, [x21, 2472] + mov x3, x28 mov x0, 0 - ldrh w5, [x27,2472] - mov x3, 56 - mov w27, w0 + mov x4, 56 mov w6, 65535 -.L2143: +.L2103: cmp w5, w0, uxth - bls .L2194 - ldr x4, [x19,432] - 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 .L2144 - umull x2, w27, w3 - add w27, w27, 1 - lsl w1, w1, 10 - add x2, x4, x2 - uxth w27, w27 - str w1, [x2,4] -.L2144: - add x0, x0, 1 - b .L2143 -.L2194: + bhi .L2105 + ldr w0, [x21, 2372] + cbz w0, .L2106 add x0, x19, 560 cmp x20, x0 - bne .L2146 - add x1, x22, :lo12:.LANCHOR0 - ldr w1, [x1,2372] - cbz w1, .L2146 - ldr x1, [x19,440] - ldrh w1, [x1,x26] - cmp w1, 40 - bls .L2146 - strb wzr, [x19,568] -.L2146: - ldrb w0, [x20,8] - cbnz w0, .L2147 - ldr x0, [x19,440] - mov w1, 2 - ldrh w2, [x0,x26] - cbz w2, .L2192 - add x1, x22, :lo12:.LANCHOR0 - ldrh w1, [x1,2536] - add w1, w2, w1 -.L2192: - strh w1, [x0,x26] + bne .L2106 + ldr x0, [x19, 440] + ldrh w0, [x0, x26] + cmp w0, 40 + bls .L2106 + strb wzr, [x20, 8] +.L2106: + ldrb w0, [x20, 8] + ldr x1, [x19, 440] + cbnz w0, .L2107 + ldrh w0, [x1, x26] + cbz w0, .L2108 + ldrh w2, [x21, 2536] + add w0, w0, w2 +.L2144: + strh w0, [x1, x26] mov w1, 0 - ldr w0, [x19,760] + ldr w0, [x19, 760] add w0, w0, 1 - str w0, [x19,760] - mov w0, w28 + str w0, [x19, 760] + mov w0, w27 bl ftl_set_blk_mode - b .L2150 -.L2147: - ldr x1, [x19,440] - ldrh w0, [x1,x26] - add w0, w0, 1 - strh w0, [x1,x26] - ldr w0, [x19,764] - add w0, w0, 1 - str w0, [x19,764] - mov w0, w28 - bl ftl_set_blk_mode.part.9 -.L2150: - ldr x0, [x19,440] - ldr w1, [x19,772] - ldrh w0, [x0,x26] +.L2110: + ldr x0, [x19, 440] + ldr w1, [x19, 772] + ldrh w0, [x0, x26] cmp w0, w1 - bls .L2151 - str w0, [x19,772] -.L2151: - add x2, x22, :lo12:.LANCHOR0 - ldr w3, [x19,760] - ldr w0, [x19,764] - ldrh w1, [x2,2536] - madd w0, w1, w3, w0 - ldrh w1, [x2,2480] - mov x3, 56 + bls .L2111 + str w0, [x19, 772] +.L2111: + ldr w2, [x19, 760] + ldr w1, [x19, 764] + ldrh w0, [x21, 2536] + madd w0, w0, w2, w1 + ldrh w1, [x21, 2480] + mov w2, 56 + umull x2, w25, w2 udiv w0, w0, w1 - ldr x1, [x19,3704] - str w0, [x19,768] - ldr w0, [x1,16] + ldr x1, [x19, 3696] + str w0, [x19, 768] + ldr w0, [x1, 16] add w0, w0, 1 - str w0, [x1,16] + str w0, [x1, 16] mov x0, 0 -.L2152: - cmp w27, w0, uxth - bls .L2195 - ldr x1, [x19,432] - madd x1, x0, x3, x1 - add x0, x0, 1 - ldr w2, [x1,4] - and w2, w2, -1024 - str w2, [x1,4] - b .L2152 -.L2195: - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L2154 - ldrb w0, [x20,8] +.L2112: + cmp x2, x0 + bne .L2113 + ldrb w0, [x21, 204] + cbz w0, .L2114 + ldrb w0, [x20, 8] + mov w2, w25 cmp w0, 1 - ldr x0, [x19,432] - bne .L2155 + bne .L2115 mov w1, 0 - b .L2193 -.L2155: - mov w1, 1 -.L2193: - mov w2, w27 +.L2145: + ldr x0, [x19, 432] bl FlashEraseBlocks -.L2154: - ldrb w1, [x20,8] - mov w2, w27 - ldr x0, [x19,432] +.L2114: + ldrb w1, [x20, 8] + mov w2, w25 + ldr x0, [x19, 432] bl FlashEraseBlocks mov x1, 0 + mov w2, 0 mov x4, 56 - mov w2, w1 -.L2156: - cmp w27, w1, uxth - bls .L2196 - mul x0, x1, x4 - ldr x3, [x19,432] - add x5, x3, x0 - ldr w3, [x3,x0] - cmn w3, #1 - bne .L2157 - ldr w0, [x5,4] - add w2, w2, 1 - str x4, [x29,104] - lsr w0, w0, 10 - str x3, [x29,112] - str x1, [x29,120] - str x2, [x29,128] - str x2, [x29,136] - bl FtlBbmMapBadBlock - ldr x1, [x29,120] - ldr x3, [x29,112] - ldr x4, [x29,104] - add x0, x20, x1, lsl 1 - ldr x2, [x29,136] - strh w3, [x0,16] - ldrb w0, [x20,7] - sub w0, w0, #1 - strb w0, [x20,7] -.L2157: - add x1, x1, 1 - b .L2156 -.L2196: - cbz w2, .L2159 - mov w0, w28 +.L2116: + cmp w25, w1, uxth + bhi .L2118 + cmp w2, 0 + ble .L2119 + mov w0, w27 bl update_multiplier_value bl FtlBbmTblFlush -.L2159: - ldrb w0, [x20,7] - cbnz w0, .L2160 -.L2191: - ldr x0, [x19,520] +.L2119: + ldrb w0, [x20, 7] + cbnz w0, .L2120 +.L2143: + ldr x0, [x19, 520] mov w1, -1 - strh w1, [x0,x26] - b .L2136 -.L2160: - adrp x1, .LANCHOR0 - add x21, x21, :lo12:.LANCHOR2 - add x1, x1, :lo12:.LANCHOR0 - strh wzr, [x20,2] - strb wzr, [x20,6] - ldrh w1, [x1,2544] - strh w28, [x20] + strh w1, [x0, x26] + b .L2097 +.L2126: + mov w1, 0 + b .L2100 +.L2105: + ldr x1, [x19, 432] + madd x2, x0, x4, x1 + stp xzr, xzr, [x2, 8] + ldrh w2, [x3] + cmp w2, w6 + beq .L2104 + umull x7, w25, w4 + add w25, w25, 1 + and w25, w25, 65535 + lsl w2, w2, 10 + add x1, x1, x7 + str w2, [x1, 4] +.L2104: + add x0, x0, 1 + add x3, x3, 2 + b .L2103 +.L2108: + mov w0, 2 + b .L2144 +.L2107: + ldrh w0, [x1, x26] + add w0, w0, 1 + strh w0, [x1, x26] + ldr w0, [x19, 764] + add w0, w0, 1 + str w0, [x19, 764] + mov w0, w27 + bl ftl_set_blk_mode.part.9 + b .L2110 +.L2113: + ldr x1, [x19, 432] + add x1, x1, x0 + add x0, x0, 56 + ldr w3, [x1, 4] + and w3, w3, -1024 + str w3, [x1, 4] + b .L2112 +.L2115: + mov w1, 1 + b .L2145 +.L2118: + mul x0, x1, x4 + ldr x3, [x19, 432] + add x5, x3, x0 + ldr w3, [x3, x0] + cmn w3, #1 + bne .L2117 + add w2, w2, 1 + ldr w0, [x5, 4] + stp x4, x1, [x29, 104] + stp w3, w2, [x29, 120] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldp w3, w2, [x29, 120] + strh w3, [x28] + ldp x4, x1, [x29, 104] + ldrb w0, [x20, 7] + sub w0, w0, #1 + strb w0, [x20, 7] +.L2117: + add x1, x1, 1 + add x28, x28, 2 + b .L2116 +.L2120: + add x23, x23, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LANCHOR2 + strh wzr, [x20, 2] + strb wzr, [x20, 6] + ldrh w1, [x23, 2544] + strh w27, [x20] mul w0, w0, w1 - ldr w1, [x21,752] - str w1, [x20,12] - uxth w0, w0 + ldr w1, [x22, 752] + str w1, [x20, 12] + and w0, w0, 65535 add w1, w1, 1 - strh w0, [x20,4] - str w1, [x21,752] - ldr x1, [x21,520] + strh w0, [x20, 4] + str w1, [x22, 752] + ldr x1, [x22, 520] ldrh w2, [x20] - strh w0, [x1,x2,lsl 1] -.L2135: + strh w0, [x1, x2, lsl 1] +.L2096: + ldp x19, x20, [sp, 16] 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], 144 + 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 allocate_data_superblock, .-allocate_data_superblock .align 2 .global FtlGcFreeBadSuperBlk .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - str x25, [sp,64] - add x19, x19, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - uxth w23, w0 - ldrh w0, [x19,1464] - stp x21, x22, [sp,32] - mov w21, 0 - cbz w0, .L2199 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x20, x20, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + and w23, w0, 65535 + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + ldrh w0, [x20, 1456] + str x27, [sp, 80] + cbz w0, .L2147 adrp x22, .LANCHOR0 - adrp x24, .LC128 + add x24, x20, 1464 add x22, x22, :lo12:.LANCHOR0 - add x24, x24, :lo12:.LC128 -.L2207: - ldrh w0, [x22,2472] + mov w21, 0 +.L2148: + ldrh w0, [x22, 2472] cmp w0, w21 - bls .L2208 + bhi .L2154 + bl FtlGcReFreshBadBlk +.L2147: + mov w0, 0 + 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 +.L2154: add x0, x22, 2504 mov w1, w23 - mov w20, 0 - ldrb w0, [x0,w21,sxtw] + adrp x26, .LC128 + add x26, x26, :lo12:.LC128 + mov w19, 0 + ldrb w0, [x0, w21, sxtw] bl V2P_block - uxth w25, w0 -.L2200: - ldrh w0, [x19,1464] - cmp w0, w20 - bls .L2209 - add x0, x19, 1472 - ldrh w0, [x0,w20,sxtw 1] + and w25, w0, 65535 +.L2149: + ldrh w0, [x20, 1456] + cmp w0, w19 + bhi .L2153 + add w21, w21, 1 + and w21, w21, 65535 + b .L2148 +.L2153: + ldrh w0, [x24, w19, sxtw 1] + add w27, w19, 1 cmp w0, w25 - bne .L2201 + bne .L2150 mov w1, w25 - mov x0, x24 + mov x0, x26 bl printk mov w0, w25 bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh w2, [x19,1464] - mov w3, w20 -.L2202: - cmp w3, w2 - bcs .L2210 - add x4, x19, 1472 - add w0, w3, 1 - ldrh w1, [x4,w0,sxtw 1] - strh w1, [x4,w3,sxtw 1] - uxth w3, w0 - b .L2202 -.L2210: - sub w2, w2, #1 - strh w2, [x19,1464] -.L2201: - add w20, w20, 1 - uxth w20, w20 - b .L2200 -.L2209: - add w21, w21, 1 - uxth w21, w21 - b .L2207 -.L2208: - bl FtlGcReFreshBadBlk -.L2199: - mov w0, 0 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 - ret + ldrh w0, [x20, 1456] + mov w1, w27 +.L2151: + cmp w19, w0 + bcc .L2152 + sub w0, w0, #1 + strh w0, [x20, 1456] +.L2150: + and w19, w27, 65535 + b .L2149 +.L2152: + sub w2, w1, #1 + ldrh w3, [x24, w1, sxtw 1] + add w19, w19, 1 + add w1, w1, 1 + and w19, w19, 65535 + strh w3, [x24, w2, sxtw 1] + b .L2151 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 .global update_vpc_list .type update_vpc_list, %function update_vpc_list: - stp x29, x30, [sp, -32]! + and w13, w0, 65535 + adrp x8, .LANCHOR2 + add x0, x8, :lo12:.LANCHOR2 + stp x29, x30, [sp, -16]! + ubfiz x1, x13, 1, 16 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - uxth w19, w0 - add x1, x20, :lo12:.LANCHOR2 - ubfiz x0, x19, 1, 16 - ldr x2, [x1,520] - ldrh w2, [x2,x0] - cbnz w2, .L2212 - ldrh w0, [x1,800] - cmp w0, w19 - bne .L2213 - mov w0, -1 - strh w0, [x1,800] - b .L2214 -.L2213: - ldrh w3, [x1,560] - mov w0, w2 - cmp w3, w19 - beq .L2215 - ldrh w3, [x1,608] - cmp w3, w19 - beq .L2215 - ldrh w1, [x1,656] - cmp w1, w19 - beq .L2215 -.L2214: - add x20, x20, :lo12:.LANCHOR2 - mov w1, w19 - add x0, x20, 512 + ldr x2, [x0, 520] + ldrh w1, [x2, x1] + cbnz w1, .L2160 + ldrh w1, [x0, 800] + cmp w1, w13 + bne .L2161 + mov w1, -1 + strh w1, [x0, 800] +.L2162: + add x8, x8, :lo12:.LANCHOR2 + mov w1, w13 + add x0, x8, 512 bl List_remove_node - ldrh w0, [x20,536] + ldrh w0, [x8, 536] sub w0, w0, #1 - strh w0, [x20,536] - mov w0, w19 + strh w0, [x8, 536] + mov w0, w13 bl free_data_superblock - mov w0, w19 + mov w0, w13 bl FtlGcFreeBadSuperBlk mov w0, 1 - b .L2215 -.L2212: - mov w0, w19 - bl List_update_data_list - mov w0, 0 -.L2215: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 +.L2159: + ldp x29, x30, [sp], 16 ret +.L2161: + ldrh w1, [x0, 560] + cmp w1, w13 + beq .L2166 + ldrh w1, [x0, 608] + cmp w1, w13 + beq .L2166 + ldrh w0, [x0, 656] + cmp w0, w13 + bne .L2162 +.L2166: + mov w0, 0 + b .L2159 +.L2160: + mov w0, w13 + bl List_update_data_list + b .L2166 .size update_vpc_list, .-update_vpc_list .align 2 .global decrement_vpc_count @@ -14158,73 +13881,72 @@ update_vpc_list: decrement_vpc_count: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 65535 + stp x21, x22, [sp, 32] mov w0, 65535 - stp x21, x22, [sp,32] - cmp w19, w0 adrp x20, .LANCHOR2 - beq .L2220 + cmp w19, w0 + beq .L2169 add x21, x20, :lo12:.LANCHOR2 ubfiz x22, x19, 1, 16 - ldr x0, [x21,520] - ldrh w2, [x0,x22] - cbnz w2, .L2221 + ldr x1, [x21, 520] + ldrh w0, [x1, x22] + cbnz w0, .L2170 + mov w1, w19 + mov w2, 0 adrp x0, .LC129 - mov w1, w19 add x0, x0, :lo12:.LC129 - add x20, x21, 544 bl printk - ldr x0, [x21,520] + ldr x0, [x21, 520] + add x6, x21, 544 mov w1, 32 - strh w1, [x0,x22] - mov x0, x20 + strh w1, [x0, x22] mov w1, w19 + mov x0, x6 bl test_node_in_list - cbz w0, .L2222 + cbz w0, .L2171 mov w1, w19 - mov x0, x20 + mov x0, x6 bl List_remove_node - ldrh w0, [x21,552] + ldrh w0, [x21, 552] sub w0, w0, #1 - strh w0, [x21,552] + strh w0, [x21, 552] mov w0, w19 bl INSERT_DATA_LIST - ldr x2, [x21,520] + ldr x0, [x21, 520] + mov w1, w19 + ldrh w2, [x0, x22] adrp x0, .LC130 add x0, x0, :lo12:.LC130 - mov w1, w19 - ldrh w2, [x2,x22] bl printk -.L2222: +.L2171: mov w0, w19 bl FtlGcRefreshBlock - b .L2229 -.L2221: - sub w2, w2, #1 - strh w2, [x0,x22] -.L2220: +.L2174: + mov w0, 0 + b .L2168 +.L2170: + sub w0, w0, #1 + strh w0, [x1, x22] +.L2169: add x20, x20, :lo12:.LANCHOR2 - mov w0, 65535 - ldrh w1, [x20,3880] - cmp w1, w0 - bne .L2224 - strh w19, [x20,3880] -.L2229: - mov w0, 0 - b .L2223 -.L2224: - cmp w1, w19 - mov w0, 0 - beq .L2223 - mov w0, w1 + mov w1, 65535 + ldrh w0, [x20, 3872] + cmp w0, w1 + bne .L2173 + strh w19, [x20, 3872] + b .L2174 +.L2173: + cmp w19, w0 + beq .L2174 bl update_vpc_list - cmp w0, wzr + cmp w0, 0 cset w0, ne - strh w19, [x20,3880] -.L2223: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + strh w19, [x20, 3872] +.L2168: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size decrement_vpc_count, .-decrement_vpc_count @@ -14232,96 +13954,95 @@ decrement_vpc_count: .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: + ldrh w1, [x0, 4] + cbz w1, .L2191 + ldrh w2, [x0] + mov w1, 65535 + cmp w2, w1 + beq .L2191 stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - ldrh w1, [x0,4] - cbz w1, .L2230 - ldrh w1, [x0] - mov w20, 65535 - cmp w1, w20 - beq .L2230 + stp x19, x20, [sp, 16] mov x19, x0 - ldrb w0, [x0,6] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR2 - adrp x22, .LANCHOR0 - add x0, x0, 8 add x21, x21, :lo12:.LANCHOR2 - add x21, x21, 1508 - ldrh w0, [x19,x0,lsl 1] -.L2234: - cmp w0, w20 - bne .L2241 -.L2236: - ldrb w0, [x19,6] - add x1, x22, :lo12:.LANCHOR0 - add w0, w0, 1 - ldrh w1, [x1,2472] - uxtb w0, w0 - strb w0, [x19,6] - cmp w1, w0 - bne .L2235 - ldrh w0, [x19,2] - strb wzr, [x19,6] - add w0, w0, 1 - strh w0, [x19,2] -.L2235: - ldrb w0, [x19,6] + adrp x20, .LANCHOR0 + ldrb w0, [x0, 6] + add x22, x20, :lo12:.LANCHOR0 + add x21, x21, 1500 add x0, x0, 8 - ldrh w0, [x19,x0,lsl 1] - b .L2234 -.L2241: - ldrb w1, [x19,8] + ldrh w1, [x19, x0, lsl 1] +.L2183: + mov w0, 65535 + cmp w1, w0 + beq .L2185 + ldrb w1, [x19, 8] cmp w1, 1 - bne .L2237 - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbnz w0, .L2237 - ldrh w0, [x19,2] - ldrh w0, [x21,w0,sxtw 1] - cmp w0, w20 - bne .L2237 - ldrh w0, [x19,4] + bne .L2186 + ldrb w2, [x22, 204] + cbnz w2, .L2186 + ldrh w2, [x19, 2] + ldrh w2, [x21, x2, lsl 1] + cmp w2, w0 + bne .L2186 + ldrh w0, [x19, 4] sub w0, w0, #1 - strh w0, [x19,4] + strh w0, [x19, 4] ldrh w0, [x19] bl decrement_vpc_count - ldrh w1, [x19,4] - cbnz w1, .L2236 - ldrh w0, [x19,2] - strb w1, [x19,6] + ldrh w0, [x19, 4] + cbnz w0, .L2185 + ldrh w0, [x19, 2] add w0, w0, 1 - strh w0, [x19,2] - b .L2230 -.L2237: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w2, [x0,204] - cbz w2, .L2230 - cmp w1, 1 - bne .L2230 - ldrh w2, [x19,2] - ldrh w1, [x0,2546] - cmp w2, w1 - bcc .L2230 - adrp x2, .LANCHOR2+520 - ldrh w1, [x19] - ldrh w4, [x19,4] - lsl x1, x1, 1 - ldr x3, [x2,#:lo12:.LANCHOR2+520] - ldrh w2, [x3,x1] - sub w2, w2, w4 - strh w2, [x3,x1] - strh wzr, [x19,4] - ldrh w0, [x0,2544] - strh w0, [x19,2] - strb wzr, [x19,6] -.L2230: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] +.L2194: + strh w0, [x19, 2] + strb wzr, [x19, 6] +.L2179: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2185: + ldrb w0, [x19, 6] + ldrh w1, [x22, 2472] + add w0, w0, 1 + and w0, w0, 255 + strb w0, [x19, 6] + cmp w1, w0 + bne .L2184 + ldrh w0, [x19, 2] + strb wzr, [x19, 6] + add w0, w0, 1 + strh w0, [x19, 2] +.L2184: + ldrb w0, [x19, 6] + add x0, x0, 8 + ldrh w1, [x19, x0, lsl 1] + b .L2183 +.L2186: + add x0, x20, :lo12:.LANCHOR0 + ldrb w2, [x0, 204] + cbz w2, .L2179 + cmp w1, 1 + bne .L2179 + ldrh w2, [x19, 2] + ldrh w1, [x0, 2546] + cmp w2, w1 + bcc .L2179 + ldrh w1, [x19] + adrp x2, .LANCHOR2+520 + ldrh w4, [x19, 4] + ldr x3, [x2, #:lo12:.LANCHOR2+520] + lsl x1, x1, 1 + ldrh w2, [x3, x1] + sub w2, w2, w4 + strh w2, [x3, x1] + strh wzr, [x19, 4] + ldrh w0, [x0, 2544] + b .L2194 +.L2191: + ret .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global get_new_active_ppa @@ -14329,130 +14050,118 @@ FtlSlcSuperblockCheck: get_new_active_ppa: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] mov x19, x0 - strb wzr, [x0,10] - ldrb w0, [x0,6] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR2 + str x23, [sp, 48] add x21, x21, :lo12:.LANCHOR2 - mov w22, 65535 - add x0, x0, 8 - adrp x23, .LANCHOR0 - add x21, x21, 1508 - ldrh w0, [x19,x0,lsl 1] -.L2243: - cmp w0, w22 + strb wzr, [x0, 10] adrp x20, .LANCHOR0 - bne .L2258 -.L2244: - ldrb w0, [x19,6] - add x1, x23, :lo12:.LANCHOR0 - add w0, w0, 1 - ldrh w1, [x1,2472] - uxtb w0, w0 - strb w0, [x19,6] - cmp w1, w0 - bne .L2245 - ldrh w0, [x19,2] - strb wzr, [x19,6] - add w0, w0, 1 - strh w0, [x19,2] -.L2245: - ldrb w0, [x19,6] + ldrb w0, [x0, 6] + add x21, x21, 1500 + add x23, x20, :lo12:.LANCHOR0 add x0, x0, 8 - ldrh w0, [x19,x0,lsl 1] - b .L2243 -.L2258: - ldrb w1, [x19,8] + ldrh w0, [x19, x0, lsl 1] +.L2196: + mov w2, 65535 + cmp w0, w2 + beq .L2197 + ldrb w1, [x19, 8] + ldrh w22, [x19, 2] cmp w1, 1 - bne .L2246 - add x1, x23, :lo12:.LANCHOR0 - ldrb w1, [x1,204] - cbnz w1, .L2246 - ldrh w1, [x19,2] - ldrh w1, [x21,w1,sxtw 1] - cmp w1, w22 - bne .L2246 - ldrh w0, [x19,4] - sub w0, w0, #1 - strh w0, [x19,4] - ldrh w0, [x19] - bl decrement_vpc_count - b .L2244 -.L2246: - ldrh w1, [x19,4] - adrp x21, .LANCHOR2 - ldrh w22, [x19,2] - mov w23, 65535 - add x21, x21, :lo12:.LANCHOR2 - sub w1, w1, #1 - orr w22, w22, w0, lsl 10 - strh w1, [x19,4] - mov w24, w23 - add x21, x21, 1508 -.L2247: - add x0, x20, :lo12:.LANCHOR0 - ldrb w1, [x19,6] - ldrh w2, [x0,2472] -.L2249: - add w1, w1, 1 - uxtb w1, w1 - cmp w1, w2 - bne .L2248 - ldrh w1, [x19,2] - add w1, w1, 1 - strh w1, [x19,2] - mov w1, 0 -.L2248: - add x0, x19, w1, sxtw 1 - ldrh w0, [x0,16] - cmp w0, w23 - beq .L2249 - ldrb w0, [x19,8] - strb w1, [x19,6] - cmp w0, 1 - bne .L2254 - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbnz w0, .L2251 - ldrh w0, [x19,2] - ldrh w0, [x21,w0,sxtw 1] - cmp w0, w24 - bne .L2251 - ldrh w1, [x19,4] - cbz w1, .L2251 + ldrh w1, [x19, 4] + bne .L2199 + ldrb w3, [x23, 204] + cbnz w3, .L2199 + ldrh w3, [x21, w22, sxtw 1] + cmp w3, w2 + bne .L2199 ldrh w0, [x19] sub w1, w1, #1 - strh w1, [x19,4] + strh w1, [x19, 4] bl decrement_vpc_count - b .L2247 -.L2251: - add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,204] - cbz w0, .L2254 - ldrh w1, [x19,2] - ldrh w0, [x20,2546] +.L2197: + ldrb w0, [x19, 6] + ldrh w1, [x23, 2472] + add w0, w0, 1 + and w0, w0, 255 + strb w0, [x19, 6] cmp w1, w0 - bcc .L2254 - adrp x0, .LANCHOR2+520 - ldrh w1, [x19] - ldrh w3, [x19,4] - lsl x1, x1, 1 - ldr x0, [x0,#:lo12:.LANCHOR2+520] - ldrh w2, [x0,x1] - sub w2, w2, w3 - strh w2, [x0,x1] - strh wzr, [x19,4] - ldrh w0, [x20,2544] - strh w0, [x19,2] - strb wzr, [x19,6] -.L2254: + bne .L2198 + ldrh w0, [x19, 2] + strb wzr, [x19, 6] + add w0, w0, 1 + strh w0, [x19, 2] +.L2198: + ldrb w0, [x19, 6] + add x0, x0, 8 + ldrh w0, [x19, x0, lsl 1] + b .L2196 +.L2199: + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + orr w22, w22, w0, lsl 10 + add x20, x20, :lo12:.LANCHOR0 + add x21, x21, 1500 + sub w1, w1, #1 + strh w1, [x19, 4] +.L2200: + ldrb w0, [x19, 6] + mov w1, 65535 + ldrh w3, [x20, 2472] +.L2202: + add w0, w0, 1 + and w0, w0, 255 + cmp w0, w3 + bne .L2201 + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + mov w0, 0 +.L2201: + add x2, x19, w0, sxtw 1 + ldrh w2, [x2, 16] + cmp w2, w1 + beq .L2202 + strb w0, [x19, 6] + ldrb w0, [x19, 8] + cmp w0, 1 + bne .L2195 + ldrb w2, [x20, 204] + ldrh w0, [x19, 2] + cbnz w2, .L2204 + ldrh w0, [x21, w0, sxtw 1] + cmp w0, w1 + bne .L2195 + ldrh w0, [x19, 4] + cbz w0, .L2195 + sub w0, w0, #1 + strh w0, [x19, 4] + ldrh w0, [x19] + bl decrement_vpc_count + b .L2200 +.L2204: + ldrh w1, [x20, 2546] + cmp w0, w1 + bcc .L2195 + ldrh w0, [x19] + adrp x1, .LANCHOR2+520 + ldrh w3, [x19, 4] + ldr x2, [x1, #:lo12:.LANCHOR2+520] + lsl x0, x0, 1 + ldrh w1, [x2, x0] + sub w1, w1, w3 + strh w1, [x2, x0] + strh wzr, [x19, 4] + ldrh w0, [x20, 2544] + strh w0, [x19, 2] + strb wzr, [x19, 6] +.L2195: mov w0, w22 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size get_new_active_ppa, .-get_new_active_ppa @@ -14462,430 +14171,426 @@ get_new_active_ppa: FtlVpcTblFlush: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] adrp x23, .LANCHOR2 - stp x19, x20, [sp,16] add x19, x23, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - ldr w0, [x19,424] - stp x27, x28, [sp,80] - cbnz w0, .L2261 - adrp x26, .LANCHOR4 - ldr x21, [x19,3664] - add x22, x26, :lo12:.LANCHOR4 - ldr x1, [x19,3616] - ldrh w2, [x19,784] + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w0, [x19, 424] + cbnz w0, .L2213 + ldr x21, [x19, 3656] + adrp x24, .LANCHOR4 + add x22, x24, :lo12:.LANCHOR4 + ldr x0, [x19, 3608] + ldrh w1, [x19, 784] add x20, x19, 456 - adrp x24, .LANCHOR0 - add x22, x22, 1704 - str x1, [x22,8] - add x25, x24, :lo12:.LANCHOR0 - str x21, [x22,16] - strh w2, [x21,2] - mov w2, -3932 - strh w2, [x21] - str w0, [x21,12] - ldr w2, [x19,792] - str w2, [x21,4] - str w0, [x21,8] - mov w0, 19539 - ldrh w1, [x19,560] - movk w0, 0x4654, lsl 16 - strh w1, [x20,14] - ldrh w1, [x19,562] - ldrb w2, [x19,566] - str w0, [x19,456] - mov w0, 99 + adrp x26, .LANCHOR0 + add x25, x26, :lo12:.LANCHOR0 + str x0, [x22, 1720] + add x22, x22, 1712 + str x21, [x22, 16] + strh w1, [x21, 2] + mov w1, -3932 + strh w1, [x21] + str wzr, [x21, 12] + ldr w1, [x19, 792] + stp w1, wzr, [x21, 4] + mov w1, 19539 + movk w1, 0x4654, lsl 16 + str w1, [x19, 456] + mov w1, 99 + ldrb w2, [x19, 566] + movk w1, 0x5000, lsl 16 + str w1, [x20, 4] + ldrh w1, [x19, 560] + strh w1, [x20, 14] + ldrh w1, [x19, 562] + ldrh w0, [x19, 790] + strh w0, [x20, 8] orr w1, w2, w1, lsl 6 - strh w1, [x20,16] - ldrh w1, [x19,608] - movk w0, 0x5000, lsl 16 - strh w1, [x20,18] - ldrh w1, [x19,610] - str w0, [x20,4] - ldrb w2, [x19,614] - ldrh w0, [x19,790] - strh w0, [x20,8] + strh w1, [x20, 16] + ldrh w1, [x19, 608] + strh w1, [x20, 18] + ldrb w2, [x19, 614] + ldrh w1, [x19, 610] + ldrh w0, [x25, 2494] + strb w0, [x20, 10] + ldrb w0, [x19, 568] orr w1, w2, w1, lsl 6 - ldrh w0, [x25,2494] - strb w0, [x20,10] - ldrb w0, [x19,568] - strb w0, [x20,11] - strh w1, [x20,20] - ldrb w0, [x19,616] - ldrh w1, [x19,656] - strb w0, [x20,12] - strh w1, [x20,22] - ldrh w1, [x19,658] - ldrb w0, [x19,664] - strb w0, [x20,13] - ldr w0, [x19,760] - str w0, [x20,32] - ldr w0, [x19,752] - str w0, [x20,40] - ldr w0, [x19,756] - ldrb w2, [x19,662] - str w0, [x20,36] - ldrh w0, [x19,1456] + strb w0, [x20, 11] + ldrb w0, [x19, 616] + strb w0, [x20, 12] + strh w1, [x20, 20] + ldrh w1, [x19, 656] + strh w1, [x20, 22] + ldrb w0, [x19, 664] + strb w0, [x20, 13] + ldr w0, [x19, 760] + str w0, [x20, 32] + ldr w0, [x19, 752] + ldrb w2, [x19, 662] + str w0, [x20, 40] + ldrh w1, [x19, 658] + ldr w0, [x19, 756] + str w0, [x20, 36] + ldrh w0, [x19, 1448] orr w1, w2, w1, lsl 6 - strh w0, [x20,44] - ldrh w0, [x19,1458] - strh w0, [x20,46] - ldrh w2, [x25,2554] - ldr x0, [x22,8] - strh w1, [x20,24] + strh w0, [x20, 44] + ldrh w0, [x19, 1450] + strh w0, [x20, 46] + ldrh w2, [x25, 2554] + ldr x0, [x22, 8] + strh w1, [x20, 24] mov w1, 255 bl ftl_memset - ldr x0, [x22,8] + ldr x0, [x22, 8] mov x1, x20 mov w2, 48 mov x20, x26 bl ftl_memcpy - ldr x0, [x22,8] - ldrh w2, [x25,2480] - ldr x1, [x19,520] - add x0, x0, 48 + ldr x1, [x19, 520] + ldrh w2, [x25, 2480] + ldr x0, [x22, 8] lsl w2, w2, 1 + add x0, x0, 48 bl ftl_memcpy - ldrh w2, [x25,2480] - ldr x1, [x22,8] - ubfiz x0, x2, 1, 16 - lsr w2, w2, 3 + ldrh w0, [x25, 2480] + ldr x3, [x22, 8] + ldr x1, [x25, 64] + lsr w2, w0, 3 + ubfiz x0, x0, 1, 16 add x0, x0, 51 add w2, w2, 4 - and x0, x0, 262140 - add x0, x1, x0 - ldr x1, [x24,#:lo12:.LANCHOR0] + and x0, x0, -4 + add x0, x3, x0 bl ftl_memcpy - ldrh w0, [x25,2588] - cbz w0, .L2262 - ldrh w0, [x25,2480] - ldrh w2, [x25,2580] + ldrh w0, [x25, 2588] + cbz w0, .L2214 + ldrh w0, [x25, 2480] + ldr x3, [x22, 8] + ldrh w2, [x25, 2580] lsr w1, w0, 3 add w0, w1, w0, lsl 1 - ldr x1, [x22,8] + ldr x1, [x19, 3752] add w0, w0, 52 lsl w2, w2, 2 and x0, x0, 65532 - add x0, x1, x0 - ldr x1, [x19,3760] + add x0, x3, x0 bl ftl_memcpy -.L2262: - mov w0, 0 +.L2214: + add x27, x23, :lo12:.LANCHOR2 + add x26, x24, :lo12:.LANCHOR4 + add x19, x27, 784 + add x20, x20, :lo12:.LANCHOR0 mov w22, 0 mov w25, 65535 - add x26, x20, :lo12:.LANCHOR4 - add x19, x23, :lo12:.LANCHOR2 + mov w0, 0 bl FtlUpdateVaildLpn -.L2263: - ldrh w1, [x19,784] - ldr x0, [x19,3616] - ldrh w2, [x19,786] - str x0, [x26,1712] - ldr x0, [x19,3664] - str x0, [x26,1720] +.L2215: + ldrh w2, [x19, 2] + ldrh w1, [x19] + ldr x0, [x27, 3608] + str x0, [x26, 1720] + ldr x0, [x27, 3656] + str x0, [x26, 1728] orr w0, w2, w1, lsl 10 - str w0, [x26,1708] - add x0, x24, :lo12:.LANCHOR0 - ldrh w0, [x0,2546] + str w0, [x26, 1716] + ldrh w0, [x20, 2546] sub w0, w0, #1 cmp w2, w0 - blt .L2264 - ldrh w25, [x19,788] - strh wzr, [x19,786] - strh w1, [x19,788] + blt .L2216 + ldrh w25, [x19, 4] + strh wzr, [x19, 2] + strh w1, [x19, 4] bl FtlFreeSysBlkQueueOut - ldr w1, [x19,752] - str w1, [x19,792] + ldr w1, [x27, 752] + str w1, [x19, 8] add w2, w1, 1 - str w2, [x19,752] + str w2, [x27, 752] ubfiz w2, w0, 10, 16 - str w2, [x26,1708] - strh w0, [x19,784] - str w1, [x21,4] - strh w0, [x21,2] -.L2264: - add x1, x24, :lo12:.LANCHOR0 - ldrb w0, [x1,72] - cbz w0, .L2265 - ldr x0, [x19,3616] - ldrh w1, [x1,2554] + str w2, [x26, 1716] + strh w0, [x19] + strh w0, [x21, 2] + str w1, [x21, 4] +.L2216: + ldrb w0, [x20, 72] + cbz w0, .L2217 + ldrh w1, [x20, 2554] + ldr x0, [x27, 3608] bl js_hash - str w0, [x21,12] -.L2265: - mov w1, 1 - add x0, x26, 1704 - mov w2, w1 - mov w3, w1 + str w0, [x21, 12] +.L2217: + mov w3, 1 + add x0, x26, 1712 + mov w1, w3 + mov w2, w3 bl FlashProgPages - ldrh w1, [x19,786] - ldr w2, [x26,1704] - add w1, w1, 1 - cmn w2, #1 - uxth w1, w1 - strh w1, [x19,786] - bne .L2266 - cmp w1, 1 - bne .L2267 - add x1, x24, :lo12:.LANCHOR0 - ldrh w1, [x1,2546] - sub w1, w1, #1 - strh w1, [x19,786] -.L2267: + ldrh w0, [x19, 2] + ldr w1, [x26, 1712] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x19, 2] + cmn w1, #1 + bne .L2218 + cmp w0, 1 + bne .L2219 + ldrh w0, [x20, 2546] + sub w0, w0, #1 + strh w0, [x19, 2] +.L2219: add w22, w22, 1 - uxth w22, w22 + and w22, w22, 65535 cmp w22, 3 - bls .L2263 - add x20, x20, :lo12:.LANCHOR4 + bls .L2215 + add x24, x24, :lo12:.LANCHOR4 + add x23, x23, :lo12:.LANCHOR2 + mov w2, w22 adrp x0, .LC131 add x0, x0, :lo12:.LC131 - mov w2, w22 - add x23, x23, :lo12:.LANCHOR2 - ldr w1, [x20,1708] + ldr w1, [x24, 1716] bl printk mov w0, 1 - str w0, [x23,424] - b .L2261 -.L2266: - cmp w1, 1 - beq .L2263 - cmp w2, 256 - beq .L2263 - mov w0, 65535 - cmp w25, w0 - beq .L2261 - mov w0, w25 - mov w1, 1 - bl FtlFreeSysBlkQueueIn -.L2261: + str w0, [x23, 424] +.L2213: 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 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 +.L2218: + cmp w0, 1 + beq .L2215 + cmp w1, 256 + beq .L2215 + mov w0, 65535 + cmp w25, w0 + beq .L2213 + mov w1, 1 + mov w0, w25 + bl FtlFreeSysBlkQueueIn + b .L2213 .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlSuperblockPowerLostFix .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - add x1, x20, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w1, [x1,424] - cbnz w1, .L2276 - adrp x21, .LANCHOR0 - add x2, x21, :lo12:.LANCHOR0 - ldrb w22, [x2,204] - cbz w22, .L2291 - ldrb w22, [x0,8] - cmp w22, 1 - bne .L2287 - ldrh w24, [x0,4] - b .L2278 -.L2287: - mov w22, w1 -.L2291: - mov w24, 12 -.L2278: + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + add x1, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldr w25, [x1, 424] + cbnz w25, .L2235 + adrp x22, .LANCHOR0 + add x1, x22, :lo12:.LANCHOR0 + ldrb w1, [x1, 204] + cbz w1, .L2246 + ldrb w1, [x0, 8] + cmp w1, 1 + bne .L2246 + ldrh w24, [x0, 4] + mov w25, w1 +.L2237: mov x19, x0 mov w0, -1 - str w0, [x29,96] - add x0, x20, :lo12:.LANCHOR2 + str w0, [x29, 112] + add x0, x21, :lo12:.LANCHOR2 mov w2, 61589 - ldr x23, [x0,3664] - ldr x1, [x0,3616] - str x1, [x29,80] + mov x20, x0 + ldr x23, [x0, 3656] + ldr x1, [x0, 3608] + stp x1, x23, [x29, 96] mov w1, -3 - str x23, [x29,88] - str w1, [x23,8] + str w1, [x23, 8] mov w1, -2 - str w1, [x23,12] + str w1, [x23, 12] ldrh w1, [x19] - strh w1, [x23,2] + strh w1, [x23, 2] strh wzr, [x23] - ldr x1, [x0,3616] + ldr x1, [x0, 3608] str w2, [x1] - ldr x1, [x0,3616] - mov w0, 22136 - movk w0, 0x1234, lsl 16 - str w0, [x1,4] -.L2279: + mov w2, 22136 + movk w2, 0x1234, lsl 16 + ldr x1, [x0, 3608] + str w2, [x1, 4] +.L2238: sub w24, w24, #1 cmn w24, #1 - beq .L2282 - ldrh w0, [x19,4] - cbnz w0, .L2280 -.L2282: - add x20, x20, :lo12:.LANCHOR2 + beq .L2241 + ldrh w0, [x19, 4] + cbnz w0, .L2239 +.L2241: + add x21, x21, :lo12:.LANCHOR2 ldrh w0, [x19] - ldrh w3, [x19,4] - add x21, x21, :lo12:.LANCHOR0 + ldrh w3, [x19, 4] + add x22, x22, :lo12:.LANCHOR0 + ldr x2, [x21, 520] lsl x0, x0, 1 - ldr x2, [x20,520] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] sub w1, w1, w3 - strh w1, [x2,x0] - strb wzr, [x19,6] - ldrh w0, [x21,2544] - strh w0, [x19,2] - strh wzr, [x19,4] - b .L2276 -.L2280: + strh w1, [x2, x0] + strb wzr, [x19, 6] + ldrh w0, [x22, 2544] + strh w0, [x19, 2] + strh wzr, [x19, 4] +.L2235: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] + ldp x29, x30, [sp], 144 + ret +.L2246: + mov w24, 12 + b .L2237 +.L2239: mov x0, x19 bl get_new_active_ppa - str w0, [x29,76] + str w0, [x29, 92] cmn w0, #1 - beq .L2282 - add x1, x20, :lo12:.LANCHOR2 - mov w2, w22 + beq .L2241 + ldr w0, [x20, 756] mov w3, 0 - ldr w0, [x1,756] - str w0, [x23,4] + str w0, [x23, 4] + mov w2, w25 add w0, w0, 1 + mov w1, 1 cmn w0, #1 csel w0, w0, wzr, ne - str w0, [x1,756] - add x0, x29, 72 - mov w1, 1 + str w0, [x20, 756] + add x0, x29, 88 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - b .L2279 -.L2276: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 128 - ret + b .L2238 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 .global ftl_map_blk_gc .type ftl_map_blk_gc, %function ftl_map_blk_gc: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - str x27, [sp,80] + stp x19, x20, [sp, 16] mov x19, x0 + stp x21, x22, [sp, 32] adrp x22, .LANCHOR0 - ldr x20, [x0,16] - ldr x25, [x0,40] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x20, [x0, 16] + ldr x26, [x0, 40] bl ftl_free_no_use_map_blk - ldrh w1, [x19,10] - ldrh w2, [x19,8] + ldrh w1, [x19, 10] + ldrh w2, [x19, 8] sub w1, w1, #4 cmp w2, w1 - blt .L2293 + blt .L2252 ubfiz x0, x0, 1, 16 - ldrh w24, [x20,x0] - cbz w24, .L2293 - ldr w1, [x19,52] - cbnz w1, .L2293 - mov w2, 1 - str w2, [x19,52] - strh w1, [x20,x0] - ldrh w0, [x19,8] - ldrh w1, [x19,2] + ldrh w25, [x20, x0] + cbz w25, .L2252 + ldr w1, [x19, 52] + cbnz w1, .L2252 + mov w1, 1 + str w1, [x19, 52] + strh wzr, [x20, x0] + ldrh w0, [x19, 8] + ldrh w1, [x19, 2] sub w0, w0, #1 - strh w0, [x19,8] + strh w0, [x19, 8] add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2546] + ldrh w0, [x0, 2546] cmp w1, w0 - bcc .L2294 + bcc .L2253 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L2294: - adrp x20, .LANCHOR4 - mov w21, 0 - add x20, x20, :lo12:.LANCHOR4 - adrp x26, .LANCHOR2 - add x20, x20, 1704 -.L2295: - ldrh w0, [x19,6] - cmp w0, w21 - bls .L2304 - ubfiz x0, x21, 2, 16 - add x27, x25, x0 - ldr w1, [x25,x0] - cmp w24, w1, lsr 10 - bne .L2296 - add x1, x26, :lo12:.LANCHOR2 - ldr x2, [x1,3624] - ldr x23, [x1,3664] - mov w1, 1 - str x2, [x20,8] - mov w2, w1 - str x23, [x20,16] - ldr w0, [x25,x0] - str w0, [x20,4] - mov x0, x20 - bl FlashReadPages - ldr w0, [x20] - cmn w0, #1 - bne .L2297 -.L2299: - adrp x1, .LANCHOR4 - str wzr, [x27] - add x1, x1, :lo12:.LANCHOR4 - adrp x0, .LC132 - ldrh w2, [x23,8] - add x0, x0, :lo12:.LC132 - ldr w1, [x1,1708] - bl printk - adrp x0, .LANCHOR2 - mov w1, 1 - add x0, x0, :lo12:.LANCHOR2 - str w1, [x0,424] - b .L2298 -.L2297: - ldrh w0, [x23,8] - cmp w0, w21 - bne .L2299 - ldrh w1, [x23] - ldrh w0, [x19,4] - cmp w1, w0 - bne .L2299 - ldr x2, [x20,8] - mov x0, x19 - mov w1, w21 - bl FtlMapWritePage -.L2296: - add w21, w21, 1 - uxth w21, w21 - b .L2295 -.L2304: - mov w0, w24 +.L2253: + adrp x23, .LANCHOR4 + add x21, x23, :lo12:.LANCHOR4 + adrp x24, .LANCHOR2 + add x21, x21, 1712 + add x28, x24, :lo12:.LANCHOR2 + mov w20, 0 +.L2254: + ldrh w0, [x19, 6] + cmp w0, w20 + bhi .L2259 mov w1, 1 + mov w0, w25 bl FtlFreeSysBlkQueueIn - str wzr, [x19,52] -.L2293: + str wzr, [x19, 52] +.L2252: add x22, x22, :lo12:.LANCHOR0 - ldrh w1, [x19,2] - ldrh w0, [x22,2546] + ldrh w1, [x19, 2] + ldrh w0, [x22, 2546] cmp w1, w0 - bcc .L2298 + bcc .L2257 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L2298: + b .L2257 +.L2259: + ubfiz x0, x20, 2, 16 + add x3, x26, x0 + ldr w1, [x26, x0] + cmp w25, w1, lsr 10 + bne .L2255 + ldr x1, [x28, 3616] + mov w2, 1 + ldr x27, [x28, 3656] + stp x1, x27, [x21, 8] + mov w1, w2 + str x3, [x29, 104] + ldr w0, [x26, x0] + str w0, [x21, 4] + mov x0, x21 + bl FlashReadPages + ldr w0, [x21] + ldr x3, [x29, 104] + cmn w0, #1 + bne .L2256 +.L2258: + add x23, x23, :lo12:.LANCHOR4 + str wzr, [x3] + add x24, x24, :lo12:.LANCHOR2 + adrp x0, .LC132 + ldrh w2, [x27, 8] + add x0, x0, :lo12:.LC132 + ldr w1, [x23, 1716] + bl printk + mov w0, 1 + str w0, [x24, 424] +.L2257: + ldp x19, x20, [sp, 16] mov w0, 0 - 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 + 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 +.L2256: + ldrh w0, [x27, 8] + cmp w0, w20 + bne .L2258 + ldrh w1, [x27] + ldrh w0, [x19, 4] + cmp w1, w0 + bne .L2258 + ldr x2, [x21, 8] + mov w1, w20 + mov x0, x19 + bl FtlMapWritePage +.L2255: + add w20, w20, 1 + and w20, w20, 65535 + b .L2254 .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 2 .global Ftl_write_map_blk_to_last_page @@ -14893,110 +14598,110 @@ ftl_map_blk_gc: Ftl_write_map_blk_to_last_page: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR2 - add x1, x24, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - ldr w20, [x1,424] - ldr x21, [x0,16] - ldr x26, [x0,40] - cbnz w20, .L2306 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x20, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldr w1, [x20, 424] + cbnz w1, .L2265 mov x19, x0 ldrh w0, [x0] - mov w2, 65535 - cmp w0, w2 - bne .L2307 - ldrh w0, [x19,8] + mov w1, 65535 + cmp w0, w1 + ldr x21, [x19, 16] + bne .L2266 + ldrh w0, [x19, 8] add w0, w0, 1 - strh w0, [x19,8] + strh w0, [x19, 8] bl FtlFreeSysBlkQueueOut strh w0, [x21] - strh w20, [x19,2] - ldr w0, [x19,48] - strh w20, [x19] + strh wzr, [x19, 2] + ldr w0, [x19, 48] + strh wzr, [x19] add w0, w0, 1 - str w0, [x19,48] - b .L2306 -.L2307: - ubfiz x0, x0, 1, 16 - ldrh w2, [x19,2] - ldr x23, [x1,3664] - adrp x22, .LANCHOR0 - ldrh w25, [x21,x0] - adrp x21, .LANCHOR4 - add x0, x21, :lo12:.LANCHOR4 - orr w2, w2, w25, lsl 10 - str w2, [x0,1708] - ldr x2, [x1,3616] - str x2, [x0,1712] - str x23, [x0,1720] - 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,2546] - ldr x0, [x1,3616] - mov w1, 255 - lsl w2, w2, 3 - bl ftl_memset - mov w0, w20 -.L2308: - ldrh w1, [x19,6] - cmp w1, w0 - bls .L2315 - ubfiz x3, x0, 2, 32 - ldr w1, [x26,x3] - cmp w25, w1, lsr 10 - bne .L2309 - add x2, x24, :lo12:.LANCHOR2 - add w20, w20, 1 - uxth w20, w20 - ldr x4, [x2,3616] - ubfiz x1, x20, 3, 16 - str w0, [x4,x1] - ldr x2, [x2,3616] - ldr w3, [x26,x3] - add x1, x2, x1 - str w3, [x1,4] -.L2309: - add w0, w0, 1 - uxth w0, w0 - b .L2308 -.L2315: - add x22, x22, :lo12:.LANCHOR0 - ldrb w0, [x22,72] - cbz w0, .L2311 - add x0, x21, :lo12:.LANCHOR4 - ldrh w1, [x22,2554] - ldr x0, [x0,1712] - bl js_hash - str w0, [x23,12] -.L2311: - mov w1, 1 - add x0, x21, :lo12:.LANCHOR4 - add x0, x0, 1704 - mov w2, w1 - mov w3, 0 - bl FlashProgPages - ldrh w0, [x19,2] - add w0, w0, 1 - strh w0, [x19,2] - mov x0, x19 - bl ftl_map_blk_gc -.L2306: + str w0, [x19, 48] +.L2265: mov w0, 0 - 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 x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret +.L2266: + ubfiz x0, x0, 1, 16 + ldrh w1, [x19, 2] + ldr x23, [x20, 3656] + adrp x22, .LANCHOR0 + ldr x25, [x19, 40] + ldrh w24, [x21, x0] + adrp x21, .LANCHOR4 + add x0, x21, :lo12:.LANCHOR4 + orr w1, w1, w24, lsl 10 + str w1, [x0, 1716] + ldr x1, [x20, 3608] + str x1, [x0, 1720] + str x23, [x0, 1728] + mov w1, 255 + 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 w24, [x23, 2] + ldrh w2, [x0, 2546] + ldr x0, [x20, 3608] + lsl w2, w2, 3 + bl ftl_memset + mov w1, 0 + mov w0, 0 +.L2267: + ldrh w2, [x19, 6] + cmp w2, w0 + bhi .L2269 + add x22, x22, :lo12:.LANCHOR0 + ldrb w0, [x22, 72] + cbz w0, .L2270 + add x0, x21, :lo12:.LANCHOR4 + ldrh w1, [x22, 2554] + ldr x0, [x0, 1720] + bl js_hash + str w0, [x23, 12] +.L2270: + add x21, x21, :lo12:.LANCHOR4 + mov w2, 1 + mov w3, 0 + mov w1, w2 + add x0, x21, 1712 + bl FlashProgPages + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + mov x0, x19 + bl ftl_map_blk_gc + b .L2265 +.L2269: + ubfiz x2, x0, 2, 16 + ldr w3, [x25, x2] + cmp w24, w3, lsr 10 + bne .L2268 + add w1, w1, 1 + ldr x4, [x20, 3608] + and w1, w1, 65535 + ubfiz x3, x1, 3, 16 + str w0, [x4, x3] + ldr w4, [x25, x2] + ldr x2, [x20, 3608] + add x2, x2, x3 + str w4, [x2, 4] +.L2268: + add w0, w0, 1 + and w0, w0, 65535 + b .L2267 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 2 .global FtlMapWritePage @@ -15004,142 +14709,142 @@ Ftl_write_map_blk_to_last_page: FtlMapWritePage: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x27, x28, [sp,80] - adrp x27, .LANCHOR4 - mov x28, x0 - stp x23, x24, [sp,48] - add x23, x27, :lo12:.LANCHOR4 - adrp x24, .LC133 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - mov w26, w1 - str x2, [x29,104] - mov w22, 0 - add x23, x23, 1704 - add x24, x24, :lo12:.LC133 -.L2317: - adrp x19, .LANCHOR2 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR4 + add x24, x25, :lo12:.LANCHOR4 + stp x21, x22, [sp, 32] + stp x27, x28, [sp, 80] + mov x22, x25 + stp x19, x20, [sp, 16] + mov w27, w1 + mov x19, x0 + mov x28, x2 + add x24, x24, 1712 + mov w21, 0 +.L2276: + add x1, x23, :lo12:.LANCHOR2 adrp x20, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x1,736] + ldr w0, [x1, 736] add w0, w0, 1 - str w0, [x1,736] + str w0, [x1, 736] add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x28,2] - ldrh w0, [x0,2546] + ldrh w1, [x19, 2] + ldrh w0, [x0, 2546] sub w0, w0, #1 cmp w1, w0 - bge .L2318 - ldrh w1, [x28] + bge .L2277 + ldrh w1, [x19] mov w0, 65535 cmp w1, w0 - bne .L2319 -.L2318: - mov x0, x28 + bne .L2278 +.L2277: + mov x0, x19 bl Ftl_write_map_blk_to_last_page -.L2319: - add x2, x19, :lo12:.LANCHOR2 - ldr w1, [x2,424] - cbnz w1, .L2320 - ldrh w3, [x28] - adrp x21, .LANCHOR4 - ldr x0, [x28,16] - ldrh w25, [x0,x3,lsl 1] - add x3, x27, :lo12:.LANCHOR4 - ldrh w0, [x28,2] - add x3, x3, 1704 - orr w0, w0, w25, lsl 10 - str w0, [x3,4] - ldr x0, [x29,104] - str x0, [x3,8] - ldr x0, [x2,3664] +.L2278: + add x1, x23, :lo12:.LANCHOR2 + ldr w0, [x1, 424] + cbnz w0, .L2291 + ldrh w2, [x19] + add x3, x25, :lo12:.LANCHOR4 + ldr x0, [x19, 16] + add x3, x3, 1712 + ldrh w26, [x0, x2, lsl 1] mov w2, 16 - str x0, [x3,16] - str x3, [x29,96] + ldrh w0, [x19, 2] + str x28, [x3, 8] + orr w0, w0, w26, lsl 10 + str w0, [x3, 4] + ldr x0, [x1, 3656] + mov w1, 0 + str x0, [x3, 16] + str x3, [x29, 104] bl ftl_memset - 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, .L2321 - ldr x0, [x3,8] - ldrh w1, [x1,2554] - str x2, [x29,96] + ldr x3, [x29, 104] + ldr w0, [x19, 48] + ldr x6, [x3, 16] + strh w27, [x6, 8] + str w0, [x6, 4] + ldrh w0, [x19, 4] + strh w0, [x6] + add x0, x20, :lo12:.LANCHOR0 + strh w26, [x6, 2] + ldrb w1, [x0, 72] + cbz w1, .L2280 + ldrh w1, [x0, 2554] + ldr x0, [x3, 8] bl js_hash - ldr x2, [x29,96] - str w0, [x2,12] -.L2321: - mov w1, 1 - mov x0, x23 - mov w2, w1 - mov w3, w1 - bl FlashProgPages - ldrh w0, [x28,2] - add w0, w0, 1 - uxth w0, w0 - strh w0, [x28,2] - ldr w1, [x23] - cmn w1, #1 - bne .L2322 - ldr w1, [x23,4] + str w0, [x6, 12] +.L2280: + mov w3, 1 mov x0, x24 - add w22, w22, 1 + mov w1, w3 + mov w2, w3 + bl FlashProgPages + ldrh w0, [x19, 2] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x19, 2] + ldr w1, [x24] + cmn w1, #1 + bne .L2281 + ldr w1, [x24, 4] + adrp x0, .LC133 + add x0, x0, :lo12:.LC133 + add w21, w21, 1 + and w21, w21, 65535 bl printk - uxth w22, w22 - ldrh w0, [x28,2] + ldrh w0, [x19, 2] cmp w0, 2 - bhi .L2323 + bhi .L2282 add x20, x20, :lo12:.LANCHOR0 - ldrh w0, [x20,2546] + ldrh w0, [x20, 2546] sub w0, w0, #1 - strh w0, [x28,2] -.L2323: - cmp w22, 3 - bls .L2317 - add x21, x21, :lo12:.LANCHOR4 + strh w0, [x19, 2] +.L2282: + cmp w21, 3 + bls .L2276 + add x22, x22, :lo12:.LANCHOR4 + add x23, x23, :lo12:.LANCHOR2 + mov w2, w21 adrp x0, .LC134 add x0, x0, :lo12:.LC134 - mov w2, w22 - add x19, x19, :lo12:.LANCHOR2 - ldr w1, [x21,1708] + ldr w1, [x22, 1716] bl printk mov w0, 1 - str w0, [x19,424] - b .L2320 -.L2322: - cbz w1, .L2325 - strh w25, [x28,60] -.L2325: - cmp w0, 1 - beq .L2326 - cmp w1, 256 - beq .L2326 - ldr w0, [x28,56] - cbz w0, .L2327 -.L2326: - str wzr, [x28,56] - b .L2317 -.L2327: - add x21, x21, :lo12:.LANCHOR4 - ldr x0, [x28,40] - ldr w1, [x21,1708] - str w1, [x0,w26,uxtw 2] -.L2320: + str w0, [x23, 424] +.L2291: + ldp x19, x20, [sp, 16] 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 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 +.L2281: + cbz w1, .L2284 + strh w26, [x19, 60] + cmp w0, 1 + bne .L2285 +.L2286: + str wzr, [x19, 56] + b .L2276 +.L2285: + cmp w1, 256 +.L2299: + beq .L2286 + ldr w0, [x19, 56] + cbnz w0, .L2286 + add x22, x22, :lo12:.LANCHOR4 + ldr x0, [x19, 40] + ldr w1, [x22, 1716] + str w1, [x0, w27, uxtw 2] + b .L2291 +.L2284: + cmp w0, 1 + b .L2299 .size FtlMapWritePage, .-FtlMapWritePage .align 2 .global flush_l2p_region @@ -15147,23 +14852,23 @@ FtlMapWritePage: flush_l2p_region: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - ubfiz x19, x0, 4, 16 - add x20, x20, :lo12:.LANCHOR2 - add x0, x20, 3800 - ldr x1, [x20,704] - add x2, x1, x19 - ldrh w1, [x1,x19] - ldr x2, [x2,8] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + ubfiz x20, x0, 4, 16 + ldr x0, [x19, 704] + add x1, x0, x20 + ldr x2, [x1, 8] + ldrh w1, [x0, x20] + add x0, x19, 3792 bl FtlMapWritePage - ldr x0, [x20,704] - add x19, x0, x19 - ldr w0, [x19,4] - and w0, w0, 2147483647 - str w0, [x19,4] + ldr x0, [x19, 704] + add x0, x0, x20 + ldr w1, [x0, 4] + and w1, w1, 2147483647 + str w1, [x0, 4] mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size flush_l2p_region, .-flush_l2p_region @@ -15174,272 +14879,263 @@ FtlMapTblRecovery: stp x29, x30, [sp, -144]! mov w1, 0 add x29, sp, 0 - stp x23, x24, [sp,48] - mov x23, x0 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - ldrh w25, [x23,6] - adrp x21, .LANCHOR2 - ldr x0, [x0,40] + stp x19, x20, [sp, 16] mov w19, 0 - lsl w2, w25, 2 - ldrh w27, [x23,8] - str x0, [x29,136] - adrp x26, .LANCHOR0 - ldr x24, [x23,16] - ldr x28, [x23,24] + stp x25, x26, [sp, 64] + stp x21, x22, [sp, 32] + mov x22, x0 + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldrh w24, [x0, 6] + ldr x21, [x0, 40] + ldr x23, [x0, 16] + ldr x0, [x0, 24] + lsl w2, w24, 2 + str x0, [x29, 128] + ldrh w0, [x22, 8] + str w0, [x29, 140] + mov x0, x21 bl ftl_memset - add x1, x21, :lo12:.LANCHOR2 - adrp x0, .LANCHOR4 - add x4, x0, :lo12:.LANCHOR4 - str x0, [x29,112] - add x4, x4, 1704 - str x21, [x29,128] - ldr x2, [x1,3616] - sub w0, w27, #1 - ldr x20, [x1,3664] - 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] -.L2336: - cmp w19, w27 - adrp x22, .LANCHOR0 - bge .L2354 - ldr w0, [x29,108] - sxtw x2, w19 + stp wzr, wzr, [x22, 48] + adrp x0, .LANCHOR2 + add x2, x0, :lo12:.LANCHOR2 + adrp x1, .LANCHOR4 + add x4, x1, :lo12:.LANCHOR4 + stp x0, x1, [x29, 104] + add x4, x4, 1712 + ldr w0, [x29, 140] + ldr x5, [x2, 3608] + ldr x20, [x2, 3656] + sub w0, w0, #1 + str x5, [x4, 8] + mov w2, -1 + str x20, [x4, 16] + mov x25, x4 + str w0, [x29, 136] + adrp x0, .LANCHOR0 + add x26, x0, :lo12:.LANCHOR0 + strh w2, [x22] + strh w2, [x22, 2] + mov w2, 1 + str w2, [x22, 56] +.L2303: + ldr w0, [x29, 140] cmp w19, w0 - bne .L2337 - lsl x0, x2, 1 + bge .L2322 + ldr w0, [x29, 136] + sxtw x27, w19 + cmp w19, w0 + bne .L2304 + lsl x0, x27, 1 mov w1, 1 - add x21, x24, x0 - str x2, [x29,128] + add x25, x23, x0 mov w26, 0 - mov w27, -1 - ldrh w0, [x24,x0] + ldrh w0, [x23, x0] bl FtlGetLastWrittenPage - strh w19, [x23] - ldr x2, [x29,128] - sxth w24, w0 + sxth w23, w0 add w0, w0, 1 - strh w0, [x23,2] - add w24, w24, 1 - ldr w0, [x28,x2,lsl 2] - str w0, [x23,48] - ldr x0, [x29,112] + strh w0, [x22, 2] + ldr x0, [x29, 128] + add w23, w23, 1 + strh w19, [x22] + ldr w0, [x0, x27, lsl 2] + str w0, [x22, 48] + ldr x0, [x29, 112] add x19, x0, :lo12:.LANCHOR4 - add x19, x19, 1704 -.L2338: - cmp w26, w24 - bge .L2354 - ldrh w0, [x21] - mov w1, 1 - mov w2, w1 - 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, .L2339 - ldr x0, [x19,16] - ldr w28, [x0,12] - cbz w28, .L2339 - ldr x0, [x19,8] - ldrh w1, [x1,2554] - bl js_hash - cmp w28, w0 - beq .L2339 - str w27, [x19] -.L2339: - ldr w0, [x19] - cmn w0, #1 - beq .L2340 - ldrh w0, [x20,8] - cmp w0, w25 - bcs .L2340 - ldrh w2, [x20] - ldrh w1, [x23,4] - cmp w2, w1 - bne .L2340 - ubfiz x0, x0, 2, 16 - ldr x2, [x29,136] - ldr w1, [x19,4] - str w1, [x2,x0] -.L2340: - add w26, w26, 1 - sxth w26, w26 - b .L2338 -.L2354: - mov x0, x23 - add x22, x22, :lo12:.LANCHOR0 + adrp x0, .LANCHOR0 + add x19, x19, 1712 + add x27, x0, :lo12:.LANCHOR0 +.L2305: + cmp w26, w23 + blt .L2308 +.L2322: + mov x0, x22 bl ftl_free_no_use_map_blk - ldrh w1, [x23,2] - ldrh w0, [x22,2546] + adrp x0, .LANCHOR0 + add x21, x0, :lo12:.LANCHOR0 + ldrh w1, [x22, 2] + ldrh w0, [x21, 2546] cmp w1, w0 - bne .L2343 - mov x0, x23 + bne .L2310 + mov x0, x22 bl ftl_map_blk_alloc_new_blk - b .L2343 -.L2337: - ldr x0, [x29,128] - lsl x2, x2, 1 - add x0, x0, :lo12:.LANCHOR2 - ldr x0, [x0,3616] - str x0, [x21,8] - add x0, x24, x2 - str x0, [x29,120] - add x0, x26, :lo12:.LANCHOR0 - ldrh w1, [x24,x2] - ldrh w0, [x0,2546] - 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 .L2355 - ldrh w1, [x20] - mov w22, 0 - ldrh w0, [x23,4] - cmp w1, w0 - bne .L2376 - ldrh w1, [x20,8] - mov w0, 64245 - cmp w1, w0 - bne .L2376 - mov w5, w22 -.L2345: - add x0, x26, :lo12:.LANCHOR0 - ldrh w0, [x0,2546] - sub w0, w0, #1 - cmp w5, w0 - bge .L2348 - ldr x0, [x29,128] - sbfiz x1, x5, 3, 32 - add x0, x0, :lo12:.LANCHOR2 - ldr x2, [x0,3616] - ldrh w0, [x2,x1] - cmp w0, w25 - bcs .L2346 - add x1, x2, x1 - ubfiz x0, x0, 2, 16 - ldr x2, [x29,136] - ldr w1, [x1,4] - str w1, [x2,x0] -.L2346: - add w5, w5, 1 - sxth w5, w5 - b .L2345 -.L2355: - mov w22, 0 -.L2376: - add x6, x26, :lo12:.LANCHOR0 - ldrh w0, [x6,2546] - cmp w22, w0 - bge .L2348 - ldr x0, [x29,120] - mov w1, 1 - mov w2, w1 - str x6, [x29,96] - ldrh w0, [x0] - orr w0, w22, w0, lsl 10 - str w0, [x21,4] - mov x0, x21 - bl FlashReadPages - ldr x6, [x29,96] - ldrb w0, [x6,72] - cbz w0, .L2349 - ldr x0, [x21,16] - ldr w2, [x0,12] - cbz w2, .L2349 - ldr x0, [x21,8] - ldrh w1, [x6,2554] - str x2, [x29,96] - bl js_hash - ldr x2, [x29,96] - cmp w2, w0 - beq .L2349 - mov w0, -1 - str w0, [x21] -.L2349: - ldr w0, [x21] - cmn w0, #1 - beq .L2350 - ldrh w0, [x20,8] - cmp w0, w25 - bcs .L2350 - ldrh w2, [x20] - ldrh w1, [x23,4] - cmp w2, w1 - bne .L2350 - ubfiz x0, x0, 2, 16 - ldr x2, [x29,136] - ldr w1, [x21,4] - str w1, [x2,x0] -.L2350: - add w5, w22, 1 - sxth w22, w5 - b .L2376 -.L2348: - add w19, w19, 1 - sxth w19, w19 - b .L2336 -.L2343: - mov x0, x23 +.L2310: + mov x0, x22 bl ftl_map_blk_gc - mov x0, x23 + mov x0, x22 bl ftl_map_blk_gc 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 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], 144 ret +.L2308: + ldrh w0, [x25] + mov w2, 1 + mov w1, w2 + orr w0, w26, w0, lsl 10 + str w0, [x19, 4] + mov x0, x19 + bl FlashReadPages + ldrb w0, [x27, 72] + cbz w0, .L2306 + ldr x0, [x19, 16] + ldr w6, [x0, 12] + cbz w6, .L2306 + ldrh w1, [x27, 2554] + ldr x0, [x19, 8] + bl js_hash + cmp w6, w0 + beq .L2306 + mov w0, -1 + str w0, [x19] +.L2306: + ldr w0, [x19] + cmn w0, #1 + beq .L2307 + ldrh w0, [x20, 8] + cmp w24, w0 + bls .L2307 + ldrh w2, [x20] + ldrh w1, [x22, 4] + cmp w2, w1 + bne .L2307 + ubfiz x0, x0, 2, 16 + ldr w1, [x19, 4] + str w1, [x21, x0] +.L2307: + add w26, w26, 1 + sxth w26, w26 + b .L2305 +.L2304: + ldr x0, [x29, 104] + mov w2, 1 + add x28, x0, :lo12:.LANCHOR2 + ldr x0, [x28, 3608] + str x0, [x25, 8] + lsl x0, x27, 1 + add x1, x23, x0 + str x1, [x29, 120] + ldrh w1, [x26, 2546] + ldrh w0, [x23, x0] + sub w1, w1, #1 + orr w0, w1, w0, lsl 10 + mov w1, w2 + str w0, [x25, 4] + mov x0, x25 + bl FlashReadPages + ldr w0, [x25] + cmn w0, #1 + beq .L2324 + ldrh w1, [x20] + ldrh w0, [x22, 4] + cmp w1, w0 + bne .L2324 + ldrh w1, [x20, 8] + mov w0, 64245 + cmp w1, w0 + beq .L2312 +.L2324: + mov w27, 0 + mov w28, -1 +.L2313: + ldrh w0, [x26, 2546] + cmp w27, w0 + bge .L2320 + ldr x0, [x29, 120] + mov w2, 1 + mov w1, w2 + ldrh w0, [x0] + orr w0, w27, w0, lsl 10 + str w0, [x25, 4] + mov x0, x25 + bl FlashReadPages + ldrb w0, [x26, 72] + cbz w0, .L2317 + ldr x0, [x25, 16] + ldr w7, [x0, 12] + cbz w7, .L2317 + ldrh w1, [x26, 2554] + ldr x0, [x25, 8] + bl js_hash + cmp w7, w0 + beq .L2317 + str w28, [x25] +.L2317: + ldr w0, [x25] + cmn w0, #1 + beq .L2318 + ldrh w0, [x20, 8] + cmp w24, w0 + bls .L2318 + ldrh w2, [x20] + ldrh w1, [x22, 4] + cmp w2, w1 + bne .L2318 + ubfiz x0, x0, 2, 16 + ldr w1, [x25, 4] + str w1, [x21, x0] +.L2318: + add w5, w27, 1 + sxth w27, w5 + b .L2313 +.L2312: + mov w0, 0 +.L2314: + ldrh w1, [x26, 2546] + sub w1, w1, #1 + cmp w0, w1 + blt .L2316 +.L2320: + add w19, w19, 1 + sxth w19, w19 + b .L2303 +.L2316: + ldr x2, [x28, 3608] + sbfiz x5, x0, 3, 32 + ldrh w1, [x2, x5] + cmp w24, w1 + bls .L2315 + add x2, x2, x5 + ubfiz x1, x1, 2, 16 + ldr w2, [x2, 4] + str w2, [x21, x1] +.L2315: + add w0, w0, 1 + sxth w0, w0 + b .L2314 .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 .global FtlLoadVonderInfo .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: - adrp x0, .LANCHOR4 adrp x1, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR4 add x1, x1, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! - add x0, x0, 1768 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + add x0, x0, 1776 add x29, sp, 0 - ldrh w2, [x1,2564] - strh w2, [x0,10] + ldrh w2, [x1, 2564] + strh w2, [x0, 10] mov w2, -3962 - strh w2, [x0,4] - ldrh w2, [x1,2590] - strh w2, [x0,8] - ldrh w2, [x1,2566] - ldr x1, [x1,2592] - str x1, [x0,16] + strh w2, [x0, 4] + ldrh w2, [x1, 2590] + strh w2, [x0, 8] + ldrh w2, [x1, 2566] + ldr x1, [x1, 2592] + str x1, [x0, 16] adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 - strh w2, [x0,6] - ldr x2, [x1,3744] - str x2, [x0,24] - ldr x2, [x1,3736] - ldr x1, [x1,3752] - str x2, [x0,32] - str x1, [x0,40] + strh w2, [x0, 6] + ldr x2, [x1, 3736] + str x2, [x0, 24] + ldr x2, [x1, 3728] + ldr x1, [x1, 3744] + stp x2, x1, [x0, 32] bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 @@ -15454,7 +15150,7 @@ FtlLoadMapInfo: bl FtlL2PDataInit adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 3800 + add x0, x0, 3792 bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 @@ -15466,313 +15162,314 @@ FtlLoadMapInfo: FtlVendorPartWrite: stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x23, x24, [sp,48] + stp x27, x28, [sp, 80] + mov w28, w0 + stp x23, x24, [sp, 48] + mov x27, x2 adrp x23, .LANCHOR0 - stp x25, x26, [sp,64] - mov w26, w0 + add w2, w0, w1 add x0, x23, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - mov w28, w1 - add w1, w26, w1 - ldrh w21, [x0,2552] - mov x25, x2 - ldrh w0, [x0,2540] - mov w20, -1 - cmp w1, w0 - bhi .L2380 - adrp x24, .LANCHOR4 - lsr w21, w26, w21 - add x24, x24, :lo12:.LANCHOR4 - mov w20, 0 - adrp x27, .LANCHOR2 - add x24, x24, 1768 -.L2381: - cbz w28, .L2380 - adrp x0, .LANCHOR2 - add x2, x0, :lo12:.LANCHOR2 - ldr x0, [x2,3752] - ldr w4, [x0,w21,uxtw 2] - add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,2550] - uxth w0, w28 - udiv w22, w26, w1 - msub w22, w22, w1, w26 - sub w19, w1, w22 - uxth w19, w19 - cmp w19, w28 - csel w19, w0, w19, hi - cmp w19, w1 - beq .L2383 - cbz w4, .L2383 - ldr x0, [x2,3632] - mov w1, 1 - str x0, [x29,128] - mov w2, w1 - add x0, x29, 120 - str w4, [x29,124] - str xzr, [x29,136] - bl FlashReadPages - b .L2384 -.L2383: - add x0, x27, :lo12:.LANCHOR2 - add x2, x23, :lo12:.LANCHOR0 - mov w1, 0 - ldr x0, [x0,3632] - ldrh w2, [x2,2554] - bl ftl_memset -.L2384: - add x5, x27, :lo12:.LANCHOR2 - lsl w4, w19, 9 - ubfiz x22, x22, 9, 16 - mov w2, w4 - mov x1, x25 - str x4, [x29,104] - ldr x0, [x5,3632] - sub w28, w28, w19 - str x5, [x29,96] - add w26, w26, w19 - add x0, x0, x22 - bl ftl_memcpy - ldr x5, [x29,96] - mov w1, w21 - mov x0, x24 - add w21, w21, 1 - ldr x2, [x5,3632] - bl FtlMapWritePage - cmn w0, #1 - ldr x4, [x29,104] - csinv w20, w20, wzr, ne - add x25, x25, w4, sxtw - b .L2381 -.L2380: - mov w0, w20 - 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] + stp x21, x22, [sp, 32] + stp x19, x20, [sp, 16] + mov w21, w1 + stp x25, x26, [sp, 64] + ldrh w1, [x0, 2540] + cmp w2, w1 + bhi .L2356 + ldrh w22, [x0, 2552] + adrp x25, .LANCHOR2 + add x25, x25, :lo12:.LANCHOR2 + mov w24, 0 + mov x26, x25 + lsr w22, w28, w22 +.L2350: + cbnz w21, .L2355 +.L2348: + mov w0, w24 + 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 ret +.L2355: + ldr x0, [x25, 3744] + ldr w2, [x0, w22, uxtw 2] + add x0, x23, :lo12:.LANCHOR0 + ldrh w1, [x0, 2550] + and w0, w21, 65535 + udiv w20, w28, w1 + msub w20, w20, w1, w28 + sub w19, w1, w20 + and w19, w19, 65535 + cmp w21, w19 + csel w19, w0, w19, cc + cbz w2, .L2352 + cmp w19, w1 + beq .L2352 + ldr x0, [x26, 3624] + str w2, [x29, 124] + mov w2, 1 + stp x0, xzr, [x29, 128] + mov w1, w2 + add x0, x29, 120 + bl FlashReadPages +.L2353: + lsl w3, w19, 9 + ldr x0, [x26, 3624] + lsl w20, w20, 9 + mov w2, w3 + asr w20, w20, 2 + mov x1, x27 + str w3, [x29, 108] + add x0, x0, w20, sxtw 2 + bl ftl_memcpy + sub w21, w21, w19 + ldr x2, [x26, 3624] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + mov w1, w22 + add x0, x0, 1776 + add w28, w28, w19 + add w22, w22, 1 + bl FtlMapWritePage + cmn w0, #1 + ldr w3, [x29, 108] + csinv w24, w24, wzr, ne + add x27, x27, w3, sxtw + b .L2350 +.L2352: + add x0, x23, :lo12:.LANCHOR0 + mov w1, 0 + ldrh w2, [x0, 2554] + ldr x0, [x26, 3624] + bl ftl_memset + b .L2353 +.L2356: + mov w24, -1 + b .L2348 .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 2 .global Ftl_save_ext_data .type Ftl_save_ext_data, %function Ftl_save_ext_data: adrp x0, .LANCHOR2 - mov w1, 19539 add x0, x0, :lo12:.LANCHOR2 + mov w1, 19539 movk w1, 0x4654, lsl 16 - stp x29, x30, [sp, -16]! - add x2, x0, 856 - add x29, sp, 0 - ldr w3, [x0,856] + ldr w3, [x0, 848] cmp w3, w1 - bne .L2394 + bne .L2364 + stp x29, x30, [sp, -16]! + add x2, x0, 848 mov w1, 99 + add x29, sp, 0 movk w1, 0x5000, lsl 16 - str w1, [x2,4] - ldr w1, [x0,744] - str w1, [x2,88] - ldr w1, [x0,748] - str w1, [x2,92] - ldr w1, [x0,740] - str w1, [x2,8] - ldr w1, [x0,728] - str w1, [x2,12] - ldr w1, [x0,720] - str w1, [x2,16] - ldr w1, [x0,736] - str w1, [x2,20] - ldr w1, [x0,764] - str w1, [x2,28] - ldr w1, [x0,448] - str w1, [x2,32] - ldr w1, [x0,724] - str w1, [x2,36] - ldr w1, [x0,732] - str w1, [x2,40] - ldr w1, [x0,772] - str w1, [x2,44] - ldr w1, [x0,776] - str w1, [x2,48] - ldr w1, [x0,848] - ldr w0, [x0,3564] - str w1, [x2,60] + str w1, [x2, 4] + ldr w1, [x0, 744] + str w1, [x2, 88] + ldr w1, [x0, 748] + str w1, [x2, 92] + ldr w1, [x0, 740] + str w1, [x2, 8] + ldr w1, [x0, 728] + str w1, [x2, 12] + ldr w1, [x0, 720] + str w1, [x2, 16] + ldr w1, [x0, 736] + str w1, [x2, 20] + ldr w1, [x0, 764] + str w1, [x2, 28] + ldr w1, [x0, 448] + str w1, [x2, 32] + ldr w1, [x0, 724] + str w1, [x2, 36] + ldr w1, [x0, 732] + str w1, [x2, 40] + ldr w1, [x0, 772] + str w1, [x2, 44] + ldr w1, [x0, 776] + str w1, [x2, 48] + ldr w1, [x0, 1360] + ldr w0, [x0, 3556] + stp w1, w0, [x2, 60] mov w1, 1 - str w0, [x2,64] mov w0, 0 bl FtlVendorPartWrite -.L2394: ldp x29, x30, [sp], 16 ret +.L2364: + ret .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 .global FtlEctTblFlush .type FtlEctTblFlush, %function FtlEctTblFlush: adrp x1, .LANCHOR0+2372 - adrp x2, .LANCHOR2 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr w3, [x1,#:lo12:.LANCHOR0+2372] - mov w1, 32 - cbz w3, .L2397 - add x3, x2, :lo12:.LANCHOR2 - ldr w3, [x3,776] - cmp w3, 39 + ldr w2, [x1, #:lo12:.LANCHOR0+2372] + adrp x1, .LANCHOR2 + cbz w2, .L2372 + add x2, x1, :lo12:.LANCHOR2 mov w3, 4 - csel w1, w1, w3, hi -.L2397: + ldr w2, [x2, 776] + cmp w2, 39 + mov w2, 32 + csel w2, w2, w3, hi +.L2368: adrp x3, .LANCHOR4 add x3, x3, :lo12:.LANCHOR4 - ldrh w4, [x3,1832] + ldrh w4, [x3, 1840] cmp w4, 31 - bhi .L2398 + bhi .L2369 add w4, w4, 1 - mov w1, 1 - strh w4, [x3,1832] -.L2398: - cbnz w0, .L2399 - add x0, x2, :lo12:.LANCHOR2 - ldr x3, [x0,3704] - ldr w0, [x3,20] - add w1, w1, w0 - ldr w0, [x3,16] - cmp w0, w1 - bcc .L2400 -.L2399: - add x2, x2, :lo12:.LANCHOR2 - ldr x0, [x2,3704] - ldr w1, [x0,16] - str w1, [x0,20] - mov w1, 17221 - movk w1, 0x4254, lsl 16 - str w1, [x0] - ldr x0, [x2,3704] - ldrh w1, [x2,3688] - str wzr, [x0,4] + mov w2, 1 + strh w4, [x3, 1840] +.L2369: + cbnz w0, .L2370 + add x0, x1, :lo12:.LANCHOR2 + ldr x0, [x0, 3696] + ldr w3, [x0, 20] + ldr w0, [x0, 16] + add w2, w2, w3 + cmp w0, w2 + bcc .L2375 +.L2370: + add x0, x1, :lo12:.LANCHOR2 + stp x29, x30, [sp, -16]! + add x29, sp, 0 + ldr x1, [x0, 3696] + ldr w2, [x1, 16] + str w2, [x1, 20] + mov w2, 17221 + movk w2, 0x4254, lsl 16 + str w2, [x1] + ldr x2, [x0, 3696] + ldrh w1, [x0, 3680] lsl w3, w1, 9 - str w3, [x0,12] - ldr w3, [x0,8] - ldr x2, [x2,3704] + str wzr, [x2, 4] + str w3, [x2, 12] + ldr w3, [x2, 8] add w3, w3, 1 - str w3, [x0,8] + str w3, [x2, 8] + ldr x2, [x0, 3696] mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2400: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L2372: + mov w2, 32 + b .L2368 +.L2375: + mov w0, 0 + ret .size FtlEctTblFlush, .-FtlEctTblFlush .align 2 .global FtlVendorPartRead .type FtlVendorPartRead, %function FtlVendorPartRead: - stp x29, x30, [sp, -208]! + stp x29, x30, [sp, -176]! + add w3, w0, w1 add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] mov w22, w1 + stp x23, x24, [sp, 48] adrp x1, .LANCHOR0 - stp x23, x24, [sp,48] mov w23, w0 add x0, x1, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - mov x26, x2 - add w3, w23, w22 - ldrh w2, [x0,2540] - str x1, [x29,136] + stp x25, x26, [sp, 64] + mov x25, x2 + stp x19, x20, [sp, 16] + stp x27, x28, [sp, 80] + str x1, [x29, 104] + ldrh w2, [x0, 2540] cmp w3, w2 - ldrh w20, [x0,2552] - mov w0, -1 - bhi .L2405 - adrp x27, .LANCHOR4 + bhi .L2386 + ldrh w21, [x0, 2552] + adrp x26, .LANCHOR2 + add x26, x26, :lo12:.LANCHOR2 + mov w24, 0 + mov x27, x26 + lsr w21, w23, w21 +.L2379: + cbnz w22, .L2385 +.L2377: + mov w0, w24 + 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 + ret +.L2385: + ldr x0, [x26, 3744] + ldr w4, [x0, w21, uxtw 2] + ldr x0, [x29, 104] + add x0, x0, :lo12:.LANCHOR0 + ldrh w19, [x0, 2550] + and w0, w22, 65535 + udiv w20, w23, w19 + msub w20, w20, w19, w23 + sub w19, w19, w20 + and w19, w19, 65535 + cmp w22, w19 + csel w19, w0, w19, cc + lsl w28, w19, 9 + cbz w4, .L2381 + ldr x0, [x27, 3624] + mov w2, 1 + str w4, [x29, 96] + mov w1, w2 + str w4, [x29, 124] + stp x0, xzr, [x29, 128] + add x0, x29, 120 + bl FlashReadPages + adrp x3, .LANCHOR4 + add x3, x3, :lo12:.LANCHOR4 + ldr w0, [x29, 120] + ldr w4, [x29, 96] + cmn w0, #1 + ldr w0, [x3, 1712] + csinv w24, w24, wzr, ne + cmp w0, 256 + bne .L2383 + mov w2, w4 + mov w1, w21 + str x3, [x29, 96] adrp x0, .LC135 add x0, x0, :lo12:.LC135 - add x27, x27, :lo12:.LANCHOR4 - str x0, [x29,128] - lsr w20, w23, w20 - add x0, x27, 1768 - mov w21, 0 - str x0, [x29,120] -.L2406: - cbz w22, .L2414 - adrp x25, .LANCHOR2 - add x4, x25, :lo12:.LANCHOR2 - ldr x0, [x4,3752] - ldr w3, [x0,w20,uxtw 2] - ldr x0, [x29,136] - add x0, x0, :lo12:.LANCHOR0 - ldrh w19, [x0,2550] - uxth w0, w22 - udiv w24, w23, w19 - msub w24, w24, w19, w23 - sub w19, w19, w24 - uxth w19, w19 - cmp w19, w22 - csel w19, w0, w19, hi - lsl w28, w19, 9 - cbz w3, .L2408 - ldr x0, [x4,3632] - mov w1, 1 - str x0, [x29,160] - mov w2, w1 - add x0, x29, 152 - str w3, [x29,156] - str x3, [x29,104] - str x4, [x29,112] - str xzr, [x29,168] - bl FlashReadPages - ldr w0, [x29,152] - ldr x3, [x29,104] - cmn w0, #1 - ldr w0, [x27,1704] - csinv w21, w21, wzr, ne - cmp w0, 256 - bne .L2410 - ldr x0, [x29,128] - mov w1, w20 - mov w2, w3 bl printk - ldr x4, [x29,112] - mov w1, w20 - ldr x0, [x29,120] - ldr x2, [x4,3632] + ldr x3, [x29, 96] + mov w1, w21 + ldr x2, [x27, 3624] + add x0, x3, 1776 bl FtlMapWritePage -.L2410: - add x25, x25, :lo12:.LANCHOR2 - ubfiz x24, x24, 9, 16 - mov x0, x26 +.L2383: + ldr x1, [x27, 3624] + lsl w20, w20, 9 + asr w20, w20, 2 mov w2, w28 - ldr x1, [x25,3632] - add x1, x1, x24 + mov x0, x25 + add x1, x1, w20, sxtw 2 bl ftl_memcpy - b .L2411 -.L2408: - mov x0, x26 - mov w1, w3 - mov w2, w28 - bl ftl_memset -.L2411: - add w20, w20, 1 +.L2384: + add w21, w21, 1 sub w22, w22, w19 add w23, w23, w19 - add x26, x26, w28, sxtw - b .L2406 -.L2414: - mov w0, w21 -.L2405: - 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], 208 - ret + add x25, x25, w28, sxtw + b .L2379 +.L2381: + mov w2, w28 + mov w1, 0 + mov x0, x25 + bl ftl_memset + b .L2384 +.L2386: + mov w24, -1 + b .L2377 .size FtlVendorPartRead, .-FtlVendorPartRead .align 2 .global FtlLoadEctTbl @@ -15781,31 +15478,31 @@ FtlLoadEctTbl: stp x29, x30, [sp, -32]! mov w0, 64 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x19,3688] - ldr x2, [x19,3704] + ldrh w1, [x19, 3680] + ldr x2, [x19, 3696] bl FtlVendorPartRead - ldr x0, [x19,3704] + ldr x0, [x19, 3696] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L2416 - adrp x0, .LC75 + beq .L2389 adrp x1, .LC136 + adrp x0, .LC76 add x1, x1, :lo12:.LC136 - add x0, x0, :lo12:.LC75 + add x0, x0, :lo12:.LC76 bl printk - ldrh w2, [x19,3688] + ldr x0, [x19, 3696] mov w1, 0 - ldr x0, [x19,3704] + ldrh w2, [x19, 3680] lsl w2, w2, 9 bl ftl_memset -.L2416: +.L2389: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlLoadEctTbl, .-FtlLoadEctTbl @@ -15817,262 +15514,265 @@ Ftl_load_ext_data: mov w1, 1 mov w0, 0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x21, [sp,32] add x20, x19, :lo12:.LANCHOR2 - add x21, x20, 856 - mov x2, x21 + stp x21, x22, [sp, 32] + add x22, x20, 848 + mov w21, 19539 + mov x2, x22 bl FtlVendorPartRead - ldr w1, [x20,856] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - beq .L2418 - mov x0, x21 - mov w1, 0 + ldr w0, [x20, 848] + movk w21, 0x4654, lsl 16 + cmp w0, w21 + beq .L2392 mov w2, 512 + mov w1, 0 + mov x0, x22 bl ftl_memset - mov w0, 19539 - movk w0, 0x4654, lsl 16 - str w0, [x20,856] -.L2418: + str w21, [x20, 848] +.L2392: add x0, x19, :lo12:.LANCHOR2 mov w2, 19539 movk w2, 0x4654, lsl 16 - ldr w3, [x0,856] + ldr w3, [x0, 848] cmp w3, w2 - bne .L2419 - ldr w2, [x0,944] - str w2, [x0,744] - ldr w2, [x0,948] - str w2, [x0,748] - ldr w2, [x0,864] - str w2, [x0,740] - ldr w2, [x0,868] - str w2, [x0,728] - ldr w2, [x0,872] - str w2, [x0,720] - ldr w2, [x0,876] - str w2, [x0,736] - ldr w2, [x0,884] - str w2, [x0,764] - ldr w2, [x0,888] - str w2, [x0,448] - ldr w2, [x0,892] - str w2, [x0,724] - ldr w2, [x0,896] - str w2, [x0,732] - ldr w2, [x0,900] - str w2, [x0,772] - ldr w1, [x0,916] - ldr w2, [x0,904] - str w2, [x0,776] - str w1, [x0,848] -.L2419: + bne .L2393 + ldr w2, [x0, 936] + str w2, [x0, 744] + ldr w2, [x0, 940] + str w2, [x0, 748] + ldr w2, [x0, 856] + str w2, [x0, 740] + ldr w2, [x0, 860] + str w2, [x0, 728] + ldr w2, [x0, 864] + str w2, [x0, 720] + ldr w2, [x0, 868] + str w2, [x0, 736] + ldr w2, [x0, 876] + str w2, [x0, 764] + ldr w2, [x0, 880] + str w2, [x0, 448] + ldr w2, [x0, 884] + str w2, [x0, 724] + ldr w2, [x0, 888] + str w2, [x0, 732] + ldr w2, [x0, 892] + ldr w1, [x0, 908] + str w2, [x0, 772] + ldr w2, [x0, 896] + str w1, [x0, 1360] + str w2, [x0, 776] +.L2393: add x0, x19, :lo12:.LANCHOR2 mov w1, 34661 movk w1, 0x1234, lsl 16 - add x0, x0, 856 adrp x20, .LANCHOR0 - ldr w2, [x0,68] - str wzr, [x0,2708] + add x0, x0, 848 + ldr w2, [x0, 68] + str wzr, [x0, 2708] cmp w2, w1 - bne .L2420 + bne .L2394 add x1, x20, :lo12:.LANCHOR0 - ldrb w2, [x1,204] - cbz w2, .L2421 - str wzr, [x0,68] + ldrb w2, [x1, 204] + cbz w2, .L2395 + str wzr, [x0, 68] bl Ftl_save_ext_data - b .L2420 -.L2421: - mov w0, 1 - str w0, [x1,2372] - adrp x0, .LC75 - adrp x1, .LC137 - add x0, x0, :lo12:.LC75 - add x1, x1, :lo12:.LC137 - bl printk -.L2420: +.L2394: add x19, x19, :lo12:.LANCHOR2 add x20, x20, :lo12:.LANCHOR0 - ldr x21, [sp,32] - ldrh w1, [x20,2536] - ldr w2, [x19,760] - ldr w0, [x19,764] - madd w0, w1, w2, w0 - ldrh w1, [x20,2480] + ldp x21, x22, [sp, 32] + ldr w1, [x19, 764] + ldrh w0, [x20, 2536] + ldr w2, [x19, 760] + madd w0, w0, w2, w1 + ldrh w1, [x20, 2480] udiv w0, w0, w1 - str w0, [x19,768] - ldp x19, x20, [sp,16] + str w0, [x19, 768] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L2395: + mov w0, 1 + str w0, [x1, 2372] + adrp x1, .LC137 + adrp x0, .LC76 + add x1, x1, :lo12:.LC137 + add x0, x0, :lo12:.LC76 + bl printk + b .L2394 .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 .global FtlMapBlkWriteDumpData .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: + ldr w1, [x0, 56] + cbz w1, .L2404 stp x29, x30, [sp, -48]! + adrp x2, .LANCHOR2 + add x2, x2, :lo12:.LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - ldr w1, [x0,56] - ldrh w20, [x0,6] - ldr x4, [x0,40] - cbz w1, .L2422 - adrp x3, .LANCHOR2 - str wzr, [x0,56] - add x3, x3, :lo12:.LANCHOR2 - ldr w1, [x3,424] - cbnz w1, .L2422 - adrp x2, .LANCHOR4 - sub w20, w20, #1 - add x1, x2, :lo12:.LANCHOR4 + stp x19, x20, [sp, 16] + str x21, [sp, 32] + str wzr, [x0, 56] + ldr w1, [x2, 424] + ldrh w19, [x0, 6] + ldr x4, [x0, 40] + cbnz w1, .L2397 + adrp x1, .LANCHOR4 + add x3, x1, :lo12:.LANCHOR4 + sub w19, w19, #1 mov x21, x0 - uxth w20, w20 - ldr x0, [x3,3624] - ldr x3, [x3,3664] - add x1, x1, 1704 - str x3, [x1,16] - ubfiz x3, x20, 2, 16 - str x0, [x1,8] - mov x19, x2 - ldr w3, [x4,x3] - str w3, [x1,4] - cbz w3, .L2426 - mov x0, x1 - mov w1, 1 - mov w2, w1 + and w19, w19, 65535 + ldr x0, [x2, 3616] + ldr x2, [x2, 3656] + mov x20, x1 + str x2, [x3, 1728] + ubfiz x2, x19, 2, 16 + str x0, [x3, 1720] + add x3, x3, 1712 + ldr w2, [x4, x2] + str w2, [x3, 4] + cbz w2, .L2401 + mov w2, 1 + mov x0, x3 + mov w1, w2 bl FlashReadPages - b .L2427 -.L2426: - adrp x2, .LANCHOR0+2554 - mov w1, 255 - ldrh w2, [x2,#:lo12:.LANCHOR0+2554] - bl ftl_memset -.L2427: - add x2, x19, :lo12:.LANCHOR4 +.L2402: + add x1, x20, :lo12:.LANCHOR4 mov x0, x21 - mov w1, w20 - ldr x2, [x2,1712] + ldr x2, [x1, 1720] + mov w1, w19 bl FtlMapWritePage -.L2422: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] +.L2397: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2401: + adrp x1, .LANCHOR0+2554 + ldrh w2, [x1, #:lo12:.LANCHOR0+2554] + mov w1, 255 + bl ftl_memset + b .L2402 +.L2404: + ret .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 2 .type FlashReadFacBbtData.part.17, %function FlashReadFacBbtData.part.17: stp x29, x30, [sp, -32]! - mov w3, 0 - adrp x4, .LANCHOR4 + adrp x3, .LANCHOR4 add x29, sp, 0 - str x19, [sp,16] - mov w7, 1 + str x19, [sp, 16] mov x19, x0 - cbnz w1, .L2431 -.L2433: - add x0, x4, :lo12:.LANCHOR4 - ldr w1, [x0,1636] - cmp w3, w1 - bcs .L2431 - ubfx x5, x3, 5, 11 - ldr x0, [x0,1600] - lsl x5, x5, 2 - lsl w6, w7, w3 - add w3, w3, 1 - ldr w1, [x0,x5] - uxth w3, w3 - orr w6, w1, w6 - str w6, [x0,x5] - b .L2433 -.L2431: - add x4, x4, :lo12:.LANCHOR4 - mov x0, x19 - ldr x1, [x4,1600] - bl ftl_memcpy - mov w2, 4 - adrp x0, .LC138 - mov x1, x19 - add x0, x0, :lo12:.LC138 - mov w3, w2 - bl rknand_print_hex - ldr x19, [sp,16] + cbnz w1, .L2408 + add x5, x3, :lo12:.LANCHOR4 mov w0, 0 + mov w7, 1 +.L2409: + ldr w1, [x5, 1644] + cmp w0, w1 + bcc .L2410 +.L2408: + add x3, x3, :lo12:.LANCHOR4 + mov x0, x19 + ldr x1, [x3, 1608] + bl ftl_memcpy + mov w3, 4 + mov x1, x19 + mov w2, w3 + adrp x0, .LC138 + add x0, x0, :lo12:.LC138 + bl rknand_print_hex + mov w0, 0 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2410: + ubfx x1, x0, 5, 11 + ldr x6, [x5, 1608] + lsl x1, x1, 2 + lsl w8, w7, w0 + add w0, w0, 1 + and w0, w0, 65535 + ldr w4, [x6, x1] + orr w4, w4, w8 + str w4, [x6, x1] + b .L2409 .size FlashReadFacBbtData.part.17, .-FlashReadFacBbtData.part.17 .align 2 .global FlashReadFacBbtData .type FlashReadFacBbtData, %function FlashReadFacBbtData: stp x29, x30, [sp, -144]! - adrp x4, .LANCHOR0 add x29, sp, 0 - add x4, x4, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov x22, x0 + stp x23, x24, [sp, 48] mov w23, w1 - ldrh w0, [x4,190] + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + add x1, x1, 176 + stp x21, x22, [sp, 32] + mov x22, x0 + stp x25, x26, [sp, 64] mov w25, w2 - ldrh w3, [x4,188] - adrp x4, .LANCHOR4 - mov x21, x4 mov w26, 61664 - mul w3, w3, w0 - add x0, x4, :lo12:.LANCHOR4 - uxth w3, w3 - sub w20, w3, #1 - ldr x1, [x0,1600] - mul w24, w23, w3 - ldr x0, [x0,1656] - uxth w20, w20 - str x1, [x29,96] - sub w19, w3, #16 - str x0, [x29,104] -.L2436: + ldrh w0, [x1, 14] + ldrh w1, [x1, 12] + mul w0, w0, w1 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + and w0, w0, 65535 + mov x21, x1 + sub w20, w0, #1 + sub w19, w0, #16 + ldr x2, [x1, 1608] + and w20, w20, 65535 + mul w24, w0, w23 + str x2, [x29, 96] + ldr x2, [x1, 1664] + str x2, [x29, 104] +.L2414: cmp w20, w19 - ble .L2444 + bgt .L2417 + mov w0, -1 + b .L2413 +.L2417: add w0, w20, w24 - mov w1, 1 + mov w2, 1 lsl w0, w0, 10 - mov w2, w1 - str w0, [x29,92] + mov w1, w2 + str w0, [x29, 92] add x0, x29, 88 bl FlashReadPages - ldr w0, [x29,88] + ldr w0, [x29, 88] cmn w0, #1 - beq .L2437 - add x0, x21, :lo12:.LANCHOR4 - ldr x0, [x0,1656] + beq .L2415 + ldr x0, [x21, 1664] ldrh w0, [x0] cmp w0, w26 - bne .L2437 - mov w0, w22 - cbz x22, .L2438 - mov x0, x22 - mov w1, w23 + bne .L2415 + cbz x22, .L2418 mov w2, w25 + mov w1, w23 + mov x0, x22 bl FlashReadFacBbtData.part.17 - b .L2438 -.L2437: - sub w20, w20, #1 - uxth w20, w20 - b .L2436 -.L2444: - mov w0, -1 -.L2438: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] +.L2413: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 144 ret +.L2415: + sub w20, w20, #1 + and w20, w20, 65535 + b .L2414 +.L2418: + mov w0, 0 + b .L2413 .size FlashReadFacBbtData, .-FlashReadFacBbtData .align 2 .global FlashGetBadBlockList @@ -16080,261 +15780,255 @@ FlashReadFacBbtData: FlashGetBadBlockList: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x21, [sp,32] + str x21, [sp, 32] mov x21, x0 adrp x0, .LANCHOR0+88 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR4 - ldr x0, [x0,#:lo12:.LANCHOR0+88] - ldrb w2, [x0,13] - ldrh w19, [x0,14] - add x0, x20, :lo12:.LANCHOR4 - mul w19, w2, w19 - ldr x0, [x0,1648] - uxth w19, w19 + add x20, x20, :lo12:.LANCHOR4 + ldr x0, [x0, #:lo12:.LANCHOR0+88] + ldrb w2, [x0, 13] + ldrh w19, [x0, 14] + ldr x0, [x20, 1656] + mul w19, w19, w2 + and w19, w19, 65535 add w2, w19, 7 lsr w2, w2, 3 bl FlashReadFacBbtData cmn w0, #1 - bne .L2446 -.L2450: - mov w1, 0 - b .L2447 -.L2446: - mov w2, 0 - lsr w0, w19, 4 - mov w1, w2 - sub w19, w19, #1 - mov w5, 1 -.L2448: - cmp w2, w19 - bge .L2447 - add x3, x20, :lo12:.LANCHOR4 - ubfx x4, x2, 5, 11 - ldr x6, [x3,1648] - lsl w3, w5, w2 - ldr w4, [x6,x4,lsl 2] - tst w3, w4 - beq .L2449 - add w3, w1, 1 - ubfiz x1, x1, 1, 16 - strh w2, [x21,x1] - uxth w1, w3 -.L2449: - cmp w1, w0 - bcs .L2450 - add w2, w2, 1 - uxth w2, w2 - b .L2448 -.L2447: - ubfiz x1, x1, 1, 16 - mov w0, -1 - ldp x19, x20, [sp,16] - strh w0, [x21,x1] + bne .L2424 +.L2428: mov w0, 0 - ldr x21, [sp,32] +.L2425: + ubfiz x0, x0, 1, 16 + mov w1, -1 + strh w1, [x21, x0] + mov w0, 0 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2424: + lsr w4, w19, 4 + sub w19, w19, #1 + mov w1, 0 + mov w0, 0 + mov w5, 1 +.L2426: + cmp w1, w19 + bge .L2425 + ldr x6, [x20, 1656] + ubfx x3, x1, 5, 11 + lsl w2, w5, w1 + ldr w3, [x6, x3, lsl 2] + tst w2, w3 + beq .L2427 + add w2, w0, 1 + ubfiz x0, x0, 1, 16 + strh w1, [x21, x0] + and w0, w2, 65535 +.L2427: + cmp w0, w4 + bcs .L2428 + add w1, w1, 1 + and w1, w1, 65535 + b .L2426 .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 .global FtlMakeBbt .type FtlMakeBbt, %function FtlMakeBbt: stp x29, x30, [sp, -112]! + adrp x0, .LANCHOR2 + add x1, x0, :lo12:.LANCHOR2 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR2 - add x0, x23, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w21, [x0,424] - cbnz w21, .L2456 - adrp x19, .LANCHOR0 - adrp x20, .LANCHOR4 - add x24, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR4 - add x24, x24, 2624 - add x20, x20, 1704 - mov x25, x24 - mov x26, x20 + 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] + str x0, [x29, 104] + ldr w23, [x1, 424] + cbnz w23, .L2435 bl FtlBbtMemInit + adrp x20, .LANCHOR0 bl FtlLoadFactoryBbt -.L2457: - add x22, x19, :lo12:.LANCHOR0 - ldrh w0, [x22,2494] + add x22, x20, :lo12:.LANCHOR0 + adrp x0, .LANCHOR4 + add x24, x0, :lo12:.LANCHOR4 + add x26, x22, 2656 + add x24, x24, 1712 + add x22, x22, 2636 +.L2436: + add x19, x20, :lo12:.LANCHOR0 + ldrh w0, [x19, 2494] + cmp w23, w0 + bcc .L2442 + mov w21, 0 +.L2443: + ldrh w0, [x19, 2558] + cmp w0, w21 + bhi .L2444 + add x19, x19, 2624 + ldrh w21, [x19, 12] + mov w22, 65535 + sub w21, w21, #1 + and w21, w21, 65535 +.L2445: + ldrh w0, [x19, 12] + sub w0, w0, #48 cmp w21, w0 - bcs .L2475 - add x1, x23, :lo12:.LANCHOR2 - ldrh w28, [x25,12] - ldr x0, [x1,3616] - ldr x27, [x1,3664] - mov w1, 65535 - str x0, [x20,8] - cmp w28, w1 - str x27, [x20,16] - beq .L2458 - ldrh w0, [x22,2542] - mov w1, 1 - mov w2, w1 - madd w28, w21, w0, w28 + ble .L2449 + mov w0, w21 + bl FtlBbmIsBadBlock + cmp w0, 1 + beq .L2446 + mov w0, w21 + bl FlashTestBlk + cbz w0, .L2447 + mov w0, w21 + bl FtlBbmMapBadBlock +.L2446: + sub w21, w21, #1 + and w21, w21, 65535 + b .L2445 +.L2442: + ldr x0, [x29, 104] + adrp x1, .LANCHOR4 + add x21, x1, :lo12:.LANCHOR4 + ldrh w1, [x22] + add x25, x0, :lo12:.LANCHOR2 + add x21, x21, 1712 + mov w2, 65535 + cmp w1, w2 + ldr x0, [x25, 3608] + ldr x27, [x25, 3656] + stp x0, x27, [x21, 8] + beq .L2437 + ldrh w4, [x19, 2542] + mov w2, 1 + madd w28, w4, w23, w1 + mov w1, w2 lsl w0, w28, 10 - str w0, [x20,4] - mov x0, x20 + str w0, [x21, 4] + mov x0, x21 bl FlashReadPages - ldrh w2, [x22,2542] - ldr x0, [x24,32] + ldr x1, [x21, 8] + ldr x0, [x26] + ldrh w2, [x19, 2542] add w2, w2, 7 - ldr x1, [x20,8] lsr w2, w2, 3 bl ftl_memcpy - b .L2459 -.L2458: - mov w1, w21 +.L2438: + mov w0, w28 + add w23, w23, 1 + bl FtlBbmMapBadBlock + add x26, x26, 8 + add x22, x22, 2 + b .L2436 +.L2437: + mov w1, w23 bl FlashGetBadBlockList - ldr x0, [x20,8] - ldr x1, [x24,32] + ldr x0, [x21, 8] + ldr x1, [x26] bl FtlBbt2Bitmap - ldrh w22, [x22,2542] -.L2461: - sub w22, w22, #1 - uxth w22, w22 -.L2460: - add x28, x19, :lo12:.LANCHOR0 - ldrh w0, [x28,2542] - madd w0, w21, w0, w22 + ldrh w21, [x19, 2542] +.L2440: + sub w21, w21, #1 + and w21, w21, 65535 +.L2439: + ldrh w0, [x19, 2542] + madd w0, w23, w0, w21 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L2461 - add x3, x23, :lo12:.LANCHOR2 - mov w1, 0 + beq .L2440 + ldr x0, [x25, 3656] mov w2, 16 - strh w22, [x25,12] - str x3, [x29,104] - ldr x0, [x3,3664] + strh w21, [x22] + mov w1, 0 bl ftl_memset - str wzr, [x27,4] + str wzr, [x27, 4] mov w0, -3872 strh w0, [x27] - ldr x3, [x29,104] - ldrh w0, [x25,12] - strh w0, [x27,2] - ldrh w0, [x28,2542] - ldrh w1, [x25,12] - ldrh w2, [x3,3792] - madd w28, w21, w0, w1 - ldr x1, [x24,32] + ldrh w0, [x22] + strh w0, [x27, 2] + ldrh w4, [x19, 2542] + ldrh w0, [x22] + ldr x1, [x26] + ldrh w2, [x25, 3784] + madd w28, w4, w23, w0 lsl w2, w2, 2 lsl w0, w28, 10 - str w0, [x26,4] - ldr x0, [x26,8] + str w0, [x24, 4] + ldr x0, [x24, 8] bl ftl_memcpy - mov w1, 1 - mov x0, x26 - mov w2, w1 + mov w2, 1 + mov x0, x24 + mov w1, w2 bl FlashEraseBlocks - mov w1, 1 - mov x0, x26 - mov w2, w1 - mov w3, w1 + mov w3, 1 + mov x0, x24 + mov w2, w3 + mov w1, w3 bl FlashProgPages - ldr w0, [x26] + ldr w0, [x24] cmn w0, #1 - bne .L2459 + bne .L2438 mov w0, w28 bl FtlBbmMapBadBlock - b .L2460 -.L2459: - mov w0, w28 + b .L2439 +.L2444: + mov w0, w21 add w21, w21, 1 - add x24, x24, 8 - add x25, x25, 2 bl FtlBbmMapBadBlock - b .L2457 -.L2475: - mov w20, 0 -.L2464: - add x21, x19, :lo12:.LANCHOR0 - ldrh w0, [x21,2558] - cmp w0, w20 - bls .L2476 - mov w0, w20 - add w20, w20, 1 - bl FtlBbmMapBadBlock - uxth w20, w20 - b .L2464 -.L2476: - ldrh w20, [x21,2636] - mov w24, 65535 - sub w20, w20, #1 - uxth w20, w20 -.L2466: - add x22, x21, 2624 - ldrh w0, [x22,12] - sub w0, w0, #48 - cmp w20, w0 - ble .L2470 - mov w0, w20 - bl FtlBbmIsBadBlock - cmp w0, 1 - beq .L2467 - mov w0, w20 - bl FlashTestBlk - cbz w0, .L2468 - mov w0, w20 - bl FtlBbmMapBadBlock - b .L2467 -.L2468: - ldrh w0, [x21,2624] - cmp w0, w24 - bne .L2469 - strh w20, [x21,2624] - b .L2467 -.L2469: - strh w20, [x22,4] - b .L2470 -.L2467: - sub w20, w20, #1 - uxth w20, w20 - b .L2466 -.L2470: - add x23, x23, :lo12:.LANCHOR2 - add x19, x19, :lo12:.LANCHOR0 - mov w2, 2 - ldr x1, [x23,432] - ldrh w0, [x19,2624] - str wzr, [x19,2632] - lsl w0, w0, 10 - str w0, [x1,4] - strh wzr, [x19,2626] - ldr x0, [x23,432] - ldrh w1, [x19,2628] + and w21, w21, 65535 + b .L2443 +.L2447: + ldrh w0, [x19] + cmp w0, w22 + bne .L2448 + strh w21, [x19] + b .L2446 +.L2448: + strh w21, [x19, 4] +.L2449: + ldr x0, [x29, 104] + add x20, x20, :lo12:.LANCHOR0 + add x0, x0, :lo12:.LANCHOR2 + ldrh w1, [x20, 2624] + str wzr, [x20, 2632] + ldr x2, [x0, 432] lsl w1, w1, 10 - str w1, [x0,60] + strh wzr, [x20, 2626] + str w1, [x2, 4] + mov w2, 2 + ldr x0, [x0, 432] + ldrh w1, [x20, 2628] + lsl w1, w1, 10 + str w1, [x0, 60] mov w1, 1 bl FlashEraseBlocks - ldrh w0, [x19,2624] + ldrh w0, [x20, 2624] bl FtlBbmMapBadBlock - ldrh w0, [x19,2628] + ldrh w0, [x20, 2628] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - strh wzr, [x19,2626] - ldr w0, [x19,2632] - ldrh w1, [x19,2628] + strh wzr, [x20, 2626] + ldr w0, [x20, 2632] + ldrh w1, [x20, 2628] add w0, w0, 1 - str w0, [x19,2632] - ldrh w0, [x19,2624] - strh w0, [x19,2628] - strh w1, [x19,2624] + str w0, [x20, 2632] + ldrh w0, [x20, 2624] + strh w0, [x20, 2628] + strh w1, [x20, 2624] bl FtlBbmTblFlush -.L2456: +.L2435: + ldp x19, x20, [sp, 16] 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 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 FtlMakeBbt, .-FtlMakeBbt @@ -16344,193 +16038,192 @@ FtlMakeBbt: log2phys: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] 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,2616] - ldrh w27, [x3,2552] + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w4, [x3, 2616] cmp w0, w4 - bcs .L2478 - add w27, w27, 7 + bcs .L2456 + ldrh w27, [x3, 2552] + mov w25, w0 adrp x20, .LANCHOR2 + str x1, [x29, 120] + add w27, w27, 7 + ldrh w1, [x3, 2582] + str w2, [x29, 116] lsr w24, w0, w27 - str w0, [x29,116] add x0, x20, :lo12:.LANCHOR2 - str w2, [x29,112] - mov x26, x1 - uxth w23, w24 - ldrh w2, [x3,2582] - ldr x22, [x0,704] + and w23, w24, 65535 + ldr x8, [x0, 704] mov x0, 0 - b .L2479 -.L2478: - mov w0, -1 - cbnz w2, .L2480 - str w0, [x1] - b .L2480 -.L2484: - add x0, x0, 1 - add x3, x22, x0, lsl 4 - ldrh w3, [x3,-16] - cmp w3, w23 - beq .L2481 -.L2479: - uxth x19, w0 - cmp w19, w2 - bcc .L2484 +.L2457: + and x19, x0, 65535 + cmp w19, w1 + bcc .L2462 bl select_l2p_ram_region - uxth x19, w0 + and x19, x0, 65535 ubfiz x21, x19, 4, 16 - mov w1, 65535 - add x2, x22, x21 - ldrh w3, [x22,x21] - cmp w3, w1 - bne .L2492 -.L2485: + mov w2, 65535 + add x1, x8, x21 + ldrh w3, [x8, x21] + cmp w3, w2 + beq .L2463 + ldr w1, [x1, 4] + tbz w1, #31, .L2463 + bl flush_l2p_region +.L2463: add x28, x20, :lo12:.LANCHOR2 ubfiz x0, x23, 2, 16 - ldr x1, [x28,3760] - ldr w25, [x1,x0] - cbnz w25, .L2486 - ldr x1, [x29,120] - ldr x0, [x28,704] - add x22, x1, :lo12:.LANCHOR0 + ldr x1, [x28, 3752] + ldr w3, [x1, x0] + cbnz w3, .L2464 + ldr x0, [x28, 704] + add x22, x22, :lo12:.LANCHOR0 mov w1, 255 add x0, x0, x21 - ldrh w2, [x22,2554] - ldr x0, [x0,8] + ldrh w2, [x22, 2554] + ldr x0, [x0, 8] bl ftl_memset - ldr x0, [x28,704] - strh w23, [x0,x21] - ldr x0, [x28,704] + ldr x0, [x28, 704] + strh w23, [x0, x21] + ldr x0, [x28, 704] add x21, x0, x21 - str w25, [x21,4] -.L2481: - 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, .L2482 - add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,704] - add x0, x0, x19, lsl 4 - ldr x0, [x0,8] - ldr w0, [x0,x25,lsl 2] - str w0, [x26] - b .L2483 -.L2482: - add x1, x20, :lo12:.LANCHOR2 - lsl x0, x19, 4 - ldr w3, [x26] - ldr x2, [x1,704] - add x2, x2, x0 - ldr x2, [x2,8] - str w3, [x2,x25,lsl 2] - strh w23, [x1,712] - ldr x2, [x1,704] - add x0, x2, x0 - ldr w2, [x0,4] - orr w2, w2, -2147483648 - str w2, [x0,4] -.L2483: - add x20, x20, :lo12:.LANCHOR2 - ldr x0, [x20,704] - add x19, x0, x19, lsl 4 - mov w0, 0 - ldr w1, [x19,4] - cmn w1, #1 - beq .L2480 - add w1, w1, 1 - str w1, [x19,4] - b .L2480 -.L2492: - ldr w1, [x2,4] - tbz w1, #31, .L2485 - bl flush_l2p_region - b .L2485 -.L2486: - ldr x0, [x28,704] - adrp x6, .LANCHOR4 - add x6, x6, :lo12:.LANCHOR4 - mov w1, 1 - add x0, x0, x21 - add x22, x6, 1704 - mov w2, w1 - str x6, [x29,104] - str w25, [x6,1708] - ldr x0, [x0,8] - str x0, [x6,1712] - ldr x0, [x28,3664] - str x0, [x6,1720] - mov x0, x22 - bl FlashReadPages - ldr x0, [x22,16] - ldr x6, [x29,104] - ldrh w0, [x0,8] - cmp w0, w23 - beq .L2487 - adrp x0, .LC139 - uxth w1, w24 - mov w2, w25 - add x0, x0, :lo12:.LC139 - bl printk - ldr x1, [x22,16] - mov w2, 4 - adrp x0, .LC100 - mov w3, w2 - add x0, x0, :lo12:.LC100 - bl rknand_print_hex - ldr x0, [x29,120] - mov w2, 4 - ldr x1, [x28,3760] - add x22, x0, :lo12:.LANCHOR0 - adrp x0, .LC140 - add x0, x0, :lo12:.LC140 - ldrh w3, [x22,2580] - bl rknand_print_hex - mov w0, 1 - str w0, [x28,424] - b .L2488 -.L2487: - ldr w0, [x6,1704] - cmp w0, 256 - bne .L2488 - and w24, w24, 65535 - adrp x0, .LC141 - mov w1, w24 - mov w2, w25 - add x0, x0, :lo12:.LC141 - bl printk - ldr x2, [x28,704] - add x0, x28, 3800 - mov w1, w24 - add x2, x2, x21 - ldr x2, [x2,8] - bl FtlMapWritePage -.L2488: - add x1, x20, :lo12:.LANCHOR2 - ldr x0, [x1,704] - add x0, x0, x21 - str wzr, [x0,4] - ldr x0, [x1,704] - strh w23, [x0,x21] - b .L2481 -.L2480: - 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] + str wzr, [x21, 4] + b .L2459 +.L2456: + mov w0, -1 + cbnz w2, .L2455 + str w0, [x1] +.L2455: + 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 +.L2462: + add x0, x0, 1 + add x2, x8, x0, lsl 4 + ldrh w2, [x2, -16] + cmp w2, w23 + bne .L2457 +.L2459: + mov x0, 1 + lsl x27, x0, x27 + ldr w0, [x29, 116] + sub w27, w27, #1 + and w25, w27, w25 + and x25, x25, 65535 + cbnz w0, .L2460 + add x0, x20, :lo12:.LANCHOR2 + ldr x1, [x29, 120] + ldr x0, [x0, 704] + add x0, x0, x19, lsl 4 + ldr x0, [x0, 8] + ldr w0, [x0, x25, lsl 2] + str w0, [x1] +.L2461: + add x20, x20, :lo12:.LANCHOR2 + ldr x0, [x20, 704] + add x19, x0, x19, lsl 4 + ldr w0, [x19, 4] + cmn w0, #1 + beq .L2468 + add w0, w0, 1 + str w0, [x19, 4] +.L2468: + mov w0, 0 + b .L2455 +.L2460: + add x2, x20, :lo12:.LANCHOR2 + ldr x1, [x29, 120] + lsl x0, x19, 4 + ldr x3, [x2, 704] + ldr w4, [x1] + mov x1, x0 + add x0, x3, x0 + ldr x0, [x0, 8] + str w4, [x0, x25, lsl 2] + strh w23, [x2, 712] + ldr x0, [x2, 704] + add x0, x0, x1 + ldr w1, [x0, 4] + orr w1, w1, -2147483648 + str w1, [x0, 4] + b .L2461 +.L2464: + ldr x0, [x28, 704] + adrp x6, .LANCHOR4 + add x6, x6, :lo12:.LANCHOR4 + mov w2, 1 + add x0, x0, x21 + add x26, x6, 1712 + str x6, [x29, 104] + mov w1, w2 + str w3, [x6, 1716] + ldr x0, [x0, 8] + str x0, [x6, 1720] + ldr x0, [x28, 3656] + str x0, [x6, 1728] + mov x0, x26 + str w3, [x29, 112] + bl FlashReadPages + ldr x0, [x26, 16] + ldr w3, [x29, 112] + ldr x6, [x29, 104] + ldrh w0, [x0, 8] + cmp w0, w23 + beq .L2465 + mov w2, w3 + and w1, w24, 65535 + adrp x0, .LC139 + add x0, x0, :lo12:.LC139 + bl printk + add x22, x22, :lo12:.LANCHOR0 + ldr x1, [x26, 16] + mov w3, 4 + adrp x0, .LC100 + mov w2, w3 + add x0, x0, :lo12:.LC100 + bl rknand_print_hex + ldrh w3, [x22, 2580] + mov w2, 4 + ldr x1, [x28, 3752] + adrp x0, .LC140 + add x0, x0, :lo12:.LC140 + bl rknand_print_hex + mov w0, 1 + str w0, [x28, 424] +.L2466: + add x1, x20, :lo12:.LANCHOR2 + ldr x0, [x1, 704] + add x0, x0, x21 + str wzr, [x0, 4] + ldr x0, [x1, 704] + strh w23, [x0, x21] + b .L2459 +.L2465: + ldr w0, [x6, 1712] + cmp w0, 256 + bne .L2466 + and w24, w24, 65535 + mov w2, w3 + mov w1, w24 + adrp x0, .LC141 + add x0, x0, :lo12:.LC141 + bl printk + ldr x0, [x28, 704] + mov w1, w24 + add x0, x0, x21 + ldr x2, [x0, 8] + add x0, x28, 3792 + bl FtlMapWritePage + b .L2466 .size log2phys, .-log2phys .align 2 .global FtlWriteDumpData @@ -16538,104 +16231,103 @@ log2phys: FtlWriteDumpData: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x25, [sp,64] - stp x23, x24, [sp,48] + stp x23, x24, [sp, 48] add x23, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - ldr w0, [x23,424] - cbnz w0, .L2493 - ldrh w2, [x23,564] - cbz w2, .L2495 - ldrb w1, [x23,568] - cbnz w1, .L2495 + stp x21, x22, [sp, 32] + str x25, [sp, 64] + ldr w0, [x23, 424] + cbnz w0, .L2471 + ldrh w2, [x23, 564] + cbz w2, .L2473 + ldrb w1, [x23, 568] + cbnz w1, .L2473 adrp x21, .LANCHOR0 - ldrb w1, [x23,567] add x21, x21, :lo12:.LANCHOR0 - ldrh w3, [x21,2544] + ldrb w1, [x23, 567] + ldrh w3, [x21, 2544] mul w1, w1, w3 cmp w2, w1 - beq .L2495 - ldrb w24, [x23,570] - ldr w22, [x21,2616] - ldrh w25, [x21,2472] - cbnz w24, .L2493 - sub w22, w22, #1 + beq .L2473 + ldrb w0, [x23, 570] + cbnz w0, .L2471 + ldr w22, [x21, 2616] add x1, x29, 84 - mov w0, w22 - mov w2, w24 - bl log2phys - ldr x20, [x23,3664] - ldr w0, [x29,84] - ldr x1, [x23,3616] - str w0, [x29,92] - cmn w0, #1 - str w22, [x29,112] - str x1, [x29,96] - str x20, [x29,104] - str w24, [x20,4] - beq .L2497 - add x0, x29, 88 - mov w1, 1 - mov w2, w24 - bl FlashReadPages - b .L2498 -.L2497: - ldr x0, [x23,3616] - mov w1, 255 - ldrh w2, [x21,2554] - bl ftl_memset -.L2498: - add x24, x19, :lo12:.LANCHOR2 - mov w0, -3947 - lsl w25, w25, 2 - strh w0, [x20] - mov w23, 0 - add x21, x24, 560 -.L2499: - cmp w23, w25 - beq .L2500 - ldrh w0, [x21,4] - cbz w0, .L2500 - ldr w0, [x29,92] - add w23, w23, 1 - str w0, [x20,12] - ldrh w0, [x21] - strh w0, [x20,2] - mov x0, x21 - str w22, [x20,8] - bl get_new_active_ppa - str w0, [x29,92] - ldr w1, [x24,756] + ldrh w24, [x21, 2472] + mov w2, 0 + sub w22, w22, #1 + mov w0, w22 + bl log2phys + ldr x20, [x23, 3656] + ldr w0, [x29, 84] + ldr x1, [x23, 3608] + str w0, [x29, 92] + cmn w0, #1 + stp x1, x20, [x29, 96] + str w22, [x29, 112] + str wzr, [x20, 4] + beq .L2475 mov w2, 0 - str w1, [x20,4] - mov w3, w2 - add w1, w1, 1 - add x0, x29, 88 - cmn w1, #1 - csel w1, w1, wzr, ne - str w1, [x24,756] mov w1, 1 + add x0, x29, 88 + bl FlashReadPages +.L2476: + add x25, x19, :lo12:.LANCHOR2 + lsl w24, w24, 2 + add x21, x25, 560 + mov w0, -3947 + mov w23, 0 + strh w0, [x20] +.L2477: + cmp w24, w23 + bne .L2481 +.L2478: + add x19, x19, :lo12:.LANCHOR2 + mov w0, 1 + strb w0, [x19, 570] +.L2471: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] + ldp x29, x30, [sp], 144 + ret +.L2475: + ldrh w2, [x21, 2554] + mov w1, 255 + ldr x0, [x23, 3608] + bl ftl_memset + b .L2476 +.L2481: + ldrh w0, [x21, 4] + cbz w0, .L2478 + ldr w0, [x29, 92] + add w23, w23, 1 + stp w22, w0, [x20, 8] + ldrh w0, [x21] + strh w0, [x20, 2] + mov x0, x21 + bl get_new_active_ppa + str w0, [x29, 92] + ldr w0, [x25, 756] + mov w3, 0 + str w0, [x20, 4] + mov w2, 0 + add w0, w0, 1 + mov w1, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x25, 756] + add x0, x29, 88 bl FlashProgPages ldrh w0, [x21] bl decrement_vpc_count - b .L2499 -.L2500: + b .L2477 +.L2473: add x19, x19, :lo12:.LANCHOR2 - mov w0, 1 - strb w0, [x19,570] - b .L2493 -.L2495: - add x19, x19, :lo12:.LANCHOR2 - strb wzr, [x19,570] -.L2493: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 144 - ret + strb wzr, [x19, 570] + b .L2471 .size FtlWriteDumpData, .-FtlWriteDumpData .align 2 .global l2p_flush @@ -16643,35 +16335,35 @@ FtlWriteDumpData: l2p_flush: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov w19, 0 + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 + str x21, [sp, 32] + add x20, x20, :lo12:.LANCHOR0 adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + mov w19, 0 bl FtlWriteDumpData -.L2511: - add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0,2582] +.L2490: + ldrh w0, [x20, 2582] cmp w0, w19 - bls .L2514 - add x1, x21, :lo12:.LANCHOR2 - ubfiz x0, x19, 4, 16 - ldr x1, [x1,704] - add x0, x1, x0 - ldr w0, [x0,4] - tbz w0, #31, .L2512 - mov w0, w19 - bl flush_l2p_region -.L2512: - add w19, w19, 1 - uxth w19, w19 - b .L2511 -.L2514: + bhi .L2492 mov w0, 0 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L2492: + ldr x1, [x21, 704] + ubfiz x0, x19, 4, 16 + add x0, x1, x0 + ldr w0, [x0, 4] + tbz w0, #31, .L2491 + mov w0, w19 + bl flush_l2p_region +.L2491: + add w19, w19, 1 + and w19, w19, 65535 + b .L2490 .size l2p_flush, .-l2p_flush .align 2 .global allocate_new_data_superblock @@ -16679,330 +16371,315 @@ l2p_flush: allocate_new_data_superblock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x21, [sp,32] add x2, x19, :lo12:.LANCHOR2 + str x21, [sp, 32] + ldr w1, [x2, 424] + cbnz w1, .L2495 ldrh w20, [x0] - ldr w1, [x2,424] - cbnz w1, .L2516 mov x21, x0 mov w0, 65535 cmp w20, w0 - beq .L2517 + beq .L2496 + ldr x0, [x2, 520] ubfiz x1, x20, 1, 16 - ldr x0, [x2,520] - ldrh w0, [x0,x1] - cbz w0, .L2518 + ldrh w0, [x0, x1] + cbz w0, .L2497 mov w0, w20 bl INSERT_DATA_LIST - b .L2517 -.L2518: - mov w0, w20 - bl INSERT_FREE_LIST -.L2517: +.L2496: add x2, x19, :lo12:.LANCHOR2 - strb wzr, [x21,8] + strb wzr, [x21, 8] add x0, x2, 608 cmp x21, x0 - beq .L2519 + beq .L2498 adrp x1, .LANCHOR0 add x4, x1, :lo12:.LANCHOR0 - ldrh w3, [x4,2492] + ldrh w3, [x4, 2492] cmp w3, 1 - beq .L2519 - ldrb w0, [x4,204] - cbz w0, .L2520 -.L2519: + beq .L2498 + ldrb w0, [x4, 204] + cbz w0, .L2499 +.L2498: mov w0, 1 - strb w0, [x21,8] - b .L2521 -.L2520: - add x0, x2, 560 - cmp x21, x0 - bne .L2521 - cmp w3, 3 - beq .L2523 - ldr w0, [x2,848] - cmp w0, 1 - bne .L2524 -.L2523: + strb w0, [x21, 8] +.L2500: add x2, x19, :lo12:.LANCHOR2 - mov w0, 1 - strb w0, [x2,568] -.L2524: - add x1, x1, :lo12:.LANCHOR0 - ldr w0, [x1,2372] - cbz w0, .L2521 - add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x1,776] - cmp w0, 39 - bhi .L2521 - mov w0, 1 - strb w0, [x1,568] -.L2521: - add x3, x19, :lo12:.LANCHOR2 - mov w0, 65535 - ldrh w1, [x3,3880] - cmp w1, w0 - beq .L2526 - cmp w20, w1 - bne .L2527 - ubfiz x2, x1, 1, 16 - ldr x0, [x3,520] - ldrh w0, [x0,x2] - cbz w0, .L2528 -.L2527: - mov w0, w1 + mov w1, 65535 + ldrh w0, [x2, 3872] + cmp w0, w1 + beq .L2505 + cmp w20, w0 + bne .L2506 + ldr x2, [x2, 520] + ubfiz x1, x0, 1, 16 + ldrh w1, [x2, x1] + cbz w1, .L2507 +.L2506: bl update_vpc_list -.L2528: +.L2507: add x19, x19, :lo12:.LANCHOR2 mov w0, -1 - strh w0, [x19,3880] -.L2526: + strh w0, [x19, 3872] +.L2505: mov x0, x21 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2516: +.L2495: mov w0, 0 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L2497: + mov w0, w20 + bl INSERT_FREE_LIST + b .L2496 +.L2499: + add x0, x2, 560 + cmp x21, x0 + bne .L2500 + cmp w3, 3 + beq .L2502 + ldr w0, [x2, 1360] + cmp w0, 1 + bne .L2503 +.L2502: + add x2, x19, :lo12:.LANCHOR2 + mov w0, 1 + strb w0, [x2, 568] +.L2503: + add x1, x1, :lo12:.LANCHOR0 + ldr w0, [x1, 2372] + cbz w0, .L2500 + add x1, x19, :lo12:.LANCHOR2 + ldr w0, [x1, 776] + cmp w0, 39 + bhi .L2500 + mov w0, 1 + strb w0, [x1, 568] + b .L2500 .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 2 .global FtlCheckVpc .type FtlCheckVpc, %function FtlCheckVpc: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! adrp x1, .LANCHOR3 - adrp x0, .LC109 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC109 add x29, sp, 0 - add x1, x1, 216 - add x0, x0, :lo12:.LC109 - 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] - stp x27, x28, [sp,80] - add x21, x20, :lo12:.LANCHOR4 - bl printk - add x0, x21, 1840 - mov w1, 0 - mov x2, 8192 - adrp x22, .LANCHOR0 - bl memset -.L2542: - add x0, x22, :lo12:.LANCHOR0 - adrp x26, .LANCHOR0 - ldr w0, [x0,2616] - cmp w19, w0 - bcs .L2561 - mov w0, w19 - add x1, x29, 124 - mov w2, 0 - bl log2phys - ldr w0, [x29,124] - cmn w0, #1 - beq .L2543 - lsr w0, w0, 10 - bl P2V_block_in_plane - uxth w0, w0 - add x2, x21, 1840 - ldrh w1, [x2,w0,sxtw 1] - add w1, w1, 1 - strh w1, [x2,w0,sxtw 1] -.L2543: - add w19, w19, 1 - b .L2542 -.L2561: - mov w21, 0 - adrp x22, .LC142 - mov w19, w21 - adrp x27, .LANCHOR2 - add x28, x20, :lo12:.LANCHOR4 - add x22, x22, :lo12:.LC142 - mov w4, 65535 -.L2545: - add x0, x26, :lo12:.LANCHOR0 - adrp x23, .LANCHOR2 - ldrh w0, [x0,2480] - cmp w0, w19 - bls .L2562 - add x25, x27, :lo12:.LANCHOR2 - ubfiz x24, x19, 1, 16 - add x23, x28, 1840 - sxtw x5, w19 - ldr x0, [x25,520] - ldrh w3, [x23,w19,sxtw 1] - ldrh w2, [x0,x24] - cmp w2, w3 - beq .L2546 - mov x0, x22 - mov w1, w19 - str x4, [x29,96] - str x5, [x29,104] - bl printk - ldr x0, [x25,520] - ldr x4, [x29,96] - ldrh w0, [x0,x24] - cmp w0, w4 - beq .L2546 - ldr x5, [x29,104] - ldrh w1, [x23,x5,lsl 1] - cmp w1, w0 - csinc w21, w21, wzr, ls -.L2546: - add w19, w19, 1 - uxth w19, w19 - b .L2545 -.L2562: - add x1, x23, :lo12:.LANCHOR2 - ldr x0, [x1,544] - cbz x0, .L2548 - ldr x19, [x1,504] - adrp x24, .LC143 - ldrh w25, [x1,552] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x23, x24, [sp, 48] + add x23, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] mov w22, 0 - sub x19, x0, x19 - mov x0, -6148914691236517206 - asr x19, x19, 1 - add x24, x24, :lo12:.LC143 - add x20, x20, :lo12:.LANCHOR4 - mov w26, 6 - madd x19, x0, x19, x19 - mov w27, 65535 - uxth w19, w19 -.L2549: - cmp w22, w25 - beq .L2548 - add x1, x23, :lo12:.LANCHOR2 - ubfiz x0, x19, 1, 16 - ldr x1, [x1,520] - ldrh w2, [x1,x0] - cbz w2, .L2550 - add x3, x20, 1840 - mov x0, x24 - mov w1, w19 - mov w21, 1 - ldrh w3, [x3,w19,sxtw 1] + add x1, x1, 216 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + add x0, x0, :lo12:.LC109 + adrp x21, check_valid_page_count_table bl printk -.L2550: - add x0, x23, :lo12:.LANCHOR2 - umull x19, w19, w26 - ldr x0, [x0,504] - ldrh w19, [x0,x19] - cmp w19, w27 - beq .L2548 - add w22, w22, 1 - uxth w22, w22 - b .L2549 -.L2548: + add x20, x21, :lo12:check_valid_page_count_table + mov x2, 8192 + mov w1, 0 + mov x0, x20 + bl memset +.L2522: + ldr w0, [x23, 2616] + cmp w22, w0 + bcc .L2524 + add x22, x19, :lo12:.LANCHOR0 + adrp x23, .LC142 + adrp x19, .LANCHOR2 + add x26, x21, :lo12:check_valid_page_count_table + add x25, x19, :lo12:.LANCHOR2 + add x23, x23, :lo12:.LC142 + mov w24, 0 + mov w20, 0 +.L2525: + ldrh w0, [x22, 2480] + cmp w0, w20 + bhi .L2527 + add x0, x19, :lo12:.LANCHOR2 + ldr x19, [x0, 544] + cbz x19, .L2528 + ldr x1, [x0, 504] + adrp x23, .LC143 + ldrh w25, [x0, 552] + mov x20, x0 + sub x19, x19, x1 + mov x1, -6148914691236517206 + asr x19, x19, 1 + movk x1, 0xaaab, lsl 0 + add x21, x21, :lo12:check_valid_page_count_table + add x23, x23, :lo12:.LC143 + mov w22, 0 + mov w26, 6 + mul x19, x19, x1 + and w19, w19, 65535 +.L2529: + cmp w22, w25 + bne .L2531 +.L2528: + mov w1, w24 adrp x0, .LC144 - mov w1, w21 add x0, x0, :lo12:.LC144 bl printk - 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 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 +.L2524: + mov w2, 0 + add x1, x29, 108 + mov w0, w22 + bl log2phys + ldr w0, [x29, 108] + cmn w0, #1 + beq .L2523 + lsr w0, w0, 10 + bl P2V_block_in_plane + and x0, x0, 65535 + ldrh w1, [x20, x0, lsl 1] + add w1, w1, 1 + strh w1, [x20, x0, lsl 1] +.L2523: + add w22, w22, 1 + b .L2522 +.L2527: + ldr x0, [x25, 520] + ubfiz x28, x20, 1, 16 + sxtw x27, w20 + ldrh w2, [x0, x28] + ldrh w3, [x26, x27, lsl 1] + cmp w2, w3 + beq .L2526 + mov w1, w20 + mov x0, x23 + bl printk + ldr x0, [x25, 520] + mov w1, 65535 + ldrh w0, [x0, x28] + cmp w0, w1 + beq .L2526 + ldrh w1, [x26, x27, lsl 1] + cmp w1, w0 + csinc w24, w24, wzr, ls +.L2526: + add w20, w20, 1 + and w20, w20, 65535 + b .L2525 +.L2531: + ldr x1, [x20, 520] + ubfiz x0, x19, 1, 16 + ldrh w2, [x1, x0] + cbz w2, .L2530 + ldrh w3, [x21, w19, sxtw 1] + mov w24, 1 + mov w1, w19 + mov x0, x23 + bl printk +.L2530: + ldr x0, [x20, 504] + umull x19, w19, w26 + ldrh w19, [x0, x19] + mov w0, 65535 + cmp w19, w0 + beq .L2528 + add w22, w22, 1 + and w22, w22, 65535 + b .L2529 .size FtlCheckVpc, .-FtlCheckVpc .align 2 .global Ftlscanalldata .type Ftlscanalldata, %function Ftlscanalldata: - sub sp, sp, #80 + sub sp, sp, #96 adrp x0, .LC145 - add x0, x0, :lo12:.LC145 mov w1, 0 - stp x29, x30, [sp,16] + add x0, x0, :lo12:.LC145 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] - adrp x19, .LANCHOR4 - mov w20, 0 - stp x21, x22, [sp,48] - add x19, x19, :lo12:.LANCHOR4 - adrp x21, .LC146 - add x21, x21, :lo12:.LC146 - add x19, x19, 1704 + stp x19, x20, [sp, 32] + mov w19, 0 + stp x21, x22, [sp, 48] + adrp x22, .LANCHOR4 + add x20, x22, :lo12:.LANCHOR4 + adrp x21, .LANCHOR0 + add x20, x20, 1712 + add x21, x21, :lo12:.LANCHOR0 + str x23, [sp, 64] bl printk -.L2564: - adrp x0, .LANCHOR0+2616 - ldr w0, [x0,#:lo12:.LANCHOR0+2616] - cmp w20, w0 - bcs .L2571 - mov w0, w20 - add x1, x29, 60 +.L2543: + ldr w0, [x21, 2616] + cmp w19, w0 + bcc .L2549 + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x29, x30, [sp, 16] + ldr x23, [sp, 64] + add sp, sp, 96 + ret +.L2549: mov w2, 0 + add x1, x29, 76 + mov w0, w19 bl log2phys - and w0, w20, 2047 - cbnz w0, .L2565 - ldr w2, [x29,60] - mov x0, x21 - mov w1, w20 + tst x19, 2047 + bne .L2544 + ldr w2, [x29, 76] + adrp x0, .LC146 + mov w1, w19 + add x0, x0, :lo12:.LC146 bl printk -.L2565: - ldr w0, [x29,60] +.L2544: + ldr w0, [x29, 76] cmn w0, #1 - beq .L2567 - adrp x1, .LANCHOR2 - str w0, [x19,4] - add x1, x1, :lo12:.LANCHOR2 + beq .L2546 + stp wzr, w0, [x20] + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 mov w2, 0 - str w20, [x19,24] - str wzr, [x19] - ldr x0, [x1,3616] - ldr x22, [x1,3664] + str w19, [x20, 24] + ldr x1, [x0, 3608] + ldr x23, [x0, 3656] + mov x0, x20 + stp x1, x23, [x20, 8] mov w1, 1 - str x0, [x19,8] - mov x0, x19 - str x22, [x19,16] bl FlashReadPages - ldr w0, [x19] - cmn w0, #1 - beq .L2568 + ldr w0, [x20] cmp w0, 256 - beq .L2568 - ldr w0, [x22,8] - cmp w0, w20 - beq .L2567 -.L2568: - adrp x2, .LANCHOR4 - mov w1, w20 - add x2, x2, :lo12:.LANCHOR4 - add x2, x2, 1704 - ldr x7, [x2,8] - ldr x6, [x2,16] - ldr w0, [x7,4] - str w0, [sp] + ccmn w0, #1, 4, ne + beq .L2547 + ldr w0, [x23, 8] + cmp w19, w0 + beq .L2546 +.L2547: + add x0, x22, :lo12:.LANCHOR4 + ldr x2, [x0, 1720] + ldr x1, [x0, 1728] + ldr w3, [x2, 4] + str w3, [sp] + ldp w3, w4, [x1] + ldp w5, w6, [x1, 8] + mov w1, w19 + ldr w7, [x2] + ldr w2, [x0, 1716] adrp x0, .LC147 add x0, x0, :lo12:.LC147 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w2, [x2,4] - ldr w6, [x6,12] - ldr w7, [x7] bl printk -.L2567: - add w20, w20, 1 - b .L2564 -.L2571: - sub sp, x29, #16 - ldp x19, x20, [sp,32] - ldp x21, x22, [sp,48] - ldp x29, x30, [sp,16] - add sp, sp, 80 - ret +.L2546: + add w19, w19, 1 + b .L2543 .size Ftlscanalldata, .-Ftlscanalldata .align 2 .global FtlReUsePrevPpa @@ -17010,827 +16687,793 @@ Ftlscanalldata: FtlReUsePrevPpa: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 - lsr x0, x1, 10 - stp x21, x22, [sp,32] - str w1, [x29,60] - adrp x21, .LANCHOR2 + stp x19, x20, [sp, 16] + mov w19, w0 + str x21, [sp, 32] + lsr w0, w1, 10 + str w1, [x29, 60] bl P2V_block_in_plane - uxth w0, w0 - add x2, x21, :lo12:.LANCHOR2 - ubfiz x22, x0, 1, 16 - ldr x3, [x2,520] - ldrh w1, [x3,x22] - cbnz w1, .L2573 - ldr x19, [x2,544] - cbz x19, .L2574 - ldrh w3, [x2,552] + adrp x20, .LANCHOR2 + add x2, x20, :lo12:.LANCHOR2 + and w0, w0, 65535 + ubfiz x21, x0, 1, 16 + ldr x3, [x2, 520] + ldrh w1, [x3, x21] + cbnz w1, .L2552 + ldr x8, [x2, 544] + cbz x8, .L2553 + ldrh w3, [x2, 552] mov x4, -6148914691236517206 - ldr x2, [x2,504] + ldr x2, [x2, 504] + movk x4, 0xaaab, lsl 0 mov w5, 65535 - sub x19, x19, x2 - asr x19, x19, 1 - madd x19, x4, x19, x19 + sub x8, x8, x2 + asr x8, x8, 1 + mul x8, x8, x4 mov w4, 6 - uxth w19, w19 -.L2575: + and w8, w8, 65535 +.L2554: cmp w1, w3 - beq .L2574 - cmp w19, w0 - bne .L2576 - add x21, x21, :lo12:.LANCHOR2 - mov w1, w19 - add x0, x21, 544 + beq .L2553 + cmp w8, w0 + bne .L2555 + add x20, x20, :lo12:.LANCHOR2 + mov w1, w8 + add x0, x20, 544 bl List_remove_node - ldrh w0, [x21,552] + ldrh w0, [x20, 552] sub w0, w0, #1 - strh w0, [x21,552] - mov w0, w19 + strh w0, [x20, 552] + mov w0, w8 bl INSERT_DATA_LIST - ldr x1, [x21,520] - ldrh w0, [x1,x22] + ldr x1, [x20, 520] + ldrh w0, [x1, x21] add w0, w0, 1 - strh w0, [x1,x22] - b .L2574 -.L2576: - umull x19, w19, w4 - ldrh w19, [x2,x19] - cmp w19, w5 - beq .L2574 - add w1, w1, 1 - uxth w1, w1 - b .L2575 -.L2573: - add w1, w1, 1 - strh w1, [x3,x22] -.L2574: + strh w0, [x1, x21] +.L2553: add x1, x29, 60 - mov w0, w20 mov w2, 1 + mov w0, w19 bl log2phys - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 64 ret +.L2555: + umull x8, w8, w4 + ldrh w8, [x2, x8] + cmp w8, w5 + beq .L2553 + add w1, w1, 1 + and w1, w1, 65535 + b .L2554 +.L2552: + add w1, w1, 1 + strh w1, [x3, x21] + b .L2553 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa .align 2 .global FtlRecoverySuperblock .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: - stp x29, x30, [sp, -208]! + stp x29, x30, [sp, -192]! mov w2, 65535 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 + stp x19, x20, [sp, 16] + mov x20, x0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] ldrh w0, [x0] cmp w0, w2 - beq .L2742 - ldrh w0, [x19,2] + beq .L2707 adrp x23, .LANCHOR0 - str w0, [x29,188] - ldrb w0, [x19,6] - str w0, [x29,176] add x0, x23, :lo12:.LANCHOR0 - ldr w1, [x29,188] - ldrh w0, [x0,2544] - cmp w0, w1 - bne .L2584 - strh wzr, [x19,4] - b .L2748 -.L2584: - ldrh w0, [x19,16] + ldrh w28, [x20, 2] + ldrh w0, [x0, 2544] + cmp w0, w28 + bne .L2564 + strh wzr, [x20, 4] +.L2714: + strb wzr, [x20, 6] +.L2707: + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 192 + ret +.L2564: + ldrh w0, [x20, 16] mov w1, 0 -.L2585: +.L2565: cmp w0, w2 - bne .L2751 - add w1, w1, 1 - uxth w1, w1 - add x0, x19, w1, sxtw 1 - ldrh w0, [x0,16] - b .L2585 -.L2751: - ldrb w1, [x19,8] + beq .L2566 + ldrb w1, [x20, 6] + str w1, [x29, 152] + ldrb w1, [x20, 8] cmp w1, 1 - bne .L2587 + bne .L2567 bl FtlGetLastWrittenPage + mov w21, w0 cmn w0, #1 - mov w20, w0 - beq .L2588 + beq .L2568 add x0, x23, :lo12:.LANCHOR0 - mov w24, w20 - ldrb w1, [x0,204] - cbnz w1, .L2662 + ldrb w1, [x0, 204] + cbnz w1, .L2640 add x0, x0, 208 - ldrh w24, [x0,w20,sxtw 1] - b .L2662 -.L2587: - mov w1, 0 - bl FtlGetLastWrittenPage - cmn w0, #1 - mov w20, w0 - beq .L2588 - mov w24, w0 -.L2662: + ldrh w24, [x0, w21, sxtw 1] +.L2569: add x0, x23, :lo12:.LANCHOR0 - mov x2, x19 + add x1, x20, 16 + mov x4, x1 + str x1, [x29, 168] + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldrh w8, [x0, 2556] mov w26, 0 - mov w8, 65535 - mov w9, 56 - adrp x10, .LANCHOR2 - ldrh w4, [x0,2472] + ldrh w0, [x0, 2472] + mov w9, 65535 + mov w10, 56 mov w11, 4 - ldrh w7, [x0,2556] - add x4, x19, x4, lsl 1 - b .L2590 -.L2588: - strh wzr, [x19,2] -.L2748: - strb wzr, [x19,6] - b .L2742 -.L2592: - ldrh w1, [x2,16] - cmp w1, w8 - beq .L2591 - add x5, x10, :lo12:.LANCHOR2 - orr w1, w24, w1, lsl 10 - umull x0, w26, w9 - add w3, w26, 1 - ldr x6, [x5,3592] - add x6, x6, x0 - str w1, [x6,4] - ldr x1, [x5,3592] - ldr x5, [x5,1408] - add x0, x1, x0 - mul w1, w26, w7 - uxth w26, w3 - str xzr, [x0,8] - sdiv w1, w1, w11 - add x1, x5, w1, sxtw 2 - str x1, [x0,16] -.L2591: - add x2, x2, 2 -.L2590: - cmp x2, x4 - bne .L2592 - ldrb w0, [x19,8] - str wzr, [x29,184] + add x0, x0, 8 + add x0, x20, x0, lsl 1 +.L2570: + cmp x4, x0 + bne .L2572 + ldrb w0, [x20, 8] cmp w0, 1 - bne .L2593 + bne .L2641 add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cmp w0, wzr + ldrb w0, [x0, 204] + cmp w0, 0 cset w0, ne - str w0, [x29,184] -.L2593: - adrp x21, .LANCHOR2 - ldr w2, [x29,184] - add x22, x21, :lo12:.LANCHOR2 + str w0, [x29, 164] +.L2573: + adrp x19, .LANCHOR2 + add x25, x19, :lo12:.LANCHOR2 + ldr w2, [x29, 164] mov w1, w26 mov x27, 0 - mov w25, 65535 - mov x28, 56 - ldr x0, [x22,3592] + ldr x0, [x25, 3584] bl FlashReadPages - ldr w0, [x22,756] - adrp x22, .LC148 - str w0, [x29,168] - add x22, x22, :lo12:.LC148 - uxth w0, w24 - str w0, [x29,160] -.L2594: - uxth w2, w27 - cmp w2, w26 - bcs .L2601 - add x6, x21, :lo12:.LANCHOR2 - mul x0, x27, x28 - ldr x4, [x6,3592] - add x1, x4, x0 - ldr w0, [x4,x0] - cbnz w0, .L2595 - ldr x7, [x1,16] - ldr w4, [x7,4] - cmn w4, #1 - beq .L2596 - ldr w1, [x6,756] - mov w0, w4 - str x7, [x29,128] - str x2, [x29,136] - str x4, [x29,144] - str x6, [x29,152] - bl ftl_cmp_data_ver - ldr x6, [x29,152] - ldr x4, [x29,144] - ldr x2, [x29,136] - ldr x7, [x29,128] - cbz w0, .L2596 - add w4, w4, 1 - str w4, [x6,756] -.L2596: - ldr w0, [x7] - cmn w0, #1 - bne .L2597 -.L2601: - cmp w2, w26 - bne .L2743 - add x0, x21, :lo12:.LANCHOR2 - add w20, w20, 1 - uxth w20, w20 - ldr x0, [x0,3592] - ldr w0, [x0,4] - b .L2744 -.L2595: - ldr w1, [x1,4] - mov x0, x22 - bl printk - ldr w25, [x29,160] - adrp x0, .LANCHOR5 - ldrh w1, [x19] - add x0, x0, :lo12:.LANCHOR5 - strh w1, [x0,1328] -.L2597: - add x27, x27, 1 - b .L2594 -.L2743: - add x0, x21, :lo12:.LANCHOR2 - mov w1, 56 - uxth w20, w20 - umull x2, w2, w1 - ldr x0, [x0,3592] - add x2, x0, x2 - ldr w0, [x2,4] -.L2744: - lsr x0, x0, 10 - bl P2V_plane - uxth w26, w0 - ldrb w1, [x19,8] - cmp w1, 1 - bne .L2603 - add x0, x23, :lo12:.LANCHOR0 - ldrb w2, [x0,204] - cbnz w2, .L2603 - add x0, x0, 208 - ldrh w20, [x0,w20,sxtw 1] -.L2603: - add x0, x23, :lo12:.LANCHOR0 - ldrh w0, [x0,2544] - cmp w0, w20 - bne .L2604 - strh w20, [x19,2] - strb wzr, [x19,6] - strh wzr, [x19,4] -.L2604: - ldrh w0, [x29,176] - str w0, [x29,152] - ldr w0, [x29,188] - cmp w20, w0 - bne .L2605 - ldr w0, [x29,152] + ldr w22, [x25, 756] + adrp x0, .LC148 + add x0, x0, :lo12:.LC148 + sub w22, w22, #1 + str x0, [x29, 144] + mov w5, 65535 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + str x0, [x29, 136] +.L2574: + and w0, w27, 65535 cmp w26, w0 - beq .L2749 -.L2605: - ldr w0, [x29,168] - sub w22, w0, #1 - mov w0, 65535 - cmp w25, w0 - bne .L2606 - cbnz w1, .L2607 -.L2606: - add x0, x21, :lo12:.LANCHOR2 - uxth w5, w24 - ldr w1, [x0,3892] - cmn w1, #1 - bne .L2608 - str w22, [x0,3892] -.L2608: - add x0, x21, :lo12:.LANCHOR2 - ldr w25, [x29,188] - ldr w6, [x0,3892] - ldr w0, [x29,188] - add w0, w0, 7 - cmp w0, w24, uxth - bge .L2609 - sub w25, w5, #7 - uxth w25, w25 -.L2609: - mov w3, -1 - add x28, x21, :lo12:.LANCHOR2 - mov w27, w3 - mov w4, 65535 - mov w7, 56 - add x8, x28, 1508 -.L2610: - cmp w25, w5 - bhi .L2623 + bhi .L2579 + bne .L2577 + add x0, x19, :lo12:.LANCHOR2 + add w21, w21, 1 + and w21, w21, 65535 + ldr x0, [x0, 3584] + ldr w0, [x0, 4] +.L2709: + lsr w0, w0, 10 + bl P2V_plane + ldrb w1, [x20, 8] + and w27, w0, 65535 + cmp w1, 1 + bne .L2581 add x0, x23, :lo12:.LANCHOR0 - mov w24, 0 - ldrh w2, [x0,2472] - mov x0, x19 - add x2, x19, x2, lsl 1 -.L2624: - cmp x0, x2 - beq .L2752 - ldrh w1, [x0,16] - cmp w1, w4 - beq .L2611 - umull x9, w24, w7 - ldr x10, [x28,3592] - add w24, w24, 1 - orr w1, w25, w1, lsl 10 - add x9, x10, x9 - uxth w24, w24 - str w1, [x9,4] -.L2611: - add x0, x0, 2 - b .L2624 -.L2752: - ldr x0, [x28,3592] - mov w1, w24 - ldr w2, [x29,184] - str x8, [x29,128] - str x7, [x29,136] - str x4, [x29,144] - str x6, [x29,160] - str x5, [x29,168] - str x3, [x29,176] - bl FlashReadPages + ldrb w2, [x0, 204] + cbnz w2, .L2581 + add x0, x0, 208 + ldrh w21, [x0, w21, sxtw 1] +.L2581: add x0, x23, :lo12:.LANCHOR0 - ldr x3, [x29,176] - ldr x5, [x29,168] + ldrh w0, [x0, 2544] + cmp w0, w21 + bne .L2582 + strh w21, [x20, 2] + strb wzr, [x20, 6] + strh wzr, [x20, 4] +.L2582: + ldrh w0, [x29, 152] + cmp w21, w28 + str w0, [x29, 144] + ccmp w27, w0, 0, eq + bne .L2583 +.L2715: + mov w2, w27 + mov w1, w21 + mov x0, x20 + bl ftl_sb_update_avl_pages + b .L2707 +.L2566: + add w1, w1, 1 + and w1, w1, 65535 + add x0, x20, w1, sxtw 1 + ldrh w0, [x0, 16] + b .L2565 +.L2567: mov w1, 0 - ldr x6, [x29,160] - sxtw x10, w25 - ldrb w9, [x0,204] - ldr x0, [x28,3592] - ldr x4, [x29,144] - ldr x7, [x29,136] - add x0, x0, 16 - ldr x8, [x29,128] -.L2613: - cmp w1, w24 - beq .L2753 - ldr w2, [x0,-16] - cbnz w2, .L2614 - ldr x2, [x0] - ldrh w11, [x2] - cmp w11, w4 - beq .L2615 - ldr w2, [x2,4] - cmn w2, #1 - beq .L2615 - ldr w27, [x28,3892] + bl FtlGetLastWrittenPage + mov w21, w0 + cmn w0, #1 + beq .L2568 +.L2640: + mov w24, w21 + b .L2569 +.L2568: + strh wzr, [x20, 2] + b .L2714 +.L2572: + ldrh w2, [x4] + cmp w2, w9 + beq .L2571 + umull x7, w26, w10 + ldr x6, [x1, 3584] + orr w2, w24, w2, lsl 10 + add w3, w26, 1 + add x6, x6, x7 + str w2, [x6, 4] + mul w2, w26, w8 + and w26, w3, 65535 + ldr x5, [x1, 3584] + ldr x6, [x1, 1400] + sdiv w2, w2, w11 + add x5, x5, x7 + add x2, x6, w2, sxtw 2 + stp xzr, x2, [x5, 8] +.L2571: + add x4, x4, 2 + b .L2570 +.L2641: + str wzr, [x29, 164] + b .L2573 +.L2579: + mov x0, 56 + ldr x4, [x25, 3584] + mul x0, x27, x0 + add x1, x4, x0 + ldr w0, [x4, x0] + cbnz w0, .L2575 + ldr x6, [x1, 16] + ldr w4, [x6, 4] + cmn w4, #1 + beq .L2576 + ldr w1, [x25, 756] + mov w0, w4 + bl ftl_cmp_data_ver + cbz w0, .L2576 + add w4, w4, 1 + str w4, [x25, 756] +.L2576: + ldr w0, [x6] + cmn w0, #1 + bne .L2578 +.L2577: + add x0, x19, :lo12:.LANCHOR2 + and x27, x27, 65535 + mov x1, 56 + and w21, w21, 65535 + ldr x0, [x0, 3584] + madd x27, x27, x1, x0 + ldr w0, [x27, 4] + b .L2709 +.L2575: + ldr w1, [x1, 4] + ldr x0, [x29, 144] + bl printk + ldr x1, [x29, 136] + and w5, w24, 65535 + ldrh w0, [x20] + strh w0, [x1, 1842] +.L2578: + add x27, x27, 1 + b .L2574 +.L2583: + mov w0, 65535 + cmp w5, w0 + bne .L2584 + cbnz w1, .L2585 +.L2584: + add x0, x19, :lo12:.LANCHOR2 + and w6, w24, 65535 + ldr w1, [x0, 3884] + cmn w1, #1 + bne .L2586 + str w22, [x0, 3884] +.L2586: + add x0, x19, :lo12:.LANCHOR2 + ldr w7, [x0, 3884] + add w0, w28, 7 + cmp w0, w24, uxth + bge .L2642 + sub w24, w6, #7 + and w24, w24, 65535 +.L2587: + add x4, x19, :lo12:.LANCHOR2 + mov w3, -1 + add x8, x4, 1500 + mov w26, w3 + mov w5, 65535 +.L2588: + cmp w24, w6 + bhi .L2601 + add x0, x23, :lo12:.LANCHOR0 + mov w25, 0 + mov w10, 56 + ldr x1, [x29, 168] + ldrh w0, [x0, 2472] + add x0, x0, 8 + add x0, x20, x0, lsl 1 + b .L2602 +.L2642: + mov w24, w28 + b .L2587 +.L2590: + ldrh w2, [x1] + cmp w2, w5 + beq .L2589 + ldr x9, [x4, 3584] + orr w2, w24, w2, lsl 10 + umaddl x9, w25, w10, x9 + add w25, w25, 1 + and w25, w25, 65535 + str w2, [x9, 4] +.L2589: + add x1, x1, 2 +.L2602: + cmp x0, x1 + bne .L2590 + ldr w2, [x29, 164] + mov w1, w25 + ldr x0, [x4, 3584] + str x8, [x29, 104] + str w5, [x29, 112] + str w7, [x29, 120] + str w6, [x29, 128] + str w3, [x29, 136] + str x4, [x29, 152] + bl FlashReadPages + ldr x4, [x29, 152] + add x0, x23, :lo12:.LANCHOR0 + mov w1, 56 + ldr w5, [x29, 112] + ldr w7, [x29, 120] + sxtw x9, w24 + ldrb w2, [x0, 204] + ldr x0, [x4, 3584] + ldr w6, [x29, 128] + ldr w3, [x29, 136] + ldr x8, [x29, 104] + nop // between mem op and mult-accumulate + umaddl x25, w25, w1, x0 +.L2591: + cmp x25, x0 + bne .L2600 + add w24, w24, 1 + and w24, w24, 65535 + b .L2588 +.L2600: + ldr w1, [x0] + cbnz w1, .L2592 + ldr x1, [x0, 16] + ldrh w10, [x1] + cmp w10, w5 + beq .L2593 + ldr w1, [x1, 4] + cmn w1, #1 + beq .L2593 + ldr w26, [x4, 3884] cmn w3, #1 - str w2, [x28,3892] - bne .L2615 - ldrh w2, [x8,x10,lsl 1] - cmp w2, w4 - bne .L2616 - cbz w9, .L2615 -.L2616: - cmp w27, w22 - csinv w3, w27, wzr, ne - b .L2615 -.L2614: - adrp x0, .LANCHOR5+1328 - ldrh w1, [x19] - strh w1, [x0,#:lo12:.LANCHOR5+1328] - ldrb w0, [x19,8] - cbnz w0, .L2607 - add x0, x21, :lo12:.LANCHOR2 - add x1, x0, 1508 - ldrh w2, [x1,w25,sxtw 1] + str w1, [x4, 3884] + bne .L2593 + ldrh w1, [x8, x9, lsl 1] + cmp w1, w5 + bne .L2594 + cbz w2, .L2593 +.L2594: + cmp w22, w26 + csel w3, w3, w26, eq +.L2593: + add x0, x0, 56 + b .L2591 +.L2592: + adrp x0, .LANCHOR4+1842 + ldrh w1, [x20] + strh w1, [x0, #:lo12:.LANCHOR4+1842] + ldrb w0, [x20, 8] + cbnz w0, .L2585 + add x0, x19, :lo12:.LANCHOR2 + add x1, x0, 1500 + ldrh w2, [x1, w24, sxtw 1] mov w1, 65535 cmp w2, w1 - bne .L2618 + bne .L2596 cmn w3, #1 - beq .L2619 - str w3, [x0,3892] - b .L2607 -.L2619: - cmp w6, w22 - beq .L2620 - str w6, [x0,3892] - b .L2607 -.L2620: - ldr w1, [x0,3892] - b .L2750 -.L2618: - cmp w27, w22 - beq .L2621 - cmn w27, #1 - beq .L2607 - str w27, [x0,3892] - b .L2607 -.L2621: - ldr w1, [x0,3892] - cmp w1, w22 - beq .L2607 -.L2750: - sub w1, w1, #1 - b .L2745 -.L2615: - add w1, w1, 1 - add x0, x0, 56 - uxth w1, w1 - b .L2613 -.L2753: - add w25, w25, 1 - uxth w25, w25 - b .L2610 -.L2623: - add x0, x21, :lo12:.LANCHOR2 - mov w1, -1 -.L2745: - str w1, [x0,3892] -.L2607: - adrp x0, .LANCHOR5 - str x0, [x29,136] - add x1, x0, :lo12:.LANCHOR5 + beq .L2597 + str w3, [x0, 3884] +.L2585: + adrp x0, .LANCHOR4 + add x1, x0, :lo12:.LANCHOR4 + mov w24, w28 + add x19, x19, :lo12:.LANCHOR2 + mov w2, 1 + str x0, [x29, 120] + strh w2, [x1, 1844] +.L2603: + add x0, x23, :lo12:.LANCHOR0 + ldr x1, [x29, 168] + mov w25, 0 + mov w7, 65535 + ldrb w6, [x0, 204] + ldrh w0, [x0, 2472] + add x0, x0, 8 + add x0, x20, x0, lsl 1 +.L2604: + cmp x0, x1 + bne .L2607 + ldr w2, [x29, 164] + mov w1, w25 + ldr x0, [x19, 3584] + bl FlashReadPages + mov w0, 56 + umull x0, w25, w0 + mov x25, 0 + str x0, [x29, 128] + ldr x0, [x29, 120] + add x0, x0, :lo12:.LANCHOR4 + str x0, [x29, 152] adrp x0, .LC150 add x0, x0, :lo12:.LC150 - ldr w24, [x29,188] - str x0, [x29,128] - adrp x0, .LC149 - mov w2, 1 - add x0, x0, :lo12:.LC149 - strh w2, [x1,1330] - str x0, [x29,120] -.L2625: - add x0, x23, :lo12:.LANCHOR0 - mov x1, x19 - str wzr, [x29,176] - mov w7, 65535 - mov w8, 56 - ldrh w3, [x0,2472] - ldrb w6, [x0,204] - add x3, x19, x3, lsl 1 -.L2626: - cmp x1, x3 - beq .L2754 - ldrh w2, [x1,16] - cmp w2, w7 - beq .L2627 - ldr w0, [x29,176] - add x5, x21, :lo12:.LANCHOR2 - orr w2, w24, w2, lsl 10 - ldr x4, [x5,3592] - umull x0, w0, w8 - add x4, x4, x0 - str w2, [x4,4] - ldrb w2, [x19,8] - cmp w2, 1 - bne .L2628 - cbz w6, .L2628 - ldr x2, [x5,3592] - add x0, x2, x0 - ldr w2, [x0,4] - orr w2, w2, -2147483648 - str w2, [x0,4] -.L2628: - ldr w0, [x29,176] - add w0, w0, 1 - uxth w0, w0 - str w0, [x29,176] -.L2627: - add x1, x1, 2 - b .L2626 -.L2754: - add x0, x21, :lo12:.LANCHOR2 - ldr w1, [x29,176] - ldr w2, [x29,184] - ldr x0, [x0,3592] - bl FlashReadPages - str xzr, [x29,160] -.L2630: - ldrh w0, [x29,160] - ldr w1, [x29,176] - cmp w1, w0, uxth - bls .L2755 - ldr x0, [x29,160] - mov x25, 56 - mul x25, x0, x25 - add x0, x21, :lo12:.LANCHOR2 - ldr x28, [x0,3592] - add x27, x28, x25 - ldr w1, [x27,4] - str w1, [x29,204] - lsr x0, x1, 10 - str x1, [x29,168] - bl P2V_plane - uxth w0, w0 - ldr w1, [x29,188] - cmp w24, w1 - ldr x1, [x29,168] - bcc .L2631 - ldr w2, [x29,152] - cmp w0, w2 - bcs .L2666 - ldr w2, [x29,188] - cmp w24, w2 - beq .L2631 -.L2666: - cmp w0, w26 - bne .L2667 - cmp w24, w20 - beq .L2633 -.L2667: - ldr w0, [x28,x25] - cmn w0, #1 - beq .L2635 - ldr x28, [x27,16] - mov w0, 61589 - ldrh w1, [x28] - cmp w1, w0 - beq .L2636 - ldrh w0, [x19] - b .L2746 -.L2636: - ldr w22, [x28,4] - cmn w22, #1 - beq .L2637 - add x27, x21, :lo12:.LANCHOR2 - mov w0, w22 - ldr w1, [x27,756] - bl ftl_cmp_data_ver - cbz w0, .L2637 - add w0, w22, 1 - str w0, [x27,756] -.L2637: - ldr w27, [x28,8] - add x1, x29, 200 - ldr w0, [x28,12] - mov w2, 0 - 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,3892] - cmn w1, #1 - beq .L2638 - mov w0, w22 - bl ftl_cmp_data_ver - ldr x3, [x29,168] - cbz w0, .L2638 - cmn w28, #1 - beq .L2639 - ldr x0, [x3,3592] - mov w2, 0 - str x3, [x29,112] - add x0, x0, x25 - str w28, [x0,4] - ldr x1, [x0,16] - ldr x0, [x3,3592] - str x1, [x29,168] - mov w1, 1 - add x0, x0, x25 - bl FlashReadPages - ldr x3, [x29,112] - ldr x0, [x29,168] - ldr x2, [x3,3592] - ldr w0, [x0,4] - str w0, [x29,144] - add x4, x2, x25 - ldr w0, [x2,x25] - cmn w0, #1 - bne .L2640 - b .L2641 -.L2639: - ldr w0, [x29,204] - ldr w1, [x29,200] - cmp w1, w0 - bne .L2631 - mov w0, w27 - add x1, x29, 196 - mov w2, 1 - bl log2phys - b .L2631 -.L2640: - ldr x0, [x29,168] - ldr w28, [x0,8] - cmp w28, w27 - bne .L2641 - ldr w0, [x3,3892] - ldr w1, [x29,144] - str x2, [x29,96] - str x4, [x29,104] - str x3, [x29,112] - bl ftl_cmp_data_ver - ldr x3, [x29,112] - ldr x4, [x29,104] - ldr x2, [x29,96] - cbz w0, .L2641 - ldr w0, [x29,200] - ldr w1, [x29,204] - cmp w0, w1 - beq .L2646 - ldr w1, [x29,196] - cmp w0, w1 - beq .L2641 - cmn w0, #1 - beq .L2644 - str w0, [x4,4] - mov w2, 0 - ldr x1, [x4,16] - ldr x0, [x3,3592] - str x1, [x29,168] - mov w1, 1 - add x0, x0, x25 - bl FlashReadPages - b .L2645 -.L2644: - str w0, [x2,x25] -.L2645: - add x0, x21, :lo12:.LANCHOR2 - ldr x1, [x0,3592] - ldr w1, [x1,x25] - cmn w1, #1 - beq .L2646 - ldr x1, [x29,168] - ldr w0, [x0,3892] - ldr w25, [x1,4] - mov w1, w25 - bl ftl_cmp_data_ver - cbz w0, .L2646 - ldr w0, [x29,144] - mov w1, w25 - bl ftl_cmp_data_ver - cbz w0, .L2641 -.L2646: - ldr w1, [x29,196] - mov w0, w28 - bl FtlReUsePrevPpa -.L2641: - mov w0, -1 - str w0, [x29,196] - b .L2648 -.L2638: - ldr w0, [x29,204] - ldr w1, [x29,200] - cmp w1, w0 - beq .L2648 - cmn w28, #1 - beq .L2650 - add x0, x23, :lo12:.LANCHOR0 - ubfx x28, x28, 10, 21 - ldr w0, [x0,2488] - cmp w28, w0 - bcs .L2631 -.L2650: - mov w0, w27 - add x1, x29, 204 - mov w2, 1 - bl log2phys - ldr w25, [x29,200] - cmn w25, #1 - beq .L2648 - ldr w0, [x29,196] - cmp w25, w0 - beq .L2648 - lsr x0, x25, 10 - bl P2V_block_in_plane - uxth w0, w0 - add x1, x21, :lo12:.LANCHOR2 - ldrh w2, [x1,560] - cmp w2, w0 - beq .L2652 - ldrh w2, [x1,608] - cmp w2, w0 - beq .L2652 - ldrh w1, [x1,656] - cmp w1, w0 - bne .L2648 -.L2652: - add x28, x21, :lo12:.LANCHOR2 - mov w1, 1 - mov w2, 0 - ldr x0, [x28,3592] - str w25, [x0,4] - ldr x3, [x0,16] - ldr x0, [x28,3592] - str x3, [x29,168] - bl FlashReadPages - ldr x0, [x28,3592] - ldr x3, [x29,168] - ldr w0, [x0] - ldr w1, [x3,4] - cmn w0, #1 - beq .L2648 - mov w0, w22 - bl ftl_cmp_data_ver - cbnz w0, .L2648 - mov w0, w27 - add x1, x29, 200 - mov w2, 1 - bl log2phys -.L2648: - ldr w0, [x29,196] - cmn w0, #1 - beq .L2631 - lsr x0, x0, 10 - bl P2V_block_in_plane - uxth w1, w0 - add x2, x21, :lo12:.LANCHOR2 - ubfiz x3, x1, 1, 16 - ldr x2, [x2,520] - ldrh w2, [x2,x3] - cbz w2, .L2653 -.L2746: - bl decrement_vpc_count - b .L2631 -.L2653: - ldr x0, [x29,120] - bl printk - b .L2631 -.L2635: - ldr x2, [x29,136] - ldrh w0, [x19] - add x25, x2, :lo12:.LANCHOR5 - mov w2, w22 - strh w0, [x25,1328] - ldr x0, [x29,128] - bl printk - ldr w0, [x25,1332] - cmp w0, 31 - bhi .L2654 - add x1, x25, 1336 - ldr w2, [x29,204] - str w2, [x1,w0,uxtw 2] - add w0, w0, 1 - str w0, [x25,1332] -.L2654: - ldrh w0, [x19] - bl decrement_vpc_count - add x0, x21, :lo12:.LANCHOR2 - ldr w1, [x0,3892] - cmn w1, #1 - beq .L2747 - cmp w1, w22 - bls .L2631 -.L2747: - str w22, [x0,3892] -.L2631: - ldr x0, [x29,160] - add x0, x0, 1 - str x0, [x29,160] - b .L2630 -.L2755: - ldrb w0, [x19,8] + str x0, [x29, 112] + ldr x0, [x29, 152] + add x0, x0, 1856 + str x0, [x29, 104] +.L2608: + ldr x0, [x29, 128] + cmp x0, x25 + bne .L2633 + ldrb w0, [x20, 8] add w24, w24, 1 + and w24, w24, 65535 cmp w0, 1 - uxth w24, w24 - bne .L2657 + bne .L2634 add x0, x23, :lo12:.LANCHOR0 - ldrb w1, [x0,204] - cbz w1, .L2657 - cmp w20, w24 - bne .L2657 - ldrh w0, [x0,2546] + ldrb w1, [x0, 204] + cbz w1, .L2634 + ldrh w0, [x0, 2546] cmp w0, w24 - beq .L2633 -.L2657: + bne .L2634 + cmp w21, w24 + beq .L2610 +.L2634: add x0, x23, :lo12:.LANCHOR0 - ldrh w1, [x0,2544] - cmp w24, w1 - bne .L2625 - ldrh w2, [x0,2472] - mov w3, 65535 - strh w24, [x19,2] - mov x0, 0 - strh wzr, [x19,4] -.L2659: - uxth w1, w0 - cmp w1, w2 - bcs .L2742 - add x0, x0, 1 - add x4, x19, x0, lsl 1 - ldrh w4, [x4,14] - cmp w4, w3 - beq .L2659 - strb w1, [x19,6] - b .L2742 -.L2633: - strb w26, [x19,6] - strh w20, [x19,2] -.L2749: - mov x0, x19 - mov w1, w20 - mov w2, w26 - bl ftl_sb_update_avl_pages -.L2742: + ldrh w1, [x0, 2544] + cmp w1, w24 + bne .L2603 + ldrh w1, [x0, 2472] + mov w2, 65535 + strh w24, [x20, 2] 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], 208 - ret + strh wzr, [x20, 4] +.L2635: + cmp w0, w1 + beq .L2707 + ldr x4, [x29, 168] + ldrh w3, [x4], 2 + str x4, [x29, 168] + cmp w3, w2 + beq .L2636 + strb w0, [x20, 6] + b .L2707 +.L2597: + cmp w22, w7 + beq .L2598 + str w7, [x0, 3884] + b .L2585 +.L2598: + ldr w1, [x0, 3884] +.L2716: + sub w1, w1, #1 +.L2710: + str w1, [x0, 3884] + b .L2585 +.L2596: + cmp w26, w22 + beq .L2599 + cmn w26, #1 + beq .L2585 + str w26, [x0, 3884] + b .L2585 +.L2599: + ldr w1, [x0, 3884] + cmp w22, w1 + bne .L2716 + b .L2585 +.L2601: + add x0, x19, :lo12:.LANCHOR2 + mov w1, -1 + b .L2710 +.L2607: + ldrh w3, [x1] + cmp w3, w7 + beq .L2605 + mov w2, 56 + ldr x4, [x19, 3584] + orr w3, w24, w3, lsl 10 + umull x5, w25, w2 + add x4, x4, x5 + str w3, [x4, 4] + ldrb w2, [x20, 8] + cmp w2, 1 + bne .L2606 + cbz w6, .L2606 + ldr x2, [x19, 3584] + add x2, x2, x5 + ldr w3, [x2, 4] + orr w3, w3, -2147483648 + str w3, [x2, 4] +.L2606: + add w25, w25, 1 + and w25, w25, 65535 +.L2605: + add x1, x1, 2 + b .L2604 +.L2633: + ldr x4, [x19, 3584] + add x4, x4, x25 + ldr w5, [x4, 4] + str w5, [x29, 188] + lsr w0, w5, 10 + bl P2V_plane + and w0, w0, 65535 + cmp w24, w28 + bcc .L2609 + ldr w1, [x29, 144] + ccmp w1, w0, 0, eq + bhi .L2609 + cmp w24, w21 + ccmp w27, w0, 0, eq + beq .L2610 + ldr w0, [x4] + cmn w0, #1 + beq .L2611 + ldr x3, [x4, 16] + mov w0, 61589 + ldrh w1, [x3] + cmp w1, w0 + beq .L2612 + ldrh w0, [x20] +.L2712: + bl decrement_vpc_count + b .L2609 +.L2612: + ldr w22, [x3, 4] + cmn w22, #1 + beq .L2613 + ldr w1, [x19, 756] + mov w0, w22 + bl ftl_cmp_data_ver + cbz w0, .L2613 + add w0, w22, 1 + str w0, [x19, 756] +.L2613: + ldp w26, w0, [x3, 8] + add x1, x29, 184 + str w0, [x29, 180] + mov w2, 0 + mov w0, w26 + bl log2phys + ldr w1, [x19, 3884] + ldr w3, [x29, 180] + cmn w1, #1 + beq .L2614 + mov w0, w22 + bl ftl_cmp_data_ver + cbz w0, .L2614 + cmn w3, #1 + beq .L2615 + ldr x0, [x19, 3584] + mov w2, 0 + mov w1, 1 + add x0, x0, x25 + ldr x4, [x0, 16] + str w3, [x0, 4] + str x4, [x29, 136] + ldr x0, [x19, 3584] + add x0, x0, x25 + bl FlashReadPages + ldr x0, [x19, 3584] + ldr x4, [x29, 136] + add x3, x0, x25 + ldr w0, [x0, x25] + cmn w0, #1 + bne .L2616 +.L2617: + mov w0, -1 + str w0, [x29, 180] +.L2624: + ldr w4, [x29, 180] + cmn w4, #1 + beq .L2609 +.L2639: + lsr w0, w4, 10 + bl P2V_block_in_plane + ldr x3, [x19, 520] + and w1, w0, 65535 + ubfiz x2, x1, 1, 16 + ldrh w2, [x3, x2] + cbnz w2, .L2712 + adrp x0, .LC149 + add x0, x0, :lo12:.LC149 + bl printk + b .L2609 +.L2615: + ldp w1, w0, [x29, 184] + cmp w1, w0 + bne .L2609 + mov w2, 1 + add x1, x29, 180 + mov w0, w26 + bl log2phys +.L2609: + add x25, x25, 56 + b .L2608 +.L2616: + ldr w0, [x4, 8] + cmp w26, w0 + bne .L2617 + ldr w0, [x4, 4] + str w0, [x29, 136] + str x4, [x29, 96] + uxtw x1, w0 + ldr w0, [x19, 3884] + bl ftl_cmp_data_ver + cbz w0, .L2617 + ldp w0, w1, [x29, 184] + ldr x4, [x29, 96] + cmp w0, w1 + ldr w1, [x29, 180] + bne .L2619 +.L2711: + mov w0, w26 + bl FtlReUsePrevPpa + b .L2617 +.L2619: + cmp w0, w1 + beq .L2617 + cmn w0, #1 + beq .L2620 + ldr x4, [x3, 16] + mov w2, 0 + str w0, [x3, 4] + mov w1, 1 + str x4, [x29, 96] + ldr x0, [x19, 3584] + add x0, x0, x25 + bl FlashReadPages + ldr x4, [x29, 96] +.L2621: + ldr x0, [x19, 3584] + ldr w0, [x0, x25] + cmn w0, #1 + beq .L2622 + ldr w3, [x4, 4] + ldr w0, [x19, 3884] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L2622 + ldr w0, [x29, 136] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L2617 +.L2622: + ldr w1, [x29, 180] + b .L2711 +.L2620: + str w0, [x3] + b .L2621 +.L2614: + ldp w1, w0, [x29, 184] + cmp w1, w0 + beq .L2624 + cmn w3, #1 + beq .L2626 + add x0, x23, :lo12:.LANCHOR0 + ubfx x3, x3, 10, 21 + ldr w0, [x0, 2488] + cmp w3, w0 + bcs .L2609 +.L2626: + mov w2, 1 + add x1, x29, 188 + mov w0, w26 + bl log2phys + ldr w4, [x29, 184] + cmn w4, #1 + beq .L2624 + ldr w0, [x29, 180] + cmp w4, w0 + beq .L2639 + lsr w0, w4, 10 + bl P2V_block_in_plane + ldrh w1, [x19, 560] + and w0, w0, 65535 + cmp w1, w0 + beq .L2629 + ldrh w1, [x19, 608] + cmp w1, w0 + beq .L2629 + ldrh w1, [x19, 656] + cmp w1, w0 + bne .L2624 +.L2629: + ldr x0, [x19, 3584] + mov w2, 0 + mov w1, 1 + str w4, [x0, 4] + ldr x3, [x0, 16] + ldr x0, [x19, 3584] + str x3, [x29, 136] + bl FlashReadPages + ldr x0, [x19, 3584] + ldr w0, [x0] + cmn w0, #1 + beq .L2624 + ldr x3, [x29, 136] + mov w0, w22 + ldr w1, [x3, 4] + bl ftl_cmp_data_ver + cbnz w0, .L2624 + mov w2, 1 + add x1, x29, 184 + mov w0, w26 + bl log2phys + b .L2624 +.L2611: + ldr x1, [x29, 152] + mov w2, w22 + ldrh w0, [x20] + strh w0, [x1, 1842] + mov w1, w5 + ldr x0, [x29, 112] + bl printk + ldr x0, [x29, 152] + ldr w0, [x0, 1848] + cmp w0, 31 + bhi .L2631 + ldr x2, [x29, 104] + ldr w1, [x29, 188] + str w1, [x2, w0, uxtw 2] + add w0, w0, 1 + ldr x1, [x29, 152] + str w0, [x1, 1848] +.L2631: + ldrh w0, [x20] + bl decrement_vpc_count + ldr w0, [x19, 3884] + cmn w0, #1 + bne .L2632 +.L2713: + str w22, [x19, 3884] + b .L2609 +.L2632: + cmp w22, w0 + bcs .L2609 + b .L2713 +.L2636: + add w0, w0, 1 + and w0, w0, 65535 + b .L2635 +.L2610: + strb w27, [x20, 6] + strh w21, [x20, 2] + b .L2715 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock .align 2 .global FtlVpcCheckAndModify @@ -17838,727 +17481,706 @@ FtlRecoverySuperblock: FtlVpcCheckAndModify: stp x29, x30, [sp, -80]! adrp x1, .LANCHOR3 - adrp x0, .LC109 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC109 add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + stp x23, x24, [sp, 48] + add x23, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x22, x21, :lo12:.LANCHOR0 add x1, x1, 232 add x0, x0, :lo12:.LC109 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x22, .LANCHOR0 bl printk - add x1, x22, :lo12:.LANCHOR0 - adrp x20, .LANCHOR2 - add x0, x20, :lo12:.LANCHOR2 - mov w19, 0 - ldrh w2, [x1,2482] + ldr x0, [x23, 3704] mov w1, 0 - ldr x0, [x0,3712] + ldrh w2, [x22, 2482] + mov w19, 0 lsl w2, w2, 1 bl ftl_memset -.L2757: - add x0, x22, :lo12:.LANCHOR0 - ldr w0, [x0,2616] +.L2718: + ldr w0, [x22, 2616] cmp w19, w0 - bcs .L2773 - mov w0, w19 - add x1, x29, 76 - mov w2, 0 - bl log2phys - ldr w0, [x29,76] - cmn w0, #1 - beq .L2758 - lsr x0, x0, 10 - bl P2V_block_in_plane - ubfiz x0, x0, 1, 16 - add x1, x20, :lo12:.LANCHOR2 - ldr x2, [x1,3712] - ldrh w1, [x2,x0] - add w1, w1, 1 - strh w1, [x2,x0] -.L2758: - add w19, w19, 1 - b .L2757 -.L2773: - adrp x23, .LC151 - mov w19, 0 + bcc .L2720 + adrp x22, .LC151 + add x23, x21, :lo12:.LANCHOR0 add x20, x20, :lo12:.LANCHOR2 + add x22, x22, :lo12:.LC151 + mov w19, 0 mov w24, 65535 - add x23, x23, :lo12:.LC151 -.L2760: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2480] +.L2721: + ldrh w0, [x23, 2480] cmp w0, w19 - bls .L2774 - ubfiz x21, x19, 1, 16 - ldr x0, [x20,520] - ldrh w2, [x0,x21] - ldr x0, [x20,3712] - cmp w2, w24 - ldrh w3, [x0,x21] - beq .L2761 - cmp w2, w3 - beq .L2761 - ldrh w0, [x20,560] - cmp w0, w19 - beq .L2761 - ldrh w0, [x20,656] - cmp w0, w19 - beq .L2761 - ldrh w0, [x20,608] - cmp w0, w19 - beq .L2761 - mov w1, w19 - mov x0, x23 - bl printk - ldr x0, [x20,520] - ldrh w1, [x0,x21] - cbnz w1, .L2762 - ldr x1, [x20,3712] - ldrh w1, [x1,x21] - strh w1, [x0,x21] - b .L2761 -.L2762: - ldr x1, [x20,3712] - ldrh w1, [x1,x21] - strh w1, [x0,x21] - mov w0, w19 - bl update_vpc_list -.L2761: - add w19, w19, 1 - uxth w19, w19 - b .L2760 -.L2774: + bhi .L2724 bl l2p_flush bl FtlVpcTblFlush - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret +.L2720: + mov w2, 0 + add x1, x29, 76 + mov w0, w19 + bl log2phys + ldr w0, [x29, 76] + cmn w0, #1 + beq .L2719 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldr x2, [x23, 3704] + ubfiz x0, x0, 1, 16 + ldrh w1, [x2, x0] + add w1, w1, 1 + strh w1, [x2, x0] +.L2719: + add w19, w19, 1 + b .L2718 +.L2724: + ldr x0, [x20, 520] + ubfiz x21, x19, 1, 16 + ldrh w2, [x0, x21] + ldr x0, [x20, 3704] + ldrh w3, [x0, x21] + cmp w2, w3 + beq .L2722 + cmp w2, w24 + beq .L2722 + ldrh w0, [x20, 560] + cmp w0, w19 + beq .L2722 + ldrh w0, [x20, 656] + cmp w0, w19 + beq .L2722 + ldrh w0, [x20, 608] + cmp w0, w19 + beq .L2722 + mov w1, w19 + mov x0, x22 + bl printk + ldr x0, [x20, 520] + ldrh w1, [x0, x21] + cbnz w1, .L2723 + ldr x1, [x20, 3704] + ldrh w1, [x1, x21] + strh w1, [x0, x21] +.L2722: + add w19, w19, 1 + and w19, w19, 65535 + b .L2721 +.L2723: + ldr x1, [x20, 3704] + ldrh w1, [x1, x21] + strh w1, [x0, x21] + mov w0, w19 + bl update_vpc_list + b .L2722 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 .global FtlGcScanTempBlk .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -208]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov x20, x0 + stp x19, x20, [sp, 16] + mov x19, x0 adrp x0, .LANCHOR1 - str w1, [x29,148] + stp x21, x22, [sp, 32] + str w1, [x29, 132] 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 x0, [x29,136] - ldrh w27, [x1,3456] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + str x0, [x29, 120] + ldrh w28, [x1, 3456] mov w1, 65535 - cmp w27, w1 - beq .L2808 - cbnz w27, .L2776 - b .L2777 -.L2808: - mov w27, 0 -.L2776: - adrp x0, .LANCHOR0+2544 - ldr w1, [x29,148] - ldrh w0, [x0,#:lo12:.LANCHOR0+2544] - cmp w1, w0 - bne .L2778 -.L2777: + cmp w28, w1 + beq .L2760 + cbnz w28, .L2730 +.L2731: bl FtlGcPageVarInit -.L2778: + b .L2732 +.L2760: + mov w28, 0 +.L2730: + adrp x0, .LANCHOR0+2544 + ldr w1, [x29, 132] + ldrh w0, [x0, #:lo12:.LANCHOR0+2544] + cmp w0, w1 + beq .L2731 +.L2732: + adrp x25, .LANCHOR2 + mov x21, x25 + add x26, x25, :lo12:.LANCHOR2 mov w0, -1 - str w0, [x29,152] - adrp x0, .LC153 - mov w23, 0 - add x0, x0, :lo12:.LC153 - adrp x28, .LANCHOR0 - str x0, [x29,128] -.L2779: - ldrh w1, [x20] - mov w0, 65535 - strb wzr, [x20,8] - cmp w1, w0 - beq .L2809 -.L2781: - str w0, [x29,156] -.L2805: - adrp x0, .LANCHOR0 - mov x2, x20 - add x0, x0, :lo12:.LANCHOR0 - mov w21, 0 + mov w24, 0 + str w0, [x29, 136] +.L2733: + ldrh w0, [x19] + mov w23, 65535 + strb wzr, [x19, 8] + cmp w0, w23 + beq .L2761 +.L2757: + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + add x2, x19, 16 + add x4, x25, :lo12:.LANCHOR2 + mov w22, 0 mov w10, 56 - adrp x11, .LANCHOR2 + ldrh w8, [x0, 2554] mov w7, 4 - ldrh w5, [x0,2472] - ldrh w8, [x0,2554] - ldrh w9, [x0,2556] - add x5, x20, x5, lsl 1 -.L2782: - cmp x2, x5 - beq .L2828 - ldrh w1, [x2,16] - ldr w0, [x29,156] - cmp w1, w0 - beq .L2783 - add x4, x11, :lo12:.LANCHOR2 - orr w1, w27, w1, lsl 10 - umull x0, w21, w10 - ldr x6, [x4,3592] - add x6, x6, x0 - str w1, [x6,4] - ldr x1, [x4,3592] - ldr x6, [x4,1400] - add x0, x1, x0 - ldr x4, [x4,1408] - mul w1, w21, w8 + ldrh w9, [x0, 2556] + ldrh w0, [x0, 2472] + add x0, x0, 8 + add x0, x19, x0, lsl 1 +.L2735: + cmp x2, x0 + bne .L2737 + add x0, x25, :lo12:.LANCHOR2 + mov w1, w22 + mov w2, 0 + add x27, x20, :lo12:.LANCHOR0 + ldr x0, [x0, 3584] + bl FlashReadPages + mov w0, 56 + umull x0, w22, w0 + mov x22, 0 + str x0, [x29, 112] +.L2738: + ldr x0, [x29, 112] + cmp x0, x22 + bne .L2755 + ldr w0, [x29, 132] + add w3, w28, 1 + add w24, w24, 1 + and w28, w3, 65535 + cmp w0, w24 + bls .L2756 +.L2758: + add x20, x20, :lo12:.LANCHOR0 + ldrh w0, [x20, 2544] + cmp w0, w28 + bhi .L2757 +.L2761: + mov w2, 0 + b .L2734 +.L2737: + ldrh w1, [x2] + cmp w1, w23 + beq .L2736 + umull x11, w22, w10 + ldr x6, [x4, 3584] + orr w1, w28, w1, lsl 10 + add x6, x6, x11 + str w1, [x6, 4] + mul w1, w22, w8 + ldr x5, [x4, 3584] + ldr x6, [x4, 1392] + sdiv w1, w1, w7 + add x5, x5, x11 + add x1, x6, w1, sxtw 2 + str x1, [x5, 8] + mul w1, w22, w9 + ldr x6, [x4, 1400] + add w22, w22, 1 + and w22, w22, 65535 sdiv w1, w1, w7 add x1, x6, w1, sxtw 2 - str x1, [x0,8] - mul w1, w21, w9 - add w21, w21, 1 - uxth w21, w21 - sdiv w1, w1, w7 - add x1, x4, w1, sxtw 2 - str x1, [x0,16] -.L2783: + str x1, [x5, 16] +.L2736: add x2, x2, 2 - b .L2782 -.L2828: - adrp x19, .LANCHOR2 - mov w1, w21 - add x0, x19, :lo12:.LANCHOR2 - mov w2, 0 - mov x24, 0 - ldr x0, [x0,3592] - bl FlashReadPages -.L2785: - cmp w21, w24, uxth - bls .L2829 - add x25, x19, :lo12:.LANCHOR2 - mov x0, 56 - mul x22, x24, x0 - ldr x1, [x25,3592] - str x1, [x29,112] - add x2, x1, x22 - str x2, [x29,120] - ldr w26, [x2,4] - lsr x0, x26, 10 + b .L2735 +.L2755: + ldr x5, [x26, 3584] + add x4, x5, x22 + ldr w0, [x4, 4] + str w0, [x29, 140] + uxtw x1, w0 + lsr w0, w1, 10 bl P2V_plane - uxth w5, w0 - ldr x1, [x29,112] - ldr x2, [x29,120] - ldr w8, [x1,x22] - ldr x4, [x2,16] - cbnz w8, .L2786 + and w2, w0, 65535 + ldr w0, [x5, x22] + ldr x4, [x4, 16] + cbnz w0, .L2739 ldrh w0, [x4] - ldr w1, [x29,156] - cmp w0, w1 - bne .L2787 -.L2790: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L2824 - add x19, x19, :lo12:.LANCHOR2 + cmp w0, w23 + bne .L2740 +.L2743: + add x20, x20, :lo12:.LANCHOR0 + ldrb w0, [x20, 204] + cbz w0, .L2777 + add x21, x21, :lo12:.LANCHOR2 mov w0, 1 - str w0, [x19,3888] - b .L2780 -.L2787: - add x7, x28, :lo12:.LANCHOR0 - ldr w0, [x4,8] - ldr w1, [x7,2616] - cmp w0, w1 - bls .L2825 - b .L2790 -.L2824: - add x19, x19, :lo12:.LANCHOR2 - ldrh w2, [x20] - ldr x1, [x19,520] - strh w0, [x1,x2,lsl 1] - b .L2827 -.L2825: - ldrb w1, [x7,72] - cbz w1, .L2794 - add x1, x29, 164 - mov w2, w8 - str x4, [x29,120] - str x7, [x29,104] - str x8, [x29,112] - bl log2phys - ldr x4, [x29,120] - ldr w1, [x29,164] - ldr w0, [x4,12] - cmp w1, w0 - bne .L2794 - cmn w1, #1 - beq .L2794 - str w0, [x29,172] - mov w1, 1 - ldr x0, [x25,3656] - ldr x8, [x29,112] - str x0, [x29,176] - ldr x0, [x25,3672] - mov w2, w8 - str x0, [x29,184] - add x0, x29, 168 - bl FlashReadPages - ldr x7, [x29,104] - ldr x0, [x25,3592] - ldr x5, [x29,176] - ldrh w2, [x7,2550] - add x22, x0, x22 - ldr x4, [x29,120] - mov x0, 0 - lsl w2, w2, 7 -.L2796: - cmp w2, w0 - bls .L2794 - lsl x1, x0, 2 - ldr x6, [x22,8] - add x0, x0, 1 - ldr w6, [x6,x1] - ldr w1, [x5,x1] - cmp w6, w1 - beq .L2796 - ldrh w1, [x20] - adrp x0, .LC152 - ldr w2, [x29,172] - add x0, x0, :lo12:.LC152 - add x19, x19, :lo12:.LANCHOR2 - bl printk - ldrh w1, [x20] - ldr x0, [x19,520] - strh wzr, [x0,x1,lsl 1] -.L2827: - ldrh w0, [x20] - bl INSERT_FREE_LIST - mov w0, -1 - strh w0, [x20] - strh w0, [x19,800] - b .L2826 -.L2794: - ldr w0, [x4,12] - mov w1, w26 - ldr w2, [x4,8] - add x24, x24, 1 - bl FtlGcUpdatePage - b .L2785 -.L2786: - ldrh w1, [x20] - mov w2, w26 - ldr x0, [x29,128] - bl printk - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldr w1, [x0,2372] - cbnz w1, .L2799 - ldrb w0, [x0,204] - cbz w0, .L2800 -.L2799: - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x20] - ldr x0, [x0,440] - ldrh w0, [x0,x1,lsl 1] - cmp w0, 159 - bls .L2801 -.L2800: - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,3592] - ldr w0, [x0,x22] - cmn w0, #1 - bne .L2802 -.L2801: - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,3592] - add x22, x0, x22 - ldr w0, [x22,4] - str w0, [x29,152] -.L2802: - add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x20] - ldr x0, [x19,520] - strh wzr, [x0,x1,lsl 1] - ldrh w0, [x20] - bl INSERT_FREE_LIST - mov w0, -1 - strh w0, [x20] -.L2826: - bl FtlGcPageVarInit - mov w27, 0 - b .L2779 -.L2829: - ldr w0, [x29,148] - add w23, w23, 1 - add w3, w27, 1 - cmp w23, w0 - uxth w27, w3 - bcs .L2804 -.L2806: - add x0, x28, :lo12:.LANCHOR0 - ldrh w0, [x0,2544] - cmp w0, w27 - bhi .L2805 - b .L2809 -.L2804: - ldr x0, [x29,136] - ldr w2, [x29,156] - add x1, x0, :lo12:.LANCHOR1 - ldrh w0, [x1,3456] - cmp w0, w2 - beq .L2806 - add w0, w0, w23 - strh w0, [x1,3456] - add x0, x28, :lo12:.LANCHOR0 - ldrh w0, [x0,2544] - cmp w0, w27 - bls .L2806 - b .L2807 -.L2809: - mov w5, 0 -.L2780: - ldr x0, [x29,136] + str w0, [x21, 3880] +.L2734: + ldr x0, [x29, 120] mov w1, -1 - strh w27, [x20,2] - mov w2, w5 + strh w28, [x19, 2] add x0, x0, :lo12:.LANCHOR1 - strb w5, [x20,6] - strh w1, [x0,3456] - mov x0, x20 - mov w1, w27 + strb w2, [x19, 6] + strh w1, [x0, 3456] + mov w1, w28 + mov x0, x19 bl ftl_sb_update_avl_pages -.L2807: - ldr w0, [x29,152] - 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 + b .L2729 +.L2740: + ldr w0, [x4, 8] + ldr w1, [x27, 2616] + cmp w0, w1 + bhi .L2743 + ldrb w1, [x27, 72] + cbnz w1, .L2746 +.L2747: + ldp w2, w0, [x4, 8] + add x22, x22, 56 + ldr w1, [x29, 140] + bl FtlGcUpdatePage + b .L2738 +.L2746: + add x1, x29, 148 + str x4, [x29, 104] + mov w2, 0 + bl log2phys + ldr x4, [x29, 104] + ldr w1, [x29, 148] + ldr w0, [x4, 12] + cmp w0, w1 + bne .L2747 + cmn w0, #1 + beq .L2747 + str w0, [x29, 156] + mov w2, 0 + ldr x0, [x26, 3648] + mov w1, 1 + str x0, [x29, 160] + ldr x0, [x26, 3664] + str x0, [x29, 168] + add x0, x29, 152 + bl FlashReadPages + ldrh w1, [x27, 2550] + mov x0, 0 + ldr x2, [x26, 3584] + ldr x4, [x29, 104] + ldr x5, [x29, 160] + ubfiz x1, x1, 9, 16 + add x2, x2, x22 +.L2748: + cmp x0, x1 + beq .L2747 + ldr x6, [x2, 8] + ldr w7, [x6, x0] + add x0, x0, 4 + add x6, x5, x0 + ldr w6, [x6, -4] + cmp w7, w6 + beq .L2748 + ldrh w1, [x19] + adrp x0, .LC152 + ldr w2, [x29, 156] + add x0, x0, :lo12:.LC152 + bl printk +.L2777: + add x13, x21, :lo12:.LANCHOR2 + ldrh w1, [x19] + ldr x0, [x13, 520] + strh wzr, [x0, x1, lsl 1] + ldrh w0, [x19] + bl INSERT_FREE_LIST + mov w0, -1 + strh w0, [x19] + strh w0, [x13, 800] +.L2776: + bl FtlGcPageVarInit + mov w28, 0 + b .L2733 +.L2739: + ldrh w1, [x19] + add x20, x20, :lo12:.LANCHOR0 + ldr w2, [x29, 140] + adrp x0, .LC153 + add x0, x0, :lo12:.LC153 + bl printk + ldr w1, [x20, 2372] + ldrh w0, [x19] + cbnz w1, .L2751 + ldrb w1, [x20, 204] + cbz w1, .L2752 +.L2751: + add x2, x21, :lo12:.LANCHOR2 + ubfiz x1, x0, 1, 16 + ldr x2, [x2, 440] + ldrh w1, [x2, x1] + cmp w1, 159 + bls .L2753 +.L2752: + add x1, x21, :lo12:.LANCHOR2 + ldr x1, [x1, 3584] + ldr w1, [x1, x22] + cmn w1, #1 + bne .L2754 +.L2753: + add x1, x21, :lo12:.LANCHOR2 + ldr x1, [x1, 3584] + add x22, x1, x22 + ldr w1, [x22, 4] + str w1, [x29, 136] +.L2754: + add x1, x21, :lo12:.LANCHOR2 + ubfiz x0, x0, 1, 16 + ldr x1, [x1, 520] + strh wzr, [x1, x0] + ldrh w0, [x19] + bl INSERT_FREE_LIST + mov w0, -1 + strh w0, [x19] + b .L2776 +.L2756: + ldr x0, [x29, 120] + add x1, x0, :lo12:.LANCHOR1 + ldrh w0, [x1, 3456] + cmp w0, w23 + beq .L2758 + add w0, w0, w24 + strh w0, [x1, 3456] + add x0, x20, :lo12:.LANCHOR0 + ldrh w0, [x0, 2544] + cmp w0, w28 + bls .L2758 +.L2729: + ldr w0, [x29, 136] + 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], 208 ret .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 .global FtlReadRefresh .type FtlReadRefresh, %function FtlReadRefresh: + adrp x1, .LANCHOR2 + add x0, x1, :lo12:.LANCHOR2 + add x2, x0, 848 + ldr w3, [x2, 80] + cbz w3, .L2779 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + ldr w4, [x2, 84] + ldr w3, [x1, 2616] + cmp w4, w3 + bcs .L2780 stp x29, x30, [sp, -112]! - adrp x2, .LANCHOR2 - add x1, x2, :lo12:.LANCHOR2 add x29, sp, 0 - add x3, x1, 856 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, .LANCHOR0 - ldr w0, [x3,80] - cbz w0, .L2831 - add x0, x20, :lo12:.LANCHOR0 - ldr w2, [x3,84] - ldr w0, [x0,2616] - cmp w2, w0 - bcs .L2832 + stp x19, x20, [sp, 16] + mov x19, x0 + mov x20, x1 + stp x21, x22, [sp, 32] mov w21, 2048 - mov x19, x1 -.L2837: - add x22, x19, 856 - add x1, x20, :lo12:.LANCHOR0 - ldr w0, [x22,84] - ldr w1, [x1,2616] +.L2785: + add x22, x19, 848 + ldr w1, [x20, 2616] + ldr w0, [x22, 84] cmp w0, w1 - bcs .L2836 + bcc .L2781 +.L2784: + ldp x19, x20, [sp, 16] + mov w0, -1 + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 112 + ret +.L2781: add x1, x29, 52 mov w2, 0 bl log2phys - ldr w0, [x22,84] - ldr w1, [x29,52] + ldr w0, [x22, 84] + ldr w1, [x29, 52] add w0, w0, 1 - str w0, [x22,84] + str w0, [x22, 84] cmn w1, #1 - beq .L2835 - str w1, [x29,60] + beq .L2783 + str w0, [x29, 80] + add x0, x29, 112 + str w1, [x29, 60] mov w2, 0 - str w0, [x29,80] + stp xzr, xzr, [x29, 64] mov w1, 1 - add x0, x29, 56 - str xzr, [x29,64] - str xzr, [x29,72] - str wzr, [x29,56] + str wzr, [x0, -56]! bl FlashReadPages - ldr w0, [x29,56] + ldr w0, [x29, 56] cmp w0, 256 - bne .L2836 - ldr w0, [x29,52] - lsr x0, x0, 10 + bne .L2784 + ldr w0, [x29, 52] + lsr w0, w0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L2836: - mov w0, -1 - b .L2839 -.L2835: + b .L2784 +.L2783: subs w21, w21, #1 - bne .L2837 - b .L2836 -.L2832: - ldr w0, [x1,720] - str wzr, [x3,80] - str wzr, [x3,84] - str w0, [x3,76] - b .L2846 -.L2831: - ldr w4, [x1,772] - mov w6, 10000 - mov w8, 63 - ldr w7, [x1,720] - 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,2616] - bhi .L2841 - 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 .L2841 - ldrh w1, [x1,484] - tst w8, w1 - bne .L2839 - ldr w3, [x3,100] - cmp w3, w1 - beq .L2839 -.L2841: - add x0, x2, :lo12:.LANCHOR2 - add x1, x0, 856 - ldrh w0, [x0,484] - str w0, [x1,100] - mov w0, 1 - str wzr, [x1,84] - str w0, [x1,80] - str w7, [x1,76] -.L2846: + bne .L2785 + b .L2784 +.L2780: + ldr w0, [x0, 720] + stp w0, wzr, [x2, 76] + str wzr, [x2, 84] +.L2792: mov w0, 0 -.L2839: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 112 ret +.L2779: + ldr w4, [x0, 772] + mov w3, 10000 + ldr w5, [x0, 720] + mov w6, 31 + cmp w4, w3 + ldr w7, [x2, 76] + mov w3, 63 + csel w6, w6, w3, hi + add w3, w5, 1048576 + cmp w7, w3 + bhi .L2789 + adrp x3, .LANCHOR0+2616 + mov w8, 1000 + lsr w4, w4, 10 + ldr w3, [x3, #:lo12:.LANCHOR0+2616] + add w4, w4, 1 + mul w3, w3, w8 + udiv w3, w3, w4 + add w3, w3, w7 + cmp w5, w3 + bhi .L2789 + ldrh w0, [x0, 484] + tst w6, w0 + bne .L2792 + ldr w2, [x2, 100] + cmp w0, w2 + beq .L2792 +.L2789: + add x0, x1, :lo12:.LANCHOR2 + add x1, x0, 848 + ldrh w0, [x0, 484] + str w0, [x1, 100] + str w5, [x1, 76] + mov w0, 1 + str wzr, [x1, 84] + str w0, [x1, 80] + b .L2792 .size FtlReadRefresh, .-FtlReadRefresh .align 2 .global FtlGcFreeTempBlock .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 add x2, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] adrp x21, .LANCHOR0 + stp x25, x26, [sp, 64] add x1, x21, :lo12:.LANCHOR0 - ldr w3, [x2,424] - ldrh w1, [x1,2544] - cbnz w3, .L2883 - ldrh w20, [x2,656] - mov w4, 65535 - cmp w20, w4 - bne .L2850 -.L2859: + str x27, [sp, 80] + ldr w3, [x2, 424] + ldrh w1, [x1, 2544] + cbz w3, .L2799 +.L2836: + mov w0, 0 +.L2798: + 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], 112 + ret +.L2799: + ldrh w20, [x2, 656] + mov w3, 65535 + cmp w20, w3 + bne .L2801 +.L2810: add x20, x19, :lo12:.LANCHOR2 mov w0, 65535 add x22, x20, 656 - ldrh w1, [x20,656] - str wzr, [x20,3888] + ldrh w1, [x20, 656] + str wzr, [x20, 3880] cmp w1, w0 - beq .L2883 + beq .L2836 + add x23, x21, :lo12:.LANCHOR0 bl FtlCacheWriteBack + ldrb w0, [x22, 7] mov w26, 12 - add x3, x21, :lo12:.LANCHOR0 - ldrb w0, [x22,7] - ldr x1, [x20,520] + ldr x1, [x20, 520] mov w22, 0 - ldrh w2, [x20,656] - ldrh w3, [x3,2544] + ldrh w3, [x23, 2544] + ldrh w2, [x20, 656] mul w0, w0, w3 - strh w0, [x1,x2,lsl 1] - ldr w0, [x20,740] - ldrh w1, [x20,1440] - add w0, w1, w0 - str w0, [x20,740] - b .L2860 -.L2850: - cbz w0, .L2853 - adrp x0, .LANCHOR1 - add x0, x0, :lo12:.LANCHOR1 - ldrh w5, [x0,3456] - cmp w5, w4 - beq .L2854 -.L2855: - mov w1, 2 - b .L2853 -.L2854: - strh w3, [x0,3456] - ldrh w0, [x2,552] - cmp w0, 17 - bhi .L2855 -.L2853: - add x22, x19, :lo12:.LANCHOR2 - add x0, x22, 656 - bl FtlGcScanTempBlk - str w0, [x29,92] - cmn w0, #1 - beq .L2856 - ubfiz x20, x20, 1, 16 - ldr x1, [x22,440] - ldrh w0, [x1,x20] - cmp w0, 4 - bls .L2857 - sub w0, w0, #5 - strh w0, [x1,x20] - mov w0, 1 - bl FtlEctTblFlush -.L2857: - add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,3888] - cbnz w1, .L2858 - ldr w1, [x0,952] - add w1, w1, 1 - str w1, [x0,952] - ldr w0, [x29,92] - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L2858: - add x19, x19, :lo12:.LANCHOR2 - mov w0, 1 - str wzr, [x19,3888] - b .L2849 -.L2856: - adrp x0, .LANCHOR1+3456 - mov w1, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR1+3456] - mov w0, 1 - cmp w2, w1 - bne .L2849 - b .L2859 -.L2863: - ldr w1, [x23,4] - cmp w0, w1 - bne .L2881 -.L2862: - add w22, w22, 1 - uxth w22, w22 -.L2860: - ldrh w0, [x20,1440] + strh w0, [x1, x2, lsl 1] + ldr w1, [x20, 740] + ldrh w0, [x20, 1432] + add w0, w0, w1 + str w0, [x20, 740] +.L2811: + ldrh w0, [x20, 1432] cmp w0, w22 - bls .L2884 - umull x24, w22, w26 - ldr x25, [x20,1448] - add x1, x21, :lo12:.LANCHOR0 - add x23, x25, x24 - ldr w1, [x1,2616] - ldr w0, [x23,8] - cmp w0, w1 - bcs .L2881 - add x1, x29, 92 - mov w2, 0 - bl log2phys - ldr w0, [x29,92] - ldr w1, [x25,x24] - cmp w0, w1 - bne .L2863 - lsr x0, x0, 10 - bl P2V_block_in_plane - mov w24, w0 - ldr w0, [x23,8] - add x1, x23, 4 - mov w2, 1 - bl log2phys - mov w0, w24 - b .L2882 -.L2881: - ldrh w0, [x20,656] -.L2882: - bl decrement_vpc_count - b .L2862 -.L2884: + bhi .L2815 mov w0, -1 bl decrement_vpc_count add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L2865 + ldrb w0, [x0, 204] + cbz w0, .L2816 + ldrh w1, [x20, 656] adrp x0, .LC154 - ldrh w1, [x20,656] add x0, x0, :lo12:.LC154 bl printk -.L2865: +.L2816: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,656] - ldr x1, [x1,520] + ldrh w0, [x1, 656] + ldr x1, [x1, 520] ubfiz x2, x0, 1, 16 - ldrh w1, [x1,x2] - cbz w1, .L2866 + ldrh w1, [x1, x2] + cbz w1, .L2817 bl INSERT_DATA_LIST - b .L2867 -.L2866: - bl INSERT_FREE_LIST -.L2867: +.L2818: add x20, x19, :lo12:.LANCHOR2 mov w22, -1 - strh wzr, [x20,1440] - strh w22, [x20,656] - strh wzr, [x20,1428] + strh wzr, [x20, 1432] + strh w22, [x20, 656] + strh wzr, [x20, 1420] bl l2p_flush bl FtlVpcTblFlush - strh w22, [x20,800] + strh w22, [x20, 800] add x0, x21, :lo12:.LANCHOR0 - ldr w0, [x0,2372] - cbz w0, .L2868 - ldr w0, [x20,776] + ldr w0, [x0, 2372] + cbz w0, .L2819 + ldr w0, [x20, 776] cmp w0, 39 - bhi .L2868 - ldrh w0, [x20,780] - ldrh w1, [x20,552] + bhi .L2819 + ldrh w0, [x20, 780] + ldrh w1, [x20, 552] cmp w1, w0 - bcs .L2883 - lsl w0, w0, 1 - strh w0, [x20,1368] -.L2883: - mov w0, 0 - b .L2849 -.L2868: + bcs .L2836 + ubfiz w0, w0, 1, 15 + strh w0, [x20, 1364] + b .L2836 +.L2801: + cbz w0, .L2804 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + ldrh w4, [x0, 3456] + cmp w4, w3 + beq .L2805 +.L2806: + mov w1, 2 +.L2804: + add x22, x19, :lo12:.LANCHOR2 + add x0, x22, 656 + bl FtlGcScanTempBlk + str w0, [x29, 108] + cmn w0, #1 + beq .L2807 + ldr x1, [x22, 440] + ubfiz x20, x20, 1, 16 + ldrh w0, [x1, x20] + cmp w0, 4 + bls .L2808 + sub w0, w0, #5 + strh w0, [x1, x20] + mov w0, 1 + bl FtlEctTblFlush +.L2808: + add x0, x19, :lo12:.LANCHOR2 + ldr w1, [x0, 3880] + cbnz w1, .L2809 + ldr w1, [x0, 944] + add w1, w1, 1 + str w1, [x0, 944] + ldr w0, [x29, 108] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L2809: add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x19,780] - ldrh w0, [x19,552] - add w2, w1, w1, lsl 1 - cmp w0, w2, lsr 2 - ble .L2883 + str wzr, [x19, 3880] +.L2821: + mov w0, 1 + b .L2798 +.L2805: + strh wzr, [x0, 3456] + ldrh w0, [x2, 552] + cmp w0, 17 + bhi .L2806 + b .L2804 +.L2807: + adrp x0, .LANCHOR1+3456 + ldrh w1, [x0, #:lo12:.LANCHOR1+3456] + mov w0, 65535 + cmp w1, w0 + bne .L2821 + b .L2810 +.L2815: + umull x25, w22, w26 + ldr x27, [x20, 1440] + ldr w1, [x23, 2616] + add x24, x27, x25 + ldr w0, [x24, 8] + cmp w0, w1 + bcc .L2812 +.L2833: + ldrh w0, [x20, 656] + b .L2834 +.L2812: + add x1, x29, 108 + mov w2, 0 + bl log2phys + ldr w0, [x27, x25] + ldr w1, [x29, 108] + cmp w0, w1 + bne .L2814 + lsr w0, w0, 10 + bl P2V_block_in_plane + mov w25, w0 + ldr w0, [x24, 8] + mov w2, 1 + add x1, x24, 4 + bl log2phys + mov w0, w25 +.L2834: + bl decrement_vpc_count + b .L2813 +.L2814: + ldr w0, [x24, 4] + cmp w1, w0 + bne .L2833 +.L2813: + add w22, w22, 1 + and w22, w22, 65535 + b .L2811 +.L2817: + bl INSERT_FREE_LIST + b .L2818 +.L2819: + add x19, x19, :lo12:.LANCHOR2 + ldrh w0, [x19, 780] + ldrh w1, [x19, 552] + add w2, w0, w0, lsl 1 + cmp w1, w2, lsr 2 + ble .L2836 add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,204] - cbz w0, .L2869 - sub w1, w1, #2 - strh w1, [x19,1368] - b .L2883 -.L2869: - mov w1, 20 - strh w1, [x19,1368] -.L2849: - 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 + ldrb w1, [x21, 204] + cbz w1, .L2820 + sub w0, w0, #2 +.L2835: + strh w0, [x19, 1364] + b .L2836 +.L2820: + mov w0, 20 + b .L2835 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 .global FtlGcPageRecovery @@ -18566,28 +18188,28 @@ FtlGcFreeTempBlock: FtlGcPageRecovery: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - adrp x19, .LANCHOR2 add x20, x20, :lo12:.LANCHOR0 + adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - str x21, [sp,32] + str x21, [sp, 32] add x21, x19, 656 + ldrh w1, [x20, 2544] mov x0, x21 - ldrh w1, [x20,2544] bl FtlGcScanTempBlk - ldrh w1, [x19,658] - ldrh w0, [x20,2544] + ldrh w1, [x19, 658] + ldrh w0, [x20, 2544] cmp w1, w0 - bcc .L2885 - add x0, x19, 3800 + bcc .L2837 + add x0, x19, 3792 bl FtlMapBlkWriteDumpData mov w0, 0 bl FtlGcFreeTempBlock - str wzr, [x19,3888] -.L2885: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + str wzr, [x19, 3880] +.L2837: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlGcPageRecovery, .-FtlGcPageRecovery @@ -18596,12 +18218,12 @@ FtlGcPageRecovery: .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR5+1332 + adrp x0, .LANCHOR4+1848 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str wzr, [x0,#:lo12:.LANCHOR5+1332] add x19, x19, :lo12:.LANCHOR2 + str wzr, [x0, #:lo12:.LANCHOR4+1848] add x20, x19, 560 add x19, x19, 608 mov x0, x20 @@ -18616,7 +18238,7 @@ FtlPowerLostRecovery: mov w0, -1 bl decrement_vpc_count mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlPowerLostRecovery, .-FtlPowerLostRecovery @@ -18627,31 +18249,37 @@ FtlSysBlkInit: stp x29, x30, [sp, -64]! mov w1, -1 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - adrp x21, .LANCHOR5 - stp x23, x24, [sp,48] - add x0, x21, :lo12:.LANCHOR5 + stp x23, x24, [sp, 48] add x24, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR4 + add x0, x21, :lo12:.LANCHOR4 adrp x19, .LANCHOR2 add x23, x19, :lo12:.LANCHOR2 - strh w1, [x0,1328] - strh wzr, [x0,1330] - ldrh w0, [x24,2476] + strh w1, [x0, 1842] + strh wzr, [x0, 1844] + ldrh w0, [x24, 2476] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldrh w1, [x23,784] + ldrh w1, [x23, 784] mov w0, 65535 cmp w1, w0 - bne .L2889 -.L2891: + bne .L2843 +.L2845: mov w22, -1 - b .L2890 -.L2889: +.L2842: + mov w0, w22 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 + ret +.L2843: bl FtlLoadSysInfo mov w22, w0 - cbnz w0, .L2891 + cbnz w0, .L2845 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -18661,95 +18289,92 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldrh w2, [x24,2582] - mov x1, 0 - ldr x0, [x23,704] -.L2892: - cmp w1, w2 - mov w3, w1 - bge .L2896 - add x4, x0, x1, lsl 4 - add x1, x1, 1 - ldr w4, [x4,4] - tbz w4, #31, .L2892 -.L2896: - add x0, x19, :lo12:.LANCHOR2 - cmp w3, w2 - ldrh w1, [x0,484] - add w1, w1, 1 - strh w1, [x0,484] - blt .L2893 - add x21, x21, :lo12:.LANCHOR5 - ldrh w0, [x21,1330] - cbz w0, .L2897 -.L2893: + ldr x1, [x23, 704] + mov w0, 0 + ldrh w3, [x24, 2582] + add x1, x1, 4 +.L2846: + cmp w0, w3 + bge .L2851 + ldr w2, [x1], 16 + tbz w2, #31, .L2847 +.L2851: add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,560] - ldr x4, [x1,520] + cmp w0, w3 + ldrh w2, [x1, 484] + add w2, w2, 1 + strh w2, [x1, 484] + bge .L2858 +.L2848: + add x0, x19, :lo12:.LANCHOR2 + ldrh w2, [x0, 560] + ldr x4, [x0, 520] + ldrh w5, [x0, 564] lsl x2, x2, 1 - ldrh w5, [x1,564] - ldrh w3, [x4,x2] + ldrh w3, [x4, x2] sub w3, w3, w5 - strh w3, [x4,x2] + strh w3, [x4, x2] add x4, x20, :lo12:.LANCHOR0 - strb wzr, [x1,566] - ldr x5, [x1,520] - strh wzr, [x1,564] - ldrh w2, [x4,2544] - strh w2, [x1,562] - ldrh w2, [x1,608] - ldrh w6, [x1,612] + strb wzr, [x0, 566] + ldr x5, [x0, 520] + strh wzr, [x0, 564] + ldrh w2, [x4, 2544] + strh w2, [x0, 562] + ldrh w2, [x0, 608] + ldrh w6, [x0, 612] lsl x2, x2, 1 - ldrh w3, [x5,x2] + ldrh w3, [x5, x2] sub w3, w3, w6 - strh w3, [x5,x2] - strb wzr, [x1,614] - ldrh w0, [x1,486] - ldrh w2, [x4,2544] - add w0, w0, 1 - strh w2, [x1,610] - strh wzr, [x1,612] - strh w0, [x1,486] + strh w3, [x5, x2] + strb wzr, [x0, 614] + ldrh w1, [x0, 486] + ldrh w2, [x4, 2544] + add w1, w1, 1 + strh w2, [x0, 610] + strh w1, [x0, 486] + strh wzr, [x0, 612] bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L2897: + b .L2852 +.L2847: + add w0, w0, 1 + b .L2846 +.L2858: + add x21, x21, :lo12:.LANCHOR4 + ldrh w0, [x21, 1844] + cbnz w0, .L2848 +.L2852: add x21, x19, :lo12:.LANCHOR2 mov w1, 65535 add x24, x21, 560 - ldrh w0, [x21,560] + ldrh w0, [x21, 560] cmp w0, w1 - beq .L2898 - ldrh w1, [x21,564] - cbnz w1, .L2898 - ldrh w1, [x21,612] + beq .L2853 + ldrh w1, [x21, 564] + cbnz w1, .L2853 + ldrh w1, [x21, 612] add x23, x21, 608 - cbnz w1, .L2898 + cbnz w1, .L2853 bl FtlGcRefreshOpenBlock - ldrh w0, [x21,608] + ldrh w0, [x21, 608] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush mov x0, x24 bl allocate_new_data_superblock mov x0, x23 bl allocate_new_data_superblock -.L2898: +.L2853: add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,72] - cbnz w0, .L2899 + ldrb w0, [x20, 72] + cbnz w0, .L2854 add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,484] - and w0, w0, 31 - cbnz w0, .L2890 -.L2899: + ldrh w0, [x19, 484] + tst x0, 31 + bne .L2842 +.L2854: bl FtlVpcCheckAndModify -.L2890: - mov w0, w22 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 - ret + b .L2842 .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 .global FtlLowFormat @@ -18757,295 +18382,299 @@ FtlSysBlkInit: FtlLowFormat: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - add x20, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w21, [x20,424] - cbnz w21, .L2907 - adrp x22, .LANCHOR0 - ldr x0, [x20,3768] - add x23, x22, :lo12:.LANCHOR0 - mov w1, w21 - ldrh w2, [x23,2580] + stp x21, x22, [sp, 32] + add x21, x19, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + ldr w0, [x21, 424] + cbnz w0, .L2862 + adrp x20, .LANCHOR0 + add x22, x20, :lo12:.LANCHOR0 + ldr x0, [x21, 3760] + mov w1, 0 + ldrh w2, [x22, 2580] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x23,2580] - mov w1, w21 - ldr x0, [x20,3760] + ldr x0, [x21, 3752] + mov w1, 0 + ldrh w2, [x22, 2580] lsl w2, w2, 2 bl ftl_memset - str w21, [x20,752] - ldrh w0, [x23,2476] - str w21, [x20,756] + ldrh w0, [x22, 2476] + str wzr, [x21, 752] + str wzr, [x21, 756] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L2908 + cbz w0, .L2863 bl FtlMakeBbt -.L2908: - mov w0, 0 -.L2909: - add x1, x22, :lo12:.LANCHOR0 - ldrh w2, [x1,2550] - cmp w0, w2, lsl 7 - bge .L2936 +.L2863: + mov w5, 23752 + add x2, x20, :lo12:.LANCHOR0 add x3, x19, :lo12:.LANCHOR2 - ubfiz x2, x0, 2, 16 - mvn w1, w0 - ldr x4, [x3,3648] - orr w1, w0, w1, lsl 16 - add w0, w0, 1 - str w1, [x4,x2] - mov w1, 23752 - movk w1, 0xa0f, lsl 16 - uxth w0, w0 - ldr x3, [x3,3656] - str w1, [x3,x2] - b .L2909 -.L2936: - ldrh w21, [x1,2480] - mov w20, 0 -.L2911: - add x23, x22, :lo12:.LANCHOR0 - ldrh w0, [x23,2482] - cmp w0, w21 - bls .L2937 - mov w0, w21 - mov w1, 1 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w0, w20, w0 - uxth w21, w21 - uxth w20, w0 - b .L2911 -.L2937: - ldrh w0, [x23,2472] - sub w1, w20, #3 + mov w0, 0 + movk w5, 0xa0f, lsl 16 +.L2864: + ldrh w1, [x2, 2550] + cmp w0, w1, lsl 7 + blt .L2865 + ldrh w22, [x2, 2480] + add x23, x20, :lo12:.LANCHOR0 + mov w21, 0 +.L2866: + ldrh w0, [x23, 2482] + cmp w0, w22 + bhi .L2867 + ldrh w0, [x23, 2472] + sub w1, w21, #3 cmp w1, w0, lsl 1 - blt .L2913 - udiv w0, w20, w0 - ldr w20, [x23,2576] - add w0, w0, w20 - mov w20, 0 + blt .L2868 + udiv w0, w21, w0 + ldr w21, [x23, 2576] + add w0, w0, w21 bl FtlSysBlkNumInit - ldrh w0, [x23,2476] + ldrh w0, [x23, 2476] + mov w21, 0 bl FtlFreeSysBlkQueueInit - ldrh w21, [x23,2480] -.L2914: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2482] - cmp w0, w21 - bls .L2913 - mov w0, w21 - mov w1, 1 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w0, w20, w0 - uxth w21, w21 - uxth w20, w0 - b .L2914 -.L2913: - mov w23, 0 - mov w21, w23 -.L2916: - add x0, x22, :lo12:.LANCHOR0 - ldrh w1, [x0,2480] - cmp w1, w21 - bls .L2938 - mov w0, w21 - mov w1, 0 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w0, w23, w0 - uxth w21, w21 - uxth w23, w0 - b .L2916 -.L2938: - add x4, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,2482] - ldrh w2, [x0,2472] - str w1, [x4,3580] - ldr w1, [x0,2484] - udiv w3, w1, w2 - str w3, [x0,2616] - ubfx x6, x3, 5, 16 - add w5, w6, 36 - strh w5, [x4,780] + ldrh w22, [x23, 2480] + add x23, x20, :lo12:.LANCHOR0 +.L2869: + ldrh w0, [x23, 2482] + cmp w0, w22 + bhi .L2870 +.L2868: + add x23, x20, :lo12:.LANCHOR0 + mov w22, 0 + mov w24, 0 +.L2871: + ldrh w0, [x23, 2480] + cmp w0, w24 + bhi .L2872 + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x23, 2482] + ldr w2, [x23, 2484] + str w0, [x1, 3572] + ldrh w0, [x23, 2472] + udiv w4, w2, w0 + ubfx x3, x4, 5, 16 + str w4, [x23, 2616] + add w5, w3, 36 + strh w5, [x1, 780] mov w5, 24 - mul w5, w2, w5 - cmp w23, w5 - ble .L2918 - sub w1, w1, w23 - udiv w1, w1, w2 - str w1, [x0,2616] - lsr w1, w1, 5 - add w1, w1, 24 - strh w1, [x4,780] -.L2918: - add x0, x22, :lo12:.LANCHOR0 - ldr w0, [x0,2372] - cmp w0, 1 - bne .L2919 + mul w5, w0, w5 + cmp w22, w5 + ble .L2873 + sub w2, w2, w22 + udiv w2, w2, w0 + str w2, [x23, 2616] + lsr w2, w2, 5 + add w2, w2, 24 + strh w2, [x1, 780] +.L2873: + add x1, x20, :lo12:.LANCHOR0 + ldr w1, [x1, 2372] + cmp w1, 1 + bne .L2874 + udiv w2, w22, w0 add x1, x19, :lo12:.LANCHOR2 - udiv w0, w23, w2 - ldrh w4, [x1,780] - add w0, w4, w0 - add w0, w4, w0, asr 2 - strh w0, [x1,780] -.L2919: - add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L2920 + ldrh w5, [x1, 780] + add w2, w2, w5 + add w2, w5, w2, asr 2 + strh w2, [x1, 780] +.L2874: + add x1, x20, :lo12:.LANCHOR0 + ldrb w1, [x1, 204] + cbz w1, .L2875 + udiv w2, w22, w0 add x1, x19, :lo12:.LANCHOR2 - udiv w0, w23, w2 - ldrh w4, [x1,780] - add w0, w4, w0 - add w0, w4, w0, asr 2 - strh w0, [x1,780] -.L2920: - add x5, x22, :lo12:.LANCHOR0 - ldrh w1, [x5,2538] - cbz w1, .L2922 - add x0, x19, :lo12:.LANCHOR2 - ldrh w4, [x0,780] - add w4, w4, w1, lsr 1 - strh w4, [x0,780] - mul w4, w1, w2 - cmp w4, w23 - ble .L2922 + ldrh w5, [x1, 780] + add w2, w2, w5 + add w2, w5, w2, asr 2 + strh w2, [x1, 780] +.L2875: + add x6, x20, :lo12:.LANCHOR0 + ldrh w1, [x6, 2538] + cbz w1, .L2877 + add x2, x19, :lo12:.LANCHOR2 + ldrh w5, [x2, 780] + add w5, w5, w1, lsr 1 + strh w5, [x2, 780] + mul w5, w1, w0 + cmp w22, w5 + bge .L2877 add w1, w1, 32 - str w3, [x5,2616] - add w1, w6, w1 - strh w1, [x0,780] -.L2922: - add x24, x22, :lo12:.LANCHOR0 - add x0, x19, :lo12:.LANCHOR2 - adrp x21, .LANCHOR4 - ldr w1, [x24,2616] - ldrh w0, [x0,780] - sub w0, w1, w0 - add x1, x21, :lo12:.LANCHOR4 - mul w0, w0, w2 - str w0, [x1,1760] - ldrh w1, [x24,2544] - mul w0, w0, w1 - ldrh w1, [x24,2550] - str w0, [x24,2616] - mul w0, w0, w1 - str w0, [x24,2584] + str w4, [x6, 2616] + add w1, w3, w1 + strh w1, [x2, 780] +.L2877: + add x24, x20, :lo12:.LANCHOR0 + add x1, x19, :lo12:.LANCHOR2 + adrp x23, .LANCHOR4 + ldrh w2, [x1, 780] + ldr w1, [x24, 2616] + sub w1, w1, w2 + mul w0, w1, w0 + add x1, x23, :lo12:.LANCHOR4 + str w0, [x1, 1768] + ldrh w1, [x24, 2544] + mul w0, w1, w0 + ldrh w1, [x24, 2550] + str w0, [x24, 2616] + mul w0, w1, w0 + str w0, [x24, 2584] bl FtlBbmTblFlush - ldr w2, [x24,2488] - add w1, w23, w20 - ldrh w0, [x24,2558] + ldrh w0, [x24, 2558] + add w1, w21, w22 + ldr w2, [x24, 2488] add w0, w0, w2, lsr 3 cmp w1, w0 - bls .L2924 + bls .L2879 adrp x0, .LC155 lsr w2, w2, 5 add x0, x0, :lo12:.LC155 bl printk -.L2924: - add x24, x22, :lo12:.LANCHOR0 - add x19, x19, :lo12:.LANCHOR2 +.L2879: + add x22, x20, :lo12:.LANCHOR0 + add x20, x19, :lo12:.LANCHOR2 + add x21, x20, 560 mov w1, 0 - add x20, x19, 560 - mov w23, -1 - ldrh w2, [x24,2482] - ldr x0, [x19,520] + mov w24, -1 + ldr x0, [x20, 520] + ldrh w2, [x22, 2482] lsl w2, w2, 1 bl ftl_memset - str wzr, [x19,716] mov w0, 1 - ldrh w2, [x24,2480] - strb w0, [x20,8] + strb w0, [x21, 8] + ldr x0, [x22, 64] mov w1, 255 - ldr x0, [x22,#:lo12:.LANCHOR0] + ldrh w2, [x22, 2480] + strh w24, [x20, 800] + strh wzr, [x20, 802] + strb wzr, [x20, 806] lsr w2, w2, 3 - strh w23, [x19,800] - strh wzr, [x19,802] - strb wzr, [x19,806] - strb wzr, [x19,808] - strh wzr, [x20,2] - strb wzr, [x20,6] - strh wzr, [x19,560] + strb wzr, [x20, 808] + strh wzr, [x21, 2] + strb wzr, [x21, 6] + strh wzr, [x20, 560] + str wzr, [x20, 716] bl ftl_memset -.L2925: - mov x0, x20 +.L2880: + mov x0, x21 bl make_superblock - ldrb w0, [x20,7] - cbnz w0, .L2926 - ldrh w1, [x20] - ldr x0, [x19,520] - strh w23, [x0,x1,lsl 1] - ldrh w0, [x20] + ldrb w1, [x21, 7] + ldrh w0, [x21] + cbnz w1, .L2881 + ldr x1, [x20, 520] + ubfiz x0, x0, 1, 16 + strh w24, [x1, x0] + ldrh w0, [x21] add w0, w0, 1 - strh w0, [x20] - b .L2925 -.L2926: - ldr w0, [x19,752] - mov w22, -1 - str w0, [x20,12] + strh w0, [x21] + b .L2880 +.L2865: + ldr x6, [x3, 3640] + ubfiz x4, x0, 2, 16 + mvn w1, w0 + orr w1, w0, w1, lsl 16 add w0, w0, 1 - ldrh w1, [x20] - str w0, [x19,752] - ldr x0, [x19,520] - ldrh w2, [x20,4] - strh w2, [x0,x1,lsl 1] - add x0, x19, 608 - strh wzr, [x19,610] - ldrh w1, [x20] - mov x20, x0 - strb wzr, [x19,614] - add w1, w1, 1 - strh w1, [x19,608] + and w0, w0, 65535 + str w1, [x6, x4] + ldr x1, [x3, 3648] + str w5, [x1, x4] + b .L2864 +.L2867: + mov w0, w22 mov w1, 1 - strb w1, [x19,616] -.L2927: - mov x0, x20 + add w22, w22, 1 + bl FtlLowFormatEraseBlock + add w21, w21, w0 + and w22, w22, 65535 + and w21, w21, 65535 + b .L2866 +.L2870: + mov w0, w22 + mov w1, 1 + add w22, w22, 1 + bl FtlLowFormatEraseBlock + add w21, w21, w0 + and w22, w22, 65535 + and w21, w21, 65535 + b .L2869 +.L2872: + mov w0, w24 + mov w1, 0 + add w24, w24, 1 + bl FtlLowFormatEraseBlock + add w22, w22, w0 + and w24, w24, 65535 + and w22, w22, 65535 + b .L2871 +.L2881: + ldr w1, [x20, 752] + ubfiz x0, x0, 1, 16 + str w1, [x21, 12] + add x19, x19, :lo12:.LANCHOR2 + add w1, w1, 1 + str w1, [x20, 752] + ldr x1, [x20, 520] + mov w13, -1 + ldrh w2, [x21, 4] + strh w2, [x1, x0] + add x0, x20, 608 + mov x12, x0 + strh wzr, [x20, 610] + ldrh w1, [x21] + strb wzr, [x20, 614] + add w1, w1, 1 + strh w1, [x20, 608] + mov w1, 1 + strb w1, [x20, 616] +.L2882: + mov x0, x12 bl make_superblock - ldrb w0, [x20,7] - cbnz w0, .L2928 - ldrh w1, [x20] - ldr x0, [x19,520] - strh w22, [x0,x1,lsl 1] - ldrh w0, [x20] + ldrb w1, [x12, 7] + ldrh w0, [x12] + cbnz w1, .L2883 + ldr x1, [x19, 520] + ubfiz x0, x0, 1, 16 + strh w13, [x1, x0] + ldrh w0, [x12] add w0, w0, 1 - strh w0, [x20] - b .L2927 -.L2928: - ldr w0, [x19,752] - add x21, x21, :lo12:.LANCHOR4 - str w0, [x20,12] - add w0, w0, 1 - ldrh w1, [x20] - str w0, [x19,752] - ldr x0, [x19,520] - ldrh w2, [x20,4] + strh w0, [x12] + b .L2882 +.L2883: + ldr w1, [x19, 752] + ubfiz x0, x0, 1, 16 + str w1, [x12, 12] + add x23, x23, :lo12:.LANCHOR4 + add w1, w1, 1 + str w1, [x19, 752] + ldr x1, [x19, 520] mov w20, -1 - strh w2, [x0,x1,lsl 1] - strh w20, [x19,656] + ldrh w2, [x12, 4] + strh w2, [x1, x0] + strh w20, [x19, 656] bl FtlFreeSysBlkQueueOut - strh w0, [x19,784] - ldr w0, [x21,1760] - strh w0, [x19,790] - ldr w0, [x19,752] - str w0, [x19,792] + strh w0, [x19, 784] + ldr w0, [x23, 1768] + strh w0, [x19, 790] + ldr w0, [x19, 752] + str w0, [x19, 792] add w0, w0, 1 - strh wzr, [x19,786] - strh w20, [x19,788] - str w0, [x19,752] + strh wzr, [x19, 786] + strh w20, [x19, 788] + str w0, [x19, 752] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L2907 + cbnz w0, .L2862 adrp x0, .LANCHOR1+504 mov w1, 1 - str w1, [x0,#:lo12:.LANCHOR1+504] -.L2907: + str w1, [x0, #:lo12:.LANCHOR1+504] +.L2862: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size FtlLowFormat, .-FtlLowFormat @@ -19053,188 +18682,189 @@ FtlLowFormat: .global FtlReInitForSDUpdata .type FtlReInitForSDUpdata, %function FtlReInitForSDUpdata: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L2940 -.L2942: - mov w0, 0 - b .L2941 -.L2940: + str x21, [sp, 32] + ldrb w0, [x0, 204] + cbz w0, .L2893 +.L2895: + mov w21, 0 +.L2892: + mov w0, w21 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 64 + ret +.L2893: adrp x20, .LANCHOR4 add x0, x20, :lo12:.LANCHOR4 - ldr x0, [x0,1592] + ldr x0, [x0, 1584] bl FlashInit - cbnz w0, .L2942 + mov w21, w0 + cbnz w0, .L2895 bl FlashLoadFactorBbt - cbz w0, .L2943 + cbz w0, .L2896 bl FlashMakeFactorBbt -.L2943: +.L2896: add x20, x20, :lo12:.LANCHOR4 - ldr x0, [x20,1648] + ldr x0, [x20, 1656] bl FlashReadIdbDataRaw - cbz w0, .L2944 - mov w1, 0 + cbz w0, .L2897 mov w2, 16 - add x0, x29, 32 + mov w1, 0 + add x0, x29, 48 bl FlashReadFacBbtData + ldr w2, [x29, 48] mov w0, 0 - ldr w2, [x29,32] - mov w1, w0 - mov w4, 1 -.L2946: - lsl w3, w4, w1 - add w1, w1, 1 - tst w3, w2 - cset w3, ne - cmp w1, 16 - add w0, w0, w3 - bne .L2946 - cmp w0, 6 - bhi .L2947 - add x0, x19, :lo12:.LANCHOR0 - b .L2969 -.L2947: mov w1, 0 mov w4, 1 -.L2950: +.L2899: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 - cset w3, ne - cmp w1, 24 - add w0, w0, w3 - bne .L2950 - cmp w0, 17 + cinc w0, w0, ne + cmp w1, 16 + bne .L2899 + cmp w0, 6 + bhi .L2900 add x0, x19, :lo12:.LANCHOR0 - bls .L2969 - mov w1, 36 -.L2969: - strb w1, [x0,73] +.L2923: + strb w1, [x0, 73] add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,73] - strh w1, [x0,202] -.L2944: - adrp x0, .LC75 - adrp x1, .LC76 - add x1, x1, :lo12:.LC76 - add x0, x0, :lo12:.LC75 + ldrb w1, [x0, 73] + strh w1, [x0, 202] +.L2897: + adrp x1, .LC75 + add x1, x1, :lo12:.LC75 add x19, x19, :lo12:.LANCHOR0 + adrp x0, .LC76 + add x0, x0, :lo12:.LC76 bl printk add x0, x19, 176 bl FtlConstantsInit bl FtlVariablesInit - ldrh w0, [x19,2476] + ldrh w0, [x19, 2476] mov w19, 1 bl FtlFreeSysBlkQueueInit -.L2952: +.L2905: bl FtlLoadBbt - cbz w0, .L2953 -.L2971: + cbz w0, .L2906 +.L2925: bl FtlLowFormat cmp w19, 3 - bhi .L2972 + bls .L2907 + mov w21, -1 + b .L2892 +.L2900: + mov w1, 0 + mov w4, 1 +.L2903: + lsl w3, w4, w1 + add w1, w1, 1 + tst w3, w2 + cinc w0, w0, ne + cmp w1, 24 + bne .L2903 + cmp w0, 17 + add x0, x19, :lo12:.LANCHOR0 + bls .L2923 + mov w1, 36 + b .L2923 +.L2907: add w19, w19, 1 - b .L2952 -.L2972: - mov w0, -1 - b .L2941 -.L2953: + b .L2905 +.L2906: bl FtlSysBlkInit - cbnz w0, .L2971 - adrp x1, .LANCHOR1+504 - mov w2, 1 - str w2, [x1,#:lo12:.LANCHOR1+504] -.L2941: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 - ret + cbnz w0, .L2925 + adrp x0, .LANCHOR1+504 + mov w1, 1 + str w1, [x0, #:lo12:.LANCHOR1+504] + b .L2892 .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: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR2 - add x0, x21, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - ldr w1, [x0,424] - cbz w1, .L2974 -.L2977: + adrp x12, .LANCHOR2 + add x0, x12, :lo12:.LANCHOR2 + ldr w1, [x0, 424] + cbz w1, .L2927 +.L2941: mov w0, 0 - b .L2975 -.L2974: + ret +.L2930: + mov w0, 0 +.L2926: + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L2927: adrp x1, .LANCHOR0+204 - ldrb w1, [x1,#:lo12:.LANCHOR0+204] - cbz w1, .L2976 - ldr w1, [x0,1384] - tbz x1, 0, .L2976 - ldrh w0, [x0,660] - cbnz w0, .L2977 -.L2976: - add x1, x21, :lo12:.LANCHOR2 + ldrb w1, [x1, #:lo12:.LANCHOR0+204] + cbz w1, .L2929 + ldr w1, [x0, 1380] + tbz x1, 0, .L2929 + ldrh w0, [x0, 660] + cbnz w0, .L2941 +.L2929: + stp x29, x30, [sp, -32]! + mov w3, 0 mov w2, 0 - mov w3, w2 - mov w20, 0 - mov w22, 56 - ldr x0, [x1,3600] - ldr w1, [x1,1384] + add x29, sp, 0 + str x19, [sp, 16] + add x19, x12, :lo12:.LANCHOR2 + ldr w1, [x19, 1380] + ldr x0, [x19, 3592] bl FlashProgPages -.L2978: - add x19, x21, :lo12:.LANCHOR2 - ldr w1, [x19,1384] - cmp w20, w1 - bcs .L2988 - umull x0, w20, w22 - ldr x3, [x19,3600] - add x1, x3, x0 - ldr w3, [x3,x0] - cmn w3, #1 - ldr x2, [x1,16] - bne .L2979 - ldrh w2, [x19,656] - ldr x1, [x19,520] - strh wzr, [x1,x2,lsl 1] - strh w3, [x19,656] - ldr w1, [x19,952] - add w1, w1, 1 - str w1, [x19,952] - ldr x1, [x19,3600] - add x0, x1, x0 - ldr w0, [x0,4] + mov w10, 0 + mov w11, 56 +.L2931: + ldr w1, [x19, 1380] + cmp w10, w1 + bcc .L2933 + ldr x0, [x19, 3592] + bl FtlGcBufFree + str wzr, [x19, 1380] + ldrh w0, [x19, 660] + cbnz w0, .L2930 + mov w0, 1 + bl FtlGcFreeTempBlock + b .L2943 +.L2933: + umull x1, w10, w11 + ldr x2, [x19, 3592] + add x3, x2, x1 + ldr w2, [x2, x1] + ldr x0, [x3, 16] + cmn w2, #1 + bne .L2932 + ldrh w3, [x19, 656] + ldr x0, [x19, 520] + strh wzr, [x0, x3, lsl 1] + strh w2, [x19, 656] + ldr w0, [x19, 944] + add w0, w0, 1 + str w0, [x19, 944] + ldr x0, [x19, 3592] + add x0, x0, x1 + ldr w0, [x0, 4] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L2987 -.L2979: - ldr w0, [x2,12] - add w20, w20, 1 - ldr w1, [x1,4] - ldr w2, [x2,8] - uxth w20, w20 +.L2943: + mov w0, 1 + b .L2926 +.L2932: + ldp w2, w0, [x0, 8] + ldr w1, [x3, 4] bl FtlGcUpdatePage - b .L2978 -.L2988: - ldr x0, [x19,3600] - bl FtlGcBufFree - str wzr, [x19,1384] - ldrh w0, [x19,660] - cbnz w0, .L2977 - mov w0, 1 - bl FtlGcFreeTempBlock -.L2987: - mov w0, 1 -.L2975: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret + add w10, w10, 1 + and w10, w10, 65535 + b .L2931 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 2 .global Ftl_get_new_temp_ppa @@ -19242,35 +18872,35 @@ Ftl_gc_temp_data_write_back: Ftl_get_new_temp_ppa: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 add x1, x0, 656 - ldrh w2, [x0,656] + ldrh w2, [x0, 656] mov w0, 65535 cmp w2, w0 - beq .L2990 - ldrh w0, [x1,4] - cbnz w0, .L2991 -.L2990: + beq .L2945 + ldrh w0, [x1, 4] + cbnz w0, .L2946 +.L2945: bl FtlCacheWriteBack add x20, x19, :lo12:.LANCHOR2 mov w0, 0 bl FtlGcFreeTempBlock - strb wzr, [x20,664] add x0, x20, 656 + strb wzr, [x0, 8] bl allocate_data_superblock - strh wzr, [x20,1428] - strh wzr, [x20,1440] + strh wzr, [x20, 1420] + strh wzr, [x20, 1432] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2991: +.L2946: add x0, x19, :lo12:.LANCHOR2 add x0, x0, 656 bl get_new_active_ppa - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa @@ -19278,1182 +18908,1188 @@ Ftl_get_new_temp_ppa: .global ftl_do_gc .type ftl_do_gc, %function ftl_do_gc: - stp x29, x30, [sp, -144]! - mov w2, 0 + stp x29, x30, [sp, -160]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - add x3, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w4, [x3,424] - cbnz w4, .L3145 - adrp x4, .LANCHOR1 - add x4, x4, :lo12:.LANCHOR1 - ldr w20, [x4,504] + add x2, x19, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w3, [x2, 424] + cbnz w3, .L3047 + adrp x3, .LANCHOR1 + add x3, x3, :lo12:.LANCHOR1 + ldr w20, [x3, 504] cmp w20, 1 - bne .L3145 - ldr w5, [x3,3568] - cbnz w5, .L3145 - ldrh w5, [x3,536] - cmp w5, 47 - bls .L3145 + bne .L3047 + ldr w4, [x2, 3560] + cbnz w4, .L3047 + ldrh w4, [x2, 536] + cmp w4, 47 + bls .L3047 mov w22, w1 - ldrh w1, [x4,3456] - str w0, [x29,124] + ldrh w1, [x3, 3456] + mov w23, w0 mov w0, 65535 cmp w1, w0 - bne .L2994 -.L2997: + bne .L2950 +.L2953: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 - ldrh w4, [x0,1458] + ldrh w4, [x0, 1450] cmp w4, w2 - bne .L2995 - b .L2996 -.L2994: - ldrh w1, [x3,656] - cmp w1, w0 - beq .L2997 - mov w0, w20 - bl FtlGcFreeTempBlock - mov w2, w20 - cbz w0, .L2997 - b .L3145 -.L2995: - ldrh w1, [x0,1456] - cmp w1, w2 - bne .L2996 - ldrh w3, [x0,1460] - cmp w3, w1 - beq .L2996 - ldrh w2, [x0,1462] - cmp w2, w1 - beq .L2996 - mov w1, -1 - strh w4, [x0,1456] - strh w3, [x0,1458] - strh w2, [x0,1460] - strh w1, [x0,1462] -.L2996: + bne .L2951 +.L2952: add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x29,124] - cmp w2, 1 - ldr w0, [x1,1372] + cmp w23, 1 + ldr w0, [x1, 1368] add w0, w0, 1 - add w0, w0, w2, lsl 7 - str w0, [x1,1372] - bne .L3008 + add w0, w0, w23, lsl 7 + str w0, [x1, 1368] + bne .L2954 adrp x2, .LANCHOR0 add x1, x2, :lo12:.LANCHOR0 - mov x26, x2 - ldr w3, [x1,2372] - cbnz w3, .L2999 - ldrb w1, [x1,204] - cbz w1, .L3008 -.L2999: - add x20, x19, :lo12:.LANCHOR2 - ldr w1, [x20,776] + mov x25, x2 + ldr w3, [x1, 2372] + cbnz w3, .L2955 + ldrb w1, [x1, 204] + cbz w1, .L2954 +.L2955: + add x24, x19, :lo12:.LANCHOR2 + ldr w1, [x24, 776] cmp w1, 39 - bhi .L3008 - adrp x21, .LANCHOR5 - add x1, x21, :lo12:.LANCHOR5 - ldrh w1, [x1,1464] - add w0, w0, w1 - str w0, [x20,1372] + bhi .L2954 + adrp x21, .LANCHOR4 + add x1, x21, :lo12:.LANCHOR4 + mov w20, 65535 + ldrh w1, [x1, 1984] + add w0, w1, w0 + str w0, [x24, 1368] bl FtlGcReFreshBadBlk - ldrh w0, [x20,800] - mov w1, 65535 - cmp w0, w1 - bne .L3008 - ldrh w1, [x20,1456] + ldrh w0, [x24, 800] + cmp w0, w20 + bne .L2956 + ldrh w1, [x24, 1448] cmp w1, w0 - bne .L3008 - ldr w0, [x20,1372] + bne .L3043 + ldr w0, [x24, 1368] cmp w0, 1024 - bhi .L3000 - ldrh w0, [x20,552] + bhi .L2958 + ldrh w0, [x24, 552] cmp w0, 63 - bhi .L3008 -.L3000: + bhi .L3043 +.L2958: add x0, x19, :lo12:.LANCHOR2 - add x1, x21, :lo12:.LANCHOR5 - ldrh w2, [x0,1370] - ldrh w3, [x0,552] + add x1, x21, :lo12:.LANCHOR4 + ldrh w2, [x0, 1366] + ldrh w3, [x0, 552] + strh wzr, [x1, 1984] add w2, w2, 64 - strh wzr, [x1,1464] cmp w3, w2 - bgt .L3008 - str wzr, [x0,1372] - ldr w0, [x0,776] - cbnz w0, .L3001 + bgt .L3043 + str wzr, [x0, 1368] + ldr w0, [x0, 776] + cbnz w0, .L2959 mov w0, 6 - b .L3167 -.L3001: - cmp w0, 5 - bhi .L3002 - mov w0, 18 -.L3167: - strh w0, [x1,1464] -.L3002: +.L3096: + strh w0, [x1, 1984] +.L2960: mov w0, 32 - mov w28, 65535 bl List_get_gc_head_node - uxth w25, w0 - cmp w25, w28 - beq .L3007 - add x23, x19, :lo12:.LANCHOR2 - ldrh w0, [x23,1376] - cbz w0, .L3004 - add x2, x26, :lo12:.LANCHOR0 - ldr x27, [x23,520] - ubfiz x25, x25, 1, 16 - ldrh w1, [x2,2546] - ldrh w2, [x2,2472] - ldrh w3, [x27,x25] + and w5, w0, 65535 + mov w8, 65535 + cmp w5, w8 + beq .L2964 + add x24, x19, :lo12:.LANCHOR2 + ldrh w0, [x24, 1372] + cbz w0, .L2962 + add x2, x25, :lo12:.LANCHOR0 + ldr x7, [x24, 520] + ubfiz x5, x5, 1, 16 + ldrh w1, [x2, 2546] + ldrh w2, [x2, 2472] + ldrh w3, [x7, x5] mul w1, w1, w2 add w1, w1, 1 cmp w3, w1 - bgt .L3007 - add w1, w0, 1 - str wzr, [x23,1380] - uxth w1, w1 - strh w1, [x23,1376] - str x1, [x29,112] + bgt .L2964 + add w6, w0, 1 + str wzr, [x24, 1376] + and w6, w6, 65535 + strh w6, [x24, 1372] bl List_get_gc_head_node - uxth w20, w0 - cmp w20, w28 - ldr x1, [x29,112] - beq .L3007 - ubfiz x26, x20, 1, 16 - adrp x0, .LC156 - ldrh w4, [x27,x25] - add x0, x0, :lo12:.LC156 + and w20, w0, 65535 + cmp w20, w8 + beq .L2964 + ubfiz x25, x20, 1, 16 + ldrh w4, [x7, x5] mov w2, w20 - ldrh w3, [x27,x26] + mov w1, w6 + adrp x0, .LC156 + add x0, x0, :lo12:.LC156 + ldrh w3, [x7, x25] bl printk - ldrh w0, [x23,1376] + ldrh w0, [x24, 1372] cmp w0, 40 - bls .L3005 - ldr x0, [x23,520] - ldrh w0, [x0,x26] + bls .L2963 + ldr x0, [x24, 520] + ldrh w0, [x0, x25] cmp w0, 32 - bls .L3005 - strh wzr, [x23,1376] -.L3005: - add x21, x21, :lo12:.LANCHOR5 + bls .L2963 + strh wzr, [x24, 1372] +.L2963: + add x21, x21, :lo12:.LANCHOR4 mov w0, 6 - strh w0, [x21,1464] - b .L3009 -.L3004: - mov w0, 1 - strh w0, [x23,1376] -.L3007: - bl GetSwlReplaceBlock - uxth w20, w0 - mov w0, 65535 - cmp w20, w0 - bne .L3009 - add x21, x21, :lo12:.LANCHOR5 - strh wzr, [x21,1464] -.L3008: - add x21, x19, :lo12:.LANCHOR2 - mov w0, 65535 - ldrh w20, [x21,800] - cmp w20, w0 - bne .L3171 - ldrh w0, [x21,656] - cmp w0, w20 - beq .L3172 -.L3009: - mov w0, 65535 - cmp w20, w0 - cset w2, eq - cbz w2, .L3022 - ldr w0, [x29,124] - cbnz w0, .L3022 + strh w0, [x21, 1984] +.L2956: + cmp w23, 0 + mov w1, 65535 add x0, x19, :lo12:.LANCHOR2 - mov w21, 1 - ldrh w1, [x0,552] - cmp w1, 24 - bhi .L3023 + ccmp w20, w1, 0, eq + bne .L2978 + ldrh w2, [x0, 552] + cmp w2, 24 + bhi .L3055 adrp x0, .LANCHOR0 - cmp w1, 16 add x0, x0, :lo12:.LANCHOR0 - ldrh w21, [x0,2544] - bls .L3024 + cmp w2, 16 + ldrh w21, [x0, 2544] + bls .L2980 lsr w21, w21, 5 - b .L3023 -.L3024: - cmp w1, 12 - bls .L3025 - lsr w21, w21, 4 - b .L3023 -.L3025: - cmp w1, 8 - bls .L3023 - lsr w21, w21, 2 -.L3023: - add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x0,1368] - cmp w2, w1 - bcs .L3027 - ldrh w1, [x0,656] +.L2979: + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x1, 1364] + cmp w0, w2 + bcs .L2983 + ldrh w0, [x1, 656] mov w2, 65535 - cmp w1, w2 - bne .L3028 - ldrh w2, [x0,1456] - cmp w2, w1 - bne .L3028 - adrp x1, .LANCHOR5+1464 - ldrh w2, [x1,#:lo12:.LANCHOR5+1464] - cbnz w2, .L3029 - adrp x1, .LANCHOR0+2616 - ldr w3, [x0,716] - ldr w1, [x1,#:lo12:.LANCHOR0+2616] + cmp w0, w2 + bne .L2984 + ldrh w2, [x1, 1448] + cmp w2, w0 + bne .L2984 + adrp x0, .LANCHOR4+1984 + ldrh w0, [x0, #:lo12:.LANCHOR4+1984] + cbnz w0, .L2985 + adrp x2, .LANCHOR0+2616 + ldr w3, [x1, 716] + ldr w2, [x2, #:lo12:.LANCHOR0+2616] + add w2, w2, w2, lsl 1 + cmp w3, w2, lsr 2 + bcs .L2986 +.L2985: + add x2, x19, :lo12:.LANCHOR2 + ldrh w1, [x2, 780] add w1, w1, w1, lsl 1 - cmp w3, w1, lsr 2 - bcs .L3030 -.L3029: - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,780] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x1,1368] - b .L3031 -.L3030: - mov w1, 18 - strh w1, [x0,1368] -.L3031: + asr w1, w1, 2 + strh w1, [x2, 1364] +.L2987: add x19, x19, :lo12:.LANCHOR2 - str wzr, [x19,1380] - b .L3145 -.L3028: + str wzr, [x19, 1376] +.L2948: + 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 + ret +.L2950: + ldrh w1, [x2, 656] + cmp w1, w0 + beq .L2953 + mov w0, w20 + bl FtlGcFreeTempBlock + cbz w0, .L2953 + mov w0, w20 + b .L2948 +.L2951: + ldrh w1, [x0, 1448] + cmp w1, w2 + bne .L2952 + ldrh w3, [x0, 1452] + cmp w3, w1 + beq .L2952 + ldrh w2, [x0, 1454] + cmp w2, w1 + beq .L2952 + mov w1, -1 + strh w4, [x0, 1448] + strh w3, [x0, 1450] + strh w2, [x0, 1452] + strh w1, [x0, 1454] + b .L2952 +.L2959: + cmp w0, 5 + bhi .L2960 + mov w0, 18 + b .L3096 +.L2962: + mov w0, 1 + strh w0, [x24, 1372] +.L2964: + bl GetSwlReplaceBlock + and w20, w0, 65535 + mov w0, 65535 + cmp w20, w0 + bne .L2956 + add x21, x21, :lo12:.LANCHOR4 + strh wzr, [x21, 1984] +.L2954: + add x0, x19, :lo12:.LANCHOR2 + mov w20, 65535 + ldrh w0, [x0, 800] + cmp w0, w20 + bne .L2956 +.L3043: + add x24, x19, :lo12:.LANCHOR2 + mov w0, 65535 + ldrh w20, [x24, 656] + cmp w20, w0 + bne .L3050 + ldrh w25, [x24, 1448] + cmp w25, w20 + bne .L2956 + ldrh w0, [x24, 552] + mov w1, 1024 + cmp w0, 24 + mov w0, 5120 + csel w0, w0, w1, cc + ldr w1, [x24, 1368] + cmp w1, w0 + bls .L2956 + adrp x0, .LANCHOR4+1984 + str wzr, [x24, 1368] + strh wzr, [x0, #:lo12:.LANCHOR4+1984] + bl GetSwlReplaceBlock + and w20, w0, 65535 + cmp w20, w25 + bne .L3053 + ldrh w1, [x24, 552] + ldrh w0, [x24, 1366] + cmp w1, w0 + bcs .L2967 + mov w0, 64 + bl List_get_gc_head_node + and x0, x0, 65535 + cmp w0, w20 + beq .L2969 + ldr w1, [x24, 3556] + adrp x5, .LANCHOR0 + cbnz w1, .L2970 + add x1, x5, :lo12:.LANCHOR0 + ldrh w2, [x1, 2492] + cmp w2, 3 + beq .L2970 + ldr w2, [x24, 1360] + cbnz w2, .L2970 + ldr w2, [x1, 2372] + cbnz w2, .L2970 + ldrb w1, [x1, 204] + cbz w1, .L2971 +.L2970: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,780] + add x2, x5, :lo12:.LANCHOR0 + ldr x1, [x1, 520] + ldrh w3, [x1, x0, lsl 1] + ldrh w0, [x2, 2546] + ldrh w1, [x2, 2472] + ldrh w2, [x2, 2492] + cmp w2, 3 + mul w1, w1, w0 + lsr w0, w0, 1 + csel w0, w0, wzr, eq + add w0, w0, w1 + cmp w3, w0 + bgt .L2973 + mov w0, 0 + bl List_get_gc_head_node + add x5, x5, :lo12:.LANCHOR0 + add x1, x19, :lo12:.LANCHOR2 + and w21, w0, 65535 + ldr w0, [x5, 2616] + ldr w2, [x1, 716] + add w0, w0, w0, lsl 1 + cmp w2, w0, lsr 2 + bls .L2974 + mov w0, 128 +.L3097: + strh w0, [x1, 1366] +.L2975: + mov w0, 65535 + cmp w21, w0 + beq .L2969 +.L2966: + add x0, x19, :lo12:.LANCHOR2 + ubfiz x1, x21, 1, 32 + mov w20, w21 + ldr x3, [x0, 440] + ldr x2, [x0, 520] + ldrh w5, [x0, 1364] + ldrh w4, [x3, x1] + ldrh w3, [x2, x1] + mov w1, w21 + ldrh w2, [x0, 552] + adrp x0, .LC157 + add x0, x0, :lo12:.LC157 + bl printk + b .L2969 +.L2974: + mov w0, 160 + b .L3097 +.L2973: + add x0, x19, :lo12:.LANCHOR2 + mov w1, 128 +.L3098: + strh w1, [x0, 1366] +.L2969: + bl FtlGcReFreshBadBlk + b .L2956 +.L2971: + ldr x1, [x24, 520] + ldrh w0, [x1, x0, lsl 1] + cmp w0, 7 + bhi .L2976 + mov w0, 0 + bl List_get_gc_head_node + and w21, w0, 65535 + add x0, x19, :lo12:.LANCHOR2 + mov w1, 128 + strh w1, [x0, 1366] + b .L2975 +.L2976: + add x0, x19, :lo12:.LANCHOR2 + mov w1, 64 + b .L3098 +.L2967: + mov w0, 80 + strh w0, [x24, 1366] + b .L2969 +.L3053: + mov w21, w20 + b .L2966 +.L3050: + mov w20, w0 + b .L2956 +.L2980: + cmp w2, 12 + bls .L2981 + lsr w21, w21, 4 + b .L2979 +.L2981: + cmp w2, 8 + bls .L2979 + lsr w21, w21, 2 + b .L2979 +.L3055: + mov w21, 1 + b .L2979 +.L2986: + mov w2, 18 + strh w2, [x1, 1364] + b .L2987 +.L2984: + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x1, 780] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,1368] -.L3027: - cmp w22, 2 - bhi .L3099 + strh w0, [x1, 1364] +.L2983: adrp x0, .LANCHOR0+2372 - ldr w0, [x0,#:lo12:.LANCHOR0+2372] - cbz w0, .L3099 + ldr w0, [x0, #:lo12:.LANCHOR0+2372] + cbz w0, .L3057 + cmp w22, 2 + bhi .L3057 add w21, w21, 1 - uxth w21, w21 - b .L3099 -.L3022: - add x0, x19, :lo12:.LANCHOR2 - mov w3, 65535 - ldrh w1, [x0,656] - cmp w1, w3 - bne .L3034 - cbz w2, .L3034 - ldrh w2, [x0,1456] - cmp w2, w1 - bne .L3034 - ldrh w2, [x0,800] - cmp w2, w1 - beq .L3035 -.L3040: + and w21, w21, 65535 +.L3057: mov w20, 65535 - b .L3034 -.L3035: - ldrh w2, [x0,552] - adrp x20, .LANCHOR5 - ldrh w1, [x0,1368] - str wzr, [x0,1380] + b .L2989 +.L2978: + ldrh w2, [x0, 656] cmp w2, w1 - bls .L3036 - add x1, x20, :lo12:.LANCHOR5 - ldrh w1, [x1,1464] - cbnz w1, .L3037 + bne .L2990 + ldrh w1, [x0, 1448] + cmp w1, w2 + bne .L2990 + cmp w20, w1 + bne .L2990 + ldrh w1, [x0, 800] + cmp w1, w20 + bne .L2990 + ldrh w2, [x0, 552] + adrp x21, .LANCHOR4 + ldrh w1, [x0, 1364] + str wzr, [x0, 1376] + cmp w2, w1 + bls .L2992 + add x1, x21, :lo12:.LANCHOR4 + ldrh w1, [x1, 1984] + cbnz w1, .L2993 adrp x1, .LANCHOR0+2616 - ldr w2, [x0,716] - ldr w1, [x1,#:lo12:.LANCHOR0+2616] + ldr w2, [x0, 716] + ldr w1, [x1, #:lo12:.LANCHOR0+2616] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bcs .L3038 -.L3037: + bcs .L2994 +.L2993: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,780] + ldrh w0, [x1, 780] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,1368] - b .L3039 -.L3038: - mov w1, 18 - strh w1, [x0,1368] -.L3039: + strh w0, [x1, 1364] +.L2995: bl FtlReadRefresh mov w0, 0 bl List_get_gc_head_node - ubfiz x0, x0, 1, 16 add x1, x19, :lo12:.LANCHOR2 - ldr x1, [x1,520] - ldrh w0, [x1,x0] - cmp w0, 4 - bls .L3036 - add x20, x20, :lo12:.LANCHOR5 - ldrh w2, [x20,1464] - b .L3145 -.L3036: - add x21, x20, :lo12:.LANCHOR5 - ldrh w0, [x21,1464] - cbnz w0, .L3040 - add x22, x19, :lo12:.LANCHOR2 - ldrh w20, [x22,780] - add w1, w20, w20, lsl 1 - asr w1, w1, 2 - strh w1, [x22,1368] - bl List_get_gc_head_node ubfiz x0, x0, 1, 16 - ldr x1, [x22,520] - ldrh w2, [x1,x0] + ldr x1, [x1, 520] + ldrh w0, [x1, x0] + cmp w0, 4 + bls .L2992 +.L3099: + add x21, x21, :lo12:.LANCHOR4 + b .L3100 +.L2994: + mov w1, 18 + strh w1, [x0, 1364] + b .L2995 +.L2992: + add x21, x21, :lo12:.LANCHOR4 + ldrh w0, [x21, 1984] + cbnz w0, .L2990 + add x6, x19, :lo12:.LANCHOR2 + ldrh w5, [x6, 780] + add w0, w5, w5, lsl 1 + asr w0, w0, 2 + strh w0, [x6, 1364] + mov w0, 0 + bl List_get_gc_head_node + ldr x1, [x6, 520] + ubfiz x0, x0, 1, 16 + ldrh w2, [x1, x0] adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrh w0, [x1,2546] - ldrh w1, [x1,2472] + ldrh w0, [x1, 2546] + ldrh w1, [x1, 2472] mul w0, w0, w1 mov w1, 2 sdiv w0, w0, w1 cmp w2, w0 - ble .L3041 - ldrh w0, [x22,552] - sub w20, w20, #1 - cmp w0, w20 - blt .L3041 + ble .L2997 + ldrh w0, [x6, 552] + sub w5, w5, #1 + cmp w0, w5 + blt .L2997 bl FtlReadRefresh - b .L3170 -.L3041: - cbnz w2, .L3040 - mov w0, -1 +.L3100: + ldrh w0, [x21, 1984] + b .L2948 +.L2997: + cbnz w2, .L2990 add x19, x19, :lo12:.LANCHOR2 + mov w0, -1 bl decrement_vpc_count - ldrh w2, [x19,552] - add w2, w2, 1 - b .L3145 -.L3034: + ldrh w0, [x19, 552] + add w0, w0, 1 + b .L2948 +.L2990: adrp x0, .LANCHOR0+2372 - mov w21, 2 - ldr w0, [x0,#:lo12:.LANCHOR0+2372] - cmp w0, wzr - csinc w21, w21, wzr, ne - b .L3033 -.L3099: - mov w20, 65535 -.L3033: + ldr w0, [x0, #:lo12:.LANCHOR0+2372] + cmp w0, 0 + cset w21, ne + add w21, w21, 1 +.L2989: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 - ldrh w1, [x0,800] + ldrh w1, [x0, 800] cmp w1, w2 - bne .L3043 + bne .L2999 cmp w20, w1 - beq .L3044 - strh w20, [x0,800] - b .L3045 -.L3044: - ldrh w1, [x0,1456] - cmp w1, w20 - beq .L3045 - ubfiz x1, x1, 1, 16 - ldr x2, [x0,520] - ldrh w1, [x2,x1] - cbnz w1, .L3046 - mov w1, -1 - strh w1, [x0,1456] -.L3046: - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,1456] - strh w1, [x0,800] - mov w1, -1 - strh w1, [x0,1456] -.L3045: - add x22, x19, :lo12:.LANCHOR2 + beq .L3000 + strh w20, [x0, 800] +.L3001: + add x5, x19, :lo12:.LANCHOR2 mov w1, 65535 - ldrh w0, [x22,800] - strb wzr, [x22,808] + ldrh w0, [x5, 800] + strb wzr, [x5, 808] cmp w0, w1 - beq .L3043 + beq .L2999 bl IsBlkInGcList - cbz w0, .L3048 + cbz w0, .L3004 mov w0, -1 - strh w0, [x22,800] -.L3048: + strh w0, [x5, 800] +.L3004: adrp x0, .LANCHOR0+204 - ldrb w0, [x0,#:lo12:.LANCHOR0+204] - cbz w0, .L3049 + ldrb w0, [x0, #:lo12:.LANCHOR0+204] + cbz w0, .L3005 add x0, x19, :lo12:.LANCHOR2 - add x22, x0, 800 - ldrh w0, [x0,800] + add x3, x0, 800 + ldrh w0, [x0, 800] bl ftl_get_blk_mode - strb w0, [x22,8] -.L3049: + strb w0, [x3, 8] +.L3005: + add x12, x19, :lo12:.LANCHOR2 + mov w0, 65535 + add x13, x12, 800 + ldrh w1, [x12, 800] + cmp w1, w0 + beq .L2999 + mov x0, x13 + bl make_superblock + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldrh w2, [x12, 800] + ldr x1, [x12, 520] + strh wzr, [x12, 802] + strb wzr, [x12, 806] + strh wzr, [x0, 1986] + ldrh w1, [x1, x2, lsl 1] + strh w1, [x0, 1988] +.L2999: + add x0, x19, :lo12:.LANCHOR2 + ldrh w1, [x0, 800] + ldrh w2, [x0, 560] + cmp w2, w1 + beq .L3006 + ldrh w2, [x0, 608] + cmp w2, w1 + beq .L3006 + ldrh w0, [x0, 656] + cmp w0, w1 + bne .L3040 +.L3006: + add x0, x19, :lo12:.LANCHOR2 + mov w1, -1 + strh w1, [x0, 800] +.L3040: add x22, x19, :lo12:.LANCHOR2 mov w0, 65535 - add x23, x22, 800 - ldrh w1, [x22,800] - cmp w1, w0 - beq .L3043 - mov x0, x23 - bl make_superblock - strh wzr, [x22,802] - adrp x0, .LANCHOR5 - ldrh w2, [x22,800] - add x0, x0, :lo12:.LANCHOR5 - ldr x1, [x22,520] - strb wzr, [x22,806] - strh wzr, [x0,1466] - ldrh w1, [x1,x2,lsl 1] - strh w1, [x0,1468] -.L3043: - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,800] - ldrh w2, [x0,560] - cmp w2, w1 - beq .L3050 - ldrh w2, [x0,608] - cmp w2, w1 - beq .L3050 - ldrh w0, [x0,656] - cmp w0, w1 - bne .L3051 -.L3050: - add x0, x19, :lo12:.LANCHOR2 - mov w1, -1 - strh w1, [x0,800] -.L3051: - add x24, x19, :lo12:.LANCHOR2 - mov w25, 65535 -.L3084: - ldrh w0, [x24,800] - cmp w0, w25 - bne .L3052 - str wzr, [x24,1380] -.L3053: - ldrh w22, [x24,1376] - mov w0, w22 + ldrh w24, [x22, 800] + cmp w24, w0 + bne .L3008 + adrp x25, .LANCHOR0 + add x26, x25, :lo12:.LANCHOR0 + mov w27, 2 + str wzr, [x22, 1376] +.L3009: + ldrh w5, [x22, 1372] + mov w0, w5 bl List_get_gc_head_node - uxth w23, w0 - cmp w23, w25 - strh w23, [x24,800] - bne .L3054 - strh wzr, [x24,1376] - mov w2, 8 - b .L3145 -.L3054: - mov w0, w23 - add w22, w22, 1 + and w6, w0, 65535 + strh w6, [x22, 800] + cmp w6, w24 + bne .L3010 + strh wzr, [x22, 1372] + mov w0, 8 + b .L2948 +.L3000: + ldrh w1, [x0, 1448] + cmp w1, w20 + beq .L3001 + ldr x2, [x0, 520] + ubfiz x1, x1, 1, 16 + ldrh w1, [x2, x1] + cbnz w1, .L3002 + mov w1, -1 + strh w1, [x0, 1448] +.L3002: + add x0, x19, :lo12:.LANCHOR2 + ldrh w1, [x0, 1448] + strh w1, [x0, 800] + mov w1, -1 + strh w1, [x0, 1448] + b .L3001 +.L3010: + mov w0, w6 bl IsBlkInGcList - cbz w0, .L3055 - strh w22, [x24,1376] - b .L3053 -.L3055: - adrp x0, .LANCHOR0 - ubfiz x1, x23, 1, 16 - add x5, x0, :lo12:.LANCHOR0 - ldr x2, [x24,520] - uxth w22, w22 - mov w3, 2 - strh w22, [x24,1376] - ldrh w0, [x5,2544] - ldrh w5, [x5,2472] - ldrh w4, [x2,x1] - mul w0, w0, w5 - sdiv w5, w0, w3 - cmp w4, w5 - bgt .L3057 - cmp w4, 8 - bls .L3058 - cmp w22, 48 - bls .L3058 - ldrh w4, [x24,1428] - cmp w4, 35 - bhi .L3058 -.L3057: - strh wzr, [x24,1376] -.L3058: - cmp w20, w25 - ldrh w1, [x2,x1] - bne .L3059 - cmp w1, w0 - blt .L3059 - ldrh w0, [x24,1376] + add w5, w5, 1 + cbz w0, .L3011 + strh w5, [x22, 1372] + b .L3009 +.L3011: + ldrh w4, [x26, 2472] + ubfiz x1, x6, 1, 16 + ldrh w0, [x26, 2544] + and w5, w5, 65535 + ldr x2, [x22, 520] + strh w5, [x22, 1372] + mul w0, w0, w4 + ldrh w3, [x2, x1] + sdiv w4, w0, w27 + cmp w3, w4 + bgt .L3013 + cmp w5, 48 + bls .L3014 + cmp w3, 8 + bls .L3014 + ldrh w3, [x22, 1420] + cmp w3, 35 + bhi .L3014 +.L3013: + strh wzr, [x22, 1372] +.L3014: + ldrh w1, [x2, x1] + cmp w0, w1 + bgt .L3015 + cmp w20, w24 + bne .L3015 + ldrh w0, [x22, 1372] cmp w0, 3 - bhi .L3059 + bhi .L3015 mov w0, -1 - strh w0, [x24,800] - adrp x0, .LANCHOR5+1464 - strh wzr, [x24,1376] - ldrh w2, [x0,#:lo12:.LANCHOR5+1464] - b .L3145 -.L3059: - cbnz w1, .L3060 + strh w0, [x22, 800] + adrp x0, .LANCHOR4+1984 + strh wzr, [x22, 1372] + ldrh w0, [x0, #:lo12:.LANCHOR4+1984] + b .L2948 +.L3015: + cbnz w1, .L3016 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x24,1376] + ldrh w0, [x22, 1372] add w0, w0, 1 - strh w0, [x24,1376] - b .L3053 -.L3060: - adrp x0, .LANCHOR0 - strb wzr, [x24,808] - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbz w0, .L3061 - mov w0, w23 + strh w0, [x22, 1372] + b .L3009 +.L3016: + add x25, x25, :lo12:.LANCHOR0 + add x3, x19, :lo12:.LANCHOR2 + add x3, x3, 800 + ldrb w0, [x25, 204] + strb wzr, [x3, 8] + cbz w0, .L3017 + mov w0, w6 bl ftl_get_blk_mode - strb w0, [x24,808] -.L3061: - add x22, x24, 800 - mov x0, x22 + strb w0, [x3, 8] +.L3017: + add x13, x19, :lo12:.LANCHOR2 + add x12, x13, 800 + mov x0, x12 bl make_superblock - adrp x1, .LANCHOR5 - ldrh w2, [x24,800] - add x1, x1, :lo12:.LANCHOR5 - ldr x0, [x24,520] - strh wzr, [x1,1466] - ldrh w0, [x0,x2,lsl 1] - strh w0, [x1,1468] - strh wzr, [x24,802] - strb wzr, [x24,806] -.L3052: - ldr w0, [x29,124] - cmp w0, 1 - bne .L3062 + ldrh w2, [x13, 800] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldr x1, [x13, 520] + strh wzr, [x0, 1986] + ldrh w1, [x1, x2, lsl 1] + strh w1, [x0, 1988] + strh wzr, [x13, 802] + strb wzr, [x13, 806] +.L3008: + cmp w23, 1 + bne .L3018 bl FtlReadRefresh -.L3062: +.L3018: + add x1, x19, :lo12:.LANCHOR2 mov w0, 1 - str w0, [x24,3568] - adrp x0, .LANCHOR0 adrp x22, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,204] - ldrh w26, [x0,2544] - cbz w1, .L3063 - ldrb w1, [x24,808] - cmp w1, 1 - bne .L3063 - ldrh w26, [x0,2546] -.L3063: - ldrh w0, [x24,802] - add w1, w0, w21 - cmp w1, w26 - ble .L3064 - sub w21, w26, w0 - uxth w21, w21 -.L3064: - mov w27, 0 -.L3065: - cmp w21, w27, uxth - bls .L3072 - add x1, x24, 800 + str w0, [x1, 3560] add x0, x22, :lo12:.LANCHOR0 - ldrh w4, [x1,2] - ldrh w6, [x0,2472] - mov x0, 0 - add w4, w4, w27 - mov w23, w0 -.L3073: - cmp w6, w0, uxth - bls .L3173 - add x2, x1, x0, lsl 1 - ldrh w2, [x2,16] - cmp w2, w25 - beq .L3066 - mov w3, 56 - ldr x7, [x24,1416] - 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] -.L3066: - add x0, x0, 1 - b .L3073 -.L3173: - ldr x0, [x24,1416] - mov w1, w23 - ldrb w2, [x24,808] - mov x28, 0 - bl FlashReadPages -.L3068: - cmp w23, w28, uxth - bls .L3174 - mov x0, 56 - mul x4, x28, x0 - ldr x0, [x24,1416] - add x1, x0, x4 - ldr w0, [x0,x4] - cmn w0, #1 - ldr x5, [x1,16] - beq .L3102 - ldrh w0, [x5] - mov w1, 61589 - cmp w0, w1 - bne .L3102 - ldr w0, [x5,8] - add x1, x29, 136 + ldrb w2, [x0, 204] + ldrh w24, [x0, 2544] + cbz w2, .L3019 + ldrb w1, [x1, 808] + cmp w1, 1 + bne .L3019 + ldrh w24, [x0, 2546] +.L3019: + add x0, x19, :lo12:.LANCHOR2 + ldrh w0, [x0, 802] + add w1, w0, w21 + cmp w1, w24 + ble .L3020 + sub w21, w24, w0 + and w21, w21, 65535 +.L3020: + adrp x0, .LANCHOR4 + mov w25, 0 + add x0, x0, :lo12:.LANCHOR4 + str x0, [x29, 136] +.L3021: + cmp w21, w25, uxth + bls .L3028 + add x0, x22, :lo12:.LANCHOR0 + mov w6, 0 mov w2, 0 - str x4, [x29,104] - str x5, [x29,112] + mov w8, 65535 + mov w7, 56 + ldrh w9, [x0, 2472] + add x0, x19, :lo12:.LANCHOR2 + add x3, x0, 816 + ldrh w4, [x0, 802] + add w4, w4, w25 + b .L3029 +.L3023: + ldrh w1, [x3] + cmp w1, w8 + beq .L3022 + ldr x5, [x0, 1408] + orr w1, w4, w1, lsl 10 + umaddl x5, w6, w7, x5 + add w6, w6, 1 + and w6, w6, 65535 + str w1, [x5, 4] +.L3022: + add w2, w2, 1 + add x3, x3, 2 + and w2, w2, 65535 +.L3029: + cmp w2, w9 + bne .L3023 + add x26, x19, :lo12:.LANCHOR2 + mov w1, w6 + str w6, [x29, 128] + add x27, x26, 656 + mov x28, 0 + ldrb w2, [x26, 808] + ldr x0, [x26, 1408] + bl FlashReadPages + ldr w6, [x29, 128] + mov w0, 56 + umull x0, w6, w0 + str x0, [x29, 128] +.L3024: + ldr x0, [x29, 128] + cmp x0, x28 + bne .L3027 + add w25, w25, 1 + b .L3021 +.L3027: + ldr x0, [x26, 1408] + add x1, x0, x28 + ldr w0, [x0, x28] + cmn w0, #1 + beq .L3025 + ldr x5, [x1, 16] + mov w0, 61589 + ldrh w1, [x5] + cmp w1, w0 + bne .L3025 + ldr w0, [x5, 8] + mov w2, 0 + add x1, x29, 152 + str x5, [x29, 120] bl log2phys - ldr x2, [x24,1416] - ldr x4, [x29,104] - ldr w0, [x29,136] - add x2, x2, x4 - ldr x5, [x29,112] - and w0, w0, 2147483647 - ldr w1, [x2,4] - cmp w0, w1 - bne .L3102 - adrp x0, .LANCHOR5 - mov x3, 56 - add x1, x0, :lo12:.LANCHOR5 - str x4, [x29,96] - str x5, [x29,104] - ldrh w0, [x1,1466] - add w0, w0, 1 - strh w0, [x1,1466] - ldr w0, [x24,1384] - ldr x1, [x24,3600] - madd x1, x0, x3, x1 - ldr w0, [x2,24] - str x1, [x29,112] - str w0, [x1,24] + ldr x0, [x26, 1408] + ldr w1, [x29, 152] + add x0, x0, x28 + ldr x5, [x29, 120] + and w1, w1, 2147483647 + ldr w2, [x0, 4] + cmp w1, w2 + bne .L3025 + ldr x1, [x29, 136] + ldr x2, [x29, 136] + ldr x6, [x26, 3592] + ldr w0, [x0, 24] + ldrh w1, [x1, 1986] + str x5, [x29, 104] + add w1, w1, 1 + strh w1, [x2, 1986] + ldr w1, [x26, 1380] + mov w2, 56 + str w2, [x29, 116] + nop // between mem op and mult-accumulate + umaddl x1, w1, w2, x6 + str x1, [x29, 120] + str w0, [x1, 24] bl Ftl_get_new_temp_ppa - ldr x1, [x29,112] - mov x2, 56 - ldr x4, [x29,96] - ldr x5, [x29,104] - str w0, [x1,4] - ldr w0, [x24,1384] - ldr x1, [x24,3600] - madd x0, x0, x2, x1 - ldr x1, [x24,1416] - add x1, x1, x4 - ldr x2, [x1,8] - str x2, [x0,8] - add x2, x24, 656 - str x2, [x29,112] - ldr x1, [x1,16] - str x1, [x0,16] + ldr x1, [x29, 120] + ldr w2, [x29, 116] + ldr x5, [x29, 104] + str w0, [x1, 4] + ldr w0, [x26, 1380] + ldr x1, [x26, 3592] + umaddl x0, w0, w2, x1 + ldr x1, [x26, 1408] + add x1, x1, x28 + ldr x2, [x1, 8] + str x2, [x0, 8] + ldr x1, [x1, 16] + str x1, [x0, 16] + ldr w0, [x29, 152] mov w1, 1 - ldr w0, [x29,136] - str w0, [x5,12] - ldrh w0, [x24,656] - strh w0, [x5,2] - ldr w0, [x24,756] - str w0, [x5,4] - ldr w0, [x24,1384] + str w0, [x5, 12] + ldrh w0, [x27] + strh w0, [x5, 2] + ldr w0, [x26, 756] + str w0, [x5, 4] + ldr w0, [x26, 1380] add w0, w0, 1 - str w0, [x24,1384] - ldr x0, [x24,1416] - add x0, x0, x4 + str w0, [x26, 1380] + ldr x0, [x26, 1408] + add x0, x0, x28 bl FtlGcBufAlloc add x0, x22, :lo12:.LANCHOR0 - ldrb w0, [x0,204] - cbnz w0, .L3070 - ldr x2, [x29,112] - ldr w1, [x24,1384] - ldrb w0, [x2,7] + ldrb w0, [x0, 204] + cbnz w0, .L3026 + ldrb w1, [x27, 7] + ldr w0, [x26, 1380] cmp w1, w0 - beq .L3070 - ldrh w0, [x2,4] - cbnz w0, .L3102 -.L3070: + beq .L3026 + ldrh w0, [x27, 4] + cbnz w0, .L3025 +.L3026: bl Ftl_gc_temp_data_write_back - cbz w0, .L3102 + cbz w0, .L3025 add x19, x19, :lo12:.LANCHOR2 mov w0, -1 - strh w0, [x19,800] - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - str wzr, [x19,3568] - strh wzr, [x19,802] - ldrh w2, [x0,1464] - b .L3145 -.L3102: - add x28, x28, 1 - b .L3068 -.L3174: - add w27, w27, 1 - b .L3065 -.L3072: - ldrh w0, [x24,802] + strh w0, [x19, 800] + adrp x0, .LANCHOR4 + add x26, x0, :lo12:.LANCHOR4 + strh wzr, [x19, 802] + str wzr, [x19, 3560] + ldrh w0, [x26, 1984] + b .L2948 +.L3025: + add x28, x28, 56 + b .L3024 +.L3028: + add x25, x19, :lo12:.LANCHOR2 + ldrh w0, [x25, 802] add w21, w21, w0 - uxth w21, w21 - strh w21, [x24,802] - cmp w21, w26 - bcc .L3074 - ldr w0, [x24,1384] - adrp x21, .LANCHOR5 - cbz w0, .L3075 + and w21, w21, 65535 + strh w21, [x25, 802] + cmp w24, w21 + bhi .L3030 + ldr w0, [x25, 1380] + adrp x21, .LANCHOR4 + cbz w0, .L3031 bl Ftl_gc_temp_data_write_back - cbz w0, .L3075 - str wzr, [x24,3568] - add x21, x21, :lo12:.LANCHOR5 -.L3170: - ldrh w2, [x21,1464] - b .L3145 -.L3075: - add x21, x21, :lo12:.LANCHOR5 - ldrh w21, [x21,1466] - cbnz w21, .L3076 - ldrh w1, [x24,800] - ldr x0, [x24,520] - ldrh w0, [x0,x1,lsl 1] - cbz w0, .L3076 -.L3077: - add x0, x22, :lo12:.LANCHOR0 - ldr w0, [x0,2616] + cbz w0, .L3031 + str wzr, [x25, 3560] + b .L3099 +.L3031: + add x21, x21, :lo12:.LANCHOR4 + ldrh w0, [x21, 1986] + cbnz w0, .L3032 + add x0, x19, :lo12:.LANCHOR2 + ldrh w2, [x0, 800] + ldr x1, [x0, 520] + ldrh w1, [x1, x2, lsl 1] + cbz w1, .L3032 + add x25, x22, :lo12:.LANCHOR0 + mov x24, x0 + mov w21, 0 +.L3033: + ldr w0, [x25, 2616] cmp w21, w0 - bcs .L3082 - mov w0, w21 - add x1, x29, 140 + bcs .L3038 mov w2, 0 + add x1, x29, 156 + mov w0, w21 bl log2phys - ldr w0, [x29,140] + ldr w0, [x29, 156] cmn w0, #1 - beq .L3078 + beq .L3034 lsr w0, w0, 10 bl P2V_block_in_plane - ldrh w1, [x24,800] + ldrh w1, [x24, 800] cmp w1, w0, uxth - bne .L3078 -.L3082: + bne .L3034 +.L3038: add x0, x22, :lo12:.LANCHOR0 - ldr w0, [x0,2616] + ldr w0, [x0, 2616] cmp w21, w0 - bcc .L3076 - ldrh w1, [x24,800] - ldr x0, [x24,520] - strh wzr, [x0,x1,lsl 1] - ldrh w0, [x24,800] + bcc .L3032 + add x0, x19, :lo12:.LANCHOR2 + ldrh w2, [x0, 800] + ldr x1, [x0, 520] + strh wzr, [x1, x2, lsl 1] + ldrh w0, [x0, 800] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush - b .L3076 -.L3078: - add w21, w21, 1 - b .L3077 -.L3076: - mov w0, -1 - strh w0, [x24,800] -.L3074: - ldrh w0, [x24,552] - cmp w0, 2 - bhi .L3083 - add x22, x22, :lo12:.LANCHOR0 - ldrh w21, [x22,2544] - b .L3084 -.L3083: - adrp x1, .LANCHOR5+1464 - str wzr, [x24,3568] - ldrh w2, [x1,#:lo12:.LANCHOR5+1464] - cmp w2, wzr - csinc w2, w2, w0, ne - b .L3145 -.L3172: - ldrh w25, [x21,1456] - cmp w25, w20 - bne .L3009 - ldrh w0, [x21,552] - mov w2, 1024 - ldr w1, [x21,1372] - cmp w0, 24 - mov w0, 5120 - csel w0, w0, w2, cc - cmp w1, w0 - bls .L3009 - adrp x0, .LANCHOR5+1464 - str wzr, [x21,1372] - mov x23, x21 - strh wzr, [x0,#:lo12:.LANCHOR5+1464] - bl GetSwlReplaceBlock - uxth w20, w0 - cmp w20, w25 - bne .L3011 - ldrh w1, [x21,552] - ldrh w0, [x21,1370] - cmp w1, w0 - bcs .L3012 - mov w0, 64 - bl List_get_gc_head_node - uxth w0, w0 - cmp w0, w20 - beq .L3021 - ldr w2, [x21,3564] - uxtw x1, w0 - adrp x21, .LANCHOR0 - cbnz w2, .L3014 - add x0, x21, :lo12:.LANCHOR0 - ldrh w2, [x0,2492] - cmp w2, 3 - beq .L3014 - ldr w2, [x23,848] - cbnz w2, .L3014 - ldr w2, [x0,2372] - cbnz w2, .L3014 - ldrb w0, [x0,204] - cbz w0, .L3015 -.L3014: +.L3032: add x0, x19, :lo12:.LANCHOR2 - add x3, x21, :lo12:.LANCHOR0 - ldr x0, [x0,520] - ldrh w4, [x0,x1,lsl 1] - ldrh w1, [x3,2546] - ldrh w0, [x3,2472] - ldrh w3, [x3,2492] - mul w2, w1, w0 - cmp w3, 3 - mov w0, 0 - lsr w1, w1, 1 - csel w0, w1, w0, eq - add w0, w2, w0 - cmp w4, w0 - bgt .L3017 - mov w0, 0 - add x21, x21, :lo12:.LANCHOR0 - bl List_get_gc_head_node - uxth w20, w0 + mov w1, -1 + strh w1, [x0, 800] +.L3030: add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x21,2616] - ldr w2, [x1,716] - add w0, w0, w0, lsl 1 - cmp w2, w0, lsr 2 - bls .L3018 - mov w0, 128 - b .L3168 -.L3018: - mov w0, 160 -.L3168: - strh w0, [x1,1370] - b .L3019 -.L3017: - add x0, x19, :lo12:.LANCHOR2 - mov w1, 128 - b .L3169 -.L3015: - ldr x2, [x23,520] - ldrh w1, [x2,x1,lsl 1] - cmp w1, 7 - bhi .L3020 - bl List_get_gc_head_node - uxth w20, w0 - add x0, x19, :lo12:.LANCHOR2 - mov w1, 128 - strh w1, [x0,1370] - b .L3019 -.L3020: - add x0, x19, :lo12:.LANCHOR2 - mov w1, 64 -.L3169: - strh w1, [x0,1370] - b .L3021 -.L3012: - mov w0, 80 - strh w0, [x21,1370] - b .L3021 -.L3019: - mov w0, 65535 - cmp w20, w0 - beq .L3021 -.L3011: - add x5, x19, :lo12:.LANCHOR2 - ubfiz x4, x20, 1, 32 - adrp x0, .LC157 - mov w1, w20 - add x0, x0, :lo12:.LC157 - ldr x3, [x5,520] - ldr x6, [x5,440] - ldrh w2, [x5,552] - ldrh w3, [x3,x4] - ldrh w5, [x5,1368] - ldrh w4, [x6,x4] - bl printk -.L3021: - bl FtlGcReFreshBadBlk - b .L3009 -.L3171: - mov w20, w0 - b .L3009 -.L3145: - 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], 144 - ret + ldrh w0, [x1, 552] + cmp w0, 2 + bhi .L3039 + add x22, x22, :lo12:.LANCHOR0 + ldrh w21, [x22, 2544] + b .L3040 +.L3034: + add w21, w21, 1 + b .L3033 +.L3039: + str wzr, [x1, 3560] + adrp x1, .LANCHOR4+1984 + ldrh w1, [x1, #:lo12:.LANCHOR4+1984] + cmp w1, 0 + csinc w0, w1, w0, ne + b .L2948 +.L3047: + mov w0, 0 + b .L2948 .size ftl_do_gc, .-ftl_do_gc .align 2 .global FtlCacheWriteBack .type FtlCacheWriteBack, %function FtlCacheWriteBack: - stp x29, x30, [sp, -128]! - adrp x0, .LANCHOR5+1472 + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - stp x19, x20, [sp,16] - ldr x20, [x0,#:lo12:.LANCHOR5+1472] - add x0, x22, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w23, [x0,424] - cbnz w23, .L3177 - adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0,2600] - cbz w1, .L3177 - ldrb w0, [x0,204] - cbz w0, .L3179 - ldrb w0, [x20,8] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + add x0, x23, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w24, [x0, 424] + cbnz w24, .L3103 + adrp x22, .LANCHOR0 + add x0, x22, :lo12:.LANCHOR0 + ldr w1, [x0, 2600] + cbz w1, .L3103 + ldrb w0, [x0, 204] + adrp x2, .LANCHOR4+1992 + ldr x19, [x2, #:lo12:.LANCHOR4+1992] + cbz w0, .L3128 + ldrb w0, [x19, 8] cmp w0, 1 - cset w23, eq -.L3179: - add x0, x19, :lo12:.LANCHOR0 - ldrb w3, [x20,9] + cset w25, eq +.L3105: + add x20, x22, :lo12:.LANCHOR0 + ldrb w3, [x19, 9] adrp x26, .LC158 - mov w2, w23 - mov w24, 0 + mov w2, w25 + mov w21, 0 mov w27, 56 - ldr x0, [x0,2608] + ldr x0, [x20, 2608] add x26, x26, :lo12:.LC158 bl FlashProgPages -.L3180: - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0,2600] - cmp w24, w1 - bcs .L3198 - umull x21, w24, w27 - ldr x1, [x0,2608] - add x0, x1, x21 - ldr w25, [x1,x21] - cmn w25, #1 - beq .L3201 - ldr w1, [x0,4] - cbz w23, .L3215 - orr w1, w1, -2147483648 -.L3215: - ldr w0, [x0,24] - mov w2, 1 - str w1, [x29,124] - add x1, x29, 124 - bl log2phys - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,2608] - add x21, x0, x21 - ldr x0, [x21,16] - ldr w0, [x0,12] - cmn w0, #1 - beq .L3184 - lsr x0, x0, 10 - bl P2V_block_in_plane - uxth w1, w0 - add x2, x22, :lo12:.LANCHOR2 - ubfiz x0, x1, 1, 16 - mov w21, w1 - ldr x2, [x2,520] - ldrh w2, [x2,x0] - cbnz w2, .L3185 - mov x0, x26 - bl printk -.L3185: - mov w0, w21 - bl decrement_vpc_count -.L3184: - add w24, w24, 1 - b .L3180 -.L3217: - mov w20, 16386 -.L3197: - add x0, x22, :lo12:.LANCHOR2 - ldrh w0, [x0,1464] - cbz w0, .L3198 - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - subs w20, w20, #1 - bne .L3197 -.L3198: - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x19,2600] - b .L3177 -.L3201: - adrp x26, .LC158 - mov w24, 0 - mov w27, 56 - str w25, [x29,108] - mov w28, 1 - add x26, x26, :lo12:.LC158 -.L3181: - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0,2600] - cmp w24, w1 - bcs .L3217 - umull x21, w24, w27 - ldr x0, [x0,2608] - ldr w1, [x29,108] - str w1, [x0,x21] -.L3187: - add x2, x19, :lo12:.LANCHOR0 - ldr x0, [x2,2608] - add x1, x0, x21 - ldr w0, [x0,x21] - cmn w0, #1 - bne .L3218 - ldr w0, [x1,4] - str x2, [x29,96] - lsr x0, x0, 10 - bl P2V_block_in_plane - ldrh w1, [x20] - cmp w1, w0, uxth - ldr x2, [x29,96] - bne .L3188 - add x0, x22, :lo12:.LANCHOR2 - ubfiz x1, x1, 1, 16 - ldrh w4, [x20,4] - ldr x3, [x0,520] - ldrh w0, [x3,x1] - sub w0, w0, w4 - strh w0, [x3,x1] - strb wzr, [x20,6] - ldrh w0, [x2,2544] - strh w0, [x20,2] - strh wzr, [x20,4] -.L3188: - ldrh w0, [x20,4] - cbnz w0, .L3189 - mov x0, x20 - bl allocate_new_data_superblock -.L3189: - add x5, x22, :lo12:.LANCHOR2 - add x25, x19, :lo12:.LANCHOR0 - str x5, [x29,96] - ldr w0, [x5,952] - add w0, w0, 1 - str w0, [x5,952] - ldr x0, [x25,2608] - add x0, x0, x21 - ldr w0, [x0,4] - lsr x0, x0, 10 - bl FtlGcMarkBadPhyBlk - mov x0, x20 - bl get_new_active_ppa - str w0, [x29,124] - ldr x1, [x25,2608] - mov w2, w23 - add x1, x1, x21 - str w0, [x1,4] - mov w1, 1 - ldr x0, [x25,2608] - ldrb w3, [x20,9] - add x0, x0, x21 - bl FlashProgPages - ldr x0, [x25,2608] - ldr x5, [x29,96] - ldr w0, [x0,x21] - cmn w0, #1 - bne .L3190 - str w28, [x5,424] -.L3190: - add x0, x22, :lo12:.LANCHOR2 - ldr w0, [x0,424] - cbz w0, .L3187 - b .L3177 -.L3218: - ldr w0, [x1,4] - cbz w23, .L3216 - orr w0, w0, -2147483648 -.L3216: - str w0, [x29,124] - mov w2, 1 - ldr w0, [x1,24] - add x1, x29, 124 - bl log2phys - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,2608] - add x21, x0, x21 - ldr x0, [x21,16] - ldr w0, [x0,12] - cmn w0, #1 - beq .L3194 - lsr x0, x0, 10 - bl P2V_block_in_plane - uxth w1, w0 - add x2, x22, :lo12:.LANCHOR2 - ubfiz x0, x1, 1, 16 - mov w21, w1 - ldr x2, [x2,520] - ldrh w2, [x2,x0] - cbnz w2, .L3195 - mov x0, x26 - bl printk -.L3195: - mov w0, w21 - bl decrement_vpc_count -.L3194: - add w24, w24, 1 - b .L3181 -.L3177: +.L3106: + ldr w0, [x20, 2600] + cmp w21, w0 + bcc .L3113 +.L3125: + add x22, x22, :lo12:.LANCHOR0 + str wzr, [x22, 2600] +.L3103: + ldp x19, x20, [sp, 16] 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 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 +.L3128: + mov w25, 0 + b .L3105 +.L3113: + umull x28, w21, w27 + ldr x0, [x20, 2608] + add x3, x0, x28 + ldr w0, [x0, x28] + cmn w0, #1 + bne .L3107 + add x21, x22, :lo12:.LANCHOR0 + add x26, x23, :lo12:.LANCHOR2 +.L3108: + ldr w0, [x21, 2600] + cmp w24, w0 + bcc .L3123 + add x23, x23, :lo12:.LANCHOR2 + mov w19, 16386 +.L3126: + ldrh w0, [x23, 1456] + cbz w0, .L3125 + mov w1, 1 + mov w0, w1 + bl ftl_do_gc + subs w19, w19, #1 + bne .L3126 + b .L3125 +.L3107: + ldr w0, [x3, 4] + cbnz w25, .L3109 +.L3142: + str w0, [x29, 108] + mov w2, 1 + ldr w0, [x3, 24] + add x1, x29, 108 + bl log2phys + ldr x0, [x20, 2608] + add x0, x0, x28 + ldr x0, [x0, 16] + ldr w0, [x0, 12] + cmn w0, #1 + beq .L3111 + lsr w0, w0, 10 + bl P2V_block_in_plane + and w1, w0, 65535 + add x0, x23, :lo12:.LANCHOR2 + ubfiz x2, x1, 1, 16 + mov w28, w1 + ldr x0, [x0, 520] + ldrh w0, [x0, x2] + cbnz w0, .L3112 + mov w2, 0 + mov x0, x26 + bl printk +.L3112: + mov w0, w28 + bl decrement_vpc_count +.L3111: + add w21, w21, 1 + b .L3106 +.L3109: + orr w0, w0, -2147483648 + b .L3142 +.L3123: + mov w20, 56 + ldr x0, [x21, 2608] + mov w1, -1 + mov w27, 1 + umull x20, w24, w20 + str w1, [x0, x20] +.L3114: + ldr x0, [x21, 2608] + add x3, x0, x20 + ldr w0, [x0, x20] + cmn w0, #1 + ldr w0, [x3, 4] + beq .L3118 + cbnz w25, .L3119 +.L3143: + str w0, [x29, 108] + mov w2, 1 + ldr w0, [x3, 24] + add x1, x29, 108 + bl log2phys + ldr x0, [x21, 2608] + add x20, x0, x20 + ldr x0, [x20, 16] + ldr w0, [x0, 12] + cmn w0, #1 + beq .L3121 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldr x2, [x26, 520] + and w1, w0, 65535 + ubfiz x0, x1, 1, 16 + mov w20, w1 + ldrh w0, [x2, x0] + cbnz w0, .L3122 + adrp x0, .LC158 + mov w2, 0 + add x0, x0, :lo12:.LC158 + bl printk +.L3122: + mov w0, w20 + bl decrement_vpc_count +.L3121: + add w24, w24, 1 + b .L3108 +.L3118: + lsr w0, w0, 10 + bl P2V_block_in_plane + ldrh w1, [x19] + cmp w1, w0, uxth + bne .L3115 + ldr x2, [x26, 520] + ubfiz x1, x1, 1, 16 + ldrh w3, [x19, 4] + ldrh w0, [x2, x1] + sub w0, w0, w3 + strh w0, [x2, x1] + strb wzr, [x19, 6] + ldrh w0, [x21, 2544] + strh w0, [x19, 2] + strh wzr, [x19, 4] +.L3115: + ldrh w0, [x19, 4] + cbnz w0, .L3116 + mov x0, x19 + bl allocate_new_data_superblock +.L3116: + ldr w0, [x26, 944] + add w0, w0, 1 + str w0, [x26, 944] + ldr x0, [x21, 2608] + add x0, x0, x20 + ldr w0, [x0, 4] + lsr w0, w0, 10 + bl FtlGcMarkBadPhyBlk + mov x0, x19 + bl get_new_active_ppa + ldr x1, [x21, 2608] + mov w2, w25 + str w0, [x29, 108] + add x1, x1, x20 + str w0, [x1, 4] + mov w1, 1 + ldrb w3, [x19, 9] + ldr x0, [x21, 2608] + add x0, x0, x20 + bl FlashProgPages + ldr x0, [x21, 2608] + ldr w0, [x0, x20] + cmn w0, #1 + bne .L3117 + str w27, [x26, 424] +.L3117: + ldr w0, [x26, 424] + cbz w0, .L3114 + b .L3103 +.L3119: + orr w0, w0, -2147483648 + b .L3143 .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: adrp x0, .LANCHOR2+424 + ldr w0, [x0, #:lo12:.LANCHOR2+424] + cbnz w0, .L3147 stp x29, x30, [sp, -32]! - add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2+424] - str x19, [sp,16] - cbnz w0, .L3220 adrp x0, .LANCHOR1+504 - ldr w19, [x0,#:lo12:.LANCHOR1+504] + add x29, sp, 0 + str x19, [sp, 16] + ldr w19, [x0, #:lo12:.LANCHOR1+504] cmp w19, 1 - bne .L3220 + bne .L3145 bl FtlCacheWriteBack bl l2p_flush mov w0, w19 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3220: +.L3145: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L3147: + mov w0, 0 + ret .size FtlSysFlush, .-FtlSysFlush .align 2 .global FtlDeInit .type FtlDeInit, %function FtlDeInit: adrp x0, .LANCHOR1+504 + ldr w0, [x0, #:lo12:.LANCHOR1+504] + cmp w0, 1 + bne .L3153 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR1+504] - cmp w0, 1 - bne .L3222 bl FtlSysFlush -.L3222: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L3153: + mov w0, 0 + ret .size FtlDeInit, .-FtlDeInit .align 2 .global ftl_deinit @@ -20472,10 +20108,10 @@ ftl_deinit: .type rk_ftl_de_init, %function rk_ftl_de_init: stp x29, x30, [sp, -16]! - adrp x0, .LC159 mov w1, 0 - add x29, sp, 0 + adrp x0, .LC159 add x0, x0, :lo12:.LC159 + add x29, sp, 0 bl printk bl ftl_deinit ldp x29, x30, [sp], 16 @@ -20507,98 +20143,94 @@ rk_ftl_cache_write_back: ftl_discard: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR0 - str x23, [sp,48] - add x21, x22, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w20, w0 + stp x21, x22, [sp, 32] + adrp x0, .LANCHOR0 + add x21, x0, :lo12:.LANCHOR0 + str x23, [sp, 48] mov w19, w1 - ldr w2, [x21,2584] - cmp w1, w2 - bhi .L3234 - cmp w0, w2 - cset w1, cs - cbnz w1, .L3234 - add w3, w0, w19 - mov w0, -1 - cmp w3, w2 - bhi .L3228 + ldr w1, [x21, 2584] + cmp w1, w20 + bls .L3173 + cmp w1, w19 + bcc .L3173 + mov x23, x0 + add w0, w20, w19 + cmp w1, w0 + bcc .L3173 cmp w19, 31 - mov w0, w1 - bls .L3228 - adrp x23, .LANCHOR2 - add x0, x23, :lo12:.LANCHOR2 - ldr w2, [x0,424] - mov w0, w1 - cbnz w2, .L3228 + bls .L3175 + adrp x22, .LANCHOR2 + add x0, x22, :lo12:.LANCHOR2 + ldr w0, [x0, 424] + cbnz w0, .L3175 bl FtlCacheWriteBack - ldrh w1, [x21,2550] - udiv w21, w20, w1 - msub w20, w1, w21, w20 - uxth w20, w20 - cbz w20, .L3229 - sub w20, w1, w20 + ldrh w0, [x21, 2550] + udiv w21, w20, w0 + msub w20, w0, w21, w20 + ands w20, w20, 65535 + beq .L3166 + sub w20, w0, w20 add w21, w21, 1 cmp w20, w19 csel w20, w20, w19, ls sub w19, w19, w20, uxth -.L3229: +.L3166: + add x20, x23, :lo12:.LANCHOR0 + adrp x23, .LANCHOR4 + add x23, x23, :lo12:.LANCHOR4 mov w0, -1 - adrp x20, .LANCHOR5 - str w0, [x29,76] -.L3230: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2550] + str w0, [x29, 76] +.L3167: + ldrh w0, [x20, 2550] cmp w19, w0 - bcc .L3244 - mov w0, w21 - add x1, x29, 72 + bcs .L3169 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldr w1, [x0, 2000] + cmp w1, 32 + bls .L3175 + str wzr, [x0, 2000] + bl l2p_flush + bl FtlVpcTblFlush +.L3175: + mov w0, 0 + b .L3164 +.L3169: mov w2, 0 + add x1, x29, 72 + mov w0, w21 bl log2phys - ldr w0, [x29,72] + ldr w0, [x29, 72] cmn w0, #1 - beq .L3231 - add x1, x20, :lo12:.LANCHOR5 + beq .L3168 + add x1, x22, :lo12:.LANCHOR2 + ldr w0, [x23, 2000] mov w2, 1 - ldr w0, [x1,1480] add w0, w0, 1 - str w0, [x1,1480] - add x1, x23, :lo12:.LANCHOR2 - ldr w0, [x1,724] + str w0, [x23, 2000] + ldr w0, [x1, 724] add w0, w0, 1 - str w0, [x1,724] + str w0, [x1, 724] add x1, x29, 76 mov w0, w21 bl log2phys - ldr w0, [x29,72] - lsr x0, x0, 10 + ldr w0, [x29, 72] + lsr w0, w0, 10 bl P2V_block_in_plane bl decrement_vpc_count -.L3231: - add x0, x22, :lo12:.LANCHOR0 +.L3168: + ldrh w0, [x20, 2550] add w21, w21, 1 - ldrh w0, [x0,2550] sub w19, w19, w0 - b .L3230 -.L3244: - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldr w1, [x0,1480] - cmp w1, 32 - bls .L3233 - str wzr, [x0,1480] - bl l2p_flush - bl FtlVpcTblFlush -.L3233: - mov w0, 0 - b .L3228 -.L3234: + b .L3167 +.L3173: mov w0, -1 -.L3228: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] +.L3164: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 80 ret .size ftl_discard, .-ftl_discard @@ -20617,322 +20249,312 @@ FtlDiscard: .type ftl_read, %function ftl_read: sub sp, sp, #208 - mov w4, w0 - adrp x0, .LANCHOR1+504 - stp x29, x30, [sp,16] + adrp x4, .LANCHOR1+504 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x21, x22, [sp,48] - ldr w21, [x0,#:lo12:.LANCHOR1+504] - mov w0, -1 - stp x19, x20, [sp,32] - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - cmp w21, 1 - bne .L3247 - cmp w4, 16 - mov x25, x3 - mov w26, w2 - mov w20, w1 - bne .L3248 - add w0, w1, 256 - mov w1, w2 + stp x19, x20, [sp, 32] + stp x21, x22, [sp, 48] + ldr w20, [x4, #:lo12:.LANCHOR1+504] + stp x23, x24, [sp, 64] + stp x25, x26, [sp, 80] + cmp w20, 1 + stp x27, x28, [sp, 96] + bne .L3210 + mov x23, x3 + mov w24, w2 + mov w19, w1 + cmp w0, 16 + bne .L3187 mov x2, x3 - bl FtlVendorPartRead - b .L3247 -.L3248: - adrp x22, .LANCHOR0 - add x2, x22, :lo12:.LANCHOR0 - ldr w1, [x2,2584] - cmp w20, w1 - bcs .L3271 - cmp w26, w1 - bhi .L3271 - add w0, w20, w26 - str w0, [x29,168] - mov w0, -1 - ldr w3, [x29,168] - cmp w3, w1 - bhi .L3247 - ldrh w0, [x2,2550] - sub w27, w3, #1 - adrp x19, .LANCHOR2 - udiv w1, w20, w0 - str w1, [x29,172] - udiv w27, w27, w0 - ldr w0, [x29,172] - sub w21, w21, w0 - add x0, x19, :lo12:.LANCHOR2 - add w21, w21, w27 - ldr w1, [x0,748] - add w1, w26, w1 - str w1, [x0,748] - ldr w1, [x0,720] - add w1, w21, w1 - str w1, [x0,720] - ldr w0, [x29,172] - mov w1, w27 - bl FtlCacheMetchLpa - cbz w0, .L3249 - bl FtlCacheWriteBack -.L3249: - mov w28, 0 - adrp x0, .LC147 - ldr w23, [x29,172] - add x0, x0, :lo12:.LC147 - str w28, [x29,156] - mov w24, w28 - str w28, [x29,152] - str x0, [x29,112] -.L3250: - cbz w21, .L3295 - mov w0, w23 - add x1, x29, 188 - mov w2, 0 - bl log2phys - ldr w3, [x29,188] - cmn w3, #1 - bne .L3292 - mov w3, 0 -.L3251: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2550] - cmp w3, w0 - bcs .L3255 - madd w0, w23, w0, w3 - cmp w0, w20 - bcc .L3253 - ldr w1, [x29,168] - cmp w0, w1 - bcs .L3253 - sub w0, w0, w20 - mov w1, 0 - ubfiz x0, x0, 9, 23 - mov w2, 512 - add x0, x25, x0 - str x3, [x29,160] - bl ftl_memset - ldr x3, [x29,160] -.L3253: - add w3, w3, 1 - b .L3251 -.L3292: - mov w0, 56 - umull x1, w24, w0 - add x0, x19, :lo12:.LANCHOR2 - ldr x2, [x0,3592] - add x2, x2, x1 - str w3, [x2,4] - ldr w2, [x29,172] - cmp w23, w2 - ldr x2, [x0,3592] - add x2, x2, x1 - bne .L3256 - ldr x0, [x0,3648] - str x0, [x2,8] - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2550] - udiv w3, w20, w0 - msub w3, w3, w0, w20 - str w3, [x29,128] - sub w3, w0, w3 - cmp w3, w26 - csel w3, w3, w26, ls - str w3, [x29,156] - cmp w3, w0 - bne .L3257 - str x25, [x2,8] - b .L3257 -.L3256: - cmp w23, w27 - bne .L3258 - ldr x0, [x0,3656] - str x0, [x2,8] - add x0, x22, :lo12:.LANCHOR0 - ldr w4, [x29,168] - ldrh w3, [x0,2550] - mul w0, w23, w3 - sub w28, w4, w0 - cmp w28, w3 - bne .L3257 - b .L3293 -.L3258: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2550] - mul w0, w23, w0 -.L3293: - sub w0, w0, w20 - ubfiz x0, x0, 9, 23 - add x0, x25, x0 - str x0, [x2,8] -.L3257: - add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,3592] - ldr x2, [x2,3672] - add x1, x0, x1 - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2556] - str w23, [x1,24] - mul w0, w24, w0 - add w24, w24, 1 - and x0, x0, 4294967292 - add x0, x2, x0 - str x0, [x1,16] -.L3255: - subs w21, w21, #1 - add w23, w23, 1 - beq .L3259 - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,2472] - cmp w24, w0, lsl 3 - bne .L3250 -.L3259: - cbz w24, .L3250 - add x0, x19, :lo12:.LANCHOR2 mov w1, w24 - mov w2, 0 - ldr x0, [x0,3592] - bl FlashReadPages - str xzr, [x29,160] - ldr x0, [x29,128] - ubfiz x0, x0, 9, 23 - str x0, [x29,144] - ldr w0, [x29,156] - lsl w0, w0, 9 - str w0, [x29,124] - lsl w0, w28, 9 - str w0, [x29,120] -.L3261: - ldr w0, [x29,160] - cmp w24, w0 - bls .L3296 - ldr x0, [x29,160] - add x2, x19, :lo12:.LANCHOR2 - mov x1, 56 - ldr w3, [x29,172] - mul x8, x0, x1 - ldr x0, [x2,3592] - add x0, x0, x8 - ldr w1, [x0,24] - cmp w1, w3 - bne .L3262 - ldr x1, [x0,8] - ldr x0, [x2,3648] - cmp x1, x0 - bne .L3263 - ldr x2, [x29,144] - mov x0, x25 - str x8, [x29,104] - add x1, x1, x2 - ldr w2, [x29,124] - b .L3294 -.L3262: - cmp w1, w27 - bne .L3263 - ldr x1, [x0,8] - ldr x0, [x2,3656] - cmp x1, x0 - bne .L3263 - add x0, x22, :lo12:.LANCHOR0 - ldr w2, [x29,120] - str x8, [x29,104] - ldrh w0, [x0,2550] - mul w0, w27, w0 - sub w0, w0, w20 - ubfiz x0, x0, 9, 23 - add x0, x25, x0 -.L3294: - bl ftl_memcpy - ldr x8, [x29,104] -.L3263: - add x0, x19, :lo12:.LANCHOR2 - ldr x1, [x0,3592] - add x2, x1, x8 - ldr w3, [x1,x8] - cmn w3, #1 - bne .L3264 - ldr w1, [x0,928] - str w3, [x29,152] - add w1, w1, 1 - str w1, [x0,928] -.L3264: - ldr x0, [x2,16] - ldr w1, [x2,24] - ldr w0, [x0,8] - cmp w1, w0 - beq .L3265 - add x0, x19, :lo12:.LANCHOR2 - str x8, [x29,104] - ldr w1, [x0,928] - add w1, w1, 1 - str w1, [x0,928] - ldr x7, [x2,8] - ldr x6, [x2,16] - ldr w0, [x7,4] - str w0, [sp] - ldr x0, [x29,112] - ldr w1, [x2,24] - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w2, [x2,4] - ldr w6, [x6,12] - ldr w7, [x7] - bl printk - ldr x8, [x29,104] -.L3265: - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,3592] - add x1, x0, x8 - ldr w0, [x0,x8] - cmp w0, 256 - bne .L3266 - ldr w0, [x1,4] - lsr x0, x0, 10 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L3266: - ldr x0, [x29,160] - add x0, x0, 1 - str x0, [x29,160] - b .L3261 -.L3296: - mov w24, 0 - b .L3250 -.L3295: - add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,1464] - cbz w0, .L3269 - mov w0, w21 - mov w1, 1 - bl ftl_do_gc -.L3269: - ldr w0, [x29,152] - b .L3247 -.L3271: - mov w0, -1 -.L3247: - 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 w0, w19, 256 + bl FtlVendorPartRead + mov w25, w0 +.L3185: + mov w0, w25 + 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, 208 ret +.L3187: + adrp x21, .LANCHOR0 + add x1, x21, :lo12:.LANCHOR0 + ldr w0, [x1, 2584] + cmp w19, w0 + bcs .L3210 + cmp w2, w0 + bhi .L3210 + add w2, w19, w2 + str w2, [x29, 148] + cmp w0, w2 + bcc .L3210 + ldrh w0, [x1, 2550] + sub w26, w2, #1 + adrp x7, .LANCHOR2 + udiv w27, w19, w0 + udiv w26, w26, w0 + sub w20, w20, w27 + add w0, w20, w26 + str w0, [x29, 172] + add x0, x7, :lo12:.LANCHOR2 + ldr w2, [x29, 172] + ldr w1, [x0, 748] + add w1, w1, w24 + str w1, [x0, 748] + ldr w1, [x0, 720] + add w1, w1, w2 + str w1, [x0, 720] + mov w1, w26 + mov w0, w27 + bl FtlCacheMetchLpa + str x7, [x29, 160] + cbz w0, .L3188 + bl FtlCacheWriteBack +.L3188: + mov w22, w27 + adrp x0, .LC147 + mov w28, 0 + add x0, x0, :lo12:.LC147 + mov w25, 0 + str x0, [x29, 104] + str wzr, [x29, 156] + str wzr, [x29, 168] +.L3189: + ldr w0, [x29, 172] + cbnz w0, .L3206 + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR2 + ldrh w0, [x0, 1456] + cbz w0, .L3185 + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + b .L3185 +.L3206: + mov w2, 0 + add x1, x29, 188 + mov w0, w22 + bl log2phys + ldr w4, [x29, 188] + cmn w4, #1 + bne .L3190 + add x5, x21, :lo12:.LANCHOR0 + mov w20, 0 +.L3191: + ldrh w0, [x5, 2550] + cmp w20, w0 + bcc .L3193 +.L3194: + ldr w0, [x29, 172] + add w22, w22, 1 + subs w0, w0, #1 + str w0, [x29, 172] + beq .L3198 + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 2472] + cmp w28, w0, lsl 3 + bne .L3189 +.L3198: + cbz w28, .L3189 + ldr x0, [x29, 160] + mov w1, w28 + mov w2, 0 + add x8, x0, :lo12:.LANCHOR2 + mov x20, x8 + ldr x0, [x8, 3584] + bl FlashReadPages + ldr w0, [x29, 156] + lsl w0, w0, 9 + str w0, [x29, 132] + ldr w0, [x29, 152] + lsl w0, w0, 9 + str x0, [x29, 136] + ldr w0, [x29, 168] + lsl w0, w0, 9 + str w0, [x29, 144] + mov w0, 56 + umull x0, w28, w0 + mov x28, 0 + str x0, [x29, 120] + add x0, x21, :lo12:.LANCHOR0 + str x0, [x29, 112] +.L3205: + ldr x0, [x20, 3584] + add x0, x0, x28 + ldr w1, [x0, 24] + cmp w27, w1 + bne .L3200 + ldr x1, [x0, 8] + ldr x0, [x20, 3640] + cmp x1, x0 + bne .L3201 + ldr x0, [x29, 136] + ldr w2, [x29, 144] + add x1, x1, x0 + mov x0, x23 +.L3226: + bl ftl_memcpy +.L3201: + ldr x1, [x20, 3584] + add x0, x1, x28 + ldr w2, [x1, x28] + cmn w2, #1 + bne .L3202 + ldr w1, [x20, 920] + mov w25, w2 + add w1, w1, 1 + str w1, [x20, 920] +.L3202: + ldr x1, [x0, 16] + ldr w2, [x0, 24] + ldr w1, [x1, 8] + cmp w2, w1 + beq .L3203 + ldr w1, [x20, 920] + add w1, w1, 1 + str w1, [x20, 920] + ldp x2, x1, [x0, 8] + ldr w3, [x2, 4] + str w3, [sp] + ldp w3, w4, [x1] + ldp w5, w6, [x1, 8] + ldr w7, [x2] + ldr w1, [x0, 24] + ldr w2, [x0, 4] + ldr x0, [x29, 104] + bl printk +.L3203: + ldr x0, [x20, 3584] + add x1, x0, x28 + ldr w0, [x0, x28] + cmp w0, 256 + bne .L3204 + ldr w0, [x1, 4] + lsr w0, w0, 10 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L3204: + ldr x0, [x29, 120] + add x28, x28, 56 + cmp x0, x28 + bne .L3205 + mov w28, 0 + b .L3189 +.L3193: + madd w0, w22, w0, w20 + cmp w19, w0 + bhi .L3192 + ldr w1, [x29, 148] + cmp w1, w0 + bls .L3192 + sub w0, w0, w19 + str x5, [x29, 136] + lsl w0, w0, 9 + mov w2, 512 + mov w1, 0 + add x0, x23, x0 + bl ftl_memset + ldr x5, [x29, 136] +.L3192: + add w20, w20, 1 + b .L3191 +.L3190: + mov w0, 56 + cmp w22, w27 + umull x1, w28, w0 + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR2 + ldr x2, [x0, 3584] + add x2, x2, x1 + str w4, [x2, 4] + ldr x2, [x0, 3584] + add x2, x2, x1 + bne .L3195 + ldr x0, [x0, 3640] + str x0, [x2, 8] + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 2550] + udiv w4, w19, w0 + msub w3, w4, w0, w19 + str w3, [x29, 152] + sub w4, w0, w3 + cmp w24, w4 + csel w3, w24, w4, ls + str w3, [x29, 168] + cmp w3, w0 + bne .L3196 + str x23, [x2, 8] +.L3196: + ldr x0, [x29, 160] + add x2, x0, :lo12:.LANCHOR2 + ldr x0, [x2, 3584] + ldr x2, [x2, 3664] + add x1, x0, x1 + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 2556] + str w22, [x1, 24] + mul w0, w0, w28 + add w28, w28, 1 + and x0, x0, 4294967292 + add x0, x2, x0 + str x0, [x1, 16] + b .L3194 +.L3195: + cmp w22, w26 + bne .L3197 + ldr x0, [x0, 3648] + str x0, [x2, 8] + add x0, x21, :lo12:.LANCHOR0 + ldr w3, [x29, 148] + ldrh w4, [x0, 2550] + mul w0, w22, w4 + sub w3, w3, w0 + str w3, [x29, 156] + cmp w4, w3 + bne .L3196 +.L3225: + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + str x0, [x2, 8] + b .L3196 +.L3197: + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 2550] + mul w0, w0, w22 + b .L3225 +.L3200: + cmp w26, w1 + bne .L3201 + ldr x1, [x0, 8] + ldr x0, [x20, 3648] + cmp x1, x0 + bne .L3201 + ldr x0, [x29, 112] + ldr w2, [x29, 132] + ldrh w0, [x0, 2550] + mul w0, w0, w26 + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + b .L3226 +.L3210: + mov w25, -1 + b .L3185 .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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 16 bl ftl_read ldp x29, x30, [sp], 16 @@ -20942,40 +20564,43 @@ ftl_vendor_read: .global FlashBootVendorRead .type FlashBootVendorRead, %function FlashBootVendorRead: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] - mov w19, -1 - str x0, [x29,40] - str x1, [x29,48] - str x2, [x29,56] + stp x19, x20, [sp, 16] + mov w19, w0 + str x21, [sp, 32] + mov w20, w1 + mov x21, x2 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 .L3299 + adrp x0, .LANCHOR1+504 + ldr w0, [x0, #:lo12:.LANCHOR1+504] + cmp w0, 1 + bne .L3231 + mov w0, w19 + mov x2, x21 + mov w1, w20 bl ftl_vendor_read mov w19, w0 -.L3299: +.L3230: bl rknand_device_unlock + ldr x21, [sp, 32] mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret +.L3231: + mov w19, -1 + b .L3230 .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 + mov w2, w1 add w1, w0, 256 - mov w2, w4 + add x29, sp, 0 mov w0, 16 bl ftl_read ldp x29, x30, [sp], 16 @@ -20985,25 +20610,25 @@ ftl_sys_read: .global StorageSysDataLoad .type StorageSysDataLoad, %function StorageSysDataLoad: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! mov w2, 512 add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 + stp x19, x20, [sp, 16] mov x19, x1 - mov x0, x1 mov w1, 0 + mov w20, w0 + mov x0, x19 bl ftl_memset bl rknand_device_lock mov x2, x19 mov w1, 1 mov w0, w20 bl ftl_sys_read - str x0, [x29,40] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,40] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size StorageSysDataLoad, .-StorageSysDataLoad .align 2 @@ -21011,7 +20636,7 @@ StorageSysDataLoad: .type FtlRead, %function FtlRead: stp x29, x30, [sp, -16]! - uxtb w0, w0 + and w0, w0, 255 add x29, sp, 0 bl ftl_read ldp x29, x30, [sp], 16 @@ -21023,96 +20648,99 @@ FtlRead: FtlInit: stp x29, x30, [sp, -48]! mov w0, -1 - adrp x1, .LC76 + adrp x1, .LC75 + add x1, x1, :lo12:.LC75 add x29, sp, 0 - 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] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR1 + add x21, x21, :lo12:.LANCHOR1 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - add x21, x21, :lo12:.LANCHOR0 - str w0, [x22,504] - adrp x0, .LANCHOR5+1484 add x19, x19, :lo12:.LANCHOR2 - str wzr, [x0,#:lo12:.LANCHOR5+1484] - adrp x0, .LC75 - add x0, x0, :lo12:.LC75 - str wzr, [x19,424] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + str w0, [x21, 504] + adrp x0, .LANCHOR4+2004 + str wzr, [x19, 424] + str wzr, [x0, #:lo12:.LANCHOR4+2004] + adrp x0, .LC76 + add x0, x0, :lo12:.LC76 bl printk - add x0, x21, 176 + add x0, x20, 176 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh w0, [x21,2476] + ldrh w0, [x20, 2476] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L3305 - adrp x0, .LC160 - add x0, x0, :lo12:.LC160 - b .L3319 -.L3305: - bl FtlSysBlkInit - mov w20, w0 - cbz w0, .L3307 - adrp x0, .LC161 - add x0, x0, :lo12:.LC161 -.L3319: + cbz w0, .L3240 adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC160 add x1, x1, 256 + add x0, x0, :lo12:.LC160 +.L3255: bl printk - b .L3306 -.L3307: +.L3241: + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L3240: + bl FtlSysBlkInit + cbz w0, .L3242 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC161 + add x1, x1, 256 + add x0, x0, :lo12:.LC161 + b .L3255 +.L3242: mov w1, 1 - str w1, [x22,504] + str w1, [x21, 504] bl ftl_do_gc - ldrh w0, [x19,552] + ldrh w0, [x19, 552] cmp w0, 15 - bhi .L3308 - mov w22, 65535 + bhi .L3243 add w21, w0, 2 -.L3311: - ldrh w0, [x19,800] + mov w20, 0 + mov w22, 65535 +.L3246: + ldrh w0, [x19, 800] cmp w0, w22 - bne .L3309 - ldrh w0, [x19,1456] + bne .L3244 + ldrh w0, [x19, 1448] cmp w0, w22 - bne .L3309 + bne .L3244 and w0, w20, 63 bl List_get_gc_head_node bl FtlGcRefreshBlock -.L3309: - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - mov w0, 0 +.L3244: mov w1, 1 + mov w0, w1 bl ftl_do_gc - ldrh w0, [x19,552] + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + ldrh w0, [x19, 552] cmp w0, w21 - bhi .L3306 + bhi .L3241 add w20, w20, 1 cmp w20, 4096 - bne .L3311 - b .L3306 -.L3308: - ldrb w0, [x21,204] - cbz w0, .L3306 + bne .L3246 + b .L3241 +.L3243: + ldrb w0, [x20, 204] + cbz w0, .L3241 mov w19, 128 -.L3313: - mov w0, 1 - mov w1, w0 +.L3248: + mov w1, 1 + mov w0, w1 bl ftl_do_gc subs w19, w19, #1 - bne .L3313 -.L3306: - mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret + bne .L3248 + b .L3241 .size FtlInit, .-FtlInit .align 2 .global rk_ftl_init @@ -21121,43 +20749,44 @@ rk_ftl_init: stp x29, x30, [sp, -32]! mov w0, 2048 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR5 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR4 - add x20, x20, :lo12:.LANCHOR5 - bl ftl_malloc add x19, x19, :lo12:.LANCHOR4 - add x1, x20, 1496 - str x0, [x20,1488] - add x0, x19, 1592 - str xzr, [x19,1592] - str xzr, [x20,1496] + bl ftl_dma32_malloc + add x1, x19, 2016 + str x0, [x19, 2008] + add x0, x19, 1584 + str xzr, [x19, 1584] + str wzr, [x19, 1592] + str xzr, [x19, 2016] bl rknand_get_reg_addr - ldr x1, [x19,1592] - mov w0, -1 - cbz x1, .L3321 + ldr x0, [x19, 1584] + cbz x0, .L3261 bl rk_nandc_irq_init - mov w1, 0 - ldr x0, [x20,1488] - mov w2, w1 + ldr x0, [x19, 2008] mov w3, 2048 + mov w2, 0 + mov w1, 0 bl FlashSramLoadStore bl rknand_flash_cs_init - ldr x0, [x19,1592] + ldr x0, [x19, 1584] bl FlashInit - mov w19, w0 - cbnz w0, .L3322 + mov w20, w0 + cbnz w0, .L3258 bl FtlInit -.L3322: +.L3258: adrp x0, .LC162 - mov w1, w19 + mov w1, w20 add x0, x0, :lo12:.LC162 bl printk - mov w0, w19 -.L3321: - ldp x19, x20, [sp,16] +.L3256: + mov w0, w20 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L3261: + mov w20, -1 + b .L3256 .size rk_ftl_init, .-rk_ftl_init .align 2 .global ftl_fix_nand_power_lost_error @@ -21165,118 +20794,117 @@ rk_ftl_init: ftl_fix_nand_power_lost_error: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - str x27, [sp,80] - add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldrb w0, [x0,204] - cbz w0, .L3325 - adrp x21, .LANCHOR5 - adrp x19, .LANCHOR2 - add x0, x21, :lo12:.LANCHOR5 - add x24, x19, :lo12:.LANCHOR2 - adrp x25, .LC163 - add x27, x24, 560 - add x26, x24, 608 - ldrh w23, [x0,1328] - add x0, x25, :lo12:.LC163 - ldr x2, [x24,520] - ubfiz x22, x23, 1, 16 - mov w1, w23 - ldrh w2, [x2,x22] + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR0 + add x0, x25, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x27, [sp, 80] + ldrb w0, [x0, 204] + cbz w0, .L3263 + adrp x21, .LANCHOR4 + add x0, x21, :lo12:.LANCHOR4 + adrp x20, .LANCHOR2 + add x19, x20, :lo12:.LANCHOR2 + adrp x24, .LC163 + add x27, x19, 560 + ldrh w22, [x0, 1842] + add x26, x19, 608 + ldr x0, [x19, 520] + mov w1, w22 + ubfiz x23, x22, 1, 16 + ldrh w2, [x0, x23] + add x0, x24, :lo12:.LC163 bl printk - ldrh w0, [x24,560] + ldrh w0, [x19, 560] bl FtlGcRefreshOpenBlock - ldrh w0, [x24,608] - mov w24, 4097 + ldrh w0, [x19, 608] bl FtlGcRefreshOpenBlock mov x0, x27 bl allocate_new_data_superblock mov x0, x26 + mov x26, x24 + mov w27, 4097 bl allocate_new_data_superblock -.L3327: - subs w24, w24, #1 - beq .L3331 - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,520] - ldrh w0, [x0,x22] - cbnz w0, .L3327 -.L3331: - add x24, x19, :lo12:.LANCHOR2 - add x0, x25, :lo12:.LC163 - mov w1, w23 - ldr x2, [x24,520] - ldrh w2, [x2,x22] - bl printk - ldr x0, [x24,520] - ldrh w0, [x0,x22] - cbnz w0, .L3329 - add x0, x29, 96 - add x20, x20, :lo12:.LANCHOR0 - strh w23, [x29,96] - bl make_superblock - mov x0, 0 - ldrh w5, [x20,2472] - mov w6, 65535 - mov w20, w0 - mov w7, 56 -.L3332: - cmp w5, w0, uxth - bls .L3339 - add x1, x29, 96 - add x1, x1, x0, lsl 1 - ldrh w2, [x1,16] - cmp w2, w6 - beq .L3333 - add x4, x19, :lo12:.LANCHOR2 - lsl w2, w2, 10 - umull x1, w20, w7 - add w20, w20, 1 - ldr x3, [x4,432] - uxth w20, w20 - add x3, x3, x1 - str w2, [x3,4] - ldr x2, [x4,432] - add x1, x2, x1 - str xzr, [x1,8] - str xzr, [x1,16] -.L3333: - add x0, x0, 1 - b .L3332 -.L3339: - add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC164 - mov w1, w23 - add x0, x0, :lo12:.LC164 - ldr x2, [x19,520] - ldrh w2, [x2,x22] - bl printk - ldr x0, [x19,432] - mov w1, 0 - mov w2, w20 - bl FlashEraseBlocks - ldr x0, [x19,432] +.L3265: + subs w27, w27, #1 + beq .L3269 mov w1, 1 - mov w2, w20 + mov w0, w1 + bl ftl_do_gc + ldr x0, [x19, 520] + ldrh w0, [x0, x23] + cbnz w0, .L3265 +.L3269: + add x24, x20, :lo12:.LANCHOR2 + mov w1, w22 + ldr x0, [x24, 520] + ldrh w2, [x0, x23] + add x0, x26, :lo12:.LC163 + bl printk + ldr x0, [x24, 520] + ldrh w19, [x0, x23] + cbnz w19, .L3267 + add x12, x29, 144 + add x25, x25, :lo12:.LANCHOR0 + strh w22, [x12, -48]! + mov x0, x12 + bl make_superblock + ldrh w5, [x25, 2472] + add x12, x12, 16 + mov w0, 0 + mov w6, 65535 + mov w7, 56 +.L3270: + cmp w0, w5 + bne .L3272 + add x20, x20, :lo12:.LANCHOR2 + mov w1, w22 + ldr x0, [x20, 520] + ldrh w2, [x0, x23] + adrp x0, .LC164 + add x0, x0, :lo12:.LC164 + bl printk + ldr x0, [x20, 432] + mov w2, w19 + mov w1, 0 bl FlashEraseBlocks -.L3329: - add x21, x21, :lo12:.LANCHOR5 + ldr x0, [x20, 432] + mov w2, w19 + mov w1, 1 + bl FlashEraseBlocks +.L3267: + add x21, x21, :lo12:.LANCHOR4 mov w0, -1 - strh w0, [x21,1328] -.L3325: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldr x27, [sp,80] + strh w0, [x21, 1842] +.L3263: + 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], 144 ret +.L3272: + ldrh w2, [x12] + cmp w2, w6 + beq .L3271 + umull x4, w19, w7 + ldr x3, [x24, 432] + lsl w2, w2, 10 + add w19, w19, 1 + add x3, x3, x4 + and w19, w19, 65535 + str w2, [x3, 4] + ldr x1, [x24, 432] + add x1, x1, x4 + stp xzr, xzr, [x1, 8] +.L3271: + add w0, w0, 1 + add x12, x12, 2 + and w0, w0, 65535 + b .L3270 .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .align 2 .global rk_ftl_garbage_collect @@ -21292,534 +20920,521 @@ rk_ftl_garbage_collect: .global ftl_write .type ftl_write, %function ftl_write: - stp x29, x30, [sp, -288]! - mov w4, w0 - mov w0, 0 + stp x29, x30, [sp, -272]! add x29, sp, 0 - stp x23, x24, [sp,48] - mov w23, w1 + stp x21, x22, [sp, 32] + mov w22, w1 adrp x1, .LANCHOR2 - stp x25, x26, [sp,64] - mov w25, w2 - add x2, x1, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - mov x26, x3 - str x1, [x29,176] - ldr w3, [x2,424] - cbnz w3, .L3342 + add x4, x1, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + mov w24, w2 + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + str x1, [x29, 168] + ldr w2, [x4, 424] + cbnz w2, .L3322 adrp x1, .LANCHOR1 - str x1, [x29,152] - add x3, x1, :lo12:.LANCHOR1 - ldr w3, [x3,504] - cmp w3, 1 - bne .L3342 - cmp w4, 16 - bne .L3343 - add w0, w23, 256 - mov w1, w25 - mov x2, x26 + add x2, x1, :lo12:.LANCHOR1 + str x1, [x29, 160] + ldr w2, [x2, 504] + cmp w2, 1 + bne .L3322 + mov x23, x3 + cmp w0, 16 + bne .L3282 + mov x2, x3 + mov w1, w24 + add w0, w22, 256 bl FtlVendorPartWrite - b .L3342 -.L3343: - adrp x21, .LANCHOR0 - add x4, x21, :lo12:.LANCHOR0 - ldr w1, [x4,2584] - cmp w23, w1 - bcs .L3385 - cmp w25, w1 - bhi .L3385 - add w3, w23, w25 - mov w0, -1 - cmp w3, w1 - bhi .L3342 - adrp x5, .LANCHOR5 - ldrh w1, [x4,2550] - 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,1504] - udiv w0, w3, w1 - ldr w3, [x4,2600] - str w0, [x29,208] - sub w24, w0, w27 - add w20, w24, 1 - ldr w0, [x2,728] - add w0, w20, w0 - str w0, [x2,728] - ldr w0, [x2,744] - add w0, w25, w0 - str w0, [x2,744] - cset w0, cs - str w0, [x29,212] - cbz w3, .L3345 - mov w0, 56 - sub w3, w3, #1 - umull x3, w3, w0 - ldr x0, [x4,2608] - add x3, x0, x3 - ldr w0, [x3,24] +.L3280: + 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], 272 + ret +.L3282: + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + ldr w1, [x0, 2584] + cmp w22, w1 + bcs .L3325 + cmp w24, w1 + bhi .L3325 + add w2, w22, w24 + cmp w1, w2 + bcc .L3325 + adrp x3, .LANCHOR4 + add x25, x3, :lo12:.LANCHOR4 + mov w1, 2048 + sub w2, w2, #1 + str x3, [x29, 152] + str w1, [x25, 2024] + ldrh w1, [x0, 2550] + cmp w24, w1, lsl 1 + udiv w2, w2, w1 + udiv w27, w22, w1 + str w2, [x29, 196] + sub w28, w2, w27 + ldr w2, [x4, 728] + add w26, w28, 1 + add w2, w2, w26 + str w2, [x4, 728] + ldr w2, [x4, 744] + add w2, w2, w24 + str w2, [x4, 744] + cset w2, cs + str w2, [x29, 204] + ldr w2, [x0, 2600] + cbz w2, .L3284 + ldr x0, [x0, 2608] + sub w2, w2, #1 + mov w3, 56 + umaddl x2, w2, w3, x0 + ldr w0, [x2, 24] cmp w27, w0 - bne .L3346 - ldr w0, [x2,732] + bne .L3285 + ldr w0, [x4, 732] + ldr x3, [x2, 8] add w0, w0, 1 - str w0, [x2,732] - ldr w0, [x22,1508] + str w0, [x4, 732] + ldr w0, [x25, 2028] add w0, w0, 1 - str w0, [x22,1508] - msub w0, w27, w1, w23 + str w0, [x25, 2028] + msub w0, w27, w1, w22 sub w1, w1, w0 - ubfiz x0, x0, 9, 23 - cmp w1, w25 - csel w19, w1, w25, ls - ldr x1, [x3,8] - lsl w20, w19, 9 - add x0, x1, x0 - mov w2, w20 - mov x1, x26 + cmp w24, w1 + lsl w0, w0, 9 + csel w19, w24, w1, ls + add x0, x3, x0 + lsl w21, w19, 9 + mov x1, x23 + mov w2, w21 bl ftl_memcpy - cbnz w24, .L3347 - ldr w0, [x22,1508] + cbnz w28, .L3286 + ldr w0, [x25, 2028] cmp w0, 2 - bgt .L3347 -.L3381: + bgt .L3286 +.L3322: mov w0, 0 - b .L3342 -.L3347: - add x26, x26, x20 - sub w25, w25, w19 - add w23, w23, w19 + b .L3280 +.L3286: + sub w24, w24, w19 + add w22, w22, w19 + add x23, x23, x21 add w27, w27, 1 - mov w20, w24 -.L3346: - ldr x0, [x29,144] - add x0, x0, :lo12:.LANCHOR5 - str wzr, [x0,1508] -.L3345: - ldr w1, [x29,208] + mov w26, w28 +.L3285: + ldr x0, [x29, 152] + add x0, x0, :lo12:.LANCHOR4 + str wzr, [x0, 2028] +.L3284: + ldr w1, [x29, 196] mov w0, w27 bl FtlCacheMetchLpa - cbz w0, .L3348 + cbz w0, .L3287 bl FtlCacheWriteBack -.L3348: - ldr x0, [x29,144] - ldr x1, [x29,176] - add x0, x0, :lo12:.LANCHOR5 - str w27, [x29,192] - add x24, x1, :lo12:.LANCHOR2 - add x22, x24, 560 - str x22, [x29,184] - str x22, [x0,1472] - adrp x0, .LC165 - add x0, x0, :lo12:.LC165 - str x0, [x29,104] -.L3349: - cbz w20, .L3413 - ldrh w0, [x22,4] - cbnz w0, .L3350 - ldr x1, [x29,184] - cmp x22, x1 - bne .L3351 - add x0, x24, 608 - ldrh w19, [x0,4] - cbnz w19, .L3352 - bl allocate_new_data_superblock - ldr x0, [x29,152] - add x0, x0, :lo12:.LANCHOR1 - str w19, [x0,3460] -.L3352: - ldr x0, [x29,184] - add x22, x24, 608 - bl allocate_new_data_superblock - ldr x0, [x29,152] - add x0, x0, :lo12:.LANCHOR1 - ldr w0, [x0,3460] - cbnz w0, .L3353 -.L3354: - ldr x22, [x29,184] - b .L3353 -.L3351: - ldr x1, [x29,152] - add x1, x1, :lo12:.LANCHOR1 - str w0, [x1,3460] - ldr x0, [x29,184] - ldrh w0, [x0,4] - cbnz w0, .L3354 - mov x0, x22 - bl allocate_new_data_superblock -.L3353: - ldrh w0, [x22,4] - cbnz w0, .L3355 - mov x0, x22 - bl allocate_new_data_superblock -.L3355: - ldr x0, [x29,144] - add x0, x0, :lo12:.LANCHOR5 - str x22, [x0,1472] -.L3350: - add x2, x21, :lo12:.LANCHOR0 - ldr w0, [x24,3588] - ldrh w1, [x22,4] - str xzr, [x29,200] - ldr w2, [x2,2600] - sub w0, w0, w2 - cmp w1, w0 - csel w0, w1, w0, ls - cmp w0, w20 - csel w0, w0, w20, ls - str w0, [x29,140] - ldr w0, [x29,212] - and w0, w0, 1 - str w0, [x29,116] - add w0, w25, w23 - str w0, [x29,136] -.L3356: - ldr w0, [x29,200] - ldr w2, [x29,140] - ldr w1, [x29,192] - cmp w0, w2 - add w28, w1, w0 - bcs .L3414 - ldrh w1, [x22,4] - cbz w1, .L3389 - ldr w1, [x29,208] - cmp w28, w1 - cset w6, eq - cbz w0, .L3358 - ldr w1, [x29,116] - tst w6, w1 - beq .L3358 - add x1, x21, :lo12:.LANCHOR0 - ldr w2, [x29,136] - ldrh w1, [x1,2550] - msub w2, w28, w1, w2 - cmp w2, w1 - bne .L3389 -.L3358: - add x1, x29, 228 - mov w2, 0 - mov w0, w28 - str x6, [x29,96] - add x19, x21, :lo12:.LANCHOR0 - bl log2phys - mov x0, x22 - bl get_new_active_ppa - ldr w5, [x19,2600] - mov w4, 56 - ldr x2, [x19,2608] - str x4, [x29,160] - umull x1, w5, w4 - add x2, x2, x1 - str w0, [x2,4] - ldrh w2, [x19,2556] - ldr x0, [x19,2608] - add x1, x0, x1 - mul w0, w2, w5 - and x0, x0, 4294967292 - str x0, [x29,128] - ldr x0, [x24,3680] - ldr x3, [x29,128] - str x0, [x29,120] - add x0, x0, x3 - str x0, [x29,216] - str x0, [x1,16] - ldrh w0, [x19,2554] - str w28, [x1,24] - mul w0, w0, w5 - ldr x5, [x24,3640] - and x0, x0, 4294967292 - add x0, x5, x0 - str x0, [x1,8] - ldr x0, [x29,216] - mov w1, 0 - bl ftl_memset - cmp w28, w27 - cset w0, eq - str w0, [x29,196] - cbnz w0, .L3393 - ldr x6, [x29,96] - ldr x4, [x29,160] - cbz w6, .L3359 - ldr w0, [x29,136] - ldrh w19, [x19,2550] - msub w19, w28, w19, w0 - ldr w0, [x29,196] - str w0, [x29,160] - uxth w19, w19 - b .L3362 -.L3393: - ldrh w19, [x19,2550] - udiv w0, w23, w19 - msub w0, w0, w19, w23 - str w0, [x29,160] - sub w19, w19, w0 - cmp w19, w25 - csel w19, w19, w25, ls -.L3362: - add x2, x21, :lo12:.LANCHOR0 - ldrh w0, [x2,2550] - cmp w19, w0 - bne .L3363 - ldr w0, [x29,196] - mov x1, x26 - cbnz w0, .L3364 - mul w1, w19, w28 - sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - add x1, x26, x1 -.L3364: - ldr w2, [x29,212] - mov w0, 56 - add x4, x21, :lo12:.LANCHOR0 - cbz w2, .L3365 - ldr w2, [x4,2600] - umull x0, w2, w0 - ldr x2, [x4,2608] - add x0, x2, x0 - b .L3411 -.L3365: - ldr w2, [x4,2600] - umull x0, w2, w0 - ldr x2, [x4,2608] - add x0, x2, x0 - ldrh w2, [x4,2554] - ldr x0, [x0,8] - b .L3412 -.L3363: - ldr w0, [x29,228] - cmn w0, #1 - beq .L3367 - str w0, [x29,236] - mov w1, 56 - ldr w0, [x2,2600] - str w28, [x29,256] - umull x0, w0, w1 - ldr x1, [x2,2608] - mov w2, 0 - add x0, x1, x0 - ldr x1, [x0,8] - ldr x0, [x0,16] - str x1, [x29,240] - mov w1, 1 - str x0, [x29,248] - add x0, x29, 232 - bl FlashReadPages - ldr w0, [x29,232] - cmn w0, #1 - bne .L3368 - ldr w0, [x24,928] - add w0, w0, 1 - str w0, [x24,928] - b .L3370 -.L3368: - ldr x0, [x29,216] - ldr w0, [x0,8] - cmp w0, w28 - beq .L3370 - ldr w0, [x24,928] - mov w2, w28 - ldr x1, [x29,216] - add w0, w0, 1 - str w0, [x24,928] - ldr x0, [x29,104] - ldr w1, [x1,8] - bl printk - b .L3370 -.L3367: - ldr w0, [x2,2600] - mov w1, 56 - umull x0, w0, w1 - ldr x1, [x2,2608] - ldrh w2, [x2,2554] - add x0, x1, x0 - mov w1, 0 - ldr x0, [x0,8] - bl ftl_memset -.L3370: - ldr w1, [x29,196] - mov w0, 56 - lsl w2, w19, 9 - cbz w1, .L3371 - add x1, x21, :lo12:.LANCHOR0 - ldr w4, [x1,2600] - umull x0, w4, w0 - ldr x4, [x1,2608] - add x4, x4, x0 - ldr x0, [x29,160] - ubfiz x0, x0, 9, 23 - ldr x1, [x4,8] - add x0, x1, x0 - mov x1, x26 - b .L3412 -.L3371: - add x5, x21, :lo12:.LANCHOR0 - ldr w4, [x5,2600] - ldr x1, [x5,2608] - umull x0, w4, w0 - add x0, x1, x0 - ldrh w1, [x5,2550] - mul w1, w28, w1 - ldr x0, [x0,8] - sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - add x1, x26, x1 - b .L3412 -.L3359: - ldr w0, [x29,212] - ldrh w1, [x19,2550] - ldr w2, [x19,2600] - cbz w0, .L3372 - mul w1, w28, w1 - umull x0, w2, w4 - sub w1, w1, w23 - ldr x2, [x19,2608] - ubfiz x1, x1, 9, 23 - add x0, x2, x0 - add x1, x26, x1 -.L3411: - str x1, [x0,8] - b .L3366 -.L3372: - umull x0, w2, w4 - ldr x2, [x19,2608] - mul w1, w28, w1 - add x0, x2, x0 - ldrh w2, [x19,2554] - sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - ldr x0, [x0,8] - add x1, x26, x1 -.L3412: - bl ftl_memcpy -.L3366: - ldr x1, [x29,120] - mov w0, -3947 - ldr x2, [x29,128] - strh w0, [x1,x2] - ldr x1, [x29,216] - ldr w0, [x24,756] - str w0, [x1,4] - add w0, w0, 1 - cmn w0, #1 - str w28, [x1,8] - csel w0, w0, wzr, ne - str w0, [x24,756] - ldr w0, [x29,228] - str w0, [x1,12] - ldrh w0, [x22] - strh w0, [x1,2] - add x1, x21, :lo12:.LANCHOR0 - ldr w0, [x1,2600] - add w0, w0, 1 - str w0, [x1,2600] - ldr x0, [x29,200] - add x0, x0, 1 - str x0, [x29,200] - b .L3356 -.L3414: - str w28, [x29,192] - mov x0, x2 - b .L3357 -.L3389: - str w28, [x29,192] -.L3357: - sub w20, w20, w0 - ldr w0, [x29,212] - cbnz w0, .L3376 - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x0,2600] - ldr w0, [x24,3588] - cmp w1, w0 - bcs .L3376 - ldrh w0, [x22,4] - cbz w0, .L3376 -.L3378: - str wzr, [x29,212] - b .L3349 -.L3376: - bl FtlCacheWriteBack - add x0, x21, :lo12:.LANCHOR0 - cmp w20, 1 - str wzr, [x0,2600] - bhi .L3349 - b .L3378 -.L3413: - ldr w1, [x29,208] - mov w0, w20 - sub w1, w1, w27 +.L3287: + ldr x1, [x29, 168] + mov w19, w27 + ldr x0, [x29, 152] + add x25, x1, :lo12:.LANCHOR2 + add x0, x0, :lo12:.LANCHOR4 + add x1, x25, 560 + mov x21, x1 + str x1, [x29, 128] + str x1, [x29, 176] + str x1, [x0, 1992] +.L3288: + cbnz w26, .L3316 + ldr w0, [x29, 196] + sub w1, w0, w27 + mov w0, 0 bl ftl_do_gc - ldr x0, [x29,176] + ldr x0, [x29, 168] add x0, x0, :lo12:.LANCHOR2 - ldrh w0, [x0,552] + ldrh w0, [x0, 552] cmp w0, 5 - bls .L3380 + bls .L3317 cmp w0, 31 - bhi .L3381 - add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,72] - cbnz w0, .L3381 -.L3380: - ldr x0, [x29,176] - mov w21, 65535 - mov w22, 128 + bhi .L3322 + add x20, x20, :lo12:.LANCHOR0 + ldrb w0, [x20, 72] + cbnz w0, .L3322 +.L3317: + ldr x0, [x29, 168] + mov w20, 65535 + mov w21, 128 add x19, x0, :lo12:.LANCHOR2 -.L3404: - ldrh w0, [x19,800] - cmp w0, w21 - bne .L3382 - ldrh w0, [x19,1456] - cmp w0, w21 - bne .L3382 - ldrh w0, [x19,1458] - cmp w0, w21 - bne .L3382 - and w0, w20, 7 +.L3320: + ldrh w0, [x19, 800] + cmp w0, w20 + bne .L3319 + ldrh w0, [x19, 1448] + cmp w0, w20 + bne .L3319 + ldrh w0, [x19, 1450] + cmp w0, w20 + bne .L3319 + and w0, w26, 7 bl List_get_gc_head_node bl FtlGcRefreshBlock -.L3382: - mov w0, 1 - strh w22, [x19,1370] - mov w1, w0 - strh w22, [x19,1368] - bl ftl_do_gc - mov w0, 0 +.L3319: mov w1, 1 + strh w21, [x19, 1366] + mov w0, w1 + strh w21, [x19, 1364] bl ftl_do_gc - ldr w0, [x19,424] - cbnz w0, .L3381 - ldrh w0, [x19,552] + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + ldr w0, [x19, 424] + cbnz w0, .L3322 + ldrh w0, [x19, 552] cmp w0, 2 - bhi .L3381 - add w20, w20, 1 - cmp w20, 256 - bne .L3404 - b .L3381 -.L3385: + bhi .L3322 + add w26, w26, 1 + cmp w26, 256 + bne .L3320 + b .L3322 +.L3316: + ldrh w0, [x21, 4] + cbnz w0, .L3289 + ldr x0, [x29, 128] + cmp x21, x0 + bne .L3290 + add x0, x25, 608 + ldrh w1, [x0, 4] + cbnz w1, .L3291 + bl allocate_new_data_superblock + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR1 + str wzr, [x0, 3460] +.L3291: + ldr x0, [x29, 176] + add x21, x25, 608 + bl allocate_new_data_superblock + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR1 + ldr w0, [x0, 3460] + cmp w0, 0 + ldr x0, [x29, 176] + csel x21, x21, x0, ne +.L3292: + ldrh w0, [x21, 4] + cbnz w0, .L3293 + mov x0, x21 + bl allocate_new_data_superblock +.L3293: + ldr x0, [x29, 152] + add x0, x0, :lo12:.LANCHOR4 + str x21, [x0, 1992] +.L3289: + add x1, x20, :lo12:.LANCHOR0 + ldr w0, [x25, 3580] + str wzr, [x29, 200] + ldr w1, [x1, 2600] + sub w0, w0, w1 + ldrh w1, [x21, 4] + cmp w0, w26 + csel w0, w0, w26, ls + cmp w1, w0 + csel w0, w1, w0, ls + str w0, [x29, 124] + ldr w0, [x29, 204] + and w0, w0, 1 + str w0, [x29, 120] + adrp x0, .LC165 + add x0, x0, :lo12:.LC165 + str x0, [x29, 112] +.L3294: + ldr w1, [x29, 124] + ldr w0, [x29, 200] + cmp w0, w1 + bne .L3312 +.L3295: + ldr w0, [x29, 200] + sub w26, w26, w0 + add x0, x20, :lo12:.LANCHOR0 + ldr w1, [x0, 2600] + ldr w0, [x25, 3580] + cmp w1, w0 + bcs .L3313 + ldr w0, [x29, 204] + cbnz w0, .L3313 + ldrh w0, [x21, 4] + cbz w0, .L3313 +.L3315: + str wzr, [x29, 204] + b .L3288 +.L3290: + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR1 + str wzr, [x0, 3460] + ldr x0, [x29, 128] + ldrh w0, [x0, 4] + cbnz w0, .L3329 + mov x0, x21 + bl allocate_new_data_superblock + b .L3292 +.L3329: + ldr x21, [x29, 176] + b .L3293 +.L3312: + ldrh w0, [x21, 4] + cbz w0, .L3295 + ldr w0, [x29, 196] + cmp w0, w19 + ldr w0, [x29, 120] + cset w4, eq + tst w4, w0 + beq .L3296 + ldr w0, [x29, 200] + cbz w0, .L3296 + add x0, x20, :lo12:.LANCHOR0 + ldrh w1, [x0, 2550] + add w0, w22, w24 + msub w0, w19, w1, w0 + cmp w1, w0 + bne .L3295 +.L3296: + add x1, x29, 212 + mov w2, 0 + str w4, [x29, 108] + mov w0, w19 + bl log2phys + mov x0, x21 + bl get_new_active_ppa + add x3, x20, :lo12:.LANCHOR0 + mov w5, 56 + str x3, [x29, 184] + str w5, [x29, 192] + ldr w6, [x3, 2600] + ldr x1, [x3, 2608] + umull x2, w6, w5 + add x1, x1, x2 + str w0, [x1, 4] + ldr x0, [x3, 2608] + add x0, x0, x2 + ldrh w2, [x3, 2556] + str w19, [x0, 24] + mul w1, w6, w2 + and x1, x1, 4294967292 + str x1, [x29, 144] + ldr x1, [x25, 3672] + ldr x4, [x29, 144] + str x1, [x29, 136] + add x28, x1, x4 + ldrh w1, [x3, 2554] + str x28, [x0, 16] + mul w1, w1, w6 + ldr x6, [x25, 3632] + and x1, x1, 4294967292 + add x1, x6, x1 + str x1, [x0, 8] + mov w1, 0 + mov x0, x28 + bl ftl_memset + cmp w27, w19 + ldr w4, [x29, 108] + cset w0, eq + ldr w5, [x29, 192] + orr w4, w4, w0 + ldr x3, [x29, 184] + cbz w4, .L3297 + bne .L3298 + ldrh w2, [x3, 2550] + udiv w0, w22, w2 + msub w0, w0, w2, w22 + str w0, [x29, 192] + sub w2, w2, w0 + cmp w2, w24 + csel w0, w2, w24, ls + str w0, [x29, 184] +.L3299: + add x0, x20, :lo12:.LANCHOR0 + ldr w2, [x29, 184] + ldrh w1, [x0, 2550] + cmp w1, w2 + bne .L3300 + cmp w27, w19 + beq .L3330 + mul w1, w19, w2 + sub w1, w1, w22 + lsl w1, w1, 9 + add x1, x23, x1 +.L3301: + ldr w0, [x29, 204] + add x2, x20, :lo12:.LANCHOR0 + cbz w0, .L3302 + ldr w0, [x2, 2600] + mov w3, 56 + ldr x2, [x2, 2608] + umaddl x0, w0, w3, x2 +.L3348: + str x1, [x0, 8] +.L3303: + ldp x1, x2, [x29, 136] + mov w0, -3947 + strh w0, [x1, x2] + add x1, x20, :lo12:.LANCHOR0 + ldr w0, [x25, 756] + stp w0, w19, [x28, 4] + add w19, w19, 1 + add w0, w0, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x25, 756] + ldr w0, [x29, 212] + str w0, [x28, 12] + ldrh w0, [x21] + strh w0, [x28, 2] + ldr w0, [x1, 2600] + add w0, w0, 1 + str w0, [x1, 2600] + ldr w0, [x29, 200] + add w0, w0, 1 + str w0, [x29, 200] + b .L3294 +.L3298: + ldrh w0, [x3, 2550] + add w2, w22, w24 + str wzr, [x29, 192] + msub w2, w19, w0, w2 + and w0, w2, 65535 + str w0, [x29, 184] + b .L3299 +.L3330: + mov x1, x23 + b .L3301 +.L3302: + ldr w0, [x2, 2600] + mov w4, 56 + ldr x3, [x2, 2608] + ldrh w2, [x2, 2554] + nop // between mem op and mult-accumulate + umaddl x0, w0, w4, x3 +.L3349: + ldr x0, [x0, 8] + b .L3351 +.L3300: + ldr w1, [x29, 212] + mov w2, 56 + cmn w1, #1 + beq .L3304 + str w1, [x29, 220] + ldr w1, [x0, 2600] + ldr x0, [x0, 2608] + str w19, [x29, 240] + nop // between mem op and mult-accumulate + umaddl x0, w1, w2, x0 + mov w2, 0 + ldp x1, x0, [x0, 8] + stp x1, x0, [x29, 224] + mov w1, 1 + add x0, x29, 216 + bl FlashReadPages + ldr w0, [x29, 216] + cmn w0, #1 + bne .L3305 + ldr w0, [x25, 920] + add w0, w0, 1 + str w0, [x25, 920] +.L3307: + ldr w0, [x29, 184] + cmp w27, w19 + lsl w2, w0, 9 + bne .L3308 + add x0, x20, :lo12:.LANCHOR0 + mov w3, 56 + ldr w1, [x0, 2600] + ldr x0, [x0, 2608] + umaddl x1, w1, w3, x0 + ldr w0, [x29, 192] + lsl w0, w0, 9 + ldr x3, [x1, 8] + mov x1, x23 + add x0, x3, x0 +.L3351: + bl ftl_memcpy + b .L3303 +.L3305: + ldr w0, [x28, 8] + cmp w19, w0 + beq .L3307 + ldr w0, [x25, 920] + mov w2, w19 + add w0, w0, 1 + str w0, [x25, 920] + ldr x0, [x29, 112] + ldr w1, [x28, 8] + bl printk + b .L3307 +.L3304: + ldr x1, [x0, 2608] + ldr w3, [x0, 2600] + umaddl x3, w3, w2, x1 + ldrh w2, [x0, 2554] + mov w1, 0 + ldr x0, [x3, 8] + bl ftl_memset + b .L3307 +.L3308: + add x3, x20, :lo12:.LANCHOR0 + mov w4, 56 + ldrh w1, [x3, 2550] + ldr w0, [x3, 2600] + ldr x3, [x3, 2608] + mul w1, w1, w19 + umaddl x0, w0, w4, x3 + sub w1, w1, w22 + lsl w1, w1, 9 +.L3350: + add x1, x23, x1 + b .L3349 +.L3297: + ldr w0, [x29, 204] + ldrh w1, [x3, 2550] + cbz w0, .L3309 + mul w1, w1, w19 + ldr w0, [x3, 2600] + ldr x2, [x3, 2608] + sub w1, w1, w22 + lsl w1, w1, 9 + add x1, x23, x1 + umaddl x0, w0, w5, x2 + b .L3348 +.L3309: + ldr x2, [x3, 2608] + mul w1, w1, w19 + ldr w0, [x3, 2600] + sub w1, w1, w22 + lsl w1, w1, 9 + umaddl x0, w0, w5, x2 + ldrh w2, [x3, 2554] + b .L3350 +.L3313: + bl FtlCacheWriteBack + add x0, x20, :lo12:.LANCHOR0 + cmp w26, 1 + str wzr, [x0, 2600] + bhi .L3288 + b .L3315 +.L3325: mov w0, -1 -.L3342: - 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], 288 - ret + b .L3280 .size ftl_write, .-ftl_write .align 2 .global ftl_vendor_write .type ftl_vendor_write, %function ftl_vendor_write: 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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 16 bl ftl_write ldp x29, x30, [sp], 16 @@ -21829,40 +21444,43 @@ ftl_vendor_write: .global FlashBootVendorWrite .type FlashBootVendorWrite, %function FlashBootVendorWrite: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] - mov w19, -1 - str x0, [x29,40] - str x1, [x29,48] - str x2, [x29,56] + stp x19, x20, [sp, 16] + mov w19, w0 + str x21, [sp, 32] + mov w20, w1 + mov x21, x2 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 .L3417 + adrp x0, .LANCHOR1+504 + ldr w0, [x0, #:lo12:.LANCHOR1+504] + cmp w0, 1 + bne .L3356 + mov w0, w19 + mov x2, x21 + mov w1, w20 bl ftl_vendor_write mov w19, w0 -.L3417: +.L3355: bl rknand_device_unlock + ldr x21, [sp, 32] mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret +.L3356: + mov w19, -1 + b .L3355 .size FlashBootVendorWrite, .-FlashBootVendorWrite .align 2 .global ftl_sys_write .type ftl_sys_write, %function ftl_sys_write: stp x29, x30, [sp, -16]! - mov w4, w1 mov x3, x2 - add x29, sp, 0 + mov w2, w1 add w1, w0, 256 - mov w2, w4 + add x29, sp, 0 mov w0, 16 bl ftl_write ldp x29, x30, [sp], 16 @@ -21874,16 +21492,18 @@ ftl_sys_write: StorageSysDataStore: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x0, [x29,16] - str x1, [x29,24] + stp x19, x20, [sp, 16] + mov x20, x1 + mov w19, w0 bl rknand_device_lock - ldr x2, [x29,24] + mov x2, x20 mov w1, 1 - ldr x0, [x29,16] + mov w0, w19 bl ftl_sys_write - str x0, [x29,24] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,24] + mov w0, w19 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size StorageSysDataStore, .-StorageSysDataStore @@ -21892,256 +21512,237 @@ StorageSysDataStore: .type FtlDumpSysBlock, %function FtlDumpSysBlock: sub sp, sp, #96 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] - stp x21, x22, [sp,48] + stp x19, x20, [sp, 32] adrp x19, .LANCHOR4 - adrp x21, .LANCHOR2 - stp x23, x24, [sp,64] + stp x21, x22, [sp, 48] add x19, x19, :lo12:.LANCHOR4 - uxth w23, w0 + stp x23, x24, [sp, 64] + adrp x21, .LANCHOR2 + and w24, w0, 65535 add x0, x21, :lo12:.LANCHOR2 - str x25, [sp,80] - add x19, x19, 1704 - adrp x22, .LC166 - adrp x24, .LC167 - lsl w25, w23, 10 - ldr x1, [x0,3616] + str x25, [sp, 80] + add x19, x19, 1712 + adrp x22, .LANCHOR0 + adrp x23, .LC166 + ldr x1, [x0, 3608] + add x22, x22, :lo12:.LANCHOR0 + ldr x0, [x0, 3656] + add x23, x23, :lo12:.LC166 + lsl w25, w24, 10 mov w20, 0 - ldr x0, [x0,3664] - add x22, x22, :lo12:.LC166 - str x1, [x19,8] - add x24, x24, :lo12:.LC167 - str x0, [x19,16] -.L3422: - adrp x0, .LANCHOR0+2546 - ldrh w0, [x0,#:lo12:.LANCHOR0+2546] + stp x1, x0, [x19, 8] +.L3363: + ldrh w0, [x22, 2546] cmp w20, w0 - bge .L3428 - mov w1, 1 - orr w0, w20, w25 - mov w2, w1 - str w0, [x19,4] - mov x0, x19 - bl FlashReadPages - ldr x0, [x19,8] - mov w1, w23 - ldr x7, [x19,16] - ldr w0, [x0] - str w0, [sp] - mov x0, x22 - ldr w4, [x7] - ldr w5, [x7,4] - ldr w6, [x7,8] - ldr w2, [x19] - ldr w3, [x19,4] - ldr w7, [x7,12] - bl printk - ldr x0, [x19,16] - ldr w0, [x0] - cmn w0, #1 - beq .L3423 - add x1, x21, :lo12:.LANCHOR2 - mov x0, x24 - mov w2, 4 - mov w3, 768 - ldr x1, [x1,3616] - bl rknand_print_hex -.L3423: - add w20, w20, 1 - sxth w20, w20 - b .L3422 -.L3428: - 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] + blt .L3365 + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x29, x30, [sp, 16] + ldr x25, [sp, 80] add sp, sp, 96 ret +.L3365: + orr w0, w20, w25 + mov w2, 1 + str w0, [x19, 4] + mov w1, w2 + mov x0, x19 + bl FlashReadPages + ldp x1, x0, [x19, 8] + ldr w1, [x1] + str w1, [sp] + mov w1, w24 + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x23 + ldp w2, w3, [x19] + bl printk + ldr x0, [x19, 16] + ldr w0, [x0] + cmn w0, #1 + beq .L3364 + add x0, x21, :lo12:.LANCHOR2 + mov w3, 768 + mov w2, 4 + ldr x1, [x0, 3608] + adrp x0, .LC167 + add x0, x0, :lo12:.LC167 + bl rknand_print_hex +.L3364: + add w20, w20, 1 + sxth w20, w20 + b .L3363 .size FtlDumpSysBlock, .-FtlDumpSysBlock .align 2 .global dump_map_info .type dump_map_info, %function dump_map_info: - sub sp, sp, #128 - stp x29, x30, [sp,16] + sub sp, sp, #112 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] + stp x19, x20, [sp, 32] adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x21, x22, [sp,48] - stp x27, x28, [sp,96] - adrp x23, .LC168 - mov w25, 56 - ldrh w21, [x0,2480] - adrp x24, .LANCHOR2 - mov w26, 4 - add x23, x23, :lo12:.LC168 -.L3430: - add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x2,2482] - cmp w0, w21 - bls .L3443 - mov x22, 0 - ldrh w5, [x2,2472] - ldrh w4, [x2,2556] - mov w27, w22 - mov x20, x2 -.L3439: - cmp w5, w22, uxth - bls .L3444 - add x0, x20, 2504 - mov w1, w21 - str x4, [x29,96] - str x5, [x29,104] - ldrb w0, [x0,x22] - bl V2P_block - uxth w28, w0 - bl FtlBbmIsBadBlock - ldr x5, [x29,104] - ldr x4, [x29,96] - cbnz w0, .L3431 - add x3, x24, :lo12:.LANCHOR2 - lsl w28, w28, 10 - umull x0, w27, w25 - mul w2, w27, w4 - ldr x1, [x3,3592] - add w27, w27, 1 - add x1, x1, x0 - uxth w27, w27 - sdiv w2, w2, w26 - str w28, [x1,4] - ldr x1, [x3,3592] - add x0, x1, x0 - ldr x1, [x3,1400] - str x1, [x0,8] - ldr x1, [x3,1408] - add x2, x1, w2, sxtw 2 - str x2, [x0,16] -.L3431: - add x22, x22, 1 - b .L3439 -.L3444: - cbz w27, .L3434 - add x0, x24, :lo12:.LANCHOR2 - mov w1, w27 - mov w2, 1 - mov x20, 0 - adrp x22, .LANCHOR2 - mov x28, 56 - ldr x0, [x0,3592] - bl FlashReadPages -.L3435: - cmp w27, w20, uxth - bls .L3434 - add x0, x22, :lo12:.LANCHOR2 - ldr x3, [x0,3592] - madd x3, x20, x28, x3 - add x20, x20, 1 - ldr x7, [x3,8] - ldr x6, [x3,16] - ldr w2, [x3,4] - ldr w0, [x7,4] - str w0, [sp] - ubfx x1, x2, 10, 16 - mov x0, x23 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w7, [x7] - ldr w6, [x6,12] - bl printk - b .L3435 -.L3434: - add w21, w21, 1 - uxth w21, w21 - b .L3430 -.L3443: - adrp x20, .LANCHOR4 - adrp x23, .LC112 - add x20, x20, :lo12:.LANCHOR4 + add x20, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 64] + stp x21, x22, [sp, 48] + adrp x23, .LANCHOR2 + stp x25, x26, [sp, 80] + mov x21, x19 + stp x27, x28, [sp, 96] + add x24, x20, 2504 + add x26, x23, :lo12:.LANCHOR2 + ldrh w22, [x20, 2480] +.L3371: + ldrh w0, [x20, 2482] + cmp w0, w22 + bhi .L3377 + adrp x19, .LANCHOR4 + add x19, x19, :lo12:.LANCHOR4 + add x19, x19, 1712 mov w22, 0 - adrp x27, .LANCHOR2 - add x20, x20, 1704 - add x23, x23, :lo12:.LC112 -.L3438: - add x21, x27, :lo12:.LANCHOR2 adrp x26, .LANCHOR2 - ldrh w0, [x21,3864] +.L3378: + add x20, x26, :lo12:.LANCHOR2 + ldrh w0, [x20, 3856] cmp w22, w0 - bge .L3441 + bge .L3381 + adrp x23, .LC112 sbfiz x24, x22, 1, 32 - mov w21, 0 -.L3442: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,2546] - cmp w21, w0 - bge .L3445 - add x25, x26, :lo12:.LANCHOR2 - mov w1, 1 - mov w2, w1 - ldr x0, [x25,3720] - ldrh w0, [x0,x24] - orr w0, w21, w0, lsl 10 - str w0, [x20,4] - mov x0, x20 - add w21, w21, 1 + mov w20, 0 + add x23, x23, :lo12:.LC112 + b .L3382 +.L3373: + ldrb w0, [x24, x5] + mov w1, w22 + bl V2P_block + and w4, w0, 65535 + bl FtlBbmIsBadBlock + cbnz w0, .L3372 + umull x2, w19, w7 + ldr x0, [x26, 3584] + lsl w4, w4, 10 + add x0, x0, x2 + str w4, [x0, 4] + ldr x1, [x26, 3584] + ldr x0, [x26, 1392] + add x1, x1, x2 + ldr x2, [x26, 1400] + str x0, [x1, 8] + mul w0, w19, w8 + add w19, w19, 1 + and w19, w19, 65535 + sdiv w0, w0, w6 + add x0, x2, w0, sxtw 2 + str x0, [x1, 16] +.L3372: + add x5, x5, 1 +.L3379: + cmp w9, w5, uxth + bhi .L3373 + cbnz w19, .L3374 +.L3376: + add w22, w22, 1 + and w22, w22, 65535 + b .L3371 +.L3374: + ldr x0, [x26, 3584] + mov w1, w19 + mov w2, 1 + adrp x27, .LC168 + add x28, x23, :lo12:.LANCHOR2 + add x27, x27, :lo12:.LC168 + mov x25, 0 bl FlashReadPages - sxth w21, w21 - ldr x0, [x20,8] - ldr x1, [x25,3720] - ldr x7, [x20,16] - ldr w2, [x0] - ldrh w1, [x1,x24] - str w2, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x23 - ldr w4, [x7] - ldr w5, [x7,4] - ldr w6, [x7,8] - ldr w2, [x20] - ldr w3, [x20,4] - ldr w7, [x7,12] + mov w0, 56 + umull x19, w19, w0 +.L3375: + ldr x0, [x28, 3584] + add x0, x0, x25 + add x25, x25, 56 + ldr x1, [x0, 16] + ldr w2, [x0, 4] + ldr x0, [x0, 8] + ldr w3, [x0, 4] + str w3, [sp] + ldr w7, [x0] + mov x0, x27 + ldp w3, w4, [x1] + ldp w5, w6, [x1, 8] + ubfx x1, x2, 10, 16 bl printk - b .L3442 -.L3445: + cmp x25, x19 + beq .L3376 + b .L3375 +.L3377: + ldrh w9, [x20, 2472] + mov x5, 0 + ldrh w8, [x20, 2556] + mov w19, 0 + mov w7, 56 + mov w6, 4 + b .L3379 +.L3380: + add x25, x26, :lo12:.LANCHOR2 + mov w2, 1 + mov w1, w2 + ldr x0, [x25, 3712] + ldrh w0, [x0, x24] + orr w0, w20, w0, lsl 10 + str w0, [x19, 4] + mov x0, x19 + bl FlashReadPages + ldp x2, x0, [x19, 8] + add w20, w20, 1 + ldr x1, [x25, 3712] + sxth w20, w20 + ldr w3, [x2, 4] + ldrh w1, [x1, x24] + str w3, [sp, 8] + ldr w2, [x2] + str w2, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x23 + ldp w2, w3, [x19] + bl printk +.L3382: + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 2546] + cmp w20, w0 + blt .L3380 add w22, w22, 1 sxth w22, w22 - b .L3438 -.L3441: - add x19, x19, :lo12:.LANCHOR0 - ldr x1, [x21,3720] - adrp x0, .LC169 + b .L3378 +.L3381: + add x21, x21, :lo12:.LANCHOR0 + ldr x1, [x20, 3712] mov w2, 2 + adrp x0, .LC169 add x0, x0, :lo12:.LC169 - ldr w3, [x19,2572] + ldr w3, [x21, 2572] bl rknand_print_hex - ldr x1, [x21,3760] + ldrh w3, [x21, 2580] + mov w2, 4 + ldr x1, [x20, 3752] adrp x0, .LC170 - ldrh w3, [x19,2580] add x0, x0, :lo12:.LC170 - mov w2, 4 bl rknand_print_hex - ldr x1, [x21,3768] + ldrh w3, [x21, 2580] + mov w2, 4 + ldr x1, [x20, 3760] adrp x0, .LC171 - ldrh w3, [x19,2580] add x0, x0, :lo12:.LC171 - mov w2, 4 bl rknand_print_hex - 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, 128 + 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, 112 ret .size dump_map_info, .-dump_map_info .align 2 @@ -22149,495 +21750,470 @@ dump_map_info: .type flash_boot_enter_slc_mode, %function flash_boot_enter_slc_mode: adrp x1, .LANCHOR0+2392 - uxtb w0, w0 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr w2, [x1,#:lo12:.LANCHOR0+2392] + ldr w2, [x1, #:lo12:.LANCHOR0+2392] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 - bne .L3446 + bne .L3388 + stp x29, x30, [sp, -16]! + and w0, w0, 255 + add x29, sp, 0 bl flash_enter_slc_mode -.L3446: ldp x29, x30, [sp], 16 ret +.L3388: + ret .size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode .align 2 .global flash_boot_exit_slc_mode .type flash_boot_exit_slc_mode, %function flash_boot_exit_slc_mode: adrp x1, .LANCHOR0+2392 - uxtb w0, w0 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr w2, [x1,#:lo12:.LANCHOR0+2392] + ldr w2, [x1, #:lo12:.LANCHOR0+2392] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 - bne .L3448 + bne .L3394 + stp x29, x30, [sp, -16]! + and w0, w0, 255 + add x29, sp, 0 bl flash_exit_slc_mode -.L3448: ldp x29, x30, [sp], 16 ret +.L3394: + ret .size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode .align 2 .global write_idblock .type write_idblock, %function write_idblock: - stp x29, x30, [sp, -304]! + stp x29, x30, [sp, -240]! add x29, sp, 0 - stp x25, x26, [sp,64] - adrp x25, .LANCHOR0 - stp x19, x20, [sp,16] + stp x23, x24, [sp, 48] + adrp x24, .LANCHOR0 + stp x19, x20, [sp, 16] mov w19, w0 - add x0, x25, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] + add x0, x24, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] mov x22, x1 + stp x27, x28, [sp, 80] mov x23, x2 - ldr x1, [x0,88] - ldr w21, [x0,76] + ldr x1, [x0, 88] + ldr w20, [x0, 76] mov w0, 59392 movk w0, 0x3, lsl 16 - ldrb w20, [x1,9] + ldrb w21, [x1, 9] bl ftl_malloc - mov x27, x0 - mov w0, -1 - cbz x27, .L3493 + cbz x0, .L3421 add w19, w19, 511 + mov x26, x0 lsr w19, w19, 9 cmp w19, 8 - bls .L3475 + bls .L3422 + mov w0, -1 cmp w19, 500 - bhi .L3493 - b .L3452 -.L3475: - mov w19, 8 -.L3452: + bhi .L3397 +.L3399: ldr w2, [x22] mov w1, 35899 movk w1, 0xfcdc, lsl 16 mov w0, -1 cmp w2, w1 - bne .L3493 - mul w21, w20, w21 - mov w3, 0 + bne .L3397 + mul w21, w21, w20 + add x3, x22, 253952 + add x3, x3, 1532 mov w2, 63871 + and w21, w21, 65535 mov w4, 4097 - uxth w21, w21 add w0, w21, w0 add w0, w0, w19 udiv w0, w0, w21 - str w0, [x29,216] - add x0, x22, 253952 - add x0, x0, 1532 -.L3456: - ldr w1, [x0] - cbnz w1, .L3453 - ldr w1, [x22,w3,uxtw 2] - add w3, w3, 1 - cmp w3, w4 + str w0, [x29, 168] + mov w0, 0 +.L3403: + ldr w1, [x3] + cbnz w1, .L3400 + ldr w1, [x22, w0, uxtw 2] + add w0, w0, 1 + str w1, [x3, 512] + cmp w0, w4 sub w2, w2, #1 - str w1, [x0,512] - csel w3, w3, wzr, cc + csel w0, w0, wzr, cc + sub x3, x3, #4 cmp w2, 4096 - sub x0, x0, #4 - bne .L3456 - b .L3455 -.L3453: + bne .L3403 +.L3402: + add x20, x24, :lo12:.LANCHOR0 + mov w3, 5 + mov w2, 4 + mov x1, x23 + adrp x0, .LC173 + add x0, x0, :lo12:.LC173 + bl rknand_print_hex + adrp x25, .LANCHOR4 + ldrb w2, [x20, 73] + adrp x0, .LC174 + ldr w1, [x22, 512] + add x0, x0, :lo12:.LC174 + bl printk + add x0, x25, :lo12:.LANCHOR4 + ldrh w3, [x20, 202] + mov w1, w19 + mov w2, w19 + ldr w4, [x0, 1644] + adrp x0, .LC175 + add x0, x0, :lo12:.LC175 + bl printk + str x25, [x29, 160] + ldrb w0, [x20, 73] + ldr w1, [x22, 512] + cmp w1, w0 + bls .L3404 + str w0, [x22, 512] +.L3404: + lsl w0, w19, 7 + add x28, x24, :lo12:.LANCHOR0 + str w0, [x29, 140] + mov x20, 0 + add x0, x28, 208 + str wzr, [x29, 172] + str x0, [x29, 152] +.L3420: + ldr w1, [x23, x20, lsl 2] + ldrb w0, [x28, 73] + str w20, [x29, 136] + cmp w1, w0 + bcs .L3405 + ldr x0, [x29, 160] + add x0, x0, :lo12:.LANCHOR4 + ldr w0, [x0, 1644] + cmp w1, w0 + bcc .L3405 + ldr w0, [x29, 168] + cmp w20, 0 + ccmp w0, 1, 0, ne + bls .L3406 + sub w0, w20, #1 + ldr w0, [x23, x0, lsl 2] + add w0, w0, 1 + cmp w1, w0 + beq .L3405 +.L3406: + mov x2, 512 + mov w1, 0 + mov x0, x26 + bl memset + ldr w24, [x23, x20, lsl 2] + mov w2, w19 + ldr x0, [x28, 88] + ldr w25, [x28, 76] + mul w24, w21, w24 + ldrb w27, [x0, 9] + adrp x0, .LC176 + mov w1, w24 + add x0, x0, :lo12:.LC176 + bl printk + mov w0, 0 + bl flash_boot_enter_slc_mode + mul w25, w25, w27 + udiv w1, w24, w27 + mov w2, 0 + and w25, w25, 65535 + mov w0, 0 + bl FlashEraseBlock + cmp w25, w19 + bcs .L3425 + add w1, w24, w25 + mov w2, 0 + mov w0, 0 + bl FlashEraseBlock + mov w1, 2 +.L3407: + mov w0, 0 + str w1, [x29, 144] + bl flash_boot_exit_slc_mode + ldr x0, [x28, 88] + mov w5, 0 + ldr w1, [x29, 144] + mov w10, 1073741823 + udiv w8, w24, w25 + ldrh w4, [x0, 10] + ldrb w0, [x0, 12] + msub w8, w8, w25, w24 + mov x25, x22 + lsl w4, w4, 2 + mul w4, w4, w1 + sdiv w4, w4, w0 + sub w0, w24, w8 + str w0, [x29, 144] +.L3408: + cmp w4, w5 + bhi .L3412 + mov w1, w24 + mov w3, 0 + mov w2, w19 + adrp x0, .LC177 + add x0, x0, :lo12:.LC177 + bl printk + ldr x0, [x28, 88] + mov w2, w19 + ldr w25, [x28, 76] + ldr w24, [x23, x20, lsl 2] + ldrb w5, [x0, 9] + adrp x0, .LC178 + str w5, [x29, 144] + add x0, x0, :lo12:.LC178 + mul w24, w21, w24 + mul w25, w25, w5 + mov w1, w24 + bl printk + and w25, w25, 65535 + ldr w5, [x29, 144] + ldr x1, [x29, 160] + mov x7, x26 + mov w4, 0 + mov w9, 4 + udiv w27, w24, w25 + add x10, x1, :lo12:.LANCHOR4 + msub w27, w27, w25, w24 + sub w8, w24, w27 + mul w0, w27, w5 + ubfx x0, x0, 2, 2 +.L3413: + cmp w4, w19 + bcc .L3415 + mov w1, w24 + mov w3, 0 + mov w2, w19 + adrp x0, .LC179 + add x0, x0, :lo12:.LC179 + bl printk + mov x1, x26 + mov x0, x22 + mov x24, 0 +.L3416: + ldr w2, [x29, 140] + cmp w24, w2 + bcc .L3418 + ldr w0, [x29, 172] + add w0, w0, 1 + str w0, [x29, 172] + b .L3405 +.L3422: + mov w19, 8 + b .L3399 +.L3400: adrp x0, .LC172 add x0, x0, :lo12:.LC172 bl printk -.L3455: - adrp x0, .LC173 - mov w3, 5 - add x20, x25, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC173 - mov x1, x23 - mov w2, 4 - adrp x24, .LANCHOR4 - bl rknand_print_hex - ldr w1, [x22,512] - adrp x0, .LC174 - ldrb w2, [x20,73] - add x0, x0, :lo12:.LC174 - bl printk - add x4, x24, :lo12:.LANCHOR4 - adrp x0, .LC175 - ldrh w3, [x20,202] - mov w1, w19 - add x0, x0, :lo12:.LC175 - mov w2, w19 - ldr w4, [x4,1636] - bl printk - str x24, [x29,224] - ldrb w0, [x20,73] - ldr w1, [x22,512] - cmp w1, w0 - bls .L3457 - str w0, [x22,512] -.L3457: - lsl w0, w19, 7 - str w0, [x29,204] - adrp x0, .LC176 - mov x20, 0 - add x0, x0, :lo12:.LC176 - str x0, [x29,192] - adrp x0, .LC177 - str w20, [x29,236] - add x0, x0, :lo12:.LC177 - str x0, [x29,184] - adrp x0, .LC178 - add x0, x0, :lo12:.LC178 - str x0, [x29,176] -.L3473: - add x0, x25, :lo12:.LANCHOR0 - ldr w1, [x23,x20,lsl 2] - str w20, [x29,232] - ldrb w0, [x0,73] - cmp w1, w0 - bcs .L3458 - ldr x0, [x29,224] - add x0, x0, :lo12:.LANCHOR4 - ldr w0, [x0,1636] - cmp w1, w0 - bcc .L3458 - ldr w0, [x29,216] - cmp w0, 1 - cset w0, hi - str w0, [x29,220] - uxtw x0, w20 - cbz w0, .L3459 - ldr w0, [x29,220] - cbz w0, .L3459 - uxtw x0, w20 - sub w0, w0, #1 - ldr w0, [x23,x0,lsl 2] - add w0, w0, 1 - cmp w1, w0 - beq .L3458 -.L3459: - mov w1, 0 - mov x2, 512 - mov x0, x27 - bl memset - ldr w24, [x23,x20,lsl 2] - add x0, x25, :lo12:.LANCHOR0 - mov w2, w19 - mul w24, w21, w24 - ldr x1, [x0,88] - ldr w26, [x0,76] - ldr x0, [x29,192] - ldrb w28, [x1,9] - mov w1, w24 - bl printk - mov w0, 0 - mul w26, w26, w28 - bl flash_boot_enter_slc_mode - udiv w1, w24, w28 - mov w2, 0 - mov w0, 0 - uxth w26, w26 - bl FlashEraseBlock - cmp w19, w26 - mov w2, 1 - bls .L3460 - mov w2, 0 - mov w0, 0 - add w1, w24, w26 - bl FlashEraseBlock - mov w2, 2 -.L3460: - mov w0, 0 - str x2, [x29,208] - bl flash_boot_exit_slc_mode - add x4, x25, :lo12:.LANCHOR0 - ldr x2, [x29,208] - udiv w8, w24, w26 - mov w6, 0 - mov w10, 1073741823 - mov w11, 61424 - ldr x1, [x4,88] - ldrh w0, [x1,10] - ldrb w5, [x1,12] + b .L3402 +.L3425: + mov w1, 1 + b .L3407 +.L3412: + add w1, w8, w5 + lsr w1, w1, 2 + cbz w1, .L3409 + ldr x0, [x29, 152] + add w2, w1, 1 + ldrb w3, [x28, 204] + ldrh w0, [x0, w2, sxtw 1] + cbz w3, .L3410 + ldr w3, [x28, 2392] + mov w6, 12336 + movk w6, 0x5638, lsl 16 + cmp w3, w6 + csel w0, w0, w2, ne +.L3410: + add w0, w0, w10 lsl w0, w0, 2 - msub w8, w8, w26, w24 - mul w0, w0, w2 - mov x26, x22 - sdiv w5, w0, w5 - sub w0, w24, w8 - str w0, [x29,208] -.L3461: - cmp w6, w5 - bcs .L3505 - add w0, w6, w8 - lsr w0, w0, 2 - uxth w1, w0 - and w0, w0, 65535 - cbz w1, .L3462 - add w2, w0, 1 - add x1, x4, 208 - ldrb w3, [x4,204] - ldrh w1, [x1,w2,sxtw 1] - cbz w3, .L3463 - ldr w7, [x4,2392] - mov w3, 12336 - movk w3, 0x5638, lsl 16 - cmp w7, w3 - csel w1, w1, w2, ne -.L3463: - add w1, w1, w10 - lsl w1, w1, 2 - str w1, [x29,240] -.L3462: - add x1, x4, 208 - str w11, [x29,244] - ldrh w7, [x1,w0,sxtw 1] - ldrb w1, [x4,204] - cbz w1, .L3464 - ldr w2, [x4,2392] - mov w1, 12336 - movk w1, 0x5638, lsl 16 - cmp w2, w1 - csel w7, w7, w0, ne -.L3464: - ldr w0, [x29,208] - ldrb w12, [x4,2464] - str x11, [x29,104] - madd w2, w7, w28, w0 - ldr x0, [x29,224] - str x10, [x29,112] + str w0, [x29, 176] +.L3409: + mov w0, 61424 + str w0, [x29, 180] + ldr x0, [x29, 152] + ldrh w7, [x0, w1, sxtw 1] + ldrb w0, [x28, 204] + cbz w0, .L3411 + ldr w0, [x28, 2392] + mov w2, 12336 + movk w2, 0x5638, lsl 16 + cmp w0, w2 + csel w7, w7, w1, ne +.L3411: + ldr w0, [x29, 144] + ldrb w11, [x28, 2464] + stp w10, w5, [x29, 104] + stp w8, w4, [x29, 112] + madd w1, w27, w7, w0 + ldr x0, [x29, 160] + stp w7, w1, [x29, 120] add x0, x0, :lo12:.LANCHOR4 - str x6, [x29,120] - str x8, [x29,128] - str x5, [x29,136] - ldrb w0, [x0,1642] - str x7, [x29,144] - str x12, [x29,160] - str x2, [x29,152] - str x4, [x29,168] + str w11, [x29, 128] + ldrb w0, [x0, 1650] bl FlashBchSel mov w0, 0 bl flash_boot_enter_slc_mode - ldr x4, [x29,168] - add x3, x29, 240 - ldr x2, [x29,152] - ldr x0, [x4,88] - ldrb w1, [x0,9] + ldr x0, [x28, 88] + mov x2, x25 + ldr w1, [x29, 124] + add x3, x29, 176 + add x25, x25, 2048 + ldrb w0, [x0, 9] + udiv w1, w1, w0 mov w0, 0 - udiv w1, w2, w1 - mov x2, x26 - add x26, x26, 2048 bl FlashProgPage mov w0, 0 bl flash_boot_exit_slc_mode - ldr x12, [x29,160] - mov w0, w12 + ldr w11, [x29, 128] + mov w0, w11 bl FlashBchSel - ldr w1, [x29,208] - mov w0, 0 - ldr x7, [x29,144] - udiv w1, w1, w28 + ldr w0, [x29, 144] + ldr w7, [x29, 120] add w2, w7, 1 + udiv w1, w0, w27 + mov w0, 0 bl FlashPageProgMsbFFData - ldr x6, [x29,120] - ldr x11, [x29,104] - add w6, w6, 4 - ldr x10, [x29,112] - ldr x8, [x29,128] - uxth w6, w6 - ldr x5, [x29,136] - ldr x4, [x29,168] - b .L3461 -.L3505: - ldr x0, [x29,184] - mov w1, w24 - mov w2, w19 - mov w3, 0 - add x24, x25, :lo12:.LANCHOR0 - bl printk - ldr w5, [x23,x20,lsl 2] - mov w2, w19 - ldr x0, [x24,88] - ldr w26, [x24,76] - mul w5, w21, w5 - ldrb w7, [x0,9] - ldr x0, [x29,176] - mov w1, w5 - str x7, [x29,168] - mul w26, w26, w7 - str x5, [x29,208] - bl printk - ldr x5, [x29,208] - mov w12, 0 - uxth w26, w26 - ldr x7, [x29,168] - mov w11, 4 - udiv w8, w5, w26 - msub w8, w8, w26, w5 - mov x26, x27 - sub w10, w5, w8 - mul w0, w8, w7 - ubfx x0, x0, 2, 2 -.L3466: - cmp w12, w19 - bcs .L3506 - add w4, w12, w8 - add x1, x24, 208 - ubfx x4, x4, 2, 16 - sub w6, w11, w0 - uxth w6, w6 - ldrh w3, [x1,w4,sxtw 1] - ldrb w1, [x24,204] - cbz w1, .L3467 - ldr w2, [x24,2392] - mov w1, 12336 - movk w1, 0x5638, lsl 16 - cmp w2, w1 - csel w3, w3, w4, ne -.L3467: - add w0, w0, w10 - ldrb w4, [x24,2464] - str x11, [x29,112] - madd w28, w3, w7, w0 - ldr x0, [x24,88] - str x12, [x29,120] - str x6, [x29,128] - ldrb w1, [x0,9] - ldr x0, [x29,224] - str x8, [x29,136] - add x0, x0, :lo12:.LANCHOR4 - str x5, [x29,144] - str x10, [x29,152] - str x7, [x29,160] - ldrb w0, [x0,1642] - str x4, [x29,208] - str x1, [x29,168] + ldp w10, w5, [x29, 104] + ldp w8, w4, [x29, 112] + add w5, w5, 4 + and w5, w5, 65535 + b .L3408 +.L3415: + add w2, w27, w4 + ldr x1, [x29, 152] + ldrb w3, [x28, 204] + lsr w2, w2, 2 + sub w25, w9, w0 + and w25, w25, 65535 + ldrh w1, [x1, w2, sxtw 1] + cbz w3, .L3414 + ldr w3, [x28, 2392] + mov w6, 12336 + movk w6, 0x5638, lsl 16 + cmp w3, w6 + csel w1, w1, w2, ne +.L3414: + add w0, w0, w8 + ldrb w11, [x28, 2464] + stp w9, w4, [x29, 100] + stp w8, w5, [x29, 108] + madd w1, w5, w1, w0 + ldr x0, [x28, 88] + str x10, [x29, 128] + str w11, [x29, 124] + str x7, [x29, 144] + ldrb w12, [x0, 9] + ldrb w0, [x10, 1650] + stp w1, w12, [x29, 116] bl FlashBchSel mov w0, 0 bl flash_boot_enter_slc_mode - ldr x1, [x29,168] - mov x2, x26 + ldp w1, w12, [x29, 116] mov x3, 0 + ldr x7, [x29, 144] mov w0, 0 - udiv w1, w28, w1 + udiv w1, w1, w12 + mov x2, x7 bl FlashReadPage mov w0, 0 bl flash_boot_exit_slc_mode - ldr x4, [x29,208] - mov w0, w4 + ldr w11, [x29, 124] + mov w0, w11 bl FlashBchSel - ldr x6, [x29,128] - ldr x12, [x29,120] - ubfiz x0, x6, 9, 16 - ldr x11, [x29,112] - add x26, x26, x0 - add w0, w6, w12 - ldr x8, [x29,136] - uxth w12, w0 - ldr x5, [x29,144] + ldp w9, w4, [x29, 100] + ubfiz x0, x25, 9, 16 + ldr x7, [x29, 144] + add w4, w25, w4 + ldr x10, [x29, 128] + add x7, x7, x0 + and w4, w4, 65535 + ldp w8, w5, [x29, 108] mov w0, 0 - ldr x10, [x29,152] - ldr x7, [x29,160] - b .L3466 -.L3506: - adrp x0, .LC179 - mov w1, w5 - mov w2, w19 - add x0, x0, :lo12:.LC179 - mov w3, 0 - bl printk - mov x2, x27 - mov x1, x22 - mov x0, 0 -.L3469: - ldr w4, [x29,204] - mov w3, w0 - cmp w0, w4 - bcs .L3507 - mov x4, x2 - mov x26, x1 - mov x24, x0 - add x2, x2, 4 - add x0, x0, 1 + b .L3413 +.L3418: + mov x25, x1 + mov x27, x0 + add x2, x24, 1 add x1, x1, 4 - ldr w6, [x4] - ldr w5, [x26] - cmp w6, w5 - beq .L3469 - mov w1, 0 + add x0, x0, 4 + ldr w4, [x25] + ldr w3, [x27] + cmp w4, w3 + beq .L3426 mov x2, 512 - mov x0, x27 - str x4, [x29,168] - str x3, [x29,208] - and x24, x24, -256 + mov w1, 0 + mov x0, x26 bl memset + ldr w4, [x25] + mov w3, w24 + ldr w5, [x27] + and x24, x24, -256 + ldr w2, [x23, x20, lsl 2] lsl x24, x24, 2 - ldr x4, [x29,168] + ldr w1, [x29, 136] adrp x0, .LC180 - ldr w5, [x26] add x0, x0, :lo12:.LC180 - ldr w1, [x29,232] - ldr w4, [x4] - ldr w2, [x23,x20,lsl 2] - ldr x3, [x29,208] bl printk - adrp x0, .LC181 + mov w3, 256 + mov w2, 4 add x1, x22, x24 + adrp x0, .LC181 add x0, x0, :lo12:.LC181 - mov w2, 4 - mov w3, 256 bl rknand_print_hex - adrp x0, .LC182 - add x1, x27, x24 - mov w2, 4 + add x1, x26, x24 mov w3, 256 + mov w2, 4 + adrp x0, .LC182 add x0, x0, :lo12:.LC182 bl rknand_print_hex mov w0, 0 bl flash_boot_enter_slc_mode - ldr w1, [x23,x20,lsl 2] - mov w0, 0 + ldr w1, [x23, x20, lsl 2] mov w2, 0 + mov w0, 0 mul w1, w21, w1 bl FlashEraseBlock - ldr w0, [x29,220] - cbz w0, .L3470 - ldr w1, [x23,x20,lsl 2] - mov w0, 0 + ldr w0, [x29, 168] + cmp w0, 1 + bls .L3417 + ldr w1, [x23, x20, lsl 2] mov w2, 0 + mov w0, 0 madd w1, w1, w21, w21 bl FlashEraseBlock -.L3470: +.L3417: mov w0, 0 bl flash_boot_exit_slc_mode + ldr w1, [x23, x20, lsl 2] adrp x0, .LC183 - ldr w1, [x23,x20,lsl 2] add x0, x0, :lo12:.LC183 bl printk - b .L3458 -.L3507: - ldr w0, [x29,236] - add w0, w0, 1 - str w0, [x29,236] -.L3458: +.L3405: add x20, x20, 1 cmp x20, 5 - bne .L3473 - mov x0, x27 + bne .L3420 + mov x0, x26 bl ftl_free - ldr w0, [x29,236] - cmp w0, wzr + ldr w0, [x29, 172] + cmp w0, 0 csetm w0, eq -.L3493: - 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], 304 +.L3397: + 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 +.L3426: + mov x24, x2 + b .L3416 +.L3421: + mov w0, -1 + b .L3397 .size write_idblock, .-write_idblock .align 2 .global write_loader_lba @@ -22646,769 +22222,730 @@ write_loader_lba: stp x29, x30, [sp, -112]! cmp w0, 64 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] mov w19, w0 + stp x21, x22, [sp, 32] + adrp x20, .LANCHOR4 + stp x23, x24, [sp, 48] mov w21, w1 mov x24, x2 - adrp x20, .LANCHOR5 - bne .L3509 + bne .L3447 ldr w1, [x2] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 - bne .L3509 - add x22, x20, :lo12:.LANCHOR5 + bne .L3447 + add x22, x20, :lo12:.LANCHOR4 mov w0, 1 - strb w0, [x22,1512] + strb w0, [x22, 2032] mov w0, 59392 movk w0, 0x3, lsl 16 bl ftl_malloc - str x0, [x22,1520] mov w2, 59392 mov w1, 0 movk w2, 0x3, lsl 16 + str x0, [x22, 2040] bl ftl_memset - str w19, [x22,1528] -.L3509: - add x23, x20, :lo12:.LANCHOR5 - adrp x0, .LC184 + str w19, [x22, 2048] +.L3447: + add x23, x20, :lo12:.LANCHOR4 ldr w2, [x24] - add x0, x0, :lo12:.LC184 - mov w3, w19 mov w4, w21 - ldr x1, [x23,1520] + mov w3, w19 + adrp x0, .LC184 + add x0, x0, :lo12:.LC184 + ldr x1, [x23, 2040] bl printk - ldrb w0, [x23,1512] - cbz w0, .L3508 + ldrb w0, [x23, 2032] + cbz w0, .L3446 sub w0, w19, #64 - ldr x22, [x23,1520] + ldr x22, [x23, 2040] cmp w0, 499 - bhi .L3511 - mov w3, 564 + bhi .L3449 + mov w2, 564 + sub w2, w2, w19 + cmp w21, w2 ubfiz x0, x0, 9, 25 - sub w3, w3, w19 - add x0, x22, x0 - cmp w3, w21 + csel w2, w21, w2, ls mov x1, x24 - csel w2, w3, w21, ls lsl w2, w2, 9 + add x0, x22, x0 bl ftl_memcpy - b .L3512 -.L3511: - cmp w19, 563 - bhi .L3522 -.L3512: - add x0, x20, :lo12:.LANCHOR5 - ldr w1, [x0,1528] - cmp w1, w19 - beq .L3520 - strb wzr, [x0,1512] - cbz x22, .L3521 +.L3450: + add x0, x20, :lo12:.LANCHOR4 + ldr w1, [x0, 2048] + cmp w19, w1 + beq .L3459 + strb wzr, [x0, 2032] + cbz x22, .L3460 mov x0, x22 bl ftl_free -.L3521: - add x0, x20, :lo12:.LANCHOR5 - str xzr, [x0,1520] -.L3520: - add x20, x20, :lo12:.LANCHOR5 - add w19, w19, w21 - str w19, [x20,1528] - b .L3508 -.L3522: - ldr w2, [x23,1528] - mov w0, 500 - sub w2, w2, #64 - cmp w2, 500 - csel w2, w2, w0, ls - adrp x0, .LANCHOR0+88 - ldr x0, [x0,#:lo12:.LANCHOR0+88] - ldrb w0, [x0,9] - cmp w0, 4 - beq .L3523 - mov w0, 2 - str w0, [x29,72] - mov w0, 3 - str w0, [x29,76] - mov w0, 4 - str w0, [x29,80] - mov w0, 5 - str w0, [x29,84] - mov w0, 6 - str w0, [x29,88] - b .L3514 -.L3523: - mov x3, 0 -.L3513: - cmp w2, 256 - add x0, x29, 72 - bls .L3515 - lsl w1, w3, 1 - str w1, [x0,x3,lsl 2] - b .L3516 -.L3515: - str w3, [x0,x3,lsl 2] -.L3516: - add x3, x3, 1 - cmp x3, 5 - bne .L3513 -.L3514: - add x0, x22, 253952 - mov w3, 63872 - add x0, x0, 1536 -.L3519: - ldr w1, [x0] - cbz w1, .L3517 - add w3, w3, 128 - lsl w0, w3, 2 - b .L3518 -.L3517: - sub w3, w3, #1 - sub x0, x0, #4 - cmp w3, 4096 - bne .L3519 - lsl w0, w2, 9 -.L3518: +.L3460: + add x0, x20, :lo12:.LANCHOR4 + str xzr, [x0, 2040] + b .L3459 +.L3449: + cmp w19, 563 + bls .L3450 + ldr w0, [x23, 2048] + mov w1, 500 + sub w0, w0, #64 + cmp w0, 500 + csel w0, w0, w1, ls + adrp x1, .LANCHOR0+88 + ldr x1, [x1, #:lo12:.LANCHOR0+88] + ldrb w1, [x1, 9] + cmp w1, 4 + beq .L3451 + mov w1, 2 + str w1, [x29, 72] + mov w1, 3 + str w1, [x29, 76] + mov w1, 4 + str w1, [x29, 80] + mov w1, 5 + str w1, [x29, 84] + mov w1, 6 + str w1, [x29, 88] +.L3452: + add x2, x22, 253952 + mov w1, 63872 + add x2, x2, 1536 +.L3458: + ldr w3, [x2] + cbz w3, .L3456 + add w0, w1, 128 + lsl w0, w0, 2 +.L3457: mov x1, x22 + add x22, x20, :lo12:.LANCHOR4 add x2, x29, 72 - add x22, x20, :lo12:.LANCHOR5 bl write_idblock - ldr x0, [x22,1520] - strb wzr, [x22,1512] + ldr x0, [x22, 2040] + strb wzr, [x22, 2032] bl ftl_free - str xzr, [x22,1520] - b .L3520 -.L3508: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + str xzr, [x22, 2040] +.L3459: + add x20, x20, :lo12:.LANCHOR4 + add w19, w19, w21 + str w19, [x20, 2048] +.L3446: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 112 ret +.L3451: + add x2, x29, 72 + mov x1, 0 +.L3455: + cmp w0, 256 + bls .L3453 + lsl w3, w1, 1 + str w3, [x2, x1, lsl 2] +.L3454: + add x1, x1, 1 + cmp x1, 5 + bne .L3455 + b .L3452 +.L3453: + str w1, [x2, x1, lsl 2] + b .L3454 +.L3456: + sub w1, w1, #1 + sub x2, x2, #4 + cmp w1, 4096 + bne .L3458 + lsl w0, w0, 9 + b .L3457 .size write_loader_lba, .-write_loader_lba .align 2 .global FtlWrite .type FtlWrite, %function FtlWrite: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x21, [sp,32] - uxtb w21, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x21, x22, [sp, 32] sub w0, w1, #64 - stp x19, x20, [sp,16] - cmp w0, 1983 mov w19, w1 - mov w20, w2 - bhi .L3533 - cbnz w21, .L3533 - mov w0, w1 - mov w1, w2 + mov w21, w2 + mov x22, x3 + cmp w0, 1983 + bhi .L3471 + cbnz w20, .L3471 mov x2, x3 - str x3, [x29,56] + mov w1, w21 + mov w0, w19 bl write_loader_lba - ldr x3, [x29,56] -.L3533: +.L3471: + mov x3, x22 + mov w2, w21 mov w1, w19 - mov w2, w20 - mov w0, w21 + mov w0, w20 bl ftl_write - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret .size FtlWrite, .-FtlWrite .align 2 .global rknand_sys_storage_ioctl .type rknand_sys_storage_ioctl, %function rknand_sys_storage_ioctl: - sub sp, sp, #528 + sub sp, sp, #560 mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - stp x29, x30, [sp, -32]! + stp x29, x30, [sp] add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, w1 mov x20, x2 - beq .L3542 - mov w0, 27688 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L3543 + beq .L3475 + bhi .L3476 mov w0, 25602 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3544 - mov w0, 25602 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L3545 + beq .L3477 + bhi .L3478 mov w0, 25364 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3546 - mov w0, 25601 - movk w0, 0x4004, lsl 16 + beq .L3479 + add w0, w0, 237 cmp w1, w0 - beq .L3547 - b .L3578 -.L3545: + beq .L3480 +.L3510: + mov x19, -22 + b .L3473 +.L3478: mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L3548 - mov w0, 25727 - movk w0, 0x4004, lsl 16 + beq .L3481 + add w0, w0, 1 cmp w1, w0 - beq .L3549 + beq .L3482 mov w0, 25603 movk w0, 0x4004, lsl 16 cmp w1, w0 - bne .L3578 - b .L3600 -.L3543: - mov w0, 30224 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L3551 - mov w0, 30224 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L3552 - mov w0, 27698 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L3542 - mov w0, 27708 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L3542 - b .L3578 -.L3552: - mov w0, 30226 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L3551 - mov w0, 30226 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bcc .L3553 - mov w0, 30227 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L3553 - b .L3578 -.L3547: - adrp x0, .LC185 - add x0, x0, :lo12:.LC185 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbz x0, .L3554 -.L3560: - adrp x0, .LC186 - add x0, x0, :lo12:.LC186 - bl printk - b .L3597 -.L3554: - ldr w1, [x29,40] - mov w0, 21060 - movk w0, 0x4b4d, lsl 16 - cmp w1, w0 - beq .L3555 -.L3557: - mov x19, -1 - b .L3556 -.L3555: - ldr w0, [x29,44] - cmp w0, 512 - bhi .L3557 - adrp x19, .LANCHOR5 - add x0, x29, 40 - add x19, x19, :lo12:.LANCHOR5 - mov x2, 512 - ldr x1, [x19,1536] - bl memcpy - ldr w1, [x19,1544] - mov w0, 5161 - movk w0, 0xc059, lsl 16 - cmp w1, w0 - beq .L3558 - add x0, x29, 104 - mov w1, 0 - mov x2, 128 - str wzr, [x29,48] - str wzr, [x29,52] - bl memset -.L3558: - add x0, x29, 296 - mov w1, 0 - mov x2, 256 - str wzr, [x29,56] - bl memset -.L3592: - mov x0, x20 - add x1, x29, 40 - mov x2, 520 - bl rk_copy_to_user - cbnz x0, .L3597 - b .L3595 -.L3544: - adrp x0, .LC187 - add x0, x0, :lo12:.LC187 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] - mov w0, 21060 - movk w0, 0x4b4d, lsl 16 - cmp w1, w0 - bne .L3557 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L3557 - adrp x1, .LANCHOR5 - mov w2, 5161 - add x1, x1, :lo12:.LANCHOR5 - movk w2, 0xc059, lsl 16 - mov x0, -2 - ldr w3, [x1,1544] - cmp w3, w2 - bne .L3541 - ldr w2, [x29,52] - mov x0, -3 - sub w3, w2, #1 - cmp w3, 127 - bhi .L3541 - ldr x19, [x1,1536] - add x1, x29, 104 - add x0, x19, 64 - str w2, [x19,12] - ldr w2, [x29,52] - bl memcpy - mov w0, 1 - mov x1, x19 - b .L3596 -.L3549: - adrp x0, .LC188 - add x0, x0, :lo12:.LC188 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] - mov w0, 17476 - movk w0, 0x4253, lsl 16 - cmp w1, w0 - bne .L3557 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L3557 - adrp x19, .LANCHOR5 - add x0, x19, :lo12:.LANCHOR5 - ldr w0, [x0,1548] - cbnz w0, .L3561 -.L3564: - mov x0, 0 - b .L3541 -.L3561: - add x0, x19, :lo12:.LANCHOR5 - mov w2, 22867 - movk w2, 0x4453, lsl 16 - ldr x1, [x0,1552] - ldr w3, [x1] - cmp w3, w2 - beq .L3562 - mov w2, 22867 - movk w2, 0x4453, lsl 16 - str w2, [x1] - mov w2, 504 - ldr x1, [x0,1552] - str w2, [x1,4] - ldr x0, [x0,1552] - str wzr, [x0,8] - str wzr, [x0,12] -.L3562: - add x20, x19, :lo12:.LANCHOR5 - mov w0, 0 - ldr x1, [x20,1552] - str wzr, [x1,16] - bl StorageSysDataStore - ldr x0, [x20,1536] - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L3563 - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - str w1, [x0] - mov w1, 504 - ldr x0, [x20,1536] - str w1, [x0,4] - ldr x0, [x20,1536] - str wzr, [x0,8] -.L3563: - add x19, x19, :lo12:.LANCHOR5 - mov w1, 0 - mov x2, 128 - ldr x20, [x19,1536] - add x0, x20, 64 - str wzr, [x20,12] - bl memset - mov w0, 1 - mov x1, x20 - bl StorageSysDataStore - str wzr, [x19,1548] - str wzr, [x19,1544] - b .L3595 -.L3548: - adrp x0, .LC189 - add x0, x0, :lo12:.LC189 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] - mov w0, 20037 - movk w0, 0x4253, lsl 16 - cmp w1, w0 - bne .L3557 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L3557 - adrp x19, .LANCHOR5 - add x0, x19, :lo12:.LANCHOR5 - ldr w1, [x0,1548] - cmp w1, 1 - beq .L3564 - ldr x0, [x0,1552] - mov w1, 22867 - movk w1, 0x4453, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L3565 - mov w1, 22867 - mov w2, 504 - movk w1, 0x4453, lsl 16 - str w1, [x0] - add x0, x19, :lo12:.LANCHOR5 - ldr x1, [x0,1552] - str w2, [x1,4] - ldr x0, [x0,1552] - str wzr, [x0,8] - str wzr, [x0,12] -.L3565: - add x20, x19, :lo12:.LANCHOR5 - mov w0, 1 - ldr x1, [x20,1552] - str w0, [x1,16] - mov w0, 0 - bl StorageSysDataStore - ldr x0, [x20,1536] - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L3566 - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - str w1, [x0] - mov w1, 504 - ldr x0, [x20,1536] - str w1, [x0,4] - ldr x0, [x20,1536] - str wzr, [x0,8] -.L3566: - add x19, x19, :lo12:.LANCHOR5 - mov w1, 0 - mov x2, 128 - ldr x20, [x19,1536] - add x0, x20, 64 - str wzr, [x20,12] - bl memset - mov w0, 1 - mov x1, x20 - bl StorageSysDataStore - mov w0, 1 - str w0, [x19,1548] - b .L3595 -.L3600: + bne .L3510 adrp x0, .LC190 add x0, x0, :lo12:.LC190 bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] + cbnz x0, .L3493 + ldr w1, [x29, 40] mov w0, 20051 movk w0, 0x4144, lsl 16 cmp w1, w0 - bne .L3557 - ldr w2, [x29,44] + bne .L3490 + ldr w2, [x29, 44] cmp w2, 512 - bhi .L3557 - adrp x1, .LANCHOR5 - add x0, x29, 48 - add x1, x1, :lo12:.LANCHOR5 + bhi .L3490 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 uxtw x2, w2 - add x1, x1, 1560 - b .L3598 -.L3542: + add x1, x1, 2080 + add x0, x29, 48 +.L3531: + bl memcpy + b .L3525 +.L3476: + mov w0, 30224 + movk w0, 0x4004, lsl 16 + cmp w1, w0 + beq .L3484 + bhi .L3485 + mov w0, 27698 + movk w0, 0x4004, lsl 16 + cmp w1, w0 + beq .L3475 + add w0, w0, 10 + cmp w1, w0 + bne .L3510 +.L3475: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L3568 + bne .L3500 adrp x0, .LC191 add x0, x0, :lo12:.LC191 - b .L3594 -.L3568: - mov w0, 27708 - movk w0, 0x4004, lsl 16 - cmp w19, w0 - bne .L3570 - adrp x0, .LC192 - add x0, x0, :lo12:.LC192 - b .L3594 -.L3570: - adrp x0, .LC193 - add x0, x0, :lo12:.LC193 -.L3594: +.L3527: bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] + cbnz x0, .L3493 + ldr w1, [x29, 40] mov w0, 17227 movk w0, 0x4c4f, lsl 16 cmp w1, w0 - bne .L3597 + bne .L3530 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 - adrp x0, .LANCHOR5 - bne .L3571 - add x0, x0, :lo12:.LANCHOR5 - add x1, x29, 40 + adrp x0, .LANCHOR4 + bne .L3503 + add x0, x0, :lo12:.LANCHOR4 mov x2, 16 - ldr x0, [x0,1536] - ldr w0, [x0,20] - str w0, [x29,44] - strb w0, [x29,48] + add x1, x29, 40 + ldr x0, [x0, 2056] + ldr w0, [x0, 20] + strb w0, [x29, 48] + str w0, [x29, 44] mov x0, x20 bl rk_copy_to_user - cbz x0, .L3541 - b .L3597 -.L3571: - add x20, x0, :lo12:.LANCHOR5 - ldr w1, [x20,2072] - cmp w1, 10 - bhi .L3597 - ldr x1, [x20,1536] - ldr w2, [x29,44] - ldr w3, [x1,24] - cmp w3, w2 - beq .L3572 - cbz w3, .L3572 - adrp x0, .LC194 - mov w1, w2 - add x0, x0, :lo12:.LC194 - bl printk - ldr w0, [x20,2072] - add w0, w0, 1 - str w0, [x20,2072] -.L3597: - mov x0, -14 - b .L3541 -.L3572: - add x0, x0, :lo12:.LANCHOR5 - str wzr, [x0,2072] - mov w0, 27698 + cbnz x0, .L3530 +.L3494: + mov x19, 0 +.L3473: + mov x0, x19 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp] + add sp, sp, 560 + ret +.L3485: + mov w0, 30226 movk w0, 0x4004, lsl 16 - cmp w19, w0 - bne .L3573 - str wzr, [x1,20] - str wzr, [x1,24] - b .L3574 -.L3573: - mov w0, 1 - str w2, [x1,24] - str w0, [x1,20] -.L3574: - mov w0, 1 - mov x19, -2 - bl StorageSysDataStore - cmn w0, #1 - bne .L3595 - b .L3556 -.L3551: - adrp x0, .LC195 - add x0, x0, :lo12:.LC195 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] - mov w0, 17750 - movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3557 - ldr w2, [x29,44] - cmp w2, 504 - bhi .L3557 - mov w0, 30224 - adrp x1, .LANCHOR5 - movk w0, 0x4004, lsl 16 - uxtw x2, w2 - cmp w19, w0 - add x1, x1, :lo12:.LANCHOR5 - add x0, x29, 48 - bne .L3575 - ldr x1, [x1,2080] - b .L3599 -.L3575: - ldr x1, [x1,2088] -.L3599: - add x1, x1, 8 -.L3598: - bl memcpy - b .L3592 -.L3553: + beq .L3484 + bcc .L3486 + add w0, w0, 1 + cmp w1, w0 + bne .L3510 +.L3486: adrp x0, .LC196 add x0, x0, :lo12:.LC196 bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L3560 - ldr w1, [x29,40] + cbnz x0, .L3493 + ldr w1, [x29, 40] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L3557 - ldr w2, [x29,44] + bne .L3490 + ldr w2, [x29, 44] cmp w2, 504 - bhi .L3557 + bhi .L3490 mov w0, 30225 add w2, w2, 8 movk w0, 0x4004, lsl 16 - cmp w19, w0 - adrp x19, .LANCHOR5 - add x19, x19, :lo12:.LANCHOR5 - bne .L3577 - ldr x0, [x19,2080] add x1, x29, 40 + cmp w19, w0 + adrp x19, .LANCHOR4 + add x19, x19, :lo12:.LANCHOR4 + bne .L3509 + ldr x0, [x19, 2600] bl memcpy mov w0, 2 - ldr x1, [x19,2080] - b .L3596 -.L3577: - ldr x0, [x19,2088] - add x1, x29, 40 - bl memcpy - ldr x1, [x19,2088] - mov w0, 3 -.L3596: - bl StorageSysDataStore - uxtw x19, w0 - b .L3556 -.L3546: - bl rknand_dev_flush -.L3595: - mov x19, 0 -.L3556: - adrp x0, .LC197 + ldr x1, [x19, 2600] + b .L3529 +.L3480: + adrp x0, .LC185 + add x0, x0, :lo12:.LC185 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbz x0, .L3487 +.L3493: + adrp x0, .LC186 + add x0, x0, :lo12:.LC186 + bl printk +.L3530: + mov x19, -14 + b .L3473 +.L3487: + ldr w1, [x29, 40] + mov w0, 21060 + movk w0, 0x4b4d, lsl 16 + cmp w1, w0 + beq .L3488 +.L3490: + mov x19, -1 +.L3489: mov x1, x19 + adrp x0, .LC197 add x0, x0, :lo12:.LC197 bl printk - mov x0, x19 - b .L3541 -.L3578: - mov x0, -22 -.L3541: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - add sp, sp, 528 - ret + b .L3473 +.L3488: + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L3490 + adrp x19, .LANCHOR4 + add x19, x19, :lo12:.LANCHOR4 + mov x2, 512 + add x0, x29, 40 + ldr x1, [x19, 2056] + bl memcpy + ldr w1, [x19, 2064] + mov w0, 5161 + movk w0, 0xc059, lsl 16 + cmp w1, w0 + beq .L3491 + mov x2, 128 + mov w1, 0 + add x0, x29, 104 + stp wzr, wzr, [x29, 48] + bl memset +.L3491: + add x0, x29, 40 + mov x2, 256 + mov w1, 0 + add x0, x0, x2 + str wzr, [x29, 56] + bl memset +.L3525: + mov x2, 520 + add x1, x29, 40 + mov x0, x20 + bl rk_copy_to_user + cbnz x0, .L3530 +.L3528: + mov x19, 0 + b .L3489 +.L3477: + adrp x0, .LC187 + add x0, x0, :lo12:.LC187 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L3493 + ldr w1, [x29, 40] + mov w0, 21060 + movk w0, 0x4b4d, lsl 16 + cmp w1, w0 + bne .L3490 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L3490 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + mov w1, 5161 + movk w1, 0xc059, lsl 16 + ldr w2, [x0, 2064] + cmp w2, w1 + bne .L3511 + ldr w1, [x29, 52] + mov x19, -3 + sub w2, w1, #1 + cmp w2, 127 + bhi .L3473 + ldr x19, [x0, 2056] + add x0, x19, 64 + str w1, [x19, 12] + add x1, x29, 104 + ldr w2, [x29, 52] + bl memcpy + mov x1, x19 + mov w0, 1 +.L3529: + bl StorageSysDataStore + uxtw x19, w0 + b .L3489 +.L3482: + adrp x0, .LC188 + add x0, x0, :lo12:.LC188 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L3493 + ldr w1, [x29, 40] + mov w0, 17476 + movk w0, 0x4253, lsl 16 + cmp w1, w0 + bne .L3490 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L3490 + adrp x19, .LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 + ldr w0, [x0, 2068] + cbz w0, .L3494 + add x0, x19, :lo12:.LANCHOR4 + mov w2, 22867 + movk w2, 0x4453, lsl 16 + ldr x1, [x0, 2072] + ldr w3, [x1] + cmp w3, w2 + beq .L3495 + str w2, [x1] + mov w2, 504 + ldr x1, [x0, 2072] + str w2, [x1, 4] + ldr x0, [x0, 2072] + stp wzr, wzr, [x0, 8] +.L3495: + add x20, x19, :lo12:.LANCHOR4 + mov w0, 0 + ldr x1, [x20, 2072] + str wzr, [x1, 16] + bl StorageSysDataStore + ldr x0, [x20, 2056] + mov w1, 21060 + movk w1, 0x4b4d, lsl 16 + ldr w2, [x0] + cmp w2, w1 + beq .L3496 + str w1, [x0] + mov w1, 504 + ldr x0, [x20, 2056] + str w1, [x0, 4] + ldr x0, [x20, 2056] + str wzr, [x0, 8] +.L3496: + add x19, x19, :lo12:.LANCHOR4 + mov x2, 128 + mov w1, 0 + ldr x20, [x19, 2056] + add x0, x20, 64 + str wzr, [x20, 12] + bl memset + mov x1, x20 + mov w0, 1 + bl StorageSysDataStore + str wzr, [x19, 2064] + str wzr, [x19, 2068] + b .L3528 +.L3481: + adrp x0, .LC189 + add x0, x0, :lo12:.LC189 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L3493 + ldr w1, [x29, 40] + mov w0, 20037 + movk w0, 0x4253, lsl 16 + cmp w1, w0 + bne .L3490 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L3490 + adrp x19, .LANCHOR4 + add x0, x19, :lo12:.LANCHOR4 + ldr w1, [x0, 2068] + cmp w1, 1 + beq .L3494 + ldr x1, [x0, 2072] + mov w0, 22867 + movk w0, 0x4453, lsl 16 + ldr w2, [x1] + cmp w2, w0 + beq .L3497 + str w0, [x1] + add x0, x19, :lo12:.LANCHOR4 + mov w2, 504 + ldr x1, [x0, 2072] + str w2, [x1, 4] + ldr x0, [x0, 2072] + stp wzr, wzr, [x0, 8] +.L3497: + add x20, x19, :lo12:.LANCHOR4 + mov w0, 1 + ldr x1, [x20, 2072] + str w0, [x1, 16] + mov w0, 0 + bl StorageSysDataStore + ldr x0, [x20, 2056] + mov w1, 21060 + movk w1, 0x4b4d, lsl 16 + ldr w2, [x0] + cmp w2, w1 + beq .L3498 + str w1, [x0] + mov w1, 504 + ldr x0, [x20, 2056] + str w1, [x0, 4] + ldr x0, [x20, 2056] + str wzr, [x0, 8] +.L3498: + add x19, x19, :lo12:.LANCHOR4 + mov x2, 128 + mov w1, 0 + ldr x20, [x19, 2056] + add x0, x20, 64 + str wzr, [x20, 12] + bl memset + mov x1, x20 + mov w0, 1 + bl StorageSysDataStore + mov w0, 1 + str w0, [x19, 2068] + b .L3528 +.L3500: + mov w0, 27708 + movk w0, 0x4004, lsl 16 + cmp w19, w0 + bne .L3502 + adrp x0, .LC192 + add x0, x0, :lo12:.LC192 + b .L3527 +.L3502: + adrp x0, .LC193 + add x0, x0, :lo12:.LC193 + b .L3527 +.L3503: + add x20, x0, :lo12:.LANCHOR4 + ldr w1, [x20, 2592] + cmp w1, 10 + bhi .L3530 + ldr x1, [x20, 2056] + ldr w2, [x29, 44] + ldr w3, [x1, 24] + cmp w3, w2 + beq .L3504 + cbz w3, .L3504 + mov w1, w2 + adrp x0, .LC194 + add x0, x0, :lo12:.LC194 + bl printk + ldr w0, [x20, 2592] + add w0, w0, 1 + str w0, [x20, 2592] + b .L3530 +.L3504: + add x0, x0, :lo12:.LANCHOR4 + str wzr, [x0, 2592] + mov w0, 27698 + movk w0, 0x4004, lsl 16 + cmp w19, w0 + bne .L3505 + stp wzr, wzr, [x1, 20] +.L3506: + mov w0, 1 + bl StorageSysDataStore + cmn w0, #1 + bne .L3528 + mov x19, -2 + b .L3489 +.L3505: + mov w0, 1 + stp w0, w2, [x1, 20] + b .L3506 +.L3484: + adrp x0, .LC195 + add x0, x0, :lo12:.LC195 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L3493 + ldr w1, [x29, 40] + mov w0, 17750 + movk w0, 0x444e, lsl 16 + cmp w1, w0 + bne .L3490 + ldr w2, [x29, 44] + cmp w2, 504 + bhi .L3490 + mov w0, 30224 + adrp x1, .LANCHOR4 + movk w0, 0x4004, lsl 16 + uxtw x2, w2 + cmp w19, w0 + add x1, x1, :lo12:.LANCHOR4 + add x0, x29, 48 + bne .L3507 + ldr x1, [x1, 2600] +.L3532: + add x1, x1, 8 + b .L3531 +.L3507: + ldr x1, [x1, 2608] + b .L3532 +.L3509: + ldr x0, [x19, 2608] + bl memcpy + mov w0, 3 + ldr x1, [x19, 2608] + b .L3529 +.L3479: + bl rknand_dev_flush + b .L3528 +.L3511: + mov x19, -2 + b .L3473 .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 2 .global rk_ftl_storage_sys_init .type rk_ftl_storage_sys_init, %function rk_ftl_storage_sys_init: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! mov w0, -1 mov w2, 512 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR5 - add x19, x20, :lo12:.LANCHOR5 - stp x21, x22, [sp,32] - ldr x1, [x19,1488] - str w0, [x19,1528] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR4 + add x19, x20, :lo12:.LANCHOR4 + ldr x1, [x19, 2008] + str w0, [x19, 2048] add x0, x1, 512 - str x0, [x19,1536] + str x0, [x19, 2056] add x0, x1, 1024 - str x1, [x19,1552] - str x0, [x19,2080] + str x1, [x19, 2072] + str x0, [x19, 2600] add x1, x1, 1536 - add x0, x19, 1560 - strb wzr, [x19,1512] - str xzr, [x19,1520] - str xzr, [x19,2096] - str x1, [x19,2088] + strb wzr, [x19, 2032] + add x0, x19, 2080 + str xzr, [x19, 2040] + str xzr, [x19, 2616] + str x1, [x19, 2608] bl ftl_memcpy - ldr x21, [x19,1552] - str wzr, [x19,1544] - str wzr, [x19,2072] - ldr w0, [x21,16] - ldr w22, [x21,508] - str w0, [x19,1548] - cbz w22, .L3602 - mov x0, x21 + ldr x6, [x19, 2072] + str wzr, [x19, 2064] + str wzr, [x19, 2592] + ldr w7, [x6, 508] + ldr w0, [x6, 16] + str w0, [x19, 2068] + cbz w7, .L3534 mov w1, 508 + mov x0, x6 bl js_hash - cmp w22, w0 - beq .L3602 + cmp w7, w0 + beq .L3534 + str wzr, [x6, 16] adrp x0, .LC198 - str wzr, [x21,16] + str wzr, [x19, 2068] add x0, x0, :lo12:.LC198 - str wzr, [x19,1548] bl printk -.L3602: - add x0, x20, :lo12:.LANCHOR5 - ldr w1, [x0,1548] - cbz w1, .L3603 +.L3534: + add x0, x20, :lo12:.LANCHOR4 + ldr w1, [x0, 2068] + cbz w1, .L3535 mov w1, 5161 movk w1, 0xc059, lsl 16 - str w1, [x0,1544] -.L3603: - add x20, x20, :lo12:.LANCHOR5 + str w1, [x0, 2064] +.L3535: + add x20, x20, :lo12:.LANCHOR4 mov w0, 2 - ldr x1, [x20,2080] + ldr x1, [x20, 2600] bl StorageSysDataLoad - ldr x1, [x20,2088] + ldr x1, [x20, 2608] mov w0, 3 bl StorageSysDataLoad bl rknand_sys_storage_init - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init .align 2 @@ -23422,375 +22959,374 @@ StorageSysDataDeInit: .global rk_ftl_vendor_storage_init .type rk_ftl_vendor_storage_init, %function rk_ftl_vendor_storage_init: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -80]! mov w0, 65536 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x21, .LANCHOR5 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR4 + add x20, x19, :lo12:.LANCHOR4 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] bl ftl_malloc - add x1, x21, :lo12:.LANCHOR5 - mov w19, -12 - str x0, [x1,2104] - cbz x0, .L3612 - mov w23, 0 + str x0, [x20, 2624] + cbz x0, .L3550 adrp x24, .LC199 - mov w19, w23 - mov w22, w23 + mov w26, 22084 + mov x22, x19 add x24, x24, :lo12:.LC199 -.L3616: - add x20, x21, :lo12:.LANCHOR5 - lsl w0, w22, 7 + mov w25, 0 + mov w23, 0 + mov w21, 0 + movk w26, 0x524b, lsl 16 +.L3548: + ldr x2, [x20, 2624] mov w1, 128 - ldr x2, [x20,2104] + lsl w0, w21, 7 bl FlashBootVendorRead - cbnz w0, .L3613 - ldr x3, [x20,2104] + cbnz w0, .L3546 + ldr x0, [x20, 2624] + add x1, x0, 61440 + ldr w3, [x0, 4] + ldr w2, [x1, 4092] + ldr w1, [x0] mov x0, x24 - add x2, x3, 61440 - ldr w1, [x3] - ldr w3, [x3,4] - ldr w2, [x2,4092] bl printk - ldr x20, [x20,2104] - mov w0, 22084 - movk w0, 0x524b, lsl 16 - ldr w1, [x20] - cmp w1, w0 - bne .L3614 - ldr w0, [x20,4] - cmp w19, w0 - bcs .L3614 - add x1, x20, 61440 - ldr w1, [x1,4092] - cmp w1, w0 - csel w23, w23, w22, ne - csel w19, w19, w0, ne -.L3614: - cbnz w22, .L3624 - mov w22, 1 - b .L3616 -.L3624: - cbz w19, .L3617 - lsl w0, w23, 7 + ldr x19, [x20, 2624] + ldr w0, [x19] + cmp w0, w26 + bne .L3547 + add x0, x19, 61440 + ldr w1, [x19, 4] + ldr w0, [x0, 4092] + cmp w0, w1 + bne .L3547 + cmp w0, w23 + bls .L3547 + mov w25, w21 + mov w23, w0 +.L3547: + add w21, w21, 1 + cmp w21, 2 + bne .L3548 + cbz w23, .L3549 + mov x2, x19 mov w1, 128 - mov x2, x20 + lsl w0, w25, 7 bl FlashBootVendorRead - mov w19, w0 - cbz w0, .L3612 - b .L3613 -.L3617: - mov x0, x20 - mov w1, w19 - mov x2, 65536 - bl memset - str w22, [x20,4] - mov w0, 22084 - movk w0, 0x524b, lsl 16 - str w0, [x20] - add x0, x20, 61440 - str w22, [x0,4092] - mov w0, -1032 - strh w19, [x20,12] - strh w0, [x20,14] - b .L3612 -.L3613: - add x21, x21, :lo12:.LANCHOR5 - mov w19, -1 - ldr x0, [x21,2104] - bl kfree - str xzr, [x21,2104] -.L3612: - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 + cbnz w0, .L3546 +.L3544: + 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 +.L3549: + mov w1, 0 + mov x2, 65536 + mov x0, x19 + bl memset + mov w1, 22084 + mov w0, 1 + movk w1, 0x524b, lsl 16 + stp w1, w0, [x19] + add x1, x19, 61440 + str w0, [x1, 4092] + mov w0, -1032 + strh w0, [x19, 14] + mov w0, 0 + b .L3544 +.L3546: + add x22, x22, :lo12:.LANCHOR4 + ldr x0, [x22, 2624] + bl kfree + str xzr, [x22, 2624] + mov w0, -1 + b .L3544 +.L3550: + mov w0, -12 + b .L3544 .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init .align 2 .global rk_ftl_vendor_read .type rk_ftl_vendor_read, %function rk_ftl_vendor_read: - adrp x3, .LANCHOR5+2104 - stp x29, x30, [sp, -32]! - add x29, sp, 0 - ldr x5, [x3,#:lo12:.LANCHOR5+2104] - mov w3, -1 - str x19, [sp,16] - cbz x5, .L3626 - ldrh w3, [x5,10] - mov x4, 0 -.L3627: - cmp w4, w3 - mov w6, w4 - bcs .L3631 - add x7, x5, x4, lsl 3 - add x4, x4, 1 - ldrh w7, [x7,16] + adrp x3, .LANCHOR4+2624 + ldr x4, [x3, #:lo12:.LANCHOR4+2624] + cbz x4, .L3558 + ldrh w6, [x4, 10] + add x5, x4, 16 + mov w3, 0 +.L3555: + cmp w3, w6 + bcc .L3557 +.L3558: + mov w0, -1 + ret +.L3557: + ldrh w7, [x5], 8 cmp w7, w0 - bne .L3627 - add x6, x5, w6, uxtw 3 - ldrh w4, [x6,20] + bne .L3556 + stp x29, x30, [sp, -32]! + add x3, x4, w3, uxtw 3 mov x0, x1 - ldrh w1, [x6,18] - cmp w2, w4 - csel w19, w2, w4, ls + add x29, sp, 0 + str x19, [sp, 16] + ldrh w19, [x3, 20] + ldrh w1, [x3, 18] + cmp w19, w2 + csel w19, w19, w2, ls add x1, x1, 1024 - add x1, x5, x1 uxtw x2, w19 + add x1, x4, x1 bl memcpy - mov w3, w19 - b .L3626 -.L3631: - mov w3, -1 -.L3626: - mov w0, w3 - ldr x19, [sp,16] + mov w0, w19 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L3556: + add w3, w3, 1 + b .L3555 .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 2 .global rk_ftl_vendor_write .type rk_ftl_vendor_write, %function rk_ftl_vendor_write: stp x29, x30, [sp, -112]! - mov w6, w0 - adrp x0, .LANCHOR5+2104 + adrp x3, .LANCHOR4+2624 add x29, sp, 0 - stp x19, x20, [sp,16] - ldr x19, [x0,#:lo12:.LANCHOR5+2104] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov w26, w2 + stp x19, x20, [sp, 16] + ldr x19, [x3, #:lo12:.LANCHOR4+2624] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + cbz x19, .L3578 + add w4, w2, 63 + ldrh w3, [x19, 10] + ldrh w24, [x19, 8] mov x28, x1 - mov w2, -1 - cbz x19, .L3633 - add w20, w26, 63 - ldrh w3, [x19,10] - ldrh w23, [x19,8] - and w20, w20, -64 - mov x2, 0 -.L3634: - cmp w2, w3 - mov w4, w2 - bcs .L3649 - add x0, x19, x2, lsl 3 - add x2, x2, 1 - ldrh w0, [x0,16] - cmp w0, w6 - bne .L3634 - add x21, x19, w4, uxtw 3 - ldrh w24, [x21,20] + mov w26, w2 + and w22, w4, -64 + add x1, x19, 16 + mov w20, 0 +.L3565: + cmp w20, w3 + bcc .L3573 + ldrh w1, [x19, 14] + cmp w22, w1 + bhi .L3578 + add x3, x19, w3, uxth 3 + strh w0, [x3, 16] + and w0, w22, 65535 + ldrh w2, [x19, 12] + strh w2, [x3, 18] + strh w26, [x3, 20] + add w2, w2, w0 + sub w0, w1, w0 + strh w2, [x19, 12] + strh w0, [x19, 14] + uxtw x2, w26 + mov x1, x28 + ldrh w0, [x3, 18] + add x0, x0, 1024 + add x0, x19, x0 + bl memcpy + ldrh w0, [x19, 10] + add w0, w0, 1 + strh w0, [x19, 10] + b .L3580 +.L3573: + ldrh w6, [x1], 8 + cmp w6, w0 + bne .L3566 + uxtw x23, w20 add x5, x19, 1024 - add w24, w24, 63 - and w24, w24, -64 - cmp w26, w24 - bls .L3635 - ldrh w0, [x19,14] - mov w2, -1 - cmp w0, w20 - bcc .L3633 - ldrh w21, [x21,18] - add w22, w3, w2 -.L3636: - cmp w4, w22 - uxtw x3, w4 - bcs .L3650 - add x3, x19, x3, lsl 3 - add w25, w4, 1 - add x1, x19, w25, uxtw 3 - ldrh w0, [x1,16] - str x6, [x29,96] - strh w0, [x3,16] - str x5, [x29,104] - ldrh w0, [x1,20] - strh w0, [x3,20] - strh w21, [x3,18] + add x21, x19, x23, lsl 3 + ldrh w25, [x21, 20] + add w25, w25, 63 + and w25, w25, -64 + cmp w26, w25 + bls .L3567 + ldrh w0, [x19, 14] + cmp w22, w0 + bhi .L3578 + add x23, x23, 2 + ldrh w21, [x21, 18] + add x23, x19, x23, lsl 3 + sub w3, w3, #1 +.L3568: + cmp w20, w3 + bcc .L3569 + add x20, x19, w20, uxtw 3 + and w21, w21, 65535 + add x0, x5, w21, uxth + uxtw x2, w26 + mov x1, x28 + strh w21, [x20, 18] + strh w6, [x20, 16] + strh w26, [x20, 20] + bl memcpy + ldrh w0, [x19, 14] + and w4, w22, 65535 + add w21, w21, w4 + strh w21, [x19, 12] + sub w0, w0, w4 + add w25, w0, w25 + strh w25, [x19, 14] +.L3580: + ldr w0, [x19, 4] + add x1, x19, 61440 + mov x2, x19 + add w0, w0, 1 + str w0, [x19, 4] + str w0, [x1, 4092] + mov w1, 128 + ldrh w0, [x19, 8] + add w0, w0, 1 + and w0, w0, 65535 + cmp w0, 1 + csel w0, w0, wzr, ls + strh w0, [x19, 8] + lsl w0, w24, 7 + bl FlashBootVendorWrite + mov w0, 0 +.L3563: + 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 +.L3569: + add w20, w20, 1 + stp w3, w6, [x29, 96] + add x0, x19, w20, uxtw 3 + str x5, [x29, 104] + add x23, x23, 8 + ldrh w1, [x0, 16] + strh w1, [x23, -8] + ldrh w1, [x0, 20] + strh w1, [x23, -4] + strh w21, [x23, -6] + ldrh w27, [x0, 20] + ldrh w1, [x0, 18] add x0, x5, w21, uxtw - ldrh w27, [x1,20] - ldrh w1, [x1,18] add w27, w27, 63 and w27, w27, -64 add x1, x5, x1 and x2, x27, 131008 + bl memcpy add w21, w21, w27 - bl memcpy - mov w4, w25 - ldr x6, [x29,96] - ldr x5, [x29,104] - b .L3636 -.L3650: - add x3, x19, x3, lsl 3 - uxth w21, w21 - mov x1, x28 + ldr x5, [x29, 104] + ldp w3, w6, [x29, 96] + b .L3568 +.L3567: + ldrh w0, [x21, 18] uxtw x2, w26 - add x0, x5, w21, uxth - uxth w20, w20 - strh w21, [x3,18] - add w21, w21, w20 - strh w6, [x3,16] - strh w26, [x3,20] - bl memcpy - strh w21, [x19,12] - ldrh w0, [x19,14] - add w24, w24, w0 - sub w24, w24, w20 - strh w24, [x19,14] - b .L3648 -.L3635: - ldrh w0, [x21,18] mov x1, x28 - uxtw x2, w26 add x0, x5, x0 bl memcpy - strh w26, [x21,20] - b .L3648 -.L3649: - ldrh w4, [x19,14] - mov w2, -1 - cmp w4, w20 - bcc .L3633 - add x3, x19, w3, uxth 3 - strh w6, [x3,16] - uxth w20, w20 - mov x1, x28 - ldrh w0, [x19,12] - uxtw x2, w26 - strh w0, [x3,18] - strh w26, [x3,20] - add w0, w20, w0 - sub w20, w4, w20 - strh w0, [x19,12] - strh w20, [x19,14] - ldrh w0, [x3,18] - add x0, x0, 1024 - add x0, x19, x0 - bl memcpy - ldrh w0, [x19,10] - add w0, w0, 1 - strh w0, [x19,10] -.L3648: - ldr w0, [x19,4] - add x1, x19, 61440 - mov x2, x19 - add w0, w0, 1 - str w0, [x19,4] - str w0, [x1,4092] - mov w1, 128 - ldrh w0, [x19,8] - add w0, w0, 1 - uxth w0, w0 - cmp w0, 1 - csel w0, w0, wzr, ls - strh w0, [x19,8] - lsl w0, w23, 7 - bl FlashBootVendorWrite - mov w2, 0 -.L3633: - 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], 112 - ret + strh w26, [x21, 20] + b .L3580 +.L3566: + add w20, w20, 1 + b .L3565 +.L3578: + mov w0, -1 + b .L3563 .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 2 .global rk_ftl_vendor_storage_ioctl .type rk_ftl_vendor_storage_ioctl, %function rk_ftl_vendor_storage_ioctl: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! mov w0, 4096 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov x20, -1 - str x1, [x29,56] - mov x21, x2 + stp x19, x20, [sp, 16] + mov x20, x2 + str x21, [sp, 32] + mov w21, w1 bl ftl_malloc + cbz x0, .L3589 + mov w1, 30209 mov x19, x0 - cbz x0, .L3652 - mov w2, 30209 - ldr x1, [x29,56] - movk w2, 0x4004, lsl 16 - cmp w1, w2 - beq .L3654 - mov w2, 30210 - movk w2, 0x4004, lsl 16 - cmp w1, w2 - beq .L3655 - b .L3666 -.L3654: - mov x1, x21 + movk w1, 0x4004, lsl 16 + cmp w21, w1 + beq .L3584 + add w1, w1, 1 + cmp w21, w1 + beq .L3585 +.L3595: + mov x20, -14 + b .L3583 +.L3584: mov x2, 8 + mov x1, x20 bl rk_copy_from_user - cbnz x0, .L3666 + cbnz x0, .L3595 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L3657 -.L3658: + beq .L3587 +.L3588: mov x20, -1 - b .L3653 -.L3657: - ldrh w0, [x19,4] - add x1, x19, 8 - ldrh w2, [x19,6] - bl rk_ftl_vendor_read - cmn w0, #1 - beq .L3658 - uxth x2, w0 - strh w0, [x19,6] - mov x1, x19 - mov x0, x21 - add x2, x2, 8 - mov x20, -14 - bl rk_copy_to_user - cmp x0, xzr - csel x20, xzr, x20, eq - b .L3653 -.L3655: - mov x1, x21 - mov x2, 8 - bl rk_copy_from_user - cbnz x0, .L3666 - ldr w1, [x19] - mov w0, 17745 - movk w0, 0x5652, lsl 16 - cmp w1, w0 - bne .L3658 - ldrh w3, [x19,6] - cmp w3, 4087 - bhi .L3658 - add w2, w3, 8 - mov x0, x19 - mov x1, x21 - sxtw x2, w2 - bl rk_copy_from_user - cbnz x0, .L3666 - ldrh w0, [x19,4] - add x1, x19, 8 - ldrh w2, [x19,6] - bl rk_ftl_vendor_write - sxtw x20, w0 - b .L3653 -.L3666: - mov x20, -14 -.L3653: +.L3583: mov x0, x19 bl kfree -.L3652: +.L3581: mov x0, x20 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret +.L3587: + ldrh w2, [x19, 6] + add x1, x19, 8 + ldrh w0, [x19, 4] + bl rk_ftl_vendor_read + cmn w0, #1 + beq .L3588 + strh w0, [x19, 6] + and x0, x0, 65535 + add x2, x0, 8 + mov x1, x19 + mov x0, x20 + bl rk_copy_to_user + cbnz x0, .L3595 + mov x20, 0 + b .L3583 +.L3585: + mov x2, 8 + mov x1, x20 + bl rk_copy_from_user + cbnz x0, .L3595 + ldr w1, [x19] + mov w0, 17745 + movk w0, 0x5652, lsl 16 + cmp w1, w0 + bne .L3588 + ldrh w2, [x19, 6] + cmp w2, 4087 + bhi .L3588 + add w2, w2, 8 + mov x1, x20 + sxtw x2, w2 + mov x0, x19 + bl rk_copy_from_user + cbnz x0, .L3595 + ldrh w2, [x19, 6] + add x1, x19, 8 + ldrh w0, [x19, 4] + bl rk_ftl_vendor_write + sxtw x20, w0 + b .L3583 +.L3589: + mov x20, -1 + b .L3581 .size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl .global SecureBootUnlockTryCount .global SecureBootCheckOK @@ -23801,6 +23337,8 @@ rk_ftl_vendor_storage_ioctl: .global gSnSectorData .global gpDrmKeyInfo .global gpBootConfig + .global ftl_dma32_buffer_size + .global ftl_dma32_buffer .global gLoaderBootInfo .global RK29_NANDC1_REG_BASE .global RK29_NANDC_REG_BASE @@ -24037,10 +23575,10 @@ rk_ftl_vendor_storage_ioctl: .global read_retry_cur_offset .section .rodata .align 3 -.LANCHOR3 = . + 0 - .type __func__.20995, %object - .size __func__.20995, 11 -__func__.20995: + .set .LANCHOR3,. + 0 + .type __func__.21189, %object + .size __func__.21189, 11 +__func__.21189: .string "FtlMemInit" .zero 5 .type samsung_14nm_slc_rr, %object @@ -24180,438 +23718,37 @@ samsung_14nm_mlc_rr: .byte 18 .byte 9 .byte 8 - .type __func__.21774, %object - .size __func__.21774, 17 -__func__.21774: + .type __func__.21968, %object + .size __func__.21968, 17 +__func__.21968: .string "FtlDumpBlockInfo" .zero 7 - .type __func__.21793, %object - .size __func__.21793, 16 -__func__.21793: + .type __func__.21987, %object + .size __func__.21987, 16 +__func__.21987: .string "FtlScanAllBlock" - .type __func__.22061, %object - .size __func__.22061, 17 -__func__.22061: + .type __func__.22255, %object + .size __func__.22255, 17 +__func__.22255: .string "ftl_scan_all_ppa" .zero 7 - .type __func__.21742, %object - .size __func__.21742, 12 -__func__.21742: + .type __func__.21936, %object + .size __func__.21936, 12 +__func__.21936: .string "FtlCheckVpc" .zero 4 - .type __func__.22041, %object - .size __func__.22041, 21 -__func__.22041: + .type __func__.22235, %object + .size __func__.22235, 21 +__func__.22235: .string "FtlVpcCheckAndModify" .zero 3 - .type __func__.21068, %object - .size __func__.21068, 8 -__func__.21068: + .type __func__.21262, %object + .size __func__.21262, 8 +__func__.21262: .string "FtlInit" - .section .rodata.str1.1,"aMS",%progbits,1 -.LC0: - .string "FlashEraseBlocks pageAddr error %x\n" -.LC1: - .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" -.LC2: - .string "FtlFreeSysBlkQueueOut free count = %d\n" -.LC3: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" -.LC4: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" -.LC5: - .string "FLASH INFO:\n" -.LC6: - .string "FLASH ID: %x\n" -.LC7: - .string "Device Capacity: %d MB\n" -.LC8: - .string "FMWAIT: %x %x %x %x\n" -.LC9: - .string "FTL INFO:\n" -.LC10: - .string "g_MaxLpn = 0x%x\n" -.LC11: - .string "g_VaildLpn = 0x%x\n" -.LC12: - .string "read_page_count = 0x%x\n" -.LC13: - .string "discard_page_count = 0x%x\n" -.LC14: - .string "write_page_count = 0x%x\n" -.LC15: - .string "cache_write_count = 0x%x\n" -.LC16: - .string "l2p_write_count = 0x%x\n" -.LC17: - .string "gc_page_count = 0x%x\n" -.LC18: - .string "totle_write = %d MB\n" -.LC19: - .string "totle_read = %d MB\n" -.LC20: - .string "GSV = 0x%x\n" -.LC21: - .string "GDV = 0x%x\n" -.LC22: - .string "bad blk num = %d %d\n" -.LC23: - .string "free_superblocks = 0x%x\n" -.LC24: - .string "mlc_EC = 0x%x\n" -.LC25: - .string "slc_EC = 0x%x\n" -.LC26: - .string "avg_EC = 0x%x\n" -.LC27: - .string "sys_EC = 0x%x\n" -.LC28: - .string "max_EC = 0x%x\n" -.LC29: - .string "min_EC = 0x%x\n" -.LC30: - .string "PLT = 0x%x\n" -.LC31: - .string "POT = 0x%x\n" -.LC32: - .string "MaxSector = 0x%x\n" -.LC33: - .string "init_sys_blks_pp = 0x%x\n" -.LC34: - .string "sys_blks_pp = 0x%x\n" -.LC35: - .string "free sysblock = 0x%x\n" -.LC36: - .string "data_blks_pp = 0x%x\n" -.LC37: - .string "data_op_blks_pp = 0x%x\n" -.LC38: - .string "max_data_blks = 0x%x\n" -.LC39: - .string "Sys.id = 0x%x\n" -.LC40: - .string "Bbt.id = 0x%x\n" -.LC41: - .string "ACT.page = 0x%x\n" -.LC42: - .string "ACT.plane = 0x%x\n" -.LC43: - .string "ACT.id = 0x%x\n" -.LC44: - .string "ACT.mode = 0x%x\n" -.LC45: - .string "ACT.a_pages = 0x%x\n" -.LC46: - .string "ACT VPC = 0x%x\n" -.LC47: - .string "BUF.page = 0x%x\n" -.LC48: - .string "BUF.plane = 0x%x\n" -.LC49: - .string "BUF.id = 0x%x\n" -.LC50: - .string "BUF.mode = 0x%x\n" -.LC51: - .string "BUF.a_pages = 0x%x\n" -.LC52: - .string "BUF VPC = 0x%x\n" -.LC53: - .string "TMP.page = 0x%x\n" -.LC54: - .string "TMP.plane = 0x%x\n" -.LC55: - .string "TMP.id = 0x%x\n" -.LC56: - .string "TMP.mode = 0x%x\n" -.LC57: - .string "TMP.a_pages = 0x%x\n" -.LC58: - .string "GC.page = 0x%x\n" -.LC59: - .string "GC.plane = 0x%x\n" -.LC60: - .string "GC.id = 0x%x\n" -.LC61: - .string "GC.mode = 0x%x\n" -.LC62: - .string "GC.a_pages = 0x%x\n" -.LC63: - .string "WR_CHK = 0x%x %x %x %x\n" -.LC64: - .string "Read Err = 0x%x\n" -.LC65: - .string "Prog Err = 0x%x\n" -.LC66: - .string "gc_free_blk_th= 0x%x\n" -.LC67: - .string "gc_merge_free_blk_th= 0x%x\n" -.LC68: - .string "gc_skip_write_count= 0x%x\n" -.LC69: - .string "gc_blk_index= 0x%x\n" -.LC70: - .string "free min EC= 0x%x\n" -.LC71: - .string "free max EC= 0x%x\n" -.LC72: - .string "GC__SB VPC = 0x%x\n" -.LC73: - .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" -.LC74: - .string "free %d. [0x%x] 0x%x 0x%x\n" -.LC75: - .string "%s\n" -.LC76: - .string "FTL version: 5.0.63 20200923" -.LC77: - .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" -.LC78: - .string "FtlGcRefreshBlock 0x%x\n" -.LC79: - .string "FtlGcMarkBadPhyBlk %d 0x%x\n" -.LC80: - .string "%s error allocating memory. return -1\n" -.LC81: - .string "%s %p:0x%x:" -.LC82: - .string "%x " -.LC83: - .string "" -.LC84: - .string "otp error! %d" -.LC85: - .string "rr" -.LC86: - .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n" -.LC87: - .string "nandc:" -.LC88: - .string "%d flReg.d32=%x %x\n" -.LC89: - .string "sdr read ok %x ecc=%d\n" -.LC90: - .string "sync para %d\n" -.LC91: - .string "TOG mode Read error %x %x\n" -.LC92: - .string "read retry status %x %x %x\n" -.LC93: - .string "micron RR %d row=%x,count %d,status=%d\n" -.LC94: - .string "samsung RR %d row=%x,count %d,status=%d\n" -.LC95: - .string "ECC:%d\n" -.LC96: - .string "No.%d FLASH ID:%x %x %x %x %x %x\n" -.LC97: - .string "FlashLoadPhyInfo fail %x!!\n" -.LC98: - .string "Read pageadd=%x ecc=%x err=%x\n" -.LC99: - .string "data:" -.LC100: - .string "spare:" -.LC101: - .string "ReadRetry pageadd=%x ecc=%x err=%x\n" -.LC102: - .string "FLFB:%d %d\n" -.LC103: - .string "prog error: = %x\n" -.LC104: - .string "prog read error: = %x\n" -.LC105: - .string "prog read REFRESH: = %x\n" -.LC106: - .string "prog read s error: = %x %x %x\n" -.LC107: - .string "prog read d error: = %x %x %x\n" -.LC108: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n" -.LC109: - .string "...%s enter...\n" -.LC110: - .string "superBlkID = %x vpc=%x\n" -.LC111: - .string "flashmode = %x pagenum = %x %x\n" -.LC112: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC113: - .string "blk = %x vpc=%x mode = %x\n" -.LC114: - .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC115: - .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC116: - .string "ftl_scan_all_ppa blk %x page %x flag: %x\n" -.LC117: - .string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n" -.LC118: - .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" -.LC119: - .string "%s finished\n" -.LC120: - .string "FlashMakeFactorBbt %d\n" -.LC121: - .string "bad block:%d %d\n" -.LC122: - .string "FMFB:%d %d\n" -.LC123: - .string "E:bad block:%d\n" -.LC124: - .string "FMFB:Save %d %d\n" -.LC125: - .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" -.LC126: - .string "FtlBbmTblFlush error:%x\n" -.LC127: - .string "FtlBbmTblFlush error = %x error count = %d\n" -.LC128: - .string "FtlGcFreeBadSuperBlk 0x%x\n" -.LC129: - .string "decrement_vpc_count %x = %d\n" -.LC130: - .string "decrement_vpc_count %x = %d in free list\n" -.LC131: - .string "FtlVpcTblFlush error = %x error count = %d\n" -.LC132: - .string "page map lost: %x %x\n" -.LC133: - .string "FtlMapWritePage error = %x\n" -.LC134: - .string "FtlMapWritePage error = %x error count = %d\n" -.LC135: - .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" -.LC136: - .string "no ect" -.LC137: - .string "slc mode" -.LC138: - .string "BBT:" -.LC139: - .string "region_id = %x phyAddr = %x\n" -.LC140: - .string "map_ppn:" -.LC141: - .string "load_l2p_region refresh = %x phyAddr = %x\n" -.LC142: - .string "FtlCheckVpc2 %x = %x %x\n" -.LC143: - .string "free blk vpc error %x = %x %x\n" -.LC144: - .string "error_flag %x\n" -.LC145: - .string "Ftlscanalldata = %x\n" -.LC146: - .string "scan lpa = %x ppa= %x\n" -.LC147: - .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC148: - .string "RSB refresh addr %x\n" -.LC149: - .string "spuer block %x vpn is 0\n " -.LC150: - .string "g_recovery_ppa %x ver %x\n " -.LC151: - .string "FtlCheckVpc %x = %x %x\n" -.LC152: - .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" -.LC153: - .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" -.LC154: - .string "GC des block %x done\n" -.LC155: - .string "too many bad block = %d %d\n" -.LC156: - .string "%d GC datablk = %x vpc %x %x\n" -.LC157: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" -.LC158: - .string "Ftlwrite decrement_vpc_count %x = %d\n" -.LC159: - .string "rk_ftl_de_init %x\n" -.LC160: - .string "...%s: no bad block mapping table, format device\n" -.LC161: - .string "...%s FtlSysBlkInit error ,format device!\n" -.LC162: - .string "FtlInit %x\n" -.LC163: - .string "fix power lost blk = %x vpc=%x\n" -.LC164: - .string "erase power lost blk = %x vpc=%x\n" -.LC165: - .string "FtlWrite: lpa error:%x %x\n" -.LC166: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" -.LC167: - .string ":" -.LC168: - .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC169: - .string "Mblk:" -.LC170: - .string "L2P:" -.LC171: - .string "L2PC:" -.LC172: - .string "write_idblock fix data %x %x\n" -.LC173: - .string "idblk:" -.LC174: - .string "idb reverse %x %x\n" -.LC175: - .string "write_idblock totle_sec %x %x %x %x\n" -.LC176: - .string "IDBlockWriteData %x %x\n" -.LC177: - .string "IDBlockWriteData %x %x ret= %x\n" -.LC178: - .string "IdBlockReadData %x %x\n" -.LC179: - .string "IdBlockReadData %x %x ret= %x\n" -.LC180: - .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n" -.LC181: - .string "write" -.LC182: - .string "read" -.LC183: - .string "write_idblock error %d\n" -.LC184: - .string "wl_lba %p %x %x %x\n" -.LC185: - .string "RKNAND_GET_DRM_KEY\n" -.LC186: - .string "rk_copy_from_user error\n" -.LC187: - .string "RKNAND_STORE_DRM_KEY\n" -.LC188: - .string "RKNAND_DIASBLE_SECURE_BOOT\n" -.LC189: - .string "RKNAND_ENASBLE_SECURE_BOOT\n" -.LC190: - .string "RKNAND_GET_SN_SECTOR\n" -.LC191: - .string "RKNAND_LOADER_UNLOCK\n" -.LC192: - .string "RKNAND_LOADER_STATUS\n" -.LC193: - .string "RKNAND_LOADER_LOCK\n" -.LC194: - .string "LockKey not match %d\n" -.LC195: - .string "RKNAND_GET_VENDOR_SECTOR\n" -.LC196: - .string "RKNAND_STORE_VENDOR_SECTOR\n" -.LC197: - .string "return ret = %lx\n" -.LC198: - .string "secureBootEn check error\n" -.LC199: - .string "\0013vendor storage %x,%x,%x\n" .data .align 3 -.LANCHOR1 = . + 0 + .set .LANCHOR1,. + 0 .type random_seed, %object .size random_seed, 256 random_seed: @@ -24743,55 +23880,6 @@ 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: @@ -24891,6 +23979,55 @@ Toshiba15RefValue: .byte 114 .byte 0 .zero 1 + .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 ToshibaRefValue, %object .size ToshibaRefValue, 8 ToshibaRefValue: @@ -27389,18 +26526,17 @@ power_up_flag: .word 1 .bss .align 3 -.LANCHOR0 = . + 0 -.LANCHOR2 = . + 4352 -.LANCHOR4 = . + 8704 -.LANCHOR5 = . + 17408 - .type p_blk_mode_table, %object - .size p_blk_mode_table, 8 -p_blk_mode_table: - .zero 8 + .set .LANCHOR0,. + 0 + .set .LANCHOR2,. + 4352 + .set .LANCHOR4,. + 8704 .type gNandChipMap, %object .size gNandChipMap, 64 gNandChipMap: .zero 64 + .type p_blk_mode_table, %object + .size p_blk_mode_table, 8 +p_blk_mode_table: + .zero 8 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: @@ -27898,15 +27034,14 @@ gSysInfo: .size g_gc_superblock, 48 g_gc_superblock: .zero 48 - .type g_all_blk_used_slc_mode, %object - .size g_all_blk_used_slc_mode, 4 -g_all_blk_used_slc_mode: - .zero 4 - .zero 4 .type g_sys_ext_data, %object .size g_sys_ext_data, 512 g_sys_ext_data: .zero 512 + .type g_all_blk_used_slc_mode, %object + .size g_all_blk_used_slc_mode, 4 +g_all_blk_used_slc_mode: + .zero 4 .type g_gc_free_blk_threshold, %object .size g_gc_free_blk_threshold, 2 g_gc_free_blk_threshold: @@ -27931,7 +27066,6 @@ g_in_swl_replace: .type g_gc_num_req, %object .size g_gc_num_req, 4 g_gc_num_req: - .zero 4 .zero 4 .type gp_gc_page_buf_info, %object .size gp_gc_page_buf_info, 8 @@ -28190,6 +27324,15 @@ gNandIDataBuf: .type RK29_NANDC_REG_BASE, %object .size RK29_NANDC_REG_BASE, 8 RK29_NANDC_REG_BASE: + .zero 8 + .type ftl_dma32_buffer_size, %object + .size ftl_dma32_buffer_size, 4 +ftl_dma32_buffer_size: + .zero 4 + .zero 4 + .type ftl_dma32_buffer, %object + .size ftl_dma32_buffer, 8 +ftl_dma32_buffer: .zero 8 .type gFlashPageBuffer0, %object .size gFlashPageBuffer0, 8 @@ -28275,11 +27418,6 @@ 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: @@ -28287,10 +27425,12 @@ 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 @@ -28392,6 +27532,10 @@ g_idb_buffer: .size g_vendor, 8 g_vendor: .zero 8 + .type check_valid_page_count_table, %object + .size check_valid_page_count_table, 8192 +check_valid_page_count_table: + .zero 8192 .type g_gc_refresh_block_temp_tbl, %object .size g_gc_refresh_block_temp_tbl, 34 g_gc_refresh_block_temp_tbl: @@ -28421,3 +27565,404 @@ gFlashOnfiModeEn: .size gFlashSdrModeEn, 1 gFlashSdrModeEn: .zero 1 + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "FlashEraseBlocks pageAddr error %x\n" +.LC1: + .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" +.LC2: + .string "FtlFreeSysBlkQueueOut free count = %d\n" +.LC3: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" +.LC4: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" +.LC5: + .string "FLASH INFO:\n" +.LC6: + .string "FLASH ID: %x\n" +.LC7: + .string "Device Capacity: %d MB\n" +.LC8: + .string "FMWAIT: %x %x %x %x\n" +.LC9: + .string "FTL INFO:\n" +.LC10: + .string "g_MaxLpn = 0x%x\n" +.LC11: + .string "g_VaildLpn = 0x%x\n" +.LC12: + .string "read_page_count = 0x%x\n" +.LC13: + .string "discard_page_count = 0x%x\n" +.LC14: + .string "write_page_count = 0x%x\n" +.LC15: + .string "cache_write_count = 0x%x\n" +.LC16: + .string "l2p_write_count = 0x%x\n" +.LC17: + .string "gc_page_count = 0x%x\n" +.LC18: + .string "totle_write = %d MB\n" +.LC19: + .string "totle_read = %d MB\n" +.LC20: + .string "GSV = 0x%x\n" +.LC21: + .string "GDV = 0x%x\n" +.LC22: + .string "bad blk num = %d %d\n" +.LC23: + .string "free_superblocks = 0x%x\n" +.LC24: + .string "mlc_EC = 0x%x\n" +.LC25: + .string "slc_EC = 0x%x\n" +.LC26: + .string "avg_EC = 0x%x\n" +.LC27: + .string "sys_EC = 0x%x\n" +.LC28: + .string "max_EC = 0x%x\n" +.LC29: + .string "min_EC = 0x%x\n" +.LC30: + .string "PLT = 0x%x\n" +.LC31: + .string "POT = 0x%x\n" +.LC32: + .string "MaxSector = 0x%x\n" +.LC33: + .string "init_sys_blks_pp = 0x%x\n" +.LC34: + .string "sys_blks_pp = 0x%x\n" +.LC35: + .string "free sysblock = 0x%x\n" +.LC36: + .string "data_blks_pp = 0x%x\n" +.LC37: + .string "data_op_blks_pp = 0x%x\n" +.LC38: + .string "max_data_blks = 0x%x\n" +.LC39: + .string "Sys.id = 0x%x\n" +.LC40: + .string "Bbt.id = 0x%x\n" +.LC41: + .string "ACT.page = 0x%x\n" +.LC42: + .string "ACT.plane = 0x%x\n" +.LC43: + .string "ACT.id = 0x%x\n" +.LC44: + .string "ACT.mode = 0x%x\n" +.LC45: + .string "ACT.a_pages = 0x%x\n" +.LC46: + .string "ACT VPC = 0x%x\n" +.LC47: + .string "BUF.page = 0x%x\n" +.LC48: + .string "BUF.plane = 0x%x\n" +.LC49: + .string "BUF.id = 0x%x\n" +.LC50: + .string "BUF.mode = 0x%x\n" +.LC51: + .string "BUF.a_pages = 0x%x\n" +.LC52: + .string "BUF VPC = 0x%x\n" +.LC53: + .string "TMP.page = 0x%x\n" +.LC54: + .string "TMP.plane = 0x%x\n" +.LC55: + .string "TMP.id = 0x%x\n" +.LC56: + .string "TMP.mode = 0x%x\n" +.LC57: + .string "TMP.a_pages = 0x%x\n" +.LC58: + .string "GC.page = 0x%x\n" +.LC59: + .string "GC.plane = 0x%x\n" +.LC60: + .string "GC.id = 0x%x\n" +.LC61: + .string "GC.mode = 0x%x\n" +.LC62: + .string "GC.a_pages = 0x%x\n" +.LC63: + .string "WR_CHK = 0x%x %x %x %x\n" +.LC64: + .string "Read Err = 0x%x\n" +.LC65: + .string "Prog Err = 0x%x\n" +.LC66: + .string "gc_free_blk_th= 0x%x\n" +.LC67: + .string "gc_merge_free_blk_th= 0x%x\n" +.LC68: + .string "gc_skip_write_count= 0x%x\n" +.LC69: + .string "gc_blk_index= 0x%x\n" +.LC70: + .string "free min EC= 0x%x\n" +.LC71: + .string "free max EC= 0x%x\n" +.LC72: + .string "GC__SB VPC = 0x%x\n" +.LC73: + .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" +.LC74: + .string "free %d. [0x%x] 0x%x 0x%x\n" +.LC75: + .string "FTL version: 5.0.63 20210616" +.LC76: + .string "%s\n" +.LC77: + .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" +.LC78: + .string "FtlGcRefreshBlock 0x%x\n" +.LC79: + .string "FtlGcMarkBadPhyBlk %d 0x%x\n" +.LC80: + .string "%s error allocating memory. return -1\n" +.LC81: + .string "%s %p:0x%x:" +.LC82: + .string "%x " +.LC83: + .string "" +.LC84: + .string "otp error! %d" +.LC85: + .string "rr" +.LC86: + .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n" +.LC87: + .string "nandc:" +.LC88: + .string "%d flReg.d32=%x %x\n" +.LC89: + .string "sdr read ok %x ecc=%d\n" +.LC90: + .string "sync para %d\n" +.LC91: + .string "TOG mode Read error %x %x\n" +.LC92: + .string "read retry status %x %x %x\n" +.LC93: + .string "micron RR %d row=%x,count %d,status=%d\n" +.LC94: + .string "samsung RR %d row=%x,count %d,status=%d\n" +.LC95: + .string "ECC:%d\n" +.LC96: + .string "No.%d FLASH ID:%x %x %x %x %x %x\n" +.LC97: + .string "FlashLoadPhyInfo fail %x!!\n" +.LC98: + .string "Read pageadd=%x ecc=%x err=%x\n" +.LC99: + .string "data:" +.LC100: + .string "spare:" +.LC101: + .string "ReadRetry pageadd=%x ecc=%x err=%x\n" +.LC102: + .string "FLFB:%d %d\n" +.LC103: + .string "prog error: = %x\n" +.LC104: + .string "prog read error: = %x\n" +.LC105: + .string "prog read REFRESH: = %x\n" +.LC106: + .string "prog read s error: = %x %x %x\n" +.LC107: + .string "prog read d error: = %x %x %x\n" +.LC108: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n" +.LC109: + .string "...%s enter...\n" +.LC110: + .string "superBlkID = %x vpc=%x\n" +.LC111: + .string "flashmode = %x pagenum = %x %x\n" +.LC112: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC113: + .string "blk = %x vpc=%x mode = %x\n" +.LC114: + .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC115: + .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC116: + .string "ftl_scan_all_ppa blk %x page %x flag: %x\n" +.LC117: + .string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n" +.LC118: + .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" +.LC119: + .string "%s finished\n" +.LC120: + .string "FlashMakeFactorBbt %d\n" +.LC121: + .string "bad block:%d %d\n" +.LC122: + .string "FMFB:%d %d\n" +.LC123: + .string "E:bad block:%d\n" +.LC124: + .string "FMFB:Save %d %d\n" +.LC125: + .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" +.LC126: + .string "FtlBbmTblFlush error:%x\n" +.LC127: + .string "FtlBbmTblFlush error = %x error count = %d\n" +.LC128: + .string "FtlGcFreeBadSuperBlk 0x%x\n" +.LC129: + .string "decrement_vpc_count %x = %d\n" +.LC130: + .string "decrement_vpc_count %x = %d in free list\n" +.LC131: + .string "FtlVpcTblFlush error = %x error count = %d\n" +.LC132: + .string "page map lost: %x %x\n" +.LC133: + .string "FtlMapWritePage error = %x\n" +.LC134: + .string "FtlMapWritePage error = %x error count = %d\n" +.LC135: + .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" +.LC136: + .string "no ect" +.LC137: + .string "slc mode" +.LC138: + .string "BBT:" +.LC139: + .string "region_id = %x phyAddr = %x\n" +.LC140: + .string "map_ppn:" +.LC141: + .string "load_l2p_region refresh = %x phyAddr = %x\n" +.LC142: + .string "FtlCheckVpc2 %x = %x %x\n" +.LC143: + .string "free blk vpc error %x = %x %x\n" +.LC144: + .string "error_flag %x\n" +.LC145: + .string "Ftlscanalldata = %x\n" +.LC146: + .string "scan lpa = %x ppa= %x\n" +.LC147: + .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC148: + .string "RSB refresh addr %x\n" +.LC149: + .string "spuer block %x vpn is 0\n " +.LC150: + .string "g_recovery_ppa %x ver %x\n " +.LC151: + .string "FtlCheckVpc %x = %x %x\n" +.LC152: + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" +.LC153: + .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" +.LC154: + .string "GC des block %x done\n" +.LC155: + .string "too many bad block = %d %d\n" +.LC156: + .string "%d GC datablk = %x vpc %x %x\n" +.LC157: + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" +.LC158: + .string "Ftlwrite decrement_vpc_count %x = %d\n" +.LC159: + .string "rk_ftl_de_init %x\n" +.LC160: + .string "...%s: no bad block mapping table, format device\n" +.LC161: + .string "...%s FtlSysBlkInit error ,format device!\n" +.LC162: + .string "FtlInit %x\n" +.LC163: + .string "fix power lost blk = %x vpc=%x\n" +.LC164: + .string "erase power lost blk = %x vpc=%x\n" +.LC165: + .string "FtlWrite: lpa error:%x %x\n" +.LC166: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" +.LC167: + .string ":" +.LC168: + .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC169: + .string "Mblk:" +.LC170: + .string "L2P:" +.LC171: + .string "L2PC:" +.LC172: + .string "write_idblock fix data %x %x\n" +.LC173: + .string "idblk:" +.LC174: + .string "idb reverse %x %x\n" +.LC175: + .string "write_idblock totle_sec %x %x %x %x\n" +.LC176: + .string "IDBlockWriteData %x %x\n" +.LC177: + .string "IDBlockWriteData %x %x ret= %x\n" +.LC178: + .string "IdBlockReadData %x %x\n" +.LC179: + .string "IdBlockReadData %x %x ret= %x\n" +.LC180: + .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n" +.LC181: + .string "write" +.LC182: + .string "read" +.LC183: + .string "write_idblock error %d\n" +.LC184: + .string "wl_lba %p %x %x %x\n" +.LC185: + .string "RKNAND_GET_DRM_KEY\n" +.LC186: + .string "rk_copy_from_user error\n" +.LC187: + .string "RKNAND_STORE_DRM_KEY\n" +.LC188: + .string "RKNAND_DIASBLE_SECURE_BOOT\n" +.LC189: + .string "RKNAND_ENASBLE_SECURE_BOOT\n" +.LC190: + .string "RKNAND_GET_SN_SECTOR\n" +.LC191: + .string "RKNAND_LOADER_UNLOCK\n" +.LC192: + .string "RKNAND_LOADER_STATUS\n" +.LC193: + .string "RKNAND_LOADER_LOCK\n" +.LC194: + .string "LockKey not match %d\n" +.LC195: + .string "RKNAND_GET_VENDOR_SECTOR\n" +.LC196: + .string "RKNAND_STORE_VENDOR_SECTOR\n" +.LC197: + .string "return ret = %lx\n" +.LC198: + .string "secureBootEn check error\n" +.LC199: + .string "\0013vendor storage %x,%x,%x\n" diff --git a/drivers/rk_nand/rk_ftlv5_arm64.S b/drivers/rk_nand/rk_ftlv5_arm64.S index 2a1c30de9cc4..d412680030a9 100644 --- a/drivers/rk_nand/rk_ftlv5_arm64.S +++ b/drivers/rk_nand/rk_ftlv5_arm64.S @@ -5,134 +5,132 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * date: 2020-09-23 + * date: 2021-06-16 * function: rk ftl v5 for rockchip soc base on arm v8 to support MLC NAND. */ - .cpu generic+fp+simd .file "rk_ftlv5_arm64.S" .text .align 2 - .type FlashReadFacBbtData.part.6, %function -FlashReadFacBbtData.part.6: - stp x29, x30, [sp, -32]! - mov w3, 0 - adrp x5, .LANCHOR0 - add x29, sp, 0 - str x19, [sp,16] - mov w7, 1 - mov x19, x0 - cbnz w1, .L4 -.L6: - add x0, x5, :lo12:.LANCHOR0 - ldr w0, [x0,8] - cmp w3, w0 - bcs .L4 - ubfx x4, x3, 5, 11 - ldr x0, [x5,#:lo12:.LANCHOR0] - lsl x4, x4, 2 - lsl w6, w7, w3 - add w3, w3, 1 - ldr w1, [x0,x4] - uxth w3, w3 - orr w6, w1, w6 - str w6, [x0,x4] - b .L6 -.L4: - ldr x1, [x5,#:lo12:.LANCHOR0] - mov x0, x19 - bl ftl_memcpy - mov w2, 4 - adrp x0, .LC0 - mov x1, x19 - add x0, x0, :lo12:.LC0 - mov w3, w2 - bl rknand_print_hex - ldr x19, [sp,16] - mov w0, 0 - ldp x29, x30, [sp], 32 - ret - .size FlashReadFacBbtData.part.6, .-FlashReadFacBbtData.part.6 - .align 2 - .type ftl_set_blk_mode.part.17, %function -ftl_set_blk_mode.part.17: - adrp x1, .LANCHOR0+16 - uxth w0, w0 - ubfx x2, x0, 5, 11 - lsl x2, x2, 2 - ldr x3, [x1,#:lo12:.LANCHOR0+16] - mov w1, 1 - lsl w0, w1, w0 - ldr w1, [x3,x2] - orr w0, w1, w0 - str w0, [x3,x2] - 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 + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + add x2, x1, x0 add x29, sp, 0 - add x1, x2, x0 - str x19, [sp,16] - ldrb w1, [x1,8] - ldr x19, [x2,x0] + str x19, [sp, 16] + ldr x0, [x1, x0] + ldrb w19, [x2, 8] + add x19, x0, x19, lsl 8 mov w0, 122 - add x19, x19, x1, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w1, [x19,2048] - ldr w0, [x19,2048] + 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 + csel w1, w1, w0, cs + ldr w0, [x19, 2048] + ldr w2, [x19, 2048] + and w0, w0, 15 + ldr x19, [sp, 16] + and w2, w2, 15 + cmp w0, w2 + csel w0, w0, w2, cs + cmp w0, w1 + csel w0, w0, w1, cs ldp x29, x30, [sp], 32 ret .size flash_read_ecc, .-flash_read_ecc .align 2 + .type FlashReadFacBbtData.part.6, %function +FlashReadFacBbtData.part.6: + stp x29, x30, [sp, -32]! + adrp x3, .LANCHOR0 + add x29, sp, 0 + str x19, [sp, 16] + mov x19, x0 + cbnz w1, .L4 + add x5, x3, :lo12:.LANCHOR0 + mov w0, 0 + mov w7, 1 +.L5: + ldr w1, [x5, 72] + cmp w0, w1 + bcc .L6 +.L4: + add x3, x3, :lo12:.LANCHOR0 + mov x0, x19 + ldr x1, [x3, 64] + bl ftl_memcpy + mov w3, 4 + mov x1, x19 + mov w2, w3 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl rknand_print_hex + mov w0, 0 + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L6: + ubfx x1, x0, 5, 11 + ldr x6, [x5, 64] + lsl x1, x1, 2 + lsl w8, w7, w0 + add w0, w0, 1 + and w0, w0, 65535 + ldr w4, [x6, x1] + orr w4, w4, w8 + str w4, [x6, x1] + b .L5 + .size FlashReadFacBbtData.part.6, .-FlashReadFacBbtData.part.6 + .align 2 + .type ftl_set_blk_mode.part.17, %function +ftl_set_blk_mode.part.17: + and w0, w0, 65535 + adrp x2, .LANCHOR0+80 + ubfx x1, x0, 5, 11 + ldr x3, [x2, #:lo12:.LANCHOR0+80] + lsl x1, x1, 2 + mov w2, 1 + lsl w2, w2, w0 + ldr w0, [x3, x1] + orr w0, w0, w2 + str w0, [x3, x1] + ret + .size ftl_set_blk_mode.part.17, .-ftl_set_blk_mode.part.17 + .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: - mov x5, x0 - adrp x0, .LANCHOR0+88 - ldrb w0, [x0,#:lo12:.LANCHOR0+88] - cbz w0, .L16 - ldrb w4, [x5,1] - mov w0, 0 - ldrb w3, [x1,1] + adrp x3, .LANCHOR0+88 + ldrb w3, [x3, #:lo12:.LANCHOR0+88] + cbz w3, .L15 + ldrb w4, [x0, 1] + ldrb w3, [x1, 1] cmp w4, w3 - beq .L13 -.L16: + beq .L16 +.L15: mov x3, 0 -.L14: - cmp w3, w2 +.L13: mov w4, w3 - bcs .L19 - ldrb w0, [x5,x3] + cmp w3, w2 + bcc .L14 +.L16: + mov w0, 0 + ret +.L14: + ldrb w5, [x0, x3] add x3, x3, 1 add x6, x1, x3 - ldrb w6, [x6,-1] - cmp w6, w0 - beq .L14 + ldrb w6, [x6, -1] + cmp w6, w5 + beq .L13 add w0, w4, 1 - b .L13 -.L19: - mov w0, 0 -.L13: ret .size FlashMemCmp8, .-FlashMemCmp8 .align 2 @@ -140,138 +138,139 @@ FlashMemCmp8: .type FlashRsvdBlkChk, %function FlashRsvdBlkChk: adrp x2, .LANCHOR0 - uxtb w0, w0 add x2, x2, :lo12:.LANCHOR0 - ldrb w3, [x2,89] - ldr w2, [x2,92] + and w0, w0, 255 + ldrb w3, [x2, 89] + ldr w2, [x2, 92] mul w2, w3, w2 - cmp w1, w2 - cset w1, cc - cmp w0, wzr - cset w0, eq - and w0, w1, w0 - eor w0, w0, 1 + cmp w2, w1 + bls .L20 + cmp w0, 0 + cset w0, ne + ret +.L20: + mov w0, 1 ret .size FlashRsvdBlkChk, .-FlashRsvdBlkChk .align 2 .global FlashGetRandomizer .type FlashGetRandomizer, %function FlashGetRandomizer: - stp x29, x30, [sp, -32]! + and x3, x1, 127 adrp x2, .LANCHOR1 - and w3, w1, 127 add x2, x2, :lo12:.LANCHOR1 - add x29, sp, 0 - uxtb w0, w0 - str x19, [sp,16] - ldrh w19, [x2,w3,uxtw 1] + ldrh w4, [x2, x3, lsl 1] adrp x2, .LANCHOR0+96 - ldrb w2, [x2,#:lo12:.LANCHOR0+96] - cbz w2, .L22 + ldrb w2, [x2, #:lo12:.LANCHOR0+96] + cbz w2, .L29 + stp x29, x30, [sp, -16]! + and w0, w0, 255 + add x29, sp, 0 bl FlashRsvdBlkChk - cmp w0, wzr - orr w1, w19, -1073741824 - csel w19, w1, w19, ne -.L22: - mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + cmp w0, 0 + orr w1, w4, -1073741824 + csel w4, w1, w4, ne + mov w0, w4 + ldp x29, x30, [sp], 16 + ret +.L29: + mov w0, w4 ret .size FlashGetRandomizer, .-FlashGetRandomizer .align 2 .global FlashSetRandomizer .type FlashSetRandomizer, %function FlashSetRandomizer: - stp x29, x30, [sp, -48]! - and w2, w1, 127 - add x29, sp, 0 - str x21, [sp,32] - uxtb w21, w0 + and x2, x1, 127 + and w6, w0, 255 adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - stp x19, x20, [sp,16] - ldrh w20, [x0,w2,uxtw 1] - adrp x2, .LANCHOR0 - add x0, x2, :lo12:.LANCHOR0 - mov x19, x2 - ldrb w0, [x0,96] - cbz w0, .L29 - mov w0, w21 + ldrh w5, [x0, x2, lsl 1] + adrp x0, .LANCHOR0 + add x2, x0, :lo12:.LANCHOR0 + mov x4, x0 + ldrb w2, [x2, 96] + cbz w2, .L40 + stp x29, x30, [sp, -16]! + mov w0, w6 + add x29, sp, 0 bl FlashRsvdBlkChk - cmp w0, wzr - orr w1, w20, -1073741824 - csel w20, w1, w20, ne -.L29: - add x2, x19, :lo12:.LANCHOR0 - add x2, x2, w21, sxtw 4 - ldr x0, [x2,24] - str w20, [x0,336] - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 + cmp w0, 0 + sbfiz x6, x6, 4, 32 + add x0, x4, :lo12:.LANCHOR0 + orr w1, w5, -1073741824 + csel w5, w1, w5, ne + ldr x0, [x0, x6] + str w5, [x0, 336] + ldp x29, x30, [sp], 16 + ret +.L40: + add x0, x0, :lo12:.LANCHOR0 + sbfiz x6, x6, 4, 32 + ldr x0, [x0, x6] + str w5, [x0, 336] ret .size FlashSetRandomizer, .-FlashSetRandomizer .align 2 .global FlashBlockAlignInit .type FlashBlockAlignInit, %function FlashBlockAlignInit: - uxth w0, w0 + and w0, w0, 65535 adrp x1, .LANCHOR0 cmp w0, 512 add x1, x1, :lo12:.LANCHOR0 - bls .L36 + bls .L44 mov w0, 1024 - b .L40 -.L36: - cmp w0, 256 - bls .L38 - mov w0, 512 - b .L40 -.L38: - cmp w0, 128 - bls .L40 - mov w0, 256 -.L40: - str w0, [x1,92] +.L48: + str w0, [x1, 92] ret +.L44: + cmp w0, 256 + bls .L46 + mov w0, 512 + b .L48 +.L46: + cmp w0, 128 + bls .L48 + mov w0, 256 + b .L48 .size FlashBlockAlignInit, .-FlashBlockAlignInit .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: - adrp x4, .LANCHOR0 - uxtb w0, w0 - add x4, x4, :lo12:.LANCHOR0 + and w0, w0, 255 + adrp x3, .LANCHOR0 sbfiz x2, x0, 4, 32 + add x3, x3, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! - add x3, x4, 24 + add x4, x3, x2 add x29, sp, 0 - ldr x4, [x4,104] - add x5, x3, x2 - ldr x2, [x3,x2] - ldrb w4, [x4,7] - ldrb w3, [x5,8] - cmp w4, 1 - bne .L42 - sxtw x4, w3 + ldr x2, [x3, x2] + ldr x3, [x3, 104] + ldrb w4, [x4, 8] + ldrb w3, [x3, 7] + cmp w3, 1 + bne .L50 + sxtw x3, w4 mov w5, 38 - add x4, x4, 8 - add x4, x2, x4, lsl 8 - str w5, [x4,8] -.L42: - ubfiz x3, x3, 8, 8 - add x2, x2, x3 + add x3, x3, 8 + add x3, x2, x3, lsl 8 + str w5, [x3, 8] +.L50: + ubfiz x4, x4, 8, 8 and w3, w1, 255 - str wzr, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w3, [x2,2052] + add x2, x2, x4 + str wzr, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w3, [x2, 2052] lsr w3, w1, 8 - str w3, [x2,2052] + str w3, [x2, 2052] lsr w3, w1, 16 - str w3, [x2,2052] + str w3, [x2, 2052] mov w3, 48 - str w3, [x2,2056] + str w3, [x2, 2056] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -280,74 +279,72 @@ FlashReadCmd: .global FlashReadDpDataOutCmd .type FlashReadDpDataOutCmd, %function FlashReadDpDataOutCmd: + and w0, w0, 255 adrp x3, .LANCHOR0 - uxtb w0, w0 - add x3, x3, :lo12:.LANCHOR0 sbfiz x2, x0, 4, 32 - add x4, x3, 24 + add x3, x3, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! - add x5, x4, x2 + add x4, x3, x2 + and w5, w1, 255 add x29, sp, 0 - ldr x6, [x4,x2] - lsr w4, w1, 8 - ldrb w2, [x3,128] + ldr x6, [x3, x2] + ldrb w2, [x3, 128] lsr w3, w1, 16 cmp w2, 1 - ldrb w2, [x5,8] - and w5, w1, 255 + ldrb w2, [x4, 8] + lsr w4, w1, 8 add x2, x6, x2, lsl 8 - bne .L44 + bne .L53 mov w6, 6 - str w6, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w5, [x2,2052] - str w4, [x2,2052] - str w3, [x2,2052] - b .L46 -.L44: - str wzr, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w5, [x2,2052] - str w4, [x2,2052] - str w3, [x2,2052] - mov w3, 5 - str w3, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] -.L46: + str w6, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w5, [x2, 2052] + str w4, [x2, 2052] + str w3, [x2, 2052] +.L56: mov w3, 224 - str w3, [x2,2056] + str w3, [x2, 2056] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret +.L53: + str wzr, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w5, [x2, 2052] + str w4, [x2, 2052] + str w3, [x2, 2052] + mov w3, 5 + str w3, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + b .L56 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: - adrp x3, .LANCHOR0 - uxtb w0, w0 - add x3, x3, :lo12:.LANCHOR0 + and w0, w0, 255 + adrp x4, .LANCHOR0 sbfiz x5, x0, 4, 32 - add x3, x3, 24 - lsr w4, w1, 16 - add x2, x3, x5 + add x4, x4, :lo12:.LANCHOR0 + add x2, x4, x5 stp x29, x30, [sp, -16]! + lsr w3, w1, 16 add x29, sp, 0 - ldrb w2, [x2,8] - ldr x3, [x3,x5] - add x2, x3, x2, lsl 8 - mov w3, 128 - str w3, [x2,2056] - and w3, w1, 255 - str wzr, [x2,2052] - str wzr, [x2,2052] - str w3, [x2,2052] - lsr w3, w1, 8 - str w3, [x2,2052] - str w4, [x2,2052] + ldr x4, [x4, x5] + ldrb w2, [x2, 8] + add x2, x4, x2, lsl 8 + mov w4, 128 + str w4, [x2, 2056] + and w4, w1, 255 + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w4, [x2, 2052] + lsr w4, w1, 8 + str w4, [x2, 2052] + str w3, [x2, 2052] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -356,64 +353,62 @@ FlashProgFirstCmd: .global FlashEraseCmd .type FlashEraseCmd, %function FlashEraseCmd: - adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 - add x4, x3, 24 - add x5, x4, x0 - ldr x4, [x4,x0] - ldrb w0, [x5,8] - cbz w2, .L49 + add x5, x3, x0 + ldr x4, [x3, x0] + ldrb w0, [x5, 8] + cbz w2, .L60 add x2, x4, x0, lsl 8 mov w5, 96 - str w5, [x2,2056] + str w5, [x2, 2056] and w5, w1, 255 - str w5, [x2,2052] + str w5, [x2, 2052] lsr w5, w1, 8 - str w5, [x2,2052] + str w5, [x2, 2052] lsr w5, w1, 16 - str w5, [x2,2052] - ldr w2, [x3,92] + str w5, [x2, 2052] + ldr w2, [x3, 92] add w1, w1, w2 -.L49: +.L60: add x0, x4, x0, lsl 8 mov w2, 96 - str w2, [x0,2056] + str w2, [x0, 2056] and w2, w1, 255 - str w2, [x0,2052] + str w2, [x0, 2052] lsr w2, w1, 8 - str w2, [x0,2052] + str w2, [x0, 2052] lsr w1, w1, 16 - str w1, [x0,2052] + str w1, [x0, 2052] mov w1, 208 - str w1, [x0,2056] + str w1, [x0, 2056] ret .size FlashEraseCmd, .-FlashEraseCmd .align 2 .global FlashProgDpSecondCmd .type FlashProgDpSecondCmd, %function FlashProgDpSecondCmd: - adrp x2, .LANCHOR0 - uxtb w0, w0 - add x2, x2, :lo12:.LANCHOR0 - sbfiz x4, x0, 4, 32 - add x5, x2, 24 - lsr w3, w1, 16 - add x7, x5, x4 + and w0, w0, 255 + adrp x4, .LANCHOR0 + sbfiz x5, x0, 4, 32 + add x4, x4, :lo12:.LANCHOR0 + add x2, x4, x5 stp x29, x30, [sp, -16]! + lsr w3, w1, 16 add x29, sp, 0 - ldrb w6, [x2,123] - ldrb w2, [x7,8] - ldr x4, [x5,x4] + ldrb w6, [x4, 123] + ldrb w2, [x2, 8] + ldr x4, [x4, x5] add x2, x4, x2, lsl 8 and w4, w1, 255 - str w6, [x2,2056] - str wzr, [x2,2052] - str wzr, [x2,2052] - str w4, [x2,2052] + str w6, [x2, 2056] + str wzr, [x2, 2052] + str wzr, [x2, 2052] + str w4, [x2, 2052] lsr w4, w1, 8 - str w4, [x2,2052] - str w3, [x2,2052] + str w4, [x2, 2052] + str w3, [x2, 2052] bl FlashSetRandomizer ldp x29, x30, [sp], 16 ret @@ -422,24 +417,23 @@ FlashProgDpSecondCmd: .global FlashProgSecondCmd .type FlashProgSecondCmd, %function FlashProgSecondCmd: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 stp x29, x30, [sp, -32]! + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 add x29, sp, 0 add x2, x1, x0 - stp x19, x20, [sp,16] - ldrb w19, [x2,8] - ldr x20, [x1,x0] + stp x19, x20, [sp, 16] + ldr x20, [x1, x0] mov x0, 36284 - add x19, x19, 8 + ldrb w19, [x2, 8] movk x0, 0x6, lsl 16 - add x19, x20, x19, lsl 8 bl __const_udelay + add x19, x19, 8 mov w0, 16 - str w0, [x19,8] - ldp x19, x20, [sp,16] + add x19, x20, x19, lsl 8 + str w0, [x19, 8] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashProgSecondCmd, .-FlashProgSecondCmd @@ -447,40 +441,38 @@ FlashProgSecondCmd: .global FlashProgDpFirstCmd .type FlashProgDpFirstCmd, %function FlashProgDpFirstCmd: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x2, x1, 24 - add x3, x2, x0 - ldrb w1, [x1,122] - ldr x2, [x2,x0] - ldrb w0, [x3,8] + add x3, x1, x0 + ldr x2, [x1, x0] + ldrb w0, [x3, 8] + ldrb w1, [x1, 122] add x0, x0, 8 add x0, x2, x0, lsl 8 - str w1, [x0,8] + str w1, [x0, 8] ret .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .align 2 .global FlashReadStatus .type FlashReadStatus, %function FlashReadStatus: - adrp x1, .LANCHOR0 - ubfiz x0, x0, 4, 8 stp x29, x30, [sp, -32]! + ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 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] + str x19, [sp, 16] + ldr x0, [x1, x0] + ldrb w19, [x2, 8] + add x19, x0, x19, lsl 8 mov w0, 112 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w0, [x19,2048] - ldr x19, [sp,16] + ldr w0, [x19, 2048] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashReadStatus, .-FlashReadStatus @@ -488,22 +480,22 @@ FlashReadStatus: .global js_hash .type js_hash, %function js_hash: - mov x5, x0 + mov x4, x0 mov w0, 42982 - mov x2, 0 + mov x3, 0 movk w0, 0x47c6, lsl 16 -.L58: - cmp w1, w2 - bls .L60 - 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 .L58 -.L60: +.L72: + cmp w1, w3 + bhi .L73 ret +.L73: + lsr w2, w0, 2 + ldrb w5, [x4, x3] + add w2, w2, w0, lsl 5 + add x3, x3, 1 + add w2, w2, w5 + eor w0, w0, w2 + b .L72 .size js_hash, .-js_hash .align 2 .global FlashLoadIdbInfo @@ -516,280 +508,260 @@ FlashLoadIdbInfo: .global BuildFlashLsbPageTable .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: - stp x29, x30, [sp, -32]! - adrp x2, .LANCHOR0 + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, w1 - cbnz w0, .L63 + str x21, [sp, 32] + adrp x1, .LANCHOR0 + cbnz w0, .L76 + add x2, x1, :lo12:.LANCHOR0 mov x0, 0 - add x3, x2, :lo12:.LANCHOR0 -.L64: - add x1, x3, 144 - strh w0, [x1,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L64 -.L70: - add x20, x2, :lo12:.LANCHOR0 - mov w1, 255 - mov w2, 2048 - add x0, x20, 1168 - uxth w19, w19 - bl ftl_memset - mov x0, 0 - mov x2, x20 - b .L65 -.L63: - cmp w0, 1 - bne .L66 - mov x0, 0 - mov w5, 3 - mov w6, 2 - add x4, x2, :lo12:.LANCHOR0 -.L69: - cmp x0, 3 - uxth w3, w0 - mov w1, w3 - bls .L67 - ubfiz w1, w3, 1, 15 - and w3, w3, 1 - cmp w3, wzr - csel w3, w5, w6, ne - sub w1, w1, w3 - uxth w1, w1 -.L67: - add x3, x4, 144 - strh w1, [x3,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L69 - b .L70 -.L66: - cmp w0, 2 - bne .L71 - mov w1, 65535 - mov x0, 0 - add x5, x2, :lo12:.LANCHOR0 -.L73: - add x4, x5, 144 - cmp x0, 1 - uxth w3, w0 - csel w3, w1, w3, hi - add w1, w1, 2 - strh w3, [x4,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - uxth w1, w1 - bne .L73 - b .L70 -.L71: - cmp w0, 3 - bne .L74 - mov x0, 0 - mov w6, 5 - mov w7, 4 - add x5, x2, :lo12:.LANCHOR0 + add x2, x2, 144 .L77: - cmp x0, 5 - uxth w4, w0 - mov w3, w4 - bls .L75 - ubfiz w1, w4, 1, 15 - and w4, w4, 1 - cmp w4, wzr - csel w3, w6, w7, ne - sub w3, w1, w3 - uxth w3, w3 -.L75: - add x1, x5, 144 - strh w3, [x1,x0,lsl 1] + strh w0, [x2, x0, lsl 1] add x0, x0, 1 cmp x0, 512 bne .L77 - b .L70 -.L74: - cmp w0, 4 - bne .L78 - add x1, x2, :lo12:.LANCHOR0 - mov w6, 7 - add x3, x1, 144 - mov w5, 6 - strh w0, [x3,8] - mov w0, 5 - strh wzr, [x1,144] - mov w1, 1 - strh w0, [x3,10] - mov w0, 7 - strh w1, [x3,2] - mov w1, 2 - strh w0, [x3,12] - mov w0, 8 - strh w1, [x3,4] - mov w1, 3 - strh w0, [x3,14] - mov w0, 8 - strh w1, [x3,6] -.L80: - and w4, w0, 1 - ubfiz w1, w0, 1, 15 - add w0, w0, 1 - cmp w4, wzr - csel w4, w6, w5, ne - add x3, x3, 2 - uxth w0, w0 - sub w1, w1, w4 - cmp w0, 512 - strh w1, [x3,14] - bne .L80 - b .L70 +.L83: + add x20, x1, :lo12:.LANCHOR0 + mov w2, 2048 + add x21, x20, 1168 + mov w1, 255 + mov x0, x21 + bl ftl_memset + and w19, w19, 65535 + add x1, x20, 144 + mov x2, 0 .L78: - cmp w0, 5 - bne .L81 - mov x0, 0 - add x3, x2, :lo12:.LANCHOR0 + cmp w19, w2, uxth + bhi .L111 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L76: + cmp w0, 1 + bne .L79 + add x3, x1, :lo12:.LANCHOR0 + mov x2, 0 + add x3, x3, 144 .L82: - add x1, x3, 144 - strh w0, [x1,x0,lsl 1] + and w0, w2, 65535 + cmp x2, 3 + bls .L80 + ubfiz w4, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 2 + sub w0, w4, w0 + and w0, w0, 65535 +.L80: + strh w0, [x3, x2, lsl 1] + add x2, x2, 1 + cmp x2, 512 + bne .L82 + b .L83 +.L79: + cmp w0, 2 + bne .L84 + add x3, x1, :lo12:.LANCHOR0 + mov w2, 65535 + add x3, x3, 144 + mov x0, 0 +.L86: + cmp x0, 2 + and w4, w0, 65535 + csel w4, w4, w2, cc + strh w4, [x3, x0, lsl 1] + add w2, w2, 2 + add x0, x0, 1 + and w2, w2, 65535 + cmp x0, 512 + bne .L86 + b .L83 +.L84: + cmp w0, 3 + bne .L87 + add x3, x1, :lo12:.LANCHOR0 + mov x2, 0 + add x3, x3, 144 +.L90: + and w0, w2, 65535 + cmp x2, 5 + bls .L88 + ubfiz w4, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 4 + sub w0, w4, w0 + and w0, w0, 65535 +.L88: + strh w0, [x3, x2, lsl 1] + add x2, x2, 1 + cmp x2, 512 + bne .L90 + b .L83 +.L87: + cmp w0, 4 + bne .L91 + add x3, x1, :lo12:.LANCHOR0 + mov w4, 1 + add x3, x3, 160 + strh w0, [x3, -8] + mov w0, 5 + strh w4, [x3, -14] + mov w4, 2 + strh w0, [x3, -6] + mov w0, 7 + strh w4, [x3, -12] + mov w4, 3 + strh w0, [x3, -4] + mov w0, 8 + strh wzr, [x3, -16] + strh w0, [x3, -2] + mov w0, 8 + strh w4, [x3, -10] +.L93: + and w4, w0, 1 + ubfiz w2, w0, 1, 15 + add w4, w4, 6 + add w0, w0, 1 + sub w2, w2, w4 + strh w2, [x3], 2 + and w0, w0, 65535 + cmp w0, 512 + bne .L93 + b .L83 +.L91: + cmp w0, 5 + bne .L94 + add x2, x1, :lo12:.LANCHOR0 + mov x0, 0 + add x3, x2, 144 +.L95: + strh w0, [x3, x0, lsl 1] add x0, x0, 1 cmp x0, 16 - bne .L82 - mov x0, 0 -.L83: - add x3, x1, x0 - add w4, w0, 16 - add x0, x0, 2 - cmp x0, 992 - strh w4, [x3,32] - bne .L83 - b .L70 -.L81: + bne .L95 + add x2, x2, 176 +.L96: + strh w0, [x2], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 1008 + bne .L96 + b .L83 +.L94: cmp w0, 6 - bne .L84 + bne .L97 + add x4, x1, :lo12:.LANCHOR0 + mov w2, 0 + add x4, x4, 144 mov x3, 0 - mov w6, 12 - mov w7, 10 - add x5, x2, :lo12:.LANCHOR0 -.L87: + mov w5, 12 + mov w6, 10 +.L100: + and w0, w3, 65535 cmp x3, 5 - uxth w4, w3 - mov w0, w4 - bls .L85 - add w0, w4, w4, lsl 1 - and w4, w4, 1 - cmp w4, wzr - uxth w0, w0 - csel w1, w6, w7, ne - sub w0, w0, w1 - uxth w0, w0 -.L85: - add x1, x5, 144 - strh w0, [x1,x3,lsl 1] + bls .L98 + tst x0, 1 + csel w0, w5, w6, ne + sub w0, w2, w0 + and w0, w0, 65535 +.L98: + strh w0, [x4, x3, lsl 1] + add w2, w2, 3 + and w2, w2, 65535 add x3, x3, 1 - cmp x3, 512 - bne .L87 - b .L70 -.L84: + cmp w2, 1536 + bne .L100 + b .L83 +.L97: cmp w0, 9 - bne .L88 - add x0, x2, :lo12:.LANCHOR0 - add x1, x0, 144 - strh wzr, [x0,144] - mov w0, 1 - strh w0, [x1,2] - mov w0, 2 - strh w0, [x1,4] - mov x0, 0 -.L89: - add x3, x1, x0 - add w4, w0, 3 - add x0, x0, 2 - cmp x0, 1018 - strh w4, [x3,6] - bne .L89 - b .L70 -.L88: + bne .L101 + add x0, x1, :lo12:.LANCHOR0 + mov w3, 1 + add x2, x0, 150 + strh w3, [x0, 146] + mov w3, 2 + strh wzr, [x0, 144] + strh w3, [x0, 148] + mov w0, 3 +.L102: + strh w0, [x2], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 1021 + bne .L102 + b .L83 +.L101: cmp w0, 10 - bne .L90 + bne .L103 + add x2, x1, :lo12:.LANCHOR0 mov x0, 0 - add x3, x2, :lo12:.LANCHOR0 -.L91: - add x1, x3, 144 - strh w0, [x1,x0,lsl 1] + add x3, x2, 144 +.L104: + strh w0, [x3, x0, lsl 1] add x0, x0, 1 cmp x0, 63 - bne .L91 - mov x0, 0 -.L92: - add x3, x1, x0 - add w4, w0, 63 - add x0, x0, 2 - cmp x0, 898 - strh w4, [x3,126] - bne .L92 - b .L70 -.L90: + bne .L104 + add x2, x2, 270 +.L105: + strh w0, [x2], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 961 + bne .L105 + b .L83 +.L103: cmp w0, 11 - bne .L93 + bne .L106 + add x2, x1, :lo12:.LANCHOR0 mov x0, 0 - add x1, x2, :lo12:.LANCHOR0 -.L94: - add x3, x1, 144 - strh w0, [x3,x0,lsl 1] + add x3, x2, 144 +.L107: + strh w0, [x3, x0, lsl 1] add x0, x0, 1 cmp x0, 8 - bne .L94 - mov w6, 7 - mov w5, 6 -.L96: + bne .L107 + add x2, x2, 160 +.L109: and w4, w0, 1 - ubfiz w1, w0, 1, 15 + ubfiz w3, w0, 1, 15 + add w4, w4, 6 add w0, w0, 1 - cmp w4, wzr - csel w4, w6, w5, ne - add x3, x3, 2 - uxth w0, w0 - sub w1, w1, w4 + sub w3, w3, w4 + strh w3, [x2], 2 + and w0, w0, 65535 cmp w0, 512 - strh w1, [x3,14] - bne .L96 - b .L70 -.L93: + bne .L109 + b .L83 +.L106: cmp w0, 12 - bne .L70 - add x1, x2, :lo12:.LANCHOR0 - mov w3, 4 - add x0, x1, 144 - strh wzr, [x1,144] - mov w1, 1 - strh w1, [x0,2] - mov w1, 2 - strh w1, [x0,4] - mov w1, 3 - strh w1, [x0,6] -.L97: - sub w1, w3, #1 - add x0, x0, 2 - add w1, w1, w3, lsr 1 - add w3, w3, 1 - strh w1, [x0,6] - uxth w3, w3 - cmp w3, 512 - bne .L97 - b .L70 -.L65: - cmp w19, w0, uxth - bls .L122 - add x1, x2, 144 - add x3, x2, 1168 - ldrh w1, [x1,x0,lsl 1] - add x0, x0, 1 - strh w1, [x3,w1,sxtw 1] - b .L65 -.L122: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - ret + bne .L83 + add x0, x1, :lo12:.LANCHOR0 + mov w3, 1 + add x2, x0, 152 + strh w3, [x0, 146] + mov w3, 2 + strh wzr, [x0, 144] + strh w3, [x0, 148] + mov w3, 3 + strh w3, [x0, 150] + mov w0, 4 +.L110: + sub w3, w0, #1 + add w3, w3, w0, lsr 1 + add w0, w0, 1 + strh w3, [x2], 2 + and w0, w0, 65535 + cmp w0, 512 + bne .L110 + b .L83 +.L111: + ldrh w0, [x1, x2, lsl 1] + add x2, x2, 1 + strh w0, [x21, w0, sxtw 1] + b .L78 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .align 2 .global FlashPrintInfo @@ -801,213 +773,209 @@ FlashPrintInfo: .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 + and w1, w1, 255 + add w2, w1, 1 add x29, sp, 0 - add x2, x2, :lo12:.LANCHOR1 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - add x23, x2, w1, 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 + stp x21, x22, [sp, 32] + mov x21, x0 + mov w0, 5 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + adrp x23, g_maxRegNum + umull x2, w2, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + stp x19, x20, [sp, 16] + add x25, x0, 256 + add x24, x0, 352 + add x25, x25, x2 + add x24, x24, x2 + add x23, x23, :lo12:g_maxRegNum + mov x19, x0 + add x22, x0, w1, sxtw mov x20, 0 - add x24, x24, :lo12:g_maxRegNum - mov x19, x2 - add x26, x26, :lo12:g_retryMode -.L125: - ldrb w0, [x24] + mov w26, 85 +.L135: + ldrb w0, [x23] cmp w0, w20 - bls .L131 - 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 .L126 - ldrsb w0, [x25,x20] - b .L130 -.L126: - cmp w0, 35 - bne .L128 - ldrsb w0, [x21,x20] - b .L130 -.L128: - ldrsb w0, [x23,400] -.L130: - str w0, [x22] - add x20, x20, 1 - b .L125 -.L131: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + bhi .L139 + 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 +.L139: + add x0, x19, 352 + str w26, [x21, 8] + ldrsb w0, [x20, x0] + str w0, [x21, 4] + mov x0, 1000 + bl __const_udelay + adrp x0, g_retryMode + ldrb w0, [x0, #:lo12:g_retryMode] + cmp w0, 34 + bne .L136 + ldrsb w0, [x24, x20] +.L141: + add x20, x20, 1 + str w0, [x21] + b .L135 +.L136: + cmp w0, 35 + bne .L138 + ldrsb w0, [x25, x20] + b .L141 +.L138: + ldrsb w0, [x22, 400] + b .L141 .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, w1, uxtb 2 - stp x23, x24, [sp,48] - mov x21, x0 - add x23, x1, 412 + stp x21, x22, [sp, 32] + mov x22, x0 + ubfiz x21, x1, 2, 8 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x21, x21, 4 + add x0, x0, 408 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + add x21, x0, x21 + adrp x23, g_maxRegNum + mov x19, x0 + add x23, x23, :lo12:g_maxRegNum mov x20, 0 - add x22, x22, :lo12:g_maxRegNum mov w24, 161 - mov x19, x2 -.L133: - ldrb w0, [x22] +.L143: + ldrb w0, [x23] cmp w0, w20 - bls .L135 - 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 .L133 -.L135: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + bhi .L144 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L144: + str w24, [x22, 8] + str wzr, [x22] + ldrsb w0, [x20, x19] + str w0, [x22] + ldrsb w0, [x21, x20] + add x20, x20, 1 + str w0, [x22] + mov x0, 1500 + bl __const_udelay + b .L143 .size SamsungSetRRPara, .-SamsungSetRRPara .align 2 .global FlashDieInfoInit .type FlashDieInfoInit, %function FlashDieInfoInit: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -48]! adrp x0, .LANCHOR1+482 add x29, sp, 0 - stp x21, x22, [sp,32] + ldrh w0, [x0, #:lo12:.LANCHOR1+482] + stp x19, x20, [sp, 16] + str x21, [sp, 32] adrp x21, .LANCHOR0 - ldrh w0, [x0,#:lo12:.LANCHOR1+482] - stp x19, x20, [sp,16] add x19, x21, :lo12:.LANCHOR0 - str x27, [sp,80] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - strb wzr, [x19,3216] - add x25, x19, 3220 - strb wzr, [x19,3217] + add x20, x19, 3228 + strb wzr, [x19, 3216] + strb wzr, [x19, 3217] bl FlashBlockAlignInit - mov w1, 0 mov w2, 8 - mov x0, x25 - add x24, x19, 3228 - adrp x26, IDByte - mov x23, 0 - bl ftl_memset - add x26, x26, :lo12:IDByte mov w1, 0 + add x0, x19, 3220 + bl ftl_memset mov w2, 32 - mov x0, x24 - bl ftl_memset - add x0, x19, 3260 mov w1, 0 - mov w2, 192 + mov x0, x20 bl ftl_memset - ldr x20, [x19,104] - add x22, x20, 1 -.L138: - ldrb w2, [x20] - mov x0, x22 - add x1, x26, x23, lsl 3 + mov w2, 192 + mov w1, 0 + add x0, x19, 3260 + bl ftl_memset + ldr x7, [x19, 104] + adrp x0, IDByte + add x13, x19, 3072 + add x11, x0, :lo12:IDByte + mov x10, x0 + add x12, x7, 1 + mov x8, 0 +.L148: + ldrb w2, [x7] + add x1, x11, x8, lsl 3 + mov x0, x12 bl FlashMemCmp8 - cbnz w0, .L137 - ldrb w1, [x19,3216] - str w0, [x24,w1,sxtw 2] - add w0, w1, 1 - strb w23, [x25,w1,sxtw] - strb w0, [x19,3216] -.L137: - add x23, x23, 1 - cmp x23, 4 - bne .L138 - add x19, x21, :lo12:.LANCHOR0 - ldrb w0, [x19,3216] - strb w0, [x19,3217] - ldrb w0, [x20,8] + cbnz w0, .L147 + ldrb w0, [x19, 3216] + add w1, w0, 1 + strb w1, [x19, 3216] + str wzr, [x20, x0, lsl 2] + add x0, x13, x0 + strb w8, [x0, 148] +.L147: + add x8, x8, 1 + cmp x8, 4 + bne .L148 + add x8, x21, :lo12:.LANCHOR0 + ldrb w0, [x8, 3216] + strb w0, [x8, 3217] + ldrb w0, [x7, 8] cmp w0, 2 - beq .L139 -.L143: - add x21, x21, :lo12:.LANCHOR0 - ldrb w1, [x20,13] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldrb w0, [x21,3216] - ldr x27, [sp,80] + beq .L149 +.L153: + add x9, x21, :lo12:.LANCHOR0 + ldrh w1, [x7, 14] + ldp x19, x20, [sp, 16] + ldrb w0, [x9, 3216] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 mul w0, w0, w1 - ldrh w1, [x20,14] - ldp x19, x20, [sp,16] + ldrb w1, [x7, 13] mul w0, w0, w1 - strh w0, [x21,3452] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 96 + strh w0, [x9, 3452] ret -.L139: - adrp x24, IDByte - ldr w26, [x19,92] - mov x23, 0 - add x24, x24, :lo12:IDByte - add x25, x19, 3228 - add x27, x19, 3220 -.L142: - ldrb w2, [x20] - mov x0, x22 - add x1, x24, x23, lsl 3 +.L149: + ldr w14, [x8, 92] + add x10, x10, :lo12:IDByte + add x13, x8, 3228 + add x15, x8, 3072 + mov x11, 0 +.L152: + ldrb w2, [x7] + add x1, x10, x11, lsl 3 + mov x0, x12 bl FlashMemCmp8 - cbnz w0, .L140 - ldrb w1, [x20,13] - ldrb w3, [x19,3216] - mul w2, w1, w26 - ldrh w1, [x20,14] - mov x0, x3 - and w1, w1, 65280 - mul w1, w2, w1 - str w1, [x25,w3,sxtw 2] - ldrb w2, [x20,23] - cbz w2, .L141 - lsl w1, w1, 1 - str w1, [x25,w3,sxtw 2] -.L141: - add w0, w0, 1 - strb w23, [x27,x3] - strb w0, [x19,3216] -.L140: - add x23, x23, 1 - cmp x23, 4 - bne .L142 - b .L143 + cbnz w0, .L150 + ldrb w1, [x7, 13] + ldrh w0, [x7, 14] + ldrb w2, [x8, 3216] + and w0, w0, 65280 + mul w1, w1, w14 + mul w0, w0, w1 + sxtw x1, w2 + str w0, [x13, x1, lsl 2] + ldrb w3, [x7, 23] + cbz w3, .L151 + lsl w0, w0, 1 + str w0, [x13, x1, lsl 2] +.L151: + add x1, x15, x1 + add w2, w2, 1 + strb w2, [x8, 3216] + strb w11, [x1, 148] +.L150: + add x11, x11, 1 + cmp x11, 4 + bne .L152 + b .L153 .size FlashDieInfoInit, .-FlashDieInfoInit .align 2 .global FlashReadIdbData @@ -1015,8 +983,8 @@ FlashDieInfoInit: FlashReadIdbData: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR0 - mov w2, 2048 add x1, x1, :lo12:.LANCHOR0 + mov w2, 2048 add x29, sp, 0 add x1, x1, 3456 bl ftl_memcpy @@ -1028,75 +996,72 @@ FlashReadIdbData: .global FlashLoadPhyInfoInRam .type FlashLoadPhyInfoInRam, %function FlashLoadPhyInfoInRam: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! + adrp x9, IDByte + add x9, x9, :lo12:IDByte + mov x8, 0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR1 - str x23, [sp,48] - stp x21, x22, [sp,32] - adrp x23, IDByte - add x21, x19, :lo12:.LANCHOR1 - add x21, x21, 504 - mov w20, 0 - add x23, x23, :lo12:IDByte -.L155: - ldrb w2, [x21] - add x0, x21, 1 - mov x1, x23 + add x7, x19, :lo12:.LANCHOR1 + str x21, [sp, 32] + add x7, x7, 505 +.L166: + ldrb w2, [x7, -1] + mov w10, w8 + lsl x21, x8, 5 + mov x1, x9 + mov x0, x7 bl FlashMemCmp8 - mov w22, w0 - cbnz w0, .L152 - add x0, x19, :lo12:.LANCHOR1 - ubfiz x20, x20, 5, 32 - add x1, x0, 504 - adds x20, x1, x20 - beq .L158 - ldrb w3, [x20,22] - mov x2, 0 - mov x1, x0 - b .L157 -.L152: - add w20, w20, 1 - add x21, x21, 32 - cmp w20, 86 - bne .L155 - b .L158 -.L157: - add x4, x1, x2, lsl 5 - mov w0, w2 - ldrb w4, [x4,3256] + mov w20, w0 + cbnz w0, .L164 + add x2, x19, :lo12:.LANCHOR1 + ubfiz x10, x10, 5, 32 + add x0, x2, 504 + add x1, x2, 3256 + add x21, x0, x21 + add x0, x0, x10 + ldrb w3, [x0, 22] + mov x0, 0 +.L165: + lsl x4, x0, 5 + mov w2, w0 + ldrb w4, [x4, x1] cmp w4, w3 - beq .L156 - add x2, x2, 1 - cmp x2, 4 - bne .L157 - mov w0, w2 -.L156: + beq .L168 + add x0, x0, 1 + cmp x0, 4 + bne .L165 + mov w2, w0 +.L168: add x19, x19, :lo12:.LANCHOR1 - ubfiz x1, x0, 5, 32 - adrp x0, .LANCHOR0 - add x2, x19, 3256 - add x0, x0, :lo12:.LANCHOR0 - add x1, x2, x1 - add x0, x0, 112 - mov w2, 32 + ubfiz x1, x2, 5, 32 + add x0, x19, 3256 add x19, x19, 472 - bl ftl_memcpy - mov x0, x19 - mov x1, x20 + add x1, x0, x1 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 mov w2, 32 + add x0, x0, 112 bl ftl_memcpy - ldrh w0, [x19,10] + mov w2, 32 + mov x1, x21 + mov x0, x19 + bl ftl_memcpy + ldrh w0, [x19, 10] bl FlashBlockAlignInit - b .L153 -.L158: - mov w22, -1 -.L153: - mov w0, w22 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + b .L163 +.L164: + add x8, x8, 1 + add x7, x7, 32 + cmp x8, 86 + bne .L166 + mov w20, -1 +.L163: + mov w0, w20 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .align 2 @@ -1105,77 +1070,78 @@ FlashLoadPhyInfoInRam: ftl_flash_suspend: adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldr x1, [x0,1152] + ldr x1, [x0, 1152] ldr w2, [x1] - str w2, [x0,1160] - ldr w2, [x1,4] - str w2, [x0,1164] - ldr w2, [x1,8] - str w2, [x0,1168] - ldr w2, [x1,12] - str w2, [x0,1172] - ldr w2, [x1,304] - str w2, [x0,1176] - ldr w2, [x1,308] - str w2, [x0,1180] - ldr w2, [x1,336] - ldr w1, [x1,344] - str w2, [x0,1184] - str w1, [x0,1188] + str w2, [x0, 1160] + ldr w2, [x1, 4] + str w2, [x0, 1164] + ldr w2, [x1, 8] + str w2, [x0, 1168] + ldr w2, [x1, 12] + str w2, [x0, 1172] + ldr w2, [x1, 304] + str w2, [x0, 1176] + ldr w2, [x1, 308] + str w2, [x0, 1180] + ldr w2, [x1, 336] + ldr w1, [x1, 344] + str w2, [x0, 1184] + str w1, [x0, 1188] ret .size ftl_flash_suspend, .-ftl_flash_suspend .align 2 .global LogAddr2PhyAddr .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: - adrp x6, .LANCHOR2 - uxtb w4, w4 - add x7, x6, :lo12:.LANCHOR2 - mov x9, x6 - add x7, x7, 1192 - ldrh w5, [x7,12] - ldrh w7, [x7,14] - mul w5, w5, w7 - adrp x7, .LANCHOR0 - add x8, x7, :lo12:.LANCHOR0 - uxth w5, w5 - ldrh w10, [x8,92] - ldrb w8, [x8,88] - ubfiz w6, w10, 1, 15 - cmp w8, 1 - ldr w8, [x0,4] - csel w10, w6, w10, eq + adrp x7, .LANCHOR2 + add x6, x7, :lo12:.LANCHOR2 + mov x9, x7 + ldr w7, [x0, 4] + and w4, w4, 255 + ldrh w10, [x6, 1204] + ldrh w5, [x6, 1206] + adrp x6, .LANCHOR0 + ubfx x12, x7, 10, 16 + and w7, w7, 1023 + mul w5, w5, w10 + and w10, w5, 65535 + add x5, x6, :lo12:.LANCHOR0 + ldrh w8, [x5, 92] + ldrb w11, [x5, 88] + ubfiz w5, w8, 1, 15 + cmp w11, 1 + csel w8, w5, w8, eq cmp w1, 1 - ubfx x6, x8, 10, 16 - and w8, w8, 1023 - udiv w11, w6, w5 - msub w5, w11, w5, w6 - uxth w6, w5 - bne .L165 + udiv w5, w12, w10 + and w11, w5, 65535 + msub w5, w5, w10, w12 + and w5, w5, 65535 + bne .L175 add x1, x9, :lo12:.LANCHOR2 - ldrb w1, [x1,1220] - cbnz w1, .L165 - add x1, x7, :lo12:.LANCHOR0 + ldrb w1, [x1, 1220] + cbnz w1, .L175 + add x1, x6, :lo12:.LANCHOR0 add x1, x1, 144 - ldrh w8, [x1,w8,sxtw 1] -.L165: - add x7, x7, :lo12:.LANCHOR0 + ldrh w7, [x1, w7, sxtw 1] +.L175: + add x6, x6, :lo12:.LANCHOR0 + uxtw x1, w11 + add x6, x6, 3228 cmp w4, 1 - add x7, x7, 3228 - mov w1, 0 - ldr w5, [x7,w11,uxtw 2] - madd w5, w6, w10, w5 - add w5, w5, w8 + ldr w1, [x6, x1, lsl 2] + madd w5, w5, w8, w1 + add w5, w5, w7 str w5, [x2] str w11, [x3] - bls .L166 - ldr w1, [x0,4] - ldr w0, [x0,60] + bls .L177 + ldr w1, [x0, 4] + ldr w0, [x0, 60] add w1, w1, 1024 cmp w1, w0 - cset w1, eq -.L166: - mov w0, w1 + cset w0, eq + ret +.L177: + mov w0, 0 ret .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .align 2 @@ -1183,61 +1149,61 @@ LogAddr2PhyAddr: .type FlashReadStatusEN, %function FlashReadStatusEN: stp x29, x30, [sp, -32]! - adrp x3, .LANCHOR0 ubfiz x0, x0, 4, 8 - add x4, x3, :lo12:.LANCHOR0 + adrp x4, .LANCHOR0 + add x3, x4, :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,104] - ldrb w19, [x6,8] - ldrb w0, [x0,8] + stp x19, x20, [sp, 16] + add x5, x3, x0 + ldr x20, [x3, x0] + ldr x0, [x3, 104] + ldrb w19, [x5, 8] + ldrb w0, [x0, 8] cmp w0, 2 - bne .L169 - add x4, x4, 112 - cbnz w2, .L170 - ldrb w2, [x4,13] - b .L178 -.L170: - ldrb w2, [x4,14] -.L178: + bne .L179 + and w2, w2, 255 + add x3, x3, 112 + cbnz w2, .L180 + ldrb w2, [x3, 13] +.L190: add x0, x19, 8 - add x3, x3, :lo12:.LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 add x0, x20, x0, lsl 8 - str w2, [x0,8] - mov w2, 0 - ldrb w4, [x3,127] - cbz w4, .L173 + str w2, [x0, 8] + ldrb w4, [x4, 127] + cbz w4, .L184 add x3, x19, 8 - lsl x3, x3, 8 -.L177: + mov w2, 0 + add x3, x20, x3, lsl 8 +.L183: cmp w2, w4 - bcs .L173 - 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 .L177 -.L169: - add x0, x19, 8 - mov w1, 112 - add x0, x20, x0, lsl 8 - str w1, [x0,8] -.L173: + bcc .L185 +.L184: add x19, x19, 8 mov x0, 400 lsl x19, x19, 8 bl __const_udelay - ldr w0, [x20,x19] - ldp x19, x20, [sp,16] + ldr w0, [x20, x19] + ldp x19, x20, [sp, 16] + and w0, w0, 255 ldp x29, x30, [sp], 32 - uxtb w0, w0 ret +.L180: + ldrb w2, [x3, 14] + b .L190 +.L185: + lsl w0, w2, 3 + add w2, w2, 1 + lsr w0, w1, w0 + and w0, w0, 255 + str w0, [x3, 4] + b .L183 +.L179: + add x0, x19, 8 + mov w1, 112 + add x0, x20, x0, lsl 8 + str w1, [x0, 8] + b .L184 .size FlashReadStatusEN, .-FlashReadStatusEN .align 2 .global FlashWaitReadyEN @@ -1245,27 +1211,27 @@ FlashReadStatusEN: FlashWaitReadyEN: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 + str x21, [sp, 32] mov w20, w1 - uxtb w21, w2 -.L180: - mov w0, w19 + and w21, w2, 255 +.L192: mov w1, w20 mov w2, w21 + mov w0, w19 bl FlashReadStatusEN + mov w1, w0 cmp w0, 255 - mov w3, w0 - beq .L180 - tbnz x3, 6, .L181 - mov x0, 1 + beq .L192 + tbnz x1, 6, .L191 mov x1, 3 + mov x0, 1 bl usleep_range - b .L180 -.L181: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + b .L192 +.L191: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashWaitReadyEN, .-FlashWaitReadyEN @@ -1274,52 +1240,52 @@ FlashWaitReadyEN: .type ftl_read_flash_info, %function ftl_read_flash_info: stp x29, x30, [sp, -32]! - mov w1, 0 mov w2, 11 + mov w1, 0 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov x19, x0 bl ftl_memset - adrp x1, .LANCHOR0 - mov w5, 1 - add x1, x1, :lo12:.LANCHOR0 - ldr x0, [x1,104] - ldrb w2, [x0,9] - ldr w0, [x1,92] - mul w0, w0, w2 - strh w0, [x19,4] - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldrb w2, [x0,1221] - ldr w0, [x0,1224] - str w0, [x19] - strb w2, [x19,7] - ldrb w4, [x1,3216] - ldr x0, [x1,104] - ldrb w0, [x0,9] - strb w0, [x19,6] - mov w0, 32 - strb w0, [x19,8] - ldr x0, [x1,104] - add x1, x1, 3220 - ldrb w0, [x0,7] - strb w0, [x19,9] - mov x0, 0 - strb wzr, [x19,10] -.L186: - cmp w4, w0, uxtb - bls .L188 - 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 .L186 -.L188: - ldr x19, [sp,16] + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov w4, 1 + ldr x1, [x0, 104] + ldrb w2, [x1, 9] + ldr w1, [x0, 92] + mul w1, w1, w2 + strh w1, [x19, 4] + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldrb w2, [x1, 1221] + ldr w1, [x1, 1224] + strb w2, [x19, 7] + mov x2, 0 + str w1, [x19] + ldr x1, [x0, 104] + ldrb w3, [x0, 3216] + ldrb w1, [x1, 9] + strb w1, [x19, 6] + mov w1, 32 + strb w1, [x19, 8] + ldr x1, [x0, 104] + add x0, x0, 3220 + ldrb w1, [x1, 7] + strb w1, [x19, 9] + strb wzr, [x19, 10] +.L199: + cmp w3, w2, uxtb + bhi .L200 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L200: + ldrb w1, [x2, x0] + add x2, x2, 1 + ldrb w5, [x19, 10] + lsl w1, w4, w1 + orr w1, w1, w5 + strb w1, [x19, 10] + b .L199 .size ftl_read_flash_info, .-ftl_read_flash_info .align 2 .global FlashScheduleEnSet @@ -1327,8 +1293,8 @@ ftl_read_flash_info: FlashScheduleEnSet: adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 - ldr w2, [x1,1228] - str w0, [x1,1228] + ldr w2, [x1, 1228] + str w0, [x1, 1228] mov w0, w2 ret .size FlashScheduleEnSet, .-FlashScheduleEnSet @@ -1337,8 +1303,8 @@ FlashScheduleEnSet: .type FlashGetPageSize, %function FlashGetPageSize: adrp x0, .LANCHOR0+104 - ldr x0, [x0,#:lo12:.LANCHOR0+104] - ldrb w0, [x0,9] + ldr x0, [x0, #:lo12:.LANCHOR0+104] + ldrb w0, [x0, 9] ret .size FlashGetPageSize, .-FlashGetPageSize .align 2 @@ -1351,13 +1317,12 @@ NandcReadDontCaseBusyEn: .global NandcGetChipIf .type NandcGetChipIf, %function NandcGetChipIf: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 add x2, x1, x0 - ldr x0, [x1,x0] - ldrb w2, [x2,8] + ldr x0, [x1, x0] + ldrb w2, [x2, 8] add x2, x2, 8 add x0, x0, x2, lsl 8 ret @@ -1367,12 +1332,12 @@ NandcGetChipIf: .type NandcSetDdrPara, %function NandcSetDdrPara: adrp x1, .LANCHOR2+1152 - uxtb w0, w0 + and w0, w0, 255 lsl w2, w0, 8 + ldr x1, [x1, #:lo12:.LANCHOR2+1152] orr w0, w2, w0, lsl 16 - ldr x1, [x1,#:lo12:.LANCHOR2+1152] orr w0, w0, 1 - str w0, [x1,304] + str w0, [x1, 304] ret .size NandcSetDdrPara, .-NandcSetDdrPara .align 2 @@ -1380,11 +1345,11 @@ NandcSetDdrPara: .type NandcSetDdrDiv, %function NandcSetDdrDiv: adrp x1, .LANCHOR2+1152 - uxtb w0, w0 - ldr x2, [x1,#:lo12:.LANCHOR2+1152] - mov w1, 16640 - orr w0, w0, w1 - str w0, [x2,344] + and w0, w0, 255 + mov w2, 16640 + orr w0, w0, w2 + ldr x1, [x1, #:lo12:.LANCHOR2+1152] + str w0, [x1, 344] ret .size NandcSetDdrDiv, .-NandcSetDdrDiv .align 2 @@ -1392,8 +1357,8 @@ NandcSetDdrDiv: .type NandcSetDdrMode, %function NandcSetDdrMode: adrp x1, .LANCHOR2+1152 - cmp w0, wzr - ldr x2, [x1,#:lo12:.LANCHOR2+1152] + cmp w0, 0 + ldr x2, [x1, #:lo12:.LANCHOR2+1152] ldr w1, [x2] and w3, w1, -8193 orr w1, w1, 253952 @@ -1406,47 +1371,45 @@ NandcSetDdrMode: .type NandcSetMode, %function NandcSetMode: adrp x1, .LANCHOR2+1152 - uxtb w0, w0 + and w0, w0, 255 tst w0, 6 - ldr x2, [x1,#:lo12:.LANCHOR2+1152] + ldr x2, [x1, #:lo12:.LANCHOR2+1152] ldr w1, [x2] - beq .L199 - and w0, w0, 4 + beq .L212 orr w1, w1, 24576 - cmp w0, wzr - mov w0, 8322 + tst x0, 4 and w1, w1, -32769 - str w0, [x2,344] - mov w0, 4099 + mov w0, 8322 orr w1, w1, 196608 - movk w0, 0x10, lsl 16 - str w0, [x2,304] + str w0, [x2, 344] + mov w0, 4099 orr w3, w1, 32768 - mov w0, 38 - str w0, [x2,308] + movk w0, 0x10, lsl 16 + str w0, [x2, 304] csel w1, w3, w1, ne + mov w0, 38 + str w0, [x2, 308] mov w0, 39 - str w0, [x2,308] - b .L201 -.L199: - and w1, w1, -8193 -.L201: - str w1, [x2] + str w0, [x2, 308] +.L214: mov w0, 0 + str w1, [x2] ret +.L212: + and w1, w1, -8193 + b .L214 .size NandcSetMode, .-NandcSetMode .align 2 .global NandcFlashCs .type NandcFlashCs, %function NandcFlashCs: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 add x3, x1, x0 - ldr x2, [x1,x0] + ldr x2, [x1, x0] mov w1, 1 - ldrb w3, [x3,8] + ldrb w3, [x3, 8] ldr w0, [x2] lsl w1, w1, w3 bfi w0, w1, 0, 8 @@ -1457,11 +1420,10 @@ NandcFlashCs: .global NandcFlashDeCs .type NandcFlashDeCs, %function NandcFlashDeCs: - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 24 - ldr x1, [x1,x0] + ldr x1, [x1, x0] ldr w0, [x1] and w0, w0, -256 and w0, w0, -131073 @@ -1473,179 +1435,180 @@ NandcFlashDeCs: .type HynixSetRRPara, %function HynixSetRRPara: stp x29, x30, [sp, -96]! - adrp x4, .LANCHOR0 add x29, sp, 0 - stp x23, x24, [sp,48] - uxtb x23, w0 - add x0, x4, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - str x27, [sp,80] - adrp x24, .LANCHOR2 - stp x21, x22, [sp,32] + stp x23, x24, [sp, 48] + and w23, w0, 255 + str x27, [sp, 80] + adrp x0, .LANCHOR0 + and w27, w1, 255 + add x1, x0, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] mov x20, x2 - mov x26, x23 - ldr x0, [x0,104] - uxtb w27, w1 - uxtb w25, w3 - mov x2, x4 - add x19, x24, :lo12:.LANCHOR2 - ldrb w0, [x0,19] - cmp w0, 6 - bne .L207 - add x19, x19, x23, lsl 6 - lsl w4, w25, 2 - add x19, x19, 1252 - b .L213 -.L207: - cmp w0, 7 - bne .L209 - mov x3, 160 - mov w4, 10 - madd x19, x23, x3, x19 - mul w4, w25, w4 - add x19, x19, 1260 -.L213: - add x19, x19, w4, sxtw - b .L208 -.L209: - cmp w0, 8 - bne .L210 - add x19, x19, 1260 - add w4, w25, w25, lsl 2 - b .L213 -.L210: - lsl x4, x23, 3 - add x4, x4, w25, sxtw - add x19, x19, x4, lsl 3 - add x19, x19, 1252 -.L208: - add x4, x2, :lo12:.LANCHOR0 - lsl x0, x23, 4 - add x4, x4, 24 - uxtb x27, w27 - add x1, x4, x0 - ldr x21, [x4,x0] - mov w0, w26 - ldrb w22, [x1,8] + stp x21, x22, [sp, 32] + mov x2, x0 + stp x25, x26, [sp, 64] + adrp x21, .LANCHOR2 + and w22, w3, 255 + add x19, x21, :lo12:.LANCHOR2 + ldr x1, [x1, 104] + ldrb w1, [x1, 19] + cmp w1, 6 + bne .L220 + ubfiz x0, x23, 6, 8 + add x19, x19, 1232 + add x0, x0, 20 + add x0, x0, w22, uxtw 2 +.L227: + add x19, x19, x0 +.L221: + sxtw x25, w23 + add x0, x2, :lo12:.LANCHOR0 + lsl x1, x25, 4 + and x27, x27, 255 + add x2, x0, x1 + mov x26, 0 + ldr x24, [x0, x1] + mov w0, w23 + ldrb w5, [x2, 8] bl NandcFlashCs - ubfiz x22, x22, 8, 8 + ubfiz x5, x5, 8, 8 + add x24, x24, x5 mov w0, 54 - add x21, x21, x22 - mov x22, 0 - str w0, [x21,2056] -.L211: - cmp x22, x27 - beq .L214 - 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 .L211 -.L214: - add x24, x24, :lo12:.LANCHOR2 + str w0, [x24, 2056] +.L224: + cmp x26, x27 + bne .L225 + add x21, x21, :lo12:.LANCHOR2 mov w0, 22 - add x23, x24, x23 - str w0, [x21,2056] - mov w0, w26 + add x21, x21, x25 + str w0, [x24, 2056] + mov w0, w23 bl NandcFlashDeCs - strb w25, [x23,2088] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldr x27, [sp,80] + strb w22, [x21, 2088] + 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 +.L220: + cmp w1, 7 + bne .L222 + mov w0, 160 + mov x1, 28 + add x19, x19, 1232 + umaddl x1, w0, w23, x1 + mov w0, 10 + umaddl x0, w22, w0, x1 + b .L227 +.L222: + cmp w1, 8 + bne .L223 + add x0, x19, 1260 + add w19, w22, w22, lsl 2 + add x19, x0, w19, sxtw + b .L221 +.L223: + and x0, x22, 255 + add x0, x0, 2 + add x0, x0, w23, uxtw 3 + add x19, x19, x0, lsl 3 + add x19, x19, 1236 + b .L221 +.L225: + ldrb w0, [x20, x26] + str w0, [x24, 2052] + mov x0, 1000 + bl __const_udelay + ldrsb w0, [x19, x26] + add x26, x26, 1 + str w0, [x24, 2048] + b .L224 .size HynixSetRRPara, .-HynixSetRRPara .align 2 .global FlashSetReadRetryDefault .type FlashSetReadRetryDefault, %function FlashSetReadRetryDefault: adrp x0, .LANCHOR0+104 + ldr x0, [x0, #:lo12:.LANCHOR0+104] + ldrb w0, [x0, 19] + sub w0, w0, #1 + and w0, w0, 255 + cmp w0, 7 + bhi .L235 stp x29, x30, [sp, -48]! add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR0+104] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - mov x19, 0 - ldrb w0, [x0,19] - sub w0, w0, #1 - uxtb w0, w0 - cmp w0, 7 - bhi .L215 + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - adrp x21, IDByte add x20, x20, :lo12:.LANCHOR2 - add x21, x21, :lo12:IDByte + stp x21, x22, [sp, 32] + adrp x21, IDByte add x22, x20, 1236 -.L220: + add x21, x21, :lo12:IDByte + mov x19, 0 +.L231: lsl x1, x19, 3 - uxtb w0, w19 - ldrb w1, [x1,x21] + and w0, w19, 255 + ldrb w1, [x1, x21] cmp w1, 173 - bne .L217 - ldrb w1, [x20,1233] - mov x2, x22 + bne .L230 + ldrb w1, [x20, 1233] mov w3, 0 + mov x2, x22 bl HynixSetRRPara -.L217: +.L230: add x19, x19, 1 cmp x19, 4 - bne .L220 -.L215: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + bne .L231 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L235: + ret .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .align 2 .global FlashWaitCmdDone .type FlashWaitCmdDone, %function FlashWaitCmdDone: - stp x29, x30, [sp, -48]! - uxtb x1, w0 - mov x2, 24 + and x5, x0, 255 + mov x0, 24 + stp x29, x30, [sp, -32]! + adrp x4, .LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 + mul x0, x5, x0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x21, x22, [sp,32] - add x20, x20, :lo12:.LANCHOR0 - mov x22, x1 - mul x1, x1, x2 - add x0, x20, 3260 - add x19, x0, x1 - ldrb w21, [x0,x1] - ldr x0, [x19,8] - cbz x0, .L224 - mov w0, w21 - add x20, x20, 3228 + add x1, x4, 3260 + stp x19, x20, [sp, 16] + add x19, x1, x0 + ldr x2, [x19, 8] + cbz x2, .L240 + ldrb w20, [x1, x0] + mov w0, w20 bl NandcFlashCs - ldr w0, [x20,w22,sxtw 2] - ldr w1, [x19,4] - cmp w0, wzr - mov w0, w21 + add x4, x4, 3228 + ldr w1, [x19, 4] + ldr w0, [x4, x5, lsl 2] + cmp w0, 0 + mov w0, w20 cset w2, ne bl FlashWaitReadyEN - mov w20, w0 - mov w0, w21 + mov w2, w0 + mov w0, w20 bl NandcFlashDeCs - ldr x1, [x19,8] - sbfx x0, x20, 0, 1 + sbfx x0, x2, 0, 1 + ldr x1, [x19, 8] str w0, [x1] - str xzr, [x19,8] - ldr x1, [x19,16] - cbz x1, .L224 + str xzr, [x19, 8] + ldr x1, [x19, 16] + cbz x1, .L240 str w0, [x1] - str xzr, [x19,16] -.L224: + str xzr, [x19, 16] +.L240: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashWaitCmdDone, .-FlashWaitCmdDone .align 2 @@ -1665,97 +1628,92 @@ NandcDelayns: .type NandcWaitFlashReadyNoDelay, %function NandcWaitFlashReadyNoDelay: stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 24 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 - ldr x20, [x1,x0] movk w19, 0x1, lsl 16 -.L232: + ldr x20, [x1, x0] +.L250: ldr w0, [x20] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L233 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L251 mov x0, 50 bl __const_udelay subs w19, w19, #1 - bne .L232 + bne .L250 mov w0, -1 - b .L231 -.L233: - mov w0, 0 -.L231: - ldp x19, x20, [sp,16] +.L248: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L251: + mov w0, 0 + b .L248 .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function NandcWaitFlashReady: stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 24 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 - ldr x20, [x1,x0] movk w19, 0x1, lsl 16 + ldr x20, [x1, x0] mov x0, 650 bl __const_udelay -.L237: +.L256: ldr w0, [x20] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L238 - mov x0, 1 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L257 mov x1, 2 + mov x0, 1 bl usleep_range subs w19, w19, #1 - bne .L237 + bne .L256 mov w0, -1 - b .L236 -.L238: - mov w0, 0 -.L236: - ldp x19, x20, [sp,16] +.L254: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L257: + mov w0, 0 + b .L254 .size NandcWaitFlashReady, .-NandcWaitFlashReady .align 2 .global FlashReset .type FlashReset, %function FlashReset: - stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 + stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - add x1, x1, :lo12:.LANCHOR0 - uxtb w20, w0 - add x1, x1, 24 - sbfiz x0, x20, 4, 32 - add x2, x1, x0 - str x21, [sp,32] - ldr x21, [x1,x0] - mov w0, w20 - ldrb w19, [x2,8] + str x19, [sp, 16] + and w19, w0, 255 + sbfiz x1, x19, 4, 32 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x2, x0, x1 + ldr x5, [x0, x1] + mov w0, w19 + ldrb w4, [x2, 8] bl NandcFlashCs - add x19, x19, 8 + add x4, x4, 8 + add x4, x5, x4, lsl 8 mov w0, 255 - add x19, x21, x19, lsl 8 - str w0, [x19,8] - mov w0, w20 + str w0, [x4, 8] + mov w0, w19 bl NandcWaitFlashReady - mov w0, w20 + mov w0, w19 bl NandcFlashDeCs - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashReset, .-FlashReset .align 2 @@ -1764,61 +1722,60 @@ FlashReset: flash_enter_slc_mode: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] + and w22, w0, 255 adrp x21, .LANCHOR2 - uxtb w22, w0 add x0, x21, :lo12:.LANCHOR2 - str x23, [sp,48] - stp x19, x20, [sp,16] - ldrb w0, [x0,1220] - cbz w0, .L241 + stp x19, x20, [sp, 16] + str x23, [sp, 48] + ldrb w0, [x0, 1220] + cbz w0, .L262 mov w0, w22 bl NandcFlashCs - adrp x1, .LANCHOR0 sxtw x0, w22 - add x1, x1, :lo12:.LANCHOR0 + adrp x1, .LANCHOR0 lsl x2, x0, 4 - add x1, x1, 24 - lsl x0, x0, 3 + add x1, x1, :lo12:.LANCHOR0 add x3, x1, x2 - ldr x23, [x1,x2] + lsl x0, x0, 3 + ldr x23, [x1, x2] adrp x1, IDByte add x1, x1, :lo12:IDByte - ldrb w19, [x3,8] - ldrb w0, [x1,x0] + ldrb w19, [x3, 8] + ldrb w0, [x1, x0] cmp w0, 44 - bne .L243 + bne .L264 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x23, x20 - str w0, [x20,2056] + str w0, [x20, 2056] mov w0, 145 - str w0, [x20,2052] + str w0, [x20, 2052] mov x0, 250 bl __const_udelay - str wzr, [x20,2048] + str wzr, [x20, 2048] mov w0, 1 - str w0, [x20,2048] - str wzr, [x20,2048] + str w0, [x20, 2048] + str wzr, [x20, 2048] mov x0, 500 - str wzr, [x20,2048] + str wzr, [x20, 2048] bl __const_udelay -.L243: +.L264: add x19, x19, 8 mov w0, w22 - add x21, x21, :lo12:.LANCHOR2 add x19, x23, x19, lsl 8 bl NandcWaitFlashReadyNoDelay mov w0, 218 - str w0, [x19,8] + add x21, x21, :lo12:.LANCHOR2 + str w0, [x19, 8] mov w0, w22 bl NandcWaitFlashReady mov w0, 2 - strb w0, [x21,2092] -.L241: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] + strb w0, [x21, 2092] +.L262: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size flash_enter_slc_mode, .-flash_enter_slc_mode @@ -1828,61 +1785,60 @@ flash_enter_slc_mode: flash_exit_slc_mode: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] + and w22, w0, 255 adrp x21, .LANCHOR2 - uxtb w22, w0 add x0, x21, :lo12:.LANCHOR2 - str x23, [sp,48] - stp x19, x20, [sp,16] - ldrb w0, [x0,1220] - cbz w0, .L247 + stp x19, x20, [sp, 16] + str x23, [sp, 48] + ldrb w0, [x0, 1220] + cbz w0, .L269 mov w0, w22 bl NandcFlashCs - adrp x1, .LANCHOR0 sxtw x0, w22 - add x1, x1, :lo12:.LANCHOR0 + adrp x1, .LANCHOR0 lsl x2, x0, 4 - add x1, x1, 24 - lsl x0, x0, 3 + add x1, x1, :lo12:.LANCHOR0 add x3, x1, x2 - ldr x23, [x1,x2] + lsl x0, x0, 3 + ldr x23, [x1, x2] adrp x1, IDByte add x1, x1, :lo12:IDByte - ldrb w19, [x3,8] - ldrb w0, [x1,x0] + ldrb w19, [x3, 8] + ldrb w0, [x1, x0] cmp w0, 44 - bne .L249 + bne .L271 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x23, x20 - str w0, [x20,2056] + str w0, [x20, 2056] mov w0, 145 - str w0, [x20,2052] + str w0, [x20, 2052] mov x0, 250 bl __const_udelay mov w0, 2 - str w0, [x20,2048] + str w0, [x20, 2048] mov w0, 1 - str w0, [x20,2048] - str wzr, [x20,2048] + str w0, [x20, 2048] + str wzr, [x20, 2048] mov x0, 500 - str wzr, [x20,2048] + str wzr, [x20, 2048] bl __const_udelay -.L249: +.L271: add x19, x19, 8 mov w0, w22 - add x21, x21, :lo12:.LANCHOR2 add x19, x23, x19, lsl 8 bl NandcWaitFlashReadyNoDelay + add x21, x21, :lo12:.LANCHOR2 mov w0, 223 - str w0, [x19,8] + str w0, [x19, 8] mov w0, w22 bl NandcWaitFlashReady - strb wzr, [x21,2092] -.L247: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] + strb wzr, [x21, 2092] +.L269: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size flash_exit_slc_mode, .-flash_exit_slc_mode @@ -1892,15 +1848,16 @@ flash_exit_slc_mode: FlashEraseBlock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 mov w20, w1 + str x21, [sp, 32] mov w0, w19 - str x2, [x29,40] + mov w21, w2 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr x2, [x29,40] + mov w2, w21 mov w1, w20 mov w0, w19 bl FlashEraseCmd @@ -1909,11 +1866,12 @@ FlashEraseBlock: mov w1, w20 mov w0, w19 bl FlashReadStatus - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - and w0, w20, 1 - ldp x19, x20, [sp,16] + and w0, w2, 1 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashEraseBlock, .-FlashEraseBlock @@ -1921,170 +1879,166 @@ FlashEraseBlock: .global FlashSetInterfaceMode .type FlashSetInterfaceMode, %function FlashSetInterfaceMode: - adrp x1, .LANCHOR2+2093 - adrp x3, .LANCHOR0 stp x29, x30, [sp, -16]! - add x3, x3, :lo12:.LANCHOR0 - adrp x7, IDByte + adrp x1, .LANCHOR2+2093 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 add x29, sp, 0 - ldrb w1, [x1,#:lo12:.LANCHOR2+2093] - add x3, x3, 24 - mov x6, 0 + ldrb w1, [x1, #:lo12:.LANCHOR2+2093] + adrp x7, IDByte + add x2, x2, 8 add x7, x7, :lo12:IDByte - and w11, w1, 1 - and w1, w1, 4 + and w11, w1, 4 + and w6, w1, 1 + mov x5, 0 + mov w12, 69 mov w8, 239 mov w9, 128 - uxtb w5, w1 mov w10, 1 - mov w12, 35 - mov w13, 32 - mov w14, 5 -.L265: - ldrb w4, [x6,x7] - ldr x1, [x3] - cmp w4, 152 - ldrb w2, [x3,8] - beq .L255 - cmp w4, 69 - beq .L255 - cmp w4, 173 - beq .L255 - cmp w4, 44 - bne .L256 -.L255: + mov w13, 35 + mov w14, 32 + mov w15, 5 + mov w16, 44 +.L288: + ldrb w3, [x5, x7] + ldrb w4, [x2] + cmp w3, 152 + ccmp w3, w12, 4, ne + beq .L279 + cmp w3, 173 + ccmp w3, w16, 4, ne + bne .L280 +.L279: cmp w0, 1 - bne .L258 - cbz w11, .L256 - ubfiz x2, x2, 8, 8 - cmp w4, 173 - add x1, x1, x2 - str w8, [x1,2056] - bne .L259 - str w0, [x1,2052] - b .L276 -.L259: - cmp w4, 44 - bne .L261 - str w0, [x1,2052] - str w14, [x1,2048] - b .L263 -.L261: - str w9, [x1,2052] - str w0, [x1,2048] - b .L263 -.L258: - cbz w5, .L256 - ubfiz x2, x2, 8, 8 - cmp w4, 173 - add x1, x1, x2 - str w8, [x1,2056] - bne .L262 - str w10, [x1,2052] - str w13, [x1,2048] - b .L263 -.L262: - cmp w4, 44 - bne .L264 - str w10, [x1,2052] - str w12, [x1,2048] - b .L263 -.L264: - str w9, [x1,2052] -.L276: - str wzr, [x1,2048] -.L263: - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] -.L256: - add x6, x6, 8 - add x3, x3, 16 - cmp x6, 32 - bne .L265 + ldr x1, [x2, -8] + bne .L281 + cbz w6, .L280 + ubfiz x4, x4, 8, 8 + cmp w3, 173 + add x1, x1, x4 + str w8, [x1, 2056] + bne .L282 + str w0, [x1, 2052] +.L300: + str wzr, [x1, 2048] + b .L286 +.L282: + cmp w3, 44 + bne .L284 + str w0, [x1, 2052] + str w15, [x1, 2048] +.L286: + str wzr, [x1, 2048] + str wzr, [x1, 2048] + str wzr, [x1, 2048] +.L280: + add x5, x5, 8 + add x2, x2, 16 + cmp x5, 32 + bne .L288 mov w0, 0 bl NandcWaitFlashReady mov w0, 0 ldp x29, x30, [sp], 16 ret +.L284: + str w9, [x1, 2052] + str w0, [x1, 2048] + b .L286 +.L281: + cbz w11, .L280 + ubfiz x4, x4, 8, 8 + cmp w3, 173 + add x1, x1, x4 + str w8, [x1, 2056] + bne .L285 + str w10, [x1, 2052] + str w14, [x1, 2048] + b .L286 +.L285: + cmp w3, 44 + bne .L287 + str w10, [x1, 2052] + str w13, [x1, 2048] + b .L286 +.L287: + str w9, [x1, 2052] + b .L300 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .align 2 .global FlashReadSpare .type FlashReadSpare, %function FlashReadSpare: - adrp x3, .LANCHOR1+481 - adrp x5, .LANCHOR0 - stp x29, x30, [sp, -48]! - uxtb w0, w0 - add x5, x5, :lo12:.LANCHOR0 - add x5, x5, 24 - sbfiz x6, x0, 4, 32 + stp x29, x30, [sp, -32]! + and w0, w0, 255 + sbfiz x5, x0, 4, 32 + adrp x4, .LANCHOR0 add x29, sp, 0 - ldrb w4, [x3,#:lo12:.LANCHOR1+481] - add x3, x5, x6 - str x19, [sp,16] - lsl w4, w4, 9 - str x2, [x29,40] - ldrb w3, [x3,8] - ldr x19, [x5,x6] - add x19, x19, x3, lsl 8 - and w3, w1, 255 - str wzr, [x19,2056] - str w4, [x19,2052] - lsr w4, w4, 8 - str w4, [x19,2052] - str w3, [x19,2052] - lsr w3, w1, 8 - str w3, [x19,2052] + stp x19, x20, [sp, 16] + mov x20, x2 + adrp x2, .LANCHOR1+481 + add x4, x4, :lo12:.LANCHOR0 + ldrb w3, [x2, #:lo12:.LANCHOR1+481] + add x2, x4, x5 + ldrb w19, [x2, 8] + lsl w3, w3, 9 + ldr x2, [x4, x5] + add x19, x2, x19, lsl 8 + and w2, w1, 255 + str wzr, [x19, 2056] + str w3, [x19, 2052] + lsr w3, w3, 8 + str w3, [x19, 2052] + str w2, [x19, 2052] + lsr w2, w1, 8 + str w2, [x19, 2052] lsr w1, w1, 16 - str w1, [x19,2052] + str w1, [x19, 2052] mov w1, 48 - str w1, [x19,2056] + str w1, [x19, 2056] bl NandcWaitFlashReady - ldr x2, [x29,40] - ldr w0, [x19,2048] - strb w0, [x2] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + ldr w0, [x19, 2048] + strb w0, [x20] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size FlashReadSpare, .-FlashReadSpare .align 2 .global SandiskProgTestBadBlock .type SandiskProgTestBadBlock, %function SandiskProgTestBadBlock: - adrp x3, .LANCHOR0 - uxtb w0, w0 stp x29, x30, [sp, -32]! - add x3, x3, :lo12:.LANCHOR0 - sbfiz x4, x0, 4, 32 - add x3, x3, 24 + and w0, w0, 255 + sbfiz x3, x0, 4, 32 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 add x29, sp, 0 - add x2, x3, x4 - str x19, [sp,16] - ldrb w2, [x2,8] - ldr x19, [x3,x4] - add x19, x19, x2, lsl 8 + add x4, x2, x3 + str x19, [sp, 16] + ldr x2, [x2, x3] + ldrb w19, [x4, 8] + add x19, x2, x19, lsl 8 mov w2, 162 - str w2, [x19,2056] + str w2, [x19, 2056] mov w2, 128 - str w2, [x19,2056] + str w2, [x19, 2056] and w2, w1, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w2, [x19,2052] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w2, [x19, 2052] lsr w2, w1, 8 - str w2, [x19,2052] + str w2, [x19, 2052] lsr w1, w1, 16 - str w1, [x19,2052] + str w1, [x19, 2052] mov w1, 16 - str w1, [x19,2056] + str w1, [x19, 2056] bl NandcWaitFlashReady mov w0, 112 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 400 bl __const_udelay - ldr w0, [x19,2048] - ldr x19, [sp,16] + ldr w0, [x19, 2048] + ldr x19, [sp, 16] and w0, w0, 1 ldp x29, x30, [sp], 32 ret @@ -2095,1128 +2049,1115 @@ SandiskProgTestBadBlock: SandiskSetRRPara: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x20, x0 mov w0, 239 - uxtb w19, w1 - add w19, w19, 1 - str w0, [x20,8] + and w19, w1, 255 + str w0, [x20, 8] mov w0, 17 - str w0, [x20,4] + str w0, [x20, 4] 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, 256 + add w1, w19, 1 + mov w0, 5 + adrp x2, g_maxRegNum adrp x4, g_retryMode - add x2, x2, 304 - add x3, x3, x1 - add x0, x0, :lo12:g_maxRegNum - add x1, x2, x1 + add x2, x2, :lo12:g_maxRegNum add x4, x4, :lo12:g_retryMode - mov x2, 0 -.L280: - ldrb w5, [x0] - cmp w5, w2 - bls .L285 - ldrb w5, [x4] - cmp w5, 67 - bne .L281 - ldrsb w5, [x3,x2] - b .L284 -.L281: - ldrsb w5, [x1,x2] -.L284: - str w5, [x20] - add x2, x2, 1 - b .L280 -.L285: + umull x1, w1, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x3, x0, 256 + add x0, x0, 352 + add x3, x3, x1 + add x0, x0, x1 + mov x1, 0 +.L306: + ldrb w5, [x2] + cmp w5, w1 + bhi .L309 mov w0, 0 bl NandcWaitFlashReady - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L309: + ldrb w5, [x4] + cmp w5, 67 + bne .L307 + ldrsb w5, [x0, x1] +.L311: + add x1, x1, 1 + str w5, [x20] + b .L306 +.L307: + ldrsb w5, [x3, x1] + b .L311 .size SandiskSetRRPara, .-SandiskSetRRPara .align 2 .global micron_auto_read_calibration_config .type micron_auto_read_calibration_config, %function micron_auto_read_calibration_config: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 + mov w20, w1 mov w0, w19 - sbfiz x19, x19, 4, 32 - str x1, [x29,40] bl NandcWaitFlashReady - adrp x3, .LANCHOR0 - add x3, x3, :lo12:.LANCHOR0 - add x3, x3, 24 - add x0, x3, x19 - ldr x19, [x3,x19] - ldrb w2, [x0,8] + sbfiz x0, x19, 4, 32 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + add x1, x2, x0 + ldr x0, [x2, x0] + ldrb w19, [x1, 8] + add x19, x0, x19, lsl 8 mov w0, 239 - add x19, x19, x2, lsl 8 - str w0, [x19,2056] + str w0, [x19, 2056] mov w0, 150 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 1000 bl __const_udelay - ldr x1, [x29,40] - str w1, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + str w20, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .align 2 .global FlashEraseSLc2KBlocks .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x23, x24, [sp, 48] + mov w23, 56 + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - str x25, [sp,64] - stp x23, x24, [sp,48] + umaddl x23, w1, w23, x0 add x21, x21, :lo12:.LANCHOR0 - adrp x23, .LC1 - stp x19, x20, [sp,16] - mov w24, w1 + stp x19, x20, [sp, 16] + and w22, w1, 255 mov x20, x0 - mov w22, 0 - add x25, x21, 3220 - add x23, x23, :lo12:.LC1 -.L288: - cmp w22, w24 - beq .L297 - add x2, x29, 88 - sub w4, w24, w22 - mov x0, x20 + add x24, x21, 3072 +.L315: + cmp x20, x23 + bne .L320 + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L320: mov w1, 0 - add x3, x29, 92 + mov w4, w22 + add x3, x29, 76 + add x2, x29, 72 + mov x0, x20 bl LogAddr2PhyAddr - ldr w2, [x29,92] - ldrb w0, [x21,3216] - cmp w2, w0 - bcc .L289 + ldrb w1, [x21, 3216] + ldr w0, [x29, 76] + cmp w1, w0 + bhi .L316 mov w0, -1 str w0, [x20] - b .L290 -.L289: - uxtw x2, w2 - mov x0, 24 - ldrb w19, [x25,x2] - madd x2, x2, x0, x21 +.L317: + sub w22, w22, #1 + add x20, x20, 56 + and w22, w22, 255 + b .L315 +.L316: + uxtw x0, w0 + mov x2, 24 + add x1, x24, x0 + mul x0, x0, x2 + ldrb w19, [x1, 148] + add x1, x21, 3260 + strb w19, [x1, x0] mov w0, w19 - strb w19, [x2,3260] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w2, 0 mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus sbfx x0, x0, 0, 1 str w0, [x20] - mov w0, w19 - ldr w1, [x29,88] - ldr w2, [x21,92] - add w1, w2, w1 mov w2, 0 + ldr w1, [x29, 72] + ldr w0, [x21, 92] + add w1, w1, w0 + mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,88] + ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus - tbz x0, 0, .L291 + tbz x0, 0, .L318 mov w0, -1 str w0, [x20] -.L291: +.L318: ldr w0, [x20] cmn w0, #1 - bne .L292 - ldr w1, [x29,88] - mov x0, x23 + bne .L319 + ldr w1, [x29, 72] + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 bl printk -.L292: +.L319: mov w0, w19 bl NandcFlashDeCs -.L290: - add w22, w22, 1 - add x20, x20, 56 - b .L288 -.L297: - mov w0, 0 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 96 - ret + b .L317 .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks .align 2 .global FlashEraseBlocks .type FlashEraseBlocks, %function FlashEraseBlocks: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - mov w20, 0 - stp x25, x26, [sp,64] - mov w26, w1 + stp x25, x26, [sp, 64] + mov w25, w1 add x1, x19, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - mov x24, x0 + stp x23, x24, [sp, 48] + stp x21, x22, [sp, 32] mov w23, w2 - ldrb w1, [x1,88] - cbz w1, .L299 + str x27, [sp, 80] + ldrb w1, [x1, 88] + cbnz w1, .L326 + adrp x26, .LANCHOR2 + mov x20, x0 + add x27, x26, :lo12:.LANCHOR2 + mov w21, 0 +.L327: + cmp w21, w23 + bcc .L336 + add x19, x19, :lo12:.LANCHOR0 + adrp x22, .LANCHOR2 + add x24, x19, 3260 + add x22, x22, :lo12:.LANCHOR2 + mov x21, 0 + mov x26, 24 +.L337: + ldrb w0, [x19, 3216] + cmp w0, w21 + bhi .L339 + adrp x0, .LANCHOR2+2096 + ldr w0, [x0, #:lo12:.LANCHOR2+2096] + cbnz w0, .L340 +.L341: + mov w0, 0 + b .L325 +.L326: mov w1, w2 bl FlashEraseSLc2KBlocks - b .L300 -.L299: - mov w27, 56 - adrp x28, .LANCHOR2 - mov x25, 24 -.L330: - cmp w20, w23 - bcs .L331 - umull x5, w20, w27 +.L325: + 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], 112 + ret +.L336: + mov w13, 56 + add x2, x29, 104 mov w1, 0 - add x2, x29, 120 - add x21, x24, x5 - sub w4, w23, w20 - mov x0, x21 - add x3, x29, 124 - str x5, [x29,104] + sub w4, w23, w21 + umull x13, w21, w13 + add x3, x29, 108 + add x22, x20, x13 + mov x0, x22 bl LogAddr2PhyAddr - mov w22, w0 + mov w24, w0 add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x29,124] - ldr x5, [x29,104] - ldrb w2, [x1,3216] - cmp w0, w2 - bcc .L301 + ldr w0, [x29, 108] + ldrb w2, [x1, 3216] + cmp w2, w0 + bhi .L329 mov w0, -1 - str w0, [x24,x5] - b .L302 -.L301: - add x2, x28, :lo12:.LANCHOR2 - add x1, x1, 3260 - ldrb w2, [x2,2094] - cmp w2, wzr - uxtw x2, w0 - csel w22, w22, wzr, ne - madd x1, x2, x25, x1 - ldr x1, [x1,8] - cbz x1, .L304 + str w0, [x20, x13] +.L330: + add w21, w21, 1 + b .L327 +.L329: + add x2, x26, :lo12:.LANCHOR2 + mov x3, 24 + ldrb w2, [x2, 2094] + cmp w2, 0 + add x2, x1, 3260 + uxtw x1, w0 + csel w24, w24, wzr, ne + madd x1, x1, x3, x2 + ldr x1, [x1, 8] + cbz x1, .L332 bl FlashWaitCmdDone -.L304: +.L332: add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x29,124] + ldr w1, [x29, 108] + add x2, x0, 3260 + mov x0, 24 + madd x0, x1, x0, x2 + ldr w2, [x29, 104] + str w2, [x0, 4] + stp x22, xzr, [x0, 8] + cbz w24, .L333 + add w2, w21, 1 + mov w3, 56 + umaddl x2, w2, w3, x20 + str x2, [x0, 16] +.L333: + add x0, x19, :lo12:.LANCHOR0 + add x2, x0, x1 add x0, x0, 3260 - ldr w2, [x29,120] - madd x0, x1, x25, x0 - str x21, [x0,8] - str xzr, [x0,16] - str w2, [x0,4] - cbz w22, .L305 - add w2, w20, 1 - umull x2, w2, w27 - add x2, x24, x2 - str x2, [x0,16] -.L305: - add x0, x19, :lo12:.LANCHOR0 - add x2, x0, 3220 - ldrb w21, [x2,x1] - madd x1, x1, x25, x0 - mov w0, w21 - strb w21, [x1,3260] + ldrb w22, [x2, 3220] + mov x2, 24 + mul x1, x1, x2 + strb w22, [x0, x1] + mov w0, w22 bl NandcFlashCs - cmp w26, 1 - bne .L306 - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L306 - mov w0, w21 + cmp w25, 1 + bne .L334 + ldrb w0, [x27, 1220] + cbz w0, .L334 + mov w0, w22 bl flash_enter_slc_mode - b .L307 -.L306: - mov w0, w21 - bl flash_exit_slc_mode -.L307: +.L335: + ldr w1, [x29, 108] add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x29,124] add x0, x0, 3228 - add w20, w20, w22 - ldr w0, [x0,x1,lsl 2] - ldr w1, [x29,120] - cmp w0, wzr - mov w0, w21 + add w21, w21, w24 + ldr w0, [x0, x1, lsl 2] + ldr w1, [x29, 104] + cmp w0, 0 + mov w0, w22 cset w2, ne bl FlashWaitReadyEN - ldr w1, [x29,120] - mov w0, w21 - mov w2, w22 + ldr w1, [x29, 104] + mov w2, w24 + mov w0, w22 bl FlashEraseCmd - mov w0, w21 + mov w0, w22 bl NandcFlashDeCs -.L302: - add w20, w20, 1 b .L330 -.L331: - add x19, x19, :lo12:.LANCHOR0 - mov x20, 0 - adrp x21, .LANCHOR2 - add x22, x19, 3260 - mov x25, 24 -.L309: - ldrb w0, [x19,3216] - cmp w0, w20 - bls .L332 - mov w0, w20 - bl FlashWaitCmdDone - cmp w26, 1 - bne .L310 - add x0, x21, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L310 - mul x0, x20, x25 - ldrb w0, [x0,x22] +.L334: + mov w0, w22 bl flash_exit_slc_mode -.L310: - add x20, x20, 1 - b .L309 -.L332: - adrp x0, .LANCHOR2+2096 - ldr w0, [x0,#:lo12:.LANCHOR2+2096] - cbnz w0, .L312 -.L314: - mov w0, 0 - b .L300 -.L312: + b .L335 +.L339: + mov w0, w21 + bl FlashWaitCmdDone + cmp w25, 1 + bne .L338 + ldrb w0, [x22, 1220] + cbz w0, .L338 + mul x0, x21, x26 + ldrb w0, [x0, x24] + bl flash_exit_slc_mode +.L338: + add x21, x21, 1 + b .L337 +.L340: adrp x0, IDByte - ldrb w0, [x0,#:lo12:IDByte] + ldrb w0, [x0, #:lo12:IDByte] cmp w0, 69 - bne .L314 - mov x0, 0 - mov x1, 56 -.L313: - cmp w23, w0 - bls .L314 - mul x2, x0, x1 - add x0, x0, 1 - str wzr, [x24,x2] - b .L313 -.L300: - 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 + bne .L341 + mov w0, 56 + umaddl x23, w23, w0, x20 +.L342: + cmp x23, x20 + beq .L341 + str wzr, [x20], 56 + b .L342 .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global HynixGetReadRetryDefault .type HynixGetReadRetryDefault, %function HynixGetReadRetryDefault: - stp x29, x30, [sp, -144]! - mov w4, -83 - mov w3, -82 + stp x29, x30, [sp, -128]! + mov w3, -83 + mov w2, -82 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - stp x25, x26, [sp,64] - mov w26, w0 - add x0, x20, :lo12:.LANCHOR2 - add x1, x0, 1232 - cmp w26, 2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - strb w26, [x0,1232] - mov w0, -84 - strb w4, [x1,5] - strb w0, [x1,4] - mov w0, -81 - strb w3, [x1,6] - strb w0, [x1,7] - bne .L334 - mov w0, -89 - strb w0, [x1,4] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + add x1, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + mov w20, w0 + add x0, x1, 1232 + stp x23, x24, [sp, 48] + cmp w20, 2 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + strb w20, [x1, 1232] + mov w1, -84 + strb w3, [x0, 5] + strb w1, [x0, 4] + mov w1, -81 + strb w2, [x0, 6] + strb w1, [x0, 7] + bne .L358 + mov w1, -89 + strb w1, [x0, 4] adrp x0, .LANCHOR1+3401 mov w1, -9 - strb w1, [x0,#:lo12:.LANCHOR1+3401] - b .L397 -.L334: - cmp w26, 3 - bne .L336 - mov w0, -80 - strb w0, [x1,4] - mov w0, -79 - strb w0, [x1,5] - mov w0, -78 - strb w0, [x1,6] - mov w0, -77 - strb w0, [x1,7] - mov w0, -76 - strb w0, [x1,8] - mov w0, -75 - strb w0, [x1,9] - mov w0, -74 - strb w0, [x1,10] - mov w0, -73 - b .L437 -.L336: - cmp w26, 4 - bne .L337 - mov w5, -52 - strb w5, [x1,4] - mov w5, -65 - strb w5, [x1,5] - mov w5, -86 - strb w5, [x1,6] - mov w5, -85 - strb w4, [x1,9] - strb w5, [x1,7] - mov w5, -51 - strb w3, [x1,10] - strb w5, [x1,8] -.L437: - mov w28, 8 - strb w0, [x1,11] - mov w27, w28 - b .L335 -.L337: - cmp w26, 5 - bne .L338 - mov w0, 56 - strb w0, [x1,4] - mov w0, 57 - strb w0, [x1,5] - mov w0, 58 - mov w28, 8 - strb w0, [x1,6] - mov w0, 59 - strb w0, [x1,7] - b .L438 -.L338: - cmp w26, 6 - bne .L339 - mov w0, 14 - strb w0, [x1,4] - mov w0, 15 - strb w0, [x1,5] - mov w0, 16 - mov w28, 12 - strb w0, [x1,6] - mov w0, 17 - strb w0, [x1,7] - b .L438 -.L339: - cmp w26, 7 - bne .L340 - mov w0, -80 - strb w0, [x1,4] - mov w0, -79 - strb w0, [x1,5] - mov w0, -78 - strb w0, [x1,6] - mov w0, -77 - strb w0, [x1,7] - mov w0, -76 - strb w0, [x1,8] - mov w0, -75 - strb w0, [x1,9] - mov w0, -74 - strb w0, [x1,10] - mov w0, -73 - strb w0, [x1,11] - mov w0, -44 - mov w28, 12 - strb w0, [x1,12] - mov w27, 10 - mov w0, -43 - strb w0, [x1,13] - b .L335 -.L340: - cmp w26, 8 - bne .L397 - 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 .L335 -.L397: - mov w28, 7 -.L438: - mov w27, 4 -.L335: - sub w0, w26, #1 + strb w1, [x0, #:lo12:.LANCHOR1+3401] +.L423: + mov w27, 7 + b .L467 +.L358: + cmp w20, 3 + bne .L360 + mov w1, -80 + strb w1, [x0, 4] + mov w1, -79 + strb w1, [x0, 5] + mov w1, -78 + strb w1, [x0, 6] + mov w1, -77 + strb w1, [x0, 7] + mov w1, -76 + strb w1, [x0, 8] + mov w1, -75 + strb w1, [x0, 9] + mov w1, -74 + strb w1, [x0, 10] + mov w1, -73 +.L466: + mov w27, 8 + mov w28, w27 + strb w1, [x0, 11] +.L359: + sub w0, w20, #1 cmp w0, 1 - bhi .L434 - adrp x23, .LANCHOR0 - adrp x24, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR0 - add x24, x24, :lo12:.LANCHOR1 - mov w21, 0 - add x4, x23, 3220 - add x5, x20, :lo12:.LANCHOR2 - add x24, x24, 3384 -.L341: - ldrb w0, [x23,3216] - cmp w0, w21 - bls .L348 - ldrb w1, [x4,w21,sxtw] - add x0, x5, 1232 - add x2, x23, 24 - mov x25, 0 - mov x22, x0 - add x19, x0, x1, lsl 6 - lsl x1, x1, 4 - add x3, x2, x1 + bhi .L365 + adrp x25, .LANCHOR0 + adrp x26, .LANCHOR1 + add x25, x25, :lo12:.LANCHOR0 + add x26, x26, :lo12:.LANCHOR1 + add x3, x25, 3072 + add x26, x26, 3384 + mov w24, 0 +.L366: + ldrb w0, [x25, 3216] + cmp w0, w24 + bhi .L372 +.L373: + add x21, x21, :lo12:.LANCHOR2 + ldp x19, x20, [sp, 16] + strb w28, [x21, 1233] + strb w27, [x21, 1234] + ldp x23, x24, [sp, 48] + ldp x21, x22, [sp, 32] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 128 + ret +.L360: + cmp w20, 4 + bne .L361 + mov w4, -52 + strb w4, [x0, 4] + mov w4, -65 + strb w4, [x0, 5] + mov w4, -86 + strb w4, [x0, 6] + mov w4, -85 + strb w3, [x0, 9] + strb w4, [x0, 7] + mov w4, -51 + strb w2, [x0, 10] + strb w4, [x0, 8] + b .L466 +.L361: + cmp w20, 5 + bne .L362 + mov w1, 56 + strb w1, [x0, 4] + mov w1, 57 + strb w1, [x0, 5] + mov w1, 58 + mov w27, 8 + strb w1, [x0, 6] + mov w1, 59 + strb w1, [x0, 7] +.L467: + mov w28, 4 + b .L359 +.L362: + cmp w20, 6 + bne .L363 + mov w1, 14 + strb w1, [x0, 4] + mov w1, 15 + strb w1, [x0, 5] + mov w1, 16 + mov w27, 12 + strb w1, [x0, 6] + mov w1, 17 + strb w1, [x0, 7] + b .L467 +.L363: + cmp w20, 7 + bne .L364 + mov w1, -80 + strb w1, [x0, 4] + mov w1, -79 + strb w1, [x0, 5] + mov w1, -78 + strb w1, [x0, 6] + mov w1, -77 + strb w1, [x0, 7] + mov w1, -76 + strb w1, [x0, 8] + mov w1, -75 + strb w1, [x0, 9] + mov w1, -74 + strb w1, [x0, 10] + mov w1, -73 + strb w1, [x0, 11] + mov w1, -44 + mov w27, 12 + strb w1, [x0, 12] + mov w28, 10 + mov w1, -43 + strb w1, [x0, 13] + b .L359 +.L364: + cmp w20, 8 + bne .L423 + mov w1, 6 + strb w1, [x0, 4] + mov w1, 7 + strb w1, [x0, 5] + mov w1, 9 + strb w20, [x0, 6] + strb w1, [x0, 7] + mov w27, 50 + mov w1, 10 + mov w28, 5 + strb w1, [x0, 8] + b .L359 +.L372: + add x0, x3, w24, sxtw + mov x22, 0 + ldrb w1, [x0, 148] + add x0, x21, :lo12:.LANCHOR2 + add x0, x0, 1232 + mov x20, x0 + ubfiz x19, x1, 6, 8 + sbfiz x1, x1, 4, 32 + add x2, x25, x1 add x19, x19, 20 - ldr x26, [x2,x1] - ldrb w1, [x3,8] - add x26, x26, x1, lsl 8 + add x19, x0, x19 + ldr x1, [x25, x1] + ldrb w23, [x2, 8] + add x23, x1, x23, lsl 8 mov w1, 55 -.L343: - add x0, x22, x25 - str w1, [x26,2056] - str x5, [x29,120] - str x4, [x29,128] - ldrb w0, [x0,4] - str w0, [x26,2052] +.L367: + add x0, x20, x22 + str w1, [x23, 2056] + str x3, [x29, 112] + str w1, [x29, 124] + ldrb w0, [x0, 4] + str w0, [x23, 2052] mov x0, 400 - str x1, [x29,136] bl __const_udelay - ldr w0, [x26,2048] - strb w0, [x19,x25] - add x25, x25, 1 - ldr x1, [x29,136] - cmp w27, w25, uxtb - ldr x4, [x29,128] - ldr x5, [x29,120] - bhi .L343 + ldr w0, [x23, 2048] + strb w0, [x19, x22] + add x22, x22, 1 + cmp w28, w22, uxtb + ldr w1, [x29, 124] + ldr x3, [x29, 112] + bhi .L367 mov x0, 0 -.L344: - add w2, w0, 8 - mov x1, 0 -.L345: - add x3, x1, x0 - add x1, x1, 4 - add x3, x24, x3 - cmp x1, 24 - ldrb w6, [x3,4] - ldrb w3, [x19,x0] - add w3, w6, w3 - strb w3, [x19,w2,sxtw] - add w2, w2, 8 - bne .L345 +.L370: + add x1, x0, 4 + add x2, x0, 28 + add w5, w0, 8 + add x1, x26, x1 + add x2, x26, x2 +.L369: + ldrb w6, [x19, x0] + ldrb w7, [x1], 4 + add w6, w6, w7 + strb w6, [x19, w5, sxtw] + cmp x2, x1 + add w5, w5, 8 + bne .L369 add x0, x0, 1 cmp x0, 4 - bne .L344 - add w21, w21, 1 - strb wzr, [x19,16] - strb wzr, [x19,24] - strb wzr, [x19,32] - uxtb w21, w21 - strb wzr, [x19,40] - strb wzr, [x19,48] - strb wzr, [x19,41] - strb wzr, [x19,49] - b .L341 -.L434: - sub w0, w26, #3 + bne .L370 + add w24, w24, 1 + strb wzr, [x19, 16] + strb wzr, [x19, 24] + and w24, w24, 255 + strb wzr, [x19, 32] + strb wzr, [x19, 40] + strb wzr, [x19, 48] + strb wzr, [x19, 41] + strb wzr, [x19, 49] + b .L366 +.L365: + sub w0, w20, #3 cmp w0, 5 - bhi .L348 - mul w0, w27, w28 + bhi .L373 + mul w26, w28, w27 + sub w25, w28, #1 adrp x24, .LANCHOR0 - sub w25, w27, #1 - asr w23, w0, 1 - lsl w0, w0, 4 - add x24, x24, :lo12:.LANCHOR0 - str w0, [x29,136] + and x25, x25, 255 + mov w22, 0 + lsl w0, w26, 4 + asr w23, w26, 1 + str w0, [x29, 112] + add x26, x24, :lo12:.LANCHOR0 lsl w0, w23, 1 - uxtb x25, w25 - str w0, [x29,128] - add x0, x24, 3220 - mov w21, 0 - str x0, [x29,120] + str w0, [x29, 124] add x0, x25, 1 - str x0, [x29,112] -.L349: - ldrb w0, [x24,3216] - adrp x25, .LANCHOR0 - cmp w0, w21 - bhi .L395 -.L348: - add x20, x20, :lo12:.LANCHOR2 - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - strb w27, [x20,1233] - strb w28, [x20,1234] - ldp x25, x26, [sp,64] - ldp x19, x20, [sp,16] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 144 - ret -.L395: - ldr x0, [x29,120] - ldrb w1, [x0,w21,sxtw] - add x0, x24, 24 - str x1, [x29,104] - lsl x3, x1, 4 - mov x22, x1 - add x7, x0, x3 - ldr x0, [x0,x3] - ldrb w19, [x7,8] + str x0, [x29, 104] +.L374: + ldrb w0, [x26, 3216] + cmp w0, w22 + bls .L373 + add x0, x26, w22, sxtw + ldrb w25, [x0, 3220] + sbfiz x0, x25, 4, 32 + add x1, x26, x0 + ldr x0, [x26, x0] + ldrb w19, [x1, 8] add x19, x0, x19, lsl 8 mov w0, 255 - str w0, [x19,2056] - mov w0, w1 + str w0, [x19, 2056] + mov w0, w25 bl NandcWaitFlashReady - cmp w26, 7 - sub w7, w26, #5 - ldr x1, [x29,104] - bne .L350 - add x3, x20, :lo12:.LANCHOR2 - mov x0, 160 - madd x3, x1, x0, x3 - add x3, x3, 1260 - b .L351 -.L350: - cmp w26, 8 - beq .L352 - add x3, x20, :lo12:.LANCHOR2 - add x3, x3, x1, lsl 6 - add x3, x3, 1252 -.L351: - mov w0, 54 - cmp w26, 4 - str w0, [x19,2056] - bne .L353 - mov w0, 255 - str w0, [x19,2052] - mov w0, 64 - str w0, [x19,2048] - mov w0, 204 - b .L439 -.L353: - cmp w7, 1 - bhi .L355 - add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,1236] - str w0, [x19,2052] - mov w0, 82 - b .L440 -.L355: - cmp w26, 7 - bne .L354 - mov w0, 174 - str w0, [x19,2052] - str wzr, [x19,2048] - mov w0, 176 -.L439: - str w0, [x19,2052] - mov w0, 77 -.L440: - str w0, [x19,2048] -.L354: - mov w0, 22 - str w0, [x19,2056] - mov w0, 23 - str w0, [x19,2056] - mov w0, 4 - str w0, [x19,2056] - mov w0, 25 - str w0, [x19,2056] - str wzr, [x19,2056] - cmp w26, 6 - str wzr, [x19,2052] - str wzr, [x19,2052] - bne .L356 - mov w0, 31 - str w0, [x19,2052] - b .L357 -.L356: - str wzr, [x19,2052] -.L357: - mov w0, 2 - str w0, [x19,2052] - str wzr, [x19,2052] -.L396: - mov w0, 48 - str w0, [x19,2056] - mov w0, w22 - str x7, [x29,96] - str x3, [x29,104] - bl NandcWaitFlashReady - ldr x7, [x29,96] - ldr x3, [x29,104] - cmp w7, 1 - cset w8, ls - cmp w26, 8 - cset w7, eq - cbnz w8, .L399 - cbnz w7, .L399 - cmp w26, 7 - mov w1, 32 - mov w0, 2 - csel w1, w0, w1, ne - b .L358 -.L399: - mov w1, 16 -.L358: - ldr x0, [x25,#:lo12:.LANCHOR0] - mov x9, 0 -.L359: - ldr w10, [x19,2048] - strb w10, [x0,x9] - add x9, x9, 1 - cmp w1, w9, uxtb - bhi .L359 - cbz w7, .L360 - mov w1, 0 -.L362: - ldrb w9, [x0] - cmp w9, 50 - beq .L361 - ldrb w9, [x0,1] - cmp w9, 5 - beq .L361 - add w1, w1, 1 - add x0, x0, 4 - uxtb w1, w1 - cmp w1, 8 - bne .L362 - b .L363 -.L361: - cmp w1, 6 - bls .L364 -.L363: - adrp x0, .LC2 - mov w1, 0 - add x0, x0, :lo12:.LC2 - bl printk -.L365: - b .L365 -.L360: - cmp w26, 7 - bne .L366 - mov w1, w7 -.L368: - ldrb w9, [x0] - cmp w9, 12 - beq .L367 - ldrb w9, [x0,1] - cmp w9, 10 - beq .L367 - add w1, w1, 1 - add x0, x0, 4 - uxtb w1, w1 - cmp w1, 8 - bne .L368 - b .L369 -.L367: - cmp w1, 7 - bne .L364 -.L369: - adrp x0, .LC2 - mov w1, 0 - add x0, x0, :lo12:.LC2 - bl printk -.L370: - b .L370 -.L366: - cmp w26, 6 - bne .L364 - mov x1, 0 -.L371: - ldrb w9, [x0,x1] - cmp w9, 12 - beq .L364 - add x9, x0, x1 - ldrb w9, [x9,8] - cmp w9, 4 - beq .L364 - add x1, x1, 1 - cmp x1, 8 - bne .L371 - adrp x0, .LC2 - mov w1, 0 - add x0, x0, :lo12:.LC2 - bl printk -.L373: - b .L373 -.L364: - ldr x10, [x25,#:lo12:.LANCHOR0] - mov x0, 0 -.L374: - ldr w1, [x29,136] - cmp w1, w0 - ble .L442 - ldr w1, [x19,2048] - strb w1, [x10,x0] - add x0, x0, 1 - b .L374 -.L442: - ldr x12, [x25,#:lo12:.LANCHOR0] - mov w11, w23 - mov w9, 8 -.L377: - mov w0, 0 + cmp w20, 7 + sub w6, w20, #5 + bne .L375 + mov x1, 28 + mov w0, 160 + add x2, x21, :lo12:.LANCHOR2 + umaddl x0, w0, w25, x1 + add x2, x2, 1232 + add x2, x2, x0 .L376: - add w1, w0, w11 + mov w0, 54 + str w0, [x19, 2056] + cmp w20, 4 + bne .L378 + mov w0, 255 + str w0, [x19, 2052] + mov w0, 64 + str w0, [x19, 2048] + mov w0, 204 +.L468: + str w0, [x19, 2052] + mov w0, 77 + b .L469 +.L375: + cmp w20, 8 + beq .L377 + add x2, x21, :lo12:.LANCHOR2 + ubfiz x0, x25, 6, 8 + add x2, x2, x0 + add x2, x2, 1252 + b .L376 +.L378: + cmp w6, 1 + bhi .L380 + add x0, x21, :lo12:.LANCHOR2 + ldrb w0, [x0, 1236] + str w0, [x19, 2052] + mov w0, 82 +.L469: + str w0, [x19, 2048] +.L379: + mov w0, 22 + str w0, [x19, 2056] + mov w0, 23 + str w0, [x19, 2056] + mov w0, 4 + str w0, [x19, 2056] + mov w0, 25 + str w0, [x19, 2056] + str wzr, [x19, 2056] + cmp w20, 6 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + bne .L381 + mov w0, 31 + str w0, [x19, 2052] +.L382: + mov w0, 2 + str w0, [x19, 2052] + str wzr, [x19, 2052] +.L422: + mov w0, 48 + str w0, [x19, 2056] + str x2, [x29, 96] + mov w0, w25 + str w6, [x29, 120] + bl NandcWaitFlashReady + ldr w6, [x29, 120] + ldr x2, [x29, 96] + cmp w6, 1 + ccmp w20, 8, 4, hi + beq .L424 + cmp w20, 7 + mov w0, 2 + mov w1, 32 + csel w1, w1, w0, eq +.L383: + add x0, x24, :lo12:.LANCHOR0 + mov x7, 0 + ldr x0, [x0, 64] +.L384: + ldr w8, [x19, 2048] + strb w8, [x0, x7] + add x7, x7, 1 + cmp w1, w7, uxtb + bhi .L384 + cmp w20, 8 + bne .L385 + mov w1, 0 +.L387: + ldrb w7, [x0] + cmp w7, 50 + beq .L386 + ldrb w7, [x0, 1] + cmp w7, 5 + beq .L386 + add w1, w1, 1 + add x0, x0, 4 + and w1, w1, 255 + cmp w1, 8 + bne .L387 +.L388: + adrp x0, .LC2 + mov w1, 0 + add x0, x0, :lo12:.LC2 + bl printk +.L390: + b .L390 +.L380: + cmp w20, 7 + bne .L379 + mov w0, 174 + str w0, [x19, 2052] + str wzr, [x19, 2048] + mov w0, 176 + b .L468 +.L381: + str wzr, [x19, 2052] + b .L382 +.L424: + mov w1, 16 + b .L383 +.L386: + cmp w1, 6 + bhi .L388 +.L389: + add x0, x24, :lo12:.LANCHOR0 + ldr x7, [x0, 64] + mov x0, 0 +.L399: + ldr w1, [x29, 112] + cmp w1, w0 + bgt .L400 + add x0, x24, :lo12:.LANCHOR0 + mov w9, w23 + mov w8, 8 + ldr x11, [x0, 64] +.L402: + mov w0, 0 +.L401: + add w1, w0, w9 add w0, w0, 1 sbfiz x1, x1, 1, 32 - cmp w0, w23 - ldrh w13, [x12,x1] - mvn w13, w13 - strh w13, [x12,x1] - bne .L376 - ldr w0, [x29,128] - subs w9, w9, #1 - add w11, w11, w0 - bne .L377 - mov x9, 0 - mov w17, 1 -.L378: - mov w1, 0 - mov w11, w1 -.L382: - lsl w13, w17, w11 - mov w15, w9 - mov w0, 16 - mov w14, 0 -.L380: - 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 .L380 - cmp w14, 8 - bls .L381 - orr w1, w1, w13 - uxth w1, w1 -.L381: - add w11, w11, 1 - cmp w11, 16 - bne .L382 - strh w1, [x12,x9,lsl 1] - add x9, x9, 1 - cmp w23, w9 - bgt .L378 - mov x6, 0 - ldr x1, [x25,#:lo12:.LANCHOR0] - mov w9, w6 -.L385: - ldr w11, [x1,x6] - add x6, x6, 4 - cmp w11, wzr - csinc w9, w9, w9, ne - cmp x6, 32 - bne .L385 - cmp w9, 7 - ble .L386 - adrp x0, .LC3 - mov w2, 1 - add x0, x0, :lo12:.LC3 + cmp w23, w0 + ldrh w10, [x11, x1] + mvn w10, w10 + strh w10, [x11, x1] + bgt .L401 + ldr w0, [x29, 124] + subs w8, w8, #1 + add w9, w9, w0 + bne .L402 + mov x1, 0 + mov w14, 1 +.L408: + mov w0, 0 + mov w8, 0 +.L407: + mov w10, w1 + lsl w13, w14, w8 + mov w12, 16 + mov w9, 0 +.L405: + ldrh w15, [x11, w10, sxtw 1] + add w10, w10, w23 + bics wzr, w13, w15 + cinc w9, w9, eq + subs w12, w12, #1 + bne .L405 + cmp w9, 8 + bls .L406 + orr w0, w0, w13 + and w0, w0, 65535 +.L406: + add w8, w8, 1 + cmp w8, 16 + bne .L407 + strh w0, [x11, x1, lsl 1] + add x1, x1, 1 + cmp w23, w1 + bgt .L408 + add x0, x24, :lo12:.LANCHOR0 + mov w8, 0 + ldr x1, [x0, 64] + mov x0, 0 +.L411: + ldr w9, [x1, x0] + add x0, x0, 4 + cmp w9, 0 + cinc w8, w8, eq + cmp x0, 32 + bne .L411 + cmp w8, 7 + ble .L412 mov w3, 1024 + mov w2, 1 + adrp x0, .LC3 + add x0, x0, :lo12:.LC3 bl rknand_print_hex adrp x0, .LC2 mov w1, 0 add x0, x0, :lo12:.LC2 bl printk -.L387: - b .L387 -.L386: - cmp w26, 6 - mov w6, 4 - beq .L388 - cmp w26, 7 - mov w6, 10 - beq .L388 - cmp w7, wzr - mov w6, 5 - mov w1, 8 - csel w6, w1, w6, eq -.L388: - mov w9, 0 -.L389: +.L413: + b .L413 +.L385: + cmp w20, 7 + bne .L391 + mov w1, 0 +.L393: + ldrb w7, [x0] + cmp w7, 12 + beq .L392 + ldrb w7, [x0, 1] + cmp w7, 10 + beq .L392 + add w1, w1, 1 + add x0, x0, 4 + and w1, w1, 255 + cmp w1, 8 + bne .L393 +.L394: + adrp x0, .LC2 + mov w1, 0 + add x0, x0, :lo12:.LC2 + bl printk +.L395: + b .L395 +.L392: + cmp w1, 6 + bls .L389 + b .L394 +.L391: + cmp w20, 6 + bne .L389 mov x1, 0 -.L390: - add w11, w0, w1 - ldrb w12, [x10,x1] +.L396: + ldrb w7, [x0, x1] + cmp w7, 12 + beq .L389 + add x7, x0, x1 + ldrb w7, [x7, 8] + cmp w7, 4 + beq .L389 add x1, x1, 1 - cmp w27, w1, uxtb - strb w12, [x3,w11,sxtw] - bhi .L390 - add w9, w9, 1 - ldr x1, [x29,112] - cmp w9, w28 - add w0, w0, w6 - add x10, x10, x1 - blt .L389 + cmp x1, 8 + bne .L396 + adrp x0, .LC2 + mov w1, 0 + add x0, x0, :lo12:.LC2 + bl printk +.L398: + b .L398 +.L400: + ldr w1, [x19, 2048] + strb w1, [x7, x0] + add x0, x0, 1 + b .L399 +.L412: + cmp w20, 6 + beq .L426 + cmp w20, 7 + beq .L427 + cmp w20, 8 + mov w0, 8 + mov w1, 5 + csel w1, w1, w0, eq +.L414: + mov w8, 0 +.L415: + mov x0, 0 +.L416: + add w9, w12, w0 + ldrb w10, [x7, x0] + add x0, x0, 1 + cmp w28, w0, uxtb + strb w10, [x2, w9, sxtw] + bhi .L416 + ldr x0, [x29, 104] + add w8, w8, 1 + add w12, w12, w1 + cmp w27, w8 + add x7, x7, x0 + bgt .L415 mov w0, 255 - str w0, [x19,2056] - mov w0, w22 - str x7, [x29,96] - str x8, [x29,104] + str w0, [x19, 2056] + str w6, [x29, 96] + mov w0, w25 bl NandcWaitFlashReady - ldr x8, [x29,104] - ldr x7, [x29,96] - cbz w8, .L392 + ldr w6, [x29, 96] + cmp w6, 1 + bhi .L418 mov w0, 54 - str w0, [x19,2056] + str w0, [x19, 2056] adrp x0, .LANCHOR2+1236 mov w1, -1 - ldrb w0, [x0,#:lo12:.LANCHOR2+1236] - str w0, [x19,2052] + ldrb w0, [x0, #:lo12:.LANCHOR2+1236] + str w0, [x19, 2052] + str wzr, [x19, 2048] mov w0, 22 - str wzr, [x19,2048] - str w0, [x19,2056] - mov w0, w21 - bl FlashReadCmd - b .L393 -.L392: - mov w0, 190 - cbnz w7, .L441 - mov w0, 56 -.L441: - str w0, [x19,2056] -.L393: + str w0, [x19, 2056] mov w0, w22 - add w21, w21, 1 + bl FlashReadCmd +.L419: + add w22, w22, 1 + mov w0, w25 + and w22, w22, 255 bl NandcWaitFlashReady - uxtb w21, w21 - b .L349 -.L352: + b .L374 +.L426: + mov w1, 4 + b .L414 +.L427: + mov w1, 10 + b .L414 +.L418: + cmp w20, 8 + bne .L420 + mov w0, 190 +.L470: + str w0, [x19, 2056] + b .L419 +.L420: + mov w0, 56 + b .L470 +.L377: mov w0, 120 - str w0, [x19,2056] - str wzr, [x19,2052] + str w0, [x19, 2056] + str wzr, [x19, 2052] mov w0, 23 - str wzr, [x19,2052] + str wzr, [x19, 2052] mov w1, 25 - str wzr, [x19,2052] - add x3, x20, :lo12:.LANCHOR2 - str w0, [x19,2056] + str wzr, [x19, 2052] + add x2, x21, :lo12:.LANCHOR2 + str w0, [x19, 2056] mov w0, 4 - str w0, [x19,2056] - add x3, x3, 1260 - str w1, [x19,2056] + str w0, [x19, 2056] + add x2, x2, 1260 + str w1, [x19, 2056] mov w1, 218 - str w1, [x19,2056] + 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 .L396 + 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 .L422 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .align 2 .global FlashGetReadRetryDefault .type FlashGetReadRetryDefault, %function FlashGetReadRetryDefault: + cbz w0, .L484 stp x29, x30, [sp, -16]! - mov w1, w0 - add x29, sp, 0 - cbz w0, .L443 sub w2, w0, #1 + mov w1, w0 cmp w2, 7 - bhi .L445 + add x29, sp, 0 + bhi .L473 bl HynixGetReadRetryDefault - b .L443 -.L445: +.L471: + ldp x29, x30, [sp], 16 + ret +.L473: cmp w0, 49 - bne .L446 + bne .L474 adrp x0, .LANCHOR2 - mov w2, 64 add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 1236 - strb w1, [x0,-4] + mov w2, 64 + strb w1, [x0, 1232] mov w1, 4 - strb w1, [x0,-3] + strb w1, [x0, 1233] mov w1, 15 - strb w1, [x0,-2] + strb w1, [x0, 1234] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 add x1, x1, 408 - b .L461 -.L446: - sub w0, w0, #65 - cmp w0, 1 - bls .L452 - cmp w1, 33 - bne .L447 -.L452: - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - strb w1, [x0,1232] - mov w1, 4 - b .L462 -.L447: - cmp w1, 67 - beq .L453 - cmp w1, 34 - bne .L449 -.L453: - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - strb w1, [x0,1232] - mov w1, 5 -.L462: - strb w1, [x0,1233] - mov w1, 7 - strb w1, [x0,1234] - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 +.L487: add x0, x0, 1236 - add x1, x1, 256 - mov w2, 45 - b .L461 -.L449: - cmp w1, 68 - beq .L454 - cmp w1, 35 - bne .L443 -.L454: - adrp x0, .LANCHOR2 - mov w2, 95 - add x0, x0, :lo12:.LANCHOR2 - add x0, x0, 1236 - strb w1, [x0,-4] - mov w1, 5 - strb w1, [x0,-3] - mov w1, 17 - strb w1, [x0,-2] - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 304 -.L461: bl ftl_memcpy -.L443: - ldp x29, x30, [sp], 16 + b .L471 +.L474: + sub w0, w0, #65 + cmp w1, 33 + ccmp w0, 1, 0, ne + bhi .L475 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + strb w1, [x0, 1232] + mov w1, 4 +.L488: + strb w1, [x0, 1233] + mov w1, 7 + strb w1, [x0, 1234] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + mov w2, 45 + add x1, x1, 352 + b .L487 +.L475: + cmp w1, 34 + mov w0, 67 + ccmp w1, w0, 4, ne + bne .L476 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + strb w1, [x0, 1232] + mov w1, 5 + b .L488 +.L476: + cmp w1, 35 + mov w0, 68 + ccmp w1, w0, 4, ne + bne .L471 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + mov w2, 95 + strb w1, [x0, 1232] + mov w1, 5 + strb w1, [x0, 1233] + mov w1, 17 + strb w1, [x0, 1234] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 256 + b .L487 +.L484: ret .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .align 2 .global FlashReadDpCmd .type FlashReadDpCmd, %function FlashReadDpCmd: - stp x29, x30, [sp, -80]! - adrp x3, .LANCHOR0 - and w8, w1, 255 + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - add x6, x3, :lo12:.LANCHOR0 - uxtb w21, w0 - sbfiz x0, x21, 4, 32 - add x4, x6, 24 - stp x19, x20, [sp,16] - str x23, [sp,48] - add x7, x4, x0 - and w23, w2, 255 - lsr w22, w2, 8 - ldr x5, [x4,x0] + stp x21, x22, [sp, 32] + and w22, w0, 255 + adrp x0, .LANCHOR0 + add x4, x0, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + mov w21, w1 + stp x19, x20, [sp, 16] + sbfiz x1, x22, 4, 32 + and w24, w2, 255 + lsr w23, w2, 8 lsr w20, w2, 16 - ldrb w0, [x6,128] - ldr x2, [x6,104] - cmp w0, 1 - ldrb w19, [x7,8] - lsr w0, w1, 16 - lsr w7, w1, 8 - ldrb w2, [x2,7] - bne .L464 + ldr x2, [x4, 104] + add x3, x4, x1 + ldr x5, [x4, x1] + ldrb w1, [x4, 128] + and w7, w21, 255 + lsr w6, w21, 8 + cmp w1, 1 + ldrb w19, [x3, 8] + lsr w1, w21, 16 + ldrb w2, [x2, 7] + bne .L490 cmp w2, 1 - bne .L465 - sxtw x4, w19 + bne .L491 + sxtw x3, w19 mov w2, 38 - add x4, x4, 8 - add x4, x5, x4, lsl 8 - str w2, [x4,8] -.L465: - add x3, x3, :lo12:.LANCHOR0 + add x3, x3, 8 + add x3, x5, x3, lsl 8 + str w2, [x3, 8] +.L491: + add x0, x0, :lo12:.LANCHOR0 add x19, x5, x19, lsl 8 - str x1, [x29,72] - ldrb w2, [x3,120] - str w2, [x19,2056] - str wzr, [x19,2052] - str wzr, [x19,2052] - str w8, [x19,2052] - str w7, [x19,2052] - str w0, [x19,2052] - ldrb w0, [x3,121] - str w0, [x19,2056] - mov w0, w21 + add x0, x0, 112 + ldrb w2, [x0, 8] + str w2, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w7, [x19, 2052] + str w6, [x19, 2052] + ldrb w0, [x0, 9] + str w1, [x19, 2052] + str w0, [x19, 2056] + mov w0, w22 bl NandcWaitFlashReady - str wzr, [x19,2056] - str wzr, [x19,2052] + str wzr, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] +.L495: + str w24, [x19, 2052] mov w0, 48 - str wzr, [x19,2052] - str w23, [x19,2052] - str w22, [x19,2052] - str w20, [x19,2052] - str w0, [x19,2056] - ldr x1, [x29,72] - b .L466 -.L464: - cmp w2, 1 - bne .L467 - sxtw x4, w19 - mov w2, 38 - add x4, x4, 8 - add x4, x5, x4, lsl 8 - str w2, [x4,8] -.L467: - add x3, x3, :lo12:.LANCHOR0 - add x19, x5, x19, lsl 8 - ldrb w2, [x3,120] - str w2, [x19,2056] - str w8, [x19,2052] - str w7, [x19,2052] - str w0, [x19,2052] - ldrb w0, [x3,121] - str w0, [x19,2056] - mov w0, 48 - str w23, [x19,2052] - str w22, [x19,2052] - str w20, [x19,2052] - str w0, [x19,2056] -.L466: - mov w0, w21 + str w23, [x19, 2052] + mov w1, w21 + str w20, [x19, 2052] + str w0, [x19, 2056] + mov w0, w22 bl FlashSetRandomizer - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L490: + cmp w2, 1 + bne .L493 + sxtw x3, w19 + mov w2, 38 + add x3, x3, 8 + add x3, x5, x3, lsl 8 + str w2, [x3, 8] +.L493: + add x0, x0, :lo12:.LANCHOR0 + add x19, x5, x19, lsl 8 + add x0, x0, 112 + ldrb w2, [x0, 8] + str w2, [x19, 2056] + str w7, [x19, 2052] + str w6, [x19, 2052] + ldrb w0, [x0, 9] + str w1, [x19, 2052] + str w0, [x19, 2056] + b .L495 .size FlashReadDpCmd, .-FlashReadDpCmd .align 2 .global ftl_flash_de_init @@ -3225,48 +3166,48 @@ ftl_flash_de_init: stp x29, x30, [sp, -32]! mov w0, 0 add x29, sp, 0 - str x19, [sp,16] - adrp x19, .LANCHOR2 + str x19, [sp, 16] bl NandcWaitFlashReady bl FlashSetReadRetryDefault + adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2100] - cbz w0, .L469 + ldr w0, [x0, 2100] + cbz w0, .L497 mov w0, 0 bl flash_enter_slc_mode - b .L470 -.L469: - bl flash_exit_slc_mode -.L470: +.L498: add x19, x19, :lo12:.LANCHOR2 - ldrb w0, [x19,2104] - cbz w0, .L471 - ldrb w0, [x19,2093] - tbz x0, 0, .L471 + ldrb w0, [x19, 2104] + cbz w0, .L499 + ldrb w0, [x19, 2093] + tbz x0, 0, .L499 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - strb wzr, [x19,2104] -.L471: - adrp x0, .LANCHOR0+24 - ldr x0, [x0,#:lo12:.LANCHOR0+24] - str wzr, [x0,336] + strb wzr, [x19, 2104] +.L499: + adrp x0, .LANCHOR0 + ldr x0, [x0, #:lo12:.LANCHOR0] + str wzr, [x0, 336] mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L497: + mov w0, 0 + bl flash_exit_slc_mode + b .L498 .size ftl_flash_de_init, .-ftl_flash_de_init .align 2 .global NandcRandmzSel .type NandcRandmzSel, %function NandcRandmzSel: - adrp x2, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 - add x2, x2, 24 - ldr x0, [x2,x0] - str w1, [x0,336] + ldr x0, [x2, x0] + str w1, [x0, 336] ret .size NandcRandmzSel, .-NandcRandmzSel .align 2 @@ -3275,73 +3216,77 @@ NandcRandmzSel: NandcTimeCfg: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov w19, w0 mov w0, 0 bl rknand_get_clk_rate - mov w2, 16960 + mov w1, 16960 + movk w1, 0xf, lsl 16 + sdiv w0, w0, w1 adrp x1, .LANCHOR2 - movk w2, 0xf, lsl 16 add x1, x1, :lo12:.LANCHOR2 - sdiv w0, w0, w2 cmp w0, 250 - ble .L480 - ldr x0, [x1,1152] + ble .L509 + ldr x0, [x1, 1152] mov w1, 8354 - b .L487 -.L480: - cmp w0, 220 - ble .L482 - ldr x0, [x1,1152] - b .L488 -.L482: - cmp w0, 185 - ble .L483 - ldr x0, [x1,1152] - mov w1, 4226 - b .L487 -.L483: - cmp w0, 160 - ldr x0, [x1,1152] - ble .L484 - mov w1, 4194 - b .L487 -.L484: - cmp w19, 35 - mov w1, 4193 - bls .L487 - cmp w19, 99 - mov w1, 4225 - bls .L487 -.L488: - mov w1, 8322 -.L487: - str w1, [x0,4] - ldr x19, [sp,16] +.L517: + str w1, [x0, 4] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L509: + cmp w0, 220 + ble .L511 + ldr x0, [x1, 1152] +.L518: + mov w1, 8322 + b .L517 +.L511: + cmp w0, 185 + ble .L512 + ldr x0, [x1, 1152] + mov w1, 4226 + b .L517 +.L512: + cmp w0, 160 + ldr x0, [x1, 1152] + ble .L513 + mov w1, 4194 + b .L517 +.L513: + cmp w19, 35 + bhi .L514 + mov w1, 4193 + b .L517 +.L514: + cmp w19, 99 + bhi .L518 + mov w1, 4225 + b .L517 .size NandcTimeCfg, .-NandcTimeCfg .align 2 .global FlashTimingCfg .type FlashTimingCfg, %function FlashTimingCfg: - sub w1, w0, #4096 - sub w1, w1, #97 stp x29, x30, [sp, -16]! - and w1, w1, -33 - cmp w1, 1 + mov w1, -4193 + add w2, w0, w1 + mov w3, -4225 add x29, sp, 0 - bls .L490 + add w1, w0, w3 + cmp w2, 1 + ccmp w1, 1, 0, hi + bls .L520 mov w1, 8322 cmp w0, w1 - bne .L491 -.L490: + bne .L521 +.L520: adrp x1, .LANCHOR2+1152 - ldr x1, [x1,#:lo12:.LANCHOR2+1152] - str w0, [x1,4] -.L491: + ldr x1, [x1, #:lo12:.LANCHOR2+1152] + str w0, [x1, 4] +.L521: adrp x0, .LANCHOR1+493 - ldrb w0, [x0,#:lo12:.LANCHOR1+493] + ldrb w0, [x0, #:lo12:.LANCHOR1+493] bl NandcTimeCfg ldp x29, x30, [sp], 16 ret @@ -3352,60 +3297,59 @@ FlashTimingCfg: NandcInit: stp x29, x30, [sp, -32]! adrp x2, .LANCHOR0 - add x2, x2, :lo12:.LANCHOR0 + add x1, x2, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x2, 24 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 - str wzr, [x2,32] - str x0, [x2,24] + str x0, [x2, #:lo12:.LANCHOR0] mov w2, 1 - str w2, [x1,24] + str w2, [x1, 24] mov w2, 2 - str w2, [x1,40] + str w2, [x1, 40] mov w2, 3 - str w2, [x1,56] + str w2, [x1, 56] add x2, x19, :lo12:.LANCHOR2 - str x0, [x1,16] - str x0, [x1,32] - str x0, [x1,48] - str x0, [x2,1152] + str wzr, [x1, 8] + str x0, [x1, 16] + str x0, [x1, 32] + str x0, [x1, 48] + str x0, [x2, 1152] ldr w1, [x0] ubfx x3, x1, 13, 1 - str w3, [x2,2108] - ldr w3, [x0,352] + str w3, [x2, 2108] + ldr w3, [x0, 352] and w1, w1, 245760 orr w1, w1, 256 ubfx x3, x3, 16, 4 - str w3, [x2,2112] - ldr w3, [x0,352] - str w3, [x2,2116] + str w3, [x2, 2112] + ldr w3, [x0, 352] + str w3, [x2, 2116] cmp w3, 2049 - bne .L493 + bne .L524 mov w3, 8 - str w3, [x2,2112] -.L493: + str w3, [x2, 2112] +.L524: add x19, x19, :lo12:.LANCHOR2 str w1, [x0] - ldr x0, [x19,1152] - str wzr, [x0,336] + ldr x0, [x19, 1152] + str wzr, [x0, 336] mov w0, 40 bl NandcTimeCfg - ldr x0, [x19,1152] + ldr x0, [x19, 1152] mov w1, 8322 - str w1, [x0,344] + str w1, [x0, 344] mov w1, 6145 movk w1, 0x18, lsl 16 - str w1, [x0,304] + str w1, [x0, 304] mov w0, 36864 - bl ftl_malloc - str wzr, [x19,2168] - str x0, [x19,2120] - str x0, [x19,2128] + bl ftl_dma32_malloc + str wzr, [x19, 2168] + str x0, [x19, 2120] + str x0, [x19, 2128] add x0, x0, 32768 - str wzr, [x19,2176] - str x0, [x19,2136] - ldr x19, [sp,16] + str wzr, [x19, 2176] + str x0, [x19, 2136] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size NandcInit, .-NandcInit @@ -3415,20 +3359,20 @@ NandcInit: NandcGetTimeCfg: adrp x4, .LANCHOR2 add x4, x4, :lo12:.LANCHOR2 - ldr x5, [x4,1152] - ldr w5, [x5,4] + ldr x5, [x4, 1152] + ldr w5, [x5, 4] str w5, [x0] - ldr x0, [x4,1152] + ldr x0, [x4, 1152] ldr w0, [x0] str w0, [x1] - ldr x0, [x4,1152] - ldr w0, [x0,304] + ldr x0, [x4, 1152] + ldr w0, [x0, 304] str w0, [x2] - ldr x1, [x4,1152] - ldr w0, [x1,308] - ldr w1, [x1,344] - and w0, w0, 255 - orr w0, w0, w1, lsl 16 + ldr x0, [x4, 1152] + ldr w1, [x0, 308] + ldr w0, [x0, 344] + and w1, w1, 255 + orr w0, w1, w0, lsl 16 str w0, [x3] ret .size NandcGetTimeCfg, .-NandcGetTimeCfg @@ -3437,32 +3381,32 @@ NandcGetTimeCfg: .type NandcBchSel, %function NandcBchSel: adrp x1, .LANCHOR2 - uxtb w0, w0 add x1, x1, :lo12:.LANCHOR2 + and w0, w0, 255 mov w3, 1 cmp w0, 16 - ldr x2, [x1,1152] - str w0, [x1,2180] + ldr x2, [x1, 1152] + str w0, [x1, 2180] mov w1, 4096 - str w3, [x2,8] - bne .L496 -.L499: + str w3, [x2, 8] + bne .L528 +.L531: and w1, w1, -17 - b .L497 -.L496: - cmp w0, 24 - bne .L498 - orr w1, w1, 16 - b .L497 -.L498: - cmp w0, 40 - orr w1, w1, 262144 - orr w1, w1, 16 - beq .L499 -.L497: +.L529: orr w1, w1, 1 - str w1, [x2,12] + str w1, [x2, 12] ret +.L528: + cmp w0, 24 + bne .L530 + orr w1, w1, 16 + b .L529 +.L530: + orr w1, w1, 262144 + cmp w0, 40 + orr w1, w1, 16 + bne .L529 + b .L531 .size NandcBchSel, .-NandcBchSel .align 2 .global FlashBchSel @@ -3470,9 +3414,9 @@ NandcBchSel: FlashBchSel: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR2+1221 - uxtb w0, w0 + and w0, w0, 255 add x29, sp, 0 - strb w0, [x1,#:lo12:.LANCHOR2+1221] + strb w0, [x1, #:lo12:.LANCHOR2+1221] bl NandcBchSel ldp x29, x30, [sp], 16 ret @@ -3483,64 +3427,64 @@ FlashBchSel: ftl_flash_resume: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x21, [sp,32] add x0, x19, :lo12:.LANCHOR2 + str x21, [sp, 32] adrp x21, IDByte - mov x20, 0 add x21, x21, :lo12:IDByte - ldr x1, [x0,1152] - ldr w2, [x0,1160] + mov x20, 0 + ldr x1, [x0, 1152] + ldr w2, [x0, 1160] str w2, [x1] - ldr w2, [x0,1164] - ldr x1, [x0,1152] - str w2, [x1,4] - ldr w2, [x0,1168] - ldr x1, [x0,1152] - str w2, [x1,8] - ldr w2, [x0,1172] - str w2, [x1,12] - ldr w2, [x0,1176] - str w2, [x1,304] - ldr w2, [x0,1180] - str w2, [x1,308] - ldr w2, [x0,1184] - str w2, [x1,336] - ldr w0, [x0,1188] - str w0, [x1,344] -.L506: + ldr w2, [x0, 1164] + ldr x1, [x0, 1152] + str w2, [x1, 4] + ldr w2, [x0, 1168] + ldr x1, [x0, 1152] + str w2, [x1, 8] + ldr w2, [x0, 1172] + str w2, [x1, 12] + ldr w2, [x0, 1176] + str w2, [x1, 304] + ldr w2, [x0, 1180] + str w2, [x1, 308] + ldr w2, [x0, 1184] + str w2, [x1, 336] + ldr w0, [x0, 1188] + str w0, [x1, 344] +.L539: lsl x0, x20, 3 - ldrb w0, [x0,x21] + ldrb w0, [x0, x21] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L505 + bhi .L538 mov w0, w20 bl FlashReset -.L505: +.L538: add x20, x20, 1 cmp x20, 4 - bne .L506 + bne .L539 add x19, x19, :lo12:.LANCHOR2 - ldrb w0, [x19,2104] - cbz w0, .L507 + ldrb w0, [x19, 2104] + cbz w0, .L540 mov w0, 1 bl NandcSetMode - ldrb w0, [x19,2093] + ldrb w0, [x19, 2093] bl FlashSetInterfaceMode - ldrb w0, [x19,2093] + ldrb w0, [x19, 2093] bl NandcSetMode - ldr w0, [x19,1176] + ldr w0, [x19, 1176] lsr w0, w0, 8 bl NandcSetDdrPara -.L507: +.L540: adrp x0, .LANCHOR0+104 - ldr x0, [x0,#:lo12:.LANCHOR0+104] - ldrb w0, [x0,20] + ldr x0, [x0, #:lo12:.LANCHOR0+104] + ldrb w0, [x0, 20] bl FlashBchSel - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size ftl_flash_resume, .-ftl_flash_resume @@ -3548,7 +3492,7 @@ ftl_flash_resume: .global ftl_nandc_get_irq_status .type ftl_nandc_get_irq_status, %function ftl_nandc_get_irq_status: - ldr w0, [x0,372] + ldr w0, [x0, 372] ret .size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status .align 2 @@ -3562,23 +3506,19 @@ NandcIqrWaitFlashReady: .type NandcSendDumpDataStart, %function NandcSendDumpDataStart: sub sp, sp, #16 - mov w2, 1 - mov w1, 10 - bfi w1, w2, 5, 2 - ldr w2, [x0,16] - str w2, [sp,8] - orr w1, w1, 536870912 - orr w1, w1, 1024 - ldr w2, [sp,8] - orr w1, w1, 2097152 + ldr w2, [x0, 16] + mov w1, 1066 + movk w1, 0x2020, lsl 16 + str w2, [sp, 8] + ldr w2, [sp, 8] and w2, w2, -5 - str w2, [sp,8] - ldr w2, [sp,8] - add sp, sp, 16 - str w2, [x0,16] - str w1, [x0,8] + str w2, [sp, 8] + ldr w2, [sp, 8] + str w2, [x0, 16] + str w1, [x0, 8] orr w1, w1, 4 - str w1, [x0,8] + str w1, [x0, 8] + add sp, sp, 16 ret .size NandcSendDumpDataStart, .-NandcSendDumpDataStart .align 2 @@ -3586,11 +3526,11 @@ NandcSendDumpDataStart: .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: sub sp, sp, #16 -.L516: - ldr w1, [x0,8] - str w1, [sp,8] - ldr w1, [sp,8] - tbz x1, 20, .L516 +.L551: + ldr w1, [x0, 8] + str w1, [sp, 8] + ldr w1, [sp, 8] + tbz x1, 20, .L551 add sp, sp, 16 ret .size NandcSendDumpDataDone, .-NandcSendDumpDataDone @@ -3599,694 +3539,698 @@ NandcSendDumpDataDone: .type NandcXferStart, %function NandcXferStart: stp x29, x30, [sp, -96]! - adrp x6, .LANCHOR0 ubfiz x0, x0, 4, 8 - add x6, x6, :lo12:.LANCHOR0 + ubfx x3, x3, 1, 7 add x29, sp, 0 - add x6, x6, 24 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - uxtb w23, w1 - add x1, x6, x0 - ldr x21, [x6,x0] - ubfiz w20, w23, 1, 1 + stp x23, x24, [sp, 48] + and w24, w1, 255 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + add x6, x1, x0 + stp x21, x22, [sp, 32] + ubfiz w20, w24, 1, 1 + str x25, [sp, 64] orr w20, w20, 8 adrp x19, .LANCHOR2 - ldrb w0, [x1,8] + ldr x21, [x1, x0] mov w1, 16 - ldr w22, [x21,12] - ubfx x3, x3, 1, 7 - uxtb w2, w2 - bfi w22, w1, 8, 8 - and w22, w22, -9 - bfi w22, w0, 5, 3 + ldrb w0, [x6, 8] + ldr w23, [x21, 12] + bfi w23, w1, 8, 8 + and w23, w23, -9 + bfi w23, w0, 5, 3 mov w0, 1 bfi w20, w0, 5, 2 add x0, x19, :lo12:.LANCHOR2 orr w20, w20, 536870912 orr w20, w20, 1024 - ldr w0, [x0,2112] + ldr w1, [x0, 2112] bfi w20, w3, 4, 1 - cmp w0, 3 - bls .L520 - ldr w0, [x21,16] - cmp x5, xzr - str w0, [x29,88] - cset w9, ne - ldr w0, [x29,88] - and w0, w0, -5 - str w0, [x29,88] - cbnz w9, .L534 - cbz x4, .L521 -.L534: - cbnz w23, .L523 -.L531: + cmp w1, 3 + bls .L556 + ldr w1, [x21, 16] + cmp x5, 0 + str w1, [x29, 88] + ccmp x4, 0, 0, eq + ldr w1, [x29, 88] + and w1, w1, -5 + str w1, [x29, 88] + beq .L557 + and w2, w2, 255 + cbnz w24, .L558 +.L566: add w2, w2, 1 - mov x0, x4 asr w2, w2, 1 bfi w20, w2, 22, 6 - cbnz x4, .L525 - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2128] - b .L525 -.L523: - add x1, x19, :lo12:.LANCHOR2 - mov w7, 128 - mov w3, 0 - lsr w10, w2, 1 - mov w6, w3 - mov w11, -1 - ldr w0, [x1,2180] - cmp w0, 25 - mov w0, 64 - csel w7, w0, w7, cc -.L527: - cmp w6, w10 - bcs .L531 - lsr w0, w3, 2 - ubfiz x0, x0, 2, 30 - cbz w9, .L528 - ldrh w8, [x5,2] - ldr x12, [x1,2136] - ldrh w13, [x5],4 - orr w8, w13, w8, lsl 16 - str w8, [x12,x0] - b .L529 -.L528: - ldr x8, [x1,2136] - str w11, [x8,x0] -.L529: - add w6, w6, 1 - add w3, w3, w7 - b .L527 -.L525: + cbz x4, .L559 + mov x0, x4 +.L560: add x19, x19, :lo12:.LANCHOR2 - ubfx x24, x20, 22, 5 - mov w2, w23 - str x4, [x29,72] - ldr x1, [x19,2136] - str x1, [x19,2152] - lsl w1, w24, 10 - str x0, [x19,2144] + ubfx x25, x20, 22, 5 + mov x22, x4 + mov w2, w24 + ldr x1, [x19, 2136] + str x1, [x19, 2152] + lsl w1, w25, 10 + str x0, [x19, 2144] bl rknand_dma_map_single - str w0, [x19,2160] - ldr x0, [x19,2152] - lsl w1, w24, 7 - mov w2, w23 + str w0, [x19, 2160] + lsl w1, w25, 7 + ldr x0, [x19, 2152] + mov w2, w24 bl rknand_dma_map_single - str w0, [x19,2164] + str w0, [x19, 2164] mov w0, 1 - str w0, [x19,2168] - ldr w0, [x19,2160] + str w0, [x19, 2168] + ldr w0, [x19, 2160] mov w1, 16 - str w0, [x21,20] - ldr x4, [x29,72] - ldr w0, [x19,2164] - str w0, [x21,24] - and x4, x4, 3 - str wzr, [x29,88] - ldr w0, [x29,88] + str w0, [x21, 20] + tst x22, 3 + ldr w0, [x19, 2164] + str w0, [x21, 24] + str wzr, [x29, 88] + ldr w0, [x29, 88] bfi w0, w1, 9, 5 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] orr w0, w0, 448 - str w0, [x29,88] - cbnz x4, .L532 - ldr w0, [x29,88] + str w0, [x29, 88] + bne .L567 + ldr w0, [x29, 88] mov w1, 2 bfi w0, w1, 3, 3 - str w0, [x29,88] -.L532: - ldr w0, [x29,88] - cmp w23, wzr + str w0, [x29, 88] +.L567: + ldr w0, [x29, 88] + cmp w24, 0 cset w1, eq orr w0, w0, 4 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] bfi w0, w1, 1, 1 - str w0, [x29,88] - ldr w0, [x29,88] + str w0, [x29, 88] + ldr w0, [x29, 88] orr w0, w0, 1 - str w0, [x29,88] -.L521: - ldr w0, [x29,88] - str w0, [x21,16] -.L520: - str w22, [x21,12] - str w20, [x21,8] + str w0, [x29, 88] +.L557: + ldr w0, [x29, 88] + str w0, [x21, 16] +.L556: + str w23, [x21, 12] + str w20, [x21, 8] orr w20, w20, 4 - str w20, [x21,8] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + str w20, [x21, 8] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] ldp x29, x30, [sp], 96 ret +.L558: + ldr w1, [x0, 2180] + mov w6, 64 + lsr w9, w2, 1 + mov x8, x5 + cmp w1, 25 + mov w1, 128 + csel w6, w6, w1, cc + mov w7, 0 + mov w3, 0 + mov w10, -1 +.L562: + cmp w3, w9 + bcs .L566 + lsr w1, w7, 2 + cbz x5, .L563 + ldr x11, [x0, 2136] + lsl w1, w1, 2 + ldr w12, [x8], 4 + str w12, [x11, x1] +.L564: + add w3, w3, 1 + add w7, w7, w6 + b .L562 +.L563: + ldr x11, [x0, 2136] + lsl w1, w1, 2 + str w10, [x11, x1] + b .L564 +.L559: + add x0, x19, :lo12:.LANCHOR2 + ldr x0, [x0, 2128] + b .L560 .size NandcXferStart, .-NandcXferStart .align 2 .global NandcXferComp .type NandcXferComp, %function NandcXferComp: stp x29, x30, [sp, -80]! - adrp x1, .LANCHOR0 ubfiz x0, x0, 4, 8 + adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 - add x1, x1, 24 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - str x23, [sp,48] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - ldr x19, [x1,x0] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldr x19, [x1, x0] add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,2112] - cmp w0, 3 - bls .L569 - ldr w0, [x19,16] - tbz x0, 2, .L569 - ldr w21, [x19,16] - ldr w0, [x19,8] - ubfx x21, x21, 1, 1 - str w0, [x29,64] - cbz w21, .L540 + ldr w1, [x0, 2112] + cmp w1, 3 + bls .L604 + ldr w1, [x19, 16] + tbz x1, 2, .L604 + ldr w1, [x19, 16] + tbz x1, 1, .L575 adrp x22, .LC4 adrp x23, .LC5 - mov w21, 0 + ldr w1, [x19, 8] + mov x24, x0 add x22, x22, :lo12:.LC4 add x23, x23, :lo12:.LC5 -.L541: - ldr w2, [x19,28] - ldr w1, [x29,64] - ubfx x2, x2, 16, 5 - ubfx x1, x1, 22, 6 - cmp w2, w1 - bge .L549 - add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,2112] + mov w21, 0 + str w1, [x29, 64] +.L576: + ldr w1, [x19, 28] + ldr w0, [x29, 64] + ubfx x1, x1, 16, 5 + ubfx x0, x0, 22, 6 + cmp w1, w0 + bge .L584 + ldr w0, [x24, 2112] cmp w0, 5 - bhi .L542 -.L545: + bhi .L577 +.L580: add w21, w21, 1 - and w0, w21, 16777215 - cbnz w0, .L544 - ldr w2, [x19,28] + tst x21, 16777215 + bne .L579 + ldr w2, [x19, 28] mov w1, w21 - ldr w3, [x29,64] + ldr w3, [x29, 64] mov x0, x22 ubfx x2, x2, 16, 5 ubfx x3, x3, 22, 6 bl printk - mov x0, x23 - mov x1, x19 - mov w2, 4 mov w3, 512 + mov w2, 4 + mov x1, x19 + mov x0, x23 bl rknand_print_hex - b .L544 -.L542: +.L579: + mov x1, 5 + mov x0, 1 + bl usleep_range + b .L576 +.L577: ldr w0, [x19] - str w0, [x29,72] - ldr w0, [x29,72] - tbz x0, 13, .L545 - ldr w0, [x29,72] - tbz x0, 17, .L545 -.L549: + str w0, [x29, 72] + ldr w0, [x29, 72] + tbz x0, 13, .L580 + ldr w0, [x29, 72] + tbz x0, 17, .L580 +.L584: add x19, x20, :lo12:.LANCHOR2 add x19, x19, 2128 - ldr w0, [x19,40] - cbz w0, .L550 - ldr w1, [x29,64] + ldr w0, [x19, 40] + cbz w0, .L585 + ldr w0, [x19, 32] mov w2, 0 - ldr w0, [x19,32] + ldr w1, [x29, 64] ubfx x1, x1, 22, 5 lsl w1, w1, 10 bl rknand_dma_unmap_single - ldr w1, [x29,64] + ldr w1, [x29, 64] mov w2, 0 - ldr w0, [x19,36] + ldr w0, [x19, 36] ubfx x1, x1, 22, 5 lsl w1, w1, 7 bl rknand_dma_unmap_single - b .L550 -.L544: - mov x0, 1 - mov x1, 5 - bl usleep_range - b .L541 -.L540: +.L585: + add x20, x20, :lo12:.LANCHOR2 + str wzr, [x20, 2168] +.L573: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L575: adrp x22, .LC6 adrp x23, .LC5 + ldr w0, [x19, 8] add x22, x22, :lo12:.LC6 add x23, x23, :lo12:.LC5 -.L551: - ldr w0, [x29,64] - tbnz x0, 20, .L577 - ldr w0, [x19,8] + mov w21, 0 + str w0, [x29, 64] +.L586: + ldr w0, [x29, 64] + tbz x0, 20, .L588 + add x0, x20, :lo12:.LANCHOR2 + ldr w0, [x0, 2176] + cbz w0, .L589 + mov x0, x19 + bl NandcSendDumpDataStart +.L589: + add x21, x20, :lo12:.LANCHOR2 + add x21, x21, 2128 + ldr w0, [x21, 40] + cbz w0, .L590 + ldr w0, [x21, 32] + mov w2, 1 + ldr w1, [x29, 64] + ubfx x1, x1, 22, 5 + lsl w1, w1, 10 + bl rknand_dma_unmap_single + ldr w1, [x29, 64] + mov w2, 1 + ldr w0, [x21, 36] + ubfx x1, x1, 22, 5 + lsl w1, w1, 7 + bl rknand_dma_unmap_single +.L590: + add x0, x20, :lo12:.LANCHOR2 + ldr w0, [x0, 2176] + cbz w0, .L585 + mov x0, x19 + bl NandcSendDumpDataDone + b .L585 +.L588: + ldr w0, [x19, 8] add w21, w21, 1 - str w0, [x29,64] - and w0, w21, 16777215 - cbnz w0, .L552 - ldr w2, [x29,64] + str w0, [x29, 64] + tst x21, 16777215 + bne .L587 + ldr w2, [x29, 64] mov w1, w21 - ldr w3, [x19,28] + ldr w3, [x19, 28] mov x0, x22 ubfx x3, x3, 16, 5 bl printk - mov x0, x23 - mov x1, x19 - mov w2, 4 mov w3, 512 + mov w2, 4 + mov x1, x19 + mov x0, x23 bl rknand_print_hex -.L552: - mov x0, 1 +.L587: mov x1, 5 + mov x0, 1 bl usleep_range - b .L551 -.L577: - add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,2176] - cbz w0, .L554 - mov x0, x19 - bl NandcSendDumpDataStart -.L554: - add x21, x20, :lo12:.LANCHOR2 - add x21, x21, 2128 - ldr w0, [x21,40] - cbz w0, .L555 - ldr w1, [x29,64] - mov w2, 1 - ldr w0, [x21,32] - ubfx x1, x1, 22, 5 - lsl w1, w1, 10 - bl rknand_dma_unmap_single - ldr w1, [x29,64] - mov w2, 1 - ldr w0, [x21,36] - ubfx x1, x1, 22, 5 - lsl w1, w1, 7 - bl rknand_dma_unmap_single -.L555: - add x0, x20, :lo12:.LANCHOR2 - ldr w0, [x0,2176] - cbz w0, .L550 - mov x0, x19 - bl NandcSendDumpDataDone -.L550: - add x20, x20, :lo12:.LANCHOR2 - str wzr, [x20,2168] - b .L538 -.L569: - ldr w0, [x19,8] - str w0, [x29,64] - ldr w0, [x29,64] - tbz x0, 20, .L569 -.L538: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L586 +.L604: + ldr w0, [x19, 8] + str w0, [x29, 64] + ldr w0, [x29, 64] + tbz x0, 20, .L604 + b .L573 .size NandcXferComp, .-NandcXferComp .align 2 .global NandcCopy1KB .type NandcCopy1KB, %function NandcCopy1KB: stp x29, x30, [sp, -48]! - uxtb w1, w1 - add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w2 + and w1, w1, 255 cmp w1, 1 - mov x20, x4 - ubfiz x2, x19, 9, 8 - add x4, x0, 4096 + add x29, sp, 0 + stp x19, x20, [sp, 16] + and w19, w2, 255 + str x21, [sp, 32] + add x2, x0, 4096 add x21, x0, 512 - add x2, x4, x2 - bne .L579 - cbz x3, .L580 - mov x0, x2 + ubfiz x0, x19, 9, 8 + mov x20, x4 + add x0, x2, x0 + bne .L614 + cbz x3, .L615 + mov w2, 1024 mov x1, x3 - mov w2, 1024 bl ftl_memcpy -.L580: - cbz x20, .L578 - mov w0, 48 +.L615: + cbz x20, .L613 lsr w19, w19, 1 - ldrb w1, [x20,1] - mul w19, w19, w0 - ldrb w0, [x20,2] - asr w19, w19, 2 - lsl w0, w0, 16 - orr w0, w0, w1, lsl 8 - ldrb w1, [x20] - orr w0, w0, w1 - ldrb w1, [x20,3] - orr w0, w0, w1, lsl 24 - str w0, [x21,w19,sxtw 2] - b .L578 -.L579: - cbz x3, .L583 - mov x1, x2 - mov x0, x3 - mov w2, 1024 - bl ftl_memcpy -.L583: - cbz x20, .L578 - mov w0, 48 - lsr w19, w19, 1 - mul w19, w19, w0 - asr w19, w19, 2 - ldr w0, [x21,w19,sxtw 2] - strb w0, [x20] - lsr w1, w0, 8 - strb w1, [x20,1] - lsr w1, w0, 16 - lsr w0, w0, 24 - strb w1, [x20,2] - strb w0, [x20,3] -.L578: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + mov w1, 48 + ldr w0, [x20] + mul w19, w19, w1 + and x19, x19, 8176 + str w0, [x21, x19] +.L613: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L614: + cbz x3, .L618 + mov x1, x0 + mov w2, 1024 + mov x0, x3 + bl ftl_memcpy +.L618: + cbz x20, .L613 + lsr w19, w19, 1 + mov w0, 48 + mul w19, w19, w0 + and x19, x19, 8176 + ldr w0, [x21, x19] + strb w0, [x20] + lsr w1, w0, 8 + strb w1, [x20, 1] + lsr w1, w0, 16 + lsr w0, w0, 24 + strb w1, [x20, 2] + strb w0, [x20, 3] + b .L613 .size NandcCopy1KB, .-NandcCopy1KB .align 2 .global NandcXferData .type NandcXferData, %function NandcXferData: - stp x29, x30, [sp, -176]! + stp x29, x30, [sp, -192]! + tst x3, 63 add x29, sp, 0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - uxtb w24, w0 + stp x25, x26, [sp, 64] + and w25, w0, 255 + stp x19, x20, [sp, 16] adrp x0, .LANCHOR0 - stp x27, x28, [sp,80] + and w20, w1, 255 add x0, x0, :lo12:.LANCHOR0 - add x0, x0, w24, sxtw 4 - ldr x19, [x0,24] - and x0, x3, 63 - uxtb w20, w1 - uxtb w23, w2 - mov x25, x3 + sbfiz x1, x25, 4, 32 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov x26, x3 + stp x27, x28, [sp, 80] + and w24, w2, 255 mov x21, x4 - cbnz x0, .L595 - cbnz x4, .L596 - add x0, x29, 112 - mov w1, 255 + ldr x19, [x0, x1] + bne .L631 + cbnz x4, .L632 + add x21, x29, 128 mov w2, 64 - add x21, x29, 112 + mov w1, 255 + add x0, x29, 128 bl ftl_memset -.L596: - mov w0, w24 - mov w1, w20 - mov w2, w23 - mov w3, 0 - mov x4, x25 +.L632: mov x5, x21 - mov w22, 0 - bl NandcXferStart - mov w0, w24 + mov x4, x26 + mov w2, w24 + mov w3, 0 mov w1, w20 + mov w0, w25 + bl NandcXferStart + mov w1, w20 + mov w0, w25 bl NandcXferComp - cbnz w20, .L597 + cbnz w20, .L656 adrp x0, .LANCHOR2 - ubfx x3, x23, 1, 7 add x2, x0, :lo12:.LANCHOR2 - mov w4, 128 + ubfx x3, x24, 1, 7 + mov w4, 64 add x3, x21, x3, lsl 2 - ldr w1, [x2,2180] + ldr w1, [x2, 2180] cmp w1, 25 - mov w1, 64 - csel w4, w1, w4, cc - mov w1, w20 -.L599: + mov w1, 128 + csel w4, w4, w1, cc + mov w1, 0 +.L635: + add w5, w4, w1 cmp x21, x3 - add w5, w1, w4 - beq .L641 - ldr x6, [x2,2136] - and x1, x1, 4294967292 - add x21, x21, 4 - ldr w1, [x6,x1] - strb w1, [x21,-4] - lsr w6, w1, 8 - strb w6, [x21,-3] - lsr w6, w1, 16 - strb w6, [x21,-2] - lsr w1, w1, 24 - strb w1, [x21,-1] - mov w1, w5 - b .L599 -.L641: + bne .L636 add x0, x0, :lo12:.LANCHOR2 - lsr w23, w23, 2 - ldr w4, [x0,2180] - ldr w5, [x0,2112] - mov w0, 0 - mov w22, w0 -.L601: - cmp w0, w23 - bcs .L597 - cbz w4, .L597 - uxtw x1, w0 - add x1, x1, 8 - ldr w1, [x19,x1,lsl 2] - str w1, [x29,104] - ldr w1, [x29,104] - tbnz x1, 2, .L625 - ldr w3, [x29,104] - ubfx x3, x3, 15, 1 - cbnz w3, .L625 - cmp w5, 5 - bls .L603 - ldr w2, [x29,104] - ubfx x6, x2, 3, 5 - ldr w2, [x29,104] - ldr w1, [x29,104] - ubfx x2, x2, 27, 1 - ubfx x3, x1, 16, 5 - ldr w1, [x29,104] - orr w2, w6, w2, lsl 5 - ubfx x1, x1, 29, 1 - orr w1, w3, w1, lsl 5 - ldr w3, [x29,104] - cmp w2, w1 - bls .L604 - ldr w1, [x29,104] - ubfx x3, x3, 3, 5 - ubfx x1, x1, 27, 1 - orr w3, w3, w1, lsl 5 - b .L605 -.L604: - ubfx x1, x3, 16, 5 - ldr w3, [x29,104] - ubfx x3, x3, 29, 1 - b .L640 -.L603: - cmp w5, 3 - bls .L605 - ldr w2, [x29,104] - ubfx x6, x2, 3, 5 - ldr w2, [x29,104] - ldr w1, [x29,104] - ubfx x2, x2, 28, 1 - ubfx x3, x1, 16, 5 - ldr w1, [x29,104] - orr w2, w6, w2, lsl 5 - ubfx x1, x1, 30, 1 - orr w1, w3, w1, lsl 5 - ldr w3, [x29,104] - cmp w2, w1 - bls .L606 - ubfx x1, x3, 3, 5 - ldr w3, [x29,104] - ubfx x3, x3, 28, 1 - b .L640 -.L606: - ubfx x1, x3, 16, 5 - ldr w3, [x29,104] - ubfx x3, x3, 30, 1 -.L640: - orr w3, w1, w3, lsl 5 -.L605: - cmp w22, w3 - csel w22, w22, w3, cs - b .L602 -.L625: - mov w22, -1 -.L602: - add w0, w0, 1 - b .L601 -.L597: - str wzr, [x19,16] - b .L608 -.L595: - cmp w20, 1 - bne .L639 + lsr w24, w24, 2 + mov w2, 0 mov w22, 0 - mov w27, 2 -.L609: - cmp w22, w23 - bcs .L642 - and w26, w22, 3 - mov x3, x25 - cbz x25, .L611 - ubfiz x0, x22, 9, 23 - add x3, x25, x0 -.L611: - cmp x21, xzr - mov x0, x19 - csel w4, w27, wzr, ne - mov w1, 1 - mov w2, w26 - mul w4, w4, w22 - add w22, w22, 2 - add x4, x21, x4 - bl NandcCopy1KB - mov x4, 0 - mov w0, w24 - mov w1, 1 - mov w2, 2 - mov w3, w26 - mov x5, x4 - bl NandcXferStart - mov w0, w24 - mov w1, 1 - bl NandcXferComp - b .L609 -.L642: - mov w22, 0 - b .L608 -.L639: - mov w1, 0 - mov x4, 0 - mov w26, 0 - mov w0, w24 - mov w2, 2 - mov w3, w1 - mov x5, x4 - mov w22, w26 - mov w27, 2 - bl NandcXferStart -.L614: - cmp w26, w23 - bcs .L608 - mov w0, w24 - mov w1, w20 - add w28, w26, 2 - bl NandcXferComp - ldr w0, [x19,32] - cmp w28, w23 - str w0, [x29,104] - bcs .L615 - mov x4, 0 - mov w0, w24 - mov w1, 0 - mov w2, 2 - and w3, w28, 3 - mov x5, x4 - bl NandcXferStart -.L615: - ldr w0, [x29,104] - tbnz x0, 2, .L630 - ldr w0, [x29,104] - ubfx x1, x0, 3, 5 - ldr w0, [x29,104] - ubfx x0, x0, 27, 1 - orr w0, w1, w0, lsl 5 - cmp w22, w0 - csel w22, w22, w0, cs - b .L616 -.L630: - mov w22, -1 -.L616: - and w2, w26, 3 - mov x3, x25 - cbz x25, .L617 - ubfiz x3, x26, 9, 23 - add x3, x25, x3 -.L617: - cmp x21, xzr - mov x0, x19 - csel w4, w27, wzr, ne - mov w1, 0 - mul w4, w4, w26 - mov w26, w28 - add x4, x21, x4 - bl NandcCopy1KB - b .L614 -.L608: - cbnz w20, .L620 + ldr w4, [x0, 2112] + ldr w3, [x0, 2180] +.L637: + cmp w2, w24 + bcs .L633 + cbnz w3, .L643 +.L633: + str wzr, [x19, 16] +.L644: adrp x0, .LANCHOR2+2112 - ldr w0, [x0,#:lo12:.LANCHOR2+2112] + ldr w0, [x0, #:lo12:.LANCHOR2+2112] cmp w0, 5 - bls .L620 + bls .L630 + cbnz w20, .L630 ldr w0, [x19] mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w0, w1 cmp w1, 139264 - bne .L620 + bne .L630 orr w0, w0, 131072 mov w22, -1 str w0, [x19] -.L620: +.L630: mov w0, w22 - 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 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], 192 ret +.L636: + ldr x6, [x2, 2136] + and x1, x1, 4294967292 + add x21, x21, 4 + ldr w1, [x6, x1] + strb w1, [x21, -4] + lsr w6, w1, 8 + strb w6, [x21, -3] + lsr w6, w1, 16 + strb w6, [x21, -2] + lsr w1, w1, 24 + strb w1, [x21, -1] + mov w1, w5 + b .L635 +.L643: + uxtw x0, w2 + add x0, x0, 8 + ldr w0, [x19, x0, lsl 2] + str w0, [x29, 120] + ldr w0, [x29, 120] + tbnz x0, 2, .L659 + ldr w0, [x29, 120] + tbnz x0, 15, .L659 + cmp w4, 5 + bls .L639 + ldr w1, [x29, 120] + ubfx x6, x1, 3, 5 + ldr w1, [x29, 120] + ldr w0, [x29, 120] + ubfx x1, x1, 27, 1 + ubfx x5, x0, 16, 5 + ldr w0, [x29, 120] + orr w1, w6, w1, lsl 5 + ubfx x0, x0, 29, 1 + orr w0, w5, w0, lsl 5 + cmp w1, w0 + ldr w0, [x29, 120] + bls .L640 + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 27, 1 +.L665: + orr w0, w1, w0, lsl 5 +.L641: + cmp w22, w0 + csel w22, w22, w0, cs +.L638: + add w2, w2, 1 + b .L637 +.L640: + ubfx x1, x0, 16, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 29, 1 + b .L665 +.L639: + cmp w4, 3 + bls .L660 + ldr w1, [x29, 120] + ubfx x6, x1, 3, 5 + ldr w1, [x29, 120] + ldr w0, [x29, 120] + ubfx x1, x1, 28, 1 + ubfx x5, x0, 16, 5 + ldr w0, [x29, 120] + orr w1, w6, w1, lsl 5 + ubfx x0, x0, 30, 1 + orr w0, w5, w0, lsl 5 + cmp w1, w0 + ldr w0, [x29, 120] + bls .L642 + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 28, 1 + b .L665 +.L642: + ubfx x1, x0, 16, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 30, 1 + b .L665 +.L660: + mov w0, 0 + b .L641 +.L659: + mov w22, -1 + b .L638 +.L656: + mov w22, 0 + b .L633 +.L631: + cmp w20, 1 + bne .L645 + cmp x4, 0 + mov w23, 2 + csel w23, w23, wzr, ne + mov w27, 0 + lsl w23, w23, 1 + mov w22, 0 +.L646: + cmp w22, w24 + bcc .L648 + mov w22, 0 + b .L644 +.L648: + and w28, w22, 3 + cbz x26, .L661 + lsl w3, w22, 9 + add x3, x26, x3 +.L647: + add x4, x21, w27, uxtw + mov w2, w28 + mov w1, 1 + mov x0, x19 + bl NandcCopy1KB + add w22, w22, 2 + mov w3, w28 + mov x5, 0 + mov x4, 0 + mov w2, 2 + mov w1, 1 + mov w0, w25 + bl NandcXferStart + add w27, w27, w23 + mov w1, 1 + mov w0, w25 + bl NandcXferComp + b .L646 +.L661: + mov x3, 0 + b .L647 +.L645: + mov w0, w25 + mov x5, 0 + mov x4, 0 + mov w3, 0 + mov w2, 2 + mov w1, 0 + bl NandcXferStart + mov w27, 2 + cmp x21, 0 + mov w28, 0 + csel w27, w27, wzr, ne + mov w23, 0 + lsl w0, w27, 1 + mov w22, 0 + str w0, [x29, 108] +.L649: + cmp w24, w23 + bls .L644 + mov w0, w25 + mov w1, w20 + bl NandcXferComp + add w27, w23, 2 + ldr w0, [x19, 32] + cmp w24, w27 + str w0, [x29, 120] + bls .L650 + mov x5, 0 + mov x4, 0 + and w3, w27, 3 + mov w2, 2 + mov w1, 0 + mov w0, w25 + bl NandcXferStart +.L650: + ldr w0, [x29, 120] + tbnz x0, 2, .L662 + ldr w0, [x29, 120] + ubfx x1, x0, 3, 5 + ldr w0, [x29, 120] + ubfx x0, x0, 27, 1 + orr w0, w1, w0, lsl 5 + cmp w22, w0 + csel w22, w22, w0, cs +.L651: + and w2, w23, 3 + cbz x26, .L663 + lsl w3, w23, 9 + add x3, x26, x3 +.L652: + add x4, x21, w28, uxtw + mov x0, x19 + mov w1, 0 + bl NandcCopy1KB + ldr w0, [x29, 108] + mov w23, w27 + add w28, w28, w0 + b .L649 +.L662: + mov w22, -1 + b .L651 +.L663: + mov x3, 0 + b .L652 .size NandcXferData, .-NandcXferData .align 2 .global FlashReadRawPage .type FlashReadRawPage, %function FlashReadRawPage: stp x29, x30, [sp, -64]! - mov x4, x3 add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 - adrp x0, .LANCHOR1+481 - str x21, [sp,32] - mov x21, x2 - ldrb w20, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L644 + stp x19, x20, [sp, 16] + ands w19, w0, 255 + stp x21, x22, [sp, 32] + mov w21, w1 + str x23, [sp, 48] + adrp x1, .LANCHOR1+481 + mov x22, x2 + mov x23, x3 + ldrb w20, [x1, #:lo12:.LANCHOR1+481] + bne .L667 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w5, [x0,89] - ldr w0, [x0,92] + ldrb w5, [x0, 89] + ldr w0, [x0, 92] mul w0, w5, w0 - cmp w1, w0 + cmp w0, w21 mov w0, 4 - csel w20, w20, w0, cs -.L644: + csel w20, w20, w0, ls +.L667: mov w0, w19 - str x4, [x29,48] - str x1, [x29,56] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - ldr x1, [x29,56] + mov w1, w21 mov w0, w19 bl FlashReadCmd mov w0, w19 bl NandcWaitFlashReady - ldr x4, [x29,48] mov w2, w20 - mov x3, x21 + mov x4, x23 + mov x3, x22 mov w1, 0 mov w0, w19 bl NandcXferData - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - ldr x21, [sp,32] - mov w0, w20 - ldp x19, x20, [sp,16] + mov w0, w2 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size FlashReadRawPage, .-FlashReadRawPage @@ -4294,163 +4238,162 @@ FlashReadRawPage: .global FlashDdrTunningRead .type FlashDdrTunningRead, %function FlashDdrTunningRead: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x23, x24, [sp,48] - uxtb w24, w0 - adrp x0, .LANCHOR2 - stp x19, x20, [sp,16] - add x20, x0, :lo12:.LANCHOR2 - mov x19, x0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w26, w1 - mov w0, 12 - ldr x1, [x20,1152] + stp x21, x22, [sp, 32] mov w22, 6 - mov x25, x2 - mov x23, x3 + stp x23, x24, [sp, 48] + and w23, w0, 255 + adrp x0, .LANCHOR2 + add x21, x0, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] + mov w26, w1 + stp x19, x20, [sp, 16] + mov x24, x2 + stp x27, x28, [sp, 80] + mov x19, x0 + mov x25, x3 + mov w0, 12 + ldr x1, [x21, 1152] mov w27, w4 - mov w21, 1024 - ldr w1, [x1,304] - str w1, [x29,124] - ldr w1, [x20,2112] + ldr w1, [x1, 304] + str w1, [x29, 108] + ldr w1, [x21, 2112] cmp w1, 8 csel w22, w22, w0, cc - cbz w4, .L647 + cbz w4, .L683 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - mov w0, w24 + mov w0, w23 bl FlashReset + mov x3, x25 + mov x2, x24 mov w1, w26 - mov x2, x25 - mov x3, x23 - mov w0, w24 + mov w0, w23 bl FlashReadRawPage - mov w21, w0 - ldrb w0, [x20,2093] + mov w20, w0 + ldrb w0, [x21, 2093] bl FlashSetInterfaceMode - ldrb w0, [x20,2093] + ldrb w0, [x21, 2093] bl NandcSetMode - cmn w21, #1 - bne .L648 -.L657: - mov w21, -1 - b .L649 -.L648: - adrp x0, .LC7 + cmn w20, #1 + bne .L672 +.L681: + mov w20, -1 +.L669: + mov w0, w20 + 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 +.L672: + mov w2, w20 mov w1, w26 + adrp x0, .LC7 add x0, x0, :lo12:.LC7 - mov w2, w21 bl printk - cmp w21, 9 - bhi .L650 - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - add x0, x0, w24, sxtw 4 - ldr x0, [x0,24] - ldr w1, [x0,3840] + cmp w20, 9 + bhi .L674 + sbfiz x0, x23, 4, 32 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + ldr x0, [x1, x0] + ldr w1, [x0, 3840] ldr w1, [x0] orr w1, w1, 131072 str w1, [x0] -.L650: +.L674: add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,2184] + ldr w1, [x0, 2184] add w1, w1, 1 - str w1, [x0,2184] + str w1, [x0, 2184] cmp w1, 2047 - bls .L649 - mov x23, 0 - str wzr, [x0,2184] - mov x25, x23 -.L647: + bls .L669 + mov x25, 0 + mov x24, 0 + str wzr, [x0, 2184] +.L671: + mov w5, 0 + mov w21, 0 + mov w6, 0 mov w19, 0 mov w28, -1 - mov w5, w19 - mov w6, w19 - mov w20, w19 -.L655: +.L679: + stp w5, w6, [x29, 100] mov w0, w22 - str x5, [x29,104] - str x6, [x29,112] bl NandcSetDdrPara mov w1, w26 - mov w0, w24 - mov x2, x25 - mov x3, x23 + mov x3, x25 + mov x2, x24 + mov w0, w23 bl FlashReadRawPage - add w1, w21, 1 - ldr x6, [x29,112] + add w1, w20, 1 cmp w0, w1 - ldr x5, [x29,104] - bhi .L651 + ldp w5, w6, [x29, 100] + bhi .L675 cmp w0, 2 - bhi .L661 - add w20, w20, 1 - cmp w20, 9 - bls .L661 - sub w19, w22, w20 - mov w21, w0 + bhi .L685 + add w19, w19, 1 + cmp w19, 9 + bls .L685 + mov w1, w21 + mov w20, w0 + sub w21, w22, w19 mov w28, 0 - b .L653 -.L651: - cmp w6, w20 - bcs .L662 - cmp w20, 7 - sub w5, w19, w20 - bhi .L663 - mov w6, w20 - b .L662 -.L661: - mov x23, 0 - mov w19, w22 - mov w21, w0 - mov w28, 0 - mov x25, x23 - b .L652 -.L662: - mov w20, 0 -.L652: - add w22, w22, 2 - cmp w22, 69 - bls .L655 -.L653: - cmp w6, w20 - csel w19, w19, w5, cc - b .L654 -.L663: - mov w19, w5 -.L654: - cbz w19, .L656 +.L677: + cmp w19, w6 + csel w21, w21, w1, hi +.L678: + cbz w21, .L680 + mov w1, w21 adrp x0, .LC8 - mov w1, w19 add x0, x0, :lo12:.LC8 bl printk - mov w0, w19 - bl NandcSetDdrPara -.L656: - cbz w28, .L649 - adrp x0, .LC9 - mov w1, w24 - add x0, x0, :lo12:.LC9 - mov w2, w26 - bl printk - cbz w27, .L657 - ldr w0, [x29,124] - lsr w0, w0, 8 - bl NandcSetDdrPara -.L649: mov w0, w21 - 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 + bl NandcSetDdrPara +.L680: + cbz w28, .L669 + adrp x0, .LC9 + mov w2, w26 + mov w1, w23 + add x0, x0, :lo12:.LC9 + bl printk + cbz w27, .L681 + ldr w1, [x29, 108] + lsr w0, w1, 8 + bl NandcSetDdrPara + b .L669 +.L683: + mov w20, 1024 + b .L671 +.L675: + cmp w19, w6 + bls .L686 + sub w21, w5, w19 + cmp w19, 7 + bhi .L678 + mov w6, w19 +.L686: + mov w19, 0 + b .L676 +.L685: + mov w5, w22 + mov w20, w0 + mov w28, 0 + mov x25, 0 + mov x24, 0 +.L676: + add w22, w22, 2 + cmp w22, 69 + bls .L679 + mov w1, w21 + mov w21, w5 + b .L677 .size FlashDdrTunningRead, .-FlashDdrTunningRead .align 2 .global FlashReadPage @@ -4458,98 +4401,96 @@ FlashDdrTunningRead: FlashReadPage: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w20, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x21, x22, [sp, 32] mov w0, w20 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + stp x23, x24, [sp, 48] mov w22, w1 - mov x25, x2 - mov x24, x3 - bl FlashReadRawPage - cmn w0, #1 - mov w19, w0 + stp x25, x26, [sp, 64] + mov x24, x2 + mov x25, x3 adrp x21, .LANCHOR2 - bne .L673 + bl FlashReadRawPage + mov w19, w0 + cmn w0, #1 + bne .L696 adrp x23, .LANCHOR0 add x23, x23, :lo12:.LANCHOR0 - ldrb w26, [x23,96] - cbnz w26, .L674 -.L676: + ldrb w26, [x23, 96] + cbnz w26, .L697 +.L699: add x23, x21, :lo12:.LANCHOR2 - ldrb w0, [x23,2104] - cbz w0, .L673 - b .L694 -.L674: - mov w0, w20 - mov w1, w22 - mov x2, x25 - mov x3, x24 - strb wzr, [x23,96] - bl FlashReadRawPage - strb w26, [x23,96] - cmn w0, #1 - beq .L676 - mov w19, w0 - b .L673 -.L694: - ldr x0, [x23,1152] - mov w1, w22 - mov x2, x25 - mov x3, x24 + ldrb w0, [x23, 2104] + cbz w0, .L696 + ldr x0, [x23, 1152] mov w4, 1 - ldr w26, [x0,304] + mov x3, x25 + mov x2, x24 + mov w1, w22 + ldr w26, [x0, 304] mov w0, w20 bl FlashDdrTunningRead - cmn w0, #1 mov w19, w0 - beq .L677 - ldrb w0, [x23,1221] + cmn w0, #1 + beq .L700 + ldrb w0, [x23, 1221] cmp w19, w0, lsr 1 - bls .L673 -.L677: + bls .L696 +.L700: lsr w0, w26, 8 bl NandcSetDdrPara -.L673: - add x21, x21, :lo12:.LANCHOR2 - cmn w19, #1 - ldr x4, [x21,2192] - bne .L678 - cbz x4, .L678 + b .L696 +.L697: + strb wzr, [x23, 96] + mov x3, x25 + mov x2, x24 + mov w1, w22 + mov w0, w20 + bl FlashReadRawPage + strb w26, [x23, 96] + cmn w0, #1 + beq .L699 + mov w19, w0 +.L696: + add x21, x21, :lo12:.LANCHOR2 + ldr x4, [x21, 2192] + cbz x4, .L695 + cmn w19, #1 + bne .L695 + mov x3, x25 + mov x2, x24 mov w1, w22 - mov x2, x25 - mov x3, x24 mov w0, w20 blr x4 mov w19, w0 - adrp x0, .LC10 - mov w1, w19 - add x0, x0, :lo12:.LC10 - mov w2, w20 + mov w1, w0 mov w3, w22 + mov w2, w20 + adrp x0, .LC10 + add x0, x0, :lo12:.LC10 bl printk cmn w19, #1 - bne .L678 - ldrb w0, [x21,1220] - cbz w0, .L678 + bne .L695 + ldrb w0, [x21, 1220] + cbz w0, .L695 mov w0, w20 bl flash_enter_slc_mode - ldr x4, [x21,2192] - mov w0, w20 + ldr x4, [x21, 2192] + mov x3, x25 + mov x2, x24 mov w1, w22 - mov x2, x25 - mov x3, x24 + mov w0, w20 blr x4 mov w19, w0 mov w0, w20 bl flash_exit_slc_mode -.L678: +.L695: mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [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 FlashReadPage, .-FlashReadPage @@ -4559,361 +4500,365 @@ FlashReadPage: FlashDdrParaScan: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - mov w20, w1 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x22, x19, :lo12:.LANCHOR2 - uxtb w21, w0 - ldrb w0, [x22,2093] + and w20, w0, 255 + mov w21, w1 + ldrb w0, [x22, 2093] bl FlashSetInterfaceMode - ldrb w0, [x22,2093] + ldrb w0, [x22, 2093] bl NandcSetMode + mov w4, 0 + mov x3, 0 mov x2, 0 - mov w1, w20 - mov x3, x2 - mov w4, w2 - mov w0, w21 + mov w1, w21 + mov w0, w20 bl FlashDdrTunningRead + mov x3, 0 mov w22, w0 mov x2, 0 - mov w0, w21 - mov w1, w20 - mov x3, x2 + mov w1, w21 + mov w0, w20 bl FlashReadRawPage cmn w0, #1 - beq .L699 + beq .L716 cmn w22, #1 - bne .L696 -.L699: + bne .L717 +.L716: add x20, x19, :lo12:.LANCHOR2 - ldrb w0, [x20,2093] - tbz x0, 0, .L696 + ldrb w0, [x20, 2093] + tbz x0, 0, .L717 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - strb wzr, [x20,2104] - b .L698 -.L696: - add x19, x19, :lo12:.LANCHOR2 - mov w0, 1 - strb w0, [x19,2104] -.L698: + strb wzr, [x20, 2104] +.L718: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L717: + add x19, x19, :lo12:.LANCHOR2 + mov w0, 1 + strb w0, [x19, 2104] + b .L718 .size FlashDdrParaScan, .-FlashDdrParaScan .align 2 .global FlashLoadPhyInfo .type FlashLoadPhyInfo, %function FlashLoadPhyInfo: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -128]! mov w0, 60 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - adrp x19, .LANCHOR2 - strb w0, [x29,104] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x1, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + strb w0, [x29, 120] mov w0, 40 - strb w0, [x29,105] + stp x23, x24, [sp, 48] + adrp x22, .LANCHOR2 + stp x27, x28, [sp, 80] + adrp x21, .LANCHOR1 + stp x25, x26, [sp, 64] + mov w27, 20036 + strb w0, [x29, 121] mov w0, 24 - strb w0, [x29,106] + strb w0, [x29, 122] mov w0, 16 - strb w0, [x29,107] - add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x23, x24, [sp,48] - add x19, x19, :lo12:.LANCHOR2 - adrp x22, .LANCHOR1 - stp x27, x28, [sp,80] - add x22, x22, :lo12:.LANCHOR1 - mov w21, 0 - ldr w24, [x0,92] - mov w23, 4 - ldr x0, [x20,#:lo12:.LANCHOR0] - mov w26, -1 - str x0, [x19,2200] - add x22, x22, 472 + strb w0, [x29, 123] + add x21, x21, :lo12:.LANCHOR1 + ldr w0, [x1, 92] + mov w20, 0 + ldr x1, [x1, 64] + mov w24, 4 + str w0, [x29, 108] + add x0, x22, :lo12:.LANCHOR2 + mov w23, -1 + movk w27, 0x4e41, lsl 16 + add x21, x21, 472 + str x1, [x0, 2200] + str wzr, [x0, 2208] mov w0, 0 - add x25, x19, 1232 - str wzr, [x19,2208] bl flash_enter_slc_mode -.L707: - add w28, w21, 1 - mov x27, 0 -.L709: - add x0, x29, 104 - ldrb w0, [x27,x0] +.L727: + add w28, w20, 1 + add x25, x19, :lo12:.LANCHOR0 + mov x26, 0 +.L729: + add x0, x29, 120 + ldrb w0, [x0, x26] bl FlashBchSel - ldr x2, [x20,#:lo12:.LANCHOR0] - mov w0, 0 - mov w1, w21 + ldr x2, [x25, 64] mov x3, 0 + mov w1, w20 + mov w0, 0 bl FlashReadRawPage cmn w0, #1 - bne .L708 - ldr x2, [x20,#:lo12:.LANCHOR0] - mov w0, 0 + bne .L728 + ldr x2, [x25, 64] + mov x3, 0 mov w1, w28 - mov x3, 0 + mov w0, 0 bl FlashReadRawPage cmn w0, #1 - bne .L708 - add x27, x27, 1 - cmp x27, 4 - beq .L710 - b .L709 -.L711: + bne .L728 + add x26, x26, 1 + cmp x26, 4 + bne .L729 +.L730: + ldr w0, [x29, 108] + subs w24, w24, #1 + add w20, w20, w0 + bne .L727 + b .L735 +.L731: mov w1, 2036 - add x0, x27, 12 - mov w26, -1 + add x0, x6, 12 bl js_hash - ldr w1, [x27,8] + ldr w1, [x6, 8] cmp w1, w0 - beq .L722 -.L710: - subs w23, w23, #1 - add w21, w21, w24 - bne .L707 - mov w0, w23 -.L721: - bl flash_exit_slc_mode - 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 -.L708: - ldr x27, [x19,2200] - mov w0, 20036 - movk w0, 0x4e41, lsl 16 - ldr w1, [x27] - cmp w1, w0 - bne .L710 - cbnz w26, .L711 - add x20, x20, :lo12:.LANCHOR0 - ldr w0, [x20,92] - udiv w21, w21, w0 - mov w0, w26 - add w21, w21, 1 - str w21, [x20,8] - b .L721 -.L722: - add x1, x27, 160 + bne .L737 + add x1, x6, 160 mov w2, 32 - mov x0, x22 - add x26, x20, :lo12:.LANCHOR0 + mov x0, x21 bl ftl_memcpy - ldr x1, [x19,2200] + ldr x1, [x25, 2200] + add x23, x19, :lo12:.LANCHOR0 mov w2, 32 - add x0, x26, 112 + add x0, x23, 112 add x1, x1, 192 bl ftl_memcpy - ldr x1, [x19,2200] + ldr x1, [x25, 2200] mov w2, 852 - mov x0, x25 + add x0, x25, 1232 add x1, x1, 224 bl ftl_memcpy - ldrh w0, [x22,10] + ldrh w0, [x21, 10] bl FlashBlockAlignInit - str w21, [x19,2208] - ldr x0, [x19,2200] - ldr w1, [x0,1076] - strb w1, [x19,2104] - ldr w1, [x26,92] - udiv w1, w21, w1 - add w1, w1, 1 - cmp w1, 1 - bhi .L720 - mov w1, 2 -.L720: - ldrh w0, [x0,14] - str w1, [x26,8] - mov w26, 0 - strb w0, [x19,2212] - b .L710 + str w20, [x25, 2208] + ldr x1, [x25, 2200] + ldr w0, [x1, 1076] + strb w0, [x25, 2104] + ldr w0, [x23, 92] + udiv w0, w20, w0 + add w0, w0, 1 + cmp w0, 1 + bls .L733 +.L740: + str w0, [x23, 72] + add x0, x22, :lo12:.LANCHOR2 + ldrh w1, [x1, 14] + mov w23, 0 + strb w1, [x0, 2212] + b .L730 +.L733: + mov w0, 2 + b .L740 +.L737: + mov w23, -1 + b .L730 +.L728: + add x25, x22, :lo12:.LANCHOR2 + ldr x6, [x25, 2200] + ldr w0, [x6] + cmp w0, w27 + bne .L730 + cbnz w23, .L731 + add x19, x19, :lo12:.LANCHOR0 + ldr w0, [x19, 92] + udiv w20, w20, w0 + add w20, w20, 1 + str w20, [x19, 72] +.L735: + mov w0, 0 + bl flash_exit_slc_mode + mov w0, w23 + 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 FlashLoadPhyInfo, .-FlashLoadPhyInfo .align 2 .global ToshibaReadRetrial .type ToshibaReadRetrial, %function ToshibaReadRetrial: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x23, x24, [sp,48] - uxtb w23, w0 - mov w0, w23 - str w1, [x29,132] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - mov x27, x2 + stp x21, x22, [sp, 32] + and w21, w0, 255 + stp x25, x26, [sp, 64] + mov w0, w21 + stp x19, x20, [sp, 16] + mov x25, x2 + stp x27, x28, [sp, 80] mov x26, x3 + str w1, [x29, 120] + stp x23, x24, [sp, 48] bl NandcWaitFlashReady - adrp x20, g_retryMode + sbfiz x1, x21, 4, 32 adrp x0, .LANCHOR0 - sbfiz x1, x23, 4, 32 add x0, x0, :lo12:.LANCHOR0 - mov w22, 0 - add x0, x0, 24 add x2, x0, x1 - ldr x24, [x0,x1] - ldrb w0, [x2,8] - str x0, [x29,136] - add x19, x0, 8 - mov x28, x0 - ldrb w0, [x20,#:lo12:g_retryMode] - add x19, x24, x19, lsl 8 + ldr x22, [x0, x1] + adrp x1, g_retryMode + ldrb w27, [x2, 8] + ldrb w0, [x1, #:lo12:g_retryMode] + str x1, [x29, 112] + add x19, x27, 8 sub w0, w0, #67 - uxtb w0, w0 + str w27, [x29, 124] + and w0, w0, 255 + add x19, x22, x19, lsl 8 cmp w0, 1 - bls .L724 + bls .L758 adrp x0, .LANCHOR2+2104 - ldrb w0, [x0,#:lo12:.LANCHOR2+2104] - cbz w0, .L725 - mov w0, w22 - mov w22, 1 + ldrb w0, [x0, #:lo12:.LANCHOR2+2104] + cbz w0, .L759 + mov w23, 1 + mov w0, 0 bl NandcSetDdrMode -.L725: - ubfiz x0, x28, 8, 8 - mov w2, 92 - add x0, x24, x0 - str w2, [x0,2056] - mov w2, 197 - str w2, [x0,2056] -.L724: - adrp x0, g_maxRetryCount - mov w21, 1 - add x0, x0, :lo12:g_maxRetryCount - str x0, [x29,120] - ldr x0, [x29,136] - mov w25, -1 +.L743: + add x0, x22, x27, lsl 8 + mov w1, 92 + str w1, [x0, 2056] + mov w1, 197 + str w1, [x0, 2056] +.L742: + ldrsw x0, [x29, 124] + mov w20, 1 + mov w24, -1 add x0, x0, 8 - lsl x0, x0, 8 - str x0, [x29,112] - ubfiz x0, x28, 8, 8 - str x0, [x29,104] -.L726: + add x0, x22, x0, lsl 8 + str x0, [x29, 104] +.L744: adrp x0, g_maxRetryCount - ldrb w0, [x0,#:lo12:g_maxRetryCount] + ldrb w0, [x0, #:lo12:g_maxRetryCount] add w0, w0, 1 - cmp w21, w0 - bcs .L751 - ldrb w0, [x20,#:lo12:g_retryMode] - mov w1, w21 + cmp w20, w0 + bcc .L753 + mov w28, w24 +.L752: + ldr x0, [x29, 112] + mov w1, 0 + ldrb w0, [x0, #:lo12:g_retryMode] sub w0, w0, #67 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 mov x0, x19 - bhi .L727 + bhi .L754 bl SandiskSetRRPara - b .L728 -.L727: - bl ToshibaSetRRPara -.L728: - ldrb w0, [x20,#:lo12:g_retryMode] - cmp w0, 34 - bne .L729 - ldr x0, [x29,120] - ldrb w0, [x0] - sub w0, w0, #3 - cmp w21, w0 - bne .L729 - ldr x0, [x29,112] - mov w1, 179 - add x0, x24, x0 - str w1, [x0,8] -.L729: - ldr x0, [x29,104] - mov w1, 38 - add x0, x24, x0 - str w1, [x0,2056] - mov w1, 93 - str w1, [x0,2056] - cbz w22, .L730 +.L755: + ldrsw x0, [x29, 124] + add x0, x0, 8 + add x22, x22, x0, lsl 8 + mov w0, 255 + str w0, [x22, 8] + adrp x0, .LANCHOR2+1221 + ldrb w0, [x0, #:lo12:.LANCHOR2+1221] + add w0, w0, w0, lsl 1 + cmp w28, w0, lsr 2 + bcc .L756 + cmn w28, #1 + mov w0, 256 + csel w28, w28, w0, eq +.L756: + mov w0, w21 + bl NandcWaitFlashReady + cbz w23, .L741 mov w0, 4 bl NandcSetDdrMode - ldr w1, [x29,132] - mov w0, w23 - mov x2, x27 +.L741: + mov w0, w28 + 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 +.L759: + mov w23, 0 + b .L743 +.L758: + mov w23, 0 + b .L742 +.L753: + ldr x0, [x29, 112] + mov w1, w20 + ldrb w0, [x0, #:lo12:g_retryMode] + sub w0, w0, #67 + and w0, w0, 255 + cmp w0, 1 + mov x0, x19 + bhi .L745 + bl SandiskSetRRPara +.L746: + ldr x0, [x29, 112] + ldrb w0, [x0, #:lo12:g_retryMode] + cmp w0, 34 + bne .L747 + adrp x0, g_maxRetryCount + ldrb w0, [x0, #:lo12:g_maxRetryCount] + sub w0, w0, #3 + cmp w20, w0 + bne .L747 + ldr x1, [x29, 104] + mov w0, 179 + str w0, [x1, 8] +.L747: + add x0, x22, x27, lsl 8 + mov w1, 38 + str w1, [x0, 2056] + mov w1, 93 + str w1, [x0, 2056] + cbz w23, .L748 + mov w0, 4 + bl NandcSetDdrMode + ldr w1, [x29, 120] mov x3, x26 + mov x2, x25 + mov w0, w21 bl FlashReadRawPage mov w28, w0 mov w0, 0 bl NandcSetDdrMode - b .L731 -.L730: - ldr w1, [x29,132] - mov w0, w23 - mov x2, x27 +.L749: + cmn w28, #1 + beq .L750 + adrp x0, .LANCHOR2+1221 + cmn w24, #1 + csel w24, w24, w28, ne + ldrb w0, [x0, #:lo12:.LANCHOR2+1221] + add w0, w0, w0, lsl 1 + cmp w28, w0, lsr 2 + bcc .L752 + mov x26, 0 + mov x25, 0 +.L750: + add w20, w20, 1 + b .L744 +.L745: + bl ToshibaSetRRPara + b .L746 +.L748: + ldr w1, [x29, 120] mov x3, x26 + mov x2, x25 + mov w0, w21 bl FlashReadRawPage mov w28, w0 -.L731: - cmn w28, #1 - beq .L732 - adrp x0, .LANCHOR2+1221 - cmn w25, #1 - csel w25, w25, w28, ne - ldrb w0, [x0,#:lo12:.LANCHOR2+1221] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L734 - mov x26, 0 - mov x27, x26 -.L732: - add w21, w21, 1 - b .L726 -.L751: - mov w28, w25 -.L734: - ldrb w0, [x20,#:lo12:g_retryMode] - mov w1, 0 - sub w0, w0, #67 - uxtb w0, w0 - cmp w0, 1 - mov x0, x19 - bhi .L736 - bl SandiskSetRRPara - b .L737 -.L736: + b .L749 +.L754: bl ToshibaSetRRPara -.L737: - ldr x0, [x29,136] - add x0, x0, 8 - add x24, x24, x0, lsl 8 - mov w0, 255 - str w0, [x24,8] - adrp x0, .LANCHOR2+1221 - ldrb w0, [x0,#:lo12:.LANCHOR2+1221] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L738 - cmn w28, #1 - mov w0, 256 - csel w28, w28, w0, eq -.L738: - mov w0, w23 - bl NandcWaitFlashReady - cbz w22, .L739 - mov w0, 4 - bl NandcSetDdrMode -.L739: - mov w0, w28 - 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], 144 - ret + b .L755 .size ToshibaReadRetrial, .-ToshibaReadRetrial .align 2 .global SamsungReadRetrial @@ -4921,247 +4866,232 @@ ToshibaReadRetrial: SamsungReadRetrial: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w21, w0 - str x27, [sp,80] - mov w0, w21 - mov x22, x3 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov w24, w1 - mov x23, x2 + stp x21, x22, [sp, 32] + and w22, w0, 255 + stp x19, x20, [sp, 16] + mov w0, w22 + stp x23, x24, [sp, 48] + mov w23, w1 + stp x25, x26, [sp, 64] + mov x24, x2 + str x27, [sp, 80] + mov x25, x3 bl NandcWaitFlashReady adrp x26, g_maxRetryCount - adrp x4, .LANCHOR0 - sbfiz x0, x21, 4, 32 - add x4, x4, :lo12:.LANCHOR0 - mov w25, 1 - add x4, x4, 24 - mov w19, -1 - add x1, x4, x0 - add x26, x26, :lo12:g_maxRetryCount + sbfiz x1, x22, 4, 32 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 adrp x27, .LANCHOR2 - ldr x0, [x4,x0] - ldrb w20, [x1,8] + add x2, x0, x1 + add x26, x26, :lo12:g_maxRetryCount + add x27, x27, :lo12:.LANCHOR2 + mov w21, 1 + ldr x0, [x0, x1] + mov w19, -1 + ldrb w20, [x2, 8] add x20, x20, 8 add x20, x0, x20, lsl 8 -.L753: +.L770: ldrb w0, [x26] add w0, w0, 1 - cmp w25, w0 - bcs .L756 - mov x0, x20 - mov w1, w25 - bl SamsungSetRRPara - mov w0, w21 - mov w1, w24 - mov x2, x23 - mov x3, x22 - bl FlashReadRawPage - cmn w0, #1 - beq .L754 - add x1, x27, :lo12:.LANCHOR2 - cmn w19, #1 - csel w19, w19, w0, ne - ldrb w1, [x1,1221] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L759 - mov x22, 0 - mov x23, x22 -.L754: - add w25, w25, 1 - b .L753 -.L759: - mov w19, w0 -.L756: + cmp w21, w0 + bcc .L774 +.L773: mov x0, x20 mov w1, 0 bl SamsungSetRRPara adrp x0, .LANCHOR2+1221 - ldrb w0, [x0,#:lo12:.LANCHOR2+1221] + ldrb w0, [x0, #:lo12:.LANCHOR2+1221] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L758 + bcc .L769 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L758: +.L769: 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] + 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 +.L774: + mov w1, w21 + mov x0, x20 + bl SamsungSetRRPara + mov x3, x25 + mov x2, x24 + mov w1, w23 + mov w0, w22 + bl FlashReadRawPage + cmn w0, #1 + beq .L771 + ldrb w1, [x27, 1221] + cmn w19, #1 + csel w19, w19, w0, ne + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L776 + mov x25, 0 + mov x24, 0 +.L771: + add w21, w21, 1 + b .L770 +.L776: + mov w19, w0 + b .L773 .size SamsungReadRetrial, .-SamsungReadRetrial .align 2 .global MicronReadRetrial .type MicronReadRetrial, %function MicronReadRetrial: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w21, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 adrp x0, .LANCHOR2 - stp x27, x28, [sp,80] - mov w28, w1 + stp x23, x24, [sp, 48] + str w1, [x29, 140] add x1, x0, :lo12:.LANCHOR2 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - str x0, [x29,152] - mov x25, x2 - ldrb w19, [x1,1221] - mov x22, x3 - ldrb w1, [x1,1220] - cbnz w1, .L766 + stp x25, x26, [sp, 64] + mov x24, x2 + stp x21, x22, [sp, 32] + mov x25, x3 + stp x27, x28, [sp, 80] + str x0, [x29, 128] + ldrb w19, [x1, 1221] + ldrb w1, [x1, 1220] + cbnz w1, .L784 add w19, w19, w19, lsl 1 - ubfx x19, x19, 2, 8 - b .L767 -.L766: - mov w0, 3 - sdiv w19, w19, w0 -.L767: - adrp x26, g_maxRetryCount - adrp x27, .LC11 - adrp x20, .LANCHOR0 - add x0, x26, :lo12:g_maxRetryCount - mov w24, 0 - str x0, [x29,144] - add x27, x27, :lo12:.LC11 - add x20, x20, :lo12:.LANCHOR0 - add x20, x20, 24 - add x20, x20, w21, sxtw 4 -.L778: - mov w0, w21 + asr w19, w19, 2 +.L785: + adrp x21, .LANCHOR0 + add x21, x21, :lo12:.LANCHOR0 + add x21, x21, w20, sxtw 4 mov w23, 0 - mov w26, -1 + mov w28, 137 +.L795: + mov w0, w20 bl NandcWaitFlashReady - ldrb w4, [x20,8] - mov w9, 239 - ldr x6, [x20] - mov w10, 137 - lsl x8, x4, 8 -.L768: - ldr x0, [x29,144] - ldrb w0, [x0] - cmp w23, w0 - bcs .L771 - add x2, x6, x8 - mov x0, 1000 - str x4, [x29,96] - str x8, [x29,104] - str w9, [x2,2056] - str w10, [x2,2052] - str x6, [x29,112] - str x9, [x29,120] - str x10, [x29,128] - str x2, [x29,136] - bl __const_udelay - ldr x2, [x29,136] - add w7, w23, 1 - mov w0, w21 - mov w1, w28 - mov x3, x22 - str x7, [x29,136] - str w7, [x2,2048] - str wzr, [x2,2048] - str wzr, [x2,2048] - str wzr, [x2,2048] - mov x2, x25 - bl FlashReadRawPage - cmn w0, #1 - ldr x7, [x29,136] - ldr x10, [x29,128] - ldr x9, [x29,120] - ldr x6, [x29,112] - ldr x8, [x29,104] - ldr x4, [x29,96] - beq .L769 - cmn w26, #1 - csel w26, w26, w0, ne - cmp w0, w19 - bcc .L780 - mov x22, 0 - mov x25, x22 -.L769: - mov w23, w7 - b .L768 -.L780: - mov x22, 0 - mov w26, w0 - mov x25, x22 -.L771: - add x1, x6, x4, lsl 8 + ldrb w4, [x21, 8] + adrp x7, g_maxRetryCount + ldr x8, [x21] + add x7, x7, :lo12:g_maxRetryCount + mov w22, 0 + mov w26, -1 + add x27, x8, x4, lsl 8 +.L786: + ldrb w0, [x7] + cmp w22, w0 + bcc .L790 +.L789: + add x4, x8, x4, lsl 8 mov w0, 239 - str x1, [x29,136] - str w0, [x1,2056] - mov w0, 137 - str w0, [x1,2052] + str x4, [x29, 120] + str w0, [x4, 2056] mov x0, 1000 + str w28, [x4, 2052] bl __const_udelay - ldr x1, [x29,136] + ldr x4, [x29, 120] cmp w26, w19 - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] - bcc .L773 + str wzr, [x4, 2048] + str wzr, [x4, 2048] + str wzr, [x4, 2048] + str wzr, [x4, 2048] + bcc .L791 cmn w26, #1 mov w0, 256 csel w26, w26, w0, eq -.L773: - cmn w26, #1 - cset w6, eq - cbnz w6, .L782 +.L791: cmp w26, 256 - cset w1, eq - cbz w1, .L774 -.L782: - mov x0, x27 - mov w1, w23 - mov w2, w28 - mov w3, w23 + ccmn w26, #1, 4, ne + bne .L792 + ldr w2, [x29, 140] + adrp x0, .LC11 mov w4, w26 - str x6, [x29,136] + mov w3, w22 + mov w1, w22 + add x0, x0, :lo12:.LC11 bl printk - cbnz w24, .L776 - ldr x6, [x29,136] - cbz w6, .L787 - ldr x0, [x29,152] + cbnz w23, .L793 + ldr x0, [x29, 128] add x0, x0, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L787 - mov w0, w21 + ldrb w0, [x0, 1220] + cbz w0, .L783 + cmn w26, #1 + bne .L783 mov w1, 3 - mov w24, 1 + mov w0, w20 + mov w23, 1 bl micron_auto_read_calibration_config - b .L778 -.L776: - mov w0, w21 + b .L795 +.L784: + mov w0, 3 + sdiv w19, w19, w0 + b .L785 +.L790: + mov w0, 239 + str w0, [x27, 2056] + str w28, [x27, 2052] + mov x0, 1000 + stp x4, x7, [x29, 96] + str x8, [x29, 112] + bl __const_udelay + add w9, w22, 1 + str w9, [x27, 2048] + str wzr, [x27, 2048] + mov x3, x25 + ldr w1, [x29, 140] + mov x2, x24 + str wzr, [x27, 2048] + mov w0, w20 + str wzr, [x27, 2048] + str w9, [x29, 120] + bl FlashReadRawPage + cmn w0, #1 + ldr w9, [x29, 120] + ldp x4, x7, [x29, 96] + ldr x8, [x29, 112] + beq .L787 + cmn w26, #1 + csel w26, w26, w0, ne + cmp w0, w19 + bcc .L797 + mov x25, 0 + mov x24, 0 +.L787: + mov w22, w9 + b .L786 +.L797: + mov w26, w0 + mov x25, 0 + mov x24, 0 + b .L789 +.L793: + mov w0, w20 mov w1, 0 bl micron_auto_read_calibration_config cmn w26, #1 mov w0, 256 csel w26, w26, w0, eq - b .L787 -.L774: - cbz w24, .L787 - mov w0, w21 +.L783: + 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], 144 + ret +.L792: + cbz w23, .L783 + mov w1, 0 + mov w0, w20 mov w26, 256 bl micron_auto_read_calibration_config -.L787: - 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], 160 - ret + b .L783 .size MicronReadRetrial, .-MicronReadRetrial .align 2 .global HynixReadRetrial @@ -5169,326 +5099,311 @@ MicronReadRetrial: HynixReadRetrial: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR2 - adrp x22, .LANCHOR0 - stp x23, x24, [sp,48] - uxtb x23, w0 + stp x27, x28, [sp, 80] + and x28, x0, 255 add x0, x21, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] add x0, x0, 1232 - mov x24, x23 - stp x27, x28, [sp,80] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - mov w28, w1 - add x1, x0, x23 - ldrb w26, [x0,2] + stp x23, x24, [sp, 48] + stp x19, x20, [sp, 16] + mov w27, w1 + adrp x22, .LANCHOR0 + add x1, x0, x28 + ldrb w24, [x0, 2] add x0, x22, :lo12:.LANCHOR0 - mov x27, x2 - mov x25, x3 - ldrb w19, [x1,12] - ldr x0, [x0,104] - ldrb w0, [x0,19] + mov x23, x28 + mov x25, x2 + mov x26, x3 + ldrb w19, [x1, 12] + ldr x0, [x0, 104] + ldrb w0, [x0, 19] sub w0, w0, #7 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 - bhi .L796 - ldrb w19, [x1,20] -.L796: - mov w0, w24 - mov w20, -1 + bhi .L809 + ldrb w19, [x1, 20] +.L809: + mov w0, w23 bl NandcWaitFlashReady add x5, x21, :lo12:.LANCHOR2 mov w4, 0 add x6, x5, 1236 -.L797: - cmp w4, w26 - bcs .L801 + mov w20, -1 +.L810: + cmp w4, w24 + bcc .L815 +.L814: + add x22, x22, :lo12:.LANCHOR0 + ldr x0, [x22, 104] + ldrb w0, [x0, 19] + sub w0, w0, #7 + and w0, w0, 255 + cmp w0, 1 + add x0, x21, :lo12:.LANCHOR2 + add x0, x0, x28 + bhi .L816 + strb w19, [x0, 1252] +.L817: + add x21, x21, :lo12:.LANCHOR2 + ldrb w0, [x21, 1221] + add w0, w0, w0, lsl 1 + cmp w20, w0, lsr 2 + bcc .L808 + cmn w20, #1 + mov w0, 256 + csel w20, w20, w0, eq +.L808: + mov w0, w20 + 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 +.L815: add w19, w19, 1 - ldrb w1, [x5,1233] + ldrb w1, [x5, 1233] + and w19, w19, 255 mov x2, x6 - mov w0, w24 - uxtb w19, w19 - str x4, [x29,104] - cmp w19, w26 - str x5, [x29,112] - csel w19, w19, wzr, cc - str x6, [x29,120] + cmp w24, w19 + str w4, [x29, 108] + csel w19, w19, wzr, hi + stp x6, x5, [x29, 112] mov w3, w19 + mov w0, w23 bl HynixSetRRPara - mov w0, w24 - mov w1, w28 - mov x2, x27 - mov x3, x25 + mov x3, x26 + mov x2, x25 + mov w1, w27 + mov w0, w23 bl FlashReadRawPage cmn w0, #1 - ldr x6, [x29,120] - ldr x5, [x29,112] - ldr x4, [x29,104] - beq .L799 - ldrb w1, [x5,1221] + ldr w4, [x29, 108] + ldp x6, x5, [x29, 112] + beq .L812 + ldrb w1, [x5, 1221] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L806 + bcc .L819 + mov x26, 0 mov x25, 0 - mov x27, x25 -.L799: +.L812: add w4, w4, 1 - b .L797 -.L806: + b .L810 +.L819: mov w20, w0 -.L801: - add x22, x22, :lo12:.LANCHOR0 - ldr x0, [x22,104] - ldrb w0, [x0,19] - sub w0, w0, #7 - uxtb w0, w0 - cmp w0, 1 - add x0, x21, :lo12:.LANCHOR2 - add x23, x0, x23 - bhi .L803 - strb w19, [x23,1252] - b .L804 -.L803: - strb w19, [x23,1244] -.L804: - add x21, x21, :lo12:.LANCHOR2 - ldrb w0, [x21,1221] - add w0, w0, w0, lsl 1 - cmp w20, w0, lsr 2 - bcc .L805 - cmn w20, #1 - mov w0, 256 - csel w20, w20, w0, eq -.L805: - mov w0, w20 - 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 + b .L814 +.L816: + strb w19, [x0, 1244] + b .L817 .size HynixReadRetrial, .-HynixReadRetrial .align 2 .type samsung_read_retrial, %function samsung_read_retrial: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w22, w0 - adrp x21, .LANCHOR3 - mov w0, w22 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - mov w23, w1 + stp x23, x24, [sp, 48] + and w23, w0, 255 + stp x21, x22, [sp, 32] mov x24, x2 - stp x27, x28, [sp,80] - mov x26, x3 + stp x25, x26, [sp, 64] + mov w0, w23 + stp x19, x20, [sp, 16] + mov w26, w1 + mov x25, x3 + stp x27, x28, [sp, 80] bl NandcWaitFlashReady + adrp x22, .LANCHOR2 + sbfiz x1, x23, 4, 32 adrp x0, .LANCHOR0 - sbfiz x1, x22, 4, 32 add x0, x0, :lo12:.LANCHOR0 - adrp x25, .LANCHOR2 - add x0, x0, 24 - add x2, x0, x1 - ldr x5, [x0,x1] - add x0, x25, :lo12:.LANCHOR2 - ldrb w19, [x2,8] - ldrb w0, [x0,2092] - cbnz w0, .L813 - lsl x19, x19, 8 + adrp x21, .LANCHOR3 + add x3, x0, x1 + ldr x1, [x0, x1] + add x0, x22, :lo12:.LANCHOR2 + ldrb w19, [x3, 8] + ldrb w2, [x0, 2092] + cbnz w2, .L827 + add x19, x1, x19, lsl 8 + add x21, x21, :lo12:.LANCHOR3 + mov x27, x0 mov x4, 0 mov w20, -1 - add x27, x5, x19 mov w6, 239 - mov w7, 141 - add x21, x21, :lo12:.LANCHOR3 -.L817: - str w6, [x27,2056] + mov w5, 141 +.L831: + str w6, [x19, 2056] add x0, x21, x4 - str w7, [x27,2052] - mov w1, w23 - mov x2, x24 - mov x3, x26 - ldrsb w0, [x0,1] + str w5, [x19, 2052] add w28, w4, 1 - str w0, [x27,2048] - mov w0, w22 - str wzr, [x27,2048] - str wzr, [x27,2048] - str wzr, [x27,2048] - str x5, [x29,96] - str x6, [x29,104] - str x7, [x29,112] - str x4, [x29,120] + stp w6, w5, [x29, 96] + mov x3, x25 + ldrsb w0, [x0, 1] + mov x2, x24 + str w0, [x19, 2048] + mov w1, w26 + str wzr, [x19, 2048] + mov w0, w23 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str x4, [x29, 104] bl FlashReadRawPage cmn w0, #1 - ldr x4, [x29,120] - ldr x7, [x29,112] - ldr x6, [x29,104] - ldr x5, [x29,96] - beq .L814 - add x1, x25, :lo12:.LANCHOR2 + ldp w6, w5, [x29, 96] + ldr x4, [x29, 104] + beq .L828 + ldrb w1, [x27, 1221] cmn w20, #1 csel w20, w20, w0, ne - ldrb w1, [x1,1221] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L826 - mov x26, 0 - mov x24, x26 -.L814: + bcc .L839 + mov x25, 0 + mov x24, 0 +.L828: add x4, x4, 1 cmp x4, 25 - bne .L817 + bne .L831 mov w28, 26 - b .L816 -.L826: - mov w20, w0 -.L816: - add x3, x5, x19 +.L830: mov w0, 239 - str w0, [x3,2056] + str w0, [x19, 2056] mov w0, 141 - b .L842 -.L813: - add x21, x21, :lo12:.LANCHOR3 - lsl x19, x19, 8 - add x21, x21, 32 - mov w20, -1 - mov w28, 1 - add x27, x5, x19 - mov w4, 239 - mov w6, 137 -.L822: - str w4, [x27,2056] - mov w1, w23 - str w6, [x27,2052] - mov x2, x24 - mov x3, x26 - str x5, [x29,104] - ldrb w0, [x21,4] - str w0, [x27,2048] - str x4, [x29,112] - ldrb w0, [x21,5] - str w0, [x27,2048] - str x6, [x29,120] - ldrb w0, [x21,6] - str w0, [x27,2048] - ldrb w0, [x21,7] - str w0, [x27,2048] - mov w0, w22 - bl FlashReadRawPage - cmn w0, #1 - ldr x6, [x29,120] - ldr x4, [x29,112] - ldr x5, [x29,104] - beq .L819 - add x1, x25, :lo12:.LANCHOR2 - cmn w20, #1 - csel w20, w20, w0, ne - ldrb w1, [x1,1221] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L827 - mov x26, 0 - mov x24, x26 -.L819: - add w28, w28, 1 - add x21, x21, 4 - cmp w28, 26 - bne .L822 - b .L821 -.L827: - mov w20, w0 -.L821: - add x3, x5, x19 - mov w0, 239 - str w0, [x3,2056] - mov w0, 137 -.L842: - str w0, [x3,2052] - add x25, x25, :lo12:.LANCHOR2 - str wzr, [x3,2048] - str wzr, [x3,2048] - str wzr, [x3,2048] - str wzr, [x3,2048] - ldrb w0, [x25,1221] +.L855: + str w0, [x19, 2052] + add x22, x22, :lo12:.LANCHOR2 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldrb w0, [x22, 1221] add w0, w0, w0, lsl 1 cmp w20, w0, lsr 2 - bcc .L823 + bcc .L837 cmn w20, #1 mov w0, 256 csel w20, w20, w0, eq -.L823: - cmn w20, #1 - beq .L828 +.L837: cmp w20, 256 - bne .L824 -.L828: + ccmn w20, #1, 4, ne + bne .L838 adrp x0, .LC12 + mov w4, w20 + mov w3, w28 + mov w2, w26 mov w1, w28 add x0, x0, :lo12:.LC12 - mov w2, w23 - mov w3, w28 - mov w4, w20 bl printk -.L824: - mov w0, w22 +.L838: + mov w0, w23 bl NandcWaitFlashReady mov w0, w20 - 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 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 +.L839: + mov w20, w0 + b .L830 +.L827: + add x21, x21, :lo12:.LANCHOR3 + add x19, x1, x19, lsl 8 + add x21, x21, 36 + mov x27, x0 + mov w20, -1 + mov w28, 1 + mov w5, 239 + mov w4, 137 +.L836: + str w5, [x19, 2056] + mov x3, x25 + str w4, [x19, 2052] + mov x2, x24 + stp w5, w4, [x29, 100] + mov w1, w26 + ldrb w0, [x21] + str w0, [x19, 2048] + ldrb w0, [x21, 1] + str w0, [x19, 2048] + ldrb w0, [x21, 2] + str w0, [x19, 2048] + ldrb w0, [x21, 3] + str w0, [x19, 2048] + mov w0, w23 + bl FlashReadRawPage + cmn w0, #1 + ldp w5, w4, [x29, 100] + beq .L833 + ldrb w1, [x27, 1221] + cmn w20, #1 + csel w20, w20, w0, ne + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L840 + mov x25, 0 + mov x24, 0 +.L833: + add w28, w28, 1 + add x21, x21, 4 + cmp w28, 26 + bne .L836 +.L835: + mov w0, 239 + str w0, [x19, 2056] + mov w0, 137 + b .L855 +.L840: + mov w20, w0 + b .L835 .size samsung_read_retrial, .-samsung_read_retrial .align 2 .global FlashProgPage .type FlashProgPage, %function FlashProgPage: stp x29, x30, [sp, -64]! - mov x4, x3 add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 - adrp x0, .LANCHOR1+481 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] mov w20, w1 + stp x21, x22, [sp, 32] + adrp x1, .LANCHOR1+481 + str x23, [sp, 48] mov x22, x2 - ldrb w21, [x0,#:lo12:.LANCHOR1+481] - cbnz w19, .L844 + ldrb w21, [x1, #:lo12:.LANCHOR1+481] + ands w19, w0, 255 + mov x23, x3 + bne .L857 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,89] - ldr w2, [x0,92] + ldrb w1, [x0, 89] + ldr w2, [x0, 92] mul w1, w1, w2 - cmp w20, w1 - bcs .L844 - ldrb w0, [x0,88] - cmp w0, wzr + cmp w1, w20 + bls .L857 + ldrb w0, [x0, 88] + cmp w0, 0 mov w0, 4 csel w21, w21, w0, eq -.L844: +.L857: mov w0, w19 - str x4, [x29,56] bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs - mov w0, w19 mov w1, w20 - bl FlashProgFirstCmd - ldr x4, [x29,56] - mov w2, w21 - mov x3, x22 mov w0, w19 + bl FlashProgFirstCmd + mov x4, x23 + mov x3, x22 + mov w2, w21 mov w1, 1 + mov w0, w19 bl NandcXferData mov w1, w20 mov w0, w19 @@ -5498,12 +5413,13 @@ FlashProgPage: mov w1, w20 mov w0, w19 bl FlashReadStatus - mov w20, w0 + mov w2, w0 mov w0, w19 bl NandcFlashDeCs - and w0, w20, 1 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + and w0, w2, 1 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size FlashProgPage, .-FlashProgPage @@ -5511,167 +5427,157 @@ FlashProgPage: .global FlashSavePhyInfo .type FlashSavePhyInfo, %function FlashSavePhyInfo: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x21, .LANCHOR0 - adrp x24, .LANCHOR2 - stp x19, x20, [sp,16] - add x19, x24, :lo12:.LANCHOR2 - add x20, x21, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - ldr x0, [x21,#:lo12:.LANCHOR0] - mov w23, 0 - str x0, [x19,2200] - mov w22, w23 - ldrb w0, [x19,2213] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + adrp x20, .LANCHOR2 + add x20, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov w23, 20036 + ldr x0, [x19, 64] + movk w23, 0x4e41, lsl 16 + str x0, [x20, 2200] + mov w22, 0 + ldrb w0, [x20, 2213] + mov w21, 0 bl FlashBchSel - ldr x0, [x21,#:lo12:.LANCHOR0] - mov w1, 0 + ldr x0, [x19, 64] mov w2, 2048 + mov w1, 0 bl ftl_memset - ldr x1, [x19,2200] - mov w0, 20036 - movk w0, 0x4e41, lsl 16 + ldr x0, [x20, 2200] mov w2, 32 - str w0, [x1] - ldr x0, [x19,2200] - ldrb w1, [x20,3216] + str w23, [x0] + ldr x0, [x20, 2200] + ldrb w1, [x19, 3216] add x0, x0, 16 - strh w1, [x0,-4] - ldrb w1, [x20,89] - strh w1, [x0,-2] - ldrb w1, [x19,2104] - str w1, [x0,1060] + strh w1, [x0, -4] + ldrb w1, [x19, 89] + strh w1, [x0, -2] + ldrb w1, [x20, 2104] + str w1, [x0, 1060] adrp x1, IDByte add x1, x1, :lo12:IDByte bl ftl_memcpy - ldr x0, [x19,2200] - add x1, x20, 3220 + ldr x0, [x20, 2200] mov w2, 8 + add x1, x19, 3220 add x0, x0, 80 bl ftl_memcpy - ldr x0, [x19,2200] - add x1, x20, 3228 + ldr x0, [x20, 2200] mov w2, 32 + add x1, x19, 3228 add x0, x0, 96 bl ftl_memcpy - ldr x0, [x19,2200] + ldr x0, [x20, 2200] adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 mov w2, 32 add x1, x1, 472 add x0, x0, 160 bl ftl_memcpy - ldr x0, [x19,2200] - add x1, x20, 112 + ldr x0, [x20, 2200] mov w2, 32 + add x1, x19, 112 add x0, x0, 192 bl ftl_memcpy - ldr x0, [x19,2200] - add x1, x19, 1232 + ldr x0, [x20, 2200] mov w2, 852 + add x1, x20, 1232 add x0, x0, 224 bl ftl_memcpy - ldr x20, [x19,2200] + ldr x6, [x20, 2200] mov w1, 2036 - add x0, x20, 12 + add x0, x6, 12 bl js_hash - str w0, [x20,8] + str w0, [x6, 8] mov w0, 1592 - str w0, [x20,4] - ldr x0, [x19,2216] - str x0, [x19,2200] + str w0, [x6, 4] + ldr x0, [x20, 2216] + str x0, [x20, 2200] mov w0, 0 - mov x19, x21 bl flash_enter_slc_mode -.L852: - add x21, x19, :lo12:.LANCHOR0 - mov w0, 0 +.L866: + ldr w1, [x19, 92] mov w2, 0 - ldr w1, [x21,92] - mul w1, w22, w1 + mov w0, 0 + mul w1, w21, w1 bl FlashEraseBlock - add x0, x24, :lo12:.LANCHOR2 - ldrb w20, [x0,1220] - cbz w20, .L847 - mov w20, 0 -.L848: - add x0, x19, :lo12:.LANCHOR0 - ldr x2, [x19,#:lo12:.LANCHOR0] + ldrb w0, [x20, 1220] + cbz w0, .L861 + mov w24, 0 +.L862: + ldr w1, [x19, 92] mov x3, 0 - ldr w1, [x0,92] + ldr x2, [x19, 64] mov w0, 0 - madd w1, w22, w1, w20 - add w20, w20, 1 + madd w1, w21, w1, w24 + add w24, w24, 1 bl FlashProgPage - cmp w20, 10 - bne .L848 - b .L849 -.L847: - ldr w1, [x21,92] + cmp w24, 10 + bne .L862 +.L863: + ldr w1, [x19, 92] mov x3, 0 - ldr x2, [x19,#:lo12:.LANCHOR0] - mov w0, w20 - mul w1, w22, w1 - bl FlashProgPage - ldr w1, [x21,92] - mov w0, w20 - ldr x2, [x19,#:lo12:.LANCHOR0] - mov x3, 0 - mul w1, w22, w1 - add w1, w1, 1 - bl FlashProgPage -.L849: - add x21, x19, :lo12:.LANCHOR0 - add x20, x24, :lo12:.LANCHOR2 + ldr x2, [x20, 2216] mov w0, 0 - mov x3, 0 - add w26, w22, 1 - ldr w1, [x21,92] - ldr x2, [x20,2216] - mul w1, w22, w1 + mul w1, w21, w1 bl FlashReadRawPage cmn w0, #1 - beq .L850 - ldr x25, [x20,2200] - mov w0, 20036 - movk w0, 0x4e41, lsl 16 - ldr w1, [x25] - cmp w1, w0 - bne .L850 + add w7, w21, 1 + beq .L864 + ldr x6, [x20, 2200] + ldr w0, [x6] + cmp w0, w23 + bne .L864 mov w1, 2036 - add x0, x25, 12 + add x0, x6, 12 bl js_hash - ldr w1, [x25,8] + ldr w1, [x6, 8] cmp w1, w0 - bne .L850 - ldr w0, [x21,92] - cmp w23, 1 - str w26, [x21,8] - mul w22, w22, w0 - str w22, [x20,2208] - beq .L853 - mov w23, 1 -.L850: - cmp w26, 4 - mov w22, w26 - bne .L852 - b .L851 -.L853: - mov w23, 2 -.L851: + bne .L864 + ldr w0, [x19, 92] + cmp w22, 1 + str w7, [x19, 72] + mul w21, w0, w21 + str w21, [x20, 2208] + beq .L867 + mov w22, 1 +.L864: + mov w21, w7 + cmp w7, 4 + bne .L866 +.L865: mov w0, 0 bl flash_exit_slc_mode - cmp w23, wzr + cmp w22, 0 csetm w0, eq - 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 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L861: + ldr w1, [x19, 92] + mov x3, 0 + ldr x2, [x19, 64] + mov w0, 0 + mul w1, w21, w1 + bl FlashProgPage + ldr w1, [x19, 92] + mov x3, 0 + ldr x2, [x19, 64] + mov w0, 0 + mul w1, w21, w1 + add w1, w1, 1 + bl FlashProgPage + b .L863 +.L867: + mov w22, 2 + b .L865 .size FlashSavePhyInfo, .-FlashSavePhyInfo .align 2 .global FlashReadIdbDataRaw @@ -5679,109 +5585,109 @@ FlashSavePhyInfo: FlashReadIdbDataRaw: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x25, x26, [sp,64] + stp x25, x26, [sp, 64] mov x25, x0 mov w0, 60 - strb w0, [x29,120] + stp x21, x22, [sp, 32] + strb w0, [x29, 120] mov w0, 40 - strb w0, [x29,121] + strb w0, [x29, 121] mov w0, 24 - stp x21, x22, [sp,32] - strb w0, [x29,122] - adrp x21, .LANCHOR2 + strb w0, [x29, 122] mov w0, 16 - strb w0, [x29,123] + adrp x21, .LANCHOR2 + strb w0, [x29, 123] add x0, x21, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - ldrb w28, [x0,1221] - ldr w0, [x0,2100] - cbz w0, .L860 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldrb w26, [x0, 1221] + ldr w0, [x0, 2100] + cbz w0, .L875 mov w0, 0 bl flash_enter_slc_mode -.L860: - adrp x26, .LANCHOR0 - adrp x24, .LC13 - mov x0, x25 - mov w1, 0 - mov w2, 2048 - mov w23, -1 +.L875: + adrp x22, .LANCHOR0 + add x22, x22, :lo12:.LANCHOR0 + mov w28, 35899 + add x27, x29, 120 + mov x19, x22 + mov w24, -1 mov w20, 2 - mov x27, x26 - add x24, x24, :lo12:.LC13 + movk w28, 0xfcdc, lsl 16 + mov w2, 2048 + mov w1, 0 + mov x0, x25 bl ftl_memset -.L861: - add x0, x26, :lo12:.LANCHOR0 - ldrb w0, [x0,89] +.L876: + ldrb w0, [x22, 89] cmp w20, w0 - bcs .L865 - mov x22, 0 -.L863: - add x0, x29, 120 - add x19, x27, :lo12:.LANCHOR0 - ldrb w4, [x22,x0] - str x4, [x29,104] + bcc .L881 +.L880: + add x21, x21, :lo12:.LANCHOR2 + mov w0, w26 + bl FlashBchSel + ldr w0, [x21, 2100] + cbz w0, .L874 + mov w0, 0 + bl flash_exit_slc_mode +.L874: + mov w0, w24 + 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 +.L881: + mov x23, 0 +.L878: + ldrb w4, [x23, x27] + str w4, [x29, 108] mov w0, w4 bl FlashBchSel - ldr w1, [x19,92] - mov w0, 0 - ldr x2, [x27,#:lo12:.LANCHOR0] + ldr w1, [x19, 92] mov x3, 0 + ldr x2, [x19, 64] + mov w0, 0 mul w1, w20, w1 bl FlashReadRawPage cmn w0, #1 - ldr x4, [x29,104] - bne .L862 - add x22, x22, 1 - cmp x22, 4 - bne .L863 - b .L864 -.L862: - ldr x0, [x19] - ldr w1, [x0] - mov w0, 35899 - movk w0, 0xfcdc, lsl 16 - cmp w1, w0 - bne .L864 - mov w1, w4 - mov x0, x24 - bl printk - ldr x1, [x19] - mov x0, x25 - mov w2, 2048 - bl ftl_memcpy - ldr x0, [x19] - ldr w0, [x0,512] - strb w0, [x19,89] - ldr w0, [x19,8] - cmp w0, w20 - bls .L868 - mov w23, 0 - str w20, [x19,8] - bl FlashSavePhyInfo -.L864: + ldr w4, [x29, 108] + bne .L877 + add x23, x23, 1 + cmp x23, 4 + bne .L878 +.L879: add w20, w20, 1 - b .L861 -.L868: - mov w23, 0 -.L865: - mov w0, w28 - add x21, x21, :lo12:.LANCHOR2 - bl FlashBchSel - ldr w0, [x21,2100] - cbz w0, .L872 - mov w0, 0 - bl flash_exit_slc_mode -.L872: - mov w0, w23 - 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 + b .L876 +.L884: + mov w24, 0 + b .L880 +.L877: + ldr x0, [x19, 64] + ldr w0, [x0] + cmp w0, w28 + bne .L879 + mov w1, w4 + adrp x0, .LC13 + add x0, x0, :lo12:.LC13 + bl printk + ldr x1, [x19, 64] + mov w2, 2048 + mov x0, x25 + bl ftl_memcpy + ldr x0, [x19, 64] + ldr w0, [x0, 512] + strb w0, [x19, 89] + ldr w0, [x19, 72] + cmp w20, w0 + bcs .L884 + mov w24, 0 + str w20, [x19, 72] + bl FlashSavePhyInfo + b .L879 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .align 2 .global FlashInit @@ -5789,621 +5695,614 @@ FlashReadIdbDataRaw: FlashInit: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - mov x23, x0 - mov w0, 32768 + stp x23, x24, [sp, 48] + add x23, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] adrp x19, .LANCHOR2 - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - stp x25, x26, [sp,64] - bl ftl_malloc add x21, x19, :lo12:.LANCHOR2 - str x0, [x20,#:lo12:.LANCHOR0] + mov x22, x0 + stp x25, x26, [sp, 64] mov w0, 32768 - add x22, x20, :lo12:.LANCHOR0 - adrp x24, .LC14 - bl ftl_malloc - str x0, [x21,2216] - mov w0, 4096 - add x22, x22, 24 - mov w27, 1 - mov w28, 4 - bl ftl_malloc - str x0, [x21,2224] + stp x27, x28, [sp, 80] + bl ftl_dma32_malloc + str x0, [x23, 64] mov w0, 32768 - bl ftl_malloc - str x0, [x21,2232] + bl ftl_dma32_malloc + str x0, [x21, 2216] mov w0, 4096 - bl ftl_malloc - str x0, [x21,2240] + bl ftl_dma32_malloc + str x0, [x21, 2224] + mov w0, 32768 + bl ftl_dma32_malloc + str x0, [x21, 2232] + mov w0, 4096 + bl ftl_dma32_malloc + str x0, [x21, 2240] + mov w0, 50 + strb w0, [x21, 2212] + adrp x25, .LC14 + strb w0, [x23, 89] mov w0, 128 - str w0, [x22,68] + str w0, [x23, 92] mov w0, 60 - mov w1, 50 - strb w0, [x21,2213] - mov x0, x23 - strb w1, [x22,65] - mov w23, 0 - strb w1, [x21,2212] - str wzr, [x22,-16] - strb wzr, [x21,2104] - str wzr, [x21,2184] - strb wzr, [x22,64] - strb wzr, [x21,2248] + strb wzr, [x21, 2104] + add x25, x25, :lo12:.LC14 + strb w0, [x21, 2213] + mov x0, x22 + strb wzr, [x21, 2248] + adrp x22, IDByte + str wzr, [x21, 2184] + add x21, x22, :lo12:IDByte + mov w24, 0 + mov w28, 239 + strb wzr, [x23, 88] + str wzr, [x23, 72] bl NandcInit - adrp x21, IDByte - add x0, x24, :lo12:.LC14 - add x26, x21, :lo12:IDByte - str x0, [x29,104] -.L884: - ldrb w2, [x22,8] - uxtb w25, w23 - mov w0, w25 - str x2, [x29,96] - ldr x24, [x22] +.L899: + ldrb w2, [x23, 8] + and w26, w24, 255 + str w2, [x29, 108] + mov w0, w26 + ldr x27, [x23] bl FlashReset - mov w0, w25 + mov w0, w26 bl NandcFlashCs - ldr x2, [x29,96] + ldr w2, [x29, 108] mov w0, 144 ubfiz x2, x2, 8, 8 - add x24, x24, x2 - str w0, [x24,2056] + add x27, x27, x2 + str w0, [x27, 2056] mov x0, 1000 - str wzr, [x24,2052] + str wzr, [x27, 2052] bl __const_udelay - ldr w0, [x24,2048] - uxtb w0, w0 - strb w0, [x26] + ldr w0, [x27, 2048] + and w0, w0, 255 + strb w0, [x21] 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 .L879 - mov w0, 239 - str w0, [x24,2056] - str w27, [x24,2052] + ldr w2, [x27, 2048] + strb w2, [x21, 1] + ldr w2, [x27, 2048] + strb w2, [x21, 2] + ldr w2, [x27, 2048] + strb w2, [x21, 3] + ldr w2, [x27, 2048] + strb w2, [x21, 4] + ldr w2, [x27, 2048] + strb w2, [x21, 5] + bne .L894 + str w28, [x27, 2056] + mov w0, 1 + str w0, [x27, 2052] mov x0, 1000 bl __const_udelay - str w28, [x24,2048] - str wzr, [x24,2048] - str wzr, [x24,2048] - str wzr, [x24,2048] -.L879: - mov w0, w25 + mov w0, 4 + str w0, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] +.L894: + mov w0, w26 bl NandcFlashDeCs - ldrb w2, [x26] + ldrb w2, [x21] sub w0, w2, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L880 - ldr x0, [x29,104] - add w1, w23, 1 - ldrb w3, [x26,1] - ldrb w4, [x26,2] - ldrb w5, [x26,3] - ldrb w6, [x26,4] - ldrb w7, [x26,5] + bhi .L895 + ldrb w7, [x21, 5] + add w1, w24, 1 + ldrb w6, [x21, 4] + mov x0, x25 + ldrb w5, [x21, 3] + ldrb w4, [x21, 2] + ldrb w3, [x21, 1] bl printk -.L880: - cbnz w23, .L881 - ldrb w0, [x21,#:lo12:IDByte] - add x1, x21, :lo12:IDByte +.L895: + cbnz w24, .L896 + ldrb w0, [x22, #:lo12:IDByte] + add x1, x22, :lo12:IDByte sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L936 - ldrb w0, [x1,1] + bhi .L947 + ldrb w0, [x1, 1] cmp w0, 255 - beq .L936 + beq .L947 bl FlashCs123Init -.L881: - ldrb w0, [x26] +.L896: + ldrb w0, [x21] cmp w0, 181 - bne .L883 + bne .L898 mov w0, 44 - strb w0, [x26] -.L883: - add w23, w23, 1 - add x22, x22, 16 - cmp w23, 4 - add x26, x26, 8 - bne .L884 - ldrb w0, [x21,#:lo12:IDByte] + strb w0, [x21] +.L898: + add w24, w24, 1 + add x23, x23, 16 + add x21, x21, 8 + cmp w24, 4 + bne .L899 + ldrb w0, [x22, #:lo12:IDByte] cmp w0, 173 - beq .L885 + beq .L900 add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2108] + ldr w0, [x0, 2108] bl NandcSetDdrMode -.L885: - add x22, x19, :lo12:.LANCHOR2 - mov w1, 0 +.L900: + add x21, x19, :lo12:.LANCHOR2 mov w2, 852 - add x0, x22, 1232 + mov w1, 0 + add x0, x21, 1232 bl ftl_memset add x2, x20, :lo12:.LANCHOR0 - adrp x1, .LANCHOR1 - add x0, x1, :lo12:.LANCHOR1 - ldr w4, [x22,2116] - add x0, x0, 472 - strb wzr, [x2,96] - str x0, [x2,104] + adrp x0, .LANCHOR1 + add x1, x0, :lo12:.LANCHOR1 + ldr w4, [x21, 2116] + add x1, x1, 472 + strb wzr, [x2, 96] + str x1, [x2, 104] mov w2, 12336 movk w2, 0x5638, lsl 16 cmp w4, w2 - bne .L886 - ldrb w0, [x0,19] - cmp w0, 50 - beq .L886 - mov w0, 1 - str w0, [x22,2100] -.L886: - add x3, x21, :lo12:IDByte - ldrb w0, [x3,1] - cmp w0, 218 - cset w6, eq - cmp w0, 241 - cset w5, eq - cmp w0, 161 - cset w2, eq - orr w2, w5, w2 - orr w2, w6, w2 - cbnz w2, .L887 - and w2, w0, -3 - cmp w2, 209 - beq .L887 - cmp w0, 220 - bne .L888 - ldrb w2, [x3,3] - cmp w2, 149 - bne .L888 -.L887: - add x2, x20, :lo12:.LANCHOR0 + bne .L901 + ldrb w1, [x1, 19] + cmp w1, 50 + beq .L901 + mov w1, 1 + str w1, [x21, 2100] +.L901: + add x1, x22, :lo12:IDByte + ldrb w2, [x1, 1] + add w1, w2, 95 + and w3, w1, 255 + mov x1, 1 + cmp w3, 57 + bhi .L902 + movk x1, 0x205, lsl 48 + lsr x1, x1, x3 + mvn x1, x1 +.L902: + and w1, w1, 1 + cmp w2, 241 + eor w1, w1, 1 + cset w3, eq + orr w1, w3, w1 + cbnz w1, .L903 + cmp w2, 220 + bne .L904 + add x1, x22, :lo12:IDByte + ldrb w1, [x1, 3] + cmp w1, 149 + bne .L904 +.L903: + add x1, x20, :lo12:.LANCHOR0 add x3, x19, :lo12:.LANCHOR2 - mov w7, 16 + mov w6, 16 mov w5, 1 - add x8, x21, :lo12:IDByte - strb w7, [x2,89] - strb w5, [x2,88] - add x2, x1, :lo12:.LANCHOR1 - strb w7, [x3,2213] - ldrb w7, [x21,#:lo12:IDByte] - strb w7, [x2,3417] - strb w0, [x2,3418] - cmp w7, 152 - bne .L890 - ldrsb w2, [x8,4] - tbnz w2, #31, .L891 - mov w2, 24 - strb w2, [x3,2213] -.L890: + add x7, x22, :lo12:IDByte + strb w6, [x1, 89] + strb w5, [x1, 88] + add x1, x0, :lo12:.LANCHOR1 + strb w6, [x3, 2213] + ldrb w6, [x22, #:lo12:IDByte] + strb w6, [x1, 3417] + strb w2, [x1, 3418] + cmp w6, 152 + bne .L906 + ldrsb w1, [x7, 4] + tbnz w1, #31, .L907 + mov w1, 24 + strb w1, [x3, 2213] +.L906: cmp w4, 2049 - beq .L939 - mov w2, 12336 - movk w2, 0x5638, lsl 16 - cmp w4, w2 - bne .L893 -.L939: - add x2, x19, :lo12:.LANCHOR2 + mov w1, 12336 + movk w1, 0x5638, lsl 16 + ccmp w4, w1, 4, ne + bne .L909 + add x1, x19, :lo12:.LANCHOR2 mov w3, 16 - strb w3, [x2,2213] -.L893: - cbz w6, .L895 - add x0, x1, :lo12:.LANCHOR1 + strb w3, [x1, 2213] +.L909: + cmp w2, 218 + bne .L910 + add x1, x0, :lo12:.LANCHOR1 mov w2, 2048 - strh w2, [x0,3430] + strh w2, [x1, 3430] mov w2, -38 - b .L984 -.L895: - cmp w0, 220 - bne .L897 - add x0, x1, :lo12:.LANCHOR1 - mov w2, 4096 - strh w2, [x0,3430] - mov w2, -36 -.L984: - strb w2, [x0,3418] - b .L896 -.L897: - cmp w0, 211 - bne .L896 - add x0, x1, :lo12:.LANCHOR1 - mov w2, 4096 - strh w2, [x0,3430] - mov w2, 2 - strb w2, [x0,3429] -.L896: - add x22, x1, :lo12:.LANCHOR1 +.L993: + strb w2, [x1, 3418] +.L911: + add x21, x0, :lo12:.LANCHOR1 add x0, x20, :lo12:.LANCHOR0 - add x1, x22, 3288 mov w2, 32 + add x1, x21, 3288 add x0, x0, 112 bl ftl_memcpy - add x0, x22, 472 - add x1, x22, 3416 mov w2, 32 + add x1, x21, 3416 + add x0, x21, 472 bl ftl_memcpy -.L888: - add x22, x20, :lo12:.LANCHOR0 - ldrb w0, [x22,88] - cbnz w0, .L898 +.L904: + add x21, x20, :lo12:.LANCHOR0 + ldrb w0, [x21, 88] + cbnz w0, .L914 bl FlashLoadPhyInfoInRam - cbnz w0, .L900 - ldr x0, [x22,104] - add x22, x19, :lo12:.LANCHOR2 - ldrb w1, [x0,17] + cbnz w0, .L916 + ldr x0, [x21, 104] + add x21, x19, :lo12:.LANCHOR2 + ldrb w1, [x0, 17] and w0, w1, 7 - strb w0, [x22,2093] - tbnz x1, 0, .L900 + strb w0, [x21, 2093] + tbnz x1, 0, .L916 mov w1, 1 - strb w1, [x22,2104] + strb w1, [x21, 2104] bl FlashSetInterfaceMode - ldrb w0, [x22,2093] + ldrb w0, [x21, 2093] bl NandcSetMode -.L900: +.L916: add x0, x20, :lo12:.LANCHOR0 - add x22, x19, :lo12:.LANCHOR2 - ldr x0, [x0,104] - ldrb w0, [x0,26] - strb w0, [x22,1220] + add x21, x19, :lo12:.LANCHOR2 + ldr x0, [x0, 104] + ldrb w0, [x0, 26] + strb w0, [x21, 1220] bl FlashLoadPhyInfo - cbz w0, .L898 - ldr w0, [x22,2108] - cbz w0, .L903 + cbz w0, .L914 + ldr w0, [x21, 2108] + cbz w0, .L919 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 - b .L980 -.L903: - ldrb w0, [x22,2093] - bl FlashSetInterfaceMode - ldrb w0, [x22,2093] -.L980: +.L988: bl NandcSetMode bl FlashLoadPhyInfo - cbz w0, .L898 + cbz w0, .L914 + add x21, x20, :lo12:.LANCHOR0 mov w0, 1 - add x22, x20, :lo12:.LANCHOR0 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode - ldr x1, [x22,104] + ldr x0, [x21, 104] + ldrh w1, [x0, 14] adrp x0, .LC15 add x0, x0, :lo12:.LC15 - ldrh w1, [x1,14] bl printk bl FlashLoadPhyInfoInRam cmn w0, #1 - beq .L954 + beq .L893 bl FlashDieInfoInit - ldr x0, [x22,104] - ldrb w0, [x0,19] + ldr x0, [x21, 104] + ldrb w0, [x0, 19] bl FlashGetReadRetryDefault - ldr x0, [x22,104] - ldrh w1, [x22,3452] - ldrb w2, [x0,9] + ldr x0, [x21, 104] + ldrh w1, [x21, 3452] add w1, w1, 4095 + ldrb w2, [x0, 9] cmp w2, w1, lsr 12 - blt .L905 - ldrh w1, [x0,14] + blt .L921 + ldrh w1, [x0, 14] add w1, w1, 255 cmp w2, w1, lsr 8 - bge .L906 -.L905: - ldrh w1, [x0,14] + bge .L922 +.L921: + ldrh w1, [x0, 14] and w1, w1, -256 - strh w1, [x0,14] -.L906: - add x22, x19, :lo12:.LANCHOR2 - ldrb w0, [x22,2093] + strh w1, [x0, 14] +.L922: + add x21, x19, :lo12:.LANCHOR2 + ldrb w0, [x21, 2093] tst w0, 6 - beq .L907 + beq .L923 bl FlashSavePhyInfo mov w0, 0 bl flash_enter_slc_mode - ldr w1, [x22,2208] + ldr w1, [x21, 2208] mov w0, 0 bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode -.L907: +.L923: bl FlashSavePhyInfo -.L898: +.L914: add x23, x20, :lo12:.LANCHOR0 - add x22, x19, :lo12:.LANCHOR2 - ldr x2, [x23,104] - str xzr, [x22,2192] - ldrb w0, [x2,26] - strb w0, [x22,1220] - ldrh w0, [x2,16] - ldrh w3, [x2,10] + add x21, x19, :lo12:.LANCHOR2 + ldr x2, [x23, 104] + str xzr, [x21, 2192] + ldrb w0, [x2, 26] + strb w0, [x21, 1220] + ldrh w0, [x2, 16] ubfx x1, x0, 7, 1 - strb w1, [x23,96] + strb w1, [x23, 96] ubfx x1, x0, 3, 1 - strb w1, [x22,2249] + strb w1, [x21, 2249] ubfx x1, x0, 4, 1 - strb w1, [x22,2094] - ldrb w1, [x2,12] ubfx x0, x0, 8, 3 - strb w0, [x22,2093] - ldrb w0, [x2,18] - sdiv w1, w3, w1 + strb w1, [x21, 2094] + strb w0, [x21, 2093] + ldrh w1, [x2, 10] + ldrb w0, [x2, 12] + sdiv w1, w1, w0 + ldrb w0, [x2, 18] bl BuildFlashLsbPageTable bl FlashDieInfoInit - ldr x0, [x23,104] - ldrh w1, [x0,16] - tbz x1, 6, .L909 + ldr x0, [x23, 104] + ldrh w1, [x0, 16] + tbz x1, 6, .L925 adrp x1, g_retryMode - ldrb w0, [x0,19] - ldrb w2, [x22,1233] - ldrb w3, [x22,1234] - strb w0, [x1,#:lo12:g_retryMode] - adrp x1, g_maxRegNum - strb w2, [x1,#:lo12:g_maxRegNum] - adrp x2, g_maxRetryCount - strb w3, [x2,#:lo12:g_maxRetryCount] + ldrb w0, [x0, 19] + adrp x2, g_maxRegNum + ldrb w3, [x21, 1234] + strb w0, [x1, #:lo12:g_retryMode] + mov x4, x2 + ldrb w1, [x21, 1233] + strb w1, [x2, #:lo12:g_maxRegNum] + adrp x1, g_maxRetryCount + strb w3, [x1, #:lo12:g_maxRetryCount] sub w3, w0, #1 - uxtb w3, w3 + and w3, w3, 255 cmp w3, 7 - mov x3, x2 - bhi .L910 + bhi .L926 adrp x1, HynixReadRetrial - cmp w0, 8 add x1, x1, :lo12:HynixReadRetrial - str x1, [x22,2192] + str x1, [x21, 2192] sub w1, w0, #5 - cset w2, eq - uxtb w1, w1 + and w1, w1, 255 cmp w1, 1 - bls .L940 - cbz w2, .L911 -.L940: + ccmp w0, 8, 4, hi + bne .L927 + mov w1, 1 + str w1, [x21, 2176] +.L927: add x1, x19, :lo12:.LANCHOR2 - mov w3, 1 - str w3, [x1,2176] -.L911: cmp w0, 7 - add x1, x19, :lo12:.LANCHOR2 - beq .L938 - cbnz w2, .L938 - add x1, x1, 1252 - b .L914 -.L938: + beq .L989 + cmp w0, 8 + bne .L950 +.L989: add x1, x1, 1260 -.L914: +.L928: mov x2, 0 - mov w3, w2 -.L916: - ldrsb w4, [x1,x2] + mov w3, 0 +.L930: + ldrsb w4, [x1, x2] add x2, x2, 1 - cmp w4, wzr - csinc w3, w3, w3, ne + cmp w4, 0 + cinc w3, w3, eq cmp x2, 32 - bne .L916 + bne .L930 cmp w3, 27 - bls .L909 + bls .L925 bl FlashGetReadRetryDefault bl FlashSavePhyInfo - b .L909 -.L910: - sub w4, w0, #17 - uxtb w4, w4 - cmp w4, 2 - bhi .L918 - adrp x1, MicronReadRetrial - cmp w0, 19 - add x1, x1, :lo12:MicronReadRetrial - str x1, [x22,2192] - beq .L919 - mov w0, 7 - b .L982 -.L919: - mov w0, 15 -.L982: - strb w0, [x2,#:lo12:g_maxRetryCount] - b .L909 -.L918: - sub w2, w0, #65 - uxtb w2, w2 - cmp w2, 1 - bls .L941 - cmp w0, 33 - bne .L920 -.L941: +.L925: add x0, x19, :lo12:.LANCHOR2 - adrp x2, ToshibaReadRetrial - add x2, x2, :lo12:ToshibaReadRetrial - str x2, [x0,2192] - mov w0, 4 - strb w0, [x1,#:lo12:g_maxRegNum] - mov w0, 7 - strb w0, [x3,#:lo12:g_maxRetryCount] - b .L909 -.L920: - sub w2, w0, #67 - sub w4, w0, #34 - uxtb w2, w2 - uxtb w4, w4 - cmp w2, 1 - cset w2, ls - cmp w4, 1 - bls .L942 - cbz w2, .L922 -.L942: - add x4, x19, :lo12:.LANCHOR2 - adrp x5, ToshibaReadRetrial - add x5, x5, :lo12:ToshibaReadRetrial - cmp w0, 35 - str x5, [x4,2192] - beq .L924 - cmp w0, 68 - beq .L924 - mov w0, 7 - b .L981 -.L924: - mov w0, 17 -.L981: - strb w0, [x3,#:lo12:g_maxRetryCount] - mov w0, 4 - cbnz w2, .L983 - mov w0, 5 -.L983: - strb w0, [x1,#:lo12:g_maxRegNum] - b .L909 -.L922: - cmp w0, 49 - bne .L927 - adrp x0, SamsungReadRetrial - add x0, x0, :lo12:SamsungReadRetrial - str x0, [x22,2192] - b .L909 -.L927: - cmp w0, 50 - bne .L909 - adrp x0, samsung_read_retrial - str w2, [x22,2100] - add x0, x0, :lo12:samsung_read_retrial - str x0, [x22,2192] -.L909: - add x0, x19, :lo12:.LANCHOR2 - mov w1, 12336 - movk w1, 0x5638, lsl 16 - ldr w2, [x0,2116] - cmp w2, w1 - bne .L928 - ldrb w0, [x0,1220] - cbz w0, .L928 + mov w2, 12336 + movk w2, 0x5638, lsl 16 + ldr w1, [x0, 2116] + cmp w1, w2 + bne .L940 + ldrb w0, [x0, 1220] + cbz w0, .L940 add x0, x20, :lo12:.LANCHOR0 - ldr x0, [x0,104] - strb wzr, [x0,18] -.L928: - ldrb w0, [x21,#:lo12:IDByte] + ldr x0, [x0, 104] + strb wzr, [x0, 18] +.L940: + ldrb w0, [x22, #:lo12:IDByte] cmp w0, 44 - bne .L929 + bne .L941 add x0, x19, :lo12:.LANCHOR2 - ldrb w1, [x0,2104] - cbz w1, .L929 - mov w1, 12336 - movk w1, 0x5638, lsl 16 - cmp w2, w1 - bne .L930 - ldrb w0, [x0,1220] - cbnz w0, .L929 -.L930: + ldrb w2, [x0, 2104] + cbz w2, .L941 + mov w2, 12336 + movk w2, 0x5638, lsl 16 + cmp w1, w2 + bne .L942 + ldrb w0, [x0, 1220] + cbnz w0, .L941 +.L942: add x0, x19, :lo12:.LANCHOR2 - strb wzr, [x0,2104] + strb wzr, [x0, 2104] mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode -.L929: +.L941: add x1, x19, :lo12:.LANCHOR2 - ldrb w0, [x1,2093] + ldrb w0, [x1, 2093] tst w0, 6 - beq .L931 - ldrb w1, [x1,2104] - cbnz w1, .L932 - tbnz x0, 0, .L931 -.L932: + beq .L943 + ldrb w1, [x1, 2104] + cbnz w1, .L944 + tbnz x0, 0, .L943 +.L944: mov w0, 0 bl flash_enter_slc_mode - add x1, x19, :lo12:.LANCHOR2 + add x0, x19, :lo12:.LANCHOR2 + ldr w1, [x0, 2208] mov w0, 0 - ldr w1, [x1,2208] bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode -.L931: +.L943: add x20, x20, :lo12:.LANCHOR0 - mov w22, 16 + mov w21, 16 add x19, x19, :lo12:.LANCHOR2 - ldr x0, [x20,104] - ldrb w0, [x0,20] + ldr x0, [x20, 104] + ldrb w0, [x0, 20] bl FlashBchSel add x0, x20, 3456 bl FlashReadIdbDataRaw - strb w22, [x20,89] mov w0, 18928 + strb w21, [x20, 89] movk w0, 0x2, lsl 16 bl FlashTimingCfg - ldr x1, [x20,104] - add x4, x21, :lo12:IDByte - ldrb w2, [x1,12] - strh w2, [x19,1200] - ldrb w2, [x1,7] - str w2, [x19,1196] - ldrb w2, [x4,1] - lsl w3, w2, w22 - orr w2, w3, w2, lsl 8 - ldrb w3, [x21,#:lo12:IDByte] + ldr x1, [x20, 104] + ldrb w4, [x22, #:lo12:IDByte] + ldrb w2, [x1, 12] + strh w2, [x19, 1200] + ldrb w2, [x1, 7] + str w2, [x19, 1196] + add x2, x22, :lo12:IDByte + ldrb w3, [x2, 1] + ldrb w2, [x2, 3] + orr w2, w4, w2, lsl 24 + lsl w4, w3, w21 + orr w3, w4, w3, lsl 8 + ldrh w4, [x1, 14] orr w2, w2, w3 - ldrb w3, [x4,3] - ldrh w4, [x1,14] - orr w2, w2, w3, lsl 24 - str w2, [x19,1192] - ldrb w2, [x20,3216] - strh w2, [x19,1202] - ldrb w2, [x1,13] - strh w2, [x19,1204] - strh w4, [x19,1206] - ldrh w2, [x1,10] - strh w2, [x19,1208] - ldrb w3, [x1,12] - ldrh w2, [x1,10] + str w2, [x19, 1192] + ldrb w2, [x20, 3216] + strh w2, [x19, 1202] + ldrb w2, [x1, 13] + strh w2, [x19, 1204] + strh w4, [x19, 1206] + ldrh w2, [x1, 10] + strh w2, [x19, 1208] + ldrb w3, [x1, 12] + ldrh w2, [x1, 10] sdiv w2, w2, w3 - strh w2, [x19,1210] - ldrb w3, [x1,9] - strh w3, [x19,1212] - ldrh w5, [x1,10] - ldrb w2, [x1,9] + strh w2, [x19, 1210] + ldrb w3, [x1, 9] + strh w3, [x19, 1212] + ldrh w5, [x1, 10] + ldrb w2, [x1, 9] mul w2, w2, w5 mov w5, 512 - strh w5, [x19,1216] - ldrb w5, [x20,89] - strh w5, [x19,1218] - uxth w2, w2 - ldrb w5, [x20,88] - strh w2, [x19,1214] + strh w5, [x19, 1216] + ldrb w5, [x20, 89] + and w2, w2, 65535 + strh w5, [x19, 1218] + strh w2, [x19, 1214] + ldrb w5, [x20, 88] cmp w5, 1 - bne .L934 - lsl w2, w2, 1 + bne .L945 + ubfiz w2, w2, 1, 15 lsr w4, w4, 1 - lsl w3, w3, 1 - strh w2, [x19,1214] - strb w22, [x20,89] + ubfiz w3, w3, 1, 15 + strh w2, [x19, 1214] + strb w21, [x20, 89] mov w2, 8 - strh w4, [x19,1206] - strh w3, [x19,1212] - strh w2, [x19,1218] -.L934: - ldrb w0, [x1,20] + strh w4, [x19, 1206] + strh w3, [x19, 1212] + strh w2, [x19, 1218] +.L945: + ldrb w0, [x1, 20] bl FlashBchSel bl ftl_flash_suspend mov w0, 0 - b .L954 -.L936: - mov w0, -2 - b .L954 -.L891: - strb w5, [x3,2248] - b .L890 -.L954: - 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] +.L893: + 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 +.L910: + cmp w2, 220 + bne .L912 + add x1, x0, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x1, 3430] + mov w2, -36 + b .L993 +.L912: + cmp w2, 211 + bne .L911 + add x1, x0, :lo12:.LANCHOR1 + mov w2, 4096 + strh w2, [x1, 3430] + mov w2, 2 + strb w2, [x1, 3429] + b .L911 +.L919: + ldrb w0, [x21, 2093] + bl FlashSetInterfaceMode + ldrb w0, [x21, 2093] + b .L988 +.L950: + add x1, x1, 1252 + b .L928 +.L926: + sub w3, w0, #17 + and w3, w3, 255 + cmp w3, 2 + bhi .L932 + adrp x2, MicronReadRetrial + add x2, x2, :lo12:MicronReadRetrial + str x2, [x21, 2192] + cmp w0, 19 + beq .L933 +.L994: + mov w0, 7 + b .L991 +.L933: + mov w0, 15 +.L991: + strb w0, [x1, #:lo12:g_maxRetryCount] + b .L925 +.L932: + sub w3, w0, #65 + cmp w0, 33 + and w3, w3, 255 + ccmp w3, 1, 0, ne + bhi .L934 + adrp x0, ToshibaReadRetrial + add x0, x0, :lo12:ToshibaReadRetrial + str x0, [x21, 2192] + mov w0, 4 + strb w0, [x2, #:lo12:g_maxRegNum] + b .L994 +.L934: + sub w3, w0, #34 + sub w2, w0, #67 + and w3, w3, 255 + and w2, w2, 255 + cmp w3, 1 + ccmp w2, 1, 0, hi + bhi .L935 + adrp x3, ToshibaReadRetrial + add x3, x3, :lo12:ToshibaReadRetrial + str x3, [x21, 2192] + cmp w0, 35 + mov w3, 68 + ccmp w0, w3, 4, ne + beq .L936 + mov w0, 7 +.L990: + strb w0, [x1, #:lo12:g_maxRetryCount] + cmp w2, 1 + bhi .L938 + mov w0, 4 +.L992: + strb w0, [x4, #:lo12:g_maxRegNum] + b .L925 +.L936: + mov w0, 17 + b .L990 +.L938: + mov w0, 5 + b .L992 +.L935: + cmp w0, 49 + bne .L939 + adrp x0, SamsungReadRetrial + add x0, x0, :lo12:SamsungReadRetrial + str x0, [x21, 2192] + b .L925 +.L939: + cmp w0, 50 + bne .L925 + adrp x0, samsung_read_retrial + str wzr, [x21, 2100] + add x0, x0, :lo12:samsung_read_retrial + str x0, [x21, 2192] + b .L925 +.L947: + mov w0, -2 + b .L893 +.L907: + strb w5, [x3, 2248] + b .L906 .size FlashInit, .-FlashInit .align 2 .global FlashPageProgMsbFFData @@ -6411,69 +6310,65 @@ FlashInit: FlashPageProgMsbFFData: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w2 + stp x21, x22, [sp, 32] + and w22, w0, 255 + adrp x21, .LANCHOR2 + add x0, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + and w19, w2, 65535 + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldrb w2, [x0, 1220] + cbz w2, .L996 + ldr w0, [x0, 2100] + cbnz w0, .L995 +.L996: adrp x20, .LANCHOR0 - adrp x2, .LANCHOR2 - str x25, [sp,64] - stp x21, x22, [sp,32] - add x3, x2, :lo12:.LANCHOR2 - uxtb w22, w0 - add x0, x20, :lo12:.LANCHOR0 - mov x21, x2 - stp x23, x24, [sp,48] - ldr x0, [x0,104] - ldrb w4, [x3,1220] - ldrb w0, [x0,19] - cbz w4, .L986 - ldr w2, [x3,2100] - cbnz w2, .L985 -.L986: - sub w2, w0, #5 - uxtb w2, w2 - cmp w2, 2 - bls .L987 - cmp w0, 50 - beq .L987 - sub w2, w0, #19 - and w2, w2, -17 - uxtb w2, w2 - cbz w2, .L987 - cmp w0, 68 - bne .L985 -.L987: - mov w23, w1 add x20, x20, :lo12:.LANCHOR0 + ldr x0, [x20, 104] + ldrb w0, [x0, 19] + sub w0, w0, #5 + and w3, w0, 255 + cmp w3, 63 + bhi .L995 + mov x2, 16391 + movk x2, 0x4000, lsl 16 + movk x2, 0x2000, lsl 32 + movk x2, 0x8000, lsl 48 + lsr x0, x2, x3 + tbz x0, 0, .L995 + mov w23, w1 + add x24, x20, 1168 + add x21, x21, :lo12:.LANCHOR2 mov w25, 65535 -.L990: - ldr x0, [x20,104] - ldrh w0, [x0,10] +.L998: + ldr x0, [x20, 104] + ldrh w0, [x0, 10] cmp w0, w19 - bls .L985 - add x0, x20, 1168 - ldrh w0, [x0,w19,sxtw 1] - cmp w0, w25 - bne .L985 - add x24, x21, :lo12:.LANCHOR2 - mov w1, 255 - mov w2, 32768 - ldr x0, [x24,2216] - bl ftl_memset - ldr x2, [x24,2216] - add w1, w19, w23 - mov w0, w22 - add w19, w19, 1 - mov x3, x2 - uxth w19, w19 - bl FlashProgPage - b .L990 -.L985: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] + bhi .L999 +.L995: + 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 +.L999: + ldrh w0, [x24, w19, sxtw 1] + cmp w0, w25 + bne .L995 + ldr x0, [x21, 2216] + mov w2, 32768 + mov w1, 255 + bl ftl_memset + ldr x3, [x21, 2216] + add w1, w19, w23 + add w19, w19, 1 + mov w0, w22 + and w19, w19, 65535 + mov x2, x3 + bl FlashProgPage + b .L998 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .align 2 .global FlashReadSlc2KPages @@ -6481,715 +6376,686 @@ FlashPageProgMsbFFData: FlashReadSlc2KPages: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x23, x24, [sp,48] - mov w24, w1 - adrp x23, .LANCHOR0 - adrp x1, .LANCHOR1+481 - str w2, [x29,116] - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x19, x0 - add x0, x23, :lo12:.LANCHOR0 - str x0, [x29,120] - add x0, x0, 3220 - stp x25, x26, [sp,64] - str x0, [x29,104] - adrp x0, .LC16 - ldrb w25, [x1,#:lo12:.LANCHOR1+481] - add x0, x0, :lo12:.LC16 - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - mov w22, 0 - str x0, [x29,96] -.L1002: - cmp w22, w24 - beq .L1066 - ldr w1, [x29,116] - sub w4, w24, w22 - mov x0, x19 - add x2, x29, 140 + mov w0, 56 + stp x21, x22, [sp, 32] + str w2, [x29, 120] + adrp x2, .LANCHOR1+481 + umaddl x0, w1, w0, x19 + stp x25, x26, [sp, 64] + str x0, [x29, 112] + and w22, w1, 255 + adrp x0, .LANCHOR0 + ldrb w2, [x2, #:lo12:.LANCHOR1+481] + add x26, x0, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + add x0, x26, 3072 + stp x27, x28, [sp, 80] + str x0, [x29, 96] + str w2, [x29, 124] +.L1005: + ldr x0, [x29, 112] + cmp x19, x0 + bne .L1025 + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 144 + ret +.L1025: + ldr w1, [x29, 120] + mov w4, w22 add x3, x29, 136 + add x2, x29, 140 + mov x0, x19 bl LogAddr2PhyAddr - ldr x1, [x29,120] - ldr w0, [x29,136] - ldrb w1, [x1,3216] - cmp w0, w1 - bcc .L1003 + ldrb w1, [x26, 3216] + ldr w0, [x29, 136] + cmp w1, w0 + bhi .L1006 mov w0, -1 str w0, [x19] - b .L1004 -.L1003: - ldr x1, [x29,104] - mov w23, 0 - adrp x27, .LANCHOR2 +.L1007: + sub w22, w22, #1 + add x19, x19, 56 + and w22, w22, 255 + b .L1005 +.L1006: + ldr x1, [x29, 96] + adrp x21, .LANCHOR2 + mov w25, 0 + add x23, x21, :lo12:.LANCHOR2 mov w28, 256 - ldrb w20, [x1,w0,uxtw] + add x0, x1, w0, uxtw + ldrb w20, [x0, 148] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 bl NandcFlashCs -.L1005: - ldr w1, [x29,140] +.L1008: + ldr w1, [x29, 140] mov w0, w20 - adrp x21, .LANCHOR2 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady - ldr x3, [x19,8] - mov w0, w20 - ldr x4, [x19,16] + ldrb w2, [x29, 124] mov w1, 0 - mov w2, w25 + ldp x3, x4, [x19, 8] + mov w0, w20 bl NandcXferData - mov w26, w0 - add x0, x27, :lo12:.LANCHOR2 - ldrb w0, [x0,2248] - cbz w0, .L1006 + mov w24, w0 + ldrb w0, [x23, 2248] + cbz w0, .L1009 mov w0, w20 bl flash_read_ecc cmp w0, 5 - csel w26, w26, w28, ls -.L1006: - cmn w26, #1 - bne .L1007 - cmp w23, 9 - bhi .L1007 - add w23, w23, 1 - b .L1005 -.L1007: - cmp w23, wzr - mov w27, 256 - csel w26, w26, w27, eq - mov w23, 0 + csel w24, w24, w28, ls .L1009: + cmp w25, 9 + ccmn w24, #1, 0, ls + bne .L1010 + add w25, w25, 1 + b .L1008 +.L1010: + cmp w25, 0 adrp x0, .LANCHOR0 - ldr w1, [x29,140] - add x0, x0, :lo12:.LANCHOR0 - ldr w2, [x0,92] + mov w23, 256 + csel w24, w24, w23, eq + add x28, x0, :lo12:.LANCHOR0 + mov w25, 0 + add x0, x21, :lo12:.LANCHOR2 + str x0, [x29, 104] +.L1012: + ldr w0, [x28, 92] + ldr w1, [x29, 140] + add w1, w1, w0 mov w0, w20 - add w1, w2, w1 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady - ldr x0, [x19,8] + ldr x0, [x19, 8] mov w1, 0 - mov w2, w25 - cmp x0, xzr + ldrb w2, [x29, 124] + cmp x0, 0 add x3, x0, 2048 - ldr x0, [x19,16] + ldr x0, [x19, 16] csel x3, x3, xzr, ne + cmp x0, 0 add x4, x0, 8 - cmp x0, xzr csel x4, x4, xzr, ne mov w0, w20 bl NandcXferData - mov w28, w0 - add x0, x21, :lo12:.LANCHOR2 - ldrb w0, [x0,2248] - cbz w0, .L1012 + mov w27, w0 + ldr x0, [x29, 104] + ldrb w0, [x0, 2248] + cbz w0, .L1015 mov w0, w20 bl flash_read_ecc cmp w0, 5 - csel w28, w28, w27, ls -.L1012: - cmn w28, #1 - bne .L1013 - cmp w23, 9 - bhi .L1013 - add w23, w23, 1 - b .L1009 -.L1013: - cmp w23, wzr + csel w27, w27, w23, ls +.L1015: + cmp w25, 9 + ccmn w27, #1, 0, ls + bne .L1016 + add w25, w25, 1 + b .L1012 +.L1016: + cmp w25, 0 + mov w2, 256 mov w0, w20 - mov w27, 256 - csel w28, w28, w27, eq + csel w27, w27, w2, eq bl NandcFlashDeCs add x0, x21, :lo12:.LANCHOR2 - cmp w28, w26 - csel w28, w28, w26, cs - ldrb w0, [x0,1221] + cmp w24, w27 + csel w5, w24, w27, cs + ldrb w0, [x0, 1221] add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bls .L1015 - cmn w28, #1 - csel w28, w28, w27, eq -.L1015: - cmp w28, 256 - beq .L1026 - cmn w28, #1 - bne .L1016 -.L1026: - str w28, [x19] - b .L1018 -.L1016: - str wzr, [x19] + cmp w5, w0, lsr 2 + bls .L1018 + cmn w5, #1 + csel w5, w5, w2, eq .L1018: - ldr x0, [x19,16] - cbz x0, .L1019 - ldr w1, [x0,12] + cmp w5, 256 + ldr x0, [x19, 16] + ccmn w5, #1, 4, ne + csel w5, w5, wzr, eq + str w5, [x19] + cbz x0, .L1021 + ldr w1, [x0, 12] cmn w1, #1 - bne .L1019 - ldr w1, [x0,8] + bne .L1021 + ldr w1, [x0, 8] cmn w1, #1 - bne .L1019 + bne .L1021 ldr w0, [x0] cmn w0, #1 - beq .L1019 + beq .L1021 str w1, [x19] -.L1019: +.L1021: ldr w3, [x19] cmn w3, #1 - bne .L1004 + bne .L1007 add x21, x21, :lo12:.LANCHOR2 - ldr w1, [x19,4] - ldr x0, [x29,96] - ldrb w2, [x21,1221] + ldr w1, [x19, 4] + adrp x0, .LC16 + add x0, x0, :lo12:.LC16 + ldrb w2, [x21, 1221] bl printk - ldr x1, [x19,8] - cbz x1, .L1021 + ldr x1, [x19, 8] + cbz x1, .L1023 adrp x0, .LC17 + mov w3, 8 mov w2, 4 add x0, x0, :lo12:.LC17 - mov w3, 8 bl rknand_print_hex -.L1021: - ldr x1, [x19,16] - cbz x1, .L1004 +.L1023: + ldr x1, [x19, 16] + cbz x1, .L1007 + mov w3, 4 adrp x0, .LC18 - mov w2, 4 + mov w2, w3 add x0, x0, :lo12:.LC18 - mov w3, w2 bl rknand_print_hex -.L1004: - add w22, w22, 1 - add x19, x19, 56 - b .L1002 -.L1066: - 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], 144 - ret + b .L1007 .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .align 2 .global FlashReadPages .type FlashReadPages, %function FlashReadPages: stp x29, x30, [sp, -160]! - adrp x3, .LANCHOR1+481 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - ldrb w3, [x3,#:lo12:.LANCHOR1+481] - add x23, x23, :lo12:.LANCHOR0 - str w3, [x29,136] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - ldrb w3, [x23,96] + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR0 + add x3, x25, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + stp w2, w1, [x29, 120] + ldrb w4, [x3, 88] + cbnz w4, .L1054 mov x26, x0 - ldrb w24, [x23,88] - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - str w1, [x29,132] - str w2, [x29,128] - str w3, [x29,116] - cbz w24, .L1107 - bl FlashReadSlc2KPages - b .L1156 -.L1107: - add x0, x23, 3220 - str x0, [x29,104] + adrp x0, .LANCHOR1+481 + mov w24, 0 + mov w23, 0 + ldrb w0, [x0, #:lo12:.LANCHOR1+481] + str w0, [x29, 136] + ldrb w0, [x3, 96] + str w0, [x29, 108] adrp x0, .LANCHOR2 - mov w25, w24 - add x21, x0, :lo12:.LANCHOR2 - add x0, x21, 1236 - str x0, [x29,120] -.L1068: - ldr w0, [x29,132] - cmp w25, w0 - bcs .L1158 + add x20, x0, :lo12:.LANCHOR2 + add x0, x20, 1236 + str x0, [x29, 112] +.L1055: + ldr w0, [x29, 124] + cmp w23, w0 + bcc .L1089 + mov w0, 0 + b .L1053 +.L1054: + bl FlashReadSlc2KPages +.L1053: + 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 + ret +.L1089: mov w27, 56 - ldr w0, [x29,132] - ldr w1, [x29,128] + ldr w1, [x29, 120] add x2, x29, 156 - umull x27, w25, w27 - sub w4, w0, w25 add x3, x29, 152 - add x22, x26, x27 + umull x0, w23, w27 + add x27, x25, :lo12:.LANCHOR0 + str x0, [x29, 128] + add x22, x26, x0 + ldr w0, [x29, 124] + sub w4, w0, w23 mov x0, x22 - ldr w28, [x22,4] + ldr w28, [x22, 4] bl LogAddr2PhyAddr - ldrb w1, [x23,3216] - mov w20, w0 - ldr w0, [x29,152] - cmp w0, w1 - bcc .L1070 + ldrb w2, [x27, 3216] + mov w21, w0 + ldr w0, [x29, 152] + cmp w2, w0 + bhi .L1057 + ldr x1, [x29, 128] mov w0, -1 - str w0, [x26,x27] - b .L1071 -.L1070: - ldr x1, [x29,104] - ldrb w19, [x1,w0,uxtw] + str w0, [x26, x1] +.L1058: + add w23, w23, 1 + b .L1055 +.L1057: + add x0, x27, w0, uxtw + ldrb w19, [x0, 3220] adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - ldrb w0, [x0,2249] - cmp w0, wzr + ldrb w0, [x0, 2249] + cmp w0, 0 mov w0, w19 - csel w20, w20, wzr, ne + csel w21, w21, wzr, ne bl NandcWaitFlashReady - ldr x0, [x23,104] - ldrb w1, [x0,19] + ldr x0, [x27, 104] + ldrb w1, [x0, 19] sub w0, w1, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 7 - bhi .L1073 - sub w1, w1, #7 - add x0, x21, 1232 + bhi .L1060 + add x0, x20, 1232 sxtw x2, w19 add x0, x0, x2 - uxtb w1, w1 + sub w1, w1, #7 + and w1, w1, 255 cmp w1, 1 - ldrb w3, [x0,12] - bhi .L1074 - ldrb w3, [x0,20] -.L1074: - add x2, x21, x2 - ldrb w0, [x2,2088] + ldrb w3, [x0, 12] + bhi .L1061 + ldrb w3, [x0, 20] +.L1061: + add x2, x20, x2 + ldrb w0, [x2, 2088] cmp w0, w3 - beq .L1073 - ldrb w1, [x21,1233] + beq .L1060 + ldrb w1, [x20, 1233] mov w0, w19 - ldr x2, [x29,120] + ldr x2, [x29, 112] bl HynixSetRRPara -.L1073: +.L1060: mov w0, w19 bl NandcFlashCs - ldr w0, [x29,128] + ldr w0, [x29, 120] cmp w0, 1 cset w0, eq orr w0, w0, w28, lsr 31 - str w0, [x29,140] - cbz w0, .L1075 - ldrb w0, [x21,1220] - cbz w0, .L1075 + str w0, [x29, 140] + cbz w0, .L1062 + ldrb w0, [x20, 1220] + cbz w0, .L1062 mov w0, w19 bl flash_enter_slc_mode - b .L1076 -.L1075: - mov w0, w19 - bl flash_exit_slc_mode -.L1076: - cmp w19, 255 - ldr w1, [x29,156] - bne .L1114 +.L1063: + add x28, x25, :lo12:.LANCHOR0 +.L1069: + ldr w1, [x29, 156] cmn w1, #1 - cset w0, ne - cbz w0, .L1108 -.L1114: - cbz w20, .L1080 - ldr w2, [x23,92] + bne .L1064 + cmp w19, 255 + beq .L1091 +.L1064: + cbz w21, .L1066 + ldr w2, [x28, 92] mov w0, w19 add w2, w1, w2 bl FlashReadDpCmd - b .L1081 -.L1080: +.L1067: + mov w0, w19 + bl NandcWaitFlashReady + cbz w21, .L1065 + ldr w1, [x29, 156] + mov w0, w19 + bl FlashReadDpDataOutCmd +.L1065: + ldrb w2, [x29, 136] + mov w1, 0 + ldp x3, x4, [x22, 8] + mov w0, w19 + bl NandcXferData + mov w27, w0 + ldrb w0, [x28, 96] + cbz w0, .L1068 + cmn w27, #1 + bne .L1068 + strb wzr, [x28, 96] + mov w21, 0 + b .L1069 +.L1062: + mov w0, w19 + bl flash_exit_slc_mode + b .L1063 +.L1066: mov w0, w19 bl FlashReadCmd - b .L1081 -.L1108: - mov w20, w0 -.L1078: - ldrb w2, [x29,136] + b .L1067 +.L1091: + mov w21, 0 + b .L1065 +.L1068: + cbz w21, .L1070 + add x0, x25, :lo12:.LANCHOR0 + ldr w1, [x29, 156] + ldr w0, [x0, 92] + add w1, w1, w0 mov w0, w19 - ldr x3, [x22,8] - mov w1, 0 - ldr x4, [x22,16] - bl NandcXferData - cmn w0, #1 - mov w28, w0 - bne .L1082 - ldrb w0, [x23,96] - cbz w0, .L1082 - strb wzr, [x23,96] - mov w20, 0 - b .L1076 -.L1082: - cbz w20, .L1083 - ldr w2, [x23,92] - mov w0, w19 - ldr w1, [x29,156] - add w1, w2, w1 bl FlashReadDpDataOutCmd - add w0, w25, 1 - mov w4, 56 - ldrb w2, [x29,136] + add w0, w23, 1 + mov w1, 56 + ldrb w2, [x29, 136] + nop // between mem op and mult-accumulate + umaddl x0, w0, w1, x26 mov w1, 0 - umull x4, w0, w4 + ldp x3, x4, [x0, 8] mov w0, w19 - add x4, x26, x4 - ldr x3, [x4,8] - ldr x4, [x4,16] bl NandcXferData cmn w0, #1 mov w24, w0 - csel w20, w20, wzr, ne -.L1083: + csel w21, w21, wzr, ne +.L1070: mov w0, w19 bl NandcFlashDeCs - ldrb w0, [x29,116] - cmn w28, #1 - strb w0, [x23,96] - bne .L1090 - ldrb w0, [x21,2104] - cbnz w0, .L1085 -.L1089: - ldr x20, [x21,2192] - cbnz x20, .L1086 - b .L1159 -.L1085: - ldr x0, [x21,1152] + add x0, x25, :lo12:.LANCHOR0 + ldrb w1, [x29, 108] + cmn w27, #1 + strb w1, [x0, 96] + bne .L1071 + ldrb w0, [x20, 2104] + cbnz w0, .L1072 +.L1076: + ldr x4, [x20, 2192] + cbnz x4, .L1073 + ldr w1, [x29, 156] + mov w0, w19 + ldp x2, x3, [x22, 8] + bl FlashReadRawPage + b .L1128 +.L1072: + ldr x0, [x20, 1152] mov w4, 1 - ldr w1, [x29,156] - ldr x2, [x22,8] - ldr x3, [x22,16] - ldr w20, [x0,304] + ldr w1, [x29, 156] + ldp x2, x3, [x22, 8] + ldr w21, [x0, 304] mov w0, w19 bl FlashDdrTunningRead + mov w27, w0 cmn w0, #1 - mov w28, w0 - beq .L1088 - ldrb w0, [x21,1221] - cmp w28, w0, lsr 1 - bls .L1110 -.L1088: - lsr w0, w20, 8 + beq .L1075 + ldrb w0, [x20, 1221] + cmp w27, w0, lsr 1 + bls .L1092 +.L1075: + lsr w0, w21, 8 bl NandcSetDdrPara - cmn w28, #1 - beq .L1089 - b .L1110 -.L1086: - ldr w1, [x29,156] - mov w0, w19 - ldr x2, [x22,8] - ldr x3, [x22,16] - blr x20 - cmn w0, #1 - mov w28, w0 - mov w20, 0 - bne .L1091 - ldr x0, [x23,104] - ldrb w0, [x0,19] - sub w0, w0, #1 - uxtb w0, w0 - cmp w0, 7 - bhi .L1092 - ldrb w1, [x21,1233] - mov w0, w19 - ldr x2, [x29,120] - mov w3, w20 - bl HynixSetRRPara + cmn w27, #1 + beq .L1076 .L1092: - ldr w1, [x29,156] - mov w0, w19 - ldr x2, [x22,8] - mov w20, 0 - ldr x3, [x22,16] - bl FlashReadRawPage - mov w28, w0 - ldr w1, [x22,4] - adrp x0, .LC19 - ldrb w2, [x21,1221] - add x0, x0, :lo12:.LC19 - mov w3, w28 - bl printk - cmn w28, #1 - bne .L1091 - ldrb w0, [x21,1220] - cbz w0, .L1091 - ldr w0, [x29,140] - cbz w0, .L1093 - mov w0, w19 - bl flash_enter_slc_mode - b .L1094 -.L1093: - mov w0, w19 - bl flash_exit_slc_mode -.L1094: - ldr x4, [x21,2192] - mov w0, w19 - ldr w1, [x29,156] - mov w20, 0 - ldr x2, [x22,8] - ldr x3, [x22,16] - blr x4 - mov w28, w0 - b .L1091 -.L1159: - ldr w1, [x29,156] - mov w0, w19 - ldr x2, [x22,8] - ldr x3, [x22,16] - bl FlashReadRawPage - mov w28, w0 - b .L1091 -.L1110: - mov w20, 0 -.L1090: - ldrb w0, [x21,1221] + mov w21, 0 +.L1071: + ldrb w0, [x20, 1221] add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bls .L1091 - ldr x0, [x21,2192] - cmp x0, xzr + cmp w27, w0, lsr 2 + bls .L1077 + ldr x0, [x20, 2192] + cmp x0, 0 mov w0, 256 - csel w28, w28, w0, ne -.L1091: - cmp w28, 256 - beq .L1115 - cmn w28, #1 - bne .L1095 -.L1115: - str w28, [x26,x27] - b .L1097 -.L1095: - str wzr, [x26,x27] -.L1097: - ldr w3, [x26,x27] + csel w27, w27, w0, ne +.L1077: + ldr x0, [x29, 128] + cmp w27, 256 + ccmn w27, #1, 4, ne + csel w3, w27, wzr, eq cmn w3, #1 - bne .L1099 - ldr w1, [x22,4] + str w3, [x26, x0] + bne .L1084 + ldr w1, [x22, 4] adrp x0, .LC16 - ldrb w2, [x21,1221] + ldrb w2, [x20, 1221] add x0, x0, :lo12:.LC16 bl printk - ldr x1, [x22,16] - cbz x1, .L1099 + ldr x1, [x22, 16] + cbz x1, .L1084 + mov w3, 4 adrp x0, .LC18 - mov w2, 4 + mov w2, w3 add x0, x0, :lo12:.LC18 - mov w3, w2 bl rknand_print_hex -.L1099: - cbz w20, .L1101 - ldrb w0, [x21,1221] +.L1084: + cbz w21, .L1086 + ldrb w0, [x20, 1221] add w0, w0, w0, lsl 1 cmp w24, w0, lsr 2 - bls .L1102 - ldr x0, [x21,2192] - cmp x0, xzr + bls .L1087 + ldr x0, [x20, 2192] + cmp x0, 0 mov w0, 256 csel w24, w24, w0, ne -.L1102: - add w0, w25, 1 +.L1087: + add w0, w23, 1 mov w1, 56 cmp w24, 256 + ccmn w24, #1, 4, ne umull x0, w0, w1 - beq .L1116 - cmn w24, #1 - bne .L1103 -.L1116: - str w24, [x26,x0] - b .L1101 -.L1103: - str wzr, [x26,x0] -.L1101: - ldr w0, [x29,140] - add w25, w25, w20 - cbz w0, .L1071 - ldrb w0, [x21,1220] - cbz w0, .L1071 + csel w1, w24, wzr, eq + str w1, [x26, x0] +.L1086: + ldr w0, [x29, 140] + add w23, w23, w21 + cbz w0, .L1058 + ldrb w0, [x20, 1220] + cbz w0, .L1058 mov w0, w19 bl flash_exit_slc_mode -.L1071: - add w25, w25, 1 - b .L1068 -.L1158: - mov w0, 0 - b .L1156 -.L1081: + b .L1058 +.L1073: + ldr w1, [x29, 156] mov w0, w19 - bl NandcWaitFlashReady - cbz w20, .L1078 - ldr w1, [x29,156] + ldp x2, x3, [x22, 8] + mov w21, 0 + blr x4 + mov w27, w0 + cmn w0, #1 + bne .L1077 + add x0, x25, :lo12:.LANCHOR0 + ldr x0, [x0, 104] + ldrb w0, [x0, 19] + sub w0, w0, #1 + and w0, w0, 255 + cmp w0, 7 + bhi .L1078 + ldrb w1, [x20, 1233] + mov w3, 0 + ldr x2, [x29, 112] mov w0, w19 - bl FlashReadDpDataOutCmd - b .L1078 -.L1156: - 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 - ret + bl HynixSetRRPara +.L1078: + ldp x2, x3, [x22, 8] + mov w0, w19 + ldr w1, [x29, 156] + bl FlashReadRawPage + mov w27, w0 + ldrb w2, [x20, 1221] + mov w3, w0 + ldr w1, [x22, 4] + adrp x0, .LC19 + add x0, x0, :lo12:.LC19 + bl printk + cmn w27, #1 + bne .L1095 + ldrb w0, [x20, 1220] + cbz w0, .L1095 + ldr w0, [x29, 140] + cbz w0, .L1079 + mov w0, w19 + bl flash_enter_slc_mode +.L1080: + ldr w1, [x29, 156] + mov w0, w19 + ldr x4, [x20, 2192] + ldp x2, x3, [x22, 8] + blr x4 +.L1128: + mov w27, w0 +.L1095: + mov w21, 0 + b .L1077 +.L1079: + mov w0, w19 + bl flash_exit_slc_mode + b .L1080 .size FlashReadPages, .-FlashReadPages .align 2 .global FlashLoadFactorBbt .type FlashLoadFactorBbt, %function FlashLoadFactorBbt: - stp x29, x30, [sp, -192]! - mov w1, 0 + stp x29, x30, [sp, -176]! mov w2, 16 + mov w1, 0 add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - stp x19, x20, [sp,16] - add x19, x22, :lo12:.LANCHOR2 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x23, x24, [sp,48] - mov w27, -1 - mov w28, 0 - ldrh w0, [x19,1204] - adrp x25, .LC20 - ldrh w21, [x19,1206] - adrp x26, .LANCHOR0 - add x25, x25, :lo12:.LC20 - mul w21, w0, w21 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + add x19, x23, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + mov w26, -1 + stp x21, x22, [sp, 32] + mov w27, 0 + ldrh w0, [x19, 1204] + ldrh w21, [x19, 1206] + mul w21, w21, w0 add x0, x19, 2256 - uxth w21, w21 bl ftl_memset - add w24, w21, w27 - ldr x0, [x19,2224] - str xzr, [x29,144] - mov w19, w28 - str x0, [x29,152] - uxth w24, w24 -.L1161: - add x1, x26, :lo12:.LANCHOR0 - ldrb w1, [x1,3216] - cmp w1, w19 - bls .L1171 - mul w4, w19, w21 - mov w20, w24 - sub w3, w21, #12 - mov w5, 61664 -.L1162: - cmp w20, w3 - ble .L1164 - add w1, w4, w20 - add x0, x29, 136 - lsl w1, w1, 10 - str w1, [x29,140] - mov w1, 1 - str x5, [x29,104] - mov w2, w1 - str x3, [x29,112] - str x4, [x29,120] - bl FlashReadPages - ldr w0, [x29,136] - ldr x4, [x29,120] - cmn w0, #1 - ldr x3, [x29,112] - ldr x5, [x29,104] - beq .L1163 - add x23, x22, :lo12:.LANCHOR2 - ldr x0, [x23,2224] - ldrh w0, [x0] - cmp w0, w5 - bne .L1163 - add x23, x23, 2256 - mov x0, x25 - mov w1, w19 - mov w2, w20 - add w28, w28, 1 - bl printk - strh w20, [x23,w19,sxtw 1] - uxth w28, w28 - b .L1164 -.L1163: - sub w20, w20, #1 - uxth w20, w20 - b .L1162 -.L1164: - adrp x0, .LANCHOR0 - add w19, w19, 1 - add x1, x0, :lo12:.LANCHOR0 - uxtb w19, w19 - ldrb w1, [x1,3216] - cmp w1, w28 - csel w27, w27, wzr, ne - b .L1161 -.L1171: - mov w0, w27 - 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], 192 + and w21, w21, 65535 + ldr x0, [x19, 2224] + add w25, w21, w26 + stp xzr, x0, [x29, 128] + and w25, w25, 65535 + sub w0, w21, #12 + mov w19, 0 + str w0, [x29, 108] +.L1130: + adrp x22, .LANCHOR0 + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 3216] + cmp w0, w19 + bhi .L1136 + 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], 176 ret +.L1136: + mul w28, w21, w19 + mov w20, w25 + add x24, x23, :lo12:.LANCHOR2 + mov w3, 61664 +.L1131: + ldr w0, [x29, 108] + cmp w20, w0 + ble .L1133 + add w0, w20, w28 + mov w2, 1 + lsl w0, w0, 10 + str w3, [x29, 104] + str w0, [x29, 124] + mov w1, w2 + add x0, x29, 120 + bl FlashReadPages + ldr w0, [x29, 120] + ldr w3, [x29, 104] + cmn w0, #1 + beq .L1132 + ldr x0, [x24, 2224] + ldrh w0, [x0] + cmp w0, w3 + bne .L1132 + add x24, x24, w19, sxtw 1 + add w27, w27, 1 + and w27, w27, 65535 + mov w2, w20 + mov w1, w19 + adrp x0, .LC20 + add x0, x0, :lo12:.LC20 + bl printk + strh w20, [x24, 2256] +.L1133: + add x22, x22, :lo12:.LANCHOR0 + add w19, w19, 1 + and w19, w19, 255 + ldrb w0, [x22, 3216] + cmp w0, w27 + csel w26, w26, wzr, ne + b .L1130 +.L1132: + sub w20, w20, #1 + and w20, w20, 65535 + b .L1131 .size FlashLoadFactorBbt, .-FlashLoadFactorBbt .align 2 .global FlashReadFacBbtData .type FlashReadFacBbtData, %function FlashReadFacBbtData: stp x29, x30, [sp, -144]! - adrp x4, .LANCHOR2 add x29, sp, 0 - stp x21, x22, [sp,32] - mov x22, x0 - add x0, x4, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + stp x23, x24, [sp, 48] mov w23, w1 + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + mov x22, x0 + stp x25, x26, [sp, 64] mov w25, w2 - ldrh w1, [x0,1206] - mov x21, x4 - ldrh w3, [x0,1204] + mov x21, x1 mov w26, 61664 - ldr x0, [x0,2224] - str x0, [x29,104] - mul w3, w3, w1 - adrp x1, .LANCHOR0 - uxth w3, w3 - sub w20, w3, #1 - ldr x1, [x1,#:lo12:.LANCHOR0] - mul w24, w23, w3 - str x1, [x29,96] - uxth w20, w20 - sub w19, w3, #16 -.L1173: + ldrh w2, [x1, 1204] + ldrh w0, [x1, 1206] + mul w0, w0, w2 + adrp x2, .LANCHOR0+64 + and w0, w0, 65535 + ldr x2, [x2, #:lo12:.LANCHOR0+64] + sub w20, w0, #1 + str x2, [x29, 96] + and w20, w20, 65535 + ldr x2, [x1, 2224] + mul w24, w0, w23 + sub w19, w0, #16 + str x2, [x29, 104] +.L1142: cmp w20, w19 - ble .L1181 + bgt .L1145 + mov w0, -1 + b .L1141 +.L1145: add w0, w20, w24 - mov w1, 1 + mov w2, 1 lsl w0, w0, 10 - mov w2, w1 - str w0, [x29,92] + mov w1, w2 + str w0, [x29, 92] add x0, x29, 88 bl FlashReadPages - ldr w0, [x29,88] + ldr w0, [x29, 88] cmn w0, #1 - beq .L1174 - add x0, x21, :lo12:.LANCHOR2 - ldr x0, [x0,2224] + beq .L1143 + ldr x0, [x21, 2224] ldrh w0, [x0] cmp w0, w26 - bne .L1174 - mov w0, w22 - cbz x22, .L1175 - mov x0, x22 - mov w1, w23 + bne .L1143 + cbz x22, .L1146 mov w2, w25 + mov w1, w23 + mov x0, x22 bl FlashReadFacBbtData.part.6 - b .L1175 -.L1174: - sub w20, w20, #1 - uxth w20, w20 - b .L1173 -.L1181: - mov w0, -1 -.L1175: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] +.L1141: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 144 ret +.L1143: + sub w20, w20, #1 + and w20, w20, 65535 + b .L1142 +.L1146: + mov w0, 0 + b .L1141 .size FlashReadFacBbtData, .-FlashReadFacBbtData .align 2 .global FlashGetBadBlockList @@ -7197,264 +7063,262 @@ FlashReadFacBbtData: FlashGetBadBlockList: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x21, [sp,32] + str x21, [sp, 32] mov x21, x0 adrp x0, .LANCHOR0+104 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - ldr x0, [x0,#:lo12:.LANCHOR0+104] - ldrb w2, [x0,13] - ldrh w19, [x0,14] - add x0, x20, :lo12:.LANCHOR2 - mul w19, w2, w19 - ldr x0, [x0,2216] - uxth w19, w19 + add x20, x20, :lo12:.LANCHOR2 + ldr x0, [x0, #:lo12:.LANCHOR0+104] + ldrb w2, [x0, 13] + ldrh w19, [x0, 14] + ldr x0, [x20, 2216] + mul w19, w19, w2 + and w19, w19, 65535 add w2, w19, 7 lsr w2, w2, 3 bl FlashReadFacBbtData cmn w0, #1 - bne .L1183 -.L1187: - mov w1, 0 - b .L1184 -.L1183: - mov w2, 0 - lsr w0, w19, 4 - mov w1, w2 - sub w19, w19, #1 - mov w5, 1 -.L1185: - cmp w2, w19 - bge .L1184 - add x3, x20, :lo12:.LANCHOR2 - ubfx x4, x2, 5, 11 - ldr x6, [x3,2216] - lsl w3, w5, w2 - ldr w4, [x6,x4,lsl 2] - tst w3, w4 - beq .L1186 - add w3, w1, 1 - ubfiz x1, x1, 1, 16 - strh w2, [x21,x1] - uxth w1, w3 -.L1186: - cmp w1, w0 - bcs .L1187 - add w2, w2, 1 - uxth w2, w2 - b .L1185 -.L1184: - ubfiz x1, x1, 1, 16 - mov w0, -1 - ldp x19, x20, [sp,16] - strh w0, [x21,x1] + bne .L1152 +.L1156: mov w0, 0 - ldr x21, [sp,32] +.L1153: + ubfiz x0, x0, 1, 16 + mov w1, -1 + strh w1, [x21, x0] + mov w0, 0 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L1152: + lsr w4, w19, 4 + sub w19, w19, #1 + mov w1, 0 + mov w0, 0 + mov w5, 1 +.L1154: + cmp w1, w19 + bge .L1153 + ldr x6, [x20, 2216] + ubfx x3, x1, 5, 11 + lsl w2, w5, w1 + ldr w3, [x6, x3, lsl 2] + tst w2, w3 + beq .L1155 + add w2, w0, 1 + ubfiz x0, x0, 1, 16 + strh w1, [x21, x0] + and w0, w2, 65535 +.L1155: + cmp w0, w4 + bcs .L1156 + add w1, w1, 1 + and w1, w1, 65535 + b .L1154 .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 .global FlashProgSlc2KPages .type FlashProgSlc2KPages, %function FlashProgSlc2KPages: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x23, x24, [sp,48] - mov w23, w1 - adrp x1, .LANCHOR1+481 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR0 - str x27, [sp,80] - stp x25, x26, [sp,64] - add x22, x22, :lo12:.LANCHOR0 - ldrb w26, [x1,#:lo12:.LANCHOR1+481] - stp x19, x20, [sp,16] + stp x23, x24, [sp, 48] mov w24, w2 - mov x19, x0 - mov x21, x0 - mov w25, 0 - add x27, x22, 3220 -.L1193: - cmp w25, w23 - beq .L1219 + adrp x2, .LANCHOR1+481 + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + and w21, w1, 255 + mov w23, 56 + ldrb w26, [x2, #:lo12:.LANCHOR1+481] + stp x27, x28, [sp, 80] + mov w22, w21 + adrp x27, .LANCHOR0 + add x25, x27, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov x28, x0 + umaddl x23, w1, w23, x0 + mov x20, x0 + add x0, x25, 3072 + str x0, [x29, 104] +.L1163: + cmp x20, x23 + bne .L1169 + adrp x22, .LANCHOR2 + add x23, x22, :lo12:.LANCHOR2 +.L1170: + cmp x28, x20 + bne .L1177 + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 + ret +.L1169: mov w1, w24 - sub w4, w23, w25 - mov x0, x21 - add x2, x29, 96 - add x3, x29, 100 + mov w4, w22 + add x3, x29, 116 + add x2, x29, 112 + mov x0, x20 bl LogAddr2PhyAddr - ldr w0, [x29,100] - ldrb w1, [x22,3216] - cmp w0, w1 - bcc .L1194 + ldrb w1, [x25, 3216] + ldr w0, [x29, 116] + cmp w1, w0 + bhi .L1164 mov w0, -1 - str w0, [x21] - b .L1195 -.L1194: - ldrb w20, [x27,w0,uxtw] - mov w0, w20 + str w0, [x20] +.L1165: + sub w22, w22, #1 + add x20, x20, 56 + and w22, w22, 255 + b .L1163 +.L1164: + ldr x1, [x29, 104] + add x0, x1, w0, uxtw + ldrb w19, [x0, 148] + mov w0, w19 bl NandcWaitFlashReady - mov w0, w20 + mov w0, w19 bl NandcFlashCs - ldr w1, [x29,96] - mov w0, w20 + ldr w1, [x29, 112] + mov w0, w19 bl FlashProgFirstCmd - ldr x3, [x21,8] + ldp x3, x4, [x20, 8] mov w2, w26 - ldr x4, [x21,16] mov w1, 1 - mov w0, w20 + mov w0, w19 bl NandcXferData - ldr w1, [x29,96] - mov w0, w20 + ldr w1, [x29, 112] + mov w0, w19 bl FlashProgSecondCmd - mov w0, w20 + mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,96] - mov w0, w20 + ldr w1, [x29, 112] + mov w0, w19 bl FlashReadStatus sbfx x0, x0, 0, 1 - str w0, [x21] - mov w0, w20 - ldr w1, [x29,96] - ldr w2, [x22,92] - add w1, w2, w1 + str w0, [x20] + ldr w1, [x29, 112] + ldr w0, [x25, 92] + add w1, w1, w0 + mov w0, w19 bl FlashProgFirstCmd - ldr x0, [x21,8] - mov w1, 1 + ldr x0, [x20, 8] mov w2, w26 - cmp x0, xzr + mov w1, 1 + cmp x0, 0 add x3, x0, 2048 - ldr x0, [x21,16] + ldr x0, [x20, 16] csel x3, x3, xzr, ne + cmp x0, 0 add x4, x0, 8 - cmp x0, xzr csel x4, x4, xzr, ne - mov w0, w20 + mov w0, w19 bl NandcXferData - adrp x0, .LANCHOR0 - ldr w1, [x29,96] - add x0, x0, :lo12:.LANCHOR0 - ldr w2, [x0,92] - mov w0, w20 - add w1, w2, w1 + add x0, x27, :lo12:.LANCHOR0 + ldr w1, [x29, 112] + ldr w0, [x0, 92] + add w1, w1, w0 + mov w0, w19 bl FlashProgSecondCmd - mov w0, w20 + mov w0, w19 bl NandcWaitFlashReady - ldr w1, [x29,96] - mov w0, w20 + ldr w1, [x29, 112] + mov w0, w19 bl FlashReadStatus - tbz x0, 0, .L1198 + tbz x0, 0, .L1168 mov w0, -1 - str w0, [x21] -.L1198: - mov w0, w20 + str w0, [x20] +.L1168: + mov w0, w19 bl NandcFlashDeCs -.L1195: - add w25, w25, 1 - add x21, x21, 56 - b .L1193 -.L1219: - adrp x25, .LC25 - adrp x26, .LC24 - adrp x27, .LC23 - mov w21, 0 - add x25, x25, :lo12:.LC25 - add x26, x26, :lo12:.LC24 - add x27, x27, :lo12:.LC23 -.L1200: - cmp w21, w23 - beq .L1220 - ldr w0, [x19] + b .L1165 +.L1177: + ldr w0, [x28] cmn w0, #1 - bne .L1201 + bne .L1171 + ldr w1, [x28, 4] adrp x0, .LC21 - ldr w1, [x19,4] add x0, x0, :lo12:.LC21 bl printk - b .L1202 -.L1201: - adrp x20, .LANCHOR2 - sub w4, w23, w21 - add x22, x20, :lo12:.LANCHOR2 - add x3, x29, 100 +.L1172: + sub w21, w21, #1 + add x28, x28, 56 + and w21, w21, 255 + b .L1170 +.L1171: + add x19, x22, :lo12:.LANCHOR2 + mov w4, w21 + add x3, x29, 116 + add x2, x29, 112 mov w1, w24 - add x2, x29, 96 - mov x0, x19 + mov x0, x28 bl LogAddr2PhyAddr - ldr x0, [x22,2232] - mov x1, x19 + ldr x0, [x19, 2232] mov x2, 56 + mov x1, x28 str wzr, [x0] - ldr x0, [x22,2240] + ldr x0, [x19, 2240] str wzr, [x0] - add x0, x29, 104 + add x0, x29, 120 bl memcpy - ldr x0, [x22,2232] - mov w1, 1 - str x0, [x29,112] + ldr x0, [x19, 2232] mov w2, w24 - ldr x0, [x22,2240] - str x0, [x29,120] - add x0, x29, 104 + str x0, [x29, 128] + mov w1, 1 + ldr x0, [x19, 2240] + str x0, [x29, 136] + add x0, x29, 120 bl FlashReadPages - ldr w22, [x29,104] - cmn w22, #1 - bne .L1203 + ldr w19, [x29, 120] + cmn w19, #1 + bne .L1173 + ldr w1, [x28, 4] adrp x0, .LC22 - ldr w1, [x19,4] add x0, x0, :lo12:.LC22 bl printk - str w22, [x19] -.L1203: - ldr w22, [x29,104] - cmp w22, 256 - bne .L1204 - ldr w1, [x19,4] - mov x0, x27 + str w19, [x28] +.L1173: + ldr w19, [x29, 120] + cmp w19, 256 + bne .L1174 + ldr w1, [x28, 4] + adrp x0, .LC23 + add x0, x0, :lo12:.LC23 bl printk - str w22, [x19] -.L1204: - ldr x0, [x19,16] - cbz x0, .L1205 + str w19, [x28] +.L1174: + ldr x0, [x28, 16] + cbz x0, .L1175 ldr w2, [x0] - add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,2240] + ldr x0, [x23, 2240] ldr w3, [x0] cmp w2, w3 - beq .L1205 - ldr w1, [x19,4] - mov x0, x26 + beq .L1175 + ldr w1, [x28, 4] + adrp x0, .LC24 + add x0, x0, :lo12:.LC24 bl printk mov w0, -1 - str w0, [x19] -.L1205: - ldr x0, [x19,8] - cbz x0, .L1202 - add x20, x20, :lo12:.LANCHOR2 + str w0, [x28] +.L1175: + ldr x0, [x28, 8] + cbz x0, .L1172 ldr w2, [x0] - ldr x0, [x20,2232] + ldr x0, [x23, 2232] ldr w3, [x0] cmp w2, w3 - beq .L1202 - ldr w1, [x19,4] - mov x0, x25 + beq .L1172 + ldr w1, [x28, 4] + adrp x0, .LC25 + add x0, x0, :lo12:.LC25 bl printk mov w0, -1 - str w0, [x19] -.L1202: - add w21, w21, 1 - add x19, x19, 56 - b .L1200 -.L1220: - mov w0, 0 - 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], 160 - ret + str w0, [x28] + b .L1172 .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .align 2 .global FlashProgPages @@ -7462,345 +7326,335 @@ FlashProgSlc2KPages: FlashProgPages: stp x29, x30, [sp, -192]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - mov w22, 0 add x4, x21, :lo12:.LANCHOR0 - str w3, [x29,116] - 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] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x5, [x4, 104] + ldrb w4, [x4, 88] + ldrb w5, [x5, 19] + stp w3, w5, [x29, 116] + cbnz w4, .L1191 mov x19, x0 - mov w25, w1 - ldr x5, [x4,104] - mov w23, w2 - ldrb w4, [x4,88] - ldrb w5, [x5,19] - str w5, [x29,120] - adrp x5, .LANCHOR1+481 - ldrb w5, [x5,#:lo12:.LANCHOR1+481] - str w5, [x29,124] - cbz w4, .L1222 - bl FlashProgSlc2KPages - b .L1223 -.L1222: + adrp x0, .LANCHOR1+481 adrp x28, .LANCHOR2 + mov w25, w1 + ldrb w0, [x0, #:lo12:.LANCHOR1+481] add x26, x28, :lo12:.LANCHOR2 + mov w23, w2 + str w0, [x29, 124] + mov w22, 0 add x0, x26, 1236 - str x0, [x29,104] -.L1273: + str x0, [x29, 104] +.L1192: cmp w22, w25 - bcs .L1274 - mov w20, 56 - mov w1, w23 + bcc .L1205 + add x21, x21, :lo12:.LANCHOR0 + adrp x22, .LANCHOR2 + add x24, x21, 3260 + add x22, x22, :lo12:.LANCHOR2 + mov x20, 0 + mov x26, 24 +.L1206: + ldrb w0, [x21, 3216] + cmp w0, w20 + bhi .L1208 + ldr w0, [x29, 116] + cbnz w0, .L1209 +.L1217: + mov w0, 0 + b .L1190 +.L1191: + bl FlashProgSlc2KPages +.L1190: + 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], 192 + ret +.L1205: + mov w13, 56 add x2, x29, 128 + mov w1, w23 sub w4, w25, w22 - umull x20, w22, w20 + umull x13, w22, w13 add x3, x29, 132 - add x27, x19, x20 + add x27, x19, x13 mov x0, x27 bl LogAddr2PhyAddr mov w24, w0 add x1, x21, :lo12:.LANCHOR0 - ldr w0, [x29,132] - ldrb w2, [x1,3216] - cmp w0, w2 - bcc .L1224 + ldr w0, [x29, 132] + ldrb w2, [x1, 3216] + cmp w2, w0 + bhi .L1194 mov w0, -1 - str w0, [x19,x20] - b .L1225 -.L1224: + str w0, [x19, x13] +.L1195: + add w22, w22, 1 + b .L1192 +.L1194: add x2, x28, :lo12:.LANCHOR2 - add x1, x1, 3260 mov x3, 24 - ldrb w2, [x2,2094] - cmp w2, wzr - uxtw x2, w0 + ldrb w2, [x2, 2094] + cmp w2, 0 + add x2, x1, 3260 + uxtw x1, w0 csel w24, w24, wzr, ne - madd x1, x2, x3, x1 - ldr x1, [x1,8] - cbz x1, .L1227 + madd x1, x1, x3, x2 + ldr x1, [x1, 8] + cbz x1, .L1197 bl FlashWaitCmdDone -.L1227: +.L1197: add x0, x21, :lo12:.LANCHOR0 - ldr w2, [x29,132] - mov x1, 24 - add x0, x0, 3260 - madd x0, x2, x1, x0 - ldr w1, [x29,128] - str x27, [x0,8] - str xzr, [x0,16] - str w1, [x0,4] - cbz w24, .L1228 - add w1, w22, 1 - mov w3, 56 - umull x1, w1, w3 - add x1, x19, x1 - str x1, [x0,16] -.L1228: - add x1, x21, :lo12:.LANCHOR0 - add x0, x1, 3220 - ldrb w20, [x0,x2] + ldr w1, [x29, 132] + add x2, x0, 3260 mov x0, 24 - madd x2, x2, x0, x1 - ldrb w0, [x1,3216] - strb w20, [x2,3260] + madd x0, x1, x0, x2 + ldr w2, [x29, 128] + str w2, [x0, 4] + stp x27, xzr, [x0, 8] + cbz w24, .L1198 + add w2, w22, 1 + mov w3, 56 + umaddl x2, w2, w3, x19 + str x2, [x0, 16] +.L1198: + add x4, x21, :lo12:.LANCHOR0 + mov x2, 24 + add x0, x4, x1 + mul x1, x1, x2 + ldrb w20, [x0, 3220] + add x0, x4, 3260 + strb w20, [x0, x1] + ldrb w0, [x4, 3216] cmp w0, 1 - bne .L1229 mov w0, w20 + bne .L1199 bl NandcWaitFlashReady - b .L1230 -.L1229: - mov w0, w20 - str x1, [x29,96] - bl NandcFlashCs - ldr x1, [x29,96] - ldr w0, [x29,132] - add x1, x1, 3228 - ldr w0, [x1,x0,lsl 2] - ldr w1, [x29,128] - cmp w0, wzr - mov w0, w20 - cset w2, ne - bl FlashWaitReadyEN - mov w0, w20 - bl NandcFlashDeCs -.L1230: - ldr w0, [x29,120] +.L1200: + ldr w0, [x29, 120] sub w0, w0, #1 cmp w0, 7 - bhi .L1231 + bhi .L1201 add x0, x26, w20, sxtw - ldrb w0, [x0,2088] - cbz w0, .L1231 - ldrb w1, [x26,1233] - mov w0, w20 - ldr x2, [x29,104] + ldrb w0, [x0, 2088] + cbz w0, .L1201 + ldrb w1, [x26, 1233] mov w3, 0 + ldr x2, [x29, 104] + mov w0, w20 bl HynixSetRRPara -.L1231: +.L1201: mov w0, w20 bl NandcFlashCs cmp w23, 1 - bne .L1232 - ldrb w0, [x26,1220] - cbz w0, .L1232 + bne .L1202 + ldrb w0, [x26, 1220] + cbz w0, .L1202 mov w0, w20 bl flash_enter_slc_mode - b .L1233 -.L1232: - mov w0, w20 - bl flash_exit_slc_mode -.L1233: - ldr w1, [x29,128] +.L1203: + ldr w1, [x29, 128] mov w0, w20 bl FlashProgFirstCmd - ldrb w2, [x29,124] - mov w0, w20 - ldr x3, [x27,8] + ldrb w2, [x29, 124] mov w1, 1 - ldr x4, [x27,16] + ldp x3, x4, [x27, 8] + mov w0, w20 bl NandcXferData - cbz w24, .L1234 - ldr w1, [x29,128] + cbz w24, .L1204 + ldr w1, [x29, 128] mov w0, w20 add x27, x21, :lo12:.LANCHOR0 bl FlashProgDpFirstCmd - ldr w1, [x29,132] + ldr w1, [x29, 132] add x0, x27, 3228 - ldr w0, [x0,x1,lsl 2] - ldr w1, [x29,128] - cmp w0, wzr + ldr w0, [x0, x1, lsl 2] + ldr w1, [x29, 128] + cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN - ldr w2, [x27,92] + ldr w0, [x27, 92] + ldr w1, [x29, 128] + add w1, w1, w0 mov w0, w20 - ldr w1, [x29,128] - add w1, w2, w1 bl FlashProgDpSecondCmd add w0, w22, 1 - mov w4, 56 - ldrb w2, [x29,124] + mov w1, 56 + ldrb w2, [x29, 124] + nop // between mem op and mult-accumulate + umaddl x0, w0, w1, x19 mov w1, 1 - umull x4, w0, w4 + ldp x3, x4, [x0, 8] mov w0, w20 - add x4, x19, x4 - ldr x3, [x4,8] - ldr x4, [x4,16] bl NandcXferData -.L1234: - ldr w1, [x29,128] +.L1204: + ldr w1, [x29, 128] mov w0, w20 add w22, w22, w24 bl FlashProgSecondCmd mov w0, w20 bl NandcFlashDeCs -.L1225: - add w22, w22, 1 - b .L1273 -.L1274: - add x21, x21, :lo12:.LANCHOR0 - mov x20, 0 - adrp x22, .LANCHOR2 - add x24, x21, 3260 - mov x26, 24 -.L1236: - ldrb w0, [x21,3216] - cmp w0, w20 - bls .L1275 + b .L1195 +.L1199: + bl NandcFlashCs + add x4, x4, 3228 + ldp w1, w0, [x29, 128] + ldr w0, [x4, x0, lsl 2] + cmp w0, 0 + mov w0, w20 + cset w2, ne + bl FlashWaitReadyEN + mov w0, w20 + bl NandcFlashDeCs + b .L1200 +.L1202: + mov w0, w20 + bl flash_exit_slc_mode + b .L1203 +.L1208: mov w0, w20 bl FlashWaitCmdDone cmp w23, 1 - bne .L1237 - add x0, x22, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L1237 + bne .L1207 + ldrb w0, [x22, 1220] + cbz w0, .L1207 mul x0, x20, x26 - ldrb w0, [x0,x24] + ldrb w0, [x0, x24] bl flash_exit_slc_mode -.L1237: +.L1207: add x20, x20, 1 - b .L1236 -.L1275: - ldr w0, [x29,116] - cbnz w0, .L1239 -.L1247: - mov w0, 0 - b .L1223 -.L1239: - adrp x24, .LC25 - adrp x26, .LC24 - adrp x27, .LC22 - mov w21, 0 - add x24, x24, :lo12:.LC25 - add x26, x26, :lo12:.LC24 - add x27, x27, :lo12:.LC22 -.L1240: - cmp w21, w25 - beq .L1247 + b .L1206 +.L1209: + mov w0, 56 + and w20, w25, 255 + adrp x22, .LANCHOR2 + add x24, x22, :lo12:.LANCHOR2 + umaddl x25, w25, w0, x19 +.L1210: + cmp x25, x19 + beq .L1217 ldr w0, [x19] cmn w0, #1 - bne .L1241 + bne .L1211 + ldr w1, [x19, 4] adrp x0, .LC21 - ldr w1, [x19,4] add x0, x0, :lo12:.LC21 bl printk - b .L1242 -.L1241: - adrp x20, .LANCHOR2 - sub w4, w25, w21 - add x22, x20, :lo12:.LANCHOR2 +.L1212: + sub w20, w20, #1 + add x19, x19, 56 + and w20, w20, 255 + b .L1210 +.L1211: + add x21, x22, :lo12:.LANCHOR2 + mov w4, w20 add x3, x29, 132 - mov w1, w23 add x2, x29, 128 + mov w1, w23 mov x0, x19 bl LogAddr2PhyAddr - ldr x0, [x22,2232] - mov x1, x19 + ldr x0, [x21, 2232] mov x2, 56 + mov x1, x19 str wzr, [x0] - ldr x0, [x22,2240] + ldr x0, [x21, 2240] str wzr, [x0] add x0, x29, 136 bl memcpy - ldr x0, [x22,2232] - mov w1, 1 - str x0, [x29,144] + ldr x0, [x21, 2232] mov w2, w23 - ldr x0, [x22,2240] - str x0, [x29,152] + str x0, [x29, 144] + mov w1, 1 + ldr x0, [x21, 2240] + str x0, [x29, 152] add x0, x29, 136 bl FlashReadPages - ldr w22, [x29,136] - cmn w22, #1 - bne .L1243 - ldr w1, [x19,4] - mov x0, x27 + ldr w21, [x29, 136] + cmn w21, #1 + bne .L1213 + ldr w1, [x19, 4] + adrp x0, .LC22 + add x0, x0, :lo12:.LC22 bl printk - str w22, [x19] -.L1243: - ldr x0, [x19,16] - cbz x0, .L1244 + str w21, [x19] +.L1213: + ldr x0, [x19, 16] + cbz x0, .L1214 ldr w2, [x0] - add x0, x20, :lo12:.LANCHOR2 - ldr x0, [x0,2240] + ldr x0, [x24, 2240] ldr w3, [x0] cmp w2, w3 - beq .L1244 - ldr w1, [x19,4] - mov x0, x26 + beq .L1214 + ldr w1, [x19, 4] + adrp x0, .LC24 + add x0, x0, :lo12:.LC24 bl printk mov w0, -1 str w0, [x19] -.L1244: - ldr x0, [x19,8] - cbz x0, .L1242 - add x20, x20, :lo12:.LANCHOR2 +.L1214: + ldr x0, [x19, 8] + cbz x0, .L1212 ldr w2, [x0] - ldr x0, [x20,2232] + ldr x0, [x24, 2232] ldr w3, [x0] cmp w2, w3 - beq .L1242 - ldr w1, [x19,4] - mov x0, x24 + beq .L1212 + ldr w1, [x19, 4] + adrp x0, .LC25 + add x0, x0, :lo12:.LC25 bl printk mov w0, -1 str w0, [x19] -.L1242: - add w21, w21, 1 - add x19, x19, 56 - b .L1240 -.L1223: - 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], 192 - ret + b .L1212 .size FlashProgPages, .-FlashProgPages .align 2 .type FlashTestBlk.part.7, %function FlashTestBlk.part.7: stp x29, x30, [sp, -160]! - mov w1, 165 mov w2, 32 + mov w1, 165 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 + and w20, w0, 65535 lsl w20, w20, 10 - ldr x0, [x19,2216] - str x0, [x29,48] + ldr x0, [x19, 2216] + str x0, [x29, 48] add x0, x29, 96 - str x0, [x29,56] + str x0, [x29, 56] bl ftl_memset - ldr x0, [x19,2216] - mov w1, 90 + ldr x0, [x19, 2216] mov w2, 8 + mov w1, 90 bl ftl_memset - str w20, [x29,44] - mov w1, 1 - add x0, x29, 40 - mov w2, w1 - bl FlashEraseBlocks - mov w1, 1 - add x0, x29, 40 - mov w3, w1 - mov w2, w1 - bl FlashProgPages - ldr w0, [x29,40] - mov w1, 0 + str w20, [x29, 44] mov w2, 1 - cmp w0, wzr + add x0, x29, 40 + mov w1, w2 + bl FlashEraseBlocks + mov w3, 1 + add x0, x29, 40 + mov w2, w3 + mov w1, w3 + bl FlashProgPages + ldr w0, [x29, 40] + mov w2, 1 + mov w1, 0 + cmp w0, 0 add x0, x29, 40 csetm w19, ne bl FlashEraseBlocks mov w0, w19 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 160 ret .size FlashTestBlk.part.7, .-FlashTestBlk.part.7 @@ -7808,19 +7662,19 @@ FlashTestBlk.part.7: .global FlashTestBlk .type FlashTestBlk, %function FlashTestBlk: - uxth w1, w0 - adrp x0, .LANCHOR0+8 + adrp x1, .LANCHOR0+72 + and w0, w0, 65535 + ldr w1, [x1, #:lo12:.LANCHOR0+72] + cmp w0, w1 + bcc .L1247 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w2, [x0,#:lo12:.LANCHOR0+8] - mov w0, 0 - cmp w1, w2 - bcc .L1278 - mov w0, w1 bl FlashTestBlk.part.7 -.L1278: ldp x29, x30, [sp], 16 ret +.L1247: + mov w0, 0 + ret .size FlashTestBlk, .-FlashTestBlk .align 2 .global FlashMakeFactorBbt @@ -7828,326 +7682,330 @@ FlashTestBlk: FlashMakeFactorBbt: stp x29, x30, [sp, -240]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR2 - add x0, x23, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x19, .LANCHOR0 - mov w20, 0 - ldr x1, [x0,2224] - ldrh w22, [x0,1206] - str x1, [x29,160] - ldrh w1, [x0,1204] - add x0, x19, :lo12:.LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - mul w22, w1, w22 - ldr x1, [x0,104] - uxth w22, w22 - ldrb w1, [x1,24] - str w1, [x29,128] - ldrh w1, [x0,92] - str w1, [x29,172] - ldrb w0, [x0,88] - ubfiz w1, w1, 1, 15 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR2 + add x0, x22, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + add x0, x0, 1192 + stp x25, x26, [sp, 64] + adrp x20, .LANCHOR0 + stp x27, x28, [sp, 80] + mov w19, 0 + ldr x1, [x0, 1032] + ldrh w21, [x0, 14] + ldrh w0, [x0, 12] + str x1, [x29, 136] + mul w21, w21, w0 + add x0, x20, :lo12:.LANCHOR0 + and w21, w21, 65535 + ldr x1, [x0, 104] + ldrh w2, [x0, 92] + ldrb w0, [x0, 88] + ldrb w1, [x1, 24] cmp w0, 1 - ldr w0, [x29,172] - csel w0, w1, w0, eq - str w0, [x29,172] - adrp x0, .LC26 + str w1, [x29, 112] + mov x1, x2 + ubfiz w2, w2, 1, 15 + csel w0, w2, w1, eq mov w1, 1 + str w0, [x29, 168] + adrp x0, .LC26 add x0, x0, :lo12:.LC26 bl printk - add x0, x23, :lo12:.LANCHOR2 - mov w1, 0 + add x0, x22, :lo12:.LANCHOR2 mov w2, 4096 - ldr x0, [x0,2224] - bl ftl_memset - lsr w0, w22, 4 - str w0, [x29,168] - add x0, x19, 3220 - str x0, [x29,112] - ldr w0, [x29,128] - and w0, w0, 1 - str w0, [x29,108] - sub w0, w22, #1 - uxth w0, w0 - str w0, [x29,124] -.L1282: - ldrb w0, [x19,3216] - cmp w0, w20 - bls .L1332 - add x0, x23, :lo12:.LANCHOR2 - sxtw x25, w20 - add x1, x0, 2256 - ldrh w21, [x1,w20,sxtw 1] - cbnz w21, .L1312 - ldrh w2, [x0,1212] - mov w1, w21 - ldr x0, [x19] - mov w26, w21 - lsl w2, w2, 9 - mov w24, w21 - add x28, x19, 3228 - bl ftl_memset - ldr x0, [x29,112] - ldrb w27, [x0,x25] - ldr w0, [x29,128] - and w0, w0, 2 - uxtb w0, w0 - str w0, [x29,120] -.L1284: - uxth w0, w26 - str w0, [x29,144] - cmp w0, w22 - bcs .L1294 - mov w0, -1 - strb w0, [x29,182] - strb w0, [x29,183] - ldr w0, [x29,108] - cbz w0, .L1286 - ldr w3, [x28,x25,lsl 2] - mov w0, w27 - add x2, x29, 182 - add w3, w21, w3 - str x3, [x29,96] - mov w1, w3 - bl FlashReadSpare - ldrb w0, [x19,88] - ldr x3, [x29,96] - cmp w0, 1 - bne .L1286 - ldr w1, [x19,92] - mov w0, w27 - add x2, x29, 183 - add w1, w3, w1 - bl FlashReadSpare - ldrb w0, [x29,182] - ldrb w1, [x29,183] - and w0, w1, w0 - strb w0, [x29,182] -.L1286: - ldr w0, [x29,120] - cbz w0, .L1288 - ldr x0, [x19,104] - add x2, x29, 183 - ldrh w1, [x0,10] - ldr w0, [x28,x25,lsl 2] - sub w1, w1, #1 - add w1, w1, w0 - mov w0, w27 - add w1, w1, w21 - bl FlashReadSpare -.L1288: - ldr x0, [x19,104] - ldrb w1, [x29,182] - ldrb w2, [x0,7] - cmp w2, 8 - beq .L1289 - cmp w2, 1 - beq .L1289 - ldrb w0, [x0,18] - cmp w0, 12 - bne .L1290 -.L1289: - mov w0, 1 - cbz w1, .L1291 - ldrb w0, [x29,183] - cmp w0, wzr - cset w0, eq - b .L1291 -.L1290: - cmp w1, 255 - mov w0, 1 - bne .L1291 - ldrb w0, [x29,183] - cmp w0, 255 - cset w0, ne -.L1291: - ldr x1, [x29,128] - tbz x1, 2, .L1292 - ldr w1, [x28,x25,lsl 2] - mov w0, w27 - add w1, w21, w1 - bl SandiskProgTestBadBlock -.L1292: - cbz w0, .L1293 - adrp x0, .LC27 - mov w1, w20 - mov w2, w26 - add x0, x0, :lo12:.LC27 - add w24, w24, 1 - bl printk - ldr x0, [x29,144] - uxth w24, w24 - ldr x2, [x19] - ubfx x1, x0, 5, 11 - ldrb w3, [x29,144] - lsl x1, x1, 2 - mov w0, 1 - lsl w0, w0, w3 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] - ldr w1, [x29,168] - ldrb w0, [x19,3216] - mul w0, w1, w0 - cmp w24, w0 - bgt .L1294 -.L1293: - ldr w0, [x29,172] - add w26, w26, 1 - add w21, w21, w0 - b .L1284 -.L1294: - adrp x0, .LC28 - mov w1, w20 - add x0, x0, :lo12:.LC28 - mov w2, w24 - bl printk - ldrb w0, [x19,3216] - ldr w1, [x29,168] - mul w0, w1, w0 - cmp w24, w0 - blt .L1296 - add x0, x23, :lo12:.LANCHOR2 mov w1, 0 - ldrh w2, [x0,1212] - ldr x0, [x19] - lsl w2, w2, 9 + ldr x0, [x0, 2224] bl ftl_memset -.L1296: - cbnz w20, .L1298 - adrp x26, .LC29 - ldrh w27, [x19,8] - mov w21, w20 - add x26, x26, :lo12:.LC29 - mov w24, 1 -.L1299: - ldrb w0, [x19,89] - cmp w0, w27 - bls .L1333 - mov w0, w27 - bl FlashTestBlk - cbz w0, .L1300 - mov w1, w27 - mov x0, x26 - add w21, w21, 1 - bl printk - ubfx x1, x27, 5, 11 - ldr x2, [x19] - lsl x1, x1, 2 - lsl w0, w24, w27 - uxth w21, w21 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] -.L1300: - add w27, w27, 1 - uxth w27, w27 - b .L1299 -.L1333: - adrp x26, .LC29 - ldr w28, [x29,124] - sub w27, w22, #50 - add x26, x26, :lo12:.LC29 - mov w24, 1 -.L1302: - cmp w28, w27 - ble .L1334 - mov w0, w28 - bl FlashTestBlk - cbz w0, .L1303 - mov w1, w28 - mov x0, x26 - bl printk - ubfx x1, x28, 5, 11 - ldr x2, [x19] - lsl x1, x1, 2 - lsl w0, w24, w28 - ldr w3, [x2,x1] - orr w0, w3, w0 - str w0, [x2,x1] -.L1303: - sub w28, w28, #1 - uxth w28, w28 - b .L1302 -.L1334: - ldrb w0, [x19,89] - ldr w1, [x19,8] - sub w0, w0, w1 - cmp w21, w0 - bcc .L1298 - add x0, x23, :lo12:.LANCHOR2 - mov w1, 0 - ldrh w2, [x0,1212] - ldr x0, [x19] - lsl w2, w2, 9 - bl ftl_memset -.L1298: - adrp x24, .LC30 - ldr w27, [x29,124] - mul w26, w20, w22 - add x24, x24, :lo12:.LC30 - add x28, x23, :lo12:.LANCHOR2 - mov w21, -3872 -.L1306: - mov w2, w27 - mov x0, x24 - mov w1, w20 - bl printk - ldr x2, [x19] -.L1307: - ubfx x0, x27, 5, 11 - ldr w0, [x2,x0,lsl 2] - lsr w0, w0, w27 - and w1, w0, 1 - tbz x0, 0, .L1335 - sub w27, w27, #1 - uxth w27, w27 - b .L1307 -.L1335: - add x0, x28, 2256 - strh w27, [x0,x25,lsl 1] - ldr x0, [x29,160] - strh w21, [x0] - strh w27, [x0,2] - strh w1, [x0,8] - mov w1, 1 - ldr x0, [x19] - mov w2, w1 - str x0, [x29,192] - ldr x0, [x28,2224] - str x0, [x29,200] - add w0, w27, w26 - lsl w0, w0, 10 - str w0, [x29,188] - add x0, x29, 184 - bl FlashEraseBlocks - mov w1, 1 - add x0, x29, 184 - mov w2, w1 - mov w3, w1 - bl FlashProgPages - ldr w0, [x29,184] - cbz w0, .L1312 - sub w27, w27, #1 - uxth w27, w27 - b .L1306 -.L1312: - add w20, w20, 1 - uxtb w20, w20 - b .L1282 -.L1332: - 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] + lsr w0, w21, 4 + str w0, [x29, 132] + sub w0, w21, #1 + and w0, w0, 65535 + str w0, [x29, 128] + adrp x0, .LC29 + add x0, x0, :lo12:.LC29 + str x0, [x29, 104] +.L1254: + add x28, x20, :lo12:.LANCHOR0 + ldrb w0, [x28, 3216] + cmp w0, w19 + bhi .L1281 + 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 +.L1281: + add x0, x22, :lo12:.LANCHOR2 + sxtw x24, w19 + add x1, x0, x24, lsl 1 + ldrh w1, [x1, 2256] + str w1, [x29, 172] + cbnz w1, .L1255 + ldrh w2, [x0, 1212] + mov x26, x28 + ldr x0, [x28, 64] + mov w23, 0 + mov w25, 0 + lsl w2, w2, 9 + bl ftl_memset + add x0, x28, x24 + add x28, x28, 3228 + ldrb w27, [x0, 3220] + ldr w0, [x29, 112] + and w0, w0, 1 + stp w0, wzr, [x29, 160] +.L1256: + ldrh w0, [x29, 164] + str w0, [x29, 144] + cmp w0, w21 + bcc .L1267 +.L1266: + mov w1, w19 + mov w2, w23 + adrp x0, .LC28 + add x0, x0, :lo12:.LC28 + bl printk + add x3, x20, :lo12:.LANCHOR0 + ldr w1, [x29, 132] + ldrb w0, [x3, 3216] + mul w0, w0, w1 + cmp w23, w0 + blt .L1268 + add x0, x22, :lo12:.LANCHOR2 + mov w1, 0 + ldrh w2, [x0, 1212] + ldr x0, [x3, 64] + lsl w2, w2, 9 + bl ftl_memset +.L1268: + cbnz w19, .L1270 + add x26, x20, :lo12:.LANCHOR0 + mov w23, 1 + ldrh w25, [x26, 72] +.L1271: + ldrb w0, [x26, 89] + cmp w0, w25 + bhi .L1273 + ldr w27, [x29, 128] + sub w26, w21, #50 + add x23, x20, :lo12:.LANCHOR0 + mov w25, 1 +.L1274: + cmp w27, w26 + bgt .L1276 + add x0, x20, :lo12:.LANCHOR0 + ldr w2, [x0, 72] + ldrb w1, [x0, 89] + sub w1, w1, w2 + ldr w2, [x29, 172] + cmp w2, w1 + bcc .L1270 + add x1, x22, :lo12:.LANCHOR2 + ldr x0, [x0, 64] + ldrh w2, [x1, 1212] + mov w1, 0 + lsl w2, w2, 9 + bl ftl_memset +.L1270: + add x28, x22, :lo12:.LANCHOR2 + mul w25, w19, w21 + add x0, x28, 2048 + ldr w26, [x29, 128] + adrp x23, .LC30 + add x27, x20, :lo12:.LANCHOR0 + add x23, x23, :lo12:.LC30 + add x24, x0, x24, lsl 1 +.L1278: + mov w1, w19 + mov w2, w26 + mov x0, x23 + bl printk + ldr x1, [x27, 64] +.L1279: + ubfx x0, x26, 5, 11 + ldr w0, [x1, x0, lsl 2] + lsr w0, w0, w26 + tbnz x0, 0, .L1280 + ldr x1, [x29, 136] + mov w0, -3872 + strh w26, [x24, 208] + mov w2, 1 + strh w0, [x1] + strh w26, [x1, 2] + strh wzr, [x1, 8] + mov w1, w2 + ldr x0, [x27, 64] + str x0, [x29, 192] + ldr x0, [x28, 2224] + str x0, [x29, 200] + add w0, w26, w25 + lsl w0, w0, 10 + str w0, [x29, 188] + add x0, x29, 184 + bl FlashEraseBlocks + mov w3, 1 + add x0, x29, 184 + mov w2, w3 + mov w1, w3 + bl FlashProgPages + ldr w0, [x29, 184] + cbz w0, .L1255 + sub w26, w26, #1 + and w26, w26, 65535 + b .L1278 +.L1267: + mov w0, -1 + strb w0, [x29, 182] + strb w0, [x29, 183] + ldr w0, [x29, 160] + cbz w0, .L1258 + ldr w4, [x28, x24, lsl 2] + mov w0, w27 + add x2, x29, 182 + add w4, w25, w4 + str w4, [x29, 100] + mov w1, w4 + bl FlashReadSpare + ldrb w0, [x26, 88] + ldr w4, [x29, 100] + cmp w0, 1 + bne .L1258 + ldr w1, [x26, 92] + mov w0, w27 + add x2, x29, 183 + add w1, w4, w1 + bl FlashReadSpare + ldrb w0, [x29, 182] + ldrb w1, [x29, 183] + and w0, w0, w1 + strb w0, [x29, 182] +.L1258: + ldr x0, [x29, 112] + tbz x0, 1, .L1260 + ldr x0, [x26, 104] + add x2, x29, 183 + ldrh w1, [x0, 10] + ldr w0, [x28, x24, lsl 2] + sub w1, w1, #1 + add w0, w25, w0 + add w1, w1, w0 + mov w0, w27 + bl FlashReadSpare +.L1260: + ldr x1, [x26, 104] + ldrb w0, [x1, 7] + cmp w0, 1 + ccmp w0, 8, 4, ne + ldrb w0, [x29, 182] + beq .L1261 + ldrb w1, [x1, 18] + cmp w1, 12 + bne .L1262 +.L1261: + cbz w0, .L1283 + ldrb w0, [x29, 183] + cmp w0, 0 + cset w0, eq +.L1263: + ldr x1, [x29, 112] + tbz x1, 2, .L1264 + ldr w1, [x28, x24, lsl 2] + mov w0, w27 + add w1, w25, w1 + bl SandiskProgTestBadBlock +.L1264: + cbz w0, .L1265 + ldr w2, [x29, 164] + mov w1, w19 + adrp x0, .LC27 + add x0, x0, :lo12:.LC27 + add w23, w23, 1 + and w23, w23, 65535 + bl printk + ldr x0, [x29, 144] + mov w1, 1 + ldr x4, [x26, 64] + ldrb w2, [x29, 144] + ubfx x0, x0, 5, 11 + lsl x0, x0, 2 + lsl w2, w1, w2 + ldr w1, [x4, x0] + orr w1, w1, w2 + str w1, [x4, x0] + ldr w1, [x29, 132] + ldrb w0, [x26, 3216] + mul w0, w0, w1 + cmp w23, w0 + bgt .L1266 +.L1265: + ldr w0, [x29, 164] + add w0, w0, 1 + str w0, [x29, 164] + ldr w0, [x29, 168] + add w25, w25, w0 + b .L1256 +.L1262: + cmp w0, 255 + bne .L1283 + ldrb w0, [x29, 183] + cmp w0, 255 + cset w0, ne + b .L1263 +.L1283: + mov w0, 1 + b .L1263 +.L1273: + mov w0, w25 + bl FlashTestBlk + cbz w0, .L1272 + ldr x0, [x29, 104] + mov w1, w25 + bl printk + ldr x3, [x26, 64] + ubfx x0, x25, 5, 11 + lsl x0, x0, 2 + lsl w1, w23, w25 + ldr w2, [x3, x0] + orr w1, w2, w1 + str w1, [x3, x0] + ldr w0, [x29, 172] + add w0, w0, 1 + and w0, w0, 65535 + str w0, [x29, 172] +.L1272: + add w25, w25, 1 + and w25, w25, 65535 + b .L1271 +.L1276: + mov w0, w27 + bl FlashTestBlk + cbz w0, .L1275 + ldr x0, [x29, 104] + mov w1, w27 + bl printk + ldr x3, [x23, 64] + ubfx x0, x27, 5, 11 + lsl x0, x0, 2 + lsl w1, w25, w27 + ldr w2, [x3, x0] + orr w1, w2, w1 + str w1, [x3, x0] +.L1275: + sub w27, w27, #1 + and w27, w27, 65535 + b .L1274 +.L1280: + sub w26, w26, #1 + and w26, w26, 65535 + b .L1279 +.L1255: + add w19, w19, 1 + and w19, w19, 255 + b .L1254 .size FlashMakeFactorBbt, .-FlashMakeFactorBbt .align 2 .global Ftl_log2 @@ -8155,16 +8013,16 @@ FlashMakeFactorBbt: Ftl_log2: mov w2, 1 mov w1, 0 -.L1337: +.L1304: cmp w2, w0 - bhi .L1339 - add w1, w1, 1 - lsl w2, w2, 1 - uxth w1, w1 - b .L1337 -.L1339: + bls .L1305 sub w0, w1, #1 ret +.L1305: + add w1, w1, 1 + lsl w2, w2, 1 + and w1, w1, 65535 + b .L1304 .size Ftl_log2, .-Ftl_log2 .align 2 .global FtlPrintInfo @@ -8176,246 +8034,242 @@ FtlPrintInfo: .global FtlSysBlkNumInit .type FtlSysBlkNumInit, %function FtlSysBlkNumInit: - uxth w0, w0 + and w0, w0, 65535 mov w1, 24 - cmp w0, 23 - csel w0, w0, w1, hi + cmp w0, 24 + csel w0, w0, w1, cs adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 - ldrh w2, [x1,2276] - ldrh w3, [x1,2286] - str w0, [x1,2272] - mul w2, w0, w2 + and w0, w0, 65535 + ldrh w2, [x1, 2276] + ldrh w3, [x1, 2286] + str w0, [x1, 2272] + mul w2, w2, w0 sub w0, w3, w0 - strh w0, [x1,2284] - ldr w0, [x1,2292] - str w2, [x1,2280] + strh w0, [x1, 2284] + ldr w0, [x1, 2292] + str w2, [x1, 2280] sub w2, w0, w2 mov w0, 0 - str w2, [x1,2288] + str w2, [x1, 2288] ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 .global FtlConstantsInit .type FtlConstantsInit, %function FtlConstantsInit: - stp x29, x30, [sp, -96]! - mov x3, 0 + mov x7, x0 + stp x29, x30, [sp, -16]! + adrp x5, .LANCHOR2 + add x1, x5, :lo12:.LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - adrp x20, .LANCHOR2 - mov x23, x0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - str x27, [sp,80] - add x1, x20, :lo12:.LANCHOR2 - ldrh w4, [x23,14] - ldrh w6, [x0,8] - ldrh w2, [x0,10] - ldrh w0, [x0,12] - strh w6, [x1,2296] - strh w2, [x1,2298] - strh w0, [x1,2300] - strh w4, [x1,2286] -.L1344: - add x5, x1, 2304 - strb w3, [x3,x5] + ldrh w9, [x0, 8] + add x1, x1, 2304 + ldrh w2, [x0, 10] + mov x3, 0 + ldrh w0, [x0, 12] + ldrh w4, [x7, 14] + strh w9, [x1, -8] + strh w2, [x1, -6] + strh w0, [x1, -4] + strh w4, [x1, -18] +.L1309: + strb w3, [x3, x1] add x3, x3, 1 cmp x3, 32 - bne .L1344 - ldrh w3, [x23,20] - ldrb w1, [x23,15] + bne .L1309 + ldrh w3, [x7, 20] + ldrb w1, [x7, 15] cmp w3, w1 - bcs .L1345 - uxtb w8, w0 + bcs .L1310 + and w11, w0, 255 + add x8, x5, :lo12:.LANCHOR2 + mul w13, w0, w2 + ubfiz w12, w11, 1, 7 + add x8, x8, 2304 mov w3, 0 - mul w11, w0, w2 - ubfiz w10, w8, 1, 7 - add x12, x20, :lo12:.LANCHOR2 -.L1346: +.L1311: cmp w3, w0 - bcs .L1348 - uxtb w1, w3 - mov w5, w3 - mov w7, 0 -.L1349: - cmp w7, w2 - bcs .L1371 - add x9, x12, 2304 - add w13, w5, w11 - add w14, w1, w8 - add w7, w7, 1 - strb w1, [x9,w5,uxtw] - add w1, w1, w10 - strb w14, [x9,x13] - add w5, w5, w0 - uxtb w1, w1 - b .L1349 -.L1371: + bcs .L1313 + and w1, w3, 255 + mov w6, w3 + mov w10, 0 + b .L1314 +.L1312: + add w14, w13, w6 + strb w1, [x8, w6, uxtw] + add w15, w11, w1 + add w1, w12, w1 + add w10, w10, 1 + and w1, w1, 255 + add w6, w6, w0 + strb w15, [x8, x14] +.L1314: + cmp w10, w2 + bcc .L1312 add w3, w3, 1 - b .L1346 -.L1348: - add x1, x20, :lo12:.LANCHOR2 - lsl w2, w2, 1 + b .L1311 +.L1313: + add x1, x5, :lo12:.LANCHOR2 + ubfiz w2, w2, 1, 15 lsr w4, w4, 1 - strh w2, [x1,2298] - strh w4, [x1,2286] -.L1345: - add x1, x20, :lo12:.LANCHOR2 + strh w2, [x1, 2298] + strh w4, [x1, 2286] +.L1310: + add x1, x5, :lo12:.LANCHOR2 mov w2, 5 - cmp w6, 1 - strh w2, [x1,2336] - strh wzr, [x1,2338] - bne .L1350 - strh w6, [x1,2336] -.L1350: - add x1, x20, :lo12:.LANCHOR2 + cmp w9, 1 + strh w2, [x1, 2336] + strh wzr, [x1, 2338] + bne .L1315 + strh w9, [x1, 2336] +.L1315: + add x1, x5, :lo12:.LANCHOR2 mov w2, 4352 - strh w2, [x1,2340] + strh w2, [x1, 2340] adrp x2, .LANCHOR0+88 - ldrb w26, [x2,#:lo12:.LANCHOR0+88] - cbz w26, .L1351 + ldrb w11, [x2, #:lo12:.LANCHOR0+88] + cbz w11, .L1316 mov w2, 384 - strh w2, [x1,2340] -.L1351: - add x21, x20, :lo12:.LANCHOR2 - ldrh w25, [x23,16] - ldrh w24, [x23,20] - ldrh w27, [x23,18] - ldrh w22, [x21,2298] - ldrh w19, [x21,2286] - strh w25, [x21,2344] - mul w22, w0, w22 - mul w0, w19, w0 - strh w0, [x21,2342] - uxth w22, w22 - strh w27, [x21,2346] - strh w22, [x21,2276] - mul w0, w22, w25 - strh w0, [x21,2348] - mov w0, w24 - strh w24, [x21,2350] + strh w2, [x1, 2340] +.L1316: + add x4, x5, :lo12:.LANCHOR2 + ldrh w10, [x7, 16] + ldrh w8, [x7, 20] + ldrh w9, [x7, 18] + ldrh w6, [x4, 2298] + ldrh w3, [x4, 2286] + strh w10, [x4, 2344] + strh w9, [x4, 2346] + mul w6, w0, w6 + strh w8, [x4, 2350] + mul w0, w0, w3 + and w6, w6, 65535 + strh w0, [x4, 2342] + strh w6, [x4, 2276] + mul w0, w6, w10 + strh w0, [x4, 2348] + mov w0, w8 bl Ftl_log2 - uxth w3, w0 - lsl w2, w24, 9 - strh w0, [x21,2352] - ldrh w0, [x23,26] - cmp w19, 1024 - strh w2, [x21,2354] - ubfx x2, x2, 9, 7 - strh w0, [x21,2358] - lsl w2, w2, 1 - mul w0, w22, w19 - strh w2, [x21,2356] - str w0, [x21,2292] - bls .L1352 - and w0, w19, 255 - strh w0, [x21,2338] -.L1352: - add x2, x20, :lo12:.LANCHOR2 - mul w0, w24, w27 - ldrh w1, [x2,2338] - sub w1, w19, w1 - mul w1, w22, w1 - mul w1, w1, w24 - mul w1, w1, w25 - asr w1, w1, 11 - str w1, [x2,2360] - ldrh w1, [x2,2340] - lsl w1, w1, 3 - sdiv w0, w1, w0 - uxth w0, w0 + and w2, w0, 65535 + strh w0, [x4, 2352] + ubfiz w0, w8, 9, 7 + strh w0, [x4, 2354] + ubfx w0, w0, 8, 8 + strh w0, [x4, 2356] + cmp w3, 1024 + ldrh w0, [x7, 26] + strh w0, [x4, 2358] + mul w0, w6, w3 + str w0, [x4, 2292] + bls .L1317 + and w0, w3, 255 + strh w0, [x4, 2338] +.L1317: + add x1, x5, :lo12:.LANCHOR2 + ldrh w0, [x1, 2338] + sub w0, w3, w0 + mul w0, w0, w6 + mul w0, w0, w8 + mul w8, w9, w8 + mul w0, w0, w10 + asr w0, w0, 11 + str w0, [x1, 2360] + ldrh w0, [x1, 2340] + lsl w0, w0, 3 + sdiv w0, w0, w8 + and w0, w0, 65535 cmp w0, 4 - bhi .L1368 - mov w0, 4 -.L1368: - strh w0, [x2,2364] - cbz w26, .L1355 - add x0, x20, :lo12:.LANCHOR2 + bls .L1318 +.L1334: + strh w0, [x1, 2364] + cbz w11, .L1320 + add x0, x5, :lo12:.LANCHOR2 mov w1, 640 - strh w1, [x0,2340] -.L1355: - add x1, x20, :lo12:.LANCHOR2 - lsl w19, w19, 6 - cmp w22, 1 - ldrh w0, [x1,2340] - asr w0, w0, w3 - add w3, w3, 9 - asr w19, w19, w3 - strh w19, [x1,2368] - and w19, w19, 65535 + strh w1, [x0, 2340] +.L1320: + add x1, x5, :lo12:.LANCHOR2 + lsl w3, w3, 6 + cmp w6, 1 + ldrh w0, [x1, 2340] + asr w0, w0, w2 + add w2, w2, 9 add w0, w0, 2 - strh w0, [x1,2366] - mul w0, w19, w22 - str w0, [x1,2372] - add w19, w19, 8 - ldrh w0, [x1,2364] - udiv w0, w0, w22 - add w19, w19, w0 - bne .L1369 - add w19, w19, 4 -.L1369: - str w19, [x1,2272] - add x19, x20, :lo12:.LANCHOR2 - ldrh w0, [x19,2272] + strh w0, [x1, 2366] + asr w3, w3, w2 + strh w3, [x1, 2368] + and w3, w3, 65535 + mul w0, w6, w3 + add w3, w3, 8 + str w0, [x1, 2372] + ldrh w0, [x1, 2364] + udiv w0, w0, w6 + add w3, w0, w3 + beq .L1321 +.L1335: + add x4, x5, :lo12:.LANCHOR2 + str w3, [x1, 2272] + ldrh w0, [x4, 2272] bl FtlSysBlkNumInit - str wzr, [x19,1224] - ldr w0, [x19,2272] - str w0, [x19,2376] - ldr w0, [x19,2288] - ldrh w1, [x19,2344] + ldr w0, [x4, 2272] + str w0, [x4, 2376] + ldr w0, [x4, 2288] + ldrh w1, [x4, 2344] + ldrh w3, [x4, 2350] lsl w0, w0, 2 - ldrh w3, [x19,2350] - ldrh w2, [x19,2364] - mul w1, w0, w1 - ldrh w0, [x19,2352] - ldrb w5, [x19,1220] - add w0, w0, 9 - lsr w0, w1, w0 + ldrh w2, [x4, 2364] + ldrb w7, [x4, 1220] + str wzr, [x4, 1224] + mul w0, w0, w1 + ldrh w1, [x4, 2352] + add w1, w1, 9 + lsr w0, w0, w1 mov w1, 2048 add w0, w0, 2 sdiv w1, w1, w3 - strh w1, [x19,2382] - uxth w0, w0 - strh w0, [x19,2380] + and w0, w0, 65535 + strh w0, [x4, 2380] + strh w1, [x4, 2382] add w1, w2, 3 - strh w1, [x19,2364] - ldr w1, [x19,2372] - add w4, w1, 3 - str w4, [x19,2372] - cbz w5, .L1358 - add w2, w2, 4 + strh w1, [x4, 2364] + ldr w1, [x4, 2372] + add w6, w1, 3 + str w6, [x4, 2372] + cbz w7, .L1323 add w1, w1, 5 - strh w2, [x19,2364] - b .L1370 -.L1358: - cmp w4, 7 - bhi .L1359 - mov w1, 8 -.L1370: - str w1, [x19,2372] -.L1359: - add x20, x20, :lo12:.LANCHOR2 - ldrh w1, [x20,2284] - strh wzr, [x20,2384] - lsr w2, w1, 3 - add w1, w2, w1, lsl 1 - add w1, w1, 52 - add w0, w1, w0, lsl 2 + add w2, w2, 4 + strh w2, [x4, 2364] +.L1336: + str w1, [x4, 2372] +.L1324: + add x5, x5, :lo12:.LANCHOR2 + ldrh w1, [x5, 2284] + strh wzr, [x5, 2384] + lsl w2, w1, 1 + lsr w1, w1, 3 + add w2, w2, 48 + add w1, w1, 4 + add w0, w2, w0, lsl 2 + add w0, w0, w1 cmp w0, w3, lsl 9 - bcs .L1360 + bcs .L1325 mov w0, 1 - strh w0, [x20,2384] -.L1360: + strh w0, [x5, 2384] +.L1325: mov w0, 0 - 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 + ldp x29, x30, [sp], 16 ret +.L1318: + mov w0, 4 + b .L1334 +.L1321: + add w3, w3, 4 + b .L1335 +.L1323: + cmp w6, 7 + bhi .L1324 + mov w1, 8 + b .L1336 .size FtlConstantsInit, .-FtlConstantsInit .align 2 .global FtlMemInit @@ -8423,373 +8277,372 @@ FtlConstantsInit: FtlMemInit: stp x29, x30, [sp, -64]! mov w1, 65535 + mov w2, 1024 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - str x23, [sp,48] add x0, x20, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - str w1, [x0,2456] + stp x21, x22, [sp, 32] + add x3, x0, 2304 + str x23, [sp, 48] + add x4, x0, 2304 + add x5, x0, 2304 + strh wzr, [x0, 2386] + add x6, x0, 2304 + stp wzr, wzr, [x3, 84] + add x7, x0, 2304 + stp wzr, wzr, [x3, 92] + stp wzr, wzr, [x4, 100] + stp wzr, wzr, [x4, 108] + stp wzr, wzr, [x5, 116] + stp wzr, wzr, [x5, 124] + stp wzr, wzr, [x6, 132] + stp wzr, wzr, [x6, 140] + stp wzr, w1, [x7, 148] mov w1, -1 - strh wzr, [x0,2386] - strh w1, [x0,2472] - strh w1, [x0,2474] - strh w1, [x0,2476] - str wzr, [x0,2388] - str wzr, [x0,2392] - str wzr, [x0,2396] - str wzr, [x0,2400] - str wzr, [x0,2404] - str wzr, [x0,2408] - str wzr, [x0,2412] - str wzr, [x0,2416] - str wzr, [x0,2420] - str wzr, [x0,2424] - str wzr, [x0,2428] - str wzr, [x0,2432] - str wzr, [x0,2436] - str wzr, [x0,2440] - str wzr, [x0,2444] - str wzr, [x0,2448] - str wzr, [x0,2452] - str wzr, [x0,2460] - str wzr, [x0,2464] - str wzr, [x0,2468] - strh w1, [x0,2478] + stp wzr, wzr, [x7, 156] + strh w1, [x0, 2472] + strh w1, [x0, 2474] + str wzr, [x0, 2468] + strh w1, [x0, 2476] + strh w1, [x0, 2478] mov w1, 32 - ldrh w2, [x0,2350] - strh w1, [x0,2480] + strh w1, [x0, 2480] mov w1, 128 - strh w1, [x0,2482] - mov w1, 1024 - strh wzr, [x0,2484] - sdiv w2, w1, w2 - ldrh w1, [x0,2276] - strh wzr, [x0,2486] + strh w1, [x0, 2482] + ldrh w1, [x0, 2350] + strh wzr, [x0, 2484] + strh wzr, [x0, 2486] + strh wzr, [x0, 2488] + sdiv w2, w2, w1 + ldrh w1, [x0, 2276] + strh wzr, [x0, 2490] lsl w1, w1, 2 - strh wzr, [x0,2488] - strh wzr, [x0,2490] + str w2, [x0, 2492] cmp w2, w1 - str w2, [x0,2492] - bls .L1373 - str w1, [x0,2492] -.L1373: + bls .L1338 + str w1, [x0, 2492] +.L1338: add x19, x20, :lo12:.LANCHOR2 mov w22, 56 - ldrh w0, [x19,2348] - str wzr, [x19,2496] + ldrh w0, [x19, 2348] + str wzr, [x19, 2496] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,2504] - ldrh w1, [x19,2348] + ldrh w1, [x19, 2348] + str x0, [x19, 2504] mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19,2276] - str x0, [x19,2512] + ldrh w21, [x19, 2276] + str x0, [x19, 2512] mul w21, w21, w22 lsl w23, w21, 3 mov w0, w23 bl ftl_malloc - str x0, [x19,2520] + str x0, [x19, 2520] mov w0, w21 bl ftl_malloc - str x0, [x19,2528] + str x0, [x19, 2528] mov w0, w23 bl ftl_malloc - str x0, [x19,2536] + str x0, [x19, 2536] mov w0, w21 bl ftl_malloc - str x0, [x19,2544] + str x0, [x19, 2544] mov w0, w21 bl ftl_malloc - str x0, [x19,2552] - ldr w0, [x19,2492] + str x0, [x19, 2552] + ldr w0, [x19, 2492] mul w0, w0, w22 bl ftl_malloc - str x0, [x19,2560] - ldrh w0, [x19,2276] - ldrh w21, [x19,2354] + str x0, [x19, 2560] + ldrh w0, [x19, 2276] + ldrh w21, [x19, 2354] lsl w0, w0, 1 add w0, w0, 1 - str w0, [x19,2568] + str w0, [x19, 2568] mov w0, w21 bl ftl_malloc - str x0, [x19,2576] + str x0, [x19, 2576] mov w0, w21 bl ftl_malloc - str x0, [x19,2584] + str x0, [x19, 2584] mov w0, w21 bl ftl_malloc - str x0, [x19,2592] - ldr w0, [x19,2568] + str x0, [x19, 2592] + ldr w0, [x19, 2568] mul w0, w21, w0 bl ftl_malloc - str x0, [x19,2600] - ldr w0, [x19,2492] + str x0, [x19, 2600] + ldr w0, [x19, 2492] mul w0, w21, w0 bl ftl_malloc - str x0, [x19,2608] + str x0, [x19, 2608] mov w0, w21 bl ftl_malloc - str x0, [x19,2616] + str x0, [x19, 2616] mov w0, w21 bl ftl_malloc - str x0, [x19,2624] - ldr w1, [x19,2568] + str x0, [x19, 2624] + ldr w1, [x19, 2568] mov w0, 24 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19,2276] - str x0, [x19,2632] - ldrh w0, [x19,2356] - mul w21, w0, w21 + ldrh w21, [x19, 2356] + str x0, [x19, 2632] + ldrh w0, [x19, 2276] + mul w21, w21, w0 mov w0, w21 bl ftl_malloc - str x0, [x19,2640] + str x0, [x19, 2640] lsl w0, w21, 3 bl ftl_malloc - str x0, [x19,2648] - ldrh w1, [x19,2356] - ldr w0, [x19,2568] + str x0, [x19, 2648] + ldrh w1, [x19, 2356] + ldr w0, [x19, 2568] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,2656] - ldrh w1, [x19,2356] - ldr w0, [x19,2492] + str x0, [x19, 2656] + ldrh w1, [x19, 2356] + ldr w0, [x19, 2492] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,2664] - ldrh w0, [x19,2286] - lsl w0, w0, 1 - strh w0, [x19,2672] + str x0, [x19, 2664] + ldrh w0, [x19, 2286] + ubfiz w0, w0, 1, 15 + strh w0, [x19, 2672] and w0, w0, 65534 bl ftl_malloc - str x0, [x19,2680] - ldrh w0, [x19,2672] + str x0, [x19, 2680] + ldrh w0, [x19, 2672] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19,2672] + strh w0, [x19, 2672] lsl w0, w0, 9 bl ftl_malloc - ldrh w21, [x19,2286] - str x0, [x19,2688] + ldrh w21, [x19, 2286] + str x0, [x19, 2688] add x0, x0, 32 - lsl w21, w21, 1 - str x0, [x19,2696] - mov w0, w21 - bl ftl_malloc - str x0, [x19,2704] - mov w0, w21 - bl ftl_malloc - ldr w21, [x19,2372] - str x0, [x19,2712] + str x0, [x19, 2696] lsl w21, w21, 1 mov w0, w21 bl ftl_malloc - str x0, [x19,2720] + str x0, [x19, 2704] mov w0, w21 bl ftl_malloc - str x0, [x19,2728] - ldrh w0, [x19,2286] + ldr w21, [x19, 2372] + str x0, [x19, 2712] + lsl w21, w21, 1 + mov w0, w21 + bl ftl_malloc + str x0, [x19, 2720] + mov w0, w21 + bl ftl_malloc + str x0, [x19, 2728] + ldrh w0, [x19, 2286] lsr w0, w0, 3 add w0, w0, 4 bl ftl_malloc - adrp x1, .LANCHOR0+16 - str x0, [x1,#:lo12:.LANCHOR0+16] - ldrh w0, [x19,2364] + adrp x1, .LANCHOR0+80 + str x0, [x1, #:lo12:.LANCHOR0+80] + ldrh w0, [x19, 2364] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,2736] - ldrh w0, [x19,2364] + str x0, [x19, 2736] + ldrh w0, [x19, 2364] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19,2744] - ldrh w0, [x19,2364] + str x0, [x19, 2744] + ldrh w0, [x19, 2364] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,2752] - ldrh w0, [x19,2366] + str x0, [x19, 2752] + ldrh w0, [x19, 2366] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,2760] - ldrh w2, [x19,2366] + ldrh w2, [x19, 2366] mov w1, 0 + str x0, [x19, 2760] lsl w2, w2, 2 bl ftl_memset - ldrh w21, [x19,2380] + ldrh w21, [x19, 2380] lsl w21, w21, 2 mov w0, w21 bl ftl_malloc - str x0, [x19,2768] + str x0, [x19, 2768] mov w0, w21 bl ftl_malloc - str x0, [x19,2776] - ldr w0, [x19,2372] + str x0, [x19, 2776] + ldr w0, [x19, 2372] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,2784] - ldrh w0, [x19,2382] + str x0, [x19, 2784] + ldrh w0, [x19, 2382] lsl w0, w0, 4 bl ftl_malloc - str x0, [x19,2792] - ldrh w1, [x19,2382] - ldrh w0, [x19,2354] + ldrh w1, [x19, 2382] + str x0, [x19, 2792] + ldrh w0, [x19, 2354] mul w0, w1, w0 bl ftl_malloc - str x0, [x19,2800] - ldrh w1, [x19,2286] + str x0, [x19, 2800] + ldrh w1, [x19, 2286] mov w0, 6 mul w0, w1, w0 bl ftl_malloc - str x0, [x19,2808] - ldrh w0, [x19,2342] - ldrh w1, [x19,2298] + str x0, [x19, 2808] + ldrh w0, [x19, 2342] + ldrh w1, [x19, 2298] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x19,2816] - mul w0, w0, w1 + strh w0, [x19, 2816] + mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc - str x0, [x19,2856] - add x1, x19, 2824 - ldrh w4, [x19,2816] - ldrh w5, [x19,2298] - mov w0, 1 - mov w2, w4 -.L1374: + ldrh w3, [x19, 2816] + add x4, x19, 2864 + ldrh w5, [x19, 2298] + mov w1, w3 + str x0, [x19, 2856] + mov x0, 1 +.L1339: cmp w0, w5 - add x1, x1, 8 - bcs .L1474 - ldr x3, [x19,2856] - add w0, w0, 1 - add x3, x3, w2, uxtw 2 - add w2, w2, w4 - str x3, [x1,32] - b .L1374 -.L1474: - add x1, x20, :lo12:.LANCHOR2 -.L1376: - cmp w0, 8 - beq .L1475 - add x2, x1, w0, uxtw 3 - add w0, w0, 1 - str xzr, [x2,2856] - b .L1376 -.L1475: + bcc .L1340 + mov w1, 8 + add x3, x20, :lo12:.LANCHOR2 + sub w1, w1, w0 + add x3, x3, 2824 + add x1, x1, 1 + mov x2, 0 +.L1341: + add x2, x2, 1 + cmp x2, x1 + bne .L1342 add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,2720] - cbnz x1, .L1378 -.L1380: + ldr x1, [x0, 2720] + cbnz x1, .L1343 +.L1345: adrp x1, .LANCHOR3 - adrp x0, .LC31 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC31 add x1, x1, 136 + adrp x0, .LC31 + add x0, x0, :lo12:.LC31 bl printk mov w0, -1 - b .L1379 -.L1378: - ldr x1, [x0,2728] - cbz x1, .L1380 - ldr x1, [x0,2768] - cbz x1, .L1380 - ldr x1, [x0,2784] - cbz x1, .L1380 - ldr x1, [x0,2792] - cbz x1, .L1380 - ldr x1, [x0,2800] - cbz x1, .L1380 - ldr x1, [x0,2808] - cbz x1, .L1380 - ldr x1, [x0,2856] - cbz x1, .L1380 - ldr x0, [x0,2712] - cbz x0, .L1380 - add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,2504] - cbz x1, .L1380 - ldr x1, [x0,2512] - cbz x1, .L1380 - ldr x1, [x0,2520] - cbz x1, .L1380 - ldr x1, [x0,2536] - cbz x1, .L1380 - ldr x1, [x0,2544] - cbz x1, .L1380 - ldr x1, [x0,2552] - cbz x1, .L1380 - ldr x1, [x0,2528] - cbz x1, .L1380 - ldr x1, [x0,2576] - cbz x1, .L1380 - ldr x1, [x0,2584] - cbz x1, .L1380 - ldr x0, [x0,2592] - cbz x0, .L1380 - add x0, x20, :lo12:.LANCHOR2 - ldr x1, [x0,2600] - cbz x1, .L1380 - ldr x1, [x0,2616] - cbz x1, .L1380 - ldr x1, [x0,2624] - cbz x1, .L1380 - ldr x1, [x0,2632] - cbz x1, .L1380 - ldr x1, [x0,2640] - cbz x1, .L1380 - ldr x1, [x0,2648] - cbz x1, .L1380 - ldr x1, [x0,2656] - cbz x1, .L1380 - ldr x1, [x0,2696] - cbz x1, .L1380 - ldr x1, [x0,2680] - cbz x1, .L1380 - ldr x0, [x0,2736] - cbz x0, .L1380 - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldr x1, [x0,2744] - cbz x1, .L1380 - ldr x1, [x0,2752] - cbz x1, .L1380 - ldr x0, [x0,2760] - cbz x0, .L1380 - mov w0, 0 -.L1379: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] +.L1337: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret +.L1340: + ldr x2, [x19, 2856] + add w0, w0, 1 + add x2, x2, w1, uxtw 2 + add w1, w1, w3 + str x2, [x4], 8 + b .L1339 +.L1342: + add x4, x0, x2 + add x4, x3, x4, lsl 3 + str xzr, [x4, 24] + b .L1341 +.L1343: + ldr x1, [x0, 2728] + cbz x1, .L1345 + ldr x1, [x0, 2768] + cbz x1, .L1345 + ldr x1, [x0, 2784] + cbz x1, .L1345 + ldr x1, [x0, 2792] + cbz x1, .L1345 + ldr x1, [x0, 2800] + cbz x1, .L1345 + ldr x1, [x0, 2808] + cbz x1, .L1345 + ldr x1, [x0, 2856] + cbz x1, .L1345 + ldr x0, [x0, 2712] + cbz x0, .L1345 + add x0, x20, :lo12:.LANCHOR2 + ldr x1, [x0, 2504] + cbz x1, .L1345 + ldr x1, [x0, 2512] + cbz x1, .L1345 + ldr x1, [x0, 2520] + cbz x1, .L1345 + ldr x1, [x0, 2536] + cbz x1, .L1345 + ldr x1, [x0, 2544] + cbz x1, .L1345 + ldr x1, [x0, 2552] + cbz x1, .L1345 + ldr x1, [x0, 2528] + cbz x1, .L1345 + ldr x1, [x0, 2576] + cbz x1, .L1345 + ldr x1, [x0, 2584] + cbz x1, .L1345 + ldr x0, [x0, 2592] + cbz x0, .L1345 + add x0, x20, :lo12:.LANCHOR2 + ldr x1, [x0, 2600] + cbz x1, .L1345 + ldr x1, [x0, 2616] + cbz x1, .L1345 + ldr x1, [x0, 2624] + cbz x1, .L1345 + ldr x1, [x0, 2632] + cbz x1, .L1345 + ldr x1, [x0, 2640] + cbz x1, .L1345 + ldr x1, [x0, 2648] + cbz x1, .L1345 + ldr x1, [x0, 2656] + cbz x1, .L1345 + ldr x1, [x0, 2696] + cbz x1, .L1345 + ldr x1, [x0, 2680] + cbz x1, .L1345 + ldr x0, [x0, 2736] + cbz x0, .L1345 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr x1, [x0, 2744] + cbz x1, .L1345 + ldr x1, [x0, 2752] + cbz x1, .L1345 + ldr x0, [x0, 2760] + cbz x0, .L1345 + mov w0, 0 + b .L1337 .size FtlMemInit, .-FtlMemInit .align 2 .global IsBlkInVendorPart .type IsBlkInVendorPart, %function IsBlkInVendorPart: adrp x1, .LANCHOR2 - uxth w4, w0 add x1, x1, :lo12:.LANCHOR2 - mov w0, 0 - ldrh w2, [x1,2920] - cbz w2, .L1477 - ldrh w2, [x1,2364] - ldr x3, [x1,2736] + and w0, w0, 65535 + ldrh w2, [x1, 2920] + cbz w2, .L1444 + ldrh w2, [x1, 2364] + ldr x3, [x1, 2736] mov x1, 0 -.L1478: +.L1442: cmp w2, w1, uxth - bls .L1483 - add x1, x1, 1 - add x0, x3, x1, lsl 1 - ldrh w0, [x0,-2] - cmp w0, w4 - bne .L1478 - mov w0, 1 - b .L1477 -.L1483: + bhi .L1443 +.L1444: mov w0, 0 -.L1477: + ret +.L1443: + add x1, x1, 1 + add x4, x3, x1, lsl 1 + ldrh w4, [x4, -2] + cmp w4, w0 + bne .L1442 + mov w0, 1 ret .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 @@ -8797,29 +8650,33 @@ IsBlkInVendorPart: .type FtlCacheMetchLpa, %function FtlCacheMetchLpa: adrp x2, .LANCHOR2 - mov w6, w0 add x2, x2, :lo12:.LANCHOR2 + ldr w4, [x2, 2496] + cbz w4, .L1451 + mov x5, 24 + mov w6, 56 + ldr x2, [x2, 2560] + nop // between mem op and mult-accumulate + umaddl x4, w4, w6, x5 + add x3, x2, 24 + add x2, x2, x4 +.L1448: + cmp x3, x2 + bne .L1450 +.L1451: mov w0, 0 - ldr w3, [x2,2496] - cbz w3, .L1485 - ldr x5, [x2,2560] - mov x0, 56 - mov x2, 0 -.L1486: - cmp w3, w2 - bls .L1495 - madd x4, x2, x0, x5 - add x2, x2, 1 - ldr w4, [x4,24] - cmp w4, w6 - bcc .L1486 + ret +.L1450: + ldr w4, [x3] + cmp w4, w0 + bcc .L1449 cmp w4, w1 - bhi .L1486 + bls .L1452 +.L1449: + add x3, x3, 56 + b .L1448 +.L1452: mov w0, 1 - b .L1485 -.L1495: - mov w0, 0 -.L1485: ret .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .align 2 @@ -8827,7 +8684,7 @@ FtlCacheMetchLpa: .type FtlGetCap, %function FtlGetCap: adrp x0, .LANCHOR2+1224 - ldr w0, [x0,#:lo12:.LANCHOR2+1224] + ldr w0, [x0, #:lo12:.LANCHOR2+1224] ret .size FtlGetCap, .-FtlGetCap .align 2 @@ -8835,7 +8692,7 @@ FtlGetCap: .type FtlGetCapacity, %function FtlGetCapacity: adrp x0, .LANCHOR2+1224 - ldr w0, [x0,#:lo12:.LANCHOR2+1224] + ldr w0, [x0, #:lo12:.LANCHOR2+1224] ret .size FtlGetCapacity, .-FtlGetCapacity .align 2 @@ -8843,7 +8700,7 @@ FtlGetCapacity: .type ftl_get_density, %function ftl_get_density: adrp x0, .LANCHOR2+1224 - ldr w0, [x0,#:lo12:.LANCHOR2+1224] + ldr w0, [x0, #:lo12:.LANCHOR2+1224] ret .size ftl_get_density, .-ftl_get_density .align 2 @@ -8851,7 +8708,7 @@ ftl_get_density: .type FtlGetLpn, %function FtlGetLpn: adrp x0, .LANCHOR2+2924 - ldr w0, [x0,#:lo12:.LANCHOR2+2924] + ldr w0, [x0, #:lo12:.LANCHOR2+2924] ret .size FtlGetLpn, .-FtlGetLpn .align 2 @@ -8859,33 +8716,34 @@ FtlGetLpn: .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: stp x29, x30, [sp, -32]! - uxth w1, w0 + and w1, w0, 65535 mov w4, 1 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - ldrh w3, [x19,2342] + ldrh w0, [x19, 2342] add x19, x19, 2824 - udiv w2, w1, w3 + udiv w3, w1, w0 + and w2, w3, 65535 + msub w3, w3, w0, w1 add x0, x19, w2, uxth 3 - ldr x0, [x0,32] - msub w3, w2, w3, w1 - uxth w3, w3 - ubfx x6, x3, 5, 11 + and w3, w3, 65535 + ldr x0, [x0, 32] + ubfx x5, x3, 5, 11 + lsl x5, x5, 2 lsl w4, w4, w3 - lsl x6, x6, 2 - ldr w5, [x0,x6] - orr w4, w4, w5 - str w4, [x0,x6] + ldr w6, [x0, x5] + orr w4, w4, w6 + str w4, [x0, x5] adrp x0, .LC32 add x0, x0, :lo12:.LC32 bl printk - ldrh w0, [x19,6] + ldrh w0, [x19, 6] add w0, w0, 1 - strh w0, [x19,6] + strh w0, [x19, 6] mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock @@ -8894,16 +8752,16 @@ FtlBbmMapBadBlock: .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: adrp x2, .LANCHOR2 - uxth w0, w0 add x3, x2, :lo12:.LANCHOR2 - ldrh w1, [x3,2342] + and w0, w0, 65535 + ldrh w1, [x3, 2342] udiv w2, w0, w1 msub w0, w2, w1, w0 add x2, x3, w2, uxth 3 - ldr x1, [x2,2856] - uxth w0, w0 + and w0, w0, 65535 + ldr x1, [x2, 2856] ubfx x3, x0, 5, 11 - ldr w1, [x1,x3,lsl 2] + ldr w1, [x1, x3, lsl 2] lsr w0, w1, w0 and w0, w0, 1 ret @@ -8920,39 +8778,39 @@ FtlBbtInfoPrint: FtlBbt2Bitmap: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x21, [sp,32] add x19, x19, :lo12:.LANCHOR2 - mov x21, x0 mov x20, x1 - mov x0, x1 + str x21, [sp, 32] mov w1, 0 - ldrh w2, [x19,2816] + mov x21, x0 + mov x0, x20 + ldrh w2, [x19, 2816] lsl w2, w2, 2 bl ftl_memset - mov x3, 0 - mov w0, 65535 - mov w5, 1 -.L1505: - ldrh w2, [x21,x3] - cmp w2, w0 - beq .L1503 - ubfx x4, x2, 5, 11 - lsl w2, w5, w2 - lsl x4, x4, 2 - add x3, x3, 2 - cmp x3, 1024 - ldr w1, [x20,x4] - orr w2, w1, w2 - str w2, [x20,x4] - ldrh w2, [x19,2830] - add w2, w2, 1 - strh w2, [x19,2830] - bne .L1505 -.L1503: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + mov x1, 0 + mov w5, 65535 + mov w4, 1 +.L1463: + ldrh w0, [x21, x1] + cmp w0, w5 + beq .L1461 + ubfx x2, x0, 5, 11 + lsl w0, w4, w0 + lsl x2, x2, 2 + add x1, x1, 2 + cmp x1, 1024 + ldr w3, [x20, x2] + orr w0, w3, w0 + str w0, [x20, x2] + ldrh w0, [x19, 2830] + add w0, w0, 1 + strh w0, [x19, 2830] + bne .L1463 +.L1461: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlBbt2Bitmap, .-FtlBbt2Bitmap @@ -8962,217 +8820,222 @@ FtlBbt2Bitmap: FtlBbmTblFlush: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - add x19, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w1, [x19,2928] - stp x25, x26, [sp,64] - cbnz w1, .L1510 - ldr x0, [x19,2576] - mov x22, 0 - ldr x3, [x19,2640] - add x21, x19, 2824 - ldrh w2, [x19,2354] - str x0, [x19,2944] - str x3, [x19,2952] + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR2 + add x19, x25, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldr w0, [x19, 2928] + cbnz w0, .L1469 + ldr x2, [x19, 2640] + mov w1, 0 + ldr x0, [x19, 2576] + add x21, x19, 2856 + str x2, [x19, 2952] + mov w20, 0 + ldrh w2, [x19, 2354] + str x0, [x19, 2944] bl ftl_memset -.L1511: - ldrh w1, [x19,2298] - mov w0, w22 - add x20, x19, 2936 - add x22, x22, 1 - cmp w0, w1 - bge .L1524 - add x1, x21, x22, lsl 3 - ldrh w2, [x19,2816] - ldr x3, [x20,8] - ldr x1, [x1,24] - mul w0, w0, w2 - add x0, x3, w0, sxtw 2 - lsl w2, w2, 2 - bl ftl_memcpy - b .L1511 -.L1524: - ldr x26, [x20,16] - mov w1, 255 +.L1470: + ldrh w0, [x19, 2298] + add x1, x19, 2936 + cmp w20, w0 + blt .L1471 + ldr x26, [x1, 16] mov w2, 16 - mov w22, 0 + mov w1, 255 + adrp x23, .LC33 mov x0, x26 - adrp x24, .LC33 - adrp x25, .LC34 - mov w23, w22 bl ftl_memset - add x24, x24, :lo12:.LC33 mov w0, -3887 + add x25, x25, :lo12:.LANCHOR2 strh w0, [x26] - add x25, x25, :lo12:.LC34 - ldr w0, [x21,8] - str w0, [x26,4] - ldrh w0, [x19,2824] - strh w0, [x26,2] - ldrh w0, [x21,4] - strh w0, [x26,8] - ldrh w0, [x21,6] - strh w0, [x26,10] - ldr w0, [x19,2272] - strh w0, [x26,12] -.L1513: - ldr x0, [x19,2576] - str x0, [x20,8] - ldrh w1, [x19,2824] - ldr x0, [x19,2640] - str x0, [x20,16] - ldrh w2, [x19,2826] - ldrh w3, [x19,2828] + add x0, x19, 2824 + add x23, x23, :lo12:.LC33 + mov w21, 0 + ldr w1, [x19, 2832] + mov w22, 0 + str w1, [x26, 4] + adrp x24, .LC34 + ldrh w1, [x19, 2824] + strh w1, [x26, 2] + ldrh w1, [x19, 2828] + strh w1, [x26, 8] + ldrh w1, [x19, 2830] + strh w1, [x26, 10] + ldr w1, [x19, 2272] + mov x19, x0 + strh w1, [x26, 12] +.L1472: + ldr x0, [x25, 2576] + str x0, [x25, 2944] + ldr x0, [x25, 2640] + str x0, [x25, 2952] + ldrh w1, [x19] + ldrh w2, [x19, 2] + ldrh w3, [x19, 4] + ldrh w4, [x26, 10] orr w0, w2, w1, lsl 10 - ldrh w4, [x26,10] - str w0, [x20,4] - mov x0, x24 - str wzr, [x20] + str wzr, [x25, 2936] + str w0, [x25, 2940] + mov x0, x23 bl printk - ldrh w1, [x19,2346] - ldrh w0, [x19,2826] - sub w1, w1, #1 - cmp w0, w1 - blt .L1514 - ldr w1, [x19,2832] - ldrh w0, [x19,2824] - add w1, w1, 1 - str w1, [x19,2832] - str w1, [x26,4] - strh w0, [x26,8] - ldrh w1, [x19,2828] - strh w0, [x19,2828] - ldr x0, [x19,2544] - strh w1, [x19,2824] - lsl w1, w1, 10 - str w1, [x20,4] - str w1, [x0,4] - mov w1, 1 - mov w2, w1 - strh wzr, [x19,2826] - ldr x0, [x19,2544] + ldrh w0, [x25, 2346] + ldrh w1, [x19, 2] + sub w0, w0, #1 + cmp w1, w0 + blt .L1473 + ldr w0, [x19, 8] + mov w2, 1 + ldrh w1, [x19] + add w0, w0, 1 + str w0, [x19, 8] + str w0, [x26, 4] + strh w1, [x26, 8] + ldrh w0, [x19, 4] + strh w1, [x19, 4] + ldr x1, [x25, 2544] + strh w0, [x19] + lsl w0, w0, 10 + str w0, [x25, 2940] + strh wzr, [x19, 2] + str w0, [x1, 4] + mov w1, w2 + ldr x0, [x25, 2544] bl FlashEraseBlocks -.L1514: - mov w1, 1 +.L1473: + add x20, x25, 2936 + mov w3, 1 mov x0, x20 - mov w2, w1 - mov w3, w1 + mov w2, w3 + mov w1, w3 bl FlashProgPages - ldrh w1, [x19,2826] - ldr w0, [x20] - add w1, w1, 1 - strh w1, [x19,2826] + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + ldr w0, [x25, 2936] cmn w0, #1 - bne .L1515 - ldr w1, [x20,4] - mov x0, x25 - add w22, w22, 1 + bne .L1474 + ldr w1, [x25, 2940] + add w21, w21, 1 + add x0, x24, :lo12:.LC34 + and w21, w21, 65535 bl printk - uxth w22, w22 - cmp w22, 3 - bls .L1513 + cmp w21, 3 + bls .L1472 + ldr w1, [x25, 2940] + mov w2, w21 adrp x0, .LC35 - ldr w1, [x20,4] add x0, x0, :lo12:.LC35 - mov w2, w22 bl printk mov w0, 1 - str w0, [x19,2928] - b .L1510 -.L1515: - add w23, w23, 1 - cmp w23, 1 - beq .L1513 - cmp w0, 256 - beq .L1513 -.L1510: + str w0, [x25, 2928] +.L1469: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [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 +.L1471: + ldrh w2, [x19, 2816] + ldr x0, [x1, 8] + ldr x1, [x21], 8 + mul w3, w2, w20 + lsl w2, w2, 2 + add w20, w20, 1 + add x0, x0, w3, sxtw 2 + bl ftl_memcpy + b .L1470 +.L1477: + mov w22, 1 + b .L1472 +.L1474: + add w22, w22, 1 + cmp w22, 1 + ble .L1477 + cmp w0, 256 + bne .L1469 + b .L1472 .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 .global FtlLoadFactoryBbt .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: stp x29, x30, [sp, -80]! - adrp x1, .LANCHOR2 - add x1, x1, :lo12:.LANCHOR2 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 add x29, sp, 0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - add x21, x1, 2936 - add x23, x1, 2824 - ldr x0, [x1,2576] - mov w22, 0 - ldr x24, [x1,2640] - mov x19, x1 - str x0, [x21,8] - mov w25, -1 - str x24, [x21,16] + stp x21, x22, [sp, 32] + add x22, x0, 2836 + stp x25, x26, [sp, 64] + mov w21, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x23, x24, [sp, 48] + add x23, x0, 2936 + mov x25, x23 mov w26, 61664 -.L1526: - ldrh w0, [x19,2298] - cmp w22, w0 - bcs .L1535 - ldrh w20, [x19,2342] - strh w25, [x23,12] -.L1528: - sub w20, w20, #1 - ldrh w0, [x19,2342] - uxth w20, w20 - sub w1, w0, #16 - cmp w20, w1 - ble .L1529 - madd w0, w22, w0, w20 - mov w1, 1 - lsl w0, w0, 10 - mov w2, w1 - str w0, [x21,4] - mov x0, x21 - bl FlashReadPages - ldr w0, [x21] - cmn w0, #1 - beq .L1528 - ldrh w0, [x24] - cmp w0, w26 - bne .L1528 - strh w20, [x23,12] -.L1529: - add w22, w22, 1 - add x23, x23, 2 - b .L1526 -.L1535: + ldr x1, [x0, 2576] + ldr x24, [x0, 2640] + stp x1, x24, [x23, 8] +.L1483: + ldrh w0, [x19, 2298] + cmp w21, w0 + bcc .L1488 mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [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 +.L1488: + ldrh w20, [x19, 2342] + mov w0, -1 + strh w0, [x22] +.L1485: + ldrh w0, [x19, 2342] + sub w20, w20, #1 + and w20, w20, 65535 + sub w1, w0, #16 + cmp w20, w1 + ble .L1486 + madd w0, w0, w21, w20 + mov w2, 1 + mov w1, w2 + lsl w0, w0, 10 + str w0, [x25, 4] + mov x0, x23 + bl FlashReadPages + ldr w0, [x25] + cmn w0, #1 + beq .L1485 + ldrh w0, [x24] + cmp w0, w26 + bne .L1485 + strh w20, [x22] +.L1486: + add w21, w21, 1 + add x22, x22, 2 + b .L1483 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 2 .global FtlBbtMemInit .type FtlBbtMemInit, %function FtlBbtMemInit: - adrp x0, .LANCHOR2 - mov w1, -1 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - mov w2, 16 + mov w1, -1 add x29, sp, 0 + mov w2, 16 add x0, x0, 2836 - strh w1, [x0,-12] + strh w1, [x0, -12] mov w1, 255 - strh wzr, [x0,-6] + strh wzr, [x0, -6] bl ftl_memset ldp x29, x30, [sp], 16 ret @@ -9181,34 +9044,33 @@ FtlBbtMemInit: .global FtlBbtCalcTotleCnt .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: - stp x29, x30, [sp, -48]! adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 + mov w4, 0 + mov w5, 0 + ldrh w6, [x0, 2342] + ldrh w0, [x0, 2298] + mul w6, w6, w0 + cmp w4, w6 + blt .L1505 + mov w0, w5 + ret +.L1505: + stp x29, x30, [sp, -16]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov w19, 0 - mov w20, w19 - ldrh w1, [x0,2342] - ldrh w21, [x0,2298] - mul w21, w1, w21 -.L1538: - cmp w20, w21 - bge .L1544 - mov w0, w20 +.L1498: + mov w0, w4 bl FtlBbmIsBadBlock - cbz w0, .L1539 - add w19, w19, 1 - uxth w19, w19 -.L1539: - add w20, w20, 1 - uxth w20, w20 - b .L1538 -.L1544: - mov w0, w19 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + cbz w0, .L1497 + add w5, w5, 1 + and w5, w5, 65535 +.L1497: + add w4, w4, 1 + and w4, w4, 65535 + cmp w4, w6 + blt .L1498 + mov w0, w5 + ldp x29, x30, [sp], 16 ret .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 2 @@ -9217,189 +9079,185 @@ FtlBbtCalcTotleCnt: FtlMakeBbt: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 add x20, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w24, [x20, 2928] + cbnz w24, .L1507 mov x21, x19 - ldr w22, [x20,2928] - cbnz w22, .L1546 - add x24, x20, 2824 + add x26, x20, 2856 + add x25, x20, 2836 mov x19, x20 - mov x25, x24 add x20, x20, 2936 mov w28, -3872 bl FtlBbtMemInit bl FtlLoadFactoryBbt -.L1547: - ldrh w0, [x19,2298] - cmp w22, w0 - bcs .L1565 - ldrh w4, [x25,12] - mov w1, 65535 - ldr x0, [x19,2576] - ldr x26, [x19,2640] - cmp w4, w1 - str x0, [x20,8] - str x26, [x20,16] - beq .L1548 - ldrh w0, [x19,2342] - mov w1, 1 - mov w2, w1 - madd w27, w22, w0, w4 - lsl w0, w27, 10 - str w0, [x20,4] - mov x0, x20 - bl FlashReadPages - ldrh w2, [x19,2342] - ldr x0, [x24,32] - add w2, w2, 7 - ldr x1, [x20,8] - lsr w2, w2, 3 - bl ftl_memcpy - b .L1549 -.L1548: - mov w1, w22 - bl FlashGetBadBlockList - ldr x0, [x20,8] - ldr x1, [x24,32] - bl FtlBbt2Bitmap - ldrh w23, [x19,2342] -.L1551: - sub w23, w23, #1 - uxth w23, w23 -.L1550: - ldrh w0, [x19,2342] - madd w0, w22, w0, w23 +.L1508: + ldrh w0, [x19, 2298] + cmp w24, w0 + bcc .L1514 + add x20, x21, :lo12:.LANCHOR2 + mov w19, 0 +.L1515: + ldrh w0, [x20, 2358] + cmp w0, w19 + bhi .L1516 + add x20, x20, 2824 + ldrh w19, [x20, 12] + mov w22, 65535 + sub w19, w19, #1 + and w19, w19, 65535 +.L1517: + ldrh w0, [x20, 12] + sub w0, w0, #48 + cmp w19, w0 + ble .L1521 + mov w0, w19 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L1551 - ldr x0, [x19,2640] - mov w1, 0 - mov w2, 16 - strh w23, [x25,12] - bl ftl_memset - strh w28, [x26] - str wzr, [x26,4] - ldrh w2, [x19,2816] - ldrh w0, [x25,12] - strh w0, [x26,2] - lsl w2, w2, 2 - ldrh w0, [x19,2342] - ldrh w4, [x25,12] - ldr x1, [x24,32] - madd w27, w22, w0, w4 - lsl w0, w27, 10 - str w0, [x20,4] - ldr x0, [x20,8] + beq .L1518 + mov w0, w19 + bl FlashTestBlk + cbz w0, .L1519 + mov w0, w19 + bl FtlBbmMapBadBlock +.L1518: + sub w19, w19, #1 + and w19, w19, 65535 + b .L1517 +.L1514: + ldr x0, [x19, 2576] + mov w2, 65535 + ldr x27, [x19, 2640] + ldrh w1, [x25] + stp x0, x27, [x20, 8] + cmp w1, w2 + beq .L1509 + ldrh w23, [x19, 2342] + mov w2, 1 + madd w23, w23, w24, w1 + mov w1, w2 + lsl w0, w23, 10 + str w0, [x20, 4] + mov x0, x20 + bl FlashReadPages + ldr x1, [x20, 8] + ldr x0, [x26] + ldrh w2, [x19, 2342] + add w2, w2, 7 + lsr w2, w2, 3 bl ftl_memcpy - mov w1, 1 +.L1510: + mov w0, w23 + add w24, w24, 1 + bl FtlBbmMapBadBlock + add x26, x26, 8 + add x25, x25, 2 + b .L1508 +.L1509: + mov w1, w24 + bl FlashGetBadBlockList + ldr x0, [x20, 8] + ldr x1, [x26] + bl FtlBbt2Bitmap + ldrh w22, [x19, 2342] +.L1512: + sub w22, w22, #1 + and w22, w22, 65535 +.L1511: + ldrh w0, [x19, 2342] + madd w0, w24, w0, w22 + bl FtlBbmIsBadBlock + cmp w0, 1 + beq .L1512 + ldr x0, [x19, 2640] + mov w2, 16 + strh w22, [x25] + mov w1, 0 + bl ftl_memset + strh w28, [x27] + str wzr, [x27, 4] + ldrh w23, [x19, 2342] + ldrh w0, [x25] + strh w0, [x27, 2] + ldrh w2, [x19, 2816] + ldrh w0, [x25] + ldr x1, [x26] + lsl w2, w2, 2 + madd w23, w23, w24, w0 + lsl w0, w23, 10 + str w0, [x20, 4] + ldr x0, [x20, 8] + bl ftl_memcpy + mov w2, 1 mov x0, x20 - mov w2, w1 + mov w1, w2 bl FlashEraseBlocks - mov w1, 1 + mov w3, 1 mov x0, x20 - mov w2, w1 - mov w3, w1 + mov w2, w3 + mov w1, w3 bl FlashProgPages ldr w0, [x20] cmn w0, #1 - bne .L1549 - mov w0, w27 + bne .L1510 + mov w0, w23 bl FtlBbmMapBadBlock - b .L1550 -.L1549: - mov w0, w27 - add w22, w22, 1 - add x24, x24, 8 - add x25, x25, 2 - bl FtlBbmMapBadBlock - b .L1547 -.L1565: - mov w19, 0 -.L1554: - add x20, x21, :lo12:.LANCHOR2 - ldrh w0, [x20,2358] - cmp w0, w19 - bls .L1566 + b .L1511 +.L1516: mov w0, w19 add w19, w19, 1 bl FtlBbmMapBadBlock - uxth w19, w19 - b .L1554 -.L1566: - ldrh w19, [x20,2836] - mov w23, 65535 - sub w19, w19, #1 - uxth w19, w19 -.L1556: - add x22, x20, 2824 - ldrh w0, [x22,12] - sub w0, w0, #48 - cmp w19, w0 - ble .L1560 - mov w0, w19 - bl FtlBbmIsBadBlock - cmp w0, 1 - beq .L1557 - mov w0, w19 - bl FlashTestBlk - cbz w0, .L1558 - mov w0, w19 - bl FtlBbmMapBadBlock - b .L1557 -.L1558: - ldrh w0, [x20,2824] - cmp w0, w23 - bne .L1559 - strh w19, [x20,2824] - b .L1557 -.L1559: - strh w19, [x22,4] - b .L1560 -.L1557: - sub w19, w19, #1 - uxth w19, w19 - b .L1556 -.L1560: - add x19, x21, :lo12:.LANCHOR2 + and w19, w19, 65535 + b .L1515 +.L1519: + ldrh w0, [x20] + cmp w0, w22 + bne .L1520 + strh w19, [x20] + b .L1518 +.L1520: + strh w19, [x20, 4] +.L1521: + add x21, x21, :lo12:.LANCHOR2 mov w2, 2 - ldr x1, [x19,2544] - ldrh w0, [x19,2824] - str wzr, [x19,2832] + ldr x1, [x21, 2544] + ldrh w0, [x21, 2824] + str wzr, [x21, 2832] + strh wzr, [x21, 2826] lsl w0, w0, 10 - str w0, [x1,4] - strh wzr, [x19,2826] - ldr x0, [x19,2544] - ldrh w1, [x19,2828] + str w0, [x1, 4] + ldr x0, [x21, 2544] + ldrh w1, [x21, 2828] lsl w1, w1, 10 - str w1, [x0,60] + str w1, [x0, 60] mov w1, 1 bl FlashEraseBlocks - ldrh w0, [x19,2824] + ldrh w0, [x21, 2824] bl FtlBbmMapBadBlock - ldrh w0, [x19,2828] + ldrh w0, [x21, 2828] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - strh wzr, [x19,2826] - ldr w0, [x19,2832] - ldrh w1, [x19,2828] + strh wzr, [x21, 2826] + ldr w0, [x21, 2832] + ldrh w1, [x21, 2828] add w0, w0, 1 - str w0, [x19,2832] - ldrh w0, [x19,2824] - strh w0, [x19,2828] - strh w1, [x19,2824] + str w0, [x21, 2832] + ldrh w0, [x21, 2824] + strh w0, [x21, 2828] + strh w1, [x21, 2824] bl FtlBbmTblFlush -.L1546: +.L1507: 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 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 FtlMakeBbt, .-FtlMakeBbt @@ -9407,16 +9265,16 @@ FtlMakeBbt: .global V2P_block .type V2P_block, %function V2P_block: - adrp x3, .LANCHOR2 - uxth w0, w0 - add x3, x3, :lo12:.LANCHOR2 - uxth w1, w1 - ldrh w4, [x3,2300] - udiv w2, w0, w4 - msub w0, w2, w4, w0 - madd w0, w1, w4, w0 - ldrh w1, [x3,2342] - madd w0, w2, w1, w0 + adrp x4, .LANCHOR2 + add x4, x4, :lo12:.LANCHOR2 + and w0, w0, 65535 + and w1, w1, 65535 + ldrh w2, [x4, 2300] + ldrh w4, [x4, 2342] + udiv w3, w0, w2 + msub w0, w3, w2, w0 + madd w2, w2, w1, w0 + madd w0, w3, w4, w2 ret .size V2P_block, .-V2P_block .align 2 @@ -9424,28 +9282,28 @@ V2P_block: .type P2V_plane, %function P2V_plane: adrp x2, .LANCHOR2 - uxth w0, w0 add x2, x2, :lo12:.LANCHOR2 - ldrh w1, [x2,2300] - ldrh w3, [x2,2342] - udiv w2, w0, w1 - udiv w3, w0, w3 - msub w0, w2, w1, w0 - madd w0, w1, w3, w0 + and w3, w0, 65535 + ldrh w1, [x2, 2300] + ldrh w2, [x2, 2342] + udiv w0, w3, w1 + udiv w2, w3, w2 + msub w0, w0, w1, w3 + madd w0, w1, w2, w0 ret .size P2V_plane, .-P2V_plane .align 2 .global P2V_block_in_plane .type P2V_block_in_plane, %function P2V_block_in_plane: - adrp x2, .LANCHOR2 - uxth w0, w0 - add x2, x2, :lo12:.LANCHOR2 - ldrh w3, [x2,2342] - udiv w1, w0, w3 - msub w0, w1, w3, w0 - ldrh w1, [x2,2300] - uxth w0, w0 + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + and w3, w0, 65535 + ldrh w2, [x1, 2342] + ldrh w1, [x1, 2300] + udiv w0, w3, w2 + msub w0, w0, w2, w3 + and w0, w0, 65535 udiv w0, w0, w1 ret .size P2V_block_in_plane, .-P2V_block_in_plane @@ -9455,91 +9313,88 @@ P2V_block_in_plane: ftl_cmp_data_ver: cmp w0, w1 mov w2, -2147483648 - bls .L1571 + bls .L1531 sub w1, w0, w1 cmp w1, w2 cset w0, ls - b .L1572 -.L1571: + ret +.L1531: sub w1, w1, w0 cmp w1, w2 cset w0, hi -.L1572: ret .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 .global FtlGetLastWrittenPage .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: - stp x29, x30, [sp, -208]! + stp x29, x30, [sp, -192]! cmp w1, 1 - adrp x3, .LANCHOR2 add x29, sp, 0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - str x25, [sp,64] + stp x23, x24, [sp, 48] mov w23, w1 - add x3, x3, :lo12:.LANCHOR2 - bne .L1574 - ldrh w19, [x3,2346] - b .L1575 -.L1574: - ldrh w19, [x3,2344] -.L1575: + stp x19, x20, [sp, 16] + adrp x1, .LANCHOR2 + stp x21, x22, [sp, 32] + add x1, x1, :lo12:.LANCHOR2 + bne .L1534 + ldrh w19, [x1, 2346] +.L1535: sub w19, w19, #1 lsl w21, w0, 10 - mov w1, 1 - mov w2, w23 sxth w19, w19 - str xzr, [x29,96] + add x1, x29, 128 orr w0, w19, w21 - str w0, [x29,92] - add x0, x29, 88 - add x24, x29, 144 - str x24, [x29,104] - bl FlashReadPages - ldr w0, [x29,144] - cmn w0, #1 - bne .L1576 - mov w22, 0 - mov w25, 2 -.L1577: - cmp w22, w19 - bgt .L1576 - add w3, w22, w19 - mov w1, 1 + stp xzr, x1, [x29, 80] + str w0, [x29, 76] mov w2, w23 - sdiv w20, w3, w25 + mov w1, 1 + add x0, x29, 72 + bl FlashReadPages + ldr w0, [x29, 128] + cmn w0, #1 + bne .L1536 + mov w22, 0 + mov w24, 2 +.L1537: + cmp w22, w19 + ble .L1540 +.L1536: + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 192 + ret +.L1534: + ldrh w19, [x1, 2344] + b .L1535 +.L1540: + add w20, w22, w19 + mov w2, w23 + mov w1, 1 + sdiv w20, w20, w24 sxth w0, w20 orr w0, w0, w21 - str w0, [x29,92] - add x0, x29, 88 + str w0, [x29, 76] + add x0, x29, 72 bl FlashReadPages - ldr w0, [x24] + ldr w0, [x29, 128] cmn w0, #1 - bne .L1578 - ldr w0, [x24,4] + bne .L1538 + ldr w0, [x29, 132] cmn w0, #1 - bne .L1578 - ldr w0, [x29,88] + bne .L1538 + ldr w0, [x29, 72] cmn w0, #1 - beq .L1578 + beq .L1538 sub w19, w20, #1 sxth w19, w19 - b .L1577 -.L1578: + b .L1537 +.L1538: add w20, w20, 1 sxth w22, w20 - b .L1577 -.L1576: - 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], 208 - ret + b .L1537 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 2 .global FtlLoadBbt @@ -9547,185 +9402,183 @@ FtlGetLastWrittenPage: FtlLoadBbt: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x23, x24, [sp,48] + stp x23, x24, [sp, 48] add x23, x19, :lo12:.LANCHOR2 - mov w24, 61649 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x21, x23, 2936 - ldr x0, [x23,2576] - ldr x22, [x23,2640] - str x0, [x21,8] - str x22, [x21,16] + mov w24, 61649 + ldr x0, [x23, 2576] + ldr x22, [x23, 2640] + stp x0, x22, [x21, 8] bl FtlBbtMemInit - ldrh w20, [x23,2342] + ldrh w20, [x23, 2342] sub w20, w20, #1 - uxth w20, w20 -.L1585: - ldrh w0, [x23,2342] + and w20, w20, 65535 +.L1546: + ldrh w0, [x23, 2342] sub w0, w0, #48 cmp w20, w0 - ble .L1588 + ble .L1549 lsl w0, w20, 10 - mov w1, 1 - str w0, [x21,4] - mov w2, w1 + mov w2, 1 + str w0, [x21, 4] + mov w1, w2 mov x0, x21 bl FlashReadPages ldr w0, [x21] cmn w0, #1 - bne .L1586 - ldr w0, [x21,4] - mov w1, 1 - mov w2, w1 + bne .L1547 + ldr w0, [x21, 4] + mov w2, 1 + mov w1, w2 add w0, w0, 1 - str w0, [x21,4] + str w0, [x21, 4] mov x0, x21 bl FlashReadPages -.L1586: +.L1547: ldr w0, [x21] cmn w0, #1 - beq .L1587 + beq .L1548 ldrh w0, [x22] cmp w0, w24 - bne .L1587 - ldr w1, [x22,4] - str w1, [x23,2832] - strh w20, [x23,2824] - ldrh w1, [x22,8] - strh w1, [x23,2828] - b .L1588 -.L1587: - sub w20, w20, #1 - uxth w20, w20 - b .L1585 -.L1588: + bne .L1548 + ldr w1, [x22, 4] + str w1, [x23, 2832] + strh w20, [x23, 2824] + ldrh w1, [x22, 8] + strh w1, [x23, 2828] +.L1549: add x21, x19, :lo12:.LANCHOR2 - mov w2, 65535 - mov w0, -1 - ldrh w1, [x21,2824] - cmp w1, w2 - beq .L1590 - ldrh w1, [x21,2828] - cmp w1, w2 - beq .L1592 + mov w0, 65535 + ldrh w1, [x21, 2824] + cmp w1, w0 + beq .L1563 + ldrh w1, [x21, 2828] + cmp w1, w0 + beq .L1553 add x0, x21, 2936 lsl w1, w1, 10 - str w1, [x0,4] - mov w1, 1 - mov w2, w1 + mov w2, 1 + str w1, [x0, 4] + mov w1, w2 bl FlashReadPages - ldr w0, [x21,2936] + ldr w0, [x21, 2936] cmn w0, #1 - beq .L1592 + beq .L1553 ldrh w1, [x22] mov w0, 61649 cmp w1, w0 - bne .L1592 - ldr w0, [x22,4] - ldr w1, [x21,2832] + bne .L1553 + ldr w1, [x21, 2832] + ldr w0, [x22, 4] cmp w0, w1 - bls .L1592 - str w0, [x21,2832] - ldrh w1, [x21,2828] - ldrh w0, [x22,8] - strh w1, [x21,2824] - strh w0, [x21,2828] -.L1592: + bls .L1553 + str w0, [x21, 2832] + ldrh w1, [x21, 2828] + ldrh w0, [x22, 8] + strh w1, [x21, 2824] + strh w0, [x21, 2828] +.L1553: add x20, x19, :lo12:.LANCHOR2 mov w1, 1 add x23, x20, 2936 mov w24, 61649 - ldrh w0, [x20,2824] + ldrh w0, [x20, 2824] bl FtlGetLastWrittenPage sxth w21, w0 add w0, w0, 1 - strh w0, [x20,2826] -.L1594: - tbnz w21, #31, .L1599 - ldrh w0, [x20,2824] - mov w1, 1 - mov w2, w1 + strh w0, [x20, 2826] +.L1555: + tbnz w21, #31, .L1560 + ldrh w0, [x20, 2824] + mov w2, 1 + mov w1, w2 orr w0, w21, w0, lsl 10 - str w0, [x23,4] - ldr x0, [x20,2576] - str x0, [x23,8] + str w0, [x23, 4] + ldr x0, [x20, 2576] + str x0, [x23, 8] mov x0, x23 bl FlashReadPages ldr w0, [x23] cmn w0, #1 - beq .L1595 + beq .L1556 ldrh w0, [x22] cmp w0, w24 - bne .L1595 -.L1599: + bne .L1556 +.L1560: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,10] + ldrh w0, [x22, 10] mov w2, 65535 - strh w0, [x1,2830] - ldrh w0, [x22,12] + strh w0, [x1, 2830] + ldrh w0, [x22, 12] cmp w0, w2 - bne .L1596 - b .L1597 -.L1595: - sub w21, w21, #1 - sxth w21, w21 - b .L1594 -.L1596: - ldr w2, [x1,2272] - cmp w0, w2 - beq .L1597 - ldrh w1, [x1,2286] - lsr w1, w1, 2 - cmp w0, w1 - bcs .L1597 - cmp w2, w1 - bcs .L1597 - bl FtlSysBlkNumInit -.L1597: + bne .L1557 +.L1558: add x19, x19, :lo12:.LANCHOR2 - mov x20, 0 - add x21, x19, 2824 -.L1600: - ldrh w0, [x19,2298] - mov w1, w20 - add x20, x20, 1 - cmp w1, w0 - bcs .L1618 - ldrh w2, [x19,2816] - add x0, x21, x20, lsl 3 - ldr x3, [x19,2944] - mul w1, w1, w2 - ldr x0, [x0,24] - lsl w2, w2, 2 - add x1, x3, x1, lsl 2 - bl ftl_memcpy - b .L1600 -.L1618: + mov w20, 0 + add x21, x19, 2856 +.L1561: + ldrh w0, [x19, 2298] + cmp w20, w0 + bcc .L1562 mov w0, 0 -.L1590: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L1545: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L1548: + sub w20, w20, #1 + and w20, w20, 65535 + b .L1546 +.L1556: + sub w21, w21, #1 + sxth w21, w21 + b .L1555 +.L1557: + ldr w2, [x1, 2272] + cmp w0, w2 + beq .L1558 + ldrh w1, [x1, 2286] + lsr w1, w1, 2 + cmp w2, w1 + bcs .L1558 + cmp w0, w1 + bcs .L1558 + bl FtlSysBlkNumInit + b .L1558 +.L1562: + ldrh w2, [x19, 2816] + ldr x0, [x19, 2944] + mul w1, w2, w20 + lsl w2, w2, 2 + add w20, w20, 1 + add x1, x0, x1, lsl 2 + ldr x0, [x21], 8 + bl ftl_memcpy + b .L1561 +.L1563: + mov w0, -1 + b .L1545 .size FtlLoadBbt, .-FtlLoadBbt .align 2 .global FtlFreeSysBlkQueueInit .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: - adrp x1, .LANCHOR2 - mov w2, 2048 stp x29, x30, [sp, -16]! - add x1, x1, :lo12:.LANCHOR2 + adrp x3, .LANCHOR2 + add x3, x3, :lo12:.LANCHOR2 + mov w2, 2048 add x29, sp, 0 - strh w0, [x1,2992] - add x0, x1, 3000 - strh wzr, [x1,2994] - strh wzr, [x1,2996] - strh wzr, [x1,2998] mov w1, 0 + strh w0, [x3, 2992] + add x0, x3, 3000 + strh wzr, [x3, 2994] + strh wzr, [x3, 2996] + strh wzr, [x3, 2998] bl ftl_memset mov w0, 0 ldp x29, x30, [sp], 16 @@ -9736,8 +9589,8 @@ FtlFreeSysBlkQueueInit: .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: adrp x0, .LANCHOR2+2998 - ldrh w0, [x0,#:lo12:.LANCHOR2+2998] - cmp w0, wzr + ldrh w0, [x0, #:lo12:.LANCHOR2+2998] + cmp w0, 0 cset w0, eq ret .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty @@ -9746,7 +9599,7 @@ FtlFreeSysBlkQueueEmpty: .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: adrp x0, .LANCHOR2+2998 - ldrh w0, [x0,#:lo12:.LANCHOR2+2998] + ldrh w0, [x0, #:lo12:.LANCHOR2+2998] cmp w0, 1024 cset w0, eq ret @@ -9756,57 +9609,57 @@ FtlFreeSysBlkQueueFull: .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: stp x29, x30, [sp, -48]! - uxth w1, w1 add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - uxth w21, w0 - mov w0, 65533 + stp x21, x22, [sp, 32] + and w21, w0, 65535 + stp x19, x20, [sp, 16] sub w2, w21, #1 + mov w0, 65533 cmp w0, w2, uxth - bcc .L1622 - adrp x2, .LANCHOR2 - add x20, x2, :lo12:.LANCHOR2 - mov x19, x2 - ldrh w0, [x20,2998] - cmp w0, 1024 - beq .L1622 - cbz w1, .L1624 - ldr w0, [x20,2928] - cbnz w0, .L1624 + bcc .L1578 + adrp x0, .LANCHOR2 + add x20, x0, :lo12:.LANCHOR2 + mov x19, x0 + ldrh w2, [x20, 2998] + cmp w2, 1024 + beq .L1578 + and w1, w1, 65535 + cbz w1, .L1580 + ldr w0, [x20, 2928] + cbnz w0, .L1580 mov w0, w21 bl P2V_block_in_plane - uxth w22, w0 - ldr x0, [x20,2544] + and w22, w0, 65535 + ldr x0, [x20, 2544] lsl w1, w21, 10 - str w1, [x0,4] - mov w1, 1 - mov w2, w1 - ldr x0, [x20,2544] + mov w2, 1 + str w1, [x0, 4] + mov w1, w2 + ldr x0, [x20, 2544] bl FlashEraseBlocks + ldr x2, [x20, 2696] ubfiz x0, x22, 1, 16 - ldr x2, [x20,2696] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] add w1, w1, 1 - strh w1, [x2,x0] - ldr w0, [x20,2436] + strh w1, [x2, x0] + ldr w0, [x20, 2436] add w0, w0, 1 - str w0, [x20,2436] -.L1624: - add x1, x19, :lo12:.LANCHOR2 - add x1, x1, 2992 - ldrh w0, [x1,6] - ldrh w2, [x1,4] - add w0, w0, 1 - strh w0, [x1,6] - add x0, x1, w2, sxtw 1 - add w2, w2, 1 - and w2, w2, 1023 - strh w21, [x0,8] - strh w2, [x1,4] -.L1622: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + str w0, [x20, 2436] +.L1580: + add x0, x19, :lo12:.LANCHOR2 + add x0, x0, 2992 + ldrh w1, [x0, 6] + add w1, w1, 1 + strh w1, [x0, 6] + ldrh w1, [x0, 4] + add x2, x0, w1, sxtw 1 + add w1, w1, 1 + and w1, w1, 1023 + strh w1, [x0, 4] + strh w21, [x2, 8] +.L1578: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn @@ -9814,378 +9667,358 @@ FtlFreeSysBlkQueueIn: .global FtlLowFormatEraseBlock .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR2 - stp x27, x28, [sp,80] - add x28, x21, :lo12:.LANCHOR2 - stp x25, x26, [sp,64] - uxth w25, w0 - ldr w2, [x28,2928] - ldrb w0, [x28,2094] - stp x23, x24, [sp,48] - str w0, [x29,120] - uxtb w24, w1 - stp x19, x20, [sp,16] - mov w0, 0 - cbnz w2, .L1632 - ldrb w0, [x28,1220] - mov w26, w2 - str w0, [x29,124] - mov w20, w2 - str w25, [x28,2468] - mov w19, w2 - mov w23, 56 - mov w27, 4 -.L1633: - ldrh w0, [x28,2276] - cmp w0, w26 - bls .L1677 - umull x0, w26, w23 - ldr x1, [x28,2544] - str wzr, [x1,x0] - add x0, x28, 2304 - mov w1, w25 - ldrb w0, [x0,w26,sxtw] - bl V2P_block - uxth w22, w0 - mov w1, w22 - cbz w24, .L1634 - str x1, [x29,112] - bl IsBlkInVendorPart - ldr x1, [x29,112] - cbnz w0, .L1635 -.L1634: - mov w0, w1 - bl FtlBbmIsBadBlock - cbnz w0, .L1636 - umull x0, w20, w23 - ldr x1, [x28,2544] - lsl w22, w22, 10 - add x1, x1, x0 - str w22, [x1,4] - ldr x1, [x28,2544] - ldr x3, [x28,2648] - add x1, x1, x0 - ldrh w0, [x28,2356] - mul w0, w20, w0 - add w20, w20, 1 - str xzr, [x1,8] - sdiv w0, w0, w27 - uxth w20, w20 - add x0, x3, w0, sxtw 2 - str x0, [x1,16] - b .L1635 -.L1636: - add w19, w19, 1 - uxth w19, w19 -.L1635: - add w2, w26, 1 - uxth w26, w2 - b .L1633 -.L1677: - cbz w20, .L1656 - ldr w0, [x29,124] - mov w2, w20 - strb wzr, [x28,2094] - mov x23, 0 - cmp w0, wzr - ldr x0, [x28,2544] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + stp x21, x22, [sp, 32] + add x21, x20, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] + and w25, w0, 65535 + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldr w0, [x21, 2928] + cbnz w0, .L1611 + ldrb w8, [x21, 1220] + and w24, w1, 255 + ldrb w0, [x21, 2094] + add x9, x21, 2304 + mov w5, 0 + mov w23, 0 + mov w19, 0 + mov w7, 56 + mov w10, 4 + str w25, [x21, 2468] + str w0, [x29, 132] +.L1590: + ldrh w0, [x21, 2276] + cmp w0, w5 + bhi .L1594 + cbz w23, .L1588 + ldr x0, [x21, 2544] + cmp w8, 0 cset w22, ne - mov x26, 56 + strb wzr, [x21, 2094] + mov w2, w23 mov w1, w22 + add x26, x20, :lo12:.LANCHOR2 bl FlashEraseBlocks - ldrb w0, [x29,120] - strb w0, [x28,2094] -.L1639: - cmp w20, w23, uxth - bls .L1678 - add x1, x21, :lo12:.LANCHOR2 - mul x0, x23, x26 - ldr x1, [x1,2544] - add x2, x1, x0 - ldr w0, [x1,x0] + ldrb w0, [x29, 132] + strb w0, [x21, 2094] + mov w21, 56 + umull x21, w23, w21 + mov x23, 0 +.L1597: + ldr x0, [x26, 2544] + add x1, x0, x23 + ldr w0, [x0, x23] cmn w0, #1 - bne .L1640 - ldr w0, [x2,4] + bne .L1596 + ldr w0, [x1, 4] add w19, w19, 1 + and w19, w19, 65535 lsr w0, w0, 10 - uxth w19, w19 bl FtlBbmMapBadBlock -.L1640: - add x23, x23, 1 - b .L1639 -.L1678: - cbnz w24, .L1642 +.L1596: + add x23, x23, 56 + cmp x21, x23 + bne .L1597 + cbnz w24, .L1598 + and w22, w22, 65535 mov w0, 1 - uxth w22, w22 mov w27, 6 - str w0, [x29,124] - b .L1643 -.L1642: - add x0, x21, :lo12:.LANCHOR2 - ldrh w1, [x0,2346] - ldrb w0, [x0,1220] - str w1, [x29,124] - cbnz w0, .L1659 + str w0, [x29, 136] +.L1599: + add x26, x20, :lo12:.LANCHOR2 + mov w23, 0 + add x0, x26, 2304 + mov w28, 56 + str x0, [x29, 120] +.L1607: + mov w5, 0 + mov w21, 0 + mov w7, 4 +.L1600: + ldrh w0, [x26, 2276] + cmp w0, w5 + bhi .L1603 + cbz w21, .L1588 + ldr x0, [x26, 2544] + mov w2, w22 + mov w1, w21 + strb wzr, [x26, 2094] + mov w3, 1 + bl FlashProgPages + umull x1, w21, w28 + ldrb w0, [x29, 132] + strb w0, [x26, 2094] + mov x2, 0 +.L1606: + ldr x0, [x26, 2544] + add x3, x0, x2 + ldr w0, [x0, x2] + cbz w0, .L1605 + ldr w0, [x3, 4] + add w19, w19, 1 + stp x2, x1, [x29, 104] + and w19, w19, 65535 + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldp x2, x1, [x29, 104] +.L1605: + add x2, x2, 56 + cmp x1, x2 + bne .L1606 + add w23, w23, w27 + ldr w0, [x29, 136] + and w23, w23, 65535 + cmp w0, w23 + bhi .L1607 + add x26, x20, :lo12:.LANCHOR2 + mov x23, 0 +.L1609: + cbz w24, .L1608 + ldr x0, [x26, 2544] + add x1, x0, x23 + ldr w0, [x0, x23] + cbnz w0, .L1608 + ldr w0, [x1, 4] + mov w1, 1 + str x2, [x29, 136] + lsr w0, w0, 10 + bl FtlFreeSysBlkQueueIn + ldr x2, [x29, 136] +.L1608: + add x23, x23, 56 + cmp x23, x2 + bne .L1609 + cmp w25, 63 + ccmp w24, 0, 0, hi + beq .L1588 + add x20, x20, :lo12:.LANCHOR2 + mov w2, w21 + mov w1, w22 + ldr x0, [x20, 2544] + bl FlashEraseBlocks +.L1588: + 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], 144 + ret +.L1594: + umull x0, w5, w7 + ldr x1, [x21, 2544] + str wzr, [x1, x0] + mov w1, w25 + ldrb w0, [x9, w5, sxtw] + bl V2P_block + and w6, w0, 65535 + mov w11, w6 + cbz w24, .L1591 + bl IsBlkInVendorPart + cbnz w0, .L1592 +.L1591: + mov w0, w11 + bl FtlBbmIsBadBlock + cbnz w0, .L1593 + umull x2, w23, w7 + ldr x0, [x21, 2544] + lsl w6, w6, 10 + add x0, x0, x2 + str w6, [x0, 4] + ldrh w0, [x21, 2356] + ldr x1, [x21, 2544] + add x1, x1, x2 + ldr x2, [x21, 2648] + mul w0, w0, w23 + add w23, w23, 1 + and w23, w23, 65535 + sdiv w0, w0, w10 + add x0, x2, w0, sxtw 2 + stp xzr, x0, [x1, 8] +.L1592: + add w5, w5, 1 + and w5, w5, 65535 + b .L1590 +.L1593: + add w19, w19, 1 + and w19, w19, 65535 + b .L1592 +.L1598: + add x0, x20, :lo12:.LANCHOR2 + ldrh w1, [x0, 2346] + ldrb w0, [x0, 1220] + str w1, [x29, 136] + cbnz w0, .L1612 uxtw x0, w1 mov w22, 1 lsr w27, w0, 2 - b .L1643 -.L1659: + b .L1599 +.L1612: mov w22, 1 mov w27, w22 -.L1643: - mov w23, 0 - add x28, x21, :lo12:.LANCHOR2 -.L1652: - mov w26, 0 - mov w20, w26 -.L1644: - ldrh w0, [x28,2276] - cmp w0, w26 - bls .L1679 - mov w0, 56 - ldr x1, [x28,2544] - umull x0, w26, w0 - str wzr, [x1,x0] - add x0, x28, 2304 + b .L1599 +.L1603: + umull x0, w5, w28 + ldr x1, [x26, 2544] + str wzr, [x1, x0] mov w1, w25 - ldrb w0, [x0,w26,sxtw] + ldr x0, [x29, 120] + ldrb w0, [x0, w5, sxtw] bl V2P_block - uxth w2, w0 - str w2, [x29,112] - mov w1, w2 - cbz w24, .L1645 - str x1, [x29,104] + and w6, w0, 65535 + mov w8, w6 + cbz w24, .L1601 bl IsBlkInVendorPart - ldr x1, [x29,104] - cbnz w0, .L1646 -.L1645: - mov w0, w1 + cbnz w0, .L1602 +.L1601: + mov w0, w8 bl FtlBbmIsBadBlock - cbnz w0, .L1646 - mov w0, 56 - ldr x1, [x28,2544] - 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,2544] - add x1, x1, x0 - ldr x0, [x28,2616] - str x0, [x1,8] - ldrh w0, [x28,2356] - mul w0, w20, w0 - add w20, w20, 1 - sdiv w0, w0, w2 - uxth w20, w20 - ldr x2, [x28,2624] + cbnz w0, .L1602 + umull x2, w21, w28 + ldr x0, [x26, 2544] + add w6, w23, w6, lsl 10 + add x0, x0, x2 + str w6, [x0, 4] + ldr x1, [x26, 2544] + ldr x0, [x26, 2616] + add x1, x1, x2 + ldr x2, [x26, 2624] + str x0, [x1, 8] + ldrh w0, [x26, 2356] + mul w0, w0, w21 + add w21, w21, 1 + and w21, w21, 65535 + sdiv w0, w0, w7 add x0, x2, w0, sxtw 2 - str x0, [x1,16] -.L1646: - add w3, w26, 1 - uxth w26, w3 - b .L1644 -.L1679: - cbz w20, .L1656 - ldr x0, [x28,2544] - mov w1, w20 - mov w2, w22 - mov w3, 1 - strb wzr, [x28,2094] - bl FlashProgPages - ldrb w0, [x29,120] - mov x1, 0 - strb w0, [x28,2094] -.L1649: - cmp w20, w1, uxth - bls .L1680 - mov x0, 56 - ldr x2, [x28,2544] - mul x0, x1, x0 - add x3, x2, x0 - ldr w0, [x2,x0] - cbz w0, .L1650 - ldr w0, [x3,4] - add w19, w19, 1 - str x1, [x29,112] - lsr w0, w0, 10 - uxth w19, w19 - bl FtlBbmMapBadBlock - ldr x1, [x29,112] -.L1650: - add x1, x1, 1 - b .L1649 -.L1680: - add w23, w23, w27 - ldr w0, [x29,124] - uxth w23, w23 - cmp w23, w0 - bcc .L1652 - mov x23, 0 - mov x26, 56 -.L1653: - cmp w20, w23, uxth - bls .L1681 - cbz w24, .L1654 - add x1, x21, :lo12:.LANCHOR2 - mul x0, x23, x26 - ldr x1, [x1,2544] - add x2, x1, x0 - ldr w0, [x1,x0] - cbnz w0, .L1654 - ldr w0, [x2,4] - mov w1, 1 - lsr w0, w0, 10 - bl FtlFreeSysBlkQueueIn -.L1654: - add x23, x23, 1 - b .L1653 -.L1681: - cmp w25, 63 - bls .L1660 - cbz w24, .L1656 -.L1660: - add x21, x21, :lo12:.LANCHOR2 - mov w1, w22 - mov w2, w20 - ldr x0, [x21,2544] - bl FlashEraseBlocks -.L1656: - mov w0, w19 -.L1632: - 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 + str x0, [x1, 16] +.L1602: + add w5, w5, 1 + and w5, w5, 65535 + b .L1600 +.L1611: + mov w19, 0 + b .L1588 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FtlFreeSysBLkSort .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: - adrp x0, .LANCHOR4+724 - ldrh w6, [x0,#:lo12:.LANCHOR4+724] adrp x0, .LANCHOR2 add x1, x0, :lo12:.LANCHOR2 add x1, x1, 2992 - ldrh w2, [x1,6] - cbz w2, .L1682 - mov w5, 0 - ldrh w3, [x1,2] - ldrh w2, [x1,4] - mov w4, w5 - and w6, w6, 31 -.L1684: - cmp w4, w6 - bge .L1692 - add x5, x1, w3, sxtw 1 - ldrh w7, [x5,8] - add x5, x1, w2, sxtw 1 - add w4, w4, 1 - strh w7, [x5,8] - mov w5, 1 - add w3, w3, 1 - add w2, w2, w5 - uxth w4, w4 - and w3, w3, 1023 - and w2, w2, 1023 - b .L1684 -.L1692: - cbz w5, .L1682 + ldrh w2, [x1, 6] + cbz w2, .L1633 + adrp x2, .LANCHOR4+724 + ldrh w3, [x1, 2] + mov w6, 0 + mov w4, 0 + ldrh w5, [x2, #:lo12:.LANCHOR4+724] + ldrh w2, [x1, 4] + and w5, w5, 31 +.L1635: + cmp w5, w4 + bgt .L1636 + cbz w6, .L1633 add x0, x0, :lo12:.LANCHOR2 - strh w3, [x0,2994] - strh w2, [x0,2996] -.L1682: + strh w3, [x0, 2994] + strh w2, [x0, 2996] +.L1633: ret +.L1636: + add x6, x1, w3, sxtw 1 + add w4, w4, 1 + add w3, w3, 1 + and w4, w4, 65535 + and w3, w3, 1023 + ldrh w7, [x6, 8] + add x6, x1, w2, sxtw 1 + strh w7, [x6, 8] + mov w6, 1 + add w2, w2, w6 + and w2, w2, 1023 + b .L1635 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 .global FtlFreeSysBlkQueueOut .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x23, x24, [sp,48] add x19, x19, :lo12:.LANCHOR2 - adrp x23, .LC37 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - add x21, x19, 2992 - mov w24, 65533 - add x23, x23, :lo12:.LC37 -.L1694: - ldrh w1, [x21,6] - adrp x22, .LANCHOR2 - cbz w1, .L1695 - ldrh w2, [x21,2] - sub w1, w1, #1 - add x0, x21, w2, sxtw 1 - strh w1, [x21,6] - add w2, w2, 1 - ldr w1, [x19,2928] - and w2, w2, 1023 - strh w2, [x21,2] - ldrh w20, [x0,8] - cbnz w1, .L1696 - mov w0, w20 - str x1, [x29,88] - bl P2V_block_in_plane - uxth w26, w0 - ldr x0, [x19,2544] - lsl w2, w20, 10 - ldr x1, [x29,88] - str w2, [x0,4] - ldrb w0, [x19,1220] - cbz w0, .L1697 - ldr x0, [x19,2544] - mov w2, 1 - bl FlashEraseBlocks -.L1697: - add x25, x22, :lo12:.LANCHOR2 - mov w1, 1 - mov w2, w1 - ldr x0, [x25,2544] - bl FlashEraseBlocks - ubfiz x0, x26, 1, 16 - ldr x2, [x25,2696] - ldrh w1, [x2,x0] - add w1, w1, 1 - strh w1, [x2,x0] - ldr w0, [x25,2436] + stp x21, x22, [sp, 32] + str x23, [sp, 48] + mov x21, x19 + add x23, x19, 2992 +.L1643: + ldrh w2, [x19, 2998] + add x1, x19, 2992 + cbz w2, .L1644 + ldrh w0, [x19, 2994] + sub w2, w2, #1 + strh w2, [x19, 2998] + add x3, x1, w0, sxtw 1 add w0, w0, 1 - str w0, [x25,2436] - b .L1696 -.L1695: + and w0, w0, 1023 + strh w0, [x19, 2994] + ldr w0, [x19, 2928] + ldrh w20, [x3, 8] + cbnz w0, .L1645 + mov w0, w20 + bl P2V_block_in_plane + and w22, w0, 65535 + ldr x0, [x19, 2544] + lsl w1, w20, 10 + str w1, [x0, 4] + ldrb w0, [x19, 1220] + cbz w0, .L1646 + ldr x0, [x19, 2544] + mov w2, 1 + mov w1, 0 + bl FlashEraseBlocks +.L1646: + ldr x0, [x21, 2544] + mov w2, 1 + mov w1, w2 + bl FlashEraseBlocks + ldr x2, [x21, 2696] + ubfiz x0, x22, 1, 16 + ldrh w1, [x2, x0] + add w1, w1, 1 + strh w1, [x2, x0] + ldr w0, [x21, 2436] + add w0, w0, 1 + str w0, [x21, 2436] +.L1645: + sub w0, w20, #1 + mov w1, 65533 + cmp w1, w0, uxth + bcs .L1648 + ldrh w2, [x23, 6] + mov w1, w20 + adrp x0, .LC37 + add x0, x0, :lo12:.LC37 + bl printk + b .L1643 +.L1644: adrp x0, .LC36 + mov w1, 0 add x0, x0, :lo12:.LC36 bl printk -.L1698: - b .L1698 -.L1696: - sub w0, w20, #1 - cmp w24, w0, uxth - bcs .L1699 - add x22, x22, :lo12:.LANCHOR2 - mov x0, x23 - mov w1, w20 - ldrh w2, [x22,2998] - bl printk - b .L1694 -.L1699: +.L1647: + b .L1647 +.L1648: mov w0, w20 - 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 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 ret .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 @@ -10195,137 +10028,138 @@ test_node_in_list: ldr x2, [x0] adrp x0, .LANCHOR2+2808 mov x4, -6148914691236517206 - uxth w1, w1 + and w1, w1, 65535 + ldr x3, [x0, #:lo12:.LANCHOR2+2808] + movk x4, 0xaaab, lsl 0 mov w5, 65535 - ldr x3, [x0,#:lo12:.LANCHOR2+2808] sub x0, x2, x3 asr x0, x0, 1 - madd x0, x4, x0, x0 + mul x0, x0, x4 mov w4, 6 - uxth w0, w0 -.L1705: - cmp w1, w0 - beq .L1706 + and w0, w0, 65535 +.L1655: + cmp w0, w1 + beq .L1656 ldrh w0, [x2] cmp w0, w5 - beq .L1707 - umull x2, w0, w4 - add x2, x3, x2 - b .L1705 -.L1706: + beq .L1657 + umaddl x2, w0, w4, x3 + b .L1655 +.L1656: mov w0, 1 - b .L1704 -.L1707: + ret +.L1657: mov w0, 0 -.L1704: ret .size test_node_in_list, .-test_node_in_list .align 2 .global insert_data_list .type insert_data_list, %function insert_data_list: - sub sp, sp, #16 - adrp x10, .LANCHOR2 - add x3, x10, :lo12:.LANCHOR2 - uxth w0, w0 - str x19, [sp] - ldrh w1, [x3,2284] + adrp x11, .LANCHOR2 + add x3, x11, :lo12:.LANCHOR2 + and w0, w0, 65535 + ldrh w1, [x3, 2284] cmp w1, w0 - bls .L1710 - mov w7, 6 - ldr x12, [x3,2808] - adrp x2, .LANCHOR4 + bls .L1674 + mov w8, 6 + ldr x13, [x3, 2808] mov w1, -1 - umull x11, w0, w7 - add x6, x2, :lo12:.LANCHOR4 - mov x4, x2 - add x5, x12, x11 - strh w1, [x5,2] - strh w1, [x12,x11] - ldr x1, [x6,744] - cbnz x1, .L1711 - str x5, [x6,744] - b .L1710 -.L1711: - ubfiz x8, x0, 1, 16 - ldr x14, [x3,2712] - ldrh w2, [x5,4] - mov x9, -6148914691236517206 - ldr x13, [x3,2808] - mov w19, 65535 - ldrh w6, [x14,x8] - cmp w2, wzr - ldr x15, [x3,2696] - ldrh w18, [x3,2284] - mov w3, 0 - mul w6, w6, w2 - sub x2, x1, x13 - asr x2, x2, 1 - csinv w6, w6, wzr, ne - madd x2, x9, x2, x2 - add x9, x15, x8 - mov w8, w7 - uxth w2, w2 -.L1719: - add w3, w3, 1 - cmp w0, w2 - uxth w3, w3 - beq .L1710 - cmp w3, w18 - bhi .L1710 - ubfiz x16, x2, 1, 16 - ldrh w17, [x1,4] - cmp w17, wzr - ldrh w7, [x14,x16] - mul w7, w7, w17 - csinv w7, w7, wzr, ne - cmp w7, w6 - bne .L1715 - ldrh w16, [x15,x16] - ldrh w7, [x9] - cmp w16, w7 - bcc .L1717 - b .L1716 -.L1715: - bhi .L1716 -.L1717: - ldrh w7, [x1] - cmp w7, w19 - bne .L1718 - strh w2, [x5,2] - add x2, x4, :lo12:.LANCHOR4 - strh w0, [x1] - str x5, [x2,752] - b .L1710 -.L1718: - umull x1, w7, w8 - mov w2, w7 - add x1, x13, x1 - b .L1719 -.L1716: - strh w2, [x12,x11] - ldrh w2, [x1,2] - strh w2, [x5,2] - add x2, x4, :lo12:.LANCHOR4 - ldr x3, [x2,744] - cmp x1, x3 - bne .L1720 - strh w0, [x1,2] - str x5, [x2,744] - b .L1710 -.L1720: - ldrh w2, [x1,2] - add x3, x10, :lo12:.LANCHOR2 - mov w4, 6 - ldr x3, [x3,2808] - umull x2, w2, w4 - strh w0, [x3,x2] - strh w0, [x1,2] -.L1710: + adrp x2, .LANCHOR4 + umull x12, w0, w8 + add x4, x2, :lo12:.LANCHOR4 + mov x5, x2 + add x6, x13, x12 + strh w1, [x6, 2] + strh w1, [x13, x12] + ldr x1, [x4, 744] + cbnz x1, .L1661 + str x6, [x4, 744] +.L1674: mov w0, 0 - ldr x19, [sp] - add sp, sp, 16 ret +.L1661: + stp x29, x30, [sp, -32]! + ubfiz x9, x0, 1, 16 + mov w10, -1 + add x29, sp, 0 + str x19, [sp, 16] + mov w19, 65535 + ldr x15, [x3, 2712] + ldrh w2, [x6, 4] + ldr x14, [x3, 2808] + cmp w2, 0 + ldr x16, [x3, 2696] + ldrh w7, [x15, x9] + sub x4, x1, x14 + asr x4, x4, 1 + add x9, x16, x9 + ldrh w30, [x3, 2284] + mov w3, 0 + mul w7, w7, w2 + mov x2, -6148914691236517206 + movk x2, 0xaaab, lsl 0 + csel w7, w7, w10, ne + mul x4, x4, x2 + and w2, w4, 65535 +.L1669: + add w3, w3, 1 + and w3, w3, 65535 + cmp w3, w30 + bhi .L1660 + cmp w0, w2 + beq .L1660 + ubfiz x17, x2, 1, 16 + ldrh w18, [x1, 4] + cmp w18, 0 + ldrh w4, [x15, x17] + mul w4, w4, w18 + csel w4, w4, w10, ne + cmp w7, w4 + bne .L1665 + ldrh w17, [x16, x17] + ldrh w4, [x9] + cmp w17, w4 + bcc .L1667 +.L1666: + strh w2, [x13, x12] + ldrh w2, [x1, 2] + strh w2, [x6, 2] + add x2, x5, :lo12:.LANCHOR4 + ldr x3, [x2, 744] + cmp x1, x3 + bne .L1670 + strh w0, [x1, 2] + str x6, [x2, 744] + b .L1660 +.L1665: + bcc .L1666 +.L1667: + ldrh w4, [x1] + cmp w4, w19 + bne .L1668 + strh w2, [x6, 2] + add x2, x5, :lo12:.LANCHOR4 + strh w0, [x1] + str x6, [x2, 752] +.L1660: + mov w0, 0 + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L1668: + umaddl x1, w4, w8, x14 + mov w2, w4 + b .L1669 +.L1670: + ldrh w2, [x1, 2] + add x3, x11, :lo12:.LANCHOR2 + mov w4, 6 + ldr x3, [x3, 2808] + umull x2, w2, w4 + strh w0, [x3, x2] + strh w0, [x1, 2] + b .L1660 .size insert_data_list, .-insert_data_list .align 2 .global INSERT_DATA_LIST @@ -10336,9 +10170,9 @@ INSERT_DATA_LIST: bl insert_data_list adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrh w1, [x0,760] + ldrh w1, [x0, 760] add w1, w1, 1 - strh w1, [x0,760] + strh w1, [x0, 760] ldp x29, x30, [sp], 16 ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST @@ -10346,75 +10180,75 @@ INSERT_DATA_LIST: .global insert_free_list .type insert_free_list, %function insert_free_list: - uxth w0, w0 - mov w5, 65535 - cmp w0, w5 - beq .L1725 + and w0, w0, 65535 + mov w7, 65535 + cmp w0, w7 + beq .L1679 adrp x3, .LANCHOR2 - mov w4, 6 - add x8, x3, :lo12:.LANCHOR2 - adrp x2, .LANCHOR4 - umull x6, w0, w4 + add x10, x3, :lo12:.LANCHOR2 + mov w6, 6 mov w1, -1 - add x9, x2, :lo12:.LANCHOR4 - ldr x7, [x8,2808] - mov x11, x3 + adrp x2, .LANCHOR4 + add x11, x2, :lo12:.LANCHOR4 + ldr x9, [x10, 2808] + umull x8, w0, w6 + mov x4, x3 mov x3, x2 - add x12, x7, x6 - strh w1, [x12,2] - strh w1, [x7,x6] - ldr x1, [x9,768] - cbnz x1, .L1726 - str x12, [x9,768] - b .L1725 -.L1726: - ldr x10, [x8,2696] - ubfiz x2, x0, 1, 16 - ldr x9, [x8,2808] - mov x8, -6148914691236517206 - ldrh w13, [x10,x2] - sub x2, x1, x9 - asr x2, x2, 1 - madd x2, x8, x2, x2 - uxth w2, w2 -.L1729: - ubfiz x8, x2, 1, 16 - ldrh w8, [x10,x8] - cmp w8, w13 - bcs .L1727 - ldrh w8, [x1] - cmp w8, w5 - bne .L1728 - strh w2, [x12,2] - strh w0, [x1] - b .L1725 -.L1728: - umull x1, w8, w4 - mov w2, w8 - add x1, x9, x1 - b .L1729 -.L1727: - ldrh w4, [x1,2] - strh w4, [x12,2] - strh w2, [x7,x6] - add x2, x3, :lo12:.LANCHOR4 - ldr x3, [x2,768] - cmp x1, x3 - bne .L1730 - strh w0, [x1,2] - str x12, [x2,768] - b .L1725 -.L1730: - ldrh w2, [x1,2] - add x3, x11, :lo12:.LANCHOR2 - mov w4, 6 - ldr x3, [x3,2808] - umull x2, w2, w4 - strh w0, [x3,x2] - strh w0, [x1,2] -.L1725: + add x5, x9, x8 + strh w1, [x5, 2] + strh w1, [x9, x8] + ldr x1, [x11, 768] + cbnz x1, .L1680 + str x5, [x11, 768] +.L1679: mov w0, 0 ret +.L1680: + ldr x12, [x10, 2696] + ubfiz x2, x0, 1, 16 + ldr x11, [x10, 2808] + mov x10, -6148914691236517206 + movk x10, 0xaaab, lsl 0 + ldrh w13, [x12, x2] + sub x2, x1, x11 + asr x2, x2, 1 + mul x2, x2, x10 + and w2, w2, 65535 +.L1683: + ubfiz x10, x2, 1, 16 + ldrh w10, [x12, x10] + cmp w10, w13 + bcs .L1681 + ldrh w10, [x1] + cmp w10, w7 + bne .L1682 + strh w2, [x5, 2] + strh w0, [x1] + b .L1679 +.L1682: + umaddl x1, w10, w6, x11 + mov w2, w10 + b .L1683 +.L1681: + ldrh w6, [x1, 2] + strh w6, [x5, 2] + strh w2, [x9, x8] + add x2, x3, :lo12:.LANCHOR4 + ldr x3, [x2, 768] + cmp x1, x3 + bne .L1684 + strh w0, [x1, 2] + str x5, [x2, 768] + b .L1679 +.L1684: + ldrh w2, [x1, 2] + add x3, x4, :lo12:.LANCHOR2 + mov w4, 6 + ldr x3, [x3, 2808] + umull x2, w2, w4 + strh w0, [x3, x2] + strh w0, [x1, 2] + b .L1679 .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST @@ -10425,9 +10259,9 @@ INSERT_FREE_LIST: bl insert_free_list adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - ldrh w1, [x0,776] + ldrh w1, [x0, 776] add w1, w1, 1 - strh w1, [x0,776] + strh w1, [x0, 776] ldp x29, x30, [sp], 16 ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST @@ -10435,198 +10269,197 @@ INSERT_FREE_LIST: .global List_remove_node .type List_remove_node, %function List_remove_node: + and w1, w1, 65535 adrp x6, .LANCHOR2 - uxth w1, w1 add x6, x6, :lo12:.LANCHOR2 - mov w5, 6 - ldr x3, [x0] + mov w4, 6 + ldr x2, [x0] mov w7, 65535 - umull x1, w1, w5 - ldr x2, [x6,2808] - add x4, x2, x1 - cmp x4, x3 - bne .L1733 - ldrh w3, [x2,x1] - cmp w3, w7 - bne .L1734 + umull x1, w1, w4 + ldr x3, [x6, 2808] + add x5, x3, x1 + cmp x5, x2 + ldrh w2, [x3, x1] + bne .L1688 + cmp w2, w7 + bne .L1689 str xzr, [x0] - b .L1735 -.L1734: - umull x3, w3, w5 - add x3, x2, x3 - str x3, [x0] +.L1690: mov w0, -1 - strh w0, [x3,2] - b .L1735 -.L1733: - ldrh w0, [x2,x1] - ldrh w3, [x4,2] - cmp w0, w7 - bne .L1736 - cmp w3, w0 - beq .L1735 - umull x3, w3, w5 - mov w0, -1 - strh w0, [x2,x3] - b .L1735 -.L1736: - umull x0, w0, w5 - add x0, x2, x0 - strh w3, [x0,2] - ldrh w3, [x4,2] - ldr x0, [x6,2808] - ldrh w7, [x2,x1] - umull x3, w3, w5 - strh w7, [x0,x3] -.L1735: - mov w0, -1 - strh w0, [x2,x1] - strh w0, [x4,2] + strh w0, [x3, x1] + strh w0, [x5, 2] mov w0, 0 ret +.L1689: + umaddl x2, w2, w4, x3 + str x2, [x0] + mov w0, -1 + strh w0, [x2, 2] + b .L1690 +.L1688: + cmp w2, w7 + ldrh w0, [x5, 2] + bne .L1691 + cmp w0, w2 + beq .L1690 + umull x2, w0, w4 + mov w0, -1 + strh w0, [x3, x2] + b .L1690 +.L1691: + umaddl x2, w2, w4, x3 + strh w0, [x2, 2] + ldrh w2, [x5, 2] + ldr x0, [x6, 2808] + ldrh w7, [x3, x1] + umull x2, w2, w4 + strh w7, [x0, x2] + b .L1690 .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node .type List_pop_index_node, %function List_pop_index_node: - stp x29, x30, [sp, -32]! - uxth w1, w1 - add x29, sp, 0 - str x19, [sp,16] - mov w19, 65535 ldr x2, [x0] - cbz x2, .L1738 + cbz x2, .L1698 + stp x29, x30, [sp, -16]! adrp x3, .LANCHOR2+2808 - mov w5, w19 - mov w6, 6 - ldr x4, [x3,#:lo12:.LANCHOR2+2808] -.L1739: - cbnz w1, .L1740 -.L1742: - sub x2, x2, x4 - mov x1, -6148914691236517206 - asr x2, x2, 1 - madd x2, x1, x2, x2 - uxth w19, w2 - mov w1, w19 + and w1, w1, 65535 + mov w4, 65535 + add x29, sp, 0 + ldr x8, [x3, #:lo12:.LANCHOR2+2808] + mov w5, 6 +.L1694: + cbnz w1, .L1695 +.L1697: + sub x8, x2, x8 + mov x2, -6148914691236517206 + asr x8, x8, 1 + movk x2, 0xaaab, lsl 0 + mul x8, x8, x2 + and w8, w8, 65535 + mov w1, w8 bl List_remove_node - b .L1738 -.L1740: + mov w0, w8 + ldp x29, x30, [sp], 16 + ret +.L1695: ldrh w3, [x2] - cmp w3, w5 - beq .L1742 - umull x3, w3, w6 + cmp w3, w4 + beq .L1697 sub w1, w1, #1 - add x2, x4, x3 - uxth w1, w1 - b .L1739 -.L1738: - mov w0, w19 - ldr x19, [sp,16] - ldp x29, x30, [sp], 32 + umaddl x2, w3, w5, x8 + and w1, w1, 65535 + b .L1694 +.L1698: + mov w0, 65535 ret .size List_pop_index_node, .-List_pop_index_node .align 2 .global List_get_gc_head_node .type List_get_gc_head_node, %function List_get_gc_head_node: - uxth w3, w0 + and w2, w0, 65535 adrp x0, .LANCHOR4+744 - ldr x1, [x0,#:lo12:.LANCHOR4+744] - mov w0, 65535 - cbz x1, .L1750 + ldr x1, [x0, #:lo12:.LANCHOR4+744] + cbz x1, .L1708 adrp x0, .LANCHOR2+2808 - mov w5, 6 - ldr x4, [x0,#:lo12:.LANCHOR2+2808] + mov w4, 6 + ldr x3, [x0, #:lo12:.LANCHOR2+2808] mov w0, 65535 -.L1746: - cbz w3, .L1747 - ldrh w2, [x1] - cmp w2, w0 - beq .L1750 - umull x2, w2, w5 - sub w3, w3, #1 - add x1, x4, x2 - uxth w3, w3 - b .L1746 -.L1747: - sub x1, x1, x4 - mov x0, -6148914691236517206 - asr x1, x1, 1 - madd x1, x0, x1, x1 - uxth w0, w1 -.L1750: +.L1705: + cbz w2, .L1706 + ldrh w1, [x1] + cmp w1, w0 + bne .L1707 + ret +.L1707: + sub w2, w2, #1 + umaddl x1, w1, w4, x3 + and w2, w2, 65535 + b .L1705 +.L1708: + mov w0, 65535 + ret +.L1706: + sub x0, x1, x3 + mov x1, -6148914691236517206 + asr x0, x0, 1 + movk x1, 0xaaab, lsl 0 + mul x0, x0, x1 + and w0, w0, 65535 ret .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 .global List_update_data_list .type List_update_data_list, %function List_update_data_list: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR4 - uxth w20, w0 - add x4, x19, :lo12:.LANCHOR4 - ldrh w0, [x4,784] - cmp w0, w20 - beq .L1752 - ldrh w0, [x4,832] - cmp w0, w20 - beq .L1752 - ldrh w0, [x4,880] - cmp w0, w20 - beq .L1752 - adrp x3, .LANCHOR2 - mov w2, 6 - add x3, x3, :lo12:.LANCHOR2 - ldr x0, [x4,744] - umull x2, w20, w2 - ldr x5, [x3,2808] - add x1, x5, x2 - cmp x1, x0 - beq .L1752 - ubfiz x0, x20, 1, 16 - ldr x4, [x3,2712] - ldrh w6, [x1,4] - ldrh w1, [x1,2] - ldrh w3, [x4,x0] - cmp w6, wzr - mov w0, 65535 - mul w3, w3, w6 - csinv w3, w3, wzr, ne + adrp x8, .LANCHOR4 + add x2, x8, :lo12:.LANCHOR4 + and w9, w0, 65535 + ldrh w0, [x2, 784] + cmp w0, w9 + beq .L1717 + ldrh w0, [x2, 832] + cmp w0, w9 + beq .L1717 + ldrh w0, [x2, 880] + cmp w0, w9 + beq .L1717 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + mov w1, 6 + ldr x2, [x2, 744] + umull x1, w9, w1 + ldr x3, [x0, 2808] + add x4, x3, x1 + cmp x4, x2 + beq .L1717 + ldr x5, [x0, 2712] + ubfiz x0, x9, 1, 16 + ldrh w2, [x5, x0] + ldrh w0, [x4, 4] + cmp w0, 0 + mul w2, w2, w0 + ldrh w0, [x4, 2] + mov w4, 65535 + csinv w2, w2, wzr, ne + cmp w0, w4 + bne .L1712 + ldrh w1, [x3, x1] cmp w1, w0 - bne .L1754 - ldrh w0, [x5,x2] - cmp w0, w1 - beq .L1752 -.L1754: - mov w0, 6 - umull x1, w1, w0 - mov x0, -6148914691236517206 - asr x2, x1, 1 - add x1, x5, x1 - madd x2, x0, x2, x2 - ldrh w2, [x4,x2,lsl 1] - ldrh w4, [x1,4] - cmp w4, wzr - mul w1, w2, w4 - csinv w1, w1, wzr, ne - cmp w3, w1 - bcs .L1752 - add x19, x19, :lo12:.LANCHOR4 - mov w1, w20 - add x0, x19, 744 + beq .L1717 +.L1712: + mov w1, 6 + mov x4, -6148914691236517206 + movk x4, 0xaaab, lsl 0 + umull x0, w0, w1 + asr x1, x0, 1 + add x0, x3, x0 + mul x1, x1, x4 + ldrh w3, [x0, 4] + cmp w3, 0 + ldrh w1, [x5, x1, lsl 1] + mul w0, w1, w3 + csinv w0, w0, wzr, ne + cmp w2, w0 + bcs .L1717 + add x8, x8, :lo12:.LANCHOR4 + stp x29, x30, [sp, -16]! + mov w1, w9 + add x0, x8, 744 + add x29, sp, 0 bl List_remove_node - ldrh w1, [x19,760] - mov w0, w20 - sub w1, w1, #1 - strh w1, [x19,760] + ldrh w0, [x8, 760] + sub w0, w0, #1 + strh w0, [x8, 760] + mov w0, w9 bl INSERT_DATA_LIST -.L1752: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 + ldp x29, x30, [sp], 16 + ret +.L1717: + mov w0, 0 ret .size List_update_data_list, .-List_update_data_list .align 2 @@ -10636,96 +10469,98 @@ ftl_free_no_use_map_blk: stp x29, x30, [sp, -80]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - str x25, [sp,64] + stp x19, x20, [sp, 16] mov x19, x0 - ldrh w2, [x0,10] - ldr x21, [x0,32] - ldr x22, [x0,16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldrh w2, [x0, 10] + ldp x21, x20, [x0, 32] + ldr x22, [x0, 16] lsl w2, w2, 1 - ldr x20, [x0,40] mov x0, x21 bl ftl_memset mov w0, 0 -.L1759: - ldrh w1, [x19,6] +.L1721: + ldrh w1, [x19, 6] cmp w1, w0 - bls .L1781 - ubfiz x1, x0, 2, 16 - ldr w2, [x20,x1] - mov w1, 0 - ubfx x2, x2, 10, 16 -.L1760: - ldrh w3, [x19,10] - cmp w3, w1 - bls .L1782 - ubfiz x3, x1, 1, 16 - ldrh w4, [x22,x3] - cmp w2, w4 - bne .L1761 - cbz w4, .L1761 - ldrh w4, [x21,x3] - add w4, w4, 1 - strh w4, [x21,x3] -.L1761: - add w1, w1, 1 - uxth w1, w1 - b .L1760 -.L1782: - add w0, w0, 1 - uxth w0, w0 - b .L1759 -.L1781: + bhi .L1725 adrp x0, .LANCHOR2+2346 mov w23, 0 - mov w20, w23 - ldrh w1, [x0,#:lo12:.LANCHOR2+2346] + mov w20, 0 + ldrh w1, [x0, #:lo12:.LANCHOR2+2346] ldrh w0, [x19] - strh w1, [x21,x0,lsl 1] + strh w1, [x21, x0, lsl 1] ldrh w24, [x21] -.L1764: - ldrh w0, [x19,10] +.L1726: + ldrh w0, [x19, 10] cmp w0, w20 - bls .L1783 - ubfiz x2, x20, 1, 16 - ldrh w1, [x21,x2] + bhi .L1730 + mov w0, w23 + ldr x25, [sp, 64] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L1725: + ubfiz x1, x0, 2, 16 + ldr w2, [x20, x1] + mov w1, 0 + ubfx x2, x2, 10, 16 +.L1722: + ldrh w3, [x19, 10] + cmp w3, w1 + bhi .L1724 + add w0, w0, 1 + and w0, w0, 65535 + b .L1721 +.L1724: + ubfiz x3, x1, 1, 16 + ldrh w4, [x22, x3] + cmp w4, w2 + bne .L1723 + cbz w2, .L1723 + ldrh w4, [x21, x3] + add w4, w4, 1 + strh w4, [x21, x3] +.L1723: + add w1, w1, 1 + and w1, w1, 65535 + b .L1722 +.L1730: + ubfiz x0, x20, 1, 16 + ldrh w1, [x21, x0] cmp w24, w1 - bls .L1765 - ldrh w0, [x22,x2] - add x25, x22, x2 - cbnz w0, .L1766 - b .L1767 -.L1765: - cbnz w1, .L1767 - ldrh w0, [x22,x2] - add x25, x22, x2 - cbz w0, .L1767 -.L1769: + bls .L1727 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbnz w0, .L1728 +.L1729: + add w20, w20, 1 + and w20, w20, 65535 + b .L1726 +.L1727: + cbnz w1, .L1729 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbz w0, .L1729 +.L1731: mov w1, 1 bl FtlFreeSysBlkQueueIn strh wzr, [x25] - ldrh w0, [x19,8] + ldrh w0, [x19, 8] sub w0, w0, #1 - strh w0, [x19,8] -.L1767: - add w20, w20, 1 - uxth w20, w20 - b .L1764 -.L1766: + strh w0, [x19, 8] + b .L1729 +.L1732: + mov w24, 0 + b .L1731 +.L1728: mov w23, w20 + cbz w1, .L1732 mov w24, w1 - cbz w1, .L1769 - b .L1767 -.L1783: - mov w0, w23 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L1729 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global ftl_map_blk_alloc_new_blk @@ -10733,189 +10568,185 @@ ftl_free_no_use_map_blk: ftl_map_blk_alloc_new_blk: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] mov w20, 0 - ldrh w2, [x0,10] - ldr x1, [x0,16] -.L1785: + str x21, [sp, 32] + ldrh w2, [x0, 10] + ldr x1, [x0, 16] +.L1742: cmp w20, w2 - beq .L1789 - mov x22, x1 - ldrh w21, [x1],2 - cbnz w21, .L1786 + beq .L1746 + mov x21, x1 + ldrh w3, [x1], 2 + cbnz w3, .L1743 mov x19, x0 bl FtlFreeSysBlkQueueOut - strh w0, [x22] - uxth w1, w0 + and w1, w0, 65535 + strh w0, [x21] sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth - bcs .L1787 - adrp x2, .LANCHOR2+2998 + bcs .L1744 + adrp x0, .LANCHOR2+2998 + ldrh w2, [x0, #:lo12:.LANCHOR2+2998] adrp x0, .LC38 add x0, x0, :lo12:.LC38 - ldrh w2, [x2,#:lo12:.LANCHOR2+2998] bl printk -.L1788: - b .L1788 -.L1787: - ldr w0, [x19,48] - strh w21, [x19,2] +.L1745: + b .L1745 +.L1744: + ldr w0, [x19, 48] + strh wzr, [x19, 2] add w0, w0, 1 - str w0, [x19,48] - ldrh w0, [x19,8] + str w0, [x19, 48] + ldrh w0, [x19, 8] strh w20, [x19] add w0, w0, 1 - strh w0, [x19,8] - b .L1789 -.L1786: - add w20, w20, 1 - uxth w20, w20 - b .L1785 -.L1789: + strh w0, [x19, 8] +.L1746: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L1743: + add w20, w20, 1 + and w20, w20, 65535 + b .L1742 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global FtlMapWritePage .type FtlMapWritePage, %function FtlMapWritePage: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x25, x26, [sp,64] - stp x23, x24, [sp,48] - adrp x26, .LANCHOR2 - adrp x23, .LC39 - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - stp x19, x20, [sp,16] - mov w25, w1 + stp x19, x20, [sp, 16] mov x19, x0 - mov x27, x2 + stp x21, x22, [sp, 32] mov w22, 0 - mov w28, 65535 - add x21, x26, :lo12:.LANCHOR2 - add x23, x23, :lo12:.LC39 -.L1792: - add x0, x26, :lo12:.LANCHOR2 - adrp x20, .LANCHOR2 - ldr w1, [x0,2420] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + stp x25, x26, [sp, 64] + adrp x24, .LANCHOR0 + stp x27, x28, [sp, 80] + mov w26, w1 + mov x27, x2 + mov x21, x23 + add x20, x23, :lo12:.LANCHOR2 + add x24, x24, :lo12:.LANCHOR0 +.L1750: + add x0, x23, :lo12:.LANCHOR2 + ldr w1, [x0, 2420] add w1, w1, 1 - str w1, [x0,2420] - ldrh w0, [x0,2346] - ldrh w1, [x19,2] + str w1, [x0, 2420] + ldrh w0, [x0, 2346] + ldrh w1, [x19, 2] sub w0, w0, #1 cmp w1, w0 - bge .L1793 - ldrh w0, [x19] - cmp w0, w28 - bne .L1794 -.L1793: + bge .L1751 + ldrh w1, [x19] + mov w0, 65535 + cmp w1, w0 + bne .L1752 +.L1751: mov x0, x19 bl Ftl_write_map_blk_to_last_page -.L1794: - ldr w1, [x21,2928] - cbnz w1, .L1795 - ldrh w2, [x19] - add x3, x21, 2936 - ldr x0, [x19,16] - str x3, [x29,104] - ldrh w24, [x0,x2,lsl 1] +.L1752: + ldr w0, [x20, 2928] + cbnz w0, .L1765 + ldrh w1, [x19] mov w2, 16 - ldrh w0, [x19,2] - str x27, [x21,2944] - orr w0, w0, w24, lsl 10 - str w0, [x21,2940] - ldr x0, [x21,2640] - str x0, [x21,2952] + ldr x0, [x19, 16] + ldrh w25, [x0, x1, lsl 1] + mov w1, 0 + ldrh w0, [x19, 2] + str x27, [x20, 2944] + orr w0, w0, w25, lsl 10 + str w0, [x20, 2940] + ldr x0, [x20, 2640] + str x0, [x20, 2952] bl ftl_memset - 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, .L1796 - ldr x0, [x3,8] - ldrh w1, [x21,2354] - str x2, [x29,104] + ldr x6, [x20, 2952] + ldr w0, [x19, 48] + str w0, [x6, 4] + strh w26, [x6, 8] + ldrh w0, [x19, 4] + strh w0, [x6] + strh w25, [x6, 2] + ldrb w0, [x24, 88] + cbz w0, .L1754 + ldr x0, [x20, 2944] + ldrh w1, [x20, 2354] bl js_hash - ldr x2, [x29,104] - str w0, [x2,12] -.L1796: - add x4, x21, 2936 - mov w1, 1 - mov w2, w1 - mov x0, x4 - mov w3, w1 - str x4, [x29,104] + str w0, [x6, 12] +.L1754: + add x28, x20, 2936 + mov w3, 1 + mov x0, x28 + mov w1, w3 + mov w2, w3 bl FlashProgPages - ldrh w1, [x19,2] - ldr x4, [x29,104] - add w1, w1, 1 - uxth w1, w1 - strh w1, [x19,2] - ldr w2, [x21,2936] - cmn w2, #1 - bne .L1797 - ldr w1, [x4,4] - mov x0, x23 + ldrh w0, [x19, 2] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x19, 2] + ldr w1, [x20, 2936] + cmn w1, #1 + bne .L1755 + ldr w1, [x20, 2940] + adrp x0, .LC39 + add x0, x0, :lo12:.LC39 add w22, w22, 1 + and w22, w22, 65535 bl printk - uxth w22, w22 - ldrh w0, [x19,2] + ldrh w0, [x19, 2] cmp w0, 2 - bhi .L1798 - ldrh w0, [x21,2346] + bhi .L1756 + ldrh w0, [x20, 2346] sub w0, w0, #1 - strh w0, [x19,2] -.L1798: + strh w0, [x19, 2] +.L1756: cmp w22, 3 - bls .L1792 - add x20, x20, :lo12:.LANCHOR2 + bls .L1750 + add x21, x21, :lo12:.LANCHOR2 + mov w2, w22 adrp x0, .LC40 add x0, x0, :lo12:.LC40 - mov w2, w22 - ldr w1, [x20,2940] + ldr w1, [x21, 2940] bl printk mov w0, 1 - str w0, [x20,2928] - b .L1795 -.L1797: - cbz w2, .L1800 - strh w24, [x19,60] -.L1800: - cmp w1, 1 - beq .L1801 - cmp w2, 256 - beq .L1801 - ldr w0, [x19,56] - cbz w0, .L1802 -.L1801: - str wzr, [x19,56] - b .L1792 -.L1802: - add x20, x20, :lo12:.LANCHOR2 - ldr x0, [x19,40] - ldr w1, [x20,2940] - str w1, [x0,w25,uxtw 2] -.L1795: + str w0, [x21, 2928] +.L1765: 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], 112 + 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 +.L1755: + cbz w1, .L1758 + strh w25, [x19, 60] + cmp w0, 1 + bne .L1759 +.L1760: + str wzr, [x19, 56] + b .L1750 +.L1759: + cmp w1, 256 +.L1773: + beq .L1760 + ldr w0, [x19, 56] + cbnz w0, .L1760 + add x21, x21, :lo12:.LANCHOR2 + ldr x0, [x19, 40] + ldr w1, [x21, 2940] + str w1, [x0, w26, uxtw 2] + b .L1765 +.L1758: + cmp w0, 1 + b .L1773 .size FtlMapWritePage, .-FtlMapWritePage .align 2 .global ftl_map_blk_gc @@ -10923,114 +10754,113 @@ FtlMapWritePage: ftl_map_blk_gc: 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] - str x27, [sp,80] + stp x19, x20, [sp, 16] mov x19, x0 + stp x21, x22, [sp, 32] adrp x20, .LANCHOR2 - ldr x21, [x0,16] - ldr x25, [x0,40] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldr x21, [x0, 16] + ldr x25, [x0, 40] bl ftl_free_no_use_map_blk - ldrh w1, [x19,10] - ldrh w2, [x19,8] + ldrh w1, [x19, 10] + ldrh w2, [x19, 8] sub w1, w1, #4 cmp w2, w1 - blt .L1810 - ubfiz x1, x0, 1, 16 - ldrh w24, [x21,x1] - cbz w24, .L1810 - ldr w0, [x19,52] - cbnz w0, .L1810 - mov w2, 1 - str w2, [x19,52] - strh w0, [x21,x1] - ldrh w0, [x19,8] - ldrh w1, [x19,2] + blt .L1775 + ubfiz x0, x0, 1, 16 + ldrh w24, [x21, x0] + cbz w24, .L1775 + ldr w1, [x19, 52] + cbnz w1, .L1775 + mov w1, 1 + str w1, [x19, 52] + strh wzr, [x21, x0] + ldrh w0, [x19, 8] + ldrh w1, [x19, 2] sub w0, w0, #1 - strh w0, [x19,8] + strh w0, [x19, 8] add x0, x20, :lo12:.LANCHOR2 - ldrh w0, [x0,2346] + ldrh w0, [x0, 2346] cmp w1, w0 - bcc .L1811 + bcc .L1776 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L1811: +.L1776: add x26, x20, :lo12:.LANCHOR2 mov w21, 0 add x22, x26, 2936 -.L1812: - ldrh w0, [x19,6] +.L1777: + ldrh w0, [x19, 6] cmp w0, w21 - bls .L1821 + bhi .L1782 + mov w1, 1 + mov w0, w24 + bl FtlFreeSysBlkQueueIn + str wzr, [x19, 52] +.L1775: + add x20, x20, :lo12:.LANCHOR2 + ldrh w1, [x19, 2] + ldrh w0, [x20, 2346] + cmp w1, w0 + bcc .L1780 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk + b .L1780 +.L1782: ubfiz x0, x21, 2, 16 add x27, x25, x0 - ldr w1, [x25,x0] + ldr w1, [x25, x0] cmp w24, w1, lsr 10 - bne .L1813 - ldr x1, [x26,2584] - ldr x23, [x26,2640] - str x1, [x22,8] - mov w1, 1 - str x23, [x22,16] - mov w2, w1 - ldr w0, [x25,x0] - str w0, [x22,4] + bne .L1778 + ldr x1, [x26, 2584] + mov w2, 1 + ldr x23, [x26, 2640] + stp x1, x23, [x22, 8] + mov w1, w2 + ldr w0, [x25, x0] + str w0, [x22, 4] mov x0, x22 bl FlashReadPages ldr w0, [x22] cmn w0, #1 - bne .L1814 -.L1816: + bne .L1779 +.L1781: add x20, x20, :lo12:.LANCHOR2 str wzr, [x27] adrp x0, .LC41 - ldrh w2, [x23,8] add x0, x0, :lo12:.LC41 - ldr w1, [x20,2940] + ldrh w2, [x23, 8] + ldr w1, [x20, 2940] bl printk mov w0, 1 - str w0, [x20,2928] - b .L1815 -.L1814: - ldrh w0, [x23,8] - cmp w0, w21 - bne .L1816 - ldrh w1, [x23] - ldrh w0, [x19,4] - cmp w1, w0 - bne .L1816 - ldr x2, [x22,8] - mov x0, x19 - mov w1, w21 - bl FtlMapWritePage -.L1813: - add w21, w21, 1 - uxth w21, w21 - b .L1812 -.L1821: - mov w0, w24 - mov w1, 1 - bl FtlFreeSysBlkQueueIn - str wzr, [x19,52] -.L1810: - add x20, x20, :lo12:.LANCHOR2 - ldrh w1, [x19,2] - ldrh w0, [x20,2346] - cmp w1, w0 - bcc .L1815 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L1815: + str w0, [x20, 2928] +.L1780: mov w0, 0 - ldr x27, [sp,80] - 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 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 +.L1779: + ldrh w0, [x23, 8] + cmp w0, w21 + bne .L1781 + ldrh w1, [x23] + ldrh w0, [x19, 4] + cmp w1, w0 + bne .L1781 + ldr x2, [x22, 8] + mov w1, w21 + mov x0, x19 + bl FtlMapWritePage +.L1778: + add w21, w21, 1 + and w21, w21, 65535 + b .L1777 .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 2 .global Ftl_write_map_blk_to_last_page @@ -11038,104 +10868,104 @@ ftl_map_blk_gc: Ftl_write_map_blk_to_last_page: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR2 - add x1, x21, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - ldr w20, [x1,2928] - ldr x22, [x0,16] - ldr x24, [x0,40] - cbnz w20, .L1823 + add x20, x21, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + ldr w1, [x20, 2928] + cbnz w1, .L1788 mov x19, x0 ldrh w0, [x0] - mov w2, 65535 - cmp w0, w2 - bne .L1824 - ldrh w0, [x19,8] + mov w1, 65535 + cmp w0, w1 + ldr x22, [x19, 16] + bne .L1789 + ldrh w0, [x19, 8] add w0, w0, 1 - strh w0, [x19,8] + strh w0, [x19, 8] bl FtlFreeSysBlkQueueOut strh w0, [x22] - strh w20, [x19,2] - ldr w0, [x19,48] - strh w20, [x19] + strh wzr, [x19, 2] + ldr w0, [x19, 48] + strh wzr, [x19] add w0, w0, 1 - str w0, [x19,48] - b .L1823 -.L1824: - ubfiz x0, x0, 1, 16 - ldrh w2, [x19,2] - ldrh w23, [x22,x0] - ldr x22, [x1,2640] - str x22, [x1,2952] - orr w2, w2, w23, lsl 10 - str w2, [x1,2940] - ldr x2, [x1,2576] - str x2, [x1,2944] - 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,2346] - ldr x0, [x1,2576] - mov w1, 255 - lsl w2, w2, 3 - bl ftl_memset - mov w0, w20 -.L1825: - ldrh w1, [x19,6] - cmp w1, w0 - bls .L1832 - ubfiz x3, x0, 2, 32 - ldr w1, [x24,x3] - cmp w23, w1, lsr 10 - bne .L1826 - add x2, x21, :lo12:.LANCHOR2 - add w20, w20, 1 - uxth w20, w20 - ldr x4, [x2,2576] - ubfiz x1, x20, 3, 16 - str w0, [x4,x1] - ldr x2, [x2,2576] - ldr w3, [x24,x3] - add x1, x2, x1 - str w3, [x1,4] -.L1826: - add w0, w0, 1 - uxth w0, w0 - b .L1825 -.L1832: - adrp x0, .LANCHOR0+88 - ldrb w0, [x0,#:lo12:.LANCHOR0+88] - cbz w0, .L1828 - add x1, x21, :lo12:.LANCHOR2 - ldr x0, [x1,2944] - ldrh w1, [x1,2354] - bl js_hash - str w0, [x22,12] -.L1828: - mov w1, 1 - add x0, x21, :lo12:.LANCHOR2 - add x0, x0, 2936 - mov w2, w1 - mov w3, 0 - bl FlashProgPages - ldrh w0, [x19,2] - add w0, w0, 1 - strh w0, [x19,2] - mov x0, x19 - bl ftl_map_blk_gc -.L1823: + str w0, [x19, 48] +.L1788: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L1789: + ubfiz x0, x0, 1, 16 + ldrh w1, [x19, 2] + ldr x24, [x19, 40] + ldrh w23, [x22, x0] + ldr x22, [x20, 2640] + ldr w0, [x19, 48] + orr w1, w1, w23, lsl 10 + str w1, [x20, 2940] + ldr x1, [x20, 2576] + str x1, [x20, 2944] + str x22, [x20, 2952] + mov w1, 255 + str w0, [x22, 4] + mov w0, -1291 + strh w0, [x22, 8] + ldrh w0, [x19, 4] + strh w0, [x22] + strh w23, [x22, 2] + ldrh w2, [x20, 2346] + ldr x0, [x20, 2576] + lsl w2, w2, 3 + bl ftl_memset + mov w1, 0 + mov w0, 0 +.L1790: + ldrh w2, [x19, 6] + cmp w2, w0 + bhi .L1792 + adrp x0, .LANCHOR0+88 + ldrb w0, [x0, #:lo12:.LANCHOR0+88] + cbz w0, .L1793 + add x0, x21, :lo12:.LANCHOR2 + ldrh w1, [x0, 2354] + ldr x0, [x0, 2944] + bl js_hash + str w0, [x22, 12] +.L1793: + add x0, x21, :lo12:.LANCHOR2 + mov w2, 1 + mov w3, 0 + mov w1, w2 + add x0, x0, 2936 + bl FlashProgPages + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + mov x0, x19 + bl ftl_map_blk_gc + b .L1788 +.L1792: + ubfiz x2, x0, 2, 16 + ldr w3, [x24, x2] + cmp w23, w3, lsr 10 + bne .L1791 + add w1, w1, 1 + ldr x4, [x20, 2576] + and w1, w1, 65535 + ubfiz x3, x1, 3, 16 + str w0, [x4, x3] + ldr w4, [x24, x2] + ldr x2, [x20, 2576] + add x2, x2, x3 + str w4, [x2, 4] +.L1791: + add w0, w0, 1 + and w0, w0, 65535 + b .L1790 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .align 2 .global flush_l2p_region @@ -11143,25 +10973,25 @@ Ftl_write_map_blk_to_last_page: flush_l2p_region: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - ubfiz x19, x0, 4, 16 - add x20, x20, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + ubfiz x20, x0, 4, 16 + ldr x0, [x19, 2792] + add x1, x0, x20 + ldr x2, [x1, 8] + ldrh w1, [x0, x20] adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 add x0, x0, 928 - ldr x1, [x20,2792] - add x2, x1, x19 - ldrh w1, [x1,x19] - ldr x2, [x2,8] bl FtlMapWritePage - ldr x0, [x20,2792] - add x19, x0, x19 - ldr w0, [x19,4] - and w0, w0, 2147483647 - str w0, [x19,4] + ldr x0, [x19, 2792] + add x0, x0, x20 + ldr w1, [x0, 4] + and w1, w1, 2147483647 + str w1, [x0, 4] mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size flush_l2p_region, .-flush_l2p_region @@ -11170,69 +11000,64 @@ flush_l2p_region: .type select_l2p_ram_region, %function select_l2p_ram_region: adrp x0, .LANCHOR2 - mov x3, 0 add x0, x0, :lo12:.LANCHOR2 - mov w4, 65535 - ldrh w2, [x0,2382] - ldr x1, [x0,2792] -.L1835: - uxth w0, w3 - cmp w0, w2 - bcs .L1851 - add x3, x3, 1 - add x5, x1, x3, lsl 4 - ldrh w5, [x5,-16] - cmp w5, w4 - bne .L1835 - b .L1836 -.L1851: - mov w0, w2 mov x3, 0 - mov w6, -2147483648 -.L1838: - uxth w5, w3 - cmp w5, w2 - bcs .L1852 - add x4, x1, x3, lsl 4 - ldr w4, [x4,4] - tbnz w4, #31, .L1847 - cmp w4, w6 - bcc .L1839 -.L1847: - mov w4, w6 - mov w5, w0 -.L1839: - add x3, x3, 1 - mov w6, w4 - mov w0, w5 - b .L1838 -.L1852: + mov w4, 65535 + ldrh w2, [x0, 2382] + ldr x1, [x0, 2792] +.L1801: + and w0, w3, 65535 cmp w0, w2 - bcc .L1836 + bcc .L1803 + add x4, x1, 4 + mov w0, w2 + mov w6, -2147483648 + mov w3, 0 +.L1804: + cmp w3, w2 + bne .L1806 + cmp w0, w2 + bcc .L1802 adrp x0, .LANCHOR4+992 - add x1, x1, 4 mov w4, -1 mov w3, 0 - ldrh w5, [x0,#:lo12:.LANCHOR4+992] + ldrh w5, [x0, #:lo12:.LANCHOR4+992] mov w0, w2 -.L1842: +.L1807: cmp w3, w2 - beq .L1836 - ldr w7, [x1] - cmp w7, w4 - bcs .L1843 - ldrh w6, [x1,-4] + beq .L1802 + ldr w7, [x1, 4] + cmp w4, w7 + bls .L1808 + ldrh w6, [x1] cmp w6, w5 csel w4, w4, w7, eq - cmp w6, w5 csel w0, w0, w3, eq -.L1843: +.L1808: add w3, w3, 1 add x1, x1, 16 - uxth w3, w3 - b .L1842 -.L1836: + and w3, w3, 65535 + b .L1807 +.L1803: + add x3, x3, 1 + add x5, x1, x3, lsl 4 + ldrh w5, [x5, -16] + cmp w5, w4 + bne .L1801 +.L1802: ret +.L1806: + ldr w5, [x4] + tbnz w5, #31, .L1805 + cmp w6, w5 + bls .L1805 + mov w6, w5 + mov w0, w3 +.L1805: + add w3, w3, 1 + add x4, x4, 16 + and w3, w3, 65535 + b .L1804 .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global log2phys @@ -11240,377 +11065,370 @@ select_l2p_ram_region: log2phys: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .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] - ldr w5, [x4,2924] - ldrh w3, [x4,2352] - cmp w0, w5 - bcs .L1854 - add w27, w3, 7 - str x1, [x29,104] - lsr w28, w0, w27 + add x3, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w4, [x3, 2924] + cmp w0, w4 + bcs .L1811 mov w25, w0 - str w2, [x29,100] + ldrh w0, [x3, 2352] + mov x23, x1 + ldr x8, [x3, 2792] + add w27, w0, 7 + ldrh w1, [x3, 2382] mov x0, 0 - uxth w22, w28 - ldrh w1, [x4,2382] - ldr x19, [x4,2792] - b .L1855 -.L1854: - mov w0, -1 - cbnz w2, .L1856 - str w0, [x1] - b .L1856 -.L1860: - add x0, x0, 1 - add x2, x19, x0, lsl 4 - ldrh w2, [x2,-16] - cmp w2, w22 - beq .L1857 -.L1855: - uxth x20, w0 + str w2, [x29, 108] + lsr w28, w25, w27 + and w22, w28, 65535 +.L1812: + and x20, x0, 65535 cmp w20, w1 - bcc .L1860 + bcc .L1817 bl select_l2p_ram_region - uxth x20, w0 + and x20, x0, 65535 ubfiz x26, x20, 4, 16 mov w2, 65535 - add x1, x19, x26 - ldrh w3, [x19,x26] + add x1, x8, x26 + ldrh w3, [x8, x26] cmp w3, w2 - bne .L1868 -.L1861: + beq .L1818 + ldr w1, [x1, 4] + tbz w1, #31, .L1818 + bl flush_l2p_region +.L1818: add x19, x21, :lo12:.LANCHOR2 ubfiz x0, x22, 2, 16 - ldr x1, [x19,2768] - ldr w24, [x1,x0] - cbnz w24, .L1862 - ldr x0, [x19,2792] + ldr x1, [x19, 2768] + ldr w3, [x1, x0] + cbnz w3, .L1819 + ldr x0, [x19, 2792] mov w1, 255 - ldrh w2, [x19,2354] + ldrh w2, [x19, 2354] add x0, x0, x26 - ldr x0, [x0,8] + ldr x0, [x0, 8] bl ftl_memset - ldr x0, [x19,2792] - strh w22, [x0,x26] - ldr x0, [x19,2792] + ldr x0, [x19, 2792] + strh w22, [x0, x26] + ldr x0, [x19, 2792] add x26, x0, x26 - str w24, [x26,4] -.L1857: - mov x1, 1 - lsl x3, x1, x27 - ldr w1, [x29,100] - sub w3, w3, #1 - and w0, w25, w3 - uxth x0, w0 - cbnz w1, .L1858 - add x1, x21, :lo12:.LANCHOR2 - ldr x1, [x1,2792] - add x1, x1, x20, lsl 4 - ldr x1, [x1,8] - ldr w0, [x1,x0,lsl 2] - ldr x1, [x29,104] + str wzr, [x26, 4] + b .L1814 +.L1811: + mov w0, -1 + cbnz w2, .L1810 str w0, [x1] - b .L1859 -.L1858: - ldr x2, [x29,104] - add x3, x21, :lo12:.LANCHOR2 - lsl x1, x20, 4 - ldr w4, [x2] - ldr x2, [x3,2792] - add x2, x2, x1 - ldr x2, [x2,8] - str w4, [x2,x0,lsl 2] - ldr x0, [x3,2792] - add x0, x0, x1 - ldr w1, [x0,4] - orr w1, w1, -2147483648 - str w1, [x0,4] - adrp x0, .LANCHOR4+992 - strh w22, [x0,#:lo12:.LANCHOR4+992] -.L1859: - add x21, x21, :lo12:.LANCHOR2 - ldr x0, [x21,2792] - add x20, x0, x20, lsl 4 - mov w0, 0 - ldr w1, [x20,4] - cmn w1, #1 - beq .L1856 - add w1, w1, 1 - str w1, [x20,4] - b .L1856 -.L1868: - ldr w1, [x1,4] - tbz w1, #31, .L1861 - bl flush_l2p_region - b .L1861 -.L1862: - ldr x0, [x19,2792] - mov w1, 1 - add x23, x19, 2936 - mov w2, w1 - add x0, x0, x26 - str w24, [x19,2940] - ldr x0, [x0,8] - str x0, [x19,2944] - ldr x0, [x19,2640] - str x0, [x19,2952] - mov x0, x23 - bl FlashReadPages - ldr x0, [x19,2952] - ldrh w0, [x0,8] - cmp w0, w22 - beq .L1863 - adrp x0, .LC42 - uxth w1, w28 - mov w2, w24 - add x0, x0, :lo12:.LC42 - bl printk - mov w2, 4 - ldr x1, [x19,2952] - adrp x0, .LC18 - mov w3, w2 - add x0, x0, :lo12:.LC18 - bl rknand_print_hex - adrp x0, .LC43 - ldr x1, [x19,2768] - ldrh w3, [x19,2380] - add x0, x0, :lo12:.LC43 - mov w2, 4 - bl rknand_print_hex - mov w0, 1 - str w0, [x19,2928] - b .L1864 -.L1863: - ldr w0, [x19,2936] - cmp w0, 256 - bne .L1864 - and w28, w28, 65535 - adrp x0, .LC44 - mov w1, w28 - mov w2, w24 - add x0, x0, :lo12:.LC44 - bl printk - ldr x2, [x19,2792] - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - mov w1, w28 - add x2, x2, x26 - add x0, x0, 928 - ldr x2, [x2,8] - bl FtlMapWritePage -.L1864: - add x1, x21, :lo12:.LANCHOR2 - ldr x0, [x1,2792] - add x0, x0, x26 - str wzr, [x0,4] - ldr x0, [x1,2792] - strh w22, [x0,x26] - b .L1857 -.L1856: - 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] +.L1810: + 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 +.L1817: + add x0, x0, 1 + add x2, x8, x0, lsl 4 + ldrh w2, [x2, -16] + cmp w2, w22 + bne .L1812 +.L1814: + ldr w1, [x29, 108] + mov x0, 1 + lsl x0, x0, x27 + sub w0, w0, #1 + and w0, w0, w25 + and x0, x0, 65535 + cbnz w1, .L1815 + add x1, x21, :lo12:.LANCHOR2 + ldr x1, [x1, 2792] + add x1, x1, x20, lsl 4 + ldr x1, [x1, 8] + ldr w0, [x1, x0, lsl 2] + str w0, [x23] +.L1816: + add x21, x21, :lo12:.LANCHOR2 + ldr x0, [x21, 2792] + add x20, x0, x20, lsl 4 + ldr w0, [x20, 4] + cmn w0, #1 + beq .L1823 + add w0, w0, 1 + str w0, [x20, 4] +.L1823: + mov w0, 0 + b .L1810 +.L1815: + add x3, x21, :lo12:.LANCHOR2 + lsl x1, x20, 4 + ldr w4, [x23] + ldr x2, [x3, 2792] + add x2, x2, x1 + ldr x2, [x2, 8] + str w4, [x2, x0, lsl 2] + ldr x0, [x3, 2792] + add x0, x0, x1 + ldr w1, [x0, 4] + orr w1, w1, -2147483648 + str w1, [x0, 4] + adrp x0, .LANCHOR4+992 + strh w22, [x0, #:lo12:.LANCHOR4+992] + b .L1816 +.L1819: + ldr x0, [x19, 2792] + add x24, x19, 2936 + mov w2, 1 + str w3, [x19, 2940] + add x0, x0, x26 + str w3, [x29, 104] + mov w1, w2 + ldr x0, [x0, 8] + str x0, [x19, 2944] + ldr x0, [x19, 2640] + str x0, [x19, 2952] + mov x0, x24 + bl FlashReadPages + ldr x0, [x19, 2952] + ldr w3, [x29, 104] + ldrh w0, [x0, 8] + cmp w0, w22 + beq .L1820 + mov w2, w3 + and w1, w28, 65535 + adrp x0, .LC42 + add x0, x0, :lo12:.LC42 + bl printk + ldr x1, [x19, 2952] + mov w3, 4 + adrp x0, .LC18 + mov w2, w3 + add x0, x0, :lo12:.LC18 + bl rknand_print_hex + ldrh w3, [x19, 2380] + mov w2, 4 + ldr x1, [x19, 2768] + adrp x0, .LC43 + add x0, x0, :lo12:.LC43 + bl rknand_print_hex + mov w0, 1 + str w0, [x19, 2928] +.L1821: + add x1, x21, :lo12:.LANCHOR2 + ldr x0, [x1, 2792] + add x0, x0, x26 + str wzr, [x0, 4] + ldr x0, [x1, 2792] + strh w22, [x0, x26] + b .L1814 +.L1820: + ldr w0, [x19, 2936] + cmp w0, 256 + bne .L1821 + and w28, w28, 65535 + mov w2, w3 + mov w1, w28 + adrp x0, .LC44 + add x0, x0, :lo12:.LC44 + bl printk + ldr x0, [x19, 2792] + mov w1, w28 + add x0, x0, x26 + ldr x2, [x0, 8] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + add x0, x0, 928 + bl FtlMapWritePage + b .L1821 .size log2phys, .-log2phys .align 2 .global FtlVendorPartWrite .type FtlVendorPartWrite, %function FtlVendorPartWrite: - stp x29, x30, [sp, -176]! + stp x29, x30, [sp, -160]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR2 - mov w23, w0 - add x0, x24, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w21, w1 - add w1, w23, w1 - ldrh w22, [x0,2352] - mov x26, x2 - ldrh w0, [x0,2340] - mov w20, -1 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov w22, w1 + mov w24, w0 + add w1, w0, w1 + stp x25, x26, [sp, 64] + ldrh w0, [x19, 2340] + stp x27, x28, [sp, 80] cmp w1, w0 - bhi .L1870 + bhi .L1834 + ldrh w23, [x19, 2352] adrp x27, .LANCHOR4 - lsr w22, w23, w22 add x27, x27, :lo12:.LANCHOR4 - mov w20, 0 + mov x25, x2 add x27, x27, 1000 -.L1871: - cbz w21, .L1870 - add x2, x24, :lo12:.LANCHOR2 - ldrh w1, [x2,2350] - ldr x0, [x2,2760] - udiv w25, w23, w1 - ldr w3, [x0,w22,uxtw 2] - uxth w0, w21 - msub w25, w25, w1, w23 - sub w19, w1, w25 - uxth w19, w19 - cmp w19, w21 - csel w19, w0, w19, hi - cmp w19, w1 - beq .L1873 - cbz w3, .L1873 - ldr x0, [x2,2592] - mov w1, 1 - str x0, [x29,128] - mov w2, w1 - add x0, x29, 120 - str w3, [x29,124] - str xzr, [x29,136] + mov w26, 0 + lsr w23, w24, w23 +.L1828: + cbnz w22, .L1833 +.L1826: + 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], 160 + ret +.L1833: + ldrh w1, [x19, 2350] + ldr x0, [x19, 2760] + udiv w21, w24, w1 + ldr w2, [x0, w23, uxtw 2] + and w0, w22, 65535 + msub w21, w21, w1, w24 + sub w20, w1, w21 + and w20, w20, 65535 + cmp w22, w20 + csel w20, w0, w20, cc + cbz w2, .L1830 + cmp w20, w1 + beq .L1830 + ldr x0, [x19, 2592] + str w2, [x29, 108] + mov w2, 1 + stp x0, xzr, [x29, 112] + mov w1, w2 + add x0, x29, 104 bl FlashReadPages - b .L1874 -.L1873: - add x2, x24, :lo12:.LANCHOR2 - mov w1, 0 - ldr x0, [x2,2592] - ldrh w2, [x2,2354] - bl ftl_memset -.L1874: - add x3, x24, :lo12:.LANCHOR2 - lsl w28, w19, 9 - ubfiz x25, x25, 9, 16 - mov x1, x26 +.L1831: + ldr x0, [x19, 2592] + lsl w21, w21, 9 + lsl w28, w20, 9 + asr w21, w21, 2 + mov x1, x25 mov w2, w28 - str x3, [x29,104] - ldr x0, [x3,2592] - sub w21, w21, w19 - add w23, w23, w19 - add x26, x26, w28, sxtw - add x0, x0, x25 + add x0, x0, w21, sxtw 2 bl ftl_memcpy - ldr x3, [x29,104] - mov w1, w22 + ldr x2, [x19, 2592] + mov w1, w23 mov x0, x27 - add w22, w22, 1 - ldr x2, [x3,2592] + sub w22, w22, w20 + add w24, w24, w20 + add x25, x25, w28, sxtw + add w23, w23, 1 bl FtlMapWritePage cmn w0, #1 - csinv w20, w20, wzr, ne - b .L1871 -.L1870: - mov w0, w20 - 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 - ret + csinv w26, w26, wzr, ne + b .L1828 +.L1830: + ldrh w2, [x19, 2354] + mov w1, 0 + ldr x0, [x19, 2592] + bl ftl_memset + b .L1831 +.L1834: + mov w26, -1 + b .L1826 .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 2 .global FtlVendorPartRead .type FtlVendorPartRead, %function FtlVendorPartRead: - stp x29, x30, [sp, -192]! + stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x25, x26, [sp,64] - adrp x25, .LANCHOR2 - stp x23, x24, [sp,48] - mov w23, w0 - add x0, x25, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - stp x19, x20, [sp,16] - mov w22, w1 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + stp x21, x22, [sp, 32] + mov w24, w0 + mov w23, w1 + stp x25, x26, [sp, 64] + add w1, w0, w1 + stp x27, x28, [sp, 80] + ldrh w0, [x19, 2340] + cmp w1, w0 + bhi .L1848 + ldrh w22, [x19, 2352] + adrp x25, .LANCHOR4 + add x25, x25, :lo12:.LANCHOR4 mov x27, x2 - add w2, w23, w1 - ldrh w1, [x0,2340] - ldrh w20, [x0,2352] - mov w0, -1 - cmp w2, w1 - bhi .L1885 - adrp x0, .LC45 - adrp x26, .LANCHOR4 - add x0, x0, :lo12:.LC45 - add x26, x26, :lo12:.LANCHOR4 - str x0, [x29,120] - lsr w20, w23, w20 - add x0, x26, 1000 - mov w21, 0 - str x0, [x29,112] -.L1886: - cbz w22, .L1894 - add x26, x25, :lo12:.LANCHOR2 - ldrh w19, [x26,2350] - ldr x0, [x26,2760] - udiv w24, w23, w19 - ldr w4, [x0,w20,uxtw 2] - uxth w0, w22 - msub w24, w24, w19, w23 - sub w19, w19, w24 - uxth w19, w19 - cmp w19, w22 - csel w19, w0, w19, hi - lsl w28, w19, 9 - cbz w4, .L1888 - ldr x0, [x26,2592] - mov w1, 1 - str x0, [x29,144] - mov w2, w1 - add x0, x29, 136 - str w4, [x29,140] - str x4, [x29,104] - str xzr, [x29,152] - bl FlashReadPages - ldr w0, [x29,136] - ldr x4, [x29,104] - cmn w0, #1 - ldr w0, [x26,2936] - csinv w21, w21, wzr, ne - cmp w0, 256 - bne .L1890 - ldr x0, [x29,120] - mov w1, w20 - mov w2, w4 - bl printk - ldr x0, [x29,112] - mov w1, w20 - ldr x2, [x26,2592] - bl FtlMapWritePage -.L1890: - add x0, x25, :lo12:.LANCHOR2 - ubfiz x24, x24, 9, 16 - mov w2, w28 - ldr x1, [x0,2592] - mov x0, x27 - add x1, x1, x24 - bl ftl_memcpy - b .L1891 -.L1888: - mov x0, x27 - mov w1, w4 - mov w2, w28 - bl ftl_memset -.L1891: - add w20, w20, 1 - sub w22, w22, w19 - add w23, w23, w19 - add x27, x27, w28, sxtw - b .L1886 -.L1894: - mov w0, w21 -.L1885: - 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], 192 + add x25, x25, 1000 + mov w26, 0 + lsr w22, w24, w22 +.L1841: + cbnz w23, .L1847 +.L1839: + 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], 176 ret +.L1847: + ldrh w20, [x19, 2350] + ldr x0, [x19, 2760] + udiv w21, w24, w20 + ldr w3, [x0, w22, uxtw 2] + and w0, w23, 65535 + msub w21, w21, w20, w24 + sub w20, w20, w21 + and w20, w20, 65535 + cmp w23, w20 + csel w20, w0, w20, cc + lsl w28, w20, 9 + cbz w3, .L1843 + ldr x0, [x19, 2592] + mov w2, 1 + str w3, [x29, 108] + mov w1, w2 + str w3, [x29, 124] + stp x0, xzr, [x29, 128] + add x0, x29, 120 + bl FlashReadPages + ldr w0, [x29, 120] + ldr w3, [x29, 108] + cmn w0, #1 + ldr w0, [x19, 2936] + csinv w26, w26, wzr, ne + cmp w0, 256 + bne .L1845 + mov w2, w3 + mov w1, w22 + adrp x0, .LC45 + add x0, x0, :lo12:.LC45 + bl printk + ldr x2, [x19, 2592] + mov w1, w22 + mov x0, x25 + bl FtlMapWritePage +.L1845: + ldr x1, [x19, 2592] + lsl w21, w21, 9 + asr w21, w21, 2 + mov w2, w28 + mov x0, x27 + add x1, x1, w21, sxtw 2 + bl ftl_memcpy +.L1846: + add w22, w22, 1 + sub w23, w23, w20 + add w24, w24, w20 + add x27, x27, w28, sxtw + b .L1841 +.L1843: + mov w2, w28 + mov w1, 0 + mov x0, x27 + bl ftl_memset + b .L1846 +.L1848: + mov w26, -1 + b .L1839 .size FtlVendorPartRead, .-FtlVendorPartRead .align 2 .global FtlUpdateVaildLpn @@ -11618,298 +11436,296 @@ FtlVendorPartRead: FtlUpdateVaildLpn: adrp x1, .LANCHOR4 add x3, x1, :lo12:.LANCHOR4 - ldrh w2, [x3,1064] - cbnz w0, .L1896 + ldrh w2, [x3, 1064] cmp w2, 4 - bhi .L1896 + bhi .L1851 + cbnz w0, .L1851 add w2, w2, 1 - strh w2, [x3,1064] - b .L1895 -.L1896: - add x0, x1, :lo12:.LANCHOR4 - mov w7, 65535 - strh wzr, [x0,1064] - str wzr, [x0,1068] - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldrh w5, [x0,2284] - ldr x6, [x0,2712] - mov x0, 0 -.L1897: - cmp w5, w0, uxth - bls .L1895 - ldrh w4, [x6,x0,lsl 1] - cmp w4, w7 - beq .L1898 - add x3, x1, :lo12:.LANCHOR4 - ldr w2, [x3,1068] - add w2, w4, w2 - str w2, [x3,1068] -.L1898: - add x0, x0, 1 - b .L1897 -.L1895: + strh w2, [x3, 1064] ret +.L1851: + add x0, x1, :lo12:.LANCHOR4 + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + mov w6, 65535 + strh wzr, [x0, 1064] + ldrh w4, [x1, 2284] + ldr x5, [x1, 2712] + mov x1, 0 + str wzr, [x0, 1068] +.L1852: + cmp w4, w1, uxth + bhi .L1854 + ret +.L1854: + ldrh w3, [x5, x1, lsl 1] + cmp w3, w6 + beq .L1853 + ldr w2, [x0, 1068] + add w2, w2, w3 + str w2, [x0, 1068] +.L1853: + add x1, x1, 1 + b .L1852 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 .global FtlMapBlkWriteDumpData .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: + ldr w1, [x0, 56] + cbz w1, .L1863 stp x29, x30, [sp, -48]! + adrp x2, .LANCHOR2 + add x1, x2, :lo12:.LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - ldr w1, [x0,56] - ldrh w19, [x0,6] - ldr x4, [x0,40] - cbz w1, .L1901 - adrp x1, .LANCHOR2 - str wzr, [x0,56] - add x2, x1, :lo12:.LANCHOR2 - mov x21, x1 - ldr w3, [x2,2928] - cbnz w3, .L1901 + str x21, [sp, 32] + mov x21, x2 + stp x19, x20, [sp, 16] + str wzr, [x0, 56] + ldr w3, [x1, 2928] + ldrh w19, [x0, 6] + ldr x4, [x0, 40] + cbnz w3, .L1856 mov x20, x0 + add x0, x1, 2936 sub w19, w19, #1 - add x0, x2, 2936 - ldr x3, [x2,2640] - uxth w19, w19 - ldr x1, [x2,2584] - str x3, [x0,16] - ubfiz x3, x19, 2, 16 - str x1, [x0,8] - ldr w3, [x4,x3] - str w3, [x0,4] - cbz w3, .L1905 - mov w1, 1 - mov w2, w1 + ldr x2, [x1, 2640] + and w19, w19, 65535 + ldr x3, [x1, 2584] + stp x3, x2, [x0, 8] + ubfiz x2, x19, 2, 16 + ldr w2, [x4, x2] + str w2, [x0, 4] + cbz w2, .L1860 + mov w2, 1 + mov w1, w2 bl FlashReadPages - b .L1906 -.L1905: - ldrh w2, [x2,2354] - mov x0, x1 +.L1861: + add x0, x21, :lo12:.LANCHOR2 + mov w1, w19 + ldr x2, [x0, 2944] + mov x0, x20 + bl FtlMapWritePage +.L1856: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L1860: + ldrh w2, [x1, 2354] + mov x0, x3 mov w1, 255 bl ftl_memset -.L1906: - add x2, x21, :lo12:.LANCHOR2 - mov x0, x20 - mov w1, w19 - ldr x2, [x2,2944] - bl FtlMapWritePage -.L1901: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 + b .L1861 +.L1863: ret .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .align 2 .global FtlVpcTblFlush .type FtlVpcTblFlush, %function FtlVpcTblFlush: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR2 - str x27, [sp,80] - stp x19, x20, [sp,16] add x19, x22, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr w1, [x19,2928] - cbnz w1, .L1909 - ldr x0, [x19,2576] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + ldr w0, [x19, 2928] + cbnz w0, .L1868 + ldr x0, [x19, 2576] adrp x25, .LANCHOR4 - str x0, [x19,2944] + str x0, [x19, 2944] add x0, x25, :lo12:.LANCHOR4 - ldr x21, [x19,2640] + ldr x21, [x19, 2640] add x20, x0, 696 - str x21, [x19,2952] + str x21, [x19, 2952] adrp x23, .LANCHOR0 - ldrh w3, [x0,1072] - strh w3, [x21,2] - mov w3, -3932 - strh w3, [x21] - str w1, [x21,12] - ldr w3, [x0,1080] - str w1, [x21,8] - mov w1, 19539 - movk w1, 0x4654, lsl 16 - str w3, [x21,4] - ldrh w2, [x0,784] - str w1, [x0,696] - mov w1, 99 - strh w2, [x20,14] - movk w1, 0x5000, lsl 16 - ldrh w2, [x0,786] - ldrb w3, [x0,790] - str w1, [x20,4] - ldrh w1, [x0,1078] + ldrh w2, [x0, 1072] + strh w2, [x21, 2] + mov w2, -3932 + strh w2, [x21] + str wzr, [x21, 12] + ldr w2, [x0, 1080] + stp w2, wzr, [x21, 4] + mov w2, 19539 + movk w2, 0x4654, lsl 16 + str w2, [x0, 696] + mov w2, 99 + ldrb w3, [x0, 790] + movk w2, 0x5000, lsl 16 + str w2, [x20, 4] + ldrh w2, [x0, 784] + strh w2, [x20, 14] + ldrh w2, [x0, 786] + ldrh w1, [x0, 1078] + strh w1, [x20, 8] orr w2, w3, w2, lsl 6 - strh w1, [x20,8] - ldrh w1, [x19,2298] - strb w1, [x20,10] - ldrb w1, [x0,792] - strh w2, [x20,16] - strb w1, [x20,11] - ldrh w2, [x0,832] - ldrb w1, [x0,840] - strb w1, [x20,12] + ldrh w1, [x19, 2298] + strb w1, [x20, 10] + strh w2, [x20, 16] + ldrb w1, [x0, 792] + ldrh w2, [x0, 832] + ldrb w3, [x0, 838] + strb w1, [x20, 11] + strh w2, [x20, 18] + ldrb w1, [x0, 840] + ldrh w2, [x0, 834] + strb w1, [x20, 12] add x1, x0, 880 - strh w2, [x20,18] - ldrh w2, [x0,834] - ldrb w3, [x0,838] - ldrh w0, [x0,880] + ldrh w0, [x0, 880] orr w2, w3, w2, lsl 6 - strh w0, [x20,22] - strh w2, [x20,20] - ldrh w0, [x1,2] - ldrb w2, [x1,6] + strh w2, [x20, 20] + strh w0, [x20, 22] + ldrb w2, [x1, 6] + ldrh w0, [x1, 2] orr w0, w2, w0, lsl 6 - strh w0, [x20,24] - ldrb w0, [x1,8] + strh w0, [x20, 24] + ldrb w0, [x1, 8] mov w1, 255 - strb w0, [x20,13] - ldr w0, [x19,2428] - str w0, [x20,32] - ldr w0, [x19,2396] - str w0, [x20,40] - ldr w0, [x19,2400] - str w0, [x20,36] - ldrh w0, [x19,2472] - strh w0, [x20,44] - ldrh w0, [x19,2474] - strh w0, [x20,46] - ldrh w2, [x19,2354] - ldr x0, [x19,2944] + strb w0, [x20, 13] + ldr w0, [x19, 2428] + str w0, [x20, 32] + ldr w0, [x19, 2396] + str w0, [x20, 40] + ldr w0, [x19, 2400] + str w0, [x20, 36] + ldrh w0, [x19, 2472] + strh w0, [x20, 44] + ldrh w0, [x19, 2474] + strh w0, [x20, 46] + ldrh w2, [x19, 2354] + ldr x0, [x19, 2944] bl ftl_memset - ldr x0, [x19,2944] + ldr x0, [x19, 2944] mov x1, x20 mov w2, 48 mov x20, x25 bl ftl_memcpy - ldr x0, [x19,2944] - ldrh w2, [x19,2284] - ldr x1, [x19,2712] - add x0, x0, 48 + ldr x1, [x19, 2712] + ldrh w2, [x19, 2284] + ldr x0, [x19, 2944] lsl w2, w2, 1 + add x0, x0, 48 bl ftl_memcpy - ldrh w2, [x19,2284] add x1, x23, :lo12:.LANCHOR0 - ldr x3, [x19,2944] - ubfiz x0, x2, 1, 16 - lsr w2, w2, 3 - add x0, x0, 51 - ldr x1, [x1,16] - and x0, x0, 262140 + ldrh w0, [x19, 2284] + ldr x3, [x19, 2944] + ldr x1, [x1, 80] + lsr w2, w0, 3 + ubfiz x0, x0, 1, 16 add w2, w2, 4 + add x0, x0, 51 + and x0, x0, -4 add x0, x3, x0 bl ftl_memcpy - ldrh w0, [x19,2384] - cbz w0, .L1910 - ldrh w0, [x19,2284] - ldrh w2, [x19,2380] + ldrh w0, [x19, 2384] + cbz w0, .L1869 + ldrh w0, [x19, 2284] + ldr x3, [x19, 2944] + ldrh w2, [x19, 2380] lsr w1, w0, 3 add w0, w1, w0, lsl 1 - ldr x1, [x19,2944] + ldr x1, [x19, 2768] add w0, w0, 52 lsl w2, w2, 2 and x0, x0, 65532 - add x0, x1, x0 - ldr x1, [x19,2768] + add x0, x3, x0 bl ftl_memcpy -.L1910: - mov w0, 0 +.L1869: + add x19, x20, :lo12:.LANCHOR4 + add x26, x22, :lo12:.LANCHOR2 + add x19, x19, 1072 + add x23, x23, :lo12:.LANCHOR0 mov w24, 0 mov w25, 65535 - add x19, x22, :lo12:.LANCHOR2 - add x20, x20, :lo12:.LANCHOR4 + mov w0, 0 bl FtlUpdateVaildLpn -.L1911: - ldrh w1, [x20,1072] - ldr x0, [x19,2576] - ldrh w2, [x20,1074] - str x0, [x19,2944] - ldr x0, [x19,2640] - str x0, [x19,2952] +.L1870: + ldrh w2, [x19, 2] + ldrh w1, [x19] + ldr x0, [x26, 2576] + str x0, [x26, 2944] + ldr x0, [x26, 2640] + str x0, [x26, 2952] orr w0, w2, w1, lsl 10 - str w0, [x19,2940] - ldrh w0, [x19,2346] + str w0, [x26, 2940] + ldrh w0, [x26, 2346] sub w0, w0, #1 cmp w2, w0 - blt .L1912 - ldrh w25, [x20,1076] - strh wzr, [x20,1074] - strh w1, [x20,1076] + blt .L1871 + ldrh w25, [x19, 4] + strh wzr, [x19, 2] + strh w1, [x19, 4] bl FtlFreeSysBlkQueueOut - ldr w1, [x19,2396] - str w1, [x20,1080] + ldr w1, [x26, 2396] + str w1, [x19, 8] add w2, w1, 1 - str w2, [x19,2396] + str w2, [x26, 2396] ubfiz w2, w0, 10, 16 - str w2, [x19,2940] - strh w0, [x20,1072] - str w1, [x21,4] - strh w0, [x21,2] -.L1912: - add x0, x23, :lo12:.LANCHOR0 - ldrb w0, [x0,88] - cbz w0, .L1913 - ldr x0, [x19,2576] - ldrh w1, [x19,2354] + str w2, [x26, 2940] + strh w0, [x19] + strh w0, [x21, 2] + str w1, [x21, 4] +.L1871: + ldrb w0, [x23, 88] + cbz w0, .L1872 + ldrh w1, [x26, 2354] + ldr x0, [x26, 2576] bl js_hash - str w0, [x21,12] -.L1913: - mov w1, 1 - add x0, x19, 2936 - mov w2, w1 - mov w3, w1 + str w0, [x21, 12] +.L1872: + mov w3, 1 + add x0, x26, 2936 + mov w1, w3 + mov w2, w3 bl FlashProgPages - ldrh w1, [x20,1074] - ldr w2, [x19,2936] - add w1, w1, 1 - cmn w2, #1 - uxth w1, w1 - strh w1, [x20,1074] - bne .L1914 - cmp w1, 1 - bne .L1915 - ldrh w1, [x19,2346] - sub w1, w1, #1 - strh w1, [x20,1074] -.L1915: + ldrh w0, [x19, 2] + ldr w1, [x26, 2936] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x19, 2] + cmn w1, #1 + bne .L1873 + cmp w0, 1 + bne .L1874 + ldrh w0, [x26, 2346] + sub w0, w0, #1 + strh w0, [x19, 2] +.L1874: add w24, w24, 1 - uxth w24, w24 + and w24, w24, 65535 cmp w24, 3 - bls .L1911 + bls .L1870 add x22, x22, :lo12:.LANCHOR2 + mov w2, w24 adrp x0, .LC46 add x0, x0, :lo12:.LC46 - mov w2, w24 - ldr w1, [x22,2940] + ldr w1, [x22, 2940] bl printk mov w0, 1 - str w0, [x22,2928] - b .L1909 -.L1914: - cmp w1, 1 - beq .L1911 - cmp w2, 256 - beq .L1911 + str w0, [x22, 2928] +.L1868: + 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 +.L1873: + cmp w0, 1 + beq .L1870 + cmp w1, 256 + beq .L1870 mov w0, 65535 cmp w25, w0 - beq .L1909 - mov w0, w25 + beq .L1868 mov w1, 1 + mov w0, w25 bl FtlFreeSysBlkQueueIn -.L1909: - mov w0, 0 - 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 + b .L1868 .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlScanSysBlk @@ -11918,470 +11734,434 @@ FtlScanSysBlk: stp x29, x30, [sp, -128]! mov w1, 0 add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - stp x19, x20, [sp,16] - add x20, x22, :lo12:.LANCHOR2 - adrp x19, .LANCHOR4 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - add x21, x19, :lo12:.LANCHOR4 - strh wzr, [x20,2920] - ldr w2, [x20,2372] - mov x24, x22 - ldr x0, [x20,2784] - mov w22, 65535 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + add x19, x21, :lo12:.LANCHOR2 + adrp x22, .LANCHOR4 + add x20, x22, :lo12:.LANCHOR4 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + mov w25, 56 + ldr x0, [x19, 2784] + ldr w2, [x19, 2372] + stp x27, x28, [sp, 80] + strh wzr, [x20, 1088] lsl w2, w2, 2 - strh wzr, [x21,1088] + strh wzr, [x19, 2920] bl ftl_memset - ldr w2, [x20,2372] + ldr x0, [x19, 2720] mov w1, 0 - ldr x0, [x20,2720] + ldr w2, [x19, 2372] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x20,2364] + ldr x0, [x19, 2752] mov w1, 0 - ldr x0, [x20,2752] + ldrh w2, [x19, 2364] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,2364] + ldr x0, [x19, 2736] mov w1, 0 - ldr x0, [x20,2736] + ldrh w2, [x19, 2364] lsl w2, w2, 1 bl ftl_memset - add x0, x21, 1072 - mov w1, 255 mov w2, 16 + mov w1, 255 + add x0, x20, 1072 bl ftl_memset - ldrh w21, [x20,2284] -.L1925: - add x1, x24, :lo12:.LANCHOR2 - ldrh w0, [x1,2286] - cmp w0, w21 - bls .L1966 - mov x27, 0 - ldrh w4, [x1,2276] - ldrh w2, [x1,2356] - mov w20, w27 - mov x23, x1 -.L1967: - cmp w4, w27, uxth - bls .L2000 - add x0, x23, 2304 - mov w1, w21 - str x2, [x29,112] - str x4, [x29,120] - ldrb w0, [x0,x27] + ldrh w23, [x19, 2284] + add x0, x19, 2304 + str x0, [x29, 112] +.L1891: + ldrh w0, [x19, 2286] + cmp w0, w23 + bls .L1930 + ldrh w8, [x19, 2276] + mov x5, 0 + ldrh w7, [x19, 2356] + mov w20, 0 + mov w6, 4 + b .L1931 +.L1893: + ldr x0, [x29, 112] + mov w1, w23 + ldrb w0, [x0, x5] bl V2P_block - uxth w28, w0 + and w4, w0, 65535 bl FtlBbmIsBadBlock - ldr x4, [x29,120] - ldr x2, [x29,112] - cbnz w0, .L1926 - mov w0, 56 - ldr x1, [x23,2520] - lsl w28, w28, 10 - mov w3, 4 - umull x0, w20, w0 - add x1, x1, x0 - str w28, [x1,4] - ldr x1, [x23,2520] - ldr x5, [x23,2656] - add x0, x1, x0 - ldr x1, [x23,2600] - str x1, [x0,8] - mul w1, w20, w2 + cbnz w0, .L1892 + umull x2, w20, w25 + ldr x0, [x19, 2520] + lsl w4, w4, 10 + add x0, x0, x2 + str w4, [x0, 4] + ldr x1, [x19, 2520] + ldr x0, [x19, 2600] + add x1, x1, x2 + ldr x2, [x19, 2656] + str x0, [x1, 8] + mul w0, w20, w7 add w20, w20, 1 - sdiv w1, w1, w3 - uxth w20, w20 - add x1, x5, w1, sxtw 2 - str x1, [x0,16] -.L1926: - add x27, x27, 1 - b .L1967 -.L2000: - cbz w20, .L1929 - add x0, x24, :lo12:.LANCHOR2 - mov w1, w20 - mov w2, 1 - mov x23, 0 - mov w27, -1 - mov w28, 61604 - ldr x0, [x0,2520] - bl FlashReadPages -.L1930: - cmp w20, w23, uxth - bls .L1929 - mov x0, 56 - mul x6, x23, x0 - add x0, x24, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - add x1, x0, x6 - ldr w0, [x0,x6] - ldr w5, [x1,4] - cmn w0, #1 - ldr x26, [x1,16] - ubfx x25, x5, 10, 16 - bne .L1932 - mov w7, 16 + and w20, w20, 65535 + sdiv w0, w0, w6 + add x0, x2, w0, sxtw 2 + str x0, [x1, 16] +.L1892: + add x5, x5, 1 .L1931: - add x8, x24, :lo12:.LANCHOR2 - str x7, [x29,104] - str x8, [x29,112] - str x6, [x29,120] - ldr x0, [x8,2520] - add x0, x0, x6 - ldr w1, [x0,4] - add w1, w1, 1 - str w1, [x0,4] - mov w1, 1 - ldr x0, [x8,2520] - mov w2, w1 - add x0, x0, x6 + cmp w8, w5, uxth + bhi .L1893 + cbnz w20, .L1894 +.L1929: + add w23, w23, 1 + and w23, w23, 65535 + b .L1891 +.L1894: + ldr x0, [x19, 2520] + mov w2, 1 + mov w1, w20 + add x24, x22, :lo12:.LANCHOR4 + add x27, x24, 1072 + mov x26, 0 bl FlashReadPages - ldrh w0, [x26] - ldr x8, [x29,112] - cmp w0, w22 - ldr x6, [x29,120] - ldr x7, [x29,104] - ldr x0, [x8,2520] - bne .L1933 - str w27, [x0,x6] - b .L1932 -.L1933: - ldr w0, [x0,x6] + umull x0, w20, w25 + str x0, [x29, 120] +.L1928: + ldr x0, [x19, 2520] + add x1, x0, x26 + ldr w0, [x0, x26] + ldr w28, [x1, 4] cmn w0, #1 - bne .L1932 - sub w7, w7, #1 - uxth w7, w7 - cbnz w7, .L1931 -.L1932: - add x0, x24, :lo12:.LANCHOR2 - ldr x1, [x0,2520] - ldr w1, [x1,x6] - cmn w1, #1 - beq .L1935 - ldr w0, [x0,2396] - cmn w0, #1 - beq .L1936 - ldr w1, [x26,4] + ldr x20, [x1, 16] + ubfx x28, x28, 10, 16 + bne .L1897 + mov w6, 16 + mov w7, 65535 +.L1899: + ldr x0, [x19, 2520] + mov w2, 1 + stp w7, w6, [x29, 104] + add x0, x0, x26 + ldr w1, [x0, 4] + add w1, w1, 1 + str w1, [x0, 4] + mov w1, w2 + ldr x0, [x19, 2520] + add x0, x0, x26 + bl FlashReadPages + ldp w7, w6, [x29, 104] + ldrh w0, [x20] + cmp w0, w7 + ldr x0, [x19, 2520] + bne .L1896 + mov w1, -1 + str w1, [x0, x26] + ldr x0, [x19, 2520] + ldr w0, [x0, x26] cmp w0, w1 - bhi .L1937 -.L1936: - ldr w0, [x26,4] + beq .L1965 +.L1897: + ldr w0, [x19, 2396] + ldr w10, [x20, 4] cmn w0, #1 - beq .L1937 - add x1, x24, :lo12:.LANCHOR2 - add w0, w0, 1 - str w0, [x1,2396] -.L1937: - ldrh w0, [x26] - cmp w0, w28 - beq .L1939 - bhi .L1940 + beq .L1900 + cmp w0, w10 + bhi .L1901 +.L1900: + cmn w10, #1 + beq .L1901 + add w0, w10, 1 + str w0, [x19, 2396] +.L1901: + ldrh w0, [x20] + mov w1, 61604 + cmp w0, w1 + beq .L1903 + bhi .L1904 mov w1, 61574 cmp w0, w1 - bne .L1938 - add x6, x24, :lo12:.LANCHOR2 - ldrh w7, [x6,2364] - ldrh w0, [x6,2920] - sub w2, w7, #1 - ldr x6, [x6,2752] - sxth x1, w2 - sub w2, w2, w0 - b .L1953 -.L1940: + beq .L1905 +.L1902: + ldr x0, [x29, 120] + add x26, x26, 56 + cmp x26, x0 + bne .L1928 + b .L1929 +.L1896: + ldr w0, [x0, x26] + cmn w0, #1 + bne .L1897 + sub w6, w6, #1 + ands w6, w6, 65535 + bne .L1899 +.L1965: + mov w1, 0 + mov w0, w28 + bl FtlFreeSysBlkQueueIn + b .L1902 +.L1904: mov w1, 61634 cmp w0, w1 - beq .L1942 - cmp w0, w22 - bne .L1938 - mov w0, w25 - b .L1999 -.L1942: - add x7, x24, :lo12:.LANCHOR2 - add x0, x19, :lo12:.LANCHOR4 - ldr w6, [x7,2372] - ldrh w0, [x0,1088] - ldr x7, [x7,2784] - uxth w2, w6 - sub w1, w2, #1 - sub w2, w2, w0 + beq .L1906 + mov w1, 65535 + cmp w0, w1 + beq .L1965 + b .L1902 +.L1906: + ldr w6, [x19, 2372] + ldrh w1, [x24, 1088] + and w2, w6, 65535 + ldr x7, [x19, 2784] + sub w0, w2, #1 + sub w2, w2, w1 sub w2, w2, #1 - sxth x1, w1 + sxth x0, w0 sxth w2, w2 -.L1944: - cmp w1, w2 - ble .L2001 - sbfiz x8, x1, 2, 32 - ldr w11, [x26,4] - sxth x9, w1 - ldr w10, [x7,x8] - cmp w11, w10 - bls .L1945 +.L1908: + cmp w0, w2 + bgt .L1914 + tbz w0, #31, .L1946 + b .L1902 +.L1914: + sxtw x8, w0 + lsl x9, x8, 2 + ldr w11, [x7, x9] + cmp w10, w11 + bls .L1909 ldr w2, [x7] - cbnz w2, .L1946 - cmp w0, w6 - beq .L1946 - add x2, x19, :lo12:.LANCHOR4 - add w0, w0, 1 - strh w0, [x2,1088] + cbnz w2, .L1910 + cmp w6, w1 + beq .L1910 + add w1, w1, 1 + strh w1, [x24, 1088] +.L1910: + mov w1, 0 +.L1911: + cmp w1, w0 + bne .L1912 + ldr x1, [x19, 2784] + ldr w2, [x20, 4] + str w2, [x1, x9] + ldr x1, [x19, 2720] + strh w28, [x1, x8, lsl 1] + tbnz w0, #31, .L1902 + ldrh w1, [x24, 1088] + ldr w2, [x19, 2372] + sub w2, w2, w1 + sub w2, w2, #1 + cmp w0, w2, sxth + bgt .L1902 .L1946: - mov w0, 0 -.L1947: - cmp w0, w1 - beq .L2002 - add x6, x24, :lo12:.LANCHOR2 - sxtw x2, w0 - lsl x7, x2, 2 + add w1, w1, 1 + strh w1, [x24, 1088] + ldr x1, [x19, 2784] + ldr w2, [x20, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x19, 2720] +.L1964: + strh w28, [x1, x0, lsl 1] + b .L1902 +.L1912: + ldr x7, [x19, 2784] + sxtw x2, w1 + lsl x6, x2, 2 lsl x2, x2, 1 - add w0, w0, 1 - ldr x10, [x6,2784] - sxth w0, w0 - add x11, x10, x7 - ldr w11, [x11,4] - str w11, [x10,x7] - ldr x6, [x6,2720] + add x10, x7, x6 + add w1, w1, 1 + sxth w1, w1 + ldr w10, [x10, 4] + str w10, [x7, x6] + ldr x6, [x19, 2720] add x7, x6, x2 - ldrh w7, [x7,2] - strh w7, [x6,x2] - b .L1947 -.L2002: - add x2, x24, :lo12:.LANCHOR2 - ldr w6, [x26,4] - ldr x0, [x2,2784] - str w6, [x0,x8] - ldr x0, [x2,2720] - strh w25, [x0,x9,lsl 1] - tbz w1, #31, .L1949 - b .L1938 -.L1945: + ldrh w7, [x7, 2] + strh w7, [x6, x2] + b .L1911 +.L1909: + sub w0, w0, #1 + sxth x0, w0 + b .L1908 +.L1905: + ldrh w6, [x19, 2364] + ldrh w1, [x19, 2920] + sub w2, w6, #1 + ldr x7, [x19, 2752] + sxth x0, w2 + sub w2, w2, w1 +.L1917: + cmp w0, w2 + ble .L1922 + sxtw x8, w0 + lsl x9, x8, 2 + ldr w11, [x7, x9] + cmp w10, w11 + bls .L1918 + ldr w2, [x7] + cbnz w2, .L1919 + cmp w6, w1 + beq .L1919 + add w1, w1, 1 + strh w1, [x19, 2920] +.L1919: + mov w1, 0 +.L1920: + cmp w1, w0 + bne .L1921 + ldr x1, [x19, 2752] + ldr w2, [x20, 4] + str w2, [x1, x9] + ldr x1, [x19, 2736] + strh w28, [x1, x8, lsl 1] +.L1922: + tbnz w0, #31, .L1902 + ldrh w1, [x19, 2364] + ldrh w2, [x19, 2920] sub w1, w1, #1 - sxth x1, w1 - b .L1944 -.L2001: - tbz w1, #31, .L1982 - b .L1938 -.L1949: - add x0, x19, :lo12:.LANCHOR4 - ldr w2, [x2,2372] - ldrh w0, [x0,1088] - sub w2, w2, w0 - sub w2, w2, #1 - cmp w1, w2, sxth - bgt .L1938 -.L1982: - add x2, x19, :lo12:.LANCHOR4 - add w0, w0, 1 - ldr w4, [x26,4] - strh w0, [x2,1088] - add x0, x24, :lo12:.LANCHOR2 - ldr x2, [x0,2784] - str w4, [x2,x1,lsl 2] - ldr x0, [x0,2720] - b .L1998 -.L1959: - sbfiz x8, x1, 2, 32 - ldr w11, [x26,4] - sxth x9, w1 - ldr w10, [x6,x8] - cmp w11, w10 - bhi .L2003 - sub w1, w1, #1 - sxth x1, w1 -.L1953: - cmp w1, w2 - bgt .L1959 - b .L1958 -.L2003: - ldr w2, [x6] - cbnz w2, .L1955 - cmp w0, w7 - beq .L1955 - add x2, x24, :lo12:.LANCHOR2 - add w0, w0, 1 - strh w0, [x2,2920] -.L1955: - mov w0, 0 -.L1956: - cmp w0, w1 - beq .L2004 - add x6, x24, :lo12:.LANCHOR2 - sxtw x2, w0 - lsl x7, x2, 2 + sub w1, w1, w2 + cmp w0, w1, sxth + bgt .L1902 + ldr x1, [x19, 2752] + add w2, w2, 1 + strh w2, [x19, 2920] + ldr w2, [x20, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x19, 2736] + b .L1964 +.L1921: + ldr x7, [x19, 2752] + sxtw x2, w1 + lsl x6, x2, 2 lsl x2, x2, 1 - add w0, w0, 1 - ldr x10, [x6,2752] - sxth w0, w0 - add x11, x10, x7 - ldr w11, [x11,4] - str w11, [x10,x7] - ldr x6, [x6,2736] + add x10, x7, x6 + add w1, w1, 1 + sxth w1, w1 + ldr w10, [x10, 4] + str w10, [x7, x6] + ldr x6, [x19, 2736] add x7, x6, x2 - ldrh w7, [x7,2] - strh w7, [x6,x2] - b .L1956 -.L2004: - add x0, x24, :lo12:.LANCHOR2 - ldr w6, [x26,4] - ldr x2, [x0,2752] - str w6, [x2,x8] - ldr x0, [x0,2736] - strh w25, [x0,x9,lsl 1] -.L1958: - tbnz w1, #31, .L1938 - add x0, x24, :lo12:.LANCHOR2 - ldrh w2, [x0,2364] - ldrh w6, [x0,2920] - sub w2, w2, #1 - sub w2, w2, w6 - cmp w1, w2, sxth - bgt .L1938 - ldr x2, [x0,2752] - add w6, w6, 1 - ldr w4, [x26,4] - strh w6, [x0,2920] - str w4, [x2,x1,lsl 2] - ldr x0, [x0,2736] -.L1998: - strh w25, [x0,x1,lsl 1] - b .L1938 -.L1939: - add x0, x19, :lo12:.LANCHOR4 - add x1, x0, 1072 - ldrh w2, [x0,1072] - cmp w2, w22 - bne .L1960 - strh w25, [x0,1072] - ldr w0, [x26,4] - str w0, [x1,8] - b .L1938 -.L1960: - ldrh w0, [x1,4] - cmp w0, w22 - beq .L1961 + ldrh w7, [x7, 2] + strh w7, [x6, x2] + b .L1920 +.L1918: + sub w0, w0, #1 + sxth x0, w0 + b .L1917 +.L1903: + ldrh w0, [x27] + mov w1, 65535 + cmp w0, w1 + bne .L1924 + strh w28, [x27] + str w10, [x27, 8] + b .L1902 +.L1924: + ldrh w0, [x27, 4] + cmp w0, w1 + beq .L1925 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1961: - add x1, x19, :lo12:.LANCHOR4 - ldr w2, [x26,4] - add x0, x1, 1072 - ldr w6, [x0,8] - cmp w6, w2 - bcs .L1962 - ldrh w2, [x1,1072] - strh w2, [x0,4] - strh w25, [x1,1072] - ldr w1, [x26,4] - str w1, [x0,8] - b .L1938 -.L1962: - strh w25, [x0,4] - b .L1938 +.L1925: + ldr w0, [x20, 4] + ldr w1, [x27, 8] + cmp w1, w0 + bcs .L1926 + ldrh w0, [x27] + strh w0, [x27, 4] + strh w28, [x27] + ldr w0, [x20, 4] + str w0, [x27, 8] + b .L1902 +.L1926: + strh w28, [x27, 4] + b .L1902 +.L1930: + ldr x1, [x19, 2720] + ldrh w0, [x1] + cbz w0, .L1932 .L1935: - ldrb w1, [x0,1220] - mov w0, w25 - cbz w1, .L1963 -.L1999: - mov w1, 0 -.L1963: - bl FtlFreeSysBlkQueueIn -.L1938: - add x23, x23, 1 - b .L1930 -.L1929: - add w21, w21, 1 - uxth w21, w21 - b .L1925 -.L1966: - ldr x2, [x1,2720] - ldrh w0, [x2] - cbz w0, .L1968 -.L1971: - add x1, x24, :lo12:.LANCHOR2 - ldr x2, [x1,2736] - ldrh w0, [x2] - cbz w0, .L1969 - b .L1992 -.L1968: - add x19, x19, :lo12:.LANCHOR4 - ldrh w4, [x19,1088] - cbz w4, .L1971 - ldr w1, [x1,2372] -.L1972: - cmp w0, w1 - bcs .L1971 - ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1973 - mov w7, w0 -.L1974: - add x1, x24, :lo12:.LANCHOR2 - ldr w2, [x1,2372] - cmp w0, w2 - bcs .L1971 - sxtw x6, w0 - sub w2, w0, w7 - ldr x5, [x1,2720] - lsl x4, x6, 1 - sxtw x2, w2 - add w0, w0, 1 - ldrh w8, [x5,x4] - sxth w0, w0 - strh w8, [x5,x2,lsl 1] - ldr x5, [x1,2784] - ldr w6, [x5,x6,lsl 2] - str w6, [x5,x2,lsl 2] - ldr x1, [x1,2720] - strh wzr, [x1,x4] - b .L1974 -.L1973: - add w0, w0, 1 - sxth w0, w0 - b .L1972 -.L1969: - ldrh w4, [x1,2920] - cbz w4, .L1992 - ldrh w1, [x1,2364] -.L1977: - cmp w0, w1 - mov w7, w0 - bge .L1992 - ldrh w4, [x2,w0,sxtw 1] - cbz w4, .L1978 -.L1979: - add x1, x24, :lo12:.LANCHOR2 - ldrh w2, [x1,2364] - cmp w0, w2 - bge .L1992 - sxtw x6, w0 - sub w2, w0, w7 - ldr x5, [x1,2736] - lsl x4, x6, 1 - sxtw x2, w2 - add w0, w0, 1 - ldrh w8, [x5,x4] - sxth w0, w0 - strh w8, [x5,x2,lsl 1] - ldr x5, [x1,2752] - ldr w6, [x5,x6,lsl 2] - str w6, [x5,x2,lsl 2] - ldr x1, [x1,2736] - strh wzr, [x1,x4] - b .L1979 -.L1978: - add w0, w0, 1 - sxth w0, w0 - b .L1977 -.L1992: + add x0, x21, :lo12:.LANCHOR2 + ldr x1, [x0, 2736] + ldrh w2, [x1] + cbz w2, .L1933 +.L1951: + ldp x19, x20, [sp, 16] 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 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 +.L1932: + add x22, x22, :lo12:.LANCHOR4 + ldrh w0, [x22, 1088] + cbz w0, .L1935 + ldr w2, [x19, 2372] + mov w0, 0 +.L1936: + cmp w0, w2 + bcs .L1935 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L1937 + mov w1, w0 + add x2, x21, :lo12:.LANCHOR2 +.L1938: + ldr w3, [x2, 2372] + cmp w1, w3 + bcs .L1935 + ldr x5, [x2, 2720] + sxtw x6, w1 + lsl x4, x6, 1 + sub w3, w1, w0 + sxtw x3, w3 + add w1, w1, 1 + sxth w1, w1 + ldrh w7, [x5, x4] + strh w7, [x5, x3, lsl 1] + ldr x5, [x2, 2784] + ldr w6, [x5, x6, lsl 2] + str w6, [x5, x3, lsl 2] + ldr x3, [x2, 2720] + strh wzr, [x3, x4] + b .L1938 +.L1937: + add w0, w0, 1 + sxth w0, w0 + b .L1936 +.L1933: + ldrh w2, [x0, 2920] + cbz w2, .L1951 + ldrh w2, [x0, 2364] + mov w0, 0 +.L1941: + mov w5, w0 + cmp w0, w2 + bge .L1951 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L1942 + add x21, x21, :lo12:.LANCHOR2 +.L1943: + ldrh w1, [x21, 2364] + cmp w0, w1 + bge .L1951 + ldr x3, [x21, 2736] + sxtw x4, w0 + lsl x2, x4, 1 + sub w1, w0, w5 + sxtw x1, w1 + add w0, w0, 1 + sxth w0, w0 + ldrh w6, [x3, x2] + strh w6, [x3, x1, lsl 1] + ldr x3, [x21, 2752] + ldr w4, [x3, x4, lsl 2] + str w4, [x3, x1, lsl 2] + ldr x1, [x21, 2736] + strh wzr, [x1, x2] + b .L1943 +.L1942: + add w0, w0, 1 + sxth w0, w0 + b .L1941 .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadEctTbl @@ -12390,31 +12170,31 @@ FtlLoadEctTbl: stp x29, x30, [sp, -32]! mov w0, 64 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x19,2672] - ldr x2, [x19,2688] + ldrh w1, [x19, 2672] + ldr x2, [x19, 2688] bl FtlVendorPartRead - ldr x0, [x19,2688] + ldr x0, [x19, 2688] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L2006 - adrp x0, .LC47 - adrp x1, .LC48 - add x1, x1, :lo12:.LC48 - add x0, x0, :lo12:.LC47 + beq .L1967 + adrp x1, .LC47 + adrp x0, .LC48 + add x1, x1, :lo12:.LC47 + add x0, x0, :lo12:.LC48 bl printk - ldrh w2, [x19,2672] + ldr x0, [x19, 2688] mov w1, 0 - ldr x0, [x19,2688] + ldrh w2, [x19, 2672] lsl w2, w2, 9 bl ftl_memset -.L2006: +.L1967: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlLoadEctTbl, .-FtlLoadEctTbl @@ -12422,36 +12202,35 @@ FtlLoadEctTbl: .global ftl_set_blk_mode .type ftl_set_blk_mode, %function ftl_set_blk_mode: + and w0, w0, 65535 + cbz w1, .L1970 stp x29, x30, [sp, -16]! - uxth w0, w0 add x29, sp, 0 - cbz w1, .L2008 bl ftl_set_blk_mode.part.17 - b .L2007 -.L2008: - adrp x1, .LANCHOR0+16 + ldp x29, x30, [sp], 16 + ret +.L1970: + adrp x1, .LANCHOR0+80 ubfx x2, x0, 5, 11 lsl x2, x2, 2 - ldr x3, [x1,#:lo12:.LANCHOR0+16] + ldr x3, [x1, #:lo12:.LANCHOR0+80] mov w1, 1 lsl w0, w1, w0 - ldr w1, [x3,x2] + ldr w1, [x3, x2] bic w0, w1, w0 - str w0, [x3,x2] -.L2007: - ldp x29, x30, [sp], 16 + str w0, [x3, x2] ret .size ftl_set_blk_mode, .-ftl_set_blk_mode .align 2 .global ftl_get_blk_mode .type ftl_get_blk_mode, %function ftl_get_blk_mode: - adrp x1, .LANCHOR0+16 - uxth w0, w0 - ubfx x2, x0, 5, 11 - ldr x1, [x1,#:lo12:.LANCHOR0+16] - ldr w1, [x1,x2,lsl 2] - lsr w0, w1, w0 + and w1, w0, 65535 + adrp x0, .LANCHOR0+80 + ldr x0, [x0, #:lo12:.LANCHOR0+80] + ubfx x2, x1, 5, 11 + ldr w0, [x0, x2, lsl 2] + lsr w0, w0, w1 and w0, w0, 1 ret .size ftl_get_blk_mode, .-ftl_get_blk_mode @@ -12459,211 +12238,199 @@ ftl_get_blk_mode: .global FtlCheckVpc .type FtlCheckVpc, %function FtlCheckVpc: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! adrp x1, .LANCHOR3 - adrp x0, .LC49 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC49 add x29, sp, 0 - add x1, x1, 152 - add x0, x0, :lo12:.LC49 - 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] - stp x27, x28, [sp,80] - add x21, x20, :lo12:.LANCHOR4 - bl printk - add x0, x21, 1096 - mov w1, 0 - mov x2, 8192 - adrp x22, .LANCHOR2 - bl memset -.L2012: - add x0, x22, :lo12:.LANCHOR2 - adrp x23, .LANCHOR2 - ldr w0, [x0,2924] - cmp w19, w0 - bcs .L2031 - mov w0, w19 - add x1, x29, 124 - mov w2, 0 - bl log2phys - ldr w0, [x29,124] - cmn w0, #1 - beq .L2013 - lsr w0, w0, 10 - bl P2V_block_in_plane - uxth w0, w0 - add x2, x21, 1096 - ldrh w1, [x2,w0,sxtw 1] - add w1, w1, 1 - strh w1, [x2,w0,sxtw 1] -.L2013: - add w19, w19, 1 - b .L2012 -.L2031: - mov w21, 0 - adrp x24, .LC50 - mov w19, w21 - add x27, x20, :lo12:.LANCHOR4 - add x24, x24, :lo12:.LC50 - mov w28, 65535 -.L2015: - add x22, x23, :lo12:.LANCHOR2 - ldrh w0, [x22,2284] - cmp w0, w19 - bls .L2032 - ubfiz x26, x19, 1, 16 - ldr x0, [x22,2712] - add x25, x27, 1096 - sxtw x4, w19 - ldrh w2, [x0,x26] - ldrh w3, [x25,w19,sxtw 1] - cmp w2, w3 - beq .L2016 - mov x0, x24 - mov w1, w19 - str x4, [x29,104] - bl printk - ldr x0, [x22,2712] - ldrh w0, [x0,x26] - cmp w0, w28 - beq .L2016 - ldr x4, [x29,104] - ldrh w1, [x25,x4,lsl 1] - cmp w1, w0 - csinc w21, w21, wzr, ls -.L2016: - add w19, w19, 1 - uxth w19, w19 - b .L2015 -.L2032: - add x2, x20, :lo12:.LANCHOR4 - ldr x0, [x2,768] - cbz x0, .L2018 - ldr x19, [x22,2808] - adrp x24, .LC51 - ldrh w25, [x2,776] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + stp x23, x24, [sp, 48] + add x23, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] mov w22, 0 - sub x19, x0, x19 + add x1, x1, 152 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + add x0, x0, :lo12:.LC49 + adrp x21, check_valid_page_count_table + bl printk + add x19, x21, :lo12:check_valid_page_count_table + mov x2, 8192 + mov w1, 0 + mov x0, x19 + bl memset +.L1978: + ldr w0, [x23, 2924] + cmp w22, w0 + bcc .L1980 + adrp x24, .LC50 + add x22, x20, :lo12:.LANCHOR2 + add x25, x21, :lo12:check_valid_page_count_table + add x24, x24, :lo12:.LC50 + mov w23, 0 + mov w19, 0 + mov w28, 65535 +.L1981: + ldrh w0, [x22, 2284] + cmp w0, w19 + bhi .L1983 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldr x19, [x0, 768] + cbz x19, .L1984 + ldrh w25, [x0, 776] + adrp x24, .LC51 + ldr x0, [x22, 2808] + add x20, x20, :lo12:.LANCHOR2 + add x21, x21, :lo12:check_valid_page_count_table + add x24, x24, :lo12:.LC51 + sub x19, x19, x0 mov x0, -6148914691236517206 asr x19, x19, 1 - add x24, x24, :lo12:.LC51 - mov x20, x2 + movk x0, 0xaaab, lsl 0 mov w26, 6 - madd x19, x0, x19, x19 - mov w27, 65535 - uxth w19, w19 -.L2019: + mov w22, 0 + mul x19, x19, x0 + and w19, w19, 65535 +.L1985: cmp w22, w25 - beq .L2018 - add x1, x23, :lo12:.LANCHOR2 - ubfiz x0, x19, 1, 16 - ldr x1, [x1,2712] - ldrh w2, [x1,x0] - cbz w2, .L2020 - add x3, x20, 1096 - mov x0, x24 - mov w1, w19 - mov w21, 1 - ldrh w3, [x3,w19,sxtw 1] - bl printk -.L2020: - add x0, x23, :lo12:.LANCHOR2 - umull x19, w19, w26 - ldr x0, [x0,2808] - ldrh w19, [x0,x19] - cmp w19, w27 - beq .L2018 - add w22, w22, 1 - uxth w22, w22 - b .L2019 -.L2018: + bne .L1987 +.L1984: + mov w1, w23 adrp x0, .LC52 - mov w1, w21 add x0, x0, :lo12:.LC52 bl printk - 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 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 +.L1980: + mov w2, 0 + add x1, x29, 108 + mov w0, w22 + bl log2phys + ldr w0, [x29, 108] + cmn w0, #1 + beq .L1979 + lsr w0, w0, 10 + bl P2V_block_in_plane + and x0, x0, 65535 + ldrh w1, [x19, x0, lsl 1] + add w1, w1, 1 + strh w1, [x19, x0, lsl 1] +.L1979: + add w22, w22, 1 + b .L1978 +.L1983: + ldr x0, [x22, 2712] + ubfiz x27, x19, 1, 16 + sxtw x26, w19 + ldrh w2, [x0, x27] + ldrh w3, [x25, x26, lsl 1] + cmp w2, w3 + beq .L1982 + mov w1, w19 + mov x0, x24 + bl printk + ldr x0, [x22, 2712] + ldrh w0, [x0, x27] + cmp w0, w28 + beq .L1982 + ldrh w1, [x25, x26, lsl 1] + cmp w1, w0 + csinc w23, w23, wzr, ls +.L1982: + add w19, w19, 1 + and w19, w19, 65535 + b .L1981 +.L1987: + ldr x1, [x20, 2712] + ubfiz x0, x19, 1, 16 + ldrh w2, [x1, x0] + cbz w2, .L1986 + ldrh w3, [x21, w19, sxtw 1] + mov w23, 1 + mov w1, w19 + mov x0, x24 + bl printk +.L1986: + ldr x0, [x20, 2808] + umull x19, w19, w26 + ldrh w19, [x0, x19] + mov w0, 65535 + cmp w19, w0 + beq .L1984 + add w22, w22, 1 + and w22, w22, 65535 + b .L1985 .size FtlCheckVpc, .-FtlCheckVpc .align 2 .global FtlDumpSysBlock .type FtlDumpSysBlock, %function FtlDumpSysBlock: - sub sp, sp, #96 - adrp x2, .LANCHOR2 - add x2, x2, :lo12:.LANCHOR2 - stp x29, x30, [sp,16] + sub sp, sp, #80 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] - stp x21, x22, [sp,48] - stp x23, x24, [sp,64] - str x25, [sp,80] - add x19, x2, 2936 - uxth w23, w0 - adrp x22, .LC53 - ldr x0, [x2,2576] - adrp x25, .LC54 - str x0, [x19,8] + stp x23, x24, [sp, 64] + and w23, w0, 65535 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + stp x19, x20, [sp, 32] + add x19, x0, 2936 + stp x21, x22, [sp, 48] lsl w24, w23, 10 - ldr x0, [x2,2640] - mov w20, 0 - str x0, [x19,16] - mov x21, x2 + adrp x22, .LC53 + mov x21, x0 + ldr x1, [x0, 2576] add x22, x22, :lo12:.LC53 - add x25, x25, :lo12:.LC54 -.L2034: - ldrh w0, [x21,2346] + str x1, [x19, 8] + mov w20, 0 + ldr x1, [x0, 2640] + str x1, [x19, 16] +.L1999: + ldrh w0, [x21, 2346] cmp w20, w0 - bge .L2040 - mov w1, 1 + blt .L2001 + 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 +.L2001: orr w0, w20, w24 - mov w2, w1 - str w0, [x19,4] + mov w2, 1 + str w0, [x19, 4] + mov w1, w2 mov x0, x19 bl FlashReadPages - ldr x0, [x19,8] + ldp x1, x0, [x19, 8] + ldr w1, [x1] + str w1, [sp] mov w1, w23 - ldr x7, [x19,16] - ldr w0, [x0] - str w0, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] mov x0, x22 - ldr w4, [x7] - ldr w5, [x7,4] - ldr w6, [x7,8] - ldr w2, [x19] - ldr w3, [x19,4] - ldr w7, [x7,12] + ldp w2, w3, [x19] bl printk - ldr x0, [x19,16] + ldr x0, [x19, 16] ldr w0, [x0] cmn w0, #1 - beq .L2035 - ldr x1, [x21,2576] - mov x0, x25 - mov w2, 4 + beq .L2000 + ldr x1, [x21, 2576] + adrp x0, .LC54 mov w3, 768 + mov w2, 4 + add x0, x0, :lo12:.LC54 bl rknand_print_hex -.L2035: +.L2000: add w20, w20, 1 sxth w20, w20 - b .L2034 -.L2040: - 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 + b .L1999 .size FtlDumpSysBlock, .-FtlDumpSysBlock .align 2 .global Ftlscanalldata @@ -12671,520 +12438,497 @@ FtlDumpSysBlock: Ftlscanalldata: sub sp, sp, #96 adrp x0, .LC55 - add x0, x0, :lo12:.LC55 mov w1, 0 - stp x29, x30, [sp,16] + add x0, x0, :lo12:.LC55 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x23, x24, [sp,64] - adrp x23, .LANCHOR2 - stp x21, x22, [sp,48] - adrp x21, .LC56 - add x22, x23, :lo12:.LANCHOR2 - stp x19, x20, [sp,32] - add x21, x21, :lo12:.LC56 + stp x21, x22, [sp, 48] + adrp x22, .LANCHOR2 + add x21, x22, :lo12:.LANCHOR2 + stp x19, x20, [sp, 32] + str x23, [sp, 64] mov w20, 0 - add x19, x22, 2936 + add x19, x21, 2936 bl printk -.L2042: - add x0, x23, :lo12:.LANCHOR2 - ldr w0, [x0,2924] +.L2007: + add x0, x22, :lo12:.LANCHOR2 + ldr w0, [x0, 2924] cmp w20, w0 - bcs .L2049 - mov w0, w20 - add x1, x29, 76 - mov w2, 0 - bl log2phys - and w0, w20, 2047 - cbnz w0, .L2043 - ldr w2, [x29,76] - mov x0, x21 - mov w1, w20 - bl printk -.L2043: - ldr w0, [x29,76] - cmn w0, #1 - beq .L2045 - str w0, [x19,4] - mov w1, 1 - ldr x0, [x22,2576] - mov w2, 0 - str x0, [x19,8] - mov x0, x19 - ldr x24, [x22,2640] - str w20, [x19,24] - str x24, [x19,16] - str wzr, [x19] - bl FlashReadPages - ldr w0, [x19] - cmn w0, #1 - beq .L2046 - cmp w0, 256 - beq .L2046 - ldr w0, [x24,8] - cmp w0, w20 - beq .L2045 -.L2046: - ldr x7, [x19,8] - mov w1, w20 - ldr x6, [x19,16] - ldr w0, [x7,4] - str w0, [sp] - adrp x0, .LC57 - add x0, x0, :lo12:.LC57 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w2, [x19,4] - ldr w6, [x6,12] - ldr w7, [x7] - bl printk -.L2045: - add w20, w20, 1 - b .L2042 -.L2049: - sub sp, x29, #16 - ldp x19, x20, [sp,32] - ldp x21, x22, [sp,48] - ldp x23, x24, [sp,64] - ldp x29, x30, [sp,16] + bcc .L2013 + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x29, x30, [sp, 16] + ldr x23, [sp, 64] add sp, sp, 96 ret +.L2013: + mov w2, 0 + add x1, x29, 76 + mov w0, w20 + bl log2phys + tst x20, 2047 + bne .L2008 + ldr w2, [x29, 76] + adrp x0, .LC56 + mov w1, w20 + add x0, x0, :lo12:.LC56 + bl printk +.L2008: + ldr w0, [x29, 76] + cmn w0, #1 + beq .L2010 + ldr x23, [x21, 2640] + mov w2, 0 + stp wzr, w0, [x19] + mov w1, 1 + ldr x0, [x21, 2576] + str x0, [x19, 8] + mov x0, x19 + str x23, [x19, 16] + str w20, [x19, 24] + bl FlashReadPages + ldr w0, [x19] + cmp w0, 256 + ccmn w0, #1, 4, ne + beq .L2011 + ldr w0, [x23, 8] + cmp w20, w0 + beq .L2010 +.L2011: + ldp x1, x0, [x19, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] + adrp x0, .LC57 + ldr w7, [x1] + add x0, x0, :lo12:.LC57 + ldr w2, [x19, 4] + mov w1, w20 + bl printk +.L2010: + add w20, w20, 1 + b .L2007 .size Ftlscanalldata, .-Ftlscanalldata .align 2 .global dump_map_info .type dump_map_info, %function dump_map_info: - sub sp, sp, #128 - stp x29, x30, [sp,16] + sub sp, sp, #96 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] + stp x19, x20, [sp, 32] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - stp x25, x26, [sp,80] - stp x23, x24, [sp,64] - stp x27, x28, [sp,96] - stp x21, x22, [sp,48] - adrp x24, .LC58 - mov w25, 56 - ldrh w22, [x0,2284] - mov w26, 4 - mov x27, 56 - add x24, x24, :lo12:.LC58 -.L2051: - add x20, x19, :lo12:.LANCHOR2 - ldrh w0, [x20,2286] + stp x23, x24, [sp, 64] + stp x21, x22, [sp, 48] + add x24, x0, 2304 + stp x25, x26, [sp, 80] + mov x21, x19 + mov x19, x0 + mov w23, 56 + ldrh w22, [x0, 2284] +.L2016: + ldrh w0, [x19, 2286] cmp w0, w22 - bls .L2064 - mov x23, 0 - ldrh w3, [x20,2276] - ldrh w2, [x20,2356] - mov w21, w23 -.L2060: - cmp w3, w23, uxth - bls .L2065 - add x0, x20, 2304 - mov w1, w22 - str x2, [x29,96] - str x3, [x29,104] - ldrb w0, [x0,x23] - bl V2P_block - uxth w28, w0 - bl FtlBbmIsBadBlock - ldr x3, [x29,104] - ldr x2, [x29,96] - cbnz w0, .L2052 - umull x0, w21, w25 - ldr x1, [x20,2520] - lsl w28, w28, 10 - add x1, x1, x0 - str w28, [x1,4] - ldr x1, [x20,2520] - ldr x4, [x20,2656] - add x0, x1, x0 - ldr x1, [x20,2600] - str x1, [x0,8] - mul w1, w21, w2 - add w21, w21, 1 - sdiv w1, w1, w26 - uxth w21, w21 - add x1, x4, w1, sxtw 2 - str x1, [x0,16] -.L2052: - add x23, x23, 1 - b .L2060 -.L2065: - cbz w21, .L2055 - add x0, x19, :lo12:.LANCHOR2 - mov w1, w21 - mov w2, 1 - mov x20, 0 - ldr x0, [x0,2520] - bl FlashReadPages -.L2056: - cmp w21, w20, uxth - bls .L2055 - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - madd x0, x20, x27, x0 - add x20, x20, 1 - ldr x7, [x0,8] - ldr x6, [x0,16] - ldr w2, [x0,4] - ldr w0, [x7,4] - str w0, [sp] - ubfx x1, x2, 10, 16 - mov x0, x24 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w7, [x7] - ldr w6, [x6,12] - bl printk - b .L2056 -.L2055: - add w22, w22, 1 - uxth w22, w22 - b .L2051 -.L2064: - adrp x23, .LC59 - mov w22, 0 + bhi .L2022 + add x25, x21, :lo12:.LANCHOR2 adrp x26, .LANCHOR4 - add x25, x20, 2936 - add x23, x23, :lo12:.LC59 -.L2059: - add x1, x26, :lo12:.LANCHOR4 - ldrh w1, [x1,1088] - cmp w22, w1 - bge .L2062 - sbfiz x24, x22, 1, 32 - mov w21, 0 -.L2063: - ldrh w0, [x20,2346] - cmp w21, w0 - bge .L2066 - ldr x0, [x20,2720] - ldrh w1, [x0,x24] - mov x0, x25 - orr w1, w21, w1, lsl 10 - str w1, [x25,4] - mov w1, 1 - add w21, w21, 1 - mov w2, w1 - sxth w21, w21 - bl FlashReadPages - ldr x2, [x25,8] - ldr x0, [x20,2720] - ldr x7, [x25,16] - ldrh w1, [x0,x24] - ldr w0, [x2] - str w0, [sp] - ldr w0, [x2,4] - str w0, [sp,8] - mov x0, x23 - ldr w4, [x7] - ldr w5, [x7,4] - ldr w6, [x7,8] - ldr w2, [x25] - ldr w3, [x25,4] - ldr w7, [x7,12] - bl printk - b .L2063 -.L2066: + add x24, x25, 2936 + add x26, x26, :lo12:.LANCHOR4 + mov w20, 0 +.L2023: + ldrh w0, [x26, 1088] + cmp w20, w0 + bge .L2026 + adrp x0, .LC59 + sbfiz x22, x20, 1, 32 + mov w19, 0 + add x23, x0, :lo12:.LC59 + b .L2027 +.L2018: + ldrb w0, [x24, x5] + mov w1, w22 + bl V2P_block + and w4, w0, 65535 + bl FtlBbmIsBadBlock + cbnz w0, .L2017 + umull x2, w20, w23 + ldr x0, [x19, 2520] + lsl w4, w4, 10 + add x0, x0, x2 + str w4, [x0, 4] + ldr x1, [x19, 2520] + ldr x0, [x19, 2600] + add x1, x1, x2 + ldr x2, [x19, 2656] + str x0, [x1, 8] + mul w0, w20, w7 + add w20, w20, 1 + and w20, w20, 65535 + sdiv w0, w0, w6 + add x0, x2, w0, sxtw 2 + str x0, [x1, 16] +.L2017: + add x5, x5, 1 +.L2024: + cmp w8, w5, uxth + bhi .L2018 + cbnz w20, .L2019 +.L2021: add w22, w22, 1 - sxth w22, w22 - b .L2059 -.L2062: - add x19, x19, :lo12:.LANCHOR2 + and w22, w22, 65535 + b .L2016 +.L2019: + ldr x0, [x19, 2520] + mov w1, w20 + adrp x26, .LC58 + mov w2, 1 + umull x20, w20, w23 + mov x25, 0 + add x26, x26, :lo12:.LC58 + bl FlashReadPages +.L2020: + ldr x0, [x19, 2520] + add x0, x0, x25 + add x25, x25, 56 + ldr x1, [x0, 16] + ldr w2, [x0, 4] + ldr x0, [x0, 8] + ldr w3, [x0, 4] + str w3, [sp] + ldr w7, [x0] + mov x0, x26 + ldp w3, w4, [x1] + ldp w5, w6, [x1, 8] + ubfx x1, x2, 10, 16 + bl printk + cmp x25, x20 + beq .L2021 + b .L2020 +.L2022: + ldrh w8, [x19, 2276] + mov x5, 0 + ldrh w7, [x19, 2356] + mov w20, 0 + mov w6, 4 + b .L2024 +.L2025: + ldr x0, [x25, 2720] + mov w2, 1 + mov w1, w2 + ldrh w0, [x0, x22] + orr w0, w19, w0, lsl 10 + str w0, [x24, 4] + mov x0, x24 + bl FlashReadPages + ldp x2, x0, [x24, 8] + add w19, w19, 1 + ldr x1, [x25, 2720] + sxth w19, w19 + ldr w3, [x2, 4] + ldrh w1, [x1, x22] + str w3, [sp, 8] + ldr w2, [x2] + str w2, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x23 + ldp w2, w3, [x24] + bl printk +.L2027: + ldrh w0, [x25, 2346] + cmp w19, w0 + blt .L2025 + add w20, w20, 1 + sxth w20, w20 + b .L2023 +.L2026: + add x21, x21, :lo12:.LANCHOR2 + mov w2, 2 adrp x0, .LC60 add x0, x0, :lo12:.LC60 - mov w2, 2 - ldr x1, [x19,2720] - ldr w3, [x19,2372] + ldr w3, [x21, 2372] + ldr x1, [x21, 2720] bl rknand_print_hex - ldr x1, [x19,2768] + ldrh w3, [x21, 2380] + mov w2, 4 + ldr x1, [x21, 2768] adrp x0, .LC61 - ldrh w3, [x19,2380] add x0, x0, :lo12:.LC61 - mov w2, 4 bl rknand_print_hex - ldr x1, [x19,2776] + ldrh w3, [x21, 2380] + mov w2, 4 + ldr x1, [x21, 2776] adrp x0, .LC62 - ldrh w3, [x19,2380] add x0, x0, :lo12:.LC62 - mov w2, 4 bl rknand_print_hex - 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, 128 + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x25, x26, [sp, 80] + ldp x29, x30, [sp, 16] + add sp, sp, 96 ret .size dump_map_info, .-dump_map_info .align 2 .global FtlMapTblRecovery .type FtlMapTblRecovery, %function FtlMapTblRecovery: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -128]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x23, x24, [sp,48] - mov x27, x0 + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - ldr x22, [x0,40] + stp x21, x22, [sp, 32] + mov x22, x0 + stp x25, x26, [sp, 64] mov w19, 0 - ldrh w24, [x0,6] - ldr x23, [x0,16] - ldr x26, [x0,24] + stp x23, x24, [sp, 48] + adrp x25, .LANCHOR0 + stp x27, x28, [sp, 80] + ldrh w24, [x0, 6] + ldr x0, [x0, 40] + str x0, [x29, 120] + ldrh w0, [x22, 8] lsl w2, w24, 2 - ldrh w0, [x0,8] - str w0, [x29,136] - mov x0, x22 + str w0, [x29, 116] + ldr x0, [x29, 120] + ldp x23, x27, [x22, 16] bl ftl_memset - str x20, [x29,128] - add x6, x20, :lo12:.LANCHOR2 - str wzr, [x27,52] - add x4, x6, 2936 - str wzr, [x27,48] - mov x20, x6 - mov x25, x4 - ldr x0, [x6,2576] - ldr x21, [x6,2640] - str x0, [x6,2944] + stp wzr, wzr, [x22, 48] + add x4, x20, :lo12:.LANCHOR2 mov w0, -1 - str x21, [x6,2952] - strh w0, [x27] - strh w0, [x27,2] + mov x26, x4 + ldr x1, [x4, 2576] + ldr x21, [x4, 2640] + str x1, [x4, 2944] + str x21, [x4, 2952] + strh w0, [x22] + strh w0, [x22, 2] mov w0, 1 - str w0, [x27,56] - ldr w0, [x29,136] + str w0, [x22, 56] + ldr w0, [x29, 116] sub w0, w0, #1 - str w0, [x29,116] -.L2068: - ldr w0, [x29,136] + str w0, [x29, 112] + add x0, x25, :lo12:.LANCHOR0 + str x0, [x29, 96] +.L2031: + ldr w0, [x29, 116] cmp w19, w0 - bge .L2086 - ldr w0, [x29,116] + bge .L2050 + ldr w0, [x29, 112] sxtw x28, w19 cmp w19, w0 - bne .L2069 + bne .L2032 lsl x0, x28, 1 mov w1, 1 add x25, x23, x0 - mov w20, 0 - ldrh w0, [x23,x0] - bl FtlGetLastWrittenPage - strh w19, [x27] - sxth w1, w0 - add w0, w0, 1 - 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, 2936 -.L2070: - cmp w20, w19 - bge .L2086 - ldrh w0, [x25] - mov w1, 1 - mov w2, w1 - 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, .L2071 - ldr x0, [x28,16] - ldr w2, [x0,12] - cbz w2, .L2071 - ldr x0, [x28,8] - ldrh w1, [x23,2354] - str x2, [x29,136] - bl js_hash - ldr x2, [x29,136] - cmp w2, w0 - beq .L2071 - mov w0, -1 - str w0, [x28] -.L2071: - ldr w0, [x28] - cmn w0, #1 - beq .L2072 - ldrh w0, [x21,8] - cmp w0, w24 - bcs .L2072 - ldrh w2, [x21] - ldrh w1, [x27,4] - cmp w2, w1 - bne .L2072 - ubfiz x0, x0, 2, 16 - ldr w1, [x28,4] - str w1, [x22,x0] -.L2072: - add w4, w20, 1 - sxth w20, w4 - b .L2070 -.L2086: - mov x0, x27 + add x26, x26, :lo12:.LANCHOR0 + ldrh w0, [x23, x0] + bl FtlGetLastWrittenPage + strh w19, [x22] + sxth w23, w0 + add w0, w0, 1 + strh w0, [x22, 2] + add w23, w23, 1 + ldr w0, [x27, x28, lsl 2] + add x27, x20, :lo12:.LANCHOR2 + add x19, x27, 2936 + mov w28, 0 + str w0, [x22, 48] +.L2033: + cmp w28, w23 + blt .L2036 +.L2050: + add x20, x20, :lo12:.LANCHOR2 + mov x0, x22 bl ftl_free_no_use_map_blk - ldr x0, [x29,128] - ldrh w1, [x27,2] - add x20, x0, :lo12:.LANCHOR2 - ldrh w0, [x20,2346] + ldrh w1, [x22, 2] + ldrh w0, [x20, 2346] cmp w1, w0 - bne .L2075 - mov x0, x27 + bne .L2038 + mov x0, x22 bl ftl_map_blk_alloc_new_blk - b .L2075 -.L2069: - ldr x0, [x20,2576] - str x0, [x25,8] - lsl x0, x28, 1 - add x1, x23, x0 - str x1, [x29,120] - ldrh w1, [x23,x0] - ldrh w0, [x20,2346] - 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 .L2087 - ldrh w1, [x21] - mov w28, 0 - ldrh w0, [x27,4] - cmp w1, w0 - bne .L2108 - ldrh w1, [x21,8] - mov w0, 64245 - cmp w1, w0 - bne .L2108 - mov w5, w28 -.L2077: - ldrh w0, [x20,2346] - sub w0, w0, #1 - cmp w5, w0 - bge .L2080 - ldr x2, [x20,2576] - sbfiz x1, x5, 3, 32 - ldrh w0, [x2,x1] - cmp w0, w24 - bcs .L2078 - add x1, x2, x1 - ubfiz x0, x0, 2, 16 - ldr w1, [x1,4] - str w1, [x22,x0] -.L2078: - add w5, w5, 1 - sxth w5, w5 - b .L2077 -.L2087: - mov w28, 0 -.L2108: - ldrh w0, [x20,2346] - cmp w28, w0 - bge .L2080 - ldr x0, [x29,120] - mov w1, 1 - mov w2, w1 - ldrh w0, [x0] - orr w0, w28, w0, lsl 10 - str w0, [x25,4] - mov x0, x25 - bl FlashReadPages - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,88] - cbz w0, .L2081 - ldr x0, [x25,16] - ldr w2, [x0,12] - cbz w2, .L2081 - ldr x0, [x25,8] - ldrh w1, [x20,2354] - str x2, [x29,104] - bl js_hash - ldr x2, [x29,104] - cmp w2, w0 - beq .L2081 - mov w0, -1 - str w0, [x25] -.L2081: - ldr w0, [x25] - cmn w0, #1 - beq .L2082 - ldrh w0, [x21,8] - cmp w0, w24 - bcs .L2082 - ldrh w2, [x21] - ldrh w1, [x27,4] - cmp w2, w1 - bne .L2082 - ubfiz x0, x0, 2, 16 - ldr w1, [x25,4] - str w1, [x22,x0] -.L2082: - add w5, w28, 1 - sxth w28, w5 - b .L2108 -.L2080: - add w19, w19, 1 - sxth w19, w19 - b .L2068 -.L2075: - mov x0, x27 +.L2038: + mov x0, x22 bl ftl_map_blk_gc - mov x0, x27 + mov x0, x22 bl ftl_map_blk_gc 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], 144 + 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 +.L2036: + ldrh w0, [x25] + mov w2, 1 + mov w1, w2 + orr w0, w28, w0, lsl 10 + str w0, [x19, 4] + mov x0, x19 + bl FlashReadPages + ldrb w0, [x26, 88] + cbz w0, .L2034 + ldr x0, [x19, 16] + ldr w6, [x0, 12] + cbz w6, .L2034 + ldrh w1, [x27, 2354] + ldr x0, [x19, 8] + bl js_hash + cmp w6, w0 + beq .L2034 + mov w0, -1 + str w0, [x19] +.L2034: + ldr w0, [x19] + cmn w0, #1 + beq .L2035 + ldrh w0, [x21, 8] + cmp w24, w0 + bls .L2035 + ldrh w2, [x21] + ldrh w1, [x22, 4] + cmp w2, w1 + bne .L2035 + ldr x2, [x29, 120] + ubfiz x0, x0, 2, 16 + ldr w1, [x19, 4] + str w1, [x2, x0] +.L2035: + add w28, w28, 1 + sxth w28, w28 + b .L2033 +.L2032: + add x0, x26, 2936 + ldr x1, [x26, 2576] + str x1, [x0, 8] + lsl x1, x28, 1 + add x2, x23, x1 + str x2, [x29, 104] + ldrh w2, [x26, 2346] + ldrh w1, [x23, x1] + sub w2, w2, #1 + orr w1, w2, w1, lsl 10 + mov w2, 1 + str w1, [x0, 4] + mov w1, w2 + bl FlashReadPages + ldr w0, [x26, 2936] + cmn w0, #1 + beq .L2052 + ldrh w1, [x21] + ldrh w0, [x22, 4] + cmp w1, w0 + bne .L2052 + ldrh w1, [x21, 8] + mov w0, 64245 + cmp w1, w0 + beq .L2040 +.L2052: + add x25, x26, 2936 + mov w28, 0 +.L2041: + ldrh w0, [x26, 2346] + cmp w28, w0 + bge .L2048 + ldr x0, [x29, 104] + mov w2, 1 + mov w1, w2 + ldrh w0, [x0] + orr w0, w28, w0, lsl 10 + str w0, [x25, 4] + mov x0, x25 + bl FlashReadPages + ldr x0, [x29, 96] + ldrb w0, [x0, 88] + cbz w0, .L2045 + ldr x0, [x25, 16] + ldr w6, [x0, 12] + cbz w6, .L2045 + ldrh w1, [x26, 2354] + ldr x0, [x25, 8] + bl js_hash + cmp w6, w0 + beq .L2045 + mov w0, -1 + str w0, [x25] +.L2045: + ldr w0, [x25] + cmn w0, #1 + beq .L2046 + ldrh w0, [x21, 8] + cmp w24, w0 + bls .L2046 + ldrh w2, [x21] + ldrh w1, [x22, 4] + cmp w2, w1 + bne .L2046 + ldr x2, [x29, 120] + ubfiz x0, x0, 2, 16 + ldr w1, [x25, 4] + str w1, [x2, x0] +.L2046: + add w5, w28, 1 + sxth w28, w5 + b .L2041 +.L2040: + mov w0, 0 +.L2042: + ldrh w1, [x26, 2346] + sub w1, w1, #1 + cmp w0, w1 + blt .L2044 +.L2048: + add w19, w19, 1 + sxth w19, w19 + b .L2031 +.L2044: + ldr x2, [x26, 2576] + sbfiz x5, x0, 3, 32 + ldrh w1, [x2, x5] + cmp w24, w1 + bls .L2043 + add x2, x2, x5 + ldr x3, [x29, 120] + ubfiz x1, x1, 2, 16 + ldr w2, [x2, 4] + str w2, [x3, x1] +.L2043: + add w0, w0, 1 + sxth w0, w0 + b .L2042 .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 .global FtlLoadVonderInfo .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: - adrp x0, .LANCHOR4 adrp x1, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR4 add x1, x1, :lo12:.LANCHOR2 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 add x0, x0, 1000 add x29, sp, 0 - ldrh w2, [x1,2364] - strh w2, [x0,10] + ldrh w2, [x1, 2364] + strh w2, [x0, 10] mov w2, -3962 - strh w2, [x0,4] - ldrh w2, [x1,2920] - strh w2, [x0,8] - ldrh w2, [x1,2366] - strh w2, [x0,6] - ldr x2, [x1,2736] - str x2, [x0,16] - ldr x2, [x1,2752] - str x2, [x0,24] - ldr x2, [x1,2744] - ldr x1, [x1,2760] - str x2, [x0,32] - str x1, [x0,40] + strh w2, [x0, 4] + ldrh w2, [x1, 2920] + strh w2, [x0, 8] + ldrh w2, [x1, 2366] + strh w2, [x0, 6] + ldr x2, [x1, 2736] + str x2, [x0, 16] + ldr x2, [x1, 2752] + str x2, [x0, 24] + ldr x2, [x1, 2744] + ldr x1, [x1, 2760] + stp x2, x1, [x0, 32] bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 @@ -13195,72 +12939,71 @@ FtlLoadVonderInfo: .type FtlL2PDataInit, %function FtlL2PDataInit: stp x29, x30, [sp, -32]! + adrp x0, .LANCHOR2 mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - add x19, x20, :lo12:.LANCHOR2 - ldr w2, [x19,2372] - ldr x0, [x19,2728] + str x19, [sp, 16] + add x19, x0, :lo12:.LANCHOR2 + ldr x0, [x19, 2728] + ldr w2, [x19, 2372] lsl w2, w2, 1 bl ftl_memset - ldrh w3, [x19,2354] + ldrh w0, [x19, 2382] mov w1, 255 - ldrh w2, [x19,2382] - ldr x0, [x19,2800] - mul w2, w3, w2 + ldrh w2, [x19, 2354] + mul w2, w2, w0 + ldr x0, [x19, 2800] bl ftl_memset - mov w2, 0 - mov w4, -1 -.L2111: - add x0, x20, :lo12:.LANCHOR2 - ldrh w1, [x0,2382] - cmp w1, w2 - bls .L2113 - ldr x3, [x0,2792] - ubfiz x1, x2, 4, 16 - add x3, x3, x1 - str wzr, [x3,4] - ldr x3, [x0,2792] - strh w4, [x3,x1] - ldr x3, [x0,2792] - add x3, x3, x1 - ldrh w1, [x0,2354] - ldr x0, [x0,2800] - mul w1, w1, w2 - add w2, w2, 1 - sxtw x1, w1 - uxth w2, w2 - and x1, x1, -4 - add x0, x0, x1 - str x0, [x3,8] - b .L2111 -.L2113: + mov x0, x19 + mov w1, 0 + mov w5, -1 +.L2075: + ldrh w2, [x0, 2382] + cmp w2, w1 + bhi .L2076 adrp x2, .LANCHOR4 - mov w3, -1 add x2, x2, :lo12:.LANCHOR4 + mov w3, -1 add x1, x2, 928 - strh w3, [x2,930] - strh w3, [x2,928] - ldr w3, [x0,2372] - strh w3, [x2,938] + strh w3, [x2, 930] + strh w3, [x2, 928] + ldr w3, [x0, 2372] + strh w3, [x2, 938] mov w3, -3902 - strh w3, [x2,932] - ldrh w2, [x2,1088] - strh w2, [x1,8] - ldrh w2, [x0,2380] - strh w2, [x1,6] - ldr x2, [x0,2720] - str x2, [x1,16] - ldr x2, [x0,2784] - str x2, [x1,24] - ldr x2, [x0,2728] - ldr x0, [x0,2768] - str x2, [x1,32] - str x0, [x1,40] - ldp x19, x20, [sp,16] + strh w3, [x2, 932] + ldrh w2, [x2, 1088] + strh w2, [x1, 8] + ldrh w2, [x0, 2380] + strh w2, [x1, 6] + ldr x2, [x0, 2720] + str x2, [x1, 16] + ldr x2, [x0, 2784] + str x2, [x1, 24] + ldr x2, [x0, 2728] + ldr x0, [x0, 2768] + stp x2, x0, [x1, 32] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2076: + ldr x3, [x0, 2792] + ubfiz x2, x1, 4, 16 + add x3, x3, x2 + str wzr, [x3, 4] + ldr x3, [x0, 2792] + strh w5, [x3, x2] + ldr x3, [x0, 2792] + ldr x4, [x0, 2800] + add x3, x3, x2 + ldrh w2, [x0, 2354] + mul w2, w2, w1 + add w1, w1, 1 + and w1, w1, 65535 + sxtw x2, w2 + and x2, x2, -4 + add x2, x4, x2 + str x2, [x3, 8] + b .L2075 .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 .global FtlLoadMapInfo @@ -13281,624 +13024,621 @@ FtlLoadMapInfo: .global ftl_sb_update_avl_pages .type ftl_sb_update_avl_pages, %function ftl_sb_update_avl_pages: - adrp x3, .LANCHOR2 - uxth w1, w1 - add x4, x3, :lo12:.LANCHOR2 - uxth w2, w2 - strh wzr, [x0,4] - mov w6, 65535 - ldrh w4, [x4,2276] -.L2116: - cmp w2, w4 - bcs .L2122 - add x5, x0, w2, sxtw 1 - ldrh w5, [x5,16] - cmp w5, w6 - beq .L2117 - ldrh w5, [x0,4] - add w5, w5, 1 - strh w5, [x0,4] -.L2117: - add w2, w2, 1 - uxth w2, w2 - b .L2116 -.L2122: - add x3, x3, :lo12:.LANCHOR2 - mov w6, 65535 - add x4, x0, w4, uxth 1 - ldrh w5, [x3,2344] - mov x3, x0 -.L2119: - cmp x3, x4 - beq .L2123 - ldrh w2, [x3,16] - cmp w2, w6 - beq .L2120 - ldrh w2, [x0,4] - add w2, w5, w2 - sub w2, w2, #1 - sub w2, w2, w1 - strh w2, [x0,4] -.L2120: - add x3, x3, 2 - b .L2119 -.L2123: + and w6, w1, 65535 + adrp x4, .LANCHOR2 + add x1, x4, :lo12:.LANCHOR2 + and w2, w2, 65535 + strh wzr, [x0, 4] + ldrh w3, [x1, 2276] + mov w1, 65535 +.L2081: + cmp w3, w2, uxth + bhi .L2083 + add x4, x4, :lo12:.LANCHOR2 + ubfiz x3, x3, 1, 16 + add x3, x3, 16 + add x2, x0, 16 + add x3, x0, x3 + mov w5, 65535 + ldrh w1, [x4, 2344] + sub w1, w1, #1 + and w1, w1, 65535 + sub w1, w1, w6 +.L2084: + cmp x2, x3 + bne .L2086 ret +.L2083: + add x5, x0, w2, sxtw 1 + ldrh w5, [x5, 16] + cmp w5, w1 + beq .L2082 + ldrh w5, [x0, 4] + add w5, w5, 1 + strh w5, [x0, 4] +.L2082: + add w2, w2, 1 + b .L2081 +.L2086: + ldrh w4, [x2] + cmp w4, w5 + beq .L2085 + ldrh w4, [x0, 4] + add w4, w1, w4 + strh w4, [x0, 4] +.L2085: + add x2, x2, 2 + b .L2084 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global FtlReUsePrevPpa .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 - lsr x0, x1, 10 - stp x21, x22, [sp,32] - str x23, [sp,48] - str w1, [x29,76] + stp x19, x20, [sp, 16] + mov w19, w0 + str x21, [sp, 32] + lsr w0, w1, 10 + str w1, [x29, 60] bl P2V_block_in_plane adrp x2, .LANCHOR2 - uxth w0, w0 add x4, x2, :lo12:.LANCHOR2 - ubfiz x23, x0, 1, 16 - mov x22, x2 - ldr x3, [x4,2712] - ldrh w1, [x3,x23] - cbnz w1, .L2125 - adrp x21, .LANCHOR4 - add x2, x21, :lo12:.LANCHOR4 - ldr x19, [x2,768] - cbz x19, .L2126 - ldrh w3, [x2,776] + and w0, w0, 65535 + ubfiz x21, x0, 1, 16 + ldr x3, [x4, 2712] + ldrh w1, [x3, x21] + cbnz w1, .L2088 + mov x20, x2 + adrp x9, .LANCHOR4 + add x2, x9, :lo12:.LANCHOR4 + ldr x8, [x2, 768] + cbz x8, .L2089 + ldrh w3, [x2, 776] mov w5, 65535 - ldr x2, [x4,2808] + ldr x2, [x4, 2808] mov x4, -6148914691236517206 - sub x19, x19, x2 - asr x19, x19, 1 - madd x19, x4, x19, x19 + movk x4, 0xaaab, lsl 0 + sub x8, x8, x2 + asr x8, x8, 1 + mul x8, x8, x4 mov w4, 6 - uxth w19, w19 -.L2127: + and w8, w8, 65535 +.L2090: cmp w1, w3 - beq .L2126 - cmp w19, w0 - bne .L2128 - add x21, x21, :lo12:.LANCHOR4 - mov w1, w19 - add x0, x21, 768 + beq .L2089 + cmp w8, w0 + bne .L2091 + add x9, x9, :lo12:.LANCHOR4 + mov w1, w8 + add x0, x9, 768 bl List_remove_node - ldrh w0, [x21,776] + ldrh w0, [x9, 776] sub w0, w0, #1 - strh w0, [x21,776] - mov w0, w19 + strh w0, [x9, 776] + mov w0, w8 bl INSERT_DATA_LIST - add x2, x22, :lo12:.LANCHOR2 - ldr x1, [x2,2712] - ldrh w0, [x1,x23] + add x2, x20, :lo12:.LANCHOR2 + ldr x1, [x2, 2712] + ldrh w0, [x1, x21] add w0, w0, 1 - strh w0, [x1,x23] - b .L2126 -.L2128: - umull x19, w19, w4 - ldrh w19, [x2,x19] - cmp w19, w5 - beq .L2126 - add w1, w1, 1 - uxth w1, w1 - b .L2127 -.L2125: - add w1, w1, 1 - strh w1, [x3,x23] -.L2126: - add x1, x29, 76 - mov w0, w20 + strh w0, [x1, x21] +.L2089: + add x1, x29, 60 mov w2, 1 + mov w0, w19 bl log2phys - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 64 ret +.L2091: + umull x8, w8, w4 + ldrh w8, [x2, x8] + cmp w8, w5 + beq .L2089 + add w1, w1, 1 + and w1, w1, 65535 + b .L2090 +.L2088: + add w1, w1, 1 + strh w1, [x3, x21] + b .L2089 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa .align 2 .global make_superblock .type make_superblock, %function make_superblock: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov x19, x0 - strh wzr, [x0,4] - strb wzr, [x0,7] + mov x5, x0 + strh wzr, [x0, 4] + strb wzr, [x0, 7] adrp x0, .LANCHOR2 add x1, x0, :lo12:.LANCHOR2 - add x22, x19, 16 - mov x21, 0 - mov x20, x0 - mov x23, x1 - mov w25, -1 - ldrh w24, [x1,2276] -.L2134: - cmp w24, w21, uxth - bls .L2145 - add x0, x23, 2304 - ldrh w1, [x19] - ldrb w0, [x0,x21] - bl V2P_block - strh w25, [x22] - mov w26, w0 - bl FtlBbmIsBadBlock - cbnz w0, .L2135 - strh w26, [x22] - ldrb w0, [x19,7] - add w0, w0, 1 - strb w0, [x19,7] -.L2135: - add x21, x21, 1 - add x22, x22, 2 - b .L2134 -.L2145: - add x0, x20, :lo12:.LANCHOR2 - ldrb w1, [x19,7] - strb wzr, [x19,9] - ldrh w2, [x0,2344] + mov x7, 0 + add x8, x5, 16 + mov x6, x0 + add x9, x1, 2304 + mov w11, -1 + ldrh w10, [x1, 2276] + cmp w10, w7, uxth + bhi .L2117 + add x0, x0, :lo12:.LANCHOR2 + ldrb w1, [x5, 7] + strb wzr, [x5, 9] + ldrh w2, [x0, 2344] mul w1, w1, w2 - strh w1, [x19,4] - ldr w1, [x0,2096] - cbz w1, .L2137 - ldrh w1, [x19] - ldr x0, [x0,2696] - ldrh w0, [x0,x1,lsl 1] + strh w1, [x5, 4] + ldr w1, [x0, 2096] + cbz w1, .L2113 + ldrh w1, [x5] + ldr x0, [x0, 2696] + ldrh w0, [x0, x1, lsl 1] cmp w0, 79 - bhi .L2137 + bhi .L2113 mov w0, 1 - strb w0, [x19,9] -.L2137: + strb w0, [x5, 9] +.L2113: adrp x0, .LANCHOR0+88 - ldrb w0, [x0,#:lo12:.LANCHOR0+88] - cbz w0, .L2138 + ldrb w0, [x0, #:lo12:.LANCHOR0+88] + cbz w0, .L2116 mov w0, 1 - strb w0, [x19,9] -.L2138: + strb w0, [x5, 9] +.L2116: 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 +.L2117: + stp x29, x30, [sp, -16]! + add x29, sp, 0 +.L2100: + ldrh w1, [x5] + ldrb w0, [x9, x7] + bl V2P_block + mov w4, w0 + strh w11, [x8] + bl FtlBbmIsBadBlock + cbnz w0, .L2099 + strh w4, [x8] + ldrb w0, [x5, 7] + add w0, w0, 1 + strb w0, [x5, 7] +.L2099: + add x7, x7, 1 + add x8, x8, 2 + cmp w10, w7, uxth + bhi .L2100 + add x0, x6, :lo12:.LANCHOR2 + ldrb w1, [x5, 7] + strb wzr, [x5, 9] + ldrh w2, [x0, 2344] + mul w1, w1, w2 + strh w1, [x5, 4] + ldr w1, [x0, 2096] + cbz w1, .L2101 + ldrh w1, [x5] + ldr x0, [x0, 2696] + ldrh w0, [x0, x1, lsl 1] + cmp w0, 79 + bhi .L2101 + mov w0, 1 + strb w0, [x5, 9] +.L2101: + adrp x0, .LANCHOR0+88 + ldrb w0, [x0, #:lo12:.LANCHOR0+88] + cbz w0, .L2102 + mov w0, 1 + strb w0, [x5, 9] +.L2102: + mov w0, 0 + ldp x29, x30, [sp], 16 ret .size make_superblock, .-make_superblock .align 2 .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: - sub sp, sp, #128 + sub sp, sp, #112 mov w1, 0 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x21, x22, [sp,48] + stp x23, x24, [sp, 64] + stp x21, x22, [sp, 48] adrp x22, .LANCHOR2 - stp x23, x24, [sp,64] - add x23, x22, :lo12:.LANCHOR2 - stp x19, x20, [sp,32] - add x20, x23, 2936 + add x24, x22, :lo12:.LANCHOR2 + stp x19, x20, [sp, 32] + add x20, x24, 2936 + stp x25, x26, [sp, 80] + stp x27, x28, [sp, 96] adrp x19, .LANCHOR4 - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - ldr x0, [x23,2576] - add x24, x19, :lo12:.LANCHOR4 - str x0, [x20,8] - add x25, x24, 1072 - ldr x0, [x23,2640] - ldrh w2, [x23,2284] - str x0, [x20,16] - ldr x0, [x23,2712] + ldr x0, [x24, 2576] + add x23, x19, :lo12:.LANCHOR4 + str x0, [x20, 8] + ldr x0, [x24, 2640] + str x0, [x20, 16] + ldr x0, [x24, 2712] + ldrh w2, [x24, 2284] lsl w2, w2, 1 bl ftl_memset - ldrh w0, [x24,1072] + ldrh w0, [x23, 1072] mov w1, 65535 cmp w0, w1 - bne .L2147 -.L2158: - mov w19, -1 - b .L2148 -.L2147: + bne .L2119 +.L2130: + mov w0, -1 +.L2118: + 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, 112 + ret +.L2119: + add x25, x23, 1072 mov w1, 1 - adrp x26, .LC63 - add x26, x26, :lo12:.LC63 + mov w26, 19539 bl FtlGetLastWrittenPage + ldrsh w28, [x23, 1072] sxth w21, w0 + adrp x23, .LANCHOR0 add w0, w0, 1 - strh w0, [x25,2] - ldrsh w25, [x24,1072] -.L2149: - tbnz w21, #31, .L2157 - orr w0, w21, w25, lsl 10 - mov w1, 1 - str w0, [x20,4] - mov w2, w1 - ldr x0, [x23,2576] - str x0, [x20,8] + strh w0, [x25, 2] + add x25, x23, :lo12:.LANCHOR0 + movk w26, 0x4654, lsl 16 +.L2121: + tbnz w21, #31, .L2129 + orr w0, w21, w28, lsl 10 + str w0, [x20, 4] + ldr x0, [x24, 2576] + mov w2, 1 + str x0, [x20, 8] + mov w1, w2 mov x0, x20 bl FlashReadPages - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,88] - cbz w0, .L2150 - ldr x24, [x20,16] - ldr w7, [x24,12] - cbz w7, .L2150 - ldr x28, [x20,8] - ldrh w1, [x23,2354] - mov x0, x28 - str x7, [x29,104] + ldrb w0, [x25, 88] + cbz w0, .L2122 + ldr x8, [x20, 16] + ldr w7, [x8, 12] + cbz w7, .L2122 + ldr x6, [x20, 8] + ldrh w1, [x24, 2354] + mov x0, x6 bl js_hash - ldr x7, [x29,104] cmp w7, w0 - beq .L2150 - cbnz w21, .L2151 + beq .L2122 + cbnz w21, .L2123 add x0, x19, :lo12:.LANCHOR4 add x27, x0, 1072 - ldrh w1, [x0,1076] - cmp w25, w1 - beq .L2151 - ldrh w1, [x0,1072] - ldr w0, [x28] + ldrh w1, [x0, 1076] + cmp w28, w1 + beq .L2123 + ldrh w1, [x0, 1072] + ldr w0, [x6] str w0, [sp] - mov x0, x26 - ldr w2, [x20] - ldr w3, [x20,4] - ldr w4, [x24] - ldr w5, [x24,4] - ldr w6, [x24,8] + adrp x0, .LC63 + add x0, x0, :lo12:.LC63 + ldp w4, w5, [x8] + ldr w6, [x8, 8] + ldp w2, w3, [x20] bl printk - ldrsh w25, [x27,4] - ldrh w21, [x23,2346] - b .L2153 -.L2151: + ldrsh w28, [x27, 4] + ldrh w21, [x24, 2346] +.L2125: + sub w21, w21, #1 + sxth w21, w21 + b .L2121 +.L2123: mov w0, -1 str w0, [x20] -.L2150: +.L2122: ldr w0, [x20] cmn w0, #1 - beq .L2153 - ldr x0, [x23,2576] - ldr w1, [x0] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - bne .L2153 - ldr x0, [x23,2640] + beq .L2125 + ldr x0, [x24, 2576] + ldr w0, [x0] + cmp w0, w26 + bne .L2125 + ldr x0, [x24, 2640] ldrh w1, [x0] mov w0, 61604 cmp w1, w0 - bne .L2153 -.L2157: + bne .L2125 +.L2129: add x20, x22, :lo12:.LANCHOR2 add x0, x19, :lo12:.LANCHOR4 add x21, x20, 2936 mov w2, 48 add x0, x0, 696 - ldr x1, [x21,8] + add x23, x23, :lo12:.LANCHOR0 + ldr x1, [x21, 8] bl ftl_memcpy - ldr x1, [x21,8] - ldrh w2, [x20,2284] - ldr x0, [x20,2712] - add x1, x1, 48 + ldr x0, [x20, 2712] + ldrh w2, [x20, 2284] + ldr x1, [x21, 8] lsl w2, w2, 1 + add x1, x1, 48 bl ftl_memcpy - ldrh w2, [x20,2284] - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldr x3, [x21,8] - ubfiz x1, x2, 1, 16 - lsr w2, w2, 3 + ldrh w1, [x20, 2284] + ldr x0, [x21, 8] + lsr w2, w1, 3 + ubfiz x1, x1, 1, 16 add x1, x1, 51 add w2, w2, 4 - and x1, x1, 262140 - ldr x0, [x0,16] - add x1, x3, x1 + and x1, x1, -4 + add x1, x0, x1 + ldr x0, [x23, 80] bl ftl_memcpy - ldrh w0, [x20,2384] - cbz w0, .L2155 - ldrh w0, [x20,2284] - ldr x3, [x21,8] - lsr w1, w0, 3 - ldrh w2, [x20,2380] - add w1, w1, w0, lsl 1 - ldr x0, [x20,2776] + ldrh w0, [x20, 2384] + cbz w0, .L2127 + ldrh w1, [x20, 2284] + ldrh w2, [x20, 2380] + lsr w0, w1, 3 + add w1, w0, w1, lsl 1 + ldr x0, [x21, 8] add w1, w1, 52 lsl w2, w2, 2 and x1, x1, 65532 - add x1, x3, x1 + add x1, x0, x1 + ldr x0, [x20, 2776] bl ftl_memcpy - b .L2155 -.L2153: - sub w21, w21, #1 - sxth w21, w21 - b .L2149 -.L2155: - add x6, x19, :lo12:.LANCHOR4 +.L2127: + add x2, x19, :lo12:.LANCHOR4 mov w0, 19539 movk w0, 0x4654, lsl 16 - ldr w2, [x6,696] - cmp w2, w0 - bne .L2158 + add x1, x2, 696 + ldr w3, [x2, 696] + cmp w3, w0 + bne .L2130 add x0, x22, :lo12:.LANCHOR2 - ldrb w3, [x6,706] - ldrh w5, [x6,704] - strh w5, [x6,1078] - ldrh w2, [x0,2298] - cmp w3, w2 - bne .L2158 - ldrh w3, [x0,2344] - adrp x7, .LANCHOR5 - ldrh w2, [x0,2350] - add x4, x7, :lo12:.LANCHOR5 - mov x20, x7 - mul w3, w3, w5 - str w3, [x0,2924] - str w5, [x4,584] - mul w3, w3, w2 - str w3, [x0,1224] - ldrh w2, [x0,2830] - ldr w3, [x0,2288] - strh wzr, [x4,594] - sub w2, w3, w2 - ldrh w3, [x0,2276] - sub w2, w2, w5 - strb wzr, [x4,598] - strb wzr, [x4,600] - udiv w2, w2, w3 - mov w3, -1 - strh w2, [x4,588] - strh w3, [x4,592] - ldrh w5, [x6,710] - strh w5, [x6,784] - ldrh w2, [x6,712] - lsr w8, w2, 6 - and w2, w2, 63 - strb w2, [x6,790] - ldrb w2, [x6,707] - strb w2, [x6,792] - ldrh w2, [x6,714] - strh w2, [x6,832] - ldrh w2, [x6,716] - strh w8, [x6,786] + ldrh w4, [x2, 704] + ldrb w5, [x2, 706] + strh w4, [x2, 1078] + ldrh w3, [x0, 2298] + cmp w5, w3 + bne .L2130 + ldrh w3, [x0, 2344] + ldrh w5, [x0, 2350] + str w4, [x2, 1092] + strh wzr, [x2, 1106] + mul w3, w3, w4 + strb wzr, [x2, 1110] + str w3, [x0, 2924] + strb wzr, [x2, 1112] + mul w3, w5, w3 + ldrh w5, [x0, 2830] + str w3, [x0, 1224] + ldr w3, [x0, 2288] + sub w3, w3, w5 + ldrh w5, [x2, 710] + sub w3, w3, w4 + ldrh w4, [x0, 2276] + strh w5, [x2, 784] + udiv w3, w3, w4 + mov w4, -1 + strh w4, [x2, 1104] + ldrh w4, [x2, 718] + strh w4, [x2, 880] + strh w3, [x2, 1096] + ldrh w3, [x2, 712] + lsr w6, w3, 6 + and w3, w3, 63 + strb w3, [x2, 790] + ldrb w3, [x2, 707] + strb w3, [x2, 792] + ldrh w3, [x2, 714] + strh w3, [x2, 832] + ldrh w3, [x2, 716] + strh w6, [x2, 786] + lsr w6, w3, 6 + and w3, w3, 63 + strb w3, [x2, 838] + ldrb w3, [x2, 708] + strb w3, [x2, 840] + add x3, x2, 880 + strh w6, [x2, 834] + ldrh w2, [x2, 720] lsr w4, w2, 6 and w2, w2, 63 - strb w2, [x6,838] - ldrb w2, [x6,708] - strb w2, [x6,840] - ldrh w2, [x6,718] - strh w2, [x6,880] - ldrh w2, [x6,720] - strh w4, [x6,834] - lsr w4, w2, 6 - and w2, w2, 63 - strh w4, [x6,882] - strb w2, [x6,886] - ldrb w2, [x6,709] - strb w2, [x6,888] - ldr w2, [x6,728] - str w2, [x0,2428] - ldr w1, [x0,2396] - ldr w2, [x6,736] - str wzr, [x0,2404] - str wzr, [x0,2408] - cmp w2, w1 - str wzr, [x0,2424] - str wzr, [x0,2420] - str wzr, [x0,2432] - str wzr, [x0,2440] - str wzr, [x0,2416] - bls .L2159 - str w2, [x0,2396] -.L2159: + strh w4, [x3, 2] + strb w2, [x3, 6] + ldrb w2, [x1, 13] + strb w2, [x3, 8] + add x3, x0, 2304 + ldr w2, [x1, 32] + str wzr, [x0, 2404] + str wzr, [x0, 2408] + ldr w1, [x1, 40] + stp wzr, wzr, [x3, 112] + stp wzr, w2, [x3, 120] + str wzr, [x0, 2432] + ldr w2, [x0, 2396] + str wzr, [x0, 2440] + cmp w1, w2 + bls .L2131 + str w1, [x0, 2396] +.L2131: add x0, x19, :lo12:.LANCHOR4 add x22, x22, :lo12:.LANCHOR2 - ldr w0, [x0,732] - ldr w1, [x22,2400] + ldr w0, [x0, 732] + ldr w1, [x22, 2400] cmp w0, w1 - bls .L2160 - str w0, [x22,2400] -.L2160: + bls .L2132 + str w0, [x22, 2400] +.L2132: mov w0, 65535 cmp w5, w0 - beq .L2161 + beq .L2133 add x0, x19, :lo12:.LANCHOR4 add x0, x0, 784 bl make_superblock -.L2161: - add x2, x19, :lo12:.LANCHOR4 +.L2133: + add x1, x19, :lo12:.LANCHOR4 + add x0, x1, 832 + ldrh w2, [x1, 832] mov w1, 65535 - add x0, x2, 832 - ldrh w2, [x2,832] cmp w2, w1 - beq .L2162 + beq .L2134 bl make_superblock -.L2162: +.L2134: + add x1, x19, :lo12:.LANCHOR4 + add x0, x1, 880 + ldrh w2, [x1, 880] + mov w1, 65535 + cmp w2, w1 + beq .L2135 + bl make_superblock +.L2135: add x19, x19, :lo12:.LANCHOR4 mov w1, 65535 - add x0, x19, 880 - ldrh w2, [x19,880] + add x0, x19, 1104 + ldrh w2, [x19, 1104] cmp w2, w1 - beq .L2163 + beq .L2136 bl make_superblock -.L2163: - add x1, x20, :lo12:.LANCHOR5 - mov w19, 0 - add x0, x1, 592 - ldrh w2, [x1,592] - mov w1, 65535 - cmp w2, w1 - beq .L2148 - bl make_superblock -.L2148: - sub sp, x29, #16 - mov w0, w19 - 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, 128 - ret +.L2136: + mov w0, 0 + b .L2118 .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 .global FtlDumpBlockInfo .type FtlDumpBlockInfo, %function FtlDumpBlockInfo: - sub sp, sp, #176 - lsr x0, x0, 10 - stp x29, x30, [sp,16] + sub sp, sp, #160 + lsr w0, w0, 10 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] - stp x21, x22, [sp,48] - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - uxtb w24, w1 + stp x19, x20, [sp, 32] + adrp x19, .LANCHOR2 + add x20, x19, :lo12:.LANCHOR2 + stp x21, x22, [sp, 48] + stp x23, x24, [sp, 64] + add x23, x29, 144 + stp x25, x26, [sp, 80] + and w25, w1, 255 + str x27, [sp, 96] bl P2V_block_in_plane - adrp x2, .LANCHOR3 - adrp x20, .LANCHOR2 - uxth w22, w0 - add x1, x2, :lo12:.LANCHOR3 - add x19, x20, :lo12:.LANCHOR2 - adrp x0, .LC49 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 + and w22, w0, 65535 add x1, x1, 168 + ldrh w24, [x20, 2344] + adrp x0, .LC49 add x0, x0, :lo12:.LC49 - ldrh w23, [x19,2344] bl printk - ldr x3, [x19,2712] - ubfiz x2, x22, 1, 16 - adrp x0, .LC64 + ldr x1, [x20, 2712] + ubfiz x0, x22, 1, 16 + ldrh w2, [x1, x0] mov w1, w22 + adrp x0, .LC64 add x0, x0, :lo12:.LC64 - ldrh w2, [x3,x2] bl printk - strh w22, [x29,112] - add x0, x29, 112 + strh w22, [x23, -48]! + mov x0, x23 bl make_superblock - cbnz w24, .L2183 - ldrb w0, [x19,1220] - cbz w0, .L2183 + ldrb w0, [x20, 1220] + cbz w0, .L2157 + cbnz w25, .L2157 mov w0, w22 bl ftl_get_blk_mode - cmp w0, 1 mov w22, w0 - bne .L2175 - ldrh w23, [x19,2346] - b .L2175 -.L2183: - mov w22, 0 -.L2175: - add x3, x20, :lo12:.LANCHOR2 - adrp x0, .LC65 - adrp x24, .LC59 - add x0, x0, :lo12:.LC65 - mov w1, w22 - mov w2, w23 - ldrh w3, [x3,2344] + cmp w0, 1 + bne .L2148 + ldrh w24, [x20, 2346] +.L2148: + add x19, x19, :lo12:.LANCHOR2 mov w21, 0 - mov w26, 65535 - mov w27, 56 - mov w25, 4 - add x24, x24, :lo12:.LC59 + mov w26, 56 + mov w2, w24 + mov w1, w22 + adrp x0, .LC65 + ldrh w3, [x19, 2344] + add x0, x0, :lo12:.LC65 bl printk -.L2176: - add x0, x20, :lo12:.LANCHOR2 - mov x3, 0 - mov w19, w3 - ldrh w5, [x0,2276] - ldrh w6, [x0,2354] - ldrh w7, [x0,2356] -.L2177: - cmp w5, w3, uxth - bls .L2191 - add x0, x29, 112 - add x0, x0, x3, lsl 1 - ldrh w1, [x0,16] - cmp w1, w26 - beq .L2178 - add x2, x20, :lo12:.LANCHOR2 - orr w1, w21, w1, lsl 10 - umull x0, w19, w27 - ldr x4, [x2,2520] - add x4, x4, x0 - str w1, [x4,4] - ldr x1, [x2,2520] - ldr x4, [x2,2600] - add x0, x1, x0 - ldr x2, [x2,2656] - mul w1, w19, w6 - sdiv w1, w1, w25 - add x1, x4, w1, sxtw 2 - str x1, [x0,8] - mul w1, w19, w7 - add w19, w19, 1 - uxth w19, w19 - sdiv w1, w1, w25 - add x1, x2, w1, sxtw 2 - str x1, [x0,16] -.L2178: - add x3, x3, 1 - b .L2177 -.L2191: - add x0, x20, :lo12:.LANCHOR2 - mov w1, w19 - mov w2, w22 - mov x28, 0 - ldr x0, [x0,2520] - bl FlashReadPages - mov x8, 56 -.L2180: - cmp w19, w28, uxth - bls .L2192 - add x0, x20, :lo12:.LANCHOR2 - ldrh w1, [x29,112] - mul x2, x28, x8 - str x8, [x29,104] - add x28, x28, 1 - ldr x4, [x0,2520] - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x24 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] - bl printk - ldr x8, [x29,104] - b .L2180 -.L2192: - add w21, w21, 1 - uxth w21, w21 - cmp w21, w23 - bne .L2176 -.L2182: - sub sp, x29, #16 +.L2149: + ldrh w7, [x19, 2276] + add x3, x23, 16 + ldrh w8, [x19, 2354] + mov w20, 0 + ldrh w9, [x19, 2356] mov w0, 0 - 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 + mov w10, 65535 + mov w5, 4 +.L2150: + cmp w0, w7 + bne .L2152 + ldr x0, [x19, 2520] + mov w1, w20 + adrp x27, .LC59 + mov w2, w22 + umull x20, w20, w26 + mov x25, 0 + add x27, x27, :lo12:.LC59 + bl FlashReadPages +.L2153: + cmp x25, x20 + bne .L2154 + add w21, w21, 1 + and w21, w21, 65535 + cmp w24, w21 + bne .L2149 +.L2155: + ldp x19, x20, [sp, 32] + mov w0, 0 + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x25, x26, [sp, 80] + ldp x29, x30, [sp, 16] + ldr x27, [sp, 96] + add sp, sp, 160 ret +.L2157: + mov w22, 0 + b .L2148 +.L2152: + ldrh w1, [x3] + cmp w1, w10 + beq .L2151 + umull x6, w20, w26 + ldr x4, [x19, 2520] + orr w1, w21, w1, lsl 10 + add x4, x4, x6 + str w1, [x4, 4] + mul w1, w20, w8 + ldr x2, [x19, 2520] + ldr x4, [x19, 2600] + sdiv w1, w1, w5 + add x2, x2, x6 + add x1, x4, w1, sxtw 2 + str x1, [x2, 8] + mul w1, w20, w9 + ldr x4, [x19, 2656] + add w20, w20, 1 + and w20, w20, 65535 + sdiv w1, w1, w5 + add x1, x4, w1, sxtw 2 + str x1, [x2, 16] +.L2151: + add w0, w0, 1 + add x3, x3, 2 + and w0, w0, 65535 + b .L2150 +.L2154: + ldr x8, [x19, 2520] + ldrh w1, [x29, 96] + add x2, x8, x25 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x27 + ldr w3, [x2, 4] + ldr w2, [x8, x25] + add x25, x25, 56 + bl printk + b .L2153 .size FtlDumpBlockInfo, .-FtlDumpBlockInfo .align 2 .global FtlScanAllBlock @@ -13906,388 +13646,366 @@ FtlDumpBlockInfo: FtlScanAllBlock: sub sp, sp, #144 adrp x1, .LANCHOR3 - adrp x0, .LC49 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC49 + adrp x0, .LC49 add x1, x1, 192 - stp x29, x30, [sp,16] + add x0, x0, :lo12:.LC49 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x23, x24, [sp,64] - stp x21, x22, [sp,48] - adrp x23, .LC67 - adrp x22, .LC66 - adrp x24, .LC68 - add x22, x22, :lo12:.LC66 - stp x19, x20, [sp,32] - add x23, x23, :lo12:.LC67 + stp x19, x20, [sp, 32] mov w20, 0 - add x24, x24, :lo12:.LC68 - stp x25, x26, [sp,80] + stp x21, x22, [sp, 48] + stp x23, x24, [sp, 64] + adrp x23, .LANCHOR2 + str x25, [sp, 80] + add x21, x23, :lo12:.LANCHOR2 bl printk -.L2194: - adrp x21, .LANCHOR2 - add x19, x21, :lo12:.LANCHOR2 - ldrh w0, [x19,2286] +.L2161: + add x19, x23, :lo12:.LANCHOR2 + ldrh w0, [x19, 2286] cmp w0, w20 - bls .L2203 + bhi .L2169 + ldp x19, x20, [sp, 32] + mov w0, 0 + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x29, x30, [sp, 16] + ldr x25, [sp, 80] + add sp, sp, 144 + ret +.L2169: + strh w20, [x29, 80] mov w0, w20 - strh w20, [x29,80] bl ftl_get_blk_mode mov w3, w0 - ldr x4, [x19,2712] - ubfiz x2, x20, 1, 16 + ldr x2, [x19, 2712] + ubfiz x1, x20, 1, 16 + adrp x0, .LC66 + add x0, x0, :lo12:.LC66 + ldrh w2, [x2, x1] mov w1, w20 - mov x0, x22 - ldrh w2, [x4,x2] bl printk add x0, x29, 80 bl make_superblock - mov x1, 0 - ldrh w6, [x19,2276] - ldrh w7, [x19,2354] - mov w9, 65535 - ldrh w8, [x19,2356] - mov w10, 56 - mov w19, w1 - mov w5, 4 -.L2195: - cmp w6, w1, uxth - bls .L2204 - add x0, x29, 80 - add x0, x0, x1, lsl 1 - ldrh w0, [x0,16] - cmp w0, w9 - beq .L2196 - add x3, x21, :lo12:.LANCHOR2 - lsl w0, w0, 10 - umull x2, w19, w10 - ldr x4, [x3,2520] - add x4, x4, x2 - str w0, [x4,4] - ldr x0, [x3,2520] - ldr x4, [x3,2600] - add x2, x0, x2 - ldr x3, [x3,2656] - mul w0, w19, w7 - sdiv w0, w0, w5 - add x0, x4, w0, sxtw 2 - str x0, [x2,8] - mul w0, w19, w8 - add w19, w19, 1 - uxth w19, w19 - sdiv w0, w0, w5 - add x0, x3, w0, sxtw 2 - str x0, [x2,16] -.L2196: - add x1, x1, 1 - b .L2195 -.L2204: - add x0, x21, :lo12:.LANCHOR2 - mov w1, w19 - mov w2, 0 - mov x25, 0 - mov x26, 56 - ldr x0, [x0,2520] - bl FlashReadPages -.L2198: - add x0, x21, :lo12:.LANCHOR2 - cmp w19, w25, uxth - bls .L2205 - ldr x4, [x0,2520] - mul x2, x25, x26 - ldrh w1, [x29,80] - add x25, x25, 1 - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x23 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] - bl printk - b .L2198 -.L2205: - ldr x0, [x0,2520] - mov w1, w19 - mov w2, 1 - mov x25, 0 - mov x26, 56 - bl FlashReadPages -.L2200: - cmp w19, w25, uxth - bls .L2206 - add x0, x21, :lo12:.LANCHOR2 - ldrh w1, [x29,80] - mul x2, x25, x26 - add x25, x25, 1 - ldr x4, [x0,2520] - add x3, x4, x2 - ldr x0, [x3,8] - ldr x7, [x3,16] - ldr w5, [x0] - str w5, [sp] - ldr w0, [x0,4] - str w0, [sp,8] - mov x0, x24 - ldr w2, [x4,x2] - ldr w5, [x7,4] - ldr w4, [x7] - ldr w6, [x7,8] - ldr w3, [x3,4] - ldr w7, [x7,12] - bl printk - b .L2200 -.L2206: - add w20, w20, 1 - uxth w20, w20 - b .L2194 -.L2203: - sub sp, x29, #16 + add x3, x29, 96 + ldrh w7, [x19, 2276] + ldrh w8, [x19, 2354] mov w0, 0 - ldp x19, x20, [sp,32] - ldp x21, x22, [sp,48] - ldp x23, x24, [sp,64] - ldp x25, x26, [sp,80] - ldp x29, x30, [sp,16] - add sp, sp, 144 - ret + ldrh w9, [x19, 2356] + mov w10, 65535 + mov w19, 0 + mov w11, 56 + mov w5, 4 +.L2162: + cmp w0, w7 + bne .L2164 + ldr x0, [x21, 2520] + mov w24, 56 + adrp x25, .LC67 + mov w2, 0 + mov w1, w19 + umull x24, w19, w24 + mov x22, 0 + add x25, x25, :lo12:.LC67 + bl FlashReadPages +.L2165: + cmp x22, x24 + bne .L2166 + ldr x0, [x21, 2520] + mov w1, w19 + adrp x24, .LC68 + mov w2, 1 + mov x19, 0 + add x24, x24, :lo12:.LC68 + bl FlashReadPages +.L2167: + cmp x22, x19 + bne .L2168 + add w20, w20, 1 + and w20, w20, 65535 + b .L2161 +.L2164: + ldrh w1, [x3] + cmp w1, w10 + beq .L2163 + umull x6, w19, w11 + ldr x4, [x21, 2520] + lsl w1, w1, 10 + add x4, x4, x6 + str w1, [x4, 4] + mul w1, w19, w8 + ldr x2, [x21, 2520] + ldr x4, [x21, 2600] + sdiv w1, w1, w5 + add x2, x2, x6 + add x1, x4, w1, sxtw 2 + str x1, [x2, 8] + mul w1, w19, w9 + ldr x4, [x21, 2656] + add w19, w19, 1 + and w19, w19, 65535 + sdiv w1, w1, w5 + add x1, x4, w1, sxtw 2 + str x1, [x2, 16] +.L2163: + add w0, w0, 1 + add x3, x3, 2 + and w0, w0, 65535 + b .L2162 +.L2166: + ldr x8, [x21, 2520] + ldrh w1, [x29, 80] + add x2, x8, x22 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x25 + ldr w3, [x2, 4] + ldr w2, [x8, x22] + add x22, x22, 56 + bl printk + b .L2165 +.L2168: + ldr x8, [x21, 2520] + ldrh w1, [x29, 80] + add x2, x8, x19 + ldp x3, x0, [x2, 8] + ldr w4, [x3, 4] + str w4, [sp, 8] + ldr w3, [x3] + str w3, [sp] + ldp w4, w5, [x0] + ldp w6, w7, [x0, 8] + mov x0, x24 + ldr w3, [x2, 4] + ldr w2, [x8, x19] + add x19, x19, 56 + bl printk + b .L2167 .size FtlScanAllBlock, .-FtlScanAllBlock .align 2 .global SupperBlkListInit .type SupperBlkListInit, %function SupperBlkListInit: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -64]! + mov w0, 6 mov w1, 0 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR2 - stp x19, x20, [sp,16] - add x19, x23, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w25, 6 - adrp x22, .LANCHOR4 - ldrh w2, [x19,2286] - add x21, x22, :lo12:.LANCHOR4 - ldr x0, [x19,2808] - mov w28, 0 - mov w24, w28 - mov w26, -1 - mul w2, w2, w25 - mov w27, 32768 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + adrp x20, .LANCHOR4 + add x23, x19, 2304 + mov w21, 0 + ldrh w2, [x19, 2286] + mov w22, 0 + mov w24, 0 + mul w2, w2, w0 + ldr x0, [x19, 2808] bl ftl_memset - strh wzr, [x19,2386] - str xzr, [x21,768] - mov w19, w28 - str xzr, [x21,744] - str xzr, [x21,752] - strh wzr, [x21,760] - strh wzr, [x21,776] -.L2208: - add x0, x23, :lo12:.LANCHOR2 - ldrh w1, [x0,2284] - cmp w19, w1 - bge .L2215 - mov w20, 0 - ldrh w5, [x0,2276] - ldrh w4, [x0,2344] - mov w3, w20 - mov x2, x0 -.L2216: - cmp w3, w5 - bge .L2217 - add x0, x2, 2304 - mov w1, w19 - str x4, [x29,96] - str x5, [x29,104] - ldrb w0, [x0,w3,sxtw] - str x2, [x29,112] - str x3, [x29,120] + strh wzr, [x19, 2386] + add x0, x20, :lo12:.LANCHOR4 + strh wzr, [x0, 760] + strh wzr, [x0, 776] + str xzr, [x0, 744] + str xzr, [x0, 752] + str xzr, [x0, 768] +.L2172: + ldrh w0, [x19, 2284] + cmp w24, w0 + bge .L2179 + ldrh w8, [x19, 2276] + mov w5, 0 + ldrh w7, [x19, 2344] + mov w6, 0 + b .L2180 +.L2174: + ldrb w0, [x23, w6, sxtw] + mov w1, w24 bl V2P_block bl FtlBbmIsBadBlock - ldr x3, [x29,120] - ldr x2, [x29,112] - ldr x5, [x29,104] - ldr x4, [x29,96] - cbnz w0, .L2209 - add w20, w4, w20 - sxth w20, w20 -.L2209: - add w3, w3, 1 - sxth w3, w3 - b .L2216 -.L2217: - cbz w20, .L2211 - sdiv w20, w27, w20 - sxth w20, w20 - b .L2212 -.L2211: - add x0, x23, :lo12:.LANCHOR2 - ldr x0, [x0,2712] - strh w26, [x0,w19,sxtw 1] -.L2212: - add x1, x23, :lo12:.LANCHOR2 - ldr x0, [x1,2808] - smaddl x0, w19, w25, x0 - strh w20, [x0,4] - ldrh w0, [x21,784] - cmp w19, w0 - beq .L2213 - ldrh w0, [x21,832] - cmp w19, w0 - beq .L2213 - ldrh w0, [x21,880] - cmp w19, w0 - beq .L2213 - ldr x0, [x1,2712] - ldrh w0, [x0,w19,sxtw 1] - cbnz w0, .L2214 - add w28, w28, 1 - mov w0, w19 - uxth w28, w28 + cbnz w0, .L2173 + add w5, w7, w5 + sxth w5, w5 +.L2173: + add w6, w6, 1 + sxth w6, w6 +.L2180: + cmp w6, w8 + blt .L2174 + cbz w5, .L2175 + mov w0, 32768 + sdiv w5, w0, w5 + sxth w5, w5 +.L2176: + ldr x1, [x19, 2808] + mov w0, 6 + smaddl x0, w24, w0, x1 + strh w5, [x0, 4] + add x0, x20, :lo12:.LANCHOR4 + ldrh w1, [x0, 784] + cmp w24, w1 + beq .L2177 + ldrh w1, [x0, 832] + cmp w24, w1 + beq .L2177 + ldrh w0, [x0, 880] + cmp w24, w0 + beq .L2177 + ldr x0, [x19, 2712] + ldrh w0, [x0, w24, sxtw 1] + cbnz w0, .L2178 + add w21, w21, 1 + mov w0, w24 + and w21, w21, 65535 bl INSERT_FREE_LIST - b .L2213 -.L2214: +.L2177: add w24, w24, 1 - mov w0, w19 - uxth w24, w24 + sxth w24, w24 + b .L2172 +.L2175: + ldr x0, [x19, 2712] + mov w1, -1 + strh w1, [x0, w24, sxtw 1] + b .L2176 +.L2178: + add w22, w22, 1 + mov w0, w24 + and w22, w22, 65535 bl INSERT_DATA_LIST -.L2213: - add w19, w19, 1 - sxth w19, w19 - b .L2208 -.L2215: - add x22, x22, :lo12:.LANCHOR4 + b .L2177 +.L2179: + add x20, x20, :lo12:.LANCHOR4 mov w0, 0 - ldp x19, x20, [sp,16] - ldp x25, x26, [sp,64] - strh w24, [x22,760] - strh w28, [x22,776] - ldp x23, x24, [sp,48] - ldp x21, x22, [sp,32] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 128 + ldp x23, x24, [sp, 48] + strh w22, [x20, 760] + strh w21, [x20, 776] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 ret .size SupperBlkListInit, .-SupperBlkListInit .align 2 .global Ftl_save_ext_data .type Ftl_save_ext_data, %function Ftl_save_ext_data: - adrp x0, .LANCHOR5 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 mov w1, 19539 - add x0, x0, :lo12:.LANCHOR5 movk w1, 0x4654, lsl 16 - stp x29, x30, [sp, -16]! - add x2, x0, 640 - add x29, sp, 0 - ldr w3, [x0,640] + ldr w3, [x0, 1152] cmp w3, w1 - bne .L2218 + bne .L2185 + stp x29, x30, [sp, -16]! + add x2, x0, 1152 mov w1, 99 + add x29, sp, 0 movk w1, 0x5000, lsl 16 - str w1, [x2,4] - ldr w1, [x0,1152] - ldr w0, [x0,1156] - str w0, [x2,92] + str w1, [x2, 4] + ldr w1, [x0, 1664] + ldr w0, [x0, 1668] + stp w1, w0, [x2, 88] adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - str w1, [x2,88] - ldr w1, [x0,2404] - str w1, [x2,8] - ldr w1, [x0,2408] - str w1, [x2,12] - ldr w1, [x0,2424] - str w1, [x2,16] - ldr w1, [x0,2420] - str w1, [x2,20] - ldr w1, [x0,2432] - str w1, [x2,28] - ldr w1, [x0,2436] - str w1, [x2,32] - ldr w1, [x0,2412] - str w1, [x2,36] - ldr w1, [x0,2416] - str w1, [x2,40] - ldr w1, [x0,2440] - str w1, [x2,44] - ldr w1, [x0,2444] - str w1, [x2,48] - ldr w1, [x0,2392] - ldr w0, [x0,2388] - str w1, [x2,60] + ldr w1, [x0, 2404] + str w1, [x2, 8] + ldr w1, [x0, 2408] + str w1, [x2, 12] + ldr w1, [x0, 2424] + str w1, [x2, 16] + ldr w1, [x0, 2420] + str w1, [x2, 20] + ldr w1, [x0, 2432] + str w1, [x2, 28] + ldr w1, [x0, 2436] + str w1, [x2, 32] + ldr w1, [x0, 2412] + str w1, [x2, 36] + ldr w1, [x0, 2416] + str w1, [x2, 40] + ldr w1, [x0, 2440] + str w1, [x2, 44] + ldr w1, [x0, 2444] + str w1, [x2, 48] + ldr w1, [x0, 2392] + ldr w0, [x0, 2388] + stp w1, w0, [x2, 60] mov w1, 1 - str w0, [x2,64] mov w0, 0 bl FtlVendorPartWrite -.L2218: ldp x29, x30, [sp], 16 ret +.L2185: + ret .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 .global FtlEctTblFlush .type FtlEctTblFlush, %function FtlEctTblFlush: - adrp x2, .LANCHOR2 - mov w1, 32 - add x3, x2, :lo12:.LANCHOR2 + adrp x1, .LANCHOR2 + add x2, x1, :lo12:.LANCHOR2 + ldr w3, [x2, 2096] + cbz w3, .L2193 + ldr w2, [x2, 2444] + mov w3, 4 + cmp w2, 39 + mov w2, 32 + csel w2, w2, w3, hi +.L2189: + adrp x3, .LANCHOR4 + add x3, x3, :lo12:.LANCHOR4 + ldrh w4, [x3, 1672] + cmp w4, 31 + bhi .L2190 + add w4, w4, 1 + mov w2, 1 + strh w4, [x3, 1672] +.L2190: + cbnz w0, .L2191 + add x0, x1, :lo12:.LANCHOR2 + ldr x0, [x0, 2688] + ldr w3, [x0, 20] + ldr w0, [x0, 16] + add w2, w2, w3 + cmp w0, w2 + bcc .L2196 +.L2191: + add x0, x1, :lo12:.LANCHOR2 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w4, [x3,2096] - cbz w4, .L2221 - ldr w3, [x3,2444] - cmp w3, 39 - mov w3, 4 - csel w1, w1, w3, hi -.L2221: - adrp x3, .LANCHOR5 - add x3, x3, :lo12:.LANCHOR5 - ldrh w4, [x3,1160] - cmp w4, 31 - bhi .L2222 - add w4, w4, 1 - mov w1, 1 - strh w4, [x3,1160] -.L2222: - cbnz w0, .L2223 - add x0, x2, :lo12:.LANCHOR2 - ldr x3, [x0,2688] - ldr w0, [x3,20] - add w1, w1, w0 - ldr w0, [x3,16] - cmp w0, w1 - bcc .L2224 -.L2223: - add x2, x2, :lo12:.LANCHOR2 - ldr x0, [x2,2688] - ldr w1, [x0,16] - str w1, [x0,20] - mov w1, 17221 - movk w1, 0x4254, lsl 16 - str w1, [x0] - ldr x0, [x2,2688] - ldrh w1, [x2,2672] - str wzr, [x0,4] + ldr x1, [x0, 2688] + ldr w2, [x1, 16] + str w2, [x1, 20] + mov w2, 17221 + movk w2, 0x4254, lsl 16 + str w2, [x1] + ldr x2, [x0, 2688] + ldrh w1, [x0, 2672] lsl w3, w1, 9 - str w3, [x0,12] - ldr w3, [x0,8] - ldr x2, [x2,2688] + str wzr, [x2, 4] + str w3, [x2, 12] + ldr w3, [x2, 8] add w3, w3, 1 - str w3, [x0,8] + str w3, [x2, 8] + ldr x2, [x0, 2688] mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data -.L2224: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L2193: + mov w2, 32 + b .L2189 +.L2196: + mov w0, 0 + ret .size FtlEctTblFlush, .-FtlEctTblFlush .align 2 .global Ftl_load_ext_data @@ -14297,267 +14015,264 @@ Ftl_load_ext_data: mov w1, 1 mov w0, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR5 - str x21, [sp,32] - add x20, x19, :lo12:.LANCHOR5 - add x21, x20, 640 - mov x2, x21 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR4 + add x20, x19, :lo12:.LANCHOR4 + stp x21, x22, [sp, 32] + add x22, x20, 1152 + mov w21, 19539 + mov x2, x22 bl FtlVendorPartRead - ldr w1, [x20,640] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - beq .L2229 - mov x0, x21 - mov w1, 0 + ldr w0, [x20, 1152] + movk w21, 0x4654, lsl 16 + cmp w0, w21 + beq .L2199 mov w2, 512 + mov w1, 0 + mov x0, x22 bl ftl_memset - mov w0, 19539 - movk w0, 0x4654, lsl 16 - str w0, [x20,640] -.L2229: - add x1, x19, :lo12:.LANCHOR5 + str w21, [x20, 1152] +.L2199: + add x1, x19, :lo12:.LANCHOR4 mov w2, 19539 movk w2, 0x4654, lsl 16 - add x0, x1, 640 + add x0, x1, 1152 adrp x20, .LANCHOR2 - ldr w3, [x1,640] + ldr w3, [x1, 1152] cmp w3, w2 - bne .L2230 - ldr w2, [x1,728] - str w2, [x1,1152] - ldr w2, [x1,732] - str w2, [x1,1156] + bne .L2200 + ldr w2, [x1, 1240] + str w2, [x1, 1664] + ldr w2, [x1, 1244] + str w2, [x1, 1668] add x1, x20, :lo12:.LANCHOR2 - ldr w2, [x0,8] - str w2, [x1,2404] - ldr w2, [x0,12] - str w2, [x1,2408] - ldr w2, [x0,16] - str w2, [x1,2424] - ldr w2, [x0,20] - str w2, [x1,2420] - ldr w2, [x0,28] - str w2, [x1,2432] - ldr w2, [x0,32] - str w2, [x1,2436] - ldr w2, [x0,36] - str w2, [x1,2412] - ldr w2, [x0,40] - str w2, [x1,2416] - ldr w2, [x0,44] - str w2, [x1,2440] - ldr w2, [x0,48] - ldr w0, [x0,60] - str w2, [x1,2444] - str w0, [x1,2392] -.L2230: - add x0, x19, :lo12:.LANCHOR5 + ldr w2, [x0, 8] + str w2, [x1, 2404] + ldr w2, [x0, 12] + str w2, [x1, 2408] + ldr w2, [x0, 16] + str w2, [x1, 2424] + ldr w2, [x0, 20] + str w2, [x1, 2420] + ldr w2, [x0, 28] + str w2, [x1, 2432] + ldr w2, [x0, 32] + str w2, [x1, 2436] + ldr w2, [x0, 36] + str w2, [x1, 2412] + ldr w2, [x0, 40] + str w2, [x1, 2416] + ldr w2, [x0, 44] + str w2, [x1, 2440] + ldr w2, [x0, 48] + ldr w0, [x0, 60] + str w0, [x1, 2392] + str w2, [x1, 2444] +.L2200: + add x0, x19, :lo12:.LANCHOR4 add x1, x20, :lo12:.LANCHOR2 mov w2, 34661 - add x0, x0, 640 + add x0, x0, 1152 movk w2, 0x1234, lsl 16 - ldr w3, [x0,68] - str wzr, [x1,2388] + ldr w3, [x0, 68] + str wzr, [x1, 2388] cmp w3, w2 - bne .L2231 - ldrb w2, [x1,1220] - cbz w2, .L2232 - str wzr, [x0,68] + bne .L2201 + ldrb w2, [x1, 1220] + cbz w2, .L2202 + str wzr, [x0, 68] bl Ftl_save_ext_data - b .L2231 -.L2232: - mov w0, 1 - str w0, [x1,2096] - adrp x0, .LC47 - adrp x1, .LC69 - add x0, x0, :lo12:.LC47 - add x1, x1, :lo12:.LC69 - bl printk -.L2231: +.L2201: add x0, x20, :lo12:.LANCHOR2 - add x19, x19, :lo12:.LANCHOR5 - ldr x21, [sp,32] - ldrh w2, [x0,2336] - ldr w3, [x0,2428] - ldr w1, [x0,2432] - ldrh w0, [x0,2284] - madd w1, w2, w3, w1 + add x19, x19, :lo12:.LANCHOR4 + ldp x21, x22, [sp, 32] + ldrh w1, [x0, 2336] + ldr w3, [x0, 2428] + ldr w2, [x0, 2432] + ldrh w0, [x0, 2284] + madd w1, w1, w3, w2 udiv w0, w1, w0 - str w0, [x19,1164] - ldp x19, x20, [sp,16] + str w0, [x19, 1676] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L2202: + mov w0, 1 + str w0, [x1, 2096] + adrp x1, .LC69 + adrp x0, .LC48 + add x1, x1, :lo12:.LC69 + add x0, x0, :lo12:.LC48 + bl printk + b .L2201 .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, #112 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x21, x22, [sp,48] - adrp x21, .LANCHOR2 - add x0, x21, :lo12:.LANCHOR2 - stp x25, x26, [sp,80] - stp x23, x24, [sp,64] - stp x19, x20, [sp,32] - stp x27, x28, [sp,96] - adrp x24, .LC70 - adrp x25, .LC71 - ldrh w19, [x0,2342] - adrp x26, .LC72 - add x24, x24, :lo12:.LC70 - add x25, x25, :lo12:.LC71 - sub w19, w19, #16 - add x26, x26, :lo12:.LC72 -.L2234: - add x20, x21, :lo12:.LANCHOR2 - ldrh w0, [x20,2342] - cmp w19, w0 - bge .L2249 - uxth w27, w19 - mov w0, w27 - bl ftl_get_blk_mode - ldrb w1, [x20,1220] - cbz w1, .L2235 - ldrh w1, [x20,2284] - cmp w19, w1 - bge .L2236 - ldrh w1, [x20,2358] - cmp w19, w1 - blt .L2236 -.L2235: - cmp w0, 1 - bne .L2237 -.L2236: - add x0, x21, :lo12:.LANCHOR2 - mov w22, -2147483648 - ldrh w23, [x0,2346] - b .L2238 -.L2237: - add x0, x21, :lo12:.LANCHOR2 - mov w22, 0 - ldrh w23, [x0,2344] -.L2238: - mov x0, x24 - mov w1, w19 - mov w2, w23 - mov w3, w22 - bl printk - mov w0, w27 - bl FtlBbmIsBadBlock - cbz w0, .L2239 - mov x0, x25 - mov w1, w19 - mov w2, w23 - mov w3, w22 - bl printk -.L2239: - add x28, x21, :lo12:.LANCHOR2 - mov w27, 0 - add x20, x28, 2936 - add w22, w22, w19, lsl 10 -.L2240: - cmp w27, w23 - beq .L2250 - add w0, w22, w27 - str w0, [x20,4] - ldr x0, [x28,2576] - mov w1, 1 - str x0, [x20,8] - mov w2, 0 - ldr x0, [x28,2640] - add w27, w27, 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, x26 - 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 .L2240 -.L2250: - add w19, w19, 1 - b .L2234 -.L2249: + stp x19, x20, [sp, 32] + adrp x19, .LANCHOR2 + add x19, x19, :lo12:.LANCHOR2 + stp x23, x24, [sp, 64] + stp x25, x26, [sp, 80] + add x20, x19, 2936 + adrp x26, .LC70 + add x26, x26, :lo12:.LC70 + ldrh w23, [x19, 2342] + stp x21, x22, [sp, 48] + sub w23, w23, #16 + str x27, [sp, 96] + lsl w25, w23, 10 +.L2205: + ldrh w0, [x19, 2342] + cmp w23, w0 + blt .L2213 adrp x1, .LANCHOR3 - adrp x0, .LC73 add x1, x1, :lo12:.LANCHOR3 - add x0, x0, :lo12:.LC73 add x1, x1, 208 + adrp x0, .LC73 + add x0, x0, :lo12:.LC73 bl printk - 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] + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x23, x24, [sp, 64] + ldp x25, x26, [sp, 80] + ldp x29, x30, [sp, 16] + ldr x27, [sp, 96] add sp, sp, 112 ret +.L2213: + and w22, w23, 65535 + mov w0, w22 + bl ftl_get_blk_mode + ldrb w1, [x19, 1220] + cbz w1, .L2206 + ldrh w1, [x19, 2284] + cmp w23, w1 + bge .L2207 + ldrh w1, [x19, 2358] + cmp w23, w1 + blt .L2207 +.L2206: + cmp w0, 1 + bne .L2208 +.L2207: + ldrh w24, [x19, 2346] + mov w21, -2147483648 +.L2209: + mov w3, w21 + mov w2, w24 + mov w1, w23 + mov x0, x26 + bl printk + mov w0, w22 + bl FtlBbmIsBadBlock + cbz w0, .L2210 + adrp x0, .LC71 + mov w3, w21 + mov w2, w24 + mov w1, w23 + add x0, x0, :lo12:.LC71 + bl printk +.L2210: + adrp x27, .LC72 + add w21, w21, w25 + add x27, x27, :lo12:.LC72 + mov w22, 0 +.L2211: + cmp w22, w24 + bne .L2212 + add w23, w23, 1 + add w25, w25, 1024 + b .L2205 +.L2208: + ldrh w24, [x19, 2344] + mov w21, 0 + b .L2209 +.L2212: + add w0, w21, w22 + stp wzr, w0, [x20] + ldr x0, [x19, 2576] + mov w2, 0 + str x0, [x20, 8] + mov w1, 1 + ldr x0, [x19, 2640] + add w22, w22, 1 + str x0, [x20, 16] + mov x0, x20 + bl FlashReadPages + ldp x1, x0, [x20, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] + mov x0, x27 + ldr w7, [x1] + ldp w2, w1, [x20] + bl printk + b .L2211 .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .align 2 .global update_multiplier_value .type update_multiplier_value, %function update_multiplier_value: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w20, w0 + and w8, w0, 65535 adrp x0, .LANCHOR2 add x1, x0, :lo12:.LANCHOR2 - str x25, [sp,64] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov x22, 0 - mov x21, x0 - ldrh w24, [x1,2276] - mov w19, w22 - ldrh w25, [x1,2344] - mov x23, x1 -.L2252: - cmp w24, w22, uxth - bls .L2259 - add x0, x23, 2304 - mov w1, w20 - ldrb w0, [x0,x22] + mov x9, 0 + mov w6, 0 + mov x5, x0 + add x7, x1, 2304 + ldrh w10, [x1, 2276] + ldrh w11, [x1, 2344] + cmp w10, w9, uxth + bhi .L2233 + cbz w6, .L2231 + mov w0, 32768 + sdiv w6, w0, w6 +.L2232: + add x0, x5, :lo12:.LANCHOR2 + mov w1, 6 + ldr x0, [x0, 2808] + umaddl x8, w8, w1, x0 + mov w0, 0 + strh w6, [x8, 4] + ret +.L2226: + mov w6, 0 + b .L2225 +.L2231: + mov w6, 0 + b .L2232 +.L2233: + stp x29, x30, [sp, -16]! + add x29, sp, 0 +.L2224: + ldrb w0, [x7, x9] + mov w1, w8 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L2253 - add w19, w19, w25 - uxth w19, w19 -.L2253: - add x22, x22, 1 - b .L2252 -.L2259: - cbz w19, .L2255 + cbnz w0, .L2223 + add w6, w6, w11 + and w6, w6, 65535 +.L2223: + add x9, x9, 1 + cmp w10, w9, uxth + bhi .L2224 + cbz w6, .L2226 mov w0, 32768 - sdiv w19, w0, w19 -.L2255: - add x0, x21, :lo12:.LANCHOR2 + sdiv w6, w0, w6 +.L2225: + add x0, x5, :lo12:.LANCHOR2 mov w1, 6 - umull x20, w20, w1 - ldr x0, [x0,2808] - add x20, x0, x20 + ldr x0, [x0, 2808] + umaddl x8, w8, w1, x0 mov w0, 0 - strh w19, [x20,4] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 80 + strh w6, [x8, 4] + ldp x29, x30, [sp], 16 ret .size update_multiplier_value, .-update_multiplier_value .align 2 @@ -14565,20 +14280,22 @@ update_multiplier_value: .type GetFreeBlockMinEraseCount, %function GetFreeBlockMinEraseCount: adrp x0, .LANCHOR4+768 - ldr x1, [x0,#:lo12:.LANCHOR4+768] - mov w0, w1 - cbz x1, .L2261 - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldr x2, [x0,2808] - ldr x0, [x0,2696] - sub x1, x1, x2 + ldr x0, [x0, #:lo12:.LANCHOR4+768] + cbz x0, .L2236 + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldr x2, [x1, 2808] + ldr x1, [x1, 2696] + sub x0, x0, x2 mov x2, -6148914691236517206 - asr x1, x1, 1 - madd x1, x2, x1, x1 - and x1, x1, 65535 - ldrh w0, [x0,x1,lsl 1] -.L2261: + asr x0, x0, 1 + movk x2, 0xaaab, lsl 0 + mul x0, x0, x2 + and x0, x0, 65535 + ldrh w0, [x1, x0, lsl 1] + ret +.L2236: + mov w0, 0 ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -14586,47 +14303,48 @@ GetFreeBlockMinEraseCount: .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: adrp x2, .LANCHOR4 - uxth w4, w0 add x2, x2, :lo12:.LANCHOR4 - ldr x1, [x2,768] - mov w0, w1 - cbz x1, .L2264 - ldrh w2, [x2,776] - mov w0, 7 - mov x3, -6148914691236517206 + and w0, w0, 65535 + ldr x1, [x2, 768] + cbz x1, .L2244 + ldrh w2, [x2, 776] + mov w3, 7 mov w6, 6 mov w7, 65535 - mul w2, w2, w0 + mul w2, w2, w3 asr w2, w2, 3 - cmp w4, w2 - csel w4, w2, w4, gt + cmp w0, w2 + csel w0, w2, w0, gt adrp x2, .LANCHOR2 - add x0, x2, :lo12:.LANCHOR2 - ldr x0, [x0,2808] - sub x1, x1, x0 + add x3, x2, :lo12:.LANCHOR2 + ldr x4, [x3, 2808] + mov x3, -6148914691236517206 + movk x3, 0xaaab, lsl 0 + sub x1, x1, x4 asr x1, x1, 1 - madd x1, x3, x1, x1 + mul x1, x1, x3 mov w3, 0 - uxth w1, w1 -.L2266: - cmp w3, w4 - beq .L2269 + and w1, w1, 65535 +.L2240: + cmp w0, w3 + beq .L2243 umull x5, w1, w6 - ldrh w5, [x0,x5] + ldrh w5, [x4, x5] cmp w5, w7 - bne .L2267 -.L2269: + bne .L2241 +.L2243: add x2, x2, :lo12:.LANCHOR2 ubfiz x1, x1, 1, 16 - ldr x0, [x2,2696] - ldrh w0, [x0,x1] - b .L2264 -.L2267: + ldr x0, [x2, 2696] + ldrh w0, [x0, x1] + ret +.L2241: add w3, w3, 1 mov w1, w5 - uxth w3, w3 - b .L2266 -.L2264: + and w3, w3, 65535 + b .L2240 +.L2244: + mov w0, 0 ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 @@ -14635,550 +14353,547 @@ GetFreeBlockMaxEraseCount: FtlPrintInfo2buf: stp x29, x30, [sp, -112]! adrp x1, .LC74 - add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR2 add x1, x1, :lo12:.LC74 - stp x21, x22, [sp,32] - add x22, x24, :lo12:.LANCHOR2 - mov x23, x0 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + add x29, sp, 0 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + stp x21, x22, [sp, 32] + add x22, x23, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + mov x24, x0 + stp x25, x26, [sp, 64] + add x20, x24, 12 + stp x27, x28, [sp, 80] bl strcpy - add x20, x23, 12 - ldr w2, [x22,1192] - adrp x1, .LC75 + ldr w2, [x22, 1192] mov x0, x20 + adrp x1, .LC75 add x1, x1, :lo12:.LC75 bl sprintf add x20, x20, w0, sxtw - adrp x1, .LC76 - ldr w2, [x22,2360] + ldr w2, [x22, 2360] mov x0, x20 + adrp x1, .LC76 add x1, x1, :lo12:.LC76 bl sprintf add x20, x20, w0, sxtw adrp x0, .LANCHOR1+3448 - ldr w0, [x0,#:lo12:.LANCHOR1+3448] + ldr w0, [x0, #:lo12:.LANCHOR1+3448] cmp w0, 1 - beq .L2272 - sub w0, w20, w23 - b .L2273 -.L2272: - add x0, x29, 96 - add x1, x29, 100 - add x2, x29, 104 + beq .L2246 + sub w0, w20, w24 +.L2245: + 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 +.L2246: add x3, x29, 108 - adrp x26, .LANCHOR4 + add x2, x29, 104 + add x1, x29, 100 + add x0, x29, 96 bl NandcGetTimeCfg - add x25, x26, :lo12:.LANCHOR4 - ldr w4, [x29,104] + adrp x26, .LANCHOR4 + ldp w4, w5, [x29, 104] adrp x1, .LC77 - ldr w5, [x29,108] - mov x0, x20 - ldr w3, [x29,100] + ldp w2, w3, [x29, 96] add x1, x1, :lo12:.LC77 - ldr w2, [x29,96] + mov x0, x20 + add x25, x26, :lo12:.LANCHOR4 bl sprintf add x21, x20, w0, sxtw + mov x0, x21 adrp x1, .LC78 - mov x0, x21 add x1, x1, :lo12:.LC78 - add x21, x21, 10 - adrp x20, .LANCHOR5 bl strcpy - add x20, x20, :lo12:.LANCHOR5 - ldr w2, [x22,2924] - adrp x1, .LC79 + ldr w2, [x22, 2924] + add x21, x21, 10 mov x0, x21 + adrp x1, .LC79 add x1, x1, :lo12:.LC79 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x25,1068] - adrp x1, .LC80 + ldr w2, [x25, 1068] mov x0, x21 + adrp x1, .LC80 add x1, x1, :lo12:.LC80 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2424] - adrp x1, .LC81 + ldr w2, [x22, 2424] mov x0, x21 + adrp x1, .LC81 add x1, x1, :lo12:.LC81 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2412] - adrp x1, .LC82 + ldr w2, [x22, 2412] mov x0, x21 + adrp x1, .LC82 add x1, x1, :lo12:.LC82 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2408] - adrp x1, .LC83 + ldr w2, [x22, 2408] mov x0, x21 + adrp x1, .LC83 add x1, x1, :lo12:.LC83 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2416] - adrp x1, .LC84 + ldr w2, [x22, 2416] mov x0, x21 + adrp x1, .LC84 add x1, x1, :lo12:.LC84 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2420] - adrp x1, .LC85 + ldr w2, [x22, 2420] mov x0, x21 + adrp x1, .LC85 add x1, x1, :lo12:.LC85 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2404] - adrp x1, .LC86 + ldr w2, [x22, 2404] mov x0, x21 + adrp x1, .LC86 add x1, x1, :lo12:.LC86 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x20,1152] - adrp x1, .LC87 + ldr w2, [x25, 1664] mov x0, x21 + adrp x1, .LC87 add x1, x1, :lo12:.LC87 lsr w2, w2, 11 bl sprintf + ldr w2, [x25, 1668] add x21, x21, w0, sxtw - ldr w2, [x20,1156] - adrp x1, .LC88 mov x0, x21 + adrp x1, .LC88 add x1, x1, :lo12:.LC88 lsr w2, w2, 11 bl sprintf + ldr w2, [x22, 2396] add x21, x21, w0, sxtw - ldr w2, [x22,2396] - adrp x1, .LC89 mov x0, x21 + adrp x1, .LC89 add x1, x1, :lo12:.LC89 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2400] + ldr w2, [x22, 2400] adrp x1, .LC90 add x1, x1, :lo12:.LC90 mov x0, x21 bl sprintf add x21, x21, w0, sxtw bl FtlBbtCalcTotleCnt - uxth w3, w0 - ldrh w2, [x22,2830] - adrp x1, .LC91 + and w3, w0, 65535 + ldrh w2, [x22, 2830] mov x0, x21 + adrp x1, .LC91 add x1, x1, :lo12:.LC91 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,776] - adrp x1, .LC92 + ldrh w2, [x25, 776] mov x0, x21 + adrp x1, .LC92 add x1, x1, :lo12:.LC92 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2428] - adrp x1, .LC93 + ldr w2, [x22, 2428] mov x0, x21 + adrp x1, .LC93 add x1, x1, :lo12:.LC93 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2432] - adrp x1, .LC94 + ldr w2, [x22, 2432] mov x0, x21 + adrp x1, .LC94 add x1, x1, :lo12:.LC94 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x20,1164] - adrp x1, .LC95 + ldr w2, [x25, 1676] mov x0, x21 + adrp x1, .LC95 add x1, x1, :lo12:.LC95 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2436] - adrp x1, .LC96 + ldr w2, [x22, 2436] mov x0, x21 + adrp x1, .LC96 add x1, x1, :lo12:.LC96 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2440] - adrp x1, .LC97 + ldr w2, [x22, 2440] mov x0, x21 + adrp x1, .LC97 add x1, x1, :lo12:.LC97 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2444] - adrp x1, .LC98 + ldr w2, [x22, 2444] mov x0, x21 + adrp x1, .LC98 add x1, x1, :lo12:.LC98 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,726] - adrp x1, .LC99 + ldrh w2, [x25, 726] mov x0, x21 + adrp x1, .LC99 add x1, x1, :lo12:.LC99 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,724] - adrp x1, .LC100 + ldrh w2, [x25, 724] mov x0, x21 + adrp x1, .LC100 add x1, x1, :lo12:.LC100 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,1224] - adrp x1, .LC101 + ldr w2, [x22, 1224] mov x0, x21 + adrp x1, .LC101 add x1, x1, :lo12:.LC101 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2376] - adrp x1, .LC102 + ldr w2, [x22, 2376] mov x0, x21 + adrp x1, .LC102 add x1, x1, :lo12:.LC102 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2272] - adrp x1, .LC103 + ldr w2, [x22, 2272] mov x0, x21 + adrp x1, .LC103 add x1, x1, :lo12:.LC103 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x22,2998] - adrp x1, .LC104 + ldrh w2, [x22, 2998] mov x0, x21 + adrp x1, .LC104 add x1, x1, :lo12:.LC104 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x22,2284] - adrp x1, .LC105 + ldrh w2, [x22, 2284] mov x0, x21 + adrp x1, .LC105 add x1, x1, :lo12:.LC105 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x20,588] - adrp x1, .LC106 + ldrh w2, [x25, 1096] mov x0, x21 + adrp x1, .LC106 add x1, x1, :lo12:.LC106 bl sprintf add x21, x21, w0, sxtw - ldr w2, [x22,2288] - adrp x1, .LC107 + ldr w2, [x22, 2288] mov x0, x21 + adrp x1, .LC107 add x1, x1, :lo12:.LC107 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,1072] - adrp x1, .LC108 + ldrh w2, [x25, 1072] mov x0, x21 + adrp x1, .LC108 add x1, x1, :lo12:.LC108 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x22,2824] - adrp x1, .LC109 + ldrh w2, [x22, 2824] mov x0, x21 + adrp x1, .LC109 add x1, x1, :lo12:.LC109 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,786] - adrp x1, .LC110 + ldrh w2, [x25, 786] mov x0, x21 + adrp x1, .LC110 add x1, x1, :lo12:.LC110 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,790] - adrp x1, .LC111 + ldrb w2, [x25, 790] mov x0, x21 + adrp x1, .LC111 add x1, x1, :lo12:.LC111 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,784] - adrp x1, .LC112 + ldrh w2, [x25, 784] mov x0, x21 + adrp x1, .LC112 add x1, x1, :lo12:.LC112 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,792] - adrp x1, .LC113 + ldrb w2, [x25, 792] mov x0, x21 + adrp x1, .LC113 add x1, x1, :lo12:.LC113 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,788] - adrp x1, .LC114 + ldrh w2, [x25, 788] mov x0, x21 + adrp x1, .LC114 add x1, x1, :lo12:.LC114 bl sprintf add x21, x21, w0, sxtw - ldrh w3, [x25,784] - adrp x1, .LC115 - ldr x2, [x22,2712] + ldrh w1, [x25, 784] + ldr x0, [x22, 2712] + ldrh w2, [x0, x1, lsl 1] mov x0, x21 + adrp x1, .LC115 add x1, x1, :lo12:.LC115 - ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,834] - adrp x1, .LC116 + ldrh w2, [x25, 834] mov x0, x21 + adrp x1, .LC116 add x1, x1, :lo12:.LC116 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,838] - adrp x1, .LC117 + ldrb w2, [x25, 838] mov x0, x21 + adrp x1, .LC117 add x1, x1, :lo12:.LC117 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,832] - adrp x1, .LC118 + ldrh w2, [x25, 832] mov x0, x21 + adrp x1, .LC118 add x1, x1, :lo12:.LC118 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,840] - adrp x1, .LC119 + ldrb w2, [x25, 840] mov x0, x21 + adrp x1, .LC119 add x1, x1, :lo12:.LC119 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,836] - adrp x1, .LC120 + ldrh w2, [x25, 836] mov x0, x21 + adrp x1, .LC120 add x1, x1, :lo12:.LC120 bl sprintf add x21, x21, w0, sxtw - ldrh w3, [x25,832] - adrp x1, .LC121 - ldr x2, [x22,2712] + ldrh w1, [x25, 832] + ldr x0, [x22, 2712] + ldrh w2, [x0, x1, lsl 1] mov x0, x21 + adrp x1, .LC121 add x1, x1, :lo12:.LC121 - ldrh w2, [x2,x3,lsl 1] bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,882] - adrp x1, .LC122 + ldrh w2, [x25, 882] mov x0, x21 + adrp x1, .LC122 add x1, x1, :lo12:.LC122 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,886] - adrp x1, .LC123 + ldrb w2, [x25, 886] mov x0, x21 + adrp x1, .LC123 add x1, x1, :lo12:.LC123 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,880] - adrp x1, .LC124 + ldrh w2, [x25, 880] mov x0, x21 + adrp x1, .LC124 add x1, x1, :lo12:.LC124 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x25,888] - adrp x1, .LC125 + ldrb w2, [x25, 888] mov x0, x21 + adrp x1, .LC125 add x1, x1, :lo12:.LC125 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x25,884] - adrp x1, .LC126 + ldrh w2, [x25, 884] mov x0, x21 + adrp x1, .LC126 add x1, x1, :lo12:.LC126 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x20,594] - adrp x1, .LC127 + ldrh w2, [x25, 1106] mov x0, x21 + adrp x1, .LC127 add x1, x1, :lo12:.LC127 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x20,598] - adrp x1, .LC128 + ldrb w2, [x25, 1110] mov x0, x21 + adrp x1, .LC128 add x1, x1, :lo12:.LC128 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x20,592] - adrp x1, .LC129 + ldrh w2, [x25, 1104] mov x0, x21 + adrp x1, .LC129 add x1, x1, :lo12:.LC129 bl sprintf add x21, x21, w0, sxtw - ldrb w2, [x20,600] - adrp x1, .LC130 + ldrb w2, [x25, 1112] mov x0, x21 + adrp x1, .LC130 add x1, x1, :lo12:.LC130 bl sprintf add x21, x21, w0, sxtw - ldrh w2, [x20,596] - adrp x1, .LC131 + ldrh w2, [x25, 1108] mov x0, x21 + adrp x1, .LC131 add x1, x1, :lo12:.LC131 bl sprintf add x21, x21, w0, sxtw - ldr w3, [x22,2392] + ldr w5, [x25, 1228] adrp x1, .LC132 - ldr w2, [x22,2096] + ldr w3, [x25, 1232] add x1, x1, :lo12:.LC132 - ldr w4, [x20,724] + ldr w4, [x25, 1236] + ldr w0, [x22, 2096] + ldr w2, [x22, 2392] + orr w2, w0, w2, lsl 8 mov x0, x21 - ldr w5, [x20,716] - orr w2, w2, w3, lsl 8 - ldr w3, [x20,720] bl sprintf add x19, x21, w0, sxtw - ldr w2, [x20,712] - adrp x1, .LC133 + ldr w2, [x25, 1224] mov x0, x19 + adrp x1, .LC133 add x1, x1, :lo12:.LC133 bl sprintf add x19, x19, w0, sxtw - ldr w2, [x20,736] - adrp x1, .LC134 + ldr w2, [x25, 1248] mov x0, x19 + adrp x1, .LC134 add x1, x1, :lo12:.LC134 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x22,2480] - adrp x1, .LC135 + ldrh w2, [x22, 2480] mov x0, x19 + adrp x1, .LC135 add x1, x1, :lo12:.LC135 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x22,2482] - adrp x1, .LC136 + ldrh w2, [x22, 2482] mov x0, x19 + adrp x1, .LC136 add x1, x1, :lo12:.LC136 bl sprintf add x19, x19, w0, sxtw - ldr w2, [x22,2464] - adrp x1, .LC137 + ldr w2, [x22, 2464] mov x0, x19 + adrp x1, .LC137 add x1, x1, :lo12:.LC137 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x22,2484] + ldrh w2, [x22, 2484] adrp x1, .LC138 add x1, x1, :lo12:.LC138 mov x0, x19 bl sprintf add x19, x19, w0, sxtw bl GetFreeBlockMinEraseCount - uxth w2, w0 + and w2, w0, 65535 adrp x1, .LC139 mov x0, x19 add x1, x1, :lo12:.LC139 bl sprintf add x19, x19, w0, sxtw - ldrh w0, [x25,776] + ldrh w0, [x25, 776] bl GetFreeBlockMaxEraseCount - uxth w2, w0 + and w2, w0, 65535 adrp x1, .LC140 mov x0, x19 add x1, x1, :lo12:.LC140 bl sprintf add x19, x19, w0, sxtw - ldrh w0, [x20,592] + ldrh w0, [x25, 1104] mov w1, 65535 cmp w0, w1 - beq .L2274 - ubfiz x2, x0, 1, 16 - ldr x3, [x22,2712] - adrp x1, .LC141 + beq .L2248 + ldr x1, [x22, 2712] + ubfiz x0, x0, 1, 16 + ldrh w2, [x1, x0] mov x0, x19 + adrp x1, .LC141 add x1, x1, :lo12:.LC141 - ldrh w2, [x3,x2] bl sprintf add x19, x19, w0, sxtw -.L2274: +.L2248: mov w0, 0 adrp x22, .LC142 + bl List_get_gc_head_node + add x21, x23, :lo12:.LANCHOR2 + and w3, w0, 65535 + add x22, x22, :lo12:.LC142 mov w20, 0 mov w28, 65535 - bl List_get_gc_head_node mov w27, 6 - uxth w3, w0 - add x22, x22, :lo12:.LC142 -.L2276: +.L2250: cmp w3, w28 - beq .L2275 - add x21, x24, :lo12:.LANCHOR2 - ubfiz x6, x3, 1, 16 + beq .L2249 umull x25, w3, w27 + ldr x0, [x21, 2808] + ldr x4, [x21, 2696] + ubfiz x1, x3, 1, 16 + ldr x2, [x21, 2712] + add x0, x0, x25 + ldrh w6, [x4, x1] + ldrh w5, [x0, 4] mov x0, x19 + ldrh w4, [x2, x1] mov w2, w20 - ldr x5, [x21,2808] mov x1, x22 - ldr x4, [x21,2712] add w20, w20, 1 - ldr x7, [x21,2696] - add x5, x5, x25 - ldrh w4, [x4,x6] - ldrh w5, [x5,4] - ldrh w6, [x7,x6] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,2808] + ldr x0, [x21, 2808] cmp w20, 16 - ldrh w3, [x0,x25] - bne .L2276 -.L2275: + ldrh w3, [x0, x25] + bne .L2250 +.L2249: add x26, x26, :lo12:.LANCHOR4 - add x1, x24, :lo12:.LANCHOR2 - adrp x22, .LC143 + add x23, x23, :lo12:.LANCHOR2 + adrp x21, .LC143 + add x21, x21, :lo12:.LC143 mov w20, 0 - mov w27, 65535 - add x22, x22, :lo12:.LC143 - ldr x0, [x26,768] + mov w25, 65535 + ldr x0, [x23, 2808] + ldr x3, [x26, 768] mov w26, 6 - ldr x3, [x1,2808] - sub x3, x0, x3 + sub x3, x3, x0 mov x0, -6148914691236517206 asr x3, x3, 1 - madd x3, x0, x3, x3 - uxth w3, w3 -.L2278: - cmp w3, w27 - beq .L2277 - add x21, x24, :lo12:.LANCHOR2 - ubfiz x5, x3, 1, 16 - umull x25, w3, w26 - mov x0, x19 + movk x0, 0xaaab, lsl 0 + mul x3, x3, x0 + and w3, w3, 65535 +.L2252: + cmp w3, w25 + beq .L2251 + umull x22, w3, w26 + ldr x0, [x23, 2808] + ldr x2, [x23, 2696] + ubfiz x1, x3, 1, 16 + add x0, x0, x22 + ldrh w5, [x2, x1] mov w2, w20 - ldr x4, [x21,2808] - mov x1, x22 - ldr x6, [x21,2696] + ldrh w4, [x0, 4] + mov x1, x21 + mov x0, x19 add w20, w20, 1 - add x4, x4, x25 - ldrh w5, [x6,x5] - ldrh w4, [x4,4] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,2808] cmp w20, 4 - ldrh w3, [x0,x25] - bne .L2278 -.L2277: - sub w0, w19, w23 -.L2273: - 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 + beq .L2251 + ldr x0, [x23, 2808] + ldrh w3, [x0, x22] + b .L2252 +.L2251: + sub w0, w19, w24 + b .L2245 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 2 .global ftl_proc_ftl_read .type ftl_proc_ftl_read, %function ftl_proc_ftl_read: stp x29, x30, [sp, -32]! - adrp x1, .LC47 adrp x2, .LC144 - add x29, sp, 0 - add x1, x1, :lo12:.LC47 + adrp x1, .LC48 add x2, x2, :lo12:.LC144 - stp x19, x20, [sp,16] + add x29, sp, 0 + add x1, x1, :lo12:.LC48 + stp x19, x20, [sp, 16] mov x20, x0 bl sprintf add x19, x20, w0, sxtw @@ -15186,7 +14901,7 @@ ftl_proc_ftl_read: bl FtlPrintInfo2buf add x0, x19, w0, sxtw sub w0, w0, w20 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_proc_ftl_read, .-ftl_proc_ftl_read @@ -15194,210 +14909,200 @@ ftl_proc_ftl_read: .global GetSwlReplaceBlock .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: - stp x29, x30, [sp, -96]! - adrp x0, .LANCHOR5 - add x1, x0, :lo12:.LANCHOR5 + stp x29, x30, [sp, -32]! + adrp x9, .LANCHOR4 + add x0, x9, :lo12:.LANCHOR4 + adrp x8, .LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - adrp x19, .LANCHOR2 - ldr w3, [x1,1164] - add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x1,2444] - cmp w3, w2 - bcs .L2283 - str wzr, [x1,2428] - ldrh w3, [x1,2284] - ldr x5, [x1,2696] + stp x19, x20, [sp, 16] + ldr w2, [x0, 1676] + add x0, x8, :lo12:.LANCHOR2 + ldr w1, [x0, 2444] + cmp w2, w1 + bcs .L2261 + ldrh w2, [x0, 2284] mov x1, 0 -.L2284: - cmp w3, w1 - bls .L2316 - add x4, x19, :lo12:.LANCHOR2 - ldrh w6, [x5,x1,lsl 1] + ldr x4, [x0, 2696] + str wzr, [x0, 2428] +.L2262: + cmp w2, w1 + bhi .L2263 + add x1, x8, :lo12:.LANCHOR2 + add x3, x9, :lo12:.LANCHOR4 + ldr w0, [x1, 2428] + udiv w2, w0, w2 + str w2, [x3, 1676] + ldr w2, [x1, 2432] + sub w0, w0, w2 + ldrh w2, [x1, 2336] + udiv w0, w0, w2 + str w0, [x1, 2428] +.L2264: + add x0, x8, :lo12:.LANCHOR2 + add x1, x9, :lo12:.LANCHOR4 + ldr w10, [x0, 2444] + ldr w11, [x1, 1676] + add w1, w10, 256 + cmp w1, w11 + bls .L2269 + ldr w2, [x0, 2440] + add w1, w10, 768 + cmp w1, w2 + bls .L2269 + ldr w0, [x0, 2096] + cbnz w0, .L2270 +.L2272: + mov w20, 65535 +.L2271: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L2263: + ldrh w3, [x4, x1, lsl 1] add x1, x1, 1 - ldr w2, [x4,2428] - add w2, w6, w2 - str w2, [x4,2428] - b .L2284 -.L2316: - add x2, x19, :lo12:.LANCHOR2 - add x4, x0, :lo12:.LANCHOR5 - ldr w1, [x2,2428] - udiv w3, w1, w3 - str w3, [x4,1164] - ldr w3, [x2,2432] - sub w1, w1, w3 - ldrh w3, [x2,2336] - udiv w1, w1, w3 - str w1, [x2,2428] - b .L2286 -.L2283: - ldr w2, [x1,2440] - cmp w3, w2 - bls .L2286 - add w2, w2, 1 - str w2, [x1,2440] - mov w1, 0 -.L2288: - add x2, x19, :lo12:.LANCHOR2 - ldrh w3, [x2,2284] - cmp w1, w3 - bcs .L2286 - ubfiz x3, x1, 1, 32 - ldr x4, [x2,2696] + ldr w5, [x0, 2428] + add w3, w3, w5 + str w3, [x0, 2428] + b .L2262 +.L2261: + ldr w1, [x0, 2440] + cmp w2, w1 + bls .L2264 add w1, w1, 1 - ldrh w2, [x4,x3] + str w1, [x0, 2440] + mov w1, 0 +.L2266: + ldrh w2, [x0, 2284] + cmp w1, w2 + bcs .L2264 + ldr x4, [x0, 2696] + ubfiz x3, x1, 1, 32 + add w1, w1, 1 + ldrh w2, [x4, x3] add w2, w2, 1 - strh w2, [x4,x3] - b .L2288 -.L2286: - add x1, x19, :lo12:.LANCHOR2 - add x0, x0, :lo12:.LANCHOR5 - ldr w21, [x1,2444] - ldr w23, [x0,1164] - add w0, w21, 256 - cmp w0, w23 - bls .L2291 - ldr w2, [x1,2440] - add w0, w21, 768 - cmp w0, w2 - bls .L2291 - ldr w0, [x1,2096] - cbz w0, .L2294 - cmp w21, 40 - bls .L2291 -.L2294: - mov w0, 65535 - b .L2293 -.L2291: - adrp x20, .LANCHOR4 - add x0, x20, :lo12:.LANCHOR4 - ldrh w0, [x0,776] + strh w2, [x4, x3] + b .L2266 +.L2270: + cmp w10, 40 + bhi .L2272 +.L2269: + add x0, x9, :lo12:.LANCHOR4 + ldrh w0, [x0, 776] add w0, w0, w0, lsl 1 lsr w0, w0, 2 bl GetFreeBlockMaxEraseCount - uxth w6, w0 - add w0, w21, 64 + and w6, w0, 65535 + add w0, w10, 64 cmp w6, w0 - bcs .L2303 - cmp w21, 40 - bhi .L2294 -.L2303: - add x20, x20, :lo12:.LANCHOR4 - ldr x3, [x20,744] - cbz x3, .L2294 - add x0, x19, :lo12:.LANCHOR2 - mov w26, 65535 + bcs .L2273 + cmp w10, 40 + bhi .L2272 +.L2273: + add x9, x9, :lo12:.LANCHOR4 + ldr x0, [x9, 744] + cbz x0, .L2272 + add x1, x8, :lo12:.LANCHOR2 + mov w4, 65535 + mov x13, -6148914691236517206 + mov w2, w4 + mov w9, w4 + movk x13, 0xaaab, lsl 0 + ldrh w12, [x1, 2284] + mov w14, 6 + ldr x5, [x1, 2696] + ldr x7, [x1, 2808] mov w1, 0 - mov w20, w26 - mov w8, w26 - mov w10, 6 - ldrh w9, [x0,2284] - ldr x7, [x0,2808] - ldr x25, [x0,2696] - mov x0, -6148914691236517206 - add x0, x0, 1 -.L2296: - ldrh w5, [x3] - cmp w5, w8 - beq .L2298 - add w1, w1, 1 - uxth w1, w1 - cmp w1, w9 - bhi .L2294 - ldrh w2, [x3,4] - cbz w2, .L2297 - sub x4, x3, x7 - asr x4, x4, 1 - mul x4, x4, x0 - uxth w3, w4 - and x4, x4, 65535 - ldrh w2, [x25,x4,lsl 1] - cmp w2, w21 - bls .L2302 - cmp w2, w26 - bcs .L2297 - mov w26, w2 - mov w20, w3 -.L2297: - umull x3, w5, w10 - add x3, x7, x3 - b .L2296 -.L2302: - mov w20, w3 -.L2298: +.L2274: + ldrh w3, [x0] + cmp w3, w9 + bne .L2277 + mov w20, w2 +.L2276: mov w0, 65535 cmp w20, w0 - beq .L2294 - ubfiz x24, x20, 1, 16 - ldrh w22, [x25,x24] - cmp w22, w21 - bls .L2300 - str x6, [x29,88] + beq .L2272 + ubfiz x7, x20, 1, 32 + ldrh w3, [x5, x7] + cmp w10, w3 + bcs .L2278 bl GetFreeBlockMinEraseCount - ldr x6, [x29,88] - cmp w21, w0, uxth - bcs .L2300 - add x0, x19, :lo12:.LANCHOR2 - str w26, [x0,2444] -.L2300: - cmp w22, w23 - bcs .L2294 - add w0, w22, 128 + cmp w10, w0, uxth + bcs .L2278 + add x0, x8, :lo12:.LANCHOR2 + str w4, [x0, 2444] +.L2278: + cmp w11, w3 + bls .L2272 + add w0, w3, 128 cmp w6, w0 - ble .L2294 - add w0, w22, 256 - cmp w0, w23 - bcc .L2301 - add x0, x19, :lo12:.LANCHOR2 - add w22, w22, 768 - ldr w0, [x0,2440] - cmp w22, w0 - bcs .L2294 -.L2301: - add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC145 - ldrh w5, [x25,x24] - add x0, x0, :lo12:.LC145 + ble .L2272 + add w0, w3, 256 + cmp w11, w0 + bhi .L2279 + add x0, x8, :lo12:.LANCHOR2 + add w3, w3, 768 + ldr w0, [x0, 2440] + cmp w3, w0 + bcs .L2272 +.L2279: + add x19, x8, :lo12:.LANCHOR2 + ldrh w5, [x5, x7] + mov w2, w11 mov w1, w20 - mov w2, w23 - ldr x4, [x19,2712] - ldr w3, [x19,2440] - ldrh w4, [x4,x24] + ldr x0, [x19, 2712] + ldr w3, [x19, 2440] + ldrh w4, [x0, x7] + adrp x0, .LC145 + add x0, x0, :lo12:.LC145 bl printk mov w0, 1 - str w0, [x19,2452] - mov w0, w20 -.L2293: - 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 + str w0, [x19, 2452] + b .L2271 +.L2277: + add w1, w1, 1 + and w1, w1, 65535 + cmp w1, w12 + bhi .L2272 + ldrh w15, [x0, 4] + cbz w15, .L2275 + sub x0, x0, x7 + asr x0, x0, 1 + mul x0, x0, x13 + and w20, w0, 65535 + and x0, x0, 65535 + ldrh w0, [x5, x0, lsl 1] + cmp w10, w0 + bcs .L2276 + cmp w4, w0 + bls .L2275 + mov w4, w0 + mov w2, w20 +.L2275: + umaddl x0, w3, w14, x7 + b .L2274 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock .type free_data_superblock, %function free_data_superblock: - stp x29, x30, [sp, -16]! - uxth w0, w0 + and w0, w0, 65535 mov w1, 65535 cmp w0, w1 - add x29, sp, 0 - beq .L2318 + beq .L2290 + stp x29, x30, [sp, -16]! adrp x2, .LANCHOR2+2712 ubfiz x1, x0, 1, 16 - ldr x2, [x2,#:lo12:.LANCHOR2+2712] - strh wzr, [x2,x1] + add x29, sp, 0 + ldr x2, [x2, #:lo12:.LANCHOR2+2712] + strh wzr, [x2, x1] bl INSERT_FREE_LIST -.L2318: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L2290: + mov w0, 0 + ret .size free_data_superblock, .-free_data_superblock .align 2 .global allocate_data_superblock @@ -15405,290 +15110,270 @@ free_data_superblock: allocate_data_superblock: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - add x1, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w1, [x1,2928] - cbnz w1, .L2320 - adrp x21, .LANCHOR4 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + add x19, x21, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w1, [x19, 2928] + cbnz w1, .L2294 + adrp x23, .LANCHOR4 + add x22, x23, :lo12:.LANCHOR4 mov x20, x0 - add x21, x21, :lo12:.LANCHOR4 - add x23, x21, 880 - mov x22, x21 - add x24, x21, 768 -.L2321: - cmp x20, x23 - bne .L2322 - add x2, x19, :lo12:.LANCHOR2 - ldrh w0, [x21,776] - lsr w3, w0, 1 - ldr w4, [x2,2452] - add w5, w3, 1 - mul w1, w0, w4 - add w1, w5, w1, lsr 2 - ldr w5, [x2,2096] - uxth w1, w1 - cbz w5, .L2323 - ldr w2, [x2,2444] - cmp w2, 39 - bhi .L2323 - cmp w2, 2 - mov w1, 0 + add x24, x22, 768 +.L2295: + add x0, x23, :lo12:.LANCHOR4 + add x1, x0, 880 + cmp x20, x1 + bne .L2296 + ldrh w2, [x0, 776] + ldr w3, [x19, 2452] + lsr w0, w2, 1 + add w4, w0, 1 + mul w1, w2, w3 + add w1, w4, w1, lsr 2 + ldr w4, [x19, 2096] + and w1, w1, 65535 + cbz w4, .L2297 + ldr w4, [x19, 2444] + cmp w4, 39 + bhi .L2297 + cmp w4, 2 bls .L2324 - tbz x0, 0, .L2351 - cbz w4, .L2324 -.L2351: - mov w1, w3 - b .L2323 -.L2322: - ldrb w0, [x20,8] - mov w1, 0 - cmp w0, 1 + tbz x2, 0, .L2320 + cbz w3, .L2324 +.L2320: + mov w1, w0 + b .L2297 +.L2296: + ldrb w1, [x20, 8] + cmp w1, 1 bne .L2324 - add x2, x19, :lo12:.LANCHOR2 - ldrh w0, [x2,2296] - cmp w0, 1 + ldrh w1, [x19, 2296] + cmp w1, 1 beq .L2324 - ldrb w0, [x2,1220] - cbnz w0, .L2324 - ldr w3, [x2,2096] - ldrh w0, [x21,776] + ldrb w1, [x19, 1220] + cbnz w1, .L2324 + ldr w2, [x19, 2096] + ldrh w0, [x0, 776] lsr w1, w0, 3 - cbz w3, .L2323 - ldr w2, [x2,2444] + cbz w2, .L2297 + ldr w2, [x19, 2444] cmp w2, 1 - bhi .L2323 + bhi .L2297 mov w1, 7 mul w1, w0, w1 lsr w1, w1, 3 -.L2323: - cbz w1, .L2324 +.L2297: + cbz w1, .L2298 sub w1, w1, #1 - uxth w1, w1 -.L2324: - ldrb w2, [x20,8] + and w1, w1, 65535 +.L2298: + ldrb w2, [x20, 8] mov x0, x24 - add x26, x19, :lo12:.LANCHOR2 bl List_pop_index_node - uxth w27, w0 - ldrh w0, [x22,776] + and w27, w0, 65535 + ldrh w0, [x22, 776] sub w0, w0, #1 - strh w0, [x22,776] - ldrh w0, [x26,2284] + strh w0, [x22, 776] + ldrh w0, [x19, 2284] cmp w0, w27 - bls .L2321 - ubfiz x25, x27, 1, 16 - ldr x0, [x26,2712] - ldrh w0, [x0,x25] - cbnz w0, .L2321 + bls .L2295 + ldr x0, [x19, 2712] + ubfiz x26, x27, 1, 16 + ldrh w25, [x0, x26] + cbnz w25, .L2295 strh w27, [x20] mov x0, x20 bl make_superblock - ldrb w0, [x20,7] - cbz w0, .L2327 + ldrb w0, [x20, 7] + cbz w0, .L2341 + add x28, x20, 16 + ldrh w5, [x19, 2276] + mov x3, x28 mov x0, 0 - ldrh w5, [x26,2276] - mov x3, 56 - mov w26, w0 + mov x4, 56 mov w6, 65535 - b .L2328 -.L2327: - ldr x0, [x26,2712] - b .L2376 -.L2330: - add x1, x19, :lo12:.LANCHOR2 - ldr x4, [x1,2544] - 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 .L2329 - umull x2, w26, w3 - add w26, w26, 1 - lsl w1, w1, 10 - add x2, x4, x2 - uxth w26, w26 - str w1, [x2,4] -.L2329: - add x0, x0, 1 -.L2328: +.L2301: cmp w5, w0, uxth - bhi .L2330 + bhi .L2303 + ldr w0, [x19, 2096] + cbz w0, .L2304 add x0, x22, 784 cmp x20, x0 - bne .L2331 - add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x1,2096] - cbz w2, .L2331 - ldr x1, [x1,2696] - ldrh w1, [x1,x25] - cmp w1, 40 - bls .L2331 - strb wzr, [x22,792] -.L2331: - ldrb w0, [x20,8] - cbnz w0, .L2332 - add x1, x19, :lo12:.LANCHOR2 - ldr x0, [x1,2696] - ldrh w2, [x0,x25] - cbz w2, .L2333 - ldrh w1, [x1,2336] - add w1, w2, w1 - b .L2377 -.L2333: - mov w1, 2 -.L2377: - strh w1, [x0,x25] - add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x1,2428] - add w0, w0, 1 - str w0, [x1,2428] - mov w0, w27 - mov w1, 0 - bl ftl_set_blk_mode - b .L2335 -.L2332: - add x0, x19, :lo12:.LANCHOR2 - ldr x2, [x0,2696] - ldrh w1, [x2,x25] - add w1, w1, 1 - strh w1, [x2,x25] - ldr w1, [x0,2432] - add w1, w1, 1 - str w1, [x0,2432] - mov w0, w27 - bl ftl_set_blk_mode.part.17 -.L2335: - add x0, x19, :lo12:.LANCHOR2 - ldr x1, [x0,2696] - ldr w2, [x0,2440] - ldrh w1, [x1,x25] - cmp w1, w2 - bls .L2336 - str w1, [x0,2440] -.L2336: - add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x0,2336] - ldr w3, [x0,2428] - ldr w1, [x0,2432] - madd w1, w2, w3, w1 - ldrh w2, [x0,2284] - mov x3, 56 - udiv w1, w1, w2 - adrp x2, .LANCHOR5+1164 - str w1, [x2,#:lo12:.LANCHOR5+1164] - ldr x1, [x0,2688] - ldr w0, [x1,16] - add w0, w0, 1 - str w0, [x1,16] - mov x0, 0 -.L2337: - cmp w26, w0, uxth - bls .L2379 - add x1, x19, :lo12:.LANCHOR2 - ldr x1, [x1,2544] - madd x1, x0, x3, x1 - add x0, x0, 1 - ldr w2, [x1,4] - and w2, w2, -1024 - str w2, [x1,4] - b .L2337 -.L2379: - add x0, x19, :lo12:.LANCHOR2 - ldrb w1, [x0,1220] - cbz w1, .L2339 - ldrb w1, [x20,8] - ldr x0, [x0,2544] - cmp w1, 1 - bne .L2340 - mov w1, 0 - b .L2378 -.L2340: - mov w1, 1 -.L2378: - mov w2, w26 - bl FlashEraseBlocks -.L2339: - add x0, x19, :lo12:.LANCHOR2 - ldrb w1, [x20,8] - mov w2, w26 - mov x28, 0 - ldr x0, [x0,2544] - bl FlashEraseBlocks - mov w1, w28 - mov x3, 56 -.L2341: - cmp w26, w28, uxth - bls .L2380 - add x2, x19, :lo12:.LANCHOR2 - mul x0, x28, x3 - ldr x2, [x2,2544] - add x4, x2, x0 - ldr w2, [x2,x0] - cmn w2, #1 - bne .L2342 - ldr w0, [x4,4] - add w1, w1, 1 - str x3, [x29,96] - lsr w0, w0, 10 - str x2, [x29,104] - str x1, [x29,112] - str x1, [x29,120] - bl FtlBbmMapBadBlock - add x0, x20, x28, lsl 1 - ldr x2, [x29,104] - ldr x3, [x29,96] - ldr x1, [x29,120] - strh w2, [x0,16] - ldrb w0, [x20,7] - sub w0, w0, #1 - strb w0, [x20,7] + bne .L2304 + ldr x0, [x19, 2696] + ldrh w0, [x0, x26] + cmp w0, 40 + bls .L2304 + strb wzr, [x20, 8] +.L2304: + ldrb w0, [x20, 8] + ldr x1, [x19, 2696] + cbnz w0, .L2305 + ldrh w0, [x1, x26] + cbz w0, .L2306 + ldrh w2, [x19, 2336] + add w0, w0, w2 .L2342: - add x28, x28, 1 - b .L2341 -.L2380: - cbz w1, .L2344 + strh w0, [x1, x26] + mov w1, 0 + ldr w0, [x19, 2428] + add w0, w0, 1 + str w0, [x19, 2428] + mov w0, w27 + bl ftl_set_blk_mode +.L2308: + ldr x0, [x19, 2696] + ldr w1, [x19, 2440] + ldrh w0, [x0, x26] + cmp w0, w1 + bls .L2309 + str w0, [x19, 2440] +.L2309: + ldr w2, [x19, 2428] + ldr w1, [x19, 2432] + ldrh w0, [x19, 2336] + madd w0, w0, w2, w1 + ldrh w1, [x19, 2284] + mov w2, 56 + umull x2, w25, w2 + udiv w0, w0, w1 + ldr x1, [x19, 2688] + str w0, [x22, 1676] + ldr w0, [x1, 16] + add w0, w0, 1 + str w0, [x1, 16] + mov x0, 0 +.L2310: + cmp x2, x0 + bne .L2311 + ldrb w0, [x19, 1220] + cbz w0, .L2312 + ldrb w0, [x20, 8] + mov w2, w25 + cmp w0, 1 + bne .L2313 + mov w1, 0 +.L2343: + ldr x0, [x19, 2544] + bl FlashEraseBlocks +.L2312: + ldrb w1, [x20, 8] + mov w2, w25 + ldr x0, [x19, 2544] + bl FlashEraseBlocks + mov x1, 0 + mov w2, 0 + mov x4, 56 +.L2314: + cmp w25, w1, uxth + bhi .L2316 + cmp w2, 0 + ble .L2317 mov w0, w27 bl update_multiplier_value bl FtlBbmTblFlush -.L2344: - ldrb w0, [x20,7] - cbnz w0, .L2345 - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2712] -.L2376: +.L2317: + ldrb w0, [x20, 7] + cbnz w0, .L2318 +.L2341: + ldr x0, [x19, 2712] mov w1, -1 - strh w1, [x0,x25] - b .L2321 -.L2345: - add x19, x19, :lo12:.LANCHOR2 - strh wzr, [x20,2] - strb wzr, [x20,6] - ldrh w1, [x19,2344] + strh w1, [x0, x26] + b .L2295 +.L2324: + mov w1, 0 + b .L2298 +.L2303: + ldr x1, [x19, 2544] + madd x2, x0, x4, x1 + stp xzr, xzr, [x2, 8] + ldrh w2, [x3] + cmp w2, w6 + beq .L2302 + umull x7, w25, w4 + add w25, w25, 1 + and w25, w25, 65535 + lsl w2, w2, 10 + add x1, x1, x7 + str w2, [x1, 4] +.L2302: + add x0, x0, 1 + add x3, x3, 2 + b .L2301 +.L2306: + mov w0, 2 + b .L2342 +.L2305: + ldrh w0, [x1, x26] + add w0, w0, 1 + strh w0, [x1, x26] + ldr w0, [x19, 2432] + add w0, w0, 1 + str w0, [x19, 2432] + mov w0, w27 + bl ftl_set_blk_mode.part.17 + b .L2308 +.L2311: + ldr x1, [x19, 2544] + add x1, x1, x0 + add x0, x0, 56 + ldr w3, [x1, 4] + and w3, w3, -1024 + str w3, [x1, 4] + b .L2310 +.L2313: + mov w1, 1 + b .L2343 +.L2316: + mul x0, x1, x4 + ldr x3, [x19, 2544] + add x5, x3, x0 + ldr w3, [x3, x0] + cmn w3, #1 + bne .L2315 + add w2, w2, 1 + ldr w0, [x5, 4] + stp x4, x1, [x29, 104] + stp w3, w2, [x29, 120] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldp w3, w2, [x29, 120] + strh w3, [x28] + ldp x4, x1, [x29, 104] + ldrb w0, [x20, 7] + sub w0, w0, #1 + strb w0, [x20, 7] +.L2315: + add x1, x1, 1 + add x28, x28, 2 + b .L2314 +.L2318: + add x21, x21, :lo12:.LANCHOR2 + strh wzr, [x20, 2] + strb wzr, [x20, 6] + ldrh w1, [x21, 2344] strh w27, [x20] mul w0, w0, w1 - ldr w1, [x19,2396] - str w1, [x20,12] - uxth w0, w0 + ldr w1, [x21, 2396] + str w1, [x20, 12] + and w0, w0, 65535 add w1, w1, 1 - strh w0, [x20,4] - str w1, [x19,2396] - ldr x1, [x19,2712] + strh w0, [x20, 4] + str w1, [x21, 2396] + ldr x1, [x21, 2712] ldrh w2, [x20] - strh w0, [x1,x2,lsl 1] -.L2320: + strh w0, [x1, x2, lsl 1] +.L2294: + ldp x19, x20, [sp, 16] 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 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 allocate_data_superblock, .-allocate_data_superblock @@ -15696,79 +15381,78 @@ allocate_data_superblock: .global FtlGcBufInit .type FtlGcBufInit, %function FtlGcBufInit: - adrp x0, .LANCHOR5+1168 - mov w1, 0 - adrp x7, .LANCHOR2 + adrp x0, .LANCHOR4+1680 + mov w2, 0 mov w8, 24 mov w9, 1 - mov w4, 4 - str wzr, [x0,#:lo12:.LANCHOR5+1168] + str wzr, [x0, #:lo12:.LANCHOR4+1680] + adrp x0, .LANCHOR2 + add x3, x0, :lo12:.LANCHOR2 + mov w5, 4 mov w10, 56 -.L2382: - add x2, x7, :lo12:.LANCHOR2 - adrp x6, .LANCHOR2 - ldrh w0, [x2,2276] - cmp w1, w0 - bcs .L2386 - umull x3, w1, w8 - ldr x5, [x2,2632] - ldr x6, [x2,2600] - add x0, x5, x3 - str w9, [x0,16] - ldrh w0, [x2,2354] - mul w0, w1, w0 - sdiv w0, w0, w4 - add x0, x6, w0, sxtw 2 - str x0, [x5,x3] - ldrh w0, [x2,2356] - ldr x6, [x2,2632] - ldr x11, [x2,2656] - mul w0, w1, w0 - add x5, x6, x3 - ldr x2, [x2,2552] - sdiv w0, w0, w4 - add x0, x11, w0, sxtw 2 - str x0, [x5,8] - umull x0, w1, w10 - add w1, w1, 1 - add x0, x2, x0 - ldr x2, [x6,x3] - uxth w1, w1 - str x2, [x0,8] - ldr x2, [x5,8] - str x2, [x0,16] - b .L2382 -.L2386: - mov w7, 24 - mov w4, 4 -.L2384: - add x1, x6, :lo12:.LANCHOR2 - ldr w2, [x1,2568] - cmp w0, w2 - bcs .L2387 - umull x3, w0, w7 - ldr x5, [x1,2632] - ldr x8, [x1,2600] - add x2, x5, x3 - str wzr, [x2,16] - ldrh w2, [x1,2354] - mul w2, w0, w2 - sdiv w2, w2, w4 - add x2, x8, w2, sxtw 2 - str x2, [x5,x3] - ldrh w2, [x1,2356] - ldr x5, [x1,2632] - ldr x1, [x1,2656] - mul w2, w0, w2 - add x3, x5, x3 - add w0, w0, 1 - sdiv w2, w2, w4 - uxth w0, w0 - add x1, x1, w2, sxtw 2 - str x1, [x3,8] - b .L2384 -.L2387: +.L2345: + ldrh w1, [x3, 2276] + cmp w2, w1 + bcc .L2346 + add x0, x0, :lo12:.LANCHOR2 + mov w6, 24 + mov w5, 4 +.L2347: + ldr w2, [x0, 2568] + cmp w1, w2 + bcc .L2348 ret +.L2346: + umull x4, w2, w8 + ldr x6, [x3, 2632] + ldr x7, [x3, 2600] + add x1, x6, x4 + str w9, [x1, 16] + ldrh w1, [x3, 2354] + mul w1, w1, w2 + sdiv w1, w1, w5 + add x1, x7, w1, sxtw 2 + str x1, [x6, x4] + ldrh w1, [x3, 2356] + ldr x7, [x3, 2632] + ldr x11, [x3, 2656] + add x6, x7, x4 + mul w1, w1, w2 + sdiv w1, w1, w5 + add x1, x11, w1, sxtw 2 + str x1, [x6, 8] + ldr x1, [x3, 2552] + ldr x4, [x7, x4] + nop // between mem op and mult-accumulate + umaddl x1, w2, w10, x1 + add w2, w2, 1 + and w2, w2, 65535 + str x4, [x1, 8] + ldr x4, [x6, 8] + str x4, [x1, 16] + b .L2345 +.L2348: + umull x4, w1, w6 + ldr x3, [x0, 2632] + ldr x7, [x0, 2600] + add x2, x3, x4 + str wzr, [x2, 16] + ldrh w2, [x0, 2354] + mul w2, w2, w1 + sdiv w2, w2, w5 + add x2, x7, w2, sxtw 2 + str x2, [x3, x4] + ldrh w2, [x0, 2356] + ldr x3, [x0, 2632] + add x3, x3, x4 + ldr x4, [x0, 2656] + mul w2, w2, w1 + add w1, w1, 1 + and w1, w1, 65535 + sdiv w2, w2, w5 + add x2, x4, w2, sxtw 2 + str x2, [x3, 8] + b .L2347 .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlVariablesInit @@ -15778,47 +15462,45 @@ FtlVariablesInit: mov w0, -1 mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR5 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR4 + add x20, x20, :lo12:.LANCHOR4 adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - add x20, x20, :lo12:.LANCHOR5 - ldrh w2, [x19,2364] - strh w0, [x20,1184] + strh w0, [x20, 1696] mov w0, -1 - str w0, [x20,1196] + str w0, [x20, 1708] + ldr x0, [x19, 2736] + ldrh w2, [x19, 2364] + strh wzr, [x19, 2920] + str wzr, [x19, 2096] lsl w2, w2, 1 - ldr x0, [x19,2736] - str xzr, [x20,1176] - str wzr, [x20,1188] - str wzr, [x20,1192] - str wzr, [x19,2096] - strh wzr, [x19,2920] + str xzr, [x20, 1688] + str wzr, [x20, 1700] + str wzr, [x20, 1704] bl ftl_memset - ldrh w2, [x19,2286] + ldr x0, [x19, 2696] mov w1, 0 - ldr x0, [x19,2696] + ldrh w2, [x19, 2286] lsl w2, w2, 1 bl ftl_memset - ldrh w2, [x19,2286] + ldr x0, [x19, 2680] mov w1, 0 - ldr x0, [x19,2680] + ldrh w2, [x19, 2286] lsl w2, w2, 1 bl ftl_memset - adrp x0, .LANCHOR4 - mov w1, 0 - add x0, x0, :lo12:.LANCHOR4 mov w2, 48 - add x0, x0, 696 - bl ftl_memset mov w1, 0 + add x0, x20, 696 + bl ftl_memset mov w2, 512 - add x0, x20, 640 + mov w1, 0 + add x0, x20, 1152 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlVariablesInit, .-FtlVariablesInit @@ -15827,38 +15509,36 @@ FtlVariablesInit: .type FtlGcBufFree, %function FtlGcBufFree: adrp x2, .LANCHOR2 - mov w3, 0 add x2, x2, :lo12:.LANCHOR2 + mov w3, 0 mov w7, 56 mov w9, 24 - ldr w8, [x2,2568] - ldr x5, [x2,2632] -.L2390: + ldr w8, [x2, 2568] + ldr x4, [x2, 2632] +.L2352: cmp w3, w1 - bcs .L2389 - umull x4, w3, w7 + bcs .L2351 + umaddl x6, w3, w7, x0 mov w2, 0 - add x4, x0, x4 -.L2395: - cmp w2, w8 - bcs .L2392 - umull x6, w2, w9 - add x10, x5, x6 - ldr x11, [x5,x6] - ldr x6, [x4,8] - cmp x11, x6 - bne .L2391 - str wzr, [x10,16] - b .L2392 -.L2391: + b .L2357 +.L2353: add w2, w2, 1 - uxth w2, w2 - b .L2395 -.L2392: + and w2, w2, 65535 +.L2357: + cmp w2, w8 + bcs .L2354 + umull x5, w2, w9 + add x10, x4, x5 + ldr x11, [x4, x5] + ldr x5, [x6, 8] + cmp x11, x5 + bne .L2353 + str wzr, [x10, 16] +.L2354: add w3, w3, 1 - uxth w3, w3 - b .L2390 -.L2389: + and w3, w3, 65535 + b .L2352 +.L2351: ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -15866,126 +15546,118 @@ FtlGcBufFree: .type FtlGcBufAlloc, %function FtlGcBufAlloc: adrp x2, .LANCHOR2 - mov w7, 24 add x2, x2, :lo12:.LANCHOR2 + mov w3, 0 + mov w7, 24 mov w8, 1 mov w9, 56 - ldr w5, [x2,2568] - ldr x6, [x2,2632] + ldr w5, [x2, 2568] + ldr x6, [x2, 2632] +.L2359: + cmp w3, w1 + bcs .L2358 mov w2, 0 -.L2397: - cmp w2, w1 - bcs .L2403 - mov w3, 0 -.L2401: - cmp w3, w5 - bcs .L2399 - umull x4, w3, w7 - add x4, x6, x4 - ldr w10, [x4,16] - cbnz w10, .L2398 - umull x3, w2, w9 - str w8, [x4,16] - add x3, x0, x3 - ldr x10, [x4] - str x10, [x3,8] - ldr x4, [x4,8] - str x4, [x3,16] - b .L2399 -.L2398: - add w3, w3, 1 - uxth w3, w3 - b .L2401 -.L2399: + b .L2364 +.L2360: add w2, w2, 1 - uxth w2, w2 - b .L2397 -.L2403: + and w2, w2, 65535 +.L2364: + cmp w2, w5 + bcs .L2361 + umaddl x4, w2, w7, x6 + ldr w10, [x4, 16] + cbnz w10, .L2360 + umaddl x2, w3, w9, x0 + ldr x10, [x4] + str w8, [x4, 16] + str x10, [x2, 8] + ldr x4, [x4, 8] + str x4, [x2, 16] +.L2361: + add w3, w3, 1 + and w3, w3, 65535 + b .L2359 +.L2358: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 .global IsBlkInGcList .type IsBlkInGcList, %function IsBlkInGcList: - adrp x1, .LANCHOR5+1200 - uxth w0, w0 - ldrh w2, [x1,#:lo12:.LANCHOR5+1200] + adrp x1, .LANCHOR4+1712 + and w0, w0, 65535 + ldrh w2, [x1, #:lo12:.LANCHOR4+1712] adrp x1, .LANCHOR2+2504 - ldr x3, [x1,#:lo12:.LANCHOR2+2504] + ldr x3, [x1, #:lo12:.LANCHOR2+2504] mov x1, 0 -.L2405: +.L2366: cmp w2, w1, uxth - bls .L2409 + bhi .L2368 + mov w0, 0 + ret +.L2368: add x1, x1, 1 add x4, x3, x1, lsl 1 - ldrh w4, [x4,-2] + ldrh w4, [x4, -2] cmp w4, w0 - bne .L2405 + bne .L2366 mov w0, 1 - b .L2406 -.L2409: - mov w0, 0 -.L2406: ret .size IsBlkInGcList, .-IsBlkInGcList .align 2 .global FtlGcUpdatePage .type FtlGcUpdatePage, %function FtlGcUpdatePage: - stp x29, x30, [sp, -48]! + mov w6, w0 + mov w9, w1 + mov w8, w2 + stp x29, x30, [sp, -16]! + lsr w0, w0, 10 add x29, sp, 0 - str x19, [sp,16] - mov w19, w0 - lsr x0, x19, 10 - str x1, [x29,32] - str x2, [x29,40] bl P2V_block_in_plane - adrp x3, .LANCHOR5 - ldr x2, [x29,40] - add x4, x3, :lo12:.LANCHOR5 - ldr x1, [x29,32] - uxth w9, w0 - mov x6, 0 - ldrh w8, [x4,1200] + and w10, w0, 65535 + adrp x3, .LANCHOR4 adrp x4, .LANCHOR2 - add x5, x4, :lo12:.LANCHOR2 - ldr x7, [x5,2504] -.L2411: - uxth w5, w6 - cmp w5, w8 - bcs .L2415 - add x6, x6, 1 - add x10, x7, x6, lsl 1 - ldrh w10, [x10,-2] - cmp w10, w9 - bne .L2411 -.L2415: - cmp w5, w8 - bne .L2413 - ubfiz x5, x5, 1, 16 - strh w0, [x7,x5] - add x0, x3, :lo12:.LANCHOR5 - ldrh w5, [x0,1200] - add w5, w5, 1 - strh w5, [x0,1200] -.L2413: - add x3, x3, :lo12:.LANCHOR5 - add x4, x4, :lo12:.LANCHOR2 - mov w0, 12 - ldrh w5, [x3,1202] - ldr x6, [x4,2512] - umull x5, w5, w0 - add x6, x6, x5 - str w1, [x6,4] - ldr x1, [x4,2512] - add x0, x1, x5 - str w2, [x0,8] - str w19, [x1,x5] - ldrh w0, [x3,1202] + add x1, x3, :lo12:.LANCHOR4 + add x2, x4, :lo12:.LANCHOR2 + mov x5, 0 + ldrh w1, [x1, 1712] + ldr x7, [x2, 2504] +.L2371: + and w2, w5, 65535 + cmp w2, w1 + bcc .L2373 + bne .L2372 + and x5, x5, 65535 + strh w0, [x7, x5, lsl 1] + add x5, x3, :lo12:.LANCHOR4 + ldrh w0, [x5, 1712] add w0, w0, 1 - strh w0, [x3,1202] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + strh w0, [x5, 1712] + b .L2372 +.L2373: + add x5, x5, 1 + add x2, x7, x5, lsl 1 + ldrh w2, [x2, -2] + cmp w2, w10 + bne .L2371 +.L2372: + add x0, x3, :lo12:.LANCHOR4 + add x3, x4, :lo12:.LANCHOR2 + mov w1, 12 + ldrh w5, [x0, 1714] + ldr x4, [x3, 2512] + umull x5, w5, w1 + add x4, x4, x5 + str w9, [x4, 4] + ldr x1, [x3, 2512] + add x3, x1, x5 + str w8, [x3, 8] + str w6, [x1, x5] + ldrh w1, [x0, 1714] + add w1, w1, 1 + strh w1, [x0, 1714] + ldp x29, x30, [sp], 16 ret .size FtlGcUpdatePage, .-FtlGcUpdatePage .align 2 @@ -15993,27 +15665,27 @@ FtlGcUpdatePage: .type FtlGcPageVarInit, %function FtlGcPageVarInit: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR5 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 mov w1, 255 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x19, x19, :lo12:.LANCHOR2 - add x0, x0, :lo12:.LANCHOR5 - ldrh w2, [x19,2348] - strh wzr, [x0,1200] - strh wzr, [x0,1202] + strh wzr, [x0, 1712] + strh wzr, [x0, 1714] + ldr x0, [x19, 2504] + ldrh w2, [x19, 2348] lsl w2, w2, 1 - ldr x0, [x19,2504] bl ftl_memset - ldrh w3, [x19,2348] - mov w2, 12 - ldr x0, [x19,2512] + ldrh w2, [x19, 2348] + mov w0, 12 mov w1, 255 - mul w2, w3, w2 + mul w2, w2, w0 + ldr x0, [x19, 2512] bl ftl_memset bl FtlGcBufInit - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlGcPageVarInit, .-FtlGcPageVarInit @@ -16021,303 +15693,276 @@ FtlGcPageVarInit: .global FtlGcScanTempBlk .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x19, x0 - adrp x0, .LANCHOR1 - str w1, [x29,136] - 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 x0, [x29,128] - ldrh w27, [x1,3452] - mov w1, 65535 - cmp w27, w1 - beq .L2451 - cbnz w27, .L2419 - b .L2420 -.L2451: - mov w27, 0 -.L2419: - adrp x0, .LANCHOR2+2344 - ldr w1, [x29,136] - ldrh w0, [x0,#:lo12:.LANCHOR2+2344] - cmp w1, w0 - bne .L2421 -.L2420: + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR1 + add x0, x22, :lo12:.LANCHOR1 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + str w1, [x29, 104] + ldrh w26, [x0, 3452] + mov w0, 65535 + cmp w26, w0 + beq .L2408 + cbnz w26, .L2378 +.L2379: bl FtlGcPageVarInit -.L2421: + b .L2380 +.L2408: + mov w26, 0 +.L2378: + adrp x0, .LANCHOR2+2344 + ldr w1, [x29, 104] + ldrh w0, [x0, #:lo12:.LANCHOR2+2344] + cmp w0, w1 + beq .L2379 +.L2380: + adrp x28, .LANCHOR2 + add x27, x28, :lo12:.LANCHOR2 mov w0, -1 - adrp x23, .LANCHOR2 - str w0, [x29,140] - adrp x0, .LC147 - add x0, x0, :lo12:.LC147 - mov w24, 0 - mov x22, x23 - str x0, [x29,120] -.L2422: + mov w23, 0 + str w0, [x29, 108] +.L2381: ldrh w1, [x19] mov w0, 65535 - strb wzr, [x19,8] + strb wzr, [x19, 8] cmp w1, w0 - beq .L2452 -.L2424: - mov w28, w0 -.L2448: - adrp x0, .LANCHOR2 - mov x2, x19 - add x0, x0, :lo12:.LANCHOR2 + beq .L2409 +.L2405: + add x0, x28, :lo12:.LANCHOR2 + add x6, x19, 16 mov w20, 0 - mov w10, 56 + mov w11, 65535 + mov w12, 56 mov w7, 4 - ldrh w5, [x0,2276] - ldrh w8, [x0,2354] - ldrh w9, [x0,2356] - add x5, x19, x5, lsl 1 -.L2425: - cmp x2, x5 - beq .L2470 - ldrh w1, [x2,16] - cmp w1, w28 - beq .L2426 - add x4, x23, :lo12:.LANCHOR2 - orr w1, w27, w1, lsl 10 - umull x0, w20, w10 - ldr x6, [x4,2520] - add x6, x6, x0 - str w1, [x6,4] - ldr x1, [x4,2520] - ldr x6, [x4,2600] - add x0, x1, x0 - ldr x4, [x4,2656] - mul w1, w20, w8 - sdiv w1, w1, w7 - add x1, x6, w1, sxtw 2 - str x1, [x0,8] - mul w1, w20, w9 - add w20, w20, 1 - uxth w20, w20 - sdiv w1, w1, w7 - add x1, x4, w1, sxtw 2 - str x1, [x0,16] -.L2426: - add x2, x2, 2 - b .L2425 -.L2470: - add x0, x23, :lo12:.LANCHOR2 - mov w1, w20 + ldrh w9, [x0, 2354] + ldrh w10, [x0, 2356] + ldrh w0, [x0, 2276] + add x0, x0, 8 + add x0, x19, x0, lsl 1 +.L2383: + cmp x6, x0 + bne .L2385 + ldr x0, [x27, 2520] mov w2, 0 - mov x25, 0 - ldr x0, [x0,2520] + mov w1, w20 + adrp x24, .LANCHOR0 + add x24, x24, :lo12:.LANCHOR0 + mov x21, 0 bl FlashReadPages -.L2428: - cmp w20, w25, uxth - bls .L2471 - add x26, x23, :lo12:.LANCHOR2 - mov x0, 56 - mul x21, x25, x0 - ldr x1, [x26,2520] - str x1, [x29,104] - add x2, x1, x21 - str x2, [x29,112] - ldr w0, [x2,4] - str w0, [x29,144] - ldr x0, [x29,144] - lsr x0, x0, 10 + mov w0, 56 + umull x0, w20, w0 + str x0, [x29, 96] +.L2386: + ldr x0, [x29, 96] + cmp x0, x21 + bne .L2403 + ldr w0, [x29, 104] + add w4, w26, 1 + add w23, w23, 1 + and w26, w4, 65535 + cmp w0, w23 + bls .L2404 +.L2406: + ldrh w0, [x27, 2344] + cmp w0, w26 + bhi .L2405 +.L2409: + mov w2, 0 + b .L2382 +.L2385: + ldrh w1, [x6] + cmp w1, w11 + beq .L2384 + umull x8, w20, w12 + ldr x5, [x27, 2520] + orr w1, w26, w1, lsl 10 + add x5, x5, x8 + str w1, [x5, 4] + mul w1, w20, w9 + ldr x2, [x27, 2520] + ldr x5, [x27, 2600] + sdiv w1, w1, w7 + add x2, x2, x8 + add x1, x5, w1, sxtw 2 + str x1, [x2, 8] + mul w1, w20, w10 + ldr x5, [x27, 2656] + add w20, w20, 1 + and w20, w20, 65535 + sdiv w1, w1, w7 + add x1, x5, w1, sxtw 2 + str x1, [x2, 16] +.L2384: + add x6, x6, 2 + b .L2383 +.L2403: + ldr x6, [x27, 2520] + add x5, x6, x21 + ldr w25, [x5, 4] + lsr w0, w25, 10 bl P2V_plane - uxth w6, w0 - ldr x1, [x29,104] - ldr x2, [x29,112] - ldr w7, [x1,x21] - ldr x5, [x2,16] - cbnz w7, .L2429 - ldrh w0, [x5] - cmp w0, w28 - bne .L2430 -.L2433: - add x1, x22, :lo12:.LANCHOR2 - adrp x20, .LANCHOR5 - ldrb w0, [x1,1220] - cbz w0, .L2467 - add x20, x20, :lo12:.LANCHOR5 + and w2, w0, 65535 + ldr w0, [x6, x21] + ldr x20, [x5, 16] + cbnz w0, .L2387 + ldrh w1, [x20] + mov w0, 65535 + cmp w1, w0 + bne .L2388 +.L2391: + ldrb w0, [x27, 1220] + adrp x14, .LANCHOR4 + cbz w0, .L2421 + add x14, x14, :lo12:.LANCHOR4 mov w0, 1 - str w0, [x20,1192] - b .L2423 -.L2430: - ldr w0, [x5,8] - ldr w1, [x26,2924] + str w0, [x14, 1704] +.L2382: + add x22, x22, :lo12:.LANCHOR1 + strh w26, [x19, 2] + strb w2, [x19, 6] + mov w0, -1 + mov w1, w26 + strh w0, [x22, 3452] + mov x0, x19 + bl ftl_sb_update_avl_pages + b .L2377 +.L2388: + ldr w0, [x20, 8] + ldr w1, [x27, 2924] cmp w0, w1 - bls .L2468 - b .L2433 -.L2467: - ldrh w2, [x19] - add x20, x20, :lo12:.LANCHOR5 - ldr x1, [x1,2712] - strh w0, [x1,x2,lsl 1] + bhi .L2391 + ldrb w1, [x24, 88] + cbnz w1, .L2394 +.L2395: + ldp w2, w0, [x20, 8] + mov w1, w25 + add x21, x21, 56 + bl FtlGcUpdatePage + b .L2386 +.L2421: + ldr x0, [x27, 2712] + ldrh w1, [x19] + strh wzr, [x0, x1, lsl 1] ldrh w0, [x19] bl INSERT_FREE_LIST + add x14, x14, :lo12:.LANCHOR4 mov w0, -1 strh w0, [x19] - strh w0, [x20,592] - b .L2469 -.L2468: - adrp x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w1, [x1,88] - cbz w1, .L2437 - add x1, x29, 164 - mov w2, w7 - str x5, [x29,112] - str x7, [x29,104] + strh w0, [x14, 1104] +.L2424: + bl FtlGcPageVarInit + mov w26, 0 + b .L2381 +.L2394: + add x1, x29, 116 + mov w2, 0 bl log2phys - ldr x5, [x29,112] - ldr w1, [x29,164] - ldr w0, [x5,12] - cmp w1, w0 - bne .L2437 - cmn w1, #1 - beq .L2437 - str w0, [x29,172] + ldr w0, [x20, 12] + ldr w1, [x29, 116] + cmp w0, w1 + bne .L2395 + cmn w0, #1 + beq .L2395 + str w0, [x29, 124] + mov w2, 0 + ldr x0, [x27, 2624] mov w1, 1 - ldr x0, [x26,2624] - ldr x7, [x29,104] - str x0, [x29,176] - ldr x0, [x26,2648] - mov w2, w7 - str x0, [x29,184] - add x0, x29, 168 + str x0, [x29, 128] + ldr x0, [x27, 2648] + str x0, [x29, 136] + add x0, x29, 120 bl FlashReadPages - ldr x0, [x26,2520] - ldrh w2, [x26,2350] - ldr x4, [x29,176] - add x21, x0, x21 - ldr x5, [x29,112] - lsl w2, w2, 7 + ldrh w1, [x27, 2350] mov x0, 0 -.L2439: - cmp w2, w0 - bls .L2437 - lsl x1, x0, 2 - ldr x6, [x21,8] - add x0, x0, 1 - ldr w6, [x6,x1] - ldr w1, [x4,x1] - cmp w6, w1 - beq .L2439 + ldr x2, [x27, 2520] + ldr x6, [x29, 128] + ubfiz x1, x1, 9, 16 + add x2, x2, x21 +.L2396: + cmp x0, x1 + beq .L2395 + ldr x7, [x2, 8] + ldr w8, [x7, x0] + add x0, x0, 4 + add x7, x6, x0 + ldr w7, [x7, -4] + cmp w8, w7 + beq .L2396 ldrh w1, [x19] adrp x0, .LC146 - ldr w2, [x29,172] + ldr w2, [x29, 124] add x0, x0, :lo12:.LC146 bl printk - add x0, x22, :lo12:.LANCHOR2 ldrh w1, [x19] - ldr x0, [x0,2712] - strh wzr, [x0,x1,lsl 1] + ldr x0, [x27, 2712] + strh wzr, [x0, x1, lsl 1] ldrh w0, [x19] bl INSERT_FREE_LIST - adrp x1, .LANCHOR5+592 + adrp x1, .LANCHOR4+1104 mov w0, -1 strh w0, [x19] - strh w0, [x1,#:lo12:.LANCHOR5+592] - b .L2469 -.L2437: - ldr w0, [x5,12] - add x25, x25, 1 - ldr w1, [x29,144] - ldr w2, [x5,8] - bl FtlGcUpdatePage - b .L2428 -.L2429: - ldr x0, [x29,120] + strh w0, [x1, #:lo12:.LANCHOR4+1104] + b .L2424 +.L2387: ldrh w1, [x19] - ldr w2, [x29,144] + mov w2, w25 + adrp x0, .LC147 + add x0, x0, :lo12:.LC147 bl printk - ldr w0, [x26,2096] - cbnz w0, .L2442 - ldrb w0, [x26,1220] - cbz w0, .L2443 -.L2442: - add x0, x22, :lo12:.LANCHOR2 - ldrh w1, [x19] - ldr x0, [x0,2696] - ldrh w0, [x0,x1,lsl 1] - cmp w0, 159 - bls .L2444 -.L2443: - add x0, x22, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - ldr w0, [x0,x21] - cmn w0, #1 - bne .L2445 -.L2444: - add x0, x22, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - add x21, x0, x21 - ldr w0, [x21,4] - str w0, [x29,140] -.L2445: - add x0, x22, :lo12:.LANCHOR2 - ldrh w1, [x19] - ldr x0, [x0,2712] - strh wzr, [x0,x1,lsl 1] + ldr w1, [x27, 2096] + ldrh w0, [x19] + cbnz w1, .L2399 + ldrb w1, [x27, 1220] + cbz w1, .L2400 +.L2399: + ldr x2, [x27, 2696] + ubfiz x1, x0, 1, 16 + ldrh w1, [x2, x1] + cmp w1, 159 + bls .L2401 +.L2400: + ldr x1, [x27, 2520] + ldr w1, [x1, x21] + cmn w1, #1 + bne .L2402 +.L2401: + ldr x1, [x27, 2520] + add x21, x1, x21 + ldr w1, [x21, 4] + str w1, [x29, 108] +.L2402: + ldr x1, [x27, 2712] + ubfiz x0, x0, 1, 16 + strh wzr, [x1, x0] ldrh w0, [x19] bl INSERT_FREE_LIST mov w0, -1 strh w0, [x19] -.L2469: - bl FtlGcPageVarInit - mov w27, 0 - b .L2422 -.L2471: - ldr w0, [x29,136] - add w24, w24, 1 - add w3, w27, 1 - cmp w24, w0 - uxth w27, w3 - bcs .L2447 -.L2449: - add x0, x23, :lo12:.LANCHOR2 - ldrh w0, [x0,2344] - cmp w0, w27 - bhi .L2448 - b .L2452 -.L2447: - ldr x0, [x29,128] - add x1, x0, :lo12:.LANCHOR1 - ldrh w0, [x1,3452] - cmp w0, w28 - beq .L2449 - add w0, w0, w24 - strh w0, [x1,3452] - add x0, x23, :lo12:.LANCHOR2 - ldrh w0, [x0,2344] - cmp w0, w27 - bls .L2449 - b .L2450 -.L2452: - mov w6, 0 -.L2423: - ldr x0, [x29,128] - mov w1, -1 - strh w27, [x19,2] - mov w2, w6 - add x0, x0, :lo12:.LANCHOR1 - strb w6, [x19,6] - strh w1, [x0,3452] - mov x0, x19 - mov w1, w27 - bl ftl_sb_update_avl_pages -.L2450: - ldr w0, [x29,140] - 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 + b .L2424 +.L2404: + add x1, x22, :lo12:.LANCHOR1 + mov w2, 65535 + ldrh w0, [x1, 3452] + cmp w0, w2 + beq .L2406 + add w0, w0, w23 + strh w0, [x1, 3452] + ldrh w0, [x27, 2344] + cmp w0, w26 + bls .L2406 +.L2377: + ldr w0, [x29, 108] + 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 ret .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 @@ -16326,54 +15971,54 @@ FtlGcScanTempBlk: FtlGcRefreshOpenBlock: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,2472] + and w20, w0, 65535 + ldrh w0, [x19, 2472] cmp w0, w20 - beq .L2474 - ldrh w0, [x19,2474] + beq .L2427 + ldrh w0, [x19, 2474] cmp w0, w20 - beq .L2474 - ldrh w0, [x19,2476] + beq .L2427 + ldrh w0, [x19, 2476] cmp w0, w20 - beq .L2474 - ldrh w0, [x19,2478] + beq .L2427 + ldrh w0, [x19, 2478] cmp w0, w20 - beq .L2474 - adrp x0, .LC148 + beq .L2427 mov w1, w20 + adrp x0, .LC148 add x0, x0, :lo12:.LC148 bl printk - ldrh w1, [x19,2472] + ldrh w1, [x19, 2472] mov w0, 65535 cmp w1, w0 - bne .L2476 - strh w20, [x19,2472] - b .L2474 -.L2476: - ldrh w1, [x19,2474] - cmp w1, w0 - bne .L2477 - strh w20, [x19,2474] - b .L2474 -.L2477: - ldrh w1, [x19,2476] - cmp w1, w0 - bne .L2478 - strh w20, [x19,2476] - b .L2474 -.L2478: - ldrh w1, [x19,2478] - cmp w1, w0 - bne .L2474 - strh w20, [x19,2478] -.L2474: + bne .L2429 + strh w20, [x19, 2472] +.L2427: mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2429: + ldrh w1, [x19, 2474] + cmp w1, w0 + bne .L2430 + strh w20, [x19, 2474] + b .L2427 +.L2430: + ldrh w1, [x19, 2476] + cmp w1, w0 + bne .L2431 + strh w20, [x19, 2476] + b .L2427 +.L2431: + ldrh w1, [x19, 2478] + cmp w1, w0 + bne .L2427 + strh w20, [x19, 2478] + b .L2427 .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .align 2 .global FtlGcRefreshBlock @@ -16381,60 +16026,63 @@ FtlGcRefreshOpenBlock: FtlGcRefreshBlock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - uxth w20, w0 add x19, x19, :lo12:.LANCHOR2 - str x21, [sp,32] + and w20, w0, 65535 + str x21, [sp, 32] + ldrh w0, [x19, 2472] + cmp w0, w20 + beq .L2440 + ldrh w0, [x19, 2474] + cmp w0, w20 + beq .L2440 + ldrh w0, [x19, 2476] + cmp w0, w20 + beq .L2440 + ldrh w0, [x19, 2478] mov w21, 0 - ldrh w0, [x19,2472] cmp w0, w20 - beq .L2480 - ldrh w0, [x19,2474] - cmp w0, w20 - beq .L2480 - ldrh w0, [x19,2476] - cmp w0, w20 - beq .L2480 - ldrh w0, [x19,2478] - cmp w0, w20 - beq .L2480 - adrp x0, .LC148 + beq .L2433 mov w1, w20 + adrp x0, .LC148 add x0, x0, :lo12:.LC148 bl printk - ldrh w1, [x19,2472] + ldrh w1, [x19, 2472] mov w0, 65535 cmp w1, w0 - bne .L2481 - strh w20, [x19,2472] - b .L2480 -.L2481: - ldrh w1, [x19,2474] - cmp w1, w0 - bne .L2482 - strh w20, [x19,2474] - b .L2480 -.L2482: - ldrh w1, [x19,2476] - cmp w1, w0 - bne .L2483 - strh w20, [x19,2476] - b .L2480 -.L2483: - ldrh w1, [x19,2478] - cmp w1, w0 - bne .L2488 - strh w20, [x19,2478] - b .L2480 -.L2488: - mov w21, -1 -.L2480: + bne .L2435 + strh w20, [x19, 2472] +.L2433: mov w0, w21 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L2435: + ldrh w1, [x19, 2474] + cmp w1, w0 + bne .L2436 + strh w20, [x19, 2474] + b .L2433 +.L2436: + ldrh w1, [x19, 2476] + cmp w1, w0 + bne .L2437 + strh w20, [x19, 2476] + b .L2433 +.L2437: + ldrh w1, [x19, 2478] + cmp w1, w0 + bne .L2442 + strh w20, [x19, 2478] + b .L2433 +.L2440: + mov w21, 0 + b .L2433 +.L2442: + mov w21, -1 + b .L2433 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 .global FtlGcMarkBadPhyBlk @@ -16442,62 +16090,62 @@ FtlGcRefreshBlock: FtlGcMarkBadPhyBlk: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w20, w0 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x21, x22, [sp,32] - mov w0, w20 + stp x21, x22, [sp, 32] add x22, x19, :lo12:.LANCHOR2 - str x23, [sp,48] + and w20, w0, 65535 + str x23, [sp, 48] + mov w0, w20 bl P2V_block_in_plane - uxth w21, w0 - ldrh w1, [x22,2486] - adrp x0, .LC149 + ldrh w1, [x22, 2486] mov w2, w20 + and w21, w0, 65535 + adrp x0, .LC149 add x0, x0, :lo12:.LC149 bl printk mov w0, w21 bl FtlGcRefreshBlock - ldr w0, [x22,2096] - cbz w0, .L2490 + ldr w0, [x22, 2096] + cbz w0, .L2445 + ldr x2, [x22, 2696] ubfiz x0, x21, 1, 16 - ldr x2, [x22,2696] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] cmp w1, 39 - bls .L2490 + bls .L2445 sub w1, w1, #40 - strh w1, [x2,x0] -.L2490: + strh w1, [x2, x0] +.L2445: add x0, x19, :lo12:.LANCHOR2 - adrp x1, .LANCHOR5 - add x1, x1, :lo12:.LANCHOR5 - add x1, x1, 1208 - ldrh w3, [x0,2486] - mov x0, 0 -.L2491: - cmp w3, w0, uxth - bls .L2497 - add x0, x0, 1 - add x2, x1, x0, lsl 1 - ldrh w2, [x2,-2] - cmp w2, w20 - bne .L2491 - b .L2492 -.L2497: - cmp w3, 15 - bhi .L2492 - adrp x1, .LANCHOR5 + mov x2, 0 + ldrh w1, [x0, 2486] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + add x0, x0, 1720 +.L2446: + cmp w1, w2, uxth + bhi .L2448 + cmp w1, 15 + bhi .L2447 add x19, x19, :lo12:.LANCHOR2 - add x1, x1, :lo12:.LANCHOR5 - add w0, w3, 1 - add x1, x1, 1208 - strh w0, [x19,2486] - strh w20, [x1,w3,sxtw 1] -.L2492: + add w0, w1, 1 + strh w0, [x19, 2486] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + add x0, x0, 1720 + strh w20, [x0, w1, sxtw 1] + b .L2447 +.L2448: + add x2, x2, 1 + add x3, x0, x2, lsl 1 + ldrh w3, [x3, -2] + cmp w3, w20 + bne .L2446 +.L2447: mov w0, 0 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk @@ -16507,34 +16155,34 @@ FtlGcMarkBadPhyBlk: FtlGcReFreshBadBlk: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,2486] - cbz w1, .L2499 - ldrh w3, [x0,2472] + ldrh w1, [x0, 2486] + cbz w1, .L2454 + ldrh w3, [x0, 2472] mov w2, 65535 cmp w3, w2 - bne .L2499 - ldrh w2, [x0,2490] + bne .L2454 + ldrh w2, [x0, 2490] cmp w2, w1 - bcc .L2500 - strh wzr, [x0,2490] -.L2500: + bcc .L2455 + strh wzr, [x0, 2490] +.L2455: add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - add x0, x0, 1208 - ldrh w1, [x19,2490] - ldrh w0, [x0,w1,sxtw 1] + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + add x0, x0, 1720 + ldrh w1, [x19, 2490] + ldrh w0, [x0, x1, lsl 1] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh w0, [x19,2490] + ldrh w0, [x19, 2490] add w0, w0, 1 - strh w0, [x19,2490] -.L2499: + strh w0, [x19, 2490] +.L2454: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk @@ -16544,1081 +16192,1023 @@ FtlGcReFreshBadBlk: FtlGcFreeBadSuperBlk: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - str x27, [sp,80] - add x19, x19, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - uxth w23, w0 - ldrh w0, [x19,2486] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - mov w21, 0 - cbz w0, .L2506 - adrp x24, .LANCHOR5 - adrp x22, .LC150 - add x22, x22, :lo12:.LC150 - add x25, x24, :lo12:.LANCHOR5 -.L2514: - ldrh w0, [x19,2276] - cmp w0, w21 - bls .L2515 - add x0, x19, 2304 - mov w1, w23 + stp x23, x24, [sp, 48] + and w23, w0, 65535 + adrp x0, .LANCHOR2 + add x1, x0, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrh w1, [x1, 2486] + cbz w1, .L2461 + adrp x22, .LANCHOR4 + add x21, x22, :lo12:.LANCHOR4 + mov x27, x0 + add x21, x21, 1720 mov w20, 0 - add x27, x24, :lo12:.LANCHOR5 - ldrb w0, [x0,w21,sxtw] - bl V2P_block - uxth w26, w0 -.L2507: - ldrh w0, [x19,2486] - cmp w0, w20 - bls .L2516 - add x0, x27, 1208 - ldrh w0, [x0,w20,sxtw 1] - cmp w0, w26 - bne .L2508 - mov w1, w26 - mov x0, x22 - bl printk - mov w0, w26 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldrh w2, [x19,2486] - mov w3, w20 -.L2509: - cmp w3, w2 - bcs .L2517 - add x4, x25, 1208 - add w0, w3, 1 - ldrh w1, [x4,w0,sxtw 1] - strh w1, [x4,w3,sxtw 1] - uxth w3, w0 - b .L2509 -.L2517: - sub w2, w2, #1 - strh w2, [x19,2486] -.L2508: - add w20, w20, 1 - uxth w20, w20 - b .L2507 -.L2516: - add w21, w21, 1 - uxth w21, w21 - b .L2514 -.L2515: +.L2462: + add x0, x27, :lo12:.LANCHOR2 + ldrh w1, [x0, 2276] + cmp w1, w20 + bhi .L2468 bl FtlGcReFreshBadBlk -.L2506: +.L2461: mov w0, 0 - ldr x27, [sp,80] - 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 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 +.L2468: + add x0, x0, 2304 + mov w1, w23 + mov w19, 0 + ldrb w0, [x0, w20, sxtw] + bl V2P_block + and w24, w0, 65535 +.L2463: + add x25, x27, :lo12:.LANCHOR2 + ldrh w0, [x25, 2486] + cmp w0, w19 + bhi .L2467 + add w20, w20, 1 + and w20, w20, 65535 + b .L2462 +.L2467: + add x0, x22, :lo12:.LANCHOR4 + add w26, w19, 1 + add x0, x0, 1720 + ldrh w0, [x0, w19, sxtw 1] + cmp w0, w24 + bne .L2464 + mov w1, w24 + adrp x0, .LC150 + add x0, x0, :lo12:.LC150 + bl printk + mov w0, w24 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldrh w0, [x25, 2486] + mov w1, w26 +.L2465: + cmp w19, w0 + bcc .L2466 + add x1, x27, :lo12:.LANCHOR2 + sub w0, w0, #1 + strh w0, [x1, 2486] +.L2464: + and w19, w26, 65535 + b .L2463 +.L2466: + sub w2, w1, #1 + ldrh w3, [x21, w1, sxtw 1] + add w19, w19, 1 + add w1, w1, 1 + and w19, w19, 65535 + strh w3, [x21, w2, sxtw 1] + b .L2465 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 .global update_vpc_list .type update_vpc_list, %function update_vpc_list: - stp x29, x30, [sp, -32]! + stp x29, x30, [sp, -16]! adrp x1, .LANCHOR2+2712 + and w14, w0, 65535 add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w0 - ldr x1, [x1,#:lo12:.LANCHOR2+2712] - ubfiz x0, x19, 1, 16 - ldrh w1, [x1,x0] - cbnz w1, .L2519 - adrp x0, .LANCHOR5 - adrp x20, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR5 - ldrh w2, [x0,592] - cmp w2, w19 - bne .L2520 + ldr x1, [x1, #:lo12:.LANCHOR2+2712] + ubfiz x0, x14, 1, 16 + ldrh w0, [x1, x0] + cbnz w0, .L2474 + adrp x8, .LANCHOR4 + add x0, x8, :lo12:.LANCHOR4 + ldrh w1, [x0, 1104] + cmp w1, w14 + bne .L2475 mov w1, -1 - strh w1, [x0,592] - b .L2521 -.L2520: - add x2, x20, :lo12:.LANCHOR4 - mov w0, w1 - ldrh w3, [x2,784] - cmp w3, w19 - beq .L2522 - ldrh w3, [x2,832] - cmp w3, w19 - beq .L2522 - ldrh w2, [x2,880] - cmp w2, w19 - beq .L2522 -.L2521: - add x20, x20, :lo12:.LANCHOR4 - mov w1, w19 - add x0, x20, 744 + strh w1, [x0, 1104] +.L2476: + add x8, x8, :lo12:.LANCHOR4 + mov w1, w14 + add x0, x8, 744 bl List_remove_node - ldrh w0, [x20,760] + ldrh w0, [x8, 760] sub w0, w0, #1 - strh w0, [x20,760] - mov w0, w19 + strh w0, [x8, 760] + mov w0, w14 bl free_data_superblock - mov w0, w19 + mov w0, w14 bl FtlGcFreeBadSuperBlk mov w0, 1 - b .L2522 -.L2519: - mov w0, w19 - bl List_update_data_list - mov w0, 0 -.L2522: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 +.L2473: + ldp x29, x30, [sp], 16 ret +.L2475: + ldrh w1, [x0, 784] + cmp w1, w14 + beq .L2480 + ldrh w1, [x0, 832] + cmp w1, w14 + beq .L2480 + ldrh w0, [x0, 880] + cmp w0, w14 + bne .L2476 +.L2480: + mov w0, 0 + b .L2473 +.L2474: + mov w0, w14 + bl List_update_data_list + b .L2480 .size update_vpc_list, .-update_vpc_list .align 2 .global decrement_vpc_count .type decrement_vpc_count, %function decrement_vpc_count: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 65535 + stp x21, x22, [sp, 32] mov w0, 65535 - stp x21, x22, [sp,32] - str x23, [sp,48] + adrp x20, .LANCHOR4 cmp w19, w0 - beq .L2527 - adrp x20, .LANCHOR2 + beq .L2483 + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 ubfiz x22, x19, 1, 16 - add x20, x20, :lo12:.LANCHOR2 - ldr x0, [x20,2712] - ldrh w2, [x0,x22] - cbnz w2, .L2528 + ldr x1, [x21, 2712] + ldrh w0, [x1, x22] + cbnz w0, .L2484 + mov w1, w19 + mov w2, 0 adrp x0, .LC151 - mov w1, w19 add x0, x0, :lo12:.LC151 - adrp x21, .LANCHOR4 - add x21, x21, :lo12:.LANCHOR4 bl printk - add x23, x21, 768 - ldr x0, [x20,2712] + add x20, x20, :lo12:.LANCHOR4 + ldr x0, [x21, 2712] + add x6, x20, 768 mov w1, 32 - strh w1, [x0,x22] - mov x0, x23 + strh w1, [x0, x22] mov w1, w19 + mov x0, x6 bl test_node_in_list - cbz w0, .L2529 + cbz w0, .L2485 mov w1, w19 - mov x0, x23 + mov x0, x6 bl List_remove_node - ldrh w0, [x21,776] + ldrh w0, [x20, 776] sub w0, w0, #1 - strh w0, [x21,776] + strh w0, [x20, 776] mov w0, w19 bl INSERT_DATA_LIST - ldr x2, [x20,2712] + ldr x0, [x21, 2712] + mov w1, w19 + ldrh w2, [x0, x22] adrp x0, .LC152 add x0, x0, :lo12:.LC152 - mov w1, w19 - ldrh w2, [x2,x22] bl printk -.L2529: +.L2485: mov w0, w19 bl FtlGcRefreshBlock - b .L2536 -.L2528: - sub w2, w2, #1 - strh w2, [x0,x22] -.L2527: - adrp x20, .LANCHOR5 - mov w0, 65535 - add x20, x20, :lo12:.LANCHOR5 - ldrh w1, [x20,1184] - cmp w1, w0 - bne .L2531 - strh w19, [x20,1184] -.L2536: +.L2488: mov w0, 0 - b .L2530 -.L2531: - cmp w1, w19 - mov w0, 0 - beq .L2530 - mov w0, w1 + b .L2482 +.L2484: + sub w0, w0, #1 + strh w0, [x1, x22] +.L2483: + add x20, x20, :lo12:.LANCHOR4 + mov w1, 65535 + ldrh w0, [x20, 1696] + cmp w0, w1 + bne .L2487 + strh w19, [x20, 1696] + b .L2488 +.L2487: + cmp w19, w0 + beq .L2488 bl update_vpc_list - cmp w0, wzr + cmp w0, 0 cset w0, ne - strh w19, [x20,1184] -.L2530: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 64 + strh w19, [x20, 1696] +.L2482: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret .size decrement_vpc_count, .-decrement_vpc_count .align 2 .global FtlRecoverySuperblock .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: - stp x29, x30, [sp, -224]! + stp x29, x30, [sp, -176]! mov w2, 65535 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] + stp x19, x20, [sp, 16] mov x19, x0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] ldrh w0, [x0] cmp w0, w2 - beq .L2698 - ldrh w0, [x19,2] + beq .L2639 + ldrh w0, [x19, 2] adrp x20, .LANCHOR2 - str w0, [x29,204] + str w0, [x29, 156] add x0, x20, :lo12:.LANCHOR2 - ldrb w28, [x19,6] - ldr w1, [x29,204] - ldrh w0, [x0,2344] + ldr w1, [x29, 156] + ldrh w0, [x0, 2344] cmp w0, w1 - bne .L2540 - strh wzr, [x19,4] - b .L2704 -.L2540: - ldrh w0, [x19,16] + bne .L2496 + strh wzr, [x19, 4] +.L2646: + strb wzr, [x19, 6] +.L2639: + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 + ret +.L2496: + ldrh w0, [x19, 16] mov w1, 0 -.L2541: +.L2497: cmp w0, w2 - bne .L2707 - add w1, w1, 1 - uxth w1, w1 - add x0, x19, w1, sxtw 1 - ldrh w0, [x0,16] - b .L2541 -.L2707: - ldrb w1, [x19,8] + beq .L2498 + ldrb w1, [x19, 6] + str w1, [x29, 140] + ldrb w1, [x19, 8] cmp w1, 1 - bne .L2543 + bne .L2499 bl FtlGetLastWrittenPage - cmn w0, #1 mov w21, w0 - beq .L2544 + cmn w0, #1 + beq .L2500 add x0, x20, :lo12:.LANCHOR2 - mov w23, w21 - ldrb w0, [x0,1220] - cbnz w0, .L2618 + ldrb w0, [x0, 1220] + cbnz w0, .L2572 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x0, x0, 144 - ldrh w23, [x0,w21,sxtw 1] - b .L2618 -.L2543: - mov w1, 0 - bl FtlGetLastWrittenPage - cmn w0, #1 - mov w21, w0 - beq .L2544 - mov w23, w0 -.L2618: + ldrh w23, [x0, w21, sxtw 1] +.L2501: add x0, x20, :lo12:.LANCHOR2 - mov x2, x19 - mov w25, 0 + add x1, x19, 16 + str x1, [x29, 144] + add x3, x19, 16 + mov w28, 0 mov w8, 65535 + ldrh w1, [x0, 2276] mov w9, 56 + ldrh w7, [x0, 2356] mov w10, 4 - ldrh w4, [x0,2276] - ldrh w7, [x0,2356] - add x4, x19, x4, lsl 1 - b .L2546 -.L2544: - strh wzr, [x19,2] -.L2704: - strb wzr, [x19,6] - b .L2698 -.L2548: - ldrh w1, [x2,16] - cmp w1, w8 - beq .L2547 - add x5, x20, :lo12:.LANCHOR2 - orr w1, w23, w1, lsl 10 - umull x0, w25, w9 - add w3, w25, 1 - ldr x6, [x5,2520] - add x6, x6, x0 - str w1, [x6,4] - ldr x1, [x5,2520] - ldr x5, [x5,2656] - add x0, x1, x0 - mul w1, w25, w7 - uxth w25, w3 - str xzr, [x0,8] - sdiv w1, w1, w10 - add x1, x5, w1, sxtw 2 - str x1, [x0,16] -.L2547: - add x2, x2, 2 -.L2546: - cmp x2, x4 - bne .L2548 - ldrb w0, [x19,8] - str wzr, [x29,200] + add x1, x1, 8 + add x1, x19, x1, lsl 1 +.L2502: + cmp x3, x1 + bne .L2504 + ldrb w0, [x19, 8] cmp w0, 1 - bne .L2549 + bne .L2573 add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cmp w0, wzr + ldrb w0, [x0, 1220] + cmp w0, 0 cset w0, ne - str w0, [x29,200] -.L2549: - add x22, x20, :lo12:.LANCHOR2 - ldr w2, [x29,200] - mov w1, w25 - mov x26, 0 - mov w24, 65535 - adrp x27, .LANCHOR5 - ldr x0, [x22,2520] + str w0, [x29, 152] +.L2505: + add x24, x20, :lo12:.LANCHOR2 + ldr w2, [x29, 152] + mov w1, w28 + adrp x25, .LC153 + adrp x26, .LANCHOR4 + add x25, x25, :lo12:.LC153 + ldr x0, [x24, 2520] + add x26, x26, :lo12:.LANCHOR4 + mov x27, 0 bl FlashReadPages - ldr w0, [x22,2400] - adrp x22, .LC153 - str w0, [x29,192] - add x22, x22, :lo12:.LC153 - uxth w0, w23 - str w0, [x29,184] -.L2550: - uxth w2, w26 - cmp w2, w25 - bcs .L2557 - add x6, x20, :lo12:.LANCHOR2 - mov x0, 56 - mul x0, x26, x0 - ldr x4, [x6,2520] - add x1, x4, x0 - ldr w0, [x4,x0] - cbnz w0, .L2551 - ldr x7, [x1,16] - ldr w4, [x7,4] - cmn w4, #1 - beq .L2552 - ldr w1, [x6,2400] - mov w0, w4 - str x7, [x29,152] - str x2, [x29,160] - str x4, [x29,168] - str x6, [x29,176] - bl ftl_cmp_data_ver - ldr x6, [x29,176] - ldr x4, [x29,168] - ldr x2, [x29,160] - ldr x7, [x29,152] - cbz w0, .L2552 - add w4, w4, 1 - str w4, [x6,2400] -.L2552: - ldr w0, [x7] - cmn w0, #1 - bne .L2553 -.L2557: - cmp w2, w25 - bne .L2699 + ldr w22, [x24, 2400] + mov w4, 65535 + sub w22, w22, #1 +.L2506: + and w0, w27, 65535 + cmp w28, w0 + bhi .L2511 + bne .L2509 add x0, x20, :lo12:.LANCHOR2 add w21, w21, 1 - uxth w21, w21 - ldr x0, [x0,2520] - ldr w0, [x0,4] - b .L2700 -.L2551: - ldr w1, [x1,4] - mov x0, x22 - bl printk - ldr w24, [x29,184] - add x0, x27, :lo12:.LANCHOR5 - ldrh w1, [x19] - strh w1, [x0,1242] -.L2553: - add x26, x26, 1 - b .L2550 -.L2699: - add x0, x20, :lo12:.LANCHOR2 - mov w1, 56 - uxth w21, w21 - umull x2, w2, w1 - ldr x0, [x0,2520] - add x2, x0, x2 - ldr w0, [x2,4] -.L2700: - lsr x0, x0, 10 + and w21, w21, 65535 + ldr x0, [x0, 2520] + ldr w0, [x0, 4] +.L2641: + lsr w0, w0, 10 bl P2V_plane - uxth w26, w0 - ldrb w1, [x19,8] + ldrb w1, [x19, 8] + and w28, w0, 65535 cmp w1, 1 - bne .L2559 + bne .L2513 add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbnz w0, .L2559 + ldrb w0, [x0, 1220] + cbnz w0, .L2513 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x0, x0, 144 - ldrh w21, [x0,w21,sxtw 1] -.L2559: + ldrh w21, [x0, w21, sxtw 1] +.L2513: add x0, x20, :lo12:.LANCHOR2 - ldrh w0, [x0,2344] + ldrh w0, [x0, 2344] cmp w0, w21 - bne .L2560 - strh w21, [x19,2] - strb wzr, [x19,6] - strh wzr, [x19,4] -.L2560: - uxth w0, w28 - str w0, [x29,160] - ldr w0, [x29,204] + bne .L2514 + strh w21, [x19, 2] + strb wzr, [x19, 6] + strh wzr, [x19, 4] +.L2514: + ldrh w0, [x29, 140] + str w0, [x29, 140] + ldr w0, [x29, 156] cmp w21, w0 - bne .L2561 - ldr w0, [x29,160] - cmp w26, w0 - beq .L2705 -.L2561: - ldr w0, [x29,192] - adrp x25, .LANCHOR5 - sub w22, w0, #1 + ldr w0, [x29, 140] + ccmp w28, w0, 0, eq + bne .L2515 +.L2647: + mov w2, w28 + mov w1, w21 + mov x0, x19 + bl ftl_sb_update_avl_pages + b .L2639 +.L2498: + add w1, w1, 1 + and w1, w1, 65535 + add x0, x19, w1, sxtw 1 + ldrh w0, [x0, 16] + b .L2497 +.L2499: + mov w1, 0 + bl FtlGetLastWrittenPage + mov w21, w0 + cmn w0, #1 + beq .L2500 +.L2572: + mov w23, w21 + b .L2501 +.L2500: + strh wzr, [x19, 2] + b .L2646 +.L2504: + ldrh w2, [x3] + cmp w2, w8 + beq .L2503 + umull x6, w28, w9 + ldr x5, [x0, 2520] + orr w2, w23, w2, lsl 10 + add x5, x5, x6 + str w2, [x5, 4] + mul w2, w28, w7 + add w28, w28, 1 + ldr x4, [x0, 2520] + and w28, w28, 65535 + ldr x5, [x0, 2656] + sdiv w2, w2, w10 + add x4, x4, x6 + add x2, x5, w2, sxtw 2 + stp xzr, x2, [x4, 8] +.L2503: + add x3, x3, 2 + b .L2502 +.L2573: + str wzr, [x29, 152] + b .L2505 +.L2511: + mov x0, 56 + ldr x3, [x24, 2520] + mul x0, x27, x0 + add x1, x3, x0 + ldr w0, [x3, x0] + cbnz w0, .L2507 + ldr x5, [x1, 16] + ldr w3, [x5, 4] + cmn w3, #1 + beq .L2508 + ldr w1, [x24, 2400] + mov w0, w3 + bl ftl_cmp_data_ver + cbz w0, .L2508 + add w3, w3, 1 + str w3, [x24, 2400] +.L2508: + ldr w0, [x5] + cmn w0, #1 + bne .L2510 +.L2509: + add x0, x20, :lo12:.LANCHOR2 + and x27, x27, 65535 + mov x1, 56 + and w21, w21, 65535 + ldr x0, [x0, 2520] + madd x27, x27, x1, x0 + ldr w0, [x27, 4] + b .L2641 +.L2507: + ldr w1, [x1, 4] + mov x0, x25 + bl printk + ldrh w0, [x19] + and w4, w23, 65535 + strh w0, [x26, 1754] +.L2510: + add x27, x27, 1 + b .L2506 +.L2515: mov w0, 65535 - cmp w24, w0 - bne .L2562 - cbnz w1, .L2563 -.L2562: - add x0, x25, :lo12:.LANCHOR5 - uxth w6, w23 - ldr w1, [x0,1196] + adrp x27, .LANCHOR4 + cmp w4, w0 + bne .L2516 + cbnz w1, .L2517 +.L2516: + add x0, x27, :lo12:.LANCHOR4 + and w6, w23, 65535 + ldr w1, [x0, 1708] cmn w1, #1 - bne .L2564 - str w22, [x0,1196] -.L2564: - add x0, x25, :lo12:.LANCHOR5 - ldr w24, [x29,204] - ldr w3, [x0,1196] - ldr w0, [x29,204] + bne .L2518 + str w22, [x0, 1708] +.L2518: + add x0, x27, :lo12:.LANCHOR4 + ldr w5, [x0, 1708] + ldr w0, [x29, 156] add w0, w0, 7 cmp w0, w23, uxth - bge .L2565 - sub w24, w6, #7 - uxth w24, w24 -.L2565: - mov w28, -1 - adrp x5, .LANCHOR0 - mov w27, w28 - mov w4, 65535 - mov w7, 56 - add x5, x5, :lo12:.LANCHOR0 -.L2566: - cmp w24, w6 - bhi .L2579 - add x0, x20, :lo12:.LANCHOR2 - mov w23, 0 - ldrh w2, [x0,2276] - mov x0, x19 - add x2, x19, x2, lsl 1 -.L2580: - cmp x0, x2 - beq .L2708 - ldrh w1, [x0,16] - cmp w1, w4 - beq .L2567 - add x9, x20, :lo12:.LANCHOR2 - orr w1, w24, w1, lsl 10 - umull x8, w23, w7 - add w23, w23, 1 - ldr x9, [x9,2520] - uxth w23, w23 - add x8, x9, x8 - str w1, [x8,4] -.L2567: - add x0, x0, 2 - b .L2580 -.L2708: - add x8, x20, :lo12:.LANCHOR2 - ldr w2, [x29,200] - mov w1, w23 - str x5, [x29,144] - str x7, [x29,152] - ldr x0, [x8,2520] - str x4, [x29,168] - str x3, [x29,176] - str x6, [x29,184] - str x8, [x29,192] + bge .L2574 + sub w23, w6, #7 + and w23, w23, 65535 +.L2519: + adrp x4, .LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 + mov w26, -1 + add x3, x20, :lo12:.LANCHOR2 + mov w25, w26 + add x4, x4, 1168 +.L2520: + cmp w23, w6 + bhi .L2533 + ldrh w0, [x3, 2276] + mov w24, 0 + mov w9, 65535 + mov w8, 56 + add x0, x0, 8 + ldr x1, [x29, 144] + add x0, x19, x0, lsl 1 + b .L2534 +.L2574: + ldr w23, [x29, 156] + b .L2519 +.L2522: + ldrh w2, [x1] + cmp w2, w9 + beq .L2521 + ldr x7, [x3, 2520] + orr w2, w23, w2, lsl 10 + umaddl x7, w24, w8, x7 + add w24, w24, 1 + and w24, w24, 65535 + str w2, [x7, 4] +.L2521: + add x1, x1, 2 +.L2534: + cmp x0, x1 + bne .L2522 + ldr w2, [x29, 152] + mov w1, w24 + ldr x0, [x3, 2520] + str x4, [x29, 104] + str w5, [x29, 112] + str w6, [x29, 120] + str x3, [x29, 128] bl FlashReadPages - ldr x8, [x29,192] - mov w1, 0 - ldr x6, [x29,184] - sxtw x10, w24 - ldr x3, [x29,176] - ldr x0, [x8,2520] - ldrb w9, [x8,1220] - ldr x4, [x29,168] - add x0, x0, 16 - ldr x7, [x29,152] - ldr x5, [x29,144] -.L2569: - cmp w1, w23 - beq .L2709 - ldr w2, [x0,-16] - cbnz w2, .L2570 - ldr x2, [x0] - ldrh w8, [x2] - cmp w8, w4 - beq .L2571 - ldr w8, [x2,4] - cmn w8, #1 - beq .L2571 - add x2, x25, :lo12:.LANCHOR5 - cmn w28, #1 - ldr w27, [x2,1196] - str w8, [x2,1196] - bne .L2571 - add x2, x5, 1168 - ldrh w2, [x2,x10,lsl 1] - cmp w2, w4 - bne .L2572 - cbz w9, .L2571 -.L2572: - cmp w27, w22 - csinv w28, w27, wzr, ne - b .L2571 -.L2570: - add x0, x25, :lo12:.LANCHOR5 + ldr x3, [x29, 128] + mov w1, 56 + ldr w5, [x29, 112] + add x2, x27, :lo12:.LANCHOR4 + ldr w6, [x29, 120] + sxtw x9, w23 + ldr x4, [x29, 104] + ldr x0, [x3, 2520] + ldrb w8, [x3, 1220] + nop // between mem op and mult-accumulate + umaddl x24, w24, w1, x0 + mov w1, 65535 +.L2523: + cmp x24, x0 + bne .L2532 + add w23, w23, 1 + and w23, w23, 65535 + b .L2520 +.L2532: + ldr w7, [x0] + cbnz w7, .L2524 + ldr x7, [x0, 16] + ldrh w10, [x7] + cmp w10, w1 + beq .L2525 + ldr w7, [x7, 4] + cmn w7, #1 + beq .L2525 + ldr w25, [x2, 1708] + cmn w26, #1 + str w7, [x2, 1708] + bne .L2525 + ldrh w7, [x4, x9, lsl 1] + cmp w7, w1 + bne .L2526 + cbz w8, .L2525 +.L2526: + cmp w22, w25 + csel w26, w26, w25, eq +.L2525: + add x0, x0, 56 + b .L2523 +.L2524: + add x0, x27, :lo12:.LANCHOR4 ldrh w1, [x19] - strh w1, [x0,1242] - ldrb w1, [x19,8] - cbnz w1, .L2563 + strh w1, [x0, 1754] + ldrb w1, [x19, 8] + cbnz w1, .L2517 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x1, x1, 1168 - ldrh w2, [x1,w24,sxtw 1] + ldrh w2, [x1, w23, sxtw 1] mov w1, 65535 cmp w2, w1 - bne .L2574 - cmn w28, #1 - beq .L2575 - str w28, [x0,1196] - b .L2563 -.L2575: - cmp w3, w22 - beq .L2576 - str w3, [x0,1196] - b .L2563 -.L2576: - ldr w1, [x0,1196] - b .L2706 -.L2574: - cmp w27, w22 - beq .L2577 - cmn w27, #1 - beq .L2563 - str w27, [x0,1196] - b .L2563 -.L2577: - ldr w1, [x0,1196] - cmp w1, w22 - beq .L2563 -.L2706: - sub w1, w1, #1 - b .L2701 -.L2571: - add w1, w1, 1 - add x0, x0, 56 - uxth w1, w1 - b .L2569 -.L2709: - add w24, w24, 1 - uxth w24, w24 - b .L2566 -.L2579: - add x0, x25, :lo12:.LANCHOR5 - mov w1, -1 -.L2701: - str w1, [x0,1196] -.L2563: - add x0, x25, :lo12:.LANCHOR5 + bne .L2528 + cmn w26, #1 + beq .L2529 + str w26, [x0, 1708] +.L2517: + add x0, x27, :lo12:.LANCHOR4 + ldr w24, [x29, 156] + add x20, x20, :lo12:.LANCHOR2 mov w1, 1 - ldr w23, [x29,204] - strh w1, [x0,1244] + strh w1, [x0, 1756] +.L2535: + ldrh w0, [x20, 2276] + mov w23, 0 + ldrb w6, [x20, 1220] + mov w7, 65535 + add x0, x0, 8 + ldr x1, [x29, 144] + add x0, x19, x0, lsl 1 +.L2536: + cmp x0, x1 + bne .L2539 + ldr w2, [x29, 152] + mov w1, w23 + ldr x0, [x20, 2520] + mov x25, 0 + bl FlashReadPages + mov w0, 56 + umull x0, w23, w0 + add x23, x27, :lo12:.LANCHOR4 + str x0, [x29, 120] adrp x0, .LC155 add x0, x0, :lo12:.LC155 - str x0, [x29,136] + str x0, [x29, 112] + add x0, x23, 1768 + str x0, [x29, 104] +.L2540: + ldr x0, [x29, 120] + cmp x0, x25 + bne .L2565 + ldrb w0, [x19, 8] + add w24, w24, 1 + and w24, w24, 65535 + cmp w0, 1 + bne .L2566 + ldrb w0, [x20, 1220] + cbz w0, .L2566 + ldrh w0, [x20, 2346] + cmp w0, w24 + bne .L2566 + cmp w21, w24 + beq .L2542 +.L2566: + ldrh w0, [x20, 2344] + cmp w0, w24 + bne .L2535 + ldrh w1, [x20, 2276] + mov w0, 0 + strh w24, [x19, 2] + mov w2, 65535 + strh wzr, [x19, 4] +.L2567: + cmp w0, w1 + beq .L2639 + ldr x4, [x29, 144] + ldrh w3, [x4], 2 + str x4, [x29, 144] + cmp w3, w2 + beq .L2568 + strb w0, [x19, 6] + b .L2639 +.L2529: + cmp w22, w5 + beq .L2530 + str w5, [x0, 1708] + b .L2517 +.L2530: + ldr w1, [x0, 1708] +.L2648: + sub w1, w1, #1 +.L2642: + str w1, [x0, 1708] + b .L2517 +.L2528: + cmp w25, w22 + beq .L2531 + cmn w25, #1 + beq .L2517 + str w25, [x0, 1708] + b .L2517 +.L2531: + ldr w1, [x0, 1708] + cmp w22, w1 + bne .L2648 + b .L2517 +.L2533: + add x0, x27, :lo12:.LANCHOR4 + mov w1, -1 + b .L2642 +.L2539: + ldrh w3, [x1] + cmp w3, w7 + beq .L2537 + mov w2, 56 + ldr x4, [x20, 2520] + orr w3, w24, w3, lsl 10 + umull x5, w23, w2 + add x4, x4, x5 + str w3, [x4, 4] + ldrb w2, [x19, 8] + cmp w2, 1 + bne .L2538 + cbz w6, .L2538 + ldr x2, [x20, 2520] + add x2, x2, x5 + ldr w3, [x2, 4] + orr w3, w3, -2147483648 + str w3, [x2, 4] +.L2538: + add w23, w23, 1 + and w23, w23, 65535 +.L2537: + add x1, x1, 2 + b .L2536 +.L2565: + ldr x4, [x20, 2520] + add x4, x4, x25 + ldr w5, [x4, 4] + str w5, [x29, 172] + lsr w0, w5, 10 + bl P2V_plane + and w0, w0, 65535 + ldr w1, [x29, 156] + cmp w24, w1 + bcc .L2541 + ldr w1, [x29, 140] + ccmp w1, w0, 0, eq + bhi .L2541 + cmp w24, w21 + ccmp w28, w0, 0, eq + beq .L2542 + ldr w0, [x4] + cmn w0, #1 + beq .L2543 + ldr x3, [x4, 16] + mov w0, 61589 + ldrh w1, [x3] + cmp w1, w0 + beq .L2544 + ldrh w0, [x19] +.L2644: + bl decrement_vpc_count + b .L2541 +.L2544: + ldr w22, [x3, 4] + cmn w22, #1 + beq .L2545 + ldr w1, [x20, 2400] + mov w0, w22 + bl ftl_cmp_data_ver + cbz w0, .L2545 + add w0, w22, 1 + str w0, [x20, 2400] +.L2545: + ldp w26, w0, [x3, 8] + add x1, x29, 168 + str w0, [x29, 164] + mov w2, 0 + mov w0, w26 + bl log2phys + ldr w1, [x23, 1708] + ldr w3, [x29, 164] + cmn w1, #1 + beq .L2546 + mov w0, w22 + bl ftl_cmp_data_ver + cbz w0, .L2546 + cmn w3, #1 + beq .L2547 + ldr x0, [x20, 2520] + mov w2, 0 + mov w1, 1 + add x0, x0, x25 + ldr x4, [x0, 16] + str w3, [x0, 4] + str x4, [x29, 128] + ldr x0, [x20, 2520] + add x0, x0, x25 + bl FlashReadPages + ldr x0, [x20, 2520] + ldr x4, [x29, 128] + add x3, x0, x25 + ldr w0, [x0, x25] + cmn w0, #1 + bne .L2548 +.L2549: + mov w0, -1 + str w0, [x29, 164] +.L2556: + ldr w4, [x29, 164] + cmn w4, #1 + beq .L2541 +.L2571: + lsr w0, w4, 10 + bl P2V_block_in_plane + ldr x3, [x20, 2712] + and w1, w0, 65535 + ubfiz x2, x1, 1, 16 + ldrh w2, [x3, x2] + cbnz w2, .L2644 adrp x0, .LC154 add x0, x0, :lo12:.LC154 - str x0, [x29,128] - adrp x0, .LANCHOR4 - add x0, x0, :lo12:.LANCHOR4 - str x0, [x29,168] -.L2581: - add x0, x20, :lo12:.LANCHOR2 - mov x1, x19 - str wzr, [x29,192] - mov w7, 65535 - mov w8, 56 - ldrh w3, [x0,2276] - ldrb w6, [x0,1220] - add x3, x19, x3, lsl 1 -.L2582: - cmp x1, x3 - beq .L2710 - ldrh w2, [x1,16] - cmp w2, w7 - beq .L2583 - ldr w0, [x29,192] - add x5, x20, :lo12:.LANCHOR2 - orr w2, w23, w2, lsl 10 - ldr x4, [x5,2520] - umull x0, w0, w8 - add x4, x4, x0 - str w2, [x4,4] - ldrb w2, [x19,8] - cmp w2, 1 - bne .L2584 - cbz w6, .L2584 - ldr x2, [x5,2520] - add x0, x2, x0 - ldr w2, [x0,4] - orr w2, w2, -2147483648 - str w2, [x0,4] -.L2584: - ldr w0, [x29,192] - add w0, w0, 1 - uxth w0, w0 - str w0, [x29,192] -.L2583: - add x1, x1, 2 - b .L2582 -.L2710: - add x0, x20, :lo12:.LANCHOR2 - ldr w1, [x29,192] - ldr w2, [x29,200] - ldr x0, [x0,2520] - bl FlashReadPages - str xzr, [x29,176] -.L2586: - ldrh w0, [x29,176] - ldr w1, [x29,192] - cmp w1, w0, uxth - bls .L2711 - ldr x0, [x29,176] - mov x24, 56 - mul x24, x0, x24 - add x0, x20, :lo12:.LANCHOR2 - ldr x28, [x0,2520] - add x27, x28, x24 - ldr w1, [x27,4] - str w1, [x29,220] - lsr x0, x1, 10 - str x1, [x29,184] - bl P2V_plane - uxth w0, w0 - ldr w1, [x29,204] - cmp w23, w1 - ldr x1, [x29,184] - bcc .L2587 - ldr w2, [x29,160] - cmp w0, w2 - bcs .L2622 - ldr w2, [x29,204] - cmp w23, w2 - beq .L2587 -.L2622: - cmp w0, w26 - bne .L2623 - cmp w23, w21 - beq .L2589 -.L2623: - ldr w0, [x28,x24] - cmn w0, #1 - beq .L2591 - ldr x28, [x27,16] - mov w0, 61589 - ldrh w1, [x28] - cmp w1, w0 - beq .L2592 - ldrh w0, [x19] - b .L2702 -.L2592: - ldr w22, [x28,4] - cmn w22, #1 - beq .L2593 - add x27, x20, :lo12:.LANCHOR2 - mov w0, w22 - ldr w1, [x27,2400] - bl ftl_cmp_data_ver - cbz w0, .L2593 - add w0, w22, 1 - str w0, [x27,2400] -.L2593: - ldr w27, [x28,8] - add x1, x29, 216 - ldr w0, [x28,12] - mov w2, 0 - str w0, [x29,212] - mov w0, w27 - bl log2phys - ldr w28, [x29,212] - add x0, x25, :lo12:.LANCHOR5 - str x0, [x29,144] - ldr w1, [x0,1196] - cmn w1, #1 - beq .L2594 - mov w0, w22 - bl ftl_cmp_data_ver - cbz w0, .L2594 - cmn w28, #1 - beq .L2595 - add x3, x20, :lo12:.LANCHOR2 - mov w2, 0 - str x3, [x29,120] - ldr x0, [x3,2520] - add x0, x0, x24 - str w28, [x0,4] - ldr x1, [x0,16] - ldr x0, [x3,2520] - str x1, [x29,184] - mov w1, 1 - add x0, x0, x24 - bl FlashReadPages - ldr x3, [x29,120] - ldr x0, [x29,184] - ldr x2, [x3,2520] - ldr w0, [x0,4] - str w0, [x29,152] - add x4, x2, x24 - ldr w0, [x2,x24] - cmn w0, #1 - bne .L2596 - b .L2597 -.L2595: - ldr w0, [x29,220] - ldr w1, [x29,216] - cmp w1, w0 - bne .L2587 - mov w0, w27 - add x1, x29, 212 - mov w2, 1 - bl log2phys - b .L2587 -.L2596: - ldr x0, [x29,184] - ldr w28, [x0,8] - cmp w28, w27 - bne .L2597 - ldr x0, [x29,144] - ldr w1, [x29,152] - str x2, [x29,104] - ldr w0, [x0,1196] - str x3, [x29,112] - str x4, [x29,120] - bl ftl_cmp_data_ver - ldr x4, [x29,120] - ldr x3, [x29,112] - ldr x2, [x29,104] - cbz w0, .L2597 - ldr w0, [x29,216] - ldr w1, [x29,220] - cmp w0, w1 - beq .L2602 - ldr w1, [x29,212] - cmp w0, w1 - beq .L2597 - cmn w0, #1 - beq .L2600 - str w0, [x4,4] - mov w2, 0 - ldr x1, [x4,16] - ldr x0, [x3,2520] - str x1, [x29,184] - mov w1, 1 - add x0, x0, x24 - bl FlashReadPages - b .L2601 -.L2600: - str w0, [x2,x24] -.L2601: - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - ldr w0, [x0,x24] - cmn w0, #1 - beq .L2602 - ldr x0, [x29,184] - ldr w24, [x0,4] - add x0, x25, :lo12:.LANCHOR5 - mov w1, w24 - ldr w0, [x0,1196] - bl ftl_cmp_data_ver - cbz w0, .L2602 - ldr w0, [x29,152] - mov w1, w24 - bl ftl_cmp_data_ver - cbz w0, .L2597 -.L2602: - ldr w1, [x29,212] - mov w0, w28 - bl FtlReUsePrevPpa -.L2597: - mov w0, -1 - str w0, [x29,212] - b .L2604 -.L2594: - ldr w0, [x29,220] - ldr w1, [x29,216] - cmp w1, w0 - beq .L2604 - cmn w28, #1 - beq .L2606 - add x0, x20, :lo12:.LANCHOR2 - ubfx x28, x28, 10, 21 - ldr w0, [x0,2292] - cmp w28, w0 - bcs .L2587 -.L2606: - mov w0, w27 - add x1, x29, 220 - mov w2, 1 - bl log2phys - ldr w28, [x29,216] - cmn w28, #1 - beq .L2604 - ldr w0, [x29,212] - cmp w28, w0 - beq .L2604 - lsr x0, x28, 10 - bl P2V_block_in_plane - uxth w0, w0 - ldr x1, [x29,168] - ldrh w1, [x1,784] - cmp w1, w0 - beq .L2608 - ldr x1, [x29,168] - ldrh w1, [x1,832] - cmp w1, w0 - beq .L2608 - ldr x1, [x29,168] - ldrh w1, [x1,880] - cmp w1, w0 - bne .L2604 -.L2608: - adrp x0, .LANCHOR2 - mov w1, 1 - add x24, x0, :lo12:.LANCHOR2 - mov w2, 0 - ldr x0, [x24,2520] - str w28, [x0,4] - ldr x3, [x0,16] - ldr x0, [x24,2520] - str x3, [x29,184] - bl FlashReadPages - ldr x0, [x24,2520] - ldr x3, [x29,184] - ldr w0, [x0] - ldr w1, [x3,4] - cmn w0, #1 - beq .L2604 - mov w0, w22 - bl ftl_cmp_data_ver - cbnz w0, .L2604 - mov w0, w27 - add x1, x29, 216 - mov w2, 1 - bl log2phys -.L2604: - ldr w0, [x29,212] - cmn w0, #1 - beq .L2587 - 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,2712] - ldrh w2, [x2,x3] - cbz w2, .L2609 -.L2702: - bl decrement_vpc_count - b .L2587 -.L2609: - ldr x0, [x29,128] bl printk - b .L2587 -.L2591: - add x24, x25, :lo12:.LANCHOR5 + b .L2541 +.L2547: + ldp w1, w0, [x29, 168] + cmp w1, w0 + bne .L2541 + mov w2, 1 + add x1, x29, 164 + mov w0, w26 + bl log2phys +.L2541: + add x25, x25, 56 + b .L2540 +.L2548: + ldr w0, [x4, 8] + cmp w26, w0 + bne .L2549 + ldr w0, [x4, 4] + str w0, [x29, 128] + str x4, [x29, 96] + uxtw x1, w0 + ldr w0, [x23, 1708] + bl ftl_cmp_data_ver + cbz w0, .L2549 + ldp w0, w1, [x29, 168] + ldr x4, [x29, 96] + cmp w0, w1 + ldr w1, [x29, 164] + bne .L2551 +.L2643: + mov w0, w26 + bl FtlReUsePrevPpa + b .L2549 +.L2551: + cmp w0, w1 + beq .L2549 + cmn w0, #1 + beq .L2552 + ldr x4, [x3, 16] + mov w2, 0 + str w0, [x3, 4] + mov w1, 1 + str x4, [x29, 96] + ldr x0, [x20, 2520] + add x0, x0, x25 + bl FlashReadPages + ldr x4, [x29, 96] +.L2553: + adrp x0, .LANCHOR2+2520 + ldr x0, [x0, #:lo12:.LANCHOR2+2520] + ldr w0, [x0, x25] + cmn w0, #1 + beq .L2554 + ldr w3, [x4, 4] + ldr w0, [x23, 1708] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L2554 + ldr w0, [x29, 128] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L2549 +.L2554: + ldr w1, [x29, 164] + b .L2643 +.L2552: + str w0, [x3] + b .L2553 +.L2546: + ldp w1, w0, [x29, 168] + cmp w1, w0 + beq .L2556 + cmn w3, #1 + beq .L2558 + ldr w0, [x20, 2292] + ubfx x3, x3, 10, 21 + cmp w3, w0 + bcs .L2541 +.L2558: + mov w2, 1 + add x1, x29, 172 + mov w0, w26 + bl log2phys + ldr w4, [x29, 168] + cmn w4, #1 + beq .L2556 + ldr w0, [x29, 164] + cmp w4, w0 + beq .L2571 + lsr w0, w4, 10 + bl P2V_block_in_plane + ldrh w1, [x23, 784] + and w0, w0, 65535 + cmp w1, w0 + beq .L2561 + ldrh w1, [x23, 832] + cmp w1, w0 + beq .L2561 + ldrh w1, [x23, 880] + cmp w1, w0 + bne .L2556 +.L2561: + ldr x0, [x20, 2520] + mov w2, 0 + mov w1, 1 + str w4, [x0, 4] + ldr x3, [x0, 16] + ldr x0, [x20, 2520] + str x3, [x29, 128] + bl FlashReadPages + ldr x0, [x20, 2520] + ldr w0, [x0] + cmn w0, #1 + beq .L2556 + ldr x3, [x29, 128] + mov w0, w22 + ldr w1, [x3, 4] + bl ftl_cmp_data_ver + cbnz w0, .L2556 + mov w2, 1 + add x1, x29, 168 + mov w0, w26 + bl log2phys + b .L2556 +.L2543: ldrh w0, [x19] mov w2, w22 - strh w0, [x24,1242] - ldr x0, [x29,136] + strh w0, [x23, 1754] + mov w1, w5 + ldr x0, [x29, 112] bl printk - ldr w0, [x24,1248] + ldr w0, [x23, 1760] cmp w0, 31 - bhi .L2610 - add x1, x24, 1256 - ldr w2, [x29,220] - str w2, [x1,w0,uxtw 2] + bhi .L2563 + ldr x2, [x29, 104] + ldr w1, [x29, 172] + str w1, [x2, w0, uxtw 2] add w0, w0, 1 - str w0, [x24,1248] -.L2610: + str w0, [x23, 1760] +.L2563: ldrh w0, [x19] bl decrement_vpc_count - add x0, x25, :lo12:.LANCHOR5 - ldr w1, [x0,1196] - cmn w1, #1 - beq .L2703 - cmp w1, w22 - bls .L2587 -.L2703: - str w22, [x0,1196] -.L2587: - ldr x0, [x29,176] - add x0, x0, 1 - str x0, [x29,176] - b .L2586 -.L2711: - ldrb w0, [x19,8] - add w23, w23, 1 - cmp w0, 1 - uxth w23, w23 - bne .L2613 - add x0, x20, :lo12:.LANCHOR2 - ldrb w1, [x0,1220] - cbz w1, .L2613 - cmp w21, w23 - bne .L2613 - ldrh w0, [x0,2346] - cmp w0, w23 - beq .L2589 -.L2613: - add x0, x20, :lo12:.LANCHOR2 - ldrh w1, [x0,2344] - cmp w23, w1 - bne .L2581 - ldrh w2, [x0,2276] - mov w3, 65535 - strh w23, [x19,2] - mov x0, 0 - strh wzr, [x19,4] -.L2615: - uxth w1, w0 - cmp w1, w2 - bcs .L2698 - add x0, x0, 1 - add x4, x19, x0, lsl 1 - ldrh w4, [x4,14] - cmp w4, w3 - beq .L2615 - strb w1, [x19,6] - b .L2698 -.L2589: - strb w26, [x19,6] - strh w21, [x19,2] -.L2705: - mov x0, x19 - mov w1, w21 - mov w2, w26 - bl ftl_sb_update_avl_pages -.L2698: - 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], 224 - ret + ldr w0, [x23, 1708] + cmn w0, #1 + bne .L2564 +.L2645: + str w22, [x23, 1708] + b .L2541 +.L2564: + cmp w22, w0 + bcs .L2541 + b .L2645 +.L2568: + add w0, w0, 1 + and w0, w0, 65535 + b .L2567 +.L2542: + strb w28, [x19, 6] + strh w21, [x19, 2] + b .L2647 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock .align 2 .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: + ldrh w1, [x0, 4] + cbz w1, .L2661 + ldrh w2, [x0] + mov w1, 65535 + cmp w2, w1 + beq .L2661 stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - ldrh w1, [x0,4] - cbz w1, .L2712 - ldrh w1, [x0] - mov w20, 65535 - cmp w1, w20 - beq .L2712 + stp x19, x20, [sp, 16] mov x19, x0 - ldrb w0, [x0,6] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - adrp x22, .LANCHOR2 - add x0, x0, 8 add x21, x21, :lo12:.LANCHOR0 - ldrh w0, [x19,x0,lsl 1] -.L2716: - cmp w0, w20 - bne .L2723 -.L2718: - ldrb w0, [x19,6] - add x1, x22, :lo12:.LANCHOR2 - add w0, w0, 1 - ldrh w1, [x1,2276] - uxtb w0, w0 - strb w0, [x19,6] - cmp w1, w0 - bne .L2717 - ldrh w0, [x19,2] - strb wzr, [x19,6] - add w0, w0, 1 - strh w0, [x19,2] -.L2717: - ldrb w0, [x19,6] + adrp x20, .LANCHOR2 + ldrb w0, [x0, 6] + add x22, x20, :lo12:.LANCHOR2 + add x21, x21, 1168 add x0, x0, 8 - ldrh w0, [x19,x0,lsl 1] - b .L2716 -.L2723: - ldrb w1, [x19,8] + ldrh w1, [x19, x0, lsl 1] +.L2653: + mov w0, 65535 + cmp w1, w0 + beq .L2655 + ldrb w1, [x19, 8] cmp w1, 1 - bne .L2719 - add x0, x22, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbnz w0, .L2719 - ldrh w2, [x19,2] - add x0, x21, 1168 - ldrh w0, [x0,w2,sxtw 1] - cmp w0, w20 - bne .L2719 - ldrh w0, [x19,4] + bne .L2656 + ldrb w2, [x22, 1220] + cbnz w2, .L2656 + ldrh w2, [x19, 2] + ldrh w2, [x21, x2, lsl 1] + cmp w2, w0 + bne .L2656 + ldrh w0, [x19, 4] sub w0, w0, #1 - strh w0, [x19,4] + strh w0, [x19, 4] ldrh w0, [x19] bl decrement_vpc_count - ldrh w1, [x19,4] - cbnz w1, .L2718 - ldrh w0, [x19,2] - strb w1, [x19,6] + ldrh w0, [x19, 4] + cbnz w0, .L2655 + ldrh w0, [x19, 2] add w0, w0, 1 - strh w0, [x19,2] - b .L2712 -.L2719: - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldrb w2, [x0,1220] - cbz w2, .L2712 - cmp w1, 1 - bne .L2712 - ldrh w2, [x19,2] - ldrh w1, [x0,2346] - cmp w2, w1 - bcc .L2712 - ldrh w1, [x19] - ldr x3, [x0,2712] - 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,2344] - strh w0, [x19,2] - strb wzr, [x19,6] -.L2712: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] +.L2664: + strh w0, [x19, 2] + strb wzr, [x19, 6] +.L2649: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2655: + ldrb w0, [x19, 6] + ldrh w1, [x22, 2276] + add w0, w0, 1 + and w0, w0, 255 + strb w0, [x19, 6] + cmp w1, w0 + bne .L2654 + ldrh w0, [x19, 2] + strb wzr, [x19, 6] + add w0, w0, 1 + strh w0, [x19, 2] +.L2654: + ldrb w0, [x19, 6] + add x0, x0, 8 + ldrh w1, [x19, x0, lsl 1] + b .L2653 +.L2656: + add x0, x20, :lo12:.LANCHOR2 + ldrb w2, [x0, 1220] + cbz w2, .L2649 + cmp w1, 1 + bne .L2649 + ldrh w2, [x19, 2] + ldrh w1, [x0, 2346] + cmp w2, w1 + bcc .L2649 + ldrh w1, [x19] + ldr x3, [x0, 2712] + ldrh w4, [x19, 4] + lsl x1, x1, 1 + ldrh w2, [x3, x1] + sub w2, w2, w4 + strh w2, [x3, x1] + strh wzr, [x19, 4] + ldrh w0, [x0, 2344] + b .L2664 +.L2661: + ret .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global get_new_active_ppa @@ -17626,129 +17216,117 @@ FtlSlcSuperblockCheck: get_new_active_ppa: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] mov x19, x0 - strb wzr, [x0,10] - ldrb w0, [x0,6] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - mov w22, 65535 - adrp x23, .LANCHOR2 - add x0, x0, 8 + str x23, [sp, 48] add x21, x21, :lo12:.LANCHOR0 - ldrh w0, [x19,x0,lsl 1] -.L2725: - cmp w0, w22 + strb wzr, [x0, 10] adrp x20, .LANCHOR2 - bne .L2740 -.L2726: - ldrb w0, [x19,6] - add x1, x23, :lo12:.LANCHOR2 - add w0, w0, 1 - ldrh w1, [x1,2276] - uxtb w0, w0 - strb w0, [x19,6] - cmp w1, w0 - bne .L2727 - ldrh w0, [x19,2] - strb wzr, [x19,6] - add w0, w0, 1 - strh w0, [x19,2] -.L2727: - ldrb w0, [x19,6] + ldrb w0, [x0, 6] + add x21, x21, 1168 + add x23, x20, :lo12:.LANCHOR2 add x0, x0, 8 - ldrh w0, [x19,x0,lsl 1] - b .L2725 -.L2740: - ldrb w1, [x19,8] + ldrh w0, [x19, x0, lsl 1] +.L2666: + mov w2, 65535 + cmp w0, w2 + beq .L2667 + ldrb w1, [x19, 8] + ldrh w22, [x19, 2] cmp w1, 1 - bne .L2728 - add x1, x23, :lo12:.LANCHOR2 - ldrb w1, [x1,1220] - cbnz w1, .L2728 - ldrh w2, [x19,2] - add x1, x21, 1168 - ldrh w1, [x1,w2,sxtw 1] - cmp w1, w22 - bne .L2728 - ldrh w0, [x19,4] - sub w0, w0, #1 - strh w0, [x19,4] + ldrh w1, [x19, 4] + bne .L2669 + ldrb w3, [x23, 1220] + cbnz w3, .L2669 + ldrh w3, [x21, w22, sxtw 1] + cmp w3, w2 + bne .L2669 ldrh w0, [x19] + sub w1, w1, #1 + strh w1, [x19, 4] bl decrement_vpc_count - b .L2726 -.L2728: - ldrh w1, [x19,4] - mov w23, 65535 - ldrh w22, [x19,2] +.L2667: + ldrb w0, [x19, 6] + ldrh w1, [x23, 2276] + add w0, w0, 1 + and w0, w0, 255 + strb w0, [x19, 6] + cmp w1, w0 + bne .L2668 + ldrh w0, [x19, 2] + strb wzr, [x19, 6] + add w0, w0, 1 + strh w0, [x19, 2] +.L2668: + ldrb w0, [x19, 6] + add x0, x0, 8 + ldrh w0, [x19, x0, lsl 1] + b .L2666 +.L2669: adrp x21, .LANCHOR0 - sub w1, w1, #1 - mov w24, w23 - orr w22, w22, w0, lsl 10 - strh w1, [x19,4] add x21, x21, :lo12:.LANCHOR0 -.L2729: - add x0, x20, :lo12:.LANCHOR2 - ldrb w1, [x19,6] - ldrh w2, [x0,2276] -.L2731: - add w1, w1, 1 - uxtb w1, w1 - cmp w1, w2 - bne .L2730 - ldrh w1, [x19,2] - add w1, w1, 1 - strh w1, [x19,2] - mov w1, 0 -.L2730: - add x0, x19, w1, sxtw 1 - ldrh w0, [x0,16] - cmp w0, w23 - beq .L2731 - ldrb w0, [x19,8] - strb w1, [x19,6] - cmp w0, 1 - bne .L2736 - add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbnz w0, .L2733 - ldrh w1, [x19,2] - add x0, x21, 1168 - ldrh w0, [x0,w1,sxtw 1] - cmp w0, w24 - bne .L2733 - ldrh w1, [x19,4] - cbz w1, .L2733 - ldrh w0, [x19] + orr w22, w22, w0, lsl 10 + add x20, x20, :lo12:.LANCHOR2 + add x21, x21, 1168 sub w1, w1, #1 - strh w1, [x19,4] + strh w1, [x19, 4] +.L2670: + ldrb w0, [x19, 6] + mov w1, 65535 + ldrh w3, [x20, 2276] +.L2672: + add w0, w0, 1 + and w0, w0, 255 + cmp w0, w3 + bne .L2671 + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + mov w0, 0 +.L2671: + add x2, x19, w0, sxtw 1 + ldrh w2, [x2, 16] + cmp w2, w1 + beq .L2672 + strb w0, [x19, 6] + ldrb w0, [x19, 8] + cmp w0, 1 + bne .L2665 + ldrb w2, [x20, 1220] + ldrh w0, [x19, 2] + cbnz w2, .L2674 + ldrh w0, [x21, w0, sxtw 1] + cmp w0, w1 + bne .L2665 + ldrh w0, [x19, 4] + cbz w0, .L2665 + sub w0, w0, #1 + strh w0, [x19, 4] + ldrh w0, [x19] bl decrement_vpc_count - b .L2729 -.L2733: - add x1, x20, :lo12:.LANCHOR2 - ldrb w0, [x1,1220] - cbz w0, .L2736 - ldrh w2, [x19,2] - ldrh w0, [x1,2346] - cmp w2, w0 - bcc .L2736 - ldrh w2, [x19] - ldr x0, [x1,2712] - lsl x2, x2, 1 - ldrh w4, [x19,4] - ldrh w3, [x0,x2] - sub w3, w3, w4 - strh w3, [x0,x2] - strh wzr, [x19,4] - ldrh w0, [x1,2344] - strh w0, [x19,2] - strb wzr, [x19,6] -.L2736: + b .L2670 +.L2674: + ldrh w1, [x20, 2346] + cmp w0, w1 + bcc .L2665 + ldrh w0, [x19] + ldr x2, [x20, 2712] + ldrh w3, [x19, 4] + lsl x0, x0, 1 + ldrh w1, [x2, x0] + sub w1, w1, w3 + strh w1, [x2, x0] + strh wzr, [x19, 4] + ldrh w0, [x20, 2344] + strh w0, [x19, 2] + strb wzr, [x19, 6] +.L2665: mov w0, w22 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size get_new_active_ppa, .-get_new_active_ppa @@ -17758,106 +17336,105 @@ get_new_active_ppa: FtlWriteDumpData: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x22, .LANCHOR2 - str x25, [sp,64] - stp x19, x20, [sp,16] add x20, x22, :lo12:.LANCHOR2 - stp x23, x24, [sp,48] - ldr w0, [x20,2928] - cbnz w0, .L2741 + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldr w0, [x20, 2928] + cbnz w0, .L2681 adrp x19, .LANCHOR4 - add x1, x19, :lo12:.LANCHOR4 - add x1, x1, 784 - ldrh w2, [x1,4] - cbz w2, .L2743 - ldrb w0, [x1,8] - cbnz w0, .L2743 - ldrb w0, [x1,7] - ldrh w3, [x20,2344] - mul w0, w0, w3 - cmp w2, w0 - beq .L2743 - ldrb w24, [x1,10] - ldr w23, [x20,2924] - ldrh w25, [x20,2276] - cbnz w24, .L2741 - sub w23, w23, #1 + add x0, x19, :lo12:.LANCHOR4 + add x0, x0, 784 + ldrh w2, [x0, 4] + cbz w2, .L2683 + ldrb w1, [x0, 8] + cbnz w1, .L2683 + ldrb w1, [x0, 7] + ldrh w3, [x20, 2344] + mul w1, w1, w3 + cmp w2, w1 + beq .L2683 + ldrb w0, [x0, 10] + cbnz w0, .L2681 + ldr w23, [x20, 2924] add x1, x29, 84 - mov w0, w23 - mov w2, w24 - bl log2phys - ldr x21, [x20,2640] - ldr w0, [x29,84] - ldr x1, [x20,2576] - str w0, [x29,92] - cmn w0, #1 - str w23, [x29,112] - str x1, [x29,96] - str x21, [x29,104] - str w24, [x21,4] - beq .L2745 - add x0, x29, 88 - mov w1, 1 - mov w2, w24 - bl FlashReadPages - b .L2746 -.L2745: - ldr x0, [x20,2576] - mov w1, 255 - ldrh w2, [x20,2354] - bl ftl_memset -.L2746: - add x20, x19, :lo12:.LANCHOR4 - mov w0, -3947 - lsl w25, w25, 2 - strh w0, [x21] - mov w24, 0 - add x20, x20, 784 -.L2747: - cmp w24, w25 - beq .L2748 - ldrh w0, [x20,4] - cbz w0, .L2748 - ldr w0, [x29,92] - add w24, w24, 1 - str w0, [x21,12] - ldrh w0, [x20] - strh w0, [x21,2] - mov x0, x20 - str w23, [x21,8] - bl get_new_active_ppa - str w0, [x29,92] - add x0, x22, :lo12:.LANCHOR2 + ldrh w25, [x20, 2276] + mov w2, 0 + sub w23, w23, #1 + mov w0, w23 + bl log2phys + ldr x21, [x20, 2640] + ldr w0, [x29, 84] + ldr x1, [x20, 2576] + str w0, [x29, 92] + cmn w0, #1 + stp x1, x21, [x29, 96] + str w23, [x29, 112] + str wzr, [x21, 4] + beq .L2685 mov w2, 0 - mov w3, w2 - ldr w1, [x0,2400] - str w1, [x21,4] - add w1, w1, 1 - cmn w1, #1 - csel w1, w1, wzr, ne - str w1, [x0,2400] mov w1, 1 add x0, x29, 88 + bl FlashReadPages +.L2686: + add x20, x19, :lo12:.LANCHOR4 + lsl w25, w25, 2 + add x20, x20, 784 + add x22, x22, :lo12:.LANCHOR2 + mov w0, -3947 + mov w24, 0 + strh w0, [x21] +.L2687: + cmp w25, w24 + bne .L2691 +.L2688: + add x19, x19, :lo12:.LANCHOR4 + mov w0, 1 + strb w0, [x19, 794] +.L2681: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] + ldp x29, x30, [sp], 144 + ret +.L2685: + ldrh w2, [x20, 2354] + mov w1, 255 + ldr x0, [x20, 2576] + bl ftl_memset + b .L2686 +.L2691: + ldrh w0, [x20, 4] + cbz w0, .L2688 + ldr w0, [x29, 92] + add w24, w24, 1 + stp w23, w0, [x21, 8] + ldrh w0, [x20] + strh w0, [x21, 2] + mov x0, x20 + bl get_new_active_ppa + str w0, [x29, 92] + ldr w0, [x22, 2400] + mov w3, 0 + str w0, [x21, 4] + mov w2, 0 + add w0, w0, 1 + mov w1, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x22, 2400] + add x0, x29, 88 bl FlashProgPages ldrh w0, [x20] bl decrement_vpc_count - b .L2747 -.L2748: + b .L2687 +.L2683: add x19, x19, :lo12:.LANCHOR4 - mov w0, 1 - strb w0, [x19,794] - b .L2741 -.L2743: - add x19, x19, :lo12:.LANCHOR4 - strb wzr, [x19,794] -.L2741: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 144 - ret + strb wzr, [x19, 794] + b .L2681 .size FtlWriteDumpData, .-FtlWriteDumpData .align 2 .global l2p_flush @@ -17865,31 +17442,31 @@ FtlWriteDumpData: l2p_flush: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov w19, 0 + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 + add x20, x20, :lo12:.LANCHOR2 + mov w19, 0 bl FtlWriteDumpData -.L2759: - add x1, x20, :lo12:.LANCHOR2 - ldrh w0, [x1,2382] +.L2700: + ldrh w0, [x20, 2382] cmp w0, w19 - bls .L2762 - ldr x1, [x1,2792] - ubfiz x0, x19, 4, 16 - add x0, x1, x0 - ldr w0, [x0,4] - tbz w0, #31, .L2760 - mov w0, w19 - bl flush_l2p_region -.L2760: - add w19, w19, 1 - uxth w19, w19 - b .L2759 -.L2762: + bhi .L2702 mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2702: + ldr x1, [x20, 2792] + ubfiz x0, x19, 4, 16 + add x0, x1, x0 + ldr w0, [x0, 4] + tbz w0, #31, .L2701 + mov w0, w19 + bl flush_l2p_region +.L2701: + add w19, w19, 1 + and w19, w19, 65535 + b .L2700 .size l2p_flush, .-l2p_flush .align 2 .global FtlSuperblockPowerLostFix @@ -17897,200 +17474,194 @@ l2p_flush: FtlSuperblockPowerLostFix: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - str x23, [sp,48] - add x2, x20, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - ldr w1, [x2,2928] - cbnz w1, .L2763 - ldrb w21, [x2,1220] - cbz w21, .L2778 - ldrb w21, [x0,8] - cmp w21, 1 - bne .L2774 - ldrh w23, [x0,4] - b .L2765 -.L2774: - mov w21, w1 -.L2778: - mov w23, 12 -.L2765: + add x1, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldr w24, [x1, 2928] + cbnz w24, .L2704 + ldrb w1, [x1, 1220] + cbz w1, .L2715 + ldrb w1, [x0, 8] + cmp w1, 1 + bne .L2715 + ldrh w23, [x0, 4] + mov w24, w1 +.L2706: mov x19, x0 mov w0, -1 - str w0, [x29,96] + str w0, [x29, 96] add x0, x20, :lo12:.LANCHOR2 mov w2, 61589 - ldr x22, [x0,2640] - ldr x1, [x0,2576] - str x1, [x29,80] + mov x21, x0 + ldr x22, [x0, 2640] + ldr x1, [x0, 2576] + stp x1, x22, [x29, 80] mov w1, -3 - str x22, [x29,88] - str w1, [x22,8] + str w1, [x22, 8] mov w1, -2 - str w1, [x22,12] + str w1, [x22, 12] ldrh w1, [x19] - strh w1, [x22,2] + strh w1, [x22, 2] strh wzr, [x22] - ldr x1, [x0,2576] + ldr x1, [x0, 2576] str w2, [x1] - ldr x1, [x0,2576] - mov w0, 22136 - movk w0, 0x1234, lsl 16 - str w0, [x1,4] -.L2766: + mov w2, 22136 + movk w2, 0x1234, lsl 16 + ldr x1, [x0, 2576] + str w2, [x1, 4] +.L2707: sub w23, w23, #1 cmn w23, #1 - beq .L2769 - ldrh w0, [x19,4] - cbnz w0, .L2767 -.L2769: + beq .L2710 + ldrh w0, [x19, 4] + cbnz w0, .L2708 +.L2710: add x20, x20, :lo12:.LANCHOR2 ldrh w0, [x19] - ldrh w3, [x19,4] + ldrh w3, [x19, 4] + ldr x2, [x20, 2712] lsl x0, x0, 1 - ldr x2, [x20,2712] - ldrh w1, [x2,x0] + ldrh w1, [x2, x0] sub w1, w1, w3 - strh w1, [x2,x0] - strb wzr, [x19,6] - ldrh w0, [x20,2344] - strh w0, [x19,2] - strh wzr, [x19,4] - b .L2763 -.L2767: + strh w1, [x2, x0] + strb wzr, [x19, 6] + ldrh w0, [x20, 2344] + strh w0, [x19, 2] + strh wzr, [x19, 4] +.L2704: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 128 + ret +.L2715: + mov w23, 12 + b .L2706 +.L2708: mov x0, x19 bl get_new_active_ppa - str w0, [x29,76] + str w0, [x29, 76] cmn w0, #1 - beq .L2769 - add x1, x20, :lo12:.LANCHOR2 - mov w2, w21 + beq .L2710 + ldr w0, [x21, 2400] mov w3, 0 - ldr w0, [x1,2400] - str w0, [x22,4] + str w0, [x22, 4] + mov w2, w24 add w0, w0, 1 + mov w1, 1 cmn w0, #1 csel w0, w0, wzr, ne - str w0, [x1,2400] + str w0, [x21, 2400] add x0, x29, 72 - mov w1, 1 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - b .L2766 -.L2763: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 128 - ret + b .L2707 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 .global FtlVpcCheckAndModify .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! adrp x1, .LANCHOR3 - adrp x0, .LC49 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC49 add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x19, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] add x1, x1, 232 add x0, x0, :lo12:.LC49 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - str x25, [sp,64] - adrp x22, .LANCHOR2 + str x23, [sp, 48] bl printk - mov w19, 0 - add x0, x22, :lo12:.LANCHOR2 + ldr x0, [x19, 2704] + mov w21, 0 + ldrh w2, [x19, 2286] mov w1, 0 - ldrh w2, [x0,2286] - ldr x0, [x0,2704] lsl w2, w2, 1 bl ftl_memset -.L2780: - add x20, x22, :lo12:.LANCHOR2 - ldr w0, [x20,2924] - cmp w19, w0 - bcs .L2796 - mov w0, w19 - add x1, x29, 92 - mov w2, 0 - bl log2phys - ldr w0, [x29,92] - cmn w0, #1 - beq .L2781 - lsr x0, x0, 10 - bl P2V_block_in_plane - ubfiz x0, x0, 1, 16 - ldr x2, [x20,2704] - ldrh w1, [x2,x0] - add w1, w1, 1 - strh w1, [x2,x0] -.L2781: - add w19, w19, 1 - b .L2780 -.L2796: - adrp x23, .LANCHOR4 - adrp x24, .LC156 +.L2721: + ldr w0, [x19, 2924] + cmp w21, w0 + bcc .L2723 + adrp x22, .LANCHOR4 + adrp x23, .LC156 + add x20, x20, :lo12:.LANCHOR2 + add x22, x22, :lo12:.LANCHOR4 + add x23, x23, :lo12:.LC156 mov w19, 0 - mov w25, 65535 - add x23, x23, :lo12:.LANCHOR4 - add x24, x24, :lo12:.LC156 -.L2783: - add x21, x22, :lo12:.LANCHOR2 - ldrh w0, [x21,2284] +.L2724: + ldrh w0, [x20, 2284] cmp w0, w19 - bls .L2797 - ubfiz x20, x19, 1, 16 - ldr x0, [x21,2712] - ldrh w2, [x0,x20] - ldr x0, [x21,2704] - cmp w2, w25 - ldrh w3, [x0,x20] - beq .L2784 - cmp w2, w3 - beq .L2784 - ldrh w0, [x23,784] - cmp w0, w19 - beq .L2784 - ldrh w0, [x23,880] - cmp w0, w19 - beq .L2784 - ldrh w0, [x23,832] - cmp w0, w19 - beq .L2784 - mov w1, w19 - mov x0, x24 - bl printk - ldr x0, [x21,2712] - ldrh w1, [x0,x20] - cbnz w1, .L2785 - ldr x1, [x21,2704] - ldrh w1, [x1,x20] - strh w1, [x0,x20] - b .L2784 -.L2785: - ldr x1, [x21,2704] - ldrh w1, [x1,x20] - strh w1, [x0,x20] - mov w0, w19 - bl update_vpc_list -.L2784: - add w19, w19, 1 - uxth w19, w19 - b .L2783 -.L2797: + bhi .L2727 bl l2p_flush bl FtlVpcTblFlush - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 96 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 80 ret +.L2723: + mov w2, 0 + add x1, x29, 76 + mov w0, w21 + bl log2phys + ldr w0, [x29, 76] + cmn w0, #1 + beq .L2722 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldr x2, [x19, 2704] + ubfiz x0, x0, 1, 16 + ldrh w1, [x2, x0] + add w1, w1, 1 + strh w1, [x2, x0] +.L2722: + add w21, w21, 1 + b .L2721 +.L2727: + ldr x0, [x20, 2712] + ubfiz x21, x19, 1, 16 + ldrh w2, [x0, x21] + ldr x0, [x20, 2704] + ldrh w3, [x0, x21] + cmp w2, w3 + beq .L2725 + mov w0, 65535 + cmp w2, w0 + beq .L2725 + ldrh w0, [x22, 784] + cmp w0, w19 + beq .L2725 + ldrh w0, [x22, 880] + cmp w0, w19 + beq .L2725 + ldrh w0, [x22, 832] + cmp w0, w19 + beq .L2725 + mov w1, w19 + mov x0, x23 + bl printk + ldr x0, [x20, 2712] + ldrh w1, [x0, x21] + cbnz w1, .L2726 + ldr x1, [x20, 2704] + ldrh w1, [x1, x21] + strh w1, [x0, x21] +.L2725: + add w19, w19, 1 + and w19, w19, 65535 + b .L2724 +.L2726: + ldr x1, [x20, 2704] + ldrh w1, [x1, x21] + strh w1, [x0, x21] + mov w0, w19 + bl update_vpc_list + b .L2725 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 .global allocate_new_data_superblock @@ -18098,1397 +17669,1377 @@ FtlVpcCheckAndModify: allocate_new_data_superblock: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - add x1, x20, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - ldr w2, [x1,2928] - ldrh w22, [x0] - cbnz w2, .L2799 - mov x19, x0 - mov w0, 65535 - cmp w22, w0 - beq .L2800 - ubfiz x0, x22, 1, 16 - ldr x1, [x1,2712] - ldrh w0, [x1,x0] - cbz w0, .L2801 - mov w0, w22 - bl INSERT_DATA_LIST - b .L2800 -.L2801: - mov w0, w22 - bl INSERT_FREE_LIST -.L2800: - adrp x0, .LANCHOR4 - strb wzr, [x19,8] - add x1, x0, :lo12:.LANCHOR4 - add x2, x1, 832 - cmp x19, x2 - beq .L2802 add x2, x20, :lo12:.LANCHOR2 - ldrh w3, [x2,2296] + stp x21, x22, [sp, 32] + ldr w1, [x2, 2928] + cbnz w1, .L2733 + ldrh w21, [x0] + mov x22, x0 + mov w0, 65535 + cmp w21, w0 + beq .L2734 + ldr x0, [x2, 2712] + ubfiz x1, x21, 1, 16 + ldrh w0, [x0, x1] + cbz w0, .L2735 + mov w0, w21 + bl INSERT_DATA_LIST +.L2734: + adrp x19, .LANCHOR4 + strb wzr, [x22, 8] + add x1, x19, :lo12:.LANCHOR4 + add x0, x1, 832 + cmp x22, x0 + beq .L2736 + add x2, x20, :lo12:.LANCHOR2 + ldrh w3, [x2, 2296] cmp w3, 1 - beq .L2802 - ldrb w4, [x2,1220] - cbz w4, .L2803 -.L2802: + beq .L2736 + ldrb w0, [x2, 1220] + cbz w0, .L2737 +.L2736: mov w0, 1 - strb w0, [x19,8] - b .L2804 -.L2803: - add x1, x1, 784 - cmp x19, x1 - bne .L2804 - cmp w3, 3 - beq .L2806 - ldr w1, [x2,2392] - cmp w1, 1 - bne .L2807 -.L2806: - add x1, x0, :lo12:.LANCHOR4 - mov w2, 1 - strb w2, [x1,792] -.L2807: - add x1, x20, :lo12:.LANCHOR2 - ldr w2, [x1,2096] - cbz w2, .L2804 - ldr w1, [x1,2444] - cmp w1, 39 - bhi .L2804 - add x0, x0, :lo12:.LANCHOR4 - mov w1, 1 - strb w1, [x0,792] -.L2804: - adrp x1, .LANCHOR5 - mov w2, 65535 - add x0, x1, :lo12:.LANCHOR5 - mov x21, x1 - ldrh w0, [x0,1184] - cmp w0, w2 - beq .L2809 - cmp w22, w0 - bne .L2810 + strb w0, [x22, 8] +.L2738: + add x0, x19, :lo12:.LANCHOR4 + mov w1, 65535 + ldrh w0, [x0, 1696] + cmp w0, w1 + beq .L2743 + cmp w21, w0 + bne .L2744 add x20, x20, :lo12:.LANCHOR2 ubfiz x1, x0, 1, 16 - ldr x2, [x20,2712] - ldrh w1, [x2,x1] - cbz w1, .L2811 -.L2810: + ldr x2, [x20, 2712] + ldrh w1, [x2, x1] + cbz w1, .L2745 +.L2744: bl update_vpc_list -.L2811: - add x1, x21, :lo12:.LANCHOR5 +.L2745: + add x19, x19, :lo12:.LANCHOR4 mov w0, -1 - strh w0, [x1,1184] -.L2809: - mov x0, x19 + strh w0, [x19, 1696] +.L2743: + mov x0, x22 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L2799: +.L2733: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2735: + mov w0, w21 + bl INSERT_FREE_LIST + b .L2734 +.L2737: + add x1, x1, 784 + cmp x22, x1 + bne .L2738 + cmp w3, 3 + beq .L2740 + ldr w0, [x2, 2392] + cmp w0, 1 + bne .L2741 +.L2740: + add x1, x19, :lo12:.LANCHOR4 + mov w0, 1 + strb w0, [x1, 792] +.L2741: + add x1, x20, :lo12:.LANCHOR2 + ldr w0, [x1, 2096] + cbz w0, .L2738 + ldr w0, [x1, 2444] + cmp w0, 39 + bhi .L2738 + add x1, x19, :lo12:.LANCHOR4 + mov w0, 1 + strb w0, [x1, 792] + b .L2738 .size allocate_new_data_superblock, .-allocate_new_data_superblock .align 2 .global FtlReadRefresh .type FtlReadRefresh, %function FtlReadRefresh: + adrp x0, .LANCHOR4 + add x4, x0, :lo12:.LANCHOR4 + add x2, x4, 1152 + mov x1, x0 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr w3, [x2, 80] + cbz w3, .L2760 + ldr w1, [x0, 2924] + ldr w3, [x2, 84] + cmp w3, w1 + bcs .L2761 stp x29, x30, [sp, -112]! - adrp x1, .LANCHOR5 - add x3, x1, :lo12:.LANCHOR5 add x29, sp, 0 - add x2, x3, 640 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x19, .LANCHOR2 - ldr w0, [x2,80] - cbz w0, .L2825 - add x0, x19, :lo12:.LANCHOR2 - ldr w4, [x2,84] - ldr w1, [x0,2924] - cmp w4, w1 - bcs .L2826 + stp x19, x20, [sp, 16] + mov x20, x4 + mov x19, x0 + stp x21, x22, [sp, 32] mov w21, 2048 - mov x20, x3 -.L2831: - add x22, x20, 640 - add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x22,84] - ldr w1, [x1,2924] +.L2766: + add x22, x20, 1152 + ldr w1, [x19, 2924] + ldr w0, [x22, 84] cmp w0, w1 - bcs .L2830 + bcc .L2762 +.L2765: + ldp x19, x20, [sp, 16] + mov w0, -1 + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 112 + ret +.L2762: add x1, x29, 52 mov w2, 0 bl log2phys - ldr w0, [x22,84] - ldr w1, [x29,52] + ldr w0, [x22, 84] + ldr w1, [x29, 52] add w0, w0, 1 - str w0, [x22,84] + str w0, [x22, 84] cmn w1, #1 - beq .L2829 - str w1, [x29,60] + beq .L2764 + str w0, [x29, 80] + add x0, x29, 112 + str w1, [x29, 60] mov w2, 0 - str w0, [x29,80] + stp xzr, xzr, [x29, 64] mov w1, 1 - add x0, x29, 56 - str xzr, [x29,64] - str xzr, [x29,72] - str wzr, [x29,56] + str wzr, [x0, -56]! bl FlashReadPages - ldr w0, [x29,56] + ldr w0, [x29, 56] cmp w0, 256 - bne .L2830 - ldr w0, [x29,52] - lsr x0, x0, 10 + bne .L2765 + ldr w0, [x29, 52] + lsr w0, w0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L2830: - mov w0, -1 - b .L2833 -.L2829: + b .L2765 +.L2764: subs w21, w21, #1 - bne .L2831 - b .L2830 -.L2826: - ldr w0, [x0,2424] - str wzr, [x2,80] - str wzr, [x2,84] - str w0, [x2,76] - b .L2840 -.L2825: - add x19, x19, :lo12:.LANCHOR2 + bne .L2766 + b .L2765 +.L2761: + ldr w0, [x0, 2424] + stp w0, wzr, [x2, 76] + str wzr, [x2, 84] +.L2773: + mov w0, 0 + ret +.L2760: + ldr w3, [x0, 2440] mov w5, 10000 - mov w8, 63 - ldr w6, [x2,76] - ldr w3, [x19,2440] - ldr w7, [x19,2424] + mov w6, 31 + ldr w7, [x2, 76] cmp w3, w5 - mov w5, 31 - csel w8, w5, w8, hi - add w5, w7, 1048576 - cmp w6, w5 - ldr w4, [x19,2924] - adrp x5, .LANCHOR4 - bhi .L2835 - mov w9, 1000 + mov w5, 63 + csel w6, w6, w5, hi + ldr w5, [x0, 2424] + add w8, w5, 1048576 + cmp w7, w8 + bhi .L2770 + ldr w0, [x0, 2924] + mov w8, 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 .L2835 - add x3, x5, :lo12:.LANCHOR4 - ldrh w3, [x3,724] - tst w8, w3 - bne .L2833 - ldr w2, [x2,100] - cmp w2, w3 - beq .L2833 -.L2835: - add x5, x5, :lo12:.LANCHOR4 - add x0, x1, :lo12:.LANCHOR5 - ldrh w1, [x5,724] - str w1, [x0,740] - mov w1, 1 - str wzr, [x0,724] - str w1, [x0,720] - str w7, [x0,716] -.L2840: - mov w0, 0 -.L2833: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 112 - ret + mul w0, w0, w8 + udiv w0, w0, w3 + add w0, w0, w7 + cmp w5, w0 + bhi .L2770 + ldrh w0, [x4, 724] + tst w6, w0 + bne .L2773 + ldr w2, [x2, 100] + cmp w0, w2 + beq .L2773 +.L2770: + add x0, x1, :lo12:.LANCHOR4 + add x1, x0, 1152 + ldrh w0, [x0, 724] + str w0, [x1, 100] + str w5, [x1, 76] + mov w0, 1 + str wzr, [x1, 84] + str w0, [x1, 80] + b .L2773 .size FtlReadRefresh, .-FtlReadRefresh .align 2 .global ftl_do_gc .type ftl_do_gc, %function ftl_do_gc: - stp x29, x30, [sp, -160]! - mov w2, 0 + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - add x4, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w3, [x4,2928] - cbnz w3, .L2994 - adrp x3, .LANCHOR1 - add x3, x3, :lo12:.LANCHOR1 - ldr w20, [x3,3448] - cmp w20, 1 - bne .L2994 - ldr w4, [x4,2448] - cbnz w4, .L2994 - adrp x23, .LANCHOR4 - add x4, x23, :lo12:.LANCHOR4 - ldrh w5, [x4,760] - cmp w5, 47 - bls .L2994 - mov w24, w1 - ldrh w1, [x3,3452] - str w0, [x29,132] + add x3, x19, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w2, [x3, 2928] + cbnz w2, .L2878 + adrp x2, .LANCHOR1 + add x2, x2, :lo12:.LANCHOR1 + ldr w21, [x2, 3448] + cmp w21, 1 + bne .L2878 + ldr w3, [x3, 2448] + cbnz w3, .L2878 + adrp x20, .LANCHOR4 + add x3, x20, :lo12:.LANCHOR4 + ldrh w4, [x3, 760] + cmp w4, 47 + bls .L2878 + mov w23, w1 + str w0, [x29, 124] + ldrh w1, [x2, 3452] mov w0, 65535 cmp w1, w0 - bne .L2843 -.L2846: + bne .L2781 +.L2784: add x0, x19, :lo12:.LANCHOR2 mov w2, 65535 - ldrh w4, [x0,2474] + ldrh w4, [x0, 2474] cmp w4, w2 - bne .L2844 - b .L2845 -.L2843: - ldrh w1, [x4,880] - cmp w1, w0 - beq .L2846 - mov w0, w20 - bl FtlGcFreeTempBlock - mov w2, w20 - cbz w0, .L2846 - b .L2994 -.L2844: - ldrh w1, [x0,2472] - cmp w1, w2 - bne .L2845 - ldrh w3, [x0,2476] - cmp w3, w1 - beq .L2845 - ldrh w2, [x0,2478] - cmp w2, w1 - beq .L2845 - mov w1, -1 - strh w4, [x0,2472] - strh w3, [x0,2474] - strh w2, [x0,2476] - strh w1, [x0,2478] -.L2845: + bne .L2782 +.L2783: add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x29,132] - adrp x20, .LANCHOR5 + ldr w2, [x29, 124] cmp w2, 1 - ldr w0, [x1,2464] + ldr w0, [x1, 2464] add w0, w0, 1 add w0, w0, w2, lsl 7 - str w0, [x1,2464] - bne .L2857 - ldr w2, [x1,2096] - cbnz w2, .L2848 - ldrb w1, [x1,1220] - cbz w1, .L2857 -.L2848: - add x21, x19, :lo12:.LANCHOR2 - ldr w1, [x21,2444] + str w0, [x1, 2464] + bne .L2785 + ldr w2, [x1, 2096] + cbnz w2, .L2786 + ldrb w1, [x1, 1220] + cbz w1, .L2785 +.L2786: + add x22, x19, :lo12:.LANCHOR2 + ldr w1, [x22, 2444] cmp w1, 39 - bhi .L2857 - add x22, x20, :lo12:.LANCHOR5 - ldrh w1, [x22,1384] - add w0, w0, w1 - str w0, [x21,2464] + bhi .L2785 + add x25, x20, :lo12:.LANCHOR4 + mov w21, 65535 + ldrh w1, [x25, 1896] + add w0, w1, w0 + str w0, [x22, 2464] bl FtlGcReFreshBadBlk - ldrh w0, [x22,592] - mov w1, 65535 - cmp w0, w1 - bne .L2857 - ldrh w1, [x21,2472] + ldrh w0, [x25, 1104] + cmp w0, w21 + bne .L2787 + ldrh w1, [x22, 2472] cmp w1, w0 - bne .L2857 - ldr w0, [x21,2464] + bne .L2874 + ldr w0, [x22, 2464] cmp w0, 1024 - bhi .L2849 - add x0, x23, :lo12:.LANCHOR4 - ldrh w0, [x0,776] + bhi .L2789 + ldrh w0, [x25, 776] cmp w0, 63 - bhi .L2857 -.L2849: - add x1, x23, :lo12:.LANCHOR4 - add x0, x20, :lo12:.LANCHOR5 - ldrh w3, [x1,776] + bhi .L2874 +.L2789: add x1, x19, :lo12:.LANCHOR2 - strh wzr, [x0,1384] - ldrh w2, [x1,2482] + add x0, x20, :lo12:.LANCHOR4 + ldrh w2, [x1, 2482] + ldrh w3, [x0, 776] + strh wzr, [x0, 1896] add w2, w2, 64 cmp w3, w2 - bgt .L2857 - str wzr, [x1,2464] - ldr w1, [x1,2444] - cbnz w1, .L2850 + bgt .L2874 + str wzr, [x1, 2464] + ldr w1, [x1, 2444] + cbnz w1, .L2790 mov w1, 6 - b .L3016 -.L2850: - cmp w1, 5 - bhi .L2851 - mov w1, 18 -.L3016: - strh w1, [x0,1384] -.L2851: +.L2927: + strh w1, [x0, 1896] +.L2791: mov w0, 32 - mov w27, 65535 bl List_get_gc_head_node - uxth w25, w0 - cmp w25, w27 - beq .L2856 + and w5, w0, 65535 + mov w8, 65535 + cmp w5, w8 + beq .L2795 add x22, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,2484] - cbz w0, .L2853 - ldrh w1, [x22,2346] - ubfiz x25, x25, 1, 16 - ldrh w3, [x22,2276] - ldr x26, [x22,2712] + ldrh w0, [x22, 2484] + cbz w0, .L2793 + ldrh w1, [x22, 2346] + ubfiz x5, x5, 1, 16 + ldrh w3, [x22, 2276] + ldr x7, [x22, 2712] mul w1, w1, w3 - ldrh w2, [x26,x25] + ldrh w2, [x7, x5] add w1, w1, 1 cmp w2, w1 - bgt .L2856 - add w1, w0, 1 - str wzr, [x22,2452] - uxth w1, w1 - strh w1, [x22,2484] - str x1, [x29,136] + bgt .L2795 + add w6, w0, 1 + str wzr, [x22, 2452] + and w6, w6, 65535 + strh w6, [x22, 2484] bl List_get_gc_head_node - uxth w21, w0 - cmp w21, w27 - ldr x1, [x29,136] - beq .L2856 - ubfiz x27, x21, 1, 16 - adrp x0, .LC157 - ldrh w4, [x26,x25] - add x0, x0, :lo12:.LC157 + and w21, w0, 65535 + cmp w21, w8 + beq .L2795 + ubfiz x25, x21, 1, 16 + ldrh w4, [x7, x5] mov w2, w21 - ldrh w3, [x26,x27] + mov w1, w6 + adrp x0, .LC157 + add x0, x0, :lo12:.LC157 + ldrh w3, [x7, x25] bl printk - ldrh w0, [x22,2484] + ldrh w0, [x22, 2484] cmp w0, 40 - bls .L2854 - ldr x0, [x22,2712] - ldrh w0, [x0,x27] + bls .L2794 + ldr x0, [x22, 2712] + ldrh w0, [x0, x25] cmp w0, 32 - bls .L2854 - strh wzr, [x22,2484] -.L2854: - add x0, x20, :lo12:.LANCHOR5 + bls .L2794 + strh wzr, [x22, 2484] +.L2794: + add x0, x20, :lo12:.LANCHOR4 mov w1, 6 - strh w1, [x0,1384] - b .L2858 -.L2853: - mov w0, 1 - strh w0, [x22,2484] -.L2856: - bl GetSwlReplaceBlock - uxth w21, w0 + strh w1, [x0, 1896] +.L2787: + ldr w1, [x29, 124] mov w0, 65535 - cmp w21, w0 - bne .L2858 - add x0, x20, :lo12:.LANCHOR5 - strh wzr, [x0,1384] -.L2857: - add x1, x20, :lo12:.LANCHOR5 - mov w0, 65535 - ldrh w21, [x1,592] - cmp w21, w0 - bne .L3021 - add x26, x23, :lo12:.LANCHOR4 - ldrh w0, [x26,880] - cmp w0, w21 - beq .L3022 -.L2858: - mov w0, 65535 - cmp w21, w0 - cset w0, eq - cbz w0, .L2871 - ldr w1, [x29,132] - cbnz w1, .L2871 - add x0, x23, :lo12:.LANCHOR4 - mov w22, 1 - ldrh w0, [x0,776] + cmp w1, 0 + ccmp w21, w0, 0, eq + bne .L2809 + add x0, x20, :lo12:.LANCHOR4 + ldrh w0, [x0, 776] cmp w0, 24 - bhi .L2872 + bhi .L2886 add x1, x19, :lo12:.LANCHOR2 cmp w0, 16 - ldrh w22, [x1,2344] - bls .L2873 + ldrh w22, [x1, 2344] + bls .L2811 lsr w22, w22, 5 - b .L2872 -.L2873: - cmp w0, 12 - bls .L2874 - lsr w22, w22, 4 - b .L2872 -.L2874: - cmp w0, 8 - bls .L2872 - lsr w22, w22, 2 -.L2872: +.L2810: add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,2480] + ldrh w2, [x1, 2480] cmp w2, w0 - bcs .L2876 - add x3, x23, :lo12:.LANCHOR4 + bcs .L2814 + add x3, x20, :lo12:.LANCHOR4 mov w2, 65535 - ldrh w0, [x3,880] + ldrh w0, [x3, 880] cmp w0, w2 - bne .L2877 - ldrh w2, [x1,2472] + bne .L2815 + ldrh w2, [x1, 2472] cmp w2, w0 - bne .L2877 - add x0, x20, :lo12:.LANCHOR5 - ldrh w2, [x0,1384] - cbnz w2, .L2878 - ldr w0, [x1,2924] - ldr w3, [x3,1068] - add w0, w0, w0, lsl 1 - cmp w3, w0, lsr 2 - bcs .L2879 -.L2878: - add x20, x20, :lo12:.LANCHOR5 - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x20,588] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - b .L3019 -.L2879: - mov w0, 18 -.L3019: - add x19, x19, :lo12:.LANCHOR2 - strh w0, [x1,2480] - str wzr, [x19,2452] - b .L2994 -.L2877: - add x0, x20, :lo12:.LANCHOR5 - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,588] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x1,2480] -.L2876: - cmp w24, 2 - bhi .L2948 - add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2096] - cbz w0, .L2948 - add w22, w22, 1 - uxth w22, w22 - b .L2948 -.L2871: - add x2, x23, :lo12:.LANCHOR4 - mov w3, 65535 - ldrh w1, [x2,880] - cmp w1, w3 - bne .L2883 - cbz w0, .L2883 - add x0, x19, :lo12:.LANCHOR2 - ldrh w3, [x0,2472] - cmp w3, w1 - bne .L2883 - add x3, x20, :lo12:.LANCHOR5 - ldrh w4, [x3,592] - cmp w4, w1 - beq .L2884 -.L2889: - mov w21, 65535 - b .L2883 -.L2884: - ldrh w4, [x2,776] - ldrh w1, [x0,2480] - str wzr, [x0,2452] - cmp w4, w1 - bls .L2885 - ldrh w1, [x3,1384] - cbnz w1, .L2886 - ldr w1, [x0,2924] - ldr w2, [x2,1068] + bne .L2815 + ldrh w0, [x3, 1896] + cbnz w0, .L2816 + ldr w2, [x1, 2924] + ldr w3, [x3, 1068] + add w2, w2, w2, lsl 1 + cmp w3, w2, lsr 2 + bcs .L2817 +.L2816: + add x20, x20, :lo12:.LANCHOR4 + add x2, x19, :lo12:.LANCHOR2 + ldrh w1, [x20, 1096] add w1, w1, w1, lsl 1 - cmp w2, w1, lsr 2 - bcs .L2887 -.L2886: - add x0, x20, :lo12:.LANCHOR5 + asr w1, w1, 2 + strh w1, [x2, 2480] +.L2818: + add x19, x19, :lo12:.LANCHOR2 + str wzr, [x19, 2452] +.L2779: + 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], 144 + ret +.L2781: + ldrh w1, [x3, 880] + cmp w1, w0 + beq .L2784 + mov w0, w21 + bl FtlGcFreeTempBlock + cbz w0, .L2784 + mov w0, w21 + b .L2779 +.L2782: + ldrh w1, [x0, 2472] + cmp w1, w2 + bne .L2783 + ldrh w3, [x0, 2476] + cmp w3, w1 + beq .L2783 + ldrh w2, [x0, 2478] + cmp w2, w1 + beq .L2783 + mov w1, -1 + strh w4, [x0, 2472] + strh w3, [x0, 2474] + strh w2, [x0, 2476] + strh w1, [x0, 2478] + b .L2783 +.L2790: + cmp w1, 5 + bhi .L2791 + mov w1, 18 + b .L2927 +.L2793: + mov w0, 1 + strh w0, [x22, 2484] +.L2795: + bl GetSwlReplaceBlock + and w21, w0, 65535 + mov w0, 65535 + cmp w21, w0 + bne .L2787 + add x0, x20, :lo12:.LANCHOR4 + strh wzr, [x0, 1896] +.L2785: + add x0, x20, :lo12:.LANCHOR4 + mov w21, 65535 + ldrh w0, [x0, 1104] + cmp w0, w21 + bne .L2787 +.L2874: + add x25, x20, :lo12:.LANCHOR4 + mov w0, 65535 + ldrh w21, [x25, 880] + cmp w21, w0 + bne .L2881 + add x26, x19, :lo12:.LANCHOR2 + ldrh w27, [x26, 2472] + cmp w27, w21 + bne .L2787 + ldrh w0, [x25, 776] + mov w1, 1024 + cmp w0, 24 + mov w0, 5120 + csel w0, w0, w1, cc + ldr w1, [x26, 2464] + cmp w1, w0 + bls .L2787 + strh wzr, [x25, 1896] + str wzr, [x26, 2464] + bl GetSwlReplaceBlock + and w21, w0, 65535 + cmp w21, w27 + bne .L2884 + ldrh w1, [x25, 776] + ldrh w0, [x26, 2482] + cmp w1, w0 + bcs .L2798 + mov w0, 64 + bl List_get_gc_head_node + and x0, x0, 65535 + cmp w0, w21 + beq .L2800 + ldr w1, [x26, 2388] + cbnz w1, .L2801 + ldrh w1, [x26, 2296] + cmp w1, 3 + beq .L2801 + ldr w1, [x26, 2392] + cbnz w1, .L2801 + ldr w1, [x26, 2096] + cbnz w1, .L2801 + ldrb w1, [x26, 1220] + cbz w1, .L2802 +.L2801: add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,588] + ldr x2, [x1, 2712] + ldrh w3, [x2, x0, lsl 1] + ldrh w0, [x1, 2346] + ldrh w2, [x1, 2276] + ldrh w1, [x1, 2296] + cmp w1, 3 + mul w2, w2, w0 + lsr w0, w0, 1 + csel w0, w0, wzr, eq + add w0, w0, w2 + cmp w3, w0 + bgt .L2804 + mov w0, 0 + bl List_get_gc_head_node + add x1, x19, :lo12:.LANCHOR2 + add x2, x20, :lo12:.LANCHOR4 + and w22, w0, 65535 + ldr w0, [x1, 2924] + ldr w2, [x2, 1068] + add w0, w0, w0, lsl 1 + cmp w2, w0, lsr 2 + bls .L2805 + mov w0, 128 +.L2928: + strh w0, [x1, 2482] +.L2806: + mov w0, 65535 + cmp w22, w0 + beq .L2800 +.L2797: + add x1, x19, :lo12:.LANCHOR2 + ubfiz x2, x22, 1, 32 + add x0, x20, :lo12:.LANCHOR4 + mov w21, w22 + ldr x4, [x1, 2696] + ldr x3, [x1, 2712] + ldrh w5, [x1, 2480] + mov w1, w22 + ldrh w4, [x4, x2] + ldrh w3, [x3, x2] + ldrh w2, [x0, 776] + adrp x0, .LC158 + add x0, x0, :lo12:.LC158 + bl printk + b .L2800 +.L2805: + mov w0, 160 + b .L2928 +.L2804: + add x0, x19, :lo12:.LANCHOR2 + mov w1, 128 +.L2929: + strh w1, [x0, 2482] +.L2800: + bl FtlGcReFreshBadBlk + b .L2787 +.L2802: + ldr x1, [x26, 2712] + ldrh w0, [x1, x0, lsl 1] + cmp w0, 7 + bhi .L2807 + mov w0, 0 + bl List_get_gc_head_node + and w22, w0, 65535 + add x0, x19, :lo12:.LANCHOR2 + mov w1, 128 + strh w1, [x0, 2482] + b .L2806 +.L2807: + add x0, x19, :lo12:.LANCHOR2 + mov w1, 64 + b .L2929 +.L2798: + mov w0, 80 + strh w0, [x26, 2482] + b .L2800 +.L2884: + mov w22, w21 + b .L2797 +.L2881: + mov w21, w0 + b .L2787 +.L2811: + cmp w0, 12 + bls .L2812 + lsr w22, w22, 4 + b .L2810 +.L2812: + cmp w0, 8 + bls .L2810 + lsr w22, w22, 2 + b .L2810 +.L2886: + mov w22, 1 + b .L2810 +.L2817: + mov w2, 18 + strh w2, [x1, 2480] + b .L2818 +.L2815: + add x0, x20, :lo12:.LANCHOR4 + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x0, 1096] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1,2480] - b .L2888 -.L2887: - mov w1, 18 - strh w1, [x0,2480] + strh w0, [x1, 2480] +.L2814: + add x0, x19, :lo12:.LANCHOR2 + ldr w0, [x0, 2096] + cbz w0, .L2888 + cmp w23, 2 + bhi .L2888 + add w22, w22, 1 + and w22, w22, 65535 .L2888: + mov w21, 65535 + b .L2820 +.L2809: + add x1, x20, :lo12:.LANCHOR4 + ldrh w3, [x1, 880] + cmp w3, w0 + bne .L2821 + add x0, x19, :lo12:.LANCHOR2 + ldrh w2, [x0, 2472] + cmp w2, w3 + bne .L2821 + cmp w21, w2 + bne .L2821 + ldrh w2, [x1, 1104] + cmp w2, w21 + bne .L2821 + ldrh w3, [x1, 776] + ldrh w2, [x0, 2480] + str wzr, [x0, 2452] + cmp w3, w2 + bls .L2823 + ldrh w2, [x1, 1896] + cbnz w2, .L2824 + ldr w2, [x0, 2924] + ldr w1, [x1, 1068] + add w2, w2, w2, lsl 1 + cmp w1, w2, lsr 2 + bcs .L2825 +.L2824: + add x0, x20, :lo12:.LANCHOR4 + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x0, 1096] + add w0, w0, w0, lsl 1 + asr w0, w0, 2 + strh w0, [x1, 2480] +.L2826: bl FtlReadRefresh mov w0, 0 bl List_get_gc_head_node - ubfiz x0, x0, 1, 16 add x1, x19, :lo12:.LANCHOR2 - ldr x1, [x1,2712] - ldrh w0, [x1,x0] - cmp w0, 4 - bls .L2885 - add x20, x20, :lo12:.LANCHOR5 - b .L3020 -.L2885: - add x24, x20, :lo12:.LANCHOR5 - ldrh w0, [x24,1384] - cbnz w0, .L2889 - ldrh w21, [x24,588] - add x22, x19, :lo12:.LANCHOR2 - add w1, w21, w21, lsl 1 - asr w1, w1, 2 - strh w1, [x22,2480] - bl List_get_gc_head_node ubfiz x0, x0, 1, 16 - ldr x1, [x22,2712] - ldrh w2, [x22,2276] - ldrh w1, [x1,x0] - ldrh w0, [x22,2346] + ldr x1, [x1, 2712] + ldrh w0, [x1, x0] + cmp w0, 4 + bls .L2823 + add x20, x20, :lo12:.LANCHOR4 +.L2930: + ldrh w0, [x20, 1896] + b .L2779 +.L2825: + mov w1, 18 + strh w1, [x0, 2480] + b .L2826 +.L2823: + add x22, x20, :lo12:.LANCHOR4 + ldrh w0, [x22, 1896] + cbnz w0, .L2821 + ldrh w5, [x22, 1096] + add x6, x19, :lo12:.LANCHOR2 + add w0, w5, w5, lsl 1 + asr w0, w0, 2 + strh w0, [x6, 2480] + mov w0, 0 + bl List_get_gc_head_node + ldr x1, [x6, 2712] + ubfiz x0, x0, 1, 16 + ldrh w2, [x6, 2276] + ldrh w1, [x1, x0] + ldrh w0, [x6, 2346] mul w0, w0, w2 mov w2, 2 sdiv w0, w0, w2 cmp w1, w0 - ble .L2890 - add x0, x23, :lo12:.LANCHOR4 - sub w21, w21, #1 - ldrh w0, [x0,776] - cmp w0, w21 - blt .L2890 + ble .L2828 + ldrh w0, [x22, 776] + sub w5, w5, #1 + cmp w0, w5 + blt .L2828 bl FtlReadRefresh - ldrh w2, [x24,1384] - b .L2994 -.L2890: - cbnz w1, .L2889 + ldrh w0, [x22, 1896] + b .L2779 +.L2828: + cbnz w1, .L2821 + add x20, x20, :lo12:.LANCHOR4 mov w0, -1 - add x23, x23, :lo12:.LANCHOR4 bl decrement_vpc_count - ldrh w2, [x23,776] - add w2, w2, 1 - b .L2994 -.L2883: + ldrh w0, [x20, 776] + add w0, w0, 1 + b .L2779 +.L2821: add x0, x19, :lo12:.LANCHOR2 - mov w22, 2 - ldr w0, [x0,2096] - cmp w0, wzr - csinc w22, w22, wzr, ne - b .L2882 -.L2948: - mov w21, 65535 -.L2882: - add x0, x20, :lo12:.LANCHOR5 + ldr w0, [x0, 2096] + cmp w0, 0 + cset w22, ne + add w22, w22, 1 +.L2820: + add x0, x20, :lo12:.LANCHOR4 mov w2, 65535 - ldrh w1, [x0,592] + ldrh w1, [x0, 1104] cmp w1, w2 - bne .L2892 + bne .L2830 cmp w21, w1 - beq .L2893 - strh w21, [x0,592] - b .L2894 -.L2893: - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,2472] - cmp w0, w21 - beq .L2894 - ubfiz x0, x0, 1, 16 - ldr x2, [x1,2712] - ldrh w0, [x2,x0] - cbnz w0, .L2895 - mov w0, -1 - strh w0, [x1,2472] -.L2895: - add x1, x19, :lo12:.LANCHOR2 - add x0, x20, :lo12:.LANCHOR5 - ldrh w2, [x1,2472] - strh w2, [x0,592] - mov w0, -1 - strh w0, [x1,2472] -.L2894: - add x24, x20, :lo12:.LANCHOR5 + beq .L2831 + strh w21, [x0, 1104] +.L2832: + add x5, x20, :lo12:.LANCHOR4 mov w1, 65535 - ldrh w0, [x24,592] - strb wzr, [x24,600] + ldrh w0, [x5, 1104] + strb wzr, [x5, 1112] cmp w0, w1 - beq .L2892 + beq .L2830 bl IsBlkInGcList - cbz w0, .L2897 + cbz w0, .L2835 mov w0, -1 - strh w0, [x24,592] -.L2897: + strh w0, [x5, 1104] +.L2835: add x0, x19, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L2898 - add x0, x20, :lo12:.LANCHOR5 - add x24, x0, 592 - ldrh w0, [x0,592] + ldrb w0, [x0, 1220] + cbz w0, .L2836 + add x0, x20, :lo12:.LANCHOR4 + add x3, x0, 1104 + ldrh w0, [x0, 1104] bl ftl_get_blk_mode - strb w0, [x24,8] -.L2898: - add x24, x20, :lo12:.LANCHOR5 + strb w0, [x3, 8] +.L2836: + add x12, x20, :lo12:.LANCHOR4 mov w0, 65535 - add x25, x24, 592 - ldrh w1, [x24,592] + add x13, x12, 1104 + ldrh w1, [x12, 1104] cmp w1, w0 - beq .L2892 - mov x0, x25 + beq .L2830 + mov x0, x13 bl make_superblock - strh wzr, [x24,594] add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x24,592] - strb wzr, [x24,598] - strh wzr, [x24,1386] - ldr x0, [x0,2712] - ldrh w0, [x0,x1,lsl 1] - strh w0, [x24,1388] -.L2892: - add x0, x20, :lo12:.LANCHOR5 - add x1, x23, :lo12:.LANCHOR4 - ldrh w0, [x0,592] - ldrh w2, [x1,784] - cmp w2, w0 - beq .L2899 - ldrh w2, [x1,832] - cmp w2, w0 - beq .L2899 - ldrh w1, [x1,880] - cmp w1, w0 - bne .L2900 -.L2899: - add x0, x20, :lo12:.LANCHOR5 - mov w1, -1 - strh w1, [x0,592] -.L2900: - add x25, x20, :lo12:.LANCHOR5 -.L2933: - ldrh w0, [x25,592] - mov w1, 65535 + ldrh w1, [x12, 1104] + strh wzr, [x12, 1106] + strb wzr, [x12, 1110] + ldr x0, [x0, 2712] + strh wzr, [x12, 1898] + ldrh w0, [x0, x1, lsl 1] + strh w0, [x12, 1900] +.L2830: + add x0, x20, :lo12:.LANCHOR4 + ldrh w1, [x0, 1104] + ldrh w2, [x0, 784] + cmp w2, w1 + beq .L2837 + ldrh w2, [x0, 832] + cmp w2, w1 + beq .L2837 + ldrh w0, [x0, 880] cmp w0, w1 - bne .L2901 - add x0, x19, :lo12:.LANCHOR2 - str wzr, [x0,2452] -.L2902: - add x26, x19, :lo12:.LANCHOR2 - ldrh w24, [x26,2484] - mov w0, w24 - bl List_get_gc_head_node - uxth w27, w0 - mov w0, 65535 - strh w27, [x25,592] - cmp w27, w0 - bne .L2903 - strh wzr, [x26,2484] - mov w2, 8 - b .L2994 -.L2903: - mov w0, w27 - add w24, w24, 1 - bl IsBlkInGcList - cbz w0, .L2904 - strh w24, [x26,2484] - b .L2902 -.L2904: - ldrh w5, [x26,2276] - ubfiz x1, x27, 1, 16 - ldrh w0, [x26,2344] - uxth w24, w24 - ldr x2, [x26,2712] - mov w3, 2 - strh w24, [x26,2484] - mul w0, w0, w5 - ldrh w4, [x2,x1] - sdiv w5, w0, w3 - cmp w4, w5 - bgt .L2906 - cmp w4, 8 - bls .L2907 - cmp w24, 48 - bls .L2907 - ldrh w4, [x25,1200] - cmp w4, 35 - bhi .L2907 -.L2906: - add x4, x19, :lo12:.LANCHOR2 - strh wzr, [x4,2484] -.L2907: - ldrh w1, [x2,x1] - mov w2, 65535 - cmp w21, w2 - bne .L2908 - cmp w1, w0 - blt .L2908 - add x0, x19, :lo12:.LANCHOR2 - ldrh w2, [x0,2484] - cmp w2, 3 - bhi .L2908 - add x20, x20, :lo12:.LANCHOR5 + bne .L2871 +.L2837: + add x0, x20, :lo12:.LANCHOR4 mov w1, -1 - strh wzr, [x0,2484] - strh w1, [x20,592] -.L3020: - ldrh w2, [x20,1384] - b .L2994 -.L2908: - cbnz w1, .L2909 + strh w1, [x0, 1104] +.L2871: + add x25, x20, :lo12:.LANCHOR4 + mov w0, 65535 + ldrh w26, [x25, 1104] + cmp w26, w0 + bne .L2839 + add x23, x19, :lo12:.LANCHOR2 + mov w27, 2 + str wzr, [x23, 2452] +.L2840: + ldrh w5, [x23, 2484] + mov w0, w5 + bl List_get_gc_head_node + and w6, w0, 65535 + strh w6, [x25, 1104] + cmp w6, w26 + bne .L2841 + strh wzr, [x23, 2484] + mov w0, 8 + b .L2779 +.L2831: + add x1, x19, :lo12:.LANCHOR2 + ldrh w0, [x1, 2472] + cmp w0, w21 + beq .L2832 + ldr x2, [x1, 2712] + ubfiz x0, x0, 1, 16 + ldrh w0, [x2, x0] + cbnz w0, .L2833 + mov w0, -1 + strh w0, [x1, 2472] +.L2833: + add x1, x19, :lo12:.LANCHOR2 + add x0, x20, :lo12:.LANCHOR4 + ldrh w2, [x1, 2472] + strh w2, [x0, 1104] + mov w0, -1 + strh w0, [x1, 2472] + b .L2832 +.L2841: + mov w0, w6 + bl IsBlkInGcList + add w5, w5, 1 + cbz w0, .L2842 + strh w5, [x23, 2484] + b .L2840 +.L2842: + ldrh w4, [x23, 2276] + ubfiz x1, x6, 1, 16 + ldrh w0, [x23, 2344] + and w5, w5, 65535 + ldr x2, [x23, 2712] + strh w5, [x23, 2484] + mul w0, w0, w4 + ldrh w3, [x2, x1] + sdiv w4, w0, w27 + cmp w3, w4 + bgt .L2844 + cmp w5, 48 + bls .L2845 + cmp w3, 8 + bls .L2845 + ldrh w3, [x25, 1712] + cmp w3, 35 + bhi .L2845 +.L2844: + strh wzr, [x23, 2484] +.L2845: + ldrh w1, [x2, x1] + cmp w0, w1 + bgt .L2846 + cmp w21, w26 + bne .L2846 + ldrh w0, [x23, 2484] + cmp w0, 3 + bhi .L2846 + add x20, x20, :lo12:.LANCHOR4 + mov w0, -1 + strh wzr, [x23, 2484] + strh w0, [x20, 1104] + b .L2930 +.L2846: + cbnz w1, .L2847 mov w0, -1 bl decrement_vpc_count - add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x1,2484] + ldrh w0, [x23, 2484] add w0, w0, 1 - strh w0, [x1,2484] - b .L2902 -.L2909: + strh w0, [x23, 2484] + b .L2840 +.L2847: add x0, x19, :lo12:.LANCHOR2 - strb wzr, [x25,600] - ldrb w0, [x0,1220] - cbz w0, .L2910 - mov w0, w27 + add x3, x20, :lo12:.LANCHOR4 + add x3, x3, 1104 + ldrb w0, [x0, 1220] + strb wzr, [x3, 8] + cbz w0, .L2848 + mov w0, w6 bl ftl_get_blk_mode - strb w0, [x25,600] -.L2910: - add x24, x25, 592 - mov x0, x24 + strb w0, [x3, 8] +.L2848: + add x12, x20, :lo12:.LANCHOR4 + add x13, x12, 1104 + mov x0, x13 bl make_superblock - strh wzr, [x25,1386] + ldrh w1, [x12, 1104] add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x25,592] - ldr x0, [x0,2712] - ldrh w0, [x0,x1,lsl 1] - strh w0, [x25,1388] - strh wzr, [x25,594] - strb wzr, [x25,598] -.L2901: - ldr w0, [x29,132] + strh wzr, [x12, 1898] + ldr x0, [x0, 2712] + ldrh w0, [x0, x1, lsl 1] + strh w0, [x12, 1900] + strh wzr, [x12, 1106] + strb wzr, [x12, 1110] +.L2839: + ldr w0, [x29, 124] cmp w0, 1 - bne .L2911 + bne .L2849 bl FtlReadRefresh -.L2911: +.L2849: add x0, x19, :lo12:.LANCHOR2 mov w1, 1 - str w1, [x0,2448] - ldrh w1, [x0,2344] - str w1, [x29,136] - ldrb w1, [x0,1220] - cbz w1, .L2912 - ldrb w1, [x25,600] + str w1, [x0, 2448] + ldrb w1, [x0, 1220] + ldrh w25, [x0, 2344] + cbz w1, .L2850 + add x1, x20, :lo12:.LANCHOR4 + ldrb w1, [x1, 1112] cmp w1, 1 - bne .L2912 - ldrh w0, [x0,2346] - str w0, [x29,136] -.L2912: - ldrh w0, [x25,594] - ldr w2, [x29,136] + bne .L2850 + ldrh w25, [x0, 2346] +.L2850: + add x0, x20, :lo12:.LANCHOR4 + ldrh w0, [x0, 1106] add w1, w0, w22 - cmp w1, w2 - ble .L2913 - sub w22, w2, w0 - uxth w22, w22 -.L2913: - mov w27, 0 -.L2914: - cmp w22, w27, uxth - bls .L2921 - add x1, x25, 592 - add x0, x19, :lo12:.LANCHOR2 - ldrh w4, [x1,2] - ldrh w7, [x0,2276] - mov x0, 0 - add w4, w4, w27 - mov w24, w0 -.L2922: - cmp w7, w0, uxth - bls .L3023 - add x2, x1, x0, lsl 1 - mov w3, 65535 - ldrh w2, [x2,16] - cmp w2, w3 - beq .L2915 - add x6, x19, :lo12:.LANCHOR2 - mov w3, 56 - orr w2, w4, w2, lsl 10 - umull x5, w24, w3 - ldr x6, [x6,2552] - add w24, w24, 1 - add x5, x6, x5 - uxth w24, w24 - str w2, [x5,4] -.L2915: - add x0, x0, 1 - b .L2922 -.L3023: - add x0, x19, :lo12:.LANCHOR2 - ldrb w2, [x25,600] - mov w1, w24 - mov x28, 0 - ldr x0, [x0,2552] + cmp w1, w25 + ble .L2851 + sub w22, w25, w0 + and w22, w22, 65535 +.L2851: + add x24, x20, :lo12:.LANCHOR4 + mov w26, 0 + add x27, x24, 880 +.L2852: + cmp w22, w26, uxth + bls .L2859 + add x1, x19, :lo12:.LANCHOR2 + ldrh w5, [x24, 1106] + add x3, x24, 1120 + mov w23, 0 + add w5, w5, w26 + mov w0, 0 + ldrh w9, [x1, 2276] + mov w8, 65535 + mov w7, 56 + b .L2860 +.L2854: + ldrh w2, [x3] + cmp w2, w8 + beq .L2853 + ldr x6, [x1, 2552] + orr w2, w5, w2, lsl 10 + umaddl x6, w23, w7, x6 + add w23, w23, 1 + and w23, w23, 65535 + str w2, [x6, 4] +.L2853: + add w0, w0, 1 + add x3, x3, 2 + and w0, w0, 65535 +.L2860: + cmp w0, w9 + bne .L2854 + add x3, x19, :lo12:.LANCHOR2 + ldrb w2, [x24, 1112] + mov w1, w23 + mov x28, x3 + ldr x0, [x3, 2552] bl FlashReadPages - add x0, x23, :lo12:.LANCHOR4 - str x0, [x29,120] -.L2917: - cmp w24, w28, uxth - bls .L3024 - add x26, x19, :lo12:.LANCHOR2 - mov x0, 56 - mul x5, x28, x0 - ldr x0, [x26,2552] - add x1, x0, x5 - ldr w0, [x0,x5] + mov w0, 56 + umull x0, w23, w0 + mov x23, 0 + str x0, [x29, 112] +.L2855: + ldr x0, [x29, 112] + cmp x0, x23 + bne .L2858 + add w26, w26, 1 + b .L2852 +.L2858: + ldr x0, [x28, 2552] + add x1, x0, x23 + ldr w0, [x0, x23] cmn w0, #1 - ldr x6, [x1,16] - beq .L2951 - ldrh w0, [x6] + beq .L2856 + ldr x5, [x1, 16] mov w1, 61589 + ldrh w0, [x5] cmp w0, w1 - bne .L2951 - ldr w0, [x6,8] - add x1, x29, 152 + bne .L2856 + ldr w0, [x5, 8] mov w2, 0 - str x5, [x29,104] - str x6, [x29,112] + add x1, x29, 136 + str x5, [x29, 104] bl log2phys - ldr x2, [x26,2552] - ldr x5, [x29,104] - ldr w0, [x29,152] - add x2, x2, x5 - ldr x6, [x29,112] - and w0, w0, 2147483647 - ldr w1, [x2,4] - cmp w0, w1 - bne .L2951 - ldrh w0, [x25,1386] - mov x3, 56 - ldr x1, [x26,2528] - add w0, w0, 1 - strh w0, [x25,1386] - ldr w0, [x25,1168] - str x5, [x29,96] - str x6, [x29,104] - madd x1, x0, x3, x1 - ldr w0, [x2,24] - str x1, [x29,112] - str w0, [x1,24] + ldr x0, [x28, 2552] + ldr w1, [x29, 136] + add x0, x0, x23 + ldr x5, [x29, 104] + and w1, w1, 2147483647 + ldr w2, [x0, 4] + cmp w1, w2 + bne .L2856 + ldrh w1, [x24, 1898] + mov w2, 56 + ldr x7, [x28, 2528] + add w1, w1, 1 + strh w1, [x24, 1898] + ldr w1, [x24, 1680] + ldr w0, [x0, 24] + str w2, [x29, 120] + nop // between mem op and mult-accumulate + umaddl x1, w1, w2, x7 + stp x5, x1, [x29, 96] + str w0, [x1, 24] bl Ftl_get_new_temp_ppa - ldr x1, [x29,112] - mov x2, 56 - ldr x5, [x29,96] - ldr x6, [x29,104] - str w0, [x1,4] - ldr w0, [x25,1168] - ldr x1, [x26,2528] - madd x0, x0, x2, x1 - ldr x1, [x26,2552] - add x1, x1, x5 - ldr x2, [x1,8] - str x2, [x0,8] - ldr x1, [x1,16] - str x1, [x0,16] + ldp x5, x1, [x29, 96] + ldr w2, [x29, 120] + str w0, [x1, 4] + ldr w0, [x24, 1680] + ldr x1, [x28, 2528] + umaddl x0, w0, w2, x1 + ldr x1, [x28, 2552] + add x1, x1, x23 + ldr x2, [x1, 8] + str x2, [x0, 8] + ldr x1, [x1, 16] + str x1, [x0, 16] + ldr w0, [x29, 136] mov w1, 1 - ldr w0, [x29,152] - str w0, [x6,12] - ldr x0, [x29,120] - add x2, x0, 880 - str x2, [x29,112] - ldrh w0, [x0,880] - strh w0, [x6,2] - ldr w0, [x26,2400] - str w0, [x6,4] - ldr w0, [x25,1168] + str w0, [x5, 12] + ldrh w0, [x27] + strh w0, [x5, 2] + ldr w0, [x28, 2400] + str w0, [x5, 4] + ldr w0, [x24, 1680] add w0, w0, 1 - str w0, [x25,1168] - ldr x0, [x26,2552] - add x0, x0, x5 + str w0, [x24, 1680] + ldr x0, [x28, 2552] + add x0, x0, x23 bl FtlGcBufAlloc - ldrb w0, [x26,1220] - cbnz w0, .L2919 - ldr x2, [x29,112] - ldr w1, [x25,1168] - ldrb w0, [x2,7] + ldrb w0, [x28, 1220] + cbnz w0, .L2857 + ldrb w1, [x27, 7] + ldr w0, [x24, 1680] cmp w1, w0 - beq .L2919 - ldrh w0, [x2,4] - cbnz w0, .L2951 -.L2919: + beq .L2857 + ldrh w0, [x27, 4] + cbnz w0, .L2856 +.L2857: bl Ftl_gc_temp_data_write_back - cbz w0, .L2951 - add x20, x20, :lo12:.LANCHOR5 + cbz w0, .L2856 + add x20, x20, :lo12:.LANCHOR4 add x19, x19, :lo12:.LANCHOR2 mov w0, -1 - str wzr, [x19,2448] - strh w0, [x20,592] - strh wzr, [x20,594] - b .L3020 -.L2951: - add x28, x28, 1 - b .L2917 -.L3024: - add w27, w27, 1 - b .L2914 -.L2921: - ldrh w0, [x25,594] + strh wzr, [x20, 1106] + strh w0, [x20, 1104] + str wzr, [x19, 2448] + b .L2930 +.L2856: + add x23, x23, 56 + b .L2855 +.L2859: + add x23, x20, :lo12:.LANCHOR4 + ldrh w0, [x23, 1106] add w22, w22, w0 - ldr w0, [x29,136] - uxth w22, w22 - strh w22, [x25,594] - cmp w22, w0 - bcc .L2923 - ldr w0, [x25,1168] - cbz w0, .L2924 + and w22, w22, 65535 + strh w22, [x23, 1106] + cmp w25, w22 + bhi .L2861 + ldr w0, [x23, 1680] + cbz w0, .L2862 bl Ftl_gc_temp_data_write_back - cbz w0, .L2924 + cbz w0, .L2862 add x19, x19, :lo12:.LANCHOR2 - ldrh w2, [x25,1384] - str wzr, [x19,2448] - b .L2994 -.L2924: - ldrh w22, [x25,1386] - cbnz w22, .L2925 - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x25,592] - ldr x0, [x0,2712] - ldrh w0, [x0,x1,lsl 1] - cbz w0, .L2925 -.L2926: - add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2924] + ldrh w0, [x23, 1896] + str wzr, [x19, 2448] + b .L2779 +.L2862: + add x0, x20, :lo12:.LANCHOR4 + ldrh w1, [x0, 1898] + cbnz w1, .L2863 + add x1, x19, :lo12:.LANCHOR2 + ldrh w3, [x0, 1104] + ldr x2, [x1, 2712] + ldrh w2, [x2, x3, lsl 1] + cbz w2, .L2863 + mov x25, x1 + mov x23, x0 + mov w22, 0 +.L2864: + ldr w0, [x25, 2924] cmp w22, w0 - bcs .L2931 - mov w0, w22 - add x1, x29, 156 + bcs .L2869 mov w2, 0 + add x1, x29, 140 + mov w0, w22 bl log2phys - ldr w0, [x29,156] + ldr w0, [x29, 140] cmn w0, #1 - beq .L2927 + beq .L2865 lsr w0, w0, 10 bl P2V_block_in_plane - ldrh w1, [x25,592] + ldrh w1, [x23, 1104] cmp w1, w0, uxth - bne .L2927 -.L2931: - add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,2924] - cmp w22, w1 - bcc .L2925 - ldrh w1, [x25,592] - ldr x0, [x0,2712] - strh wzr, [x0,x1,lsl 1] - ldrh w0, [x25,592] + bne .L2865 +.L2869: + add x1, x19, :lo12:.LANCHOR2 + ldr w0, [x1, 2924] + cmp w22, w0 + bcc .L2863 + add x0, x20, :lo12:.LANCHOR4 + ldr x1, [x1, 2712] + ldrh w2, [x0, 1104] + strh wzr, [x1, x2, lsl 1] + ldrh w0, [x0, 1104] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush - b .L2925 -.L2927: - add w22, w22, 1 - b .L2926 -.L2925: - mov w0, -1 - strh w0, [x25,592] -.L2923: - add x0, x23, :lo12:.LANCHOR4 - ldrh w0, [x0,776] - cmp w0, 2 - bhi .L2932 - add x0, x19, :lo12:.LANCHOR2 - ldrh w22, [x0,2344] - b .L2933 -.L2932: - add x20, x20, :lo12:.LANCHOR5 - add x19, x19, :lo12:.LANCHOR2 - ldrh w2, [x20,1384] - str wzr, [x19,2448] - cmp w2, wzr - csinc w2, w2, w0, ne - b .L2994 -.L3022: - add x25, x19, :lo12:.LANCHOR2 - ldrh w27, [x25,2472] - cmp w27, w21 - bne .L2858 - ldrh w0, [x26,776] - mov w3, 1024 - ldr w2, [x25,2464] - cmp w0, 24 - mov w0, 5120 - csel w0, w0, w3, cc - cmp w2, w0 - bls .L2858 - str wzr, [x25,2464] - strh wzr, [x1,1384] - bl GetSwlReplaceBlock - uxth w21, w0 - cmp w21, w27 - bne .L2860 - ldrh w1, [x26,776] - ldrh w0, [x25,2482] - cmp w1, w0 - bcs .L2861 - mov w0, 64 - bl List_get_gc_head_node - uxth w0, w0 - cmp w0, w21 - beq .L2870 - ldr w2, [x25,2388] - uxtw x1, w0 - cbnz w2, .L2863 - ldrh w0, [x25,2296] - cmp w0, 3 - beq .L2863 - ldr w0, [x25,2392] - cbnz w0, .L2863 - ldr w0, [x25,2096] - cbnz w0, .L2863 - ldrb w0, [x25,1220] - cbz w0, .L2864 .L2863: - add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,2712] - ldrh w4, [x0,x1,lsl 1] - ldrh w1, [x2,2346] - ldrh w0, [x2,2276] - ldrh w2, [x2,2296] - mul w3, w1, w0 - cmp w2, 3 - mov w0, 0 - lsr w1, w1, 1 - csel w0, w1, w0, eq - add w0, w3, w0 - cmp w4, w0 - bgt .L2866 - mov w0, 0 - bl List_get_gc_head_node - uxth w21, w0 - add x1, x19, :lo12:.LANCHOR2 - add x2, x23, :lo12:.LANCHOR4 - ldr w0, [x1,2924] - ldr w2, [x2,1068] - add w0, w0, w0, lsl 1 - cmp w2, w0, lsr 2 - bls .L2867 - mov w0, 128 - b .L3017 -.L2867: - mov w0, 160 -.L3017: - strh w0, [x1,2482] - b .L2868 -.L2866: - add x0, x19, :lo12:.LANCHOR2 - mov w1, 128 - b .L3018 -.L2864: - ldr x2, [x25,2712] - ldrh w1, [x2,x1,lsl 1] - cmp w1, 7 - bhi .L2869 - bl List_get_gc_head_node - uxth w21, w0 - add x0, x19, :lo12:.LANCHOR2 - mov w1, 128 - strh w1, [x0,2482] - b .L2868 -.L2869: - add x0, x19, :lo12:.LANCHOR2 - mov w1, 64 -.L3018: - strh w1, [x0,2482] - b .L2870 + add x0, x20, :lo12:.LANCHOR4 + mov w1, -1 + strh w1, [x0, 1104] .L2861: - mov w0, 80 - strh w0, [x25,2482] - b .L2870 -.L2868: - mov w0, 65535 - cmp w21, w0 - beq .L2870 -.L2860: - add x5, x19, :lo12:.LANCHOR2 - ubfiz x4, x21, 1, 32 - add x2, x23, :lo12:.LANCHOR4 - adrp x0, .LC158 - add x0, x0, :lo12:.LC158 - mov w1, w21 - ldr x3, [x5,2712] - ldr x6, [x5,2696] - ldrh w2, [x2,776] - ldrh w3, [x3,x4] - ldrh w5, [x5,2480] - ldrh w4, [x6,x4] - bl printk + add x0, x20, :lo12:.LANCHOR4 + ldrh w1, [x0, 776] + cmp w1, 2 + bhi .L2870 + add x0, x19, :lo12:.LANCHOR2 + ldrh w22, [x0, 2344] + b .L2871 +.L2865: + add w22, w22, 1 + b .L2864 .L2870: - bl FtlGcReFreshBadBlk - b .L2858 -.L3021: - mov w21, w0 - b .L2858 -.L2994: - 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 - ret + ldrh w0, [x0, 1896] + add x19, x19, :lo12:.LANCHOR2 + cmp w0, 0 + csinc w0, w0, w1, ne + str wzr, [x19, 2448] + b .L2779 +.L2878: + mov w0, 0 + b .L2779 .size ftl_do_gc, .-ftl_do_gc .align 2 .global FtlCacheWriteBack .type FtlCacheWriteBack, %function FtlCacheWriteBack: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR5 - add x0, x23, :lo12:.LANCHOR5 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x19, .LANCHOR2 - ldr x20, [x0,1392] - add x0, x19, :lo12:.LANCHOR2 - ldr w22, [x0,2928] - cbnz w22, .L3027 - ldr w1, [x0,2496] - cbz w1, .L3027 - ldrb w0, [x0,1220] - cbz w0, .L3029 - ldrb w0, [x20,8] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR2 + add x0, x22, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w24, [x0, 2928] + cbnz w24, .L2933 + ldr w1, [x0, 2496] + cbz w1, .L2933 + ldrb w0, [x0, 1220] + adrp x23, .LANCHOR4 + add x2, x23, :lo12:.LANCHOR4 + ldr x20, [x2, 1904] + cbz w0, .L2958 + ldrb w0, [x20, 8] cmp w0, 1 - cset w22, eq -.L3029: - add x0, x19, :lo12:.LANCHOR2 - ldrb w3, [x20,9] + cset w25, eq +.L2935: + add x19, x22, :lo12:.LANCHOR2 + ldrb w3, [x20, 9] adrp x26, .LC159 - mov w2, w22 - mov w24, 0 + mov w2, w25 + mov w21, 0 mov w27, 56 - ldr x0, [x0,2560] + ldr x0, [x19, 2560] add x26, x26, :lo12:.LC159 bl FlashProgPages -.L3030: - add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,2496] - cmp w24, w1 - bcs .L3048 - umull x21, w24, w27 - ldr x1, [x0,2560] - add x0, x1, x21 - ldr w25, [x1,x21] - cmn w25, #1 - beq .L3051 - ldr w1, [x0,4] - cbz w22, .L3065 - orr w1, w1, -2147483648 -.L3065: - ldr w0, [x0,24] - mov w2, 1 - str w1, [x29,124] - add x25, x19, :lo12:.LANCHOR2 - add x1, x29, 124 - bl log2phys - ldr x0, [x25,2560] - add x21, x0, x21 - ldr x0, [x21,16] - ldr w0, [x0,12] +.L2936: + ldr w0, [x19, 2496] + cmp w21, w0 + bcc .L2943 +.L2955: + add x22, x22, :lo12:.LANCHOR2 + str wzr, [x22, 2496] +.L2933: + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 +.L2958: + mov w25, 0 + b .L2935 +.L2943: + umull x28, w21, w27 + ldr x0, [x19, 2560] + add x3, x0, x28 + ldr w0, [x0, x28] cmn w0, #1 - beq .L3034 - lsr x0, x0, 10 + bne .L2937 + add x19, x22, :lo12:.LANCHOR2 + add x23, x23, :lo12:.LANCHOR4 +.L2938: + ldr w0, [x19, 2496] + cmp w24, w0 + bcc .L2953 + add x20, x22, :lo12:.LANCHOR2 + mov w19, 16386 +.L2956: + ldrh w0, [x20, 2486] + cbz w0, .L2955 + mov w1, 1 + mov w0, w1 + bl ftl_do_gc + subs w19, w19, #1 + bne .L2956 + b .L2955 +.L2937: + ldr w0, [x3, 4] + cbnz w25, .L2939 +.L2972: + str w0, [x29, 108] + mov w2, 1 + ldr w0, [x3, 24] + add x1, x29, 108 + bl log2phys + ldr x0, [x19, 2560] + add x0, x0, x28 + ldr x0, [x0, 16] + ldr w0, [x0, 12] + cmn w0, #1 + beq .L2941 + lsr w0, w0, 10 bl P2V_block_in_plane - uxth w1, w0 + ldr x2, [x19, 2712] + and w1, w0, 65535 ubfiz x0, x1, 1, 16 - ldr x2, [x25,2712] - mov w21, w1 - ldrh w2, [x2,x0] - cbnz w2, .L3035 + mov w28, w1 + ldrh w0, [x2, x0] + cbnz w0, .L2942 + mov w2, 0 mov x0, x26 bl printk -.L3035: +.L2942: + mov w0, w28 + bl decrement_vpc_count +.L2941: + add w21, w21, 1 + b .L2936 +.L2939: + orr w0, w0, -2147483648 + b .L2972 +.L2953: + mov w21, 56 + ldr x0, [x19, 2560] + mov w1, -1 + mov w26, 1 + umull x21, w24, w21 + str w1, [x0, x21] +.L2944: + ldr x0, [x19, 2560] + add x3, x0, x21 + ldr w0, [x0, x21] + cmn w0, #1 + ldr w0, [x3, 4] + beq .L2948 + cbnz w25, .L2949 +.L2973: + str w0, [x29, 108] + mov w2, 1 + ldr w0, [x3, 24] + add x1, x29, 108 + bl log2phys + ldr x0, [x19, 2560] + add x21, x0, x21 + ldr x0, [x21, 16] + ldr w0, [x0, 12] + cmn w0, #1 + beq .L2951 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldr x2, [x19, 2712] + and w1, w0, 65535 + ubfiz x0, x1, 1, 16 + mov w21, w1 + ldrh w0, [x2, x0] + cbnz w0, .L2952 + adrp x0, .LC159 + mov w2, 0 + add x0, x0, :lo12:.LC159 + bl printk +.L2952: mov w0, w21 bl decrement_vpc_count -.L3034: +.L2951: add w24, w24, 1 - b .L3030 -.L3067: - mov w20, 16386 -.L3047: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,2486] - cbz w0, .L3048 - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - subs w20, w20, #1 - bne .L3047 -.L3048: - add x19, x19, :lo12:.LANCHOR2 - str wzr, [x19,2496] - b .L3027 -.L3051: - adrp x26, .LC159 - add x0, x23, :lo12:.LANCHOR5 - mov w24, 0 - mov w27, 56 - str x0, [x29,104] - add x26, x26, :lo12:.LC159 -.L3031: - add x0, x19, :lo12:.LANCHOR2 - ldr w1, [x0,2496] - cmp w24, w1 - bcs .L3067 - umull x21, w24, w27 - ldr x0, [x0,2560] - mov w28, 1 - str w25, [x0,x21] -.L3037: - add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,2560] - add x1, x0, x21 - ldr w0, [x0,x21] - cmn w0, #1 - bne .L3068 - ldr w0, [x1,4] - str x2, [x29,96] - lsr x0, x0, 10 + b .L2938 +.L2948: + lsr w0, w0, 10 bl P2V_block_in_plane ldrh w1, [x20] cmp w1, w0, uxth - ldr x2, [x29,96] - bne .L3038 - ldr x3, [x2,2712] + bne .L2945 + ldr x2, [x19, 2712] ubfiz x1, x1, 1, 16 - ldrh w4, [x20,4] - ldrh w0, [x3,x1] - sub w0, w0, w4 - strh w0, [x3,x1] - strb wzr, [x20,6] - ldrh w0, [x2,2344] - strh w0, [x20,2] - strh wzr, [x20,4] -.L3038: - ldrh w0, [x20,4] - cbnz w0, .L3039 + ldrh w3, [x20, 4] + ldrh w0, [x2, x1] + sub w0, w0, w3 + strh w0, [x2, x1] + strb wzr, [x20, 6] + ldrh w0, [x19, 2344] + strh w0, [x20, 2] + strh wzr, [x20, 4] +.L2945: + ldrh w0, [x20, 4] + cbnz w0, .L2946 mov x0, x20 bl allocate_new_data_superblock -.L3039: - ldr x0, [x29,104] - add x23, x19, :lo12:.LANCHOR2 - add x1, x0, 640 - ldr w0, [x0,736] +.L2946: + ldr w0, [x23, 1248] add w0, w0, 1 - str w0, [x1,96] - ldr x0, [x23,2560] + str w0, [x23, 1248] + ldr x0, [x19, 2560] add x0, x0, x21 - ldr w0, [x0,4] - lsr x0, x0, 10 + ldr w0, [x0, 4] + lsr w0, w0, 10 bl FtlGcMarkBadPhyBlk mov x0, x20 bl get_new_active_ppa - str w0, [x29,124] - ldr x1, [x23,2560] - mov w2, w22 + ldr x1, [x19, 2560] + mov w2, w25 + str w0, [x29, 108] add x1, x1, x21 - str w0, [x1,4] + str w0, [x1, 4] mov w1, 1 - ldr x0, [x23,2560] - ldrb w3, [x20,9] + ldrb w3, [x20, 9] + ldr x0, [x19, 2560] add x0, x0, x21 bl FlashProgPages - ldr x0, [x23,2560] - ldr w0, [x0,x21] + ldr x0, [x19, 2560] + ldr w0, [x0, x21] cmn w0, #1 - bne .L3040 - str w28, [x23,2928] -.L3040: - add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2928] - cbz w0, .L3037 - b .L3027 -.L3068: - ldr w0, [x1,4] - cbz w22, .L3066 + bne .L2947 + str w26, [x19, 2928] +.L2947: + ldr w0, [x19, 2928] + cbz w0, .L2944 + b .L2933 +.L2949: orr w0, w0, -2147483648 -.L3066: - str w0, [x29,124] - mov w2, 1 - ldr w0, [x1,24] - add x28, x19, :lo12:.LANCHOR2 - add x1, x29, 124 - bl log2phys - ldr x0, [x28,2560] - add x21, x0, x21 - ldr x0, [x21,16] - ldr w0, [x0,12] - cmn w0, #1 - beq .L3044 - lsr x0, x0, 10 - bl P2V_block_in_plane - uxth w1, w0 - ubfiz x0, x1, 1, 16 - ldr x2, [x28,2712] - mov w21, w1 - ldrh w2, [x2,x0] - cbnz w2, .L3045 - mov x0, x26 - bl printk -.L3045: - mov w0, w21 - bl decrement_vpc_count -.L3044: - add w24, w24, 1 - b .L3031 -.L3027: - 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 - ret + b .L2973 .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: adrp x0, .LANCHOR2+2928 + ldr w0, [x0, #:lo12:.LANCHOR2+2928] + cbnz w0, .L2977 stp x29, x30, [sp, -32]! - add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2+2928] - str x19, [sp,16] - cbnz w0, .L3070 adrp x0, .LANCHOR1+3448 - ldr w19, [x0,#:lo12:.LANCHOR1+3448] + add x29, sp, 0 + str x19, [sp, 16] + ldr w19, [x0, #:lo12:.LANCHOR1+3448] cmp w19, 1 - bne .L3070 + bne .L2975 bl FtlCacheWriteBack bl l2p_flush mov w0, w19 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3070: +.L2975: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2977: + mov w0, 0 + ret .size FtlSysFlush, .-FtlSysFlush .align 2 .global FtlDeInit .type FtlDeInit, %function FtlDeInit: adrp x0, .LANCHOR1+3448 + ldr w0, [x0, #:lo12:.LANCHOR1+3448] + cmp w0, 1 + bne .L2983 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR1+3448] - cmp w0, 1 - bne .L3072 bl FtlSysFlush -.L3072: mov w0, 0 ldp x29, x30, [sp], 16 ret +.L2983: + mov w0, 0 + ret .size FtlDeInit, .-FtlDeInit .align 2 .global ftl_deinit @@ -19516,96 +19067,94 @@ ftl_cache_flush: .global ftl_discard .type ftl_discard, %function ftl_discard: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - str x23, [sp,48] - add x21, x22, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] + stp x21, x22, [sp, 32] + mov w21, w0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x22, x20, :lo12:.LANCHOR2 + ldr w0, [x22, 1224] + cmp w0, w21 + bls .L3000 mov w19, w1 - mov w20, w0 - ldr w1, [x21,1224] - cmp w19, w1 - bhi .L3083 cmp w0, w1 - bcs .L3083 - add w2, w0, w19 - mov w0, -1 - cmp w2, w1 - bhi .L3076 + bcc .L3000 + add w1, w21, w1 + cmp w0, w1 + bcc .L3000 cmp w19, 31 - bls .L3091 - ldr w0, [x21,2928] - cbnz w0, .L3091 + bhi .L2992 +.L3008: + mov w0, 0 +.L2990: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L2992: + ldr w0, [x22, 2928] + cbnz w0, .L3008 bl FtlCacheWriteBack - ldrh w1, [x21,2350] - udiv w21, w20, w1 - msub w20, w1, w21, w20 - uxth w20, w20 - cbz w20, .L3079 - sub w20, w1, w20 - add w21, w21, 1 - cmp w20, w19 - csel w20, w20, w19, ls - sub w19, w19, w20, uxth -.L3079: + ldrh w0, [x22, 2350] + udiv w22, w21, w0 + msub w21, w0, w22, w21 + ands w21, w21, 65535 + beq .L2994 + sub w21, w0, w21 + add w22, w22, 1 + cmp w21, w19 + csel w21, w21, w19, ls + sub w19, w19, w21, uxth +.L2994: + adrp x21, .LANCHOR4 + add x20, x20, :lo12:.LANCHOR2 + add x21, x21, :lo12:.LANCHOR4 mov w0, -1 - adrp x23, .LANCHOR5 - str w0, [x29,76] -.L3080: - add x20, x22, :lo12:.LANCHOR2 - ldrh w0, [x20,2350] + str w0, [x29, 60] +.L2995: + ldrh w0, [x20, 2350] cmp w19, w0 - bcc .L3092 - mov w0, w21 - add x1, x29, 72 - mov w2, 0 - bl log2phys - ldr w0, [x29,72] - cmn w0, #1 - beq .L3081 - add x1, x23, :lo12:.LANCHOR5 - mov w2, 1 - ldr w0, [x1,1400] - add w0, w0, 1 - str w0, [x1,1400] - ldr w0, [x20,2412] - add x1, x29, 76 - add w0, w0, 1 - str w0, [x20,2412] - mov w0, w21 - bl log2phys - ldr w0, [x29,72] - lsr x0, x0, 10 - bl P2V_block_in_plane - bl decrement_vpc_count -.L3081: - add x0, x22, :lo12:.LANCHOR2 - add w21, w21, 1 - ldrh w0, [x0,2350] - sub w19, w19, w0 - b .L3080 -.L3092: - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldr w1, [x0,1400] + bcs .L2997 + adrp x0, .LANCHOR4 + add x0, x0, :lo12:.LANCHOR4 + ldr w1, [x0, 1912] cmp w1, 32 - bls .L3091 - str wzr, [x0,1400] + bls .L3008 + str wzr, [x0, 1912] bl l2p_flush bl FtlVpcTblFlush -.L3091: - mov w0, 0 - b .L3076 -.L3083: + b .L3008 +.L2997: + mov w2, 0 + add x1, x29, 56 + mov w0, w22 + bl log2phys + ldr w0, [x29, 56] + cmn w0, #1 + beq .L2996 + ldr w0, [x21, 1912] + mov w2, 1 + add x1, x29, 60 + add w0, w0, 1 + str w0, [x21, 1912] + ldr w0, [x20, 2412] + add w0, w0, 1 + str w0, [x20, 2412] + mov w0, w22 + bl log2phys + ldr w0, [x29, 56] + lsr w0, w0, 10 + bl P2V_block_in_plane + bl decrement_vpc_count +.L2996: + ldrh w0, [x20, 2350] + add w22, w22, 1 + sub w19, w19, w0 + b .L2995 +.L3000: mov w0, -1 -.L3076: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L2990 .size ftl_discard, .-ftl_discard .align 2 .global FtlGcFreeTempBlock @@ -19613,220 +19162,214 @@ ftl_discard: FtlGcFreeTempBlock: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - str x27, [sp,80] add x2, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr w3, [x2,2928] - ldrh w1, [x2,2344] - cbnz w3, .L3129 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrh w1, [x2, 2344] + ldr w2, [x2, 2928] + cbz w2, .L3010 +.L3047: + mov w0, 0 +.L3009: + 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], 112 + ret +.L3010: adrp x20, .LANCHOR4 - mov w4, 65535 add x2, x20, :lo12:.LANCHOR4 - ldrh w21, [x2,880] - cmp w21, w4 - bne .L3096 -.L3105: - add x22, x20, :lo12:.LANCHOR4 - adrp x21, .LANCHOR5 - add x23, x21, :lo12:.LANCHOR5 + mov w3, 65535 + ldrh w21, [x2, 880] + cmp w21, w3 + bne .L3012 +.L3021: + add x21, x20, :lo12:.LANCHOR4 mov w0, 65535 - add x24, x22, 880 - ldrh w1, [x22,880] - str wzr, [x23,1192] + add x22, x21, 880 + ldrh w1, [x21, 880] + str wzr, [x21, 1704] cmp w1, w0 - beq .L3129 + beq .L3047 bl FtlCacheWriteBack - mov w25, 12 + mov w23, 0 add x0, x19, :lo12:.LANCHOR2 - ldrb w1, [x24,7] - ldrh w3, [x22,880] - mov w24, 0 - ldrh w4, [x0,2344] - ldr x2, [x0,2712] + ldrb w1, [x22, 7] + ldrh w3, [x21, 880] + mov x22, x0 + mov w26, 12 + ldrh w4, [x0, 2344] + ldr x2, [x0, 2712] mul w1, w1, w4 - strh w1, [x2,x3,lsl 1] - ldrh w2, [x23,1202] - mov x23, x22 - ldr w1, [x0,2404] - add w1, w2, w1 - str w1, [x0,2404] - b .L3106 -.L3096: - cbz w0, .L3099 - adrp x0, .LANCHOR1 - add x0, x0, :lo12:.LANCHOR1 - ldrh w5, [x0,3452] - cmp w5, w4 - beq .L3100 -.L3101: - mov w1, 2 - b .L3099 -.L3100: - strh w3, [x0,3452] - ldrh w0, [x2,776] - cmp w0, 17 - bhi .L3101 -.L3099: - add x0, x20, :lo12:.LANCHOR4 - add x0, x0, 880 - bl FtlGcScanTempBlk - str w0, [x29,108] - cmn w0, #1 - beq .L3102 - add x19, x19, :lo12:.LANCHOR2 - ubfiz x21, x21, 1, 16 - ldr x1, [x19,2696] - ldrh w0, [x1,x21] - cmp w0, 4 - bls .L3103 - sub w0, w0, #5 - strh w0, [x1,x21] - mov w0, 1 - bl FtlEctTblFlush -.L3103: - adrp x0, .LANCHOR5 - add x1, x0, :lo12:.LANCHOR5 - mov x19, x0 - ldr w2, [x1,1192] - cbnz w2, .L3104 - ldr w0, [x1,736] - add w0, w0, 1 - str w0, [x1,736] - ldr w0, [x29,108] - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L3104: - add x0, x19, :lo12:.LANCHOR5 - str wzr, [x0,1192] - mov w0, 1 - b .L3095 -.L3102: - adrp x0, .LANCHOR1+3452 - mov w1, 65535 - ldrh w2, [x0,#:lo12:.LANCHOR1+3452] - mov w0, 1 - cmp w2, w1 - bne .L3095 - b .L3105 -.L3109: - ldr w1, [x22,4] - cmp w0, w1 - bne .L3127 -.L3108: - add w24, w24, 1 - uxth w24, w24 -.L3106: - add x0, x21, :lo12:.LANCHOR5 - ldrh w0, [x0,1202] - cmp w0, w24 - bls .L3130 - add x1, x19, :lo12:.LANCHOR2 - umull x26, w24, w25 - ldr x27, [x1,2512] - ldr w1, [x1,2924] - add x22, x27, x26 - ldr w0, [x22,8] - cmp w0, w1 - bcs .L3127 - add x1, x29, 108 - mov w2, 0 - bl log2phys - ldr w0, [x29,108] - ldr w1, [x27,x26] - cmp w0, w1 - bne .L3109 - lsr x0, x0, 10 - bl P2V_block_in_plane - mov w26, w0 - ldr w0, [x22,8] - add x1, x22, 4 - mov w2, 1 - bl log2phys - mov w0, w26 - b .L3128 -.L3127: - ldrh w0, [x23,880] -.L3128: - bl decrement_vpc_count - b .L3108 -.L3130: + strh w1, [x2, x3, lsl 1] + ldr w2, [x0, 2404] + ldrh w1, [x21, 1714] + add w1, w1, w2 + str w1, [x0, 2404] +.L3022: + ldrh w0, [x21, 1714] + cmp w0, w23 + bhi .L3026 mov w0, -1 bl decrement_vpc_count add x0, x19, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L3111 - add x1, x20, :lo12:.LANCHOR4 + ldrb w0, [x0, 1220] + cbz w0, .L3027 + ldrh w1, [x21, 880] adrp x0, .LC160 add x0, x0, :lo12:.LC160 - ldrh w1, [x1,880] bl printk -.L3111: +.L3027: add x0, x20, :lo12:.LANCHOR4 add x1, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,880] - ldr x1, [x1,2712] + ldrh w0, [x0, 880] + ldr x1, [x1, 2712] ubfiz x2, x0, 1, 16 - ldrh w1, [x1,x2] - cbz w1, .L3112 + ldrh w1, [x1, x2] + cbz w1, .L3028 bl INSERT_DATA_LIST - b .L3113 -.L3112: - bl INSERT_FREE_LIST -.L3113: - add x22, x21, :lo12:.LANCHOR5 - add x23, x20, :lo12:.LANCHOR4 - mov w24, -1 - strh wzr, [x22,1202] - strh w24, [x23,880] - strh wzr, [x22,1200] +.L3029: + add x21, x20, :lo12:.LANCHOR4 + mov w22, -1 + strh wzr, [x21, 1714] + strh w22, [x21, 880] + strh wzr, [x21, 1712] bl l2p_flush bl FtlVpcTblFlush - strh w24, [x22,592] + strh w22, [x21, 1104] add x1, x19, :lo12:.LANCHOR2 - ldr w0, [x1,2096] - cbz w0, .L3114 - ldr w0, [x1,2444] + ldr w0, [x1, 2096] + cbz w0, .L3030 + ldr w0, [x1, 2444] cmp w0, 39 - bhi .L3114 - ldrh w0, [x22,588] - ldrh w2, [x23,776] + bhi .L3030 + ldrh w0, [x21, 1096] + ldrh w2, [x21, 776] cmp w2, w0 - bcs .L3129 - lsl w0, w0, 1 - strh w0, [x1,2480] -.L3129: - mov w0, 0 - b .L3095 -.L3114: - add x21, x21, :lo12:.LANCHOR5 - add x20, x20, :lo12:.LANCHOR4 - ldrh w1, [x21,588] - ldrh w0, [x20,776] - add w2, w1, w1, lsl 1 - cmp w0, w2, lsr 2 - ble .L3129 + bcs .L3047 + ubfiz w0, w0, 1, 15 + strh w0, [x1, 2480] + b .L3047 +.L3012: + cbz w0, .L3015 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + ldrh w4, [x0, 3452] + cmp w4, w3 + beq .L3016 +.L3017: + mov w1, 2 +.L3015: + add x0, x20, :lo12:.LANCHOR4 + add x0, x0, 880 + bl FtlGcScanTempBlk + str w0, [x29, 108] + cmn w0, #1 + beq .L3018 add x19, x19, :lo12:.LANCHOR2 - ldrb w0, [x19,1220] - cbz w0, .L3115 - sub w1, w1, #2 - strh w1, [x19,2480] - b .L3129 -.L3115: - mov w1, 20 - strh w1, [x19,2480] -.L3095: - 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], 112 - ret + ubfiz x21, x21, 1, 16 + ldr x1, [x19, 2696] + ldrh w0, [x1, x21] + cmp w0, 4 + bls .L3019 + sub w0, w0, #5 + strh w0, [x1, x21] + mov w0, 1 + bl FtlEctTblFlush +.L3019: + add x0, x20, :lo12:.LANCHOR4 + ldr w1, [x0, 1704] + cbnz w1, .L3020 + ldr w1, [x0, 1248] + add w1, w1, 1 + str w1, [x0, 1248] + ldr w0, [x29, 108] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L3020: + add x20, x20, :lo12:.LANCHOR4 + str wzr, [x20, 1704] +.L3032: + mov w0, 1 + b .L3009 +.L3016: + strh wzr, [x0, 3452] + ldrh w0, [x2, 776] + cmp w0, 17 + bhi .L3017 + b .L3015 +.L3018: + adrp x0, .LANCHOR1+3452 + ldrh w1, [x0, #:lo12:.LANCHOR1+3452] + mov w0, 65535 + cmp w1, w0 + bne .L3032 + b .L3021 +.L3026: + umull x25, w23, w26 + ldr x27, [x22, 2512] + ldr w1, [x22, 2924] + add x24, x27, x25 + ldr w0, [x24, 8] + cmp w0, w1 + bcc .L3023 +.L3044: + ldrh w0, [x21, 880] + b .L3045 +.L3023: + add x1, x29, 108 + mov w2, 0 + bl log2phys + ldr w0, [x27, x25] + ldr w1, [x29, 108] + cmp w0, w1 + bne .L3025 + lsr w0, w0, 10 + bl P2V_block_in_plane + mov w25, w0 + ldr w0, [x24, 8] + mov w2, 1 + add x1, x24, 4 + bl log2phys + mov w0, w25 +.L3045: + bl decrement_vpc_count + b .L3024 +.L3025: + ldr w0, [x24, 4] + cmp w1, w0 + bne .L3044 +.L3024: + add w23, w23, 1 + and w23, w23, 65535 + b .L3022 +.L3028: + bl INSERT_FREE_LIST + b .L3029 +.L3030: + add x20, x20, :lo12:.LANCHOR4 + ldrh w0, [x20, 1096] + ldrh w1, [x20, 776] + add w2, w0, w0, lsl 1 + cmp w1, w2, lsr 2 + ble .L3047 + add x19, x19, :lo12:.LANCHOR2 + ldrb w1, [x19, 1220] + cbz w1, .L3031 + sub w0, w0, #2 +.L3046: + strh w0, [x19, 2480] + b .L3047 +.L3031: + mov w0, 20 + b .L3046 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 .global FtlGcPageRecovery @@ -19834,29 +19377,28 @@ FtlGcFreeTempBlock: FtlGcPageRecovery: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 - adrp x19, .LANCHOR4 add x20, x20, :lo12:.LANCHOR2 + adrp x19, .LANCHOR4 add x19, x19, :lo12:.LANCHOR4 - str x21, [sp,32] + str x21, [sp, 32] add x21, x19, 880 + ldrh w1, [x20, 2344] mov x0, x21 - ldrh w1, [x20,2344] bl FtlGcScanTempBlk - ldrh w1, [x19,882] - ldrh w0, [x20,2344] + ldrh w1, [x19, 882] + ldrh w0, [x20, 2344] cmp w1, w0 - bcc .L3131 + bcc .L3048 add x0, x19, 928 bl FtlMapBlkWriteDumpData mov w0, 0 bl FtlGcFreeTempBlock - adrp x0, .LANCHOR5+1192 - str wzr, [x0,#:lo12:.LANCHOR5+1192] -.L3131: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + str wzr, [x19, 1704] +.L3048: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlGcPageRecovery, .-FtlGcPageRecovery @@ -19865,15 +19407,14 @@ FtlGcPageRecovery: .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR5+1248 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR4 - str wzr, [x0,#:lo12:.LANCHOR5+1248] add x19, x19, :lo12:.LANCHOR4 add x20, x19, 784 add x19, x19, 832 mov x0, x20 + str wzr, [x19, 928] bl FtlRecoverySuperblock mov x0, x20 bl FtlSlcSuperblockCheck @@ -19885,7 +19426,7 @@ FtlPowerLostRecovery: mov w0, -1 bl decrement_vpc_count mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlPowerLostRecovery, .-FtlPowerLostRecovery @@ -19894,33 +19435,37 @@ FtlPowerLostRecovery: .type FtlSysBlkInit, %function FtlSysBlkInit: stp x29, x30, [sp, -64]! - mov w1, -1 + mov w0, -1 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, .LANCHOR2 - adrp x21, .LANCHOR5 - str x23, [sp,48] - add x0, x21, :lo12:.LANCHOR5 - add x23, x20, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR4 - strh w1, [x0,1242] - strh wzr, [x0,1244] - ldrh w0, [x23,2280] + stp x21, x22, [sp, 32] + adrp x20, .LANCHOR2 + add x21, x19, :lo12:.LANCHOR4 + add x22, x20, :lo12:.LANCHOR2 + str x23, [sp, 48] + strh w0, [x21, 1754] + ldrh w0, [x22, 2280] + strh wzr, [x21, 1756] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - add x0, x19, :lo12:.LANCHOR4 - ldrh w1, [x0,1072] + ldrh w1, [x21, 1072] mov w0, 65535 cmp w1, w0 - bne .L3135 -.L3137: - mov w22, -1 - b .L3136 -.L3135: + bne .L3054 +.L3056: + mov w21, -1 +.L3053: + mov w0, w21 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L3054: bl FtlLoadSysInfo - mov w22, w0 - cbnz w0, .L3137 + mov w21, w0 + cbnz w0, .L3056 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -19930,95 +19475,91 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldrh w2, [x23,2382] - mov x1, 0 - ldr x0, [x23,2792] -.L3138: - cmp w1, w2 - mov w3, w1 - bge .L3142 - add x4, x0, x1, lsl 4 - add x1, x1, 1 - ldr w4, [x4,4] - tbz w4, #31, .L3138 -.L3142: - add x0, x19, :lo12:.LANCHOR4 - cmp w3, w2 - ldrh w1, [x0,724] + ldr x1, [x22, 2792] + mov w0, 0 + ldrh w3, [x22, 2382] + add x1, x1, 4 +.L3057: + cmp w0, w3 + bge .L3062 + ldr w2, [x1], 16 + tbz w2, #31, .L3058 +.L3062: + add x2, x19, :lo12:.LANCHOR4 + cmp w0, w3 + ldrh w1, [x2, 724] add w1, w1, 1 - strh w1, [x0,724] - blt .L3139 - add x21, x21, :lo12:.LANCHOR5 - ldrh w0, [x21,1244] - cbz w0, .L3143 -.L3139: - add x1, x19, :lo12:.LANCHOR4 - add x2, x20, :lo12:.LANCHOR2 - ldrh w3, [x1,784] - ldr x5, [x2,2712] + strh w1, [x2, 724] + bge .L3069 +.L3059: + add x0, x19, :lo12:.LANCHOR4 + add x1, x20, :lo12:.LANCHOR2 + ldrh w3, [x0, 784] + ldr x5, [x1, 2712] + ldrh w6, [x0, 788] lsl x3, x3, 1 - ldrh w6, [x1,788] - ldrh w4, [x5,x3] + ldrh w4, [x5, x3] sub w4, w4, w6 - strh w4, [x5,x3] - strb wzr, [x1,790] - ldrh w3, [x2,2344] - strh w3, [x1,786] - ldrh w3, [x1,832] - ldr x5, [x2,2712] + strh w4, [x5, x3] + strb wzr, [x0, 790] + ldrh w3, [x1, 2344] + strh w3, [x0, 786] + ldrh w3, [x0, 832] + ldr x5, [x1, 2712] + strh wzr, [x0, 788] lsl x3, x3, 1 - strh wzr, [x1,788] - ldrh w6, [x1,836] - ldrh w4, [x5,x3] + ldrh w6, [x0, 836] + ldrh w4, [x5, x3] sub w4, w4, w6 - strh w4, [x5,x3] - strb wzr, [x1,838] - ldrh w0, [x1,726] - ldrh w2, [x2,2344] - add w0, w0, 1 - strh w2, [x1,834] - strh wzr, [x1,836] - strh w0, [x1,726] + strh w4, [x5, x3] + strb wzr, [x0, 838] + ldrh w1, [x1, 2344] + strh w1, [x0, 834] + ldrh w1, [x0, 726] + strh wzr, [x0, 836] + add w1, w1, 1 + strh w1, [x0, 726] bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush -.L3143: + b .L3063 +.L3058: + add w0, w0, 1 + b .L3057 +.L3069: + ldrh w0, [x2, 1756] + cbnz w0, .L3059 +.L3063: add x20, x19, :lo12:.LANCHOR4 mov w1, 65535 add x23, x20, 784 - ldrh w0, [x20,784] + ldrh w0, [x20, 784] cmp w0, w1 - beq .L3144 - ldrh w1, [x20,788] - cbnz w1, .L3144 - ldrh w1, [x20,836] - add x21, x20, 832 - cbnz w1, .L3144 + beq .L3064 + ldrh w1, [x20, 788] + cbnz w1, .L3064 + ldrh w1, [x20, 836] + add x22, x20, 832 + cbnz w1, .L3064 bl FtlGcRefreshOpenBlock - ldrh w0, [x20,832] + ldrh w0, [x20, 832] bl FtlGcRefreshOpenBlock bl FtlVpcTblFlush mov x0, x23 bl allocate_new_data_superblock - mov x0, x21 + mov x0, x22 bl allocate_new_data_superblock -.L3144: +.L3064: adrp x0, .LANCHOR0+88 - ldrb w0, [x0,#:lo12:.LANCHOR0+88] - cbnz w0, .L3145 + ldrb w0, [x0, #:lo12:.LANCHOR0+88] + cbnz w0, .L3065 add x19, x19, :lo12:.LANCHOR4 - ldrh w0, [x19,724] - and w0, w0, 31 - cbnz w0, .L3136 -.L3145: + ldrh w0, [x19, 724] + tst x0, 31 + bne .L3053 +.L3065: bl FtlVpcCheckAndModify -.L3136: - mov w0, w22 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 - ret + b .L3053 .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 .global FtlLowFormat @@ -20026,298 +19567,298 @@ FtlSysBlkInit: FtlLowFormat: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 add x20, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w21, [x20,2928] - cbnz w21, .L3153 - ldrh w2, [x20,2380] - mov w1, w21 - ldr x0, [x20,2776] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldr w0, [x20, 2928] + cbnz w0, .L3073 + ldr x0, [x20, 2776] + mov w1, 0 + ldrh w2, [x20, 2380] lsl w2, w2, 2 bl ftl_memset - ldrh w2, [x20,2380] - mov w1, w21 - ldr x0, [x20,2768] + ldr x0, [x20, 2768] + mov w1, 0 + ldrh w2, [x20, 2380] lsl w2, w2, 2 bl ftl_memset - str w21, [x20,2396] - ldrh w0, [x20,2280] - str w21, [x20,2400] + ldrh w0, [x20, 2280] + str wzr, [x20, 2396] + str wzr, [x20, 2400] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L3154 + cbz w0, .L3074 bl FtlMakeBbt -.L3154: - mov w0, 0 -.L3155: +.L3074: + mov w4, 23752 add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x1,2350] + mov w0, 0 + movk w4, 0xa0f, lsl 16 +.L3075: + ldrh w2, [x1, 2350] cmp w0, w2, lsl 7 - bge .L3182 - ubfiz x3, x0, 2, 16 - ldr x4, [x1,2616] - mvn w2, w0 - orr w2, w0, w2, lsl 16 - str w2, [x4,x3] - add w0, w0, 1 - ldr x2, [x1,2624] - mov w1, 23752 - movk w1, 0xa0f, lsl 16 - uxth w0, w0 - str w1, [x2,x3] - b .L3155 -.L3182: - ldrh w21, [x1,2284] - mov w20, 0 -.L3157: + blt .L3076 + ldrh w21, [x1, 2284] add x22, x19, :lo12:.LANCHOR2 - ldrh w0, [x22,2286] + mov w20, 0 +.L3077: + ldrh w0, [x22, 2286] cmp w0, w21 - bls .L3183 - mov w0, w21 - mov w1, 1 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w0, w20, w0 - uxth w21, w21 - uxth w20, w0 - b .L3157 -.L3183: - ldrh w0, [x22,2276] + bhi .L3078 + ldrh w0, [x22, 2276] sub w1, w20, #3 cmp w1, w0, lsl 1 - blt .L3159 + blt .L3079 udiv w0, w20, w0 - ldr w20, [x22,2376] + ldr w20, [x22, 2376] add w0, w0, w20 - mov w20, 0 bl FtlSysBlkNumInit - ldrh w0, [x22,2280] + ldrh w0, [x22, 2280] + mov w20, 0 bl FtlFreeSysBlkQueueInit - ldrh w21, [x22,2284] -.L3160: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,2286] + ldrh w21, [x22, 2284] + add x22, x19, :lo12:.LANCHOR2 +.L3080: + ldrh w0, [x22, 2286] cmp w0, w21 - bls .L3159 - mov w0, w21 - mov w1, 1 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w0, w20, w0 - uxth w21, w21 - uxth w20, w0 - b .L3160 -.L3159: - mov w21, 0 - mov w22, w21 -.L3162: - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x0,2284] - cmp w1, w22 - bls .L3184 - mov w0, w22 - mov w1, 0 - add w22, w22, 1 - bl FtlLowFormatEraseBlock - add w0, w21, w0 - uxth w22, w22 - uxth w21, w0 - b .L3162 -.L3184: - ldrh w1, [x0,2286] - adrp x22, .LANCHOR5 - ldrh w2, [x0,2276] - add x6, x22, :lo12:.LANCHOR5 - str w1, [x0,2468] - ldr w1, [x0,2288] - udiv w3, w1, w2 - str w3, [x0,2924] - ubfx x5, x3, 5, 16 - add w4, w5, 36 - strh w4, [x6,588] - mov w4, 24 - mul w4, w2, w4 - cmp w21, w4 - ble .L3164 - sub w1, w1, w21 - udiv w1, w1, w2 - str w1, [x0,2924] - lsr w1, w1, 5 - add w1, w1, 24 - strh w1, [x6,588] -.L3164: - add x0, x19, :lo12:.LANCHOR2 - ldr w0, [x0,2096] - cmp w0, 1 - bne .L3165 - add x1, x22, :lo12:.LANCHOR5 - udiv w0, w21, w2 - ldrh w4, [x1,588] - add w0, w4, w0 - add w0, w4, w0, asr 2 - strh w0, [x1,588] -.L3165: - add x0, x19, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L3166 - add x1, x22, :lo12:.LANCHOR5 - udiv w0, w21, w2 - ldrh w4, [x1,588] - add w0, w4, w0 - add w0, w4, w0, asr 2 - strh w0, [x1,588] -.L3166: - add x6, x19, :lo12:.LANCHOR2 - ldrh w1, [x6,2338] - cbz w1, .L3168 - add x0, x22, :lo12:.LANCHOR5 - ldrh w4, [x0,588] - add w4, w4, w1, lsr 1 - strh w4, [x0,588] - mul w4, w1, w2 - cmp w4, w21 - ble .L3168 - add w1, w1, 32 - str w3, [x6,2924] - add w1, w5, w1 - strh w1, [x0,588] -.L3168: + bhi .L3081 +.L3079: add x23, x19, :lo12:.LANCHOR2 - add x3, x22, :lo12:.LANCHOR5 - ldr w1, [x23,2924] - ldrh w0, [x3,588] - sub w0, w1, w0 - ldrh w1, [x23,2344] - mul w0, w0, w2 - str w0, [x3,584] - mul w0, w0, w1 - ldrh w1, [x23,2350] - str w0, [x23,2924] - mul w0, w0, w1 - str w0, [x23,1224] + mov w22, 0 + mov w21, 0 +.L3082: + ldrh w0, [x23, 2284] + cmp w0, w21 + bhi .L3083 + ldrh w0, [x23, 2286] + adrp x21, .LANCHOR4 + ldr w2, [x23, 2288] + add x5, x21, :lo12:.LANCHOR4 + str w0, [x23, 2468] + ldrh w0, [x23, 2276] + udiv w4, w2, w0 + ubfx x3, x4, 5, 16 + str w4, [x23, 2924] + add w1, w3, 36 + strh w1, [x5, 1096] + mov w1, 24 + mul w1, w0, w1 + cmp w22, w1 + ble .L3084 + sub w2, w2, w22 + udiv w2, w2, w0 + str w2, [x23, 2924] + lsr w2, w2, 5 + add w2, w2, 24 + strh w2, [x5, 1096] +.L3084: + add x1, x19, :lo12:.LANCHOR2 + ldr w1, [x1, 2096] + cmp w1, 1 + bne .L3085 + udiv w2, w22, w0 + add x1, x21, :lo12:.LANCHOR4 + ldrh w5, [x1, 1096] + add w2, w2, w5 + add w2, w5, w2, asr 2 + strh w2, [x1, 1096] +.L3085: + add x1, x19, :lo12:.LANCHOR2 + ldrb w1, [x1, 1220] + cbz w1, .L3086 + udiv w2, w22, w0 + add x1, x21, :lo12:.LANCHOR4 + ldrh w5, [x1, 1096] + add w2, w2, w5 + add w2, w5, w2, asr 2 + strh w2, [x1, 1096] +.L3086: + add x6, x19, :lo12:.LANCHOR2 + ldrh w1, [x6, 2338] + cbz w1, .L3088 + add x2, x21, :lo12:.LANCHOR4 + ldrh w5, [x2, 1096] + add w5, w5, w1, lsr 1 + strh w5, [x2, 1096] + mul w5, w1, w0 + cmp w22, w5 + bge .L3088 + add w1, w1, 32 + str w4, [x6, 2924] + add w1, w3, w1 + strh w1, [x2, 1096] +.L3088: + add x23, x19, :lo12:.LANCHOR2 + add x2, x21, :lo12:.LANCHOR4 + ldr w1, [x23, 2924] + ldrh w3, [x2, 1096] + sub w1, w1, w3 + mul w0, w1, w0 + ldrh w1, [x23, 2344] + str w0, [x2, 1092] + mul w0, w1, w0 + ldrh w1, [x23, 2350] + str w0, [x23, 2924] + mul w0, w1, w0 + str w0, [x23, 1224] bl FtlBbmTblFlush - ldr w2, [x23,2292] - add w1, w21, w20 - ldrh w0, [x23,2358] + ldrh w0, [x23, 2358] + add w1, w20, w22 + ldr w2, [x23, 2292] add w0, w0, w2, lsr 3 cmp w1, w0 - bls .L3170 + bls .L3090 adrp x0, .LC161 lsr w2, w2, 5 add x0, x0, :lo12:.LC161 bl printk -.L3170: - add x24, x19, :lo12:.LANCHOR2 - adrp x20, .LANCHOR4 - add x20, x20, :lo12:.LANCHOR4 +.L3090: + add x23, x19, :lo12:.LANCHOR2 + add x22, x21, :lo12:.LANCHOR4 + add x20, x22, 784 mov w1, 0 - add x21, x20, 784 - mov w23, -1 - ldrh w2, [x24,2286] - ldr x0, [x24,2712] + mov w24, -1 + ldr x0, [x23, 2712] + ldrh w2, [x23, 2286] lsl w2, w2, 1 bl ftl_memset - str wzr, [x20,1068] mov w0, 1 - strb w0, [x21,8] - adrp x0, .LANCHOR0+16 - add x1, x22, :lo12:.LANCHOR5 - ldrh w2, [x24,2284] - strh wzr, [x21,2] - ldr x0, [x0,#:lo12:.LANCHOR0+16] - lsr w2, w2, 3 - strh w23, [x1,592] - strh wzr, [x1,594] - strb wzr, [x1,598] - strb wzr, [x1,600] + strb w0, [x20, 8] + adrp x0, .LANCHOR0+80 + ldrh w2, [x23, 2284] + strh w24, [x22, 1104] mov w1, 255 - strb wzr, [x21,6] - strh wzr, [x20,784] + ldr x0, [x0, #:lo12:.LANCHOR0+80] + strh wzr, [x22, 1106] + lsr w2, w2, 3 + strb wzr, [x22, 1110] + strb wzr, [x22, 1112] + strh wzr, [x20, 2] + strb wzr, [x20, 6] + strh wzr, [x22, 784] + str wzr, [x22, 1068] bl ftl_memset -.L3171: - mov x0, x21 +.L3091: + mov x0, x20 bl make_superblock - ldrb w0, [x21,7] - cbnz w0, .L3172 - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x21] - ldr x0, [x0,2712] - strh w23, [x0,x1,lsl 1] - ldrh w0, [x21] + ldrb w1, [x20, 7] + ldrh w0, [x20] + cbnz w1, .L3092 + ldr x1, [x23, 2712] + ubfiz x0, x0, 1, 16 + strh w24, [x1, x0] + ldrh w0, [x20] add w0, w0, 1 - strh w0, [x21] - b .L3171 -.L3172: - add x1, x19, :lo12:.LANCHOR2 - ldrh w2, [x21] - ldrh w3, [x21,4] - mov w23, -1 - ldr w0, [x1,2396] - str w0, [x21,12] + strh w0, [x20] + b .L3091 +.L3076: + ldr x5, [x1, 2616] + ubfiz x3, x0, 2, 16 + mvn w2, w0 + orr w2, w0, w2, lsl 16 add w0, w0, 1 - str w0, [x1,2396] - ldr x0, [x1,2712] - strh w3, [x0,x2,lsl 1] - add x0, x20, 832 - strh wzr, [x20,834] - ldrh w1, [x21] - mov x21, x0 - strb wzr, [x20,838] - add w1, w1, 1 - strh w1, [x20,832] + and w0, w0, 65535 + str w2, [x5, x3] + ldr x2, [x1, 2624] + str w4, [x2, x3] + b .L3075 +.L3078: + mov w0, w21 mov w1, 1 - strb w1, [x20,840] -.L3173: - mov x0, x21 + add w21, w21, 1 + bl FtlLowFormatEraseBlock + add w20, w20, w0 + and w21, w21, 65535 + and w20, w20, 65535 + b .L3077 +.L3081: + mov w0, w21 + mov w1, 1 + add w21, w21, 1 + bl FtlLowFormatEraseBlock + add w20, w20, w0 + and w21, w21, 65535 + and w20, w20, 65535 + b .L3080 +.L3083: + mov w0, w21 + mov w1, 0 + add w21, w21, 1 + bl FtlLowFormatEraseBlock + add w22, w22, w0 + and w21, w21, 65535 + and w22, w22, 65535 + b .L3082 +.L3092: + add x1, x19, :lo12:.LANCHOR2 + ubfiz x0, x0, 1, 16 + ldrh w3, [x20, 4] + mov x13, x1 + mov w14, -1 + ldr w2, [x1, 2396] + str w2, [x20, 12] + add w2, w2, 1 + str w2, [x1, 2396] + ldr x2, [x1, 2712] + strh w3, [x2, x0] + add x0, x22, 832 + mov x12, x0 + strh wzr, [x22, 834] + ldrh w2, [x20] + add x20, x21, :lo12:.LANCHOR4 + strb wzr, [x22, 838] + add w2, w2, 1 + strh w2, [x22, 832] + mov w2, 1 + strb w2, [x22, 840] +.L3093: + mov x0, x12 bl make_superblock - ldrb w0, [x21,7] - cbnz w0, .L3174 - add x0, x19, :lo12:.LANCHOR2 - ldrh w1, [x21] - ldr x0, [x0,2712] - strh w23, [x0,x1,lsl 1] - ldrh w0, [x21] + ldrb w1, [x12, 7] + ldrh w0, [x12] + cbnz w1, .L3094 + ldr x1, [x13, 2712] + ubfiz x0, x0, 1, 16 + strh w14, [x1, x0] + ldrh w0, [x12] add w0, w0, 1 - strh w0, [x21] - b .L3173 -.L3174: + strh w0, [x12] + b .L3093 +.L3094: add x19, x19, :lo12:.LANCHOR2 - ldrh w1, [x21] - ldrh w2, [x21,4] - add x22, x22, :lo12:.LANCHOR5 - ldr w0, [x19,2396] - str w0, [x21,12] + ubfiz x0, x0, 1, 16 + ldrh w2, [x12, 4] mov w21, -1 - add w0, w0, 1 - str w0, [x19,2396] - ldr x0, [x19,2712] - strh w2, [x0,x1,lsl 1] - strh w21, [x20,880] + ldr w1, [x19, 2396] + str w1, [x12, 12] + add w1, w1, 1 + str w1, [x19, 2396] + ldr x1, [x19, 2712] + strh w2, [x1, x0] + strh w21, [x20, 880] bl FtlFreeSysBlkQueueOut - strh w0, [x20,1072] - ldr w0, [x22,584] - strh w0, [x20,1078] - ldr w0, [x19,2396] - str w0, [x20,1080] + strh w0, [x20, 1072] + ldr w0, [x20, 1092] + strh w0, [x20, 1078] + ldr w0, [x19, 2396] + str w0, [x20, 1080] add w0, w0, 1 - strh wzr, [x20,1074] - strh w21, [x20,1076] - str w0, [x19,2396] + strh wzr, [x20, 1074] + strh w21, [x20, 1076] + str w0, [x19, 2396] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L3153 + cbnz w0, .L3073 adrp x0, .LANCHOR1+3448 mov w1, 1 - str w1, [x0,#:lo12:.LANCHOR1+3448] -.L3153: + str w1, [x0, #:lo12:.LANCHOR1+3448] +.L3073: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size FtlLowFormat, .-FtlLowFormat @@ -20327,199 +19868,193 @@ FtlLowFormat: FtlReInitForSDUpdata: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x19, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 add x0, x19, :lo12:.LANCHOR2 - ldrb w0, [x0,1220] - cbz w0, .L3186 -.L3188: - mov w0, 0 - b .L3187 -.L3186: + ldrb w0, [x0, 1220] + cbz w0, .L3104 +.L3106: + mov w20, 0 +.L3103: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 + ret +.L3104: adrp x0, RK29_NANDC_REG_BASE - ldr x0, [x0,#:lo12:RK29_NANDC_REG_BASE] + ldr x0, [x0, #:lo12:RK29_NANDC_REG_BASE] bl FlashInit - cbnz w0, .L3188 + mov w20, w0 + cbnz w0, .L3106 bl FlashLoadFactorBbt - cbz w0, .L3189 + cbz w0, .L3107 bl FlashMakeFactorBbt -.L3189: +.L3107: add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2216] + ldr x0, [x0, 2216] bl FlashReadIdbDataRaw - cbz w0, .L3190 - mov w1, 0 + cbz w0, .L3108 mov w2, 16 + mov w1, 0 add x0, x29, 32 bl FlashReadFacBbtData + ldr w2, [x29, 32] mov w0, 0 - ldr w2, [x29,32] - mov w1, w0 - mov w4, 1 -.L3192: - lsl w3, w4, w1 - add w1, w1, 1 - tst w3, w2 - cset w3, ne - cmp w1, 16 - add w0, w0, w3 - bne .L3192 - cmp w0, 6 - bhi .L3193 - adrp x0, .LANCHOR0+89 - strb w1, [x0,#:lo12:.LANCHOR0+89] - b .L3194 -.L3193: mov w1, 0 mov w4, 1 -.L3196: +.L3110: lsl w3, w4, w1 add w1, w1, 1 tst w3, w2 - cset w3, ne - cmp w1, 24 - add w0, w0, w3 - bne .L3196 - cmp w0, 17 - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - bls .L3215 - mov w1, 36 -.L3215: - strb w1, [x0,89] -.L3194: - adrp x1, .LANCHOR0+89 + cinc w0, w0, ne + cmp w1, 16 + bne .L3110 + cmp w0, 6 + bhi .L3111 + adrp x0, .LANCHOR0+89 + strb w1, [x0, #:lo12:.LANCHOR0+89] +.L3112: add x0, x19, :lo12:.LANCHOR2 - ldrb w1, [x1,#:lo12:.LANCHOR0+89] - strh w1, [x0,1218] -.L3190: - adrp x0, .LC47 + adrp x1, .LANCHOR0+89 + ldrb w1, [x1, #:lo12:.LANCHOR0+89] + strh w1, [x0, 1218] +.L3108: adrp x1, .LC144 add x1, x1, :lo12:.LC144 - add x0, x0, :lo12:.LC47 add x19, x19, :lo12:.LANCHOR2 + adrp x0, .LC48 + add x0, x0, :lo12:.LC48 bl printk add x0, x19, 1192 bl FtlConstantsInit bl FtlVariablesInit - ldrh w0, [x19,2280] + ldrh w0, [x19, 2280] mov w19, 1 bl FtlFreeSysBlkQueueInit -.L3198: +.L3116: bl FtlLoadBbt - cbz w0, .L3199 -.L3217: + cbz w0, .L3117 +.L3136: bl FtlLowFormat cmp w19, 3 - bhi .L3218 + bls .L3118 + mov w20, -1 + b .L3103 +.L3111: + mov w1, 0 + mov w4, 1 +.L3114: + lsl w3, w4, w1 + add w1, w1, 1 + tst w3, w2 + cinc w0, w0, ne + cmp w1, 24 + bne .L3114 + cmp w0, 17 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + bhi .L3115 +.L3134: + strb w1, [x0, 89] + b .L3112 +.L3115: + mov w1, 36 + b .L3134 +.L3118: add w19, w19, 1 - b .L3198 -.L3218: - mov w0, -1 - b .L3187 -.L3199: + b .L3116 +.L3117: bl FtlSysBlkInit - cbnz w0, .L3217 - adrp x1, .LANCHOR1+3448 - mov w2, 1 - str w2, [x1,#:lo12:.LANCHOR1+3448] -.L3187: - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 - ret + cbnz w0, .L3136 + adrp x0, .LANCHOR1+3448 + mov w1, 1 + str w1, [x0, #:lo12:.LANCHOR1+3448] + b .L3103 .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: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - str x23, [sp,48] - add x0, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - ldr w1, [x0,2928] - cbz w1, .L3220 -.L3223: + str x21, [sp, 32] + adrp x21, .LANCHOR2 + add x0, x21, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + ldr w1, [x0, 2928] + cbz w1, .L3138 +.L3141: mov w0, 0 - b .L3221 -.L3220: - ldrb w0, [x0,1220] - adrp x22, .LANCHOR5 - cbz w0, .L3222 - add x0, x22, :lo12:.LANCHOR5 - ldr w0, [x0,1168] - tbz x0, 0, .L3222 - adrp x0, .LANCHOR4+884 - ldrh w0, [x0,#:lo12:.LANCHOR4+884] - cbnz w0, .L3223 -.L3222: - add x0, x19, :lo12:.LANCHOR2 - add x1, x22, :lo12:.LANCHOR5 +.L3137: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L3138: + ldrb w0, [x0, 1220] + adrp x12, .LANCHOR4 + cbz w0, .L3140 + add x0, x12, :lo12:.LANCHOR4 + ldr w1, [x0, 1680] + tbz x1, 0, .L3140 + ldrh w0, [x0, 884] + cbnz w0, .L3141 +.L3140: + add x11, x21, :lo12:.LANCHOR2 + add x19, x12, :lo12:.LANCHOR4 + mov w3, 0 mov w2, 0 - mov w21, 0 - mov w3, w2 - mov w23, 56 - ldr x0, [x0,2528] - ldr w1, [x1,1168] + mov x20, x11 + ldr w1, [x19, 1680] + ldr x0, [x11, 2528] bl FlashProgPages -.L3224: - add x20, x22, :lo12:.LANCHOR5 - ldr w1, [x20,1168] - cmp w21, w1 - bcs .L3234 - add x2, x19, :lo12:.LANCHOR2 - umull x0, w21, w23 - ldr x4, [x2,2528] - add x1, x4, x0 - ldr w4, [x4,x0] - cmn w4, #1 - ldr x3, [x1,16] - bne .L3225 - adrp x1, .LANCHOR4 - ldr x3, [x2,2712] - add x1, x1, :lo12:.LANCHOR4 - ldrh w5, [x1,880] - strh wzr, [x3,x5,lsl 1] - strh w4, [x1,880] - ldr w1, [x20,736] - add w1, w1, 1 - str w1, [x20,736] - ldr x1, [x2,2528] - add x0, x1, x0 - ldr w0, [x0,4] + mov w13, 0 + mov w14, 56 +.L3142: + ldr w1, [x19, 1680] + cmp w13, w1 + bcc .L3144 + add x21, x21, :lo12:.LANCHOR2 + ldr x0, [x21, 2528] + bl FtlGcBufFree + str wzr, [x19, 1680] + ldrh w0, [x19, 884] + cbnz w0, .L3141 + mov w0, 1 + bl FtlGcFreeTempBlock + b .L3152 +.L3144: + umull x1, w13, w14 + ldr x2, [x20, 2528] + add x3, x2, x1 + ldr w2, [x2, x1] + ldr x0, [x3, 16] + cmn w2, #1 + bne .L3143 + ldrh w3, [x19, 880] + ldr x0, [x20, 2712] + strh wzr, [x0, x3, lsl 1] + strh w2, [x19, 880] + ldr w0, [x19, 1248] + add w0, w0, 1 + str w0, [x19, 1248] + ldr x0, [x20, 2528] + add x0, x0, x1 + ldr w0, [x0, 4] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit - b .L3233 -.L3225: - ldr w0, [x3,12] - add w21, w21, 1 - ldr w1, [x1,4] - ldr w2, [x3,8] - uxth w21, w21 +.L3152: + mov w0, 1 + b .L3137 +.L3143: + ldp w2, w0, [x0, 8] + ldr w1, [x3, 4] bl FtlGcUpdatePage - b .L3224 -.L3234: - add x19, x19, :lo12:.LANCHOR2 - ldr x0, [x19,2528] - bl FtlGcBufFree - str wzr, [x20,1168] - adrp x0, .LANCHOR4+884 - ldrh w0, [x0,#:lo12:.LANCHOR4+884] - cbnz w0, .L3223 - mov w0, 1 - bl FtlGcFreeTempBlock -.L3233: - mov w0, 1 -.L3221: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 64 - ret + add w13, w13, 1 + and w13, w13, 65535 + b .L3142 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 2 .global Ftl_get_new_temp_ppa @@ -20527,37 +20062,35 @@ Ftl_gc_temp_data_write_back: Ftl_get_new_temp_ppa: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR4 add x0, x19, :lo12:.LANCHOR4 add x1, x0, 880 - ldrh w2, [x0,880] + ldrh w2, [x0, 880] mov w0, 65535 cmp w2, w0 - beq .L3236 - ldrh w0, [x1,4] - cbnz w0, .L3237 -.L3236: + beq .L3154 + ldrh w0, [x1, 4] + cbnz w0, .L3155 +.L3154: bl FtlCacheWriteBack + add x20, x19, :lo12:.LANCHOR4 mov w0, 0 bl FtlGcFreeTempBlock - add x0, x19, :lo12:.LANCHOR4 - add x0, x0, 880 - strb wzr, [x0,8] + add x0, x20, 880 + strb wzr, [x0, 8] bl allocate_data_superblock - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - strh wzr, [x0,1200] - strh wzr, [x0,1202] + strh wzr, [x20, 1712] + strh wzr, [x20, 1714] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L3237: +.L3155: add x0, x19, :lo12:.LANCHOR4 add x0, x0, 880 bl get_new_active_ppa - ldr x19, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa @@ -20565,326 +20098,313 @@ Ftl_get_new_temp_ppa: .global ftl_read .type ftl_read, %function ftl_read: - sub sp, sp, #224 - mov w4, w0 - adrp x0, .LANCHOR1+3448 - stp x29, x30, [sp,16] + sub sp, sp, #208 + adrp x4, .LANCHOR1+3448 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x21, x22, [sp,48] - ldr w21, [x0,#:lo12:.LANCHOR1+3448] - mov w0, -1 - stp x19, x20, [sp,32] - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] + stp x21, x22, [sp, 48] + stp x19, x20, [sp, 32] + ldr w21, [x4, #:lo12:.LANCHOR1+3448] + stp x23, x24, [sp, 64] + stp x25, x26, [sp, 80] cmp w21, 1 - bne .L3239 - cmp w4, 16 - mov x24, x3 - mov w25, w2 - mov w20, w1 - bne .L3240 - add w0, w1, 256 - mov w1, w2 + stp x27, x28, [sp, 96] + bne .L3182 + mov x23, x3 + mov w24, w2 + mov w19, w1 + cmp w0, 16 + bne .L3159 mov x2, x3 + mov w1, w24 + add w0, w19, 256 bl FtlVendorPartRead - b .L3239 -.L3240: - adrp x19, .LANCHOR2 - add x1, x19, :lo12:.LANCHOR2 - ldr w2, [x1,1224] - cmp w20, w2 - bcs .L3263 - cmp w25, w2 - bhi .L3263 - add w0, w20, w25 - str w0, [x29,188] - mov w0, -1 - ldr w3, [x29,188] - cmp w3, w2 - bhi .L3239 - adrp x22, .LANCHOR5 - ldrh w0, [x1,2350] - add x2, x22, :lo12:.LANCHOR5 - sub w26, w3, #1 - udiv w28, w20, w0 - sub w21, w21, w28 - udiv w26, w26, w0 - ldr w0, [x2,1156] - add w0, w25, w0 - str w0, [x2,1156] - ldr w0, [x1,2424] - add w21, w21, w26 - add w0, w21, w0 - str w0, [x1,2424] - mov w0, w28 + mov w25, w0 +.L3157: + mov w0, w25 + 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, 208 + ret +.L3159: + adrp x20, .LANCHOR2 + add x0, x20, :lo12:.LANCHOR2 + ldr w1, [x0, 1224] + cmp w19, w1 + bcs .L3182 + cmp w2, w1 + bhi .L3182 + add w2, w19, w2 + str w2, [x29, 156] + cmp w1, w2 + bcc .L3182 + ldrh w1, [x0, 2350] + sub w26, w2, #1 + adrp x7, .LANCHOR4 + add x2, x7, :lo12:.LANCHOR4 + udiv w27, w19, w1 + udiv w26, w26, w1 + sub w21, w21, w27 + add w1, w21, w26 + str w1, [x29, 172] + ldr w1, [x2, 1668] + add w1, w1, w24 + str w1, [x2, 1668] + ldr w2, [x29, 172] + ldr w1, [x0, 2424] + add w1, w1, w2 + str w1, [x0, 2424] mov w1, w26 + mov w0, w27 bl FtlCacheMetchLpa - str x22, [x29,120] - cbz w0, .L3241 + str x7, [x29, 112] + cbz w0, .L3160 bl FtlCacheWriteBack -.L3241: - mov w27, 0 +.L3160: + mov w22, w27 adrp x0, .LC57 + mov w28, 0 add x0, x0, :lo12:.LC57 - mov w22, w28 - str w27, [x29,184] - mov w23, w27 - str w27, [x29,172] - str x0, [x29,112] -.L3242: - cbz w21, .L3286 + mov w25, 0 + str x0, [x29, 104] + stp wzr, wzr, [x29, 164] +.L3161: + ldr w0, [x29, 172] + cbnz w0, .L3178 + add x20, x20, :lo12:.LANCHOR2 + ldrh w0, [x20, 2486] + cbz w0, .L3157 + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + b .L3157 +.L3178: + mov w2, 0 + add x1, x29, 188 mov w0, w22 - add x1, x29, 204 - mov w2, 0 bl log2phys - ldr w3, [x29,204] - cmn w3, #1 - bne .L3284 - mov w3, 0 -.L3243: - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,2350] - cmp w3, w0 - bcs .L3247 - madd w0, w22, w0, w3 - cmp w0, w20 - bcc .L3245 - ldr w1, [x29,188] - cmp w0, w1 - bcs .L3245 - sub w0, w0, w20 - mov w1, 0 - ubfiz x0, x0, 9, 23 - mov w2, 512 - add x0, x24, x0 - str x3, [x29,176] - bl ftl_memset - ldr x3, [x29,176] -.L3245: - add w3, w3, 1 - b .L3243 -.L3284: - add x2, x19, :lo12:.LANCHOR2 - mov w0, 56 - cmp w22, w28 - umull x1, w23, w0 - ldr x0, [x2,2520] - add x0, x0, x1 - str w3, [x0,4] - ldrh w0, [x2,2350] - bne .L3248 - ldr x3, [x2,2520] - ldr x2, [x2,2616] - 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, w25 - csel w2, w2, w25, ls - str w2, [x29,184] - cmp w2, w0 - bne .L3249 - str x24, [x3,8] - b .L3249 -.L3248: - cmp w22, w26 - bne .L3250 - ldr x3, [x2,2520] - ldr x2, [x2,2624] - add x3, x3, x1 - ldr w4, [x29,188] - str x2, [x3,8] - mul w2, w22, w0 - sub w27, w4, w2 - cmp w27, w0 - bne .L3249 - sub w2, w2, w20 - ubfiz x2, x2, 9, 23 - add x2, x24, x2 - str x2, [x3,8] - b .L3249 -.L3250: - ldr x2, [x2,2520] - mul w0, w22, w0 - add x2, x2, x1 - sub w0, w0, w20 - ubfiz x0, x0, 9, 23 - add x0, x24, x0 - str x0, [x2,8] -.L3249: - add x2, x19, :lo12:.LANCHOR2 - ldr x0, [x2,2520] - add x1, x0, x1 - ldrh w0, [x2,2356] - ldr x2, [x2,2648] - mul w0, w23, w0 - str w22, [x1,24] - add w23, w23, 1 - and x0, x0, 4294967292 - add x0, x2, x0 - str x0, [x1,16] -.L3247: - subs w21, w21, #1 + ldr w4, [x29, 188] + cmn w4, #1 + bne .L3162 + add x5, x20, :lo12:.LANCHOR2 + mov w21, 0 +.L3163: + ldrh w0, [x5, 2350] + cmp w21, w0 + bcc .L3165 +.L3166: + ldr w0, [x29, 172] add w22, w22, 1 - beq .L3251 - add x0, x19, :lo12:.LANCHOR2 - ldrh w0, [x0,2276] - cmp w23, w0, lsl 3 - bne .L3242 -.L3251: - cbz w23, .L3242 - add x0, x19, :lo12:.LANCHOR2 - mov w1, w23 + subs w0, w0, #1 + str w0, [x29, 172] + beq .L3170 + add x0, x20, :lo12:.LANCHOR2 + ldrh w0, [x0, 2276] + cmp w28, w0, lsl 3 + bne .L3161 +.L3170: + cbz w28, .L3161 + add x8, x20, :lo12:.LANCHOR2 + mov w1, w28 mov w2, 0 - ldr x0, [x0,2520] + mov x21, x8 + ldr x0, [x8, 2520] bl FlashReadPages - str xzr, [x29,176] - ldr x0, [x29,144] - ubfiz x0, x0, 9, 23 - str x0, [x29,136] - ldr w0, [x29,184] + ldr w0, [x29, 164] lsl w0, w0, 9 - str w0, [x29,168] - lsl w0, w27, 9 - str w0, [x29,132] - ldr x0, [x29,120] - add x0, x0, :lo12:.LANCHOR5 - str x0, [x29,160] -.L3253: - ldr w0, [x29,176] - cmp w23, w0 - bls .L3287 - ldr x0, [x29,176] - add x2, x19, :lo12:.LANCHOR2 - mov x1, 56 - mul x8, x0, x1 - ldr x0, [x2,2520] - add x0, x0, x8 - ldr w1, [x0,24] - cmp w1, w28 - bne .L3254 - ldr x1, [x0,8] - ldr x0, [x2,2616] + str w0, [x29, 132] + ldr w0, [x29, 160] + lsl w0, w0, 9 + str x0, [x29, 136] + ldr w0, [x29, 168] + lsl w0, w0, 9 + str w0, [x29, 152] + mov w0, 56 + umull x0, w28, w0 + mov x28, 0 + str x0, [x29, 120] + ldr x0, [x29, 112] + add x0, x0, :lo12:.LANCHOR4 + str x0, [x29, 144] +.L3177: + ldr x0, [x21, 2520] + add x0, x0, x28 + ldr w1, [x0, 24] + cmp w27, w1 + bne .L3172 + ldr x1, [x0, 8] + ldr x0, [x21, 2616] cmp x1, x0 - bne .L3255 - ldr x2, [x29,136] - mov x0, x24 - str x8, [x29,104] - add x1, x1, x2 - ldr w2, [x29,168] - b .L3285 -.L3254: - cmp w1, w26 - bne .L3255 - ldr x1, [x0,8] - ldr x0, [x2,2624] - cmp x1, x0 - bne .L3255 - ldrh w0, [x2,2350] - ldr w2, [x29,132] - str x8, [x29,104] - mul w0, w26, w0 - sub w0, w0, w20 - ubfiz x0, x0, 9, 23 - add x0, x24, x0 -.L3285: + bne .L3173 + ldr x0, [x29, 136] + ldr w2, [x29, 152] + add x1, x1, x0 + mov x0, x23 +.L3197: bl ftl_memcpy - ldr x8, [x29,104] -.L3255: - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - add x2, x0, x8 - ldr w1, [x0,x8] - cmn w1, #1 - bne .L3256 - ldr x0, [x29,160] - str w1, [x29,172] - add x3, x0, 640 - ldr w0, [x0,712] - add w0, w0, 1 - str w0, [x3,72] -.L3256: - ldr x0, [x2,16] - ldr w1, [x2,24] - ldr w0, [x0,8] - cmp w1, w0 - beq .L3257 - ldr x0, [x29,160] - str x8, [x29,104] - add x1, x0, 640 - ldr w0, [x0,712] - add w0, w0, 1 - str w0, [x1,72] - ldr x7, [x2,8] - ldr x6, [x2,16] - ldr w0, [x7,4] - str w0, [sp] - ldr x0, [x29,112] - ldr w1, [x2,24] - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w2, [x2,4] - ldr w6, [x6,12] - ldr w7, [x7] +.L3173: + ldr x1, [x21, 2520] + add x0, x1, x28 + ldr w2, [x1, x28] + cmn w2, #1 + bne .L3174 + ldr x1, [x29, 144] + mov w25, w2 + add x3, x1, 1152 + ldr w1, [x1, 1224] + add w1, w1, 1 + str w1, [x3, 72] +.L3174: + ldr x1, [x0, 16] + ldr w2, [x0, 24] + ldr w1, [x1, 8] + cmp w2, w1 + beq .L3175 + ldr x1, [x29, 144] + add x2, x1, 1152 + ldr w1, [x1, 1224] + add w1, w1, 1 + str w1, [x2, 72] + ldp x2, x1, [x0, 8] + ldr w3, [x2, 4] + str w3, [sp] + ldp w3, w4, [x1] + ldp w5, w6, [x1, 8] + ldr w7, [x2] + ldr w1, [x0, 24] + ldr w2, [x0, 4] + ldr x0, [x29, 104] bl printk - ldr x8, [x29,104] -.L3257: - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2520] - add x1, x0, x8 - ldr w0, [x0,x8] +.L3175: + ldr x0, [x21, 2520] + add x1, x0, x28 + ldr w0, [x0, x28] cmp w0, 256 - bne .L3258 - ldr w0, [x1,4] - lsr x0, x0, 10 + bne .L3176 + ldr w0, [x1, 4] + lsr w0, w0, 10 bl P2V_block_in_plane bl FtlGcRefreshBlock -.L3258: - ldr x0, [x29,176] - add x0, x0, 1 - str x0, [x29,176] - b .L3253 -.L3287: - mov w23, 0 - b .L3242 -.L3286: - add x19, x19, :lo12:.LANCHOR2 - ldrh w0, [x19,2486] - cbz w0, .L3261 - mov w0, w21 - mov w1, 1 - bl ftl_do_gc -.L3261: - ldr w0, [x29,172] - b .L3239 -.L3263: - mov w0, -1 -.L3239: - 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, 224 - ret +.L3176: + ldr x0, [x29, 120] + add x28, x28, 56 + cmp x0, x28 + bne .L3177 + mov w28, 0 + b .L3161 +.L3165: + madd w0, w22, w0, w21 + cmp w19, w0 + bhi .L3164 + ldr w1, [x29, 156] + cmp w1, w0 + bls .L3164 + sub w0, w0, w19 + str x5, [x29, 144] + lsl w0, w0, 9 + mov w2, 512 + mov w1, 0 + add x0, x23, x0 + bl ftl_memset + ldr x5, [x29, 144] +.L3164: + add w21, w21, 1 + b .L3163 +.L3162: + add x1, x20, :lo12:.LANCHOR2 + mov w0, 56 + cmp w22, w27 + umull x2, w28, w0 + ldr x0, [x1, 2520] + add x0, x0, x2 + str w4, [x0, 4] + ldrh w0, [x1, 2350] + bne .L3167 + ldr x4, [x1, 2520] + ldr x1, [x1, 2616] + add x4, x4, x2 + str x1, [x4, 8] + udiv w1, w19, w0 + msub w1, w1, w0, w19 + str w1, [x29, 160] + sub w1, w0, w1 + cmp w24, w1 + csel w1, w24, w1, ls + str w1, [x29, 168] + cmp w1, w0 + bne .L3168 + str x23, [x4, 8] +.L3168: + add x1, x20, :lo12:.LANCHOR2 + ldr x0, [x1, 2520] + add x2, x0, x2 + ldrh w0, [x1, 2356] + ldr x1, [x1, 2648] + str w22, [x2, 24] + mul w0, w0, w28 + add w28, w28, 1 + and x0, x0, 4294967292 + add x0, x1, x0 + str x0, [x2, 16] + b .L3166 +.L3167: + cmp w22, w26 + bne .L3169 + ldr x4, [x1, 2520] + ldr x1, [x1, 2624] + add x4, x4, x2 + ldr w3, [x29, 156] + str x1, [x4, 8] + mul w1, w22, w0 + sub w3, w3, w1 + str w3, [x29, 164] + cmp w0, w3 + bne .L3168 + sub w1, w1, w19 + lsl w1, w1, 9 + add x1, x23, x1 + str x1, [x4, 8] + b .L3168 +.L3169: + ldr x1, [x1, 2520] + mul w0, w0, w22 + add x1, x1, x2 + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + str x0, [x1, 8] + b .L3168 +.L3172: + cmp w26, w1 + bne .L3173 + ldr x1, [x0, 8] + ldr x0, [x21, 2624] + cmp x1, x0 + bne .L3173 + ldrh w0, [x21, 2350] + ldr w2, [x29, 132] + mul w0, w0, w26 + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + b .L3197 +.L3182: + mov w25, -1 + b .L3157 .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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 16 bl ftl_read ldp x29, x30, [sp], 16 @@ -20895,11 +20415,10 @@ ftl_vendor_read: .type ftl_sys_read, %function ftl_sys_read: stp x29, x30, [sp, -16]! - mov w4, w1 mov x3, x2 - add x29, sp, 0 + mov w2, w1 add w1, w0, 256 - mov w2, w4 + add x29, sp, 0 mov w0, 16 bl ftl_read ldp x29, x30, [sp], 16 @@ -20910,641 +20429,617 @@ ftl_sys_read: .type FtlInit, %function FtlInit: stp x29, x30, [sp, -64]! - mov w0, -1 adrp x1, .LC144 - add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR1 add x1, x1, :lo12:.LC144 - add x23, x23, :lo12:.LANCHOR1 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - adrp x22, .LANCHOR2 - adrp x20, .LANCHOR5 - add x21, x22, :lo12:.LANCHOR2 - str w0, [x23,3448] - add x20, x20, :lo12:.LANCHOR5 - adrp x0, .LC47 - add x0, x0, :lo12:.LC47 - str wzr, [x21,2928] - str wzr, [x20,1404] + mov w0, -1 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR4 + stp x21, x22, [sp, 32] + add x20, x20, :lo12:.LANCHOR4 + adrp x21, .LANCHOR1 + adrp x19, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR1 + add x19, x19, :lo12:.LANCHOR2 + str x23, [sp, 48] + str wzr, [x20, 1916] + str w0, [x21, 3448] + adrp x0, .LC48 + str wzr, [x19, 2928] + add x0, x0, :lo12:.LC48 bl printk - add x0, x21, 1192 + add x0, x19, 1192 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit - ldrh w0, [x21,2280] + ldrh w0, [x19, 2280] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L3291 - adrp x0, .LC162 - add x0, x0, :lo12:.LC162 - b .L3305 -.L3291: - bl FtlSysBlkInit - mov w19, w0 - cbz w0, .L3293 - adrp x0, .LC163 - add x0, x0, :lo12:.LC163 -.L3305: + cbz w0, .L3203 adrp x1, .LANCHOR3 add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC162 add x1, x1, 256 + add x0, x0, :lo12:.LC162 +.L3218: bl printk - b .L3292 -.L3293: - mov w1, 1 - str w1, [x23,3448] - bl ftl_do_gc - adrp x1, .LANCHOR4 - add x0, x1, :lo12:.LANCHOR4 - mov x24, x1 - ldrh w0, [x0,776] - cmp w0, 15 - bhi .L3294 - mov w23, 65535 - add w21, w0, 2 -.L3297: - ldrh w0, [x20,592] - cmp w0, w23 - bne .L3295 - add x0, x22, :lo12:.LANCHOR2 - ldrh w0, [x0,2472] - cmp w0, w23 - bne .L3295 - and w0, w19, 63 - bl List_get_gc_head_node - bl FtlGcRefreshBlock -.L3295: - mov w0, 1 - mov w1, w0 - bl ftl_do_gc +.L3204: mov w0, 0 - mov w1, 1 - bl ftl_do_gc - add x0, x24, :lo12:.LANCHOR4 - ldrh w0, [x0,776] - cmp w0, w21 - bhi .L3292 - add w19, w19, 1 - cmp w19, 4096 - bne .L3297 - b .L3292 -.L3294: - ldrb w0, [x21,1220] - cbz w0, .L3292 - mov w19, 128 -.L3299: - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - subs w19, w19, #1 - bne .L3299 -.L3292: - mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret +.L3203: + bl FtlSysBlkInit + cbz w0, .L3205 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 + adrp x0, .LC163 + add x1, x1, 256 + add x0, x0, :lo12:.LC163 + b .L3218 +.L3205: + mov w1, 1 + str w1, [x21, 3448] + bl ftl_do_gc + ldrh w0, [x20, 776] + cmp w0, 15 + bhi .L3206 + add w22, w0, 2 + mov w21, 0 + mov w23, 65535 +.L3209: + ldrh w0, [x20, 1104] + cmp w0, w23 + bne .L3207 + ldrh w0, [x19, 2472] + cmp w0, w23 + bne .L3207 + and w0, w21, 63 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3207: + mov w1, 1 + mov w0, w1 + bl ftl_do_gc + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + ldrh w0, [x20, 776] + cmp w0, w22 + bhi .L3204 + add w21, w21, 1 + cmp w21, 4096 + bne .L3209 + b .L3204 +.L3206: + ldrb w0, [x19, 1220] + cbz w0, .L3204 + mov w19, 128 +.L3211: + mov w1, 1 + mov w0, w1 + bl ftl_do_gc + subs w19, w19, #1 + bne .L3211 + b .L3204 .size FtlInit, .-FtlInit .align 2 .global ftl_write .type ftl_write, %function ftl_write: - stp x29, x30, [sp, -288]! - mov w4, w0 - mov w0, 0 + stp x29, x30, [sp, -256]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - stp x23, x24, [sp,48] - mov w24, w2 - add x2, x22, :lo12:.LANCHOR2 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + stp x25, x26, [sp, 64] + mov w25, w2 + add x2, x20, :lo12:.LANCHOR2 + stp x23, x24, [sp, 48] + stp x21, x22, [sp, 32] mov w23, w1 - mov x25, x3 - ldr w1, [x2,2928] - cbnz w1, .L3307 + stp x27, x28, [sp, 80] + ldr w1, [x2, 2928] + cbnz w1, .L3261 adrp x1, .LANCHOR1 - str x1, [x29,176] + mov x24, x3 add x3, x1, :lo12:.LANCHOR1 - ldr w3, [x3,3448] + str x1, [x29, 144] + ldr w3, [x3, 3448] cmp w3, 1 - bne .L3307 - cmp w4, 16 - bne .L3308 + bne .L3261 + cmp w0, 16 + bne .L3221 + mov x2, x24 + mov w1, w25 add w0, w23, 256 - mov w1, w24 - mov x2, x25 bl FtlVendorPartWrite - b .L3307 -.L3308: - ldr w1, [x2,1224] +.L3219: + 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], 256 + ret +.L3221: + ldr w1, [x2, 1224] cmp w23, w1 - bcs .L3350 - cmp w24, w1 - bhi .L3350 - add w3, w23, w24 - mov w0, -1 - cmp w3, w1 - bhi .L3307 - adrp x4, .LANCHOR5 - ldrh w1, [x2,2350] - add x21, x4, :lo12:.LANCHOR5 - sub w3, w3, #1 - mov w0, 2048 - str x4, [x29,216] - udiv w26, w23, w1 - cmp w24, w1, lsl 1 - str w0, [x21,1408] - udiv w0, w3, w1 - ldr w3, [x2,2496] - str w0, [x29,208] - sub w27, w0, w26 - add w20, w27, 1 - ldr w0, [x2,2408] - add w0, w20, w0 - str w0, [x2,2408] - ldr w0, [x21,1152] - add w0, w24, w0 - str w0, [x21,1152] + bcs .L3264 + cmp w25, w1 + bhi .L3264 + add w0, w23, w25 + cmp w1, w0 + bcc .L3264 + adrp x3, .LANCHOR4 + add x21, x3, :lo12:.LANCHOR4 + mov w1, 2048 + sub w0, w0, #1 + ldr w4, [x2, 2496] + str w1, [x21, 1920] + ldrh w1, [x2, 2350] + str x3, [x29, 152] + cmp w25, w1, lsl 1 + udiv w0, w0, w1 + udiv w27, w23, w1 + str w0, [x29, 172] + sub w28, w0, w27 + ldr w0, [x2, 2408] + add w26, w28, 1 + add w0, w0, w26 + str w0, [x2, 2408] + ldr w0, [x21, 1664] + add w0, w0, w25 + str w0, [x21, 1664] cset w0, cs - str w0, [x29,212] - cbz w3, .L3310 - mov w0, 56 - sub w3, w3, #1 - umull x3, w3, w0 - ldr x0, [x2,2560] - add x3, x0, x3 - ldr w0, [x3,24] - cmp w26, w0 - bne .L3311 - ldr w0, [x2,2416] + str w0, [x29, 188] + cbz w4, .L3223 + ldr x0, [x2, 2560] + sub w4, w4, #1 + mov w3, 56 + umaddl x4, w4, w3, x0 + ldr w0, [x4, 24] + cmp w27, w0 + bne .L3224 + ldr w0, [x2, 2416] + ldr x3, [x4, 8] add w0, w0, 1 - str w0, [x2,2416] - ldr w0, [x21,1412] + str w0, [x2, 2416] + ldr w0, [x21, 1924] add w0, w0, 1 - str w0, [x21,1412] - msub w0, w26, w1, w23 + str w0, [x21, 1924] + msub w0, w27, w1, w23 sub w1, w1, w0 - ubfiz x0, x0, 9, 23 - cmp w1, w24 - csel w19, w1, w24, ls - ldr x1, [x3,8] - lsl w20, w19, 9 - add x0, x1, x0 - mov w2, w20 - mov x1, x25 + cmp w25, w1 + lsl w0, w0, 9 + csel w19, w25, w1, ls + add x0, x3, x0 + lsl w22, w19, 9 + mov x1, x24 + mov w2, w22 bl ftl_memcpy - cbnz w27, .L3312 - ldr w0, [x21,1412] + cbnz w28, .L3225 + ldr w0, [x21, 1924] cmp w0, 2 - bgt .L3312 -.L3346: + bgt .L3225 +.L3261: mov w0, 0 - b .L3307 -.L3312: - add x25, x25, x20 - sub w24, w24, w19 + b .L3219 +.L3225: + sub w25, w25, w19 add w23, w23, w19 - add w26, w26, 1 - mov w20, w27 -.L3311: - ldr x0, [x29,216] - add x0, x0, :lo12:.LANCHOR5 - str wzr, [x0,1412] -.L3310: - ldr w1, [x29,208] - mov w0, w26 + add x24, x24, x22 + add w27, w27, 1 + mov w26, w28 +.L3224: + ldr x0, [x29, 152] + add x0, x0, :lo12:.LANCHOR4 + str wzr, [x0, 1924] +.L3223: + ldr w1, [x29, 172] + mov w0, w27 bl FtlCacheMetchLpa - cbz w0, .L3313 + cbz w0, .L3226 bl FtlCacheWriteBack -.L3313: - ldr x0, [x29,216] - adrp x2, .LANCHOR4 - add x1, x2, :lo12:.LANCHOR4 - str w26, [x29,192] - add x0, x0, :lo12:.LANCHOR5 - add x21, x1, 784 - str x2, [x29,128] - str x1, [x29,120] - str x21, [x0,1392] - adrp x0, .LC164 - add x0, x0, :lo12:.LC164 - str x21, [x29,184] - str x0, [x29,104] -.L3314: - cbz w20, .L3378 - ldrh w0, [x21,4] - cbnz w0, .L3315 - ldr x1, [x29,184] - cmp x21, x1 - bne .L3316 - ldr x0, [x29,120] +.L3226: + ldr x0, [x29, 152] + mov w21, w27 + add x0, x0, :lo12:.LANCHOR4 + str x0, [x29, 176] + add x1, x0, 784 + str x1, [x29, 160] + mov x22, x1 + str x1, [x29, 120] + str x1, [x0, 1904] +.L3227: + cbnz w26, .L3255 + ldr w0, [x29, 172] + sub w1, w0, w27 + mov w0, 0 + bl ftl_do_gc + ldr x0, [x29, 152] + add x0, x0, :lo12:.LANCHOR4 + ldrh w0, [x0, 776] + cmp w0, 5 + bls .L3256 + cmp w0, 31 + bhi .L3261 + adrp x0, .LANCHOR0+88 + ldrb w0, [x0, #:lo12:.LANCHOR0+88] + cbnz w0, .L3261 +.L3256: + ldr x0, [x29, 152] + add x20, x20, :lo12:.LANCHOR2 + mov w19, 65535 + mov w22, 128 + add x21, x0, :lo12:.LANCHOR4 +.L3259: + ldrh w0, [x21, 1104] + cmp w0, w19 + bne .L3258 + ldrh w0, [x20, 2472] + cmp w0, w19 + bne .L3258 + ldrh w0, [x20, 2474] + cmp w0, w19 + bne .L3258 + and w0, w26, 7 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L3258: + mov w1, 1 + strh w22, [x20, 2482] + mov w0, w1 + strh w22, [x20, 2480] + bl ftl_do_gc + mov w1, 1 + mov w0, 0 + bl ftl_do_gc + ldr w0, [x20, 2928] + cbnz w0, .L3261 + ldrh w0, [x21, 776] + cmp w0, 2 + bhi .L3261 + add w26, w26, 1 + cmp w26, 256 + bne .L3259 + b .L3261 +.L3255: + ldrh w0, [x22, 4] + cbnz w0, .L3228 + ldr x0, [x29, 120] + cmp x22, x0 + bne .L3229 + ldr x0, [x29, 176] add x0, x0, 832 - ldrh w19, [x0,4] - cbnz w19, .L3317 + ldrh w1, [x0, 4] + cbnz w1, .L3230 bl allocate_new_data_superblock - ldr x0, [x29,176] + ldr x0, [x29, 144] add x0, x0, :lo12:.LANCHOR1 - str w19, [x0,3456] -.L3317: - ldr x0, [x29,184] + str wzr, [x0, 3456] +.L3230: + ldr x0, [x29, 160] bl allocate_new_data_superblock - ldr x0, [x29,176] - ldr x1, [x29,120] + ldr x0, [x29, 144] + ldr x1, [x29, 176] add x0, x0, :lo12:.LANCHOR1 - add x21, x1, 832 - ldr w0, [x0,3456] - cbnz w0, .L3318 -.L3319: - ldr x21, [x29,184] - b .L3318 -.L3316: - ldr x1, [x29,176] - add x1, x1, :lo12:.LANCHOR1 - str w0, [x1,3456] - ldr x0, [x29,184] - ldrh w0, [x0,4] - cbnz w0, .L3319 - mov x0, x21 + add x22, x1, 832 + ldr w0, [x0, 3456] + cmp w0, 0 + ldr x0, [x29, 160] + csel x22, x22, x0, ne +.L3231: + ldrh w0, [x22, 4] + cbnz w0, .L3232 + mov x0, x22 bl allocate_new_data_superblock -.L3318: - ldrh w0, [x21,4] - cbnz w0, .L3320 - mov x0, x21 - bl allocate_new_data_superblock -.L3320: - ldr x0, [x29,216] - add x0, x0, :lo12:.LANCHOR5 - str x21, [x0,1392] -.L3315: - add x2, x22, :lo12:.LANCHOR2 - ldrh w1, [x21,4] - str xzr, [x29,200] - ldr w0, [x2,2492] - ldr w2, [x2,2496] - sub w0, w0, w2 +.L3232: + ldr x0, [x29, 176] + str x22, [x0, 1904] +.L3228: + add x1, x20, :lo12:.LANCHOR2 + str wzr, [x29, 184] + ldr w0, [x1, 2492] + ldr w1, [x1, 2496] + sub w0, w0, w1 + ldrh w1, [x22, 4] + cmp w0, w26 + csel w0, w0, w26, ls cmp w1, w0 csel w0, w1, w0, ls - cmp w0, w20 - csel w0, w0, w20, ls - str w0, [x29,156] - ldr w0, [x29,212] + str w0, [x29, 116] + ldr w0, [x29, 188] and w0, w0, 1 - str w0, [x29,116] - add w0, w24, w23 - str w0, [x29,152] -.L3321: - ldr w0, [x29,200] - ldr w2, [x29,156] - ldr w1, [x29,192] - cmp w0, w2 - add w28, w1, w0 - bcs .L3379 - ldrh w1, [x21,4] - cbz w1, .L3354 - ldr w1, [x29,208] - cmp w28, w1 - cset w6, eq - cbz w0, .L3323 - ldr w1, [x29,116] - tst w6, w1 - beq .L3323 - add x1, x22, :lo12:.LANCHOR2 - ldr w2, [x29,152] - ldrh w1, [x1,2350] - msub w2, w28, w1, w2 - cmp w2, w1 - bne .L3354 -.L3323: - add x1, x29, 228 + str w0, [x29, 112] + adrp x0, .LC164 + add x0, x0, :lo12:.LC164 + str x0, [x29, 104] +.L3233: + ldr w1, [x29, 116] + ldr w0, [x29, 184] + cmp w0, w1 + bne .L3251 +.L3234: + ldr w0, [x29, 184] + sub w26, w26, w0 + add x0, x20, :lo12:.LANCHOR2 + ldr w1, [x0, 2496] + ldr w0, [x0, 2492] + cmp w1, w0 + bcs .L3252 + ldr w0, [x29, 188] + cbnz w0, .L3252 + ldrh w0, [x22, 4] + cbz w0, .L3252 +.L3254: + str wzr, [x29, 188] + b .L3227 +.L3229: + ldr x0, [x29, 144] + add x0, x0, :lo12:.LANCHOR1 + str wzr, [x0, 3456] + ldr x0, [x29, 120] + ldrh w0, [x0, 4] + cbnz w0, .L3268 + mov x0, x22 + bl allocate_new_data_superblock + b .L3231 +.L3268: + ldr x22, [x29, 160] + b .L3232 +.L3251: + ldrh w0, [x22, 4] + cbz w0, .L3234 + ldr w0, [x29, 172] + cmp w0, w21 + ldr w0, [x29, 112] + cset w3, eq + tst w3, w0 + beq .L3235 + ldr w0, [x29, 184] + cbz w0, .L3235 + add x0, x20, :lo12:.LANCHOR2 + ldrh w1, [x0, 2350] + add w0, w23, w25 + msub w0, w21, w1, w0 + cmp w1, w0 + bne .L3234 +.L3235: + add x1, x29, 196 + add x19, x20, :lo12:.LANCHOR2 mov w2, 0 - mov w0, w28 - str x6, [x29,96] - add x19, x22, :lo12:.LANCHOR2 + str w3, [x29, 100] + mov w0, w21 bl log2phys - mov x0, x21 + mov x0, x22 bl get_new_active_ppa - ldr w5, [x19,2496] + ldr w5, [x19, 2496] mov w4, 56 - ldr x2, [x19,2560] - str x4, [x29,160] - umull x1, w5, w4 - add x2, x2, x1 - str w0, [x2,4] - ldrh w2, [x19,2356] - ldr x0, [x19,2560] - add x1, x0, x1 - mul w0, w2, w5 - and x0, x0, 4294967292 - str x0, [x29,144] - ldr x0, [x19,2664] - ldr x3, [x29,144] - str x0, [x29,136] - add x27, x0, x3 - ldrh w0, [x19,2354] - str x27, [x1,16] - str w28, [x1,24] - mul w0, w0, w5 - ldr x5, [x19,2608] - and x0, x0, 4294967292 - add x0, x5, x0 - str x0, [x1,8] - mov x0, x27 + ldr x1, [x19, 2560] + str w4, [x29, 168] + umull x2, w5, w4 + add x1, x1, x2 + str w0, [x1, 4] + ldr x0, [x19, 2560] + add x0, x0, x2 + ldrh w2, [x19, 2356] + str w21, [x0, 24] + mul w1, w5, w2 + and x1, x1, 4294967292 + str x1, [x29, 136] + ldr x1, [x19, 2664] + ldr x3, [x29, 136] + str x1, [x29, 128] + add x28, x1, x3 + ldrh w1, [x19, 2354] + str x28, [x0, 16] + mul w1, w1, w5 + ldr x5, [x19, 2608] + and x1, x1, 4294967292 + add x1, x5, x1 + str x1, [x0, 8] mov w1, 0 + mov x0, x28 bl ftl_memset - cmp w28, w26 + cmp w27, w21 + ldr w3, [x29, 100] cset w0, eq - str w0, [x29,196] - cbnz w0, .L3358 - ldr x6, [x29,96] - ldr x4, [x29,160] - cbz w6, .L3324 - ldr w0, [x29,152] - ldrh w19, [x19,2350] - msub w19, w28, w19, w0 - ldr w0, [x29,196] - str w0, [x29,160] - uxth w19, w19 - b .L3327 -.L3358: - ldrh w19, [x19,2350] + ldr w4, [x29, 168] + orr w3, w3, w0 + cbz w3, .L3236 + bne .L3237 + ldrh w19, [x19, 2350] udiv w0, w23, w19 msub w0, w0, w19, w23 - str w0, [x29,160] + str w0, [x29, 168] sub w19, w19, w0 - cmp w19, w24 - csel w19, w19, w24, ls -.L3327: - add x2, x22, :lo12:.LANCHOR2 - ldrh w0, [x2,2350] - cmp w19, w0 - bne .L3328 - ldr w0, [x29,196] - mov x1, x25 - cbnz w0, .L3329 - mul w1, w19, w28 + cmp w19, w25 + csel w19, w19, w25, ls +.L3238: + add x0, x20, :lo12:.LANCHOR2 + ldrh w1, [x0, 2350] + cmp w1, w19 + bne .L3239 + cmp w27, w21 + beq .L3269 + mul w1, w21, w19 sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - add x1, x25, x1 -.L3329: - ldr w2, [x29,212] - mov w0, 56 - add x4, x22, :lo12:.LANCHOR2 - cbz w2, .L3330 - ldr w2, [x4,2496] - umull x0, w2, w0 - ldr x2, [x4,2560] - add x0, x2, x0 - b .L3376 -.L3330: - ldr w2, [x4,2496] - umull x0, w2, w0 - ldr x2, [x4,2560] - add x0, x2, x0 - ldrh w2, [x4,2354] - ldr x0, [x0,8] - b .L3377 -.L3328: - ldr w0, [x29,228] - cmn w0, #1 - beq .L3332 - str w0, [x29,236] - mov w1, 56 - ldr w0, [x2,2496] - str w28, [x29,256] - umull x0, w0, w1 - ldr x1, [x2,2560] - mov w2, 0 - add x0, x1, x0 - ldr x1, [x0,8] - ldr x0, [x0,16] - str x1, [x29,240] - mov w1, 1 - str x0, [x29,248] - add x0, x29, 232 - bl FlashReadPages - ldr w0, [x29,232] - cmn w0, #1 - bne .L3333 - ldr x0, [x29,216] - add x0, x0, :lo12:.LANCHOR5 - ldr w1, [x0,712] - add w1, w1, 1 - str w1, [x0,712] - b .L3335 -.L3333: - ldr w0, [x27,8] - cmp w0, w28 - beq .L3335 - ldr x0, [x29,216] - mov w2, w28 - add x0, x0, :lo12:.LANCHOR5 - ldr w1, [x0,712] - add w1, w1, 1 - str w1, [x0,712] - ldr x0, [x29,104] - ldr w1, [x27,8] - bl printk - b .L3335 -.L3332: - ldr w0, [x2,2496] - mov w1, 56 - umull x0, w0, w1 - ldr x1, [x2,2560] - ldrh w2, [x2,2354] - add x0, x1, x0 - mov w1, 0 - ldr x0, [x0,8] - bl ftl_memset -.L3335: - ldr w1, [x29,196] - mov w0, 56 - lsl w2, w19, 9 - cbz w1, .L3336 - add x1, x22, :lo12:.LANCHOR2 - ldr w4, [x1,2496] - umull x0, w4, w0 - ldr x4, [x1,2560] - add x4, x4, x0 - ldr x0, [x29,160] - ubfiz x0, x0, 9, 23 - ldr x1, [x4,8] - add x0, x1, x0 - mov x1, x25 - b .L3377 -.L3336: - add x5, x22, :lo12:.LANCHOR2 - ldr w4, [x5,2496] - ldr x1, [x5,2560] - umull x0, w4, w0 - add x0, x1, x0 - ldrh w1, [x5,2350] - mul w1, w28, w1 - ldr x0, [x0,8] - sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - add x1, x25, x1 - b .L3377 -.L3324: - ldr w0, [x29,212] - ldrh w1, [x19,2350] - ldr w2, [x19,2496] - cbz w0, .L3337 - mul w1, w28, w1 - umull x0, w2, w4 - sub w1, w1, w23 - ldr x2, [x19,2560] - ubfiz x1, x1, 9, 23 - add x0, x2, x0 - add x1, x25, x1 -.L3376: - str x1, [x0,8] - b .L3331 -.L3337: - umull x0, w2, w4 - ldr x2, [x19,2560] - mul w1, w28, w1 - add x0, x2, x0 - ldrh w2, [x19,2354] - sub w1, w1, w23 - ubfiz x1, x1, 9, 23 - ldr x0, [x0,8] - add x1, x25, x1 -.L3377: - bl ftl_memcpy -.L3331: - ldr x1, [x29,136] + lsl w1, w1, 9 + add x1, x24, x1 +.L3240: + ldr w0, [x29, 188] + add x2, x20, :lo12:.LANCHOR2 + cbz w0, .L3241 + ldr w0, [x2, 2496] + mov w3, 56 + ldr x2, [x2, 2560] + umaddl x0, w0, w3, x2 +.L3287: + str x1, [x0, 8] +.L3242: + ldp x1, x2, [x29, 128] mov w0, -3947 - ldr x2, [x29,144] - strh w0, [x1,x2] - add x1, x22, :lo12:.LANCHOR2 - str w28, [x27,8] - ldr w0, [x1,2400] - str w0, [x27,4] + strh w0, [x1, x2] + add x1, x20, :lo12:.LANCHOR2 + ldr w0, [x1, 2400] + stp w0, w21, [x28, 4] + add w21, w21, 1 add w0, w0, 1 cmn w0, #1 csel w0, w0, wzr, ne - str w0, [x1,2400] - ldr w0, [x29,228] - str w0, [x27,12] - ldrh w0, [x21] - strh w0, [x27,2] - ldr w0, [x1,2496] + str w0, [x1, 2400] + ldr w0, [x29, 196] + str w0, [x28, 12] + ldrh w0, [x22] + strh w0, [x28, 2] + ldr w0, [x1, 2496] add w0, w0, 1 - str w0, [x1,2496] - ldr x0, [x29,200] - add x0, x0, 1 - str x0, [x29,200] - b .L3321 -.L3379: - str w28, [x29,192] - mov x0, x2 - b .L3322 -.L3354: - str w28, [x29,192] -.L3322: - sub w20, w20, w0 - ldr w0, [x29,212] - cbnz w0, .L3341 - add x0, x22, :lo12:.LANCHOR2 - ldr w1, [x0,2496] - ldr w0, [x0,2492] - cmp w1, w0 - bcs .L3341 - ldrh w0, [x21,4] - cbz w0, .L3341 -.L3343: - str wzr, [x29,212] - b .L3314 -.L3341: - bl FtlCacheWriteBack - add x0, x22, :lo12:.LANCHOR2 - cmp w20, 1 - str wzr, [x0,2496] - bhi .L3314 - b .L3343 -.L3378: - ldr w1, [x29,208] - mov w0, w20 - sub w1, w1, w26 - bl ftl_do_gc - ldr x0, [x29,128] - add x0, x0, :lo12:.LANCHOR4 - ldrh w0, [x0,776] - cmp w0, 5 - bls .L3345 - cmp w0, 31 - bhi .L3346 - adrp x0, .LANCHOR0+88 - ldrb w0, [x0,#:lo12:.LANCHOR0+88] - cbnz w0, .L3346 -.L3345: - ldr x0, [x29,216] - mov w19, 65535 - mov w23, 128 - add x24, x0, :lo12:.LANCHOR5 -.L3369: - ldrh w0, [x24,592] - cmp w0, w19 - bne .L3347 - add x0, x22, :lo12:.LANCHOR2 - ldrh w1, [x0,2472] - cmp w1, w19 - bne .L3347 - ldrh w0, [x0,2474] - cmp w0, w19 - bne .L3347 - and w0, w20, 7 - bl List_get_gc_head_node - bl FtlGcRefreshBlock -.L3347: - add x21, x22, :lo12:.LANCHOR2 - mov w0, 1 - mov w1, w0 - strh w23, [x21,2482] - strh w23, [x21,2480] - bl ftl_do_gc - mov w0, 0 + str w0, [x1, 2496] + ldr w0, [x29, 184] + add w0, w0, 1 + str w0, [x29, 184] + b .L3233 +.L3237: + ldrh w0, [x19, 2350] + add w2, w23, w25 + str wzr, [x29, 168] + msub w19, w21, w0, w2 + and w19, w19, 65535 + b .L3238 +.L3269: + mov x1, x24 + b .L3240 +.L3241: + ldr w0, [x2, 2496] + mov w4, 56 + ldr x3, [x2, 2560] + ldrh w2, [x2, 2354] + nop // between mem op and mult-accumulate + umaddl x0, w0, w4, x3 +.L3288: + ldr x0, [x0, 8] + b .L3290 +.L3239: + ldr w1, [x29, 196] + mov w2, 56 + cmn w1, #1 + beq .L3243 + str w1, [x29, 204] + ldr w1, [x0, 2496] + ldr x0, [x0, 2560] + str w21, [x29, 224] + nop // between mem op and mult-accumulate + umaddl x0, w1, w2, x0 + mov w2, 0 + ldp x1, x0, [x0, 8] + stp x1, x0, [x29, 208] mov w1, 1 - bl ftl_do_gc - ldr w0, [x21,2928] - cbnz w0, .L3346 - ldr x0, [x29,128] - add x0, x0, :lo12:.LANCHOR4 - ldrh w0, [x0,776] - cmp w0, 2 - bhi .L3346 - add w20, w20, 1 - cmp w20, 256 - bne .L3369 - b .L3346 -.L3350: + add x0, x29, 200 + bl FlashReadPages + ldr w0, [x29, 200] + cmn w0, #1 + bne .L3244 + ldr x0, [x29, 176] + add x1, x0, 1152 + ldr w0, [x0, 1224] + add w0, w0, 1 + str w0, [x1, 72] +.L3246: + cmp w27, w21 + lsl w2, w19, 9 + bne .L3247 + add x0, x20, :lo12:.LANCHOR2 + mov w3, 56 + ldr w1, [x0, 2496] + ldr x0, [x0, 2560] + umaddl x1, w1, w3, x0 + ldr w0, [x29, 168] + lsl w0, w0, 9 + ldr x3, [x1, 8] + mov x1, x24 + add x0, x3, x0 +.L3290: + bl ftl_memcpy + b .L3242 +.L3244: + ldr w0, [x28, 8] + cmp w21, w0 + beq .L3246 + ldr x0, [x29, 176] + mov w2, w21 + add x1, x0, 1152 + ldr w0, [x0, 1224] + add w0, w0, 1 + str w0, [x1, 72] + ldr x0, [x29, 104] + ldr w1, [x28, 8] + bl printk + b .L3246 +.L3243: + ldr x1, [x0, 2560] + ldr w3, [x0, 2496] + umaddl x3, w3, w2, x1 + ldrh w2, [x0, 2354] + mov w1, 0 + ldr x0, [x3, 8] + bl ftl_memset + b .L3246 +.L3247: + add x3, x20, :lo12:.LANCHOR2 + mov w4, 56 + ldrh w1, [x3, 2350] + ldr w0, [x3, 2496] + ldr x3, [x3, 2560] + mul w1, w1, w21 + umaddl x0, w0, w4, x3 + sub w1, w1, w23 + lsl w1, w1, 9 +.L3289: + add x1, x24, x1 + b .L3288 +.L3236: + ldr w0, [x29, 188] + ldrh w1, [x19, 2350] + cbz w0, .L3248 + mul w1, w1, w21 + ldr w0, [x19, 2496] + ldr x2, [x19, 2560] + sub w1, w1, w23 + lsl w1, w1, 9 + add x1, x24, x1 + umaddl x0, w0, w4, x2 + b .L3287 +.L3248: + ldr x2, [x19, 2560] + mul w1, w1, w21 + ldr w0, [x19, 2496] + sub w1, w1, w23 + lsl w1, w1, 9 + umaddl x0, w0, w4, x2 + ldrh w2, [x19, 2354] + b .L3289 +.L3252: + bl FtlCacheWriteBack + add x0, x20, :lo12:.LANCHOR2 + cmp w26, 1 + str wzr, [x0, 2496] + bhi .L3227 + b .L3254 +.L3264: mov w0, -1 -.L3307: - 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], 288 - ret + b .L3219 .size ftl_write, .-ftl_write .align 2 .global ftl_vendor_write .type ftl_vendor_write, %function ftl_vendor_write: 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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 16 bl ftl_write ldp x29, x30, [sp], 16 @@ -21555,11 +21050,10 @@ ftl_vendor_write: .type ftl_sys_write, %function ftl_sys_write: stp x29, x30, [sp, -16]! - mov w4, w1 mov x3, x2 - add x29, sp, 0 + mov w2, w1 add w1, w0, 256 - mov w2, w4 + add x29, sp, 0 mov w0, 16 bl ftl_write ldp x29, x30, [sp], 16 @@ -21569,117 +21063,116 @@ ftl_sys_write: .global ftl_fix_nand_power_lost_error .type ftl_fix_nand_power_lost_error, %function ftl_fix_nand_power_lost_error: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR2 - add x0, x19, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldrb w1, [x0,1220] - cbz w1, .L3382 - adrp x21, .LANCHOR5 - ldr x2, [x0,2712] - add x1, x21, :lo12:.LANCHOR5 - adrp x24, .LC165 - adrp x20, .LANCHOR4 - add x0, x24, :lo12:.LC165 - add x20, x20, :lo12:.LANCHOR4 - ldrh w23, [x1,1242] - add x26, x20, 784 - add x25, x20, 832 - ubfiz x22, x23, 1, 16 - mov w1, w23 - ldrh w2, [x2,x22] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + add x19, x20, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrb w0, [x19, 1220] + cbz w0, .L3295 + mov x24, x20 + adrp x21, .LANCHOR4 + add x20, x21, :lo12:.LANCHOR4 + ldr x0, [x19, 2712] + adrp x25, .LC165 + add x27, x20, 784 + add x26, x20, 832 + ldrh w22, [x20, 1754] + mov w1, w22 + ubfiz x23, x22, 1, 16 + ldrh w2, [x0, x23] + add x0, x25, :lo12:.LC165 bl printk - ldrh w0, [x20,784] + ldrh w0, [x20, 784] bl FtlGcRefreshOpenBlock - ldrh w0, [x20,832] + ldrh w0, [x20, 832] mov w20, 4097 bl FtlGcRefreshOpenBlock + mov x0, x27 + bl allocate_new_data_superblock mov x0, x26 bl allocate_new_data_superblock - mov x0, x25 - bl allocate_new_data_superblock -.L3384: +.L3297: subs w20, w20, #1 - beq .L3388 - mov w0, 1 - mov w1, w0 - bl ftl_do_gc - add x0, x19, :lo12:.LANCHOR2 - ldr x0, [x0,2712] - ldrh w0, [x0,x22] - cbnz w0, .L3384 -.L3388: - add x20, x19, :lo12:.LANCHOR2 - add x0, x24, :lo12:.LC165 - mov w1, w23 - ldr x2, [x20,2712] - ldrh w2, [x2,x22] - bl printk - ldr x0, [x20,2712] - ldrh w0, [x0,x22] - cbnz w0, .L3386 - add x0, x29, 80 - strh w23, [x29,80] - bl make_superblock - mov x0, 0 - ldrh w5, [x20,2276] - mov w6, 65535 - mov w20, w0 - mov w7, 56 -.L3389: - cmp w5, w0, uxth - bls .L3396 - add x1, x29, 80 - add x1, x1, x0, lsl 1 - ldrh w2, [x1,16] - cmp w2, w6 - beq .L3390 - add x4, x19, :lo12:.LANCHOR2 - lsl w2, w2, 10 - umull x1, w20, w7 - add w20, w20, 1 - ldr x3, [x4,2544] - uxth w20, w20 - add x3, x3, x1 - str w2, [x3,4] - ldr x2, [x4,2544] - add x1, x2, x1 - str xzr, [x1,8] - str xzr, [x1,16] -.L3390: - add x0, x0, 1 - b .L3389 -.L3396: - add x19, x19, :lo12:.LANCHOR2 - adrp x0, .LC166 - mov w1, w23 - add x0, x0, :lo12:.LC166 - ldr x2, [x19,2712] - ldrh w2, [x2,x22] - bl printk - ldr x0, [x19,2544] - mov w1, 0 - mov w2, w20 - bl FlashEraseBlocks - ldr x0, [x19,2544] + beq .L3301 mov w1, 1 - mov w2, w20 + mov w0, w1 + bl ftl_do_gc + ldr x0, [x19, 2712] + ldrh w0, [x0, x23] + cbnz w0, .L3297 +.L3301: + add x20, x24, :lo12:.LANCHOR2 + mov w1, w22 + ldr x0, [x20, 2712] + ldrh w2, [x0, x23] + add x0, x25, :lo12:.LC165 + bl printk + ldr x0, [x20, 2712] + ldrh w19, [x0, x23] + cbnz w19, .L3299 + add x12, x29, 144 + strh w22, [x12, -48]! + mov x0, x12 + bl make_superblock + ldrh w5, [x20, 2276] + add x12, x12, 16 + mov w0, 0 + mov w6, 65535 + mov w7, 56 +.L3302: + cmp w0, w5 + bne .L3304 + add x24, x24, :lo12:.LANCHOR2 + mov w1, w22 + ldr x0, [x24, 2712] + ldrh w2, [x0, x23] + adrp x0, .LC166 + add x0, x0, :lo12:.LC166 + bl printk + ldr x0, [x24, 2544] + mov w2, w19 + mov w1, 0 bl FlashEraseBlocks -.L3386: - add x21, x21, :lo12:.LANCHOR5 + ldr x0, [x24, 2544] + mov w2, w19 + mov w1, 1 + bl FlashEraseBlocks +.L3299: + add x21, x21, :lo12:.LANCHOR4 mov w0, -1 - strh w0, [x21,1242] -.L3382: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] - ldp x29, x30, [sp], 128 + strh w0, [x21, 1754] +.L3295: + 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], 144 ret +.L3304: + ldrh w2, [x12] + cmp w2, w6 + beq .L3303 + umull x4, w19, w7 + ldr x3, [x20, 2544] + lsl w2, w2, 10 + add w19, w19, 1 + add x3, x3, x4 + and w19, w19, 65535 + str w2, [x3, 4] + ldr x1, [x20, 2544] + add x1, x1, x4 + stp xzr, xzr, [x1, 8] +.L3303: + add w0, w0, 1 + add x12, x12, 2 + and w0, w0, 65535 + b .L3302 .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .global gc_ink_free_return_value .global check_valid_page_count_table @@ -21910,7 +21403,7 @@ ftl_fix_nand_power_lost_error: .global read_retry_cur_offset .section .rodata .align 3 -.LANCHOR3 = . + 0 + .set .LANCHOR3,. + 0 .type samsung_14nm_slc_rr, %object .size samsung_14nm_slc_rr, 26 samsung_14nm_slc_rr: @@ -22048,377 +21541,42 @@ samsung_14nm_mlc_rr: .byte 18 .byte 9 .byte 8 - .type __func__.20983, %object - .size __func__.20983, 11 -__func__.20983: + .type __func__.21177, %object + .size __func__.21177, 11 +__func__.21177: .string "FtlMemInit" .zero 5 - .type __func__.21730, %object - .size __func__.21730, 12 -__func__.21730: + .type __func__.21924, %object + .size __func__.21924, 12 +__func__.21924: .string "FtlCheckVpc" .zero 4 - .type __func__.21762, %object - .size __func__.21762, 17 -__func__.21762: + .type __func__.21956, %object + .size __func__.21956, 17 +__func__.21956: .string "FtlDumpBlockInfo" .zero 7 - .type __func__.21781, %object - .size __func__.21781, 16 -__func__.21781: + .type __func__.21975, %object + .size __func__.21975, 16 +__func__.21975: .string "FtlScanAllBlock" - .type __func__.22049, %object - .size __func__.22049, 17 -__func__.22049: + .type __func__.22243, %object + .size __func__.22243, 17 +__func__.22243: .string "ftl_scan_all_ppa" .zero 7 - .type __func__.22029, %object - .size __func__.22029, 21 -__func__.22029: + .type __func__.22223, %object + .size __func__.22223, 21 +__func__.22223: .string "FtlVpcCheckAndModify" .zero 3 - .type __func__.21056, %object - .size __func__.21056, 8 -__func__.21056: + .type __func__.21250, %object + .size __func__.21250, 8 +__func__.21250: .string "FtlInit" - .section .rodata.str1.1,"aMS",%progbits,1 -.LC0: - .string "BBT:" -.LC1: - .string "FlashEraseBlocks pageAddr error %x\n" -.LC2: - .string "otp error! %d" -.LC3: - .string "rr" -.LC4: - .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n" -.LC5: - .string "nandc:" -.LC6: - .string "%d flReg.d32=%x %x\n" -.LC7: - .string "sdr read ok %x ecc=%d\n" -.LC8: - .string "sync para %d\n" -.LC9: - .string "TOG mode Read error %x %x\n" -.LC10: - .string "read retry status %x %x %x\n" -.LC11: - .string "micron RR %d row=%x,count %d,status=%d\n" -.LC12: - .string "samsung RR %d row=%x,count %d,status=%d\n" -.LC13: - .string "ECC:%d\n" -.LC14: - .string "No.%d FLASH ID:%x %x %x %x %x %x\n" -.LC15: - .string "FlashLoadPhyInfo fail %x!!\n" -.LC16: - .string "Read pageadd=%x ecc=%x err=%x\n" -.LC17: - .string "data:" -.LC18: - .string "spare:" -.LC19: - .string "ReadRetry pageadd=%x ecc=%x err=%x\n" -.LC20: - .string "FLFB:%d %d\n" -.LC21: - .string "prog error: = %x\n" -.LC22: - .string "prog read error: = %x\n" -.LC23: - .string "prog read REFRESH: = %x\n" -.LC24: - .string "prog read s error: = %x %x %x\n" -.LC25: - .string "prog read d error: = %x %x %x\n" -.LC26: - .string "FlashMakeFactorBbt %d\n" -.LC27: - .string "bad block:%d %d\n" -.LC28: - .string "FMFB:%d %d\n" -.LC29: - .string "E:bad block:%d\n" -.LC30: - .string "FMFB:Save %d %d\n" -.LC31: - .string "%s error allocating memory. return -1\n" -.LC32: - .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" -.LC33: - .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" -.LC34: - .string "FtlBbmTblFlush error:%x\n" -.LC35: - .string "FtlBbmTblFlush error = %x error count = %d\n" -.LC36: - .string "FtlFreeSysBlkQueueOut free count = %d\n" -.LC37: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" -.LC38: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" -.LC39: - .string "FtlMapWritePage error = %x\n" -.LC40: - .string "FtlMapWritePage error = %x error count = %d\n" -.LC41: - .string "page map lost: %x %x\n" -.LC42: - .string "region_id = %x phyAddr = %x\n" -.LC43: - .string "map_ppn:" -.LC44: - .string "load_l2p_region refresh = %x phyAddr = %x\n" -.LC45: - .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" -.LC46: - .string "FtlVpcTblFlush error = %x error count = %d\n" -.LC47: - .string "%s\n" -.LC48: - .string "no ect" -.LC49: - .string "...%s enter...\n" -.LC50: - .string "FtlCheckVpc2 %x = %x %x\n" -.LC51: - .string "free blk vpc error %x = %x %x\n" -.LC52: - .string "error_flag %x\n" -.LC53: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" -.LC54: - .string ":" -.LC55: - .string "Ftlscanalldata = %x\n" -.LC56: - .string "scan lpa = %x ppa= %x\n" -.LC57: - .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC58: - .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC59: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC60: - .string "Mblk:" -.LC61: - .string "L2P:" -.LC62: - .string "L2PC:" -.LC63: - .string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n" -.LC64: - .string "superBlkID = %x vpc=%x\n" -.LC65: - .string "flashmode = %x pagenum = %x %x\n" -.LC66: - .string "blk = %x vpc=%x mode = %x\n" -.LC67: - .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC68: - .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC69: - .string "slc mode" -.LC70: - .string "ftl_scan_all_ppa blk %x page %x flag: %x\n" -.LC71: - .string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n" -.LC72: - .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" -.LC73: - .string "%s finished\n" -.LC74: - .string "FLASH INFO:\n" -.LC75: - .string "FLASH ID: %x\n" -.LC76: - .string "Device Capacity: %d MB\n" -.LC77: - .string "FMWAIT: %x %x %x %x\n" -.LC78: - .string "FTL INFO:\n" -.LC79: - .string "g_MaxLpn = 0x%x\n" -.LC80: - .string "g_VaildLpn = 0x%x\n" -.LC81: - .string "read_page_count = 0x%x\n" -.LC82: - .string "discard_page_count = 0x%x\n" -.LC83: - .string "write_page_count = 0x%x\n" -.LC84: - .string "cache_write_count = 0x%x\n" -.LC85: - .string "l2p_write_count = 0x%x\n" -.LC86: - .string "gc_page_count = 0x%x\n" -.LC87: - .string "totle_write = %d MB\n" -.LC88: - .string "totle_read = %d MB\n" -.LC89: - .string "GSV = 0x%x\n" -.LC90: - .string "GDV = 0x%x\n" -.LC91: - .string "bad blk num = %d %d\n" -.LC92: - .string "free_superblocks = 0x%x\n" -.LC93: - .string "mlc_EC = 0x%x\n" -.LC94: - .string "slc_EC = 0x%x\n" -.LC95: - .string "avg_EC = 0x%x\n" -.LC96: - .string "sys_EC = 0x%x\n" -.LC97: - .string "max_EC = 0x%x\n" -.LC98: - .string "min_EC = 0x%x\n" -.LC99: - .string "PLT = 0x%x\n" -.LC100: - .string "POT = 0x%x\n" -.LC101: - .string "MaxSector = 0x%x\n" -.LC102: - .string "init_sys_blks_pp = 0x%x\n" -.LC103: - .string "sys_blks_pp = 0x%x\n" -.LC104: - .string "free sysblock = 0x%x\n" -.LC105: - .string "data_blks_pp = 0x%x\n" -.LC106: - .string "data_op_blks_pp = 0x%x\n" -.LC107: - .string "max_data_blks = 0x%x\n" -.LC108: - .string "Sys.id = 0x%x\n" -.LC109: - .string "Bbt.id = 0x%x\n" -.LC110: - .string "ACT.page = 0x%x\n" -.LC111: - .string "ACT.plane = 0x%x\n" -.LC112: - .string "ACT.id = 0x%x\n" -.LC113: - .string "ACT.mode = 0x%x\n" -.LC114: - .string "ACT.a_pages = 0x%x\n" -.LC115: - .string "ACT VPC = 0x%x\n" -.LC116: - .string "BUF.page = 0x%x\n" -.LC117: - .string "BUF.plane = 0x%x\n" -.LC118: - .string "BUF.id = 0x%x\n" -.LC119: - .string "BUF.mode = 0x%x\n" -.LC120: - .string "BUF.a_pages = 0x%x\n" -.LC121: - .string "BUF VPC = 0x%x\n" -.LC122: - .string "TMP.page = 0x%x\n" -.LC123: - .string "TMP.plane = 0x%x\n" -.LC124: - .string "TMP.id = 0x%x\n" -.LC125: - .string "TMP.mode = 0x%x\n" -.LC126: - .string "TMP.a_pages = 0x%x\n" -.LC127: - .string "GC.page = 0x%x\n" -.LC128: - .string "GC.plane = 0x%x\n" -.LC129: - .string "GC.id = 0x%x\n" -.LC130: - .string "GC.mode = 0x%x\n" -.LC131: - .string "GC.a_pages = 0x%x\n" -.LC132: - .string "WR_CHK = 0x%x %x %x %x\n" -.LC133: - .string "Read Err = 0x%x\n" -.LC134: - .string "Prog Err = 0x%x\n" -.LC135: - .string "gc_free_blk_th= 0x%x\n" -.LC136: - .string "gc_merge_free_blk_th= 0x%x\n" -.LC137: - .string "gc_skip_write_count= 0x%x\n" -.LC138: - .string "gc_blk_index= 0x%x\n" -.LC139: - .string "free min EC= 0x%x\n" -.LC140: - .string "free max EC= 0x%x\n" -.LC141: - .string "GC__SB VPC = 0x%x\n" -.LC142: - .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" -.LC143: - .string "free %d. [0x%x] 0x%x 0x%x\n" -.LC144: - .string "FTL version: 5.0.63 20200923" -.LC145: - .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" -.LC146: - .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" -.LC147: - .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" -.LC148: - .string "FtlGcRefreshBlock 0x%x\n" -.LC149: - .string "FtlGcMarkBadPhyBlk %d 0x%x\n" -.LC150: - .string "FtlGcFreeBadSuperBlk 0x%x\n" -.LC151: - .string "decrement_vpc_count %x = %d\n" -.LC152: - .string "decrement_vpc_count %x = %d in free list\n" -.LC153: - .string "RSB refresh addr %x\n" -.LC154: - .string "spuer block %x vpn is 0\n " -.LC155: - .string "g_recovery_ppa %x ver %x\n " -.LC156: - .string "FtlCheckVpc %x = %x %x\n" -.LC157: - .string "%d GC datablk = %x vpc %x %x\n" -.LC158: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" -.LC159: - .string "Ftlwrite decrement_vpc_count %x = %d\n" -.LC160: - .string "GC des block %x done\n" -.LC161: - .string "too many bad block = %d %d\n" -.LC162: - .string "...%s: no bad block mapping table, format device\n" -.LC163: - .string "...%s FtlSysBlkInit error ,format device!\n" -.LC164: - .string "FtlWrite: lpa error:%x %x\n" -.LC165: - .string "fix power lost blk = %x vpc=%x\n" -.LC166: - .string "erase power lost blk = %x vpc=%x\n" .data .align 3 -.LANCHOR1 = . + 0 + .set .LANCHOR1,. + 0 .type random_seed, %object .size random_seed, 256 random_seed: @@ -22550,55 +21708,6 @@ 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: @@ -22698,6 +21807,55 @@ Toshiba15RefValue: .byte 114 .byte 0 .zero 1 + .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 ToshibaRefValue, %object .size ToshibaRefValue, 8 ToshibaRefValue: @@ -25195,10 +24353,13 @@ power_up_flag: .word 1 .bss .align 3 -.LANCHOR0 = . + 0 -.LANCHOR2 = . + 4352 -.LANCHOR4 = . + 8704 -.LANCHOR5 = . + 17408 + .set .LANCHOR0,. + 0 + .set .LANCHOR2,. + 4352 + .set .LANCHOR4,. + 8704 + .type gNandChipMap, %object + .size gNandChipMap, 64 +gNandChipMap: + .zero 64 .type gFlashPageBuffer0, %object .size gFlashPageBuffer0, 8 gFlashPageBuffer0: @@ -25212,10 +24373,6 @@ 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: @@ -25980,11 +25137,7 @@ gSysInfo: .size g_totle_map_block, 2 g_totle_map_block: .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 + .zero 2 .type g_MaxLbn, %object .size g_MaxLbn, 4 g_MaxLbn: @@ -25993,7 +25146,7 @@ g_MaxLbn: .size c_ftl_nand_data_op_blks_per_plane, 2 c_ftl_nand_data_op_blks_per_plane: .zero 2 - .zero 2 + .zero 6 .type g_gc_superblock, %object .size g_gc_superblock, 48 g_gc_superblock: @@ -26109,6 +25262,10 @@ 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 g_gc_refresh_block_temp_tbl, %object .size g_gc_refresh_block_temp_tbl, 34 g_gc_refresh_block_temp_tbl: @@ -26138,3 +25295,338 @@ gFlashOnfiModeEn: .size gFlashSdrModeEn, 1 gFlashSdrModeEn: .zero 1 + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "BBT:" +.LC1: + .string "FlashEraseBlocks pageAddr error %x\n" +.LC2: + .string "otp error! %d" +.LC3: + .string "rr" +.LC4: + .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n" +.LC5: + .string "nandc:" +.LC6: + .string "%d flReg.d32=%x %x\n" +.LC7: + .string "sdr read ok %x ecc=%d\n" +.LC8: + .string "sync para %d\n" +.LC9: + .string "TOG mode Read error %x %x\n" +.LC10: + .string "read retry status %x %x %x\n" +.LC11: + .string "micron RR %d row=%x,count %d,status=%d\n" +.LC12: + .string "samsung RR %d row=%x,count %d,status=%d\n" +.LC13: + .string "ECC:%d\n" +.LC14: + .string "No.%d FLASH ID:%x %x %x %x %x %x\n" +.LC15: + .string "FlashLoadPhyInfo fail %x!!\n" +.LC16: + .string "Read pageadd=%x ecc=%x err=%x\n" +.LC17: + .string "data:" +.LC18: + .string "spare:" +.LC19: + .string "ReadRetry pageadd=%x ecc=%x err=%x\n" +.LC20: + .string "FLFB:%d %d\n" +.LC21: + .string "prog error: = %x\n" +.LC22: + .string "prog read error: = %x\n" +.LC23: + .string "prog read REFRESH: = %x\n" +.LC24: + .string "prog read s error: = %x %x %x\n" +.LC25: + .string "prog read d error: = %x %x %x\n" +.LC26: + .string "FlashMakeFactorBbt %d\n" +.LC27: + .string "bad block:%d %d\n" +.LC28: + .string "FMFB:%d %d\n" +.LC29: + .string "E:bad block:%d\n" +.LC30: + .string "FMFB:Save %d %d\n" +.LC31: + .string "%s error allocating memory. return -1\n" +.LC32: + .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" +.LC33: + .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" +.LC34: + .string "FtlBbmTblFlush error:%x\n" +.LC35: + .string "FtlBbmTblFlush error = %x error count = %d\n" +.LC36: + .string "FtlFreeSysBlkQueueOut free count = %d\n" +.LC37: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" +.LC38: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" +.LC39: + .string "FtlMapWritePage error = %x\n" +.LC40: + .string "FtlMapWritePage error = %x error count = %d\n" +.LC41: + .string "page map lost: %x %x\n" +.LC42: + .string "region_id = %x phyAddr = %x\n" +.LC43: + .string "map_ppn:" +.LC44: + .string "load_l2p_region refresh = %x phyAddr = %x\n" +.LC45: + .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" +.LC46: + .string "FtlVpcTblFlush error = %x error count = %d\n" +.LC47: + .string "no ect" +.LC48: + .string "%s\n" +.LC49: + .string "...%s enter...\n" +.LC50: + .string "FtlCheckVpc2 %x = %x %x\n" +.LC51: + .string "free blk vpc error %x = %x %x\n" +.LC52: + .string "error_flag %x\n" +.LC53: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" +.LC54: + .string ":" +.LC55: + .string "Ftlscanalldata = %x\n" +.LC56: + .string "scan lpa = %x ppa= %x\n" +.LC57: + .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC58: + .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC59: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC60: + .string "Mblk:" +.LC61: + .string "L2P:" +.LC62: + .string "L2PC:" +.LC63: + .string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n" +.LC64: + .string "superBlkID = %x vpc=%x\n" +.LC65: + .string "flashmode = %x pagenum = %x %x\n" +.LC66: + .string "blk = %x vpc=%x mode = %x\n" +.LC67: + .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC68: + .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" +.LC69: + .string "slc mode" +.LC70: + .string "ftl_scan_all_ppa blk %x page %x flag: %x\n" +.LC71: + .string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n" +.LC72: + .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" +.LC73: + .string "%s finished\n" +.LC74: + .string "FLASH INFO:\n" +.LC75: + .string "FLASH ID: %x\n" +.LC76: + .string "Device Capacity: %d MB\n" +.LC77: + .string "FMWAIT: %x %x %x %x\n" +.LC78: + .string "FTL INFO:\n" +.LC79: + .string "g_MaxLpn = 0x%x\n" +.LC80: + .string "g_VaildLpn = 0x%x\n" +.LC81: + .string "read_page_count = 0x%x\n" +.LC82: + .string "discard_page_count = 0x%x\n" +.LC83: + .string "write_page_count = 0x%x\n" +.LC84: + .string "cache_write_count = 0x%x\n" +.LC85: + .string "l2p_write_count = 0x%x\n" +.LC86: + .string "gc_page_count = 0x%x\n" +.LC87: + .string "totle_write = %d MB\n" +.LC88: + .string "totle_read = %d MB\n" +.LC89: + .string "GSV = 0x%x\n" +.LC90: + .string "GDV = 0x%x\n" +.LC91: + .string "bad blk num = %d %d\n" +.LC92: + .string "free_superblocks = 0x%x\n" +.LC93: + .string "mlc_EC = 0x%x\n" +.LC94: + .string "slc_EC = 0x%x\n" +.LC95: + .string "avg_EC = 0x%x\n" +.LC96: + .string "sys_EC = 0x%x\n" +.LC97: + .string "max_EC = 0x%x\n" +.LC98: + .string "min_EC = 0x%x\n" +.LC99: + .string "PLT = 0x%x\n" +.LC100: + .string "POT = 0x%x\n" +.LC101: + .string "MaxSector = 0x%x\n" +.LC102: + .string "init_sys_blks_pp = 0x%x\n" +.LC103: + .string "sys_blks_pp = 0x%x\n" +.LC104: + .string "free sysblock = 0x%x\n" +.LC105: + .string "data_blks_pp = 0x%x\n" +.LC106: + .string "data_op_blks_pp = 0x%x\n" +.LC107: + .string "max_data_blks = 0x%x\n" +.LC108: + .string "Sys.id = 0x%x\n" +.LC109: + .string "Bbt.id = 0x%x\n" +.LC110: + .string "ACT.page = 0x%x\n" +.LC111: + .string "ACT.plane = 0x%x\n" +.LC112: + .string "ACT.id = 0x%x\n" +.LC113: + .string "ACT.mode = 0x%x\n" +.LC114: + .string "ACT.a_pages = 0x%x\n" +.LC115: + .string "ACT VPC = 0x%x\n" +.LC116: + .string "BUF.page = 0x%x\n" +.LC117: + .string "BUF.plane = 0x%x\n" +.LC118: + .string "BUF.id = 0x%x\n" +.LC119: + .string "BUF.mode = 0x%x\n" +.LC120: + .string "BUF.a_pages = 0x%x\n" +.LC121: + .string "BUF VPC = 0x%x\n" +.LC122: + .string "TMP.page = 0x%x\n" +.LC123: + .string "TMP.plane = 0x%x\n" +.LC124: + .string "TMP.id = 0x%x\n" +.LC125: + .string "TMP.mode = 0x%x\n" +.LC126: + .string "TMP.a_pages = 0x%x\n" +.LC127: + .string "GC.page = 0x%x\n" +.LC128: + .string "GC.plane = 0x%x\n" +.LC129: + .string "GC.id = 0x%x\n" +.LC130: + .string "GC.mode = 0x%x\n" +.LC131: + .string "GC.a_pages = 0x%x\n" +.LC132: + .string "WR_CHK = 0x%x %x %x %x\n" +.LC133: + .string "Read Err = 0x%x\n" +.LC134: + .string "Prog Err = 0x%x\n" +.LC135: + .string "gc_free_blk_th= 0x%x\n" +.LC136: + .string "gc_merge_free_blk_th= 0x%x\n" +.LC137: + .string "gc_skip_write_count= 0x%x\n" +.LC138: + .string "gc_blk_index= 0x%x\n" +.LC139: + .string "free min EC= 0x%x\n" +.LC140: + .string "free max EC= 0x%x\n" +.LC141: + .string "GC__SB VPC = 0x%x\n" +.LC142: + .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" +.LC143: + .string "free %d. [0x%x] 0x%x 0x%x\n" +.LC144: + .string "FTL version: 5.0.63 20210616" +.LC145: + .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" +.LC146: + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" +.LC147: + .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" +.LC148: + .string "FtlGcRefreshBlock 0x%x\n" +.LC149: + .string "FtlGcMarkBadPhyBlk %d 0x%x\n" +.LC150: + .string "FtlGcFreeBadSuperBlk 0x%x\n" +.LC151: + .string "decrement_vpc_count %x = %d\n" +.LC152: + .string "decrement_vpc_count %x = %d in free list\n" +.LC153: + .string "RSB refresh addr %x\n" +.LC154: + .string "spuer block %x vpn is 0\n " +.LC155: + .string "g_recovery_ppa %x ver %x\n " +.LC156: + .string "FtlCheckVpc %x = %x %x\n" +.LC157: + .string "%d GC datablk = %x vpc %x %x\n" +.LC158: + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" +.LC159: + .string "Ftlwrite decrement_vpc_count %x = %d\n" +.LC160: + .string "GC des block %x done\n" +.LC161: + .string "too many bad block = %d %d\n" +.LC162: + .string "...%s: no bad block mapping table, format device\n" +.LC163: + .string "...%s FtlSysBlkInit error ,format device!\n" +.LC164: + .string "FtlWrite: lpa error:%x %x\n" +.LC165: + .string "fix power lost blk = %x vpc=%x\n" +.LC166: + .string "erase power lost blk = %x vpc=%x\n" diff --git a/drivers/rk_nand/rk_nand_base.c b/drivers/rk_nand/rk_nand_base.c index c6192c13759b..67137d18f80c 100644 --- a/drivers/rk_nand/rk_nand_base.c +++ b/drivers/rk_nand/rk_nand_base.c @@ -51,7 +51,7 @@ static int rk_timer_add; void *ftl_malloc(int size) { - return kmalloc(size, GFP_KERNEL | GFP_DMA); + return kmalloc(size, GFP_KERNEL | GFP_DMA32); } void ftl_free(void *buf) @@ -96,24 +96,15 @@ EXPORT_SYMBOL(rknand_dma_flush_dcache); unsigned long rknand_dma_map_single(unsigned long ptr, int size, int dir) { -#ifdef CONFIG_ARM64 - __dma_map_area((void *)ptr, size, dir); - return ((unsigned long)virt_to_phys((void *)ptr)); -#else - return dma_map_single(NULL, (void *)ptr, size + return dma_map_single(g_nand_device, (void *)ptr, size , dir ? DMA_TO_DEVICE : DMA_FROM_DEVICE); -#endif } EXPORT_SYMBOL(rknand_dma_map_single); void rknand_dma_unmap_single(unsigned long ptr, int size, int dir) { -#ifdef CONFIG_ARM64 - __dma_unmap_area(phys_to_virt(ptr), size, dir); -#else - dma_unmap_single(NULL, (dma_addr_t)ptr, size + dma_unmap_single(g_nand_device, (dma_addr_t)ptr, size , dir ? DMA_TO_DEVICE : DMA_FROM_DEVICE); -#endif } EXPORT_SYMBOL(rknand_dma_unmap_single); @@ -392,7 +383,7 @@ static int rknand_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_get_sync(&pdev->dev); - return 0; + return dma_set_mask(g_nand_device, DMA_BIT_MASK(32)); } static int rknand_suspend(struct platform_device *pdev, pm_message_t state) diff --git a/drivers/rk_nand/rk_zftl_arm64.S b/drivers/rk_nand/rk_zftl_arm64.S index 12045b051a46..e2ded818efc9 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: 2021-01-07 + * date: 2021-06-16 * function: rk ftl v6 for rockchip soc base on arm v8 to support 3D/2D * TLC and MLC. */ @@ -17,20 +17,19 @@ flash_mem_cmp8: mov x3, 0 .L2: - cmp w3, w2 mov w4, w3 - bcs .L7 - ldrb w5, [x0,x3] + cmp w3, w2 + bcc .L4 + mov w0, 0 + ret +.L4: + ldrb w5, [x0, x3] add x3, x3, 1 add x6, x1, x3 - ldrb w6, [x6,-1] + ldrb w6, [x6, -1] cmp w6, w5 beq .L2 add w0, w4, 1 - b .L3 -.L7: - mov w0, 0 -.L3: ret .size flash_mem_cmp8, .-flash_mem_cmp8 .align 2 @@ -38,25 +37,25 @@ flash_mem_cmp8: slc_phy_page_address_calc: adrp x1, .LANCHOR0 add x2, x1, :lo12:.LANCHOR0 - ldrb w3, [x1,#:lo12:.LANCHOR0] - cbz w3, .L9 - ldrb w2, [x2,1] - cbz w2, .L10 -.L9: + ldrb w3, [x1, #:lo12:.LANCHOR0] + cbz w3, .L7 + ldrb w2, [x2, 1] + cbz w2, .L8 +.L7: add x1, x1, :lo12:.LANCHOR0 - ldrh w3, [x1,2] + ldrh w3, [x1, 2] udiv w2, w0, w3 mul w2, w2, w3 - ldrb w3, [x1,1] + ldrb w3, [x1, 1] sub w0, w0, w2 - cbz w3, .L11 + cbz w3, .L9 add w0, w2, w0, lsl 1 - b .L10 -.L11: + ret +.L9: add x1, x1, 4 - ldrh w0, [x1,w0,uxtw 1] + ldrh w0, [x1, w0, uxtw 1] add w0, w0, w2 -.L10: +.L8: ret .size slc_phy_page_address_calc, .-slc_phy_page_address_calc .align 2 @@ -64,30 +63,29 @@ slc_phy_page_address_calc: .type zftl_nandc_get_irq_status, %function zftl_nandc_get_irq_status: adrp x1, .LANCHOR0+1028 - ldrb w1, [x1,#:lo12:.LANCHOR0+1028] + ldrb w1, [x1, #:lo12:.LANCHOR0+1028] cmp w1, 9 - bne .L19 - ldr w0, [x0,296] - b .L20 -.L19: - ldr w0, [x0,372] -.L20: + bne .L17 + ldr w0, [x0, 296] + ret +.L17: + ldr w0, [x0, 372] ret .size zftl_nandc_get_irq_status, .-zftl_nandc_get_irq_status - .section .text.unlikely,"ax",%progbits + .section .text.unlikely,"ax",@progbits .align 2 .type isxdigit, %function isxdigit: and w1, w0, -33 - mov w2, 1 sub w1, w1, #65 cmp w1, 25 - bls .L22 + bls .L21 sub w0, w0, #48 cmp w0, 9 - cset w2, ls -.L22: - mov w0, w2 + cset w0, ls + ret +.L21: + mov w0, 1 ret .size isxdigit, .-isxdigit .text @@ -95,133 +93,178 @@ isxdigit: .global zftl_get_density .type zftl_get_density, %function zftl_get_density: - cbnz w0, .L25 + cbnz w0, .L23 adrp x0, .LANCHOR0+1032 - ldr w0, [x0,#:lo12:.LANCHOR0+1032] - b .L26 -.L25: + ldr w0, [x0, #:lo12:.LANCHOR0+1032] + ret +.L23: cmp w0, 4 - mov w0, 8192 - csel w0, w0, wzr, cc -.L26: + cset w0, cc + lsl w0, w0, 13 ret .size zftl_get_density, .-zftl_get_density .align 2 .type _list_remove_node, %function _list_remove_node: stp x29, x30, [sp, -64]! - uxth w1, w1 + and w1, w1, 65535 mov w4, 6 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x3, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] umull x21, w1, w4 - ldr x23, [x3,1040] - mov w3, 65535 + mov w1, 65535 + ldr x23, [x3, 1040] add x20, x23, x21 - ldrh w1, [x23,x21] - cmp w1, w3 - bne .L29 - ldrh w3, [x20,2] - cmp w3, w1 - bne .L29 + ldrh w4, [x23, x21] + ldrh w3, [x20, 2] + cmp w4, w1 ldr x1, [x0] + bne .L27 + cmp w3, w4 + bne .L27 cmp x20, x1 - bne .L28 -.L29: - ldrh w1, [x20,2] + bne .L26 +.L27: mov x22, x0 - mov w0, 65535 mov x24, x2 - cmp w1, w0 - bne .L31 - ldr x0, [x22] - cmp x20, x0 - beq .L31 - adrp x0, .LC0 + mov w0, 65535 + cmp w3, w0 + bne .L29 + cmp x20, x1 + beq .L29 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 mov w2, 202 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L31: +.L29: ldr x0, [x22] - mov w2, 65535 + ldrh w3, [x23, x21] cmp x20, x0 - bne .L32 - ldrh w1, [x23,x21] - cmp w1, w2 - bne .L33 + mov w0, 65535 + bne .L30 + cmp w3, w0 + bne .L31 str xzr, [x22] - b .L34 -.L33: - add x19, x19, :lo12:.LANCHOR0 - mov w0, 6 - umull x1, w1, w0 - ldr x0, [x19,1040] - add x1, x0, x1 - str x1, [x22] - mov w0, -1 - strh w0, [x1,2] - b .L34 .L32: - ldrh w0, [x23,x21] - cmp w0, w2 - bne .L35 - ldrh w1, [x20,2] - cmp w1, w0 - beq .L34 - add x19, x19, :lo12:.LANCHOR0 - mov w0, 6 - mov w2, -1 - umull x1, w1, w0 - ldr x0, [x19,1040] - b .L36 -.L35: - add x19, x19, :lo12:.LANCHOR0 - mov w1, 6 - ldrh w2, [x20,2] - umull x0, w0, w1 - ldr x3, [x19,1040] - add x0, x3, x0 - strh w2, [x0,2] - ldrh w0, [x20,2] - ldrh w2, [x23,x21] - umull x0, w0, w1 - ldr x1, [x19,1040] -.L36: - strh w2, [x1,x0] -.L34: mov w0, -1 - strh w0, [x23,x21] - strh w0, [x20,2] + strh w0, [x23, x21] + strh w0, [x20, 2] ldrh w0, [x24] sub w0, w0, #1 strh w0, [x24] -.L28: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L26: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L31: + add x19, x19, :lo12:.LANCHOR0 + mov w1, 6 + ldr x0, [x19, 1040] + umaddl x3, w3, w1, x0 + mov w0, -1 + str x3, [x22] + strh w0, [x3, 2] + b .L32 +.L30: + cmp w3, w0 + ldrh w0, [x20, 2] + bne .L33 + cmp w0, w3 + beq .L32 + add x19, x19, :lo12:.LANCHOR0 + mov w1, 6 + mov w2, -1 + umull x0, w0, w1 + ldr x1, [x19, 1040] +.L35: + strh w2, [x1, x0] + b .L32 +.L33: + add x19, x19, :lo12:.LANCHOR0 + mov w1, 6 + ldr x2, [x19, 1040] + umaddl x3, w3, w1, x2 + strh w0, [x3, 2] + ldrh w0, [x20, 2] + ldrh w2, [x23, x21] + umull x0, w0, w1 + ldr x1, [x19, 1040] + b .L35 .size _list_remove_node, .-_list_remove_node .align 2 + .type hynix_set_rr_para, %function +hynix_set_rr_para: + stp x29, x30, [sp, -64]! + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 + and w1, w1, 255 + add x29, sp, 0 + stp x21, x22, [sp, 32] + and w0, w0, 255 + str x23, [sp, 48] + stp x19, x20, [sp, 16] + ldr x2, [x3, 1048] + ldr x19, [x3, 1056] + add x23, x2, 128 + add x21, x2, 112 + ldrb w22, [x2, 113] + ldrb w2, [x2, 112] + cmp w2, 8 + mov x2, 32 + umaddl x1, w1, w22, x2 + beq .L37 + mov w2, 160 + umaddl x1, w2, w0, x1 +.L37: + ubfiz x0, x0, 8, 8 + add x21, x21, x1 + add x19, x19, x0 + mov x20, 0 + mov w0, 54 + str w0, [x19, 2056] +.L39: + cmp w22, w20, uxtb + bhi .L40 + mov w0, 22 + str w0, [x19, 2056] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] + ldp x29, x30, [sp], 64 + ret +.L40: + ldrb w0, [x23, x20] + str w0, [x19, 2052] + mov x0, 600 + bl __const_udelay + ldrsb w0, [x21, x20] + add x20, x20, 1 + str w0, [x19, 2048] + b .L39 + .size hynix_set_rr_para, .-hynix_set_rr_para + .align 2 .type zftl_debug_proc_open, %function zftl_debug_proc_open: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x1, [x29,24] + str x19, [sp, 16] + mov x19, x1 bl PDE_DATA - ldr x1, [x29,24] mov x2, x0 - mov x0, x1 adrp x1, zftl_debug_proc_show + mov x0, x19 add x1, x1, :lo12:zftl_debug_proc_show bl single_open + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size zftl_debug_proc_open, .-zftl_debug_proc_open @@ -229,21 +272,21 @@ zftl_debug_proc_open: .type zftl_debug_proc_show, %function zftl_debug_proc_show: stp x29, x30, [sp, -32]! - adrp x1, .LC1 - adrp x2, .LC2 + adrp x2, .LC1 + adrp x1, .LC2 + add x2, x2, :lo12:.LC1 add x29, sp, 0 - add x1, x1, :lo12:.LC1 - add x2, x2, :lo12:.LC2 - str x19, [sp,16] + str x19, [sp, 16] + add x1, x1, :lo12:.LC2 mov x19, x0 bl seq_printf - adrp x2, .LANCHOR2 + adrp x0, .LANCHOR2 adrp x1, .LC3 - mov x0, x19 add x1, x1, :lo12:.LC3 - ldr w2, [x2,#:lo12:.LANCHOR2] + ldr w2, [x0, #:lo12:.LANCHOR2] + mov x0, x19 bl seq_printf - ldr x19, [sp,16] + ldr x19, [sp, 16] mov w0, 0 ldp x29, x30, [sp], 32 ret @@ -254,260 +297,263 @@ zftl_debug_proc_show: zftl_flash_suspend: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,1028] + ldrb w1, [x0, 1028] cmp w1, 9 - ldr x1, [x0,1048] + ldr x1, [x0, 1056] ldr w2, [x1] - str w2, [x0,1056] - ldr w2, [x1,4] - str w2, [x0,1060] - bne .L40 - ldr w2, [x1,16] - str w2, [x0,1064] - ldr w2, [x1,32] - str w2, [x0,1068] - ldr w2, [x1,80] - str w2, [x0,1072] - ldr w2, [x1,84] - str w2, [x0,1076] - ldr w2, [x1,520] - str w2, [x0,1080] - ldr w1, [x1,8] - b .L42 -.L40: - ldr w2, [x1,8] - str w2, [x0,1064] - ldr w2, [x1,12] - str w2, [x0,1068] - ldr w2, [x1,304] - str w2, [x0,1072] - ldr w2, [x1,308] - str w2, [x0,1076] - ldr w2, [x1,336] - ldr w1, [x1,344] - str w2, [x0,1080] -.L42: - str w1, [x0,1084] + str w2, [x0, 1064] + ldr w2, [x1, 4] + str w2, [x0, 1068] + bne .L47 + ldr w2, [x1, 16] + str w2, [x0, 1072] + ldr w2, [x1, 32] + str w2, [x0, 1076] + ldr w2, [x1, 80] + str w2, [x0, 1080] + ldr w2, [x1, 84] + str w2, [x0, 1084] + ldr w2, [x1, 520] + ldr w1, [x1, 8] + str w2, [x0, 1088] +.L49: + str w1, [x0, 1092] ret +.L47: + ldr w2, [x1, 8] + str w2, [x0, 1072] + ldr w2, [x1, 12] + str w2, [x0, 1076] + ldr w2, [x1, 304] + str w2, [x0, 1080] + ldr w2, [x1, 308] + str w2, [x0, 1084] + ldr w2, [x1, 336] + str w2, [x0, 1088] + ldr w1, [x1, 344] + b .L49 .size zftl_flash_suspend, .-zftl_flash_suspend .align 2 .type nandc_irq_disable, %function nandc_irq_disable: adrp x2, .LANCHOR0+1028 - ldrb w2, [x2,#:lo12:.LANCHOR0+1028] + ldrb w2, [x2, #:lo12:.LANCHOR0+1028] cmp w2, 9 mov x2, 1 - bne .L44 - ldr w3, [x0,292] + bne .L51 + ldr w3, [x0, 292] lsl x1, x2, x1 orr w2, w3, w1 - str w2, [x0,292] - ldr w2, [x0,288] + str w2, [x0, 292] + ldr w2, [x0, 288] bic w1, w2, w1 - str w1, [x0,288] - b .L43 -.L44: - ldr w3, [x0,368] + str w1, [x0, 288] + ret +.L51: + ldr w3, [x0, 368] lsl x1, x2, x1 orr w2, w3, w1 - str w2, [x0,368] - ldr w2, [x0,364] + str w2, [x0, 368] + ldr w2, [x0, 364] bic w1, w2, w1 - str w1, [x0,364] -.L43: + str w1, [x0, 364] ret .size nandc_irq_disable, .-nandc_irq_disable .align 2 .type _insert_free_list, %function _insert_free_list: - adrp x3, .LANCHOR0 - uxth w1, w1 - add x6, x3, :lo12:.LANCHOR0 - mov x10, x3 - ldrh w4, [x6,1088] + adrp x9, .LANCHOR0 + add x3, x9, :lo12:.LANCHOR0 + and w1, w1, 65535 + ldrh w4, [x3, 1096] cmp w4, w1 - bls .L46 - ldrh w3, [x2] - mov w7, 6 - add w3, w3, 1 - strh w3, [x2] - umull x11, w1, w7 - ldr x12, [x6,1040] + bls .L53 + ldrh w4, [x2] + mov w6, 6 + add w4, w4, 1 + strh w4, [x2] + umull x10, w1, w6 mov w2, -1 - add x5, x12, x11 - strh w2, [x5,2] - strh w2, [x12,x11] + ldr x11, [x3, 1040] + add x5, x11, x10 + strh w2, [x5, 2] + strh w2, [x11, x10] ldr x2, [x0] - cbz x2, .L53 - ldr x9, [x6,1096] - ubfiz x8, x1, 2, 16 - ldrh w13, [x6,1104] - mov w16, 65535 - ldr x14, [x6,1040] - mov x6, -6148914691236517206 - ldr w4, [x9,x8] - ubfx x3, x4, 11, 8 - ldrh w4, [x9,x8] - mov w8, w7 - ubfx x4, x4, 0, 11 - madd w4, w13, w3, w4 + cbnz x2, .L55 +.L60: + str x5, [x0] + ret +.L55: + ldr x8, [x3, 1104] + ubfiz x7, x1, 2, 16 + ldrh w13, [x3, 1112] + mov w15, 65535 + ldr x14, [x3, 1040] + ldr w4, [x8, x7] sub x3, x2, x14 + ldrh w7, [x8, x7] asr x3, x3, 1 - uxth w4, w4 - madd x3, x6, x3, x3 - uxth w3, w3 -.L51: - ubfiz x15, x3, 2, 16 - ldr w6, [x9,x15] - ubfx x7, x6, 11, 8 - ldrh w6, [x9,x15] - ubfx x6, x6, 0, 11 - madd w6, w13, w7, w6 + and w7, w7, 2047 + ubfx x4, x4, 11, 8 + madd w4, w13, w4, w7 + mov x7, -6148914691236517206 + movk x7, 0xaaab, lsl 0 + and w4, w4, 65535 + mul x3, x3, x7 + mov w7, w6 + and w3, w3, 65535 +.L58: + ubfiz x12, x3, 2, 16 + ldr w6, [x8, x12] + ldrh w12, [x8, x12] + ubfx x6, x6, 11, 8 + and w12, w12, 2047 + madd w6, w13, w6, w12 cmp w4, w6, uxth - bls .L49 + bls .L56 ldrh w6, [x2] - cmp w6, w16 - bne .L50 - strh w3, [x5,2] + cmp w6, w15 + bne .L57 + strh w3, [x5, 2] strh w1, [x2] - b .L46 -.L50: - umull x2, w6, w8 + ret +.L57: + umaddl x2, w6, w7, x14 mov w3, w6 - add x2, x14, x2 - b .L51 -.L49: - ldrh w4, [x2,2] - strh w4, [x5,2] - strh w3, [x12,x11] + b .L58 +.L56: + ldrh w4, [x2, 2] + strh w4, [x5, 2] + strh w3, [x11, x10] ldr x3, [x0] cmp x2, x3 - bne .L52 - strh w1, [x2,2] -.L53: - str x5, [x0] - b .L46 -.L52: - ldrh w0, [x2,2] - add x3, x10, :lo12:.LANCHOR0 + bne .L59 + strh w1, [x2, 2] + b .L60 +.L59: + ldrh w0, [x2, 2] + add x3, x9, :lo12:.LANCHOR0 mov w4, 6 - ldr x3, [x3,1040] + ldr x3, [x3, 1040] umull x0, w0, w4 - strh w1, [x3,x0] - strh w1, [x2,2] -.L46: + strh w1, [x3, x0] + strh w1, [x2, 2] +.L53: ret .size _insert_free_list, .-_insert_free_list .align 2 .type _insert_data_list, %function _insert_data_list: - sub sp, sp, #32 - adrp x6, .LANCHOR0 - add x10, x6, :lo12:.LANCHOR0 - uxth w1, w1 - stp x19, x20, [sp] - str x21, [sp,16] - ldrh w3, [x10,1088] + adrp x9, .LANCHOR0 + add x5, x9, :lo12:.LANCHOR0 + and w1, w1, 65535 + ldrh w3, [x5, 1096] cmp w3, w1 - bls .L54 + bls .L83 ldrh w3, [x2] - mov w8, 6 + mov w11, 6 add w3, w3, 1 strh w3, [x2] - umull x8, w1, w8 - ldr x14, [x10,1040] + umull x11, w1, w11 mov w2, -1 - add x7, x14, x8 - strh w2, [x7,2] - strh w2, [x14,x8] + ldr x13, [x5, 1040] + add x10, x13, x11 + strh w2, [x10, 2] + strh w2, [x13, x11] ldr x2, [x0] - cbz x2, .L72 - uxtw x9, w1 - ldr x15, [x10,1112] - ldr x13, [x10,1096] - ldrh w11, [x7,4] - ldrh w5, [x15,x9,lsl 1] - lsl x9, x9, 2 - ldrh w16, [x10,1104] - ldr w3, [x13,x9] - mul w5, w5, w11 - ubfx x4, x3, 11, 8 - ldrh w3, [x13,x9] - and w3, w3, 2047 - cbz w5, .L58 - madd w3, w16, w4, w3 - add w5, w5, w3, uxth -.L58: - add x4, x6, :lo12:.LANCHOR0 - mov x9, -6148914691236517206 - cmp w11, wzr - mov w21, 65535 - csinv w5, w5, wzr, ne - mov w19, 6 - ldr x17, [x4,1040] - ldrh w20, [x4,1088] - sub x3, x2, x17 - asr x3, x3, 1 - madd x3, x9, x3, x3 - mov w9, 0 - uxth w3, w3 + cbnz x2, .L64 + str x10, [x0] + ret .L64: - add w9, w9, 1 + stp x29, x30, [sp, -32]! + uxtw x4, w1 + add x29, sp, 0 + str x19, [sp, 16] + ldr x14, [x5, 1120] + ldrh w6, [x10, 4] + ldr x12, [x5, 1104] + ldrh w15, [x5, 1112] + ldrh w8, [x14, x4, lsl 1] + lsl x4, x4, 2 + ldr w3, [x12, x4] + mul w8, w8, w6 + ldrh w4, [x12, x4] + ubfx x3, x3, 11, 8 + and w4, w4, 2047 + cbz w8, .L65 + madd w3, w15, w3, w4 + add w8, w8, w3, uxth +.L65: + add x4, x9, :lo12:.LANCHOR0 + mov x5, -6148914691236517206 + movk x5, 0xaaab, lsl 0 + cmp w6, 0 + csinv w8, w8, wzr, ne + mov w19, 65535 + ldr x16, [x4, 1040] + mov w18, 6 + ldrh w30, [x4, 1096] + sub x3, x2, x16 + asr x3, x3, 1 + mul x3, x3, x5 + mov w5, 0 + and w3, w3, 65535 +.L71: + add w5, w5, 1 + and w5, w5, 65535 + cmp w5, w30 + bhi .L61 cmp w1, w3 - uxth w9, w9 - beq .L54 - cmp w9, w20 - bhi .L54 - uxtw x12, w3 - ldrh w18, [x2,4] - ldrh w4, [x15,x12,lsl 1] - lsl x12, x12, 2 - ldr w10, [x13,x12] - mul w4, w4, w18 - ubfx x11, x10, 11, 8 - ldrh w10, [x13,x12] - and w10, w10, 2047 - cbz w4, .L61 - madd w10, w16, w11, w10 - add w4, w4, w10, uxth -.L61: - cmp w4, w5 - bcs .L62 - cbz w18, .L62 + beq .L61 + uxtw x7, w3 + ldrh w17, [x2, 4] + ldrh w4, [x14, x7, lsl 1] + lsl x7, x7, 2 + ldr w6, [x12, x7] + mul w4, w4, w17 + ldrh w7, [x12, x7] + ubfx x6, x6, 11, 8 + and w7, w7, 2047 + cbz w4, .L68 + madd w6, w15, w6, w7 + add w4, w4, w6, uxth +.L68: + cbz w17, .L69 + cmp w8, w4 + bls .L69 ldrh w4, [x2] - cmp w4, w21 - bne .L63 - strh w3, [x7,2] + cmp w4, w19 + bne .L70 + strh w3, [x10, 2] strh w1, [x2] - b .L54 -.L63: - umull x2, w4, w19 +.L61: + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L70: + umaddl x2, w4, w18, x16 mov w3, w4 - add x2, x17, x2 - b .L64 -.L62: - ldrh w4, [x2,2] - strh w4, [x7,2] - strh w3, [x14,x8] + b .L71 +.L69: + ldrh w4, [x2, 2] + strh w4, [x10, 2] + strh w3, [x13, x11] ldr x3, [x0] cmp x2, x3 - bne .L65 - strh w1, [x2,2] + bne .L72 + strh w1, [x2, 2] + str x10, [x0] + b .L61 .L72: - str x7, [x0] - b .L54 -.L65: - ldrh w0, [x2,2] - add x6, x6, :lo12:.LANCHOR0 + ldrh w0, [x2, 2] + add x9, x9, :lo12:.LANCHOR0 mov w3, 6 umull x0, w0, w3 - ldr x3, [x6,1040] - strh w1, [x3,x0] - strh w1, [x2,2] -.L54: - ldp x19, x20, [sp] - ldr x21, [sp,16] - add sp, sp, 32 + ldr x3, [x9, 1040] + strh w1, [x3, x0] + strh w1, [x2, 2] + b .L61 +.L83: ret .size _insert_data_list, .-_insert_data_list .align 2 @@ -515,324 +561,275 @@ _insert_data_list: _list_update_data_list: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w19, w1 + stp x19, x20, [sp, 16] + and w19, w1, 65535 adrp x1, .LANCHOR0 add x4, x1, :lo12:.LANCHOR0 - str x25, [sp,64] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov x20, x1 - ldr x3, [x4,1120] - ldrh w5, [x3,16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldr x3, [x4, 1128] + ldrh w5, [x3, 16] cmp w5, w19 - beq .L73 - ldrh w1, [x3,48] + beq .L85 + mov x20, x1 + ldrh w1, [x3, 48] cmp w1, w19 - beq .L73 - ldrh w1, [x3,80] + beq .L85 + ldrh w1, [x3, 80] cmp w1, w19 - beq .L73 + beq .L85 mov w23, 6 - ldr x25, [x4,1040] + ldr x25, [x4, 1040] ldr x1, [x0] umull x23, w19, w23 add x24, x25, x23 cmp x24, x1 - beq .L73 + beq .L85 mov x21, x0 - ldrh w0, [x24,2] + ldrh w0, [x24, 2] mov w1, 65535 mov x22, x2 cmp w0, w1 - bne .L77 - ldrh w1, [x25,x23] + bne .L89 + ldrh w1, [x25, x23] cmp w1, w0 - bne .L77 + bne .L89 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 273 add x1, x1, 24 + mov w2, 273 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L77: - ldrh w3, [x24,2] +.L89: + ldrh w3, [x24, 2] mov w0, 65535 cmp w3, w0 - bne .L78 - ldrh w0, [x25,x23] + bne .L90 + ldrh w0, [x25, x23] cmp w0, w3 - beq .L73 -.L78: + beq .L85 +.L90: add x1, x20, :lo12:.LANCHOR0 - ubfiz x0, x19, 1, 16 - mov x5, -6148914691236517206 - ldr x4, [x1,1112] - ldr x1, [x1,1040] - ldrh w2, [x4,x0] - ldrh w0, [x24,4] - cmp w0, wzr - mul w2, w2, w0 - mov w0, 6 - csinv w2, w2, wzr, ne - umull x3, w3, w0 - asr x0, x3, 1 + ubfiz x2, x19, 1, 16 + ldrh w4, [x24, 4] + mov x6, -6148914691236517206 + movk x6, 0xaaab, lsl 0 + mov w5, -1 + ldr x0, [x1, 1120] + cmp w4, 0 + ldr x1, [x1, 1040] + ldrh w2, [x0, x2] + mul w2, w2, w4 + mov w4, 6 + umull x3, w3, w4 + csel w2, w2, w5, ne + asr x4, x3, 1 add x3, x1, x3 - madd x0, x5, x0, x0 - ldrh w1, [x3,4] - ldrh w0, [x4,x0,lsl 1] - cmp w1, wzr + mul x4, x4, x6 + ldrh w1, [x3, 4] + cmp w1, 0 + ldrh w0, [x0, x4, lsl 1] mul w0, w0, w1 - csinv w0, w0, wzr, ne + csel w0, w0, w5, ne cmp w2, w0 - bcs .L73 - mov x0, x21 - mov w1, w19 + bcs .L85 mov x2, x22 + mov w1, w19 + mov x0, x21 bl _list_remove_node - mov x0, x21 - mov w1, w19 mov x2, x22 + mov w1, w19 + mov x0, x21 bl _insert_data_list -.L73: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] +.L85: + 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 _list_update_data_list, .-_list_update_data_list .section .text.unlikely .align 2 - .type rk_simple_strtoull.constprop.34, %function -rk_simple_strtoull.constprop.34: - stp x29, x30, [sp, -64]! + .type rk_simple_strtoull.constprop.33, %function +rk_simple_strtoull.constprop.33: + stp x29, x30, [sp, -16]! + mov x3, x0 + mov x6, x1 add x29, sp, 0 - stp x19, x20, [sp,16] - str x23, [sp,48] - mov x20, x0 - stp x21, x22, [sp,32] - mov x23, x1 ldrb w0, [x0] cmp w0, 48 - bne .L94 - ldrb w0, [x20,1] - add x19, x20, 1 - mov w21, 8 + bne .L107 + ldrb w0, [x3, 1] + add x2, x3, 1 orr w0, w0, 32 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 120 - bne .L84 - ldrb w0, [x20,2] + bne .L109 + ldrb w0, [x3, 2] bl isxdigit - cbz w0, .L84 - add x19, x20, 2 - mov w21, 16 - b .L84 -.L94: - mov x19, x20 - mov w21, 10 -.L84: - mov w22, 0 -.L85: - ldrb w20, [x19] - mov w0, w20 - bl isxdigit - cbnz w0, .L86 -.L92: - cbz x23, .L98 - str x19, [x23] - b .L98 -.L86: - sub w2, w20, #48 - cmp w2, 9 - bhi .L99 -.L93: - cmp w2, w21 - bcs .L92 - madd w22, w22, w21, w2 - add x19, x19, 1 - b .L85 -.L99: - orr w20, w20, 32 - sub w2, w20, #87 - b .L93 + cbz w0, .L109 + add x2, x3, 2 + mov w4, 16 +.L97: + mov w5, 0 .L98: - mov w0, w22 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + ldrb w3, [x2] + mov w0, w3 + bl isxdigit + cbnz w0, .L99 +.L105: + cbnz x6, .L100 +.L96: + mov w0, w5 + ldp x29, x30, [sp], 16 ret - .size rk_simple_strtoull.constprop.34, .-rk_simple_strtoull.constprop.34 +.L107: + mov x2, x3 + mov w4, 10 + b .L97 +.L109: + mov w4, 8 + b .L97 +.L99: + sub w0, w3, #48 + cmp w0, 9 + bhi .L110 +.L106: + cmp w0, w4 + bcs .L105 + madd w5, w5, w4, w0 + add x2, x2, 1 + b .L98 +.L100: + str x2, [x6] + b .L96 +.L110: + orr w0, w3, 32 + sub w0, w0, #87 + b .L106 + .size rk_simple_strtoull.constprop.33, .-rk_simple_strtoull.constprop.33 .text .align 2 - .type hynix_set_rr_para, %function -hynix_set_rr_para: - stp x29, x30, [sp, -64]! - adrp x3, .LANCHOR0 - uxtb w1, w1 - add x3, x3, :lo12:.LANCHOR0 - add x29, sp, 0 - uxtb w0, w0 - stp x21, x22, [sp,32] - str x23, [sp,48] - stp x19, x20, [sp,16] - ldr x2, [x3,1128] - ldr x19, [x3,1048] - 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 .L101 - sxtw x2, w0 - mov x3, 160 - madd x2, x2, x3, x1 - add x2, x2, 32 - add x21, x21, x2 - b .L102 -.L101: - add x1, x1, 32 - add x21, x21, x1 -.L102: - ubfiz x0, x0, 8, 8 - mov x20, 0 - add x19, x19, x0 - mov w0, 54 - str w0, [x19,2056] -.L103: - cmp w22, w20, uxtb - bls .L105 - ldrb w0, [x23,x20] - str w0, [x19,2052] - mov x0, 600 - bl __const_udelay - ldrsb w0, [x21,x20] - add x20, x20, 1 - str w0, [x19,2048] - b .L103 -.L105: - mov w0, 22 - str w0, [x19,2056] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 64 + .type nandc_de_cs.constprop.35, %function +nandc_de_cs.constprop.35: + adrp x0, .LANCHOR0+1056 + ldr x1, [x0, #:lo12:.LANCHOR0+1056] + ldr w0, [x1] + and w0, w0, -256 + and w0, w0, -131073 + str w0, [x1] ret - .size hynix_set_rr_para, .-hynix_set_rr_para + .size nandc_de_cs.constprop.35, .-nandc_de_cs.constprop.35 .align 2 .global flash_read_status .type flash_read_status, %function flash_read_status: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov x19, x0 mov w0, 112 - str w0, [x19,8] + str w0, [x19, 8] mov x0, 600 bl __const_udelay ldr w0, [x19] - ldr x19, [sp,16] + ldr x19, [sp, 16] + and w0, w0, 255 ldp x29, x30, [sp], 32 - uxtb w0, w0 ret .size flash_read_status, .-flash_read_status .align 2 .global toshiba_set_rr_para .type toshiba_set_rr_para, %function toshiba_set_rr_para: - uxtb w1, w1 - mov w3, 5 + stp x29, x30, [sp, -80]! + and w1, w1, 255 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, w1, sxtw - add x24, x2, 48 - add x21, x2, 96 - 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 + stp x21, x22, [sp, 32] + mov x21, x0 + mov w0, 5 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + adrp x22, .LANCHOR0 + umull x2, w2, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + stp x19, x20, [sp, 16] + add x25, x0, 48 + add x24, x0, 144 + add x25, x25, x2 + add x24, x24, x2 + add x22, x22, :lo12:.LANCHOR0 + mov x19, x0 + add x23, x0, w1, sxtw mov x20, 0 - adrp x26, .LANCHOR0 - mov w27, 85 - mov x19, x2 -.L108: - add x25, x26, :lo12:.LANCHOR0 - ldrb w0, [x25,1137] + mov w26, 85 +.L116: + ldrb w0, [x22, 1137] cmp w0, w20 - bls .L114 - add x0, x19, 48 - str w27, [x22,8] - ldrsb w0, [x20,x0] - str w0, [x22,4] + bhi .L120 + 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 +.L120: + add x0, x19, 144 + str w26, [x21, 8] + ldrsb w0, [x20, x0] + str w0, [x21, 4] mov x0, 1000 bl __const_udelay - ldrb w0, [x25,1136] + ldrb w0, [x22, 1136] cmp w0, 34 - bne .L109 - ldrsb w0, [x24,x20] - b .L113 -.L109: - cmp w0, 35 - bne .L111 - ldrsb w0, [x21,x20] - b .L113 -.L111: - ldrsb w0, [x23,192] -.L113: - str w0, [x22] + bne .L117 + ldrsb w0, [x24, x20] +.L122: 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] - ldr x27, [sp,80] - ldp x29, x30, [sp], 96 - ret + str w0, [x21] + b .L116 +.L117: + cmp w0, 35 + bne .L119 + ldrsb w0, [x25, x20] + b .L122 +.L119: + ldrsb w0, [x23, 192] + b .L122 .size toshiba_set_rr_para, .-toshiba_set_rr_para .align 2 .global hynix_reconfig_rr_para .type hynix_reconfig_rr_para, %function hynix_reconfig_rr_para: stp x29, x30, [sp, -32]! - uxtb w0, w0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldrb w1, [x19,1136] + ldrb w1, [x19, 1136] sub w1, w1, #1 - uxtb w1, w1 + and w1, w1, 255 cmp w1, 7 - bhi .L115 - ldr x1, [x19,1128] + bhi .L123 + and w0, w0, 255 + ldr x1, [x19, 1048] sxtw x20, w0 add x1, x1, x20 - ldrb w1, [x1,120] - cbz w1, .L115 + ldrb w1, [x1, 120] + cbz w1, .L123 mov w1, 0 bl hynix_set_rr_para - ldr x0, [x19,1128] - add x20, x0, x20 - strb wzr, [x20,120] -.L115: - ldp x19, x20, [sp,16] + ldr x0, [x19, 1048] + add x0, x0, x20 + strb wzr, [x0, 120] +.L123: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size hynix_reconfig_rr_para, .-hynix_reconfig_rr_para @@ -842,440 +839,299 @@ hynix_reconfig_rr_para: nand_flash_print_info: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR2 - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L121 - adrp x1, .LANCHOR1 - adrp x0, .LC4 - add x1, x1, :lo12:.LANCHOR1 - add x0, x0, :lo12:.LC4 - add x1, x1, 200 - bl printk -.L121: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L122 - adrp x0, .LANCHOR0+1144 - ldr x6, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC5 - add x0, x0, :lo12:.LC5 - ldrb w1, [x6,1] - ldrb w2, [x6,2] - ldrb w3, [x6,3] - ldrb w4, [x6,4] - ldrb w5, [x6,5] - ldrb w6, [x6,6] - bl printk -.L122: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L123 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC6 - add x0, x0, :lo12:.LC6 - ldrb w1, [x1,8] - bl printk -.L123: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L124 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC7 - add x0, x0, :lo12:.LC7 - ldrb w1, [x1,9] - bl printk -.L124: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L125 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 - ldrh w1, [x1,10] - bl printk -.L125: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L126 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC9 - add x0, x0, :lo12:.LC9 - ldrb w1, [x1,12] - bl printk -.L126: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L127 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC10 - add x0, x0, :lo12:.LC10 - ldrb w1, [x1,13] - bl printk -.L127: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L128 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC11 - add x0, x0, :lo12:.LC11 - ldrh w1, [x1,14] - bl printk -.L128: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L129 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC12 - add x0, x0, :lo12:.LC12 - ldrb w1, [x1,23] - bl printk -.L129: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L130 - adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC13 - add x0, x0, :lo12:.LC13 - ldrb w1, [x1,18] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC4 + add x1, x1, 200 + add x0, x0, :lo12:.LC4 bl printk .L130: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L131 adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC14 - add x0, x0, :lo12:.LC14 - ldrb w1, [x1,19] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w6, [x0, 6] + ldrb w5, [x0, 5] + ldrb w4, [x0, 4] + ldrb w3, [x0, 3] + ldrb w2, [x0, 2] + ldrb w1, [x0, 1] + adrp x0, .LC5 + add x0, x0, :lo12:.LC5 bl printk .L131: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L132 adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC15 - add x0, x0, :lo12:.LC15 - ldrb w1, [x1,20] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 8] + adrp x0, .LC6 + add x0, x0, :lo12:.LC6 bl printk .L132: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L133 - adrp x1, .LANCHOR0+1152 - adrp x0, .LC16 - add x0, x0, :lo12:.LC16 - ldrb w1, [x1,#:lo12:.LANCHOR0+1152] + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 9] + adrp x0, .LC7 + add x0, x0, :lo12:.LC7 bl printk .L133: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L134 adrp x0, .LANCHOR0+1144 - ldr x1, [x0,#:lo12:.LANCHOR0+1144] - adrp x0, .LC17 - add x0, x0, :lo12:.LC17 - ldrb w1, [x1,22] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 10] + adrp x0, .LC8 + add x0, x0, :lo12:.LC8 bl printk .L134: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L135 - adrp x1, .LANCHOR0+1153 - adrp x0, .LC18 - add x0, x0, :lo12:.LC18 - ldrb w1, [x1,#:lo12:.LANCHOR0+1153] + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 12] + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl printk .L135: - ldr w0, [x19,#:lo12:.LANCHOR2] + ldr w0, [x19, #:lo12:.LANCHOR2] tbz x0, 12, .L136 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 13] + adrp x0, .LC10 + add x0, x0, :lo12:.LC10 + bl printk +.L136: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L137 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 14] + adrp x0, .LC11 + add x0, x0, :lo12:.LC11 + bl printk +.L137: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L138 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 23] + adrp x0, .LC12 + add x0, x0, :lo12:.LC12 + bl printk +.L138: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L139 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 18] + adrp x0, .LC13 + add x0, x0, :lo12:.LC13 + bl printk +.L139: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L140 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 19] + adrp x0, .LC14 + add x0, x0, :lo12:.LC14 + bl printk +.L140: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L141 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 20] + adrp x0, .LC15 + add x0, x0, :lo12:.LC15 + bl printk +.L141: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L142 + adrp x0, .LANCHOR0+1152 + ldrb w1, [x0, #:lo12:.LANCHOR0+1152] + adrp x0, .LC16 + add x0, x0, :lo12:.LC16 + bl printk +.L142: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L143 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 22] + adrp x0, .LC17 + add x0, x0, :lo12:.LC17 + bl printk +.L143: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L144 + adrp x0, .LANCHOR0+1153 + ldrb w1, [x0, #:lo12:.LANCHOR0+1153] + adrp x0, .LC18 + add x0, x0, :lo12:.LC18 + bl printk +.L144: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L145 + adrp x0, .LANCHOR0+1144 + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 16] adrp x0, .LC19 add x0, x0, :lo12:.LC19 and w1, w1, 1 bl printk -.L136: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L137 +.L145: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L146 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC20 add x0, x0, :lo12:.LC20 ubfx x1, x1, 1, 1 bl printk -.L137: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L138 +.L146: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L147 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC21 add x0, x0, :lo12:.LC21 ubfx x1, x1, 2, 1 bl printk -.L138: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L139 +.L147: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L148 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC22 add x0, x0, :lo12:.LC22 ubfx x1, x1, 3, 1 bl printk -.L139: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L140 +.L148: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L149 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC23 add x0, x0, :lo12:.LC23 ubfx x1, x1, 4, 1 bl printk -.L140: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L141 +.L149: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L150 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC24 add x0, x0, :lo12:.LC24 ubfx x1, x1, 5, 1 bl printk -.L141: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L142 +.L150: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L151 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC25 add x0, x0, :lo12:.LC25 ubfx x1, x1, 6, 1 bl printk -.L142: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L143 +.L151: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L152 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC26 add x0, x0, :lo12:.LC26 ubfx x1, x1, 7, 1 bl printk -.L143: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L144 +.L152: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L153 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrb w1, [x0,17] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrb w1, [x0, 17] adrp x0, .LC27 add x0, x0, :lo12:.LC27 and w1, w1, 1 bl printk -.L144: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L145 +.L153: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L154 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC28 add x0, x0, :lo12:.LC28 ubfx x1, x1, 9, 1 bl printk -.L145: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L146 +.L154: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L155 adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrh w1, [x0,16] + ldr x0, [x0, #:lo12:.LANCHOR0+1144] + ldrh w1, [x0, 16] adrp x0, .LC29 add x0, x0, :lo12:.LC29 ubfx x1, x1, 10, 1 bl printk -.L146: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L147 - adrp x1, .LANCHOR0 +.L155: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L156 + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + ldrb w2, [x1, 1154] + ldrb w1, [x0, #:lo12:.LANCHOR0] adrp x0, .LC30 - add x2, x1, :lo12:.LANCHOR0 add x0, x0, :lo12:.LC30 - ldrb w1, [x1,#:lo12:.LANCHOR0] - ldrb w2, [x2,1154] bl printk -.L147: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L148 - adrp x2, .LANCHOR0 +.L156: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L157 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldrb w2, [x0, 1171] + ldrb w1, [x0, 1170] adrp x0, .LC31 - add x2, x2, :lo12:.LANCHOR0 add x0, x0, :lo12:.LC31 - add x2, x2, 1160 - ldrb w1, [x2,10] - ldrb w2, [x2,11] bl printk -.L148: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L149 - adrp x2, .LANCHOR0 +.L157: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L158 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldrb w2, [x0, 1169] + ldrb w1, [x0, 1168] adrp x0, .LC32 - add x2, x2, :lo12:.LANCHOR0 add x0, x0, :lo12:.LC32 - add x2, x2, 1160 - ldrb w1, [x2,8] - ldrb w2, [x2,9] bl printk -.L149: - ldr w0, [x19,#:lo12:.LANCHOR2] - tbz x0, 12, .L120 - adrp x1, .LANCHOR0+1192 +.L158: + ldr w0, [x19, #:lo12:.LANCHOR2] + tbz x0, 12, .L129 + adrp x0, .LANCHOR0+1192 + ldrb w1, [x0, #:lo12:.LANCHOR0+1192] adrp x0, .LC33 add x0, x0, :lo12:.LC33 - ldrb w1, [x1,#:lo12:.LANCHOR0+1192] bl printk -.L120: - ldr x19, [sp,16] +.L129: + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size nand_flash_print_info, .-nand_flash_print_info .align 2 - .global nandc_init - .type nandc_init, %function -nandc_init: - stp x29, x30, [sp, -64]! - add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR2 - mov x22, x0 - stp x19, x20, [sp,16] - str wzr, [x29,56] - ldr w0, [x21,#:lo12:.LANCHOR2] - tbz x0, 12, .L242 - adrp x1, .LANCHOR1 - adrp x0, .LC34 - add x1, x1, :lo12:.LANCHOR1 - add x0, x0, :lo12:.LC34 - add x1, x1, 224 - mov x2, x22 - bl printk -.L242: - adrp x1, .LANCHOR0 - mov w2, 6 - add x0, x1, :lo12:.LANCHOR0 - ldr w3, [x22,352] - mov x20, x1 - strb w2, [x0,1028] - mov w2, 12336 - movk w2, 0x5638, lsl 16 - str x22, [x0,1048] - cmp w3, w2 - bne .L243 - mov w1, 8 - strb w1, [x0,1028] -.L243: - ldr w1, [x22,128] - mov w0, 12336 - movk w0, 0x5639, lsl 16 - cmp w1, w0 - bne .L244 - add x0, x20, :lo12:.LANCHOR0 - mov w1, 9 - strb w1, [x0,1028] -.L244: - add x19, x20, :lo12:.LANCHOR0 - ldrb w0, [x19,1028] - cmp w0, 9 - bne .L245 - mov w0, 1 - strb w0, [x19,1193] - ldr w0, [x29,56] - mov w1, 2 - orr w0, w0, 256 - str w0, [x29,56] - ldr w0, [x29,56] - bfi w0, w1, 18, 3 - str w0, [x29,56] - mov w1, 4161 - ldr w0, [x29,56] - str w0, [x22] - ldr x0, [x19,1048] - str wzr, [x0,520] - str w1, [x0,4] - mov w1, 8321 - ldr x0, [x19,1048] - str w1, [x0,8] - mov w1, 4099 - movk w1, 0x10, lsl 16 - str w1, [x0,80] - mov w1, 38 - str w1, [x0,84] - mov w1, 39 - str w1, [x0,84] - ldr w1, [x21,#:lo12:.LANCHOR2] - tbz x1, 12, .L247 - ldr w1, [x0] - ldr w2, [x0,8] - ldr w3, [x0,80] - ldr w4, [x0,84] - ldr w5, [x0,88] - b .L259 -.L245: - ldr w0, [x29,56] - mov w1, 1 - strb wzr, [x19,1193] - orr w0, w0, 256 - str w0, [x29,56] - ldr w0, [x29,56] - bfi w0, w1, 24, 3 - str w0, [x29,56] - mov w1, 4193 - ldr w0, [x29,56] - str w0, [x22] - ldr x0, [x19,1048] - str wzr, [x0,336] - str w1, [x0,4] - mov w1, 8321 - ldr x0, [x19,1048] - str w1, [x0,344] - mov w1, 4099 - movk w1, 0x10, lsl 16 - str w1, [x0,304] - mov w1, 38 - str w1, [x0,308] - mov w1, 39 - str w1, [x0,308] - mov w0, 2048 - bl ftl_malloc - str x0, [x19,1200] - ldr w0, [x21,#:lo12:.LANCHOR2] - tbz x0, 12, .L247 - ldr x0, [x19,1048] - ldr w1, [x0] - ldr w2, [x0,344] - ldr w3, [x0,304] - ldr w4, [x0,308] - ldr w5, [x0,312] -.L259: - adrp x0, .LC35 - add x0, x0, :lo12:.LC35 - bl printk -.L247: - add x1, x20, :lo12:.LANCHOR0 - mov w0, 1 - strb w0, [x1,1240] - ldr w0, [x21,#:lo12:.LANCHOR2] - strh wzr, [x1,1242] - strb wzr, [x1,1244] - tbz x0, 12, .L241 - adrp x0, .LC36 - ldrb w1, [x1,1028] - add x0, x0, :lo12:.LC36 - bl printk -.L241: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 - ret - .size nandc_init, .-nandc_init - .align 2 .global timer_delay_ns .type timer_delay_ns, %function timer_delay_ns: @@ -1290,22 +1146,21 @@ timer_delay_ns: .global nandc_set_ddr_para .type nandc_set_ddr_para, %function nandc_set_ddr_para: - adrp x1, .LANCHOR0 - uxtb w0, w0 - add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,1028] - ldr x1, [x1,1048] - cmp w2, 9 - lsl w2, w0, 16 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + and w0, w0, 255 + ldrb w1, [x2, 1028] + ldr x2, [x2, 1056] + cmp w1, 9 + lsl w1, w0, 16 lsl w0, w0, 8 - orr w0, w2, w0 - orr w0, w0, 3 - bne .L262 - str w0, [x1,80] - b .L261 -.L262: - str w0, [x1,304] -.L261: + orr w1, w1, w0 + orr w1, w1, 3 + bne .L254 + str w1, [x2, 80] + ret +.L254: + str w1, [x2, 304] ret .size nandc_set_ddr_para, .-nandc_set_ddr_para .align 2 @@ -1314,163 +1169,143 @@ nandc_set_ddr_para: nandc_get_ddr_para: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x0,1028] - ldr x0, [x0,1048] + ldrb w1, [x0, 1028] + ldr x0, [x0, 1056] cmp w1, 9 - bne .L265 - ldr w0, [x0,80] - b .L267 -.L265: - ldr w0, [x0,304] -.L267: + bne .L257 + ldr w0, [x0, 80] +.L259: ubfx x0, x0, 8, 8 ret +.L257: + ldr w0, [x0, 304] + b .L259 .size nandc_get_ddr_para, .-nandc_get_ddr_para .align 2 .global nandc_set_if_mode .type nandc_set_if_mode, %function nandc_set_if_mode: adrp x3, .LANCHOR0 - uxtb w0, w0 add x3, x3, :lo12:.LANCHOR0 + and w0, w0, 255 tst w0, 6 - ldr x2, [x3,1048] + ldr x2, [x3, 1056] ldr w1, [x2] - beq .L269 + beq .L261 orr w1, w1, 24576 - and w0, w0, 4 + tst x0, 4 and w1, w1, -32769 - cmp w0, wzr + ldrb w0, [x3, 1028] orr w1, w1, 196608 - ldrb w0, [x3,1028] + mov w3, 8321 orr w4, w1, 32768 csel w1, w4, w1, ne cmp w0, 9 - mov w0, 8321 - bne .L271 - str w0, [x2,8] mov w0, 4099 movk w0, 0x10, lsl 16 - str w0, [x2,80] + bne .L263 + str w3, [x2, 8] + str w0, [x2, 80] mov w0, 38 - str w0, [x2,84] + str w0, [x2, 84] mov w0, 39 - str w0, [x2,84] - b .L272 -.L271: - str w0, [x2,344] - mov w0, 4099 - movk w0, 0x10, lsl 16 - str w0, [x2,304] - mov w0, 38 - str w0, [x2,308] - mov w0, 39 - str w0, [x2,308] - b .L272 -.L269: - and w1, w1, -8193 -.L272: + str w0, [x2, 84] +.L264: str w1, [x2] ret +.L263: + str w3, [x2, 344] + str w0, [x2, 304] + mov w0, 38 + str w0, [x2, 308] + mov w0, 39 + str w0, [x2, 308] + b .L264 +.L261: + and w1, w1, -8193 + b .L264 .size nandc_set_if_mode, .-nandc_set_if_mode .align 2 .global nandc_cs .type nandc_cs, %function nandc_cs: - adrp x1, .LANCHOR0+1048 + adrp x1, .LANCHOR0+1056 mov w2, 1 lsl w0, w2, w0 - ldr x3, [x1,#:lo12:.LANCHOR0+1048] + ldr x3, [x1, #:lo12:.LANCHOR0+1056] ldr w1, [x3] bfi w1, w0, 0, 8 str w1, [x3] ret .size nandc_cs, .-nandc_cs .align 2 - .global nandc_de_cs - .type nandc_de_cs, %function -nandc_de_cs: - adrp x0, .LANCHOR0+1048 - ldr x1, [x0,#:lo12:.LANCHOR0+1048] - ldr w0, [x1] - and w0, w0, -256 - and w0, w0, -131073 - str w0, [x1] - ret - .size nandc_de_cs, .-nandc_de_cs - .align 2 .global flash_wait_device_ready_raw .type flash_wait_device_ready_raw, %function flash_wait_device_ready_raw: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - mov w19, w1 - stp x21, x22, [sp,32] - uxtb w21, w0 - add x0, x20, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w22, w2 - ldrb w0, [x0,1153] - cmp w0, w21 - bhi .L278 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x23, x24, [sp, 48] + mov w24, w2 + adrp x2, .LANCHOR0 + add x0, x2, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov x19, x2 + stp x25, x26, [sp, 64] + mov w21, w1 + str x27, [sp, 80] + ldrb w0, [x0, 1153] + cmp w0, w20 + bhi .L269 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 224 mov w2, 812 - add x1, x1, 240 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L278: - add x0, x20, :lo12:.LANCHOR0 - add x21, x0, w21, sxtw - ldrb w21, [x21,1248] - lsr w23, w19, 8 - lsr w24, w19, 16 - lsr w25, w19, 24 - ldr x26, [x0,1048] - ubfiz x27, x21, 8, 8 - mov w28, 120 - and w19, w19, 255 -.L283: - mov w0, w21 +.L269: + add x2, x19, :lo12:.LANCHOR0 + lsr w23, w21, 8 + add x20, x2, w20, sxtw + lsr w25, w21, 16 + lsr w26, w21, 24 + and w21, w21, 255 + ldr x19, [x2, 1056] + mov w27, 120 + ldrb w22, [x20, 1196] + mov x20, x2 + ubfiz x0, x22, 8, 8 + add x19, x19, x0 +.L275: + mov w0, w22 bl nandc_cs - add x1, x26, x27 - add x0, x20, :lo12:.LANCHOR0 - str w28, [x1,2056] - str w19, [x1,2052] - str w23, [x1,2052] - ldrb w0, [x0,1256] - str w24, [x1,2052] - cbz w0, .L279 - str w25, [x1,2052] -.L279: + str w27, [x19, 2056] + str w21, [x19, 2052] + ldrb w0, [x20, 1204] + str w23, [x19, 2052] + str w25, [x19, 2052] + cbz w0, .L270 + str w26, [x19, 2052] +.L270: mov x0, 600 - str x1, [x29,104] bl __const_udelay - ldr x1, [x29,104] - mov w0, w21 - ldr w1, [x1,2048] - and w1, w1, 255 - str x1, [x29,104] - bl nandc_de_cs - ldr x1, [x29,104] - and w0, w22, w1 - cmp w0, w22 - bne .L283 - cmp w1, 255 - beq .L283 - mov w0, w1 - 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 + ldr w2, [x19, 2048] + and w2, w2, 255 + bl nandc_de_cs.constprop.35 + bics wzr, w24, w2 + bne .L275 + cmp w2, 255 + beq .L275 + mov w0, w2 + 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_wait_device_ready_raw, .-flash_wait_device_ready_raw .align 2 @@ -1478,77 +1313,89 @@ flash_wait_device_ready_raw: .type flash_wait_device_ready, %function flash_wait_device_ready: adrp x4, .LANCHOR0 - mov w5, 24 add x7, x4, :lo12:.LANCHOR0 - mov w6, 1 stp x29, x30, [sp, -16]! + mov w6, 24 + mov w5, 1 mov w2, w1 add x29, sp, 0 - ldrb w8, [x7,1257] - sub w5, w5, w8 - lsl w3, w6, w5 - lsl w6, w6, w8 - asr w5, w0, w5 + ldrb w8, [x7, 1205] + tst x0, 50331648 + sub w6, w6, w8 + lsl w3, w5, w6 sub w3, w3, #1 - sub w6, w6, #1 + lsl w5, w5, w8 + sub w5, w5, #1 + asr w6, w0, w6 + and w5, w5, w6 and w1, w3, w0 - and w5, w6, w5 - ubfx x0, x0, 24, 2 - uxtb w5, w5 - cbnz w0, .L286 - ldrb w0, [x4,#:lo12:.LANCHOR0] - cbz w0, .L287 - ldrb w0, [x7,1] - cbz w0, .L286 -.L287: + and w5, w5, 255 + bne .L280 + ldrb w0, [x4, #:lo12:.LANCHOR0] + cbz w0, .L281 + ldrb w0, [x7, 1] + cbz w0, .L280 +.L281: add x4, x4, :lo12:.LANCHOR0 - ldrh w3, [x4,2] + ldrh w3, [x4, 2] udiv w0, w1, w3 mul w0, w0, w3 sub w3, w1, w0 - ldrb w1, [x4,1] - cbz w1, .L288 + ldrb w1, [x4, 1] + cbz w1, .L282 add w1, w0, w3, lsl 1 - b .L286 -.L288: - add x4, x4, 4 - ldrh w3, [x4,w3,uxtw 1] - add w1, w3, w0 -.L286: +.L280: mov w0, w5 bl flash_wait_device_ready_raw ldp x29, x30, [sp], 16 ret +.L282: + add x4, x4, 4 + ldrh w3, [x4, w3, uxtw 1] + add w1, w3, w0 + b .L280 .size flash_wait_device_ready, .-flash_wait_device_ready .align 2 + .global nandc_de_cs + .type nandc_de_cs, %function +nandc_de_cs: + adrp x0, .LANCHOR0+1056 + ldr x1, [x0, #:lo12:.LANCHOR0+1056] + ldr w0, [x1] + and w0, w0, -256 + and w0, w0, -131073 + str w0, [x1] + ret + .size nandc_de_cs, .-nandc_de_cs + .align 2 .global nandc_wait_flash_ready_no_delay .type nandc_wait_flash_ready_no_delay, %function nandc_wait_flash_ready_no_delay: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 movk w19, 0x1, lsl 16 -.L297: - add x0, x20, :lo12:.LANCHOR0 - ldr x0, [x0,1048] +.L293: + ldr x0, [x20, 1056] ldr w0, [x0] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L298 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L294 mov x0, 50 bl __const_udelay subs w19, w19, #1 - bne .L297 + bne .L293 mov w0, -1 - b .L296 -.L298: - mov w0, 0 -.L296: - ldp x19, x20, [sp,16] +.L291: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L294: + mov w0, 0 + b .L291 .size nandc_wait_flash_ready_no_delay, .-nandc_wait_flash_ready_no_delay .align 2 .global zftl_flash_enter_slc_mode @@ -1557,74 +1404,71 @@ zftl_flash_enter_slc_mode: stp x29, x30, [sp, -48]! adrp x1, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb x20, w0 + stp x19, x20, [sp, 16] + and x19, x0, 255 add x0, x1, :lo12:.LANCHOR0 - ldrb w1, [x1,#:lo12:.LANCHOR0] - str x21, [sp,32] - cbz w1, .L300 + ldrb w1, [x1, #:lo12:.LANCHOR0] + str x21, [sp, 32] + cbz w1, .L297 cmp w1, 1 - ldr x19, [x0,1048] - bne .L303 - adrp x0, .LANCHOR2+37 - ldrb w1, [x0,#:lo12:.LANCHOR2+37] - cbz w1, .L300 - sxtw x0, w20 - add x0, x0, 8 - add x20, x19, x0, lsl 8 - str w1, [x20,8] - b .L300 -.L303: - cmp w1, 2 - bne .L305 - add x0, x0, x20 - ldrb w1, [x0,1264] - cbz w1, .L300 - adrp x21, .LANCHOR2 - strb wzr, [x0,1264] - add x21, x21, :lo12:.LANCHOR2 - add x21, x21, 8 - ldrb w0, [x21,29] - cbz w0, .L300 - add x20, x20, 8 - bl nandc_wait_flash_ready_no_delay - ldrb w0, [x21,29] - add x20, x19, x20, lsl 8 - str w0, [x20,8] - b .L300 -.L305: - cmp w1, 3 + ldr x20, [x0, 1056] bne .L300 - add x21, x0, w20, sxtw - ldrb w0, [x21,1264] - cbz w0, .L300 + adrp x0, .LANCHOR2+37 + ldrb w0, [x0, #:lo12:.LANCHOR2+37] + cbz w0, .L297 +.L316: + add x19, x19, 8 + add x19, x20, x19, lsl 8 + str w0, [x19, 8] +.L297: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L300: + cmp w1, 2 + bne .L302 + add x0, x0, x19 + ldrb w1, [x0, 1208] + cbz w1, .L297 + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + strb wzr, [x0, 1208] + add x21, x21, 8 + ldrb w0, [x21, 29] + cbz w0, .L297 bl nandc_wait_flash_ready_no_delay - strb wzr, [x21,1264] - ubfiz x0, x20, 8, 8 - add x19, x19, x0 + ldrb w0, [x21, 29] + b .L316 +.L302: + cmp w1, 3 + bne .L297 + add x21, x0, w19, sxtw + ldrb w0, [x21, 1208] + cbz w0, .L297 + ubfiz x19, x19, 8, 8 + bl nandc_wait_flash_ready_no_delay + add x19, x20, x19 mov w0, 239 - str w0, [x19,2056] + strb wzr, [x21, 1208] + str w0, [x19, 2056] mov w0, 145 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 500 bl __const_udelay - str wzr, [x19,2048] + str wzr, [x19, 2048] mov w0, 1 - str w0, [x19,2048] - str wzr, [x19,2048] + str w0, [x19, 2048] + str wzr, [x19, 2048] mov x0, 750 - str wzr, [x19,2048] + str wzr, [x19, 2048] bl __const_udelay bl nandc_wait_flash_ready_no_delay mov w0, 218 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 250 bl __const_udelay -.L300: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 - ret + b .L297 .size zftl_flash_enter_slc_mode, .-zftl_flash_enter_slc_mode .align 2 .global zftl_flash_exit_slc_mode @@ -1632,210 +1476,204 @@ zftl_flash_enter_slc_mode: zftl_flash_exit_slc_mode: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb x20, w0 + stp x19, x20, [sp, 16] + and x19, x0, 255 adrp x0, .LANCHOR0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x21, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L318 + ldrb w0, [x0, #:lo12:.LANCHOR0] + cbz w0, .L317 cmp w0, 1 - ldr x19, [x21,1048] - bne .L321 + ldr x20, [x21, 1056] + bne .L320 adrp x0, .LANCHOR2+38 - ldrb w1, [x0,#:lo12:.LANCHOR2+38] - cbz w1, .L318 - sxtw x0, w20 - add x0, x0, 8 - add x20, x19, x0, lsl 8 - str w1, [x20,8] - b .L318 -.L321: + ldrb w0, [x0, #:lo12:.LANCHOR2+38] + cbz w0, .L317 +.L338: + add x19, x19, 8 + add x19, x20, x19, lsl 8 + str w0, [x19, 8] +.L317: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L320: cmp w0, 2 - bne .L323 - add x21, x21, x20 - ldrb w0, [x21,1264] - cbnz w0, .L318 + bne .L322 + add x21, x21, x19 + ldrb w0, [x21, 1208] + cbnz w0, .L317 adrp x22, .LANCHOR2 - mov w1, 4 add x22, x22, :lo12:.LANCHOR2 + mov w1, 4 add x22, x22, 8 - ldrb w0, [x22,12] + ldrb w0, [x22, 12] cmp w0, 2 csel w0, w0, w1, eq - strb w0, [x21,1264] - ldrb w0, [x22,30] - cbz w0, .L318 - add x20, x20, 8 + strb w0, [x21, 1208] + ldrb w0, [x22, 30] + cbz w0, .L317 bl nandc_wait_flash_ready_no_delay - ldrb w0, [x22,30] - add x20, x19, x20, lsl 8 - str w0, [x20,8] - b .L318 -.L323: + ldrb w0, [x22, 30] + b .L338 +.L322: cmp w0, 3 - bne .L318 - add x21, x21, w20, sxtw - ldrb w0, [x21,1264] - cbnz w0, .L318 + bne .L317 + add x21, x21, w19, sxtw + ldrb w0, [x21, 1208] + cbnz w0, .L317 adrp x22, .LANCHOR2 - bl nandc_wait_flash_ready_no_delay add x22, x22, :lo12:.LANCHOR2 + bl nandc_wait_flash_ready_no_delay + ubfiz x19, x19, 8, 8 + add x19, x20, x19 mov w1, 4 - ldrb w0, [x22,20] + ldrb w0, [x22, 20] cmp w0, 2 csel w0, w0, w1, eq - strb w0, [x21,1264] - ubfiz x0, x20, 8, 8 - add x19, x19, x0 + strb w0, [x21, 1208] mov w0, 239 - str w0, [x19,2056] + str w0, [x19, 2056] mov w0, 145 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 500 bl __const_udelay - ldrb w0, [x22,15] + ldrb w0, [x22, 15] cmp w0, 9 mov w0, 1 - bne .L326 - str w0, [x19,2048] - b .L327 + bne .L325 + str w0, [x19, 2048] .L326: - ldrb w1, [x21,1264] - str w1, [x19,2048] -.L327: - str w0, [x19,2048] + str w0, [x19, 2048] mov x0, 750 - str wzr, [x19,2048] - str wzr, [x19,2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] bl __const_udelay bl nandc_wait_flash_ready_no_delay mov w0, 223 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 250 bl __const_udelay -.L318: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret + b .L317 +.L325: + ldrb w1, [x21, 1208] + str w1, [x19, 2048] + b .L326 .size zftl_flash_exit_slc_mode, .-zftl_flash_exit_slc_mode .align 2 .global flash_start_page_read .type flash_start_page_read, %function flash_start_page_read: - stp x29, x30, [sp, -80]! - mov w2, 1 + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] + and w21, w0, 255 adrp x22, .LANCHOR0 - uxtb w21, w0 add x0, x22, :lo12:.LANCHOR0 - str x25, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - mov w20, 24 + stp x19, x20, [sp, 16] + mov w19, 24 + stp x23, x24, [sp, 48] mov w23, w1 - ldrb w19, [x0,1257] - ldrb w0, [x0,1153] - sub w20, w20, w19 - lsl w19, w2, w19 - lsr w1, w1, w20 - sub w19, w19, #1 - and w19, w1, w19 - uxtb w19, w19 - cmp w0, w19 - bhi .L339 + mov w20, 1 + ldrb w1, [x0, 1205] + ldrb w0, [x0, 1153] + sub w24, w19, w1 + lsl w20, w20, w1 + sub w20, w20, #1 + lsr w1, w23, w24 + and w20, w20, w1 + and w20, w20, 255 + cmp w0, w20 + bhi .L340 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 256 mov w2, 1013 - add x1, x1, 272 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L339: - add x24, x22, :lo12:.LANCHOR0 - ldrb w0, [x24,1153] - cmp w0, w19 - bls .L338 - mov w0, 1 - add x19, x24, w19, sxtw - lsl w20, w0, w20 - ldrb w19, [x19,1248] - sub w20, w20, #1 - ldr x25, [x24,1048] - and w20, w20, w23 - mov w0, w19 - ubfx x23, x23, 24, 2 +.L340: + add x5, x22, :lo12:.LANCHOR0 + ldrb w0, [x5, 1153] + cmp w0, w20 + bls .L339 + add x20, x5, w20, sxtw + mov w19, 1 + ubfx x4, x23, 24, 2 + lsl w19, w19, w24 + sub w19, w19, #1 + and w19, w19, w23 + ldrb w23, [x20, 1196] + ldr x20, [x5, 1056] + mov w0, w23 bl nandc_cs - cbnz w23, .L341 - mov w0, w20 + cbnz w4, .L342 + mov w0, w19 bl slc_phy_page_address_calc - mov w20, w0 - adrp x0, .LANCHOR0 - ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L342 - mov w0, w19 + mov w19, w0 + ldrb w0, [x22, #:lo12:.LANCHOR0] + cbz w0, .L343 + mov w0, w23 bl zftl_flash_enter_slc_mode - b .L342 -.L341: - ldr x0, [x24,1144] - ldrb w0, [x0,12] - cmp w0, 3 - bne .L343 - ldrb w0, [x24,1268] - cbnz w0, .L343 - ldrb w0, [x24,1269] - cbnz w0, .L343 - sxtw x0, w19 - add x0, x0, 8 - add x0, x25, x0, lsl 8 - str w23, [x0,8] - b .L342 .L343: - mov w0, w19 - bl zftl_flash_exit_slc_mode -.L342: add x0, x22, :lo12:.LANCHOR0 - ldr x0, [x0,1144] - ldrb w1, [x0,7] + ldr x0, [x0, 1144] + ldrb w1, [x0, 7] cmp w1, 1 - bne .L344 - ldrb w0, [x0,12] + bne .L345 + ldrb w0, [x0, 12] cmp w0, 2 - bne .L344 - sxtw x0, w19 + bne .L345 + sxtw x0, w23 mov w1, 38 add x0, x0, 8 - add x0, x25, x0, lsl 8 - str w1, [x0,8] -.L344: - ubfiz x19, x19, 8, 8 - and w0, w20, 255 - add x1, x25, x19 - add x22, x22, :lo12:.LANCHOR0 - str wzr, [x1,2056] - str wzr, [x1,2052] - str wzr, [x1,2052] - str w0, [x1,2052] - lsr w0, w20, 8 - str w0, [x1,2052] - lsr w0, w20, 16 - str w0, [x1,2052] - ldrb w0, [x22,1256] - cbz w0, .L345 - lsr w20, w20, 24 - str w20, [x1,2052] + add x0, x20, x0, lsl 8 + str w1, [x0, 8] .L345: - str w21, [x1,2056] -.L338: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 80 + ubfiz x0, x23, 8, 8 + and w1, w19, 255 + add x0, x20, x0 + add x22, x22, :lo12:.LANCHOR0 + str wzr, [x0, 2056] + str wzr, [x0, 2052] + str wzr, [x0, 2052] + str w1, [x0, 2052] + lsr w1, w19, 8 + str w1, [x0, 2052] + lsr w1, w19, 16 + str w1, [x0, 2052] + ldrb w1, [x22, 1204] + cbz w1, .L346 + lsr w19, w19, 24 + str w19, [x0, 2052] +.L346: + str w21, [x0, 2056] +.L339: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L342: + ldr x0, [x5, 1144] + ldrb w0, [x0, 12] + cmp w0, 3 + bne .L344 + ldrb w0, [x5, 1212] + cbnz w0, .L344 + ldrb w0, [x5, 1213] + cbnz w0, .L344 + sxtw x0, w23 + add x0, x0, 8 + add x0, x20, x0, lsl 8 + str w4, [x0, 8] + b .L343 +.L344: + mov w0, w23 + bl zftl_flash_exit_slc_mode + b .L343 .size flash_start_page_read, .-flash_start_page_read .align 2 .global nandc_wait_flash_ready @@ -1844,30 +1682,30 @@ nandc_wait_flash_ready: stp x29, x30, [sp, -48]! mov x0, 750 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, 34464 adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 movk w19, 0x1, lsl 16 bl __const_udelay -.L354: - add x0, x20, :lo12:.LANCHOR0 - ldr x0, [x0,1048] +.L356: + ldr x0, [x20, 1056] ldr w0, [x0] - str w0, [x29,40] - ldr w0, [x29,40] - tbnz x0, 9, .L355 + str w0, [x29, 40] + ldr w0, [x29, 40] + tbnz x0, 9, .L357 mov x0, 50 bl __const_udelay subs w19, w19, #1 - bne .L354 + bne .L356 mov w0, -1 - b .L353 -.L355: - mov w0, 0 -.L353: - ldp x19, x20, [sp,16] +.L354: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L357: + mov w0, 0 + b .L354 .size nandc_wait_flash_ready, .-nandc_wait_flash_ready .align 2 .global sandisk_set_rr_para @@ -1875,92 +1713,92 @@ nandc_wait_flash_ready: sandisk_set_rr_para: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x20, x0 mov w0, 239 - uxtb w19, w1 - add w19, w19, 1 - str w0, [x20,8] + and w19, w1, 255 + str w0, [x20, 8] mov w0, 17 - str w0, [x20,4] + str w0, [x20, 4] mov x0, 1000 bl __const_udelay - mov w1, 5 - adrp x2, .LANCHOR1 - add x2, x2, :lo12:.LANCHOR1 - adrp x5, .LANCHOR0 - smull x1, w19, w1 - add x0, x2, 48 - add x2, x2, 96 + add w1, w19, 1 + mov w0, 5 + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + umull x1, w1, w0 + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x3, x0, 48 + add x0, x0, 144 + add x3, x3, x1 add x0, x0, x1 - add x1, x2, x1 - mov x2, 0 -.L358: - add x3, x5, :lo12:.LANCHOR0 - ldrb w4, [x3,1137] - cmp w4, w2 - bls .L363 - ldrb w3, [x3,1136] - cmp w3, 67 - bne .L359 - ldrsb w3, [x0,x2] - b .L362 -.L359: - ldrsb w3, [x1,x2] -.L362: - str w3, [x20] - add x2, x2, 1 - b .L358 -.L363: + mov x1, 0 +.L361: + ldrb w4, [x2, 1137] + cmp w4, w1 + bhi .L364 bl nandc_wait_flash_ready - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L364: + ldrb w4, [x2, 1136] + cmp w4, 67 + bne .L362 + ldrsb w4, [x0, x1] +.L366: + add x1, x1, 1 + str w4, [x20] + b .L361 +.L362: + ldrsb w4, [x3, x1] + b .L366 .size sandisk_set_rr_para, .-sandisk_set_rr_para .align 2 .global toshiba_3d_set_tlc_rr_para .type toshiba_3d_set_tlc_rr_para, %function toshiba_3d_set_tlc_rr_para: stp x29, x30, [sp, -48]! - uxtb x2, w1 + and x2, x1, 255 mov x1, 7 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] + stp x19, x20, [sp, 16] mov x19, x0 + str x21, [sp, 32] mov w21, 213 - str w21, [x0,8] - str wzr, [x0,4] mov w0, -119 - str w0, [x19,4] - adrp x0, .LANCHOR1 madd x1, x2, x1, x1 + str w21, [x19, 8] + str wzr, [x19, 4] + str w0, [x19, 4] + adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 296 + add x0, x0, 280 add x20, x0, x1 - ldrsb w0, [x0,x1] + ldrsb w0, [x0, x1] str w0, [x19] - ldrsb w0, [x20,1] + ldrsb w0, [x20, 1] str w0, [x19] - ldrsb w0, [x20,2] + ldrsb w0, [x20, 2] str w0, [x19] - ldrsb w0, [x20,3] + ldrsb w0, [x20, 3] str w0, [x19] bl nandc_wait_flash_ready - str w21, [x19,8] - str wzr, [x19,4] + str w21, [x19, 8] + str wzr, [x19, 4] mov w0, -118 - str w0, [x19,4] - ldrsb w0, [x20,4] + str w0, [x19, 4] + ldrsb w0, [x20, 4] str w0, [x19] - ldrsb w0, [x20,5] + ldrsb w0, [x20, 5] str w0, [x19] - ldrsb w0, [x20,6] + ldrsb w0, [x20, 6] str w0, [x19] str wzr, [x19] bl nandc_wait_flash_ready - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size toshiba_3d_set_tlc_rr_para, .-toshiba_3d_set_tlc_rr_para @@ -1971,14 +1809,14 @@ toshiba_3d_set_slc_rr_para: stp x29, x30, [sp, -16]! mov w2, 213 add x29, sp, 0 - str w2, [x0,8] + str w2, [x0, 8] mov w2, -117 - str wzr, [x0,4] - str w2, [x0,4] + str wzr, [x0, 4] + str w2, [x0, 4] adrp x2, .LANCHOR1 add x2, x2, :lo12:.LANCHOR1 add x1, x2, w1, uxtb - ldrsb w1, [x1,697] + ldrsb w1, [x1, 681] str w1, [x0] str wzr, [x0] str wzr, [x0] @@ -1994,107 +1832,106 @@ toshiba_tlc_set_rr_para: stp x29, x30, [sp, -48]! uxtw x1, w1 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x19, x0 - str x21, [sp,32] + str x21, [sp, 32] mov w21, 239 adrp x0, .LANCHOR2 - str w21, [x19,8] - cbz w2, .L367 + str w21, [x19, 8] + cbz w2, .L372 mov w2, 18 - str w2, [x19,4] + str w2, [x19, 4] mov x2, 7 add x0, x0, :lo12:.LANCHOR2 add x0, x0, 40 mul x1, x1, x2 add x20, x0, x1 - ldrb w0, [x0,x1] + ldrb w0, [x0, x1] str w0, [x19] - ldrb w0, [x20,1] + ldrb w0, [x20, 1] str w0, [x19] - ldrb w0, [x20,2] + ldrb w0, [x20, 2] str w0, [x19] - ldrb w0, [x20,3] + ldrb w0, [x20, 3] str w0, [x19] bl nandc_wait_flash_ready - str w21, [x19,8] + str w21, [x19, 8] mov w0, 19 - str w0, [x19,4] - ldrb w0, [x20,4] + str w0, [x19, 4] + ldrb w0, [x20, 4] str w0, [x19] - ldrb w0, [x20,5] + ldrb w0, [x20, 5] str w0, [x19] - ldrb w0, [x20,6] + ldrb w0, [x20, 6] str w0, [x19] +.L375: str wzr, [x19] - b .L368 -.L367: - add x0, x0, :lo12:.LANCHOR2 - mov w3, 20 - add x0, x0, 376 - str w3, [x19,4] - ldrb w0, [x0,x1] - str w0, [x19] - str w2, [x19] - str w2, [x19] - str w2, [x19] -.L368: bl nandc_wait_flash_ready - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L372: + add x0, x0, :lo12:.LANCHOR2 + mov w2, 20 + add x0, x0, 376 + str w2, [x19, 4] + ldrb w0, [x0, x1] + str w0, [x19] + str wzr, [x19] + str wzr, [x19] + b .L375 .size toshiba_tlc_set_rr_para, .-toshiba_tlc_set_rr_para .align 2 .global ymtc_3d_set_tlc_rr_para .type ymtc_3d_set_tlc_rr_para, %function ymtc_3d_set_tlc_rr_para: stp x29, x30, [sp, -48]! + and x1, x1, 255 mov x2, 7 - uxtb x1, w1 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x19, x0 - str x21, [sp,32] - mov w21, 239 - str w21, [x0,8] + str x21, [sp, 32] mov w0, 160 - str w0, [x19,4] - adrp x0, .LANCHOR1 + mov w21, 239 mul x1, x1, x2 + str w21, [x19, 8] + str w0, [x19, 4] + adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 712 + add x0, x0, 696 add x20, x0, x1 - ldrsb w0, [x0,x1] + ldrsb w0, [x0, x1] str w0, [x19] - ldrsb w0, [x20,4] + ldrsb w0, [x20, 4] str w0, [x19] str wzr, [x19] str wzr, [x19] bl nandc_wait_flash_ready - str w21, [x19,8] + str w21, [x19, 8] mov w0, 161 - str w0, [x19,4] - ldrsb w0, [x20,1] + str w0, [x19, 4] + ldrsb w0, [x20, 1] str w0, [x19] - ldrsb w0, [x20,3] + ldrsb w0, [x20, 3] str w0, [x19] - ldrsb w0, [x20,5] + ldrsb w0, [x20, 5] str w0, [x19] str wzr, [x19] bl nandc_wait_flash_ready - str w21, [x19,8] + str w21, [x19, 8] mov w0, 162 - str w0, [x19,4] - ldrsb w0, [x20,2] + str w0, [x19, 4] + ldrsb w0, [x20, 2] str w0, [x19] - ldrsb w0, [x20,6] + ldrsb w0, [x20, 6] str w0, [x19] str wzr, [x19] str wzr, [x19] bl nandc_wait_flash_ready - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size ymtc_3d_set_tlc_rr_para, .-ymtc_3d_set_tlc_rr_para @@ -2104,14 +1941,15 @@ ymtc_3d_set_tlc_rr_para: ymtc_3d_set_slc_rr_para: stp x29, x30, [sp, -16]! mov w2, 239 + and x1, x1, 255 add x29, sp, 0 - str w2, [x0,8] + str w2, [x0, 8] mov w2, 163 - str w2, [x0,4] + str w2, [x0, 4] adrp x2, .LANCHOR1 add x2, x2, :lo12:.LANCHOR1 - add x1, x2, w1, uxtb - ldrsb w1, [x1,1072] + add x2, x2, 1056 + ldrsb w1, [x2, x1] str w1, [x0] str wzr, [x0] str wzr, [x0] @@ -2128,163 +1966,162 @@ flash_start_plane_read: mov w3, 24 mov w2, 1 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 add x4, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] ubfx x24, x0, 24, 2 - ldrb w5, [x4,1257] - sub w3, w3, w5 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrb w19, [x4, 1205] + sub w3, w3, w19 + lsl w19, w2, w19 + sub w19, w19, #1 lsl w21, w2, w3 - lsl w2, w2, w5 - lsr w19, w0, w3 - sub w2, w2, #1 sub w21, w21, #1 - and w19, w19, w2 and w22, w21, w0 - ldrb w0, [x4,1153] - uxtb w19, w19 + lsr w3, w0, w3 + ldrb w0, [x4, 1153] + and w19, w19, w3 + and w19, w19, 255 and w21, w21, w1 cmp w0, w19 - bhi .L372 + bhi .L381 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1072 mov w2, 1148 - add x1, x1, 1088 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L372: - add x26, x20, :lo12:.LANCHOR0 - add x19, x26, w19, sxtw - ldrb w23, [x19,1248] +.L381: + add x4, x20, :lo12:.LANCHOR0 + add x19, x4, w19, sxtw + ldr x25, [x4, 1056] + ldrb w23, [x19, 1196] mov w0, w23 - ldr x25, [x26,1048] bl nandc_cs - cbnz w24, .L373 + cbnz w24, .L382 mov w0, w22 bl slc_phy_page_address_calc mov w22, w0 mov w0, w21 bl slc_phy_page_address_calc mov w21, w0 - adrp x0, .LANCHOR0 - ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L374 + ldrb w0, [x20, #:lo12:.LANCHOR0] + cbz w0, .L383 mov w0, w23 bl zftl_flash_enter_slc_mode - b .L374 -.L373: - ldr x0, [x26,1144] - ldrb w0, [x0,12] - cmp w0, 3 - bne .L375 - ldrb w0, [x26,1268] - cbnz w0, .L375 - ldrb w0, [x26,1269] - cbnz w0, .L375 - sxtw x0, w23 - add x0, x0, 8 - add x0, x25, x0, lsl 8 - str w24, [x0,8] - b .L374 -.L375: - mov w0, w23 - bl zftl_flash_exit_slc_mode -.L374: +.L383: add x0, x20, :lo12:.LANCHOR0 - uxtb x19, w23 + and x19, x23, 255 and w3, w22, 255 lsr w2, w22, 8 and w28, w21, 255 lsr w27, w21, 8 - ldrb w1, [x0,1176] + ldrb w1, [x0, 1176] lsr w26, w21, 16 cmp w1, 1 lsr w1, w22, 16 - bne .L376 + bne .L385 add x19, x25, x19, lsl 8 - ldrb w4, [x0,1168] - ldrb w0, [x0,1256] - str w4, [x19,2056] - str wzr, [x19,2052] - str wzr, [x19,2052] - str w3, [x19,2052] - str w2, [x19,2052] - str w1, [x19,2052] - cbz w0, .L377 + ldrb w4, [x0, 1168] + ldrb w0, [x0, 1204] + str w4, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w3, [x19, 2052] + str w2, [x19, 2052] + str w1, [x19, 2052] + cbz w0, .L386 lsr w22, w22, 24 - str w22, [x19,2052] -.L377: + str w22, [x19, 2052] +.L386: add x22, x20, :lo12:.LANCHOR0 - ldrb w0, [x22,1169] - str w0, [x19,2056] + ldrb w0, [x22, 1169] + str w0, [x19, 2056] bl nandc_wait_flash_ready - cbz w24, .L378 - ldr x0, [x22,1144] - ldrb w0, [x0,12] + ldr x0, [x22, 1144] + ldrb w0, [x0, 12] cmp w0, 3 - bne .L378 - str w24, [x19,2056] -.L378: - str wzr, [x19,2056] + bne .L387 + cbz w24, .L387 + str w24, [x19, 2056] +.L387: + str wzr, [x19, 2056] add x20, x20, :lo12:.LANCHOR0 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w28, [x19,2052] - str w27, [x19,2052] - ldrb w0, [x20,1256] - str w26, [x19,2052] - cbz w0, .L404 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w28, [x19, 2052] + ldrb w0, [x20, 1204] + str w27, [x19, 2052] + str w26, [x19, 2052] + cbz w0, .L408 lsr w21, w21, 24 - str w21, [x19,2052] - b .L404 -.L376: - ldr x0, [x0,1144] - ldrb w4, [x0,7] + str w21, [x19, 2052] +.L408: + mov w0, 48 + str w0, [x19, 2056] + 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 +.L382: + ldr x0, [x4, 1144] + ldrb w0, [x0, 12] + cmp w0, 3 + bne .L384 + ldrb w0, [x4, 1212] + cbnz w0, .L384 + ldrb w0, [x4, 1213] + cbnz w0, .L384 + sxtw x0, w23 + add x0, x0, 8 + add x0, x25, x0, lsl 8 + str w24, [x0, 8] + b .L383 +.L384: + mov w0, w23 + bl zftl_flash_exit_slc_mode + b .L383 +.L385: + ldr x0, [x0, 1144] + ldrb w4, [x0, 7] cmp w4, 1 - bne .L381 - ldrb w4, [x0,12] + bne .L390 + ldrb w4, [x0, 12] cmp w4, 2 - bne .L381 + bne .L390 add x23, x23, 8 mov w4, 38 add x23, x25, x23, lsl 8 - str w4, [x23,8] -.L381: + str w4, [x23, 8] +.L390: add x4, x20, :lo12:.LANCHOR0 add x19, x25, x19, lsl 8 - ldrb w4, [x4,1168] - str w4, [x19,2056] - str w3, [x19,2052] - str w2, [x19,2052] - str w1, [x19,2052] - cbz w24, .L382 - ldrb w0, [x0,12] + ldrb w4, [x4, 1168] + str w4, [x19, 2056] + str w3, [x19, 2052] + str w2, [x19, 2052] + str w1, [x19, 2052] + ldrb w0, [x0, 12] cmp w0, 3 - bne .L382 - str w24, [x19,2056] -.L382: + bne .L391 + cbz w24, .L391 + str w24, [x19, 2056] +.L391: add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,1169] - str w0, [x19,2056] - str w28, [x19,2052] - str w27, [x19,2052] - str w26, [x19,2052] -.L404: - mov w0, 48 - str w0, [x19,2056] - 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 + ldrb w0, [x20, 1169] + str w0, [x19, 2056] + str w28, [x19, 2052] + str w27, [x19, 2052] + str w26, [x19, 2052] + b .L408 .size flash_start_plane_read, .-flash_start_plane_read .align 2 .global flash_set_interface_mode @@ -2292,155 +2129,160 @@ flash_start_plane_read: flash_set_interface_mode: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x22, .LANCHOR0 - adrp x23, .LC38 - adrp x24, .LC37 - str x25, [sp,64] - stp x19, x20, [sp,16] - mov w25, w0 - mov x21, 0 - add x22, x22, :lo12:.LANCHOR0 - add x23, x23, :lo12:.LC38 - add x24, x24, :lo12:.LC37 -.L420: - add x0, x22, x21, lsl 3 - ldr x20, [x22,1048] - adrp x1, .LANCHOR0 - ldrb w19, [x0,1272] - cmp w19, 152 - beq .L406 - cmp w19, 69 - beq .L406 - cmp w19, 155 - beq .L406 - cmp w19, 44 - cset w2, eq - cmp w19, 137 - cset w0, eq - orr w0, w2, w0 - cbz w0, .L407 -.L406: - add x1, x1, :lo12:.LANCHOR0 - cmp w25, 1 - ldrb w1, [x1,1304] - bne .L409 - tbz x1, 0, .L407 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L410 - mov x0, x24 - bl printk -.L410: - add x1, x20, x21, lsl 8 - mov w0, 239 - cmp w19, 137 - str w0, [x1,2056] - beq .L421 - cmp w19, 44 - bne .L411 -.L421: - mov w0, 1 - b .L442 -.L411: - cmp w19, 155 - mov w0, 1 - bne .L419 -.L442: - str w0, [x1,2052] - mov w0, 5 - b .L440 -.L409: - tbz x1, 2, .L407 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L415 - mov x0, x23 - bl printk -.L415: - add x1, x20, x21, lsl 8 - mov w0, 239 - cmp w19, 137 - str w0, [x1,2056] - beq .L422 - cmp w19, 44 - cset w0, eq - cbz w0, .L416 + str x25, [sp, 64] + adrp x25, .LANCHOR0 + add x25, x25, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x19, x20, [sp, 16] + mov w21, w0 + add x22, x25, 1216 + mov x20, x25 + stp x23, x24, [sp, 48] + mov x24, 0 .L422: - mov w0, 1 - str w0, [x1,2052] - mov w0, 35 - b .L440 -.L416: - cmp w19, 155 - bne .L419 - mov w0, 1 - str w0, [x1,2052] - mov w0, 37 - b .L440 -.L419: - mov w2, 128 - str w2, [x1,2052] -.L440: - str w0, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] -.L407: - add x21, x21, 1 - cmp x21, 4 - bne .L420 + lsl x0, x24, 3 + ldr x19, [x25, 1056] + ldrb w23, [x0, x22] + cmp w23, 69 + beq .L410 + add w0, w23, 119 + cmp w23, 44 + and w1, w0, 255 + cset w2, eq + cmp w1, 18 + bhi .L423 + mov x0, 32769 + movk x0, 0x4, lsl 16 + lsr x0, x0, x1 + mvn x0, x0 +.L411: + and w0, w0, 1 + eor w0, w0, 1 + orr w0, w2, w0 + cbz w0, .L412 +.L410: + ldrb w1, [x20, 1248] + cmp w21, 1 + bne .L413 + tbz x1, 0, .L412 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L414 + adrp x0, .LC34 + add x0, x0, :lo12:.LC34 + bl printk +.L414: + add x0, x19, x24, lsl 8 + mov w1, 239 + cmp w23, 44 + str w1, [x0, 2056] + mov w1, 137 + ccmp w23, w1, 4, ne + mov w1, 1 + bne .L415 +.L446: + str w1, [x0, 2052] + mov w1, 5 +.L445: + str w1, [x0, 2048] +.L420: + str wzr, [x0, 2048] + str wzr, [x0, 2048] + str wzr, [x0, 2048] +.L412: + add x24, x24, 1 + cmp x24, 4 + bne .L422 bl nandc_wait_flash_ready - ldr x25, [sp,64] + ldr x25, [sp, 64] mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret +.L423: + mov x0, 1 + b .L411 +.L415: + cmp w23, 155 + beq .L446 + mov w2, 128 + str w2, [x0, 2052] + b .L445 +.L413: + tbz x1, 2, .L412 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L418 + adrp x0, .LC35 + add x0, x0, :lo12:.LC35 + bl printk +.L418: + add x0, x19, x24, lsl 8 + mov w1, 239 + cmp w23, 44 + str w1, [x0, 2056] + mov w1, 137 + ccmp w23, w1, 4, ne + bne .L419 + mov w1, 1 + str w1, [x0, 2052] + mov w1, 35 + b .L445 +.L419: + cmp w23, 155 + bne .L421 + mov w1, 1 + str w1, [x0, 2052] + mov w1, 37 + b .L445 +.L421: + mov w1, 128 + str w1, [x0, 2052] + str wzr, [x0, 2048] + b .L420 .size flash_set_interface_mode, .-flash_set_interface_mode .align 2 .type mt_auto_read_calibration_config, %function mt_auto_read_calibration_config: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxtb w19, w0 - ubfiz x19, x19, 8, 8 - str x1, [x29,40] + stp x19, x20, [sp, 16] + mov w20, w1 + and w19, w0, 255 bl nandc_wait_flash_ready - adrp x0, .LANCHOR0+1048 - ldr x0, [x0,#:lo12:.LANCHOR0+1048] - add x19, x0, x19 + adrp x1, .LANCHOR0+1056 + ubfiz x0, x19, 8, 8 + ldr x19, [x1, #:lo12:.LANCHOR0+1056] + add x19, x19, x0 mov w0, 239 - str w0, [x19,2056] + str w0, [x19, 2056] mov w0, 150 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 1000 bl __const_udelay - ldr x1, [x29,40] - str w1, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + str w20, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size mt_auto_read_calibration_config, .-mt_auto_read_calibration_config .align 2 .global flash_reset .type flash_reset, %function flash_reset: - adrp x1, .LANCHOR0+1048 - uxtb x0, w0 stp x29, x30, [sp, -16]! - add x0, x0, 8 + adrp x1, .LANCHOR0+1056 + ubfiz x0, x0, 8, 8 add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR0+1048] - add x0, x1, x0, lsl 8 - mov w1, 255 - str w1, [x0,8] + ldr x1, [x1, #:lo12:.LANCHOR0+1056] + add x0, x0, 2048 + add x1, x1, x0 + mov w0, 255 + str w0, [x1, 8] bl nandc_wait_flash_ready ldp x29, x30, [sp], 16 ret @@ -2451,58 +2293,57 @@ flash_reset: flash_read_id: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x21, [sp,32] - uxtb w21, w0 - adrp x0, .LANCHOR0+1048 - stp x19, x20, [sp,16] + str x21, [sp, 32] + and w21, w0, 255 + adrp x0, .LANCHOR0+1056 + stp x19, x20, [sp, 16] mov x19, x1 - ldr x20, [x0,#:lo12:.LANCHOR0+1048] + ldr x20, [x0, #:lo12:.LANCHOR0+1056] mov w0, w21 bl flash_reset mov w0, w21 bl nandc_cs - ubfiz x2, x21, 8, 8 + ubfiz x0, x21, 8, 8 + add x20, x20, x0 mov w0, 144 - add x20, x20, x2 - str w0, [x20,2056] + str w0, [x20, 2056] mov x0, 1000 - str wzr, [x20,2052] + str wzr, [x20, 2052] bl __const_udelay - ldr w0, [x20,2048] + ldr w0, [x20, 2048] strb w0, [x19] - ldr w0, [x20,2048] - strb w0, [x19,1] - ldr w0, [x20,2048] - strb w0, [x19,2] - ldr w0, [x20,2048] - strb w0, [x19,3] - ldr w0, [x20,2048] - strb w0, [x19,4] - ldr w0, [x20,2048] - strb w0, [x19,5] - ldr w0, [x20,2048] - strb w0, [x19,6] - ldr w0, [x20,2048] - strb w0, [x19,7] - mov w0, w21 - bl nandc_de_cs + ldr w0, [x20, 2048] + strb w0, [x19, 1] + ldr w0, [x20, 2048] + strb w0, [x19, 2] + ldr w0, [x20, 2048] + strb w0, [x19, 3] + ldr w0, [x20, 2048] + strb w0, [x19, 4] + ldr w0, [x20, 2048] + strb w0, [x19, 5] + ldr w0, [x20, 2048] + strb w0, [x19, 6] + ldr w0, [x20, 2048] + strb w0, [x19, 7] + bl nandc_de_cs.constprop.35 ldrb w2, [x19] sub w0, w2, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L445 - adrp x0, .LC39 - ldrb w3, [x19,1] - ldrb w4, [x19,2] - add x0, x0, :lo12:.LC39 - ldrb w5, [x19,3] + bhi .L451 + ldrb w7, [x19, 5] + adrp x0, .LC36 + ldrb w6, [x19, 4] add w1, w21, 1 - ldrb w6, [x19,4] - ldrb w7, [x19,5] + ldrb w5, [x19, 3] + add x0, x0, :lo12:.LC36 + ldrb w4, [x19, 2] + ldrb w3, [x19, 1] bl printk -.L445: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] +.L451: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size flash_read_id, .-flash_read_id @@ -2510,192 +2351,190 @@ flash_read_id: .global flash_read_spare .type flash_read_spare, %function flash_read_spare: - stp x29, x30, [sp, -48]! - adrp x4, .LANCHOR0+1048 + stp x29, x30, [sp, -32]! ubfiz x0, x0, 8, 8 add x29, sp, 0 - str x19, [sp,16] - adrp x3, .LANCHOR2+17 - ldr x19, [x4,#:lo12:.LANCHOR0+1048] - str x2, [x29,40] - add x19, x19, x0 - ldrb w3, [x3,#:lo12:.LANCHOR2+17] - and w0, w1, 255 + stp x19, x20, [sp, 16] + mov x20, x2 + adrp x2, .LANCHOR2+17 + ldrb w3, [x2, #:lo12:.LANCHOR2+17] + adrp x2, .LANCHOR0+1056 + ldr x19, [x2, #:lo12:.LANCHOR0+1056] lsl w3, w3, 9 - str wzr, [x19,2056] - str w3, [x19,2052] + add x19, x19, x0 + and w0, w1, 255 + str wzr, [x19, 2056] + str w3, [x19, 2052] lsr w3, w3, 8 - str w3, [x19,2052] - str w0, [x19,2052] + str w3, [x19, 2052] + str w0, [x19, 2052] lsr w0, w1, 8 - str w0, [x19,2052] + str w0, [x19, 2052] lsr w1, w1, 16 - str w1, [x19,2052] + str w1, [x19, 2052] mov w0, 48 - str w0, [x19,2056] + str w0, [x19, 2056] bl nandc_wait_flash_ready - ldr x2, [x29,40] - ldr w0, [x19,2048] - strb w0, [x2] - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + ldr w0, [x19, 2048] + strb w0, [x20] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 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]! + stp x29, x30, [sp, -48]! + and w4, w0, 255 + adrp x0, .LANCHOR0+1056 add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w21, w0 - adrp x0, .LANCHOR0+1048 - stp x19, x20, [sp,16] - str x23, [sp,48] + stp x19, x20, [sp, 16] mov w20, w1 - ldr x19, [x0,#:lo12:.LANCHOR0+1048] - mov w0, w21 - mov x23, x2 - mov w22, 144 + ldr x19, [x0, #:lo12:.LANCHOR0+1056] + mov w0, w4 + stp x21, x22, [sp, 32] + mov x22, x2 bl nandc_cs - ubfiz x3, x21, 8, 8 + ubfiz x4, x4, 8, 8 + add x19, x19, x4 mov w0, 239 - add x19, x19, x3 - str w0, [x19,2056] + mov w21, 144 + str w0, [x19, 2056] mov x0, 250 - str w22, [x19,2052] + str w21, [x19, 2052] bl __const_udelay mov w0, 1 - str w0, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] + 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, .LC40 + str w0, [x19, 2056] + str w21, [x19, 2052] mov w1, w20 - add x0, x0, :lo12:.LC40 - ldr w2, [x19,2048] - ldr w3, [x19,2048] - ldr w4, [x19,2048] + adrp x0, .LC37 + add x0, x0, :lo12:.LC37 + 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] + str wzr, [x19, 2056] + str wzr, [x19, 2052] and w0, w20, 255 - str wzr, [x19,2052] - str w0, [x19,2052] + str wzr, [x19, 2052] + str w0, [x19, 2052] lsr w0, w20, 8 - str w0, [x19,2052] + str w0, [x19, 2052] lsr w20, w20, 16 - str w20, [x19,2052] + str w20, [x19, 2052] mov w0, 48 - str w0, [x19,2056] + 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 x0, 0 +.L457: + ldr w1, [x19, 2048] + strb w1, [x22, x0] + add x0, x0, 1 + cmp x0, 16384 + bne .L457 mov w0, 239 - str w0, [x19,2056] + str w0, [x19, 2056] mov w0, 144 - str w0, [x19,2052] + str w0, [x19, 2052] mov x0, 250 bl __const_udelay - 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 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + bl nandc_de_cs.constprop.35 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 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: - stp x29, x30, [sp, -64]! - adrp x2, .LANCHOR0+1048 - uxtb w0, w0 - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - ldr x19, [x2,#:lo12:.LANCHOR0+1048] - add x2, x20, :lo12:.LANCHOR2 - str x21, [sp,32] - ldrb w3, [x2,37] - sxtw x2, w0 + stp x29, x30, [sp, -48]! + and x2, x0, 255 + mov x0, x2 add x2, x2, 8 + add x29, sp, 0 + stp x21, x22, [sp, 32] + mov w22, w1 + adrp x1, .LANCHOR0+1056 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR2 + ldr x19, [x1, #:lo12:.LANCHOR0+1056] + add x1, x20, :lo12:.LANCHOR2 + ldrb w1, [x1, 37] add x2, x19, x2, lsl 8 - cbnz w3, .L466 - mov w3, 162 -.L466: + cbz w1, .L461 +.L476: ubfiz x0, x0, 8, 8 - str w3, [x2,8] + str w1, [x2, 8] add x19, x19, x0 mov w0, 128 - str x1, [x29,56] - str w0, [x19,2056] - and w0, w1, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w0, [x19,2052] - lsr w0, w1, 8 - str w0, [x19,2052] - lsr w0, w1, 16 - str w0, [x19,2052] + str w0, [x19, 2056] + and w0, w22, 255 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w0, [x19, 2052] + lsr w0, w22, 8 + str w0, [x19, 2052] + lsr w0, w22, 16 + str w0, [x19, 2052] mov w0, 16 - str w0, [x19,2056] + str w0, [x19, 2056] bl nandc_wait_flash_ready mov w0, 112 - str w0, [x19,2056] + str w0, [x19, 2056] mov x0, 1000 bl __const_udelay - ldr w2, [x19,2048] - ldr x1, [x29,56] + ldr w2, [x19, 2048] cmp w2, 255 - bne .L454 - ldr w2, [x19,2048] -.L454: + bne .L463 + ldr w2, [x19, 2048] +.L463: mov w0, 5 ands w21, w2, w0 - beq .L455 - ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L455 - adrp x0, .LC41 - add x0, x0, :lo12:.LC41 + beq .L464 + ldr w0, [x20, #:lo12:.LANCHOR2] + tbz x0, 12, .L464 + adrp x0, .LC38 + mov w1, w22 + add x0, x0, :lo12:.LC38 bl printk -.L455: +.L464: add x20, x20, :lo12:.LANCHOR2 - ldrb w0, [x20,38] - cbz w0, .L456 - str w0, [x19,2056] -.L456: + ldrb w0, [x20, 38] + cbz w0, .L460 + str w0, [x19, 2056] +.L460: mov w0, w21 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret +.L461: + mov w1, 162 + b .L476 .size sandisk_prog_test_bad_block, .-sandisk_prog_test_bad_block .align 2 .global nandc_rdy_status .type nandc_rdy_status, %function nandc_rdy_status: - adrp x0, .LANCHOR0+1048 + adrp x0, .LANCHOR0+1056 sub sp, sp, #16 - ldr x0, [x0,#:lo12:.LANCHOR0+1048] + ldr x0, [x0, #:lo12:.LANCHOR0+1056] ldr w0, [x0] - str w0, [sp,8] - ldr w0, [sp,8] + str w0, [sp, 8] + ldr w0, [sp, 8] add sp, sp, 16 ubfx x0, x0, 9, 1 ret @@ -2705,57 +2544,72 @@ nandc_rdy_status: .type nandc_bch_sel, %function nandc_bch_sel: sub sp, sp, #16 - str wzr, [sp,8] - ldr w1, [sp,8] + str wzr, [sp, 8] + ldr w1, [sp, 8] orr w1, w1, 1 - str w1, [sp,8] + str w1, [sp, 8] adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldrb w2, [x1,1028] - strb w0, [x1,1244] + ldrb w2, [x1, 1028] + strb w0, [x1, 1249] cmp w2, 9 - ldr x2, [x1,1048] - ldr w1, [sp,8] - bne .L469 - str w1, [x2,16] + bne .L480 + ldr x1, [x1, 1056] cmp w0, 70 - mov w1, 0 - beq .L470 + ldr w2, [sp, 8] + str w2, [x1, 16] + beq .L486 cmp w0, 60 - mov w1, 3 - beq .L470 + beq .L487 cmp w0, 40 - mov w1, 2 - csinc w1, w1, wzr, eq -.L470: + cset w0, eq + add w0, w0, 1 +.L481: str wzr, [sp] - ldr w0, [sp] - bfi w0, w1, 25, 3 - str w0, [sp] + ldr w2, [sp] + bfi w2, w0, 25, 3 + str w2, [sp] ldr w0, [sp] orr w0, w0, 1 str w0, [sp] ldr w0, [sp] - str w0, [x2,32] - b .L468 -.L469: - str w1, [x2,8] + str w0, [x1, 32] +.L479: + add sp, sp, 16 + ret +.L486: + mov w0, 0 + b .L481 +.L487: + mov w0, 3 + b .L481 +.L480: + ldr x2, [x1, 1056] mov w3, 16 - str wzr, [sp] + ldr w1, [sp, 8] cmp w0, w3 + str w1, [x2, 8] + str wzr, [sp] ldr w1, [sp] bfi w1, w3, 8, 8 str w1, [sp] ldr w1, [sp] and w1, w1, -262145 str w1, [sp] - beq .L478 + bne .L483 +.L490: + ldr w0, [sp] + and w0, w0, -17 + b .L491 +.L483: cmp w0, 24 - bne .L474 + bne .L485 ldr w0, [sp] orr w0, w0, 16 - b .L479 -.L474: +.L491: + str w0, [sp] + b .L484 +.L485: ldr w1, [sp] cmp w0, 40 orr w1, w1, 262144 @@ -2763,21 +2617,14 @@ nandc_bch_sel: ldr w1, [sp] orr w1, w1, 16 str w1, [sp] - bne .L473 -.L478: - ldr w0, [sp] - and w0, w0, -17 -.L479: - str w0, [sp] -.L473: + beq .L490 +.L484: ldr w0, [sp] orr w0, w0, 1 str w0, [sp] ldr w0, [sp] - str w0, [x2,12] -.L468: - add sp, sp, 16 - ret + str w0, [x2, 12] + b .L479 .size nandc_bch_sel, .-nandc_bch_sel .align 2 .global zftl_flash_resume @@ -2785,89 +2632,90 @@ nandc_bch_sel: zftl_flash_resume: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x23, [sp,48] add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - ldrb w1, [x0,1028] - ldr w2, [x0,1056] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + ldrb w1, [x0, 1028] + ldr w2, [x0, 1064] cmp w1, 9 - ldr x1, [x0,1048] + ldr x1, [x0, 1056] str w2, [x1] - ldr x1, [x0,1048] - ldr w2, [x0,1060] - str w2, [x1,4] - ldr x1, [x0,1048] - ldr w2, [x0,1064] - bne .L481 - str w2, [x1,16] - ldr w2, [x0,1068] - str w2, [x1,32] - ldr w2, [x0,1072] - str w2, [x1,80] - ldr w2, [x0,1076] - str w2, [x1,84] - ldr w2, [x0,1080] - str w2, [x1,520] - ldr w0, [x0,1084] - str w0, [x1,8] - b .L482 -.L481: - str w2, [x1,8] - ldr w2, [x0,1068] - str w2, [x1,12] - ldr w2, [x0,1072] - str w2, [x1,304] - ldr w2, [x0,1076] - str w2, [x1,308] - ldr w2, [x0,1080] - str w2, [x1,336] - ldr w0, [x0,1084] - str w0, [x1,344] -.L482: + ldr x1, [x0, 1056] + ldr w2, [x0, 1068] + str w2, [x1, 4] + ldr w2, [x0, 1072] + ldr x1, [x0, 1056] + bne .L493 + str w2, [x1, 16] + ldr w2, [x0, 1076] + str w2, [x1, 32] + ldr w2, [x0, 1080] + str w2, [x1, 80] + ldr w2, [x0, 1084] + str w2, [x1, 84] + ldr w2, [x0, 1088] + str w2, [x1, 520] + ldr w0, [x0, 1092] + str w0, [x1, 8] +.L495: + add x0, x20, :lo12:.LANCHOR0 mov x19, 0 - add x21, x20, :lo12:.LANCHOR0 - mov w23, 2 -.L484: - add x0, x21, x19, lsl 3 - ldrb w0, [x0,1272] + add x23, x0, 1216 + add x21, x0, 1208 + mov w24, 2 +.L494: + lsl x0, x19, 3 + ldrb w0, [x0, x23] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 253 - bhi .L483 - uxtb w22, w19 + bhi .L496 + and w22, w19, 255 mov w0, w22 bl flash_reset - add x0, x21, 1264 - strb w23, [x19,x0] + strb w24, [x19, x21] mov w0, w22 bl zftl_flash_enter_slc_mode -.L483: +.L496: add x19, x19, 1 cmp x19, 4 - bne .L484 + bne .L494 add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,1192] - cbz w0, .L485 + ldrb w0, [x20, 1192] + cbz w0, .L497 mov w0, 1 bl nandc_set_if_mode mov w0, w19 bl flash_set_interface_mode mov w0, w19 bl nandc_set_if_mode - ldr w0, [x20,1072] + ldr w0, [x20, 1080] lsr w0, w0, 8 bl nandc_set_ddr_para -.L485: +.L497: adrp x0, .LANCHOR2+28 - ldrb w0, [x0,#:lo12:.LANCHOR2+28] + ldrb w0, [x0, #:lo12:.LANCHOR2+28] bl nandc_bch_sel - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L493: + str w2, [x1, 8] + ldr w2, [x0, 1076] + str w2, [x1, 12] + ldr w2, [x0, 1080] + str w2, [x1, 304] + ldr w2, [x0, 1084] + str w2, [x1, 308] + ldr w2, [x0, 1088] + str w2, [x1, 336] + ldr w0, [x0, 1092] + str w0, [x1, 344] + b .L495 .size zftl_flash_resume, .-zftl_flash_resume .align 2 .global rk_nandc_flash_ready @@ -2886,282 +2734,285 @@ rk_nandc_flash_ready: nandc_iqr_wait_flash_ready: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19,1048] + ldr x0, [x19, 1056] bl rk_nandc_rb_irq_flag_init - ldrb w1, [x19,1028] - ldr x0, [x19,1048] + ldrb w1, [x19, 1028] + ldr x0, [x19, 1056] cmp w1, 9 - bne .L492 - ldr w1, [x0,292] + bne .L506 + ldr w1, [x0, 292] orr w1, w1, 2 - str w1, [x0,292] - ldr w1, [x0,288] + str w1, [x0, 292] + ldr w1, [x0, 288] orr w1, w1, 2 - str w1, [x0,288] - b .L493 -.L492: - ldr w1, [x0,368] - orr w1, w1, 2 - str w1, [x0,368] - ldr w1, [x0,364] - orr w1, w1, 2 - str w1, [x0,364] -.L493: + str w1, [x0, 288] +.L507: ldr w1, [x0] - tbnz x1, 9, .L494 + tbnz x1, 9, .L508 bl wait_for_nand_flash_ready - b .L491 -.L494: - mov w1, 1 - bl nandc_irq_disable -.L491: - ldr x19, [sp,16] +.L505: + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L506: + ldr w1, [x0, 368] + orr w1, w1, 2 + str w1, [x0, 368] + ldr w1, [x0, 364] + orr w1, w1, 2 + str w1, [x0, 364] + b .L507 +.L508: + mov w1, 1 + bl nandc_irq_disable + b .L505 .size nandc_iqr_wait_flash_ready, .-nandc_iqr_wait_flash_ready .align 2 .global flash_erase_duplane_block .type flash_erase_duplane_block, %function flash_erase_duplane_block: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR0 - str x25, [sp,64] - stp x19, x20, [sp,16] - uxtb w19, w0 - add x0, x21, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - uxtb w20, w1 - mov w24, w2 - ldrb w0, [x0,1153] - mov w23, w3 + stp x19, x20, [sp, 16] + and w19, w0, 255 + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov w22, w2 + stp x25, x26, [sp, 64] + mov w21, w3 + stp x23, x24, [sp, 48] + and w25, w1, 255 + ldrb w0, [x0, 1153] cmp w0, w19 - bhi .L497 + bhi .L512 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1096 mov w2, 695 - add x1, x1, 1112 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L497: - add x1, x21, :lo12:.LANCHOR0 - mov w0, -1 - ldrb w2, [x1,1153] - cmp w2, w19 - bls .L498 +.L512: + add x0, x20, :lo12:.LANCHOR0 + ldrb w1, [x0, 1153] + cmp w1, w19 + bls .L521 + add x19, x0, w19, sxtw + ldr x26, [x0, 1056] adrp x0, .LANCHOR2 - add x19, x1, w19, sxtw - ldrb w25, [x19,1248] - ldr x19, [x1,1048] - ldr w0, [x0,#:lo12:.LANCHOR2] - mov x22, x25 - add x25, x25, 8 - add x25, x19, x25, lsl 8 - tbz x0, 4, .L499 - adrp x0, .LC42 - mov w1, w22 - add x0, x0, :lo12:.LC42 - mov w2, w24 - mov w3, w23 + ldrb w23, [x19, 1196] + ldr w0, [x0, #:lo12:.LANCHOR2] + and x19, x23, 255 + add x24, x19, 8 + add x24, x26, x24, lsl 8 + tbz x0, 4, .L514 + adrp x0, .LC39 + mov w3, w21 + mov w2, w22 + mov w1, w23 + add x0, x0, :lo12:.LC39 bl printk -.L499: +.L514: bl nandc_wait_flash_ready - mov w0, w22 + mov w0, w23 bl nandc_cs - mov w0, w22 - cbnz w20, .L500 + mov w0, w23 + cbnz w25, .L515 bl zftl_flash_enter_slc_mode - b .L501 -.L500: - bl zftl_flash_exit_slc_mode -.L501: - ubfiz x4, x22, 8, 8 +.L516: + add x19, x26, x19, lsl 8 mov w0, 96 - add x19, x19, x4 - str w0, [x19,2056] - and w0, w24, 255 - str w0, [x19,2052] - lsr w0, w24, 8 - str w0, [x19,2052] - lsr w0, w24, 16 - str w0, [x19,2052] - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,1256] - cbz w0, .L502 - lsr w0, w24, 24 - str w0, [x19,2052] -.L502: - add x0, x21, :lo12:.LANCHOR0 - mov w20, 0 - ldrb w0, [x0,1305] - cbnz w0, .L503 + str w0, [x19, 2056] + and w0, w22, 255 + str w0, [x19, 2052] + lsr w0, w22, 8 + str w0, [x19, 2052] + lsr w0, w22, 16 + str w0, [x19, 2052] + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1204] + cbz w0, .L517 + lsr w0, w22, 24 + str w0, [x19, 2052] +.L517: + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1250] + cbnz w0, .L522 mov w0, 208 - str w0, [x19,2056] - mov w20, 5 + str w0, [x19, 2056] + mov w23, 5 bl nandc_wait_flash_ready - mov x0, x25 + mov x0, x24 bl flash_read_status - and w20, w0, w20 -.L503: + and w23, w0, w23 +.L518: mov w0, 96 - add x21, x21, :lo12:.LANCHOR0 - str w0, [x19,2056] - and w0, w23, 255 - str w0, [x19,2052] - lsr w0, w23, 8 - str w0, [x19,2052] - lsr w0, w23, 16 - str w0, [x19,2052] - ldrb w0, [x21,1256] - cbz w0, .L504 - lsr w23, w23, 24 - str w23, [x19,2052] -.L504: + add x20, x20, :lo12:.LANCHOR0 + str w0, [x19, 2056] + and w0, w21, 255 + str w0, [x19, 2052] + lsr w0, w21, 8 + str w0, [x19, 2052] + lsr w0, w21, 16 + str w0, [x19, 2052] + ldrb w0, [x20, 1204] + cbz w0, .L519 + lsr w3, w21, 24 + str w3, [x19, 2052] +.L519: mov w0, 208 - str w0, [x19,2056] + str w0, [x19, 2056] mov w19, 5 bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - mov x0, x25 + mov x0, x24 bl flash_read_status mov w2, w0 - mov w0, w22 - str x2, [x29,88] - bl nandc_de_cs - ldr x2, [x29,88] + bl nandc_de_cs.constprop.35 and w19, w2, w19 - orr w19, w19, w20 - cbz w19, .L505 - adrp x0, .LC43 - mov w1, w24 - add x0, x0, :lo12:.LC43 + orr w19, w19, w23 + cbz w19, .L520 + adrp x0, .LC40 + mov w1, w22 + add x0, x0, :lo12:.LC40 bl printk -.L505: +.L520: mov w0, w19 -.L498: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 96 +.L511: + 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 +.L515: + bl zftl_flash_exit_slc_mode + b .L516 +.L522: + mov w23, 0 + b .L518 +.L521: + mov w0, -1 + b .L511 .size flash_erase_duplane_block, .-flash_erase_duplane_block .align 2 .global flash_erase_block_en .type flash_erase_block_en, %function flash_erase_block_en: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x25, x26, [sp,64] - uxtb w25, w1 - add x1, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxtb w22, w0 - mov w0, 24 - ldrb w19, [x1,1257] + stp x23, x24, [sp, 48] mov w23, w2 - sub w19, w0, w19 - mov w0, 1 - lsl w19, w0, w19 - ldrb w0, [x1,1153] + stp x21, x22, [sp, 32] + and w22, w0, 255 + adrp x0, .LANCHOR0 + add x2, x0, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov w19, 24 + stp x25, x26, [sp, 64] + and w25, w1, 255 + str x27, [sp, 80] + mov x24, x0 + ldrb w1, [x2, 1205] + sub w1, w19, w1 + mov w19, 1 + lsl w19, w19, w1 + ldrb w1, [x2, 1153] sub w19, w19, #1 - cmp w0, w22 - and w19, w19, w2 - bhi .L521 + and w19, w19, w23 + cmp w1, w22 + bhi .L537 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1128 mov w2, 757 - add x1, x1, 1144 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L521: - add x1, x20, :lo12:.LANCHOR0 - mov w0, -1 - ldrb w2, [x1,1153] - cmp w2, w22 - bls .L522 - add x0, x1, w22, sxtw - ldrb w24, [x0,1248] +.L537: + add x0, x24, :lo12:.LANCHOR0 + ldrb w1, [x0, 1153] + cmp w1, w22 + bls .L544 + add x1, x0, w22, sxtw + ldr x27, [x0, 1056] adrp x0, .LANCHOR2 - ldr x26, [x1,1048] - mov x21, x24 - add x24, x24, 8 - ldr w0, [x0,#:lo12:.LANCHOR2] - add x24, x26, x24, lsl 8 - tbz x0, 4, .L523 - adrp x0, .LC44 - mov w1, w21 - add x0, x0, :lo12:.LC44 - mov w2, w23 + ldrb w21, [x1, 1196] + ldr w0, [x0, #:lo12:.LANCHOR2] + and x20, x21, 255 + add x26, x20, 8 + add x26, x27, x26, lsl 8 + tbz x0, 4, .L539 + adrp x0, .LC41 mov w3, w25 + mov w2, w23 + mov w1, w21 + add x0, x0, :lo12:.LC41 bl printk -.L523: +.L539: bl nandc_wait_flash_ready mov w0, w21 bl nandc_cs mov w0, w21 - cbnz w25, .L524 + cbnz w25, .L540 bl zftl_flash_enter_slc_mode - b .L525 -.L524: - bl zftl_flash_exit_slc_mode -.L525: - ubfiz x3, x21, 8, 8 - mov w0, 96 - add x3, x26, x3 - str w0, [x3,2056] - and w0, w19, 255 - str w0, [x3,2052] - lsr w0, w19, 8 - str w0, [x3,2052] - lsr w0, w19, 16 - str w0, [x3,2052] - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1256] - cbz w0, .L526 +.L541: + add x0, x27, x20, lsl 8 + mov w1, 96 + str w1, [x0, 2056] + and w1, w19, 255 + str w1, [x0, 2052] + lsr w1, w19, 8 + str w1, [x0, 2052] + lsr w1, w19, 16 + str w1, [x0, 2052] + add x1, x24, :lo12:.LANCHOR0 + ldrb w1, [x1, 1204] + cbz w1, .L542 lsr w19, w19, 24 - str w19, [x3,2052] -.L526: - mov w0, 208 - str w0, [x3,2056] + str w19, [x0, 2052] +.L542: + mov w1, 208 + str w1, [x0, 2056] bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - mov x0, x24 + mov x0, x26 bl flash_read_status - mov w19, w0 - mov w0, w21 - bl nandc_de_cs - mov w3, 5 - ands w3, w19, w3 - beq .L527 - add x20, x20, :lo12:.LANCHOR0 - adrp x0, .LC45 - add x0, x0, :lo12:.LC45 + mov w3, w0 + bl nandc_de_cs.constprop.35 + mov w0, 5 + ands w3, w3, w0 + beq .L543 + add x0, x24, :lo12:.LANCHOR0 mov w1, w22 - ldrh w2, [x20,2] + ldrh w2, [x0, 2] + adrp x0, .LC42 + add x0, x0, :lo12:.LC42 udiv w2, w23, w2 bl printk mov w3, -1 -.L527: +.L543: mov w0, w3 -.L522: - 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 +.L536: + 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 +.L540: + bl zftl_flash_exit_slc_mode + b .L541 +.L544: + mov w0, -1 + b .L536 .size flash_erase_block_en, .-flash_erase_block_en .align 2 .global flash_erase_block @@ -3179,52 +3030,54 @@ flash_erase_block: .global flash_erase_all .type flash_erase_all, %function flash_erase_all: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -80]! adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x23, x24, [sp, 48] + add x20, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x23, x20, 1024 + str x25, [sp, 64] + mov x24, x20 mov w19, 0 - ldrb w1, [x0,21] - ldrh w20, [x0,22] - adrp x0, .LANCHOR0 - add x23, x0, :lo12:.LANCHOR0 - mov x21, x0 - mul w20, w1, w20 - uxth w20, w20 -.L540: - ldrb w0, [x23,1153] + ldrb w1, [x0, 21] + ldrh w21, [x0, 22] + mul w21, w21, w1 + and w21, w21, 65535 +.L558: + ldrb w0, [x20, 1153] cmp w0, w19 - bls .L544 + bhi .L561 + mov w1, 0 + adrp x0, .LC43 + add x0, x0, :lo12:.LC43 + bl printk + 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 +.L561: add x0, x23, w19, sxtw - ldrb w24, [x0,1248] mov w22, 0 -.L541: - cmp w20, w22, uxth - bls .L545 - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0,2] - mov w0, w24 - mul w1, w22, w1 + ldrb w25, [x0, 172] +.L559: + cmp w21, w22, uxth + bhi .L560 + add w19, w19, 1 + and w19, w19, 65535 + b .L558 +.L560: + ldrh w1, [x24, 2] + mov w0, w25 + mul w1, w1, w22 add w22, w22, 1 bl flash_erase_block - b .L541 -.L545: - add w19, w19, 1 - uxth w19, w19 - b .L540 -.L544: - adrp x0, .LC46 - mov w1, 0 - add x0, x0, :lo12:.LC46 - bl printk - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 - ret + b .L559 .size flash_erase_all, .-flash_erase_all .align 2 .global rk_nandc_flash_xfer_completed @@ -3242,265 +3095,265 @@ rk_nandc_flash_xfer_completed: .type nandc_xfer_start, %function nandc_xfer_start: stp x29, x30, [sp, -80]! - uxtb w1, w1 + and w1, w1, 255 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x21, [sp,32] - add x4, x20, :lo12:.LANCHOR0 - uxtb w21, w0 + str x21, [sp, 32] + and w21, w0, 255 mov x0, x2 + add x2, x20, :lo12:.LANCHOR0 and w6, w21, 1 - add w5, w1, 1 - ldrb w2, [x4,1028] - cmp w2, 9 - bne .L548 - str wzr, [x29,56] - mov w2, 1 - ubfx x5, x5, 1, 6 - ldr w1, [x29,56] + ldrb w4, [x2, 1028] + cmp w4, 9 + add w4, w1, 1 + bne .L566 + str wzr, [x29, 56] + mov w5, 1 + ubfx x4, x4, 1, 6 + ldr w1, [x29, 56] bfi w1, w6, 1, 1 - str w1, [x29,56] - ldr w1, [x29,56] + str w1, [x29, 56] + ldr w1, [x29, 56] orr w1, w1, 8 - str w1, [x29,56] - ldr w1, [x29,56] - bfi w1, w2, 5, 2 - str w1, [x29,56] - ldr w1, [x29,56] + str w1, [x29, 56] + ldr w1, [x29, 56] + bfi w1, w5, 5, 2 + str w1, [x29, 56] + ldr w1, [x29, 56] orr w1, w1, 536870912 - str w1, [x29,56] - ldr w1, [x29,56] + str w1, [x29, 56] + ldr w1, [x29, 56] orr w1, w1, 1024 - str w1, [x29,56] - ldr w1, [x29,56] + str w1, [x29, 56] + ldr w1, [x29, 56] and w1, w1, -17 - str w1, [x29,56] - ldr w1, [x29,56] - bfi w1, w5, 22, 6 - str w1, [x29,56] - ldr w1, [x29,56] + str w1, [x29, 56] + ldr w1, [x29, 56] + bfi w1, w4, 22, 6 + str w1, [x29, 56] + ldr w1, [x29, 56] orr w1, w1, 128 - str w1, [x29,56] - ldrb w1, [x4,1193] - cbz w1, .L549 - ldrb w1, [x4,1240] - cbz w1, .L549 - ldr w1, [x29,56] + str w1, [x29, 56] + ldrb w1, [x2, 1251] + cbz w1, .L567 + ldrb w1, [x2, 1252] + cbz w1, .L567 + ldr w1, [x29, 56] orr w1, w1, 512 - str w1, [x29,56] -.L549: - ldr w1, [x29,56] + str w1, [x29, 56] +.L567: + ldr w1, [x29, 56] add x20, x20, :lo12:.LANCHOR0 mov w2, w21 ubfx x1, x1, 22, 6 + str x3, [x20, 1272] lsl w1, w1, 10 - str x3, [x20,1216] - str x0, [x20,1208] + str x0, [x20, 1264] bl rknand_dma_map_single - str w0, [x20,1224] - ldr w1, [x29,56] + str w0, [x20, 1280] + ldr w1, [x29, 56] mov w2, w21 - ldr x0, [x20,1216] + ldr x0, [x20, 1272] ubfx x1, x1, 22, 6 lsl w1, w1, 2 bl rknand_dma_map_single - str w0, [x20,1228] + str w0, [x20, 1284] mov w1, 1 - str w1, [x20,1232] - ldr x1, [x20,1048] - cmp w21, wzr - ldr w2, [x20,1224] - str w2, [x1,52] + str w1, [x20, 1288] + ldr x1, [x20, 1056] + cmp w21, 0 + ldr w2, [x20, 1280] + str w2, [x1, 52] mov w2, 16 - str w0, [x1,56] - ldr w0, [x1,48] - str w0, [x29,64] - ldr w0, [x29,64] + str w0, [x1, 56] + ldr w0, [x1, 48] + str w0, [x29, 64] + ldr w0, [x29, 64] bfi w0, w2, 9, 5 - str w0, [x29,64] + str w0, [x29, 64] mov w2, 2 - ldr w0, [x29,64] + ldr w0, [x29, 64] orr w0, w0, 448 - str w0, [x29,64] - ldr w0, [x29,64] + str w0, [x29, 64] + ldr w0, [x29, 64] bfi w0, w2, 3, 3 - str w0, [x29,64] + str w0, [x29, 64] cset w2, eq - ldr w0, [x29,64] + ldr w0, [x29, 64] orr w0, w0, 4 - str w0, [x29,64] - ldr w0, [x29,64] + str w0, [x29, 64] + ldr w0, [x29, 64] bfi w0, w2, 1, 1 - str w0, [x29,64] - ldrh w2, [x20,1242] - ldr w0, [x29,64] + str w0, [x29, 64] + ldrh w2, [x20, 1296] + ldr w0, [x29, 64] orr w0, w0, 1 - str w0, [x29,64] - ldr w0, [x29,64] + str w0, [x29, 64] + ldr w0, [x29, 64] bfi w0, w2, 16, 11 - str w0, [x29,64] - ldr w0, [x29,64] - str w0, [x1,48] - ldr w0, [x29,56] - str w0, [x1,16] - ldr w0, [x29,56] + str w0, [x29, 64] + ldr w0, [x29, 64] + str w0, [x1, 48] + ldr w0, [x29, 56] + str w0, [x1, 16] + ldr w0, [x29, 56] orr w0, w0, 4 - str w0, [x29,56] - ldr w0, [x29,56] - str w0, [x1,16] - b .L547 -.L548: - ldr x2, [x4,1048] + str w0, [x29, 56] + ldr w0, [x29, 56] + str w0, [x1, 16] +.L565: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 80 + ret +.L566: + ldr x5, [x2, 1056] mov w7, 16 - ubfx x5, x5, 1, 6 - ldr w2, [x2,12] - str w2, [x29,72] - ldr w2, [x29,72] - bfi w2, w7, 8, 8 - str w2, [x29,72] - ldr w2, [x29,72] - and w2, w2, -9 - str w2, [x29,72] - ldr w2, [x29,72] - and w2, w2, -225 - str w2, [x29,72] - str wzr, [x29,56] - ldr w2, [x29,56] - bfi w2, w6, 1, 1 - str w2, [x29,56] + ubfx x4, x4, 1, 6 + ldr w5, [x5, 12] + str w5, [x29, 72] + ldr w5, [x29, 72] + bfi w5, w7, 8, 8 + str w5, [x29, 72] + ldr w5, [x29, 72] + and w5, w5, -9 + str w5, [x29, 72] + ldr w5, [x29, 72] + and w5, w5, -225 + str w5, [x29, 72] + str wzr, [x29, 56] + ldr w5, [x29, 56] + bfi w5, w6, 1, 1 + str w5, [x29, 56] mov w6, 1 - ldr w2, [x29,56] - orr w2, w2, 8 - str w2, [x29,56] - ldr w2, [x29,56] - bfi w2, w6, 5, 2 - str w2, [x29,56] - ldr w2, [x29,56] - orr w2, w2, 536870912 - str w2, [x29,56] - ldr w2, [x29,56] - orr w2, w2, 1024 - str w2, [x29,56] - ldr w2, [x29,56] - and w2, w2, -17 - str w2, [x29,56] - ldr w2, [x29,56] - bfi w2, w5, 22, 6 - str w2, [x29,56] - cbz w21, .L551 - ldrb w2, [x4,1244] - ubfx x1, x1, 1, 7 - mov w5, 128 - cmp w2, 25 - mov w2, 64 - csel w2, w2, w5, cc - add x1, x3, x1, lsl 2 - mov w5, 0 -.L553: - cmp x3, x1 - add w7, w5, w2 - beq .L555 - ldrh w6, [x3,2] - and x5, x5, 4294967292 - ldr x8, [x4,1200] - ldrh w9, [x3],4 - orr w6, w9, w6, lsl 16 - str w6, [x8,x5] - mov w5, w7 - b .L553 -.L551: - ldr x1, [x4,1200] - str w6, [x1] -.L555: + ldr w5, [x29, 56] + orr w5, w5, 8 + str w5, [x29, 56] + ldr w5, [x29, 56] + bfi w5, w6, 5, 2 + str w5, [x29, 56] + ldr w5, [x29, 56] + orr w5, w5, 536870912 + str w5, [x29, 56] + ldr w5, [x29, 56] + orr w5, w5, 1024 + str w5, [x29, 56] + ldr w5, [x29, 56] + and w5, w5, -17 + str w5, [x29, 56] + ldr w5, [x29, 56] + bfi w5, w4, 22, 6 + str w5, [x29, 56] + cbz w21, .L569 + ldrb w4, [x2, 1249] + lsr w1, w1, 1 + mov w6, 64 + mov x5, 0 + cmp w4, 25 + mov w4, 128 + csel w6, w6, w4, cc + mov w4, 0 +.L571: + add w7, w6, w4 + cmp w1, w5 + bgt .L572 +.L573: add x20, x20, :lo12:.LANCHOR0 mov w2, w21 - ldr x1, [x20,1200] - str x1, [x20,1216] - ldr w1, [x29,56] - str x0, [x20,1208] + ldr x1, [x20, 1256] + str x1, [x20, 1272] + ldr w1, [x29, 56] + str x0, [x20, 1264] ubfx x1, x1, 22, 6 lsl w1, w1, 10 bl rknand_dma_map_single - str w0, [x20,1224] - ldr w1, [x29,56] + ldr w1, [x29, 56] mov w2, w21 - ldr x0, [x20,1216] + str w0, [x20, 1280] + ldr x0, [x20, 1272] ubfx x1, x1, 22, 6 lsl w1, w1, 7 bl rknand_dma_map_single - str w0, [x20,1228] - ldr x1, [x20,1048] + str w0, [x20, 1284] mov w0, 1 - str w0, [x20,1232] + str w0, [x20, 1288] + ldr x0, [x20, 1056] mov w2, 16 - ldr w0, [x20,1224] - cmp w21, wzr - str w0, [x1,20] - ldr w0, [x20,1228] - str w0, [x1,24] - str wzr, [x29,64] - ldr w0, [x29,64] - bfi w0, w2, 9, 5 - str w0, [x29,64] + ldr w1, [x20, 1280] + cmp w21, 0 + str w1, [x0, 20] + ldr w1, [x20, 1284] + str w1, [x0, 24] + str wzr, [x29, 64] + ldr w1, [x29, 64] + bfi w1, w2, 9, 5 + str w1, [x29, 64] mov w2, 2 - ldr w0, [x29,64] - orr w0, w0, 448 - str w0, [x29,64] - ldr w0, [x29,64] - bfi w0, w2, 3, 3 - str w0, [x29,64] + ldr w1, [x29, 64] + orr w1, w1, 448 + str w1, [x29, 64] + ldr w1, [x29, 64] + bfi w1, w2, 3, 3 + str w1, [x29, 64] cset w2, eq - ldr w0, [x29,64] - orr w0, w0, 4 - str w0, [x29,64] - ldr w0, [x29,64] - bfi w0, w2, 1, 1 - str w0, [x29,64] - ldr w0, [x29,64] - orr w0, w0, 1 - str w0, [x29,64] - ldr w0, [x29,64] - str w0, [x1,16] - ldr w0, [x29,72] - str w0, [x1,12] - ldr w0, [x29,56] - str w0, [x1,8] - ldr w0, [x29,56] - orr w0, w0, 4 - str w0, [x29,56] - ldr w0, [x29,56] - str w0, [x1,8] -.L547: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 80 - ret + ldr w1, [x29, 64] + orr w1, w1, 4 + str w1, [x29, 64] + ldr w1, [x29, 64] + bfi w1, w2, 1, 1 + str w1, [x29, 64] + ldr w1, [x29, 64] + orr w1, w1, 1 + str w1, [x29, 64] + ldr w1, [x29, 64] + str w1, [x0, 16] + ldr w1, [x29, 72] + str w1, [x0, 12] + ldr w1, [x29, 56] + str w1, [x0, 8] + ldr w1, [x29, 56] + orr w1, w1, 4 + str w1, [x29, 56] + ldr w1, [x29, 56] + str w1, [x0, 8] + b .L565 +.L572: + ldr x8, [x2, 1256] + and x4, x4, 4294967292 + ldr w9, [x3, x5, lsl 2] + add x5, x5, 1 + str w9, [x8, x4] + mov w4, w7 + b .L571 +.L569: + ldr x1, [x2, 1256] + str w6, [x1] + b .L573 .size nandc_xfer_start, .-nandc_xfer_start .align 2 .global nandc_set_seed .type nandc_set_seed, %function nandc_set_seed: adrp x1, .LANCHOR1 - and w0, w0, 127 add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 1168 - ldrh w1, [x1,w0,uxtw 1] + and x0, x0, 127 + add x1, x1, 1152 + ldrh w1, [x1, x0, lsl 1] adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 orr w2, w1, -1073741824 - ldrb w3, [x0,1240] - cmp w3, wzr + ldrb w3, [x0, 1252] + cmp w3, 0 csel w1, w2, w1, ne - ldrb w2, [x0,1028] - ldr x0, [x0,1048] + ldrb w2, [x0, 1028] + ldr x0, [x0, 1056] cmp w2, 9 - bne .L565 - str w1, [x0,520] - b .L563 -.L565: - str w1, [x0,336] -.L563: + bne .L584 + str w1, [x0, 520] + ret +.L584: + str w1, [x0, 336] ret .size nandc_set_seed, .-nandc_set_seed .align 2 @@ -3509,43 +3362,45 @@ nandc_set_seed: zftl_flash_de_init: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 + stp x19, x20, [sp, 16] bl nandc_wait_flash_ready - add x1, x19, :lo12:.LANCHOR0 - ldrb w0, [x19,#:lo12:.LANCHOR0] - cbz w0, .L570 - ldrb w0, [x1,1154] - cbnz w0, .L570 - ldrb w1, [x1,1028] - cmp w1, 9 - beq .L570 - bl zftl_flash_exit_slc_mode -.L570: + adrp x4, .LANCHOR0 + mov x19, x4 + ldrb w1, [x4, #:lo12:.LANCHOR0] + cbz w1, .L589 + add x0, x4, :lo12:.LANCHOR0 + ldrb w1, [x0, 1154] + cbnz w1, .L589 + ldrb w0, [x0, 1028] + cmp w0, 9 + beq .L589 mov w0, 0 + bl zftl_flash_exit_slc_mode +.L589: add x20, x19, :lo12:.LANCHOR0 + mov w0, 0 bl hynix_reconfig_rr_para - ldrb w0, [x20,1192] - cbz w0, .L571 - ldrb w0, [x20,1304] - tbz x0, 0, .L571 + ldrb w0, [x20, 1192] + cbz w0, .L590 + ldrb w0, [x20, 1248] + tbz x0, 0, .L590 mov w0, 1 bl flash_set_interface_mode mov w0, 1 bl nandc_set_if_mode - strb wzr, [x20,1192] -.L571: + strb wzr, [x20, 1192] +.L590: add x19, x19, :lo12:.LANCHOR0 - ldrb w0, [x19,1240] - cbz w0, .L572 + ldrb w0, [x19, 1252] + cbz w0, .L591 mov w0, 0 - strb wzr, [x19,1240] + strb wzr, [x19, 1252] bl nandc_set_seed mov w0, 1 - strb w0, [x19,1240] -.L572: + strb w0, [x19, 1252] +.L591: mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size zftl_flash_de_init, .-zftl_flash_de_init @@ -3553,171 +3408,132 @@ zftl_flash_de_init: .global nandc_randomizer_enable .type nandc_randomizer_enable, %function nandc_randomizer_enable: - adrp x1, .LANCHOR0+1240 - strb w0, [x1,#:lo12:.LANCHOR0+1240] + adrp x1, .LANCHOR0+1252 + strb w0, [x1, #:lo12:.LANCHOR0+1252] ret .size nandc_randomizer_enable, .-nandc_randomizer_enable .align 2 .global nandc_get_chip_if .type nandc_get_chip_if, %function nandc_get_chip_if: - adrp x1, .LANCHOR0+1048 - uxtb x0, w0 - add x0, x0, 8 - ldr x1, [x1,#:lo12:.LANCHOR0+1048] - add x0, x1, x0, lsl 8 + adrp x1, .LANCHOR0+1056 + ubfiz x0, x0, 8, 8 + add x0, x0, 2048 + ldr x1, [x1, #:lo12:.LANCHOR0+1056] + add x0, x1, x0 ret .size nandc_get_chip_if, .-nandc_get_chip_if .align 2 - .global zbuf_init - .type zbuf_init, %function -zbuf_init: - stp x29, x30, [sp, -48]! - adrp x0, .LANCHOR0 - add x29, sp, 0 - stp x19, x20, [sp,16] - add x19, x0, :lo12:.LANCHOR0 - mov w20, 0 - stp x21, x22, [sp,32] - add x19, x19, 1312 - mov x22, x0 -.L591: - add x21, x22, :lo12:.LANCHOR0 - uxtb w0, w20 - add w1, w0, 1 - strb w0, [x19,1] - strb w1, [x19] - add w20, w20, 1 - ldrb w0, [x21,3360] - add x19, x19, 64 - strb wzr, [x19,-62] - str xzr, [x19,-48] - lsl w0, w0, 9 - bl ftl_malloc - str x0, [x19,-56] - mov w0, 64 - bl ftl_malloc - str x0, [x19,-40] - cmp w20, 32 - bne .L591 - strb w20, [x21,3362] - mov w0, -1 - strb wzr, [x21,3361] - strb w0, [x21,3296] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret - .size zbuf_init, .-zbuf_init - .align 2 .global buf_reinit .type buf_reinit, %function buf_reinit: adrp x0, .LANCHOR0 - mov w2, 0 add x1, x0, :lo12:.LANCHOR0 - add x1, x1, 1312 -.L594: - uxtb w3, w2 - add w2, w2, 1 + add x1, x1, 1304 + mov w2, 0 +.L611: + and w3, w2, 255 + strb wzr, [x1, 2] add w4, w3, 1 - strb w3, [x1,1] + strb w3, [x1, 1] strb w4, [x1] + add w2, w2, 1 + str xzr, [x1, 16] cmp w2, 32 - strb wzr, [x1,2] add x1, x1, 64 - str xzr, [x1,-48] - bne .L594 + bne .L611 add x0, x0, :lo12:.LANCHOR0 mov w1, -1 - strb wzr, [x0,3361] - strb w1, [x0,3296] - strb w2, [x0,3362] + strb wzr, [x0, 3352] + strb w1, [x0, 3288] + strb w2, [x0, 3353] ret .size buf_reinit, .-buf_reinit .align 2 .global buf_add_tail .type buf_add_tail, %function buf_add_tail: - stp x29, x30, [sp, -32]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov x20, x0 + stp x19, x20, [sp, 16] + mov x19, x0 + str x21, [sp, 32] mov w0, -1 strb w0, [x1] - mov x19, x1 - ldrb w1, [x20] + mov x20, x1 + ldrb w1, [x19] cmp w1, 255 - bne .L602 - ldrb w0, [x19,1] + bne .L619 + ldrb w0, [x20, 1] cmp w0, 255 - bne .L598 + bne .L615 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1408 mov w2, 74 - add x1, x1, 1424 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L598: - ldrb w0, [x19,1] - strb w0, [x20] - b .L596 -.L602: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 1312 -.L603: - mov w20, w1 - sbfiz x1, x1, 6, 32 - ldrb w1, [x0,x1] - cmp w1, 255 - bne .L603 - ldrb w0, [x19,1] - cmp w0, 255 - bne .L600 - adrp x1, .LANCHOR1 adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 81 - add x1, x1, 1424 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L600: - adrp x0, .LANCHOR0 - sbfiz x20, x20, 6, 32 - add x0, x0, :lo12:.LANCHOR0 - ldrb w1, [x19,1] - add x0, x0, 1312 - strb w1, [x0,x20] -.L596: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 +.L615: + ldrb w0, [x20, 1] + strb w0, [x19] +.L613: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 ret +.L619: + adrp x0, .LANCHOR0 + add x2, x0, :lo12:.LANCHOR0 + add x2, x2, 1304 + mov x19, x0 +.L620: + sbfiz x0, x1, 6, 32 + mov w21, w1 + ldrb w1, [x2, x0] + cmp w1, 255 + bne .L620 + ldrb w0, [x20, 1] + cmp w0, 255 + bne .L617 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1408 + mov w2, 81 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L617: + add x0, x19, :lo12:.LANCHOR0 + sbfiz x21, x21, 6, 32 + add x0, x0, 1304 + ldrb w1, [x20, 1] + strb w1, [x0, x21] + b .L613 .size buf_add_tail, .-buf_add_tail .align 2 .type queue_read_cmd, %function queue_read_cmd: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov x19, x0 mov w0, 48 - ldr w1, [x19,40] + ldr w1, [x19, 40] bl flash_start_page_read - strb wzr, [x19,59] + strb wzr, [x19, 59] mov w0, 1 - strb w0, [x19,58] + strb w0, [x19, 58] mov w0, -1 strb w0, [x19] adrp x0, .LANCHOR0 - mov x1, x19 add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 3363 + mov x1, x19 + add x0, x0, 3354 bl buf_add_tail - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size queue_read_cmd, .-queue_read_cmd @@ -3727,35 +3543,34 @@ queue_read_cmd: zbuf_free: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 - ldrb w1, [x0,2] + ldrb w1, [x0, 2] and w1, w1, 8 - uxtb w1, w1 - strb w1, [x0,2] - cbz w1, .L606 - ldr w1, [x0,36] + strb w1, [x0, 2] + cbz w1, .L625 + ldr w1, [x0, 36] cmn w1, #1 - beq .L606 + beq .L625 mov x1, x0 add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 3361 + add x0, x0, 3352 bl buf_add_tail - b .L607 -.L606: - add x1, x19, :lo12:.LANCHOR0 - ldrb w2, [x1,3361] - strb w2, [x0] - ldrb w0, [x0,1] - strb w0, [x1,3361] -.L607: +.L626: add x19, x19, :lo12:.LANCHOR0 - ldrb w0, [x19,3362] + ldrb w0, [x19, 3353] add w0, w0, 1 - strb w0, [x19,3362] - ldr x19, [sp,16] + strb w0, [x19, 3353] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L625: + add x1, x19, :lo12:.LANCHOR0 + ldrb w2, [x1, 3352] + strb w2, [x0] + ldrb w0, [x0, 1] + strb w0, [x1, 3352] + b .L626 .size zbuf_free, .-zbuf_free .align 2 .global buf_alloc @@ -3764,98 +3579,98 @@ buf_alloc: stp x29, x30, [sp, -48]! adrp x1, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] add x20, x1, :lo12:.LANCHOR0 - str x21, [sp,32] - uxtb w21, w0 + str x21, [sp, 32] + and w21, w0, 255 mov x19, x1 - ldrb w0, [x20,3362] - cbz w0, .L615 -.L618: + ldrb w0, [x20, 3353] + cbz w0, .L635 +.L638: add x1, x19, :lo12:.LANCHOR0 - add x0, x1, 1312 - ldrb w2, [x1,3361] - add x0, x0, x2, lsl 6 - cbz w21, .L616 - b .L617 -.L615: + add x0, x1, 1304 + ldrb w3, [x1, 3352] + ubfiz x2, x3, 6, 8 + add x0, x0, x2 + cbz w21, .L636 +.L637: + add x1, x19, :lo12:.LANCHOR0 + sbfiz x3, x3, 6, 32 + add x4, x1, 1304 + add x2, x4, x3 + ldrb w5, [x4, x3] + strb w5, [x1, 3352] + ldrb w5, [x1, 3353] + strh wzr, [x2, 50] + sub w5, w5, #1 + strb w5, [x1, 3353] + mov w1, 1 + strb w1, [x2, 2] + mov w1, -1 + strb wzr, [x2, 56] + strb w1, [x4, x3] + mov w1, -1 + strb wzr, [x2, 57] + str xzr, [x2, 16] + str w1, [x2, 36] + b .L634 +.L635: adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1424 mov w2, 121 - add x1, x1, 1440 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - ldrb w1, [x20,3362] - cbnz w1, .L618 -.L620: + ldrb w0, [x20, 3353] + cbnz w0, .L638 +.L640: mov x0, 0 - b .L619 -.L616: - ldrb w1, [x1,3362] - cmp w1, 1 - beq .L620 -.L617: - add x1, x19, :lo12:.LANCHOR0 - lsl x2, x2, 6 - add x4, x1, 1312 - add x3, x4, x2 - ldrb w5, [x4,x2] - strb w5, [x1,3361] - ldrb w5, [x1,3362] - strh wzr, [x3,50] - sub w5, w5, #1 - strb w5, [x1,3362] - mov w1, 1 - strb w1, [x3,2] - mov w1, -1 - str xzr, [x3,16] - strb w1, [x4,x2] - mov w1, -1 - strb wzr, [x3,56] - str w1, [x3,36] - strb wzr, [x3,57] -.L619: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] +.L634: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L636: + ldrb w1, [x1, 3353] + cmp w1, 1 + bne .L637 + b .L640 .size buf_alloc, .-buf_alloc .align 2 .global buf_remove_buf .type buf_remove_buf, %function buf_remove_buf: - ldrb w4, [x1,1] + ldrb w4, [x1, 1] ldrb w2, [x0] cmp w4, w2 - bne .L627 + bne .L648 ldrb w1, [x1] strb w1, [x0] - b .L631 -.L627: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 1312 -.L629: - cmp w2, 255 - beq .L632 +.L652: + mov w0, 1 + ret +.L649: mov w3, w2 sbfiz x2, x2, 6, 32 - ldrb w2, [x0,x2] - cmp w2, w4 - bne .L629 + ldrb w2, [x0, x2] + cmp w4, w2 + bne .L650 sbfiz x3, x3, 6, 32 ldrb w2, [x1] - strb w2, [x0,x3] + strb w2, [x0, x3] mov w0, -1 strb w0, [x1] -.L631: - mov w0, 1 - b .L626 -.L632: + b .L652 +.L648: + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x0, x0, 1304 +.L650: + cmp w2, 255 + bne .L649 mov w0, 0 -.L626: ret .size buf_remove_buf, .-buf_remove_buf .align 2 @@ -3863,38 +3678,39 @@ buf_remove_buf: .type buf_remove_free, %function buf_remove_free: stp x29, x30, [sp, -32]! + adrp x5, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 + stp x19, x20, [sp, 16] mov x20, x0 - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,3362] - cbnz w0, .L634 + add x0, x5, :lo12:.LANCHOR0 + mov x19, x5 + ldrb w0, [x0, 3353] + cbnz w0, .L654 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1440 mov w2, 172 - add x1, x1, 1456 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L634: +.L654: add x19, x19, :lo12:.LANCHOR0 - ldrb w0, [x19,3362] - cbz w0, .L633 - add x0, x19, 3361 + ldrb w0, [x19, 3353] + cbz w0, .L653 mov x1, x20 + add x0, x19, 3352 bl buf_remove_buf cmp w0, 1 - bne .L633 - ldrb w0, [x19,3362] + bne .L653 + ldrb w0, [x19, 3353] sub w0, w0, #1 - strb w0, [x19,3362] - ldrb w0, [x20,2] + strb w0, [x19, 3353] + ldrb w0, [x20, 2] orr w0, w0, 1 - strb w0, [x20,2] -.L633: - ldp x19, x20, [sp,16] + strb w0, [x20, 2] +.L653: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size buf_remove_free, .-buf_remove_free @@ -3903,59 +3719,58 @@ buf_remove_free: .type dump_buf_info, %function dump_buf_info: sub sp, sp, #64 + adrp x0, .LC44 + add x0, x0, :lo12:.LC44 + stp x29, x30, [sp, 16] + add x29, sp, 16 + stp x19, x20, [sp, 32] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + str x21, [sp, 48] + add x20, x19, 1304 + adrp x21, .LC50 + add x19, x19, 3352 + add x21, x21, :lo12:.LC50 + ldrb w1, [x19, 2] + bl printk + ldrb w1, [x19, 3] + adrp x0, .LC45 + add x0, x0, :lo12:.LC45 + bl printk + ldrb w1, [x19, 4] + adrp x0, .LC46 + add x0, x0, :lo12:.LC46 + bl printk + ldrb w1, [x19, 5] adrp x0, .LC47 add x0, x0, :lo12:.LC47 - stp x29, x30, [sp,16] - add x29, sp, 16 - stp x19, x20, [sp,32] - adrp x19, .LANCHOR0 - str x21, [sp,48] - add x19, x19, :lo12:.LANCHOR0 - adrp x21, .LC53 - add x20, x19, 1312 - add x21, x21, :lo12:.LC53 - add x19, x19, 3360 - ldrb w1, [x19,3] bl printk - ldrb w1, [x19,4] + ldrb w1, [x19] adrp x0, .LC48 add x0, x0, :lo12:.LC48 bl printk - ldrb w1, [x19,5] + ldrb w1, [x19, 1] adrp x0, .LC49 add x0, x0, :lo12:.LC49 bl printk - ldrb w1, [x19,6] - adrp x0, .LC50 - add x0, x0, :lo12:.LC50 - bl printk - ldrb w1, [x19,1] - adrp x0, .LC51 - add x0, x0, :lo12:.LC51 - bl printk - ldrb w1, [x19,2] - adrp x0, .LC52 - add x0, x0, :lo12:.LC52 - bl printk -.L639: - ldr w0, [x20,40] +.L660: + ldr w0, [x20, 40] add x20, x20, 64 - ldrb w1, [x20,-63] - ldrb w2, [x20,-64] - ldrb w3, [x20,-62] - ldrh w4, [x20,-14] - ldrb w5, [x20,-6] + ldrb w5, [x20, -6] + ldrh w4, [x20, -14] + ldrb w3, [x20, -62] + ldrb w2, [x20, -64] + ldrb w1, [x20, -63] str w0, [sp] mov x0, x21 - ldr w6, [x20,-12] - ldr w7, [x20,-28] + ldr w7, [x20, -28] + ldr w6, [x20, -12] bl printk cmp x20, x19 - bne .L639 - sub sp, x29, #16 - ldp x19, x20, [sp,32] - ldr x21, [sp,48] - ldp x29, x30, [sp,16] + bne .L660 + ldp x19, x20, [sp, 32] + ldp x29, x30, [sp, 16] + ldr x21, [sp, 48] add sp, sp, 64 ret .size dump_buf_info, .-dump_buf_info @@ -3963,25 +3778,23 @@ dump_buf_info: .global flash_check_bad_block .type flash_check_bad_block, %function flash_check_bad_block: - adrp x2, .LANCHOR2 - uxtb w0, w0 - add x2, x2, :lo12:.LANCHOR2 - add x2, x2, 8 - ldrb w3, [x2,13] - ldrh w2, [x2,14] - mul w2, w3, w2 - ubfx x3, x1, 5, 27 - uxth w2, w2 + adrp x3, .LANCHOR2 + add x3, x3, :lo12:.LANCHOR2 + and w5, w0, 255 + lsr w4, w1, 5 + ldrb w0, [x3, 21] + ldrh w2, [x3, 22] + mul w2, w2, w0 + mov x0, 912 + and w2, w2, 65535 add w2, w2, 31 asr w2, w2, 5 lsl w2, w2, 2 - mul w2, w0, w2 - adrp x0, .LANCHOR0+1128 - sxtw x2, w2 - ldr x0, [x0,#:lo12:.LANCHOR0+1128] - add x2, x2, 912 - add x2, x0, x2 - ldr w0, [x2,x3,lsl 2] + umaddl x0, w2, w5, x0 + adrp x2, .LANCHOR0+1048 + ldr x2, [x2, #:lo12:.LANCHOR0+1048] + add x0, x0, w4, uxtw 2 + ldr w0, [x2, x0] lsr w0, w0, w1 and w0, w0, 1 ret @@ -3991,40 +3804,38 @@ flash_check_bad_block: .type flash_mask_bad_block, %function flash_mask_bad_block: stp x29, x30, [sp, -48]! - adrp x3, .LANCHOR2 + mov w2, w1 add x29, sp, 0 - add x3, x3, :lo12:.LANCHOR2 - stp x19, x20, [sp,16] - str x21, [sp,32] - uxtb w19, w0 - mov w21, w1 - mov w1, w19 - ldrb w0, [x3,21] - mov w2, w21 - ldrh w20, [x3,22] - mul w20, w0, w20 - adrp x0, .LC54 - add x0, x0, :lo12:.LC54 - uxth w20, w20 - add w20, w20, 31 + str x21, [sp, 32] + and w21, w0, 255 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + stp x19, x20, [sp, 16] + mov w20, w1 + ldrh w19, [x0, 22] + ldrb w1, [x0, 21] + adrp x0, .LC51 + add x0, x0, :lo12:.LC51 + mul w19, w19, w1 + mov w1, w21 bl printk - asr w20, w20, 5 - adrp x0, .LANCHOR0+1128 - lsl w20, w20, 2 - ubfx x3, x21, 5, 27 - lsl x3, x3, 2 - mul w19, w19, w20 - ldr x0, [x0,#:lo12:.LANCHOR0+1128] - sxtw x19, w19 - add x19, x19, 912 - add x19, x0, x19 - mov w0, 1 - lsl w1, w0, w21 - ldr w0, [x19,x3] - orr w1, w0, w1 - str w1, [x19,x3] - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + and w19, w19, 65535 + lsr w0, w20, 5 + add w1, w19, 31 + mov x19, 912 + asr w1, w1, 5 + mov w2, 1 + lsl w1, w1, 2 + umaddl x1, w1, w21, x19 + add x1, x1, w0, uxtw 2 + adrp x0, .LANCHOR0+1048 + ldr x3, [x0, #:lo12:.LANCHOR0+1048] + lsl w0, w2, w20 + ldr w2, [x3, x1] + orr w2, w2, w0 + str w2, [x3, x1] + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size flash_mask_bad_block, .-flash_mask_bad_block @@ -4034,51 +3845,53 @@ flash_mask_bad_block: str2hex: ldrb w1, [x0] cmp w1, 48 - bne .L644 - ldrb w1, [x0,1] + bne .L667 + ldrb w1, [x0, 1] add x2, x0, 2 and w1, w1, -33 - uxtb w1, w1 + and w1, w1, 255 cmp w1, 88 - csel x0, x0, x2, ne -.L644: - ldrb w1, [x0] + csel x0, x2, x0, eq +.L667: + mov x2, x0 + ldrb w1, [x2], 1 and w1, w1, -33 - uxtb w1, w1 + and w1, w1, 255 cmp w1, 88 mov w1, 0 - csinc x0, x0, x0, ne -.L646: + csel x0, x2, x0, eq +.L669: ldrb w2, [x0] - cbz w2, .L653 - sub w3, w2, #48 - uxtb w3, w3 - cmp w3, 9 - bhi .L647 - add w1, w2, w1, lsl 4 - sub w1, w1, #48 - b .L648 -.L647: - sub w3, w2, #97 - uxtb w3, w3 - cmp w3, 5 - bhi .L649 - add w1, w2, w1, lsl 4 - sub w1, w1, #87 - b .L648 -.L649: - sub w3, w2, #65 - uxtb w3, w3 - cmp w3, 5 - bhi .L653 - add w1, w2, w1, lsl 4 - sub w1, w1, #55 -.L648: - add x0, x0, 1 - b .L646 -.L653: + cbnz w2, .L674 +.L666: mov w0, w1 ret +.L674: + sub w3, w2, #48 + and w3, w3, 255 + cmp w3, 9 + bhi .L670 + add w1, w2, w1, lsl 4 + sub w1, w1, #48 +.L671: + add x0, x0, 1 + b .L669 +.L670: + sub w3, w2, #97 + and w3, w3, 255 + cmp w3, 5 + bhi .L672 + add w1, w2, w1, lsl 4 + sub w1, w1, #87 + b .L671 +.L672: + sub w3, w2, #65 + and w3, w3, 255 + cmp w3, 5 + bhi .L666 + add w1, w2, w1, lsl 4 + sub w1, w1, #55 + b .L671 .size str2hex, .-str2hex .align 2 .global zftl_proc_debug_init @@ -4086,14 +3899,14 @@ str2hex: zftl_proc_debug_init: stp x29, x30, [sp, -16]! adrp x3, .LANCHOR1 - mov x2, 0 - adrp x0, .LC55 add x3, x3, :lo12:.LANCHOR1 + mov x4, 0 add x29, sp, 0 + add x3, x3, 1456 + mov x2, 0 mov w1, 292 - add x3, x3, 1472 - mov x4, x2 - add x0, x0, :lo12:.LC55 + adrp x0, .LC52 + add x0, x0, :lo12:.LC52 bl proc_create_data ldp x29, x30, [sp], 16 ret @@ -4103,311 +3916,307 @@ zftl_proc_debug_init: .type ftl_print_info_to_buf, %function ftl_print_info_to_buf: stp x29, x30, [sp, -48]! - adrp x1, .LC1 - adrp x2, .LC2 + adrp x2, .LC1 + adrp x1, .LC2 + add x2, x2, :lo12:.LC1 add x29, sp, 0 - add x1, x1, :lo12:.LC1 - add x2, x2, :lo12:.LC2 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + add x1, x1, :lo12:.LC2 + stp x21, x22, [sp, 32] mov x20, x0 bl sprintf - adrp x7, .LANCHOR2 - adrp x22, .LANCHOR0 - add x7, x7, :lo12:.LANCHOR2 - adrp x1, .LC56 - add x7, x7, 8 - add x21, x22, :lo12:.LANCHOR0 add x19, x20, w0, sxtw + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + adrp x22, .LANCHOR0 + add x21, x22, :lo12:.LANCHOR0 + adrp x1, .LC53 + add x1, x1, :lo12:.LC53 + ldrb w7, [x0, 14] + ldrb w6, [x0, 13] + ldrb w5, [x0, 12] + ldrb w4, [x0, 11] + ldrb w3, [x0, 10] + ldrb w2, [x0, 9] + mov x0, x19 + bl sprintf + add x19, x19, w0, sxtw + ldr w2, [x21, 1032] + mov x0, x19 + adrp x1, .LC54 + add x1, x1, :lo12:.LC54 + lsr w2, w2, 11 + bl sprintf + ldr w2, [x21, 3360] + add x19, x19, w0, sxtw + mov x0, x19 + adrp x1, .LC55 + add x1, x1, :lo12:.LC55 + lsr w2, w2, 11 + bl sprintf + add x19, x19, w0, sxtw + adrp x1, .LC56 + mov x0, x19 add x1, x1, :lo12:.LC56 - ldrb w5, [x7,4] - mov x0, x19 - ldrb w6, [x7,5] - ldrb w3, [x7,2] - ldrb w4, [x7,3] - ldrb w2, [x7,1] - ldrb w7, [x7,6] - bl sprintf - add x19, x19, w0, sxtw - ldr w2, [x21,1032] - adrp x1, .LC57 - mov x0, x19 - add x1, x1, :lo12:.LC57 - lsr w2, w2, 11 - bl sprintf - add x19, x19, w0, sxtw - ldr w2, [x21,3368] - adrp x1, .LC58 - mov x0, x19 - add x1, x1, :lo12:.LC58 - lsr w2, w2, 11 - bl sprintf - add x19, x19, w0, sxtw - adrp x1, .LC59 - mov x0, x19 - add x1, x1, :lo12:.LC59 - add x19, x19, 10 bl strcpy - ldr w2, [x21,3372] - adrp x1, .LC60 + add x19, x19, 10 + ldr w2, [x21, 3364] mov x0, x19 - add x1, x1, :lo12:.LC60 + adrp x1, .LC57 + add x1, x1, :lo12:.LC57 bl sprintf add x19, x19, w0, sxtw - ldr w2, [x21,1032] - adrp x1, .LC61 + ldr w2, [x21, 1032] mov x0, x19 + adrp x1, .LC58 + add x1, x1, :lo12:.LC58 + bl sprintf + add x19, x19, w0, sxtw + ldr x0, [x21, 1128] + adrp x1, .LC59 + add x1, x1, :lo12:.LC59 + ldr w2, [x0, 524] + mov x0, x19 + bl sprintf + add x19, x19, w0, sxtw + ldr x0, [x21, 1128] + adrp x1, .LC60 + add x1, x1, :lo12:.LC60 + ldr w2, [x0, 528] + mov x0, x19 + bl sprintf + add x19, x19, w0, sxtw + ldrh w2, [x21, 3368] + mov x0, x19 + adrp x1, .LC61 add x1, x1, :lo12:.LC61 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,1120] + ldrh w2, [x21, 3370] + mov x0, x19 adrp x1, .LC62 - mov x0, x19 add x1, x1, :lo12:.LC62 - ldr w2, [x2,524] bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,1120] + ldrh w2, [x21, 3372] + mov x0, x19 adrp x1, .LC63 - mov x0, x19 add x1, x1, :lo12:.LC63 - ldr w2, [x2,528] bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3376] - adrp x1, .LC64 + ldrh w2, [x21, 3374] mov x0, x19 + adrp x1, .LC64 add x1, x1, :lo12:.LC64 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3378] - adrp x1, .LC65 + ldrh w2, [x21, 3376] mov x0, x19 + adrp x1, .LC65 add x1, x1, :lo12:.LC65 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3380] - adrp x1, .LC66 + ldrh w2, [x21, 3378] mov x0, x19 + adrp x1, .LC66 add x1, x1, :lo12:.LC66 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3382] - adrp x1, .LC67 + ldrb w4, [x21, 3380] mov x0, x19 + ldrb w3, [x21, 3381] + adrp x1, .LC67 + ldrb w2, [x21, 3353] add x1, x1, :lo12:.LC67 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3384] + ldr x0, [x21, 3384] adrp x1, .LC68 - mov x0, x19 add x1, x1, :lo12:.LC68 + ldrh w3, [x0, 146] + ldrh w2, [x0, 148] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3386] + ldr x0, [x21, 3384] adrp x1, .LC69 - mov x0, x19 add x1, x1, :lo12:.LC69 + ldp w2, w0, [x0, 16] + add w2, w0, w2, lsr 11 + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldrb w4, [x21,3389] + ldr x0, [x21, 3384] adrp x1, .LC70 - ldrb w2, [x21,3362] - mov x0, x19 - ldrb w3, [x21,3388] add x1, x1, :lo12:.LC70 - bl sprintf - add x19, x19, w0, sxtw - ldr x3, [x21,3392] - adrp x1, .LC71 + ldp w2, w0, [x0, 24] + add w2, w0, w2, lsr 11 mov x0, x19 - add x1, x1, :lo12:.LC71 - ldrh w2, [x3,148] - ldrh w3, [x3,146] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,3392] + ldr x0, [x21, 3384] + adrp x1, .LC71 + add x1, x1, :lo12:.LC71 + ldr w2, [x0, 64] + mov x0, x19 + bl sprintf + add x19, x19, w0, sxtw + ldr x0, [x21, 3384] adrp x1, .LC72 add x1, x1, :lo12:.LC72 - ldr w3, [x0,16] - ldr w2, [x0,20] + ldr w2, [x0, 68] mov x0, x19 - add w2, w2, w3, lsr 11 bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,3392] + ldr x0, [x21, 1128] adrp x1, .LC73 add x1, x1, :lo12:.LC73 - ldr w3, [x0,24] - ldr w2, [x0,28] + ldr w2, [x0, 12] + mov w0, 10 + udiv w2, w2, w0 mov x0, x19 - add w2, w2, w3, lsr 11 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,3392] + ldr x0, [x21, 3384] adrp x1, .LC74 - mov x0, x19 + ldrb w2, [x22, #:lo12:.LANCHOR0] add x1, x1, :lo12:.LC74 - ldr w2, [x2,64] - bl sprintf - add x19, x19, w0, sxtw - ldr x2, [x21,3392] - adrp x1, .LC75 + ldrh w4, [x0, 150] + ldr w3, [x0, 156] mov x0, x19 - add x1, x1, :lo12:.LC75 - ldr w2, [x2,68] bl sprintf add x19, x19, w0, sxtw - ldr x0, [x21,1120] - mov w2, 10 + ldr x0, [x21, 1128] + adrp x1, .LC75 + add x1, x1, :lo12:.LC75 + ldr w2, [x0, 556] + mov x0, x19 + bl sprintf + add x19, x19, w0, sxtw + ldr x0, [x21, 1128] adrp x1, .LC76 add x1, x1, :lo12:.LC76 - ldr w3, [x0,12] + ldr w2, [x0, 552] mov x0, x19 - udiv w2, w3, w2 bl sprintf add x19, x19, w0, sxtw - ldr x4, [x21,3392] + ldr x0, [x21, 3384] adrp x1, .LC77 - ldrb w2, [x22,#:lo12:.LANCHOR0] - mov x0, x19 add x1, x1, :lo12:.LC77 - ldr w3, [x4,156] - ldrh w4, [x4,150] + ldr w2, [x0, 52] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,1120] + ldr x0, [x21, 3384] adrp x1, .LC78 - mov x0, x19 add x1, x1, :lo12:.LC78 - ldr w2, [x2,556] + ldr w2, [x0, 60] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,1120] + ldr x0, [x21, 3384] adrp x1, .LC79 - mov x0, x19 add x1, x1, :lo12:.LC79 - ldr w2, [x2,552] + ldr w2, [x0, 76] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,3392] + ldr x0, [x21, 3384] adrp x1, .LC80 - mov x0, x19 add x1, x1, :lo12:.LC80 - ldr w2, [x2,52] + ldr w2, [x0, 8] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,3392] + ldr x0, [x21, 1128] adrp x1, .LC81 - mov x0, x19 add x1, x1, :lo12:.LC81 - ldr w2, [x2,60] + ldrb w4, [x0, 25] + ldrh w3, [x0, 22] + ldrh w2, [x0, 16] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,3392] + ldr x0, [x21, 1128] adrp x1, .LC82 - mov x0, x19 add x1, x1, :lo12:.LC82 - ldr w2, [x2,76] + ldrb w4, [x0, 57] + ldrh w3, [x0, 54] + ldrh w2, [x0, 48] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x2, [x21,3392] + ldr x0, [x21, 1128] adrp x1, .LC83 - mov x0, x19 add x1, x1, :lo12:.LC83 - ldr w2, [x2,8] + ldrb w4, [x0, 89] + ldrh w3, [x0, 86] + ldrh w2, [x0, 80] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x4, [x21,1120] + ldr x0, [x21, 3384] adrp x1, .LC84 - mov x0, x19 add x1, x1, :lo12:.LC84 - ldrh w2, [x4,16] - ldrh w3, [x4,22] - ldrb w4, [x4,25] + ldrh w6, [x0, 96] + ldrh w5, [x0, 92] + ldrh w4, [x0, 88] + ldrh w2, [x0, 74] + ldr w3, [x0, 84] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x4, [x21,1120] + ldr x0, [x21, 3384] adrp x1, .LC85 - mov x0, x19 add x1, x1, :lo12:.LC85 - ldrh w2, [x4,48] - ldrh w3, [x4,54] - ldrb w4, [x4,57] + ldrh w6, [x0, 98] + ldrh w5, [x0, 94] + ldrh w4, [x0, 90] + ldr w3, [x0, 80] + ldrh w2, [x0, 72] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldr x4, [x21,1120] + ldrh w2, [x21, 3392] + mov x0, x19 adrp x1, .LC86 - mov x0, x19 add x1, x1, :lo12:.LC86 - ldrh w2, [x4,80] - ldrh w3, [x4,86] - ldrb w4, [x4,89] bl sprintf add x19, x19, w0, sxtw - ldr x6, [x21,3392] + ldr w6, [x21, 3396] + mov x0, x19 + ldrh w5, [x21, 3400] adrp x1, .LC87 - mov x0, x19 + ldrh w4, [x21, 3402] add x1, x1, :lo12:.LC87 - ldrh w2, [x6,74] - ldr w3, [x6,84] - ldrh w4, [x6,88] - ldrh w5, [x6,92] - ldrh w6, [x6,96] + ldrh w3, [x21, 3404] + ldrh w2, [x21, 3406] bl sprintf add x19, x19, w0, sxtw - ldr x6, [x21,3392] + ldr x0, [x21, 1128] adrp x1, .LC88 - mov x0, x19 add x1, x1, :lo12:.LC88 - ldr w3, [x6,80] - ldrh w4, [x6,90] - ldrh w5, [x6,94] - ldrh w2, [x6,72] - ldrh w6, [x6,98] + ldrh w5, [x0, 590] + ldrh w4, [x0, 588] + ldrh w3, [x0, 586] + ldrh w2, [x0, 584] + mov x0, x19 bl sprintf add x19, x19, w0, sxtw - ldrh w2, [x21,3400] - adrp x1, .LC89 + ldr x0, [x21, 1128] + ldr x1, [x21, 3384] + add x5, x0, 512 mov x0, x19 + ldp w2, w3, [x5, 24] + ldp w4, w6, [x5, 32] + ldr w5, [x1, 44] + adrp x1, .LC89 add x1, x1, :lo12:.LC89 bl sprintf - add x19, x19, w0, sxtw - ldr w6, [x21,3412] - adrp x1, .LC90 - ldrh w2, [x21,3402] - mov x0, x19 - ldrh w3, [x21,3404] - add x1, x1, :lo12:.LC90 - ldrh w4, [x21,3406] - ldrh w5, [x21,3408] - bl sprintf - add x19, x19, w0, sxtw - ldr x5, [x21,1120] - adrp x1, .LC91 - mov x0, x19 - add x1, x1, :lo12:.LC91 - ldrh w2, [x5,584] - ldrh w3, [x5,586] - ldrh w4, [x5,588] - ldrh w5, [x5,590] - bl sprintf - add x19, x19, w0, sxtw - ldr x6, [x21,1120] - adrp x1, .LC92 - ldr x5, [x21,3392] - mov x0, x19 - add x1, x1, :lo12:.LC92 - 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, w0, sxtw - ldp x21, x22, [sp,32] sub w0, w0, w20 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size ftl_print_info_to_buf, .-ftl_print_info_to_buf @@ -4426,21 +4235,21 @@ zftl_proc_ftl_read: .type ftl_gc_write_buf, %function ftl_gc_write_buf: stp x29, x30, [sp, -32]! - mov x1, x0 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,2] - orr w0, w0, 2 - strb w0, [x1,2] - add x0, x19, 3416 + ldrb w1, [x0, 2] + orr w1, w1, 2 + strb w1, [x0, 2] + mov x1, x0 + add x0, x19, 3408 bl buf_add_tail - ldrb w0, [x19,3388] + ldrb w0, [x19, 3381] add w0, w0, 1 - uxtb w0, w0 - strb w0, [x19,3388] - ldr x19, [sp,16] + and w0, w0, 255 + strb w0, [x19, 3381] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_gc_write_buf, .-ftl_gc_write_buf @@ -4468,590 +4277,586 @@ ftl_scan_all_data: gc_add_sblk: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR2 - uxth w23, w1 - stp x21, x22, [sp,32] - uxth w21, w0 - adrp x22, .LANCHOR0 - ldr w0, [x24,#:lo12:.LANCHOR2] - stp x19, x20, [sp,16] - uxth w20, w2 - tbz x0, 8, .L662 - add x7, x22, :lo12:.LANCHOR0 - uxtw x5, w21 - mov w1, w21 - mov w2, w23 - mov w3, w20 - ldr x0, [x7,1096] - ldr x6, [x7,1112] - add x0, x0, x5, lsl 2 - ldrh w5, [x6,x5,lsl 1] - ldrb w4, [x0,2] - adrp x0, .LC93 - ldrh w6, [x7,3480] - add x0, x0, :lo12:.LC93 - ldrh w7, [x7,3406] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR2 + stp x19, x20, [sp, 16] + and w19, w0, 65535 + ldr w0, [x22, #:lo12:.LANCHOR2] + adrp x21, .LANCHOR0 + stp x23, x24, [sp, 48] + and w24, w1, 65535 + and w23, w2, 65535 + tbz x0, 8, .L688 + add x1, x21, :lo12:.LANCHOR0 + uxtw x0, w19 + ldr x2, [x1, 1104] + ldr x3, [x1, 1120] + ldrh w7, [x1, 3402] + add x2, x2, x0, lsl 2 + ldrh w6, [x1, 3472] + mov w1, w19 + ldrh w5, [x3, x0, lsl 1] + adrp x0, .LC90 + ldrb w4, [x2, 2] + mov w3, w23 + mov w2, w24 + add x0, x0, :lo12:.LC90 ubfx x4, x4, 5, 3 bl printk -.L662: - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0,1088] - cmp w0, w21 - bhi .L663 +.L688: + add x0, x21, :lo12:.LANCHOR0 + ldrh w0, [x0, 1096] + cmp w0, w19 + bhi .L689 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1744 mov w2, 543 - add x1, x1, 1760 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L663: - add x5, x22, :lo12:.LANCHOR0 - ldrh w0, [x5,1088] - cmp w0, w21 - bhi .L664 - ldr w0, [x24,#:lo12:.LANCHOR2] - mov w19, 0 - tbz x0, 10, .L665 - adrp x0, .LC94 - mov w1, w21 - mov w2, w23 - mov w3, w20 - add x0, x0, :lo12:.LC94 - bl printk - b .L665 -.L664: - uxtw x0, w21 - ldr x1, [x5,1112] - ldrh w4, [x1,x0,lsl 1] - ldr x1, [x5,1096] - add x0, x1, x0, lsl 2 - ldrb w19, [x0,2] - ands w19, w19, 224 - bne .L666 - cbz w4, .L665 - adrp x1, .LANCHOR1 adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 553 - add x1, x1, 1760 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L665 -.L666: - ldrh w1, [x5,3424] - add x8, x5, 3424 - mov w19, 0 - cmp w1, w21 - beq .L665 - ldr x7, [x5,1120] - ldrh w1, [x7,48] - cmp w1, w21 - beq .L665 - ldrh w1, [x7,16] - cmp w1, w21 - beq .L665 - ldrh w1, [x7,80] - cmp w1, w21 - beq .L665 - ldrh w5, [x8,56] - mov x6, 0 -.L667: - cmp w5, w6 - bls .L700 - add x6, x6, 1 - add x1, x8, x6, lsl 1 - ldrh w1, [x1,56] - cmp w1, w21 - bne .L667 - mov w19, 0 - b .L665 -.L700: - cbnz w23, .L669 - adrp x6, .LANCHOR3 - mov w19, w23 - add x6, x6, :lo12:.LANCHOR3 - ldrh w9, [x6,1288] - cmp w9, w21 - beq .L665 - mov x8, 0 -.L671: - add x1, x6, 1296 - ldrh w1, [x8,x1] - cmp w21, w1 - bne .L670 - ldr w1, [x24,#:lo12:.LANCHOR2] - mov w19, 0 - tbz x1, 8, .L665 - ldrb w2, [x0,2] - adrp x0, .LC95 - mov w3, w4 - mov w1, w21 - ubfx x2, x2, 5, 3 - mov w4, w21 - mov w5, w9 - add x0, x0, :lo12:.LC95 +.L689: + add x1, x21, :lo12:.LANCHOR0 + ldrh w0, [x1, 1096] + cmp w0, w19 + bhi .L690 + ldr w0, [x22, #:lo12:.LANCHOR2] + mov w20, 0 + tbz x0, 10, .L687 + adrp x0, .LC91 + mov w3, w23 + mov w2, w24 + mov w1, w19 + add x0, x0, :lo12:.LC91 bl printk - b .L665 -.L670: - add x8, x8, 2 - cmp x8, 16 - bne .L671 - sxtw x6, w20 - add x19, x7, x6, lsl 7 - add x19, x19, 136 - b .L673 -.L669: - add x19, x7, 392 -.L673: - ldr w1, [x24,#:lo12:.LANCHOR2] - tbz x1, 8, .L674 - add x6, x22, :lo12:.LANCHOR0 - ldrb w3, [x0,2] - adrp x0, .LC96 - mov w1, w21 - add x0, x0, :lo12:.LC96 - mov w2, w23 - ldrh w6, [x6,3406] - ubfx x3, x3, 5, 3 - bl printk -.L674: - mov x4, x19 - add x0, x19, 128 - mov w1, 65535 -.L677: - ldrh w2, [x4] - cmp w2, w1 - bne .L675 - strh w21, [x4] - add x22, x22, :lo12:.LANCHOR0 - cbz w23, .L676 - ldr x1, [x22,1120] - ldrh w0, [x1,124] - add w0, w0, 1 - strh w0, [x1,124] - b .L699 -.L676: - ldr x0, [x22,1120] - add x20, x0, w20, uxth 1 - ldrh w0, [x20,120] - add w0, w0, 1 - strh w0, [x20,120] -.L699: - mov w19, 1 - b .L665 -.L675: - add x4, x4, 2 - cmp x4, x0 - bne .L677 - b .L699 -.L665: - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L687: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L690: + ldr x2, [x1, 1120] + uxtw x0, w19 + ldrh w3, [x2, x0, lsl 1] + ldr x2, [x1, 1104] + add x0, x2, x0, lsl 2 + ldrb w2, [x0, 2] + tst w2, 224 + bne .L692 + mov w20, 0 + cbz w3, .L687 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1744 + mov w2, 553 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack + b .L687 +.L692: + ldrh w0, [x1, 3416] + cmp w0, w19 + beq .L711 + ldr x0, [x1, 1128] + ldrh w5, [x0, 48] + cmp w5, w19 + beq .L711 + ldrh w5, [x0, 16] + cmp w5, w19 + beq .L711 + ldrh w5, [x0, 80] + cmp w5, w19 + beq .L711 + ldrh w5, [x1, 3472] + add x1, x1, 3474 + mov w4, 0 +.L693: + cmp w4, w5 + bcc .L694 + cbnz w24, .L698 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 + ldrh w6, [x1, 1280] + cmp w19, w6 + beq .L711 + add x1, x1, 1288 + mov x4, 0 +.L697: + ldrh w7, [x4, x1] + cmp w19, w7 + bne .L696 + ldr w0, [x22, #:lo12:.LANCHOR2] + mov w20, 0 + tbz x0, 8, .L687 + mov w5, w6 + mov w4, w19 + ubfx x2, x2, 5, 3 + mov w1, w19 + adrp x0, .LC92 + add x0, x0, :lo12:.LC92 + bl printk + b .L687 +.L694: + ldrh w6, [x1], 2 + cmp w6, w19 + beq .L711 + add w4, w4, 1 + b .L693 +.L696: + add x4, x4, 2 + cmp x4, 16 + bne .L697 + ubfiz x20, x23, 7, 16 + add x20, x20, 136 + add x20, x0, x20 +.L699: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 8, .L700 + add x0, x21, :lo12:.LANCHOR0 + mov w4, w3 + mov w1, w19 + ubfx x3, x2, 5, 3 + mov w2, w24 + ldrh w6, [x0, 3402] + adrp x0, .LC93 + add x0, x0, :lo12:.LC93 + bl printk +.L700: + mov x0, x20 + add x1, x20, 128 + mov w2, 65535 +.L703: + ldrh w3, [x0] + cmp w3, w2 + bne .L701 + strh w19, [x0] + add x21, x21, :lo12:.LANCHOR0 + cbz w24, .L702 + ldr x1, [x21, 1128] + ldrh w0, [x1, 124] + add w0, w0, 1 + strh w0, [x1, 124] +.L725: + mov w20, 1 + b .L687 +.L698: + add x20, x0, 392 + b .L699 +.L702: + ldr x0, [x21, 1128] + add x23, x0, w23, uxth 1 + ldrh w0, [x23, 120] + add w0, w0, 1 + strh w0, [x23, 120] + b .L725 +.L701: + add x0, x0, 2 + cmp x1, x0 + bne .L703 + b .L725 +.L711: + mov w20, 0 + b .L687 .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]! - adrp x4, .LANCHOR3 - mov w3, w0 + adrp x1, .LANCHOR3 + add x1, x1, :lo12:.LANCHOR3 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x23, [sp,48] - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x21, x20, :lo12:.LANCHOR0 - add x4, x4, :lo12:.LANCHOR3 - mov w1, 24 + str x23, [sp, 48] + mov w19, 24 mov w23, 1 - ldrb w19, [x21,1257] - add x21, x21, 3424 - ldrh w0, [x4,1312] - sub w19, w1, w19 - ldr w1, [x21,2200] - sub w19, w19, w0 - lsr w2, w3, w0 + ldrb w4, [x21, 1205] + add x21, x21, 3416 + ldrh w3, [x1, 1304] + sub w19, w19, w4 + ldrb w1, [x1, 1306] + sub w19, w19, w3 + lsr w2, w0, w3 + mov w3, w0 lsl w19, w23, w19 - ldrb w0, [x4,1314] sub w19, w19, #1 - uxth w22, w2 and w19, w19, w2 + and w22, w2, 65535 mov w2, w22 - udiv w19, w19, w0 - adrp x0, .LC97 - add x0, x0, :lo12:.LC97 + adrp x0, .LC94 + add x0, x0, :lo12:.LC94 + udiv w19, w19, w1 + ldr w1, [x21, 2200] + and w19, w19, 65535 bl printk mov w1, w23 mov w2, 0 - uxth w19, w19 mov w0, w19 bl gc_add_sblk - ldr w0, [x21,2200] + ldr w0, [x21, 2200] mov w1, 0 -.L702: +.L727: cmp w1, w0 - bcs .L705 - add x2, x21, w1, sxtw 1 - ldrh w2, [x2,2204] - cmp w2, w22 - beq .L703 - add w1, w1, 1 - uxth w1, w1 - b .L702 -.L705: + bcc .L729 cmp w0, 5 - bhi .L703 + bhi .L728 add x20, x20, :lo12:.LANCHOR0 add w1, w0, 1 - str w1, [x20,5624] + str w1, [x20, 5616] add x20, x20, w0, uxtw 1 - strh w22, [x20,5628] -.L703: + strh w22, [x20, 5620] +.L728: mov w0, 0 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret +.L729: + add x2, x21, w1, sxtw 1 + ldrh w2, [x2, 2204] + cmp w2, w22 + beq .L728 + add w1, w1, 1 + and w1, w1, 65535 + b .L727 .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, .LANCHOR3+1320 + adrp x1, .LANCHOR3+1312 ubfiz x0, x0, 2, 16 - ldr x1, [x1,#:lo12:.LANCHOR3+1320] - ldr w0, [x1,x0] + ldr x1, [x1, #:lo12:.LANCHOR3+1312] + ldr w0, [x1, x0] ret .size gc_get_src_ppa_from_index, .-gc_get_src_ppa_from_index .align 2 .global gc_write_completed .type gc_write_completed, %function gc_write_completed: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - adrp x21, .LANCHOR1 - adrp x26, .LANCHOR0 - add x26, x26, :lo12:.LANCHOR0 - add x21, x21, :lo12:.LANCHOR1 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - add x22, x26, 1312 - add x21, x21, 1776 -.L708: - ldrb w20, [x26,3365] - adrp x19, .LANCHOR0 - cmp w20, 255 - beq .L737 - lsl x1, x20, 6 - add x0, x22, x1 - ldrb w1, [x22,x1] - strb w1, [x26,3365] - ldr w1, [x0,52] - ldrh w23, [x0,48] - cbz w1, .L709 - mov w2, 1 - strh w2, [x26,5618] - ldr w2, [x0,40] - adrp x0, .LC98 - add x0, x0, :lo12:.LC98 - str w2, [x26,5620] - bl printk - adrp x0, .LC0 - mov x1, x21 - mov w2, 956 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L709: - adrp x25, .LANCHOR3 - add x1, x25, :lo12:.LANCHOR3 - ldrb w0, [x1,1328] - cmp w0, 3 - bne .L710 - add x0, x19, :lo12:.LANCHOR0 - ldrb w2, [x0,1268] - cbnz w2, .L710 - ldr x0, [x0,1120] - ldrb w1, [x1,1329] - ldrb w0, [x0,89] - cmp w1, w0 - bhi .L723 - cmp w0, 3 - mov w1, 2 - csel w0, w0, w1, cc - b .L712 -.L723: - mov w0, 1 -.L712: - add w24, w0, w0, lsl 1 - b .L713 -.L710: - add x0, x25, :lo12:.LANCHOR3 - mov w24, 1 - ldrb w1, [x0,1330] - cbz w1, .L713 - ldrb w0, [x0,1331] - cmp w0, wzr - mov w0, 2 - csel w24, w24, w0, eq -.L713: - add x0, x25, :lo12:.LANCHOR3 - uxth x1, w23 - ldr x2, [x0,1336] - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, x20, lsl 6 - ldrb w1, [x2,x1] - ldrb w0, [x0,1313] - cmp w1, w0 - beq .L714 - adrp x0, .LC0 - mov x1, x21 - mov w2, 976 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L714: - add x0, x19, :lo12:.LANCHOR0 - add x20, x0, x20, lsl 6 - ldrb w1, [x20,1373] - cmp w1, 3 - beq .L715 - add x1, x25, :lo12:.LANCHOR3 - ldrb w2, [x1,1328] - cmp w2, 3 - bne .L715 - ldrb w2, [x1,1344] - cbnz w2, .L715 - ldrb w2, [x0,1268] - cbnz w2, .L715 - ldrb w0, [x0,1269] - cbnz w0, .L715 - ldrb w0, [x1,1330] - cbz w0, .L716 - ldrb w0, [x1,1331] - cbnz w0, .L715 -.L716: - add x25, x25, :lo12:.LANCHOR3 - add x19, x19, :lo12:.LANCHOR0 - mov w1, 0 - add x19, x19, 1312 - ldr x2, [x25,1336] - b .L717 -.L715: - add x19, x19, :lo12:.LANCHOR0 - mov w20, 0 - mov w27, -1 - add x28, x19, 1312 - strh w23, [x19,5532] -.L718: - cmp w24, w20, uxth - bls .L708 - add x0, x25, :lo12:.LANCHOR3 - add w2, w20, w23 - add w20, w20, 1 - ldr x0, [x0,1336] - ldrb w1, [x0,x2] - strb w27, [x0,x2] - sbfiz x1, x1, 6, 32 - add x0, x28, x1 - strb wzr, [x0,61] - bl zbuf_free - ldrb w0, [x19,3431] - sub w0, w0, #1 - strb w0, [x19,3431] - b .L718 -.L717: - cmp w24, w1, uxth - bls .L708 - add w0, w1, w23 - add w1, w1, 1 - ldrb w0, [x2,x0] - add x0, x19, x0, lsl 6 - strb wzr, [x0,61] - b .L717 -.L737: - 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 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] + add x24, x22, :lo12:.LANCHOR0 + stp x25, x26, [sp, 64] + add x25, x24, 1304 + stp x19, x20, [sp, 16] +.L733: + add x3, x22, :lo12:.LANCHOR0 + ldrb w0, [x3, 3356] + cmp w0, 255 + bne .L746 + 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 +.L746: + sxtw x21, w0 + add x1, x3, 1304 + lsl x4, x21, 6 + add x2, x1, x4 + ldrb w0, [x1, x4] + ldr w1, [x2, 52] + strb w0, [x3, 3356] + ldrh w23, [x2, 48] + cbz w1, .L734 + ldr w2, [x2, 40] + mov w0, 1 + str w2, [x3, 5612] + strh w0, [x3, 5610] + adrp x0, .LC95 + add x0, x0, :lo12:.LC95 + bl printk + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1760 + mov w2, 956 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L734: + adrp x20, .LANCHOR3 + add x1, x20, :lo12:.LANCHOR3 + ldrb w0, [x1, 1320] + cmp w0, 3 + bne .L735 + ldrb w0, [x24, 1212] + cbnz w0, .L735 + ldr x0, [x24, 1128] + ldrb w1, [x1, 1321] + ldrb w0, [x0, 89] + mov w19, w0 + cmp w1, w0 + bhi .L747 + cmp w0, 2 + mov w0, 2 + csel w19, w19, w0, ls +.L736: + add w19, w19, w19, lsl 1 +.L737: + add x0, x20, :lo12:.LANCHOR3 + and x1, x23, 65535 + ldr x2, [x0, 1328] + add x0, x25, x21, lsl 6 + ldrb w0, [x0, 1] + ldrb w1, [x2, x1] + cmp w1, w0 + beq .L738 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1760 + mov w2, 976 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L738: + add x0, x25, x21, lsl 6 + ldrb w0, [x0, 61] + cmp w0, 3 + beq .L739 + add x0, x20, :lo12:.LANCHOR3 + ldrb w1, [x0, 1320] + cmp w1, 3 + bne .L739 + ldrb w1, [x0, 1336] + cbnz w1, .L739 + ldrb w1, [x24, 1212] + cbnz w1, .L739 + ldrb w1, [x24, 1213] + cbnz w1, .L739 + ldrb w1, [x0, 1322] + cbz w1, .L740 + ldrb w0, [x0, 1323] + cbnz w0, .L739 +.L740: + add x20, x20, :lo12:.LANCHOR3 + mov w0, 0 + ldr x2, [x20, 1328] +.L741: + cmp w19, w0, uxth + bls .L733 + add w1, w23, w0 + add w0, w0, 1 + ldrb w1, [x2, x1] + add x1, x25, x1, lsl 6 + strb wzr, [x1, 61] + b .L741 +.L747: + mov w19, 1 + b .L736 +.L735: + add x0, x20, :lo12:.LANCHOR3 + ldrb w1, [x0, 1322] + cbz w1, .L748 + ldrb w0, [x0, 1323] + cmp w0, 0 + cset w19, ne + add w19, w19, 1 + b .L737 +.L748: + mov w19, 1 + b .L737 +.L739: + add x20, x20, :lo12:.LANCHOR3 + strh w23, [x24, 5524] + mov w21, 0 + mov w26, -1 +.L742: + cmp w19, w21, uxth + bls .L733 + ldr x2, [x20, 1328] + add w1, w23, w21 + add w21, w21, 1 + ldrb w0, [x2, x1] + strb w26, [x2, x1] + sbfiz x1, x0, 6, 32 + ubfiz x0, x0, 6, 8 + add x1, x25, x1 + add x0, x25, x0 + strb wzr, [x1, 61] + bl zbuf_free + ldrb w0, [x24, 3423] + sub w0, w0, #1 + strb w0, [x24, 3423] + b .L742 .size gc_write_completed, .-gc_write_completed .align 2 .global gc_get_src_blk .type gc_get_src_blk, %function gc_get_src_blk: - adrp x3, .LANCHOR0 - adrp x4, .LANCHOR3 - add x0, x3, :lo12:.LANCHOR0 - ldr x1, [x0,1120] - add x0, x4, :lo12:.LANCHOR3 - ldrh w5, [x1,124] - ldrb w0, [x0,1345] - cbz w5, .L739 + adrp x2, .LANCHOR0 + add x0, x2, :lo12:.LANCHOR0 + ldr x1, [x0, 1128] + ldrh w0, [x1, 124] + cbz w0, .L761 add x1, x1, 392 - mov w2, 1 - b .L740 -.L739: - sxtw x2, w0 - add x0, x1, x2, lsl 1 - ldrh w6, [x0,120] - mov w0, 65535 - cbz w6, .L741 - add x1, x1, x2, lsl 7 - mov w2, w5 - add x1, x1, 136 -.L740: - add x5, x1, 128 - mov w6, 65535 -.L744: + mov w3, 1 +.L762: + add x4, x1, 128 + mov w5, 65535 +.L766: ldrh w0, [x1] - cmp w0, w6 - beq .L742 - mov w5, -1 - strh w5, [x1] - cbz w2, .L743 - add x3, x3, :lo12:.LANCHOR0 - ldr x2, [x3,1120] - ldrh w1, [x2,124] + cmp w0, w5 + beq .L764 + mov w4, -1 + strh w4, [x1] + add x2, x2, :lo12:.LANCHOR0 + cbz w3, .L765 + ldr x2, [x2, 1128] + ldrh w1, [x2, 124] sub w1, w1, #1 - strh w1, [x2,124] - b .L741 -.L743: - add x4, x4, :lo12:.LANCHOR3 - add x3, x3, :lo12:.LANCHOR0 - ldrb w1, [x4,1345] - ldr x2, [x3,1120] + strh w1, [x2, 124] + ret +.L761: + adrp x0, .LANCHOR3+1337 + ldrb w0, [x0, #:lo12:.LANCHOR3+1337] + add x3, x1, w0, sxtw 1 + ldrh w3, [x3, 120] + cbz w3, .L767 + ubfiz x0, x0, 7, 8 + mov w3, 0 + add x0, x0, 136 + add x1, x1, x0 + b .L762 +.L765: + adrp x1, .LANCHOR3+1337 + ldr x2, [x2, 1128] + ldrb w1, [x1, #:lo12:.LANCHOR3+1337] add x1, x2, x1, lsl 1 - ldrh w2, [x1,120] + ldrh w2, [x1, 120] sub w2, w2, #1 - strh w2, [x1,120] - b .L741 -.L742: + strh w2, [x1, 120] + ret +.L764: add x1, x1, 2 - cmp x1, x5 - bne .L744 -.L741: + cmp x1, x4 + bne .L766 + ret +.L767: + mov w0, 65535 ret .size gc_get_src_blk, .-gc_get_src_blk .align 2 .global gc_free_temp_buf .type gc_free_temp_buf, %function gc_free_temp_buf: - stp x29, x30, [sp, -64]! - mov w0, 0 + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - str x21, [sp,32] - add x4, x19, :lo12:.LANCHOR0 - ldrb w1, [x4,3431] - cbz w1, .L749 - ldrb w1, [x4,3362] + add x0, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + ldrb w1, [x0, 3423] + cbz w1, .L776 + ldrb w1, [x0, 3353] cmp w1, 1 - bhi .L749 - adrp x20, .LANCHOR3 - ldrh w1, [x4,5532] - add x5, x20, :lo12:.LANCHOR3 - add x4, x4, 1312 - add w2, w1, 24 - ldrh w3, [x5,1346] - ldrb w0, [x5,1329] - mul w0, w3, w0 - ldr x3, [x5,1336] - cmp w0, w2 - csel w2, w0, w2, ls -.L750: - cmp w1, w2 - bcs .L763 - uxtw x21, w1 - ldrb w0, [x3,x21] - cmp w0, 255 - beq .L751 - sbfiz x0, x0, 6, 32 - add x0, x4, x0 - ldrb w5, [x0,61] - cbnz w5, .L751 - str x1, [x29,56] + bhi .L776 + adrp x21, .LANCHOR3 + add x2, x21, :lo12:.LANCHOR3 + ldrh w20, [x0, 5524] + add x0, x0, 1304 + ldrb w4, [x2, 1321] + add w3, w20, 24 + ldrh w1, [x2, 1338] + mul w1, w1, w4 + ldr x4, [x2, 1328] + cmp w1, w3 + csel w1, w1, w3, ls +.L771: + cmp w20, w1 + bcc .L774 +.L776: + mov w0, 0 + b .L769 +.L774: + uxtw x22, w20 + ldrb w2, [x4, x22] + cmp w2, 255 + beq .L772 + sbfiz x3, x2, 6, 32 + add x3, x0, x3 + ldrb w3, [x3, 61] + cbnz w3, .L772 + ubfiz x2, x2, 6, 8 + add x0, x0, x2 bl zbuf_free adrp x0, .LANCHOR2 - ldr x1, [x29,56] - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L752 - add x0, x20, :lo12:.LANCHOR3 - ldr x2, [x0,1336] - adrp x0, .LC99 - add x0, x0, :lo12:.LC99 - ldrb w2, [x2,x21] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L773 + add x0, x21, :lo12:.LANCHOR3 + mov w1, w20 + ldr x0, [x0, 1328] + ldrb w2, [x0, x22] + adrp x0, .LC96 + add x0, x0, :lo12:.LC96 bl printk -.L752: - add x20, x20, :lo12:.LANCHOR3 +.L773: + add x21, x21, :lo12:.LANCHOR3 add x19, x19, :lo12:.LANCHOR0 mov w1, -1 - ldr x0, [x20,1336] - strb w1, [x0,x21] - ldrb w0, [x19,3431] + ldr x0, [x21, 1328] + strb w1, [x0, x22] + ldrb w0, [x19, 3423] sub w0, w0, #1 - strb w0, [x19,3431] + strb w0, [x19, 3423] mov w0, 1 - b .L749 -.L751: - add w1, w1, 1 - b .L750 -.L763: - mov w0, 0 -.L749: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 64 +.L769: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret +.L772: + add w20, w20, 1 + b .L771 .size gc_free_temp_buf, .-gc_free_temp_buf .align 2 .global get_ink_scaned_blk .type get_ink_scaned_blk, %function get_ink_scaned_blk: adrp x1, .LANCHOR0 - mov w0, 65535 add x1, x1, :lo12:.LANCHOR0 - add x3, x1, 3424 - ldrh w2, [x1,5536] - cbz w2, .L765 + add x0, x1, 3416 + ldrh w2, [x1, 5528] + cbz w2, .L786 sub w2, w2, #1 - add x0, x3, w2, sxtw 1 - ldrh w0, [x0,2114] - strh w2, [x1,5536] -.L765: + strh w2, [x1, 5528] + add x0, x0, w2, sxtw 1 + ldrh w0, [x0, 2114] + ret +.L786: + mov w0, 65535 ret .size get_ink_scaned_blk, .-get_ink_scaned_blk .align 2 .global print_gc_debug_info .type print_gc_debug_info, %function print_gc_debug_info: - adrp x6, .LANCHOR0 - adrp x0, .LC100 - add x6, x6, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC100 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldrh w1, [x6,3424] - ldrh w2, [x6,3426] - ldrh w3, [x6,5530] - ldrb w4, [x6,3362] - ldrb w5, [x6,3431] - ldrh w6, [x6,3400] + ldrh w6, [x0, 3392] + ldrb w5, [x0, 3423] + ldrb w4, [x0, 3353] + ldrh w3, [x0, 5522] + ldrh w2, [x0, 3418] + ldrh w1, [x0, 3416] + adrp x0, .LC97 + add x0, x0, :lo12:.LC97 bl printk ldp x29, x30, [sp], 16 ret @@ -5061,85 +4866,89 @@ print_gc_debug_info: .type _list_pop_index_node, %function _list_pop_index_node: stp x29, x30, [sp, -32]! - uxth w1, w1 add x29, sp, 0 - stp x19, x20, [sp,16] - mov w19, 65535 + stp x19, x20, [sp, 16] ldr x20, [x0] - cbz x20, .L770 + cbz x20, .L795 adrp x3, .LANCHOR0+1040 + and w1, w1, 65535 mov w4, 65535 mov w5, 6 - ldr x19, [x3,#:lo12:.LANCHOR0+1040] -.L771: - cbnz w1, .L772 -.L774: + ldr x19, [x3, #:lo12:.LANCHOR0+1040] +.L791: + cbnz w1, .L792 +.L794: sub x19, x20, x19 mov x1, -6148914691236517206 asr x19, x19, 1 - madd x19, x1, x19, x19 - uxth w19, w19 + movk x1, 0xaaab, lsl 0 + mul x19, x19, x1 + and w19, w19, 65535 mov w1, w19 bl _list_remove_node mov w0, -1 strh w0, [x20] - strh w0, [x20,2] - b .L770 -.L772: - ldrh w3, [x20] - cmp w3, w4 - beq .L774 - umull x20, w3, w5 - sub w1, w1, #1 - add x20, x19, x20 - uxth w1, w1 - b .L771 -.L770: + strh w0, [x20, 2] mov w0, w19 - ldp x19, x20, [sp,16] +.L789: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L792: + ldrh w3, [x20] + cmp w3, w4 + beq .L794 + sub w1, w1, #1 + umaddl x20, w3, w5, x19 + and w1, w1, 65535 + b .L791 +.L795: + mov w0, 65535 + b .L789 .size _list_pop_index_node, .-_list_pop_index_node .align 2 .global _list_get_gc_head_node .type _list_get_gc_head_node, %function _list_get_gc_head_node: - ldr x2, [x0] - uxth w1, w1 - mov w0, 65535 - cbz x2, .L782 - adrp x0, .LANCHOR0+1040 - mov w4, 65535 - mov w5, 6 - ldr x3, [x0,#:lo12:.LANCHOR0+1040] -.L778: - cbz w1, .L779 - ldrh w0, [x2] - cmp w0, w4 - beq .L782 - umull x0, w0, w5 + ldr x0, [x0] + and w1, w1, 65535 + cbz x0, .L802 + adrp x2, .LANCHOR0+1040 + mov w3, 65535 + mov w4, 6 + ldr x2, [x2, #:lo12:.LANCHOR0+1040] +.L799: + cbz w1, .L800 + ldrh w0, [x0] + cmp w0, w3 + bne .L801 + ret +.L801: sub w1, w1, #1 - add x2, x3, x0 - uxth w1, w1 - b .L778 -.L779: - sub x2, x2, x3 - mov x0, -6148914691236517206 - asr x2, x2, 1 - madd x2, x0, x2, x2 - uxth w0, w2 -.L782: + umaddl x0, w0, w4, x2 + and w1, w1, 65535 + b .L799 +.L802: + mov w0, 65535 + ret +.L800: + sub x0, x0, x2 + mov x1, -6148914691236517206 + asr x0, x0, 1 + movk x1, 0xaaab, lsl 0 + mul x0, x0, x1 + and w0, w0, 65535 ret .size _list_get_gc_head_node, .-_list_get_gc_head_node .align 2 .type zftl_get_gc_node.part.10, %function zftl_get_gc_node.part.10: stp x29, x30, [sp, -16]! - uxth w1, w0 + mov w1, w0 adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 add x29, sp, 0 - add x0, x0, 1352 + add x0, x0, 1344 bl _list_get_gc_head_node ldp x29, x30, [sp], 16 ret @@ -5150,744 +4959,740 @@ zftl_get_gc_node.part.10: gc_search_src_blk: stp x29, x30, [sp, -160]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x21, x22, [sp, 32] + and w22, w0, 255 + and w0, w1, 255 + stp x19, x20, [sp, 16] + str w0, [x29, 144] adrp x19, .LANCHOR0 - stp x23, x24, [sp,48] - uxtb w23, w0 - uxtb w0, w1 - add x1, x19, :lo12:.LANCHOR0 - str w0, [x29,144] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - uxtb w21, w2 - ldr x3, [x1,1120] - add x0, x3, w23, sxtw 1 - ldrh w0, [x0,120] - cbnz w0, .L905 - ldrh w2, [x1,3480] - cmp w2, 1 - bhi .L787 - adrp x1, .LANCHOR3 - add x1, x1, :lo12:.LANCHOR3 - strh w0, [x1,1360] - strh w0, [x1,1362] - strh w0, [x1,1364] -.L787: - cbnz w23, .L909 - adrp x20, .LANCHOR3 - adrp x26, .LC101 - add x20, x20, :lo12:.LANCHOR3 - mov w24, w23 - mov w25, w23 - add w22, w21, 1 - add x27, x20, 1368 - add x26, x26, :lo12:.LC101 -.L788: - cmp w25, w22 - bge .L794 - ldrh w28, [x20,1362] - mov x0, x27 - mov w1, w28 - bl _list_get_gc_head_node - uxth w1, w0 - add w2, w28, 1 - mov w0, 65535 - cmp w1, w0 - mov w4, w1 - uxth w2, w2 - strh w2, [x20,1362] - beq .L790 - adrp x0, .LANCHOR2 - uxtw x28, w1 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L791 add x0, x19, :lo12:.LANCHOR0 - str x4, [x29,136] - ldr x3, [x0,1112] - mov x0, x26 - ldrh w3, [x3,x28,lsl 1] - bl printk - ldr x4, [x29,136] -.L791: - add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x0,1112] - ldrh w0, [x0,3406] - ldrh w1, [x1,x28,lsl 1] - cmp w1, w0 - bcs .L792 - mov w1, 0 - mov w0, w4 - mov w2, w1 - bl gc_add_sblk - cbz w0, .L793 - add w5, w24, 1 - uxth w24, w5 - cmp w24, w21 - bcc .L793 - b .L794 -.L792: + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + and w20, w2, 255 + stp x27, x28, [sp, 80] + ldr x2, [x0, 1128] + add x1, x2, w22, sxtw 1 + ldrh w21, [x1, 120] + cbz w21, .L807 + mov w0, w21 +.L806: + 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 + ret +.L807: + ldrh w1, [x0, 3472] + cmp w1, 1 + bhi .L809 adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 - strh wzr, [x0,1362] - b .L794 -.L790: - strh wzr, [x20,1362] - b .L794 -.L793: - add w25, w25, 1 - uxth w25, w25 - b .L788 -.L794: - ldr x0, [x29,144] - tbz x0, 1, .L796 - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,3386] - cmp w0, 32 - bls .L796 - adrp x28, .LANCHOR3 - mov w25, 0 - add x28, x28, :lo12:.LANCHOR3 - mov w26, 65535 - add x0, x28, 1376 - uxth w27, w21 - str x0, [x29,136] -.L797: - cmp w25, w22 - adrp x20, .LANCHOR3 - bge .L801 - ldrh w2, [x28,1364] - ldr x0, [x29,136] - mov w1, w2 - str x2, [x29,128] + strh wzr, [x0, 1352] + strh wzr, [x0, 1354] + strh wzr, [x0, 1356] +.L809: + cbnz w22, .L810 + adrp x25, .LANCHOR3 + adrp x27, .LC98 + add x26, x25, :lo12:.LANCHOR3 + add x27, x27, :lo12:.LC98 + add x0, x26, 1360 + mov w23, 0 + mov w24, 0 + str x0, [x29, 136] +.L811: + add w28, w20, 1 + cmp w24, w28 + bge .L816 + ldrh w6, [x26, 1354] + ldr x0, [x29, 136] + mov w1, w6 bl _list_get_gc_head_node - uxth w1, w0 - ldr x2, [x29,128] - cmp w1, w26 - add w2, w2, 1 - strh w2, [x28,1364] - beq .L798 - add x2, x19, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldr x4, [x2,1112] - ldrh w4, [x4,x1] - ldrh w1, [x2,3408] - cmp w4, w1 - bcs .L798 + add w2, w6, 1 + and w2, w2, 65535 + strh w2, [x26, 1354] + and w1, w0, 65535 + mov w0, 65535 + mov w4, w1 + cmp w1, w0 + beq .L812 + adrp x0, .LANCHOR2 + uxtw x6, w1 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L813 + add x0, x19, :lo12:.LANCHOR0 + str x6, [x29, 128] + str w1, [x29, 120] + ldr x0, [x0, 1120] + ldrh w3, [x0, x6, lsl 1] + mov x0, x27 + bl printk + ldr w4, [x29, 120] + ldr x6, [x29, 128] +.L813: + add x0, x19, :lo12:.LANCHOR0 + ldr x1, [x0, 1120] + ldrh w0, [x0, 3402] + ldrh w1, [x1, x6, lsl 1] + cmp w1, w0 + bcs .L814 + mov w2, 0 mov w1, 0 - mov w2, w1 + mov w0, w4 bl gc_add_sblk - cbz w0, .L800 - add w5, w24, 1 - uxth w24, w5 - cmp w24, w27 - bcc .L800 - b .L801 -.L798: - strh wzr, [x28,1364] - b .L801 -.L800: - add w3, w25, 1 - uxth w25, w3 - b .L797 -.L801: - cmp w24, w21 - bcs .L803 - add x20, x20, :lo12:.LANCHOR3 + cbz w0, .L815 + add w5, w23, 1 + and w23, w5, 65535 + cmp w23, w20 + bcc .L815 +.L816: + ldr x0, [x29, 144] + tbz x0, 1, .L818 + add x6, x19, :lo12:.LANCHOR0 + ldrh w0, [x6, 3378] + cmp w0, 32 + bls .L818 + adrp x27, .LANCHOR3 + add x25, x27, :lo12:.LANCHOR3 + add x0, x25, 1368 + mov x26, x6 + str x0, [x29, 136] + mov w24, 0 + and w0, w20, 65535 + str w0, [x29, 128] +.L819: + cmp w28, w24 + ble .L823 + ldrh w7, [x25, 1356] + ldr x0, [x29, 136] + mov w1, w7 + bl _list_get_gc_head_node + add w7, w7, 1 + strh w7, [x25, 1356] + and w1, w0, 65535 + mov w2, 65535 + cmp w1, w2 + beq .L820 + ldr x2, [x26, 1120] + ubfiz x1, x1, 1, 16 + ldrh w2, [x2, x1] + ldrh w1, [x26, 3400] + cmp w2, w1 + bcs .L820 + mov w2, 0 + mov w1, 0 + bl gc_add_sblk + cbz w0, .L822 + add w5, w23, 1 + ldr w0, [x29, 128] + and w23, w5, 65535 + cmp w23, w0 + bcc .L822 +.L823: + cmp w23, w20 + bcs .L825 + add x27, x27, :lo12:.LANCHOR3 add x2, x19, :lo12:.LANCHOR0 - ldrh w0, [x20,1346] - ldrb w4, [x20,1329] - ldrh w1, [x20,1384] - ldrh w3, [x2,3408] + ldrh w0, [x27, 1338] + ldrb w4, [x27, 1321] + ldrh w1, [x27, 1376] + ldrh w3, [x2, 3400] mul w0, w0, w4 sub w0, w0, w1, lsr 2 cmp w3, w0 - bge .L796 + bge .L818 add w1, w3, w1, lsr 3 - strh w1, [x2,3408] - b .L796 -.L803: - add x1, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR3 - ldrh w2, [x1,3408] - ldrh w0, [x20,1384] - cmp w2, w0 - bls .L796 - sub w0, w2, w0, lsr 3 - strh w0, [x1,3408] -.L796: - ldr x0, [x29,144] - tbz x0, 0, .L804 - uxth w27, w21 - cmp w24, w27 - bcs .L804 - mov w22, 0 - adrp x25, .LANCHOR3 - mov w26, 65535 -.L809: - add x28, x25, :lo12:.LANCHOR3 - ldrh w20, [x28,1360] - mov w0, w20 - add w20, w20, 1 - bl zftl_get_gc_node.part.10 - strh w20, [x28,1360] - cmp w26, w0, uxth - adrp x20, .LANCHOR3 - beq .L805 - mov w1, 0 - mov w2, w1 - bl gc_add_sblk - cbz w0, .L806 - add w5, w24, 1 - uxth w24, w5 - cmp w24, w27 - bcc .L806 - b .L807 -.L805: - strh wzr, [x28,1360] - b .L808 -.L806: - add w22, w22, 1 - uxth w22, w22 - cmp w22, w27 - bcc .L809 -.L808: - cmp w24, w27 - bcs .L807 - add x19, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR3 - ldrh w1, [x19,3406] - ldrh w0, [x20,1384] - cmp w1, w0 - bcs .L804 - add w0, w1, w0, lsr 3 - b .L908 -.L807: - add x20, x20, :lo12:.LANCHOR3 - add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x20,1384] - ldrh w1, [x19,3406] - cmp w1, w0, lsr 1 - bls .L804 - sub w0, w1, w0, lsr 3 -.L908: - strh w0, [x19,3406] - b .L804 -.L909: - adrp x20, .LANCHOR3 - cmp w21, 1 - add x1, x20, :lo12:.LANCHOR3 - ldrb w0, [x1,1329] - ldrh w22, [x1,1346] - mul w22, w0, w22 - uxth w22, w22 - bne .L810 - cbz w2, .L810 - ldrh w1, [x3,80] - mov w0, 65535 - mov w21, 8 - cmp w1, w0 - beq .L810 - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,5530] - sub w22, w22, w0 - uxth w22, w22 -.L810: - ldr w0, [x29,144] - add x1, x19, :lo12:.LANCHOR0 - add x3, x20, :lo12:.LANCHOR3 - and w0, w0, 1 - str w0, [x29,136] - ldr x0, [x29,144] - strh wzr, [x1,5616] - strh wzr, [x3,1386] - tbz x0, 0, .L844 - ldrh w3, [x3,1388] - ldrh w0, [x1,3382] - cmp w0, w3, lsr 2 - bhi .L812 - ldrh w1, [x1,3384] - cmp w1, w0 - bcs .L845 -.L812: - cmp w2, 1 - bls .L814 -.L816: - mov w24, 0 - b .L815 -.L814: - add x26, x20, :lo12:.LANCHOR3 - lsr w0, w0, 2 - strh w0, [x26,1360] - mov w0, 0 - bl zftl_get_gc_node.part.10 - uxth w1, w0 - mov w2, 65535 - cmp w1, w2 - beq .L816 - add x2, x19, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] - ldrh w2, [x26,1384] - ldrh w1, [x3,x1] - cmp w1, w2, lsr 2 - bcs .L816 - mov w1, 1 - mov w2, w23 - strh w1, [x26,1360] - mov w1, 0 - bl gc_add_sblk - cmp w0, wzr - cset w24, ne -.L815: - mov w28, 64 - mov w25, 0 - mov w26, 65535 - uxth w27, w21 -.L819: - add x2, x20, :lo12:.LANCHOR3 - str x2, [x29,112] - ldrh w1, [x2,1360] - str x1, [x29,120] - mov w0, w1 - bl zftl_get_gc_node.part.10 - uxth w4, w0 - cmp w4, w26 - str x4, [x29,128] - ldr x2, [x29,112] - beq .L817 - ldr x1, [x29,120] - add w1, w1, 1 - strh w1, [x2,1360] - mov w1, 0 - mov w2, w23 - bl gc_add_sblk - ldr x4, [x29,128] - cbz w0, .L818 - add x0, x19, :lo12:.LANCHOR0 - ubfiz x4, x4, 1, 16 - add w5, w24, 1 - ldr x1, [x0,1112] - uxth w24, w5 - ldrh w1, [x1,x4] - add w3, w25, w1 - uxth w25, w3 - cmp w25, w22 - bhi .L813 - cmp w24, w27 - bcs .L813 - ldrh w1, [x0,3384] - ldrh w0, [x0,3382] - cmp w1, w0, lsl 1 - ble .L818 - b .L813 -.L817: - strh wzr, [x2,1360] - b .L813 + strh w1, [x2, 3400] .L818: - sub w28, w28, #1 - uxth w28, w28 - cbnz w28, .L819 - b .L813 -.L844: - ldr w25, [x29,136] - mov x24, x25 -.L811: - ldr x0, [x29,144] - tbz x0, 1, .L823 - cmp w25, w22 - bcs .L823 - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,3386] - cmp w0, 32 - bls .L823 - add x28, x20, :lo12:.LANCHOR3 - mov w27, 64 - add x0, x28, 1376 - mov w26, 0 - str x0, [x29,128] - uxth w0, w21 - str w0, [x29,120] -.L829: - ldrh w2, [x28,1364] - ldr x0, [x29,128] - mov w1, w2 - str x2, [x29,112] - bl _list_get_gc_head_node - uxth w8, w0 - mov w1, 65535 - cmp w8, w1 - beq .L824 - ldr x2, [x29,112] - cmp w21, 1 - add w2, w2, 1 - strh w2, [x28,1364] - bne .L825 - ldrh w9, [x28,1346] - add x1, x19, :lo12:.LANCHOR0 - ldrb w2, [x28,1329] - mul w2, w2, w9 - ldrh w9, [x28,1384] - sub w2, w2, w9, lsr 3 - strh w2, [x1,3402] -.L825: - add x9, x19, :lo12:.LANCHOR0 - ubfiz x8, x8, 1, 16 - str x9, [x29,112] - str x8, [x29,104] - ldr x1, [x9,1112] - ldrh w2, [x1,x8] - ldrh w1, [x9,3402] - cmp w2, w1 + ldr x0, [x29, 144] + tbz x0, 0, .L826 + and w25, w20, 65535 + cmp w23, w25 bcs .L826 + adrp x24, .LANCHOR3 + add x27, x24, :lo12:.LANCHOR3 + mov w26, 65535 +.L831: + ldrh w6, [x27, 1352] + mov w0, w6 + bl zftl_get_gc_node.part.10 + add w6, w6, 1 + strh w6, [x27, 1352] + cmp w26, w0, uxth + beq .L827 + mov w2, 0 mov w1, 0 - mov w2, w23 bl gc_add_sblk - ldr x9, [x29,112] - ldr x8, [x29,104] - cbz w0, .L827 - ldr x0, [x9,1112] - add w6, w26, 1 - add w5, w24, 1 - uxth w26, w6 - ldrh w0, [x0,x8] - uxth w24, w5 - add w3, w25, w0 - uxth w25, w3 - cmp w25, w22 + cbz w0, .L828 + add w5, w23, 1 + and w23, w5, 65535 + cmp w25, w23 bhi .L828 - ldr w0, [x29,120] - cmp w24, w0 - bcc .L827 - b .L828 -.L826: - add x0, x20, :lo12:.LANCHOR3 - strh wzr, [x0,1364] - b .L828 -.L824: - strh wzr, [x28,1364] - b .L828 -.L827: - sub w7, w27, #1 - uxth w27, w7 - cbnz w27, .L829 -.L828: - cmp w24, w21 - bcc .L830 - cbnz w26, .L831 +.L829: + add x24, x24, :lo12:.LANCHOR3 + add x19, x19, :lo12:.LANCHOR0 + ldrh w0, [x24, 1376] + ldrh w1, [x19, 3402] + cmp w1, w0, lsr 1 + bls .L826 + sub w0, w1, w0, lsr 3 + b .L917 +.L814: + add x25, x25, :lo12:.LANCHOR3 + strh wzr, [x25, 1354] + b .L816 +.L812: + strh wzr, [x26, 1354] + b .L816 +.L815: + add w24, w24, 1 + and w24, w24, 65535 + b .L811 +.L820: + strh wzr, [x25, 1356] + b .L823 +.L822: + add w3, w24, 1 + and w24, w3, 65535 + b .L819 +.L825: add x1, x19, :lo12:.LANCHOR0 - add x0, x20, :lo12:.LANCHOR3 - ldrh w1, [x1,3386] - ldrh w0, [x0,1390] - cmp w1, w0 - bls .L831 + add x27, x27, :lo12:.LANCHOR3 + ldrh w2, [x1, 3400] + ldrh w0, [x27, 1376] + cmp w2, w0 + bls .L818 + sub w0, w2, w0, lsr 3 + strh w0, [x1, 3400] + b .L818 +.L827: + strh wzr, [x27, 1352] .L830: - add x4, x20, :lo12:.LANCHOR3 + cmp w23, w25 + bcs .L829 + add x19, x19, :lo12:.LANCHOR0 + add x24, x24, :lo12:.LANCHOR3 + ldrh w1, [x19, 3402] + ldrh w0, [x24, 1376] + cmp w1, w0 + bcs .L826 + add w0, w1, w0, lsr 3 +.L917: + strh w0, [x19, 3402] +.L826: + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L862 + ldr w2, [x29, 144] + adrp x0, .LC99 + mov w4, w20 + mov w3, w23 + mov w1, w22 + add x0, x0, :lo12:.LC99 + bl printk +.L862: + mov w0, w23 + b .L806 +.L828: + add w21, w21, 1 + and w21, w21, 65535 + cmp w25, w21 + bhi .L831 + b .L830 +.L810: + adrp x24, .LANCHOR3 + add x0, x24, :lo12:.LANCHOR3 + cmp w20, 1 + ldrb w25, [x0, 1321] + ldrh w0, [x0, 1338] + mul w25, w25, w0 + and w25, w25, 65535 + bne .L832 + cbz w1, .L832 + ldrh w2, [x2, 80] + mov w0, 65535 + cmp w2, w0 + beq .L865 + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 5522] + sub w25, w25, w0 + and w25, w25, 65535 +.L865: + mov w20, 8 +.L832: + ldr w0, [x29, 144] + add x2, x19, :lo12:.LANCHOR0 + add x3, x24, :lo12:.LANCHOR3 + and w0, w0, 1 + str w0, [x29, 136] + ldr x0, [x29, 144] + strh wzr, [x2, 5608] + strh wzr, [x3, 1378] + tbz x0, 0, .L866 + ldrh w0, [x2, 3374] + ldrh w3, [x3, 1380] + cmp w0, w3, lsr 2 + bhi .L834 + ldrh w2, [x2, 3376] + cmp w2, w0 + bcs .L867 +.L834: + cmp w1, 1 + bls .L836 +.L838: + mov w23, 0 +.L837: + add x27, x24, :lo12:.LANCHOR3 + add x8, x19, :lo12:.LANCHOR0 + and w0, w20, 65535 + mov w28, 0 + mov w26, 64 + str w0, [x29, 128] +.L841: + ldrh w6, [x27, 1352] + str x8, [x29, 112] + mov w0, w6 + bl zftl_get_gc_node.part.10 + and w4, w0, 65535 + str w4, [x29, 120] + mov w1, 65535 + cmp w4, w1 + beq .L839 + add w6, w6, 1 + mov w2, w22 + strh w6, [x27, 1352] + mov w1, 0 + bl gc_add_sblk + ldr x8, [x29, 112] + cbz w0, .L840 + ldr w4, [x29, 120] + add w5, w23, 1 + ldr x0, [x8, 1120] + and w23, w5, 65535 + ubfiz x4, x4, 1, 16 + ldrh w0, [x0, x4] + add w3, w28, w0 + ldr w0, [x29, 128] + and w28, w3, 65535 + cmp w23, w0 + bcs .L835 + cmp w25, w28 + bcc .L835 + ldrh w0, [x8, 3376] + ldrh w1, [x8, 3374] + cmp w0, w1, lsl 1 + ble .L840 +.L835: + add x0, x19, :lo12:.LANCHOR0 + add x2, x24, :lo12:.LANCHOR3 + ldrh w1, [x0, 3376] + ldrh w2, [x2, 1380] + cmp w1, w2, lsr 2 + bhi .L863 + ldrh w0, [x0, 3374] + add w0, w0, 8 + cmp w1, w0 + ble .L833 +.L863: + cmp w25, w28 + bls .L833 + add x27, x24, :lo12:.LANCHOR3 + mov w26, 64 + add x0, x27, 1360 + str x0, [x29, 128] + add x0, x19, :lo12:.LANCHOR0 + str x0, [x29, 120] + and w0, w20, 65535 + str w0, [x29, 112] +.L844: + ldrh w6, [x27, 1354] + ldr x0, [x29, 128] + mov w1, w6 + bl _list_get_gc_head_node + and w7, w0, 65535 + str w7, [x29, 104] + mov w1, 65535 + cmp w7, w1 + beq .L842 + add w6, w6, 1 + mov w2, w22 + strh w6, [x27, 1354] + mov w1, 0 + bl gc_add_sblk + cbz w0, .L843 + ldr x0, [x29, 120] + add w5, w23, 1 + ldr w7, [x29, 104] + and w23, w5, 65535 + ldr x0, [x0, 1120] + ubfiz x7, x7, 1, 16 + ldrh w0, [x0, x7] + add w3, w28, w0 + ldr w0, [x29, 112] + and w28, w3, 65535 + cmp w23, w0 + bcs .L833 + cmp w25, w28 + bcs .L843 +.L833: + ldr x0, [x29, 144] + tbz x0, 1, .L845 + add x7, x19, :lo12:.LANCHOR0 + ldrh w0, [x7, 3378] + cmp w0, 32 + bls .L845 + cmp w28, w25 + bcs .L845 + add x27, x24, :lo12:.LANCHOR3 + mov w26, 64 + add x0, x27, 1368 + str x0, [x29, 128] + and w0, w20, 65535 + str w0, [x29, 120] +.L851: + ldrh w8, [x27, 1356] + ldr x0, [x29, 128] + mov w1, w8 + str x7, [x29, 112] + bl _list_get_gc_head_node + and w4, w0, 65535 + mov w1, 65535 + cmp w4, w1 + beq .L846 + add w8, w8, 1 + strh w8, [x27, 1356] + cmp w20, 1 + ldr x7, [x29, 112] + bne .L847 + ldrb w1, [x27, 1321] + ldrh w2, [x27, 1338] + mul w2, w1, w2 + ldrh w1, [x27, 1376] + sub w1, w2, w1, lsr 3 + strh w1, [x7, 3406] +.L847: + ldr x1, [x7, 1120] + ubfiz x4, x4, 1, 16 + stp x4, x7, [x29, 104] + ldrh w2, [x1, x4] + ldrh w1, [x7, 3406] + cmp w2, w1 + bcs .L848 + mov w2, w22 + mov w1, 0 + bl gc_add_sblk + ldr x7, [x29, 112] + cbz w0, .L849 + ldr x0, [x7, 1120] + add w5, w23, 1 + ldr x4, [x29, 104] + add w21, w21, 1 + and w23, w5, 65535 + and w21, w21, 65535 + ldrh w0, [x0, x4] + add w3, w28, w0 + ldr w0, [x29, 120] + and w28, w3, 65535 + cmp w23, w0 + bcs .L850 + cmp w25, w28 + bcs .L849 +.L850: + cmp w23, w20 + bcc .L852 + cbnz w21, .L853 + add x1, x19, :lo12:.LANCHOR0 + add x0, x24, :lo12:.LANCHOR3 + ldrh w1, [x1, 3378] + ldrh w0, [x0, 1382] + cmp w1, w0 + bls .L853 +.L852: + add x4, x24, :lo12:.LANCHOR3 add x6, x19, :lo12:.LANCHOR0 - ldrh w2, [x4,1384] - ldrh w0, [x4,1346] - ldrb w4, [x4,1329] + ldrh w2, [x4, 1376] + ldrh w0, [x4, 1338] + ldrb w4, [x4, 1321] + ldrh w1, [x6, 3406] lsr w2, w2, 3 - ldrh w1, [x6,3402] mul w0, w0, w4 sub w0, w0, w2 cmp w1, w0 - bge .L823 - add w1, w2, w1 - strh w1, [x6,3402] - b .L823 -.L831: - add x20, x20, :lo12:.LANCHOR3 - add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x20,1384] - ldrb w1, [x20,1329] - ldrh w2, [x19,3402] - mul w1, w0, w1 - cmp w2, w1 - ble .L804 - sub w0, w2, w0, lsr 3 - strh w0, [x19,3402] - b .L804 -.L823: - ldr w0, [x29,136] - cbz w0, .L804 - uxth w26, w21 - cmp w24, w26 - bcs .L804 - cmp w25, w22 - bcs .L804 - add x4, x20, :lo12:.LANCHOR3 - mov w27, 64 - add x0, x4, 1368 - str x0, [x29,136] -.L837: - ldrh w28, [x4,1362] - ldr x0, [x29,136] - mov w1, w28 - str x4, [x29,128] + bge .L845 + add w1, w1, w2 + strh w1, [x6, 3406] +.L845: + ldr w0, [x29, 136] + cbz w0, .L826 + and w27, w20, 65535 + cmp w23, w27 + bcs .L826 + cmp w28, w25 + bcs .L826 + add x4, x24, :lo12:.LANCHOR3 + add x7, x19, :lo12:.LANCHOR0 + add x0, x4, 1360 + mov w26, 64 + str x0, [x29, 136] +.L861: + ldrh w6, [x4, 1354] + ldr x0, [x29, 136] + mov w1, w6 + stp x7, x4, [x29, 120] bl _list_get_gc_head_node - uxth w1, w0 - mov w2, 65535 - ldr x4, [x29,128] - cmp w1, w2 - beq .L833 - add w28, w28, 1 - strh w28, [x4,1362] - ubfiz x28, x1, 1, 16 - add x1, x19, :lo12:.LANCHOR0 - ldr x2, [x1,1112] - ldrh w7, [x2,x28] - ldrh w2, [x1,3404] - cmp w7, w2 - bcs .L834 - ldrh w2, [x4,1388] - ldrh w1, [x1,3384] + and w21, w0, 65535 + mov w1, 65535 + ldr x4, [x29, 128] + cmp w21, w1 + beq .L855 + ldr x7, [x29, 120] + ubfiz x21, x21, 1, 16 + add w6, w6, 1 + strh w6, [x4, 1354] + ldr x1, [x7, 1120] + ldrh w2, [x1, x21] + ldrh w1, [x7, 3404] + cmp w2, w1 + bcs .L856 + ldrh w2, [x4, 1380] + ldrh w1, [x7, 3376] cmp w1, w2, lsr 1 - bls .L835 -.L834: + bls .L857 +.L856: + stp x7, x4, [x29, 120] + mov w2, w22 mov w1, 0 - mov w2, w23 - str x4, [x29,128] bl gc_add_sblk - ldr x4, [x29,128] - cbz w0, .L836 - add x0, x19, :lo12:.LANCHOR0 - add w5, w24, 1 - uxth w24, w5 - ldr x0, [x0,1112] - ldrh w0, [x0,x28] - add w3, w25, w0 - uxth w25, w3 - cmp w25, w22 - bhi .L835 - cmp w24, w26 - bcc .L836 - b .L835 -.L833: - cmp w28, 64 - bls .L835 - strh wzr, [x4,1362] - b .L835 -.L836: - sub w27, w27, #1 - uxth w27, w27 - cbnz w27, .L837 -.L835: - cmp w24, w26 + ldp x7, x4, [x29, 120] + cbz w0, .L858 + ldr x0, [x7, 1120] + add w5, w23, 1 + and w23, w5, 65535 + cmp w27, w23 + ldrh w0, [x0, x21] + add w3, w28, w0 + and w28, w3, 65535 + bls .L859 + cmp w25, w28 + bcs .L858 +.L860: + add x24, x24, :lo12:.LANCHOR3 add x19, x19, :lo12:.LANCHOR0 - bcs .L838 - add x20, x20, :lo12:.LANCHOR3 - ldrh w1, [x19,3404] - ldrh w0, [x20,1384] + ldrh w0, [x24, 1376] + ldrh w1, [x19, 3404] cmp w1, w0, lsr 1 - bls .L804 + bls .L826 sub w0, w1, w0, lsr 3 - strh w0, [x19,3404] - b .L804 -.L838: - add x20, x20, :lo12:.LANCHOR3 - ldrh w2, [x19,3404] - ldrh w1, [x20,1384] - ldrb w0, [x20,1329] - mul w0, w1, w0 + strh w0, [x19, 3404] + b .L826 +.L836: + add x5, x24, :lo12:.LANCHOR3 + lsr w0, w0, 2 + strh w0, [x5, 1352] + mov w0, 0 + bl zftl_get_gc_node.part.10 + and w1, w0, 65535 + mov w2, 65535 + cmp w1, w2 + beq .L838 + add x2, x19, :lo12:.LANCHOR0 + ubfiz x1, x1, 1, 16 + ldr x3, [x2, 1120] + ldrh w2, [x5, 1376] + ldrh w1, [x3, x1] + cmp w1, w2, lsr 2 + bcs .L838 + mov w1, 1 + mov w2, w22 + strh w1, [x5, 1352] + mov w1, 0 + bl gc_add_sblk + cmp w0, 0 + cset w23, ne + b .L837 +.L839: + strh wzr, [x27, 1352] + b .L835 +.L840: + sub w26, w26, #1 + ands w26, w26, 65535 + bne .L841 + b .L835 +.L842: + cmp w6, 64 + bls .L833 + strh wzr, [x27, 1354] + b .L833 +.L843: + sub w26, w26, #1 + ands w26, w26, 65535 + bne .L844 + b .L833 +.L866: + mov w28, 0 + mov w23, 0 + b .L833 +.L848: + add x0, x24, :lo12:.LANCHOR3 + strh wzr, [x0, 1356] + b .L850 +.L846: + strh wzr, [x27, 1356] + b .L850 +.L849: + sub w26, w26, #1 + ands w26, w26, 65535 + bne .L851 + b .L850 +.L853: + add x24, x24, :lo12:.LANCHOR3 + add x19, x19, :lo12:.LANCHOR0 + ldrh w0, [x24, 1376] + ldrb w1, [x24, 1321] + ldrh w2, [x19, 3406] + mul w1, w1, w0 + cmp w2, w1 + ble .L826 + sub w0, w2, w0, lsr 3 + strh w0, [x19, 3406] + b .L826 +.L855: + cmp w6, 64 + bls .L857 + strh wzr, [x4, 1354] +.L857: + cmp w23, w27 + bcc .L860 +.L859: + add x24, x24, :lo12:.LANCHOR3 + add x19, x19, :lo12:.LANCHOR0 + ldrh w1, [x24, 1376] + ldrb w0, [x24, 1321] + ldrh w2, [x19, 3404] + mul w0, w0, w1 sub w0, w0, #32 cmp w2, w0 - bge .L804 + bge .L826 add w1, w2, w1, lsr 3 - strh w1, [x19,3404] -.L804: - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L839 - adrp x0, .LC102 - ldr w2, [x29,144] - add x0, x0, :lo12:.LC102 - mov w1, w23 - mov w3, w24 - mov w4, w21 - bl printk -.L839: - mov w0, w24 - b .L905 -.L845: - mov w25, 0 - mov w24, w25 -.L813: - add x2, x20, :lo12:.LANCHOR3 - add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x2,1388] - ldrh w1, [x0,3384] - cmp w1, w2, lsr 2 - bhi .L840 - ldrh w0, [x0,3382] - add w0, w0, 8 - cmp w1, w0 - ble .L811 -.L840: - cmp w25, w22 - bcs .L811 - add x27, x20, :lo12:.LANCHOR3 - mov w26, 64 - add x0, x27, 1368 - uxth w28, w21 - str x0, [x29,128] -.L822: - ldrh w2, [x27,1362] - ldr x0, [x29,128] - mov w1, w2 - str x2, [x29,112] - bl _list_get_gc_head_node - uxth w7, w0 - mov w1, 65535 - str x7, [x29,120] - cmp w7, w1 - ldr x2, [x29,112] - beq .L820 - add w2, w2, 1 - mov w1, 0 - strh w2, [x27,1362] - mov w2, w23 - bl gc_add_sblk - ldr x7, [x29,120] - cbz w0, .L821 - add x0, x19, :lo12:.LANCHOR0 - ubfiz x7, x7, 1, 16 - add w5, w24, 1 - ldr x0, [x0,1112] - uxth w24, w5 - ldrh w0, [x0,x7] - add w3, w25, w0 - uxth w25, w3 - cmp w25, w22 - bhi .L811 - cmp w24, w28 - bcc .L821 - b .L811 -.L820: - cmp w2, 64 - bls .L811 - strh wzr, [x27,1362] - b .L811 -.L821: - sub w4, w26, #1 - uxth w26, w4 - cbnz w26, .L822 - b .L811 -.L905: - 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 - ret + strh w1, [x19, 3404] + b .L826 +.L858: + sub w26, w26, #1 + ands w26, w26, 65535 + bne .L861 + b .L857 +.L867: + mov w28, 0 + mov w23, 0 + b .L835 .size gc_search_src_blk, .-gc_search_src_blk .align 2 .global zftl_get_gc_node .type zftl_get_gc_node, %function zftl_get_gc_node: stp x29, x30, [sp, -16]! - uxth w1, w1 - uxth w2, w0 + and w1, w1, 65535 + and w0, w0, 65535 cmp w1, 5 add x29, sp, 0 - bne .L911 - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1376 - b .L914 -.L911: - cmp w1, 2 - bne .L913 - mov w0, w2 - bl zftl_get_gc_node.part.10 - b .L915 -.L913: + bne .L919 + mov w1, w0 adrp x0, .LANCHOR3 add x0, x0, :lo12:.LANCHOR3 add x0, x0, 1368 -.L914: - mov w1, w2 +.L923: bl _list_get_gc_head_node -.L915: - uxth w0, w0 + b .L924 +.L919: + cmp w1, 2 + bne .L921 + bl zftl_get_gc_node.part.10 +.L924: + and w0, w0, 65535 ldp x29, x30, [sp], 16 ret +.L921: + mov w1, w0 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x0, x0, 1360 + b .L923 .size zftl_get_gc_node, .-zftl_get_gc_node .align 2 .global zftl_insert_free_list .type zftl_insert_free_list, %function zftl_insert_free_list: adrp x2, .LANCHOR0 - uxth w1, w0 add x2, x2, :lo12:.LANCHOR0 - adrp x3, .LANCHOR3 stp x29, x30, [sp, -16]! + and w1, w0, 65535 + adrp x3, .LANCHOR3 + add x3, x3, :lo12:.LANCHOR3 add x29, sp, 0 - ldr x0, [x2,1096] + ldr x0, [x2, 1104] add x0, x0, w1, uxth 2 - ldrb w0, [x0,2] + ldrb w0, [x0, 2] ands w0, w0, 24 - bne .L917 - add x0, x3, :lo12:.LANCHOR3 - add x2, x2, 3376 - add x0, x0, 1392 - b .L920 -.L917: - cmp w0, 16 - add x0, x3, :lo12:.LANCHOR3 - bne .L919 - add x0, x0, 1400 - add x2, x2, 3378 - b .L920 -.L919: - add x0, x0, 1408 - add x2, x2, 3380 -.L920: + bne .L926 + add x2, x2, 3368 + add x0, x3, 1384 +.L930: bl _insert_free_list ldp x29, x30, [sp], 16 ret +.L926: + cmp w0, 16 + bne .L928 + add x2, x2, 3370 + add x0, x3, 1392 + b .L930 +.L928: + add x2, x2, 3372 + add x0, x3, 1400 + b .L930 .size zftl_insert_free_list, .-zftl_insert_free_list .align 2 .global zftl_insert_data_list .type zftl_insert_data_list, %function zftl_insert_data_list: adrp x2, .LANCHOR0 - uxth w1, w0 add x2, x2, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! + and w1, w0, 65535 add x29, sp, 0 - ldr x0, [x2,1096] + ldr x0, [x2, 1104] add x0, x0, w1, uxth 2 - ldrb w3, [x0,2] + ldrb w3, [x0, 2] and w3, w3, 224 cmp w3, 64 - bne .L922 + bne .L932 adrp x0, .LANCHOR3 - add x2, x2, 3382 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1352 - b .L925 -.L922: - cmp w3, 96 - bne .L924 - adrp x0, .LANCHOR3 - add x2, x2, 3384 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1368 - b .L925 -.L924: - cmp w3, 160 - bne .L921 - adrp x0, .LANCHOR3 - add x2, x2, 3386 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1376 -.L925: + add x2, x2, 3374 + add x0, x0, 1344 +.L936: bl _insert_data_list -.L921: +.L931: ldp x29, x30, [sp], 16 ret +.L932: + cmp w3, 96 + bne .L934 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3376 + add x0, x0, 1360 + b .L936 +.L934: + cmp w3, 160 + bne .L931 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3378 + add x0, x0, 1368 + b .L936 .size zftl_insert_data_list, .-zftl_insert_data_list .align 2 .global zftl_gc_get_free_sblk @@ -5895,421 +5700,411 @@ zftl_insert_data_list: zftl_gc_get_free_sblk: stp x29, x30, [sp, -64]! 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 - uxth w22, w0 - uxth w23, w1 - ldr x0, [x21,1120] - ldrh w19, [x0,588] - cbnz w22, .L927 + stp x21, x22, [sp, 32] + and w22, w0, 65535 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x21, x19, :lo12:.LANCHOR0 + str x23, [sp, 48] + and w23, w1, 65535 + ldr x0, [x21, 1128] + ldrh w20, [x0, 588] mov w0, 65535 - cmp w19, w0 - beq .L927 - adrp x0, .LC103 - mov w1, w19 - add x0, x0, :lo12:.LC103 + cmp w20, w0 + beq .L938 + cbnz w22, .L938 + mov w1, w20 + adrp x0, .LC100 + add x0, x0, :lo12:.LC100 bl printk - ldr x0, [x21,1120] + ldr x0, [x21, 1128] mov w1, -1 - strh w1, [x0,588] - b .L928 -.L927: - add x0, x20, :lo12:.LANCHOR0 - adrp x21, .LANCHOR3 - ldrh w3, [x0,3378] - ldrh w1, [x0,3380] - cmp w3, w1 - bcc .L929 - ldrh w0, [x0,3376] - cmp w0, w3 - bls .L930 - cbz w1, .L930 -.L929: - lsr w1, w1, 2 - cbz w22, .L932 - mov w1, 7 - mul w3, w3, w1 - lsr w1, w3, 3 -.L932: - add x0, x21, :lo12:.LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - add x0, x0, 1408 - add x2, x2, 3380 - b .L954 -.L930: - mov w1, 0 - lsr w3, w3, 3 - cmp w22, w1 - add x0, x21, :lo12:.LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - csel w1, w3, w1, ne - add x0, x0, 1400 - add x2, x2, 3378 -.L954: - bl _list_pop_index_node - uxth w19, w0 - mov w0, 65535 - cmp w19, w0 - bne .L935 - add x5, x20, :lo12:.LANCHOR0 - add x21, x21, :lo12:.LANCHOR3 - adrp x0, .LC104 - mov w1, w19 - add x0, x0, :lo12:.LC104 - mov w2, w23 - ldrh w4, [x5,3376] - ldr x3, [x21,1392] - ldrh w5, [x5,3380] - bl printk -.L935: - cbz w22, .L928 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L928 - add x20, x20, :lo12:.LANCHOR0 - uxtw x6, w19 - lsl x0, x6, 2 - ldr x1, [x20,1096] - ldr x7, [x20,1112] - add x2, x1, x0 - ldr w4, [x1,x0] - ldrh w5, [x1,x0] - adrp x0, .LC105 - ldrb w3, [x2,2] - add x0, x0, :lo12:.LC105 - ldrh w6, [x7,x6,lsl 1] - mov w1, w19 - ubfx x2, x3, 5, 3 - ubfx x4, x4, 11, 8 - ubfx x3, x3, 3, 2 - and w5, w5, 2047 - bl printk -.L928: - mov w0, w19 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + strh w1, [x0, 588] +.L939: + mov w0, w20 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret +.L938: + add x2, x19, :lo12:.LANCHOR0 + adrp x21, .LANCHOR3 + ldrh w0, [x2, 3370] + ldrh w1, [x2, 3372] + cmp w0, w1 + bcc .L940 + ldrh w2, [x2, 3368] + cmp w2, w0 + bls .L941 + cbz w1, .L941 +.L940: + cbnz w22, .L942 + lsr w1, w1, 2 +.L943: + add x2, x19, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR3 + add x2, x2, 3372 + add x0, x0, 1400 +.L958: + bl _list_pop_index_node + and w20, w0, 65535 + mov w0, 65535 + cmp w20, w0 + bne .L946 + add x0, x19, :lo12:.LANCHOR0 + add x21, x21, :lo12:.LANCHOR3 + mov w2, w23 + mov w1, w20 + ldrh w5, [x0, 3372] + ldrh w4, [x0, 3368] + adrp x0, .LC101 + ldr x3, [x21, 1384] + add x0, x0, :lo12:.LC101 + bl printk +.L946: + cbz w22, .L939 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L939 + add x19, x19, :lo12:.LANCHOR0 + uxtw x3, w20 + lsl x0, x3, 2 + ldr x1, [x19, 1104] + ldr x6, [x19, 1120] + add x2, x1, x0 + ldr w4, [x1, x0] + ldrh w6, [x6, x3, lsl 1] + ldrb w2, [x2, 2] + ldrh w5, [x1, x0] + ubfx x4, x4, 11, 8 + mov w1, w20 + adrp x0, .LC102 + ubfx x3, x2, 3, 2 + and w5, w5, 2047 + ubfx x2, x2, 5, 3 + add x0, x0, :lo12:.LC102 + bl printk + b .L939 +.L942: + mov w1, 7 + mul w1, w0, w1 + lsr w1, w1, 3 + b .L943 +.L941: + lsr w1, w0, 3 + cmp w22, 0 + add x2, x19, :lo12:.LANCHOR0 + add x0, x21, :lo12:.LANCHOR3 + csel w1, w1, wzr, ne + add x2, x2, 3370 + add x0, x0, 1392 + b .L958 .size zftl_gc_get_free_sblk, .-zftl_gc_get_free_sblk .align 2 .global zftl_get_free_sblk .type zftl_get_free_sblk, %function zftl_get_free_sblk: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxth w22, w1 - str x23, [sp,48] - stp x19, x20, [sp,16] - cmp w22, 5 - uxth w21, w0 - adrp x20, .LANCHOR0 - bne .L956 - add x2, x20, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x21, x22, [sp, 32] + and w21, w1, 65535 + cmp w21, 5 + bne .L960 + add x2, x19, :lo12:.LANCHOR0 adrp x0, .LANCHOR3 - ldrh w3, [x2,3378] - ldrh w1, [x2,3380] + ldrh w3, [x2, 3370] + ldrh w1, [x2, 3372] cmp w3, w1 - bcc .L957 - ldrh w2, [x2,3376] + bcc .L961 + ldrh w2, [x2, 3368] cmp w2, w3 - bls .L958 - cbz w1, .L958 -.L957: - add x0, x0, :lo12:.LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - add x0, x0, 1408 - lsr w1, w1, 1 - b .L987 -.L958: - add x0, x0, :lo12:.LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - add x0, x0, 1400 - mov w1, 0 - add x2, x2, 3378 - b .L986 -.L956: - add x23, x20, :lo12:.LANCHOR0 - cmp w22, 1 - ldr x0, [x23,1120] - ldrh w19, [x0,590] - beq .L960 - mov w0, 65535 - cmp w19, w0 - beq .L960 - adrp x0, .LC106 - mov w1, w19 - add x0, x0, :lo12:.LC106 - bl printk - ldr x0, [x23,1120] - mov w1, -1 - strh w1, [x0,590] - b .L961 -.L960: - add x1, x20, :lo12:.LANCHOR0 - ldrh w0, [x1,3376] - ldrh w2, [x1,3380] - cmp w0, w2 - bcc .L962 - ldrh w1, [x1,3378] - cmp w1, w0 - bls .L963 - cbz w2, .L963 -.L962: - bl get_ink_scaned_blk - uxth w0, w0 - mov w19, w0 - mov w0, 65535 - cmp w19, w0 - bne .L961 - cmp w22, 1 - bne .L964 - add x0, x20, :lo12:.LANCHOR0 - ldrh w21, [x0,3380] - lsr w21, w21, 1 -.L964: - adrp x0, .LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LANCHOR3 - mov w1, w21 - add x0, x0, 1408 -.L987: - add x2, x2, 3380 - b .L986 -.L963: - lsr w0, w0, 1 - cmp w22, 1 - csel w21, w0, w21, eq - adrp x0, .LANCHOR3 - add x2, x20, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1392 - mov w1, w21 - add x2, x2, 3376 -.L986: - bl _list_pop_index_node - uxth w0, w0 - mov w19, w0 - mov w0, 65535 - cmp w19, w0 - bne .L961 - add x20, x20, :lo12:.LANCHOR0 - adrp x3, .LANCHOR3+1392 - adrp x0, .LC104 - mov w1, w19 - add x0, x0, :lo12:.LC104 - mov w2, w22 - ldr x3, [x3,#:lo12:.LANCHOR3+1392] - ldrh w4, [x20,3376] - ldrh w5, [x20,3380] - bl printk + bls .L962 + cbz w1, .L962 .L961: - mov w0, w19 - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + add x2, x19, :lo12:.LANCHOR0 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3372 + lsr w1, w1, 1 +.L981: + add x0, x0, 1400 + b .L980 +.L962: + add x2, x19, :lo12:.LANCHOR0 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3370 + add x0, x0, 1392 + mov w1, 0 +.L980: + bl _list_pop_index_node + and w20, w0, 65535 + mov w0, 65535 + cmp w20, w0 + bne .L965 + add x19, x19, :lo12:.LANCHOR0 + adrp x0, .LANCHOR3+1384 + mov w2, w21 + mov w1, w20 + ldr x3, [x0, #:lo12:.LANCHOR3+1384] + adrp x0, .LC101 + ldrh w5, [x19, 3372] + add x0, x0, :lo12:.LC101 + ldrh w4, [x19, 3368] + bl printk + b .L965 +.L960: + add x22, x19, :lo12:.LANCHOR0 + and w3, w0, 65535 + ldr x0, [x22, 1128] + ldrh w20, [x0, 590] + mov w0, 65535 + cmp w20, w0 + beq .L964 + cmp w21, 1 + beq .L964 + mov w1, w20 + adrp x0, .LC103 + add x0, x0, :lo12:.LC103 + bl printk + ldr x0, [x22, 1128] + mov w1, -1 + strh w1, [x0, 590] +.L965: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret +.L964: + add x1, x19, :lo12:.LANCHOR0 + ldrh w0, [x1, 3368] + ldrh w2, [x1, 3372] + cmp w0, w2 + bcc .L966 + ldrh w1, [x1, 3370] + cmp w1, w0 + bls .L967 + cbz w2, .L967 +.L966: + bl get_ink_scaned_blk + and w20, w0, 65535 + mov w0, 65535 + cmp w20, w0 + bne .L965 + cmp w21, 1 + bne .L968 + add x0, x19, :lo12:.LANCHOR0 + ldrh w3, [x0, 3372] + lsr w3, w3, 1 +.L968: + add x2, x19, :lo12:.LANCHOR0 + adrp x0, .LANCHOR3 + add x2, x2, 3372 + mov w1, w3 + add x0, x0, :lo12:.LANCHOR3 + b .L981 +.L967: + lsr w0, w0, 1 + cmp w21, 1 + csel w3, w0, w3, eq + add x2, x19, :lo12:.LANCHOR0 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3368 + mov w1, w3 + add x0, x0, 1384 + b .L980 .size zftl_get_free_sblk, .-zftl_get_free_sblk .align 2 .global zftl_remove_data_node .type zftl_remove_data_node, %function zftl_remove_data_node: adrp x2, .LANCHOR0 - uxth w1, w0 add x2, x2, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! + and w1, w0, 65535 add x29, sp, 0 - ldr x0, [x2,1096] + ldr x0, [x2, 1104] add x0, x0, w1, uxth 2 - ldrb w3, [x0,2] + ldrb w3, [x0, 2] and w3, w3, 224 cmp w3, 64 - bne .L989 + bne .L983 adrp x0, .LANCHOR3 - add x2, x2, 3382 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1352 - b .L992 -.L989: - cmp w3, 96 - bne .L991 - adrp x0, .LANCHOR3 - add x2, x2, 3384 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1368 - b .L992 -.L991: - cmp w3, 160 - bne .L988 - adrp x0, .LANCHOR3 - add x2, x2, 3386 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1376 -.L992: + add x2, x2, 3374 + add x0, x0, 1344 +.L987: bl _list_remove_node -.L988: +.L982: ldp x29, x30, [sp], 16 ret +.L983: + cmp w3, 96 + bne .L985 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3376 + add x0, x0, 1360 + b .L987 +.L985: + cmp w3, 160 + bne .L982 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3378 + add x0, x0, 1368 + b .L987 .size zftl_remove_data_node, .-zftl_remove_data_node .align 2 .global zftl_remove_free_node .type zftl_remove_free_node, %function zftl_remove_free_node: adrp x2, .LANCHOR0 - uxth w1, w0 add x2, x2, :lo12:.LANCHOR0 - adrp x3, .LANCHOR3 stp x29, x30, [sp, -16]! + and w1, w0, 65535 + adrp x3, .LANCHOR3 + add x3, x3, :lo12:.LANCHOR3 add x29, sp, 0 - ldr x0, [x2,1096] + ldr x0, [x2, 1104] add x0, x0, w1, uxth 2 - ldrb w0, [x0,2] + ldrb w0, [x0, 2] ands w0, w0, 24 - bne .L994 - add x0, x3, :lo12:.LANCHOR3 - add x2, x2, 3376 - add x0, x0, 1392 - b .L997 -.L994: - cmp w0, 16 - add x0, x3, :lo12:.LANCHOR3 - bne .L996 - add x0, x0, 1400 - add x2, x2, 3378 - b .L997 -.L996: - add x0, x0, 1408 - add x2, x2, 3380 -.L997: + bne .L989 + add x2, x2, 3368 + add x0, x3, 1384 +.L993: bl _list_remove_node ldp x29, x30, [sp], 16 ret +.L989: + cmp w0, 16 + bne .L991 + add x2, x2, 3370 + add x0, x3, 1392 + b .L993 +.L991: + add x2, x2, 3372 + add x0, x3, 1400 + b .L993 .size zftl_remove_free_node, .-zftl_remove_free_node .align 2 .global zftl_list_update_data_list .type zftl_list_update_data_list, %function zftl_list_update_data_list: adrp x2, .LANCHOR0 - uxth w1, w0 add x2, x2, :lo12:.LANCHOR0 stp x29, x30, [sp, -16]! + and w1, w0, 65535 add x29, sp, 0 - ldr x0, [x2,1096] + ldr x0, [x2, 1104] add x0, x0, w1, uxth 2 - ldrb w3, [x0,2] + ldrb w3, [x0, 2] and w3, w3, 224 cmp w3, 64 - bne .L999 + bne .L995 adrp x0, .LANCHOR3 - add x2, x2, 3382 add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1352 - b .L1002 + add x2, x2, 3374 + add x0, x0, 1344 .L999: - cmp w3, 96 - bne .L1001 - adrp x0, .LANCHOR3 - add x2, x2, 3384 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1368 - b .L1002 -.L1001: - cmp w3, 160 - bne .L998 - adrp x0, .LANCHOR3 - add x2, x2, 3386 - add x0, x0, :lo12:.LANCHOR3 - add x0, x0, 1376 -.L1002: bl _list_update_data_list -.L998: +.L994: ldp x29, x30, [sp], 16 ret +.L995: + cmp w3, 96 + bne .L997 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3376 + add x0, x0, 1360 + b .L999 +.L997: + cmp w3, 160 + bne .L994 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add x2, x2, 3378 + add x0, x0, 1368 + b .L999 .size zftl_list_update_data_list, .-zftl_list_update_data_list .align 2 .global print_list_info .type print_list_info, %function print_list_info: - sub sp, sp, #128 - stp x29, x30, [sp,32] + sub sp, sp, #96 + stp x29, x30, [sp, 32] add x29, sp, 32 - stp x19, x20, [sp,48] + stp x19, x20, [sp, 48] mov x19, x0 - str x27, [sp,112] - stp x21, x22, [sp,64] - stp x23, x24, [sp,80] - stp x25, x26, [sp,96] - adrp x0, .LC107 + stp x21, x22, [sp, 64] + stp x23, x24, [sp, 80] ldrh w2, [x1] - add x0, x0, :lo12:.LC107 - ldr x1, [x19] + ldr x1, [x0] + adrp x0, .LC104 + add x0, x0, :lo12:.LC104 bl printk ldr x19, [x19] - cbz x19, .L1003 - mov x22, -6148914691236517206 - adrp x23, .LC108 + cbz x19, .L1000 + adrp x21, .LANCHOR0 + mov x24, -6148914691236517206 + adrp x23, .LC105 + adrp x22, .LANCHOR3 + add x21, x21, :lo12:.LANCHOR0 + add x23, x23, :lo12:.LC105 + add x22, x22, :lo12:.LANCHOR3 mov w20, 0 - adrp x26, .LANCHOR0 - add x22, x22, 1 - add x23, x23, :lo12:.LC108 - mov w27, 65535 - mov w25, 6 - adrp x24, .LANCHOR3 -.L1006: - add x21, x26, :lo12:.LANCHOR0 - ldrh w3, [x19] - ldrh w4, [x19,2] - ldrh w5, [x19,4] - ldr x2, [x21,1040] - ldr x1, [x21,1096] + movk x24, 0xaaab, lsl 0 +.L1003: + ldr x2, [x21, 1040] + ldr x1, [x21, 1104] sub x2, x19, x2 + ldr x8, [x21, 1120] asr x2, x2, 1 - mul x2, x2, x22 - and x8, x2, 65535 - lsl x0, x8, 2 - uxth w2, w2 - add x6, x1, x0 - ldrb w7, [x6,2] - ldr w6, [x1,x0] - ubfx x6, x6, 11, 8 - str w6, [sp] - ubfx x6, x7, 5, 3 - ubfx x7, x7, 3, 2 - ldrh w0, [x1,x0] + ldrh w5, [x19, 4] + ldrh w4, [x19, 2] + mul x2, x2, x24 + and x7, x2, 65535 + and w2, w2, 65535 + lsl x0, x7, 2 + add x3, x1, x0 + ldrh w7, [x8, x7, lsl 1] + ldrb w6, [x3, 2] + ldrh w3, [x19] + str w7, [sp, 16] + ldrh w7, [x1, x0] + and w7, w7, 2047 + str w7, [sp, 8] + ubfx x7, x6, 3, 2 + ubfx x6, x6, 5, 3 + ldr w0, [x1, x0] mov w1, w20 - and w0, w0, 2047 - str w0, [sp,8] - ldr x0, [x21,1112] - ldrh w0, [x0,x8,lsl 1] - str w0, [sp,16] + ubfx x0, x0, 11, 8 + str w0, [sp] mov x0, x23 bl printk ldrh w19, [x19] - cmp w19, w27 - beq .L1003 - ldr x0, [x21,1040] + mov w0, 65535 + cmp w19, w0 + beq .L1000 + ldr x0, [x21, 1040] + mov w1, 6 add w20, w20, 1 - umull x19, w19, w25 - uxth w20, w20 - add x19, x0, x19 - add x0, x24, :lo12:.LANCHOR3 - ldrh w0, [x0,1416] + and w20, w20, 65535 + umaddl x19, w19, w1, x0 + ldrh w0, [x22, 1408] cmp w0, w20 - bcs .L1006 -.L1003: - sub sp, x29, #32 - ldp x19, x20, [sp,48] - ldp x21, x22, [sp,64] - ldp x23, x24, [sp,80] - ldp x25, x26, [sp,96] - ldr x27, [sp,112] - ldp x29, x30, [sp,32] - add sp, sp, 128 + bcs .L1003 +.L1000: + ldp x19, x20, [sp, 48] + ldp x21, x22, [sp, 64] + ldp x23, x24, [sp, 80] + ldp x29, x30, [sp, 32] + add sp, sp, 96 ret .size print_list_info, .-print_list_info .align 2 @@ -6318,30 +6113,30 @@ print_list_info: dump_all_list_info: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR3 - adrp x19, .LANCHOR0 - add x20, x20, :lo12:.LANCHOR3 - add x19, x19, :lo12:.LANCHOR0 - add x0, x20, 1392 - add x1, x19, 3376 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + adrp x19, .LANCHOR3 + add x20, x20, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR3 + add x1, x20, 3368 + add x0, x19, 1384 bl print_list_info - add x0, x20, 1400 - add x1, x19, 3378 + add x1, x20, 3370 + add x0, x19, 1392 bl print_list_info - add x0, x20, 1408 - add x1, x19, 3380 + add x1, x20, 3372 + add x0, x19, 1400 bl print_list_info - add x0, x20, 1352 - add x1, x19, 3382 + add x1, x20, 3374 + add x0, x19, 1344 bl print_list_info - add x0, x20, 1368 - add x1, x19, 3384 + add x1, x20, 3376 + add x0, x19, 1360 bl print_list_info - add x0, x20, 1376 - add x1, x19, 3386 + add x1, x20, 3378 + add x0, x19, 1368 bl print_list_info - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size dump_all_list_info, .-dump_all_list_info @@ -6349,155 +6144,145 @@ dump_all_list_info: .global ftl_tmp_into_update .type ftl_tmp_into_update, %function ftl_tmp_into_update: - adrp x0, .LANCHOR0+3392 - ldr x0, [x0,#:lo12:.LANCHOR0+3392] - ldr w2, [x0,16] - cmp w2, 2048 - bls .L1009 - 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] -.L1009: - ldr w2, [x0,24] - cmp w2, 2048 - bls .L1010 - 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] -.L1010: - ldr w2, [x0,32] - cmp w2, 1024 - bls .L1011 - 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] -.L1011: - ldr w2, [x0,40] - cmp w2, 1024 + adrp x0, .LANCHOR0+3384 + ldr x0, [x0, #:lo12:.LANCHOR0+3384] + ldr w1, [x0, 16] + cmp w1, 2048 bls .L1008 - 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] + ldr w2, [x0, 20] + add w2, w2, w1, lsr 11 + and w1, w1, 2047 + stp w1, w2, [x0, 16] .L1008: + ldr w1, [x0, 24] + cmp w1, 2048 + bls .L1009 + ldr w2, [x0, 28] + add w2, w2, w1, lsr 11 + and w1, w1, 2047 + stp w1, w2, [x0, 24] +.L1009: + ldr w1, [x0, 32] + cmp w1, 1024 + bls .L1010 + ldr w2, [x0, 36] + add w2, w2, w1, lsr 10 + and w1, w1, 1023 + stp w1, w2, [x0, 32] +.L1010: + ldr w1, [x0, 40] + cmp w1, 1024 + bls .L1007 + ldr w2, [x0, 44] + add w2, w2, w1, lsr 10 + and w1, w1, 1023 + stp w1, w2, [x0, 40] +.L1007: ret .size ftl_tmp_into_update, .-ftl_tmp_into_update .align 2 .global ftl_get_blk_list_in_sblk .type ftl_get_blk_list_in_sblk, %function ftl_get_blk_list_in_sblk: - adrp x3, .LANCHOR0 - uxth w0, w0 - add x2, x3, :lo12:.LANCHOR0 - mov x9, x3 - adrp x11, .LANCHOR3 - mov w13, 24 - ldr x2, [x2,1096] - add x2, x2, w0, uxth 2 - ldrb w12, [x2,3] - mov w2, 0 - mov w6, w2 -.L1014: - add x8, x11, :lo12:.LANCHOR3 - adrp x4, .LANCHOR3 - ldrb w3, [x8,1329] - cmp w6, w3 - bge .L1020 - asr w3, w12, w6 - tbnz x3, 0, .L1015 - add x3, x9, :lo12:.LANCHOR0 - ldrb w5, [x8,1314] - sbfiz x10, x2, 1, 32 - ldrb w7, [x3,1257] - ldrh w3, [x8,1312] - sdiv w4, w6, w5 - sub w7, w13, w7 - sub w3, w7, w3 - lsl w3, w4, w3 - madd w3, w0, w5, w3 - uxth w4, w3 - strh w4, [x1,x10] - ldrb w3, [x8,1314] - cmp w3, 1 - bls .L1016 - sub w3, w3, #1 - and w3, w6, w3 - add w3, w4, w3 - strh w3, [x1,x10] -.L1016: - add w2, w2, 1 -.L1015: - add w6, w6, 1 - b .L1014 -.L1020: - mov w0, w2 + adrp x5, .LANCHOR0 + add x5, x5, :lo12:.LANCHOR0 + and w9, w0, 65535 + mov w4, 0 + mov w0, 0 + mov w12, 24 + ldr x2, [x5, 1104] + add x2, x2, w9, uxth 2 + ldrb w11, [x2, 3] + adrp x2, .LANCHOR3 + add x7, x2, :lo12:.LANCHOR3 + mov x3, x2 +.L1013: + ldrb w2, [x7, 1321] + cmp w4, w2 + blt .L1016 + mov w4, w0 + add x2, x3, :lo12:.LANCHOR3 mov w5, -1 -.L1018: - add x3, x4, :lo12:.LANCHOR3 - ldrb w3, [x3,1329] - cmp w2, w3 - bge .L1021 - strh w5, [x1,w2,sxtw 1] - add w2, w2, 1 - b .L1018 -.L1021: +.L1017: + ldrb w3, [x2, 1321] + cmp w4, w3 + blt .L1018 ret +.L1016: + asr w2, w11, w4 + tbnz x2, 0, .L1014 + ldrb w2, [x7, 1306] + sbfiz x10, x0, 1, 32 + ldrb w6, [x5, 1205] + ldrh w13, [x7, 1304] + sub w6, w12, w6 + sdiv w8, w4, w2 + sub w6, w6, w13 + lsl w6, w8, w6 + madd w2, w9, w2, w6 + and w2, w2, 65535 + strh w2, [x1, x10] + ldrb w6, [x7, 1306] + cmp w6, 1 + bls .L1015 + sub w6, w6, #1 + and w6, w6, w4 + add w2, w2, w6 + strh w2, [x1, x10] +.L1015: + add w0, w0, 1 +.L1014: + add w4, w4, 1 + b .L1013 +.L1018: + strh w5, [x1, w4, sxtw 1] + add w4, w4, 1 + b .L1017 .size ftl_get_blk_list_in_sblk, .-ftl_get_blk_list_in_sblk .align 2 .global ftl_erase_phy_blk .type ftl_erase_phy_blk, %function ftl_erase_phy_blk: stp x29, x30, [sp, -48]! - uxth w2, w0 - adrp x3, .LANCHOR3 - adrp x0, .LANCHOR0+1257 - add x5, x3, :lo12:.LANCHOR3 + mov w2, 24 + and w0, w0, 65535 add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - ldrb w4, [x0,#:lo12:.LANCHOR0+1257] - mov w0, 24 - ldrh w19, [x5,1312] - mov w21, w1 - sub w4, w0, w4 - ldrb w0, [x5,1330] - sub w4, w4, w19 + stp x21, x22, [sp, 32] + mov w22, w1 + adrp x1, .LANCHOR0+1205 + stp x19, x20, [sp, 16] + ldrb w19, [x1, #:lo12:.LANCHOR0+1205] + adrp x1, .LANCHOR3 + add x3, x1, :lo12:.LANCHOR3 + mov x20, x1 + sub w19, w2, w19 + ldrh w2, [x3, 1304] + sub w2, w19, w2 mov w19, 1 - lsl w19, w19, w4 - asr w22, w2, w4 + lsl w19, w19, w2 sub w19, w19, #1 - mov x20, x3 - and w19, w19, w2 + and w19, w19, w0 + asr w21, w0, w2 + ldrb w0, [x3, 1322] sxth w19, w19 - cbz w0, .L1023 - ldrb w0, [x5,1331] - cbnz w0, .L1023 - ldrh w2, [x5,1418] - cmp w1, wzr - mov w0, w22 + cbz w0, .L1020 + ldrb w0, [x3, 1323] + cbnz w0, .L1020 + ldrh w2, [x3, 1410] + cmp w22, 0 cset w1, eq - mul w2, w19, w2 + mov w0, w21 + mul w2, w2, w19 bl flash_erase_block_en -.L1023: - add x3, x20, :lo12:.LANCHOR3 - mov w1, w21 - mov w0, w22 - ldrh w2, [x3,1418] - mul w2, w19, w2 +.L1020: + add x1, x20, :lo12:.LANCHOR3 + mov w0, w21 + ldrh w2, [x1, 1410] + mov w1, w22 + mul w2, w2, w19 bl flash_erase_block_en - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size ftl_erase_phy_blk, .-ftl_erase_phy_blk @@ -6505,156 +6290,155 @@ ftl_erase_phy_blk: .global ftl_erase_sblk .type ftl_erase_sblk, %function ftl_erase_sblk: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -176]! add x29, sp, 0 - stp x23, x24, [sp,48] - uxth w24, w0 + stp x21, x22, [sp, 32] + mov w22, w1 + stp x25, x26, [sp, 64] + and w25, w0, 65535 adrp x0, .LANCHOR0 - mov w23, w1 add x1, x0, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - ubfiz x22, x24, 2, 16 - adrp x25, .LANCHOR3 - ldr x1, [x1,1096] + stp x19, x20, [sp, 16] + ubfiz x21, x25, 2, 16 + stp x23, x24, [sp, 48] + adrp x26, .LANCHOR3 + stp x27, x28, [sp, 80] + mov x20, x0 + add x27, x29, 112 + add x24, x26, :lo12:.LANCHOR3 + ldr x1, [x1, 1104] mov w19, 0 - mov x21, x0 - mov x26, x25 - add x1, x1, x22 - ldrb w27, [x1,3] + add x1, x1, x21 + ldrb w28, [x1, 3] +.L1026: + add x0, x26, :lo12:.LANCHOR3 + ldrb w1, [x0, 1412] + cmp w19, w1 + bge .L1037 + ldrb w1, [x0, 1306] + mov w23, 0 + ldrh w3, [x0, 1410] + mov w0, 0 + sub w4, w1, #1 + mul w6, w19, w1 + mul w5, w25, w1 + b .L1038 .L1028: - add x1, x25, :lo12:.LANCHOR3 - ldrb w0, [x1,1420] - cmp w19, w0 - bge .L1039 - ldrb w0, [x1,1314] - mov w20, 0 - ldrh w3, [x1,1418] - mov w1, w20 - sub w4, w0, #1 - mul w6, w19, w0 - mul w5, w24, w0 -.L1040: - cmp w1, w0 - bge .L1053 - add w2, w1, w6 - asr w2, w27, w2 - tbnz x2, 0, .L1029 - and w2, w1, w4 - add x7, x29, 96 - add w2, w5, w2 + add w2, w6, w0 + asr w2, w28, w2 + tbnz x2, 0, .L1027 + and w2, w0, w4 + add w2, w2, w5 mul w2, w2, w3 - str w2, [x7,w20,sxtw 2] - add w20, w20, 1 -.L1029: - add w1, w1, 1 - b .L1040 -.L1053: - cmp w0, 4 - bne .L1052 - mov x28, 0 -.L1031: - cmp w20, w28 - ble .L1034 - add x2, x29, 96 - mov w0, w19 - mov w1, w23 - ldr w2, [x2,x28,lsl 2] - add x28, x28, 1 - bl flash_erase_block_en - b .L1031 -.L1052: - cmp w20, 2 - bne .L1035 - add x0, x26, :lo12:.LANCHOR3 - ldrb w1, [x0,1330] - cbz w1, .L1036 - ldrb w0, [x0,1331] - cbnz w0, .L1036 - cmp w23, wzr - ldr w2, [x29,96] - ldr w3, [x29,100] - mov w0, w19 - cset w1, eq - bl flash_erase_duplane_block -.L1036: - ldr w2, [x29,96] - mov w0, w19 - ldr w3, [x29,100] - mov w1, w23 - bl flash_erase_duplane_block - b .L1034 -.L1035: - cmp w20, 1 - bne .L1034 - add x0, x26, :lo12:.LANCHOR3 - ldrb w1, [x0,1330] - cbz w1, .L1038 - ldrb w0, [x0,1331] - cbnz w0, .L1038 - cmp w23, wzr - ldr w2, [x29,96] - mov w0, w19 - cset w1, eq - bl flash_erase_block_en + str w2, [x27, w23, sxtw 2] + add w23, w23, 1 +.L1027: + add w0, w0, 1 .L1038: - ldr w2, [x29,96] - mov w0, w19 - mov w1, w23 - bl flash_erase_block_en -.L1034: + cmp w0, w1 + blt .L1028 + cmp w1, 4 + bne .L1029 + mov x3, 0 +.L1030: + cmp w23, w3 + bgt .L1031 +.L1032: add w19, w19, 1 - b .L1028 -.L1039: - add x0, x21, :lo12:.LANCHOR0 - cbnz w23, .L1041 - ldr x2, [x0,1096] - ldrh w1, [x2,x22] + b .L1026 +.L1031: + ldr w2, [x27, x3, lsl 2] + mov w1, w22 + str x3, [x29, 104] + mov w0, w19 + bl flash_erase_block_en + ldr x3, [x29, 104] + add x3, x3, 1 + b .L1030 +.L1029: + cmp w23, 2 + bne .L1033 + ldrb w0, [x24, 1322] + cbz w0, .L1034 + ldrb w0, [x24, 1323] + cbnz w0, .L1034 + ldp w2, w3, [x29, 112] + cmp w22, 0 + cset w1, eq + mov w0, w19 + bl flash_erase_duplane_block +.L1034: + ldp w2, w3, [x29, 112] + mov w1, w22 + mov w0, w19 + bl flash_erase_duplane_block + b .L1032 +.L1033: + cmp w23, 1 + bne .L1032 + ldrb w0, [x24, 1322] + cbz w0, .L1036 + ldrb w0, [x24, 1323] + cbnz w0, .L1036 + ldr w2, [x29, 112] + cmp w22, 0 + cset w1, eq + mov w0, w19 + bl flash_erase_block_en +.L1036: + ldr w2, [x29, 112] + mov w1, w22 + mov w0, w19 + bl flash_erase_block_en + b .L1032 +.L1037: + add x0, x20, :lo12:.LANCHOR0 + cbnz w22, .L1039 + ldr x2, [x0, 1104] + ldrh w1, [x2, x21] add w3, w1, 1 bfi w1, w3, 0, 11 - strh w1, [x2,x22] - ldr x1, [x0,3392] - ldr x0, [x0,1096] - ldr w2, [x1,84] - ldrh w3, [x1,96] + strh w1, [x2, x21] + ldr x1, [x0, 3384] + ldr x0, [x0, 1104] + ldr w2, [x1, 84] + ldrh w3, [x1, 96] add w2, w2, 1 - str w2, [x1,84] - ldrh w0, [x0,x22] + str w2, [x1, 84] + ldrh w0, [x0, x21] ubfx x0, x0, 0, 11 - uxth w2, w0 + and w2, w0, 65535 cmp w3, w2 - bge .L1043 - strh w0, [x1,96] - b .L1043 + bge .L1041 + strh w0, [x1, 96] .L1041: - ldr x3, [x0,1096] - ldr w1, [x3,x22] + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 + ret +.L1039: + ldr x3, [x0, 1104] + ldr w1, [x3, x21] ubfx x2, x1, 11, 8 add w2, w2, 1 bfi w1, w2, 11, 8 - str w1, [x3,x22] - ldr x1, [x0,3392] - ldr x0, [x0,1096] - ldr w2, [x1,80] + str w1, [x3, x21] + ldr x1, [x0, 3384] + ldr x0, [x0, 1104] + ldr w2, [x1, 80] add w2, w2, 1 - str w2, [x1,80] - ldrh w2, [x1,98] - ldr w0, [x0,x22] + str w2, [x1, 80] + ldrh w2, [x1, 98] + ldr w0, [x0, x21] ubfx x0, x0, 11, 8 cmp w2, w0, uxtb - bcs .L1043 - strh w0, [x1,98] -.L1043: - 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], 160 - ret + bcs .L1041 + strh w0, [x1, 98] + b .L1041 .size ftl_erase_sblk, .-ftl_erase_sblk .align 2 .global ftl_alloc_sys_blk @@ -6662,53 +6446,55 @@ ftl_erase_sblk: ftl_alloc_sys_blk: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR0 - add x29, sp, 0 add x1, x0, :lo12:.LANCHOR0 - str x19, [sp,16] + add x29, sp, 0 + str x19, [sp, 16] mov x19, x0 - ldr x1, [x1,3392] - ldrh w2, [x1,136] + ldr x1, [x1, 3384] + ldrh w2, [x1, 136] cmp w2, 63 - bls .L1055 - strh wzr, [x1,136] -.L1055: - ldrh w0, [x1,112] - cbnz w0, .L1056 + bls .L1051 + strh wzr, [x1, 136] +.L1051: + ldrh w0, [x1, 112] + cbnz w0, .L1052 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1784 mov w2, 1359 - add x1, x1, 1800 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1056: +.L1052: add x0, x19, :lo12:.LANCHOR0 mov w4, 65535 - ldr x1, [x0,3392] -.L1060: - ldrh w2, [x1,136] -.L1057: + ldr x1, [x0, 3384] +.L1056: + ldrh w2, [x1, 136] + ubfiz x3, x2, 1, 16 + add x3, x3, 160 + add x3, x1, x3 +.L1053: cmp w2, 63 - bgt .L1063 - sxtw x3, w2 - add x3, x3, 80 - ldrh w0, [x1,x3,lsl 1] + ble .L1055 + strh wzr, [x1, 136] + b .L1056 +.L1055: + ldrh w0, [x3], 2 cmp w0, w4 - bne .L1062 + bne .L1058 add w2, w2, 1 - b .L1057 -.L1063: - strh wzr, [x1,136] - b .L1060 -.L1062: + b .L1053 +.L1058: + add x3, x1, w2, sxtw 1 mov w4, -1 - strh w4, [x1,x3,lsl 1] - strh w2, [x1,136] - ldrh w2, [x1,112] + strh w4, [x3, 160] + strh w2, [x1, 136] + ldrh w2, [x1, 112] sub w2, w2, #1 - strh w2, [x1,112] - ldr x19, [sp,16] + strh w2, [x1, 112] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_alloc_sys_blk, .-ftl_alloc_sys_blk @@ -6717,145 +6503,148 @@ ftl_alloc_sys_blk: .type ftl_free_sys_blk, %function ftl_free_sys_blk: stp x29, x30, [sp, -32]! - adrp x1, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - uxth w20, w0 - add x0, x1, :lo12:.LANCHOR0 - mov x19, x1 - ldr x2, [x0,3392] - ldrh w0, [x2,138] + stp x19, x20, [sp, 16] + and w20, w0, 65535 + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + mov x19, x0 + ldr x1, [x1, 3384] + ldrh w2, [x1, 138] + cmp w2, 63 + bls .L1061 + strh wzr, [x1, 138] +.L1061: + ldrh w0, [x1, 112] cmp w0, 63 - bls .L1065 - strh wzr, [x2,138] -.L1065: - ldrh w0, [x2,112] - cmp w0, 63 - bls .L1066 + bls .L1062 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1808 mov w2, 1386 - add x1, x1, 1824 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack +.L1062: + add x0, x19, :lo12:.LANCHOR0 + mov w3, 65535 + ldr x0, [x0, 3384] .L1066: - add x1, x19, :lo12:.LANCHOR0 - mov w0, 65535 - ldr x1, [x1,3392] -.L1070: - ldrh w2, [x1,138] -.L1067: - cmp w2, 63 - bgt .L1072 - sxtw x3, w2 - add x3, x3, 80 - ldrh w4, [x1,x3,lsl 1] - cmp w4, w0 - bne .L1068 - strh w20, [x1,x3,lsl 1] - strh w2, [x1,138] - ldrh w0, [x1,112] - add w0, w0, 1 - strh w0, [x1,112] - ldp x19, x20, [sp,16] + ldrh w1, [x0, 138] + ubfiz x2, x1, 1, 16 + add x2, x2, 160 + add x2, x0, x2 +.L1063: + cmp w1, 63 + ble .L1065 + strh wzr, [x0, 138] + b .L1066 +.L1065: + ldrh w4, [x2], 2 + cmp w4, w3 + bne .L1064 + add x2, x0, w1, sxtw 1 + strh w20, [x2, 160] + strh w1, [x0, 138] + ldrh w1, [x0, 112] + add w1, w1, 1 + strh w1, [x0, 112] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret -.L1068: - add w2, w2, 1 - b .L1067 -.L1072: - strh wzr, [x1,138] - b .L1070 +.L1064: + add w1, w1, 1 + b .L1063 .size ftl_free_sys_blk, .-ftl_free_sys_blk .align 2 .global ftl_info_data_recovery .type ftl_info_data_recovery, %function ftl_info_data_recovery: - stp x29, x30, [sp, -64]! - mov w1, 65535 - add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - str x23, [sp,48] ldrh w2, [x0] + mov w1, 65535 cmp w2, w1 - beq .L1073 + beq .L1079 + stp x29, x30, [sp, -64]! + add x29, sp, 0 + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - ubfiz x20, x2, 2, 16 + str x23, [sp, 48] add x23, x19, :lo12:.LANCHOR0 - ldr x21, [x23,1096] + stp x21, x22, [sp, 32] + ubfiz x20, x2, 2, 16 + ldr x21, [x23, 1104] add x22, x21, x20 - ldrb w1, [x22,2] + ldrb w1, [x22, 2] tst w1, 224 - bne .L1073 - ldrb w0, [x0,4] + bne .L1069 + ldrb w0, [x0, 4] bfi w1, w0, 5, 3 + strb w1, [x22, 2] mov w0, w2 - strb w1, [x22,2] bl zftl_remove_free_node - ldrb w0, [x22,2] - tbz x0, 3, .L1077 - ldr x1, [x23,3392] - ldrh w0, [x1,116] + ldrb w0, [x22, 2] + ldr x1, [x23, 3384] + tbz x0, 3, .L1073 + ldrh w0, [x1, 116] sub w0, w0, #1 - strh w0, [x1,116] - b .L1078 -.L1077: - tst w0, 24 - ldr x1, [x23,3392] - bne .L1079 - ldrh w0, [x1,114] - sub w0, w0, #1 - strh w0, [x1,114] - b .L1078 -.L1079: - ldrh w0, [x1,118] - sub w0, w0, #1 - strh w0, [x1,118] -.L1078: - ldrb w0, [x22,2] + strh w0, [x1, 116] +.L1074: + ldrb w0, [x22, 2] and w0, w0, 224 cmp w0, 160 - bne .L1080 - ldr w0, [x21,x20] + bne .L1076 + ldr w0, [x21, x20] add x19, x19, :lo12:.LANCHOR0 ubfx x1, x0, 11, 8 add w1, w1, 1 bfi w0, w1, 11, 8 - str w0, [x21,x20] - ldr x1, [x19,3392] - ldrh w0, [x1,120] + str w0, [x21, x20] + ldr x1, [x19, 3384] + ldrh w0, [x1, 120] sub w0, w0, #1 - strh w0, [x1,120] - b .L1073 -.L1080: - ldrh w1, [x21,x20] + strh w0, [x1, 120] +.L1069: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] + ldp x29, x30, [sp], 64 + ret +.L1073: + tst w0, 24 + bne .L1075 + ldrh w0, [x1, 114] + sub w0, w0, #1 + strh w0, [x1, 114] + b .L1074 +.L1075: + ldrh w0, [x1, 118] + sub w0, w0, #1 + strh w0, [x1, 118] + b .L1074 +.L1076: + ldrh w1, [x21, x20] cmp w0, 64 add w2, w1, 1 bfi w1, w2, 0, 11 - strh w1, [x21,x20] - bne .L1081 + strh w1, [x21, x20] + bne .L1077 add x19, x19, :lo12:.LANCHOR0 - ldr x1, [x19,3392] - ldrh w0, [x1,122] + ldr x1, [x19, 3384] + ldrh w0, [x1, 122] sub w0, w0, #1 - strh w0, [x1,122] - b .L1073 -.L1081: + strh w0, [x1, 122] + b .L1069 +.L1077: cmp w0, 96 - bne .L1073 + bne .L1069 add x19, x19, :lo12:.LANCHOR0 - ldr x1, [x19,3392] - ldrh w0, [x1,124] + ldr x1, [x19, 3384] + ldrh w0, [x1, 124] sub w0, w0, #1 - strh w0, [x1,124] -.L1073: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 64 + strh w0, [x1, 124] + b .L1069 +.L1079: ret .size ftl_info_data_recovery, .-ftl_info_data_recovery .align 2 @@ -6863,83 +6652,83 @@ ftl_info_data_recovery: .type ftl_get_ppa_from_index, %function ftl_get_ppa_from_index: stp x29, x30, [sp, -48]! - adrp x2, .LANCHOR3 - uxth w1, w0 - add x4, x2, :lo12:.LANCHOR3 - adrp x0, .LANCHOR0+1120 + adrp x1, .LANCHOR0+1128 + and w0, w0, 65535 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov x19, x2 - ldr x3, [x0,#:lo12:.LANCHOR0+1120] - ldrh w0, [x4,1384] - ldrb w4, [x4,1329] - mul w0, w0, w4 - cmp w1, w0 + ldr x2, [x1, #:lo12:.LANCHOR0+1128] + adrp x1, .LANCHOR3 + add x4, x1, :lo12:.LANCHOR3 + stp x19, x20, [sp, 16] + str x21, [sp, 32] + mov x19, x1 + ldrh w3, [x4, 1376] + ldrb w4, [x4, 1321] + mul w3, w3, w4 + cmp w0, w3 bge .L1083 - add x3, x3, 16 - b .L1084 -.L1083: - sub w1, w1, w0 - add x3, x3, 48 - uxth w1, w1 + add x2, x2, 16 .L1084: - ldrb w2, [x3,9] + ldrb w1, [x2, 9] + sdiv w20, w0, w1 + msub w0, w20, w1, w0 + add x0, x2, w0, uxth 1 + ldrh w21, [x0, 16] mov w0, 65535 - sdiv w20, w1, w2 - msub w1, w20, w2, w1 - add x1, x3, w1, uxth 1 - ldrh w21, [x1,16] cmp w21, w0 bne .L1085 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1832 mov w2, 1945 - add x1, x1, 1848 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack .L1085: - add x2, x19, :lo12:.LANCHOR3 - ldrh w0, [x2,1418] - madd w0, w21, w0, w20 - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + add x1, x19, :lo12:.LANCHOR3 + ldrh w0, [x1, 1410] + madd w0, w0, w21, w20 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret +.L1083: + sub w0, w0, w3 + add x2, x2, 48 + and w0, w0, 65535 + b .L1084 .size ftl_get_ppa_from_index, .-ftl_get_ppa_from_index .align 2 .global lpa_hash_get_ppa .type lpa_hash_get_ppa, %function lpa_hash_get_ppa: adrp x1, .LANCHOR3 - mov w3, 65535 add x1, x1, :lo12:.LANCHOR3 - add x2, x1, w0, uxtb 1 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldrh w2, [x2,1424] - ldr x4, [x1,1936] - ldr x5, [x1,1944] -.L1087: - cmp w2, w3 - beq .L1091 - uxtw x1, w2 - ldr w6, [x4,x1,lsl 2] - cmp w6, w0 - bne .L1088 - mov w0, w2 - bl ftl_get_ppa_from_index - b .L1089 + and x3, x0, 255 + add x2, x1, 1416 + ldr x4, [x1, 1928] + ldr x5, [x1, 1936] + ldrh w2, [x2, x3, lsl 1] + mov w3, 65535 .L1088: - ldrh w2, [x5,x1,lsl 1] - b .L1087 -.L1091: + cmp w2, w3 + bne .L1091 mov w0, -1 -.L1089: + ret +.L1091: + uxtw x1, w2 + ldr w6, [x4, x1, lsl 2] + cmp w0, w6 + bne .L1089 + stp x29, x30, [sp, -16]! + mov w0, w2 + add x29, sp, 0 + bl ftl_get_ppa_from_index ldp x29, x30, [sp], 16 ret +.L1089: + ldrh w2, [x5, x1, lsl 1] + b .L1088 .size lpa_hash_get_ppa, .-lpa_hash_get_ppa .align 2 .global ftl_get_new_free_page @@ -6947,97 +6736,95 @@ lpa_hash_get_ppa: ftl_get_new_free_page: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov x19, x0 ldrh w1, [x0] mov w0, 65535 cmp w1, w0 - bne .L1093 - adrp x1, .LANCHOR1 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 2088 - add x1, x1, 1872 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L1093: - adrp x20, .LANCHOR3 - ldrh w1, [x19,2] - add x0, x20, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] - cmp w1, w0 - bne .L1094 - adrp x1, .LANCHOR1 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 2089 - add x1, x1, 1872 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L1094: - ldrh w0, [x19,6] - cbnz w0, .L1095 - adrp x1, .LANCHOR1 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 2090 - add x1, x1, 1872 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L1095: - ldrb w0, [x19,5] - add x1, x20, :lo12:.LANCHOR3 - add x0, x0, 8 - ldrb w2, [x1,1329] - mov w1, 65535 - ldrh w0, [x19,x0,lsl 1] -.L1096: - cmp w0, w1 - bne .L1100 - ldrb w0, [x19,5] - add w0, w0, 1 - uxtb w0, w0 - strb w0, [x19,5] - cmp w0, w2 bne .L1097 - ldrh w0, [x19,2] - strb wzr, [x19,5] - add w0, w0, 1 - strh w0, [x19,2] + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1856 + mov w2, 2088 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack .L1097: - ldrb w0, [x19,5] - add x0, x0, 8 - ldrh w0, [x19,x0,lsl 1] - b .L1096 -.L1100: - add x20, x20, :lo12:.LANCHOR3 - ldrh w2, [x19,2] - ldrh w1, [x20,1418] - ldrb w3, [x20,1329] - mul w0, w0, w1 - ldrh w1, [x19,6] - orr w0, w0, w2 - sub w1, w1, #1 - strh w1, [x19,6] - ldrh w1, [x19,10] - add w1, w1, 1 - strh w1, [x19,10] - ldrb w1, [x19,5] - add w1, w1, 1 - uxtb w1, w1 - strb w1, [x19,5] - cmp w3, w1 - bne .L1099 - add w2, w2, 1 - strb wzr, [x19,5] - strh w2, [x19,2] + adrp x20, .LANCHOR3 + add x0, x20, :lo12:.LANCHOR3 + ldrh w1, [x19, 2] + ldrh w0, [x0, 1376] + cmp w1, w0 + bne .L1098 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1856 + mov w2, 2089 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L1098: + ldrh w0, [x19, 6] + cbnz w0, .L1099 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1856 + mov w2, 2090 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack .L1099: - ldp x19, x20, [sp,16] + ldrb w0, [x19, 5] + mov w2, 65535 + add x0, x0, 8 + ldrh w3, [x19, x0, lsl 1] + add x0, x20, :lo12:.LANCHOR3 + ldrb w4, [x0, 1321] +.L1100: + cmp w3, w2 + ldrb w1, [x19, 5] + beq .L1102 + add x20, x20, :lo12:.LANCHOR3 + add w1, w1, 1 + and w1, w1, 255 + ldrh w2, [x19, 2] + strb w1, [x19, 5] + cmp w4, w1 + ldrh w0, [x20, 1410] + mul w0, w0, w3 + ldrh w3, [x19, 6] + sub w3, w3, #1 + strh w3, [x19, 6] + ldrh w3, [x19, 10] + orr w0, w0, w2 + add w3, w3, 1 + strh w3, [x19, 10] + bne .L1096 + add w2, w2, 1 + strb wzr, [x19, 5] + strh w2, [x19, 2] +.L1096: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L1102: + add w1, w1, 1 + and w1, w1, 255 + strb w1, [x19, 5] + cmp w1, w4 + bne .L1101 + ldrh w0, [x19, 2] + strb wzr, [x19, 5] + add w0, w0, 1 + strh w0, [x19, 2] +.L1101: + ldrb w0, [x19, 5] + add x0, x0, 8 + ldrh w3, [x19, x0, lsl 1] + b .L1100 .size ftl_get_new_free_page, .-ftl_get_new_free_page .align 2 .global ftl_ext_alloc_new_blk @@ -7045,36 +6832,36 @@ ftl_get_new_free_page: ftl_ext_alloc_new_blk: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] bl ftl_alloc_sys_blk - uxth w0, w0 - mov w20, w0 + and w0, w0, 65535 mov w1, 65533 + mov w20, w0 sub w0, w0, #1 cmp w1, w0, uxth - bcs .L1102 + bcs .L1106 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1880 mov w2, 2125 - add x1, x1, 1896 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1102: +.L1106: adrp x19, .LANCHOR0 - mov w1, 0 add x19, x19, :lo12:.LANCHOR0 + mov w1, 0 mov w0, w20 bl ftl_erase_phy_blk - ldr x0, [x19,3392] - ldrh w0, [x0,130] + ldr x0, [x19, 3384] + ldrh w0, [x0, 130] bl ftl_free_sys_blk - ldr x0, [x19,3392] - strh w20, [x0,130] - strh wzr, [x0,140] + ldr x0, [x19, 3384] + strh w20, [x0, 130] + strh wzr, [x0, 140] mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_ext_alloc_new_blk, .-ftl_ext_alloc_new_blk @@ -7084,88 +6871,88 @@ ftl_ext_alloc_new_blk: ftl_total_vpn_update: adrp x1, .LANCHOR3 add x3, x1, :lo12:.LANCHOR3 - ldrh w2, [x3,1952] - cbnz w0, .L1104 + ldrh w2, [x3, 1944] cmp w2, 4 - bhi .L1104 + bhi .L1109 + cbnz w0, .L1109 add w2, w2, 1 - strh w2, [x3,1952] - b .L1103 -.L1104: + strh w2, [x3, 1944] + ret +.L1109: add x1, x1, :lo12:.LANCHOR3 adrp x0, .LANCHOR0 + mov x2, 0 + mov w3, 0 mov w9, 65535 - strh wzr, [x1,1952] + strh wzr, [x1, 1944] add x1, x0, :lo12:.LANCHOR0 - ldrh w6, [x1,1088] - ldr x7, [x1,1112] - ldr x8, [x1,1096] - mov x1, 0 - mov w2, w1 - mov w3, w1 -.L1106: - cmp w6, w1, uxth - bls .L1114 - ldrh w4, [x7,x1,lsl 1] + ldrh w6, [x1, 1096] + ldr x8, [x1, 1104] + ldr x7, [x1, 1120] + mov w1, 0 +.L1111: + cmp w6, w2, uxth + bhi .L1114 + add x0, x0, :lo12:.LANCHOR0 + ldr x2, [x0, 1128] + ldr x0, [x0, 3384] + str w3, [x2, 524] + str w1, [x2, 528] + ldrh w0, [x0, 120] + cbz w0, .L1108 + udiv w1, w1, w0 + str w1, [x2, 532] +.L1108: + ret +.L1114: + ldrh w4, [x7, x2, lsl 1] cmp w4, w9 - beq .L1107 - add x5, x8, x1, lsl 2 - ldrb w5, [x5,2] + beq .L1112 + add x5, x8, x2, lsl 2 + ldrb w5, [x5, 2] and w5, w5, 224 cmp w5, 160 - bne .L1108 - add w2, w2, w4 - b .L1107 -.L1108: + bne .L1113 + add w1, w1, w4 +.L1112: + add x2, x2, 1 + b .L1111 +.L1113: add w3, w3, w4 -.L1107: - add x1, x1, 1 - b .L1106 -.L1114: - add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0,1120] - ldr x0, [x0,3392] - str w3, [x1,524] - str w2, [x1,528] - ldrh w0, [x0,120] - cbz w0, .L1103 - udiv w2, w2, w0 - str w2, [x1,532] -.L1103: - ret + b .L1112 .size ftl_total_vpn_update, .-ftl_total_vpn_update .align 2 .global ftl_debug_info_fill .type ftl_debug_info_fill, %function ftl_debug_info_fill: - adrp x3, .LANCHOR0+3360 - uxtb w0, w0 - stp x29, x30, [sp, -32]! - add x29, sp, 0 - ldrb w3, [x3,#:lo12:.LANCHOR0+3360] - str x19, [sp,16] + adrp x3, .LANCHOR3+1946 + ldrb w3, [x3, #:lo12:.LANCHOR3+1946] cmp w3, 8 - bls .L1116 - cmp w0, 2 - bne .L1117 - cbz x2, .L1117 + bls .L1123 + and w0, w0, 255 + cmp x2, 0 + ccmp w0, 2, 0, ne + bne .L1121 + stp x29, x30, [sp, -32]! + mov x0, x2 + add x29, sp, 0 + str x19, [sp, 16] mov x19, x1 mov w1, 21320 movk w1, 0x4841, lsl 16 - mov x0, x2 str w1, [x19] mov w1, 1024 bl js_hash - str w0, [x19,4] - b .L1116 -.L1117: - str wzr, [x1] - str wzr, [x1,4] -.L1116: + str w0, [x19, 4] mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L1121: + stp wzr, wzr, [x1] +.L1123: + mov w0, 0 + ret .size ftl_debug_info_fill, .-ftl_debug_info_fill .align 2 .global ftl_vpn_update @@ -7173,88 +6960,88 @@ ftl_debug_info_fill: ftl_vpn_update: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - uxth w19, w0 + str x19, [sp, 16] + and w19, w0, 65535 mov w0, w19 - ubfiz x19, x19, 1, 16 bl zftl_list_update_data_list adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - ldr x0, [x1,1112] - ldrh w2, [x0,x19] - mov w0, 0 - cbnz w2, .L1125 + ubfiz x19, x19, 1, 16 + ldr x0, [x1, 1120] + ldrh w0, [x0, x19] + cbnz w0, .L1128 mov w0, 1 - str w0, [x1,3412] -.L1125: - ldr x19, [sp,16] + str w0, [x1, 3396] +.L1126: + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L1128: + mov w0, 0 + b .L1126 .size ftl_vpn_update, .-ftl_vpn_update .align 2 .global ftl_vpn_decrement .type ftl_vpn_decrement, %function ftl_vpn_decrement: - stp x29, x30, [sp, -48]! - uxth w1, w0 - mov w0, 65535 + stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] - cmp w1, w0 - beq .L1128 + stp x19, x20, [sp, 16] + and w20, w0, 65535 + mov w0, 65535 + cmp w20, w0 + beq .L1131 adrp x2, .LANCHOR0 - uxtw x0, w1 add x2, x2, :lo12:.LANCHOR0 - lsl x3, x0, 1 - ldr x4, [x2,1112] - ldrh w19, [x4,x3] - cbnz w19, .L1129 - ldr x2, [x2,1096] - add x0, x2, x0, lsl 2 - mov w2, w19 - ldrb w3, [x0,2] - adrp x0, .LC109 - add x0, x0, :lo12:.LC109 + uxtw x1, w20 + lsl x3, x1, 1 + ldr x4, [x2, 1120] + ldrh w0, [x4, x3] + cbnz w0, .L1132 + ldr x0, [x2, 1104] + mov w2, 0 + add x1, x0, x1, lsl 2 + adrp x0, .LC106 + add x0, x0, :lo12:.LC106 + ldrb w3, [x1, 2] + mov w1, w20 ubfx x3, x3, 5, 3 bl printk - b .L1135 -.L1129: - sub w19, w19, #1 - strh w19, [x4,x3] -.L1128: - adrp x19, .LANCHOR3 - mov w0, 0 - add x19, x19, :lo12:.LANCHOR3 - ldrh w2, [x19,1288] - cmp w2, w1 - beq .L1130 - mov w0, 65535 - cmp w2, w0 - bne .L1131 - strh w1, [x19,1288] -.L1135: +.L1137: mov w0, 0 b .L1130 +.L1132: + sub w0, w0, #1 + strh w0, [x4, x3] .L1131: - mov w0, w2 - str x1, [x29,40] + adrp x19, .LANCHOR3 + add x19, x19, :lo12:.LANCHOR3 + ldrh w0, [x19, 1280] + cmp w20, w0 + beq .L1137 + mov w1, 65535 + cmp w0, w1 + bne .L1134 + strh w20, [x19, 1280] + b .L1137 +.L1134: bl ftl_vpn_update - cmp w0, wzr - ldrh w3, [x19,1954] + cmp w0, 0 + ldrh w2, [x19, 1948] cset w0, ne - ldrh w2, [x19,1288] - add w3, w3, 1 - ldr x1, [x29,40] - strh w1, [x19,1288] - uxth w3, w3 - cmp w3, 7 - csel w3, w3, wzr, ls - strh w3, [x19,1954] - add x3, x19, w3, uxth 1 - strh w2, [x3,1296] + add x1, x19, 1288 + ldrh w3, [x19, 1280] + add w2, w2, 1 + strh w20, [x19, 1280] + and w2, w2, 65535 + cmp w2, 7 + csel w2, w2, wzr, ls + strh w2, [x19, 1948] + and x2, x2, 65535 + strh w3, [x1, x2, lsl 1] .L1130: - ldr x19, [sp,16] - ldp x29, x30, [sp], 48 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size ftl_vpn_decrement, .-ftl_vpn_decrement .align 2 @@ -7262,82 +7049,82 @@ ftl_vpn_decrement: .type lpa_hash_update_ppa, %function lpa_hash_update_ppa: adrp x3, .LANCHOR3 - uxtb w5, w0 add x6, x3, :lo12:.LANCHOR3 - uxth w2, w2 - add x4, x6, 1424 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr x8, [x6,1936] - ldr x12, [x6,1944] + add x5, x6, 1416 + and x4, x0, 255 + and w2, w2, 65535 + ldr x10, [x6, 1928] + ldrh w5, [x5, x4, lsl 1] + ldr x11, [x6, 1936] mov w6, 65535 - ldrh w4, [x4,w5,sxtw 1] - mov w11, w6 -.L1137: - cmp w4, w11 - beq .L1141 - uxtw x9, w4 - uxth x7, w4 - lsl x10, x9, 2 - add x13, x8, x10 - ldr w10, [x8,x10] - cmp w10, w0 - bne .L1138 - mov w4, -1 - str w4, [x13] - mov w4, 65535 - cmp w6, w4 - add x4, x3, :lo12:.LANCHOR3 - bne .L1139 - ldr x6, [x4,1944] - add x4, x4, 1424 - ldrh w6, [x6,x7,lsl 1] - strh w6, [x4,w5,sxtw 1] - b .L1140 -.L1139: - ldr x4, [x4,1944] - ldrh w8, [x4,x7,lsl 1] - strh w8, [x4,w6,uxtw 1] + mov w9, w6 .L1140: - add x4, x3, :lo12:.LANCHOR3 + cmp w5, w9 + beq .L1144 + uxtw x8, w5 + lsl x7, x8, 2 + add x12, x10, x7 + ldr w7, [x10, x7] + cmp w0, w7 + lsl x7, x8, 1 + bne .L1141 + mov w5, -1 + str w5, [x12] + cmp w6, w9 + add x5, x3, :lo12:.LANCHOR3 + bne .L1142 + ldr x6, [x5, 1936] + add x5, x5, 1416 + ldrh w6, [x6, x7] + strh w6, [x5, x4, lsl 1] +.L1143: + add x5, x3, :lo12:.LANCHOR3 mov w6, -1 - ldr x4, [x4,1944] - strh w6, [x4,x7,lsl 1] - b .L1141 -.L1138: - mov w6, w4 - ldrh w4, [x12,x9,lsl 1] - b .L1137 -.L1141: + ldr x5, [x5, 1936] + strh w6, [x5, x8, lsl 1] +.L1144: add x3, x3, :lo12:.LANCHOR3 - uxtw x4, w2 + uxtw x5, w2 cmn w1, #1 - ldr x6, [x3,1936] - str w0, [x6,x4,lsl 2] - add x0, x3, 1424 - ldrh w6, [x0,w5,sxtw 1] - strh w2, [x0,w5,sxtw 1] - ldr x0, [x3,1944] - strh w6, [x0,x4,lsl 1] - beq .L1143 - adrp x2, .LANCHOR0+1257 - ldrh w0, [x3,1312] - lsr w1, w1, w0 - ldrb w4, [x2,#:lo12:.LANCHOR0+1257] - mov w2, 24 - sub w2, w2, w4 - mov w4, 1 - sub w2, w2, w0 - ldrb w0, [x3,1314] - lsl w2, w4, w2 - sub w2, w2, #1 - and w1, w2, w1 + ldr x6, [x3, 1928] + str w0, [x6, x5, lsl 2] + add x0, x3, 1416 + ldrh w6, [x0, x4, lsl 1] + strh w2, [x0, x4, lsl 1] + ldr x0, [x3, 1936] + strh w6, [x0, x5, lsl 1] + beq .L1151 + stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR0+1205 + add x29, sp, 0 + ldrb w2, [x0, #:lo12:.LANCHOR0+1205] + mov w0, 24 + ldrh w4, [x3, 1304] + sub w0, w0, w2 + sub w2, w0, w4 + mov w0, 1 + lsr w1, w1, w4 + lsl w0, w0, w2 + sub w0, w0, #1 + and w1, w0, w1 + ldrb w0, [x3, 1306] udiv w0, w1, w0 bl ftl_vpn_decrement -.L1143: mov w0, -1 ldp x29, x30, [sp], 16 ret +.L1142: + ldr x5, [x5, 1936] + ldrh w7, [x5, x7] + strh w7, [x5, w6, uxtw 1] + b .L1143 +.L1141: + mov w6, w5 + ldrh w5, [x11, x7] + b .L1140 +.L1151: + mov w0, -1 + ret .size lpa_hash_update_ppa, .-lpa_hash_update_ppa .align 2 .global ftl_mask_bad_block @@ -7345,64 +7132,64 @@ lpa_hash_update_ppa: ftl_mask_bad_block: stp x29, x30, [sp, -48]! adrp x6, .LANCHOR0 - mov w4, 1 - add x29, sp, 0 add x1, x6, :lo12:.LANCHOR0 - mov w3, 24 - stp x19, x20, [sp,16] - str x21, [sp,32] - adrp x7, .LANCHOR3 - add x7, x7, :lo12:.LANCHOR3 + adrp x3, .LANCHOR3 + add x29, sp, 0 + stp x19, x20, [sp, 16] + add x3, x3, :lo12:.LANCHOR3 + str x21, [sp, 32] + mov w7, 24 + mov w4, 1 mov x19, x6 - ldrb w1, [x1,1257] - sub w3, w3, w1 + ldrb w1, [x1, 1205] + ldrb w5, [x3, 1306] + ldrh w3, [x3, 1304] + sub w7, w7, w1 lsl w1, w4, w1 - lsr w2, w0, w3 sub w1, w1, #1 + lsr w2, w0, w7 and w1, w1, w2 - ldrb w5, [x7,1314] - uxtb w1, w1 + lsr w0, w0, w3 + sub w3, w7, w3 + and w1, w1, 255 cmp w5, 1 - mul w2, w1, w5 - uxtb w20, w2 - ldrh w2, [x7,1312] - sub w3, w3, w2 - lsr w0, w0, w2 lsl w3, w4, w3 sub w3, w3, #1 and w3, w3, w0 - uxth w4, w3 + and w4, w3, 65535 + mul w2, w1, w5 udiv w3, w3, w5 - uxth w21, w3 - bls .L1148 - sub w5, w5, #1 - and w5, w4, w5 - add w2, w20, w5 - uxtb w20, w2 -.L1148: + and w20, w2, 255 + and w21, w3, 65535 + bls .L1155 + sub w2, w5, #1 + and w2, w2, w4 + add w2, w20, w2 + and w20, w2, 255 +.L1155: adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 14, .L1149 - adrp x0, .LC110 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 14, .L1156 + adrp x0, .LC107 + and w3, w3, 65535 mov w2, w20 - add x0, x0, :lo12:.LC110 - uxth w3, w3 + add x0, x0, :lo12:.LC107 bl printk -.L1149: +.L1156: add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0,1088] + ldrh w1, [x0, 1096] cmp w1, w21 - bls .L1147 - ldr x0, [x0,1096] + bls .L1154 + ldr x0, [x0, 1104] mov w2, 1 - add x21, x0, w21, uxth 2 - ldrb w0, [x21,3] lsl w2, w2, w20 - orr w2, w2, w0 - strb w2, [x21,3] -.L1147: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + add x21, x0, w21, uxth 2 + ldrb w20, [x21, 3] + orr w2, w2, w20 + strb w2, [x21, 3] +.L1154: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size ftl_mask_bad_block, .-ftl_mask_bad_block @@ -7410,112 +7197,109 @@ ftl_mask_bad_block: .global gc_free_bad_sblk .type gc_free_bad_sblk, %function gc_free_bad_sblk: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x23, x24, [sp,48] - uxth w24, w0 - add x0, x20, :lo12:.LANCHOR0 - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - mov w27, 0 - ldr w0, [x0,5624] - cbz w0, .L1171 - adrp x22, .LANCHOR3 - adrp x21, .LC111 - add x0, x21, :lo12:.LC111 - mov x23, x22 - mov w25, 24 - str x0, [x29,104] -.L1172: - add x2, x22, :lo12:.LANCHOR3 - ldrb w0, [x2,1329] - cmp w0, w27 - bls .L1171 - add x4, x20, :lo12:.LANCHOR0 - ldrb w3, [x2,1314] - ldrh w2, [x2,1312] - cmp w3, 1 - ldrb w19, [x4,1257] - uxth w1, w3 - sdiv w0, w27, w3 - sub w19, w25, w19 - sub w19, w19, w2 - lsl w19, w0, w19 - madd w19, w24, w1, w19 - uxth w19, w19 - bls .L1156 - sub w1, w1, #1 - and w1, w27, w1 - add w19, w19, w1 - uxth w19, w19 -.L1156: - add x21, x20, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + adrp x24, .LANCHOR0 + add x24, x24, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + and w22, w0, 65535 + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + ldr w0, [x24, 5616] + str x27, [sp, 80] + cbz w0, .L1177 + mov w23, 20041 + add x27, x24, 3416 mov w26, 0 - add x28, x21, 3424 -.L1157: - ldr w0, [x28,2200] - cmp w26, w0 - bcs .L1173 - add x0, x28, w26, sxtw 1 - ldrh w0, [x0,2204] + movk w23, 0x444b, lsl 16 +.L1164: + adrp x21, .LANCHOR3 + add x2, x21, :lo12:.LANCHOR3 + ldrb w0, [x2, 1321] + cmp w0, w26 + bhi .L1174 +.L1177: + mov w0, 0 + 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 +.L1174: + ldrb w3, [x2, 1306] + mov w1, 24 + ldrb w4, [x24, 1205] + ldrh w2, [x2, 1304] + and w0, w3, 65535 + sub w1, w1, w4 + cmp w3, 1 + sdiv w19, w26, w3 + sub w1, w1, w2 + lsl w19, w19, w1 + madd w19, w22, w0, w19 + and w19, w19, 65535 + bls .L1165 + sub w0, w0, #1 + and w0, w0, w26 + add w19, w19, w0 + and w19, w19, 65535 +.L1165: + adrp x25, .LC108 + add x25, x25, :lo12:.LC108 + mov w20, 0 +.L1166: + ldr w0, [x27, 2200] + cmp w20, w0 + bcc .L1173 + add w26, w26, 1 + and w26, w26, 65535 + b .L1164 +.L1173: + add x0, x27, w20, sxtw 1 + ldrh w0, [x0, 2204] cmp w0, w19 - bne .L1158 - ldr x0, [x29,104] + bne .L1167 mov w1, w19 + mov x0, x25 bl printk - add x0, x23, :lo12:.LANCHOR3 - ldrb w1, [x0,1956] - cbnz w1, .L1159 - ldrb w0, [x0,1330] - cbz w0, .L1160 -.L1159: - ldr x0, [x21,3392] - ldr w1, [x0,156] - mov w0, 20041 - movk w0, 0x444b, lsl 16 - cmp w1, w0 - beq .L1161 -.L1160: - add x0, x23, :lo12:.LANCHOR3 - ldrh w0, [x0,1312] + add x0, x21, :lo12:.LANCHOR3 + ldrb w1, [x0, 1950] + cbnz w1, .L1168 + ldrb w0, [x0, 1322] + cbz w0, .L1169 +.L1168: + ldr x0, [x24, 3384] + ldr w0, [x0, 156] + cmp w0, w23 + beq .L1170 +.L1169: + add x0, x21, :lo12:.LANCHOR3 + ldrh w0, [x0, 1304] lsl w0, w19, w0 bl ftl_mask_bad_block -.L1161: - ldr w1, [x28,2200] - mov w0, w26 -.L1162: - cmp w0, w1 - bcs .L1174 - add w2, w0, 1 - add x0, x28, w0, sxtw 1 - add x4, x28, w2, sxtw 1 - ldrh w4, [x4,2204] - strh w4, [x0,2204] - uxth w0, w2 - b .L1162 -.L1174: - sub w1, w1, #1 - str w1, [x28,2200] -.L1158: - add w26, w26, 1 - uxth w26, w26 - b .L1157 -.L1173: - add w27, w27, 1 - uxth w27, w27 - b .L1172 +.L1170: + ldr w1, [x27, 2200] + mov w0, w20 .L1171: - 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], 112 - ret + cmp w0, w1 + bcc .L1172 + sub w1, w1, #1 + str w1, [x27, 2200] +.L1167: + add w20, w20, 1 + and w20, w20, 65535 + b .L1166 +.L1172: + add w2, w0, 1 + add x0, x27, w0, sxtw 1 + add x3, x27, w2, sxtw 1 + ldrh w3, [x3, 2204] + strh w3, [x0, 2204] + and w0, w2, 65535 + b .L1171 .size gc_free_bad_sblk, .-gc_free_bad_sblk .align 2 .global ftl_free_sblk @@ -7523,202 +7307,201 @@ gc_free_bad_sblk: ftl_free_sblk: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - add x4, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxth x24, w0 - ldr x5, [x4,1096] + add x3, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + and x24, x0, 65535 lsl x19, x24, 2 mov x22, x24 - add x21, x5, x19 - ldrb w2, [x21,2] - ubfx x23, x2, 5, 3 - tbz x2, 3, .L1176 - ldr x6, [x4,3392] - ldrh w0, [x5,x19] - ldr w3, [x5,x19] - ldrh w7, [x6,74] - and w1, w0, 2047 - ldrh w6, [x6,72] - ubfx x8, x3, 11, 8 - add w7, w1, w7 - ldrh w3, [x4,1104] - add w6, w8, w6 - uxth w0, w7 - uxth w7, w6 - adrp x6, .LANCHOR3 - add x6, x6, :lo12:.LANCHOR3 - udiv w9, w0, w3 - ldrh w10, [x6,1958] - add w9, w7, w9 + ldr x4, [x3, 1104] + add x21, x4, x19 + ldrb w0, [x21, 2] + ubfx x23, x0, 5, 3 + tbz x0, 3, .L1184 + ldr x5, [x3, 3384] + ldr w2, [x4, x19] + ldrh w1, [x4, x19] + ldrh w6, [x5, 74] + and w1, w1, 2047 + ubfx x7, x2, 11, 8 + ldrh w2, [x3, 1112] + add w6, w1, w6 + and w8, w6, 65535 + ldrh w6, [x5, 72] + adrp x5, .LANCHOR3 + add x5, x5, :lo12:.LANCHOR3 + add w6, w7, w6 + udiv w9, w8, w2 + and w6, w6, 65535 + ldrh w10, [x5, 1952] + add w9, w9, w6 cmp w9, w10 - ble .L1177 - ldrh w0, [x4,3378] - ldrh w7, [x4,3386] - add w7, w7, w0 - ldrh w0, [x6,1390] - add w0, w0, 8 - cmp w7, w0 - blt .L1183 - ldrh w0, [x4,3376] - ldrh w7, [x4,3382] - add w7, w7, w0 - ldrh w0, [x4,3384] - add w4, w7, w0 - ldrh w0, [x6,1388] - add w0, w0, 8 - cmp w4, w0 - b .L1197 -.L1177: - madd w7, w7, w3, w0 - ldrh w0, [x6,1960] - cmp w7, w0 - ble .L1179 - ldrh w0, [x4,3376] - ldrh w7, [x4,3382] - add w7, w7, w0 - ldrh w0, [x4,3384] - add w7, w7, w0 - ldrh w0, [x6,1388] - add w9, w0, 8 - cmp w7, w9 - blt .L1195 - ldrh w9, [x4,3386] - ldrh w4, [x4,3378] - add w9, w9, w4 - ldrh w4, [x6,1390] - add w4, w4, 8 - cmp w9, w4 - blt .L1183 - add w0, w0, 24 - cmp w7, w0 -.L1197: - bge .L1183 -.L1195: - and w2, w2, -25 - b .L1194 -.L1183: - mov w0, 2 - bfi w2, w0, 3, 2 -.L1194: - strb w2, [x21,2] -.L1179: - ldrb w0, [x21,2] - ands w0, w0, 24 - bne .L1184 - mul w0, w8, w3 - lsr w3, w8, 3 - add w0, w0, w0, lsl 1 - add w0, w1, w0, lsr 2 - ldrh w1, [x5,x19] - bfi w1, w0, 0, 11 - strh w1, [x5,x19] - ldr w0, [x5,x19] - bfi w0, w3, 11, 8 - str w0, [x5,x19] - b .L1185 -.L1184: - cmp w0, 16 - bne .L1185 - sdiv w3, w1, w3 - ldr w0, [x5,x19] - add w3, w3, w3, lsl 1 - add w3, w8, w3, lsr 2 - bfi w0, w3, 11, 8 - asr w3, w1, 5 - str w0, [x5,x19] - bfi w0, w3, 0, 11 - strh w0, [x5,x19] - b .L1185 -.L1176: - tst w2, 24 - bne .L1185 - ldrh w0, [x4,3380] - cbnz w0, .L1185 - ldrh w0, [x4,3378] - cmp w0, 15 - bhi .L1185 - ldrh w1, [x4,3376] - ldrh w6, [x4,3382] - add w6, w6, w1 - ldrh w1, [x4,3384] - add w6, w6, w1 - adrp x1, .LANCHOR3 - add x1, x1, :lo12:.LANCHOR3 - ldrh w3, [x1,1388] - add w3, w3, 16 - cmp w6, w3 ble .L1185 - ldrh w3, [x4,3386] - ldrh w1, [x1,1390] - add w0, w3, w0 - add w1, w1, 8 - cmp w0, w1 - bge .L1185 - mov w0, 2 - bfi w2, w0, 3, 2 - strb w2, [x21,2] - ldrh w2, [x4,1104] - ldrh w0, [x5,x19] - and w0, w0, 2047 - sdiv w2, w0, w2 - asr w0, w0, 5 - add w3, w2, w2, lsl 1 - ldr w2, [x5,x19] - ubfx x1, x2, 11, 8 - add w3, w1, w3, lsr 2 - bfi w2, w3, 11, 8 - str w2, [x5,x19] - bfi w2, w0, 0, 11 - strh w2, [x5,x19] + ldrh w6, [x3, 3370] + ldrh w8, [x3, 3378] + add w8, w8, w6 + ldrh w6, [x5, 1382] + add w6, w6, 8 + cmp w8, w6 + bge .L1186 +.L1191: + mov w3, 2 + bfi w0, w3, 3, 2 + b .L1203 +.L1186: + ldrh w6, [x3, 3374] + ldrh w8, [x3, 3368] + ldrh w5, [x5, 1380] + ldrh w3, [x3, 3376] + add w6, w6, w8 + add w5, w5, 8 + add w3, w6, w3 + cmp w3, w5 +.L1207: + bge .L1191 + b .L1205 .L1185: + madd w6, w2, w6, w8 + ldrh w8, [x5, 1954] + cmp w6, w8 + ble .L1187 + ldrh w8, [x3, 3368] + ldrh w6, [x3, 3374] + add w6, w6, w8 + ldrh w8, [x3, 3376] + add w6, w6, w8 + ldrh w8, [x5, 1380] + add w9, w8, 8 + cmp w6, w9 + bge .L1189 +.L1205: + and w0, w0, -25 +.L1203: + strb w0, [x21, 2] +.L1187: + ldrb w0, [x21, 2] + ands w0, w0, 24 + bne .L1192 + mul w2, w7, w2 + ldrh w0, [x4, x19] + add w2, w2, w2, lsl 1 + add w1, w1, w2, lsr 2 + lsr w2, w7, 3 + bfi w0, w1, 0, 11 + strh w0, [x4, x19] + ldr w0, [x4, x19] + bfi w0, w2, 11, 8 + str w0, [x4, x19] +.L1193: mov w0, w22 - add w23, w23, 6 - and w23, w23, 7 bl zftl_remove_data_node add x1, x20, :lo12:.LANCHOR0 + add w23, w23, 6 + and w23, w23, 7 cmp w23, 4 - ldr x2, [x1,1096] - add x2, x2, x19 - ldrb w0, [x2,2] + ldr x0, [x1, 1104] + add x19, x0, x19 + ldrb w0, [x19, 2] and w0, w0, 31 - strb w0, [x2,2] - ldr x0, [x1,1112] - strh wzr, [x0,x24,lsl 1] - bhi .L1188 + strb w0, [x19, 2] + ldr x0, [x1, 1120] + strh wzr, [x0, x24, lsl 1] + bhi .L1196 mov w0, w22 bl gc_free_bad_sblk -.L1188: - ldrb w0, [x21,2] - tbz x0, 3, .L1189 +.L1196: + ldrb w0, [x21, 2] + tbz x0, 3, .L1197 add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20,1120] - ldrh w1, [x0,586] + ldr x0, [x20, 1128] + ldrh w1, [x0, 586] cmp w1, w22 - bne .L1189 + bne .L1197 mov w1, -1 - ldrh w2, [x0,590] - strh w1, [x0,586] + ldrh w2, [x0, 590] + strh w1, [x0, 586] mov w1, 65535 cmp w2, w1 - bne .L1189 - strh w22, [x0,590] - adrp x0, .LC112 + bne .L1197 + strh w22, [x0, 590] mov w1, w22 - add x0, x0, :lo12:.LC112 + adrp x0, .LC109 + add x0, x0, :lo12:.LC109 bl printk - b .L1175 -.L1189: - mov w0, w22 - bl zftl_insert_free_list -.L1175: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L1183: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L1189: + ldrh w9, [x3, 3378] + ldrh w3, [x3, 3370] + add w9, w9, w3 + ldrh w3, [x5, 1382] + add w3, w3, 8 + cmp w9, w3 + blt .L1191 + add w8, w8, 24 + cmp w6, w8 + b .L1207 +.L1192: + cmp w0, 16 + bne .L1193 + sdiv w2, w1, w2 + ldr w0, [x4, x19] + add w2, w2, w2, lsl 1 + add w2, w7, w2, lsr 2 +.L1204: + bfi w0, w2, 11, 8 + asr w1, w1, 5 + str w0, [x4, x19] + bfi w0, w1, 0, 11 + strh w0, [x4, x19] + b .L1193 +.L1184: + tst w0, 24 + bne .L1193 + ldrh w1, [x3, 3372] + cbnz w1, .L1193 + ldrh w7, [x3, 3370] + cmp w7, 15 + bhi .L1193 + ldrh w2, [x3, 3368] + ldrh w1, [x3, 3374] + add w1, w1, w2 + ldrh w2, [x3, 3376] + add w1, w1, w2 + adrp x2, .LANCHOR3 + add x2, x2, :lo12:.LANCHOR3 + ldrh w6, [x2, 1380] + add w6, w6, 16 + cmp w1, w6 + ble .L1193 + ldrh w5, [x3, 3378] + ldrh w1, [x2, 1382] + add w5, w5, w7 + add w1, w1, 8 + cmp w5, w1 + bge .L1193 + mov w1, 2 + bfi w0, w1, 3, 2 + strb w0, [x21, 2] + ldrh w0, [x3, 1112] + ldrh w1, [x4, x19] + and w1, w1, 2047 + sdiv w0, w1, w0 + add w2, w0, w0, lsl 1 + ldr w0, [x4, x19] + ubfx x3, x0, 11, 8 + add w2, w3, w2, lsr 2 + b .L1204 +.L1197: + mov w0, w22 + bl zftl_insert_free_list + b .L1183 .size ftl_free_sblk, .-ftl_free_sblk .align 2 .global gc_free_src_blk @@ -7726,234 +7509,231 @@ ftl_free_sblk: 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] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] + add x24, x22, :lo12:.LANCHOR0 + adrp x23, .LC110 + add x21, x24, 3416 + add x23, x23, :lo12:.LC110 + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] mov w20, 0 - add x24, x23, 3424 - add x21, x21, 1920 -.L1199: - ldrh w0, [x24,56] - adrp x25, .LANCHOR0 +.L1209: + ldrh w0, [x21, 56] cmp w0, w20 - bls .L1237 - add x0, x24, w20, sxtw 1 - ldrh w22, [x0,58] - ldr x0, [x23,1112] - lsl x26, x22, 1 - mov x19, x22 - ldrh w2, [x0,x26] - cbz w2, .L1200 - adrp x0, .LC113 - mov w1, w22 - add x0, x0, :lo12:.LC113 + bhi .L1224 + strh wzr, [x21, 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 +.L1224: + add x0, x21, w20, sxtw 1 + ldrh w25, [x0, 58] + ldr x0, [x24, 1120] + mov x19, x25 + lsl x26, x25, 1 + ldrh w2, [x0, x26] + cbz w2, .L1210 + mov w1, w25 + mov x0, x23 bl printk -.L1200: - add x0, x25, :lo12:.LANCHOR0 - ldr x1, [x0,1112] - strh wzr, [x1,x26] - ldr x1, [x0,1112] - ldrh w1, [x1,x26] - cbnz w1, .L1201 - ldr x0, [x0,1096] - add x22, x0, x22, lsl 2 +.L1210: + add x0, x22, :lo12:.LANCHOR0 + ldr x1, [x0, 1120] + strh wzr, [x1, x26] + ldr x1, [x0, 1120] + ldrh w1, [x1, x26] + cbnz w1, .L1211 + ldr x0, [x0, 1104] + add x25, x0, x25, lsl 2 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L1202 - ldrb w2, [x22,2] - adrp x0, .LC114 - add x0, x0, :lo12:.LC114 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L1212 + ldrb w2, [x25, 2] + adrp x0, .LC111 mov w1, w19 + add x0, x0, :lo12:.LC111 ubfx x2, x2, 5, 3 bl printk -.L1202: - ldrb w0, [x22,2] +.L1212: + ldrb w0, [x25, 2] + and w1, w0, 224 + cmp w1, 224 + beq .L1213 tst w0, 192 - beq .L1215 - and w0, w0, 224 - cmp w0, 224 - bne .L1203 -.L1215: - adrp x0, .LC0 - mov x1, x21 + bne .L1214 +.L1213: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 1904 mov w2, 1363 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1203: +.L1214: mov w0, w19 - add x25, x25, :lo12:.LANCHOR0 bl ftl_free_sblk - ldr x2, [x25,1120] - ldrh w1, [x2,124] - cbz w1, .L1205 - mov x0, 0 -.L1207: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,392] + add x0, x22, :lo12:.LANCHOR0 + ldr x0, [x0, 1128] + ldrh w2, [x0, 124] + cbz w2, .L1215 + add x3, x0, 392 + mov w1, 0 +.L1217: + ldrh w4, [x3] cmp w4, w19 - bne .L1206 - add x0, x2, w3, sxtw 1 + bne .L1216 + add x1, x0, w1, sxtw 1 mov w3, -1 - strh w3, [x0,392] - sub w1, w1, #1 - strh w1, [x2,124] - b .L1205 -.L1206: - add x0, x0, 1 - cmp x0, 64 - bne .L1207 -.L1205: - ldrh w1, [x2,120] - cbz w1, .L1208 - mov x0, 0 -.L1210: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,136] + sub w2, w2, #1 + strh w3, [x1, 392] + strh w2, [x0, 124] +.L1215: + ldrh w2, [x0, 120] + cbz w2, .L1218 + add x3, x0, 136 + mov w1, 0 +.L1220: + ldrh w4, [x3] cmp w4, w19 - bne .L1209 - add x0, x2, w3, sxtw 1 + bne .L1219 + add x1, x0, w1, sxtw 1 mov w3, -1 - strh w3, [x0,136] - sub w1, w1, #1 - strh w1, [x2,120] - b .L1208 -.L1209: - add x0, x0, 1 - cmp x0, 64 - bne .L1210 -.L1208: - ldrh w1, [x2,122] - cbz w1, .L1211 - mov x0, 0 -.L1213: - add x4, x2, x0, lsl 1 - mov w3, w0 - ldrh w4, [x4,264] + sub w2, w2, #1 + strh w3, [x1, 136] + strh w2, [x0, 120] +.L1218: + ldrh w2, [x0, 122] + cbz w2, .L1221 + add x3, x0, 264 + mov w1, 0 +.L1223: + ldrh w4, [x3] cmp w4, w19 - bne .L1212 - add x0, x2, w3, sxtw 1 + bne .L1222 + add x1, x0, w1, sxtw 1 mov w3, -1 - strh w3, [x0,264] - sub w1, w1, #1 - strh w1, [x2,122] - b .L1211 -.L1212: - add x0, x0, 1 - cmp x0, 64 - bne .L1213 - b .L1211 -.L1201: - mov w0, w19 - mov w1, 1 - mov w2, 0 - bl gc_add_sblk -.L1211: + sub w2, w2, #1 + strh w3, [x1, 264] + strh w2, [x0, 122] +.L1221: add w20, w20, 1 - uxth w20, w20 - b .L1199 -.L1237: - 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 + and w20, w20, 65535 + b .L1209 +.L1216: + add w1, w1, 1 + add x3, x3, 2 + cmp w1, 64 + bne .L1217 + b .L1215 +.L1219: + add w1, w1, 1 + add x3, x3, 2 + cmp w1, 64 + bne .L1220 + b .L1218 +.L1222: + add w1, w1, 1 + add x3, x3, 2 + cmp w1, 64 + bne .L1223 + b .L1221 +.L1211: + mov w2, 0 + mov w1, 1 + mov w0, w19 + bl gc_add_sblk + b .L1221 .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: sub sp, sp, #64 - stp x29, x30, [sp,32] + stp x29, x30, [sp, 32] add x29, sp, 32 - str x19, [sp,48] + str x19, [sp, 48] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldr x2, [x19,3392] - ldr x0, [x19,1120] - ldrh w8, [x19,3386] - ldrh w1, [x2,148] - ldrh w2, [x2,146] - str w8, [sp] - ldrh w6, [x19,3382] - ldr w8, [x0,524] - str w8, [sp,8] - ldrh w7, [x19,3384] - ldr w0, [x0,528] - str w0, [sp,16] - ldr w0, [x19,3372] - ldrh w3, [x19,3376] - ldrh w4, [x19,3378] - ldrh w5, [x19,3380] - str w0, [sp,24] + ldr x1, [x19, 3384] + ldr x0, [x19, 1128] + ldr w8, [x19, 3364] + ldrh w7, [x19, 3376] + ldrh w2, [x1, 146] + ldrh w1, [x1, 148] + str w8, [sp, 24] + ldrh w6, [x19, 3374] + ldr w8, [x0, 528] + str w8, [sp, 16] + ldrh w5, [x19, 3372] + ldr w0, [x0, 524] + ldrh w4, [x19, 3370] + ldrh w3, [x19, 3368] + str w0, [sp, 8] + ldrh w0, [x19, 3378] + str w0, [sp] + adrp x0, .LC112 + add x0, x0, :lo12:.LC112 + bl printk + ldr x0, [x19, 3384] + ldrb w3, [x19, 3380] + ldr w4, [x0, 8] + ldr w5, [x0, 64] + ldr w1, [x0, 20] + ldr w2, [x0, 28] + adrp x0, .LC113 + add x0, x0, :lo12:.LC113 + bl printk + ldr x0, [x19, 3384] + ldr w1, [x0, 52] + ldr w2, [x0, 60] + ldr w3, [x0, 16] + adrp x0, .LC114 + add x0, x0, :lo12:.LC114 + lsr w3, w3, 11 + bl printk + ldr x0, [x19, 3384] + ldrh w2, [x0, 98] + ldrh w6, [x0, 72] + ldrh w5, [x0, 96] + ldrh w4, [x0, 92] + ldrh w3, [x0, 88] + ldrh w1, [x0, 74] + str w2, [sp, 16] + ldrh w2, [x0, 94] + str w2, [sp, 8] + ldrh w2, [x0, 90] + str w2, [sp] + ldp w7, w2, [x0, 80] adrp x0, .LC115 add x0, x0, :lo12:.LC115 bl printk - ldr x5, [x19,3392] + ldrh w5, [x19, 3392] adrp x0, .LC116 - ldrb w3, [x19,3389] + ldrh w4, [x19, 3400] add x0, x0, :lo12:.LC116 - ldr w4, [x5,8] - ldr w1, [x5,20] - ldr w2, [x5,28] - ldr w5, [x5,64] + ldrh w3, [x19, 3402] + ldrh w2, [x19, 3404] + ldrh w1, [x19, 3406] bl printk - ldr x2, [x19,3392] + ldr x0, [x19, 1128] + ldr x1, [x19, 3384] + ldrh w4, [x0, 590] + ldrh w6, [x1, 150] + ldrh w3, [x0, 588] + ldrh w2, [x0, 586] + ldr w5, [x1, 156] + ldrh w1, [x0, 584] adrp x0, .LC117 add x0, x0, :lo12:.LC117 - ldr w3, [x2,16] - ldr w1, [x2,52] - ldr w2, [x2,60] - lsr w3, w3, 11 bl printk - ldr x7, [x19,3392] - ldrh w0, [x7,90] - ldrh w6, [x7,72] - ldrh w1, [x7,74] - ldrh w3, [x7,88] - ldrh w4, [x7,92] - ldrh w5, [x7,96] - str w0, [sp] - ldrh w0, [x7,94] - str w0, [sp,8] - ldrh w0, [x7,98] - str w0, [sp,16] - adrp x0, .LC118 - add x0, x0, :lo12:.LC118 - ldr w2, [x7,84] - ldr w7, [x7,80] - bl printk - ldrh w1, [x19,3402] - adrp x0, .LC119 - ldrh w2, [x19,3404] - add x0, x0, :lo12:.LC119 - ldrh w3, [x19,3406] - ldrh w4, [x19,3408] - ldrh w5, [x19,3400] - bl printk - ldr x4, [x19,1120] - adrp x0, .LC120 - ldr x6, [x19,3392] - add x0, x0, :lo12:.LC120 - ldrh w1, [x4,584] - ldrh w2, [x4,586] - ldrh w3, [x4,588] - ldr w5, [x6,156] - ldrh w4, [x4,590] - ldrh w6, [x6,150] - bl printk - sub sp, x29, #32 - ldr x19, [sp,48] - ldp x29, x30, [sp,32] + ldr x19, [sp, 48] + ldp x29, x30, [sp, 32] add sp, sp, 64 ret .size print_ftl_debug_info, .-print_ftl_debug_info @@ -7963,200 +7743,197 @@ print_ftl_debug_info: ftl_write_buf: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov x20, x0 - cbnz x0, .L1240 + stp x19, x20, [sp, 16] + str x21, [sp, 32] + cbnz x0, .L1250 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 810 - add x1, x1, 1936 + add x1, x1, 1920 + mov w2, 811 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack bl print_ftl_debug_info mov w0, -1 +.L1249: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L1253: + add x19, x19, :lo12:.LANCHOR0 + mov x1, x20 + add x0, x19, 3408 + bl buf_add_tail + ldrb w3, [x20, 56] + ldr x1, [x19, 3384] + ldrb w0, [x19, 3381] + add w0, w0, 1 + ldr w2, [x1, 16] + and w0, w0, 255 + strb w0, [x19, 3381] + add w2, w2, w3 + str w2, [x1, 16] + ldr w2, [x1, 32] + add w2, w2, 1 + str w2, [x1, 32] b .L1249 -.L1240: - adrp x19, .LANCHOR0 - ldrb w1, [x20,56] - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,3360] - cmp w1, w0 - bls .L1245 +.L1250: + mov x20, x0 + adrp x0, .LANCHOR3 + add x1, x0, :lo12:.LANCHOR3 + mov x21, x0 + ldrb w2, [x20, 56] + ldrb w1, [x1, 1946] + cmp w2, w1 + bls .L1255 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 817 - add x1, x1, 1936 + add x1, x1, 1920 + mov w2, 818 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1245: - ldrb w0, [x20,56] - cbz w0, .L1242 - add x21, x19, :lo12:.LANCHOR0 - ldrb w1, [x21,3360] - cmp w1, w0 - bcs .L1243 -.L1242: - mov x0, x20 +.L1255: + ldrb w1, [x20, 56] + adrp x19, .LANCHOR0 + cbz w1, .L1252 + add x0, x21, :lo12:.LANCHOR3 + ldrb w0, [x0, 1946] + cmp w0, w1 + bcs .L1253 +.L1252: add x19, x19, :lo12:.LANCHOR0 + mov x0, x20 bl zbuf_free - ldrb w0, [x19,3388] + ldrb w0, [x19, 3381] b .L1249 -.L1243: - add x0, x21, 3416 - mov x1, x20 - bl buf_add_tail - ldr x0, [x21,3392] - ldrb w1, [x20,56] - ldrb w2, [x21,3388] - ldr w3, [x0,16] - add w2, w2, 1 - add w1, w3, w1 - str w1, [x0,16] - ldr w1, [x0,32] - uxtb w2, w2 - strb w2, [x21,3388] - add w1, w1, 1 - str w1, [x0,32] - mov w0, w2 -.L1249: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] - ldp x29, x30, [sp], 48 - ret .size ftl_write_buf, .-ftl_write_buf .align 2 .global ftl_write_completed .type ftl_write_completed, %function ftl_write_completed: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - add x21, x19, 1312 - mov x20, x19 - stp x23, x24, [sp,48] - mov x22, x21 - mov w23, 0 -.L1251: - ldrb w2, [x19,3366] - cmp w2, 255 - beq .L1266 - lsl x0, x2, 6 - add x24, x21, x0 - ldrb w0, [x21,x0] - strb w0, [x19,3366] - ldr w0, [x24,52] - cmn w0, #1 - bne .L1252 - adrp x0, .LANCHOR3 - add x1, x0, :lo12:.LANCHOR3 - ldrb w3, [x1,1956] - cbnz w3, .L1253 - ldrb w1, [x1,1330] - cbz w1, .L1254 -.L1253: - ldr x1, [x20,3392] - ldr w3, [x1,156] - mov w1, 20041 - movk w1, 0x444b, lsl 16 - cmp w3, w1 - beq .L1255 -.L1254: - add x0, x0, :lo12:.LANCHOR3 - ldrb w4, [x20,1257] - mov w3, 24 - add x5, x22, x2, lsl 6 - sub w4, w3, w4 - mov w3, 1 - ldrh w1, [x0,1312] - add x5, x5, 32 - ldrb w0, [x0,1314] - sub w4, w4, w1 - lsl w4, w3, w4 - ldr w3, [x5,8] - sub w4, w4, #1 - lsr w1, w3, w1 - mov w3, 65535 - and w1, w4, w1 - udiv w1, w1, w0 - ldr x0, [x20,1120] - ldr w4, [x0,560] - cmp w4, w3 - uxth w23, w1 - and w1, w1, w3 - bne .L1256 - str w1, [x0,560] - ldr w3, [x5,8] - str w3, [x0,564] -.L1256: - add x2, x22, x2, lsl 6 - adrp x0, .LC121 - add x3, x2, 32 - add x0, x0, :lo12:.LC121 - ldr w2, [x2,36] - ldr w3, [x3,8] - bl printk - ldr x0, [x20,1120] - ldr w1, [x0,556] - add w1, w1, 1 - str w1, [x0,556] - ldrh w1, [x0,16] - cmp w1, w23 - bne .L1257 - strh wzr, [x0,22] - b .L1255 -.L1257: - ldrh w1, [x0,48] - cmp w1, w23 - bne .L1255 - strh wzr, [x0,54] -.L1255: - mov x0, x24 - mov w23, 1 - bl ftl_write_buf - b .L1251 -.L1252: - cmp w23, 1 - add x2, x24, 32 - bne .L1260 - ldr w1, [x2,4] - adrp x0, .LC122 - ldr w2, [x2,8] - add x0, x0, :lo12:.LC122 - bl printk - mov x0, x24 - bl ftl_write_buf - b .L1251 -.L1260: - ldr w0, [x2,4] - ldr w1, [x2,12] - ldrh w2, [x24,48] - bl lpa_hash_update_ppa - ldrb w0, [x24,2] - and w23, w0, 4 - uxtb w23, w23 - cbz w23, .L1261 - and w0, w0, -3 - mov w23, 0 - strb w0, [x24,2] - b .L1251 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + stp x19, x20, [sp, 16] + add x19, x21, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + add x22, x19, 1304 + mov w23, 20041 + str x25, [sp, 64] + movk w23, 0x444b, lsl 16 + mov w25, 0 .L1261: - mov x0, x24 - bl zbuf_free - b .L1251 -.L1266: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 + add x1, x21, :lo12:.LANCHOR0 + ldrb w0, [x1, 3357] + cmp w0, 255 + bne .L1272 + 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 +.L1272: + add x2, x1, 1304 + lsl x3, x0, 6 + add x24, x2, x3 + ubfiz x20, x0, 6, 8 + add x20, x2, x20 + ldrb w2, [x2, x3] + strb w2, [x1, 3357] + ldr w1, [x24, 52] + cmn w1, #1 + bne .L1262 + adrp x2, .LANCHOR3 + add x1, x2, :lo12:.LANCHOR3 + ldrb w3, [x1, 1950] + cbnz w3, .L1263 + ldrb w1, [x1, 1322] + cbz w1, .L1264 +.L1263: + ldr x1, [x19, 3384] + ldr w1, [x1, 156] + cmp w1, w23 + beq .L1265 +.L1264: + add x2, x2, :lo12:.LANCHOR3 + ldrb w3, [x19, 1205] + mov w1, 24 + add x4, x22, x0, lsl 6 + sub w1, w1, w3 + ldrh w5, [x2, 1304] + ldrb w2, [x2, 1306] + sub w3, w1, w5 + mov w1, 1 + lsl w1, w1, w3 + ldr w3, [x4, 40] + sub w1, w1, #1 + lsr w3, w3, w5 + and w1, w1, w3 + mov w3, 65535 + udiv w1, w1, w2 + ldr x2, [x19, 1128] + ldr w5, [x2, 560] + and w24, w1, 65535 + and w1, w1, w3 + cmp w5, w3 + bne .L1266 + str w1, [x2, 560] + ldr w3, [x4, 40] + str w3, [x2, 564] +.L1266: + add x0, x22, x0, lsl 6 + ldp w2, w3, [x0, 36] + adrp x0, .LC118 + add x0, x0, :lo12:.LC118 + bl printk + ldr x0, [x19, 1128] + ldr w1, [x0, 556] + add w1, w1, 1 + str w1, [x0, 556] + ldrh w1, [x0, 16] + cmp w1, w24 + bne .L1267 + strh wzr, [x0, 22] +.L1265: + mov x0, x20 + mov w25, 1 + bl ftl_write_buf + b .L1261 +.L1267: + ldrh w1, [x0, 48] + cmp w1, w24 + bne .L1265 + strh wzr, [x0, 54] + b .L1265 +.L1262: + cbz w25, .L1270 + ldp w1, w2, [x24, 36] + adrp x0, .LC119 + add x0, x0, :lo12:.LC119 + bl printk + mov x0, x20 + bl ftl_write_buf + b .L1261 +.L1270: + ldrh w2, [x24, 48] + ldr w0, [x24, 36] + ldr w1, [x24, 44] + bl lpa_hash_update_ppa + ldrb w0, [x24, 2] + tbz x0, 2, .L1271 + and w0, w0, -3 + strb w0, [x24, 2] + b .L1261 +.L1271: + mov x0, x20 + bl zbuf_free + b .L1261 .size ftl_write_completed, .-ftl_write_completed .align 2 .global zftl_add_read_buf @@ -8164,58 +7941,58 @@ ftl_write_completed: zftl_add_read_buf: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov x20, x0 - cbnz x0, .L1268 + stp x19, x20, [sp, 16] + cbnz x0, .L1278 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1150 - add x1, x1, 1952 + add x1, x1, 1936 + mov w2, 1151 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack bl print_ftl_debug_info - b .L1267 -.L1268: - ldrb w1, [x0,56] - adrp x0, .LANCHOR0+3360 - ldrb w0, [x0,#:lo12:.LANCHOR0+3360] +.L1277: + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L1278: + mov x20, x0 + adrp x19, .LANCHOR3 + add x0, x19, :lo12:.LANCHOR3 + ldrb w1, [x20, 56] + ldrb w0, [x0, 1946] cmp w1, w0 - bls .L1271 + bls .L1281 adrp x1, .LANCHOR1 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1157 - add x1, x1, 1952 + add x1, x1, 1936 + mov w2, 1158 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1271: - adrp x19, .LANCHOR3 - mov x1, x20 +.L1281: add x19, x19, :lo12:.LANCHOR3 - add x0, x19, 1962 + mov x1, x20 + add x0, x19, 1956 bl buf_add_tail - ldrb w0, [x19,1963] + ldrb w0, [x19, 1957] add w0, w0, 1 - strb w0, [x19,1963] -.L1267: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - ret + strb w0, [x19, 1957] + b .L1277 .size zftl_add_read_buf, .-zftl_add_read_buf .align 2 .global sblk_init .type sblk_init, %function sblk_init: adrp x0, .LANCHOR0 - mov w1, -1 add x0, x0, :lo12:.LANCHOR0 - strb w1, [x0,3363] - strb w1, [x0,3366] - strb w1, [x0,3364] - strb w1, [x0,3365] + mov w1, -1 + strb w1, [x0, 3354] + strb w1, [x0, 3357] + strb w1, [x0, 3355] + strb w1, [x0, 3356] mov w0, 0 ret .size sblk_init, .-sblk_init @@ -8224,38 +8001,38 @@ sblk_init: .type dump_sblk_queue, %function dump_sblk_queue: stp x29, x30, [sp, -48]! - adrp x0, .LC123 + adrp x0, .LC120 + add x0, x0, :lo12:.LC120 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x21, [sp,32] add x20, x20, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC123 - ldrb w1, [x20,3363] + str x21, [sp, 32] + ldrb w1, [x20, 3354] bl printk - ldrb w19, [x20,3363] + ldrb w19, [x20, 3354] cmp w19, 255 - beq .L1273 - add x20, x20, 1312 - sbfiz x19, x19, 6, 32 - adrp x21, .LC124 + beq .L1284 + add x20, x20, 1304 + ubfiz x19, x19, 6, 8 + adrp x21, .LC121 add x19, x20, x19 - add x21, x21, :lo12:.LC124 -.L1275: - ldrb w1, [x19,1] + add x21, x21, :lo12:.LC121 +.L1286: + ldrb w2, [x19, 58] mov x0, x21 - ldrb w2, [x19,58] - ldr w3, [x19,40] + ldrb w1, [x19, 1] + ldr w3, [x19, 40] bl printk ldrb w19, [x19] cmp w19, 255 - beq .L1273 - sbfiz x19, x19, 6, 32 + beq .L1284 + ubfiz x19, x19, 6, 8 add x19, x20, x19 - b .L1275 -.L1273: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + b .L1286 +.L1284: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size dump_sblk_queue, .-dump_sblk_queue @@ -8263,87 +8040,88 @@ dump_sblk_queue: .global queue_lun_state .type queue_lun_state, %function queue_lun_state: - adrp x3, .LANCHOR0 - mov w4, w0 - add x3, x3, :lo12:.LANCHOR0 - mov w0, 0 - ldrb w2, [x3,3363] + adrp x5, .LANCHOR0 + add x5, x5, :lo12:.LANCHOR0 + ldrb w2, [x5, 3354] cmp w2, 255 - beq .L1283 - ldrb w5, [x3,1257] - mov w0, 1 - mov w8, 24 - adrp x13, .L1286 - sub w8, w8, w5 - lsl w5, w0, w5 - sub w5, w5, #1 - asr w10, w4, w8 - add x3, x3, 1312 - add x13, x13, :lo12:.L1286 - uxth w7, w5 - adrp x5, .LANCHOR3 - add x5, x5, :lo12:.LANCHOR3 - and w10, w7, w10 - ldrh w11, [x5,1312] - ldrb w12, [x5,1314] - sub w6, w8, w11 - asr w4, w4, w11 - lsl w0, w0, w6 - sub w12, w12, #1 - sub w0, w0, #1 - uxth w12, w12 - uxth w9, w0 - and w4, w4, w12 - and w4, w4, w9 -.L1289: - add x6, x3, x2, lsl 6 - ldr w5, [x6,40] - lsr w0, w5, w8 - and w0, w7, w0 - cmp w0, w10 - bne .L1284 - lsr w5, w5, w11 - ldrb w0, [x6,58] - and w5, w12, w5 - and w5, w9, w5 - cmp w5, w4 - bne .L1285 + beq .L1302 + adrp x6, .LANCHOR3 + add x6, x6, :lo12:.LANCHOR3 + ldrb w3, [x5, 1205] + mov w9, 24 + mov w4, 1 + adrp x12, .L1298 + ldrh w11, [x6, 1304] + sub w9, w9, w3 + ldrb w8, [x6, 1306] + lsl w3, w4, w3 + sub w7, w9, w11 + sub w3, w3, #1 + sub w8, w8, #1 + and w3, w3, 65535 + lsl w4, w4, w7 + and w8, w8, 65535 + sub w4, w4, #1 + asr w6, w0, w11 + and w4, w4, 65535 + and w6, w6, w8 + asr w10, w0, w9 + and w6, w6, w4 + and w10, w10, w3 + add x5, x5, 1304 + add x12, x12, :lo12:.L1298 +.L1301: + add x13, x5, x2, lsl 6 + ldr w7, [x13, 40] + lsr w0, w7, w9 + and w0, w3, w0 + cmp w10, w0 + bne .L1296 + lsr w7, w7, w11 + and w7, w8, w7 + and w7, w4, w7 + ldrb w0, [x13, 58] + cmp w6, w7 + bne .L1297 cmp w1, 1 - beq .L1287 - b .L1283 -.L1285: + bne .L1294 + cmp w0, 7 + ccmp w0, 9, 4, ne + beq .L1296 + ret +.L1297: cmp w1, 3 - bhi .L1284 - ldrb w5, [x13,w1,uxtw] - adr x6, .Lrtx1286 - add x5, x6, w5, sxtb #2 - br x5 -.Lrtx1286: + bhi .L1296 + ldrb w7, [x12,w1,uxtw] + adr x13, .Lrtx1298 + add x7, x13, w7, sxtb #2 + br x7 +.Lrtx1298: .section .rodata .align 0 .align 2 -.L1286: - .byte (.L1283 - .Lrtx1286) / 4 - .byte (.L1287 - .Lrtx1286) / 4 - .byte (.L1288 - .Lrtx1286) / 4 - .byte (.L1283 - .Lrtx1286) / 4 +.L1298: + .byte (.L1294 - .Lrtx1298) / 4 + .byte (.L1299 - .Lrtx1298) / 4 + .byte (.L1300 - .Lrtx1298) / 4 + .byte (.L1294 - .Lrtx1298) / 4 .text -.L1287: - sub w6, w0, #7 - and w6, w6, -3 - uxtb w6, w6 - cbz w6, .L1284 - b .L1283 -.L1288: +.L1299: + cmp w0, 7 + ccmp w0, 9, 4, ne + beq .L1296 + ret +.L1300: cmp w0, 11 - bne .L1283 -.L1284: + bne .L1294 +.L1296: lsl x2, x2, 6 - ldrb w2, [x3,x2] + ldrb w2, [x5, x2] cmp w2, 255 - bne .L1289 + bne .L1301 +.L1302: mov w0, 0 -.L1283: +.L1294: ret .size queue_lun_state, .-queue_lun_state .align 2 @@ -8351,85 +8129,83 @@ queue_lun_state: .type queue_remove_completed_req, %function queue_remove_completed_req: adrp x3, .LANCHOR0 - mov w5, 0 add x0, x3, :lo12:.LANCHOR0 + add x4, x0, 1304 + add x12, x0, 3355 + add x13, x0, 3356 + add x14, x0, 3357 + ldrb w7, [x0, 3354] + mov w5, 0 + ldrb w9, [x0, 3355] mov w11, -1 - add x4, x0, 1312 - add x12, x0, 3364 - add x13, x0, 3365 - add x14, x0, 3366 - ldrb w7, [x0,3363] - ldrb w9, [x0,3364] - ldrb w8, [x0,3365] - ldrb w10, [x0,3366] -.L1299: + ldrb w10, [x0, 3357] + ldrb w8, [x0, 3356] +.L1305: cmp w7, 255 - beq .L1300 + beq .L1306 sbfiz x6, x7, 6, 32 sxtw x1, w7 add x2, x4, x6 - ldrb w2, [x2,58] + ldrb w2, [x2, 58] sub w2, w2, #12 - uxtb w2, w2 + and w2, w2, 255 cmp w2, 1 - bls .L1301 - cbz w5, .L1298 - strb w7, [x0,3363] - b .L1298 -.L1301: + bls .L1307 + cbz w5, .L1304 + strb w7, [x0, 3354] + ret +.L1307: lsl x5, x1, 6 - ldrb w7, [x4,x6] + ldrb w7, [x4, x6] add x2, x4, x5 - strb w11, [x4,x5] - ldrb w5, [x2,59] + strb w11, [x4, x5] + ldrb w5, [x2, 59] cmp w5, 1 - bne .L1304 - ldrh w2, [x2,50] - cbnz w2, .L1312 + bne .L1310 + ldrh w2, [x2, 50] + cbnz w2, .L1318 mov w2, w10 mov x5, x14 - b .L1305 -.L1304: - cbz w5, .L1322 -.L1306: - mov w5, 1 - b .L1299 -.L1322: - ldr w2, [x2,36] - cmn w2, #1 - beq .L1306 - mov w2, w9 - mov x5, x12 - b .L1305 -.L1312: - mov w2, w8 - mov x5, x13 -.L1305: +.L1311: cmp w2, 255 - bne .L1310 + bne .L1316 add x3, x3, :lo12:.LANCHOR0 add x1, x3, x1, lsl 6 - strb w7, [x3,3363] - ldrb w0, [x1,1313] + strb w7, [x3, 3354] + ldrb w0, [x1, 1305] strb w0, [x5] - b .L1298 + ret .L1310: + cbnz w5, .L1312 + ldr w2, [x2, 36] + cmn w2, #1 + beq .L1312 + mov w2, w9 + mov x5, x12 + b .L1311 +.L1318: + mov w2, w8 + mov x5, x13 + b .L1311 +.L1316: mov w5, w2 sbfiz x2, x2, 6, 32 - ldrb w2, [x4,x2] + ldrb w2, [x4, x2] cmp w2, 255 - bne .L1310 + bne .L1316 add x1, x4, x1, lsl 6 sbfiz x5, x5, 6, 32 - ldrb w1, [x1,1] - strb w1, [x4,x5] - b .L1306 -.L1300: - cbz w5, .L1298 + ldrb w1, [x1, 1] + strb w1, [x4, x5] +.L1312: + mov w5, 1 + b .L1305 +.L1306: + cbz w5, .L1304 add x3, x3, :lo12:.LANCHOR0 mov w0, -1 - strb w0, [x3,3363] -.L1298: + strb w0, [x3, 3354] +.L1304: ret .size queue_remove_completed_req, .-queue_remove_completed_req .align 2 @@ -8437,74 +8213,72 @@ queue_remove_completed_req: .type pm_select_ram_region, %function pm_select_ram_region: stp x29, x30, [sp, -32]! - adrp x2, .LANCHOR3 - mov w3, 65535 + adrp x1, .LANCHOR3 + add x0, x1, :lo12:.LANCHOR3 + mov x2, 0 add x29, sp, 0 - str x19, [sp,16] - add x2, x2, :lo12:.LANCHOR3 - mov x19, 0 -.L1325: - add x1, x2, 1968 - lsl x4, x19, 4 - uxth w0, w19 - ldrh w4, [x4,x1] - cmp w4, w3 - beq .L1324 - add x19, x19, 1 - cmp x19, 32 - bne .L1325 - mov x0, 0 - mov w3, 32768 -.L1327: - add x2, x1, x0, lsl 4 - uxth w4, w0 - ldrh w2, [x2,2] - tbnz x2, 15, .L1326 - cmp w2, w3 - bcs .L1326 - mov w3, w2 - mov w19, w4 -.L1326: - add x0, x0, 1 - cmp x0, 32 - bne .L1327 + add x3, x0, 1960 + mov w4, 65535 + str x19, [sp, 16] +.L1330: + lsl x5, x2, 4 + and w19, w2, 65535 + ldrh w5, [x5, x3] + cmp w5, w4 + beq .L1329 + add x2, x2, 1 + cmp x2, 32 + bne .L1330 + add x0, x0, 1962 + mov w19, w2 + mov x3, x0 + mov w5, 32768 + mov w2, 0 +.L1332: + ldrh w4, [x3] + tbnz x4, 15, .L1331 + cmp w4, w5 + bcs .L1331 + mov w5, w4 + mov w19, w2 +.L1331: + add w2, w2, 1 + add x3, x3, 16 + and w2, w2, 65535 + cmp w2, 32 + bne .L1332 cmp w19, 32 - mov w0, w19 - bne .L1324 - adrp x0, .LANCHOR3 + bne .L1329 + add x1, x1, :lo12:.LANCHOR3 mov w2, -1 - add x0, x0, :lo12:.LANCHOR3 + ldrb w3, [x1, 2472] mov w1, 0 - add x0, x0, 1968 - ldrb w3, [x0,512] -.L1329: - ldrh w5, [x0,2] +.L1334: + ldrh w5, [x0] cmp w5, w2 - bcs .L1328 - ldrh w4, [x0] + bcs .L1333 + ldrh w4, [x0, -2] cmp w4, w3 csel w2, w2, w5, eq - cmp w4, w3 csel w19, w19, w1, eq -.L1328: +.L1333: add w1, w1, 1 add x0, x0, 16 - uxth w1, w1 + and w1, w1, 65535 cmp w1, 32 - bne .L1329 + bne .L1334 cmp w19, 32 - bne .L1330 - adrp x0, .LC0 + bne .L1329 adrp x1, .LANCHOR4 add x1, x1, :lo12:.LANCHOR4 mov w2, 377 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1330: +.L1329: mov w0, w19 -.L1324: - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size pm_select_ram_region, .-pm_select_ram_region @@ -8525,401 +8299,381 @@ ftl_memset: flash_lsb_page_tbl_build: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - str x21, [sp,32] add x1, x19, :lo12:.LANCHOR0 - mov w21, 1024 - ldr x2, [x1,1144] - ldrb w2, [x2,12] - sdiv w21, w21, w2 - cbnz w0, .L1338 + str x21, [sp, 32] + mov w20, 1024 + ldr x2, [x1, 1144] + ldrb w2, [x2, 12] + sdiv w20, w20, w2 + cbnz w0, .L1342 + add x1, x1, 4 mov x0, 0 -.L1339: - add x2, x1, 4 - strh w0, [x2,x0,lsl 1] +.L1343: + strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 512 - bne .L1339 -.L1345: - adrp x20, .LANCHOR3 - mov w1, 255 - add x20, x20, :lo12:.LANCHOR3 - mov w2, 2048 - add x20, x20, 2484 + bne .L1343 +.L1349: + adrp x21, .LANCHOR3 + add x21, x21, :lo12:.LANCHOR3 + add x21, x21, 2476 add x19, x19, :lo12:.LANCHOR0 - mov x0, x20 + mov w2, 2048 + mov w1, 255 + mov x0, x21 + add x19, x19, 4 bl ftl_memset mov x0, 0 - b .L1340 -.L1338: - cmp w0, 1 - bne .L1341 - mov x0, 0 - mov w4, 3 - mov w5, 2 .L1344: - cmp x0, 3 - uxth w3, w0 - mov w2, w3 - bls .L1342 - ubfiz w2, w3, 1, 15 - and w3, w3, 1 - cmp w3, wzr - csel w3, w4, w5, ne - sub w2, w2, w3 - uxth w2, w2 -.L1342: - add x3, x1, 4 - strh w2, [x3,x0,lsl 1] + ldrh w1, [x19, x0, lsl 1] add x0, x0, 1 - cmp x0, 512 - bne .L1344 - b .L1345 -.L1341: - cmp w0, 2 - bne .L1346 - mov w2, 65535 - mov x0, 0 -.L1348: - add x4, x1, 4 - cmp x0, 1 - uxth w3, w0 - csel w3, w2, w3, hi - add w2, w2, 2 - strh w3, [x4,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - uxth w2, w2 - bne .L1348 - b .L1345 -.L1346: - cmp w0, 3 - bne .L1349 - mov x0, 0 - mov w4, 5 - mov w5, 4 -.L1352: - cmp x0, 5 - uxth w3, w0 - mov w2, w3 - bls .L1350 - ubfiz w2, w3, 1, 15 - and w3, w3, 1 - cmp w3, wzr - csel w3, w4, w5, ne - sub w2, w2, w3 - uxth w2, w2 -.L1350: - add x3, x1, 4 - strh w2, [x3,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L1352 - b .L1345 -.L1349: - cmp w0, 4 - bne .L1353 - add x2, x1, 4 - strh w0, [x2,8] - mov w0, 5 - strh wzr, [x1,4] - mov w1, 1 - mov w5, 7 - strh w0, [x2,10] - mov w0, 7 - strh w1, [x2,2] - mov w1, 2 - strh w0, [x2,12] - mov w0, 8 - strh w1, [x2,4] - mov w4, 6 - mov w1, 3 - strh w0, [x2,14] - strh w1, [x2,6] - mov w0, 8 -.L1355: - and w3, w0, 1 - ubfiz w1, w0, 1, 15 - add w0, w0, 1 - cmp w3, wzr - csel w3, w5, w4, ne - add x2, x2, 2 - uxth w0, w0 - sub w1, w1, w3 - cmp w0, 512 - strh w1, [x2,14] - bne .L1355 - b .L1345 -.L1353: - cmp w0, 5 - bne .L1356 - mov x0, 0 -.L1357: - add x2, x1, 4 - strh w0, [x2,x0,lsl 1] - add x0, x0, 1 - cmp x0, 16 - bne .L1357 - mov x0, 0 -.L1358: - add x1, x2, x0 - add w3, w0, 16 - add x0, x0, 2 - cmp x0, 992 - strh w3, [x1,32] - bne .L1358 - b .L1345 -.L1356: - cmp w0, 8 - bne .L1359 - mov x0, 0 -.L1360: - add x2, x1, 4 - strh w0, [x0,x2] - add x0, x0, 2 - cmp x0, 1024 - bne .L1360 - b .L1345 -.L1359: - cmp w0, 9 - bne .L1361 - add x2, x1, 4 - mov w0, 1 - strh wzr, [x1,4] - strh w0, [x2,2] - mov w0, 2 - strh w0, [x2,4] - mov x0, 0 -.L1362: - add x1, x2, x0 - add w3, w0, 3 - add x0, x0, 2 - cmp x0, 1018 - strh w3, [x1,6] - bne .L1362 - b .L1345 -.L1361: - cmp w0, 10 - bne .L1363 - mov x0, 0 -.L1364: - add x2, x1, 4 - strh w0, [x2,x0,lsl 1] - add x0, x0, 1 - cmp x0, 63 - bne .L1364 - mov x0, 0 -.L1365: - add x1, x2, x0 - add w3, w0, 63 - add x0, x0, 2 - cmp x0, 898 - strh w3, [x1,126] - bne .L1365 - b .L1345 -.L1363: - cmp w0, 11 - bne .L1366 - mov x0, 0 - add x2, x19, :lo12:.LANCHOR0 -.L1367: - add x1, x2, 4 - strh w0, [x1,x0,lsl 1] - add x0, x0, 1 - cmp x0, 8 - bne .L1367 - mov w5, 7 - mov w4, 6 -.L1369: - and w3, w0, 1 - ubfiz w2, w0, 1, 15 - add w0, w0, 1 - cmp w3, wzr - csel w3, w5, w4, ne - add x1, x1, 2 - uxth w0, w0 - sub w2, w2, w3 - cmp w0, 512 - strh w2, [x1,14] - bne .L1369 - b .L1345 -.L1366: - cmp w0, 13 - bne .L1345 - mov x0, 0 - add x3, x19, :lo12:.LANCHOR0 -.L1370: - add x1, x3, 4 - add w2, w0, w0, lsl 1 - strh w2, [x1,x0,lsl 1] - add x0, x0, 1 - cmp x0, 512 - bne .L1370 - b .L1345 -.L1340: - cmp w21, w0, uxth - bls .L1393 - add x1, x19, 4 - ldrh w1, [x1,x0,lsl 1] - add x0, x0, 1 - strh w1, [x20,w1,sxtw 1] - b .L1340 -.L1393: - ldp x19, x20, [sp,16] - ldr x21, [sp,32] + cmp w20, w0, uxth + strh w1, [x21, w1, sxtw 1] + bhi .L1344 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret +.L1342: + cmp w0, 1 + bne .L1345 + add x1, x1, 4 + mov x2, 0 +.L1348: + and w0, w2, 65535 + cmp x2, 3 + bls .L1346 + ubfiz w3, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 2 + sub w0, w3, w0 + and w0, w0, 65535 +.L1346: + strh w0, [x1, x2, lsl 1] + add x2, x2, 1 + cmp x2, 512 + bne .L1348 + b .L1349 +.L1345: + cmp w0, 2 + bne .L1350 + add x1, x1, 4 + mov w2, 65535 + mov x0, 0 +.L1352: + cmp x0, 2 + and w3, w0, 65535 + csel w3, w3, w2, cc + strh w3, [x1, x0, lsl 1] + add w2, w2, 2 + add x0, x0, 1 + and w2, w2, 65535 + cmp x0, 512 + bne .L1352 + b .L1349 +.L1350: + cmp w0, 3 + bne .L1353 + add x1, x1, 4 + mov x2, 0 +.L1356: + and w0, w2, 65535 + cmp x2, 5 + bls .L1354 + ubfiz w3, w0, 1, 15 + and w0, w0, 1 + add w0, w0, 4 + sub w0, w3, w0 + and w0, w0, 65535 +.L1354: + strh w0, [x1, x2, lsl 1] + add x2, x2, 1 + cmp x2, 512 + bne .L1356 + b .L1349 +.L1353: + cmp w0, 4 + bne .L1357 + mov w3, 1 + strh w0, [x1, 12] + mov w0, 5 + strh w3, [x1, 6] + strh w0, [x1, 14] + mov w3, 2 + mov w0, 7 + strh w3, [x1, 8] + strh w0, [x1, 16] + mov w3, 3 + mov w0, 8 + strh wzr, [x1, 4] + strh w0, [x1, 18] + add x1, x1, 20 + strh w3, [x1, -10] + mov w0, 8 +.L1359: + and w3, w0, 1 + ubfiz w2, w0, 1, 15 + add w3, w3, 6 + add w0, w0, 1 + sub w2, w2, w3 + strh w2, [x1], 2 + and w0, w0, 65535 + cmp w0, 512 + bne .L1359 + b .L1349 +.L1357: + cmp w0, 5 + bne .L1360 + add x2, x1, 4 + mov x0, 0 +.L1361: + strh w0, [x2, x0, lsl 1] + add x0, x0, 1 + cmp x0, 16 + bne .L1361 + add x1, x1, 36 +.L1362: + strh w0, [x1], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 1008 + bne .L1362 + b .L1349 +.L1360: + cmp w0, 8 + bne .L1363 + add x1, x1, 4 + mov x0, 0 +.L1364: + strh w0, [x0, x1] + add x0, x0, 2 + cmp x0, 1024 + bne .L1364 + b .L1349 +.L1363: + cmp w0, 9 + bne .L1365 + mov w2, 1 + strh wzr, [x1, 4] + strh w2, [x1, 6] + mov w2, 2 + add x1, x1, 10 + strh w2, [x1, -2] + mov w0, 3 +.L1366: + strh w0, [x1], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 1021 + bne .L1366 + b .L1349 +.L1365: + cmp w0, 10 + bne .L1367 + add x2, x1, 4 + mov x0, 0 +.L1368: + strh w0, [x2, x0, lsl 1] + add x0, x0, 1 + cmp x0, 63 + bne .L1368 + add x1, x1, 130 +.L1369: + strh w0, [x1], 2 + add w0, w0, 2 + and w0, w0, 65535 + cmp w0, 961 + bne .L1369 + b .L1349 +.L1367: + cmp w0, 11 + bne .L1370 + add x1, x19, :lo12:.LANCHOR0 + mov x0, 0 + add x2, x1, 4 +.L1371: + strh w0, [x2, x0, lsl 1] + add x0, x0, 1 + cmp x0, 8 + bne .L1371 + add x1, x1, 20 +.L1373: + and w3, w0, 1 + ubfiz w2, w0, 1, 15 + add w3, w3, 6 + add w0, w0, 1 + sub w2, w2, w3 + strh w2, [x1], 2 + and w0, w0, 65535 + cmp w0, 512 + bne .L1373 + b .L1349 +.L1370: + cmp w0, 13 + bne .L1349 + add x2, x19, :lo12:.LANCHOR0 + mov x1, 0 + add x2, x2, 4 + mov w0, 0 +.L1374: + strh w0, [x1, x2] + add w0, w0, 3 + and w0, w0, 65535 + add x1, x1, 2 + cmp w0, 1536 + bne .L1374 + b .L1349 .size flash_lsb_page_tbl_build, .-flash_lsb_page_tbl_build .align 2 .global flash_die_info_init .type flash_die_info_init, %function flash_die_info_init: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR2 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w0, [x19,#:lo12:.LANCHOR2] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - tbz x0, 12, .L1395 + stp x21, x22, [sp, 32] + ldr w0, [x19, #:lo12:.LANCHOR2] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + tbz x0, 12, .L1397 adrp x1, .LANCHOR4 - adrp x0, .LC4 add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC4 + adrp x0, .LC4 add x1, x1, 24 + add x0, x0, :lo12:.LC4 bl printk -.L1395: +.L1397: add x24, x19, :lo12:.LANCHOR2 - adrp x21, .LANCHOR0 - add x20, x21, :lo12:.LANCHOR0 - adrp x22, .LANCHOR5 - add x25, x22, :lo12:.LANCHOR5 + adrp x22, .LANCHOR0 + add x20, x22, :lo12:.LANCHOR0 + adrp x21, .LANCHOR5 + add x23, x21, :lo12:.LANCHOR5 mov w2, 8 - ldrh w0, [x24,34] - mov x23, 0 - ldrb w1, [x24,20] - mov w26, 2 - strh w0, [x20,2] + ldrh w0, [x24, 34] + add x25, x20, 1208 + ldrb w1, [x24, 20] add x27, x24, 9 - ldrh w0, [x24,18] - add x28, x20, 1272 - strb wzr, [x20,1153] + strh w0, [x20, 2] + mov w26, 2 + ldrh w0, [x24, 18] + strb wzr, [x20, 1153] sdiv w0, w0, w1 mov w1, 0 - strh w0, [x25,180] - add x0, x20, 1248 + strh w0, [x23, 172] + add x0, x20, 1196 bl ftl_memset - add x0, x25, 184 - mov w1, 0 + add x0, x23, 176 + mov x23, 0 mov w2, 32 + mov w1, 0 bl ftl_memset -.L1397: - add x0, x20, 1264 - ldrb w2, [x24,8] - add x1, x28, x23, lsl 3 - strb w26, [x23,x0] +.L1399: + ldrb w2, [x24, 8] + add x7, x20, 1024 + strb w26, [x23, x25] + add x1, x20, 1216 + add x1, x1, x23, lsl 3 mov x0, x27 bl flash_mem_cmp8 - cbnz w0, .L1396 - ldrb w1, [x20,1153] - add x2, x25, 184 - str w0, [x2,w1,sxtw 2] - add w0, w1, 1 - strb w0, [x20,1153] - uxtb w0, w23 - add x1, x20, w1, sxtw - strb w0, [x1,1248] + cbnz w0, .L1398 + ldrb w2, [x20, 1153] + add x1, x21, :lo12:.LANCHOR5 + add x1, x1, 176 + add x7, x7, x2 + add w0, w2, 1 + strb w0, [x20, 1153] + and w0, w23, 255 + str wzr, [x1, x2, lsl 2] + strb w0, [x7, 172] bl zftl_flash_enter_slc_mode -.L1396: +.L1398: add x23, x23, 1 cmp x23, 4 - bne .L1397 + bne .L1399 add x0, x19, :lo12:.LANCHOR2 add x1, x0, 8 - ldrb w2, [x1,8] + ldrb w2, [x1, 8] cmp w2, 2 - beq .L1398 -.L1402: + beq .L1400 +.L1404: add x19, x19, :lo12:.LANCHOR2 - add x21, x21, :lo12:.LANCHOR0 - add x22, x22, :lo12:.LANCHOR5 - ldp x23, x24, [sp,48] - ldrb w1, [x19,21] - ldrb w0, [x21,1153] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] + add x22, x22, :lo12:.LANCHOR0 + add x21, x21, :lo12:.LANCHOR5 + ldr x27, [sp, 80] + ldp x23, x24, [sp, 48] + ldrb w1, [x19, 21] + ldrb w0, [x22, 1153] + ldp x25, x26, [sp, 64] mul w0, w0, w1 - ldrh w1, [x19,22] - ldp x19, x20, [sp,16] + ldrh w1, [x19, 22] + ldp x19, x20, [sp, 16] mul w0, w0, w1 - strh w0, [x22,216] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 112 + strh w0, [x21, 208] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 96 ret -.L1398: - add x23, x21, :lo12:.LANCHOR0 - ldrh w20, [x1,14] - ldrb w26, [x0,8] - mov x24, 0 - and w20, w20, 65280 - ldrb w27, [x1,23] - ldrh w2, [x23,2] - add x25, x0, 9 - add x3, x23, 1272 - add x4, x22, :lo12:.LANCHOR5 - mul w20, w20, w2 - ldrb w2, [x1,13] - mul w20, w20, w2 - lsl w28, w20, 1 -.L1401: - add x1, x3, x24, lsl 3 - mov x0, x25 - mov w2, w26 - str x4, [x29,96] - str x3, [x29,104] +.L1400: + add x8, x22, :lo12:.LANCHOR0 + ldrh w7, [x1, 14] + add x11, x21, :lo12:.LANCHOR5 + ldrb w12, [x0, 8] + and w7, w7, 65280 + ldrb w13, [x1, 23] + ldrh w2, [x8, 2] + add x15, x8, 1216 + add x10, x0, 9 + add x11, x11, 176 + add x18, x8, 1024 + mov x9, 0 + mul w7, w7, w2 + ldrb w2, [x1, 13] + mul w7, w7, w2 + lsl w14, w7, 1 +.L1403: + mov w2, w12 + add x1, x15, x9, lsl 3 + mov x0, x10 bl flash_mem_cmp8 - ldr x3, [x29,104] - ldr x4, [x29,96] - cbnz w0, .L1399 - ldrb w0, [x23,1153] - add x1, x4, 184 - cmp w27, wzr - csel w2, w20, w28, eq - str w2, [x1,w0,sxtw 2] + cbnz w0, .L1401 + ldrb w0, [x8, 1153] + cmp w13, 0 + csel w2, w7, w14, eq add w1, w0, 1 - add x0, x23, w0, sxtw - strb w1, [x23,1153] - strb w24, [x0,1248] -.L1399: - add x24, x24, 1 - cmp x24, 4 - bne .L1401 - b .L1402 + strb w1, [x8, 1153] + str w2, [x11, x0, lsl 2] + add x0, x18, x0 + strb w9, [x0, 172] +.L1401: + add x9, x9, 1 + cmp x9, 4 + bne .L1403 + b .L1404 .size flash_die_info_init, .-flash_die_info_init .align 2 .global lpa_hash_init .type lpa_hash_init, %function lpa_hash_init: stp x29, x30, [sp, -32]! - mov w1, 255 mov w2, 512 + mov w1, 255 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR3 add x19, x19, :lo12:.LANCHOR3 - add x0, x19, 1424 + add x0, x19, 1416 bl ftl_memset - ldrh w0, [x19,1384] mov w1, 255 - ldrb w2, [x19,1329] - mul w2, w0, w2 - ldr x0, [x19,1944] + ldrb w0, [x19, 1321] + ldrh w2, [x19, 1376] + mul w2, w2, w0 + ldr x0, [x19, 1936] lsl w2, w2, 2 bl ftl_memset - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size lpa_hash_init, .-lpa_hash_init @@ -8927,1346 +8681,1248 @@ lpa_hash_init: .global lpa_rebuild_hash .type lpa_rebuild_hash, %function lpa_rebuild_hash: - adrp x0, .LANCHOR2 stp x29, x30, [sp, -32]! + adrp x0, .LANCHOR2 add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2] - str x19, [sp,16] - tbz x0, 12, .L1413 + ldr w0, [x0, #:lo12:.LANCHOR2] + stp x19, x20, [sp, 16] + tbz x0, 12, .L1417 adrp x1, .LANCHOR4 - adrp x0, .LC125 add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC125 - add x1, x1, 48 - mov w2, 239 + adrp x0, .LC122 mov w3, 0 + mov w2, 239 + add x1, x1, 48 + add x0, x0, :lo12:.LC122 bl printk -.L1413: +.L1417: adrp x19, .LANCHOR3 - mov w1, 255 add x19, x19, :lo12:.LANCHOR3 + add x20, x19, 1416 mov w2, 512 - add x0, x19, 1424 - bl ftl_memset - ldrh w0, [x19,1384] mov w1, 255 - ldrb w2, [x19,1329] - mul w2, w0, w2 - ldr x0, [x19,1944] + mov x0, x20 + bl ftl_memset + ldrb w0, [x19, 1321] + mov w1, 255 + ldrh w2, [x19, 1376] + mul w2, w2, w0 + ldr x0, [x19, 1936] lsl w2, w2, 2 bl ftl_memset - mov w0, 0 -.L1414: - ldrh w1, [x19,1384] - ldrb w2, [x19,1329] - mul w1, w1, w2 - cmp w0, w1, lsl 1 - bge .L1423 - uxtw x2, w0 - ldr x1, [x19,1936] - ldr w1, [x1,x2,lsl 2] - cmn w1, #1 - beq .L1415 - uxtb w1, w1 - add x3, x19, 1424 - ldrh w4, [x3,w1,sxtw 1] - strh w0, [x3,w1,sxtw 1] - ldr x1, [x19,1944] - strh w4, [x1,x2,lsl 1] -.L1415: - add w0, w0, 1 - uxth w0, w0 - b .L1414 -.L1423: - ldr x19, [sp,16] + mov w1, 0 +.L1418: + ldrh w0, [x19, 1376] + ldrb w2, [x19, 1321] + mul w0, w0, w2 + cmp w1, w0, lsl 1 + blt .L1420 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret +.L1420: + ldr x0, [x19, 1928] + uxtw x2, w1 + ldr w0, [x0, x2, lsl 2] + cmn w0, #1 + beq .L1419 + and x0, x0, 255 + ldrh w3, [x20, x0, lsl 1] + strh w1, [x20, x0, lsl 1] + ldr x0, [x19, 1936] + strh w3, [x0, x2, lsl 1] +.L1419: + add w1, w1, 1 + and w1, w1, 65535 + b .L1418 .size lpa_rebuild_hash, .-lpa_rebuild_hash .align 2 .global zftl_read_flash_info .type zftl_read_flash_info, %function zftl_read_flash_info: stp x29, x30, [sp, -32]! - mov w1, 0 mov w2, 11 + mov w1, 0 add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] mov x19, x0 bl ftl_memset adrp x1, .LANCHOR2 adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 add x1, x1, :lo12:.LANCHOR2 + add x0, x0, :lo12:.LANCHOR0 add x1, x1, 8 - strb wzr, [x19,10] - mov w5, 1 - ldrb w2, [x1,9] - ldrh w3, [x0,2] + strb wzr, [x19, 10] + mov w4, 1 + ldrb w2, [x1, 9] + ldrh w3, [x0, 2] + add x0, x0, 1196 mul w2, w2, w3 - strh w2, [x19,4] - ldrb w2, [x0,1244] - strb w2, [x19,7] - ldr w2, [x0,1032] + strh w2, [x19, 4] + ldrb w2, [x0, 53] + strb w2, [x19, 7] + ldr w2, [x0, -164] str w2, [x19] - ldrb w2, [x1,9] - strb w2, [x19,6] + ldrb w2, [x1, 9] + strb w2, [x19, 6] + ldrb w3, [x0, -43] mov w2, 32 - ldrb w4, [x0,1153] - ldrb w1, [x1,7] - strb w1, [x19,9] - mov x1, 0 - strb w2, [x19,8] -.L1425: - cmp w4, w1, uxtb - bls .L1427 - add x2, x0, 1248 - ldrb w3, [x19,10] - ldrb w2, [x1,x2] - add x1, x1, 1 - lsl w2, w5, w2 - orr w2, w2, w3 - strb w2, [x19,10] - b .L1425 -.L1427: - ldr x19, [sp,16] + ldrb w1, [x1, 7] + strb w2, [x19, 8] + mov x2, 0 + strb w1, [x19, 9] +.L1429: + cmp w3, w2, uxtb + bhi .L1430 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L1430: + ldrb w1, [x2, x0] + add x2, x2, 1 + ldrb w5, [x19, 10] + lsl w1, w4, w1 + orr w1, w1, w5 + strb w1, [x19, 10] + b .L1429 .size zftl_read_flash_info, .-zftl_read_flash_info .align 2 - .global gc_init - .type gc_init, %function -gc_init: - stp x29, x30, [sp, -48]! - mov w1, 0 - mov w2, 2216 - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - adrp x19, .LANCHOR3 - add x20, x20, :lo12:.LANCHOR0 - add x19, x19, :lo12:.LANCHOR3 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR5 - add x22, x20, 3424 - add x21, x21, :lo12:.LANCHOR5 - mov x0, x22 - strb wzr, [x19,1345] - strh wzr, [x19,1386] - strb wzr, [x21,218] - str wzr, [x21,220] - bl ftl_memset - ldrh w1, [x19,1384] - mov w0, -1 - ldrb w3, [x19,1329] - strh w0, [x20,3424] - lsr w0, w1, 2 - lsr w2, w1, 1 - strh w0, [x20,3460] - strh w0, [x20,3406] - ldrh w0, [x19,1346] - strh w2, [x20,3462] - mul w2, w1, w3 - mul w0, w0, w3 - strh w1, [x20,3408] - mov w1, 4 - uxth w2, w2 - lsl w0, w0, 2 - sub w4, w2, #32 - strh w2, [x20,3402] - strh w4, [x20,3404] - strh w1, [x21,224] - strh wzr, [x19,1360] - strh wzr, [x19,1362] - strh wzr, [x19,1364] - str xzr, [x20,3432] - bl ftl_malloc - ldrb w1, [x19,1329] - str x0, [x21,232] - ldrh w0, [x19,1346] - mul w0, w0, w1 - lsl w0, w0, 2 - bl ftl_malloc - str x0, [x21,240] - ldrh w1, [x19,1346] - ldrb w0, [x19,1329] - mul w0, w1, w0 - bl ftl_malloc - str x0, [x19,1336] - ldrb w1, [x19,1329] - ldrh w0, [x19,1346] - mul w0, w0, w1 - lsl w0, w0, 2 - bl ftl_malloc - str x0, [x19,1320] - ldrb w1, [x19,1329] - ldrh w0, [x19,1346] - mul w0, w0, w1 - lsl w0, w0, 2 - bl ftl_malloc - str x0, [x21,248] - ldrh w0, [x19,1388] - ldp x21, x22, [sp,32] - lsr w0, w0, 2 - strh w0, [x20,3400] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 - ret - .size gc_init, .-gc_init - .align 2 .global gc_static_wearleveling .type gc_static_wearleveling, %function gc_static_wearleveling: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr x0, [x0,3392] - ldr w1, [x0,32] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x0, [x0, 3384] + ldr w1, [x0, 32] mov w0, 10240 cmp w1, w0 - bls .L1430 + bls .L1433 bl ftl_tmp_into_update -.L1430: - add x4, x19, :lo12:.LANCHOR0 - ldr x1, [x4,1120] - ldr w2, [x1,568] - ldr w3, [x1,12] - add w0, w2, 32768 - add w0, w0, 3232 - cmp w3, w0 - bcs .L1431 - ldr x0, [x4,3392] - ldr w4, [x1,572] - ldr w5, [x0,36] - add w4, w4, 256 - mov w0, 0 - cmp w5, w4 - bcc .L1524 -.L1431: - add w2, w2, 860160 - add w2, w2, 3840 - cmp w3, w2 - bhi .L1433 - add x0, x19, :lo12:.LANCHOR0 - ldr x2, [x0,3392] - ldr w0, [x1,572] - ldr w2, [x2,36] - add w0, w0, 32 - cmp w2, w0 - bls .L1485 .L1433: - add x0, x19, :lo12:.LANCHOR0 - mov w22, 0 - mov w20, 65535 - adrp x25, .LC126 - str w22, [x29,128] - mov w27, w22 - ldr x0, [x0,3392] - mov w26, w22 - str w22, [x29,136] - mov w24, w22 - str w22, [x29,140] - mov w28, w22 - ldr w2, [x0,36] - mov w21, w20 - str w2, [x1,572] - mov w8, w20 - str w3, [x1,568] - adrp x9, .LANCHOR2 - add x25, x25, :lo12:.LC126 - ldrh w23, [x0,134] -.L1435: - add x4, x19, :lo12:.LANCHOR0 - ldrh w0, [x4,1088] - cmp w0, w23 - bls .L1546 - uxtw x7, w23 - ldr x0, [x4,1096] - lsl x1, x7, 2 - add x6, x0, x1 - ldrb w2, [x6,2] - and w3, w2, 224 - cmp w3, 224 - beq .L1436 - tbz x2, 3, .L1437 - ldrh w3, [x0,x1] - ldr w2, [x0,x1] - and w3, w3, 2047 - ubfx x2, x2, 11, 8 - b .L1438 -.L1437: - tst w2, 24 - bne .L1439 - ldrh w3, [x0,x1] - mov w2, 65535 - and w3, w3, 2047 - b .L1438 -.L1439: - ldr w2, [x0,x1] - mov w3, 65535 - ubfx x2, x2, 11, 8 - b .L1440 -.L1438: - ldr w4, [x29,136] - add w26, w26, 1 - cmp w20, w3 - add w4, w4, w3 - str w4, [x29,136] - uxth w26, w26 - bls .L1483 - add x4, x19, :lo12:.LANCHOR0 - mov w20, w3 - ldr x4, [x4,1120] - strh w23, [x4,586] -.L1483: - cmp w24, w3 - bcs .L1441 - mov w22, w23 - mov w24, w3 -.L1441: - cmp w2, w8 - beq .L1442 -.L1440: - ldr w4, [x29,140] - add w27, w27, 1 - cmp w21, w2 - add w4, w4, w2 - str w4, [x29,140] - uxth w27, w27 - bls .L1443 - add x4, x19, :lo12:.LANCHOR0 - mov w21, w2 - ldr x4, [x4,1120] - strh w23, [x4,584] -.L1443: - cmp w28, w2 - bcs .L1442 - str w23, [x29,128] - mov w28, w2 -.L1442: - cmp w3, 9 - bls .L1487 - cmp w2, 9 + add x3, x19, :lo12:.LANCHOR0 + mov w4, 36000 + ldr x0, [x3, 1128] + ldr w1, [x0, 568] + ldr w2, [x0, 12] + add w4, w1, w4 + cmp w2, w4 + bcs .L1434 + ldr x4, [x3, 3384] + ldr w3, [x0, 572] + add w3, w3, 256 + ldr w4, [x4, 36] + cmp w4, w3 + bcc .L1486 +.L1434: + add w1, w1, 860160 + add w1, w1, 3840 + cmp w2, w1 bhi .L1436 -.L1487: - ldr w2, [x9,#:lo12:.LANCHOR2] - tbz x2, 8, .L1436 - ldrh w2, [x0,x1] - ldr w3, [x0,x1] - add x0, x19, :lo12:.LANCHOR0 - ldrb w5, [x6,2] - mov w1, w23 - ldrb w6, [x6,3] - and w2, w2, 2047 - ldr x10, [x0,1112] - ubfx x4, x5, 3, 2 - mov x0, x25 - ubfx x3, x3, 11, 8 - ubfx x5, x5, 5, 3 - str x9, [x29,112] - ldrh w7, [x10,x7,lsl 1] - str x8, [x29,120] - bl printk - ldr x9, [x29,112] - ldr x8, [x29,120] + add x1, x19, :lo12:.LANCHOR0 + ldr x3, [x1, 3384] + ldr w1, [x0, 572] + add w1, w1, 32 + ldr w3, [x3, 36] + cmp w3, w1 + bls .L1487 .L1436: - add w23, w23, 1 - uxth w23, w23 - b .L1435 -.L1546: - ldr x0, [x4,1120] - mov w1, 255 + add x24, x19, :lo12:.LANCHOR0 + mov w20, 65535 + adrp x8, .LC123 + mov w21, w20 + mov w9, w20 + add x8, x8, :lo12:.LC123 + ldr x1, [x24, 3384] + mov w28, 0 + mov w27, 0 + mov w26, 0 + mov w25, 0 + mov w23, 0 + adrp x10, .LANCHOR2 + stp wzr, wzr, [x29, 128] + ldr w3, [x1, 36] + str w3, [x0, 572] + str w2, [x0, 568] + str wzr, [x29, 136] + ldrh w22, [x1, 134] +.L1438: + ldrh w0, [x24, 1096] + cmp w0, w22 + bhi .L1447 + ldr x0, [x24, 1128] mov w2, 128 - str x4, [x29,120] + mov w1, 255 + adrp x22, .LANCHOR2 add x0, x0, 264 - adrp x23, .LANCHOR2 - strh wzr, [x0,-142] + strh wzr, [x0, -142] bl ftl_memset - ldr x4, [x29,120] - ldr x0, [x4,1120] - ldr x10, [x4,1096] - ldrh w7, [x0,586] - ldr w0, [x23,#:lo12:.LANCHOR2] - lsl x9, x7, 2 - mov x1, x7 + ldr x0, [x24, 1128] + ldr w2, [x22, #:lo12:.LANCHOR2] + ldr x10, [x24, 1104] + ldrh w0, [x0, 586] + mov x1, x0 + lsl x9, x0, 2 add x8, x10, x9 - tbz x0, 10, .L1446 - ldr x11, [x4,1112] - adrp x0, .LC127 - ldrh w2, [x10,x9] - add x0, x0, :lo12:.LC127 - ldr w3, [x10,x9] - ldrb w5, [x8,2] - and w2, w2, 2047 - ldrb w6, [x8,3] + tbz x2, 10, .L1448 + ldr x5, [x24, 1120] + ldrb w6, [x8, 3] + ldrb w4, [x8, 2] + ldr w3, [x10, x9] + ldrh w7, [x5, x0, lsl 1] + adrp x0, .LC124 + ldrh w2, [x10, x9] + ubfx x5, x4, 5, 3 + stp x9, x10, [x29, 104] ubfx x3, x3, 11, 8 - ldrh w7, [x11,x7,lsl 1] - ubfx x4, x5, 3, 2 - ubfx x5, x5, 5, 3 - str x9, [x29,104] - str x10, [x29,112] - str x8, [x29,120] + str x8, [x29, 120] + and w2, w2, 2047 + ubfx x4, x4, 3, 2 + add x0, x0, :lo12:.LC124 bl printk - ldr x9, [x29,104] - ldr x10, [x29,112] - ldr x8, [x29,120] -.L1446: - ldrb w0, [x8,2] - adrp x25, .LANCHOR5 + ldp x9, x10, [x29, 104] + ldr x8, [x29, 120] +.L1448: + ldrb w0, [x8, 2] + adrp x24, .LANCHOR5 and w0, w0, 224 cmp w0, 32 - bne .L1447 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w0, [x0,688] - cmp w0, 2 - bls .L1447 - add x0, x25, :lo12:.LANCHOR5 - mov w1, 1 - str w1, [x0,256] -.L1447: - ldrb w0, [x8,2] - tbz x0, 3, .L1448 - add x3, x19, :lo12:.LANCHOR0 - add x1, x25, :lo12:.LANCHOR5 - ldr x0, [x3,3392] - ldrh w1, [x1,260] - ldrh w2, [x0,96] - ldrh w0, [x10,x9] - and w0, w0, 2047 - add w0, w0, w1, lsr 2 - cmp w2, w0 - ble .L1448 - ldrb w0, [x8,2] - and w1, w0, 192 - cmp w1, 64 bne .L1449 - ldr x0, [x3,1120] - mov w1, 0 - mov w2, 1 - str x3, [x29,120] - ldrh w0, [x0,586] - bl gc_add_sblk - ldr x3, [x29,120] - mov w0, 1 - strh w0, [x3,5616] - b .L1448 -.L1449: - tst w0, 224 - bne .L1448 - ldr x1, [x3,1120] - mov w0, 65535 - ldrh w2, [x1,590] - cmp w2, w0 - bne .L1448 - ldrh w0, [x1,586] - ldrh w1, [x1,588] - str x3, [x29,120] - cmp w1, w0 - beq .L1448 - bl zftl_remove_free_node - ldr x3, [x29,120] - ldr x0, [x3,1120] - ldrh w1, [x0,586] - strh w1, [x0,590] - mov w1, -1 - strh w1, [x0,586] -.L1448: add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x23,#:lo12:.LANCHOR2] - ldr x1, [x0,1120] - ldr x10, [x0,1096] - ldrh w7, [x1,584] - lsl x9, x7, 2 - mov x1, x7 - add x8, x10, x9 - tbz x2, 10, .L1450 - ldr x11, [x0,1112] - adrp x0, .LC128 - ldrh w2, [x10,x9] - add x0, x0, :lo12:.LC128 - ldr w3, [x10,x9] - ldrb w5, [x8,2] - and w2, w2, 2047 - ldrb w6, [x8,3] - ubfx x3, x3, 11, 8 - ldrh w7, [x11,x7,lsl 1] - ubfx x4, x5, 3, 2 - ubfx x5, x5, 5, 3 - str x9, [x29,104] - str x10, [x29,112] - str x8, [x29,120] - bl printk - ldr x9, [x29,104] - ldr x10, [x29,112] - ldr x8, [x29,120] -.L1450: - ldrb w0, [x8,2] - tbz x0, 3, .L1451 + ldr x0, [x0, 3384] + ldrh w0, [x0, 688] + cmp w0, 2 + bls .L1449 + add x0, x24, :lo12:.LANCHOR5 + mov w1, 1 + str w1, [x0, 212] +.L1449: + ldrb w0, [x8, 2] + tbz x0, 3, .L1450 add x3, x19, :lo12:.LANCHOR0 - add x1, x25, :lo12:.LANCHOR5 - ldr x0, [x3,3392] - ldrh w1, [x1,262] - ldrh w2, [x0,98] - ldr w0, [x10,x9] - ubfx x0, x0, 11, 8 - add w0, w0, w1, lsr 2 + ldrh w1, [x10, x9] + and w1, w1, 2047 + ldr x0, [x3, 3384] + ldrh w2, [x0, 96] + add x0, x24, :lo12:.LANCHOR5 + ldrh w0, [x0, 216] + add w0, w1, w0, lsr 2 cmp w2, w0 - ble .L1451 - ldrb w0, [x8,2] + ble .L1450 + ldrb w0, [x8, 2] and w1, w0, 192 cmp w1, 64 - bne .L1452 - ldr x0, [x3,1120] - mov w1, 0 + bne .L1451 + ldr x0, [x3, 1128] mov w2, 1 - str x3, [x29,120] - ldrh w0, [x0,584] + str x3, [x29, 120] + mov w1, 0 + ldrh w0, [x0, 586] bl gc_add_sblk - ldr x3, [x29,120] + ldr x3, [x29, 120] mov w0, 1 - strh w0, [x3,5616] - b .L1451 -.L1452: - and w0, w0, 248 - cmp w0, 16 - bne .L1451 - ldr x1, [x3,1120] - mov w0, 65535 - ldrh w2, [x1,588] - cmp w2, w0 - bne .L1451 - ldrh w0, [x1,584] - ldrh w1, [x1,590] - str x3, [x29,120] - cmp w1, w0 - beq .L1451 - bl zftl_remove_free_node - ldr x3, [x29,120] - ldr x0, [x3,1120] - ldrh w1, [x0,584] - strh w1, [x0,588] - mov w1, -1 - strh w1, [x0,584] -.L1451: - add x4, x19, :lo12:.LANCHOR0 - ldr w0, [x23,#:lo12:.LANCHOR2] - ldr x1, [x4,1096] - tbz x0, 10, .L1453 - uxtw x7, w22 - ldr x8, [x4,1112] - lsl x0, x7, 2 - add x6, x1, x0 - ldrh w7, [x8,x7,lsl 1] - ldrh w2, [x1,x0] - ldr w3, [x1,x0] - adrp x0, .LC129 - ldrb w5, [x6,2] - add x0, x0, :lo12:.LC129 - ldrb w6, [x6,3] - mov w1, w22 - ubfx x4, x5, 3, 2 - and w2, w2, 2047 - ubfx x3, x3, 11, 8 - ubfx x5, x5, 5, 3 - bl printk -.L1453: - add x4, x19, :lo12:.LANCHOR0 - ldr w0, [x23,#:lo12:.LANCHOR2] - ldr x1, [x4,1096] - tbz x0, 10, .L1454 - ldr w7, [x29,128] - ldr x8, [x4,1112] - lsl x0, x7, 2 - add x6, x1, x0 - ldrh w2, [x1,x0] - ldr w3, [x1,x0] - adrp x0, .LC130 - ldrb w5, [x6,2] - mov x1, x7 - ldrb w6, [x6,3] - add x0, x0, :lo12:.LC130 - ldrh w7, [x8,x7,lsl 1] - ubfx x4, x5, 3, 2 - and w2, w2, 2047 - ubfx x3, x3, 11, 8 - ubfx x5, x5, 5, 3 - bl printk -.L1454: - ldr w1, [x29,136] + strh w0, [x3, 5608] +.L1450: add x0, x19, :lo12:.LANCHOR0 - udiv w3, w1, w26 - ldr w1, [x29,140] - ldr x0, [x0,3392] - strh w24, [x0,96] - strh w28, [x0,98] - strh w20, [x0,92] - strh w21, [x0,94] - udiv w4, w1, w27 - strh w3, [x0,88] - strh w4, [x0,90] - ldr w0, [x23,#:lo12:.LANCHOR2] + ldr w2, [x22, #:lo12:.LANCHOR2] + ldr x1, [x0, 1128] + ldr x10, [x0, 1104] + ldrh w5, [x1, 584] + mov x1, x5 + lsl x9, x5, 2 + add x8, x10, x9 + tbz x2, 10, .L1452 + ldr x0, [x0, 1120] + ldrb w6, [x8, 3] + ldrb w4, [x8, 2] + ldr w3, [x10, x9] + ldrh w7, [x0, x5, lsl 1] + adrp x0, .LC125 + ldrh w2, [x10, x9] + ubfx x5, x4, 5, 3 + stp x9, x10, [x29, 104] + ubfx x3, x3, 11, 8 + str x8, [x29, 120] + and w2, w2, 2047 + ubfx x4, x4, 3, 2 + add x0, x0, :lo12:.LC125 + bl printk + ldp x9, x10, [x29, 104] + ldr x8, [x29, 120] +.L1452: + ldrb w0, [x8, 2] + tbz x0, 3, .L1453 + add x3, x19, :lo12:.LANCHOR0 + ldr w1, [x10, x9] + ldr x0, [x3, 3384] + ubfx x1, x1, 11, 8 + ldrh w2, [x0, 98] + add x0, x24, :lo12:.LANCHOR5 + ldrh w0, [x0, 218] + add w0, w1, w0, lsr 2 + cmp w2, w0 + ble .L1453 + ldrb w0, [x8, 2] + and w1, w0, 192 + cmp w1, 64 + bne .L1454 + ldr x0, [x3, 1128] + mov w2, 1 + str x3, [x29, 120] + mov w1, 0 + ldrh w0, [x0, 584] + bl gc_add_sblk + ldr x3, [x29, 120] + mov w0, 1 + strh w0, [x3, 5608] +.L1453: + ldr w0, [x22, #:lo12:.LANCHOR2] tbz x0, 10, .L1455 - adrp x0, .LC131 - mov w1, w26 - add x0, x0, :lo12:.LC131 - mov w2, w27 - uxth w3, w3 - uxth w4, w4 + add x0, x19, :lo12:.LANCHOR0 + uxtw x6, w28 + lsl x1, x6, 2 + ldr x2, [x0, 1104] + ldr x0, [x0, 1120] + add x5, x2, x1 + ldr w3, [x2, x1] + ldrh w7, [x0, x6, lsl 1] + adrp x0, .LC126 + ldrb w6, [x5, 3] + add x0, x0, :lo12:.LC126 + ldrb w4, [x5, 2] + ubfx x3, x3, 11, 8 + ldrh w2, [x2, x1] + mov w1, w28 + ubfx x5, x4, 5, 3 + and w2, w2, 2047 + ubfx x4, x4, 3, 2 bl printk .L1455: - ldr w0, [x23,#:lo12:.LANCHOR2] + ldr w0, [x22, #:lo12:.LANCHOR2] tbz x0, 10, .L1456 - add x6, x25, :lo12:.LANCHOR5 - adrp x0, .LC132 - add x0, x0, :lo12:.LC132 - mov w1, w20 - mov w2, w21 - mov w3, w24 - ldrh w5, [x6,260] - mov w4, w28 - ldrh w6, [x6,262] + add x0, x19, :lo12:.LANCHOR0 + ldr w6, [x29, 128] + ldr x2, [x0, 1104] + lsl x1, x6, 2 + ldr x0, [x0, 1120] + add x5, x2, x1 + ldr w3, [x2, x1] + ldrh w7, [x0, x6, lsl 1] + adrp x0, .LC127 + ldrh w2, [x2, x1] + add x0, x0, :lo12:.LC127 + ldrb w6, [x5, 3] + ubfx x3, x3, 11, 8 + ldr w1, [x29, 128] + and w2, w2, 2047 + ldrb w4, [x5, 2] + ubfx x5, x4, 5, 3 + ubfx x4, x4, 3, 2 bl printk .L1456: - add x1, x25, :lo12:.LANCHOR5 - sub w0, w28, w21 - str w0, [x29,140] - ldrh w0, [x1,262] - ldr w2, [x29,140] - cmp w2, w0 - bgt .L1457 - ldrh w1, [x1,260] - sub w0, w24, w20 - cmp w0, w1 - ble .L1486 -.L1457: + ldr w1, [x29, 132] add x0, x19, :lo12:.LANCHOR0 - mov w26, 0 - mov w22, w26 - ldr x1, [x0,1120] - ldr x0, [x0,3392] - ldrh w28, [x1,580] - ldrh w27, [x0,134] - sub w0, w24, w20 - str w0, [x29,136] - adrp x0, .LC134 - add x0, x0, :lo12:.LC134 - adrp x24, .LC133 - str x0, [x29,128] - add x0, x24, :lo12:.LC133 - str x0, [x29,120] + ldr x0, [x0, 3384] + udiv w3, w1, w26 + ldr w1, [x29, 136] + strh w25, [x0, 96] + udiv w4, w1, w27 + strh w23, [x0, 98] + strh w20, [x0, 92] + strh w21, [x0, 94] + strh w3, [x0, 88] + strh w4, [x0, 90] + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 10, .L1457 + adrp x0, .LC128 + and w4, w4, 65535 + and w3, w3, 65535 + mov w2, w27 + mov w1, w26 + add x0, x0, :lo12:.LC128 + bl printk +.L1457: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 10, .L1458 + add x0, x24, :lo12:.LANCHOR5 + mov w4, w23 + mov w3, w25 + mov w2, w21 + mov w1, w20 + ldrh w6, [x0, 218] + ldrh w5, [x0, 216] + adrp x0, .LC129 + add x0, x0, :lo12:.LC129 + bl printk +.L1458: + add x1, x24, :lo12:.LANCHOR5 + sub w0, w23, w21 + str w0, [x29, 128] + ldrh w0, [x1, 218] + ldr w2, [x29, 128] + cmp w2, w0 + bgt .L1459 + ldrh w1, [x1, 216] + sub w0, w25, w20 + cmp w0, w1 + ble .L1488 .L1459: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1,1088] - cmp w27, w0 - bcs .L1468 + add x8, x19, :lo12:.LANCHOR0 + mov w26, 0 + mov x27, x8 + mov w23, 0 + ldr x0, [x8, 1128] + ldrh w28, [x0, 580] + ldr x0, [x8, 3384] + ldrh w0, [x0, 134] + str w0, [x29, 132] + add x0, x8, 3416 + str x0, [x29, 136] + adrp x0, .LC131 + add x0, x0, :lo12:.LC131 + str x0, [x29, 120] +.L1461: + ldrh w0, [x27, 1096] + ldr w1, [x29, 132] + cmp w1, w0 + bcc .L1471 +.L1470: + add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0, 1128] + str w28, [x0, 580] +.L1460: + cbz w21, .L1473 + add x0, x19, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldrh w1, [x1, 134] +.L1474: + ldrh w2, [x0, 1096] + cmp w2, w1 + bhi .L1476 + ldr x0, [x0, 3384] + ldrh w1, [x0, 72] + add w1, w21, w1 + strh w1, [x0, 72] + ldrh w1, [x0, 98] + cmp w21, w1 + bcs .L1473 + sub w21, w1, w21 + strh w21, [x0, 98] +.L1473: + cbz w20, .L1479 + add x0, x19, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldrh w1, [x1, 134] +.L1480: + ldrh w2, [x0, 1096] + cmp w2, w1 + bhi .L1482 + ldr x0, [x0, 3384] + ldrh w1, [x0, 74] + add w1, w20, w1 + strh w1, [x0, 74] + ldrh w1, [x0, 96] + cmp w20, w1 + bcs .L1479 + sub w20, w1, w20 + strh w20, [x0, 96] +.L1479: + adrp x5, .LANCHOR3 + add x5, x5, :lo12:.LANCHOR3 + mov w1, 0 + add x0, x5, 1368 + bl _list_get_gc_head_node + and w1, w0, 65535 + mov w2, 65535 + cmp w1, w2 + beq .L1437 + add x19, x19, :lo12:.LANCHOR0 + ubfiz x1, x1, 1, 16 + ldrh w2, [x5, 1376] + ldr x3, [x19, 1120] + ldrh w1, [x3, x1] + cmp w1, w2, lsr 1 + bhi .L1437 + add w23, w23, 1 + mov w2, 1 + mov w1, 0 + bl gc_add_sblk +.L1437: + add w0, w23, w26 +.L1432: + 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], 144 + ret +.L1447: + uxtw x7, w22 + ldr x5, [x24, 1104] + lsl x2, x7, 2 + add x6, x5, x2 + ldrb w0, [x6, 2] + and w1, w0, 224 + cmp w1, 224 + beq .L1439 + tbz x0, 3, .L1440 + ldr w0, [x5, x2] + ldrh w1, [x5, x2] + ubfx x0, x0, 11, 8 + and w1, w1, 2047 +.L1441: + ldr w3, [x29, 132] + add w26, w26, 1 + and w26, w26, 65535 + cmp w20, w1 + add w3, w3, w1 + str w3, [x29, 132] + bls .L1485 + ldr x3, [x24, 1128] + mov w20, w1 + strh w22, [x3, 586] +.L1485: + cmp w25, w1 + bcs .L1444 + mov w28, w22 + mov w25, w1 +.L1444: + cmp w0, w9 + bne .L1443 +.L1445: + cmp w0, 9 + ccmp w1, 9, 0, hi + bhi .L1439 + ldr w0, [x10, #:lo12:.LANCHOR2] + tbz x0, 8, .L1439 + ldr x0, [x24, 1120] + mov w1, w22 + ldrb w4, [x6, 2] + ldrb w6, [x6, 3] + ldr w3, [x5, x2] + ldrh w7, [x0, x7, lsl 1] + mov x0, x8 + ldrh w2, [x5, x2] + ubfx x5, x4, 5, 3 + str x10, [x29, 104] + ubfx x4, x4, 3, 2 + str w9, [x29, 112] + ubfx x3, x3, 11, 8 + str x8, [x29, 120] + and w2, w2, 2047 + bl printk + ldr w9, [x29, 112] + ldr x10, [x29, 104] + ldr x8, [x29, 120] +.L1439: + add w22, w22, 1 + and w22, w22, 65535 + b .L1438 +.L1440: + tst w0, 24 + bne .L1442 + ldrh w1, [x5, x2] + mov w0, 65535 + and w1, w1, 2047 + b .L1441 +.L1442: + ldr w0, [x5, x2] + mov w1, 65535 + ubfx x0, x0, 11, 8 +.L1443: + ldr w3, [x29, 136] + add w27, w27, 1 + and w27, w27, 65535 + cmp w21, w0 + add w3, w3, w0 + str w3, [x29, 136] + bls .L1446 + ldr x3, [x24, 1128] + mov w21, w0 + strh w22, [x3, 584] +.L1446: + cmp w23, w0 + bcs .L1445 + mov w23, w0 + str w22, [x29, 128] + b .L1445 +.L1451: + tst w0, 224 + bne .L1450 + ldr x1, [x3, 1128] + mov w0, 65535 + ldrh w2, [x1, 590] + cmp w2, w0 + bne .L1450 + ldrh w0, [x1, 586] + str x3, [x29, 120] + ldrh w1, [x1, 588] + cmp w1, w0 + beq .L1450 + bl zftl_remove_free_node + ldr x3, [x29, 120] + ldr x0, [x3, 1128] + ldrh w1, [x0, 586] + strh w1, [x0, 590] + mov w1, -1 + strh w1, [x0, 586] + b .L1450 +.L1454: + and w0, w0, 248 + cmp w0, 16 + bne .L1453 + ldr x1, [x3, 1128] + mov w0, 65535 + ldrh w2, [x1, 588] + cmp w2, w0 + bne .L1453 + ldrh w0, [x1, 584] + str x3, [x29, 120] + ldrh w1, [x1, 590] + cmp w1, w0 + beq .L1453 + bl zftl_remove_free_node + ldr x3, [x29, 120] + ldr x0, [x3, 1128] + ldrh w1, [x0, 584] + strh w1, [x0, 588] + mov w1, -1 + strh w1, [x0, 584] + b .L1453 +.L1471: add w7, w28, 1 - ldr x4, [x1,1096] - uxth w28, w7 - cmp w28, w0 - csel w28, w28, wzr, cc - uxtw x24, w28 - lsl x3, x24, 2 + ldr x4, [x27, 1104] + and w28, w7, 65535 + cmp w0, w28 + csel w28, w28, wzr, hi + uxtw x9, w28 + lsl x3, x9, 2 add x0, x4, x3 - ldrb w0, [x0,2] + ldrb w0, [x0, 2] + tst w0, 192 + beq .L1463 and w2, w0, 224 cmp w2, 224 - beq .L1461 - tst w0, 192 - beq .L1461 + beq .L1463 ubfx x0, x0, 3, 2 - cmp w2, 160 and w1, w0, 1 - tbnz x0, 0, .L1544 - cmp w0, 2 -.L1544: - add x0, x25, :lo12:.LANCHOR5 - bne .L1464 - ldrh w0, [x0,262] - ldr w2, [x29,140] + tbz x0, 0, .L1464 + cmp w2, 160 +.L1551: + bne .L1466 + add x0, x24, :lo12:.LANCHOR5 + ldr w2, [x29, 128] + ldrh w0, [x0, 218] cmp w2, w0 - ble .L1465 - ldr w0, [x4,x3] + ble .L1467 + ldr w0, [x4, x3] ubfx x0, x0, 11, 8 cmp w0, w21 - bls .L1466 - cbz w1, .L1465 - ldrh w0, [x4,x3] + bls .L1468 + cbz w1, .L1467 + ldrh w0, [x4, x3] and w0, w0, 2047 cmp w0, w20 - bgt .L1465 -.L1466: + bgt .L1467 +.L1468: mov w1, 0 - mov w0, w28 + stp x4, x9, [x29, 96] + str x3, [x29, 112] mov w2, 1 - str x4, [x29,104] - str x3, [x29,112] - add w22, w22, 1 + mov w0, w28 bl gc_add_sblk - add x0, x19, :lo12:.LANCHOR0 - mov w1, 1 - add x9, x0, 3424 - ldr x3, [x29,112] - ldr x4, [x29,104] - strh w1, [x0,5616] - ldr w1, [x23,#:lo12:.LANCHOR2] - tbz x1, 10, .L1465 - ldr x1, [x0,1096] - ldr x10, [x0,1112] - add x1, x1, x3 - ldrh w5, [x4,x3] - ldr w6, [x4,x3] - ldr x0, [x29,120] - ldrb w2, [x1,2] - b .L1545 + ldr x1, [x29, 136] + mov w0, 1 + add w23, w23, 1 + ldr x3, [x29, 112] + ldp x4, x9, [x29, 96] + strh w0, [x1, 2192] + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 10, .L1467 + ldr x0, [x27, 1104] + ldr w6, [x4, x3] + ldrh w5, [x4, x3] + add x3, x0, x3 + ldr x1, [x27, 1120] + ldr x0, [x29, 136] + ubfx x6, x6, 11, 8 + ldrb w2, [x3, 2] + and w5, w5, 2047 + ldrh w3, [x1, x9, lsl 1] + mov w1, w28 + ldrh w4, [x0, 56] + ubfx x2, x2, 5, 3 + adrp x0, .LC130 + add x0, x0, :lo12:.LC130 +.L1552: + bl printk +.L1467: + cmp w23, 4 + ccmp w26, 4, 2, ls + bhi .L1470 +.L1463: + ldr w0, [x29, 132] + add w0, w0, 1 + and w0, w0, 65535 + str w0, [x29, 132] + b .L1461 .L1464: - ldrh w0, [x0,260] - ldr w2, [x29,136] - cmp w2, w0 - ble .L1465 - ldrh w0, [x4,x3] + cmp w0, 2 + b .L1551 +.L1466: + add x2, x24, :lo12:.LANCHOR5 + sub w0, w25, w20 + ldrh w2, [x2, 216] + cmp w0, w2 + ble .L1467 + ldrh w0, [x4, x3] add w2, w20, 8 and w0, w0, 2047 cmp w0, w2 - ble .L1467 - cbz w1, .L1465 - ldr w0, [x4,x3] + ble .L1469 + cbz w1, .L1467 + ldr w0, [x4, x3] add w1, w21, 4 ubfx x0, x0, 11, 8 cmp w0, w1 - bgt .L1465 -.L1467: + bgt .L1467 +.L1469: mov w1, 0 + stp x4, x9, [x29, 96] + str x3, [x29, 112] + mov w2, 1 mov w0, w28 - mov w2, 1 - str x4, [x29,104] - str x3, [x29,112] + bl gc_add_sblk + ldr x1, [x29, 136] + mov w0, 1 add w26, w26, 1 - bl gc_add_sblk - add x0, x19, :lo12:.LANCHOR0 - mov w1, 1 - add x9, x0, 3424 - ldr x3, [x29,112] - ldr x4, [x29,104] - strh w1, [x0,5616] - ldr w1, [x23,#:lo12:.LANCHOR2] - tbz x1, 10, .L1465 - ldr x1, [x0,1096] - ldr x10, [x0,1112] - add x1, x1, x3 - ldrh w5, [x4,x3] - ldr w6, [x4,x3] - ldr x0, [x29,128] - ldrb w2, [x1,2] -.L1545: - ldrh w3, [x10,x24,lsl 1] - mov w1, w28 - ldrh w4, [x9,56] - ubfx x2, x2, 5, 3 - and w5, w5, 2047 + ldr x3, [x29, 112] + ldp x4, x9, [x29, 96] + strh w0, [x1, 2192] + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 10, .L1467 + ldr x0, [x27, 1104] + ldr w6, [x4, x3] + ldrh w5, [x4, x3] + add x3, x0, x3 + ldr x1, [x27, 1120] + ldr x0, [x29, 136] ubfx x6, x6, 11, 8 - bl printk -.L1465: - cmp w26, 4 - bhi .L1468 - cmp w22, 4 - bhi .L1468 -.L1461: - add w27, w27, 1 - uxth w27, w27 - b .L1459 -.L1468: - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1120] - str w28, [x0,580] - b .L1458 + ldrb w2, [x3, 2] + and w5, w5, 2047 + ldrh w3, [x1, x9, lsl 1] + mov w1, w28 + ldrh w4, [x0, 56] + ubfx x2, x2, 5, 3 + ldr x0, [x29, 120] + b .L1552 +.L1488: + mov w26, 0 + mov w23, 0 + b .L1460 +.L1476: + ldr x5, [x0, 1104] + ubfiz x4, x1, 2, 16 + add x6, x5, x4 + ldr w2, [x5, x4] + ubfx x3, x2, 11, 8 + cmp w21, w3 + bhi .L1475 + ldrb w6, [x6, 2] + tst w6, 24 + beq .L1475 + sub w3, w3, w21 + bfi w2, w3, 11, 8 + str w2, [x5, x4] +.L1475: + add w1, w1, 1 + and w1, w1, 65535 + b .L1474 +.L1482: + ldr x5, [x0, 1104] + ubfiz x4, x1, 2, 16 + add x6, x5, x4 + ldrh w2, [x5, x4] + and w3, w2, 2047 + cmp w3, w20 + blt .L1481 + ldrb w6, [x6, 2] + and w6, w6, 24 + cmp w6, 16 + beq .L1481 + sub w3, w3, w20 + bfi w2, w3, 0, 11 + strh w2, [x5, x4] +.L1481: + add w1, w1, 1 + and w1, w1, 65535 + b .L1480 +.L1487: + mov w26, 0 + mov w23, 0 + b .L1437 .L1486: - mov w26, 0 - mov w22, w26 -.L1458: - cbz w21, .L1471 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w0, [x0,134] -.L1472: - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1,1088] - cmp w2, w0 - bls .L1547 - ubfiz x3, x0, 2, 16 - ldr x4, [x1,1096] - add x5, x4, x3 - ldr w1, [x4,x3] - ubfx x2, x1, 11, 8 - cmp w2, w21 - bcc .L1473 - ldrb w5, [x5,2] - tst w5, 24 - beq .L1473 - sub w2, w2, w21 - bfi w1, w2, 11, 8 - str w1, [x4,x3] -.L1473: - add w0, w0, 1 - uxth w0, w0 - b .L1472 -.L1547: - ldr x0, [x1,3392] - ldrh w1, [x0,72] - add w1, w21, w1 - strh w1, [x0,72] - ldrh w1, [x0,98] - cmp w1, w21 - bls .L1471 - sub w21, w1, w21 - strh w21, [x0,98] -.L1471: - cbz w20, .L1477 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w0, [x0,134] -.L1478: - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1,1088] - cmp w2, w0 - bls .L1548 - ubfiz x3, x0, 2, 16 - ldr x4, [x1,1096] - add x5, x4, x3 - ldrh w1, [x4,x3] - and w2, w1, 2047 - cmp w2, w20 - blt .L1479 - ldrb w5, [x5,2] - and w5, w5, 24 - cmp w5, 16 - beq .L1479 - sub w2, w2, w20 - bfi w1, w2, 0, 11 - strh w1, [x4,x3] -.L1479: - add w0, w0, 1 - uxth w0, w0 - b .L1478 -.L1548: - ldr x0, [x1,3392] - ldrh w1, [x0,74] - add w1, w20, w1 - strh w1, [x0,74] - ldrh w1, [x0,96] - cmp w1, w20 - bls .L1477 - sub w20, w1, w20 - strh w20, [x0,96] -.L1477: - adrp x20, .LANCHOR3 - mov w1, 0 - add x20, x20, :lo12:.LANCHOR3 - add x0, x20, 1376 - bl _list_get_gc_head_node - uxth w1, w0 - mov w2, 65535 - cmp w1, w2 - beq .L1434 - add x19, x19, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldrh w2, [x20,1384] - ldr x3, [x19,1112] - ldrh w1, [x3,x1] - cmp w1, w2, lsr 1 - bhi .L1434 - mov w1, 0 - mov w2, 1 - add w22, w22, 1 - bl gc_add_sblk - b .L1434 -.L1485: - mov w26, 0 - mov w22, w26 -.L1434: - add w0, w26, w22 -.L1524: - 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], 144 - ret + mov w0, 0 + b .L1432 .size gc_static_wearleveling, .-gc_static_wearleveling .align 2 .global zftl_sblk_list_init .type zftl_sblk_list_init, %function zftl_sblk_list_init: - stp x29, x30, [sp, -112]! - mov w2, 6 + stp x29, x30, [sp, -96]! + mov w0, 6 mov w1, 0 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - mov w24, 0 - stp x19, x20, [sp,16] - add x19, x23, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x21, x22, [sp,32] - stp x27, x28, [sp,80] - adrp x21, .LANCHOR3 - adrp x26, .LANCHOR4 - ldrh w3, [x19,1088] - adrp x27, .LC0 - ldr x0, [x19,1040] - add x26, x26, :lo12:.LANCHOR4 - add x27, x27, :lo12:.LC0 - add x26, x26, 72 - mul w2, w3, w2 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR4 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR3 + ldrh w2, [x19, 1096] + add x25, x25, :lo12:.LANCHOR4 + str x27, [sp, 80] + add x26, x19, 3372 + add x25, x25, 72 + mov w23, 0 + mul w2, w2, w0 + ldr x0, [x19, 1040] bl ftl_memset - strh wzr, [x19,3376] - add x0, x21, :lo12:.LANCHOR3 + strh wzr, [x19, 3368] + add x0, x22, :lo12:.LANCHOR3 mov w1, 32 - strh wzr, [x19,3378] - strh wzr, [x19,3380] - strh w1, [x0,1416] - ldrh w25, [x0,1346] - ldrb w1, [x0,1329] - str xzr, [x0,1392] - str xzr, [x0,1400] - mul w25, w1, w25 - str xzr, [x0,1408] - str xzr, [x0,1368] - str xzr, [x0,1352] - str xzr, [x0,1376] - mov w0, 32768 - strh wzr, [x19,3382] - sdiv w25, w0, w25 - strh wzr, [x19,3386] - strh wzr, [x19,3384] - sxth w0, w25 - str w0, [x29,108] - ldr x0, [x19,3392] - ldrsh w19, [x0,134] - strh wzr, [x0,146] -.L1550: - add x2, x23, :lo12:.LANCHOR0 - ldrh w0, [x2,1088] - cmp w19, w0 - bge .L1581 - sxtw x25, w19 - ldr x20, [x2,1096] - ldr w0, [x29,108] - add x20, x20, x25, lsl 2 - ldrb w1, [x20,3] - cbz w1, .L1551 - add x0, x21, :lo12:.LANCHOR3 - mov w1, 0 - ldr x4, [x2,3392] - ldrb w5, [x0,1329] - ldrh w6, [x0,1346] - mov w0, w1 -.L1552: - cmp w1, w5 - bge .L1582 - ldrb w2, [x20,3] - asr w2, w2, w1 - tbnz x2, 0, .L1553 - add w0, w6, w0 - sxth w0, w0 - b .L1554 -.L1553: - ldrh w2, [x4,146] - add w2, w2, 1 - strh w2, [x4,146] + strh wzr, [x19, 3370] + strh wzr, [x19, 3372] + ldrb w24, [x0, 1321] + strh w1, [x0, 1408] + str xzr, [x0, 1344] + str xzr, [x0, 1360] + str xzr, [x0, 1368] + str xzr, [x0, 1384] + str xzr, [x0, 1392] + str xzr, [x0, 1400] + ldrh w0, [x0, 1338] + strh wzr, [x19, 3374] + strh wzr, [x19, 3378] + strh wzr, [x19, 3376] + mul w0, w24, w0 + mov w24, 32768 + sdiv w24, w24, w0 + ldr x0, [x19, 3384] + ldrsh w20, [x0, 134] + sxth w24, w24 + strh wzr, [x0, 146] .L1554: - add w1, w1, 1 - b .L1552 -.L1582: - cbz w0, .L1556 + ldrh w0, [x19, 1096] + cmp w20, w0 + blt .L1571 + ldr x0, [x19, 3384] + ldrh w1, [x19, 3368] + strh w1, [x0, 114] + ldrh w1, [x19, 3370] + strh w1, [x0, 118] + ldrh w1, [x19, 3372] + strh w1, [x0, 116] + ldrh w1, [x19, 3374] + strh w1, [x0, 122] + ldrh w1, [x19, 3378] + strh w1, [x0, 120] + ldrh w1, [x19, 3376] + strh w1, [x0, 124] + 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 +.L1571: + ldr x21, [x19, 1104] + sxtw x27, w20 + add x21, x21, x27, lsl 2 + ldrb w0, [x21, 3] + cbz w0, .L1572 + add x0, x22, :lo12:.LANCHOR3 + ldr x3, [x19, 3384] + mov w1, 0 + ldrb w4, [x0, 1321] + ldrh w5, [x0, 1338] + mov w0, 0 +.L1556: + cmp w1, w4 + blt .L1559 + cbz w0, .L1560 mov w1, 32768 sdiv w0, w1, w0 add w0, w0, 1 sxth w0, w0 - b .L1551 -.L1556: - ldrb w1, [x20,2] +.L1555: + mov w1, 6 + ldr x2, [x19, 1040] + smull x1, w20, w1 + add x2, x2, x1 + strh w0, [x2, 4] + mov w2, -1 + ldr x0, [x19, 1040] + add x3, x0, x1 + strh w2, [x3, 2] + strh w2, [x0, x1] + mov w1, 224 + ldrb w0, [x21, 2] + and w0, w0, 224 + cmp w0, 32 + ccmp w0, w1, 4, ne + beq .L1561 + ldr x1, [x19, 1128] + ldrh w2, [x1, 16] + cmp w20, w2 + beq .L1561 + ldrh w2, [x1, 48] + cmp w20, w2 + beq .L1561 + ldrh w1, [x1, 80] + cmp w20, w1 + beq .L1561 + cmp w0, 64 + bne .L1562 + and w21, w20, 65535 + add x0, x22, :lo12:.LANCHOR3 + add x2, x19, 3374 + mov w1, w21 + add x0, x0, 1344 +.L1583: + bl _insert_data_list + ldr x0, [x19, 1120] + ldrh w0, [x0, x27, lsl 1] + cmp w0, 7 + bhi .L1561 + mov w0, w21 + mov w2, 0 + mov w1, 1 +.L1581: + bl gc_add_sblk +.L1561: + add w20, w20, 1 + sxth w20, w20 + b .L1554 +.L1559: + ldrb w2, [x21, 3] + asr w2, w2, w1 + tbnz x2, 0, .L1557 + add w0, w5, w0 + sxth w0, w0 +.L1558: + add w1, w1, 1 + b .L1556 +.L1557: + ldrh w2, [x3, 146] + add w2, w2, 1 + strh w2, [x3, 146] + b .L1558 +.L1560: + ldrb w1, [x21, 2] mov w2, -1 orr w1, w1, -32 - strb w1, [x20,2] - add x1, x23, :lo12:.LANCHOR0 - ldr x1, [x1,1112] - strh w2, [x1,x25,lsl 1] -.L1551: - add x22, x23, :lo12:.LANCHOR0 - mov w1, 6 - smull x1, w19, w1 - ldr x2, [x22,1040] - add x2, x2, x1 - strh w0, [x2,4] - mov w2, -1 - ldr x0, [x22,1040] - add x4, x0, x1 - strh w2, [x4,2] - strh w2, [x0,x1] - ldrb w0, [x20,2] - and w0, w0, 224 - cmp w0, 224 - beq .L1557 - cmp w0, 32 - cset w28, eq - cbnz w28, .L1557 - ldr x1, [x22,1120] - ldrh w2, [x1,16] - cmp w19, w2 - beq .L1557 - ldrh w2, [x1,48] - cmp w19, w2 - beq .L1557 - ldrh w1, [x1,80] - cmp w19, w1 - beq .L1557 - cmp w0, 64 - bne .L1558 - uxth w20, w19 - add x0, x21, :lo12:.LANCHOR3 - add x0, x0, 1352 - mov w1, w20 - add x2, x22, 3382 - b .L1579 -.L1558: + strb w1, [x21, 2] + ldr x1, [x19, 1120] + strh w2, [x1, x27, lsl 1] + b .L1555 +.L1572: + mov w0, w24 + b .L1555 +.L1562: cmp w0, 96 - bne .L1559 - uxth w20, w19 - add x0, x21, :lo12:.LANCHOR3 - add x0, x0, 1368 - mov w1, w20 - add x2, x22, 3384 - b .L1579 -.L1559: - cmp w0, 160 - bne .L1560 - uxth w20, w19 - add x0, x21, :lo12:.LANCHOR3 - add x0, x0, 1376 - mov w1, w20 - add x2, x22, 3386 -.L1579: - bl _insert_data_list - ldr x0, [x22,1112] - ldrh w0, [x0,x25,lsl 1] - cmp w0, 7 - bhi .L1557 - mov w0, w20 - mov w1, 1 - mov w2, w28 - b .L1577 -.L1560: - cbnz w0, .L1557 - ldr x0, [x22,1112] - ldrh w2, [x0,x25,lsl 1] - cbz w2, .L1561 - cmp w24, 2 - bgt .L1562 - adrp x0, .LC135 - mov w1, w19 - add x0, x0, :lo12:.LC135 - add w24, w24, 1 - bl printk - sxth w24, w24 - ldrb w0, [x20,2] - tbz x0, 4, .L1563 - mov w1, 5 - b .L1573 + bne .L1563 + and w21, w20, 65535 + add x0, x22, :lo12:.LANCHOR3 + add x2, x19, 3376 + mov w1, w21 + add x0, x0, 1360 + b .L1583 .L1563: - mov w1, 2 -.L1573: + cmp w0, 160 + bne .L1564 + and w21, w20, 65535 + add x0, x22, :lo12:.LANCHOR3 + add x2, x19, 3378 + mov w1, w21 + add x0, x0, 1368 + b .L1583 +.L1564: + cbnz w0, .L1561 + ldr x0, [x19, 1120] + ldrh w2, [x0, x27, lsl 1] + cbz w2, .L1565 + cmp w23, 2 + bgt .L1566 + mov w1, w20 + adrp x0, .LC132 + add x0, x0, :lo12:.LC132 + bl printk + ldrb w0, [x21, 2] + add w23, w23, 1 + sxth w23, w23 + tbz x0, 4, .L1567 + mov w1, 5 +.L1577: bfi w0, w1, 5, 3 mov w2, 0 - strb w0, [x20,2] + strb w0, [x21, 2] mov w1, 1 - mov w0, w19 -.L1577: - bl gc_add_sblk - b .L1557 -.L1562: - mov x1, x26 + mov w0, w20 + b .L1581 +.L1567: + mov w1, 2 + b .L1577 +.L1566: + mov x1, x25 mov w2, 656 - mov x0, x27 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1561: - ldrb w0, [x20,2] - ands w0, w0, 24 - bne .L1565 - add x0, x21, :lo12:.LANCHOR3 - add x2, x23, :lo12:.LANCHOR0 - add x0, x0, 1392 - mov w1, w19 - add x2, x2, 3376 - b .L1575 .L1565: - cmp w0, 16 - add x2, x23, :lo12:.LANCHOR0 - add x0, x21, :lo12:.LANCHOR3 - bne .L1566 - add x0, x0, 1400 - mov w1, w19 - add x2, x2, 3378 - b .L1575 -.L1566: - add x0, x0, 1408 - mov w1, w19 - add x2, x2, 3380 -.L1575: + ldrb w0, [x21, 2] + ands w0, w0, 24 + bne .L1569 + add x0, x22, :lo12:.LANCHOR3 + add x2, x19, 3368 + mov w1, w20 + add x0, x0, 1384 +.L1579: bl _insert_free_list -.L1557: - add w19, w19, 1 - sxth w19, w19 - b .L1550 -.L1581: - ldr x0, [x2,3392] - ldrh w1, [x2,3376] - strh w1, [x0,114] - ldrh w1, [x2,3378] - strh w1, [x0,118] - ldrh w1, [x2,3380] - strh w1, [x0,116] - ldrh w1, [x2,3382] - strh w1, [x0,122] - ldrh w1, [x2,3386] - strh w1, [x0,120] - ldrh w1, [x2,3384] - strh w1, [x0,124] - 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 + b .L1561 +.L1569: + cmp w0, 16 + add x0, x22, :lo12:.LANCHOR3 + bne .L1570 + add x2, x19, 3370 + mov w1, w20 + add x0, x0, 1392 + b .L1579 +.L1570: + mov x2, x26 + mov w1, w20 + add x0, x0, 1400 + b .L1579 .size zftl_sblk_list_init, .-zftl_sblk_list_init .align 2 .global pm_free_sblk .type pm_free_sblk, %function pm_free_sblk: - stp x29, x30, [sp, -384]! + stp x29, x30, [sp, -368]! adrp x0, .LANCHOR5 - add x29, sp, 0 add x1, x0, :lo12:.LANCHOR5 - 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] + add x29, sp, 0 + stp x19, x20, [sp, 16] mov x19, x0 - ldrh w1, [x1,264] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrh w1, [x1, 220] cmp w1, 128 - bls .L1584 + bls .L1586 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 - mov w2, 94 add x1, x1, 96 + mov w2, 94 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L1584: - adrp x20, .LANCHOR0 - mov x1, 0 - add x0, x20, :lo12:.LANCHOR0 - mov w2, w1 - mov w6, 65535 - ldr x3, [x0,3392] - add x0, x19, :lo12:.LANCHOR5 - ldrh w4, [x3,688] - ldrh w5, [x0,264] -.L1587: - add x7, x3, x1, lsl 1 - uxth w0, w1 - ldrh w7, [x7,416] - cmp w7, w6 - beq .L1585 - add w2, w2, 1 - uxth w2, w2 -.L1585: - cmp w2, w4 - bcs .L1586 - cmp w2, w5 - bcs .L1586 - add x1, x1, 1 - cmp x1, 128 - bne .L1587 - mov w0, w1 .L1586: - add w0, w0, 1 - mov w19, 128 - add x22, x29, 128 + adrp x21, .LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR5 mov w1, 0 - uxth w0, w0 - mov w2, 256 - cmp w0, 128 - adrp x23, .LANCHOR3 - csel w19, w0, w19, ls - uxth w0, w19 - str w0, [x29,124] - mov x0, x22 - bl ftl_memset - add x0, x20, :lo12:.LANCHOR0 - add x1, x23, :lo12:.LANCHOR3 - mov x3, 0 - ldrb w2, [x0,1257] - ldr x4, [x0,3392] - mov w0, 24 - ldrh w6, [x1,1312] - sub w2, w0, w2 - mov w0, 1 - ldrb w8, [x1,1314] - sub w2, w2, w6 - ldrh w7, [x4,698] - lsl w2, w0, w2 - sub w2, w2, #1 -.L1588: - cmp w7, w3, uxth - bls .L1616 - add x0, x4, x3, lsl 2 - mov x1, 0 - ldr w0, [x0,704] - lsr w0, w0, w6 - and w0, w0, w2 - udiv w0, w0, w8 - uxth w0, w0 + mov w4, 65535 + ldr x0, [x0, 3384] + ldrh w3, [x19, 220] + mov w19, 0 + add x0, x0, 416 + ldrh w2, [x0, 272] .L1589: - ldr w5, [x29,124] - cmp w5, w1, uxth - bls .L1617 - add x5, x4, x1, lsl 1 - ldrh w5, [x5,416] - cmp w5, w0 - bne .L1590 - ldrh w5, [x22,x1,lsl 1] - add w5, w5, 1 - strh w5, [x22,x1,lsl 1] -.L1590: - add x1, x1, 1 - b .L1589 -.L1617: - add x3, x3, 1 - b .L1588 -.L1616: + ldrh w5, [x0] + cmp w5, w4 + beq .L1587 + add w1, w1, 1 + and w1, w1, 65535 +.L1587: + cmp w1, w2 + bcs .L1588 + cmp w1, w3 + bcs .L1588 + add w19, w19, 1 + add x0, x0, 2 + and w19, w19, 65535 + cmp w19, 128 + bne .L1589 +.L1588: + add w19, w19, 1 + mov w0, 128 + and w19, w19, 65535 + add x22, x29, 112 + cmp w19, 129 + mov w2, 256 + csel w19, w19, w0, ne + mov w1, 0 + mov x0, x22 + adrp x23, .LANCHOR3 + bl ftl_memset + str x23, [x29, 104] + add x0, x21, :lo12:.LANCHOR0 add x1, x23, :lo12:.LANCHOR3 - mov x19, 0 - mov w28, 65535 - adrp x25, .LC136 - adrp x26, .LC137 - mov w24, w19 - ldrb w0, [x1,1329] - mov w27, w28 - ldrh w21, [x1,1384] - add x25, x25, :lo12:.LC136 - add x26, x26, :lo12:.LC137 - mul w21, w0, w21 - uxth w21, w21 -.L1593: - ldr w0, [x29,124] - uxth w6, w19 - cmp w6, w0 - bcs .L1618 - add x0, x20, :lo12:.LANCHOR0 - add x2, x23, :lo12:.LANCHOR3 - mov w8, w19 - ldr x0, [x0,3392] - add x1, x0, w19, sxtw 1 - ldrb w4, [x2,1314] - ldrh w3, [x1,416] - ldrh w1, [x0,692] + mov w2, 24 + ldr x5, [x0, 3384] + ldrb w0, [x0, 1205] + ldrh w8, [x1, 1304] + add x4, x5, 704 + sub w2, w2, w0 + ldrb w9, [x1, 1306] + ldrh w1, [x5, 698] + sub w0, w2, w8 + mov w2, 1 + add x1, x1, 176 + lsl w2, w2, w0 + add x1, x5, x1, lsl 2 + sub w2, w2, #1 +.L1591: + cmp x1, x4 + bne .L1594 + ldr x0, [x29, 104] + adrp x27, .LC133 + adrp x28, .LC134 + add x21, x21, :lo12:.LANCHOR0 + add x0, x0, :lo12:.LANCHOR3 + add x27, x27, :lo12:.LC133 + add x28, x28, :lo12:.LC134 + mov x20, 0 + mov w23, 65535 + mov w26, 0 + ldrb w24, [x0, 1321] + ldrh w0, [x0, 1376] + mul w24, w24, w0 + and w24, w24, 65535 +.L1600: + ldr x0, [x21, 3384] + and w25, w20, 65535 + ldr x2, [x29, 104] + mov w6, w20 + add x1, x0, w20, sxtw 1 + add x2, x2, :lo12:.LANCHOR3 + ldrh w3, [x1, 416] + ldrb w4, [x2, 1306] + ldrh w1, [x0, 692] sdiv w1, w1, w4 cmp w1, w3 - bne .L1594 - ldrb w1, [x2,1329] - ldrh w2, [x2,1384] + bne .L1595 + ldrb w1, [x2, 1321] + ldrh w2, [x2, 1376] mul w1, w1, w2 - strh w1, [x22,x19,lsl 1] -.L1594: - ldrh w2, [x22,x19,lsl 1] - cmp w21, w2 - bls .L1595 - cmp w2, wzr - csel w24, w24, w6, eq - csel w21, w21, w2, eq + strh w1, [x22, x20, lsl 1] .L1595: - cmp w3, w27 - beq .L1597 - ldrh w1, [x0,74] + ldrh w2, [x22, x20, lsl 1] + cmp w2, w24 + bcs .L1596 + cmp w2, 0 + csel w26, w26, w25, eq + csel w24, w24, w2, eq +.L1596: + ldrh w1, [x0, 74] cmp w1, 2 bls .L1597 - add x4, x20, :lo12:.LANCHOR0 + mov w1, 65535 + cmp w3, w1 + beq .L1597 + ldr x4, [x21, 1104] ubfiz x1, x3, 2, 16 - ldrh w0, [x0,92] - ldr x4, [x4,1096] + ldrh w0, [x0, 92] add w0, w0, 4 - ldrh w4, [x4,x1] + ldrh w4, [x4, x1] and w4, w4, 2047 cmp w4, w0 bgt .L1597 - mov w1, w8 - mov x0, x25 - str x6, [x29,104] - str x8, [x29,112] + mov w1, w6 + str w6, [x29, 100] + mov x0, x27 bl printk - ldr x6, [x29,104] - ldr x8, [x29,112] - mov w28, w6 + ldr w6, [x29, 100] + mov w23, w25 .L1597: - ldrh w2, [x22,x19,lsl 1] - cbnz w2, .L1598 - add x0, x20, :lo12:.LANCHOR0 - sxtw x6, w8 - ldr x4, [x0,3392] - add x0, x6, 208 - ldrh w3, [x4,x0,lsl 1] - cmp w3, w27 + ldrh w0, [x22, x20, lsl 1] + cbnz w0, .L1598 + sxtw x25, w6 + ldr x0, [x21, 3384] + add x1, x25, 208 + ldrh w3, [x0, x1, lsl 1] + mov w1, 65535 + cmp w3, w1 beq .L1598 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L1599 - ldrh w4, [x4,688] - mov x0, x26 - mov w1, w8 - str x6, [x29,112] + adrp x1, .LANCHOR2 + ldr w1, [x1, #:lo12:.LANCHOR2] + tbz x1, 12, .L1599 + ldrh w4, [x0, 688] + mov w2, 0 + mov w1, w6 + mov x0, x28 bl printk - ldr x6, [x29,112] .L1599: - add x1, x20, :lo12:.LANCHOR0 - add x6, x6, 208 - str x1, [x29,104] - str x6, [x29,112] - ldr x0, [x1,3392] - ldrh w0, [x0,x6,lsl 1] + ldr x0, [x21, 3384] + add x25, x25, 208 + ldrh w0, [x0, x25, lsl 1] bl ftl_free_sblk - ldr x1, [x29,104] - ldr x6, [x29,112] - ldr x0, [x1,3392] + ldr x0, [x21, 3384] mov w1, -1 - strh w1, [x0,x6,lsl 1] - ldrh w1, [x0,688] + strh w1, [x0, x25, lsl 1] + ldrh w1, [x0, 688] sub w1, w1, #1 - strh w1, [x0,688] + strh w1, [x0, 688] .L1598: - add x19, x19, 1 - b .L1593 -.L1618: + add x20, x20, 1 + cmp w19, w20, uxth + bhi .L1600 mov w0, 65535 - cmp w28, w0 - csel w0, w24, w28, eq - 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], 384 + cmp w23, w0 + csel w0, w26, w23, eq + 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], 368 ret +.L1594: + ldr w0, [x4] + add x6, x5, 416 + mov x3, 0 + lsr w0, w0, w8 + and w0, w0, w2 + udiv w0, w0, w9 + and w0, w0, 65535 +.L1593: + ldrh w7, [x6] + cmp w7, w0 + bne .L1592 + ldrh w7, [x22, x3, lsl 1] + add w7, w7, 1 + strh w7, [x22, x3, lsl 1] +.L1592: + add x3, x3, 1 + add x6, x6, 2 + cmp w19, w3, uxth + bhi .L1593 + add x4, x4, 4 + b .L1591 .size pm_free_sblk, .-pm_free_sblk .align 2 .global ftl_memcpy @@ -10283,47 +9939,47 @@ ftl_memcpy: .global flash_info_data_init .type flash_info_data_init, %function flash_info_data_init: - adrp x1, .LANCHOR2 stp x29, x30, [sp, -32]! + adrp x1, .LANCHOR2 add x29, sp, 0 - ldr w0, [x1,#:lo12:.LANCHOR2] - stp x19, x20, [sp,16] + ldr w0, [x1, #:lo12:.LANCHOR2] + stp x19, x20, [sp, 16] mov x20, x1 - tbz x0, 12, .L1621 + tbz x0, 12, .L1614 adrp x2, .LANCHOR4 - adrp x0, .LC138 add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 - mov w1, 120 + adrp x0, .LC135 add x2, x2, 112 + mov w1, 120 + add x0, x0, :lo12:.LC135 bl printk -.L1621: +.L1614: adrp x19, .LANCHOR0 - mov w1, 0 add x19, x19, :lo12:.LANCHOR0 mov w2, 2048 - ldr x0, [x19,1128] + mov w1, 0 + ldr x0, [x19, 1048] bl ftl_memset - ldr x1, [x19,1128] - mov w0, 21321 - movk w0, 0x5359, lsl 16 + ldr x0, [x19, 1048] + mov w1, 21321 + movk w1, 0x5359, lsl 16 mov w2, 32 - str w0, [x1] + str w1, [x0] mov w1, 2032 - ldr x0, [x19,1128] + ldr x0, [x19, 1048] add x0, x0, 80 - str w1, [x0,-72] + str w1, [x0, -72] mov w1, 1 - strh w1, [x0,-64] + strh w1, [x0, -64] add x1, x19, 1160 bl ftl_memcpy - ldr x0, [x19,1128] + ldr x0, [x19, 1048] add x1, x20, :lo12:.LANCHOR2 - add x1, x1, 8 mov w2, 32 + add x1, x1, 8 add x0, x0, 48 bl ftl_memcpy - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size flash_info_data_init, .-flash_info_data_init @@ -10332,15 +9988,15 @@ flash_info_data_init: .type ftl_memcpy32, %function ftl_memcpy32: mov x3, 0 -.L1626: +.L1620: cmp w2, w3 - bls .L1628 - ldr w4, [x1,x3,lsl 2] - str w4, [x0,x3,lsl 2] - add x3, x3, 1 - b .L1626 -.L1628: + bhi .L1621 ret +.L1621: + ldr w4, [x1, x3, lsl 2] + str w4, [x0, x3, lsl 2] + add x3, x3, 1 + b .L1620 .size ftl_memcpy32, .-ftl_memcpy32 .align 2 .global ftl_memcmp @@ -10357,12 +10013,12 @@ ftl_memcmp: .global timer_get_time .type timer_get_time, %function timer_get_time: - adrp x0, jiffies stp x29, x30, [sp, -16]! + adrp x0, jiffies add x29, sp, 0 - ldr x1, [x0,#:lo12:jiffies] - adrp x0, .LANCHOR5+272 - ldr x0, [x0,#:lo12:.LANCHOR5+272] + ldr x1, [x0, #:lo12:jiffies] + adrp x0, .LANCHOR5+224 + ldr x0, [x0, #:lo12:.LANCHOR5+224] sub x0, x1, x0 bl jiffies_to_msecs ldp x29, x30, [sp], 16 @@ -10372,28 +10028,28 @@ timer_get_time: .global StorageSysDataLoad .type StorageSysDataLoad, %function StorageSysDataLoad: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! mov w2, 512 add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 + stp x19, x20, [sp, 16] mov x19, x1 - mov x0, x1 mov w1, 0 + mov w20, w0 + mov x0, x19 bl ftl_memset bl rknand_device_lock - adrp x0, .LANCHOR5+280 + adrp x0, .LANCHOR5+232 mov x2, x19 mov w1, 1 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x3, [x0,24] + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x3, [x0, 24] mov w0, w20 blr x3 - str x0, [x29,40] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,40] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size StorageSysDataLoad, .-StorageSysDataLoad .align 2 @@ -10402,19 +10058,21 @@ StorageSysDataLoad: StorageSysDataStore: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x0, [x29,16] - str x1, [x29,24] + stp x19, x20, [sp, 16] + mov w19, w0 + mov x20, x1 bl rknand_device_lock - adrp x1, .LANCHOR5+280 - ldr x2, [x29,24] - ldr x0, [x29,16] - ldr x1, [x1,#:lo12:.LANCHOR5+280] - ldr x3, [x1,32] + adrp x0, .LANCHOR5+232 + mov x2, x20 mov w1, 1 + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x3, [x0, 32] + mov w0, w19 blr x3 - str x0, [x29,24] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,24] + mov w0, w19 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size StorageSysDataStore, .-StorageSysDataStore @@ -10424,20 +10082,24 @@ StorageSysDataStore: FlashBootVendorRead: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x0, [x29,24] - str x1, [x29,32] - str x2, [x29,40] + stp x19, x20, [sp, 16] + mov w19, w0 + mov w20, w1 + str x21, [sp, 32] + mov x21, x2 bl rknand_device_lock - adrp x3, .LANCHOR5+280 - ldr x1, [x29,32] - ldr x2, [x29,40] - ldr x0, [x29,24] - ldr x3, [x3,#:lo12:.LANCHOR5+280] - ldr x3, [x3,8] + adrp x0, .LANCHOR5+232 + mov x2, x21 + mov w1, w20 + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x3, [x0, 8] + mov w0, w19 blr x3 - str x0, [x29,40] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,40] + ldr x21, [sp, 32] + mov w0, w19 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size FlashBootVendorRead, .-FlashBootVendorRead @@ -10447,20 +10109,24 @@ FlashBootVendorRead: FlashBootVendorWrite: stp x29, x30, [sp, -48]! add x29, sp, 0 - str x0, [x29,24] - str x1, [x29,32] - str x2, [x29,40] + stp x19, x20, [sp, 16] + mov w19, w0 + mov w20, w1 + str x21, [sp, 32] + mov x21, x2 bl rknand_device_lock - adrp x3, .LANCHOR5+280 - ldr x1, [x29,32] - ldr x2, [x29,40] - ldr x0, [x29,24] - ldr x3, [x3,#:lo12:.LANCHOR5+280] - ldr x3, [x3,16] + adrp x0, .LANCHOR5+232 + mov x2, x21 + mov w1, w20 + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x3, [x0, 16] + mov w0, w19 blr x3 - str x0, [x29,40] + mov w19, w0 bl rknand_device_unlock - ldr x0, [x29,40] + ldr x21, [sp, 32] + mov w0, w19 + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size FlashBootVendorWrite, .-FlashBootVendorWrite @@ -10468,24 +10134,24 @@ FlashBootVendorWrite: .global flash_sram_load_store .type flash_sram_load_store, %function flash_sram_load_store: - adrp x4, .LANCHOR5+288 - mov x6, x0 stp x29, x30, [sp, -16]! - uxtw x1, w1 + adrp x4, .LANCHOR5+240 + uxtw x5, w1 add x29, sp, 0 - ldr x4, [x4,#:lo12:.LANCHOR5+288] + ldr x4, [x4, #:lo12:.LANCHOR5+240] add x4, x4, 4096 - cbnz w2, .L1636 - add x1, x4, x1 - b .L1638 -.L1636: - add x0, x4, x1 - mov x1, x6 -.L1638: + cbnz w2, .L1635 mov w2, w3 + add x1, x4, x5 +.L1638: bl ftl_memcpy ldp x29, x30, [sp], 16 ret +.L1635: + mov x1, x0 + mov w2, w3 + add x0, x4, x5 + b .L1638 .size flash_sram_load_store, .-flash_sram_load_store .align 2 .global FlashCs123Init @@ -10494,18 +10160,320 @@ FlashCs123Init: ret .size FlashCs123Init, .-FlashCs123Init .align 2 + .global ftl_dma32_malloc + .type ftl_dma32_malloc, %function +ftl_dma32_malloc: + stp x29, x30, [sp, -48]! + cmp w0, 8192 + add x29, sp, 0 + stp x19, x20, [sp, 16] + str x21, [sp, 32] + ble .L1641 + bl ftl_malloc +.L1640: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L1641: + adrp x1, .LANCHOR5 + add x21, x1, :lo12:.LANCHOR5 + add w19, w0, 63 + mov x20, x1 + and w19, w19, -64 + ldr w0, [x21, 248] + cmp w19, w0 + ble .L1643 + mov w0, 16384 + bl ftl_malloc + str x0, [x21, 256] + mov w0, 16384 + str w0, [x21, 248] +.L1643: + add x1, x20, :lo12:.LANCHOR5 + ldr w0, [x1, 248] + sub w0, w0, w19 + str w0, [x1, 248] + ldr x0, [x1, 256] + add x19, x0, w19, sxtw + str x19, [x1, 256] + b .L1640 + .size ftl_dma32_malloc, .-ftl_dma32_malloc + .align 2 + .global nandc_init + .type nandc_init, %function +nandc_init: + stp x29, x30, [sp, -64]! + add x29, sp, 0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + mov x22, x0 + stp x19, x20, [sp, 16] + ldr w0, [x21, #:lo12:.LANCHOR2] + str wzr, [x29, 56] + tbz x0, 12, .L1646 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + adrp x0, .LC136 + mov x2, x22 + add x1, x1, 136 + add x0, x0, :lo12:.LC136 + bl printk +.L1646: + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + ldr w3, [x22, 352] + mov w2, 6 + mov x20, x0 + strb w2, [x1, 1028] + mov w2, 12336 + str x22, [x1, 1056] + movk w2, 0x5638, lsl 16 + cmp w3, w2 + bne .L1647 + mov w0, 8 + strb w0, [x1, 1028] +.L1647: + ldr w1, [x22, 128] + mov w0, 12336 + movk w0, 0x5639, lsl 16 + cmp w1, w0 + bne .L1648 + add x0, x20, :lo12:.LANCHOR0 + mov w1, 9 + strb w1, [x0, 1028] +.L1648: + add x19, x20, :lo12:.LANCHOR0 + ldrb w0, [x19, 1028] + cmp w0, 9 + bne .L1649 + mov w0, 1 + strb w0, [x19, 1251] + ldr w0, [x29, 56] + mov w1, 2 + orr w0, w0, 256 + str w0, [x29, 56] + ldr w0, [x29, 56] + bfi w0, w1, 18, 3 + str w0, [x29, 56] + mov w1, 4161 + ldr w0, [x29, 56] + str w0, [x22] + ldr x0, [x19, 1056] + str wzr, [x0, 520] + str w1, [x0, 4] + mov w1, 8321 + ldr x0, [x19, 1056] + str w1, [x0, 8] + mov w1, 4099 + movk w1, 0x10, lsl 16 + str w1, [x0, 80] + mov w1, 38 + str w1, [x0, 84] + mov w1, 39 + str w1, [x0, 84] + ldr w1, [x21, #:lo12:.LANCHOR2] + tbz x1, 12, .L1651 + ldr w1, [x0] + ldr w2, [x0, 8] + ldr w3, [x0, 80] + ldr w4, [x0, 84] + ldr w5, [x0, 88] +.L1664: + adrp x0, .LC137 + add x0, x0, :lo12:.LC137 + bl printk +.L1651: + add x0, x20, :lo12:.LANCHOR0 + mov w1, 1 + strb w1, [x0, 1252] + ldr w1, [x21, #:lo12:.LANCHOR2] + strh wzr, [x0, 1296] + strb wzr, [x0, 1249] + tbz x1, 12, .L1645 + ldrb w1, [x0, 1028] + adrp x0, .LC138 + add x0, x0, :lo12:.LC138 + bl printk +.L1645: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L1649: + ldr w0, [x29, 56] + mov w1, 1 + strb wzr, [x19, 1251] + orr w0, w0, 256 + str w0, [x29, 56] + ldr w0, [x29, 56] + bfi w0, w1, 24, 3 + str w0, [x29, 56] + mov w1, 4193 + ldr w0, [x29, 56] + str w0, [x22] + ldr x0, [x19, 1056] + str wzr, [x0, 336] + str w1, [x0, 4] + mov w1, 8321 + ldr x0, [x19, 1056] + str w1, [x0, 344] + mov w1, 4099 + movk w1, 0x10, lsl 16 + str w1, [x0, 304] + mov w1, 38 + str w1, [x0, 308] + mov w1, 39 + str w1, [x0, 308] + mov w0, 2048 + bl ftl_dma32_malloc + str x0, [x19, 1256] + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 12, .L1651 + ldr x0, [x19, 1056] + ldr w1, [x0] + ldr w2, [x0, 344] + ldr w3, [x0, 304] + ldr w4, [x0, 308] + ldr w5, [x0, 312] + b .L1664 + .size nandc_init, .-nandc_init + .align 2 + .global zbuf_init + .type zbuf_init, %function +zbuf_init: + stp x29, x30, [sp, -48]! + adrp x0, .LANCHOR0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + add x19, x0, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x19, x19, 1304 + adrp x22, .LANCHOR3 + mov x20, x0 + add x22, x22, :lo12:.LANCHOR3 + mov w21, 0 +.L1666: + and w0, w21, 255 + strb w0, [x19, 1] + add w1, w0, 1 + ldrb w0, [x22, 1946] + strb w1, [x19] + add w21, w21, 1 + strb wzr, [x19, 2] + add x19, x19, 64 + str xzr, [x19, -48] + lsl w0, w0, 9 + bl ftl_dma32_malloc + str x0, [x19, -56] + mov w0, 64 + bl ftl_dma32_malloc + str x0, [x19, -40] + cmp w21, 32 + bne .L1666 + add x0, x20, :lo12:.LANCHOR0 + mov w1, -1 + strb wzr, [x0, 3352] + strb w1, [x0, 3288] + strb w21, [x0, 3353] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret + .size zbuf_init, .-zbuf_init + .align 2 + .global gc_init + .type gc_init, %function +gc_init: + stp x29, x30, [sp, -48]! + mov w2, 2216 + mov w1, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR3 + stp x21, x22, [sp, 32] + add x19, x19, :lo12:.LANCHOR3 + adrp x21, .LANCHOR5 + add x21, x21, :lo12:.LANCHOR5 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + add x22, x20, 3416 + strb wzr, [x19, 1337] + strb wzr, [x21, 264] + mov x0, x22 + strh wzr, [x19, 1378] + str wzr, [x21, 268] + bl ftl_memset + ldrh w1, [x19, 1376] + mov w0, -1 + ldrb w3, [x19, 1321] + strh w0, [x20, 3416] + lsr w0, w1, 2 + lsr w2, w1, 1 + strh w0, [x20, 3452] + strh w0, [x20, 3402] + ldrh w0, [x19, 1338] + strh w2, [x20, 3454] + mul w2, w1, w3 + strh w1, [x20, 3400] + mov w1, 4 + and w2, w2, 65535 + strh w1, [x21, 272] + sub w4, w2, #32 + mul w0, w0, w3 + strh w4, [x20, 3404] + strh w2, [x20, 3406] + strh wzr, [x19, 1352] + lsl w0, w0, 2 + strh wzr, [x19, 1354] + strh wzr, [x19, 1356] + str xzr, [x20, 3424] + bl ftl_dma32_malloc + ldrb w1, [x19, 1321] + str x0, [x21, 280] + ldrh w0, [x19, 1338] + mul w0, w0, w1 + lsl w0, w0, 2 + bl ftl_dma32_malloc + ldrh w1, [x19, 1338] + str x0, [x21, 288] + ldrb w0, [x19, 1321] + mul w0, w1, w0 + bl ftl_dma32_malloc + str x0, [x19, 1328] + ldrb w1, [x19, 1321] + ldrh w0, [x19, 1338] + mul w0, w0, w1 + lsl w0, w0, 2 + bl ftl_dma32_malloc + ldrb w1, [x19, 1321] + str x0, [x19, 1312] + ldrh w0, [x19, 1338] + mul w0, w0, w1 + lsl w0, w0, 2 + bl ftl_dma32_malloc + str x0, [x21, 296] + ldrh w0, [x19, 1380] + ldp x21, x22, [sp, 32] + lsr w0, w0, 2 + strh w0, [x20, 3392] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 + ret + .size gc_init, .-gc_init + .align 2 .global rk_ftl_de_init .type rk_ftl_de_init, %function rk_ftl_de_init: stp x29, x30, [sp, -16]! - adrp x0, .LC139 mov w1, 0 - add x29, sp, 0 + adrp x0, .LC139 add x0, x0, :lo12:.LC139 + add x29, sp, 0 bl printk - adrp x0, .LANCHOR5+280 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x0, [x0,80] + adrp x0, .LANCHOR5+232 + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x0, [x0, 80] blr x0 ldp x29, x30, [sp], 16 ret @@ -10514,11 +10482,11 @@ rk_ftl_de_init: .global rk_ftl_cache_write_back .type rk_ftl_cache_write_back, %function rk_ftl_cache_write_back: - adrp x0, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR5+232 add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x1, [x0,64] + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x1, [x0, 64] mov w0, 0 blr x1 ldp x29, x30, [sp], 16 @@ -10528,11 +10496,11 @@ rk_ftl_cache_write_back: .global rk_nand_suspend .type rk_nand_suspend, %function rk_nand_suspend: - adrp x0, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR5+232 add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x0, [x0,88] + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x0, [x0, 88] blr x0 ldp x29, x30, [sp], 16 ret @@ -10541,11 +10509,11 @@ rk_nand_suspend: .global rk_nand_resume .type rk_nand_resume, %function rk_nand_resume: - adrp x0, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR5+232 add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x0, [x0,96] + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x0, [x0, 96] blr x0 ldp x29, x30, [sp], 16 ret @@ -10554,11 +10522,11 @@ rk_nand_resume: .global rk_ftl_get_capacity .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: - adrp x0, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x0, .LANCHOR5+232 add x29, sp, 0 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x1, [x0,72] + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x1, [x0, 72] mov w0, 0 blr x1 ldp x29, x30, [sp], 16 @@ -10568,11 +10536,11 @@ rk_ftl_get_capacity: .global rk_nandc_get_irq_status .type rk_nandc_get_irq_status, %function rk_nandc_get_irq_status: - adrp x1, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x1, .LANCHOR5+232 add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR5+280] - ldr x1, [x1,120] + ldr x1, [x1, #:lo12:.LANCHOR5+232] + ldr x1, [x1, 120] blr x1 ldp x29, x30, [sp], 16 ret @@ -10581,11 +10549,11 @@ rk_nandc_get_irq_status: .global rknand_proc_ftlread .type rknand_proc_ftlread, %function rknand_proc_ftlread: - adrp x1, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x1, .LANCHOR5+232 add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR5+280] - ldr x1, [x1,128] + ldr x1, [x1, #:lo12:.LANCHOR5+232] + ldr x1, [x1, 128] blr x1 ldp x29, x30, [sp], 16 ret @@ -10594,12 +10562,12 @@ rknand_proc_ftlread: .global FtlRead .type FtlRead, %function FtlRead: - adrp x4, .LANCHOR5+280 - uxtb w0, w0 stp x29, x30, [sp, -16]! + adrp x4, .LANCHOR5+232 + and w0, w0, 255 add x29, sp, 0 - ldr x4, [x4,#:lo12:.LANCHOR5+280] - ldr x4, [x4,40] + ldr x4, [x4, #:lo12:.LANCHOR5+232] + ldr x4, [x4, 40] blr x4 ldp x29, x30, [sp], 16 ret @@ -10608,11 +10576,11 @@ FtlRead: .global FtlDiscard .type FtlDiscard, %function FtlDiscard: - adrp x2, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x2, .LANCHOR5+232 add x29, sp, 0 - ldr x2, [x2,#:lo12:.LANCHOR5+280] - ldr x2, [x2,56] + ldr x2, [x2, #:lo12:.LANCHOR5+232] + ldr x2, [x2, 56] blr x2 ldp x29, x30, [sp], 16 ret @@ -10621,11 +10589,11 @@ FtlDiscard: .global rk_ftl_garbage_collect .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: - adrp x2, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x2, .LANCHOR5+232 add x29, sp, 0 - ldr x2, [x2,#:lo12:.LANCHOR5+280] - ldr x2, [x2,104] + ldr x2, [x2, #:lo12:.LANCHOR5+232] + ldr x2, [x2, 104] blr x2 ldp x29, x30, [sp], 16 ret @@ -10634,11 +10602,11 @@ rk_ftl_garbage_collect: .global ReadFlashInfo .type ReadFlashInfo, %function ReadFlashInfo: - adrp x1, .LANCHOR5+280 stp x29, x30, [sp, -16]! + adrp x1, .LANCHOR5+232 add x29, sp, 0 - ldr x1, [x1,#:lo12:.LANCHOR5+280] - ldr x1, [x1,112] + ldr x1, [x1, #:lo12:.LANCHOR5+232] + ldr x1, [x1, 112] blr x1 ldp x29, x30, [sp], 16 ret @@ -10647,18 +10615,17 @@ ReadFlashInfo: .global rknand_print_hex .type rknand_print_hex, %function rknand_print_hex: - stp x29, x30, [sp, -16]! mul w6, w2, w3 - mov x7, x0 - mov w4, w2 - adrp x0, .LC140 - mov w2, 0 - add x29, sp, 0 + stp x29, x30, [sp, -16]! mov x5, x1 - add x0, x0, :lo12:.LC140 - mov x1, x7 + mov w4, w2 + add x29, sp, 0 + mov x1, x0 + mov w7, 0 mov w3, 16 - mov w7, w2 + mov w2, 0 + adrp x0, .LC140 + add x0, x0, :lo12:.LC140 bl print_hex_dump ldp x29, x30, [sp], 16 ret @@ -10668,589 +10635,590 @@ 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 - add x29, sp, 0 - stp x19, x20, [sp,16] - 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] + mov w4, -83 mov w1, -82 - cmp w19, 2 - ldr x25, [x0,1128] + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x23, x24, [sp, 48] + mov w23, w0 + add x0, x20, :lo12:.LANCHOR0 + stp x25, x26, [sp, 64] + stp x21, x22, [sp, 32] + cmp w23, 2 + stp x27, x28, [sp, 80] + ldr x26, [x0, 1048] + add x0, x26, 112 + str x0, [x29, 136] mov w0, -84 - str x3, [x29,136] - add x26, x25, 128 - add x22, x25, 112 - strb w0, [x25,128] + add x25, x26, 128 + strb w0, [x26, 128] mov w0, -81 - strb w19, [x25,112] - strb w2, [x25,129] - strb w1, [x25,130] - strb w0, [x25,131] - bne .L1653 + strb w23, [x26, 112] + strb w4, [x26, 129] + strb w1, [x26, 130] + strb w0, [x26, 131] + bne .L1696 mov w0, -89 - strb w0, [x22,16] + strb w0, [x26, 128] adrp x0, .LANCHOR2+425 mov w1, -9 - strb w1, [x0,#:lo12:.LANCHOR2+425] - b .L1716 -.L1653: - cmp w19, 3 - bne .L1655 - mov x5, 0 -.L1656: - sub w0, w5, #80 - strb w0, [x26,x5] - add x5, x5, 1 - cmp x5, 8 - bne .L1656 - mov w27, w5 - mov w28, w5 - b .L1654 -.L1655: - cmp w19, 4 - bne .L1657 - 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 .L1654 -.L1657: - cmp w19, 5 - bne .L1658 - mov w0, 56 - strb w0, [x25,128] - mov w0, 57 - strb w0, [x25,129] - mov w0, 58 - mov w27, 8 - strb w0, [x25,130] - mov w0, 59 - strb w0, [x25,131] - b .L1758 -.L1658: - cmp w19, 6 - bne .L1659 - mov w0, 14 - strb w0, [x25,128] - mov w0, 15 - strb w0, [x25,129] - mov w0, 16 - mov w27, 12 - strb w0, [x25,130] - mov w0, 17 - strb w0, [x25,131] - b .L1758 -.L1659: - cmp w19, 7 - bne .L1660 - mov x0, 0 -.L1661: - sub w1, w0, #80 - strb w1, [x26,x0] - add x0, x0, 1 - cmp x0, 8 - bne .L1661 - mov w0, -44 - mov w27, 12 - strb w0, [x25,136] - mov w28, 10 - mov w0, -43 - strb w0, [x25,137] - b .L1654 -.L1660: - cmp w19, 8 - bne .L1716 - 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 .L1654 -.L1716: - mov w27, 7 -.L1758: - mov w28, 4 -.L1654: - sub w0, w19, #1 + strb w1, [x0, #:lo12:.LANCHOR2+425] +.L1761: + mov w28, 7 + b .L1806 +.L1696: + cmp w23, 3 + bne .L1698 + mov x4, 0 +.L1699: + sub w0, w4, #80 + strb w0, [x25, x4] + add x4, x4, 1 + cmp x4, 8 + bne .L1699 + mov w28, w4 + mov w27, w4 +.L1697: + sub w0, w23, #1 cmp w0, 1 - bhi .L1755 - ldr x0, [x29,136] - adrp x24, .LANCHOR2 - add x24, x24, :lo12:.LANCHOR2 - mov w23, 0 - add x19, x0, :lo12:.LANCHOR0 - mov w5, 55 - add x24, x24, 408 -.L1662: - ldrb w0, [x19,1153] - cmp w0, w23 - bls .L1669 - add x0, x19, w23, sxtw - ldrb w0, [x0,1248] - mov x20, 160 - ldr x21, [x19,1048] - ubfiz x1, x0, 8, 8 - mov x25, 0 - madd x20, x0, x20, x22 - add x21, x21, x1 - add x20, x20, 32 -.L1664: - str w5, [x21,2056] - str x5, [x29,136] - ldrb w0, [x26,x25] - str w0, [x21,2052] - mov x0, 1000 - bl __const_udelay - ldr w0, [x21,2048] - strb w0, [x20,x25] - add x25, x25, 1 - ldr x5, [x29,136] - cmp w28, w25, uxtb - bhi .L1664 - mov x0, 0 -.L1665: - add w2, w0, 8 - mov x1, 0 -.L1666: - add x3, x1, x0 - add x1, x1, 4 - add x3, x24, x3 - cmp x1, 24 - ldrb w4, [x3,4] - ldrb w3, [x20,x0] - add w3, w4, w3 - strb w3, [x20,w2,sxtw] - add w2, w2, 8 - bne .L1666 - add x0, x0, 1 - cmp x0, 4 - bne .L1665 - add w23, w23, 1 - strb wzr, [x20,16] - strb wzr, [x20,24] - strb wzr, [x20,32] - uxtb w23, w23 - strb wzr, [x20,40] - strb wzr, [x20,48] - strb wzr, [x20,41] - strb wzr, [x20,49] - b .L1662 -.L1755: - sub w0, w19, #3 - cmp w0, 5 - bhi .L1669 - mul w0, w28, w27 - sub w24, w28, #1 - mov w20, 0 - asr w23, w0, 1 - lsl w0, w0, 4 - str w0, [x29,128] - lsl w0, w23, 1 - uxtb x24, w24 - str w0, [x29,124] - sub w0, w19, #5 - adrp x26, .LANCHOR5 - str w0, [x29,132] - add x0, x24, 1 - str x0, [x29,112] -.L1670: - ldr x0, [x29,136] - add x1, x0, :lo12:.LANCHOR0 - ldrb w0, [x1,1153] - cmp w0, w20 - bhi .L1715 -.L1669: - strb w28, [x22,1] - strb w27, [x22,2] - 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] + bhi .L1705 + add x20, x20, :lo12:.LANCHOR0 + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + add x23, x20, 1024 + add x21, x21, 408 + mov w26, 0 +.L1706: + ldrb w0, [x20, 1153] + cmp w0, w26 + bhi .L1712 +.L1713: + ldr x0, [x29, 136] + strb w27, [x0, 1] + strb w28, [x0, 2] + 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], 144 ret -.L1715: - add x0, x1, w20, sxtw - ldrb w24, [x0,1248] - str x1, [x29,104] - mov x21, 160 - mov w0, w24 - bl zftl_flash_exit_slc_mode - ldr x1, [x29,104] - sxtw x0, w24 - ubfiz x2, x24, 8, 8 - madd x21, x0, x21, x22 - ldr x0, [x1,1048] - mov w1, 255 - str x1, [x29,104] - add x21, x21, 32 - add x24, x0, x2 - str w1, [x24,2056] - bl nandc_wait_flash_ready - cmp w19, 8 - ldr x1, [x29,104] - bne .L1671 - 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 x21, x25, 144 - 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] - b .L1761 -.L1671: - mov w0, 54 - cmp w19, 4 - str w0, [x24,2056] - bne .L1673 - mov w0, 64 - str w1, [x24,2052] - str w0, [x24,2048] - mov w0, 204 - b .L1759 -.L1673: - ldr w0, [x29,132] - cmp w0, 1 - bhi .L1675 - ldrb w0, [x25,128] - str w0, [x24,2052] - mov w0, 82 - b .L1760 -.L1675: - cmp w19, 7 - bne .L1674 - mov w0, 174 - str w0, [x24,2052] - str wzr, [x24,2048] - mov w0, 176 -.L1759: - str w0, [x24,2052] - mov w0, 77 -.L1760: - str w0, [x24,2048] -.L1674: - 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 w19, 6 - str wzr, [x24,2052] - str wzr, [x24,2052] - bne .L1676 - mov w0, 31 - str w0, [x24,2052] - b .L1677 -.L1676: - str wzr, [x24,2052] -.L1677: - mov w0, 2 -.L1761: - str w0, [x24,2052] - mov w0, 48 - str wzr, [x24,2052] - str w0, [x24,2056] - bl nandc_wait_flash_ready - ldr w0, [x29,132] - cmp w0, 1 - cset w8, ls - cmp w19, 8 - cset w7, eq - cbnz w8, .L1718 - cbnz w7, .L1718 - cmp w19, 7 - mov w1, 32 - mov w0, 2 - csel w1, w0, w1, ne - b .L1678 -.L1718: - mov w1, 16 -.L1678: - adrp x0, .LANCHOR5 - mov x9, 0 - add x0, x0, :lo12:.LANCHOR5 - ldr x0, [x0,296] -.L1679: - ldr w10, [x24,2048] - strb w10, [x0,x9] - add x9, x9, 1 - cmp w1, w9, uxtb - bhi .L1679 - cbz w7, .L1680 - mov w1, 0 -.L1682: - ldrb w9, [x0] - cmp w9, 50 - beq .L1681 - ldrb w9, [x0,1] - cmp w9, 5 - beq .L1681 - add w1, w1, 1 - add x0, x0, 4 - uxtb w1, w1 - cmp w1, 8 - bne .L1682 - b .L1683 -.L1681: - cmp w1, 7 - bne .L1684 -.L1683: - adrp x0, .LC141 - mov w1, 0 - add x0, x0, :lo12:.LC141 - bl printk -.L1685: - b .L1685 -.L1680: - cmp w19, 7 - bne .L1686 - mov w1, w7 -.L1688: - ldrb w9, [x0] - cmp w9, 12 - beq .L1687 - ldrb w9, [x0,1] - cmp w9, 10 - beq .L1687 - add w1, w1, 1 - add x0, x0, 4 - uxtb w1, w1 - cmp w1, 8 - bne .L1688 - b .L1689 -.L1687: - cmp w1, 7 - bne .L1684 -.L1689: - adrp x0, .LC141 - mov w1, 0 - add x0, x0, :lo12:.LC141 - bl printk -.L1690: - b .L1690 -.L1686: - cmp w19, 6 - bne .L1684 - mov x1, 0 -.L1691: - ldrb w9, [x0,x1] - cmp w9, 12 - beq .L1684 - add x9, x0, x1 - ldrb w9, [x9,8] - cmp w9, 4 - beq .L1684 - add x1, x1, 1 - cmp x1, 8 - bne .L1691 - adrp x0, .LC141 - mov w1, 0 - add x0, x0, :lo12:.LC141 - bl printk -.L1693: - b .L1693 -.L1684: - add x0, x26, :lo12:.LANCHOR5 - ldr x10, [x0,296] +.L1698: + cmp w23, 4 + bne .L1700 + mov w5, -52 + strb w5, [x26, 128] + mov w5, -65 + strb w5, [x26, 129] + mov w5, -86 + strb w5, [x26, 130] + mov w5, -85 + mov w28, 8 + strb w5, [x26, 131] + mov w27, w28 + mov w5, -51 + strb w4, [x26, 133] + strb w5, [x26, 132] + strb w1, [x26, 134] + strb w0, [x26, 135] + b .L1697 +.L1700: + cmp w23, 5 + bne .L1701 + mov w0, 56 + strb w0, [x26, 128] + mov w0, 57 + strb w0, [x26, 129] + mov w0, 58 + mov w28, 8 + strb w0, [x26, 130] + mov w0, 59 + strb w0, [x26, 131] +.L1806: + mov w27, 4 + b .L1697 +.L1701: + cmp w23, 6 + bne .L1702 + mov w0, 14 + strb w0, [x26, 128] + mov w0, 15 + strb w0, [x26, 129] + mov w0, 16 + mov w28, 12 + strb w0, [x26, 130] + mov w0, 17 + strb w0, [x26, 131] + b .L1806 +.L1702: + cmp w23, 7 + bne .L1703 mov x0, 0 -.L1694: - ldr w1, [x29,128] - cmp w1, w0 - ble .L1763 - ldr w1, [x24,2048] - strb w1, [x10,x0] +.L1704: + sub w1, w0, #80 + strb w1, [x25, x0] add x0, x0, 1 - b .L1694 -.L1763: - add x0, x26, :lo12:.LANCHOR5 - mov w11, w23 - mov w9, 8 - ldr x12, [x0,296] -.L1697: + cmp x0, 8 + bne .L1704 + mov w0, -44 + mov w28, 12 + strb w0, [x26, 136] + mov w27, 10 + mov w0, -43 + strb w0, [x26, 137] + b .L1697 +.L1703: + cmp w23, 8 + bne .L1761 + mov w0, 6 + strb w0, [x26, 128] + mov w0, 7 + strb w0, [x26, 129] + mov w0, 9 + strb w23, [x26, 130] + strb w0, [x26, 131] + mov w28, 50 + mov w0, 10 + mov w27, 5 + strb w0, [x26, 132] + b .L1697 +.L1712: + add x0, x23, w26, sxtw + mov x1, 32 + mov w19, 160 + ldr x24, [x20, 1056] + mov x22, 0 + ldrb w0, [x0, 172] + umaddl x19, w19, w0, x1 + ldr x1, [x29, 136] + ubfiz x0, x0, 8, 8 + add x24, x24, x0 + add x19, x1, x19 + mov w1, 55 +.L1707: + str w1, [x24, 2056] + str w1, [x29, 132] + ldrb w0, [x25, x22] + str w0, [x24, 2052] + mov x0, 1000 + bl __const_udelay + ldr w0, [x24, 2048] + strb w0, [x19, x22] + add x22, x22, 1 + cmp w27, w22, uxtb + ldr w1, [x29, 132] + bhi .L1707 + mov x0, 0 +.L1710: + add x1, x0, 4 + add x2, x0, 28 + add w3, w0, 8 + add x1, x21, x1 + add x2, x21, x2 +.L1709: + ldrb w7, [x1], 4 + ldrb w6, [x19, x0] + cmp x2, x1 + add w6, w6, w7 + strb w6, [x19, w3, sxtw] + add w3, w3, 8 + bne .L1709 + add x0, x0, 1 + cmp x0, 4 + bne .L1710 + add w26, w26, 1 + strb wzr, [x19, 16] + strb wzr, [x19, 24] + and w26, w26, 255 + strb wzr, [x19, 32] + strb wzr, [x19, 40] + strb wzr, [x19, 48] + strb wzr, [x19, 41] + strb wzr, [x19, 49] + b .L1706 +.L1705: + sub w0, w23, #3 + cmp w0, 5 + bhi .L1713 + mul w0, w27, w28 + add x20, x20, :lo12:.LANCHOR0 + sub w25, w27, #1 + mov w21, 0 + and x25, x25, 255 + asr w24, w0, 1 + lsl w0, w0, 4 + str w0, [x29, 128] + lsl w0, w24, 1 + str w0, [x29, 132] + add x0, x20, 1024 + str x0, [x29, 120] + add x0, x25, 1 + str x0, [x29, 112] +.L1714: + ldrb w0, [x20, 1153] + cmp w0, w21 + bls .L1713 + ldr x0, [x29, 120] + mov w22, 160 + sub w25, w23, #5 + add x0, x0, w21, sxtw + ldrb w19, [x0, 172] + mov w0, w19 + bl zftl_flash_exit_slc_mode + mov x0, 32 + mov w1, 255 + str w1, [x29, 108] + nop // between mem op and mult-accumulate + umaddl x22, w22, w19, x0 + ldr x0, [x29, 136] + ubfiz x19, x19, 8, 8 + add x22, x0, x22 + ldr x0, [x20, 1056] + add x19, x0, x19 + str w1, [x19, 2056] + bl nandc_wait_flash_ready + cmp w23, 8 + ldr w1, [x29, 108] + bne .L1715 + 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 x22, x26, 144 + 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] +.L1809: + str w0, [x19, 2052] + mov w0, 48 + str wzr, [x19, 2052] + str w0, [x19, 2056] + bl nandc_wait_flash_ready + cmp w25, 1 + ccmp w23, 8, 4, hi + beq .L1762 + cmp w23, 7 + mov w0, 32 + mov w1, 2 + csel w1, w1, w0, ne +.L1722: + adrp x8, .LANCHOR5 + add x0, x8, :lo12:.LANCHOR5 + mov x7, 0 + ldr x0, [x0, 304] +.L1723: + ldr w9, [x19, 2048] + strb w9, [x0, x7] + add x7, x7, 1 + cmp w1, w7, uxtb + bhi .L1723 + cmp w23, 8 + bne .L1724 + mov w1, 0 +.L1726: + ldrb w7, [x0] + cmp w7, 50 + beq .L1725 + ldrb w7, [x0, 1] + cmp w7, 5 + beq .L1725 + add w1, w1, 1 + add x0, x0, 4 + and w1, w1, 255 + cmp w1, 8 + bne .L1726 +.L1727: + adrp x0, .LC141 + mov w1, 0 + add x0, x0, :lo12:.LC141 + bl printk +.L1729: + b .L1729 +.L1715: + mov w0, 54 + str w0, [x19, 2056] + cmp w23, 4 + bne .L1717 + mov w0, 64 + str w1, [x19, 2052] + str w0, [x19, 2048] + mov w0, 204 +.L1807: + str w0, [x19, 2052] + mov w0, 77 + b .L1808 +.L1717: + cmp w25, 1 + bhi .L1719 + ldrb w0, [x26, 128] + str w0, [x19, 2052] + mov w0, 82 +.L1808: + str w0, [x19, 2048] +.L1718: + mov w0, 22 + str w0, [x19, 2056] + mov w0, 23 + str w0, [x19, 2056] + mov w0, 4 + str w0, [x19, 2056] + mov w0, 25 + str w0, [x19, 2056] + str wzr, [x19, 2056] + cmp w23, 6 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + bne .L1720 + mov w0, 31 + str w0, [x19, 2052] +.L1721: + mov w0, 2 + b .L1809 +.L1719: + cmp w23, 7 + bne .L1718 + mov w0, 174 + str w0, [x19, 2052] + str wzr, [x19, 2048] + mov w0, 176 + b .L1807 +.L1720: + str wzr, [x19, 2052] + b .L1721 +.L1762: + mov w1, 16 + b .L1722 +.L1725: + cmp w1, 6 + bhi .L1727 +.L1728: + add x0, x8, :lo12:.LANCHOR5 + ldr x10, [x0, 304] + mov x0, 0 +.L1738: + ldr w1, [x29, 128] + cmp w1, w0 + bgt .L1739 + add x0, x8, :lo12:.LANCHOR5 + mov w9, w24 + mov w7, 8 + ldr x11, [x0, 304] +.L1741: mov w0, 0 -.L1696: - add w1, w0, w11 +.L1740: + add w1, w0, w9 add w0, w0, 1 sbfiz x1, x1, 1, 32 - cmp w0, w23 - ldrh w13, [x12,x1] - mvn w13, w13 - strh w13, [x12,x1] - bne .L1696 - ldr w0, [x29,124] - subs w9, w9, #1 - add w11, w11, w0 - bne .L1697 - mov x9, 0 - mov w17, 1 -.L1698: + cmp w24, w0 + ldrh w12, [x11, x1] + mvn w12, w12 + strh w12, [x11, x1] + bgt .L1740 + ldr w0, [x29, 132] + subs w7, w7, #1 + add w9, w9, w0 + bne .L1741 + mov x7, 0 + mov w15, 1 +.L1747: mov w1, 0 - mov w11, w1 -.L1702: - lsl w13, w17, w11 - mov w15, w9 - mov w0, 16 - mov w14, 0 -.L1700: - 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 .L1700 - cmp w14, 8 - bls .L1701 - orr w1, w1, w13 - uxth w1, w1 -.L1701: - add w11, w11, 1 - cmp w11, 16 - bne .L1702 - strh w1, [x12,x9,lsl 1] - add x9, x9, 1 - cmp w23, w9 - bgt .L1698 - add x1, x26, :lo12:.LANCHOR5 - mov x9, 0 - mov w11, w9 - ldr x1, [x1,296] -.L1705: - ldr w12, [x1,x9] - add x9, x9, 4 - cmp w12, wzr - csinc w11, w11, w11, ne - cmp x9, 32 - bne .L1705 - cmp w11, 7 - ble .L1706 - adrp x0, .LC142 - mov w2, 1 - add x0, x0, :lo12:.LC142 + mov w0, 0 +.L1746: + mov w13, w7 + lsl w14, w15, w0 + mov w9, 16 + mov w12, 0 +.L1744: + ldrh w16, [x11, w13, sxtw 1] + add w13, w13, w24 + bics wzr, w14, w16 + cinc w12, w12, eq + subs w9, w9, #1 + bne .L1744 + cmp w12, 8 + bls .L1745 + orr w1, w1, w14 + and w1, w1, 65535 +.L1745: + add w0, w0, 1 + cmp w0, 16 + bne .L1746 + strh w1, [x11, x7, lsl 1] + add x7, x7, 1 + cmp w24, w7 + bgt .L1747 + add x0, x8, :lo12:.LANCHOR5 + mov w7, 0 + ldr x1, [x0, 304] + mov x0, 0 +.L1750: + ldr w8, [x1, x0] + add x0, x0, 4 + cmp w8, 0 + cinc w7, w7, eq + cmp x0, 32 + bne .L1750 + cmp w7, 7 + ble .L1751 mov w3, 1024 + mov w2, 1 + adrp x0, .LC142 + add x0, x0, :lo12:.LC142 bl rknand_print_hex adrp x0, .LC141 mov w1, 0 add x0, x0, :lo12:.LC141 bl printk -.L1707: - b .L1707 -.L1706: - cmp w19, 6 - mov w9, 4 - beq .L1708 - cmp w19, 7 - mov w9, 10 - beq .L1708 - cmp w7, wzr - mov w9, 5 - mov w1, 8 - csel w9, w1, w9, eq -.L1708: - mov w11, 0 -.L1709: +.L1752: + b .L1752 +.L1724: + cmp w23, 7 + bne .L1730 + mov w1, 0 +.L1732: + ldrb w7, [x0] + cmp w7, 12 + beq .L1731 + ldrb w7, [x0, 1] + cmp w7, 10 + beq .L1731 + add w1, w1, 1 + add x0, x0, 4 + and w1, w1, 255 + cmp w1, 8 + bne .L1732 +.L1733: + adrp x0, .LC141 + mov w1, 0 + add x0, x0, :lo12:.LC141 + bl printk +.L1734: + b .L1734 +.L1731: + cmp w1, 6 + bls .L1728 + b .L1733 +.L1730: + cmp w23, 6 + bne .L1728 mov x1, 0 -.L1710: - add w12, w0, w1 - ldrb w13, [x10,x1] +.L1735: + ldrb w7, [x0, x1] + cmp w7, 12 + beq .L1728 + add x7, x0, x1 + ldrb w7, [x7, 8] + cmp w7, 4 + beq .L1728 add x1, x1, 1 - cmp w28, w1, uxtb - strb w13, [x21,w12,sxtw] - bhi .L1710 - add w11, w11, 1 - ldr x1, [x29,112] - cmp w11, w27 - add w0, w0, w9 - add x10, x10, x1 - blt .L1709 - mov w21, 255 - str w21, [x24,2056] - str x7, [x29,96] - str x8, [x29,104] + cmp x1, 8 + bne .L1735 + adrp x0, .LC141 + mov w1, 0 + add x0, x0, :lo12:.LC141 + bl printk +.L1737: + b .L1737 +.L1739: + ldr w1, [x19, 2048] + strb w1, [x10, x0] + add x0, x0, 1 + b .L1738 +.L1751: + cmp w23, 6 + beq .L1764 + cmp w23, 7 + beq .L1765 + cmp w23, 8 + mov w0, 5 + mov w1, 8 + csel w1, w1, w0, ne +.L1753: + mov w7, 0 +.L1754: + mov x0, 0 +.L1755: + add w8, w9, w0 + ldrb w11, [x10, x0] + add x0, x0, 1 + cmp w27, w0, uxtb + strb w11, [x22, w8, sxtw] + bhi .L1755 + ldr x0, [x29, 112] + add w7, w7, 1 + add w9, w9, w1 + cmp w28, w7 + add x10, x10, x0 + bgt .L1754 + mov w22, 255 + str w22, [x19, 2056] bl nandc_wait_flash_ready - ldr x8, [x29,104] - ldr x7, [x29,96] - cbz w8, .L1712 + cmp w25, 1 + bhi .L1757 mov w0, 54 - str w0, [x24,2056] - ldrb w0, [x25,128] - str w0, [x24,2052] + str w0, [x19, 2056] + ldrb w0, [x26, 128] + str w0, [x19, 2052] + str wzr, [x19, 2048] mov w0, 22 - str wzr, [x24,2048] - str w0, [x24,2056] + str w0, [x19, 2056] mov w0, 48 - 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 .L1762 -.L1712: - mov w0, 190 - cbnz w7, .L1762 - mov w0, 56 -.L1762: - str w0, [x24,2056] - add w20, w20, 1 + str wzr, [x19, 2056] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w22, [x19, 2052] + str w22, [x19, 2052] + str w22, [x19, 2052] +.L1810: + str w0, [x19, 2056] + add w21, w21, 1 + and w21, w21, 255 bl nandc_wait_flash_ready - uxtb w20, w20 - b .L1670 + b .L1714 +.L1764: + mov w1, 4 + b .L1753 +.L1765: + mov w1, 10 + b .L1753 +.L1757: + cmp w23, 8 + bne .L1759 + mov w0, 190 + b .L1810 +.L1759: + mov w0, 56 + b .L1810 .size hynix_get_read_retry_default, .-hynix_get_read_retry_default .align 2 .global flash_get_read_retry_tbl .type flash_get_read_retry_tbl, %function flash_get_read_retry_tbl: adrp x0, .LANCHOR2+27 + ldrb w0, [x0, #:lo12:.LANCHOR2+27] + sub w1, w0, #1 + and w1, w1, 255 + cmp w1, 7 + bhi .L1814 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldrb w0, [x0,#:lo12:.LANCHOR2+27] - sub w1, w0, #1 - uxtb w1, w1 - cmp w1, 7 - bhi .L1764 bl hynix_get_read_retry_default -.L1764: ldp x29, x30, [sp], 16 ret +.L1814: + ret .size flash_get_read_retry_tbl, .-flash_get_read_retry_tbl .align 2 .global nandc_xfer_done @@ -11258,487 +11226,477 @@ flash_get_read_retry_tbl: nandc_xfer_done: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR5 add x0, x21, :lo12:.LANCHOR5 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - adrp x19, .LANCHOR0 - strb wzr, [x0,304] - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,1028] + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + adrp x20, .LANCHOR0 + strb wzr, [x0, 312] + add x0, x20, :lo12:.LANCHOR0 + ldrb w1, [x0, 1028] cmp w1, 9 - bne .L1767 - ldr x22, [x0,1048] - ldr w0, [x22,16] - str w0, [x29,64] - ldr w20, [x22,48] - ubfx x20, x20, 1, 1 - cbnz w20, .L1788 - adrp x21, .LC145 - adrp x23, .LC146 - add x21, x21, :lo12:.LC145 - add x23, x23, :lo12:.LC146 - b .L1769 -.L1788: - mov w20, 0 -.L1768: - ldr w1, [x22,64] - ldr w0, [x29,64] + bne .L1818 + ldr x22, [x0, 1056] + ldr w1, [x22, 16] + str w1, [x29, 64] + ldr w1, [x22, 48] + tbnz x1, 1, .L1819 + adrp x23, .LC145 + adrp x24, .LC146 + mov x19, x0 + add x23, x23, :lo12:.LC145 + add x24, x24, :lo12:.LC146 + mov w21, 0 +.L1820: + ldr w0, [x29, 64] + tbz x0, 20, .L1830 + add x19, x20, :lo12:.LANCHOR0 + add x19, x19, 1256 + ldr w0, [x19, 32] + cbz w0, .L1828 + ldr w1, [x29, 64] + mov w2, 1 + ldr w0, [x19, 24] + ubfx x1, x1, 22, 6 + lsl w1, w1, 10 + bl rknand_dma_unmap_single + ldr w1, [x29, 64] + mov w2, 1 + ubfx x1, x1, 22, 6 + b .L1865 +.L1819: + mov x19, x0 + mov w23, 0 +.L1821: + ldr w1, [x22, 64] + ldr w0, [x29, 64] ubfx x1, x1, 16, 6 ubfx x0, x0, 22, 6 cmp w1, w0 - bge .L1771 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1048] + bge .L1823 + ldr x0, [x19, 1056] ldr w0, [x0] - str w0, [x29,72] - ldr w0, [x29,72] - tbz x0, 13, .L1770 - ldr w0, [x29,72] - tbz x0, 17, .L1770 - ldr w1, [x29,72] + str w0, [x29, 72] + ldr w0, [x29, 72] + tbz x0, 13, .L1822 + ldr w0, [x29, 72] + tbz x0, 17, .L1822 + ldr w1, [x29, 72] adrp x0, .LC143 add x0, x0, :lo12:.LC143 ubfx x1, x1, 17, 1 bl printk - b .L1771 -.L1770: - ldr w0, [x29,64] - add w20, w20, 1 +.L1823: + add x19, x20, :lo12:.LANCHOR0 + add x19, x19, 1256 + ldr w0, [x19, 32] + cbz w0, .L1828 + ldr w1, [x29, 64] + mov w2, 0 + ldr w0, [x19, 24] + ubfx x1, x1, 22, 6 + lsl w1, w1, 10 + bl rknand_dma_unmap_single + ldr w1, [x29, 64] + mov w2, 0 + ubfx x1, x1, 22, 6 +.L1865: + lsl w1, w1, 2 +.L1863: + ldr w0, [x19, 28] + bl rknand_dma_unmap_single +.L1828: + add x20, x20, :lo12:.LANCHOR0 + ldp x21, x22, [sp, 32] + str wzr, [x20, 1288] + ldp x23, x24, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 80 + ret +.L1822: + ldr w0, [x29, 64] + add w23, w23, 1 ubfx x0, x0, 22, 6 - cmp w20, w0, lsl 12 - bne .L1772 - ldr w2, [x22,64] + cmp w23, w0, lsl 12 + bne .L1824 + ldr w2, [x22, 64] + mov w1, w23 + ldr w3, [x29, 64] adrp x0, .LC144 - ldr w3, [x29,64] - mov w1, w20 + add x21, x21, :lo12:.LANCHOR5 add x0, x0, :lo12:.LC144 ubfx x2, x2, 16, 5 ubfx x3, x3, 22, 6 - add x21, x21, :lo12:.LANCHOR5 bl printk - ldr w1, [x29,72] + ldr w1, [x29, 72] mov w0, 1 - strb w0, [x21,304] - tbnz x1, 13, .L1771 + strb w0, [x21, 312] + tbnz x1, 13, .L1823 mov x0, 35160 movk x0, 0x41, lsl 16 bl __const_udelay - b .L1771 -.L1772: - mov x0, 5 + b .L1823 +.L1824: mov x1, 10 + mov x0, 5 bl usleep_range - b .L1768 -.L1771: - add x20, x19, :lo12:.LANCHOR0 - add x20, x20, 1200 - ldr w0, [x20,32] - cbz w0, .L1776 - ldr w1, [x29,64] - mov w2, 0 - ldr w0, [x20,24] - ubfx x1, x1, 22, 6 - lsl w1, w1, 10 - bl rknand_dma_unmap_single - ldr w1, [x29,64] - ldr w0, [x20,28] - ubfx x1, x1, 22, 6 - lsl w1, w1, 2 - b .L1813 -.L1778: - add x24, x19, :lo12:.LANCHOR0 - add w20, w20, 1 - ldr x0, [x24,1048] - ldr w0, [x0,16] - str w0, [x29,64] - and w0, w20, 16777215 - cbnz w0, .L1777 - ldr w2, [x29,64] - mov w1, w20 - ldr w3, [x22,64] - mov x0, x21 + b .L1821 +.L1830: + ldr x0, [x19, 1056] + add w21, w21, 1 + tst x21, 16777215 + ldr w0, [x0, 16] + str w0, [x29, 64] + bne .L1829 + ldr w2, [x29, 64] + mov w1, w21 + ldr w3, [x22, 64] + mov x0, x23 ubfx x3, x3, 16, 6 bl printk - ldr x1, [x24,1048] - mov x0, x23 - mov w2, 4 + ldr x1, [x19, 1056] mov w3, 64 + mov w2, 4 + mov x0, x24 bl rknand_print_hex -.L1777: - mov x0, 5 +.L1829: mov x1, 10 + mov x0, 5 bl usleep_range -.L1769: - ldr w0, [x29,64] - tbz x0, 20, .L1778 - add x20, x19, :lo12:.LANCHOR0 - add x20, x20, 1200 - ldr w0, [x20,32] - cbz w0, .L1776 - ldr w1, [x29,64] + b .L1820 +.L1818: + ldr x21, [x0, 1056] + mov w22, 0 + mov x19, x0 + ldr w1, [x21, 8] + str w1, [x29, 64] + ldr w1, [x21, 16] + tbnz x1, 1, .L1832 + adrp x23, .LC145 + adrp x24, .LC146 + add x23, x23, :lo12:.LC145 + add x24, x24, :lo12:.LC146 +.L1833: + ldr w0, [x29, 64] + tbz x0, 20, .L1840 + add x19, x20, :lo12:.LANCHOR0 + add x19, x19, 1256 + ldr w0, [x19, 32] + cbz w0, .L1828 + ldr w1, [x29, 64] mov w2, 1 - ldr w0, [x20,24] + ldr w0, [x19, 24] ubfx x1, x1, 22, 6 lsl w1, w1, 10 bl rknand_dma_unmap_single - ldr w1, [x29,64] - ldr w0, [x20,28] + ldr w1, [x29, 64] + mov w2, 1 ubfx x1, x1, 22, 6 - lsl w1, w1, 2 - b .L1812 -.L1767: - ldr x21, [x0,1048] - ldr w0, [x21,8] - str w0, [x29,64] - ldr w20, [x21,16] - ubfx x20, x20, 1, 1 - cbnz w20, .L1789 - adrp x22, .LC145 - adrp x23, .LC146 - add x22, x22, :lo12:.LC145 - add x23, x23, :lo12:.LC146 - b .L1781 -.L1789: - adrp x22, .LC144 - adrp x23, .LC146 - mov w20, 0 - add x22, x22, :lo12:.LC144 - add x23, x23, :lo12:.LC146 -.L1780: - ldr w2, [x21,28] - ldr w1, [x29,64] - ubfx x2, x2, 16, 5 - ubfx x1, x1, 22, 6 - cmp w2, w1 - bge .L1783 - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1048] + b .L1864 +.L1832: + adrp x23, .LC144 + adrp x24, .LC146 + add x23, x23, :lo12:.LC144 + add x24, x24, :lo12:.LC146 +.L1834: + ldr w1, [x21, 28] + ldr w0, [x29, 64] + ubfx x1, x1, 16, 5 + ubfx x0, x0, 22, 6 + cmp w1, w0 + bge .L1836 + ldr x0, [x19, 1056] ldr w0, [x0] - str w0, [x29,72] - ldr w0, [x29,72] - tbz x0, 13, .L1782 - ldr w0, [x29,72] - tbz x0, 17, .L1782 - ldr w1, [x29,72] + str w0, [x29, 72] + ldr w0, [x29, 72] + tbz x0, 13, .L1835 + ldr w0, [x29, 72] + tbz x0, 17, .L1835 + ldr w1, [x29, 72] adrp x0, .LC147 add x0, x0, :lo12:.LC147 bl printk - b .L1783 -.L1782: - add w20, w20, 1 - and w0, w20, 16777215 - cbnz w0, .L1784 - ldr w2, [x21,28] - mov w1, w20 - ldr w3, [x29,64] - mov x0, x22 +.L1836: + add x19, x20, :lo12:.LANCHOR0 + add x19, x19, 1256 + ldr w0, [x19, 32] + cbz w0, .L1828 + ldr w1, [x29, 64] + mov w2, 0 + ldr w0, [x19, 24] + ubfx x1, x1, 22, 6 + lsl w1, w1, 10 + bl rknand_dma_unmap_single + ldr w1, [x29, 64] + mov w2, 0 + ubfx x1, x1, 22, 6 +.L1864: + lsl w1, w1, 7 + b .L1863 +.L1835: + add w22, w22, 1 + tst x22, 16777215 + bne .L1837 + ldr w2, [x21, 28] + mov w1, w22 + ldr w3, [x29, 64] + mov x0, x23 ubfx x2, x2, 16, 5 ubfx x3, x3, 22, 6 bl printk - add x1, x19, :lo12:.LANCHOR0 - mov x0, x23 - mov w2, 4 + ldr x1, [x19, 1056] mov w3, 64 - ldr x1, [x1,1048] + mov w2, 4 + mov x0, x24 bl rknand_print_hex -.L1784: - mov x0, 5 +.L1837: mov x1, 10 + mov x0, 5 bl usleep_range - b .L1780 -.L1783: - add x20, x19, :lo12:.LANCHOR0 - add x20, x20, 1200 - ldr w0, [x20,32] - cbz w0, .L1776 - ldr w1, [x29,64] - mov w2, 0 - ldr w0, [x20,24] - ubfx x1, x1, 22, 6 - lsl w1, w1, 10 - bl rknand_dma_unmap_single - ldr w1, [x29,64] - ldr w0, [x20,28] - ubfx x1, x1, 22, 6 - lsl w1, w1, 7 -.L1813: - mov w2, 0 - b .L1811 -.L1787: - add x24, x19, :lo12:.LANCHOR0 - add w20, w20, 1 - ldr x0, [x24,1048] - ldr w0, [x0,8] - str w0, [x29,64] - and w0, w20, 16777215 - cbnz w0, .L1786 - ldr w2, [x29,64] - mov w1, w20 - ldr w3, [x21,28] - mov x0, x22 + b .L1834 +.L1840: + ldr x0, [x19, 1056] + add w22, w22, 1 + tst x22, 16777215 + ldr w0, [x0, 8] + str w0, [x29, 64] + bne .L1839 + ldr w2, [x29, 64] + mov w1, w22 + ldr w3, [x21, 28] + mov x0, x23 ubfx x3, x3, 16, 5 bl printk - ldr x1, [x24,1048] - mov x0, x23 - mov w2, 4 + ldr x1, [x19, 1056] mov w3, 64 + mov w2, 4 + mov x0, x24 bl rknand_print_hex -.L1786: - mov x0, 5 +.L1839: mov x1, 10 + mov x0, 5 bl usleep_range -.L1781: - ldr w0, [x29,64] - tbz x0, 20, .L1787 - add x20, x19, :lo12:.LANCHOR0 - add x20, x20, 1200 - ldr w0, [x20,32] - cbz w0, .L1776 - ldr w1, [x29,64] - mov w2, 1 - ldr w0, [x20,24] - ubfx x1, x1, 22, 6 - lsl w1, w1, 10 - bl rknand_dma_unmap_single - ldr w1, [x29,64] - ldr w0, [x20,28] - ubfx x1, x1, 22, 6 - lsl w1, w1, 7 -.L1812: - mov w2, 1 -.L1811: - bl rknand_dma_unmap_single -.L1776: - add x19, x19, :lo12:.LANCHOR0 - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - str wzr, [x19,1232] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 80 - ret + b .L1833 .size nandc_xfer_done, .-nandc_xfer_done .align 2 .global nandc_xfer .type nandc_xfer, %function nandc_xfer: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - uxtb w22, w2 - uxtb w20, w1 - mov x2, x3 - mov w0, w20 - mov w1, w22 + stp x19, x20, [sp, 16] + and w20, w2, 255 + stp x21, x22, [sp, 32] mov x21, x3 + and w19, w1, 255 mov x3, x4 - str x23, [sp,48] - mov x23, x4 + mov x2, x21 + mov w1, w20 + mov w0, w19 + mov x22, x4 bl nandc_xfer_start - mov w0, w20 + mov w0, w19 bl nandc_xfer_done - mov w0, 0 - cbnz w20, .L1844 + cbnz w19, .L1885 adrp x19, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR0 - ldrb w2, [x1,1028] - cmp w2, 9 - bne .L1816 - ldr x5, [x1,1048] - lsr w22, w22, 2 - mov w4, 1 - mov w3, w0 -.L1817: - cmp w3, w22 - bcs .L1853 - uxtw x1, w3 - add x1, x1, 84 - ldr w1, [x5,x1,lsl 2] - str w1, [x29,72] - ldr w1, [x29,72] - ubfx x2, x1, 10, 1 - ldr w1, [x29,72] - ubfx x1, x1, 26, 1 - and w1, w1, w2 - and w4, w4, w1 - ldr w1, [x29,72] - tbnz x1, 2, .L1836 - ldr w1, [x29,72] - tbnz x1, 18, .L1836 - 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 .L1819 - ubfx x1, x1, 3, 7 - b .L1820 -.L1819: - ubfx x1, x1, 19, 7 -.L1820: - cmp w0, w1 - csel w0, w0, w1, cs - b .L1818 -.L1836: - mov w0, -1 -.L1818: - add w3, w3, 1 - b .L1817 -.L1853: - add x22, x19, :lo12:.LANCHOR0 - cmp w4, wzr - ldr x1, [x22,1048] - ldr w20, [x1] + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x0, 1028] + cmp w1, 9 + bne .L1868 + lsr w20, w20, 2 + ldr x5, [x0, 1056] + mov w3, 1 + mov w2, 0 + mov w0, 0 +.L1869: + cmp w2, w20 + bcc .L1873 + ldr w20, [x5] + cmp w3, 0 mov w1, 512 csel w0, w0, w1, eq mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w20, w1 cmp w1, 139264 - bne .L1823 - adrp x0, .LC148 + bne .L1875 mov w1, w20 + adrp x0, .LC148 add x0, x0, :lo12:.LC148 - orr w20, w20, 131072 bl printk - ldr x0, [x22,1048] + add x0, x19, :lo12:.LANCHOR0 + orr w20, w20, 131072 + ldr x0, [x0, 1056] str w20, [x0] mov w0, -1 -.L1823: - tbz x20, 13, .L1824 - adrp x1, .LANCHOR5+304 - ldrb w1, [x1,#:lo12:.LANCHOR5+304] - cbz w1, .L1824 - adrp x0, .LC149 - mov w1, w20 - add x0, x0, :lo12:.LC149 +.L1875: + tbz x20, 13, .L1876 + adrp x1, .LANCHOR5+312 + ldrb w1, [x1, #:lo12:.LANCHOR5+312] + cbz w1, .L1876 add x19, x19, :lo12:.LANCHOR0 + mov w1, w20 + adrp x0, .LC149 + add x0, x0, :lo12:.LC149 bl printk - ldr x0, [x19,1048] + ldr x0, [x19, 1056] mov w1, 1 - str w1, [x0,16] - b .L1825 -.L1816: - ldrb w0, [x1,1244] - mov w4, 128 - lsr w5, w22, 1 - mov w2, 1 - cmp w0, 25 - mov w0, 64 - csel w4, w0, w4, cc - mov w3, w20 -.L1827: - cmp w3, w5 - add w6, w20, w4 - bcs .L1854 - ldr x0, [x1,1200] - and x20, x20, 4294967292 - ubfiz x7, x3, 2, 30 - add w3, w3, 1 - ldr w0, [x0,x20] - mov w20, w6 - strb w0, [x23,x7] - lsr w7, w0, 8 - strb w7, [x23,w2,uxtw] - add w7, w2, 1 - lsr w8, w0, 16 - lsr w0, w0, 24 - strb w8, [x23,x7] - add w7, w2, 2 - add w2, w2, 4 - strb w0, [x23,x7] - b .L1827 -.L1854: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 0 - lsr w22, w22, 2 - ldr x6, [x0,1048] - mov w0, w2 -.L1829: - cmp w2, w22 - bcs .L1855 + str w1, [x0, 16] +.L1904: + mov w0, -1 +.L1867: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L1873: uxtw x1, w2 - add x1, x1, 8 - ldr w1, [x6,x1,lsl 2] - str w1, [x29,72] - ldr w1, [x29,72] - tbnz x1, 2, .L1839 - ldr w1, [x29,72] - tbnz x1, 15, .L1839 - ldr w3, [x29,72] - ubfx x5, x3, 3, 5 - ldr w3, [x29,72] - ldr w1, [x29,72] - ubfx x3, x3, 27, 1 - ubfx x4, x1, 16, 5 - ldr w1, [x29,72] - orr w3, w5, w3, lsl 5 - ubfx x1, x1, 29, 1 - orr w1, w4, w1, lsl 5 - cmp w3, w1 - ldr w1, [x29,72] - bls .L1831 - ubfx x3, x1, 3, 5 - ldr w1, [x29,72] - ubfx x1, x1, 27, 1 - b .L1852 -.L1831: - ubfx x3, x1, 16, 5 - ldr w1, [x29,72] - ubfx x1, x1, 29, 1 -.L1852: - orr w1, w3, w1, lsl 5 + add x1, x1, 84 + ldr w1, [x5, x1, lsl 2] + str w1, [x29, 56] + ldr w1, [x29, 56] + ldr w4, [x29, 56] + ubfx x4, x4, 26, 1 + and w1, w4, w1, lsr 10 + and w3, w3, w1 + ldr w1, [x29, 56] + tbnz x1, 2, .L1887 + ldr w1, [x29, 56] + tbnz x1, 18, .L1887 + ldr w4, [x29, 56] + ldr w1, [x29, 56] + ubfx x4, x4, 3, 7 + ubfx x1, x1, 19, 7 + cmp w4, w1 + ldr w1, [x29, 56] + ble .L1871 + ubfx x1, x1, 3, 7 +.L1872: cmp w0, w1 csel w0, w0, w1, cs - b .L1830 -.L1839: - mov w0, -1 -.L1830: +.L1870: add w2, w2, 1 - b .L1829 -.L1855: - add x19, x19, :lo12:.LANCHOR0 - ldr x1, [x19,1048] - str wzr, [x1,16] - ldr w20, [x1] + b .L1869 +.L1871: + ubfx x1, x1, 19, 7 + b .L1872 +.L1887: + mov w0, -1 + b .L1870 +.L1868: + ldrb w1, [x0, 1249] + lsr w5, w20, 1 + mov w4, 64 + mov w2, 1 + cmp w1, 25 + mov w1, 128 + mov w3, 0 + csel w4, w4, w1, cc + mov w1, 0 +.L1878: + add w6, w4, w1 + cmp w3, w5 + bcc .L1879 + add x0, x19, :lo12:.LANCHOR0 + lsr w20, w20, 2 + mov w3, 0 + ldr x4, [x0, 1056] + mov w0, 0 +.L1880: + cmp w3, w20 + bcc .L1884 + str wzr, [x4, 16] mov w1, 8192 movk w1, 0x2, lsl 16 + ldr w20, [x4] and w1, w20, w1 cmp w1, 139264 - bne .L1824 - adrp x0, .LC150 + bne .L1876 + add x19, x19, :lo12:.LANCHOR0 mov w1, w20 + adrp x0, .LC150 add x0, x0, :lo12:.LC150 - orr w20, w20, 131072 bl printk - ldr x0, [x19,1048] + orr w20, w20, 131072 + ldr x0, [x19, 1056] str w20, [x0] - b .L1825 -.L1824: + b .L1904 +.L1879: + ldr x7, [x0, 1256] + and x1, x1, 4294967292 + ldr w1, [x7, x1] + lsl w7, w3, 2 + add w3, w3, 1 + strb w1, [x22, x7] + lsr w7, w1, 8 + strb w7, [x22, w2, uxtw] + add w7, w2, 1 + lsr w8, w1, 16 + lsr w1, w1, 24 + strb w8, [x22, x7] + add w7, w2, 2 + add w2, w2, 4 + strb w1, [x22, x7] + mov w1, w6 + b .L1878 +.L1884: + uxtw x1, w3 + add x1, x1, 8 + ldr w1, [x4, x1, lsl 2] + str w1, [x29, 56] + ldr w1, [x29, 56] + tbnz x1, 2, .L1890 + ldr w1, [x29, 56] + tbnz x1, 15, .L1890 + ldr w2, [x29, 56] + ubfx x6, x2, 3, 5 + ldr w2, [x29, 56] + ldr w1, [x29, 56] + ubfx x2, x2, 27, 1 + ubfx x5, x1, 16, 5 + ldr w1, [x29, 56] + orr w2, w6, w2, lsl 5 + ubfx x1, x1, 29, 1 + orr w1, w5, w1, lsl 5 + cmp w2, w1 + ldr w1, [x29, 56] + bls .L1882 + ubfx x2, x1, 3, 5 + ldr w1, [x29, 56] + ubfx x1, x1, 27, 1 +.L1903: + orr w1, w2, w1, lsl 5 + cmp w0, w1 + csel w0, w0, w1, cs +.L1881: + add w3, w3, 1 + b .L1880 +.L1882: + ubfx x2, x1, 16, 5 + ldr w1, [x29, 56] + ubfx x1, x1, 29, 1 + b .L1903 +.L1890: + mov w0, -1 + b .L1881 +.L1876: cmn w0, #1 - beq .L1844 - ldr w1, [x23] + beq .L1867 + ldr w1, [x22] cmn w1, #1 - bne .L1844 - ldr w1, [x23,4] + bne .L1867 + ldr w1, [x22, 4] cmn w1, #1 - bne .L1844 + bne .L1867 ldr w1, [x21] cmn w1, #1 mov w1, 512 csel w0, w0, w1, ne - b .L1844 -.L1825: - mov w0, -1 -.L1844: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldr x23, [sp,48] - ldp x29, x30, [sp], 80 - ret + b .L1867 +.L1885: + mov w0, 0 + b .L1867 .size nandc_xfer, .-nandc_xfer .align 2 .global flash_read_page @@ -11746,529 +11704,516 @@ nandc_xfer: flash_read_page: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - str x27, [sp,80] + str x27, [sp, 80] add x27, x21, :lo12:.LANCHOR0 - uxtb w22, w0 - stp x19, x20, [sp,16] - mov w0, 24 - ldrb w19, [x27,1257] - stp x23, x24, [sp,48] - sub w19, w0, w19 - mov w0, 1 - lsl w19, w0, w19 + and w22, w0, 255 + stp x19, x20, [sp, 16] + mov w19, 24 + stp x23, x24, [sp, 48] + ldrb w0, [x27, 1205] ubfx x23, x1, 24, 2 - sub w19, w19, #1 - mov x24, x3 - stp x25, x26, [sp,64] - ldr x20, [x27,1048] + stp x25, x26, [sp, 64] + mov w24, w4 + sub w0, w19, w0 + mov w19, 1 mov x25, x2 - mov w26, w4 - and w19, w1, w19 + mov x26, x3 + lsl w19, w19, w0 + sub w19, w19, #1 + and w19, w19, w1 + ldr x20, [x27, 1056] bl nandc_wait_flash_ready mov w0, w22 bl nandc_cs - cbnz w23, .L1857 + cbnz w23, .L1906 mov w0, w22 bl zftl_flash_enter_slc_mode - b .L1858 -.L1857: - ldr x0, [x27,1144] - ldrb w0, [x0,12] - cmp w0, 3 - bne .L1859 - ldrb w0, [x27,1268] - cbnz w0, .L1859 - ldrb w0, [x27,1269] - cbnz w0, .L1859 - sxtw x0, w22 - add x0, x0, 8 - add x0, x20, x0, lsl 8 - str w23, [x0,8] - b .L1858 -.L1859: - mov w0, w22 - bl zftl_flash_exit_slc_mode -.L1858: +.L1907: add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0,1144] - ldrb w0, [x1,7] + ldr x1, [x0, 1144] + ldrb w0, [x1, 7] cmp w0, 1 - bne .L1860 - ldrb w0, [x1,12] + bne .L1909 + ldrb w0, [x1, 12] cmp w0, 2 - bne .L1860 + bne .L1909 sxtw x0, w22 mov w2, 38 add x0, x0, 8 add x0, x20, x0, lsl 8 - str w2, [x0,8] -.L1860: - ubfiz x5, x22, 8, 8 + str w2, [x0, 8] +.L1909: + ubfiz x0, x22, 8, 8 + add x20, x20, x0 and w0, w19, 255 - add x20, x20, x5 - str wzr, [x20,2056] - str wzr, [x20,2052] - str wzr, [x20,2052] - str w0, [x20,2052] + str wzr, [x20, 2056] + str wzr, [x20, 2052] + str wzr, [x20, 2052] + str w0, [x20, 2052] lsr w0, w19, 8 - str w0, [x20,2052] + str w0, [x20, 2052] lsr w0, w19, 16 - str w0, [x20,2052] + str w0, [x20, 2052] add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,1256] - cbz w0, .L1861 + ldrb w0, [x0, 1204] + cbz w0, .L1910 lsr w0, w19, 24 - str w0, [x20,2052] -.L1861: + str w0, [x20, 2052] +.L1910: mov w0, 48 - str w0, [x20,2056] - cbz w23, .L1862 - ldrb w0, [x1,12] + str w0, [x20, 2056] + ldrb w0, [x1, 12] cmp w0, 3 - bne .L1862 + bne .L1911 + cbz w23, .L1911 add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,1268] - cbnz w0, .L1862 - ldrb w0, [x21,1269] - cbnz w0, .L1862 + ldrb w0, [x21, 1212] + cbnz w0, .L1911 + ldrb w0, [x21, 1213] + cbnz w0, .L1911 add w19, w19, w19, lsl 1 sub w0, w19, #1 add w0, w0, w23 - b .L1873 -.L1862: - mov w0, w19 -.L1873: +.L1920: bl nandc_set_seed bl nandc_wait_flash_ready mov w0, 5 - str w0, [x20,2056] - str wzr, [x20,2052] + str w0, [x20, 2056] + str wzr, [x20, 2052] mov w0, 224 - str wzr, [x20,2052] - mov w2, w26 + str wzr, [x20, 2052] + mov w2, w24 + str w0, [x20, 2056] + mov x4, x26 mov x3, x25 - mov x4, x24 - str w0, [x20,2056] mov w1, 0 mov w0, w22 bl nandc_xfer - mov w19, w0 - mov w0, 0 - bl nandc_de_cs - ldr x27, [sp,80] - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + mov w2, w0 + bl nandc_de_cs.constprop.35 + mov w0, w2 + 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 +.L1906: + ldr x0, [x27, 1144] + ldrb w0, [x0, 12] + cmp w0, 3 + bne .L1908 + ldrb w0, [x27, 1212] + cbnz w0, .L1908 + ldrb w0, [x27, 1213] + cbnz w0, .L1908 + sxtw x0, w22 + add x0, x0, 8 + add x0, x20, x0, lsl 8 + str w23, [x0, 8] + b .L1907 +.L1908: + mov w0, w22 + bl zftl_flash_exit_slc_mode + b .L1907 +.L1911: + mov w0, w19 + b .L1920 .size flash_read_page, .-flash_read_page .align 2 .global micron_read_retrial .type micron_read_retrial, %function micron_read_retrial: - stp x29, x30, [sp, -160]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - uxtb w19, w0 - add x20, x20, :lo12:.LANCHOR0 - str w4, [x29,152] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w22, w1 - mov x23, x2 - ldrb w0, [x20,1244] - mov x24, x3 - uxtb x25, w19 - mov w21, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + and w20, w0, 255 + stp x25, x26, [sp, 64] + mov w24, w1 + stp x27, x28, [sp, 80] + mov x26, x3 + str x2, [x29, 112] + mov w22, 0 + ldrb w0, [x19, 1249] add w0, w0, w0, lsl 1 - asr w0, w0, 2 - str w0, [x29,156] + asr w1, w0, 2 + stp w4, w1, [x29, 120] bl nandc_wait_flash_ready - ldr x0, [x20,1048] - str x0, [x29,144] - adrp x0, .LC151 - add x0, x0, :lo12:.LC151 - str x0, [x29,128] - lsl x0, x25, 8 - str x0, [x29,120] - adrp x0, .LC152 - add x0, x0, :lo12:.LC152 - str x0, [x29,112] -.L1875: - mov w0, w19 - mov w20, 0 - mov w28, -1 - adrp x26, .LANCHOR5 + ldr x19, [x19, 1056] + ubfiz x0, x20, 8, 8 + add x19, x19, x0 +.L1922: + adrp x23, .LANCHOR5 + add x23, x23, :lo12:.LANCHOR5 + mov x27, x23 + mov w21, 0 + mov w25, -1 + mov w0, w20 bl zftl_flash_enter_slc_mode - mov w0, w19 + mov w0, w20 bl zftl_flash_exit_slc_mode - lsl x0, x25, 8 - str x0, [x29,136] -.L1876: - add x0, x26, :lo12:.LANCHOR5 - ldrb w0, [x0,320] - cmp w20, w0 - bcs .L1880 - ldr x0, [x29,144] - add w27, w20, 1 - ldr x1, [x29,136] - add x1, x0, x1 +.L1923: + ldrb w0, [x23, 328] + cmp w21, w0 + bcc .L1928 +.L1927: mov w0, 239 - str x1, [x29,104] - str w0, [x1,2056] + str w0, [x19, 2056] mov w0, 137 - str w0, [x1,2052] + str w0, [x19, 2052] mov x0, 1000 bl __const_udelay - ldr x1, [x29,104] - mov w0, w19 - ldr w4, [x29,152] - mov x2, x23 - mov x3, x24 - str w27, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] - str wzr, [x1,2048] - mov w1, w22 + str wzr, [x19, 2048] + str wzr, [x19, 2048] + str wzr, [x19, 2048] + ldr w0, [x29, 124] + str wzr, [x19, 2048] + cmp w25, w0 + bcc .L1929 + cmn w25, #1 + mov w0, 256 + csel w25, w25, w0, eq +.L1929: + cmn w25, #1 + cset w23, eq + cmp w25, 256 + cset w0, eq + orr w0, w23, w0 + cbz w0, .L1930 + mov w4, w25 + mov w3, w21 + mov w2, w24 + mov w1, w20 + adrp x0, .LC152 + add x0, x0, :lo12:.LC152 + bl printk + eor w0, w22, 1 + tst w23, w0 + beq .L1931 + mov w1, 3 + mov w0, w20 + mov w22, 1 + bl mt_auto_read_calibration_config + b .L1922 +.L1928: + mov w0, 239 + str w0, [x19, 2056] + mov w0, 137 + str w0, [x19, 2052] + add w28, w21, 1 + mov x0, 1000 + bl __const_udelay + str w28, [x19, 2048] + str wzr, [x19, 2048] + mov x3, x26 + ldr w4, [x29, 120] + mov w1, w24 + ldr x2, [x29, 112] + mov w0, w20 + str wzr, [x19, 2048] + str wzr, [x19, 2048] bl flash_read_page mov w6, w0 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L1877 - ldr x0, [x29,128] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L1924 mov w4, w6 - mov w1, w20 - mov w2, w22 - mov w3, w28 - str x6, [x29,104] + str w6, [x29, 108] + mov w3, w25 + mov w2, w24 + mov w1, w21 + adrp x0, .LC151 + add x0, x0, :lo12:.LC151 bl printk - ldr x6, [x29,104] -.L1877: + ldr w6, [x29, 108] +.L1924: cmn w6, #1 - beq .L1878 - adrp x0, .LANCHOR5 - cmn w28, #1 - add x0, x0, :lo12:.LANCHOR5 - csel w28, w28, w6, ne - ldr x23, [x0,296] - ldr x24, [x0,312] - ldr w0, [x29,156] + beq .L1925 + ldr x0, [x27, 304] + cmn w25, #1 + str x0, [x29, 112] + csel w25, w25, w6, ne + ldr w0, [x29, 124] + ldr x26, [x27, 320] cmp w6, w0 - bcc .L1888 -.L1878: - mov w20, w27 - b .L1876 -.L1888: - mov w28, w6 -.L1880: - ldr x0, [x29,144] - ldr x1, [x29,120] - add x26, x0, x1 - mov w0, 239 - str w0, [x26,2056] - mov w0, 137 - str w0, [x26,2052] - mov x0, 1000 - bl __const_udelay - str wzr, [x26,2048] - str wzr, [x26,2048] - ldr w0, [x29,156] - str wzr, [x26,2048] - str wzr, [x26,2048] - cmp w28, w0 - bcc .L1882 - cmn w28, #1 - mov w0, 256 - csel w28, w28, w0, eq -.L1882: - cmn w28, #1 - cset w26, eq - cbnz w26, .L1890 - cmp w28, 256 - cset w1, eq - cbz w1, .L1883 -.L1890: - ldr x0, [x29,112] - mov w1, w19 - mov w2, w22 - mov w3, w20 - mov w4, w28 - bl printk - cbz w26, .L1885 - cbnz w21, .L1885 - mov w0, w19 - mov w1, 3 - mov w21, 1 - bl mt_auto_read_calibration_config - b .L1875 -.L1885: - cbz w21, .L1886 - mov w0, w19 + bcc .L1934 +.L1925: + mov w21, w28 + b .L1923 +.L1934: + mov w25, w6 + b .L1927 +.L1931: + cbz w22, .L1932 + mov w0, w20 mov w1, 0 bl mt_auto_read_calibration_config - cmn w28, #1 + cmn w25, #1 mov w0, 256 - csel w28, w28, w0, eq - b .L1886 -.L1883: - cbz w21, .L1886 - mov w0, w19 - mov w28, 256 - bl mt_auto_read_calibration_config -.L1886: + csel w25, w25, w0, eq +.L1932: bl nandc_wait_flash_ready - mov w0, w28 - 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 + mov w0, w25 + 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 +.L1930: + cbz w22, .L1932 + mov w1, 0 + mov w0, w20 + mov w25, 256 + bl mt_auto_read_calibration_config + b .L1932 .size micron_read_retrial, .-micron_read_retrial .align 2 .global toshiba_3d_read_retrial .type toshiba_3d_read_retrial, %function toshiba_3d_read_retrial: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - mov w23, w1 - uxtb w24, w0 - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] + mov w24, w1 + stp x25, x26, [sp, 64] + and w23, w0, 255 + stp x27, x28, [sp, 80] mov x26, x2 + stp x19, x20, [sp, 16] mov x27, x3 - str w4, [x29,124] - adrp x20, .LANCHOR0 + mov w28, w4 bl nandc_wait_flash_ready - ubfx x19, x23, 24, 2 - add x1, x20, :lo12:.LANCHOR0 - sxtw x0, w24 + add x0, x22, :lo12:.LANCHOR0 + and x1, x23, 255 + add x21, x1, 8 + str x1, [x29, 120] mov w2, 46 mov w3, 56 - add x0, x0, 8 - mov w21, 10 - ldr x25, [x1,1048] - lsl x0, x0, 8 - ldrb w1, [x1,1136] - add x22, x25, x0 - cmp w1, 36 - csel w2, w3, w2, ne - str w2, [x29,112] + ldrb w1, [x0, 1136] + ubfx x19, x24, 24, 2 + ldr x25, [x0, 1056] cmp w1, 36 mov w1, 26 - csel w21, w21, w1, ne - cbnz w19, .L1911 - str x0, [x29,112] - adrp x0, .LC153 - add x0, x0, :lo12:.LC153 + csel w2, w3, w2, ne + str w2, [x29, 112] + mov w2, 10 + csel w1, w2, w1, ne + str w1, [x29, 128] + add x21, x25, x21, lsl 8 + cbnz w19, .L1952 + str x0, [x29, 136] + sxtw x0, w23 + add x0, x0, 8 mov w19, -1 - mov w28, 1 - str x0, [x29,104] -.L1918: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] + add x0, x25, x0, lsl 8 + mov w20, 1 + str x0, [x29, 112] +.L1959: + ldr x0, [x29, 136] + ldrb w0, [x0, 1136] cmp w0, 36 - mov x0, x22 - bne .L1912 - mov w1, w28 + bne .L1953 + mov w1, w20 + mov x0, x21 mov w2, 0 bl toshiba_tlc_set_rr_para - ldr x0, [x29,112] - mov w1, 93 - add x0, x25, x0 - str w1, [x0,8] - b .L1913 -.L1912: - mov w1, w28 - bl toshiba_3d_set_slc_rr_para -.L1913: - ldr w4, [x29,124] - mov w0, w24 - mov w1, w23 - mov x2, x26 + ldr x1, [x29, 112] + mov w0, 93 + str w0, [x1, 8] +.L1954: + mov w4, w28 mov x3, x27 + mov x2, x26 + mov w1, w24 + mov w0, w23 bl flash_read_page mov w4, w0 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1914 - ldr x0, [x29,104] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L1955 mov w3, w4 - mov w1, w28 - mov w2, w23 - str x4, [x29,96] + str w4, [x29, 108] + mov w2, w24 + mov w1, w20 + adrp x0, .LC153 + add x0, x0, :lo12:.LC153 bl printk - ldr x4, [x29,96] -.L1914: + ldr w4, [x29, 108] +.L1955: cmn w4, #1 - beq .L1915 + beq .L1956 adrp x0, .LANCHOR5 - cmn w19, #1 add x0, x0, :lo12:.LANCHOR5 + cmn w19, #1 csel w19, w19, w4, ne - ldr x26, [x0,296] - ldr x27, [x0,312] - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] + ldr x26, [x0, 304] + ldr x27, [x0, 320] + ldr x0, [x29, 136] + ldrb w0, [x0, 1249] add w0, w0, w0, lsl 1 cmp w4, w0, lsr 2 - bcc .L1934 -.L1915: - add w28, w28, 1 - cmp w28, w21 - bne .L1918 - b .L1917 -.L1934: - mov w21, w28 - mov w19, w4 -.L1917: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] - cmp w0, 36 - mov x0, x22 - bne .L1919 - mov w1, 0 - mov w2, w1 - b .L1957 -.L1919: - mov w1, 0 - bl toshiba_3d_set_slc_rr_para - b .L1920 -.L1911: - mov x28, x0 - adrp x0, .LC154 - add x0, x0, :lo12:.LC154 - mov w19, -1 - mov w21, 1 - str x0, [x29,104] -.L1927: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] - cmp w0, 36 - mov x0, x22 - bne .L1921 - mov w1, w21 - mov w2, 1 - bl toshiba_tlc_set_rr_para - add x0, x25, x28 - mov w1, 93 - b .L1956 -.L1921: - mov w1, w21 - bl toshiba_3d_set_tlc_rr_para - add x0, x25, x28 - mov w1, 38 + bcc .L1974 .L1956: - str w1, [x0,8] - mov x2, x26 - mov w0, w24 - mov w1, w23 - ldr w4, [x29,124] - mov x3, x27 - bl flash_read_page - mov w4, w0 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L1923 - ldr x0, [x29,104] - mov w3, w4 - mov w1, w21 - mov w2, w23 - str x4, [x29,96] - bl printk - ldr x4, [x29,96] -.L1923: - cmn w4, #1 - beq .L1924 - adrp x0, .LANCHOR5 - cmn w19, #1 - add x0, x0, :lo12:.LANCHOR5 - csel w19, w19, w4, ne - ldr x26, [x0,296] - ldr x27, [x0,312] - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] - add w0, w0, w0, lsl 1 - cmp w4, w0, lsr 2 - bcc .L1935 -.L1924: - ldr w0, [x29,112] - add w21, w21, 1 - cmp w21, w0 - bne .L1927 - b .L1926 -.L1935: - mov w19, w4 -.L1926: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] + ldr w0, [x29, 128] + add w20, w20, 1 + cmp w0, w20 + bne .L1959 +.L1958: + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 1136] cmp w0, 36 - mov x0, x22 - bne .L1928 + bne .L1960 + mov w2, 0 +.L1997: mov w1, 0 - mov w2, 1 -.L1957: + mov x0, x21 bl toshiba_tlc_set_rr_para - b .L1920 -.L1928: + b .L1961 +.L1953: + mov w1, w20 + mov x0, x21 + bl toshiba_3d_set_slc_rr_para + b .L1954 +.L1974: + mov w19, w4 + b .L1958 +.L1960: mov w1, 0 - bl toshiba_3d_set_tlc_rr_para -.L1920: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] + mov x0, x21 + bl toshiba_3d_set_slc_rr_para +.L1961: + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 1136] cmp w0, 36 - bne .L1929 - ubfiz x0, x24, 8, 8 - add x25, x25, x0 + bne .L1970 + ldr x0, [x29, 120] + add x25, x25, x0, lsl 8 mov w0, 85 - str w0, [x25,2056] + str w0, [x25, 2056] mov w0, 255 - str wzr, [x25,2052] - str wzr, [x25,2048] - str w0, [x25,2056] -.L1929: - add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x20,1244] + str wzr, [x25, 2052] + str wzr, [x25, 2048] + str w0, [x25, 2056] +.L1970: + add x22, x22, :lo12:.LANCHOR0 + ldrb w0, [x22, 1249] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L1930 + bcc .L1971 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L1930: - cmn w19, #1 - beq .L1936 +.L1971: cmp w19, 256 - bne .L1931 -.L1936: + ccmn w19, #1, 4, ne + bne .L1972 adrp x0, .LC155 - mov w1, w24 - add x0, x0, :lo12:.LC155 - mov w2, w23 - mov w3, w21 mov w4, w19 + mov w3, w20 + mov w2, w24 + mov w1, w23 + add x0, x0, :lo12:.LC155 bl printk -.L1931: +.L1972: bl nandc_wait_flash_ready 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], 128 + 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], 144 ret +.L1952: + str x0, [x29, 136] + sxtw x0, w23 + add x0, x0, 8 + mov w19, -1 + add x0, x25, x0, lsl 8 + mov w20, 1 + str x0, [x29, 128] +.L1968: + ldr x0, [x29, 136] + ldrb w0, [x0, 1136] + cmp w0, 36 + bne .L1962 + mov x0, x21 + mov w2, 1 + mov w1, w20 + bl toshiba_tlc_set_rr_para + mov w0, 93 +.L1996: + ldr x1, [x29, 128] + mov w4, w28 + mov x3, x27 + mov x2, x26 + str w0, [x1, 8] + mov w1, w24 + mov w0, w23 + bl flash_read_page + mov w4, w0 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L1964 + mov w3, w4 + str w4, [x29, 108] + mov w2, w24 + mov w1, w20 + adrp x0, .LC154 + add x0, x0, :lo12:.LC154 + bl printk + ldr w4, [x29, 108] +.L1964: + cmn w4, #1 + beq .L1965 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + cmn w19, #1 + csel w19, w19, w4, ne + ldr x26, [x0, 304] + ldr x27, [x0, 320] + ldr x0, [x29, 136] + ldrb w0, [x0, 1249] + add w0, w0, w0, lsl 1 + cmp w4, w0, lsr 2 + bcc .L1975 +.L1965: + ldr w0, [x29, 112] + add w20, w20, 1 + cmp w0, w20 + bne .L1968 +.L1967: + add x0, x22, :lo12:.LANCHOR0 + ldrb w0, [x0, 1136] + cmp w0, 36 + bne .L1969 + mov w2, 1 + b .L1997 +.L1962: + mov x0, x21 + mov w1, w20 + bl toshiba_3d_set_tlc_rr_para + mov w0, 38 + b .L1996 +.L1975: + mov w19, w4 + b .L1967 +.L1969: + mov w1, 0 + mov x0, x21 + bl toshiba_3d_set_tlc_rr_para + b .L1961 .size toshiba_3d_read_retrial, .-toshiba_3d_read_retrial .align 2 .global toshiba_read_retrial @@ -12276,623 +12221,614 @@ toshiba_3d_read_retrial: toshiba_read_retrial: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - uxtb w21, w0 - str w1, [x29,124] - mov x26, x2 - str w4, [x29,120] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - mov x27, x3 + stp x19, x20, [sp, 16] + and w19, w0, 255 + stp x27, x28, [sp, 80] + mov x27, x2 + stp w4, w1, [x29, 120] + mov x28, x3 + stp x21, x22, [sp, 32] + adrp x20, .LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] bl nandc_wait_flash_ready - mov w0, w21 - adrp x19, .LANCHOR0 - mov w25, 0 + mov w0, w19 bl zftl_flash_enter_slc_mode - mov w0, w21 + mov w0, w19 bl zftl_flash_exit_slc_mode - add x1, x19, :lo12:.LANCHOR0 - sxtw x0, w21 + add x1, x20, :lo12:.LANCHOR0 + and x0, x19, 255 add x22, x0, 8 - str x0, [x29,112] - ldrb w0, [x1,1136] - ldr x23, [x1,1048] + str x0, [x29, 112] + ldrb w0, [x1, 1136] + ldr x23, [x1, 1056] sub w0, w0, #67 + and w0, w0, 255 add x22, x23, x22, lsl 8 - uxtb w0, w0 cmp w0, 1 - bls .L1959 - ldrb w0, [x1,1192] - cbz w0, .L1960 + bls .L2016 + ldrb w0, [x1, 1192] + cbz w0, .L2017 + mov w24, 1 mov w0, 1 - mov w25, 1 bl nandc_set_if_mode -.L1960: - ubfiz x0, x21, 8, 8 +.L2000: + and x0, x19, 255 mov w1, 92 - add x0, x23, x0 - str w1, [x0,2056] + add x0, x23, x0, lsl 8 + str w1, [x0, 2056] mov w1, 197 - str w1, [x0,2056] -.L1959: - ldr x0, [x29,112] - mov w20, 1 - mov w24, -1 + str w1, [x0, 2056] +.L1999: + sxtw x0, w19 + mov w21, 1 add x0, x0, 8 - lsl x0, x0, 8 - str x0, [x29,104] - ubfiz x0, x21, 8, 8 - str x0, [x29,96] -.L1961: + mov w25, -1 + add x0, x23, x0, lsl 8 + str x0, [x29, 104] +.L2001: adrp x0, .LANCHOR5 add x0, x0, :lo12:.LANCHOR5 - ldrb w0, [x0,320] + ldrb w0, [x0, 328] add w0, w0, 1 - cmp w20, w0 - bcs .L1992 - add x0, x19, :lo12:.LANCHOR0 - mov w1, w20 - ldrb w0, [x0,1136] - sub w0, w0, #67 - uxtb w0, w0 - cmp w0, 1 - mov x0, x22 - bhi .L1962 - bl sandisk_set_rr_para - b .L1963 -.L1962: - bl toshiba_set_rr_para -.L1963: - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] - cmp w0, 34 - bne .L1964 - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldrb w0, [x0,320] - sub w0, w0, #3 - cmp w20, w0 - bne .L1964 - ldr x0, [x29,104] - mov w1, 179 - add x0, x23, x0 - str w1, [x0,8] -.L1964: - ldr x0, [x29,96] - mov w1, 38 - ldr w4, [x29,120] - mov x2, x26 - add x0, x23, x0 - mov x3, x27 - str w1, [x0,2056] - mov w1, 93 - str w1, [x0,2056] - mov w0, w21 - ldr w1, [x29,124] - bl flash_read_page - cmn w0, #1 - mov w28, w0 - beq .L1967 - cmn w24, #1 - csel w24, w24, w0, ne - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldr x26, [x0,296] - ldr x27, [x0,312] - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L1969 -.L1967: - add w20, w20, 1 - b .L1961 -.L1992: - mov w28, w24 -.L1969: - add x0, x19, :lo12:.LANCHOR0 + cmp w21, w0 + bcc .L2010 + mov w26, w25 +.L2009: + add x0, x20, :lo12:.LANCHOR0 mov w1, 0 - ldrb w0, [x0,1136] + ldrb w0, [x0, 1136] sub w0, w0, #67 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 1 mov x0, x22 - bhi .L1971 + bhi .L2011 bl sandisk_set_rr_para - b .L1972 -.L1971: - bl toshiba_set_rr_para -.L1972: - ldr x0, [x29,112] - add x19, x19, :lo12:.LANCHOR0 - add x0, x0, 8 - add x23, x23, x0, lsl 8 +.L2012: + sxtw x19, w19 + add x20, x20, :lo12:.LANCHOR0 + add x19, x19, 8 mov w0, 255 - str w0, [x23,8] - ldrb w0, [x19,1244] + add x23, x23, x19, lsl 8 + str w0, [x23, 8] + ldrb w0, [x20, 1249] add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L1973 - cmn w28, #1 + cmp w26, w0, lsr 2 + bcc .L2013 + cmn w26, #1 mov w0, 256 - csel w28, w28, w0, eq -.L1973: - cmn w28, #1 - beq .L1979 - cmp w28, 256 - bne .L1974 -.L1979: + csel w26, w26, w0, eq +.L2013: + cmp w26, 256 + ccmn w26, #1, 4, ne + bne .L2014 + ldr w2, [x29, 124] adrp x0, .LC155 - ldr w2, [x29,124] + mov w4, w26 + mov w3, w21 + mov w1, w21 add x0, x0, :lo12:.LC155 - mov w1, w20 - mov w3, w20 - mov w4, w28 bl printk -.L1974: +.L2014: bl nandc_wait_flash_ready - cbz w25, .L1976 + cbz w24, .L1998 mov w0, 4 bl nandc_set_if_mode -.L1976: - mov w0, w28 - 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] +.L1998: + 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], 128 ret +.L2017: + mov w24, 0 + b .L2000 +.L2016: + mov w24, 0 + b .L1999 +.L2010: + add x0, x20, :lo12:.LANCHOR0 + mov w1, w21 + ldrb w0, [x0, 1136] + sub w0, w0, #67 + and w0, w0, 255 + cmp w0, 1 + mov x0, x22 + bhi .L2002 + bl sandisk_set_rr_para +.L2003: + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1136] + cmp w0, 34 + bne .L2004 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + ldrb w0, [x0, 328] + sub w0, w0, #3 + cmp w21, w0 + bne .L2004 + ldr x1, [x29, 104] + mov w0, 179 + str w0, [x1, 8] +.L2004: + ldr x0, [x29, 112] + mov w1, 38 + ldr w4, [x29, 120] + mov x3, x28 + mov x2, x27 + add x0, x23, x0, lsl 8 + str w1, [x0, 2056] + mov w1, 93 + str w1, [x0, 2056] + mov w0, w19 + ldr w1, [x29, 124] + bl flash_read_page + mov w26, w0 + cmn w0, #1 + beq .L2007 + cmn w25, #1 + csel w25, w25, w0, ne + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + ldr x27, [x0, 304] + ldr x28, [x0, 320] + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1249] + add w0, w0, w0, lsl 1 + cmp w26, w0, lsr 2 + bcc .L2009 +.L2007: + add w21, w21, 1 + b .L2001 +.L2002: + bl toshiba_set_rr_para + b .L2003 +.L2011: + bl toshiba_set_rr_para + b .L2012 .size toshiba_read_retrial, .-toshiba_read_retrial .align 2 .global ymtc_3d_read_retrial .type ymtc_3d_read_retrial, %function ymtc_3d_read_retrial: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxtb x22, w0 + stp x19, x20, [sp, 16] + mov w19, -1 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] mov w24, w1 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + and w23, w0, 255 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] mov x25, x2 mov x26, x3 mov w27, w4 bl nandc_wait_flash_ready - mov w0, w22 - adrp x21, .LANCHOR0 - mov x23, x22 - mov w19, -1 - bl zftl_flash_enter_slc_mode - mov w20, 1 - mov w0, w22 - add x22, x22, 8 - adrp x28, .LANCHOR5 - bl zftl_flash_exit_slc_mode - add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0,1048] - add x22, x0, x22, lsl 8 - ubfx x0, x24, 24, 2 - cbnz w0, .L2003 -.L1998: - mov x0, x22 - mov w1, w20 - bl ymtc_3d_set_slc_rr_para + ubfiz x28, x23, 8, 8 mov w0, w23 - mov w1, w24 - mov x2, x25 - mov x3, x26 + bl zftl_flash_enter_slc_mode + mov w0, w23 + bl zftl_flash_exit_slc_mode + add x1, x22, :lo12:.LANCHOR0 + add x0, x28, 2048 + adrp x5, .LANCHOR5 + mov w20, 1 + add x5, x5, :lo12:.LANCHOR5 + mov x21, x1 + ldr x28, [x1, 1056] + tst x24, 50331648 + add x28, x28, x0 + bne .L2040 +.L2035: + str x5, [x29, 104] + mov w1, w20 + mov x0, x28 + bl ymtc_3d_set_slc_rr_para mov w4, w27 + mov x3, x26 + mov x2, x25 + mov w1, w24 + mov w0, w23 bl flash_read_page + ldr x5, [x29, 104] cmn w0, #1 - beq .L1995 - add x1, x28, :lo12:.LANCHOR5 + beq .L2032 + ldrb w1, [x21, 1249] cmn w19, #1 csel w19, w19, w0, ne - ldr x25, [x1,296] - ldr x26, [x1,312] - add x1, x21, :lo12:.LANCHOR0 - ldrb w1, [x1,1244] + ldr x25, [x5, 304] + ldr x26, [x5, 320] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - bcc .L2007 -.L1995: + bcc .L2043 +.L2032: add w20, w20, 1 cmp w20, 10 - bne .L1998 - b .L1997 -.L2007: - mov w19, w0 -.L1997: - mov x0, x22 + bne .L2035 +.L2034: mov w1, 0 + mov x0, x28 bl ymtc_3d_set_slc_rr_para - b .L1999 -.L2023: - add x1, x28, :lo12:.LANCHOR5 - cmn w19, #1 - csel w19, w19, w0, ne - ldr x25, [x1,296] - ldr x26, [x1,312] - add x1, x21, :lo12:.LANCHOR0 - ldrb w1, [x1,1244] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L2008 -.L2000: - add w20, w20, 1 - cmp w20, 51 - beq .L2002 -.L2003: - mov x0, x22 - mov w1, w20 - bl ymtc_3d_set_tlc_rr_para - mov w0, w23 - mov w1, w24 - mov x2, x25 - mov x3, x26 - mov w4, w27 - bl flash_read_page - cmn w0, #1 - bne .L2023 - b .L2000 -.L2008: - mov w19, w0 -.L2002: - mov x0, x22 - mov w1, 0 - bl ymtc_3d_set_tlc_rr_para -.L1999: - add x21, x21, :lo12:.LANCHOR0 - ldrb w0, [x21,1244] +.L2036: + add x22, x22, :lo12:.LANCHOR0 + ldrb w0, [x22, 1249] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L2004 + bcc .L2041 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L2004: - cmn w19, #1 - beq .L2009 +.L2041: cmp w19, 256 - bne .L2005 -.L2009: + ccmn w19, #1, 4, ne + bne .L2042 adrp x0, .LC156 + mov w4, w19 + mov w3, w20 + mov w2, w24 mov w1, w20 add x0, x0, :lo12:.LC156 - mov w2, w24 - mov w3, w20 - mov w4, w19 bl printk -.L2005: +.L2042: bl nandc_wait_flash_ready 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], 96 + 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 +.L2043: + mov w19, w0 + b .L2034 +.L2040: + str x5, [x29, 104] + mov w1, w20 + mov x0, x28 + bl ymtc_3d_set_tlc_rr_para + mov w4, w27 + mov x3, x26 + mov x2, x25 + mov w1, w24 + mov w0, w23 + bl flash_read_page + ldr x5, [x29, 104] + cmn w0, #1 + beq .L2037 + ldrb w1, [x21, 1249] + cmn w19, #1 + csel w19, w19, w0, ne + ldr x25, [x5, 304] + ldr x26, [x5, 320] + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L2044 +.L2037: + add w20, w20, 1 + cmp w20, 51 + bne .L2040 +.L2039: + mov w1, 0 + mov x0, x28 + bl ymtc_3d_set_tlc_rr_para + b .L2036 +.L2044: + mov w19, w0 + b .L2039 .size ymtc_3d_read_retrial, .-ymtc_3d_read_retrial .align 2 .global samsung_read_retrial .type samsung_read_retrial, %function samsung_read_retrial: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov w22, w1 - uxtb w23, w0 - stp x25, x26, [sp,64] - str w4, [x29,140] - mov x25, x2 - mov x26, x3 - adrp x21, .LANCHOR0 - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + and w22, w0, 255 + mov w21, w1 + stp x23, x24, [sp, 48] + str w4, [x29, 108] + mov x23, x2 + mov x24, x3 + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + adrp x20, .LANCHOR0 + stp x27, x28, [sp, 80] bl nandc_wait_flash_ready - uxtb x19, w23 - mov w0, w23 + mov w0, w22 bl zftl_flash_enter_slc_mode - mov w0, w23 + mov w0, w22 bl zftl_flash_exit_slc_mode - add x0, x21, :lo12:.LANCHOR0 - adrp x5, .LANCHOR4 - add x5, x5, :lo12:.LANCHOR4 - ldr x24, [x0,1048] - ubfx x0, x22, 24, 2 - cbnz w0, .L2025 - add x0, x5, 161 - add x5, x5, 136 - str x0, [x29,120] - mov w0, 1 - sub w0, w0, w5 - str w0, [x29,112] - lsl x0, x19, 8 - str x0, [x29,128] - add x19, x24, x0 - adrp x0, .LC157 - add x0, x0, :lo12:.LC157 - mov w27, -1 - str x0, [x29,104] -.L2030: - ldr w0, [x29,112] - str x5, [x29,96] - add w20, w0, w5 + add x0, x20, :lo12:.LANCHOR0 + tst x21, 50331648 + and x5, x22, 255 + adrp x7, .LANCHOR4 + ldr x0, [x0, 1056] + bne .L2060 + add x7, x7, :lo12:.LANCHOR4 + adrp x25, .LC157 + add x25, x25, :lo12:.LC157 + add x27, x0, x5, lsl 8 + mov x28, 0 + add x0, x7, 152 + mov w26, -1 + str x0, [x29, 96] +.L2065: mov w0, 239 - str w0, [x19,2056] + str w0, [x27, 2056] mov w0, 141 - str w0, [x19,2052] - ldrsb w0, [x5,1] - str w0, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] + str w0, [x27, 2052] + ldr x0, [x29, 96] + add w19, w28, 1 + add x0, x0, x28 + ldrsb w0, [x0, 1] + str w0, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] bl nandc_wait_flash_ready - ldr w4, [x29,140] - mov w0, w23 - mov w1, w22 - mov x2, x25 - mov x3, x26 - bl flash_read_page - mov w28, w0 - adrp x0, .LANCHOR2 - ldr x5, [x29,96] - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L2026 - ldr x0, [x29,104] - mov w1, w20 - mov w2, w22 - mov w3, w28 - bl printk - ldr x5, [x29,96] -.L2026: - cmn w28, #1 - beq .L2027 - adrp x0, .LANCHOR5 - cmn w27, #1 - add x0, x0, :lo12:.LANCHOR5 - csel w27, w27, w28, ne - ldr x25, [x0,296] - ldr x26, [x0,312] - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] - add w0, w0, w0, lsl 1 - cmp w28, w0, lsr 2 - bcc .L2040 -.L2027: - ldr x0, [x29,120] - add x5, x5, 1 - cmp x5, x0 - bne .L2030 - mov w20, 26 - b .L2029 -.L2040: - mov w27, w28 -.L2029: - ldr x0, [x29,128] - add x19, x24, x0 - mov w0, 239 - str w0, [x19,2056] - mov w0, 141 - b .L2062 -.L2025: - lsl x0, x19, 8 - str x0, [x29,128] - add x19, x24, x0 - adrp x0, .LC158 - add x0, x0, :lo12:.LC158 - add x28, x5, 168 - mov w27, -1 - mov w20, 1 - str x0, [x29,120] -.L2036: - mov w0, 239 - str w0, [x19,2056] - mov w0, 137 - str w0, [x19,2052] - ldrb w0, [x28,4] - str w0, [x19,2048] - ldrb w0, [x28,5] - str w0, [x19,2048] - ldrb w0, [x28,6] - str w0, [x19,2048] - ldrb w0, [x28,7] - str w0, [x19,2048] - bl nandc_wait_flash_ready - ldr w4, [x29,140] - mov w0, w23 - mov w1, w22 - mov x2, x25 - mov x3, x26 + ldr w4, [x29, 108] + mov x3, x24 + mov x2, x23 + mov w1, w21 + mov w0, w22 bl flash_read_page mov w4, w0 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L2032 - ldr x0, [x29,120] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L2061 mov w3, w4 - mov w1, w20 - mov w2, w22 - str x4, [x29,112] + str w4, [x29, 104] + mov w2, w21 + mov w1, w19 + mov x0, x25 bl printk - ldr x4, [x29,112] -.L2032: + ldr w4, [x29, 104] +.L2061: cmn w4, #1 - beq .L2033 + beq .L2062 adrp x0, .LANCHOR5 - cmn w27, #1 add x0, x0, :lo12:.LANCHOR5 - csel w27, w27, w4, ne - ldr x25, [x0,296] - ldr x26, [x0,312] - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] + cmn w26, #1 + csel w26, w26, w4, ne + ldr x23, [x0, 304] + ldr x24, [x0, 320] + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1249] add w0, w0, w0, lsl 1 cmp w4, w0, lsr 2 - bcc .L2041 -.L2033: - add w20, w20, 1 - add x28, x28, 4 - cmp w20, 26 - bne .L2036 - b .L2035 -.L2041: - mov w27, w4 -.L2035: - ldr x0, [x29,128] - add x19, x24, x0 - mov w0, 239 - str w0, [x19,2056] - mov w0, 137 + bcc .L2074 .L2062: - str w0, [x19,2052] - add x21, x21, :lo12:.LANCHOR0 - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] - str wzr, [x19,2048] + add x28, x28, 1 + cmp x28, 25 + bne .L2065 + mov w19, 26 +.L2064: + mov w0, 239 + str w0, [x27, 2056] + mov w0, 141 + str w0, [x27, 2052] + str wzr, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] + str wzr, [x27, 2048] +.L2096: + add x20, x20, :lo12:.LANCHOR0 bl nandc_wait_flash_ready - ldrb w0, [x21,1244] + ldrb w0, [x20, 1249] add w0, w0, w0, lsl 1 - cmp w27, w0, lsr 2 - bcc .L2037 - cmn w27, #1 + cmp w26, w0, lsr 2 + bcc .L2072 + cmn w26, #1 mov w0, 256 - csel w27, w27, w0, eq -.L2037: - cmn w27, #1 - beq .L2042 - cmp w27, 256 - bne .L2038 -.L2042: + csel w26, w26, w0, eq +.L2072: + cmp w26, 256 + ccmn w26, #1, 4, ne + bne .L2073 adrp x0, .LC159 - mov w1, w20 + mov w4, w26 + mov w3, w19 + mov w2, w21 + mov w1, w19 add x0, x0, :lo12:.LC159 - mov w2, w22 - mov w3, w20 - mov w4, w27 bl printk -.L2038: +.L2073: bl nandc_wait_flash_ready - mov w0, w27 - 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], 144 + 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 +.L2074: + mov w26, w4 + b .L2064 +.L2060: + add x7, x7, :lo12:.LANCHOR4 + adrp x25, .LC158 + add x27, x7, 188 + add x28, x0, x5, lsl 8 + add x25, x25, :lo12:.LC158 + mov w26, -1 + mov w19, 1 +.L2071: + mov w0, 239 + str w0, [x28, 2056] + mov w0, 137 + str w0, [x28, 2052] + ldrb w0, [x27] + str w0, [x28, 2048] + ldrb w0, [x27, 1] + str w0, [x28, 2048] + ldrb w0, [x27, 2] + str w0, [x28, 2048] + ldrb w0, [x27, 3] + str w0, [x28, 2048] + bl nandc_wait_flash_ready + ldr w4, [x29, 108] + mov x3, x24 + mov x2, x23 + mov w1, w21 + mov w0, w22 + bl flash_read_page + mov w4, w0 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L2067 + mov w3, w4 + str w4, [x29, 96] + mov w2, w21 + mov w1, w19 + mov x0, x25 + bl printk + ldr w4, [x29, 96] +.L2067: + cmn w4, #1 + beq .L2068 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + cmn w26, #1 + csel w26, w26, w4, ne + ldr x23, [x0, 304] + ldr x24, [x0, 320] + add x0, x20, :lo12:.LANCHOR0 + ldrb w0, [x0, 1249] + add w0, w0, w0, lsl 1 + cmp w4, w0, lsr 2 + bcc .L2075 +.L2068: + add w19, w19, 1 + add x27, x27, 4 + cmp w19, 26 + bne .L2071 +.L2070: + mov w0, 239 + str w0, [x28, 2056] + mov w0, 137 + str w0, [x28, 2052] + str wzr, [x28, 2048] + str wzr, [x28, 2048] + str wzr, [x28, 2048] + str wzr, [x28, 2048] + b .L2096 +.L2075: + mov w26, w4 + b .L2070 .size samsung_read_retrial, .-samsung_read_retrial .align 2 .global hynix_read_retrial .type hynix_read_retrial, %function hynix_read_retrial: stp x29, x30, [sp, -128]! + adrp x5, .LANCHOR0 + add x8, x5, :lo12:.LANCHOR0 add x29, sp, 0 - stp x27, x28, [sp,80] - adrp x28, .LANCHOR0 - stp x21, x22, [sp,32] - uxtb x22, w0 - add x0, x28, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x21, x22, [sp, 32] + mov w22, w1 + stp x25, x26, [sp, 64] mov x25, x2 - mov w23, w1 - ldr x5, [x0,1128] + stp x19, x20, [sp, 16] mov x26, x3 - str w4, [x29,124] - mov x21, x22 - add x27, x5, 112 + stp x23, x24, [sp, 48] + and x23, x0, 255 + stp x27, x28, [sp, 80] + mov w27, w4 + stp x5, x8, [x29, 112] + mov x21, x23 + ldr x28, [x8, 1048] mov w19, -1 - add x0, x27, x22 - ldrb w24, [x27,2] - ldrb w20, [x0,8] + add x28, x28, 112 + add x0, x28, x23 + ldrb w24, [x28, 2] + ldrb w20, [x0, 8] bl nandc_wait_flash_ready - mov w0, w22 + mov w0, w23 bl zftl_flash_enter_slc_mode - mov w0, w22 + mov w0, w23 bl zftl_flash_exit_slc_mode - mov w6, 0 + ldp x5, x8, [x29, 112] adrp x7, .LANCHOR5 -.L2064: + add x7, x7, :lo12:.LANCHOR5 + mov w6, 0 +.L2098: cmp w6, w24 - bcs .L2068 - add w20, w20, 1 - mov w0, w21 - str x7, [x29,104] - uxtb w20, w20 - str x6, [x29,112] - cmp w20, w24 - csel w20, w20, wzr, cc - mov w1, w20 - bl hynix_set_rr_para - ldr w4, [x29,124] - mov w0, w21 - mov w1, w23 - mov x2, x25 - mov x3, x26 - bl flash_read_page - cmn w0, #1 - ldr x6, [x29,112] - ldr x7, [x29,104] - beq .L2066 - add x1, x7, :lo12:.LANCHOR5 - cmn w19, #1 - csel w19, w19, w0, ne - ldr x25, [x1,296] - ldr x26, [x1,312] - add x1, x28, :lo12:.LANCHOR0 - ldrb w1, [x1,1244] - add w1, w1, w1, lsl 1 - cmp w0, w1, lsr 2 - bcc .L2073 -.L2066: - add w6, w6, 1 - b .L2064 -.L2073: - mov w19, w0 -.L2068: - add x28, x28, :lo12:.LANCHOR0 - add x22, x27, x22 - ldrb w0, [x28,1244] - strb w20, [x22,8] + bcc .L2103 +.L2102: + add x1, x5, :lo12:.LANCHOR0 + add x23, x28, x23 + ldrb w0, [x1, 1249] + strb w20, [x23, 8] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 - bcc .L2070 + bcc .L2104 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq -.L2070: - cmn w19, #1 - beq .L2074 +.L2104: cmp w19, 256 - bne .L2071 -.L2074: + ccmn w19, #1, 4, ne + bne .L2105 adrp x0, .LC160 + mov w4, w19 + mov w3, w6 + mov w2, w22 mov w1, w6 add x0, x0, :lo12:.LC160 - mov w2, w23 - mov w3, w6 - mov w4, w19 bl printk -.L2071: +.L2105: bl nandc_wait_flash_ready 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 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 +.L2103: + add w20, w20, 1 + stp x8, x7, [x29, 96] + and w20, w20, 255 + str x5, [x29, 112] + cmp w24, w20 + str w6, [x29, 120] + csel w20, w20, wzr, hi + mov w0, w21 + mov w1, w20 + bl hynix_set_rr_para + mov w4, w27 + mov x3, x26 + mov x2, x25 + mov w1, w22 + mov w0, w21 + bl flash_read_page + ldr w6, [x29, 120] + cmn w0, #1 + ldp x8, x7, [x29, 96] + ldr x5, [x29, 112] + beq .L2100 + ldrb w1, [x8, 1249] + cmn w19, #1 + csel w19, w19, w0, ne + ldr x25, [x7, 304] + ldr x26, [x7, 320] + add w1, w1, w1, lsl 1 + cmp w0, w1, lsr 2 + bcc .L2106 +.L2100: + add w6, w6, 1 + b .L2098 +.L2106: + mov w19, w0 + b .L2102 .size hynix_read_retrial, .-hynix_read_retrial .align 2 .global flash_ddr_tuning_read @@ -12900,119 +12836,98 @@ hynix_read_retrial: flash_ddr_tuning_read: stp x29, x30, [sp, -128]! 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] - uxtb w20, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x21, x22, [sp, 32] mov w22, w1 + stp x23, x24, [sp, 48] mov x24, x2 - mov x23, x3 - str w4, [x29,120] + stp x25, x26, [sp, 64] + adrp x23, .LANCHOR5 + stp x27, x28, [sp, 80] + mov x25, x3 + str w4, [x29, 120] + add x23, x23, :lo12:.LANCHOR5 bl nandc_get_ddr_para - mov w27, 0 - str w0, [x29,116] + mov w28, 0 + str w0, [x29, 116] + mov w26, 0 adrp x0, .LC161 - str w27, [x29,124] + mov w27, 0 add x0, x0, :lo12:.LC161 - mov w25, w27 - mov w28, w27 mov w19, 1024 - mov w26, 6 mov w21, -1 - str x0, [x29,104] -.L2089: - mov w0, w26 + mov w7, 6 + str wzr, [x29, 124] + str x0, [x29, 104] +.L2122: + mov w0, w7 + str w7, [x29, 112] bl nandc_set_ddr_para - ldr w4, [x29,120] - mov w0, w20 - mov w1, w22 + ldr w4, [x29, 120] + mov x3, x25 mov x2, x24 - mov x3, x23 + mov w1, w22 + mov w0, w20 bl flash_read_page mov w4, w0 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L2084 - ldr x0, [x29,104] + ldr w7, [x29, 112] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L2117 + ldr x0, [x29, 104] mov w3, w4 - mov w1, w26 + mov w1, w7 + str w4, [x29, 100] + str w7, [x29, 112] mov w2, w22 - str x4, [x29,96] bl printk - ldr x4, [x29,96] -.L2084: + ldr w4, [x29, 100] + ldr w7, [x29, 112] +.L2117: add w0, w19, 1 cmp w4, w0 - bhi .L2085 - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldr x24, [x0,296] - ldr x23, [x0,312] - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - ldrb w0, [x0,1244] + bhi .L2118 + adrp x0, .LANCHOR0+1249 + ldr x24, [x23, 304] + ldr x25, [x23, 320] + ldrb w0, [x0, #:lo12:.LANCHOR0+1249] cmp w4, w0, lsr 2 - bcs .L2095 - add w28, w28, 1 - cmp w28, 7 - bls .L2095 - sub w27, w26, w28 + bcs .L2128 + add w27, w27, 1 + cmp w27, 7 + bls .L2128 + sub w28, w7, w27 mov w19, w4 mov w21, 0 - b .L2087 -.L2085: - cmp w25, w28 - bcs .L2096 - sub w0, w27, w28 - cmp w28, 7 - str w0, [x29,124] - bhi .L2088 - mov w25, w28 - b .L2096 -.L2095: - mov w27, w26 - mov w19, w4 - mov w21, 0 - b .L2086 -.L2096: - mov w28, 0 -.L2086: - add w26, w26, 2 - cmp w26, 50 - bne .L2089 -.L2087: - ldr w0, [x29,124] - cmp w25, w28 - csel w27, w27, w0, ls -.L2088: - cbz w27, .L2090 - adrp x0, .LANCHOR0+1244 +.L2120: + ldr w0, [x29, 124] + cmp w27, w26 + csel w28, w28, w0, cs +.L2121: + cbz w28, .L2123 + adrp x0, .LANCHOR0+1249 mov w1, 3 - ldrb w0, [x0,#:lo12:.LANCHOR0+1244] + ldrb w0, [x0, #:lo12:.LANCHOR0+1249] udiv w0, w0, w1 - cmp w19, w0 - bcs .L2090 + cmp w0, w19 + bls .L2123 + mov w1, w28 adrp x0, .LC162 - mov w1, w27 add x0, x0, :lo12:.LC162 bl printk - mov w0, w27 - b .L2108 -.L2090: - ldrb w0, [x29,116] -.L2108: + mov w0, w28 +.L2142: bl nandc_set_ddr_para - cbz w21, .L2092 + cbz w21, .L2116 adrp x0, .LANCHOR0 add x27, x0, :lo12:.LANCHOR0 - mov x26, x0 - ldrb w1, [x27,1304] - tbz x1, 0, .L2092 - adrp x0, .LC163 + mov x23, x0 + ldrb w1, [x27, 1248] + tbz x1, 0, .L2116 mov w2, w22 mov w1, w20 + adrp x0, .LC163 add x0, x0, :lo12:.LC163 bl printk mov w0, w20 @@ -13023,51 +12938,74 @@ flash_ddr_tuning_read: bl nandc_set_if_mode add x0, x27, w20, sxtw mov w1, 2 - strb w1, [x0,1264] + strb w1, [x0, 1208] mov w0, w20 bl zftl_flash_enter_slc_mode - ldr w4, [x29,120] - mov w1, w22 + ldr w4, [x29, 120] + mov x3, x25 mov x2, x24 - mov x3, x23 + mov w1, w22 mov w0, w20 bl flash_read_page mov w19, w0 - adrp x0, .LC164 - mov w1, w20 - add x0, x0, :lo12:.LC164 + mov w3, w0 mov w2, w22 - mov w3, w19 + mov w1, w20 + adrp x0, .LC164 + add x0, x0, :lo12:.LC164 bl printk - ldrb w0, [x27,1244] + ldrb w0, [x27, 1249] cmp w19, w0 - bhi .L2097 + bhi .L2130 adrp x1, .LANCHOR5 add x1, x1, :lo12:.LANCHOR5 - ldr w0, [x1,324] + ldr w0, [x1, 332] add w0, w0, 1 - str w0, [x1,324] + str w0, [x1, 332] cmp w0, 100 - bls .L2093 - strb wzr, [x27,1192] - b .L2092 -.L2097: - mov w19, w21 -.L2093: - add x20, x26, :lo12:.LANCHOR0 - ldrb w0, [x20,1304] - bl flash_set_interface_mode - ldrb w0, [x20,1304] - bl nandc_set_if_mode -.L2092: + bls .L2126 + strb wzr, [x27, 1192] +.L2116: 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 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 +.L2118: + cmp w27, w26 + bls .L2129 + sub w0, w28, w27 + str w0, [x29, 124] + cmp w27, 7 + bhi .L2121 + mov w26, w27 +.L2129: + mov w27, 0 + b .L2119 +.L2128: + mov w28, w7 + mov w19, w4 + mov w21, 0 +.L2119: + add w7, w7, 2 + cmp w7, 50 + bne .L2122 + b .L2120 +.L2123: + ldrb w0, [x29, 116] + b .L2142 +.L2130: + mov w19, w21 +.L2126: + add x23, x23, :lo12:.LANCHOR0 + ldrb w0, [x23, 1248] + bl flash_set_interface_mode + ldrb w0, [x23, 1248] + bl nandc_set_if_mode + b .L2116 .size flash_ddr_tuning_read, .-flash_ddr_tuning_read .align 2 .global flash_read_page_en @@ -13075,131 +13013,132 @@ flash_ddr_tuning_read: flash_read_page_en: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - mov w19, w1 - stp x25, x26, [sp,64] - uxtb w25, w0 + stp x25, x26, [sp, 64] + and w25, w0, 255 add x0, x20, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - mov x24, x2 + stp x23, x24, [sp, 48] + stp x21, x22, [sp, 32] + mov w19, w1 + mov x22, x2 mov x23, x3 - ldrb w0, [x0,1153] - mov w22, w4 + ldrb w0, [x0, 1153] + mov w24, w4 cmp w0, w25 - bhi .L2110 + bhi .L2144 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 288 mov w2, 431 - add x1, x1, 272 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2110: +.L2144: add x0, x20, :lo12:.LANCHOR0 add x1, x0, w25, sxtw - ldrb w21, [x1,1248] - ldrb w4, [x0,1153] + ldrb w4, [x0, 1153] + ldrb w21, [x1, 1196] cmp w25, w4 - bcc .L2111 + bcc .L2145 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L2137 - adrp x0, .LC165 - mov w1, w21 - add x0, x0, :lo12:.LC165 - mov w2, w25 - mov w3, w19 - bl printk -.L2137: + ldr w0, [x0, #:lo12:.LANCHOR2] + tbnz x0, 6, .L2146 +.L2170: mov w0, -1 - b .L2136 -.L2111: - ubfx x1, x19, 24, 2 - cbnz w1, .L2114 - adrp x1, .LANCHOR0 - ldrb w1, [x1,#:lo12:.LANCHOR0] - cbz w1, .L2115 - ldrb w0, [x0,1] - cbz w0, .L2114 -.L2115: - 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, .L2116 - add w19, w0, w19, lsl 1 - b .L2114 -.L2116: - add x1, x1, 4 - ldrh w19, [x1,w19,uxtw 1] - add w19, w19, w0 -.L2114: - mov w0, w21 - mov w1, w19 - mov x2, x24 - mov x3, x23 - mov w4, w22 - bl flash_read_page - cmn w0, #1 - bne .L2136 - add x25, x20, :lo12:.LANCHOR0 - ldrb w26, [x25,1240] - cbnz w26, .L2118 -.L2121: - adrp x0, .LANCHOR5+328 - ldr x5, [x0,#:lo12:.LANCHOR5+328] - cbnz x5, .L2119 - b .L2120 -.L2118: - mov w0, w21 - mov w1, w19 - mov x2, x24 - mov x3, x23 - mov w4, w22 - strb wzr, [x25,1240] - bl flash_read_page - strb w26, [x25,1240] - cmn w0, #1 - beq .L2121 - b .L2136 -.L2119: - mov w0, w21 - mov w1, w19 - mov x2, x24 - mov x3, x23 - mov w4, w22 - blr x5 - cmn w0, #1 - bne .L2136 -.L2120: - add x20, x20, :lo12:.LANCHOR0 - adrp x0, .LC166 - add x0, x0, :lo12:.LC166 - mov w1, 0 - mov w2, w19 - mov w3, -1 - ldrb w4, [x20,1240] - bl printk - ldrb w0, [x20,1192] - cbz w0, .L2137 - mov w0, w21 - mov w1, w19 - mov x2, x24 - mov x3, x23 - mov w4, w22 - bl flash_ddr_tuning_read -.L2136: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] +.L2143: + 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 +.L2146: + mov w3, w19 + mov w2, w25 + mov w1, w21 + adrp x0, .LC165 + add x0, x0, :lo12:.LC165 + bl printk + b .L2170 +.L2145: + tst x19, 50331648 + bne .L2148 + ldrb w1, [x20, #:lo12:.LANCHOR0] + cbz w1, .L2149 + ldrb w0, [x0, 1] + cbz w0, .L2148 +.L2149: + 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, .L2150 + add w19, w0, w19, lsl 1 +.L2148: + mov w4, w24 + mov x3, x23 + mov x2, x22 + mov w1, w19 + mov w0, w21 + bl flash_read_page + cmn w0, #1 + bne .L2143 + add x25, x20, :lo12:.LANCHOR0 + ldrb w26, [x25, 1252] + cbnz w26, .L2151 +.L2154: + adrp x0, .LANCHOR5+336 + ldr x5, [x0, #:lo12:.LANCHOR5+336] + cbnz x5, .L2152 +.L2153: + add x20, x20, :lo12:.LANCHOR0 + mov w3, -1 + mov w2, w19 + mov w1, 0 + adrp x0, .LC166 + add x0, x0, :lo12:.LC166 + ldrb w4, [x20, 1252] + bl printk + ldrb w0, [x20, 1192] + cbz w0, .L2170 + mov w4, w24 + mov x3, x23 + mov x2, x22 + mov w1, w19 + mov w0, w21 + bl flash_ddr_tuning_read + b .L2143 +.L2150: + add x1, x1, 4 + ldrh w19, [x1, w19, uxtw 1] + add w19, w19, w0 + b .L2148 +.L2151: + strb wzr, [x25, 1252] + mov w4, w24 + mov x3, x23 + mov x2, x22 + mov w1, w19 + mov w0, w21 + bl flash_read_page + strb w26, [x25, 1252] + cmn w0, #1 + beq .L2154 + b .L2143 +.L2152: + mov w4, w24 + mov x3, x23 + mov x2, x22 + mov w1, w19 + mov w0, w21 + blr x5 + cmn w0, #1 + bne .L2143 + b .L2153 .size flash_read_page_en, .-flash_read_page_en .align 2 .global flash_get_last_written_page @@ -13207,97 +13146,95 @@ flash_read_page_en: flash_get_last_written_page: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x23, x24, [sp,48] - uxtb w23, w0 - adrp x0, .LANCHOR5+180 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR2 - mov x24, x2 - ldrh w19, [x0,#:lo12:.LANCHOR5+180] - add x0, x20, :lo12:.LANCHOR2 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - uxth w22, w1 + stp x23, x24, [sp, 48] + and w23, w0, 255 + adrp x0, .LANCHOR5+172 + stp x19, x20, [sp, 16] + stp x27, x28, [sp, 80] + adrp x27, .LANCHOR2 + ldrh w19, [x0, #:lo12:.LANCHOR5+172] + add x0, x27, :lo12:.LANCHOR2 + stp x21, x22, [sp, 32] + and w21, w1, 65535 + stp x25, x26, [sp, 64] sub w19, w19, #1 - ldrh w26, [x0,34] - mov w0, w23 sxth w19, w19 - mov x21, x3 + mov x24, x2 + ldrh w26, [x0, 34] + mov x22, x3 mov w25, w4 - mov x27, x20 - mul w26, w22, w26 - add w1, w26, w19 + mov w0, w23 + mul w26, w26, w21 + add w1, w19, w26 bl flash_read_page_en cmp w0, 512 - bne .L2139 + bne .L2172 mov w28, 0 mov w5, 2 -.L2140: +.L2173: cmp w28, w19 - bgt .L2139 - add w0, w28, w19 - mov x2, x24 - mov x3, x21 - mov w4, w25 - sdiv w20, w0, w5 - mov w0, w23 - str x5, [x29,104] - add w1, w26, w20, sxth - bl flash_read_page_en - cmp w0, 512 - ldr x5, [x29,104] - bne .L2141 - sub w19, w20, #1 - sxth w19, w19 - b .L2140 -.L2141: - add w20, w20, 1 - sxth w28, w20 - b .L2140 -.L2139: - ldr w0, [x27,#:lo12:.LANCHOR2] - tbz x0, 12, .L2144 + ble .L2176 +.L2172: + ldr w0, [x27, #:lo12:.LANCHOR2] + tbz x0, 12, .L2177 + ldr w3, [x22] adrp x0, .LC167 - ldr w3, [x21] - add x0, x0, :lo12:.LC167 - mov w1, w22 mov w2, w19 + mov w1, w21 + add x0, x0, :lo12:.LC167 bl printk -.L2144: +.L2177: 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 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 +.L2176: + add w20, w28, w19 + str w5, [x29, 108] + mov w4, w25 + mov x3, x22 + mov x2, x24 + mov w0, w23 + sdiv w20, w20, w5 + add w1, w26, w20, sxth + bl flash_read_page_en + ldr w5, [x29, 108] + cmp w0, 512 + bne .L2174 + sub w19, w20, #1 + sxth w19, w19 + b .L2173 +.L2174: + add w20, w20, 1 + sxth w28, w20 + b .L2173 .size flash_get_last_written_page, .-flash_get_last_written_page .align 2 .global flash_get_last_written_page_ext .type flash_get_last_written_page_ext, %function flash_get_last_written_page_ext: - uxth w6, w0 - adrp x0, .LANCHOR0+1257 stp x29, x30, [sp, -16]! + adrp x4, .LANCHOR0+1205 mov w5, 24 - mov x8, x1 + mov w6, 1 add x29, sp, 0 - ldrb w0, [x0,#:lo12:.LANCHOR0+1257] - mov x7, x2 + ldrb w4, [x4, #:lo12:.LANCHOR0+1205] + and w0, w0, 65535 + sub w5, w5, w4 + adrp x4, .LANCHOR3+1304 + ldrh w4, [x4, #:lo12:.LANCHOR3+1304] + sub w5, w5, w4 mov w4, w3 - mov x2, x8 - sub w5, w5, w0 - adrp x0, .LANCHOR3+1312 - mov x3, x7 - ldrh w0, [x0,#:lo12:.LANCHOR3+1312] - sub w0, w5, w0 - mov w5, 1 - lsl w5, w5, w0 - asr w0, w6, w0 - sub w1, w5, #1 - and w1, w6, w1 + mov x3, x2 + mov x2, x1 + lsl w6, w6, w5 + sub w6, w6, #1 + and w1, w6, w0 + asr w0, w0, w5 bl flash_get_last_written_page ldp x29, x30, [sp], 16 ret @@ -13308,147 +13245,144 @@ flash_get_last_written_page_ext: flash_ddr_para_scan: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - adrp x20, .LANCHOR5 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] add x21, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + and w23, w0, 255 + mov w24, w1 mov w22, 1 - stp x23, x24, [sp,48] - uxtb w24, w0 - mov w23, w1 - ldrb w0, [x21,1304] + ldrb w0, [x21, 1248] + adrp x20, .LANCHOR5 + strb w22, [x21, 1192] add x20, x20, :lo12:.LANCHOR5 - strb w22, [x21,1192] bl flash_set_interface_mode - ldrb w0, [x21,1304] + ldrb w0, [x21, 1248] bl nandc_set_if_mode - ldr x2, [x20,336] - mov w1, w23 - ldr x3, [x20,344] + ldp x3, x2, [x20, 344] mov w4, 4 - mov w0, w24 + mov w1, w24 + mov w0, w23 bl flash_ddr_tuning_read - ldr x2, [x20,336] - mov w0, w24 - ldr x3, [x20,344] - mov w1, w23 + ldp x3, x2, [x20, 344] mov w4, 4 + mov w1, w24 + mov w0, w23 bl flash_read_page cmn w0, #1 - bne .L2150 - ldrb w0, [x21,1304] - tbz x0, 0, .L2150 + bne .L2185 + ldrb w0, [x21, 1248] + tbz x0, 0, .L2185 mov w0, 1 bl flash_set_interface_mode mov w0, w22 bl nandc_set_if_mode - strb wzr, [x21,1192] - b .L2151 -.L2150: - add x19, x19, :lo12:.LANCHOR0 - mov w0, 1 - strb w0, [x19,1192] -.L2151: + strb wzr, [x21, 1192] +.L2186: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L2185: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 1 + strb w0, [x19, 1192] + b .L2186 .size flash_ddr_para_scan, .-flash_ddr_para_scan .align 2 .global flash_prog_page .type flash_prog_page, %function flash_prog_page: - stp x29, x30, [sp, -80]! - mov w5, 1 + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x25, x26, [sp,64] - adrp x26, .LANCHOR0 - mov x25, x2 - stp x21, x22, [sp,32] - uxtb x22, w0 - add x0, x26, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - mov w23, w1 - mov w1, 24 - ldrb w19, [x0,1257] - mov x21, x22 - mov x24, x3 - ldr x20, [x0,1048] - sub w19, w1, w19 - add x22, x22, 8 - lsl w19, w5, w19 + stp x21, x22, [sp, 32] + and w21, w0, 255 + str x27, [sp, 80] + adrp x27, .LANCHOR0 + add x0, x27, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + mov w22, w1 + stp x25, x26, [sp, 64] + mov w20, 24 + mov x24, x2 + mov x25, x3 + ldrb w1, [x0, 1205] + and x19, x21, 255 + ldr x26, [x0, 1056] + add x23, x19, 8 + sub w1, w20, w1 + mov w20, 1 + lsl w20, w20, w1 + sub w20, w20, #1 bl nandc_wait_flash_ready + and w20, w20, w22 mov w0, w21 - sub w19, w19, #1 - add x22, x20, x22, lsl 8 - and w19, w19, w23 bl hynix_reconfig_rr_para mov w0, w21 bl nandc_cs - ubfx x0, x23, 24, 2 - cbnz w0, .L2156 + add x23, x26, x23, lsl 8 mov w0, w21 + tst x22, 50331648 + bne .L2192 bl zftl_flash_enter_slc_mode - b .L2157 -.L2156: - mov w0, w21 - bl zftl_flash_exit_slc_mode -.L2157: - ubfiz x0, x21, 8, 8 - add x20, x20, x0 +.L2193: + add x19, x26, x19, lsl 8 mov w0, 128 - str w0, [x20,2056] - and w0, w19, 255 - str wzr, [x20,2052] - str wzr, [x20,2052] - str w0, [x20,2052] - lsr w0, w19, 8 - str w0, [x20,2052] - lsr w0, w19, 16 - str w0, [x20,2052] - add x0, x26, :lo12:.LANCHOR0 - ldrb w0, [x0,1256] - cbz w0, .L2158 - lsr w0, w19, 24 - str w0, [x20,2052] -.L2158: - mov w0, w19 + 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] + add x0, x27, :lo12:.LANCHOR0 + ldrb w0, [x0, 1204] + cbz w0, .L2194 + lsr w0, w20, 24 + str w0, [x19, 2052] +.L2194: + mov w0, w20 bl nandc_set_seed - adrp x2, .LANCHOR2+17 + adrp x0, .LANCHOR2+17 + mov x4, x25 + mov x3, x24 mov w1, 1 - mov x3, x25 - mov x4, x24 + ldrb w2, [x0, #:lo12:.LANCHOR2+17] mov w0, w21 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] bl nandc_xfer mov w0, 16 - str w0, [x20,2056] + str w0, [x19, 2056] bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - mov x0, x22 + mov x0, x23 bl flash_read_status - mov w19, w0 - mov w0, w21 - bl nandc_de_cs - and w2, w19, 4 - tbz x19, 2, .L2159 + mov w3, w0 + bl nandc_de_cs.constprop.35 + and w2, w3, 4 + tbz x3, 2, .L2191 + mov w1, w22 adrp x0, .LC168 - mov w1, w23 add x0, x0, :lo12:.LC168 bl printk mov w2, -1 -.L2159: +.L2191: mov w0, w2 - 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 + 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 +.L2192: + bl zftl_flash_exit_slc_mode + b .L2193 .size flash_prog_page, .-flash_prog_page .align 2 .global flash_test_blk @@ -13457,132 +13391,123 @@ flash_test_blk: stp x29, x30, [sp, -48]! mov w2, 32 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR5 - uxth w20, w1 add x19, x19, :lo12:.LANCHOR5 + stp x21, x22, [sp, 32] + and w22, w0, 255 + and w20, w1, 65535 mov w1, 165 - stp x21, x22, [sp,32] - uxtb w22, w0 - ldr x0, [x19,296] + ldr x0, [x19, 304] bl ftl_memset - ldr x0, [x19,312] - mov w1, 90 + ldr x0, [x19, 320] mov w2, 8 + mov w1, 90 bl ftl_memset adrp x0, .LANCHOR0+2 - ldrh w0, [x0,#:lo12:.LANCHOR0+2] - mul w20, w20, w0 + ldrh w0, [x0, #:lo12:.LANCHOR0+2] + mul w20, w0, w20 mov w0, w22 mov w1, w20 bl flash_erase_block cmn w0, #1 - bne .L2167 -.L2169: + bne .L2204 +.L2206: mov w19, -1 - b .L2168 -.L2167: - adrp x21, .LANCHOR2 - ldr x2, [x19,296] - add x21, x21, :lo12:.LANCHOR2 - ldr x3, [x19,312] - mov w0, w22 - mov w1, w20 - add x21, x21, 8 - ldrb w4, [x21,9] - bl flash_prog_page - cmn w0, #1 - beq .L2169 - ldr x2, [x19,296] - mov w0, w22 - ldr x3, [x19,312] - mov w1, w20 - ldrb w4, [x21,9] - bl flash_read_page_en - cmn w0, #1 - beq .L2169 - ldr x0, [x19,296] - ldr w1, [x0] - mov w0, 42405 - bfi w0, w0, 16, 16 - cmp w1, w0 - bne .L2169 - ldr x0, [x19,312] - ldr w1, [x0] - mov w0, 23130 - bfi w0, w0, 16, 16 - cmp w1, w0 - csetm w19, ne -.L2168: +.L2205: mov w1, w20 mov w0, w22 bl flash_erase_block mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L2204: + adrp x21, .LANCHOR2 + add x21, x21, :lo12:.LANCHOR2 + ldr x2, [x19, 304] + mov w1, w20 + ldr x3, [x19, 320] + mov w0, w22 + ldrb w4, [x21, 17] + add x21, x21, 8 + bl flash_prog_page + cmn w0, #1 + beq .L2206 + ldrb w4, [x21, 9] + mov w1, w20 + ldr x2, [x19, 304] + mov w0, w22 + ldr x3, [x19, 320] + bl flash_read_page_en + cmn w0, #1 + beq .L2206 + ldr x0, [x19, 304] + ldr w1, [x0] + mov w0, 42405 + movk w0, 0xa5a5, lsl 16 + cmp w1, w0 + bne .L2206 + ldr x0, [x19, 320] + ldr w1, [x0] + mov w0, 23130 + movk w0, 0x5a5a, lsl 16 + cmp w1, w0 + csetm w19, ne + b .L2205 .size flash_test_blk, .-flash_test_blk .align 2 .global flash_start_one_pass_page_prog .type flash_start_one_pass_page_prog, %function flash_start_one_pass_page_prog: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -32]! + and w9, w0, 255 + and w8, w3, 255 + adrp x7, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x25, x26, [sp,64] - uxtb w26, w0 - add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxtb w25, w3 - uxtb w22, w2 - ldr x19, [x0,1048] - mov w0, w25 - mov w21, w4 - mov x24, x5 - mov x23, x6 + add x0, x7, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + and w20, w2, 255 + ldr x19, [x0, 1056] + mov w0, w8 bl nandc_cs - cbz w26, .L2177 - sxtw x1, w25 - add x1, x1, 8 - add x1, x19, x1, lsl 8 - str w26, [x1,8] -.L2177: - ubfiz x1, x25, 8, 8 + cbz w9, .L2215 + sxtw x0, w8 + add x0, x0, 8 + add x0, x19, x0, lsl 8 + str w9, [x0, 8] +.L2215: + ubfiz x0, x8, 8, 8 + add x7, x7, :lo12:.LANCHOR0 + add x19, x19, x0 mov w0, 128 - add x19, x19, x1 - add x20, x20, :lo12:.LANCHOR0 - 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] - ldrb w0, [x20,1256] - cbz w0, .L2178 - lsr w0, w21, 24 - str w0, [x19,2052] -.L2178: - mov w0, w21 + str w0, [x19, 2056] + and w0, w4, 255 + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w0, [x19, 2052] + lsr w0, w4, 8 + str w0, [x19, 2052] + lsr w0, w4, 16 + str w0, [x19, 2052] + ldrb w0, [x7, 1204] + cbz w0, .L2216 + lsr w0, w4, 24 + str w0, [x19, 2052] +.L2216: + mov w0, w4 bl nandc_set_seed - adrp x2, .LANCHOR2+17 - mov x3, x24 - mov x4, x23 - mov w0, w25 + adrp x0, .LANCHOR2+17 + mov x4, x6 + mov x3, x5 mov w1, 1 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] + ldrb w2, [x0, #:lo12:.LANCHOR2+17] + mov w0, w8 bl nandc_xfer - str w22, [x19,2056] - 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 + str w20, [x19, 2056] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret .size flash_start_one_pass_page_prog, .-flash_start_one_pass_page_prog .align 2 @@ -13591,328 +13516,325 @@ flash_start_one_pass_page_prog: flash_dual_page_prog: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb x21, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - mov w22, w1 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x19, x20, [sp,16] + stp x21, x22, [sp, 32] + ubfiz x22, x20, 8, 8 + stp x23, x24, [sp, 48] + mov w19, 24 + stp x25, x26, [sp, 64] + mov x25, x2 + stp x27, x28, [sp, 80] + add x2, x22, 2048 adrp x27, .LANCHOR2 - mov x26, x2 - ldrb w19, [x0,1257] - mov x20, x21 - ldr x2, [x0,1048] - mov w0, 24 - sub w19, w0, w19 - mov w0, 1 - lsl w19, w0, w19 - ldr w0, [x27,#:lo12:.LANCHOR2] - add x21, x21, 8 + mov w21, w1 + ldr x22, [x0, 1056] + mov x26, x3 + ldrb w0, [x0, 1205] + mov x23, x4 + mov x24, x5 + ubfx x28, x21, 24, 2 + sub w0, w19, w0 + mov w19, 1 + add x22, x22, x2 + lsl w19, w19, w0 + ldr w0, [x27, #:lo12:.LANCHOR2] sub w19, w19, #1 - mov x25, x3 - mov x24, x4 - mov x23, x5 - mov w3, w6 - add x21, x2, x21, lsl 8 - and w19, w1, w19 - ubfx x28, x22, 24, 2 - tbz x0, 4, .L2186 + and w19, w19, w1 + tbz x0, 4, .L2225 adrp x0, .LC169 + mov w3, w6 mov w2, w28 add x0, x0, :lo12:.LC169 bl printk -.L2186: +.L2225: bl nandc_wait_flash_ready mov w0, w20 bl nandc_cs mov w0, w20 - cbnz w28, .L2187 + cbnz w28, .L2226 bl zftl_flash_enter_slc_mode - b .L2188 -.L2187: - bl zftl_flash_exit_slc_mode -.L2188: - mov w0, 0 +.L2227: + mov x6, x26 + mov x5, x25 mov w4, w19 - mov w1, w0 - mov w2, 16 mov w3, w20 - mov x5, x26 - mov x6, x25 - bl flash_start_one_pass_page_prog - bl nandc_wait_flash_ready + mov w2, 16 + mov w1, 0 mov w0, 0 - mov w2, 16 - add w4, w19, 1 - mov w1, w0 - mov w3, w20 - mov x5, x24 - mov x6, x23 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - mov x0, x21 + mov x6, x24 + mov x5, x23 + add w4, w19, 1 + mov w3, w20 + mov w2, 16 + mov w1, 0 + mov w0, 0 + bl flash_start_one_pass_page_prog + bl nandc_wait_flash_ready + mov x0, x22 bl flash_read_status - mov w19, w0 - mov w0, w20 - bl nandc_de_cs - and w2, w19, 4 - tbz x19, 2, .L2189 - ldr w0, [x27,#:lo12:.LANCHOR2] - tbz x0, 12, .L2190 + mov w3, w0 + bl nandc_de_cs.constprop.35 + and w2, w3, 4 + tbz x3, 2, .L2224 + ldr w0, [x27, #:lo12:.LANCHOR2] + tbz x0, 12, .L2229 adrp x0, .LC168 - mov w1, w22 + mov w1, w21 add x0, x0, :lo12:.LC168 bl printk -.L2190: +.L2229: mov w2, -1 -.L2189: +.L2224: 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 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 +.L2226: + bl zftl_flash_exit_slc_mode + b .L2227 .size flash_dual_page_prog, .-flash_dual_page_prog .align 2 .global ymtc_flash_tlc_page_prog .type ymtc_flash_tlc_page_prog, %function ymtc_flash_tlc_page_prog: stp x29, x30, [sp, -80]! - mov w4, 24 add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb x21, w0 - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - str x25, [sp,64] - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] + str x25, [sp, 64] mov w25, w1 - mov x20, x21 - ldr x1, [x0,1048] - add x21, x21, 8 - ldrb w19, [x0,1257] - mov x23, x2 - mov x22, x3 - add x21, x1, x21, lsl 8 - sub w19, w4, w19 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x21, x22, [sp, 32] + mov w19, 24 + stp x23, x24, [sp, 48] + ubfiz x24, x20, 8, 8 + add x0, x24, 2048 + mov x22, x2 + ldr x24, [x1, 1056] + mov x23, x3 + mov w21, 1 + add x24, x24, x0 + ldrb w0, [x1, 1205] + sub w19, w19, w0 bl nandc_wait_flash_ready + lsl w19, w21, w19 mov w0, w20 - mov w24, 1 - lsl w19, w24, w19 - bl nandc_cs sub w19, w19, #1 - mov w0, w20 + bl nandc_cs and w19, w19, w25 + mov w0, w20 bl zftl_flash_exit_slc_mode + mov x6, x23 + mov x5, x22 mov w4, w19 - mov w1, w24 - mov w2, 26 mov w3, w20 - mov x5, x23 - mov x6, x22 + mov w1, w21 + mov w2, 26 mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - add w4, w19, w24 - mov w1, w24 - mov w2, 26 + mov x6, x23 + mov x5, x22 + add w4, w19, w21 mov w3, w20 - mov x5, x23 - mov x6, x22 + mov w1, w21 + mov w2, 26 mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - mov w2, 16 + mov x6, x23 + mov x5, x22 add w4, w19, 2 - mov w1, w24 mov w3, w20 - mov x5, x23 - mov x6, x22 + mov w1, w21 + mov w2, 16 mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - mov x0, x21 + mov x0, x24 bl flash_read_status - mov w19, w0 - mov w0, w20 - bl nandc_de_cs - and w2, w19, 4 - tbz x19, 2, .L2198 + mov w3, w0 + bl nandc_de_cs.constprop.35 + and w2, w3, 4 + tbz x3, 2, .L2237 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2199 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2239 adrp x0, .LC170 mov w1, w25 add x0, x0, :lo12:.LC170 bl printk -.L2199: +.L2239: mov w2, -1 -.L2198: +.L2237: mov w0, w2 - ldr x25, [sp,64] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldr x25, [sp, 64] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret .size ymtc_flash_tlc_page_prog, .-ymtc_flash_tlc_page_prog .section .text.unlikely .align 2 - .type fw_flash_page_prog.constprop.30, %function -fw_flash_page_prog.constprop.30: - stp x29, x30, [sp, -80]! + .type fw_flash_page_prog.constprop.29, %function +fw_flash_page_prog.constprop.29: + stp x29, x30, [sp, -64]! + adrp x4, .LANCHOR0 + add x4, x4, :lo12:.LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - str x23, [sp,48] - add x19, x19, :lo12:.LANCHOR0 - str x2, [x29,72] - stp x21, x22, [sp,32] - mov x22, x1 - ldr x1, [x19,1144] - ldrb w21, [x19,1244] - ldrb w20, [x1,9] - udiv w20, w0, w20 - ldrb w0, [x19,1152] + stp x21, x22, [sp, 32] + mov x21, x1 + str x23, [sp, 48] + mov x23, x2 + stp x19, x20, [sp, 16] + ldr x1, [x4, 1144] + ldrb w22, [x4, 1249] + ldrb w19, [x1, 9] + udiv w19, w0, w19 + ldrb w0, [x4, 1152] bl nandc_bch_sel - adrp x4, .LANCHOR2 - ldr x3, [x29,72] - add x4, x4, :lo12:.LANCHOR2 - add x4, x4, 8 - ldrb w0, [x4,7] - cmp w0, 9 - bne .L2204 - ldrb w23, [x19,1154] - cbnz w23, .L2204 - ldrb w0, [x4,12] + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldrb w1, [x0, 15] + cmp w1, 9 + bne .L2245 + ldrb w1, [x4, 1154] + cbnz w1, .L2245 + add x0, x0, 8 + ldrb w0, [x0, 12] cmp w0, 3 - bne .L2205 - mov w0, w23 - mov w1, w20 - mov x2, x22 - bl ymtc_flash_tlc_page_prog - b .L2207 -.L2205: - adrp x19, .LANCHOR5 - mov w1, 255 - add x19, x19, :lo12:.LANCHOR5 - mov w2, 16384 - str x3, [x29,72] - ldr x0, [x19,296] - bl ftl_memset - ldr x4, [x19,296] - mov w0, w23 - ldr x3, [x29,72] - mov w1, w20 - mov x2, x22 - mov x5, x4 - mov w6, 4 - bl flash_dual_page_prog - b .L2207 -.L2204: + bne .L2246 + mov x3, x23 + mov x2, x21 + mov w1, w19 mov w0, 0 - mov w1, w20 - mov x2, x22 - mov w4, 4 - bl flash_prog_page -.L2207: - mov w19, w0 - mov w0, w21 + bl ymtc_flash_tlc_page_prog +.L2249: + mov w4, w0 + mov w0, w22 bl nandc_bch_sel - ldr x23, [sp,48] - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 80 + mov w0, w4 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] + ldp x29, x30, [sp], 64 ret - .size fw_flash_page_prog.constprop.30, .-fw_flash_page_prog.constprop.30 +.L2246: + adrp x20, .LANCHOR5 + add x20, x20, :lo12:.LANCHOR5 + mov w2, 16384 + mov w1, 255 + ldr x0, [x20, 304] + bl ftl_memset + ldr x5, [x20, 304] + mov w6, 4 + mov x3, x23 + mov x2, x21 + mov w1, w19 + mov x4, x5 + mov w0, 0 + bl flash_dual_page_prog + b .L2249 +.L2245: + mov w4, 4 + mov x3, x23 + mov x2, x21 + mov w1, w19 + mov w0, 0 + bl flash_prog_page + b .L2249 + .size fw_flash_page_prog.constprop.29, .-fw_flash_page_prog.constprop.29 .text .align 2 .global flash_start_tlc_page_prog .type flash_start_tlc_page_prog, %function flash_start_tlc_page_prog: stp x29, x30, [sp, -80]! - adrp x7, .LANCHOR0 add x29, sp, 0 - stp x25, x26, [sp,64] - uxtb w26, w0 - add x0, x7, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - uxtb w25, w3 - uxtb w21, w1 - ldrb w0, [x0,1153] - uxtb w22, w2 + stp x21, x22, [sp, 32] + and w21, w1, 255 + stp x25, x26, [sp, 64] + and w25, w0, 255 + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + and w26, w3, 255 + stp x23, x24, [sp, 48] + and w22, w2, 255 mov w20, w4 - mov x24, x5 - cmp w0, w25 - mov x23, x6 - mov x19, x7 - bhi .L2209 + mov x23, x5 + ldrb w1, [x1, 1153] + mov x24, x6 + mov x19, x0 + cmp w1, w26 + bhi .L2251 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 312 mov w2, 868 - add x1, x1, 296 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2209: - add x7, x19, :lo12:.LANCHOR0 - ldrb w0, [x7,1153] - cmp w0, w25 - bls .L2208 - add x25, x7, w25, sxtw - ldrb w25, [x25,1248] - ldr x19, [x7,1048] - mov w0, w25 +.L2251: + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x0, 1153] + cmp w1, w26 + bls .L2250 + add x26, x0, w26, sxtw + ldr x19, [x0, 1056] + ldrb w5, [x26, 1196] + mov w0, w5 bl nandc_cs - cbz w26, .L2211 - sxtw x0, w25 + cbz w25, .L2253 + sxtw x0, w5 add x0, x0, 8 add x0, x19, x0, lsl 8 - str w26, [x0,8] -.L2211: - ubfiz x7, x25, 8, 8 + str w25, [x0, 8] +.L2253: + ubfiz x0, x5, 8, 8 + add x19, x19, x0 mov w0, 128 - add x19, x19, x7 - str w21, [x19,2056] - str w0, [x19,2056] + str w21, [x19, 2056] + str w0, [x19, 2056] and w0, w20, 255 - str wzr, [x19,2052] - str wzr, [x19,2052] - str w0, [x19,2052] + str wzr, [x19, 2052] + str wzr, [x19, 2052] + str w0, [x19, 2052] lsr w0, w20, 8 - str w0, [x19,2052] + str w0, [x19, 2052] lsr w0, w20, 16 add w20, w20, w20, lsl 1 - str w0, [x19,2052] + str w0, [x19, 2052] sub w0, w20, #1 add w0, w0, w21 bl nandc_set_seed - adrp x2, .LANCHOR2+17 - mov w0, w25 + adrp x0, .LANCHOR2+17 + mov x4, x24 + mov x3, x23 mov w1, 1 - mov x3, x24 - mov x4, x23 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] + ldrb w2, [x0, #:lo12:.LANCHOR2+17] + mov w0, w5 bl nandc_xfer - str w22, [x19,2056] - mov w0, w25 - bl nandc_de_cs -.L2208: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + str w22, [x19, 2056] + bl nandc_de_cs.constprop.35 +.L2250: + 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 flash_start_tlc_page_prog, .-flash_start_tlc_page_prog @@ -13920,281 +13842,276 @@ flash_start_tlc_page_prog: .type queue_tlc_prog_cmd, %function queue_tlc_prog_cmd: stp x29, x30, [sp, -64]! + mov w3, 24 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - mov x20, x0 - ldr x6, [x0] - add x0, x23, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + mov x21, x0 + stp x23, x24, [sp, 48] + adrp x22, .LANCHOR0 mov w24, w1 - mov w1, 24 - mov w21, 1 - ldrb w3, [x0,1257] - ldr w2, [x6,40] - sub w1, w1, w3 - lsl w3, w21, w3 - lsl w22, w21, w1 - sub w19, w3, #1 - sub w22, w22, #1 - ldrb w0, [x0,1269] - and w22, w22, w2 - lsr w2, w2, w1 + mov w23, 1 + ldr x7, [x0] + add x0, x22, :lo12:.LANCHOR0 + ldrb w1, [x0, 1205] + ldr w2, [x7, 40] + sub w3, w3, w1 + ldrb w0, [x0, 1213] + lsl w19, w23, w1 + sub w19, w19, #1 + lsl w20, w23, w3 + sub w20, w20, #1 + and w20, w20, w2 + lsr w2, w2, w3 and w19, w19, w2 - uxtb w19, w19 - cbz w0, .L2216 + and w19, w19, 255 + cbz w0, .L2259 mov w0, w19 bl zftl_flash_exit_slc_mode - ldr x6, [x20] - mov w1, w21 + ldr x0, [x21] + mov w4, w20 mov w3, w19 - mov w4, w22 + mov w1, w23 mov w2, 26 + ldr x5, [x0, 8] + ldr x6, [x0, 24] mov w0, 0 - ldr x5, [x6,8] - ldr x6, [x6,24] bl flash_start_one_pass_page_prog bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - ldr x6, [x20,8] - mov w1, w21 + ldr x0, [x21, 8] + add w4, w20, w23 mov w3, w19 - add w4, w22, w21 + mov w1, w23 mov w2, 26 + ldr x5, [x0, 8] + ldr x6, [x0, 24] mov w0, 0 - ldr x5, [x6,8] - ldr x6, [x6,24] bl flash_start_one_pass_page_prog bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - ldr x6, [x20,16] - mov w0, 0 - mov w1, w21 + ldr x0, [x21, 16] + add w4, w20, 2 + mov w3, w19 mov w2, 16 - mov w3, w19 - add w4, w22, 2 - ldr x5, [x6,8] - ldr x6, [x6,24] + mov w1, w23 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog - b .L2217 -.L2216: - ldr x5, [x6,8] - mov w1, w21 - ldrb w0, [x6,60] - mov w2, 26 - ldr x6, [x6,24] - mov w3, w19 - mov w4, w22 - bl flash_start_tlc_page_prog - bl nandc_iqr_wait_flash_ready - bl nandc_wait_flash_ready - ldr x6, [x20,8] - mov w1, 2 - ldr x0, [x20] - mov w2, 26 - mov w3, w19 - mov w4, w22 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog - bl nandc_iqr_wait_flash_ready - bl nandc_wait_flash_ready - ldr x6, [x20,16] - mov w1, 3 - ldr x0, [x20] - mov w2, 16 - mov w3, w19 - mov w4, w22 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog -.L2217: - cbz w24, .L2215 - ldr x1, [x20] +.L2260: + cbz w24, .L2258 + ldr x1, [x21] mov w0, 4 - strb w0, [x1,58] + strb w0, [x1, 58] mov w0, 1 - strb w0, [x1,59] + strb w0, [x1, 59] mov w0, -1 strb w0, [x1] - add x0, x23, :lo12:.LANCHOR0 - add x0, x0, 3363 + add x0, x22, :lo12:.LANCHOR0 + add x0, x0, 3354 bl buf_add_tail -.L2215: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L2258: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret +.L2259: + ldr x5, [x7, 8] + mov w4, w20 + ldr x6, [x7, 24] + mov w3, w19 + ldrb w0, [x7, 60] + mov w1, w23 + mov w2, 26 + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldp x7, x0, [x21] + mov w4, w20 + mov w3, w19 + mov w2, 26 + mov w1, 2 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x0, [x21, 16] + mov w4, w20 + ldr x7, [x21] + mov w3, w19 + mov w2, 16 + mov w1, 3 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + b .L2260 .size queue_tlc_prog_cmd, .-queue_tlc_prog_cmd .align 2 .global sblk_3d_tlc_dump_prog .type sblk_3d_tlc_dump_prog, %function sblk_3d_tlc_dump_prog: - stp x29, x30, [sp, -64]! - adrp x2, .LANCHOR0 + stp x29, x30, [sp, -48]! + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 mov w3, 24 - add x2, x2, :lo12:.LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - str x23, [sp,48] + stp x19, x20, [sp, 16] + mov x20, x0 + stp x21, x22, [sp, 32] mov w22, 1 - mov x19, x0 - ldrb w1, [x2,1257] - ldr w0, [x0,40] - sub w3, w3, w1 - lsl w1, w22, w1 + ldr w2, [x0, 40] + ldrb w0, [x1, 1205] + sub w3, w3, w0 + lsl w19, w22, w0 + ldrb w0, [x1, 1213] lsl w21, w22, w3 - sub w20, w1, #1 + sub w19, w19, #1 sub w21, w21, #1 - ldrb w23, [x2,1269] - and w21, w21, w0 - lsr w0, w0, w3 - and w20, w20, w0 - uxtb w20, w20 - cbz w23, .L2223 - mov w0, w20 + and w21, w21, w2 + lsr w2, w2, w3 + and w19, w19, w2 + and w19, w19, 255 + cbz w0, .L2267 + mov w0, w19 bl zftl_flash_exit_slc_mode - ldr x5, [x19,8] - mov w1, w22 - ldr x6, [x19,24] - mov w3, w20 + ldr x5, [x20, 8] mov w4, w21 + ldr x6, [x20, 24] + mov w3, w19 + mov w1, w22 mov w2, 26 mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - ldr x5, [x19,8] - mov w1, w22 - ldr x6, [x19,24] - mov w3, w20 + ldr x5, [x20, 8] add w4, w21, w22 + ldr x6, [x20, 24] + mov w3, w19 + mov w1, w22 mov w2, 26 mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - ldr x5, [x19,8] - mov w0, 0 - ldr x6, [x19,24] - mov w1, w22 - mov w2, 16 - mov w3, w20 + ldr x5, [x20, 8] add w4, w21, 2 - bl flash_start_one_pass_page_prog - b .L2224 -.L2223: - ldr x5, [x19,8] - mov w1, w22 - ldr x6, [x19,24] - mov w2, 26 - mov w3, w20 - mov w4, w21 - mov w0, w23 - bl flash_start_tlc_page_prog - bl nandc_iqr_wait_flash_ready - bl nandc_wait_flash_ready - ldr x5, [x19,8] - mov w1, 2 - ldr x6, [x19,24] - mov w2, 26 - mov w3, w20 - mov w4, w21 - mov w0, w23 - bl flash_start_tlc_page_prog - bl nandc_iqr_wait_flash_ready - bl nandc_wait_flash_ready - ldr x5, [x19,8] - mov w0, w23 - ldr x6, [x19,24] - mov w1, 3 + ldr x6, [x20, 24] + mov w3, w19 mov w2, 16 - mov w3, w20 - mov w4, w21 - bl flash_start_tlc_page_prog -.L2224: + mov w1, w22 + mov w0, 0 + bl flash_start_one_pass_page_prog +.L2268: bl nandc_iqr_wait_flash_ready bl nandc_wait_flash_ready - ldr w0, [x19,40] + ldr w0, [x20, 40] mov w1, 64 bl flash_wait_device_ready - ldr x23, [sp,48] - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret +.L2267: + ldr x5, [x20, 8] + mov w4, w21 + ldr x6, [x20, 24] + mov w3, w19 + mov w1, w22 + 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, [x20, 8] + mov w4, w21 + ldr x6, [x20, 24] + mov w3, w19 + mov w2, 26 + mov w1, 2 + mov w0, 0 + bl flash_start_tlc_page_prog + bl nandc_iqr_wait_flash_ready + bl nandc_wait_flash_ready + ldr x5, [x20, 8] + mov w4, w21 + ldr x6, [x20, 24] + mov w3, w19 + mov w2, 16 + mov w1, 3 + mov w0, 0 + bl flash_start_tlc_page_prog + b .L2268 .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] - uxtb w20, w1 - mov w21, w2 - ldrb w0, [x0,1153] - mov x19, x5 - cmp w0, w20 - bhi .L2226 + stp x19, x20, [sp, 16] + and w20, w1, 255 + stp x21, x22, [sp, 32] + and w21, w0, 255 + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + mov x22, x3 + mov w24, w2 + mov x23, x4 + ldrb w1, [x1, 1153] + mov x19, x0 + cmp w1, w20 + bhi .L2271 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 344 mov w2, 903 - add x1, x1, 328 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 - str x4, [x29,48] - str x3, [x29,56] bl printk bl dump_stack - ldr x4, [x29,48] - ldr x3, [x29,56] -.L2226: - add x5, x19, :lo12:.LANCHOR0 - ldrb w0, [x5,1153] - cmp w0, w20 - bls .L2225 - add x20, x5, w20, sxtw - ldrb w20, [x20,1248] - ldr x19, [x5,1048] - mov w0, w20 - str x4, [x29,48] - str x3, [x29,56] +.L2271: + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x0, 1153] + cmp w1, w20 + bls .L2270 + add x20, x0, w20, sxtw + ldr x19, [x0, 1056] + ldrb w5, [x20, 1196] + mov w0, w5 bl nandc_cs - ubfiz x1, x20, 8, 8 + ubfiz x0, x5, 8, 8 + add x19, x19, x0 mov w0, 128 - add x19, x19, x1 - 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 + str w0, [x19, 2056] + and w0, w24, 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 - adrp x2, .LANCHOR2+17 - ldr x3, [x29,56] - ldr x4, [x29,48] - mov w0, w20 + adrp x0, .LANCHOR2+17 + mov x4, x23 + mov x3, x22 mov w1, 1 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] + ldrb w2, [x0, #:lo12:.LANCHOR2+17] + mov w0, w5 bl nandc_xfer - str w22, [x19,2056] -.L2225: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + str w21, [x19, 2056] +.L2270: + 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 @@ -14203,61 +14120,60 @@ flash_start_3d_mlc_page_prog: .type sblk_mlc_dump_prog, %function sblk_mlc_dump_prog: stp x29, x30, [sp, -48]! - mov w1, 24 + mov w2, 24 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] + stp x19, x20, [sp, 16] mov x20, x0 - ldr w3, [x0,40] - adrp x0, .LANCHOR0+1257 - ldrb w19, [x0,#:lo12:.LANCHOR0+1257] + str x21, [sp, 32] + ldr w1, [x0, 40] + adrp x0, .LANCHOR0+1205 + ldrb w19, [x0, #:lo12:.LANCHOR0+1205] mov w0, 1 - sub w1, w1, w19 - lsl w21, w0, w1 - lsl w0, w0, w19 + sub w2, w2, w19 + lsl w19, w0, w19 + sub w19, w19, #1 + lsl w21, w0, w2 sub w21, w21, #1 - sub w19, w0, #1 - and w21, w21, w3 - lsr w3, w3, w1 - and w19, w19, w3 - uxtb w19, w19 + and w21, w21, w1 + lsr w1, w1, w2 + and w19, w19, w1 + and w19, w19, 255 mov w0, w19 bl zftl_flash_exit_slc_mode adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2229 - ldr w2, [x20,40] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2275 + ldr w2, [x20, 40] adrp x0, .LC171 - add x0, x0, :lo12:.LC171 mov w1, w21 + add x0, x0, :lo12:.LC171 add w3, w2, 1 bl printk -.L2229: - ldr x3, [x20,8] - mov w1, w19 - ldr x4, [x20,24] +.L2275: + ldr x3, [x20, 8] 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] + 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] + 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] + mov w2, w0 + bl nandc_de_cs.constprop.35 + mov w0, w2 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size sblk_mlc_dump_prog, .-sblk_mlc_dump_prog @@ -14266,1165 +14182,1162 @@ sblk_mlc_dump_prog: .type flash_start_page_prog, %function flash_start_page_prog: stp x29, x30, [sp, -96]! - mov w5, 1 add x29, sp, 0 - stp x25, x26, [sp,64] - adrp x25, .LANCHOR0 - stp x21, x22, [sp,32] - uxtb w21, w0 - add x0, x25, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] - mov w19, 24 + stp x21, x22, [sp, 32] + and w21, w0, 255 + stp x25, x26, [sp, 64] + adrp x26, .LANCHOR0 + add x0, x26, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] mov w24, w1 - ldrb w20, [x0,1257] - mov x23, x2 - ldrb w0, [x0,1153] - mov x22, x3 - sub w19, w19, w20 - lsl w20, w5, w20 - lsr w1, w1, w19 + str x27, [sp, 80] + mov w19, 24 + mov w20, 1 + mov x22, x2 + ldrb w1, [x0, 1205] + mov x23, x3 + ldrb w0, [x0, 1153] + sub w25, w19, w1 + lsl w20, w20, w1 sub w20, w20, #1 - and w20, w1, w20 - uxtb w20, w20 + lsr w1, w24, w25 + and w20, w20, w1 + and w20, w20, 255 cmp w0, w20 - bhi .L2234 + bhi .L2281 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 376 mov w2, 956 - add x1, x1, 360 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2234: - add x28, x25, :lo12:.LANCHOR0 - ldrb w0, [x28,1153] +.L2281: + add x1, x26, :lo12:.LANCHOR0 + ldrb w0, [x1, 1153] cmp w0, w20 - bls .L2233 - mov w0, 1 - ldr x27, [x28,1048] - lsl w19, w0, w19 + bls .L2280 + add x0, x1, w20, sxtw + mov w19, 1 + lsl w19, w19, w25 sub w19, w19, #1 - add x0, x28, w20, sxtw - and w19, w24, w19 - ldrb w26, [x0,1248] + and w19, w19, w24 + ldr x25, [x1, 1056] + ldrb w27, [x0, 1196] bl nandc_rdy_status - cbnz w0, .L2236 - ldrb w0, [x28,1153] + cbnz w0, .L2283 + ldrb w0, [x1, 1153] cmp w0, 1 - bne .L2237 + bne .L2284 bl nandc_wait_flash_ready - b .L2236 -.L2237: - mov w0, w20 - mov w1, w19 - mov w2, 64 - bl flash_wait_device_ready_raw -.L2236: - mov w0, w26 - ubfx x24, x24, 24, 2 +.L2283: + mov w0, w27 bl hynix_reconfig_rr_para - mov w0, w26 + mov w0, w27 bl nandc_cs - cbnz w24, .L2238 + tst x24, 50331648 + bne .L2285 mov w0, w19 bl slc_phy_page_address_calc mov w19, w0 - ldrb w0, [x25,#:lo12:.LANCHOR0] - cbz w0, .L2239 - mov w0, w26 + ldrb w0, [x26, #:lo12:.LANCHOR0] + cbz w0, .L2286 + mov w0, w27 bl zftl_flash_enter_slc_mode - b .L2239 -.L2238: - mov w0, w26 - bl zftl_flash_exit_slc_mode -.L2239: - ubfiz x1, x26, 8, 8 +.L2286: + ubfiz x20, x27, 8, 8 mov w0, 128 - add x20, x27, x1 - add x25, x25, :lo12:.LANCHOR0 - str w0, [x20,2056] + add x20, x25, x20 + add x26, x26, :lo12:.LANCHOR0 + str w0, [x20, 2056] and w0, w19, 255 - str wzr, [x20,2052] - str wzr, [x20,2052] - str w0, [x20,2052] + str wzr, [x20, 2052] + str wzr, [x20, 2052] + str w0, [x20, 2052] lsr w0, w19, 8 - str w0, [x20,2052] + str w0, [x20, 2052] lsr w0, w19, 16 - str w0, [x20,2052] - ldrb w0, [x25,1256] - cbz w0, .L2240 + str w0, [x20, 2052] + ldrb w0, [x26, 1204] + cbz w0, .L2287 lsr w0, w19, 24 - str w0, [x20,2052] -.L2240: + str w0, [x20, 2052] +.L2287: mov w0, w19 bl nandc_set_seed - adrp x2, .LANCHOR2+17 - mov w0, w26 + adrp x0, .LANCHOR2+17 + mov x4, x23 + mov x3, x22 mov w1, 1 - mov x3, x23 - mov x4, x22 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] + ldrb w2, [x0, #:lo12:.LANCHOR2+17] + mov w0, w27 bl nandc_xfer - str w21, [x20,2056] - mov w0, w26 - bl nandc_de_cs -.L2233: - 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] + str w21, [x20, 2056] + bl nandc_de_cs.constprop.35 +.L2280: + 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 +.L2284: + mov w2, 64 + mov w1, w19 + mov w0, w20 + bl flash_wait_device_ready_raw + b .L2283 +.L2285: + mov w0, w27 + bl zftl_flash_exit_slc_mode + b .L2286 .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] + str x19, [sp, 16] mov x19, x0 + ldr w1, [x0, 40] + ldr x3, [x0, 24] + ldr x2, [x0, 8] mov w0, 16 - ldr x2, [x19,8] - ldr x3, [x19,24] - ldr w1, [x19,40] bl flash_start_page_prog adrp x0, .LANCHOR0 - ldr w4, [x19,40] add x3, x0, :lo12:.LANCHOR0 - ldrb w2, [x3,3363] - cmp w2, 255 - beq .L2248 - ldrb w5, [x3,1257] - mov w1, 1 - mov w7, 24 - add x3, x3, 1312 - lsl w1, w1, w5 - sub w7, w7, w5 - sub w1, w1, #1 - asr w4, w4, w7 - uxth w1, w1 - and w4, w1, w4 -.L2250: - add x5, x3, x2, lsl 6 - ldr w6, [x5,40] - lsr w6, w6, w7 - and w6, w1, w6 - cmp w4, w6 - bne .L2249 - ldrb w6, [x5,58] - add x5, x5, 48 - cmp w6, 7 - bne .L2249 + ldr w4, [x19, 40] + ldrb w1, [x3, 3354] + cmp w1, 255 + beq .L2296 + ldrb w5, [x3, 1205] + mov w2, 1 + mov w6, 24 + add x3, x3, 1304 + sub w6, w6, w5 + lsl w2, w2, w5 + sub w2, w2, #1 + and w2, w2, 65535 + asr w4, w4, w6 + and w4, w4, w2 +.L2298: + add x7, x3, x1, lsl 6 + ldr w5, [x7, 40] + lsr w5, w5, w6 + and w5, w2, w5 + cmp w4, w5 + bne .L2297 + ldrb w5, [x7, 58] + cmp w5, 7 + bne .L2297 mov w1, 3 - strb w1, [x5,10] - b .L2248 -.L2249: - lsl x2, x2, 6 - ldrb w2, [x3,x2] - cmp w2, 255 - bne .L2250 -.L2248: + strb w1, [x7, 58] +.L2296: mov w1, 3 - strb w1, [x19,58] + strb w1, [x19, 58] mov w1, 1 - add x0, x0, :lo12:.LANCHOR0 - strb w1, [x19,59] + strb w1, [x19, 59] mov w1, -1 - add x0, x0, 3363 strb w1, [x19] + add x0, x0, :lo12:.LANCHOR0 mov x1, x19 + add x0, x0, 3354 bl buf_add_tail - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2297: + lsl x1, x1, 6 + ldrb w1, [x3, x1] + cmp w1, 255 + bne .L2298 + b .L2296 .size queue_prog_cmd, .-queue_prog_cmd .align 2 .global flash_complete_plane_page_read .type flash_complete_plane_page_read, %function flash_complete_plane_page_read: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! + mov w4, 24 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] mov w24, w0 - add x0, x23, :lo12:.LANCHOR0 - str x25, [sp,64] - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - mov x22, x1 - mov w19, 24 - ldrb w20, [x0,1257] - mov w1, 1 + add x0, x22, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov x20, x1 + mov w19, 1 mov x21, x2 - ldrb w0, [x0,1153] - sub w19, w19, w20 - lsl w20, w1, w20 - lsr w2, w24, w19 - sub w20, w20, #1 - and w20, w2, w20 - uxtb w20, w20 - cmp w0, w20 - bhi .L2256 + ldrb w1, [x0, 1205] + ldrb w0, [x0, 1153] + sub w23, w4, w1 + lsl w19, w19, w1 + sub w19, w19, #1 + lsr w1, w24, w23 + and w19, w19, w1 + and w19, w19, 255 + cmp w0, w19 + bhi .L2305 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 400 mov w2, 1070 - add x1, x1, 384 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2256: - add x3, x23, :lo12:.LANCHOR0 - mov w0, -1 - ldrb w1, [x3,1153] - cmp w1, w20 - bls .L2257 - mov w2, 1 - add x20, x3, w20, sxtw - ldrb w20, [x20,1248] - lsl w19, w2, w19 - add w19, w19, w0 - ubfx x25, x24, 24, 2 - mov w0, w20 - and w19, w19, w24 - ldr x24, [x3,1048] +.L2305: + add x2, x22, :lo12:.LANCHOR0 + ldrb w0, [x2, 1153] + cmp w0, w19 + bls .L2316 + add x19, x2, w19, sxtw + mov w4, 1 + lsl w4, w4, w23 + ldr x7, [x2, 1056] + sub w4, w4, #1 + ldrb w9, [x19, 1196] + and w4, w4, w24 + ubfx x24, x24, 24, 2 + mov w0, w9 bl nandc_cs - cbnz w25, .L2258 - mov w0, w19 + cbnz w24, .L2307 + mov w0, w4 bl slc_phy_page_address_calc - mov w19, w0 -.L2258: - add x7, x23, :lo12:.LANCHOR0 - uxtb x5, w20 - and w6, w19, 255 - lsr w4, w19, 8 - lsr w3, w19, 16 - ldrb w0, [x7,1176] - ldrb w2, [x7,1256] + mov w4, w0 +.L2307: + add x8, x22, :lo12:.LANCHOR0 + and x1, x9, 255 + and w6, w4, 255 + lsr w5, w4, 8 + lsr w3, w4, 16 + ldrb w0, [x8, 1176] + ldrb w2, [x8, 1204] cmp w0, 1 - bne .L2259 - add x5, x24, x5, lsl 8 + bne .L2308 + add x1, x7, x1, lsl 8 mov w0, 6 - b .L2287 -.L2259: - ldr x0, [x7,1144] - add x5, x24, x5, lsl 8 - ldrb w0, [x0,12] - cmp w0, 3 - bne .L2262 - mov w0, 5 -.L2287: - str w0, [x5,2056] - str wzr, [x5,2052] - str wzr, [x5,2052] - str w6, [x5,2052] - str w4, [x5,2052] - str w3, [x5,2052] - cbz w2, .L2283 - lsr w0, w19, 24 - str w0, [x5,2052] - b .L2283 -.L2262: - str wzr, [x5,2056] - str wzr, [x5,2052] - str wzr, [x5,2052] - str w6, [x5,2052] - str w4, [x5,2052] - str w3, [x5,2052] - cbz w2, .L2264 - lsr w0, w19, 24 - str w0, [x5,2052] -.L2264: - mov w0, 5 - str w0, [x5,2056] - str wzr, [x5,2052] - str wzr, [x5,2052] -.L2283: +.L2334: + str w0, [x1, 2056] + str wzr, [x1, 2052] + str wzr, [x1, 2052] + str w6, [x1, 2052] + str w5, [x1, 2052] + str w3, [x1, 2052] + cbz w2, .L2330 + lsr w0, w4, 24 + str w0, [x1, 2052] +.L2330: + add x22, x22, :lo12:.LANCHOR0 mov w0, 224 - str w0, [x5,2056] - cbz w25, .L2265 - add x23, x23, :lo12:.LANCHOR0 - ldr x0, [x23,1144] - ldrb w0, [x0,12] + str w0, [x1, 2056] + ldr x0, [x22, 1144] + ldrb w0, [x0, 12] cmp w0, 3 - bne .L2265 - ldrb w0, [x23,1268] - cbnz w0, .L2265 - ldrb w0, [x23,1269] - cbnz w0, .L2265 - sub w1, w25, #1 - add w0, w19, w19, lsl 1 - add w0, w1, w0 - b .L2284 -.L2265: - mov w0, w19 -.L2284: + bne .L2314 + cbz w24, .L2314 + ldrb w0, [x22, 1212] + cbnz w0, .L2314 + ldrb w0, [x22, 1213] + cbnz w0, .L2314 + add w4, w4, w4, lsl 1 + sub w0, w24, #1 + add w0, w4, w0 +.L2331: bl nandc_set_seed - adrp x2, .LANCHOR2+17 - mov w1, 0 - mov x3, x22 + adrp x0, .LANCHOR2+17 mov x4, x21 - mov w0, w20 - ldrb w2, [x2,#:lo12:.LANCHOR2+17] + mov x3, x20 + mov w1, 0 + ldrb w2, [x0, #:lo12:.LANCHOR2+17] + mov w0, w9 bl nandc_xfer - mov w19, w0 - mov w0, w20 - bl nandc_de_cs - mov w0, w19 -.L2257: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 80 + mov w2, w0 + bl nandc_de_cs.constprop.35 + mov w0, w2 +.L2304: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L2308: + ldr x0, [x8, 1144] + add x1, x7, x1, lsl 8 + ldrb w0, [x0, 12] + cmp w0, 3 + bne .L2311 + mov w0, 5 + b .L2334 +.L2311: + str wzr, [x1, 2056] + str wzr, [x1, 2052] + str wzr, [x1, 2052] + str w6, [x1, 2052] + str w5, [x1, 2052] + str w3, [x1, 2052] + cbz w2, .L2313 + lsr w0, w4, 24 + str w0, [x1, 2052] +.L2313: + mov w0, 5 + str w0, [x1, 2056] + str wzr, [x1, 2052] + str wzr, [x1, 2052] + b .L2330 +.L2314: + mov w0, w4 + b .L2331 +.L2316: + mov w0, -1 + b .L2304 .size flash_complete_plane_page_read, .-flash_complete_plane_page_read .align 2 .global flash_complete_page_read .type flash_complete_page_read, %function flash_complete_page_read: stp x29, x30, [sp, -112]! - mov w5, 1 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x24, .LANCHOR0 + stp x23, x24, [sp, 48] mov x23, x2 - stp x21, x22, [sp,32] - mov x22, x1 - add x1, x24, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + adrp x24, .LANCHOR0 + add x2, x24, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] mov w21, w0 - mov w0, 24 - ldrb w2, [x1,1257] + stp x19, x20, [sp, 16] + mov w0, 1 + stp x25, x26, [sp, 64] + mov x22, x1 + stp x27, x28, [sp, 80] + mov w1, 24 ubfx x25, x21, 24, 2 - sub w0, w0, w2 - lsl w19, w5, w0 - lsl w5, w5, w2 - lsr w20, w21, w0 - sub w5, w5, #1 - and w20, w20, w5 - ldrb w0, [x1,1153] + ldrb w20, [x2, 1205] + sub w1, w1, w20 + lsl w20, w0, w20 + sub w20, w20, #1 + lsl w19, w0, w1 + ldrb w0, [x2, 1153] + lsr w1, w21, w1 + and w20, w20, w1 sub w19, w19, #1 - uxtb w20, w20 + and w20, w20, 255 and w19, w19, w21 cmp w0, w20 - bhi .L2289 + bhi .L2336 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 432 mov w2, 1232 - add x1, x1, 416 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2289: +.L2336: add x0, x24, :lo12:.LANCHOR0 add x20, x0, w20, sxtw - ldrb w26, [x20,1248] - ldr x27, [x0,1048] + ldr x4, [x0, 1056] + ldrb w26, [x20, 1196] mov w0, w26 bl nandc_cs - cbnz w25, .L2290 + cbnz w25, .L2337 mov w0, w19 bl slc_phy_page_address_calc mov w19, w0 -.L2290: +.L2337: adrp x20, .LANCHOR2 add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,20] + ldrb w0, [x0, 20] cmp w0, 3 - bne .L2291 + bne .L2338 ubfiz x0, x26, 8, 8 - add x1, x27, x0 - mov w0, 5 - str w0, [x1,2056] - and w0, w19, 255 - str wzr, [x1,2052] - str wzr, [x1,2052] - str w0, [x1,2052] - lsr w0, w19, 8 - str w0, [x1,2052] - lsr w0, w19, 16 - str w0, [x1,2052] - mov w0, 224 - str w0, [x1,2056] -.L2291: - cbz w25, .L2292 + mov w1, 5 + add x0, x4, x0 + str w1, [x0, 2056] + and w1, w19, 255 + str wzr, [x0, 2052] + str wzr, [x0, 2052] + str w1, [x0, 2052] + lsr w1, w19, 8 + str w1, [x0, 2052] + lsr w1, w19, 16 + str w1, [x0, 2052] + mov w1, 224 + str w1, [x0, 2056] +.L2338: add x0, x24, :lo12:.LANCHOR0 - ldr x1, [x0,1144] - ldrb w1, [x1,12] + ldr x1, [x0, 1144] + ldrb w1, [x1, 12] cmp w1, 3 - bne .L2292 - ldrb w1, [x0,1268] - cbnz w1, .L2292 - ldrb w0, [x0,1269] - cbnz w0, .L2292 + bne .L2339 + cbz w25, .L2339 + ldrb w1, [x0, 1212] + cbnz w1, .L2339 + ldrb w0, [x0, 1213] + cbnz w0, .L2339 sub w0, w25, #1 add w1, w19, w19, lsl 1 add w0, w0, w1 - b .L2324 -.L2292: - mov w0, w19 -.L2324: +.L2366: add x27, x20, :lo12:.LANCHOR2 bl nandc_set_seed - mov w0, w26 - mov w1, 0 - mov x3, x22 mov x4, x23 - ldrb w2, [x27,17] + mov x3, x22 + mov w1, 0 + mov w0, w26 + ldrb w2, [x27, 17] add x27, x27, 8 bl nandc_xfer cmn w0, #1 - bne .L2294 + bne .L2341 add x28, x24, :lo12:.LANCHOR0 - ldrb w5, [x28,1240] - cbz w5, .L2295 - ldrb w4, [x27,9] - mov w0, w26 - orr w1, w19, w25, lsl 24 - mov x2, x22 + ldrb w5, [x28, 1252] + cbz w5, .L2342 + ldrb w4, [x27, 9] mov x3, x23 - str x5, [x29,104] - strb wzr, [x28,1240] + str w5, [x29, 108] + mov x2, x22 + strb wzr, [x28, 1252] + orr w1, w19, w25, lsl 24 + mov w0, w26 bl flash_read_page - ldr x5, [x29,104] - strb w5, [x28,1240] - cbnz w25, .L2296 -.L2303: - ldrb w2, [x24,#:lo12:.LANCHOR0] + ldr w5, [x29, 108] + strb w5, [x28, 1252] + cbnz w25, .L2343 +.L2348: + ldrb w2, [x24, #:lo12:.LANCHOR0] add x1, x24, :lo12:.LANCHOR0 - cbz w2, .L2296 - ldrb w1, [x1,1244] + cbz w2, .L2343 + ldrb w1, [x1, 1249] add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 - blt .L2296 + blt .L2343 add x20, x20, :lo12:.LANCHOR2 - ldrb w1, [x20,27] + ldrb w1, [x20, 27] sub w1, w1, #4 - uxtb w1, w1 + and w1, w1, 255 cmp w1, 4 mov w1, 256 csel w0, w0, w1, hi - b .L2311 -.L2296: - cmn w0, #1 - bne .L2311 -.L2304: - adrp x0, .LANCHOR5+328 - ldr x5, [x0,#:lo12:.LANCHOR5+328] - cbnz x5, .L2299 -.L2302: - add x24, x24, :lo12:.LANCHOR0 - adrp x0, .LC172 - add x0, x0, :lo12:.LC172 - mov w1, 0 - mov w2, w21 - mov w3, -1 - ldrb w4, [x24,1240] - bl printk - ldrb w0, [x24,1192] - cbnz w0, .L2300 - mov w0, -1 - b .L2311 -.L2299: - add x4, x20, :lo12:.LANCHOR2 - mov w0, w26 - orr w1, w19, w25, lsl 24 - mov x2, x22 - mov x3, x23 - ldrb w4, [x4,17] - blr x5 - cmn w0, #1 - bne .L2311 - b .L2302 -.L2300: - add x20, x20, :lo12:.LANCHOR2 - mov w0, w26 - orr w1, w19, w25, lsl 24 - mov x2, x22 - mov x3, x23 - ldrb w4, [x20,17] - bl flash_ddr_tuning_read - b .L2311 -.L2294: - cbz w25, .L2303 - b .L2311 -.L2295: - cbz w25, .L2303 - b .L2304 -.L2311: - 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] +.L2335: + 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 +.L2339: + mov w0, w19 + b .L2366 +.L2343: + cmn w0, #1 + bne .L2335 +.L2349: + adrp x0, .LANCHOR5+336 + ldr x5, [x0, #:lo12:.LANCHOR5+336] + cbnz x5, .L2345 +.L2347: + add x24, x24, :lo12:.LANCHOR0 + mov w3, -1 + mov w2, w21 + mov w1, 0 + adrp x0, .LC172 + add x0, x0, :lo12:.LC172 + ldrb w4, [x24, 1252] + bl printk + ldrb w0, [x24, 1192] + cbnz w0, .L2346 + mov w0, -1 + b .L2335 +.L2345: + add x0, x20, :lo12:.LANCHOR2 + mov x3, x23 + mov x2, x22 + orr w1, w19, w25, lsl 24 + ldrb w4, [x0, 17] + mov w0, w26 + blr x5 + cmn w0, #1 + bne .L2335 + b .L2347 +.L2346: + add x20, x20, :lo12:.LANCHOR2 + mov x3, x23 + mov x2, x22 + orr w1, w19, w25, lsl 24 + mov w0, w26 + ldrb w4, [x20, 17] + bl flash_ddr_tuning_read + b .L2335 +.L2342: + cbz w25, .L2348 + b .L2349 +.L2341: + cbnz w25, .L2335 + b .L2348 .size flash_complete_page_read, .-flash_complete_page_read .align 2 .type queue_wait_first_req_completed, %function queue_wait_first_req_completed: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldrb w22, [x0,3363] - cmp w22, 255 - beq .L2413 - add x0, x0, 1312 - mov w20, 0 - add x0, x0, x22, lsl 6 - ldrb w1, [x0,58] - ldr w25, [x0,40] - sub w2, w1, #1 - cmp w2, 10 - bhi .L2327 - adrp x0, .L2329 - add x0, x0, :lo12:.L2329 - ldrh w0, [x0,w2,uxtw #1] - adr x2, .Lrtx2329 - add x0, x2, w0, sxth #2 - br x0 -.Lrtx2329: + add x1, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrb w0, [x1, 3354] + cmp w0, 255 + bne .L2368 +.L2401: + mov w21, 0 + b .L2367 +.L2368: + add x1, x1, 1304 + sxtw x20, w0 + add x1, x1, x20, lsl 6 + ldrb w2, [x1, 58] + ldr w21, [x1, 40] + sub w3, w2, #1 + cmp w3, 10 + bhi .L2401 + adrp x1, .L2371 + add x1, x1, :lo12:.L2371 + ldrh w1, [x1,w3,uxtw #1] + adr x3, .Lrtx2371 + add x1, x3, w1, sxth #2 + br x1 +.Lrtx2371: .section .rodata .align 0 .align 2 -.L2329: - .2byte (.L2328 - .Lrtx2329) / 4 - .2byte (.L2330 - .Lrtx2329) / 4 - .2byte (.L2331 - .Lrtx2329) / 4 - .2byte (.L2331 - .Lrtx2329) / 4 - .2byte (.L2331 - .Lrtx2329) / 4 - .2byte (.L2331 - .Lrtx2329) / 4 - .2byte (.L2332 - .Lrtx2329) / 4 - .2byte (.L2333 - .Lrtx2329) / 4 - .2byte (.L2334 - .Lrtx2329) / 4 - .2byte (.L2331 - .Lrtx2329) / 4 - .2byte (.L2334 - .Lrtx2329) / 4 +.L2371: + .2byte (.L2370 - .Lrtx2371) / 4 + .2byte (.L2372 - .Lrtx2371) / 4 + .2byte (.L2373 - .Lrtx2371) / 4 + .2byte (.L2373 - .Lrtx2371) / 4 + .2byte (.L2373 - .Lrtx2371) / 4 + .2byte (.L2373 - .Lrtx2371) / 4 + .2byte (.L2374 - .Lrtx2371) / 4 + .2byte (.L2375 - .Lrtx2371) / 4 + .2byte (.L2376 - .Lrtx2371) / 4 + .2byte (.L2373 - .Lrtx2371) / 4 + .2byte (.L2376 - .Lrtx2371) / 4 .text -.L2328: +.L2370: bl nandc_wait_flash_ready - add x3, x19, :lo12:.LANCHOR0 - add x0, x3, 1312 - add x0, x0, x22, lsl 6 - ldr x2, [x0,16] - ldr x1, [x0,8] - cbz x2, .L2335 - ldrb w4, [x0,56] - ldrb w0, [x3,3360] - cmp w4, w0 - csel x1, x1, x2, ne -.L2335: - add x19, x19, :lo12:.LANCHOR0 - mov w0, w25 - add x19, x19, 1312 - add x19, x19, x22, lsl 6 - ldr x2, [x19,24] - bl flash_complete_page_read - str w0, [x19,52] - mov w0, 13 - strb w0, [x19,58] - b .L2414 -.L2330: - bl nandc_wait_flash_ready - add x2, x19, :lo12:.LANCHOR0 - lsl x3, x22, 6 - add x0, x2, 1312 - add x1, x0, x3 - ldrb w20, [x0,x3] - ldr x27, [x1,8] + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 add x0, x0, x20, lsl 6 - ldr x24, [x0,8] - ldr x0, [x1,16] - cbz x0, .L2336 - ldrb w3, [x1,56] - ldrb w1, [x2,3360] - cmp w3, w1 - csel x27, x27, x0, ne -.L2336: - add x2, x19, :lo12:.LANCHOR0 - add x0, x2, 1312 - add x0, x0, x20, lsl 6 - ldr x1, [x0,16] - cbz x1, .L2337 - ldrb w3, [x0,56] - ldrb w0, [x2,3360] + ldp x1, x2, [x0, 8] + cbz x2, .L2377 + ldrb w3, [x0, 56] + adrp x0, .LANCHOR3+1946 + ldrb w0, [x0, #:lo12:.LANCHOR3+1946] cmp w3, w0 - csel x24, x24, x1, ne -.L2337: - add x21, x19, :lo12:.LANCHOR0 - mov x1, x27 - add x21, x21, 1312 - 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] + csel x1, x1, x2, ne +.L2377: + add x19, x19, :lo12:.LANCHOR0 + mov w0, w21 + add x19, x19, 1304 + add x20, x19, x20, lsl 6 + ldr x2, [x20, 24] + bl flash_complete_page_read + str w0, [x20, 52] + mov w0, 13 + strb w0, [x20, 58] + ldrb w0, [x20, 2] + orr w0, w0, 8 + strb w0, [x20, 2] + b .L2401 +.L2372: + bl nandc_wait_flash_ready + add x0, x19, :lo12:.LANCHOR0 + lsl x2, x20, 6 + add x0, x0, 1304 + add x1, x0, x2 + ldrb w21, [x0, x2] + add x0, x0, x21, lsl 6 + ldr x23, [x0, 8] + ldp x26, x0, [x1, 8] + cbz x0, .L2378 + ldrb w2, [x1, 56] + adrp x1, .LANCHOR3+1946 + ldrb w1, [x1, #:lo12:.LANCHOR3+1946] + cmp w2, w1 + csel x26, x26, x0, ne +.L2378: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x21, lsl 6 + ldr x1, [x0, 16] + cbz x1, .L2379 + ldrb w2, [x0, 56] + adrp x0, .LANCHOR3+1946 + ldrb w0, [x0, #:lo12:.LANCHOR3+1946] + cmp w2, w0 + csel x23, x23, x1, ne +.L2379: + add x24, x19, :lo12:.LANCHOR0 + mov x1, x26 + add x24, x24, 1304 + add x27, x24, x20, lsl 6 + add x24, x24, x21, lsl 6 + ldr x2, [x27, 24] + ldr w0, [x27, 40] bl flash_complete_plane_page_read - mov w23, w0 - ldr x2, [x21,24] - mov x1, x24 - ldr w0, [x21,40] + mov w22, w0 + ldr x2, [x24, 24] + mov x1, x23 + ldr w0, [x24, 40] bl flash_complete_plane_page_read mov w25, w0 - cmn w23, #1 - beq .L2338 - ldr w0, [x28,4] + cmn w22, #1 + beq .L2380 + ldr w0, [x27, 36] cmn w0, #1 - beq .L2339 - ldr x1, [x26,8] - ldr w1, [x1,4] + beq .L2381 + ldr x1, [x27, 24] + ldr w1, [x1, 4] cmp w0, w1 - beq .L2339 -.L2338: - add x4, x19, :lo12:.LANCHOR0 - mov w0, 1 - add x21, x4, 1312 - mov w3, 24 - add x21, x21, x22, lsl 6 - ldrb w2, [x4,1257] - add x26, x21, 32 - ldrb w4, [x4,3360] - add x21, x21, 16 - ldr w1, [x21,24] - lsl w0, w0, w2 - sub w3, w3, w2 - sub w0, w0, #1 - lsr w2, w1, w3 - lsl w3, w0, w3 - bic w1, w1, w3 - ldr x3, [x21,8] - and w0, w0, w2 - mov x2, x27 + beq .L2381 +.L2380: + add x0, x19, :lo12:.LANCHOR0 + mov w5, 1 + add x24, x0, 1304 + add x24, x24, x20, lsl 6 + ldrb w2, [x0, 1205] + mov w0, 24 + sub w0, w0, w2 + ldr x3, [x24, 24] + lsl w5, w5, w2 + adrp x2, .LANCHOR3+1946 + sub w5, w5, #1 + ldr w1, [x24, 40] + ldrb w4, [x2, #:lo12:.LANCHOR3+1946] + mov x2, x26 + lsl w6, w5, w0 + lsr w0, w1, w0 + bic w1, w1, w6 + and w0, w0, w5 bl flash_read_page_en - mov w23, w0 - ldr w2, [x26,4] + mov w22, w0 + ldr w2, [x24, 36] cmn w2, #1 - beq .L2340 - ldr x3, [x21,8] - ldr w4, [x3,4] + beq .L2382 + ldr x0, [x24, 24] + ldr w4, [x0, 4] cmp w2, w4 - beq .L2340 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L2340 + beq .L2382 + adrp x1, .LANCHOR2 + ldr w1, [x1, #:lo12:.LANCHOR2] + tbz x1, 6, .L2382 + ldr w3, [x0] adrp x0, .LC173 - ldr w1, [x26,8] - ldr w3, [x3] + ldr w1, [x24, 40] add x0, x0, :lo12:.LC173 bl printk -.L2340: +.L2382: add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 1312 - add x0, x0, x22, lsl 6 - ldr w1, [x0,36] - cmn w1, #1 - beq .L2339 - ldr x0, [x0,24] - ldr w0, [x0,4] - cmp w1, w0 - beq .L2339 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 431 - add x1, x1, 448 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L2339: - add x3, x19, :lo12:.LANCHOR0 - mov w1, 13 - add x3, x3, 1312 - 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 .L2341 - add x3, x3, x20, lsl 6 - ldr w0, [x3,36] - cmn w0, #1 - beq .L2343 - ldr x1, [x3,24] - ldr w1, [x1,4] - cmp w0, w1 - beq .L2343 -.L2341: - add x4, x19, :lo12:.LANCHOR0 - mov w2, 24 - add x21, x4, 1312 - mov w0, 1 - add x21, x21, x20, lsl 6 - ldrb w3, [x4,1257] - add x22, x21, 32 - ldrb w4, [x4,3360] - add x21, x21, 16 - ldr w1, [x21,24] - sub w2, w2, w3 - lsl w0, w0, w3 - sub w0, w0, #1 - lsr w3, w1, w2 - lsl w2, w0, w2 - and w0, w0, w3 - ldr x3, [x21,8] - bic w1, w1, w2 - mov x2, x24 - bl flash_read_page_en - ldr w2, [x22,4] - cmn w2, #1 - beq .L2345 - ldr x3, [x21,8] - ldr w4, [x3,4] - cmp w2, w4 - beq .L2345 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 6, .L2345 - adrp x0, .LC173 - ldr w1, [x22,8] - ldr w3, [x3] - add x0, x0, :lo12:.LC173 - bl printk -.L2345: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 1312 + add x0, x0, 1304 add x0, x0, x20, lsl 6 - ldr w1, [x0,36] + ldr w1, [x0, 36] cmn w1, #1 - beq .L2343 - ldr x0, [x0,24] - ldr w0, [x0,4] + beq .L2381 + ldr x0, [x0, 24] + ldr w0, [x0, 4] cmp w1, w0 - beq .L2343 + beq .L2381 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 - mov w2, 450 - add x1, x1, 448 + add x1, x1, 464 + mov w2, 431 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2343: - add x19, x19, :lo12:.LANCHOR0 +.L2381: + add x0, x19, :lo12:.LANCHOR0 mov w1, 13 - add x19, x19, 1312 - add x19, x19, x20, lsl 6 - str w23, [x19,52] - strb w1, [x19,58] -.L2414: - ldrb w0, [x19,2] + add x0, x0, 1304 + cmn w25, #1 + add x20, x0, x20, lsl 6 + strb w1, [x20, 58] + ldrb w1, [x20, 2] + str w22, [x20, 52] + orr w1, w1, 8 + strb w1, [x20, 2] + beq .L2383 + add x0, x0, x21, lsl 6 + ldr w1, [x0, 36] + cmn w1, #1 + beq .L2385 + ldr x0, [x0, 24] + ldr w0, [x0, 4] + cmp w1, w0 + beq .L2385 +.L2383: + add x0, x19, :lo12:.LANCHOR0 + mov w5, 1 + add x20, x0, 1304 + add x20, x20, x21, lsl 6 + ldrb w2, [x0, 1205] + mov w0, 24 + sub w0, w0, w2 + ldr x3, [x20, 24] + lsl w5, w5, w2 + adrp x2, .LANCHOR3+1946 + sub w5, w5, #1 + ldr w1, [x20, 40] + ldrb w4, [x2, #:lo12:.LANCHOR3+1946] + mov x2, x23 + lsl w6, w5, w0 + lsr w0, w1, w0 + bic w1, w1, w6 + and w0, w0, w5 + bl flash_read_page_en + ldr w2, [x20, 36] + cmn w2, #1 + beq .L2387 + ldr x0, [x20, 24] + ldr w4, [x0, 4] + cmp w2, w4 + beq .L2387 + adrp x1, .LANCHOR2 + ldr w1, [x1, #:lo12:.LANCHOR2] + tbz x1, 6, .L2387 + ldr w3, [x0] + adrp x0, .LC173 + ldr w1, [x20, 40] + add x0, x0, :lo12:.LC173 + bl printk +.L2387: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x21, lsl 6 + ldr w1, [x0, 36] + cmn w1, #1 + beq .L2385 + ldr x0, [x0, 24] + ldr w0, [x0, 4] + cmp w1, w0 + beq .L2385 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 464 + mov w2, 450 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2385: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 13 + add x19, x19, 1304 + add x21, x19, x21, lsl 6 + strb w0, [x21, 58] + ldrb w0, [x21, 2] + str w22, [x21, 52] orr w0, w0, 8 - strb w0, [x19,2] - b .L2413 -.L2331: + strb w0, [x21, 2] + b .L2401 +.L2373: bl nandc_iqr_wait_flash_ready - mov w0, w25 + mov w0, w21 mov w1, 64 bl flash_wait_device_ready mov w21, w0 - tbz x21, 6, .L2413 - mov w20, 5 - ands w20, w21, w20 - beq .L2347 + tbz x21, 6, .L2401 + mov w0, 5 + tst w21, w0 + beq .L2389 add x19, x19, :lo12:.LANCHOR0 mov w0, 12 - add x19, x19, 1312 - mov w2, w21 - add x19, x19, x22, lsl 6 + add x19, x19, 1304 mov w4, 12 - mov w20, w21 - strb w0, [x19,58] + add x20, x19, x20, lsl 6 + mov w2, w21 + ldrb w1, [x20, 1] + ldr w3, [x20, 40] + strb w0, [x20, 58] adrp x0, .LC174 - ldrb w1, [x19,1] add x0, x0, :lo12:.LC174 - ldr w3, [x19,40] bl printk +.L2459: mov w0, -1 - str w0, [x19,52] - b .L2327 -.L2347: - add x4, x19, :lo12:.LANCHOR0 + str w0, [x20, 52] + b .L2367 +.L2389: + add x0, x19, :lo12:.LANCHOR0 mov w1, 13 - add x23, x4, 1312 - add x23, x23, x22, lsl 6 - strb w1, [x23,58] - ldr x1, [x4,3392] - str w20, [x23,52] - ldr w2, [x1,156] + add x21, x0, 1304 + add x21, x21, x20, lsl 6 + strb w1, [x21, 58] + ldr x1, [x0, 3384] + str wzr, [x21, 52] + ldr w2, [x1, 156] mov w1, 20041 movk w1, 0x444b, lsl 16 cmp w2, w1 - bne .L2413 - ldrh w0, [x23,50] - cbnz w0, .L2413 - ldrb w3, [x4,1257] - mov w0, 1 - adrp x21, .LANCHOR5 - ldr w1, [x23,40] - lsl w0, w0, w3 - add x21, x21, :lo12:.LANCHOR5 - mov w2, 24 - sub w0, w0, #1 - sub w2, w2, w3 - ldrb w4, [x4,3360] - lsr w3, w1, w2 - lsl w2, w0, w2 - bic w1, w1, w2 - and w0, w0, w3 - ldr x2, [x21,336] - ldr x3, [x21,344] + bne .L2401 + ldrh w1, [x21, 50] + cbnz w1, .L2401 + ldrb w2, [x0, 1205] + mov w5, 1 + adrp x22, .LANCHOR5 + add x22, x22, :lo12:.LANCHOR5 + mov w0, 24 + sub w0, w0, w2 + lsl w5, w5, w2 + adrp x2, .LANCHOR3+1946 + sub w5, w5, #1 + ldr w1, [x21, 40] + ldrb w4, [x2, #:lo12:.LANCHOR3+1946] + ldp x3, x2, [x22, 344] + lsl w6, w5, w0 + lsr w0, w1, w0 + bic w1, w1, w6 + and w0, w0, w5 bl flash_read_page_en cmn w0, #1 - mov w3, w0 - beq .L2348 - ldr x1, [x23,24] - ldr x0, [x21,344] + beq .L2390 + ldr x2, [x21, 24] + ldr x1, [x22, 344] + ldr w2, [x2] ldr w1, [x1] - ldr w0, [x0] - cmp w1, w0 - beq .L2413 -.L2348: - add x4, x19, :lo12:.LANCHOR0 + cmp w2, w1 + beq .L2401 +.L2390: + add x19, x19, :lo12:.LANCHOR0 + mov w3, w0 + add x1, x19, 1304 adrp x0, .LC175 - add x19, x4, 1312 + add x20, x1, x20, lsl 6 add x0, x0, :lo12:.LC175 - add x19, x19, x22, lsl 6 - ldrb w4, [x4,1240] - ldrb w1, [x19,1] - ldr w2, [x19,40] + ldrb w4, [x19, 1252] + ldrb w1, [x20, 1] + ldr w2, [x20, 40] bl printk mov w0, -1 - str w0, [x19,52] - b .L2327 -.L2334: - add x24, x19, :lo12:.LANCHOR0 - cmp w1, 11 - mov w0, 3 + str w0, [x20, 52] + b .L2401 +.L2376: + cmp w2, 11 + mov w1, 3 mov w5, 10 - csel w5, w0, w5, ne + csel w5, w5, w1, eq + add x1, x19, :lo12:.LANCHOR0 mov w4, 24 - ldrb w1, [x24,1257] - mov w0, 1 - add x21, x24, 1312 - sub w4, w4, w1 - lsl w0, w0, w1 - sub w0, w0, #1 - lsr w2, w25, w4 - and w2, w0, w2 - add x3, x21, x22, lsl 6 - uxth w2, w2 -.L2350: - ldrb w1, [x3] + mov w2, 1 + add x22, x1, 1304 + ubfiz x0, x0, 6, 8 + mov x24, x1 + ldrb w3, [x1, 1205] + add x0, x22, x0 + sub w4, w4, w3 + lsl w2, w2, w3 + sub w2, w2, #1 + lsr w3, w21, w4 + and w3, w3, w2 + and w3, w3, 65535 +.L2392: + ldrb w1, [x0] cmp w1, 255 - beq .L2415 + bne .L2399 + mov w21, -1 + b .L2367 +.L2399: sxtw x23, w1 - add x3, x21, x23, lsl 6 - ldrb w1, [x3,58] - cmp w1, w5 - bne .L2350 - ldr w1, [x3,40] + ubfiz x0, x1, 6, 8 + add x1, x22, x23, lsl 6 + add x0, x22, x0 + ldrb w6, [x1, 58] + cmp w6, w5 + bne .L2392 + ldr w1, [x1, 40] lsr w1, w1, w4 - and w1, w0, w1 - cmp w2, w1 - bne .L2350 + and w1, w1, w2 + cmp w3, w1 + bne .L2392 bl nandc_iqr_wait_flash_ready - mov w0, w25 + mov w0, w21 mov w1, 64 bl flash_wait_device_ready - mov w20, w0 - tbz x20, 6, .L2412 - ands w1, w20, 15 - beq .L2354 - add x21, x21, x22, lsl 6 + mov w21, w0 + tbnz x21, 6, .L2394 +.L2458: + mov w21, 0 + b .L2395 +.L2394: + tst x21, 15 + beq .L2396 + add x22, x22, x20, lsl 6 + mov w2, w0 + mov w4, 12 adrp x0, .LC176 add x0, x0, :lo12:.LC176 - mov w2, w20 - mov w4, 12 - ldrb w1, [x21,1] - ldr w3, [x21,40] + ldrb w1, [x22, 1] + ldr w3, [x22, 40] bl printk mov w0, 12 - strb w0, [x21,58] + strb w0, [x22, 58] mov w0, -1 - str w0, [x21,52] - b .L2353 -.L2354: - add x20, x21, x22, lsl 6 - mov w2, 13 - str w1, [x20,52] - ldr x1, [x24,3392] - strb w2, [x20,58] - ldr w2, [x1,156] - mov w1, 20041 - movk w1, 0x444b, lsl 16 - cmp w2, w1 - bne .L2412 - ldrh w0, [x20,50] - cbnz w0, .L2412 - ldrb w3, [x24,1257] - mov w0, 1 - adrp x21, .LANCHOR5 - ldr w1, [x20,40] - lsl w0, w0, w3 - add x21, x21, :lo12:.LANCHOR5 - mov w2, 24 - sub w0, w0, #1 - sub w2, w2, w3 - ldrb w4, [x24,3360] - lsr w3, w1, w2 - lsl w2, w0, w2 - bic w1, w1, w2 - and w0, w0, w3 - ldr x2, [x21,336] - ldr x3, [x21,344] - bl flash_read_page_en - cmn w0, #1 - mov w3, w0 - beq .L2356 - ldr x1, [x20,24] - ldr x0, [x21,344] - ldr w1, [x1] - ldr w0, [x0] - cmp w1, w0 - beq .L2412 -.L2356: - add x4, x19, :lo12:.LANCHOR0 - adrp x0, .LC177 - add x20, x4, 1312 - add x0, x0, :lo12:.LC177 - add x20, x20, x22, lsl 6 - ldrb w4, [x4,1240] - ldrb w1, [x20,1] - ldr w2, [x20,40] - bl printk - mov w0, -1 - str w0, [x20,52] -.L2412: - mov w20, 0 -.L2353: + str w0, [x22, 52] +.L2395: add x1, x19, :lo12:.LANCHOR0 - add x1, x1, 1312 - add x19, x1, x22, lsl 6 + add x1, x1, 1304 + add x20, x1, x20, 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 .L2327 -.L2415: - mov w20, -1 - b .L2327 -.L2332: - mov w1, 32 - mov w0, w25 - bl flash_wait_device_ready - tbz x0, 5, .L2413 - ands w20, w0, 15 - add x19, x19, :lo12:.LANCHOR0 - add x19, x19, x22, lsl 6 - beq .L2358 - mov w1, 12 - mov w20, w0 - strb w1, [x19,1370] - mov w1, -1 - str w1, [x19,1364] - b .L2327 -.L2358: - mov w0, 13 - str w20, [x19,1364] - strb w0, [x19,1370] - b .L2327 -.L2333: - mov w1, 64 - mov w0, w25 - bl flash_wait_device_ready - tbz x0, 6, .L2413 - add x19, x19, :lo12:.LANCHOR0 - add x19, x19, x22, lsl 6 - str w0, [x19,1364] - mov w0, 7 - strb w0, [x19,1370] -.L2413: - mov w20, 0 -.L2327: - mov w0, w20 - 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] + ldrb w0, [x20, 58] + strb w0, [x1, 58] + ldr w0, [x20, 52] + str w0, [x1, 52] +.L2367: + mov w0, w21 + 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 +.L2396: + add x21, x22, x20, lsl 6 + mov w0, 13 + strb w0, [x21, 58] + ldr x0, [x24, 3384] + str wzr, [x21, 52] + ldr w1, [x0, 156] + mov w0, 20041 + movk w0, 0x444b, lsl 16 + cmp w1, w0 + bne .L2458 + ldrh w0, [x21, 50] + cbnz w0, .L2458 + ldrb w2, [x24, 1205] + mov w5, 1 + adrp x22, .LANCHOR5 + add x22, x22, :lo12:.LANCHOR5 + mov w0, 24 + sub w0, w0, w2 + lsl w5, w5, w2 + adrp x2, .LANCHOR3+1946 + sub w5, w5, #1 + ldr w1, [x21, 40] + ldrb w4, [x2, #:lo12:.LANCHOR3+1946] + ldp x3, x2, [x22, 344] + lsl w6, w5, w0 + lsr w0, w1, w0 + bic w1, w1, w6 + and w0, w0, w5 + bl flash_read_page_en + cmn w0, #1 + beq .L2398 + ldr x2, [x21, 24] + ldr x1, [x22, 344] + ldr w2, [x2] + ldr w1, [x1] + cmp w2, w1 + beq .L2458 +.L2398: + add x1, x19, :lo12:.LANCHOR0 + mov w3, w0 + add x21, x1, 1304 + adrp x0, .LC177 + add x21, x21, x20, lsl 6 + add x0, x0, :lo12:.LC177 + ldrb w4, [x1, 1252] + ldr w2, [x21, 40] + ldrb w1, [x21, 1] + bl printk + mov w0, -1 + str w0, [x21, 52] + b .L2458 +.L2374: + mov w0, w21 + mov w1, 32 + bl flash_wait_device_ready + mov w21, w0 + tbz x21, 5, .L2401 + add x19, x19, :lo12:.LANCHOR0 + tst x21, 15 + add x19, x19, 1304 + add x20, x19, x20, lsl 6 + beq .L2400 + mov w0, 12 + strb w0, [x20, 58] + b .L2459 +.L2400: + mov w0, 13 + str wzr, [x20, 52] + strb w0, [x20, 58] + b .L2401 +.L2375: + mov w1, 64 + mov w0, w21 + bl flash_wait_device_ready + tbz x0, 6, .L2401 + add x19, x19, :lo12:.LANCHOR0 + add x19, x19, 1304 + add x19, x19, x20, lsl 6 + str w0, [x19, 52] + mov w0, 7 + strb w0, [x19, 58] + b .L2401 .size queue_wait_first_req_completed, .-queue_wait_first_req_completed .align 2 .global sblk_prog_page .type sblk_prog_page, %function sblk_prog_page: - stp x29, x30, [sp, -112]! + 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] + stp x19, x20, [sp, 16] mov x19, x0 - uxtb w20, w1 - ldrh w0, [x0,50] - cbz w0, .L2417 + stp x21, x22, [sp, 32] + and w20, w1, 255 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrh w0, [x0, 50] + cbz w0, .L2461 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L2417 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L2461 + ldr w1, [x19, 40] adrp x0, .LC178 - ldr w1, [x19,40] - add x0, x0, :lo12:.LC178 mov w2, w20 + add x0, x0, :lo12:.LC178 bl printk -.L2417: - adrp x23, .LANCHOR0 - adrp x25, .LC0 - add x24, x23, :lo12:.LANCHOR0 +.L2461: + adrp x24, .LANCHOR0 + add x25, x24, :lo12:.LANCHOR0 + add x27, x25, 1304 mov w21, 0 - add x27, x24, 1312 - add x25, x25, :lo12:.LC0 -.L2418: - cbz w20, .L2451 + mov w23, 1 +.L2462: + cbnz w20, .L2473 +.L2489: + 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 +.L2473: ldrb w26, [x19] - ldr w22, [x19,40] -.L2419: - mov w0, w22 + ldr w22, [x19, 40] +.L2463: mov w1, 1 + mov w0, w22 bl queue_lun_state - cbz w0, .L2452 + cbnz w0, .L2464 + cmp w20, 1 + beq .L2465 + add x0, x24, :lo12:.LANCHOR0 + ldrb w1, [x0, 1250] + cbz w1, .L2465 + ldrb w1, [x0, 1213] + cbz w1, .L2466 +.L2465: + mov x0, x19 + bl queue_prog_cmd +.L2467: + subs w20, w20, #1 + beq .L2489 + add x19, x24, :lo12:.LANCHOR0 + ubfiz x26, x26, 6, 8 + add x19, x19, 1304 + add x19, x19, x26 + b .L2462 +.L2464: bl queue_wait_first_req_completed bl queue_remove_completed_req - b .L2419 -.L2452: - cmp w20, 1 - beq .L2421 - add x0, x23, :lo12:.LANCHOR0 - ldrb w1, [x0,1305] - cbz w1, .L2421 - ldrb w1, [x0,1269] - cbz w1, .L2422 -.L2421: - mov x0, x19 - bl queue_prog_cmd - b .L2423 -.L2422: - ldrb w1, [x0,1257] - mov w28, 1 - mov w0, 24 - lsl w28, w28, w1 - sub w0, w0, w1 - lsr w0, w22, w0 - sub w28, w28, #1 + b .L2463 +.L2466: + ldrb w0, [x0, 1205] + mov w28, 24 + sub w28, w28, w0 + lsl w0, w23, w0 + sub w0, w0, #1 + lsr w28, w22, w28 and w28, w28, w0 ldrb w0, [x19] + and w28, w28, 65535 cmp w0, 255 - uxth w28, w28 - bne .L2424 + bne .L2468 adrp x1, .LANCHOR4 - mov w2, 697 add x1, x1, :lo12:.LANCHOR4 - mov x0, x25 - add x1, x1, 480 + add x1, x1, 496 + mov w2, 697 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2424: +.L2468: ldrb w0, [x19] - mov w4, 1 - ldrb w1, [x24,1257] + mov w1, 24 add x0, x27, x0, lsl 6 - ldr w2, [x0,40] - mov w0, 24 - sub w0, w0, w1 - lsl w1, w4, w1 - sub w1, w1, #1 - lsr w3, w2, w0 - and w1, w1, w3 - cmp w28, w1, uxth - bne .L2425 - adrp x5, .LANCHOR3 - str x4, [x29,104] - add x5, x5, :lo12:.LANCHOR3 - ldrh w1, [x5,1312] - ldrb w6, [x5,1314] - sub w3, w0, w1 - lsr w5, w22, w1 - lsl w3, w4, w3 - sub w6, w6, #1 - sub w3, w3, #1 - lsl w0, w4, w1 - uxth w7, w6 - lsr w1, w2, w1 - uxth w3, w3 - and w5, w7, w5 - and w1, w7, w1 - and w5, w3, w5 - and w3, w3, w1 + ldr w4, [x0, 40] + ldrb w0, [x25, 1205] + sub w1, w1, w0 + lsl w0, w23, w0 sub w0, w0, #1 - cmp w5, w3 - uxth w0, w0 - beq .L2425 - and w22, w0, w22 + lsr w2, w4, w1 and w0, w0, w2 - cmp w22, w0 - bne .L2425 - cmp w21, w6 - beq .L2425 - ldr w1, [x19,40] + cmp w28, w0, uxth + bne .L2469 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + ldrh w2, [x0, 1304] + ldrb w3, [x0, 1306] + sub w0, w1, w2 + sub w3, w3, #1 + lsl w1, w23, w2 + lsl w0, w23, w0 + sub w0, w0, #1 + and w0, w0, w3 + sub w1, w1, #1 + and w0, w0, 65535 + lsr w5, w22, w2 + and w1, w1, 65535 + and w5, w0, w5 + lsr w2, w4, w2 + and w0, w0, w2 + and w22, w1, w22 + cmp w5, w0 + and w1, w1, w4 + ccmp w22, w1, 0, ne + bne .L2469 + cmp w21, w3 + beq .L2469 + ldr w1, [x19, 40] mov w0, 17 - ldr x2, [x19,8] + ldr x2, [x19, 8] add w21, w21, 1 - ldr x3, [x19,24] + ldr x3, [x19, 24] bl flash_start_page_prog + strb w23, [x19, 59] mov w0, 9 - ldr x4, [x29,104] - strb w0, [x19,58] + strb w0, [x19, 58] mov w0, -1 - strb w4, [x19,59] - mov x1, x19 strb w0, [x19] - add x0, x24, 3363 + mov x1, x19 + add x0, x25, 3354 bl buf_add_tail - b .L2423 -.L2425: + b .L2467 +.L2469: mov x0, x19 mov w21, 0 bl queue_prog_cmd -.L2423: - subs w20, w20, #1 - beq .L2451 - add x19, x23, :lo12:.LANCHOR0 - sbfiz x26, x26, 6, 32 - add x19, x19, 1312 - add x19, x19, x26 - b .L2418 -.L2451: - 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], 112 - ret + b .L2467 .size sblk_prog_page, .-sblk_prog_page .align 2 .global sblk_wait_write_queue_completed @@ -15432,20 +15345,20 @@ sblk_prog_page: sblk_wait_write_queue_completed: stp x29, x30, [sp, -32]! add x29, sp, 0 - str x19, [sp,16] + str x19, [sp, 16] adrp x19, .LANCHOR0 -.L2454: - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,3363] + add x19, x19, :lo12:.LANCHOR0 +.L2492: + ldrb w0, [x19, 3354] cmp w0, 255 - beq .L2456 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2454 -.L2456: - ldr x19, [sp,16] + bne .L2493 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L2493: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2492 .size sblk_wait_write_queue_completed, .-sblk_wait_write_queue_completed .align 2 .global ftl_flush @@ -15453,29 +15366,29 @@ sblk_wait_write_queue_completed: ftl_flush: stp x29, x30, [sp, -32]! adrp x2, .LANCHOR0 - add x29, sp, 0 add x0, x2, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] + add x29, sp, 0 + stp x19, x20, [sp, 16] mov x19, x2 adrp x20, .LANCHOR5 - ldrb w1, [x0,3389] - cbz w1, .L2458 + ldrb w1, [x0, 3380] + cbz w1, .L2496 add x2, x20, :lo12:.LANCHOR5 - add x0, x0, 1312 - ldrb w2, [x2,352] + add x0, x0, 1304 + ldrb w2, [x2, 360] add x0, x0, x2, lsl 6 bl sblk_prog_page -.L2458: +.L2496: add x2, x19, :lo12:.LANCHOR0 add x20, x20, :lo12:.LANCHOR5 mov w0, -1 - strb wzr, [x2,3389] - strb w0, [x20,352] + strb wzr, [x2, 3380] + strb w0, [x20, 360] bl sblk_wait_write_queue_completed bl ftl_write_completed mov w0, -1 bl ftl_vpn_decrement - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size ftl_flush, .-ftl_flush @@ -15483,21 +15396,23 @@ ftl_flush: .global zftl_cache_flush .type zftl_cache_flush, %function zftl_cache_flush: - adrp x0, .LANCHOR0+3389 + adrp x0, .LANCHOR0+3380 + ldrb w0, [x0, #:lo12:.LANCHOR0+3380] + cbz w0, .L2506 stp x29, x30, [sp, -16]! add x29, sp, 0 - ldrb w0, [x0,#:lo12:.LANCHOR0+3389] - cbz w0, .L2462 bl timer_get_time - adrp x1, .LANCHOR5+356 - ldr w1, [x1,#:lo12:.LANCHOR5+356] + adrp x1, .LANCHOR5+364 + ldr w1, [x1, #:lo12:.LANCHOR5+364] add w1, w1, 100 cmp w0, w1 - bls .L2462 + bls .L2501 bl ftl_flush -.L2462: +.L2501: ldp x29, x30, [sp], 16 ret +.L2506: + ret .size zftl_cache_flush, .-zftl_cache_flush .align 2 .global ftl_read_page @@ -15505,20 +15420,24 @@ zftl_cache_flush: ftl_read_page: stp x29, x30, [sp, -64]! add x29, sp, 0 - str x19, [sp,16] - uxtb w19, w0 - str x1, [x29,32] - str x2, [x29,40] - str x3, [x29,48] - str x4, [x29,56] + stp x19, x20, [sp, 16] + and w19, w0, 255 + stp x21, x22, [sp, 32] + mov w20, w1 + mov x21, x2 + mov x22, x3 + str x23, [sp, 48] + mov w23, w4 bl sblk_wait_write_queue_completed - ldr x1, [x29,32] + mov w4, w23 + mov x3, x22 + mov x2, x21 + mov w1, w20 mov w0, w19 - ldr x2, [x29,40] - ldr x3, [x29,48] - ldr x4, [x29,56] bl flash_read_page_en - ldr x19, [sp,16] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size ftl_read_page, .-ftl_read_page @@ -15528,32 +15447,33 @@ ftl_read_page: ftl_read_ppa_page: stp x29, x30, [sp, -64]! mov w5, 1 - mov w4, w3 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w20, w0 - adrp x0, .LANCHOR0+1257 + adrp x0, .LANCHOR0+1205 mov w19, 24 - str x4, [x29,56] - stp x21, x22, [sp,32] - ldrb w0, [x0,#:lo12:.LANCHOR0+1257] - mov x22, x1 - mov x21, x2 + stp x21, x22, [sp, 32] + mov x21, x1 + ldrb w0, [x0, #:lo12:.LANCHOR0+1205] + mov x22, x2 + str x23, [sp, 48] + mov w23, w3 sub w19, w19, w0 lsl w5, w5, w0 sub w5, w5, #1 lsr w19, w20, w19 and w19, w19, w5 + and w19, w19, 255 bl sblk_wait_write_queue_completed - ldr x4, [x29,56] - uxtb w19, w19 + mov w4, w23 + mov x3, x22 + mov x2, x21 mov w1, w20 - mov x2, x22 - mov x3, x21 mov w0, w19 bl flash_read_page_en - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .size ftl_read_ppa_page, .-ftl_read_ppa_page @@ -15563,853 +15483,838 @@ ftl_read_ppa_page: sblk_read_page: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x25, x26, [sp,64] + stp x21, x22, [sp, 32] + and w21, w1, 255 + stp x25, x26, [sp, 64] adrp x25, .LANCHOR0 - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] add x26, x25, :lo12:.LANCHOR0 - uxtb w21, w1 - adrp x28, .LC0 - add x27, x26, 1312 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + mov x22, x0 mov x19, x0 - mov x23, x0 mov w20, w21 - add x28, x28, :lo12:.LC0 -.L2469: - cbz w20, .L2492 - ldrb w24, [x19] - ldr w22, [x19,40] -.L2470: - mov w0, w22 - mov w1, 0 - bl queue_lun_state - cbz w0, .L2493 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2470 -.L2493: - cmp w20, 1 - beq .L2476 - adrp x0, .LANCHOR5+360 - ldrb w0, [x0,#:lo12:.LANCHOR5+360] - cbz w0, .L2476 - add x0, x25, :lo12:.LANCHOR0 - mov w3, 1 - ldrb w1, [x0,1257] - mov w0, 24 - lsl w3, w3, w1 - sub w0, w0, w1 - lsr w0, w22, w0 - sub w3, w3, #1 - and w3, w3, w0 - ldrb w0, [x19] - cmp w0, 255 - uxth w3, w3 - bne .L2475 - adrp x1, .LANCHOR4 - mov w2, 782 - add x1, x1, :lo12:.LANCHOR4 - mov x0, x28 - add x1, x1, 496 - str x3, [x29,120] - bl printk - bl dump_stack - ldr x3, [x29,120] -.L2475: - ldrb w4, [x19] - mov w5, 1 - ldrb w0, [x26,1257] - mov w2, 24 - lsl x4, x4, 6 - add x6, x27, x4 - lsl w5, w5, w0 - sub w0, w2, w0 - sub w5, w5, #1 - ldr w1, [x6,40] - lsr w0, w1, w0 - and w0, w5, w0 - cmp w3, w0, uxth - bne .L2476 - adrp x0, .LANCHOR3+1418 - ldrh w0, [x0,#:lo12:.LANCHOR3+1418] - add w22, w0, w22 - cmp w1, w22 - bne .L2476 - ldr w0, [x19,40] - add x22, x26, 3363 - str x6, [x29,96] - sub w20, w20, #1 - ldrb w24, [x27,x4] - str x4, [x29,104] - bl flash_start_plane_read - mov w3, 2 - mov w2, -1 - strb w3, [x19,58] - mov x0, x22 - strb w2, [x19] - mov x1, x19 - strb wzr, [x19,59] - str x3, [x29,112] - str x2, [x29,120] - bl buf_add_tail - ldr x6, [x29,96] - mov x0, x22 - ldr x4, [x29,104] - ldr x3, [x29,112] - mov x1, x6 - ldr x2, [x29,120] - strb w3, [x6,58] - strb wzr, [x6,59] - strb w2, [x27,x4] - bl buf_add_tail - b .L2474 -.L2476: - mov x0, x19 - bl queue_read_cmd -.L2474: - subs w20, w20, #1 - beq .L2492 - add x19, x25, :lo12:.LANCHOR0 - sbfiz x24, x24, 6, 32 - add x19, x19, 1312 - add x19, x19, x24 - b .L2469 -.L2492: + add x23, x26, 1304 + stp x27, x28, [sp, 80] + adrp x28, .LANCHOR5 +.L2514: + cbnz w20, .L2524 +.L2537: adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x19, x19, 1312 -.L2480: - cbz w21, .L2494 - ldrb w0, [x23,58] - cmp w0, 13 - bne .L2481 - ldrb w0, [x23] - sub w21, w21, #1 - cmp w0, 255 - beq .L2481 - sbfiz x23, x0, 6, 32 - add x23, x19, x23 -.L2481: - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2480 -.L2494: - mov w0, w21 - 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] + add x19, x19, 1304 +.L2525: + cbnz w21, .L2527 + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 +.L2524: + ldrb w24, [x19] + ldr w27, [x19, 40] +.L2515: + mov w1, 0 + mov w0, w27 + bl queue_lun_state + cbnz w0, .L2516 + cmp w20, 1 + beq .L2521 + add x0, x28, :lo12:.LANCHOR5 + ldrb w0, [x0, 368] + cbnz w0, .L2518 +.L2521: + mov x0, x19 + bl queue_read_cmd + b .L2519 +.L2516: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2515 +.L2518: + add x0, x25, :lo12:.LANCHOR0 + mov w3, 24 + ldrb w1, [x0, 1205] + mov w0, 1 + sub w3, w3, w1 + lsl w0, w0, w1 + sub w0, w0, #1 + lsr w3, w27, w3 + and w3, w3, w0 + ldrb w0, [x19] + and w3, w3, 65535 + cmp w0, 255 + bne .L2520 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 512 + mov w2, 782 + str w3, [x29, 124] + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack + ldr w3, [x29, 124] +.L2520: + ldrb w4, [x19] + mov w0, 24 + ldrb w7, [x26, 1205] + mov w2, 1 + sbfiz x5, x4, 6, 32 + sub w0, w0, w7 + add x6, x23, x5 + lsl w2, w2, w7 + sub w2, w2, #1 + ldr w1, [x6, 40] + lsr w0, w1, w0 + and w0, w0, w2 + cmp w3, w0, uxth + bne .L2521 + adrp x0, .LANCHOR3+1410 + ldrh w0, [x0, #:lo12:.LANCHOR3+1410] + add w27, w0, w27 + cmp w1, w27 + bne .L2521 + ldr w0, [x19, 40] + mov w27, -1 + ldrb w24, [x23, x5] + sub w20, w20, #1 + stp x6, x5, [x29, 104] + str w4, [x29, 120] + bl flash_start_plane_read + strb wzr, [x19, 59] + mov w2, 2 + strb w27, [x19] + strb w2, [x19, 58] + add x0, x26, 3354 + mov x1, x19 + str w2, [x29, 124] + mov x19, x0 + bl buf_add_tail + ldp x6, x5, [x29, 104] + strb wzr, [x6, 59] + ldp w4, w2, [x29, 120] + strb w2, [x6, 58] + strb w27, [x23, x5] + mov x0, x19 + ubfiz x1, x4, 6, 8 + add x1, x23, x1 + bl buf_add_tail +.L2519: + subs w20, w20, #1 + beq .L2537 + add x19, x25, :lo12:.LANCHOR0 + ubfiz x24, x24, 6, 8 + add x19, x19, 1304 + add x19, x19, x24 + b .L2514 +.L2527: + ldrb w0, [x22, 58] + cmp w0, 13 + bne .L2526 + ldrb w0, [x22] + sub w21, w21, #1 + cmp w0, 255 + beq .L2526 + ubfiz x22, x0, 6, 8 + add x22, x19, x22 +.L2526: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2525 .size sblk_read_page, .-sblk_read_page .align 2 .global gc_check_data_one_wl .type gc_check_data_one_wl, %function gc_check_data_one_wl: - sub sp, sp, #112 - stp x29, x30, [sp,16] + sub sp, sp, #128 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] + stp x19, x20, [sp, 32] adrp x19, .LANCHOR0 add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,48] - stp x23, x24, [sp,64] - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - ldr x0, [x20,3432] - ldr x21, [x20,1120] - add x20, x20, 3424 - cbnz x0, .L2496 + stp x21, x22, [sp, 48] + stp x23, x24, [sp, 64] + stp x25, x26, [sp, 80] + stp x27, x28, [sp, 96] + ldr x0, [x20, 3424] + ldr x21, [x20, 1128] + cbnz x0, .L2540 + add x20, x20, 3416 mov w0, 1 bl buf_alloc - str x0, [x20,8] -.L2496: + str x0, [x20, 8] +.L2540: add x0, x19, :lo12:.LANCHOR0 - ldr x20, [x0,3432] - cbnz x20, .L2497 + ldr x22, [x0, 3424] + cbnz x22, .L2541 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 528 mov w2, 729 - add x1, x1, 512 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2497: - mov w24, 0 - add x25, x21, 80 - add x22, x19, :lo12:.LANCHOR0 - adrp x27, .LANCHOR3 - adrp x26, .LANCHOR5 -.L2498: - ldrb w0, [x25,9] - cmp w24, w0 - bge .L2529 - mov w23, 1 - sxtw x28, w24 -.L2509: - add x2, x22, 3424 - ldrh w0, [x2,20] - cmp w23, w0 - bgt .L2530 - add x0, x28, 8 - ldrh w1, [x25,x0,lsl 1] - add x0, x27, :lo12:.LANCHOR3 - ldrh w3, [x0,1418] - ldrb w0, [x0,1328] - cmp w0, 2 - mul w1, w1, w3 - beq .L2499 - ldrb w3, [x22,1268] - cbz w3, .L2500 -.L2499: - ldrh w2, [x22,3440] - sub w2, w2, #1 - add w1, w2, w1 - add w1, w1, w23 - orr w1, w1, w0, lsl 24 - b .L2528 -.L2500: - cmp w0, 3 - bne .L2502 - ldrb w0, [x22,1269] - cbz w0, .L2503 - ldrh w0, [x2,16] - add w0, w0, w0, lsl 1 - sub w0, w0, #1 - add w1, w0, w1 - add w1, w1, w23 - orr w1, w1, 50331648 - b .L2528 -.L2503: - ldrh w0, [x2,16] - add w1, w1, w0 - orr w1, w1, w23, lsl 24 - b .L2528 -.L2502: - ldrh w0, [x2,16] - add w1, w1, w0 -.L2528: - str w1, [x20,40] - mov x0, x20 +.L2541: + add x27, x19, :lo12:.LANCHOR0 + adrp x4, .LANCHOR3 + add x23, x27, 3416 + mov x20, x4 + mov w25, 0 +.L2542: + add x28, x21, 80 + ldrb w0, [x28, 9] + cmp w25, w0 + bge .L2553 + sxtw x26, w25 + mov w24, 1 + add x26, x26, 8 + b .L2554 +.L2552: + add x1, x4, :lo12:.LANCHOR3 + ldrh w0, [x28, x26, lsl 1] + ldrh w2, [x1, 1410] + ldrb w1, [x1, 1320] + cmp w1, 2 + mul w2, w0, w2 + beq .L2543 + ldrb w0, [x27, 1212] + cbz w0, .L2544 +.L2543: + ldrh w0, [x23, 16] + sub w3, w0, #1 + add w0, w24, w2 + add w0, w3, w0 + orr w1, w0, w1, lsl 24 + str w1, [x22, 40] +.L2545: + str x4, [x29, 104] mov w1, 1 + mov x0, x22 bl sblk_read_page - ldr w2, [x20,52] + ldr w2, [x22, 52] + adrp x0, .LANCHOR5 + ldr x4, [x29, 104] cmn w2, #1 - beq .L2504 - add x3, x26, :lo12:.LANCHOR5 - ldrh w0, [x22,3446] - ldr x1, [x20,24] - lsl x0, x0, 2 - ldr x4, [x3,232] - ldr w5, [x4,x0] - ldr w4, [x1,4] - cmp w5, w4 - bne .L2504 - ldr x3, [x3,240] - ldr w3, [x3,x0] - ldr w0, [x1,8] - cmp w3, w0 - beq .L2505 -.L2504: - add x0, x26, :lo12:.LANCHOR5 - ldrh w4, [x22,3446] - lsl x4, x4, 2 - ldr x1, [x0,232] - ldr w3, [x1,x4] + beq .L2548 + add x5, x0, :lo12:.LANCHOR5 + ldrh w1, [x23, 22] + ldr x3, [x22, 24] + ldr x6, [x5, 280] + lsl x1, x1, 2 + ldr w7, [x6, x1] + ldr w6, [x3, 4] + cmp w7, w6 + bne .L2548 + ldr x5, [x5, 288] + ldr w5, [x5, x1] + ldr w1, [x3, 8] + cmp w5, w1 + beq .L2549 +.L2548: + add x0, x0, :lo12:.LANCHOR5 + ldrh w1, [x23, 22] + ldr x3, [x0, 280] + lsl x1, x1, 2 + ldr w3, [x3, x1] cmn w3, #1 - beq .L2505 - adrp x1, .LANCHOR2 - ldr w1, [x1,#:lo12:.LANCHOR2] - tbz x1, 10, .L2506 - ldr x7, [x20,24] - ldr x5, [x0,240] - ldr w0, [x7,12] - str w0, [sp] + beq .L2549 + adrp x4, .LANCHOR2 + ldr w4, [x4, #:lo12:.LANCHOR2] + tbz x4, 10, .L2550 + ldr x4, [x22, 24] + ldr x0, [x0, 288] + ldr w5, [x4, 12] + str w5, [sp] + ldp w5, w6, [x4] + ldr w7, [x4, 8] + ldr w4, [x0, x1] adrp x0, .LC179 + ldr w1, [x22, 40] add x0, x0, :lo12:.LC179 - ldr w4, [x5,x4] - ldr w6, [x7,4] - ldr w5, [x7] - ldr w1, [x20,40] - ldr w7, [x7,8] bl printk -.L2506: +.L2550: add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x21,80] - mov w21, -1 - ldr x0, [x19,1112] - strh wzr, [x0,x1,lsl 1] - ldr x1, [x19,1120] - ldr w0, [x1,556] + ldrh w1, [x21, 80] + ldr x0, [x19, 1120] + strh wzr, [x0, x1, lsl 1] + ldr x1, [x19, 1128] + ldr w0, [x1, 556] add w0, w0, 1 - str w0, [x1,556] - ldr x0, [x19,3392] - ldr w1, [x0,156] + str w0, [x1, 556] + ldr x0, [x19, 3384] + ldr w1, [x0, 156] mov w0, 20041 movk w0, 0x444b, lsl 16 cmp w1, w0 - bne .L2507 - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldrb w1, [x0,1956] - cbnz w1, .L2507 - ldrb w0, [x0,1330] - cbnz w0, .L2507 - ldr w0, [x20,40] + bne .L2557 + add x20, x20, :lo12:.LANCHOR3 + ldrb w0, [x20, 1950] + cbnz w0, .L2557 + ldrb w0, [x20, 1322] + cbnz w0, .L2557 + ldr w0, [x22, 40] bl ftl_mask_bad_block - b .L2507 -.L2505: - ldrh w0, [x22,3446] - add w23, w23, 1 - add w0, w0, 1 - strh w0, [x22,3446] - b .L2509 -.L2530: - add w24, w24, 1 - b .L2498 -.L2529: - add x19, x19, :lo12:.LANCHOR0 - mov w21, 0 - add x19, x19, 3424 - ldrh w0, [x19,16] - add w1, w0, 1 - strh w1, [x19,16] - adrp x1, .LANCHOR3+1330 - ldrb w1, [x1,#:lo12:.LANCHOR3+1330] - cbz w1, .L2507 - add w0, w0, 2 - strh w0, [x19,16] -.L2507: - sub sp, x29, #16 - mov w0, w21 - 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, 112 +.L2557: + mov w0, -1 +.L2539: + 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, 128 ret +.L2544: + cmp w1, 3 + ldrh w0, [x23, 16] + bne .L2546 + ldrb w1, [x27, 1213] + cbz w1, .L2547 + add w0, w0, w0, lsl 1 + sub w1, w0, #1 + add w0, w24, w2 + add w0, w1, w0 + orr w0, w0, 50331648 +.L2572: + str w0, [x22, 40] + b .L2545 +.L2547: + add w0, w0, w2 + orr w0, w0, w24, lsl 24 + b .L2572 +.L2546: + add w0, w0, w2 + b .L2572 +.L2549: + ldrh w0, [x23, 22] + add w24, w24, 1 + add w0, w0, 1 + strh w0, [x23, 22] +.L2554: + ldrh w0, [x23, 20] + cmp w24, w0 + ble .L2552 + add w25, w25, 1 + b .L2542 +.L2553: + add x19, x19, :lo12:.LANCHOR0 + add x19, x19, 3416 + ldrh w0, [x19, 16] + add w1, w0, 1 + strh w1, [x19, 16] + adrp x1, .LANCHOR3+1322 + ldrb w1, [x1, #:lo12:.LANCHOR3+1322] + cbz w1, .L2558 + add w0, w0, 2 + strh w0, [x19, 16] +.L2558: +.L2551: + mov w0, 0 + b .L2539 .size gc_check_data_one_wl, .-gc_check_data_one_wl .align 2 .global sblk_tlc_prog_one_page .type sblk_tlc_prog_one_page, %function sblk_tlc_prog_one_page: - stp x29, x30, [sp, -48]! + stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov x20, x0 + stp x19, x20, [sp, 16] + mov x19, x0 ldr x0, [x0] - ldr w21, [x0,40] -.L2532: - mov w0, w21 + ldr w20, [x0, 40] +.L2574: mov w1, 1 + mov w0, w20 bl queue_lun_state - mov w19, w0 - cbz w0, .L2534 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2532 -.L2534: - mov x0, x20 + cbnz w0, .L2575 + mov x0, x19 mov w1, 1 bl queue_tlc_prog_cmd - ldr x21, [sp,32] - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 48 + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 ret +.L2575: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2574 .size sblk_tlc_prog_one_page, .-sblk_tlc_prog_one_page .align 2 .global sblk_xlc_prog_pages .type sblk_xlc_prog_pages, %function sblk_xlc_prog_pages: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - str x27, [sp,80] - mov x21, x0 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] + stp x19, x20, [sp, 16] + mov x20, x0 + stp x21, x22, [sp, 32] mov x22, x1 - mov w27, w2 + stp x25, x26, [sp, 64] + mov w25, w2 + stp x23, x24, [sp, 48] ldr x0, [x0] - ldr w19, [x0,40] -.L2536: - mov w0, w19 + ldr w19, [x0, 40] +.L2578: mov w1, 1 + mov w0, w19 bl queue_lun_state - mov w24, w0 - cbz w0, .L2547 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2536 -.L2547: - cmp w27, 2 - bne .L2538 - adrp x25, .LANCHOR0 - add x2, x25, :lo12:.LANCHOR0 - ldrb w0, [x2,1305] - cbz w0, .L2539 - ldrb w0, [x2,1257] - mov w1, 24 - ldr x6, [x21] - mov w20, 1 - sub w1, w1, w0 - ldr x4, [x22] - lsl w23, w20, w1 - lsl w0, w20, w0 - ldr w3, [x6,40] - sub w23, w23, #1 - sub w19, w0, #1 - ldrb w0, [x2,1269] - and w26, w23, w3 - lsr w3, w3, w1 - ldr w4, [x4,40] - and w19, w19, w3 - and w23, w23, w4 - uxtb w19, w19 - cbz w0, .L2540 + cbnz w0, .L2579 + cmp w25, 2 + bne .L2580 + adrp x23, .LANCHOR0 + add x4, x23, :lo12:.LANCHOR0 + ldr x5, [x22] + ldrb w0, [x4, 1250] + cbz w0, .L2581 + ldr x0, [x20] + mov w26, 1 + ldrb w1, [x4, 1205] + mov w3, 24 + ldr w5, [x5, 40] + sub w3, w3, w1 + lsl w19, w26, w1 + ldr w2, [x0, 40] + ldrb w1, [x4, 1213] + lsl w21, w26, w3 + sub w19, w19, #1 + sub w21, w21, #1 + and w24, w2, w21 + lsr w2, w2, w3 + and w19, w19, w2 + and w21, w21, w5 + and w19, w19, 255 + cbz w1, .L2582 mov w0, w19 bl zftl_flash_exit_slc_mode - ldr x6, [x21] - mov w1, w20 + ldr x0, [x20] + mov w4, w24 mov w3, w19 - mov w4, w26 - mov w0, w24 + mov w1, w26 mov w2, 17 - ldr x5, [x6,8] - ldr x6, [x6,24] + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - ldr x6, [x22] - mov w1, w20 + ldr x0, [x22] + mov w4, w21 mov w3, w19 - mov w4, w23 - mov w0, w24 + mov w1, w26 mov w2, 26 - ldr x5, [x6,8] - ldr x6, [x6,24] + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - ldr x6, [x21,8] - mov w1, w27 + ldr x0, [x20, 8] + add w4, w24, w26 mov w3, w19 - add w4, w26, w20 - mov w0, w24 + mov w1, w25 mov w2, 17 - ldr x5, [x6,8] - ldr x6, [x6,24] + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - ldr x6, [x22,8] - mov w1, w27 + ldr x0, [x22, 8] + add w4, w21, w26 mov w3, w19 - add w4, w23, w20 - mov w0, w24 + mov w1, w25 mov w2, 26 - ldr x5, [x6,8] - ldr x6, [x6,24] + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - ldr x6, [x21,16] + ldr x0, [x20, 16] + add w4, w24, 2 mov w3, w19 - add w4, w26, 2 - mov w0, w24 - mov w1, 3 mov w2, 17 - ldr x5, [x6,8] - ldr x6, [x6,24] + mov w1, 3 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog bl nandc_wait_flash_ready - ldr x6, [x22,16] - mov w0, w24 - mov w1, 3 + ldr x0, [x22, 16] + add w4, w21, 2 + mov w3, w19 mov w2, 16 - mov w3, w19 - add w4, w23, 2 - ldr x5, [x6,8] - ldr x6, [x6,24] + mov w1, 3 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + mov w0, 0 bl flash_start_one_pass_page_prog - b .L2541 -.L2540: - ldr x5, [x6,8] - mov w1, w20 - ldrb w0, [x6,60] - mov w2, 17 - ldr x6, [x6,24] - mov w3, w19 - mov w4, w26 - bl flash_start_tlc_page_prog - bl nandc_wait_flash_ready - ldr x6, [x22] - mov w1, w20 - ldr x0, [x21] - mov w2, 26 - mov w3, w19 - mov w4, w23 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog - bl nandc_wait_flash_ready - ldr x6, [x21,8] - mov w1, w27 - ldr x0, [x21] - mov w2, 17 - mov w3, w19 - mov w4, w26 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog - bl nandc_wait_flash_ready - ldr x6, [x22,8] - mov w1, w27 - ldr x0, [x21] - mov w2, 26 - mov w3, w19 - mov w4, w23 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog - bl nandc_wait_flash_ready - ldr x6, [x21,16] - mov w1, 3 - ldr x0, [x21] - mov w2, 17 - mov w3, w19 - mov w4, w26 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog - bl nandc_wait_flash_ready - ldr x6, [x22,16] - mov w1, 3 - ldr x0, [x21] - mov w2, 16 - mov w3, w19 - mov w4, w23 - ldr x5, [x6,8] - ldrb w0, [x0,60] - ldr x6, [x6,24] - bl flash_start_tlc_page_prog -.L2541: - ldr x1, [x21] +.L2583: + ldr x1, [x20] mov w0, 5 - strb w0, [x1,58] + strb w0, [x1, 58] mov w0, 1 - strb w0, [x1,59] + strb w0, [x1, 59] mov w0, -1 strb w0, [x1] - add x0, x25, :lo12:.LANCHOR0 - add x0, x0, 3363 + add x0, x23, :lo12:.LANCHOR0 + add x0, x0, 3354 bl buf_add_tail - b .L2542 -.L2539: - ldr x0, [x22] - ldr w19, [x0,40] -.L2543: - mov w0, w19 - mov w1, 1 - bl queue_lun_state - mov w20, w0 - cbz w0, .L2548 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2543 -.L2548: - mov x0, x21 - mov w1, 1 - bl queue_tlc_prog_cmd - mov x0, x22 - mov w1, w20 - bl queue_tlc_prog_cmd -.L2545: - mov w0, w19 - mov w1, 1 - bl queue_lun_state - cbz w0, .L2542 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2545 -.L2538: - mov x0, x21 - mov w1, 1 - bl queue_tlc_prog_cmd -.L2542: +.L2584: mov w0, 0 - 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 + 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 +.L2579: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2578 +.L2582: + ldr x5, [x0, 8] + mov w4, w24 + ldr x6, [x0, 24] + mov w3, w19 + ldrb w0, [x0, 60] + mov w1, w26 + mov w2, 17 + bl flash_start_tlc_page_prog + bl nandc_wait_flash_ready + ldr x7, [x20] + mov w4, w21 + ldr x0, [x22] + mov w3, w19 + mov w1, w26 + mov w2, 26 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + bl nandc_wait_flash_ready + ldp x7, x0, [x20] + mov w4, w24 + mov w3, w19 + mov w1, w25 + mov w2, 17 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + bl nandc_wait_flash_ready + ldr x7, [x20] + mov w4, w21 + ldr x0, [x22, 8] + mov w3, w19 + mov w1, w25 + mov w2, 26 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + bl nandc_wait_flash_ready + ldr x7, [x20] + mov w4, w24 + ldr x0, [x20, 16] + mov w3, w19 + mov w2, 17 + mov w1, 3 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + bl nandc_wait_flash_ready + ldr x0, [x22, 16] + mov w4, w21 + ldr x7, [x20] + mov w3, w19 + mov w2, 16 + mov w1, 3 + ldr x5, [x0, 8] + ldr x6, [x0, 24] + ldrb w0, [x7, 60] + bl flash_start_tlc_page_prog + b .L2583 +.L2581: + ldr w19, [x5, 40] +.L2585: + mov w1, 1 + mov w0, w19 + bl queue_lun_state + cbnz w0, .L2586 + mov w1, 1 + mov x0, x20 + bl queue_tlc_prog_cmd + mov w1, 0 + mov x0, x22 + bl queue_tlc_prog_cmd +.L2587: + mov w1, 1 + mov w0, w19 + bl queue_lun_state + cbz w0, .L2584 + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2587 +.L2586: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2585 +.L2580: + mov w1, 1 + mov x0, x20 + bl queue_tlc_prog_cmd + b .L2584 .size sblk_xlc_prog_pages, .-sblk_xlc_prog_pages .align 2 .global sblk_3d_mlc_prog_pages .type sblk_3d_mlc_prog_pages, %function sblk_3d_mlc_prog_pages: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! + ubfiz x1, x1, 4, 32 + add x1, x1, 8 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - str x27, [sp,80] - add x23, x23, :lo12:.LANCHOR0 - mov w24, 1 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - mov x20, x0 - mov w22, w1 - mov w25, 24 - mov w26, 4 - add x27, x23, 3363 -.L2550: - cbz w22, .L2554 - ldr x0, [x20] - ldr w19, [x0,40] -.L2551: - mov w0, w19 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + add x22, x22, :lo12:.LANCHOR0 + stp x25, x26, [sp, 64] + add x21, x0, x1 + add x26, x0, 8 + add x25, x22, 3354 + stp x23, x24, [sp, 48] + stp x19, x20, [sp, 16] + mov w23, 1 + mov w24, 24 +.L2591: + cmp x21, x26 + bne .L2594 + 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 +.L2594: + ldr x0, [x26, -8] + ldr w19, [x0, 40] +.L2592: mov w1, 1 + mov w0, w19 bl queue_lun_state - cbz w0, .L2555 - bl queue_wait_first_req_completed - bl queue_remove_completed_req - b .L2551 -.L2555: - ldr x0, [x20] - sub w22, w22, #1 - ldr w3, [x0,40] - ldrb w0, [x23,1257] - sub w1, w25, w0 - lsl w0, w24, w0 - lsl w21, w24, w1 - sub w19, w0, #1 - sub w21, w21, #1 - and w21, w21, w3 - lsr w3, w3, w1 - and w19, w19, w3 - uxtb w19, w19 + cbnz w0, .L2593 + ldr x0, [x26, -8] + add x26, x26, 16 + ldrb w1, [x22, 1205] + sub w2, w24, w1 + ldr w0, [x0, 40] + lsl w19, w23, w1 + lsl w20, w23, w2 + sub w19, w19, #1 + sub w20, w20, #1 + and w20, w20, w0 + lsr w0, w0, w2 + and w19, w19, w0 + and w19, w19, 255 mov w0, w19 bl zftl_flash_exit_slc_mode - ldr x4, [x20] + ldr x0, [x26, -24] + mov w2, w20 mov w1, w19 - mov w2, w21 + ldr x3, [x0, 8] + ldr x4, [x0, 24] 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] + ldr x0, [x26, -16] + add w2, w20, 1 mov w1, w19 - add w2, w21, 1 + ldr x3, [x0, 8] + ldr x4, [x0, 24] 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],16 + bl nandc_de_cs.constprop.35 + ldr x1, [x26, -24] + mov w0, 4 + strb w23, [x1, 59] + strb w0, [x1, 58] mov w0, -1 - strb w26, [x1,58] strb w0, [x1] - mov x0, x27 - strb w24, [x1,59] + mov x0, x25 bl buf_add_tail - b .L2550 -.L2554: - mov w0, w22 - 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 + b .L2591 +.L2593: + bl queue_wait_first_req_completed + bl queue_remove_completed_req + b .L2592 .size sblk_3d_mlc_prog_pages, .-sblk_3d_mlc_prog_pages .align 2 .global flash_prog_page_en .type flash_prog_page_en, %function flash_prog_page_en: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxtb w21, w0 - adrp x0, .LANCHOR0 - stp x19, x20, [sp,16] + stp x21, x22, [sp, 32] + and w21, w0, 255 + and w0, w5, 255 + stp x19, x20, [sp, 16] + str w0, [x29, 108] + adrp x19, .LANCHOR0 + add x0, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] mov w20, w1 - add x1, x0, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - stp x25, x26, [sp,64] + stp x25, x26, [sp, 64] mov x23, x2 mov x22, x3 - ldrb w1, [x1,1153] mov w27, w4 - uxtb w28, w5 - ubfx x25, x20, 24, 2 - cmp w1, w21 - mov x24, x0 - bhi .L2557 + ldrb w0, [x0, 1153] + ubfx x24, x20, 24, 2 + cmp w0, w21 + bhi .L2597 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 552 mov w2, 642 - add x1, x1, 536 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2557: - add x1, x24, :lo12:.LANCHOR0 - mov w0, -1 - ldrb w2, [x1,1153] - cmp w2, w21 - bls .L2558 - add x0, x1, w21, sxtw - mov w19, w20 - ldrb w26, [x0,1248] - cbnz w25, .L2559 - adrp x0, .LANCHOR0 - ldrb w0, [x0,#:lo12:.LANCHOR0] - cbz w0, .L2560 - ldrb w0, [x1,1] - cbz w0, .L2559 -.L2560: - add x0, x24, :lo12:.LANCHOR0 - ldrh w19, [x0,2] - ldrb w2, [x0,1] - udiv w1, w20, w19 - mul w19, w1, w19 +.L2597: + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x0, 1153] + cmp w1, w21 + bls .L2608 + add x1, x0, w21, sxtw + ldrb w26, [x1, 1196] + cbnz w24, .L2610 + ldrb w1, [x19, #:lo12:.LANCHOR0] + cbz w1, .L2600 + ldrb w0, [x0, 1] + cbz w0, .L2610 +.L2600: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 2] + ldrb w2, [x0, 1] + udiv w19, w20, w1 + mul w19, w19, w1 sub w1, w20, w19 - cbz w2, .L2561 + cbz w2, .L2601 add w19, w19, w1, lsl 1 - b .L2559 -.L2561: - add x0, x0, 4 - ldrh w0, [x0,w1,uxtw 1] - add w19, w0, w19 -.L2559: - adrp x25, .LC180 - adrp x24, .LC181 - adrp x0, .LC182 - add x25, x25, :lo12:.LC180 - add x0, x0, :lo12:.LC182 - add x24, x24, :lo12:.LC181 - str x0, [x29,120] -.L2565: +.L2599: + adrp x24, .LC180 + adrp x28, .LANCHOR5 + add x24, x24, :lo12:.LC180 + add x25, x28, :lo12:.LANCHOR5 +.L2605: adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 4, .L2562 - mov x0, x25 - mov w1, w26 - mov w2, w20 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 4, .L2602 mov w3, w19 + mov w2, w20 + mov w1, w26 + mov x0, x24 bl printk -.L2562: - mov w0, w26 - mov w1, w19 - mov x2, x23 - mov x3, x22 +.L2602: mov w4, w27 + mov x3, x22 + mov x2, x23 + mov w1, w19 + mov w0, w26 bl flash_prog_page mov w5, w0 - cbz w28, .L2563 - adrp x6, .LANCHOR5 + ldr w0, [x29, 108] + cbz w0, .L2603 + add x6, x28, :lo12:.LANCHOR5 mov w4, w27 - add x7, x6, :lo12:.LANCHOR5 - mov w0, w21 mov w1, w20 - str x6, [x29,104] - str x5, [x29,96] - ldr x2, [x7,336] - ldr x3, [x7,344] - str x7, [x29,112] + mov w0, w21 + str x6, [x29, 96] + ldp x3, x2, [x6, 344] + str w5, [x29, 104] bl flash_read_page_en cmp w0, 512 - cset w4, eq - ldr x6, [x29,104] - cbnz w4, .L2564 - cmn w0, #1 - beq .L2564 - ldr x7, [x29,112] + mov w4, w0 + ccmn w0, #1, 4, ne + beq .L2604 + ldr x6, [x29, 96] ldr w1, [x23] - ldr x5, [x29,96] - ldr x0, [x7,336] + ldr w5, [x29, 104] + ldr x0, [x6, 352] ldr w0, [x0] cmp w1, w0 - bne .L2564 - ldr x0, [x7,344] + bne .L2604 + ldr x0, [x6, 344] ldr w1, [x22] ldr w0, [x0] cmp w1, w0 - beq .L2563 -.L2564: - mov w2, 4 - mov x0, x24 - mov w3, w2 + beq .L2603 +.L2604: + str w4, [x29, 96] + mov w3, 4 mov x1, x23 - str x4, [x29,104] - str x6, [x29,112] + mov w2, w3 + adrp x0, .LC181 + add x0, x0, :lo12:.LC181 bl rknand_print_hex - mov w2, 4 - ldr x0, [x29,120] - mov w3, w2 + mov w3, 4 mov x1, x22 + mov w2, w3 + adrp x0, .LC182 + add x0, x0, :lo12:.LC182 bl rknand_print_hex - ldr x6, [x29,112] - mov w2, 4 + ldr x1, [x25, 344] + mov w3, 4 adrp x0, .LC183 - mov w3, w2 - add x6, x6, :lo12:.LANCHOR5 + mov w2, w3 add x0, x0, :lo12:.LC183 - str x6, [x29,112] - ldr x1, [x6,344] bl rknand_print_hex - ldr x6, [x29,112] - mov w2, 4 + ldr x1, [x25, 352] + mov w3, 4 adrp x0, .LC184 - mov w3, w2 + mov w2, w3 add x0, x0, :lo12:.LC184 - ldr x1, [x6,336] bl rknand_print_hex - ldr x4, [x29,104] - cbnz w4, .L2565 -.L2567: - adrp x0, .LC185 + ldr w4, [x29, 96] + cmp w4, 512 + beq .L2605 +.L2607: mov w1, w20 + adrp x0, .LC185 add x0, x0, :lo12:.LC185 bl printk adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 552 mov w2, 685 - add x1, x1, 536 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack +.L2608: mov w0, -1 - b .L2558 -.L2563: - cmn w5, #1 + b .L2596 +.L2601: + add x0, x0, 4 + ldrh w0, [x0, w1, uxtw 1] + add w19, w0, w19 + b .L2599 +.L2610: + mov w19, w20 + b .L2599 +.L2603: mov w0, w5 - beq .L2567 -.L2558: - 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 + cmn w5, #1 + beq .L2607 +.L2596: + 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_prog_page_en, .-flash_prog_page_en .align 2 @@ -16418,38 +16323,42 @@ flash_prog_page_en: ftl_prog_page: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] - uxtb w19, w0 + stp x19, x20, [sp, 16] + and w19, w0, 255 + stp x21, x22, [sp, 32] mov w20, w1 - str x2, [x29,40] - str x3, [x29,48] - str x4, [x29,56] + mov x21, x2 + mov x22, x3 + str x23, [sp, 48] + mov w23, w4 bl sblk_wait_write_queue_completed - ldr x2, [x29,40] mov w0, w19 - ldr x3, [x29,48] - mov w1, w20 - ldr x4, [x29,56] mov w5, 1 + mov w4, w23 + mov x3, x22 + mov x2, x21 + mov w1, w20 bl flash_prog_page_en - cmn w0, #1 mov w19, w0 - bne .L2586 - adrp x2, .LANCHOR4 - adrp x0, .LC0 - add x1, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC0 - add x1, x1, 560 + cmn w0, #1 + bne .L2626 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 576 mov w2, 2678 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack adrp x0, .LC185 mov w1, w20 add x0, x0, :lo12:.LC185 bl printk -.L2586: +.L2626: mov w0, w19 - ldp x19, x20, [sp,16] + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size ftl_prog_page, .-ftl_prog_page @@ -16457,226 +16366,222 @@ ftl_prog_page: .global ftl_info_flush .type ftl_info_flush, %function ftl_info_flush: - stp x29, x30, [sp, -128]! + stp x29, x30, [sp, -112]! mov w1, 0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - add x19, x20, :lo12:.LANCHOR0 - str w0, [x29,124] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x21, .LANCHOR5 - ldrb w2, [x19,3360] - add x0, x21, :lo12:.LANCHOR5 - add x0, x0, 384 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR3 + stp x25, x26, [sp, 64] + mov w26, w0 + add x0, x21, :lo12:.LANCHOR3 + stp x23, x24, [sp, 48] + stp x19, x20, [sp, 16] + adrp x22, .LANCHOR5 + stp x27, x28, [sp, 80] + adrp x23, .LANCHOR0 + ldrb w2, [x0, 1946] + add x0, x22, :lo12:.LANCHOR5 + ldr x0, [x0, 376] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19,3392] - ldrh w1, [x0,74] + add x0, x23, :lo12:.LANCHOR0 + ldr x0, [x0, 3384] + ldrh w1, [x0, 74] cmp w1, 1 - bls .L2588 - strh wzr, [x0,150] -.L2588: - adrp x23, .LANCHOR4 - adrp x24, .LC186 - add x23, x23, :lo12:.LANCHOR4 + bls .L2630 + strh wzr, [x0, 150] +.L2630: + adrp x24, .LANCHOR4 + add x24, x24, :lo12:.LANCHOR4 + add x19, x22, :lo12:.LANCHOR5 + add x24, x24, 592 mov w25, 0 - add x26, x21, :lo12:.LANCHOR5 - add x24, x24, :lo12:.LC186 - add x23, x23, 576 -.L2599: - add x2, x20, :lo12:.LANCHOR0 - adrp x22, .LANCHOR3 - add x0, x22, :lo12:.LANCHOR3 - add x3, x26, 384 - str x2, [x29,112] - ldr x1, [x2,3392] - ldrh w28, [x0,1418] - str x3, [x29,104] - ldr w0, [x1,4] - ldrb w19, [x26,640] +.L2643: + add x2, x23, :lo12:.LANCHOR0 + add x1, x21, :lo12:.LANCHOR3 + ldrb w20, [x19, 384] + ldrh w27, [x19, 386] + ldr x3, [x2, 3384] + ldrh w28, [x1, 1410] + ldr w0, [x3, 4] add w0, w0, 1 - str w0, [x1,4] - ldr w0, [x29,124] - str w0, [x26,384] - ldr x0, [x2,3392] - ldrb w1, [x2,3360] - ldrh w27, [x26,642] - ldr w0, [x0,4] + str w0, [x3, 4] + ldr x0, [x19, 376] + str w26, [x0] + ldr x3, [x2, 3384] + ldr x0, [x19, 376] + ldrb w1, [x1, 1946] + ldr w3, [x3, 4] + str w3, [x0, 4] lsl w1, w1, 9 - str w0, [x26,388] - ldr x0, [x26,648] + ldr x3, [x19, 376] + ldr x0, [x19, 392] + stp x2, x3, [x29, 96] bl js_hash - ldr x3, [x29,104] - ldr x2, [x29,112] - str w0, [x3,8] + ldp x2, x3, [x29, 96] + str w0, [x3, 8] adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2589 - ldr x3, [x2,3392] - mov x0, x24 - ldrb w1, [x26,640] - ldrh w2, [x26,642] - ldr w3, [x3,4] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2631 + ldr x0, [x2, 3384] + ldrb w1, [x19, 384] + ldrh w2, [x19, 386] + ldr w3, [x0, 4] + adrp x0, .LC186 + add x0, x0, :lo12:.LC186 bl printk -.L2589: - add x1, x22, :lo12:.LANCHOR3 - ldrh w0, [x26,642] - ldrh w1, [x1,1384] +.L2631: + add x1, x21, :lo12:.LANCHOR3 + ldrh w0, [x19, 386] + ldrh w1, [x1, 1376] cmp w1, w0 - bhi .L2590 - adrp x19, .LC0 - add x19, x19, :lo12:.LC0 -.L2595: - ldrb w1, [x26,641] - add w1, w1, 1 - uxtb w1, w1 - strb w1, [x26,641] - cmp w1, 7 - bls .L2591 - mov x1, 0 -.L2594: - add x0, x20, :lo12:.LANCHOR0 - uxth w25, w1 - ldr x2, [x0,1128] - add w0, w1, 8 - add x0, x2, w0, sxtw - ldrb w2, [x0,32] - add w0, w2, 127 - uxtb w0, w0 - cmp w0, 125 - bhi .L2592 - mov x1, x23 + bhi .L2632 + add x20, x23, :lo12:.LANCHOR0 +.L2639: + ldrb w0, [x19, 385] + add w0, w0, 1 + and w0, w0, 255 + strb w0, [x19, 385] + cmp w0, 7 + bls .L2633 + mov x0, 0 +.L2638: + ldr x2, [x20, 1048] + add w1, w0, 8 + and w25, w0, 65535 + add x1, x2, w1, sxtw + ldrb w2, [x1, 32] + add w1, w2, 127 + and w1, w1, 255 + cmp w1, 125 + bhi .L2634 + mov x1, x24 mov w2, 846 - mov x0, x19 - bl printk - bl dump_stack - b .L2593 -.L2592: - cmp w2, 255 - bne .L2593 - add x1, x1, 1 - cmp x1, 8 - bne .L2594 - mov w25, w1 -.L2593: - strb w25, [x26,641] - mov w25, 1 -.L2591: - add x28, x20, :lo12:.LANCHOR0 - ldrb w1, [x26,641] - ldr x0, [x28,1128] - add x1, x0, x1 - ldrb w1, [x1,40] - strb w1, [x26,640] - cmp w1, 255 - beq .L2595 - add x0, x22, :lo12:.LANCHOR3 - ldrh w19, [x0,1418] - mov w0, 0 - mul w19, w1, w19 - mov w1, w19 - bl flash_erase_block - ldr x2, [x26,648] - mov w1, w19 - ldrb w4, [x28,3360] - mov w0, 0 - add x3, x26, 384 - add w19, w19, 1 - bl ftl_prog_page - mov w0, 1 - strh w0, [x26,642] - b .L2596 -.L2590: - madd w19, w19, w28, w27 - cbnz w0, .L2596 - mov w1, w19 - bl flash_erase_block -.L2596: - add x4, x20, :lo12:.LANCHOR0 - ldr x2, [x26,648] - mov w1, w19 - mov w0, 0 - add x3, x26, 384 - ldrb w4, [x4,3360] - bl ftl_prog_page - cmn w0, #1 - ldrh w1, [x26,642] - add w1, w1, 1 - strh w1, [x26,642] - beq .L2597 - ldrb w0, [x26,656] - cbz w0, .L2598 -.L2597: - strb wzr, [x26,656] - b .L2599 -.L2598: - cbnz w25, .L2600 -.L2608: - add x21, x21, :lo12:.LANCHOR5 - ldrb w0, [x21,640] - cmp w0, 255 - bne .L2602 - adrp x1, .LANCHOR4 adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 890 - add x1, x1, 576 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L2602 -.L2600: - ldrb w19, [x26,641] - adrp x23, .LANCHOR4 +.L2637: + strb w25, [x19, 385] + mov w25, 1 +.L2633: + ldrb w1, [x19, 385] + ldr x0, [x20, 1048] + add x0, x0, x1 + ldrb w0, [x0, 40] + strb w0, [x19, 384] + cmp w0, 255 + beq .L2639 + add x27, x21, :lo12:.LANCHOR3 + ldrh w20, [x27, 1410] + mul w20, w20, w0 + mov w0, 0 + mov w1, w20 + bl flash_erase_block + ldrb w4, [x27, 1946] + mov w1, w20 + ldr x3, [x19, 376] + mov w0, 0 + ldr x2, [x19, 392] + add w20, w20, 1 + bl ftl_prog_page + mov w0, 1 + strh w0, [x19, 386] +.L2640: + add x0, x21, :lo12:.LANCHOR3 + ldr x3, [x19, 376] + ldr x2, [x19, 392] + mov w1, w20 + ldrb w4, [x0, 1946] + mov w0, 0 + bl ftl_prog_page + cmn w0, #1 + ldrh w1, [x19, 386] + add w1, w1, 1 + strh w1, [x19, 386] + beq .L2641 + ldrb w0, [x19, 400] + cbz w0, .L2642 +.L2641: + strb wzr, [x19, 400] + b .L2643 +.L2634: + cmp w2, 255 + bne .L2637 + add x0, x0, 1 + cmp x0, 8 + bne .L2638 + mov w25, w0 + b .L2637 +.L2632: + madd w20, w20, w28, w27 + cbnz w0, .L2640 + mov w1, w20 + bl flash_erase_block + b .L2640 +.L2642: + cbnz w25, .L2644 +.L2652: + add x22, x22, :lo12:.LANCHOR5 + ldrb w0, [x22, 384] + cmp w0, 255 + bne .L2646 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 592 + mov w2, 890 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L2646: + ldp x19, x20, [sp, 16] + mov w0, 0 + 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 +.L2644: + ldrb w19, [x19, 385] + adrp x20, .LANCHOR4 + add x20, x20, :lo12:.LANCHOR4 adrp x24, .LC0 - add x23, x23, :lo12:.LANCHOR4 add w19, w19, 1 + add x20, x20, 592 add x24, x24, :lo12:.LC0 - add x23, x23, 576 -.L2603: +.L2647: cmp w19, 7 - bhi .L2608 - add x0, x20, :lo12:.LANCHOR0 - ldr x1, [x0,1128] + bhi .L2652 + add x0, x23, :lo12:.LANCHOR0 + ldr x1, [x0, 1048] add w0, w19, 8 add x0, x1, w0, sxtw - ldrb w25, [x0,32] + ldrb w25, [x0, 32] add w0, w25, 127 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 125 - bhi .L2604 - mov x1, x23 + bhi .L2648 + mov x1, x20 mov w2, 881 mov x0, x24 bl printk bl dump_stack - b .L2605 -.L2604: - cmp w25, 255 - beq .L2606 -.L2605: - add x0, x22, :lo12:.LANCHOR3 - ldrh w1, [x0,1418] +.L2649: + add x0, x21, :lo12:.LANCHOR3 + ldrh w1, [x0, 1410] mov w0, 0 - mul w1, w25, w1 + mul w1, w1, w25 bl flash_erase_block -.L2606: + b .L2650 +.L2648: + cmp w25, 255 + bne .L2649 +.L2650: add w19, w19, 1 - uxth w19, w19 - b .L2603 -.L2602: - 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 - ret + and w19, w19, 65535 + b .L2647 .size ftl_info_flush, .-ftl_info_flush .align 2 .global ftl_info_blk_init @@ -16686,544 +16591,533 @@ ftl_info_blk_init: mov w0, 1 mov w2, 16384 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR0 - stp x21, x22, [sp,32] - add x19, x20, :lo12:.LANCHOR0 - adrp x22, .LANCHOR5 - add x21, x22, :lo12:.LANCHOR5 - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x23, x24, [sp,48] - strb w0, [x21,656] - adrp x25, .LC187 - ldrh w1, [x19,1088] - adrp x27, .LANCHOR3 - strb w0, [x21,658] - add x26, x21, 384 - ldr x0, [x21,648] - adrp x28, .LANCHOR2 - str x0, [x19,1096] - add x25, x25, :lo12:.LC187 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x21, x22, [sp, 32] + add x22, x19, :lo12:.LANCHOR0 + adrp x21, .LANCHOR5 + add x20, x21, :lo12:.LANCHOR5 + stp x25, x26, [sp, 64] + adrp x26, .LC187 + stp x27, x28, [sp, 80] + add x26, x26, :lo12:.LC187 + stp x23, x24, [sp, 48] + mov w27, 21574 + strb w0, [x20, 400] + movk w27, 0x494c, lsl 16 + strb w0, [x20, 402] + ldrh w1, [x22, 1096] + ldr x0, [x20, 392] + strb wzr, [x20, 401] + str x0, [x22, 1104] add x1, x0, x1, lsl 2 - str x1, [x19,3392] + str x1, [x22, 3384] mov w1, 0 - strb wzr, [x21,657] bl ftl_memset - ldr x0, [x21,664] - mov w1, 0 + ldr x0, [x20, 408] mov w2, 16384 + mov w1, 0 bl ftl_memset - strb wzr, [x21,641] - ldr x0, [x19,1128] - mov w19, 7 - strh wzr, [x21,642] - ldrb w0, [x0,40] - strb w0, [x21,640] -.L2626: - add x6, x20, :lo12:.LANCHOR0 - add w0, w19, 8 - sxth w24, w19 - ldr x1, [x6,1128] + strb wzr, [x20, 385] + ldr x0, [x22, 1048] + adrp x22, .LANCHOR3 + add x22, x22, :lo12:.LANCHOR3 + strh wzr, [x20, 386] + ldrb w0, [x0, 40] + strb w0, [x20, 384] + mov w20, 7 +.L2668: + add x0, x19, :lo12:.LANCHOR0 + sxth w24, w20 + ldr x1, [x0, 1048] + add w0, w20, 8 add x0, x1, w0, sxtw - ldrb w0, [x0,32] + ldrb w0, [x0, 32] cmp w0, 255 - beq .L2622 - add x1, x27, :lo12:.LANCHOR3 - ldrb w4, [x6,3360] - ldr x2, [x21,648] - mov x3, x26 - str x6, [x29,104] - ldrh w23, [x1,1418] - mul w23, w0, w23 - mov w0, 0 - mov w1, w23 - bl ftl_read_page - cmn w0, #1 - mov w5, w0 - ldr x6, [x29,104] - bne .L2623 - ldr x2, [x21,648] - mov w0, 0 - ldrb w4, [x6,3360] - add w1, w23, 1 - mov x3, x26 - bl ftl_read_page - mov w5, w0 -.L2623: - ldr w0, [x28,#:lo12:.LANCHOR2] - tbz x0, 12, .L2624 - add x0, x20, :lo12:.LANCHOR0 - mov w2, w5 - mov w1, w19 - mov w3, 749 - str x5, [x29,104] - ldr x4, [x0,3392] - mov x0, x25 - ldr w4, [x4] - bl printk - ldr x5, [x29,104] -.L2624: - cmn w5, #1 - beq .L2622 - add x0, x20, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldr w1, [x0] - mov w0, 21574 - movk w0, 0x494c, lsl 16 - cmp w1, w0 - beq .L2636 -.L2622: - sub w19, w19, #1 - cmn w19, #1 - bne .L2626 + bne .L2667 +.L2672: + sub w20, w20, #1 + cmn w20, #1 + bne .L2668 mov w24, 0 - b .L2625 -.L2636: - mov w19, w24 -.L2625: +.L2669: adrp x23, .LANCHOR2 - ldr w0, [x23,#:lo12:.LANCHOR2] - tbz x0, 12, .L2627 - add x0, x20, :lo12:.LANCHOR0 - mov w1, w19 + ldr w0, [x23, #:lo12:.LANCHOR2] + tbz x0, 12, .L2673 + add x0, x19, :lo12:.LANCHOR0 mov w2, 4800 - ldr x3, [x0,3392] + mov w1, w20 + ldr x0, [x0, 3384] + ldr w3, [x0] adrp x0, .LC188 add x0, x0, :lo12:.LC188 - ldr w3, [x3] bl printk -.L2627: - cmn w19, #1 - bne .L2628 - add x22, x22, :lo12:.LANCHOR5 +.L2673: + cmn w20, #1 + bne .L2674 + add x21, x21, :lo12:.LANCHOR5 + add x19, x19, :lo12:.LANCHOR0 mov w1, 0 - add x20, x20, :lo12:.LANCHOR0 mov w2, 16384 - ldr x0, [x22,648] + ldr x0, [x21, 392] bl ftl_memset - ldr x1, [x20,3392] - mov w0, 21574 - movk w0, 0x494c, lsl 16 - str w0, [x1] - mov w0, 36 - movk w0, 0x6, lsl 16 - ldr x1, [x20,3392] - str w0, [x1,12] - b .L2653 -.L2628: - add x0, x20, :lo12:.LANCHOR0 - add x21, x22, :lo12:.LANCHOR5 - add x19, x21, 384 - mov w4, 4 - mov x3, x19 - adrp x27, .LC189 - ldr x1, [x0,1128] - add w0, w24, 8 - ldr x2, [x21,648] - add x0, x1, w0, sxtw - ldrb w1, [x0,32] + ldr x0, [x19, 3384] + mov w1, 21574 + movk w1, 0x494c, lsl 16 + str w1, [x0] + mov w1, 36 + movk w1, 0x6, lsl 16 + ldr x0, [x19, 3384] + str w1, [x0, 12] + mov w0, w20 +.L2666: + 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 +.L2667: + add x28, x21, :lo12:.LANCHOR5 + ldrh w25, [x22, 1410] + ldrb w4, [x22, 1946] + ldr x3, [x28, 376] + ldr x2, [x28, 392] + mul w25, w25, w0 mov w0, 0 - strb w24, [x21,641] + mov w1, w25 + bl ftl_read_page + mov w23, w0 + cmn w0, #1 + bne .L2670 + ldrb w4, [x22, 1946] + add w1, w25, 1 + ldr x3, [x28, 376] + mov w0, 0 + ldr x2, [x28, 392] + bl ftl_read_page + mov w23, w0 +.L2670: + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2671 + add x0, x19, :lo12:.LANCHOR0 + mov w3, 749 + mov w2, w23 + mov w1, w20 + ldr x0, [x0, 3384] + ldr w4, [x0] + mov x0, x26 + bl printk +.L2671: + cmn w23, #1 + beq .L2672 + add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0, 3384] + ldr w0, [x0] + cmp w0, w27 + bne .L2672 + mov w20, w24 + b .L2669 +.L2674: + add x0, x19, :lo12:.LANCHOR0 + add x20, x21, :lo12:.LANCHOR5 + adrp x22, .LANCHOR3 + add x22, x22, :lo12:.LANCHOR3 + mov w4, 4 + mov w28, 21574 + ldr x1, [x0, 1048] + add w0, w24, 8 + ldr x3, [x20, 376] + adrp x27, .LC189 + ldr x2, [x20, 392] add x27, x27, :lo12:.LC189 - strb w1, [x21,640] + add x0, x1, w0, sxtw + strb w24, [x20, 385] + movk w28, 0x494c, lsl 16 + ldrb w1, [x0, 32] + mov w0, 0 + strb w1, [x20, 384] bl flash_get_last_written_page sxth w25, w0 add w0, w0, 1 - ldrb w26, [x21,640] - uxth w24, w0 - adrp x0, .LANCHOR3+1418 - ldrh w0, [x0,#:lo12:.LANCHOR3+1418] - mul w26, w26, w0 - b .L2630 -.L2653: - mov w0, w19 - b .L2629 -.L2635: - add x28, x20, :lo12:.LANCHOR0 - ldr x2, [x21,648] + ldrb w26, [x20, 384] + and w24, w0, 65535 + ldrh w0, [x22, 1410] + madd w26, w26, w0, w25 +.L2676: + tbnz w25, #31, .L2680 + ldrb w4, [x22, 1946] + mov w1, w26 + ldr x3, [x20, 376] mov w0, 0 - add w1, w25, w26 - mov x3, x19 - ldrb w4, [x28,3360] + ldr x2, [x20, 392] bl ftl_read_page cmn w0, #1 - bne .L2654 -.L2631: - sub w25, w25, #1 - sxth w25, w25 -.L2630: - tbz w25, #31, .L2635 - b .L2634 -.L2654: - ldr x0, [x28,3392] - ldr w1, [x0] - mov w0, 21574 - movk w0, 0x494c, lsl 16 - cmp w1, w0 - bne .L2631 - ldr w2, [x19,8] - cbnz w2, .L2632 -.L2634: - add x22, x22, :lo12:.LANCHOR5 - add x20, x20, :lo12:.LANCHOR0 - strh w24, [x22,642] + beq .L2677 + add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0, 3384] + ldr w0, [x0] + cmp w0, w28 + bne .L2677 + ldr x0, [x20, 376] + ldr w2, [x0, 8] + cbnz w2, .L2678 +.L2680: + add x21, x21, :lo12:.LANCHOR5 + add x19, x19, :lo12:.LANCHOR0 + strh w24, [x21, 386] bl ftl_tmp_into_update - ldr x1, [x20,3392] - ldr w0, [x1,64] + ldr x1, [x19, 3384] + ldr w0, [x1, 64] add w0, w0, 1 - str w0, [x1,64] + str w0, [x1, 64] mov w0, 0 bl ftl_info_flush mov w0, 0 bl ftl_info_flush - ldr w0, [x23,#:lo12:.LANCHOR2] - and w19, w0, 16384 - tbz x0, 14, .L2653 - ldr x1, [x20,3392] - adrp x0, .LC190 - add x0, x0, :lo12:.LC190 - ldr w1, [x1,156] - bl printk + ldr w0, [x23, #:lo12:.LANCHOR2] + tbnz x0, 14, .L2679 +.L2696: mov w0, 0 - b .L2629 -.L2632: - ldrb w1, [x28,3360] - ldr x0, [x21,648] + b .L2666 +.L2678: + ldr x0, [x20, 392] + ldrb w1, [x22, 1946] + str w2, [x29, 108] lsl w1, w1, 9 - str x2, [x29,104] bl js_hash - ldr x2, [x29,104] + ldr w2, [x29, 108] cmp w2, w0 - beq .L2634 - ldr w1, [x19,8] + beq .L2680 + ldr x0, [x20, 376] + ldr w1, [x0, 8] mov x0, x27 bl printk - b .L2631 -.L2629: - 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 +.L2677: + sub w25, w25, #1 + sub w26, w26, #1 + sxth w25, w25 + b .L2676 +.L2679: + ldr x0, [x19, 3384] + ldr w1, [x0, 156] + adrp x0, .LC190 + add x0, x0, :lo12:.LC190 + bl printk + b .L2696 .size ftl_info_blk_init, .-ftl_info_blk_init .align 2 .global ftl_ext_info_flush .type ftl_ext_info_flush, %function ftl_ext_info_flush: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - str x25, [sp,64] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] bl timer_get_time mov w1, 100 - adrp x21, .LANCHOR0 udiv w0, w0, w1 - add x1, x21, :lo12:.LANCHOR0 - ldr x1, [x1,1120] - ldr w3, [x1,520] + add x1, x19, :lo12:.LANCHOR0 + ldr x1, [x1, 1128] + ldr w3, [x1, 520] cmp w0, w3 - bls .L2656 - ldr w2, [x1,12] + bls .L2698 + ldr w2, [x1, 12] sub w2, w2, w3 add w2, w2, w0 - str w2, [x1,12] - b .L2669 -.L2656: - bcs .L2657 -.L2669: - str w0, [x1,520] -.L2657: - adrp x23, .LANCHOR4 - adrp x22, .LANCHOR5 - add x23, x23, :lo12:.LANCHOR4 - add x22, x22, :lo12:.LANCHOR5 + str w2, [x1, 12] +.L2712: + str w0, [x1, 520] + b .L2699 +.L2698: + bcc .L2712 +.L2699: + adrp x22, .LANCHOR4 + add x22, x22, :lo12:.LANCHOR4 + add x19, x19, :lo12:.LANCHOR0 + add x22, x22, 608 mov w0, 0 - add x23, x23, 592 - add x24, x22, 384 bl ftl_total_vpn_update -.L2661: - add x0, x21, :lo12:.LANCHOR0 - adrp x3, .LANCHOR3 - add x2, x3, :lo12:.LANCHOR3 - mov x19, x3 - ldr x0, [x0,3392] - ldr w1, [x0,56] - add w1, w1, 1 - str w1, [x0,56] - ldrh w1, [x0,140] - ldrh w0, [x2,1384] +.L2700: + adrp x23, .LANCHOR3 +.L2703: + ldr x1, [x19, 3384] + ldr w0, [x1, 56] + add w0, w0, 1 + str w0, [x1, 56] + add x0, x23, :lo12:.LANCHOR3 + ldrh w1, [x1, 140] + ldrh w0, [x0, 1376] cmp w1, w0 - bcc .L2659 + bcc .L2701 bl ftl_ext_alloc_new_blk -.L2659: - add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w1, [x0,130] +.L2701: + ldr x0, [x19, 3384] + ldrh w1, [x0, 130] mov w0, 65535 cmp w1, w0 - bne .L2660 - adrp x0, .LC0 - mov x1, x23 + bne .L2702 + mov x1, x22 mov w2, 2211 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2660: - add x20, x21, :lo12:.LANCHOR0 - add x3, x19, :lo12:.LANCHOR3 +.L2702: + add x25, x23, :lo12:.LANCHOR3 + ldr x1, [x19, 3384] + ldrb w20, [x19, 1205] mov w0, 24 - ldr x4, [x20,3392] - ldrb w1, [x20,1257] - ldrh w19, [x3,1312] - ldrh w2, [x4,130] - sub w1, w0, w1 - sub w1, w1, w19 - mov w19, 1 - asr w25, w2, w1 - lsl w1, w19, w1 - sub w19, w1, #1 - ldrh w0, [x4,140] - and w2, w19, w2 - ldrh w19, [x3,1418] + adrp x24, .LANCHOR5 + add x21, x24, :lo12:.LANCHOR5 + sub w20, w0, w20 + ldrh w0, [x25, 1304] + ldrh w2, [x1, 130] + sub w0, w20, w0 + mov w20, 1 + lsl w20, w20, w0 + sub w20, w20, #1 + asr w26, w2, w0 + and w20, w20, w2 + ldrh w0, [x1, 140] + sxth w20, w20 + ldrh w2, [x25, 1410] mov w1, 0 - sxth w2, w2 - madd w19, w2, w19, w0 - ldrb w2, [x20,3360] - mov x0, x24 + madd w20, w20, w2, w0 + ldr x0, [x21, 376] + ldrb w2, [x25, 1946] lsl w2, w2, 1 bl ftl_memset - str wzr, [x24] - ldr x0, [x20,3392] - ldrb w1, [x20,3360] - ldr w0, [x0,56] + ldr x0, [x21, 376] + str wzr, [x0] + ldr x1, [x19, 3384] + ldr x0, [x21, 376] + ldr w1, [x1, 56] + str w1, [x0, 4] + ldrb w1, [x25, 1946] + ldr x0, [x21, 408] + ldr x27, [x21, 376] lsl w1, w1, 9 - str w0, [x24,4] - ldr x0, [x22,664] bl js_hash - str w0, [x24,8] - ldr x2, [x22,664] - mov w1, w19 - ldrb w4, [x20,3360] - mov w0, w25 - mov x3, x24 + ldr x2, [x21, 408] + mov w1, w20 + ldrb w4, [x25, 1946] + ldr x3, [x21, 376] + str w0, [x27, 8] + mov w0, w26 bl ftl_prog_page - ldr x1, [x20,3392] - ldrh w2, [x1,140] - add w2, w2, 1 - uxth w2, w2 - strh w2, [x1,140] - cmp w2, 1 - beq .L2661 + ldr x2, [x19, 3384] + ldrh w1, [x2, 140] + add w1, w1, 1 + and w1, w1, 65535 + strh w1, [x2, 140] + cmp w1, 1 + beq .L2703 cmn w0, #1 - beq .L2662 - ldrb w0, [x22,658] - cbz w0, .L2663 -.L2662: -.L2658: - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - strb wzr, [x0,658] - b .L2661 -.L2663: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] - ldp x29, x30, [sp], 80 + beq .L2704 + ldrb w0, [x21, 402] + cbz w0, .L2705 +.L2704: + add x24, x24, :lo12:.LANCHOR5 + strb wzr, [x24, 402] + b .L2700 +.L2705: + mov w0, 0 + 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 ftl_ext_info_flush, .-ftl_ext_info_flush .align 2 .global ftl_ext_info_init .type ftl_ext_info_init, %function ftl_ext_info_init: - stp x29, x30, [sp, -112]! + stp x29, x30, [sp, -128]! mov w4, 4 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - adrp x20, .LANCHOR5 - stp x21, x22, [sp,32] - add x22, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] adrp x21, .LANCHOR3 - stp x25, x26, [sp,64] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] - add x1, x21, :lo12:.LANCHOR3 - add x3, x20, :lo12:.LANCHOR5 - ldr x0, [x22,3392] - add x3, x3, 384 - ldrb w2, [x22,1257] - strh wzr, [x1,1952] - ldrh w23, [x0,130] + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x22, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + add x2, x21, :lo12:.LANCHOR3 + stp x27, x28, [sp, 80] + adrp x25, .LANCHOR5 + ldr x0, [x22, 3384] + ldrb w20, [x22, 1205] + strh wzr, [x2, 1944] + ldrh w1, [x0, 130] mov w0, 24 - ldrh w1, [x1,1312] - sub w0, w0, w2 - ldr x2, [x3,280] - sub w0, w0, w1 - mov w1, 1 - asr w26, w23, w0 - lsl w0, w1, w0 - sub w0, w0, #1 - and w23, w0, w23 - uxtb w28, w26 - mov w1, w23 - mov w0, w28 + sub w0, w0, w20 + ldrh w20, [x2, 1304] + sub w0, w0, w20 + mov w20, 1 + asr w24, w1, w0 + and w27, w24, 255 + lsl w20, w20, w0 + add x0, x25, :lo12:.LANCHOR5 + sub w20, w20, #1 + and w20, w20, w1 + ldr x3, [x0, 376] + mov w1, w20 + ldr x2, [x0, 408] + mov w0, w27 bl flash_get_last_written_page - sxth w25, w0 + sxth w23, w0 adrp x0, .LANCHOR2 - str x0, [x29,104] - mov w24, w25 - ldr w1, [x0,#:lo12:.LANCHOR2] - tbz x1, 12, .L2671 - ldr x5, [x22,3392] + stp x0, x25, [x29, 112] + ldr w1, [x0, #:lo12:.LANCHOR2] + tbz x1, 12, .L2714 + ldr x0, [x22, 3384] adrp x1, .LANCHOR4 - adrp x0, .LC191 add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC191 - add x1, x1, 616 - ldrh w5, [x5,130] + and w4, w24, 65535 + mov w3, w23 mov w2, 2256 - mov w3, w25 - uxth w4, w26 + add x1, x1, 632 + ldrh w5, [x0, 130] + adrp x0, .LC191 + add x0, x0, :lo12:.LC191 bl printk -.L2671: - add x20, x20, :lo12:.LANCHOR5 - adrp x27, .LC192 - mov w22, w25 - add x26, x20, 384 - add x27, x27, :lo12:.LC192 -.L2672: - tbnz w22, #31, .L2677 - add x0, x21, :lo12:.LANCHOR3 - add x5, x19, :lo12:.LANCHOR0 - ldr x2, [x20,664] - mov x3, x26 - str x5, [x29,96] - ldrh w1, [x0,1418] - mov w0, w28 - ldrb w4, [x5,3360] - madd w1, w23, w1, w22 +.L2714: + adrp x26, .LC192 + and w22, w23, 65535 + add x25, x21, :lo12:.LANCHOR3 + add x26, x26, :lo12:.LC192 + mov w24, 0 +.L2715: + sub w0, w22, w24 + tbnz x0, 15, .L2720 + ldr x0, [x29, 120] + sub w1, w23, w24 + ldrb w4, [x25, 1946] + add x28, x0, :lo12:.LANCHOR5 + ldrh w0, [x25, 1410] + ldr x3, [x28, 376] + madd w1, w0, w20, w1 + ldr x2, [x28, 408] + mov w0, w27 bl flash_read_page_en cmp w0, 512 - beq .L2673 - cmn w0, #1 - beq .L2673 - ldr x5, [x29,96] - ldr x0, [x5,1120] - ldr w1, [x0] - mov w0, 20038 - movk w0, 0x4549, lsl 16 - cmp w1, w0 - bne .L2673 - ldr w2, [x26,8] - cbnz w2, .L2674 -.L2677: + ccmn w0, #1, 4, ne + beq .L2716 + add x0, x19, :lo12:.LANCHOR0 + mov w1, 20038 + movk w1, 0x4549, lsl 16 + ldr x0, [x0, 1128] + ldr w0, [x0] + cmp w0, w1 + bne .L2716 + ldr x0, [x28, 376] + ldr w2, [x0, 8] + cbnz w2, .L2717 +.L2720: bl zftl_sblk_list_init add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w1, [x0,140] - cmp w1, w25 - bgt .L2676 - add w24, w24, 1 - strh w24, [x0,140] + ldr x0, [x0, 3384] + ldrh w1, [x0, 140] + cmp w1, w23 + bgt .L2719 + add w22, w22, 1 + strh w22, [x0, 140] bl ftl_ext_info_flush - b .L2676 -.L2674: - ldrb w1, [x5,3360] - ldr x0, [x20,664] - lsl w1, w1, 9 - str x2, [x29,96] - bl js_hash - ldr x2, [x29,96] - cmp w2, w0 - beq .L2677 - ldr w1, [x26,8] - mov x0, x27 - bl printk -.L2673: - sub w22, w22, #1 - sxth w22, w22 - b .L2672 -.L2676: +.L2719: add x19, x19, :lo12:.LANCHOR0 - ldr x20, [x19,1120] + ldr x20, [x19, 1128] bl timer_get_time mov w1, 100 udiv w0, w0, w1 - str w0, [x20,520] - ldr x20, [x19,1120] + str w0, [x20, 520] + ldr x20, [x19, 1128] bl timer_get_time - str w0, [x20,604] - ldr x0, [x19,1120] mov w1, -1 - strh w1, [x0,584] - strh w1, [x0,586] - strh w1, [x0,588] - strh w1, [x0,590] + str w0, [x20, 604] + ldr x0, [x19, 1128] + strh w1, [x0, 584] + strh w1, [x0, 586] + strh w1, [x0, 588] + strh w1, [x0, 590] mov w1, 65535 - str w1, [x0,560] + str w1, [x0, 560] mov w1, -1 - str w1, [x0,564] - ldr x1, [x29,104] - str wzr, [x0,608] - ldr w1, [x1,#:lo12:.LANCHOR2] - tbz x1, 12, .L2679 - ldr w2, [x0,520] - ldr w3, [x0,12] - str x2, [x29,96] - str x3, [x29,104] + str w1, [x0, 564] + ldr x1, [x29, 112] + str wzr, [x0, 608] + ldr w1, [x1, #:lo12:.LANCHOR2] + tbz x1, 12, .L2722 + ldr w20, [x0, 12] + ldr w19, [x0, 520] bl timer_get_time - mov w4, w0 adrp x1, .LANCHOR4 - adrp x0, .LC193 add x1, x1, :lo12:.LANCHOR4 - ldr x2, [x29,96] - ldr x3, [x29,104] + mov w4, w0 + mov w3, w20 + adrp x0, .LC193 + mov w2, w19 + add x1, x1, 632 add x0, x0, :lo12:.LC193 - add x1, x1, 616 bl printk -.L2679: +.L2722: add x21, x21, :lo12:.LANCHOR3 mov w0, -1 - ldp x19, x20, [sp,16] - ldp x23, x24, [sp,48] - strh w0, [x21,1288] + ldp x19, x20, [sp, 16] + strh w0, [x21, 1280] mov w0, 0 - ldp x21, x22, [sp,32] - ldp x25, x26, [sp,64] - ldp x27, x28, [sp,80] - ldp x29, x30, [sp], 112 + 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 +.L2717: + ldr x0, [x28, 408] + ldrb w1, [x25, 1946] + str w2, [x29, 108] + lsl w1, w1, 9 + bl js_hash + ldr w2, [x29, 108] + cmp w2, w0 + beq .L2720 + ldr x0, [x28, 376] + ldr w1, [x0, 8] + mov x0, x26 + bl printk +.L2716: + add w24, w24, 1 + b .L2715 .size ftl_ext_info_init, .-ftl_ext_info_init .align 2 .global ftl_prog_ppa_page .type ftl_prog_ppa_page, %function ftl_prog_ppa_page: - mov w8, w0 - adrp x0, .LANCHOR0+1257 stp x29, x30, [sp, -16]! - mov w5, 24 - mov x10, x1 - add x29, sp, 0 - ldrb w6, [x0,#:lo12:.LANCHOR0+1257] - mov x9, x2 - mov w4, w3 - mov x2, x10 - sub w7, w5, w6 + adrp x4, .LANCHOR0+1205 mov w5, 1 - lsl w6, w5, w6 - lsl w5, w5, w7 - lsr w0, w8, w7 - sub w6, w6, #1 - sub w1, w5, #1 - and w0, w0, w6 - and w1, w1, w8 - mov x3, x9 + add x29, sp, 0 + ldrb w6, [x4, #:lo12:.LANCHOR0+1205] + mov w4, 24 + sub w4, w4, w6 + lsl w7, w5, w4 + sub w7, w7, #1 + lsl w5, w5, w6 + sub w6, w5, #1 + lsr w5, w0, w4 + mov w4, w3 + mov x3, x2 + mov x2, x1 + and w1, w7, w0 + and w0, w6, w5 bl ftl_prog_page ldp x29, x30, [sp], 16 ret @@ -17232,599 +17126,603 @@ ftl_prog_ppa_page: .global ftl_write_last_log_page .type ftl_write_last_log_page, %function ftl_write_last_log_page: + ldrh w1, [x0, 6] + cmp w1, 1 + bne .L2737 stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - adrp x22, .LANCHOR3 - mov w19, -1 - ldrh w1, [x0,6] - add x22, x22, :lo12:.LANCHOR3 - ldrh w23, [x0,12] - cmp w1, 1 - ldr x21, [x22,1936] - bne .L2694 - mov x20, x0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR3 + add x20, x20, :lo12:.LANCHOR3 + stp x21, x22, [sp, 32] + str x23, [sp, 48] + mov x19, x0 + ldr x21, [x20, 1928] + ldrh w23, [x0, 12] bl ftl_get_new_free_page + mov w22, w0 cmn w0, #1 - mov w24, w0 - mov w19, 0 - beq .L2694 - ldrh w0, [x20] - add x23, x21, w23, uxth 2 - adrp x21, .LANCHOR5 - add x21, x21, :lo12:.LANCHOR5 + beq .L2738 + ldrh w0, [x19] + adrp x19, .LANCHOR5 + add x19, x19, :lo12:.LANCHOR5 + add x21, x21, w23, uxth 2 bl ftl_vpn_decrement - add x20, x21, 704 - mov w0, 15555 - ldrh w1, [x22,1384] - movk w0, 0xf55f, lsl 16 - str w0, [x21,704] - ldrb w0, [x22,1329] + ldr x0, [x19, 416] + mov w1, 15555 + movk w1, 0xf55f, lsl 16 + str w1, [x0] + ldrb w0, [x20, 1321] + ldrh w1, [x20, 1376] + ldr x23, [x19, 416] mul w1, w1, w0 - mov x0, x23 + mov x0, x21 lsl w1, w1, 2 bl js_hash - str w0, [x21,708] - add x1, x21, 720 + str w0, [x23, 4] mov x2, 0 mov w0, 2 - str w19, [x21,712] - str w19, [x21,716] - str w19, [x21,720] + ldr x1, [x19, 416] + stp wzr, wzr, [x1, 8] + str wzr, [x1, 16]! bl ftl_debug_info_fill - adrp x3, .LANCHOR0+3360 - mov w0, w24 - mov x1, x23 - mov x2, x20 - ldrb w3, [x3,#:lo12:.LANCHOR0+3360] + ldrb w3, [x20, 1946] + mov x1, x21 + ldr x2, [x19, 416] + mov w0, w22 bl ftl_prog_ppa_page -.L2694: - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] +.L2738: + mov w0, 0 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret +.L2737: + mov w0, -1 + ret .size ftl_write_last_log_page, .-ftl_write_last_log_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] + sub sp, sp, #224 + stp x29, x30, [sp, 48] add x29, sp, 48 - stp x21, x22, [sp,80] + stp x19, x20, [sp, 64] + and w20, w0, 65535 + stp x21, x22, [sp, 80] adrp x21, .LANCHOR0 - uxth w22, w0 add x0, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp,64] - stp x23, x24, [sp,96] - stp x25, x26, [sp,112] - stp x27, x28, [sp,128] - ldrh w0, [x0,1088] - cmp w0, w22 - bls .L2698 - adrp x20, .LANCHOR3 - add x0, x20, :lo12:.LANCHOR3 - ldrb w1, [x0,1344] - cbnz w1, .L2700 - ldrb w0, [x0,1330] - cbz w0, .L2698 -.L2700: + stp x23, x24, [sp, 96] + stp x25, x26, [sp, 112] + stp x27, x28, [sp, 128] + ldrh w0, [x0, 1096] + cmp w0, w20 + bls .L2743 + adrp x23, .LANCHOR3 + add x0, x23, :lo12:.LANCHOR3 + ldrb w1, [x0, 1336] + cbnz w1, .L2745 + ldrb w0, [x0, 1322] + cbz w0, .L2743 +.L2745: add x0, x21, :lo12:.LANCHOR0 - ldrb w1, [x0,1268] - cbnz w1, .L2698 - ldr x0, [x0,1096] - ubfiz x19, x22, 2, 16 - mov w24, 1 - add x0, x0, x19 - ldrb w0, [x0,2] + ldrb w1, [x0, 1212] + cbnz w1, .L2743 + ldr x0, [x0, 1104] + ubfiz x14, x20, 2, 16 + add x0, x0, x14 + ldrb w0, [x0, 2] and w0, w0, 224 cmp w0, 160 - bne .L2701 - add x0, x20, :lo12:.LANCHOR3 - ldrb w24, [x0,1328] -.L2701: - add x23, x29, 128 - mov w0, w22 - add x1, x23, 16 - strh w22, [x29,128] - mov w27, 0 - adrp x26, .LC195 + bne .L2767 + add x0, x23, :lo12:.LANCHOR3 + ldrb w26, [x0, 1320] +.L2746: + add x22, x29, 176 + add x24, x23, :lo12:.LANCHOR3 + mov w0, w20 + adrp x27, .LC195 + add x27, x27, :lo12:.LC195 + mov w28, 0 + strh w20, [x22, -32]! + add x1, x22, 16 bl ftl_get_blk_list_in_sblk - uxtb w0, w0 - add x1, x20, :lo12:.LANCHOR3 - strb w0, [x29,137] - strh wzr, [x29,130] - mov w28, w27 - strb wzr, [x29,133] - mov w25, w27 - ldrh w1, [x1,1384] - add x26, x26, :lo12:.LC195 - strh wzr, [x29,138] + ldrh w1, [x24, 1376] + and w0, w0, 255 + strb w0, [x29, 153] + strh wzr, [x29, 146] + strb wzr, [x29, 149] mul w0, w0, w1 - strh w0, [x29,134] + strh wzr, [x29, 154] + strh w0, [x29, 150] add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0,1096] - add x1, x0, x19 - ldrh w4, [x0,x19] - ldr w5, [x0,x19] + ldr x0, [x0, 1104] + add x1, x0, x14 + ldr w5, [x0, x14] + ldrb w2, [x1, 2] + mov w1, w20 + ldrh w4, [x0, x14] adrp x0, .LC194 - ldrb w3, [x1,2] - and w4, w4, 2047 - mov w1, w22 ubfx x5, x5, 11, 8 - ubfx x2, x3, 5, 3 add x0, x0, :lo12:.LC194 - ubfx x3, x3, 3, 2 + ubfx x3, x2, 3, 2 + and w4, w4, 2047 + ubfx x2, x2, 5, 3 bl printk mov w0, 1 bl buf_alloc mov x19, x0 -.L2702: - add x0, x20, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] + mov x11, x24 + mov w9, 0 + mov w10, 0 +.L2747: + ldrh w0, [x11, 1376] cmp w0, w28 - bls .L2726 - lsl w0, w28, 1 - add w25, w0, w28 - sub w0, w0, #1 - sub w1, w25, #1 - str w0, [x29,120] - str w1, [x29,124] - mov w25, 0 -.L2714: - ldrb w0, [x23,9] - cmp w0, w25 - bls .L2738 - sxtw x0, w25 - mov w27, 1 - str x0, [x29,112] -.L2713: - cmp w27, w24 - bhi .L2739 - ldr x0, [x29,112] - add x0, x0, 8 - ldrh w2, [x23,x0,lsl 1] + bls .L2755 + lsl w24, w28, 1 + mov w10, 0 + sub w0, w24, #1 + add w24, w24, w28 + sub w24, w24, #1 + str w0, [x29, 136] + b .L2758 +.L2767: + mov w26, 1 + b .L2746 +.L2756: + ldrh w12, [x22, x25] mov w0, 65535 - cmp w2, w0 - beq .L2704 - add x1, x20, :lo12:.LANCHOR3 - cmp w24, 3 - ldrh w0, [x1,1418] - mul w0, w2, w0 - bne .L2705 - add x3, x21, :lo12:.LANCHOR0 - ldrb w3, [x3,1269] - cbz w3, .L2706 - ldr w3, [x29,124] - b .L2737 -.L2706: - add w0, w0, w28 - orr w3, w0, w27, lsl 24 - b .L2707 -.L2705: - cmp w24, 2 - add w3, w0, w28 - bne .L2707 - ldr w3, [x29,120] -.L2737: - add w0, w0, w3 - ldrb w3, [x1,1328] - add w0, w0, w27 + cmp w12, w0 + bne .L2748 +.L2754: + add w9, w9, 1 + and w9, w9, 65535 +.L2749: + cmp w26, w9 + bcs .L2756 + add w10, w10, 1 + and w10, w10, 65535 +.L2758: + ldrb w0, [x29, 153] + cmp w0, w10 + bls .L2757 + sxtw x25, w10 + mov w9, 1 + add x25, x25, 8 + lsl x25, x25, 1 + b .L2749 +.L2748: + ldrh w3, [x11, 1410] + cmp w26, 3 + mul w3, w3, w12 + add w0, w3, w9 + bne .L2750 + add x1, x21, :lo12:.LANCHOR0 + ldrb w1, [x1, 1213] + cbz w1, .L2751 + ldrb w3, [x11, 1320] + add w0, w0, w24 +.L2781: orr w3, w0, w3, lsl 24 -.L2707: - str w3, [x19,40] - mov x0, x19 + b .L2752 +.L2751: + add w3, w28, w3 + orr w3, w3, w9, lsl 24 +.L2752: + str w3, [x19, 40] mov w1, 1 - str x2, [x29,96] - str x3, [x29,104] + str x11, [x29, 104] + mov x0, x19 + str w9, [x29, 112] + stp w12, w10, [x29, 124] + str w3, [x29, 132] bl sblk_read_page - ldr w4, [x19,52] - ldr x3, [x29,104] - cmp w4, 512 - ldr x2, [x29,96] - cset w11, eq - cmn w4, #1 - beq .L2727 - cbz w11, .L2704 -.L2727: - ldr x7, [x19,8] - ldr x0, [x19,24] - str x11, [x29,104] - ldr w1, [x7,12] + ldr w13, [x19, 52] + ldr w9, [x29, 112] + cmp w13, 512 + ldr w3, [x29, 132] + ccmn w13, #1, 4, ne + ldr x11, [x29, 104] + ldp w12, w10, [x29, 124] + bne .L2754 + ldr x1, [x19, 24] + mov w4, w13 + ldr x0, [x19, 8] + str x11, [x29, 112] + stp w9, w10, [x29, 124] + ldr w2, [x1, 12] + str w2, [sp, 32] + str w13, [x29, 132] + ldr w2, [x1, 8] + str w2, [sp, 24] + ldr w2, [x1, 4] + str w2, [sp, 16] + mov w2, w28 + ldr w1, [x1] + str w1, [sp, 8] + ldr w1, [x0, 12] str w1, [sp] - ldr w1, [x0] - str w1, [sp,8] - ldr w1, [x0,4] - str w1, [sp,16] - ldr w1, [x0,8] - str w1, [sp,24] - mov w1, w2 - mov w2, w28 - ldr w0, [x0,12] - str w0, [sp,32] - mov x0, x26 - ldr w5, [x7] - ldr w6, [x7,4] - ldr w7, [x7,8] + mov w1, w12 + ldp w5, w6, [x0] + ldr w7, [x0, 8] + mov x0, x27 bl printk - ldr x11, [x29,104] - cbnz w11, .L2726 -.L2704: - add w9, w27, 1 - uxth w27, w9 - b .L2713 -.L2739: - add w10, w25, 1 - uxth w25, w10 - b .L2714 -.L2738: - add w8, w28, 1 - uxth w28, w8 - b .L2702 -.L2726: -.L2711: + ldr w13, [x29, 132] + ldp w9, w10, [x29, 124] + cmp w13, 512 + ldr x11, [x29, 112] + bne .L2754 +.L2755: + add x24, x23, :lo12:.LANCHOR3 + mov w4, w9 + mov w3, w10 + mov w2, w28 + mov w1, w20 adrp x0, .LC196 - mov w3, w25 - mov w4, w27 - mov w2, w28 - mov w1, w22 - add x25, x21, :lo12:.LANCHOR0 add x0, x0, :lo12:.LC196 - adrp x26, .LC197 - mov w24, w28 - add x26, x26, :lo12:.LC197 bl printk - mov w27, 24 - ldrb w2, [x25,3360] + ldr x0, [x19, 8] mov w1, 0 - ldr x0, [x19,8] - mov w28, 1 + ldrb w2, [x24, 1946] + adrp x26, .LC197 + add x26, x26, :lo12:.LC197 lsl w2, w2, 9 bl ftl_memset - ldrb w2, [x25,3360] + ldr x0, [x19, 24] mov w1, 0 - ldr x0, [x19,24] + ldrb w2, [x24, 1946] lsl w2, w2, 1 bl ftl_memset -.L2715: - add x0, x20, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] - cmp w0, w24 - bls .L2721 - lsl w0, w24, 1 +.L2759: + add x24, x23, :lo12:.LANCHOR3 + ldrh w0, [x24, 1376] + cmp w0, w28 + bls .L2765 + add x0, x21, :lo12:.LANCHOR0 + lsl w27, w28, 1 mov w25, 0 - str w0, [x29,124] -.L2722: - ldrb w0, [x23,9] - cmp w0, w25 - bls .L2740 + str x0, [x29, 136] + b .L2766 +.L2750: + cmp w26, 2 + bne .L2753 + ldr w1, [x29, 136] + ldrb w3, [x11, 1320] + add w0, w1, w0 + b .L2781 +.L2753: + add w3, w28, w3 + b .L2752 +.L2757: + add w8, w28, 1 + and w28, w8, 65535 + b .L2747 +.L2764: adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L2716 - mov x0, x26 - mov w1, w24 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2760 mov w2, w25 + mov w1, w28 + mov x0, x26 bl printk -.L2716: - add x1, x20, :lo12:.LANCHOR3 +.L2760: + ldrb w1, [x24, 1336] sxtw x0, w25 - ldrb w5, [x1,1344] - ldrh w2, [x1,1418] - cbz w5, .L2717 + ldrh w2, [x24, 1410] + cbz w1, .L2761 add x0, x0, 8 - ldrh w0, [x23,x0,lsl 1] - mul w2, w0, w2 + ldrh w1, [x22, x0, lsl 1] mov x0, x19 - orr w2, w2, w24 - str w2, [x19,40] + mul w1, w1, w2 + orr w1, w1, w28 + str w1, [x19, 40] bl sblk_3d_tlc_dump_prog - b .L2718 -.L2717: - add x0, x0, 8 - ldrb w1, [x1,1328] - cmp w1, 2 - ldrh w0, [x23,x0,lsl 1] - mul w2, w0, w2 - bne .L2719 - ldr w0, [x29,124] - orr w2, w2, w0 - mov x0, x19 - orr w2, w2, 33554432 - str w2, [x19,40] - bl sblk_mlc_dump_prog - b .L2718 -.L2719: - add x4, x21, :lo12:.LANCHOR0 - orr w2, w2, w24 - str w2, [x19,40] - ldrb w0, [x4,1257] - ldrb w4, [x4,3360] - sub w1, w27, w0 - lsl w0, w28, w0 - sub w0, w0, #1 - lsr w3, w2, w1 - lsl w1, w0, w1 - and w0, w3, w0 - bic w1, w2, w1 - ldr x3, [x19,24] - ldr x2, [x19,8] - bl flash_prog_page_en -.L2718: +.L2762: add w25, w25, 1 - uxth w25, w25 - b .L2722 -.L2740: - add w24, w24, 1 - uxth w24, w24 - b .L2715 -.L2721: + and w25, w25, 65535 +.L2766: + ldrb w0, [x29, 153] + cmp w0, w25 + bhi .L2764 + add w8, w28, 1 + and w28, w8, 65535 + b .L2759 +.L2761: + add x0, x0, 8 + ldrb w1, [x24, 1320] + cmp w1, 2 + ldrh w1, [x22, x0, lsl 1] + mul w1, w1, w2 + bne .L2763 + orr w1, w1, w27 + mov x0, x19 + orr w1, w1, 33554432 + str w1, [x19, 40] + bl sblk_mlc_dump_prog + b .L2762 +.L2763: + ldr x0, [x29, 136] + mov w6, 1 + ldrb w4, [x24, 1946] + orr w1, w1, w28 + ldr x3, [x19, 24] + mov w5, 0 + str w1, [x19, 40] + ldrb w2, [x0, 1205] + mov w0, 24 + sub w0, w0, w2 + lsl w6, w6, w2 + ldr x2, [x19, 8] + sub w6, w6, #1 + lsl w7, w6, w0 + lsr w0, w1, w0 + bic w1, w1, w7 + and w0, w0, w6 + bl flash_prog_page_en + b .L2762 +.L2765: mov x0, x19 bl zbuf_free adrp x0, .LC198 - mov w1, w22 + mov w1, w20 add x0, x0, :lo12:.LC198 bl printk -.L2698: - 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 +.L2743: + 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, 224 ret .size ftl_dump_write_open_sblk, .-ftl_dump_write_open_sblk .align 2 .global gc_ink_check_sblk .type gc_ink_check_sblk, %function gc_ink_check_sblk: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - str x27, [sp,80] add x0, x19, :lo12:.LANCHOR0 - mov x20, x19 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldrh w1, [x0,5534] - ldr x21, [x0,5608] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + ldrh w1, [x0, 5526] + ldr x21, [x0, 5600] cmp w1, 3 - bhi .L2742 - adrp x0, .L2744 - add x0, x0, :lo12:.L2744 - ldrb w0, [x0,w1,uxtw] - adr x1, .Lrtx2744 - add x0, x1, w0, sxtb #2 + bhi .L2783 + adrp x0, .L2785 + mov x20, x19 + add x0, x0, :lo12:.L2785 + ldrh w0, [x0,w1,uxtw #1] + adr x1, .Lrtx2785 + add x0, x1, w0, sxth #2 br x0 -.Lrtx2744: +.Lrtx2785: .section .rodata .align 0 .align 2 -.L2744: - .byte (.L2743 - .Lrtx2744) / 4 - .byte (.L2745 - .Lrtx2744) / 4 - .byte (.L2746 - .Lrtx2744) / 4 - .byte (.L2747 - .Lrtx2744) / 4 +.L2785: + .2byte (.L2784 - .Lrtx2785) / 4 + .2byte (.L2786 - .Lrtx2785) / 4 + .2byte (.L2787 - .Lrtx2785) / 4 + .2byte (.L2788 - .Lrtx2785) / 4 .text -.L2743: +.L2784: add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x19,3380] + ldrh w0, [x19, 3372] cmp w0, 7 - bls .L2741 - ldrb w0, [x19,3362] + bls .L2782 + ldrb w0, [x19, 3353] cmp w0, 2 - bls .L2741 + bls .L2782 adrp x20, .LANCHOR3 - mov w1, 0 add x20, x20, :lo12:.LANCHOR3 - mov w22, 65535 - add x20, x20, 1408 - mov x0, x20 + add x23, x20, 1400 + mov w1, 0 + mov x0, x23 bl _list_get_gc_head_node - uxth w0, w0 + and w0, w0, 65535 + mov w22, 65535 cmp w0, w22 - beq .L2741 + beq .L2782 + ldr x1, [x19, 1104] ubfiz x0, x0, 2, 16 - ldr x1, [x19,1096] - ldrh w0, [x1,x0] + ldrh w0, [x1, x0] and w0, w0, 2047 cmp w0, 2 - bgt .L2741 + bgt .L2782 mov w0, 1 - add x21, x19, 3424 bl buf_alloc - str x0, [x19,5608] - cbz x0, .L2741 - mov x0, x20 + str x0, [x19, 5600] + add x21, x19, 3416 + cbz x0, .L2782 + add x2, x19, 3372 mov w1, 0 - add x2, x19, 3380 + mov x0, x23 bl _list_pop_index_node - uxth w20, w0 - cmp w20, w22 - bne .L2751 - ldr x0, [x19,5608] + and w14, w0, 65535 + cmp w14, w22 + bne .L2792 + ldr x0, [x19, 5600] bl zbuf_free - str xzr, [x19,5608] - b .L2741 -.L2751: - mov w0, w20 + str xzr, [x19, 5600] +.L2782: + 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 +.L2792: + mov w0, w14 add x1, x21, 2162 bl ftl_get_blk_list_in_sblk - strb w0, [x21,2155] + strb w0, [x21, 2155] mov w0, 1 - strh w20, [x19,5570] - strh w0, [x19,5534] - ubfiz x20, x20, 2, 16 - ldr x0, [x19,1096] - strh wzr, [x19,5572] - ldrb w2, [x19,3360] - ldrh w0, [x0,x20] - tbz x0, 0, .L2752 - ldr x0, [x19,5608] - mov w1, 85 - ldr x0, [x0,8] - b .L2766 -.L2752: - ldr x0, [x19,5608] - mov w1, 170 - ldr x0, [x0,8] -.L2766: + strh w0, [x19, 5526] + ldr x0, [x19, 1104] + strh w14, [x19, 5562] + ubfiz x14, x14, 2, 16 + strh wzr, [x19, 5564] + ldrb w2, [x20, 1946] + ldrh w0, [x0, x14] + tbz x0, 0, .L2793 + ldr x0, [x19, 5600] lsl w2, w2, 9 + mov w1, 85 +.L2808: + ldr x0, [x0, 8] bl ftl_memset - b .L2741 -.L2745: - add x19, x19, :lo12:.LANCHOR0 + b .L2782 +.L2793: + lsl w2, w2, 9 + mov w1, 170 + ldr x0, [x19, 5600] + b .L2808 +.L2786: + add x20, x19, :lo12:.LANCHOR0 mov w1, 0 - ldrh w0, [x19,5570] + ldrh w0, [x20, 5562] bl ftl_erase_sblk mov w0, 2 - strh w0, [x19,5534] - b .L2741 -.L2746: + strh w0, [x20, 5526] + b .L2782 +.L2787: add x19, x19, :lo12:.LANCHOR0 - mov w23, 0 - add x22, x19, 3424 - mov w20, 65535 adrp x24, .LANCHOR3 - mov w25, 24 + mov w20, 65280 + add x22, x19, 3416 + add x24, x24, :lo12:.LANCHOR3 + mov w23, 0 + movk w20, 0x55aa, lsl 16 bl sblk_wait_write_queue_completed -.L2753: - ldrb w0, [x22,2155] +.L2794: + ldrb w0, [x22, 2155] cmp w0, w23 - bls .L2767 - add x0, x22, w23, sxtw 1 - ldrh w0, [x0,2162] - cmp w0, w20 - beq .L2754 - add x1, x24, :lo12:.LANCHOR3 - mov w5, 0 - ldrh w2, [x1,1418] - ldrh w1, [x22,2148] - madd w2, w0, w2, w1 - ldr x0, [x21,8] - str w2, [x0] - mov w0, 65280 - movk w0, 0x55aa, lsl 16 - ldr x1, [x21,8] - str w0, [x1,4] - ldr x0, [x21,24] - str wzr, [x0] - mov w0, 1 - ldrb w3, [x19,1257] - ldrb w4, [x19,3360] - lsl w0, w0, w3 - sub w1, w25, w3 - sub w0, w0, #1 - lsr w3, w2, w1 - lsl w1, w0, w1 - and w0, w3, w0 - bic w1, w2, w1 - ldr x3, [x21,24] - ldr x2, [x21,8] - bl flash_prog_page_en -.L2754: - add w23, w23, 1 - uxth w23, w23 - b .L2753 -.L2767: - ldrh w0, [x22,2148] - adrp x1, .LANCHOR3+1384 + bhi .L2796 + ldrh w0, [x22, 2148] + adrp x1, .LANCHOR3+1376 add w0, w0, 1 - ldrh w1, [x1,#:lo12:.LANCHOR3+1384] - uxth w0, w0 - strh w0, [x22,2148] + ldrh w1, [x1, #:lo12:.LANCHOR3+1376] + and w0, w0, 65535 + strh w0, [x22, 2148] cmp w1, w0 - bhi .L2741 + bhi .L2782 mov w0, 3 - strh wzr, [x22,2148] - strh w0, [x22,2110] - b .L2741 -.L2747: + strh wzr, [x22, 2148] + strh w0, [x22, 2110] + b .L2782 +.L2796: + add x0, x22, w23, sxtw 1 + mov w1, 65535 + ldrh w0, [x0, 2162] + cmp w0, w1 + beq .L2795 + ldrh w2, [x22, 2148] + mov w6, 1 + ldrh w1, [x24, 1410] + mov w5, 0 + madd w1, w1, w0, w2 + ldr x0, [x21, 8] + str w1, [x0] + ldr x0, [x21, 8] + str w20, [x0, 4] + ldr x0, [x21, 24] + str wzr, [x0] + mov w0, 24 + ldrb w2, [x19, 1205] + ldrb w4, [x24, 1946] + sub w0, w0, w2 + ldr x3, [x21, 24] + lsl w6, w6, w2 + ldr x2, [x21, 8] + sub w6, w6, #1 + lsl w7, w6, w0 + lsr w0, w1, w0 + bic w1, w1, w7 + and w0, w0, w6 + bl flash_prog_page_en +.L2795: + add w23, w23, 1 + and w23, w23, 65535 + b .L2794 +.L2788: add x19, x19, :lo12:.LANCHOR0 - mov w22, 0 - add x19, x19, 3424 - mov w24, 65535 adrp x25, .LANCHOR3 - mov w26, -1 + add x19, x19, 3416 + add x25, x25, :lo12:.LANCHOR3 + mov w22, 0 + mov w26, 65535 bl sblk_wait_write_queue_completed -.L2756: - ldrb w0, [x19,2155] +.L2797: + ldrb w0, [x19, 2155] cmp w0, w22 - bls .L2768 - add x27, x19, w22, sxtw 1 - ldrh w0, [x27,2162] - add x27, x27, 16 - cmp w0, w24 - beq .L2758 - add x1, x25, :lo12:.LANCHOR3 - ldrh w23, [x1,1418] - ldrh w1, [x19,2148] - madd w23, w0, w23, w1 - str w23, [x21,40] - mov x0, x21 - mov w1, 1 - bl sblk_read_page - ldr x0, [x21,8] - ldr w0, [x0] - cmp w0, w23 - beq .L2758 - mov w0, w23 - bl ftl_mask_bad_block - strh w26, [x27,2146] -.L2758: - add w22, w22, 1 - uxth w22, w22 - b .L2756 -.L2768: - ldrh w0, [x19,2148] - adrp x1, .LANCHOR3+1384 + bhi .L2801 + ldrh w0, [x19, 2148] + adrp x1, .LANCHOR3+1376 add w0, w0, 1 - ldrh w1, [x1,#:lo12:.LANCHOR3+1384] - uxth w0, w0 - strh w0, [x19,2148] + ldrh w1, [x1, #:lo12:.LANCHOR3+1376] + and w0, w0, 65535 + strh w0, [x19, 2148] cmp w1, w0 - bhi .L2741 - ldr x0, [x19,2184] - strh wzr, [x19,2110] + bhi .L2782 + ldr x0, [x19, 2184] + strh wzr, [x19, 2110] bl zbuf_free - str xzr, [x19,2184] - ldrh w0, [x19,2112] + str xzr, [x19, 2184] + ldrh w0, [x19, 2112] cmp w0, 15 - bhi .L2761 + bhi .L2802 add w1, w0, 1 - strh w1, [x19,2112] - ldrh w1, [x19,2146] add x0, x19, w0, sxtw 1 - strh w1, [x0,2114] - b .L2762 -.L2761: - ldrh w0, [x19,2146] - bl zftl_insert_free_list -.L2762: + strh w1, [x19, 2112] + ldrh w1, [x19, 2146] + strh w1, [x0, 2114] +.L2803: add x19, x20, :lo12:.LANCHOR0 adrp x0, .LC199 add x0, x0, :lo12:.LC199 - ldrh w1, [x19,5570] - ldrh w2, [x19,5536] + ldrh w2, [x19, 5528] + ldrh w1, [x19, 5562] bl printk - b .L2741 -.L2742: - strh wzr, [x0,5534] -.L2741: - 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 + b .L2782 +.L2801: + add x24, x19, w22, sxtw 1 + add x24, x24, 16 + ldrh w0, [x24, 2146] + cmp w0, w26 + beq .L2799 + ldrh w1, [x19, 2148] + ldrh w23, [x25, 1410] + madd w23, w23, w0, w1 + mov w1, 1 + str w23, [x21, 40] + mov x0, x21 + bl sblk_read_page + ldr x0, [x21, 8] + ldr w0, [x0] + cmp w23, w0 + beq .L2799 + mov w0, w23 + bl ftl_mask_bad_block + mov w0, -1 + strh w0, [x24, 2146] +.L2799: + add w22, w22, 1 + and w22, w22, 65535 + b .L2797 +.L2802: + ldrh w0, [x19, 2146] + bl zftl_insert_free_list + b .L2803 +.L2783: + strh wzr, [x0, 5526] + b .L2782 .size gc_ink_check_sblk, .-gc_ink_check_sblk .align 2 .global ftl_ink_check_sblk @@ -17832,177 +17730,175 @@ gc_ink_check_sblk: ftl_ink_check_sblk: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 add x22, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - uxth w20, w0 - ubfiz x24, x20, 2, 16 - ldr x0, [x22,1096] + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + and w20, w0, 65535 + stp x23, x24, [sp, 48] + ubfiz x25, x20, 2, 16 + stp x27, x28, [sp, 80] mov w1, w20 - ldrh w2, [x0,x24] - ldr w3, [x0,x24] + ldr x0, [x22, 1104] + ldr w3, [x0, x25] + ldrh w2, [x0, x25] adrp x0, .LC200 add x0, x0, :lo12:.LC200 - and w2, w2, 2047 ubfx x3, x3, 11, 8 + and w2, w2, 2047 bl printk mov w0, 65535 cmp w20, w0 - beq .L2769 - ldrh w0, [x22,1088] + beq .L2809 + ldrh w0, [x22, 1096] cmp w0, w20 - bls .L2769 + bls .L2809 + add x24, x29, 144 mov w1, 0 mov w0, w20 - add x23, x29, 112 bl ftl_erase_sblk - strh w20, [x29,112] - add x1, x23, 16 mov w0, w20 + strh w20, [x24, -32]! + add x1, x24, 16 bl ftl_get_blk_list_in_sblk - strb w0, [x29,121] + strb w0, [x29, 121] mov w0, 1 bl buf_alloc mov x19, x0 - ldr x0, [x22,1096] - ldrb w2, [x22,3360] - ldrh w0, [x0,x24] + ldr x0, [x22, 1104] + adrp x22, .LANCHOR3 + ldrh w0, [x0, x25] and w0, w0, 2047 cmp w0, 1 - ldr x0, [x19,8] - bgt .L2771 - mov w1, 85 - b .L2786 -.L2771: - mov w1, 170 -.L2786: + add x0, x22, :lo12:.LANCHOR3 + ldrb w2, [x0, 1946] lsl w2, w2, 9 - adrp x26, .LANCHOR3 - mov w22, 0 - mov x27, x26 - bl ftl_memset - mov w28, 65535 - bl sblk_wait_write_queue_completed - mov w6, 24 -.L2773: - add x0, x26, :lo12:.LANCHOR3 - adrp x25, .LANCHOR3 - ldrh w0, [x0,1384] - cmp w0, w22 - bls .L2787 - mov w25, 0 - mov w7, 1 -.L2776: - ldrb w0, [x23,9] - cmp w0, w25 - bls .L2788 - add x0, x23, w25, sxtw 1 - ldrh w0, [x0,16] - cmp w0, w28 - beq .L2774 - add x1, x27, :lo12:.LANCHOR3 - add x4, x21, :lo12:.LANCHOR0 - mov w5, 0 - str x6, [x29,96] - str x7, [x29,104] - ldrh w2, [x1,1418] - madd w2, w0, w2, w22 - ldr x0, [x19,8] - str w2, [x0] - mov w0, 65280 - movk w0, 0x55aa, lsl 16 - ldr x1, [x19,8] - str w0, [x1,4] - ldr x0, [x19,24] - str wzr, [x0] - ldrb w0, [x4,1257] - ldrb w4, [x4,3360] - sub w1, w6, w0 - lsl w0, w7, w0 - sub w0, w0, #1 - lsr w3, w2, w1 - lsl w1, w0, w1 - and w0, w3, w0 - bic w1, w2, w1 - ldr x3, [x19,24] - ldr x2, [x19,8] - bl flash_prog_page_en - ldr x6, [x29,96] - ldr x7, [x29,104] -.L2774: - add w25, w25, 1 - uxth w25, w25 - b .L2776 -.L2788: - add w22, w22, 1 - uxth w22, w22 - b .L2773 -.L2787: - mov w22, 0 - mov w27, -1 -.L2777: - add x0, x25, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] - cmp w0, w22 - bls .L2789 + bgt .L2811 + mov w1, 85 +.L2827: + ldr x0, [x19, 8] + add x27, x22, :lo12:.LANCHOR3 mov w26, 0 -.L2782: - ldrb w0, [x23,9] + bl ftl_memset + bl sblk_wait_write_queue_completed + mov w9, 65280 + mov w8, 65535 + movk w9, 0x55aa, lsl 16 +.L2813: + ldrh w0, [x27, 1376] cmp w0, w26 - bls .L2790 - sxtw x28, w26 - mov w1, 65535 + bls .L2816 + mov w23, 0 + add x7, x21, :lo12:.LANCHOR0 + mov w28, 24 + b .L2817 +.L2811: + mov w1, 170 + b .L2827 +.L2815: + add x0, x24, w23, sxtw 1 + ldrh w0, [x0, 16] + cmp w0, w8 + beq .L2814 + ldrh w1, [x27, 1410] + mov w6, 1 + stp w8, w9, [x29, 96] + mov w5, 0 + str x7, [x29, 104] + madd w1, w1, w0, w26 + ldr x0, [x19, 8] + str w1, [x0] + ldr x0, [x19, 8] + str w9, [x0, 4] + ldr x0, [x19, 24] + str wzr, [x0] + ldrb w2, [x7, 1205] + ldrb w4, [x27, 1946] + sub w0, w28, w2 + ldr x3, [x19, 24] + lsl w6, w6, w2 + ldr x2, [x19, 8] + sub w6, w6, #1 + lsl w10, w6, w0 + lsr w0, w1, w0 + bic w1, w1, w10 + and w0, w0, w6 + bl flash_prog_page_en + ldp w8, w9, [x29, 96] + ldr x7, [x29, 104] +.L2814: + add w23, w23, 1 + and w23, w23, 65535 +.L2817: + ldrb w0, [x29, 121] + cmp w0, w23 + bhi .L2815 + add w26, w26, 1 + and w26, w26, 65535 + b .L2813 +.L2816: + add x22, x22, :lo12:.LANCHOR3 + mov w26, 0 + mov w27, 65535 +.L2818: + ldrh w0, [x22, 1376] + cmp w0, w26 + bls .L2823 + mov w23, 0 + b .L2824 +.L2822: + sxtw x28, w23 add x28, x28, 8 - ldrh w0, [x23,x28,lsl 1] - cmp w0, w1 - beq .L2779 - add x1, x25, :lo12:.LANCHOR3 - ldrh w3, [x1,1418] + lsl x28, x28, 1 + ldrh w0, [x24, x28] + cmp w0, w27 + beq .L2820 + ldrh w3, [x22, 1410] mov w1, 1 - madd w3, w0, w3, w22 - str w3, [x19,40] + madd w3, w3, w0, w26 mov x0, x19 - str x3, [x29,104] + str w3, [x19, 40] + str w3, [x29, 104] bl sblk_read_page - ldr x0, [x19,8] - ldr x3, [x29,104] + ldr x0, [x19, 8] + ldr w3, [x29, 104] ldr w0, [x0] - cmp w0, w3 - beq .L2779 + cmp w3, w0 + beq .L2820 mov w0, w3 bl ftl_mask_bad_block - strh w27, [x23,x28,lsl 1] -.L2779: + mov w0, -1 + strh w0, [x24, x28] +.L2820: + add w23, w23, 1 + and w23, w23, 65535 +.L2824: + ldrb w0, [x29, 121] + cmp w0, w23 + bhi .L2822 add w2, w26, 1 - uxth w26, w2 - b .L2782 -.L2790: - add w22, w22, 1 - uxth w22, w22 - b .L2777 -.L2789: - mov x0, x19 + and w26, w2, 65535 + b .L2818 +.L2823: add x21, x21, :lo12:.LANCHOR0 + mov x0, x19 bl zbuf_free - ldr x0, [x21,1096] mov w1, w20 - ldrh w2, [x0,x24] - ldr w3, [x0,x24] + ldr x0, [x21, 1104] + ldr w3, [x0, x25] + ldrh w2, [x0, x25] adrp x0, .LC201 add x0, x0, :lo12:.LC201 - and w2, w2, 2047 ubfx x3, x3, 11, 8 + and w2, w2, 2047 bl printk -.L2769: - 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] +.L2809: + 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], 144 ret .size ftl_ink_check_sblk, .-ftl_ink_check_sblk @@ -18012,185 +17908,182 @@ ftl_ink_check_sblk: ftl_alloc_sblk: stp x29, x30, [sp, -80]! cmp w0, 5 - mov w1, 2 add x29, sp, 0 - stp x21, x22, [sp,32] - uxth w21, w0 + stp x21, x22, [sp, 32] + and w21, w0, 65535 + stp x19, x20, [sp, 16] mov w22, w0 - stp x23, x24, [sp,48] - mov w0, 0 - csel w23, wzr, w1, ne + stp x23, x24, [sp, 48] mov w1, w21 - str x25, [sp,64] - stp x19, x20, [sp,16] + cset w23, eq + mov w0, 0 + str x25, [sp, 64] bl zftl_get_free_sblk - uxth w19, w0 + and w20, w0, 65535 mov w0, 65535 - mov w24, w19 - cmp w19, w0 - beq .L2793 - adrp x1, .LANCHOR0 - ubfiz x25, x19, 2, 16 - add x0, x1, :lo12:.LANCHOR0 - mov x20, x1 - ldr x21, [x0,1096] + cmp w20, w0 + beq .L2830 + adrp x0, .LANCHOR0 + add x1, x0, :lo12:.LANCHOR0 + ubfiz x25, x20, 2, 16 + lsl w23, w23, 1 + mov w24, w20 + mov x19, x0 + ldr x21, [x1, 1104] add x21, x21, x25 - ldrb w0, [x21,2] - tst w0, 224 - beq .L2794 + ldrb w1, [x21, 2] + tst w1, 224 + beq .L2831 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 656 mov w2, 1012 - add x1, x1, 640 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2794: - ldrb w3, [x21,2] - bfi w3, w22, 5, 3 - ubfx x1, x3, 3, 2 - mov w2, w3 +.L2831: + ldrb w0, [x21, 2] + bfi w0, w22, 5, 3 + ubfx x1, x0, 3, 2 orr w1, w23, w1 - bfi w2, w1, 3, 2 - strb w2, [x21,2] - cbnz w23, .L2795 - and w0, w2, 24 - cmp w0, 24 - bne .L2795 - mov w0, 1 - bfi w2, w0, 3, 2 - strb w2, [x21,2] -.L2795: - add x1, x20, :lo12:.LANCHOR0 - ldr x0, [x1,3392] - ldrh w0, [x0,150] - cbz w0, .L2796 - ldr x0, [x1,1096] - ldrh w1, [x0,x25] - and w1, w1, 2047 - orr w1, w23, w1 - cbnz w1, .L2796 + bfi w0, w1, 3, 2 + strb w0, [x21, 2] + and w1, w0, 24 + cmp w1, 24 + bne .L2832 + cbnz w23, .L2832 + mov w1, 1 + bfi w0, w1, 3, 2 + strb w0, [x21, 2] +.L2832: + add x0, x19, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldrh w1, [x1, 150] + cbz w1, .L2833 + ldr x0, [x0, 1104] + ldrh w0, [x0, x25] + tst x0, 2047 + bne .L2833 + cbnz w23, .L2833 mov w0, w24 bl ftl_ink_check_sblk - b .L2796 -.L2793: - adrp x20, .LC202 +.L2833: + mov w0, w20 + ldr x25, [sp, 64] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L2830: bl print_ftl_debug_info - add x20, x20, :lo12:.LC202 - mov w1, w19 + adrp x19, .LC202 mov w2, w22 - mov x0, x20 + add x19, x19, :lo12:.LC202 + mov w1, w20 + mov x0, x19 bl printk mov w1, w21 mov w0, 0 bl zftl_get_free_sblk - uxth w19, w0 - mov w1, w19 + and w20, w0, 65535 mov w2, w22 - mov x0, x20 + mov w1, w20 + mov x0, x19 bl printk bl dump_all_list_info adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 656 mov w2, 1031 - add x1, x1, 640 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2796: - 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 - ret + b .L2833 .size ftl_alloc_sblk, .-ftl_alloc_sblk .align 2 .global ftl_open_sblk_init .type ftl_open_sblk_init, %function ftl_open_sblk_init: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, .LC203 - adrp x22, .LANCHOR3 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + stp x23, x24, [sp, 48] + adrp x22, .LC203 + stp x19, x20, [sp, 16] + adrp x24, .LANCHOR3 + stp x25, x26, [sp, 64] mov x19, x0 - mov w21, w1 - mov w23, 65535 - add x24, x0, 16 - mov x25, x22 - add x20, x20, :lo12:.LC203 -.L2812: - mov w0, w21 + mov w23, w1 + add x25, x24, :lo12:.LANCHOR3 + add x21, x21, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LC203 +.L2843: + mov w26, 65535 +.L2844: + mov w0, w23 bl ftl_alloc_sblk - uxth w26, w0 - cmp w26, w23 - beq .L2812 + and w20, w0, 65535 + cmp w20, w26 + beq .L2844 mov w1, 0 - mov w0, w26 + mov w0, w20 bl ftl_erase_sblk - mov x1, x24 - mov w0, w26 + add x1, x19, 16 + mov w0, w20 bl ftl_get_blk_list_in_sblk - strh w26, [x19] - add x2, x22, :lo12:.LANCHOR3 - uxtb w0, w0 - strb w0, [x19,9] - cmp w21, 2 - strh wzr, [x19,2] - mov w3, 0 - ldrh w1, [x2,1384] - strb wzr, [x19,5] - strh wzr, [x19,10] + strh w20, [x19] + add x2, x24, :lo12:.LANCHOR3 + and w0, w0, 255 + strb w0, [x19, 9] + cmp w23, 2 + strh wzr, [x19, 2] + ldrh w1, [x2, 1376] + strb wzr, [x19, 5] + strh wzr, [x19, 10] + strb w23, [x19, 4] mul w0, w1, w0 - strh w0, [x19,6] - strb w21, [x19,4] - beq .L2813 - ldrb w3, [x2,1329] - mul w3, w1, w3 - uxth w3, w3 -.L2813: - add x2, x25, :lo12:.LANCHOR3 - adrp x27, .LANCHOR0 - strh w3, [x19,12] - add x27, x27, :lo12:.LANCHOR0 - ubfiz x28, x26, 1, 16 - ldr x0, [x2,1936] - add x0, x0, w3, uxth 2 - ldrb w2, [x2,1329] - mul w2, w1, w2 + strh w0, [x19, 6] + beq .L2847 + ldrb w0, [x2, 1321] + mul w0, w1, w0 + and w0, w0, 65535 +.L2845: + ldrb w2, [x25, 1321] + ubfiz x26, x20, 1, 16 + ldr x3, [x25, 1928] + strh w0, [x19, 12] + mul w2, w2, w1 + add x0, x3, w0, uxth 2 mov w1, 255 lsl w2, w2, 2 bl ftl_memset - ldr x0, [x27,1112] - ldrh w1, [x19,6] - strh w1, [x0,x28] - ldrb w0, [x19,9] - cbnz w0, .L2810 -.L2811: - mov w1, w26 - mov x0, x20 + ldr x0, [x21, 1120] + ldrh w1, [x19, 6] + strh w1, [x0, x26] + ldrb w0, [x19, 9] + cbnz w0, .L2842 + mov w1, w20 + mov x0, x22 bl printk - ldr x0, [x27,1112] + ldr x0, [x21, 1120] mov w1, -1 - strh w1, [x0,x28] + strh w1, [x0, x26] mov w0, 7 - strb w0, [x19,4] - b .L2812 -.L2810: - 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 + strb w0, [x19, 4] + b .L2843 +.L2847: + mov w0, 0 + b .L2845 +.L2842: + 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 ftl_open_sblk_init, .-ftl_open_sblk_init .align 2 @@ -18199,137 +18092,137 @@ ftl_open_sblk_init: pm_alloc_new_blk: stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] adrp x22, .LANCHOR3 - ldr x2, [x0,3392] - ldrh w1, [x2,690] - add w1, w1, 1 - uxth w0, w1 - add x1, x22, :lo12:.LANCHOR3 - strh w0, [x2,690] - ldrb w1, [x1,1329] - cmp w1, w0 - bls .L2818 - add x0, x2, w0, sxtw 1 - ldrh w1, [x0,672] + add x2, x22, :lo12:.LANCHOR3 + ldr x1, [x0, 3384] + ldrb w2, [x2, 1321] + ldrh w0, [x1, 690] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x1, 690] + cmp w2, w0 + bls .L2851 + add x0, x1, w0, sxtw 1 + ldrh w1, [x0, 672] mov w0, 65535 cmp w1, w0 - bne .L2819 -.L2818: + bne .L2852 +.L2851: adrp x23, .LC203 - mov w24, 65535 + add x20, x19, :lo12:.LANCHOR0 add x23, x23, :lo12:.LC203 -.L2820: + mov w24, 65535 +.L2853: mov w0, 1 bl ftl_alloc_sblk - uxth w21, w0 + and w21, w0, 65535 cmp w21, w24 - beq .L2820 + beq .L2853 mov w1, 0 mov w0, w21 - add x20, x19, :lo12:.LANCHOR0 bl ftl_erase_sblk + ldr x1, [x20, 3384] mov w0, w21 - ldr x1, [x20,3392] add x1, x1, 672 bl ftl_get_blk_list_in_sblk - uxth w0, w0 - cbnz w0, .L2821 + tst w0, 65535 + bne .L2854 mov w1, w21 mov x0, x23 bl printk - ldr x1, [x20,1096] - add x21, x1, w21, uxth 2 - ldrb w1, [x21,2] - orr w1, w1, -32 - strb w1, [x21,2] - b .L2820 -.L2821: - ldr x1, [x20,3392] - adrp x0, .LANCHOR5+960 + ldr x0, [x20, 1104] + add x21, x0, w21, uxth 2 + ldrb w0, [x21, 2] + orr w0, w0, -32 + strb w0, [x21, 2] + b .L2853 +.L2854: + ldr x0, [x20, 3384] + adrp x1, .LANCHOR5+424 mov w2, 1 - mov x20, 0 - str w2, [x0,#:lo12:.LANCHOR5+960] - mov w2, 65535 - strh wzr, [x1,690] -.L2823: - add x3, x1, x20, lsl 1 - uxth w0, w20 - ldrh w3, [x3,416] - cmp w3, w2 - beq .L2822 - add x20, x20, 1 - cmp x20, 128 - bne .L2823 + mov w20, 0 + add x0, x0, 416 + str w2, [x1, #:lo12:.LANCHOR5+424] + mov w1, 65535 + strh wzr, [x0, 274] +.L2856: + ldrh w2, [x0] + cmp w2, w1 + beq .L2855 + add w20, w20, 1 + add x0, x0, 2 + and w20, w20, 65535 + cmp w20, 128 + bne .L2856 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 672 mov w2, 264 - add x1, x1, 656 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - mov w0, w20 -.L2822: - add x1, x19, :lo12:.LANCHOR0 - ldr x1, [x1,3392] - add x0, x1, w0, sxtw 1 - strh w21, [x0,416] - ldrh w0, [x1,688] - add w0, w0, 1 - strh w0, [x1,688] -.L2819: +.L2855: add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x0,3392] - ldrh w0, [x1,690] + ldr x0, [x0, 3384] + add x20, x0, w20, sxtw 1 + strh w21, [x20, 416] + ldrh w1, [x0, 688] + add w1, w1, 1 + strh w1, [x0, 688] +.L2852: + add x0, x19, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldrh w0, [x1, 690] add x0, x0, 336 - ldrh w20, [x1,x0,lsl 1] + ldrh w20, [x1, x0, lsl 1] mov w0, 65533 sub w1, w20, #1 cmp w0, w1, uxth - bcs .L2825 + bcs .L2858 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 672 mov w2, 270 - add x1, x1, 656 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2825: +.L2858: add x19, x19, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR3 - mov w0, 24 - ldrb w2, [x19,1257] - ldr x1, [x19,3392] - sub w0, w0, w2 - ldrh w2, [x22,1312] - sub w0, w0, w2 - strh wzr, [x1,696] - asr w4, w20, w0 - strh w20, [x1,692] - strh w4, [x1,694] - adrp x1, .LANCHOR2 - ldr w1, [x1,#:lo12:.LANCHOR2] - tbz x1, 12, .L2829 - mov w2, 1 - mov w1, w20 - lsl w2, w2, w0 - adrp x0, .LC204 - add x0, x0, :lo12:.LC204 - sub w2, w2, #1 + mov w2, 24 + ldrb w1, [x19, 1205] + ldr x0, [x19, 3384] + sub w2, w2, w1 + ldrh w1, [x22, 1304] + sub w2, w2, w1 + strh wzr, [x0, 696] + asr w4, w20, w2 + strh w20, [x0, 692] + strh w4, [x0, 694] + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L2861 + mov w0, 1 + and w4, w4, 65535 + lsl w2, w0, w2 mov w3, w20 - uxth w4, w4 + adrp x0, .LC204 + sub w2, w2, #1 + mov w1, w20 + add x0, x0, :lo12:.LC204 bl printk -.L2829: +.L2861: mov w0, 0 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size pm_alloc_new_blk, .-pm_alloc_new_blk @@ -18339,120 +18232,115 @@ pm_alloc_new_blk: pm_write_page: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR4 + stp x21, x22, [sp, 32] mov w21, w0 - stp x23, x24, [sp,48] - add x22, x22, :lo12:.LANCHOR4 - adrp x23, .LC0 - stp x25, x26, [sp,64] - stp x19, x20, [sp,16] - stp x27, x28, [sp,80] + stp x23, x24, [sp, 48] mov x24, x1 + stp x25, x26, [sp, 64] adrp x25, .LANCHOR0 - add x23, x23, :lo12:.LC0 - add x22, x22, 680 -.L2835: + adrp x26, .LANCHOR3 + add x22, x25, :lo12:.LANCHOR0 + add x23, x26, :lo12:.LANCHOR3 + stp x19, x20, [sp, 16] + stp x27, x28, [sp, 80] +.L2869: add x0, x25, :lo12:.LANCHOR0 - adrp x19, .LANCHOR0 - ldr x0, [x0,3392] - ldr w1, [x0,48] - ldrh w3, [x0,696] + ldr x0, [x0, 3384] + ldr w1, [x0, 48] + ldrh w2, [x0, 696] add w1, w1, 1 - str w1, [x0,48] - adrp x1, .LANCHOR3 - add x2, x1, :lo12:.LANCHOR3 - mov x20, x1 - ldrh w2, [x2,1384] - cmp w3, w2 - bcs .L2836 - ldrh w1, [x0,692] + str w1, [x0, 48] + add x1, x26, :lo12:.LANCHOR3 + ldrh w1, [x1, 1376] + cmp w2, w1 + bcs .L2870 + ldrh w1, [x0, 692] mov w0, 65535 cmp w1, w0 - bne .L2837 -.L2836: + bne .L2871 +.L2870: bl pm_alloc_new_blk mov w0, 0 bl ftl_info_flush -.L2837: - add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - ldrh w1, [x0,692] +.L2871: + ldr x0, [x22, 3384] + ldrh w1, [x0, 692] mov w0, 65535 cmp w1, w0 - bne .L2838 - mov x1, x22 + bne .L2872 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 696 mov w2, 303 - mov x0, x23 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2838: - add x19, x19, :lo12:.LANCHOR0 - add x0, x20, :lo12:.LANCHOR3 - adrp x20, .LANCHOR5 - add x26, x20, :lo12:.LANCHOR5 - ldr x2, [x19,3392] - ldrh w1, [x0,1418] - ldrh w27, [x2,692] - ldrh w0, [x2,696] +.L2872: + ldr x0, [x22, 3384] + adrp x19, .LANCHOR5 + ldrh w1, [x23, 1410] + add x20, x19, :lo12:.LANCHOR5 mov w2, 64 + ldrh w27, [x0, 692] + ldrh w0, [x0, 696] madd w27, w27, w1, w0 - ldr x0, [x26,968] + ldr x0, [x20, 432] mov w1, 0 bl ftl_memset - ldr x0, [x26,968] + ldr x0, [x20, 432] str w21, [x0] - ldr x1, [x19,3392] - ldr x0, [x26,968] - ldr w1, [x1,48] - str w1, [x0,4] + ldr x1, [x22, 3384] + ldr x0, [x20, 432] + ldr w1, [x1, 48] + str w1, [x0, 4] mov x0, x24 - ldrb w1, [x19,3360] - ldr x28, [x26,968] + ldrb w1, [x23, 1946] + ldr x28, [x20, 432] lsl w1, w1, 9 bl js_hash - str w0, [x28,8] - ldr x0, [x19,3392] + ldrb w4, [x23, 1946] mov x2, x24 - ldr x3, [x26,968] + str w0, [x28, 8] mov w1, w27 - ldrb w4, [x19,3360] - ldrb w0, [x0,694] + ldr x0, [x22, 3384] + ldr x3, [x20, 432] + ldrb w0, [x0, 694] bl ftl_prog_page - ldr x3, [x19,3392] - ldrh w2, [x3,696] - add w2, w2, 1 - uxth w2, w2 - strh w2, [x3,696] - cmp w2, 1 - beq .L2839 - ldrb w1, [x26,976] - cbz w1, .L2840 -.L2839: - add x20, x20, :lo12:.LANCHOR5 - strb wzr, [x20,976] - b .L2835 -.L2840: + ldr x2, [x22, 3384] + ldrh w1, [x2, 696] + add w1, w1, 1 + and w1, w1, 65535 + strh w1, [x2, 696] + cmp w1, 1 + beq .L2873 + ldrb w1, [x20, 440] + cbz w1, .L2874 +.L2873: + add x19, x19, :lo12:.LANCHOR5 + strb wzr, [x19, 440] + b .L2869 +.L2874: cmn w0, #1 - bne .L2842 - adrp x0, .LC205 + bne .L2876 mov w1, w27 + adrp x0, .LC205 add x0, x0, :lo12:.LC205 bl printk - b .L2835 -.L2842: - ldrh w0, [x3,698] + b .L2869 +.L2876: + ldrh w0, [x2, 698] cmp w21, w0 - bcs .L2843 - add x21, x3, w21, uxtw 2 - str w27, [x21,704] -.L2843: + bcs .L2877 + add x21, x2, w21, uxtw 2 + str w27, [x21, 704] +.L2877: 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 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 pm_write_page, .-pm_write_page @@ -18460,302 +18348,292 @@ pm_write_page: .global flash_info_flush .type flash_info_flush, %function flash_info_flush: + stp x29, x30, [sp, -80]! adrp x0, .LANCHOR2 - stp x29, x30, [sp, -96]! add x29, sp, 0 - ldr w0, [x0,#:lo12:.LANCHOR2] - 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] - tbz x0, 12, .L2848 + ldr w0, [x0, #:lo12:.LANCHOR2] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + tbz x0, 12, .L2883 adrp x2, .LANCHOR4 - adrp x0, .LC138 add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 + adrp x0, .LC135 + add x2, x2, 712 mov w1, 365 - add x2, x2, 696 + add x0, x0, :lo12:.LC135 bl printk -.L2848: - adrp x22, .LANCHOR5 - adrp x23, .LANCHOR0 - add x0, x22, :lo12:.LANCHOR5 - mov w1, 0 +.L2883: + adrp x19, .LANCHOR5 + add x19, x19, :lo12:.LANCHOR5 + adrp x20, .LANCHOR0 + add x22, x20, :lo12:.LANCHOR0 mov w2, 64 - add x19, x23, :lo12:.LANCHOR0 - adrp x24, .LC207 - adrp x25, .LC208 - ldr x0, [x0,984] - mov w26, 0 - add x24, x24, :lo12:.LC207 - add x25, x25, :lo12:.LC208 + mov w1, 0 + ldr x0, [x19, 448] + adrp x23, .LC207 + mov w25, 21321 + add x23, x23, :lo12:.LC207 + mov w24, 0 + movk w25, 0x5359, lsl 16 bl ftl_memset - ldr x1, [x19,1128] + ldr x1, [x22, 1048] + mov w3, 16 + mov w2, 4 adrp x0, .LC206 add x0, x0, :lo12:.LC206 - mov w2, 4 - mov w3, 16 bl rknand_print_hex - ldr x19, [x19,1128] - add x0, x19, 16 - ldr w1, [x19,8] + ldr x21, [x22, 1048] + add x0, x21, 16 + ldr w1, [x21, 8] bl js_hash - str w0, [x19,12] -.L2849: - add x21, x22, :lo12:.LANCHOR5 - add x27, x23, :lo12:.LANCHOR0 - mov x0, x24 - ldrb w20, [x21,992] - ldrh w19, [x21,994] - mov w1, w20 - ldrh w28, [x27,2] - mov w2, w19 + str w0, [x21, 12] +.L2884: + ldrb w26, [x19, 456] + mov x0, x23 + ldrh w21, [x19, 458] + mov w1, w26 + ldrh w20, [x22, 2] + mov w2, w21 bl printk - ldrh w1, [x21,180] - ldrh w0, [x21,994] - sub w1, w1, #1 - cmp w0, w1 - blt .L2850 - ldr x1, [x27,1128] - strh wzr, [x21,994] - ldr w0, [x1,4] + ldrh w0, [x19, 172] + ldrh w1, [x19, 458] + sub w0, w0, #1 + cmp w1, w0 + blt .L2885 + ldr x1, [x22, 1048] + strh wzr, [x19, 458] + ldr w0, [x1, 4] add w0, w0, 1 - str w0, [x1,4] - ldrb w0, [x21,992] - ldr x19, [x27,1128] - ldrb w1, [x21,993] - strb w0, [x21,993] - mov x0, x19 - strb w1, [x21,992] - ldrh w1, [x19,16] + str w0, [x1, 4] + ldrb w0, [x19, 456] + ldr x21, [x22, 1048] + ldrb w1, [x19, 457] + strb w0, [x19, 457] + mov x0, x21 + strb w1, [x19, 456] + ldrh w1, [x21, 16] add w1, w1, 1 - strh w1, [x0,16]! - ldr w1, [x19,8] + strh w1, [x0, 16]! + ldr w1, [x21, 8] bl js_hash - str w0, [x19,12] - ldrb w1, [x21,992] + ldrb w20, [x19, 456] + str w0, [x21, 12] + ldrh w0, [x22, 2] + mul w20, w20, w0 +.L2894: + mov w1, w20 mov w0, 0 - ldrh w19, [x27,2] - mul w19, w1, w19 - b .L2858 -.L2850: - madd w19, w20, w28, w19 - cbnz w0, .L2851 -.L2858: - mov w1, w19 bl flash_erase_block -.L2851: - add x2, x23, :lo12:.LANCHOR0 - add x20, x22, :lo12:.LANCHOR5 - mov w4, 4 + b .L2886 +.L2889: + mov w24, 1 + b .L2884 +.L2885: + madd w20, w20, w26, w21 + cbz w1, .L2894 +.L2886: + ldr x1, [x22, 1048] mov w5, 1 - ldr x1, [x2,1128] - ldr x0, [x20,984] - ldr w1, [x1,4] + ldr x0, [x19, 448] + mov w4, 4 + ldr w1, [x1, 4] str w1, [x0] - mov w0, 21321 - movk w0, 0x5359, lsl 16 - ldr x1, [x20,984] - str w0, [x1,4] - mov w1, w19 + mov w1, w20 + ldr x0, [x19, 448] + str w25, [x0, 4] mov w0, 0 - ldr x2, [x2,1128] - ldr x3, [x20,984] + ldr x3, [x19, 448] + ldr x2, [x22, 1048] bl flash_prog_page_en cmn w0, #1 - ldrh w1, [x20,994] + ldrh w1, [x19, 458] add w1, w1, 1 - strh w1, [x20,994] - bne .L2852 - mov x0, x25 - mov w1, w19 + strh w1, [x19, 458] + bne .L2887 + mov w1, w20 + adrp x0, .LC208 + add x0, x0, :lo12:.LC208 bl printk - b .L2849 -.L2852: - cbnz w26, .L2859 - mov w26, 1 - b .L2849 -.L2859: + b .L2884 +.L2887: + cbz w24, .L2889 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 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 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]! + adrp x0, .LANCHOR2 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, .L2861 - add x4, x20, :lo12:.LANCHOR0 + ldr w0, [x0, #:lo12:.LANCHOR2] + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + tbz x0, 12, .L2896 + add x0, x22, :lo12:.LANCHOR0 adrp x2, .LANCHOR4 - adrp x0, .LC209 add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC209 - mov w1, 50 - ldr x4, [x4,1128] - add x2, x2, 720 mov w3, 2048 + add x2, x2, 736 + mov w1, 50 + ldr x4, [x0, 1048] + adrp x0, .LC209 + add x0, x0, :lo12:.LC209 bl printk -.L2861: +.L2896: + adrp x20, .LANCHOR5 + mov w25, 21321 + add x21, x20, :lo12:.LANCHOR5 + add x19, x22, :lo12:.LANCHOR0 mov w24, 4 - adrp x25, .LANCHOR5 -.L2862: + movk w25, 0x5359, lsl 16 +.L2900: mov w23, 0 -.L2865: - add x19, x20, :lo12:.LANCHOR0 - add x21, x25, :lo12:.LANCHOR5 - mov w0, 0 +.L2899: + ldrh w1, [x19, 2] mov w4, 4 - adrp x22, .LANCHOR5 - ldrh w1, [x19,2] - ldr x2, [x19,1128] - ldr x3, [x21,984] - madd w1, w24, w1, w23 + ldr x2, [x19, 1048] + mov w0, 0 + ldr x3, [x21, 448] + madd w1, w1, w24, w23 bl flash_read_page_en cmn w0, #1 - beq .L2863 - ldr x2, [x19,1128] - mov w0, 21321 - movk w0, 0x5359, lsl 16 - ldr w1, [x2] - cmp w1, w0 - beq .L2864 -.L2863: + beq .L2897 + ldr x2, [x19, 1048] + ldr w0, [x2] + cmp w0, w25 + beq .L2898 +.L2897: add w23, w23, 1 cmp w23, 4 - bne .L2865 + bne .L2899 add w24, w24, 1 cmp w24, 16 - bne .L2862 - b .L2874 -.L2864: - ldrb w1, [x2,36] - mov w4, 4 - ldrh w3, [x19,2] - strb w1, [x21,992] - ldrb w0, [x2,37] - mul w1, w1, w3 - ldr x3, [x21,984] - strb w0, [x21,993] - mov w0, 0 - mov w21, 0 - bl flash_read_page_en - cmn w0, #1 - beq .L2867 - ldr x0, [x19,1128] - mov w1, 21321 - movk w1, 0x5359, lsl 16 - mov w21, 0 - ldr w2, [x0] - cmp w2, w1 - bne .L2867 - ldr w21, [x0,4] -.L2867: - add x19, x22, :lo12:.LANCHOR5 - add x23, x20, :lo12:.LANCHOR0 - mov w0, 0 - mov w4, 4 - ldrb w2, [x19,993] - ldrh w1, [x23,2] - ldr x3, [x19,984] - mul w1, w2, w1 - ldr x2, [x23,1128] - bl flash_read_page_en - cmn w0, #1 - bne .L2891 -.L2868: - add x19, x22, :lo12:.LANCHOR5 - add x21, x20, :lo12:.LANCHOR0 - mov w0, 0 - mov w4, 4 - ldrb w1, [x19,992] - ldr x2, [x21,1128] - ldr x3, [x19,984] - bl flash_get_last_written_page - ldrh w23, [x21,2] - ldrb w1, [x19,992] - uxth w24, w0 - add w0, w24, 1 - mov w21, 0 - strh w0, [x19,994] - mul w23, w1, w23 -.L2869: - sub w19, w24, w21 - sxth w19, w19 - tbz w19, #31, .L2872 - cmn w19, #1 - bne .L2871 - add x20, x20, :lo12:.LANCHOR0 - adrp x0, .LC210 - add x0, x0, :lo12:.LC210 - ldr x1, [x20,1128] - ldr w1, [x1] - bl printk -.L2874: + bne .L2900 +.L2926: mov w0, -1 - b .L2890 -.L2891: - ldr x0, [x23,1128] - mov w1, 21321 - movk w1, 0x5359, lsl 16 - ldr w2, [x0] - cmp w2, w1 - bne .L2868 - ldr w1, [x0,4] - cmp w21, w1 - bcs .L2868 - ldrb w1, [x0,37] - ldrb w0, [x0,36] - strb w1, [x19,992] - strb w0, [x19,993] - b .L2868 -.L2872: - add x25, x20, :lo12:.LANCHOR0 - add x3, x22, :lo12:.LANCHOR5 - mov w0, 0 - add w1, w19, w23 - mov w4, 4 - ldr x2, [x25,1128] - ldr x3, [x3,984] - bl flash_read_page_en - cmn w0, #1 - beq .L2870 - ldr x0, [x25,1128] - ldr w1, [x0] - mov w0, 21321 - movk w0, 0x5359, lsl 16 - cmp w1, w0 - beq .L2871 -.L2870: - add w21, w21, 1 - b .L2869 -.L2871: - cmp w21, 1 - mov w0, 0 - bls .L2890 - bl flash_info_flush - mov w0, 0 -.L2890: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldr x25, [sp,64] +.L2895: + 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 +.L2908: + ldr x0, [x19, 1048] + ldr w1, [x0] + cmp w1, w25 + bne .L2909 + ldr w21, [x0, 4] +.L2902: + add x19, x20, :lo12:.LANCHOR5 + add x23, x22, :lo12:.LANCHOR0 + mov w4, 4 + ldrh w0, [x23, 2] + ldrb w1, [x19, 457] + ldr x3, [x19, 448] + ldr x2, [x23, 1048] + mul w1, w1, w0 + mov w0, 0 + bl flash_read_page_en + cmn w0, #1 + beq .L2903 + ldr x0, [x23, 1048] + mov w1, 21321 + movk w1, 0x5359, lsl 16 + ldr w2, [x0] + cmp w2, w1 + bne .L2903 + ldr w1, [x0, 4] + cmp w21, w1 + bcs .L2903 + ldrb w1, [x0, 37] + ldrb w0, [x0, 36] + strb w1, [x19, 456] + strb w0, [x19, 457] +.L2903: + add x21, x20, :lo12:.LANCHOR5 + add x19, x22, :lo12:.LANCHOR0 + mov w4, 4 + mov w0, 0 + mov w26, 21321 + mov x20, x19 + ldrb w1, [x21, 456] + mov w23, 0 + ldr x2, [x19, 1048] + movk w26, 0x5359, lsl 16 + ldr x3, [x21, 448] + bl flash_get_last_written_page + and w25, w0, 65535 + add w1, w25, 1 + ldrb w24, [x21, 456] + strh w1, [x21, 458] + ldrh w1, [x19, 2] + mul w24, w24, w1 + add w24, w24, w0, sxth +.L2904: + sub w0, w25, w23 + sxth w19, w0 + tbz w19, #31, .L2907 + cmn w19, #1 + bne .L2906 + add x22, x22, :lo12:.LANCHOR0 + ldr x0, [x22, 1048] + ldr w1, [x0] + adrp x0, .LC210 + add x0, x0, :lo12:.LC210 + bl printk + b .L2926 +.L2907: + ldr x2, [x20, 1048] + mov w4, 4 + ldr x3, [x21, 448] + sub w1, w24, w23 + mov w0, 0 + bl flash_read_page_en + cmn w0, #1 + beq .L2905 + ldr x0, [x20, 1048] + ldr w0, [x0] + cmp w0, w26 + beq .L2906 +.L2905: + add w23, w23, 1 + b .L2904 +.L2906: + cmp w23, 1 + bls .L2910 + bl flash_info_flush +.L2910: + mov w0, 0 + b .L2895 +.L2898: + ldrb w1, [x2, 37] + mov w4, 4 + ldrb w0, [x2, 36] + strb w1, [x21, 457] + ldrh w1, [x19, 2] + ldr x3, [x21, 448] + strb w0, [x21, 456] + mul w1, w1, w0 + mov w0, 0 + bl flash_read_page_en + cmn w0, #1 + bne .L2908 +.L2909: + mov w21, 0 + b .L2902 .size flash_info_blk_init, .-flash_info_blk_init .align 2 .global nand_flash_init @@ -18763,1240 +18641,1231 @@ flash_info_blk_init: nand_flash_init: stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 mov x19, x0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr w0, [x20,#:lo12:.LANCHOR2] - str x25, [sp,64] - tbz x0, 12, .L2893 + stp x21, x22, [sp, 32] + ldr w0, [x20, #:lo12:.LANCHOR2] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + tbz x0, 12, .L2928 adrp x2, .LANCHOR4 - adrp x0, .LC138 add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 + adrp x0, .LC135 + add x2, x2, 760 mov w1, 3450 - add x2, x2, 744 + add x0, x0, :lo12:.LC135 bl printk -.L2893: +.L2928: adrp x21, .LANCHOR5 - mov x0, x19 add x23, x21, :lo12:.LANCHOR5 + mov x0, x19 adrp x19, .LANCHOR0 add x22, x19, :lo12:.LANCHOR0 mov w25, 44 - add x24, x22, 1272 - str wzr, [x23,324] + str wzr, [x23, 332] bl nandc_init - mov w0, 1 - add x1, x20, :lo12:.LANCHOR2 - add x1, x1, 8 - strb w0, [x22,1153] - mov w0, 3 - str x1, [x22,1144] - strb w0, [x22,1257] - mov w1, 0 + add x0, x20, :lo12:.LANCHOR2 mov w2, 8 - add x0, x22, 1248 - bl ftl_memset - add x0, x23, 184 + add x0, x0, 8 + str x0, [x22, 1144] + mov w0, 1 + strb w0, [x22, 1153] + mov w0, 3 + strb w0, [x22, 1205] + add x0, x22, 1196 + add x22, x22, 1216 mov w1, 0 - mov w2, 32 - mov w23, 0 + mov x24, x22 bl ftl_memset -.L2899: + add x0, x23, 176 + mov w23, 0 + mov w2, 32 + mov w1, 0 + bl ftl_memset +.L2934: + mov x1, x22 mov w0, w23 - mov x1, x24 bl flash_read_id - cbnz w23, .L2894 - ldrb w0, [x22,1272] - add x1, x22, 1272 - sub w0, w0, #1 - uxtb w0, w0 - cmp w0, 253 - bls .L2895 -.L2897: - mov w22, -2 - b .L2977 -.L2895: - ldrb w0, [x1,1] - cmp w0, 255 - beq .L2897 -.L2894: + cbnz w23, .L2929 ldrb w0, [x24] + sub w0, w0, #1 + and w0, w0, 255 + cmp w0, 253 + bls .L2930 +.L2932: + mov w22, -2 +.L2927: + 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 + ret +.L2930: + ldrb w0, [x24, 1] + cmp w0, 255 + beq .L2932 +.L2929: + ldrb w0, [x22] cmp w0, 181 - bne .L2898 - strb w25, [x24] -.L2898: + bne .L2933 + strb w25, [x22] +.L2933: add w23, w23, 1 - add x24, x24, 8 - uxtb w23, w23 + add x22, x22, 8 + and w23, w23, 255 cmp w23, 4 - bne .L2899 - add x23, x20, :lo12:.LANCHOR2 - add x24, x19, :lo12:.LANCHOR0 - add x23, x23, 440 - mov w22, 0 - add x24, x24, 1272 -.L2902: - ldrb w2, [x23] - add x0, x23, 1 - mov x1, x24 + bne .L2934 + add x7, x20, :lo12:.LANCHOR2 + add x9, x19, :lo12:.LANCHOR0 + add x7, x7, 441 + add x9, x9, 1216 + mov x8, 0 +.L2937: + ldrb w2, [x7, -1] + mov w10, w8 + lsl x24, x8, 5 + mov x1, x9 + mov x0, x7 bl flash_mem_cmp8 - cbnz w0, .L2900 - add x1, x20, :lo12:.LANCHOR2 - ubfiz x22, x22, 5, 32 - add x0, x1, 440 - adds x22, x0, x22 - beq .L2897 - ldrb w3, [x22,22] + cbnz w0, .L2935 + add x2, x20, :lo12:.LANCHOR2 + ubfiz x10, x10, 5, 32 + add x0, x2, 440 + add x1, x2, 2008 + add x24, x0, x24 + add x0, x0, x10 + ldrb w3, [x0, 22] mov x0, 0 - b .L2904 -.L2900: - add w22, w22, 1 - add x23, x23, 32 - cmp w22, 49 - bne .L2902 - b .L2897 -.L2904: - add x4, x1, x0, lsl 5 +.L2936: + lsl x4, x0, 5 mov w2, w0 - ldrb w4, [x4,2008] + ldrb w4, [x4, x1] cmp w4, w3 - beq .L2903 + beq .L2938 add x0, x0, 1 cmp x0, 4 - bne .L2904 + bne .L2936 mov w2, w0 -.L2903: - add x23, x20, :lo12:.LANCHOR2 - add x24, x19, :lo12:.LANCHOR0 - add x1, x23, 2008 - ubfiz x2, x2, 5, 32 - add x1, x1, x2 - add x0, x24, 1160 +.L2938: + add x22, x20, :lo12:.LANCHOR2 + ubfiz x1, x2, 5, 32 + add x0, x22, 2008 + add x23, x19, :lo12:.LANCHOR0 + add x1, x0, x1 mov w2, 32 - add x23, x23, 8 + add x0, x23, 1160 + add x22, x22, 8 bl ftl_memcpy - mov x0, x23 - mov x1, x22 mov w2, 32 + mov x1, x24 + mov x0, x22 bl ftl_memcpy - ldrb w0, [x24,1028] + ldrb w0, [x23, 1028] cmp w0, 8 - bhi .L2905 - ldrb w0, [x23,20] - cmp w0, 60 - bls .L2905 - mov w0, 60 - strb w0, [x23,20] -.L2905: - ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2939 - adrp x2, .LANCHOR4 - adrp x0, .LC138 - add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 - mov w1, 3477 - add x2, x2, 744 - bl printk + bhi .L2939 + ldrb w1, [x22, 20] + cmp w1, 60 + bls .L2940 + mov w1, 60 + strb w1, [x22, 20] +.L2940: + cmp w0, 6 + beq .L2932 .L2939: + ldr w0, [x20, #:lo12:.LANCHOR2] + tbz x0, 12, .L2941 + adrp x2, .LANCHOR4 + add x2, x2, :lo12:.LANCHOR4 + adrp x0, .LC135 + add x2, x2, 760 + mov w1, 3480 + add x0, x0, :lo12:.LC135 + bl printk +.L2941: add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x0,1144] - ldrh w1, [x1,10] + ldr x1, [x0, 1144] + ldrh w1, [x1, 10] cmp w1, 1023 - bls .L2906 + bls .L2942 mov w1, 2 - strb w1, [x0,1257] -.L2906: + strb w1, [x0, 1205] +.L2942: add x23, x21, :lo12:.LANCHOR5 - mov w0, 16384 add x22, x19, :lo12:.LANCHOR0 - add x24, x20, :lo12:.LANCHOR2 - bl ftl_malloc - str x0, [x23,336] mov w0, 16384 bl ftl_malloc - str x0, [x23,296] + add x24, x20, :lo12:.LANCHOR2 + str x0, [x23, 352] + mov w0, 16384 + bl ftl_malloc + str x0, [x23, 304] mov w0, 2048 - bl ftl_malloc - str x0, [x22,1128] + bl ftl_dma32_malloc + str x0, [x22, 1048] mov w0, 64 - bl ftl_malloc - str x0, [x23,344] + bl ftl_dma32_malloc + str x0, [x23, 344] mov w0, 64 - bl ftl_malloc - str x0, [x23,312] + bl ftl_dma32_malloc + str x0, [x23, 320] mov w0, 64 - bl ftl_malloc - strb wzr, [x23,996] - str x0, [x23,984] + bl ftl_dma32_malloc + strb wzr, [x23, 460] + str x0, [x23, 448] bl flash_die_info_init - ldrb w0, [x24,26] + ldrb w0, [x24, 26] bl flash_lsb_page_tbl_build - ldrb w0, [x24,28] + ldrb w0, [x24, 28] bl nandc_bch_sel - str xzr, [x23,328] - ldr x3, [x22,1144] + str xzr, [x23, 336] + ldr x3, [x22, 1144] adrp x2, .LANCHOR3 add x2, x2, :lo12:.LANCHOR3 - ldrh w0, [x3,16] + ldrh w0, [x3, 16] ubfx x1, x0, 8, 3 - strb w1, [x22,1304] + strb w1, [x22, 1248] ubfx x1, x0, 3, 1 - strb w1, [x23,360] + strb w1, [x23, 368] ubfx x1, x0, 4, 1 - strb w1, [x22,1305] + strb w1, [x22, 1250] ubfx x1, x0, 12, 1 - strb w1, [x2,1344] + strb w1, [x2, 1336] ubfx x1, x0, 13, 1 - strb w1, [x2,1330] + strb w1, [x2, 1322] ubfx x1, x0, 11, 1 - strb w1, [x22,1268] - ldrb w1, [x3,31] + strb w1, [x22, 1212] + ldrb w1, [x3, 31] ubfx x4, x1, 1, 1 - strb w4, [x2,1956] + strb w4, [x2, 1950] ubfx x4, x1, 2, 1 - strb w4, [x23,997] + strb w4, [x23, 461] ubfx x4, x0, 14, 1 lsr w0, w0, 15 - strb w0, [x2,1331] + strb w0, [x2, 1323] ubfx x2, x1, 3, 1 - strb w2, [x22,1256] + ldrb w0, [x3, 28] ubfx x1, x1, 4, 1 - ldrb w2, [x22,1028] - ldrb w0, [x3,28] - strb w1, [x22,1269] - cmp w2, 9 + strb w2, [x22, 1204] + strb w1, [x22, 1213] mov w1, 60 - strb w4, [x22,1] - strb w0, [x19,#:lo12:.LANCHOR0] - strb w1, [x22,1152] - bne .L2907 + ldrb w2, [x22, 1028] + strb w4, [x22, 1] + strb w0, [x19, #:lo12:.LANCHOR0] + cmp w2, 9 + strb w1, [x22, 1152] + bne .L2943 mov w1, 70 - strb w1, [x22,1152] -.L2907: + strb w1, [x22, 1152] +.L2943: add x1, x19, :lo12:.LANCHOR0 - strb w0, [x1,1154] + strb w0, [x1, 1154] add x0, x20, :lo12:.LANCHOR2 add x0, x0, 8 - ldrb w3, [x0,31] - tbz x3, 0, .L2908 - ldrb w0, [x0,29] - cbz w0, .L2909 + ldrb w3, [x0, 31] + tbz x3, 0, .L2944 + ldrb w0, [x0, 29] + cbz w0, .L2945 mov w0, 2 - b .L2979 -.L2909: - mov w0, 3 -.L2979: - strb w0, [x1,1154] -.L2908: +.L3007: + strb w0, [x1, 1154] +.L2944: cmp w2, 8 - bne .L2910 + bne .L2946 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1272] - cmp w0, 137 - beq .L2940 - cmp w0, 44 - bne .L2910 -.L2940: - add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,36] - cmp w0, 3 - bne .L2910 - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0,1154] -.L2910: + mov w2, 137 + ldrb w1, [x0, 1216] + cmp w1, 44 + ccmp w1, w2, 4, ne + bne .L2946 + add x1, x20, :lo12:.LANCHOR2 + ldrb w1, [x1, 36] + cmp w1, 3 + bne .L2946 + strb wzr, [x0, 1154] +.L2946: 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,1136] - tbz x1, 6, .L2913 + ldrb w0, [x1, 19] + ldrh w1, [x1, 16] + strb w0, [x2, 1136] + tbz x1, 6, .L2948 sub w1, w0, #17 - cmp w0, 21 - cset w2, eq - uxtb w1, w1 + and w1, w1, 255 cmp w1, 2 - bls .L2941 - cbz w2, .L2914 -.L2941: - add x0, x21, :lo12:.LANCHOR5 - adrp x1, micron_read_retrial - add x1, x1, :lo12:micron_read_retrial - str x1, [x0,328] - mov w1, 15 - cbz w2, .L2980 - mov w1, 4 -.L2980: - strb w1, [x0,320] - b .L2913 -.L2914: - sub w1, w0, #65 - uxtb w1, w1 - cmp w1, 1 - bls .L2942 - cmp w0, 33 - bne .L2918 -.L2942: - add x0, x21, :lo12:.LANCHOR5 - adrp x1, toshiba_read_retrial - add x1, x1, :lo12:toshiba_read_retrial - mov w2, 4 - str x1, [x0,328] - add x1, x19, :lo12:.LANCHOR0 - strb w2, [x1,1137] - b .L2983 -.L2918: - sub w1, w0, #67 - uxtb w1, w1 - cmp w1, 1 - sub w1, w0, #34 - cset w2, ls - uxtb w1, w1 - cmp w1, 1 - bls .L2943 - cbz w2, .L2920 -.L2943: - add x3, x21, :lo12:.LANCHOR5 - adrp x1, toshiba_read_retrial - add x1, x1, :lo12:toshiba_read_retrial - cmp w0, 35 - str x1, [x3,328] - beq .L2922 - cmp w0, 68 - beq .L2922 - mov w0, 7 - strb w0, [x3,320] - b .L2923 -.L2922: - add x0, x21, :lo12:.LANCHOR5 - mov w1, 17 - strb w1, [x0,320] -.L2923: + ccmp w0, 21, 4, hi + bne .L2949 + add x1, x21, :lo12:.LANCHOR5 + adrp x2, micron_read_retrial + add x2, x2, :lo12:micron_read_retrial + cmp w0, 21 + str x2, [x1, 336] + beq .L2950 + mov w0, 15 +.L3009: + strb w0, [x1, 328] +.L2948: + ldr w0, [x20, #:lo12:.LANCHOR2] + tbz x0, 12, .L2959 + adrp x2, .LANCHOR4 + add x2, x2, :lo12:.LANCHOR4 + adrp x0, .LC135 + add x2, x2, 760 + mov w1, 3573 + add x0, x0, :lo12:.LC135 + bl printk +.L2959: add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x0, 1248] + strb wzr, [x0, 1192] + tbz x1, 0, .L2960 + ldrb w0, [x0, 1216] + cmp w0, 155 + beq .L2961 + mov w0, 4 + bl flash_set_interface_mode + mov w0, 4 + bl nandc_set_if_mode +.L2961: + mov w0, 1 + bl flash_set_interface_mode + mov w0, 1 +.L3012: + bl nandc_set_if_mode + bl flash_info_blk_init + mov w22, w0 + cmn w0, #1 + bne .L2963 + add x19, x19, :lo12:.LANCHOR0 + mov w1, 17 + ldr x0, [x19, 1048] + strb wzr, [x19, 1208] + strb w1, [x0, 32] + mov w0, 0 + bl zftl_flash_exit_slc_mode + b .L2927 +.L2935: + add x8, x8, 1 + add x7, x7, 32 + cmp x8, 49 + bne .L2937 + b .L2932 +.L2945: + mov w0, 3 + b .L3007 +.L2950: + mov w0, 4 + b .L3009 +.L2949: + sub w1, w0, #65 + cmp w0, 33 + and w1, w1, 255 + ccmp w1, 1, 0, ne + bhi .L2952 + add x0, x21, :lo12:.LANCHOR5 + adrp x1, toshiba_read_retrial + add x1, x1, :lo12:toshiba_read_retrial + str x1, [x0, 336] mov w1, 4 - cbnz w2, .L2981 - mov w1, 5 -.L2981: - strb w1, [x0,1137] - b .L2913 -.L2920: - sub w1, w0, #36 - uxtb w1, w1 + strb w1, [x2, 1137] +.L3013: + mov w1, 7 +.L3011: + strb w1, [x0, 328] + b .L2948 +.L2952: + sub w3, w0, #34 + sub w1, w0, #67 + and w3, w3, 255 + and w1, w1, 255 + cmp w3, 1 + ccmp w1, 1, 0, hi + bhi .L2953 + add x2, x21, :lo12:.LANCHOR5 + adrp x3, toshiba_read_retrial + add x3, x3, :lo12:toshiba_read_retrial + cmp w0, 35 + str x3, [x2, 336] + mov w3, 68 + ccmp w0, w3, 4, ne + beq .L2954 + mov w0, 7 +.L3008: + strb w0, [x2, 328] cmp w1, 1 - bhi .L2925 + add x0, x19, :lo12:.LANCHOR0 + bhi .L2956 + mov w1, 4 +.L3010: + strb w1, [x0, 1137] + b .L2948 +.L2954: + mov w0, 17 + b .L3008 +.L2956: + mov w1, 5 + b .L3010 +.L2953: + sub w1, w0, #36 + and w1, w1, 255 + cmp w1, 1 + bhi .L2957 add x0, x21, :lo12:.LANCHOR5 adrp x1, toshiba_3d_read_retrial add x1, x1, :lo12:toshiba_3d_read_retrial - str x1, [x0,328] -.L2983: - mov w1, 7 - b .L2980 -.L2925: + str x1, [x0, 336] + b .L3013 +.L2957: cmp w0, 50 - bne .L2926 + bne .L2958 add x0, x21, :lo12:.LANCHOR5 adrp x1, samsung_read_retrial add x1, x1, :lo12:samsung_read_retrial - str x1, [x0,328] + str x1, [x0, 336] mov w1, 25 - b .L2980 -.L2926: + b .L3011 +.L2958: cmp w0, 81 - bne .L2913 + bne .L2948 add x0, x21, :lo12:.LANCHOR5 adrp x1, ymtc_3d_read_retrial add x1, x1, :lo12:ymtc_3d_read_retrial - str x1, [x0,328] + strb wzr, [x2, 1251] + str x1, [x0, 336] mov w1, 7 - strb w1, [x0,320] - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0,1193] -.L2913: - ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2927 - adrp x2, .LANCHOR4 - adrp x0, .LC138 - add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 - mov w1, 3570 - add x2, x2, 744 - bl printk -.L2927: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,1304] - strb wzr, [x0,1192] - tbz x1, 0, .L2928 - ldrb w0, [x0,1272] - cmp w0, 155 - beq .L2929 + strb w1, [x0, 328] + b .L2948 +.L2960: mov w0, 4 - bl flash_set_interface_mode - mov w0, 4 - bl nandc_set_if_mode -.L2929: - mov w0, 1 - bl flash_set_interface_mode - mov w0, 1 - b .L2982 -.L2928: - mov w0, 4 -.L2982: - bl nandc_set_if_mode - bl flash_info_blk_init - cmn w0, #1 - mov w22, w0 - bne .L2931 - add x19, x19, :lo12:.LANCHOR0 - mov w1, 17 - ldr x0, [x19,1128] - strb wzr, [x19,1264] - strb w1, [x0,32] - mov w0, 0 - bl zftl_flash_exit_slc_mode - b .L2977 -.L2931: + b .L3012 +.L2963: add x0, x20, :lo12:.LANCHOR2 - ldrb w0, [x0,15] + ldrb w0, [x0, 15] cmp w0, 9 - bne .L2932 + bne .L2964 add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x0,1128] - ldrb w1, [x1,20] + ldr x1, [x0, 1048] + ldrb w1, [x1, 20] cmp w1, 1 - beq .L2932 - strb wzr, [x0,1154] -.L2932: + beq .L2964 + strb wzr, [x0, 1154] +.L2964: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1136] + ldrb w0, [x0, 1136] sub w0, w0, #1 - uxtb w0, w0 + and w0, w0, 255 cmp w0, 7 - bhi .L2933 + bhi .L2965 add x0, x21, :lo12:.LANCHOR5 adrp x1, hynix_read_retrial add x1, x1, :lo12:hynix_read_retrial - str x1, [x0,328] -.L2933: + str x1, [x0, 336] +.L2965: add x19, x19, :lo12:.LANCHOR0 - ldrb w0, [x19,1304] - tbz x0, 2, .L2935 - ldr x0, [x19,1128] - ldrb w0, [x0,19] - cbz w0, .L2935 + ldrb w0, [x19, 1248] + tbz x0, 2, .L2967 + ldr x0, [x19, 1048] + ldrb w0, [x0, 19] + cbz w0, .L2967 add x21, x21, :lo12:.LANCHOR5 - ldrh w1, [x19,2] + ldrh w0, [x19, 2] + ldrb w1, [x21, 456] + mul w1, w1, w0 mov w0, 0 - ldrb w2, [x21,992] - mul w1, w2, w1 bl flash_ddr_para_scan - ldrb w0, [x19,1192] - cbnz w0, .L2935 - ldr x1, [x19,1128] - strb w0, [x1,19] + ldrb w0, [x19, 1192] + cbnz w0, .L2967 + ldr x0, [x19, 1048] + strb wzr, [x0, 19] bl flash_info_flush -.L2935: - ldr w0, [x20,#:lo12:.LANCHOR2] - tbz x0, 12, .L2937 +.L2967: + ldr w0, [x20, #:lo12:.LANCHOR2] + tbz x0, 12, .L2969 adrp x2, .LANCHOR4 - adrp x0, .LC138 add x2, x2, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC138 - mov w1, 3673 - add x2, x2, 744 + adrp x0, .LC135 + add x2, x2, 760 + mov w1, 3676 + add x0, x0, :lo12:.LC135 bl printk -.L2937: - mov w22, 0 +.L2969: bl nand_flash_print_info -.L2977: - 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 - ret + mov w22, 0 + b .L2927 .size nand_flash_init, .-nand_flash_init .align 2 .global ftl_sysblk_dump .type ftl_sysblk_dump, %function ftl_sysblk_dump: sub sp, sp, #144 - stp x29, x30, [sp,48] + stp x29, x30, [sp, 48] add x29, sp, 48 - stp x23, x24, [sp,96] - uxth w24, w0 - mov w0, 1 - stp x19, x20, [sp,64] - stp x25, x26, [sp,112] - stp x27, x28, [sp,128] - stp x21, x22, [sp,80] + stp x19, x20, [sp, 64] mov w20, 0 - bl buf_alloc + stp x25, x26, [sp, 112] + adrp x26, .LANCHOR3 + stp x27, x28, [sp, 128] + add x26, x26, :lo12:.LANCHOR3 + stp x21, x22, [sp, 80] adrp x22, .LC195 - ldr x26, [x0,8] + stp x23, x24, [sp, 96] + and w24, w0, 65535 + mov w0, 1 + bl buf_alloc + ldr x27, [x0, 8] mov x25, x0 - mov w19, w20 - adrp x27, .LANCHOR3 - adrp x28, .LANCHOR0 add x22, x22, :lo12:.LC195 -.L2985: - add x2, x27, :lo12:.LANCHOR3 - ldrh w3, [x2,1384] - cmp w3, w19 - bls .L2997 - ldrh w21, [x2,1418] - add x3, x28, :lo12:.LANCHOR0 - ldr x1, [x25,8] - ldr x2, [x25,24] - madd w21, w24, w21, w19 - ldrb w3, [x3,3360] - mov w0, w21 - bl ftl_read_ppa_page - mov w23, w0 - ldr x7, [x25,8] - mov w1, w24 - ldr x2, [x25,24] - mov w3, w21 - mov w4, w23 - ldr w0, [x7,12] - str w0, [sp] - ldr w0, [x2] - str w0, [sp,8] - ldr w0, [x2,4] - str w0, [sp,16] - ldr w0, [x2,8] - str w0, [sp,24] - ldr w0, [x2,12] - mov w2, w19 - str w0, [sp,32] - mov x0, x22 - ldr w5, [x7] - ldr w6, [x7,4] - ldr w7, [x7,8] - bl printk - cmp w23, 512 - beq .L2990 - cmn w23, #1 - bne .L2986 -.L2990: - mov w20, 1 -.L2986: - add w19, w19, 1 - uxth w19, w19 - b .L2985 -.L2997: - adrp x0, .LC211 - add x1, x26, 704 - add x0, x0, :lo12:.LC211 - mov w2, 4 + mov w19, 0 + mov w28, 1 +.L3015: + ldrh w0, [x26, 1376] + cmp w0, w19 + bhi .L3017 + add x1, x27, 704 mov w3, 32 + mov w2, 4 + adrp x0, .LC211 + add x0, x0, :lo12:.LC211 bl rknand_print_hex mov x0, x25 bl zbuf_free - cbz w20, .L2989 + cbz w20, .L3018 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 776 mov w2, 1619 - add x1, x1, 760 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L2989: - sub sp, x29, #48 +.L3018: mov w0, w20 - 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] + 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, 144 ret +.L3017: + ldrh w21, [x26, 1410] + ldrb w3, [x26, 1946] + ldr x1, [x25, 8] + ldr x2, [x25, 24] + madd w21, w21, w24, w19 + mov w0, w21 + bl ftl_read_ppa_page + mov w23, w0 + ldr x1, [x25, 24] + mov w4, w0 + ldr x0, [x25, 8] + mov w3, w21 + ldr w2, [x1, 12] + str w2, [sp, 32] + ldr w2, [x1, 8] + str w2, [sp, 24] + ldr w2, [x1, 4] + str w2, [sp, 16] + mov w2, w19 + add w19, w19, 1 + ldr w1, [x1] + and w19, w19, 65535 + str w1, [sp, 8] + ldr w1, [x0, 12] + str w1, [sp] + mov w1, w24 + ldp w5, w6, [x0] + ldr w7, [x0, 8] + mov x0, x22 + bl printk + cmp w23, 512 + ccmn w23, #1, 4, ne + csel w20, w20, w28, ne + b .L3015 .size ftl_sysblk_dump, .-ftl_sysblk_dump .align 2 .global ftl_open_sblk_recovery .type ftl_open_sblk_recovery, %function ftl_open_sblk_recovery: - stp x29, x30, [sp, -368]! + stp x29, x30, [sp, -352]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x22, .LANCHOR2 - stp x19, x20, [sp,16] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR2 + stp x19, x20, [sp, 16] mov x19, x0 - str x1, [x29,136] - ldr w0, [x22,#:lo12:.LANCHOR2] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - tbz x0, 12, .L2999 + ldr w0, [x21, #:lo12:.LANCHOR2] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + str x1, [x29, 112] + tbz x0, 12, .L3026 + ldrh w1, [x19, 2] adrp x0, .LC212 - ldrh w1, [x19,2] add x0, x0, :lo12:.LC212 bl printk -.L2999: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L3000 +.L3026: + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 12, .L3027 + ldrb w1, [x19, 5] adrp x0, .LC213 - ldrb w1, [x19,5] add x0, x0, :lo12:.LC213 bl printk -.L3000: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L3001 - adrp x0, .LC214 +.L3027: + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 12, .L3028 ldrh w1, [x19] + adrp x0, .LC214 add x0, x0, :lo12:.LC214 bl printk -.L3001: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L3002 +.L3028: + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 12, .L3029 + ldrh w2, [x19, 18] adrp x0, .LC215 - ldrh w1, [x19,16] - ldrh w2, [x19,18] + ldrh w1, [x19, 16] add x0, x0, :lo12:.LC215 bl printk -.L3002: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L3003 +.L3029: + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 12, .L3030 + ldrb w1, [x19, 9] adrp x0, .LC216 - ldrb w1, [x19,9] add x0, x0, :lo12:.LC216 bl printk -.L3003: - adrp x20, .LANCHOR0 - ldrh w0, [x19,10] - add x21, x20, :lo12:.LANCHOR0 - strh w0, [x19,14] +.L3030: + ldrh w0, [x19, 10] + adrp x24, .LANCHOR0 + strh w0, [x19, 14] + add x0, x24, :lo12:.LANCHOR0 ldrh w1, [x19] - ldrh w0, [x21,1088] + ldrh w0, [x0, 1096] cmp w1, w0 - bcs .L2998 + bcs .L3025 mov w0, 1 bl buf_alloc + adrp x20, .LANCHOR3 mov x27, x0 - ldrb w0, [x21,3360] - add x21, x29, 176 + add x0, x20, :lo12:.LANCHOR3 + add x25, x29, 160 mov w2, 64 - ldr x1, [x27,8] + add x28, x29, 288 + ldr x1, [x27, 8] + ldrb w0, [x0, 1946] sub w0, w0, #2 sbfiz x0, x0, 9, 32 add x0, x1, x0 mov w1, 255 - str x0, [x29,160] - mov x0, x21 + str x0, [x29, 144] + mov x0, x25 bl ftl_memset - mov w1, 255 mov w2, 64 - add x0, x29, 240 - bl ftl_memset - add x0, x29, 304 mov w1, 255 - mov w2, 64 + add x0, x29, 224 bl ftl_memset - ldrb w24, [x19,5] + mov w2, 64 + mov w1, 255 + mov x0, x28 + bl ftl_memset + ldrb w22, [x19, 5] mov w0, 2 - str w0, [x29,168] + ldrh w23, [x19, 2] + str w0, [x29, 152] adrp x0, .LANCHOR5 - ldrh w25, [x19,2] + str wzr, [x29, 120] add x0, x0, :lo12:.LANCHOR5 - str wzr, [x29,144] - add x0, x0, 384 - str x0, [x29,128] - adrp x0, .LC217 - add x0, x0, :lo12:.LC217 - str x0, [x29,120] -.L3005: - adrp x23, .LANCHOR3 - add x0, x23, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] - cmp w0, w25 - bls .L3008 - ldrb w24, [x19,5] -.L3006: - ldrb w0, [x19,9] - cmp w0, w24 - bls .L3145 - add x0, x19, w24, sxtw 1 - ldrh w28, [x0,16] - mov w0, 65535 - cmp w28, w0 - beq .L3007 - add x0, x23, :lo12:.LANCHOR3 - add x3, x20, :lo12:.LANCHOR0 - ldr x1, [x27,8] - ldr x2, [x27,24] - ldrh w26, [x0,1418] - ldrb w3, [x3,3360] - madd w0, w28, w26, w25 - str w0, [x29,152] - bl ftl_read_ppa_page - cmp w0, 512 - mov w26, w0 - beq .L3008 - cmn w0, #1 - beq .L3009 - ldr x0, [x27,24] - ldr w1, [x0] - cmn w1, #1 - bne .L3009 - ldr w0, [x0,4] - cmn w0, #1 - bne .L3009 - ldr x0, [x27,8] - ldr w0, [x0] - cmn w0, #1 - beq .L3008 -.L3009: - adrp x0, .LANCHOR5 - mov w1, 1 - add x0, x0, :lo12:.LANCHOR5 - strb w1, [x0,657] - ldrb w0, [x19,9] - ldrh w1, [x19,10] - madd w0, w25, w0, w24 - cmp w1, w0 - beq .L3010 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 1694 - add x1, x1, 776 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3010: - ldrh w0, [x19,10] - ldrh w1, [x19,6] - ldrb w2, [x19,9] + str x0, [x29, 104] +.L3032: + add x0, x20, :lo12:.LANCHOR3 + ldrh w0, [x0, 1376] + cmp w0, w23 + bhi .L3049 +.L3035: + add x2, x20, :lo12:.LANCHOR3 + ldrh w0, [x19, 10] + ldrh w1, [x19, 6] + strh w23, [x19, 2] add w1, w1, w0 - add x0, x23, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] + ldrh w2, [x2, 1376] + ldrb w0, [x19, 9] + strb w22, [x19, 5] mul w0, w0, w2 cmp w1, w0 - beq .L3011 + beq .L3050 adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 1695 - add x1, x1, 776 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3011: - add x0, x20, :lo12:.LANCHOR0 - str x0, [x29,168] - ldrb w0, [x0,3360] - cmp w0, 8 - bls .L3012 - ldr x0, [x27,24] - mov w1, 15555 - movk w1, 0xf55f, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L3012 - cmn w26, #1 - beq .L3017 - ldr w1, [x0,4] - cmn w1, #1 - beq .L3052 - ldr w2, [x0,16] - mov w1, 21320 - movk w1, 0x4841, lsl 16 - cmp w2, w1 - bne .L3052 - ldr w2, [x0,20] - mov w1, 1024 - ldr x0, [x29,160] - str x2, [x29,144] - bl js_hash - ldr x2, [x29,144] - cmp w2, w0 - beq .L3052 - ldr x0, [x29,160] - mov w1, 1024 - bl js_hash - mov w5, w0 - ldr w3, [x29,152] - mov w1, w28 - ldr x0, [x29,120] - mov w2, w25 - mov w4, w26 - bl printk - ldr x1, [x29,160] - adrp x0, .LC218 - add x0, x0, :lo12:.LC218 - mov w2, 4 - mov w3, 16 - bl rknand_print_hex - ldr x0, [x29,168] - mov w2, 4 - ldr x1, [x27,24] - ldrb w3, [x0,3360] - adrp x0, .LC183 - add x0, x0, :lo12:.LC183 - lsr w3, w3, 1 - bl rknand_print_hex - b .L3017 -.L3012: - cmn w26, #1 - beq .L3017 -.L3052: - ldr x1, [x27,24] - ldr w0, [x1,4] - cmn w0, #1 - beq .L3017 - ldr w2, [x1] - mov w1, 15555 - movk w1, 0xf55f, lsl 16 - cmp w2, w1 - beq .L3017 - bl lpa_hash_get_ppa - ldr x1, [x29,136] - cbz x1, .L3016 - ldr x8, [x27,24] - ldr w1, [x8,8] - cmp w0, w1 - beq .L3016 - cmn w0, #1 - beq .L3016 - add x7, x20, :lo12:.LANCHOR0 - add x4, x23, :lo12:.LANCHOR3 - mov w5, 24 - mov w28, 1 - ldrb w2, [x7,1257] - ldrh w1, [x4,1312] - sub w2, w5, w2 - lsr w3, w0, w1 - sub w1, w2, w1 - lsl w1, w28, w1 - ldrb w2, [x4,1314] - sub w1, w1, #1 - and w1, w3, w1 - udiv w1, w1, w2 - ldr x2, [x29,136] - ldrh w2, [x2] - cmp w2, w1, uxth - bne .L3016 - ldr w8, [x8] - ldrb w3, [x7,3360] - ldr x1, [x27,8] - ldr x2, [x29,128] - str x5, [x29,104] - str x4, [x29,112] - str x8, [x29,144] - str x7, [x29,168] - bl ftl_read_ppa_page - ldr x0, [x29,128] - ldr x8, [x29,144] - ldr x7, [x29,168] - ldr w0, [x0] - ldr x4, [x29,112] - cmp w0, w8 - ldr x5, [x29,104] - bcc .L3016 - ldr x0, [x27,24] - ldr w1, [x0,8] - cmn w1, #1 - beq .L3017 - ldrb w2, [x7,1257] - ldrh w0, [x4,1312] - sub w5, w5, w2 - sub w5, w5, w0 - lsr w1, w1, w0 - lsl w28, w28, w5 - ldrb w0, [x4,1314] - sub w28, w28, #1 - and w1, w28, w1 - udiv w0, w1, w0 - bl ftl_vpn_decrement - b .L3017 -.L3016: - ldr x2, [x27,24] - add x1, x20, :lo12:.LANCHOR0 - ldr w3, [x2,4] - ldr w0, [x1,3372] - cmp w3, w0 - bcs .L3017 - add x4, x23, :lo12:.LANCHOR3 - ldrb w0, [x19,9] - ldrh w3, [x19,10] - ldrh w4, [x4,1384] - mul w0, w0, w4 - sub w0, w0, #1 - cmp w3, w0 - blt .L3146 -.L3017: - ldrh w0, [x19,6] - sub w0, w0, #1 - strh w0, [x19,6] - ldrh w0, [x19,10] - add w0, w0, 1 - strh w0, [x19,10] - mov w0, 4 - str w0, [x29,168] - mov w0, 1 - str w0, [x29,144] -.L3007: - add w24, w24, 1 - uxth w24, w24 - b .L3006 -.L3145: - add w25, w25, 1 - strb wzr, [x19,5] - uxth w25, w25 - b .L3005 -.L3008: - add x2, x23, :lo12:.LANCHOR3 - ldrh w0, [x19,10] - ldrh w1, [x19,6] - strh w25, [x19,2] - add w1, w1, w0 - ldrh w2, [x2,1384] - ldrb w0, [x19,9] - strb w24, [x19,5] - mul w0, w0, w2 - cmp w1, w0 - beq .L3021 - adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 792 mov w2, 1802 - add x1, x1, 776 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3021: - add x0, x23, :lo12:.LANCHOR3 - ldrh w3, [x19,10] - ldr x4, [x0,1936] - mov w0, 0 - mov w2, w0 -.L3022: - cmp w2, w3 - bcs .L3147 - ldrh w1, [x19,12] - add w1, w2, w1 - ldr w1, [x4,x1,lsl 2] - cmn w1, #1 - beq .L3023 - add w1, w0, 1 - uxth w0, w1 -.L3023: - add w2, w2, 1 - b .L3022 -.L3147: - add x2, x23, :lo12:.LANCHOR3 - ldrb w1, [x19,9] - sub w0, w0, w3 - ldrh w24, [x2,1384] - madd w0, w1, w24, w0 - uxth w24, w0 - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L3025 - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x19] - mov w2, w24 - ubfiz x3, x1, 1, 16 - ldr x4, [x0,1112] - adrp x0, .LC219 - add x0, x0, :lo12:.LC219 - ldrh w3, [x4,x3] - bl printk -.L3025: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x19] - ldr x0, [x0,1112] - strh w24, [x0,x1,lsl 1] - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 14, .L3026 - adrp x0, .LC220 - ldr w1, [x29,176] - ldr w2, [x29,180] - add x0, x0, :lo12:.LC220 - ldr w3, [x29,184] - ldr w4, [x29,188] - bl printk -.L3026: - add x0, x20, :lo12:.LANCHOR0 +.L3050: + add x0, x20, :lo12:.LANCHOR3 + ldrh w3, [x19, 10] mov w1, 0 - adrp x28, .LC222 - mov x24, 0 - mov w26, -1 - ldrb w2, [x0,3360] - ldr x0, [x27,8] + ldr x4, [x0, 1928] + mov w0, 0 +.L3051: + cmp w1, w3 + bcc .L3053 + add x1, x20, :lo12:.LANCHOR3 + ldrb w22, [x19, 9] + ldrh w1, [x1, 1376] + madd w22, w22, w1, w0 + ldr w0, [x21, #:lo12:.LANCHOR2] + sub w22, w22, w3 + and w22, w22, 65535 + tbz x0, 12, .L3054 + add x0, x24, :lo12:.LANCHOR0 + ldrh w1, [x19] + ldr x0, [x0, 1120] + ubfiz x2, x1, 1, 16 + ldrh w3, [x0, x2] + adrp x0, .LC219 + mov w2, w22 + add x0, x0, :lo12:.LC219 + bl printk +.L3054: + add x0, x24, :lo12:.LANCHOR0 + ldrh w1, [x19] + ldr x0, [x0, 1120] + strh w22, [x0, x1, lsl 1] + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 14, .L3055 + ldp w1, w2, [x29, 160] + adrp x0, .LC220 + ldp w3, w4, [x29, 168] + add x0, x0, :lo12:.LC220 + bl printk +.L3055: + add x0, x20, :lo12:.LANCHOR3 + mov w1, 0 + mov x23, 0 + ldrb w2, [x0, 1946] + ldr x0, [x27, 8] lsl w2, w2, 9 bl ftl_memset adrp x0, .LC221 add x0, x0, :lo12:.LC221 - str x0, [x29,152] - add x0, x28, :lo12:.LC222 - str x0, [x29,136] -.L3027: - add x0, x23, :lo12:.LANCHOR3 - ldr w1, [x29,168] - str w24, [x29,160] - ldrb w0, [x0,1329] - mul w0, w1, w0 - cmp w24, w0 - bcs .L3148 - ldr w0, [x21,x24,lsl 2] - cmn w0, #1 - bne .L3028 -.L3032: - add x1, x20, :lo12:.LANCHOR0 - ldr x0, [x27,24] - mov x2, 0 - mov w25, -1 - ldr x1, [x1,3392] - ldr w1, [x1,8] - str w1, [x0] - ldr x0, [x27,24] - str w26, [x0,4] - ldr x0, [x27,24] - str w26, [x0,8] - ldr x0, [x27,24] - str wzr, [x0,12] - ldr x0, [x27,24] - str wzr, [x0,16] - ldr x0, [x27,8] - str wzr, [x0] - mov w0, 2 - ldr x1, [x27,24] - add x1, x1, 16 - bl ftl_debug_info_fill - b .L3029 -.L3028: - add x3, x20, :lo12:.LANCHOR0 - ldr x1, [x27,8] - ldr x2, [x27,24] - ldrb w3, [x3,3360] - bl ftl_read_ppa_page - mov w25, w0 - ldr x0, [x27,24] - ldr w0, [x0,4] - bl lpa_hash_get_ppa - mov w28, w0 - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 14, .L3030 - ldr x3, [x27,24] - mov w1, w28 - ldr x0, [x29,152] - ldr w2, [x21,x24,lsl 2] - ldr w3, [x3,4] - bl printk -.L3030: - ldr w0, [x21,x24,lsl 2] - mov w1, 1 - mov x2, 0 - cmp w28, w0 - ldr x0, [x27,24] - csinv w25, w25, wzr, eq - str w28, [x0,8] - ldr x0, [x27,24] - str w1, [x0,12] - ldr x0, [x27,24] - str wzr, [x0,16] - mov w0, 2 - ldr x1, [x27,24] - add x1, x1, 16 - bl ftl_debug_info_fill - cmn w25, #1 - beq .L3032 -.L3029: - ldr w0, [x29,144] - cbz w0, .L3034 -.L3144: - ldrh w0, [x19,6] - cmp w0, 1 - bls .L3034 - mov x0, x19 - bl ftl_get_new_free_page - mov w28, w0 - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 14, .L3036 - ldr x2, [x27,24] - mov w1, w28 - ldrh w0, [x19,12] - ldrh w3, [x19,10] - ldr w2, [x2,4] - add w3, w3, w0 - ldr x0, [x29,136] - sub w3, w3, #1 - bl printk -.L3036: - add x1, x23, :lo12:.LANCHOR3 - ldrh w0, [x19,6] - ldrb w2, [x1,1329] - ldr w1, [x29,168] - mul w2, w1, w2 - ldr w1, [x29,160] - add w2, w2, 1 - sub w2, w2, w1 - cmp w0, w2 - bls .L3034 - add x3, x20, :lo12:.LANCHOR0 - ldr x1, [x27,8] - ldr x2, [x27,24] - mov w0, w28 - ldrb w3, [x3,3360] - bl ftl_prog_ppa_page - mov w2, w0 - ldrh w0, [x19] - str x2, [x29,128] - bl ftl_vpn_decrement - ldr x2, [x29,128] - cmn w25, #1 - cset w1, ne - cmn w2, #1 - beq .L3037 - cbz w1, .L3034 - add x0, x29, 240 - ldrh w1, [x19,10] - str w28, [x0,x24,lsl 2] - ldrh w0, [x19,12] - add w0, w1, w0 - add x1, x29, 304 - sub w0, w0, #1 - str w0, [x1,x24,lsl 2] - b .L3034 -.L3037: - cbnz w1, .L3144 -.L3034: - add x24, x24, 1 - b .L3027 -.L3148: - adrp x24, .LC223 - adrp x25, .LC222 - mov x26, 0 - add x24, x24, :lo12:.LC223 - add x25, x25, :lo12:.LC222 -.L3041: - add x28, x23, :lo12:.LANCHOR3 - ldr w1, [x29,168] - ldrb w0, [x28,1329] - mul w0, w1, w0 - cmp w0, w26 - bls .L3149 - add x0, x29, 240 - ldr w0, [x0,x26,lsl 2] - cmn w0, #1 - beq .L3043 - add x3, x20, :lo12:.LANCHOR0 - ldr w0, [x21,x26,lsl 2] - ldr x1, [x27,8] - ldr x2, [x27,24] - ldrb w3, [x3,3360] - bl ftl_read_ppa_page - cmp w0, 256 - beq .L3054 - cmn w0, #1 - bne .L3043 -.L3054: - add x3, x20, :lo12:.LANCHOR0 - add x0, x29, 240 - ldr x1, [x27,8] - ldr x2, [x27,24] - ldr w0, [x0,x26,lsl 2] - ldrb w3, [x3,3360] - bl ftl_read_ppa_page - mov w28, w0 - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 14, .L3046 - ldr x2, [x27,24] - mov x0, x25 - ldr w3, [x21,x26,lsl 2] - mov w1, w28 - ldr w2, [x2,8] - bl printk -.L3046: - cmn w28, #1 - beq .L3043 - ldr x1, [x27,24] - ldr w2, [x21,x26,lsl 2] - ldr w0, [x1,8] - cmp w2, w0 - bne .L3043 - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 14, .L3047 - add x3, x29, 304 - ldr w1, [x1,4] - mov x0, x24 - ldr w3, [x3,x26,lsl 2] - bl printk -.L3047: - ldr x1, [x27,24] - add x0, x29, 304 - ldr w2, [x0,x26,lsl 2] - ldr w0, [x1,4] - ldr w1, [x1,8] - bl lpa_hash_update_ppa -.L3043: - add x26, x26, 1 - b .L3041 -.L3149: + str x0, [x29, 128] + adrp x0, .LC222 + add x0, x0, :lo12:.LC222 + str x0, [x29, 112] +.L3056: + add x1, x20, :lo12:.LANCHOR3 + ldr w2, [x29, 152] + str w23, [x29, 140] + ldrb w0, [x1, 1321] + mul w0, w0, w2 + cmp w23, w0 + bcc .L3068 + adrp x22, .LC223 + adrp x23, .LC222 + mov x20, x1 + add x22, x22, :lo12:.LC223 + add x23, x23, :lo12:.LC222 + mov x24, 0 +.L3069: + ldrb w0, [x20, 1321] + ldr w1, [x29, 152] + mul w0, w0, w1 + cmp w0, w24 + bhi .L3075 mov x0, x27 bl zbuf_free - ldrh w1, [x28,1384] - ldrh w0, [x19,12] - ldrb w2, [x19,9] - madd w0, w1, w2, w0 + ldrh w1, [x19, 12] + ldrh w0, [x20, 1376] + ldrb w2, [x19, 9] + madd w0, w0, w2, w1 mov x1, -4 add x0, x1, w0, sxtw 2 - ldr x1, [x28,1936] - ldr w0, [x1,x0] + ldr x1, [x20, 1928] + ldr w0, [x1, x0] cmn w0, #1 - beq .L3049 + beq .L3076 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 792 mov w2, 1917 - add x1, x1, 776 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3049: - ldrh w0, [x19,6] +.L3076: + ldrh w0, [x19, 6] cmp w0, 1 - bne .L2998 + bne .L3025 mov x0, x19 bl ftl_write_last_log_page - b .L2998 -.L3146: - ldr x0, [x1,3392] - ldr w2, [x2] - ldr w1, [x0,8] - cmp w2, w1 - bls .L3018 - str w2, [x0,8] -.L3018: - ldr x1, [x27,24] - ldrh w0, [x19,10] - ldrh w2, [x19,12] - add w2, w2, w0 - ldr w0, [x1,4] - ldr w1, [x1,8] - bl lpa_hash_update_ppa - ldr w0, [x21,4] - str w0, [x21] - ldr w0, [x21,8] - str w0, [x21,4] - ldr w0, [x21,12] - str w0, [x21,8] - ldr w0, [x29,152] - str w0, [x21,12] - b .L3017 -.L2998: - 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], 368 +.L3025: + 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], 352 ret +.L3049: + ldrb w22, [x19, 5] +.L3033: + ldrb w0, [x19, 9] + cmp w0, w22 + bhi .L3048 + add w23, w23, 1 + strb wzr, [x19, 5] + and w23, w23, 65535 + b .L3032 +.L3048: + add x0, x19, w22, sxtw 1 + ldrh w0, [x0, 16] + str w0, [x29, 140] + mov w0, 65535 + ldr w1, [x29, 140] + cmp w1, w0 + beq .L3034 + add x0, x20, :lo12:.LANCHOR3 + ldr w2, [x29, 140] + ldrh w1, [x0, 1410] + ldrb w3, [x0, 1946] + madd w1, w1, w2, w23 + ldr x2, [x27, 24] + str w1, [x29, 128] + ldr x1, [x27, 8] + ldr w0, [x29, 128] + bl ftl_read_ppa_page + mov w26, w0 + cmp w0, 512 + beq .L3035 + cmn w0, #1 + beq .L3036 + ldr x0, [x27, 24] + ldr w1, [x0] + cmn w1, #1 + bne .L3036 + ldr w0, [x0, 4] + cmn w0, #1 + bne .L3036 + ldr x0, [x27, 8] + ldr w0, [x0] + cmn w0, #1 + beq .L3035 +.L3036: + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + mov w1, 1 + strb w1, [x0, 401] + ldrb w0, [x19, 9] + ldrh w1, [x19, 10] + madd w0, w0, w23, w22 + cmp w1, w0 + beq .L3037 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 792 + mov w2, 1694 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3037: + ldrh w0, [x19, 10] + ldrh w1, [x19, 6] + ldrb w2, [x19, 9] + add w1, w1, w0 + add x0, x20, :lo12:.LANCHOR3 + ldrh w0, [x0, 1376] + mul w0, w0, w2 + cmp w1, w0 + beq .L3038 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 792 + mov w2, 1695 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3038: + add x0, x20, :lo12:.LANCHOR3 + str x0, [x29, 152] + ldrb w0, [x0, 1946] + cmp w0, 8 + bls .L3039 + ldr x0, [x27, 24] + mov w2, 15555 + movk w2, 0xf55f, lsl 16 + ldr w1, [x0] + cmp w1, w2 + beq .L3039 + cmn w26, #1 + beq .L3041 + ldr w1, [x0, 4] + cmn w1, #1 + bne .L3042 +.L3045: + ldr x1, [x27, 24] + ldr w0, [x1, 4] + cmn w0, #1 + bne .L3043 +.L3041: + ldrh w0, [x19, 6] + sub w0, w0, #1 + strh w0, [x19, 6] + ldrh w0, [x19, 10] + add w0, w0, 1 + strh w0, [x19, 10] + mov w0, 4 + str w0, [x29, 152] + mov w0, 1 + str w0, [x29, 120] +.L3034: + add w22, w22, 1 + and w22, w22, 65535 + b .L3033 +.L3042: + ldr w1, [x0, 16] + mov w2, 21320 + movk w2, 0x4841, lsl 16 + cmp w1, w2 + bne .L3045 + ldr w2, [x0, 20] + mov w1, 1024 + ldr x0, [x29, 144] + str w2, [x29, 152] + bl js_hash + ldr w2, [x29, 152] + cmp w2, w0 + beq .L3045 + ldr x0, [x29, 144] + mov w1, 1024 + bl js_hash + mov w5, w0 + ldr w3, [x29, 128] + mov w4, w26 + ldr w1, [x29, 140] + mov w2, w23 + adrp x0, .LC217 + add x0, x0, :lo12:.LC217 + bl printk + ldr x1, [x29, 144] + mov w3, 16 + mov w2, 4 + adrp x0, .LC218 + add x0, x0, :lo12:.LC218 + bl rknand_print_hex + add x0, x20, :lo12:.LANCHOR3 + ldr x1, [x27, 24] + mov w2, 4 + ldrb w0, [x0, 1946] + lsr w3, w0, 1 + adrp x0, .LC183 + add x0, x0, :lo12:.LC183 + bl rknand_print_hex + b .L3041 +.L3039: + cmn w26, #1 + bne .L3045 + b .L3041 +.L3043: + ldr w1, [x1] + mov w2, 15555 + movk w2, 0xf55f, lsl 16 + cmp w1, w2 + beq .L3041 + bl lpa_hash_get_ppa + ldr x1, [x29, 112] + cbz x1, .L3046 + ldr x3, [x27, 24] + ldr w1, [x3, 8] + cmp w0, w1 + beq .L3046 + cmn w0, #1 + beq .L3046 + add x7, x24, :lo12:.LANCHOR0 + add x4, x20, :lo12:.LANCHOR3 + mov w5, 24 + mov w26, 1 + ldrb w1, [x7, 1205] + ldrh w8, [x4, 1304] + sub w1, w5, w1 + sub w1, w1, w8 + lsr w2, w0, w8 + lsl w1, w26, w1 + sub w1, w1, #1 + and w1, w1, w2 + ldrb w2, [x4, 1306] + udiv w1, w1, w2 + ldr x2, [x29, 112] + ldrh w2, [x2] + cmp w2, w1, uxth + bne .L3046 + ldr x1, [x29, 104] + ldr w8, [x3] + ldrb w3, [x4, 1946] + stp w5, w8, [x29, 136] + ldr x2, [x1, 376] + ldr x1, [x27, 8] + str x7, [x29, 120] + str x4, [x29, 152] + bl ftl_read_ppa_page + ldr x0, [x29, 104] + ldr w8, [x29, 140] + ldr x0, [x0, 376] + ldr w0, [x0] + cmp w8, w0 + bhi .L3046 + ldr x0, [x27, 24] + ldr w3, [x0, 8] + cmn w3, #1 + beq .L3041 + ldr x7, [x29, 120] + ldr x4, [x29, 152] + ldr w5, [x29, 136] + ldrb w2, [x7, 1205] + ldrh w1, [x4, 1304] + sub w5, w5, w2 + sub w5, w5, w1 + lsr w0, w3, w1 + lsl w26, w26, w5 + sub w26, w26, #1 + and w26, w26, w0 + ldrb w0, [x4, 1306] + udiv w0, w26, w0 + bl ftl_vpn_decrement + b .L3041 +.L3053: + ldrh w2, [x19, 12] + add w2, w2, w1 + ldr w2, [x4, x2, lsl 2] + cmn w2, #1 + beq .L3052 + add w22, w0, 1 + and w0, w22, 65535 +.L3052: + add w1, w1, 1 + b .L3051 +.L3068: + ldr w0, [x25, x23, lsl 2] + cmn w0, #1 + bne .L3057 +.L3061: + add x1, x24, :lo12:.LANCHOR0 + ldr x0, [x27, 24] + mov w22, -1 + mov x2, 0 + ldr x1, [x1, 3384] + ldr w1, [x1, 8] + str w1, [x0] + 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, [x27, 24] + str wzr, [x0, 16] + ldr x0, [x27, 8] + str wzr, [x0] + mov w0, 2 + ldr x1, [x27, 24] + add x1, x1, 16 + bl ftl_debug_info_fill +.L3058: + ldr w0, [x29, 120] + cbz w0, .L3063 + ldrh w0, [x19, 6] + cmp w0, 1 + bls .L3063 + add x0, x20, :lo12:.LANCHOR3 + str x0, [x29, 144] +.L3122: + mov x0, x19 + bl ftl_get_new_free_page + mov w26, w0 + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 14, .L3065 + ldrh w0, [x19, 12] + mov w1, w26 + ldrh w3, [x19, 10] + add w3, w3, w0 + ldr x0, [x27, 24] + sub w3, w3, #1 + ldr w2, [x0, 4] + ldr x0, [x29, 112] + bl printk +.L3065: + ldr x0, [x29, 144] + ldr w2, [x29, 152] + ldrh w1, [x19, 6] + ldrb w0, [x0, 1321] + mul w0, w0, w2 + ldr w2, [x29, 140] + add w0, w0, 1 + sub w0, w0, w2 + cmp w1, w0 + bls .L3063 + ldr x0, [x29, 144] + ldr x1, [x27, 8] + ldr x2, [x27, 24] + ldrb w3, [x0, 1946] + mov w0, w26 + bl ftl_prog_ppa_page + mov w1, w0 + ldrh w0, [x19] + str w1, [x29, 104] + bl ftl_vpn_decrement + ldr w1, [x29, 104] + cmn w22, #1 + ccmn w1, #1, 4, ne + beq .L3066 + add x0, x29, 224 + ldrh w1, [x19, 12] + str w26, [x0, x23, lsl 2] + ldrh w0, [x19, 10] + add w0, w0, w1 + sub w0, w0, #1 + str w0, [x28, x23, lsl 2] +.L3063: + add x23, x23, 1 + b .L3056 +.L3057: + ldrb w3, [x1, 1946] + ldr x2, [x27, 24] + ldr x1, [x27, 8] + bl ftl_read_ppa_page + mov w22, w0 + ldr x0, [x27, 24] + ldr w0, [x0, 4] + bl lpa_hash_get_ppa + mov w26, w0 + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 14, .L3059 + ldr x0, [x27, 24] + mov w1, w26 + ldr w2, [x25, x23, lsl 2] + ldr w3, [x0, 4] + ldr x0, [x29, 128] + bl printk +.L3059: + ldr w0, [x25, x23, lsl 2] + mov w1, 1 + mov x2, 0 + cmp w26, w0 + ldr x0, [x27, 24] + csinv w22, w22, wzr, eq + str w26, [x0, 8] + ldr x0, [x27, 24] + str w1, [x0, 12] + ldr x0, [x27, 24] + str wzr, [x0, 16] + mov w0, 2 + ldr x1, [x27, 24] + add x1, x1, 16 + bl ftl_debug_info_fill + cmn w22, #1 + bne .L3058 + b .L3061 +.L3066: + ldrh w0, [x19, 6] + cmp w0, 1 + bls .L3063 + cmn w22, #1 + bne .L3122 + b .L3063 +.L3075: + add x0, x29, 224 + ldr w0, [x0, x24, lsl 2] + cmn w0, #1 + beq .L3071 + ldrb w3, [x20, 1946] + ldr w0, [x25, x24, lsl 2] + ldr x1, [x27, 8] + ldr x2, [x27, 24] + bl ftl_read_ppa_page + cmp w0, 256 + ccmn w0, #1, 4, ne + bne .L3071 + add x0, x29, 224 + ldrb w3, [x20, 1946] + ldr x1, [x27, 8] + ldr x2, [x27, 24] + ldr w0, [x0, x24, lsl 2] + bl ftl_read_ppa_page + mov w26, w0 + ldr w0, [x21, #:lo12:.LANCHOR2] + tbz x0, 14, .L3073 + ldr x0, [x27, 24] + mov w1, w26 + ldr w3, [x25, x24, lsl 2] + ldr w2, [x0, 8] + mov x0, x23 + bl printk +.L3073: + cmn w26, #1 + beq .L3071 + ldr x0, [x27, 24] + ldr w2, [x25, x24, lsl 2] + ldr w1, [x0, 8] + cmp w2, w1 + bne .L3071 + ldr w1, [x21, #:lo12:.LANCHOR2] + tbz x1, 14, .L3074 + ldr w1, [x0, 4] + mov x0, x22 + ldr w3, [x28, x24, lsl 2] + bl printk +.L3074: + ldr x0, [x27, 24] + lsl x1, x24, 2 + ldrh w2, [x28, x1] + ldr w1, [x0, 8] + ldr w0, [x0, 4] + bl lpa_hash_update_ppa +.L3071: + add x24, x24, 1 + b .L3069 +.L3046: + ldr x2, [x27, 24] + add x1, x24, :lo12:.LANCHOR0 + ldr w0, [x1, 3364] + ldr w3, [x2, 4] + cmp w3, w0 + bcs .L3041 + add x4, x20, :lo12:.LANCHOR3 + ldrb w0, [x19, 9] + ldrh w3, [x19, 10] + ldrh w4, [x4, 1376] + mul w0, w0, w4 + sub w0, w0, #1 + cmp w3, w0 + bge .L3041 + ldr x0, [x1, 3384] + ldr w2, [x2] + ldr w1, [x0, 8] + cmp w2, w1 + bls .L3047 + str w2, [x0, 8] +.L3047: + ldr x0, [x27, 24] + ldrh w1, [x19, 12] + ldrh w2, [x19, 10] + add w2, w2, w1 + ldr w1, [x0, 8] + ldr w0, [x0, 4] + bl lpa_hash_update_ppa + ldr w0, [x29, 164] + str w0, [x29, 160] + ldr w0, [x29, 168] + str w0, [x29, 164] + ldr w0, [x29, 172] + str w0, [x29, 168] + ldr w0, [x29, 128] + str w0, [x29, 172] + b .L3041 .size ftl_open_sblk_recovery, .-ftl_open_sblk_recovery .align 2 .global dump_ftl_info @@ -20004,103 +19873,100 @@ ftl_open_sblk_recovery: dump_ftl_info: stp x29, x30, [sp, -32]! adrp x0, .LC224 - add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 add x0, x0, :lo12:.LC224 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 adrp x20, .LANCHOR3 add x20, x20, :lo12:.LANCHOR3 - ldrb w1, [x19,3362] + ldrb w1, [x19, 3353] bl printk - adrp x3, .LANCHOR5 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + ldrh w3, [x0, 386] + ldrb w2, [x0, 385] + ldrb w1, [x0, 384] adrp x0, .LC225 - add x3, x3, :lo12:.LANCHOR5 add x0, x0, :lo12:.LC225 - ldrb w1, [x3,640] - ldrb w2, [x3,641] - ldrh w3, [x3,642] bl printk - ldr x2, [x19,3392] + ldr x0, [x19, 3384] + ldrh w2, [x0, 140] + ldrh w1, [x0, 130] adrp x0, .LC226 add x0, x0, :lo12:.LC226 - ldrh w1, [x2,130] - ldrh w2, [x2,140] bl printk - ldr x1, [x19,1120] + ldr x1, [x19, 1128] adrp x0, .LC227 add x0, x0, :lo12:.LC227 - add x5, x1, 16 - ldrh w1, [x1,16] - ldrh w2, [x5,2] - ldrb w3, [x5,5] - ldrh w4, [x5,6] - ldrh w5, [x5,10] + ldrh w5, [x1, 26] + ldrh w4, [x1, 22] + ldrb w3, [x1, 21] + ldrh w2, [x1, 18] + ldrh w1, [x1, 16] bl printk - ldr x1, [x19,1120] + ldr x1, [x19, 1128] adrp x0, .LC228 add x0, x0, :lo12:.LC228 - add x5, x1, 48 - ldrh w1, [x1,48] - ldrh w2, [x5,2] - ldrb w3, [x5,5] - ldrh w4, [x5,6] - ldrh w5, [x5,10] + ldrh w5, [x1, 58] + ldrh w4, [x1, 54] + ldrb w3, [x1, 53] + ldrh w2, [x1, 50] + ldrh w1, [x1, 48] bl printk - ldr x1, [x19,1120] + ldr x1, [x19, 1128] adrp x0, .LC229 add x0, x0, :lo12:.LC229 - add x5, x1, 80 - ldrh w1, [x1,80] - ldrh w4, [x5,6] - ldrh w2, [x5,2] - ldrb w3, [x5,5] - ldrh w5, [x5,10] + ldrh w5, [x1, 90] + ldrh w4, [x1, 86] + ldrb w3, [x1, 85] + ldrh w2, [x1, 82] + ldrh w1, [x1, 80] bl printk - ldrh w0, [x20,1384] + ldrb w0, [x20, 1321] mov w2, 4 - ldrb w3, [x20,1329] - ldr x1, [x20,1936] - mul w3, w0, w3 + ldrh w3, [x20, 1376] + ldr x1, [x20, 1928] + mul w3, w3, w0 adrp x0, .LC230 add x0, x0, :lo12:.LC230 lsl w3, w3, 1 bl rknand_print_hex - ldr x1, [x19,1112] - adrp x0, .LC231 - ldrh w3, [x19,1088] - add x0, x0, :lo12:.LC231 + ldrh w3, [x19, 1096] mov w2, 2 + ldr x1, [x19, 1120] + adrp x0, .LC231 + add x0, x0, :lo12:.LC231 bl rknand_print_hex - ldr x3, [x19,3392] + ldr x1, [x19, 3384] + mov w2, 4 adrp x0, .LC211 add x0, x0, :lo12:.LC211 - mov w2, 4 - add x1, x3, 704 - ldrh w3, [x3,698] + add x1, x1, 704 + ldrh w3, [x1, -6] bl rknand_print_hex - ldr x1, [x19,1096] + ldrh w3, [x19, 1096] + mov w2, 4 + ldr x1, [x19, 1104] adrp x0, .LC232 - ldrh w3, [x19,1088] add x0, x0, :lo12:.LC232 - mov w2, 4 bl rknand_print_hex - adrp x0, .LC233 - add x1, x20, 1424 - add x0, x0, :lo12:.LC233 - mov w2, 2 + add x1, x20, 1416 mov w3, 256 - bl rknand_print_hex - ldrh w0, [x20,1384] mov w2, 2 - ldrb w3, [x20,1329] - ldr x1, [x20,1944] - mul w3, w0, w3 + adrp x0, .LC233 + add x0, x0, :lo12:.LC233 + bl rknand_print_hex + ldrb w0, [x20, 1321] + mov w2, 2 + ldrh w3, [x20, 1376] + ldr x1, [x20, 1936] + mul w3, w3, w0 adrp x0, .LC234 add x0, x0, :lo12:.LC234 lsl w3, w3, 1 bl rknand_print_hex - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size dump_ftl_info, .-dump_ftl_info @@ -20109,376 +19975,360 @@ dump_ftl_info: .type pm_ppa_update_check, %function pm_ppa_update_check: adrp x3, .LANCHOR0 - adrp x7, .LANCHOR3 add x3, x3, :lo12:.LANCHOR0 - add x7, x7, :lo12:.LANCHOR3 - stp x29, x30, [sp, -16]! + adrp x6, .LANCHOR3 + add x6, x6, :lo12:.LANCHOR3 mov w5, 24 - add x29, sp, 0 - ldrb w6, [x3,1257] - ldrh w4, [x7,1312] - sub w5, w5, w6 - mov w6, 1 - sub w5, w5, w4 - lsr w4, w2, w4 - lsl w5, w6, w5 - ldr x3, [x3,1096] - sub w5, w5, #1 - and w4, w5, w4 - ldrb w5, [x7,1314] + ldrb w4, [x3, 1205] + ldrh w7, [x6, 1304] + sub w4, w5, w4 + ldr x3, [x3, 1104] + sub w5, w4, w7 + mov w4, 1 + lsr w7, w2, w7 + lsl w4, w4, w5 + ldrb w5, [x6, 1306] + sub w4, w4, #1 + and w4, w4, w7 udiv w4, w4, w5 add x4, x3, w4, uxth 2 - ldrb w3, [x4,2] + ldrb w3, [x4, 2] ubfx x3, x3, 5, 3 - cmp w3, 7 - cset w4, eq - cbnz w4, .L3155 - cmp w3, w6 - bne .L3152 -.L3155: + cmp w3, 1 + ccmp w3, 7, 4, ne + bne .L3151 mov w3, w2 mov w2, w1 mov x1, x0 + stp x29, x30, [sp, -16]! adrp x0, .LC235 add x0, x0, :lo12:.LC235 + add x29, sp, 0 bl printk bl dump_ftl_info - mov w4, -1 -.L3152: - mov w0, w4 + mov w0, -1 ldp x29, x30, [sp], 16 ret +.L3151: + mov w0, 0 + ret .size pm_ppa_update_check, .-pm_ppa_update_check .align 2 .type load_l2p_region, %function load_l2p_region: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -80]! add x29, sp, 0 - stp x21, x22, [sp,32] - uxth x22, w1 - str x27, [sp,80] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - cmp w22, 31 - uxth w21, w0 - bls .L3158 + stp x19, x20, [sp, 16] + and w20, w0, 65535 + stp x21, x22, [sp, 32] + and x21, x1, 65535 + stp x23, x24, [sp, 48] + cmp w21, 31 + stp x25, x26, [sp, 64] + bls .L3157 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 816 mov w2, 32 - add x1, x1, 800 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3158: - adrp x24, .LANCHOR0 - adrp x20, .LANCHOR5 - add x26, x24, :lo12:.LANCHOR0 - ldr x0, [x26,3392] - ldrh w2, [x0,698] - cmp w21, w2 - bls .L3159 +.L3157: + adrp x23, .LANCHOR0 + add x22, x23, :lo12:.LANCHOR0 + adrp x19, .LANCHOR5 + ldr x0, [x22, 3384] + ldrh w2, [x0, 698] + cmp w2, w20 + bcs .L3158 + mov w1, w20 adrp x0, .LC236 - mov w1, w21 + add x19, x19, :lo12:.LANCHOR5 add x0, x0, :lo12:.LC236 - mov x19, 0 - add x20, x20, :lo12:.LANCHOR5 bl printk - ldr x0, [x19,8] + mov x0, 0 mov w1, 255 - ldrh w2, [x20,998] + ldrh w2, [x19, 462] + ldr x0, [x0, 8] bl ftl_memset - ldr x0, [x26,3392] - ldrh w0, [x0,698] - cmp w0, w21 - bcs .L3171 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC0 - add x1, x1, 800 - mov w2, 37 - b .L3172 + ldr x0, [x22, 3384] + ldrh w0, [x0, 698] + cmp w0, w20 + bcc .L3159 +.L3169: + mov w0, 0 +.L3156: + 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 .L3159: - add x0, x0, w21, sxtw 2 - adrp x25, .LANCHOR3 - ldr w19, [x0,704] - add x0, x25, :lo12:.LANCHOR3 - add x0, x0, 1968 - lsl x1, x22, 4 - add x27, x0, x1 - strh w21, [x0,x1] - strh wzr, [x27,2] - cbnz w19, .L3162 + mov w2, 37 +.L3170: + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 816 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack + b .L3169 +.L3158: + add x0, x0, w20, sxtw 2 + adrp x22, .LANCHOR3 + lsl x1, x21, 4 + ldr w24, [x0, 704] + add x0, x22, :lo12:.LANCHOR3 + add x2, x0, 1960 + add x26, x2, x1 + strh w20, [x2, x1] + strh wzr, [x26, 2] + cbnz w24, .L3161 + add x19, x19, :lo12:.LANCHOR5 + mov w1, w20 + mov w2, 0 adrp x0, .LC237 - mov w1, w21 - mov w2, w19 - add x20, x20, :lo12:.LANCHOR5 add x0, x0, :lo12:.LC237 bl printk - ldr x0, [x27,8] + ldrh w2, [x19, 462] mov w1, 255 - ldrh w2, [x20,998] + ldr x0, [x26, 8] bl ftl_memset - b .L3171 -.L3162: - add x23, x20, :lo12:.LANCHOR5 - ldrb w3, [x26,3360] - ldr x1, [x27,8] - mov w0, w19 - ldr x2, [x23,968] + b .L3169 +.L3161: + add x25, x19, :lo12:.LANCHOR5 + ldrb w3, [x0, 1946] + ldr x1, [x26, 8] + mov w0, w24 + ldr x2, [x25, 432] bl ftl_read_ppa_page - mov w3, w0 - ldr x0, [x23,968] - ldr w2, [x0] - cmp w2, w21 - bne .L3163 - cmn w3, #1 - beq .L3163 - cmp w3, 512 - beq .L3163 -.L3168: - add x20, x20, :lo12:.LANCHOR5 - ldr x0, [x20,968] + ldr x1, [x25, 432] + ldr w2, [x1] + cmp w2, w20 + bne .L3162 + cmp w0, 512 + ccmn w0, #1, 4, ne + beq .L3162 +.L3166: + add x19, x19, :lo12:.LANCHOR5 + ldr x0, [x19, 432] ldr w0, [x0] - cmp w0, w21 - beq .L3171 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC0 - add x1, x1, 800 + cmp w20, w0 + beq .L3169 mov w2, 73 - b .L3172 -.L3163: + b .L3170 +.L3162: + add x23, x23, :lo12:.LANCHOR0 + mov w4, w24 + mov w3, w0 + mov w1, w20 adrp x0, .LC238 - mov w4, w19 - add x24, x24, :lo12:.LANCHOR0 - mov w1, w21 add x0, x0, :lo12:.LC238 - add x23, x25, :lo12:.LANCHOR3 - add x23, x23, 1968 - add x26, x20, :lo12:.LANCHOR5 bl printk - add x23, x23, x22, lsl 4 - ldr x3, [x24,3392] + add x22, x22, :lo12:.LANCHOR3 + ldr x1, [x23, 3384] + mov w2, 4 adrp x0, .LC239 add x0, x0, :lo12:.LC239 - mov w2, 4 - add x1, x3, 704 - ldrh w3, [x3,698] + add x1, x1, 704 + add x23, x19, :lo12:.LANCHOR5 + ldrh w3, [x1, -6] bl rknand_print_hex - ldrb w3, [x24,3360] + add x0, x22, 1960 + ldrb w3, [x22, 1946] + add x21, x0, x21, lsl 4 + mov w2, 4 adrp x0, .LC218 - ldr x1, [x23,8] add x0, x0, :lo12:.LC218 - mov w2, 4 lsl w3, w3, 7 + ldr x1, [x21, 8] bl rknand_print_hex - ldr x1, [x26,968] + ldr x1, [x23, 432] + mov w3, 16 + mov w2, 4 adrp x0, .LC240 add x0, x0, :lo12:.LC240 - mov w2, 4 - mov w3, 16 bl rknand_print_hex - ldr x1, [x23,8] - mov w0, w19 - ldr x2, [x26,968] - ldrb w3, [x24,3360] + ldrb w3, [x22, 1946] + mov w0, w24 + ldr x1, [x21, 8] + ldr x2, [x23, 432] bl ftl_read_ppa_page cmp w0, 512 - beq .L3170 - cmn w0, #1 - bne .L3166 -.L3170: - add x25, x25, :lo12:.LANCHOR3 - add x20, x20, :lo12:.LANCHOR5 - add x22, x25, x22, lsl 4 + ccmn w0, #1, 4, ne + bne .L3165 + ldrh w2, [x23, 462] mov w1, 255 - ldrh w2, [x20,998] - ldr x0, [x22,1976] + ldr x0, [x21, 8] bl ftl_memset +.L3167: mov w0, -1 - b .L3161 -.L3166: - ldr x0, [x26,968] - ldr w1, [x0] - mov w0, -1 - cmp w1, w21 - beq .L3168 - b .L3161 -.L3172: - bl printk - bl dump_stack -.L3171: - mov w0, 0 -.L3161: - 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 + b .L3156 +.L3165: + ldr x0, [x23, 432] + ldr w0, [x0] + cmp w20, w0 + beq .L3166 + b .L3167 .size load_l2p_region, .-load_l2p_region .align 2 .global pm_gc .type pm_gc, %function pm_gc: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - adrp x20, .LANCHOR5 add x0, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + adrp x20, .LANCHOR5 add x1, x20, :lo12:.LANCHOR5 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldr x0, [x0,3392] - ldrh w2, [x0,688] - ldrh w0, [x1,264] + ldr x0, [x0, 3384] + ldrh w2, [x0, 688] + ldrh w0, [x1, 220] sub w0, w0, #1 cmp w2, w0 - bge .L3174 - ldr w0, [x1,256] - cbz w0, .L3175 -.L3174: + bge .L3172 + ldr w0, [x1, 212] + cbz w0, .L3173 +.L3172: bl pm_free_sblk add x1, x19, :lo12:.LANCHOR0 add x3, x20, :lo12:.LANCHOR5 - ldr x2, [x1,3392] - ldrh w1, [x3,264] - ldrh w4, [x2,688] + ldr x2, [x1, 3384] + ldrh w1, [x3, 220] sub w1, w1, #1 + ldrh w4, [x2, 688] cmp w4, w1 - bge .L3176 - ldr w1, [x3,256] - cbz w1, .L3175 -.L3176: + bge .L3174 + ldr w1, [x3, 212] + cbz w1, .L3173 +.L3174: add x20, x20, :lo12:.LANCHOR5 add x0, x2, w0, uxth 1 - ldrh w21, [x0,416] - str wzr, [x20,256] + str wzr, [x20, 212] mov w20, 65535 - cmp w21, w20 - bne .L3178 + ldrh w22, [x0, 416] + cmp w22, w20 + bne .L3176 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 832 mov w2, 182 - add x1, x1, 816 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack bl pm_free_sblk add x1, x19, :lo12:.LANCHOR0 - ldr x1, [x1,3392] + ldr x1, [x1, 3384] add x0, x1, w0, uxth 1 - ldrh w21, [x0,416] - cmp w21, w20 - beq .L3175 -.L3178: + ldrh w22, [x0, 416] + cmp w22, w20 + beq .L3173 +.L3176: bl pm_select_ram_region - adrp x26, .LANCHOR3 - uxth x20, w0 - add x0, x26, :lo12:.LANCHOR3 - lsl x1, x20, 4 - add x0, x0, 1968 - add x23, x0, x1 - mov x22, x20 - ldrh w0, [x0,x1] + adrp x24, .LANCHOR3 + and x21, x0, 65535 + add x0, x24, :lo12:.LANCHOR3 + lsl x1, x21, 4 + add x0, x0, 1960 + add x20, x0, x1 + mov x23, x21 + ldrh w0, [x0, x1] mov w1, 65535 cmp w0, w1 - beq .L3179 - ldr x1, [x23,8] - cbz x1, .L3179 - ldrsh w2, [x23,2] - tbz w2, #31, .L3179 + beq .L3177 + ldr x1, [x20, 8] + cbz x1, .L3177 + ldrsh w2, [x20, 2] + tbz w2, #31, .L3177 bl pm_write_page - ldrh w0, [x23,2] + ldrh w0, [x20, 2] and w0, w0, 32767 - strh w0, [x23,2] -.L3179: - add x26, x26, :lo12:.LANCHOR3 - mov w25, 0 - add x0, x26, 1968 - mov w23, 24 - mov w24, 1 - add x20, x0, x20, lsl 4 -.L3180: - add x2, x19, :lo12:.LANCHOR0 - ldr x0, [x2,3392] - ldrh w1, [x0,698] - cmp w1, w25 - bls .L3190 - ldrb w2, [x2,1257] - add x0, x0, w25, sxtw 2 - ldrh w1, [x26,1312] - ldr w0, [x0,704] - sub w2, w23, w2 - lsr w0, w0, w1 - sub w1, w2, w1 - lsl w1, w24, w1 - sub w1, w1, #1 - and w1, w0, w1 - ldrb w0, [x26,1314] - udiv w1, w1, w0 - cmp w21, w1, uxth - bne .L3181 - mov w0, w25 - mov w1, w22 - bl load_l2p_region - cbnz w0, .L3182 - ldr x1, [x20,8] - mov w0, w25 - bl pm_write_page -.L3182: - mov w0, -1 - strh w0, [x20] -.L3181: - add w25, w25, 1 - uxth w25, w25 - b .L3180 -.L3190: + strh w0, [x20, 2] +.L3177: + add x24, x24, :lo12:.LANCHOR3 + add x19, x19, :lo12:.LANCHOR0 + add x0, x24, 1960 + mov w20, 0 + add x21, x0, x21, lsl 4 +.L3178: + ldr x2, [x19, 3384] + ldrh w0, [x2, 698] + cmp w0, w20 + bhi .L3181 bl pm_free_sblk -.L3175: +.L3173: 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 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 64 ret +.L3181: + ldrb w1, [x19, 1205] + mov w0, 24 + ldrh w3, [x24, 1304] + add x2, x2, w20, sxtw 2 + sub w0, w0, w1 + sub w1, w0, w3 + mov w0, 1 + lsl w0, w0, w1 + ldr w1, [x2, 704] + sub w0, w0, #1 + lsr w1, w1, w3 + and w0, w0, w1 + ldrb w1, [x24, 1306] + udiv w0, w0, w1 + cmp w22, w0, uxth + bne .L3179 + mov w1, w23 + mov w0, w20 + bl load_l2p_region + cbnz w0, .L3180 + ldr x1, [x21, 8] + mov w0, w20 + bl pm_write_page +.L3180: + mov w0, -1 + strh w0, [x21] +.L3179: + add w20, w20, 1 + and w20, w20, 65535 + b .L3178 .size pm_gc, .-pm_gc .align 2 .global pm_flush_id .type pm_flush_id, %function pm_flush_id: stp x29, x30, [sp, -32]! - adrp x1, .LANCHOR3 + adrp x2, .LANCHOR3 + add x2, x2, :lo12:.LANCHOR3 ubfiz x0, x0, 4, 16 - add x1, x1, :lo12:.LANCHOR3 + add x2, x2, 1960 add x29, sp, 0 - add x1, x1, 1968 - str x19, [sp,16] - add x19, x1, x0 - ldrh w0, [x1,x0] - ldr x1, [x19,8] + str x19, [sp, 16] + add x19, x2, x0 + ldrh w0, [x2, x0] + ldr x1, [x19, 8] bl pm_write_page - ldrh w0, [x19,2] + ldrh w0, [x19, 2] and w0, w0, 32767 - strh w0, [x19,2] + strh w0, [x19, 2] adrp x19, .LANCHOR5 add x19, x19, :lo12:.LANCHOR5 - ldr w0, [x19,960] - cbz w0, .L3192 + ldr w0, [x19, 424] + cbz w0, .L3190 bl pm_gc - str wzr, [x19,960] -.L3192: + str wzr, [x19, 424] +.L3190: mov w0, 0 - ldr x19, [sp,16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size pm_flush_id, .-pm_flush_id @@ -20488,23 +20338,24 @@ pm_flush_id: pm_flush: stp x29, x30, [sp, -32]! add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x20, .LANCHOR3 - mov x19, 0 - add x20, x20, :lo12:.LANCHOR3 - add x20, x20, 1968 -.L3198: - add x1, x20, x19, lsl 4 - uxth w0, w19 - ldrsh w1, [x1,2] - tbz w1, #31, .L3197 - bl pm_flush_id + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR3 + add x19, x19, :lo12:.LANCHOR3 + mov w20, 0 + add x19, x19, 1962 .L3197: - add x19, x19, 1 - cmp x19, 32 - bne .L3198 + ldrsh w0, [x19] + tbz w0, #31, .L3196 + mov w0, w20 + bl pm_flush_id +.L3196: + add w20, w20, 1 + add x19, x19, 16 + and w20, w20, 65535 + cmp w20, 32 + bne .L3197 mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size pm_flush, .-pm_flush @@ -20540,374 +20391,363 @@ zftl_deinit: pm_init: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR5 add x19, x20, :lo12:.LANCHOR5 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - mov w23, w0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov w24, w0 + stp x25, x26, [sp, 64] mov w0, 1 - strb w0, [x19,976] + stp x27, x28, [sp, 80] + mov w25, -1 + strb w0, [x19, 440] mov w0, 64 - str wzr, [x19,256] - mov w24, -1 - str wzr, [x19,960] - bl ftl_malloc - str x0, [x19,968] + str wzr, [x19, 212] + str wzr, [x19, 424] + bl ftl_dma32_malloc + str x0, [x19, 432] adrp x19, .LANCHOR3 - add x1, x19, :lo12:.LANCHOR3 - adrp x25, .LANCHOR0 - add x21, x1, 1968 - add x22, x1, 2480 -.L3204: - strh w24, [x21] - strh wzr, [x21,2] - cbz w23, .L3203 - add x0, x25, :lo12:.LANCHOR0 - ldrb w0, [x0,3360] + add x0, x19, :lo12:.LANCHOR3 + add x21, x0, 1960 + add x23, x0, 2472 + mov x22, x0 +.L3206: + strh w25, [x21] + strh wzr, [x21, 2] + cbz w24, .L3205 + ldrb w0, [x22, 1946] lsl w0, w0, 9 - bl ftl_malloc - str x0, [x21,8] -.L3203: + bl ftl_dma32_malloc + str x0, [x21, 8] +.L3205: add x21, x21, 16 - cmp x21, x22 - bne .L3204 + cmp x21, x23 + bne .L3206 add x0, x19, :lo12:.LANCHOR3 adrp x21, .LANCHOR0 add x23, x21, :lo12:.LANCHOR0 mov w4, 4 - ldr x26, [x0,1976] + ldr x26, [x0, 1968] add x0, x20, :lo12:.LANCHOR5 - ldr x1, [x23,3392] mov x2, x26 - ldr x22, [x0,968] - ldrb w0, [x1,694] - ldrh w1, [x1,692] + ldr x22, [x0, 432] + ldr x0, [x23, 3384] mov x3, x22 + ldrh w1, [x0, 692] + ldrb w0, [x0, 694] bl flash_get_last_written_page sxth w24, w0 - ldr x1, [x23,3392] + ldr x0, [x23, 3384] mov w25, w24 - ldrh w2, [x1,696] + ldrh w2, [x0, 696] cmp w2, w24 - bgt .L3205 - adrp x0, .LC241 - ldrh w1, [x1,692] - add x0, x0, :lo12:.LC241 + bgt .L3207 + ldrh w1, [x0, 692] mov w3, w24 - adrp x27, .LC242 + adrp x0, .LC241 + add x0, x0, :lo12:.LC241 adrp x28, .LC243 - bl printk add x28, x28, :lo12:.LC243 - ldr x0, [x23,3392] - ldrsh w23, [x0,696] + adrp x27, .LC242 + bl printk + ldr x0, [x23, 3384] + ldrsh w23, [x0, 696] add w0, w24, 1 - str w0, [x29,124] + str w0, [x29, 124] add x0, x27, :lo12:.LC242 - str x0, [x29,112] -.L3206: - ldr w0, [x29,124] - cmp w23, w0 - bge .L3227 - add x27, x21, :lo12:.LANCHOR0 - add x1, x19, :lo12:.LANCHOR3 - mov x2, x26 - mov x3, x22 - ldr x0, [x27,3392] - ldrh w1, [x1,1418] - ldrb w4, [x27,3360] - ldrh w24, [x0,692] - ldrb w0, [x0,694] - madd w24, w24, w1, w23 - mov w1, w24 - bl flash_read_page_en - mov w4, w0 - ldr x3, [x27,3392] - mov w2, w24 - ldr x0, [x29,112] - str x4, [x29,104] - ldr w1, [x3,48] - add w1, w1, 1 - str w1, [x3,48] - ldrh w3, [x3,694] - ldr w1, [x22] - bl printk - ldr x4, [x29,104] - cmp w4, 512 - beq .L3207 - cmn w4, #1 - beq .L3207 - ldr x0, [x27,3392] - ldr w1, [x22] - ldrh w0, [x0,698] - cmp w1, w0 - bcs .L3207 - ldr w2, [x22,8] - cbz w2, .L3208 - ldrb w1, [x27,3360] - mov x0, x26 - str x2, [x29,104] - lsl w1, w1, 9 - bl js_hash - ldr x2, [x29,104] - cmp w2, w0 - beq .L3208 - ldr w1, [x22,8] - mov x0, x28 - bl printk - b .L3207 + str x0, [x29, 112] .L3208: - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0,3392] - ldr w0, [x22] - add x0, x0, 176 - str w24, [x1,x0,lsl 2] -.L3207: - add w23, w23, 1 - sxth w23, w23 - b .L3206 -.L3227: + ldr w0, [x29, 124] + cmp w23, w0 + blt .L3211 add x0, x20, :lo12:.LANCHOR5 add x21, x21, :lo12:.LANCHOR0 mov w1, 1 add w25, w25, 1 - strb w1, [x0,657] - ldr x0, [x21,3392] - strh w25, [x0,696] + strb w1, [x0, 401] + ldr x0, [x21, 3384] + strh w25, [x0, 696] bl pm_free_sblk -.L3205: +.L3207: add x19, x19, :lo12:.LANCHOR3 add x20, x20, :lo12:.LANCHOR5 mov w1, 255 - add x19, x19, 1968 - ldr x0, [x19,8] - ldrh w2, [x20,998] + add x19, x19, 1960 + ldrh w2, [x20, 462] + ldr x0, [x19, 8] bl ftl_memset - ldr x1, [x19,8] + ldr x1, [x19, 8] mov w0, -1 bl pm_write_page - ldrb w0, [x20,657] - cbz w0, .L3210 - ldr x1, [x19,8] + ldrb w0, [x20, 401] + cbz w0, .L3212 + ldr x1, [x19, 8] mov w0, -1 bl pm_write_page - ldr x1, [x19,8] + ldr x1, [x19, 8] mov w0, -1 bl pm_write_page - ldr x1, [x19,8] + ldr x1, [x19, 8] mov w0, -1 bl pm_write_page -.L3210: +.L3212: bl pm_free_sblk bl pm_gc 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 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 +.L3211: + add x27, x21, :lo12:.LANCHOR0 + add x5, x19, :lo12:.LANCHOR3 + mov x3, x22 + mov x2, x26 + str x5, [x29, 104] + ldr x0, [x27, 3384] + ldrh w1, [x5, 1410] + ldrb w4, [x5, 1946] + ldrh w24, [x0, 692] + ldrb w0, [x0, 694] + madd w24, w24, w1, w23 + mov w1, w24 + bl flash_read_page_en + mov w4, w0 + ldr x0, [x27, 3384] + str w4, [x29, 120] + mov w2, w24 + ldr w1, [x0, 48] + ldrh w3, [x0, 694] + add w1, w1, 1 + str w1, [x0, 48] + ldr x0, [x29, 112] + ldr w1, [x22] + bl printk + ldr w4, [x29, 120] + cmp w4, 512 + ccmn w4, #1, 4, ne + beq .L3209 + ldr x0, [x27, 3384] + ldr w1, [x22] + ldrh w0, [x0, 698] + cmp w1, w0 + bcs .L3209 + ldr w2, [x22, 8] + ldr x5, [x29, 104] + cbz w2, .L3210 + ldrb w1, [x5, 1946] + mov x0, x26 + str w2, [x29, 120] + lsl w1, w1, 9 + bl js_hash + ldr w2, [x29, 120] + cmp w2, w0 + beq .L3210 + ldr w1, [x22, 8] + mov x0, x28 + bl printk +.L3209: + add w23, w23, 1 + sxth w23, w23 + b .L3208 +.L3210: + add x0, x21, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldr w0, [x22] + add x0, x0, 176 + str w24, [x1, x0, lsl 2] + b .L3209 .size pm_init, .-pm_init .align 2 .global pm_log2phys .type pm_log2phys, %function pm_log2phys: stp x29, x30, [sp, -96]! - mov w3, w0 add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - add x0, x23, :lo12:.LANCHOR0 - stp x25, x26, [sp,64] - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - mov w25, w2 - mov x22, x1 - ldrb w20, [x0,3360] - ldr w2, [x0,3372] - lsl w24, w20, 7 - lsl w20, w20, 7 - cmp w3, w2 - udiv w24, w3, w24 - uxth w26, w24 - msub w20, w26, w20, w3 - uxth x20, w20 - bcc .L3229 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR3 + stp x23, x24, [sp, 48] + mov x23, x1 + add x1, x21, :lo12:.LANCHOR3 + stp x25, x26, [sp, 64] + stp x19, x20, [sp, 16] + mov w24, w2 + str x27, [sp, 80] + adrp x22, .LANCHOR0 + add x2, x22, :lo12:.LANCHOR0 + ldrb w20, [x1, 1946] + ldr w2, [x2, 3364] + lsl w25, w20, 7 + ubfiz w20, w20, 7, 9 + cmp w0, w2 + udiv w25, w0, w25 + and w26, w25, 65535 + msub w20, w26, w20, w0 + bcc .L3228 + mov w1, w0 adrp x0, .LC244 - mov w1, w3 add x0, x0, :lo12:.LC244 bl printk mov w0, -1 - cbnz w25, .L3230 - str w0, [x22] - b .L3230 -.L3229: - adrp x21, .LANCHOR3 - mov x19, 0 - add x1, x21, :lo12:.LANCHOR3 - add x1, x1, 1968 -.L3235: - ldr x0, [x1,8] - cbz x0, .L3231 - ldrh w0, [x1] - cmp w0, w26 - bne .L3231 -.L3232: - cbnz w25, .L3233 - add x3, x21, :lo12:.LANCHOR3 - add x23, x23, :lo12:.LANCHOR0 - add x0, x3, x19, lsl 4 - mov w2, 1 - ldr x0, [x0,1976] - ldr w1, [x0,x20,lsl 2] - mov w0, 24 - str w1, [x22] - ldrb w4, [x23,1257] - sub w0, w0, w4 - lsl w2, w2, w4 - lsr w1, w1, w0 - sub w2, w2, #1 - and w0, w1, w2 - ldrb w1, [x3,1420] - cmp w0, w1 - bcc .L3234 - mov w0, -1 - str w0, [x22] - b .L3234 -.L3233: - add x2, x21, :lo12:.LANCHOR3 - ldr w3, [x22] - add x0, x2, 1968 - add x0, x0, x19, lsl 4 - ldr x1, [x0,8] - str w3, [x1,x20,lsl 2] - strb w24, [x2,2480] - ldrh w1, [x0,2] - orr w1, w1, -32768 - strh w1, [x0,2] -.L3234: - add x21, x21, :lo12:.LANCHOR3 - mov w2, 32767 - add x21, x21, 1968 - mov w0, 0 - add x19, x21, x19, lsl 4 - ldrh w1, [x19,2] - and w3, w1, 32767 - cmp w3, w2 - beq .L3230 - add w1, w1, 1 - strh w1, [x19,2] - b .L3230 -.L3231: - add w19, w19, 1 - add x1, x1, 16 - uxth x19, w19 - cmp w19, 32 - bne .L3235 - bl pm_select_ram_region - uxth x19, w0 - add x2, x21, :lo12:.LANCHOR3 - sbfiz x3, x19, 4, 32 - add x2, x2, 1968 - mov w1, w0 - add x4, x2, x3 - ldrh w3, [x2,x3] - mov w2, 65535 - cmp w3, w2 - beq .L3236 - ldrsh w2, [x4,2] - tbz w2, #31, .L3236 - str x1, [x29,88] - bl pm_flush_id - ldr x1, [x29,88] -.L3236: - adrp x0, .LANCHOR5+1000 - strb w19, [x0,#:lo12:.LANCHOR5+1000] - mov w0, w26 - bl load_l2p_region - b .L3232 -.L3230: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x25, x26, [sp,64] + cbnz w24, .L3227 + str w0, [x23] +.L3227: + 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 +.L3228: + and x20, x20, 65535 + add x0, x1, 1968 + mov x19, 0 +.L3234: + ldr x1, [x0] + cbz x1, .L3230 + ldrh w1, [x0, -8] + cmp w1, w26 + bne .L3230 +.L3231: + cbnz w24, .L3232 + add x3, x21, :lo12:.LANCHOR3 + add x22, x22, :lo12:.LANCHOR0 + add x0, x3, x19, lsl 4 + mov w2, 24 + mov w1, 1 + ldr x0, [x0, 1968] + ldr w0, [x0, x20, lsl 2] + str w0, [x23] + ldrb w4, [x22, 1205] + sub w2, w2, w4 + lsl w1, w1, w4 + sub w1, w1, #1 + lsr w0, w0, w2 + and w0, w0, w1 + ldrb w1, [x3, 1412] + cmp w0, w1 + bcc .L3233 + mov w0, -1 + str w0, [x23] +.L3233: + add x21, x21, :lo12:.LANCHOR3 + add x21, x21, 1960 + add x19, x21, x19, lsl 4 + ldrh w0, [x19, 2] + mvn x1, x0 + tst x1, 32767 + beq .L3237 + add w0, w0, 1 + strh w0, [x19, 2] +.L3237: + mov w0, 0 + b .L3227 +.L3232: + add x2, x21, :lo12:.LANCHOR3 + ldr w3, [x23] + add x0, x2, 1960 + add x0, x0, x19, lsl 4 + ldr x1, [x0, 8] + str w3, [x1, x20, lsl 2] + strb w25, [x2, 2472] + ldrh w1, [x0, 2] + orr w1, w1, -32768 + strh w1, [x0, 2] + b .L3233 +.L3230: + add w19, w19, 1 + add x0, x0, 16 + and x19, x19, 65535 + cmp w19, 32 + bne .L3234 + bl pm_select_ram_region + and x19, x0, 65535 + add x2, x21, :lo12:.LANCHOR3 + sbfiz x1, x19, 4, 32 + add x2, x2, 1960 + mov w27, w0 + add x3, x2, x1 + ldrh w2, [x2, x1] + mov w1, 65535 + cmp w2, w1 + beq .L3235 + ldrsh w1, [x3, 2] + tbz w1, #31, .L3235 + bl pm_flush_id +.L3235: + adrp x0, .LANCHOR5+464 + mov w1, w27 + strb w19, [x0, #:lo12:.LANCHOR5+464] + mov w0, w26 + bl load_l2p_region + b .L3231 .size pm_log2phys, .-pm_log2phys .align 2 .global gc_recovery .type gc_recovery, %function gc_recovery: sub sp, sp, #224 - stp x29, x30, [sp,32] + stp x29, x30, [sp, 32] add x29, sp, 32 - stp x19, x20, [sp,48] - adrp x19, .LANCHOR0 - stp x21, x22, [sp,64] - add x21, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 64] adrp x22, .LANCHOR3 - stp x23, x24, [sp,80] - stp x25, x26, [sp,96] - stp x27, x28, [sp,112] + stp x19, x20, [sp, 48] + adrp x19, .LANCHOR0 + add x21, x19, :lo12:.LANCHOR0 + stp x23, x24, [sp, 80] + stp x25, x26, [sp, 96] adrp x23, .LANCHOR5 - add x25, x22, :lo12:.LANCHOR3 - ldr x20, [x21,1120] + stp x27, x28, [sp, 112] add x0, x23, :lo12:.LANCHOR5 - strb wzr, [x25,1345] - add x24, x20, 80 - ldrh w1, [x20,80] - strb wzr, [x0,218] + add x25, x22, :lo12:.LANCHOR3 + ldr x20, [x21, 1128] + strb wzr, [x0, 264] mov w0, 65535 + strb wzr, [x25, 1337] + ldrh w1, [x20, 80] cmp w1, w0 beq .L3244 + add x24, x20, 80 mov w0, -1 - strh w0, [x20,130] + strh w0, [x20, 130] mov w0, 1 bl buf_alloc mov x28, x0 - ldrb w0, [x24,9] - ldrh w1, [x25,1418] + ldrb w0, [x24, 9] + ldrh w1, [x25, 1410] sub w0, w0, #1 + ldrb w2, [x25, 1320] add x0, x24, w0, sxtw 1 - ldrh w0, [x0,16] - mul w0, w0, w1 - ldrb w1, [x25,1328] - str w0, [x29,184] - cmp w1, 2 + cmp w2, 2 + ldrh w0, [x0, 16] + mul w1, w0, w1 + str w1, [x29, 184] beq .L3245 - ldrb w2, [x21,1268] - cbnz w2, .L3245 - ldrb w2, [x21,1269] - cbz w2, .L3246 + ldrb w0, [x21, 1212] + cbnz w0, .L3245 + ldrb w0, [x21, 1213] + cbz w0, .L3246 .L3245: - add x2, x22, :lo12:.LANCHOR3 - ldrh w2, [x2,1346] - sub w2, w2, #1 - add w0, w2, w0 - orr w0, w0, w1, lsl 24 - b .L3332 -.L3246: - cmp w1, 3 - bne .L3247 - ldrh w1, [x25,1384] - sub w1, w1, #1 - add w0, w1, w0 - orr w0, w0, 50331648 -.L3332: - str w0, [x28,40] + add x0, x22, :lo12:.LANCHOR3 + ldrh w0, [x0, 1338] + sub w0, w0, #1 + add w0, w0, w1 + orr w2, w0, w2, lsl 24 + str w2, [x28, 40] .L3247: - mov x0, x28 mov w1, 1 + mov x0, x28 bl sblk_read_page - ldr w0, [x28,52] + ldr w0, [x28, 52] cmp w0, 512 + ccmn w0, #1, 4, ne beq .L3248 - cmn w0, #1 - beq .L3248 - ldr x0, [x28,24] + ldr x0, [x28, 24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 @@ -20916,72 +20756,137 @@ gc_recovery: .L3248: mov x0, x28 bl zbuf_free - ldr x7, [x28,24] - ldr x6, [x28,8] - ldr w0, [x7,4] - str w0, [sp] - ldr w0, [x7,8] - str w0, [sp,8] - ldr w0, [x7,12] - str w0, [sp,16] + ldr x1, [x28, 24] + ldr x0, [x28, 8] + ldr w2, [x1, 12] + str w2, [sp, 16] + ldr w2, [x1, 8] + str w2, [sp, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] adrp x0, .LC245 + ldr w7, [x1] add x0, x0, :lo12:.LC245 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w1, [x28,40] - ldr w2, [x28,52] - ldr w6, [x6,12] - ldr w7, [x7] + ldr w1, [x28, 40] + ldr w2, [x28, 52] bl printk - b .L3337 +.L3338: + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x20, 80] + mov w21, 0 + ldr x1, [x0, 1120] + strh wzr, [x1, x2, lsl 1] + ldr x0, [x0, 1128] + ldrh w1, [x20, 80] + strh w1, [x0, 130] +.L3250: + add x1, x19, :lo12:.LANCHOR0 + ldrh w0, [x20, 80] + ldr x1, [x1, 1120] + ubfiz x2, x0, 1, 16 + ldrh w1, [x1, x2] + cbnz w1, .L3294 + bl ftl_dump_write_open_sblk +.L3294: + ldrh w1, [x20, 80] + mov w2, w21 + adrp x0, .LC247 + add x0, x0, :lo12:.LC247 + bl printk + mov w0, -1 + strh w0, [x20, 80] + bl pm_flush + bl ftl_ext_info_flush + add x1, x19, :lo12:.LANCHOR0 + mov w2, 65535 + ldr x0, [x1, 1128] + ldrh w0, [x0, 130] + cmp w0, w2 + beq .L3295 + ldrh w1, [x1, 1096] + cmp w1, w0 + bhi .L3296 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 840 + mov w2, 517 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3296: + add x0, x19, :lo12:.LANCHOR0 + ldr x0, [x0, 1128] + ldrh w0, [x0, 130] + bl ftl_free_sblk +.L3295: + add x19, x19, :lo12:.LANCHOR0 + mov w0, -1 + ldr x1, [x19, 3384] + strh w0, [x1, 126] + ldr x1, [x19, 1128] + strh w0, [x1, 130] + mov w0, 0 + bl ftl_info_flush +.L3243: + ldp x19, x20, [sp, 48] + ldp x21, x22, [sp, 64] + ldp x23, x24, [sp, 80] + ldp x25, x26, [sp, 96] + ldp x27, x28, [sp, 112] + ldp x29, x30, [sp, 32] + add sp, sp, 224 + ret +.L3246: + cmp w2, 3 + bne .L3247 + ldrh w0, [x25, 1376] + sub w0, w0, #1 + add w0, w0, w1 + orr w0, w0, 50331648 + str w0, [x28, 40] + b .L3247 .L3249: add x1, x23, :lo12:.LANCHOR5 - ldrb w0, [x1,1001] + ldrb w0, [x1, 465] cmp w0, 2 bne .L3251 add x21, x22, :lo12:.LANCHOR3 - ldrb w0, [x21,1328] + ldrb w0, [x21, 1320] cmp w0, 3 bne .L3251 - ldrh w3, [x1,998] - ldr x4, [x1,232] - ldrh w1, [x21,1346] - and x0, x3, 65532 - ldrb w2, [x21,1329] - add x0, x4, x0 - lsl w1, w1, 2 - mul w2, w1, w2 - ldr x1, [x28,8] - sub w2, w2, w3 - uxth w2, w2 + ldrh w2, [x21, 1338] + ldrb w3, [x21, 1321] + ldrh w0, [x1, 462] + ubfiz w2, w2, 2, 14 + mul w2, w2, w3 + ldr x3, [x1, 280] + ldr x1, [x28, 8] + sub w2, w2, w0 + and x0, x0, 65532 + and w2, w2, 65535 + add x0, x3, x0 bl ftl_memcpy add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x0,1268] + ldrb w1, [x0, 1212] cbnz w1, .L3252 - ldrb w0, [x0,1269] + ldrb w0, [x0, 1213] cbz w0, .L3253 .L3252: - ldr w0, [x28,40] + ldr w0, [x28, 40] sub w0, w0, #1 - b .L3333 -.L3253: - ldr w0, [x29,184] - ldrh w1, [x21,1384] - sub w0, w0, #1 - add w0, w0, w1 - orr w0, w0, 33554432 -.L3333: - str w0, [x28,40] +.L3332: + str w0, [x28, 40] mov w1, 1 mov x0, x28 bl sblk_read_page - ldr w0, [x28,52] + ldr w0, [x28, 52] cmp w0, 512 + ccmn w0, #1, 4, ne beq .L3255 - cmn w0, #1 - beq .L3255 - ldr x0, [x28,24] + ldr x0, [x28, 24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 @@ -20990,485 +20895,425 @@ gc_recovery: .L3255: mov x0, x28 bl zbuf_free -.L3337: - add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x20,80] - mov w21, 0 - ldr x1, [x0,1112] - strh wzr, [x1,x2,lsl 1] - ldr x0, [x0,1120] - ldrh w1, [x20,80] - strh w1, [x0,130] - b .L3250 + b .L3338 +.L3253: + ldr w0, [x29, 184] + ldrh w1, [x21, 1376] + sub w0, w0, #1 + add w0, w0, w1 + orr w0, w0, 33554432 + b .L3332 .L3256: - add x2, x23, :lo12:.LANCHOR5 - ldr x1, [x28,8] - ldr x0, [x2,232] - ldrh w2, [x2,998] - b .L3334 -.L3251: - add x2, x22, :lo12:.LANCHOR3 - add x1, x23, :lo12:.LANCHOR5 - ldrh w0, [x2,1346] - ldrb w2, [x2,1329] - mul w2, w0, w2 - ldr x0, [x1,232] - ldr x1, [x28,8] - lsl w2, w2, 2 -.L3334: + add x0, x23, :lo12:.LANCHOR5 + ldrh w2, [x0, 462] +.L3333: + ldr x1, [x28, 8] add x21, x22, :lo12:.LANCHOR3 + ldr x0, [x0, 280] bl ftl_memcpy - ldrh w0, [x21,1346] - ldrb w1, [x21,1329] - mul w1, w0, w1 - add x0, x19, :lo12:.LANCHOR0 - lsl w2, w1, 2 - ldrb w0, [x0,3360] - cmp w0, w1, lsr 6 + ldrb w1, [x21, 1321] + ldrh w0, [x21, 1338] + mul w0, w0, w1 + ldrb w1, [x21, 1946] + lsl w2, w0, 2 + cmp w1, w0, lsr 6 bge .L3258 add x25, x23, :lo12:.LANCHOR5 mov w1, 0 - ldr x0, [x25,240] + ldr x0, [x25, 288] bl ftl_memset - ldrb w26, [x25,1001] + ldrb w26, [x25, 465] cmp w26, 1 - bne .L3298 - ldrh w0, [x21,1346] - ldrb w1, [x21,1329] - ldrh w21, [x25,998] - ldr x2, [x28,8] - mul w1, w0, w1 - ldr x0, [x25,240] - sub w21, w21, w1, lsl 2 - add x1, x2, w1, sxtw 2 + bne .L3299 + ldrb w1, [x21, 1321] + ldrh w0, [x21, 1338] + ldrh w21, [x25, 462] + mul w0, w0, w1 + ldr x1, [x28, 8] + sub w21, w21, w0, lsl 2 + add x1, x1, w0, sxtw 2 + ldr x0, [x25, 288] mov w2, w21 bl ftl_memcpy mov w10, w26 - b .L3259 -.L3258: - add x0, x23, :lo12:.LANCHOR5 - ldr x3, [x28,8] - add x1, x3, w1, sxtw 2 - ldr x0, [x0,240] - bl ftl_memcpy - mov w10, 0 - mov w21, w10 - b .L3259 -.L3298: - mov w10, 1 - mov w21, 0 .L3259: add x0, x22, :lo12:.LANCHOR3 - ldrb w25, [x0,1328] - ldrh w27, [x0,1384] + ldrh w1, [x0, 1376] + ldrb w25, [x0, 1320] + str w1, [x29, 168] cmp w25, 2 bne .L3260 - ldrb w0, [x0,1330] + ldrb w0, [x0, 1322] cbz w0, .L3261 .L3260: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1268] + ldrb w0, [x0, 1212] cbz w0, .L3262 .L3261: - mul w27, w27, w25 + ldr w0, [x29, 168] + mul w0, w0, w25 mov w25, 1 + str w0, [x29, 168] .L3262: - adrp x0, .LC246 - mov w26, 0 - add x0, x0, :lo12:.LC246 - str w26, [x29,172] - str x0, [x29,144] + add x14, x22, :lo12:.LANCHOR3 + adrp x26, .LC246 + mov w9, 0 + add x0, x26, :lo12:.LC246 + mov w13, 0 + str x0, [x29, 152] .L3263: - cmp w26, w27 - bcs .L3275 - add w0, w26, w26, lsl 1 - mov w11, 0 + sub w0, w9, #1 + str w0, [x29, 164] + ldr w0, [x29, 168] + cmp w0, w9 + bls .L3276 + add w0, w9, w9, lsl 1 + mov w26, 0 sub w0, w0, #1 - str w0, [x29,168] - sub w0, w26, #1 - str w0, [x29,152] -.L3276: - ldrb w0, [x24,9] - cmp w11, w0 - bge .L3338 - sxtw x0, w11 - mov x12, 0 - str x0, [x29,160] -.L3273: - add w2, w12, 1 - ldr w0, [x29,172] - cmp w2, w25 - add w13, w0, w12 - bhi .L3339 - ldr x0, [x29,160] - add x3, x22, :lo12:.LANCHOR3 - add x0, x0, 8 - ldrh w1, [x24,x0,lsl 1] - ldrh w0, [x3,1418] - mul w0, w1, w0 - ldrb w1, [x3,1328] - str w0, [x29,184] - cmp w1, 2 + str w0, [x29, 172] + b .L3277 +.L3251: + add x0, x22, :lo12:.LANCHOR3 + ldrh w2, [x0, 1338] + ldrb w0, [x0, 1321] + mul w2, w2, w0 + add x0, x23, :lo12:.LANCHOR5 + lsl w2, w2, 2 + b .L3333 +.L3258: + add x3, x23, :lo12:.LANCHOR5 + ldr x1, [x28, 8] + add x1, x1, w0, sxtw 2 + ldr x0, [x3, 288] + bl ftl_memcpy + mov w10, 0 +.L3334: + mov w21, 0 + b .L3259 +.L3299: + mov w10, 1 + b .L3334 +.L3272: + ldrh w1, [x14, 1410] + ldrh w0, [x24, x27, lsl 1] + ldrb w2, [x14, 1320] + cmp w2, 2 + mul w0, w0, w1 + str w0, [x29, 184] + add w1, w11, w0 beq .L3264 add x3, x19, :lo12:.LANCHOR0 - ldrb w4, [x3,1268] + ldrb w4, [x3, 1212] cbz w4, .L3265 .L3264: - ldr w3, [x29,152] - add w0, w3, w0 - add w0, w0, w2 - orr w0, w0, w1, lsl 24 - b .L3335 -.L3265: - cmp w1, 3 - bne .L3267 - ldrb w1, [x3,1269] - cbz w1, .L3268 - ldr w1, [x29,168] - add w0, w0, w1 - add w0, w0, w2 - orr w0, w0, 50331648 - b .L3335 -.L3268: - add w0, w0, w26 - orr w0, w0, w2, lsl 24 - b .L3335 -.L3267: - add w0, w0, w26 + ldr w0, [x29, 164] + add w1, w1, w0 + orr w1, w1, w2, lsl 24 .L3335: - str w0, [x28,40] + str w1, [x28, 40] +.L3266: + str x14, [x29, 120] mov w1, 1 + str w10, [x29, 128] mov x0, x28 - str x13, [x29,112] - str x12, [x29,120] - str x10, [x29,128] - str x11, [x29,136] + str w9, [x29, 136] + str w13, [x29, 144] + str w11, [x29, 160] bl sblk_read_page - ldr x13, [x29,112] - ldr x10, [x29,128] - ldr x11, [x29,136] - sxtw x13, w13 - ldr x12, [x29,120] + ldr w10, [x29, 128] + ldr w13, [x29, 144] + ldr w9, [x29, 136] + ldr w11, [x29, 160] + sxtw x15, w13 + ldr x14, [x29, 120] cbz w10, .L3269 add x0, x23, :lo12:.LANCHOR5 - lsl x1, x13, 2 - ldr x0, [x0,240] - ldr w2, [x0,x1] + lsl x1, x15, 2 + ldr x0, [x0, 288] + ldr w2, [x0, x1] cbnz w2, .L3269 - ldr x2, [x28,24] - ldr w2, [x2,8] - str w2, [x0,x1] + ldr x2, [x28, 24] + ldr w2, [x2, 8] + str w2, [x0, x1] .L3269: - add x0, x23, :lo12:.LANCHOR5 - lsl x13, x13, 2 - ldr x7, [x28,24] - ldr x1, [x0,232] - ldr w6, [x7,4] - ldr w3, [x1,x13] + add x1, x23, :lo12:.LANCHOR5 + lsl x15, x15, 2 + ldr x0, [x1, 280] + ldr w3, [x0, x15] + ldr x0, [x28, 24] + ldr w6, [x0, 4] cmp w3, w6 bne .L3270 - ldr x0, [x0,240] - ldr w1, [x0,x13] - ldr w0, [x7,8] - cmp w1, w0 - beq .L3300 + ldr x1, [x1, 288] + ldr w2, [x1, x15] + ldr w1, [x0, 8] + cmp w2, w1 + beq .L3271 .L3270: - add x14, x23, :lo12:.LANCHOR5 - ldr w0, [x7,12] - str x12, [x29,104] - str x10, [x29,112] - ldr x4, [x14,240] - str w0, [sp] - ldr x0, [x29,144] - ldr w4, [x4,x13] - ldr w5, [x7] - ldr w1, [x28,40] - ldr w2, [x28,52] - ldr w7, [x7,8] - str x11, [x29,120] - str x14, [x29,128] - str x13, [x29,136] + add x18, x23, :lo12:.LANCHOR5 + ldr w2, [x0, 12] + str x14, [x29, 104] + stp w10, w11, [x29, 116] + ldr x1, [x18, 288] + str w2, [sp] + str w9, [x29, 128] + ldr w5, [x0] + ldr w4, [x1, x15] + ldr w7, [x0, 8] + ldr w1, [x28, 40] + ldr w2, [x28, 52] + ldr x0, [x29, 152] + stp x18, x15, [x29, 136] + str w13, [x29, 160] bl printk - ldr x14, [x29,128] - ldr x13, [x29,136] - ldr x11, [x29,120] - ldr x0, [x14,232] - ldr x10, [x29,112] - ldr x12, [x29,104] - ldr w0, [x0,x13] + ldp x18, x15, [x29, 136] + ldp w10, w11, [x29, 116] + ldr x0, [x18, 280] + ldr w9, [x29, 128] + ldr w13, [x29, 160] + ldr x14, [x29, 104] + ldr w0, [x0, x15] cmn w0, #1 - beq .L3300 + beq .L3271 mov x0, x28 bl zbuf_free add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x20,80] - ldr x1, [x0,1112] - strh wzr, [x1,x2,lsl 1] - ldr x0, [x0,1120] - ldrh w1, [x20,80] - strh w1, [x0,130] + ldrh w2, [x20, 80] + ldr x1, [x0, 1120] + strh wzr, [x1, x2, lsl 1] + ldr x0, [x0, 1128] + ldrh w1, [x20, 80] + strh w1, [x0, 130] b .L3250 -.L3300: - add x12, x12, 1 - b .L3273 -.L3339: - str w13, [x29,172] +.L3265: + cmp w2, 3 + bne .L3267 + ldrb w2, [x3, 1213] + cbz w2, .L3268 + ldr w0, [x29, 172] + add w1, w1, w0 + orr w1, w1, 50331648 + b .L3335 +.L3268: + add w0, w9, w0 + orr w0, w0, w11, lsl 24 +.L3336: + str w0, [x28, 40] + b .L3266 +.L3267: + add w0, w9, w0 + b .L3336 +.L3271: + add w13, w13, 1 add w11, w11, 1 - b .L3276 -.L3338: - add x0, x22, :lo12:.LANCHOR3 - ldrb w0, [x0,1330] - cmp w0, wzr - csinc w26, w26, w26, eq +.L3274: + cmp w25, w11 + bcs .L3272 add w26, w26, 1 +.L3277: + ldrb w0, [x24, 9] + cmp w26, w0 + bge .L3273 + sxtw x27, w26 + mov w11, 1 + add x27, x27, 8 + b .L3274 +.L3273: + ldrb w0, [x14, 1322] + cmp w0, 0 + cinc w9, w9, ne + add w9, w9, 1 b .L3263 -.L3275: +.L3276: mov x0, x28 - mov w21, 0 - mov w28, w21 bl zbuf_free - str w21, [x29,168] add x0, x19, :lo12:.LANCHOR0 add x3, x22, :lo12:.LANCHOR3 - ldrh w2, [x20,80] - ldr x1, [x0,1112] - ldrh w3, [x3,1346] - ldrb w0, [x24,9] + ldrh w2, [x20, 80] + mov w21, 0 + mov w27, 0 + str wzr, [x29, 164] + ldrh w3, [x3, 1338] + ldr x1, [x0, 1120] + ldrb w0, [x24, 9] mul w0, w0, w3 - strh w0, [x1,x2,lsl 1] -.L3277: - cmp w28, w27 - bcs .L3291 - add w0, w28, w28, lsl 1 - str wzr, [x29,172] + strh w0, [x1, x2, lsl 1] +.L3278: + sub w0, w27, #1 + str w0, [x29, 136] + ldr w0, [x29, 168] + cmp w0, w27 + bls .L3292 + add w0, w27, w27, lsl 1 + add x28, x23, :lo12:.LANCHOR5 sub w0, w0, #1 - str w0, [x29,144] - sub w0, w28, #1 - str w0, [x29,128] -.L3292: - ldrb w0, [x24,9] - ldr w1, [x29,172] - cmp w1, w0 - bge .L3288 - ldrsw x0, [x29,172] - mov w26, 1 - str x0, [x29,136] -.L3289: - cmp w26, w25 - bhi .L3340 - add x1, x23, :lo12:.LANCHOR5 - ldr w0, [x29,168] + str wzr, [x29, 172] + str w0, [x29, 160] + b .L3293 +.L3288: + ldr w0, [x29, 164] + ldr x1, [x28, 280] sbfiz x0, x0, 2, 32 - ldr x2, [x1,232] - ldr w5, [x2,x0] + ldr w5, [x1, x0] cmn w5, #1 - beq .L3278 - ldr x1, [x1,240] - str x5, [x29,152] - ldr w0, [x1,x0] - str w0, [x29,160] + beq .L3279 + ldr x1, [x28, 288] + str w5, [x29, 144] + ldr w0, [x1, x0] + str w0, [x29, 152] mov w0, w5 bl lpa_hash_get_ppa - str w0, [x29,188] + str w0, [x29, 188] cmn w0, #1 - ldr x5, [x29,152] - bne .L3279 + ldr w5, [x29, 144] + bne .L3280 mov w0, w5 - add x1, x29, 188 + str w5, [x29, 144] mov w2, 0 + add x1, x29, 188 bl pm_log2phys - ldr x5, [x29,152] -.L3279: - ldr x0, [x29,136] - add x0, x0, 8 - ldrh w1, [x24,x0,lsl 1] - add x0, x22, :lo12:.LANCHOR3 - ldrh w2, [x0,1418] - ldrb w0, [x0,1328] - cmp w0, 2 - mul w1, w1, w2 - beq .L3280 - add x2, x19, :lo12:.LANCHOR0 - ldrb w6, [x2,1268] - cbz w6, .L3281 + ldr w5, [x29, 144] .L3280: - ldr w2, [x29,128] - add w1, w2, w1 - add w1, w1, w26 - orr w1, w1, w0, lsl 24 - b .L3336 -.L3281: - cmp w0, 3 - bne .L3283 - ldrb w2, [x2,1269] - lsl w0, w26, 24 - cbz w2, .L3284 - ldr w2, [x29,144] - add w2, w1, w2 - add w2, w2, w26 - orr w1, w0, w2 - b .L3336 -.L3284: - add w1, w1, w28 - orr w1, w0, w1 - b .L3336 -.L3283: - add w1, w1, w28 -.L3336: + ldr x0, [x29, 128] add x2, x22, :lo12:.LANCHOR3 - ldr w0, [x29,160] - str w1, [x29,184] - mov w3, 24 - ldrh w1, [x2,1312] - lsr w6, w0, w1 + ldrh w1, [x2, 1410] + ldrh w0, [x24, x0, lsl 1] + ldrb w2, [x2, 1320] + cmp w2, 2 + mul w0, w0, w1 + add w1, w26, w0 + beq .L3281 + add x6, x19, :lo12:.LANCHOR0 + ldrb w7, [x6, 1212] + cbz w7, .L3282 +.L3281: + ldr w0, [x29, 136] + add w1, w0, w1 + orr w1, w1, w2, lsl 24 + str w1, [x29, 184] +.L3283: add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1257] - sub w0, w3, w0 - sub w1, w0, w1 - mov w0, 1 - lsl w1, w0, w1 - ldrb w0, [x2,1314] - sub w1, w1, #1 - and w1, w6, w1 - udiv w1, w1, w0 - uxth w0, w1 - ldr w1, [x29,160] - str w0, [x29,152] - ldr w0, [x29,188] - cmp w0, w1 - bne .L3285 - mov w0, w5 - add x1, x29, 184 + add x6, x22, :lo12:.LANCHOR3 + ldr w3, [x29, 152] + ldrb w2, [x0, 1205] + mov w0, 24 + ldrh w1, [x6, 1304] + sub w0, w0, w2 mov w2, 1 - add w21, w21, 1 + sub w0, w0, w1 + lsr w1, w3, w1 + lsl w0, w2, w0 + sub w0, w0, #1 + and w0, w0, w1 + ldrb w1, [x6, 1306] + udiv w0, w0, w1 + and w0, w0, 65535 + str w0, [x29, 144] + ldr w0, [x29, 188] + cmp w3, w0 + bne .L3286 + add x1, x29, 184 + mov w0, w5 bl pm_log2phys - ldrh w0, [x29,152] + add w21, w21, 1 + ldrh w0, [x29, 144] bl ftl_vpn_decrement - b .L3286 -.L3285: - ldr w1, [x29,184] - cmp w0, w1 - csinc w21, w21, w21, ne -.L3286: - ldr w0, [x29,168] +.L3287: + ldr w0, [x29, 164] add x2, x19, :lo12:.LANCHOR0 add w0, w0, 1 - str w0, [x29,168] - ldr w0, [x29,152] - ldr x1, [x2,1096] + str w0, [x29, 164] + ldr x1, [x2, 1104] + ldr w0, [x29, 144] add x1, x1, x0, lsl 2 - ldrb w1, [x1,2] - ands w1, w1, 224 - bne .L3278 + ldrb w1, [x1, 2] + tst w1, 224 + bne .L3279 + ldr x1, [x2, 1120] lsl x0, x0, 1 - ldr x2, [x2,1112] - ldrh w5, [x2,x0] - cbz w5, .L3278 - strh w1, [x2,x0] -.L3278: + ldrh w2, [x1, x0] + cbz w2, .L3279 + strh wzr, [x1, x0] +.L3279: add w26, w26, 1 - b .L3289 -.L3340: - ldr w0, [x29,172] +.L3290: + cmp w25, w26 + bcs .L3288 + ldr w0, [x29, 172] add w0, w0, 1 - str w0, [x29,172] - b .L3292 -.L3288: - add x0, x22, :lo12:.LANCHOR3 - ldrb w0, [x0,1330] - cmp w0, wzr - csinc w28, w28, w28, eq - add w28, w28, 1 - b .L3277 -.L3291: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x20,80] - ldr x0, [x0,1112] - strh w21, [x0,x1,lsl 1] - ldrh w0, [x20,80] - bl zftl_insert_data_list -.L3250: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x20,80] - ubfiz x2, x0, 1, 16 - ldr x1, [x1,1112] - ldrh w1, [x1,x2] - cbnz w1, .L3293 - bl ftl_dump_write_open_sblk + str w0, [x29, 172] .L3293: - ldrh w1, [x20,80] - adrp x0, .LC247 - mov w2, w21 - add x0, x0, :lo12:.LC247 - bl printk - mov w0, -1 - strh w0, [x20,80] - bl pm_flush - bl ftl_ext_info_flush - add x1, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldr x0, [x1,1120] - ldrh w0, [x0,130] - cmp w0, w2 - beq .L3294 - ldrh w1, [x1,1088] + ldrb w0, [x24, 9] + ldr w1, [x29, 172] cmp w1, w0 - bhi .L3295 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 517 - add x1, x1, 824 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3295: + bge .L3289 + ldrsw x0, [x29, 172] + mov w26, 1 + add x0, x0, 8 + str x0, [x29, 128] + b .L3290 +.L3282: + cmp w2, 3 + bne .L3284 + ldrb w6, [x6, 1213] + lsl w2, w26, 24 + cbz w6, .L3285 + ldr w0, [x29, 160] + add w1, w0, w1 + orr w0, w1, w2 +.L3337: + str w0, [x29, 184] + b .L3283 +.L3285: + add w0, w27, w0 + orr w0, w0, w2 + b .L3337 +.L3284: + add w0, w27, w0 + b .L3337 +.L3286: + ldr w1, [x29, 184] + cmp w0, w1 + cinc w21, w21, eq + b .L3287 +.L3289: + add x0, x22, :lo12:.LANCHOR3 + ldrb w0, [x0, 1322] + cmp w0, 0 + cinc w27, w27, ne + add w27, w27, 1 + b .L3278 +.L3292: add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1120] - ldrh w0, [x0,130] - bl ftl_free_sblk -.L3294: - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - ldr x1, [x19,3392] - strh w0, [x1,126] - ldr x1, [x19,1120] - strh w0, [x1,130] - mov w0, 0 - bl ftl_info_flush - b .L3243 + ldrh w1, [x20, 80] + ldr x0, [x0, 1120] + strh w21, [x0, x1, lsl 1] + ldrh w0, [x20, 80] + bl zftl_insert_data_list + b .L3250 .L3244: - ldrh w0, [x20,130] + ldrh w0, [x20, 130] cmp w0, w1 beq .L3243 - ldr x1, [x21,3392] - ldrh w1, [x1,126] + ldr x1, [x21, 3384] + ldrh w1, [x1, 126] cmp w1, w0 - bne .L3297 + bne .L3298 bl pm_flush - ldr x0, [x21,1120] - ldrh w0, [x0,130] + ldr x0, [x21, 1128] + ldrh w0, [x0, 130] bl ftl_free_sblk - ldr x0, [x21,3392] + ldr x0, [x21, 3384] mov w1, -1 - strh w1, [x0,126] + strh w1, [x0, 126] mov w0, 0 bl ftl_info_flush -.L3297: +.L3298: add x19, x19, :lo12:.LANCHOR0 mov w1, -1 - ldr x0, [x19,1120] - strh w1, [x0,130] -.L3243: - sub sp, x29, #32 - ldp x19, x20, [sp,48] - ldp x21, x22, [sp,64] - ldp x23, x24, [sp,80] - ldp x25, x26, [sp,96] - ldp x27, x28, [sp,112] - ldp x29, x30, [sp,32] - add sp, sp, 224 - ret + ldr x0, [x19, 1128] + strh w1, [x0, 130] + b .L3243 .size gc_recovery, .-gc_recovery .align 2 .global gc_update_l2p_map_new @@ -21476,348 +21321,346 @@ gc_recovery: gc_update_l2p_map_new: stp x29, x30, [sp, -160]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x23, .LANCHOR2 - ldr x20, [x0,1120] - adrp x0, .LANCHOR3 - add x1, x0, :lo12:.LANCHOR3 - str x0, [x29,120] - ldrh w25, [x1,1346] - add x1, x20, 80 - str x1, [x29,128] - ldrb w1, [x1,9] - mul w25, w25, w1 - ldr w1, [x23,#:lo12:.LANCHOR2] - tbz x1, 8, .L3342 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + adrp x22, .LANCHOR3 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x20, [x0, 1128] + add x0, x22, :lo12:.LANCHOR3 + ldrh w24, [x0, 1338] + add x0, x20, 80 + str x0, [x29, 112] + ldrb w0, [x0, 9] + mul w24, w24, w0 + adrp x0, .LANCHOR2 + str x0, [x29, 136] + ldr w1, [x0, #:lo12:.LANCHOR2] + tbz x1, 8, .L3340 + ldrh w1, [x20, 80] adrp x0, .LC248 - ldrh w1, [x20,80] add x0, x0, :lo12:.LC248 bl printk -.L3342: +.L3340: add x0, x19, :lo12:.LANCHOR0 - adrp x21, .LANCHOR5 - ldrh w2, [x20,80] - mov w22, 0 - mov w24, w22 - ldr x1, [x0,1112] - add x0, x21, :lo12:.LANCHOR5 - ldrb w0, [x0,1001] - sub w0, w25, w0 - strh w0, [x1,x2,lsl 1] + adrp x1, .LANCHOR5 + ldrh w3, [x20, 80] + mov w23, 0 + mov w21, 0 + str x1, [x29, 120] + ldr x2, [x0, 1120] + add x0, x1, :lo12:.LANCHOR5 + ldrb w0, [x0, 465] + sub w0, w24, w0 + strh w0, [x2, x3, lsl 1] adrp x0, .LC250 add x0, x0, :lo12:.LC250 - str x0, [x29,112] - adrp x0, .LC249 - add x0, x0, :lo12:.LC249 - str x0, [x29,104] -.L3343: - cmp w24, w25 - beq .L3375 - add x0, x21, :lo12:.LANCHOR5 - ldr x0, [x0,232] - ldr w2, [x0,w24,sxtw 2] - cmn w2, #1 - beq .L3344 + str x0, [x29, 104] +.L3341: + cmp w21, w24 + bne .L3350 + ldr x0, [x29, 136] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3351 add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,3360] - lsl w0, w0, 7 - udiv w0, w2, w0 - and w0, w0, 65535 - str w0, [x29,140] - ldr w0, [x23,#:lo12:.LANCHOR2] - tbz x0, 8, .L3345 - ldr x0, [x29,104] - mov w3, w24 - ldr w1, [x29,140] - bl printk -.L3345: - mov w26, w24 -.L3351: - add x1, x21, :lo12:.LANCHOR5 - sbfiz x27, x26, 2, 32 - ldr x0, [x1,232] - ldr w4, [x0,x27] - cmn w4, #1 - beq .L3346 - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x29,140] - ldrb w0, [x0,3360] - lsl w0, w0, 7 - udiv w0, w4, w0 - cmp w2, w0, uxth - bne .L3346 - ldr x0, [x1,240] - str x4, [x29,96] - ldr w28, [x0,x27] - mov w0, w4 - bl lpa_hash_get_ppa - str w0, [x29,156] - cmn w0, #1 - ldr x4, [x29,96] - bne .L3347 - mov w0, w4 - add x1, x29, 156 - mov w2, 0 - bl pm_log2phys - ldr x4, [x29,96] -.L3347: - ldr w3, [x29,156] - cmp w3, w28 - bne .L3348 - add x0, x21, :lo12:.LANCHOR5 - add x1, x29, 152 - mov w2, 1 - add w22, w22, 1 - ldr x0, [x0,248] - ldr w0, [x0,x27] - str w0, [x29,152] - mov w0, w4 - bl pm_log2phys - ldr x0, [x29,120] - mov w2, 24 - add x3, x0, :lo12:.LANCHOR3 - add x0, x19, :lo12:.LANCHOR0 - ldrb w0, [x0,1257] - ldrh w1, [x3,1312] - sub w0, w2, w0 - mov w2, 1 - sub w0, w0, w1 - lsr w28, w28, w1 - lsl w0, w2, w0 - sub w0, w0, #1 - and w28, w0, w28 - ldrb w0, [x3,1314] - udiv w0, w28, w0 - b .L3374 -.L3348: - ldr w0, [x23,#:lo12:.LANCHOR2] - tbz x0, 8, .L3350 - ldr x0, [x29,112] - mov w1, w4 - mov w2, w28 - bl printk -.L3350: - ldr x0, [x29,128] - ldrh w0, [x0] -.L3374: - bl ftl_vpn_decrement - add x0, x21, :lo12:.LANCHOR5 - mov w1, -1 - ldr x0, [x0,232] - str w1, [x0,x27] -.L3346: - add w26, w26, 1 - cmp w26, w25 - bne .L3351 -.L3344: - add w24, w24, 1 - b .L3343 -.L3375: - ldr w0, [x23,#:lo12:.LANCHOR2] - tbz x0, 8, .L3353 - add x0, x19, :lo12:.LANCHOR0 - ldrh w3, [x20,80] - ldr x1, [x0,1120] - ldr x2, [x0,1112] + ldrh w2, [x20, 80] + mov w3, w23 + ldr x1, [x0, 1120] + ldr x0, [x0, 1128] + ldrh w2, [x1, x2, lsl 1] + ldrh w1, [x0, 80] adrp x0, .LC251 add x0, x0, :lo12:.LC251 - ldrh w1, [x1,80] - ldrh w2, [x2,x3,lsl 1] - mov w3, w22 bl printk -.L3353: +.L3351: add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x20,80] - ldr x0, [x0,1112] - ldrh w0, [x0,x1,lsl 1] - cmp w0, w22 - beq .L3354 + ldrh w1, [x20, 80] + ldr x0, [x0, 1120] + ldrh w0, [x0, x1, lsl 1] + cmp w23, w0 + beq .L3352 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 856 mov w2, 898 - add x1, x1, 840 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3354: +.L3352: add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x20,80] - ldr x0, [x19,1112] - strh w22, [x0,x1,lsl 1] - ldrh w0, [x20,80] + ldrh w1, [x20, 80] + ldr x0, [x19, 1120] + strh w23, [x0, x1, lsl 1] + ldrh w0, [x20, 80] bl zftl_insert_data_list - 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 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 ret +.L3350: + ldr x0, [x29, 120] + add x0, x0, :lo12:.LANCHOR5 + ldr x0, [x0, 280] + ldr w2, [x0, w21, sxtw 2] + cmn w2, #1 + beq .L3342 + add x0, x22, :lo12:.LANCHOR3 + ldrb w0, [x0, 1946] + lsl w0, w0, 7 + udiv w0, w2, w0 + and w0, w0, 65535 + str w0, [x29, 132] + ldr x0, [x29, 136] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3343 + ldr w1, [x29, 132] + adrp x0, .LC249 + mov w3, w21 + add x0, x0, :lo12:.LC249 + bl printk +.L3343: + ldr x0, [x29, 120] + mov w25, w21 + add x26, x0, :lo12:.LANCHOR5 +.L3349: + ldr x0, [x26, 280] + sbfiz x27, x25, 2, 32 + ldr w4, [x0, x27] + cmn w4, #1 + beq .L3344 + add x0, x22, :lo12:.LANCHOR3 + ldr w1, [x29, 132] + ldrb w0, [x0, 1946] + lsl w0, w0, 7 + udiv w0, w4, w0 + cmp w1, w0, uxth + bne .L3344 + ldr x0, [x26, 288] + str w4, [x29, 128] + ldr w28, [x0, x27] + mov w0, w4 + bl lpa_hash_get_ppa + str w0, [x29, 156] + cmn w0, #1 + ldr w4, [x29, 128] + bne .L3345 + mov w0, w4 + str w4, [x29, 128] + mov w2, 0 + add x1, x29, 156 + bl pm_log2phys + ldr w4, [x29, 128] +.L3345: + ldr w3, [x29, 156] + cmp w28, w3 + bne .L3346 + ldr x0, [x26, 296] + mov w2, 1 + add x1, x29, 152 + add w23, w23, 1 + ldr w0, [x0, x27] + str w0, [x29, 152] + mov w0, w4 + bl pm_log2phys + add x0, x19, :lo12:.LANCHOR0 + add x3, x22, :lo12:.LANCHOR3 + ldrb w1, [x0, 1205] + mov w0, 24 + ldrh w2, [x3, 1304] + sub w0, w0, w1 + sub w1, w0, w2 + mov w0, 1 + lsr w28, w28, w2 + lsl w0, w0, w1 + sub w0, w0, #1 + and w28, w0, w28 + ldrb w0, [x3, 1306] + udiv w0, w28, w0 +.L3373: + bl ftl_vpn_decrement + ldr x0, [x26, 280] + mov w1, -1 + str w1, [x0, x27] +.L3344: + add w25, w25, 1 + cmp w24, w25 + bne .L3349 +.L3342: + add w21, w21, 1 + b .L3341 +.L3346: + ldr x0, [x29, 136] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3348 + ldr x0, [x29, 104] + mov w2, w28 + mov w1, w4 + bl printk +.L3348: + ldr x0, [x29, 112] + ldrh w0, [x0] + b .L3373 .size gc_update_l2p_map_new, .-gc_update_l2p_map_new .align 2 .global gc_scan_src_blk_one_page .type gc_scan_src_blk_one_page, %function gc_scan_src_blk_one_page: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -96]! mov w3, 0 + mov w4, 0 mov w5, 65535 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - mov w4, w3 - add x1, x19, :lo12:.LANCHOR0 - add x1, x1, 3424 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x1, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x1, x1, 3416 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] adrp x21, .LANCHOR3 - ldrb w0, [x1,4] + ldrb w0, [x1, 4] add x2, x1, w0, sxtw 1 - ldrh w22, [x2,40] + ldrh w22, [x2, 40] add x2, x21, :lo12:.LANCHOR3 - ldrb w6, [x2,1329] - ldrh w2, [x1,2] -.L3377: + ldrb w6, [x2, 1321] + ldrh w2, [x1, 2] +.L3375: cmp w22, w5 - bne .L3406 + beq .L3377 + cbz w4, .L3378 + add x1, x20, :lo12:.LANCHOR0 + strh w2, [x1, 3418] +.L3378: + cbz w3, .L3379 + add x1, x20, :lo12:.LANCHOR0 + strb w0, [x1, 3420] +.L3379: + add x20, x20, :lo12:.LANCHOR0 + mov w0, 1 + add x19, x20, 3416 + bl buf_alloc + add x25, x21, :lo12:.LANCHOR3 + mov x23, x0 + mov w24, 1 +.L3380: + ldrb w1, [x19, 6] + cmp w24, w1 + ble .L3390 + mov x0, x23 + bl zbuf_free + ldrb w0, [x19, 4] + add x21, x21, :lo12:.LANCHOR3 add w0, w0, 1 - uxtb w0, w0 + and w0, w0, 255 + ldrb w1, [x21, 1321] + strb w0, [x19, 4] + cmp w1, w0 + bne .L3374 + ldrh w0, [x19, 2] + strb wzr, [x19, 4] + add w0, w0, 1 + strh w0, [x19, 2] +.L3374: + 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 +.L3377: + add w0, w0, 1 + and w0, w0, 255 cmp w0, w6 - bne .L3378 + bne .L3376 add w2, w2, 1 mov w0, 0 + and w2, w2, 65535 mov w4, 1 - uxth w2, w2 -.L3378: +.L3376: add x3, x1, w0, sxtw 1 - ldrh w22, [x3,40] + ldrh w22, [x3, 40] mov w3, 1 - b .L3377 -.L3406: - cbz w4, .L3380 - add x1, x19, :lo12:.LANCHOR0 - strh w2, [x1,3426] -.L3380: - cbz w3, .L3381 - add x1, x19, :lo12:.LANCHOR0 - strb w0, [x1,3428] -.L3381: - mov w0, 1 - mov w24, 1 - add x19, x19, :lo12:.LANCHOR0 - bl buf_alloc - mov x23, x0 -.L3382: - add x20, x19, 3424 - ldrb w0, [x20,6] - cmp w24, w0 - bgt .L3407 - add x3, x21, :lo12:.LANCHOR3 - cmp w0, 2 - ldrh w1, [x3,1418] - mul w1, w22, w1 - bne .L3383 - ldrh w2, [x20,2] - ldrb w0, [x3,1328] - add w1, w1, w2, lsl 1 - sub w1, w1, #1 - add w1, w1, w24 - b .L3405 -.L3383: - cmp w0, 3 - bne .L3385 - ldrb w0, [x19,1268] - cbnz w0, .L3386 - ldrb w0, [x19,1269] - cbz w0, .L3387 -.L3386: - ldrh w2, [x19,3426] - add x0, x21, :lo12:.LANCHOR3 - add w2, w2, w2, lsl 1 - ldrb w0, [x0,1328] - sub w2, w2, #1 - add w1, w2, w1 - add w1, w1, w24 -.L3405: - orr w1, w1, w0, lsl 24 - b .L3404 -.L3387: - ldrh w0, [x20,2] - add w1, w1, w0 - orr w1, w1, w24, lsl 24 - b .L3404 -.L3385: - ldrh w0, [x20,2] - add w1, w1, w0 -.L3404: - str w1, [x23,40] - mov x0, x23 - mov w1, 1 - bl sblk_read_page - ldr w0, [x23,52] - cmp w0, 512 - beq .L3390 - cmn w0, #1 - beq .L3390 - ldr x0, [x23,24] - ldr w20, [x0,4] - mov w0, w20 - bl lpa_hash_get_ppa - str w0, [x29,76] - cmn w0, #1 - bne .L3391 - ldr w0, [x19,3372] - cmp w20, w0 - bcs .L3391 - mov w0, w20 - add x1, x29, 76 - mov w2, 0 - bl pm_log2phys -.L3391: - ldr w2, [x23,40] - ldr w0, [x29,76] - cmp w2, w0 - bne .L3390 - add x1, x21, :lo12:.LANCHOR3 - ldrh w3, [x19,3448] - ldr x1, [x1,1320] - str w2, [x1,x3,lsl 2] - ldrh w1, [x19,3448] - add w1, w1, 1 - strh w1, [x19,3448] + b .L3375 .L3390: - ldrh w0, [x19,3450] + ldrh w0, [x25, 1410] + cmp w1, 2 + mul w0, w0, w22 + bne .L3381 + ldrh w1, [x19, 2] + lsl w1, w1, 1 +.L3400: + sub w1, w1, #1 + add w0, w24, w0 + add w0, w1, w0 + ldrb w1, [x25, 1320] + orr w0, w0, w1, lsl 24 +.L3399: + str w0, [x23, 40] + mov w1, 1 + mov x0, x23 + bl sblk_read_page + ldr w0, [x23, 52] + cmp w0, 512 + ccmn w0, #1, 4, ne + beq .L3387 + ldr x0, [x23, 24] + ldr w26, [x0, 4] + mov w0, w26 + bl lpa_hash_get_ppa + str w0, [x29, 92] + cmn w0, #1 + bne .L3388 + ldr w0, [x20, 3364] + cmp w26, w0 + bcs .L3388 + mov w2, 0 + add x1, x29, 92 + mov w0, w26 + bl pm_log2phys +.L3388: + ldr w0, [x23, 40] + ldr w1, [x29, 92] + cmp w0, w1 + bne .L3387 + ldrh w2, [x19, 24] + ldr x1, [x25, 1312] + str w0, [x1, x2, lsl 2] + ldrh w0, [x19, 24] + add w0, w0, 1 + strh w0, [x19, 24] +.L3387: + ldrh w0, [x19, 26] add w24, w24, 1 add w0, w0, 1 - strh w0, [x19,3450] - b .L3382 -.L3407: - mov x0, x23 - add x21, x21, :lo12:.LANCHOR3 - bl zbuf_free - ldrb w0, [x20,4] - ldrb w1, [x21,1329] - add w0, w0, 1 - uxtb w0, w0 - strb w0, [x20,4] - cmp w1, w0 - bne .L3376 - ldrh w0, [x20,2] - strb wzr, [x20,4] - add w0, w0, 1 - strh w0, [x20,2] -.L3376: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 - ret + strh w0, [x19, 26] + b .L3380 +.L3381: + cmp w1, 3 + bne .L3383 + ldrb w1, [x20, 1212] + cbnz w1, .L3384 + ldrb w1, [x20, 1213] + cbz w1, .L3385 +.L3384: + ldrh w1, [x19, 2] + add w1, w1, w1, lsl 1 + b .L3400 +.L3385: + ldrh w1, [x19, 2] + add w0, w1, w0 + orr w0, w0, w24, lsl 24 + b .L3399 +.L3383: + ldrh w1, [x19, 2] + add w0, w1, w0 + b .L3399 .size gc_scan_src_blk_one_page, .-gc_scan_src_blk_one_page .align 2 .global gc_scan_src_blk @@ -21825,522 +21668,507 @@ gc_scan_src_blk_one_page: gc_scan_src_blk: stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - str x27, [sp,80] add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - ldrh w1, [x0,3424] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrh w1, [x0, 3416] mov w0, 65535 cmp w1, w0 - bne .L3409 + bne .L3402 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 880 mov w2, 1505 - add x1, x1, 864 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3402: + add x0, x20, :lo12:.LANCHOR0 + mov w2, 65535 + ldrh w1, [x0, 3416] + cmp w1, w2 + beq .L3432 + adrp x2, .LANCHOR2 + ldr w2, [x2, #:lo12:.LANCHOR2] + tbz x2, 8, .L3404 + ldr x0, [x0, 1120] + ubfiz x2, x1, 1, 16 + ldrh w2, [x0, x2] + adrp x0, .LC252 + add x0, x0, :lo12:.LC252 + bl printk +.L3404: + bl timer_get_time + add x14, x20, :lo12:.LANCHOR0 + add x15, x14, 3416 + add x1, x14, 3456 + ldrh w0, [x14, 3416] + bl ftl_get_blk_list_in_sblk + and w1, w0, 255 + strb w1, [x15, 5] + cbnz w1, .L3405 + mov w0, -1 + strh w0, [x14, 3416] +.L3432: + mov w0, 0 + b .L3401 +.L3405: + ldrh w3, [x14, 3416] + ldr x1, [x14, 1104] + mov x2, x3 + add x1, x1, x3, lsl 2 + ldrb w1, [x1, 2] + and w1, w1, 224 + cmp w1, 32 + beq .L3406 + cmp w1, 224 + beq .L3406 + cbz w1, .L3407 + ldr x1, [x14, 1128] + ldrh w3, [x1, 16] + cmp w3, w2 + beq .L3406 + ldrh w3, [x1, 48] + cmp w3, w2 + beq .L3406 + ldrh w1, [x1, 80] + cmp w1, w2 + bne .L3452 +.L3406: + add x20, x20, :lo12:.LANCHOR0 + mov w0, -1 + strh wzr, [x20, 3440] + strh w0, [x20, 3416] + b .L3432 +.L3407: + ldr x0, [x14, 1120] + ldrh w0, [x0, x3, lsl 1] + cbz w0, .L3409 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 880 + mov w2, 1530 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack .L3409: - add x2, x20, :lo12:.LANCHOR0 - mov w3, 65535 - mov w0, 0 - ldrh w1, [x2,3424] - cmp w1, w3 - beq .L3410 - adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3411 - ubfiz x3, x1, 1, 16 - ldr x2, [x2,1112] - adrp x0, .LC252 - add x0, x0, :lo12:.LC252 - ldrh w2, [x2,x3] - bl printk -.L3411: - add x19, x20, :lo12:.LANCHOR0 - bl timer_get_time - add x21, x19, 3424 - add x1, x19, 3464 - ldrh w0, [x19,3424] - bl ftl_get_blk_list_in_sblk - uxtb w1, w0 - strb w1, [x21,5] - cbnz w1, .L3412 - mov w0, -1 - strh w0, [x19,3424] - b .L3464 -.L3412: - ldrh w3, [x19,3424] - ldr x2, [x19,1096] - add x2, x2, x3, lsl 2 - ldrb w2, [x2,2] - tst w2, 192 - and w4, w2, 224 - beq .L3413 - cmp w4, 224 - beq .L3413 - ldr x2, [x19,1120] - ldrh w5, [x2,16] - cmp w5, w3 - beq .L3413 - ldrh w5, [x2,48] - cmp w5, w3 - beq .L3413 - ldrh w2, [x2,80] - cmp w2, w3 - bne .L3414 -.L3413: - cbnz w4, .L3415 add x0, x20, :lo12:.LANCHOR0 - ldr x0, [x0,1112] - ldrh w0, [x0,x3,lsl 1] - cbz w0, .L3416 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 1530 - add x1, x1, 864 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3416: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,3424] - ldr x0, [x0,1112] - strh wzr, [x0,x1,lsl 1] -.L3415: - add x20, x20, :lo12:.LANCHOR0 - mov w0, -1 - strh wzr, [x20,3448] - strh w0, [x20,3424] -.L3464: - mov w0, 0 - b .L3410 -.L3414: + ldrh w1, [x0, 3416] + ldr x0, [x0, 1120] + strh wzr, [x0, x1, lsl 1] + b .L3406 +.L3452: and w0, w0, 255 sub w0, w0, #1 - add x0, x21, w0, sxtw 1 - ldrh w21, [x0,40] + add x0, x15, w0, sxtw 1 + ldrh w22, [x0, 40] mov w0, 65535 - cmp w21, w0 - bne .L3417 + cmp w22, w0 + bne .L3410 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 880 mov w2, 1540 - add x1, x1, 864 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3417: +.L3410: add x3, x20, :lo12:.LANCHOR0 - adrp x22, .LANCHOR3 - add x1, x22, :lo12:.LANCHOR3 - mov w26, 1 - ldrh w2, [x3,3424] - ldr x3, [x3,1096] - ldrh w0, [x1,1384] + adrp x23, .LANCHOR3 + add x1, x23, :lo12:.LANCHOR3 + ldrh w2, [x3, 3416] + ldr x3, [x3, 1104] + ldrh w21, [x1, 1410] + ldrh w0, [x1, 1376] add x2, x3, x2, lsl 2 - ldrh w23, [x1,1418] sub w0, w0, #1 - ldrb w2, [x2,2] - uxth w0, w0 - mul w23, w21, w23 + and w0, w0, 65535 + mul w21, w21, w22 + ldrb w2, [x2, 2] and w2, w2, 224 cmp w2, 160 - bne .L3418 - ldrb w2, [x1,1328] + bne .L3433 + ldrb w2, [x1, 1320] + and w27, w2, 65535 cmp w2, 2 - uxth w26, w2 - orr w23, w23, w2, lsl 24 - bne .L3419 - ldrh w0, [x1,1346] + orr w21, w21, w2, lsl 24 + bne .L3412 + ldrh w0, [x1, 1338] sub w0, w0, #1 - uxth w0, w0 -.L3419: + and w0, w0, 65535 +.L3412: add x1, x20, :lo12:.LANCHOR0 - ldrb w2, [x1,1268] - cbnz w2, .L3420 - ldrb w1, [x1,1269] - cbz w1, .L3418 -.L3420: - add x0, x22, :lo12:.LANCHOR3 - ldrh w0, [x0,1346] + ldrb w2, [x1, 1212] + cbnz w2, .L3413 + ldrb w1, [x1, 1213] + cbz w1, .L3411 +.L3413: + add x0, x23, :lo12:.LANCHOR3 + ldrh w0, [x0, 1338] sub w0, w0, #1 - uxth w0, w0 -.L3418: + and w0, w0, 65535 +.L3411: add x24, x20, :lo12:.LANCHOR0 - orr w23, w0, w23 + orr w21, w0, w21 mov w0, 1 - strb w26, [x24,3430] - strh wzr, [x24,3426] - strb wzr, [x24,3428] - strh wzr, [x24,3450] - strh wzr, [x24,3452] + strb w27, [x24, 3422] + strh wzr, [x24, 3418] + strb wzr, [x24, 3420] + strh wzr, [x24, 3442] + strh wzr, [x24, 3444] bl buf_alloc - mov w1, 1 mov x19, x0 - str w23, [x0,40] + str w21, [x0, 40] + mov w1, 1 bl sblk_read_page - strh wzr, [x24,3448] - ldr w0, [x19,52] + strh wzr, [x24, 3440] + ldr w0, [x19, 52] cmp w0, 512 - beq .L3467 - cmn w0, #1 - beq .L3467 - ldr x0, [x19,24] + ccmn w0, #1, 4, ne + bne .L3414 +.L3457: + mov x0, x19 + bl zbuf_free +.L3455: + mov w0, -1 +.L3401: + 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], 112 + ret +.L3433: + mov w27, 1 + b .L3411 +.L3414: + ldr x0, [x19, 24] mov w1, 15555 movk w1, 0xf55f, lsl 16 ldr w2, [x0] cmp w2, w1 - beq .L3423 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC0 - add x1, x1, 864 + beq .L3415 mov w2, 1578 - b .L3468 -.L3423: - add x2, x22, :lo12:.LANCHOR3 - cmp w26, 3 - ldrb w1, [x2,1329] - ldrh w25, [x2,1384] - mul w25, w1, w25 - mul w25, w26, w25 - uxth w25, w25 - bne .L3424 +.L3458: + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 880 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack + b .L3457 +.L3415: + add x1, x23, :lo12:.LANCHOR3 adrp x26, .LANCHOR5 - add x3, x26, :lo12:.LANCHOR5 - ldrb w4, [x3,1001] - cmp w4, 2 - bne .L3424 - ldrh w24, [x2,1346] - ldrh w0, [x3,998] - lsl w24, w24, 2 - mul w24, w1, w24 - ldr x1, [x2,1320] + add x2, x26, :lo12:.LANCHOR5 + ldrb w24, [x1, 1321] + ldrh w25, [x1, 1376] + ldrb w3, [x2, 465] + cmp w3, 2 + mul w25, w24, w25 + mul w25, w27, w25 + and w25, w25, 65535 + bne .L3416 + cmp w27, 3 + bne .L3416 + ldrh w0, [x2, 462] + ldrh w2, [x1, 1338] + ldr x3, [x1, 1312] + ldr x1, [x19, 8] + ubfiz w2, w2, 2, 14 + mul w24, w24, w2 sub w24, w24, w0 and x0, x0, 65532 - add x0, x1, x0 - ldr x1, [x19,8] - uxth w24, w24 + and w24, w24, 65535 + add x0, x3, x0 mov w2, w24 bl ftl_memcpy - ldr x0, [x19,24] - ldr w27, [x0,4] - cbz w27, .L3425 - ldr x0, [x19,8] + ldr x0, [x19, 24] + ldr w27, [x0, 4] + cbz w27, .L3417 + ldr x0, [x19, 8] mov w1, w24 bl js_hash cmp w27, w0 - beq .L3425 + beq .L3417 mov x0, x19 bl zbuf_free - ldr x1, [x19,24] - adrp x0, .LC253 - add x0, x0, :lo12:.LC253 - ldr w2, [x19,40] + ldr x0, [x19, 24] mov w3, w24 - ldr w1, [x1,4] - b .L3466 -.L3425: +.L3456: + ldr w1, [x0, 4] + adrp x0, .LC253 + ldr w2, [x19, 40] + add x0, x0, :lo12:.LC253 + bl printk + b .L3455 +.L3417: add x0, x20, :lo12:.LANCHOR0 - ldrb w1, [x0,1268] - cbnz w1, .L3426 - ldrb w0, [x0,1269] - cbz w0, .L3427 -.L3426: - sub w0, w23, #1 - str w0, [x19,40] - b .L3428 -.L3427: - add x1, x22, :lo12:.LANCHOR3 - ldrh w0, [x1,1384] - ldrh w1, [x1,1418] - sub w0, w0, #1 - mul w21, w21, w1 - uxth w0, w0 - orr w0, w0, 33554432 - orr w21, w0, w21 - str w21, [x19,40] -.L3428: - mov x0, x19 + ldrb w1, [x0, 1212] + cbnz w1, .L3418 + ldrb w0, [x0, 1213] + cbz w0, .L3419 +.L3418: + sub w0, w21, #1 + str w0, [x19, 40] +.L3420: mov w1, 1 + mov x0, x19 bl sblk_read_page - ldr w0, [x19,52] + ldr w0, [x19, 52] cmp w0, 512 - beq .L3467 - cmn w0, #1 - beq .L3467 - ldr x0, [x19,24] + ccmn w0, #1, 4, ne + beq .L3457 + ldr x0, [x19, 24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 cmp w1, w0 - beq .L3431 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - add x0, x0, :lo12:.LC0 - add x1, x1, 864 + beq .L3422 mov w2, 1619 -.L3468: - bl printk - bl dump_stack -.L3467: - mov x0, x19 - bl zbuf_free - b .L3465 -.L3431: - add x0, x22, :lo12:.LANCHOR3 - add x26, x26, :lo12:.LANCHOR5 - ldr x1, [x19,8] - ldr x0, [x0,1320] - ldrh w2, [x26,998] - b .L3463 -.L3424: - ldr w23, [x0,4] - lsl w21, w25, 2 - ldr x0, [x19,8] - mov w1, w21 - bl js_hash - cmp w23, w0 - beq .L3433 - mov x0, x19 - bl zbuf_free - ldr x1, [x19,24] - adrp x0, .LC253 - ldr w2, [x19,40] - add x0, x0, :lo12:.LC253 - mov w3, w21 - ldr w1, [x1,4] -.L3466: - bl printk -.L3465: - mov w0, -1 - b .L3410 -.L3433: - add x0, x22, :lo12:.LANCHOR3 - ldr x1, [x19,8] - mov w2, w21 - ldr x0, [x0,1320] -.L3463: - bl ftl_memcpy - mov x27, 0 - add x0, x22, :lo12:.LANCHOR3 - add x21, x20, :lo12:.LANCHOR0 - mov w24, 24 - mov w26, 1 - ldr x23, [x0,1320] -.L3434: - cmp w25, w27 - ble .L3469 - ldr w0, [x23,x27,lsl 2] - cmn w0, #1 - beq .L3436 - bl lpa_hash_get_ppa - str w0, [x29,108] - cmn w0, #1 - bne .L3437 - ldr w0, [x23,x27,lsl 2] - add x1, x29, 108 - mov w2, 0 - bl pm_log2phys -.L3437: - add x2, x22, :lo12:.LANCHOR3 - ldrb w0, [x21,1257] - ldr w3, [x29,108] - sub w0, w24, w0 - ldrh w4, [x21,3424] - ldrh w1, [x2,1312] - sub w0, w0, w1 - lsr w1, w3, w1 - lsl w0, w26, w0 + b .L3458 +.L3419: + add x1, x23, :lo12:.LANCHOR3 + ldrh w0, [x1, 1376] + ldrh w1, [x1, 1410] sub w0, w0, #1 - and w0, w0, w1 - ldrb w1, [x2,1314] - udiv w0, w0, w1 - cmp w0, w4 - bne .L3436 - ldrh w4, [x21,3448] - ldr x0, [x2,1320] - str w3, [x0,x4,lsl 2] - ldrh w0, [x21,3448] - add w0, w0, 1 - strh w0, [x21,3448] -.L3436: - bl timer_get_time - add x27, x27, 1 - b .L3434 -.L3469: + and w0, w0, 65535 + orr w0, w0, 33554432 + mul w22, w1, w22 + orr w22, w0, w22 + str w22, [x19, 40] + b .L3420 +.L3422: + add x26, x26, :lo12:.LANCHOR5 + add x0, x23, :lo12:.LANCHOR3 + ldrh w2, [x26, 462] +.L3454: + ldr x0, [x0, 1312] + add x23, x23, :lo12:.LANCHOR3 + ldr x1, [x19, 8] + add x24, x20, :lo12:.LANCHOR0 + add x21, x24, 3416 + mov x27, 0 + mov w26, 24 + bl ftl_memcpy + ldr x22, [x23, 1312] +.L3425: + cmp w25, w27 + bgt .L3430 mov x0, x19 bl zbuf_free add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0,3424] - ldr x3, [x0,1112] + ldrh w1, [x0, 3416] + ldr x3, [x0, 1120] ubfiz x2, x1, 1, 16 - ldrh w2, [x3,x2] - ldrh w3, [x0,3448] + ldrh w2, [x3, x2] + ldrh w3, [x0, 3440] cmp w2, w3 - beq .L3440 + beq .L3431 adrp x0, .LC254 add x0, x0, :lo12:.LC254 bl printk -.L3440: +.L3431: add x20, x20, :lo12:.LANCHOR0 - ldrh w2, [x20,3424] - ldr x1, [x20,1112] - ldrh w3, [x20,3448] - strh w3, [x1,x2,lsl 1] - strh wzr, [x20,3452] - ldrh w0, [x20,3448] -.L3410: - 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], 112 - ret + ldrh w2, [x20, 3416] + ldr x1, [x20, 1120] + ldrh w3, [x20, 3440] + strh w3, [x1, x2, lsl 1] + strh wzr, [x20, 3444] + ldrh w0, [x20, 3440] + b .L3401 +.L3416: + ldr w22, [x0, 4] + lsl w21, w25, 2 + ldr x0, [x19, 8] + mov w1, w21 + bl js_hash + cmp w22, w0 + beq .L3424 + mov x0, x19 + bl zbuf_free + mov w3, w21 + ldr x0, [x19, 24] + b .L3456 +.L3424: + add x0, x23, :lo12:.LANCHOR3 + mov w2, w21 + b .L3454 +.L3430: + ldr w0, [x22, x27, lsl 2] + cmn w0, #1 + beq .L3427 + bl lpa_hash_get_ppa + str w0, [x29, 108] + cmn w0, #1 + bne .L3428 + ldr w0, [x22, x27, lsl 2] + mov w2, 0 + add x1, x29, 108 + bl pm_log2phys +.L3428: + ldrb w1, [x24, 1205] + ldrh w2, [x23, 1304] + sub w0, w26, w1 + ldr w3, [x29, 108] + sub w1, w0, w2 + mov w0, 1 + lsl w0, w0, w1 + ldrb w1, [x23, 1306] + sub w0, w0, #1 + lsr w2, w3, w2 + and w0, w0, w2 + udiv w0, w0, w1 + ldrh w1, [x21] + cmp w0, w1 + bne .L3427 + ldrh w1, [x21, 24] + ldr x0, [x23, 1312] + str w3, [x0, x1, lsl 2] + ldrh w0, [x21, 24] + add w0, w0, 1 + strh w0, [x21, 24] +.L3427: + bl timer_get_time + add x27, x27, 1 + b .L3425 .size gc_scan_src_blk, .-gc_scan_src_blk .align 2 .global gc_scan_static_data .type gc_scan_static_data, %function gc_scan_static_data: - stp x29, x30, [sp, -80]! + stp x29, x30, [sp, -64]! + adrp x1, .LANCHOR0 add x29, sp, 0 - stp x19, x20, [sp,16] - adrp x19, .LANCHOR0 - add x3, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - ldr x0, [x3,1120] - ldr w1, [x0,544] - cmn w1, #1 - beq .L3471 + stp x19, x20, [sp, 16] + add x19, x1, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + ldr x0, [x19, 1128] + ldr w2, [x0, 544] + cmn w2, #1 + beq .L3460 adrp x20, .LANCHOR4 - adrp x22, .LC0 add x20, x20, :lo12:.LANCHOR4 + add x20, x20, 896 mov w21, 0 - add x22, x22, :lo12:.LC0 - add x20, x20, 880 -.L3472: - add x24, x19, :lo12:.LANCHOR0 - add x1, x29, 76 +.L3468: + ldr x0, [x19, 1128] mov w2, 0 - ldr x0, [x24,1120] - ldr w0, [x0,544] + add x1, x29, 60 + ldr w0, [x0, 544] bl pm_log2phys - ldr w0, [x29,76] + ldr w0, [x29, 60] cmn w0, #1 - beq .L3473 + beq .L3461 mov w0, 1 bl buf_alloc - mov x23, x0 - ldr w1, [x29,76] - str w1, [x0,40] + ldr w1, [x29, 60] + mov x22, x0 + str w1, [x0, 40] mov w1, 1 bl sblk_read_page - ldr w0, [x23,52] + ldr w0, [x22, 52] cmp w0, 256 - bne .L3474 - adrp x4, .LANCHOR3 - ldrb w2, [x24,1257] - add x4, x4, :lo12:.LANCHOR3 - mov w3, 24 - sub w2, w3, w2 + bne .L3462 + adrp x2, .LANCHOR3 + add x2, x2, :lo12:.LANCHOR3 + ldrb w1, [x19, 1205] + mov w0, 24 + ldr w3, [x29, 60] + ldrh w4, [x2, 1304] + sub w0, w0, w1 mov w1, 1 - ldr w3, [x29,76] - ldrh w0, [x4,1312] - sub w2, w2, w0 - lsr w3, w3, w0 - lsl w2, w1, w2 - ldrb w0, [x4,1314] - sub w2, w2, #1 - and w2, w2, w3 - udiv w0, w2, w0 + sub w0, w0, w4 + lsr w3, w3, w4 + lsl w0, w1, w0 + sub w0, w0, #1 + and w0, w0, w3 + ldrb w3, [x2, 1306] mov w2, 0 + udiv w0, w0, w3 bl gc_add_sblk -.L3474: - add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x23,24] - ldr x0, [x0,1120] - ldr w1, [x1,4] - ldr w0, [x0,544] +.L3462: + ldr x0, [x19, 1128] + ldr x1, [x22, 24] + ldr w0, [x0, 544] + ldr w1, [x1, 4] cmp w1, w0 - beq .L3475 + beq .L3463 mov x1, x20 mov w2, 2163 - mov x0, x22 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3475: - mov x0, x23 +.L3463: + mov x0, x22 bl zbuf_free -.L3473: - add x2, x19, :lo12:.LANCHOR0 - ldr x1, [x2,1120] - ldr w2, [x2,3372] - ldr w0, [x1,544] - add w0, w0, 1 - str w0, [x1,544] - cmp w0, w2 - bcc .L3476 - mov w0, -1 - str w0, [x1,544] - ldr w0, [x1,548] - add w0, w0, 1 - str w0, [x1,548] +.L3461: + ldr x0, [x19, 1128] + ldr w2, [x19, 3364] + ldr w1, [x0, 544] + add w1, w1, 1 + str w1, [x0, 544] + cmp w1, w2 + bcc .L3464 + mov w1, -1 + str w1, [x0, 544] + ldr w1, [x0, 548] + add w1, w1, 1 + str w1, [x0, 548] bl ftl_flush bl pm_flush bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush - b .L3470 -.L3476: - ldr w0, [x29,76] - cmn w0, #1 - bne .L3470 - adrp x1, .LANCHOR5+998 - add w0, w21, 1 - uxth w0, w0 - ldrh w1, [x1,#:lo12:.LANCHOR5+998] - cmp w21, w1, lsr 2 - bcs .L3470 - mov w21, w0 - b .L3472 -.L3471: - ldr w1, [x0,536] - ldr w2, [x0,12] - add w1, w1, 12959744 - add w1, w1, 256 - cmp w2, w1 - bhi .L3481 - ldr x3, [x3,3392] - ldr w1, [x0,540] - ldr w3, [x3,44] - add w1, w1, 4096 - add w1, w1, 904 - cmp w3, w1 - bls .L3470 -.L3481: - add x19, x19, :lo12:.LANCHOR0 - ldr x1, [x19,3392] - ldr w1, [x1,44] - str w1, [x0,540] - str w2, [x0,536] - str wzr, [x0,544] -.L3470: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 80 +.L3459: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 ret +.L3464: + ldr w0, [x29, 60] + cmn w0, #1 + bne .L3459 + adrp x1, .LANCHOR5+462 + add w0, w21, 1 + and w0, w0, 65535 + ldrh w1, [x1, #:lo12:.LANCHOR5+462] + cmp w21, w1, lsr 2 + bcs .L3459 + mov w21, w0 + b .L3468 +.L3460: + ldr w2, [x0, 536] + ldr w3, [x0, 12] + add w2, w2, 12959744 + add w2, w2, 256 + cmp w3, w2 + bhi .L3470 + ldr w2, [x0, 540] + mov w4, 5000 + add w2, w2, w4 + ldr x4, [x19, 3384] + ldr w4, [x4, 44] + cmp w4, w2 + bls .L3459 +.L3470: + add x1, x1, :lo12:.LANCHOR0 + ldr x1, [x1, 3384] + ldr w1, [x1, 44] + str w1, [x0, 540] + str w3, [x0, 536] + str wzr, [x0, 544] + b .L3459 .size gc_scan_static_data, .-gc_scan_static_data .align 2 .global gc_block_vpn_scan @@ -22348,1001 +22176,998 @@ gc_scan_static_data: gc_block_vpn_scan: stp x29, x30, [sp, -144]! add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr x1, [x20,1120] - ldrh w0, [x20,1088] - ldr w1, [x1,608] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x1, [x20, 1128] + ldrh w0, [x20, 1096] + ldr w1, [x1, 608] cmp w1, w0 - bcs .L3486 + bcs .L3476 bl timer_get_time - ldr x21, [x20,1120] - ldr w1, [x21,604] - add w1, w1, 28672 - add w1, w1, 1328 + ldr x21, [x20, 1128] + mov w2, 30000 + ldr w1, [x21, 604] + add w1, w1, w2 cmp w0, w1 - bls .L3486 + bls .L3476 bl timer_get_time - str w0, [x21,604] - ldr x0, [x20,1120] - ldrh w2, [x20,1088] - ldr w1, [x0,600] + str w0, [x21, 604] + ldr x0, [x20, 1128] + ldrh w2, [x20, 1096] + ldr w1, [x0, 600] cmp w1, w2 - bcs .L3490 - ldr x2, [x20,3392] - ldrh w2, [x2,134] + bcs .L3478 + ldr x2, [x20, 3384] + ldrh w2, [x2, 134] cmp w1, w2 - bcs .L3491 -.L3490: + bcs .L3479 +.L3478: add x1, x19, :lo12:.LANCHOR0 - ldr x1, [x1,3392] - ldrh w1, [x1,134] - str w1, [x0,600] -.L3491: - ldr w26, [x0,600] - mov w0, 65535 - uxth w20, w26 - cmp w20, w0 - bne .L3492 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 2504 - add x1, x1, 904 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3492: - add x21, x19, :lo12:.LANCHOR0 - ldr x0, [x21,1120] - ldr w1, [x0,600] - add w1, w1, 1 - str w1, [x0,600] - ldr w1, [x0,608] - add w1, w1, 1 - str w1, [x0,608] - add x1, x29, 128 - mov w0, w20 - bl ftl_get_blk_list_in_sblk - uxth w1, w0 - cbz w1, .L3486 - uxtw x22, w20 - ldr x24, [x21,1096] - add x24, x24, x22, lsl 2 - ldrb w1, [x24,2] - tst w1, 192 - and w2, w1, 224 - beq .L3493 - cmp w2, 224 - beq .L3493 - ldr x1, [x21,1120] - ldrh w3, [x1,16] - cmp w3, w20 - beq .L3493 - ldrh w3, [x1,48] - cmp w3, w20 - beq .L3493 - ldrh w1, [x1,80] - cmp w1, w20 - bne .L3494 -.L3493: - cbnz w2, .L3486 - add x0, x19, :lo12:.LANCHOR0 - lsl x22, x22, 1 - ldr x0, [x0,1112] - ldrh w0, [x0,x22] - cbz w0, .L3495 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 2521 - add x1, x1, 904 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L3495: - add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19,1112] - strh wzr, [x0,x22] - b .L3486 -.L3494: - and w0, w0, 65535 - add x1, x29, 144 - sub w0, w0, #1 - add x0, x1, w0, sxtw 1 - ldrh w21, [x0,-16] + ldr x1, [x1, 3384] + ldrh w1, [x1, 134] + str w1, [x0, 600] +.L3479: + ldr w25, [x0, 600] mov w0, 65535 + and w21, w25, 65535 cmp w21, w0 - bne .L3497 + bne .L3480 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 - mov w2, 2529 - add x1, x1, 904 + add x1, x1, 920 + mov w2, 2504 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3497: - adrp x25, .LANCHOR3 - ldrb w3, [x24,2] - add x2, x25, :lo12:.LANCHOR3 - mov w27, 1 - and w3, w3, 224 - cmp w3, 160 - ldrh w0, [x2,1384] - ldrh w1, [x2,1418] +.L3480: + add x14, x19, :lo12:.LANCHOR0 + add x15, x29, 128 + ldr x0, [x14, 1128] + ldr w1, [x0, 600] + add w1, w1, 1 + str w1, [x0, 600] + ldr w1, [x0, 608] + add w1, w1, 1 + str w1, [x0, 608] + mov x1, x15 + mov w0, w21 + bl ftl_get_blk_list_in_sblk + mov w1, w0 + tst w0, 65535 + beq .L3476 + ldr x24, [x14, 1104] + uxtw x23, w21 + mov w2, 224 + add x24, x24, x23, lsl 2 + ldrb w0, [x24, 2] + and w0, w0, 224 + cmp w0, 32 + ccmp w0, w2, 4, ne + beq .L3481 + cbz w0, .L3482 + ldr x0, [x14, 1128] + ldrh w2, [x0, 16] + cmp w2, w21 + beq .L3476 + ldrh w2, [x0, 48] + cmp w2, w21 + beq .L3476 + ldrh w0, [x0, 80] + cmp w0, w21 + bne .L3512 +.L3476: + 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], 144 + ret +.L3481: + cbnz w0, .L3476 +.L3482: + add x0, x19, :lo12:.LANCHOR0 + lsl x23, x23, 1 + ldr x0, [x0, 1120] + ldrh w0, [x0, x23] + cbz w0, .L3484 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 920 + mov w2, 2521 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3484: + add x19, x19, :lo12:.LANCHOR0 + ldr x0, [x19, 1120] + strh wzr, [x0, x23] + b .L3476 +.L3512: + and w1, w1, 65535 + mov w0, 65535 + sub w1, w1, #1 + ldrh w26, [x15, w1, sxtw 1] + cmp w26, w0 + bne .L3486 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 920 + mov w2, 2529 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L3486: + adrp x20, .LANCHOR3 + add x2, x20, :lo12:.LANCHOR3 + ldrb w1, [x24, 2] + ldrh w22, [x2, 1410] + and w1, w1, 224 + ldrh w0, [x2, 1376] + cmp w1, 160 sub w0, w0, #1 - mul w1, w21, w1 - uxth w0, w0 - bne .L3498 - ldrb w3, [x2,1328] - cmp w3, 2 - uxth w27, w3 - orr w1, w1, w3, lsl 24 - bne .L3498 - ldrh w0, [x2,1346] - sub w0, w0, #1 - uxth w0, w0 -.L3498: - orr w21, w0, w1 + and w0, w0, 65535 + mul w22, w22, w26 + bne .L3496 + ldrb w1, [x2, 1320] + cmp w1, 2 + orr w22, w22, w1, lsl 24 + beq .L3488 + and w26, w1, 65535 +.L3487: + add x20, x20, :lo12:.LANCHOR3 + orr w22, w0, w22 mov w0, 1 bl buf_alloc - str w21, [x0,40] + str w22, [x0, 40] + mov x27, x0 mov w1, 1 - add x21, x25, :lo12:.LANCHOR3 - mov x23, x0 bl sblk_read_page - ldrh w0, [x21,1346] + ldrb w0, [x20, 1321] mov w1, 255 - ldrb w2, [x21,1329] - mul w2, w0, w2 - ldr x0, [x21,1320] + ldrh w2, [x20, 1338] + mul w2, w2, w0 + ldr x0, [x20, 1312] lsl w2, w2, 2 bl ftl_memset - ldr w0, [x23,52] + ldr w0, [x27, 52] cmp w0, 512 - beq .L3510 - cmn w0, #1 - cset w2, eq - cbz w2, .L3499 -.L3510: - mov w0, w20 - mov w1, 1 + ccmn w0, #1, 4, ne + bne .L3489 +.L3514: mov w2, 0 - b .L3523 -.L3499: - ldr x0, [x23,24] + mov w1, 1 + mov w0, w21 + bl gc_add_sblk + mov x0, x27 + bl zbuf_free + b .L3476 +.L3488: + ldrh w0, [x2, 1338] + mov w26, w1 + sub w0, w0, #1 + and w0, w0, 65535 + b .L3487 +.L3496: + mov w26, 1 + b .L3487 +.L3489: + ldr x0, [x27, 24] ldr w1, [x0] mov w0, 15555 movk w0, 0xf55f, lsl 16 cmp w1, w0 - beq .L3501 - mov w0, w20 - mov w1, 1 -.L3523: - bl gc_add_sblk - mov x0, x23 - bl zbuf_free - b .L3486 -.L3501: - ldrb w0, [x21,1329] + bne .L3514 + ldrh w0, [x20, 1376] mov x28, 0 - ldrh w1, [x21,1384] - mov w21, w28 - mul w0, w0, w1 - mul w27, w27, w0 - uxth w0, w27 - ldr x27, [x23,8] - str w0, [x29,108] - and w0, w26, 65535 - str w0, [x29,104] -.L3502: - ldr w0, [x29,108] - cmp w0, w28 - ble .L3524 - ldr w0, [x27,x28,lsl 2] - cmn w0, #1 - beq .L3503 - bl lpa_hash_get_ppa - str w0, [x29,124] - cmn w0, #1 - bne .L3504 - ldr w0, [x27,x28,lsl 2] - add x1, x29, 124 - mov w2, 0 - bl pm_log2phys -.L3504: + ldrb w1, [x20, 1321] + mov w22, 0 + mul w1, w1, w0 + mul w1, w26, w1 + ldr x26, [x27, 8] + and w0, w1, 65535 + str w0, [x29, 108] + and w0, w25, 65535 + str w0, [x29, 104] add x0, x19, :lo12:.LANCHOR0 - add x2, x25, :lo12:.LANCHOR3 - mov w1, 24 - ldrb w0, [x0,1257] - ldrh w4, [x2,1312] - sub w0, w1, w0 - mov w1, 1 - sub w0, w0, w4 - lsl w0, w1, w0 - ldr w1, [x29,124] - sub w0, w0, #1 - lsr w1, w1, w4 - and w0, w0, w1 - ldrb w1, [x2,1314] - udiv w0, w0, w1 - ldr w1, [x29,104] - cmp w0, w1 - bne .L3503 - add w21, w21, 1 - uxth w21, w21 -.L3503: - add x28, x28, 1 - b .L3502 -.L3524: - mov x0, x23 + str x0, [x29, 96] +.L3491: + ldr w0, [x29, 108] + cmp w0, w28 + bgt .L3494 + mov x0, x27 bl zbuf_free adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3506 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3495 add x0, x19, :lo12:.LANCHOR0 - ldrb w4, [x24,2] - uxth w1, w26 - mov w3, w21 + ldrb w4, [x24, 2] + mov w3, w22 + and w1, w25, 65535 + ldr x0, [x0, 1120] ubfx x4, x4, 5, 3 - ldr x2, [x0,1112] + ldrh w2, [x0, x23, lsl 1] adrp x0, .LC255 add x0, x0, :lo12:.LC255 - ldrh w2, [x2,x22,lsl 1] bl printk -.L3506: +.L3495: add x19, x19, :lo12:.LANCHOR0 - cmp w21, 31 - ldr x0, [x19,1112] - strh w21, [x0,x22,lsl 1] - bhi .L3486 - mov w0, w20 - mov w1, 1 + cmp w22, 31 + ldr x0, [x19, 1120] + strh w22, [x0, x23, lsl 1] + bhi .L3476 mov w2, 0 + mov w1, 1 + mov w0, w21 bl gc_add_sblk -.L3486: - 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], 144 - ret + b .L3476 +.L3494: + ldr w0, [x26, x28, lsl 2] + cmn w0, #1 + beq .L3492 + bl lpa_hash_get_ppa + str w0, [x29, 124] + cmn w0, #1 + bne .L3493 + ldr w0, [x26, x28, lsl 2] + mov w2, 0 + add x1, x29, 124 + bl pm_log2phys +.L3493: + ldr x0, [x29, 96] + mov w1, 24 + ldrh w2, [x20, 1304] + ldrb w0, [x0, 1205] + sub w0, w1, w0 + sub w1, w0, w2 + mov w0, 1 + lsl w0, w0, w1 + ldr w1, [x29, 124] + sub w0, w0, #1 + lsr w1, w1, w2 + and w0, w0, w1 + ldrb w1, [x20, 1306] + udiv w0, w0, w1 + ldr w1, [x29, 104] + cmp w1, w0 + bne .L3492 + add w22, w22, 1 + and w22, w22, 65535 +.L3492: + add x28, x28, 1 + b .L3491 .size gc_block_vpn_scan, .-gc_block_vpn_scan .align 2 .global ftl_sblk_dump .type ftl_sblk_dump, %function ftl_sblk_dump: - sub sp, sp, #272 - uxth x0, w0 - stp x29, x30, [sp,48] + sub sp, sp, #288 + and x0, x0, 65535 + stp x29, x30, [sp, 48] add x29, sp, 48 - stp x19, x20, [sp,64] - adrp x20, .LANCHOR0 - str x0, [x29,128] - add x19, x20, :lo12:.LANCHOR0 - str x1, [x29,160] - stp x21, x22, [sp,80] - stp x23, x24, [sp,96] - stp x27, x28, [sp,128] - stp x25, x26, [sp,112] - lsl x24, x0, 2 - mov x22, x0 - ldr x0, [x19,1096] - mov x28, x20 - add x1, x0, x24 - ldrh w4, [x0,x24] - ldr w5, [x0,x24] + stp x19, x20, [sp, 64] + mov x20, x0 + stp x21, x22, [sp, 80] + adrp x21, .LANCHOR0 + add x19, x21, :lo12:.LANCHOR0 + stp x23, x24, [sp, 96] + stp x25, x26, [sp, 112] + lsl x23, x0, 2 + stp x27, x28, [sp, 128] + str x0, [x29, 136] + ldr x0, [x19, 1104] + str x1, [x29, 152] + add x1, x0, x23 + ldr w5, [x0, x23] + ldrb w2, [x1, 2] + mov w1, w20 + ldrh w4, [x0, x23] adrp x0, .LC256 - ldrb w3, [x1,2] - add x0, x0, :lo12:.LC256 - mov w1, w22 - and w4, w4, 2047 - ubfx x2, x3, 5, 3 ubfx x5, x5, 11, 8 - ubfx x3, x3, 3, 2 + add x0, x0, :lo12:.LC256 + ubfx x3, x2, 3, 2 + and w4, w4, 2047 + ubfx x2, x2, 5, 3 bl printk - mov w1, 65535 + str x21, [x29, 160] + mov w0, 65535 + cmp w20, w0 + beq .L3537 + ldrh w1, [x19, 1096] mov w0, 0 - cmp w22, w1 - beq .L3526 - ldrh w1, [x19,1088] - cmp w1, w22 - bls .L3526 - ldr x0, [x19,1096] - mov w25, 1 - adrp x27, .LANCHOR3 - add x0, x0, x24 - ldrb w0, [x0,2] + cmp w1, w20 + bls .L3515 + ldr x0, [x19, 1104] + adrp x28, .LANCHOR3 + add x0, x0, x23 + ldrb w0, [x0, 2] and w0, w0, 224 cmp w0, 160 - bne .L3527 - add x0, x27, :lo12:.LANCHOR3 - ldrb w25, [x0,1328] -.L3527: - add x1, x29, 208 - mov w0, w22 - strh w22, [x29,192] - mov w23, 0 + bne .L3539 + add x0, x28, :lo12:.LANCHOR3 + ldrb w24, [x0, 1320] +.L3517: + add x27, x29, 240 + mov w0, w20 + mov w19, 0 + strh w20, [x27, -32]! + add x1, x27, 16 bl ftl_get_blk_list_in_sblk - uxtb w1, w0 - mov w4, w0 - add x0, x27, :lo12:.LANCHOR3 - strb w1, [x29,201] - mov w3, w25 - strh wzr, [x29,194] - uxtb w4, w4 - ldrh w0, [x0,1384] - mov w20, w23 - strb wzr, [x29,197] - strh wzr, [x29,202] - mul w1, w1, w0 - add x0, x28, :lo12:.LANCHOR0 - strh w1, [x29,198] - ldr x1, [x0,1096] + add x2, x28, :lo12:.LANCHOR3 + and w1, w0, 255 + strb w1, [x29, 217] + and w4, w0, 255 + strh wzr, [x29, 210] + mov w3, w24 + ldrh w2, [x2, 1376] adrp x0, .LC257 + strb wzr, [x29, 213] add x0, x0, :lo12:.LC257 - add x1, x1, x24 - ldrb w2, [x1,2] - mov w1, w22 + strh wzr, [x29, 218] + mul w1, w1, w2 + strh w1, [x29, 214] + ldr x1, [x29, 160] + add x1, x1, :lo12:.LANCHOR0 + ldr x1, [x1, 1104] + add x1, x1, x23 + ldrb w2, [x1, 2] + mov w1, w20 ubfx x2, x2, 5, 3 bl printk mov w0, 1 bl buf_alloc - mov x26, x0 + stp wzr, wzr, [x29, 168] + mov x25, x0 + str wzr, [x29, 176] adrp x0, .LC195 - str w23, [x29,168] add x0, x0, :lo12:.LC195 - str x0, [x29,120] - adrp x0, .LANCHOR4 - str w23, [x29,144] - add x0, x0, :lo12:.LANCHOR4 - add x0, x0, 928 - str x0, [x29,112] -.L3528: - add x0, x27, :lo12:.LANCHOR3 - ldrh w0, [x0,1384] - cmp w0, w20 - bls .L3546 - lsl w0, w20, 1 - str wzr, [x29,172] - add w1, w0, w20 + str x0, [x29, 120] +.L3518: + add x0, x28, :lo12:.LANCHOR3 + ldrh w0, [x0, 1376] + cmp w0, w19 + bls .L3535 + lsl w0, w19, 1 + mov w22, 0 + sub w1, w0, #1 + add w0, w0, w19 sub w0, w0, #1 - sub w1, w1, #1 - str w0, [x29,136] - str w1, [x29,140] -.L3547: - ldrb w0, [x29,201] - ldr w1, [x29,172] - cmp w0, w1 - bls .L3544 - mov w21, 1 -.L3545: - cmp w21, w25 - ldr w0, [x29,172] - bhi .L3566 - add x1, x29, 192 - add x0, x1, w0, sxtw 1 - ldrh w3, [x0,16] - mov w0, 65535 - cmp w3, w0 - beq .L3529 - add x0, x27, :lo12:.LANCHOR3 - cmp w25, 3 - ldrh w2, [x0,1418] - mul w2, w3, w2 - bne .L3530 - add x1, x28, :lo12:.LANCHOR0 - ldrb w4, [x1,1268] - cbz w4, .L3531 - ldr w1, [x29,140] - b .L3564 -.L3531: - ldrb w0, [x1,1269] - lsl w19, w21, 24 - cbz w0, .L3533 - ldr w0, [x29,140] - add w2, w2, w0 - add w2, w2, w21 - b .L3565 -.L3533: - add w2, w2, w20 -.L3565: - orr w19, w19, w2 - b .L3532 -.L3530: - cmp w25, 2 - add w19, w2, w20 - bne .L3532 - ldr w1, [x29,136] -.L3564: - ldrb w19, [x0,1328] - add w2, w2, w1 - add w2, w2, w21 - orr w19, w2, w19, lsl 24 + stp w1, w0, [x29, 144] + b .L3536 +.L3539: + mov w24, 1 + b .L3517 .L3532: + ldr x0, [x29, 128] + ldrh w10, [x27, x0] + mov w0, 65535 + cmp w10, w0 + beq .L3519 + add x2, x28, :lo12:.LANCHOR3 + cmp w24, 3 + ldrh w8, [x2, 1410] + mul w1, w8, w10 + add w0, w21, w1 + bne .L3520 + ldr x3, [x29, 160] + add x3, x3, :lo12:.LANCHOR0 + ldrb w4, [x3, 1212] + cbz w4, .L3521 + ldrb w8, [x2, 1320] + ldr w1, [x29, 148] +.L3548: + add w0, w0, w1 + orr w26, w0, w8, lsl 24 + b .L3522 +.L3521: + ldrb w2, [x3, 1213] + lsl w8, w21, 24 + cbz w2, .L3523 + ldr w1, [x29, 148] + add w0, w0, w1 + orr w26, w0, w8 +.L3522: + str w26, [x25, 40] mov w1, 1 - str w19, [x26,40] - mov x0, x26 - str x3, [x29,104] + str w10, [x29, 108] + mov x0, x25 bl sblk_read_page - ldr x7, [x26,8] - mov w2, w20 - ldr x0, [x26,24] - ldr w9, [x26,52] - ldr w1, [x7,12] + ldr x1, [x25, 24] + mov w3, w26 + ldr x0, [x25, 8] + ldr w11, [x25, 52] + ldr w10, [x29, 108] + ldr w2, [x1, 12] + mov w4, w11 + str w2, [sp, 32] + str w11, [x29, 112] + ldr w2, [x1, 8] + str w2, [sp, 24] + ldr w2, [x1, 4] + str w2, [sp, 16] + mov w2, w19 + ldr w1, [x1] + str w1, [sp, 8] + ldr w1, [x0, 12] str w1, [sp] - mov w4, w9 - ldr x3, [x29,104] - ldr w1, [x0] - str w1, [sp,8] - str x9, [x29,104] - ldr w1, [x0,4] - str w1, [sp,16] - ldr w1, [x0,8] - str w1, [sp,24] - mov w1, w3 - mov w3, w19 - ldr w0, [x0,12] - str w0, [sp,32] - ldr x0, [x29,120] - ldr w5, [x7] - ldr w6, [x7,4] - ldr w7, [x7,8] + mov w1, w10 + ldp w5, w6, [x0] + ldr w7, [x0, 8] + ldr x0, [x29, 120] bl printk - ldr x9, [x29,104] - cmp w9, 512 - beq .L3551 - cmn w9, #1 - bne .L3535 -.L3551: - mov w0, 1 - str w0, [x29,168] -.L3535: + ldr w11, [x29, 112] + ldr w0, [x29, 168] + cmp w11, 512 + ccmn w11, #1, 4, ne + csinc w0, w0, wzr, ne + str w0, [x29, 168] mov x0, 35160 movk x0, 0x41, lsl 16 bl __const_udelay - add x0, x28, :lo12:.LANCHOR0 - ldr x0, [x0,1096] - add x0, x0, x24 - ldrb w0, [x0,2] + ldr x0, [x29, 160] + mov w1, 32 + add x0, x0, :lo12:.LANCHOR0 + ldr x0, [x0, 1104] + add x0, x0, x23 + ldrb w0, [x0, 2] and w0, w0, 224 - cmp w0, 32 - beq .L3529 cmp w0, 224 - cset w2, eq - cbnz w2, .L3529 - ldr x0, [x26,24] - str x2, [x29,104] - ldr w0, [x0,4] + ccmp w0, w1, 4, ne + beq .L3519 + ldr x0, [x25, 24] + ldr w0, [x0, 4] bl lpa_hash_get_ppa - str w0, [x29,188] + str w0, [x29, 204] cmn w0, #1 - ldr x2, [x29,104] - bne .L3537 - ldr x0, [x26,24] - add x1, x29, 188 - ldr w0, [x0,4] + bne .L3526 + ldr x0, [x25, 24] + mov w2, 0 + add x1, x29, 204 + ldr w0, [x0, 4] bl pm_log2phys -.L3537: - ldr w0, [x29,188] - cmp w0, w19 - bne .L3538 - ldr x2, [x26,24] - add w23, w23, 1 +.L3526: + ldr w0, [x29, 204] + cmp w26, w0 + bne .L3527 + ldr w0, [x29, 172] + mov w1, w26 + add w0, w0, 1 + str w0, [x29, 172] + ldr x0, [x25, 24] + ldr w3, [x29, 172] + ldr w2, [x0, 4] adrp x0, .LC258 - mov w1, w19 add x0, x0, :lo12:.LC258 - mov w3, w23 - ldr w2, [x2,4] bl printk -.L3538: - ldr x0, [x29,160] - cbz x0, .L3540 - ldr x0, [x29,144] - ubfiz x19, x0, 2, 32 - ldr x0, [x29,160] - ldr w2, [x0,x19] - ldr x0, [x26,24] - ldr w0, [x0,4] +.L3527: + ldr x0, [x29, 152] + cbz x0, .L3529 + ldr x0, [x29, 176] + ubfiz x3, x0, 2, 32 + ldr x0, [x29, 152] + ldr w2, [x0, x3] + ldr x0, [x25, 24] + ldr w0, [x0, 4] cmp w0, w2 - beq .L3541 + beq .L3530 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L3541 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L3530 + ldr w1, [x29, 176] adrp x0, .LC259 - ldr w1, [x29,144] + str x3, [x29, 112] add x0, x0, :lo12:.LC259 bl printk -.L3541: - ldr x0, [x29,160] - ldr x1, [x26,24] - ldr w0, [x0,x19] - ldr w1, [x1,4] + ldr x3, [x29, 112] +.L3530: + ldr x1, [x25, 24] + ldr x0, [x29, 152] + ldr w1, [x1, 4] + ldr w0, [x0, x3] cmp w1, w0 - beq .L3540 + beq .L3529 cmn w0, #1 - beq .L3540 - adrp x0, .LC0 - ldr x1, [x29,112] + beq .L3529 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 944 mov w2, 1575 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3540: - ldr w0, [x29,144] - add w0, w0, 1 - str w0, [x29,144] .L3529: - add w21, w21, 1 - uxth w21, w21 - b .L3545 -.L3566: + ldr w0, [x29, 176] add w0, w0, 1 - uxth w0, w0 - str w0, [x29,172] - b .L3547 -.L3544: - add w20, w20, 1 - uxth w20, w20 - b .L3528 -.L3546: - mov x0, x26 + str w0, [x29, 176] +.L3519: + add w21, w21, 1 + and w21, w21, 65535 +.L3534: + cmp w24, w21 + bcs .L3532 + add w22, w22, 1 + and w22, w22, 65535 +.L3536: + ldrb w0, [x29, 217] + cmp w0, w22 + bls .L3533 + sxtw x0, w22 + mov w21, 1 + add x0, x0, 8 + lsl x0, x0, 1 + str x0, [x29, 128] + b .L3534 +.L3523: + add w1, w19, w1 + orr w26, w8, w1 + b .L3522 +.L3520: + cmp w24, 2 + bne .L3524 + ldrb w8, [x2, 1320] + ldr w1, [x29, 144] + b .L3548 +.L3524: + add w26, w19, w1 + b .L3522 +.L3533: + add w19, w19, 1 + and w19, w19, 65535 + b .L3518 +.L3535: + mov x0, x25 bl zbuf_free - add x0, x28, :lo12:.LANCHOR0 - ldr x3, [x29,128] - mov w1, w22 - ldr x2, [x0,1112] + ldr x0, [x29, 160] + ldr x1, [x29, 136] + add x0, x0, :lo12:.LANCHOR0 + ldr w3, [x29, 172] + ldr x0, [x0, 1120] + ldrh w2, [x0, x1, lsl 1] + mov w1, w20 adrp x0, .LC260 add x0, x0, :lo12:.LC260 - ldrh w2, [x2,x3,lsl 1] - mov w3, w23 bl printk - ldr w0, [x29,168] -.L3526: - 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, 272 + ldr w0, [x29, 168] +.L3515: + 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, 288 ret +.L3537: + mov w0, 0 + b .L3515 .size ftl_sblk_dump, .-ftl_sblk_dump .align 2 .global zftl_read .type zftl_read, %function zftl_read: - sub sp, sp, #192 - stp x29, x30, [sp,16] + sub sp, sp, #176 + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] - mov w19, w0 + stp x19, x20, [sp, 32] + mov w20, w0 adrp x0, .LANCHOR2 - stp x21, x22, [sp,48] - stp x23, x24, [sp,64] - ldr w0, [x0,#:lo12:.LANCHOR2] - mov w20, w1 - stp x25, x26, [sp,80] - stp x27, x28, [sp,96] - mov w23, w2 - mov x22, x3 - tbz x0, 12, .L3568 + stp x23, x24, [sp, 64] + stp x21, x22, [sp, 48] + mov w19, w1 + ldr w0, [x0, #:lo12:.LANCHOR2] + mov w24, w2 + stp x25, x26, [sp, 80] + mov x23, x3 + stp x27, x28, [sp, 96] + tbz x0, 12, .L3550 + mov w3, w2 adrp x0, .LC261 - mov w1, w19 + mov w2, w1 add x0, x0, :lo12:.LC261 - mov w2, w20 - mov w3, w23 + mov w1, w20 bl printk -.L3568: - cbnz w19, .L3569 +.L3550: + cbnz w20, .L3551 adrp x0, .LANCHOR0+1032 - mov w19, 24576 - ldr w1, [x0,#:lo12:.LANCHOR0+1032] - b .L3570 -.L3569: - cmp w19, 3 - mov w3, -1 - bhi .L3571 - lsl w19, w19, 13 - mov w1, 8192 -.L3570: - cmp w20, w1 - bcs .L3603 - cmp w23, w1 - cset w0, hi - cbnz w0, .L3603 - add w2, w20, w23 - mov w3, -1 - cmp w2, w1 - bhi .L3571 - adrp x21, .LANCHOR0 - add w20, w19, w20 - add x2, x21, :lo12:.LANCHOR0 - str w0, [x29,148] - adrp x0, .LC0 - add x0, x0, :lo12:.LC0 - str x0, [x29,136] - ldr x3, [x2,3392] + mov w20, 24576 + ldr w0, [x0, #:lo12:.LANCHOR0+1032] +.L3552: + cmp w0, w19 + ccmp w0, w24, 0, hi + bcc .L3585 + add w1, w19, w24 + cmp w0, w1 + bcc .L3585 + add w20, w20, w19 + adrp x19, .LANCHOR0 + add x0, x19, :lo12:.LANCHOR0 + adrp x21, .LANCHOR3 + ldr x1, [x0, 3384] + ldr w0, [x1, 24] + add w0, w0, w24 + str w0, [x1, 24] + add x0, x21, :lo12:.LANCHOR3 + add w1, w24, w20 + stp w1, wzr, [x29, 136] + sub w1, w1, #1 + ldrb w0, [x0, 1946] + udiv w26, w20, w0 + udiv w0, w1, w0 + mov w22, w26 + sub w25, w0, w26 + str w0, [x29, 132] + add w25, w25, 1 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - add x0, x0, 944 - str x0, [x29,128] - ldr w1, [x3,24] - add w1, w1, w23 - str w1, [x3,24] - ldrb w1, [x2,3360] - udiv w2, w20, w1 - str w2, [x29,156] - add w2, w20, w23 - str w2, [x29,152] - sub w2, w2, #1 - udiv w1, w2, w1 - ldr w2, [x29,156] - str w1, [x29,144] - sub w25, w1, w2 - mov x19, x2 - add w25, w25, 1 -.L3572: - cbz w25, .L3645 - ldr w1, [x29,156] - add x0, x21, :lo12:.LANCHOR0 - cmp w19, w1 - ldr w1, [x29,144] - ldrb w0, [x0,3360] - cset w2, eq - cmp w19, w1 - cset w26, eq - uxth w24, w0 - cbnz w26, .L3607 - cbz w2, .L3573 - b .L3644 -.L3607: - cbz w2, .L3575 -.L3644: - udiv w26, w20, w0 - msub w26, w26, w0, w20 - uxth w0, w23 - uxth w26, w26 - sub w24, w24, w26 - uxth w24, w24 - cmp w24, w23 - csel w24, w0, w24, hi - b .L3573 -.L3575: - ldr w1, [x29,152] - mov w26, w2 - msub w24, w0, w19, w1 - uxtb w24, w24 -.L3573: - add x1, x21, :lo12:.LANCHOR0 + add x0, x0, 960 + str x0, [x29, 112] +.L3554: + cbnz w25, .L3582 + bl timer_get_time + adrp x1, .LANCHOR5+468 + str w0, [x1, #:lo12:.LANCHOR5+468] + ldr w0, [x29, 140] +.L3549: + 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 +.L3551: + cmp w20, 3 + bhi .L3585 + lsl w20, w20, 13 + mov w0, 8192 + b .L3552 +.L3582: + add x0, x21, :lo12:.LANCHOR3 + cmp w22, w26 + ldrb w1, [x0, 1946] + ldr w0, [x29, 132] + and w27, w1, 65535 + ccmp w22, w0, 4, ne + bne .L3586 + cmp w22, w26 + bne .L3556 + udiv w3, w20, w1 + and w0, w24, 65535 + msub w1, w3, w1, w20 + and w28, w1, 65535 + sub w27, w27, w28 + and w27, w27, 65535 + cmp w24, w27 + csel w27, w0, w27, cc +.L3555: + add x1, x19, :lo12:.LANCHOR0 mov w0, 0 - add x1, x1, 1312 -.L3578: - ldr w2, [x1,36] - cmp w2, w19 - bne .L3576 - ldrb w2, [x1,2] - tbz x2, 3, .L3576 - add x2, x21, :lo12:.LANCHOR0 - ubfiz x1, x0, 6, 32 - add x0, x2, x1 - ubfiz x26, x26, 9, 16 - lsl w2, w24, 9 - ubfiz x24, x24, 9, 16 - ldr x1, [x0,1320] - mov x0, x22 - add x22, x22, x24 - add x1, x1, x26 + add x1, x1, 1306 +.L3559: + ldr w2, [x1, 34] + cmp w22, w2 + bne .L3557 + ldrb w2, [x1] + tbz x2, 3, .L3557 + add x1, x19, :lo12:.LANCHOR0 + ubfiz x0, x0, 6, 32 + add x0, x1, x0 + lsl w2, w27, 9 + ubfiz x27, x27, 9, 16 + ubfiz x28, x28, 9, 16 + ldr x1, [x0, 1312] + mov x0, x23 + add x23, x23, x27 + add x1, x1, x28 bl ftl_memcpy - b .L3577 -.L3576: +.L3558: + add w22, w22, 1 + sub w25, w25, #1 +.L3565: + add x0, x19, :lo12:.LANCHOR0 + ldrb w0, [x0, 3353] + cmp w0, 2 + bls .L3566 + cbnz w25, .L3554 +.L3566: + add x2, x21, :lo12:.LANCHOR3 + ldrb w1, [x2, 1957] + cbz w1, .L3554 + ldrb w2, [x2, 1956] + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x2, lsl 6 + bl sblk_read_page + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + str x0, [x29, 120] +.L3568: + add x0, x21, :lo12:.LANCHOR3 + ldrb w1, [x0, 1957] + cbnz w1, .L3581 + mov w1, -1 + strb wzr, [x0, 1957] + strb w1, [x0, 1956] + b .L3554 +.L3556: + ldr w0, [x29, 136] + msub w27, w1, w22, w0 + and w27, w27, 255 +.L3586: + mov w28, 0 + b .L3555 +.L3557: add w0, w0, 1 add x1, x1, 64 cmp w0, 32 - bne .L3578 - mov w0, w19 + bne .L3559 + mov w0, w22 bl lpa_hash_get_ppa - str w0, [x29,172] + str w0, [x29, 156] cmn w0, #1 - bne .L3579 - mov w0, w19 - add x1, x29, 172 + bne .L3560 mov w2, 0 + add x1, x29, 156 + mov w0, w22 bl pm_log2phys -.L3579: - ldr w0, [x29,172] +.L3560: + ldr w0, [x29, 156] cmn w0, #1 - bne .L3580 - mov w24, 0 -.L3581: - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,3360] - cmp w24, w0 - bcs .L3577 - madd w0, w19, w0, w24 - cmp w0, w20 - bcc .L3582 - ldr w1, [x29,152] - cmp w0, w1 - bcs .L3582 - mov x0, x22 - mov w1, 0 + bne .L3561 + add x28, x21, :lo12:.LANCHOR3 + mov w27, 0 +.L3562: + ldrb w0, [x28, 1946] + cmp w27, w0 + bcs .L3558 + madd w0, w22, w0, w27 + cmp w20, w0 + bhi .L3563 + ldr w1, [x29, 136] + cmp w1, w0 + bls .L3563 + mov x0, x23 + add x23, x23, 512 mov w2, 512 - add x22, x22, 512 + mov w1, 0 bl ftl_memset -.L3582: - add w24, w24, 1 - b .L3581 -.L3580: +.L3563: + add w27, w27, 1 + b .L3562 +.L3561: mov w0, 0 bl buf_alloc - cbz x0, .L3584 - add x2, x21, :lo12:.LANCHOR0 - ldr x3, [x2,3392] - ldr w2, [x3,40] + cbz x0, .L3565 + add x2, x19, :lo12:.LANCHOR0 + ldr x4, [x2, 3384] + ldr w2, [x4, 40] add w2, w2, 1 - str w2, [x3,40] - ldr w2, [x29,172] - strb w24, [x0,56] - ubfiz x24, x24, 9, 16 - str x22, [x0,16] - add x22, x22, x24 - str w2, [x0,40] - str w2, [x0,44] - str w19, [x0,36] - strb w26, [x0,57] + str w2, [x4, 40] + ldr w2, [x29, 156] + strb w27, [x0, 56] + ubfiz x27, x27, 9, 16 + str x23, [x0, 16] + add x23, x23, x27 + strb w28, [x0, 57] + stp w22, w2, [x0, 36] + str w2, [x0, 44] bl zftl_add_read_buf -.L3577: - add w19, w19, 1 - sub w25, w25, #1 -.L3584: - cbz w25, .L3608 - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,3362] - cmp w0, 2 - bhi .L3572 -.L3608: - adrp x24, .LANCHOR3 - add x2, x24, :lo12:.LANCHOR3 - ldrb w1, [x2,1963] - cbz w1, .L3572 - ldrb w2, [x2,1962] - add x26, x21, :lo12:.LANCHOR0 - add x0, x26, 1312 - mov x27, x26 - add x0, x0, x2, lsl 6 - bl sblk_read_page -.L3587: - add x0, x24, :lo12:.LANCHOR3 - ldrb w1, [x0,1963] - cbz w1, .L3646 - ldrb w0, [x0,1962] + b .L3558 +.L3581: + ldrb w0, [x0, 1956] cmp w0, 255 - bne .L3588 - ldr x1, [x29,128] - mov w2, 1283 - ldr x0, [x29,136] + bne .L3569 + ldp x1, x0, [x29, 112] + mov w2, 1284 bl printk bl dump_stack -.L3588: - add x0, x24, :lo12:.LANCHOR3 - add x1, x27, 1312 - ldrb w28, [x0,1962] - lsl x2, x28, 6 - add x26, x1, x2 - ldrb w1, [x1,x2] - ldr w6, [x26,52] - strb w1, [x0,1962] - cmn w6, #1 - bne .L3589 - ldr x1, [x27,1120] - str w6, [x29,148] - ldr w0, [x1,552] +.L3569: + add x0, x21, :lo12:.LANCHOR3 + add x4, x19, :lo12:.LANCHOR0 + add x1, x4, 1304 + ldrb w8, [x0, 1956] + ubfiz x27, x8, 6, 8 + add x28, x1, x27 + sxtw x27, w8 + lsl x3, x27, 6 + add x2, x1, x3 + ldrb w1, [x1, x3] + ldr w9, [x2, 52] + strb w1, [x0, 1956] + cmn w9, #1 + bne .L3570 + ldr x1, [x4, 1128] + str w9, [x29, 140] + ldr w0, [x1, 552] add w0, w0, 1 - str w0, [x1,552] - b .L3590 -.L3589: - cmp w6, 256 - bne .L3590 - ldrb w4, [x27,1257] - mov w1, 24 - ldrh w5, [x0,1312] - mov w7, 1 - sub w4, w1, w4 - ldr w3, [x26,40] - sub w4, w4, w5 - ldr w2, [x26,36] - lsl w4, w7, w4 - lsr w5, w3, w5 - sub w4, w4, #1 - str x6, [x29,104] - and w5, w4, w5 - ldrb w4, [x0,1314] - adrp x0, .LC262 - str x7, [x29,112] - add x0, x0, :lo12:.LC262 - udiv w4, w5, w4 - str x4, [x29,120] - uxth w1, w4 - bl printk - ldr x4, [x29,120] - mov w2, 0 - ldr x7, [x29,112] - mov w0, w4 - mov w1, w7 - bl gc_add_sblk - ldr x6, [x29,104] -.L3590: - add x0, x27, 1312 - add x0, x0, x28, lsl 6 - ldr x3, [x0,24] - ldr w0, [x0,36] - ldr w1, [x3,4] + str w0, [x1, 552] +.L3571: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x27, lsl 6 + ldr x3, [x0, 24] + ldr w0, [x0, 36] + ldr w1, [x3, 4] cmp w1, w0 - bne .L3609 - cmn w6, #1 - bne .L3591 -.L3609: - add x0, x27, 1312 - ldrb w4, [x27,3360] - add x0, x0, x28, lsl 6 - ldrb w6, [x27,1257] - mov w5, 24 - sub w5, w5, w6 - ldrb w1, [x0,56] - ldr x2, [x0,8] - ldr x7, [x0,16] + bne .L3572 + cmn w9, #1 + bne .L3573 +.L3572: + add x0, x21, :lo12:.LANCHOR3 + add x5, x19, :lo12:.LANCHOR0 + ldrb w4, [x0, 1946] + add x0, x5, 1304 + add x0, x0, x27, lsl 6 + ldrb w6, [x5, 1205] + mov w5, 1 + ldrb w1, [x0, 56] + lsl w5, w5, w6 + ldp x2, x7, [x0, 8] cmp w1, w4 - ldr w1, [x0,40] - mov w0, 1 - lsl w0, w0, w6 + sub w5, w5, #1 + ldr w1, [x0, 40] + mov w0, 24 + sub w0, w0, w6 csel x2, x7, x2, cs - sub w0, w0, #1 - lsr w6, w1, w5 - lsl w5, w0, w5 - and w0, w0, w6 - bic w1, w1, w5 + lsl w6, w5, w0 + lsr w0, w1, w0 + bic w1, w1, w6 + and w0, w0, w5 bl flash_read_page_en - mov w6, w0 -.L3591: - cmn w6, #1 - cset w11, eq - cbnz w11, .L3610 - add x0, x27, 1312 - add x0, x0, x28, lsl 6 - ldr x1, [x0,24] - ldr w0, [x0,36] - ldr w1, [x1,4] + mov w9, w0 +.L3573: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x27, lsl 6 + ldr x1, [x0, 24] + ldr w0, [x0, 36] + ldr w1, [x1, 4] cmp w1, w0 - beq .L3631 -.L3610: - ldr x1, [x27,1120] - add x10, x27, 1312 - add x10, x10, x28, lsl 6 - mov w2, w6 - add x10, x10, 32 - str x11, [x29,112] - ldr w0, [x1,552] + bne .L3575 + cmn w9, #1 + bne .L3576 +.L3575: + add x11, x19, :lo12:.LANCHOR0 + str w9, [x29, 128] + add x10, x11, 1304 + add x10, x10, x27, lsl 6 + stp x11, x10, [x29, 96] + ldr x1, [x11, 1128] + ldr w0, [x1, 552] add w0, w0, 1 - str w0, [x1,552] - ldr x7, [x10,-8] - ldrb w1, [x10,-31] - ldr w0, [x7,12] - str w0, [sp] + str w0, [x1, 552] + ldr x0, [x10, 24] + ldrb w1, [x10, 1] + ldr w2, [x0, 12] + str w2, [sp] + mov w2, w9 + ldp w3, w4, [x10, 36] + ldp w5, w6, [x0] + ldr w7, [x0, 8] adrp x0, .LC263 add x0, x0, :lo12:.LC263 - ldr w3, [x10,4] - ldr w4, [x10,8] - ldr w5, [x7] - ldr w6, [x7,4] - ldr w7, [x7,8] - str x10, [x29,120] bl printk - add x3, x24, :lo12:.LANCHOR3 - ldrb w2, [x27,1257] - mov w1, 24 - ldr x10, [x29,120] - sub w2, w1, w2 - mov w1, 1 - ldrh w0, [x3,1312] - sub w2, w2, w0 - lsl w2, w1, w2 - ldr w1, [x10,8] - sub w2, w2, #1 - lsr w0, w1, w0 - ldrb w1, [x3,1314] - and w0, w2, w0 - udiv w0, w0, w1 + ldp x11, x10, [x29, 96] + add x2, x21, :lo12:.LANCHOR3 + mov w0, 24 + ldrb w1, [x11, 1205] + ldrh w3, [x2, 1304] + sub w0, w0, w1 + ldrb w2, [x2, 1306] + sub w1, w0, w3 + mov w0, 1 + lsl w0, w0, w1 + ldr w1, [x10, 40] + sub w0, w0, #1 + lsr w1, w1, w3 + and w0, w0, w1 mov x1, 0 + udiv w0, w0, w2 bl ftl_sblk_dump - ldr x11, [x29,112] - cbnz w11, .L3611 -.L3631: - add x0, x27, 1312 - add x0, x0, x28, lsl 6 - ldr x1, [x0,24] - ldr w0, [x0,36] - ldr w1, [x1,4] + ldr w9, [x29, 128] +.L3576: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x0, x0, x27, lsl 6 + ldr x1, [x0, 24] + ldr w0, [x0, 36] + ldr w1, [x1, 4] cmp w1, w0 - beq .L3596 -.L3611: - ldr x1, [x29,128] - mov w2, 1319 - ldr x0, [x29,136] + bne .L3577 + cmn w9, #1 + bne .L3578 +.L3577: + ldp x1, x0, [x29, 112] + mov w2, 1320 bl printk bl dump_stack -.L3596: - add x0, x27, 1312 - ldrb w3, [x27,3360] - add x0, x0, x28, lsl 6 - ldrb w2, [x0,56] - cmp w3, w2 - bls .L3598 - ldrb w3, [x0,57] +.L3578: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x8, x0, x27, lsl 6 + add x0, x21, :lo12:.LANCHOR3 + ldrb w2, [x8, 56] + ldrb w0, [x0, 1946] + cmp w0, w2 + bls .L3579 + ldr x0, [x8, 8] lsl w2, w2, 9 - ldr x1, [x0,8] - ldr x0, [x0,16] - add x1, x1, x3, lsl 9 + ldrb w1, [x8, 57] + add x1, x0, x1, lsl 9 + ldr x0, [x8, 16] bl ftl_memcpy - b .L3599 -.L3598: - ldrb w1, [x0,2] - and w1, w1, -9 - strb w1, [x0,2] -.L3599: - mov x1, x26 - add x0, x27, 3364 +.L3580: + mov x1, x28 + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 3355 bl buf_remove_buf - mov x0, x26 + mov x0, x28 bl zbuf_free - add x1, x24, :lo12:.LANCHOR3 - ldrb w0, [x1,1963] + add x1, x21, :lo12:.LANCHOR3 + ldrb w0, [x1, 1957] sub w0, w0, #1 - strb w0, [x1,1963] - b .L3587 -.L3646: - mov w2, -1 - strb w1, [x0,1963] - strb w2, [x0,1962] - b .L3572 -.L3645: - bl timer_get_time - adrp x1, .LANCHOR5+1004 - ldr w3, [x29,148] - str w0, [x1,#:lo12:.LANCHOR5+1004] + strb w0, [x1, 1957] + b .L3568 +.L3570: + cmp w9, 256 + bne .L3571 + ldrb w5, [x4, 1205] + mov w4, 24 + ldrh w1, [x0, 1304] + sub w4, w4, w5 + ldr w3, [x2, 40] + sub w4, w4, w1 + mov w5, 1 + ldrb w0, [x0, 1306] + lsl w4, w5, w4 + sub w4, w4, #1 + lsr w1, w3, w1 + and w4, w4, w1 + ldr w2, [x2, 36] + str w9, [x29, 96] + udiv w4, w4, w0 + str w5, [x29, 104] + adrp x0, .LC262 + add x0, x0, :lo12:.LC262 + and w1, w4, 65535 + str w4, [x29, 128] + bl printk + ldr w5, [x29, 104] + mov w2, 0 + ldr w4, [x29, 128] + mov w1, w5 + mov w0, w4 + bl gc_add_sblk + ldr w9, [x29, 96] b .L3571 -.L3603: - mov w3, -1 -.L3571: - sub sp, x29, #16 - mov w0, w3 - 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, 192 - ret +.L3579: + ldrb w0, [x8, 2] + and w0, w0, -9 + strb w0, [x8, 2] + b .L3580 +.L3585: + mov w0, -1 + b .L3549 .size zftl_read, .-zftl_read .align 2 .global zftl_vendor_read .type zftl_vendor_read, %function zftl_vendor_read: stp x29, x30, [sp, -16]! - mov w4, w1 mov x3, x2 - add x29, sp, 0 + mov w2, w1 add w1, w0, 512 - mov w2, w4 + add x29, sp, 0 mov w0, 2 bl zftl_read ldp x29, x30, [sp], 16 @@ -23353,12 +23178,10 @@ zftl_vendor_read: .type zftl_sys_read, %function zftl_sys_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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 2 bl zftl_read ldp x29, x30, [sp], 16 @@ -23369,354 +23192,357 @@ zftl_sys_read: zftl_debug_proc_write: sub sp, sp, #224 cmp x2, 79 - mov x0, -22 - stp x29, x30, [sp,32] + stp x29, x30, [sp, 32] add x29, sp, 32 - stp x19, x20, [sp,48] - stp x21, x22, [sp,64] + stp x19, x20, [sp, 48] add x19, x29, 112 - str x19, [x29,104] - stp x23, x24, [sp,80] - stp x25, x26, [sp,96] + stp x21, x22, [sp, 64] + stp x23, x24, [sp, 80] + stp x25, x26, [sp, 96] + stp x27, x28, [sp, 112] + str x19, [x29, 104] + bhi .L3623 mov x21, x2 - bhi .L3650 mov x0, x19 bl rk_copy_from_user - mov x22, x0 - mov x0, -14 - cbnz x22, .L3650 + mov x1, -14 + cbnz x0, .L3605 + mov x1, x19 + strb wzr, [x19, x21] adrp x0, .LC264 - mov x1, x19 add x0, x0, :lo12:.LC264 - strb w22, [x19,x21] bl printk - adrp x0, .LC265 mov x1, x19 + adrp x0, .LC265 add x0, x0, :lo12:.LC265 - mov w2, 1 mov w3, 16 + mov w2, 1 bl rknand_print_hex bl rknand_device_lock + mov x2, 7 adrp x1, .LC266 mov x0, x19 add x1, x1, :lo12:.LC266 - mov x2, 7 bl memcmp - cbnz w0, .L3651 - adrp x23, .LANCHOR0 - adrp x0, .LC267 - add x19, x23, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC267 - mov w2, 4 + mov w22, w0 + cbnz w0, .L3607 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 adrp x20, .LANCHOR5 - ldr x3, [x19,3392] - add x1, x3, 704 - ldrh w3, [x3,698] + add x20, x20, :lo12:.LANCHOR5 + mov w2, 4 + adrp x0, .LC267 + ldr x1, [x19, 3384] + add x0, x0, :lo12:.LC267 + mov w23, 65535 + add x1, x1, 704 + ldrh w3, [x1, -6] bl rknand_print_hex - add x3, x20, :lo12:.LANCHOR5 - ldr x1, [x19,3392] + ldrh w3, [x20, 220] adrp x0, .LC268 + ldr x1, [x19, 3384] mov w2, 2 add x0, x0, :lo12:.LC268 add x1, x1, 416 - ldrh w3, [x3,264] - mov w19, w22 - mov w22, 65535 bl rknand_print_hex -.L3652: - add x0, x20, :lo12:.LANCHOR5 - ldrh w0, [x0,264] - cmp w19, w0 - bge .L3655 +.L3608: + ldrh w0, [x20, 220] + cmp w22, w0 + blt .L3610 +.L3611: + bl rknand_device_unlock + mov x1, x21 +.L3605: + ldp x19, x20, [sp, 48] + mov x0, x1 + ldp x21, x22, [sp, 64] + ldp x23, x24, [sp, 80] + ldp x25, x26, [sp, 96] + ldp x27, x28, [sp, 112] + ldp x29, x30, [sp, 32] + add sp, sp, 224 + ret +.L3610: mov w0, 300 bl msleep - add x0, x23, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - add x0, x0, w19, sxtw 1 - ldrh w0, [x0,416] - cmp w0, w22 - beq .L3653 + ldr x0, [x19, 3384] + add x0, x0, w22, sxtw 1 + ldrh w0, [x0, 416] + cmp w0, w23 + beq .L3609 mov x1, 0 bl ftl_sblk_dump -.L3653: - add w19, w19, 1 - b .L3652 -.L3651: +.L3609: + add w22, w22, 1 + b .L3608 +.L3607: adrp x1, .LC269 - mov x0, x19 - add x1, x1, :lo12:.LC269 mov x2, 7 + add x1, x1, :lo12:.LC269 + mov x0, x19 bl memcmp - cbnz w0, .L3656 + cbnz w0, .L3612 adrp x22, .LANCHOR0 - adrp x0, .LC267 add x20, x22, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC267 mov w2, 4 - adrp x26, .LC272 - add x26, x26, :lo12:.LC272 - ldr x3, [x20,3392] - add x1, x3, 704 - ldrh w3, [x3,698] + adrp x0, .LC267 + add x0, x0, :lo12:.LC267 + adrp x25, .LC271 + ldr x1, [x20, 3384] + adrp x24, .LC272 + add x25, x25, :lo12:.LC271 + add x24, x24, :lo12:.LC272 + add x1, x1, 704 + ldrh w3, [x1, -6] bl rknand_print_hex - adrp x3, .LANCHOR5+264 - ldr x1, [x20,3392] - adrp x0, .LC268 + adrp x0, .LANCHOR5+220 + ldr x1, [x20, 3384] mov w2, 2 - add x1, x1, 416 - add x0, x0, :lo12:.LC268 - ldrh w3, [x3,#:lo12:.LANCHOR5+264] add x20, x29, 192 + ldrh w3, [x0, #:lo12:.LANCHOR5+220] + add x1, x1, 416 + adrp x0, .LC268 + add x0, x0, :lo12:.LC268 bl rknand_print_hex mov w0, 50 bl msleep - adrp x0, .LC270 add x1, x19, 7 + adrp x0, .LC270 + str x1, [x20, -88]! add x0, x0, :lo12:.LC270 - str x1, [x20,-88]! - mov x19, x22 - adrp x22, .LC271 bl printk - add x22, x22, :lo12:.LC271 - ldr x0, [x29,104] + ldr x0, [x29, 104] mov x1, x20 - bl rk_simple_strtoull.constprop.34 - mov w24, w0 - adrp x2, .LANCHOR3 - str w0, [x29,100] - add x2, x2, :lo12:.LANCHOR3 - uxth w25, w0 - add x20, x2, 1968 - add x23, x2, 2480 -.L3658: - ldrh w1, [x20] - mov x0, x22 - ldrh w2, [x20,2] + adrp x20, .LANCHOR3 + bl rk_simple_strtoull.constprop.33 + mov w23, w0 + add x1, x20, :lo12:.LANCHOR3 + and w27, w0, 65535 + add x19, x1, 1960 + add x26, x1, 2472 + mov x28, x1 + str w0, [x29, 100] +.L3614: + ldrh w2, [x19, 2] + mov x0, x25 + ldrh w1, [x19] bl printk - ldrh w0, [x20] - cmp w0, w25 - bne .L3657 - add x0, x19, :lo12:.LANCHOR0 - ldr x1, [x20,8] + ldrh w0, [x19] + cmp w0, w27 + bne .L3613 + ldrb w3, [x28, 1946] mov w2, 4 - ldrb w3, [x0,3360] - mov x0, x26 + ldr x1, [x19, 8] + mov x0, x24 lsl w3, w3, 7 bl rknand_print_hex mov w0, 50 bl msleep -.L3657: - add x20, x20, 16 - cmp x20, x23 - bne .L3658 +.L3613: + add x19, x19, 16 + cmp x19, x26 + bne .L3614 + add x22, x22, :lo12:.LANCHOR0 mov w0, 300 - add x19, x19, :lo12:.LANCHOR0 bl msleep + add x20, x20, :lo12:.LANCHOR3 mov w0, 1 bl buf_alloc - mov x20, x0 - ldr x1, [x19,3392] - add x1, x1, w24, uxth 2 - ldr w1, [x1,704] - str w1, [x29,100] - str w1, [x0,40] + ldr x1, [x22, 3384] + mov x19, x0 + add x1, x1, w23, uxth 2 + ldr w1, [x1, 704] + str w1, [x0, 40] + str w1, [x29, 100] mov w1, 1 bl sblk_read_page - ldr x7, [x20,24] - ldr x6, [x20,8] - ldr w1, [x29,100] - ldr w0, [x7,4] - str w0, [sp] - ldr w0, [x7,8] - str w0, [sp,8] - ldr w0, [x7,12] - str w0, [sp,16] + ldr x1, [x19, 24] + ldr x0, [x19, 8] + ldr w2, [x1, 12] + str w2, [sp, 16] + ldr w2, [x1, 8] + str w2, [sp, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] adrp x0, .LC245 + ldr w7, [x1] add x0, x0, :lo12:.LC245 - ldr w3, [x6] - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w2, [x20,52] - ldr w6, [x6,12] - ldr w7, [x7] + ldr w2, [x19, 52] + ldr w1, [x29, 100] bl printk - ldrb w3, [x19,3360] + ldrb w3, [x20, 1946] adrp x0, .LC273 - ldr x1, [x20,8] + ldr x1, [x19, 8] add x0, x0, :lo12:.LC273 mov w2, 4 lsl w3, w3, 7 +.L3630: bl rknand_print_hex - mov x0, x20 - b .L3673 -.L3656: + mov x0, x19 + bl zbuf_free + b .L3611 +.L3612: adrp x1, .LC274 - mov x0, x19 - add x1, x1, :lo12:.LC274 mov x2, 7 - bl memcmp - cbnz w0, .L3659 - bl dump_ftl_info - b .L3655 -.L3659: - adrp x1, .LC275 + add x1, x1, :lo12:.LC274 mov x0, x19 - add x1, x1, :lo12:.LC275 - mov x2, 9 bl memcmp - cbnz w0, .L3660 + cbnz w0, .L3615 + bl dump_ftl_info + b .L3611 +.L3615: + adrp x1, .LC275 + mov x2, 9 + add x1, x1, :lo12:.LC275 + mov x0, x19 + bl memcmp + cbnz w0, .L3616 add x1, x29, 192 add x0, x19, 9 - str x0, [x1,-88]! - bl rk_simple_strtoull.constprop.34 - str w0, [x29,100] - adrp x1, .LANCHOR3+1416 - strh w0, [x1,#:lo12:.LANCHOR3+1416] + str x0, [x1, -88]! + bl rk_simple_strtoull.constprop.33 + str w0, [x29, 100] + adrp x1, .LANCHOR3+1408 + strh w0, [x1, #:lo12:.LANCHOR3+1408] bl dump_all_list_info - b .L3655 -.L3660: + b .L3611 +.L3616: adrp x1, .LC276 - mov x0, x19 + mov x2, 8 add x1, x1, :lo12:.LC276 - mov x2, 8 - bl memcmp - cbz w0, .L3655 - adrp x1, .LC277 mov x0, x19 - add x1, x1, :lo12:.LC277 - mov x2, 8 bl memcmp - cbnz w0, .L3662 + cbz w0, .L3611 + adrp x1, .LC277 + mov x2, 8 + add x1, x1, :lo12:.LC277 + mov x0, x19 + bl memcmp + cbnz w0, .L3618 add x20, x29, 192 - adrp x0, .LC270 add x1, x19, 8 + adrp x0, .LC270 add x0, x0, :lo12:.LC270 - str x1, [x20,-88]! + str x1, [x20, -88]! bl printk - ldr x0, [x29,104] + ldr x0, [x29, 104] mov x1, x20 - adrp x20, .LANCHOR0 - add x20, x20, :lo12:.LANCHOR0 - bl rk_simple_strtoull.constprop.34 - str w0, [x29,100] + adrp x20, .LANCHOR3 + add x20, x20, :lo12:.LANCHOR3 + bl rk_simple_strtoull.constprop.33 + str w0, [x29, 100] mov w0, 1 bl buf_alloc + ldr w1, [x29, 100] mov x19, x0 - ldr w1, [x29,100] - str w1, [x0,40] + str w1, [x0, 40] mov w1, 1 bl sblk_read_page - ldr x7, [x19,24] - ldr x6, [x19,8] - ldr w1, [x29,100] - ldr w0, [x7,4] - str w0, [sp] - ldr w0, [x7,8] - str w0, [sp,8] - ldr w0, [x7,12] - str w0, [sp,16] + ldr x1, [x19, 24] + ldr x0, [x19, 8] + ldr w2, [x1, 12] + str w2, [sp, 16] + ldr w2, [x1, 8] + str w2, [sp, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] adrp x0, .LC245 + ldr w7, [x1] add x0, x0, :lo12:.LC245 - ldr w4, [x6,4] - ldr w5, [x6,8] - ldr w3, [x6] - ldr w7, [x7] - ldr w6, [x6,12] - ldr w2, [x19,52] + ldr w2, [x19, 52] + ldr w1, [x29, 100] bl printk - ldrb w3, [x20,3360] - adrp x0, .LC218 - ldr x1, [x19,8] - add x0, x0, :lo12:.LC218 + ldr x1, [x19, 8] mov w2, 4 + ldrb w3, [x20, 1946] + adrp x0, .LC218 + add x0, x0, :lo12:.LC218 lsl w3, w3, 7 bl rknand_print_hex - ldrb w3, [x20,3360] + ldrb w3, [x20, 1946] adrp x0, .LC240 - ldr x1, [x19,24] - add x0, x0, :lo12:.LC240 mov w2, 4 + add x0, x0, :lo12:.LC240 + ldr x1, [x19, 24] lsl w3, w3, 1 - bl rknand_print_hex - mov x0, x19 -.L3673: - bl zbuf_free - b .L3655 -.L3662: + b .L3630 +.L3618: adrp x1, .LC278 - mov x0, x19 - add x1, x1, :lo12:.LC278 mov x2, 8 - bl memcmp - cbnz w0, .L3663 - add x20, x29, 192 - adrp x0, .LC270 - add x1, x19, 8 - add x0, x0, :lo12:.LC270 - str x1, [x20,-88]! - bl printk - ldr x0, [x29,104] - mov x1, x20 - bl rk_simple_strtoull.constprop.34 - str w0, [x29,100] - mov x1, x22 - bl ftl_sblk_dump - b .L3655 -.L3663: - adrp x1, .LC279 + add x1, x1, :lo12:.LC278 mov x0, x19 - add x1, x1, :lo12:.LC279 - mov x2, 10 bl memcmp - cbnz w0, .L3664 + cbnz w0, .L3619 add x20, x29, 192 + add x1, x19, 8 adrp x0, .LC270 - add x1, x19, 10 add x0, x0, :lo12:.LC270 - str x1, [x20,-88]! + str x1, [x20, -88]! bl printk - ldr x0, [x29,104] + ldr x0, [x29, 104] mov x1, x20 - bl rk_simple_strtoull.constprop.34 - str w0, [x29,100] + bl rk_simple_strtoull.constprop.33 + str w0, [x29, 100] + mov x1, 0 + bl ftl_sblk_dump + b .L3611 +.L3619: + adrp x1, .LC279 + mov x2, 10 + add x1, x1, :lo12:.LC279 + mov x0, x19 + bl memcmp + cbnz w0, .L3620 + add x20, x29, 192 + add x1, x19, 10 + adrp x0, .LC270 + add x0, x0, :lo12:.LC270 + str x1, [x20, -88]! + bl printk + ldr x0, [x29, 104] + mov x1, x20 + bl rk_simple_strtoull.constprop.33 + str w0, [x29, 100] adrp x1, .LANCHOR2 - str w0, [x1,#:lo12:.LANCHOR2] - b .L3655 -.L3664: + str w0, [x1, #:lo12:.LANCHOR2] + b .L3611 +.L3620: adrp x1, .LC280 mov x2, 8 - mov x0, x19 add x1, x1, :lo12:.LC280 + mov x0, x19 bl memcmp - mov w2, w0 - str x2, [x29,88] - cbnz w0, .L3665 + cbnz w0, .L3621 add x1, x19, 8 - adrp x0, .LC270 add x19, x29, 192 + adrp x0, .LC270 add x0, x0, :lo12:.LC270 - str x1, [x19,-88]! + str x1, [x19, -88]! bl printk - ldr x0, [x29,104] + ldr x0, [x29, 104] mov x1, x19 - bl rk_simple_strtoull.constprop.34 + bl rk_simple_strtoull.constprop.33 mov w19, w0 bl lpa_hash_get_ppa - str w0, [x29,100] + str w0, [x29, 100] cmn w0, #1 - ldr x2, [x29,88] - bne .L3666 - mov w0, w19 + bne .L3622 + mov w2, 0 add x1, x29, 100 + mov w0, w19 bl pm_log2phys -.L3666: - adrp x0, .LC281 - ldr w2, [x29,100] +.L3622: + ldr w2, [x29, 100] mov w1, w19 + adrp x0, .LC281 add x0, x0, :lo12:.LC281 bl printk - b .L3655 -.L3665: + b .L3611 +.L3621: adrp x0, .LC282 add x0, x0, :lo12:.LC282 bl printk @@ -23744,157 +23570,146 @@ zftl_debug_proc_write: adrp x0, .LC290 add x0, x0, :lo12:.LC290 bl printk -.L3655: - bl rknand_device_unlock - mov x0, x21 -.L3650: - sub sp, x29, #32 - ldp x19, x20, [sp,48] - ldp x21, x22, [sp,64] - ldp x23, x24, [sp,80] - ldp x25, x26, [sp,96] - ldp x29, x30, [sp,32] - add sp, sp, 224 - ret + b .L3611 +.L3623: + mov x1, -22 + b .L3605 .size zftl_debug_proc_write, .-zftl_debug_proc_write .align 2 .global ftl_update_l2p_map .type ftl_update_l2p_map, %function ftl_update_l2p_map: - stp x29, x30, [sp, -144]! + stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] mov x22, x0 - adrp x0, .LANCHOR3 - add x1, x0, :lo12:.LANCHOR3 - str x0, [x29,120] - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldrb w2, [x22,9] - ldrh w23, [x1,1384] - ldrh w19, [x22,12] - ldr x1, [x1,1936] - mul w23, w23, w2 - add x19, x1, x19, lsl 2 - add x1, x19, w23, sxtw 2 - ldr w1, [x1,-4] - cmn w1, #1 - beq .L3675 + stp x25, x26, [sp, 64] + adrp x26, .LANCHOR3 + add x0, x26, :lo12:.LANCHOR3 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x27, x28, [sp, 80] + ldrh w23, [x0, 1376] + ldrb w1, [x22, 9] + ldr x0, [x0, 1928] + ldrh w19, [x22, 12] + mul w23, w23, w1 + add x19, x0, x19, lsl 2 + add x0, x19, w23, sxtw 2 + ldr w0, [x0, -4] + cmn w0, #1 + beq .L3632 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 976 mov w2, 1998 - add x1, x1, 960 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3675: - adrp x0, .LC292 - mov x28, 0 - add x0, x0, :lo12:.LC292 - adrp x27, .LC291 - str x0, [x29,112] - adrp x0, .LC293 - add x0, x0, :lo12:.LC293 - mov w21, w28 - str x0, [x29,104] - add x27, x27, :lo12:.LC291 -.L3676: - cmp w28, w23 - mov w24, w28 - bge .L3703 - ldr w2, [x19,x28,lsl 2] - cmn w2, #1 - beq .L3677 - adrp x25, .LANCHOR0 - add x0, x25, :lo12:.LANCHOR0 - ldrb w20, [x0,3360] +.L3632: + adrp x27, .LC292 + mov w21, 0 + add x0, x27, :lo12:.LC292 + mov w25, 0 + str x0, [x29, 104] +.L3633: + cmp w25, w23 + bne .L3639 adrp x0, .LANCHOR2 + adrp x19, .LANCHOR0 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L3640 + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x22] + ldr x0, [x0, 1120] + ubfiz x2, x1, 1, 16 + ldrh w3, [x0, x2] + adrp x0, .LC294 + mov w2, w21 + add x0, x0, :lo12:.LC294 + bl printk +.L3640: + add x19, x19, :lo12:.LANCHOR0 + ldrh w1, [x22] + ldr x0, [x19, 1120] + strh w21, [x0, x1, lsl 1] + 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 +.L3639: + ldr w2, [x19] + cmn w2, #1 + beq .L3634 + add x0, x26, :lo12:.LANCHOR3 + ldrb w20, [x0, 1946] + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] lsl w20, w20, 7 - ldr w0, [x0,#:lo12:.LANCHOR2] udiv w20, w2, w20 and w20, w20, 65535 - tbz x0, 12, .L3681 - mov x0, x27 + tbz x0, 12, .L3635 + adrp x0, .LC291 + mov w3, w25 mov w1, w20 - mov w3, w28 + add x0, x0, :lo12:.LC291 bl printk -.L3681: - sbfiz x26, x24, 2, 32 - ldr w0, [x19,x26] +.L3635: + adrp x28, .LC293 + mov x24, x19 + mov w27, w25 + add x28, x28, :lo12:.LC293 +.L3638: + ldr w0, [x24] cmn w0, #1 - beq .L3679 - add x1, x25, :lo12:.LANCHOR0 - ldrb w1, [x1,3360] + beq .L3636 + add x5, x26, :lo12:.LANCHOR3 + ldrb w1, [x5, 1946] lsl w1, w1, 7 udiv w0, w0, w1 cmp w20, w0, uxth - bne .L3679 - ldrb w0, [x22,9] - ldr x2, [x29,120] - add x3, x2, :lo12:.LANCHOR3 - str x3, [x29,96] - sdiv w1, w24, w0 - ldrh w2, [x3,1418] - msub w0, w1, w0, w24 + bne .L3636 + ldrb w0, [x22, 9] + str x5, [x29, 96] + sdiv w1, w27, w0 + msub w0, w1, w0, w27 add x0, x22, w0, sxtw 1 - ldrh w0, [x0,16] - madd w2, w0, w2, w1 - str w2, [x29,140] - ldr x0, [x29,112] - ldr w1, [x19,x26] + ldrh w2, [x0, 16] + ldrh w0, [x5, 1410] + madd w2, w2, w0, w1 + ldr x0, [x29, 104] + str w2, [x29, 124] + ldr w1, [x24] bl pm_ppa_update_check - ldr x3, [x29,96] - cbz w0, .L3680 - ldr x1, [x3,1936] - mov w2, 4 - ldr x0, [x29,104] + ldr x5, [x29, 96] + cbz w0, .L3637 + ldr x1, [x5, 1928] mov w3, w23 + mov w2, 4 + mov x0, x28 bl rknand_print_hex -.L3680: - ldr w0, [x19,x26] - add x1, x29, 140 - mov w2, 1 +.L3637: + ldr w0, [x24] add w21, w21, 1 + mov w2, 1 + add x1, x29, 124 + and w21, w21, 65535 bl pm_log2phys - uxth w21, w21 mov w0, -1 - str w0, [x19,x26] -.L3679: - add w24, w24, 1 - cmp w24, w23 - bne .L3681 -.L3677: - add x28, x28, 1 - b .L3676 -.L3703: - adrp x0, .LANCHOR2 - adrp x19, .LANCHOR0 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L3683 - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x22] - mov w2, w21 - ubfiz x3, x1, 1, 16 - ldr x4, [x0,1112] - adrp x0, .LC294 - add x0, x0, :lo12:.LC294 - ldrh w3, [x4,x3] - bl printk -.L3683: - add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x22] - ldr x0, [x19,1112] - strh w21, [x0,x1,lsl 1] - 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], 144 - ret + str w0, [x24] +.L3636: + add w27, w27, 1 + add x24, x24, 4 + cmp w23, w27 + bne .L3638 +.L3634: + add w25, w25, 1 + add x19, x19, 4 + b .L3633 .size ftl_update_l2p_map, .-ftl_update_l2p_map .align 2 .global ftl_alloc_new_data_sblk @@ -23902,54 +23717,53 @@ ftl_update_l2p_map: ftl_alloc_new_data_sblk: stp x29, x30, [sp, -48]! add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] + stp x19, x20, [sp, 16] mov x20, x0 + str x21, [sp, 32] ldrh w21, [x0] bl ftl_update_l2p_map bl pm_flush ldrh w0, [x20] mov w1, 65535 cmp w0, w1 - beq .L3705 + beq .L3662 bl zftl_insert_data_list -.L3705: +.L3662: adrp x19, .LANCHOR0 - mov w2, 2 add x19, x19, :lo12:.LANCHOR0 - mov w1, 3 - ldr x0, [x19,1120] + ldr x0, [x19, 1128] add x0, x0, 16 cmp x20, x0 mov x0, x20 - csel w1, w2, w1, eq + cset w1, ne + add w1, w1, 2 bl ftl_open_sblk_init - ldr x0, [x19,1120] - ldr w0, [x0,560] + ldr x0, [x19, 1128] + ldr w0, [x0, 560] cmp w0, w21 - bne .L3707 + bne .L3664 mov w20, 65535 cmp w21, w20 - beq .L3707 - adrp x0, .LC295 + beq .L3664 mov w1, w21 + adrp x0, .LC295 add x0, x0, :lo12:.LC295 bl printk - ldr x0, [x19,1120] - ldr w0, [x0,564] + ldr x0, [x19, 1128] + ldr w0, [x0, 564] bl gc_mark_bad_ppa - ldr x0, [x19,1120] + ldr x0, [x19, 1128] mov w1, -1 - str w20, [x0,560] - str w1, [x0,564] -.L3707: + str w20, [x0, 560] + str w1, [x0, 564] +.L3664: bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush bl lpa_rebuild_hash - ldr x21, [sp,32] + ldr x21, [sp, 32] mov w0, 0 - ldp x19, x20, [sp,16] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size ftl_alloc_new_data_sblk, .-ftl_alloc_new_data_sblk @@ -23957,434 +23771,417 @@ ftl_alloc_new_data_sblk: .global ftl_write_commit .type ftl_write_commit, %function ftl_write_commit: - stp x29, x30, [sp, -176]! + stp x29, x30, [sp, -144]! + adrp x0, .LANCHOR0 add x29, sp, 0 - stp x25, x26, [sp,64] - adrp x26, .LANCHOR0 - add x26, x26, :lo12:.LANCHOR0 - add x0, x26, 1312 - str x0, [x29,128] - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - str x0, [x29,136] - stp x19, x20, [sp,16] - add x0, x0, 352 - str x0, [x29,120] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] -.L3716: - ldrb w0, [x26,3388] - adrp x20, .LANCHOR0 - cbz w0, .L3718 - ldrb w1, [x26,3416] - sub w0, w0, #1 - ldr x2, [x29,128] - str x1, [x29,144] - lsl x1, x1, 6 - add x28, x2, x1 - strb w0, [x26,3388] - ldr w0, [x26,3372] - ldrb w1, [x2,x1] - strb w1, [x26,3416] - ldr w1, [x28,36] + stp x19, x20, [sp, 16] + add x20, x0, :lo12:.LANCHOR0 + stp x27, x28, [sp, 80] + add x28, x20, 1304 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] +.L3668: + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldrb w1, [x0, 3381] + cbz w1, .L3670 + ldrb w3, [x0, 3408] + add x2, x0, 1304 + sub w1, w1, #1 + strb w1, [x0, 3381] + ubfiz x4, x3, 6, 8 + add x4, x2, x4 + stp x3, x4, [x29, 104] + lsl x3, x3, 6 + add x4, x2, x3 + ldrb w2, [x2, x3] + strb w2, [x0, 3408] + ldr w1, [x4, 36] + ldr w0, [x0, 3364] cmp w1, w0 - bcc .L3719 + bcc .L3672 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 - mov w2, 606 - add x1, x1, 984 + add x1, x1, 1000 + mov w2, 607 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3719: - ldr x0, [x29,144] - add x1, x20, :lo12:.LANCHOR0 - add x3, x1, 1312 - add x0, x3, x0, lsl 6 - ldr w2, [x1,3372] - ldr w23, [x0,36] - cmp w23, w2 - bcc .L3720 - mov x0, x28 +.L3672: + ldr x0, [x29, 104] + ldr w1, [x20, 3364] + add x0, x28, x0, lsl 6 + ldr w23, [x0, 36] + cmp w23, w1 + bcc .L3673 + ldr x0, [x29, 112] bl zbuf_free mov w0, -1 - b .L3779 -.L3720: - ldr x25, [x0,8] - ldr x24, [x0,24] - ldrb w22, [x0,57] - ldrb w21, [x0,56] - ldrb w0, [x1,3389] - cbz w0, .L3722 - ldr x0, [x29,136] - ldrb w19, [x0,352] - add x19, x3, x19, lsl 6 -.L3723: - ldrb w4, [x19] - cmp w4, 255 - beq .L3781 - sbfiz x19, x4, 6, 32 - add x19, x3, x19 - b .L3723 -.L3781: - ldr w0, [x19,36] - cmp w0, w23 - bne .L3722 - ldr x0, [x19,8] - ubfiz x1, x22, 9, 8 +.L3667: + 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], 144 + ret +.L3673: + ldrb w22, [x0, 57] + ldrb w21, [x0, 56] + ldr x27, [x0, 8] + ldr x24, [x0, 24] + ldrb w0, [x20, 3380] + cbz w0, .L3675 + adrp x0, .LANCHOR5+360 + ldrb w19, [x0, #:lo12:.LANCHOR5+360] + add x19, x28, x19, lsl 6 +.L3676: + ldrb w0, [x19] + cmp w0, 255 + bne .L3677 + ldr w0, [x19, 36] + cmp w23, w0 + bne .L3675 + ldr x0, [x19, 8] + ubfiz x22, x22, 9, 8 lsl w2, w21, 9 - add x20, x20, :lo12:.LANCHOR0 - add x0, x0, x1 - add x1, x25, x1 + add x1, x27, x22 + add x0, x0, x22 bl ftl_memcpy - ldrb w2, [x20,3360] - mov w0, 2 - ldr x1, [x19,24] - ldr x3, [x19,8] - sub w2, w2, #2 - sbfiz x2, x2, 9, 32 + adrp x0, .LANCHOR3+1946 + ldr x2, [x19, 8] + ldr x1, [x19, 24] + ldrb w0, [x0, #:lo12:.LANCHOR3+1946] add x1, x1, 16 - add x2, x3, x2 + sub w0, w0, #2 + sbfiz x0, x0, 9, 32 + add x2, x2, x0 + mov w0, 2 bl ftl_debug_info_fill - mov x0, x28 + ldr x0, [x29, 112] bl zbuf_free - b .L3716 -.L3722: + b .L3668 +.L3677: + ubfiz x19, x0, 6, 8 + add x19, x28, x19 + b .L3676 +.L3675: mov w0, w23 bl lpa_hash_get_ppa - str w0, [x29,172] + str w0, [x29, 140] cmn w0, #1 - bne .L3726 - mov w0, w23 - add x1, x29, 172 + bne .L3679 mov w2, 0 + add x1, x29, 140 + mov w0, w23 bl pm_log2phys -.L3726: - add x4, x20, :lo12:.LANCHOR0 - ldr w0, [x29,172] - add x3, x4, 1312 - mov w1, 0 - mov x27, 0 - ldr x19, [x4,1120] - add x4, x4, 3360 +.L3679: + ldr x19, [x20, 1128] + add x0, x20, 1306 + ldr w2, [x29, 140] + add x4, x20, 3354 add x19, x19, 16 -.L3728: - ldr w2, [x3,36] - cmp w2, w23 - bne .L3727 - ldrb w6, [x3,2] - tbz x6, 3, .L3727 - ldr x27, [x3,8] - and w6, w6, -9 - ldr w0, [x3,40] - mov w1, 1 - strb w6, [x3,2] -.L3727: - add x3, x3, 64 - cmp x3, x4 - bne .L3728 - cbz w1, .L3729 - str w0, [x29,172] -.L3729: - add x3, x20, :lo12:.LANCHOR0 - str wzr, [x29,152] - ldrb w0, [x3,3360] + mov w3, 0 + mov x26, 0 +.L3681: + ldr w1, [x0, 34] + cmp w23, w1 + bne .L3680 + ldrb w1, [x0] + tbz x1, 3, .L3680 + ldr w2, [x0, 38] + and w1, w1, -9 + ldr x26, [x0, 6] + mov w3, 1 + strb w1, [x0] +.L3680: + add x0, x0, 64 + cmp x0, x4 + bne .L3681 + cbz w3, .L3682 + str w2, [x29, 140] +.L3682: + adrp x25, .LANCHOR3 + add x0, x25, :lo12:.LANCHOR3 + str x25, [x29, 120] + ldrb w0, [x0, 1946] cmp w21, w0 - bcs .L3730 + bcs .L3708 add w21, w22, w21 - cbz x27, .L3731 - cbz w22, .L3732 - mov x0, x25 - mov x1, x27 + cbz x26, .L3684 + cbz w22, .L3685 lsl w2, w22, 9 - str x3, [x29,152] + mov x1, x26 + mov x0, x27 bl ftl_memcpy - ldr x3, [x29,152] - ldr x19, [x3,1120] + ldr x19, [x20, 1128] add x19, x19, 48 -.L3732: - add x0, x20, :lo12:.LANCHOR0 - ldrb w2, [x0,3360] +.L3685: + ldr x0, [x29, 120] + add x0, x0, :lo12:.LANCHOR3 + ldrb w2, [x0, 1946] cmp w21, w2 - bcc .L3733 - ldr x19, [x0,1120] + bcc .L3686 + ldr x19, [x20, 1128] add x19, x19, 16 - b .L3780 -.L3733: - ubfiz x1, x21, 9, 9 +.L3708: + mov w26, 0 + b .L3683 +.L3686: + ubfiz x0, x21, 9, 9 sub w2, w2, w21 - add x0, x25, x1 + add x1, x26, x0 lsl w2, w2, 9 - add x1, x27, x1 + add x0, x27, x0 bl ftl_memcpy -.L3780: - str wzr, [x29,152] - b .L3730 -.L3731: - ldr w0, [x29,172] + b .L3708 +.L3684: + ldr w0, [x29, 140] cmn w0, #1 - beq .L3734 + beq .L3687 mov w0, 1 bl buf_alloc - mov x27, x0 - ldr w1, [x29,172] - str w1, [x0,40] + ldr w1, [x29, 140] + mov x25, x0 + stp w23, w1, [x0, 36] mov w1, 1 - str w23, [x0,36] bl sblk_read_page - ldr x3, [x27,24] - ldr w0, [x3,12] - add w0, w0, 1 - str w0, [x29,152] - ldr w0, [x3,4] - cmp w0, w23 - bne .L3735 - ldr w0, [x27,52] + ldr x3, [x25, 24] + ldr w0, [x3, 4] + ldr w26, [x3, 12] + cmp w23, w0 + add w26, w26, 1 + bne .L3688 + ldr w0, [x25, 52] cmn w0, #1 - bne .L3736 -.L3735: - add x4, x20, :lo12:.LANCHOR0 - mov w0, 1 - ldr w1, [x27,40] - mov w2, 24 - ldrb w6, [x4,1257] - ldrb w4, [x4,3360] - lsl w0, w0, w6 - sub w2, w2, w6 - sub w0, w0, #1 - lsr w6, w1, w2 - lsl w2, w0, w2 + bne .L3689 +.L3688: + ldrb w2, [x20, 1205] + mov w6, 1 + mov w0, 24 + ldr w1, [x25, 40] + sub w0, w0, w2 + lsl w6, w6, w2 + ldr x2, [x29, 120] + sub w6, w6, #1 + add x2, x2, :lo12:.LANCHOR3 + lsl w7, w6, w0 + lsr w0, w1, w0 + bic w1, w1, w7 + ldrb w4, [x2, 1946] and w0, w0, w6 - bic w1, w1, w2 - ldr x2, [x27,8] + ldr x2, [x25, 8] bl flash_read_page_en - str w0, [x27,52] -.L3736: - ldr x0, [x27,24] - ldr w0, [x0,4] - cmp w0, w23 - bne .L3737 - ldr w0, [x27,52] + str w0, [x25, 52] +.L3689: + ldr x0, [x25, 24] + ldr w0, [x0, 4] + cmp w23, w0 + bne .L3690 + ldr w0, [x25, 52] cmn w0, #1 - bne .L3738 -.L3737: - add x0, x20, :lo12:.LANCHOR0 - ldr w2, [x29,172] + bne .L3691 +.L3690: + ldr x1, [x20, 1128] mov w3, w23 - ldr x1, [x0,1120] - ldr w0, [x1,552] + ldr w2, [x29, 140] + ldr w0, [x1, 552] add w0, w0, 1 - str w0, [x1,552] + str w0, [x1, 552] adrp x0, .LC296 - ldrb w1, [x27,1] add x0, x0, :lo12:.LC296 - ldr w4, [x27,52] + ldrb w1, [x25, 1] + ldr w4, [x25, 52] bl printk + ldr x1, [x25, 24] + mov w3, 4 adrp x0, .LC240 - mov w2, 4 - ldr x1, [x27,24] + mov w2, w3 add x0, x0, :lo12:.LC240 - mov w3, w2 bl rknand_print_hex -.L3738: - ldr x0, [x27,24] - ldr w0, [x0,4] - cmp w0, w23 - bne .L3739 - ldr w0, [x27,52] +.L3691: + ldr x0, [x25, 24] + ldr w0, [x0, 4] + cmp w23, w0 + bne .L3692 + ldr w0, [x25, 52] cmn w0, #1 - bne .L3740 -.L3739: + bne .L3693 +.L3692: adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 - mov w2, 698 - add x1, x1, 984 + add x1, x1, 1000 + mov w2, 699 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3740: - cbz w22, .L3741 - ldr w0, [x29,172] +.L3693: + cbz w22, .L3694 + ldr w0, [x29, 140] lsl w2, w22, 9 cmn w0, #1 - beq .L3742 - ldr x1, [x27,8] - mov x0, x25 - bl ftl_memcpy - b .L3743 -.L3734: - cbz w22, .L3741 - lsl w2, w22, 9 -.L3742: - mov x0, x25 - mov w1, 0 - bl ftl_memset -.L3743: - add x0, x20, :lo12:.LANCHOR0 - ldr x19, [x0,1120] - add x19, x19, 48 -.L3741: - add x0, x20, :lo12:.LANCHOR0 - ldrb w2, [x0,3360] - cmp w21, w2 - bcc .L3744 - bls .L3745 - ldr x19, [x0,1120] - add x19, x19, 16 - b .L3745 -.L3744: - ldr w0, [x29,172] - sub w2, w2, w21 - lsl w2, w2, 9 - cmn w0, #1 - ubfiz x0, x21, 7, 9 - beq .L3746 - ldr x1, [x27,8] - lsl x21, x0, 2 - add x0, x25, x21 - add x1, x1, x21 - bl ftl_memcpy - b .L3745 -.L3746: - add x0, x25, x0, lsl 2 - mov w1, 0 - bl ftl_memset -.L3745: - cbz x27, .L3730 - ldrb w0, [x27,2] - mov x1, x27 - and w0, w0, -9 - strb w0, [x27,2] - add x0, x20, :lo12:.LANCHOR0 - add x0, x0, 3364 - bl buf_remove_buf + beq .L3695 + ldr x1, [x25, 8] mov x0, x27 + bl ftl_memcpy +.L3696: + ldr x19, [x20, 1128] + add x19, x19, 48 +.L3694: + ldr x0, [x29, 120] + add x0, x0, :lo12:.LANCHOR3 + ldrb w2, [x0, 1946] + cmp w21, w2 + bcc .L3697 + bls .L3698 + ldr x19, [x20, 1128] + add x19, x19, 16 +.L3698: + cbz x25, .L3683 + ldrb w0, [x25, 2] + mov x1, x25 + and w0, w0, -9 + strb w0, [x25, 2] + add x0, x20, 3355 + bl buf_remove_buf + mov x0, x25 bl zbuf_free -.L3730: - ldrh w0, [x19,6] - cbnz w0, .L3747 +.L3683: + ldrh w0, [x19, 6] + cbnz w0, .L3700 bl ftl_flush mov x0, x19 bl ftl_alloc_new_data_sblk -.L3747: +.L3700: mov x0, x19 - add x21, x20, :lo12:.LANCHOR0 bl ftl_get_new_free_page - mov w6, w0 - ldr x0, [x29,144] - add x4, x21, 1312 + mov w3, w0 + ldr x0, [x29, 104] mov x1, x24 - str x6, [x29,104] - lsl x27, x0, 6 - str x4, [x29,112] - add x22, x4, x27 - add x5, x22, 32 - str x5, [x29,144] - ldr w0, [x22,32] - str w0, [x24] - str w23, [x24,4] - ldrb w2, [x21,3360] - ldr w0, [x29,172] - str w0, [x24,8] - sub w2, w2, #2 - ldr w0, [x29,152] - sbfiz x2, x2, 9, 32 - str w0, [x24,12] - add x2, x25, x2 - str wzr, [x1,16]! + str w3, [x29, 100] + lsl x22, x0, 6 + add x21, x28, x22 + ldr w0, [x21, 32] + stp w0, w23, [x24] + str w26, [x24, 12] + ldr w0, [x29, 140] + str w0, [x24, 8] + ldr x0, [x29, 120] + str wzr, [x1, 16]! + add x25, x0, :lo12:.LANCHOR3 mov w0, 2 + ldrb w2, [x25, 1946] + sub w2, w2, #2 + sbfiz x2, x2, 9, 32 + add x2, x27, x2 bl ftl_debug_info_fill - ldr x5, [x29,144] - ldr x4, [x29,112] - ldr w0, [x29,172] - str w0, [x5,12] + ldr w0, [x29, 140] + mov w1, 10 + ldr w3, [x29, 100] + stp w3, w0, [x21, 40] mov w0, -1 - ldrb w1, [x22,2] - strb w0, [x4,x27] - mov w0, 10 - ldr x6, [x29,104] - orr w0, w1, w0 - str w6, [x5,8] - strb w0, [x22,2] - ldrh w1, [x19,10] - ldrh w0, [x19,12] - add w0, w1, w0 - mov x1, x28 + strb w0, [x28, x22] + ldrb w0, [x21, 2] + orr w0, w0, w1 + strb w0, [x21, 2] + ldrh w1, [x19, 12] + ldrh w0, [x19, 10] + add w0, w0, w1 + ldr x1, [x29, 112] sub w0, w0, #1 - strh w0, [x22,48] - ldr x0, [x29,120] + strh w0, [x21, 48] + adrp x21, .LANCHOR5 + add x22, x21, :lo12:.LANCHOR5 + add x0, x22, 360 bl buf_add_tail - ldrb w0, [x21,3389] + ldrb w0, [x20, 3380] add w0, w0, 1 - strb w0, [x21,3389] + strb w0, [x20, 3380] bl timer_get_time - ldr x1, [x29,136] - ldrb w2, [x21,3389] - str w0, [x1,356] + str w0, [x22, 364] + ldrb w2, [x20, 3380] + ldrh w0, [x19, 6] cmp w2, 2 - adrp x0, .LANCHOR5 - bhi .L3748 - ldrh w1, [x19,6] - cmp w1, 1 - bne .L3718 -.L3748: - ldrb w1, [x19,5] - mov w4, 2 - add x6, x20, :lo12:.LANCHOR0 - cmp w1, wzr - ldrh w1, [x19,6] - csinc w4, w4, wzr, ne - add x6, x6, 1312 - cmp w1, 1 - add x1, x0, :lo12:.LANCHOR5 - csel w4, w4, w2, ne - ldrb w5, [x1,352] - mov w1, 0 - mov w3, w5 -.L3752: - cmp w1, w4 - beq .L3782 - ubfiz x3, x3, 6, 8 - add w1, w1, 1 - ldrb w3, [x6,x3] - b .L3752 -.L3782: - add x0, x0, :lo12:.LANCHOR5 - uxtb w1, w1 - sub w2, w2, w1 - ubfiz x5, x5, 6, 8 - strb w3, [x0,352] - add x0, x20, :lo12:.LANCHOR0 - add x0, x0, 1312 - strb w2, [x0,2077] - add x0, x0, x5 - bl sblk_prog_page - ldrh w0, [x19,6] + bhi .L3701 cmp w0, 1 - bne .L3718 + bne .L3671 +.L3701: + ldrb w1, [x19, 5] + cmp w1, 0 + mov w1, 0 + cset w4, ne + cmp w0, 1 + add x0, x21, :lo12:.LANCHOR5 + csinc w4, w2, w4, eq + ldrb w0, [x0, 360] + mov w3, w0 +.L3705: + cmp w1, w4 + bne .L3706 + and w1, w1, 255 + add x21, x21, :lo12:.LANCHOR5 + sub w2, w2, w1 + ubfiz x0, x0, 6, 8 + strb w2, [x20, 3380] + add x0, x28, x0 + strb w3, [x21, 360] + bl sblk_prog_page + ldrh w0, [x19, 6] + cmp w0, 1 + bne .L3671 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 -.L3718: - add x20, x20, :lo12:.LANCHOR0 - ldrb w19, [x20,3388] - cbnz w19, .L3716 +.L3671: + ldrb w0, [x20, 3381] + cbnz w0, .L3668 +.L3670: bl ftl_write_completed - mov w0, w19 -.L3779: - 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 - ret + mov w0, 0 + b .L3667 +.L3697: + ldr w0, [x29, 140] + sub w2, w2, w21 + lsl w2, w2, 9 + cmn w0, #1 + ubfiz x0, x21, 7, 9 + beq .L3699 + ldr x1, [x25, 8] + lsl x0, x0, 2 + add x1, x1, x0 + add x0, x27, x0 + bl ftl_memcpy + b .L3698 +.L3699: + mov w1, 0 + add x0, x27, x0, lsl 2 + bl ftl_memset + b .L3698 +.L3706: + ubfiz x3, x3, 6, 8 + add w1, w1, 1 + ldrb w3, [x28, x3] + b .L3705 +.L3707: + lsl w2, w22, 9 + mov x25, 0 + mov w26, 0 +.L3695: + mov w1, 0 + mov x0, x27 + bl ftl_memset + b .L3696 +.L3687: + cbnz w22, .L3707 + mov w26, 0 + mov x25, 0 + b .L3694 .size ftl_write_commit, .-ftl_write_commit .align 2 .global gc_do_copy_back @@ -24392,2350 +24189,2326 @@ ftl_write_commit: gc_do_copy_back: stp x29, x30, [sp, -240]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR3 - add x1, x21, :lo12:.LANCHOR3 - stp x19, x20, [sp,16] - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - adrp x19, .LANCHOR0 - add x22, x19, :lo12:.LANCHOR0 - ldrb w0, [x1,1345] - ldr x26, [x22,1120] - cbnz w0, .L3784 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR3 + add x1, x22, :lo12:.LANCHOR3 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrb w0, [x1, 1337] + cbnz w0, .L3734 bl buf_alloc mov x20, x0 - cbz x0, .L3783 - add x21, x22, 3424 - ldrh w22, [x22,3450] - mov w0, w22 - add w22, w22, 1 + cbz x0, .L3733 + adrp x19, .LANCHOR0 + add x2, x19, :lo12:.LANCHOR0 + ldrh w3, [x2, 3442] + mov w0, w3 bl gc_get_src_ppa_from_index - str w0, [x20,40] + add w3, w3, 1 mov w23, w0 + str w23, [x20, 40] + strh w3, [x2, 3442] mov w1, 1 mov x0, x20 - strh w22, [x21,26] bl sblk_read_page - ldr w0, [x20,52] + ldr w0, [x20, 52] cmp w0, 512 - beq .L3869 - cmn w0, #1 - bne .L3786 -.L3869: + ccmn w0, #1, 4, ne + bne .L3736 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1024 mov w2, 1032 - add x1, x1, 1008 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3786: - ldr x0, [x20,24] - ldr w21, [x0,4] +.L3736: + ldr x0, [x20, 24] + ldr w21, [x0, 4] mov w0, w21 bl lpa_hash_get_ppa - str w0, [x29,192] + str w0, [x29, 192] cmn w0, #1 - bne .L3788 - mov w0, w21 - add x1, x29, 192 + bne .L3737 mov w2, 0 + add x1, x29, 192 + mov w0, w21 bl pm_log2phys -.L3788: - ldr w2, [x29,192] - cmp w2, w23 - bne .L3789 +.L3737: + ldr w24, [x29, 192] + cmp w23, w24 + bne .L3738 add x1, x19, :lo12:.LANCHOR0 - add x0, x1, 1312 - add x1, x1, 3360 -.L3792: - ldr w3, [x0,36] - cmp w3, w21 - bne .L3790 - ldrb w3, [x0,2] - tbz x3, 1, .L3790 + add x0, x1, 1306 + add x1, x1, 3354 +.L3741: + ldr w2, [x0, 34] + cmp w21, w2 + bne .L3739 + ldrb w2, [x0] + tbz x2, 1, .L3739 mov x0, x20 - str x2, [x29,184] bl zbuf_free adrp x0, .LANCHOR2 - ldr x2, [x29,184] - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3783 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3733 add x19, x19, :lo12:.LANCHOR0 adrp x0, .LC297 + mov w2, w23 mov w1, w21 add x0, x0, :lo12:.LC297 - ldrh w3, [x19,3450] + ldrh w3, [x19, 3442] bl printk - b .L3783 -.L3790: +.L3733: + 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 +.L3739: add x0, x0, 64 - cmp x0, x1 - bne .L3792 - add x22, x19, :lo12:.LANCHOR0 - str w21, [x20,36] - strb wzr, [x20,57] - ldrb w0, [x22,3360] - strb w0, [x20,56] - ldr x0, [x20,24] + cmp x1, x0 + bne .L3741 + add x22, x22, :lo12:.LANCHOR3 + strb wzr, [x20, 57] + str w21, [x20, 36] + ldrb w0, [x22, 1946] + strb w0, [x20, 56] + ldr x0, [x20, 24] ldr w1, [x0] - str w1, [x20,32] - str wzr, [x0,16] + str w1, [x20, 32] + str wzr, [x0, 16] adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3793 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3742 mov w0, w21 - str x2, [x29,184] bl lpa_hash_get_ppa + add x1, x19, :lo12:.LANCHOR0 mov w3, w0 - ldr x2, [x29,184] + mov w4, w23 adrp x0, .LC298 - ldrh w5, [x22,3450] + mov w2, w24 add x0, x0, :lo12:.LC298 + ldrh w5, [x1, 3442] mov w1, w21 - mov w4, w2 bl printk -.L3793: +.L3742: add x19, x19, :lo12:.LANCHOR0 mov x0, x20 bl ftl_gc_write_buf bl ftl_write_commit - ldr x1, [x19,3392] - ldr w0, [x1,60] + ldr x1, [x19, 3384] + ldr w0, [x1, 60] add w0, w0, 1 - str w0, [x1,60] - ldrh w0, [x19,3452] + str w0, [x1, 60] + ldrh w0, [x19, 3444] add w0, w0, 1 - strh w0, [x19,3452] - b .L3783 -.L3789: + strh w0, [x19, 3444] + b .L3733 +.L3738: adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3795 - mov w0, w21 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3743 add x19, x19, :lo12:.LANCHOR0 - str x2, [x29,184] + mov w0, w21 bl lpa_hash_get_ppa mov w3, w0 - ldr x2, [x29,184] - adrp x0, .LC298 - ldrh w5, [x19,3450] - add x0, x0, :lo12:.LC298 - mov w1, w21 mov w4, w23 + adrp x0, .LC298 + ldrh w5, [x19, 3442] + mov w2, w24 + mov w1, w21 + add x0, x0, :lo12:.LC298 bl printk -.L3795: +.L3743: mov x0, x20 bl zbuf_free - b .L3783 -.L3784: + b .L3733 +.L3734: + adrp x21, .LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 + ldrb w1, [x1, 1321] + ldr x26, [x0, 1128] add x0, x26, 80 - str x0, [x29,184] - ldrb w1, [x1,1329] - mov w24, 1 - ldrb w0, [x0,9] - uxth w20, w0 - cmp w1, w20 - bhi .L3797 - cmp w20, 2 - mov w24, 2 - csel w24, w20, w24, ls -.L3797: - add x2, x21, :lo12:.LANCHOR3 - ldrb w3, [x2,1328] - cmp w3, 3 - bne .L3798 - add x1, x19, :lo12:.LANCHOR0 - ldrb w4, [x1,1268] - cbz w4, .L3799 - ldrh w22, [x1,5530] - ldrb w1, [x2,1956] - sdiv w0, w22, w0 - uxth w26, w0 - cbz w1, .L3800 - adrp x1, .LANCHOR2 + str x0, [x29, 184] + ldrb w0, [x0, 9] + and w19, w0, 65535 + cmp w1, w19 + bhi .L3798 + cmp w19, 2 mov w23, 2 + csel w23, w19, w23, ls + and w23, w23, 65535 +.L3744: + add x1, x22, :lo12:.LANCHOR3 + ldrb w20, [x1, 1320] + cmp w20, 3 + bne .L3745 + add x3, x21, :lo12:.LANCHOR0 + ldrb w2, [x3, 1212] + ldrh w5, [x3, 5522] + cbz w2, .L3746 + sdiv w0, w5, w0 + ldrb w1, [x1, 1950] + mov w24, w5 + and w26, w0, 65535 + cbz w1, .L3747 + adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 add x1, x1, 2136 - ldrh w0, [x1,w0,sxtw 1] - cmp w0, wzr - csinc w23, w23, wzr, ne - b .L3801 -.L3800: - adrp x0, .LANCHOR5+997 + ldrh w0, [x1, w0, sxtw 1] + cmp w0, 0 + cset w20, ne +.L3865: + add w20, w20, 1 +.L3748: + msub w19, w19, w26, w5 + and w19, w19, 65535 +.L3749: + adrp x8, .LANCHOR5 + adrp x0, .LANCHOR2 + add x8, x8, :lo12:.LANCHOR5 + add x0, x0, :lo12:.LANCHOR2 + add x7, x21, :lo12:.LANCHOR0 + mul w11, w20, w23 + add x10, x22, :lo12:.LANCHOR3 + add x6, x0, 2136 + sxtw x12, w26 + mov x13, x8 + add x7, x7, 3416 + mov w5, 0 +.L3753: + cmp w5, w11 + bge .L3806 + ldr x1, [x29, 184] + add w2, w24, w5 + ldrh w0, [x10, 1338] + ldrb w1, [x1, 9] + mul w0, w0, w1 + ldrb w1, [x8, 465] + sub w0, w0, w1 + cmp w2, w0 + blt .L3754 + ldrb w0, [x10, 1950] + cbz w0, .L3806 + ldrh w0, [x6, x12, lsl 1] + cmp w0, w26 + bcc .L3755 +.L3806: + mov w0, 1 + str w0, [x29, 180] + b .L3751 +.L3798: mov w23, 1 - ldrb w0, [x0,#:lo12:.LANCHOR5+997] - cbz w0, .L3801 + b .L3744 +.L3747: + adrp x0, .LANCHOR5+461 + ldrb w0, [x0, #:lo12:.LANCHOR5+461] + cbz w0, .L3800 sub w0, w26, #62 - mov w23, 2 - uxth w0, w0 + and w0, w0, 65535 cmp w0, 2159 bhi .L3801 - udiv w0, w26, w3 - add w0, w0, w0, lsl 1 - sub w0, w26, w0 - uxth w0, w0 - cmp w0, wzr - csinc w23, w23, wzr, eq + udiv w20, w26, w20 + add w20, w20, w20, lsl 1 + sub w20, w26, w20 + and w20, w20, 65535 + cmp w20, 0 + cset w20, eq + b .L3865 +.L3800: + mov w20, 1 + b .L3748 .L3801: - msub w20, w26, w20, w22 - uxth w20, w20 - b .L3804 -.L3799: - ldrb w2, [x2,1344] - cbz w2, .L3803 - ldrh w22, [x1,5530] - add w20, w0, w0, lsl 1 - mov w23, w3 - sdiv w20, w22, w20 - mul w0, w20, w0 - uxth w26, w20 + mov w20, 2 + b .L3748 +.L3746: + ldrb w1, [x1, 1336] + cbz w1, .L3750 + add w19, w0, w0, lsl 1 + mov w24, w5 + sdiv w19, w5, w19 + mul w0, w0, w19 + and w26, w19, 65535 sub w0, w0, w0, lsl 2 - add w20, w22, w0 - ldrb w0, [x1,1269] - sdiv w20, w20, w3 - uxth w20, w20 - cbz w0, .L3804 + add w19, w0, w5 + ldrb w0, [x3, 1213] + sdiv w19, w19, w20 + and w19, w19, 65535 + cbz w0, .L3749 add w4, w26, w26, lsl 1 - uxth w26, w4 - b .L3804 -.L3803: - ldrh w5, [x1,5530] + and w26, w4, 65535 + b .L3749 +.L3750: + sdiv w2, w5, w0 adrp x1, .LANCHOR2 add x1, x1, :lo12:.LANCHOR2 - mov w23, w3 add x1, x1, 3672 - sdiv w2, w5, w0 - msub w20, w20, w2, w5 - ldrh w25, [x1,w2,sxtw 1] - uxth w20, w20 + msub w19, w19, w2, w5 + ldrh w25, [x1, w2, sxtw 1] + and w19, w19, 65535 + and w1, w25, 7 + str w1, [x29, 180] lsr w26, w25, 3 - and w25, w25, 7 - madd w22, w26, w0, w20 - cmp w25, 1 - add w22, w22, w22, lsl 1 - uxth w22, w22 - bne .L3805 - b .L3804 -.L3798: - ldrb w1, [x2,1330] - cbnz w1, .L3806 - add x1, x19, :lo12:.LANCHOR0 - mov w23, 1 - ldrh w22, [x1,5530] - sdiv w26, w22, w0 - msub w20, w26, w20, w22 - uxth w20, w20 - b .L3804 -.L3806: - add x1, x19, :lo12:.LANCHOR0 - mov w23, 2 - ldrh w22, [x1,5530] - sdiv w26, w22, w0 - msub w20, w26, w20, w22 - uxth w20, w20 -.L3804: - adrp x3, .LANCHOR5 - adrp x2, .LANCHOR2 - mul w7, w23, w24 - mov w28, 0 - mov x8, x3 - add x2, x2, :lo12:.LANCHOR2 - sxtw x5, w26 - add x6, x19, :lo12:.LANCHOR0 - b .L3807 -.L3938: - add x0, x2, 2136 - ldrh w0, [x0,x5,lsl 1] - cmp w0, w26 - bcs .L3867 - tbz x28, 0, .L3867 -.L3808: - add x0, x8, :lo12:.LANCHOR5 - sbfiz x25, x25, 2, 32 - ldr x1, [x0,240] - ldr w0, [x1,x25] - cmn w0, #1 - beq .L3937 -.L3811: - add w28, w28, 1 - uxth w28, w28 -.L3807: - cmp w28, w7 - bge .L3867 - add x1, x21, :lo12:.LANCHOR3 - ldr x4, [x29,184] - add w25, w22, w28 - ldrb w9, [x4,9] - ldrh w0, [x1,1346] - mul w0, w0, w9 - add x9, x3, :lo12:.LANCHOR5 - ldrb w9, [x9,1001] - sub w0, w0, w9 - cmp w25, w0 - blt .L3808 - ldrb w0, [x1,1956] - cbnz w0, .L3938 -.L3867: - mov w25, 1 -.L3805: - mul w0, w23, w24 - str w0, [x29,168] - str wzr, [x29,152] - sub w0, w22, w0, lsl 1 - uxth w0, w0 - str w0, [x29,128] - ldrh w0, [x29,128] - str x0, [x29,120] - adrp x0, .LC0 - add x0, x0, :lo12:.LC0 - str x0, [x29,112] + madd w0, w26, w0, w19 + add w0, w0, w0, lsl 1 + and w24, w0, 65535 + uxtw x0, w1 + cmp w0, 1 + beq .L3749 +.L3751: + mul w0, w20, w23 + str wzr, [x29, 160] + str w0, [x29, 176] + ubfiz w0, w23, 1, 15 + strh w0, [x29, 128] + str w0, [x29, 156] + msub w0, w0, w20, w24 + and w0, w0, 65535 + str w0, [x29, 152] + ldrh w0, [x29, 152] + str x0, [x29, 120] + adrp x0, .LANCHOR5 + add x28, x0, :lo12:.LANCHOR5 adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 - add x0, x0, 1008 - str x0, [x29,104] - b .L3810 -.L3937: - ldrh w27, [x6,3450] - ldrh w0, [x6,3448] - cmp w0, w27 - bls .L3783 - add x0, x21, :lo12:.LANCHOR3 - ldrb w0, [x0,1956] - cbz w0, .L3812 - add x0, x2, 2136 - ldrh w0, [x0,x5,lsl 1] - cmp w0, w26 - bcs .L3812 - tbz x28, 0, .L3812 - ubfiz x0, x0, 2, 16 - ldr w0, [x1,x0] - str w0, [x1,x25] - b .L3811 -.L3812: - mov w0, w27 - str x6, [x29,128] - str x5, [x29,136] - add w27, w27, 1 - str x2, [x29,144] - str x8, [x29,152] - str x3, [x29,160] - str x1, [x29,168] - str x7, [x29,176] - bl gc_get_src_ppa_from_index - ldr x6, [x29,128] - ldr x1, [x29,168] - ldr x5, [x29,136] - strh w27, [x6,3450] - str w0, [x1,x25] - ldr x2, [x29,144] - ldr x8, [x29,152] - ldr x3, [x29,160] - ldr x7, [x29,176] - b .L3811 -.L3838: - ldr w0, [x29,160] - add w2, w22, w0 - sxtw x0, w2 - str x0, [x29,176] - add x0, x21, :lo12:.LANCHOR3 - ldr x1, [x29,176] - ldr x0, [x0,1336] - ldrb w0, [x0,x1] - cmp w0, 255 - beq .L3939 -.L3814: - add x5, x21, :lo12:.LANCHOR3 - ldr x2, [x29,176] - add x3, x29, 192 - add x6, x19, :lo12:.LANCHOR0 - add x1, x6, 1312 - ldr x0, [x5,1336] - ldrb w2, [x0,x2] - ldr w0, [x29,160] - add x1, x1, x2, lsl 6 - str x1, [x3,w0,sxtw 3] - mov w3, 2 - ldrb w0, [x5,1328] - strh w3, [x1,50] - adrp x3, .LANCHOR5 - strb w25, [x1,61] - cmp w0, 3 - bne .L3829 - ldrb w7, [x6,1268] - cbnz w7, .L3940 - ldrb w6, [x6,1269] - add x1, x1, 32 - udiv w0, w27, w0 - ldrh w7, [x5,1418] - cbz w6, .L3833 - add w6, w0, w20 - ldr x4, [x29,184] - add x6, x4, w6, sxtw 1 - ldrh w5, [x6,16] - add w0, w0, w0, lsl 1 - sub w0, w27, w0 - madd w5, w5, w7, w26 - add w0, w5, w0, uxth -.L3936: - str w0, [x1,8] - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 1312 - add x2, x0, x2, lsl 6 - add x0, x3, :lo12:.LANCHOR5 - ldr x1, [x0,248] - mov w0, 3 - ldrh w5, [x2,48] - udiv w0, w27, w0 - ldr w2, [x2,40] - add w0, w0, w0, lsl 1 - sub w0, w27, w0 - uxth w0, w0 - add w0, w0, 1 - orr w0, w2, w0, lsl 24 - str w0, [x1,x5,lsl 2] -.L3857: - add x1, x21, :lo12:.LANCHOR3 - ldrb w0, [x1,1956] - cbnz w0, .L3941 -.L3837: - ldr w0, [x29,152] - add w0, w0, 1 - str w0, [x29,152] -.L3810: - ldr w0, [x29,152] - ldr w1, [x29,168] + str x0, [x29, 112] +.L3756: + ldr w0, [x29, 160] + ldr w1, [x29, 176] and w0, w0, 65535 - str w0, [x29,160] + str w0, [x29, 164] + ldrh w27, [x29, 160] cmp w0, w1 - ldrh w27, [x29,152] - blt .L3838 - b .L3942 -.L3939: + blt .L3780 + add x1, x22, :lo12:.LANCHOR3 + ldrb w0, [x1, 1320] + cmp w0, 3 + add x0, x29, 192 + bne .L3781 + add x2, x21, :lo12:.LANCHOR0 + ldrb w2, [x2, 1212] + cbz w2, .L3782 + ldr w2, [x29, 176] + mov w1, 0 + sub w2, w2, #1 +.L3783: + cmp w1, w2 + blt .L3784 +.L3870: + ldr x0, [x0, w2, sxtw 3] + mov w1, -1 + strb w1, [x0] + ldrb w1, [x29, 176] + ldr x0, [x29, 192] + bl sblk_prog_page + b .L3785 +.L3745: + ldrb w1, [x1, 1322] + cbnz w1, .L3752 + add x1, x21, :lo12:.LANCHOR0 + mov w20, 1 + ldrh w24, [x1, 5522] + sdiv w26, w24, w0 + msub w19, w19, w26, w24 + and w19, w19, 65535 + b .L3749 +.L3752: + add x1, x21, :lo12:.LANCHOR0 + mov w20, 2 + ldrh w24, [x1, 5522] + sdiv w26, w24, w0 + msub w19, w19, w26, w24 + and w19, w19, 65535 + b .L3749 +.L3755: + tbz x5, 0, .L3806 +.L3754: + ldr x9, [x13, 288] + sbfiz x2, x2, 2, 32 + ldr w0, [x9, x2] + cmn w0, #1 + bne .L3757 + ldrh w3, [x7, 26] + ldrh w0, [x7, 24] + cmp w0, w3 + bls .L3733 + ldrb w0, [x10, 1950] + cbz w0, .L3758 + ldrh w0, [x6, x12, lsl 1] + cmp w0, w26 + bcs .L3758 + tbz x5, 0, .L3758 + ubfiz x0, x0, 2, 16 + ldr w0, [x9, x0] +.L3866: + str w0, [x9, x2] +.L3757: + add w5, w5, 1 + and w5, w5, 65535 + b .L3753 +.L3758: + mov w0, w3 + bl gc_get_src_ppa_from_index + add w3, w3, 1 + strh w3, [x7, 26] + b .L3866 +.L3780: + ldr w0, [x29, 164] + add w1, w24, w0 + sxtw x0, w1 + str x0, [x29, 168] + add x0, x22, :lo12:.LANCHOR3 + sxtw x2, w1 + ldr x0, [x0, 1328] + ldrb w0, [x0, x2] + cmp w0, 255 + bne .L3760 + str w1, [x29, 144] mov w0, 0 - str x2, [x29,144] bl buf_alloc - mov x28, x0 - ldr x2, [x29,144] - cbnz x0, .L3815 + mov x25, x0 + ldr w1, [x29, 144] + cbnz x0, .L3761 + str w1, [x29, 144] bl sblk_wait_write_queue_completed bl ftl_write_completed bl gc_write_completed bl gc_free_temp_buf - mov w0, w28 + mov w0, 0 bl buf_alloc - mov x28, x0 - ldr x2, [x29,144] - cbz x0, .L3783 -.L3815: - add x1, x21, :lo12:.LANCHOR3 - ldr x3, [x29,176] - ldrb w5, [x28,1] - ldr x0, [x1,1336] - strb w5, [x0,x3] - add x0, x19, :lo12:.LANCHOR0 - ldr x3, [x29,184] - strb w25, [x28,61] - ldrb w5, [x0,3431] + ldr w1, [x29, 144] + mov x25, x0 + cbz x0, .L3733 +.L3761: + add x2, x22, :lo12:.LANCHOR3 + ldr x3, [x29, 168] + ldrb w5, [x25, 1] + ldr x0, [x2, 1328] + strb w5, [x0, x3] + add x0, x21, :lo12:.LANCHOR0 + ldr x3, [x29, 184] + ldrb w5, [x0, 3423] add w5, w5, 1 - strb w5, [x0,3431] - add w0, w27, w22 - strh w0, [x28,48] - ldrh w0, [x1,1346] - ldrb w5, [x3,9] + strb w5, [x0, 3423] + add w0, w27, w24 + strh w0, [x25, 48] + ldrb w0, [x29, 180] + strb w0, [x25, 61] + ldrh w0, [x2, 1338] + ldrb w5, [x3, 9] + adrp x3, .LANCHOR5 mul w0, w0, w5 - adrp x5, .LANCHOR5 - str x5, [x29,144] - add x6, x5, :lo12:.LANCHOR5 - ldrb w6, [x6,1001] - sub w0, w0, w6 - cmp w2, w0 - blt .L3816 - ldrb w0, [x1,1956] - cbz w0, .L3817 + add x5, x3, :lo12:.LANCHOR5 + ldrb w5, [x5, 465] + sub w0, w0, w5 + cmp w1, w0 + blt .L3762 + ldrb w0, [x2, 1950] + cbz w0, .L3763 adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 add x0, x0, 2136 - ldrh w0, [x0,w26,sxtw 1] + ldrh w0, [x0, w26, sxtw 1] cmp w0, w26 - bcs .L3817 - tbnz x27, 0, .L3816 -.L3817: - ldr x0, [x29,144] - mov w1, -1 - ldr x3, [x29,176] - add x5, x21, :lo12:.LANCHOR3 - add x6, x0, :lo12:.LANCHOR5 - ldr x0, [x6,232] - str w1, [x0,x3,lsl 2] - ldrb w0, [x6,1001] + bcs .L3763 + tbnz x27, 0, .L3762 +.L3763: + ldr x0, [x28, 280] + mov w2, -1 + ldr x3, [x29, 168] + str w2, [x0, x3, lsl 2] + ldrb w0, [x28, 465] cmp w0, 2 - ldrh w0, [x5,1346] - bne .L3818 - ldr x1, [x29,184] - ldrb w1, [x1,9] - mul w1, w0, w1 - sub w1, w1, #2 - cmp w2, w1 - ldrh w2, [x6,998] - bne .L3819 - ldr x1, [x6,232] - ldr x0, [x28,8] - str x6, [x29,96] + bne .L3764 + ldr x0, [x29, 184] + add x7, x22, :lo12:.LANCHOR3 + ldrh w2, [x28, 462] + ldrh w6, [x7, 1338] + ldrb w0, [x0, 9] + mul w0, w0, w6 + sub w0, w0, #2 + cmp w1, w0 + bne .L3765 + ldr x1, [x28, 280] + ldr x0, [x25, 8] + str x7, [x29, 144] bl ftl_memcpy - add x5, x19, :lo12:.LANCHOR0 - ldr x0, [x28,24] + ldr x7, [x29, 144] mov w1, 0 - str x5, [x29,136] - ldrb w2, [x5,3360] + ldr x0, [x25, 24] + ldrb w2, [x7, 1946] lsl w2, w2, 1 bl ftl_memset - ldr x1, [x28,24] - mov w0, 15555 - ldr x6, [x29,96] - movk w0, 0xf55f, lsl 16 - str w0, [x1] - ldr x2, [x28,24] - ldrh w1, [x6,998] - ldr x0, [x28,8] - str x2, [x29,144] + ldr x0, [x25, 24] + mov w1, 15555 + movk w1, 0xf55f, lsl 16 + str w1, [x0] + ldr x2, [x25, 24] + ldrh w1, [x28, 462] + ldr x0, [x25, 8] + str x2, [x29, 144] bl js_hash - ldr x2, [x29,144] - ldr x5, [x29,136] - str w0, [x2,4] - ldr x1, [x5,1120] - ldr x0, [x28,24] - ldr w1, [x1,132] - str w1, [x0,8] - ldr x0, [x28,24] - str wzr, [x0,12] - b .L3820 -.L3819: - ldrb w5, [x5,1329] - ldr x1, [x6,232] - mul w5, w0, w5 - ldr x0, [x28,8] + ldr x2, [x29, 144] + add x1, x21, :lo12:.LANCHOR0 + str w0, [x2, 4] + ldr x1, [x1, 1128] + ldr x0, [x25, 24] + ldr w1, [x1, 132] + str w1, [x0, 8] + ldr x0, [x25, 24] + str wzr, [x0, 12] +.L3766: + ldr x0, [x25, 24] + str wzr, [x0, 16] +.L3760: + add x5, x22, :lo12:.LANCHOR3 + ldr x1, [x29, 168] + ldrsw x2, [x29, 164] + add x3, x29, 192 + add x7, x21, :lo12:.LANCHOR0 + ldr x0, [x5, 1328] + add x6, x7, 1304 + ldrb w1, [x0, x1] + ubfiz x0, x1, 6, 8 + add x0, x6, x0 + add x6, x6, x1, lsl 6 + str x0, [x3, x2, lsl 3] + ldrb w0, [x29, 180] + strb w0, [x6, 61] + mov w0, 2 + strh w0, [x6, 50] + ldrb w0, [x5, 1320] + cmp w0, 3 + bne .L3771 + ldrb w8, [x7, 1212] + cbz w8, .L3772 + ldrb w0, [x5, 1950] + and w6, w27, 1 + add w7, w6, w26 + cbz w0, .L3773 + adrp x5, .LANCHOR2 + add x5, x5, :lo12:.LANCHOR2 + add x5, x5, 2136 + ldrh w0, [x5, w26, sxtw 1] + cmp w0, w26 + bcs .L3773 + cmp w6, 0 + csel w7, w7, w0, eq +.L3773: + udiv w5, w27, w20 + ldr x0, [x29, 184] + add x6, x21, :lo12:.LANCHOR0 + add x6, x6, x1, lsl 6 + add w5, w5, w19 + add x5, x0, w5, sxtw 1 + ldrh w0, [x5, 16] + add x5, x22, :lo12:.LANCHOR3 + ldrh w5, [x5, 1410] + madd w0, w0, w5, w7 + orr w0, w0, 50331648 + str w0, [x6, 1344] +.L3778: + add x0, x21, :lo12:.LANCHOR0 + add x0, x0, 1304 + add x1, x0, x1, lsl 6 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + ldr w5, [x1, 40] + ldr x0, [x0, 296] + ldrh w1, [x1, 48] + str w5, [x0, x1, lsl 2] + b .L3797 +.L3765: + ldrb w5, [x7, 1321] + and x1, x2, 65532 + ldr x0, [x28, 280] + str x7, [x29, 144] + add x1, x0, x1 + ldr x0, [x25, 8] + mul w5, w5, w6 lsl w5, w5, 2 sub w5, w5, w2 - and x2, x2, 65532 - add x1, x1, x2 + str w5, [x29, 104] mov w2, w5 - str x5, [x29,96] bl ftl_memcpy - add x6, x19, :lo12:.LANCHOR0 - ldr x0, [x28,24] + ldr x7, [x29, 144] mov w1, 0 - str x6, [x29,136] - ldrb w2, [x6,3360] + ldr x0, [x25, 24] + ldrb w2, [x7, 1946] lsl w2, w2, 1 bl ftl_memset - ldr x1, [x28,24] - mov w0, 15555 - movk w0, 0xf55f, lsl 16 - ldr x5, [x29,96] - str w0, [x1] + ldr x0, [x25, 24] + mov w1, 15555 + movk w1, 0xf55f, lsl 16 + ldr w5, [x29, 104] + str w1, [x0] mov w1, w5 - ldr x2, [x28,24] - ldr x0, [x28,8] - str x2, [x29,144] + ldr x2, [x25, 24] + ldr x0, [x25, 8] + str x2, [x29, 144] bl js_hash - ldr x2, [x29,144] - ldr x6, [x29,136] - str w0, [x2,4] - ldr x1, [x6,1120] - ldr x0, [x28,24] - ldr w1, [x1,132] - str w1, [x0,8] + ldr x2, [x29, 144] + add x1, x21, :lo12:.LANCHOR0 + str w0, [x2, 4] + ldr x1, [x1, 1128] + ldr x0, [x25, 24] + ldr w1, [x1, 132] + str w1, [x0, 8] mov w1, 1 - ldr x0, [x28,24] - str w1, [x0,12] - b .L3820 -.L3818: - ldrb w2, [x5,1329] - ldr x1, [x6,232] - str x5, [x29,96] - mul w2, w0, w2 - ldr x0, [x28,8] + ldr x0, [x25, 24] + str w1, [x0, 12] + b .L3766 +.L3764: + add x5, x22, :lo12:.LANCHOR3 + ldr x1, [x28, 280] + str x5, [x29, 144] + ldrb w0, [x5, 1321] + ldrh w2, [x5, 1338] + mul w2, w2, w0 + ldr x0, [x25, 8] lsl w2, w2, 2 - str x6, [x29,136] bl ftl_memcpy - ldr x5, [x29,96] - ldr x6, [x29,136] - ldrb w1, [x5,1329] - ldrh w0, [x5,1346] + ldr x5, [x29, 144] + ldrb w1, [x5, 1321] + ldrh w0, [x5, 1338] mul w0, w0, w1 - add x1, x19, :lo12:.LANCHOR0 + ldrb w1, [x5, 1946] lsl w2, w0, 2 - ldrb w1, [x1,3360] cmp w1, w0, lsr 6 - bge .L3821 - ldrh w1, [x6,998] + bge .L3767 + ldrh w1, [x28, 462] sub w2, w1, w2 -.L3821: - ldr x1, [x29,144] - ldr x5, [x28,8] +.L3767: + ldr x5, [x25, 8] + ldr x1, [x28, 288] add x0, x5, w0, sxtw 2 - add x1, x1, :lo12:.LANCHOR5 - ldr x1, [x1,240] bl ftl_memcpy - add x5, x19, :lo12:.LANCHOR0 - ldr x0, [x28,24] + add x5, x22, :lo12:.LANCHOR3 + ldr x0, [x25, 24] mov w1, 0 - str x5, [x29,136] - ldrb w2, [x5,3360] + str x5, [x29, 104] + ldrb w2, [x5, 1946] lsl w2, w2, 1 bl ftl_memset - ldr x1, [x28,24] - mov w0, 15555 - movk w0, 0xf55f, lsl 16 - str w0, [x1] - add x1, x21, :lo12:.LANCHOR3 - ldr x2, [x28,24] - ldrh w0, [x1,1346] - ldrb w1, [x1,1329] - str x2, [x29,144] - mul w1, w0, w1 - ldr x0, [x28,8] + ldr x0, [x25, 24] + mov w1, 15555 + ldr x5, [x29, 104] + movk w1, 0xf55f, lsl 16 + str w1, [x0] + ldrb w0, [x5, 1321] + ldrh w1, [x5, 1338] + ldr x2, [x25, 24] + str x2, [x29, 144] + mul w1, w1, w0 + ldr x0, [x25, 8] lsl w1, w1, 2 bl js_hash - ldr x2, [x29,144] - ldr x5, [x29,136] - str w0, [x2,4] - ldr x1, [x5,1120] - ldr x0, [x28,24] - ldr w1, [x1,132] - b .L3932 -.L3816: - ldr x0, [x29,176] + ldr x2, [x29, 144] + add x1, x21, :lo12:.LANCHOR0 + str w0, [x2, 4] + ldr x1, [x1, 1128] + ldr x0, [x25, 24] + ldr w1, [x1, 132] +.L3867: + str w1, [x0, 8] + b .L3766 +.L3762: + ldr x0, [x29, 168] lsl x0, x0, 2 - str x0, [x29,136] - ldr x0, [x29,144] - ldr x1, [x29,136] - add x0, x0, :lo12:.LANCHOR5 - ldr x0, [x0,240] - ldr w0, [x0,x1] + str x0, [x29, 144] + ldr x0, [x28, 288] + ldr x1, [x29, 144] + ldr w0, [x0, x1] mov w1, 1 - str w0, [x28,40] - mov x0, x28 + str w0, [x25, 40] + mov x0, x25 bl sblk_read_page - ldr w0, [x28,52] + ldr w0, [x25, 52] cmp w0, 512 - beq .L3822 - cmn w0, #1 - bne .L3823 -.L3822: - add x1, x19, :lo12:.LANCHOR0 - add x5, x21, :lo12:.LANCHOR3 - ldrb w2, [x1,1257] - mov w1, 24 - ldrh w0, [x5,1312] - sub w2, w1, w2 - mov w1, 1 - sub w2, w2, w0 - lsl w2, w1, w2 - ldr w1, [x28,40] - sub w2, w2, #1 - lsr w0, w1, w0 - ldrb w1, [x5,1314] - and w0, w2, w0 - udiv w0, w0, w1 + ccmn w0, #1, 4, ne + bne .L3769 + add x0, x21, :lo12:.LANCHOR0 + add x2, x22, :lo12:.LANCHOR3 + ldrb w1, [x0, 1205] + mov w0, 24 + ldrh w5, [x2, 1304] + sub w0, w0, w1 + ldrb w2, [x2, 1306] + sub w1, w0, w5 + mov w0, 1 + lsl w0, w0, w1 + ldr w1, [x25, 40] + sub w0, w0, #1 + lsr w1, w1, w5 + and w0, w0, w1 mov x1, 0 + udiv w0, w0, w2 bl ftl_sblk_dump - ldr w0, [x28,52] + ldr w0, [x25, 52] cmp w0, 512 - beq .L3870 - cmn w0, #1 - bne .L3823 -.L3870: - ldr x0, [x28,24] + ccmn w0, #1, 4, ne + bne .L3769 + ldr x0, [x25, 24] mov w1, -1 - str w1, [x0,4] -.L3823: - ldr w0, [x28,52] + str w1, [x0, 4] + ldr w0, [x25, 52] cmp w0, 512 - beq .L3871 - cmn w0, #1 - bne .L3826 -.L3871: - ldr x1, [x29,104] + ccmp w0, w1, 4, ne + bne .L3769 + ldr x0, [x29, 112] mov w2, 1223 - ldr x0, [x29,112] + add x1, x0, 1024 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L3826: - ldr x1, [x28,24] - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x1,4] - ldr w0, [x0,3372] +.L3769: + ldr x1, [x25, 24] + add x0, x21, :lo12:.LANCHOR0 + ldr w0, [x0, 3364] + ldr w2, [x1, 4] cmp w2, w0 - bcc .L3828 + bcc .L3770 mov w0, -1 - str w0, [x1,4] -.L3828: - ldr x0, [x28,24] - ldr x2, [x29,136] - ldr w1, [x0,4] - ldr x0, [x29,144] + str w0, [x1, 4] +.L3770: + ldr x0, [x25, 24] + ldr x2, [x29, 144] + ldr w1, [x0, 4] + ldr x0, [x28, 280] + str w1, [x0, x2] + ldr w1, [x25, 40] + ldr x0, [x25, 24] + b .L3867 +.L3772: + udiv w0, w27, w0 + ldrb w7, [x7, 1213] + ldrh w8, [x5, 1410] + cbz w7, .L3775 + ldr x4, [x29, 184] + add w7, w0, w19 + add w0, w0, w0, lsl 1 + sub w0, w27, w0 + add x7, x4, w7, sxtw 1 + ldrh w5, [x7, 16] + madd w5, w5, w8, w26 + add w0, w5, w0, uxth +.L3871: + str w0, [x6, 40] + adrp x0, .LANCHOR5 add x0, x0, :lo12:.LANCHOR5 - ldr x0, [x0,232] - str w1, [x0,x2] - ldr x0, [x28,24] - ldr w1, [x28,40] -.L3932: - str w1, [x0,8] -.L3820: - ldr x0, [x28,24] - str wzr, [x0,16] - b .L3814 -.L3940: - ldrb w1, [x5,1956] - and w6, w27, 1 - add w0, w26, w6 - cbz w1, .L3831 - adrp x1, .LANCHOR2 - add x1, x1, :lo12:.LANCHOR2 - add x1, x1, 2136 - ldrh w1, [x1,w26,sxtw 1] - cbz w6, .L3831 - cmp w1, w26 - csel w0, w0, w1, cs -.L3831: - add x6, x21, :lo12:.LANCHOR3 - ldr x4, [x29,184] - udiv w1, w27, w23 - add x5, x19, :lo12:.LANCHOR0 - add x5, x5, x2, lsl 6 - add w1, w1, w20 - ldrh w6, [x6,1418] - add x1, x4, w1, sxtw 1 - ldrh w1, [x1,16] - madd w0, w1, w6, w0 - orr w0, w0, 50331648 - str w0, [x5,1352] - b .L3832 -.L3833: - add w0, w0, w20 - ldr x4, [x29,184] - add x0, x4, w0, sxtw 1 - ldrh w5, [x0,16] - madd w0, w5, w7, w26 - b .L3936 -.L3829: - cmp w0, 2 - bne .L3832 - ldrb w6, [x5,1330] - add x1, x1, 32 - ldrh w0, [x5,1418] - cbnz w6, .L3836 - ldr w4, [x29,160] - add w5, w4, w20 - ldr x4, [x29,184] - add x5, x4, w5, sxtw 1 - ldrh w5, [x5,16] - madd w0, w5, w0, w26 - b .L3933 -.L3836: - add w5, w20, w27, lsr 1 - ldr x4, [x29,184] - add x5, x4, w5, sxtw 1 - ldrh w5, [x5,16] - madd w0, w5, w0, w26 - and w5, w27, 1 - add w0, w0, w5 -.L3933: - orr w0, w0, 33554432 - str w0, [x1,8] -.L3832: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 1312 - add x2, x0, x2, lsl 6 - add x0, x3, :lo12:.LANCHOR5 - ldrh w1, [x2,48] - ldr x0, [x0,248] - ldr w5, [x2,40] - str w5, [x0,x1,lsl 2] - b .L3857 -.L3941: + add x5, x21, :lo12:.LANCHOR0 + add x5, x5, 1304 + add x1, x5, x1, lsl 6 + ldr x5, [x0, 296] + mov w0, 3 + udiv w0, w27, w0 + ldrh w6, [x1, 48] + ldr w1, [x1, 40] + add w0, w0, w0, lsl 1 + sub w0, w27, w0 + and w0, w0, 65535 + add w0, w0, 1 + orr w0, w1, w0, lsl 24 + str w0, [x5, x6, lsl 2] +.L3797: + add x1, x22, :lo12:.LANCHOR3 + ldrb w0, [x1, 1950] + cbz w0, .L3779 adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 add x0, x0, 2136 - ldrh w0, [x0,w26,sxtw 1] + ldrh w0, [x0, w26, sxtw 1] cmp w0, w26 - bcs .L3837 - tbz x27, 0, .L3837 - ldr x0, [x1,1336] - mov w2, -1 - ldr x4, [x29,176] - add x3, x3, :lo12:.LANCHOR5 - strb w2, [x0,x4] - add x2, x29, 192 - ldr w0, [x29,160] - ldr x0, [x2,w0,sxtw 3] - ldrh w2, [x29,128] - strh w2, [x0,48] - ldrb w2, [x0,1] - ldr x0, [x1,1336] - ldr x1, [x29,120] - strb w2, [x0,x1] + bcs .L3779 + tbz x27, 0, .L3779 + ldr x0, [x1, 1328] + mov w5, -1 + ldr x4, [x29, 168] + strb w5, [x0, x4] + ldr x0, [x3, x2, lsl 3] + ldrh w2, [x29, 152] + strh w2, [x0, 48] + ldrb w2, [x0, 1] + ldr x0, [x1, 1328] + ldr x1, [x29, 120] + strb w2, [x0, x1] + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 mov w1, -1 - ldr x0, [x3,240] - str w1, [x0,x4,lsl 2] - b .L3837 -.L3942: - add x1, x21, :lo12:.LANCHOR3 - ldrb w0, [x1,1328] - cmp w0, 3 - add x0, x29, 192 - bne .L3839 - add x2, x19, :lo12:.LANCHOR0 - ldrb w2, [x2,1268] - cbz w2, .L3840 - ldr w1, [x29,168] - sub w2, w1, #1 - mov w1, 0 -.L3841: - cmp w1, w2 - bge .L3935 - ldr x3, [x0,w1,sxtw 3] + ldr x0, [x0, 288] + str w1, [x0, x4, lsl 2] +.L3779: + ldr w0, [x29, 160] + add w0, w0, 1 + str w0, [x29, 160] + b .L3756 +.L3775: + ldr x4, [x29, 184] + add w0, w0, w19 + add x0, x4, w0, sxtw 1 + ldrh w0, [x0, 16] + madd w0, w0, w8, w26 + b .L3871 +.L3771: + cmp w0, 2 + bne .L3778 + ldrb w0, [x5, 1322] + ldrh w7, [x5, 1410] + cbnz w0, .L3777 + ldr w0, [x29, 164] + add w5, w19, w0 + ldr x0, [x29, 184] + add x5, x0, w5, sxtw 1 + ldrh w0, [x5, 16] + madd w0, w0, w7, w26 +.L3868: + orr w0, w0, 33554432 + str w0, [x6, 40] + b .L3778 +.L3777: + ldr x0, [x29, 184] + add w5, w19, w27, lsr 1 + add x5, x0, w5, sxtw 1 + ldrh w0, [x5, 16] + and w5, w27, 1 + madd w0, w0, w7, w26 + add w0, w0, w5 + b .L3868 +.L3784: + ldr x3, [x0, w1, sxtw 3] add w1, w1, 1 - ldr x5, [x0,w1,sxtw 3] - uxth w1, w1 - ldrb w5, [x5,1] + ldr x5, [x0, w1, sxtw 3] + and w1, w1, 65535 + ldrb w5, [x5, 1] strb w5, [x3] - b .L3841 -.L3840: - ldrb w1, [x1,1344] - cbnz w1, .L3934 - cmp w25, 1 + b .L3783 +.L3782: + ldrb w2, [x1, 1336] + ldr x1, [x29, 192] + cbz w2, .L3786 +.L3789: + strb wzr, [x1, 60] + b .L3788 +.L3786: + ldr w2, [x29, 180] + cmp w2, 1 + bne .L3787 mov w2, 9 - beq .L3934 - cmp w25, 2 - bne .L3847 - mov w2, 13 -.L3934: - ldr x1, [x29,192] - strb w2, [x1,60] - b .L3846 -.L3847: - ldr x2, [x29,192] - strb w1, [x2,60] -.L3846: +.L3869: + strb w2, [x1, 60] +.L3788: + mov w2, w23 add x1, x0, 24 - mov w2, w24 bl sblk_xlc_prog_pages - b .L3843 -.L3839: - ldrb w2, [x1,1330] - cbz w2, .L3848 - ldrb w1, [x1,1331] - cbnz w1, .L3849 -.L3848: - ldr w1, [x29,168] - sub w2, w1, #1 - mov w1, 0 - b .L3850 -.L3849: - mov w1, w24 - bl sblk_3d_mlc_prog_pages - b .L3843 -.L3850: - cmp w1, w2 - bge .L3935 - ldr x3, [x0,w1,sxtw 3] - add w1, w1, 1 - ldr x5, [x0,w1,sxtw 3] - uxth w1, w1 - ldrb w5, [x5,1] - strb w5, [x3] - b .L3850 -.L3935: - ldr x0, [x0,w2,sxtw 3] - mov w1, -1 - strb w1, [x0] - ldr x0, [x29,192] - ldrb w1, [x29,168] - bl sblk_prog_page -.L3843: - add x1, x21, :lo12:.LANCHOR3 - ldrb w0, [x1,1344] - cbz w0, .L3852 - add w0, w24, w24, lsl 1 - b .L3853 -.L3852: - ldrb w0, [x1,1330] - cbz w0, .L3854 - lsl w0, w24, 1 - b .L3853 -.L3854: - add x0, x19, :lo12:.LANCHOR0 - ldrb w2, [x0,1268] - mov w0, w24 - cbz w2, .L3853 - ldrb w1, [x1,1956] - ldrh w0, [x29,168] - cbz w1, .L3853 - adrp x1, .LANCHOR2 - add x1, x1, :lo12:.LANCHOR2 - add x1, x1, 2136 - ldrh w1, [x1,w26,sxtw 1] - cmp w1, w26 - csel w0, w0, w24, cs -.L3853: - add x19, x19, :lo12:.LANCHOR0 - add x21, x21, :lo12:.LANCHOR3 - ldr x2, [x19,3392] - ldr w1, [x2,52] - add w1, w1, w0 - str w1, [x2,52] - ldr x2, [x29,184] - ldrh w1, [x19,5530] - add w0, w0, w1 - ldrh w1, [x21,1346] - uxth w0, w0 - strh w0, [x19,5530] - ldrb w2, [x2,9] - mul w1, w1, w2 - cmp w0, w1 - blt .L3855 - ldr x0, [x19,1120] - strh wzr, [x0,86] -.L3855: +.L3785: + add x0, x22, :lo12:.LANCHOR3 + ldrb w1, [x0, 1336] + cbz w1, .L3794 + ldr w0, [x29, 128] + add w23, w23, w0 + and w23, w23, 65535 +.L3795: + add x21, x21, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LANCHOR3 + ldr x1, [x21, 3384] + ldr w0, [x1, 52] + add w0, w0, w23 + str w0, [x1, 52] + ldr x1, [x29, 184] + ldrh w0, [x21, 5522] + add w23, w23, w0 + ldrh w0, [x22, 1338] + and w23, w23, 65535 + strh w23, [x21, 5522] + ldrb w1, [x1, 9] + mul w0, w0, w1 + cmp w23, w0 + blt .L3796 + ldr x0, [x21, 1128] + strh wzr, [x0, 86] +.L3796: bl gc_write_completed -.L3783: - 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 + b .L3733 +.L3787: + ldr w2, [x29, 180] + cmp w2, 2 + bne .L3789 + mov w2, 13 + b .L3869 +.L3781: + ldrb w2, [x1, 1322] + cbz w2, .L3807 + ldrb w1, [x1, 1323] + cbnz w1, .L3791 +.L3790: + ldr w2, [x29, 176] + sub w2, w2, #1 +.L3792: + cmp w1, w2 + bge .L3870 + ldr x3, [x0, w1, sxtw 3] + add w1, w1, 1 + ldr x5, [x0, w1, sxtw 3] + and w1, w1, 65535 + ldrb w5, [x5, 1] + strb w5, [x3] + b .L3792 +.L3807: + mov w1, 0 + b .L3790 +.L3791: + mov w1, w23 + bl sblk_3d_mlc_prog_pages + b .L3785 +.L3794: + ldrb w1, [x0, 1322] + cbnz w1, .L3808 + add x1, x21, :lo12:.LANCHOR0 + ldrb w1, [x1, 1212] + cbz w1, .L3795 + ldrb w0, [x0, 1950] + ldrh w1, [x29, 176] + cbz w0, .L3809 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + add x0, x0, 2136 + ldrh w0, [x0, w26, sxtw 1] + cmp w0, w26 + csel w23, w23, w1, cc + b .L3795 +.L3808: + ldr w23, [x29, 156] + b .L3795 +.L3809: + mov w23, w1 + b .L3795 .size gc_do_copy_back, .-gc_do_copy_back .align 2 .global zftl_do_gc .type zftl_do_gc, %function zftl_do_gc: sub sp, sp, #128 - stp x29, x30, [sp,16] + stp x29, x30, [sp, 16] add x29, sp, 16 - stp x19, x20, [sp,32] + stp x19, x20, [sp, 32] adrp x19, .LANCHOR0 - adrp x20, .LANCHOR5 - stp x25, x26, [sp,80] - mov w26, w0 + stp x27, x28, [sp, 96] + mov w27, w0 add x0, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp,48] - stp x23, x24, [sp,64] - stp x27, x28, [sp,96] - cmp w26, 1 - ldrh w23, [x0,3380] - ldrh w22, [x0,3376] - ldr x24, [x0,1120] - add w22, w23, w22 - ldrh w25, [x0,3378] - uxth w22, w22 - beq .L3944 -.L3955: + stp x21, x22, [sp, 48] + stp x23, x24, [sp, 64] + cmp w27, 1 + stp x25, x26, [sp, 80] + adrp x20, .LANCHOR5 + ldrh w24, [x0, 3372] + ldrh w22, [x0, 3368] + ldrh w23, [x0, 3370] + add w22, w24, w22 + ldr x25, [x0, 1128] + and w22, w22, 65535 + beq .L3873 +.L3885: add x0, x20, :lo12:.LANCHOR5 - mov w1, 16 - ldrb w2, [x0,218] - cmp w2, 6 - bhi .L4140 - adrp x0, .L3947 - add x0, x0, :lo12:.L3947 - ldrh w0, [x0,w2,uxtw #1] - adr x1, .Lrtx3947 + ldrb w1, [x0, 264] + cmp w1, 6 + bhi .L4000 + adrp x0, .L3876 + add x0, x0, :lo12:.L3876 + ldrh w0, [x0,w1,uxtw #1] + adr x1, .Lrtx3876 add x0, x1, w0, sxth #2 br x0 -.Lrtx3947: +.Lrtx3876: .section .rodata .align 0 .align 2 -.L3947: - .2byte (.L3946 - .Lrtx3947) / 4 - .2byte (.L3948 - .Lrtx3947) / 4 - .2byte (.L3949 - .Lrtx3947) / 4 - .2byte (.L3950 - .Lrtx3947) / 4 - .2byte (.L3951 - .Lrtx3947) / 4 - .2byte (.L4073 - .Lrtx3947) / 4 - .2byte (.L3953 - .Lrtx3947) / 4 +.L3876: + .2byte (.L3875 - .Lrtx3876) / 4 + .2byte (.L3877 - .Lrtx3876) / 4 + .2byte (.L3878 - .Lrtx3876) / 4 + .2byte (.L3879 - .Lrtx3876) / 4 + .2byte (.L3880 - .Lrtx3876) / 4 + .2byte (.L3881 - .Lrtx3876) / 4 + .2byte (.L3882 - .Lrtx3876) / 4 .text -.L3944: +.L3881: + add x21, x19, :lo12:.LANCHOR0 + mov w23, 0 + add x21, x21, 3416 +.L3883: + bl gc_check_data_one_wl + cbz w0, .L3996 + add x19, x19, :lo12:.LANCHOR0 + add x20, x20, :lo12:.LANCHOR5 + ldr x0, [x19, 1128] + strh wzr, [x19, 3472] + ldrh w0, [x0, 80] + bl ftl_free_sblk + ldr x1, [x19, 1128] + mov w0, -1 + ldr x2, [x19, 3384] + strh w0, [x1, 80] + strh w0, [x2, 126] + strh w0, [x1, 130] + ldr x0, [x19, 3424] + bl zbuf_free + strb wzr, [x20, 264] + str xzr, [x19, 3424] + b .L4090 +.L3873: add x0, x20, :lo12:.LANCHOR5 - ldr w21, [x0,1004] - cbnz w21, .L3954 - ldr w0, [x0,1008] - cbz w0, .L3955 -.L3954: - adrp x0, .LANCHOR3+1388 - ldrh w0, [x0,#:lo12:.LANCHOR3+1388] + ldr w21, [x0, 468] + cbnz w21, .L3884 + ldr w0, [x0, 472] + cbz w0, .L3885 +.L3884: + adrp x0, .LANCHOR3+1380 + ldrh w0, [x0, #:lo12:.LANCHOR3+1380] cmp w22, w0, lsr 2 - bls .L3955 + bls .L3885 add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,3400] + ldrh w0, [x0, 3392] cmp w0, w22 - bcs .L3955 + bcs .L3885 add w21, w21, 20 bl timer_get_time cmp w21, w0 - bcs .L3956 + bcs .L3886 add x0, x20, :lo12:.LANCHOR5 - str wzr, [x0,1004] -.L3956: - add x27, x20, :lo12:.LANCHOR5 - ldr w21, [x27,1008] + str wzr, [x0, 468] +.L3886: + add x26, x20, :lo12:.LANCHOR5 + ldr w21, [x26, 472] bl timer_get_time add w21, w21, 20 cmp w21, w0 - bcs .L3957 - str wzr, [x27,1008] -.L3957: + bcs .L3887 + str wzr, [x26, 472] +.L3887: add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1120] - ldrh w0, [x0,124] - cbz w0, .L4180 - b .L3955 -.L3946: + ldr x0, [x0, 1128] + ldrh w0, [x0, 124] + cbnz w0, .L3885 +.L4000: + mov w23, 16 + b .L3872 +.L3875: add x0, x19, :lo12:.LANCHOR0 - add w23, w25, w23 - ldrh w2, [x24,80] - uxth w23, w23 - ldrh w1, [x0,3382] - ldrh w25, [x0,3384] - add w25, w25, w1 + ldrh w2, [x25, 80] + add w24, w24, w23 + and w24, w24, 65535 + ldrh w1, [x0, 3376] + ldrh w26, [x0, 3374] + add w26, w26, w1 mov w1, 65535 + and w26, w26, 65535 cmp w2, w1 - uxth w25, w25 - beq .L3958 - cbnz w26, .L3959 - ldrh w0, [x0,3400] + beq .L3888 + cbnz w27, .L3889 + ldrh w0, [x0, 3392] cmp w22, w0, lsl 1 - bge .L4180 -.L3959: + bge .L4000 +.L3889: adrp x21, .LANCHOR3 - add x26, x21, :lo12:.LANCHOR3 - add x0, x26, 1376 - ldrh w1, [x26,1386] + add x5, x21, :lo12:.LANCHOR3 + add x0, x5, 1368 + ldrh w1, [x5, 1378] add w1, w1, 1 - uxth w1, w1 - strh w1, [x26,1386] + and w1, w1, 65535 + strh w1, [x5, 1378] bl _list_get_gc_head_node - uxth w2, w0 + and w2, w0, 65535 mov w1, 65535 cmp w2, w1 - beq .L3961 + beq .L3891 add x3, x20, :lo12:.LANCHOR5 ubfiz x2, x2, 1, 16 - ldr w1, [x3,220] + ldr w1, [x3, 268] add w1, w1, 1 - str w1, [x3,220] + str w1, [x3, 268] add x3, x19, :lo12:.LANCHOR0 - ldr x4, [x3,1112] - ldrh w2, [x4,x2] - ldrh w4, [x26,1384] + ldr x4, [x3, 1120] + ldrh w2, [x4, x2] + ldrh w4, [x5, 1376] cmp w4, w2 - bcs .L3962 - ldrh w4, [x3,1088] + bcs .L3892 + ldrh w4, [x3, 1096] cmp w1, w4, lsr 4 - bls .L3961 - ldrh w1, [x3,3402] + bls .L3891 + ldrh w1, [x3, 3406] cmp w1, w2 - bls .L3961 -.L3962: - add x2, x21, :lo12:.LANCHOR3 + bls .L3891 +.L3892: + add x1, x21, :lo12:.LANCHOR3 + ldrb w2, [x1, 1337] mov w1, 0 - ldrb w2, [x2,1345] bl gc_add_sblk - cbz w0, .L3963 + cbz w0, .L3893 add x20, x20, :lo12:.LANCHOR5 mov w0, 1 - str wzr, [x20,220] - strb w0, [x20,218] - b .L4180 -.L3961: + str wzr, [x20, 268] + strb w0, [x20, 264] + b .L4000 +.L3891: add x0, x21, :lo12:.LANCHOR3 - strh wzr, [x0,1386] -.L3963: - cmp w23, 15 - mov w26, 2 - bls .L3964 - cbz w25, .L4075 + strh wzr, [x0, 1378] +.L3893: + cmp w24, 15 + bls .L4002 add x1, x19, :lo12:.LANCHOR0 add x0, x21, :lo12:.LANCHOR3 - mov w26, 1 - ldrh w1, [x1,3386] - ldrh w0, [x0,1390] + ldrh w1, [x1, 3378] + ldrh w0, [x0, 1382] cmp w1, w0 - bls .L3964 -.L4075: - mov w26, 2 -.L3964: + bhi .L4002 + cmp w26, 0 + cset w23, eq + add w23, w23, 1 +.L3894: adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L3965 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3895 add x19, x19, :lo12:.LANCHOR0 - add x1, x21, :lo12:.LANCHOR3 + mov w4, w24 mov w3, w22 - mov w4, w23 - ldr x0, [x19,1120] - ldrb w2, [x1,1345] mov w1, 2807 - ldrh w5, [x0,124] - ldrh w6, [x0,120] - ldrh w7, [x0,122] - ldrh w0, [x24,80] + ldr x0, [x19, 1128] + ldrh w7, [x0, 122] + ldrh w6, [x0, 120] + ldrh w5, [x0, 124] + add x0, x21, :lo12:.LANCHOR3 + ldrb w2, [x0, 1337] + ldrh w0, [x25, 80] str w0, [sp] adrp x0, .LC299 add x0, x0, :lo12:.LC299 bl printk -.L3965: +.L3895: add x21, x21, :lo12:.LANCHOR3 - mov w1, w26 mov w2, 1 - ldrb w0, [x21,1345] + mov w1, w23 + ldrb w0, [x21, 1337] bl gc_search_src_blk - cmp w0, wzr - ble .L3966 -.L3967: + cmp w0, 0 + ble .L3896 +.L3897: add x20, x20, :lo12:.LANCHOR5 mov w0, 1 - b .L4182 -.L3966: - ldrb w0, [x21,1345] - mov w1, 3 +.L4092: + strb w0, [x20, 264] + b .L4000 +.L4002: + mov w23, 2 + b .L3894 +.L3896: + ldrb w0, [x21, 1337] mov w2, 1 + mov w1, 3 bl gc_search_src_blk - cmp w0, wzr - bgt .L3967 - b .L4180 -.L3958: - cmp w26, 1 - bne .L3968 - ldr x1, [x0,3392] - ldrh w1, [x1,150] - cbz w1, .L3969 - ldrh w0, [x0,3380] + cmp w0, 0 + bgt .L3897 + b .L4000 +.L3888: + cmp w27, 1 + bne .L3898 + ldr x1, [x0, 3384] + ldrh w1, [x1, 150] + cbz w1, .L3899 + ldrh w0, [x0, 3372] cmp w0, 8 - bls .L3969 + bls .L3899 bl gc_ink_check_sblk -.L3969: +.L3899: bl gc_scan_static_data adrp x21, .LANCHOR3 add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1120] - ldrh w0, [x0,122] - cbz w0, .L3970 -.L3971: + ldr x0, [x0, 1128] + ldrh w0, [x0, 122] + cbz w0, .L3900 +.L3901: add x21, x21, :lo12:.LANCHOR3 mov w0, 1 add x20, x20, :lo12:.LANCHOR5 - strb w0, [x21,1345] -.L4182: - strb w0, [x20,218] - b .L4180 -.L3970: + strb w0, [x21, 1337] + b .L4092 +.L3900: bl gc_static_wearleveling - cbnz w0, .L3971 + mov w23, w0 + cbnz w0, .L3901 bl gc_block_vpn_scan - cbz w23, .L3972 - cmp w22, w25 - bcs .L3973 + cbz w24, .L3902 + cmp w22, w26 + bcs .L3903 add x0, x21, :lo12:.LANCHOR3 - ldrh w0, [x0,1388] + ldrh w0, [x0, 1380] cmp w0, w22 - bhi .L3974 -.L3973: + bhi .L3904 +.L3903: add x1, x21, :lo12:.LANCHOR3 - add w0, w22, w25 - ldrh w2, [x1,1388] + add w0, w22, w26 + ldrh w2, [x1, 1380] cmp w0, w2 - blt .L3974 + blt .L3904 add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x0,3386] - ldrh w0, [x1,1390] + ldrh w2, [x0, 3378] + ldrh w0, [x1, 1382] cmp w2, w0 - bcc .L3972 -.L3974: - add x24, x21, :lo12:.LANCHOR3 + bcc .L3902 +.L3904: + add x5, x21, :lo12:.LANCHOR3 mov w0, 1 - strb w0, [x24,1345] + strb w0, [x5, 1337] mov w0, 16 bl zftl_get_gc_node.part.10 - uxth w1, w0 + and w1, w0, 65535 mov w2, 65535 cmp w1, w2 - beq .L3975 + beq .L3905 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] + ldr x3, [x2, 1120] add x2, x20, :lo12:.LANCHOR5 - ldrh w3, [x3,x1] - ldrh w1, [x2,224] + ldrh w3, [x3, x1] + ldrh w1, [x2, 272] cmp w3, w1 - bcs .L3975 + bcs .L3905 cmp w22, 2 - bls .L3975 - str wzr, [x2,220] + bls .L3905 + str wzr, [x2, 268] mov w1, 1 + strb wzr, [x5, 1337] mov w2, 0 - strb wzr, [x24,1345] bl gc_add_sblk - cbnz w0, .L3967 -.L3975: - add x24, x21, :lo12:.LANCHOR3 + cbnz w0, .L3897 +.L3905: + add x5, x21, :lo12:.LANCHOR3 mov w1, 0 - add x0, x24, 1368 + add x0, x5, 1360 bl _list_get_gc_head_node - uxth w1, w0 + and w1, w0, 65535 mov w2, 65535 cmp w1, w2 - beq .L3976 + beq .L3906 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] + ldr x3, [x2, 1120] add x2, x20, :lo12:.LANCHOR5 - ldrh w3, [x3,x1] - ldrh w1, [x2,224] + ldrh w3, [x3, x1] + ldrh w1, [x2, 272] cmp w3, w1 - bcs .L3976 + bcs .L3906 cmp w22, 2 - bls .L3976 - str wzr, [x2,220] + bls .L3906 + str wzr, [x2, 268] mov w1, 1 + strb wzr, [x5, 1337] mov w2, 0 - strb wzr, [x24,1345] bl gc_add_sblk - cbnz w0, .L3967 -.L3976: + cbnz w0, .L3897 +.L3906: add x1, x20, :lo12:.LANCHOR5 add x2, x21, :lo12:.LANCHOR3 - ldrh w0, [x1,224] - ldrh w24, [x2,1384] + ldrh w0, [x1, 272] + ldrh w8, [x2, 1376] add w0, w0, 1 - uxth w0, w0 - strh w0, [x1,224] - cmp w0, w24, lsr 5 - bls .L3977 + and w0, w0, 65535 + strh w0, [x1, 272] + cmp w0, w8, lsr 5 + bls .L3907 mov w0, 4 - strh w0, [x1,224] -.L3977: - add x28, x20, :lo12:.LANCHOR5 - add x2, x19, :lo12:.LANCHOR0 - add x27, x21, :lo12:.LANCHOR3 - ldr w0, [x28,220] - ldrh w1, [x2,1088] + strh w0, [x1, 272] +.L3907: + add x6, x20, :lo12:.LANCHOR5 + add x7, x19, :lo12:.LANCHOR0 + add x5, x21, :lo12:.LANCHOR3 + ldr w0, [x6, 268] + ldrh w1, [x7, 1096] add w0, w0, 1 - strh wzr, [x27,1360] - str w0, [x28,220] - strh wzr, [x27,1362] + strh wzr, [x5, 1352] + strh wzr, [x5, 1354] + strh wzr, [x5, 1356] cmp w0, w1, lsr 5 - strh wzr, [x27,1364] - bls .L3978 - ldrh w0, [x2,3386] - cmp w0, w23 - bls .L3978 + str w0, [x6, 268] + bls .L3908 + ldrh w0, [x7, 3378] + cmp w0, w24 + bls .L3908 mov w1, 0 - add x0, x27, 1376 - str x2, [x29,104] + add x0, x5, 1368 bl _list_get_gc_head_node - uxth w0, w0 + and w0, w0, 65535 mov w1, 65535 cmp w0, w1 - beq .L4174 - ldr x2, [x29,104] + bne .L3909 +.L4082: + mov w23, 16 + b .L3910 +.L3909: + ldr x1, [x7, 1120] ubfiz x0, x0, 1, 16 - ldr x1, [x2,1112] - ldrh w1, [x1,x0] - ldrb w0, [x27,1329] - mul w0, w24, w0 - mov w24, 16 + ldrh w1, [x1, x0] + ldrb w0, [x5, 1321] + mul w0, w0, w8 cmp w1, w0 - bgt .L3984 - str wzr, [x28,220] + bgt .L4082 + ldrb w0, [x5, 1337] + mov w2, 4 mov w1, 2 - ldrb w0, [x27,1345] - b .L4173 -.L3978: + str wzr, [x6, 268] +.L4081: + bl gc_search_src_blk + and w0, w0, 65535 + cbz w0, .L4082 + b .L3897 +.L3908: add x0, x19, :lo12:.LANCHOR0 - add x1, x21, :lo12:.LANCHOR3 - ldrh w3, [x0,3386] - ldrh w2, [x1,1390] - cmp w3, w2 - bcc .L3981 - ldrb w0, [x1,1345] + add x3, x21, :lo12:.LANCHOR3 + ldrh w2, [x0, 3378] + ldrh w1, [x3, 1382] + cmp w2, w1 + bcc .L3913 mov w2, 1 mov w1, 2 - b .L4172 -.L3981: - ldrh w1, [x0,3382] - cbnz w1, .L3982 - ldrh w1, [x0,3384] + ldrb w0, [x3, 1337] + b .L4081 +.L3913: + ldrh w1, [x0, 3374] + cbnz w1, .L3914 + ldrh w1, [x0, 3376] cmp w1, 8 - bls .L3983 -.L3982: + bls .L3915 +.L3914: add x21, x21, :lo12:.LANCHOR3 - mov w1, 1 - ldrb w0, [x21,1345] -.L4173: mov w2, 4 -.L4172: - bl gc_search_src_blk - uxth w0, w0 - cbnz w0, .L3967 - b .L4174 -.L3983: - ldrh w0, [x0,5534] - mov w24, 16 - cmp w0, wzr - csel w24, w24, wzr, ne - b .L3984 -.L3972: - add x21, x21, :lo12:.LANCHOR3 - add x0, x20, :lo12:.LANCHOR5 - ldrh w2, [x21,1384] - ldrh w1, [x0,224] - cmp w1, w2, lsr 5 - bcc .L4174 - mov w1, 4 - strh w1, [x0,224] -.L4174: - mov w24, 16 - b .L3984 -.L3968: - ldrh w1, [x0,3400] - cmp w1, w22 - bcs .L4174 - ldr x0, [x0,1120] - ldrh w0, [x0,124] - cbz w0, .L4180 - b .L4174 -.L3984: + mov w1, 1 + ldrb w0, [x21, 1337] + b .L4081 +.L3915: + ldrh w0, [x0, 5526] + cbnz w0, .L4082 +.L3910: add x0, x19, :lo12:.LANCHOR0 adrp x21, .LANCHOR3 - ldr w1, [x0,3412] - cbz w1, .L3986 - str wzr, [x0,3412] - cmp w22, 15 + ldr w1, [x0, 3396] + cbz w1, .L3916 + str wzr, [x0, 3396] + cmp w24, 0 + ccmp w22, 15, 2, ne add x0, x21, :lo12:.LANCHOR3 - bhi .L4083 - cbnz w23, .L3987 -.L4083: - strb wzr, [x0,1345] - b .L3989 -.L3987: - mov w1, 1 - strb w1, [x0,1345] -.L3989: - add x27, x21, :lo12:.LANCHOR3 + bls .L3917 + strb wzr, [x0, 1337] +.L3918: + add x5, x21, :lo12:.LANCHOR3 mov w1, 0 - add x0, x27, 1376 + add x0, x5, 1368 bl _list_get_gc_head_node - uxth w1, w0 + and w1, w0, 65535 mov w2, 65535 cmp w1, w2 - beq .L3990 + beq .L3919 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] - ldrh w1, [x3,x1] + ldr x3, [x2, 1120] + ldrh w1, [x3, x1] cmp w1, 8 - bhi .L3990 + bhi .L3919 mov w1, 1 - str w1, [x2,3412] - ldrb w2, [x27,1345] + str w1, [x2, 3396] + ldrb w2, [x5, 1337] mov w1, 0 bl gc_add_sblk - cbnz w0, .L3967 -.L3990: - add x27, x21, :lo12:.LANCHOR3 + cbnz w0, .L3897 +.L3919: + add x5, x21, :lo12:.LANCHOR3 mov w1, 0 - add x0, x27, 1368 + add x0, x5, 1360 bl _list_get_gc_head_node - uxth w1, w0 + and w1, w0, 65535 mov w2, 65535 cmp w1, w2 - beq .L3991 + beq .L3920 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] - ldrh w1, [x3,x1] + ldr x3, [x2, 1120] + ldrh w1, [x3, x1] cmp w1, 4 - bhi .L3991 + bhi .L3920 mov w1, 1 - str w1, [x2,3412] - ldrb w2, [x27,1345] + str w1, [x2, 3396] + ldrb w2, [x5, 1337] mov w1, 0 bl gc_add_sblk - cbnz w0, .L3967 -.L3991: + cbnz w0, .L3897 +.L3920: mov w0, 0 bl zftl_get_gc_node.part.10 - uxth w1, w0 + and w1, w0, 65535 mov w2, 65535 cmp w1, w2 - beq .L3986 + beq .L3916 add x2, x19, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 - ldr x3, [x2,1112] - ldrh w1, [x3,x1] + ldr x3, [x2, 1120] + ldrh w1, [x3, x1] cmp w1, 4 - bhi .L3986 + bhi .L3916 mov w1, 1 - str w1, [x2,3412] + str w1, [x2, 3396] add x2, x21, :lo12:.LANCHOR3 - ldrb w2, [x2,1345] + ldrb w2, [x2, 1337] bl gc_add_sblk - cbnz w0, .L3967 -.L3986: + cbnz w0, .L3897 +.L3916: add x28, x19, :lo12:.LANCHOR0 - add x27, x21, :lo12:.LANCHOR3 + add x25, x21, :lo12:.LANCHOR3 mov w1, 1 - ldr x0, [x28,1120] - strb w1, [x27,1345] - ldrh w3, [x0,124] - cbz w3, .L3992 + ldr x0, [x28, 1128] + strb w1, [x25, 1337] + ldrh w0, [x0, 124] + cbz w0, .L3921 add x20, x20, :lo12:.LANCHOR5 - strb wzr, [x27,1345] - strb w1, [x20,218] - b .L3993 -.L3992: - ldrh w0, [x28,3400] + strb wzr, [x25, 1337] + strb w1, [x20, 264] +.L3872: + mov w0, w23 + 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, 128 + ret +.L3902: + add x21, x21, :lo12:.LANCHOR3 + add x0, x20, :lo12:.LANCHOR5 + ldrh w2, [x21, 1376] + ldrh w1, [x0, 272] + cmp w1, w2, lsr 5 + bcc .L4082 + mov w1, 4 + strh w1, [x0, 272] + b .L4082 +.L3898: + ldrh w1, [x0, 3392] + cmp w1, w22 + bcs .L4082 + ldr x0, [x0, 1128] + ldrh w0, [x0, 124] + cbz w0, .L4000 + b .L4082 +.L3917: + mov w1, 1 + strb w1, [x0, 1337] + b .L3918 +.L3921: + ldrh w0, [x28, 3392] cmp w22, w0 - bcs .L3994 - cbz w23, .L3995 - cmp w23, 16 - bls .L3996 - ldrh w2, [x28,3386] - ldrh w0, [x27,1390] + bcs .L3922 + cbz w24, .L3923 + cmp w24, 16 + bls .L3924 + ldrh w2, [x28, 3378] + ldrh w0, [x25, 1382] cmp w2, w0 - bhi .L3996 - mov w0, w1 + bhi .L3924 mov w2, 4 - str x3, [x29,104] + mov w0, w1 bl gc_search_src_blk - uxth w0, w0 - ldr x3, [x29,104] - cbz w0, .L4179 - mov w1, w3 - add x0, x27, 1376 + tst w0, 65535 + bne .L3925 +.L4089: + mov w2, 4 + mov w1, 3 + ldrb w0, [x25, 1337] + b .L4084 +.L3925: + mov w1, 0 + add x0, x25, 1368 bl _list_get_gc_head_node - uxth w2, w0 + and w2, w0, 65535 mov w1, 65535 cmp w2, w1 - beq .L4070 + beq .L3928 add x3, x20, :lo12:.LANCHOR5 ubfiz x2, x2, 1, 16 - ldr w1, [x3,220] + ldr w1, [x3, 268] add w1, w1, 1 - str w1, [x3,220] - ldr x3, [x28,1112] - ldrh w2, [x3,x2] - ldrh w3, [x27,1384] + str w1, [x3, 268] + ldr x3, [x28, 1120] + ldrh w2, [x3, x2] + ldrh w3, [x25, 1376] cmp w3, w2 - bcs .L4000 - ldrh w3, [x28,1088] + bcs .L3929 + ldrh w3, [x28, 1096] cmp w1, w3, lsr 4 - bls .L4070 - ldrh w1, [x28,3402] + bls .L3928 + ldrh w1, [x28, 3406] cmp w1, w2 - bls .L4070 -.L4000: + bls .L3928 +.L3929: add x21, x21, :lo12:.LANCHOR3 - mov w1, 0 add x19, x19, :lo12:.LANCHOR0 - ldrb w2, [x21,1345] + mov w1, 0 + ldrb w2, [x21, 1337] bl gc_add_sblk mov w0, 1 - str w0, [x19,3412] + str w0, [x19, 3396] add x0, x20, :lo12:.LANCHOR5 - str wzr, [x0,220] - b .L4070 -.L3996: + str wzr, [x0, 268] +.L3928: + add x20, x20, :lo12:.LANCHOR5 mov w0, 1 - mov w1, 2 - mov w2, w0 - bl gc_search_src_blk - uxth w0, w0 - cbnz w0, .L4070 - add x21, x21, :lo12:.LANCHOR3 - ldrb w0, [x21,1345] - b .L4176 -.L3995: - strb w23, [x27,1345] - cmp w22, 16 - mov w0, w23 - bhi .L4176 - mov w2, w1 - bl gc_search_src_blk - uxth w0, w0 - cbnz w0, .L4070 -.L4179: - ldrb w0, [x27,1345] -.L4176: - mov w1, 3 - mov w2, 4 - bl gc_search_src_blk - uxth w0, w0 - b .L3998 -.L3994: - cmp w26, 1 - mov w1, w24 - bne .L4140 - cmp w22, w0, lsl 1 - bge .L4003 - cmp w25, w23, lsr 1 - bcs .L4004 - ldrh w2, [x28,3386] - ldrh w0, [x27,1390] - cmp w2, w0 - bcs .L4004 - ldrh w0, [x27,1388] - lsr w0, w0, 2 - strh w0, [x28,3400] - b .L4140 -.L4004: - mov w0, 8 - bl zftl_get_gc_node.part.10 - uxth w1, w0 - mov w2, 65535 - cmp w1, w2 - beq .L4005 - add x2, x19, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldr x2, [x2,1112] - ldrh w1, [x2,x1] - cmp w1, 3 - bhi .L4005 - cbz w22, .L4005 - add x1, x21, :lo12:.LANCHOR3 - mov w2, 0 - strb wzr, [x1,1345] - mov w1, 1 - bl gc_add_sblk - cbnz w0, .L4070 -.L4005: - add x4, x21, :lo12:.LANCHOR3 - mov w1, 0 - add x0, x4, 1376 - str x4, [x29,104] - bl _list_get_gc_head_node - uxth w26, w0 - mov w1, 65535 - mov w28, w26 - cmp w26, w1 - ldr x4, [x29,104] - bne .L4006 -.L4011: - cmp w23, 1 - bhi .L4007 - b .L4008 -.L4006: - add x27, x20, :lo12:.LANCHOR5 - add x2, x19, :lo12:.LANCHOR0 - uxtw x26, w26 - ldr w1, [x27,220] - ldrh w3, [x2,1088] - add w1, w1, 1 - str w1, [x27,220] - cmp w1, w3, lsr 4 - bls .L4009 - ldr x1, [x2,1112] - str wzr, [x27,220] - ldrh w3, [x1,x26,lsl 1] - ldrh w1, [x2,3402] - cmp w3, w1 - bcs .L4009 - mov w3, 1 - mov w1, 0 + strb w0, [x20, 264] + b .L3872 +.L3924: mov w2, 1 - strb w3, [x4,1345] - str x3, [x29,104] - bl gc_add_sblk - ldr x3, [x29,104] - cbz w0, .L4009 - strb w3, [x27,218] - b .L3993 -.L4009: - add x1, x19, :lo12:.LANCHOR0 - add x3, x21, :lo12:.LANCHOR3 - ldr x0, [x1,1112] - ldrh w2, [x0,x26,lsl 1] - ldrh w0, [x3,1384] - cmp w2, w0, lsr 1 - bhi .L4010 - mov w0, w28 - mov w1, 1 - mov w2, 0 - bl gc_add_sblk - b .L4070 -.L4010: - ldrh w4, [x1,3382] - ldrh w0, [x1,3384] - ldrh w3, [x3,1388] - add w0, w4, w0 - cmp w0, w3, lsl 1 - ble .L4011 - ldrh w0, [x1,3402] - cmp w0, w2 - bcc .L4008 - b .L4011 -.L4007: - add x26, x21, :lo12:.LANCHOR3 - mov w0, 1 - cmp w23, 16 - strb w0, [x26,1345] - bls .L4012 - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1,3386] - ldrh w1, [x26,1390] - cmp w2, w1 - bhi .L4012 - mov w1, w0 - mov w2, 4 - bl gc_search_src_blk - uxth w0, w0 - cbnz w0, .L4013 - ldrb w0, [x26,1345] - b .L4175 -.L4012: - mov w0, 1 mov w1, 2 - mov w2, w0 + mov w0, w2 bl gc_search_src_blk - uxth w0, w0 - cbnz w0, .L4013 - add x0, x21, :lo12:.LANCHOR3 - ldrb w0, [x0,1345] -.L4175: - mov w1, 3 + tst w0, 65535 + bne .L3928 + add x21, x21, :lo12:.LANCHOR3 mov w2, 4 + mov w1, 3 + ldrb w0, [x21, 1337] +.L4084: bl gc_search_src_blk - uxth w0, w0 -.L4013: - add x21, x21, :lo12:.LANCHOR3 - cmp w22, w25, lsr 1 - add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x21,1388] - bls .L4177 - lsr w1, w1, 2 - b .L4178 -.L4008: - cmp w22, w25 - bcs .L4015 - add x21, x21, :lo12:.LANCHOR3 - mov w0, 4 - add x19, x19, :lo12:.LANCHOR0 - strb wzr, [x21,1345] - bl zftl_get_gc_node.part.10 - mov w1, 65535 - uxth w0, w0 - cmp w0, w1 - beq .L4184 - ubfiz x0, x0, 1, 16 - ldr x1, [x19,1112] - ldrb w2, [x21,1329] - ldrh w1, [x1,x0] - ldrh w0, [x21,1384] - mul w0, w0, w2 - cmp w1, w0, lsr 1 - bgt .L4184 + and w0, w0, 65535 +.L3926: + cbnz w0, .L3928 + b .L3872 +.L3923: + strb wzr, [x25, 1337] + cmp w22, 16 + bls .L3931 + mov w2, 4 mov w1, 3 mov w0, 0 - mov w2, 4 + b .L4084 +.L3931: + mov w2, w1 + mov w0, 0 bl gc_search_src_blk - uxth w0, w0 - ldrh w1, [x21,1388] -.L4177: + tst w0, 65535 + bne .L3928 + b .L4089 +.L3922: + cmp w27, 1 + bne .L3872 + cmp w22, w0, lsl 1 + bge .L3932 + cmp w26, w24, lsr 1 + bcs .L3933 + ldrh w1, [x28, 3378] + ldrh w0, [x25, 1382] + cmp w1, w0 + bcs .L3933 + ldrh w0, [x25, 1380] + lsr w0, w0, 2 + strh w0, [x28, 3392] + b .L3872 +.L3933: + mov w0, 8 + bl zftl_get_gc_node.part.10 + and w1, w0, 65535 + mov w2, 65535 + cmp w1, w2 + beq .L3934 + add x2, x19, :lo12:.LANCHOR0 + ubfiz x1, x1, 1, 16 + ldr x2, [x2, 1120] + ldrh w1, [x2, x1] + cmp w1, 3 + bhi .L3934 + cbz w22, .L3934 + add x1, x21, :lo12:.LANCHOR3 + mov w2, 0 + strb wzr, [x1, 1337] + mov w1, 1 + bl gc_add_sblk + cbnz w0, .L3928 +.L3934: + add x5, x21, :lo12:.LANCHOR3 + mov w1, 0 + add x0, x5, 1368 + bl _list_get_gc_head_node + and w25, w0, 65535 + mov w1, 65535 + mov w28, w25 + cmp w25, w1 + bne .L3935 +.L3940: + cmp w24, 1 + bhi .L3936 +.L3937: + cmp w22, w26 + bcs .L3944 + add x21, x21, :lo12:.LANCHOR3 + mov w0, 4 + add x19, x19, :lo12:.LANCHOR0 + strb wzr, [x21, 1337] + bl zftl_get_gc_node.part.10 + and w0, w0, 65535 + mov w1, 65535 + cmp w0, w1 + beq .L4088 + ldr x1, [x19, 1120] + ubfiz x0, x0, 1, 16 + ldrb w2, [x21, 1321] + ldrh w1, [x1, x0] + ldrh w0, [x21, 1376] + mul w0, w0, w2 + cmp w1, w0, lsr 1 + ble .L3946 +.L4088: + ldrh w0, [x21, 1380] + lsr w0, w0, 2 + strh w0, [x19, 3392] + b .L3872 +.L3935: + add x27, x20, :lo12:.LANCHOR5 + add x2, x19, :lo12:.LANCHOR0 + uxtw x25, w25 + ldr w1, [x27, 268] + ldrh w3, [x2, 1096] + add w1, w1, 1 + str w1, [x27, 268] + cmp w1, w3, lsr 4 + bls .L3938 + ldr x1, [x2, 1120] + str wzr, [x27, 268] + ldrh w3, [x1, x25, lsl 1] + ldrh w1, [x2, 3406] + cmp w3, w1 + bcs .L3938 + mov w3, 1 + mov w2, 1 + strb w3, [x5, 1337] + mov w1, 0 + str w3, [x29, 108] + bl gc_add_sblk + ldr w3, [x29, 108] + cbz w0, .L3938 + strb w3, [x27, 264] + b .L3872 +.L3938: + add x0, x19, :lo12:.LANCHOR0 + add x3, x21, :lo12:.LANCHOR3 + ldr x1, [x0, 1120] + ldrh w2, [x1, x25, lsl 1] + ldrh w1, [x3, 1376] + cmp w2, w1, lsr 1 + bhi .L3939 + mov w2, 0 + mov w1, 1 + mov w0, w28 + bl gc_add_sblk + b .L3928 +.L3939: + ldrh w1, [x0, 3374] + ldrh w4, [x0, 3376] + ldrh w3, [x3, 1380] + add w1, w1, w4 + cmp w1, w3, lsl 1 + ble .L3940 + ldrh w0, [x0, 3406] + cmp w0, w2 + bcc .L3937 + b .L3940 +.L3936: + add x25, x21, :lo12:.LANCHOR3 + mov w1, 1 + cmp w24, 16 + strb w1, [x25, 1337] + bls .L3941 + add x0, x19, :lo12:.LANCHOR0 + ldrh w2, [x0, 3378] + ldrh w0, [x25, 1382] + cmp w2, w0 + bhi .L3941 + mov w2, 4 + mov w0, w1 + bl gc_search_src_blk + ands w0, w0, 65535 + bne .L3942 + ldrb w0, [x25, 1337] + mov w2, 4 + mov w1, 3 +.L4083: + bl gc_search_src_blk + and w0, w0, 65535 +.L3942: + add x21, x21, :lo12:.LANCHOR3 + add x19, x19, :lo12:.LANCHOR0 + cmp w22, w26, lsr 1 + ldrh w1, [x21, 1380] + bls .L4085 + lsr w1, w1, 2 +.L4086: + strh w1, [x19, 3392] + b .L3926 +.L3941: + mov w2, 1 + mov w1, 2 + mov w0, w2 + bl gc_search_src_blk + ands w0, w0, 65535 + bne .L3942 + add x0, x21, :lo12:.LANCHOR3 + mov w2, 4 + mov w1, 3 + ldrb w0, [x0, 1337] + b .L4083 +.L3946: + mov w1, 3 + mov w2, 4 + mov w0, 0 + bl gc_search_src_blk + ldrh w1, [x21, 1380] + and w0, w0, 65535 +.L4085: lsr w1, w1, 1 -.L4178: - strh w1, [x19,3400] - b .L3998 -.L4015: + b .L4086 +.L3944: add x19, x19, :lo12:.LANCHOR0 add x21, x21, :lo12:.LANCHOR3 -.L4184: - ldrh w0, [x21,1388] + b .L4088 +.L3932: + ldrh w0, [x25, 1380] lsr w0, w0, 2 - strh w0, [x19,3400] - b .L3993 -.L4003: - ldrh w0, [x27,1388] - lsr w0, w0, 2 - strh w0, [x28,3400] - ldrh w0, [x28,5534] - cmp w0, wzr - csel w24, w24, wzr, ne - b .L3993 -.L3998: - mov w1, w24 - cbz w0, .L4140 -.L4070: - add x20, x20, :lo12:.LANCHOR5 - mov w0, 1 - strb w0, [x20,218] - b .L3993 -.L3948: - add x21, x19, :lo12:.LANCHOR0 + strh w0, [x28, 3392] + ldrh w0, [x28, 5526] + cmp w0, 0 + csel w23, w23, wzr, ne + b .L3872 +.L3877: + add x6, x19, :lo12:.LANCHOR0 mov w0, 65535 - ldrh w1, [x21,3424] + ldrh w1, [x6, 3416] cmp w1, w0 - bne .L4018 + bne .L3947 bl gc_get_src_blk - strh w0, [x21,3424] -.L4018: + strh w0, [x6, 3416] +.L3947: add x0, x19, :lo12:.LANCHOR0 mov w2, 65535 - ldrh w1, [x0,3424] + ldrh w1, [x0, 3416] cmp w1, w2 - beq .L4019 - ldrh w2, [x0,1088] + beq .L3948 + ldrh w2, [x0, 1096] cmp w2, w1 - bhi .L4019 + bhi .L3948 mov w1, -1 - strh w1, [x0,3424] -.L4019: + strh w1, [x0, 3416] +.L3948: add x0, x19, :lo12:.LANCHOR0 mov w2, 65535 - add x1, x0, 3424 - ldrh w3, [x0,3424] + ldrh w3, [x0, 3416] cmp w3, w2 - beq .L4181 - ldrh w5, [x1,56] + beq .L4091 + ldrh w5, [x0, 3472] uxtw x4, w3 - ldr x2, [x0,1096] + ldr x2, [x0, 1104] add x2, x2, x4, lsl 2 - cbz w5, .L4022 - mov x0, 0 -.L4021: - cmp w5, w0, uxth - bls .L4022 - add x0, x0, 1 - add x6, x1, x0, lsl 1 - ldrh w6, [x6,56] + cbz w5, .L3950 + add x0, x0, 3474 + mov w1, 0 +.L3952: + ldrh w6, [x0], 2 cmp w6, w3 - bne .L4021 -.L4027: + bne .L3951 +.L3956: add x19, x19, :lo12:.LANCHOR0 mov w0, -1 - strh w0, [x19,3424] - b .L4180 -.L4022: - ldrb w0, [x2,2] + strh w0, [x19, 3416] + b .L4000 +.L3951: + add w1, w1, 1 + and w1, w1, 65535 + cmp w5, w1 + bne .L3952 +.L3950: + ldrb w0, [x2, 2] + and w1, w0, 224 + cmp w1, 224 + beq .L3953 tst w0, 192 - beq .L4084 - and w0, w0, 224 - cmp w0, 224 - bne .L4024 -.L4084: + bne .L3954 +.L3953: add x0, x19, :lo12:.LANCHOR0 - ldr x0, [x0,1112] - ldrh w0, [x0,x4,lsl 1] - cbz w0, .L4027 + ldr x0, [x0, 1120] + ldrh w0, [x0, x4, lsl 1] + cbz w0, .L3956 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3306 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L4027 -.L4024: + b .L3956 +.L3954: add x20, x20, :lo12:.LANCHOR5 mov w0, 2 - b .L4182 -.L3949: + b .L4092 +.L3878: bl gc_scan_src_blk cmn w0, #1 - bne .L4028 + bne .L3957 add x20, x20, :lo12:.LANCHOR5 mov w0, 3 - b .L4182 -.L4028: + b .L4092 +.L3957: add x1, x19, :lo12:.LANCHOR0 mov w3, 65535 - ldrh w0, [x1,3424] + ldrh w0, [x1, 3416] cmp w0, w3 - beq .L3967 - ldrh w3, [x1,3448] + beq .L3897 + ldrh w3, [x1, 3440] add x20, x20, :lo12:.LANCHOR5 - cbz w3, .L4029 + cbz w3, .L3958 mov w0, 4 - strh wzr, [x1,3450] - strb w0, [x20,218] - b .L4180 -.L4029: + strh wzr, [x1, 3442] + strb w0, [x20, 264] + b .L4000 +.L3958: + ldr x1, [x1, 1120] ubfiz x0, x0, 1, 16 - ldr x1, [x1,1112] mov w2, 1 - strb w2, [x20,218] - ldrh w0, [x1,x0] - cbz w0, .L4030 + strb w2, [x20, 264] + ldrh w0, [x1, x0] + cbz w0, .L3959 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3336 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L4030: +.L3959: add x20, x19, :lo12:.LANCHOR0 - add x21, x20, 3424 - ldrh w0, [x20,3424] + add x21, x20, 3416 + ldrh w0, [x20, 3416] bl ftl_free_sblk - ldr x0, [x20,1112] - ldrh w1, [x20,3424] - strh wzr, [x0,x1,lsl 1] - ldrh w0, [x21,30] + ldr x0, [x20, 1120] + ldrh w1, [x20, 3416] + strh wzr, [x0, x1, lsl 1] + ldrh w0, [x21, 30] add w0, w0, 1 - uxth w0, w0 + and w0, w0, 65535 cmp w0, 8 - bhi .L4031 - strh w0, [x21,30] - b .L4027 -.L4031: - strh wzr, [x21,30] + bhi .L3960 + strh w0, [x21, 30] + b .L3956 +.L3960: + strh wzr, [x21, 30] bl ftl_flush bl pm_flush bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush - b .L4027 -.L3950: - add x21, x19, :lo12:.LANCHOR0 - adrp x23, .LANCHOR3 -.L4141: + b .L3956 +.L3879: + add x23, x19, :lo12:.LANCHOR0 + adrp x24, .LANCHOR3 + add x21, x23, 3416 + add x24, x24, :lo12:.LANCHOR3 +.L4053: bl gc_scan_src_blk_one_page - ldrh w2, [x21,3426] - add x0, x21, 3424 - add x1, x23, :lo12:.LANCHOR3 - ldrh w1, [x1,1384] - cmp w2, w1 - bcs .L4033 + ldrh w1, [x21, 2] + ldrh w0, [x24, 1376] + cmp w1, w0 + bcs .L3962 cmp w22, 7 - bls .L4141 - b .L4180 -.L4033: - ldrh w3, [x0,24] - cbz w3, .L4034 + bls .L4053 + b .L4000 +.L3962: + ldrh w3, [x21, 24] + ldrh w1, [x21] + cbz w3, .L3963 add x20, x20, :lo12:.LANCHOR5 - mov w1, 4 - strh wzr, [x0,26] - ldr x2, [x21,1112] - strb w1, [x20,218] - ldrh w1, [x0] + mov w0, 4 + ldr x2, [x23, 1120] + strh wzr, [x21, 26] + strb w0, [x20, 264] ubfiz x0, x1, 1, 16 - ldrh w2, [x2,x0] - cmp w2, w3 - beq .L4035 + ldrh w2, [x2, x0] + cmp w3, w2 + beq .L3964 adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 10, .L4035 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 10, .L3964 adrp x0, .LC300 add x0, x0, :lo12:.LC300 bl printk -.L4035: +.L3964: add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x0,3424] - ldr x1, [x0,1112] - ldrh w0, [x0,3448] - ldrh w1, [x1,x2,lsl 1] + ldrh w2, [x0, 3416] + ldr x1, [x0, 1120] + ldrh w0, [x0, 3440] + ldrh w1, [x1, x2, lsl 1] cmp w1, w0 - beq .L4036 + beq .L3965 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3379 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L4036: +.L3965: add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x19,3424] - ldr x0, [x19,1112] - ldrh w2, [x19,3448] - strh w2, [x0,x1,lsl 1] - b .L4180 -.L4034: + ldrh w1, [x19, 3416] + ldr x0, [x19, 1120] + ldrh w2, [x19, 3440] + strh w2, [x0, x1, lsl 1] + b .L4000 +.L3963: add x20, x20, :lo12:.LANCHOR5 - ldrh w1, [x0] mov w0, 1 - ldr x21, [x21,1096] - add x21, x21, w1, uxth 2 - strb w0, [x20,218] + ldr x21, [x23, 1104] + strb w0, [x20, 264] adrp x0, .LANCHOR2 - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 8, .L4037 - ldrb w2, [x21,2] + add x21, x21, w1, uxth 2 + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 8, .L3966 + ldrb w2, [x21, 2] adrp x0, .LC301 add x0, x0, :lo12:.LC301 ubfx x2, x2, 5, 3 bl printk -.L4037: - ldrb w0, [x21,2] +.L3966: + ldrb w0, [x21, 2] + and w1, w0, 224 + cmp w1, 224 + beq .L3967 tst w0, 192 - beq .L4085 - and w0, w0, 224 - cmp w0, 224 - bne .L4038 -.L4085: + bne .L3968 +.L3967: adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3389 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L4038: +.L3968: add x19, x19, :lo12:.LANCHOR0 - add x20, x19, 3424 - ldrh w0, [x19,3424] + add x20, x19, 3416 + ldrh w0, [x19, 3416] bl ftl_free_sblk mov w0, -1 - strh w0, [x19,3424] - ldrh w0, [x20,30] + strh w0, [x19, 3416] + ldrh w0, [x20, 30] add w0, w0, 1 - uxth w0, w0 + and w0, w0, 65535 cmp w0, 8 - bhi .L4040 - strh w0, [x20,30] - b .L4180 -.L4040: - strh wzr, [x20,30] - b .L4183 -.L3951: - cbnz w26, .L4041 + bhi .L3969 + strh w0, [x20, 30] + b .L4000 +.L3969: + strh wzr, [x20, 30] +.L4090: + bl flt_sys_flush + b .L4000 +.L3880: + cbnz w27, .L3970 add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,3400] + ldrh w0, [x0, 3392] cmp w0, w22 - bcc .L4180 -.L4041: - ldrh w1, [x24,80] + bcc .L4000 +.L3970: + ldrh w1, [x25, 80] mov w0, 65535 cmp w1, w0 - bne .L4042 + bne .L3971 adrp x21, .LANCHOR3 add x0, x21, :lo12:.LANCHOR3 - ldrb w23, [x0,1345] + ldrb w23, [x0, 1337] cmp w23, 1 - bne .L4042 + bne .L3971 bl ftl_flush add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0,5616] - cbz w0, .L4043 - mov w0, w23 -.L4043: mov w1, 5 + ldrh w0, [x0, 5608] + cbz w0, .L3972 + mov w0, w23 +.L4087: bl zftl_gc_get_free_sblk - uxth w23, w0 + and w22, w0, 65535 mov w0, 65535 - cmp w23, w0 - beq .L4045 + cmp w22, w0 + beq .L3974 add x0, x19, :lo12:.LANCHOR0 - ldr x22, [x0,1096] - add x22, x22, w23, uxth 2 - ldrb w0, [x22,2] + ldr x23, [x0, 1104] + add x23, x23, w22, uxth 2 + ldrb w0, [x23, 2] tst w0, 224 - beq .L4046 + beq .L3975 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3423 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L4046: - ldrb w0, [x22,2] +.L3975: + ldrb w0, [x23, 2] mov w1, 5 bfi w0, w1, 5, 3 orr w0, w0, 16 - strb w0, [x22,2] -.L4071: - mov w0, w23 + strb w0, [x23, 2] +.L3999: mov w1, 1 - add x21, x21, :lo12:.LANCHOR3 - add x20, x20, :lo12:.LANCHOR5 + mov w0, w22 bl ftl_erase_sblk - add x19, x19, :lo12:.LANCHOR0 + add x21, x21, :lo12:.LANCHOR3 mov w0, 5 - add x1, x24, 96 - strb w0, [x24,84] - mov w0, w23 + strb w0, [x25, 84] + add x1, x25, 96 + mov w0, w22 bl ftl_get_blk_list_in_sblk - uxtb w0, w0 - ldrh w1, [x21,1384] - strb w0, [x24,89] - ldrb w2, [x21,1329] + and w0, w0, 255 + ldrh w1, [x21, 1376] + add x20, x20, :lo12:.LANCHOR5 + strb w0, [x25, 89] + add x19, x19, :lo12:.LANCHOR0 + ldrh w2, [x21, 1338] + strh w22, [x25, 80] mul w0, w0, w1 - strh w0, [x24,86] + strh wzr, [x25, 82] + strh w0, [x25, 86] mov w1, 255 - ldrh w0, [x21,1346] - strh w23, [x24,80] - strh wzr, [x24,82] - mul w2, w0, w2 - ldr x0, [x20,232] - strb wzr, [x24,85] - lsl w2, w2, 2 - strh wzr, [x24,90] - bl ftl_memset - ldrh w0, [x21,1346] - mov w1, 255 - ldrb w2, [x21,1329] - mul w2, w0, w2 - ldr x0, [x20,240] + ldrb w0, [x21, 1321] + strb wzr, [x25, 85] + strh wzr, [x25, 90] + mul w2, w2, w0 + ldr x0, [x20, 280] lsl w2, w2, 2 bl ftl_memset - ldrh w3, [x21,1346] + ldrb w0, [x21, 1321] mov w1, 255 - ldrb w2, [x21,1329] - ldr x0, [x21,1336] - mul w2, w3, w2 + ldrh w2, [x21, 1338] + mul w2, w2, w0 + ldr x0, [x20, 288] + lsl w2, w2, 2 bl ftl_memset - ldr x0, [x19,1120] + ldrb w0, [x21, 1321] + mov w1, 255 + ldrh w2, [x21, 1338] + mul w2, w2, w0 + ldr x0, [x21, 1328] + bl ftl_memset + ldr x0, [x19, 1128] mov w1, -1 - str w23, [x0,132] - strh w1, [x0,128] - strh w1, [x0,130] + str w22, [x0, 132] + strh w1, [x0, 128] + strh w1, [x0, 130] bl pm_flush bl ftl_ext_info_flush - strh wzr, [x19,3480] - ldr x0, [x19,3392] - strh w23, [x0,126] + strh wzr, [x19, 3472] + ldr x0, [x19, 3384] + strh w22, [x0, 126] mov w0, -1 - str w0, [x19,5620] + strh wzr, [x19, 5522] + str w0, [x19, 5612] mov w0, 0 - strh wzr, [x19,5530] - strh wzr, [x19,5532] - strh wzr, [x19,5618] + strh wzr, [x19, 5524] + strh wzr, [x19, 5610] bl ftl_info_flush - b .L4180 -.L4042: - cmp w26, 1 + b .L4000 +.L3972: + mov w0, 0 + b .L4087 +.L3971: + cmp w27, 1 mov w23, 4 csinc w23, w23, wzr, eq + add x26, x19, :lo12:.LANCHOR0 cmp w22, 15 - add w0, w23, 4 - adrp x27, .LANCHOR3 - csel w23, w0, w23, ls - add x25, x19, :lo12:.LANCHOR0 -.L4049: - sub w23, w23, #1 - uxtb w23, w23 - cmp w23, 255 - beq .L4180 - add x26, x27, :lo12:.LANCHOR3 - bl gc_do_copy_back + mov w0, w23 + add w23, w23, 4 adrp x22, .LANCHOR3 - ldrb w0, [x26,1345] - cbnz w0, .L4050 - ldrb w0, [x25,3362] + csel w23, w23, w0, ls + add x24, x22, :lo12:.LANCHOR3 + add x21, x26, 3416 +.L3978: + sub w23, w23, #1 + and w23, w23, 255 + cmp w23, 255 + beq .L4000 + bl gc_do_copy_back + ldrb w0, [x24, 1337] + cbnz w0, .L3979 + ldrb w0, [x26, 3353] cmp w0, 3 - bhi .L4051 + bhi .L3980 bl ftl_write_commit -.L4051: - ldrh w1, [x25,3450] - ldrh w0, [x25,3448] +.L3980: + ldrh w1, [x21, 26] + ldrh w0, [x21, 24] cmp w1, w0 - bcc .L4049 + bcc .L3978 add x20, x20, :lo12:.LANCHOR5 mov w0, 1 - strb w0, [x20,218] + strb w0, [x20, 264] bl ftl_write_commit bl ftl_flush - ldrh w1, [x25,3424] - ldr x0, [x25,1112] - ldrh w0, [x0,x1,lsl 1] - cbz w0, .L4053 + ldrh w1, [x21] + ldr x0, [x26, 1120] + ldrh w0, [x0, x1, lsl 1] + cbz w0, .L3982 adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3507 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack -.L4053: +.L3982: add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1,3424] - ldr x3, [x1,1112] + ldrh w0, [x1, 3416] + ldr x1, [x1, 1120] ubfiz x2, x0, 1, 16 - ldrh w4, [x3,x2] - cbnz w4, .L4054 - strh w4, [x3,x2] - ldrh w0, [x1,3424] + ldrh w1, [x1, x2] + cbnz w1, .L3983 bl ftl_free_sblk - b .L4027 -.L4054: - mov w1, 0 + b .L3956 +.L3983: mov w2, 1 + mov w1, 0 bl gc_add_sblk - b .L4027 -.L4050: - ldrh w0, [x25,5618] - add x21, x25, 3424 - cbz w0, .L4055 - strh wzr, [x21,2194] + b .L3956 +.L3979: + ldrh w0, [x21, 2194] + cbz w0, .L3984 + strh wzr, [x21, 2194] bl sblk_wait_write_queue_completed bl gc_write_completed - ldr w0, [x21,2196] + ldr w0, [x21, 2196] cmn w0, #1 - beq .L4056 - ldrb w1, [x26,1956] - cbnz w1, .L4057 - ldrb w1, [x26,1330] - cbz w1, .L4058 -.L4057: - add x1, x19, :lo12:.LANCHOR0 - ldr x2, [x1,3392] - ldr w3, [x2,156] - mov w2, 20041 - movk w2, 0x444b, lsl 16 - cmp w3, w2 - bne .L4058 + beq .L3985 + ldrb w1, [x24, 1950] + cbnz w1, .L3986 + ldrb w1, [x24, 1322] + cbz w1, .L3987 +.L3986: + add x4, x19, :lo12:.LANCHOR0 + ldr x1, [x4, 3384] + ldr w2, [x1, 156] + mov w1, 20041 + movk w1, 0x444b, lsl 16 + cmp w2, w1 + bne .L3987 add x22, x22, :lo12:.LANCHOR3 - ldrb w3, [x1,1257] - mov w2, 24 - sub w2, w2, w3 - mov w3, 1 - ldrh w4, [x22,1312] - sub w2, w2, w4 - lsr w0, w0, w4 - lsl w2, w3, w2 - sub w2, w2, #1 - and w0, w2, w0 - ldrb w2, [x22,1314] - udiv w0, w0, w2 - ldr x2, [x1,1096] + ldrb w2, [x4, 1205] + mov w1, 24 + sub w1, w1, w2 + ldrh w3, [x22, 1304] + sub w2, w1, w3 + mov w1, 1 + lsr w0, w0, w3 + lsl w1, w1, w2 + sub w1, w1, #1 + and w0, w1, w0 + ldrb w1, [x22, 1306] + ldr x2, [x4, 1104] + udiv w0, w0, w1 lsl x0, x0, 2 add x5, x2, x0 - ldrb w3, [x5,2] - tbz x3, 3, .L4056 - ldrh w4, [x1,3376] - ldrh w6, [x22,1388] - add w4, w4, 8 - cmp w4, w6 - bge .L4056 - and w3, w3, -25 - strb w3, [x5,2] - ldrh w1, [x1,1104] - ldr w3, [x2,x0] - ldrh w4, [x2,x0] + ldrb w1, [x5, 2] + tbz x1, 3, .L3985 + ldrh w3, [x4, 3368] + ldrh w6, [x22, 1380] + add w3, w3, 8 + cmp w3, w6 + bge .L3985 + and w1, w1, -25 + strb w1, [x5, 2] + ldrh w1, [x4, 1112] + ldr w3, [x2, x0] + ldrh w4, [x2, x0] ubfx x3, x3, 11, 8 - ubfx x5, x4, 0, 11 - mul w1, w3, w1 + and w5, w4, 2047 + mul w1, w1, w3 lsr w3, w3, 3 add w1, w1, w1, lsl 1 add w1, w5, w1, lsr 2 bfi w4, w1, 0, 11 - strh w4, [x2,x0] - ldr w1, [x2,x0] + strh w4, [x2, x0] + ldr w1, [x2, x0] bfi w1, w3, 11, 8 - str w1, [x2,x0] - b .L4056 -.L4058: - bl ftl_mask_bad_block -.L4056: + str w1, [x2, x0] +.L3985: add x21, x19, :lo12:.LANCHOR0 - ldr x0, [x21,1120] - str wzr, [x21,5620] - strh wzr, [x21,3480] - ldrh w0, [x0,80] + ldr x0, [x21, 1128] + str wzr, [x21, 5612] + strh wzr, [x21, 3472] + ldrh w0, [x0, 80] bl ftl_free_sblk - ldr x1, [x21,1120] + ldr x1, [x21, 1128] mov w0, -1 - ldr x2, [x21,3392] - strh w0, [x1,80] - strh w0, [x2,126] - strh w0, [x1,130] - ldr x0, [x21,3432] - cbz x0, .L4059 + ldr x2, [x21, 3384] + strh w0, [x1, 80] + strh w0, [x2, 126] + strh w0, [x1, 130] + ldr x0, [x21, 3424] + cbz x0, .L3988 bl zbuf_free -.L4059: +.L3988: add x19, x19, :lo12:.LANCHOR0 add x20, x20, :lo12:.LANCHOR5 - str xzr, [x19,3432] + str xzr, [x19, 3424] bl flt_sys_flush adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3567 - add x1, x1, 1024 + strb wzr, [x20, 264] + adrp x0, .LC0 add x0, x0, :lo12:.LC0 - strb wzr, [x20,218] bl printk bl dump_stack - b .L4180 -.L4055: - ldrh w0, [x24,86] + b .L4000 +.L3987: + bl ftl_mask_bad_block + b .L3985 +.L3984: + ldrh w0, [x25, 86] + ldrh w1, [x21, 26] cmp w0, 1 - bls .L4060 - ldrh w1, [x21,26] - ldrh w0, [x21,24] + ldrh w0, [x21, 24] + bls .L3989 cmp w1, w0 - bcc .L4049 + bcc .L3978 add x20, x20, :lo12:.LANCHOR5 mov w0, 1 - strb w0, [x20,218] - ldrh w0, [x21,56] + strb w0, [x20, 264] + ldrh w0, [x21, 56] add w1, w0, 1 + strh w1, [x21, 56] add x0, x21, w0, sxtw 1 - strh w1, [x21,56] ldrh w1, [x21] - strh w1, [x0,58] + strh w1, [x0, 58] mov w0, -1 strh w0, [x21] - b .L4180 -.L4060: + b .L4000 +.L3989: add x20, x20, :lo12:.LANCHOR5 - mov w0, 5 - ldrh w1, [x21,26] - strb w0, [x20,218] - ldrh w0, [x21,24] + mov w2, 5 cmp w1, w0 - bcc .L4061 - ldrh w0, [x21,56] + strb w2, [x20, 264] + bcc .L3990 + ldrh w0, [x21, 56] add w1, w0, 1 + strh w1, [x21, 56] add x0, x21, w0, sxtw 1 - strh w1, [x21,56] ldrh w1, [x21] - strh w1, [x0,58] + strh w1, [x0, 58] mov w0, -1 strh w0, [x21] -.L4061: +.L3990: add x20, x19, :lo12:.LANCHOR0 bl ftl_flush bl sblk_wait_write_queue_completed bl gc_write_completed - ldr x0, [x20,1120] - ldrh w1, [x24,80] - strh w1, [x0,128] + ldr x0, [x20, 1128] + ldrh w1, [x25, 80] + strh w1, [x0, 128] bl pm_flush bl ftl_ext_info_flush - strh wzr, [x20,3440] + strh wzr, [x20, 3432] add x1, x22, :lo12:.LANCHOR3 - ldrb w3, [x20,1268] - ldrh w2, [x1,1384] - strh w2, [x20,3442] - ldrb w2, [x1,1328] - strh w2, [x20,3444] - cbz w3, .L4062 - ldrh w1, [x1,1346] - strh w1, [x20,3442] + ldrb w3, [x20, 1212] + ldrh w2, [x1, 1376] + strh w2, [x20, 3434] + ldrb w2, [x1, 1320] + strh w2, [x20, 3436] + cbz w3, .L3991 + ldrh w1, [x1, 1338] + strh w1, [x20, 3434] mov w1, 1 - strh w1, [x20,3444] -.L4062: + strh w1, [x20, 3436] +.L3991: cmp w2, 2 - bne .L4064 + bne .L3993 add x0, x19, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR3 - add x0, x0, 3424 - ldrh w1, [x0,18] - lsl w1, w1, 1 - strh w1, [x0,18] - ldrb w1, [x22,1330] - cbnz w1, .L4064 + add x0, x0, 3416 + ldrh w1, [x0, 18] + ubfiz w1, w1, 1, 15 + strh w1, [x0, 18] + ldrb w1, [x22, 1322] + cbnz w1, .L3993 mov w1, 1 - strh w1, [x0,20] -.L4064: + strh w1, [x0, 20] +.L3993: add x19, x19, :lo12:.LANCHOR0 - strh wzr, [x19,3446] - b .L4180 -.L4073: - mov w21, 0 - add x24, x19, :lo12:.LANCHOR0 -.L3952: - bl gc_check_data_one_wl - cbz w0, .L4067 - add x19, x19, :lo12:.LANCHOR0 - add x20, x20, :lo12:.LANCHOR5 - ldr x0, [x19,1120] - strh wzr, [x19,3480] - ldrh w0, [x0,80] - bl ftl_free_sblk - ldr x1, [x19,1120] - mov w0, -1 - ldr x2, [x19,3392] - strh w0, [x1,80] - strh w0, [x2,126] - strh w0, [x1,130] - ldr x0, [x19,3432] - bl zbuf_free - str xzr, [x19,3432] - strb wzr, [x20,218] -.L4183: - bl flt_sys_flush - b .L4180 -.L4067: - ldrh w1, [x24,3440] - ldrh w0, [x24,3442] + strh wzr, [x19, 3438] + b .L4000 +.L3996: + ldrh w1, [x21, 16] + ldrh w0, [x21, 18] cmp w1, w0 - bcc .L4068 + bcc .L3997 add x20, x20, :lo12:.LANCHOR5 mov w0, 6 - strb w0, [x20,218] - ldr x0, [x24,3432] + strb w0, [x20, 264] + ldr x0, [x21, 8] bl zbuf_free - str xzr, [x24,3432] - b .L4180 -.L4068: + str xzr, [x21, 8] + b .L4000 +.L3997: cmp w22, 15 - bls .L3952 - cmp w26, 1 - bne .L4180 - add w21, w21, 1 - uxtb w21, w21 - cmp w21, 4 - bls .L3952 - b .L4180 -.L3953: + bls .L3883 + cmp w27, 1 + bne .L4000 + add w23, w23, 1 + and w23, w23, 255 + cmp w23, 4 + bls .L3883 + b .L4000 +.L3882: bl gc_update_l2p_map_new mov w21, -1 bl gc_free_src_blk add x19, x19, :lo12:.LANCHOR0 bl ftl_flush bl pm_flush - strh w21, [x24,80] + strh w21, [x25, 80] bl ftl_ext_info_flush - ldr x0, [x19,3392] - strh w21, [x0,126] + ldr x0, [x19, 3384] + strh w21, [x0, 126] mov w0, 0 bl ftl_info_flush -.L4181: +.L4091: add x20, x20, :lo12:.LANCHOR5 - strb wzr, [x20,218] -.L4180: - mov w1, 16 - b .L4140 -.L3993: - mov w1, w24 - b .L4140 -.L4045: + strb wzr, [x20, 264] + b .L4000 +.L3974: adrp x1, .LANCHOR4 - adrp x0, .LC0 add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1040 mov w2, 3430 - add x1, x1, 1024 + adrp x0, .LC0 add x0, x0, :lo12:.LC0 bl printk bl dump_stack - b .L4071 -.L4140: - sub sp, x29, #16 - mov w0, w1 - 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, 128 - ret + b .L3999 .size zftl_do_gc, .-zftl_do_gc .align 2 .global zftl_init @@ -26743,418 +26516,419 @@ zftl_do_gc: zftl_init: stp x29, x30, [sp, -80]! mov w0, -1 - adrp x1, .LC2 + adrp x1, .LC1 + add x1, x1, :lo12:.LC1 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - adrp x20, .LANCHOR0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x21, x22, [sp, 32] + adrp x20, .LANCHOR5 + stp x23, x24, [sp, 48] adrp x21, .LANCHOR3 - adrp x19, .LANCHOR5 - str x25, [sp,64] - stp x23, x24, [sp,48] - add x25, x19, :lo12:.LANCHOR5 + str x25, [sp, 64] add x23, x21, :lo12:.LANCHOR3 - add x24, x20, :lo12:.LANCHOR0 - add x1, x1, :lo12:.LC2 + add x24, x19, :lo12:.LANCHOR0 + add x25, x20, :lo12:.LANCHOR5 adrp x22, .LANCHOR2 - strb w0, [x23,1962] - strb w0, [x24,3416] - strb w0, [x25,352] + strb w0, [x23, 1956] + strb w0, [x24, 3408] + strb w0, [x25, 360] mov w0, -1 - str w0, [x25,1012] - adrp x0, .LC1 - add x0, x0, :lo12:.LC1 - strb wzr, [x24,3388] - strb wzr, [x23,1963] - strb wzr, [x24,3389] + strb wzr, [x24, 3381] + str w0, [x25, 476] + adrp x0, .LC2 + strb wzr, [x23, 1957] + add x0, x0, :lo12:.LC2 + strb wzr, [x24, 3380] bl printk add x1, x22, :lo12:.LANCHOR2 - ldrb w3, [x24,1153] - ldrh w4, [x24,2] - strb w3, [x23,1420] - ldrb w2, [x1,21] - ldrb w9, [x1,20] - ldrh w5, [x1,18] - strb w2, [x23,1314] - mul w2, w2, w3 - ldrb w0, [x1,17] - mov w3, 1 - ldrh w6, [x1,22] + ldrb w2, [x24, 1153] + strb w2, [x23, 1412] + ldrh w4, [x24, 2] + ldrb w9, [x1, 20] + ldrh w5, [x1, 18] + ldrb w3, [x1, 21] + ldrb w0, [x1, 17] + ldrh w6, [x1, 22] mov w1, 0 sdiv w10, w5, w9 - uxtb w2, w2 + strb w3, [x23, 1306] + mul w2, w2, w3 ubfiz w8, w0, 9, 7 - strb w9, [x23,1328] - strb w0, [x24,3360] - strh w5, [x23,1346] - strh w10, [x23,1384] - strb w2, [x23,1329] - strh w6, [x24,1088] - strh w8, [x25,998] - strh w4, [x23,1418] -.L4186: - cmp w3, w4 - bhi .L4266 - add w1, w1, 1 - lsl w3, w3, 1 - uxth w1, w1 - b .L4186 -.L4266: + strb w9, [x23, 1320] + mov w3, 1 + and w2, w2, 255 + strb w0, [x23, 1946] + strh w5, [x23, 1338] + strh w10, [x23, 1376] + strb w2, [x23, 1321] + strh w6, [x24, 1096] + strh w8, [x25, 462] + strh w4, [x23, 1410] +.L4094: + cmp w4, w3 + bcs .L4095 + mul w7, w0, w5 add x3, x21, :lo12:.LANCHOR3 sub w1, w1, #1 - mul w7, w0, w5 mov w4, 0 - strh w1, [x3,1312] + strh w1, [x3, 1304] mov w1, 1 - mul w3, w7, w6 + mul w3, w6, w7 lsr w11, w3, 21 -.L4188: - cmp w1, w11 - bhi .L4267 - add w4, w4, 1 - lsl w1, w1, 1 - uxth w4, w4 - b .L4188 -.L4267: +.L4096: + cmp w11, w1 + bcs .L4097 mov w1, 57344 - mov w11, 1 + add x11, x19, :lo12:.LANCHOR0 movk w1, 0x1c, lsl 16 sub w4, w4, #1 - lsl w4, w11, w4 - add x11, x20, :lo12:.LANCHOR0 - mul w1, w2, w1 mul w3, w3, w2 - str w3, [x11,3368] lsr w6, w6, 4 - mul w1, w1, w4 - str w1, [x11,1032] - add x4, x19, :lo12:.LANCHOR5 - add w3, w1, 24576 - cmp w6, 79 + mul w1, w2, w1 + str w3, [x11, 3360] mul w10, w10, w2 - udiv w0, w3, w0 - str w3, [x4,1016] - str w0, [x11,3372] - sub w11, w8, #1 + cmp w6, 79 mul w7, w7, w2 + lsl w1, w1, w4 + add w3, w1, 24576 + str w1, [x11, 1032] + add x4, x20, :lo12:.LANCHOR5 sub w7, w7, #1 - add w0, w11, w0, lsl 2 + udiv w0, w3, w0 + str w3, [x4, 480] udiv w3, w3, w7 + str w0, [x11, 3364] + sub w11, w8, #1 + add w0, w11, w0, lsl 2 add w3, w3, 8 udiv w0, w0, w8 - strh w0, [x4,1020] + strh w0, [x4, 484] ubfiz w0, w0, 4, 16 sdiv w0, w0, w10 - strh w0, [x4,264] + strh w0, [x4, 220] add x0, x21, :lo12:.LANCHOR3 - strh w3, [x0,1390] - strh w6, [x0,1388] - bhi .L4190 + strh w3, [x0, 1382] + strh w6, [x0, 1380] + bhi .L4098 mov w3, 80 - strh w3, [x0,1388] -.L4190: + strh w3, [x0, 1380] +.L4098: add x0, x21, :lo12:.LANCHOR3 mov w3, 2000 - add x6, x20, :lo12:.LANCHOR0 + add x6, x19, :lo12:.LANCHOR0 mov w4, 256 cmp w9, 2 - strh w3, [x0,1960] + strh w3, [x0, 1954] mov w3, 50 - strh w3, [x0,1958] - add x3, x19, :lo12:.LANCHOR5 - strh w4, [x3,260] + strh w3, [x0, 1952] + add x3, x20, :lo12:.LANCHOR5 + strh w4, [x3, 216] mov w4, 48 - strh w4, [x3,262] + strh w4, [x3, 218] mov w4, 32 - strh w4, [x6,1104] - beq .L4191 - ldrb w7, [x0,1344] - cbz w7, .L4192 -.L4191: + strh w4, [x6, 1112] + beq .L4099 + ldrb w7, [x0, 1336] + cbz w7, .L4100 +.L4099: add x3, x21, :lo12:.LANCHOR3 mov w0, 150 mov w4, 64 mov w6, 12 - strh w0, [x3,1958] - add x0, x19, :lo12:.LANCHOR5 - strh w4, [x0,262] - add x4, x20, :lo12:.LANCHOR0 - strh w6, [x4,1104] - ldrb w6, [x20,#:lo12:.LANCHOR0] - cbnz w6, .L4193 + strh w0, [x3, 1952] + add x0, x20, :lo12:.LANCHOR5 + strh w4, [x0, 218] + add x4, x19, :lo12:.LANCHOR0 + strh w6, [x4, 1112] + ldrb w6, [x19, #:lo12:.LANCHOR0] + cbnz w6, .L4101 mov w6, 4 - strh w6, [x4,1104] + strh w6, [x4, 1112] mov w4, 600 - strh w4, [x3,1960] + strh w4, [x3, 1954] mov w3, 128 - strh w3, [x0,260] -.L4193: - add x0, x20, :lo12:.LANCHOR0 - ldrb w0, [x0,1269] - cbz w0, .L4195 + strh w3, [x0, 216] +.L4101: + add x0, x19, :lo12:.LANCHOR0 + ldrb w0, [x0, 1213] + cbz w0, .L4103 add x0, x21, :lo12:.LANCHOR3 mov w3, 200 - strh w3, [x0,1958] + strh w3, [x0, 1952] mov w3, 2000 - strh w3, [x0,1960] - b .L4195 -.L4192: - ldrb w6, [x6,1268] - cbz w6, .L4195 - mov w6, 1200 - strh w4, [x0,1958] - strh w6, [x0,1960] - strh w4, [x3,262] -.L4195: - add x0, x20, :lo12:.LANCHOR0 - mov w3, 1 + strh w3, [x0, 1954] +.L4103: + add x0, x19, :lo12:.LANCHOR0 mul w2, w5, w2 - str wzr, [x0,3412] - add x0, x19, :lo12:.LANCHOR5 + mov w3, 1 + str wzr, [x0, 3396] + add x0, x20, :lo12:.LANCHOR5 cmp w8, w2, lsl 2 - strb w3, [x0,1001] - bge .L4197 + strb w3, [x0, 465] + bge .L4105 mov w2, 2 - strb w2, [x0,1001] -.L4197: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4198 + strb w2, [x0, 465] +.L4105: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4106 adrp x0, .LC302 add x0, x0, :lo12:.LC302 bl printk -.L4198: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4199 - add x1, x20, :lo12:.LANCHOR0 +.L4106: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4107 + add x0, x19, :lo12:.LANCHOR0 + ldr w1, [x0, 3360] adrp x0, .LC303 add x0, x0, :lo12:.LC303 - ldr w1, [x1,3368] bl printk -.L4199: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4200 - add x1, x20, :lo12:.LANCHOR0 +.L4107: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4108 + add x0, x19, :lo12:.LANCHOR0 + ldr w1, [x0, 3364] adrp x0, .LC304 add x0, x0, :lo12:.LC304 - ldr w1, [x1,3372] bl printk -.L4200: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4201 - add x1, x19, :lo12:.LANCHOR5 +.L4108: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4109 + add x0, x20, :lo12:.LANCHOR5 + ldr w1, [x0, 480] adrp x0, .LC305 add x0, x0, :lo12:.LC305 - ldr w1, [x1,1016] bl printk -.L4201: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4202 - add x1, x19, :lo12:.LANCHOR5 +.L4109: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4110 + add x0, x20, :lo12:.LANCHOR5 + ldrh w1, [x0, 484] adrp x0, .LC306 add x0, x0, :lo12:.LC306 - ldrh w1, [x1,1020] bl printk -.L4202: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4203 - add x1, x19, :lo12:.LANCHOR5 +.L4110: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4111 + add x0, x20, :lo12:.LANCHOR5 + ldrh w1, [x0, 462] adrp x0, .LC307 add x0, x0, :lo12:.LC307 - ldrh w1, [x1,998] bl printk -.L4203: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4204 - add x1, x19, :lo12:.LANCHOR5 +.L4111: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4112 + add x0, x20, :lo12:.LANCHOR5 + ldrh w1, [x0, 220] adrp x0, .LC308 add x0, x0, :lo12:.LC308 - ldrh w1, [x1,264] bl printk -.L4204: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4205 - add x1, x21, :lo12:.LANCHOR3 +.L4112: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4113 + add x0, x21, :lo12:.LANCHOR3 + ldrh w1, [x0, 1380] adrp x0, .LC309 add x0, x0, :lo12:.LC309 - ldrh w1, [x1,1388] bl printk -.L4205: - ldr w0, [x22,#:lo12:.LANCHOR2] - tbz x0, 12, .L4206 - add x1, x21, :lo12:.LANCHOR3 +.L4113: + ldr w0, [x22, #:lo12:.LANCHOR2] + tbz x0, 12, .L4114 + add x0, x21, :lo12:.LANCHOR3 + ldrh w1, [x0, 1382] adrp x0, .LC310 add x0, x0, :lo12:.LC310 - ldrh w1, [x1,1390] bl printk -.L4206: +.L4114: + add x24, x20, :lo12:.LANCHOR5 bl zbuf_init - add x25, x19, :lo12:.LANCHOR5 mov w0, 16384 - add x24, x20, :lo12:.LANCHOR0 + bl ftl_malloc + add x25, x19, :lo12:.LANCHOR0 add x23, x21, :lo12:.LANCHOR3 - bl ftl_malloc - str x0, [x25,648] + str x0, [x24, 392] mov w0, 16384 bl ftl_malloc - str x0, [x25,664] + str x0, [x24, 408] mov w0, 16384 bl ftl_malloc - str x0, [x25,1024] - ldrh w1, [x24,1088] + str x0, [x24, 488] + mov w0, 256 + bl ftl_dma32_malloc + str x0, [x24, 376] + mov w0, 256 + bl ftl_dma32_malloc + ldrh w1, [x25, 1096] + str x0, [x24, 416] mov w0, 6 mul w0, w1, w0 - bl ftl_malloc - str x0, [x24,1040] - ldrb w1, [x23,1329] - ldrh w0, [x23,1384] + bl ftl_dma32_malloc + str x0, [x25, 1040] + ldrb w1, [x23, 1321] + ldrh w0, [x23, 1376] mul w0, w0, w1 lsl w0, w0, 2 - bl ftl_malloc - str x0, [x23,1944] - ldrb w1, [x23,1329] - ldrh w0, [x23,1384] - ldr x2, [x25,664] - str x2, [x23,1936] + bl ftl_dma32_malloc + ldrb w1, [x23, 1321] + str x0, [x23, 1936] + ldrh w0, [x23, 1376] + ldr x2, [x24, 408] + str x2, [x23, 1928] mul w0, w0, w1 + ldrh w1, [x25, 1096] add x3, x2, w0, sxtw 3 - ldrh w1, [x24,1088] - str x3, [x24,1112] - lsr w1, w1, 1 - add w1, w1, w0, lsl 1 - ldr w0, [x22,#:lo12:.LANCHOR2] + lsl w0, w0, 1 + add w1, w0, w1, lsr 1 + ldr w0, [x22, #:lo12:.LANCHOR2] add x1, x2, w1, sxtw 2 - str x1, [x24,1120] - tbz x0, 12, .L4207 + str x3, [x25, 1120] + str x1, [x25, 1128] + tbz x0, 12, .L4115 adrp x0, .LC311 add x0, x0, :lo12:.LC311 bl printk -.L4207: - add x0, x20, :lo12:.LANCHOR0 +.L4115: + add x0, x19, :lo12:.LANCHOR0 add x21, x21, :lo12:.LANCHOR3 - add x3, x19, :lo12:.LANCHOR5 - ldrh w1, [x0,1088] - ldrh w0, [x21,1384] - ldrb w21, [x21,1329] - ldrh w23, [x3,1020] + ldrh w1, [x0, 1096] + ldrh w0, [x21, 1376] + ldrb w21, [x21, 1321] mul w21, w0, w21 - ldr w0, [x22,#:lo12:.LANCHOR2] - lsl w23, w23, 2 - add w23, w23, w1, lsl 2 + add x0, x20, :lo12:.LANCHOR5 + ldrh w23, [x0, 484] add w21, w1, w21, lsl 2 - add w23, w23, 704 + lsl w1, w1, 2 lsl w21, w21, 1 add w21, w21, 632 - tbz x0, 12, .L4208 - adrp x0, .LC312 - ldrh w3, [x3,998] - add x0, x0, :lo12:.LC312 - mov w1, w21 + add w23, w1, w23, lsl 2 + ldr w1, [x22, #:lo12:.LANCHOR2] + add w23, w23, 704 + tbz x1, 12, .L4116 + ldrh w3, [x0, 462] mov w2, w23 + adrp x0, .LC312 + mov w1, w21 + add x0, x0, :lo12:.LC312 bl printk -.L4208: - add x19, x19, :lo12:.LANCHOR5 - ldrh w0, [x19,998] +.L4116: + add x20, x20, :lo12:.LANCHOR5 + ldrh w0, [x20, 462] cmp w21, w0 - bhi .L4210 + bhi .L4117 cmp w23, w0 - bls .L4209 -.L4210: -.L4211: - b .L4211 -.L4209: + bls .L4118 +.L4117: +.L4171: + b .L4171 +.L4095: + add w1, w1, 1 + lsl w3, w3, 1 + and w1, w1, 65535 + b .L4094 +.L4097: + add w4, w4, 1 + lsl w1, w1, 1 + and w4, w4, 65535 + b .L4096 +.L4100: + ldrb w6, [x6, 1212] + cbz w6, .L4103 + mov w6, 1200 + strh w4, [x0, 1952] + strh w6, [x0, 1954] + strh w4, [x3, 218] + b .L4103 +.L4118: bl sblk_init bl gc_init bl ftl_info_blk_init cmn w0, #1 - beq .L4212 + beq .L4093 + add x21, x19, :lo12:.LANCHOR0 bl ftl_ext_info_init - add x21, x20, :lo12:.LANCHOR0 mov w0, 1 bl pm_init bl lpa_rebuild_hash - ldr x0, [x21,1120] + ldr x0, [x21, 1128] mov x1, 0 add x0, x0, 16 bl ftl_open_sblk_recovery - ldr x1, [x21,1120] - add x0, x1, 48 - add x1, x1, 16 + ldr x0, [x21, 1128] + add x1, x0, 16 + add x0, x0, 48 bl ftl_open_sblk_recovery - ldr x1, [x21,3392] - ldr w0, [x1,8] + ldr x1, [x21, 3384] + ldr w0, [x1, 8] add w0, w0, 16 - str w0, [x1,8] - ldr x0, [x21,1120] + str w0, [x1, 8] + ldr x0, [x21, 1128] add x0, x0, 16 bl ftl_info_data_recovery - ldr x0, [x21,1120] + ldr x0, [x21, 1128] add x0, x0, 48 bl ftl_info_data_recovery - ldr x0, [x21,1120] + ldr x0, [x21, 1128] add x0, x0, 80 bl ftl_info_data_recovery bl gc_recovery bl pm_flush mov w0, 1 bl ftl_total_vpn_update - ldrb w0, [x19,657] - cbz w0, .L4213 - ldr x1, [x21,3392] - ldr w0, [x1,68] + ldrb w0, [x20, 401] + cbz w0, .L4120 + ldr x1, [x21, 3384] + ldr w0, [x1, 68] add w0, w0, 1 - str w0, [x1,68] -.L4213: + str w0, [x1, 68] +.L4120: bl ftl_ext_info_flush mov w0, 0 bl ftl_info_flush bl print_ftl_debug_info - add x1, x20, :lo12:.LANCHOR0 - ldr x0, [x1,1120] - ldrh w0, [x0,124] - cbnz w0, .L4217 - ldrh w2, [x1,3376] - mov w19, 16384 - ldrh w0, [x1,3380] - add w0, w2, w0 + add x1, x19, :lo12:.LANCHOR0 + ldr x0, [x1, 1128] + ldrh w0, [x0, 124] + cbnz w0, .L4127 + ldrh w0, [x1, 3368] + ldrh w1, [x1, 3372] + add w0, w0, w1 cmp w0, 7 - ble .L4214 -.L4216: + ble .L4127 +.L4123: mov w0, 0 - b .L4212 -.L4217: - mov w19, 16384 -.L4214: +.L4093: + 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 +.L4127: + add x19, x19, :lo12:.LANCHOR0 + mov w20, 16384 mov w21, 65535 -.L4249: +.L4124: mov w1, 1 mov w0, 0 bl zftl_do_gc - mov w0, 1 - mov w1, w0 + mov w1, 1 + mov w0, w1 bl zftl_do_gc - add x1, x20, :lo12:.LANCHOR0 - ldr x0, [x1,1120] - ldrh w2, [x0,124] - cbnz w2, .L4215 - ldrh w0, [x0,80] + ldr x0, [x19, 1128] + ldrh w1, [x0, 124] + cbnz w1, .L4122 + ldrh w0, [x0, 80] cmp w0, w21 - bne .L4215 - ldrh w2, [x1,3376] - ldrh w0, [x1,3380] - add w0, w2, w0 + bne .L4122 + ldrh w0, [x19, 3368] + ldrh w1, [x19, 3372] + add w0, w0, w1 cmp w0, 7 - bgt .L4216 -.L4215: - subs w19, w19, #1 - bne .L4249 - b .L4216 -.L4212: - 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 + bgt .L4123 +.L4122: + subs w20, w20, #1 + bne .L4124 + b .L4123 .size zftl_init, .-zftl_init .align 2 .global rk_ftl_init @@ -27163,403 +26937,399 @@ rk_ftl_init: stp x29, x30, [sp, -48]! adrp x0, jiffies add x29, sp, 0 - stp x21, x22, [sp,32] + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR5 - ldr x0, [x0,#:lo12:jiffies] - stp x19, x20, [sp,16] add x19, x21, :lo12:.LANCHOR5 - str x0, [x19,272] + ldr x0, [x0, #:lo12:jiffies] + str x0, [x19, 224] mov w0, 136 - strb wzr, [x19,1032] + strb wzr, [x19, 496] + str wzr, [x19, 248] bl ftl_malloc - str x0, [x19,280] - cbnz x0, .L4269 -.L4271: - mov w0, -1 - b .L4270 -.L4269: + str x0, [x19, 232] + cbnz x0, .L4174 +.L4176: + mov w20, -1 +.L4173: + mov w0, w20 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L4174: mov w0, 2048 bl ftl_malloc - str x0, [x19,1040] - add x0, x19, 288 - str xzr, [x19,288] - add x1, x0, 760 - str xzr, [x19,1048] + add x1, x19, 512 + stp x0, xzr, [x19, 504] + str xzr, [x19, 240] + add x0, x19, 240 bl rknand_get_reg_addr - ldr x0, [x19,288] - cbz x0, .L4271 + ldr x0, [x19, 240] + cbz x0, .L4176 bl rk_nandc_irq_init - mov w1, 0 - ldr x0, [x19,1040] - mov w2, w1 + ldr x0, [x19, 504] mov w3, 2048 + mov w2, 0 + mov w1, 0 bl flash_sram_load_store bl rknand_flash_cs_init - ldr x0, [x19,280] + ldr x0, [x19, 232] adrp x1, zftl_deinit add x1, x1, :lo12:zftl_deinit - str x1, [x0,80] + str x1, [x0, 80] adrp x1, zftl_cache_flush add x1, x1, :lo12:zftl_cache_flush - str x1, [x0,64] + str x1, [x0, 64] adrp x1, zftl_flash_suspend add x1, x1, :lo12:zftl_flash_suspend - str x1, [x0,88] + str x1, [x0, 88] adrp x1, zftl_flash_resume add x1, x1, :lo12:zftl_flash_resume - str x1, [x0,96] + str x1, [x0, 96] adrp x1, zftl_get_density add x1, x1, :lo12:zftl_get_density - str x1, [x0,72] + str x1, [x0, 72] adrp x1, zftl_read_flash_info add x1, x1, :lo12:zftl_read_flash_info - str x1, [x0,112] + str x1, [x0, 112] adrp x1, zftl_read add x1, x1, :lo12:zftl_read - str x1, [x0,40] + str x1, [x0, 40] adrp x1, zftl_write add x1, x1, :lo12:zftl_write - str x1, [x0,48] + str x1, [x0, 48] adrp x1, zftl_sys_read add x1, x1, :lo12:zftl_sys_read - str x1, [x0,24] + str x1, [x0, 24] adrp x1, zftl_sys_write add x1, x1, :lo12:zftl_sys_write - str x1, [x0,32] + str x1, [x0, 32] adrp x1, zftl_vendor_read add x1, x1, :lo12:zftl_vendor_read - str x1, [x0,8] + str x1, [x0, 8] adrp x1, zftl_vendor_write add x1, x1, :lo12:zftl_vendor_write - str x1, [x0,16] + str x1, [x0, 16] adrp x1, zftl_nandc_get_irq_status add x1, x1, :lo12:zftl_nandc_get_irq_status - str x1, [x0,120] + str x1, [x0, 120] adrp x1, zftl_proc_ftl_read add x1, x1, :lo12:zftl_proc_ftl_read - str x1, [x0,128] + str x1, [x0, 128] adrp x1, zftl_do_gc add x1, x1, :lo12:zftl_do_gc - str x1, [x0,104] + str x1, [x0, 104] adrp x1, zftl_discard add x1, x1, :lo12:zftl_discard - str x1, [x0,56] - ldr x0, [x19,288] + str x1, [x0, 56] + ldr x0, [x19, 240] bl nand_flash_init mov w22, w0 - cbnz w0, .L4272 + cbnz w0, .L4177 bl zftl_init mov w20, w0 bl zftl_proc_debug_init mov w0, 1 - strb w0, [x19,1032] - b .L4273 -.L4272: - ldr x1, [x19,280] - adrp x2, ftl_get_density - add x2, x2, :lo12:ftl_get_density - adrp x0, ftl_deinit - add x0, x0, :lo12:ftl_deinit - str x2, [x1,72] - adrp x2, ftl_read_flash_info - add x2, x2, :lo12:ftl_read_flash_info - str x2, [x1,112] - adrp x2, ftl_read - str x0, [x1,80] - add x2, x2, :lo12:ftl_read - str x2, [x1,40] - adrp x2, ftl_write - adrp x0, ftl_cache_flush - add x2, x2, :lo12:ftl_write - str x2, [x1,48] - adrp x2, ftl_sys_read - add x0, x0, :lo12:ftl_cache_flush - add x2, x2, :lo12:ftl_sys_read - str x2, [x1,24] - adrp x2, ftl_sys_write - str x0, [x1,64] - add x2, x2, :lo12:ftl_sys_write - str x2, [x1,32] - adrp x2, ftl_vendor_read - adrp x0, ftl_flash_suspend - add x2, x2, :lo12:ftl_vendor_read - str x2, [x1,8] - adrp x2, ftl_vendor_write - add x0, x0, :lo12:ftl_flash_suspend - add x2, x2, :lo12:ftl_vendor_write - str x2, [x1,16] - adrp x2, ftl_nandc_get_irq_status - str x0, [x1,88] - add x2, x2, :lo12:ftl_nandc_get_irq_status - str x2, [x1,120] - adrp x2, ftl_proc_ftl_read - adrp x0, ftl_flash_resume - add x2, x2, :lo12:ftl_proc_ftl_read - str x2, [x1,128] - adrp x2, ftl_do_gc - add x0, x0, :lo12:ftl_flash_resume - add x2, x2, :lo12:ftl_do_gc - str x0, [x1,96] - str x2, [x1,104] - adrp x2, ftl_discard - ldr x0, [x19,288] - add x2, x2, :lo12:ftl_discard - str x2, [x1,56] + strb w0, [x19, 496] +.L4178: + mov w1, w20 + adrp x0, .LC313 + add x0, x0, :lo12:.LC313 + bl printk + b .L4173 +.L4177: + ldr x0, [x19, 232] + adrp x1, ftl_deinit + add x1, x1, :lo12:ftl_deinit + str x1, [x0, 80] + adrp x1, ftl_cache_flush + add x1, x1, :lo12:ftl_cache_flush + str x1, [x0, 64] + adrp x1, ftl_flash_suspend + add x1, x1, :lo12:ftl_flash_suspend + str x1, [x0, 88] + adrp x1, ftl_flash_resume + add x1, x1, :lo12:ftl_flash_resume + str x1, [x0, 96] + adrp x1, ftl_get_density + add x1, x1, :lo12:ftl_get_density + str x1, [x0, 72] + adrp x1, ftl_read_flash_info + add x1, x1, :lo12:ftl_read_flash_info + str x1, [x0, 112] + adrp x1, ftl_read + add x1, x1, :lo12:ftl_read + str x1, [x0, 40] + adrp x1, ftl_write + add x1, x1, :lo12:ftl_write + str x1, [x0, 48] + adrp x1, ftl_sys_read + add x1, x1, :lo12:ftl_sys_read + str x1, [x0, 24] + adrp x1, ftl_sys_write + add x1, x1, :lo12:ftl_sys_write + str x1, [x0, 32] + adrp x1, ftl_vendor_read + add x1, x1, :lo12:ftl_vendor_read + str x1, [x0, 8] + adrp x1, ftl_vendor_write + add x1, x1, :lo12:ftl_vendor_write + str x1, [x0, 16] + adrp x1, ftl_nandc_get_irq_status + add x1, x1, :lo12:ftl_nandc_get_irq_status + str x1, [x0, 120] + adrp x1, ftl_proc_ftl_read + add x1, x1, :lo12:ftl_proc_ftl_read + str x1, [x0, 128] + adrp x1, ftl_do_gc + add x1, x1, :lo12:ftl_do_gc + str x1, [x0, 104] + adrp x1, ftl_discard + add x1, x1, :lo12:ftl_discard + str x1, [x0, 56] + ldr x0, [x19, 240] bl FlashInit mov w20, w0 cmn w22, #2 adrp x22, .LANCHOR2 - bne .L4274 + bne .L4179 add x19, x22, :lo12:.LANCHOR2 - adrp x1, gNandParaInfo - add x19, x19, 8 - add x1, x1, :lo12:gNandParaInfo mov w2, 32 + add x19, x19, 8 + adrp x1, gNandParaInfo mov x0, x19 + add x1, x1, :lo12:gNandParaInfo bl ftl_memcpy - ldrb w0, [x19,18] + ldrb w0, [x19, 18] bl flash_lsb_page_tbl_build - ldrh w0, [x19,10] - strh w0, [x19,26] -.L4274: + ldrh w0, [x19, 10] + strh w0, [x19, 26] +.L4179: adrp x0, g_nandc_version_data - ldr w1, [x0,#:lo12: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 .L4275 + bne .L4180 adrp x0, gFlashSlcMode - ldrb w0, [x0,#:lo12:gFlashSlcMode] - cbnz w0, .L4276 -.L4275: + ldrb w0, [x0, #:lo12:gFlashSlcMode] + cbnz w0, .L4181 +.L4180: add x0, x1, :lo12:.LANCHOR0 - strb wzr, [x1,#:lo12:.LANCHOR0] - strb wzr, [x0,1154] -.L4276: + strb wzr, [x1, #:lo12:.LANCHOR0] + strb wzr, [x0, 1154] +.L4181: adrp x2, gNandFlashIDBEccBits add x0, x1, :lo12:.LANCHOR0 add x22, x22, :lo12:.LANCHOR2 add x21, x21, :lo12:.LANCHOR5 - ldrb w2, [x2,#:lo12:gNandFlashIDBEccBits] - strb w2, [x0,1152] + ldrb w2, [x2, #:lo12:gNandFlashIDBEccBits] + strb w2, [x0, 1152] adrp x2, gNandFlashEccBits - ldrh w3, [x22,18] - str xzr, [x21,328] - ldrb w2, [x2,#:lo12:gNandFlashEccBits] - strb w2, [x0,1244] - mov w2, 1 + ldrh w3, [x22, 18] + str xzr, [x21, 336] + ldrb w2, [x2, #:lo12:gNandFlashEccBits] + strb w2, [x0, 1249] mov w0, 0 -.L4277: - cmp w2, w3 - bhi .L4282 - add w0, w0, 1 - lsl w2, w2, 1 - uxth w0, w0 - b .L4277 -.L4282: - adrp x2, .LANCHOR3+1312 + mov w2, 1 +.L4182: + cmp w3, w2 + bcs .L4183 add x1, x1, :lo12:.LANCHOR0 + adrp x2, .LANCHOR3+1304 sub w0, w0, #1 - strb wzr, [x1,1192] - strh w0, [x2,#:lo12:.LANCHOR3+1312] - cbnz w20, .L4273 + strh w0, [x2, #:lo12:.LANCHOR3+1304] + strb wzr, [x1, 1192] + cbnz w20, .L4178 bl FtlInit mov w20, w0 -.L4273: - adrp x0, .LC313 - mov w1, w20 - add x0, x0, :lo12:.LC313 - bl printk - mov w0, w20 -.L4270: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x29, x30, [sp], 48 - ret + b .L4178 +.L4183: + add w0, w0, 1 + lsl w2, w2, 1 + and w0, w0, 65535 + b .L4182 .size rk_ftl_init, .-rk_ftl_init .align 2 .global zftl_write .type zftl_write, %function zftl_write: - stp x29, x30, [sp, -96]! + stp x29, x30, [sp, -112]! add x29, sp, 0 - stp x19, x20, [sp,16] - mov w20, w0 + stp x19, x20, [sp, 16] + mov w19, w0 adrp x0, .LANCHOR2 - stp x21, x22, [sp,32] - stp x25, x26, [sp,64] - ldr w0, [x0,#:lo12:.LANCHOR2] - mov w19, w1 - stp x23, x24, [sp,48] - stp x27, x28, [sp,80] + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + mov w20, w1 + ldr w0, [x0, #:lo12:.LANCHOR2] mov w21, w2 - mov x25, x3 - tbz x0, 12, .L4284 + stp x23, x24, [sp, 48] + mov x26, x3 + stp x27, x28, [sp, 80] + tbz x0, 12, .L4189 + ldr w4, [x26] + mov w3, w2 adrp x0, .LC314 - ldr w4, [x25] + mov w2, w1 add x0, x0, :lo12:.LC314 - mov w1, w20 - mov w2, w19 - mov w3, w21 + mov w1, w19 bl printk -.L4284: - cbnz w20, .L4285 +.L4189: + cbnz w19, .L4190 adrp x0, .LANCHOR0+1032 - mov w20, 24576 - ldr w1, [x0,#:lo12:.LANCHOR0+1032] - b .L4286 -.L4285: - cmp w20, 3 - mov w0, -1 - bhi .L4287 - lsl w20, w20, 13 - mov w1, 8192 -.L4286: - cmp w19, w1 - bcs .L4303 - cmp w21, w1 - bhi .L4303 - add w2, w19, w21 - mov w0, -1 - cmp w2, w1 - bhi .L4287 - add w19, w20, w19 - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 - sub w24, w21, #1 - add w24, w24, w19 - add w27, w19, w21 - ldrb w0, [x0,3360] - udiv w26, w19, w0 - mov w23, w26 - udiv w24, w24, w0 - sub w22, w24, w26 - add w22, w22, 1 -.L4288: - cbz w22, .L4314 - add x0, x20, :lo12:.LANCHOR0 - ldrb w1, [x0,3388] - cbz w1, .L4289 - ldrb w0, [x0,3362] - cmp w0, 2 - bhi .L4289 + mov w19, 24576 + ldr w0, [x0, #:lo12:.LANCHOR0+1032] +.L4191: + cmp w0, w20 + ccmp w0, w21, 0, hi + bcc .L4209 + add w1, w20, w21 + cmp w0, w1 + bcc .L4209 + adrp x0, .LANCHOR3 + add x0, x0, :lo12:.LANCHOR3 + add w19, w19, w20 + sub w23, w21, #1 + add w23, w23, w19 + adrp x22, .LANCHOR0 + ldrb w1, [x0, 1946] + add x27, x22, :lo12:.LANCHOR0 + str x0, [x29, 104] + add w0, w19, w21 + str w0, [x29, 100] + udiv w25, w19, w1 + udiv w23, w23, w1 + mov w20, w25 + sub w24, w23, w25 + add w24, w24, 1 +.L4193: + cbnz w24, .L4202 bl ftl_write_commit -.L4289: + mov w1, 1 + mov w0, 0 + bl zftl_do_gc + add x1, x22, :lo12:.LANCHOR0 + ldr x0, [x1, 1128] + ldrh w0, [x0, 124] + cbnz w0, .L4203 + ldrh w0, [x1, 3368] + ldrh w1, [x1, 3372] + add w0, w0, w1 + cmp w0, 11 + bgt .L4204 +.L4203: + mov w1, 1 + mov w0, 0 + bl zftl_do_gc +.L4204: + add x22, x22, :lo12:.LANCHOR0 +.L4205: + ldrh w0, [x22, 3368] + ldrh w1, [x22, 3372] + add w0, w0, w1 + cmp w0, 7 + ble .L4206 + bl timer_get_time + adrp x1, .LANCHOR5+472 + str w0, [x1, #:lo12:.LANCHOR5+472] + mov w0, 0 +.L4188: + 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 +.L4190: + cmp w19, 3 + bhi .L4209 + lsl w19, w19, 13 + mov w0, 8192 + b .L4191 +.L4202: + ldrb w0, [x27, 3381] + cbz w0, .L4194 + ldrb w0, [x27, 3353] + cmp w0, 2 + bhi .L4194 + bl ftl_write_commit +.L4194: mov w0, 0 bl buf_alloc mov x28, x0 - cbnz x0, .L4290 + cbnz x0, .L4195 bl ftl_write_commit - b .L4288 -.L4290: - strb wzr, [x0,57] - add x0, x20, :lo12:.LANCHOR0 - cmp w23, w26 - ldrb w4, [x0,3360] - cset w0, eq - strb w4, [x28,56] - cmp w23, w24 - beq .L4292 - cbz w0, .L4293 - b .L4305 -.L4292: - cbz w0, .L4294 -.L4305: - udiv w0, w19, w4 - msub w0, w0, w4, w19 - uxtb w0, w0 - strb w0, [x28,57] - sub w4, w4, w0 - uxtb w4, w4 - cmp w4, w21 - csel w4, w21, w4, hi - b .L4312 -.L4294: - msub w4, w4, w23, w27 -.L4312: - strb w4, [x28,56] -.L4293: - ldrb w1, [x28,57] - sub w22, w22, #1 - ldr x0, [x28,8] - ldrb w2, [x28,56] - add x0, x0, x1, lsl 9 - mov x1, x25 + b .L4193 +.L4195: + strb wzr, [x0, 57] + cmp w20, w25 + ldr x0, [x29, 104] + ccmp w20, w23, 4, ne + ldrb w0, [x0, 1946] + strb w0, [x28, 56] + bne .L4198 + cmp w20, w25 + bne .L4199 + udiv w1, w19, w0 + msub w1, w1, w0, w19 + and w1, w1, 255 + strb w1, [x28, 57] + sub w0, w0, w1 + and w0, w0, 255 + cmp w21, w0 + csel w0, w21, w0, cc +.L4217: + strb w0, [x28, 56] +.L4198: + ldrb w4, [x28, 57] + mov x1, x26 + ldrb w2, [x28, 56] + sub w24, w24, #1 + ldr x0, [x28, 8] lsl w2, w2, 9 + add x0, x0, x4, lsl 9 bl ftl_memcpy - str w23, [x28,36] - add x0, x20, :lo12:.LANCHOR0 - add w23, w23, 1 - ldr x1, [x0,3392] - ldr w0, [x1,8] + ldr x1, [x27, 3384] + str w20, [x28, 36] + add w20, w20, 1 + ldr w0, [x1, 8] add w2, w0, 1 - str w2, [x1,8] - str w0, [x28,32] + str w2, [x1, 8] + str w0, [x28, 32] mov x0, x28 bl ftl_write_buf - ldrb w0, [x28,56] - add x25, x25, x0, lsl 9 - b .L4288 -.L4314: - bl ftl_write_commit - mov w1, 1 - mov w0, w22 - bl zftl_do_gc - add x1, x20, :lo12:.LANCHOR0 - ldr x0, [x1,1120] - ldrh w0, [x0,124] - cbnz w0, .L4298 - ldrh w2, [x1,3376] - ldrh w0, [x1,3380] - add w0, w2, w0 - cmp w0, 11 - bgt .L4300 -.L4298: - mov w0, 0 - mov w1, 1 -.L4313: - bl zftl_do_gc -.L4300: - add x1, x20, :lo12:.LANCHOR0 - ldrh w2, [x1,3376] - ldrh w0, [x1,3380] - add w0, w2, w0 - cmp w0, 7 - bgt .L4315 + ldrb w0, [x28, 56] + add x26, x26, x0, lsl 9 + b .L4193 +.L4199: + ldr w1, [x29, 100] + msub w0, w0, w20, w1 + b .L4217 +.L4206: mov w1, 1 mov w0, 0 bl zftl_do_gc - mov w0, 1 - mov w1, w0 - b .L4313 -.L4315: - bl timer_get_time - adrp x1, .LANCHOR5+1008 - str w0, [x1,#:lo12:.LANCHOR5+1008] - mov w0, 0 - b .L4287 -.L4303: + mov w1, 1 + mov w0, w1 + bl zftl_do_gc + b .L4205 +.L4209: mov w0, -1 -.L4287: - 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 + b .L4188 .size zftl_write, .-zftl_write .align 2 .global zftl_vendor_write .type zftl_vendor_write, %function zftl_vendor_write: stp x29, x30, [sp, -16]! - mov w4, w1 mov x3, x2 - add x29, sp, 0 + mov w2, w1 add w1, w0, 512 - mov w2, w4 + add x29, sp, 0 mov w0, 2 bl zftl_write ldp x29, x30, [sp], 16 @@ -27570,12 +27340,10 @@ zftl_vendor_write: .type zftl_sys_write, %function zftl_sys_write: 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 w2, w1 + mov w1, w0 + add x29, sp, 0 mov w0, 2 bl zftl_write ldp x29, x30, [sp], 16 @@ -27587,248 +27355,244 @@ zftl_sys_write: zftl_discard: stp x29, x30, [sp, -128]! add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, w1 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 add x1, x21, :lo12:.LANCHOR0 - stp x23, x24, [sp,48] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr w1, [x1,1032] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w1, [x1, 1032] cmp w0, w1 - bcs .L4339 - cmp w19, w1 - cset w5, hi - cbnz w5, .L4339 + ccmp w19, w1, 2, cc + bhi .L4244 add w2, w0, w19 - mov w4, -1 - cmp w2, w1 - bhi .L4319 - adrp x23, .LANCHOR5 - add w22, w0, 24576 - add x0, x23, :lo12:.LANCHOR5 - ldr w1, [x0,1056] + cmp w1, w2 + bcc .L4244 + add w23, w0, 24576 + adrp x24, .LANCHOR5 + add x0, x24, :lo12:.LANCHOR5 + ldr w1, [x0, 520] add w1, w19, w1 - str w1, [x0,1056] + str w1, [x0, 520] adrp x0, .LANCHOR2 - str x0, [x29,104] - ldr w2, [x0,#:lo12:.LANCHOR2] - tbz x2, 12, .L4320 + str x0, [x29, 104] + ldr w2, [x0, #:lo12:.LANCHOR2] + tbz x2, 12, .L4224 adrp x0, .LC315 - mov w2, w22 - add x0, x0, :lo12:.LC315 + mov w4, 0 mov w3, w19 - mov w4, w5 + mov w2, w23 + add x0, x0, :lo12:.LC315 bl printk -.L4320: - add x20, x21, :lo12:.LANCHOR0 - ldr x0, [x20,3392] - ldr w25, [x0,8] - add w1, w25, 1 - str w1, [x0,8] - bl ftl_write_commit - bl ftl_flush - ldrb w24, [x20,3360] - udiv w20, w22, w24 - msub w26, w20, w24, w22 - cbz w26, .L4321 - sub w24, w24, w26 - mov w0, w20 - cmp w24, w19 - csel w24, w24, w19, ls - bl lpa_hash_get_ppa - str w0, [x29,120] - cmn w0, #1 - bne .L4322 - mov w0, w20 - add x1, x29, 120 - mov w2, 0 - bl pm_log2phys -.L4322: - ldr w0, [x29,120] - and w27, w24, 65535 - cmn w0, #1 - beq .L4324 - mov w0, 0 - bl buf_alloc - mov x28, x0 - cbz x0, .L4324 - strb w26, [x0,57] - ubfiz x26, x26, 9, 25 - str w20, [x0,36] - mov w1, 0 - strb w24, [x0,56] - lsl w2, w27, 9 - str w25, [x0,32] - ldr x0, [x0,8] - add x0, x0, x26 - bl ftl_memset - mov x0, x28 - bl ftl_write_buf - bl ftl_write_commit +.L4224: add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0,3392] - ldr w0, [x1,76] - add w0, w0, 1 - str w0, [x1,76] -.L4324: - add w20, w20, 1 - sub w19, w19, w27 -.L4321: - cbz w19, .L4326 + adrp x25, .LANCHOR3 + ldr x0, [x0, 3384] + ldr w27, [x0, 8] + add w1, w27, 1 + str w1, [x0, 8] + bl ftl_write_commit bl ftl_flush -.L4326: - mov w0, -1 - mov w26, 1 - str w0, [x29,124] - adrp x27, .LANCHOR3 - mov w28, 24 -.L4327: - add x24, x21, :lo12:.LANCHOR0 - ldrb w0, [x24,3360] - cmp w19, w0 - bcc .L4367 + add x0, x25, :lo12:.LANCHOR3 + ldrb w22, [x0, 1946] + udiv w20, w23, w22 + msub w26, w20, w22, w23 + cbz w26, .L4225 + sub w22, w22, w26 mov w0, w20 + cmp w22, w19 + csel w22, w22, w19, ls bl lpa_hash_get_ppa - str w0, [x29,120] + str w0, [x29, 120] cmn w0, #1 - beq .L4328 + bne .L4226 + mov w2, 0 + add x1, x29, 120 + mov w0, w20 + bl pm_log2phys +.L4226: + ldr w0, [x29, 120] + and w28, w22, 65535 + cmn w0, #1 + beq .L4228 mov w0, 0 bl buf_alloc mov x3, x0 - cbz x0, .L4330 - ldrb w2, [x24,3360] + cbz x0, .L4228 + strb w26, [x0, 57] + ubfiz x26, x26, 9, 25 + strb w22, [x0, 56] mov w1, 0 - str w20, [x0,36] - strb w2, [x0,56] - lsl w2, w2, 9 - str w25, [x0,32] - strb wzr, [x0,57] - ldr x0, [x0,8] - str x3, [x29,96] + ldr x0, [x0, 8] + lsl w2, w28, 9 + stp w27, w20, [x3, 32] + str x3, [x29, 96] + add x0, x0, x26 bl ftl_memset - ldr x3, [x29,96] + ldr x3, [x29, 96] mov x0, x3 bl ftl_write_buf bl ftl_write_commit - b .L4366 -.L4328: + add x0, x21, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldr w0, [x1, 76] + add w0, w0, 1 + str w0, [x1, 76] +.L4228: + add w20, w20, 1 + sub w19, w19, w28 +.L4225: + cbz w19, .L4230 + bl ftl_flush +.L4230: + add x22, x25, :lo12:.LANCHOR3 + add x26, x21, :lo12:.LANCHOR0 + mov w0, -1 + mov w28, 1 + str w0, [x29, 124] +.L4231: + ldrb w0, [x22, 1946] + cmp w19, w0 + bcs .L4236 + cbz w19, .L4238 mov w0, w20 - add x1, x29, 120 - mov w2, 0 - bl pm_log2phys - ldr w0, [x29,120] + bl lpa_hash_get_ppa + str w0, [x29, 120] cmn w0, #1 - beq .L4330 + bne .L4239 + mov w2, 0 + add x1, x29, 120 + mov w0, w20 + bl pm_log2phys +.L4239: + ldr w0, [x29, 120] + cmn w0, #1 + beq .L4238 + mov w0, 0 + bl buf_alloc + mov x22, x0 + cbz x0, .L4238 + add x25, x25, :lo12:.LANCHOR3 + strb wzr, [x0, 57] + strb w19, [x0, 56] + stp w27, w20, [x22, 32] + ldrb w0, [x25, 1946] + cmp w19, w0 + bcc .L4241 + adrp x1, .LANCHOR4 + add x1, x1, :lo12:.LANCHOR4 + add x1, x1, 1056 + mov w2, 1496 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl printk + bl dump_stack +.L4241: + ldr x0, [x22, 8] + lsl w2, w19, 9 + mov w1, 0 + bl ftl_memset + mov x0, x22 + bl ftl_write_buf + bl ftl_write_commit + add x0, x21, :lo12:.LANCHOR0 + ldr x1, [x0, 3384] + ldr w0, [x1, 76] + add w0, w0, 1 + str w0, [x1, 76] +.L4238: + add x0, x24, :lo12:.LANCHOR5 + ldr w1, [x0, 520] + cmp w1, 8192 + bls .L4245 + ldr x0, [x29, 104] + ldr w0, [x0, #:lo12:.LANCHOR2] + tbz x0, 12, .L4242 + adrp x0, .LC315 + mov w4, 0 + mov w3, w19 + mov w2, w23 + add x0, x0, :lo12:.LC315 + bl printk +.L4242: + add x24, x24, :lo12:.LANCHOR5 + add x21, x21, :lo12:.LANCHOR0 + str wzr, [x24, 520] + bl flt_sys_flush + mov w0, 1 + str w0, [x21, 3396] +.L4245: + mov w0, 0 + b .L4222 +.L4236: + mov w0, w20 + bl lpa_hash_get_ppa + str w0, [x29, 120] + cmn w0, #1 + beq .L4232 + mov w0, 0 + bl buf_alloc + mov x3, x0 + cbz x0, .L4234 + ldrb w2, [x22, 1946] + mov w1, 0 + strb w2, [x0, 56] + strb wzr, [x0, 57] + ldr x0, [x0, 8] + lsl w2, w2, 9 + stp w27, w20, [x3, 32] + str x3, [x29, 96] + bl ftl_memset + ldr x3, [x29, 96] + mov x0, x3 + bl ftl_write_buf + bl ftl_write_commit +.L4271: + ldr x1, [x26, 3384] + ldr w0, [x1, 76] + add w0, w0, 1 + str w0, [x1, 76] +.L4234: + ldrb w0, [x22, 1946] + add w20, w20, 1 + sub w19, w19, w0 + b .L4231 +.L4232: + mov w2, 0 + add x1, x29, 120 + mov w0, w20 + bl pm_log2phys + ldr w0, [x29, 120] + cmn w0, #1 + beq .L4234 add x1, x29, 124 mov w2, 1 mov w0, w20 bl pm_log2phys - add x2, x27, :lo12:.LANCHOR3 - ldrb w1, [x24,1257] - ldr w0, [x29,120] - sub w1, w28, w1 - ldrh w3, [x2,1312] - sub w1, w1, w3 - lsr w0, w0, w3 - lsl w1, w26, w1 - sub w1, w1, #1 - and w1, w1, w0 - ldrb w0, [x2,1314] - udiv w0, w1, w0 + ldrb w1, [x26, 1205] + mov w0, 24 + ldrh w2, [x22, 1304] + sub w0, w0, w1 + ldr w1, [x29, 120] + sub w0, w0, w2 + lsr w1, w1, w2 + lsl w0, w28, w0 + sub w0, w0, #1 + and w0, w0, w1 + ldrb w1, [x22, 1306] + udiv w0, w0, w1 bl ftl_vpn_decrement -.L4366: - ldr x1, [x24,3392] - ldr w0, [x1,76] - add w0, w0, 1 - str w0, [x1,76] -.L4330: - add x0, x21, :lo12:.LANCHOR0 - add w20, w20, 1 - ldrb w0, [x0,3360] - sub w19, w19, w0 - b .L4327 -.L4367: - cbz w19, .L4334 - mov w0, w20 - bl lpa_hash_get_ppa - str w0, [x29,120] - cmn w0, #1 - bne .L4335 - mov w0, w20 - add x1, x29, 120 - mov w2, 0 - bl pm_log2phys -.L4335: - ldr w0, [x29,120] - cmn w0, #1 - beq .L4334 - mov w0, 0 - bl buf_alloc - mov x24, x0 - cbz x0, .L4334 - str w20, [x0,36] - strb wzr, [x0,57] - strb w19, [x0,56] - str w25, [x0,32] - add x0, x21, :lo12:.LANCHOR0 - ldrb w0, [x0,3360] - cmp w19, w0 - bcc .L4337 - adrp x1, .LANCHOR4 - adrp x0, .LC0 - add x1, x1, :lo12:.LANCHOR4 - mov w2, 1495 - add x1, x1, 1040 - add x0, x0, :lo12:.LC0 - bl printk - bl dump_stack -.L4337: - ldr x0, [x24,8] - mov w1, 0 - lsl w2, w19, 9 - bl ftl_memset - mov x0, x24 - bl ftl_write_buf - bl ftl_write_commit - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0,3392] - ldr w0, [x1,76] - add w0, w0, 1 - str w0, [x1,76] -.L4334: - add x0, x23, :lo12:.LANCHOR5 - mov w4, 0 - ldr w1, [x0,1056] - cmp w1, 8192 - bls .L4319 - ldr x0, [x29,104] - ldr w0, [x0,#:lo12:.LANCHOR2] - tbz x0, 12, .L4338 - adrp x0, .LC315 - mov w2, w22 - add x0, x0, :lo12:.LC315 - mov w3, w19 - bl printk -.L4338: - add x23, x23, :lo12:.LANCHOR5 - add x21, x21, :lo12:.LANCHOR0 - str wzr, [x23,1056] - bl flt_sys_flush - mov w0, 1 - mov w4, 0 - str w0, [x21,3412] - b .L4319 -.L4339: - mov w4, -1 -.L4319: - mov w0, w4 - 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] + b .L4271 +.L4244: + mov w0, -1 +.L4222: + 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 zftl_discard, .-zftl_discard @@ -27837,51 +27601,49 @@ zftl_discard: .type dump_pm_blk, %function dump_pm_blk: stp x29, x30, [sp, -48]! - adrp x0, .LC267 mov w2, 4 - add x29, sp, 0 - stp x21, x22, [sp,32] - adrp x21, .LANCHOR0 + adrp x0, .LC267 add x0, x0, :lo12:.LC267 - stp x19, x20, [sp,16] - add x19, x21, :lo12:.LANCHOR0 - adrp x20, .LANCHOR5 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR5 + add x21, x21, :lo12:.LANCHOR5 + mov w20, 0 mov w22, 65535 - ldr x3, [x19,3392] - add x1, x3, 704 - ldrh w3, [x3,698] + ldr x1, [x19, 3384] + add x1, x1, 704 + ldrh w3, [x1, -6] bl rknand_print_hex - add x3, x20, :lo12:.LANCHOR5 - ldr x1, [x19,3392] + ldrh w3, [x21, 220] adrp x0, .LC268 + ldr x1, [x19, 3384] mov w2, 2 add x0, x0, :lo12:.LC268 add x1, x1, 416 - ldrh w3, [x3,264] - mov w19, 0 bl rknand_print_hex -.L4369: - add x0, x20, :lo12:.LANCHOR5 - ldrh w0, [x0,264] - cmp w0, w19 - bls .L4372 - add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0,3392] - add x0, x0, w19, sxtw 1 - ldrh w0, [x0,416] - cmp w0, w22 - beq .L4370 - mov x1, 0 - bl ftl_sblk_dump -.L4370: - add w19, w19, 1 - uxth w19, w19 - b .L4369 -.L4372: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] +.L4273: + ldrh w0, [x21, 220] + cmp w0, w20 + bhi .L4275 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret +.L4275: + ldr x0, [x19, 3384] + add x0, x0, w20, sxtw 1 + ldrh w0, [x0, 416] + cmp w0, w22 + beq .L4274 + mov x1, 0 + bl ftl_sblk_dump +.L4274: + add w20, w20, 1 + and w20, w20, 65535 + b .L4273 .size dump_pm_blk, .-dump_pm_blk .align 2 .global id_block_prog_msb_ff_data @@ -27889,720 +27651,717 @@ dump_pm_blk: id_block_prog_msb_ff_data: stp x29, x30, [sp, -96]! add x29, sp, 0 - stp x21, x22, [sp,32] + stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - stp x23, x24, [sp,48] - uxtb w23, w0 + stp x23, x24, [sp, 48] + and w24, w0, 255 add x0, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - uxth w19, w2 - ldr x2, [x0,1144] - ldrb w0, [x0,1154] - ldrb w2, [x2,19] - cbnz w0, .L4373 - sub w0, w2, #5 - uxtb w0, w0 - cmp w0, 2 - bls .L4375 - cmp w2, 68 - beq .L4375 - sub w2, w2, #19 - and w2, w2, -17 - uxtb w2, w2 - cbnz w2, .L4373 -.L4375: + stp x19, x20, [sp, 16] + stp x25, x26, [sp, 64] + and w19, w2, 65535 + str x27, [sp, 80] + ldrb w2, [x0, 1154] + cbnz w2, .L4277 + ldr x0, [x0, 1144] + ldrb w0, [x0, 19] + sub w0, w0, #5 + and w0, w0, 255 + cmp w0, 63 + bhi .L4277 + mov x2, 16391 + movk x2, 0x4000, lsl 16 + movk x2, 0x8000, lsl 48 + lsr x0, x2, x0 + tbz x0, 0, .L4277 adrp x20, .LANCHOR3 - adrp x24, .LC316 add x20, x20, :lo12:.LANCHOR3 + adrp x23, .LC316 mov w25, w1 - add x24, x24, :lo12:.LC316 - add x20, x20, 2484 - mov w27, 65535 -.L4377: - add x28, x21, :lo12:.LANCHOR0 - ldr x0, [x28,1144] - ldrh w0, [x0,10] + add x20, x20, 2476 + add x23, x23, :lo12:.LC316 +.L4279: + add x26, x21, :lo12:.LANCHOR0 + ldr x0, [x26, 1144] + ldrh w0, [x0, 10] cmp w0, w19 - bls .L4373 - add w26, w19, w25 - ldrh w3, [x20,w19,sxtw 1] - mov x0, x24 - mov w1, w19 - mov w2, w26 - bl printk - ldrh w0, [x20,w19,sxtw 1] - cmp w0, w27 - bne .L4373 - adrp x22, .LANCHOR5 - mov w1, 255 - add x22, x22, :lo12:.LANCHOR5 - mov w2, 16384 - add w19, w19, 1 - ldr x0, [x22,296] - uxth w19, w19 - bl ftl_memset - ldr x4, [x28,1144] - mov w0, w23 - ldr x2, [x22,296] - mov w1, w26 - ldrb w4, [x4,9] - mov x3, x2 - bl flash_prog_page - b .L4377 -.L4373: - 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] + bhi .L4280 +.L4277: + 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 +.L4280: + sxtw x22, w19 + add w27, w19, w25 + mov w1, w19 + mov w2, w27 + mov x0, x23 + ldrh w3, [x20, x22, lsl 1] + bl printk + ldrh w1, [x20, x22, lsl 1] + mov w0, 65535 + cmp w1, w0 + bne .L4277 + adrp x22, .LANCHOR5 + add x22, x22, :lo12:.LANCHOR5 + mov w2, 16384 + mov w1, 255 + add w19, w19, 1 + ldr x0, [x22, 304] + and w19, w19, 65535 + bl ftl_memset + ldr x0, [x26, 1144] + mov w1, w27 + ldr x3, [x22, 304] + mov x2, x3 + ldrb w4, [x0, 9] + mov w0, w24 + bl flash_prog_page + b .L4279 .size id_block_prog_msb_ff_data, .-id_block_prog_msb_ff_data .align 2 .global write_idblock .type write_idblock, %function write_idblock: stp x29, x30, [sp, -304]! - add x29, sp, 0 - stp x23, x24, [sp,48] - adrp x23, .LANCHOR0 - add x3, x23, :lo12:.LANCHOR0 - stp x21, x22, [sp,32] - stp x19, x20, [sp,16] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - ldr x4, [x3,1144] - ldrb w3, [x3,1154] - str w3, [x29,140] - ldrb w20, [x4,9] - ldrh w24, [x4,10] - adrp x4, .LANCHOR2+34 - ldr w3, [x1] - ldrh w21, [x4,#:lo12:.LANCHOR2+34] - ldrb w4, [x23,#:lo12:.LANCHOR0] - str w4, [x29,156] - ldrh w4, [x29,156] - str w4, [x29,212] - mov w4, 19282 - movk w4, 0x534e, lsl 16 - cmp w3, w4 mov w4, 35899 movk w4, 0xfcdc, lsl 16 - cset w5, ne + add x29, sp, 0 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR0 + stp x19, x20, [sp, 16] + ldrb w3, [x23, #:lo12:.LANCHOR0] + str w3, [x29, 160] + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrh w3, [x29, 160] + str w3, [x29, 212] + ldr w3, [x1] cmp w3, w4 - cset w4, ne - tst w5, w4 - beq .L4380 mov w4, 19282 - movk w4, 0x5353, lsl 16 + movk w4, 0x534e, lsl 16 + ccmp w3, w4, 4, ne + beq .L4283 + add w4, w4, 327680 cmp w3, w4 - bne .L4514 -.L4380: + beq .L4283 +.L4400: + mov w0, -1 +.L4282: + 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], 304 + ret +.L4283: cmp w0, 15 - bls .L4514 + bls .L4400 + add x25, x23, :lo12:.LANCHOR0 mov w19, w0 + str x2, [x29, 168] + str x1, [x29, 216] + ldr x0, [x25, 1144] + ldrb w20, [x0, 9] + ldrh w24, [x0, 10] + adrp x0, .LANCHOR2+34 + ldrh w21, [x0, #:lo12:.LANCHOR2+34] + ldrb w0, [x25, 1154] + str w0, [x29, 144] mov w0, 59392 movk w0, 0x3, lsl 16 - str x2, [x29,160] - str x1, [x29,216] bl ftl_malloc mov x22, x0 - cbz x0, .L4514 - adrp x0, .LANCHOR5+1032 - str wzr, [x29,236] - ldrb w0, [x0,#:lo12:.LANCHOR5+1032] - cbz w0, .L4507 - add x0, x23, :lo12:.LANCHOR0 - ldrb w1, [x23,#:lo12:.LANCHOR0] - ldrb w0, [x0,1154] - cbz w1, .L4384 - cmp w0, wzr + cbz x0, .L4400 + adrp x0, .LANCHOR5+496 + ldrb w0, [x0, #:lo12:.LANCHOR5+496] + cbz w0, .L4339 + ldrb w1, [x23, #:lo12:.LANCHOR0] + ldrb w0, [x25, 1154] + cbz w1, .L4287 + cmp w0, 0 cset w0, eq - b .L4510 -.L4384: +.L4397: + str w0, [x29, 236] + b .L4394 +.L4287: cmp w0, 3 - beq .L4438 - ldr w2, [x29,212] + beq .L4340 + ldr w2, [x29, 212] cmp w0, 2 mov w1, 2 - csel w1, w2, w1, ne - cmp w0, 2 mov w0, 3 - str w1, [x29,212] + csel w1, w2, w1, ne csel w0, wzr, w0, ne - b .L4510 -.L4438: - str w0, [x29,212] - mov w0, 2 -.L4510: - str w0, [x29,236] -.L4507: - ldr x0, [x29,216] - mov w1, 19282 - movk w1, 0x534e, lsl 16 - ldr w0, [x0] - cmp w0, w1 + str w1, [x29, 212] + b .L4397 +.L4339: + str wzr, [x29, 236] +.L4394: + ldr x0, [x29, 216] mov w1, 35899 movk w1, 0xfcdc, lsl 16 - cset w2, ne + ldr w0, [x0] cmp w0, w1 - cset w1, ne - tst w2, w1 - beq .L4386 mov w1, 19282 - movk w1, 0x5353, lsl 16 + movk w1, 0x534e, lsl 16 + ccmp w0, w1, 4, ne + beq .L4289 + add w1, w1, 327680 cmp w0, w1 - beq .L4386 + beq .L4289 mov x0, x22 bl ftl_free -.L4514: - mov w0, -1 - b .L4508 -.L4386: + b .L4400 +.L4340: + str w0, [x29, 212] + mov w0, 2 + b .L4397 +.L4289: mov w0, 0 - add w19, w19, 511 - mul w24, w20, w24 bl zftl_flash_exit_slc_mode - lsr w19, w19, 9 add x0, x23, :lo12:.LANCHOR0 + add w19, w19, 511 + mul w24, w24, w20 + lsr w19, w19, 9 cmp w19, 8 - mov w3, 0 + mov w4, 17739 + ldrb w0, [x0, 1154] mov w2, 63871 - ldrb w0, [x0,1154] - strb w0, [x23,#:lo12:.LANCHOR0] + strb w0, [x23, #:lo12:.LANCHOR0] + movk w4, 0x4e52, lsl 16 mov w0, 8 csel w19, w19, w0, cs sub w0, w24, #1 add w0, w0, w19 udiv w0, w0, w24 - str w0, [x29,136] - ldr x0, [x29,216] - add x0, x0, 253952 - add x0, x0, 2044 -.L4392: - sub x1, x0, #512 - ldr w1, [x1] - cbnz w1, .L4387 - cbnz w3, .L4388 - mov w1, 17739 - movk w1, 0x4e52, lsl 16 - b .L4511 -.L4388: - ldr x1, [x29,216] - ldr w1, [x1,w3,uxtw 2] -.L4511: - add w3, w3, 1 + str w0, [x29, 132] + ldr x0, [x29, 216] + add x3, x0, 253952 + mov w0, 0 + add x3, x3, 1532 +.L4295: + ldr w1, [x3] + cbnz w1, .L4290 + cbnz w0, .L4291 + str w4, [x3, 512] +.L4292: + add w0, w0, 1 sub w2, w2, #1 - cmp w3, 4095 - str w1, [x0] - csel w3, w3, wzr, cc + cmp w0, 4095 + sub x3, x3, #4 + csel w0, w0, wzr, cc cmp w2, 4096 - sub x0, x0, #4 - bne .L4392 - b .L4391 -.L4387: - adrp x0, .LC317 - add x0, x0, :lo12:.LC317 - bl printk -.L4391: - mul w0, w20, w21 - str w0, [x29,168] - adrp x0, .LC318 - ldr x1, [x29,160] - add x0, x0, :lo12:.LC318 - mov w2, 4 + bne .L4295 +.L4294: + ldr x1, [x29, 168] + mul w0, w21, w20 mov w3, 5 - mov x21, 0 + mov w2, 4 + str w0, [x29, 164] + adrp x0, .LC318 + add x0, x0, :lo12:.LC318 bl rknand_print_hex - adrp x0, .LC319 - mov w1, w19 - add x0, x0, :lo12:.LC319 mov w2, w19 + mov w1, w19 + adrp x0, .LC319 + add x0, x0, :lo12:.LC319 bl printk - str w21, [x29,232] - adrp x0, .LC320 - add x0, x0, :lo12:.LC320 - str x0, [x29,112] + str xzr, [x29, 224] adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 - str x0, [x29,104] -.L4434: - adrp x26, .LANCHOR5 - mov w0, w21 - add x1, x26, :lo12:.LANCHOR5 - ldrb w1, [x1,1032] - cbnz w1, .L4393 - ldr x1, [x29,160] - ldr w2, [x29,168] - ldr w1, [x1,x21,lsl 2] - mul w20, w1, w2 - cbz w21, .L4394 - ldr w2, [x29,136] - cmp w2, 1 - bls .L4394 - sub w0, w21, #1 - ldr x2, [x29,160] - ldr w0, [x2,x0,lsl 2] - add w0, w0, 1 - cmp w1, w0 - bne .L4394 - b .L4395 -.L4393: - adrp x24, .LANCHOR0 - add x25, x24, :lo12:.LANCHOR0 - ldr x1, [x25,1128] - add x1, x1, w21, uxtw - ldrb w20, [x1,32] - mov x1, x24 - cmp w20, 255 - beq .L4395 - ldr w2, [x29,168] - mul w20, w20, w2 - ldr w2, [x29,236] - cbz w2, .L4394 - tbnz x0, 0, .L4444 - cmp w2, 3 - cset w23, eq - cbz w23, .L4396 -.L4444: - add x2, x1, :lo12:.LANCHOR0 - ldrb w0, [x29,212] - strb w0, [x1,#:lo12:.LANCHOR0] - strb w0, [x2,1154] - b .L4394 -.L4396: - mov w0, w23 - bl zftl_flash_exit_slc_mode - strb w23, [x24,#:lo12:.LANCHOR0] - strb w23, [x25,1154] -.L4394: - mov w1, 0 - mov w2, 512 - mov x0, x22 - adrp x24, .LANCHOR0 - bl ftl_memset - add x0, x24, :lo12:.LANCHOR0 - ldr x1, [x0,1144] - ldrb w25, [x1,9] - ldrh w28, [x1,10] - adrp x1, .LANCHOR2 - add x1, x1, :lo12:.LANCHOR2 - mul w28, w25, w28 - ldrh w27, [x1,34] - ldrb w1, [x0,1240] - str w1, [x29,132] - udiv w1, w20, w25 - strb wzr, [x0,1240] - mov w0, 0 - mul w27, w25, w27 - bl flash_erase_block - cmp w19, w28 - mov w1, 1 - bls .L4398 - add w1, w20, w27 - mov w0, 0 - bl flash_erase_block - mov w1, 2 -.L4398: - add x3, x24, :lo12:.LANCHOR0 - ldr x0, [x3,1144] - ldrh w23, [x0,10] - ldrb w0, [x0,12] - lsl w23, w23, 2 - mul w23, w23, w1 - sdiv w0, w23, w0 - str w0, [x29,204] - udiv w0, w20, w27 - msub w0, w0, w27, w20 - str w0, [x29,208] - sub w28, w20, w0 - cmp w20, w28 - bne .L4442 - ldrb w0, [x3,1028] - cmp w0, 9 - bne .L4442 - add x26, x26, :lo12:.LANCHOR5 - mov w1, 0 - mov w2, 1024 - str x3, [x29,224] - ldr x26, [x26,336] - mov x0, x26 - bl ftl_memset - str wzr, [x26,12] - mov w0, 18766 - ldr x3, [x29,224] - movk w0, 0x464e, lsl 16 - str w0, [x26] - mov w0, 12 - str w0, [x26,4] - ldrb w0, [x3,1154] - strb wzr, [x26,16] - cbz w0, .L4400 - ldr x0, [x3,1144] - ldrb w0, [x0,29] - strb w0, [x26,16] -.L4400: - add x24, x24, :lo12:.LANCHOR0 - mov w0, 4 - strb w0, [x26,17] - cmp w25, 8 - ldr x1, [x24,1144] - ldrh w0, [x1,10] - ldrb w1, [x1,12] - strb wzr, [x26,20] - strh wzr, [x26,22] - sdiv w0, w0, w1 - mov w1, 16 - strh w0, [x26,18] - mov w0, 70 - csel w0, w0, w1, hi - mov w1, 12 - strb w0, [x26,21] - add x0, x26, 12 - bl js_hash - str w0, [x26,8] - sub w0, w19, #4 - str w0, [x29,224] - b .L4399 -.L4442: - str w19, [x29,224] - mov x26, 0 -.L4399: - adrp x10, .LANCHOR0 - ldr x24, [x29,216] - mov w23, 0 - add x27, x10, :lo12:.LANCHOR0 -.L4402: - ldr w0, [x29,204] - cmp w23, w0 - bcs .L4515 - ldr w0, [x29,208] - ldrb w2, [x27,1154] - add w8, w23, w0 - add x0, x27, 4 - ubfx x8, x8, 2, 16 - add w1, w8, 1 - ldrh w0, [x0,w1,sxtw 1] - cbz w2, .L4404 - ldrb w3, [x27,1] - lsl w0, w1, 1 - cmp w3, wzr - csel w0, w0, w1, ne -.L4404: - ldrb w1, [x27,1028] - cmp w1, 9 - beq .L4512 - sub w0, w0, #1 - lsl w0, w0, 2 -.L4512: - str w0, [x29,240] - mov w0, 61424 - str w0, [x29,244] - add x0, x27, 4 - ldrh w0, [x0,w8,sxtw 1] - cbnz w2, .L4408 - mov w8, w0 - b .L4409 -.L4408: - ldrb w1, [x27,1] - lsl w0, w8, 1 - cmp w1, wzr - csel w8, w0, w8, ne -.L4409: - mul w0, w8, w25 - cbnz x26, .L4410 - add w26, w0, w28 - ldr w5, [x24] - ldr w6, [x29,240] - mov w1, w26 - ldr x0, [x29,112] - mov w2, w23 - mov w3, w19 - mov x4, x24 - mov w7, 61424 - str x8, [x29,192] - bl printk - mov w0, w26 - mov x1, x24 - add x2, x29, 240 - bl fw_flash_page_prog.constprop.30 - ldrb w0, [x27,1154] - ldr x8, [x29,192] - cbnz w0, .L4411 - udiv w1, w28, w25 - add w2, w8, 1 - bl id_block_prog_msb_ff_data -.L4411: - ldr w0, [x29,224] - add x24, x24, 2048 - add w0, w0, 16 - cmp w23, w0 - bcc .L4412 - ldr w0, [x29,224] - add w1, w0, 20 - ldr x0, [x29,216] - cmp w23, w1 - add x0, x0, 2048 - csel x24, x24, x0, cs - b .L4412 -.L4410: - add w0, w0, w28 - mov x1, x26 - add x2, x29, 240 - bl fw_flash_page_prog.constprop.30 -.L4412: - add w9, w23, 4 - mov x26, 0 - uxth w23, w9 - b .L4402 -.L4515: - ldr x0, [x29,104] - adrp x23, .LANCHOR0 - add x23, x23, :lo12:.LANCHOR0 - mov w25, 0 add x0, x0, 8 - mov x24, x22 - ldrb w1, [x0,9] - mov w26, 4 - str w1, [x29,152] - ldrh w0, [x0,26] - strb wzr, [x23,1240] - str w25, [x29,200] - mul w0, w1, w0 - udiv w1, w20, w0 - msub w0, w1, w0, w20 - str w0, [x29,204] - sub w0, w20, w0 - str w0, [x29,148] - ldr w0, [x29,204] - and w0, w0, 3 - str w0, [x29,192] - ldr w0, [x29,224] - str w0, [x29,172] - adrp x0, .LC321 - add x0, x0, :lo12:.LC321 - str x0, [x29,120] -.L4414: - ldr w0, [x29,172] - adrp x27, .LANCHOR0 - cmp w25, w0 - bcs .L4516 - ldr w0, [x29,192] - add x1, x23, 4 - ldrb w2, [x23,1154] - sub w0, w26, w0 - uxth w0, w0 - str w0, [x29,176] - ldr w0, [x29,204] - add w0, w25, w0 - udiv w0, w0, w26 - and w0, w0, 65535 - ldrh w1, [x1,w0,sxtw 1] - cbnz w2, .L4415 - mov w0, w1 - b .L4416 -.L4415: - ldrb w2, [x23,1] - lsl w1, w0, 1 - cmp w2, wzr - csel w0, w1, w0, ne -.L4416: - ldr w1, [x29,152] - ldr w2, [x29,148] - madd w0, w0, w1, w2 - str w0, [x29,144] - ldrb w0, [x23,1152] - str w0, [x29,208] - ldr w1, [x29,192] - ldr w0, [x29,144] - add w27, w0, w1 - ldr x0, [x23,1144] - ldrb w0, [x0,9] - udiv w27, w27, w0 - ldrb w0, [x23,1244] - str w0, [x29,128] - ldr w0, [x29,208] - bl nandc_bch_sel -.L4417: - mov w0, 0 - mov w1, w27 - mov x2, x24 - add x3, x29, 240 - mov w4, w26 - bl flash_read_page - cmn w0, #1 - mov w28, w0 - bne .L4424 - ldrb w6, [x23,1240] - cbnz w6, .L4419 -.L4422: - adrp x0, .LANCHOR5 - add x0, x0, :lo12:.LANCHOR5 - ldr x6, [x0,328] - cbnz x6, .L4420 - b .L4421 -.L4419: - mov w0, 0 - mov w1, w27 - mov x2, x24 - add x3, x29, 240 - mov w4, w26 - str x6, [x29,96] - strb wzr, [x23,1240] - bl flash_read_page - cmn w0, #1 - ldr x6, [x29,96] - strb w6, [x23,1240] - beq .L4422 - b .L4513 -.L4420: - mov w0, 0 - mov w1, w27 - mov x2, x24 - add x3, x29, 240 - mov w4, w26 - blr x6 - cmn w0, #1 - bne .L4513 -.L4421: - ldrb w0, [x23,1192] - cbz w0, .L4424 - mov w0, 0 - mov w1, w27 - mov x2, x24 - add x3, x29, 240 - mov w4, w26 - bl flash_ddr_tuning_read -.L4513: - mov w28, w0 -.L4424: - cmn w28, #1 - bne .L4425 - ldr w0, [x29,208] - cmp w0, 16 - beq .L4425 - mov w0, 16 - bl nandc_bch_sel - mov w0, 16 - str w0, [x29,208] - b .L4417 -.L4425: - ldr w0, [x29,128] - bl nandc_bch_sel - ldr w0, [x29,200] - cmn w28, #1 - csinv w0, w0, wzr, ne - str w0, [x29,200] - ldr w0, [x29,148] - cmp w25, wzr - cset w1, eq - cmp w0, w20 - cset w0, eq - tst w1, w0 - beq .L4427 - ldr w0, [x29,200] - cbnz w0, .L4427 - ldr w1, [x24] - mov w0, 18766 - movk w0, 0x464e, lsl 16 - cmp w1, w0 - bne .L4427 - ldr w0, [x29,172] - ldr w1, [x29,176] - ldrb w26, [x24,17] - add w0, w0, w1 - str w0, [x29,172] - b .L4428 -.L4427: - ldr x0, [x29,176] - mov w2, w25 - ldr w1, [x29,144] - ubfiz x0, x0, 9, 16 - ldr w3, [x29,240] - add x24, x24, x0 - ldr w4, [x29,244] - ldr x0, [x29,120] - bl printk - str wzr, [x29,192] -.L4428: - ldr w0, [x29,176] - add w25, w0, w25 - uxth w25, w25 - b .L4414 -.L4516: - add x23, x27, :lo12:.LANCHOR0 - ldrb w0, [x29,132] - strb w0, [x23,1240] - ldr w0, [x29,236] - cbz w0, .L4430 - mov w0, 0 - bl zftl_flash_exit_slc_mode - strb wzr, [x27,#:lo12:.LANCHOR0] - strb wzr, [x23,1154] -.L4430: - ldr w0, [x29,224] - mov x1, 0 - lsl w0, w0, 7 -.L4431: - cmp w0, w1 - bls .L4517 - ldr w3, [x22,x1,lsl 2] - add x1, x1, 1 - ldr x2, [x29,216] - add x2, x2, x1, lsl 2 - ldr w2, [x2,-4] - cmp w3, w2 - beq .L4431 - mov x0, x22 - mov w1, 0 - mov w2, 512 - bl ftl_memset - mov w1, w20 - mov w0, 0 - bl flash_erase_block - b .L4395 -.L4517: - ldr w0, [x29,232] + str wzr, [x29, 232] + str x0, [x29, 136] +.L4336: + adrp x27, .LANCHOR5 + add x1, x27, :lo12:.LANCHOR5 + ldr w0, [x29, 224] + ldrb w1, [x1, 496] + cbnz w1, .L4296 + ldr x2, [x29, 224] + cmp w0, 0 + ldr x1, [x29, 168] + ldr w1, [x1, x2, lsl 2] + ldr w2, [x29, 164] + mul w21, w2, w1 + ldr w2, [x29, 132] + ccmp w2, 1, 0, ne + bls .L4297 + ldr x2, [x29, 168] + sub w0, w0, #1 + ldr w0, [x2, x0, lsl 2] add w0, w0, 1 - str w0, [x29,232] - cmp w0, 5 - bhi .L4436 -.L4395: - add x21, x21, 1 - cmp x21, 4 - bne .L4434 -.L4436: + cmp w1, w0 + bne .L4297 +.L4298: + ldr x0, [x29, 224] + add x0, x0, 1 + str x0, [x29, 224] + cmp x0, 4 + bne .L4336 +.L4338: mov w0, 0 bl zftl_flash_exit_slc_mode adrp x0, .LANCHOR0 - ldrb w2, [x29,156] + ldrb w2, [x29, 160] add x1, x0, :lo12:.LANCHOR0 - strb w2, [x0,#:lo12:.LANCHOR0] - ldr w2, [x29,236] - cbz w2, .L4435 - ldrb w2, [x29,140] - strb w2, [x1,1154] -.L4435: + strb w2, [x0, #:lo12:.LANCHOR0] + ldr w2, [x29, 236] + cbz w2, .L4337 + ldrb w2, [x29, 144] + strb w2, [x1, 1154] +.L4337: add x0, x0, :lo12:.LANCHOR0 mov w1, 2 - strb w1, [x0,1264] + strb w1, [x0, 1208] mov w0, 0 bl zftl_flash_enter_slc_mode mov x0, x22 bl ftl_free - ldr w0, [x29,232] - cmp w0, wzr + ldr w0, [x29, 232] + cmp w0, 0 csetm w0, eq -.L4508: - 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], 304 - ret + b .L4282 +.L4291: + ldr x1, [x29, 216] + ldr w1, [x1, w0, uxtw 2] + str w1, [x3, 512] + b .L4292 +.L4290: + adrp x0, .LC317 + add x0, x0, :lo12:.LC317 + bl printk + b .L4294 +.L4296: + adrp x20, .LANCHOR0 + add x23, x20, :lo12:.LANCHOR0 + ldr w2, [x29, 224] + ldr x1, [x23, 1048] + add x1, x1, w2, uxtw + ldrb w21, [x1, 32] + mov x1, x20 + cmp w21, 255 + beq .L4298 + ldr w2, [x29, 164] + mul w21, w21, w2 + ldr w2, [x29, 236] + cbz w2, .L4297 + and w0, w0, -3 + cmp w0, 1 + beq .L4299 + cmp w2, 3 + bne .L4300 +.L4299: + add x2, x1, :lo12:.LANCHOR0 + ldrb w0, [x29, 212] + strb w0, [x1, #:lo12:.LANCHOR0] + strb w0, [x2, 1154] +.L4297: + mov w2, 512 + mov w1, 0 + mov x0, x22 + bl ftl_memset + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + ldr x1, [x0, 1144] + ldrb w24, [x1, 9] + ldrh w23, [x1, 10] + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldrh w25, [x1, 34] + mul w23, w23, w24 + ldrb w1, [x0, 1252] + str w1, [x29, 128] + udiv w1, w21, w24 + strb wzr, [x0, 1252] + mov w0, 0 + mul w25, w25, w24 + bl flash_erase_block + cmp w23, w19 + bcs .L4342 + add w1, w21, w25 + mov w0, 0 + bl flash_erase_block + mov w1, 2 +.L4301: + add x28, x20, :lo12:.LANCHOR0 + ldr x0, [x28, 1144] + ldrh w23, [x0, 10] + ldrb w0, [x0, 12] + lsl w23, w23, 2 + mul w23, w23, w1 + sdiv w0, w23, w0 + str w0, [x29, 176] + udiv w0, w21, w25 + msub w0, w0, w25, w21 + str w0, [x29, 208] + sub w26, w21, w0 + cmp w21, w26 + bne .L4344 + ldrb w0, [x28, 1028] + cmp w0, 9 + bne .L4344 + add x27, x27, :lo12:.LANCHOR5 + mov w2, 1024 + mov w1, 0 + ldr x27, [x27, 352] + mov x0, x27 + bl ftl_memset + mov w0, 18766 + movk w0, 0x464e, lsl 16 + str w0, [x27] + mov w0, 12 + str w0, [x27, 4] + ldrb w0, [x28, 1154] + strb wzr, [x27, 16] + str wzr, [x27, 12] + cbz w0, .L4303 + ldr x0, [x28, 1144] + ldrb w0, [x0, 29] + strb w0, [x27, 16] +.L4303: + add x20, x20, :lo12:.LANCHOR0 + mov w0, 4 + strb w0, [x27, 17] + cmp w24, 8 + sub w28, w19, #4 + ldr x1, [x20, 1144] + ldrh w0, [x1, 10] + ldrb w1, [x1, 12] + strb wzr, [x27, 20] + strh wzr, [x27, 22] + sdiv w0, w0, w1 + mov w1, 16 + strh w0, [x27, 18] + mov w0, 70 + csel w0, w0, w1, hi + strb w0, [x27, 21] + mov w1, 12 + add x0, x27, 12 + bl js_hash + str w0, [x27, 8] +.L4302: + ldr x20, [x29, 216] + adrp x0, .LANCHOR0 + add x25, x0, :lo12:.LANCHOR0 + mov w23, 0 + add x0, x25, 4 + str x0, [x29, 200] +.L4305: + ldr w0, [x29, 176] + cmp w0, w23 + bhi .L4316 + ldr x0, [x29, 136] + mov x23, x22 + mov w24, 4 + mov w25, 0 + stp w28, wzr, [x29, 192] + ldrb w0, [x0, 9] + str w0, [x29, 156] + ldr x0, [x29, 136] + ldr w1, [x29, 156] + ldrh w0, [x0, 26] + mul w0, w0, w1 + adrp x1, .LANCHOR0 + add x20, x1, :lo12:.LANCHOR0 + udiv w1, w21, w0 + strb wzr, [x20, 1252] + msub w0, w1, w0, w21 + str w0, [x29, 208] + sub w0, w21, w0 + str w0, [x29, 152] + ldr w0, [x29, 208] + and w0, w0, 3 + str w0, [x29, 200] + add x0, x20, 4 + str x0, [x29, 104] +.L4317: + ldr w0, [x29, 192] + cmp w25, w0 + bcc .L4331 + adrp x0, .LANCHOR0 + add x20, x0, :lo12:.LANCHOR0 + ldrb w0, [x29, 128] + strb w0, [x20, 1252] + ldr w0, [x29, 236] + cbz w0, .L4332 + mov w0, 0 + bl zftl_flash_exit_slc_mode + adrp x0, .LANCHOR0 + strb wzr, [x20, 1154] + strb wzr, [x0, #:lo12:.LANCHOR0] +.L4332: + lsl w0, w28, 7 + mov x1, 0 +.L4333: + cmp w0, w1 + bhi .L4334 + ldr w0, [x29, 232] + add w0, w0, 1 + str w0, [x29, 232] + cmp w0, 5 + bls .L4298 + b .L4338 +.L4300: + mov w0, 0 + bl zftl_flash_exit_slc_mode + strb wzr, [x20, #:lo12:.LANCHOR0] + strb wzr, [x23, 1154] + b .L4297 +.L4342: + mov w1, 1 + b .L4301 +.L4344: + mov w28, w19 + mov x27, 0 + b .L4302 +.L4316: + ldr w0, [x29, 208] + ldrb w2, [x25, 1154] + add w8, w0, w23 + ldr x0, [x29, 200] + ubfx x8, x8, 2, 16 + add w1, w8, 1 + ldrh w0, [x0, w1, sxtw 1] + cbz w2, .L4307 + ldrb w4, [x25, 1] + lsl w0, w1, 1 + cmp w4, 0 + csel w0, w0, w1, ne +.L4307: + ldrb w1, [x25, 1028] + cmp w1, 9 + bne .L4309 +.L4398: + str w0, [x29, 240] + mov w0, 61424 + str w0, [x29, 244] + ldr x0, [x29, 200] + ldrh w0, [x0, w8, sxtw 1] + cbnz w2, .L4311 + mov w8, w0 +.L4312: + mul w0, w24, w8 + cbnz x27, .L4313 + ldr w5, [x20] + mov x4, x20 + ldr w6, [x29, 240] + mov w3, w19 + add w27, w0, w26 + mov w7, 61424 + str w8, [x29, 196] + mov w2, w23 + mov w1, w27 + adrp x0, .LC320 + add x0, x0, :lo12:.LC320 + bl printk + add x2, x29, 240 + mov x1, x20 + mov w0, w27 + bl fw_flash_page_prog.constprop.29 + ldrb w0, [x25, 1154] + ldr w8, [x29, 196] + cbnz w0, .L4314 + udiv w1, w26, w24 + add w2, w8, 1 + bl id_block_prog_msb_ff_data +.L4314: + add w0, w28, 16 + add x20, x20, 2048 + cmp w23, w0 + bcc .L4315 + ldr x0, [x29, 216] + add w1, w28, 20 + cmp w23, w1 + add x0, x0, 2048 + csel x20, x0, x20, cc +.L4315: + add w9, w23, 4 + mov x27, 0 + and w23, w9, 65535 + b .L4305 +.L4309: + sub w0, w0, #1 + lsl w0, w0, 2 + b .L4398 +.L4311: + ldrb w1, [x25, 1] + lsl w0, w8, 1 + cmp w1, 0 + csel w8, w0, w8, ne + b .L4312 +.L4313: + add x2, x29, 240 + mov x1, x27 + add w0, w0, w26 + bl fw_flash_page_prog.constprop.29 + b .L4315 +.L4331: + ldr w0, [x29, 200] + ldr x1, [x29, 104] + sub w0, w24, w0 + ldrb w2, [x20, 1154] + and w0, w0, 65535 + str w0, [x29, 176] + ldr w0, [x29, 208] + add w0, w0, w25 + udiv w0, w0, w24 + and w0, w0, 65535 + ldrh w1, [x1, w0, sxtw 1] + cbnz w2, .L4318 + mov w0, w1 +.L4319: + ldp w2, w1, [x29, 152] + ldrb w27, [x20, 1152] + madd w0, w1, w0, w2 + str w0, [x29, 148] + ldr w0, [x29, 200] + ldr w1, [x29, 148] + add w26, w0, w1 + ldr x0, [x20, 1144] + ldrb w0, [x0, 9] + udiv w26, w26, w0 + ldrb w0, [x20, 1249] + str w0, [x29, 124] + mov w0, w27 + bl nandc_bch_sel + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + str x0, [x29, 112] +.L4320: + mov w4, w24 + add x3, x29, 240 + mov x2, x23 + mov w1, w26 + mov w0, 0 + bl flash_read_page + mov w5, w0 + cmn w0, #1 + bne .L4321 + ldrb w6, [x20, 1252] + cbnz w6, .L4322 +.L4325: + ldr x0, [x29, 112] + ldr x6, [x0, 336] + cbnz x6, .L4323 +.L4324: + ldrb w0, [x20, 1192] + cbz w0, .L4321 + mov w4, w24 + add x3, x29, 240 + mov x2, x23 + mov w1, w26 + mov w0, 0 + bl flash_ddr_tuning_read + b .L4399 +.L4318: + ldrb w2, [x20, 1] + lsl w1, w0, 1 + cmp w2, 0 + csel w0, w1, w0, ne + b .L4319 +.L4322: + str w6, [x29, 100] + mov w4, w24 + str w5, [x29, 120] + add x3, x29, 240 + strb wzr, [x20, 1252] + mov x2, x23 + mov w1, w26 + mov w0, 0 + bl flash_read_page + cmn w0, #1 + ldr w6, [x29, 100] + strb w6, [x20, 1252] + ldr w5, [x29, 120] + beq .L4325 +.L4399: + mov w5, w0 +.L4321: + cmn w5, #1 + cset w4, eq + cmp w27, 16 + cset w0, ne + tst w4, w0 + beq .L4327 + mov w0, 16 + mov w27, 16 + bl nandc_bch_sel + b .L4320 +.L4323: + str w5, [x29, 120] + mov w4, w24 + add x3, x29, 240 + mov x2, x23 + mov w1, w26 + mov w0, 0 + blr x6 + cmn w0, #1 + ldr w5, [x29, 120] + beq .L4324 + b .L4399 +.L4327: + ldr w0, [x29, 124] + bl nandc_bch_sel + cmp w4, 0 + ldr w0, [x29, 196] + csinv w0, w0, wzr, eq + str w0, [x29, 196] + ldr w0, [x29, 152] + cmp w25, 0 + ccmp w21, w0, 0, eq + bne .L4329 + ldr w0, [x29, 196] + cbnz w0, .L4329 + ldr w0, [x23] + mov w1, 18766 + movk w1, 0x464e, lsl 16 + cmp w0, w1 + bne .L4329 + ldr w0, [x29, 192] + ldr w1, [x29, 176] + ldrb w24, [x23, 17] + add w0, w0, w1 + str w0, [x29, 192] +.L4330: + ldr w0, [x29, 176] + add w25, w0, w25 + and w25, w25, 65535 + b .L4317 +.L4329: + ldr x0, [x29, 176] + mov w2, w25 + ldr w1, [x29, 148] + ldp w3, w4, [x29, 240] + ubfiz x0, x0, 9, 16 + add x23, x23, x0 + adrp x0, .LC321 + add x0, x0, :lo12:.LC321 + bl printk + str wzr, [x29, 200] + b .L4330 +.L4334: + ldr x2, [x29, 216] + ldr w3, [x22, x1, lsl 2] + add x1, x1, 1 + add x2, x2, x1, lsl 2 + ldr w2, [x2, -4] + cmp w3, w2 + beq .L4333 + mov w2, 512 + mov w1, 0 + mov x0, x22 + bl ftl_memset + mov w1, w21 + mov w0, 0 + bl flash_erase_block + b .L4298 .size write_idblock, .-write_idblock .align 2 .global write_loader_lba @@ -28611,644 +28370,651 @@ write_loader_lba: stp x29, x30, [sp, -112]! cmp w0, 64 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] + stp x19, x20, [sp, 16] mov w19, w0 + stp x21, x22, [sp, 32] + adrp x20, .LANCHOR5 + stp x23, x24, [sp, 48] mov w21, w1 mov x24, x2 - adrp x20, .LANCHOR5 - bne .L4519 + bne .L4402 ldr w0, [x2] + mov w1, 35899 + movk w1, 0xfcdc, lsl 16 + cmp w0, w1 mov w1, 19282 movk w1, 0x534e, lsl 16 - mov w2, 35899 + ccmp w0, w1, 4, ne + beq .L4403 + add w1, w1, 327680 cmp w0, w1 - movk w2, 0xfcdc, lsl 16 - cset w3, eq - cmp w0, w2 - cset w1, eq - orr w1, w3, w1 - cbnz w1, .L4535 - mov w1, 19282 - movk w1, 0x5353, lsl 16 - cmp w0, w1 - bne .L4519 -.L4535: + bne .L4402 +.L4403: add x22, x20, :lo12:.LANCHOR5 mov w0, 1 - strb w0, [x22,1060] + strb w0, [x22, 524] mov w0, 59392 movk w0, 0x3, lsl 16 bl ftl_malloc - str x0, [x22,1064] mov w2, 59392 mov w1, 0 movk w2, 0x3, lsl 16 + str x0, [x22, 528] bl ftl_memset mov w0, 64 - str w0, [x22,1072] -.L4519: + str w0, [x22, 536] +.L4402: add x23, x20, :lo12:.LANCHOR5 - adrp x0, .LC322 ldr w2, [x24] - add x0, x0, :lo12:.LC322 - mov w3, w19 mov w4, w21 - ldr x1, [x23,1064] + mov w3, w19 + adrp x0, .LC322 + add x0, x0, :lo12:.LC322 + ldr x1, [x23, 528] bl printk - ldrb w0, [x23,1060] - cbz w0, .L4518 - ldr x22, [x23,1064] - cbz x22, .L4518 + ldrb w0, [x23, 524] + cbz w0, .L4401 + ldr x22, [x23, 528] + cbz x22, .L4401 sub w0, w19, #64 cmp w0, 499 - bhi .L4522 - mov w3, 564 + bhi .L4405 + mov w2, 564 + sub w2, w2, w19 + cmp w21, w2 ubfiz x0, x0, 9, 25 - sub w3, w3, w19 - add x0, x22, x0 - cmp w3, w21 + csel w2, w21, w2, ls mov x1, x24 - csel w2, w3, w21, ls lsl w2, w2, 9 + add x0, x22, x0 bl ftl_memcpy - b .L4523 -.L4522: - cmp w19, 563 - bhi .L4533 -.L4523: +.L4406: add x23, x20, :lo12:.LANCHOR5 - ldr w0, [x23,1072] - cmp w0, w19 - beq .L4531 + ldr w0, [x23, 536] + cmp w19, w0 + beq .L4415 + strb wzr, [x23, 524] mov x0, x22 - strb wzr, [x23,1060] bl ftl_free - str xzr, [x23,1064] -.L4531: + str xzr, [x23, 528] + b .L4415 +.L4405: + cmp w19, 563 + bls .L4406 + ldr w0, [x23, 536] + mov w1, 500 + sub w0, w0, #64 + cmp w0, 500 + csel w0, w0, w1, ls + adrp x1, .LANCHOR0+1144 + ldr x1, [x1, #:lo12:.LANCHOR0+1144] + ldrb w1, [x1, 9] + cmp w1, 4 + beq .L4407 + mov w1, 2 + str w1, [x29, 72] + mov w1, 3 + str w1, [x29, 76] + mov w1, 4 + str w1, [x29, 80] + mov w1, 5 + str w1, [x29, 84] + mov w1, 6 + str w1, [x29, 88] +.L4408: + add x2, x22, 245760 + mov w1, 61952 + add x2, x2, 2048 +.L4414: + ldr w3, [x2] + cbz w3, .L4412 + add w0, w1, 2048 + lsl w0, w0, 2 +.L4413: + mov x1, x22 + add x22, x20, :lo12:.LANCHOR5 + add x2, x29, 72 + bl write_idblock + ldr x0, [x22, 528] + strb wzr, [x22, 524] + bl ftl_free + str xzr, [x22, 528] +.L4415: add x20, x20, :lo12:.LANCHOR5 add w19, w19, w21 - str w19, [x20,1072] - b .L4518 -.L4533: - ldr w2, [x23,1072] - mov w0, 500 - sub w2, w2, #64 - cmp w2, 500 - csel w2, w2, w0, ls - adrp x0, .LANCHOR0+1144 - ldr x0, [x0,#:lo12:.LANCHOR0+1144] - ldrb w0, [x0,9] - cmp w0, 4 - beq .L4534 - mov w0, 2 - str w0, [x29,72] - mov w0, 3 - str w0, [x29,76] - mov w0, 4 - str w0, [x29,80] - mov w0, 5 - str w0, [x29,84] - mov w0, 6 - str w0, [x29,88] - b .L4525 -.L4534: - mov x3, 0 -.L4524: - cmp w2, 256 - add x0, x29, 72 - bls .L4526 - lsl w1, w3, 1 - str w1, [x0,x3,lsl 2] - b .L4527 -.L4526: - str w3, [x0,x3,lsl 2] -.L4527: - add x3, x3, 1 - cmp x3, 5 - bne .L4524 -.L4525: - add x0, x22, 245760 - mov w3, 61952 - add x0, x0, 2048 -.L4530: - ldr w1, [x0] - cbz w1, .L4528 - add w2, w3, 2048 - lsl w0, w2, 2 - b .L4529 -.L4528: - sub w3, w3, #1 - sub x0, x0, #4 - cmp w3, 4096 - bne .L4530 - lsl w0, w2, 9 -.L4529: - mov x1, x22 - add x2, x29, 72 - add x22, x20, :lo12:.LANCHOR5 - bl write_idblock - ldr x0, [x22,1064] - strb wzr, [x22,1060] - bl ftl_free - str xzr, [x22,1064] - b .L4531 -.L4518: - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] + str w19, [x20, 536] +.L4401: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 112 ret +.L4407: + add x2, x29, 72 + mov x1, 0 +.L4411: + cmp w0, 256 + bls .L4409 + lsl w3, w1, 1 + str w3, [x2, x1, lsl 2] +.L4410: + add x1, x1, 1 + cmp x1, 5 + bne .L4411 + b .L4408 +.L4409: + str w1, [x2, x1, lsl 2] + b .L4410 +.L4412: + sub w1, w1, #1 + sub x2, x2, #4 + cmp w1, 4096 + bne .L4414 + lsl w0, w0, 9 + b .L4413 .size write_loader_lba, .-write_loader_lba .align 2 .global FtlWrite .type FtlWrite, %function FtlWrite: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! add x29, sp, 0 - str x21, [sp,32] - uxtb w21, w0 + stp x19, x20, [sp, 16] + and w20, w0, 255 + stp x21, x22, [sp, 32] sub w0, w1, #64 - stp x19, x20, [sp,16] - cmp w0, 1983 mov w19, w1 - mov w20, w2 - bhi .L4548 - cbnz w21, .L4548 - mov w0, w1 - mov w1, w2 + mov w21, w2 + mov x22, x3 + cmp w0, 1983 + bhi .L4427 + cbnz w20, .L4427 mov x2, x3 - str x3, [x29,56] + mov w1, w21 + mov w0, w19 bl write_loader_lba - ldr x3, [x29,56] -.L4548: - adrp x0, .LANCHOR5+280 +.L4427: + adrp x0, .LANCHOR5+232 + mov x3, x22 + mov w2, w21 mov w1, w19 - mov w2, w20 - ldr x0, [x0,#:lo12:.LANCHOR5+280] - ldr x4, [x0,48] - mov w0, w21 + ldr x0, [x0, #:lo12:.LANCHOR5+232] + ldr x4, [x0, 48] + mov w0, w20 blr x4 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 ret .size FtlWrite, .-FtlWrite .align 2 .global rknand_sys_storage_ioctl .type rknand_sys_storage_ioctl, %function rknand_sys_storage_ioctl: - sub sp, sp, #528 + sub sp, sp, #560 mov w0, 27688 movk w0, 0x4004, lsl 16 cmp w1, w0 - stp x29, x30, [sp, -32]! + stp x29, x30, [sp] add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] mov w19, w1 mov x20, x2 - beq .L4557 - mov w0, 27688 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L4558 + beq .L4431 + bhi .L4432 mov w0, 25602 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L4559 - mov w0, 25602 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L4560 + beq .L4433 + bhi .L4434 mov w0, 25364 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L4561 - mov w0, 25601 - movk w0, 0x4004, lsl 16 + beq .L4435 + add w0, w0, 237 cmp w1, w0 - beq .L4562 - b .L4593 -.L4560: + beq .L4436 +.L4466: + mov x19, -22 + b .L4429 +.L4434: mov w0, 25726 movk w0, 0x4004, lsl 16 cmp w1, w0 - beq .L4563 - mov w0, 25727 - movk w0, 0x4004, lsl 16 + beq .L4437 + add w0, w0, 1 cmp w1, w0 - beq .L4564 + beq .L4438 mov w0, 25603 movk w0, 0x4004, lsl 16 cmp w1, w0 - bne .L4593 - b .L4615 -.L4558: - mov w0, 30224 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L4566 - mov w0, 30224 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bhi .L4567 - mov w0, 27698 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L4557 - mov w0, 27708 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L4557 - b .L4593 -.L4567: - mov w0, 30226 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L4566 - mov w0, 30226 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - bcc .L4568 - mov w0, 30227 - movk w0, 0x4004, lsl 16 - cmp w1, w0 - beq .L4568 - b .L4593 -.L4562: - adrp x0, .LC323 - add x0, x0, :lo12:.LC323 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbz x0, .L4569 -.L4575: - adrp x0, .LC324 - add x0, x0, :lo12:.LC324 - bl printk - b .L4612 -.L4569: - ldr w1, [x29,40] - mov w0, 21060 - movk w0, 0x4b4d, lsl 16 - cmp w1, w0 - beq .L4570 -.L4572: - mov x19, -1 - b .L4571 -.L4570: - ldr w0, [x29,44] - cmp w0, 512 - bhi .L4572 - adrp x19, .LANCHOR5 - add x0, x29, 40 - add x19, x19, :lo12:.LANCHOR5 - mov x2, 512 - ldr x1, [x19,1080] - bl memcpy - ldr w1, [x19,1088] - mov w0, 5161 - movk w0, 0xc059, lsl 16 - cmp w1, w0 - beq .L4573 - add x0, x29, 104 - mov w1, 0 - mov x2, 128 - str wzr, [x29,48] - str wzr, [x29,52] - bl memset -.L4573: - add x0, x29, 296 - mov w1, 0 - mov x2, 256 - str wzr, [x29,56] - bl memset -.L4607: - mov x0, x20 - add x1, x29, 40 - mov x2, 520 - bl rk_copy_to_user - cbnz x0, .L4612 - b .L4610 -.L4559: - adrp x0, .LC325 - add x0, x0, :lo12:.LC325 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] - mov w0, 21060 - movk w0, 0x4b4d, lsl 16 - cmp w1, w0 - bne .L4572 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L4572 - adrp x1, .LANCHOR5 - mov w2, 5161 - add x1, x1, :lo12:.LANCHOR5 - movk w2, 0xc059, lsl 16 - mov x0, -2 - ldr w3, [x1,1088] - cmp w3, w2 - bne .L4556 - ldr w2, [x29,52] - mov x0, -3 - sub w3, w2, #1 - cmp w3, 127 - bhi .L4556 - ldr x19, [x1,1080] - add x1, x29, 104 - add x0, x19, 64 - str w2, [x19,12] - ldr w2, [x29,52] - bl memcpy - mov w0, 1 - mov x1, x19 - b .L4611 -.L4564: - adrp x0, .LC326 - add x0, x0, :lo12:.LC326 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] - mov w0, 17476 - movk w0, 0x4253, lsl 16 - cmp w1, w0 - bne .L4572 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L4572 - adrp x19, .LANCHOR5 - add x0, x19, :lo12:.LANCHOR5 - ldr w0, [x0,1092] - cbnz w0, .L4576 -.L4579: - mov x0, 0 - b .L4556 -.L4576: - add x0, x19, :lo12:.LANCHOR5 - mov w2, 22867 - movk w2, 0x4453, lsl 16 - ldr x1, [x0,1096] - ldr w3, [x1] - cmp w3, w2 - beq .L4577 - mov w2, 22867 - movk w2, 0x4453, lsl 16 - str w2, [x1] - mov w2, 504 - ldr x1, [x0,1096] - str w2, [x1,4] - ldr x0, [x0,1096] - str wzr, [x0,8] - str wzr, [x0,12] -.L4577: - add x20, x19, :lo12:.LANCHOR5 - mov w0, 0 - ldr x1, [x20,1096] - str wzr, [x1,16] - bl StorageSysDataStore - ldr x0, [x20,1080] - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L4578 - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - str w1, [x0] - mov w1, 504 - ldr x0, [x20,1080] - str w1, [x0,4] - ldr x0, [x20,1080] - str wzr, [x0,8] -.L4578: - add x19, x19, :lo12:.LANCHOR5 - mov w1, 0 - mov x2, 128 - ldr x20, [x19,1080] - add x0, x20, 64 - str wzr, [x20,12] - bl memset - mov w0, 1 - mov x1, x20 - bl StorageSysDataStore - str wzr, [x19,1092] - str wzr, [x19,1088] - b .L4610 -.L4563: - adrp x0, .LC327 - add x0, x0, :lo12:.LC327 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] - mov w0, 20037 - movk w0, 0x4253, lsl 16 - cmp w1, w0 - bne .L4572 - ldr w0, [x29,44] - cmp w0, 512 - bhi .L4572 - adrp x19, .LANCHOR5 - add x0, x19, :lo12:.LANCHOR5 - ldr w1, [x0,1092] - cmp w1, 1 - beq .L4579 - ldr x0, [x0,1096] - mov w1, 22867 - movk w1, 0x4453, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L4580 - mov w1, 22867 - mov w2, 504 - movk w1, 0x4453, lsl 16 - str w1, [x0] - add x0, x19, :lo12:.LANCHOR5 - ldr x1, [x0,1096] - str w2, [x1,4] - ldr x0, [x0,1096] - str wzr, [x0,8] - str wzr, [x0,12] -.L4580: - add x20, x19, :lo12:.LANCHOR5 - mov w0, 1 - ldr x1, [x20,1096] - str w0, [x1,16] - mov w0, 0 - bl StorageSysDataStore - ldr x0, [x20,1080] - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - ldr w2, [x0] - cmp w2, w1 - beq .L4581 - mov w1, 21060 - movk w1, 0x4b4d, lsl 16 - str w1, [x0] - mov w1, 504 - ldr x0, [x20,1080] - str w1, [x0,4] - ldr x0, [x20,1080] - str wzr, [x0,8] -.L4581: - add x19, x19, :lo12:.LANCHOR5 - mov w1, 0 - mov x2, 128 - ldr x20, [x19,1080] - add x0, x20, 64 - str wzr, [x20,12] - bl memset - mov w0, 1 - mov x1, x20 - bl StorageSysDataStore - mov w0, 1 - str w0, [x19,1092] - b .L4610 -.L4615: + bne .L4466 adrp x0, .LC328 add x0, x0, :lo12:.LC328 bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] + cbnz x0, .L4449 + ldr w1, [x29, 40] mov w0, 20051 movk w0, 0x4144, lsl 16 cmp w1, w0 - bne .L4572 - ldr w2, [x29,44] + bne .L4446 + ldr w2, [x29, 44] cmp w2, 512 - bhi .L4572 + bhi .L4446 adrp x1, .LANCHOR5 - add x0, x29, 48 add x1, x1, :lo12:.LANCHOR5 uxtw x2, w2 - add x1, x1, 1104 - b .L4613 -.L4557: + add x1, x1, 568 + add x0, x29, 48 +.L4487: + bl memcpy + b .L4481 +.L4432: + mov w0, 30224 + movk w0, 0x4004, lsl 16 + cmp w1, w0 + beq .L4440 + bhi .L4441 + mov w0, 27698 + movk w0, 0x4004, lsl 16 + cmp w1, w0 + beq .L4431 + add w0, w0, 10 + cmp w1, w0 + bne .L4466 +.L4431: mov w0, 27698 movk w0, 0x4004, lsl 16 cmp w19, w0 - bne .L4583 + bne .L4456 adrp x0, .LC329 add x0, x0, :lo12:.LC329 - b .L4609 -.L4583: - mov w0, 27708 - movk w0, 0x4004, lsl 16 - cmp w19, w0 - bne .L4585 - adrp x0, .LC330 - add x0, x0, :lo12:.LC330 - b .L4609 -.L4585: - adrp x0, .LC331 - add x0, x0, :lo12:.LC331 -.L4609: +.L4483: bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] + cbnz x0, .L4449 + ldr w1, [x29, 40] mov w0, 17227 movk w0, 0x4c4f, lsl 16 cmp w1, w0 - bne .L4612 + bne .L4486 mov w0, 27708 movk w0, 0x4004, lsl 16 cmp w19, w0 adrp x0, .LANCHOR5 - bne .L4586 + bne .L4459 add x0, x0, :lo12:.LANCHOR5 - add x1, x29, 40 mov x2, 16 - ldr x0, [x0,1080] - ldr w0, [x0,20] - str w0, [x29,44] - strb w0, [x29,48] + add x1, x29, 40 + ldr x0, [x0, 544] + ldr w0, [x0, 20] + strb w0, [x29, 48] + str w0, [x29, 44] mov x0, x20 bl rk_copy_to_user - cbz x0, .L4556 - b .L4612 -.L4586: - add x20, x0, :lo12:.LANCHOR5 - ldr w1, [x20,1616] - cmp w1, 10 - bhi .L4612 - ldr x1, [x20,1080] - ldr w2, [x29,44] - ldr w3, [x1,24] - cmp w3, w2 - beq .L4587 - cbz w3, .L4587 - adrp x0, .LC332 - mov w1, w2 - add x0, x0, :lo12:.LC332 - bl printk - ldr w0, [x20,1616] - add w0, w0, 1 - str w0, [x20,1616] -.L4612: - mov x0, -14 - b .L4556 -.L4587: - add x0, x0, :lo12:.LANCHOR5 - str wzr, [x0,1616] - mov w0, 27698 + cbnz x0, .L4486 +.L4450: + mov x19, 0 +.L4429: + mov x0, x19 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp] + add sp, sp, 560 + ret +.L4441: + mov w0, 30226 movk w0, 0x4004, lsl 16 - cmp w19, w0 - bne .L4588 - str wzr, [x1,20] - str wzr, [x1,24] - b .L4589 -.L4588: - mov w0, 1 - str w2, [x1,24] - str w0, [x1,20] -.L4589: - mov w0, 1 - mov x19, -2 - bl StorageSysDataStore - cmn w0, #1 - bne .L4610 - b .L4571 -.L4566: - adrp x0, .LC333 - add x0, x0, :lo12:.LC333 + cmp w1, w0 + beq .L4440 + bcc .L4442 + add w0, w0, 1 + cmp w1, w0 + bne .L4466 +.L4442: + adrp x0, .LC334 + add x0, x0, :lo12:.LC334 bl printk - add x0, x29, 40 - mov x1, x20 mov x2, 520 + mov x1, x20 + add x0, x29, 40 bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] + cbnz x0, .L4449 + ldr w1, [x29, 40] mov w0, 17750 movk w0, 0x444e, lsl 16 cmp w1, w0 - bne .L4572 - ldr w2, [x29,44] + bne .L4446 + ldr w2, [x29, 44] cmp w2, 504 - bhi .L4572 + bhi .L4446 + mov w0, 30225 + add w2, w2, 8 + movk w0, 0x4004, lsl 16 + add x1, x29, 40 + cmp w19, w0 + adrp x19, .LANCHOR5 + add x19, x19, :lo12:.LANCHOR5 + bne .L4465 + ldr x0, [x19, 1088] + bl memcpy + mov w0, 2 + ldr x1, [x19, 1088] + b .L4485 +.L4436: + adrp x0, .LC323 + add x0, x0, :lo12:.LC323 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbz x0, .L4443 +.L4449: + adrp x0, .LC324 + add x0, x0, :lo12:.LC324 + bl printk +.L4486: + mov x19, -14 + b .L4429 +.L4443: + ldr w1, [x29, 40] + mov w0, 21060 + movk w0, 0x4b4d, lsl 16 + cmp w1, w0 + beq .L4444 +.L4446: + mov x19, -1 +.L4445: + mov x1, x19 + adrp x0, .LC335 + add x0, x0, :lo12:.LC335 + bl printk + b .L4429 +.L4444: + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L4446 + adrp x19, .LANCHOR5 + add x19, x19, :lo12:.LANCHOR5 + mov x2, 512 + add x0, x29, 40 + ldr x1, [x19, 544] + bl memcpy + ldr w1, [x19, 552] + mov w0, 5161 + movk w0, 0xc059, lsl 16 + cmp w1, w0 + beq .L4447 + mov x2, 128 + mov w1, 0 + add x0, x29, 104 + stp wzr, wzr, [x29, 48] + bl memset +.L4447: + add x0, x29, 40 + mov x2, 256 + mov w1, 0 + add x0, x0, x2 + str wzr, [x29, 56] + bl memset +.L4481: + mov x2, 520 + add x1, x29, 40 + mov x0, x20 + bl rk_copy_to_user + cbnz x0, .L4486 +.L4484: + mov x19, 0 + b .L4445 +.L4433: + adrp x0, .LC325 + add x0, x0, :lo12:.LC325 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L4449 + ldr w1, [x29, 40] + mov w0, 21060 + movk w0, 0x4b4d, lsl 16 + cmp w1, w0 + bne .L4446 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L4446 + adrp x0, .LANCHOR5 + add x0, x0, :lo12:.LANCHOR5 + mov w1, 5161 + movk w1, 0xc059, lsl 16 + ldr w2, [x0, 552] + cmp w2, w1 + bne .L4467 + ldr w1, [x29, 52] + mov x19, -3 + sub w2, w1, #1 + cmp w2, 127 + bhi .L4429 + ldr x19, [x0, 544] + add x0, x19, 64 + str w1, [x19, 12] + add x1, x29, 104 + ldr w2, [x29, 52] + bl memcpy + mov x1, x19 + mov w0, 1 +.L4485: + bl StorageSysDataStore + uxtw x19, w0 + b .L4445 +.L4438: + adrp x0, .LC326 + add x0, x0, :lo12:.LC326 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L4449 + ldr w1, [x29, 40] + mov w0, 17476 + movk w0, 0x4253, lsl 16 + cmp w1, w0 + bne .L4446 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L4446 + adrp x19, .LANCHOR5 + add x0, x19, :lo12:.LANCHOR5 + ldr w0, [x0, 556] + cbz w0, .L4450 + add x0, x19, :lo12:.LANCHOR5 + mov w2, 22867 + movk w2, 0x4453, lsl 16 + ldr x1, [x0, 560] + ldr w3, [x1] + cmp w3, w2 + beq .L4451 + str w2, [x1] + mov w2, 504 + ldr x1, [x0, 560] + str w2, [x1, 4] + ldr x0, [x0, 560] + stp wzr, wzr, [x0, 8] +.L4451: + add x20, x19, :lo12:.LANCHOR5 + mov w0, 0 + ldr x1, [x20, 560] + str wzr, [x1, 16] + bl StorageSysDataStore + ldr x0, [x20, 544] + mov w1, 21060 + movk w1, 0x4b4d, lsl 16 + ldr w2, [x0] + cmp w2, w1 + beq .L4452 + str w1, [x0] + mov w1, 504 + ldr x0, [x20, 544] + str w1, [x0, 4] + ldr x0, [x20, 544] + str wzr, [x0, 8] +.L4452: + add x19, x19, :lo12:.LANCHOR5 + mov x2, 128 + mov w1, 0 + ldr x20, [x19, 544] + add x0, x20, 64 + str wzr, [x20, 12] + bl memset + mov x1, x20 + mov w0, 1 + bl StorageSysDataStore + str wzr, [x19, 552] + str wzr, [x19, 556] + b .L4484 +.L4437: + adrp x0, .LC327 + add x0, x0, :lo12:.LC327 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L4449 + ldr w1, [x29, 40] + mov w0, 20037 + movk w0, 0x4253, lsl 16 + cmp w1, w0 + bne .L4446 + ldr w0, [x29, 44] + cmp w0, 512 + bhi .L4446 + adrp x19, .LANCHOR5 + add x0, x19, :lo12:.LANCHOR5 + ldr w1, [x0, 556] + cmp w1, 1 + beq .L4450 + ldr x1, [x0, 560] + mov w0, 22867 + movk w0, 0x4453, lsl 16 + ldr w2, [x1] + cmp w2, w0 + beq .L4453 + str w0, [x1] + add x0, x19, :lo12:.LANCHOR5 + mov w2, 504 + ldr x1, [x0, 560] + str w2, [x1, 4] + ldr x0, [x0, 560] + stp wzr, wzr, [x0, 8] +.L4453: + add x20, x19, :lo12:.LANCHOR5 + mov w0, 1 + ldr x1, [x20, 560] + str w0, [x1, 16] + mov w0, 0 + bl StorageSysDataStore + ldr x0, [x20, 544] + mov w1, 21060 + movk w1, 0x4b4d, lsl 16 + ldr w2, [x0] + cmp w2, w1 + beq .L4454 + str w1, [x0] + mov w1, 504 + ldr x0, [x20, 544] + str w1, [x0, 4] + ldr x0, [x20, 544] + str wzr, [x0, 8] +.L4454: + add x19, x19, :lo12:.LANCHOR5 + mov x2, 128 + mov w1, 0 + ldr x20, [x19, 544] + add x0, x20, 64 + str wzr, [x20, 12] + bl memset + mov x1, x20 + mov w0, 1 + bl StorageSysDataStore + mov w0, 1 + str w0, [x19, 556] + b .L4484 +.L4456: + mov w0, 27708 + movk w0, 0x4004, lsl 16 + cmp w19, w0 + bne .L4458 + adrp x0, .LC330 + add x0, x0, :lo12:.LC330 + b .L4483 +.L4458: + adrp x0, .LC331 + add x0, x0, :lo12:.LC331 + b .L4483 +.L4459: + add x20, x0, :lo12:.LANCHOR5 + ldr w1, [x20, 1080] + cmp w1, 10 + bhi .L4486 + ldr x1, [x20, 544] + ldr w2, [x29, 44] + ldr w3, [x1, 24] + cmp w3, w2 + beq .L4460 + cbz w3, .L4460 + mov w1, w2 + adrp x0, .LC332 + add x0, x0, :lo12:.LC332 + bl printk + ldr w0, [x20, 1080] + add w0, w0, 1 + str w0, [x20, 1080] + b .L4486 +.L4460: + add x0, x0, :lo12:.LANCHOR5 + str wzr, [x0, 1080] + mov w0, 27698 + movk w0, 0x4004, lsl 16 + cmp w19, w0 + bne .L4461 + stp wzr, wzr, [x1, 20] +.L4462: + mov w0, 1 + bl StorageSysDataStore + cmn w0, #1 + bne .L4484 + mov x19, -2 + b .L4445 +.L4461: + mov w0, 1 + stp w0, w2, [x1, 20] + b .L4462 +.L4440: + adrp x0, .LC333 + add x0, x0, :lo12:.LC333 + bl printk + mov x2, 520 + mov x1, x20 + add x0, x29, 40 + bl rk_copy_from_user + cbnz x0, .L4449 + ldr w1, [x29, 40] + mov w0, 17750 + movk w0, 0x444e, lsl 16 + cmp w1, w0 + bne .L4446 + ldr w2, [x29, 44] + cmp w2, 504 + bhi .L4446 mov w0, 30224 adrp x1, .LANCHOR5 movk w0, 0x4004, lsl 16 @@ -29256,74 +29022,26 @@ rknand_sys_storage_ioctl: cmp w19, w0 add x1, x1, :lo12:.LANCHOR5 add x0, x29, 48 - bne .L4590 - ldr x1, [x1,1624] - b .L4614 -.L4590: - ldr x1, [x1,1632] -.L4614: + bne .L4463 + ldr x1, [x1, 1088] +.L4488: add x1, x1, 8 -.L4613: + b .L4487 +.L4463: + ldr x1, [x1, 1096] + b .L4488 +.L4465: + ldr x0, [x19, 1096] bl memcpy - b .L4607 -.L4568: - adrp x0, .LC334 - add x0, x0, :lo12:.LC334 - bl printk - add x0, x29, 40 - mov x1, x20 - mov x2, 520 - bl rk_copy_from_user - cbnz x0, .L4575 - ldr w1, [x29,40] - mov w0, 17750 - movk w0, 0x444e, lsl 16 - cmp w1, w0 - bne .L4572 - ldr w2, [x29,44] - cmp w2, 504 - bhi .L4572 - mov w0, 30225 - add w2, w2, 8 - movk w0, 0x4004, lsl 16 - cmp w19, w0 - adrp x19, .LANCHOR5 - add x19, x19, :lo12:.LANCHOR5 - bne .L4592 - ldr x0, [x19,1624] - add x1, x29, 40 - bl memcpy - mov w0, 2 - ldr x1, [x19,1624] - b .L4611 -.L4592: - ldr x0, [x19,1632] - add x1, x29, 40 - bl memcpy - ldr x1, [x19,1632] mov w0, 3 -.L4611: - bl StorageSysDataStore - uxtw x19, w0 - b .L4571 -.L4561: + ldr x1, [x19, 1096] + b .L4485 +.L4435: bl rknand_dev_flush -.L4610: - mov x19, 0 -.L4571: - adrp x0, .LC335 - mov x1, x19 - add x0, x0, :lo12:.LC335 - bl printk - mov x0, x19 - b .L4556 -.L4593: - mov x0, -22 -.L4556: - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 32 - add sp, sp, 528 - ret + b .L4484 +.L4467: + mov x19, -2 + b .L4429 .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl .align 2 .global rk_ftl_storage_sys_init @@ -29333,59 +29051,59 @@ rk_ftl_storage_sys_init: mov w0, -1 mov w2, 512 add x29, sp, 0 - stp x19, x20, [sp,16] + stp x19, x20, [sp, 16] adrp x20, .LANCHOR5 - str x21, [sp,32] add x19, x20, :lo12:.LANCHOR5 - ldr x1, [x19,1040] - str w0, [x19,1072] + str x21, [sp, 32] + ldr x1, [x19, 504] + str w0, [x19, 536] add x0, x1, 512 - str x0, [x19,1080] + str x0, [x19, 544] add x0, x1, 1024 - str x1, [x19,1096] - str x0, [x19,1624] + str x1, [x19, 560] + str x0, [x19, 1088] add x1, x1, 1536 - add x0, x19, 1104 - str x1, [x19,1632] - strb wzr, [x19,1060] - str xzr, [x19,1064] - str xzr, [x19,1640] + strb wzr, [x19, 524] + add x0, x19, 568 + str x1, [x19, 1096] + str xzr, [x19, 528] + str xzr, [x19, 1104] bl ftl_memcpy - ldr x0, [x19,1096] - str wzr, [x19,1088] - str wzr, [x19,1616] - ldr w1, [x0,16] - ldr w21, [x0,508] - str w1, [x19,1092] - cbz w21, .L4618 + ldr x0, [x19, 560] + str wzr, [x19, 552] + str wzr, [x19, 1080] + ldr w21, [x0, 508] + ldr w1, [x0, 16] + str w1, [x19, 556] + cbz w21, .L4491 mov w1, 508 bl js_hash cmp w21, w0 - beq .L4618 - ldr x0, [x19,1096] - str wzr, [x19,1092] - str wzr, [x0,16] + beq .L4491 + ldr x0, [x19, 560] + str wzr, [x19, 556] + str wzr, [x0, 16] adrp x0, .LC336 add x0, x0, :lo12:.LC336 bl printk -.L4618: +.L4491: add x0, x20, :lo12:.LANCHOR5 - ldr w1, [x0,1092] - cbz w1, .L4620 + ldr w1, [x0, 556] + cbz w1, .L4493 mov w1, 5161 movk w1, 0xc059, lsl 16 - str w1, [x0,1088] -.L4620: + str w1, [x0, 552] +.L4493: add x20, x20, :lo12:.LANCHOR5 mov w0, 2 - ldr x1, [x20,1624] + ldr x1, [x20, 1088] bl StorageSysDataLoad - ldr x1, [x20,1632] + ldr x1, [x20, 1096] mov w0, 3 bl StorageSysDataLoad bl rknand_sys_storage_init - ldr x21, [sp,32] - ldp x19, x20, [sp,16] + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init @@ -29400,375 +29118,374 @@ StorageSysDataDeInit: .global rk_ftl_vendor_storage_init .type rk_ftl_vendor_storage_init, %function rk_ftl_vendor_storage_init: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -80]! mov w0, 65536 add x29, sp, 0 - stp x19, x20, [sp,16] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - adrp x21, .LANCHOR5 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR5 + add x20, x19, :lo12:.LANCHOR5 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] bl ftl_malloc - add x1, x21, :lo12:.LANCHOR5 - mov w19, -12 - str x0, [x1,1648] - cbz x0, .L4626 - mov w23, 0 + str x0, [x20, 1112] + cbz x0, .L4505 adrp x24, .LC337 - mov w19, w23 - mov w22, w23 + mov w26, 22084 + mov x22, x19 add x24, x24, :lo12:.LC337 -.L4630: - add x20, x21, :lo12:.LANCHOR5 - lsl w0, w22, 7 + mov w25, 0 + mov w23, 0 + mov w21, 0 + movk w26, 0x524b, lsl 16 +.L4503: + ldr x2, [x20, 1112] mov w1, 128 - ldr x2, [x20,1648] + lsl w0, w21, 7 bl FlashBootVendorRead - cbnz w0, .L4627 - ldr x3, [x20,1648] + cbnz w0, .L4501 + ldr x0, [x20, 1112] + add x1, x0, 61440 + ldr w3, [x0, 4] + ldr w2, [x1, 4092] + ldr w1, [x0] mov x0, x24 - add x2, x3, 61440 - ldr w1, [x3] - ldr w3, [x3,4] - ldr w2, [x2,4092] bl printk - ldr x20, [x20,1648] - mov w0, 22084 - movk w0, 0x524b, lsl 16 - ldr w1, [x20] - cmp w1, w0 - bne .L4628 - ldr w0, [x20,4] - cmp w19, w0 - bcs .L4628 - add x1, x20, 61440 - ldr w1, [x1,4092] - cmp w1, w0 - csel w23, w23, w22, ne - csel w19, w19, w0, ne -.L4628: - cbnz w22, .L4638 - mov w22, 1 - b .L4630 -.L4638: - cbz w19, .L4631 - lsl w0, w23, 7 + ldr x19, [x20, 1112] + ldr w0, [x19] + cmp w0, w26 + bne .L4502 + add x0, x19, 61440 + ldr w1, [x19, 4] + ldr w0, [x0, 4092] + cmp w0, w1 + bne .L4502 + cmp w0, w23 + bls .L4502 + mov w25, w21 + mov w23, w0 +.L4502: + add w21, w21, 1 + cmp w21, 2 + bne .L4503 + cbz w23, .L4504 + mov x2, x19 mov w1, 128 - mov x2, x20 + lsl w0, w25, 7 bl FlashBootVendorRead - mov w19, w0 - cbz w0, .L4626 - b .L4627 -.L4631: - mov x0, x20 - mov w1, w19 - mov x2, 65536 - bl memset - str w22, [x20,4] - mov w0, 22084 - movk w0, 0x524b, lsl 16 - str w0, [x20] - add x0, x20, 61440 - str w22, [x0,4092] - mov w0, -1032 - strh w19, [x20,12] - strh w0, [x20,14] - b .L4626 -.L4627: - add x21, x21, :lo12:.LANCHOR5 - mov w19, -1 - ldr x0, [x21,1648] - bl kfree - str xzr, [x21,1648] -.L4626: - mov w0, w19 - ldp x19, x20, [sp,16] - ldp x21, x22, [sp,32] - ldp x23, x24, [sp,48] - ldp x29, x30, [sp], 64 + cbnz w0, .L4501 +.L4499: + 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 +.L4504: + mov w1, 0 + mov x2, 65536 + mov x0, x19 + bl memset + mov w1, 22084 + mov w0, 1 + movk w1, 0x524b, lsl 16 + stp w1, w0, [x19] + add x1, x19, 61440 + str w0, [x1, 4092] + mov w0, -1032 + strh w0, [x19, 14] + mov w0, 0 + b .L4499 +.L4501: + add x22, x22, :lo12:.LANCHOR5 + ldr x0, [x22, 1112] + bl kfree + str xzr, [x22, 1112] + mov w0, -1 + b .L4499 +.L4505: + mov w0, -12 + b .L4499 .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init .align 2 .global rk_ftl_vendor_read .type rk_ftl_vendor_read, %function rk_ftl_vendor_read: - adrp x3, .LANCHOR5+1648 - stp x29, x30, [sp, -32]! - add x29, sp, 0 - ldr x5, [x3,#:lo12:.LANCHOR5+1648] - mov w3, -1 - str x19, [sp,16] - cbz x5, .L4640 - ldrh w3, [x5,10] - mov x4, 0 -.L4641: - cmp w4, w3 - mov w6, w4 - bcs .L4645 - add x7, x5, x4, lsl 3 - add x4, x4, 1 - ldrh w7, [x7,16] + adrp x3, .LANCHOR5+1112 + ldr x4, [x3, #:lo12:.LANCHOR5+1112] + cbz x4, .L4513 + ldrh w6, [x4, 10] + add x5, x4, 16 + mov w3, 0 +.L4510: + cmp w3, w6 + bcc .L4512 +.L4513: + mov w0, -1 + ret +.L4512: + ldrh w7, [x5], 8 cmp w7, w0 - bne .L4641 - add x6, x5, w6, uxtw 3 - ldrh w4, [x6,20] + bne .L4511 + stp x29, x30, [sp, -32]! + add x3, x4, w3, uxtw 3 mov x0, x1 - ldrh w1, [x6,18] - cmp w2, w4 - csel w19, w2, w4, ls + add x29, sp, 0 + str x19, [sp, 16] + ldrh w19, [x3, 20] + ldrh w1, [x3, 18] + cmp w19, w2 + csel w19, w19, w2, ls add x1, x1, 1024 - add x1, x5, x1 uxtw x2, w19 + add x1, x4, x1 bl memcpy - mov w3, w19 - b .L4640 -.L4645: - mov w3, -1 -.L4640: - mov w0, w3 - ldr x19, [sp,16] + mov w0, w19 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret +.L4511: + add w3, w3, 1 + b .L4510 .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 2 .global rk_ftl_vendor_write .type rk_ftl_vendor_write, %function rk_ftl_vendor_write: stp x29, x30, [sp, -112]! - mov w6, w0 - adrp x0, .LANCHOR5+1648 + adrp x3, .LANCHOR5+1112 add x29, sp, 0 - stp x19, x20, [sp,16] - ldr x19, [x0,#:lo12:.LANCHOR5+1648] - stp x25, x26, [sp,64] - stp x27, x28, [sp,80] - stp x21, x22, [sp,32] - stp x23, x24, [sp,48] - mov w26, w2 + stp x19, x20, [sp, 16] + ldr x19, [x3, #:lo12:.LANCHOR5+1112] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + cbz x19, .L4533 + add w4, w2, 63 + ldrh w3, [x19, 10] + ldrh w24, [x19, 8] mov x28, x1 - mov w2, -1 - cbz x19, .L4647 - add w20, w26, 63 - ldrh w3, [x19,10] - ldrh w23, [x19,8] - and w20, w20, -64 - mov x2, 0 -.L4648: - cmp w2, w3 - mov w4, w2 - bcs .L4663 - add x0, x19, x2, lsl 3 - add x2, x2, 1 - ldrh w0, [x0,16] - cmp w0, w6 - bne .L4648 - add x21, x19, w4, uxtw 3 - ldrh w24, [x21,20] + mov w26, w2 + and w22, w4, -64 + add x1, x19, 16 + mov w20, 0 +.L4520: + cmp w20, w3 + bcc .L4528 + ldrh w1, [x19, 14] + cmp w22, w1 + bhi .L4533 + add x3, x19, w3, uxth 3 + strh w0, [x3, 16] + and w0, w22, 65535 + ldrh w2, [x19, 12] + strh w2, [x3, 18] + strh w26, [x3, 20] + add w2, w2, w0 + sub w0, w1, w0 + strh w2, [x19, 12] + strh w0, [x19, 14] + uxtw x2, w26 + mov x1, x28 + ldrh w0, [x3, 18] + add x0, x0, 1024 + add x0, x19, x0 + bl memcpy + ldrh w0, [x19, 10] + add w0, w0, 1 + strh w0, [x19, 10] + b .L4535 +.L4528: + ldrh w6, [x1], 8 + cmp w6, w0 + bne .L4521 + uxtw x23, w20 add x5, x19, 1024 - add w24, w24, 63 - and w24, w24, -64 - cmp w26, w24 - bls .L4649 - ldrh w0, [x19,14] - mov w2, -1 - cmp w0, w20 - bcc .L4647 - ldrh w21, [x21,18] - add w22, w3, w2 -.L4650: - cmp w4, w22 - uxtw x3, w4 - bcs .L4664 - add x3, x19, x3, lsl 3 - add w25, w4, 1 - add x1, x19, w25, uxtw 3 - ldrh w0, [x1,16] - str x6, [x29,96] - strh w0, [x3,16] - str x5, [x29,104] - ldrh w0, [x1,20] - strh w0, [x3,20] - strh w21, [x3,18] + add x21, x19, x23, lsl 3 + ldrh w25, [x21, 20] + add w25, w25, 63 + and w25, w25, -64 + cmp w26, w25 + bls .L4522 + ldrh w0, [x19, 14] + cmp w22, w0 + bhi .L4533 + add x23, x23, 2 + ldrh w21, [x21, 18] + add x23, x19, x23, lsl 3 + sub w3, w3, #1 +.L4523: + cmp w20, w3 + bcc .L4524 + add x20, x19, w20, uxtw 3 + and w21, w21, 65535 + add x0, x5, w21, uxth + uxtw x2, w26 + mov x1, x28 + strh w21, [x20, 18] + strh w6, [x20, 16] + strh w26, [x20, 20] + bl memcpy + ldrh w0, [x19, 14] + and w4, w22, 65535 + add w21, w21, w4 + strh w21, [x19, 12] + sub w0, w0, w4 + add w25, w0, w25 + strh w25, [x19, 14] +.L4535: + ldr w0, [x19, 4] + add x1, x19, 61440 + mov x2, x19 + add w0, w0, 1 + str w0, [x19, 4] + str w0, [x1, 4092] + mov w1, 128 + ldrh w0, [x19, 8] + add w0, w0, 1 + and w0, w0, 65535 + cmp w0, 1 + csel w0, w0, wzr, ls + strh w0, [x19, 8] + lsl w0, w24, 7 + bl FlashBootVendorWrite + mov w0, 0 +.L4518: + 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 +.L4524: + add w20, w20, 1 + stp w3, w6, [x29, 96] + add x0, x19, w20, uxtw 3 + str x5, [x29, 104] + add x23, x23, 8 + ldrh w1, [x0, 16] + strh w1, [x23, -8] + ldrh w1, [x0, 20] + strh w1, [x23, -4] + strh w21, [x23, -6] + ldrh w27, [x0, 20] + ldrh w1, [x0, 18] add x0, x5, w21, uxtw - ldrh w27, [x1,20] - ldrh w1, [x1,18] add w27, w27, 63 and w27, w27, -64 add x1, x5, x1 and x2, x27, 131008 + bl memcpy add w21, w21, w27 - bl memcpy - mov w4, w25 - ldr x6, [x29,96] - ldr x5, [x29,104] - b .L4650 -.L4664: - add x3, x19, x3, lsl 3 - uxth w21, w21 - mov x1, x28 + ldr x5, [x29, 104] + ldp w3, w6, [x29, 96] + b .L4523 +.L4522: + ldrh w0, [x21, 18] uxtw x2, w26 - add x0, x5, w21, uxth - uxth w20, w20 - strh w21, [x3,18] - add w21, w21, w20 - strh w6, [x3,16] - strh w26, [x3,20] - bl memcpy - strh w21, [x19,12] - ldrh w0, [x19,14] - add w24, w24, w0 - sub w24, w24, w20 - strh w24, [x19,14] - b .L4662 -.L4649: - ldrh w0, [x21,18] mov x1, x28 - uxtw x2, w26 add x0, x5, x0 bl memcpy - strh w26, [x21,20] - b .L4662 -.L4663: - ldrh w4, [x19,14] - mov w2, -1 - cmp w4, w20 - bcc .L4647 - add x3, x19, w3, uxth 3 - strh w6, [x3,16] - uxth w20, w20 - mov x1, x28 - ldrh w0, [x19,12] - uxtw x2, w26 - strh w0, [x3,18] - strh w26, [x3,20] - add w0, w20, w0 - sub w20, w4, w20 - strh w0, [x19,12] - strh w20, [x19,14] - ldrh w0, [x3,18] - add x0, x0, 1024 - add x0, x19, x0 - bl memcpy - ldrh w0, [x19,10] - add w0, w0, 1 - strh w0, [x19,10] -.L4662: - ldr w0, [x19,4] - add x1, x19, 61440 - mov x2, x19 - add w0, w0, 1 - str w0, [x19,4] - str w0, [x1,4092] - mov w1, 128 - ldrh w0, [x19,8] - add w0, w0, 1 - uxth w0, w0 - cmp w0, 1 - csel w0, w0, wzr, ls - strh w0, [x19,8] - lsl w0, w23, 7 - bl FlashBootVendorWrite - mov w2, 0 -.L4647: - 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], 112 - ret + strh w26, [x21, 20] + b .L4535 +.L4521: + add w20, w20, 1 + b .L4520 +.L4533: + mov w0, -1 + b .L4518 .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 2 .global rk_ftl_vendor_storage_ioctl .type rk_ftl_vendor_storage_ioctl, %function rk_ftl_vendor_storage_ioctl: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! mov w0, 4096 add x29, sp, 0 - stp x19, x20, [sp,16] - str x21, [sp,32] - mov x20, -1 - str x1, [x29,56] - mov x21, x2 + stp x19, x20, [sp, 16] + mov x20, x2 + str x21, [sp, 32] + mov w21, w1 bl ftl_malloc + cbz x0, .L4544 + mov w1, 30209 mov x19, x0 - cbz x0, .L4666 - mov w2, 30209 - ldr x1, [x29,56] - movk w2, 0x4004, lsl 16 - cmp w1, w2 - beq .L4668 - mov w2, 30210 - movk w2, 0x4004, lsl 16 - cmp w1, w2 - beq .L4669 - b .L4680 -.L4668: - mov x1, x21 + movk w1, 0x4004, lsl 16 + cmp w21, w1 + beq .L4539 + add w1, w1, 1 + cmp w21, w1 + beq .L4540 +.L4550: + mov x20, -14 + b .L4538 +.L4539: mov x2, 8 + mov x1, x20 bl rk_copy_from_user - cbnz x0, .L4680 + cbnz x0, .L4550 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L4671 -.L4672: + beq .L4542 +.L4543: mov x20, -1 - b .L4667 -.L4671: - ldrh w0, [x19,4] - add x1, x19, 8 - ldrh w2, [x19,6] - bl rk_ftl_vendor_read - cmn w0, #1 - beq .L4672 - uxth x2, w0 - strh w0, [x19,6] - mov x1, x19 - mov x0, x21 - add x2, x2, 8 - mov x20, -14 - bl rk_copy_to_user - cmp x0, xzr - csel x20, xzr, x20, eq - b .L4667 -.L4669: - mov x1, x21 - mov x2, 8 - bl rk_copy_from_user - cbnz x0, .L4680 - ldr w1, [x19] - mov w0, 17745 - movk w0, 0x5652, lsl 16 - cmp w1, w0 - bne .L4672 - ldrh w3, [x19,6] - cmp w3, 4087 - bhi .L4672 - add w2, w3, 8 - mov x0, x19 - mov x1, x21 - sxtw x2, w2 - bl rk_copy_from_user - cbnz x0, .L4680 - ldrh w0, [x19,4] - add x1, x19, 8 - ldrh w2, [x19,6] - bl rk_ftl_vendor_write - sxtw x20, w0 - b .L4667 -.L4680: - mov x20, -14 -.L4667: +.L4538: mov x0, x19 bl kfree -.L4666: +.L4536: mov x0, x20 - ldr x21, [sp,32] - ldp x19, x20, [sp,16] - ldp x29, x30, [sp], 64 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 ret +.L4542: + ldrh w2, [x19, 6] + add x1, x19, 8 + ldrh w0, [x19, 4] + bl rk_ftl_vendor_read + cmn w0, #1 + beq .L4543 + strh w0, [x19, 6] + and x0, x0, 65535 + add x2, x0, 8 + mov x1, x19 + mov x0, x20 + bl rk_copy_to_user + cbnz x0, .L4550 + mov x20, 0 + b .L4538 +.L4540: + mov x2, 8 + mov x1, x20 + bl rk_copy_from_user + cbnz x0, .L4550 + ldr w1, [x19] + mov w0, 17745 + movk w0, 0x5652, lsl 16 + cmp w1, w0 + bne .L4543 + ldrh w2, [x19, 6] + cmp w2, 4087 + bhi .L4543 + add w2, w2, 8 + mov x1, x20 + sxtw x2, w2 + mov x0, x19 + bl rk_copy_from_user + cbnz x0, .L4550 + ldrh w2, [x19, 6] + add x1, x19, 8 + ldrh w0, [x19, 4] + bl rk_ftl_vendor_write + sxtw x20, w0 + b .L4538 +.L4544: + mov x20, -1 + b .L4536 .size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl .global SecureBootUnlockTryCount .global SecureBootCheckOK @@ -29779,6 +29496,8 @@ rk_ftl_vendor_storage_ioctl: .global gSnSectorData .global gpDrmKeyInfo .global gpBootConfig + .global ftl_dma32_buffer_size + .global ftl_dma32_buffer .global gLoaderBootInfo .global RK29_NANDC1_REG_BASE .global RK29_NANDC_REG_BASE @@ -29948,2239 +29667,9 @@ rk_ftl_vendor_storage_ioctl: .global g_flash_sys_spare_buffer .global g_flash_spare_buffer .global g_flash_page_buffer - .section .rodata - .align 3 -.LANCHOR1 = . + 0 - .type __func__.39624, %object - .size __func__.39624, 18 -__func__.39624: - .string "_list_remove_node" - .zero 6 - .type __func__.39649, %object - .size __func__.39649, 23 -__func__.39649: - .string "_list_update_data_list" - .zero 1 - .type toshiba_A19ref_value, %object - .size toshiba_A19ref_value, 45 -toshiba_A19ref_value: - .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 toshiba_15ref_value, %object - .size toshiba_15ref_value, 95 -toshiba_15ref_value: - .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 toshiba_ref_value, %object - .size toshiba_ref_value, 8 -toshiba_ref_value: - .byte 0 - .byte 4 - .byte 124 - .byte 120 - .byte 116 - .byte 8 - .byte 12 - .byte 112 - .type __func__.20817, %object - .size __func__.20817, 22 -__func__.20817: - .string "nand_flash_print_info" - .zero 2 - .type __func__.20903, %object - .size __func__.20903, 11 -__func__.20903: - .string "nandc_init" - .zero 5 - .type __func__.20290, %object - .size __func__.20290, 28 -__func__.20290: - .string "flash_wait_device_ready_raw" - .zero 4 - .type __func__.20354, %object - .size __func__.20354, 22 -__func__.20354: - .string "flash_start_page_read" - .zero 2 - .type toshiba_3D_tlc_value, %object - .size toshiba_3D_tlc_value, 399 -toshiba_3D_tlc_value: - .byte -119 - .byte -119 - .byte -119 - .byte -119 - .byte -118 - .byte -118 - .byte -118 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 5 - .byte -2 - .byte -1 - .byte 0 - .byte -3 - .byte -2 - .byte 6 - .byte -9 - .byte -12 - .byte -9 - .byte -7 - .byte -13 - .byte -12 - .byte -7 - .byte -6 - .byte -15 - .byte -15 - .byte -2 - .byte -12 - .byte -16 - .byte -6 - .byte -2 - .byte -19 - .byte -19 - .byte -6 - .byte -4 - .byte -12 - .byte -14 - .byte -2 - .byte -11 - .byte -23 - .byte -34 - .byte -4 - .byte -20 - .byte -22 - .byte -2 - .byte -7 - .byte -31 - .byte -30 - .byte -12 - .byte -20 - .byte -18 - .byte 2 - .byte -15 - .byte -19 - .byte -36 - .byte -12 - .byte -28 - .byte -34 - .byte -6 - .byte -15 - .byte -11 - .byte 2 - .byte -12 - .byte -8 - .byte -2 - .byte 2 - .byte -3 - .byte -7 - .byte -10 - .byte -4 - .byte -8 - .byte -6 - .byte -6 - .byte -11 - .byte -27 - .byte -38 - .byte -16 - .byte -12 - .byte -2 - .byte 2 - .byte -7 - .byte -31 - .byte -22 - .byte -4 - .byte -16 - .byte -22 - .byte -7 - .byte -31 - .byte -23 - .byte -22 - .byte -28 - .byte -28 - .byte -26 - .byte 2 - .byte -7 - .byte -11 - .byte -14 - .byte -8 - .byte -12 - .byte -10 - .byte -10 - .byte -27 - .byte -25 - .byte -22 - .byte -20 - .byte -28 - .byte -22 - .byte -7 - .byte -23 - .byte -29 - .byte -34 - .byte -24 - .byte -32 - .byte -22 - .byte -10 - .byte -11 - .byte -29 - .byte -18 - .byte -12 - .byte -24 - .byte -22 - .byte 6 - .byte 1 - .byte -3 - .byte -6 - .byte 0 - .byte -4 - .byte -2 - .byte 10 - .byte -3 - .byte -7 - .byte -6 - .byte 4 - .byte -4 - .byte -2 - .byte -10 - .byte -23 - .byte -39 - .byte -22 - .byte -19 - .byte -24 - .byte -18 - .byte -14 - .byte -23 - .byte -29 - .byte -30 - .byte -15 - .byte -30 - .byte -30 - .byte -7 - .byte -27 - .byte -35 - .byte -26 - .byte -15 - .byte -24 - .byte -26 - .byte 6 - .byte -11 - .byte 5 - .byte -2 - .byte -16 - .byte -16 - .byte -2 - .byte -2 - .byte -15 - .byte -15 - .byte -20 - .byte -8 - .byte -16 - .byte -18 - .byte 6 - .byte 5 - .byte -15 - .byte -2 - .byte -24 - .byte -28 - .byte -22 - .byte 10 - .byte -15 - .byte -3 - .byte -30 - .byte -8 - .byte -24 - .byte -30 - .byte -10 - .byte -27 - .byte -19 - .byte -30 - .byte -12 - .byte -16 - .byte -10 - .byte 14 - .byte -19 - .byte -3 - .byte -30 - .byte 4 - .byte 4 - .byte 6 - .byte 2 - .byte 1 - .byte -3 - .byte -10 - .byte -8 - .byte -4 - .byte -6 - .byte -2 - .byte -15 - .byte -11 - .byte -26 - .byte -8 - .byte -20 - .byte -30 - .byte 6 - .byte -19 - .byte -3 - .byte -46 - .byte 0 - .byte 0 - .byte 2 - .byte 6 - .byte 9 - .byte 5 - .byte 2 - .byte 4 - .byte 8 - .byte 6 - .byte 8 - .byte 9 - .byte 9 - .byte 6 - .byte 8 - .byte 8 - .byte 6 - .byte 10 - .byte 13 - .byte 9 - .byte 6 - .byte 8 - .byte 12 - .byte 10 - .byte 2 - .byte 5 - .byte 1 - .byte -2 - .byte 0 - .byte 0 - .byte 6 - .byte 12 - .byte 1 - .byte 13 - .byte 2 - .byte 12 - .byte 12 - .byte 14 - .byte -12 - .byte -14 - .byte -20 - .byte -18 - .byte -16 - .byte -16 - .byte -14 - .byte -12 - .byte -10 - .byte -21 - .byte -14 - .byte -12 - .byte -12 - .byte -10 - .byte -12 - .byte -18 - .byte -22 - .byte -24 - .byte -18 - .byte -18 - .byte -18 - .byte -12 - .byte -14 - .byte -23 - .byte -20 - .byte -20 - .byte -20 - .byte -20 - .byte -12 - .byte -24 - .byte -24 - .byte -30 - .byte -24 - .byte -28 - .byte -28 - .byte -12 - .byte -26 - .byte -25 - .byte -34 - .byte -24 - .byte -24 - .byte -24 - .byte -12 - .byte -13 - .byte -26 - .byte -20 - .byte -14 - .byte -18 - .byte -18 - .byte -12 - .byte -15 - .byte -27 - .byte -22 - .byte -20 - .byte -24 - .byte -22 - .byte -12 - .byte -21 - .byte -28 - .byte -28 - .byte -24 - .byte -26 - .byte -24 - .byte 20 - .byte 16 - .byte 6 - .byte 10 - .byte 16 - .byte 12 - .byte 12 - .byte 16 - .byte 16 - .byte 8 - .byte 8 - .byte 12 - .byte 12 - .byte 12 - .byte 18 - .byte 18 - .byte 10 - .byte 8 - .byte 14 - .byte 14 - .byte 14 - .byte 16 - .byte 14 - .byte 6 - .byte 6 - .byte 12 - .byte 14 - .byte 8 - .byte 20 - .byte 18 - .byte 8 - .byte 6 - .byte 14 - .byte 14 - .byte 10 - .byte 20 - .byte 20 - .byte 6 - .byte 10 - .byte 10 - .byte 12 - .byte 12 - .byte 10 - .byte 13 - .byte 5 - .byte 2 - .byte 14 - .byte 8 - .byte 6 - .byte 6 - .byte 13 - .byte 9 - .byte 4 - .byte 14 - .byte 10 - .byte 10 - .byte 10 - .byte 13 - .byte 9 - .byte 6 - .byte 8 - .byte 12 - .byte 10 - .byte 2 - .byte 5 - .byte 1 - .byte -2 - .byte 0 - .byte 0 - .byte 6 - .byte 12 - .byte 1 - .byte 13 - .byte 2 - .byte 12 - .byte 12 - .byte 14 - .zero 1 - .type toshiba_3D_slc_value, %object - .size toshiba_3D_slc_value, 11 -toshiba_3D_slc_value: - .byte -117 - .byte 0 - .byte -8 - .byte 8 - .byte -16 - .byte -24 - .byte 24 - .byte -40 - .byte 40 - .byte -56 - .byte 56 - .zero 5 - .type ymtc_3D_tlc_value, %object - .size ymtc_3D_tlc_value, 357 -ymtc_3D_tlc_value: - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte -10 - .byte -10 - .byte -6 - .byte -6 - .byte -2 - .byte 2 - .byte 2 - .byte -6 - .byte -6 - .byte -4 - .byte -4 - .byte -4 - .byte -6 - .byte -8 - .byte 6 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte -2 - .byte -2 - .byte -2 - .byte -4 - .byte -4 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -11 - .byte -2 - .byte 2 - .byte 4 - .byte 4 - .byte 6 - .byte 6 - .byte 6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -6 - .byte -8 - .byte -14 - .byte -6 - .byte -15 - .byte -11 - .byte 2 - .byte -12 - .byte -8 - .byte -2 - .byte 2 - .byte -3 - .byte -7 - .byte -10 - .byte -4 - .byte -8 - .byte -6 - .byte -18 - .byte -18 - .byte -14 - .byte -14 - .byte -10 - .byte -5 - .byte -5 - .byte -14 - .byte -14 - .byte -12 - .byte -12 - .byte -12 - .byte -13 - .byte -15 - .byte -2 - .byte -8 - .byte -8 - .byte -8 - .byte -8 - .byte -7 - .byte -7 - .byte -10 - .byte -10 - .byte -10 - .byte -12 - .byte -12 - .byte -13 - .byte -13 - .byte -14 - .byte -14 - .byte -14 - .byte -14 - .byte -14 - .byte -13 - .byte -18 - .byte -10 - .byte -6 - .byte -4 - .byte -4 - .byte -2 - .byte -1 - .byte -1 - .byte -14 - .byte -14 - .byte -14 - .byte -14 - .byte -14 - .byte -15 - .byte -21 - .byte -12 - .byte -11 - .byte -7 - .byte -7 - .byte -3 - .byte 1 - .byte 1 - .byte -8 - .byte -7 - .byte -5 - .byte -5 - .byte -5 - .byte -7 - .byte -9 - .byte 4 - .byte -1 - .byte -1 - .byte -1 - .byte -1 - .byte -1 - .byte -1 - .byte -4 - .byte -3 - .byte -3 - .byte -5 - .byte -5 - .byte -7 - .byte -7 - .byte -8 - .byte -7 - .byte -7 - .byte -7 - .byte -7 - .byte -7 - .byte -12 - .byte -4 - .byte 1 - .byte 3 - .byte 3 - .byte 5 - .byte 5 - .byte 5 - .byte -8 - .byte -7 - .byte -7 - .byte -7 - .byte -7 - .byte -9 - .byte -15 - .byte 2 - .byte -7 - .byte -11 - .byte -14 - .byte -8 - .byte -12 - .byte -10 - .byte 6 - .byte 1 - .byte -3 - .byte -6 - .byte 0 - .byte -4 - .byte -2 - .byte 10 - .byte -3 - .byte -7 - .byte -6 - .byte 4 - .byte -4 - .byte -2 - .byte -10 - .byte -23 - .byte -39 - .byte -22 - .byte -19 - .byte -24 - .byte -18 - .byte -7 - .byte -27 - .byte -35 - .byte -26 - .byte -15 - .byte -24 - .byte -26 - .byte 6 - .byte -11 - .byte 5 - .byte -2 - .byte -16 - .byte -16 - .byte -2 - .byte -2 - .byte -15 - .byte -15 - .byte -20 - .byte -8 - .byte -16 - .byte -18 - .byte 2 - .byte 1 - .byte -3 - .byte -10 - .byte -8 - .byte -4 - .byte -6 - .byte -2 - .byte -15 - .byte -11 - .byte -26 - .byte -8 - .byte -20 - .byte -30 - .byte 6 - .byte -19 - .byte -3 - .byte -46 - .byte 0 - .byte 0 - .byte 2 - .byte 6 - .byte 9 - .byte 5 - .byte 2 - .byte 4 - .byte 8 - .byte 6 - .byte 8 - .byte 9 - .byte 9 - .byte 6 - .byte 8 - .byte 8 - .byte 6 - .byte 10 - .byte 13 - .byte 9 - .byte 6 - .byte 8 - .byte 12 - .byte 10 - .byte 2 - .byte 5 - .byte 1 - .byte -2 - .byte 0 - .byte 0 - .byte 6 - .byte 12 - .byte 1 - .byte 13 - .byte 2 - .byte 12 - .byte 12 - .byte 14 - .byte -12 - .byte -14 - .byte -20 - .byte -18 - .byte -16 - .byte -16 - .byte -14 - .byte -12 - .byte -10 - .byte -21 - .byte -14 - .byte -12 - .byte -12 - .byte -10 - .byte -12 - .byte -18 - .byte -22 - .byte -24 - .byte -18 - .byte -18 - .byte -18 - .byte -12 - .byte -14 - .byte -23 - .byte -20 - .byte -20 - .byte -20 - .byte -20 - .byte 16 - .byte 16 - .byte 8 - .byte 8 - .byte 12 - .byte 12 - .byte 12 - .byte 18 - .byte 18 - .byte 10 - .byte 8 - .byte 14 - .byte 14 - .byte 14 - .byte 16 - .byte 14 - .byte 6 - .byte 6 - .byte 12 - .byte 14 - .byte 8 - .byte 10 - .byte 13 - .byte 5 - .byte 2 - .byte 14 - .byte 8 - .byte 6 - .byte 6 - .byte 13 - .byte 9 - .byte 4 - .byte 14 - .byte 10 - .byte 10 - .byte 10 - .byte 13 - .byte 9 - .byte 6 - .byte 8 - .byte 12 - .byte 10 - .byte 2 - .byte 5 - .byte 1 - .byte -2 - .byte 0 - .byte 0 - .byte 6 - .byte 12 - .byte 1 - .byte 13 - .byte 2 - .byte 12 - .byte 12 - .byte 14 - .zero 3 - .type ymtc_3D_slc_value, %object - .size ymtc_3D_slc_value, 10 -ymtc_3D_slc_value: - .byte 0 - .byte -8 - .byte 8 - .byte -16 - .byte -20 - .byte 24 - .byte -26 - .byte 40 - .byte -12 - .byte 56 - .zero 6 - .type __func__.20379, %object - .size __func__.20379, 23 -__func__.20379: - .string "flash_start_plane_read" - .zero 1 - .type __func__.20265, %object - .size __func__.20265, 26 -__func__.20265: - .string "flash_erase_duplane_block" - .zero 6 - .type __func__.20276, %object - .size __func__.20276, 21 -__func__.20276: - .string "flash_erase_block_en" - .zero 3 - .type random_seed, %object - .size random_seed, 256 -random_seed: - .hword 22378 - .hword 1512 - .hword 25245 - .hword 17827 - .hword 25756 - .hword 19440 - .hword 9026 - .hword 10030 - .hword 29528 - .hword 20467 - .hword 29676 - .hword 24432 - .hword 31328 - .hword 6872 - .hword 13426 - .hword 13842 - .hword 8783 - .hword 1108 - .hword 782 - .hword 28837 - .hword 30729 - .hword 9505 - .hword 18676 - .hword 23085 - .hword 18730 - .hword 1085 - .hword 32609 - .hword 14697 - .hword 20858 - .hword 15170 - .hword 30365 - .hword 1607 - .hword 32298 - .hword 4995 - .hword 18905 - .hword 1976 - .hword 9592 - .hword 20204 - .hword 17443 - .hword 13615 - .hword 23330 - .hword 29369 - .hword 13947 - .hword 9398 - .hword 32398 - .hword 8984 - .hword 27600 - .hword 21785 - .hword 6019 - .hword 6311 - .hword 31598 - .hword 30210 - .hword 19327 - .hword 13896 - .hword 11347 - .hword 27545 - .hword 3107 - .hword 26575 - .hword 32270 - .hword 19852 - .hword 20601 - .hword 8349 - .hword 9290 - .hword 29819 - .hword 13579 - .hword 3661 - .hword 28676 - .hword 27331 - .hword 32574 - .hword 8693 - .hword 31253 - .hword 9081 - .hword 5399 - .hword 6842 - .hword 20087 - .hword 5537 - .hword 1274 - .hword 11617 - .hword 9530 - .hword 4866 - .hword 8035 - .hword 23219 - .hword 1178 - .hword 23272 - .hword 7383 - .hword 18944 - .hword 12488 - .hword 12871 - .hword 29340 - .hword 20532 - .hword 11022 - .hword 22514 - .hword 228 - .hword 22363 - .hword 24978 - .hword 14584 - .hword 12138 - .hword 3092 - .hword 17916 - .hword 16863 - .hword 14554 - .hword 31457 - .hword 29474 - .hword 25311 - .hword 24121 - .hword 3684 - .hword 28037 - .hword 22865 - .hword 22839 - .hword 25217 - .hword 13217 - .hword 27186 - .hword 14938 - .hword 11180 - .hword 29754 - .hword 24180 - .hword 15150 - .hword 32455 - .hword 20434 - .hword 23848 - .hword 29983 - .hword 16120 - .hword 14769 - .hword 20041 - .hword 29803 - .hword 28406 - .hword 17598 - .hword 28087 - .type __func__.21082, %object - .size __func__.21082, 13 -__func__.21082: - .string "buf_add_tail" - .zero 3 - .type __func__.21095, %object - .size __func__.21095, 10 -__func__.21095: - .string "buf_alloc" - .zero 6 - .type __func__.21109, %object - .size __func__.21109, 16 -__func__.21109: - .string "buf_remove_free" - .type zftl_debug_proc_fops, %object - .size zftl_debug_proc_fops, 288 -zftl_debug_proc_fops: - .xword 0 - .xword seq_lseek - .xword seq_read - .xword zftl_debug_proc_write - .zero 72 - .xword zftl_debug_proc_open - .zero 8 - .xword single_release - .zero 160 - .type __func__.39157, %object - .size __func__.39157, 12 -__func__.39157: - .string "gc_add_sblk" - .zero 4 - .type __func__.39249, %object - .size __func__.39249, 19 -__func__.39249: - .string "gc_write_completed" - .zero 5 - .type __func__.39855, %object - .size __func__.39855, 18 -__func__.39855: - .string "ftl_alloc_sys_blk" - .zero 6 - .type __func__.39865, %object - .size __func__.39865, 17 -__func__.39865: - .string "ftl_free_sys_blk" - .zero 7 - .type __func__.39986, %object - .size __func__.39986, 23 -__func__.39986: - .string "ftl_get_ppa_from_index" - .zero 1 - .type __func__.40026, %object - .size __func__.40026, 22 -__func__.40026: - .string "ftl_get_new_free_page" - .zero 2 - .type __func__.40037, %object - .size __func__.40037, 22 -__func__.40037: - .string "ftl_ext_alloc_new_blk" - .zero 2 - .type __func__.39306, %object - .size __func__.39306, 16 -__func__.39306: - .string "gc_free_src_blk" - .type __func__.38900, %object - .size __func__.38900, 14 -__func__.38900: - .string "ftl_write_buf" - .zero 2 - .type __func__.38945, %object - .size __func__.38945, 18 -__func__.38945: - .string "zftl_add_read_buf" - .align 3 -.LANCHOR4 = . + 0 - .type __func__.40459, %object - .size __func__.40459, 21 -__func__.40459: - .string "pm_select_ram_region" - .zero 3 - .type __func__.20807, %object - .size __func__.20807, 20 -__func__.20807: - .string "flash_die_info_init" - .zero 4 - .type __func__.38832, %object - .size __func__.38832, 17 -__func__.38832: - .string "lpa_rebuild_hash" - .zero 7 - .type __func__.39724, %object - .size __func__.39724, 20 -__func__.39724: - .string "zftl_sblk_list_init" - .zero 4 - .type __func__.40391, %object - .size __func__.40391, 13 -__func__.40391: - .string "pm_free_sblk" - .zero 3 - .type __func__.21145, %object - .size __func__.21145, 21 -__func__.21145: - .string "flash_info_data_init" - .zero 3 - .type samsung_14nm_slc_rr, %object - .size samsung_14nm_slc_rr, 26 -samsung_14nm_slc_rr: - .byte 0 - .byte 10 - .byte -10 - .byte 20 - .byte -20 - .byte 30 - .byte -30 - .byte 40 - .byte -40 - .byte 50 - .byte -50 - .byte 60 - .byte -60 - .byte -70 - .byte -80 - .byte -90 - .byte -100 - .byte -110 - .byte -120 - .byte -9 - .byte 70 - .byte 80 - .byte 90 - .byte -125 - .byte -115 - .byte 100 - .zero 6 - .type samsung_14nm_mlc_rr, %object - .size samsung_14nm_mlc_rr, 104 -samsung_14nm_mlc_rr: - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte -4 - .byte 3 - .byte -4 - .byte -6 - .byte 6 - .byte 0 - .byte 6 - .byte -10 - .byte -10 - .byte 4 - .byte -10 - .byte 16 - .byte 12 - .byte -4 - .byte 12 - .byte 8 - .byte -16 - .byte 10 - .byte -16 - .byte 24 - .byte 18 - .byte -14 - .byte 18 - .byte -4 - .byte -22 - .byte -16 - .byte -22 - .byte -8 - .byte 24 - .byte -9 - .byte 24 - .byte 8 - .byte -28 - .byte -4 - .byte -28 - .byte 16 - .byte 30 - .byte 10 - .byte 30 - .byte 10 - .byte -34 - .byte 6 - .byte -34 - .byte 0 - .byte 36 - .byte -8 - .byte 36 - .byte -8 - .byte -40 - .byte -2 - .byte -40 - .byte -20 - .byte -46 - .byte -4 - .byte -46 - .byte -30 - .byte 3 - .byte 0 - .byte 3 - .byte -3 - .byte -2 - .byte -4 - .byte -2 - .byte -6 - .byte -4 - .byte -4 - .byte -4 - .byte -10 - .byte -6 - .byte -8 - .byte -6 - .byte -14 - .byte -9 - .byte -8 - .byte -9 - .byte -18 - .byte -52 - .byte 22 - .byte -52 - .byte 10 - .byte 42 - .byte 4 - .byte 42 - .byte 4 - .byte 48 - .byte -9 - .byte 48 - .byte 4 - .byte -58 - .byte 12 - .byte -58 - .byte 0 - .byte -64 - .byte -24 - .byte -64 - .byte -6 - .byte 9 - .byte 18 - .byte 9 - .byte 8 - .type __func__.20188, %object - .size __func__.20188, 19 -__func__.20188: - .string "flash_read_page_en" - .zero 5 - .type __func__.20314, %object - .size __func__.20314, 26 -__func__.20314: - .string "flash_start_tlc_page_prog" - .zero 6 - .type __func__.20325, %object - .size __func__.20325, 29 -__func__.20325: - .string "flash_start_3d_mlc_page_prog" - .zero 3 - .type __func__.20343, %object - .size __func__.20343, 22 -__func__.20343: - .string "flash_start_page_prog" - .zero 2 - .type __func__.20367, %object - .size __func__.20367, 31 -__func__.20367: - .string "flash_complete_plane_page_read" - .zero 1 - .type __func__.20392, %object - .size __func__.20392, 25 -__func__.20392: - .string "flash_complete_page_read" - .zero 7 - .type __func__.40224, %object - .size __func__.40224, 31 -__func__.40224: - .string "queue_wait_first_req_completed" - .zero 1 - .type __func__.40278, %object - .size __func__.40278, 15 -__func__.40278: - .string "sblk_prog_page" - .zero 1 - .type __func__.40305, %object - .size __func__.40305, 15 -__func__.40305: - .string "sblk_read_page" - .zero 1 - .type __func__.39204, %object - .size __func__.39204, 21 -__func__.39204: - .string "gc_check_data_one_wl" - .zero 3 - .type __func__.20249, %object - .size __func__.20249, 19 -__func__.20249: - .string "flash_prog_page_en" - .zero 5 - .type __func__.40101, %object - .size __func__.40101, 14 -__func__.40101: - .string "ftl_prog_page" - .zero 2 - .type __func__.39758, %object - .size __func__.39758, 15 -__func__.39758: - .string "ftl_info_flush" - .zero 1 - .type __func__.40063, %object - .size __func__.40063, 19 -__func__.40063: - .string "ftl_ext_info_flush" - .zero 5 - .type __func__.40075, %object - .size __func__.40075, 18 -__func__.40075: - .string "ftl_ext_info_init" - .zero 6 - .type __func__.39813, %object - .size __func__.39813, 15 -__func__.39813: - .string "ftl_alloc_sblk" - .zero 1 - .type __func__.40431, %object - .size __func__.40431, 17 -__func__.40431: - .string "pm_alloc_new_blk" - .zero 7 - .type __func__.40441, %object - .size __func__.40441, 14 -__func__.40441: - .string "pm_write_page" - .zero 2 - .type __func__.21167, %object - .size __func__.21167, 17 -__func__.21167: - .string "flash_info_flush" - .zero 7 - .type __func__.21130, %object - .size __func__.21130, 20 -__func__.21130: - .string "flash_info_blk_init" - .zero 4 - .type __func__.20862, %object - .size __func__.20862, 16 -__func__.20862: - .string "nand_flash_init" - .type __func__.39928, %object - .size __func__.39928, 16 -__func__.39928: - .string "ftl_sysblk_dump" - .type __func__.39953, %object - .size __func__.39953, 23 -__func__.39953: - .string "ftl_open_sblk_recovery" - .zero 1 - .type __func__.40375, %object - .size __func__.40375, 16 -__func__.40375: - .string "load_l2p_region" - .type __func__.40415, %object - .size __func__.40415, 6 -__func__.40415: - .string "pm_gc" - .zero 2 - .type __func__.39147, %object - .size __func__.39147, 12 -__func__.39147: - .string "gc_recovery" - .zero 4 - .type __func__.39236, %object - .size __func__.39236, 22 -__func__.39236: - .string "gc_update_l2p_map_new" - .zero 2 - .type __func__.39350, %object - .size __func__.39350, 16 -__func__.39350: - .string "gc_scan_src_blk" - .type __func__.39411, %object - .size __func__.39411, 20 -__func__.39411: - .string "gc_scan_static_data" - .zero 4 - .type __func__.39474, %object - .size __func__.39474, 18 -__func__.39474: - .string "gc_block_vpn_scan" - .zero 6 - .type __func__.39904, %object - .size __func__.39904, 14 -__func__.39904: - .string "ftl_sblk_dump" - .zero 2 - .type __func__.38978, %object - .size __func__.38978, 10 -__func__.38978: - .string "zftl_read" - .zero 6 - .type __func__.40007, %object - .size __func__.40007, 19 -__func__.40007: - .string "ftl_update_l2p_map" - .zero 5 - .type __func__.38882, %object - .size __func__.38882, 17 -__func__.38882: - .string "ftl_write_commit" - .zero 7 - .type __func__.39279, %object - .size __func__.39279, 16 -__func__.39279: - .string "gc_do_copy_back" - .type __func__.39529, %object - .size __func__.39529, 11 -__func__.39529: - .string "zftl_do_gc" - .zero 5 - .type __func__.39010, %object - .size __func__.39010, 13 -__func__.39010: - .string "_ftl_discard" - .section .rodata.str1.1,"aMS",%progbits,1 -.LC0: - .string "\n!!!!! error @ func:%s - line:%d\n" -.LC1: - .string "%s\n" -.LC2: - .string "FTL version: 6.0.24 20210107" -.LC3: - .string "zftl_debug:0x%x\n" -.LC4: - .string "...%s enter...\n" -.LC5: - .string "No.0 FLASH ID: %x %x %x %x %x %x\n" -.LC6: - .string "DiePerChip: %x\n" -.LC7: - .string "SectPerPage: %x\n" -.LC8: - .string "PagePerBlk: %x\n" -.LC9: - .string "Cell: %x\n" -.LC10: - .string "PlanePerDie: %x\n" -.LC11: - .string "BlkPerPlane: %x\n" -.LC12: - .string "die gap: %x\n" -.LC13: - .string "lsbMode: %x\n" -.LC14: - .string "ReadRetryMode: %x\n" -.LC15: - .string "ecc: %x\n" -.LC16: - .string "idb ecc: %x\n" -.LC17: - .string "OptMode: %x\n" -.LC18: - .string "g_nand_max_die: %x\n" -.LC19: - .string "Cache read enable: %x\n" -.LC20: - .string "Cache random read enable: %x\n" -.LC21: - .string "Cache prog enable: %x\n" -.LC22: - .string "multi read enable: %x\n" -.LC23: - .string "multi prog enable: %x\n" -.LC24: - .string "interleave enable: %x\n" -.LC25: - .string "read retry enable: %x\n" -.LC26: - .string "randomizer enable: %x\n" -.LC27: - .string "SDR enable: %x\n" -.LC28: - .string "ONFI enable: %x\n" -.LC29: - .string "TOGGLE enable: %x\n" -.LC30: - .string "g_flash_slc_mode: %x %x\n" -.LC31: - .string "MultiPlaneProgCmd: %x %x\n" -.LC32: - .string "MultiPlaneReadCmd: %x %x\n" -.LC33: - .string "g_flash_toggle_mode_en: %x\n" -.LC34: - .string "...%s enter... %p\n" -.LC35: - .string "0:%x %x %x %x %x\n" -.LC36: - .string "g_nandc_ver...%d\n" -.LC37: - .string "nand sdr mode %x\n" -.LC38: - .string "nand ddr mode %x\n" -.LC39: - .string "No.%d FLASH ID:%x %x %x %x %x %x\n" -.LC40: - .string "otp:%x %x %x %x\n" -.LC41: - .string "bad block test:%x %x\n" -.LC42: - .string "flash_erase_duplane_block %x %x %x\n" -.LC43: - .string "flash_erase_duplane_block pageadd = %x status = %x\n" -.LC44: - .string "flash_erase_block %x %x %x\n" -.LC45: - .string "flash_erase_block %d block = %x status = %x\n" -.LC46: - .string "erase done: %x\n" -.LC47: - .string "sblk_queue_head = %d\n" -.LC48: - .string "sblk_read_completed_queue_head = %d\n" -.LC49: - .string "sblk_gc_write_completed_queue_head = %d\n" -.LC50: - .string "sblk_write_completed_queue_head = %d\n" -.LC51: - .string "p_free_buf_head = %d\n" -.LC52: - .string "free_buf_count = %d\n" -.LC53: - .string "buf = %d, next=%d, flag=%d gc_write_flag=%d, lun_state=%d, op_status = %d lpa=%x, ppa=%x\n" -.LC54: - .string "flash_mask_bad_block %d %d\n" -.LC55: - .string "zftl_debug" -.LC56: - .string "FLASH ID: %x %x %x %x %x %x\n" -.LC57: - .string "density: %d MB\n" -.LC58: - .string "device density: %d MB\n" -.LC59: - .string "FTL INFO:\n" -.LC60: - .string "max_lpn = 0x%x\n" -.LC61: - .string "density = 0x%x\n" -.LC62: - .string "slc vpn = 0x%x\n" -.LC63: - .string "xlc vpn = 0x%x\n" -.LC64: - .string "free slc blk = 0x%x\n" -.LC65: - .string "free xlc blk = 0x%x\n" -.LC66: - .string "free mix blk = 0x%x\n" -.LC67: - .string "slc data blk = 0x%x\n" -.LC68: - .string "slc cache blk = 0x%x\n" -.LC69: - .string "xlc data blk = 0x%x\n" -.LC70: - .string "free buf = %d, %d, %d\n" -.LC71: - .string "bad blk = %d %d\n" -.LC72: - .string "TBW = %d MB\n" -.LC73: - .string "TBR = %d MB\n" -.LC74: - .string "POC = %d\n" -.LC75: - .string "PLC = %d\n" -.LC76: - .string "sys run time = %d S\n" -.LC77: - .string "slc mode = %x %x %x\n" -.LC78: - .string "prog err = %d\n" -.LC79: - .string "read err = %d\n" -.LC80: - .string "GC XLC page = %d\n" -.LC81: - .string "GC SLC page = %d\n" -.LC82: - .string "discard page = 0x%x\n" -.LC83: - .string "version = %d\n" -.LC84: - .string "acblk = 0x%x %d %d\n" -.LC85: - .string "tmblk = 0x%x %d %d\n" -.LC86: - .string "gcblk = 0x%x %d %d\n" -.LC87: - .string "slc ec = %d, %d, %d, %d, %d\n" -.LC88: - .string "xlc ec = %d, %d, %d, %d, %d\n" -.LC89: - .string "gc free blk th = %d\n" -.LC90: - .string "gc vpn th = %d %d %d %d %d\n" -.LC91: - .string "swl blk = %x %x %x %x\n" -.LC92: - .string "rf info = %x %x %x %x %x\n" -.LC93: - .string "gc_add_sblk = %d, %d, %d, %d, %d, %d, %d\n" -.LC94: - .string "gc_add_sblk = %d, %d, %d\n" -.LC95: - .string "gc_add_sblk = %d, %d, %d,last update:%d, %d\n" -.LC96: - .string "gc_add_sblk = %d, %d, %d, %d, %d, %d\n" -.LC97: - .string "gc_mark_bad_ppa %d %x %x\n" -.LC98: - .string "status: %x, ppa: %x\n" -.LC99: - .string "%d gc_free_temp_buf buf id= %x\n" -.LC100: - .string "gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n" -.LC101: - .string "zftl_get_gc_node cache = %x index = %d vpn = %x\n" -.LC102: - .string "gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n" -.LC103: - .string "swl_tlc_free_mini_ec_blk alloc sblk %x\n" -.LC104: - .string "zftl_get_free_sblk %x %d, %p %d %d\n" -.LC105: - .string "zftl_gc_get_free_sblk %x %x %x, %d %d %d\n" -.LC106: - .string "swl_slc_free_mini_ec_blk alloc sblk %x\n" -.LC107: - .string "list count:%p %d\n" -.LC108: - .string "%d: node:%x %x %x %x, %d %d %d %d %d\n" -.LC109: - .string "ftl_vpn_decrement %x = %d, %d\n" -.LC110: - .string "mask bad block:cs %x %x block: %x %x\n" -.LC111: - .string "gc_free_bad_sblk 0x%x\n" -.LC112: - .string "swl_slc_free_mini_ec_blk sblk %x\n" -.LC113: - .string "gc_free_src_blk = %x, vpn = %d\n" -.LC114: - .string "gc_free_src_blk %x, %d\n" -.LC115: - .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" -.LC116: - .string "totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n" -.LC117: - .string "gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n" -.LC118: - .string "slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n" -.LC119: - .string "gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n" -.LC120: - .string "swl : %x %x %x %x %x %x\n" -.LC121: - .string "ftl prog error =%x, lpa = %x, ppa= %x\n" -.LC122: - .string "ftl re prog: lpa = %x, ppa= %x\n" -.LC123: - .string "dump_sblk_queue: %d\n" -.LC124: - .string "buf id= %d state = %d ppa = %x\n" -.LC125: - .string "%s %d %d\n" -.LC126: - .string "gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" -.LC127: - .string "gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" -.LC128: - .string "gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" -.LC129: - .string "gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" -.LC130: - .string "gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" -.LC131: - .string "gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n" -.LC132: - .string "gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n" -.LC133: - .string "swl add tlc gc = %x, %d, %d, %d, %d, %d\n" -.LC134: - .string "swl add slc gc = %x, %d, %d, %d, %d, %d\n" -.LC135: - .string "free blk vpn error: %x %x\n" -.LC136: - .string "GC PM block %x %x %x %d\n" -.LC137: - .string "ftl_free_no_use_map_blk %x %x %x %d\n" -.LC138: - .string "...%d @ %s\n" -.LC139: - .string "rk_ftl_de_init %x\n" -.LC140: - .string "\0013" -.LC141: - .string "otp error! %d" -.LC142: - .string "rr" -.LC143: - .string "flash_abort_clear = %d\n" -.LC144: - .string "%d mtrans_cnt = %d page_num = %d\n" -.LC145: - .string "%d flReg.d32=%x %x\n" -.LC146: - .string "nandc:" -.LC147: - .string "nandc_xfer_done read error %x\n" -.LC148: - .string "dqs data abort %x\n" -.LC149: - .string "dqs data timeout %x\n" -.LC150: - .string "xfer error %x\n" -.LC151: - .string "MT %d row=%x,last status %d,status = %d\n" -.LC152: - .string "MT RR %d row=%x,count %d,status=%d\n" -.LC153: - .string "toshiba SRR %d row=%x, status=%d\n" -.LC154: - .string "toshiba TRR %d row=%x, status=%d\n" -.LC155: - .string "toshiba RR %d row=%x,count %d,status=%d\n" -.LC156: - .string "YMTC RR %d row=%x,count %d,status=%d\n" -.LC157: - .string "samsung SRR %d row=%x, status=%d\n" -.LC158: - .string "samsung TRR %d row=%x, status=%d\n" -.LC159: - .string "samsung RR %d row=%x,count %d,status=%d\n" -.LC160: - .string "hynix RR %d row=%x, count %d, status=%d\n" -.LC161: - .string "%d flash_ddr_tuning_read %x ecc=%d\n" -.LC162: - .string "sync para %d\n" -.LC163: - .string "DDR mode Read error %x %x\n" -.LC164: - .string "SDR mode Read %x %x ecc:%x\n" -.LC165: - .string "flash_read_page_en %x %x %x %x\n" -.LC166: - .string "flash_read_page_en %x %x error_ecc %d %d\n" -.LC167: - .string "flash_get_last_written_page: %x %x %x\n" -.LC168: - .string "flash_prog_page page_addr = %x status = %x\n" -.LC169: - .string "flash_prog_page %x %x %x\n" -.LC170: - .string "ymtc_flash_tlc_page_prog page_addr = %x status = %x\n" -.LC171: - .string "sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n" -.LC172: - .string "flash_complete_page_read %x %x error_ecc %d %d\n" -.LC173: - .string "read: %x %x %x %x\n" -.LC174: - .string "0set buf %d,status = %x, ppa = %x lun state = %d\n" -.LC175: - .string "prog end %x %x error_ecc %d %d\n" -.LC176: - .string "1set buf %d,status = %x, ppa = %x lun state = %d\n" -.LC177: - .string "dp prog end %x %x error_ecc %d %d\n" -.LC178: - .string "sblk_prog_page ppa = %x, count = %d\n" -.LC179: - .string "err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" -.LC180: - .string "flash_prog_page_en:%x %x %x\n" -.LC181: - .string "w d:" -.LC182: - .string "w s:" -.LC183: - .string "spare" -.LC184: - .string "data" -.LC185: - .string "write error: %x\n" -.LC186: - .string "g_ftl_info_blk blk = %x, page = %x version = %d\n" -.LC187: - .string "%d %x @%d %x\n" -.LC188: - .string "ftl_info_blk_init %d %d %x\n" -.LC189: - .string "ftl info hash %x error\n" -.LC190: - .string "ink flag: %x\n" -.LC191: - .string "%s %d %d %x %x\n" -.LC192: - .string "ext info hash %x error\n" -.LC193: - .string "%s %x %x %x\n" -.LC194: - .string "ftl_sblk_dump_write = %x %d %d %d %d\n" -.LC195: - .string "blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" -.LC196: - .string "ftl_sblk_dump_write2 = %x %d %d %d\n" -.LC197: - .string "ftl_sblk_dump_write = %x %x\n" -.LC198: - .string "ftl_sblk_dump_write done = %x\n" -.LC199: - .string "%x: ink_scaned_blk_num %x\n" -.LC200: - .string "ftl_ink_check_sblk = %x %d %d\n" -.LC201: - .string "ftl_ink_check_sblk = %x %d %d end\n" -.LC202: - .string "alloc sblk %x %d\n" -.LC203: - .string "blk %x is bad block\n" -.LC204: - .string "pm_alloc_new_blk: %x %x %x %x\n" -.LC205: - .string "pm_write_page write error: %x\n" -.LC206: - .string "finfo:" -.LC207: - .string "flash_info_flush id = %x, page = %x\n" -.LC208: - .string "sys_info_flush error:%x\n" -.LC209: - .string "...%d @ %s %d %p\n" -.LC210: - .string "no sys info %x\n" -.LC211: - .string "l2p:" -.LC212: - .string "saved_active_page = %x\n" -.LC213: - .string "saved_active_plane = %x\n" -.LC214: - .string "sblk = %x\n" -.LC215: - .string "phy_blk = %x %x\n" -.LC216: - .string "num_planes = %x\n" -.LC217: - .string "recovery blk=%x, page=%x, ppa = %x, status = %x, hash:%x\n" -.LC218: - .string "data:" -.LC219: - .string "sblk = %x, vpn0 = %d, vpn1 = %d\n" -.LC220: - .string "dump_write_lpa = %x %x %x %x\n" -.LC221: - .string "dump write new ppa = %x, last ppa = %x lpa = %x\n" -.LC222: - .string "dump write = %x %x %x\n" -.LC223: - .string "dump write hash update = %x %x %x\n" -.LC224: - .string "free_buf_count: %d\n" -.LC225: - .string "g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n" -.LC226: - .string "ftl_ext_info_blk blk:0x%x, page:0x%x\n" -.LC227: - .string "ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" -.LC228: - .string "tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" -.LC229: - .string "gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" -.LC230: - .string "lpa:" -.LC231: - .string "vpn:" -.LC232: - .string "sblk:" -.LC233: - .string "lpa_hash:" -.LC234: - .string "lpa_hash_index:" -.LC235: - .string "%s w error lpn = %x, max ppa = %d\n" -.LC236: - .string "region_id = %d, pm_max_region = %d\n" -.LC237: - .string "load_l2p_region no ppa = %x , %x, all setting 0xff....\n" -.LC238: - .string "load_l2p_region = %x,%x,%x, %x\n" -.LC239: - .string "pm_ppa:" -.LC240: - .string "spare:" -.LC241: - .string "pm_init posr %x %x %x\n" -.LC242: - .string "pm_init recovery %x %x %x\n" -.LC243: - .string "pm_init hash %x error\n" -.LC244: - .string "pm_log2phys lpn = %d, max lpn = %d\n" -.LC245: - .string "ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" -.LC246: - .string "ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" -.LC247: - .string "gc_recovery: %x vpn = %x\n" -.LC248: - .string "gc_update_l2p_map_new sblk %x\n" -.LC249: - .string "gc_update_l2p_map_new: %x %x %x\n" -.LC250: - .string "lpa: %x %x %x\n" -.LC251: - .string "gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n" -.LC252: - .string "gc_scan_src_blk = %x, vpn = %d\n" -.LC253: - .string "js hash error:%x %x %x\n" -.LC254: - .string "gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n" -.LC255: - .string "gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n" -.LC256: - .string "ftl_sblk_dump = %x %d %d %d %d\n" -.LC257: - .string "ftl_sblk_dump = %x %x %x %x\n" -.LC258: - .string "page_addr = %x, lpa=%x vpn = %d\n" -.LC259: - .string "index= %x, lpa=%x\n" -.LC260: - .string "block = %x, vpn=%x check vpn = %x\n" -.LC261: - .string "ftl_read %x %x %x\n" -.LC262: - .string "ftl_read refresh =%x, lpa = %x, ppa= %x\n" -.LC263: - .string "id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n" -.LC264: - .string "zftl debug cmd: %s\n" -.LC265: - .string "cmd:" -.LC266: - .string "dumpl2p" -.LC267: - .string "pm l2p:" -.LC268: - .string "pm blk:" -.LC269: - .string "dumppm:" -.LC270: - .string "p_cmd: %s\n" -.LC271: - .string "pm ram = %x, %x\n" -.LC272: - .string "ram:" -.LC273: - .string "pm:" -.LC274: - .string "dumpsys" -.LC275: - .string "dumplist:" -.LC276: - .string "vpncheck" -.LC277: - .string "dumpppa:" -.LC278: - .string "dumpblk:" -.LC279: - .string "setzdebug:" -.LC280: - .string "lpa2ppa:" -.LC281: - .string "lpa: %x--> ppa: %x\n" -.LC282: - .string "help:\n" -.LC283: - .string "1. echo dumpl2p > /proc/zftl_debug\n" -.LC284: - .string "2. echo dumppm:x > /proc/zftl_debug\n" -.LC285: - .string "3. echo dumpsys > /proc/zftl_debug\n" -.LC286: - .string "4. echo dumpppa:x > /proc/zftl_debug\n" -.LC287: - .string "5. echo vpncheck > /proc/zftl_debug\n" -.LC288: - .string "6. echo setzdebug:x > /proc/zftl_debug\n" -.LC289: - .string "7. echo dumplist:x > /proc/zftl_debug\n" -.LC290: - .string "8. echo lpa2ppa:x> /proc/zftl_debug\n" -.LC291: - .string "ftl_update_l2p_map: %x %x %x\n" -.LC292: - .string "ftl_update_l2p_map" -.LC293: - .string "lpa_tbl:" -.LC294: - .string "sblk %x vpn: %d %d\n" -.LC295: - .string "error gc_add_sblk: %x\n" -.LC296: - .string "%d read error: ppa:%x, lpa:%x, status:%x\n" -.LC297: - .string "gc page in buf: lpa %x ppa = %x pageindex= %x\n" -.LC298: - .string "gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n" -.LC299: - .string "gc %d: %d %d %d %d %d %d %d\n" -.LC300: - .string "GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n" -.LC301: - .string "gc free %x, %d\n" -.LC302: - .string "_c_user_data_density := %d\n" -.LC303: - .string "_c_totle_phy_density := %d\n" -.LC304: - .string "_c_totle_log_page := %d\n" -.LC305: - .string "_c_totle_data_density := %d\n" -.LC306: - .string "_c_ftl_pm_page_num := %d\n" -.LC307: - .string "_c_ftl_byte_pre_page := %d\n" -.LC308: - .string "_c_max_pm_sblk := %d\n" -.LC309: - .string "_min_slc_super_block := %d\n" -.LC310: - .string "_max_xlc_super_block := %d\n" -.LC311: - .string "gp_ftl_ext_info %p %p %p\n" -.LC312: - .string "flash info size: %d %d %d\n" -.LC313: - .string "ftl_init %x\n" -.LC314: - .string "ftlwrite %x %x %x %x\n" -.LC315: - .string "ftl_discard:(%x, %x, %x, %x)\n" -.LC316: - .string "id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n" -.LC317: - .string "write_idblock fix data %x %x\n" -.LC318: - .string "idblk:" -.LC319: - .string "write_idblock totle_sec %x %x\n" -.LC320: - .string "prog page: %x %x %x, %p %x %x %x\n" -.LC321: - .string "read page: %x %x %x %x\n" -.LC322: - .string "wl_lba %p %x %x %x\n" -.LC323: - .string "RKNAND_GET_DRM_KEY\n" -.LC324: - .string "rk_copy_from_user error\n" -.LC325: - .string "RKNAND_STORE_DRM_KEY\n" -.LC326: - .string "RKNAND_DIASBLE_SECURE_BOOT\n" -.LC327: - .string "RKNAND_ENASBLE_SECURE_BOOT\n" -.LC328: - .string "RKNAND_GET_SN_SECTOR\n" -.LC329: - .string "RKNAND_LOADER_UNLOCK\n" -.LC330: - .string "RKNAND_LOADER_STATUS\n" -.LC331: - .string "RKNAND_LOADER_LOCK\n" -.LC332: - .string "LockKey not match %d\n" -.LC333: - .string "RKNAND_GET_VENDOR_SECTOR\n" -.LC334: - .string "RKNAND_STORE_VENDOR_SECTOR\n" -.LC335: - .string "return ret = %lx\n" -.LC336: - .string "secureBootEn check error\n" -.LC337: - .string "\0013vendor storage %x,%x,%x\n" .data .align 3 -.LANCHOR2 = . + 0 + .set .LANCHOR2,. + 0 .type zftl_debug, %object .size zftl_debug, 4 zftl_debug: @@ -35225,9 +32714,9 @@ tlc_prog_order: .hword 1019 .bss .align 6 -.LANCHOR0 = . + 0 -.LANCHOR3 = . + 4352 -.LANCHOR5 = . + 8704 + .set .LANCHOR0,. + 0 + .set .LANCHOR3,. + 4352 + .set .LANCHOR5,. + 8704 .type g_flash_slc_mode, %object .size g_flash_slc_mode, 1 g_flash_slc_mode: @@ -35257,6 +32746,10 @@ _c_user_data_density: .type gp_sblk_list_tbl, %object .size gp_sblk_list_tbl, 8 gp_sblk_list_tbl: + .zero 8 + .type gp_flash_info, %object + .size gp_flash_info, 8 +gp_flash_info: .zero 8 .type gp_nandc, %object .size gp_nandc, 8 @@ -35315,10 +32808,6 @@ ftl_sblk_vpn: .type gp_ftl_ext_info, %object .size gp_ftl_ext_info, 8 gp_ftl_ext_info: - .zero 8 - .type gp_flash_info, %object - .size gp_flash_info, 8 -gp_flash_info: .zero 8 .type g_retryMode, %object .size g_retryMode, 1 @@ -35353,28 +32842,6 @@ g_nand_opt_para: .type g_flash_toggle_mode_en, %object .size g_flash_toggle_mode_en, 1 g_flash_toggle_mode_en: - .zero 1 - .type nandc_hw_seed, %object - .size nandc_hw_seed, 1 -nandc_hw_seed: - .zero 1 - .zero 6 - .type g_nandc_v6_master_info, %object - .size g_nandc_v6_master_info, 40 -g_nandc_v6_master_info: - .zero 40 - .type nandc_randomizer_en, %object - .size nandc_randomizer_en, 1 -nandc_randomizer_en: - .zero 1 - .zero 1 - .type fill_spare_size, %object - .size fill_spare_size, 2 -fill_spare_size: - .zero 2 - .type g_nandc_ecc_bits, %object - .size g_nandc_ecc_bits, 1 -g_nandc_ecc_bits: .zero 1 .zero 3 .type g_die_cs_idx, %object @@ -35389,7 +32856,7 @@ g_flash_six_addr: .size _c_ftl_cs_bits, 1 _c_ftl_cs_bits: .zero 1 - .zero 6 + .zero 2 .type g_flash_cur_mode, %object .size g_flash_cur_mode, 4 g_flash_cur_mode: @@ -35410,20 +32877,37 @@ IDByte: .type g_flash_interface_mode, %object .size g_flash_interface_mode, 1 g_flash_interface_mode: + .zero 1 + .type g_nandc_ecc_bits, %object + .size g_nandc_ecc_bits, 1 +g_nandc_ecc_bits: .zero 1 .type g_flash_multi_page_prog_en, %object .size g_flash_multi_page_prog_en, 1 g_flash_multi_page_prog_en: .zero 1 + .type nandc_hw_seed, %object + .size nandc_hw_seed, 1 +nandc_hw_seed: + .zero 1 + .type nandc_randomizer_en, %object + .size nandc_randomizer_en, 1 +nandc_randomizer_en: + .zero 1 + .zero 3 + .type g_nandc_v6_master_info, %object + .size g_nandc_v6_master_info, 40 +g_nandc_v6_master_info: + .zero 40 + .type fill_spare_size, %object + .size fill_spare_size, 2 +fill_spare_size: + .zero 2 .zero 6 .type g_buf, %object .size g_buf, 2048 g_buf: .zero 2048 - .type _c_ftl_sec_per_page, %object - .size _c_ftl_sec_per_page, 1 -_c_ftl_sec_per_page: - .zero 1 .type p_free_buf_head, %object .size p_free_buf_head, 1 p_free_buf_head: @@ -35448,7 +32932,7 @@ sblk_gc_write_completed_queue_head: .size sblk_write_completed_queue_head, 1 sblk_write_completed_queue_head: .zero 1 - .zero 1 + .zero 2 .type _c_totle_phy_density, %object .size _c_totle_phy_density, 4 _c_totle_phy_density: @@ -35481,13 +32965,13 @@ slc_cache_sblk: .size xlc_data_sblk, 2 xlc_data_sblk: .zero 2 - .type write_buf_count, %object - .size write_buf_count, 1 -write_buf_count: - .zero 1 .type write_commit_count, %object .size write_commit_count, 1 write_commit_count: + .zero 1 + .type write_buf_count, %object + .size write_buf_count, 1 +write_buf_count: .zero 1 .zero 2 .type gp_ftl_info, %object @@ -35497,28 +32981,28 @@ gp_ftl_info: .type gc_free_slc_sblk_th, %object .size gc_free_slc_sblk_th, 2 gc_free_slc_sblk_th: - .zero 2 - .type gc_tlc_mode_tlc_vpn_th, %object - .size gc_tlc_mode_tlc_vpn_th, 2 -gc_tlc_mode_tlc_vpn_th: - .zero 2 - .type gc_tlc_mode_slc_vpn_th, %object - .size gc_tlc_mode_slc_vpn_th, 2 -gc_tlc_mode_slc_vpn_th: - .zero 2 - .type gc_slc_mode_vpn_th, %object - .size gc_slc_mode_vpn_th, 2 -gc_slc_mode_vpn_th: - .zero 2 - .type gc_slc_mode_tlc_vpn_th, %object - .size gc_slc_mode_tlc_vpn_th, 2 -gc_slc_mode_tlc_vpn_th: .zero 2 .zero 2 .type _gc_after_discard_en, %object .size _gc_after_discard_en, 4 _gc_after_discard_en: .zero 4 + .type gc_slc_mode_tlc_vpn_th, %object + .size gc_slc_mode_tlc_vpn_th, 2 +gc_slc_mode_tlc_vpn_th: + .zero 2 + .type gc_slc_mode_vpn_th, %object + .size gc_slc_mode_vpn_th, 2 +gc_slc_mode_vpn_th: + .zero 2 + .type gc_tlc_mode_slc_vpn_th, %object + .size gc_tlc_mode_slc_vpn_th, 2 +gc_tlc_mode_slc_vpn_th: + .zero 2 + .type gc_tlc_mode_tlc_vpn_th, %object + .size gc_tlc_mode_tlc_vpn_th, 2 +gc_tlc_mode_tlc_vpn_th: + .zero 2 .type write_buf_head, %object .size write_buf_head, 1 write_buf_head: @@ -35666,6 +33150,11 @@ lpa_hash_index: .size ftl_vpn_update_count, 2 ftl_vpn_update_count: .zero 2 + .type _c_ftl_sec_per_page, %object + .size _c_ftl_sec_per_page, 1 +_c_ftl_sec_per_page: + .zero 1 + .zero 1 .type ftl_sblk_update_list_offset, %object .size ftl_sblk_update_list_offset, 2 ftl_sblk_update_list_offset: @@ -35691,7 +33180,7 @@ read_buf_head: .size read_buf_count, 1 read_buf_count: .zero 1 - .zero 4 + .zero 2 .type pm_ram_info, %object .size pm_ram_info, 512 pm_ram_info: @@ -35718,11 +33207,50 @@ g_die_addr: .size g_totle_phy_block, 2 g_totle_phy_block: .zero 2 + .zero 2 + .type pm_force_gc, %object + .size pm_force_gc, 4 +pm_force_gc: + .zero 4 + .type _c_swl_slc_gc_th, %object + .size _c_swl_slc_gc_th, 2 +_c_swl_slc_gc_th: + .zero 2 + .type _c_swl_xlc_gc_th, %object + .size _c_swl_xlc_gc_th, 2 +_c_swl_xlc_gc_th: + .zero 2 + .type _c_max_pm_sblk, %object + .size _c_max_pm_sblk, 2 +_c_max_pm_sblk: + .zero 2 + .zero 2 + .type power_on_init_jiffies, %object + .size power_on_init_jiffies, 8 +power_on_init_jiffies: + .zero 8 + .type gp_ftl_api, %object + .size gp_ftl_api, 8 +gp_ftl_api: + .zero 8 + .type RK29_NANDC_REG_BASE, %object + .size RK29_NANDC_REG_BASE, 8 +RK29_NANDC_REG_BASE: + .zero 8 + .type ftl_dma32_buffer_size, %object + .size ftl_dma32_buffer_size, 4 +ftl_dma32_buffer_size: + .zero 4 + .zero 4 + .type ftl_dma32_buffer, %object + .size ftl_dma32_buffer, 8 +ftl_dma32_buffer: + .zero 8 .type gc_state, %object .size gc_state, 1 gc_state: .zero 1 - .zero 1 + .zero 3 .type gc_search_count, %object .size gc_search_count, 4 gc_search_count: @@ -35743,35 +33271,6 @@ gc_pre_ppa_tbl: .type gc_des_ppa_tbl, %object .size gc_des_ppa_tbl, 8 gc_des_ppa_tbl: - .zero 8 - .type pm_force_gc, %object - .size pm_force_gc, 4 -pm_force_gc: - .zero 4 - .type _c_swl_slc_gc_th, %object - .size _c_swl_slc_gc_th, 2 -_c_swl_slc_gc_th: - .zero 2 - .type _c_swl_xlc_gc_th, %object - .size _c_swl_xlc_gc_th, 2 -_c_swl_xlc_gc_th: - .zero 2 - .type _c_max_pm_sblk, %object - .size _c_max_pm_sblk, 2 -_c_max_pm_sblk: - .zero 2 - .zero 6 - .type power_on_init_jiffies, %object - .size power_on_init_jiffies, 8 -power_on_init_jiffies: - .zero 8 - .type gp_ftl_api, %object - .size gp_ftl_api, 8 -gp_ftl_api: - .zero 8 - .type RK29_NANDC_REG_BASE, %object - .size RK29_NANDC_REG_BASE, 8 -RK29_NANDC_REG_BASE: .zero 8 .type g_flash_tmp_page_buffer, %object .size g_flash_tmp_page_buffer, 8 @@ -35798,14 +33297,14 @@ flash_ddr_tuning_sdr_read_count: .type flash_read_retry, %object .size flash_read_retry, 8 flash_read_retry: - .zero 8 - .type g_flash_page_buffer, %object - .size g_flash_page_buffer, 8 -g_flash_page_buffer: .zero 8 .type g_flash_spare_buffer, %object .size g_flash_spare_buffer, 8 g_flash_spare_buffer: + .zero 8 + .type g_flash_page_buffer, %object + .size g_flash_page_buffer, 8 +g_flash_page_buffer: .zero 8 .type write_commit_head, %object .size write_commit_head, 1 @@ -35820,11 +33319,11 @@ ftl_flush_jiffies: .size g_flash_multi_page_read_en, 1 g_flash_multi_page_read_en: .zero 1 - .zero 23 + .zero 7 .type ftl_info_spare, %object - .size ftl_info_spare, 256 + .size ftl_info_spare, 8 ftl_info_spare: - .zero 256 + .zero 8 .type g_ftl_info_blk, %object .size g_ftl_info_blk, 4 g_ftl_info_blk: @@ -35851,11 +33350,10 @@ ftl_ext_info_first_write: .size ftl_ext_info_data_buffer, 8 ftl_ext_info_data_buffer: .zero 8 - .zero 32 .type ftl_tmp_spare, %object - .size ftl_tmp_spare, 256 + .size ftl_tmp_spare, 8 ftl_tmp_spare: - .zero 256 + .zero 8 .type pm_gc_enable, %object .size pm_gc_enable, 4 pm_gc_enable: @@ -36018,3 +33516,2233 @@ nandc_ecc_sts: .size g_slc_mode_enable, 1 g_slc_mode_enable: .zero 1 + .section .rodata + .align 3 + .set .LANCHOR1,. + 0 + .type __func__.39517, %object + .size __func__.39517, 18 +__func__.39517: + .string "_list_remove_node" + .zero 6 + .type __func__.39542, %object + .size __func__.39542, 23 +__func__.39542: + .string "_list_update_data_list" + .zero 1 + .type toshiba_15ref_value, %object + .size toshiba_15ref_value, 95 +toshiba_15ref_value: + .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 toshiba_A19ref_value, %object + .size toshiba_A19ref_value, 45 +toshiba_A19ref_value: + .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 toshiba_ref_value, %object + .size toshiba_ref_value, 8 +toshiba_ref_value: + .byte 0 + .byte 4 + .byte 124 + .byte 120 + .byte 116 + .byte 8 + .byte 12 + .byte 112 + .type __func__.20840, %object + .size __func__.20840, 22 +__func__.20840: + .string "nand_flash_print_info" + .zero 2 + .type __func__.20313, %object + .size __func__.20313, 28 +__func__.20313: + .string "flash_wait_device_ready_raw" + .zero 4 + .type __func__.20377, %object + .size __func__.20377, 22 +__func__.20377: + .string "flash_start_page_read" + .zero 2 + .type toshiba_3D_tlc_value, %object + .size toshiba_3D_tlc_value, 399 +toshiba_3D_tlc_value: + .byte -119 + .byte -119 + .byte -119 + .byte -119 + .byte -118 + .byte -118 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte -2 + .byte -1 + .byte 0 + .byte -3 + .byte -2 + .byte 6 + .byte -9 + .byte -12 + .byte -9 + .byte -7 + .byte -13 + .byte -12 + .byte -7 + .byte -6 + .byte -15 + .byte -15 + .byte -2 + .byte -12 + .byte -16 + .byte -6 + .byte -2 + .byte -19 + .byte -19 + .byte -6 + .byte -4 + .byte -12 + .byte -14 + .byte -2 + .byte -11 + .byte -23 + .byte -34 + .byte -4 + .byte -20 + .byte -22 + .byte -2 + .byte -7 + .byte -31 + .byte -30 + .byte -12 + .byte -20 + .byte -18 + .byte 2 + .byte -15 + .byte -19 + .byte -36 + .byte -12 + .byte -28 + .byte -34 + .byte -6 + .byte -15 + .byte -11 + .byte 2 + .byte -12 + .byte -8 + .byte -2 + .byte 2 + .byte -3 + .byte -7 + .byte -10 + .byte -4 + .byte -8 + .byte -6 + .byte -6 + .byte -11 + .byte -27 + .byte -38 + .byte -16 + .byte -12 + .byte -2 + .byte 2 + .byte -7 + .byte -31 + .byte -22 + .byte -4 + .byte -16 + .byte -22 + .byte -7 + .byte -31 + .byte -23 + .byte -22 + .byte -28 + .byte -28 + .byte -26 + .byte 2 + .byte -7 + .byte -11 + .byte -14 + .byte -8 + .byte -12 + .byte -10 + .byte -10 + .byte -27 + .byte -25 + .byte -22 + .byte -20 + .byte -28 + .byte -22 + .byte -7 + .byte -23 + .byte -29 + .byte -34 + .byte -24 + .byte -32 + .byte -22 + .byte -10 + .byte -11 + .byte -29 + .byte -18 + .byte -12 + .byte -24 + .byte -22 + .byte 6 + .byte 1 + .byte -3 + .byte -6 + .byte 0 + .byte -4 + .byte -2 + .byte 10 + .byte -3 + .byte -7 + .byte -6 + .byte 4 + .byte -4 + .byte -2 + .byte -10 + .byte -23 + .byte -39 + .byte -22 + .byte -19 + .byte -24 + .byte -18 + .byte -14 + .byte -23 + .byte -29 + .byte -30 + .byte -15 + .byte -30 + .byte -30 + .byte -7 + .byte -27 + .byte -35 + .byte -26 + .byte -15 + .byte -24 + .byte -26 + .byte 6 + .byte -11 + .byte 5 + .byte -2 + .byte -16 + .byte -16 + .byte -2 + .byte -2 + .byte -15 + .byte -15 + .byte -20 + .byte -8 + .byte -16 + .byte -18 + .byte 6 + .byte 5 + .byte -15 + .byte -2 + .byte -24 + .byte -28 + .byte -22 + .byte 10 + .byte -15 + .byte -3 + .byte -30 + .byte -8 + .byte -24 + .byte -30 + .byte -10 + .byte -27 + .byte -19 + .byte -30 + .byte -12 + .byte -16 + .byte -10 + .byte 14 + .byte -19 + .byte -3 + .byte -30 + .byte 4 + .byte 4 + .byte 6 + .byte 2 + .byte 1 + .byte -3 + .byte -10 + .byte -8 + .byte -4 + .byte -6 + .byte -2 + .byte -15 + .byte -11 + .byte -26 + .byte -8 + .byte -20 + .byte -30 + .byte 6 + .byte -19 + .byte -3 + .byte -46 + .byte 0 + .byte 0 + .byte 2 + .byte 6 + .byte 9 + .byte 5 + .byte 2 + .byte 4 + .byte 8 + .byte 6 + .byte 8 + .byte 9 + .byte 9 + .byte 6 + .byte 8 + .byte 8 + .byte 6 + .byte 10 + .byte 13 + .byte 9 + .byte 6 + .byte 8 + .byte 12 + .byte 10 + .byte 2 + .byte 5 + .byte 1 + .byte -2 + .byte 0 + .byte 0 + .byte 6 + .byte 12 + .byte 1 + .byte 13 + .byte 2 + .byte 12 + .byte 12 + .byte 14 + .byte -12 + .byte -14 + .byte -20 + .byte -18 + .byte -16 + .byte -16 + .byte -14 + .byte -12 + .byte -10 + .byte -21 + .byte -14 + .byte -12 + .byte -12 + .byte -10 + .byte -12 + .byte -18 + .byte -22 + .byte -24 + .byte -18 + .byte -18 + .byte -18 + .byte -12 + .byte -14 + .byte -23 + .byte -20 + .byte -20 + .byte -20 + .byte -20 + .byte -12 + .byte -24 + .byte -24 + .byte -30 + .byte -24 + .byte -28 + .byte -28 + .byte -12 + .byte -26 + .byte -25 + .byte -34 + .byte -24 + .byte -24 + .byte -24 + .byte -12 + .byte -13 + .byte -26 + .byte -20 + .byte -14 + .byte -18 + .byte -18 + .byte -12 + .byte -15 + .byte -27 + .byte -22 + .byte -20 + .byte -24 + .byte -22 + .byte -12 + .byte -21 + .byte -28 + .byte -28 + .byte -24 + .byte -26 + .byte -24 + .byte 20 + .byte 16 + .byte 6 + .byte 10 + .byte 16 + .byte 12 + .byte 12 + .byte 16 + .byte 16 + .byte 8 + .byte 8 + .byte 12 + .byte 12 + .byte 12 + .byte 18 + .byte 18 + .byte 10 + .byte 8 + .byte 14 + .byte 14 + .byte 14 + .byte 16 + .byte 14 + .byte 6 + .byte 6 + .byte 12 + .byte 14 + .byte 8 + .byte 20 + .byte 18 + .byte 8 + .byte 6 + .byte 14 + .byte 14 + .byte 10 + .byte 20 + .byte 20 + .byte 6 + .byte 10 + .byte 10 + .byte 12 + .byte 12 + .byte 10 + .byte 13 + .byte 5 + .byte 2 + .byte 14 + .byte 8 + .byte 6 + .byte 6 + .byte 13 + .byte 9 + .byte 4 + .byte 14 + .byte 10 + .byte 10 + .byte 10 + .byte 13 + .byte 9 + .byte 6 + .byte 8 + .byte 12 + .byte 10 + .byte 2 + .byte 5 + .byte 1 + .byte -2 + .byte 0 + .byte 0 + .byte 6 + .byte 12 + .byte 1 + .byte 13 + .byte 2 + .byte 12 + .byte 12 + .byte 14 + .zero 1 + .type toshiba_3D_slc_value, %object + .size toshiba_3D_slc_value, 11 +toshiba_3D_slc_value: + .byte -117 + .byte 0 + .byte -8 + .byte 8 + .byte -16 + .byte -24 + .byte 24 + .byte -40 + .byte 40 + .byte -56 + .byte 56 + .zero 5 + .type ymtc_3D_tlc_value, %object + .size ymtc_3D_tlc_value, 357 +ymtc_3D_tlc_value: + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -10 + .byte -10 + .byte -6 + .byte -6 + .byte -2 + .byte 2 + .byte 2 + .byte -6 + .byte -6 + .byte -4 + .byte -4 + .byte -4 + .byte -6 + .byte -8 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -2 + .byte -2 + .byte -2 + .byte -4 + .byte -4 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -11 + .byte -2 + .byte 2 + .byte 4 + .byte 4 + .byte 6 + .byte 6 + .byte 6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -8 + .byte -14 + .byte -6 + .byte -15 + .byte -11 + .byte 2 + .byte -12 + .byte -8 + .byte -2 + .byte 2 + .byte -3 + .byte -7 + .byte -10 + .byte -4 + .byte -8 + .byte -6 + .byte -18 + .byte -18 + .byte -14 + .byte -14 + .byte -10 + .byte -5 + .byte -5 + .byte -14 + .byte -14 + .byte -12 + .byte -12 + .byte -12 + .byte -13 + .byte -15 + .byte -2 + .byte -8 + .byte -8 + .byte -8 + .byte -8 + .byte -7 + .byte -7 + .byte -10 + .byte -10 + .byte -10 + .byte -12 + .byte -12 + .byte -13 + .byte -13 + .byte -14 + .byte -14 + .byte -14 + .byte -14 + .byte -14 + .byte -13 + .byte -18 + .byte -10 + .byte -6 + .byte -4 + .byte -4 + .byte -2 + .byte -1 + .byte -1 + .byte -14 + .byte -14 + .byte -14 + .byte -14 + .byte -14 + .byte -15 + .byte -21 + .byte -12 + .byte -11 + .byte -7 + .byte -7 + .byte -3 + .byte 1 + .byte 1 + .byte -8 + .byte -7 + .byte -5 + .byte -5 + .byte -5 + .byte -7 + .byte -9 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -4 + .byte -3 + .byte -3 + .byte -5 + .byte -5 + .byte -7 + .byte -7 + .byte -8 + .byte -7 + .byte -7 + .byte -7 + .byte -7 + .byte -7 + .byte -12 + .byte -4 + .byte 1 + .byte 3 + .byte 3 + .byte 5 + .byte 5 + .byte 5 + .byte -8 + .byte -7 + .byte -7 + .byte -7 + .byte -7 + .byte -9 + .byte -15 + .byte 2 + .byte -7 + .byte -11 + .byte -14 + .byte -8 + .byte -12 + .byte -10 + .byte 6 + .byte 1 + .byte -3 + .byte -6 + .byte 0 + .byte -4 + .byte -2 + .byte 10 + .byte -3 + .byte -7 + .byte -6 + .byte 4 + .byte -4 + .byte -2 + .byte -10 + .byte -23 + .byte -39 + .byte -22 + .byte -19 + .byte -24 + .byte -18 + .byte -7 + .byte -27 + .byte -35 + .byte -26 + .byte -15 + .byte -24 + .byte -26 + .byte 6 + .byte -11 + .byte 5 + .byte -2 + .byte -16 + .byte -16 + .byte -2 + .byte -2 + .byte -15 + .byte -15 + .byte -20 + .byte -8 + .byte -16 + .byte -18 + .byte 2 + .byte 1 + .byte -3 + .byte -10 + .byte -8 + .byte -4 + .byte -6 + .byte -2 + .byte -15 + .byte -11 + .byte -26 + .byte -8 + .byte -20 + .byte -30 + .byte 6 + .byte -19 + .byte -3 + .byte -46 + .byte 0 + .byte 0 + .byte 2 + .byte 6 + .byte 9 + .byte 5 + .byte 2 + .byte 4 + .byte 8 + .byte 6 + .byte 8 + .byte 9 + .byte 9 + .byte 6 + .byte 8 + .byte 8 + .byte 6 + .byte 10 + .byte 13 + .byte 9 + .byte 6 + .byte 8 + .byte 12 + .byte 10 + .byte 2 + .byte 5 + .byte 1 + .byte -2 + .byte 0 + .byte 0 + .byte 6 + .byte 12 + .byte 1 + .byte 13 + .byte 2 + .byte 12 + .byte 12 + .byte 14 + .byte -12 + .byte -14 + .byte -20 + .byte -18 + .byte -16 + .byte -16 + .byte -14 + .byte -12 + .byte -10 + .byte -21 + .byte -14 + .byte -12 + .byte -12 + .byte -10 + .byte -12 + .byte -18 + .byte -22 + .byte -24 + .byte -18 + .byte -18 + .byte -18 + .byte -12 + .byte -14 + .byte -23 + .byte -20 + .byte -20 + .byte -20 + .byte -20 + .byte 16 + .byte 16 + .byte 8 + .byte 8 + .byte 12 + .byte 12 + .byte 12 + .byte 18 + .byte 18 + .byte 10 + .byte 8 + .byte 14 + .byte 14 + .byte 14 + .byte 16 + .byte 14 + .byte 6 + .byte 6 + .byte 12 + .byte 14 + .byte 8 + .byte 10 + .byte 13 + .byte 5 + .byte 2 + .byte 14 + .byte 8 + .byte 6 + .byte 6 + .byte 13 + .byte 9 + .byte 4 + .byte 14 + .byte 10 + .byte 10 + .byte 10 + .byte 13 + .byte 9 + .byte 6 + .byte 8 + .byte 12 + .byte 10 + .byte 2 + .byte 5 + .byte 1 + .byte -2 + .byte 0 + .byte 0 + .byte 6 + .byte 12 + .byte 1 + .byte 13 + .byte 2 + .byte 12 + .byte 12 + .byte 14 + .zero 3 + .type ymtc_3D_slc_value, %object + .size ymtc_3D_slc_value, 10 +ymtc_3D_slc_value: + .byte 0 + .byte -8 + .byte 8 + .byte -16 + .byte -20 + .byte 24 + .byte -26 + .byte 40 + .byte -12 + .byte 56 + .zero 6 + .type __func__.20402, %object + .size __func__.20402, 23 +__func__.20402: + .string "flash_start_plane_read" + .zero 1 + .type __func__.20288, %object + .size __func__.20288, 26 +__func__.20288: + .string "flash_erase_duplane_block" + .zero 6 + .type __func__.20299, %object + .size __func__.20299, 21 +__func__.20299: + .string "flash_erase_block_en" + .zero 3 + .type random_seed, %object + .size random_seed, 256 +random_seed: + .hword 22378 + .hword 1512 + .hword 25245 + .hword 17827 + .hword 25756 + .hword 19440 + .hword 9026 + .hword 10030 + .hword 29528 + .hword 20467 + .hword 29676 + .hword 24432 + .hword 31328 + .hword 6872 + .hword 13426 + .hword 13842 + .hword 8783 + .hword 1108 + .hword 782 + .hword 28837 + .hword 30729 + .hword 9505 + .hword 18676 + .hword 23085 + .hword 18730 + .hword 1085 + .hword 32609 + .hword 14697 + .hword 20858 + .hword 15170 + .hword 30365 + .hword 1607 + .hword 32298 + .hword 4995 + .hword 18905 + .hword 1976 + .hword 9592 + .hword 20204 + .hword 17443 + .hword 13615 + .hword 23330 + .hword 29369 + .hword 13947 + .hword 9398 + .hword 32398 + .hword 8984 + .hword 27600 + .hword 21785 + .hword 6019 + .hword 6311 + .hword 31598 + .hword 30210 + .hword 19327 + .hword 13896 + .hword 11347 + .hword 27545 + .hword 3107 + .hword 26575 + .hword 32270 + .hword 19852 + .hword 20601 + .hword 8349 + .hword 9290 + .hword 29819 + .hword 13579 + .hword 3661 + .hword 28676 + .hword 27331 + .hword 32574 + .hword 8693 + .hword 31253 + .hword 9081 + .hword 5399 + .hword 6842 + .hword 20087 + .hword 5537 + .hword 1274 + .hword 11617 + .hword 9530 + .hword 4866 + .hword 8035 + .hword 23219 + .hword 1178 + .hword 23272 + .hword 7383 + .hword 18944 + .hword 12488 + .hword 12871 + .hword 29340 + .hword 20532 + .hword 11022 + .hword 22514 + .hword 228 + .hword 22363 + .hword 24978 + .hword 14584 + .hword 12138 + .hword 3092 + .hword 17916 + .hword 16863 + .hword 14554 + .hword 31457 + .hword 29474 + .hword 25311 + .hword 24121 + .hword 3684 + .hword 28037 + .hword 22865 + .hword 22839 + .hword 25217 + .hword 13217 + .hword 27186 + .hword 14938 + .hword 11180 + .hword 29754 + .hword 24180 + .hword 15150 + .hword 32455 + .hword 20434 + .hword 23848 + .hword 29983 + .hword 16120 + .hword 14769 + .hword 20041 + .hword 29803 + .hword 28406 + .hword 17598 + .hword 28087 + .type __func__.21105, %object + .size __func__.21105, 13 +__func__.21105: + .string "buf_add_tail" + .zero 3 + .type __func__.21118, %object + .size __func__.21118, 10 +__func__.21118: + .string "buf_alloc" + .zero 6 + .type __func__.21132, %object + .size __func__.21132, 16 +__func__.21132: + .string "buf_remove_free" + .type zftl_debug_proc_fops, %object + .size zftl_debug_proc_fops, 288 +zftl_debug_proc_fops: + .xword 0 + .xword seq_lseek + .xword seq_read + .xword zftl_debug_proc_write + .zero 72 + .xword zftl_debug_proc_open + .zero 8 + .xword single_release + .zero 160 + .type __func__.39050, %object + .size __func__.39050, 12 +__func__.39050: + .string "gc_add_sblk" + .zero 4 + .type __func__.39142, %object + .size __func__.39142, 19 +__func__.39142: + .string "gc_write_completed" + .zero 5 + .type __func__.39748, %object + .size __func__.39748, 18 +__func__.39748: + .string "ftl_alloc_sys_blk" + .zero 6 + .type __func__.39758, %object + .size __func__.39758, 17 +__func__.39758: + .string "ftl_free_sys_blk" + .zero 7 + .type __func__.39879, %object + .size __func__.39879, 23 +__func__.39879: + .string "ftl_get_ppa_from_index" + .zero 1 + .type __func__.39919, %object + .size __func__.39919, 22 +__func__.39919: + .string "ftl_get_new_free_page" + .zero 2 + .type __func__.39930, %object + .size __func__.39930, 22 +__func__.39930: + .string "ftl_ext_alloc_new_blk" + .zero 2 + .type __func__.39199, %object + .size __func__.39199, 16 +__func__.39199: + .string "gc_free_src_blk" + .type __func__.38793, %object + .size __func__.38793, 14 +__func__.38793: + .string "ftl_write_buf" + .zero 2 + .type __func__.38838, %object + .size __func__.38838, 18 +__func__.38838: + .string "zftl_add_read_buf" + .align 3 + .set .LANCHOR4,. + 0 + .type __func__.40352, %object + .size __func__.40352, 21 +__func__.40352: + .string "pm_select_ram_region" + .zero 3 + .type __func__.20830, %object + .size __func__.20830, 20 +__func__.20830: + .string "flash_die_info_init" + .zero 4 + .type __func__.38725, %object + .size __func__.38725, 17 +__func__.38725: + .string "lpa_rebuild_hash" + .zero 7 + .type __func__.39617, %object + .size __func__.39617, 20 +__func__.39617: + .string "zftl_sblk_list_init" + .zero 4 + .type __func__.40284, %object + .size __func__.40284, 13 +__func__.40284: + .string "pm_free_sblk" + .zero 3 + .type __func__.21168, %object + .size __func__.21168, 21 +__func__.21168: + .string "flash_info_data_init" + .zero 3 + .type __func__.20926, %object + .size __func__.20926, 11 +__func__.20926: + .string "nandc_init" + .zero 5 + .type samsung_14nm_slc_rr, %object + .size samsung_14nm_slc_rr, 26 +samsung_14nm_slc_rr: + .byte 0 + .byte 10 + .byte -10 + .byte 20 + .byte -20 + .byte 30 + .byte -30 + .byte 40 + .byte -40 + .byte 50 + .byte -50 + .byte 60 + .byte -60 + .byte -70 + .byte -80 + .byte -90 + .byte -100 + .byte -110 + .byte -120 + .byte -9 + .byte 70 + .byte 80 + .byte 90 + .byte -125 + .byte -115 + .byte 100 + .zero 6 + .type samsung_14nm_mlc_rr, %object + .size samsung_14nm_mlc_rr, 104 +samsung_14nm_mlc_rr: + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -4 + .byte 3 + .byte -4 + .byte -6 + .byte 6 + .byte 0 + .byte 6 + .byte -10 + .byte -10 + .byte 4 + .byte -10 + .byte 16 + .byte 12 + .byte -4 + .byte 12 + .byte 8 + .byte -16 + .byte 10 + .byte -16 + .byte 24 + .byte 18 + .byte -14 + .byte 18 + .byte -4 + .byte -22 + .byte -16 + .byte -22 + .byte -8 + .byte 24 + .byte -9 + .byte 24 + .byte 8 + .byte -28 + .byte -4 + .byte -28 + .byte 16 + .byte 30 + .byte 10 + .byte 30 + .byte 10 + .byte -34 + .byte 6 + .byte -34 + .byte 0 + .byte 36 + .byte -8 + .byte 36 + .byte -8 + .byte -40 + .byte -2 + .byte -40 + .byte -20 + .byte -46 + .byte -4 + .byte -46 + .byte -30 + .byte 3 + .byte 0 + .byte 3 + .byte -3 + .byte -2 + .byte -4 + .byte -2 + .byte -6 + .byte -4 + .byte -4 + .byte -4 + .byte -10 + .byte -6 + .byte -8 + .byte -6 + .byte -14 + .byte -9 + .byte -8 + .byte -9 + .byte -18 + .byte -52 + .byte 22 + .byte -52 + .byte 10 + .byte 42 + .byte 4 + .byte 42 + .byte 4 + .byte 48 + .byte -9 + .byte 48 + .byte 4 + .byte -58 + .byte 12 + .byte -58 + .byte 0 + .byte -64 + .byte -24 + .byte -64 + .byte -6 + .byte 9 + .byte 18 + .byte 9 + .byte 8 + .type __func__.20211, %object + .size __func__.20211, 19 +__func__.20211: + .string "flash_read_page_en" + .zero 5 + .type __func__.20337, %object + .size __func__.20337, 26 +__func__.20337: + .string "flash_start_tlc_page_prog" + .zero 6 + .type __func__.20348, %object + .size __func__.20348, 29 +__func__.20348: + .string "flash_start_3d_mlc_page_prog" + .zero 3 + .type __func__.20366, %object + .size __func__.20366, 22 +__func__.20366: + .string "flash_start_page_prog" + .zero 2 + .type __func__.20390, %object + .size __func__.20390, 31 +__func__.20390: + .string "flash_complete_plane_page_read" + .zero 1 + .type __func__.20415, %object + .size __func__.20415, 25 +__func__.20415: + .string "flash_complete_page_read" + .zero 7 + .type __func__.40117, %object + .size __func__.40117, 31 +__func__.40117: + .string "queue_wait_first_req_completed" + .zero 1 + .type __func__.40171, %object + .size __func__.40171, 15 +__func__.40171: + .string "sblk_prog_page" + .zero 1 + .type __func__.40198, %object + .size __func__.40198, 15 +__func__.40198: + .string "sblk_read_page" + .zero 1 + .type __func__.39097, %object + .size __func__.39097, 21 +__func__.39097: + .string "gc_check_data_one_wl" + .zero 3 + .type __func__.20272, %object + .size __func__.20272, 19 +__func__.20272: + .string "flash_prog_page_en" + .zero 5 + .type __func__.39994, %object + .size __func__.39994, 14 +__func__.39994: + .string "ftl_prog_page" + .zero 2 + .type __func__.39651, %object + .size __func__.39651, 15 +__func__.39651: + .string "ftl_info_flush" + .zero 1 + .type __func__.39956, %object + .size __func__.39956, 19 +__func__.39956: + .string "ftl_ext_info_flush" + .zero 5 + .type __func__.39968, %object + .size __func__.39968, 18 +__func__.39968: + .string "ftl_ext_info_init" + .zero 6 + .type __func__.39706, %object + .size __func__.39706, 15 +__func__.39706: + .string "ftl_alloc_sblk" + .zero 1 + .type __func__.40324, %object + .size __func__.40324, 17 +__func__.40324: + .string "pm_alloc_new_blk" + .zero 7 + .type __func__.40334, %object + .size __func__.40334, 14 +__func__.40334: + .string "pm_write_page" + .zero 2 + .type __func__.21190, %object + .size __func__.21190, 17 +__func__.21190: + .string "flash_info_flush" + .zero 7 + .type __func__.21153, %object + .size __func__.21153, 20 +__func__.21153: + .string "flash_info_blk_init" + .zero 4 + .type __func__.20885, %object + .size __func__.20885, 16 +__func__.20885: + .string "nand_flash_init" + .type __func__.39821, %object + .size __func__.39821, 16 +__func__.39821: + .string "ftl_sysblk_dump" + .type __func__.39846, %object + .size __func__.39846, 23 +__func__.39846: + .string "ftl_open_sblk_recovery" + .zero 1 + .type __func__.40268, %object + .size __func__.40268, 16 +__func__.40268: + .string "load_l2p_region" + .type __func__.40308, %object + .size __func__.40308, 6 +__func__.40308: + .string "pm_gc" + .zero 2 + .type __func__.39040, %object + .size __func__.39040, 12 +__func__.39040: + .string "gc_recovery" + .zero 4 + .type __func__.39129, %object + .size __func__.39129, 22 +__func__.39129: + .string "gc_update_l2p_map_new" + .zero 2 + .type __func__.39243, %object + .size __func__.39243, 16 +__func__.39243: + .string "gc_scan_src_blk" + .type __func__.39304, %object + .size __func__.39304, 20 +__func__.39304: + .string "gc_scan_static_data" + .zero 4 + .type __func__.39367, %object + .size __func__.39367, 18 +__func__.39367: + .string "gc_block_vpn_scan" + .zero 6 + .type __func__.39797, %object + .size __func__.39797, 14 +__func__.39797: + .string "ftl_sblk_dump" + .zero 2 + .type __func__.38871, %object + .size __func__.38871, 10 +__func__.38871: + .string "zftl_read" + .zero 6 + .type __func__.39900, %object + .size __func__.39900, 19 +__func__.39900: + .string "ftl_update_l2p_map" + .zero 5 + .type __func__.38775, %object + .size __func__.38775, 17 +__func__.38775: + .string "ftl_write_commit" + .zero 7 + .type __func__.39172, %object + .size __func__.39172, 16 +__func__.39172: + .string "gc_do_copy_back" + .type __func__.39422, %object + .size __func__.39422, 11 +__func__.39422: + .string "zftl_do_gc" + .zero 5 + .type __func__.38903, %object + .size __func__.38903, 13 +__func__.38903: + .string "_ftl_discard" + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "\n!!!!! error @ func:%s - line:%d\n" +.LC1: + .string "FTL version: 6.0.24 20210616" +.LC2: + .string "%s\n" +.LC3: + .string "zftl_debug:0x%x\n" +.LC4: + .string "...%s enter...\n" +.LC5: + .string "No.0 FLASH ID: %x %x %x %x %x %x\n" +.LC6: + .string "DiePerChip: %x\n" +.LC7: + .string "SectPerPage: %x\n" +.LC8: + .string "PagePerBlk: %x\n" +.LC9: + .string "Cell: %x\n" +.LC10: + .string "PlanePerDie: %x\n" +.LC11: + .string "BlkPerPlane: %x\n" +.LC12: + .string "die gap: %x\n" +.LC13: + .string "lsbMode: %x\n" +.LC14: + .string "ReadRetryMode: %x\n" +.LC15: + .string "ecc: %x\n" +.LC16: + .string "idb ecc: %x\n" +.LC17: + .string "OptMode: %x\n" +.LC18: + .string "g_nand_max_die: %x\n" +.LC19: + .string "Cache read enable: %x\n" +.LC20: + .string "Cache random read enable: %x\n" +.LC21: + .string "Cache prog enable: %x\n" +.LC22: + .string "multi read enable: %x\n" +.LC23: + .string "multi prog enable: %x\n" +.LC24: + .string "interleave enable: %x\n" +.LC25: + .string "read retry enable: %x\n" +.LC26: + .string "randomizer enable: %x\n" +.LC27: + .string "SDR enable: %x\n" +.LC28: + .string "ONFI enable: %x\n" +.LC29: + .string "TOGGLE enable: %x\n" +.LC30: + .string "g_flash_slc_mode: %x %x\n" +.LC31: + .string "MultiPlaneProgCmd: %x %x\n" +.LC32: + .string "MultiPlaneReadCmd: %x %x\n" +.LC33: + .string "g_flash_toggle_mode_en: %x\n" +.LC34: + .string "nand sdr mode %x\n" +.LC35: + .string "nand ddr mode %x\n" +.LC36: + .string "No.%d FLASH ID:%x %x %x %x %x %x\n" +.LC37: + .string "otp:%x %x %x %x\n" +.LC38: + .string "bad block test:%x %x\n" +.LC39: + .string "flash_erase_duplane_block %x %x %x\n" +.LC40: + .string "flash_erase_duplane_block pageadd = %x status = %x\n" +.LC41: + .string "flash_erase_block %x %x %x\n" +.LC42: + .string "flash_erase_block %d block = %x status = %x\n" +.LC43: + .string "erase done: %x\n" +.LC44: + .string "sblk_queue_head = %d\n" +.LC45: + .string "sblk_read_completed_queue_head = %d\n" +.LC46: + .string "sblk_gc_write_completed_queue_head = %d\n" +.LC47: + .string "sblk_write_completed_queue_head = %d\n" +.LC48: + .string "p_free_buf_head = %d\n" +.LC49: + .string "free_buf_count = %d\n" +.LC50: + .string "buf = %d, next=%d, flag=%d gc_write_flag=%d, lun_state=%d, op_status = %d lpa=%x, ppa=%x\n" +.LC51: + .string "flash_mask_bad_block %d %d\n" +.LC52: + .string "zftl_debug" +.LC53: + .string "FLASH ID: %x %x %x %x %x %x\n" +.LC54: + .string "density: %d MB\n" +.LC55: + .string "device density: %d MB\n" +.LC56: + .string "FTL INFO:\n" +.LC57: + .string "max_lpn = 0x%x\n" +.LC58: + .string "density = 0x%x\n" +.LC59: + .string "slc vpn = 0x%x\n" +.LC60: + .string "xlc vpn = 0x%x\n" +.LC61: + .string "free slc blk = 0x%x\n" +.LC62: + .string "free xlc blk = 0x%x\n" +.LC63: + .string "free mix blk = 0x%x\n" +.LC64: + .string "slc data blk = 0x%x\n" +.LC65: + .string "slc cache blk = 0x%x\n" +.LC66: + .string "xlc data blk = 0x%x\n" +.LC67: + .string "free buf = %d, %d, %d\n" +.LC68: + .string "bad blk = %d %d\n" +.LC69: + .string "TBW = %d MB\n" +.LC70: + .string "TBR = %d MB\n" +.LC71: + .string "POC = %d\n" +.LC72: + .string "PLC = %d\n" +.LC73: + .string "sys run time = %d S\n" +.LC74: + .string "slc mode = %x %x %x\n" +.LC75: + .string "prog err = %d\n" +.LC76: + .string "read err = %d\n" +.LC77: + .string "GC XLC page = %d\n" +.LC78: + .string "GC SLC page = %d\n" +.LC79: + .string "discard page = 0x%x\n" +.LC80: + .string "version = %d\n" +.LC81: + .string "acblk = 0x%x %d %d\n" +.LC82: + .string "tmblk = 0x%x %d %d\n" +.LC83: + .string "gcblk = 0x%x %d %d\n" +.LC84: + .string "slc ec = %d, %d, %d, %d, %d\n" +.LC85: + .string "xlc ec = %d, %d, %d, %d, %d\n" +.LC86: + .string "gc free blk th = %d\n" +.LC87: + .string "gc vpn th = %d %d %d %d %d\n" +.LC88: + .string "swl blk = %x %x %x %x\n" +.LC89: + .string "rf info = %x %x %x %x %x\n" +.LC90: + .string "gc_add_sblk = %d, %d, %d, %d, %d, %d, %d\n" +.LC91: + .string "gc_add_sblk = %d, %d, %d\n" +.LC92: + .string "gc_add_sblk = %d, %d, %d,last update:%d, %d\n" +.LC93: + .string "gc_add_sblk = %d, %d, %d, %d, %d, %d\n" +.LC94: + .string "gc_mark_bad_ppa %d %x %x\n" +.LC95: + .string "status: %x, ppa: %x\n" +.LC96: + .string "%d gc_free_temp_buf buf id= %x\n" +.LC97: + .string "gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n" +.LC98: + .string "zftl_get_gc_node cache = %x index = %d vpn = %x\n" +.LC99: + .string "gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n" +.LC100: + .string "swl_tlc_free_mini_ec_blk alloc sblk %x\n" +.LC101: + .string "zftl_get_free_sblk %x %d, %p %d %d\n" +.LC102: + .string "zftl_gc_get_free_sblk %x %x %x, %d %d %d\n" +.LC103: + .string "swl_slc_free_mini_ec_blk alloc sblk %x\n" +.LC104: + .string "list count:%p %d\n" +.LC105: + .string "%d: node:%x %x %x %x, %d %d %d %d %d\n" +.LC106: + .string "ftl_vpn_decrement %x = %d, %d\n" +.LC107: + .string "mask bad block:cs %x %x block: %x %x\n" +.LC108: + .string "gc_free_bad_sblk 0x%x\n" +.LC109: + .string "swl_slc_free_mini_ec_blk sblk %x\n" +.LC110: + .string "gc_free_src_blk = %x, vpn = %d\n" +.LC111: + .string "gc_free_src_blk %x, %d\n" +.LC112: + .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" +.LC113: + .string "totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n" +.LC114: + .string "gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n" +.LC115: + .string "slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n" +.LC116: + .string "gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n" +.LC117: + .string "swl : %x %x %x %x %x %x\n" +.LC118: + .string "ftl prog error =%x, lpa = %x, ppa= %x\n" +.LC119: + .string "ftl re prog: lpa = %x, ppa= %x\n" +.LC120: + .string "dump_sblk_queue: %d\n" +.LC121: + .string "buf id= %d state = %d ppa = %x\n" +.LC122: + .string "%s %d %d\n" +.LC123: + .string "gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" +.LC124: + .string "gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" +.LC125: + .string "gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" +.LC126: + .string "gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" +.LC127: + .string "gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n" +.LC128: + .string "gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n" +.LC129: + .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 "swl add tlc gc = %x, %d, %d, %d, %d, %d\n" +.LC131: + .string "swl add slc gc = %x, %d, %d, %d, %d, %d\n" +.LC132: + .string "free blk vpn error: %x %x\n" +.LC133: + .string "GC PM block %x %x %x %d\n" +.LC134: + .string "ftl_free_no_use_map_blk %x %x %x %d\n" +.LC135: + .string "...%d @ %s\n" +.LC136: + .string "...%s enter... %p\n" +.LC137: + .string "0:%x %x %x %x %x\n" +.LC138: + .string "g_nandc_ver...%d\n" +.LC139: + .string "rk_ftl_de_init %x\n" +.LC140: + .string "\0013" +.LC141: + .string "otp error! %d" +.LC142: + .string "rr" +.LC143: + .string "flash_abort_clear = %d\n" +.LC144: + .string "%d mtrans_cnt = %d page_num = %d\n" +.LC145: + .string "%d flReg.d32=%x %x\n" +.LC146: + .string "nandc:" +.LC147: + .string "nandc_xfer_done read error %x\n" +.LC148: + .string "dqs data abort %x\n" +.LC149: + .string "dqs data timeout %x\n" +.LC150: + .string "xfer error %x\n" +.LC151: + .string "MT %d row=%x,last status %d,status = %d\n" +.LC152: + .string "MT RR %d row=%x,count %d,status=%d\n" +.LC153: + .string "toshiba SRR %d row=%x, status=%d\n" +.LC154: + .string "toshiba TRR %d row=%x, status=%d\n" +.LC155: + .string "toshiba RR %d row=%x,count %d,status=%d\n" +.LC156: + .string "YMTC RR %d row=%x,count %d,status=%d\n" +.LC157: + .string "samsung SRR %d row=%x, status=%d\n" +.LC158: + .string "samsung TRR %d row=%x, status=%d\n" +.LC159: + .string "samsung RR %d row=%x,count %d,status=%d\n" +.LC160: + .string "hynix RR %d row=%x, count %d, status=%d\n" +.LC161: + .string "%d flash_ddr_tuning_read %x ecc=%d\n" +.LC162: + .string "sync para %d\n" +.LC163: + .string "DDR mode Read error %x %x\n" +.LC164: + .string "SDR mode Read %x %x ecc:%x\n" +.LC165: + .string "flash_read_page_en %x %x %x %x\n" +.LC166: + .string "flash_read_page_en %x %x error_ecc %d %d\n" +.LC167: + .string "flash_get_last_written_page: %x %x %x\n" +.LC168: + .string "flash_prog_page page_addr = %x status = %x\n" +.LC169: + .string "flash_prog_page %x %x %x\n" +.LC170: + .string "ymtc_flash_tlc_page_prog page_addr = %x status = %x\n" +.LC171: + .string "sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n" +.LC172: + .string "flash_complete_page_read %x %x error_ecc %d %d\n" +.LC173: + .string "read: %x %x %x %x\n" +.LC174: + .string "0set buf %d,status = %x, ppa = %x lun state = %d\n" +.LC175: + .string "prog end %x %x error_ecc %d %d\n" +.LC176: + .string "1set buf %d,status = %x, ppa = %x lun state = %d\n" +.LC177: + .string "dp prog end %x %x error_ecc %d %d\n" +.LC178: + .string "sblk_prog_page ppa = %x, count = %d\n" +.LC179: + .string "err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" +.LC180: + .string "flash_prog_page_en:%x %x %x\n" +.LC181: + .string "w d:" +.LC182: + .string "w s:" +.LC183: + .string "spare" +.LC184: + .string "data" +.LC185: + .string "write error: %x\n" +.LC186: + .string "g_ftl_info_blk blk = %x, page = %x version = %d\n" +.LC187: + .string "%d %x @%d %x\n" +.LC188: + .string "ftl_info_blk_init %d %d %x\n" +.LC189: + .string "ftl info hash %x error\n" +.LC190: + .string "ink flag: %x\n" +.LC191: + .string "%s %d %d %x %x\n" +.LC192: + .string "ext info hash %x error\n" +.LC193: + .string "%s %x %x %x\n" +.LC194: + .string "ftl_sblk_dump_write = %x %d %d %d %d\n" +.LC195: + .string "blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" +.LC196: + .string "ftl_sblk_dump_write2 = %x %d %d %d\n" +.LC197: + .string "ftl_sblk_dump_write = %x %x\n" +.LC198: + .string "ftl_sblk_dump_write done = %x\n" +.LC199: + .string "%x: ink_scaned_blk_num %x\n" +.LC200: + .string "ftl_ink_check_sblk = %x %d %d\n" +.LC201: + .string "ftl_ink_check_sblk = %x %d %d end\n" +.LC202: + .string "alloc sblk %x %d\n" +.LC203: + .string "blk %x is bad block\n" +.LC204: + .string "pm_alloc_new_blk: %x %x %x %x\n" +.LC205: + .string "pm_write_page write error: %x\n" +.LC206: + .string "finfo:" +.LC207: + .string "flash_info_flush id = %x, page = %x\n" +.LC208: + .string "sys_info_flush error:%x\n" +.LC209: + .string "...%d @ %s %d %p\n" +.LC210: + .string "no sys info %x\n" +.LC211: + .string "l2p:" +.LC212: + .string "saved_active_page = %x\n" +.LC213: + .string "saved_active_plane = %x\n" +.LC214: + .string "sblk = %x\n" +.LC215: + .string "phy_blk = %x %x\n" +.LC216: + .string "num_planes = %x\n" +.LC217: + .string "recovery blk=%x, page=%x, ppa = %x, status = %x, hash:%x\n" +.LC218: + .string "data:" +.LC219: + .string "sblk = %x, vpn0 = %d, vpn1 = %d\n" +.LC220: + .string "dump_write_lpa = %x %x %x %x\n" +.LC221: + .string "dump write new ppa = %x, last ppa = %x lpa = %x\n" +.LC222: + .string "dump write = %x %x %x\n" +.LC223: + .string "dump write hash update = %x %x %x\n" +.LC224: + .string "free_buf_count: %d\n" +.LC225: + .string "g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n" +.LC226: + .string "ftl_ext_info_blk blk:0x%x, page:0x%x\n" +.LC227: + .string "ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" +.LC228: + .string "tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" +.LC229: + .string "gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n" +.LC230: + .string "lpa:" +.LC231: + .string "vpn:" +.LC232: + .string "sblk:" +.LC233: + .string "lpa_hash:" +.LC234: + .string "lpa_hash_index:" +.LC235: + .string "%s w error lpn = %x, max ppa = %d\n" +.LC236: + .string "region_id = %d, pm_max_region = %d\n" +.LC237: + .string "load_l2p_region no ppa = %x , %x, all setting 0xff....\n" +.LC238: + .string "load_l2p_region = %x,%x,%x, %x\n" +.LC239: + .string "pm_ppa:" +.LC240: + .string "spare:" +.LC241: + .string "pm_init posr %x %x %x\n" +.LC242: + .string "pm_init recovery %x %x %x\n" +.LC243: + .string "pm_init hash %x error\n" +.LC244: + .string "pm_log2phys lpn = %d, max lpn = %d\n" +.LC245: + .string "ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n" +.LC246: + .string "ppa = %x, status = %x, %x %x spare: %x %x %x %x\n" +.LC247: + .string "gc_recovery: %x vpn = %x\n" +.LC248: + .string "gc_update_l2p_map_new sblk %x\n" +.LC249: + .string "gc_update_l2p_map_new: %x %x %x\n" +.LC250: + .string "lpa: %x %x %x\n" +.LC251: + .string "gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n" +.LC252: + .string "gc_scan_src_blk = %x, vpn = %d\n" +.LC253: + .string "js hash error:%x %x %x\n" +.LC254: + .string "gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n" +.LC255: + .string "gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n" +.LC256: + .string "ftl_sblk_dump = %x %d %d %d %d\n" +.LC257: + .string "ftl_sblk_dump = %x %x %x %x\n" +.LC258: + .string "page_addr = %x, lpa=%x vpn = %d\n" +.LC259: + .string "index= %x, lpa=%x\n" +.LC260: + .string "block = %x, vpn=%x check vpn = %x\n" +.LC261: + .string "ftl_read %x %x %x\n" +.LC262: + .string "ftl_read refresh =%x, lpa = %x, ppa= %x\n" +.LC263: + .string "id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n" +.LC264: + .string "zftl debug cmd: %s\n" +.LC265: + .string "cmd:" +.LC266: + .string "dumpl2p" +.LC267: + .string "pm l2p:" +.LC268: + .string "pm blk:" +.LC269: + .string "dumppm:" +.LC270: + .string "p_cmd: %s\n" +.LC271: + .string "pm ram = %x, %x\n" +.LC272: + .string "ram:" +.LC273: + .string "pm:" +.LC274: + .string "dumpsys" +.LC275: + .string "dumplist:" +.LC276: + .string "vpncheck" +.LC277: + .string "dumpppa:" +.LC278: + .string "dumpblk:" +.LC279: + .string "setzdebug:" +.LC280: + .string "lpa2ppa:" +.LC281: + .string "lpa: %x--> ppa: %x\n" +.LC282: + .string "help:\n" +.LC283: + .string "1. echo dumpl2p > /proc/zftl_debug\n" +.LC284: + .string "2. echo dumppm:x > /proc/zftl_debug\n" +.LC285: + .string "3. echo dumpsys > /proc/zftl_debug\n" +.LC286: + .string "4. echo dumpppa:x > /proc/zftl_debug\n" +.LC287: + .string "5. echo vpncheck > /proc/zftl_debug\n" +.LC288: + .string "6. echo setzdebug:x > /proc/zftl_debug\n" +.LC289: + .string "7. echo dumplist:x > /proc/zftl_debug\n" +.LC290: + .string "8. echo lpa2ppa:x> /proc/zftl_debug\n" +.LC291: + .string "ftl_update_l2p_map: %x %x %x\n" +.LC292: + .string "ftl_update_l2p_map" +.LC293: + .string "lpa_tbl:" +.LC294: + .string "sblk %x vpn: %d %d\n" +.LC295: + .string "error gc_add_sblk: %x\n" +.LC296: + .string "%d read error: ppa:%x, lpa:%x, status:%x\n" +.LC297: + .string "gc page in buf: lpa %x ppa = %x pageindex= %x\n" +.LC298: + .string "gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n" +.LC299: + .string "gc %d: %d %d %d %d %d %d %d\n" +.LC300: + .string "GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n" +.LC301: + .string "gc free %x, %d\n" +.LC302: + .string "_c_user_data_density := %d\n" +.LC303: + .string "_c_totle_phy_density := %d\n" +.LC304: + .string "_c_totle_log_page := %d\n" +.LC305: + .string "_c_totle_data_density := %d\n" +.LC306: + .string "_c_ftl_pm_page_num := %d\n" +.LC307: + .string "_c_ftl_byte_pre_page := %d\n" +.LC308: + .string "_c_max_pm_sblk := %d\n" +.LC309: + .string "_min_slc_super_block := %d\n" +.LC310: + .string "_max_xlc_super_block := %d\n" +.LC311: + .string "gp_ftl_ext_info %p %p %p\n" +.LC312: + .string "flash info size: %d %d %d\n" +.LC313: + .string "ftl_init %x\n" +.LC314: + .string "ftlwrite %x %x %x %x\n" +.LC315: + .string "ftl_discard:(%x, %x, %x, %x)\n" +.LC316: + .string "id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n" +.LC317: + .string "write_idblock fix data %x %x\n" +.LC318: + .string "idblk:" +.LC319: + .string "write_idblock totle_sec %x %x\n" +.LC320: + .string "prog page: %x %x %x, %p %x %x %x\n" +.LC321: + .string "read page: %x %x %x %x\n" +.LC322: + .string "wl_lba %p %x %x %x\n" +.LC323: + .string "RKNAND_GET_DRM_KEY\n" +.LC324: + .string "rk_copy_from_user error\n" +.LC325: + .string "RKNAND_STORE_DRM_KEY\n" +.LC326: + .string "RKNAND_DIASBLE_SECURE_BOOT\n" +.LC327: + .string "RKNAND_ENASBLE_SECURE_BOOT\n" +.LC328: + .string "RKNAND_GET_SN_SECTOR\n" +.LC329: + .string "RKNAND_LOADER_UNLOCK\n" +.LC330: + .string "RKNAND_LOADER_STATUS\n" +.LC331: + .string "RKNAND_LOADER_LOCK\n" +.LC332: + .string "LockKey not match %d\n" +.LC333: + .string "RKNAND_GET_VENDOR_SECTOR\n" +.LC334: + .string "RKNAND_STORE_VENDOR_SECTOR\n" +.LC335: + .string "return ret = %lx\n" +.LC336: + .string "secureBootEn check error\n" +.LC337: + .string "\0013vendor storage %x,%x,%x\n"